32
Datenpfad einer einfachen MIPSCPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19

Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Datenpfad einer einfachen MIPS‐CPUZugriff auf den Datenspeicher

Grundlagen der Rechnerarchitektur ‐ Prozessor 19

Page 2: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Betrachten nun Load‐ und Store‐Word

Grundlagen der Rechnerarchitektur ‐ Prozessor 20

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 + xHierzu 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                                                 0opcode reg1 reg2 Offset6 Bit 5 Bit 5 Bit 16 Bit

I‐Typ(Immediate‐Typ)

Page 3: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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

Page 4: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Erweiterung des Blockschaltbilds

Grundlagen der Rechnerarchitektur ‐ Prozessor 22

Page 5: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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

Page 6: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Control einer einfachen MIPS‐CPU

Grundlagen der Rechnerarchitektur ‐ Prozessor 24

Page 7: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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: assertedSteuerleitung aus: deasserted

Page 8: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Control einer einfachen MIPS‐CPUALU‐Control

Grundlagen der Rechnerarchitektur ‐ Prozessor 26

Page 9: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Vorüberlegung: Die passenden ALU‐Funktionen

Grundlagen der Rechnerarchitektur ‐ Prozessor 27Bildquelle: 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.

Page 10: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Vorüberlegung: die Instruktionsformate

Grundlagen der Rechnerarchitektur ‐ Prozessor 28Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

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)

Page 11: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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

Page 12: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

In einer Wahrheitstabelle zusammengefasst

Grundlagen der Rechnerarchitektur ‐ Prozessor 30

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

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Page 13: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Erweiterung des Blockschaltbilds

Grundlagen der Rechnerarchitektur ‐ Prozessor 31

Page 14: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Control einer einfachen MIPS‐CPUMain‐Unit‐Control

Grundlagen der Rechnerarchitektur ‐ Prozessor 32

Page 15: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Opcode bestimmt Steuerleitungsbelegungen

Grundlagen der Rechnerarchitektur ‐ Prozessor 33

Instruction RegDst ALUSrcMemto‐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

Page 16: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Auch hier wieder

Grundlagen der Rechnerarchitektur ‐ Prozessor 34

Aus voriger Wahrheitstabelle lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem Control‐Symbol abstrakt darstellen.

ControlInstruction[31—26](also: das Opcode‐Field der Instruktion)

RegDstBranchMemReadMemtoRegALUOpMemWriteALUSrcRegWrite

Page 17: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Erweiterung des Blockschaltbilds

Grundlagen der Rechnerarchitektur ‐ Prozessor 35

Page 18: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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 $t1 (Instruction[15‐11]) zurück geschrieben.

Grundlagen der Rechnerarchitektur ‐ Prozessor 36

add $t1, $t2, $t3

Page 19: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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

Grundlagen der Rechnerarchitektur ‐ Prozessor 37

lw $t1, 8($t2)

Page 20: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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 geshifteten 16‐Bit‐Immediate‐Wert 42 (Instruction [15‐0]).

• Das Zero‐Ergebins der Haupt‐ALU entscheidet ob der PC auf PC+4 oder auf das Ergebnis der zusätzlichen ALU gesetzt wird.

Grundlagen der Rechnerarchitektur ‐ Prozessor 38

beq $t1, $t2, 42

Page 21: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Eine Übung zum Abschluss

Grundlagen der Rechnerarchitektur ‐ Prozessor 39

In der vorigen „Übung zum Abschluss“ wurde das Blockschaltbild des Datenpfads so erweitert, sodass auch die MIPS‐Instruktion junterstü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 pseudo-direkt nach addr

000010 addressOpcodeBits 31‐26

AdresseBits 25‐0

J‐Typ

Page 22: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Pipelining

Grundlagen der Rechnerarchitektur ‐ Prozessor 40

Page 23: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

PipeliningInstruktionszyklen

Grundlagen der Rechnerarchitektur ‐ Prozessor 41

Page 24: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

MIPS‐Instruktionszyklus

Grundlagen der Rechnerarchitektur ‐ Prozessor 42

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)

Page 25: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Instruktionszyklen in unserem Blockschaltbild

Grundlagen der Rechnerarchitektur ‐ Prozessor 43

Page 26: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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)

Grundlagen der Rechnerarchitektur ‐ Prozessor 44

Page 27: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

PipeliningDie Pipelining‐Idee

Grundlagen der Rechnerarchitektur ‐ Prozessor 45

Page 28: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

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

Grundlagen der Rechnerarchitektur ‐ Prozessor 46Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Page 29: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Die Pipelining‐Idee am Beispiel Wäsche waschen

Grundlagen der Rechnerarchitektur ‐ Prozessor 47Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Waschen

Trocknen

Falten

Einräumen

Bearbeitungszeit pro Wäscheladung bleibt dieselbe (Delay).Gesamtzeit für alle Wäscheladungen sinkt (Throughput).

Page 30: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Was ist die Performance‐Ratio?

Grundlagen der Rechnerarchitektur ‐ Prozessor 48

Annahme jeder Arbeitsgang beansprucht dieselbe Zeit. Was ist die Performance‐Ratio für n Wäscheladungen?

Generell für k „Pipeline‐Stufen“, d.h. k Arbeitsgänge und gleiche Anzahl Zeiteinheiten t pro Arbeitsgang?

Page 31: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Im Folgenden betrachten wir zunächst ein ganz einfaches Programm:lw $1, 100($0)lw $2, 200($0)lw $3, 300($0)lw $4, 400($0)lw $5, 500($0)

Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen häufig nur noch die Registernummern (z.B. wie oben $0 und $1) an. Außerdem betrachten wir das spezielle Zero‐Register momentan nicht.

Wie kann man die Pipelining‐Idee im Falle unseres MIPS‐Prozessors anwenden?

Pipelining für unseren MIPS‐Prozessor

Grundlagen der Rechnerarchitektur ‐ Prozessor 49

Page 32: Datenpfad einer einfachen MIPS CPUunikorn/lehre/gdra/ss15/04 Prozessor... · Bemerkung: Da die MIPS‐Registernamen im Folgenden nicht von Bedeutung sind, geben wir in den Programmbeispielen

Die Pipeline nach den ersten drei Instruktionen

Grundlagen der Rechnerarchitektur ‐ Prozessor 50Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Annahme:IF = 200psID = 100psEX = 200psMEM = 200psWB = 100ps