Sehr langes Instruktionswort

Sehr langes Instruktionswort oder VLIW verweisen auf eine Verarbeiter-Architektur, die entworfen ist, den Instruktionsniveau-Parallelismus (ILP) auszunutzen. Wohingegen herkömmliche Verarbeiter größtenteils nur Programme erlauben, die Instruktionen angeben, nacheinander durchgeführt zu werden, erlaubt ein VLIW Verarbeiter Programme, die Instruktionen ausführlich angeben können, zur gleichen Zeit (d. h. in der Parallele) durchgeführt zu werden. Dieser Typ der Verarbeiter-Architektur ist beabsichtigt, um höhere Leistung ohne die innewohnende Kompliziertheit einiger anderer Annäherungen zu erlauben.

Traditionelle Annäherungen an die sich verbessernde Leistung in Verarbeiter-Architekturen schließen ein, Instruktionen in Subschritte zerbrechend, so dass Instruktionen teilweise zur gleichen Zeit (pipelining) durchgeführt werden können, individuelle Instruktionen entsendend, völlig unabhängig in verschiedenen Teilen des Verarbeiters (Superskalararchitekturen) durchgeführt zu werden, und sogar Instruktionen in einer Ordnung durchführend, die vom Programm (in Unordnung Ausführung) verschieden ist. Diese Annäherungen alle schließen vergrößerte Hardware-Kompliziertheit ein (höher Kosten, größere Stromkreise, höherer Macht-Verbrauch), weil der Verarbeiter alle Entscheidungen innerlich für diese Annäherungen an die Arbeit wirklich treffen muss. Die VLIW-Annäherung hängt im Vergleich von den Programmen ab, die selbst alle Entscheidungen zur Verfügung stellen, bezüglich deren Instruktionen gleichzeitig durchgeführt werden sollen, und wie Konflikte aufgelöst werden sollen. Als eine praktische Sache bedeutet das, dass die Bearbeiter-Software (die Software, die verwendet ist, um die Endprogramme zu schaffen), viel komplizierter wird, aber die Hardware ist einfacher als viele andere Annäherungen an den Parallelismus.

Wie mit jeder neuartigen architektonischen Annäherung der Fall ist, ist das Konzept nur so nützlich, wie Codegeneration es macht. Eine Architektur, die für den Gebrauch in der Signalverarbeitung entworfen ist, kann mehrere Instruktionen des speziellen Zwecks haben, bestimmte komplizierte Operationen wie Berechnung des schnellen Fouriers verwandelt sich (FFT) oder bestimmte Berechnungen zu erleichtern, die in tomographic Zusammenhängen wiederkehren. Jedoch sind diese optimierten Fähigkeiten nutzlos, wenn Bearbeiter nicht im Stande sind, relevante Quellcodekonstruktionen zu entdecken und Zielcode zu erzeugen, der ordnungsgemäß die fortgeschrittenen Angebote der Zentraleinheit verwertet. Deshalb müssen Programmierer im Stande sein, ihre Algorithmen gewissermaßen auszudrücken, der die Aufgabe des Bearbeiters leichter macht.

Motivation

Ein Verarbeiter, der jede Instruktion nacheinander durchführt (d. h. eine non-pipelined Skalararchitektur) kann Verarbeiter-Mittel ineffizient verwenden, potenziell zu schlechter Leistung führend. Die Leistung kann durch die Durchführung verschiedener Subschritte von folgenden Instruktionen gleichzeitig verbessert werden (das ist pipelining), oder sogar Durchführung vielfacher Instruktionen völlig gleichzeitig als in Superskalararchitekturen. Weitere Verbesserung kann durch die Durchführung von Instruktionen in einer von der Ordnung verschiedenen Ordnung erreicht werden sie erscheinen im Programm; das wird in Unordnung Ausführung genannt.

Wie häufig durchgeführt, diese drei Techniken kommen alle an Kosten: vergrößerte Hardware-Kompliziertheit. Vor der Durchführung irgendwelcher Operationen in der Parallele,

