Superscalar -Prozessor

Einfache Supercalar -Pipeline. Durch das Abrufen und Versenden von zwei Anweisungen gleichzeitig können maximal zwei Anweisungen pro Zyklus abgeschlossen werden. (If = Befehlsfetch, ID = Anweisungsdecodierung, Ex = Execute, Mem = Speicherzugriff, WB = Register-Schreibback, i = Anweisungsnummer, t = Taktzyklus [d.h. Zeit])
Prozessorboard von a Cray T3E Supercomputer mit vier Superscalar Alpha 21164 Prozessoren

A Superscalar -Prozessor ist ein Zentralprozessor das implementiert eine Form von Parallelität genannt Parallelität auf Befehlsebene Innerhalb eines einzelnen Prozessors. Im Gegensatz zu a Skalarprozessor, die höchstens einen einzelnen Anweisungen pro Taktzyklus ausführen können. Ein Superkalarprozessor kann während eines Taktzyklus mehr als einen Anweisungen ausführen Ausführungseinheiten auf dem Prozessor. Es erlaubt daher mehr Durchsatz (Die Anzahl der Anweisungen, die in einer Zeiteinheit ausgeführt werden können) als bei einem bestimmten Taktfrequenz. Jede Ausführungseinheit ist kein separater Prozessor (oder ein Kern, wenn der Prozessor a ist Multi-Core-Prozessor), aber eine Ausführungsressource innerhalb einer einzelnen CPU wie eine Arithmetik-Logikeinheit.

Im Flynns Taxonomie, ein Single-Core-Superzalarprozessor wird als ein klassifiziert Sisd Prozessor (einzelner Befehlsstrom, Einzeldatenstrom), obwohl ein Single-Core-Superscalar-Prozessor, der kurze Vektoroperationen unterstützt, als klassifiziert werden Simd (Einzelanweisungsstrom, mehrere Datenströme). EIN Multi-Core Superscalar -Prozessor wird als klassifiziert als Mimd Prozessor (mehrere Befehlsströme, mehrere Datenströme).

Während eine superscalararische CPU typischerweise auch ist PipelineSuperscalar- und Pipelining -Ausführung werden als unterschiedliche Leistungsverbesserungstechniken angesehen. Ersteres führt mehrere Anweisungen parallel mit mehreren Ausführungseinheiten aus, während die letzteren mehrere Anweisungen in derselben Ausführungseinheit parallel ausführen, indem die Ausführungseinheit in verschiedene Phasen aufgeteilt wird.

Die Supercalar -Technik ist traditionell mit mehreren identifizierenden Merkmalen (innerhalb einer bestimmten CPU) verbunden:

  • Anweisungen werden aus einem sequentiellen Befehlsstrom ausgegeben
  • Die CPU überprüft dynamisch auf Datenabhängigkeiten zwischen Anweisungen zur Laufzeit (gegen Software -Überprüfung bei Zeit kompilieren)
  • Die CPU kann mehrere Anweisungen pro Taktzyklus ausführen

Geschichte

Seymour Cray's CDC 6600 Ab 1964 wird oft als erstes Supercalar -Design erwähnt. Die 1967 IBM System/360 Modell 91 war ein weiterer superzalarer Mainframe. Die Motorola MC88100 (1988), die, die Intel i960CA (1989) und die AMD 29000-Series 29050 (1990) Mikroprozessoren waren die ersten kommerziellen Single-Chip-Superscalar-Mikroprozessoren. RISC Mikroprozessoren wie diese waren die ersten, die eine übersagende Ausführung hatten, da RISC -Architekturen freie Transistoren und die. CISC Entwürfe in den 1980er Jahren und bis in die 1990er Jahre).

Mit Ausnahme von CPUs in verwendet in geringer Strom Anwendungen, eingebettete Systeme, und Batterie-Verrichtungen, im Wesentlichen alle seit ungefähr 1998 entwickelten allgemeinen CPUs, sind superzalar.

