DE69833008T2 - Prozessor mit instruktionskodierung mittels eines schablonenfeldes - Google Patents
Prozessor mit instruktionskodierung mittels eines schablonenfeldes Download PDFInfo
- Publication number
- DE69833008T2 DE69833008T2 DE69833008T DE69833008T DE69833008T2 DE 69833008 T2 DE69833008 T2 DE 69833008T2 DE 69833008 T DE69833008 T DE 69833008T DE 69833008 T DE69833008 T DE 69833008T DE 69833008 T2 DE69833008 T2 DE 69833008T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- instruction
- command
- bundle
- bundles
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
- Gebiet der Erfindung
- Die vorliegende Erfindung betrifft allgemein das Gebiet der Prozessorarchitektur. Insbesondere betrifft sie ein Befehlscodierverfahren und eine Einrichtung zum Erhöhen der Prozessoroperationseffizienz.
- Hintergrund der Erfindung
- Auf dem Gebiet der Hochgeschwindigkeitscomputerprozessoren hat es verschiedene Lösungen für das Problem gegeben, wie Befehle am besten zu codieren sind. Schon frühzeitig verwendeten von der Intel® Corporation hergestellte Prozessoren eine Codierung variabler Länge (variable length and encoding), bei der unterschiedliche Befehle mit unterschiedlichen Bitlängen codiert wurden. Während diese Methode breite Akzeptanz in der Computerindustrie fand, wurde das Intel Architektur(iA)-Codierverfahren von Computern mit reduziertem Befehlssatz (RISC) verbessert.
- In einem RISC-Computer werden alle Felder gleich codiert, wobei jeder Befehl eine feste Länge hat, z. B. 32 Bits. Die feste 32-Bit-Länge der Befehlsfelder sorgt für genügend Bitpositionen oder „Platz" zum Codieren von Befehlen, die drei Operanden verwenden und wobei jeder Operand eine 5-Bit-Registerkennung bzw. Registeridentifizierung enthält. Daher bietet die RISC-Methode genügend Platz zum Codieren von Op-Code-Bits, Immediate- bzw. Direkt-Werten, Offsets usw.
- In jüngster Zeit hat sich in der Computerindustrie ein Bedarf an Parallelverarbeitungsmaschinen entwickelt, die die Möglichkeit haben, eine große Anzahl von Befehlen in einem einzigen Maschinenzyklus zu verarbeiten. Diese Maschinen, die üblicherweise als Computerprozessoren mit sehr langen Befehlswörtern (very long instruction word – VLIW) oder Breitwort(wide word)-Computerprozessoren bezeichnet werden, können mehrere Befehle gleichzeitig verarbeiten. Beispielsweise ist in dem US-Patent Nr. 4 833 599 ein VLIW-Multiprozessor be schrieben, der in jedem Taktzyklus 1024 Befehlsbits bearbeiten kann. Ein Problem, das bei VLIW- oder Breitwort-Maschinen auftritt, ist die Frage, wie Befehle zu codieren sind, die große Registerdateien, d. h. 128 Register adressieren. Eine von Hewlett-Packard®, Co. in deren Original-Breitwort-Designs eingeführte Lösung bestand darin, Befehle in einem einzelnen 128-Bit-Eintrag zu gruppieren, welcher drei 42-Bit-Befehle enthielt (wobei zwei Bits übrig bleiben). Jeder der drei Befehle des 128-Bit-Eintrags war dadurch beschränkt, daß er von einem bestimmten Typ sein mußte. Das heißt, der erste Befehl war darauf beschränkt, daß er ein Speichertypbefehl sein mußte, der zweite Befehl mußte vom Integertyp sein und der dritte Befehl war darauf beschränkt, vom Gleitkommabefehlstyp zu sein.
- Ein grundlegendes Problem von diesem festen 128-Bit-Breitwortformat ist, daß es den Code erweitert und zur Ineffizienz beim Packen der Befehlsbytes führt. Beispielsweise kann ein LADE-Befehl nur ein oder zwei Bytes lang sein, trotzdem würden im Breitwort-Format gemäß dem Stand der Technik zwangsläufig 42 Bits vorgesehen. Die Ineffizienz ist noch größer in Befehlssequenzen, bei denen nur ein oder zwei Befehle in jedem der aufeinander folgenden 128-Bit-Befehlseinträge verwendet werden.
- Mit Superskalarprozessoren vertraute Personen werden ferner erkennen, daß RISC-Maschinen auch Schwierigkeiten haben, wenn sie versuchen, eine große Anzahl von Befehlen gleichzeitig zu verarbeiten. Beispielsweise benötigt ein RISC-Prozessor, der konzipiert ist, um viele Befehle parallel auszuführen, eine große Anzahl von Mulitplexern und eine zugehörige Verdrahtung, um die verschiedenen Befehle zu den entsprechenden Funktionseinheiten weiterzuleiten. Dies setzt der Anzahl von Befehlen, die gleichzeitig verarbeiten werden können, praktische Grenzen.
- Daher wird ein Prozessor benötigt, der die Verschwendung und Ineffizienz verringert, die mit früheren Codierverfahren und -einrichtungen verbunden sind.
- In der europäischen Patentanmeldung Nr. EP-A2-0652510 (Intergraph Corp) mit dem Titel „Software scheduled superscaler computer architecture" ist ein Rechensystem beschrieben, in dem Gruppen aus einzelnen Befehlen von Verarbeitungspipelines parallel ausgeführt werden können, und Befehle, die von den verschiedenen Pipelines parallel auszuführen sind, an die Pipelines gleichzeitig geliefert werden.
- Die Aufgabe der vorliegenden Erfindung besteht darin, einen Prozessor zur Verfügung zu stellen, der eine Mehrzahl von sequentiellen Befehlen mit einer hocheffizienten Codierung der Befehle gleichzeitig ausführen kann.
- ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
- Es wird ein Prozessor beschrieben, der ein Template-Feld zum Codieren eines Satzes von besonders nützlichen Befehlssequenzen in einem Langbefehlswortformat verwendet, wie es in den beigefügten Ansprüchen angegeben ist. Bei einem Ausführungsbeispiel weist der Prozessor eine Registerdatei mit 128 Registern auf. Der Befehlssatz des Prozessors enthält Befehle, die die 128 Register adressieren, wobei jeder Befehl von einem von einer Mehrzahl von Befehlstypen ist. Die Ausführungseinheiten des Prozessors sind in ähnlicher Weise in verschiedene Typen eingeteilt, wobei jeder Befehlstyp auf einem oder mehreren Typen von Ausführungseinheiten ausgeführt werden kann.
- Befehle werden in 128 Bit große und ausgerichtete Container eingruppiert, die Bündel bzw. Bundles genannt werden. Jedes Bündel enthält einen ersten, zweiten und dritten Befehls-Slot und ein Template-Feld, das das Mapping bzw. die Zuordnung der Befehls-Slots zu den Ausführungseinheitstypen spezifiziert. Dieses verbesserte Befehlscodierschema ermöglicht eine größere Flexibilität und eine größere Effizienz im Vergleich zu bekannten Methoden.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die vorliegende Erfindung wird anhand der folgenden detaillierten Beschreibung und der zugehörigen Zeichnungen besser verstanden werden, die jedoch nicht zur Beschränkung der Erfindung auf die dargestellten speziellen Ausführungsbei spiele dienen sollen, sondern statt dessen lediglich der Erläuterung und dem Verständnis dienen.
-
1 zeigt ein Architekturregistermodell gemäß einem Ausführungsbeispiel des erfindungsgemäßen Prozessors. -
2 zeigt die Beziehung zwischen den Befehlstypen und den Ausführungseinheitstypen für ein Ausführungsbeispiel der vorliegenden Erfindung. -
3 zeigt ein Diagramm, das ein Bündelformat zur Befehlscodierung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung zeigt. -
4 zeigt ein Template-Feld, das ein Befehls-Slot-Mapping für ein Ausführungsbeispiel der vorliegenden Erfindung codiert. - DETAILLIERTE BESCHREIBUNG
- Die vorliegende Erfindung betrifft einen Prozessor mit einer Befehlscodierung, die ein Template-Feld verwendet. In der vorliegenden Beschreibung sind zahlreiche spezielle Details angegeben, beispielsweise Registerdateimodelle, Bitlängen, spezielle Codierungen usw., um ein besseres Verständnis der vorliegenden Erfindung zu ermöglichen. Praktikern mit Durchschnittsfähigkeiten im Bereich der Datenverarbeitung werden verstehen, daß die Erfindung ohne diese speziellen Details ausgeführt werden kann. In anderen Fällen sind bekannte Signale, Komponenten und Schaltungen nicht im Detail beschrieben, um die Erfindung nicht zu verdecken.
-
1 zeigt das bei einem Ausführungsbeispiel des erfindungsgemäßen Prozessors verwendete Architekturregistermodel. Personen mit durchschnittlichen Fähigkeiten auf dem Gebiet des Prozessordesigns wissen, daß der Architekturzustand eines Prozessors aus dem Inhalt der Register und des Speichers des Prozessors besteht. Die Ergebnisse der Befehlsausführung werden gemäß einer Menge von in dem Prozessor enthaltenen Regeln sichtbar, die die Ausführungsfolgesteuerung leiten. Wie dargestellt ist, enthält das Architekturregistermodell10 eine Mehrzweckregisterdatei12 , welche eine zentrale Ressource für alle Integer- und Multimedia-Berechnungen darstellt. Die all gemeinen Register sind ein Satz von 128 (64-Bit-)Registern, die gr0 bis gr127 numeriert sind und allen Programmen und allen privilegierten Ebenen zur Verfügung stehen. - Das Anwendungsregistermodell
10 enthält auch einen Gleitkommaregistersatz14 , der für alle Gleit-Berechnungen verwendet wird. Die Gleitkommaregister sind fr0 bis fr127 numeriert und enthalten bei einer Ausführungsform des erfindungsgemäßen Prozessors in ähnlicher Weise einen Satz von 128 (82-Bit-)Registern. In1 sind ebenfalls Prädikatregister15 gezeigt, die pro bis pr63 numeriert sind. Die Prädikatregister15 bestehen aus zur Vorhersage und zur Verzweigung verwendeten 1-Bit-Registern. Sie werden zum Halten der Ergebnisse von Vergleichsbefehlen verwendet und werden üblicherweise für die bedingte Ausführung von Befehlen verwendet. - Die Branch-(bzw. Verzweigungs-)Registerdatei
17 wird zum Führen von Verzweigungsinformationen verwendet. Beispielsweise sind die Verzweigungsregister br0 bis br7 64-Bit-Register, die zum Spezifizieren der Verzweigungszieladressen für indirekte Verzweigungen verwendet werden können. - In
1 ist ferner ein Befehlszeiger18 dargestellt, der die Adresse des „Bündels" führt, welches den aktuell ausgeführten Befehl enthält. Wie in Kürze detailliert beschrieben wird, bezeichnet der Begriff „Bündel" drei Befehle und ein Template-Feld, die zusammen in ein 128 Bit großes Feld gruppiert sind. - Schließlich enthält das Registermodell
10 ferner eine Anwendungsregisterdatei19 , die Spezialdatenregister und Steuerregister für für Anwendungen sichtbare Prozessorfunktionen enthält. Üblicherweise wird auf diese Register von Anwendungssoftware zugegriffen. Es sollte klar sein, daß das in1 dargestellte Registermodell andere Registertypen enthalten kann, die vielfältige Prozessormerkmale implementieren. Die Liste der in dem erfindungsgemäßen Prozessor verfügbaren Register wird nicht als wesentlich für ein Verständnis der hier beschriebenen neuen Konzepte betrachtet. - Es wird nun auf
2 Bezug genommen, in der eine Tabelle20 dargestellt ist, die die Befehlstypen und die Aus führungseinheitstypen zur Ausführung von Befehlen für ein Ausführungsbeispiel der vorliegenden Erfindung zeigt. Jeder Befehl ist einem von sechs verschiedenen Typen zugeordnet. Die sechs verschiedenen Befehlstypen umfassen Integer-Arithmetik-Logik-Einheit(ALU)-Befehle, Nicht-ALU-Integer-Befehle, Speicherbefehle, Gleitkommabefehle, Branch-Befehle und Long-Immediate-Befehle bzw. lange Direktbefehle. Der Befehlseinheitstyp, auf dem jeder dieser verschiedenen Befehlstypen ausgeführt werden kann, ist in der rechtesten Spalte der Tabelle20 gezeigt. Diese verschiedenen Ausführungseinheitstypen umfassen die Integer-Ausführungseinheit (I-Einheit), die Speicherausführungseinheit (M-Einheit), die Gleitkommaausführungseinheit (F-Einheit) und die Branch-Ausführungseinheit (B-Einheit). -
3 zeigt, wie Befehle in dem erfindungsgemäßen Prozessor codiert werden.3 zeigt ein 128-Bit ausgerichtete 16 Bytes)-Bündel30 , das drei 41-Bit-Befehls-Slots, ein 4-Bit-Template-Feld und ein Stop-Bit (S-Bit) enthält. Das in3 gezeigte Format des Bündels30 zeigt, daß das Stop-Bit die Bitposition 0 einnimmt, das Template-Feld die Bitpositionen 1–4 einnimmt und die Befehls-Slots 0, 1 und 2 die Bitpositionen 5–45, 46–86 bzw. 87–127 einnehmen. - Gemäß dem in
3 gezeigten Befehlsformat haben alle Befehle in dem Befehlssatz des Prozessors eine Länge von 41 Bits. Das 4-Bit-Template-Feld erlaubt das Codieren vielfältiger Befehlssequenzen mit verschiedenen Befehlstypen. Mit anderen Worten das Template-Feld spezifiziert das Mapping bzw. die Zuordnung der Befehls-Slots zu den Ausführungseinheitstypen. Das Template-Feld spezifiziert ferner Befehlsgruppengrenzen in einem Bündel. Eine Befehlsgruppe ist ein Satz von statisch zusammenhängenden Befehlen, die gleichzeitig ausgeführt werden können. Beispielsweise hat eine Befehlsgruppe keine Readafter-Write(Lesen-nach-Schreiben bzw. Prüflesen)- oder Writeafter-Write (Schreiben- nach -Schreiben)-Registerabhängigkeiten untereinander. Eine Befehlsgruppe enthält wenigstens einen Befehl und es gibt keine architektonischen Beschränkungen für die maximale Anzahl von Befehlen. Praktiker auf dem Gebiet werden daher erkennen, daß Befehlsgruppengrenzen keine feste Beziehung zu Bündelgrenzen haben; sie werden einfach statisch von dem Template-Feld und dem S-Bit angezeigt. - Das S-Bit spezifiziert, ob nach dem letzten Befehl (d. h. Slot 2) des aktuellen Bündels eine Befehlsgruppengrenze auftritt. Wenn beispielsweise in einer aktuellen Implementierung das S-Bit auf „0" gesetzt ist, verläuft die aktuelle Befehlsgruppe weiter bis in den ersten Befehl (d. h. Slot 0) des statischen nächsten sequentiellen Bündels. Das heißt, es gibt keine Befehlsgruppengrenze nach dem letzten Befehl in dem Bündel. Umgekehrt bedeutet das Setzen des S-Bits auf „1", daß eine Befehlsgruppengrenze nach dem letzten Befehl in dem Bündel auftritt.
- Es wird nun auf
4 Bezug genommen. Dort ist die Template-Feld-Codierung und die Befehls-Slot-Zuordnung für ein Ausführungsbeispiel des erfindungsgemäßen Prozessors dargestellt. Wie oben beschrieben spezifiziert das Template-Feld zwei Eigenschaften: Befehlsgruppengrenzen in einem Bündel und die Zuordnung der Befehls-Slots zu Ausführungseinheitstypen. Wichtig ist zu beachten, daß nicht alle Kombinationen dieser beiden Eigenschaften erlaubt sind. Die Kombinationen, die in dem aktuellen Ausführungsbeispiel definiert sind, sind in der Tabelle40 von4 dargestellt. Mit der Computertechnik vertraute Praktiker werden erkennen, daß die Tabelle40 eine Befehlscodierung für die üblichsten Befehlssequenzen bietet, die üblicherweise in modernen Computerprogrammen zu finden sind. - Die drei rechten Spalten der Tabelle
40 entsprechen den drei Befehls-Slots in einem Bündel. In jeder Spalte der drei rechten Spalten ist der Ausführungseinheitstyp aufgeführt, der von dem Befehls-Slot gesteuert wird. Beispielsweise spezifiziert Template 6, daß der Befehl im Slot 0 von der Speicherausführungseinheit ausgeführt wird, der Befehl im Slot 1 von der Gleitkommaausführungseinheit ausgeführt wird und der Befehl in Slot 2 von der Integer-Ausführungseinheit des Prozessors ausgeführt wird. - Man beachte, daß die Tabelle
40 die Doppellinien42 und43 enthält, die zwei Befehls-Slots trennen, die den Template 1 bzw. dem Template 5 zugeordnet sind. Die Doppellinie42 trennt Slot 1 und Slot 2 für das Template 1, wohingegen die Doppellinie43 Slot 0 und Slot 1 im Template 5 trennt. Diese Doppellinien zeigen an, daß an diesem Punkt eine Befehlsgruppengrenze vorliegt. Grundsätzlich funktionieren die Doppellinien als Stop-Bit zwischen zwei benachbarten Befehlen. Das bedeutet, daß beispielsweise in dem Fall von Template 5 der Slot-0-Befehl von dem Slot-1-Befehl abhängen darf. Indem das Template-Feld so codiert wird, daß es Stoppunkte zwischen zwei Befehlen in einem Bündel definiert, kann der Compiler der Hardware anzeigen, wo in dem Code Abhängigkeiten vorliegen. Fachleute auf dem Gebiet der Computerarchitektur werden erkennen, daß die Möglichkeit zur Spezifikation von Befehlsgruppengrenzen in einem Bündel (über die Template-Felder 1 und 5) – zusätzlich zur Definition von Befehlsgruppengrenzen zwischen Bündeln (über das S-Bit) – eine extrem wertvolle Prozessorfunktion darstellt. - Innerhalb eines Bündels verläuft die Ausführungsreihenfolge von Slot 0 zu Slot 2. Wenn das S-Bit 0 ist, erstreckt sich die den letzten Befehl (Slot 2) des aktuellen Bündels enthaltende Befehlsgruppe bis in den ersten Befehl (Slot 0) des statisch nächsten sequentiellen Bündels. Auf der anderen Seite liegt eine Befehlsgruppengrenze nach dem letzten Befehl des aktuellen Bündels vor, wenn das S-Bit 1 ist. Es ist klar, daß die Verwendung des Stop-Bits einen großen Vorteil bei der Ausführung eines Codes bietet, der hochgradig sequentiell ist. Beispielsweise kann ein sequentieller Code, der eine LADE-Operation gefolgt von einer ADDIERE-Operation gefolgt von einer SPEICHERE-Operation enthält, einfach durch die Verwendung des S-Bits nach den drei Operationen sequentialisiert werden. In der Vergangenheit hätte ein vollständiger 128-Bit-Eintrag für jeden Befehl in der Sequenz verwendet werden müssen, obwohl die tatsächliche Codierung des Befehls ggf. nur ein oder zwei Bytes einnimmt.
- Es sollte ferner klar sein, daß ein erfindungsgemäßes Programm aus einer Sequenz von Befehlen besteht, die in Bündeln gepackt sind und in Befehlsgruppen organisiert sind, die sta tisch von S-Bits begrenzt werden, wobei Templates S-Bits in einem Bündel spezifizieren. Die Befehlsgruppen und die Befehle in diesen sind wie folgt geordnet. Bündel sind von der niedrigsten zur höchsten Speicheradresse geordnet. Befehle in Bündeln mit niedrigeren Speicheradressen gelten als Befehlen in Bündeln mit höheren Speicheradressen vorangehend.
- Die Byte-Reihenfolge der Bündel im Speicher ist Little-Endian. Das bedeutet, daß das Template-Feld und das S-Bit im Byte 0 des Bündels enthalten sind. In einem Bündel sind Befehle und Befehlsgruppen vom Befehls-Slot 0 zum Befehls-Slot 2 geordnet wie in
3 dargestellt. - Zusammen mit dem erfindungsgemäßen Prozessor kann ein gewöhnlicher Compiler verwendet werden. Selbstverständlich sollte er jedoch in der Lage sein, das oben beschriebene Befehlscodierschema zu nutzen. Allgemein gesagt sollte der Compiler so konzipiert sein, daß er die Template-Felder nutzt, um einen so kompakten Code wie möglich zu liefern.
- Praktiker auf dem Fachgebiet werden erkennen, daß die in Tabelle
40 von4 auftauchenden ungenutzten Template-Werte in dem dargestellten Ausführungsbeispiel reserviert sind. Diese ungenutzten Template-Werte erscheinen als leere Zeilen, die dem Template 3, A, D und F zugeordnet sind. Die leeren Templates sind zur Verwendung bei zukünftigen Erweiterungen der Prozessorarchitektur verfügbar. Die Angabe eines dieser ungenutzten Template-Werte in dem Prozessor verursacht einen Illegale-Operation-Fehler. - Man beachte ferner, daß für das Template 2 die Bezeichnung L-Einheit in der Spalte von Slot 1 einen Platzhalter für einen Long-Immediate-Befehlstyp (bzw. langen Direktbefehlstyp) darstellt. Außerdem ist die I-Einheit-Bezeichnung in der Spalte von Slot 2 des Template 2 dadurch beschränkt, daß nur Movl(Bewege-Langwort)-, Break(Unterbrechungs)- und Nop(keine-Operation)-Operationen in diesem speziellen Slot für ein Ausführungsbeispiel der vorliegenden Erfindung codiert werden können. Das Codieren anderer Befehle in diesen Slot verursacht einen Illegale-Operation-Fehler. Eine weitere Beschränkung besteht darin, daß das Codieren eines Movl-Befehls in einem an deren I-Einheits-Slot als demjenigen in Template 2 bei dem beschriebenen Ausführungsbeispiel einen Illegale-Operation-Fehler verursacht.
Claims (31)
- Ein Prozessor aufweisend: eine Registerdatei mit einer Mehrzahl von Registern; einen Befehlssatz mit Befehlen, welche die Register adressieren, wobei jeder Befehl von einem von einer Mehrzahl von Befehlstypen ist; eine Mehrzahl von Ausführungseinheiten, wobei jede Ausführungseinheit von einem von einer Mehrzahl von Typen ist, wobei jeder Befehlstyp von einer oder mehreren Ausführungseinheitstypen ausgeführt wird; und dadurch gekennzeichnet, daß die Befehle in Bündeln codiert sind, wobei jedes Bündel eine Mehrzahl von Befehlen und ein einziges Template-Feld aufweist, die zusammen in einem N-Bit-Feld gruppiert sind, wobei die Befehle in Befehls-Slots des N-Bit-Feldes angeordnet sind, das einzige Template-Feld ein Mapping der Befehls-Slots zu den Ausführungseinheitstypen spezifiziert, wobei das Mapping spezifiziert, daß jeder der Befehle, die in den Befehls-Slots gebündelt und angeordnet sind, von einer entsprechenden Ausführungseinheit ausgeführt wird, die durch den entsprechenden Ausführungseinheitstyp angezeigt wird.
- Der Prozessor nach Anspruch 1, wobei das Template-Feld ferner Befehlsgruppengrenzen in dem Bündel spezifiziert, wobei eine Befehlsgruppe einen Satz von statisch zusammenhängenden Befehlen umfaßt, die gleichzeitig ausgeführt werden.
- Der Prozessor nach Anspruch 2, wobei die Befehlstypen Integer-Arithmetik-Logik-Einheit-, Speicher-, Gleitkomma- und Branch-Befehle umfassen.
- Der Prozessor nach Anspruch 3, wobei die Befehlstypen ferner Nicht-Arithmetik-Logik-Einheit-Integer- und Long-Immediate-Befehle umfassen.
- Der Prozessor nach Anspruch 4, wobei die Ausführungseinheitstypen Integer-, Speicher-, Gleitkomma- und Branch-Ausführungs-Einheiten umfassen.
- Der Prozessor nach Anspruch 5, wobei das Template-Feld ein 4-Bit-Feld ist.
- Der Prozessor nach einem der Ansprüche 1, 2, 3, 4, 5 oder 6, wobei die Bündel einen ersten, zweiten und dritten Befehls-Slot aufweisen, wobei jedes Bündel 128 Bits lang ist.
- Der Prozessor nach Anspruch 7, wobei der erste, der zweite und der dritte Befehls-Slot jeweils 41 Bits lang sind.
- Der Prozessor nach Anspruch 7, wobei das Bündel ferner ein Stop-Bit umfaßt, das eine Befehlsgruppengrenze in dem Bündel spezifiziert.
- Der Prozessor nach Anspruch 9, wobei die Befehlsgruppengrenze nach einem letzten Befehl eines aktuellen Bündels auftritt, wenn das Stop-Bit in einem ersten Zustand ist.
- Der Prozessor nach Anspruch 10, wobei eine Befehlsgruppe, welche den letzten Befehl des aktuellen Bündels umfaßt, sich in den ersten Befehls-Slot erstreckt, der einem statisch nächsten sequentiellen Bündel zugeordnet ist, wenn das Stop-Bit in einem zweiten Zustand ist.
- Der Prozessor nach Anspruch 11, wobei der letzte Befehl des aktuellen Bündels der dritte Befehls-Slot ist.
- Der Prozessor nach Anspruch 9, ferner aufweisend einen Speicher, der die Bündel speichert, wobei die Byte-Reihenfolge der Bündel in dem Speicher ein Little-Endian-Format aufweist, wobei das Template-Feld und das Stop-Bit in einem ersten Byte des Bündels enthalten sind.
- Der Prozessor nach Anspruch 13, wobei die Bündel in dem Speicher von einer niedrigsten zu einer höchsten Speicheradresse geordnet sind.
- Der Prozessor nach Anspruch 14, wobei ein Befehl in den Bündeln mit der niedrigsten Speicheradresse einem Befehl in den Bündeln mit der höchsten Speicheradresse vorausgeht.
- Der Prozessor nach Anspruch 1, wobei die Mehrzahl von Registern 128 Register aufweist.
- Der Prozessor nach Anspruch 1, wobei zumindest eine Codierung des Template-Felds ferner Befehlsgruppengrenzen in einem Bündel spezifiziert, wobei eine Befehlsgruppe einen Satz von statisch zusammenhängenden Befehlen umfaßt, die gleichzeitig ausgeführt werden.
- Der Prozessor nach Anspruch 17, wobei die Bündel einen ersten, zweiten und dritten Befehls-Slot aufweisen, wobei jedes Bündel 128 Bit lang ist.
- Der Prozessor nach Anspruch 17, wobei die Befehlstypen Integer-Arithmetik-Logik-Einheit-, Speicher-, Gleitkomma- und Branch-Befehle umfassen.
- Der Prozessor nach Anspruch 19, wobei die Befehltypen ferner Nicht-Arithmetik-Logik-Einheit-Integer- und Long-Immediate-Befehle umfassen.
- Der Prozessor nach Anspruch 20, wobei die Ausführungseinheitstypen Integer-, Speicher-, Gleitkomma- und Branch-Ausführungseinheiten umfassen.
- Der Prozessor nach Anspruch 17, wobei jedes Bündel ferner ein Stop-Bit umfaßt, das eine Befehlsgruppengrenze in dem Bündel spezifiziert.
- Der Prozessor nach Anspruch 22, wobei die Befehlsgruppengrenze nach einem letzten Befehl eines aktuellen Bündels auftritt, wenn das Stop-Bit in einem ersten Zustand ist.
- Der Prozessor nach Anspruch 23, wobei eine Befehlsgruppe, welche den letzten Befehl des aktuellen Bündels umfaßt, sich in den ersten Befehls-Slot erstreckt, der einem statisch zusammenhängenden sequentiellen Bündel zugeordnet ist, wenn das Stop-Bit in einem zweiten Zustand ist.
- Der Prozessor nach Anspruch 24, wobei der letzte Befehl des aktuellen Bündels der dritte Befehls-Slot ist.
- Der Prozessor nach Anspruch 22, ferner aufweisend einen Speicher, der die Bündel speichert, wobei die Byte-Reihenfolge der Bündel in dem Speicher ein Little-Endian-Format aufweist, wobei das Template-Feld und das Stop-Bit in einem ersten Byte des Bündels enthalten sind.
- Der Prozessor nach Anspruch 26, wobei die Bündel in dem Speicher von einer niedrigsten zu einer höchsten Speicheradresse geordnet sind.
- Der Prozessor nach Anspruch 27, wobei ein Befehl in den Bündeln mit der niedrigsten Speicheradresse einem Befehl in den Bündeln mit der höchsten Speicheradresse vorausgeht.
- Der Prozessor nach Anspruch 17, wobei die Mehrzahl von Registern 128 Register aufweist.
- Der Prozessor nach Anspruch 1, wobei zumindest eine Codierung des Template-Felds ferner Befehlsgruppengrenzen in einem Bündel spezifiziert, wobei eine Befehlsgruppe einen Satz von statisch zusammenhängenden Befehlen umfaßt, die gleichzeitig ausgeführt werden, wobei das Stop-Bit eine Befehlsgruppengrenze in dem Befehl spezifiziert.
- Der Prozessor nach Anspruch 1, wobei eine ungenutzte Codierung des Template-Felds für eine Verwendung bei einer zukünftigen Erweiterung des Prozessors verfügbar ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US949279 | 1992-09-22 | ||
US08/949,279 US5922065A (en) | 1997-10-13 | 1997-10-13 | Processor utilizing a template field for encoding instruction sequences in a wide-word format |
PCT/US1998/021388 WO1999019793A1 (en) | 1997-10-13 | 1998-10-08 | Processor utilizing template field instruction encoding |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69833008D1 DE69833008D1 (de) | 2006-02-02 |
DE69833008T2 true DE69833008T2 (de) | 2006-08-31 |
Family
ID=25488837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69833008T Expired - Lifetime DE69833008T2 (de) | 1997-10-13 | 1998-10-08 | Prozessor mit instruktionskodierung mittels eines schablonenfeldes |
Country Status (8)
Country | Link |
---|---|
US (1) | US5922065A (de) |
EP (1) | EP1023660B1 (de) |
CN (1) | CN100390729C (de) |
AU (1) | AU9796498A (de) |
DE (1) | DE69833008T2 (de) |
GB (1) | GB0009284D0 (de) |
HK (1) | HK1034333A1 (de) |
WO (1) | WO1999019793A1 (de) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360313B1 (en) | 1993-11-05 | 2002-03-19 | Intergraph Corporation | Instruction cache associative crossbar switch |
EP1369775A1 (de) * | 1993-11-05 | 2003-12-10 | Intergraph Hardware Technologies Company | Befehlscachespeicher mit assoziativem Kreuzschienenschalter |
JP3790607B2 (ja) * | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US6081884A (en) * | 1998-01-05 | 2000-06-27 | Advanced Micro Devices, Inc. | Embedding two different instruction sets within a single long instruction word using predecode bits |
JP3541669B2 (ja) * | 1998-03-30 | 2004-07-14 | 松下電器産業株式会社 | 演算処理装置 |
US7111231B1 (en) | 1999-02-24 | 2006-09-19 | Intellisync Corporation | System and methodology for dynamic application environment employing runtime execution templates |
US7039790B1 (en) * | 1999-11-15 | 2006-05-02 | Texas Instruments Incorporated | Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit |
US6618801B1 (en) * | 2000-02-02 | 2003-09-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information |
US6351796B1 (en) | 2000-02-22 | 2002-02-26 | Hewlett-Packard Company | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache |
US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
US7181595B1 (en) * | 2000-05-11 | 2007-02-20 | Mindspeed Technologies, Inc. | Method for decoding composite VLIW packets utilizing a tree structure |
US6687806B1 (en) * | 2000-06-15 | 2004-02-03 | Advanced Micro Devices, Inc. | Apparatus and method for generating 64 bit displacement and immediate values |
US6415376B1 (en) | 2000-06-16 | 2002-07-02 | Conexant Sytems, Inc. | Apparatus and method for issue grouping of instructions in a VLIW processor |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US6779106B1 (en) | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for an enhanced integer divide in an IA64 architecture |
US6799262B1 (en) * | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
US6912647B1 (en) * | 2000-09-28 | 2005-06-28 | International Business Machines Corportion | Apparatus and method for creating instruction bundles in an explicitly parallel architecture |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US7330830B1 (en) * | 2000-10-25 | 2008-02-12 | Thomson Financial Inc. | Distributed commerce system |
US7305360B1 (en) | 2000-10-25 | 2007-12-04 | Thomson Financial Inc. | Electronic sales system |
US7028164B2 (en) * | 2000-12-29 | 2006-04-11 | Stmicroelectronics, Inc. | Instruction fetch apparatus for wide issue processors and method of operation |
GB2374950B (en) * | 2001-04-23 | 2005-11-16 | Imagination Tech Ltd | Expanded functionality of processor operations within a fixed width instruction encoding |
JP4542722B2 (ja) * | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
US7062634B1 (en) * | 2002-01-29 | 2006-06-13 | Stmicroelectronics Limited | Processor and a method for handling and encoding no-operation instructions |
US6948053B2 (en) | 2002-02-25 | 2005-09-20 | International Business Machines Corporation | Efficiently calculating a branch target address |
US7577944B2 (en) * | 2002-03-18 | 2009-08-18 | Hewlett-Packard Development Company, L.P. | Unbundling, translation and rebundling of instruction bundles in an instruction stream |
EP1367484B1 (de) | 2002-05-31 | 2013-07-24 | STMicroelectronics Limited | Instruktionssteuerung |
US7203821B2 (en) * | 2003-01-08 | 2007-04-10 | Sun Microsystems, Inc. | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands |
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US9047094B2 (en) * | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
US8484441B2 (en) * | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
GB2414308B (en) * | 2004-05-17 | 2007-08-15 | Advanced Risc Mach Ltd | Program instruction compression |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
US20080162819A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Design structure for self prefetching l2 cache mechanism for data lines |
US7447879B2 (en) * | 2006-02-09 | 2008-11-04 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
US8812822B2 (en) * | 2006-02-09 | 2014-08-19 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
EP2523101B1 (de) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt |
US8756404B2 (en) * | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
US20080141252A1 (en) * | 2006-12-11 | 2008-06-12 | Luick David A | Cascaded Delayed Execution Pipeline |
US20080162894A1 (en) * | 2006-12-11 | 2008-07-03 | Luick David A | structure for a cascaded delayed execution pipeline |
US20080148020A1 (en) * | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
US7945763B2 (en) * | 2006-12-13 | 2011-05-17 | International Business Machines Corporation | Single shared instruction predecoder for supporting multiple processors |
US8001361B2 (en) * | 2006-12-13 | 2011-08-16 | International Business Machines Corporation | Structure for a single shared instruction predecoder for supporting multiple processors |
US20090198976A1 (en) * | 2008-02-06 | 2009-08-06 | Austel Vernon R | Method and structure for high-performance matrix multiplication in the presence of several architectural obstacles |
US20090210677A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline |
US8108654B2 (en) * | 2008-02-19 | 2012-01-31 | International Business Machines Corporation | System and method for a group priority issue schema for a cascaded pipeline |
US7870368B2 (en) * | 2008-02-19 | 2011-01-11 | International Business Machines Corporation | System and method for prioritizing branch instructions |
US7984270B2 (en) * | 2008-02-19 | 2011-07-19 | International Business Machines Corporation | System and method for prioritizing arithmetic instructions |
US7996654B2 (en) * | 2008-02-19 | 2011-08-09 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US20090210666A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US7865700B2 (en) * | 2008-02-19 | 2011-01-04 | International Business Machines Corporation | System and method for prioritizing store instructions |
US20090210672A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US7882335B2 (en) * | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
US7877579B2 (en) * | 2008-02-19 | 2011-01-25 | International Business Machines Corporation | System and method for prioritizing compare instructions |
US20090210669A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Prioritizing Floating-Point Instructions |
KR101645001B1 (ko) | 2009-02-18 | 2016-08-02 | 삼성전자주식회사 | Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 |
EP3156896B1 (de) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Mehrfach verzweigte einzelzyklusvorhersage mit einem latenten cache für frühe und entfernte verzweigungsvorhersage |
EP2689326B1 (de) | 2011-03-25 | 2022-11-16 | Intel Corporation | Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne |
KR101638225B1 (ko) | 2011-03-25 | 2016-07-08 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 |
CN103562866B (zh) | 2011-03-25 | 2018-03-30 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
EP2783280B1 (de) | 2011-11-22 | 2019-09-11 | Intel Corporation | Beschleunigter codeoptimierer für einen mehrmotor-mikroprozessor |
US9672042B2 (en) | 2012-05-29 | 2017-06-06 | Nxp Usa, Inc. | Processing system and method of instruction set encoding space utilization |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
EP2866138B1 (de) * | 2013-10-23 | 2019-08-07 | Teknologian tutkimuskeskus VTT Oy | Gleitkomma-unterstützende Pipeline für emulierte gemeinsam genutzte Speicherarchitekturen |
FR3021427B1 (fr) * | 2014-05-22 | 2016-06-24 | Kalray | Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
FR3056782B1 (fr) * | 2016-09-26 | 2019-12-13 | Airbus Operations | Generation de codes applicatifs a partir d'une specification formelle |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5057837A (en) * | 1987-04-20 | 1991-10-15 | Digital Equipment Corporation | Instruction storage method with a compressed format using a mask word |
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
DE69431998T2 (de) * | 1993-11-05 | 2004-08-05 | Intergraph Hardware Technologies Co., Las Vegas | Superskalare Rechnerarchitektur mit Softwarescheduling |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US5669001A (en) * | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
US5826054A (en) * | 1996-05-15 | 1998-10-20 | Philips Electronics North America Corporation | Compressed Instruction format for use in a VLIW processor |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
-
1997
- 1997-10-13 US US08/949,279 patent/US5922065A/en not_active Expired - Lifetime
-
1998
- 1998-10-08 DE DE69833008T patent/DE69833008T2/de not_active Expired - Lifetime
- 1998-10-08 AU AU97964/98A patent/AU9796498A/en not_active Abandoned
- 1998-10-08 EP EP98952211A patent/EP1023660B1/de not_active Expired - Lifetime
- 1998-10-08 CN CNB988114925A patent/CN100390729C/zh not_active Expired - Fee Related
- 1998-10-08 WO PCT/US1998/021388 patent/WO1999019793A1/en active IP Right Grant
-
2000
- 2000-04-17 GB GBGB0009284.1A patent/GB0009284D0/en not_active Ceased
-
2001
- 2001-07-10 HK HK01104751.0A patent/HK1034333A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN100390729C (zh) | 2008-05-28 |
GB0009284D0 (en) | 2000-05-31 |
HK1034333A1 (en) | 2001-10-19 |
EP1023660B1 (de) | 2005-12-28 |
AU9796498A (en) | 1999-05-03 |
EP1023660A4 (de) | 2001-08-01 |
US5922065A (en) | 1999-07-13 |
WO1999019793A1 (en) | 1999-04-22 |
CN1279783A (zh) | 2001-01-10 |
DE69833008D1 (de) | 2006-02-02 |
EP1023660A1 (de) | 2000-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE68929215T2 (de) | Datenprozessor | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE69801673T2 (de) | Co-prozessordatenzugangskontrolle | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE2903349C2 (de) | Prozessor und Verfahren zur Datenverarbeitung | |
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE69130379T2 (de) | Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE60032794T2 (de) | Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
CH650600A5 (de) | Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister. | |
DE4301417A1 (de) | ||
DE2430127A1 (de) | Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer | |
DE3689389T2 (de) | Datenverarbeitungsprozessor. | |
DE2318069A1 (de) | Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix | |
DE69901338T2 (de) | Mikroprozessor mit mehreren registersätzen, die den gleichen logischen raum besitzen | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |