Tietokonearitmetiikka

Samankaltaiset tiedostot
Tietokonearitmetiikka

Tietokonearitmetiikka

Tietokonearitmetiikka

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

811120P Diskreetit rakenteet

ANSI/IEEE Std

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

Liukulukulaskenta. Pekka Hotokka

Numeeriset menetelmät

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

5. Laskutoimitukset eri lukujärjestelmissä

SISÄLLYS - DIGITAALITEKNIIKKA

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

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

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

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)

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

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(?)

Merkitse kertolasku potenssin avulla ja laske sen arvo.

Laitteistonläheinen ohjelmointi

Kappale 20: Kantaluvut

Tietotyypit ja operaattorit

Kombinatorisen logiikan laitteet

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

Laitteistonläheinen ohjelmointi

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

BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät

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

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

Ohjelmoijan binaarialgebra ja heksaluvut

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

Mikrokontrollerit. Mikrokontrolleri

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

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

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

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

Diskreetit rakenteet. Juha Kortelainen

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

Yksinkertaisin järjestelmä

LUKUTEORIA johdantoa

Digitaalitekniikan matematiikka Harjoitustehtäviä

1 Peruslaskuvalmiudet

Perustietotyypit ja laskutoimitukset

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

Talousmatematiikan perusteet, L2 Kertaus Aiheet

Algoritmit 1. Luento 11 Ti Timo Männikkö

Tietokoneen toiminta, K Tavoitteet (4)

Java-kielen perusteet

Liukulukujen vaihtoehtoisia esitystapoja

811120P Diskreetit rakenteet

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

PERUSKOULUSTA PITKÄLLE

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

Luento 2: Viivan toteutus

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

1 Numeroista lukuja 1.

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

TWEN 131 PD / 1430 PD KÄYTTÖOHJE

Ohjelmointiharjoituksia Arduino-ympäristössä

LIITE 1 VIRHEEN ARVIOINNISTA

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

PUHUTAAN NUMEROILLA Murtoluvut Desimaaliluvut tai

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

Numeerinen analyysi 2016

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

Konekielinen ohjelmointi

2 j =

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

7. Näytölle tulostaminen 7.1

Python-ohjelmointi Harjoitus 2

ITKP102 Ohjelmointi 1 (6 op)

Ratkaisut Summa on nolla, sillä luvut muodostavat vastalukuparit: ( 10) + 10 = 0, ( 9) + 9 = 0,...

NELIÖJUURI. Neliöjuuren laskusääntöjä

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Diskreetit rakenteet P 5 op

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

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

Luento 4 Aliohjelmien toteutus

Transkriptio:

Tietokoneen rakenne Luento 6 Tietokonearitmetiikka Stallings: Ch 9 Kokonaislukuesitys Kokonaislukuaritmetiikka Liukulukuesitys Liukulukuaritmetiikka Luento 6-1

ALU: Aritmeettis-Looginen Yksikkö 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? tulos (Sta06 Fig 9.1) Luento 6-2

Tietokoneen rakenne Kokonaislukujen esitys Luento 6-3

Kokonaislukuesitys (Integer Representation) Arvo binäärimuodossa, bittijonona Merkin paino määräytyy paikan mukaan 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 significant bit u LSB, Least significant bit Luento 6-4

Kokonaislukuesitys (Integer Representation) Entä negatiiviset arvot? u Etumerkki-suuruus u 2:n komplemettimuoto -57 = 1011 1001 etumerkki Tietokoneet käyttävät 2:n komplementtia -57 = 1100 0111 u Ei erikseen +0 ja -0 u Laskuissa ei tarvitse erikseen huomioida etumerkkiä u Vähennyslasku voidaan suorittaa yhteenlaskuna! u Helpompi laitteistolle +2 = 0000 0010 +1 = 0000 0001 0 = 0000 0000-1 = 1111 1111-2 = 1111 1110 Luento 6-5

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 sign extension Luento 6-6

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 u Tarkistus Tuliko ylivuoto? 1100 1 1101 3= 0011 Merkki = 1, siis negatiivinen Itseisarvo: invertoi bitit ja lisää 1-3 2:n komplementtiesityksessä (Sta06 Table 9.1) Luento 6-8

Tietokoneen rakenne Kokonaislukuaritmetiikkaa Negaatio Yhteen/vähennyslasku Kertolasku Jakolasku Luento 6-9

Negaatio = 2:n komplementti 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-10

Yhteenlasku (ja vähennyslasku) 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) Luento 6-11

Kokonaislukujen kertolasku 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-12