Das P5 Pentium war der erste Supercalar X86 -Prozessor; das NX586, P6 Pentium Pro und AMD K5 waren zu den ersten Designs, die dekodieren x86-Truktionen asynchron in dynamisch Mikrocode-wie Micro-op Sequenzen vor der tatsächlichen Ausführung auf einem Superscalar Mikroarchitektur; Dies öffnete sich für die dynamische Planung von Puffered teilweise Anweisungen und ermöglichte es mehr Parallelität im Vergleich zu den starreren Methoden, die im einfacheren verwendeten sind P5 Pentium; Es vereinfacht auch Spekulative Ausführung und erlaubte höhere Taktfrequenzen im Vergleich zu Designs wie dem Fortgeschrittenen Cyrix 6x86.

Skalar zu Supercalar

Die einfachsten Prozessoren sind Skalarprozessoren. Jeder von einem Skalarprozessor ausgeführte Befehl manipuliert normalerweise jeweils ein oder zwei Datenelemente. Im Gegensatz dazu, jede von a ausgeführte Anweisung Vektorprozessor arbeitet gleichzeitig bei vielen Datenelementen. Eine Analogie ist der Unterschied zwischen Skalar und Vektorarithmetik. Ein Supercalar -Prozessor ist eine Mischung aus beiden. Jeder Befehl verarbeitet ein Datenelement, es gibt jedoch mehrere Ausführungseinheiten in jeder CPU, sodass mehrere Anweisungen separate Datenelemente gleichzeitig verarbeiten können.

Das Superscalar -CPU -Design betont die Verbesserung der Genauigkeit der Anweisungen und ermöglicht es, die mehreren Ausführungseinheiten jederzeit zu verwenden. Dies ist immer wichtiger geworden, da die Anzahl der Einheiten zugenommen hat. Während frühe Supercalar -CPUs zwei haben würde Alus und eine Single FPU, ein späteres Design wie das Powerpc 970 Enthält vier Alus, zwei FPUs und zwei SIMD -Einheiten. Wenn der Dispatcher unwirksam ist, all diese Einheiten mit Anweisungen zu füttern, ist die Leistung des Systems nicht besser als die eines einfacheren, billigeren Designs.

Ein superzalarer Prozessor erhält normalerweise eine Ausführungsrate von mehr als einer Anweisung pro Maschinenzyklus. Aber nur mehrere Anweisungen gleichzeitig zu verarbeiten, macht eine Architektur nicht überszenscalar, da Pipeline, Multiprozessor oder Multi-Core Architekturen erreichen dies auch, aber mit unterschiedlichen Methoden.

In einer superscalararischen CPU liest der Dispatcher Anweisungen aus dem Speicher und entscheidet, welche parallel ausgeführt werden können, wobei sie jeweils in eine der verschiedenen Ausführungseinheiten versenden, die in einer einzelnen CPU enthalten sind. Daher kann ein superzalarer Prozessor mit mehreren parallelen Pipelines vorgestellt werden, von denen jede Anweisungen gleichzeitig von einem einzelnen Befehlsfaden verarbeitet.

Einschränkungen

Die verfügbare Leistungsverbesserung aus Supercalar -Techniken ist durch drei Schlüsselbereiche begrenzt:

  • Der Grad der intrinsischen Parallelität im Anweisungsstrom (Anweisungen, die dieselben Rechenressourcen aus der CPU erfordern)
  • Die Komplexität und Zeitkosten der Abhängigkeitsprüfunglogik und Umbenennen registrieren Schaltkreis
  • Die Abzweiganweisungsbearbeitung

Bestehende binäre ausführbare Programme weisen unterschiedliche intrinsische Parallelität auf. In einigen Fällen sind Anweisungen nicht voneinander abhängig und können gleichzeitig ausgeführt werden. In anderen Fällen sind sie voneinander abhängig: Eine Anweisung wirkt sich entweder Ressourcen oder Ergebnisse des anderen aus. Die Anleitungen a = b + c; d = e + f kann parallel ausgeführt werden, da keiner der Ergebnisse von anderen Berechnungen abhängt. Die Anweisungen a = b + c; b = e + f Es ist möglicherweise nicht parallel, abhängig von der Reihenfolge, in der die Anweisungen abgeschlossen sind, während sie sich durch die Einheiten bewegen, nicht mehr ausgeführt werden.

Obwohl der Anweisungsstrom keine Abhängigkeiten zwischen den Instruktionen enthalten kann, muss eine superscalararische CPU dennoch auf diese Möglichkeit überprüfen, da es sonst keine Sicherheit gibt, und das Versäumnis, eine Abhängigkeit zu erkennen, würde zu falschen Ergebnissen führen.

