poglavlje 8 računalna aritmetikamrkve.etfos.hr/pred/orasje/ar/pred09.pdf · područje fp brojeva...
TRANSCRIPT
Organizacija i arhitektura računala
Poglavlje 8Računalna aritmetika
Aritmetiko-logička jedinica
Radi razne izračuneSve ostale jedinice u računalu su tamo da služe ALU jediniciRadi samo sa cijelim brojevimaMože raditi i sa brojevima sa pomićnim zarezom – FloatPoint NumbersMože biti kao zasebna jedinica – matematički koprocesorMože biti kao odvojena jedinica – fizički odvojeni FPU (486DX +)
ALU Ulazi i zlazi
Prezentacija cijelog broja
Sa pomoću 0 i 1 se može prikazati bilo koji brojSamo pozitivni brojevi – “čisti” binarni format
npr. 146=10010010
nema preznaka “-” – negativnih brojevanema decimalne točkemogućnost predznakadvostruki komplement
Predznak
MSB bit rezerviran za predznak0 znači pozitivan broj1 znači negativan broj+18 = 00010010-18 = 10010010Problemi:
Treba voditi računa i o predznaku i o apsolutnoj vrijednosti broja u aitmetičkim operacijamadva načina zapisivanja broja nula (+0 i -0)
Dvostruki komplement
+3 = 00000011+2 = 00000010+1 = 00000001+0 = 00000000-1 = 11111111-2 = 11111110-3 = 11111101
Korist dvostrukog komplementa
Samo jedan način prikaza broja 0Jednostavnija matematikaOperacija negacije je vrlo jednostavna
3 = 00000011Booleov komplement 11111100Dodati 1 LSB bitu 11111101
Geometrijski prikaz dvostrukog komplementa cijelog broja
Specijalni slučaj negacije - 1
0 = 00000000Bitwise not 11111111Add 1 LSB bitu +1Rezultat 1 00000000Overflow se ignorira, tako da imamo:- 0 = 0 √
Specijalni slučaj negacije - 2
-128 = 10000000bitwise not 01111111Add 1 LSB bitu +1Rezultat 10000000Dobijemo:-(-128) = -128 XObratiti pažnju na MSB bit (bit predznaka)a treba se promijeniti tijekom negacije
Raspon skupa brojeva
8 bitni dvostruki komplement+127 = 01111111 = 27 -1-128 = 10000000 = -27
16 bitni dvostruki komplement+32767 = 011111111 11111111 = 215 - 1-32768 = 100000000 00000000 = -215
Konverzije brojeva s obzirom na njihovu binarnu dužinu
Pozitivni brojevi pakirani sa vodećim nulama -leading zeros+18 = 00010010+18 = 00000000 00010010Negativni brojevi pakirani sa vodećim jedinicama - leading ones-18 = 10010010-18 = 11111111 10010010npr. pakiranje sa MSB bitom (predznakom)
Zbrajanje i oduzimanje
Normalno binarno zbrajanjeGleda se overflow bit u slučaju preljeva
Operacija oduzimanja svodi se na operaciju zbrajanja pozitivnog broja a i negativnog broja b
a - b = a + (-b)
tako da samo trebamo operaciju zbrajanja i jedinicu za negaciju/komplement
Hardwersko zbrajanje i oduzimanje
Množenje
To je kompleksna operacijaRadi se na način da se za svaki bit/znamenku izračunava samo dio umnoška i na kraju dijelovi umnoška se zbrajaju
slično kao i množenje u decimalnom sustavu –metoda potpisivanja množaka
Primjer množenja
1011 Multiplikand (11 dec)x 1101 Multiplikator (13 dec)
1011 djelomični umnožak0000 Važno: ako je multiplikatorski bit 1 onda samo kopiraj
1011 multiplikand1011 inače nula10001111 umnožak (143 dec)Važno: Rezultat je dvostruke duljine nego li su to operandi
Binarno množenje bez predznaka
Postupak izvršenja operacije množenja - primjer
Dijagram toka postupka binarnog množenja bez predznaka
Množenje negativnih brojeva
Ovo ne ide, ne može se!Rješenje 1
Ako je potrebno onda se negativni broj pretvori u pozitivnimnože se normalnim postupkomako su predznaci operanada različiti tada je rezultat negativan broj
Rješenje 2Booth-ov algoritam
Booth-ov algoritam
Primjer Booth-ovog algoritma
Dijeljenje
još složenije od množenjaNegativni brojevi stvarno mogu biti problem!Postupak se temelji na postupcima dugotrajnog i zahtjevnog djeljenja
001111
Djeljenje binarnog broja bez predznaka
1011
00001101
100100111011
0011101011
1011100
Quotient
Dividend
Remainder
PartialRemainders
Divisor
Realni brojevi
Brojevi sa decimalnom točkomMogu se izvesti u gormi čistog binarnog broja
1001.1010 = 24 + 20 +2-1 + 2-3 =9.625
gdje je tu decimalna točka?Fiksna decimalna točka?
Vrlo ograničeni brojevni skup
Pomična decimalna točka?Kako je postavljena i gdje je ta točka?
Brojevi sa pomičnim zarezom
+/- .significand x 2exponent
Točka je zapravo fiksirana između znaka predznaka i ostatka brojaEksponent otkriva područje potencije prikazanog broja
Sign
bit
BiasedExponent
Significand or Mantissa
Primjer broja sa pomičnim zarezom
Predznaci za float-brojeve
Mantissa je pohranjena u formatu dvostrukog komplementaKako je zapisan i što znači eksponentni dio
npr. eksponent (bias) 128 znači8 bit eksponentčija vrijednost može biti od 0-255i oduzima mu se 128 da bi se dobila korektna vrijednost eksponentapodručje vrijednosti je -128 do +127
Normalizacija
FP su uobičajeno normaliziraninpr. eksponent je tako podešen da je MSB mantisejedinica (1)Budući da je on uvijek 1, tada taj bit nije potrebno sprematiprimjer; znanstveni način zapisivanja brojeva je takav da je normaliziran na način da se uvijek dobije broj koji ispred zareza ima samo jednu brojku
npr. 3.123 x 103)
Područje FP brojeva
Za 32 bitne brojeve to je:8 bit eksponent+/- 2256 ≈ 1.5 x 1077
Točnost je...ovosi o promjenjivosti LSB-a mantisse23 bitna mantissa 2-23 ≈ 1.2 x 10-7
oko 6 decimalnih mjesta
Područja korektnog prikaza brojeva
IEEE 754
Standard za FP pohranu/zapis brojeva32 i 64 bitni standard8 i 11 bitni eksponentProšireni format format (i mantissa i eksponent)
FP aritmetika +/-
Provjera prisutnosti nule (broj 0)Podešavanje eksponenataZbrajanje ili oduzimanjeNormalizacija rezultata
FP aritmetika x/÷
Provjera prisutnosti nulezbrajanje/oduzimanje eksponenatamnoženje/dijeljenje signifikanada – paziti na predznakNormalizacijaZaokruživanjeSvi rezultati trebaju biti dvostruke duljine nego li su to operandi/signifikandi
FPMnoženje
FPDijeljenje