19
Arhitektura i funkcija računara Boris Damjanović

a3 (2)

  • Upload
    dboris

  • View
    227

  • Download
    7

Embed Size (px)

Citation preview

Page 1: a3 (2)

Arhitektura i funkcija računara

Boris Damjanović

Page 2: a3 (2)

Koncept predznak i dimenzije (sign and magnitude)

• Kada bi mi bili konstruktori nekog hipotetičkog uređaja, jednostavno rješenje koje bi možda mogli da iskoristimo, bilo bi da pokušamo uzeti jedan bit iz prostora za podatke. U tom bitu bi držali predznak broja – npr.

0 = pozitivan broj;

1 = negativan broj.1 = negativan broj.

• U preostalih 7 bita bi držali stvarne podatke, tako da bi pozitivan i negativan broj 1 mogli da predstavimo na slijedeći način:

+/- Vrijednost

+1 = 0 000 0001

-1 = 1 000 0001

Page 3: a3 (2)

Koncept predznak i dimenzije (sign and magnitude)

• Ovakav način označavanja cijelih brojeva naziva se koncept predznak-dimenzije (sign and magnitude ili signed magnitude). Kako smo vidjeli, njegova osnovna karakteristika jeste da se pokuša iskoristiti jedan bit (krajnji lijevi bit) iz postojećeg prostora za podatke da bi prikazali predznak. U tom slučaju, dimenzije podatka (magnituda) su samo 7 bita, pa prethodno spominjani bajt može da prikaže vrijednosti od -127(10) do +127(10).

Binarno Označen

podatak

0 1111111 127

… 6

0 0000010 2

0 0000001 1

0 0000000 +0

1 0000000 −0vrijednosti od -127(10) do +127(10).

• Slijedeća tabela ilustruje ovaj koncept:

• Za predstavljanje brojeva pomoću koncepta predznak-dimenzije, rang moramo umanjiti za 1, zbog postojanja dvije nule, kao u slijedećoj formuli:

1 0000001 −1

1 0000010 −2

… 6

1 1111111 −127

12 −=b

R

Page 4: a3 (2)

Prvi komplement

• Operacija komplementiranja je vrlo jednostavna

za izvođenje – potrebno je jednostavno pretvoriti

sve nule originalnog binarnog broja u jedinice, a

sve njegove jedinice u nule. Dakle:

!0 = 1

!1 = 0

• Gdje je ! oznaka za komplement. U literaturi se

često koriste i oznake ~A (tilda od A) i Ā(nadvučeno A) za operaciju komplementiranja.

Page 5: a3 (2)

Prvi komplement• Dakle, i koncept prvog komplementa se može iskorisititi za predstavljanje pozitivnih

i negativnih brojeva, kao u slijedećoj tabeli:

Binarno Označen

podatak

0111 1111 127

… 6

0000 0010 2

0000 0001 1

• Nedostatak predstavljanja označenih brojeva na ovaj način je, kao i u slučaju koncepta predznak-dimenzije, postojanje dvije nule. Zbog toga je na ovaj način u okviru jednog bajta moguće predstaviti samo R = 28 -1 = 255 različitih brojeva.

0000 0001 1

0000 0000 +0

1111 1111 −0

1111 1110 −1

1111 1101 −2

… 6

1000 0000 −127

Page 6: a3 (2)

Drugi komplement

• Drugi komplement nekog broja (bilo pozitivnog ili negativnog) se realizuje kao invertovanje njegovih bita i na kraju dodavanje broja 1 na dobijeni rezultat. Ako se kao rezultat sabiranja pojavi prenos u najznačajnijem bitu, ovaj prenos se ignoriše.

• Ako npr. treba da komplementiramo broj 127 u okviru jednog bajta, drugi komplement dobijamo u dva koraka:

• Ako npr. treba da komplementiramo broj 127 u okviru jednog bajta, drugi komplement dobijamo u dva koraka:

Page 7: a3 (2)

Drugi komplement

• Posmatrajmo slijedeću tabelu koja ilustruje ovaj koncept:

• Kako vidimo, pozitivni brojevi predstavljeni pomoću drugog komplementa uvjek počinju nulom na mjestu MSB-a, dok

Binarno Označen

podatak

0 1111111 127

… 6

0 0000010 2

0 0000001 1

nulom na mjestu MSB-a, dok negativni brojevi uvijek počinju jedinicom, što bitno pojednostavljuje projektovanje sklopova koji treba da manipulišu ovakvim brojevima.

