SZA II 03 ALU Osszeadás Kivonas

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

Pannon Egyetem

Villamosmérnöki és Információs Tanszék

Számítógép Architektúrák II.


(MIVIB344ZV)

3. előadás: Aritmetikai műveletvégző egységek –


összeadás, kivonás

Előadó: Dr. Vörösházi Zsolt


voroshazi.zsolt@mik.uni-pannon.hu
Jegyzetek, segédanyagok:
 Könyvfejezetek:
 http://www.virt.uni-pannon.hu
→ Oktatás →
Tantárgyak → Számítógép Architektúrák II.
 (chapter03.pdf)

 Fóliák, óravázlatok .ppt (.pdf)


 Feltöltésük folyamatosan

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

IC: ‘181 ALU 4-bites (74LS181) 4-bites ALU szimbolikus rajza 6


ALU működését leíró függvénytáblázat
(egy lehetséges működés, a funkciók bővíthetők):
Művelet kiválasztás: Művelet: Megvalósított függvény:
S2 S1 S0 Cin
0 0 0 0 F=A ‘A’ átvitele
0 0 0 1 F=A+1 ‘A’ értékének növelése 1-el
(increment)
0 0 1 0 F=A+B Összeadás
0 0 1 1 F=A+B+1 Összeadás carry
figyelembevételével
0 1 0 0 F = A+ B A + 1’s komplemens B
0 1 0 1 F = A + B +1 Kivonás = 2’s összeadás!
0 1 1 0 F=A-1 ‘A’ értékének csökkentése 1-el
(decrement)
0 1 1 1 F=B ‘B’ átvitele
1 0 0 x F = A∧ B AND
1 0 1 x F = A∨ B OR
1 1 0 x F = A⊕ B XOR
1 1 1 x F=A ‘A’ negáltja (NOT A)
7
* Forrás: Könyv függeléke (appendix)
ALU felépítése:
Carry In
Carry Out
Ai
Aritmetikai
Bi Egység
(+,*,-,/)
Eredmény
0
(Fi)
MUX
1

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

helyiértéken legyenek) < Select


Select
& Align
 Legyen: 0<B<C Exponent
Compare
 B → C vagyis |EB–EC|
Add / Substract (ALU)
pozícióval jobbra

igazítjuk az MB
mantisszát, ez Exponent
Post Normalization
változás az Adjust
exponensben is
Result Exponent
 Kivonás! (ALU) Result Mantissa

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

Nem kezeli a Cin-t !

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

Kimeneti Cout = Ai ⋅ Bi + Ai ⋅Cin + Bi ⋅Cin Si = Ai ⊕Bi ⊕Cin 18


fgv-ei:
c.) Átvitelkezelő összeadó –
Ripple Carry Adder (RCA)
 Példa: 6-bites RCA: [5..0] (LSB Cin = GND!)

A5 B5 Cin A4 B4 Cin A3 B3 Cin A2 B2 Cin A1 B1 Cin A0 B0 Cin GND

FA5 FA4 FA3 FA2 FA1 FA0

Cout S5 Cout S4 Cout S3 Cout S2 Cout S1 Cout S0

MSB LSB

 Számítási időszükséglet (RCA):


T(RCA) = N*T(FA) = N*(2*G) = 12 G (6-bites RCA esetén)
ahol a min. 2G az 1-bites FA kapukésleltetése ([ns], [ps])

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

LACG: Look Ahead Carry Generator egy b bites ALU-hoz kapcsolódik,


mindenegyes állapotban a Cin generálásáért felel a CP és CG (LACA-tól) érkező
jeleknek megfelelően („LACG looks at CP and CG from adders”).
N-bites LACA számítási időszükséglete: T = 2 + 4 × ( log ( N ) − 1)
LACA  b 
ahol N: bitek száma, b: LACG bitszélessége (hány LACA-hoz tartozik egy LACG)
20
Megjegyzés: LACA – CG átírása XOR
kapcsolatra (nem triviális forma)
 CG előállítása: alkalmazott másik érvényes
forma a XOR kapcsolattal megadott kifejezés
igazságtáblázat
Ai Bi Cin Cout Sumi Karnaugh
0 0 0 0 0 tábla:
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
Kimeneti
1 0 1 1 0 fgv:
1 1 0 1 0 Cout = Ai ⋅ Bi ⋅ Cin + Ai ⋅ Bi ⋅ Cin + Ai ⋅ Bi =
1 1 1 1 1

= 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

 Behelyettesítések: adott Ci -t → a Ci+1 –be

 Magasabb b-bites LACG hierarchia szintek felé GP


(group propagate) és GG (group generate) számítása:
23
Példa: 4x16-bites LACA
 Legyen b=64 (LACG), és N=4x16 (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 64 (64)  − 1) = 2
14243
1 24
64-bites (16×4) LACA összeadó

TLACA = 2 + 4 × (  log 4 (64)  − 1) = 10


14243
 Komponensek: 3
 ‘182 = SN74LS181: N=4-bites ALU (összeadás)
 ‘181 = SN74LS182: b=4 bites LACG generátor 25
Kivonó áramkörök

26
Teljes kivonó - Full Subtractor (FS)

 FS: 1-bites Full Subtractor


Logikai kapcsolási rajz Bout-ra
igazságtáblázat szimbólum (F előállítása ugyanaz, mint FA-nál):
Xi Yi Bin Bout Fi Xi Yi Bin
X
0 0 0 0 0
0 0 1 1 1 Y
0 1 0 1 1 FS Bout
0 1 1 1 0 (Full
1 0 0 0 1 Subtractor)
1 0 1 0 0
1 1 0 0 0 Bin
1 1 1 1 1 Fi Bout TFS = min 2G
Bin Bin
Y Bin Y Bin
Y Y
Karnaugh X 00 01 11 10 X 00 01 11 10
táblái: 0 0 1 1 1 0 0 1 0 1
Bout: 0 1 3 2 Fi: 0 1 3 2

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)

 II. módszer: Kivonás visszavezetése az univerzálisan


teljes bináris összeadás segítségével (2’s komplemens
alak – korábban tanultuk):
 FA, RCA, vagy LACA Fi = Xi + 2' s comp(Yi) 28

You might also like