Architektura počítačů Procesor V přednášce byly použity (se souhlasem vydavatelství) obrázky z knihy Paterson, D., Henessy, V.: Computer Organization and Design, The HW/SW Interface. Elsevier, ISBN: 978--2-3766-5 České vysoké učení technické, Fakulta elektrotechnická AB36APO Architektura počítačů Ver..
Osnova přednášky. Aritmetické operace, základní HW pro realizaci aritmetických a logických operací 2. Návrh ednoduchého procesoru 3. Řadič procesoru, eho funkce a možnosti realizace AB36APO Architektura počítačů 2
Aritmetické operace znaménková čísla Přímý kód Zvlášť pracueme se znaménkem a zvlášť s hodnotou Algoritmus pro + a - -3-3 + -6-4 +5 +?????? 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
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čů 4
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čů 5
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čů 6 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) A B Sub (subtraction) b n b b Invertor XOR c přenos do nenižšího řádu c přenos do nenižšího řádu AM36APO Architektury počítačů 7
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čů 8
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 AM36APO Architektury počítačů 9 n A n B n C n C n+ S n
Paralelní sčítačka s minimálním zpožděním AM36APO Architektury počítačů 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 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čů
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čů 2 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): Pak: součet v -tem řádu: přenos do vyššího (+) řádu: AM36APO Architektury počítačů 3 y x g = y x y x y x p = = ( ) ( ) 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čů 4
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čů 5
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čů 6
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čů 7
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 c 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- 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čů 8
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čů 9
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čů 2
Násobení binárních čísel bez znaménka pro připomenutí AM36APO Architektury počítačů 2
Sekvenční HW násobička (varianta 32b) AC MQ Diskuze o rychlosti: ta e ale pomalá, co? AM36APO Architektury počítačů 22
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čů 23
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čů 24
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čů 25
Násobička v doplňkovém kódu Boothova metoda APO en pro informaci AM36APO Architektury počítačů 26
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čů 27
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čů 28
HW dělička algoritmus dělení AM36APO Architektury počítačů 29
Sekvenční HW dělička (varianta 32b) dělenec = podíl dělitel + zbytek AC MQ AM36APO Architektury počítačů 3
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čů 3
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čů 32
Procesor AB36APO Architektura počítačů Ver.. 33
Počítač podle von Neumanna tvoří Řadič ALU Paměť Vstup Výstup Procesor/mikroprocesor Harvardská architektura e variantou s oddělenou pamětí programu a pamětí dat V/V podsystém (V/V = I/O) Řadič - součást (ednotka) počítače/procesoru, která eho činnost řídí. Sestává ze dvou částí: datové registry, další potřebné obvody, vlastní řídicí části, z tzv. ádra řadiče. AB36APO Architektura počítačů 34
Důležité registry řadiče PC (Program Counter), programový čítač. IR (Instruction Register), registr instrukce Další Univerzální nebo pracovní registry, SP (Stack Pointer), ukazatel zásobníku, PSW Program Status Word), stavové slovo programu, IM (Interrupt Mask), maska přerušení. AB36APO Architektura počítačů 35
Základní cyklus počítače sekvenční postup vykonávání instrukcí. Počáteční nastavení, zeména např. PC. 2. Čtení instrukce PC adresa hlavní paměti, Čtení obsahu, Přečtená data IR, PC+l PC, kde l e délka instrukce. 3. Dekódování operačního znaku (OZ), 4. provedení operace (včetně vyhodnocení efektivních adres, čtení operandů, apod.). 5. Dotaz na možné přerušení. Ano-li, obsluha. 6. Ne-li, opakování od bodu 2. AB36APO Architektura počítačů 36
Kompilace a kódování programu int pow = ; int x = ; while(pow!= 28) { pow = pow*2; x = x + ; } addi s, $, // pow = addi s, $, // x = addi t, $, 28 // t = 28 while: beq s, t, done // if pow==28, go to done sll s, s, // pow = pow*2 addi s, s, // x = x+ while done: x 2 x 2 x 2 8 8 x 2 8 4 x x 8 4 x 8 8 3 x 22 3 AB36APO Architektura počítačů 37
Obvodová realizace základního cyklu počítače Adresa příští instrukce Konstanta 4 Programový čítač, 32 b Paměť instrukcí Instrukce, 32 b Adresa instrukce AB36APO Architektura počítačů 38
Úkol pro tuto přednášku: Porozumět implementaci ednoduchého počítače tvořeného procesorem, oddělenými pamětmi instrukcí a dat a ALU, který umí instrukce Čtení a zápis do datové paměti lw a sw, Aritmetické-logické instrukce add, sub, and, or a slt a Skokové instrukce beq. V procesoru bude řídicí ednotka (řadič) i ALU. Poznámka: Na této přednášce e budeme implementovat ednoduše (ako ednocyklový), Na 4. přednášce ukážeme více realistickou, zřetězenou verzi. AB36APO Architektura počítačů 39
Formát instrukcí Uvažume tři typy instrukcí dle tabulky: Typ 3 R opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 rd(5), 5: shamt(5) funct(6), 5: I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: J opcode(6), 3:26 address(26), 25: všechny R instrukce -> opcode=, funct operace rs source, rd destination, rt source/destination shamt při operacích posunu, immediate přímý operand K dispozici e 32 pracovních registrů AB36APO Architektura počítačů 4
Která e to instrukce? Na základe opcode a funct (pokud e to R typ) Opcode R typ lw sw beq Funct add sub and or slt AB36APO Architektura počítačů 4
K dispozici máme tyto stavební prvky CLK PC PC 32 32 32 A RD 32 Instr. Memory (ROM) 5 5 5 32 CLK WE3 A RD A2 RD2 A3 Reg. WD3 File 32 32 32 32 CLK WE A RD Data Memory WD 32 Multiplexor Zápis náběžnou hranou CLK při WE = Čtení po uplynutí dostatečně dlouhé doby AB36APO Architektura počítačů 42
Výklad syntaxe a sémantiky instrukce: například lw lw load word -čtení slova z datové paměti Description Operation: Syntax: Encoding: A word is loaded into a register from the specified address $t = MEM[$s + offset]; lw $t, offset($s) ss ssst tttt iiii iiii iiii iiii Uložme slovo z paměti na adrese x4 do registru č.: lw $, x4($) ss ssst tttt iiii iiii iiii iiii 4 x 8C B 4 stroový kód instrukce lw $, x4($) Poznámka: V registu $ e trvale uložena konstanta. AB36APO Architektura počítačů 43
Jedno-cyklový procesor návrh podpora čtení z paměti lw: typ I, rs bázová adresa, imm offset, rt kde uložit I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: ALUControl PC PC Instr 25:2 A RD Instr. Memory WE3 A RD A2 RD2 A3 Reg. WD3 File SrcA SrcB ALU Zero AluOut WE A RD Data Memory WD ReadData 5: Sign Ext SignImm AB36APO Architektura počítačů 44
Jedno-cyklový procesor návrh podpora čtení z paměti lw: typ I, rs bázová adresa, imm offset, rt kde uložit I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: PC PC Instr 25:2 A RD Instr. Memory Zápis při náběžné hraně CLK RegWrite = 2:6 WE3 A RD A2 RD2 A3 Reg. WD3 File SrcA SrcB ALUControl ALU Zero AluOut WE A RD Data Memory WD ReadData 5: Sign Ext SignImm AB36APO Architektura počítačů 45
Jedno-cyklový procesor návrh podpora čtení z paměti lw: typ I, rs bázová adresa, imm offset, rt kde uložit I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: RegWrite = ALUControl PC PC Instr 25:2 A RD Instr. Memory 2:6 WE3 A RD A2 RD2 A3 Reg. WD3 File SrcA SrcB ALU Zero AluOut WE A RD Data Memory WD ReadData 4 PCPlus4 + 5: Sign Ext SignImm AB36APO Architektura počítačů 46
Jedno-cyklový procesor návrh podpora zápis do paměti sw: typ I, rs bázová adresa, imm offset, rt co zapsat I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: RegWrite = ALUControl MemWrite = PC PC Instr 25:2 WE3 A RD A RD Instr. 2:6 A2 RD2 Memory 2:6 A3 Reg. WD3 File SrcA SrcB ALU Zero AluOut WE A RD Data Memory WD ReadData 4 PCPlus4 + 5: Sign Ext SignImm AB36APO Architektura počítačů 47
Jedno-cyklový procesor návrh podpora add add: typ R; rs, rt zdroe, rd cíl, funct operace součtu R opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 rd(5), 5: shamt(5) funct(6), 5: RegWrite = ALUSrc = MemToReg = RegDst = ALUControl PC 4 PCPlus4 PC Instr 25:2 WE3 A RD A RD Instr. 2:6 A2 RD2 Memory A3 Reg. WD3 File 2:6 + 5: 5: Sign Ext Rt Rd SignImm SrcA Zero WE ALU A RD SrcB AluOut Data ReadData Memory WriteData WD WriteReg Result AB36APO Architektura počítačů 48
Jedno-cyklový procesor návrh podpora sub, and, or, slt ediné v čem se liší od add e operace ALU -> datapath beze změny; rozdíl v ALUControl RegWrite = ALUSrc = MemToReg = RegDst = ALUControl PC 4 PCPlus4 PC Instr 25:2 WE3 A RD A RD Instr. 2:6 A2 RD2 Memory A3 Reg. WD3 File 2:6 + 5: 5: Sign Ext Rt Rd SignImm SrcA Zero WE ALU A RD SrcB AluOut Data ReadData Memory WriteData WD WriteReg Result AB36APO Architektura počítačů 49
Jedno-cyklový procesor návrh podpora beq beq branch if equal; imm offset; PC = PC+4 + SignImm*4 I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: RegWrite = ALUSrc = Branch = RegDst = x ALUControl MemToReg = x PC PC Instr 25:2 WE3 A RD A RD Instr. 2:6 A2 RD2 Memory A3 Reg. WD3 File 2:6 4 PCPlus4 + 5: 5: Sign Ext Rt Rd <<2 SignImm SrcA Zero WE ALU A RD SrcB AluOut Data ReadData Memory WriteData WD WriteReg + PCBranch Result AB36APO Architektura počítačů 5
Jedno-cyklový procesor výkon: IPS = IC / T = IPC str.f CLK Jaká může být maximální frekvence procesoru? Zpoždění na kritické cestě instrukce lw: Tc = t PC + t Mem + t RFread + t ALU + t Mem + t Mux + t RFsetup PC PC 4 PCPlus4 A RD Instr. Memory + Instr 25:2 2:6 2:6 5: 5: WE3 A RD A2 RD2 A3 Reg. WD3 File Sign Ext Rt Rd <<2 SignImm SrcA Zero WE ALU A RD SrcB AluOut Data ReadData Memory WriteData WD WriteReg + PCBranch Result AB36APO Architektura počítačů 5
Jedno-cyklový procesor výkon: IPS = IC / T = IPC str.f CLK Tc = t PC + t Mem + t RFread + t ALU + t Mem + t Mux + t RFsetup Předpokládeme: t PC = 3 ns t Mem = 3 ns t RFread = 5 ns t ALU = 2 ns t Mux = 2 ns = 2 ns t RFsetup Pak Tc = 2 ns --> f CLK max = 98 khz, IPS =. 98e3 = 98 instrukcí za sekundu AB36APO Architektura počítačů 52
Důležitá poznámka Tenhle výsledek si, prosím, zapamatute. Budeme s ním pracovat na 5. přednášce. Dnes se dále budeme zabývat porozuměním funkci řadiče (řídicí ednotky). AB36APO Architektura počítačů 53
Jedno-cyklový procesor návrh řídicí část R opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 rd(5), 5: shamt(5) funct(6), 5: I opcode(6), 3:26 rs(5), 25:2 rt(5), 2:6 immediate (6), 5: J opcode(6), 3:26 address(26), 25: řídicí signály na základe opcode a funct 5 Opcode 5 ALUOp Hlavní dekóder 2 funct Dekóder ALU 3 ALUControl ALUOp součet rozdíl Opcode RegWrite RegDst ALUSrc ALUOp Branch Mem Write podle funct -nepoužito- MemTo Reg R typ lw sw X X beq X X AB36APO Architektura počítačů 54
Řízení ALU (Funkce dekodéru ALU) ALUOp Funct ALUControl X (add) X (sub) X add () (add) X sub () (sub) X and () (and) X or () (or) X slt () (set less than) AB36APO Architektura počítačů 55
Řadič edno-cyklového procesoru 3:26 5: Control Unit Opcode Funct MemToReg MemWrite Branch ALUControl 2: ALUScr RegDest RegWrite PC PC A RD Instr 25:2 Instr. 2:6 Memory 4 PCPlus4 + 2:6 5: 5: WE3 A RD A2 RD2 A3 Reg. WD3 File Sign Ext Rt Rd <<2 SignImm SrcA Zero WE ALU A RD SrcB AluOut Data ReadData Memory WriteData WD WriteReg + PCBranch Result AB36APO Architektura počítačů 56
Co e řadič (řídicí ednotka) procesoru? Funkce řadiče: V příslušný časový okamžik generovat řídicí signály a přiímat signály stavové. Řadič ednotka/sekvenční obvod, výstupy: řídicí signály, vstupy: stavové signály. Poznámka pro náš specifický případ: náš řadič reague např. na stavový signál Zero. AB36APO Architektura počítačů 57
Co e řadič procesoru? Obecněi: Řadič řídí činnost ednotlivých ednotek, koordinue eich aktivity a zaišťue tok informace mezi nimi. Z hlavní paměti získává instrukce (sekvenci instrukcí), které maí být vykonány. Dekódue e, a na základě typu instrukce nastaví příslušné hradla a datové cesty aby mohla být instrukce vykonána. Obecně, funkcí řadiče e generovat sekvenci řídicích signálu různým subsystémům počítače ve správném pořadí tak, aby byly vykonány požadované operace (aritmetické, změny toku programu a.). Každý krok v sekvenci kroků vykonávaných řídicí ednotkou v průběhu vykonávání dané instrukce může být definován ako mikrooperace. Mikro-operace e tedy elementární operace (obvykle) vykonaná nad edním nebo několika registry. Výsledkem mikrooperace e typicky změna obsahu registru (registrů). AB36APO Architektura počítačů 58
Možné realizace řadiče Řadič klasický, též obvodově realizovaný, tedy tzv. obvodový : řadič s řídicími řetězci, řadič na bázi čítače, inak navržený. Řadič mikroprogramovaný (řízený mikroprogramem): horizontální, vertikální, diagonální. AB36APO Architektura počítačů 59
Realizace: řadič s řídicími řetězci Stavové signály Řídicí signály Konečný automat Řídicí řetězec Důležitá poznámka: označení stavů a názvy řídicích a stavových signálů na obrázku neodpovídaí našemu specifickému případu! Činnost řadiče může být popsána konečným automatem (lze relativně snadno popsat azykem na popis HW Verilog/VHDL), zeména při multicyklovém vykonávání instrukcí. Jednotlivým stavům automatu přináleží konkrétní nastavení řídicích signálů, přechodům pak podmínky (stavová hlášení, typ instrukce,...), při kterých se mezi těmito stavy přechází. AB36APO Architektura počítačů 6
Stavový automat řadiče - příklad AB36APO Architektura počítačů 6
Stavový automat řadiče - příklad Obecný model logického sekvenčního obvodu (Huffmann) řadič I Logický komb. obvod O t+ =g(s t, I t ) O S Paměťová část S t+ =f(s t, I t ) AB36APO Architektura počítačů 62
Stavový automat řadiče - příklad Implementovat Control logic z předchozího slide prakticky můžeme třema způsoby: Jako kombinační logický obvod Pomocí paměti ROM (vstupy do řadiče budou představovat adresní vodiče pro paměť ROM) Pomocí PLA (programmable logic array) AB36APO Architektura počítačů 63
Mikroprogramovaný řadič Nedílnou součástí mikroprogramovaného řadiče eřídicí paměť obsahuící mikroinstrukce, přičemž každá ze stroových instrukcí e provedena pomocí edné nebo několika ednodušších mikroinstrukcí. Vstup - kódy instrukcí načtené z operační paměti Výstup -řídicí signály uvnitř procesorou (ALU, interní sběrnice ), externí signály (paměť, ) Operační znak instrukce udává adresu první mikroinstrukce z řídicí paměti, která implementue danou operaci. Mikroprogram implementue programátorovi viditelné stroové instrukce (add, sub, lw, xor, mp ) - ISA AB36APO Architektura počítačů 64
Mikroprogramovaný řadič OR Operační znak instrukce (opcode) CMIAR - Current Microinstruction Address Register (µpc) Úkolem této části e určit adresu mikroprogramu µpc Zde může alternativně být tzv. sequencer = Next Address Generator AB36APO Architektura počítačů 65
Příklady mikro-operací: Mikroprogramovaný řadič R(MAR) R(CIAC) Obsah Current Instruction Address Counter do Memory Address Register R(CIAC) R(CIAC)+ Inkrementace registru CIAC M(MBR) M(MAR) Výběr z paměti IF F(S) THEN R(A) R(MDR) K realizaci mikro-operace může být zapotřebí ednoho nebo několika řídicích signálů. AB36APO Architektura počítačů 66
Jak může vypadat mikroprogram? Realizace instrukce add µinstrukce. PC out, MAR in, Read, Zero A, Set Carry-In, Add, Z in. Z out, PC in, Wait MFC 2. MDR out, IR in 3. AddressFieldOfIR out, MAR in, Read 4. R out, Y in, Wait MFC 5. MDR out, Add, Z in, Set CC 6. Z out, R in, End µoperace John Franco: What is Microprogramming and Why Should We Know About it? http://gauss.ececs.uc.edu/courses/c429/exams/spring23/review/microcode.pdf AB36APO Architektura počítačů 67
Mikroprogramovaný řadič Organizace mikroinstrukcí horizontální, vertikální a diagonální Vertikální: Pokud budeme uvažovat N typů mikrooperací, postačue log 2 N bitů pro specifikaci mikrooperace. Nicméně potřebueme dekodéry pro generování řídicích signálů. Jedna mikroinstrukce pak vykoná pouze ednu mikrooperaci. Kódování po skupinách -> Jedna mikroinstrukce pak může vykonat několik mikrooperací. Horizontální: Každý bit mikroinstrukce může reprezentovat specifickou mikrooperaci. Takže pro N typů mikroinstrukcí potřebueme N bitů. Můžeme vykonat libovolnou množinu mikrooperací paralelně v ediné mikroinstrukci. AB36APO Architektura počítačů 68
Mikroprogramovaný řadič AB36APO Architektura počítačů 69
Mikroprogramovaný řadič Diagonální: Kompromis. Některé bloky zakódovány horizontálně a iné vertikálně. Horizontální formát má bity pro ednotlivé signály přímo uloženy v mikroinstrukci (bez nutnosti dalšího dekódování). Vertikální formát kódue větší skupinu navzáem se vylučuících signálů (aktivní e pouze eden) společně do ednoho bloku. Poznámka k terminologii: Horizontální vs. vertikální primárně slouží k rozlišení toho, zda mikroinstrukce přímo řídí součásti CPU (horizontální), nebo potřebue další dekódovací stupně (vertikální). Mikroprogramovaný řadič e vlastně počítačem v počítači. AB36APO Architektura počítačů 7
Mikroprogramovaný řadič Závěr k mikroprogramovaným řadičům: Mikroprogram e vlastně vrstvou mezi stroovými instrukcemi a samotným HW. Slouží k implementaci stroových instrukcí v řídicí ednotce CPU, GPU, řadičů disků, řadičů síťových rozhraní, atd. Pomáhá oddělit stroové instrukce od elektronických obvodů, což rovněž pomáhá implementovat komplexní instrukce bez nárůstu složitosti HW. Programování pomocí mikroinstrukcí se označue mikroprogramování. Napsaný kód, který e uložen (ROM, PLA, flash) uvnitř řadiče e pak mikroprogram. Při návrhu řadičů moderních procesorů využívaících zřetězení použití mikroprogramovaného řadiče není populární, m. i z důvodu samotné podstaty sekvenčního vykonání mikroprogramu. AB36APO Architektura počítačů 7
Mikroprogramovaný vs. klasický řadič - srovnání Rychlost - klasický e rychleší. Cena levněší e Klasický, ale en v případě velmi ednoduché variantě. Ve složitěší e ím řadič mikroprogramovaný. Flexibilita mikroprogramovaný. Změna mikroprogramu změna chování procesoru. Řídicí paměť ROM pevné mikroinstrukce RWM - µprogramovatelný procesor, možná emulace iné instrukční sady. Mikroprogramovaný řadič neefektivní pro zřetězené procesory (alespoň ako centralizovaný) každý stupeň vykonává inou instrukci. Bylo by potřeba zaistit správné provedení všech instrukcí napříč stupni spolu s řešením hazardů. AB36APO Architektura počítačů 72