Tietokonearitmetiikka

Samankaltaiset tiedostot
Tietokonearitmetiikka

Tietokonearitmetiikka

Tietokonearitmetiikka

811120P Diskreetit rakenteet

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

ANSI/IEEE Std

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Liukulukulaskenta. Pekka Hotokka

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

Numeeriset menetelmät

5. Laskutoimitukset eri lukujärjestelmissä

SISÄLLYS - DIGITAALITEKNIIKKA

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

Palautteita. Tutoriaalit olivat vaikeat! Totta, tentti on onneksi helpompi

Tiedon tyypit Kommunikointi ihmisen kanssa. Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Suorittimen ymmärtämä tieto (9)

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Tiedon esitys (7) Suorittimen ymmärtämä tieto (9) Tietokoneen toiminta, K

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

Luento 6 Tiedon esitysmuodot

Jakso 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Luento 6 Tiedon esitysmuodot. Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?)

Kombinatorisen logiikan laitteet

Merkitse kertolasku potenssin avulla ja laske sen arvo.

Laitteistonläheinen ohjelmointi

Kappale 20: Kantaluvut

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Tietotyypit ja operaattorit

Laitteistonläheinen ohjelmointi

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Käskykannat. Tietokoneen rakenne. Ch [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC. Luento 7-1

Numeeriset menetelmät TIEA381. Luento 2. Kirsi Valjus. Jyväskylän yliopisto. Luento 2 () Numeeriset menetelmät / 39

Negatiiviset luvut ja laskutoimitukset

Negatiiviset luvut ja laskutoimitukset

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät

Tietokoneen rakenne Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan

Luento 7: Käskykannat Tietokoneen rakenne / 2006 / Teemu Kerola 9/25/2006

Ohjelmoijan binaarialgebra ja heksaluvut

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut.

Diskreetit rakenteet. Juha Kortelainen

Mikrokontrollerit. Mikrokontrolleri

Digitaalitekniikan matematiikka Harjoitustehtäviä

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

Yksinkertaisin järjestelmä

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

Java-kielen perusteet

LUKUTEORIA johdantoa

Liukulukujen vaihtoehtoisia esitystapoja

1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? =?

HUOLTOMATEMATIIKKA 1, SISÄLTÖ TIEDOT JA ESIMERKIT:

8.1 Murtoluvun määritelmä - murtoluvulla tarkoitetaan aina osaa (osia) jostakin kokonaisuudesta

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä

Tiedon esitysmuodot Tiedon muuttumattomuuden tarkistus Järjestelmän sisäinen muisti

Perustietotyypit ja laskutoimitukset

811120P Diskreetit rakenteet

Talousmatematiikan perusteet, L2 Kertaus Aiheet

1 Peruslaskuvalmiudet

Algoritmit 1. Luento 11 Ti Timo Männikkö

Tietokoneen toiminta, K Tavoitteet (4)

Talousmatematiikan perusteet, L2 Kertaus Aiheet

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

Luento 2: Viivan toteutus

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran

Numeerinen analyysi 2016

Python-ohjelmointi Harjoitus 2

TWEN 131 PD / 1430 PD KÄYTTÖOHJE

Ohjelmointi 1 C#, kevät 2013, 2. tentti

1 Numeroista lukuja 1.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmointiharjoituksia Arduino-ympäristössä

LIITE 1 VIRHEEN ARVIOINNISTA

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 0: Kurssihallinto Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

0. perusmääritelmiä. Lukutyypit Laskusäännöt Laskujärjestys

Luento 3: Digitaalilogiikka Luento 3. u binary: AND ( ) A B = AB. u unary: NOT ( _ ) A. u precedence: NOT, AND, OR.

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

PUHUTAAN NUMEROILLA Murtoluvut Desimaaliluvut tai

Neure - tehtäväluettelo 1 / , 17:05

Digital logic. Boolean Algebra. Tietokoneen rakenne. Tietokoneen rakenne

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Tietokoneen rakenne (2 ov / 4 op) Syksy 2007 Liisa Marttinen. Helsingin yliopisto Tietojenkäsittelytieteen laitos

A L G E B R A N O P P I - J A E S I M E R K K I K I R J A PORVOO HELSINKI WERNER SÖDERSTRÖM OSAKEYHTIÖ KAHDESTOISTA PAINOS

0. perusmääritelmiä. Lukutyypit Laskusäännöt Laskujärjestys

PERUSKOULUSTA PITKÄLLE

7. Näytölle tulostaminen 7.1

2 j =

Diskreetit rakenteet P 5 op

Transkriptio:

Luento 6 ALU: Aritmeettis-Looginen Yksikkö Tietokonearitmetiikka Stallings: Ch 9 Kokonaislukuesitys Kokonaislukuaritmetiikka Liukulukuesitys Liukulukuaritmetiikka Luento 6-1 ALU = Aritmetic Logic Unit Suorittava yksikkö, tiedon käsittely u Kokonaisluku ja liukulukuaritmetiikkaa u Vertailut, sivuttaissiirrot u Bittien kopiointi rekisteristä toiseen u Osoitelaskenta: Hypyt, muistiviittaukset Input u Yleensä kaksi operandia sisään u Rekistereistä (ja muistista) Operatio u Usein käskyrekisterin perusteella Output u Rekisteriin/Muistiin/PSW:hen + - *?? ylivuoto? 2 kpl? (Sta06 Fig 9.1) Luento 6-2 tulos Kokonaislukuesitys (Integer Representation) Arvo binäärimuodossa, bittijonona Merkin paino määräytyy paikan mukaan Kokonaislukujen esitys 57 = 5*10 1 + 7*10 0 = 32 + 16 + 8 + 1 = 1*2 5 + 1*2 4 + 1*2 3 + 0*2 2 + 0*2 1 + 1*2 0 = 0011 1001 = 0x39 = 3*16 1 + 9*16 0 heksadesimaaliesitys Eniten merkitsevä bitti / vähiten merkitsevä bitti u MSB, most ificant bit u LSB, Least ificant bit Luento 6-3 Luento 6-4 Kokonaislukuesitys (Integer Representation) Entä negatiiviset arvot? u Etumerkki-suuruus u 2:n komplemettimuoto Tietokoneet käyttävät 2:n komplementtia u Ei erikseen +0 ja -0 u Laskuissa ei tarvitse erikseen huomioida etumerkkiä u Vähennyslasku voidaan suorittaa yhteenlaskuna! u Helpompi laitteistolle -57 = 1011 1001 etumerkki -57 = 1100 0111 +2 = 0000 0010 +1 = 0000 0001 0 = 0000 0000-1 = 1111 1111-2 = 1111 1110 2:n komplementti Esimerkki u 8-bittinen esitys, esitä arvo -57 57 = 0011 1001 itseisarvo 1100 0110 invertoi bitit (1:n komplementti) 1100 0110 1 lisää1 1100 0111 2:n komplementtimuoto u Laajentuu helposti esim. 16-bittiseksi 57 = 0011 1001 = 0000 0000 0011 1001-57 = 1100 0111 = 1111 1111 1100 0111 Hylkää mahd. ylivuotava bitti extension Luento 6-5 Luento 6-6 / 2006 / Teemu Kerola 1

2:n komplementti Arvoalue: -2 n-1 2 n-1-1 8 bits: -2 7 2 7-1 = -128 127 32 bits: -2 31 2 31-1 = -2 147 483 648 2 147 483 647 Yhteenlaskun ylivuoto helppo havaita u Ei ylivuotoa, jos erimerkkiset yhteenlaskettavat u Ylivuoto, jos samanmerkkiset yhteenlaskettavat ja tuloksen merkki eri kuin yhteenlaskettavien merkki 57 = 0011 1001 + 80 = 0101 0000 137 = 1000 1001 Ylivuoto! Luento 6-7 2:n komplementti Vähennyslasku yhteenlaskuna! u Unohda etumerkki, käsittele etumerkittöminä! u Ensin 2:n komplementti vähennettävästä, sitten add u Helppo laitteisto -3 = 1101 +1 = 0001-2 = 1110 1100 1 1101 3= 0011 u Tarkistus Tuliko ylivuoto? Merkki = 1, siis negatiivinen Itseisarvo: invertoi bitit ja lisää 1-3 2:n komplementtiesityksessä (Sta06 Table 9.1) Luento 6-8 Negaatio = 2:n komplementti Kokonaislukuaritmetiikkaa Negaatio Yhteen/vähennyslasku Kertolasku Jakolasku 1: invertoi kaikki bitit 2: lisää 1 3: tarkista erikoistilanteet u Jätä ylivuotobitti huomiotta u Muuttuiko merkki? Pienimmälle luvulle ei negaatiota Ellei, aiheuta poikkeus Helppo laitteisto -57 = 1100 0111 = 57 0011 1000 1 0011 1001-128 = 1000 0000 0111 1111 1 1000 0000 Luento 6-9 Luento 6-10 Yhteenlasku (ja vähennyslasku) Kokonaislukujen kertolasku Normaali binääriyhteenlasku u Jos vähennyslasku, muodosta vähennettävästä ensin komplementti, sitten yhteenlaskuna Ylivuotobitistä ei tarvitse välittää u Tarkkaile sensijaan summan merkkiä Helppo laitetoiminto u 2:n komplementtipiiri ja yhteenlaskupiiri (Sta0 Fig 9.6) Binääriluvuillakin kuten koulussa opittu u Helppo kertoa 0:lla tai 1:llä Laitteistolla? u Monimutkainen u Tarjolla useita algoritmeja Ylivuoto? u 32 b operandit tulos 64 b? Helppo laitteisto, jos etumerkittömiä u Vain monta yhteenlaskua u Tai sivuttaissiirtoa ja yhteenlaskua siirto vasemmalle = kerro 2:lla esim: 5 * => add, shift, shift, add (Sta06 Fig 9.7) Luento 6-11 Luento 6-12 / 2006 / Teemu Kerola 2

Etumerkittömien lukujen kertolasku kerrottava (Fig. 8.8 [Stal99]) (Fig. 9.8) Uned Multiplication Example (19) Overflow? No. 13 * 11 =??? M 1011 = 1000 1111 = 128+8+4+2+1 = 143 Result on left, multiplier on right! ADD ADD ADD tulo(s) kertoja (+ tuloksen loppuosa) JosQ 0 =0 vain shift muuten add, shift (Sta06 Fig 9.8a) Luento 6-13 SHIFT SHIFT SHIFT SHIFT C A Q 0 0000 1011 0010 0110 1000 1101 1111 1 0101 1101 0001 1110 1111 from C take next sumtake next sum result bit from A take skip next next sum sum just do SHIFT Luento 6-14 Etumerkittömien lukujen kertolasku Etumerkittömien kertolasku Q * M = 1101 * 1011 = 1000 1111 eli 13*11 = 143 [Sta06 Fig 9.8a] (Sta06 Fig 9.9) (Sta06 Fig 9.8b) Luento 6-15 Luento 6-16 Negatiivisten kertolasku? Ed. algoritmi ei toimi negatiivisille luvuille Voisi tehdä näin u muuta operandit positiivisiksi kokonaisluvuiksi v käytä ed. algoritmia tutki operandien merkki, muuta tulos tarvittaessa komplementtimuotoon Parempia ja nopeampia tapoja olemassa Boothin Algoritmi Huomio edell. algoritmista u Yhteenlasku vain (aina), kun kertojassa esiintyy 1 Boothin algoritmin idea (tehostus) u Yhdistä vierekkäiset 1:set yhdeksi köntäksi u Tee köntälle yksi yhteenlasku ja yksi vähennyslasku u Esim. 7*x = 8*x +( x) 111*x = 1000*x +(-x) = shift, shift, shift, complement, add 5 * 7 = 0101 * 0111 = 0101 * (1000-0001) 00101000 40 11111011-5 100100011 = 35 Toimii 2:n komplementtimuodoille, myös negatiivisille! Luento 6-17 Luento 6-18 / 2006 / Teemu Kerola 3

Boothin Algoritmi Booth s Algorithm for Twos Complement Multiplication 10 = könttä alkoi 11 = könttä jatkuu 01 = könttä loppui Arithmetic Shift Right: = täytä etumerkillä (Fig. 8.12 [Stal99]) Fig. 9.12 arithmetic shift right operands Q -1 (Sta06 Fig 9.12) Luento 6-19 result Luento 6-20 Booth s Algorithm Example (15) Boothin Algoritmi, esim. Sta06 Fig 9.12 7 * 3 =? = 0001 0101 = 21 M: 0111 Fig. 9.12 [Sta06] Q * M = 0011 * 0111 = 0001 0101 eli 3*7 = 21 Arithmetic Arithm Shift Right SHIFT Arithm SHIFT A: 1100 0101 0001 0000 Q: 1001 0100 0101 0011 10 1001 0010 1110 0011 1010 0100 01 extended 1 bit of result Carry bit was lost Luento 6-21 Q -1 011 ADD just SHIFT 10 subtract 00 just A-M SHIFT (Sta06 Fig 9.13) Luento 6-22 Kokonaislukujen jakolasku Kokonaislukujen jakolasku Binääriluvuillakin kuten koulussa opittu u Helppo: osamäärään tulee vain 0:ia ja 1:siä (jakaja) osamäärä jaettava Toimii positiivisilla luvuilla, negatiivisille lisävirittelyjä Ks. tarkemmin kirjan esimerkki Fig 9.17 [Sta06 ] A Q Q 0 SHL +/- +/- jakojäännös Laitteistototeutus vastaavasti kuin kertolaskussa u Siirto vasemmalle = uusi numero mukaan (Sta06 Fig 9.15) Luento 6-23 palauta A ennalleen ja ota uusi numero alas Sta06 Fig 9.16 Luento 6-24 / 2006 / Teemu Kerola 4

Liukulukuesitys Liukulukuesitys Merkitsevät numerot ja suuruusluokka Normeerattu muoto u pistettä edeltävä numero > 0-0.000 000 000 123 = -1.23 * 10-10 0.123 = +1.23 * 10-1 123.0 = +1.23 * 10 2 123 000 000 000 000 = +1.23 * 10 14 Luento 6-25 Luento 6-26 IEEE 754 Liukulukuformaatit 32-bittinen liukulukuesitys 1 b etumerkille u 1 = -, 0 = + 8 b exponentille u Ei erikseen etumerkkiä, vaan erillinen nollataso (bias) Esim. Exp=5gtalleta 127+5, Exp=-5gtalleta 127-5 23 b mantissalle (ificant) u Normeeratussa muodossa binääripistettä edeltävä numero aina 1, ei talleteta (piilobitti, Zuse Z3 1939) Binäärimuodossa esitetyn liukuluvun arvo -1 Sign * 1.Mantissa * 2 Exponent-127 (Sta06 Table 9.3) Luento 6-27 Luento 6-28 Esimerkkejä Esimerkkejä 23.0 = +10111.0 * 2 0 = +1.0111 * 2 4 =? 127+4=131 0 1000 0011 011 1000 0000 0000 0000 0000 0 1000 0000 111 1000 0000 0000 0000 0000 exponent mantissa exponent mantissa X =? X = (-1) 0 * 1.1111 * 2 (128-127) = 1.1111 2 * 2 1.0 = +1.0000 * 2 0 =? 0+127 = 127 0 0111 1111 000 0000 0000 0000 0000 0000 = (1+ 1/2 + 1/4 + 1/8 + 1/16) * 2 = (1 + 0.5 + 0.25 + 0.125+0.0625) * 2 exponent mantissa = 1.9375 * 2 = 3.875 Luento 6-29 Luento 6-30 / 2006 / Teemu Kerola 5

Liukulukujen tarkkuudesta (32b) IEEE 754 Erityismerkitykset Not a Number Arvoalue u 8 b eksponenttig 2-126... 2 127 ~ -10-38... 10 38 Tarkkuus u 24 b mantissa g 2 24 ~ 1.7 * 10-7 ~ 6 desimaalia u Parempi tarkkuus pienille luvuille ilman normalisointia Double Precision vastaavasti (Sta06 Table 9.4) Luento 6-31 Luento 6-32 NaN: Not a Number Liukulukuaritmetiikkaa IEEE-754 Standardi Yhteen/vähennyslasku Kertolasku Jakolasku (Sta06 Table 9.6) Luento 6-33 Luento 6-34 Liukulukuaritmetiikka Laskentaa varten leveämpiä työrekistereitä u Guard bits u Enemmän merkitseviä bittejä mm. mantissalle u Käytetään myös normeeraamattomia muotoja Yhteen- ja vähennyslasku u Enemmän välivaiheita kuin kerto/jakolaskussa u Operandeille ensin sama eksponentti Toisen normeeraus purettava tarkkuutta häviää u Tulos voi vaatia normeerauksen Kerto- ja jakolasku u Mantissa ja eksponentti käsiteltävä erikseen Liukulukuaritmetiikka (Sta06 Table 9.5) Luento 6-35 Luento 6-36 / 2006 / Teemu Kerola 6

Yhteen- ja vähennyslasku Erikoistilanteita (Sta06 Fig 9.22) Luento 6-37 Eksponentin ylivuoto (Hyvin suuri luku) u Arvoksi tai - vai u Aiheuta poikkeus ohjelmoitava optio Eksponentin alivuoto (Olemattoman pieni luku) u Arvoksi 0 (tai aiheuta poikkeus) ohjelmoitava optio Mantissan ylivuoto u Yhteenlaskun tuloksena mantissa, jossa binääripisteen edellä useita numeroita u Normeeraa! Mantissan alivuoto u Yhteiseen eksponenttiin siirtyminen voi aiheuttaa merkitsevien bittien katoamista (entä, jos kaikki merkitsevät menee?) u Pyöristä? Luento 6-38 Pyöristys Kertolasku Esimerkki u Arvo neljän desimaalin tarkkuudella u Esittämiseen käytössä vain 3 desimaalia 3.1234, -4.5678 u Normaalien pyöristyssääntöjen mukaan lähimpään esitettävissä olevaan u Aina kohti u Aina- kohti u Aina 0 kohti 3.123, -4.568 3.124, -4.567 3.123, -4.568 3.123, -4.567 Esim. Intel Itanium -laitteisto tukee näitä kaikkia (Sta06 Fig 9.23) Luento 6-39 Luento 6-40 Jakolasku Kertauskysymyksiä Miksi käytetään 2:n komplementtimuotoa? Miten 2:n komplementtiesitys laajenee suurempaan tilaan (esim. 8b esitys 16 b:n esitys)? Millainen on yksinkertaisen tarkkuuden liukuluvun esitysmuoto? Milloin tulee liukuluvun alivuoto? (Sta06 Fig 9.24) Luento 6-41 Luento 6-42 / 2006 / Teemu Kerola 7