24/9/23 Slide! Per Lindgren! EISLAB! Per.Lindgren@ltu.e! Digitl Aritmetik Unigned Integer Signed Integer" Originl Slide! Ingo Snder! KTH/ICT/ES! ingo@kth.e! Tlrepreenttioner" Ett tl kn repreenter inärt på mång ätt.! De vnligte tltypern om kll repreenter är:! Heltl, poitiv heltl (eng. integer)! ett-komplementet, två-komplementet, ign-mgnitude! Deciml tl med fix tl-område! Fix-tl (eng. fixed-point)! Deciml tl i olik tlområden! Flyt-tl (eng. floting-point)! 2! Poitiv Heltl" Poitiv Heltl: 2 6 2 5 2 4 2 3 2 2 2 2 = *2 6 + *2 5 + *2 3 + *2 2 + *2 = 9 Crry-out = reulttet OK 5 + 2 + 7 C 4 = 3! 4! Heltl" Crry-out = reulttet fel 7 +4 + 2 c 4 = c 3 = Poitiv Heltl: 2 6 2 5 2 4 2 3 2 2 2 2 = *2 6 + *2 5 + *2 3 + *2 2 + *2 = 9 Men hur repreenterr vi negtiv tl??? 5! 6!
24/9/23 X x XR 2 n- - 2 n- - -2 n- 2 n- -2 2 n -2-2 n - Två-komplementet" Tlområde: -(2 n- )..+(2 n- -) Deciml komplementering (2 iffror): - 49 2-49=5 Binär komplementering (5 iffor): -5 2 5-5=7 Vid två-komplementering inverter ingående digit, och tlet lägg till, dv (d d ) i en repreenter om (--d )(--d )+. Två-komplementet hr den egenkpen tt ddition och utrktion enkelt kn utför. Tlkonvertering Poitiv till Negtiv tl" +5 inverter Lägg till ett Tecken-it -5 Fördel: En noll. Nckdel: Rik för overflow 7! 8! Tlkonvertering Negtiv till Poitiv tl" Tlkonvertering Poitiv till Negtiv tl" -5 +9 Inverter Lägg till ett +5! Tlkonvertering Negtiv till Poitiv tl" Heltl (2-komplement)" -9 Repreenttion med 2-komplement! B= N- N-2... där i {,} N- N-2... Tecken-Bit (Sign Bit) Decimlvärde D(B)=- N- 2 N- + N-2 2 N-2 +...+ 2 + 2 2! 2
24/9/23 Heltl: (2-komplement)" Sign-extenion" - Heltl: -2 6 2 5 2 4 2 3 2 2 2 2 = -*2 6 + *2 5 +*2 3 + *2 2 + *2 = - 45-2 2 Teckeniten hr negtiv vikt -2 n- 2 n-2 2 7 2 6 2 5 2 4 2 3 2 2 2 2-3 3-4 Kopier teckeniten för tt utvidg tlområdet genom tt nvänd fler itr! 3! 4! Addition v två heltl" X x XR 2 n- - 2 n- - -2 n- 2 n- -2 2 n -2-2 n - X R =x mod 2 n Y R =y mod 2 n ADD(x,y)= x+y mod 2 n = X R +Y R mod 2 n + + (+2) + Overflow uppkommer om dditionen hmnr utnför tlområdet 5! 6! + (+2) + + (-2) + (-3) (+3) Crry-iten kn ignorer! 7! 8! 3
24/9/23 Overflow" + (-2) (-7) + Extr crry-iten kn ignorer! + (-6) + Overflow teckeniten tämmer inte överen med ingående tl... 9! 2! Overflow (2)" + (+6) + Overflow teckeniten tämmer inte överen med ingående tl... För 4-it-tl! Overflow om 3 = 3 och 3 r 3!! Logik för tt detekter overflow" Overflow = 3 3 r 3 + 3 3 r 3 Overflow = n n r n + n n r n 2! 22! Sutrktion" Sutrktion" Hur gör mn utrktionen på ett enkelt ätt? A - B = A +(-B)= A +(2 complement B) = A +(NOT B) + - (+2) (+3) -???? + I tället för utrktion, gör en ddition med 2-komplementet! 23! 24! 4
24/9/23 Sutrktion" Sutrktion" - (+2) - + - (-2) - + (-7)???????? 25! 26! Sutrktion" Tvåkomplementrepreenttion, en mmnfttning" - (-2) (-3) -???? + Område: -2 N- upp till 2 N-! Negtion: Inverter vrje it (det oolk komplementet), dder edn.! Expnion v itlängd: Lägg till ytterligre it poitioner till vänter om teckeniten, med mm värde om teckeniten.! Overflow-regeln: Om två nummer med mm tecken dder, å hr det livit overflow om reulttet hr ett mottt tecken.! Sutrktionregeln: För tt utrher B från A, t två-komplementet v B och dder till A." 27! 28! (Alterntivt ätt tt detekter overflow)" + (+2) + (+9) c 4 = c 3 = (Alterntivt ätt tt detekter overflow)" (-7) + (+2) + c 4 = c 3 = Overflow efterom c 4 och c 3 är olik! Inte overflow efterom c 4 och c 3 är lik! 29! 3! 5
24/9/23 (Alterntivt ätt tt detekter overflow)" + (-2) + c 4 = c 3 = (Alterntivt ätt tt detekter overflow)" (-7) + (-2) + (-9) c 4 = c 3 = Inte overflow efterom c 4 och c 3 är lik! Overflow efterom c 4 och c 3 är olik! 3! 32! (Logik för tt detekter overflow)" För 4-it-tl! Overflow om c 3 och c 4 är olik! Annr är det inte overflow! Overflow = c 3 c 4 + c 3 c 4 = c 3 c 4! För n-it-tl! Aritmetik Hårdvr" Overflow = c n c n 33! 34! Hlv-dderren (eng. Hlf dder)" Hel-dderren (eng. Full dder)" c + c c c c c = = c ut + c ut c ut cin cut c ut = + + = 35! 36! 6
24/9/23 Hel-dderre Kompoition med hlv-dderre" Vi kn även kontruer en hel-dderre mh två hlv-dderre och en ELLERgrind! c ut Kompoition tillåter tt kontruer ny ytem med hjälp v känd ygglock! cut Hel-dderren (eng. Full dder)" c ut + c ut c ut cin cut () (c ut ) cut c ut = + + = 37! 38! Mer kompoition" Ripple-Crry Adderren (RCA) " Kompoition kn även nvänd för tt kontruer n-it-dderre! Mn ehöver n hel-dderre för tt kontruer en n-it-dderre! c utn- n- n- n- n- c ut n- n-... c utn- n-it ADD T D =n*t ( -> c out ) A=n*A n-... 39! 4! Sutrktion" Add/u-enheten" Sutrktion kn gör genom ddition med två komplementet! Inverter ll itr v den ndr opernden! Adder! Add/Su = : Addition Add/Su = : Sutrktion x n x x y n y y Add Su control c n n -it dder c n 4! 42! 7
24/9/23 EXEMPEL" EXEMPEL" y n y y y n y y Add/Su = : Addition Add/Su = : Sutrktion Add Su control Add/Su = : Addition Add/Su = : Sutrktion Add Su control x n x x x n x x c n n -it dder c c n n -it dder c n x = y = Add = (ddition) n x = y = Add = (urktion) 43! 44! Arithmetic Logic Unit (ALU)" EXEMPEL" Funktionväljre f f AU LU Funktionväljre f f AU LU A/L MUX A/L MUX f f A/L x ALU y A/L f f Funktion x+y x-y x nd y x or y x xor y x nor y f f A/L x ALU y x = y = A/L f f Funktion x+y x-y x nd y x or y x xor y x nor y 45! 46! (Komprtor)" Komprtorn implementer om utrktionkret! A<B (unigned)" A < B -> A B < R = A B -> A + (-B)! Inpekter Crry-out, -> A<B fle e.g 7<2! + (-2) + c 4 = 47! 48! 8
24/9/23 A<B (unigned)" A < B -> A B < R = A + (-B)! Inpekter Crry-out, -> A<B true e.g 2<7! (+2) + (-7) + C 4 = A<B (igned)" A < B -> A B < R = A + (-B)! Inpekter N, -> A<B true e.g 2<7! (+2) + (-7) + N= 49! 5! A<B (igned)" A < B -> A B < R = A + (-B)! Inpekter N, -> A<B true, men det tämmer inte e.g 7< -5! + (-) + N= A<B (igned)" Vi måte även t hänyn till overflow! Dv, A<B -> A-B<, N xor V =! + (-) V= (A,B mm tecken R mottt tecken) N= + 5! 52! A<B " Olik eteende om vi etrktr tlen om igned eller unigned! Unigned, koll crry-out! Signed, koll V xor N! Därför två olik intruktioner i MIPS! SLTU (unigned)! SLT (igned)! (e MIPS intruktionuppättning för fler vrinter)! Smmnfttning" Addition och utrktion v heltl! Två-komplementet! Sutrktion v ett tl implementer om ddition med de två-komplement! ALU utför åde! ritmetik (ADD,SUB, SLT/SLTU etc.) och! logik opertioner (AND, OR, etc.)!! 53! DE, Digitlteknik! 9