DE4217012A1 - Mit einer vielzahl von befehlsstroemen und statischer verschachtelung arbeitender mikroprozessor - Google Patents

Mit einer vielzahl von befehlsstroemen und statischer verschachtelung arbeitender mikroprozessor

Info

Publication number
DE4217012A1
DE4217012A1 DE4217012A DE4217012A DE4217012A1 DE 4217012 A1 DE4217012 A1 DE 4217012A1 DE 4217012 A DE4217012 A DE 4217012A DE 4217012 A DE4217012 A DE 4217012A DE 4217012 A1 DE4217012 A1 DE 4217012A1
Authority
DE
Germany
Prior art keywords
instruction
command
horizontal
stream
streams
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.)
Granted
Application number
DE4217012A
Other languages
English (en)
Other versions
DE4217012C2 (de
Inventor
Jin-Chin Chung
Chuan-Lin Wu
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.)
Transpacific IP Ltd
Original Assignee
Industrial Technology Research Institute ITRI
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 Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Publication of DE4217012A1 publication Critical patent/DE4217012A1/de
Application granted granted Critical
Publication of DE4217012C2 publication Critical patent/DE4217012C2/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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Die vorliegende Erfindung betrifft ein Prozessorsystem, bei dem Mehr­ fachverarbeitungstechniken auf Funktionseinheitsniveau Anwendung finden. Genauer gesagt bezieht sich die vorliegende Erfindung auf eine Bauart eines Mikroprozessors auf der Basis eines sehr langen Befehlswortes (VLIW), bei der gleichzeitig eine Vielzahl von Befehlsströmen (instructions threads) ausgeführt werden kann. Eine statische Verschachtelungstechnik wird benutzt, um der Vielzahl der Befehlsströme Hardware-Ressourcen zuzuordnen. Insbesondere ist jede Funktionseinheit im Prozessor so zugeordnet, daß sie einen Befehl eines speziellen Befehlsstromes in einem festen vorgegebenen Zeit-Slot in einem festen vorgegebenen Wiederholungsmuster von Zeit-Slots ausführen kann. Diese Hardware-Ressourcenzuordnung wird einem Post-Pass-Parallelcompiler ausgesetzt. Der Post-Pass-Parallelcompiler optimiert jeden Strom der Befehlsausführungssequenz und berücksichtigt sowohl Datenabhängigkeiten in den Befehlen als auch die Zuordnung der Hardware-Ressourcen.
Das Betriebsverhalten von Mikroprozessoren wurde durch Herabsetzung der Befehlsausführungszeit und durch die gleichzeitige Ausführung von mehr als einem Befehl pro Zyklus, wie dies viele RISC-Superscaler­ Mikroprozessoren von heute durchführen, beträchtlich verbessert. Die handelsüblichen Mikroprozessoren von heute haben bereits einen guten Anteil des durch Supercomputer-Systeme gebotenen Betriebsniveaus erreicht. Darüber hinaus wird die Mikroprozessortechnologie durch den in der nahen Zukunft erwarteten signifikanten Anstieg in der Takt-Rate und der Tor-Zahlen zu einem äußerst geeigneten Werkzeug zum Erhalten von zusätzlicher Superrechenkraft in einer kostenwirksamen Art und Weise.
Durch die bei den momentanen Superscaler-Mikroprozessoren, beispielsweise dem i860 und dem MC88100, verwendete einstromige Pipeline-Befehlsausgabetechnik wird jedoch die Rechenleistung nicht mehr signifikant erhöht. Der Grad an Parallelität, der in einem einzigen Befehlsstrom vorhanden ist, wird durch die Daten- und Steuerabhängigkeiten unter den Befehlen begrenzt. Diese Abhängigkeiten verlangsamen die Befehlsausgabegeschwindigkeit und führen zu einer schlechten Ausnutzung der Funktionseinheiten im Prozessor. Während sich eine Funktionseinheit im Betrieb befindet, können andere außer Betrieb sein und auf die Ergebnisse der im Betrieb befindlichen Einheit warten.
Eine Art und Weise zur Verbesserung der Ausnutzung der Funktionseinheiten besteht darin, eine Vielzahl von unterschiedlichen Befehlsströmen zu verschachteln. Bei diesem Versuch wird eine Vielzahl von Befehlsströmen gleichzeitig ausgeführt.
Ein Befehlsstrom (instruction thread) kann als Satz von Befehlen definiert werden, die in einem speziellen Zusammenhang stehen. Beispielsweise ist ein Befehlsstrom unabhängig von anderen Befehlsströmen. Die Ströme können aus einem einzigen Programm erzeugt werden, das einen ausreichenden Parallelismus besitzt, oder von unterschiedlichen Programmen. Die Daten- und Steuerabhängigkeiten zwischen den Befehlen in einem einzigen Strom verhindern die gleichzeitige Ausgabe von Befehlen an sämtliche Funktionseinheiten. Die Befehle von unterschiedlichen Strömen sind jedoch unabhängig voneinander und können gleichzeitig an eine Vielzahl von Funktionseinheiten abgegeben werden.
Bei einer auf einer Vielzahl von Befehlsströmen basierenden Mikroprozessorbauart sind mehrere Texte so durch die Hardware gestützt, daß mehrere Befehlsströme gleichzeitig ohne eine Kontext-Umschaltung ausgeführt werden können. Da kein Kontext-Switch-Overhead unter den Strömen, die zur gleichen Zeit ausgeführt werden, existiert, kann sowohl ein Intra-thread- als auch ein Inter-thread-Befehlslevelparallelismus ausgenutzt werden, um die Ausführungsgeschwindigkeit und den Prozessordurchsatz zu verbessern.
Viele Multi-thread-Bauarten sind vorgeschlagen worden, um ein besseres Betriebsverhalten und eine bessere Ausnutzung der Ressourcen in einem Einchip-Mikroprozessor zu erreichen. In der Veröffentlichung von R. G. Prasadh und C. L. Wu "A Benchmark Evaluation of a Multi-threaded RISC Processor Architecture", Proc. of the International Conference on Parallel Processing, 1991 wird eine Superscaler-Bauart auf der Basis eines VLIW-Modells vorgeschlagen, um das Betriebsverhalten einer Multi-thread-Bauart zu nutzen. Es wird eine dynamische Verschachtelungs­ technik vorgeschlagen, um das Ressourcenkonkurrenzproblem zu lösen. In der Veröffentlichung von G. E. Daddis, Jr. und H. C. Tong "The Concurrent Execution of Multiple Instruction Streams on Superscaler Processors", Proc. of the International Conference on Parallel Processing, 1991 ist ein System offenbart, bei dem eine gleichzeige Verarbeitung von zwei Befehlsströmen auf einem Superscaler-Prozessor durchgeführt wird und ein Befehlsüberwachungs-Stack verwendet wird, um Befehle zur Laufzeit zusammenzustellen. Eine dynamische Registerzuord­ nungstechnik findet Anwendung, um sowohl den Intra-thread- als auch den Inter-thread-Befehlsniveauparallelismus auszunutzen.
Bei diesen Systemen des Standes der Technik werden dynamische Verschachtelungs- und Zuordnungstechniken angewendet, um das Problem der Konkurrenz der Ressourcen unter den Befehlsströmen zu lösen.
Die dynamische Verschachtelungstechnik wird nunmehr in Einzelheiten erläutert. Fig. 1 zeigt schematisch einen Mikroprozessor 10, der unter Anwendung der dynamischen Verschachtelungstechnik gleichzeitig mehrere Befehlsströme ausführt.
Der Prozessor 10 umfaßt eine Vielzahl von Funktionseinheiten 14. Diese Funktionseinheiten sind mit FU-1, FU-2, . . ., FU-N bezeichnet.
Beispielsweise sind acht solche Funktionseinheiten vorgesehen. Diese umfassen eine Eingabe/Speichereinheit, die Speicherlese- und Schreibvorgänge durchführt, eine Ganzzahleinheit, die Datenbewegungs- und Ganzzahladditions- und Subtraktionsvorgänge durchführt, eine Logikeinheit, die für bit-Feld-Vorgänge verantwortlich ist, eine Ganzzahl/Gleitpunktumwandlungseinheit, um Datentypumwandlungen durchzuführen, eine Gleitpunktaddiereinheit, eine Gleitpunktmultipliziereinheit, eine Gleitpunktdividiereinheit und eine Zweigeinheit. Sämtliche Einheiten sind in der Pipelinetechnik ausgebildet und in der Lage, in jedem Zyklus einen neuen Befehl zu empfangen. Beispielsweise handelt es sich in Fig. 1 bei der Einheit FU-1 um eine Eingabe/Speichereinheit, die Zugriff auf einen Datenpufferspeicher (nicht gezeigt) hat. Die Funktionseinheiten 14 sind über ein Verbindungsnetzwerk 16 mit der Registerdatei 18 verbunden. Jeder vom Prozessor 10 ausgeführte Befehlsstrom besitzt eine private Registerbank in der Registerdatei 18. Der Prozessor 10 führt T Befehlsströme mit den Bezeichnungen 1, 2, . . ., T aus. Somit umfaßt die Registerdatei 18 T Registerbänke, und zwar eine für jeden Befehlsstrom.
Beispielsweise umfaßt jede Registerbank zweiunddreißig 32-bit-Ganzzahlregister und sechzehn 64-bit-Gleitpunktregister. Die Ganzzahl-, Logik-, Eingabe/Speicher- und Zweigeinheiten haben nur auf die Ganzzahlregister Zugriff, während die Gleitpunkteinheiten auf die Benutzung der Gleitpunktregister beschränkt sind. Nur die Ganzzahl/Gleitpunktumformungseinheit hat Zugriff auf die Register eines jeden Typs. Sämtliche Datenübertragungen zwischen den Ganzzahl- und Gleitpunktregistern werden von der Ganzzahl/Gleitpunktumformungseinheit durchgeführt.
Bei dem vom Prozessor 10 der Fig. 1 benutzten Befehlssatz handelt es sich um einen Untersatz des RISC-Befehlssatzes, der für den Distributed Instruction Set Computer entwickelt wurde (siehe L. Wang und C. L. Wu "Distributed Instruction Set Computer Architecture", IEEE Trans. on Computer, 1991; und L. Wang "Distributed Instruction Set Computer", Ph. D. Dissertation, Univ. Texas, Austin, Dez. 1989 (diese Veröffentlichungen werden hiermit durch Bezugnahme eingearbeitet)). Der Befehlssatz besteht aus 49 Maschinenbefehlen, die orthogonal in drei Formaten definiert sind: 3-operand, 2-operand und 1-operand. Beispielsweise besitzen die Maschinenbefehle eine Länge von 32 bits.
Der Prozessor 10 der Fig. 1 betätigt einen Compiler. Der Compiler umfaßt zwei Teile. Sein Vorderende transformiert ein hochpegliges Programm, das beispielsweise in C-Sprache geschrieben ist, auf eine Sequenz von Maschinenbefehlen, die aus dem Befehlssatz genommen sind, der vorstehend beschrieben wurde. Das hintere Ende des Compilers überführt den sequentiellen Code in Horizontalbefehlsworte (HIWs). Ein Horizonalbefehlswort umfaßt eine Vielzahl von Sektionen oder Feldern, wobei jedes Feld einer entsprechenden Funktionseinheit entspricht und in der Lage ist, einen Maschinenbefehl zu enthalten, der durch diese spezielle Funktionseinheit ausgeführt werden soll. Jeder Befehlsstrom, der vom Prozessor 10 der Fig. 1 ausgeführt werden soll, besteht aus diesen Horizontalbefehlsworten. Der Compiler erzeugt die Horizontal­ befehlsworte, indem er Maschinenbefehle kombiniert, zwischen denen keine Datenabhängigkeiten existieren. Somit umfaßt ein Horizontalbefehlswort datenunabhängige Befehle, die im gleichen Taktzyklus ausgegeben werden können. Wenn kein Befehl für eine spezielle Funktionseinheit in einem Horizontalbefehlswort vorhanden ist, fügt der Compiler einen NOOP(keine Betätigung)-Befehl in die geeignete Sektion des Horizontalbefehlswortes ein.
Bei dem Prozessor 10 der Figur werden die Horizontalbefehlsworte eines jedes Befehlsstromes in einem individuellen Befehlspufferspeicher 20 gespeichert. Jeder Befehlspufferspeicher 20 enthält die Horizontalbefehlsworte eines Befehlsstromes, wie sie vom Compiler in der vorstehend beschriebenen Weise compiliert wurden.
Der Prozessor 10 der Fig. 1 umfaßt ferner Befehlsholeinheiten 24, die Befehle von den entsprechenden Befehlspufferspeichern unter der Steuerung der dynamischen Verschachtelungseinheit 26 holen.
Jeder Befehl passiert drei Hauptpipelinestufen:
  • 1. eine Befehlsholstufe, in der ein Befehl aus seinem Pufferspeicher geholt wird,
  • 2. eine Befehlsverschachtelungs/Dekodierstufe, in der ein Befehl, wenn möglich, mit anderen Befehlen von anderen Strömen durch die dynamische Verschachtelungseinheit 26 verschachtelt wird, durch eine Dekodiereinheit 27 dekodiert wird und an die geeignete Funktionseinheit 14 ausgegeben wird, und
  • 3. eine Ausführungsstufe, in der der Befehl durch eine Funktionseinheit ausgeführt wird, wobei die Ergebnisse in die Registerdatei 18 zurückge­ schrieben werden. Der Compiler vermeidet Konkurrenzen zwischen Funktionseinheiten über eine gerechte Codezuordnung.
