180 likes | 311 Views
Inhalte: Die Basispipeline des DLX-Prozessors Pipelinetakte Hazards Verhinderung von Hazards. 7. Übung Informatik 1. Aufgaben: 7.1 Beschreiben Sie (mit HDN) das Verhalten eines DLX-Prozessors mit Basispipeline in den
E N D
Inhalte: • Die Basispipeline des DLX-Prozessors • Pipelinetakte • Hazards • Verhinderung von Hazards 7. Übung Informatik 1
Aufgaben: 7.1 Beschreiben Sie (mit HDN) das Verhalten eines DLX-Prozessors mit Basispipeline in den 5 Pipelinestufen für die Befehlsgruppen ALU-, MEM- und Branch-Befehle an Hand ent- sprechender Beispiel-Operationen. Beachten Sie die in jeder Pipelinestufe notwendigen aktuellen Register. Diskutieren Sie dabei, welche Felder des IR und welche Teilergebnisse zwischen den einzelnen Pipelinphasen gerettet werden müssen. Beispiele: ALU-Bef.: SUB R7,R6,R7 ; mit <R7>:= 15 und SUBI R7,R6,25 ; mit <R6>:= 17 MEM-Bef.: SW 0x24(R4),R8 ; mit <R8>:= 722 und LW R5,0x24(R4) ; mit <R4>:= 0x8f000000 und ; mit M[0x8f000024]:= 252525 Branch-Bef.: BEQZ R3,ende ; mit <R3>:= 0 ; 3 Befehle zurück ; (NPC) – (3 +1) *4 -16
Die Ausführung der Befehle des DLX-Befehlssatzes kann in 5 Basisschritte eingeteilt werden: • Holen IF (instruction fetch) • Decodieren ID (instruction decode and register fetch) • Ausführen EX (execution and effective address calculation) • Speicherzugriff MEM (memory access) • Resultat schreiben WB (write back) • Jeder dieser Basisschritte ist durch eigene Hardware implementiert und nutzt nur seine • eigenen Ressourcen, daraus folgt, die Basisschritte lassen sich parallelisieren, d.h., man • kann 5 Befehle gleichzeitig abarbeiten, jeder befindet sich in einem anderen Basisschritt.
7.2 Die folgende Assemblerbefehlsfolge soll abgearbeitet werden: (Befehls-Nr.) 1 ADDI R2,R0,20 2 ADDI R6,R0,0 3 LHI R3,0x0012 4 ORI R3,R3,0x200 5 loop: LW R4,0(R3) 6 LW R5,0x100(R3) 7 ADD R4,R4,R5 8 ADD R6,R6,R5 9 SW 0x200(R3),R4 10 ADDI R3,R3,4 11 SUBI R2,R2,1 12 BNEZ R2,loop 13 ORI R4,R0,0 14 ADDI R5,R10,10 a) Zeichnen Sie das Pipeline-Diagramm (mit stalls zur Beseitigung von Hazards) bis zum SW-Befehl des 2.Durchlaufes ein, wenn der Prozessor - ohne Forwarding - mit getrenntem Befehls- u. Datenport und mit der - Berechnung von Verzweigeziel und PC-Zuweisung bei erfüllter Bedingung in der EX-Phase ausgerüstet ist. b) Versuchen Sie durch Umsortierung der Befehle, die durch Datenhazards entstandenen stalls zu minimieren. Geben Sie die neue Befehlsfolge an. (Verwenden Sie Übungsblatt 4, Lösung siehe Lösung Übungsblatt 4)
Hasards – Konflikte der Pipeline • Es gibt verschiedene Faktoren, die die sinnvolle Ausführung des nächsten Befehls des • Befehlsstromes im zugeordneten Taktzyklus verhindern, diese Situationen werden • Hazards genannt. • 3 Klassen von Hazards • Struktur-Hazards: Ressourcenkonflikte, wenn die Hardware nicht alle möglichen • Befehlskombinationen simultan ausführen kann. • Datenhazards treten auf, wenn beim Zugriff auf einen Operanden dieser noch • nicht den für den Zeitpunkt festgelegten gültigen Wert hat. • Steuerungshazards treten bei allen Verzweigebefehle auf, wenn die Verzweigung • ausgeführt wird.
Struktur-Hazards: Ressourcenkonflikte, wenn die Hardware nicht alle möglichen Befehls- kombinationen simultan ausführen kann. Beispiel: Eine Rechnerarchitektur mit nur einem Speicherport für Daten und Befehle Bei der Abarbeitung eines jeden LOAD/STORE-Befehles kommt es in der Memory-Phase zu einem Konflikt LD R4,8(R5) ADD R6,R4,R0 ORI R6,R6 0x400 SUBI R3,R3,4 if id ex me wb if id ex mem wb if id ex mem wb if id ex mem wb me if id ex wb Fehler! if: M[PC] und mem: M[DMAR]
if if if if if id id id id id ex ex ex ex ex me me me me me wb wb wb wb wb • Daten-Hazards: • In der 5. Phase (write back) wird das Ergebnis ins Zielregister geschrieben und steht somit • weiteren Instruction erst danach zur Verfügung. • In der 2. Phase (instruction decode /register fetch) werden die Operanden einer Instruction • gelesen und an die ALU weitergeleitet. Das heißt die 3 Folgebefehle dürfen nicht auf den • Zieloperanden des vorangestellten Befehls zugreifen (Problem der Datenabhängigkeit). In der WB-Phase wird der berechnete Wert ins Zielregister geschrieben und kann erst danach verwendet werden. add R2,R2,R3 sub R5,R4,R2 add R6,R4,R2 add R7,R6,R2 sub R8,R8,R2 erst hier wieder korrekt! Diese 3 Befehle liefern ein falsches Ergebnis !
if id ex me wb if if if if if id id id id id ex ex ex ex ex me me me me me wb wb wb wb wb if id ex if id Steuerungs-Hazards Abarbeitung einer Befehlssequenzbei ausgeführter Verzweigung: Nach dem bnez muß mit Befehl loop: lw R4,0(R8) fortgesetzt werden, das kann erst geschehen,´wenn die Sprungbedingung und das Sprungziel berechnet sind. addi R3,R0,7 loop:lw R4,0(R8) subi R3,R3,1 add R9,R9,R4, sw 4(R8),R9 addi R8,R8,8 bnez R3,loop add R1,R1,4 add R2,R2,4 lw R3,0x20 lw R4,0(R8) if id ex me if id Nach Erkennen von Verzweigeziel und Bedingung werden diese Befehle suspendiert. if . . . . . . . . . . .
Was ist zu beachten? • frei von Strukturhazards? • Forwarding ? • Gibt es Phasensplitting? • Sind Beipässe vorhanden? • Wie wird verzweigt ? • Wann wird die Verzweigebedingung geprüft? • Wann ist das Verzweigeziel berechnet? • Werden stalls automatisch eingefügt, oder müssen NOP-Befehle genutzt werden?
7.3 Eine DLX-Standard-Pipeline sei wie folgt charakterisiert: • Es existiert nur ein Speicherport, • es ist kein Forwarding vorhanden und • erst nach ausgeführter MEM-Phase ist das Verzweigeziel bekannt. • Die gegebene DLX-Befehlssequenz soll mit dieser DLX-Standard-Pipeline abgearbeitet werden. • ADD R4, R2, R3 • ORI R5, R0, 0x102C • LW R3, 0(R5) • SUBI R2, R0, 5 • loop: ADDI R2, R2, 1 • SW 0(R3), R4 • ADDI R3, R3, 4 • BNEZ R2, loop • ADD R3, R0, R0 • . . . • Welche Hardwareoptimierungen und -erweiterungen zur Leistungsverbesserung sind möglich? • Welche Softwaremaßnahmen bringen eine zusätzliche Leistungssteigerung? • Zeichnen Sie ein Diagramm mit diesen veränderten Bedingungen! • Verwenden Sie Übungsblatt 5! • (Lösung siehe Lösung Übungsblatt5)