der Verarbeiter muss nachprüfen, dass die Instruktionen gegenseitige Abhängigkeiten zum Beispiel nicht haben, wird ein Ergebnis einer ersten Instruktion als ein Eingang einer zweiten Instruktion verwendet. Klar können sie nicht zur gleichen Zeit durchführen, und die zweite Instruktion kann vor dem ersten nicht durchgeführt werden. Modern in Unordnung haben Verarbeiter die Hardware-Mittel vergrößert, die die Terminplanung von Instruktionen und Bestimmung von gegenseitigen Abhängigkeiten tun.

Die VLIW-Annäherung führt andererseits Operationen in der Parallele durch, die auf einer festen bestimmten Liste gestützt ist, wenn Programme kompiliert werden. Seit der Bestimmung der Ordnung der Ausführung von Operationen (einschließlich dessen Operationen gleichzeitig durchführen können) wird durch den Bearbeiter behandelt, der Verarbeiter braucht die Terminplanungshardware nicht, die die drei Techniken, die oben beschrieben sind, verlangen. Infolgedessen bieten VLIW Zentraleinheiten bedeutende rechenbetonte Macht mit weniger Hardware-Kompliziertheit an (aber größere Bearbeiter-Kompliziertheit), als es mit den meisten Superskalarzentraleinheiten vereinigt wird.

Design

In Superskalardesigns ist die Zahl von Ausführungseinheiten für den Befehlssatz unsichtbar. Jede Instruktion verschlüsselt nur eine Operation. Für die meisten Superskalardesigns ist die Instruktionsbreite 32 Bit oder weniger. VLIW ist ein Typ von MIMD.

Im Gegensatz verschlüsselt eine VLIW Instruktion vielfache Operationen; spezifisch verschlüsselt eine Instruktion mindestens eine Operation wegen jeder Ausführungseinheit des Geräts. Zum Beispiel, wenn ein VLIW Gerät fünf Ausführungseinheiten hat, dann würde eine VLIW Instruktion für dieses Gerät fünf Operationsfelder, jedes Feld haben, das angibt, welche Operation auf dieser entsprechenden Ausführungseinheit getan werden sollte. Um diese Operationsfelder anzupassen, sind VLIW Instruktionen gewöhnlich mindestens 64 Bit breit, und auf einigen Architekturen sind viel breiter.

Zum Beispiel ist der folgende eine Instruktion für den SHARC. In einem Zyklus tut es einen Schwimmpunkt multiplizieren, ein Schwimmpunkt, tragen und zwei selbstinkrementierende Lasten bei. All dieser baut eine einzelne 48-Bit-Instruktion ein.

:: f12=f0*f4, f8=f8+f12, f0=dm (i0, m3), f4=pm (i8, m9);

Seit den frühsten Tagen der Computerarchitektur haben einige Zentraleinheiten mehrere zusätzliche arithmetische Logikeinheiten (ALUs) hinzugefügt, um in der Parallele zu laufen. Superskalarzentraleinheiten verwenden Hardware, um zu entscheiden, welche Operationen in der Parallele laufen können. VLIW Zentraleinheiten verwenden Software (der Bearbeiter), um zu entscheiden, welche Operationen in der Parallele laufen können. Weil die Kompliziertheit der Instruktionsterminplanung auf den Bearbeiter abgestoßen wird, kann die Kompliziertheit der Hardware wesentlich reduziert werden.

Ein ähnliches Problem kommt vor, wenn das Ergebnis einer parallelisable Instruktion als Eingang für einen Zweig verwendet wird. Modernste Zentraleinheiten "Annahme", welcher Zweig sogar vor der Berechnung genommen wird, sind abgeschlossen, so dass sie die Instruktionen für den Zweig laden können, oder (in einigen Architekturen) sogar anfangen, sie spekulativ zu schätzen. Wenn die Zentraleinheitsannahmen falsch, alle diese Instruktionen und ihr Zusammenhang "gespült" werden müssen und die richtigen geladen, der zeitraubend ist.

