Náobení INP 2008 FIT VUT v Brně
Náobení a náobičky Při náobení číel v dvojkové outavě můžeme náobit abolutní hodnoty číel a pak doplnit do výledku znaménko, anebo raději náobit přímo číla e znaménkem. Vlatní náobení může být prováděno ekvenčně (potupně), anebo kombinačně (v jednom kroku). Rozlišujeme proto ekvenční náobičky kombinační náobičky Podle typu operandu rozlišujeme náobičky praujíí v pevné řádové čáre a plovouí řádové čáre Cílem implementae je zíkat oučin o nejryhleji za o nejnižší enu (počet hradel, ploha čipu). Pro pevnou řádovou čárku i ukážeme: Prinip náobení Sekvenční náobičky Kombinační náobičky Prinip uryhlení Boothovo překódování, Wallaeův trom 2
Prinip náobení (bez znaménka) Mějme dvě číla: N-bitový náobitel x N- x N-2... x 0 a M-bitový náobene y M- y M-2... y 0. Součin P potom bude: Náobene (multipliand) Náobitel (multiplier) čátečné oučiny (partial produt) Součin (produt) Výledek je na 2 biteh, obeně na M+N biteh. 3
Sekvenční náobička Př. n=4, x 0 = 0000 (=> označuje poun vpravo) Iniializae: A: PB: 00000 0 Krok : PB: 00000 0 + PB: 0 0 => 00 0 Krok 2: PB: 00 0 + PB: 00 0 => 00 00 Krok 3: PB: 00 00 +0000 PB: 00 00 => 000 0 Krok 4: PB: 000 0 + PB: 000 0 => 000 00 U ekvenčního náobení číel A x B e do dolní poloviny pojenýh regitrů PB připraví náobitel B, do horní poloviny nuly, náobene do regitru A. Potup náobení je náledujíí: () Nejnižším bitem regitru PB e vynáobí náobene A a přičte e k horní čáti regitru PB, kde e udržuje průběžný oučet dílčíh oučinů. (2) Obah regitrů PB e poune o jeden bit vpravo. Kroky, 2 provedeme elkem n-krát. Výhoda: nízký počet hradel, Nevýhoda: nízká ryhlot, n taktů pro náobení 4
Obvodová realizae náobení je založena na čítačkáh Poloviční čítačka: Zpoždění: logiký člen Úplná čítačka: Zpoždění: 2 logiké členy 5
Kombinační náobička (v jednom kroku) a a 3 2 a a 3 2 a a 0 a a 0 b 0 b a a 3 2 a a 0 b 2 a a 3 2 a a 0 b 3 p p p p p p p p 7 6 5 4 3 2 0 6
Kombinační náobička odvození zpoždění Čílo udává zpoždění na vodiči (počet hradel). Poloviční čítačky jou znázorněny a a 3 2 a a 3 2 a a 0 a a 0 tučně. 0 8 5 6 a a 3 2 2 7 2 4 2 a a 3 2 7 a 6 a 0 a a 0 6 4 6 0 9 2 p p p p p p p p 7 6 5 4 3 2 0 4 8 9 2 4 5 2 b 0 b b 2 b 3 Zpoždění: 6x zpoždění logikého členu. 7
Popi ke kombinační náobiče Jednotlivé dílčí oučiny, tedy - a 0-náobky náobene e tvořířadou hradel a čítají e na čtyřbitovýh čítačkáh potupným přenoem. Celkový počet hradel pro náobičku nxn bitů je 0(n 2 ), elkový počet jednobitovýh čítaček je (n-)x n. Zpoždění čítačky určíme nalezením nejdelší ety v kombinační íti. Je-li přenoové zpoždění hradla T a čítačky 2T, má nejdelší eta přenoové zpoždění 6T (nebo 8, = 2T). Toto zpoždění e rotouí délkou operandů dále zvětšuje. Je proto naha nalézt upořádání náobičky ryhlejší funkí. Nejdříve e však zaměřme na náobení číel e znaménkem. 8
9 Náobení číel e znaménkem v doplňkovém kódu = = + + = 2 0 2 0 ) 2 2 ).( 2 2 ( N i i i N N M j j j M M x x y y P P = + + + Příklad pro M=N=6 Výledek je na 2 biteh, obeně na M+N biteh. Záporný člen: negae, přičtení
Př. Náobení číel e znaménkem - praktiky (-4) x (-4) na 5 biteh v doplňkovém kódu. Protože je výledek na 0 biteh, muíme důledně rozšiřovat znaménko na 0 bitů týká e zápornýh číel. S S 00 x 000 ----------------------------------------------------- 00000 00 00000 00000 00 ------------------------------------------------------ 00 00 00 00 00 ------------------------------------------------------ 0000000 S 0
Náobení číel e znaménkem - praxe Co tím? Důledná práe e znaménkem: Výledek náobení dvou číel na n biteh bude na 2n biteh Tedy i vtupní operandy muí být právně zakódovány na 2n biteh Prinip šíření hodnoty znaménkového bitu doleva - z toho vyplývají dva problémy: U dílčíh oučinů e objeví levotranné jedničky Objeví e další dílčí oučiny Počet čátečnýh oučinů a šíření znaménkového bitu () lze redukovat pomoí Boothova algoritmu. Počet úrovní nutnýh pro ečteníčátečnýh oučinů lze redukovat pomoí Wallaeho tromu.
Prinip Boothova překódování Překódováním náobitele poteniálně velmi unadníme náobení, protože zredukujeme počet čátečnýh oučinů a zbavíme e levotrannýh jedniček. A*3 A = A*32-A A náobene 000- náobitel A -A A A A A A 4 oučty oučet Konvenční přítup Boothova metoda 2
Boothovo překódování radixem 2 Základem Boothova algoritmu je překódování náobitele do outavy relativníh číli. Máme-li náobit čílem 3, tedy 000, dotaneme tejný výledek, vynáobíme-li čílem (32 - ), ož zapíšeme v outavě relativníh číli, která používá čílie 0, +, - 0 0 0 0 0 0 0 0 0- Tento prinip aplikujeme na dvojkové čílo opakovaně pro všehny kupiny jedniček, přičemž za kupinu jedniček považujeme i jedinou jedničku. Příklad: 0 0 0 0 0 0 0 0-0 0-0- 0 0 0-0 0 0- Odtud můžeme etavit překódovai tabulku. Kromě překódovaného bitu e řídíme ještě hodnotou ouedního bitu vpravo. Dotáváme tak základní Boothovo překódování, zvané též překódování radixem 2. 3
Boothovo překódování radixem 2 Překódovaná čílie 0 0 Souední bit vpravo 0 0 Boothův kód 0-0 Všimneme i překódování záporného náobitele, např. -6 na 5 biteh včetně znaménka. Toto čílo 00 e překóduje na 0--0. Rozšíříme-li zobrazení číla -6 na 0 bitů, tedy na 00, pak v Boothově překódování e to projeví přidáním pěti levotrannýh nul, tedy dotaneme 000000--0. Potom vznikají nulové čátečné oučiny, které unadňují výledný oučet. 4
Příklad 3 x (-6) na 5 biteh vč. znaménka. Překódování náobitele poneháme pouze na 5 biteh, protože levotranné nuly vyvolají vznik nulovýh a tedy bezvýznamnýh dílčíh oučinů. 3: 00 6: 0 0 0-3: 00-6: 0 0 Překódování náobitele 0- - 0 0 x 3 0000000000 - x 3 00 x 3 00000 - x 3 00 0 x 3 000000 ------------------------------------ 0000 S -000000 tj. -78 5
Boothovo překódování radixem 4 Je tedy odtraněn nepříznivý efekt záporného náobitele, zůtává však nutnot šíření znaménka u zápornýh dílčíh oučinů. Dalším požadavkem pro uryhlení náobení je nížení počtu dílčíh oučinů. Oba tyto požadavky e řeší dalšími modifikaemi Boothova náobení. Z jednoduhého Boothova překódování je odvozeno překódování "2 bity najednou", neboli Boothovo překódování radixem 4. 0 0 0 0 původníčílo rozdělené do dvoji 2 2 2 2 2 váhy 0- - 0-0 - Boothovo překódování po jednom bitu - 2-2 překódování "2 bity najednou" 6
Boothovo překódování obený počet bitů Boothovo překódování lze definovat pro kupiny bitů libovolné velikoti. Obený potup je takový: V každé kupině zopakujeme nejvyšší bit, a přičteme k nejnižšímu bitu nejvyšší bit ze kupiny vpravo. Výledné čílo pak považujeme za relativní čílii v doplňkovém kódu. Příklad pro radix 4 (tj. 2 bity najednou): 00 00 0 0 0 00 0 0 původní čílo 000 000 00 0 00 000 0 0 rozšíření znam. bitu 0 0 0 0 0 přičtení bitu zprava -------------------------------------------------------------------------- 000 00 00 000 0 00 00 0 doplňkový. kód rel. čílie 0 + - 2 0-2 + - -2 překódování radixem 4 Z tohoto příkladu můžeme odvodit tabulku pro Boothovo překódování radixem 4. 7
Boothovo překódování radixem 4 Překódovaná kupina 00 00 0 0 0 0 Bit vpravo 0 0 0 0 Relativní čílie 0 + + +2-2 - - 0 8
Příklad Boothovo překódování radixem 4 3 x (-6): 3 00 6: 000-3 00-6: 00 potřebujeme udý počet bitů, rozšíříme znaménko na 00 Boothovo překódování 0--0 po jednom bitu 0- -2 po dvou biteh -------------------- S -2x3 000 tj. -3 pounutá vlevo o bit -x3 00 krokem 2 bity 0x3 000000 -------------------- 0000-78 S 9
Komentář k příkladu 3 x (-6) V prvním dílčím oučinu e nám pounulo znaménko o jeden bit doleva. Tomu muíme přizpůobit všehny otatní dílčí oučiny, tedy zapiovat je na 6 biteh. Znaménko výledku očekáváme ovšem v 0. bitu. Šíření znaménka vlevo odtraňuje metoda vroubení. Míto šíření znaménka e ke každému dílčímu oučinu připíše zleva negae znaménkového bitu a jednička, a nad znaménkový bit prvního dílčího oučinu e napíše též jednička. Pozor, tento potup funguje pouze pro metodu 2 bity najednou! g g Dílčí oučin g g Dílčí oučin 2 g g Dílčí oučin 3... 20
Př. 3 x (-6) vroubením znaménka, 2 bity najednou 000 0 - -2 ---------------------- 0000 000 000000 ----------------------- 0000 S Obvodová realizae vroubení znaménka: gi gi 2
Boothovo překódování radixem 8 (po 3 biteh) Tabulka odvozena tejným způobem jako pro radix 4. Používá 9 relativníh číli. 0 22
Jak uryhlit kombinační náobičku? Uryhlit ečtení čátečnýh oučinů zavedením uhování přenoů Příklad: Sečtěte 6 + 7 + 2 + 8 0 (6) (7) 0 (3) + 00 (2) 00 (25) + 0000 (8) 0000 (33) Konvenční čítání: Sečtou e první dva operandy, potom e k průběžnému výledku přičítají další operandy. V rámi čítání dvou operandů e použije čítačka potupným přenoem ložená z úplnýh čítaček. 0 (6) (7) 00 oučet bez přenoů (S) 0 uhování přenou (C) + 00 (2) 000 S+C+2 bez přenoů (S2) 00 uhování přenou (C2) + 0000 (8) 0000 oučet S2+C2+8 přenoem Sčítání uhováním přenou: Sčítá e bez uvážení přenoů (tj. ryhle). Avšak přenoy e uhovávají v regitru a přičítají (pomoí úplnýh čítaček) k průběžnému oučtu a dalšímu operandu v náledujíím kroku (opět bez přenou). Přičtení poledního operandu e provede pomoí čítačky potupným přenoem. 23
4b kombinační náobička uhováním přenou 3x čítačka uhováním přenou (SUP) 6 a 3 b 3 0 0 a 3 b 2 a 2 b 3 5 a 3 b 0 0 a 2 b a 3 b 0 0 a b a 2 b 0 0 a 0 b a b 0 0 a 2 b 2 a b 3 4 a b 2 a 0 b 3 3 P3 a 0 b 2 2 P2 P a 0 b 0 P0 ab 0 + ab +ab 2 +ab 3 x čítačka potupným přenoem (SPP) P7 P6 P5 P4 24
Optimalizovaná 4b kombinační náobička uhováním přenou a 2 b a 3 b 0 a b a 2 b 0 a 0 b a b 0 a 0 b 0 a 3 b a 2 b 2 a b 2 a 0 b 2 P0 ab 0 + ab a 3 b 2 a 2 b 3 a b 3 a 0 b 3 2 P +ab 2 6 a 3 b 3 5 4 3 P3 P2 +ab 3 P7 P6 P5 P4 25
Komentář k náobiče uhováním přenoů Ze tří řad čítaího tromu jme odtranili čítačky potupným přenoem. Sčítačky v jednéřadě e označují jako čítačka uhováním přenou (SUP, angl. CSA - Carry-Save Adder). V každém tupni e čítačka v nejvyšším řádu redukovala na hradlo. Mueli jme však nakone jednu řadu čítaček potupným přenoem (SPP) přidat. Niméně toto upořádání činnot náobičky obeně zryhluje. Základem n-bitové náobičky uhováním přenou je n-bitová SUP: X Y Z n n n......... = n-bit SUP n n C S n -krát 26
Zobeněné využití čítačky Sčítačka uhováním přenou dovoluje hápat čítání poněkud odlišným způobem. Víme, že jednobitová čítačka má tři vtupy a dva výtupy. Vzhledem k tomu, že vtupy pro přeno všeh jednobitovýh čítaček v prvním tupni jou nevyužité, může e na ně přivét třetí dílčí oučin. Na vtupeh má tedy čítačka tři binární vektory délky n, ovšem vzájemně pounuté do právné polohy. To e projeví tak, že v každém tupni je plný počet čítaček (n). Součet tří dílčíh oučinů je dán výtupním vektorem oučtu a výtupním vektorem přenoů. Poloha vektoru oučtu je vzhledem ke konečnému výledku právná, vektor přenoů e poouvá o jeden bit do vyššího řádu. Takováto zobeněná optimalizovaná čítačka je známá též pod označením peudočítačka, protože nedává ještě definitivní oučet vtupníh vektorů. 27
Blokové héma náobičky uhováním přenou 6x6 bitů Ab 2 Ab Ab 0 a 0 b 0 A = a 5 a 4 a 3 a 2 a a 0 Ab 3 SUP 6b B = b 5 b 4 b 3 b 2 b b 0 Ab 4 SUP 6b P P 0 Ab 5 SUP 6b P 2 SUP 6b P 3 SUP 6b P 4 SPP 6b P 5 P P 6 5 28
Blokové héma náobičky uhováním přenou 8x8 bitů Ab 3 Ab 2 Ab Ab 0 SUP 8b a 0 b 0 A = a 7 a 6 a 5 a 4 a 3 a 2 a a 0 Ab 4 SUP 8b P P 0 B = b 7 b 6 b 5 b 4 b 3 b 2 b b 0 Ab 5 SUP 8b P 2 Ab 6 SUP 8b P 3 Nebylo by možné zredukovat počet čítání a tím i zpoždění? Ab 7 SUP 8b SUP 8b SUP 8b P 6 P 5 P 4 7 SPP 8b P 7 P 5 P 8 29
Zryhlené čítání čátečnýh oučinů (A, B, C, D, E, F) při náobení uhováním přenou M x Q (6b x 6b) Nejdříve jou ečteny čátečné oučiny A, B a C, výledek je v S a C. Potom jou ečteny čátečné oučiny D, E a F, výledek je v S2 a C2. Náleduje oučet S, C a S2, výledek je v S3 a C3. Nakone jou ečteny S3, C3 a C2, výledek je v S4 a C4. Sčítačkou potupným přenoem jou nakone ečteny S4 a C4. Kromě poledního čítaní jou všehna otatní čítání uhováním přenou. 0 0 M x Q 0 0 A 0 0 B 0 0 C 0 0 0 0 S 0 0 0 0 C 0 0 D 0 0 E 0 0 F 0 0 0 0 S2 0 0 0 0 C2 0 0 0 0 S 0 0 0 0 C 0 0 0 0 S2 0 0 0 0 0 S3 0 0 0 0 0 0 0 0 C3 0 0 0 0 C2 0 0 0 0 0 S4 +0 0 0 0 0 0 0 0 C4 0 0 0 0 0 0 Součin 30
Zryhlené čítání čátečnýh oučinů při náobení uhováním přenou 6x6 bitů Wallaeův trom F E D C B A SUP SUP C2 S2 C S C3 SUP S3 3 (bez optimalizae je zpoždění 5 ) C4 SUP SPP S4 3
Wallaeův trom pro náobičku 8x8 bitů b 7 A b 6 A b 5 A b 4 A b 3 A b 2 A b A b 0 A V každém tupni (SUP) je redukován počet operandů na 2/3: 8 SUP8 SUP8 6 SUP8 SUP8 2 4 SUP8 4 SUP8 3 4 (bez optimalizae je zpoždění 7 ) 2 3 SPP8 5 +(n-) 2 32
Shrnutí: Kombinační náobička číel e znaménkem Náobene Tvorba náobků náobene e Ošetře ní mén ka Wallaeův trom Překódování náobitele (Boothovo, 2 bity, 3 bity, 4 bity najednou atd.) Náobitel Součin 33
Použitá literatura Drábek, V. Výtavba počítačů. Skriptum VUT, 995 Wete, N. H. E., Harri, D.: CMOS VLSI Deign, 3. vydání, Addion Weley, 2005 Hamaher, C., Vranei, Z., Zaky, S.: Computer Organization. MGraw-Hill, 200 34