• Keine Ergebnisse gefunden

Datenpfad einer einfachen MIPS‐CPU

N/A
N/A
Protected

Academic year: 2022

Aktie "Datenpfad einer einfachen MIPS‐CPU"

Copied!
29
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Datenpfad einer einfachen MIPS‐CPU

Zugriff auf den Datenspeicher

(2)

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

• Adressse 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)

(3)

Datenspeicher

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).

(4)

Erweiterung des Blockschaltbilds

(5)

Eine Übung zum Abschluss

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

(6)

Control einer einfachen MIPS‐CPU

(7)

Ziel

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 unsere 

Instruktionen (d.h. lwsw,addsubandorslt,beq ) welche  Steuerleitung 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 die ALU‐Operation fest.

Main‐Unit‐Contol: Legt für jeden Befehl die übrigen Stuerleitung fest

Wir verwenden auf den nächsten Folien die folgende Terminologie:

Steuerleitung an: asserted

Steuerleitung aus: deasserted

(8)

Control einer einfachen MIPS‐CPU

ALU‐Control

(9)

Vorüberlegung: Die passenden ALU‐Funktionen

Control‐Eingänge der betrachteten ALU

• Für Load‐ und Store‐Instruktionen lwsw brauchen wir die ALU‐

Funktion add.

• Für die arithmetisch‐logischen Instruktionen addsubandor, slt brauchen wir die entsprechende passende ALU‐Funktion.

• Für die Branch‐Instruktion beq brauchen wir die ALU‐Funktion sub.

(10)

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. lwsw).

• 4: Branch‐Instruktion (d.h. beq).

(I-type)

(I-type)

(11)

ALU‐Control

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

(12)

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

(13)

Erweiterung des Blockschaltbilds

(14)

Control einer einfachen MIPS‐CPU

Main‐Unit‐Control

(15)

Opcode bestimmt Steuerleitungsbelegungen

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)

Eingabe:

Instruction [31‐26] Ausgabe

(16)

Auch hier wieder

Aus voriger Wahrheitstabelle lässt sich mechanisch eine 

kombinatorische Schaltung generieren, die wir im Folgenden mit  dem Control‐Symbol abstrakt darstellen.

Control

Instruction[31—26]

(also: das Opcode‐

Field der Instruktion)

RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite

(17)

Erweiterung des Blockschaltbilds

(18)

Beispiel für eine R‐Typ‐Instruktion

• Instruktion wird gefetched und PC um 4 erhöht.

• Die Register $t2 (Instruction [25‐21]) und $t3 

(Instruction [20‐16]) werden aus dem Register‐File  geladen.

• Die ALU führt die in dem Function‐Field (Instruction [5‐0]) codierte Operation auf den gelesenen Register‐

Daten aus.

• Das Ergebnis der ALU wird in Register $t (Instruction [15‐11]) zurück geschrieben.

add $t1, $t2, $t3

(19)

Beispiel für eine Load/Save‐Instruktion

• Instruktion wird gefetched und PC um 4 erhöht.

• Das Register $t2 (Instruction [25‐21]) wird aus dem  Register‐File geladen.

• Die ALU addiert das Register‐Datum und den 32‐Bit Sign‐

exteded 16‐Bit‐Immediate‐Wert 8 (Instruction [15‐0]).

• Die Summe aus der ALU wird als Adresse für den  Datenspeicher verwendet.

• Das Datum aus dem Datenspeicher wird in das Register‐File  geschrieben. Das Register in das geschrieben wird ist $t1  (Instruction [20‐16]).

lw $t1, 8($t2)

(20)

Beispiel für eine Branch‐Instruktion

• Instruktion wird gefetched und PC um 4 erhöht.

• Die Register $t1 (Instruction [25‐21]) und $t2 (Instruction [20‐16]) werden aus dem Register‐File geladen.

• Die Haupt‐ALU subtrahiert die ausgelesenen Register‐Daten  voneinander.

Die zusätzliche ALU addiert PC+4 auf den 32‐Bit Sign‐

exteded und um 2 nach links geshiftete 16‐Bit‐Immediate‐

Wert 42 (Instruction [15‐0]).

• Das Zero‐Ergebins der Haupt‐ALU entschiedet ob der PC auf  PC+4 oder auf das Ergebnis der zusätzliche ALU gesetzt 

wird.

beq $t1, $t2, 42

(21)

Eine Übung zum Abschluss

In der vorigen „Übung zum Abschluss“ wurde das Blockschaltbild  des Datenpfads so erweitert, sodass auch die MIPS‐Instruktion j unterstützt wird.

Wie müssen Control und Alu‐Control modifiziert werden (wenn  überhaupt), damit die MIPS‐Instruktion j auch von Seiten des  Control unterstützt wird?

Erinnerung:

j addr # Springe nach Adresse addr

000010 address

Opcode Bits 31‐26

Adresse Bits 25‐0

J‐Typ

(22)

Pipelining

(23)

Pipelining

Instruktionszyklen

(24)

MIPS‐Instruktionszyklus

Ein MIPS‐Instruktionszklus besteht aus:

1. Instruktion aus dem Speicher holen (IF: Instruction‐Fetch)

2. Instruktion decodieren und Operanden aus Register lesen (ID: Instruction‐Decode/Register‐File‐Read)

3. Ausführen der Instruktion oder Adresse berechnen (EX: Execute/Address‐Calculation)

4. Datenspeicherzugriff

(MEM: Memory‐Access)

5. Resultat in Register abspeichern (WB: Write‐Back)

(25)

Instruktionszyklen in unserem Blockschaltbild

(26)

Instruktionszyklen generell

• Instruktionszyklen anderer moderner CPUs haben  diese oder eine sehr ähnliche Form von 

Instruktionszyklen.

• Unterschiede sind z.B.:

– Instruktion decodieren und Operanden lesen sind zwei  getrennte Schritte. Dies ist z.B. notwendig,

• wenn Instruktionen sehr komplex codiert sind (z.B. x86  Instruktionen der Länge 1 bis 17 Byte)

• wenn Instruktionen Operanden im Speicher anstatt Register  haben (z.B. einige Instruktionen bei x86)

(27)

Pipelining

Die Pipelining‐Idee

(28)

Annahme die einzelnen Abschnitte des MIPS‐Instruktionszyklus  benötigen folgende Ausführungszeiten:

Instruction‐Fetch 200ps, Register‐Read 100ps, ALU‐Operation 200ps,  Data‐Access 200ps, Register‐Write 100ps.

Wie hoch dürfen wir unseren Prozessor (ungefähr) Takten?

Die längste Instruktion benötigt 800ps. Also gilt für den Clock‐Cycle c:

Single‐Cycle‐Performance

(29)

Die Pipelining‐Idee am Beispiel Wäsche waschen

Waschen Trocknen Falten

Einräumen Bearbeitungszeit pro 

Wäscheladung bleibt  dieselbe (Delay).

Gesamtzeit für alle  Wäscheladungen sinkt  (Throughput).

Referenzen

ÄHNLICHE DOKUMENTE

RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc

RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc

RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc

Those who have not previously worked with a solder- masked board will find that it takes considerably less solder to make a good joint since the solder does not spread out

As explained in the previous section, the Memory Manager's port address decoder is shared with the processor swap port.. This completes the description of the

If the product is delivered by mail or common carrier, you agree to insure the product or assume the risk of loss or damage in transit, to prepay shipping charges

Therefore, since all systems access both memory and I/O space, install at least two jumpers to minimize wait time.. The standard CompuPro configuration is to

Description: Shifts a register value left by the shift amount listed in the instruction and places the result in a third register. Zeroes are