Superskalarität
# Superskalarität

Unter Superskalarität versteht man die Fähigkeit eines Prozessors, zwei oder mehr skalare Befehle eines Befehlsstroms gleichzeitig mit Hilfe von mehreren parallel arbeitenden Funktionseinheiten auszuführen. Es handelt sich dabei um eine Nebenläufigkeit bei der Ausführung einzelner Maschinenanweisungen. Dazu müssen die parallel abgearbeiten Befehle voneinander unabhängig sein und der Prozessor muss mindestens zwei parallel betreibbare Ausführungseinheiten besitzen. Da (implizite) Superskalartechnik nicht den Befehlssatz der Architektur und nicht die Semantik verändert, wird auch von einer Mikroarchitektur gesprochen.

Im Englischen wird ein superskalarer Prozessor auch als dual-issue processor (2 Ausführungseinheiten) bzw. multiple-issue processor (mehr als 2) bezeichnet. Superskalarität ermöglicht es, mehr als eine Maschinenanweisung pro Takt zu bearbeiten, während Pipelining die maximal mögliche Taktfrequenz erhöht. Im Bereich von Smartphones, Tablets und PCs ist Superskalarität seit vielen Jahren Standard.

Im Bereich der Mikrocontroller ist Superskalarität nicht sehr verbreitet. ARM adressierte diesen Mangel 2014 mit den Cortex M7 Microcontrollern.

Das Grundprinzip des statischen superskalaren Ansatzes ist bereits im Jahr 1964 bei der Firma Control Data Corporation (CDC) aufgekommen, die den ersten Supercomputer (CDC 6600) entwickelte. Die Rechnerarchitektur des CDC 6600 beinhaltete bereits damals mehrere parallel arbeitende Funktionseinheiten für unterschiedliche mathematische Operationen. Dynamisches Scheduling wurde 1967 bei IBM entwickelt und wurde 1968 erstmalig in einer IBM System/360 Model 91 umgesetzt.

Es werden folgende Arten von Superskalarität unterschieden:

Mit Hilfe superskalarer Prozessoren kann die Anzahl der pro Takteinheit ausgeführten Befehle (Instructions per Cycle, IPC) erhöht werden. Grund dafür ist, dass das Laden von Befehlen und Operanden üblicherweise deutlich weniger Takteinheiten in Anspruch nimmt als die Ausführung der Befehle. Letzteres hängt zudem von der Art der Befehle (Addition, Multiplikation, Division etc.) ab.

Der Begriff superskalar ist eine Modifikation des Begriffs Skalar. Skalarprozessoren können maximal einen Befehl pro Taktzyklus ausführen. Superskalare Prozessoren dagegen können mehr als einen Befehl pro Taktzyklus ausführen.

