adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/ssc-vm.pdf · mai multe...

61
Adunarea Înmulțirea Împărțirea 30.10.2019 1 Structura sistemelor de calcul (02-5)

Upload: others

Post on 02-Sep-2019

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Adunarea

Înmulțirea

Împărțirea

30.10.2019 1Structura sistemelor de calcul (02-5)

Page 2: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Operații cu numere în virgulă mobilăAdunarea și scăderea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Considerații de precizie

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 2Structura sistemelor de calcul (02-5)

Page 3: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi

Reprezentare în virgulă fixă Virgula binară plasată într-o poziție predefinită

Sunt necesare operații de scalare și deplasare

Reprezentare în virgulă mobilăFactorul de scală devine o parte a cuvântului din calculator

Poziția virgulei binare variază în mod automat

30.10.2019 3Structura sistemelor de calcul (02-5)

Page 4: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea în virgulă mobilă (VM) a numărului N:

N = (–1)s be ms – semn (0 sau 1)b – bază e – exponent: ordinul de mărime al număruluim – mantisă: valoarea exactă a numărului într-un anumit domeniu

Codificarea reprezentării: un șir de biți Exemplu de codificare

30.10.2019 4Structura sistemelor de calcul (02-5)

Page 5: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

31 30 23 22 0

S Exponent Mantisă

Reprezentare în mărime și semn

Nu există un câmp rezervat pentru baza b

De obicei, nu se reprezintă exponentul real exponent deplasat (caracteristică)

E = e + deplasament

Exponentul deplasat este întotdeauna pozitiv

30.10.2019 Structura sistemelor de calcul (02-5) 5

Page 6: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Exemplu: Exponent deplasat de 8 biți: E [0, 255]

Deplasament = 128 (80h)

Exponentul real: e [–128, +127]

Exponentul real este:Negativ dacă E < 128

Pozitiv dacă E > 128

Zero dacă E = 128

Exponentul este reprezentat în exces 128

30.10.2019 6Structura sistemelor de calcul (02-5)

Page 7: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Avantaje ale exponentului deplasat:Simplificarea operațiilor cu exponentul

Reprezentarea numărului zeroMantisa: cifre de 0 în toate pozițiile

Exponentul: poate avea, teoretic, orice valoare “zero impur” sau “zero pur”

“Zero pur”: reprezentarea în VM a numărului zero este aceeași cu reprezentarea numerelor întregi se pot utiliza aceleași circuite

30.10.2019 7Structura sistemelor de calcul (02-5)

Page 8: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Ordonarea numerelorNumerele pozitive în VM sunt ordonate în același fel ca și numerele întregi

Mărimea numerelor în VM poate fi comparată cu un comparator pentru numere întregi

Dezavantaj al exponenților deplasați:Adunarea exponenților este mai complicată deplasamentul trebuie scăzut din suma exponenților

30.10.2019 8Structura sistemelor de calcul (02-5)

Page 9: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentările în VM nu sunt unice: 0,1 100; 1 10-1; 0,01 101

Reprezentare sub formă normalizată:Bitul c.m.s. al mantisei este 1 Avantaje: operațiile sunt simplificate și precizia este crescută

Deoarece bitul c.m.s. este 1, acest bit nu este memorat bit ascuns Gama numerelor care pot fi reprezentate pe 32 de biți, întregi și în VM

30.10.2019 9Structura sistemelor de calcul (02-5)

Page 10: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 10Structura sistemelor de calcul (02-5)

Page 11: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

În unele cazuri, bitul ascuns se presupune poziționat la stânga virgulei binare 1,mDepășire superioară: exponentul depășește valoarea maximă (ex., e > 127) Depășire inferioară: exponentul are o valoare negativă prea mică (ex., e < –128) Unitățile de calcul în VM au mecanisme pentru detectarea, semnalarea și tratarea depășirilor

30.10.2019 11Structura sistemelor de calcul (02-5)

Page 12: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Alegerea unui format în VM: compromis între dimensiunea mantisei și cea a exponentului

Creșterea dimensiunii mantisei creșterea preciziei

Creșterea dimensiunii exponentului creșterea domeniului

Pentru a crește atât precizia, cât și domeniul: utilizarea unui număr mai mare de biți

Formate în precizie simplă și precizie dublă