Das hat zu immer komplizierterer Instruktionsabsendungslogik geführt, die versucht, richtig zu schätzen, und die Einfachheit der ursprünglichen RISC Designs weggefressen worden ist. VLIW hat an dieser Logik Mangel, und hat deshalb an seinem Macht-Verbrauch, möglichen Designdefekten und anderen negativen Eigenschaften Mangel.

In einem VLIW verwendet der Bearbeiter Heuristik oder Profil-Information, um die Richtung eines Zweigs zu erraten. Das erlaubt ihm, Operationen spekulativ zu bewegen und vorzuplanen, bevor der Zweig genommen wird, den wahrscheinlichsten Pfad bevorzugend, den es durch den Zweig erwartet. Wenn der Zweig den unerwarteten Weg geht, hat der Bearbeiter bereits ausgleichenden Code erzeugt, um spekulative Ergebnisse zu verwerfen, Programm-Semantik zu bewahren.

Das Akronym, das VLIW auch auf das Sehr Lange Instruktionswort, ein Zentraleinheitsbefehlssatz verweisen kann, hat vorgehabt (oder Kopie) eine wörtliche Wertzählung des Reihenmaschinencodes zum RAM auf dem Span für die höhere Geschwindigkeitszentraleinheitsentzifferung zu laden.

Geschichte

Der Begriff VLIW und das Konzept der VLIW Architektur selbst, wurde von Josh Fisher in seiner Forschungsgruppe an der Yale Universität am Anfang der 1980er Jahre erfunden. Seine ursprüngliche Entwicklung der Spur, als eine Kompilationstechnik für VLIW planend, wurde entwickelt, als er ein Student im Aufbaustudium an der New Yorker Universität war. Vor VLIW, dem Begriff, funktionelle Einheiten und Instruktionsniveau-Parallelismus in der Software vorzuplanen, wurde in der Praxis gut gegründet, horizontalen Mikrocode zu entwickeln. Die Neuerungen von Fisher waren um das Entwickeln eines Bearbeiters, der horizontalen Mikrocode aus auf einer gewöhnlichen Programmiersprache geschriebenen Programmen ins Visier nehmen konnte. Er hat begriffen, dass, um gute Leistung zu bekommen und eine Maschine des breiten Problems ins Visier zu nehmen, es notwendig sein würde, Parallelismus darüber hinaus allgemein innerhalb eines grundlegenden Blocks zu finden. Er hat Gebiet-Terminplanungstechniken entwickelt, um Parallelismus außer grundlegenden Blöcken zu identifizieren. Spur-Terminplanung ist solch eine Technik, und ist mit Terminplanung des wahrscheinlichsten Pfads von grundlegenden Blöcken zuerst, das Einfügen des Entschädigungscodes verbunden, um sich mit spekulativen Bewegungen, Terminplanung der zweiten wahrscheinlichsten Spur und so weiter zu befassen, bis die Liste abgeschlossen ist.

Die zweite Neuerung von Fisher war der Begriff, dass die Zielzentraleinheitsarchitektur entworfen werden sollte, um ein angemessenes Ziel für einen Bearbeiter zu sein - müssen der Bearbeiter und die Architektur für VLIW co-designed sein. Das wurde durch die Schwierigkeit Fisher teilweise begeistert, der an Yale des Kompilierens für Architekturen wie Schwimmpunkt-System-FPS164 beobachtet ist, der eine komplizierte Befehlssatz-Architektur (CISC) hatte, der Instruktionseinleitung von den Instruktionen getrennt hat, die das Ergebnis gespart haben, sehr komplizierte Terminplanungsalgorithmen verlangend. Fisher hat eine Reihe von Grundsätzen entwickelt, die ein richtiges VLIW Design, wie selbstabfließende Rohrleitungen, breite Mehrfachanschlussregister-Dateien und Speicherarchitekturen charakterisiert. Diese Grundsätze haben es leichter für Bearbeiter gemacht, schnellen Code zu schreiben.

