Information Technology Reference
In-Depth Information
Unter der i.Allg. korrekten Annahme, dass die Ausführung einer Multiplikation
mehr als einen Takt erfordert und in Fließbandtechnik pro Takt ein Ergebnis erzeugt
werden kann, ließe sich zunächst nur das Ergebnis der Addition in das Register r1
schreiben. Dies kann erlaubt werden oder nicht. In jedem Fall ist sicherzustellen,
dass die Subtraktion mit dem noch nicht durch die Addition modifizierten Inhalt von
r1 auszuführen begonnen wird (WAR-Abhängigkeit). Sollte das Additionsergebnis
in das Register r1 geschrieben werden, ist zusätzlich zu berücksichtigen, dass nach
Ausführung der Multiplikation in Zeile 1 der Inhalt von r1 nicht überschrieben wer-
den darf, wenn das Ergebnis einige Takte später zur Verfügung steht (WAW-Abhän-
gigkeit). Des Weiteren darf die Subtraktion nicht den Inhalt von r1 verarbeiten, son-
dern muss entweder das Ergebnis direkt von der Multiplikationseinheit abgreifen
oder aus einem anderen sog. Renaming-Register lesen (siehe Abschnitt 3.2.3). Der
Leser mag sich davon überzeugen, dass durch das Umordnen der Befehle die Verar-
beitungsgeschwindigkeit erhöht wird, da sich der durch die Multiplikation verur-
sachte Ressourcenkonflikt nach einem Takt löst, der durch die Datenabhängigkeit
bestehende Datenflusskonflikt jedoch mehrere Takte besteht.
1:
mul
r1, r2, r3
Datenabhängigkeit (RAW-Abhängigkeit)
2:
sub
r4, r1, r5
Ergebnisabhängigkeit
(WAW-Abhängigkeit)
Antiabhängigkeit
(WAR-Abhängigkeit)
3:
mul
r7, r8, r9
4:
add
r1, r10, 1
Bild 3.32. Datenabhängigkeit, Gegenabhängigkeit, Ergebnisabhängigkeit und Ressourcenkonflikt
(im Fettdruck) in einem einfachen Assemblerprogramm. Das jeweils erste Argument bezeichnet die
Ergebnisadresse
3.2.1 Parallelisierung unter Beibehaltung der Befehlsreihenfolge
Wie bereits erwähnt, gibt es unterschiedliche Verfahren zur dynamischen Paralleli-
sierung von Befehlen. In der einfachsten Variante werden nur die unmittelbar auf-
einander folgenden Befehle parallelisiert. Die Reihenfolge, in der diese den Decoder
verlassen, entspricht dabei der vom Programm vorgegebenen, weshalb man von In-
der-Reihe-Starten ( in-order issue ) spricht [111]. In Bild 3.33 ist das Fließband eines
entsprechenden superskalaren Prozessors, der zwei Befehle parallel ausführen kann,
schematisch dargestellt. Zu sehen sind die Fließbandregister und die in den Fließ-
bandstufen arbeitenden ungetakteten Einheiten. Zur Funktion: Zunächst werden
maximal zwei Befehle in das Befehlsregister IR geladen, in der zweiten Fließband-
stufe decodiert und daraufhin überprüft, ob sie parallel ausführbar sind. Dies ist
genau dann der Fall, wenn sie keine RAW-Abhängigkeiten zu anderen zuvor abzu-
schließenden Befehlen besitzen und keine aktuell belegten Ressourcen benötigen.
Im Allgemeinen wird dabei auch überprüft, ob WAW-Abhängigkeiten zu allen vor-
angehenden und noch in Bearbeitung befindlichen Befehlen existieren, und zwar
deshalb, weil es ansonsten möglich ist, dass nach Ausführung eines „langsamen“
Befehls das Ergebnis eines im sequentiellen Programm folgenden „schnellen“
Search WWH ::




Custom Search