Zum Inhalt springen

Out-of-order execution

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 12. Mai 2018 um 11:44 Uhr durch 77.188.30.240 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Out-of-order execution (englisch für etwa Ausführung in anderer Reihenfolge [als im Programmcode]) bezeichnet die Möglichkeit, icht oder nur schwer zur Kompilierzeit voraussagen.

Ein dynamisches Verfahren wie die OOE-Ausführung kann zur Ausführungszeit entsprechend reagieren und so mehr Befehle parallel ausführen und damit die Bearbeitung beschleunigen.

Funktionsprinzip

Grundprinzip der ungeordneten Befehlsausführung

In früheren Prozessoren wurden die einzelnen Befehle nacheinander abgearbeitet, wobei jeder Befehl nach einer festen Folge aus Teilschritten (in-order execution) ausgeführt wurde, vgl. u. a. Von-Neumann-Zyklus. Diese Teilschritte sind:

  1. Befehl laden (instruction fetch)
  2. Wenn die Operanden verfügbar sind (zum Beispiel in Registern), wird der Befehl an die passende Funktionseinheit zur Ausführung übergeben. Wenn ein oder mehr Operanden im aktuellen Befehlszyklus nicht verfügbar sind (meist weil sie noch aus dem Speicher geladen werden müssen), wartet der Prozessor, bis diese geladen sind.
  3. Der Befehl wird durch die passende Funktionseinheit ausgeführt.
  4. Die Funktionseinheit schreibt das Ergebnis in ein Register.

Das neue Konzept (out-of-order execution) bearbeitet die Befehle in der folgenden Reihenfolge:

  1. Befehl laden (instruction fetch).
  2. Befehl in eine Warteschlange (instruction buffer) eintragen.
  3. Der Befehl wartet im instruction buffer, bis seine Operanden geladen sind. Danach darf der Befehl die Warteschlange verlassen, oft vor früher eingetragenen, älteren Befehlen.
  4. Der Befehl wird an die passende Ausführungseinheit übergeben und dort ausgeführt.
  5. Das Ergebni

Fast alle modernen x86-Prozessoren ab dem Intel Pentium Pro bzw. AMD K5 können Befehle out-of-order ausführen. Bekannte Ausnahmen sind die IDT WinChip und VIA C3/VIA C7 Serien, die von Centaur Technology entwickelt wurden, und die Intel-Atom-Serie bis einschließlich Cedar Trail.

Siehe auch

Literatur

  • Oberschelp, Vossen: Rechneraufbau und Rechnerstrukturen. 9. Auflage. Oldenbourg, 2003, ISBN 3-486-27206-3.