10 Aritmetické operace

Komentáře

Transkript

10 Aritmetické operace
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

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

Více

TIBRUSKU TADY VÁM NESMÍ DOJÍT ENERGIE

TIBRUSKU TADY VÁM NESMÍ DOJÍT ENERGIE Andy, stolař - "Pomocí mého nového bezuhlíkového modelu DCD790M2

Více

Učte se matematiku anglicky

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

Více

využití inteligentních nástrojů pro analýzu technologických dat

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

Více

Program přednášek

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

Více