Superskalarität
Unter Superskalarität versteht man die Eigenschaft eines Prozessors, mehrere Befehle aus einem Befehlsstrom gleichzeitig mit mehreren parallel arbeitenden Funktionseinheiten zu verarbeiten. Es handelt sich dabei um eine Nebenläufigkeit auf Befehlsebene, bei der die feinkörnige Nebenläufigkeit zwischen den einzelnen Befehlen ausgenutzt wird. Da Superskalartechnik nicht den Befehlssatz der Architektur verändert, wird auch von einer Mikroarchitektur gesprochen.
In den betreffenden Prozessorkernen nennt sich dies hardwareseitiges Multithreading.
Im Englischen wird ein superskalarer Prozessor auch als multiple-issue processor bezeichnet. Technisch gesehen ist Superskalarität eine Weiterentwicklung des CPU-Pipelining und kommt in High-End-Prozessoren, seit dem Intel Pentium auch in Standard-Prozessoren der Personal-Computer-Technik, zum Einsatz. Im Bereich der Mikrocontroller ist Superskalarität nicht sehr verbreitet. ARM adressierte diesen Mangel 2014 mit den Cortex M7 Microcontrollern[1][2].
Das Grundprinzip des 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.
Es werden drei Arten von Superskalarität unterschieden:[3]
- Superskalare Prozessoren mit statischem Scheduling: Die Anzahl der pro CPU-Zyklus parallel ausführbaren Befehle ist nicht vorgegeben, sondern wird durch die CPU dynamisch bestimmt. Da es sich um statisches Scheduling handelt, wird die Reihenfolge der Befehle vom Compiler vorgegeben (In-order execution).
- Superskalare Prozessoren mit dynamischem Scheduling: Die CPU bestimmt sowohl, welche Befehle parallel ausgeführt werden, als auch die Reihenfolge, in der dies geschieht (Out-of-order execution).
- VLIW-Prozessoren (Very Long Instruction Word): Diese Architekturen benutzen deutlich längere Befehle, in denen die parallel auszuführenden Befehle vorgegeben werden. Bei der IA-64-Architektur wird dies auch EPIC genannt.
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.
Einzelnachweise
- ↑ Cortex-M7 Processor http://arm.com/products/processors/cortex-m/cortex-m7-processor.php
- ↑ Cortex-M for Beginners - An overview of the Arm Cortex-M processor family and comparison (2017) https://community.arm.com/cfs-file/__key/telligent-evolution-components-attachments/01-2057-00-00-00-01-28-35/Cortex_2D00_M-for-Beginners-_2D00_-2017_5F00_EN_5F00_v2.pdf, 2.5 Instructions support in Cortex-M7
- ↑ John Hennessy, David Patterson: Computer Architecture. A Quantitative Approach. 4th Edition, Morgan Kaufmann Publishers, ISBN 978-0-12-370490-0, S. 114.