DE69833008T2 - Prozessor mit instruktionskodierung mittels eines schablonenfeldes - Google Patents

Prozessor mit instruktionskodierung mittels eines schablonenfeldes Download PDF

Info

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
Application number
DE69833008T
Other languages
English (en)
Other versions
DE69833008D1 (de
Inventor
M. James HULL
Kent Fielden
Hans Mulder
Harshvardhan Sharangpani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idea Corp USA
Original Assignee
Idea Corp USA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25488837&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69833008(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Idea Corp USA filed Critical Idea Corp USA
Application granted granted Critical
Publication of DE69833008D1 publication Critical patent/DE69833008D1/de
Publication of DE69833008T2 publication Critical patent/DE69833008T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction 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 Architekturregistermodell 10 eine Mehrzweckregisterdatei 12, 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 Gleitkommaregistersatz 14, 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. In 1 sind ebenfalls Prädikatregister 15 gezeigt, die pro bis pr63 numeriert sind. Die Prädikatregister 15 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 Befehlszeiger 18 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 Anwendungsregisterdatei 19, 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 in 1 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 Tabelle 20 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 Tabelle 20 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ündel 30, das drei 41-Bit-Befehls-Slots, ein 4-Bit-Template-Feld und ein Stop-Bit (S-Bit) enthält. Das in 3 gezeigte Format des Bündels 30 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 Tabelle 40 von 4 dargestellt. Mit der Computertechnik vertraute Praktiker werden erkennen, daß die Tabelle 40 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 Doppellinien 42 und 43 enthält, die zwei Befehls-Slots trennen, die den Template 1 bzw. dem Template 5 zugeordnet sind. Die Doppellinie 42 trennt Slot 1 und Slot 2 für das Template 1, wohingegen die Doppellinie 43 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 von 4 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)

  1. 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.
  2. 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.
  3. Der Prozessor nach Anspruch 2, wobei die Befehlstypen Integer-Arithmetik-Logik-Einheit-, Speicher-, Gleitkomma- und Branch-Befehle umfassen.
  4. Der Prozessor nach Anspruch 3, wobei die Befehlstypen ferner Nicht-Arithmetik-Logik-Einheit-Integer- und Long-Immediate-Befehle umfassen.
  5. Der Prozessor nach Anspruch 4, wobei die Ausführungseinheitstypen Integer-, Speicher-, Gleitkomma- und Branch-Ausführungs-Einheiten umfassen.
  6. Der Prozessor nach Anspruch 5, wobei das Template-Feld ein 4-Bit-Feld ist.
  7. 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.
  8. Der Prozessor nach Anspruch 7, wobei der erste, der zweite und der dritte Befehls-Slot jeweils 41 Bits lang sind.
  9. Der Prozessor nach Anspruch 7, wobei das Bündel ferner ein Stop-Bit umfaßt, das eine Befehlsgruppengrenze in dem Bündel spezifiziert.
  10. 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.
  11. 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.
  12. Der Prozessor nach Anspruch 11, wobei der letzte Befehl des aktuellen Bündels der dritte Befehls-Slot ist.
  13. 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.
  14. Der Prozessor nach Anspruch 13, wobei die Bündel in dem Speicher von einer niedrigsten zu einer höchsten Speicheradresse geordnet sind.
  15. 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.
  16. Der Prozessor nach Anspruch 1, wobei die Mehrzahl von Registern 128 Register aufweist.
  17. 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.
  18. 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.
  19. Der Prozessor nach Anspruch 17, wobei die Befehlstypen Integer-Arithmetik-Logik-Einheit-, Speicher-, Gleitkomma- und Branch-Befehle umfassen.
  20. Der Prozessor nach Anspruch 19, wobei die Befehltypen ferner Nicht-Arithmetik-Logik-Einheit-Integer- und Long-Immediate-Befehle umfassen.
  21. Der Prozessor nach Anspruch 20, wobei die Ausführungseinheitstypen Integer-, Speicher-, Gleitkomma- und Branch-Ausführungseinheiten umfassen.
  22. Der Prozessor nach Anspruch 17, wobei jedes Bündel ferner ein Stop-Bit umfaßt, das eine Befehlsgruppengrenze in dem Bündel spezifiziert.
  23. 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.
  24. 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.
  25. Der Prozessor nach Anspruch 24, wobei der letzte Befehl des aktuellen Bündels der dritte Befehls-Slot ist.
  26. 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.
  27. Der Prozessor nach Anspruch 26, wobei die Bündel in dem Speicher von einer niedrigsten zu einer höchsten Speicheradresse geordnet sind.
  28. 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.
  29. Der Prozessor nach Anspruch 17, wobei die Mehrzahl von Registern 128 Register aufweist.
  30. 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.
  31. 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.
DE69833008T 1997-10-13 1998-10-08 Prozessor mit instruktionskodierung mittels eines schablonenfeldes Expired - Lifetime DE69833008T2 (de)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69424370T2 (de) * 1993-11-05 2001-02-15 Intergraph Corp Befehlscachespeicher mit Kreuzschienenschalter
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
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
US6799262B1 (en) * 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
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
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
US7305360B1 (en) 2000-10-25 2007-12-04 Thomson Financial Inc. Electronic sales system
US7330830B1 (en) * 2000-10-25 2008-02-12 Thomson Financial Inc. Distributed commerce 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
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
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
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
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
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN101627365B (zh) * 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US8756404B2 (en) * 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US20080162894A1 (en) * 2006-12-11 2008-07-03 Luick David A structure for a cascaded delayed execution pipeline
US20080141252A1 (en) * 2006-12-11 2008-06-12 Luick David 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
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
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
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
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
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
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare 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
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
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
KR101645001B1 (ko) * 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
EP2689327B1 (de) 2011-03-25 2021-07-28 Intel Corporation Ausführung von befehlsfolgen-codeblocks mittels durch partitionierbare engines realisierter virtueller kerne
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
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
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
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
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register 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
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
DE69422780T2 (de) * 1993-11-05 2000-08-17 Intergraph Corp 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

Also Published As

Publication number Publication date
US5922065A (en) 1999-07-13
HK1034333A1 (en) 2001-10-19
EP1023660A4 (de) 2001-08-01
AU9796498A (en) 1999-05-03
GB0009284D0 (en) 2000-05-31
EP1023660A1 (de) 2000-08-02
WO1999019793A1 (en) 1999-04-22
EP1023660B1 (de) 2005-12-28
CN1279783A (zh) 2001-01-10
DE69833008D1 (de) 2006-02-02
CN100390729C (zh) 2008-05-28

Similar Documents

Publication Publication Date Title
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE3685913T2 (de) Vektorenverarbeitung.
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE68928340T2 (de) Fliessband-Datenprozessor
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE3851746T2 (de) Sprungvorhersage.
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
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.
DE2555963A1 (de) Einrichtung zur funktionsmodifizierung
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE4301417A1 (de)
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE2430127A1 (de) Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer
DE2411963B2 (de) Datenverarbeitungsanlage
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE2517276A1 (de) Datenverarbeitungssystem
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix

Legal Events

Date Code Title Description
8364 No opposition during term of opposition