Bei der dynamischen Verschachtelung wählt die dynamische Verschachte­ lungseinheit einen Strom nach einem Prioritätsschema, beispielsweise einem Round-Robin-Schema, aus. Die dynamische Verschachtelungseinheit prüft das nächste Horizontalbefehlswort dieses Stromes und ersetzt, wenn möglich, jeden der NOOP-Befehle (eingeführt vom Compiler) durch einen entsprechenden Non-NOOP-Befehl von einem anderen Befehlsstrom. Die einzelnen Befehle des neu zusammengestellten Horizontalbefehlswortes werden nunmehr an die geeigneten Dekodierer 27 gegeben. Der Befehls­ dekodierer an jeder Funktionseinheit identifiziert den Befehlsstrom, zu dem sein Befehl gehört, und erzeugt die geeigneten Steuersignale.
Die Fig. 2A, 2B, 2C und 2D zeigen ein Ausführungsbeispiel einer dynamischen Verschachtelung (dynamic interleaving). Wie in Fig. 2A gezeigt, sind gemäß diesem Beispiel vier Funktionseinheiten vorgesehen: FU-1, bei der es sich um eine Ganzzahladdier/Subtrahiereinheit handelt, FU-2, die eine Logikeinheit ist, FU-3, bei der es sich um eine Gleitpunkt/Ganzzahlumwandlungseinheit handelt, und FU-4, die eine Gleitpunktaddier/Subtrahiereinheit ist. Es sind ferner drei Befehlsströme mit den Bezeichnungen 1, 2 und 3 vorgesehen, die in entsprechenden Befehlspuffern oder Pufferspeichern vorgesehen sind. Wie in Fig. 2A gezeigt, enthält jeder Befehlspuffer zwei Horizontalbefehls­ worte und jedes Horizontalbefehlswort eine einer Funktionseinheit entsprechende Sektion.
Die in den Befehlspuffern gezeigten Befehle werden durch den Compiler statisch geordnet. Das Beispiel setzt eine Round-Robin-Strategie bei der Auswahl der Befehlsströme zum Verschachteln voraus und geht davon aus, daß jeder Befehlsstrom seinen eigenen Registersatz besitzt. Wie in Fig. 2B gezeigt, werden bei CK = 1 (d. h. bei einem ersten Taktzyklus) die ersten Horizontalbefehlsworte von den drei Befehlsströmen aus den Befehlspufferspeichern geholt und auf die dynamische Verschachtelungseinheit übertragen. Der Strom 1 wird zuerst gewählt (in Fig. 2B fettgedruckt gezeigt). Der ADD2-Befehl dieses Stromes wird zum Ganzzahleinheitsdekodierer geschickt. Es sind keine weiteren Befehle im Strom 1 vorhanden. Nunmehr wird Befehlsstrom 2 gewählt. Da der ADD2-Befehl des Befehlsstromes 1 bereits an die Ganzzahleinheit abgegeben worden ist, wird die Ausgabe des ADD2-Befehls des Stromes 2 bis zum nächsten Taktzyklus verzögert. Die Logikeinheit ist jedoch frei. Daher wird der SHLL2-Befehl des Stromes 2 zum Dekodierer der Logikeinheit gesandt. Da keine weiteren Befehle in diesem Befehlsstrom vorhanden sind, wird der dritte Befehlsstrom ausgewählt. Der FMOVEF-Befehl des dritten Befehlsstromes wird zum Dekodierer der Gleitpunkt/Ganzzahlumformungseinheit abgegeben, da diese frei ist. Keine weiteren Befehle können nunmehr ausgegeben werden. Somit werden bei CK = 1 ein ADD2-Befehl vom Strom 1, ein SHLL2-Befehl vom Strom 2 und ein FMOVEF-Befehl vom Strom 3 gleichzeitig an die Dekodierer der Funktions­ einheiten abgegeben.
Am Ende des ersten Taktzyklus besitzen die Ströme 1 und 3 keine Befehle mehr in der dynamischen Verschachtelungseinheit. Daher werden die nächsten Horizontalbefehlsworte von diesen Strömen von ihren entsprechenden Befehlspufferspeichern geholt und in die dynamische Verschachtelungseinheit übertragen. Andererseits besitzt der Strom 2 noch einen ADD2-Befehl, der ausgegeben werden muß, so daß daher das nächste Horizontalbefehlswort des Stromes 2 nicht geholt wird. Die drei Horizontalbefehlsworte, die sich bei CK = 2 in der dynamischen Verschachtelungseinheit befinden, sind in Fig. 2C gezeigt. Bei CK = 2 wird zuerst der Strom 2 gewählt, wonach die Round-Robin-Strategie folgt. Sein ADD2-Befehl wird zum Dekoder der Ganzzahleinheit gesandt. Als nächstes wird der Strom 3 gewählt, und die SHLL2- und FSUB-Befehle von diesem Strom werden an die Logikeinheit und die Gleitpuntaddier/Subtrahiereinheit abgegeben. Schließlich wird Strom 1 gewählt; hiervon kann jedoch kein Befehl ausgegeben werden, da die erforderlichen Dekodierer der Funktionseinheiten besetzt sind. Der Prozeß setzt sich in entsprechender Weise im dritten Taktzyklus CK3 fort. Die im dritten Taktzyklus in der dynamischen Verschachtelungs­ einheit gespeicherten Befehle sind in Fig. 2D gezeigt. Desweiteren sind dort die an die Funktionseinheit im dritten Taktzyklus ausgegebenen Befehle gezeigt. Am Ende des dritten Taktzyklus sind sämtliche Befehle von den drei Befehlsströmen ausgegeben. Wenn keine dynamische Verschachtelung durchgeführt würde, würde man sechs Taktzyklen benötigen, um die Befehle in diesem Ausführungsbeispiel auszugeben. Durch die dynamische Verschachtelung wird somit die Befehlsausgaberate bei diesem Ausführungsbeispiel um einen Faktor von 2 verbessert.
Der in der dynamischen Verschachtelungseinheit durchgeführte grundlegende Vorgang besteht im partiellen Dekodieren eines Befehles, um zu erkennen, ob es sich hierbei um einen NOOP-Befehl handelt. Wenn ein Befehl kein NOOP-Befehl ist, wird der Befehl zum Dekodierer der Funktionseinheit ausgegeben, wo die erforderlichen Steuersignale erzeugt werden. Wenn der Befehl ein NOOP-Befehl ist, dann muß der nächste Befehl von einem Befehlsstrom niedrigerer Priorität überprüft werden. Die Überprüfung wird fortgesetzt (auf Dominoweise), bis ein NON-NOOP-Befehl angetroffen wird oder bis sämtliche Befehlsströme erschöpft sind. Der ganze Vorgang muß in einem Taktzyklus durchgeführt werden. Fig. 3 zeigt eine Logikschaltung, um dies zu verwirklichen. In Fig. 3 handelt es sich bei SW1 und SW2 um Logikschalter, deren Funktionen dargestellt sind. Das Signal ND ist das "NOOP-detektiert"-Signal, das Ergebnis der partiellen Befehlsdekodierung. P ist das Prioritätssignal. In einem Taktsignal besitzt nur ein Befehlsstrom ein hochpegliges Prioritätssignal; die anderen Prioritätssignale besitzen einen niedrigen Pegel. Bei dem Signal IS handelt es sich um das Befehlsausgabesignal. Bei hohem Pegel zeigt es an, daß der Befehl vom entsprechenden Befehlsstrom zum Dekodierer der Funktionseinheit ausgegeben wird. Die dynamische Verschachtelungseinheit besitzt eine Logikschaltung, wie die in Fig. 3 gezeigte, für jede Funktionseinheit.
Obwohl man mit einer dynamischen Verschachtelung eine bessere Ausnutzung der Funktionseinheiten erreichen kann, verbleiben einige Probleme. Als erstes muß die Hardware eine höhere Befehlsholbandbreite stützen, die von der NOOP-Austausch-Technik benötigt wird. Ferner wird zur Verwirklichung einer dynamischen Verschachtelungseinheit komplexe Hardware einschließlich Spezialhardware benötigt, um das Ende eines Horizontalbefehlswortes eines Befehlsstromes zu detektieren, so daß das nächste Horizontalbefehlswort geholt und ausgeführt werden kann. Da nicht garantiert werden kann, daß sämtliche Befehle im gleichen Befehlswort im gleichen Taktzyklus ausgegeben werden, können zwei Befehle, die eine Write-after-Read-Abhängigkeit besitzen, nicht in das gleiche Horizontalbefehlswort eingegeben werden. Auch können zwei aufeinanderfolgende Horizontalbefehlsworte in nicht aufeinanderfolgenden Zyklen ausgegeben werden, so daß Befehle nicht in Verzweigungsverzöge­ rungs-Slots (branch delay slots) gegeben werden können. Diese Einschränkungen führen zu einer niedrigeren Befehlsausgaberate für eine auf einer Vielzahl von Befehlsströmen basierende Bauart.
Der Erfindung liegt die Aufgabe zugrunde, einen mit einer Vielzahl von Befehlsströmen arbeitenden Mikroprozessor zu schaffen, mit dem die mit einer dynamischen Verschachtelung verbundenen Probleme gelöst werden können.
Anstelle einer dynamischen Verschachtelung wird erfindungsgemäß eine statische Verschachtelungstechnik eingesetzt, um die Probleme zu lösen, die bei einem auf der Basis einer Vielzahl von Befehlsströmen mit einem sehr langen Befehlswort arbeitenden Mikroprozessor auftreten. Bei einer derartigen statischen Verschachtelungstechnik ist jede Funktionseinheit im Prozessor angewiesen, einen Maschinenbefehl von einem speziellen Befehlsstrom in einem festen vorgegebenen Zeit-Slot in einem festen vorgegebenen Wiederholungsmuster von Zeit-Slots auszuführen. Das feste vorgegebene Muster von Zeit-Slots, in dem spezielle Funktionseinheiten Befehlen von speziellen Befehlsströmen in speziellen Zeit-Slots zugeordnet sind, gibt die Ressourcen-Beschränkungen wieder, denen die Hardware ausgesetzt ist, um die Probleme hinsichtlich der Rechenressourcen zu lösen. Diese Strategie einer Ressourcenzuordnung wird einem Parallelcompiler zugewiesen, der für jeden Befehlsstrom eine Sequenz von Maschinenbefehlen in Horizontalbefehlsworte organisiert, um Datenabhängigkeiten unter den Befehlsworten aufrechtzuerhalten und die feste vorgegebene Zuordnung der Hardwareressourcen zu berücksichtigen.
Im Vergleich zu einem Mikroprozessor des Standes der Technik, der von der dynamischen Verschachtelung Gebrauch macht, besitzt ein mit statischer Verschachtelung arbeitender Mikroprozessor eine verringerte Hardware-Komplexität. Darüber hinaus wird durch die statische Verschachtelungstechnik die Codegröße eines Programms beträchtlich reduziert.
Die Erfindung wird nachfolgend anhand eines Ausführungsbeispiels in Verbindung mit der Zeichnung im einzelnen erläutert. Es zeigen:
Fig. 1 in schematischer Weise die Bauart eines auf der Basis einer Vielzahl von Befehlsströmen arbeitenden Mikroprozessors, der mit dynamischer Verschachtelung arbeitet; die Fig. 2A, 2B, 2C und 2D die Funktionsweise der dynamischen Verschachtelungstechnik;
Fig. 3 eine dynamische Verschachtelungseinheit, die beim Mikro­ prozessor der Fig. 1 Verwendung findet;
Fig. 4A das Muster der Zeit-Slots, das bei der statischen Verschach­ telungstechnik der vorliegenden Erfindung Verwendung findet;
Fig. 4B ein Muster von Horizontalbefehlsworten, das bei einem Post- Pass-Parallelcompiler gemäß der Erfindung Verwendung findet;
Fig. 5 einen Mikroprozessor, der in erfindungsgemäßer Weise von der statischen Verschachtelung Gebrauch macht;
Fig. 6 ein Ablaufdiagramm, das die Schritte zum Kompilieren und Ausführen eines Programmes gemäß der vorliegenden Erfindung zeigt;
die Fig. 7A, 7B und 7C die Kompilierung einer kleinen Sequenz von Befehlen gemäß der Erfindung;
Fig. 8 eine bei der Kompilierung eines Programms gemäß der Erfin­ dung verwendete Latenztabelle; und
die Fig. 9A, 9B eine Sequenz von Maschinenbefehlen und die aus der Sequenz der Befehle erfindungsgemäß erzeugten Horizontalbefehls­ worte.
Bei der statischen Verschachtelungstechnik wird jede Funktionseinheit einem Befehlsstrom auf Round-Robin-Weise zugeordnet. Wenn eine Funktionseinheit vom ausgewählten Befehlsstrom nicht benutzt wird, wird ein NOOP-Befehl von der Funktionseinheit ausgegeben.
Allgemein gesagt kann die statische Verschachtelungstechnik durch einen Zuordnungsvektor (Allocation Vector) (AV) characterisiert werden. Der AV enthält einen Eingang AV1 für jede Funktionseinheit FUi, wobei 1AViT und wobei T die Zahl der von der Hardware gestützten Befehlsströme ist. Während der Programmausführung wird zum Zeitpunkt t FUi einem Befehlsstrom τ, τ= 1, 2, . . ., T zugeordnet, der durch die folgende Gleichung wiedergegeben wird:
τ=1+(t+T-AVi) mod T (1)
Es wird eine Bauart mit vier Befehlsströmen und vier Funktionseinheiten FU1, FU2, FU3 und FU4 angenommen. Mit AV = [1, 4, 2, 2] ist die Zuordnung der Funktionseinheiten zu speziellen Befehlsströmen in Fig. 4A gezeigt. In Fig. 4A ist jeder Tabelleneingang die Zahl der Befehlsströme, die die entsprechende Funktionseinheit im speziellen Zeit-Slot verwenden können. Die Zuordnung der Zeit-Slots zu Funktions­ einheiten bildet ein Muster, das sich selbst wiederholt. In Fig. 4A wiederholt sich das Muster alle vier Zeit-Slots. Ein Algorithmus zur Ermittlung eines optimalen AV wird nachfolgend im einzelnen erläutert.
Fig. 4B zeigt schematisch, wie die Zuordnung der durch den Zuordnungsvektor spezifizierten Hardware-Ressourcen dem Post-Pass-Parallelcompiler zugewiesen wird, um die Befehle eines jeden Befehlsstromes zu ordnen. Fig. 4B zeigt eine Liste von Horizontalbe­ fehlsworten mit den Ziffern 1, 2, 3,.... Jedes Horizontalbefehlswort umfaßt vier Sektionen, wobei eine Sektion einer jeden Funktionseinheit entspricht. Erfindungsgemäß kann der Parallelcompiler nur die schattierten Sektionen mit durch die entsprechenden Funktionseinheiten auszuführenden Maschinenbefehlen füllen. Nicht schattierte Sektionen empfangen NOOP-Befehle. Das Muster der Horizontalbefehlsworte mit den speziellen schattierten Sektionen wiederholt sich alle T Befehlsworte, wobei T die Zahl der Befehlsströme darstellt. Wie nachfolgend im einzelnen erläutert wird, wird jedes Befehlsmuster, das beim Ausführungsbeispiel der Fig. 4B vier HIWs umfaßt, durch den Parallelcompiler in ein einziges Horizontalbefehlswort kompaktiert. Das gleiche Muster an Horizontalbefehlsworten wird vom Compiler verwendet, um die Befehle eines jeden Befehlsstromes individuell zu ordnen.
Das Muster der Horizontalbefehlsworte in Fig. 4B ist von dem Zuordnungsvektor abgeleitet, der in diesem Fall AV = [1, 4, 2, 2] beträgt. Insbesondere ist bei einem Horizontalbefehlswort mit der Zahl Hk das der Funktionseinheit FUi entsprechende Feld schattiert, wenn (Hk + T-1) mod T + 1 gleich AVi ist, wobei im vorliegenden Ausführungsbeispiel T = 4 ist.
Mit anderen Worten, die Ressourcenbeschränkungen, die von der in der Hardware verwendeten Ressourcenzuordnungsstrategie auferlegt werden, werden durch eine Sequenz von Befehlsmustern im Parallelcompiler wiedergegeben. Jeder Befehlsstrom wird zuerst sequentiell compiliert, und der erzeugte sequentielle Code wird gemäß diesem Muster in Horizontalbefehlsworte geordnet. Im Parallelcompiler werden die vom sequentiellen Compiler für jeden Befehlsstrom erzeugten Befehle derart in einem Muster geordnet, daß die Datenabhängigkeiten und Befehls­ abhängigkeiten unter den Befehlen bewahrt werden. Der Satz von Horizontalbefehlsworten, der jedes Muster bildet, wird dann kompaktiert, um ein einziges Horizontalbefehlswort zu erzeugen. Der Kompaktierungs­ schritt wird nachfolgend in Einzelheiten erläutert.
Wenn alle Befehlsströme nach dem Muster der Fig. 4B kompiliert worden sind, können die Befehlsströme in der in Fig. 4A gezeigten Weise verschachtelt werden. In Abhängigkeit von dem verwendeten Zuordnungs­ vektor wird die Startzeit des Befehlsstromes # τ um (τ-1) Zyklen verzögert, so daß die Ressourcenkonkurrenz unter den Befehlsströmen beseitigt wird.
Fig. 5 zeigt einen Prozessor 100, der die statische Verschachtelungs­ technik gemäß der vorliegenden Erfindung durchführt. Beispielsweise besteht der Prozessor 100 der Fig. 5 aus einem einzigen Halbleiterchip. Er umfaßt vier Funktionseinheiten FU1, FU2, FU3, FU4. Beispielsweise handelt es sich bei der Funktionseinheit FU1 um eine arithmetische Einheit, bei der Einheit FU2 um eine Logikeinheit, bei der Einheit FU3 um eine Eingabe/Speichereinheit und bei der Einheit FU4 um eine Verzweigungseinheit. Der Prozessor 100 führt gleichzeitig vier Befehlsströme mit den Bezeichnungen 1, 2, 3, 4 aus. Ein getrennter Befehlspufferspeicher 120 ist für jeden dieser Befehlsströme vorgesehen, so daß vier Pufferspeicher 1, 2, 3 und 4 vorhanden sind. Jeder Pufferspeicher 120 speichert die Horizontalbefehlsworte, die seinen zugehörigen Befehlsstrom bilden. Eine Registerbank 130 ist vorgesehen, um Operanden für die einzelnen Befehlsströme zu speichern. Die Registerbänke sind ebenfalls mit 1, 2, 3 und 4 bezeichnet. Wenn ein Befehl von einem speziellen Befehlsstrom ausgeführt wird, kann eine Funktionseinheit Operanden von der geeigneten Registerbank holen und nach der Ausführung des Befehls die Operanden zur Registerbank zurückführen. Die Funktionseinheiten 110 haben über den Bus 131 Zugriff auf die Registerbank 130.
Jeder Funktionseinheit 110 ist eine Warteschlange 140 zugeordnet. Die Warteschlangen 140 dienen dazu, die vom Zuordnungsvektor definierte Ressourcenzuordnung zu verwirklichen. Hiermit ist gemeint, daß die Warteschlangen sicherstellen, daß an jede Funktionseinheit ein Befehl von einem speziellen Befehlsstrom in dem fixierten vorgegebenen Zeit-Slot, das für diesen Befehlsstrom im Muster der Zeit-Slots reserviert ist, abgegeben wird.
Bei dem vorstehend beschriebenen Ausführungsbeispiel beträgt der Zuordnungsvektor AV = [1, 4, 2, 2]. Somit besitzt die FU1 zugeordnete Warteschlange eine Verzögerung von 1 Taktzyklus, die FU2 zugeordnete Warteschlange eine Verzögerung von 4, die FU3 zugeordnete Warteschlange eine Verzogerung von 2 und die FU4 zugeordnete Warteschlange eine Verzögerung von 2.
Horizontalbefehlsworte werden aus den Pufferspeichern 120 abwechselnd in einer vorgegebenen Reihenfolge geholt, wobei die Befehlsholeinheiten 121 verwendet werden. Beispielsweise werden die Horizontalbefehlsworte aus den Pufferspeichern in einer Round-Robin-Reihenfolge geholt, wobei mit dem Pufferspeicher #1 begonnen wird. Für jedes geholte Horizontalbefehlswort werden die darin enthaltenen einzelnen Maschinenbefehle in die der Funktionseinheit, die den Befehl ausführt, zugeordnete Warteschlange eingegeben. Die Maschinenbefehle werden über den Bus 132 auf die Warteschlangen 140 übertragen. Jeder einzelne Maschinenbefehl wird erst an die geeignete Funktionseinheit ausgegeben, nachdem er durch die feste vorgegebene Verzögerung der Warteschlangen verzögert worden ist. Durch die Verwendung von Warteschlangen mit festen Verzögerungen, die durch den Zuordnungsvektor bestimmt werden, in Kombination mit dem Holen von Horizontalbefehlsworten in einer vorgegebenen Reihenfolge, die gemäß einem vom Zuordnungsvektor abgeleiteten Muster kompiliert worden sind, wird sichergestellt, daß einzelne Maschinenbefehle von speziellen Befehlsströmen in den festen vorgegebenen Zeit-Slots, die für den speziellen Befehlsstrom reserviert sind, an spezielle Funktionseinheiten ausgegeben werden.
Ein Hauptvorteil der statischen Verschachtelungstechnik besteht darin, daß die Vollendungszeit eines Befehles zur Kompilierungszeit bekannt ist, so daß daher ein Parallelkompiler die Ausführungssequenz der Befehle optimieren kann.
Fig. 6 ist ein Ablaufdiagramm 200, das die erfindungsgemäß benutzten Schritte zum Kompilieren und Ausführen eines Programmes zeigt. Zuerst wird ein Quellenprogramm 210, das in einer hochpegligen Sprache, beispielsweise der C-Sprache, geschrieben ist, in einem sequentiellen Compiler kompiliert (Schritt 220). Der sequentielle Compiler formt das hochpeglige Programm in eine Sequenz von Maschinenbefehlen um. Dann reorganisiert ein Parallelcompiler die Sequenz der Maschinenbefehle in horizontale Befehlsworte (Schritt 230). Dies wird in zwei Schritten verwirklicht. In einem ersten Schritt (Schritt 231) wird jeder Maschinenbefehl an einer Stelle in einem Muster von Befehlen, das eine Vielzahl von Horizontalbefehlsworten umfaßt, angeordnet. Die Stelle eines jeden Maschinenbefehles in einem Muster von Befehlen hängt von der Zuordnung der Hardware-Ressourcen ab, wie sie vom Zuordnungsvektor festgelegt worden ist, und von den Datenabhängigkeiten unter den Befehlen. In einem zweiten Schritt (Schritt 232) werden die Horizontalbefehlsworte eines jeden Musters in ein einziges Horizontalbefehlswort kompaktiert, um einen Befehlsstrom zu erzeugen. Nach der Verarbeitung durch den Parallelcompiler werden die kompaktierten Horizontalbefehlsworte eines Befehlsstromes in einem Pufferspeicher gespeichert und durch die Funktionseinheiten (Schritt 240 in Fig. 6) in der vorstehend in Verbindung mit Fig. 5 beschriebenen Art und Weise ausgeführt.
Die Fig. 7A, 7B und 7C zeigen den Kompilierungsprozess für den Fall, bei dem der Zuordnungsvektor AV = 1, 4, 2, 2 ist und bei dem die Funktionseinheiten FU1, FU2, FU3, FU4 eine arithmetische Einheit, Logikeinheit, Eingabe/Speichereinheit und eine Verzweigungseinheit sind.
Fig. 7A zeigt ein Stück eines sequentiellen Codes, der vier Maschinenbefehle umfaßt (beispielsweise bedeutet der "Eingabe 2"-Befehl, daß der Inhalt des vom Inhalt des Registers r2 plus 1000 adressierten Speichers in das Register r4 eingegeben wird. In entsprechender Weise bedeutet der "cbras"-Befehl, daß zum ersten Befehl zurückgekehrt wird, wenn der Inhalt des Registers r1 kleiner ist als der Inhalt des Registers r6).
Fig. 7B zeigt, wie die vier Befehle der Fig. 7A im Muster der vier Horizontalbefehlsworte gemäß Fig. 4B angeordnet werden. Die Sequenz der Befehle der Fig. 7A wird in den schattierten Sektionen der HIWs 1-4 der Fig. 4B angeordnet. Nicht schattierte Sektionen von HIWs 1-4 der Fig. 4B empfangen NOOP-Befehle. Fig. 7C zeigt, wie das Muster der vier Befehlsworte der Fig. 7B in ein einziges horizontales Befehlswort kompaktiert wird. Durch die Kompaktion wird die Codegröße reduziert, indem eine Menge NOOP-Befehle eliminiert werden.
Ein Maschinenbefehl Ij in der Sequenz der vom sequentiellen Compiler erzeugten Befehle wird in einem speziellen Horizontalbefehlswort mit der Zahl Hj (siehe Fig. 4B) in der nachfolgenden Weise untergebracht. Jeder Maschinenbefehl Ij wird mit sämtlichen vorher geordneten Befehlen verglichen, um Datenabhängigkeiten zu ermitteln. Der Befehl Ij wird soweit wie möglich bis zum Beginn der Sequenz oder bis zu dem Punkt bewegt, an dem ein Befehl Ii gefunden wird, bei dem eine Datenabhängig­ keit zwischen Ij und Ii besteht. Dann beträgt das Horizontalbefehlswort, in das Ij eingegeben werden kann,
Hj=Hi+L [D] [Ti] [Tj] (2)
worin bedeuten:
Hi die HIW-Zahl, wo Ii eingegeben wurde,
Hj die HIW-Zahl, in die Ij eingegeben werden kann,
Ti der Typ des Befehles Ii,
Tj der Typ des Befehles Ij,
D der Datenabhängigkeitstyp zwischen Ii und Ij;
entweder read-after-write (RAW) oder write-after-read (WAR)
L die Latenztabelle für den speziellen AV.
Wenn Ij in Ressourcenkonkurrenz mit einem Befehl in HIW Hj steht, dann wird Ij um T Zyklen verzögert, wobei T die Zahl der von der Hardware gestützten Befehlsströme ist. Wenn wiederum Konkurrenz auftritt, wird Ij um weitere T Zyklen verzögert. Dieser Suchvorgang wird wiederholt, bis ein HIW gefunden wird, in den Ij eingegeben werden kann. Bei der Berechnung von Hj wird eine Latenztabelle L verwendet, um die Latenz zwischen Ij und Ii festzustellen. Wenn D, Ti, Tj und FU_LATENCY, wobei es sich hierbei um die Ausführungszeit eines jeden Befehlstyps, definiert in Hardware, handelt, vorhanden sind, dann werden L[D] [Ti] [Tj] wie in dem nachfolgenden C-Programm gezeigt errechnet:
Schaltung (D)
Fall 1:
/*RAW (read-after-write) Abhängigkeit*/ temp2=((temp1=1=AV[Tj]-AV[Ti])<0?temp1:temp1+T);
während (temp2<Fu_LATENCY[Ti])temp2+=T;
L[D] [Ti] [Tj]=temp2;
Unterbrechung;
Fall 2:
/*WAR(write-after-read) Abhängigkeit*/ L[D] [Ti] [Tj]=((temp1=AV[Tj]-AV[Ti])<=0?temp1:temp1+N);
Bei temp1 und temp2 handelt es sich um temporäre Variablen. Die berechnete Latenz unterscheidet sich von der in Hardware definierten Ausführungszeit. Bei der Berechnung der Latenztabelle werden der Abhängigkeitstyp (d. h. RAW, wobei D=1 ist, oder WAR, wobei D=2 ist), die Ausführungszeit eines jeden Befehles und der AV berücksichtigt. Wenn einmal die Latenztabelle berechnet worden ist, kann sie der Parallelcompiler verwenden, um die Lage eines jeden Befehles im Befehlsschema unter Verwendung von Gleichung (2) zu ermitteln.
Fig. 8 zeigt ein Beispiel der Latenztabelle L[1][Ti] [Tj] für AV = [1, 4, 2, 2], FU_LATENCY[Ti] = 1 und D = 1 (d. h. für eine RAW-Datenab­ hängigkeit). In diesem Fall können die Befehlstypen Ti und Tj durch die Funktionseinheiten FUi und FUj identifiziert werden, die diese Befehle ausführen. Somit beträgt beispielsweise gemäß der Tabelle der Fig. 8 die Latenz zwischen einem Befehl Ii, der durch FU3 ausgeführt wird, und einem Ij, der durch FU2 ausgeführt wird, 2 Zyklen.
Die Fig. 9A, 9B zeigen eine Sample-Kompilierung. Fig. 9A zeigt die Sequenz der Maschinenbefehle, die vom sequentiellen Compiler für ein Bubble-Sort-Programm erzeugt wurden. Fig. 9B zeigt die Horizontalbefehlsworte, die vom Post-Pass-Parallelcompiler nach der Kompaktion erzeugt wurden.
Die Auswahl des Zuordnungsvektors ist wichtig für die statische Verschachtelungstechnik der vorliegenden Erfindung. Eine Art und Weise zum Auswählen des Zuordnungsvektors besteht darin, einen Zuordnungsvektor zu wählen, der die Latenz der am häufigsten auftretenden read-after-write (RAW)-Abhängigkeiten reduziert. Wenn man eine Verteilung von RAW-Abhängigkeiten unter den Befehlen in einem oder mehreren Benchmark-Programmen voraussetzt, wird der AV so gewählt, daß die nachfolgende Gleichung minimiert werden kann
wobei
M die Zahl der Funktionseinheiten der Bauart L die durch ein AV definierte Latenztabelle und W(i)(j) die Möglichkeit einer RAW-Abhängigkeit zwischen den Befehlstypen i und j ist.