30.10.2019 12Structura sistemelor de calcul (02-5)

Page 13: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Operații cu numere în virgulă mobilăAdunarea și scăderea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Considerații de precizie

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 13Structura sistemelor de calcul (02-5)

Page 14: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Au existat diferențe în modul de execuție a operațiilor în VM la diferite familii de calculatoare Societatea de Calculatoare a IEEE a elaborat un standard pentru reprezentarea numerelor în VM IEEE 754-1985

Revizia curentă: IEEE 754-2008

Majoritatea unităților de calcul în VM se conformează acestui standard

30.10.2019 14Structura sistemelor de calcul (02-5)

Page 15: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Specifică formate și metode pentru operații în VM la sistemele de calcul

Definește condiții de excepție și tratarea acestor condiții

Scopul: calcule în VM cu aceleași rezultate Procesarea prin hardware, software sau o combinație a acestora

Erori raportate într-un mod consecvent

30.10.2019 15Structura sistemelor de calcul (02-5)

Page 16: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Standardul specifică: Formate pentru operații aritmetice cu date binare și zecimale în VMFormate pentru interschimbarea datelorOperații de bază în VMConversii între: diferite formate în VM; formate întregi și în VM; formate în VM și reprezentări externe (șiruri de caractere) Reguli de rotunjireExcepții și tratarea acestora

30.10.2019 16Structura sistemelor de calcul (02-5)

Page 17: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea mantisei este numită significand în standardul IEEE Formate de bază

Trei formate binare (32, 64 și 128 biți) Două formate zecimale (64 și 128 biți) O implementare conformă trebuie să implementeze cel puțin unul din formatele de bază

Inițializare, operații, conversii, citire și scriere utilizând o codificare definită

30.10.2019 17Structura sistemelor de calcul (02-5)

Page 18: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Formate cu precizie extinsăExtind formatele de bază: mai multe cifre ale mantisei, domeniu mai larg al exponentului

Formate cu precizie extensibilăLungimea mantisei și domeniul exponentului sunt definite de utilizator

Implementarea formatelor cu precizie extinsă și extensibilă este opționalăCodificarea: dependentă de implementare

30.10.2019 18Structura sistemelor de calcul (02-5)

Page 19: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Parametrii formatelor în VMDetermină setul finit de numere în VM care poate fi reprezentat cu un format

b – baza (2 sau 10)

p – precizia (numărul de cifre ale mantisei)

emax – exponentul real maxim

emin – exponentul real minim

emin = 1 – emax pentru toate formatele

30.10.2019 19Structura sistemelor de calcul (02-5)

Page 20: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Format binary32 binary64 binary128 decimal64 decimal128

NumePrecizie simplă

Precizie dublă

Precizie cvadruplă

b 2 2 2 10 10

p 23+1 52+1 112+1 16 34

emin -126 -1022 -16382 -383 -6143

emax 127 1023 16383 384 6144

Deplasament 127 1023 16383 398 6176

30.10.2019 20Structura sistemelor de calcul (02-5)

Page 21: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Formatele binare cu precizie simplă, precizie dublă și precizie cvadruplă

30.10.2019 Structura sistemelor de calcul (02-5) 21

Page 22: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Pentru formatele binare:m = 1,Fracție (1,0 m 2,0)

Valoarea unui număr într-un format binar:NS = (–1)s 2E-127 m ND = (–1)s 2E-1023 mNQ = (–1)s 2E-16383 m

Gama numerelor reprezentabilePrecizie dublă: 2,23×10-308 .. 1,79×10308

Precizie cvadruplă: 3,37×10-4932 .. 1,18×104932

30.10.2019 22Structura sistemelor de calcul (02-5)

Page 23: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Exemplul 2.5Reprezentarea binară a numărului 0,75 în precizie simplă

0,75 = 0,112 = 0,11×20 = 1,1×21

Exponentul real: e = 1

Exponentul deplasat: E = e+127 = 1+127 = 126 = 7E16 = 0111 11102

Reprezentarea numărului 0,75:

30.10.2019 23Structura sistemelor de calcul (02-5)

31 30 23 22 0

1 0111 1110 1000 0000 0000 0000 0000 000

Page 24: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Exemplul 2.6Numărul zecimal corespunzător cuvântului următor în formatul cu precizie simplă:

