Superskalar

Eine Superskalarzentraleinheitsarchitektur führt eine Form des Parallelismus genannt Instruktionsniveau-Parallelismus innerhalb eines einzelnen Verarbeiters durch. Es erlaubt deshalb schnelleren Zentraleinheitsdurchfluss, als an einer gegebenen Uhr-Rate sonst möglich sein würde. Ein Superskalarverarbeiter führt mehr als eine Instruktion während eines Uhr-Zyklus durch das gleichzeitige Verschicken vielfacher Instruktionen zu überflüssigen funktionellen Einheiten auf dem Verarbeiter durch. Jede funktionelle Einheit ist nicht ein getrennter Zentraleinheitskern, aber eine Ausführungsquelle innerhalb einer einzelnen Zentraleinheit wie eine arithmetische Logikeinheit, wenig Schichtarbeiter oder ein Vermehrer.

In der Taxonomie von Flynn wird ein Einleitersuperskalarverarbeiter als ein SISD Verarbeiter klassifiziert (Einzelne Instruktionen, Einzelne Daten), während ein Mehrkernsuperskalarverarbeiter als ein MIMD Verarbeiter (Vielfache Instruktionen, Vielfache Daten) klassifiziert wird.

Während eine Superskalarzentraleinheit normalerweise auch pipelined ist, werden pipelining und Superskalararchitektur als verschiedene Leistungserhöhungstechniken betrachtet.

Die Superskalartechnik wird mit mehreren sich identifizierenden Eigenschaften (innerhalb eines gegebenen Zentraleinheitskerns) traditionell vereinigt:

  • Instruktionen werden von einem folgenden Instruktionsstrom ausgegeben
  • Zentraleinheitshardware überprüft dynamisch für Datenabhängigkeiten zwischen Instruktionen in der Durchlaufzeit (gegen die Software, die während der Übersetzung überprüft)
  • Die Zentraleinheit akzeptiert vielfache Instruktionen pro Uhr-Zyklus

Geschichte

Der CDC von Seymour Cray 6600 von 1965 wird häufig als das erste Superskalardesign erwähnt. Intel i960CA (1988) und die AMD 29000 Reihe 29050 (1990) Mikroprozessoren war die ersten kommerziellen Einchipsuperskalarmikroprozessoren. RISC Zentraleinheiten wie diese waren die ersten Mikroprozessoren, um das Superskalarkonzept zu verwenden, weil das RISC Design auf einen einfachen Kern hinausläuft, dadurch die Einschließung von vielfachen funktionellen Einheiten (wie ALUs) auf einer einzelnen Zentraleinheit in den gezwungenen Designregeln der Zeit erlaubend (das war, warum RISC Designs schneller waren als CISC Designs im Laufe der 1980er Jahre und in die 1990er Jahre).

Abgesehen von Zentraleinheiten, die in Anwendungen der niedrigen Macht, eingebetteten Systemen und batterieangetriebenen Geräten im Wesentlichen verwendet sind, sind alle seit 1998 entwickelten ungefähr Mehrzweckzentraleinheiten Superskalar.

Der P5 Pentium war der erste Superskalar x86 Verarbeiter; der Nx586, P6 Pentium, der Pro und AMD K5 unter den ersten Designs waren, die X86-Instruktionen asynchron in dynamische mikrocodeähnliche micro-op Folgen vor der wirklichen Ausführung auf einer Superskalarmikroarchitektur decodieren; das hat für die dynamische Terminplanung von gepufferten teilweisen Instruktionen geöffnet und hat mehr Parallelismus ermöglicht, im Vergleich zu den starreren im einfacheren P5 Pentium verwendeten Methoden herausgezogen zu werden; es hat auch spekulative Ausführung vereinfacht und hat höhere Uhr-Frequenzen im Vergleich zu Designs wie fortgeschrittener Cyrix 6x86 erlaubt.

Vom Skalar bis Superskalar

Die einfachsten Verarbeiter sind Skalarverarbeiter. Jede Instruktion, die durch einen Skalarverarbeiter normalerweise durchgeführt ist, manipuliert eine oder zwei Datensachen auf einmal. Im Vergleich funktioniert jede durch einen Vektor-Verarbeiter durchgeführte Instruktion gleichzeitig auf vielen Datensachen. Eine Analogie ist der Unterschied zwischen Skalar und Vektor-Arithmetik. Ein Superskalarverarbeiter ist eine Mischung der zwei. Jede Instruktion bearbeitet einen Datenartikel, aber es gibt vielfache überflüssige funktionelle Einheiten innerhalb jeder Zentraleinheit so vielfache Instruktionen können getrennte Datensachen gleichzeitig bearbeiten.