Claims (10)

1. Mikroprozessor, der in der Lage ist, gleichzeitig eine Vielzahl von Befehlsströmen auszuführen, gekennzeichnet durch:
einen Prozessor (100) mit einer Vielzahl von Funktionseinheiten (FUi),
eine Einrichtung (120) zum Speichern von Horizontalbefehlsworten, die eine Vielzahl von Befehlsströmen bilden, wobei jedes Horizontalbefehls­ wort einen oder mehrere Maschinenbefehle enthält, die von speziellen Funktionseinheiten auszuführen sind,
eine Einrichtung zum Holen von Horizontalbefehlsworten, die zu unterschiedlichen Befehlsströmen gehören, zu vorgegebenen Zeiten und in einer vorgegebenen Reihenfolge aus der Speichereinrichtung (120) und
eine Einrichtung zur Zuweisung einer jeden Funktionseinheit (FUi) für die Durchführung eines Maschinenbefehles von einem speziellen Befehlsstrom in einem festen vorgegebenen Zeit-Slot in einem festen vorgegebenen Wiederholungsmuster von Zeit-Slots.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Zuweisungseinrichtung eine Warteschlangeneinrichtung (140) zur Erzeugung einer festen vorgegebenen Verzögerung für jeden Maschinenbefehl in jedem der Horizontalbefehlsworte in den Befehlsströmen aufweist, so daß jeder Maschinenbefehl in dem geeigneten zugeordneten Zeit-Slot an die geeignete Funktionseinheit (FUi) gelegt wird.
3. Mikroprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß spezielle Zeit-Slots in dem Muster von Zeit-Slots speziellen Funktionseinheiten (FUi) zur Ausführung von Maschinenbefehlen von speziellen Befehlsströmen zugeordnet sind, um die Latenz der read-after-write-Abhängigkeiten in den Maschinenbefehlen zu minimieren.
4. Mikroprozessor nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die Holeinrichtung Horizontalbefehlsworte aus der Speichereinrichtung (120) einer Round-Robin-Reihenfolge holt.
5. Mikroprozessor nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die Speichereinrichtung (120) eine Vielzahl von einzelnen Pufferspeichern umfaßt, von denen jeweils einer für einen Befehlsstrom vorgesehen ist.
6. Mikroprozessor nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die Horizontalbefehlsworte eines jeden Befehlsstromes durch einen Compiler kompiliert werden, der eine Sequenz von Maschinenbefehlen in eine Sequenz von Mustern von Befehlen, die eine Vielzahl von Horizontalbefehlsworten umfassen, reorganisiert, wobei jeder Maschinenbefehl eine Stelle in einem Muster aufweist, die von seinen Datenabhängigkeiten mit anderen Maschinenbefehlen abhängt, und die speziellen Zeit-Slots speziellen Funktionseinheiten (FUi) zur Ausführung der Befehle von speziellen Befehlsströmen zugeordnet sind.
7. Verfahren zum Kompilieren und Ausführen eines Befehlsstromes aus einer Vielzahl von Befehlsströmen in einem Mehrstrom-Prozessorsystem, das einen Prozessor mit einer Vielzahl von Funktionseinheiten aufweist, denen gemäß einem Zuordnungsvektor die Ausführung von Befehlen von speziellen Befehlsströmen in speziellen festen vorgegebenen Zeit-Slots in einem festen vorgegebenen Wiederholungsmuster von Zeit-Slots zugewiesen ist, gekennzeichnet durch die folgenden Schritte:
Verwenden eines sequentiellen Compilers zum Kompilieren eines Quellenprogramms in eine Sequenz von Maschinenbefehlen, die durch spezielle Funktionseinheiten im Prozessorsystem ausgeführt werden können,
Verwenden eines Parallelcompilers zum Reorganisieren der Sequenz von Maschinenbefehlen in eine Sequenz von Befehlsmustern, wobei jeder Befehl eine Stelle in einem Befehlsmuster aufweist, die von seiner Datenab­ hängigkeit von einem vorhergehenden Befehl in der Befehlssequenz und von dem Zuordnungsvektor abhängt, der die Zeit-Slots definiert, in denen die geeignete Funktionseinheit zur Ausführung des Befehles zur Verfügung steht,
Verwenden des Parallelcompilers zum Kompaktieren der Befehle eines jeden Befehlsmusters zu einem Horizontalbefehlswort, um den einen Befehlsstrom auszubilden,
Speichern der Befehle des einen Befehlsstromes in einem Pufferspeicher und
Ausführen der Befehle des einen Befehlsstromes unter Verwendung der Funktionseinheiten.
8. Verfahren zum gleichzeitigen Ausführen einer Vielzahl von Befehls­ strömen in einem Mehrstromprozessor, der eine Vielzahl von Funktions­ einheiten und ein Pufferspeichersystem zum Speichern von Horizontal­ befehlsworten, die jeden der Befehlsströme umfassen, aufweist, wobei jedes Horizontalbefehlswort einen oder mehrere Befehle enthält, die durch spezielle Funktionseinheiten auszuführen sind, gekennzeichnet durch die folgenden Schritte:
Holen von dem Pufferspeichersystem Horizontalbefehlsworte, die zu unterschiedlichen Befehlsströmen gehören, zu vorgegebenen Zeiten und in einer vorgegebenen Reihenfolge,
Zuweisen einer jeden Funktionseinheit die Ausführung eines Befehles von einem speziellen Befehlsstrom in einem festen vorgegebenen Zeit-Slot in einem festen vorgegebenen Wiederholungsmuster von Zeit-Slots und
Ausführen des Befehles in den Horizontalbefehlsworten durch die Funktionseinheiten in den zugeordneten Zeit-Slots.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß jeder der Befehlsströme durch die folgenden Schritte kompiliert wird:
Verwenden eines sequentiellen Compilers zum Kompilieren eines Quellenprogrammes in eine Sequenz von Maschinenbefehlen, die durch spezielle Funktionseinheiten im Prozessor ausgeführt werden können,
Verwenden eines Parallelcompilers zum Reorganisieren der Sequenz der Maschinenbefehle in eine Sequenz von Befehlsmustern, wobei jeder Befehl eine Stelle in einem Befehlsmuster aufweist, die von seiner Datenabhängigkeit von einem vorhergehenden Befehl in der Sequenz der Befehle und von einem Zuordnungsvektor abhängt, der die Zeit-Slots definiert, in denen die geeignete Funktionseinheit zur Ausführung des Befehles zur Verfügung steht, und
Verwenden des Parallelcompilers zum Kompaktieren der Befehle eines jeden Befehlsmusters zu einem Horizontalbefehlswort, um den einen Befehlsstrom zu erzeugen.
10. Mikroprozessor zur Ausführung einer Vielzahl von Befehlsströmen, gekennzeichnet durch:
eine Vielzahl von Funktionseinheiten (FUi),
eine Vielzahl von Befehlspufferspeichern (120), die jeweils zur Speicherung der Horizontalbefehlsworte eines Befehlsstromes dienen,
eine Vielzahl von Befehlsholeinheiten zum Holen von Horizontalbefehlsworten aus entsprechenden Pufferspeichern und
eine Zuordnungseinrichtung zur Zuweisung einer jeden Funktionseinheit (FUi) für die Ausführung eines Maschinenbefehles von einem speziellen Befehlsstrom in einem festen vorgegebenen Zeit-Slot in einem Wiederholungsmuster von Zeit-Slots gemäß einem Zuordnungsvektor, der read-after-write-Latenzen in den Maschinenbefehlen der Horizontalbefehlsworte minimiert.
DE4217012A 1992-02-25 1992-05-22 Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor Expired - Lifetime DE4217012C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/840,903 US5404469A (en) 1992-02-25 1992-02-25 Multi-threaded microprocessor architecture utilizing static interleaving