S = 1

E = 8116 = 129; e = E – 127 = 129 – 127 = 2

Fracție = 1×22 = 0,25; m = 1,25

N = (–1)1 × 1,25 × 22 = –1,25 x 4 = –5,0

30.10.2019 24Structura sistemelor de calcul (02-5)

31 30 23 22 0

1 1000 0001 0100 0000 0000 0000 0000 000

Page 25: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Standardul permite reprezentarea unor valori speciale

Pentru acestea sunt rezervate valoarea minimă și cea maximă a exponentului

Valoarea zero E = 0, Fracție = 0

Două reprezentări pentru valoarea 0: +0, -0

Bitul ascuns de la stânga virgulei binare este implicit 0 în loc de 1

30.10.2019 25Structura sistemelor de calcul (02-5)

Page 26: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Numere nenormalizate“Subnormal” (“denormal”)

E = 0; Fracție 0; bitul ascuns este 0

Un număr nenormalizat este generat prin tehnica numită depășire inferioară graduală

Exemplu: Format cu precizie simplă exponentul real minim este –126

Rezultatul necesită un exponent egal cu –129 pentru a se obține un număr normalizat

30.10.2019 26Structura sistemelor de calcul (02-5)

Page 27: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Mantisa este deplasată la dreapta și exponentul este incrementat

Operație S Exponent Mantisă

Rezultat normalizat 0 -129 1,01011100000…0

Deplasare mantisă, e++ 0 -128 0,10101110000…0

Deplasare mantisă, e++ 0 -127 0,01010111000…0

Deplasare mantisă, e++ 0 -126 0,00101011100…0

Rezultat nenormalizat 0 -126 0,00101011100…0

30.10.2019 Structura sistemelor de calcul (02-5) 27

Page 28: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Valoarea infinitE = valoarea maximă pentru formatul utilizat, Fracție = 0

Două reprezentări pentru infinit: +, –

Valoarea infinit se poate utiliza ca operand:

+ n = ; n / = 0 ; n / 0 =

Utilizatorul poate decide dacă va trata depășirea superioară ca o condiție de eroare

30.10.2019 28Structura sistemelor de calcul (02-5)

Page 29: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

NaN (Not a Number) S-a prevăzut pentru indicarea unor excepții

Operații nedefinite: /, – , 0, 0/, 0/0

Extragerea rădăcinii pătrate dintr-un număr negativ

E = valoarea maximă, Fracție 0

Două tipuri de valori NaN:qNaN: nu se semnalează o excepție (“quiet” NaN)

sNaN: este semnalată o excepție (“signaling” NaN)

Atunci când argumentul unei operații este NaN, rezultatul trebuie să fie NaN

30.10.2019 29Structura sistemelor de calcul (02-5)

Page 30: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Formate zecimalePrevăzute pentru aplicații comerciale

Un număr poate avea reprezentări multiple sunt admise zerouri în pozițiile c.m.s. ale mantisei

Cohortă: set de reprezentări ale unui numărMembrii unei cohorte se pot deosebi între ei

Operațiile au exponenți preferați pentru rezultatele lor

Se păstrează alinierea virgulei zecimale 30.10.2019 30Structura sistemelor de calcul (02-5)

Page 31: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Excepții Depășire inferioară

Depășire superioară

Împărțire la zero

Rezultat inexact: rezultatul trebuie rotunjit

Operație invalidă: apare în cazul unor operații ca 0/0 sau –

Implicit, la apariția unei excepții este setat un indicator și calculele continuă

30.10.2019 31Structura sistemelor de calcul (02-5)

Page 32: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Avantaje ale standardului IEEE 754:Facilitează scrierea unor programe portabileDefinește condiții pentru scrierea programelor reproductibile produc același rezultat cu diferite implementări ale unui limbaj

Dezavantaje:Conține specificații opționaleImplementare lentă a depășirii inferioare graduale comparativ cu setarea la zeroNu se specifică aritmetica pentru valori complexe

30.10.2019 32Structura sistemelor de calcul (02-5)

Page 33: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Adunarea și scăderea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Considerații de precizie

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 33Structura sistemelor de calcul (02-5)

Page 34: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Considerăm numerele în VM:X = bEx mX

Y = bEy my

Operațiile aritmetice elementare

Operație Rezultat