Der erste VLIW Bearbeiter wurde in einer Doktorarbeit von John Ellis beschrieben, der von Fisher beaufsichtigt ist. Der Bearbeiter war getaufte Bulldogge nach dem Glücksbringer von Yale. John Ruttenberg hat auch bestimmte wichtige Algorithmen für die Terminplanung entwickelt.

Fisher hat Yale 1984 zum gefundenen eine Anlauf-Gesellschaft, Mehrfluss, zusammen mit Mitbegründern John O'Donnell und John Ruttenberg verlassen. Mehrfluss hat die SPUR-Reihe von VLIW minisupercomputers erzeugt, ihre ersten Maschinen 1987 verladend. Der VLIW des Mehrflusses konnte 28 Operationen in der Parallele pro Instruktion ausgeben. Das SPUR-System wurde in einer MSI/LSI/VLSI-Mischung durchgeführt, die in Kabinetten, eine Technologie paketiert ist, die aus Bevorzugung gefallen ist, als es rentabler geworden ist, um alle Bestandteile eines Verarbeiters zu integrieren (Gedächtnisses ausschließend), auf einem einzelnen Span. Mehrfluss war zu früh, um die folgende Welle zu fangen, als Span-Architekturen begonnen haben, vielfache Problem-Zentraleinheiten zu erlauben. Die Haupthalbleiter-Gesellschaften haben den Wert der Mehrfluss-Technologie in diesem Zusammenhang anerkannt, so wurden der Bearbeiter und die Architektur nachher von den meisten dieser Gesellschaften lizenziert.

Durchführungen

Cydrome war eine Gesellschaft, die VLIW numerische Verarbeiter mit der ECL Technologie in demselben Zeitrahmen (gegen Ende der 1980er Jahre) erzeugt. Diese Gesellschaft, wie Mehrfluss, ist aus dem Geschäft nach ein paar Jahren gegangen.

Einer der Lizenznehmer der Mehrfluss-Technologie ist Hewlett Packard, dem sich Josh Fisher nach der Besitzübertragung des Mehrflusses angeschlossen hat. Bob Rau, Gründer von Cydrome, hat sich auch HP angeschlossen, nachdem Cydrome gescheitert hat. Diese zwei würden Computerarchitektur-Forschung innerhalb von Hewlett Packard während der 1990er Jahre führen.

Zusätzlich zu den obengenannten Systemen, um dieselbe Periode (d. h. 1989-1990), hat Intel VLIW in Intel i860, ihrem ersten 64-Bit-Mikroprozessor durchgeführt; der i860 war auch der erste Verarbeiter, um VLIW auf einem einzelnen Span durchzuführen. Dieser Verarbeiter konnte sowohl in der einfachen RISC Weise als auch in VLIW Weise funktionieren:

Am Anfang der 1990er Jahre hat Intel den i860 RISC Mikroprozessor eingeführt. Dieser einfache Span hatte zwei Verfahrensweisen: eine Skalarweise und eine VLIW Weise. In der VLIW Weise hat der Verarbeiter immer zwei Instruktionen herbeigeholt und hat angenommen, dass man eine Instruktion der ganzen Zahl und der andere Schwimmpunkt war

Der i860's VLIW Weise wurde umfassend in eingebetteten DSP Anwendungen seit der Anwendungsausführung verwendet, und datasets, waren gut bestellte einfach und voraussagbar, dem Entwerfer erlaubend, vollen Vorteil der parallelen Ausführungsvorteile zu nehmen, zu denen VLIW sich geliehen hat; in der VLIW Weise ist der i860 im Stande gewesen, Schwimmpunkt-Leistung im Rahmen 20-40 doppelter Genauigkeit MFLOPS (eine äußerst hohe Zahl für seine Zeit und für einen Verarbeiter aufrechtzuerhalten, der am 25-50Mhz funktioniert).

