Themen heute Besprechung des 6. Übungsblattes Datenpfade bei

Werbung
Themen heute

Besprechung des 6. Übungsblattes

Datenpfade bei MIPS


Daten- und Kontrollabhängigkeiten
erkennen und behandeln
Aufgaben
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Besprechung des 6. Übungsblattes

1. Aufgabe


Es gelten bei MIPS/SPIM auch die allgemeinen
Regeln zum Arbeiten mit Gleitkommazahlen
Insbesondere sollte man nicht prüfen, ob der
Summand in der Taylor-Reihe exakt 0 ist, sondern:


Prüfen, ob er klein genug ist, dass sich bei der Addition
der aktuelle Wert der Iteration nicht mehr verändert oder
Prüfen, ob er kleiner als ein vorgegebenes (sehr kleines)
Epsilon ist
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Besprechung des 6. Übungsblattes

2. Aufgabe



Bei der Berechnung des Speedups muss beachtet werden,
dass die fünf Phasen im sequentiellen Betrieb
unterschiedlich lange dauern
Es reicht also eigentlich nicht, einfach nur die benötigten
Taktzyklen zu betrachten (also „n * k“ im Zähler), man muss
die tatsächlich benötigte Zeit betrachen; Anwendung der
Vorlesungs-Formel gab aber auch volle Punkte
Außerdem bitte beachten:

1000 Nanosekunden (ns) = 1 Mikrosekunde (µs)

1000 Mikrosekunden (µs) = 1 Millisekunde (ms)
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenpfade bei MIPS



In der Vorlesung wurden schon die benötigten
Komponenten und Datenpfade für MIPS-Befehle vom Typ
R und Load-/Store-Befehle besprochen
Wir wollen das hier nochmal wiederholen und die
sequentielle Ausführung betrachten von... (Tafel)

... der Addition mit einer Konstante: addi (Typ I)

… dem unbedingten Sprung zur Adresse in einem Reg.: jr (Typ R)
Beim Zeichnen von Leitungen des Datenpfades empfiehlt
es sich, die „Breite“ der Leitungen (Bit) daneben zu
schreiben, wenn es nicht sowieso aus dem Kontext klar ist
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenpfade bei MIPS (2)
Quelle: Vorlesung TI2/RO, © ITEC Uni Karlsruhe
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenpfade bei MIPS (3)


Hat man sich die Datenpfade für die
sequentielle Ausführung erst mal klar gemacht,
ist es leicht, eine Unterteilung in verschiedene
möglichst unabhängige Phasen vorzunehmen
Pipelining wird dann dadurch möglich, dass
man in dieser Unterteilung die einzelnen
Phasen durch Latches als Puffer-Register
voneinander trennt
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenpfade bei MIPS (4)
Quelle: Vorlesung TI2/RO, © ITEC Uni Karlsruhe
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenpfade bei MIPS (5)
Quelle: Vorlesung TI2/RO, © ITEC Uni Karlsruhe
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Abhängigkeiten (Übersichtsfolie)

Drei verschiedene Typen von Abhängigkeiten
bzw. Konflikten:

Datenabhängigkeit


Kontrollabhängigkeit


Zwei Instruktionen lesen/schreiben die selbe Datenressource (z.B.
Register)
Eine Instruktion bestimmt, ob die andere ausgeführt wird (z.B.
bedingter Sprung)
Strukturabhängigkeit

Zwei Instruktionen versuchen die selbe (nur einmal vorhandene)
Ressource gleichzeitig zu verwenden
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten


Es gibt drei Typen von Datenabhängigkeiten:

„Read After Write“ (RAW, auch: „Echte Abhängigkeit“)

„Write After Read“ (WAR, auch: „Gegenabhängigkeit“)

„Write After Write“ (WAW, auch: „Ausgabeabhängigkeit“)
Bei der DLX-Architektur (MIPS auch) können nur RAWKonflikte auftreten, da nur im 2. Takt aus Registern
gelesen und im 5. in die Register geschrieben wird
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (2)

„Read After Write“


Abhängigkeit liegt vor, wenn Instruktion 1 ein
Register schreibt, welches Instruktion 2 liest
Beispiel:
d := a + b
e := c + d

Konflikt liegt vor, wenn Instruktion 1 den
Schreibvorgang noch nicht durchgeführt hat, sobald
Instruktion 2 liest
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (3)

„Write After Read“


Abhängigkeit liegt vor, wenn Instruktion 1 ein
Register liest, welches Instruktion 2 schreibt
Beispiel:
c := a + b
a := d + e

Konflikt liegt vor, wenn Instruktion 1 den
Lesevorgang noch nicht durchgeführt hat, sobald
Instruktion 2 schreibt
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (4)

„Write After Write“


Abhängigkeit liegt vor, wenn Instruktion 1 und
Instruktion 2 in das selbe Register schreiben
Beispiel:
a := b + c
a := d + e

Konflikt liegt vor, wenn Instruktion 1 nach
Instruktion 2 schreibt, also das bereits
geschriebene Ergebnis von Instruktion 2
überschreibt
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (5)

Behandlung von Datenabhängigkeiten entweder …

… in Software

→ Der Compiler erzeugt konfliktfreien Code

