EMZETT.
Login

Out-of-Order Execution

Kurz: Ein moderner Prozessor führt Befehle nicht strikt in der Programmreihenfolge aus, sondern zieht Befehle vor, deren Daten schon bereit sind, und ordnet das Ergebnis danach wieder.

Genauer: Muss ein Befehl auf langsame Daten aus dem Speicher warten, würde ein strikter Prozessor stillstehen. Der Out-of-Order-Prozessor erledigt währenddessen unabhängige Befehle und sorgt dafür, dass das sichtbare Ergebnis trotzdem der Programmlogik entspricht.

Im Detail

  • Reorder-Buffer: Sammelt die Ergebnisse und schreibt sie in der richtigen Reihenfolge fest („Retirement”).
  • Register-Umbenennung: Beseitigt Scheinabhängigkeiten zwischen Befehlen.
  • Spekulation: Der Prozessor rät bei Sprüngen den Weg und rechnet voraus. Lag er falsch, wird alles verworfen.
  • Sicherheit: Spekulative Ausführung ermöglichte Angriffe wie Spectre und Meltdown über Zeitunterschiede im Cache.
  • Folge für Code: Vorhersagbare Sprünge und gut vorhersehbare Speicherzugriffe laufen schneller.

Siehe auch: Speicherhierarchie und Cache-Lines