Superskalare Prozessorarchitekturen

Anforderungen an das Design

Dies beinhaltet folgende Einzelheiten für das Design einer superskalaren CPU:

  • Strategien zum Fetch mehrerer Instruktionen pro Takt, wobei insbesondere der Einfluss von bedingten Sprungbefehlen berücksichtigt werden muss.

  • Methoden zur Detektierung von virtuellen und wirklichen Abhängigkeiten zwischen Registerinhalten einschließlich der Mechanismen zur Vermeidung der Folgen.

  • Methoden zur Initiierung der Ausführung mehrerer Instruktionen parallel zueinander.

  • Ressourcen zur parallelen Ausführung mehrerer Instruktionen; hierzu gehören insbesondere mehrere Ausführungseinheiten sowie Speicherhierarchien, die die Datenflüsse aufnehmen können.

  • Ausführung mehrerer Load/-Store-Pipelines in enger Abstimmung mit den Ausführungsstrategien für Instruktionen. Die Load-/Store-Pipelines müssen vor allem eine Entkopplung zwischen dem Speicher (mit meist unvorhersagbarer Zugriffszeit) und den Registern schaffen.

  • Methoden zur Bestimmung der korrekten Ausführungsreihenfolge und insbesondere Speicherreihenfolge in den Registern. Diese Funktionseinheit ist besonders wichtig, da die sequenzielle Reihenfolge der Befehlsbeschreibung in eine Ergebnisreihenfolge mündet. Diese Sequenz der Ergebnisse muss auch der superskalare Prozessor strikt einhalten.

Zusammenfassend kann man sagen, dass ein superskalarer Prozessor zwar die Instruktionssequenzialität nicht mehr einhalten kann, jedoch immer noch die Ergebnissequenzialität bietet (und bieten muss).