DE69835425T2 - Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur - Google Patents

Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur Download PDF

Info

Publication number
DE69835425T2
DE69835425T2 DE69835425T DE69835425T DE69835425T2 DE 69835425 T2 DE69835425 T2 DE 69835425T2 DE 69835425 T DE69835425 T DE 69835425T DE 69835425 T DE69835425 T DE 69835425T DE 69835425 T2 DE69835425 T2 DE 69835425T2
Authority
DE
Germany
Prior art keywords
fields
functional units
vliw processor
unit
vliw
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 - Fee Related
Application number
DE69835425T
Other languages
English (en)
Other versions
DE69835425D1 (de
Inventor
Krishna Vijay MEHRA
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69835425D1 publication Critical patent/DE69835425D1/de
Application granted granted Critical
Publication of DE69835425T2 publication Critical patent/DE69835425T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3885Concurrent instruction execution, e.g. pipeline, 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/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, 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
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Description

  • FELD DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf die Architektur von Prozessoren für sehr lange Befehlswörter (Very Long Instruction Words; VLIW) und insbesondere auf ein Gerät, um Befehle für VLIW-Prozessoren zu entsenden.
  • HINTERGRUND DER ERFINDUNG
  • Sprunghaft steigende Ansprüche an eine erhöhte Computerverarbeitungsleistung haben zur Einführung höchst paralleler Computerarchitekturen geführt, bei denen mehrere Operationen gleichzeitig ausgeführt werden. Dafür konzipiert, die höheren Programmsprachen inhärente feinkörnige Parallelität auszunutzen, umfasst ein VLIW-Prozessor mehrere parallele Funktionseinheiten, die durch ein sehr langes Befehlswort (d.h. 100 oder mehr Bits) auf einer Zyklus-für-Zyklus-Basis gesteuert werden. Sehr lange Befehlswörter haben eine Verkettung von Feldern oder Ausgabeschlitzen (engl. issue slots), die jeweils unabhängig voneinander die Operation einer Funktionseinheit spezifizieren. VLIW-Prozessoren werden in einer Vielzahl von Anwendungen eingesetzt, unter anderem in Supercomputern und Großrechnern, Workstations und Personal Computern, sowie spezielle Prozessoren in Audio- und Video-Unterhaltungselektronikprodukten.
  • 1 veranschaulicht einen herkömmlichen VLIW-Prozessor 100. Bei jedem Maschinenzyklus werden sehr lange Befehlswörter aus einem Befehlsspeicher 110 in ein Befehlsausgaberegister 120 geladen oder „ausgegeben". Üblicherweise wird ein Befehlsspeicher 110, der ein Direktzugriffsspeicher (RAM) oder ein Festwertspeicher (ROM) sein kann, fließbandverarbeitet und durch einen Befehlscache (nicht gezeigt) ergänzt, um den Ausführungsdurchsatz zu erhöhen. Jedes in das Befehlsausgaberegister 120 geladene Befehlswort enthält eine Anzahl von Ausgabeschlitzen 121127, wobei jeder Ausgabeschlitz 121127 eine entsprechende Funktionseinheit 131137 im VLIW-Prozessor 100 steuert. Im Allgemeinen kann ein VLIW-Prozessor jede nützliche Kombination aus Funktionseinheiten umfassen, und 1 veranschaulicht eine derartige Kombination. Je nach der speziellen Implementierung kann es mehr oder weniger Funktionseinheiten geben, und es können Funktionseinheiten unterschiedlicher Art vorhanden sein. Funktionseinheiten können eine Vielzahl von Operationen ausführen, die durch einen Operationscode (Opcode) ausgewählt werden; beispielsweise kann eine arithmetisch-logische Funktionseinheit zwei Werte addieren und subtrahieren.
  • Jeder Ausgabeschlitz 121127 innerhalb eines in das Befehlsausgaberegister 120 geladenen Befehlsworts spezifiziert eine Operation, die im aktuellen Taktzyklus für die entsprechende Funktionseinheit 131137 zu starten ist. Insbesondere enthält jeder Ausgabeschlitz 121127 üblicherweise einen Opcode und Operanden für die entsprechende Funktionseinheit 131137. Der Opcode ist nützlich für Funktionseinheiten, die eine Vielzahl unterschiedlicher Operationen ausführen. Operanden für die Funktionseinheiten 131137 werden aus einer gemeinsamen Registerdatei 140 mit mehreren Anschlüssen gelesen, und Ergebnisse von der Funktionseinheit 131137 werden in die Registerdatei 140 geschrieben. Der hierin verwendete Ausdruck „Spezifizierung einer Operation" bezieht sich auf eine Kombination eines Opcodes, soweit erforderlich, und Operanden, soweit erforderlich, die verwendet werden, um eine Operation einer Funktionseinheit zu spezifizieren. Somit enthält jeder Ausgabeschlitz 121127 eine Spezifizierung einer von einer entsprechenden Funktionseinheit 131137 auszuführenden Operation.
  • Bezug nehmend auf 2 enthält ein Ausgabeschlitz 121 eine Spezifizierung der Operation 210 der Konstantenerzeugungseinheit 131, nämlich einen konstanten Wert CONSTANT und ein Register RD, um den konstanten Wert aufzunehmen. Die Spezifizierung der in entsprechenden Ausgabeschlitzen 122 und 123 enthaltenen Operation 220 arithmetisch-logischer Einheiten (ALU) 132 und 133 enthält einen ALU-Opcode, zwei Quellenregister RA und RB sowie ein Zielregister RD für die jeweilige Operation. Typische ALU-Opcodes geben Operationen wie Addition, Subtraktion, Negation, Logisch Und, Logisch Oder, Logisch Ausschließlich oder Logische Komplementbildung und dergleichen an. Ausgabeschlitz 124 enthält eine Spezifizierung 240 mit einem MUL-Opcode für Multiplikation, Division oder Quadratwurzel, Quellenregister RA und RB sowie ein Zielregister RD für die Multiplizierereinheit 134. Ausgabeschlitz 125 beinhaltet eine Spezifizierung 250 mit einem FPU-Opcode (z.B. Addition, Subtraktion und Vergleich), Quellenregister RA und RB sowie ein Zielregister RD für die Gleitkommaeinheit 135. Eine Datenspeichereinheit 136 wird durch Ausgabeschlitz 126 gesteuert, der eine Spezifizierung 260 mit einem MEM-Opcode, welcher eine Lade- oder Speicheroperation angibt, Adressenregister RA und RB sowie ein Datenregister RD enthält. Die Sprungsteuereinheit 137 mit Bezug auf die Spezifizierung 270 im entsprechenden Ausgabeschlitz 127 verwendet Register RA und RB, um einen Bedingungswert und eine Sprungzieladresse innerhalb eines Befehlsspeichers 110 anzugeben; die Spezifizierung 270 enthält ferner einen JPM-Opcode, der spezifiziert, ob immer zu springen ist (unbedingter Sprung), ob zu springen ist, wenn das Bedingungswertregister wahr ist, ob zu springen ist, wenn das Bedingungswertregister unwahr ist, oder ob überhaupt nicht zu springen ist (NOP). Die Inhalte der Ausgabeschlitze 121127, die Operation der Funktionseinheiten 131137 und das Format der Spezifizierungen 210270 sind als beispielhaft zu betrachten und können an jede brauchbare Konfiguration angepasst werden.
  • Damit ein Softwareprogramm auf einem VLIW-Rechner läuft, muss eine „feinkörnige parallele" oder „befehlsebenenparallele" Übersetzung gefunden werden. Dies wird durch einen Kompilierer erreicht, der eine konventionelle höhere Programmiersprache, wie beispielsweise ANSI-C, in VLIW-Befehle übersetzt. Solche Kompilierer werden in John R. Ellis, BULLDOG: A Compiler for VLIW Achitectures, MIT Press 1985, ISBN 0-262-05034-X, beschrieben. Funktionseinheiten in herkömmlichen VLIW-Prozessoren werden durch genau einen Ausgabeschlitz im Befehlswort gesteuert. Der in 1 dargestellte VLIW-Prozessor 100 enthält beispielsweise sieben Ausgabeschlitze 121127, die den jeweiligen sieben Funktionseinheiten 131137 entsprechen. Somit geben Kompilierer für herkömmliche VLIW-Prozessoren Befehle aus, in denen eine Funktionseinheit durch Werte in einem Signalausgabeschlitz gesteuert wird.
  • Hochleistungsprozessoren, einschließlich VLIW-Prozessoren, unterliegen dem durch die Befehlsspeicherlatenz verursachten so genannten „branch delay" (Verzweigungsverzögerung)-Problem, welches die Zeit in Rechnerzyklen zwischen der Übertragung einer Befehlsadresse an einen Befehlsspeicher und dem Empfang des entsprechenden Befehlswortes zur Ausführung ist. Während einer sequentiellen Ausführung kann die Adresse des nächsten Befehls vorausgesagt werden, so dass der Befehlsspeicher für eine wirksame Befehlsspeicherlatenz von einem Rechnerzyklus fließbandverarbeitet werden kann. Bei bedingten Sprüngen kann die Adresse des nächsten Befehls jedoch nicht vorausgesagt werden, weil die Zieladresse vom Ergebnis der Bewertung eines bedingten Ausdrucks abhängt. Demzufolge stellt die Verzweigungsverzögerung eine Anzahl von Rechnerzyklen dar, in denen das Befehlswort an der Zieladresse aufgrund der Bewertung des bedingten Ausdrucks und der Befehlsspeicherlatenz nicht verfügbar ist. Da Funktionseinheiten immer schneller werden, beispielsweise durch aggressive Fließbandverarbeitung, nimmt diese La tenz zu. In einer extrem schnellen Fließbandarchitektur ist es sehr unerwünscht, am Ziel des Sprungbefehls auf das aus dem Befehlsspeicher abzurufende Befehlswort zu warten, bevor die Ausführung der Befehle fortgesetzt wird.
  • Eine Lösung für das Problem der Verzweigungsverzögerung wurde von P. Y-T. Hsu, „Highly Concurrent Scalar Processing", Thesis, University of Illinois at Urbana-Champaign, 1986, vorgeschlagen, bei der während der Verzweigungsverzögerungsperiode weiterhin Befehle für alle möglichen Problempfade parallel ausgegeben werden, soweit dies die begrenzte Anzahl von Funktionseinheiten zulässt. Jede Operation wird jedoch durch einen booleschen Ausdruck „überwacht", so dass nur diejenigen Operationen ausgeführt werden dürfen, die den booleschen Ausdruck oder „Schutzwert" (engl. guard value) erfüllen. Diese Schutzwerte werden vom Kompilierer auf eine solche Weise konstruiert, dass sichergestellt ist, dass nur die Operationen auf dem vorgesehenen Programmpfad ausgeführt werden.
  • Ein Nachteil bei aktuellen VLIW-Prozessoren wird deutlich, wenn zwei oder mehr der parallelen Programmpfade in der Verzweigungsverzögerungsperiode Operationen enthalten, die zu derselben Funktionseinheit gehören, wie beispielsweise eine Gleitkommaeinheit 135. Da jede Funktionseinheit durch genau einen Ausgabeschlitz im Befehlswort gesteuert wird, müssen Operationen für dieselbe Funktionseinheit entlang unterschiedlicher Programmpfade in separaten Befehlen ausgegeben werden. Beispielsweise können beide Programmpfade eines numerischen Analyseprogramms nach einer bedingten Verzweigung Gleitkommaoperationen anwenden. Bei einem VLIW-Prozessor mit einer Gleitkommaeinheit 135 kann in jedem Befehl nur eine Gleitkommaoperation ausgegeben werden. Daher müssen die Gleitkommaoperationen entlang eines Pfades, beispielsweise des Pfades „Bedingung wahr, in anderen Befehlen ausgegeben werden als die Gleitkommaoperationen entlang des anderen Pfades, beispielsweise des Pfades „Bedingung unwahr". Folglich müssen zusätzliche Befehle vom Kompilierer festgelegt werden, wodurch die Codegröße gesteigert und die Ausführungszeiten verkürzt werden.
  • Wie in 1 veranschaulicht besteht ein herkömmlicher Ansatz zur Verringerung dieses Nachteils darin, eine weitere Implementierung derselben Funktionseinheit zu schaffen. Beispielsweise enthält der konventionelle VLIW-Prozessor 100 zwei arithmetisch-logische Einheiten 132 und 133. Obwohl eine zweite arithmetisch-logische Einheit nicht unerschwinglich teuer sein muss, ist es aufwändig, eine zweite Gleitkommaeinheit erneut auf einer monolithischen Halbleiteranordnung zu implementieren, was den Platzbe darf und die Leistung betrifft. Andere komplexe Funktionseinheiten wie Multiplizierer, Schiebelogikschaltung und sogar Datenspeichereinheiten sind ebenfalls teuer zu duplizieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Dementsprechend besteht ein Bedarf an einem Befehlzuteilungsverfahren und einem Mechanismus, der entlang entsprechender Programmpfade in einem einzelnen Befehl eine Vielzahl von Operationen für eine Funktionseinheit ausgeben kann. Ferner besteht ein Bedarf an einem kostengünstigen Verfahren und Mechanismus, um in einem einzelnen Befehl zwei oder mehr Operationen für eine gemeinsame Funktionseinheit auszugeben.
  • Diese und andere Anforderungen werden von der vorliegenden Erfindung nach Anspruch 1 erfüllt, bei der eine aus der Vielzahl überwachter Operationen, die in einem einzelnen Befehlswort spezifiziert werden, basierend auf Schutzwerten, die mit den Operationen zusammenhängen, einer gemeinsamen Funktionseinheit zugeleitet wird. Folglich können Kompilierer Befehle ausgeben, bei denen mehr als ein Ausgabeschlitz eine gemeinsame Funktionseinheit bedingt steuert. Tatsächlich kann ein Befehlswort eine größere Anzahl von Ausgabeschlitzen haben als Funktionseinheiten vorhanden sind.
  • Ein Aspekt der vorliegenden Erfindung ist ein VLIW-Prozessor zum Ausführen einer Sequenz sehr langer Befehlswörter, die mehrere parallel auszuführende Operationen spezifizieren. Der VLIW-Prozessor umfasst mehrere Funktionseinheiten, um mindestens einige der durch ein sehr langes Befehlswort spezifizierten Operationen auszuführen. Ein Befehlsregister speichert das sehr lange Befehlswort, das mehrere Felder hat, wobei jedes Feld Folgendes enthält: einen Identifizierer zum Auswählen einer der Funktionseinheiten, eine Spezifizierung einer durch die gewählte Funktionseinheit auszuführenden Operation, und einen Schutzwert, um anzugeben, ob die Operation zu unterbinden ist oder nicht. Eine Leitschaltung leitet die Spezifizierung der auszuführenden Operation gemäß dem zugehörigen Schutzwert von dem Befehlsregister an die ausgewählte Funktionseinheit, z.B. nur, wenn der Schutzwert angibt, dass die Operation nicht unterbunden wird.
  • Ein weiterer Aspekt der vorliegenden Erfindung ist ein VLIW-Prozessor zum Ausführen einer Sequenz sehr langer Befehlswörter, die mehrere parallel auszuführende Operationen spezifizieren. Der VLIW-Prozessor umfasst mehrere Funktionseinheiten, um die Operationen parallel auszuführen, sowie ein Befehlsregister, um das sehr lange Befehlswort zu speichern. Das sehr lange Befehlswort hat mehrere Felder, deren Anzahl grö ßer ist als die Anzahl der Funktionseinheiten. Eine Leitschaltung leitet Inhalte eines der Felder im Befehl vom Befehlsregister zu den zugehörigen Funktionseinheiten. Beispielsweise kann jedes Feld eine Spezifizierung einer von einer zugehörigen Funktionseinheit auszuführenden Operation sowie einen Schutzwert enthalten, der angibt, ob die Operation und das Steuern der Leitschaltung zu unterbinden ist oder nicht.
  • Noch ein weiterer Aspekt der vorliegenden Erfindung ist ein Verfahren zum Zuteilen von Befehlen in einem VLIW-Prozessor, das den Schritt des Ausgebens eines sehr langen Befehlsworts mit mehreren Feldern umfasst. Jedes Feld enthält einen Identifzierer, um eine von mehreren Funktionseinheiten auszuwählen, eine Spezifizierung einer durch die ausgewählte Funktionseinheit auszuführenden Operation und einen Schutzwert, um anzugeben, ob die Operation zu unterbinden ist oder nicht. Basierend auf den Schutzwerten werden die Spezifizierungen innerhalb der Felder den zugehörigen Funktionseinheiten zugeführt und die durch die gelenkte Spezifizierung spezifizierte Operation ausgeführt.
  • Noch ein weiterer Aspekt der vorliegenden Erfindung ist ein Verfahren zum Zuteilen von Befehlen in einem VLIW-Prozessor, das den Schritt des Ausgebens eines sehr langen Befehlsworts mit mehreren Feldern umfasst. Die Inhalte der Felder werden den zugehörigen Funktionseinheiten zugeführt, deren Anzahl geringer als die Anzahl der Felder in dem sehr langen Befehlswort ist, und die durch den gelenkten Inhalt spezifizierte Operation wird ausgeführt. Jedes Feld kann eine Spezifizierung einer Operation enthalten, die von einer zugehörigen Funktionseinheit unter den mehreren Funktionseinheiten auszuführen ist, sowie einen Schutzwert, um anzugeben, ob die Operation und das Steuern, wie die Feldinhalte zu lenken sind, zu unterbinden sind oder nicht.
  • Aus der folgenden detaillierten Beschreibung werden leicht noch weitere Aufgaben und Vorteile der vorliegenden Erfindung offensichtlich werden, indem einfach die beste in Betracht kommende Weise zum Ausführen der Erfindung veranschaulicht wird. Wie man feststellen wird, kann die Erfindung andere und unterschiedliche Ausführungsformen haben, und ihre verschiedenen Details können in verschiedener, nahe liegender Hinsicht modifiziert werden, ohne insgesamt von der Erfindung abzuweichen. Dementsprechend sind die Zeichnung und Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • KURZE BESCHREIBUNG DER ZEICHUNGEN
  • Die vorliegende Erfindung wird in den Figuren der begleitenden Zeichnun gen anhand von Beispielen und nicht in einschränkender Weise veranschaulicht, wobei sich gleiche Bezugszeichen auf gleiche Teile beziehen. Es zeigen:
  • 1 einen herkömmlichen VLIW-Prozessor;
  • 2 Formate herkömmlicher VLIW-Ausgabeschlitze;
  • 3 einen VLIW-Prozessor gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 Formate von VLIW-Ausgabeschlitzen gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5 einen VLIW-Prozessor gemäß einer anderen Ausführungsform der vorliegenden Erfindung;
  • 6 Formate von VLIW-Ausgabeschlitzen gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Beschrieben werden ein verbessertes Zuteilungsverfahren und ein verbesserter Zuteilungsmechanismus für VLIW-Befehle. In der folgenden Beschreibung werden zum Zwecke der Erläuterung zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis für die vorliegende Erfindung zu schaffen. Für den Fachkundigen wird es jedoch offensichtlich sein, dass die vorliegende Erfindung auch ohne diese Details genutzt werden kann. In anderen Fällen werden bekannte Strukturen und Vorrichtungen in Form eines Blockdiagramms gezeigt, um eine unnötige Verundeutlichung der vorliegenden Erfindung zu vermeiden.
  • Die vorliegende Erfindung behandelt und löst Probleme in Verbindung mit einer unflexiblen Operationsplanung während der Verzweigungsverzögerung in herkömmlichen VLIW-Prozessoren, indem die Eingänge basierend auf den Schutzwerten von mehr als einem Ausgabeschlitz zu Funktionseinheiten multiplexiert werden. Die Schutzwerte geben separate Programmpfade nach einer Verzweigungsbedingung an. Da jeder Ausgabeschlitz einen Schutzwert enthält, werden Operationen in Ausgabeschlitzen nach einer Verzweigungsbedingung mit einem Programmpfad verknüpft. Wenn die Schutzwerte von zwei Ausgabeschlitzen in einem einzelnen Befehlswort für eine gemeinsame Funktionseinheit sich gegenseitig ausschließende Programmpfade angeben, dann stehen die beiden Ausgabeschlitze nicht in Konkurrenz zueinander, weil einer der Ausgabeschlitze durch seinen Schutzwert blockiert wird, während der andere nicht durch seinen Schutzwert blockiert wird. Folglich können Befehle ausgegeben werden, die die gemeinsame Funktionseinheit in zwei oder mehr Ausgabeschlitzen entlang sich gegenseitig ausschließender Programmpfade steuern. Dieser Ansatz ist wirtschaftlich, weil ein zusätzlicher Multiplexer üblicherweise viel günstiger zu implementieren ist als eine zweite Funktionseinheit, wie beispielsweise eine Datenspeichereinheit, eine Gleitkommaeinheit, ein Multiplizierer und eine Schiebelogikschaltung.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung werden bestimmten Funktionseinheiten zusätzliche Ausgabeschlitze zugeteilt. Somit enthält ein Befehlsausgaberegister mehr Ausgabeschlitze als Funktionseinheiten vorhanden sind. Bezug nehmend auf 3 wird ein VLIW-Prozessor 300 dargestellt, bei dem die Ausgabeschlitze 321327 hinsichtlich ihrer Lage entsprechenden Funktionseinheiten 331337 zugeordnet werden, d.h. bestimmte Positionen innerhalb des Befehlsausgaberegisters 320 sind bestimmten Funktionseinheiten zugeordnet. In 3 sind sieben Funktionseinheiten 331337 dargestellt, nämlich eine Konstantenerzeugungseinheit 331, eine erste arithmetischlogische Einheit 332, eine zweite arithmetisch-logische Einheit 333, ein Multiplizierer 335, eine Gleitkommaeinheit 335, eine Datenspeichereinheit 336 und eine Verzweigungssteuerungseinheit 337, die jeweils den oben beschriebenen Funktionseinheiten 131137 entsprechen.
  • Jeder dieser sieben Funktionseinheiten 131137 sind neun Ausgabeschlitze 321327 zugeordnet, wobei eine Gleitkommaeinheit 335 zwei Ausgabeschlitzen 325a und 325b zugeordnet ist und eine Datenspeichereinheit 336 zwei Ausgabeschlitzen 326a und 326b zugeordnet ist. Bezug nehmend auf 4 enthalten die Ausgabeschlitze 321327 Operationspakete 410470, die einen Schutzwert G und eine Spezifizierung der Operation enthalten (z.B. einen Opcode und Operanden, soweit erforderlich). Der Schutzwert G gibt an, auf welchem Programmpfad die Operation auszuführen ist. Eine Implementierung von Schutzwerten wird in der gemeinsam zugewiesenen US-amerikanischen Patentschrift 5.450.556, ausgegeben am 12. September 1995 an Slavenburg et. al, beschrieben, worin der Schutzwert einen Pfadausdruck spezifiziert, der mit Pfadinformationen übereinstimmt, die von der Verzweigungssteuerungseinheit 137 erzeugt werden. Wenn die Verzweigungssteuerungseinheit 137 beispielsweise 3-Wege-Verzweigungen implementiert, dann lässt sich ein Programmpfad in einem Schutzwert durch zwei Bits ausdrücken. Schutzwerte können auch bedingte Programmpfade aufgrund einer nachfolgenden Verzweigung in der Verzweigungsverzögerungsperiode durch Verkettung ausdrücken. Die Spezifizierung der Operation innerhalb von Operationspaketen 410470 enthält ähnliche Unterfelder, wie beispielsweise Opcodes und Operanden, wie oben unter Bezugnahme auf die Spezifizierungen 210270 in 2 beschrieben. Die Inhalte dieser Ausgabeschlitze 321327, die Operation der Funktionseinheiten 331337 und das Format der Spezifizierungen in Operationspaketen 410470 sind als beispielhaft zu betrachten und können an jede nützliche Konfiguration angepasst werden.
  • Der Multiplexer 355 hat Eingänge, die an den Ausgabeschlitzen 325a und 325b mit dem Befehlsregister 320 gekoppelt sind. Der Ausgang des Multiplexers 355 ist mit der Gleitkommaeinheit 335 gekoppelt. Somit leitet der Multiplexer 355 einen Opcode und Operanden von einem der Ausgabeschlitze 325a und 325b an die Gleitkommaeinheit 335 weiter. Ähnlich hat ein Multiplexer 356 Eingänge, die an den Ausgabeschlitzen 326a und 326b mit dem Befehlsregister 320 gekoppelt sind, und der Ausgang des Multiplexers 356 ist mit der Datenspeichereinheit 336 gekoppelt. Dadurch leitet der Multiplexer 356 einen Opcode und Operanden von einem der Ausgabeschlitze 326a und 326b zur Datenspeichereinheit 336.
  • Beide Multiplexer 355 und 356 werden durch Schutzwerte geschaltet, die von den zugehörigen Ausgabeschlitzen 325a/325b bzw. 326a/326b abgeleitet werden, so dass der Opcode und Operanden für den nicht blockierten Ausgabeschlitz an die zugehörige Funktionseinheit weitergeleitet werden. Gemäß einer Implementierung werden die Schutzwerte mit dem aktuellen, von der Verzweigungssteuerungseinheit 337 aufrechterhaltenen Programmpfad verglichen. Beispielsweise enthält der Ausgabeschlitz 325a einen Schutzwert „1", der eine wahre Bedingung in einem Verzweigungspfad angibt, während der Ausgabeschlitz 325b einen Schutzwert „0" enthält, der eine unwahre Bedingung in einem Verzweigungspfad angibt. Wenn also der Verzweigungspfad mit der wahren Bedingung gewählt wird, dann wird der aktuelle Programmpfad zu einer „1" und der Multiplexer 355 wählt den Opcode und Operanden von dem Ausgabeschlitz, der einen mit dem aktuellen Programmpfad übereinstimmenden Schutzwert hat, nämlich Ausgabeschlitz 325a. Wenn andererseits der Verzweigungspfad mit der unwahren Bedingung gewählt wird, dann wird der aktuelle Programmpfad zu einer „0" und der Multiplexer 355 wählt den Opcode und Operanden vom anderen Ausgabeschlitz 325b. Folglich kann ein Befehl vom Befehlsspeicher 310 in das Befehlsausgaberegister 320 so ausgegeben werden, dass eine gemeinsame Funktionseinheit, wie beispielsweise eine Gleitkommaeinheit 335, entlang jedes Verzweigungspfades gesteuert werden kann. In diesem Fall kann ein Kompilierer Befehle mit Aus gabeschlitzen ausgeben, die eine gemeinsame Funktionseinheit insofern steuern, als sich die Schutzwerte für die Ausgabeschlitze gegenseitig ausschließen.
  • Während der Operation wird ein sehr langes Befehlswort aus dem Befehlsspeicher 310 abgerufen, der ein mit einem RAM oder ROM gekoppelter, fließbandverarbeiteter Zwischenspeicher (Cache) sein kann, und im Befehlsausgaberegister 320 gespeichert. Das Befehlsausgaberegister 320 enthält eine Vielzahl von Feldern für die Ausgabeschlitze 321327, die einer Funktionseinheit 331337 entsprechen. Einige der Ausgabeschlitze, z.B. die Ausgabeschlitze 325a und 325b, entsprechen einer gemeinsamen Funktionseinheit, z.B. der Gleitkommaeinheit 335, in welchem Fall ein Multiplexer 355 dafür konfiguriert ist, die Spezifizierung einer von der Gleitkommaeinheit 335 auszuführenden Operation von einem der Ausgabeschlitze 325a und 325b zu leiten. Der Multiplexer 355 ist außerdem dafür konfiguriert, basierend auf den jeweiligen darin gespeicherten Schutzwerten einen Opcode und Operanden von einem der Ausgabeschlitze 325a und 325b auszuwählen. Als ein weiteres Beispiel entsprechen die Ausgabeschlitze 325a und 325b der Datenspeichereinheit 336, und der Multiplexer 356 ist dafür konfiguriert, die Spezifizierung einer von der Datenspeichereinheit 336 auszuführenden Operation von einem der Ausgabeschlitze 326a und 326b zu leiten. Der Multiplexer 356 ist außerdem dafür konfiguriert, basierend auf den jeweiligen darin gespeicherten Schutzwerten einen Opcode und Operanden von einem der Ausgabeschlitze 326a und 326b auszuwählen. Folglich kann ein einzelnes während der Verzweigungsverzögerung ausgeführtes Befehlswort eine gewählte Funktionseinheit, z.B. die Gleitkommaeinheit 335 und die Datenspeichereinheit 336, entlang jedes sich gegenseitig ausschließenden Programmpfads wirksam nutzen. Wenn die Funktionseinheiten während eines Rechnerzyklus betätigt werden, werden Daten aus der Registerdatei 340 abgerufen, und die Ergebnisse werden basierend auf Operanden, die von den Ausgabeschlitzen 321327 des Befehlsausgaberegisters 320 zu den entsprechenden Funktionseinheiten 331337 geleitet werden, zurück in die Registerdatei 340 geschrieben.
  • Wie zuvor hierin beschrieben, erweitert die in 4 veranschaulichte Ausführungsform der vorliegenden Erfindung die Größe des Befehlsworts, um zusätzliche Ausgabeschlitze für gewünschte Funktionseinheiten zuzuweisen. In einigen Implementierungsumgebungen unterliegt diese Ausführungsform der vorliegenden Erfindung jedoch einigen Nachteilen. Bei einer sequentiellen Operation beispielsweise wird nur einer der Ausgabeschlitze für eine gegebene Funktionseinheit benutzt, wodurch die Bandbreitenanforderungen steigen, um den VLIW-Prozessor auf oder nahe der Maximalleistung zu hal ten. Darüber hinaus steigert die erhöhte Größe des Befehlsworts die Kosten für Befehlsspeicher, Zwischenspeicher (Caches) und Busse. Schließlich ist der kompilierte Code für ein VLIW-kompiliertes Programm größer, was das Preis/Leistungs-Verhältnis des Programms insgesamt reduziert.
  • Ein Ansatz, diese Schwierigkeiten anzugehen, beschrieben in der gemeinsam zugewiesenen US-amerikanischen Patentschrift 5.862.399, besteht darin, einen Funktionseinheitidentifizierer in jedem Ausgabeschlitz zuzuordnen. Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung, veranschaulicht in 5, verwendet ein VLIW-Prozessor 500 Befehlswörter mit nur drei Ausgabeschlitzen 521523 im Befehlsausgaberegister 520, wobei jeder Ausgabeschlitz 521523. Der VLIW-Prozessor 500 enthält eine Leitschaltung mit Multiplexern 551557, die an jedem Ausgabeschlitz 521523 mit dem Befehlsausgaberegister 520 gekoppelt sind und darin enthaltene Operanden zur identifizierten Funktionseinheit 531537 liefern. Sieben derartige Funktionseinheiten 531537 sind in 5 dargestellt: eine Konstantenerzeugungseinheit 531, eine erste arithmetischlogische Einheit 532, eine zweite arithmetisch-logische Einheit 533, ein Multiplizierer 535, eine Gleitkommaeinheit 535, eine Datenspeichereinheit 536 und eine Verzweigungssteuerungseinheit 537, die den jeweiligen zuvor hierin beschriebenen Funktionseinheiten 131137 entsprechen.
  • Bezug nehmend auf 6 enthalten die Ausgabeschlitze 521523 Operationspakete 610670, die einen Schutzwert G, einen Funktionseinheitenidentifizierer FU und eine Spezifizierung der Operation (z.B. einen Opcode und Operanden, soweit erforderlich) enthalten. Wie oben ausführlicher beschrieben gibt der Schutzwert G an, auf welchem Programmpfad die Operation auszuführen ist. Ein Funktionseinheitenidentifizierer FU kann ein ganzzahliger oder anderer skalarer Wert sein, beispielsweise eine 3-Bit-Zahl von 0–7, wobei ein Wert von „1" die Konstantenerzeugungseinheit 531 aus 5 angibt. Die Spezifizierung der Operation innerhalb der Operationspakete 610670 enthält ähnliche Unterfelder, wie beispielsweise Opcodes und Operanden wie oben unter Bezugnahme auf die Spezifizierungen 210270 in 2 beschrieben. Die Inhalte dieser Ausgabeschlitze 521523, die Operation der Funktionseinheiten 531537 und das Format der Spezifizierungen in den Operationspaketen 610670 sind als beispielhaft zu betrachten und können an jede nützliche Konfiguration angepasst werden.
  • Basierend auf den darin enthaltenen Schutzwerten und Funktionseinheitenidentifizierern wählt jeder Multiplexer 531337 einen der Ausgabeschlitze 521323 und gibt die Inhalte eines ausgewählten Ausgabeschlitzes 521523 an eine entsprechende Funktionseinheit 531537 aus. Der Multiplexer 551 ist beispielsweise der Konstantenerzeugungseinheit 531 zugeordnet und gibt dorthin einen ausgewählten Ausgabeschlitz 521523 aus. Genauer gesagt wählen die Multiplexer 551557 die Inhalte von nur denjenigen Ausgabeschlitzen 521523 aus, die einen Funktionseinheitenidentifizierer der zugehörigen Funktionseinheit 531537 enthalten. Darüber hinaus wählen die Multiplexer 551557 im Gegensatz zu der in der US-amerikanischen Patentschrift 5.862.399 beschriebenen Anordnung die Inhalte von nur denjenigen Ausgabeschlitze 521523 aus, die einen Schutzwert enthalten, der angibt, dass der aktuelle Programmpfad nicht blockiert ist. Die Multiplexer 551557 können als zwei in Reihe geschaltete Multiplexer ausgeführt sein: der erste Multiplexer wählt unter den Ausgabeschlitzen, die mit der Funktionseinheit übereinstimmen, basierend auf einem Vergleich der Funktionseinheitenidentifizierer FU, und der zweite Multiplexer wählt unter den verbleibenden Ausgaben, die mit dem aktuellen Programmpfad übereinstimmen, basierend auf einem Vergleich der Schutzwerte G.
  • Der Multiplexer 551 ist beispielsweise dafür konfiguriert, unter allen drei Ausgabeschlitzen 521523 für ein Operationspaket auszuwählen, das für die Konstantenerzeugungseinheit 531 bestimmt ist. Genauer gesagt trifft der Multiplexer 551 die Auswahl unter den Ausgabeschlitzen 521523 basierend darauf, ob die Ausgabeschlitze 521523 einen Funktionseinheitenidentifizierer haben, der die Konstantenerzeugungseinheit 531 identifiziert. In dem Beispiel werden nur diejenigen Ausgabeschlitze 521523 ausgewählt, in denen der darin enthaltene Funktionseinheitenidentifizierer FU1, FU2 bzw. FU3 eine „1" ist, weil die Konstantenerzeugungseinheit 531 durch die Ziffer „1" identifiziert ist. Außerdem trifft der Multiplexer 551 eine Auswahl unter den Ausgabeschlitzen 521523 basierend darauf, ob der Schutzwert angibt, dass der aktuelle Programmpfad nicht blockiert ist. Gemäß einer Implementierung werden die Schutzwerte mit dem von der Verzweigungssteuerungseinheit 537 aufrechterhaltenen aktuellen Programmpfad verglichen. Der Ausgabeschlitz 521 enthält beispielsweise einen Schutzwert G1 von " 1 ", der eine unwahre Bedingung in einem Verzweigungspfad angibt, sowie einen Funktionseinheitenidentifizierer FU1 von „1", um die Konstantenerzeugungseinheit 531 anzugeben. Der Ausgabeschlitz 522 hat einen Schutzwert G2 von „0", der eine unwahre Bedingung in einem Verzweigungspfad angibt, sowie einen Funktionseinheitenidentifizierer FU2 von „1", und der Ausgabeschlitz 523 hat einen Schutzwert G3 von „1" und einen Funktionseinheitenidentifizierer FU3 von „ 2". Beim Multiplexer 551 wird der Ausgabeschlitz 523 nicht ausgewählt, weil sein Funk tionseinheitenidentifizierer FU3 von „ 2" nicht mit dem der entsprechenden Funktionseinheit 531 zugeordneten Identifizierer „1" übereinstimmt. Wenn der Verzweigungspfad mit der wahren Bedingung gewählt wird, dann wird der aktuelle Programmpfad zu einer „1" und der Multiplexer 551 wählt den Opcode und Operanden vom verbleibenden Ausgabeschlitz, der einen mit dem aktuellen Programmpfad übereinstimmenden Schutzwert hat, nämlich Ausgabeschlitz 521. Wenn andererseits der Verzweigungspfad mit der unwahren Bedingung gewählt wird, dann wird der aktuelle Programmpfad zu einer „0" und der Multiplexer 551 wählt den Opcode und Operanden vom anderen Ausgabeschlitz 552.
  • Damit also ein Ausgabeschlitz 521523 von einem Multiplexer 551557 ausgewählt wird, muss sowohl der Funktionseinheitenidentifizierer mit der zum Multiplexer 551557 gehörenden Funktionseinheit 531537 übereinstimmen als auch der Schutzwert angeben, dass der aktuelle Programmpfad nicht blockiert ist. Zwei oder mehr Ausgabeschlitze 521523 können Funktionseinheitenidentifizierer für dieselbe Funktionseinheit 531537 enthalten, wenn ihr jeweiliger Schutzwert sich gegenseitig ausschließende Programmpfade angibt. Beispielsweise können beide Ausgabeschlitze 521 und 522 einen Funktionseinheitenidentifizierer für die Konstantenerzeugungseinheit 531, jedoch Schutzwerte für unterschiedliche und sich gegenseitig ausschließende Programmpfade enthalten. Somit kann die Konstantenerzeugungseinheit 531 durch einen einzelnen geschützten Befehl betrieben werden, ungeachtet dessen, welcher Programmpfad momentan ausgeführt wird.
  • Während der Operation wird ein sehr langes Befehlswort aus dem Befehlsspeicher 510 abgerufen, der ein mit einem RAM oder ROM gekoppelter, fließbandverarbeiteter Zwischenspeicher (fache) sein kann, und im Befehlsausgaberegister 520 gespeichert. Das Befehlsausgaberegister 320 enthält eine Vielzahl von Feldern für Ausgabeschlitze 521523, wobei jedes Feld einen Funktionseinheitenidentifizierer und einen Schutzwert enthält. Mit jedem Ausgabeschlitz 521523 des Befehlsausgaberegisters 320 sind Multiplexer 551557 verbunden, die jeweils einer entsprechenden Funktionseinheit 531537 zugeordnet und mit dieser gekoppelt sind. Die Multiplexer 551557 wählen die Inhalte von einem der Ausgabeschlitze 521523, wenn der Funktionseinheitenidentifizierer für den Ausgabeschlitz 521523 die jeweilige Funktionseinheit 531537 identifiziert und der Schutzwert nicht blockiert ist. Folglich kann ein einzelnes, während der Verzweigungsverzögerung ausgeführtes Befehlswort eine gewählte Funktionseinheit, z.B. die Konstantenerzeugungseinheit 531, entlang jedes sich gegenseitig ausschließendes Programmpfads wirksam nutzen. Wenn die Funktionseinheiten während eines Rechnerzyklus betätigt werden, werden Daten aus der Registerdatei 340 abgerufen, und die Ergebnisse werden basierend auf Operanden, die von den Ausgabeschlitzen 521523 des Befehlsausgaberegisters 520 zu den entsprechenden Funktionseinheiten 531537 geleitet werden, zurück in die Registerdatei 540 geschrieben.
  • Obwohl diese Erfindung in Verbindung mit dem beschrieben wurde, was derzeit als die praktischsten und bevorzugten Ausführungsformen betrachtet wird, versteht es sich, dass sich die Erfindung nicht auf die dargelegten Ausführungsformen beschränkt, sondern im Gegenteil verschiedene Abwandlungen und äquivalente Anordnungen abdecken soll, die im Rahmen der angehängten Ansprüche liegen.

Claims (10)

  1. Very Long Instruction Word (VLIW)-Prozessor (300, 500) zum Ausführen einer Abfolge sehr langer Befehlswörter, die eine Vielzahl parallel auszuführender Operationen spezifizieren, wobei der genannte VLIW-Prozessor (300, 500) Folgendes umfasst: eine Vielzahl von Funktionseinheiten (531537), um mindestens einige der genannten Vielzahl von Operationen, die durch ein sehr langes Befehlswort spezifiziert werden, parallel auszuführen; ein Befehlsregister (520), um das sehr lange Befehlswort zu speichern, wobei das genannte sehr lange Befehlswort eine Vielzahl von Feldern (521523) hat, und jedes Feld Folgendes enthält: eine Spezifizierung einer Operation, die von einer der genannten Funktionseinheiten auszuführen ist, und einen Schutzwert („Guard Value"), um anzugeben, ob die genannte Operation zu unterbinden ist oder nicht; und eine Leitschaltung (551557), die mit der genannten Vielzahl von Funktionseinheiten (531537) und dem genannten Befehlsregister (520) gekoppelt ist, um die Spezifizierung der Operation von entsprechenden Feldern an entsprechende Funktionseinheiten zu liefern, dadurch gekennzeichnet, dass die Leitschaltung dafür eingerichtet ist, aus mindestens zwei der Felder, die für die genannte erste der Funktionseinheiten vorgesehen sind, das entsprechende Feld auszuwählen, von dem die Spezifizierung an eine erste der Funktionseinheiten geliefert wird, wobei die Leitschaltung die Auswahl unter den mindestens zwei Feldern basierend auf den genannten Schutzwerten in den mindestens zwei Feldern trifft.
  2. VLIW-Prozessor nach Anspruch 1, wobei die Leitschaltung (551557) dafür konfiguriert ist, die Spezifizierung der von der genannten ersten der Funktionseinheiten auszuführenden Operation aus dem genannten Befehlsregister (520) nur dann an die genannte erste der Funktionseinheiten zu liefern, wenn der genannte Schutzwert angibt, dass die Operation nicht unterbunden wird.
  3. VLIW-Prozessor nach Anspruch 2, programmiert mit einem einen Befehl enthaltenden Programm, wobei: ein einzelnes Feld von den genannten mindestens zwei aus der genannten Vielzahl von Feldern einen Schutzwert hat, der angibt, die genannte Operation nicht zu unterbinden; und jedes der verbleibenden Felder von den genannten mindestens zwei aus der genannten Vielzahl von Feldern einen Schutzwert hat, der angibt, die genannte Operation zu unterbinden.
  4. VLIW-Prozessor nach Anspruch 1, wobei die mindestens zwei Felder jeweils einen Identifizierer enthalten, um eine aus der genannten Vielzahl von Funktionseinheiten auszuwählen, wobei die Leitschaltung dafür eingerichtet ist, unter den mindestens zwei Feldern auszuwählen, wenn die in diesen Feldern enthaltenen Identifizierer jeweils die erste der Funktionseinheiten spezifizieren.
  5. VLIW-Prozessor nach Anspruch 4, wobei die genannte Leitschaltung (551557) einen mit der genannten ersten der Funktionseinheiten und dem genannten Befehlsregister (520) gekoppelten Multiplexer beinhaltet, um in einem aus der genannten Vielzahl von Feldern die Spezifizierung einer auszuführenden Operation auszuwählen, wenn der Identifizierer die genannte ausgewählte Funktionseinheit angibt.
  6. VLIW-Prozessor nach Anspruch 5, wobei der genannte Multiplexer entsprechend der Schutzwerte der Felder geschaltet wird und der Identifizierer die genannte ausgewählte Funktionseinheit angibt.
  7. VLIW-Prozessor nach Anspruch 1, wobei die Anzahl der Felder größer als die Anzahl der Funktionseinheiten ist, jedes Feld mindestens einer Funktionseinheit zugehörig ist, die mindestens zwei Felder beide zu der ersten der Funktionseinheiten gehören, die Leitschaltung dafür eingerichtet ist, die Spezifizierung von jedem einzelnen Feld nur, wenn überhaupt, an die zu dem betreffenden Feld gehörende Funktionseinheit zu liefern.
  8. VLIW-Prozessor nach Anspruch 7, wobei die genannte Leitschaltung (551557) einen mit der genannten ersten der Funktionseinheiten und vorgegebenen Teilen des genannten Befehlsregisters (520), das mindestens zwei der Felder enthält, gekoppelten Multiplexer beinhaltet, um die Spezifizierung einer auszuführenden Operation aus einem der mindestens zwei der Felder auszuwählen.
  9. VLIW-Prozessor nach Anspruch 8, wobei der genannte Multiplexer entsprechend der Schutzwerte der Felder geschaltet wird.
  10. VLIW-Prozessor nach Anspruch 1, wobei die genannte erste der Funktionseinheiten eine Datenspeicherfunktionseinheit (536) umfasst.
DE69835425T 1997-12-29 1998-10-01 Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur Expired - Fee Related DE69835425T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/998,486 US5974537A (en) 1997-12-29 1997-12-29 Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US998486 1997-12-29
PCT/IB1998/001521 WO1999034282A1 (en) 1997-12-29 1998-10-01 Improved instruction dispatch mechanism for a guarded vliw architecture

Publications (2)

Publication Number Publication Date
DE69835425D1 DE69835425D1 (de) 2006-09-14
DE69835425T2 true DE69835425T2 (de) 2007-03-08

Family

ID=25545265

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69835425T Expired - Fee Related DE69835425T2 (de) 1997-12-29 1998-10-01 Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur

Country Status (7)

Country Link
US (1) US5974537A (de)
EP (1) EP0976032B1 (de)
JP (1) JP3829166B2 (de)
KR (1) KR100606397B1 (de)
DE (1) DE69835425T2 (de)
TW (1) TW405094B (de)
WO (1) WO1999034282A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
EP1050809A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics SA Befehlsabhängigkeit in einem Rechner
EP1050810A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics SA Rechnersystem mit mehreren funktionellen Einheiten
US20040158695A1 (en) * 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
US7007156B2 (en) * 2000-12-28 2006-02-28 Intel Corporation Multiple coprocessor architecture to process a plurality of subtasks in parallel
US7093107B2 (en) * 2000-12-29 2006-08-15 Stmicroelectronics, Inc. Bypass circuitry for use in a pipelined processor
JP2002318687A (ja) * 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
US6886091B1 (en) * 2001-06-29 2005-04-26 Koninklijke Philips Electronics N.V. Replacing VLIW operation with equivalent operation requiring fewer issue slots
AU2002348842A1 (en) * 2001-11-26 2003-06-10 Koninklijke Philips Electronics N.V. Wlim architecture with power down instruction
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US7287151B2 (en) * 2002-03-28 2007-10-23 Nxp B.V. Communication path to each part of distributed register file from functional units in addition to partial communication network
AU2003253159A1 (en) * 2002-09-24 2004-04-19 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
AU2003283686A1 (en) * 2002-12-12 2004-06-30 Koninklijke Philips Electronics N.V. Modular integration of an array processor within a system on chip
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US7937572B2 (en) * 2004-05-13 2011-05-03 Silicon Hive B.V. Run-time selection of feed-back connections in a multiple-instruction word processor
JP2006012185A (ja) * 2005-08-02 2006-01-12 Matsushita Electric Ind Co Ltd プロセッサ
US7523434B1 (en) * 2005-09-23 2009-04-21 Xilinx, Inc. Interfacing with a dynamically configurable arithmetic unit
US20070073999A1 (en) * 2005-09-28 2007-03-29 Verheyen Henry T Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
US7822948B2 (en) * 2008-01-03 2010-10-26 International Business Machines Corporation Apparatus, system, and method for discontiguous multiple issue of instructions
KR101645001B1 (ko) * 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69325785T2 (de) * 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
EP0652510B1 (de) * 1993-11-05 2000-01-26 Intergraph Corporation 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
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register

Also Published As

Publication number Publication date
WO1999034282A1 (en) 1999-07-08
KR100606397B1 (ko) 2006-07-28
JP3829166B2 (ja) 2006-10-04
US5974537A (en) 1999-10-26
JP2001515628A (ja) 2001-09-18
DE69835425D1 (de) 2006-09-14
EP0976032B1 (de) 2006-08-02
KR20000075837A (ko) 2000-12-26
TW405094B (en) 2000-09-11
EP0976032A1 (de) 2000-02-02

Similar Documents

Publication Publication Date Title
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE69838966T2 (de) Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE2542751C2 (de) Datenverarbeitungsanlage
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE102011081585B4 (de) Prozessorarchitektur mit erhöhter Effizienz
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE112004001040B4 (de) Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE3307194C2 (de)
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee