10 Aritmetické operace
Transkript
Struktura a architektura počítačů Aritmetické operace Pevná a pohyblivá řádová čárka České vysoké učení technické Fakulta elektrotechnická Ver.1.30 J. Zděnek / M. Chomát 2014 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) • Řádová čárka má vzhledem k řádové mřížce pevně definovanou pozici • Nejčastěji používané formáty (v doplňkovém kódu): • Integer (celá čísla) 1 0 i = 15 14 ... • Př. Integer16 n=15, m=0 • Fraction (čísla menší než 1) • Značení Fx.y nebo Qx.y, kde x je počet řádových pozic před řádovou čárkou (n+1), y pak počet pozic za řádovou čárkou (m) • Nejčastěji se používá formát F1.y, kdy před řádovou čárkou je pouze znaménkový bit (čísla v doplňkovém kódu) i = 0 -1 -2 ... -15 • Př. Fraction F1.15 n=0, m=15 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 2 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) – shrnutí: • Procesor řádovou čárku nesleduje (sledovat ji musí programátor) • Procesor pracuje pouze nad bitovými obrazci • Čísla bez znaménka (unsigned) jsou v přímém binárním kódu • Čísla se znaménkem (signed) jsou kódována v doplňkovém kódu (Twos’s Complement Code) (též dvojkový nebo druhý doplněk) • K výpočtu doplňkového kódu stačí operace NOT a +1 • Odčítání je možné nahradit přičtením čísla v doplňkovém kódu A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 3 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) - shrnutí • Instrukční soubor procesoru obsahuje vždy alespoň operace: • Sčítání, not, and, or, posuvy vlevo a vpravo • Pomocí těchto operací se ostatní operace (odčítání, násobení, dělení) dají sestavit. • Některé procesory mají přímo instrukce pro: • Přičtení 1, odečtení 1 (Increment, Decrement) • Odčítání, • Násobení, • Dělení, • Výpočet dvojkového doplňku (Negate, NEG), • … A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 4 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) – shrnutí: • Důležité: Význam příznakových bitů (Flags, PSW, Status) pro aritmetické operace: • Po aritmetických operacích (a některých dalších) se nastaví příznakové bity C, OV, AC, N, Z ve stavovém slově (Flags, PSW, Status) procesoru. Příznaky se použijí v dalších operacích: • Pro spojení operací přesahujících šířku slova ALU • V podmíněném větvení programu (podmíněné skoky), … • C (Carry) – indikuje přenos z nejvyššího řádu použitého slova, pří odčítání má význam výpůjčky (borrow) z vyššího řádu. • Používá se pro spojení operací sčítání a odčítání při šířce zpracovávaného slova větší než je šířka slova ALU. • Indikuje přeplnění formátu u čísel bez znaménka. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 5 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) – shrnutí: • Důležité: Význam příznakových bitů (Flags, PSW, Status) pro aritmetické operace: • OV (Overflow) – sleduje přenos z nejvyššího a nejbližšího nižšího řádu použitého slova. • Indikuje přeplnění formátu u čísel se znaménkem. • OV = Cs xor Cs-1 • AC (Auxiliary Carry)(též DC) – indikuje přenos mezi třetím a čtvrtým bitem slova (Některé procesory ho nemají). • Používá se pro dekadickou korekci pří počítání s binárně kódovanými desítkovými čísly (BCD - Binary Coded Decimal Numbers). A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 6 Aritmetické operace – pevná řádová čárka • Pevná řádová čárka (Fixed Point) – shrnutí: • Důležité: Význam příznakových bitů (FLAGs, PSW, Status) pro aritmetické operace: • Z (Zero) – indikuje, že výsledek předchozí operace ALU je nulový. • Z = 1 pokud je výsledek nula, jinak Z = 0 (tj. výsledek nebyl nula) • N (Negative) – sleduje hodnotu nejvyššího bitu použitého slova. • N = 1 pokud je výsledek operace záporné číslo (v doplňkovém kódu). • ALU nerozlišuje, zda programátor považuje zpracovávané hodnoty za číslo se znaménkem nebo bez znaménka. ALU nastaví vždy všechny příznakové bity dle jejich definice. Programátor pak musí zvolit pro další operace správné příznaky a ty testovat nebo jinak použít. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 7 pic18F Family ALU and Multiplier ORTHOGONAL INSTRUCTION SET DESIGN DATA MEMORY/ REGISTER FILE SPECIAL FUNCTION REGISTERS (SFR) MEMORY MAPPED INPUT/OUTPUT SPACE GENERAL PURPOSE REGISTERS (GPR) 8 8 ALU 8 8 8 8 8 16 8 WREG ACCUMULATOR PRODH MULTIPLIER (UNSIGNED) PRODL FLAGS STATUS ACCUMULATOR/REGISTER ORIENTED CPU A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 8 Výpočet dvojkového doplňku − C ( x) = NOT (C ( x)) + 1 Př: x = 610 − x = − 610 C ( x) = 0110 2 − C ( x) = ? Výpočet: NOT (C ( x)) = 10012 +1 − C ( x) = 1010 2 Kontrola: C ( x) = 0110 2 + (−C ( x)) = 1010 2 0 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 9 Sčítání – čísla bez znaménka (kladná) • Jednobitové sčítání (pravdivostní tabulka): D 0 1 2 3 4 5 6 7 • a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 ci 0 1 0 1 0 1 0 1 cs 0 0 0 1 0 1 1 1 s 0 1 1 0 1 0 0 1 Př. Vícebitové sčítání (předpoklad Ci=0): 241d = 1111 0001b 250d = 1111 1010b +7d = 0000 0111b +8d = 0000 1000b 248d = 1111 1000b 258d ≠ 0000 0010b Cs = 0 Cs = 1 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace Mimo formát: 10 Odečítání – čísla bez znaménka (kladná) • Jednobitové odčítání (pravdivostní tabulka) d i = a i − bi − ci • D ai bi ci cs di 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 Př. Vícebitové odčítání (předpoklad Ci=0, význam „borrow“): 243d = 1111 0011b –7d = 0000 0111b 236d = 1110 1100b (borrow) Cs = 0 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 11 Přeplnění (Overflow) – čísla se znaménkem • U čísel se znaménkem je přeplnění (Overflow), tj. výsledek je mimo formát, indikováno nastavením příznakového bitu OV (Overflow). • Bit OV je součástí stavového slova procesoru (PSW, Flags). • Logika bitu OV musí sledovat přenos z posledního a ještě předposledního bitu formátu. • • OV = Cs xor Cs-1 Odečítání pomocí dvojkového doplňku (Two’s Complement) • Tento způsob je použitý v počítači d = x − y = x + (− y ) = x + ( NOT ( y ) + 1) A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 12 Přeplnění (Overflow) – čísla se znaménkem • Př: Přeplnění z formátu (M=1000, zde formát +7,-8) 7d = 0 1 1 1b 4d = 0 1 0 0b –4d = 1 1 0 0b –7d = 1 0 0 1b 3d = 0 0 1 1b –4d = 1 1 0 0b 0d = 0 0 0 0b 7d = 0 1 1 1b x x Cs Cs-1 OV=0 –8d = 1 0 0 0b Cs Cs-1 OV=0 Cs Cs-1 OV=0 4d = 0 1 0 0b 6d = 0 1 1 0b –4d = 1 1 0 0b 4d = 0 1 0 0b 3d = 0 0 1 1b –5d = 1 0 1 1b 8d ≠ 1 0 0 0b 9d ≠ 1 0 0 1b –9d ≠ x Cs Cs-1 OV=1 x Cs Cs-1 OV=1 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 0 1 1 1b x Cs Cs-1 OV=1 13 Sčítání a odčítání – čísla se znaménkem • Př. Sčítání a odčítání 4bitovou sčítačkou ve dvojkovém doplňku 73d = 0100b 1001b 73d = 0100b 1001b +27d = 0001b 1011b –27d = 1110b 0101b Cs 100d = 1b Cs 0110 x x b Cs Cs-1 Cs 0b 0100b 46d = OV=0 0b Cs 0010b Cs Cs-1 0b 1110b OV=0 120d = 0111b 1000b –120d = 1000b 1000b +16d = 0001b 0000b –16d = 1111b 0000b Cs 136d ≠ 0b Cs 1000b x Cs Cs-1 0b 1000b Cs –136d ≠ OV=1 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 0b Cs 0b 0111b 1000b x Cs Cs-1 OV=1 14 Násobení – bez znaménka • V desítkové soustavě (připomenutí): 143 858 +5720 +28600 35178 • x 246 = 35178 ← 143 x 6.100 Zapisujeme přehledněji ← 143 x 2.102 (Viz následující strana) ← 143 x 4.101 ← součet Ve dvojkové soustavě (stejný princip): Př. 9d x 6d = 54d 1001 x 0110 = 0110110 0000 +10010 +100100 +0000000 0110110 ← 1001 x 0.20 ← 1001 x 1.21 ← 1001 x 1.22 ← 1001 x 0.23 Zapisujeme přehledněji (Viz následující strana) ← součet A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 15 Násobení – bez znaménka - postup • V desítkové soustavě (připomenutí): 143 858 +572 ← 143 x 6.100 ← 143 x 4.101 ← 143 x 2.102 +286 35178 • x 246 = 35178 ← součet Ve dvojkové soustavě (stejný princip): Př: 9d x 6d = 54d 1001 x 0110 = 0110110 0000 +1001 +1001 +0000 0110110 ← 1001 x 0.20 ← 1001 x 1.21 ← 1001 x 1.22 ← 1001 x 0.23 ← součet A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 16 Násobení – bez znaménka - algoritmus product = a x b, (8 x 8 = 16 bits) UMul UMulInit: add a 0 0 0 0 0 0 0 0 prod 0 0 0 0 0 0 0 0 b UMulNextCycle: prod count = 8 ? count = 0 no yes b yes ? LSB = 1 no prod add + prod shift 1 bit 0 count = count-1 prod product = a x b A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 17 Násobení – bez znaménka - příklad • Př. 4 x 4 = 8 bitů • Desítkově: a = 7, b = 4, p = 7 x 4 = 28 • Dvojkově: a = 0111b, b = 0100b, p = ? add 0111 0000 → prod 0000 0100 → 0000 + 1) prod 0000 0100 → shift logical right 2) prod 0000 0010 → shift logical right 3) prod 0000 0001 → add & shift logical right add 0111 0000 prod 0111 0001 prod + add prod 0011 1000 → shift logical right prod 0001 1100 = 28d Init a + 0000 b Step 4) A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 18 Násobení – bez znaménka - realizace ; ****************************************************************** ; Unsigned multiplication algorithm ; ; 8 x 8 = 16 bit ; ; a, b E (0, 255) ; ; inputs: addH, addL addH = a multiplicand, addL = 0 ; prodH, prodL prodH = 0, prodL = b multiplier ; ; outputs: prodH, prodL product ; ; affects: STATUS, WREG ; ;******************************************************************** #define #define #define #define BIT0 BIT7 F UMul_LOOP_CNT 0 7 1 9 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 19 Násobení – bez znaménka - realizace UMul: movlw UMul_LOOP_CNT movwf loopCtr UMulNextCycle: dcfsnz loopCtr bra UmExit UmTestLsb: btfsc prodL, BIT0 bra UmAdd bcf STATUS, C bra UmSar UmAdd: movff addL, WREG addwf prodL, F movff addH, WREG addwfc prodH, F bra UmSar UmSar: rrcf prodH rrcf prodL bra UMulNextCycle UmExit: return ; Preset loop counter ; Run loop 8 times ; LSB=1 ; Clear C = SLR only ; LSb=0 ; Add multiplicand to partial product ; Shift logical right, including C ; Shift partial product 1 bit right ; 16bit shift A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 20 Násobení – se znaménkem - postup • • Čísla v doplňkovém kódu (Two’s Complement) Př¨. 4 x 4 = 8 bitů • Desítkově: a = 3 b = -5, p = 3 x (-5) = -15 • Dvojkově: a = 0011b, b = 1011b, p = ? 0011 x 1011 = 1111 0001b → partial sum = 00000 00000 x sign extension (not carry) → 00011 + 000011 = 00011 + 000100 = 00000 + 000010 = xxxx x001 11101 – Last step → minus (+ two’s complement) 11110 xxxx xxx1 xxxx xx01 = 1111 0001b = -15d A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 21 Násobení – se znaménkem - postup • • Čísla v doplňkovém kódu (Two’s Complement) Př¨. 4 x 4 = 8 bitů • Desítkově: a = 3 b = 5, p = 3 x 5 = 15 • Dvojkově: a = 0011b, b = 0101b, p = ? 0011 x 0101 = 0000 1111b → partial sum = 00000 00000 x sign extension (not carry) → 00011 + 000011 = 00000 + 000001 = 00011 + 000011 = xxxx x111 00000 – Last step → minus (+ two’s complement) 00001 xxxx xxx1 xxxx xx11 = 0000 1111b = 15d A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 22 Násobení – se znaménkem - postup • • Čísla v doplňkovém kódu (Two’s Complement) Př. 4 x 4 = 8 bitů • Desítkově: a = -3 b = -5, p = (-3) x (-5) = 15 • Dvojkově: a = 1101b, b = 1011b, p = ? 1101 x 1011 = 0000 1111b → partial sum = 00000 00000 x sign extension (not carry) → 11101 + 111101 = 11101 + 111011 = 00000 + 111101 = xxxx x111 00011 – Last step → minus (+ two’s complement) 00001 xxxx xxx1 xxxx xx11 = 0000 1111b = 15d A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 23 Násobení – se znaménkem - algoritmus product = a x b, (8 x 8 = 16 bits) SMul SMulInit: add +a 0 0 0 0 0 0 0 0 –a 0 0 0 0 0 0 0 0 prod 0 0 0 0 0 0 0 0 b sub count = 7 SMulNextCycle: no ? count = 0 yes prod prod b b yes yes no ? LSB = 1 no prod prod add ? LSB = 1 + sub + prod prod shift 1 bit shift 1 bit count = count-1 prod A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace product = a x b 24 Násobení – se znaménkem - příklad • Př. 4 x 4 = 8 bitů • Desítkově: a = 3, b = -5, p = 3 x (-5) = -15 • Dvojkově: a = 0011b, b = 1101b, p = ? Init: add 0011 0000 → +a + 0000 sub 1101 0000 → –a + 0000 prod 0000 1011 → 0000 + b • Pokračování na dalším snímku A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 25 Násobení – se znaménkem - příklad Step 1) → add & shift arithm. right prod 0000 1011 add 0011 0000 prod 0011 1011 → shift arithm. right prod 0001 1101 → add & shift arithm. right add 0011 0000 prod 0100 1101 → shift arithm. right 3) prod 0010 0110 → shift arithm. right 4) prod 0001 0011 → sub & shift arithm. right sub 1101 0000 prod 1110 0011 2) (i.e. add –a) → shift arithm. right A7B14SAP Struktura a architektura Aritmetické operace prod počítačů 111110 -0001 = -15 d 26 Násobení – se znaménkem - realizace ; ****************************************************************** ; Signed multiplication algorithm ; ; 8 x 8 = 16 bit ; ; a, b E (-128,127) ; ; inputs: addH,addL addH = a multiplicand, addL = 0 ; subH,subL subH = -a multiplicand, subL = 0 ; prodH,prodL prodH = 0, prodL = b multiplier ; ; outputs: prodH,prodL product ; ; affects: STATUS, WREG ; ;******************************************************************** #define #define #define #define #define BIT0 BIT7 F SMul_LOOP_CNT SMul_LAST_CYCLE 0 7 1 9 1 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 27 Násobení – se znaménkem - realizace SMul: movlw SMul_LOOP_CNT ; Preset loop counter movwf loopCtr SMulNextCycle: dcfsnz loopCtr ; Run loop 8 times bra BmExit SmTestLsb: btfss prodL, BIT0 ;? multiply by 0 bra SmSar ; yes, shift only movlw SMul_LAST_CYCLE cpfsgt loopCtr ;?last cycle bra SmSub ; yes, subtract multiplicand bra SmAdd ; no, add multiplicand SmAdd: movff addL,WREG addwf prodL, F movff addH, WREG addwfc prodH, F movff addH, WREG bra SmSar A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 28 Násobení – se znaménkem - realizace SmSub: movff subL,WREG addwf prodL, F movff subH, WREG addwfc prodH, F movff subH, WREG bra SmSar SmSar: bsf STATUS, C btfss WREG, BIT7 bcf STATUS, C rrcf prodH rrcf prodL bra SMulNextCycle BmExit: return ; Extend correct sign ; preset sign ; ? number positive ; yes, clear sign ; shift arithmetic right 1 bit ; 16bit shift A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 29 Násobení 16 x 16 = 32 násobičkou 8 x 8 = 16 • Použití hardwarové násobičky 8 x 8 = 16 bitů k násobení čísel 16 x 16 = 32 bitů (zde příklad násobičky čísel bez znaménka) (m. 28 + r ) . (a . 28 + b) = m. a . 216 + r . a . 28 + m. b . 28 + r . b x = 16 m 0… 8 + r 0 8 8 32 16 a 0… 8 + b m.a 0 = 8 16 + r.a 8 16 + m.b 16 + r.b 16 32 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 30 Dělení bez znaménka • V desítkové soustavě (připomenutí): • Dělení beze zbytku 35178 / 143 = 246 ← 143 x 2.102 –286 ← podíl 657 ← 143 x 4.101 -572 858 -858 0 ← 143 x 6.102 ← zbytek A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 31 Dělení bez znaménka • V desítkové soustavě (připomenutí): • Dělení se zbytkem 78 –5 / 5 = 15 + 3/5 ← 5 x 1.101 ← podíl 28 -25 3 ← 5 x 5.100 ← zbytek po dělení A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 32 Dělení bez znaménka • Ve dvojkové soustavě (stejný princip): • Př. 78 / 5 = 15 + 3/5 01001110 / 0101 = 01111 + 0011/0101 ← podíl -0000 ← 0101 x 0.24 01001 -0101 ← 0101 x 1.23 01001 -0101 ← 0101 x 1.22 01001 -0101 ← 0101 x 1.21 01000 -0101 0011 ← 0101 x 1.20 ← zbytek po dělení A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 33 Aritmetické operace - chyby • Rozsah zobrazení čísel v počítači je omezený: • Velikostí registrů, velikostí paměti, … • Formát zobrazitelných čísel určuje použitá řádová mřížka (ř.m.) • ř.m. definuje nejvyšší (n) a nejnižší (-m) dvojkového čísla. • Při aritmetických operacích v dané ř.m. vznikají chyby: • Při přeplnění formátu směrem nahoru (přes n) vznikají neodstranitelné (hrubé) chyby. Pro správnou funkci je nutné řádovou mřížku rozšířit (zvětšit n). • Při přeplnění formátu směrem dolů (pod –m) dochází ke ztrátě přesnosti. Velikost chyby můžeme ovlivnit: • Rozšířením ř.m. směrem dolů (zvětšit m) • Způsobem zaokrouhlování výsledku. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 34 Aritmetické operace - zaokrouhlování • Způsoby zaokrouhlování při přeplnění formátu ř.m. směrem dolů (pod -m) • Preference většího čísla • 1,434 ≈ 1,43 • 1,435 ≈ 1,44 • Preference sudé číslice • 1,434 ≈ 1,43 • 1,435 ≈ 1,44 • 1,436 ≈ 1,44 • Zaokrouhlení dolů (oříznutí) • 1,435 ≈ 1,43 • Zaokrouhlení nahoru • 1,432 +0,01 =1,442 ≈ 1,44 A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 35 Pohyblivá řádová čárka • Čísla v pohyblivé řádové čárce (Floating Point) mají tvar: xz = m.ze • kde: • m – mantisa (mantissa, significant) • e – exponent (characteristic, exponent) • z – základ číselné soustavy • • • m – mantisa obsahuje informace o „hodnotě“ čísla. e - exponent obsahuje informace o pozici řádové čárky. K vyjádření m a e používáme kódy pro zobrazení záporných čísel. • Čísla v pevné řádové čárce mají značně omezený rozsah hodnot. Pro zvětšení rozsahu hodnot používáme formát pohyblivé řádové čárky. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 36 Pohyblivá řádová čárka • • V desítkové soustavě čísla v pohyblivé řádové čárce běžně používáme. V desítkové soustavě má pohyblivá řádová čárka formát: xd = ± | m | .10 ±|e | • Př. • +3,582 . 102 = 3,582 . 100 = 358 • +3,582 . 10-3 = 3,582 . 0,001 = 0,003582 • -2,47 . 101 = -2,47 . 10 = -24,7 • -2,47 . 10-1 = -2,47 . 0,1 = -0,247 • Ve dvojkové soustavě používá formát čísel v pohyblivé čárce stejné principy jako v soustavě desítkové. Kódování m (mantisy) a e (exponentu) je ale jiné. • V počítačích se používá několik různých formátů čísel v pohyblivé čárce. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 37 Pohyblivá řádová čárka – IEEE Std.754 • • Nejčastěji se používá formát pohyblivé řádové čárky podle normy ANSI/IEEE Standard 754 Formát čísla dle této normy má tvar: xd = (−1) s . 2 E − BIAS . m = (−1) s . 2e . m • • • • • • mantisa je kódovaná přímým kódem (Sign&Magnitude) s – znaménkový bit mantisy m – normalizovaný tvar absolutní hodnoty mantisy, m<2 m – je normalizovaná na tvar 1,xxx… , jedničku před řádovou čárkou pak není třeba uchovávat v paměti (ušetří se 1 bit pro zvýšení přesnosti). Takové jedničce se říká „skrytá“. e – exponent je kódovaný aditivním kódem (Biased Code) Formát dle IEEE 754 má dvě formy: • Single precision – celkem 32 bitů • Double precision – celkem 64 bitů A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 38 Pohyblivá řádová čárka – IEEE Std.754 • Hodnoty čísla xd ve formátu „Single Precision“ (32 bitů): • q – zlomková část mantisy (ostatní značení viz předchozí snímek) Komentář E q s xd 1 - 254 q 0/1 xd = (−1) s . 2 E −127 . (1 + q) Normalizovaný tvar 0 ≠0 0/1 xd = (−1) s . 2 −126 . q Denormalizovaný tvar 0 0 0 xd = 0 0 0 1 xd = 0 255 0 0 xd = + ∞ 255 0 1 xd = − ∞ 255 >0 0/1 xd = NaN A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace Not a Number 39 Pohyblivá řádová čárka – IEEE Std.754 • Dvě varianty formátu dle IEEE 754: Precision Memory • Sign Exponent Bias (K) Mantissa Single 32b 1b 8b 127 23b (24b) Double 64b 1b 11b 1023 52b (53b) Formát „Single Precision“ v paměti: 32 bits s Biased Exponent 31 30 Mantissa (Fractional part) 23 22 8 bits • 0 23 bits + implicit 1, Formát „Double Precision“ v paměti: 64 bits s Biased Exponent 63 62 Mantissa (Fractional part) 52 51 11 bits 0 52 bits + implicit 1, A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 40 Pohyblivá řádová čárka – IEEE Std.754 Př. Převeďte číslo 162,125d do formátu „Single precision“ IEEE 754. 1) Převod 162d do dvojkového formátu (postupným dělením 2) 162d = 10100010b 2) Převod 0,125d do dvojkového formátu (postupným násobením 2) 0,125d = 0,001b 3) Formát celého čísla 162,125d v binárním tvaru 162,125d = 10100010,001b 4) Normalizace (|m| < 2) 10100010,001 = 1,0100010001.27 = 1,0100010001.2111b tedy: e = 7d = 111b 5) Zápis čísla ve formátu „Single Precision“ dle IEEE 754 BIAS = 127, e = E – BIAS → E = e + BIAS = 7+127 = 134 = 10000110b 32 bits Implicit 1, 1 |0|10000110|01000100010000000000000| Exponent 8 bits Sign Mantissa 23 bits A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 41 Pohyblivá řádová čárka – aritmetické operace • Sčítání / odčítání • Srovnat exponenty a sečíst/odečíst mantisy. y ∀ x≥ y : a .2x ± b.2 = a .2x ± b.2 y ∀ x< y : a .2x ± b.2 = a .2 • • • • − x+ y+ x x− y+ y y = (a . ± b . 2 ± b . 2 = (a .2 − x+ y − y+ x ).2x ± b.).2 y Násobení • Sečíst exponenty, vynásobit mantisy. Dělení • Odečíst exponenty, vydělit mantisy. Porovnání • Srovnat exponenty, porovnat mantisy. Normalizace • Normalizovaný tvar vstupních operandů operace nezaručí normalizovaný tvar výsledku. • Normalizaci (úpravu výsledku do normalizovaného tvaru) je nutné provádět po každé operaci. A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 42 FPU platformy x86 • FPU (Floating Point Unit) některých platforem mají mimo základních operací (+, –, *, /) instrukce i pro další matematické operace. Např. FPU platformy x86 (tj. PC) vykonává v pohyblivé řádové čárce tyto operace: Basic operations : + add – subtract * multipoly / divide Konst : 1.0 log 2 e log10 2 2 x −1 y . log 2 x Functions : sin ( x) cos ( x) sin ( x), cos ( x) tg ( x) log e 2 y . log 2 ( x + 1) arctq ( x) log 2 10 π Functions : x=– x compare x Vztahy pro prepocet ( FPU neumi pocitat primo) : 10 x = 2 x . log 2(10) ex = 2 x . log 2(e) A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace yx =2 x . log 2( y ) 43 Struktura a architektura počítačů Aritmetické operace Pevná a pohyblivá řádová čárka KONEC České vysoké učení technické Fakulta elektrotechnická A7B14SAP Struktura a architektura počítačů 10 - Aritmetické operace 44
Podobné dokumenty
ovocnářská unie čr - Ovocnářské unie České republiky
vyžadují konzultaci metodiků, jsou zodpovězeny ještě tentýž den, nejpozději však do dvou
pracovních dnů. A co farmáře nyní nejvíce zajímá? V podstatě vše kolem jednotlivých
opatření Programu rozvoj...
TIBRUSKU TADY VÁM NESMÍ DOJÍT ENERGIE
Andy, stolař - "Pomocí mého nového bezuhlíkového modelu DCD790M2
Učte se matematiku anglicky
V dnešní době se klade poměrně velký důraz na znalost světových jazyků. Studenti
vysokých škol mají možnost studovat v zahraničí a stejně tak mají možnost zahraniční
studenti studovat v naší republ...
využití inteligentních nástrojů pro analýzu technologických dat
Integrace znamená, že data, která jsou ukládána do centrálního datového skladu, pocházejí z více
provozních systémů. Předmětová orientace vymezuje určitou pojmovou aparaturu pro okruh dat, která da...
Program přednášek
A7B14SAP „Struktura a architektura počítačů“
Zimní semestr 2015/2016
Přednášející: Ing.R. Havlíček, Ph.D.
Anotace: Předmět poskytuje základní informace o jednotkách číslicového počítače, jejich str...