Superskalarzentraleinheitsdesign betont Besserung der Instruktionsfahrdienstleiter-Genauigkeit und das Erlauben davon, die vielfachen funktionellen Einheiten im Gebrauch zu jeder Zeit zu behalten. Das ist immer wichtiger geworden, als die Zahl von Einheiten zugenommen hat. Während frühe Superskalarzentraleinheiten zwei ALUs und einen einzelnen FPU haben würden, schließt ein modernes Design wie PowerPC 970 vier ALUs, zwei FPUs und zwei SIMD Einheiten ein. Wenn der Fahrdienstleiter beim Halten von allen diesen mit Instruktionen gefütterten Einheiten unwirksam ist, wird die Leistung des Systems leiden.

Ein Superskalarverarbeiter stützt gewöhnlich eine Ausführungsrate über eine Instruktion pro Maschinenzyklus. Aber bloß Verarbeitung vielfacher Instruktionen macht gleichzeitig keinen Architektur-Superskalar, da pipelined, Mehrverarbeiter oder Mehrkernarchitekturen auch das, aber mit verschiedenen Methoden erreichen.

In einer Superskalarzentraleinheit liest der Fahrdienstleiter Instruktionen auswendig und entscheidet, die in der Parallele geführt werden können, sie zu überflüssigen funktionellen innerhalb einer einzelnen Zentraleinheit enthaltenen Einheiten entsendend. Deshalb kann ein Superskalarverarbeiter vorgesehen werden, vielfache parallele Rohrleitungen habend, von denen jede Instruktionen gleichzeitig von einem einzelnen Instruktionsfaden bearbeitet.

Beschränkungen

Die verfügbare Leistungsverbesserung von Superskalartechniken wird durch drei Schlüsselgebiete beschränkt:

  1. Der Grad des inneren Parallelismus im Instruktionsstrom, d. h. beschränkter Betrag des Instruktionsniveau-Parallelismus.
  2. Die Kompliziertheit und Zeitkosten des Fahrdienstleiters und der vereinigten Abhängigkeitsüberprüfungslogik.
  3. Die Zweiginstruktionsverarbeitung.

Vorhandene binäre rechtskräftige Programme haben unterschiedliche Grade des inneren Parallelismus. In einigen Fällen sind Instruktionen von einander nicht abhängig und können gleichzeitig durchgeführt werden. In anderen Fällen sind sie voneinander abhängig: Instruktionseinflüsse entweder Mittel oder Ergebnisse vom anderen. Die Instruktionen können in der Parallele geführt werden, weil keines der Ergebnisse von anderen Berechnungen abhängt. Jedoch könnten die Instruktionen nicht runnable in der Parallele abhängig von der Ordnung sein, in der die Instruktionen vollenden, während sie sich durch die Einheiten bewegen.

Wenn die Zahl gleichzeitig ausgegebener Instruktionszunahmen, die Kosten der Abhängigkeitsüberprüfung äußerst schnell zunehmen. Das wird durch das Bedürfnis verschlimmert, Abhängigkeiten in der Durchlaufzeit und an der Uhr-Rate der Zentraleinheit zu überprüfen. Diese Kosten schließen zusätzliche Logiktore ein, die erforderlich sind, die Kontrollen und Verzögerungen durch jene Tore durchzuführen. Forschung zeigt, dass die Tor-Kosten in einigen Fällen Tore und die Verzögerungskosten sein können, wo die Zahl von Instruktionen im Befehlssatz des Verarbeiters ist, und die Zahl gleichzeitig entsandter Instruktionen ist.

Wenn auch der Instruktionsstrom keine Zwischeninstruktionsabhängigkeiten enthalten kann, muss eine Superskalarzentraleinheit dennoch für diese Möglichkeit überprüfen, da es keine Versicherung sonst gibt und Misserfolg, eine Abhängigkeit zu entdecken, falsche Ergebnisse erzeugen würde.

