Architektury počítačů Počítačová aritmetika Miroslav Šnorek, Michal Štepanovský, Pavel Píša České vysoké učení technické, Fakulta elektrotechnická AM36APO Architektury počítačů Ver.. 26
Důležitá poznámka úvodem Nechceme vás učit počítač navrhnout, ale Porozumět eho struktuře, abyste mohli lépe využít eho možností k dosažení eho vyššího výkonu. Tento předmět e zeména o HW/SW interfesu. Vychází ze světově uznávané knihy autorů Paterson, D., Henessy, V.: Computer Organization and Design, The HW/SW Interface. Elsevier, ISBN: 978--2-3766-5 Stránky předmětu: https://cw.fel.cvut.cz/wiki/courses/ab36apo/start AM36APO Architektury počítačů 2
Hodnocení a podmínky absolvování Zápočet: Kategorie Body Nutné minimum 4 domácí úkoly 24 Hlavní test (9. přednáška) 2 Týmový proekt 2 5 Celkem 64 Zkouška: Kategorie Body Nutné minimum Písemná část zkoušky 3 5 Ústní část zkoušky +/- Známka Bodové rozmezí A 9 a více B 8-89 C 7-79 D 6-69 E 5-59 F méně než 5 AM36APO Architektury počítačů 3
Architektura dnešního PC??? AM36APO Architektury počítačů 4
Architektura dnešního PC AM36APO Architektury počítačů 5
Architektura dnešního PC Máte málo USB portů? Wi-fi? GPU AM36APO Architektury počítačů 6
3. přednáška: Paměťový subsystém hierarchie pamětí. Statická a dynamická paměť Přehled témat přednášek 4. přednáška: Paměťový subsystém virtuální paměť 7. přednáška: Vstupně/výstupní podsystém. SW pohled. 2. přednáška: Návrh ednoduchého CPU, Vykonávání instrukcí, Funkce řadiče 5. přednáška: Princip zřetězeného zpracování instrukcí, Řešení hazardů uvnitř CPU 6. přednáška: Vstupně/výstupní podsystém. HW pohled. Sběrnice PCI, propoení PCIe, USB, SerialATA, HyperTransport, QuickPath interconnect AM36APO Architektury počítačů 7
Co e to architektura počítače? Original domain of the computer architect ( 5s- 8s) Application Algorithm Programming Language Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Physics Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture. University of California, Berkeley
Co e to architektura počítače? Original domain of the computer architect ( 5s- 8s) Application Algorithm Programming Language Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Physics Parallel computing, security, Domain of recent computer architecture ( 9s -???) Reliability, power, Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture. University of California, Berkeley
Co e to architektura počítače? Application Original domain of the computer architect ( 5s- 8s) Algorithm Programming Language Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Parallel computing, security, Domain of recent computer architecture ( 9s -???) Reliability, power, Náš záběr v rámci APO Physics Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture. University of California, Berkeley
Přehled témat přednášek 8. Technické a organizační prostředky (vněší události, výimky, reálný čas) 9. Sítě procesorů a počítačů.předávání parametrů funkcím a virtuálním instrukcím operačního systému.klasická registrově orientovaná architektura CISC (M68) 2. Procesorová rodina INTEL x86, Od 886 k EMT64 3.Přehled vývoe architektury a koncepcí CPU (RISC/CISC) 4. Víceúrovňový model počítače, virtualizace AM36APO Architektura počítačů
Proč e potřeba studovat i nízkoúrovňovou konstrukci počítače Pro návrh nové počítačové/procesorové architektury Pro implementaci vybrané architektury v integrovaném obvodu/fpga Pro obvodový návrh hardware/systému (velké nebo vestavné systémy) Pro porozumění obecným otázkám a problémům ohledně počítačů, eich architektur a výkonnosti Pro to ak efektivně využívat existuící hardware (to znamená, ak psát kvalitní software) Bez přehledu a pochopení chování, možností, omezení a limitace zdroů není možné efektivně využít žádný hardware (pro moderní HW s více ádry a výpočetními subsystému to platí dvonásob) Určitě lze vytvořit dobře placené programy i bez těchto znalostí, ale budou vyžadovat mnohonásobně silněší hardware a budou plýtvat zdroi. Není však takto možné vytvořit žádné náročné aplikace ať iž na výkon nebo na ušetřen energie. Přitom to e oblast kde probíhá skutečný vývo a maí z dlouhodoběšího technologického a i vědeckého pohledu smysl. AM36APO Architektura počítačů 2
Další motivace a příklady Předkládané znalosti sou nutné pro každého programátora, ehož aplikace pracuí i en s větším ovšem dnes běžným množstvím dat nebo vyžaduí netriviální výpočetní výkon Žádná práce s multimédii nemůže být vykonána dobře bez takovýchto znalostí /3 našeho kurzu e zaměřená i na přístup k periferiím Příklady Facebook HipHop for PHP -> C++/GCC -> machine code BackBerry (RIM) our consultations for time source RedHat JAVA JIT for ARM for future servers generation Multimedia and CUDA computations Photoshop, GIMP (organizace dat v paměti) Knot-DNS (RCU, Copy on write, Cuckoo hashing, ) AM36APO Architektura počítačů 3
Obsah. přednášky Jak se v počítači ukládaí Čísla typu INTEGER, bez i se znaménkem, Čísla typu REAL, Hodnoty typu LOGICAL? Jak se realizuí základní operace Sčítání, odčítání, Posuny, Násobení, dělení, AM36APO Architektury počítačů 4
int main() { int a = -2; MOTIVACE: Co program vytiskne? printf("hodnota: %u = %d = %f = %c \n", a, a, *((float*)(&a)), a); } return ; hodnota: 429496796 = -2 = nan = 8 x38 xff xff xff AM36APO Architektury počítačů 5
Číselná soustava: Základní terminologie Nepoziční číselná soustava - hodnota číslice není dána eím umístěním v dané sekvenci číslic, ale eím vzhledem (zápisem/symbolem) http://diameter.si/sciquest/e.htm Hodnota čísla může být dána prostým součtem hodnot ednotlivých číslic (Egyptské číslice) nebo e zapotřebí použít něaká pravidla (Římské číslice) AM36APO Architektury počítačů 6
Základní terminologie Hodnota čísla tedy e: 333 33 AM36APO Architektury počítačů 7
Číselná soustava: Základní terminologie Poziční číselná soustava - hodnota každéčíslice e dána eí pozicí v sekvenci symbolů Množina všech symbolů (číslic) se nazývá abeceda Celá část e oddělena od zlomkové speciálním znakem (řádová čárka/tečka) Λ abeceda - Například {,, 2, 3, 4, 5, 6, 7, 8, 9} pro desítkovou soust. z základ (radix) soustavy obvykle přirozené číslo > a Λ -číslice AM36APO Architektury počítačů 8
Základní terminologie Například dekadické číslo 348,3 má hodnotu 3* 2 + 4* + 8* + 3* - + * -2 Pokud si zvolíme fixně počet pozic pro celočíselnou část (n+) a počet pozic pro zlomkovou část (m), bude: Nemenší zobrazitelné číslo: ε=z -m, Modul - nemenší hodnota, kterou už neumíme zobrazit: M=z n+ Zobrazitelná čísla tedy leží v rozsahu: A < M AM36APO Architektury počítačů 9
Uložení čísel typu INTEGER bez znaménka Zvolme si tedy celkově například 8 pozic, z toho všechny pro celočíselnou část a základ soustavy roven 2. Binární hodnota Neznaménková reprezentace () () 25 () 26 () Kolik e různých stavů položky? 2 8 = 256D (desítkově). To není mnoho, že? Řešení: proč nepoužít více batů? 4B = 2 32 = 4 294 976 296D, Rozsah tedy e: <, 2 n+ ->, nebo pokud N bude počet bitů: <, 2 N -> 27 () 28 () 29 () 3 () 253 () 254 () 255 () AM36APO Architektury počítačů 2
Uložení čísel typu INTEGER bez znaménka A(X) Binární hodnota Neznaménková reprezentace () ().............. M X 25 () 26 () 27 () 28 () 29 () 3 () 253 () 254 () 255 () AM36APO Architektury počítačů 2
Uložení čísel typu INTEGER se znaménkem Binární hodnota Přímý kód + () Znaménko a hodnota. Jde o tzv. přímý kód. Běžně dodržovaná dohoda: +, -. Nevýhoda: inak se musí při aritmetických operacích pracovat se znaménkovým bitem, inak s bity hodnoty. Jiná nevýhoda: máme 2 různá vyádření nuly. () 25 () 26 () 27 () - () - () -2 () -25 () -26 () -27 () AM36APO Architektury počítačů 22
Uložení čísel typu INTEGER se znaménkem Přímý kód pokračování Pokud N bude počet bitů: <-2 N- -, 2 N- -> A(X) Binární hodnota Přímý kód + () () 25 () M 26 () 27 () -M/2 M/2 X - () - () -2 () -25 () -26 () -27 () AM36APO Architektury počítačů 23
HW/SW interfes V programovacím azyce C se celým číslům bez znaménka říká unsigned integers a v programu se deklaruí ako unsigned int. Těm se znaménkem se říká integers a v programu se deklaruí ako signed int. AM36APO Architektury počítačů 24
Čísla INTEGER se znaménkem II. Inverzní kód edničkový doplněk (one's complement): Výhodněší varianta něž přímý kód Proč výhodněší? Úspora v HW! Jedničkový doplněk zápornéhočísla se (ve dvokové soustavě) vytvoří bitovou negací čísla kladného => inverze všech bitů (edničkový doplněk) Dekadická hodnota Reprezentace v inverzím kódu na 4 bity 6-6 AM36APO Architektury počítačů 25
Uložení čísel typu INTEGER se znaménkem II. Inverzní kód pokračování Pokud N bude počet bitů: <-2 N- -, 2 N- -> A(X) Binární hodnota Inverzní kód () () 25 () M M/2 26 () 27 () -27 () -26 () -25 () -M/2 M/2 X -2 () - () - () AM36APO Architektury počítačů 26
Čísla INTEGER se znaménkem III. Dvokový doplněk (two's complement): Výhodněší varianta něž inverzní kód Proč výhodněší? Úspora v HW! Často se označue nepřesně ako doplňkový kód Dvokový doplněk zápornéhočísla se (ve dvokové soustavě) připočtením k nenižšímu bitu záporného čísla reprezentovaného v inverzním kódu Jedničkový se od dvokového doplňku se liší málo, en o edničku, o tzv. horkou edničku (Hot-One), kterou přičítáme k nenižšímu řádu. Dekadická hodnota Reprezentace v dvokovém doplňku na 4 bity 6-6 AM36APO Architektury počítačů 27
Uložení čísel typu INTEGER se znaménkem III. Dvokový doplněk pokračování Pokud N bude počet bitů: <-2 N-, 2 N- -> A(X) Binární hodnota Dvokový doplněk () () 25 () M M/2 26 () 27 () -28 () -27 () -26 () -M/2 M/2 X -3 () -2 () - () AM36APO Architektury počítačů 28
Příklady reprezentací: D = H, Doplňkový kód - příklady D = H, -D = FFFFFFFFH, 2D = 2H, -2D = FFFFFFFEH, 3D = 3H, -3D = FFFFFFFDH, Analogii dvokového doplňku se v soustavě s iným základem říká doplněk do modulu. Steně se postupue třeba v soustavě desítkové (doplněk do ). Všimněte si: součet dvou opačných čísel se stenou absolutní hodnotou e H. Přenos do vyššího řádu (32.) ignorueme. Sčítáme vlastně mod 2 32. Jak e to vlastně v tomto kódování s přeplněním (přetečením) rozsahu? Budeme diskutovat pozděi AM36APO Architektury počítačů 29
Přímý kód Zvlášť pracueme se znaménkem a zvlášť s hodnotou Algoritmus pro + a - -3-3 + -6-4 +5 +?????? Aritmetické operace Inverzní kód Vystačíme si s edním algoritmem nutnost provádět tzv. kruhový přenos = přičtení přenosu z nevyššího řádu k výsledku -4 +5 +? + + Dvokový doplněk Jeden algoritmus Žádný kruhový přenos -4 +5 + není součástí výsledku AM36APO Architektury počítačů 3
Sčítání Příklad sčítání a odčítání v doplňkovém kódu B 7D Vysvětl.: =H, =B + B 6D B 3D Odčítání e v tomto kódu přičítáním čísla opačného B 7D + FFFFFFF B -6D B D Pro vyádření INTEGER znaménkových čísel používáme v počítači dvokový doplněk AM36APO Architektury počítačů 3
Je výsledek správný? Rozumíte pomu přeplnění? Přeplnění - říká se tomu také přetečení (overflow). Situace, kdy výsledek operace není správný, protože se nevešel do zobrazitelného rozsahu. Nastává v situaci, kdy znaménko výsledku e iné, než znaménka operandů, byla-li stená, nebo Nonekvivalencí přenosu do a z nevyššího řádu. Měme k dispozici 5 bitů: -4 +5 + 2 +5 +? -4 - + -5-4 -3 +? AM36APO Architektury počítačů 32
A co čísla neznaménková? Na ty nezapomíneme V tomto případě sledueme přenos z nevyššího řádu Opět situace, kdy výsledek operace není správný, protože se nevešel do zobrazitelného rozsahu. Měme k dispozici 5 bitů: 28 +5 + 2? +5 + 7 28 2 +? 28 9 +? AM36APO Architektury počítačů 33
Jak nás procesor informue o správnosti výsledku? Musíme se podívat do příznakového registru - FLAGS register pro Intel x86 mikroprocesory, CPSR (Current Program Status Register) pro ARM,.. V něm nademe příznaky Carry a Overflow (a další) AM36APO Architektury počítačů 34 http://css.csail.mit.edu/6.858/23/readings/i386/s2_3.htm
Jak realizueme rozdíl dvou čísel? Na předchozích slidech sme viděli ak se realizue operace součtu dvou čísel ať iž znaménkových (kladné+kladné, kladné+záporné, záporné+záporné) nebo neznaménkových (kladné+kladné) Otázka k opakování: ak sme vytvořili k číslu ve dvokovém doplňku eho číslo opačné? A B Sub (subtraction) Invertor c přenos do nenižšího řádu Kontrolní otázka: Lze použít tento obvod i pro realizaci rozdílu neznaménkových čísel? AM36APO Architektury počítačů 35
Sčítací HW blokově Sčítačka s postupným šířením přenosu a n- b n- a b a b Obvyklý symbol pro funkční blok c n c Overflow s n- s s Úplná sčítačka kde x y Poloviční sčítačka z z = x. y w w = x y AM36APO Architektury počítačů 36
Paralelní sčítačka s minimálním zpožděním Sčítačka s postupným šířením přenosu e pro více bitová čísla velmi pomalá Pokud označíme t zpoždění ednoho hradla, pak generování přenosu v i-témřádě trvá 2 t. Pro N bitové číslo generování součtu trvá 2N t. Pro 64-bitovou sčítačku to e 28 t. Proto zkusíme navrhnout rychleší S n C = n+ A A = n n B B A n n n B C C n n n + + + B A A n n n C B B n n n + C C A n n n + C A n B n C n C n+ S n AM36APO Architektury počítačů 37 n
Paralelní sčítačka s minimálním zpožděním C B A C B A C B A C B A S + + + = C A C B B A C + + = ( ) ( ) ( ) ( ) + + + + + + + + + + + = = + + + = A C C B B A B A A C C B B A B A A C C B B A B A A C C B B A B A C B A C B A C B A C B A S AM36APO Architektury počítačů 38 ( ) ( )... = + + + + + + C A C B B A B A A C C B B A B A Je zevné, že můžeme pokračovat v zednodušování výrazu a dosáhnout zpoždění 2 t pro každou rovnici. Bude však narůstat počet vstupů do hradla a počet hradel... 2 = + + = C A C B B A C
Poznámka k realizaci rychlé paralelní sčítačky Paralelní sčítačka s minimálním zpožděním (kombinační obvod) e prakticky nerealizovatelná. Pro 64-bitovou verzi bychom potřebovali 2 hradel. x = y = c =???????????? s =???????????? Jak můžeme urychlit výpočet součtu? = Jak můžeme urychlit výpočet přenosu? => sčítačka s predikcí přenosů Carry Look-Ahead AM36APO Architektury počítačů 39
Paralelní sčítačka s předvídáním přenosu x y c c + s C n+ = C n C n+ = C n C n+ = C n C n+ = C n x y c + C n C n Šíření přenosu Generování přenosu s = x = c y ( x y x y ) c ( x y x y ) = c ( x y ) c ( x y ) c x y c x y c x AM36APO Architektury počítačů 4 y c c + = x y ( x ) y c
Tyto rovnice sou klíčové pro pochopení principu Označme: generování přenosu: šíření přenosu (propagation): y x g = y x y x y x p = = Pak: součet v -tem řádu: přenos do vyššího (+) řádu: AM36APO Architektury počítačů 4 ( ) ( ) c p p c p c y x c y x c s = = = ( ) c p g c y x y x c = = +
Paralelní sčítačka s předvídáním přenosu Takže platí: c = g p c c 2 = g p c = g p (g p c ) = g p g p p c c 3 = g 2 p 2 c 2 = g 2 p 2 (g p g p p c ) = g 2 p 2 g p 2 p g p 2 p p c c 4 = g 3 p 3 c 3 =... = g 3 p 3 g 2 p 3 p 2 g p 3 p 2 p g p 3 p 2 p p c c 5 =... Například rovnici pro c 3 e možné číst následovně: Přenos do 3. řádu nastane, pokud přenos byl generován v 2. řádu, nebo se 2. řádem šíří a byl generován v. řádu, nebo se šíří 2. a. řádem a byl generován -tým řádem, nebo se šíří druhým, prvním a -tým řádem a byl v c (c ==). Pro porovnání: Sčítačka s postupným přenosem: AM36APO Architektury počítačů 42
CLA struktura ednotky Predikce Vycházeíc z rovnic pro c až c 3 sestroíme ednotku CLA: Gg p 3 g 3 c 3 p 2 g 2 c 2 p g c p g C Gp c 4 = g 3 p 3 c 3 =... = g 3 p 3 g 2 p 3 p 2 g p 3 p 2 p g p 3 p 2 p p c = Gg Gp Gc Gg Gp AM36APO Architektury počítačů 43
Paralelní sčítačka s předvídáním přenosu Podobným způsobem ako sme stanovili c 4 můžeme odvodit rovnice pro grupové přenosy: c 8 = Gc 2 = Gg Gp Gc = Gg Gp (Gg Gp Gc ) = = Gg Gp Gg Gp Gp Gc c 2 = Gc 3 = Gg 2 Gp 2 Gc 2 = Gg 2 Gp 2 (Gg Gp Gg ) = Gg 2 Gp 2 Gg Gp 2 Gp Gg Gp 2 Gp Gp Gc S výimkou názvů proměnných vidíme, že výše uvedené rovnice pro c 4, c 8 a c 2 sou identické s rovnicemi pro c až c 3. Čili, členy grupových přenosů lze vytvářet stenými obvody CLA, ako pro obyčené přenosy. Propoení sumátorů a ednotek CLA pro bity až 5 e ukázáno na následuícím obrázku: AM36APO Architektury počítačů 44
6-bitová sčítačka s grupovým předvídáním s 2-5 x 2-5 y 2-5 s 8- x 8- y 8- s 4-7 x 4-7 y 4-7 s -3 x -3 y -3 SUM 2-5 pg 2-5 SUM 8- pg 8- SUM 4-7 pg 4-7 SUM -3 pg -3 c 2-5 c 8- c 4-7 c -3 p 2-5 g 2-5 p 8- g 8- p 4-7 g 4-7 p -3 g -3 CLA 3 CLA 2 CLA CLA c Gc 3 Gc 2 Gc Gp 3 Gg 3 Gp 2 Gg 2 Gp Gg Gp Gg Sp GCLA Sg c Sčítačka pro bity až 3 AM36APO Architektury počítačů 45
64-bitová paralelní sčítačka s předvídáním přenosu 64-bitový sumátor se sekciovým předvídáním: s 48-63 x 48-63 y 48-63 s 32-47 x 32-47 y 32-47 s 6-3 x 6-3 y 6-3 s -5 x -5 y -5 SUM 48-63 pg 48-63 SUM 32-47 pg 32-47 SUM 6-3 pg 6-3 SUM -5 pg -5 c 48-63 c 32-47 c 6-3 c -5 p 48-63 g 48-63 p 32-47 g 32-47 p 6-3 g 6-3 p -5 g -5 CLA 2-5 CLA 8- CLA 4-7 CLA -3 Gc 2-5 Gc 8- Gp Gc Gp 4-7 2-5 Gg 2-5 8- Gg Gp4-7 Gc 8-8- Gg Gp 8-4-7 Gg 8- c GCLA 3 GCLA 2 GCLA GCLA c Sc 3 Sc 2 Sc Sp 3 Sg 3 Sp 2 Sg 2 Sp Sg Sp Sg SCLA c Np Ng Sčítačka pro bity až 5 AM36APO Architektury počítačů 46
Paralelní sčítačka s předvídáním přenosu CLA Carry Look-Ahead. Sčítačka CLA nabízí dostatečné zrychlení v porovnaní se sčítačkou s postupným přenosem při přiatelném nárůstu ceny HW. 64-bitová verze zvýší cenu HW o necelých 5% v porovnání se sčítačkou s postupným šířením přenosu, ale rychlost se zvýší 9: (28 t vs. 4 t). To představue významné zvýšení poměru rychlost/cena). AM36APO Architektury počítačů 47
Aritmetické posuvy: vlevo, vpravo Aritmetický posuv v doplňkovém kódu o bit (výsledek má odpovídat přísl. násobení nebo dělení) vlevo vpravo Aritmetický posuv vs. Logický posuv vs. Cyklický posuv... AM36APO Architektury počítačů 48
Násobení binárních čísel bez znaménka pro připomenutí AM36APO Architektury počítačů 49
Sekvenční HW násobička (varianta 32b) AC MQ Diskuze o rychlosti: ta e ale pomalá, co? AM36APO Architektury počítačů 5
Algoritmus A = násobenec; MQ = násobitel; AC = ; for( int i=; i <= n; i++) // n e počet bitů { if(mq = = ) AC = AC + A; // MQ = nenižší bit MQ SR (posuň registr AC MQ o edno místo doprava a doplň případný přenos z nevyššího řádu z předchozího kroku) } end. Nyní e výsledek v AC MQ. AM36APO Architektury počítačů 5
Příklad x.y Násobenec x= a násobitel y=. i operace AC MQ A komentář prvotní nastavení AC = AC+MB začátek cyklu SR 2 nic protože MQ = = SR 3 AC = AC+MB SR konec cyklu Tedy: x y = =, ( 6 5 = 3 ) AM36APO Architektury počítačů 52
Násobení v doplňkovém kódu Lze realizovat, ale e tu problém Obraz součinu obecně není roven součinu obrazů! Řešení spočívá v modifikaci dvokové soustavy na soustavu s relativními číslicemi Podrobnosti už sou mimo zamýšlený rozsah APO. Nebo v znaménkovém rozšíření na 2N bitů a násobení obvyklým způsobem. Z výsledku bereme pouze 2N bitů. -> ruční násobení AM36APO Architektury počítačů 53
Násobička v doplňkovém kódu Boothova metoda APO en pro informaci AM36APO Architektury počítačů 54
Rychlá násobička podle Walaceova stromu Q=X.Y, X a Y nechť sou 8b čísla ( x 7 x 6 x 5 x 4 x 3 x 2 x x ). (y 7 y 6 y 5 y 4 y 3 y 2 y y ) = x 7 y x 6 y x 5 y x 4 y x 3 y x 2 y x y x y P x 7 y x 6 y x 5 y x 4 y x 3 y x 2 y x y x y P x 7 y 2 x 6 y 2 x 5 y 2 x 4 y 2 x 3 y 2 x 2 y 2 x y 2 x y 2 P2 x 7 y 3 x 6 y 3 x 5 y 3 x 4 y 3 x 3 y 3 x 2 y 3 x y 3 x y 3 P3 x 7 y 4 x 6 y 4 x 5 y 4 x 4 y 4 x 3 y 4 x 2 y 4 x y 4 x y 4 P4 x 7 y 5 x 6 y 5 x 5 y 5 x 4 y 5 x 3 y 5 x 2 y 5 x y 5 x y 5 P5 x 7 y 6 x 6 y 6 x 5 y 6 x 4 y 6 x 3 y 6 x 2 y 6 x y 6 x y 6 P6 x 7 y 7 x 6 y 7 x 5 y 7 x 4 y 7 x 3 y 7 x 2 y 7 x y 7 x y 7 P7 Q 5 Q 4 Q 3 Q 2 Q Q Q 9 Q 8 Q 7 Q 6 Q 5 Q 4 Q 3 Q 2 Q Q Součtem P+P+...+P7 získáme výsledek součinu X a Y. Q = X.Y = P + P +... + P7 AM36APO Architektury počítačů 55
Rychlá násobička podle Walaceova stromu Jeím stavebním prvkem e sčítačka s uchováním přenosu CSA (Carry Save Adder) & & & S = S b + C S b i = x i y i z i C i+ = x i y i + y i z i + z i x i AM36APO Architektury počítačů 56
HW dělička algoritmus dělení AM36APO Architektury počítačů 57
Sekvenční HW dělička (varianta 32b) dělenec = podíl dělitel + zbytek AC MQ AM36APO Architektury počítačů 58
Algoritmus dělení MQ = dělenec; B = dělitel; (Podmínka: dělitel různý od!) AC = ; for( int i=; i <= n; i++) { SL (posuň registr AC MQ o ednu pozici vlevo, přičemž vpravo se připíše nula) } if(ac >= B) { AC = AC B; MQ = ; // nenižší bit registru MQ se nastaví na } Nyní registr MQ obsahue podíl a zbytek e v AC AM36APO Architektury počítačů 59
Příklad x/y Dělenec x= a dělitel y= i operace AC MQ B komentář prvotní nastavení SL nic podmínka if není splněna 2 SL podmínka if není splněna 3 SL r y AC= AC B; MQ = ; 4 SL r y AC= AC B; MQ = ; konec cyklu x : y = : = zbytek, ( : 3 = 3 zbytek ) AM36APO Architektury počítačů 6
Dělička celých čísel - blokově AM36APO Architektury počítačů 6
Čísla INTEGER se znaménkem IV. Je i iná možnost pro zobrazení čísel se znaménkem? Ano, dokonce často používaná (viz dále): kód aditivní (inak zvaný s posunutou nulou ). Připomenutí: Z e modul AM36APO Architektury počítačů 62
Sčítání a odčítání v aditivním kódu Platí: Detekce přeplnění sčítání: stená znaménka sčítanců a iné znaménko výsledku, odčítání: znaménka menšence a menšitele se liší a liší se znaménka menšence a výsledku. AM36APO Architektury počítačů 63
Jak se v počítači zobrazuí čísla typu REAL? Vědecká, neboli semilogaritmická notace. Dvoice: EXPONENT (E), ZLOMKOVÁ část (nazývaná též mantisa M). Mantisa x zaklad Exponent Notace e normalizovaná. Zlomková část vždy začíná binární číslicí, Obecně: nenulovou číslicí. Dekadicky: 7,26478 x 3 Binárně:, x 2 AM36APO Architektury počítačů 64
HW/SW interfes Normalizováno ako IEEE754 ve verzích Jednoduchá, Dvonásobná přesnost. V programovacím azyce C se deklarue ako float a double. AM36APO Architektury počítačů 65
Příklady binárně Znaménko M Poloha řádové čárky (tečky) pro E i M AM36APO Architektury počítačů 66
Formát čísla v pohyblivé řádové čárce Kód mantisy: přímý kód znaménko a absolutní hodnota Kód exponentu: aditivní kód (s posunutou nulou). Znaménko M Poloha řádové čárky (tečky) pro E i M AM36APO Architektury počítačů 67
Příklady reprezentace některých důležitých hodnot Nula Nekonečno Některé kraní hodnoty AM36APO Architektury počítačů 68
Denormalizované číslo? Smyslem zavedení denormalizovaných čísel e rozšíření reprezentovatelnosti čísel, která se nacházeí blíže k nule, tedy čísel velmi malých (v následuícím obrázku oblast označena modře). Denormalizovaná čísla maí nulový exponent a i skrytý bit před řádovou čárkou e implicitně nulový. Cenou e nutnost speciálního ošetření případu nulový exponent, nenulová mantisa. AM36APO Architektury počítačů 69
Podtečení Jde o situaci, kdy zobrazované číslo není rovno nule, ale nedosahue hodnoty nemenšího zobrazitelného normalizovaného čísla. Mnoha podtečením normalizovaných čísel lze předeít právě implementací čísel denormalizovaných. podtečení oblast zobrazitelných čísel nemenší kladné číslo - denormalizované normalizované AM36APO Architektury počítačů 7
NaN Samé edničky v exponentu, Mantisa e nenulová. V tom případě není bitový řetězec obrazem žádného čísla, anglicky Not-a-Number, Nan. AM36APO Architektury počítačů 7
Shrnutí zobrazitelná čísla a výimky AM36APO Architektury počítačů 72
ANSI/IEEE Std 754-985 formáty 32b a 64b ANSI/IEEE Std 754-985 dvoity format 64b g... b f... 52b AM36APO Architektury počítačů 73
Skrytý bit Nevyšší platný bit mantisy (který se do bitové reprezentace operandu neukládá) e závislý na hodnotě obrazu exponentu. Jestliže e obraz exponentu nenulový, e tento bit, mluvíme o normalizovanýchčíslech. Na druhou stranu estliže e obraz exponentu nulový, e skrytý bit. Pak mluvíme o denormalizovaném čísle. AM36APO Architektury počítačů 74
Porovnání dvou čísel ve FP Porovnání: e-li A B A B. Obrazy čísel A a B se odečtou ako čísla v přímém kódu a v pevné řádová čárce. To e výhodou zvoleného zobrazení čísel. Nebo e eště iný způsob? AM36APO Architektury počítačů 75
Algoritmus sčítání v pohyblivé řádové čárce Ma x 2 Ea + Mb x 2 Eb Odečteme exponenty. Mantisu čísla s menším exponentem posuneme doprava o počet bitů, který e roven rozdílu exponentů. Sečteme mantisy obou čísel. Určíme počet nul mezi řádovou čárkou a první platnou číslicí součtu mantis. Posuneme součet doleva o tolik míst, kolik nul bylo nalezeno za řádovou čárkou. Zmenšíme původní exponent o počet nalezených nul. Zaokrouhlíme. AM36APO Architektury počítačů 76
HW FP sčítačky AM36APO Architektury počítačů 77
Násobení čísel v pohyblivé řádové čárce Exponenty sečteme. Mantisy vynásobíme. Normalizueme. Zaokrouhlíme. HW FP násobičky e srovnatelně složitý, ako FP sčítačky. Jen má namísto sčítačky násobičku. AM36APO Architektury počítačů 78
Iterační dělička - Goldschmidt Q N m m en N N e = = = 2 ed D md 2 md Pokud sou čísla v normalizovaném tvaru, pak platí: m N =.???????...? a m D =.???????...? tzn. m N, m D < 2 pokud uvažueme celou mantisu, nebo,5 m N, m D < pokud bereme pouze zlomkovou část. Uvažume pouze zlomkovou část (za desetinnou čárkou). Zřemě můžeme m D přepsat do tvaru: m D =-x, kde < x,5 2 N e D Jakou hodnotu má x? Spočíteme i: x=- m D Zvolme F = +x. Všimněme si akou vlastnost bude mít m D *F AM36APO Architektury počítačů 79
Iterační dělička - Goldschmidt Pokud budeme volit Fi tak, aby menovatel konvergoval k, bude čitatel konvergovat k podílu mantis. Pokud F =+x. Potom m D *F = (-x)*(+x) = -x 2 D N D N D N e e D N e e D N e D e N F m F m m m m m D N Q = = = = 2 2 2 2 AM36APO Architektury počítačů 8 ) )...( )( (......... 2 2 3 2 3 2 3 2 i x x x m F F F F m F F F F m F F F F m m m N N D N D N + + + = = Zvolme F =+x 2. Potom m D *F *F = (-x 2 )*(+x 2 ) = -x 4
Iterační dělička Goldschmidt vylepšená verze S rostoucím x ( < x,5) se konvergence zhoršue. Pokud x ==.5 e nehorší. Jinými slovy, pro fixní počet iterací se snižue přesnost výsledku. Modifikace Goldschmidtova algoritmu spočívá v odhadu (nepřesném) převrácené hodnoty K hodnoty m D z look-up tabulky podle několika málo prvních bitů ( ). Místo původního x=- m D počítáme s x=- Km D mn 2 mn K( + x)( + x )...( + x m D Tato dělička se používá v moderních CPU. Kontrolní otazka: Můžeme tuto deličku použít i pro INTEGER? 2 i ) AM36APO Architektury počítačů 8
Nadete všechny chyby v programu? Chceme napsat program pro zištění součtu: N i= i 2 #include <stdio.h> int main() { int i, sum=; for(i=; i<= ^; i++) sum += /i*i; printf( Soucet e: %d,sum); return ; } AM36APO Architektury počítačů 82
Nadete všechny chyby v programu? Který způsob e nevýhodněší? N i= i= i= = 2 i i= N = 2 i N i= ( N i + ).6449345783865, 2 i.644934667482264 2 i 2 typ double pro oba případy.. Proč se liší? AM36APO Architektury počítačů 83
Překvapení na závěr??? #include <stdio.h> int main() { float x; x = 677725.; printf("%.3lf\n", x); x = 677726.; printf("%.3lf\n", x); x = 677727.; printf("%.3lf\n", x); x = 677728.; printf("%.3lf\n", x); x = 677729.; printf("%.3lf\n", x); x = 677722.; printf("%.3lf\n", x); x = 677722.; printf("%.3lf\n", x); return ; } AM36APO Architektury počítačů 84