Datenpfad einer einfachen MIPS‐CPU
Die Branch‐Instruktion beq
Grundlagen der Rechnerarchitektur ‐Prozessor 13
Betrachten nun Branch‐Instruktion beq
Erinnerung, Branch‐Instruktionen beq ist vom I‐Typ‐Format:
beq‐Instruktion macht immer folgendes:
• Ziehe zwei Register voneinander ab (reg1 und reg2)
• Wenn das Ergebnis ungleich 0: nächste Instruktion ist bei PC+4
• Wenn das Ergebnis gleich 0 :
• Sign‐Extension von 16‐Bit‐Offset auf 32‐Bit Zahl x
• x = 4*x (lässt sich durch ein Links‐Shift von 2 erreichen)
• nächste Instruktion ist bei PC+4+x
Berechnung reg1 ‐ reg2 ist durch den Datenpfad schon realisiert.
Für den Rest brauchen wir noch zwei neue Bausteine:
31 26 25 21 20 16 15 0
opcode reg1 reg2 Offset
6 Bit 5 Bit 5 Bit 16 Bit
I‐Typ
(Immediate‐Typ)
Sign‐Extend und Shift‐Left 2
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 15
Sign‐
Extend
Vorzeichenbehaftetes Ausweiten von k auf n Leitungen (z.B. 16 auf 32).
Shift‐
Left 2
Links oder Rechts‐Shift von Leitungen (z.B. Shift‐Left 2)
k n
Wir müssen außerdem eine Auswahl treffen
• Wenn die aktuelle Instruktion ein beq ist, dann berechne den PC nach vorhin beschriebener Vorschrift.
• Wenn die Instruktion kein beq ist, dann bestimme den PC wie bisher gehabt; also PC=PC+4.
• Zum Treffen von Auswahlen brauchen wir eine weiteren
Bausteintyp:
Multiplexer
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 17
0 Mux 1 Select
A B
C
Für ein Bit Für n Bit (z.B. 32 Bit)
0 Mux 1 Select
A B
C
32 32
32
C = A, wenn Select = 0 C = B, wenn Select = 1
Für n‐Bit‐Select (z.B. 2 Bit) Select Mux
A1 A4
C A2 A3
C = A0, wenn Select = 00 C = A1, wenn Select = 01 C = A2, wenn Select = 10 C = A3, wenn Select = 11
Erweiterung des Blockschaltbilds
Datenpfad einer einfachen MIPS‐CPU
Zugriff auf den Datenspeicher
Grundlagen der Rechnerarchitektur ‐Prozessor 19
Betrachten nun Load‐ und Store‐Word
Erinnerung, Instruktionen lw und sw sind vom I‐Typ‐Format:
Die Adresse des Speicherzugriffs berechnet sich wie folgt:
• Sign‐Extension von 16‐Bit‐Offset auf 32‐Bit Zahl x
• Adresse ist Inhalt von reg1 + x
Hierzu werden wir vorhandene ALU und Sign‐Extend mitbenutzen Der Speicherinhalt wird dann
• bei lw in Register reg2 geschrieben
• bei sw mit Registerinhalt von reg2 überschrieben
Zur Vereinfachung trennen wir im Folgenden den Speicher der Instruktionen vom Speicher der Daten. Letzterer ist wie folgt:
31 26 25 21 20 16 15 0
opcode reg1 reg2 Offset
6 Bit 5 Bit 5 Bit 16 Bit
I‐Typ
(Immediate‐Typ)
Datenspeicher
Grundlagen der Rechnerarchitektur ‐Prozessor 21
Speicherbaustein in dem die Daten liegen. „Address“, „Write‐Data“ und „Read‐Data“
sind 32‐Bit groß. In keinem Taktzyklus wird gleichzeitig gelesen und geschrieben.
Schreiben oder lesen wird über Signale an MemWrite und MemRead durchgeführt. Der Grund für ein MemRead ist, dass sicher gestellt sein muss, dass die anliegende Adresse gültig ist (mehr dazu im Kapitel Speicher).
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Erweiterung des Blockschaltbilds
Eine Übung zum Abschluss
Grundlagen der Rechnerarchitektur ‐Prozessor 23
Wie lässt sich das Blockschaltbild des Datenpfads erweitern, sodass auch die MIPS‐Instruktion j unterstützt wird?
Zur Erinnerung:
j 4096 # $pc = 4096<<2 + oberste vier
# Bit von $pc
Control einer einfachen MIPS‐CPU
Ziel
Grundlagen der Rechnerarchitektur ‐Prozessor 25
Bisher haben wir lediglich den Datenpfad einer einfachen MIPS‐CPU entworfen.
Die Steuerleitungen der einzelnen Bausteine zeigen noch ins Leere.
Jetzt wollen wir festlegen, wann zur Abarbeitung unserer
Instruktionen (d.h. lw, sw,add, sub, and, or, slt,beq ) welche Steuerleitungen an oder aus sein sollen. Den Baustein der das
macht, nennt man „Control“.
Wir trennen die Control in zwei Teile:
ALU‐Control: Legt für jeden Befehl die ALU‐Operation fest.
Main‐Unit‐Control: Legt für jeden Befehl die übrigen Steuerleitungen fest.
Wir verwenden auf den nächsten Folien die folgende Terminologie:
Steuerleitung an: asserted
Steuerleitung aus: deasserted
Control einer einfachen MIPS‐CPU
ALU‐Control
Vorüberlegung: Die passenden ALU‐Funktionen
Grundlagen der Rechnerarchitektur ‐Prozessor 27
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Control‐Eingänge der betrachteten ALU
• Für Load‐ und Store‐Instruktionen lw, sw brauchen wir die ALU‐
Funktion add.
• Für die arithmetisch‐logischen Instruktionen add, sub, and, or, slt brauchen wir die entsprechende passende ALU‐Funktion.
• Für die Branch‐Instruktion beq brauchen wir die ALU‐Funktion sub.
Vorüberlegung: die Instruktionsformate
Wenn der Wert von Bit 31 bis 26 in der gefetchten Instruktion gleich
• 0: arithmetisch‐logische Instruktion (d.h. add,sub,and,or,slt).
Die Funktion ist mit dem Wert von Bit 5 bis 0 festgelegt.
• 35 oder 43: Load‐ bzw. Store‐Instruktion (d.h. lw, sw).
• 4: Branch‐Instruktion (d.h. beq).
(I-type)
(I-type)
ALU‐Control
Grundlagen der Rechnerarchitektur ‐Prozessor 29
ALU‐
Control
Belegung der ALU‐
Steuerleitungen, so dass die ALU die richtigen ALU‐
Operation ausführt.
Ausgabe Eingabe
5‐Bit‐Funct‐Field der Instruktion ALUOp in
Abhängigkeit des Instruktionstyps
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
In einer Wahrheitstabelle zusammengefasst
Eingabe Ausgabe
Daraus lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem ALU‐Control‐Symbol abstrakt darstellen.
ALU‐
Control ALUOp
Instruction[5:0]
(also das Funct‐Field der Instruktion)
ALU‐Operation 0
0
Erweiterung des Blockschaltbilds
Grundlagen der Rechnerarchitektur ‐Prozessor 31
Control einer einfachen MIPS‐CPU
Main‐Unit‐Control
Opcode bestimmt Steuerleitungsbelegungen
Grundlagen der Rechnerarchitektur ‐Prozessor 33
Instruction RegDst ALUSrc
Memto
‐Reg
Reg‐
Write
Mem‐
Read
Mem‐
Write Branch
ALU‐
Op1
ALU‐
Op0
R‐format (0) lw (35) sw (43) beq(4)
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Eingabe:
Instruction [31‐26] Ausgabe