Zurück zur Übersicht

Begriff

Out-of-Order Execution (OoO)

Hardware CPU Architecture S4
2 Quellen 0 Lernpfade 1 Backlink enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Dein Programmcode ist eine Liste von Befehlen: A, B, C, D. Eine einfache CPU arbeitet sie der Reihe nach ab (In-Order). Problem: Befehl A ("Lade Daten aus RAM") dauert 100 Takte. Befehl B ("Rechne 1+1") hat nichts mit A zu tun. Eine In-Order CPU wartet 100 Takte auf A. Langweilt sich. Eine OoO-CPU sieht: "Hey, B ist unabhängig von A. Ich mache B schon mal fertig, während A noch lädt." Sie führt Befehle aus, sobald ihre Daten da sind (Data Flow), nicht wie sie im Programm stehen. Am Ende sortiert sie die Ergebnisse wieder richtig (Reorder Buffer), damit es für den Programmierer so aussieht, als wäre alles der Reihe nach passiert. Das macht moderne CPUs (Core i9, Ryzen) massiv schneller als einfache (Arduino, Atom).

Merksatz: Ein Architekturmerkmal moderner Hochleistungsprozessoren, das es erlaubt, Befehle vorzuziehen, deren Eingabedaten bereits verfügbar sind, um Wartezeiten (z. B. auf den Speicher) zu überbrücken, wobei die Ergebnisse später wieder in die korrekte Programmreihenfolge gebracht werden.


Quick-Check

  1. Meltdown?
    Meltdown nutzte aus, dass OoO-CPUs Berechtigungsprüfungen ("Darfst du Kernel-Speicher lesen?") erst beim "Retire" machen. Die spekulative Ausführung hat die Daten schon geladen und in den Cache gelegt. Hacker konnten sie per Side-Channel lesen.
  2. Hyperthreading?
    SMT (Simultaneous Multithreading) nutzt die Lücken im OoO-Schedule. Wenn Thread 1 auf RAM wartet, schiebt die CPU Befehle von Thread 2 in die Lücken.
  3. Itanium?
    Intels gescheiterter Versuch (VLIW), OoO in den Compiler zu verlagern (EPIC). Es stellte sich heraus: Der Compiler weiß zur Kompilierzeit nicht genug (Cache Misses sind dynamisch). Hardware-OoO gewinnt immer.