Professional Documents
Culture Documents
SZA II 03 ALU Osszeadás Kivonas
SZA II 03 ALU Osszeadás Kivonas
SZA II 03 ALU Osszeadás Kivonas
2
Ismétlés
Korai számítógépek teljesítményét főként
ballisztikus számításoknál (hadászatban)
Információ ábrázolás
Használt utasításkészlet (RISC vs. CISC)
Adatkezelő / műveletvégző egység: Alapvető ALU
(Aritmetikai és Logikai funkciók)
Univerzális / funkcionális teljesség
Aritmetikai operátorok: + → -,*,/ (alapműveletek)
Logikai operátorok:
NAND,NOR → NOT, AND, OR, XOR (AV), NXOR
(EQ) – mai CMOS VLSI technológia esetén
3
ALU felépítése
Operandus Operandus
Utasítások hatására a (Sm-S0) A (An-1-A0) B (Bn-1-B0)
„vezérlőjelek” jelölik ki a
végrehajtandó aritmetikai /
logikai műveletet.
További adatvonalak Műveleti
kapcsolódhatnak közvetlenül a Utasítások
(Sm-So) ALU
státusz regiszterhez, Aritmetikai /
amelyben fontos információkat
tárolunk: pl. Logikai Egység
zero bit
carry-in, carry-out átviteleket, Status Reg
előjel bitet (sign),
túlcsordulást (overflow), vagy
alulcsordulást (underflow) jelző Eredmény
biteket, (F2xn-1-F0)
Paritás, stb. 4
Státusz- (flag) jelzőbitek
Az aritmetikai műveletek eredményétől függően
hibajelzésre használatos jelzőbitek. Ezek
megváltozása az utasításkészletben előre
definiált utasítások végrehajtásától függ.
a.) Előjelbit (sign): 2’s komplemens (MSB)
b.) Átvitel kezelő bit (carry in/out): helyiértékes átvitel
c.) Alul / Túlcsordulás jelzőbit (underflow / overflow)
d.) Zero bit: kimeneten az eredmény 0-e?
Pl: 0-val való osztás!
(szorzásnál egyszerűsíthetőség – adatfüggés)
e.) Paritás bit: páros, páratlan
…
5
Példa: N=4-bites ALU felépítése és
működése
Két N=4-bites operandus (A, B)
Eredmény (F) bitszélessége:
N+(1 CarryOut) bit, ha +;-
2×N bites, ha *
H.értékes átvitel: CarryIn/ Out
S2: Aritmetikai/ logikai mód
választó (MUX)
S0, S1: művelet kiválasztó
(S2 értékétől függően
Aritmetikai vs. Logikai
Logikai
Egység
kiválasztó
S0
Művelet
S1
S2
Arit/Log mód kiválasztó 8
Lebegőpontos műveletvégző
egységek
9
Lebegőpontos műveletvégző
egységek
Probléma:
Mantissza igazítás → Exponens beállítás
Normalizálás, Utó-(Post) Normalizálás
(DEC-32, IEEE-32, IBM-32)
Műveletvégző elemek:
Összeadó (adder)-,
Kivonó (subtractor)-,
Szorzó (multiplier)-,
Osztó (divider) áramkörök.
10
a.) Lebegőpontos összeadó
EB −EC
Művelet: A= B+C = MB ×r + MC ×r = (MB ×r
EB EC
+ MC )×r EC
Komplex feladat: a
mantisszák hosszát
egyeztetni kell (MSB Exponent B Exponent C Mantissa B Mantissa C
bitek azonos
helyiértéken legyenek) EB-EC EC
Legyen: 0<B<C Select
< Select
B → C vagyis |EB–EC| Exponent
& Align
pozícióval jobbra Compare
igazítjuk az MB
mantisszát; ez változás Add / Substract (ALU)
az exponensben is +
ALU: Összeadás!:
Exponent
sign-magnitude Adjust
Post Normalization
formátumban
Végül minimális post-
normalizáció kell Result Exponent Result Mantissa
11
Példa: Lebegőpontos
összeadás (kivonás)
rb=2, IEEE-754 (bináris 32-bites rendszer):
A = B + C = 10.0001 + 1101.1 = //B < C//
(1.00001 × 2^1) + (1.1011 × 2^3) =
(0.0100001 × 2^3) + (1.1011 × 2^3) =
(0.0100001 + 1.1011) × 2^3 =
1.1111001 × 2^3 = A
(itt éppen nem kell post-normalizálás)
12
b.) Lebegőpontos kivonó
EB −EC
Művelet: A= B−C = MB ×r −MC ×r = (MB ×r
EB EC
−MC )×r EC
Komplex feladat: a
mantisszák hosszát Exponent B Exponent C Mantissa B Mantissa C
egyeztetni kell (MSB
bitek azonos EB-EC EC
13
c.) Lebegőpontos szorzó
EB +EC
Művelet: A= B×C = MB ×r ×MC ×r = (MB ×MC )×r
EB EC
A: szorzat
B: szorzandó Exponent B Exponent C Mantissa B Mantissa C
C: szorzó
EB+EC
Könnyű végrehajtani Exponent
Adder
Nincs szükség az Multiplier (ALU)
operandusok *
beállítására
Minimális post- Exponent
normalizációt kell csak Post Normalization
Adjust
végezni
ALU: szorzás! Result Exponent Result Mantissa
14
d.) Lebegőpontos osztó
Művelet: A = B / C = MB × rEB / MC × rEC = (MB / MC ) × rEB −EC
A: hányados
B: osztandó Exponent B Exponent C Mantissa B Mantissa C
C: osztó
EB-EC
Könnyű végrehajtani Exponent
Substracter
Nincs szükség az Divider (ALU)
operandusok /
beállítására
Minimális post- Exponent
normalizációt kell csak Post Normalization
Adjust
végezni
Osztás! (ALU) Result Exponent Result Mantissa
15
Összeadó áramkörök
16
a.) Fél-összeadó – Half Adder
HA: 1-bites Half Adder THA = 1G
igazságtáblázat szimbólum
Ai Bi
Ai Bi Cout Si
0 0 0 0
0 1 0 1 HA
1 0 0 1 (Half Adder)
1 1 1 0
A + B = Cout | S Si Cout
1 bites FA felépítése 2 db HA segítségével:
B B B
Karnaugh
B
A 0 1 A 0 1
táblái: 0 0 0 0 0 1
Cout: 0 1
Si: 0 1
A 1 0 1 A 1 1 0
2 3 2 3
Kimeneti
fgv-ei:
Cout = Ai ⋅ Bi Si = Ai ⊕Bi
17
b.) Teljes összeadó – Full Adder
Ez a FA egy lehetséges CMOS
kapcsolási rajza: (itt TFA = 3G !)
FA: 1-bites Full Adder A
XOR1
igazságtáblázat szimbólum B
XOR2
Ai Bi Cin Cout Sumi Ai Bi Cin
Cin S
0 0 0 0 0
0 0 1 0 1
NAND2
0 1 0 0 1
FA NAND3
0 1 1 1 0 NAND1
(Full Adder)
1 0 0 0 1 Cout
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1 Si Cout A + B + Cin = Cout | S
Cin Cin
B Cin B Cin
Karnaugh A 00 01 11
B
10 A 00 01 11
B
10
táblái: 0 0 1 0
Cout: 0 0 0 1 0 1
0 1 3 2 Si: 0 1 3 2
A 1 0 1 1 1 A 1 1 0 1 0
4 5 7 6 4 5 7 6
MSB LSB
19
d.) LACA: Look Ahead Carry Adder
Átvitelgyorsító összeadó
Képlet (FA) átalakításából kapjuk:
Cout = Ai ⋅ Bi + Ai ⋅ Cin + Bi ⋅ Cin
Ai ⋅ Bi + Cin ⋅ ( Ai + Bi ) = CG + Cin ⋅ CP
{ 1 424 3
CarryGenerate Carry Pr opagate
Si = Ai ⊕ Bi ⊕Cin
= Ai ⋅ Bi + Cin ⋅ (Ai ⊕ Bi ) =
= CG + Cin ⋅ CP
21
Példa: 4-bites LACA
Legyen b=4 (LACG), és N=4 (LACA). Áramkör felépítése, és
időszükséglete?
MSB LSB
GND = ‘0’
LACG
Magasabb
LACG
szintek felé
TLACA = 2 + 4 × ( log 4 (4) − 1) = 2
1424 3 22
1
Példa (folyt.): 4-bites LACA számítási
műveletei (carry terjesztés)
LSB → MSB felé az összeadások
GND = ‘0’
LACG
Magasabb
LACG
szintek felé
TLACA = 2 + 4 × ( log 64 (64) − 1) = 2
14243
1 24
64-bites (16×4) LACA összeadó
26
Teljes kivonó - Full Subtractor (FS)
X 1 0 0 1 0 X 1 1 0 1 0
4 5 7 6 4 5 7 6
Kimeneti
fgv-ei: Bout = Xi ⋅Yi + Xi ⋅ Bin +Yi ⋅ Bin Fi = Xi ⊕Yi ⊕Bin 27
Bináris kivonás módszerei
I. módszer:
Bináris kivonás FS segítségével ** **** *
Xi – Yi → Fi
0 − 0 → 0 100000000 256
0 − 1 → 1, borrow bit ‘1’
- 01001100
1 − 0 → 1
- 76
1 − 1 → 0 101 1 0100 180
*: azt jelöli, amikor az adott helyiértéken ‘1’-et kell kivonni még az
Xi értékéből (borrow from Xi)