Vorteil: Hardware-Architektur bleibt einfach


Nachteil: Compiler muss detaillierte Kenntnisse über Aufbau des
Ziel-Prozessors haben
… in Hardware

→ Abhängigkeit wird von Hardware erkannt und Konflikt verhindert

Vorteil: Keine Anpassung des Compilers nötig

Nachteil: Je nach Hardware-Lösung sehr hoher Entwurfs- und
Verschaltungsaufwand
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (6)

Behandlung von Datenabhängigkeiten in
Software:



Compiler muss Datenabhängigkeiten erkennen
Verhinderung, dass Konflikte entstehen, durch das
Einfügen von Tue-Nichts-Operationen (NOP)
Wenn möglich, Umordnung von Instruktionen, um
die Zahl der benötigten NOPs gering zu halten
(Performance!)
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Datenabhängigkeiten (7)

Behandlung von Datenabhängigkeiten in
Hardware:


Schaltung auf Hardware-Ebene muss
Abhängigkeiten erkennen
Konfliktverhinderung entweder durch



Anhalten der Pipeline („Pipeline Interlock“)
Forwarding (abhängige Instruktion erhält Daten über verdrahtete
„Abkürzung“ von anderer Pipeline-Stufe statt aus dem Register)
Forwarding kann nicht alle Konflikte lösen (Beispiel,
bei dem es nicht geht?)
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Kontrollabhängigkeiten


Behandlung von Kontrollabhängigkeiten wie bei
Datenabhängigkeiten in Hardware oder
Software möglich
Vor- und Nachteile ähnlich (welche waren
das?)
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Kontrollabhängigkeiten (2)

Behandlung von Kontrollabhängigkeiten in
Software:



Compiler muss Kontrollabhängigkeiten erkennen
Wie bei den Datenabhängigkeiten Behandlung
durch Einfügen von NOPs und evtl. Umordnung
Hinter Sprungbefehlen stehende Befehle werden
(architekturabhängig) unter Umständen
mitausgeführt („branch delay slots“, vgl. MIPSTutoriumsfolien)
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Kontrollabhängigkeiten (3)

Behandlung von Kontrollabhängigkeiten in
Hardware:


Schaltung auf Hardware-Ebene muss
Abhängigkeiten erkennen
Behandlung entweder


durch Pipeline-Leerlauf bei erkanntem Sprungbefehl
(ineffizient)
Sprungvorhersage, entweder statisch („Sprung wird nie
genommen“, „Sprung wird immer genommen“) oder mit
kleinem Zusatzspeicher und z.B. DEA für die letzten Sprünge
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Aufgaben
S1: MUL R2, R2, R5
(R5 := R2 * R2)
S2: MUL R4, R2, R1
(R1 := R4 * R2)
S3: ADD R5, R3, R5
(R5 := R5 * R3)
S4: ADD R1, R5, R1
(R1 := R1 * R5)

Aufgabe 1 (Tafel)

Unsere Architektur verwende die DLX-Pipeline
1. Alle Datenabhängigkeiten bestimmen
2. Welche der Datenabhängigkeiten führen zu Konflikten?
3. Lösen der Konflikte durch Einfügen von (möglichst wenigen) NOPs
4. Aufgabenteil 2. & 3., wenn Laden von Operanden (Stufe 2) und
Rückschreiben von Ergebnissen (Stufe 5) erst am Ende des Taktes?
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Aufgaben (2)
lw $t7, 0($v0)
lw $s0, 4($v0)
add $s0, $s0, $t7
mul $t7, $t7, $s0

Aufgabe 2 (Tafel)
1. Alle Datenabhängigkeiten bestimmen, gibt es Kontrollabhängigkeiten?
2. Welche der Datenabhängigkeiten führen zu Konflikten?
3. Alle Konflikte softwareseitig durch das Einfügen von NOPs lösen
4. Angenommen, Konflikte werden vom Prozessor soweit wie möglich
durch Forwarding erkannt (Pipeline anhalten kann die CPU aber nicht!),
gibt es dann noch Konflike und falls ja, wo werden noch NOPs benötigt?
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Aufgaben (3)
S1: addi $t1, $t0, 1
S2: srli $t2, $t1, 2
S3:
or $t3, $t1, $t2
S4: srli $t1, $t3, 4
S5:

add $t4, $t2, $t3
Aufgabe 3a (Tafel)

Alle Datenabhängigkeiten des gegebenen MIPS-Codes bestimmen
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Aufgaben (4)
S1: anfang: andi $t2, $t1, 1
S2:
beqz $t2, weiter
S3:
subi $t1, $t1, 1
S4:
j anfang
S5: weiter: srli $t1, $t1, 1
S6:
j anfang
S7:

addi $t3, $t0, 1
Aufgabe 3b (Tafel)

Annahme: Hardware erkennt/löst keine Konflikte

Alle Konflikte mit (möglichst wenigen) NOPs auflösen
Technische Informatik 2 / Rechnerorganisation: Tutorium 25
Tutoriumsfolien erstellt im SS 2009 von Christian Mandery
Lizensiert unter „Creative Commons 3.0 Attribution + Share-Alike“-Lizenz
Herunterladen