Egal wie fortgeschritten der Halbleiter-Prozess, oder wie schnell die umschaltende Geschwindigkeit, das eine praktische Grenze darauf legt, wie viele Instruktionen gleichzeitig entsandt werden können. Während Prozess-Fortschritte jemals größere Zahlen von funktionellen Einheiten (z.B, ALUs), die Last erlauben werden zu überprüfen, dass Instruktionsabhängigkeiten so schnell wachsen, dass die erreichbare Superskalarabsendungsgrenze wahrscheinlich auf der Ordnung von fünf bis sechs gleichzeitig entsandten Instruktionen ziemlich klein ist.

Jedoch sogar gegeben ungeheuer schnelle Abhängigkeitsüberprüfungslogik auf einer sonst herkömmlichen Superskalarzentraleinheit, wenn der Instruktionsstrom selbst viele Abhängigkeiten hat, würde das auch die mögliche Beschleunigung beschränken. So bildet der Grad des inneren Parallelismus im Codestrom eine zweite Beschränkung.

Alternativen

Insgesamt steuern diese Grenzen Untersuchung alternativer architektonischer Änderungen wie Very Long Instruction Word (VLIW), Explicitly Parallel Instruction Computing (EPIC), gleichzeitige Nebenläufigkeit (SMT) und Mehrkernverarbeiter.

Mit VLIW wird die lästige Aufgabe der Abhängigkeit, die von Hardware-Logik in der Durchlaufzeit überprüft, entfernt und an den Bearbeiter delegiert. Explicitly Parallel Instruction Computing (EPIC) ist VLIW, mit dem zusätzlichen geheimen Lager vorbezaubernde Instruktionen ähnlich.

Gleichzeitige Nebenläufigkeit, häufig abgekürzt als SMT, ist eine Technik, für die gesamte Leistungsfähigkeit von Superskalarzentraleinheiten zu verbessern. SMT erlaubt vielfachen unabhängigen Fäden der Ausführung, die durch moderne Verarbeiter-Architekturen zur Verfügung gestellten Mittel besser zu verwerten.

Superskalarverarbeiter unterscheiden sich von Mehrkernverarbeitern darin die überflüssigen funktionellen Einheiten sind nicht komplette Verarbeiter. Ein einzelner Verarbeiter wird aus feineren-grained funktionellen Einheiten wie der ALU, Vermehrer der ganzen Zahl, Schichtarbeiter der ganzen Zahl zusammengesetzt, Punkt-Einheit usw. schwimmen lassend. Es kann vielfache Versionen jeder funktionellen Einheit geben, um Ausführung von vielen Instruktionen in der Parallele zu ermöglichen. Das unterscheidet sich von einem Mehrkernverarbeiter, der gleichzeitig Instruktionen von vielfachen Fäden, einem Faden pro Kern bearbeitet. Es unterscheidet sich auch von einer pipelined Zentraleinheit, wo die vielfachen Instruktionen in verschiedenen Stufen der Ausführung, Montageband Mode gleichzeitig sein können.

Die verschiedenen alternativen Techniken sind nicht gegenseitig exklusiv — sie können sein (und sind oft) verbunden in einem einzelnen Verarbeiter. So ist eine Mehrkernzentraleinheit möglich, wo jeder Kern ein unabhängiger Verarbeiter ist, der vielfache parallele Rohrleitungen, jede Rohrleitung enthält, die Superskalar ist. Einige Verarbeiter schließen auch Vektor-Fähigkeit ein.

Siehe auch

  • Das Supereinfädeln
  • Gleichzeitige Nebenläufigkeit (SMT)
  • Spekulative Ausführung / Eifrige Ausführung
  • Softwareaussperrung, ein Mehrverarbeiter-Problem, das Logikabhängigkeiten von Superskalaren ähnlich
ist
  • Mike Johnson, Superskalarmikroprozessor-Design, Prentice-Saal, 1991, internationale Standardbuchnummer 0-13-875634-1
  • Sorin Cotofana, Stamatis Vassiliadis, "Auf der Designkompliziertheit der Problem-Logik von Superskalarmaschinen", EUROMICRO 1998: 10277-10284
  • Steven McGeady, "Die i960CA Durchführung von SuperScalar der 80960 Architektur", IEEE 1990, Seiten 232-240
  • Steven McGeady, u. a. "Leistungserhöhungen im Superskalar i960MM Eingebetteter Mikroprozessor," ACM Verhandlungen der 1991-Konferenz für die Computerarchitektur (Compcon), 1991, Seiten 4-7

Links


Verlängerte Linie der reellen Zahl / Dachboden (Begriffserklärung)
Impressum & Datenschutz