Publications (2)

Publication Number Publication Date
DE4217012A1 true DE4217012A1 (de) 1993-08-26
DE4217012C2 DE4217012C2 (de) 1998-12-10

Family

ID=25283528

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4217012A Expired - Lifetime DE4217012C2 (de) 1992-02-25 1992-05-22 Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor

Country Status (3)

Country Link
US (1) US5404469A (de)
JP (1) JP2928695B2 (de)
DE (1) DE4217012C2 (de)

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5560025A (en) * 1993-03-31 1996-09-24 Intel Corporation Entry allocation apparatus and method of same
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
DE69430018T2 (de) * 1993-11-05 2002-11-21 Intergraph Corp Befehlscachespeicher mit assoziativem Kreuzschienenschalter
US5640584A (en) * 1994-12-12 1997-06-17 Ncr Corporation Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5848284A (en) * 1995-11-28 1998-12-08 Intel Corporation Method of transferring data between moderately coupled integer and floating point units
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
CN1147785C (zh) * 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
AU6586898A (en) 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US6065112A (en) * 1997-06-18 2000-05-16 Matsushita Electric Industrial Co., Ltd. Microprocessor with arithmetic processing units and arithmetic execution unit
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6076159A (en) * 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6067601A (en) * 1997-11-03 2000-05-23 Brecis Communications Cache memory based instruction execution
US5940626A (en) * 1997-11-03 1999-08-17 Teragen Corporation Processor having an instruction set architecture implemented with hierarchically organized primitive operations
US6216218B1 (en) 1997-11-03 2001-04-10 Donald L. Sollars Processor having a datapath and control logic constituted with basis execution blocks
US5923894A (en) 1997-11-03 1999-07-13 Teragen Corporation Adaptable input/output pin control
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6016539A (en) * 1997-11-03 2000-01-18 Teragen Corporation Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US6256775B1 (en) 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6453355B1 (en) * 1998-01-15 2002-09-17 Apple Computer, Inc. Method and apparatus for media data transmission
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6247116B1 (en) 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6263426B1 (en) 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6292815B1 (en) * 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6205519B1 (en) 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6035389A (en) * 1998-08-11 2000-03-07 Intel Corporation Scheduling instructions with different latencies
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
JP2002532775A (ja) * 1998-12-08 2002-10-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ インタープリタプログラム実行方法
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US7003475B1 (en) 1999-05-07 2006-02-21 Medcohealth Solutions, Inc. Computer implemented resource allocation model and process to dynamically and optimally schedule an arbitrary number of resources subject to an arbitrary number of constraints in the managed care, health care and/or pharmacy industry
US6938147B1 (en) * 1999-05-11 2005-08-30 Sun Microsystems, Inc. Processor with multiple-thread, vertically-threaded pipeline
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6654870B1 (en) 1999-06-21 2003-11-25 Pts Corporation Methods and apparatus for establishing port priority functions in a VLIW processor
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6449691B1 (en) 1999-07-30 2002-09-10 International Business Machines Corporation Asymmetrical cache properties within a hashed storage subsystem
US6598118B1 (en) 1999-07-30 2003-07-22 International Business Machines Corporation Data processing system with HSA (hashed storage architecture)
US6446165B1 (en) 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
US6658556B1 (en) * 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6823471B1 (en) 1999-07-30 2004-11-23 International Business Machines Corporation Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem
US6470442B1 (en) 1999-07-30 2002-10-22 International Business Machines Corporation Processor assigning data to hardware partition based on selectable hash of data address
US6516404B1 (en) 1999-07-30 2003-02-04 International Business Machines Corporation Data processing system having hashed architected processor facilities
US6769033B1 (en) * 1999-08-27 2004-07-27 International Business Machines Corporation Network processor processing complex and methods
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6668315B1 (en) * 1999-11-26 2003-12-23 Hewlett-Packard Development Company, L.P. Methods and apparatus for exchanging the contents of registers
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
WO2001046827A1 (en) * 1999-12-22 2001-06-28 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
DE10000960C1 (de) * 2000-01-12 2001-12-20 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US20010049757A1 (en) * 2000-03-01 2001-12-06 Ming-Kang Liu Programmable task scheduler for use with multiport xDSL processing system
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7096343B1 (en) 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
US7007153B1 (en) * 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US7111156B1 (en) * 2000-04-21 2006-09-19 Ati Technologies, Inc. Method and apparatus for multi-thread accumulation buffering in a computation engine
US6675285B1 (en) * 2000-04-21 2004-01-06 Ati International, Srl Geometric engine including a computational module without memory contention
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7240186B2 (en) * 2001-07-16 2007-07-03 Hewlett-Packard Development Company, L.P. System and method to avoid resource contention in the presence of exceptions
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7213045B2 (en) * 2002-08-16 2007-05-01 Silverback Systems Inc. Apparatus and method for transmit transport protocol termination
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US7360220B2 (en) * 2002-10-31 2008-04-15 Intel Corporation Methods and apparatus for multi-threading using differently coded software segments to perform an algorithm
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US20050039189A1 (en) * 2003-08-14 2005-02-17 Todd Anderson Methods and apparatus to preemptively compile an application
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US20050251649A1 (en) * 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8195922B2 (en) * 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US8249848B2 (en) * 2007-09-05 2012-08-21 International Business Machines Corporation Verifying a processor design using a processor simulation model
JP5333433B2 (ja) 2008-02-26 2013-11-06 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
WO2010021119A1 (ja) * 2008-08-21 2010-02-25 パナソニック株式会社 命令制御装置
CN105677253B (zh) * 2016-01-07 2018-09-18 浪潮(北京)电子信息产业有限公司 一种io指令处理队列的优化方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0433864A2 (de) * 1989-12-21 1991-06-26 Intel Corporation Minimierung von Pipelineunterbrechungen mittels Software-Ablaufplanungsverfahren während der Kompilation

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226125A (en) * 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0433864A2 (de) * 1989-12-21 1991-06-26 Intel Corporation Minimierung von Pipelineunterbrechungen mittels Software-Ablaufplanungsverfahren während der Kompilation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US-Buch: Kai Hwang, Faye A. Briggs, "Computer Architecture and Parallel Processing", Mc Graw Hill Book Comp., 1984, S. 20-40 *

Also Published As

Publication number Publication date
US5404469A (en) 1995-04-04
JP2928695B2 (ja) 1999-08-03
JPH07191847A (ja) 1995-07-28
DE4217012C2 (de) 1998-12-10

Similar Documents

Publication Publication Date Title
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69909829T2 (de) Vielfadenprozessor für faden-softwareanwendungen
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE69722138T2 (de) Code-Optimierer für Pipeline-Rechner
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE69831344T2 (de) Effiziente verarbeitung von gebündelten sprungbefehlen
US5386562A (en) Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE3638572A1 (de) Vektorprozessor
DE10306051B4 (de) Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren
DE4216905A1 (de) Superskalarprozessor
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: TRANSPACIFIC IP LTD., TAIPEH/T AI-PEI, TW

8328 Change in the person/name/address of the agent

Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCHAFT

R071 Expiry of right
R071 Expiry of right