Etumerkittömien lukujen kertolasku kerrottava kertoja (+ tuloksen loppuosa) JosQ 0 =0 vain shift muuten add, shift tulo(s) (Sta06 Fig 9.8a) Luento 6-13

Unsigned Multiplication Example (19) (Fig. 8.8 [Stal99]) (Fig. 9.8) Overflow? No. 13 * 11 =??? M 1011 = 1000 1111 = 128+8+4+2+1 = 143 Result on left, multiplier on right! ADD ADD ADD 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 (Sta06 Fig 9.9) Luento 6-15

Etumerkittömien kertolasku [Sta06 Fig 9.8a] Q * M = 1101 * 1011 = 1000 1111 eli 13*11 = 143 (Sta06 Fig 9.8b) 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 Luento 6-17

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-18

Boothin Algoritmi 10 = könttä alkoi 11 = könttä jatkuu 01 = könttä loppui Arithmetic Shift Right: = täytä etumerkillä (Sta06 Fig 9.12) Luento 6-19

Booth s Algorithm for Twos Complement Multiplication (Fig. 8.12 [Stal99]) Fig. 9.12 operands +/- arithmetic shift right Q -1 result Luento 6-20

Booth s Algorithm Example (15) 7 * 3 =? = 0001 0101 = 21 M: 0111 Fig. 9.12 [Sta06] +/- A: Arithmetic Arithm Shift Right SHIFT Arithm SHIFT 1100 0101 0001 0000 Q: 1001 0100 0101 0011 10 1001 0010 1110 0011 1010 0100 01 Q -1 sign extended 1 bit of result Carry bit was lost 01 10 11 ADD subtract 00 just just SHIFT A-M SHIFT Luento 6-21

Boothin Algoritmi, esim. Sta06 Fig 9.12 Q * M = 0011 * 0111 = 0001 0101 eli 3*7 = 21 (Sta06 Fig 9.13) Luento 6-22

Kokonaislukujen jakolasku Binääriluvuillakin kuten koulussa opittu u Helppo: osamäärään tulee vain 0:ia ja 1:siä (jakaja) osamäärä jaettava Laitteistototeutus vastaavasti kuin kertolaskussa u Siirto vasemmalle = uusi numero mukaan jakojäännös (Sta06 Fig 9.15) Luento 6-23

Kokonaislukujen jakolasku Toimii positiivisilla luvuilla, negatiivisille lisävirittelyjä Ks. tarkemmin kirjan esimerkki Fig 9.17 [Sta06 ] A Q Q 0 SHL palauta A ennalleen ja ota uusi numero alas Sta06 Fig 9.16 Luento 6-24

Tietokoneen rakenne Liukulukuesitys Luento 6-25

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-26

IEEE 754 Liukulukuformaatit (Sta06 Table 9.3) Luento 6-27

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 (significant) 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 Luento 6-28

Esimerkkejä 23.0 = +10111.0 * 2 0 = +1.0111 * 2 4 =? 127+4=131 0 1000 0011 011 1000 0000 0000 0000 0000 sign exponent mantissa 1.0 = +1.0000 * 2 0 =? 0+127 = 127 0 0111 1111 000 0000 0000 0000 0000 0000 sign exponent mantissa Luento 6-29

Esimerkkejä 0 1000 0000 111 1000 0000 0000 0000 0000 sign exponent mantissa X =? X = (-1) 0 * 1.1111 * 2 (128-127) = 1.1111 2 * 2 = (1+ 1/2 + 1/4 + 1/8 + 1/16) * 2 = (1 + 0.5 + 0.25 + 0.125+0.0625) * 2 = 1.9375 * 2 = 3.875 Luento 6-30

Liukulukujen tarkkuudesta (32b) 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 Luento 6-31

IEEE 754 Erityismerkitykset Not a Number Double Precision vastaavasti (Sta06 Table 9.4) Luento 6-32

NaN: Not a Number (Sta06 Table 9.6) Luento 6-33

Tietokoneen rakenne Liukulukuaritmetiikkaa IEEE-754 Standardi Yhteen/vähennyslasku Kertolasku Jakolasku 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 Luento 6-35

Liukulukuaritmetiikka (Sta06 Table 9.5) Luento 6-36

Yhteen- ja vähennyslasku (Sta06 Fig 9.22) Luento 6-37

Erikoistilanteita 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 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 Luento 6-39

Kertolasku (Sta06 Fig 9.23) Luento 6-40

Jakolasku (Sta06 Fig 9.24) Luento 6-41

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? Luento 6-42