In den 1990er Jahren hat Hewlett Packard dieses Problem als eine Nebenwirkung der andauernden Arbeit an ihrer Verarbeiter-Familie des PAPAS-RISC erforscht. Sie haben gefunden, dass die Zentraleinheit durch das Entfernen der komplizierten Absendungslogik von der Zentraleinheit und das Stellen davon in den Bearbeiter außerordentlich vereinfacht werden konnte. Heutige Bearbeiter sind viel komplizierter als diejenigen von den 1980er Jahren, so, wie man betrachtete, war die zusätzliche Kompliziertheit im Bearbeiter kleine Kosten.

VLIW Zentraleinheiten werden gewöhnlich vielfacher RISC ähnlicher funktioneller Einheiten gebaut, die unabhängig funktionieren. Zeitgenössische VLIWs haben normalerweise vier bis acht funktionelle Haupteinheiten. Bearbeiter erzeugen Startbefehl-Folgen für die VLIW Zentraleinheit auf grob dieselbe Weise, die sie für traditionelle Zentraleinheiten tun, eine Folge von RISC ähnlichen Instruktionen erzeugend. Der Bearbeiter analysiert diesen Code für Abhängigkeitsbeziehungen und Quellenvoraussetzungen. Es plant dann die Instruktionen gemäß jenen Einschränkungen. In diesem Prozess können unabhängige Instruktionen in der Parallele auf dem Plan stehen. Weil VLIWs normalerweise Instruktionen vertreten, die in der Parallele mit einem längeren Instruktionswort vorgesehen sind, das die individuellen Instruktionen vereinigt, läuft das auf auf einen viel längeren opcode (so der Begriff "sehr langer") hinaus, um anzugeben, was auf einem gegebenen Zyklus durchführt.

Beispiele von zeitgenössischen VLIW Zentraleinheiten schließen die Mediaverarbeiter von TriMedia durch NXP (früher Philips Semiconductors), der SHARC DSP durch Analoggeräte, der C6000 DSP Familie durch Instrumente von Texas und der STMicroelectronics ST200 Familie ein, die auf der Architektur von Lx (auch gestützt ist, entworfen von Josh Fisher). Diese zeitgenössischen VLIW Zentraleinheiten sind in erster Linie als eingebettete Mediaverarbeiter für den Verbraucher elektronische Geräte erfolgreich.

VLIW Eigenschaften sind auch zu konfigurierbaren Verarbeiter-Kernen für Designs von SoC hinzugefügt worden. Zum Beispiel vereinigt sich der Xtensa von Tensilica LX2 Verarbeiter eine Technologie hat FLIX synchronisiert (Flexible Länge-Instruktionserweiterungen), der Mehroperationsinstruktionen erlaubt. Der Xtensa C/C ++ kann sich Bearbeiter 32- oder FLIX 64-Bit-Instruktionen mit der Verarbeiter-einzelnen Operation von Xtensa RISC Instruktionen frei vermischen, die 16 oder 24 Bit breit sind. Indem sie vielfache Operationen in einen breiten 32- oder 64-Bit-Instruktionswort eingepackt wird und diesen Mehroperationsinstruktionen erlaubt wird, mit kürzer RISC Instruktionen vermischt zu werden, erlaubt FLIX Technologie Entwerfern von SoC, die Leistungsvorteile von VLIW zu begreifen, während sie den Code bloat früher VLIW Architekturen beseitigt.

Die Infineon Carmel DSP ist ein anderer VLIW für SoC beabsichtigter Verarbeiter-Kern; es verwendet eine ähnliche Codedichte-Verbesserungstechnik genannt "konfigurierbares langes Instruktionswort" (CLIW).

Draußen eingebettete in einer Prozession gehende Märkte, der Itanium von Intel IA-64 EPOS erscheint als das einzige Beispiel einer weit verwendeten VLIW Zentraleinheitsarchitektur. Jedoch ist EPISCHE Architektur manchmal von einer reinen VLIW Architektur bemerkenswert, da EPOS volle Instruktionsaussage verteidigt, Register-Dateien und ein sehr langes Instruktionswort rotieren lassend, das nichtparallele Instruktionsgruppen verschlüsseln kann. VLIWs hat auch bedeutendes Verbraucherdurchdringen auf dem GPU Markt gewonnen, obwohl sich sowohl Nvidia als auch AMD zu RISC Architekturen seitdem bewegt haben, um Leistung Nichtgrafikarbeitspensen zu verbessern.