0 0000000 +0

0 0000000 −0

1 1111111 −1

1 1111110 −2

… 6

1 0000001 −127

1 0000000 -128

Page 8: a3 (2)

Modifikovana notacija (Excess N, biased)

• Do sada smo vidjeli različite konvencije, odnosno dogovorene načine predstavljanja označenih brojeva.

• Međutim, za njihovo predstavljanje na nivou jednog bajta, na raspolaganju su nam uvjek bili isti binarni brojevi od (0000 0000)2 do (1111 1111)2.

• Samo je stvar dogovora inžinjera i

Binarno Neoznačen

podatak

Označen

podatak

0000 0000 0 -127

0000 0001 1 -126

0000 0010 2 -125

• Samo je stvar dogovora inžinjera i naučnih radnika kako se u principu isti binarni brojevi tretiraju u različitim notacijama.

• Prikazani opseg binarnih brojeva daje nam još jednu mogućnost za predstavljanje označenih brojeva. Ideja modifikovane notacije je da se pozitivni brojevi pomaknu za određeni broj mjesta od binarne nule, kao u slijedećoj tabeli:

0111 1111 127 0

1000 0000 128 1

… �

1111 1111 255 +128

Page 9: a3 (2)

Modifikovana notacija (Excess N, biased)

Na ovaj način, ne-negativni brojevi su pomaknuti za 127 mjesta od binarne nule (0000 0000)2. Ovakva notacija naziva se još i Excess 127 ili biased notacija. Vrijednost označenog podatka u ovoj notaciji se izračunava jednostavnim oduzimanjem broja 127 (pomaka) od stvarne vrijednosti binarnog broja. Ako na primjer imamo binarni broj (0000 0010)2=(2)10, onda će vrijednost označenog broja biti:

Excess127 = (2)10 – (127)10 = (-125)10.

Binarno

(stvarna

binarna

vrijednost)

Neoznačen

Podatak

(Stvarni)

Označen

podatak

0000 0000 0 -127

0000 0001 1 -126

0000 0010 2 -125

Ili

Označeni = Neoznačeni - 127

0111 1111 127 0

1000 0000 128 1

… �

1111 1111 255 +128

Page 10: a3 (2)

Binarno kodirani dekadni (BCD)

brojevi• U jednom od prethodnih poglavlja spominjali smo

mogućnost da se predznak broja predstavi njegovim ASCII karakterom, odnosno binarnim ekvivalentom znaka minus (-) i zaključili smo da ovo nije efikasno rješenje u smislu potrošnje memorije.

• Međutim, mogli smo razmišljati na nešto drugačiji način i • Međutim, mogli smo razmišljati na nešto drugačiji način i pokušati da svaku cifru dekadnog brojnog sistema predstavimo odgovarajućom sekvencom nula i jedinica. U tom slučaju bi nam za predstavljanje cifara (0-9)10 bila potrebna 4 bita za svaku cifru (0000 - 1001)2.

Page 11: a3 (2)

Binarno kodirani dekadni (BCD)

brojeviOvakvo rješenje naziva se binarno kodirani decimali (BCD) i ono se u starijim izvedbama računara i kalkulatora dosta koristilo, a i danas su česte finansijske i poslovne aplikacije koje koriste ovakvu reprezentaciju brojeva. Da bi predstavili neki decimalni broj na ovaj način, svaka decimalna cifra je smještena u četvorku (nibble), kako slijedi:

Decimalni: 0 1 2 3 4 5 6 7 8 9

BCD: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

BCD reprezentacija broja (127)10 bila bi:

0000 0001 0000 0010 0000 0111

Kako računari za držanje podataka koriste bajte (8 bita), danas imamo dva uobičajena načina Kako računari za držanje podataka koriste bajte (8 bita), danas imamo dva uobičajena načina za smještanje 4-bitnih BCD brojeva u bajt:

1) Svaka cifra je smještena u jednu četvorku (nibble), dok su ostali biti popunjeni nulama, jedinicama (u sučaju EBCDIC koda) ili sa 0011 u slučaju ASCII tabele.

2) Po dvije cifre su smještene u jedan bajt.

Extended Binary Coded Decimal Interchange Code (EBCDIC) je IBM-ov 8-bitni standard, sličan

ASCII tabeli, razvijan 1963 i 1964 godine, kao pokušaj da se zamjeni u to doba 7-bitna ASCII tabela.

