PC ux ress Write data emdata [3-26] [25-2] [2-6] [5-] register [5-] Cond IorD em emwrite emtoreg IRWrite [25-] [5-] Outputs Control Op [5-] ux ux PCSource Op SrcB Src RegWrite RegDst register register 2 Registers Write register Write data data data 2 B u x ux 2 3 26 Shift 28 left 2 PC [3-28] Zero result address [3-] Out 2 u x data register 6 Sign extend 32 Shift left 2 [5-] rchitektura typu multi cycle
Idea sterowania mikroprogramowalnego opiera się na realizacji sterowania w postaci pamięci o n-bitowych słowach zwanych mikroinstrukcjami, które reprezentują wartości linii sterujących mikroprocesora, i która jest adresowana przez licznik mikroinstrukcji. W kolejnych cyklach zegara, mikroinstrukcje są podawane na wyjście pamięci zapewniając prawidłową realizację każdej instrukcji. Sekwencje mikroinstrukcji realizujące wszystkie instrukcje procesora nazywa się mikroprogramem. Niektóre mikroinstrukcje mogą być wspólne dla instrukcji mikroprocesora, co ogranicza pamięć mikroprogramu, a liczba wszystkich mikroinstrukcji może być równa liczbie stanów maszyny stanowej. ikroprogram musi mieć możliwość zarówno wykonywania sekwencyjnego, jak i wykonywania skoków bezwarunkowych i warunkowych wewnątrz mikrokodu, w zależności od typu (opcode u) wykonywanej instrukcji.
icrocode storage Outputs Datapath outputs Input er icroprogram counter ress select logic Inputs from instruction register opcode field ikroprogramowalna jednostka sterująca
icroprogram counter 3 - Seq 2 - Table 2 - Table - table 2 table ress select block opcode Sterowanie mikroprogramu
Label SRC SRC2 Reg Sub Funct code Write Write DR Out-cond Labels from jump tables and label () PC B lw-st offset branch offset PC Write Seq () Table Table 2 Linia mikroprogramu
Op (2 bits) Src SrcB (2 bits) RegWrite emtoreg RegDst em emwrite IorD IRWrite Cond PCSource (2 bits) (2 bits) Label SRC SRC2 Reg Sub Funct code Write Write DR Out-cond Labels from jump tables and label () PC B lw-st offset branch offset PC Write Seq () Table Table 2 Linie sterujące pól mikrokodu
Label SRC SRC2 Reg PC PC Seq PC branch offset Table ikroprogram dla fazy i Decode
Label SRC SRC2 Reg em LW2 SW2 Rtype Beq Sub Func cod PC PC branch offset ls-sw offset WriteDR Write Write PC Out cond. Seq Seq Seq Table Table2 B B Kompletny mikroprogram
Table Table 2 Opcode Label Opcode Label Rtype Rtype Load LW2 Store SW2 Beq Beq Load em Store em Tablice skoków mikroprogramu
Sytuacje wyjątkowe Exceptions/Interrupts Sytuacja wyjątkowa nieoczekiwane zdarzenie, wymagające zmiany sekwencji wykonywanych instrukcji, tj. wywołania procedury obsługi zdarzenia Dwa rozwiązania obsługi sytuacji wyjątkowych: skok do adresu związanego z daną sytuacją wyjątkową zapisanie do rejestru numeru sytuacji wyjątkowej i skok do wspólnego adresu procedury obsługi Realizacja sytuacji wyjątkowych (wariant 2) rejestr EPC (Exception Program Counter) rejestr Cause numer sytuacji wyjątkowej linie sterujące CauseWrite, IntCause, E
Realizacja sytuacji wyjątkowych nielegalna instrukcja Cause= próba wykonania instrukcji, której pole opcode nie odpowiada żadnej instrukcji przepełnienie arytmetyczne Cause= generacja bitu overflow przez sumator w czasie wykonywania instrukcji arytmetycznych adres wspólnej procedury obsługi $C do PC
PC u x ress Write data emdata [25-2] [2-6] [5-] register [5-] data register Cond IorD em emwrite emtoreg IRWrite [5-] Outputs Control Op [5-] [25-] 26 Shift 28 left 2 [3-26] u x ux 6 CauseWrite IntCause E PCSource Op SrcB Src RegWrite RegDst register register 2 Registers Write register Write data Sign extend data data 2 32 Shift left 2 B ux u 2 x 3 PC [3-28] Zero result address [3-] CO 3 Out u x u x 2 EPC Cause [5-] Implementacja sytuacji wyjątkowych w architekturze multi-cycle
address computation 2 Src = SrcB = Op = Start fetch em Src = IorD = IRWrite SrcB = Op = PCSource = 6 (Op = 'LW') or (Op = 'SW') Execution Src = SrcB = Op = (Op = R-type) Branch completion 8 Src = SrcB = Op = Cond PCSource = decode/ Register fetch (Op = 'BEQ') 9 Src = SrcB = Op = (Op = 'J') completion PCSource = (Op = other) 3 (Op = 'LW') em IorD = access 5 (Op = 'SW') emwrite IorD = access 7 R-type completion IntCause = CauseWrite RegDst = RegWrite emtoreg = Overflow Src = SrcB = Op = E PCSource = IntCause = CauseWrite Src = SrcB = Op = E PCSource = Write-back step Overflow RegWrite emtoreg = RegDst = Sterowanie z uwzględnieniem sytuacji wyjątkowych