Rückwärts gerichtete Vereinbarkeit

Als Silikontechnologie breitere Durchführungen (mit mehr Ausführungseinheiten) berücksichtigt hat, um gebaut zu werden, würden die kompilierten Programme für die frühere Generation auf den breiteren Durchführungen nicht laufen, weil die Verschlüsselung der binären Instruktionen von der Zahl von Ausführungseinheiten der Maschine abgehangen hat.

Transmeta richtet dieses Problem durch das Umfassen einer binären-zu-binär Softwarebearbeiter-Schicht (genannter Code Morphing) in ihrer Durchführung von Crusoe der x86 Architektur. Grundsätzlich wird dieser Mechanismus angekündigt, um x86 opcodes an der Durchlaufzeit in den inneren Maschinencode der Zentraleinheit wiederzukompilieren, zu optimieren, und zu übersetzen. So ist der Span von Transmeta innerlich ein VLIW Verarbeiter, effektiv decoupled vom x86 CISC Befehlssatz, den es durchführt.

Die Itanium Architektur von Intel (unter anderen) hat das Problem der rückwärts gerichteten Vereinbarkeit mit einem allgemeineren Mechanismus behoben. Innerhalb von jeder der vielfachen-opcode Instruktionen wird wenig Feld zugeteilt, um Abhängigkeit von der vorherigen VLIW Instruktion innerhalb des Programm-Instruktionsstroms anzuzeigen. Diese Bit werden während der Übersetzung gesetzt, so die Hardware davon erleichternd, diese Abhängigkeitsinformation zu berechnen. Die Verschlüsselung dieser Abhängigkeitsinformation in den Instruktionsstrom erlaubt breiteren Durchführungen, vielfache nichtabhängige VLIW Instruktionen in der Parallele pro Zyklus auszugeben, während schmalere Durchführungen eine kleinere Zahl von VLIW Instruktionen pro Zyklus ausgeben würden.

Ein anderer wahrgenommener Mangel an VLIW Architekturen ist der Code bloat, der vorkommt, haben wenn nicht alle Ausführungseinheiten nützliche Arbeit, um so NOPs zu tun und durchführen zu müssen. Das kommt vor, wenn es Abhängigkeiten im Code gibt und den funktionellen Rohrleitungen erlaubt werden muss abzufließen, bevor nachfolgende Operationen weitergehen können.

Seitdem die Zahl von Transistoren auf einem Span gewachsen ist, haben sich die wahrgenommenen Nachteile des VLIW in der Wichtigkeit vermindert. Die VLIW Architektur wächst in der Beliebtheit besonders auf dem eingebetteten Markt, wo es möglich ist, einen Verarbeiter für eine Anwendung in einem eingebetteten System auf einem Span kundengerecht anzufertigen. Eingebettete VLIW Produkte sind von mehreren Verkäufern, einschließlich des FR-V von Fujitsu, des BSP15/16 von Pixelworks, des ST231 von STMicroelectronics, TriMedia von NXP, der CEVA-X DSP von CEVA, dem Jazz-DSP von Systemen von Improv und Silikonbienenstock verfügbar. Die Instrumente von Texas TMS320 DSP Linie haben sich in seiner C6xxx Familie entwickelt, um mehr einem VLIW, im Gegensatz zu früher C5xxx Familie ähnlich zu sein.

Siehe auch

  • Passen Sie ausführlich Instruktionscomputerwissenschaft an (EPIC)
  • Transport hat Architektur ausgelöst (TTA)
  • Verarbeiter von Elbrus

Links


Dachboden (Begriffserklärung) / Bauhin
Impressum & Datenschutz