Izgovara se Eb-Si-Dik.

Page 12: a3 (2)

Rang i preciznost brojeva sa

fiksnim zarezomPredstavlljanje podataka u fiksnom zarezu karakteriše rangbrojeva koje mogu da prikažu i njihova preciznost.

Rang je razlika između najvećeg i najmanjeg broja koji je moguće prikazati. Preciznost je udaljenost između susjednih brojeva na brojnoj pravoj.

Ako posmatramo prethodno prikazane decimalne brojeve u fiksnom zarezu koji su koristili 3 cifre i decimalnu tačku nakon druge cifre s desne strane, pomoću takve konvencije bi mogli prikazati brojeve u rangu [0.00-9.99].

S druge strane, preciznost ovako prikazanih brojeva bila bi 0.01,

jer bi to bila razlika između bilo koja dva susjedna broja (npr. 5.02 - 5.01 = 0.01).

Page 13: a3 (2)

Brojevi u pokretnom zarezu (floating point numbers)

Podsjećanje: Naučna (scientific) notacija ili eksponencijalna notacija je način pisanja brojeva koji omogućava pisanje brojeva koji su ili preveliki ili premali da bi mogli biti napisani u standardnoj decimalnoj notaciji. Po ovoj notaciji, brojevi se pišu na slijedeći način:

a*10b

gdje je: a – koeficient odnosno mantisa, signifikanta a b – eksponent

Ova notacija omogućava nam kraće pisanje vrlo velikih ili vrlo malih brojeva:

2.2*1053

2.13*10

-30

Pošto je u raznim kompjuterskim programima iz ranog doba bilo teško napisati eksponent kao superskript, razvijena je tzv. E notacija

2.2E+53 2.13E-30

Primjetite da ovaj način označavanja nema veze sa matematičkom e konstantom

(Ojlerov broj), već da je vezan za pojam Eksponent.

Page 14: a3 (2)

Brojevi u pokretnom zarezu (floating point numbers)

Floating point reprezentacija omogućava predstavljanje veoma velikog ranga brojeva pomoću malog broja cifara, zahvaljujući tome što odvaja cifre koje se koriste za preciznost od cifara koje se koriste za rang broja. Ako bi Avogadrovu konstantu predstavili koristeći ovu notaciju u bazi 10, imali bi:

+6.023*1023

Ovdje je rang predstavljen pomoću eksponenta 1023, dok je preciznost data Ovdje je rang predstavljen pomoću eksponenta 10 , dok je preciznost data ciframa broja u fiksnom zarezu. Dio koji je prikazan brojem u fiksnom zarezu, često se naziva i mantisa ili signifikanta. Dakle, možemo reći da brojeve u pokretnom zarezu karakteriše trojka – predznak, eksponent i signifikanta.

Rang ovako prikazanog broja prvenstveno je određen brojem cifara u eksponentu (u primjeru exponent ima dvije cifre - 23) i bazom eksponenta (u primjeru je baza 10). Preciznost na ovaj način prikazanog broja zavisi najprije od broja cifara mantise (u primjeru su to 4 cifre) ali i od veličine eksponenta.

Page 15: a3 (2)

Normalizacija i sakriveni bitPotencijalni problem pri predstavljanju brojeva u pokretnom zarezu je činjenica da jedan isti broj možemo predstaviti na više načina.

Primjer:

37.145 = .0037145×104 = 3714.5×10

-2.

Ovakav način predstavljanja brojeva naziva se nenormalizovana forma. U normalizovanojformi, decimalna tačka se pomjera u lijevo sve dok ne dođe do lijeve nenulte cifre, dok se istovremeno vrši adekvatno podešavanje eksponenta. Ovaj proces je prikazan u slijedećim istovremeno vrši adekvatno podešavanje eksponenta. Ovaj proces je prikazan u slijedećim primjerima:

Primjer 1: 3584.1 =

3584.1 x 100 =

358.41 x 101 =

35.841 x 102 =

3.5841 x 103

Dakle, zadnji prikazani broj je u normalizovanoj formi

Treba napomenuti da određena grupa autora normalizaciji u slučaju dekadnog brojnog sistema pristupa

nešto drugačije (0.35841), dok u slučaju binarnog brojnog sistema koriste ovdje prikazan pristup.

Page 16: a3 (2)

Normalizacija i sakriveni bitPrimjer 2:

