kap.3 mikroarchitektur - uni-bremen.de · hardware-struktur zur ausführung von mips alu...
TRANSCRIPT
1
Kap.3Mikroarchitektur
Prozessoren,interne Sicht
Kap. 3.3 3.3/2
z3.1 Elementare Datentypen, Operationenund ihre Realisierung (siehe 2.1)
z3.2 Mikroprogrammierungz3.3 Einfache Implementierung von
MIPSz3.4 Pipelining
Implementierung von MIPS
z Betrachte der Übersichtlichkeit halber nur eine Untermenge der MIPS-Sprache:y Load/Store-Befehle: lw, swy Arithmetisch-logische Befehle und Tests mit
Register-Register-Argument(„Typ RR“): add, sub, addu, subu,and, or,sll, rll (shift left/right logisch),slt, sltu(set on less than)
y Sprünge: jy Verzweigungen: beq
z Befehlsformat:
Unbedingte
Hardware-Struktur zur Ausführung von MIPS
Registerspeicher
z Registerspeicher mit 32 Registernz 2 Leseports o1 und o2
y Adreßeingang a1 (5 Bit) gehört zu o1y Adreßeingang a2 (5 Bit) gehört zu o1
z 1 Schreibport i3y Adreßeingang a3 (5 Bit) gehört zu i3
z Kontrolleingang c, der mit Signal RegWrite verbunden isty Regwrite = 0: Leseny Regwrite = 1: Schreiben
Hardware-Struktur zur Ausführung von MIPS
ALU
z alu_control ist ein kombinatorischer Schaltkreis, der die Funktion bestimmt , die die ALU ausführt. Alternativen:y ALUOp = ‚+‘: Additiony ALUOp = ‚=‘: Vergleich, wenn Operanden gleich sind, wird zero auf 1
gesetzt (sonst immer 0) --> Benutzung bei bedingten Verzweigungeny ALUOp = ‚IR‘: IR(10:0) wird an ALU weitergegeben, d.h. Operation
bestimmt durch Befehl im Befehlsregistery Binärkodierung von ALUOp hier nicht angegeben
z T ist Hilfsregister zum Abspeichern des ALU-Resultatesy Schreiben gesteuert durch Signal TargetWrite
Hardware-Struktur zur Ausführung von MIPS
Speicher
z Speicher enthält sowohl Befehle als auch Datenz Leseport o1
y zugehöriger Adresseingang a1 (32 Bit)y aktiv, wenn MemRead = 1
z Schreibport i2y zugehöriger Adresseingang a2 (32 Bit)y aktiv, wenn MemWrite = 1
Hardware-Struktur zur Ausführung von MIPS
Befehlszähler
z PC ist ein 32-Bit Register mit einem Dateneingang und einem Ausgangz Schreiben in PC wird gesteuert durch kombinatorische Schaltung B
y B = PCWrite + (PCWriteC * zero)
z PC ist kein Zähler, Weiter“zählen“ ist in ALU realisiert
zero
Hardware-Struktur zur Ausführung von MIPS
Steuerwerk
z Das Steuerwerk realisiert einen endlichen Automaten mit Ausgabe.y Zustandsregister des Automaten: µPCy Eingabe: Op-Code IR(31:26)y Ausgaben: Signale wie oben angegeben (gestrichelte Linien)
IR(31:26)
Zustandsgraph des Steuerautomaten
Fetch-Phase
⌧ Holen des nächsten Befehls
⌧ Erhöhen des PC um 4 (Befehle umfassen 4 Bytes)
⌧ Folgezustand: decode
Steuerwerk-Ausgaben: IorD=0, MemRead=1, MemWrite=0, IRWrite=1, ALUSelA=0, ALUSelB=1, ALUop=+, PCSource=0, PCWrite=1, RegWrite=0, TargetWrite=0, Folgezustand=decode
Dekodier-Phase
⌧ Dekodieren des aktuellen Befehls
⌧ Übergang in neuen Zustand in Abhängigkeit vom Befehl
Steuerwerk-Ausgaben: xxWrite=0, Folgezustand in Abhängigkeit von IR(31:26)
Zustandsgraph des Steuerautomaten
Adreßberechnung
⌧ Additionen der 16-Bit-Konstante erfolgt vorzeichener-weitert.
⌧ Effektive Adresse wird in Register T abgelegt.
Steuerwerk-Ausgaben: ALUSelA=1, ALUSelB=2, ALUop=+, TargetWrite=1, sonst: xxWrite=0,Folgezustand=load bzw. store, je nach IR(31:26)
LW: Reg[rt] := Speicher[Reg[rs]+sign_ext(adr-teil),32)]SW: Speicher[Reg[rs]+sign_ext(adr-teil),32)] := Reg[rt]
LOAD-Befehl
⌧ Laden aus Speicher
⌧ Folgezustand: fetch
Steuerwerk-Ausgaben: IorD=1, MemRead=1, MemToReg=1, RegDest=0, RegWrite=1, andere Register xxWrite=0, Folgezustand=fetch
LW: Reg[rt] := Speicher[Reg[rs]+sign_ext(adr-teil),32)]
STORE-Befehl
⌧ Abspeichern⌧ Folgezustand:
fetch
Steuerwerk-Ausgaben: MemWrite=1, andere Register xxWrite=0, Folgezustand=fetch
SW: Speicher[Reg[rs]+sign_ext(adr-teil),32)]:= Reg[rt]
Zustand rr1
⌧ Berechnung des Ergebnisses durch die ALU
⌧ Zwischenspei-chern in T (kein Zugriff auf 3 Registeradressen gleichzeitig)
⌧ Folgezustand: rr2 (zum Abspeichern)
Steuerwerk-Ausgaben: ALUSelA=1, ALUSelB=0, ALUop=IR, TargetWrite=1, andere Register xxWrite=0, Folgezustand=rr2
Reg[rd] := Reg[rs] op Reg[rt]
Zustand rr2
⌧ Abspeichern in Register
⌧ Folgezustand: fetch
Steuerwerk-Ausgaben: MemtoReg=0, RegDest=1, RegWrite=1, andere Register xxWrite=0, Folgezustand=fetch
Reg[rd] := Reg[rs] op Reg[rt]
Unbedingter Sprung
⌧ Berechnung des Sprungzieles aus 4 obersten Bits von PC, 26 untersten Bits von IR und Linksshift um 2
⌧ NB: PC wurde in fetch-Phase schon um 4 erhöht!
⌧ Befehlszähler neu laden
Steuerwerk-Ausgaben: PCSource=2, PCWrite=1, andere Register xxWrite=0, Folgezustand=fetch
Sprungziel bei MIPS ist Befehlsadressen durch 4 teilbar, Sprungbereich= 228 Byte
00IR...IRPC...PC 0252831
Zustand branch
⌧ Berechnung des Sprungzieles aus PC und 16 untersten Bits von IR, vorzeichenerwei-tert und um 2 Bit geshiftet
⌧ Sprungziel in T zwischengespei-chert
⌧ Folgezustand branch2
Steuerwerk-Ausgaben: ALUSelA=0, ALUSelB=3, ALUop=+, TargetWrite=1, andere Register xxWrite=0, Folgezustand=branch2
BEQ springt nach PC+4+[IR(15:0)]*4, wenn Reg[rs]=Reg[rt]
Zustand branch2
⌧ Berechnung der Sprungbe-dingung
⌧ Änderung von PC nur, falls Sprundbed. erfüllt
⌧ Folgezustand fetch
Steuerwerk-Ausgaben: PCSource=1,ALUSelA=1, ALUSelB=0, ALUop=‘=‘, PCWrite=0, PCWriteC=1, andere Register xxWrite=0, Folgezustand=fetch
BEQ springt nach PC+4+[IR(15:0)]*4, wenn Reg[rs]=Reg[rt]
Automatentabelle des Steuerwerks
z Das Steuerwerk wird gemäß dieser Tabelle als EndlicherAutomat mit Ausgabe realisiert.