DE60132585T2 - Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor - Google Patents

Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor Download PDF

Info

Publication number
DE60132585T2
DE60132585T2 DE60132585T DE60132585T DE60132585T2 DE 60132585 T2 DE60132585 T2 DE 60132585T2 DE 60132585 T DE60132585 T DE 60132585T DE 60132585 T DE60132585 T DE 60132585T DE 60132585 T2 DE60132585 T2 DE 60132585T2
Authority
DE
Germany
Prior art keywords
vliw
command
packet
commands
issue
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
DE60132585T
Other languages
English (en)
Other versions
DE60132585D1 (de
Inventor
Moataz A. Irvine MOHAMED
Chien-Wei Li
John R. Villa Park SPENCE
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.)
Mindspeed Technologies LLC
Original Assignee
Mindspeed Technologies LLC
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
Application filed by Mindspeed Technologies LLC filed Critical Mindspeed Technologies LLC
Publication of DE60132585D1 publication Critical patent/DE60132585D1/de
Application granted granted Critical
Publication of DE60132585T2 publication Critical patent/DE60132585T2/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, 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

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein das Gebiet der Mikroprozessoren. Genauer betrifft die Erfindung das Gebiet der VLIW(Very Long Instruction Word)-Prozessoren.
  • VLIW(Very Long Instruction Word)-Prozessoren verwenden einen Ansatz zum Parallelismus, demgemäß mehrere Befehle in einem langen Befehlswort enthalten sind, das in jedem Taktzyklus aus dem Speicher geholt wird. Das aus dem Speicher geholte lange Befehlswort ist Teil eines Pakets, das in dieser Anmeldung als VLIW-Paket oder „Befehlspaket" bezeichnet wird.
  • Befehle in einem VLIW-Paket können zu verschiedenen „Befehlstypen" gehören. Beispielsweise kann ein bestimmtes VLIW-Paket Befehle des Typs Integer-ALU, wie „Shift and Add"- und „Compare"-Befehle; Befehle des Typs Non-Integer-ALU, wie „Shift L Variable"-, „Shift R Variable"-, „Move to BR"- und „Move from BR"-Befehle, enthalten. Andere Beispiele für Befehlstypen in einem typischen VLIW-Paket sind Speichertyp-Befehle, wie „Integer Load"-, „Integer Store"- und „Line Prefetch"-Befehle; Gleitkommatyp-Befehle, wie „Floating Point Compare"- und „Floating Point Clear Flags"-Befehle; und Verzweigungstyp-Befehle, wie „Indirect Branch"- und „Indirect Call"-Befehle.
  • Jeder der mehreren Befehle in einem VLIW-Paket wird in einem besonderen „Befehls-Slot" gestellt. Jeder Befehlstyp wird üblicherweise einer oder zwei spezifischen logischen Einheiten in einem VLIW-Datenweg zur Ausführung zugewiesen. Jede dieser logischen Einheiten wird in der vorliegenden Anmeldung als „Ausführungseinheit" bezeichnet.
  • Die einzelnen Befehle in einem VLIW-Paket werden in verschiedenen „Ausgabegruppen" angeordnet, und in dem VLIW-Paket können eine Reihe von Ausgabegruppen vorhanden sein. Herkömmlich enthält ein VLIW-Paket in der Regel eine Anzahl von Befehlen, die im gleichen Taktzyklus ausgeführt werden können. Befehle in einem VLIW-Paket, die im gleichen Taktzyklus ausgeführt werden können, bilden eine einzelne „Ausgabegruppe". Laut Definition hängen Befehle, die zur gleichen Ausgabegruppe gehören, nicht vom Ergebnis der Ausführung anderer Befehle in der gleichen Ausgabegruppe ab. Jedoch können Befehle in einer Ausgabegruppe vom Ergebnis der Ausführung von Befehlen in einer anderen Ausgabegruppe abhängen. Die „Länge" einer Ausgabegruppe bestimmt, wie viele Befehle in dieser Ausgabegruppe vorhanden sind Beispielsweise kann eine bestimmte Ausgabegruppe eine Länge von zwei Befehlen aufweisen.
  • Somit werden Befehle, die sich in der gleichen Ausgabegruppe befinden, gleichzeitig an ihre jeweiligen Ausführungseinheiten für die Ausführung im gleichen Taktzyklus weitergegeben (d. h. „ausgegeben"). Demgemäß kann die Ausführung aller Befehle in einem VLIW-Paket so viele Taktzyklen dauern wie Ausgabegruppen in diesem VLIW-Paket vorhanden sind. Mit Bezug auf 1 wird nun ein bekanntes Verfahren zur Identifizierung der Ausgabegruppen in einem VLIW-Paket, wie einem VLIW-Paket 100, erörtert. Wie in 1 dargestellt, werden acht einzelne Befehle im VLIW-Paket 100 in Befehls-Slots 102 bis 116 gestellt. Genauer wird ein Befehl 0 in einen Befehls-Slot 102 gestellt, ein Befehl 1 wird in einen Befehls-Slot 104 gestellt, ein Befehl 2 wird in einen Befehls-Slot 106 gestellt, ein Befehl 3 wird in einen Befehls-Slot 108 gestellt, ein Befehl 4 wird in einen Befehls-Slot 110 gestellt, ein Befehl 5 wird in einen Befehls-Slot 112 gestellt, ein Befehl 6 wird in einen Befehls-Slot 114 gestellt und ein Befehl 7 wird in einen Befehls-Slot 116 gestellt.
  • In diesem bekannten Verfahren zur Identifizierung der Ausgabegruppen im VLIW-Paket 100 wird ein für diesen Zweck vorgesehenes bzw. reserviertes Bit in jedem Befehls-Slot 102 bis 116 verwendet, um die verschiedenen Ausgabegruppen im VLIW-Paket zu identifizieren. In dem in 1 dargestellten Beispiel ist das für diesen Zweck verwendete reservierte Bit durch eine gestrichelte Linie isoliert. Beispielsweise zeigt der Befehls-Slot 102, dass das reservierte Bit, das für den Zweck der Identifizierung der Ausgabegruppe, zu welcher der Befehl 0 gehört, verwendet wird, eine „0" ist. Ebenso zeigen die Befehls-Slots 104, 106 und 108, dass die jeweiligen reservierten Bits, die für den Zweck der Identifizierung der Ausgabegruppen, zu denen die Befehle 1, 2 und 3 jeweils gehören, verwendet werden, alle „0" sind. Der Befehls-Slot 110 zeigt, dass das reservierte Bit, das für den Zweck der Identifizierung der Ausgabegruppe, zu welcher der Befehl 5 gehört, verwendet wird, eine „0" ist. Schließlich zeigen die Befehls-Slots 114 und 116, dass die jeweiligen reservierten Bits, die für den Zweck der Identifizierung der Ausgabegruppen, zu denen die Befehle 6 und 7 jeweils gehören, verwendet werden, beide „1" sind.
  • Gemäß diesem bekannten Verfahren zur Spezifizierung und Identifizierung von Ausgabegruppen ist, wenn das reservierte Bit in einem bestimmten Befehl eine „0" ist, dieser Befehl der letzte Befehl in der Ausgabegruppe. Wie im obigen Beispiel angegeben, sind die Befehle 7 und 6 in der gleichen Ausgabegruppe wie der Befehl 5, welcher der letzte Befehl in der Ausgabegruppe ist. Der Grund dafür ist, dass das reservierte Bit im Befehl 5 eine „0" ist. Der Befehl 4 ist in der gleichen Ausgabegruppe wie der Befehl 3, welcher der letzte Befehl in dieser Ausgabegruppe ist. Der Grund dafür ist, dass das das reservierte Bit im Befehl 3 eine „0" ist. Der Befehl 2 ist allein der erste und letzte Befehl in der Ausgabegruppe. Der Grund dafür ist, dass das reservierte Bit im Befehl 2 eine „0" ist. Ebenso ist der Befehl 1 für sich eine Ausgabegruppe, und das gleiche gilt für den Befehl 0. Der Grund dafür ist, dass die entsprechenden reservierten Bits in den Befehlen 1 und 0 beide „0" sind.
  • Wie in 1 dargestellt, sind somit die Befehle 7 bis 5 in einer Ausgabegruppe, die von der Bezugszahl 118 bezeichnet wird; die Befehle 4 und 3 sind in einer Ausgabegruppe, die von der Bezugszahl 120 bezeichnet wird; der Befehl 2 ist für sich eine Ausgabegruppe, die mit der Bezugszahl 124 bezeichnet wird, und der Befehl 0 ist eine Ausgabegruppe für sich, die mit der Bezugszahl 126 bezeichnet wird. Somit sind insge samt fünf Ausgabegruppen in dem in 1 dargestellten Beispiel für ein VLIW-Paket vorhanden.
  • Ein Nachteil des oben beschriebenen bekannten Verfahrens zum Spezifizieren und Identifizieren von Ausgabegruppen in einem VLIW-Paket ist, dass der VLIW-Prozessor so entworfen werden muss, dass er der Möglichkeit des Vorhandenseins von bis zu acht Ausgabegruppen in jedem VLIW-Paket gerecht wird. Da jede Ausgabegruppe einen Taktzyklus für ihre Ausführung braucht, muss der VLIW-Prozessor so entworfen werden, dass er der Möglichkeit gerecht wird, dass es irgendetwas zwischen einem und acht Taktzyklen dauern kann, um die Ausführung aller einzelnen Befehle in einem einzigen VLIW-Paket abzuschließen. Offenkundig besteht ein hoher Grad an Unsicherheit, ob ein VLIW-Paket, das aus dem Speicher geholt wird, einen, zwei, drei, vier, fünf, sechs, sieben der acht Taktzyklen für seine Ausführung braucht. Es folgt auch, dass der VLIW-Prozessor irgendetwas zwischen einem und acht Taktzyklen „warten" muss, bevor der Prozessor ein anderes Paket aus dem Speicher holen kann. Es ist auch offenkundig, dass ein hoher Grad an Unsicherheit dahingehend besteht, wie viele Taktzyklen der VLIW-Prozessor „warten" muss, bevor ein neues VLIW-Paket aus dem Speicher geholt wird. Die Unsicherheiten in Bezug auf die Zahl der Taktzyklen, die für die Ausführung eines VLIW-Pakets erforderlich sind, und auch auf die Zahl der Taktzyklen, die ein VLIW-Prozessor warten muss, erzeugt Schwierigkeiten beim Entwurf von Hardware-Einheiten, wie der Abhol- und Decode-Logik, der Zeitvergabe-Logik und der Datenzuverlässigkeitsprüfungs-Logik des VLIW-Prozessors.
  • Ein weiterer Nachteil des oben beschriebenen bekannten Verfahrens ist, dass acht Bits verwendet werden müssen, um die Ausgabegruppen zu identifizieren, die im VLIW-Paket vorhanden sind. Anders ausgedrückt, auch wenn nur eine oder zwei Ausgabegruppen in dem VLIW-Paket vorhanden sind, müssen acht Bits verwendet werden, um die Ausgabegruppen in dem VLIW-Paket zu identifizieren. Die Tatsache, dass acht Bits verwendet werden, um die Ausgabegruppen zu identifizieren, die in einem VLIW-Paket vorhanden sind, bedeutet, dass alle acht einzelnen Befehle in einem VLIW-Paket abgetastet werden müssen, um die vorhandenen Gruppen in dem VLIW-Paket zu bestimmen. Der Grund dafür ist, dass der Wert jedes entsprechenden reservierten Bits in den einzelnen Befehlen bekannt sein muss, um die Ausgabegruppen zu bestimmen, die im VLIW-Paket vorhanden sind. Die Notwendigkeit, alle acht Befehle in einem VLIW-Paket jedes Mal abzutasten, wenn ein VLIW-Paket geholt wird, führt zu einer unerwünschten logischen Komplexität.
  • Aus der obigen Erörterung geht hervor, dass in der Technik ein Bedarf an einem VLIW-Paket-Packungsschema besteht, das in mehr Sicherheit resultiert, was die mögliche Zahl von Ausgabegruppen im VLIW-Paket betrifft. Außerdem ist es bevorzugt, weniger als acht Bits zu verwenden, um alle möglichen Ausgabegruppen im VLIW-Paket zu bezeichnen, und es ist auch wünschenswert, die Notwendigkeit, alle Bits und Befehle in einem VLIW-Paket abzutasten, um die Ausgabegruppen, die im VLIW-Paket vorhanden sind, zu identifizieren, zu vermeiden.
  • WO-A-9919792 und WO-A-0022515 sind auf die Verarbeitung von Befehlen für digitale Prozessoren gerichtet. WO-A-9919792 offenbart Programmcode-Segmente, die in eine oder mehrere Befehlsgruppen geteilt sind, wobei jede Gruppe in Befehlsbündel unterteilt ist, die N Befehls-Slots zur Verarbeitung auf der Basis von Templates aufweisen.
  • WO-A-0022515 offenbart ein VLIW-Befehlspaket, das mindestens sieben Befehls-Slots und ein Steuer-Template, das eine Vielzahl von Ausgabegruppen im Paket spezifiziert, aufweist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung ist eine Vorrichtung und ein Verfahren für die Ausgabegruppierung von Befehlen in einem VLIW-Prozessor. Die Erfindung erlaubt eine, zwei oder drei Ausgabegruppen (aber nicht mehr als drei Ausgabegruppen) in jedem VLIW-Paket. Die Erfindung verwendet ein Template in jedem VLIW-Paket. In einer Ausführungsform der Erfindung umfasst das Template zwei Ausgabegruppen-Endemarken, wobei jede Ausgabegruppen-Endemarke drei Bits umfasst. Die drei Bits in der ersten Ausgabegruppen-Endemarke identifizieren den Befehl, bei dem es sich um den letzten Befehl in der ersten Ausgabegruppe handelt. Ebenso identifizieren die drei Bits in der zweiten Ausgabegruppen-Endemarke den Befehl, bei dem es sich um den letzten Befehl in der zweiten Ausgabegruppe handelt.
  • Jedweder Befehl im VLIW-Paket, der nicht in die ausdrücklich definierten ersten und zweiten Ausgabegruppen fällt, wird in eine dritte Ausgabegruppe gestellt. Somit können drei Ausgabegruppen mittels der beiden Ausgabegruppen-Endemarken identifiziert werden. Unter Verwendung eines Template, das die beiden Ausgabegruppen-Endemarken enthält, kann das VLIW-Paket eine, zwei oder drei Ausgabegruppen (aber nicht mehr als drei Ausgabegruppen) aufweisen.
  • Die vorliegende Erfindung schafft einen Prozessor, der aufweist:
    eine erste Vielzahl von Befehlen in einem ersten Befehlspaket im Prozessor;
    eine Vielzahl von Ausgabegruppen im ersten Paket; gekennzeichnet durch
    ein erstes Template im ersten Paket, wobei das erste Template eine zweite Vielzahl von Endemarken aufweist, wobei die zweite Vielzahl von Endemarken die erste Vielzahl von Befehlen in höchstens drei Ausgabegruppen unterteilt, wobei jede der höchstens drei Ausgabegruppen mindestens einen von der ersten Vielzahl von Befehlen enthält, und wobei die zweite Vielzahl von Marken jede der mindestens drei Ausgabegruppen identifiziert.
  • In einer Ausführungsform der Erfindung weist das Template des VLIW-Pakets ein Chaining-Bit bzw. Verkettungsbit auf. Das Verkettungsbit wird verwendet, um Befehle, die nach dem letzten Befehl der letzten Ausgabegruppe eines ersten VLIW-Pakets erscheinen, an die Befehle in der ersten Ausgabegruppe eines zweiten VLIW-Pakets zu „ketten". Somit kann mithilfe des Verkettungsbits eine kombinierte Ausgabegruppe, die Befehle in den ersten und zweiten VLIW-Paketen enthält, gebildet werden.
  • In einer Ausführungsform verwendet die Erfindung eine Maskenerzeugungslogik zusammen mit anderen logischen Blöcken, um eine geeignete Maske zu erzeugen. Die erzeugte Maske wird verwendet, um Befehle in einem VLIW-Paket, das zur gleichen Ausgabegruppe gehört, zur Ausführung im gleichen Taktzyklus durchzulassen.
  • Gemäß der vorliegenden Erfindung wird die Unsicherheit in Bezug auf die Zahl der Blockzyklen, die nötig sind, um alle einzelnen Befehle in einem VLIW-Paket auszuführen, wesentlichen verringert, da nicht mehr als drei Ausgabegruppen im VLIW-Paket vorhanden sein können. Außerdem verwendet eine Ausführungsform der Erfindung nur sechs Bits, d. h. zwei Endemarken, die jeweils drei Bits aufweisen, um alle Ausgabegruppen in einem VLIW-Paket zu identifizieren. Somit werden weniger als acht Bits verwendet, um alle Ausgabegruppen in einem VLIW-Paket zu identifizieren, und es besteht auch keine Notwendigkeit, das gesamte VLIW-Paket und jeden einzelnen Befehl im VLIW-Paket abzutasten, um alle Ausgabegruppen, die in einem VLIW-Paket vorhanden sind, zu identifizieren.
  • Die Tatsache, dass die Ausgabegruppeninformationen vollständig auf das Template im VLIW-Paket beschränkt sind, erlaubt es dem VLIW-Prozessor, die Ausgabegruppeninformationen schnell mit einer einfachen Maske zu extrahieren, statt die Ausgabegruppeninformationen in Bits aus verschiedenen Bitpositionen im VLIW-Paket extrahieren zu müssen. Somit optimiert die Erfindung die Schnelligkeit und den Leistungsverbrauch im Zusammenhang mit verschiedenen Hardware-Einheiten des VLIW-Prozessors, wie der Abhol- und Decode-Logik, der Zeitvergabe-Logik und der Datenzuverlässigkeitsprüfungs-Logik.
  • Außerdem kann es gemäß der vorliegenden Erfindung infolge der Begrenzung der Zahl an Ausgabegruppen in einem VLIW-Paket auf maximal drei höchstens drei Taktzyklen dauern, bis jedes VLIW-Paket ausgeführt ist. Dies resultiert in einer einfacheren Abhol- und Decode-Logik, da die Abhol- und Decode-Logik nicht für Situationen ausgelegt sein muss, wo vier, fünf, sechs, sieben oder acht Ausgabegruppen in einem einzigen VLIW-Paket vorhanden sind.
  • Da die Zahl der Ausgabegruppen in der vorliegenden Erfindung auf drei begrenzt ist, ist ferner auch die Logik, die für die Verkettung von Befehlen von einem ersten VLIW-Paket mit einer Ausgabegruppe in einem zweiten VLIW-Paket verwendet wird, einfacher, da die Verkettung entweder ab dem letzten Befehl in der zweiten Ausgabegruppe des ersten VLIW-Pakets oder ab dem letzten Befehl in der dritten Ausgabegruppe im ersten VLIW-Paket stattfinden kann. Jedoch könnte in anderen VLIW-Prozessor-Designs die Verkettung ab dem letzten Befehl in der zweiten Ausgabegruppe, dem letzten Befehl in der dritten Ausgabegruppe, dem letzten Befehl in der vierten Ausgabegruppe, dem letzten Befehl in der fünften Ausgabegruppe, dem letzten Befehl in der sechsten Ausgabegruppe oder dem letzten Befehl in der siebten Ausgabegruppe stattfinden. Um diesem breiten Bereich an Verkettungsmöglichkeiten gerecht zu werden, sind die Hardware-Einheit für die Datenabhängigkeitsprüfung und die Hardware für die Weiterleitung von Befehlen an Ausführungseinheiten in diesen anderen VLIW-Prozessoren komplexer und langsamer und verbrauchen mehr Leistung.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • 1 zeigt ein Verfahren des Standes der Technik zum Identifizieren von Ausgabegruppen in einem VLIW-Paket.
  • 2 zeigt allgemein eine Ausführungsform des erfindungsgemäßen VLIW-Pakets und ein Template, das Ausgabegruppen-Endemarken-Slots aufweist.
  • 3 zeigt ein spezielles Beispiel für das erfindungsgemäße VLIW-Paket und ein Template, das Ausgabegruppen-Endemarken-Slots aufweist.
  • 4 zeigt ein weiteres spezifisches Beispiel für das erfindungsgemäße VLIW-Paket und ein Template, das Ausgabegruppen-Endemarken-Slots aufweist.
  • 5 zeigt spezifische Beispiele für erste und zweite VLIW-Pakete, wo bestimmte Befehle im ersten VLIW-Paket mit bestimmten Befehlen im zweiten VLIW-Paket verkettet sind, gemäß einer Ausführungsform der Erfindung:
  • 6 zeigt ein Beispiel für ein Begriffs-Blockdiagramm zur Implementierung einer Ausführungsform der Erfindung, wo das VLIW-Paket sieben Befehle enthält und wo das Verkettungsbit gleich „0" ist.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung ist eine Vorrichtung und ein Verfahren für die Ausgabegruppierung von Befehlen in einem VLIW-Prozessor. Die folgende Beschreibung enthält spezifische Informationen, die sich auf die Implementierung der vorliegenden Erfindung beziehen. Ein Fachmann wird erkennen, dass die vorliegende Erfindung auch auf andere Weise als in der vorliegenden Erfindung ausdrücklich erörtert implementiert werden kann. Außerdem werden einige der spezifischen Einzelheiten der Erfindung nicht erörtert, um die Erfindung nicht zu verunklaren. Die in der vorliegenden Anmeldung nicht beschriebenen spezifischen Details sind Teil des Wissens eines Durchschnittsfachmanns.
  • Die Zeichnung in der vorliegenden Anmeldung und ihre dazugehörige ausführliche Beschreibung sind lediglich auf Ausführungsbeispiele der Erfindung gerichtet. Um der Kürze willen werden andere Ausführungsformen der Erfindung, welche die Grundlagen der vorliegenden Erfindung verwenden, in der vorliegenden Anmeldung nicht ausführlich beschrieben und werden in der vorliegenden Zeichnung nicht ausdrücklich dargestellt.
  • 2 stellt eine Ausführungsform der vorliegenden Erfindung dar. 2 zeigt ein VLIW-Paket 200, das ein Template 202 und eine Anzahl von einzelnen Befehlen im VLIW-Paket 200 enthält. Es sei darauf hingewiesen, dass, um die Benennung zu erleichtern, jeder der „einzelnen Befehle" in einem VLIW-Paket in der vorliegenden Anmeldung auch einfach als „Befehl" bezeichnet wird. Außerdem wird ein VLIW-Paket, wie ein VLIW-Paket 200, im vorliegenden Beispiel auch als „Befehlspaket" bezeichnet. Die Erfindung ist flexibel, was die zulässige Zahl von einzelnen Befehlen im VLIW-Paket betrifft. Beispielsweise darf das VLIW-Paket vier oder mehr einzelne Befehle aufweisen. In dem spezifischen Bespiel, das in 2 dargestellt ist, weist das VLIW-Paket 200 sieben einzelne Befehle auf. Diese einzelnen Befehle sind der Befehl 0 im Befehls-Slot 204, der Befehl 1 im Befehls-Slot 206, der Befehl 2 im Befehls-Slot 208, der Befehl 3 im Befehls-Slot 210, der Befehl 4 im Befehls-Slot 212, der Befehl 5 im Befehls-Slot 214 und der Befehl 6 im Befehls-Slot 216.
  • In dem in 2 dargestellten Ausführungsbeispiel umfasst das Template 202 16 Bits. Es sei jedoch klargestellt, dass die Zahl der Bits im Template 202 eine Frage des Designs ist und variiert werden kann, ohne vom Bereich der vorliegenden Erfindung abzuweichen. Beispielsweise kann das Template 202 fünf Bits, acht Bits oder 24 Bits oder mehr umfassen. Außerdem besteht in dem Ausführungsbeispiel der Erfindung, das in 2 dargestellt ist, jeder Befehl 0 bis 6 ebenfalls aus 16 Bits. Die Zahl der Bits in den einzelnen Befehlen 0 bis 6 ist jedoch eine Frage des Designs und kann sich zwischen unterschiedlichen VLIW-Prozessoren unterscheiden. Beispielsweise kann jeder einzelne Befehl 0 bis 6 aus 16 Bits, 32 Bits oder 41 Bits bestehen. Obwohl außerdem einige der einzelnen Befehle in einem bestimmten VLIW-Paket eine bestimmte Länge aufweisen können, können andere einzelne Befehle im gleichen VLIW-Paket eine andere Länge aufweisen. Beispielsweise kann zwar einer der einzelnen Befehle in einem bestimmten VLIW-Paket 16 Bits lang sein, aber ein anderer einzelner Befehl im gleichen VLIW-Paket kann 32 Bits lang sein.
  • 2 zeigt auch eine vergrößerte Ansicht des Template 202. Wie in 2 zu sehen, weist das Template 202 einen ersten „Ausgabegruppen-Endemarken"-Slot 224 und einen zweiten „Ausgabegruppen-Endemarken"-Slot 226 und einen „Verkettungsbit"-Slot 228 auf. Im Ausführungsbeispiel der Erfindung, das in 2 dargestellt ist, ist jeder der ersten und zweiten Ausgabegruppen-Endemarken-Slots 224 und 226 drei Bits lang. Jedoch ist die Zahl der Bits in jedem Ausgabegruppen-Endemarken-Slot eine Frage des Designs und kann für unterschiedliche VLIW-Prozessoren verschieden sein. Ein Verkettungsbit-Slot 228 besteht in der Regel aus einem einzigen Bit.
  • Es sei darauf hingewiesen, dass gemäß der vorliegenden Erfindung ein VLIW-Paket in mehr als drei Ausgabegruppen unterteilt sein kann. Somit verringert die vorliegende Erfindung die Unsicherheit und die damit zusammenhängenden Design-Probleme, die mit der Unsicherheit zusammenhängen, wie viele Taktzyklen ein bestimmtes VLIW-Paket für seine Ausführung benötigt, erheblich. Wie nachstehend ausführlicher erläutert, enthält das Template 202 im VLIW-Paket 200 Informationen, die verwendet werden können, um das VLIW-Paket in eine, zwei oder drei Ausgabegruppen, aber in nicht mehr als drei Ausgabegruppen zu unterteilen. Die erste Ausgabegruppen-Endemarke im Slot 224 des Template 202 zeigt an, welche einzelnen Befehle im VLIW-Paket 200 sich in der ersten Ausgabegruppe befinden, während die zweite Ausgabegruppen-Endemarke im Slot 226 des Template 202 anzeigt, welche einzelnen Befehle im VLIW-Paket 200 sich in der zweiten Ausgabegruppe befinden. Die übrigen Befehle im VLIW-Paket 200, falls vorhanden, wären dann in der dritten Ausgabegruppe. Somit ist eine eigene Ausgabegruppen-Endemarke zur Identifizierung, welche einzelnen Befehle im VLIW-Paket 200 sich in der dritten Ausgabegruppe befinden, nicht nötig. Wie nachstehend ausführlicher erläutert, macht es die Erfindung unter Verwendung des obigen Schemas möglich, dass das VLIW-Paket 200 eine, zwei oder drei Ausgabegruppen, aber nicht mehr als drei Ausgabegruppen aufweist.
  • Nun wird mit Bezug auf 3 ein spezifisches Beispiel zur Erläuterung der vorliegenden Ausführungsform der Erfindung erörtert. 3 zeigt ein VLIW-Paket 300, das einen Template-Slot 302 und Befehls-Slots 304, 306, 308, 310, 312, 314 und 316 aufweist. Wie im VLIW-Paket 300 in 3 zu sehen, befindet sich der Befehl 0 im Befehls-Slot 304, der Befehl 1 im Befehls-Slot 306, der Befehl 2 im Befehls-Slot 308, der Befehl 3 im Befehls-Slot 310, der Befehl 4 im Befehls-Slot 312, der Befehl 5 im Befehls-Slot 314 und der Befehl 6 im Befehls-Slot 316. Wie in dem in 2 dargestellten Beispiel umfasst das Template 302 im VLIW-Paket 300 16 Bits, während jeder einzelne Befehl 0 bis 6 ebenfalls 16 Bits umfasst.
  • 3 zeigt auch, dass das Template 302 einen ersten Ausgabegruppen-Endemarken-Slot 324, einen zweiten Ausgabegruppen-Endemarken-Slot 326 und einen Verkettungsbit-Slot 328 aufweist. Wie in 2 ist in dem in 3 dargestellten Beispiel jeder Ausgabegruppen-Endemarken-Slot 324 oder 326 drei Bits breit, während der Verkettungsbit-Slot 328 ein Bit breit ist. In dem in 3 dargestellten Beispiel enthält der erste Ausgabegruppen-Endemarken-Slot 324 Bits „011" (d. h. eine dezimale 3), während der zweite Ausgabegruppen-Endemarken-Slot 326 Bits „101" (d. h. eine dezimale 5) enthält. Wie im Template 302 dargestellt, enthält der Verkettungsbit-Slot 328 eine „0". Das tatsächliche Bitmuster in jedem Ausgabegruppen-Endemarken-Slot wird in der vorliegenden Anmeldung als Ausgabegruppen-Endemarke oder einfach als „Endemarke" bezeichnet.
  • Weiter mit diesem Beispiel – die drei Bits, die in der ersten Ausgabegruppen-Endemarke 324 enthalten sind, d. h. „011" (oder dezimal 3), zeigen an, dass der dritte Befehl im VLIW-Paket 300 das „Ende" der ersten Ausgabegruppe im VLIW-Paket 300 ist. Anders ausgedrückt, die Ausgabegruppen-Endemarke 324 zeigt an, dass der Befehl 0 im Befehls-Slot 304, der Befehl 1 im Befehls-Slot 306 und der Befehl 2 im Befehls-Slot 308 sich in der ersten Ausgabegruppe befinden. Die erste Ausgabegruppe, die Befehle 0 bis 2 enthält, wird in 3 allgemein mit dem Bezugszeichen 318 bezeichnet. Ebenso zeigen die drei Bits, die in der zweiten Ausgabegruppen-Endemarke 326 enthalten sind, d. h. „101" (oder dezimal 5), an, dass der fünfte Befehl im VLIW-Paket 300 das „Ende" der zweiten Ausgabegruppe im VLIW-Paket 300 ist. Anders ausgedrückt, die Ausgabegruppen-Endemarke 326 zeigt an, dass der Befehl 3 im Befehls-Slot 310 und der Befehl 4 im Befehls-Slot 312 sich in der zweiten Ausgabegruppe befinden. Die zweite Ausgabegruppe, welche die Befehle 3 und 4 enthält, wird in 3 allgemein mit dem Bezugszeichen 320 bezeichnet. Obwohl im Template 302 für die dritte Ausgabegruppe keine Endemarke vorhanden ist, gehören gemäß der Erfindung die übrigen Befehle im VLIW-Paket 300 zur dritten Ausgabegruppe. Anders ausgedrückt, der Befehl 5 im Befehls-Slot 314 und der Befehl 6 im Befehls-Slot 316 bilden die dritte Ausgabegruppe. Die dritte Ausgabegruppe, welche die Befehle 5 und 6 enthält, wird in 3 allgemein mit der Bezugszahl 322 bezeichnet.
  • Somit ist in dem speziellen Beispiel, das mit Bezug auf 3 angegeben ist, das VLIW-Paket 300 in drei Ausgabegruppen unterteilt. Eine erste Ausgabegruppe, welche die Befehle 0 bis 2 umfasst, eine zweite Ausgabegruppe, welche die Befehle 3 und 4 umfasst, und eine dritte Ausgabegruppe, welche die Befehle 5 und 6 umfasst. Gemäß diesem Beispiel können die Befehle 0 bis 2 an ihre jeweiligen Ausführungseinheiten weitergeleitet werden und in einem ersten Taktzyklus ausgeführt werden. Ebenso können die Befehle 3 und 4 zu ihren jeweiligen Ausführungseinheiten weitergeleitet werden und können in einem zweiten Taktzyklus ausgeführt werden. In einem dritten Taktzyklus können die Befehle 5 und 6 an ihre jeweiligen Ausführungseinheiten weitergeleitet und ausgeführt werden. Somit würde in diesem Beispiel die Ausführung aller einzelnen Befehle 0 bis 6 im VLIW-Paket 300 drei Taktzyklen dauern.
  • Es sei darauf hingewiesen, dass die vorliegende Erfindung für das Überschreiten von Paketgrenzen und das Kombinieren von einzelnen Befehlen in einem ersten VLIW-Paket mit einzelnen Befehlen in einem zweiten (d. h. einem folgenden) VLIW-Paket, um eine Ausgabegruppe zu bilden, ausgelegt ist. Anders ausgedrückt, einer oder mehrere Befehle in einem ersten VLIW-Paket können mit einzelnen Befehlen in einem zweiten VLIW-Paket „verkettet" werden, um eine Ausgabegruppe zu bilden. In dem speziellen Beispiel von 3 ist das Verkettungsbit, das im Verkettungsbit-Slot 328 im Template 302 enthalten ist, eine „0". Somit liegt keine Verkettung eines der einzelnen Befehle im VLIW-Paket 300 mit einem der einzelnen Befehle in einem nachfolgenden VLIW-Paket vor. Die Art und Weise, wie das Verkettungsbit verwendet wird, um einen oder mehrere einzelne Befehle in einem ersten VLIW-Paket mit einem oder mehreren Befehlen in einem zweiten VLIW-Paket zu „verketten", wird in einem späteren Abschnitt der vorliegenden Anmeldung erläutert, wo das Verkettungsbit eine „1" ist.
  • Mit Bezug auf 4 wird nun ein weiteres spezifisches Beispiel zur Erläuterung der vorliegenden Ausführungsform der Erfindung erörtert. 4 zeigt ein VLIW-Paket 400, das einen Template-Slot 402 und Befehls-Slots 404, 406, 408 und 410 aufweist. Wie im VLIW-Paket 400 in 4 zu sehen ist, befindet sich der Befehl 0 im Befehls-Slot 404, der Befehl 1 im Befehls-Slot 406, der Befehl 2 im Befehls-Slot 408 und der Befehl 3 im Befehls-Slot 410. Wie bei den Beispielen, die in den 2 und 3 dargestellt sind, umfasst das Template 402 im VLIW-Paket 400 16 Bits. Anders als in den in den 2 und 3 dargestellten Beispielen sind jedoch die Befehle 0 bis 2 im VLIW-Paket 400 „lange" Befehle, die jeweils 32 Bits umfassen, während der Befehl 3 nur 16 Bits umfasst.
  • 4 zeigt auch, dass das Template 402 einen ersten Ausgabegruppen-Endemarken-Slot 412, einen zweiten Ausgabegruppen-Endemarken-Slot 414 und einen Verkettungsbit-Slot 416 aufweist. In dem in 4 dargestellten Beispiel enthält der erste Ausgabegruppen-Endemarken-Slot 412 Bits „110" (d. h. eine dezimale 6), während der zweite Ausgabegruppen-Endemarken-Slot 414 Bits „111" (d. h. eine dezimale 7) enthält. Wie im Template 402 dargestellt, enthält der Verkettungsbit-Slot 416 eine „0".
  • Weiter mit diesem Beispiel – die drei Bits, die in der ersten Ausgabegruppen-Endemarke 412 enthalten sind, d. h. „110" (oder dezimal 6), zeigen an, dass ein kurzer sechster Befehl, der dem langen dritten Befehl im VLIW-Paket 400 entspricht, das „Ende" der ersten Ausgabegruppe im VLIW-Paket 400 darstellt. Anders ausgedrückt, die Ausgabegruppen-Endemarke 412 zeigt an, dass ein langer Befehl 0 im Befehls-Slot 404, ein langer Befehl 1 im Befehls-Slot 406 und ein langer Befehl 2 im Befehls-Slot 408 sich in der ersten Ausgabegruppe befinden. Die erste Ausgabegruppe, die lange Befehle 0 bis 2 enthält, wird in 4 allgemein mit dem Bezugszeichen 418 bezeichnet. Ebenso zeigen die drei Bits, die in der zweiten Ausgabegruppen-Endemarke 414 enthalten sind, d. h. „111" (oder dezimal 7), an, dass der siebte kurze Befehl, der dem vierten Befehl im VLIW-Paket 400 entspricht, das „Ende" der zweiten Ausgabegruppe im VLIW-Paket 400 ist. Anders ausgedrückt, die Ausgabegruppen-Endemarke 414 zeigt an, dass der (kurze) Befehl 3 im Befehls-Slot 420 sich in der zweiten Ausgabegruppe befindet. Die zweite Ausgabegruppe, die nur drei Befehle 3 enthält, wird in 4 allgemein mit der Bezugszahl 420 bezeichnet. Obwohl im Template 402 für die dritte Ausgabegruppe keine Endemarke vorhanden ist, gehören gemäß der Erfindung jegliche verbliebenen Befehle im VLIW-Paket 400 zur dritten Ausgabegruppe. Jedoch ist der Befehl 3 der letzte Befehl im VLIW-Paket 400. Demgemäß weist das VLIW-Paket 400 keine dritte Ausgabegruppe auf und es (d. h. das VLIW-Paket 400) besteht nur aus zwei Ausgabegruppen.
  • In dem speziellen Beispiel, das mit Bezug auf 4 angegeben wird, ist das VLIW-Paket 400 in zwei Ausgabegruppen unterteilt. Eine erste Ausgabegruppe, die lange Befehle 0 bis 2 enthält, und eine zweite Ausgabegruppe, die einen kurzen Befehl 3 enthält. Gemäß diesem Beispiel können die langen Befehle 0 bis 2 an ihre jeweiligen Ausführungseinheiten weitergeleitet und in einem ersten Taktzyklus ausgeführt werden. Ebenso kann der kurze Befehl 3 an seine entsprechende Ausführungseinheit weitergeleitet und in einem zweiten Taktzyklus ausgeführt werden. Somit würde in diesem Beispiel die Ausführung aller einzelnen Befehle 0 bis 3 im VLIW-Paket 400 zwei Taktzyklen dauern.
  • Wie in dem Beispiel, das mit Bezug auf 3 angegeben ist, ist in dem speziellen Beispiel, das in 4 angegeben ist, das Verkettungsbit, das im Verkettungsbit-Slot 416 im Template 402 enthalten ist, eine „0". Somit liegt keine Verkettung irgendeines einzelnen Befehls im VLIW-Paket 400 mit irgendeinem der einzelnen Befehle in einem folgenden VLIW-Paket vor. Die Art und Weise, wie das Verkettungsbit verwendet wird, um einen oder mehrere einzelne Befehle in einem ersten VLIW-Paket mit einem oder mehreren einzelnen Befehlen in einem zweiten VLIW-Paket zu „verketten", wird im folgenden Beispiel erläutert.
  • Unter Bezugnahme auf 5 wird ein weiteres spezifisches Beispiel zur Erläuterung der vorliegenden Ausführungsform der Erfindung erörtert. Anders als in den Beispielen, die mit Bezug auf die 3 und 4 erörtert werden, ist im Beispiel, das mit Bezug auf 5 erörtert wird, das Verkettungsbit gleich „1". 5 zeigt, dass das VLIW-Paket 500 einen Template-Slot 502 und Befehls-Slots 504, 506, 508, 510 und 512 enthält. Wie im VLIW-Paket 500 in 5 zu sehen, befindet sich der lange Befehl 0 im Befehls-Slot 504, der lange Befehl 1 im Befehls-Slot 506, der kurze Befehl 2 im Befehls-Slot 508, der kurze Befehl 3 im Befehls-Slot 510 und der kurze Befehl 4 im Befehls-Slot 512. Das Template 502 im VLIW-Paket 500 umfasst 16 Bits, während jeder einzelne der langen einzelnen Befehle 0 und 1 32 Bits umfasst und jeder einzelne der kurzen einzelnen Befehle 2 bis 4 16 Bits umfasst.
  • 5 zeigt auch, dass das Template 502 einen ersten Ausgabegruppen-Endemarken-Slot 514, einen zweiten Ausgabegruppen-Endemarken-Slot 516 und einen Verkettungsbit-Slot 518 aufweist. In dem in 5 dargestellten Beispiel enthält der erste Ausgabegruppen-Endemarken-Slot 514 Bits „100" (d. h. eine dezimale 4), während der zweite Ausgabegruppen-Endemarken-Slot 516 Bits „000" enthält. Wie im Template 502 dargestellt, enthält der Verkettungsbit-Slot 518 eine „1".
  • Da das Verkettungsbit in dem vorliegenden Beispiel eine „1" ist, müssen bestimmte einzelne Befehle im VLIW-Paket 500 und bestimmte andere einzelne Befehle im nachfolgenden VLIW-Paket, das in 5 als VLIW-Paket 550 dargestellt ist, in eine kombinierte Ausgabegruppe gestellt werden. Gemäß der vorliegenden Erfindung wird eine Ausgabegruppe, die ganz auf das VLIW-Paket 500 beschränkt ist, von einer Endemarke identifiziert, die einen der Befehle im VLIW-Paket 500 als letzten Befehl in der Ausgabegruppe identifiziert. Im vorliegenden Beispiel zeigt der erste Ausgabegruppen-Endemarken-Slot 514 an, dass der mindestens eine Befehl in der ersten Ausgabegruppe ein kurzer vierter Befehl ist, der dem langen zweiten Befehl im VLIW-Paket 500, d. h. dem Befehl 1 im VLIW-Paket 500, entspricht. Somit besteht die erste Ausgabegruppe, die ganz auf das VLIW-Paket 500 beschränkt ist, aus einzelnen langen Befehlen 0 und 1. Lange Befehle 0 und 1 im VLIW-Paket 500 werden in 5 allgemein durch die Bezugszahl 520 bezeichnet.
  • Gemäß der Erfindung müssen, wenn eine Ausgabegruppen-Endemarke „000" ist, alle Befehle nach dem letzten Befehl in der vorangehenden Ausgabegruppe eines VLIW-Pakets mit Befehlen in einem folgenden VLIW-Paket verkettet werden. Im vorliegenden Beispiel enthält die zweite Ausgabegruppen-Endemarke im VLIW-Paket 500 (die sich im Slot 516 des Template 502 befindet) Bits „000", um anzuzeigen, dass alle Befehle nach dem letzten Befehl in der ersten Ausgabegruppe im VLIW-Paket 500 mit bestimmten Befehlen im VLIW-Paket 550 verkettet werden müssen. Somit müssen Befehle im VLIW-Paket 500, die nach dem letzten Befehl der ersten Ausgabegruppe erscheinen, d. h. Befehle im VLIW-Paket 500, die nach dem Befehl 1 erscheinen, mit bestimmten anderen Befehlen im VLIW-Paket 550 verkettet werden. Daher müssen kurze Befehle 2, 3 und 4 im VLIW-Paket 500 mit bestimmten anderen Befehlen im VLIW-Paket 550 verkettet werden, um eine kombinierte Ausgabegruppe zu bilden.
  • Weiter mit dem vorliegenden Beispiel – 5 zeigt, dass das VLIW-Paket 550 einen Template-Slot 552 und Befehls-Slots 554, 556, 558 und 560 aufweist. Wie im VLIW-Paket 550 in 5 zu sehen ist, befindet sich der kurze Befehl 0 im Befehls-Slot 554, der lange Befehl 1 im Befehls-Slot 556, der lange Befehl 2 im Befehls-Slot 558 und der lange Befehl 3 im Befehls-Slot 560. Das Template 552 im VLIW-Paket 550 umfasst 16 Bits, während der einzelne kurze Befehl 0 ebenfalls 16 Bits umfasst. Jedoch umfasst in dem Beispiel für ein VLIW-Paket 550, das in 5 dargestellt ist, jeder der einzelnen langen Befehle 1 bis 3 32 Bits.
  • 5 zeigt ein Template 552 mit einem ersten Ausgabegruppen-Endemarken-Slot 562, einem zweiten Ausgabegruppen-Endemarken-Slot 564 und einem Verkettungsbit-Slot 566. In dem in 5 dargestellten Beispiel enthält der erste Ausgabegruppen-Endemarken-Slot 562 Bits „001" (d. h. eine dezimale 1), während der zweite Ausgabegruppen-Endemarken-Slot 564 Bits „111" (d. h. eine dezimale 7) enthält. Wie im Template 552 dargestellt, enthält der Verkettungsbit-Slot 566 eine „0".
  • Da der erste Ausgabegruppen-Endemarken-Slot 562 Bits „001" enthält, ist der erste Befehl im VLIW-Paket 550 (d. h. der kurze Befehl 0) auch der letzt Befehl in der ersten Ausgabegruppe des VLIW-Pakets 550. Da das Verkettungsbit im vorangehenden VLIW-Paket, d. h. im VLIW-Paket 500, jedoch gleich „1" war, enthält die erste Ausgabegruppe des VLIW-Pakets 550 zusätzlich zum kurzen Befehl 0 des VLIW-Pakets 550 diejenigen Befehle im VLIW-Paket 500, die nicht zur letzten Ausgabegruppe des VLIW-Pakets 500 gehören. Somit besteht die erste Ausgabegruppe des VLIW-Pakets 550 aus kurzen Befehlen 2, 3 und 4 des VLIW-Pakets 500 zusätzlich zum kurzen Befehl 0 des VLIW-Pakets 550. Kurze Befehle 2, 3 und 4 im VLIW-Paket 500 werden in 5 allgemein mit der Bezugszahl 522 bezeichnet, während der kurze Befehl 0 im VLIW-Paket 550 allgemein mit der Bezugszahl 568 bezeichnet ist.
  • Wie im Template 552 zu sehen ist, enthält der zweite Ausgabegruppen-Endemarken-Slot Bits „111" (d. h. eine dezimale 7). Somit endet die zweite Ausgabegruppe mit einem kurzen siebten Befehl, der dem langen letzten Befehl (d. h. dem langen Befehl 3) im VLIW-Paket 550 entspricht. Somit ist die zweite Ausgabegruppe im VLIW-Paket 550, die lange Befehle 1, 2 und 3 umfasst, die letzte Ausgabegruppe in diesem Paket. Da das Verkettungsbit im Slot 566 des Template 552 gleich „0" ist, werden außerdem lange Befehle 1, 2 und 3 in der zweiten (und letzten) Ausgabegruppe im VLIW-Paket 550 nicht mit irgendwelchen Befehlen in einem nachfolgenden VLIW-Paket verkettet.
  • Somit umfassen in dem mit Bezug auf 5 dargestellten Beispiel die langen Befehle 0 und 1 im VLIW-Paket 500 eine Ausgabegruppe. Da das Verkettungsbit im Template 502 des VLIW-Pakets 500 gleich „1" ist, bilden kurze Befehle 2, 3 und 4 im VLIW-Paket 500 und ein kurzer Befehl 0 im VLIW-Paket 550 eine eigene kombinierte Ausgabegruppe, und schließlich bilden lange Befehle 1, 2 und 3 im VLIW-Paket 550 eine noch weitere Ausgabegruppe. Gemäß diesem Beispiel können lange Befehle 0 und 1 im VLIW-Paket 500 an ihre jeweiligen Ausführungseinheiten weitergeleitet werden und in einem ersten Taktzyklus ausgeführt werden. Kurze Befehle 2, 3 und 4 im VLIW-Paket 500 zusammen mit einem kurzen Befehl 0 im VLIW-Paket 550 können zu ihren jeweiligen Ausführungseinheiten weitergeleitet werden und in einem zweiten Taktzyklus ausgeführt werden. Schließlich können lange Befehle 1, 2 und 3 im VLIW-Paket 550 an ihre jeweiligen Ausführungseinheiten weitergeleitet werden und in einem dritten Taktzyklus ausgeführt werden.
  • Wie oben erläutert, ermöglicht die Erfindung mittels eines Verkettungsbits im Template des VLIW-Pakets die Überschreitung von Paketgrenzen, so dass einzelne Befehle von einem ersten VLIW-Paket und einzelne Befehle von einem zweiten VLIW-Paket gemeinsam eine kombinierte Ausgabegruppe bilden können. Die Fähigkeit, eine kombinierte Ausgabegruppe unter Verwendung von Befehlen von zwei verschiedenen VLIW-Paketen zu bilden, sorgt für eine größere Flexibilität bei der Programmierung und Verwendung des VLIW-Prozessors und sorgt auch für eine größere Flexibilität der Architektur und des logischen Designs des VLIW-Prozessors.
  • Aus den mit Bezug auf die 3, 4 und 5 erörterten Beispielen geht hervor, dass gemäß der vorliegenden Erfindung in jedem VLIW-Paket eine, zwei oder drei Ausgabegruppen (aber nicht mehr als drei Ausgabegruppen) vorhanden sein können. In dem oben erörterten Beispiel für einen VLIW-Prozessor können höchstens sieben einzelne (kurze) Befehle in einem VLIW-Paket vorhanden sein. In diesem VLIW-Prozessor-Beispiel wären, wenn der erste Ausgabegruppen-Endemarken-Slot in einem VLIW-Paket-Template Bits „111" enthält, alle sieben einzelnen Befehle im VLIW-Paket in der ersten Ausgabegruppe, die in diesem speziellen VLIW-Paket auch die einzige Ausgabegruppe wäre. Wenn der erste Ausgabegruppen-Endemarken-Slot in einem VLIW-Paket-Template eine binäre Zahl unter „111" enthält und der zweite Ausgabegruppen-Endemarken-Slot die binäre Zahl „111" enthält, dann wäre die zweite Ausgabegruppe die letzt Ausgabegruppe im VLIW-Paket, und somit waren insgesamt zwei Ausgabegruppen im VLIW-Paket.
  • Wenn die ersten und zweiten Ausgabegruppen-Endmarken beide eine binäre Zahl unter „111" sind und die zweite Ausgabegruppen-Endmarke eine binäre Zahl ist, die größer ist als die erste Ausgabegruppen-Endmarke, gäbe es eine dritte Ausgabegruppe, die diejenigen einzelnen Befehle enthält, die sich weder in der ersten noch in der zweiten Ausgabegruppe befinden. Aus den obigen Beispielen und Erörterungen geht hervor, dass die Erfindung bis zu drei Ausgabegruppen, aber nicht mehr als drei Ausgabegruppen in jedem VLIW-Paket erlaubt.
  • Aufgrund der Tatsache, dass die Erfindung eine, zwei oder drei Ausgabegruppen (aber nicht mehr als drei Ausgabegruppen) in jedem VLIW-Paket erlaubt, herrscht eine wesentlich geringere Unsicherheit in Bezug auf die Zahl der Taktzyklen, die nötig sind, um alle einzelnen Befehle in einem VLIW-Paket auszuführen. Aufgrund der verringerten Unsicherheit in Bezug auf die Zahl der Taktzyklen, die nötig sind, um alle einzelnen Befehle in einem VLIW-Paket auszuführen, können Hardware-Einheiten wie die Abhol- und Decode-Logik, die Zeitvergabe-Logik und die Datenzuverlässigkeitsprüfungs-Logik des VLIW-Prozessors, leichter entworfen werden.
  • Aus den obigen Erörterungen und Beispielen geht auch hervor, dass das Ausführungsbeispiel der Erfindung, das in der vorliegenden Anmeldung erörtert wird, nur sechs Bits verwendet, um alle Ausgabegruppen zu identifizieren, die im VLIW-Paket vorhanden sind. Dies steht im Gegensatz zu oben erörterten bekannten Verfahren, die acht Bits benötigen, um alle Ausgabegruppen im VLIW-Paket zu identifizieren. Außerdem benötigt die Erfindung, anders als die oben erörterten Verfahren, keine Abtastung aller Bits und Befehle im VLIW-Paket, um die Ausgabegruppen zu identifizieren, die im VLIW-Paket vorhanden sind. Die Tatsache, dass eine solche „Abtastung" aller Bits und Befehle im VLIW-Paket nicht notwendig ist, führt zu einer weiteren Verringerung der Komplexität der Logik.
  • In 6 ist ein Beispiel und Begriffs-Blockdiagramm für die Implementierung der vorliegenden Erfindung dargestellt. Für einen Durchschnittsfachmann ist klar, dass die Erfindung auf mehrere Weisen anders als im Beispiels-Blockdiagramm, das in 6 dargestellt ist, implementiert werden kann. Außerdem wird im Blockdiagramm von 6 ein Beispiels-VLIW-Paket 600 verwendet, das sieben einzelne Befehle umfasst. Es ist kein gattungsgemäßes bzw. allgemeines Blockdiagramm für die Implementierung der Erfindung, wenn eine kleinere oder größere Zahl von einzelnen Befehlen im VLIW-Paket verwendet wird, dargestellt. Ein solches allgemeines Blockdiagramm ähnelt je doch dem in 6 und kann von einem Durchschnittsfachmann angesichts des in 6 dargestellten Blockdiagramms und der nachstehenden zugehörigen Erörterung erstellt werden. Außerdem wurde das in 6 dargestellte Begriffs-Blockdiagramm auch vereinfacht, um ein Beispiel zu erörtern, wo das Verkettungsbit im VLIW-Paket 600 gleich „0" ist.
  • Weiter mit dem Beispiel und dem Konzept-Blockdiagramm von 6 – das Beispiels-VLIW-Paket 600 umfasst Befehle 0 bis 6, die allgemein durch eine Bezugszahl 604 bezeichnet werden, und ein Template, das allgemein mit der Bezugszahl 602 bezeichnet wird. In dem Beispiels-VLIW-Paket 600 ist jeder einzelne der Befehle 0 bis 6 16 Bits lang, während das Template 602 ebenfalls 16 Bits lang ist. Es ist gezeigt, dass das Template 602 einen ersten Ausgabegruppen-Endemarken-Slot 603 und einen zweiten Ausgabegruppen-Endemarken-Slot 605 und einen Verkettungsbit-Slot 607 aufweist. Wie oben angegeben, enthält in dem in der vorliegenden Anmeldung beschriebenen Beispiels-VLIW-Prozessor jeder der ersten und zweiten Ausgabegruppen-Endemarken-Slots 603 und 605 drei Bits, während der Verkettungsbit-Slot 607 ein einziges Bit enthält.
  • Wie in 6 dargestellt, sind die ersten und zweiten Ausgabegruppen-Endemarken-Slots 603 und 605 über eine drei Bit breite Leitung 615 bzw. eine drei Bit breite Leitung 617 mit einem 3-to-1-MUX 608 verkoppelt. Eine drei Bit breite Leitung 621 ist ebenfalls mit dem 3-to-1-MUX 608 verkoppelt. Im vorliegenden Beispiel, wo das VLIW-Paket 600 sieben einzelne Befehle aufweist, gibt die Leitung 621 eine konstante binäre Zahl „111" (d. h. eine dezimale 7) an den 3-to-1-MUX 608 aus. Ein erster Ausgabegruppen-Endemarken-Slot 603, ein zweiter Ausgabegruppen-Endemarken-Slot 605 und der Verkettungsbit-Slot 607 sind über eine drei Bit breite Leitung 615, eine drei Bit breite Leitung 617 bzw. eine ein Bit breite Leitung 619 mit einer MUX-Steuerung bzw. MUX Control 610 verkoppelt. Die MUX Control 610 gibt ein Ausgabesignal über eine drei Bit breite Leitung 633 an den 3-to-1-MUX 608 aus. Der 3-to-1-MUX 608 gibt sein Ausgangssignal über eine drei Bit breite Leitung 629 an eine Maskenerzeugungslogik 612 aus. Die Maskenerzeugungslogik 612 gibt ein Ausgangssignal über eine sieben Bit breite Leitung 631 an eine Befehlsauswahl-/Reformatierungs-/Verteilungs-Logik 614 aus. Die Maskenerzeugungslogik 612 gibt auch über eine sieben Bit breite Leitung 625 ein Ausgangssignal an Register 616 aus. Die Register 616 geben wiederum über eine sieben Bit breite Leitung 627 ein Ausgangssignal zurück an die Maskenerzeugungslogik 612. Das VLIW-Paket 600 ist über einen Bus 627 mit der Befehlsauswahl-/Reformatierungs-/Verteilungs-Logik 614 verkoppelt. Schließlich wird das Ausgangssignal von der Befehlsauswahl-/Reformatierungs-/Verteilungs-Logik 614 über den Bus 635 an einen Datenweg des VLIW-Prozessors ausgegeben.
  • Im Betrieb gibt die Leitung 615 die drei Bits im ersten Ausgabegruppen-Endemarken-Slot 603 an die MUX Control 610 aus, während die Leitung 617 die drei Bits im zweiten Ausgabegruppen-Endemarken-Slot 605 an die MUX Control 610 ausgibt. Außerdem wird das Verkettungsbit im Slot 607 über die Leitung 619 an die MUX Control 610 ausgegeben. Wie oben angegeben, ist das Begriffs-Blockdiagramm, das in 6 dargestellt ist, auf ein Beispiel gerichtet, wo das Verkettungsbit eine „0" ist. Für den Zweck des vorliegenden Beispiels sind die drei Bits im ersten Ausgabegruppen-Endemarken-Slot 603 „010" (d. h. eine dezimale 2), während die drei Bits im zweiten Ausgabegruppen-Endemarken-Slot 605 „100" sind (d. h. eine dezimale 4), und wie oben angegeben ist das Verkettungsbit im Verkettungsbit-Slot 607 eine „0".
  • Die MUX Control 610 gibt während eines ersten Taktzyklus eine binäre „001" auf einer drei Bit breiten Leitung 633 an den 3-to-1-MUX 608 aus. Ansprechend auf die binäre „001", die sie von der MUX Control 608 empfängt, wählt der 3-to-1-MUX 608 die „erste" Eingabe des 3-to-1-MUX aus, bei der es sich um die Eingabe handelt, die auf der drei Bit breiten Leitung 615 ausgegeben wird. Wie in 6 dargestellt, ist die drei Bit breite Leitung 615 mit dem ersten Ausgabegruppen-Endemarken-Slot 603 verkoppelt und gibt die drei Bits, die im ersten Ausgabegruppen-Endemarken-Slot 603 vorhanden sind, als „erste" Eingabe an den 3-to-1-MUX 608 aus. Somit werden während des ersten Taktzyklus die drei Bits im ersten Ausgabegruppen-Endemarken-Slot 603 vom 3-to-1-MUX 608 ausgewählt und über die drei Bit breite Leitung 629 an die Maskenerzeugungslogik 612 ausgegeben.
  • Die Maskenerzeugungslogik 612 verwendet die drei Bits, die auf der Leitung 629 ausgegeben werden, um eine Maske zu erzeugen, mit der diejenigen Befehle eliminiert werden, die nicht Teil der ersten Ausgabegruppe sind, und um diejenigen Befehle durchzulassen, die Teil der ersten Ausgabegruppe sind. Im vorliegenden Beispiel enthält der erste Ausgabegruppen-Endemarken-Slot Bits „010" (d. h. eine dezimale 2). Wie oben angegeben, werden während des ersten Taktzyklus diese Bits (d. h. Bits „010") über die drei Bit breite Leitung 629 an die Maskenerzeugungslogik 612 durchgelassen. Ansprechend auf die binäre Zahl, die über die drei Bit breite Leitung 629 ausgegeben wird (d. h. „010"), und da im vorliegenden Beispiel die Maskenerzeugungslogik 612 „weiß", dass insgesamt sieben einzelne Befehle im VLIW-Paket 600 vorhanden sind, gibt die Maskenerzeugungslogik 612 eine Siebenbit-Maske „0000011" auf der Leitung 631 an die Befehlsauswahl-/Reformatierungs-/Verteilungs-Logik 614 aus. Die Siebenbit-Maske „0000011" (deren zwei erste Bits beide „1" sind) bewirkt, dass die beiden ersten einzelnen Befehle im VLIW-Paket 600, die den ersten zwei Bits in der Maske entsprechen, über den Bus 635 zu einem Datenweg des VLIW-Prozessors durchgelassen werden. Somit werden im ersten Taktzyklus einzelne Befehle 0 und 1 im VLIW-Paket 600 zu einem Datenweg des VLIW-Prozessors durchgelassen, und somit werden die Befehle 0 und 1 als erste Ausgabegruppe des VLIW-Pakets 600 ausgegeben.
  • Weiter mit der Beschreibung des Beispiels-Konzept-Blockdiagramms in 6 – während eines zweiten Taktzyklus gibt die MUX Control 610 eine binäre „010" auf der drei Bit breiten Leitung 633 an den 3-to-1-MUX 608 aus. Ansprechend auf die binäre „010", die von der MUX Control 610 empfangen wird, wählt der 3-to-1-MUX 608 die „zweite" Eingabe des 3-to-1-MUX, bei der es sich um die Eingabe handelt, die auf der drei Bit breiten Leitung 617 ausgegeben wird, aus. Wie in 6 dargestellt, ist die drei Bit breite Leitung 617 mit einem zweiten Ausgabegruppen-Endemarken-Slot 605 verkoppelt und gibt die drei Bits, die im zweiten Ausgabegruppen-Endemarken-Slot 605 vorhanden sind, als „zweite" Eingabe an den 3-to-1-MUX 608 aus. Somit werden während des zweiten Taktzyklus die drei Bits im zweiten Ausgabegruppen-Ende marken-Slot 605 vom 3-to-1-MUX 608 ausgewählt und über die drei Bit breite Leitung 629 an die Maskenerzeugungslogik 612 ausgegeben.
  • Die Maskenerzeugungslogik 612 verwendet die drei Bits, die auf der Leitung 629 ausgegeben werden, um eine Maske zu erzeugen, um diejenigen Befehle zu eliminieren, die nicht Teil der zweiten Ausgabegruppe sind, und um diejenigen Befehle, die Teil der zweiten Ausgabegruppe sind, durchzulassen. Im vorliegenden Beispiel enthält der zweite Ausgabegruppen-Endemarken-Slot Bits „100" (d. h. eine dezimale 4). Wie oben angegeben, werden während des zweiten Taktzyklus diese Bits (d. h. die Bits „100") über die drei Bit breite Leitung 629 an die Maskenerzeugungslogik 612 weitergegeben. Ansprechend auf die binäre Zahl, die über die drei Bit-Leitung 629 ausgegeben wird (d. h. „100"), und da im vorliegenden Beispiel die Maskenerzeugungslogik 612 „weiß", dass insgesamt sieben einzelne Befehle im VLIW-Paket 600 vorhanden sind, gibt die Maskenerzeugungslogik 612 eine Siebenbit-Maske „0001100" auf der Leitung 631 an die Befehlsauswahl-/Reformatierungs-/Verteilungs-Logik 614 aus. Die Siebenbit-Maske „0001100" (deren dritte und vierte Bits beide „1" sind) bewirkt, dass die einzelnen Befehle 2 und 3 im VLIW-Paket 600, die den dritten und vierten Bits in der Maske entsprechen, über einen Bus 635 zu einem Datenweg des VLIW-Prozessors durchgelassen werden. Somit werden im zweiten Taktzyklus einzelne Befehle 2 und 3 im VLIW-Paket 600 zu einem Datenweg des VLIW-Prozessors durchgelassen, und somit werden Befehle 2 und 3 als zweite Ausgabegruppe des VLIW-Pakets 600 ausgegeben.
  • Weiter mit der Beschreibung des Beispiels-Konzept-Blockdiagramms in 6 – während eines dritten Taktzyklus gibt die MUX Control 610 eine binäre „100" auf der drei Bit breiten Leitung 633 an den 3-to-1-MUX 608 aus. Ansprechend auf die binäre „100", die er von der MUX Control 610 empfängt, wählt der 3-to-1-MUX 608 die „dritte" Eingabe des 3-to-1-MUX aus, welche die Eingabe ist, die auf der drei Bit breiten Leitung 621 ausgegeben wird. Im vorliegenden Beispiel, wo das VLIW-Paket sieben einzelne Befehle aufweist, liefert die drei Bit breite Leitung 621 eine konstante binäre „111" (d. h. eine dezimale 7) als „dritte" Eingabe des 3-to-1-MUX 608 and den 3- to-1-MUX 608. Somit werden während des dritten Taktzyklus die drei Bits „111" über die drei Bits breite Leitung 629 an die Maskenerzeugungslogik 612 ausgegeben.
  • Die Maskenerzeugungslogik 612 verwendet die drei Bits, die auf der Leitung 629 ausgegeben werden, um eine Maske zu erzeugen, um diejenigen Befehle zu eliminieren, die nicht Teil der dritten Ausgabegruppe sind, und um diejenigen Befehle, die Teil der dritten Ausgabegruppe sind, durchzulassen. Wie oben angegeben, werden während des dritten Taktzyklus die drei Bits „111" über die drei Bit breite Leitung 629 an die Maskenerzeugungslogik 612 weitergegeben. Ansprechend auf diese binäre Zahl, die über die drei Bit-Leitung 629 ausgegeben wird (d. h. „111"), und da im vorliegenden Beispiel die Maskenerzeugungslogik 612 „weiß", dass insgesamt sieben einzelne Befehle im VLIW-Paket 600 vorhanden sind, gibt die Maskenerzeugungslogik 612 eine Siebenbit-Maske „1110000" auf der Leitung 631 an die Befehlsauswahl-/Reformatierungs-/Verteiler-Logik 614 aus. Die Siebenbit-Maske „1110000" (deren fünfte, sechste und siebte Bits „1" sind) bewirkt, dass einzelne Befehle 4, 5 und 6 im VLIW-Paket 600, die jeweils fünften, sechsten und siebten Bits in der Maske entsprechen, über einen Bus 635 zu einem Datenweg des VLIW-Prozessors durchgelassen werden. Somit werden im dritten Taktzyklus einzelne Befehle 4, 5 und 6 im VLIW-Paket 600 an einen Datenweg des VLIW-Prozessors weitergegeben, und somit werden die Befehle 4, 5 und 6 als dritte Ausgabegruppe des VLIW-Pakets 600 ausgegeben.
  • Wie oben angegeben, erzeugt die Maskenerzeugungslogik 612 geeignete Masken, die von der Befehlsauswahl-/Reformatierungs-/Verteiler-Logik 614 verwendet werden, um die gewünschten Befehlsausgabegruppen zu erzeugen. Wie ferner oben angegeben wurde, empfängt die Maskenerzeugungslogik 612 während des ersten Taktzyklus die drei Bits „010" über die Leitung 629. Da im vorliegenden Beispiel insgesamt sieben einzelne Befehle im VLIW-Paket vorhanden sind, erzeugt die Maskenerzeugungslogik 612 das Siebenbit-Muster „0000011" während des ersten Taktzyklus. Dieses Siebenbit-Muster wird auf der Leitung 631 und auch auf der Leitung 625 ausgegeben.
  • Die Register 616 speichern das Siebenbitmuster, das von der Maskenerzeugungslogik 612 auf der Leitung 625 ausgegeben wird. Während des zweiten Taktzyklus verwendet die Maskenerzeugungslogik 612 den in den Registern 616 gespeicherten Wert, um zu bestimmen, was der erste Befehl in der zweiten Ausgabegruppe sein sollte. Wie oben erläutert, identifiziert der 3-to-1-MUX 608 für die Maskenerzeugungslogik 612 über die Leitung 629, welcher Befehl im VLIW-Paket 600 der letzte Befehl in der zweiten Ausgabegruppe sein sollte. Jedoch muss auch der erste Befehl in der zweiten Ausgabegruppe der Maskenerzeugungslogik 612 mitgeteilt werden. Dies wird unter Verwendung der Register 616 durchgeführt, um den letzten Befehl in der ersten Ausgabegruppe für die Maskenerzeugungslogik 612 über die Leitung 627 zu identifizieren. Ebenso werden während des dritten Taktzyklus die Register 616 auf ähnliche Weise verwendet, um den letzten Befehl in der zweiten Ausgabegruppe für die Maskenerzeugungslogik 612 zu identifizieren, so dass der erste Befehl in der dritten Ausgabegruppe der Maskenerzeugungslogik 612 bekannt gegeben wird.
  • Wie oben angegeben, wurde im Blockdiagramm von 6 ein Beispiels-VLIW-Paket verwendet, das sieben einzelne Befehle umfasst. Ein allgemeines Blockdiagramm für die Implementierung der Erfindung, wenn eine größere oder kleinere Anzahl an einzelnen Befehlen im VLIW-Paket verwendet wird, ist nicht dargestellt. Ein solches Blockdiagramm ähnelt jedoch dem von 6 und kann von einem Durchschnittsfachmann angesichts des in 6 dargestellten Blockdiagramms und der obigen zugehörigen Erörterung implementiert werden. Außerdem wurde das in 6 dargestellte Konzept-Blockdiagramm auch vereinfacht, um ein Beispiel zu erörtern, wo das Verkettungsbit im VLIW-Paket gleich „0" ist.
  • Die Tatsache, dass die Ausgabegruppierungsinformationen ganz auf das Template im VLIW-Paket beschränkt ist, ermöglicht es dem VLIW-Prozessor, die Ausgabegruppierungsinformationen schnell mit einer einfachen Maske zu extrahieren, statt die Ausgabegruppierungsinformationen in Bits von unterschiedlichen Bitpositionen im VLIW-Paket extrahieren zu müssen. In Designs, wo der VLIW-Prozessor gezwungen ist, die Ausgabegruppierungsinformationen aus verschiedenen Bitpositionen im VLIW- Paket zusammenzusuchen, wird zusätzliche Leistung verbraucht, da lange und kapazitivere Verbindungsleitungen verwendet werden, um auf die verschiedenen Bitpositionen im VLIW-Paket zuzugreifen. Aufgrund der größeren Verbindungskapazitanz kommt es auch zu längeren Verzögerungen bei der Extrahierung von Ausgabegruppierungsinformationen, wenn diese Informationen über das VLIW-Paket verteilt sind, statt auf ein Template-Feld beschränkt zu sein. Somit optimiert die Erfindung die Schnelligkeit und den Leistungsverbrauch im Zusammenhang mit mehreren Hardware-Einheiten des VLIW-Prozessors, wie der Abhol- und Decode-Logik, der Zeitvergabe-Logik und der Datenzuverlässigkeitsprüfungs-Logik.
  • Gemäß der vorliegenden Erfindung kann infolge der Begrenzung der Zahl der Ausgabegruppen in einem VLIW-Paket auf maximal drei jedes VLIW-Paket höchstens drei Taktzyklen brauchen, um ausgeführt zu werden. Gemäß anderen bekannten Designs kann ein VLIW-Paket maximal acht Taktzyklen für seine Ausführung brauchen, da die Zahl der Ausgabegruppen in jedem VLIW-Paket so groß sein kann wie die Zahl der Befehle; und die Zahl der Befehle in einem VLIW-Paket kann immerhin 8 betragen. Dagegen können gemäß der Erfindung eine, zwei oder drei Ausgabegruppen in einem bestimmten VLIW-Paket vorhanden sein. Dies führt zu einer einfacheren Abhol- und Decode-Logik, da die Abhol- und Decode-Logik nicht für Situationen ausgelegt sein muss, wo sich vier, fünf, sechs, sieben oder acht Ausgabegruppen in einem einzigen VLIW-Paket befinden.
  • Da die Zahl der Ausgabegruppen in der vorliegenden Erfindung auf drei begrenzt ist, ist darüber hinaus auch die Logik, die für die Verkettung von Befehlen aus einem ersten VLIW-Paket mit einer Ausgabegruppe in einem zweiten VLIW-Paket verwendet wird, einfacher, da die Verkettung entweder ab dem letzten Befehl in der zweiten Ausgabegruppe des ersten VLIW-Pakets oder ab dem letzten Befehl in der dritten Ausgabegruppe des ersten VLIW-Pakets stattfindet. Jedoch könnte in anderen VLIW-Prozessor-Designs die Verkettung auch ab dem letzten Befehl in der vierten Ausgabegruppe, dem letzten Befehl in der fünften Ausgabegruppe, dem letzten Befehl in der sechsten Ausgabegruppe oder dem letzten Befehl in der siebten Ausgabegruppe stattfinden. Um diesem breiten Bereich der Möglichkeiten gerecht zu werden, sind die Hardware-Einheit für die Datenzuverlässigeitsprüfung und die Hardware für die Weiterleitung von Befehlen an die Ausführungseinheiten in diesen anderen VLIW-Prozessoren komplexer und langsamer und verbrauchen mehr Leistung.
  • Aus der obigen Beschreibung der Erfindung geht hervor, dass verschiedene Verfahren verwendet werden können, um die Idee der vorliegenden Erfindung zu implementieren, ohne von deren Bereich abzuweichen. Außerdem wurde die Erfindung zwar mit besonderem Bezug auf bestimmte Ausführungsformen beschrieben, aber ein Durchschnittsfachmann wird erkennen, dass Änderungen an Form und Einzelheiten vorgenommen werden können, ohne vom Bereich der Erfindung abzuweichen. Die beschriebenen Ausführungsformen sollen in allen Bereichen als erläuternd und nicht als beschränkend angesehen werden. Es sei auch klargestellt, dass die Erfindung nicht auf die hierin beschriebenen speziellen Ausführungsformen beschränkt ist, sondern dass viele Umordnungen, Modifikationen und Ersetzungen an ihr vorgenommen werden können, ohne vom Bereich der Erfindung abzuweichen.
  • Somit wurden eine Vorrichtung und ein Verfahren zur Ausgabegruppierung von Befehlen in einem VLIW-Prozessor beschrieben.
  • Der Prozessor der Erfindung kann so sein, dass die erste Vielzahl von Befehlen gleich sieben ist.
  • Der Prozessor kann so sein, dass das Paket mindestens 128 Bits umfasst und dass jeder aus der ersten Vielzahl von Befehlen mindestens 16 Bits umfasst.
  • Der Prozessor kann so sein, dass jede aus der Vielzahl von Endemarken mindestens drei Bits umfasst.
  • Der Prozessor kann so sein, dass die Vielzahl von Endemarken zwei Endemarken umfasst, wobei die beiden Endemarken jede von der zweiten Vielzahl von Ausgabe gruppen im Paket identifizieren. Jede der beiden Endemarken kann mindestens drei Bis umfassen, und die zweite Vielzahl von Ausgabegruppen kann drei Ausgabegruppen umfassen.
  • Der Prozessor kann so sein, dass die zweite Vielzahl von Ausgabegruppen gleich sieben ist. Der Prozessor kann aufweisen:
    eine erste Vielzahl von Befehlen in einem ersten Befehlspaket des Prozessors;
    eine zweite Vielzahl von Befehlen in einem zweiten Befehlspaket des Prozessors; und
    ein erstes Paket-Template, wobei das erste Paket-Template ein Verkettungsbit einschließt;
    wobei das Verkettungsbit bewirkt, dass eine dritte Vielzahl von Befehlen im ersten Paket und eine vierte Vielzahl von Befehlen im zweiten Paket in eine kombinierte Ausgabegruppe gestellt werden,
    wobei das erste Paket-Template jeden aus der dritten Vielzahl von Befehlen in der kombinierten Ausgabegruppe identifiziert.
  • In diesem Fall ist die erste Vielzahl von Befehlen in die dritte Vielzahl und die fünfte Vielzahl von Befehlen aufgeteilt, wobei die fünfte Vielzahl von Befehlen in eine Vielzahl von ersten Paketausgabegruppen unterteilt ist.
  • Dieser Prozessor kann so sein, dass die Vielzahl der ersten Paketausgabegruppen mindestens drei erste Paketausgabegruppen umfasst.
  • Der Prozessor kann so sein, dass die zweite Vielzahl an Befehlen in die vierte Vielzahl und eine sechste Vielzahl von Befehlen unterteilt ist, wobei die sechste Vielzahl von Befehlen in eine Vielzahl von zweiten Paketausgabegruppen unterteilt ist.
  • In diesem Fall umfasst die Vielzahl von zweiten Paketausgabegruppen mindestens drei zweite Paketausgabegruppen.
  • Dieser Prozessor kann so sein, dass das erste Paket-Template eine Vielzahl von ersten Paketendemarken aufweist, wobei die Vielzahl aus ersten Paketendemarken mindestens drei erste Paketausgabegruppen identifiziert.
  • In diesem Fall umfasst jede der Vielzahl von ersten Paketendemarken mindestens drei Bits, und jede von der Vielzahl von zweiten Paketendemarken umfasst höchstens drei Bits.
  • Dieser Prozessor kann ferner ein zweites Paket-Template umfassen, wobei das zweite Paket-Template eine Vielzahl von zweiten Paketendemarken aufweist, wobei die Vielzahl von Paketendemarken mindestens drei zweite Paketausgabegruppen identifiziert.
  • Dieser Prozessor kann so sein, dass jede der ersten und zweiten Vielzahlen gleich sieben ist.
  • Dieser Prozessor kann auch so sein, dass jedes der ersten und zweiten Pakete mindestens 128 Bits umfasst, und jeder von der ersten Vielzahl von Befehlen und der zweiten Vielzahl von Befehlen mindestens 16 Bits umfasst.
  • Der Prozessor kann umfassen:
    eine erste Vielzahl von Befehlen in einem Befehlspaket des Prozessors;
    ein Template im Paket, wobei das Template eine Vielzahl von Endemarken umfasst; und
    eine Maskenerzeugungslogik, wobei die Maskenerzeugungslogik eine erste Maske während eines ersten Taktzyklus erzeugt, wobei die erste Maske einer ersten von der Vielzahl von Endemarken im Template entspricht; und
    wobei die erste Maske eine zweite Vielzahl von Befehlen im Paket auswählt, wobei die zweite Vielzahl kleiner oder gleich der ersten Vielzahl ist, wobei die zweite Vielzahl von Befehlen zu einer ersten Ausgabegruppe gehört.
  • In diesem Fall erzeugt die Maskenerzeugungslogik eine zweite Maske in einem zweiten Taktzyklus, wobei die zweite Maske einer zweiten von einer Vielzahl von Endemarken im Template entspricht; und
    die zweite Maske eine dritte Vielzahl von Befehlen im Paket auswählt, wobei die dritte Vielzahl kleiner oder gleich der ersten Vielzahl ist, wobei die dritte Vielzahl von Befehlen zu einer zweiten Ausgabegruppe gehört.
  • Vorzugsweise erzeugt die Maskenerzeugungslogik eine dritte Maske in einem dritten Taktzyklus, wobei die dritte Maske einer dritten von der Vielzahl von Endemarken im Template entspricht; und
    die dritte Maske wählt eine vierte Vielzahl von Befehlen im Paket aus, wobei die vierte Vielzahl kleiner oder gleich der ersten Vielzahl ist, wobei die vierte Vielzahl von Befehlen zur dritten Ausgabegruppe gehört.
  • In diesem Fall ist die erste Vielzahl gleich sieben.
  • Dieser Prozessor kann so sein, dass das Paket mindestens 128 Bits umfasst, und jeder von der ersten Vielzahl von Befehlen mindestens 16 Bits umfasst.
  • Dieser Prozessor kann auch so sein, dass jede von der Vielzahl von Endemarken mindestens drei Bits umfasst.
  • Die Erfindung schafft auch ein Verfahren, das die folgenden Schritte umfasst:
    Vorsehen einer Vielzahl von Endemarken in einem Template in einem Paket von Befehlen in einem Prozessor;
    Teilen einer ersten Vielzahl von Befehlen im Paket in mindestens drei Ausgabegruppen, wobei jede der drei Ausgabegruppen durch die Vielzahl von Endemarken identifiziert wird.
  • Die erste Vielzahl von Befehlen kann sieben Befehle umfassen, und die Vielzahl von Endemarken kann zwei Endemarken oder drei Endemarken umfassen.
  • Das Verfahren kann so sein, dass das Paket mindestens 128 Bits umfasst und jeder von der Vielzahl von Befehlen mindestens 16 Bits umfasst.
  • Dieses Verfahren kann auch so sein, dass jede von der Vielzahl von Endemarken mindestens drei Bits umfasst.

Claims (11)

  1. Prozessor, der Folgendes aufweist: eine erste Vielzahl von Befehlen in einem ersten Paket (200, 300, 400, 500, 550, 600) von Befehlen in dem Prozessor; eine Vielzahl von Ausgabegruppen (318, 320, 322) im ersten Paket, gekennzeichnet durch ein erstes Template (202, 302, 402, 502, 552, 602) im ersten Paket, wobei das erste Template eine zweite Vielzahl von Endemarken (224, 226; 324, 326, 412, 414; 514, 516, 562, 564; 603, 605) aufweist, wobei die zweite Vielzahl von Endemarken die erste Vielzahl von Befehlen in höchstens drei Ausgabegruppen teilt, wobei jede der höchstens drei Ausgabegruppen mindestens einen von der ersten Vielzahl von Befehlen aufweist, und wobei die zweite Vielzahl von Endemarken jede der höchstens drei Ausgabegruppen identifiziert.
  2. Prozessor nach Anspruch 1, wobei die zweite Vielzahl von Endemarken zwei Endemarken (224, 226, 324, 326; 412, 414; 514, 516; 562, 564; 603, 605) umfasst.
  3. Prozessor nach Anspruch 1, wobei die zweite Vielzahl von Endemarken drei Endemarken umfasst.
  4. Prozessor nach einem der Ansprüche 1 bis 3, wobei die höchstens drei Ausgabegruppen eine dritte Vielzahl von Ausgabegruppen umfassen, und wobei die zweite Vielzahl von Endemarken jeweils die dritte Vielzahl von Ausgabegruppen identifiziert.
  5. Prozessor nach einem der Ansprüche 1 bis 4, wobei die erste Vielzahl gleich sieben ist.
  6. Prozessor nach einem der Ansprüche 4 und 5, falls jeweils auf Anspruch 2 rückbezogen, wobei die beiden Endemarken jede von der dritten Vielzahl von Ausgabegruppen im Paket identifizieren.
  7. Prozessor nach einem der Ansprüche 1 bis 6, wobei jede von der zweiten Vielzahl von Endemarken mindestens drei Bits umfasst.
  8. Prozessor nach Anspruch 4, der ferner Folgendes aufweist: eine vierte Vielzahl von Befehlen in einem zweiten Paket von Befehlen im Prozessor; und ein Chaining-Bit im ersten Paket-Template; wobei das Chaining-Bit anzeigt, dass eine fünfte Vielzahl von Befehlen im ersten Paket und eine sechste Vielzahl von Befehlen im zweiten Paket in eine kombinierte Ausgabegruppe gestellt werden sollen; wobei das erste Paket-Template jeden von der fünften Vielzahl von Befehlen, die in die kombinierte Ausgabegruppe gestellt werden sollen, identifiziert, und wobei ein zweites Paket-Template jeden von der sechsten Vielzahl von Befehlen im zweiten Paket, die in die kombinierte Ausgabegruppe gestellt werden sollen, identifiziert.
  9. Prozessor nach Anspruch 8, wobei das zweite Paket-Template eine siebte Vielzahl von Endemarken einschließt, die mindestens drei zweite Paketausgabegruppen identifiziert.
  10. Prozessor nach Anspruch 8 oder Anspruch 9, wobei die erste und die vierte Vielzahl jeweils gleich sieben sind.
  11. Prozessor nach einem der Ansprüche 8 bis 16, wobei die ersten und zweiten Pakete jeweils mindestens 128 Bits umfassen und die erste Vielzahl von Befehlen und die vierte Vielzahl von Befehlen jeweils mindestens 16 Bits umfassen.
DE60132585T 2000-06-16 2001-04-23 Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor Expired - Lifetime DE60132585T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US595791 2000-06-16
US09/595,791 US6415376B1 (en) 2000-06-16 2000-06-16 Apparatus and method for issue grouping of instructions in a VLIW processor
PCT/US2001/012964 WO2001098894A1 (en) 2000-06-16 2001-04-23 Apparatus and method for issue grouping of instructions in a vliw processor

Publications (2)

Publication Number Publication Date
DE60132585D1 DE60132585D1 (de) 2008-03-13
DE60132585T2 true DE60132585T2 (de) 2009-01-29

Family

ID=24384688

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60132585T Expired - Lifetime DE60132585T2 (de) 2000-06-16 2001-04-23 Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor

Country Status (4)

Country Link
US (2) US6415376B1 (de)
EP (1) EP1297417B1 (de)
DE (1) DE60132585T2 (de)
WO (1) WO2001098894A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
US6895494B1 (en) * 2000-06-26 2005-05-17 Texas Instruments Incorporated Sub-pipelined and pipelined execution in a VLIW
US7139897B2 (en) * 2002-04-01 2006-11-21 Hewlett-Packard Development Company, L.P. Computer instruction dispatch
EP1367484B1 (de) * 2002-05-31 2013-07-24 STMicroelectronics Limited Instruktionssteuerung
EP1367485B1 (de) * 2002-05-31 2012-10-31 STMicroelectronics Limited Pipeline-Verarbeitung
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
ITMI20022003A1 (it) * 2002-09-20 2004-03-21 Atmel Corp Apparecchio e metodo per la decompressione dinamica di programmi.
JP2004334429A (ja) * 2003-05-06 2004-11-25 Hitachi Ltd 論理回路及びその論理回路上で実行するプログラム
US7389375B2 (en) * 2004-07-30 2008-06-17 International Business Machines Corporation System, method and storage medium for a multi-mode memory buffer device
US7296129B2 (en) 2004-07-30 2007-11-13 International Business Machines Corporation System, method and storage medium for providing a serialized memory interface with a bus repeater
US7512762B2 (en) * 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7305574B2 (en) * 2004-10-29 2007-12-04 International Business Machines Corporation System, method and storage medium for bus calibration in a memory subsystem
US7356737B2 (en) * 2004-10-29 2008-04-08 International Business Machines Corporation System, method and storage medium for testing a memory module
US7331010B2 (en) * 2004-10-29 2008-02-12 International Business Machines Corporation System, method and storage medium for providing fault detection and correction in a memory subsystem
US20060095620A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation System, method and storage medium for merging bus data in a memory subsystem
US7441060B2 (en) * 2004-10-29 2008-10-21 International Business Machines Corporation System, method and storage medium for providing a service interface to a memory system
US7277988B2 (en) * 2004-10-29 2007-10-02 International Business Machines Corporation System, method and storage medium for providing data caching and data compression in a memory subsystem
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7673119B2 (en) * 2005-05-13 2010-03-02 Texas Instruments Incorporated VLIW optional fetch packet header extends instruction set space
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7478259B2 (en) * 2005-10-31 2009-01-13 International Business Machines Corporation System, method and storage medium for deriving clocks in a memory system
US7685392B2 (en) * 2005-11-28 2010-03-23 International Business Machines Corporation Providing indeterminate read data latency in a memory system
US7640386B2 (en) * 2006-05-24 2009-12-29 International Business Machines Corporation Systems and methods for providing memory modules with multiple hub devices
US7493439B2 (en) * 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US7669086B2 (en) 2006-08-02 2010-02-23 International Business Machines Corporation Systems and methods for providing collision detection in a memory system
US7870459B2 (en) * 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
US7454597B2 (en) * 2007-01-02 2008-11-18 International Business Machines Corporation Computer processing system employing an instruction schedule cache
US7721140B2 (en) 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US8458443B2 (en) 2008-09-08 2013-06-04 Smsc Holdings S.A.R.L. VLIW processor with execution units executing instructions from instruction queues and accessing data queues to read and write operands
US11928470B1 (en) * 2022-04-20 2024-03-12 Verisilicon Holdings Co., Ltd. Advancing a program counter to a start of a subsequent cache line based on a straddling group indicator in a current cache line

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
US5649135A (en) 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5852727A (en) 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US5922065A (en) 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor

Also Published As

Publication number Publication date
EP1297417B1 (de) 2008-01-23
WO2001098894A1 (en) 2001-12-27
EP1297417A1 (de) 2003-04-02
US6684320B2 (en) 2004-01-27
DE60132585D1 (de) 2008-03-13
US20020144088A1 (en) 2002-10-03
EP1297417A4 (de) 2005-08-24
US6415376B1 (en) 2002-07-02

Similar Documents

Publication Publication Date Title
DE60132585T2 (de) Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor
DE2912287C3 (de) Datenverarbeitungsanlage
DE1928202B2 (de) Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen
DE1499722B1 (de) Einrichtung zur modifizierung von informationswoertern
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
EP0010186B1 (de) Vorrichtung zum Bearbeiten bezeichneter Hinweise
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
DE2718110A1 (de) Datenverarbeitungseinheit
DE1197650B (de) Parallel-Addierer
DE2556617A1 (de) Datenverarbeiter zum rotierbaren verschieben von bits eines datenwortes
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE3043100A1 (de) Datenprozessor mit datenkorrekturfunktion
DE3507584C2 (de)
DE2940653A1 (de) Programmierbare logische anordnung
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE1499191B2 (de) Elektronische einrichtung fuer eine datenverarbeitungsanlage
DE2245284A1 (de) Datenverarbeitungsanlage
DE2725614A1 (de) Datenverarbeitungsanlage mit einer anordnung fuer einen schnellen und normalen befehlsaufruf
DE3121046A1 (de) Arithmetik-logikeinheit mit bit-manipulation
CH632349A5 (de) Einrichtung zur mikrobefehlssteuerung.
DE3000012A1 (de) Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage
DE102013114508B4 (de) Blockbasierte Signalverarbeitung
WO2006058358A2 (de) Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition