Hardware Reference
In-Depth Information
Instruction Fetch. Ublicherweise konnen mit einem Speicherzugriff bei
den heute gangigen breiten Bussen mehrere Instruktionen gleichzeitig ge-
laden werden. Es steht ein Puffer zur Verfugung (der Fetch Buffer ), der
moglichst kontinuierlich mit Instruktionen aus dem Speicher gefullt wird.
Diesem Puffer konnen dann Instruktionen zur Ausfuhrung entnommen
werden. Haufig wird mit dem Einbringen einer Instruktion in den Fetch
Buffer bereits eine Vordekodierung der Befehle vorgenommen, sodass die
anschließende Dekodierphase entfallen kann oder zumindest stark verkurzt
wird. Wir losen uns also von der Vorstellung, dass Instruktionen einzeln se-
quenziell nacheinander geladen werden. Durch diese Pufferung ist das La-
den der Instruktionen gar keine Pipeline-Phase im bisherigen Sinn mehr.
Instruction Issue. Instruktionen werden in order fertig dekodiert und
auf freie Ausfuhrungseinheiten ( Functional Units ,kurzFU,oderauch Exe-
cution Unit , kurz EU) zugeteilt ( issue ). Der Begriff in order“ meint, in
der Reihenfolge, wie sie im abzuarbeitenden Programm stehen. In einem
Taktzyklus konnen je nach Prozessor mehrere Instruktionen gleichzeitig
auf functional units zugeteilt werden. Dieser Prozess stoppt allerdings,
falls fur die nachste Instruktion keine freie Ausfuhrungseinheit mehr vor-
handen ist. In diesem Fall liegt wiederum ein strukturelles Hemmnis vor.
Execute. Instruktionen verweilen gegebenenfalls an ihrer Ausfuhrungs-
einheit (Functional Unit), bis alle Operanden zur Verfugung stehen. So
lange wird diese Ausfuhrungseinheit blockiert. Es handelt sich hierbei wie-
der um den bereits besprochenen Read-After-Write-Konflikt.
Dadurch werden Instruktionen nicht unbedingt in der Reihenfolge fer-
tig ausgefuhrt, wie sie im Programm erscheinen. Man spricht deshalb
von Out-Of-Order-Ausfuhrung (Out-Of-Order-Execution), oft abgekurzt
mit OOO. Fertig ausgefuhrte Instruktionen verlassen ihre Ausfuhrungs-
einheit und warten darauf, dass ihr Ergebnis zuruck geschrieben werden
kann.
Commit. Fertig ausgefuhrte Instruktionen werden hier in order bestatigt
( Commit ), d.h. ihre Ergebnisse werden in die Zielregister geschrieben. Dies
entspricht der W-Phase (Write Back) bei der klassischen funf-stufigen
Pipeline. Result Forwarding ist naturlich auch hier moglich, d.h. Ergeb-
nisse stehen fur nachfolgende Befehle zur Verfugung, bevor sie endgultig
bestatigt wurden. Es konnen pro Taktzyklus durchaus mehrere Instruk-
tionen bestatigt werden.
Fur den Ablauf ist also festzuhalten:
Befehle werden in order zugeteilt,
danach moglicherweise Out-Of-Order ausgefuhrt
und schließlich in order bestatigt.
Search WWH ::




Custom Search