Normalizovati brojeve 300, 4000 i 0.000 000 0061

300 = 3 x 102

4000 = 4 x 103

0.000 000 0061 = 6.1 x 10-9

5 720 000 000 = 5.72 x 109

Do sada smo o normalizaciju posmatrali samo u svjetlu naučne (scientific) notacije u dekadnom brojnom sistemu. Ali kako računari koriste binarni brojni sistem, mogli bi pokušati da predstavimo normalizovane mantise iz prethodnog primjera kao binarne brojeve. da predstavimo normalizovane mantise iz prethodnog primjera kao binarne brojeve. Pogledajmo slijedeći primjer:

Primjer 3: (3)10 = (11)2 = (1 .1)2-norm

(4)10 = (100)2 = (1.00)2-norm

(5.72)10 = (101.10111)2 = (1.0110111)2-norm

Vidimo da kada mantisu nekog normalizovanog broja prikažemo binarno, na prvoj

poziciji lijevo uvjek imamo cifru ”1”. Inžinjeri i naučni radnici su davno primjetili ovu činjenicu i usvojili konvenciju po kojoj nema potrebe skladištiti ovaj bit. On se

prije pakovanja podatka za skladištenje odbaci, a restaurira se prilikom raspakivanja podatka koji treba da učestvuje u nekim aritmetičkim operacijama. Ovaj bit se još

naziva nevidljivi ili sakriveni (hidden) bit ili sakrivena jedinica. Ovaj koncept omogućava da se u mantisi može držati još jedan, dodatni bit.

Page 17: a3 (2)

IEEE 754-2008 standard za predstavljanje brojeva u pokretnom zarezu

Jednostruka preciznost ili single (koja se u standardu iz 2008. naziva binary32) je 32-bitni broj sa bazom 2. Karakterišu ga:

• Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve

• Eksponent (8 bita u Excess127 formatu) i

• Signifikanta (23+1 bita).

• Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Kada je u pitanju jednostruka preciznost, kompletan broj u decimalnom formatu dobijamo pomoću slijedeće formule:

1272)()1( −−=

ESxmxn (1)

Gdje je: S – predznak, m – signifikanta (mantisa) data kao decimalni broj, E – Eksponent dat kao decimalni broj.

Page 18: a3 (2)

IEEE 754-2008 standard za predstavljanje brojeva u pokretnom zarezu

Dvostruka preciznost ili double (koja se u standardu iz 2008. naziva binary64) je 64-bitni broj sa bazom 2. Karakterišu ga:

• Bit predznaka (1 bit): 0 za pozitivne, 1 za negativne brojeve

• Eksponent (11 bita u Excess1023 formatu) i

• Signifikanta (52+1 bita).

• Nevidljivi bit je nula samo ako su svi biti eksponenta nule.

Kod dvostruke preciznosti, kompletan broj u decimalnom formatu dobijamo pomoću slijedeće formule:

10232)()1( −−=

ESxmxn (1)

Gdje je:

S – predznak, m – signifikanta (mantisa) data kao decimalni broj,

E – Eksponent dat kao decimalni broj.

Page 19: a3 (2)

Primjer: Dat je podatak (0x3FD5 5555 5555 5555). Prikazati taj podatak kao double i izračunati njegovu decimalnu vrijednost.

• Binarna slika ovog podatka je: (3FD5 5555 5555 5555)16 =

(0011 1111 1101 0101 0101 0101 0101 0101 0101 0101 0101 0101

0101 0101 0101 0101)2

• Sada ćemo podatak raščlaniti na triplet (predznak, eksponent, signifikanta): 1 bit 11 bita 52 bita

(0) (01111111101) (0101 0101 0101 0101 0101 0101 0101 0101

0101 0101 0101 0101 0101)

• Signifikanti dodajemo sakriveni bit: • Signifikanti dodajemo sakriveni bit: (0) (01111111101) (10101 0101 0101 0101 0101 0101 0101 0101

0101 0101 0101 0101 0101)

• Najprije izračunamo vrijednost mantise u kao hex. broj (još ne u decimalnom

obliku, da zbog dijeljenja ne izgubimo preciznost)

(10101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101

01010101)2 = (0x15555555555555)16

• Sada izračunavamo vrijednost broja:

2-2 x (0x15555555555555 x 2

-52)

= 2-54 x 0x15555555555555 =

= 2-54 x 6004799503160661 = 0.33333.