In-Order- vs. Out-of-Order-Ausführung: die Unterschiede
Eine In-Order-CPU gibt Befehle in Programmreihenfolge aus und führt sie so aus. Wartet ein vorheriger Befehl etwa wegen eines Cache-Fehlzugriffs, stehen auch die nachfolgenden still. Eine Out-of-Order-CPU prüft die Abhängigkeiten, führt bereite Befehle vorgezogen aus und schreibt die Ergebnisse im Reorder-Buffer (ROB) in Programmreihenfolge fest. Da während der Wartezeit andere Befehle vorankommen, steigt die IPC; dafür werden Registerumbenennung und Auswahlschaltungen für Befehle benötigt, was Schaltungsaufwand und Leistungsaufnahme erhöht.
| Merkmal | In-Order-Ausführung | Out-of-Order-Ausführung |
|---|---|---|
| Reihenfolge von Ausgabe und Ausführung | Programmreihenfolge | Bereite Befehle werden in geänderter Reihenfolge ausgeführt |
| Festschreiben der Ergebnisse (Retire) | Programmreihenfolge | Im Reorder-Buffer (ROB) in Programmreihenfolge |
| Wenn ein vorheriger Befehl wartet | Auch die nachfolgenden Befehle stehen still (Stall) | Unabhängige nachfolgende Befehle werden vorgezogen |
| Behandlung von Datenhazards | Forwarding und Stalls. Die Befehlsanordnung bleibt dem Compiler überlassen | Zusätzlich zum Forwarding plant die Hardware die Befehle dynamisch |
| Scheinabhängigkeiten (WAR, WAW) | Da die Reihenfolge eingehalten wird, meist unproblematisch | Werden durch Registerumbenennung mit Neuzuweisung physischer Register beseitigt |
| Wesentliche Zusatzschaltungen | Wenige. Einfache Pipeline | Umbenennungstabelle, physische Register, Issue-Queue, ROB, Load/Store-Queue |
| Auswirkung von Cache-Fehlzugriffen | Groß. Bei jedem Fehlzugriff stockt die Pipeline leicht | Innerhalb eines Fensters von einigen hundert Befehlen laufen andere Befehle weiter und verbergen einen Teil der Wartezeit |
| IPC | Eher niedrig. Bei gleicher Ausgabebreite niedriger als Out-of-Order | Hoch. In Kombination mit großer Ausgabebreite deutlich über 1 |
| Schaltungsaufwand und Leistung | Gering. Leistung pro Fläche bzw. pro Watt lässt sich leicht steigern | Groß. Auswahlschaltungen und ROB erhöhen Fläche und Leistungsaufnahme |
| Einsatz | Mikrocontroller, kleine Embedded-Kerne, ein Teil der auf Energiesparen ausgelegten Kerne, Rechenkerne von GPUs | Hochleistungskerne in PCs, Servern und Smartphones |
Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.