X + Y bEy (bEx-Ey mx + my), Ex < Ey

X – Y bEy (bEx-Ey mx – my), Ex < Ey

X Y bEx+Ey (mx my)

X Y bEx-Ey (mx my)

30.10.2019 Structura sistemelor de calcul (02-5) 34

Page 35: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Considerații de precizie

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 35Structura sistemelor de calcul (02-5)

Page 36: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Pentru adunare sau scădere, trebuie să se realizeze egalizarea exponenților numerelor

Compararea mărimii exponenților Alinierea mantisei numărului cu exponentul mai mic

Etapele algoritmului Alinierea mantiselorAdunarea sau scăderea mantiselorNormalizarea rezultatuluiRotunjirea rezultatului

30.10.2019 36Structura sistemelor de calcul (02-5)

Page 37: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 37Structura sistemelor de calcul (02-5)

Page 38: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 38Structura sistemelor de calcul (02-5)

Page 39: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 39Structura sistemelor de calcul (02-5)

Page 40: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Adunarea și scăderea în virgulă mobilă

Considerații de precizie

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 40Structura sistemelor de calcul (02-5)

Page 41: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 41Structura sistemelor de calcul (02-5)

Page 42: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 42Structura sistemelor de calcul (02-5)

Page 43: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Adunarea și scăderea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Circuite pipeline pentru operații în virgulă mobilă

30.10.2019 43Structura sistemelor de calcul (02-5)

Page 44: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Numerele în VM sunt aproximări ale unor numere reale pe care nu le pot reprezenta exact

Există o infinitate de numere reale într-un anumit interval

Este necesară o metodă de rotunjire

Pentru executarea cu acuratețe a operațiilor aritmetice, circuitele trebuie să utilizeze cifre suplimentare

30.10.2019 44Structura sistemelor de calcul (02-5)

Page 45: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Fie p numărul corespunzător de cifre ale mantisei pentru o precizie dată

Cifre de gardă gSunt plasate la dreapta primelor p cifre ale mantisei pentru a evita pierderea cifrelor

Cifre de rotunjire rDacă rezultatul este normalizat, dar există cifre diferite de zero la dreapta mantisei, numărul trebuie rotunjit

30.10.2019 45Structura sistemelor de calcul (02-5)

Page 46: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Sunt plasate la dreapta cifrelor de gardă

După deplasarea la stânga a rezultatului pentru normalizare, acesta poate fi rotunjit

Moduri de rotunjire specificate de standardul IEEE 754

Rotunjire spre plus infinit (rotunjire în sus)

Rotunjire spre minus infinit (rotunjire în jos)

Rotunjire spre zero (trunchiere)

Rotunjire la cel mai apropiat număr par30.10.2019 46Structura sistemelor de calcul (02-5)

Page 47: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Ultimul mod: prevăzut pentru situațiile în care numărul real se află exact la jumătatea intervalului dintre două reprezentări în VM

Dacă bitul c.m.p.s. este impar, se adună 1

Dacă bitul este par, numărul este trunchiat

Pentru a se obține o rotunjire corectă în ultimul caz, este necesar un alt tip de cifră suplimentară bit de colectare s (sticky bit)

Este setat dacă există biți 0 la dreapta bitului r

30.10.2019 47Structura sistemelor de calcul (02-5)

Page 48: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Pentru operațiile zecimale este specificat un mod de rotunjire suplimentar

Necesar pentru a efectua rotunjirea în același mod ca și la calculele financiare

Rotunjire la cel mai apropiat număr, cu îndepărtare de la zero

Dacă numărul real se află exact la jumătatea intervalului dintre două reprezentări în VM, este rotunjit la valoarea cea mai apropiată cu mărimea mai mare

30.10.2019 48Structura sistemelor de calcul (02-5)

Page 49: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentarea numerelor în virgulă mobilă

Standardul IEEE 754 pentru reprezentarea în virgulă mobilă

Operații cu numere în virgulă mobilăAdunarea și scăderea în virgulă mobilă

Înmulțirea și împărțirea în virgulă mobilă

Considerații de precizie

30.10.2019 49Structura sistemelor de calcul (02-5)

Page 50: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Operațiile în VM pot fi implementate printr-un circuit pipeline

Operațiile pot fi descompuse

