Information Technology Reference
In-Depth Information
Dieses grundsätzliche Problem löst man gewöhnlich, indem nicht direkt auf den
Befehlsspeicher oder normalerweise vorhandenen Datenspeicher zugegriffen wird,
sondern auf Caches, also kleine, schnelle, meist in Fließbandtechnik arbeitende
Zwischenspeicher (Abschnitt 2.3.1). Ebenfalls wichtig für die Effizienz der Fließ-
bandtechnik ist, dass die Befehle pro Takt eine Fließbandstufe passieren, da andern-
falls die Ausführung nachfolgender Befehle blockiert wird. Aus diesem Grund sind
in den auf Fließbandverarbeitung optimierten RISC-Prozessoren der ersten Genera-
tion normalerweise auch einschrittig arbeitende Befehlsdecoder realisiert [17].
2.2.3 Datenflusskonflikte (interlocking, bypassing)
In sequentiellen Programmen werden vielfach Operanden verarbeitet, die jeweils
Ergebnis unmittelbar vorangehender Befehle sind. Dabei kann es zu einem sog.
Datenflusskonflikt kommen, wenn nämlich der von einem in Ausführung befindli-
chen Befehl benötigte Operand von einem anderen Befehl erzeugt wird, der sich,
wegen der überlappenden Arbeitsweise eines Fließbandprozessors, noch in Ausfüh-
rung befindet. Bild 2.21a zeigt eine Befehlsfolge, bei der es, falls sie von einem Pro-
zessor mit vierstufigem Fließband entsprechend Bild 2.19 ausgeführt wird, wegen
der Zugriffe auf das Register r1 zu zwei Datenflusskonflikten kommt.
t 1
t 2
t 3
t 4
t 5
t 6
t
add
r1 , r2, r3
Fetch
add
sub
and
Decode
add
sub
and
Datenflusskonflikt
sub
r3, r4, r1
Execute
add
sub
and
and
r5, r1 , r5
Write Back
add
sub
and
a
b
Bild 2.21. Darstellung von Datenflusskonflikten (über Register r1). a Im Programm. b Im zeitli-
chen Verlauf
Die zeitliche Abfolge, in der die Befehle das Fließband durchlaufen, ist in Bild
2.21b dargestellt. Während sich die Addition in der Write-Back-Stufe befindet (zwi-
schen t 3 und t 4 ), wird zeitgleich die Subtraktion ausgeführt (Execute-Stufe) und der
and-Befehl decodiert (Decode-Stufe). Nun lässt sich das Ergebnis der Addition erst
mit der Taktflanke zum Zeitpunkt t 4 in den Registerspeicher übertragen. Dies ist zu
spät für die beiden unmittelbar auf die Addition folgenden Befehle, die bereits in der
Decode-Stufe lesend auf r1 zugreifen (siehe Bild 2.19), also zwischen t 2 und t 3 im
Falle der Subtraktion und zwischen t 3 und t 4 im Falle des and-Befehls. Erst die
Befehle, die nach t 4 den Registerspeicher lesend ansprechen, finden das erwartete
Additionsergebnis in r1 vor.
Wie kann dieses Problem gelöst werden? Sehr einfach ist es, die zeitweise Nichtver-
fügbarkeit eines Operanden im Programmiermodell eines Prozessors zu berücksich-
tigen, d.h. zu definieren, dass ein von einem Verknüpfungsbefehl generiertes Ergeb-
nis erst mehrere Taktschritte nach seiner Erzeugung lesbar ist - abhängig vom
jeweiligen Fließband. Der Datenflusskonflikt wird also nicht in Hardware, sondern
Search WWH ::




Custom Search