Egal wie fortschritt die Halbleiterprozess Oder wie schnell die Schaltgeschwindigkeit, dadurch eine praktische Begrenzung dafür legt, wie viele Anweisungen gleichzeitig versandt werden können. Während die Prozessvorschüsse immer größerer Ausführungseinheiten (z. B. Alus) ermöglichen, wächst die Belastung für die Überprüfung der Anweisungsabhängigkeiten schnell, ebenso wie die Komplexität der Umbenennung von Schaltkreisen, um einige Abhängigkeiten zu mildern. Zusammen das Energieverbrauch, Komplexität und Gate -Verzögerungskosten begrenzen die erreichbare überscalar -Beschleunigung.

Selbst angesichts der unendlich schnellen Abhängigkeitsprüfung der Logik einer ansonsten herkömmlichen Supercalar -CPU würde dies auch die mögliche Beschleunigung einschränken, wenn der Befehlsstrom selbst viele Abhängigkeiten hat. Somit bildet der Grad der intrinsischen Parallelität im Code -Stream eine zweite Einschränkung.

Alternativen

Insgesamt führen diese Grenzen die Untersuchung alternativer architektonischer Veränderungen wie z. Sehr langes Unterrichtswort (VLIW), explizit parallele Anweisungsrechnung (EPOS), Simultanes Multithreading (Smt) und Multi-Core-Computing.

Mit VLIW die belastende Aufgabe der Abhängigkeitsprüfung durch Hardwarelogik zur Laufzeit wird entfernt und an die delegiert Compiler. Explizit parallele Anweisungsrechnung (EPIC) ist wie VLIW mit zusätzlichen Cache -Vorabfassungsanweisungen.

Simultaneous Multithreading (SMT) ist eine Technik zur Verbesserung der Gesamteffizienz von Supercalar -Prozessoren. SMT ermöglicht mehrere unabhängige Ausführungsfäden, um die von modernen Prozessorarchitekturen bereitgestellten Ressourcen besser zu nutzen.

Superscalar -Prozessoren unterscheiden sich von unterscheiden Multi-Core-Prozessoren Dort sind die verschiedenen Ausführungseinheiten keine ganzen Prozessoren. Ein einzelner Prozessor besteht aus feiner körnigen Ausführungseinheiten wie dem Alu, ganze Zahl Multiplikator, ganzzahliger Shifter, FPUusw. Es kann mehrere Versionen jeder Ausführungseinheit geben, um die Ausführung vieler Anweisungen parallel zu ermöglichen. Dies unterscheidet sich von einem Multi-Core-Prozessor, der gleichzeitig Anweisungen von verarbeitet mehrere Themen, ein Thread pro Verarbeitungseinheit (genannt "Kern"). Es unterscheidet sich auch von a Pipeline -Prozessor, wo die mehreren Anweisungen gleichzeitig in verschiedenen Ausführungsstadien liegen können, Fließband Mode.

Die verschiedenen alternativen Techniken schließen sich nicht gegenseitig aus - sie können (und häufig) in einem einzigen Prozessor kombiniert werden. Somit ist eine Multicore -CPU möglich, wenn jeder Kern ein unabhängiger Prozessor ist, der mehrere parallele Pipelines enthält, wobei jede Pipeline superzalar ist. Einige Prozessoren umfassen auch Vektor Fähigkeit.

Siehe auch

Verweise

  • Mike Johnson, Superscalar -Mikroprozessor -Design, Prentice-Hall, 1991, ISBN0-13-875634-1
  • Sorin Cotofana, Stamatis vassiliadis, "Über die Entwurfskomplexität der Ausgabelogik der Superscalar -Maschinen", Euromicro 1998: 10277-10284
  • Steven McGeady, "Die i960ca superscalar -Implementierung der 80960 Architektur", IEEE 1990, S. 232–240
  • Steven McGeady, et al., "Leistungsverbesserungen im superscalar i960mm eingebetteten Mikroprozessor", " ACM -Verfahren der Konferenz von 1991 zur Computerarchitektur (COMPCON), 1991, S. 4–7

Externe Links