Architektura počítačů Implementace procesoru http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematcs and physics
Ukázková architektura: MIPS Základní charakteristka Zjednodušená oprot reálným implementacím Z důvodu názornost, ale stále dostatečně silná Registry obecných -bitových registrů R0 R31 (general purpose) Registr PC s adresou následující instrukce pro dekódování Speciální řídící registry Adresa instrukce, která vyvolala výjimku, apod. Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 2/71
Ukázková architektura: MIPS (2) Paměť Přístup pouze na zarovnané adresy (dělitelné 4) Odpovídá délce slova bitů Nepřímá adresace s posunutm (indirect with immediate displacement) Load: R2 := mem[r1 + immediate] Store: mem[r1 + immediate] := R2 Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 3/71
Ukázková architektura: MIPS (3) Operace Tříoperandové operace Zdrojové operandy: registr/registr, registr/immediate Cílový operand: registr Aritmetcké a logické operace, přesun dat mezi registry Architektura load/store Přesuny dat mezi pamět a registry Podmíněné skoky Při rovnost/nerovnost obsahu dvou registrů Nepodmíněné skoky Včetně nepřímých skoků, volání a návrat z podprogramu Speciální instrukce Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 4/71
Jednocyklová datová cesta Základní uspořádání logických celků procesoru Spojení kombinačních a sekvenčních obvodů Veškeré operace provedeny v jednom cyklu Zpracování každé instrukce má jedinou fázi (jeden atomický krok) Vhodné pro operace přibližně srovnatelné složitost Časový signál považujeme za implicitní Zjednodušení: Oddělená instrukční paměť (Harvardská architektura) Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 5/71
Ukázková architektura: MIPS (3) Kroky zpracování instrukce 1. Čtení kódu instrukce z pamět na adrese PC 2. Dekódování instrukce a čtení operandů 3. Vykonání operace odpovídající instrukčnímu kódu Operace s obsahem registrů, výpočet adresy pro čtení (zápis) v pamět, porovnávání operandů pro podmíněný skok 4. Uložení výsledku operace Uložení výsledku do registru, čtení (zápis) v pamět 5. Posun PC na následující instrukci Bezprostředně následující, vyjma podmíněného/nepodmíněného skoku nebo výjimky Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 6/71
7/71 Sekvenční obvod čtení instrukce (fetch) PC 4 Fetch address add Instructon Instructon Memory opcode Registr PC Adresa instrukce v pamět Pro programátora není přímo přístupný Sčítačka Inkrementace PC o 4 Implicitní posun na následující instrukci
8/71 Registrové operace (add, sub,...) op (6) rs (5) rt (5) rd (5) sa (5) funct (6) RegWrite funct rs rt rd 5 5 5 Read register 1 Read register 2 Write register Write data Register data 1 Register data 2 ALUOp ALU result Register File
9/71 Podpora registrových operací 4 RegWrite ALUOp add I[25:21] I[20:16] RS RT A B ALU result PC Addr I[15:11] RD Insn WD IM RF
10/71 Operace s přímými operandy (addi,...) op (6) rs (5) rt (5) immediate (16) immediate 16 RegWrite Sign ext. ALUOp rs rt 5 5 Read register 1 Write register Register data 1 ALU result Write data Register File
11/71 Logický obvod znaménkového rozšíření 16 to bit Sign Extend y 31 y 16 x 15 y 15 x 0 y 0
12/71 Podpora přímých operandů 4 add I[15:0] Sign ext. RegWrite ALUOp PC Addr I[25:21] I[20:16] RS RT A B MUX ALU result Insn IM I[15:11] MUX RegDst RD WD RF ALUSrc
13/71 Podpora přímých operandů 4 add I[15:0] Sign ext. RegWrite ALUOp PC Addr I[25:21] I[20:16] RS RT A B MUX ALU result Insn IM I[15:11] MUX RegDst RD WD RF ALUSrc
14/71 Multplexer (mux) Přepínač vstupů Logický prvek pro výběr vstupu n 1} Selektor: n-bitové číslo S {0,..., 2 Vstup: N=2 n m-bitových hodnot x 0, x 1,..., x N 1 Výstup: m-bitová hodnota y=x S x 0 x 1 x N 1 0 1 N 1 y s S
1-hot 15/71 Binární dekodér do kódu 1 z N Binary to 1-hot Logický prvek pro aktvaci 1 z N výstupů na základě hodnoty na vstupu n 1} Vstup: n-bitové číslo B {0,..., 2 N=2 n výstupů: B-tý výstup logická 1 (hot), ostatní logická 0 h 0 B h 1 h 2 h 3
16/71 Binární dekodér pro N=4 Vstupy Výstupy B 1 B 0 h 3 h 2 h 1 h 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 B 0 B 1 h 0 h 1 h 2 h 3 1-hot
17/71 Přepínač vstupů pro N=4, m=1 S Mux x 0 x 1 y x 2 x 3
18/71 Čtení dat z pamět (ld) op (6) rs (5) rt (5) displacement (16) displacement 16 RegWrite Sign ext. ALUOp rs rt 5 5 Read register 1 Write register Write data Register File Register data 1 ALU Address Data Data Memory
19/71 Zápis dat do pamět (st) op (6) rs (5) rt (5) displacement (16) displacement rs rt 5 Read register 1 16 RegWrite Sign ext. Register data 1 5 Read Register register 2 data 2 ALUOp ALU MemWrite Address Data Register File Data Memory
MUX 20/71 Podpora přístupu do pamět PC 4 Addr Insn add I[15:0] I[25:21] I[20:16] Sign ext. RegWrite RS RT A B MUX ALUOp ALU MemWrite Addr Data IM I[15:11] MUX RT/RD ALUSrc DM RegDst WD MemToReg RF
MUX 21/71 Podpora přístupu do pamět PC 4 Addr Insn add I[15:0] I[25:21] I[20:16] Sign ext. RegWrite RS RT A B MUX ALUOp ALU MemWrite Addr Data IM I[15:11] MUX RT/RD ALUSrc DM RegDst WD MemToReg RF
MUX 22/71 Podmíněný skok s relatvní adresou (b) op (6) rs (5) rt (5) ofset (16) 4 Branch add PC ofset 16 Sign ext. Shl 2 add RegWrite ALUOp rs rt 5 5 Read register 1 Read register 2 Register data 1 Register data 2 ALU zero? Register File
23/71 Logický obvod logického posunu vlevo x 31 x 30 bit shif lef logical 2 y 31 x 29 y 3 x 1 0 y 1 x 0 0 y 0 y 2
MUX MUX 24/71 Podpora podmíněného skoku 4 add I[15:0] I[25:21] Sign ext. RegWrite RS A Shl 2 Branch add ALUOp MemWrite PC Addr Insn IM I[20:16] I[15:11] MUX RT B RT/RD MUX ALUSrc ALU Addr Data DM RegDst WD MemToReg RF
MUX MUX 25/71 Podpora podmíněného skoku 4 add I[15:0] I[25:21] Sign ext. RegWrite RS A Shl 2 Branch add ALUOp MemWrite PC Addr Insn IM I[20:16] I[15:11] MUX RT B RT/RD MUX ALUSrc ALU Addr Data DM RegDst WD MemToReg RF
26/71 Nepodmíněný absolutní skok (j) op (6) target (26) 28 4 add PC+4[31:28] 4 PC target 26 Shl 2
MUX Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 MUX MUX 27/71 Podpora nepodmíněného skoku 4 Jump add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite RS A Shl 2 Branch add ALUOp MemWrite PC Addr Insn IM I[20:16] I[15:11] MUX RT B RT/RD MUX ALUSrc ALU Addr Data DM RegDst WD MemToReg RF
MUX Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 MUX MUX 28/71 Podpora nepodmíněného skoku 4 Jump add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite RS A Shl 2 Branch add ALUOp MemWrite PC Addr Insn IM I[20:16] I[15:11] MUX RT B RT/RD MUX ALUSrc ALU Addr Data DM RegDst WD MemToReg RF
MUX Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 MUX MUX 29/71 Řízení jednocyklové datové cesty 4 Jump add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite RS A Shl 2 Branch add ALUOp MemWrite PC Addr Insn IM I[20:16] I[15:11] MUX RT B RT/RD MUX ALUSrc ALU Addr Data DM RegDst WD MemToReg RF
Řízení jednocyklové datové cesty (2) Řízení průchodu dat V závislost na typu operace Generování řídících signálů Zdroj hodnoty PC Zápis do registrů Čtení/zápis pamět Operace ALU Nastavení multplexerů Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 30/71
0 1 Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 1 0 0 1 31/71 Příklad: Řízení datové cesty pro add Jump=0 4 add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite=1 RS A Shl 2 Branch=0 add ALUOp=add MemWrite=0 PC Addr Insn IM I[20:16] I[15:11] 1 0 RT B RT/RD 1 0 ALUSrc=1 ALU Addr Data DM RegDst=1 WD MemToReg=0 RF
0 1 Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 1 0 0 1 /71 Příklad: Řízení datové cesty pro sw Jump=0 4 add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite=0 RS A Shl 2 Branch=0 add ALUOp=add MemWrite=1 PC Addr Insn IM I[20:16] I[15:11] 1 0 RT B RT/RD 1 0 ALUSrc=0 ALU Addr Data DM RegDst=? WD MemToReg=? RF
0 1 Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 1 0 0 1 33/71 Příklad: Řízení datové cesty pro beq Jump=0 4 add PC+4[31:28] I[15:0] I[25:0] I[25:21] Sign ext. Shl 2 RegWrite=0 RS A Shl 2 Branch=1 add ALUOp=sub MemWrite=0 PC Addr Insn IM I[20:16] I[15:11] 1 0 RT B RT/RD 1 0 ALUSrc=1 ALU Addr Data DM RegDst=? WD MemToReg=? RF
Řadič datové cesty Data path controller Logický obvod generující řídící signály Hodnoty signálů závisí na operačním kódu instrukce Některé mohou být přímo součást instrukčního kódu MIPS: Část signálů ALUOp odpovídá bitům v poli funct instrukcí formátu R-type Zjednodušuje implementaci řadiče Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 34/71
35/71 Řadič pomocí ROM Řadič s řídící pamět Slova v pamět reprezentují hodnoty řídících signálů Hodnota operačního kódu adresuje řádky pamět opcode Jump Branch RegDst RegWrite MemWrite MemToReg ALUOp ALUSrc add 0 0 1 1 0 0 add 1 addi 0 0 0 1 0 0 add 0 lw 0 0 0 1 0 1 add 0 sw 0 0? 0 1? add 0 beq 0 1? 0 0? sub 1 j 1?? 0 0???
Řadič pomocí ROM (2) Reálný procesor MIPS Zhruba 100 instrukcí a 300 řídících signálů Kapacita řídící ROM zhruba 30000 bitů (~ 4 KB) Implementační problémy Jak vyrobit ROM rychlejší než je datová cesta Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 36/71
Řadič pomocí kombinačního obvodu Rychlejší alternatva k ROM Pozorování: Mnoho řídících signálů má málo jedniček nebo nul Obsah ROM lze kompaktně reprezentovat logickými funkcemi add Opcode addi lw beq sw j Jump MemWrite Branch ALUOp MemToReg RegDst RegWrite ALUSrc Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 37/71
Průběh hodinového cyklu Datová cesta s nepřetržitým čtením V našem návrhu není na závadu Zápisy (PC, RF, DM) jsou nezávislé V rámci cyklu žádné čtení nenásleduje po zápisu Čtení instrukce (fetch) nepotřebuje řízení Po přečtení instrukce řadič dekóduje operační kód na řídící signály pro zbývající část datové cesty Při změně PC se začne zpracovávat další instrukce Čtení z instrukční pamět Čtení registrů (Čtení z řídící ROM) Čtení z datové pamět Zápis do datové pamět Zápis do registrů Zápis do PC Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 38/71
Výkon jednocyklového procesoru Každá instrukce trvá právě 1 takt (CPI=1) Jednocyklový řadič (řídící ROM nebo kombinační obvod) Obecně nižší taktovací frekvence Délka cyklu odpovídá délce nejdelší instrukce V našem případě load Obvykle násobení, dělení nebo foatng point operace Datová cesta obsahuje duplicitní prvky Instrukční a datová paměť, dvě sčítačky navíc Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 39/71
Vícecyklová datová cesta Základní myšlenka Proměnná doba zpracování instrukcí Jednoduché instrukce by neměly trvat stejně dlouho jako složité Perioda hodinového signálu je konstantní zpracování instrukce rozděleno do více kroků Perioda hodinového signálu odpovídá délce kroku Instrukční cyklus vs. strojový cyklus Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 40/71
Výkon vícecyklového procesoru Hrubý odhad Předpoklady Jednoduché instrukce trvají 10 ns Násobení trvá 40 ns Typický instrukční mix obsahuje v průměru 10 % násobení Jednocyklová datová cesta Perioda hodin 40 ns, CPI=1 výkon 25 MIPS Vícecyklová datová cesta Perioda hodin 10 ns, CPI=1,3 průměrně 13 ns na instrukci, výkon 77 MIPS (trojnásobné zlepšení) Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 41/71
42/71 Rozdělení instrukce do kroků Obvyklý instrukční cyklus 1. Čtení instrukce 2. Dekódování instrukce, čtení registrů 3. Vykonání operace / výpočet adresy / dokončení větvení 4. Zápis výsledku / přístup do pamět 5. Dokončení čtení z pamět
Vícecyklová datová cesta (2) Princip implementace Rozdělení zpracování instrukce do kroků Izolace kroků pomocí registrů pro mezivýsledky Funkce řadiče Realizace návaznost jednotlivých kroků v datové cestě Některé instrukce mohou některé kroky přeskočit a skončit dříve Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 43/71
44/71 Vícecyklová datová cesta (3) PC Address Instructon or Data Data Insn Register Read register 1 Read register 2 Write register Register data 1 Register data 2 A B ALU ALU Out Memory Data Register Write data Register File
1. krok: Čtení instrukce Současně probíhá IR Memory[PC] Přečtení instrukce do instrukčního registru PC PC + 4 Posun PC na adresu další instrukce v sekvenci Změna hodnoty PC čtení instrukce neovlivní, protože přečtená instrukce je již v instrukčním registru Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 45/71
2. krok: Dekódování instrukce, čtení reg. Současně probíhá A Reg[IR.rs] Přečtení obsahu zdrojového registru A B Reg[IR.rt] Přečtení obsahu zdrojového registru B ALUOut PC + (SignExtend(IR.addr) << 2) Výpočet adresy podmíněného skoku Pokud instrukce není skok, výsledek se nepoužije Další kroky se liší podle typu instrukce Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 46/71
3. krok: Vykonání operace / výpočet adr. Instrukce podmíněného skoku (konec) (A == B) PC ALUOut Cíl skoku vypočítaný v předchozím kroku Instrukce nepodmíněného skoku (konec) PC PC[31:28] + (IR[25:0] << 2) Aritmetcko-logická operace ALUOut A funct B ALUOut A funct SignExtend(IR[15:0]) Přístup do pamět ALUOut A + SignExtend(IR[15:0]) Výpočet adresy pro přístup do pamět Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 47/71
48/71 4. krok: Zápis výsledku / přístup do pam. Aritmetcko-logická operace (konec) Reg[IR.rd] ALUOut Zápis do pamět (konec) Memory[ALUOut] B Čtení z pamět DR Memory[ALUOut]
49/71 5. krok: Dokončení čtení z pamět Čtení z pamět (konec) Reg[IR.rt] DR
50/71 Implementace vícecyklové datové cesty PC IorD MemWrite IRWrite RegDst RegWrite ALUSrcA 1 0 Address Data Data Memory MemRead Insn Register [25:21] [20:16] [15:0] [15:11] Data Register 1 0 0 1 Read register 1 Read register 2 Write register Write data Register data 1 Register data 2 Register File A B 4 1 0 ALUSrcB 3 2 1 0 ALU ALU Control ALUOp ALU Out MemToReg [15:0] [5:0] 16 Sign Shl ext. 2
Řízení vícecyklové datové cesty Sekvenční proces Zpracování instrukcí ve více hodinových cyklech Řadič je sekvenční obvod (konečný automat) Aktuální stav řadiče uchováván v paměťovém prvku (stavovém registru) Kombinační logika určuje následující stav, který se do stavového registru zapíše s náběžnou hranou hodinového signálu START Instructon fetch/decode Register fetch Memory access instructons R-type instructons Branch instructon Jump instructon Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 51/71
52/71 Instructon fetch/decode, Register fetch Instructon fetch START 0 MemRead ALUSrcA=0 IorD=0 IRWrite ALUSrcB=01 ALUOp=00 PCWrite PCSource=00 1 Instructon decode Register fetch ALUSrcA=0 ALUSrcB=11 ALUOp=00 Op=='lw' Op=='sw' Op is R-type Op='beq' Op='j' Memory access instructons R-type instructons Branch instructon Jump instructon
53/71 Memory access instructons Memory address computaton From 1 2 ALUSrcA=1 ALUSrcB=10 ALUOp=00 Op=='lw' Op=='sw' Memory access 3 MemRead IorD=1 Memory access 5 MemWrite IorD=1 Memory read completon step 4 RegWrite MemToReg=1 RegDst=0 To 0
54/71 R-type instructons Executon From 1 6 ALUSrcA=1 ALUSrcB=00 ALUOp=10 R-type completon 7 RegDst=1 MemToReg=0 RegWrite=1 To 0
55/71 Branch instructon Branch completon From 1 8 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond PCSource=01 To 0
56/71 Jump instructon Jump completon From 1 9 PCWrite PCSource=10 To 0
57/71 Řízení vícecyklové datové cesty (2) Instructon fetch START MemRead ALUSrcA=0 IorD=0 IRWrite ALUSrcB=01 ALUOp=00 PCWrite PCSource=00 Op=='lw' Op=='sw' Memory address computaton ALUSrcA=1 ALUSrcB=10 ALUOp=00 Memory access Op=='lw' MemRead IorD=1 Op=='sw' MemWrite IorD=1 Instructon decode Register fetch Op is R-type Executon R-type completon ALUSrcA=0 ALUSrcB=11 ALUOp=00 ALUSrcA=1 ALUSrcB=00 ALUOp=10 RegDst=1 MemToReg=0 RegWrite=1 Branch completon Op='beq' ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond PCSource=01 Op='j' Jump completon PCWrite PCSource=10 Memory read completon step RegWrite MemToReg=1 RegDst=0
Tok provádění instrukcí Sekvenční a očekávané řízení toku Běžný kód, podmíněný nebo nepodmíněný skok Neočekávaná změna toku Vnitřní příčina (Excepton/Trap) Aritmetcké přetečení Nedefnovaná instrukce Nepovolený přístup do pamět Selhání hardwaru Vyvolání služby operačního systému Vnější příčina (Interrupt) Požadavek I/O zařízení Selhání hardwaru Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 58/71
Podpora výjimek a přerušení Hardwarová podpora Zastavení vykonávání instrukce Zachování korektního stavu procesoru Možnost identfkace příčiny Příznakové bity ve speciálním registru Číslo výjimky Uschování adresy instrukce, při které výjimka nastala Možnost restartovat běh nebo pokračovat v běhu Skok na adresu obslužné rutny Jedna adresa vs. různé adresy pro různé druhy výjimek Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 59/71
60/71 Podpora výjimky přetečení Executon From 1 6 ALUSrcA=1 ALUSrcB=00 ALUOp=10 Arithmetc overfow R-type completon 7 RegDst=1 MemToReg=0 RegWrite=1 Overfow 11 IntCause=1 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp=01 EPCWrite PCWrite PCSource=11 To 0
61/71 Podpora výjimky neplatné instrukce Undefned instructon From 1 Undefned instructon 10 IntCause=0 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp=01 EPCWrite PCWrite PCSource=11 To 0
Podpora výjimek a přerušení (2) Sofwarová obsluha Uschování stavu původního výpočtu Zjištění příčiny Obsluha příslušného typu výjimky/přerušení Obsluha I/O zařízení Změna stavu výpočtu Ukončení výpočtu Obnovení stavu původního výpočtu Návrat do původního výpočtu Provedení následující instrukce Restart instrukce, která výjimku vyvolala Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 62/71
63/71 Výkon vícecyklové datové cesty Instrukční mix 30% load (5ns), 10% store (5ns) 50% add (4ns), 10% mul (20ns) Jednocyklová datová cesta (takt 20ns, CPI = 1) 20ns na instrukci výkon 50 MIPS Jednoduchá vícecyklová datová cesta (takt 5ns) CPI (90% 1) + (10% 4) = 1.3 6.5ns na instrukci výkon 153 MIPS Jemně členěná vícecyklová datová cesta (takt 1ns) CPI (30% 5) + (10% 5) + (50% 4) + (10% 20) = 6 6ns na instrukci výkon 166 MIPS
Realizace vícecyklového řadiče Realizace konečného automatu Stav + podmínky = paměť + logika = sekvenční obvod Konkrétní realizace závisí na reprezentaci vnitřního stavu Obvodové řešení Posuvný řetězec klopných obvodů Stavový registr, kombinační logika Paměť + jednoduchý sekvenční obvod Mikroprogramování, nanoprogramování Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 64/71
66/71 Stavový registr + kombinační logika Control logic Inputs Outputs PCWrite... MemRead...... ALUOp NS3 NS2 NS1 NS0 Řídící logika Op5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0 Kombinační obvod ROM, FPGA Instructon register opcode feld State register
67/71 Použit čítače pro následující stav
68/71 Logika pro výběr adresy
Horizontální formát mikroinstrukcí Přímá reprezentace řídících signálů Paměť mikroinstrukcí obsahuje přímo hodnoty řídících signálů Není potřeba dekódovat (rychlost) Libovolná kombinace (pružnost) Velké prostorové nároky Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 70/71
Vertkální formát mikroinstrukcí Kódovaná reprezentace řídících signálů Mikroinstrukce obsahují jen čísla platných kombinací řídících signálů Tato čísla se dekódují samostatným dekodérem nebo dekodéry (zpomalení, omezení pružnost) Architektura počítačů, Implementace procesoru, LS 2017/2018, 22. 3. 2018 71/71
72/71 Nanoprogramování Kombinace horizontálního a vertkálního kódování Mikroprogramová paměť obsahuje jen čísla platných kombinací řídících signálů (vertkální formát) Převod na horizontální formát se nerealizuje pomocí fxního dekodéru (kombinačního obvodu), ale pomocí další pamět Výrazně redukuje prostor potřebný k uložení mikroprogramu, ovšem za cenu nižší rychlost
73/71 Srovnání mikro- a nanoprogramování