Ein superskalarer Prozessor kann mehrere Anweisungen in einem einzigen Programm parallel ausführen. Dies geschieht durch Analysieren des Befehlsstroms, um zu bestimmen, welche Befehle nicht voneinander abhängig sind, und mehrere Ausführungseinheiten innerhalb des Prozessors haben, um die Arbeit gleichzeitig auszuführen (z . B. mehrere ALUs ). Compiler-Unterstützung ist im Allgemeinen nicht erforderlich, um Code für superskalare Prozessoren zu optimieren, da die Funktionalität normalerweise vollständig in Hardware implementiert ist. 1
Ein Vektorprozessor enthält Anweisungen, die speziell dafür ausgelegt sind, ganze Gruppen mehrerer Datenwerte gleichzeitig zu bearbeiten (als Arrays oder Vektoren bezeichnet ). Die meisten modernen Hochleistungsprozessoren verfügen über eine Form der Vektorverarbeitung. zum Beispiel; Der in den meisten x86-Prozessoren verfügbare SSE- ADDPS
Befehl berechnet die Summe von zwei Vektoren, die jeweils vier Werte mit einfacher Genauigkeit enthalten. Die Unterstützung von Compilern, Entwicklern und Betriebssystemen ist in der Regel für die Verwendung von Vektoranweisungen erforderlich, und nicht jeder Prozessor unterstützt auch in aktuellen Generationen die fortschrittlichsten Vektoranweisungen (z. B. unterstützen Intel Celeron- und Pentium-Prozessoren auch von Kaby Lake nicht AVX.) ).
In dieser Antwort finden Sie weitere technische Informationen darüber, wie die heutigen Prozessoren eine hohe Leistung erzielen .
1 Ein alternativer und eher ungewöhnlicher Entwurfsansatz besteht darin, über mehrere Ausführungseinheiten zu verfügen, der Compiler kann jedoch bestimmen, welche Anweisungen für jede Takteinheit an jede Ausführungseinheit ausgegeben werden sollen. Dies wird als sehr langes Befehlswort bezeichnet und wird normalerweise nur von spezialisierten Prozessoren gefunden.