Exemplu: Adunarea a două numere normalizate în virgulă mobilă, X și Y

Compararea exponenților

Alinierea mantiselor

Adunarea mantiselor

Normalizarea rezultatului30.10.2019 50Structura sistemelor de calcul (02-5)

Page 51: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Sumator în VM cu patru etajeMantisa numărului cu exponentul mai mic (XM) se deplasează la dreapta

Noua mantisă este X'M (X'M, YE) = (XM, XE)

30.10.2019 Structura sistemelor de calcul (02-5) 51

Page 52: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Etape de proiectare pentru un circuit aritmetic pipeline:

Găsirea unui algoritm secvențial cu mai multe etape etapele trebuie să fie echilibratePlasarea unor registre buffer între etaje

Exemplu: Unitatea de adunare în VM a calculatorului IBM System/360 Model 91

Versiunea fără utilizarea tehnicii pipelineVersiunea pipeline

30.10.2019 52Structura sistemelor de calcul (02-5)

Page 53: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Formatul în VM al familiei IBM System/360Numere de 32 sau 64 de biți

Bitul de semn S

Exponentul E de 7 biți: întreg în codul exces 64

Mantisa M de 24 sau 56 de biți

Nu există un bit ascuns

Baza reprezentării este 16

Nu există formate echivalente ale valorilor NaN, infinit și denormalizate

30.10.2019 53Structura sistemelor de calcul (02-5)

Page 54: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 54Structura sistemelor de calcul (02-5)

Page 55: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 55Structura sistemelor de calcul (02-5)

Page 56: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

30.10.2019 56Structura sistemelor de calcul (02-5)

Page 57: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Pentru numere fracționare, este avantajoasă reprezentarea în virgulă mobilă (VM)

Reprezentarea în VM cu exponent deplasat prezintă mai multe avantaje

Standardul IEEE 754 a fost elaborat pentru a facilita portabilitatea programelor

Permite obținerea acelorași rezultate, indiferent de implementare

Definește formate de bază (binare, zecimale), cu precizie extinsă și cu precizie extensibilă

30.10.2019 57Structura sistemelor de calcul (02-5)

Page 58: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Definește reprezentarea unor valori speciale: zero, infinit, NaN, numere nenormalizate

Adunarea și scăderea în VM necesită alinierea mantiselor (egalizarea exponenților)

Pentru creșterea preciziei, circuitele aritmetice în VM trebuie să utilizeze cifre suplimentare: de gardă, de rotunjire, de colectare

De obicei, pentru implementarea circuitelor aritmetice în VM se utilizează tehnica pipeline

Sunt plasate registre buffer între etajele circuitului

30.10.2019 58Structura sistemelor de calcul (02-5)

Page 59: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Reprezentare în VM cu exponent deplasat

Reprezentare normalizată în VM

Formate specificate de standardul IEEE 754 pentru numere în VM

Valori speciale specificate de standardul IEEE 754 pentru numere în VM

Numere nenormalizate specificate de standardul IEEE 754 pentru numere în VM

Tehnica de depășire inferioară graduală

Valoarea specială NaN30.10.2019 59Structura sistemelor de calcul (02-5)

Page 60: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

Excepții specificate de standardul IEEE 754 pentru numere în VM

Avantaje/dezavantaje ale standardului IEEE 754

Algoritmul de adunare/scădere în VM

Algoritmul de înmulțire/împărțire în VM

Cifre de gardă și de rotunjire

Moduri de rotunjire specificate de standardul IEEE 754 pentru numere în VM

Schema bloc a unui sumator pipeline în VM

30.10.2019 60Structura sistemelor de calcul (02-5)

Page 61: Adunarea - users.utcluj.rousers.utcluj.ro/~baruch/media/ssc/curs/SSC-VM.pdf · Mai multe posibilități pentru reprezentarea valorilor care nu sunt întregi Reprezentare în virgulă

1. Care sunt avantajele reprezentării în VM cu exponent deplasat?

2. Ce este depășirea inferioară graduală?3. Care sunt excepțiile specificate de

standardul IEEE 754?4. Cum se realizează egalizarea exponenților

pentru adunarea și scăderea în VM?5. Ce sunt cifrele de gardă și cifrele de

rotunjire?

30.10.2019 61Structura sistemelor de calcul (02-5)