AT503171A2 - Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen - Google Patents

Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen Download PDF

Info

Publication number
AT503171A2
AT503171A2 AT0005906A AT592006A AT503171A2 AT 503171 A2 AT503171 A2 AT 503171A2 AT 0005906 A AT0005906 A AT 0005906A AT 592006 A AT592006 A AT 592006A AT 503171 A2 AT503171 A2 AT 503171A2
Authority
AT
Austria
Prior art keywords
instructions
stage
control unit
units
arithmetic
Prior art date
Application number
AT0005906A
Other languages
English (en)
Original Assignee
On Demand Microelectronics Gmb
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 On Demand Microelectronics Gmb filed Critical On Demand Microelectronics Gmb
Priority to AT0005906A priority Critical patent/AT503171A2/de
Priority to US11/654,065 priority patent/US20070168645A1/en
Publication of AT503171A2 publication Critical patent/AT503171A2/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description


  Die Erfindung betrifft ein Verfahren sowie eine Prozessoreinrichtung zur bedingten Ausführung von Instruktionen auf einer parallelen Prozessorarchitektur gemäss den einleitenden Teilen der unabhängigen Ansprüche.
Verfahren zur parallelen Ausführung von Instruktionen sowie Prozessorarchitekturen zur Durchführung derartiger Verfahren sind hinlänglich bekannt.

   Beispielsweise ist aus der WO 2004/015561 ein Prozessor zur parallelen Verarbeitung von Instruktionen bekannt, insbesondere von langen Instruktionswörtern, VLIWs genannt (VLIW - Very Long Instruction Words) , die in Speichereinheiten vorliegen, wobei die Instruktionen jeweils aus Segmenten bestehen; diese Instruktionen werden an Ausführungseinheiten zum Ausführen der Instruktionen übergeben, wobei Übergabeeinheiten vorgesehen sind, die so ausgebildet sind, dass sie nur diejenigen Segmente der Instruktionen übergeben, welche wesentliche Informationen enthalten.
Nachteilig bei diesem Prozessor, wie auch bei anderen bekannten Prozessoren, ist, dass messbare Leistungs- bzw.

   Durchsatzverluste auftreten, wenn im Fall von bedingten Anweisungen bzw. bei Sprunganweisungen die Instruktionskette, welche in einzelnen Recheneinheiten des Prozessors bearbeitet wird, unterbrochen wird, da zuvor die Ergebnisse von bestimmten Recheneinheiten abgewartet werden müssen, wobei dann in vielen der Recheneinheiten für einen Taktzyklus oder mehrere Taktzyklen keine Instruktionsverarbeitung erfolgt.
Aufgabe der vorliegenden Erfindung ist es somit, hier Abhilfe zu schaffen und die Anzahl der bearbeiteten Instruktionen pro Zeiteinheit zu erhöhen, um dadurch eine hohe Leistung bzw. einen hohen Datendurchsatz des Prozessors zu erzielen.
Diese Aufgabe wird durch das erfindungsgemässe Verfahren bzw. die erfindungsgemässe Prozessoreinrichtung gemäss den unabhängigen Ansprüchen gelöst.

   Vorteilhafte Ausführungsformen und Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
Bei der erfindungsgemässen Technik ist vorgesehen, dass die Instruktionen im Fall von Bedingungen zu Gruppen zusammengefasst bzw. gekoppelt werden, wobei die so gekoppelten Instruktionen parallel ausgeführt werden und das Rechenergebnis, je nach Zutreffen der Bedingung, durch die Kontrolleinheit weitergeleitet wird, wodurch ein Abbrechen der Instruktionskette unterbunden wird, so dass die vorhandenen Recheneinheiten eine verbesserte Auslastung aufweisen und Leerlaufzyklen vermieden werden. Die Gruppierung von Instruktionen wird durch zumindest eine Kontrolleinheit ermöglicht, welche als Logikschaltung, vorzugsweise in Form von zumindest einem integrierten Schaltkreis, ausgebildet ist.

   Durch dieses Kontrolleinheit, die entsprechende Informationen beispielsweise von der Instruktionen-Dekodierstufe erhält, können Recheneinheiten, die eine Bedingung oder einen Sprungbefehl enthalten, mit jeweils zumindest einer weiteren Recheneinheit gekoppelt werden, so dass die genannten Gruppen gebildet werden, die parallel zueinander abgearbeitet werden, so dass die bessere Prozessorauslastung erzielt wird.
Von Vorteil ist weiterhin, wenn automatisch, falls keine anderen Informationen vorliegen, die Recheneinheiten jeweils mit den Recheneinheiten mit nächstniedrigen Nummern gekoppelt werden, d.h. wenn als "default<[Lambda]>-Information vorgesehen wird, dass z.B. die eine bedingte Instruktion enthaltende Recheneinheit mit der Nummer i automatisch mit der Recheneinheit mit der Nummer (i-1) gekoppelt wird.

   Dadurch kann der Programmfluss übersichtlich gehalten werden.
Ebenso ist von Vorteil, wenn die in den Recheneinheiten der Ausführungsstufe enthaltenen Instruktionen mit Instruktionen in der Lade- bzw. Dekodierstufe, welche sonst erst in nachfolgenden Taktzyklen bearbeitet werden würden, gekoppelt werden können, wodurch eine weitere Straffung des Programmablaufes zu erwarten ist.
Prozessorseitig ist günstig, wenn die Lade- und/oder die Dekodierstufe als zentrale Stufen für die folgende Ausführungsstufe ausgebildet sind, wodurch die Rechnerarchitektur weniger komplex gehalten werden kann.
Die zumindest eine Kontrolleinheit ist vorzugsweise so eingerichtet, dass sie sowohl mit jeder der Recheneinheiten als auch mit der Lade- und der Dekodierstufe kommunizieren und Daten von dort übernehmen bzw.

   dorthin abgeben kann.
Die Erfindung wird im Folgenden anhand bevorzugter Ausführungsbeispiele, auf die sie nicht beschränkt sein soll, und unter Bezugnahme auf die Zeichnungen, noch weiter erläutert. Es zeigen: Fig. 1 eine schematische Darstellung eines regulären Parallelbetriebs eines Prozessors mit vier parallelen Recheneinheiten; Fig. 2 eine beispielhafte Darstellung von Lade-, Dekodier- und Ausführungsstufen einer parallelen Rechnerarchitektur; Fig. 3 eine stark schematisierte Darstellung einer erfindungsgemässen Prozessoreinrichtung mit einer parallelen Rechnerarchitektur; Fig. 4 ein Ausführungsbeispiel für die bedingte Ausführung von paarweise gekoppelten Recheneinheiten; Fig. 5 ein Ausführungsbeispiel für die bedingte Ausführung mit mehreren Bedingungen; Fig. 6 ein Ausführungsbeispiel für die bedingte Ausführung von sechs paarweise gekoppelten Recheneinheiten;

   Fig. 7 ein Ausführungsbeispiel für die bedingte Ausführung von drei an eine Recheneinheit gekoppelten Bedingungen; Fig. 8 ein
Ausführungsbeispiel für die bedingte Ausführung von zwei an eine Bedingung gekoppelten Recheneinheiten, wobei ein Wenn-Zweig ausgeführt wird, wenn die Bedingung zutrifft, und ein Sonst-Zweig, wenn die Bedingung nicht zutrifft;

   Fig. 9 ein Ausführungsbeispiel für die bedingte Ausführung von mehreren, an eine Bedingung gekoppelten Recheneinheiten, wobei ein Wenn-Zweig ausgeführt wird, wenn die Bedingung zutrifft, und ein SonstZweig, wenn die Bedingung nicht zutrifft; und Fig. 10 ein Ausführungsbeispiel für die bedingte Ausführung von mehreren, an eine Bedingung gekoppelten Recheneinheiten sowie Instruktionen aus der Dekodier- und Ladestufe.
Zum besseren Verständnis der Erfindung wird im Folgenden zunächst auf einige, das Verständnis der Erfindung erleichternde grundsätzliche Gegebenheiten bei üblichen Prozessorarchitekturen eingegangen.
In modernen Rechnerarchitekturen werden zur Erhöhung des Durchsatzes mehrere parallel angeordnete Recheneinheiten eingesetzt.

   Die Steigerung des Durchsatzes wird durch die parallele und gleichzeitige Ausführung von mehreren Instruktionen erreicht, wobei in der Regel jede Recheneinheit zu einem Taktimpuls eine Instruktion ausführt.
Eine Methode, die Instruktionen aus einem zentralen Instruktionsspeicher den die Instruktionen ausführenden parallelen Recheneinheiten zuzuführen ist, sogenannte VLIWs, das sind "lange Instruktionswörter" (VLIW - Very Long Instruction Words) einzusetzen. VLIWs enthalten die Instruktionswörter für alle parallelen Recheneinheiten des Prozessors, die in einem Takt ausgeführt werden. Diese VLIWs werden durch eine für alle parallelen Recheneinheiten zentrale Ladestufe in den Prozessor geladen.

   Die VLIWs werden in der Regel sequentiell aus dem Instruktionsspeicher geladen, wodurch man von einem "Progra mfluss" bzw. einem "Instruktionsstrom" spricht.
Zur Bearbeitung von Instruktionen verwendet ein Prozessor üblicherweise drei Stufen: in der ersten Stufe, der Ladestufe, wird wie oben erwähnt ein Instruktionswort in den Prozessor geladen. Die zweite Stufe, die Dekodierstufe, bricht die einzelnen Instruktionen des VLIWs für jede parallele Recheneinheit separat in Subinstruktionen auf, die die parallele Recheneinheit in der folgenden dritten Stufe, der Ausführungsstufe, zur Verarbeitung der Instruktion benötigt. Die Äusführungsstufe schliesslich führt die Instruktion aus. Jede Stufe führt ihre Aufgabe in einem Taktzyklus aus und gibt das Resultat an die folgende Stufe weiter.

   Eine heute übliche Technik ist es daher, die Stufen ebenfalls parallel verarbeitend auszuführen. Das bedeutet, dass in einem Taktzyklus für jede parallele Recheneinheit eine Instruktion in der Ausführungsstufe ausgeführt wird, während die nächste Instruktion bereits in der Dekodierstufe vorbereitet und die übernächste Instruktion durch die Ladestufe vom Instruktionsspeicher geladen wird. Dieses Verfahren wird InstruktionsPipeline genannt.
Wenn zur gleichen Zeit pro Taktzyklus eine unterschiedliche Instruktion pro paralleler Recheneinheit auf für jede Recheneinheit unterschiedliche Daten ausgeführt wird, spricht man von MIMD-Architekturen (MIMD - Multiple Instruction Multiple Data) . Bei sequentieller Bearbeitung und Generierung von Ausgabedaten spricht man von einem "Datenfluss" .

   Unter SIMD-Architekturen (SIMD - Single Instruction Multiple Data) wiederum versteht man Rechnerarchitekturen, die pro Taktzyklus eine einzige Instruktion auf mehrere parallele Datenströme zugleich anwenden. Dies wird dadurch erreicht, dass die parallelen Recheneinheiten dieselbe Instruktion ausführen.
Parallele Recheneinheiten arbeiten in einem Instruktionsstrom rein parallel und voneinander unabhängig, wobei die Ausführungsstufen die Ausführung in anderen Stufen innerhalb desselben Takts nicht beeinflussen.
"Unbedingte Sprünge" stellen für moderne Rechnerarchitekturen kaum ein Problem dar, vorausgesetzt, die Sprungadresse muss nicht berechnet werden.

   Ist die Sprungadresse vorgegeben, kann die Ladestufe schon beim nächsten Takt das VLIW von der neuen, durch die Sprungadresse vorgegebenen Position aus dem Instruktionsspeicher laden.
Unter einem sogenannten "bedingten Sprung" versteht man die Verzweigung zu einem Instruktionswort an einer beliebigen Adresse im Instruktionsspeicher in Abhängigkeit von einer vorgegebenen Bedingung, das heisst, es wird nur verzweigt, wenn die Bedingung zutrifft; andernfalls wird mit dem unmittelbar folgenden Instruktionswort fortgesetzt.
Ein bedingter Sprung bzw. ein Sprung, bei dem die Sprungadresse berechnet werden muss, kann nicht so einfach wie ein unbedingter Sprung aufgelöst werden, da die Sprungadresse der dem Sprungbefehl folgenden Instruktion erst in der Ausführungsstufe berechnet wird.

   Das bedeutet, dass in diesen Fällen zuerst die Sprungadresse durch die Ausführungsstufe berechnet werden muss, und erst mit dem nächsten Takt kann die Ladestufe die folgende Instruktion von der neuen Adresse laden. Die oben beschriebene dreistufige Pipeline ist somit in diesem Fall für zwei Taktzyklen unterbrochen, was sich bei häufig vorkommenden bedingten Sprüngen oder Sprüngen, bei denen die Sprungadresse berechnet werden muss, durch Leistungsverlust, gemessen in Instruktionen pro Zeiteinheit, merklich auswirkt.
Zur Vermeidung von Leistungsverlusten, die aus bedingten Sprüngen resultieren, wurden daher bereits Verfahren vorgeschlagen, die die Bedingungen und somit die Sprungadressen bedingter Sprünge vorhersagen oder beide mögliche Adressen (die Adressen der nächsten Instruktionswörter bei zutreffender oder nicht zutreffender Bedingung)

   verfolgen und in für die eine Recheneinheit parallelen Lade- und Dekodierstufen parallel vorbereiten. Je nachdem, ob die Bedingung zutrifft oder nicht, wird das nächste Instruktionswort von der einen oder der anderen Dekodierstufen in die Ausführungsstufe geladen. Dies erfordert aber eine Verdoppelung der Dekodierstufe und somit eine beträchtliche Erhöhung des Aufwands bei der Rechnerarchitektur.
Das vorliegende Verfahren umgeht die Leistungs- und somit Durchsatzverluste durch die Möglichkeit, parallele Recheneinheiten in der Ausführungsstufe zu koppeln, wodurch auch neue Programmierkonzepte eingesetzt werden können.
Fig. 1 zeigt ganz schematisch eine beispielhafte Ausführungsstufe 3 eines Prozessors 1 (vgl. auch Fig. 3) mit vier parallelen Recheneinheiten 2 (im Einzelnen 2.1 bis 2.4) gemäss dem Stand der Technik zur besseren Übersicht untereinander angeordnet.

   Jede Recheneinheit 2 kann Instruktionen unabhängig von den anderen Recheneinheiten ausführen. Dieser Betrieb wird "regulärer Parallelbetrieb" genannt. Jede Recheneinheit 2 lädt die auszuführende Instruktion von der in Fig. 1 nicht weiter dargestellten vorgelagerten Dekodierstufe und führt die Operation auf dem zur Verfügung stehenden, ebenfalls nicht weiter dargestellten Registersatz aus.
Der Registersatz Rl bis Rn (7 in Fig. 3) ist für alle parallelen Recheneinheiten 2 derselbe.

   Beim Programmieren des Maschinencodes bzw. für den Compiler, der den Maschinencode aus einer höheren Programmiersprache erzeugt, muss dafür Sorge getragen werden, dass sich zwei parallel ausgeführte Instruktionen in den parallelen Recheneinheiten 2 durch die Verwendung gleicher Register nicht beeinflussen.
Fig. 2 zeigt abstrakt die Instruktions-Pipeline für jede der vier parallelen Recheneinheiten 2 aus Fig. 1. Zum besseren Verständnis sind in diesem Beispiel nur einfache, unmittelbar auf dem Registersatz ausführbare Rechenoperationen, z.B. RI = R2 + R3 usw., siehe Fig. 1 und 2, gezeigt.

   Zuunterst ist in Fig. 2 schematisch eine Ladestufe 4 dargestellt, gefolgt von einer Dekodierstufe 5 und der Ausführungsstufe 3.
Das vorliegende, anhand der Fig. 4 bis 10 noch näher zu beschreibende Verfahren beruht auf einer in Fig. 3 schematisch dargestellten, gegenüber bisherigen Rechnern abgeänderten Rechnerarchitektur. In einem Prozessor 1 führen mehrere parallele Recheneinheiten 2 einen Instruktionsstrom im SIMD- oder MIMD-Modus aus und bearbeiten lesend bzw. schreibend Daten in einem Registersatz 7 oder in getrennten Datenspeichern 8.

   Die n Recheneinheiten 2 (im vorliegenden Beispiel ist n=4) des Prozessors 1 in der Ausführungsstufe 3 sind durchnummeriert und mit AI bis A4, allgemein An bezeichnet, wobei das in Fig. 3 dargestellte Ausführungsbeispiel mit den vier Recheneinheiten 2, aber nicht einschränkend zu verstehen ist und auch eine andere Anzahl n von Recheneinheiten 2 (z.B. acht Recheneinheiten 2) denkbar ist .
Die Recheneinheiten 2 (bzw.

   An) der Ausführungsstufe 3 werden im Folgenden der Einfachheit halber in ihrer Gesamtheit mit dem Bezugszeichen 2 bezeichnet; wenn jedoch nur auf eine oder einzelne der n (vier) Recheneinheiten 2 Bezug genommen wird, werden diese mit AI bis A4 bezeichnet.
Im regulären Parallelbetrieb führen die Recheneinheiten 2 der Ausführungsstufe 3 jeweils Instruktionen aus, die den Programmablauf der anderen parallelen Recheneinheiten 2 nicht beeinflussen, also für jeden Takt unabhängig voneinander sind.
Fig. 3 zeigt einen Überblick über den Prozessor 1 mit einer dreistufigen Instruktions-Pipeline, die wie erwähnt aus der Ladestufe 4, der Dekodierstufe 5 und den parallelen Recheneinheiten 2 der Ausführungsstufe 3 besteht.

   Die tatsächliche Länge der Pipeline, i.e. die Anzahl der Stufen, aus denen die Pipeline besteht, ist dabei für die vorliegende Technik von untergeordneter Bedeutung. Weiterhin sind gemäss Fig. 3 ein Instruktionsspeicher 6, aus welchem die Instruktionen geladen werden, ein Registerbereich oder -satz 7 sowie Datenspeicher 8 zur Speicherung der Ergebnisse der Rechenvorgänge vorgesehen. Beim dargestellten Prozessor 1 ist der Progra mfluss in den parallelen Recheneinheiten 2 der Ausführungsstufe 3 durch wenigstens eine Kontrolleinheit 9 für jeden Taktzyklus beeinflussbar. Bei der Architektur von Fig. 3 ist auch die Verbindung einer solchen Kontrolleinheit 9 mit den Stufen 3, 4 und 5 gezeigt. Die Kontrolleinheit 9 kann als beliebiger logischer Schaltkreis ausgeführt werden.

   Sie erhält Instruktionen aus einer der Ausführungsstufe 3 vorangehenden Stufe, beispielsweise aus der Dekodierstufe 5, zur Bildung von Gruppen von Recheneinheiten 2 zwecks gekoppelter Verarbeitung von Instruktionswörtern. Ferner erhält die Kontrolleinheit 9 auch Signale von beliebig vielen gekoppelten parallelen Recheneinheiten 2, die ihr signalisieren, ob Bedingungen in den Instruktionen enthalten sind. Die Kontrolleinheit 9 wiederum sendet Signale an alle Recheneinheiten 2 oder an eine Auswahl von Recheneinheiten 2, um die Rechenoperationen in diesen Recheneinheiten 2 im Fall einer bedingten Ausführung zu steuern. Diese Steuerung wird beispielsweise derart realisiert, dass garantiert werden kann, dass sowohl die Laufzeiten der Signale als auch die Anwortzeiten der Kontrolleinheit 9 extrem kurz gehalten sind und die Funktion der Ablaufsteuerung garantiert ist.

   Die Kontrolleinheit 9 erhält Signale und Instruktionen aus der Dekodierstufe 5 und Signale aus den Exekutionsstufen 3 der Recheneinheiten 2.
Gemäss Fig. 3 empfängt die Kontrolleinheit 9 Signale von allen parallelen Recheneinheiten 2, und sie sendet Signale an alle parallelen Recheneinheiten 2. Sie erhält auch ggf. Instruktionen zur Interpretation der bedingten Ausführung der Recheneinheiten 2 von der Dekodierstufe 5.

   Die entsprechenden Informationsflüsse sind in Fig. 3 durch die Pfeile verdeutlicht.
Aufgabe der Kontrolleinheit 9 ist es, den Programmfluss in den parallelen Recheneinheiten 2 zu steuern und beliebige Recheneinheiten 2 für einzelne oder mehrere Taktzyklen entsprechend dem Programmablauf, wenn erforderlich, zu koppeln, wie im Folgenden näher erläutert wird.
Ein Beispiel für eine erfindungsgemässe Kopplung von Recheneinheiten 2 ist schematisch in Fig. 4 gezeigt. Die Recheneinhei ten AI und A3 enthalten je einen Additionsbefehl (RI = R2 + R3 bzw. Rll = R12 + R13), die Recheneinheiten A2 und A4 enthalten je eine Bedingung (R4 > R5 bzw. R14 > R15) . Die Kontrolleinheit 9 schaltet im gezeigten Ausführungsbeispiel automatisch die Recheneinheiten AI und A2 sowie die Recheneinheiten A3 und A4 zusammen.

   Durch das Zusammenschalten ergeben sich folgende Operationen:
Wenn die Bedingung in A2 (nämlich R4 > R5) wahr ist, dann führe
AI aus (d.h. berechne RI = R2 + R3) .
Wenn die Bedingung in A4 (R14 > R15) wahr ist, dann.führe A2 (Rll = R12 + R13) aus.
Die Kontrolleinheit 9 übernimmt verschiedene weitere Aufgaben, nicht nur jene zur Steuerung der bedingten Ausführung; sie steuert die gesamte Abarbeitung in der Exekutionssufe 3. Sie erhält Signale aus der Dekodierstufe 5, aber auch aus den Recheneinheiten 2. Das ist eine an sich übliche Technik.
Im vorliegenden Fall bekommt die Kontrolleinheit 9 Informationen, welche Recheneinheiten 2 Bedingungen enthalten, um die Kopplungen bilden zukönnen.

   Es ist aber für das Verfahren nicht wichtig, ob die Kontrolleinheit 9 diese Informationen zur Zusammenschaltung von Recheneinheiten 2 aus der Dekordierstufe 5 oder aus den Recheneinheiten 2 erhält.
Wenn die Kontrolleinheit 9 selbst nicht durch Signale, z.B. aus der Dekodierstufe 5 zu einem anderen Verhalten angesteuert wird, sich also in einer Grundstellung befindet, so ordnet die Kontrolleinheit 9 innerhalb jedes Taktzyklus jenen parallelen Recheneinheiten 2, die eine Bedingung enthalten, die entsprechend vorhergehende Recheneinheit 2 , d.h. die Recheneinheit 2 mit der nächstniedrigen Nummer zu. In dem Ausführungsbeispiel gemäss Fig. 4 wird der Recheneinheit A2 die Recheneinheit AI und der Recheneinheit A4 die Recheneinheit A3 zugeordnet.

   Die so gebildeten Gruppen werden parallel, also unabhängig voneinander und gleichzeitig, ausgeführt.
Bedingungen können auch verknüpft werden, wie Fig. 5 zeigt. Die Kontrolleinheit 9 ordnet automatisch der Recheneinheit A2 die Recheneinheit AI zu, und überdies wird die Recheneinheit A3 mit der Recheneinheit A2 gekoppelt. Dadurch wird erreicht, dass der Ausdruck, der in AI steht, nur dann ausgeführt wird, wenn die beiden Bedingungen in A2 und A3 zutreffen. Die Recheneinheit A4 folgt keiner Bedingung, sie wird unbedingt ausgeführt. Fig. 5 besagt also:
Wenn die Bedingungen in A2 (R4 > R5) und A3 (R5 < R6) wahr sind, dann führe AI (RI = R2 + R3) aus. Führe A4 (R7 =...R8 + R9) unbedingt aus.
Fig. 6 zeigt ein Ausführungsbeispiel mit sechs parallelen Recheneinheiten 2 bzw.

   AI bis A6, wobei den Recheneinheiten A2, A4 und A6, die je eine Bedingung enthalten, automatisch, d.h. ohne jede weitere Instruktion an die Kontrolleinheit 9, jeweils die vorhergehenden Recheneinheiten mit der niedrigeren Nummer, also AI, A3 und A5, zugeordnet werden. Das Ausführungsbeispiel aus Fig. 6 lässt sich demgemäss wie folgt interpretieren:
Wenn die Bedingung in A2 wahr ist, dann führe AI aus. Wenn die Bedingung in A4 wahr ist, dann führe A3 aus. Wenn die Bedingung in A6 wahr ist, dann führe A5 aus.
Die Kontrolleinheit 9 ist, wie oben beschrieben, für das Koppeln von parallelen Recheneinheiten 2 verantwortlich. Ohne weitere direkte Instruktionen an die Kontrolleinheit 9 wird einer Bedingung jeweils nur eine Recheneinheit 2 zugeordnet, nämlich jene mit der nächstniedrigen Nummer.

   Die Kontrolleinheit 9 kann aber auch durch Signale der der Ausführungsstufe 3 vorgelagerten Stufe, also der Dekodierstufe 5, gesteuert werden, da sie neben der Kopplung von parallelen Recheneinheiten 2 die gesamte Steuerung des Programmflusses übernimmt. Durch spezielle Instruktionen der Dekodierstufe 5, die diese aus dem VLIW expandiert, kann die Kontrolleinheit 9 auch angewiesen werden, beliebig viele Recheneinheiten 2 an die die Bedingung enthaltende Recheneinheit 2 zu koppeln.
Vorstehend wurde - ohne Beschränkung der Allgemeinheit - die Konvention eingeführt, dass eine Bedingung nur an eine bestimmte Anzahl unmittelbar vor der die Bedingung enthaltende Rechen einheit 2 stehenden Recheneinheiten 2 mit kleineren Nummern Ai gekoppelt werden kann, wobei diese Recheneinheiten 2 mit den kleineren Nummern im Fall einer zutreffenden Bedingung ausgeführt werden.

   Der Kontrolleinheit 9 wird also von der Dekodierstufe 5 die Anzahl der Recheneinheiten 2 für jede Bedingung in der Ausführungsstufe 3 mitgegeben. Wird für eine Bedingung keine Anzahl angegeben, so wird die Bedingung nur an die unmittelbar voranstehende Recheneinheit 2 gekoppelt, wie oben beispielhaft erläutert wurde.
Fig. 7 zeigt ein Ausführungsbeispiel für eine Kopplung mehrerer Recheneinheiten 2. Die Kontrolleinheit 9 wurde angewiesen, drei Recheneinheiten 2, nämlich die Recheneinheiten AI, A2 und A3, an die Bedingung gemäss der Recheneinheit A4 zu koppeln. Die Instruktionen in den Recheneinheiten A5 und A6 werden weiters unbedingt ausgeführt. Es gilt also hier:
Wenn die Bedingung in A4 wahr ist, dann führe AI, A2 und A3 aus.

   Führe A5 und A6 unbedingt aus.
Einer Bedingung können aber auch Recheneinheiten 2 zugeordnet werden, deren Operationen dann ausgeführt werden, wenn die Bedingung nicht zutrifft. Dieses Verhalten kann ebenfalls durch Signale der Kontrolleinheit 9 gesteuert werden. Die Kontrolleinheit 9 erhält die Instruktion dazu wiederum von der Dekodierstufe 5. In Fig. 8 enthält die Recheneinheit A4 eine Bedingung (RIO > Rll) . Die an diese Recheneinheit A4 gekoppelte Recheneinheit A3 wird nur dann ausgeführt, wenn diese Bedingung gemäss A4 zutrifft. Die Recheneinheit A5 wird hingegen dann ausgeführt, wenn die Bedingung gemäss A4 nicht zutrifft. Die Instruktion zur bedingten Ausführung, die die Kontrolleinheit 9 von der Dekodierstufe 5 erhält, ist also: 1 Recheneinheit für A4 im "Sonst-Zweig".

   Fig. 8 steht somit für:
Wenn die Bedingung in A4 (RIO > Rll) wahr ist, dann führe A3 (R7 = R8 + R9) aus; sonst führe A5 (R12 = R13 + R14) aus. Führe AI, A2 und A3 unbedingt aus.
Wie schon in Fig. 7 dargestellt, können einer einzelnen Be dingung durch die Kontrolleinheit 9 mehrere Recheneinheiten 2 zugeordnet werden.

   Das gilt nicht nur für den "Wenn"-Zweig bzw. "Ist"-Zweig, also für jene Recheneinheiten 2, die ausgeführt werden, wenn die Bedingung zutrifft, sondern auch für den "Sonst"-Zweig, also für jene Recheneinheiten 2, die ausgeführt werden, wenn die Bedingung nicht zutrifft.
Fig. 9 zeigt ein Ausführungsbeispiel, in dem alle verfügbaren Recheneinheiten 2, im Ausführungsbeispiel sechs, durch die Bedingung gemäss A4 (RIO > Rll) gekoppelt sind:
Wenn die Bedingung in A4 wahr ist, dann führe AI, A2 und A3 aus; sonst führe A5 und A6 aus.
Die Instruktion zur bedingten Ausführung, die die Kontrolleinheit 9 von der Dekodierstufe 5 erhält, lautet für das Beispiel von Fig. 9 also:

   "3 Recheneinheiten für A4 im IstZweig, 2 Recheneinheiten im Sonst-Zweig" .
Ein Vorteil der beschriebenen Technik zur bedingten Ausführung von Instruktionen in parallelen Recheneinheiten 2 liegt darin, dass einerseits für die Bedingung die volle Funktionalität einer Recheneinheit 2 verwendet werden kann, andererseits das Verhalten von allen anderen parallelen Recheneinheiten 2, die auf demselben Registersatz 6 operieren, für denselben Taktzyklus beeinflusst werden kann. Darüber hinaus können alle zur Verfügung stehenden Recheneinheiten 2 sehr einfach an eine Bedingung gekoppelt sein.
Eine gültige Instruktion kann aber auch eine Sprunganweisung sein, d.h. eine Instruktion kann zu einer anderen Stelle im Programmfluss verzweigen.

   Ein bedingter Sprung wird wie eine reguläre bedingte Instruktion nur ausgeführt, wenn die Bedingung in jener Recheneinheit 2 zutrifft, die der Recheneinheit 2 zugeordnet ist, die die Sprunganweisung enthält.
Die Zuordnung von parallelen Recheneinheiten 2 zu den Bedingungen erfolgt durch die Kontrolleinheit 9, deren Verhalten, wie oben erläutert, auch durch Instruktionen, die im jeweiligen VLIW enthalten sind, beeinflusst werden kann.
Die Kontrolleinheit 9 kann aber auch eine kausale Kopplung der Bedingung, die in einer parallelen Recheneinheit 2 enthalten ist, mit den in den folgenden Taktzyklen ausgeführten Instruktionen herstellen, in der Art, dass die Kontrolleinheit 9 angewiesen werden kann, die Bedingung einer Recheneinheit 2 in der Ausführungsstufe 3 zusätzlich oder ausschliesslich mit einer oder mehreren Instruktionen zu koppeln, die in der Dekodierstufe 5 bzw.

   der Ladestufe 4 enthalten sind, die also erst mit den kommenden Taktzyklen ausgeführt werden. Die Instruktion der Dekodierstufe 5 an die Kontrolleinheit 9 kann also beispielsweise heissen: "3 Recheneinheiten in Ausführungs-, 2 in Decodier- und 2 in Ladestufe im Wenn-Zweig", wodurch, gesteuert durch die Bedingung in der Ausführungsstufe 3, sowohl die drei Recheneinheiten 2 mit den nächstniedrigen Nummern als auch die je zwei Recheneinheiten 2 der Decodierstufe 5 und der Ladestufe 4 mit den nächstniedrigen Nummern, die an der Position unmittelbar vor der Bedingung stehen, ausgeführt werden.

   Fig. 10 zeigt ein entsprechendes Ausführungsbeispiel, in dem in der Ausführungsstufe die Bedingung der Recheneinheit A4 mit den Recheneinheiten AI, A2 und A3 sowie weiters mit den Recheneinheiten A2 und A3 im nächsten (siehe Dekodierstufe 5) bzw. auch im wieder darauffolgenden (übernächsten) Taktzyklus (siehe Ladestufe 4) verknüpft werden.
Die Erfindung ist nicht auf die dargestellten Ausführungsbeispiele beschränkt. Insbesondere ist die Erfindung bei entsprechender Anpassung der Architektur auch für mehr als sechs parallel angeordnete Recheneinheiten anwendbar. Alle Merkmale der Erfindung sind beliebig miteinander kombinierbar.

Claims (20)

Patentansprüche
1. Verfahren zur bedingten Ausführung von Instruktionen in parallelen Recheneinheiten (2) eines Prozessors (1), wobei Instruktionen in einer Ladestufe (4) aus Speichereinheiten (6) ausgelesen, in einer Dekodierstufe (5) dekodiert und in einer Ausführungsstufe (3) ausgeführt werden, und wobei Informationen betreffend die Kopplung von Instruktionen und den Wahrheitswert von Bedingungen mindestens einer Kontrolleinheit (9) zugeführt werden, dadurch gekennzeichnet, dass Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) mit Hilfe der zumindest einen Kontrolleinheit (9) in Entsprechung zu den Informationen an die Kontrolleinheit (9) miteinander gekoppelt werden.
1. Verfahren zur bedingten Ausführung von Instruktionen in parallelen Recheneinheiten (2) eines Prozessors (1), wobei Instruktionen in einer Ladestufe (4) aus Speichereinheiten (6) ausgelesen, in einer Dekodierstufe (5) dekodiert und in einer Ausführungsstufe (3) ausgeführt werden, dadurch gekennzeichnet, dass Instruktionen in Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) mit Hilfe zumindest einer Kontrolleinheit
(2; AI, A2, ... An) durch die zumindest eine Kontrolleinheit (9) steuerbar ist.
(2; AI, A2, ... An) miteinander gekoppelt werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zumindest einen Kontrolleinheit (9) von den Recheneinheiten (2; AI, A2, ... An) Signale betreffend ihre Kopplung zugeführt werden.
(2; AI, A2, ... An) durch die zumindest eine Kontrolleinheit (9) steuerbar ist.
(2; AI, A2, ... An) miteinander gekoppelt werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass gekoppelte Recheneinheiten (2; AI, A2, ... An) der zumindest einen Kontrolleinheit (9) signalisieren, ob sie Bedingungen oder Sprunganweisungen enthalten.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) Signale an Recheneinheiten (2; AI, A2, ... An) für die Steuerung der Ausführung von Bedingungen, Instruktionen oder Sprunganweisungen sendet.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) Signale an Recheneinheiten (2; AI, A2, ... An) für die Steuerung der Ausführung der Bedingungen oder Sprunganweisungen sendet.
4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) Informationen betreffend die Kopplung von Recheneinheiten (2; AI, A2, ... An) von der Dekodierstufe (5) und/oder der Ladestufe (4) zugeführt erhält.
4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) Instruktionen zur Interpretation der Bedingungen oder Sprunganweisungen einer oder mehrerer der Recheneinheiten (2; AI, A2, ... An) von der Dekodierstufe (5) und/oder der Ladestufe (4) erhält.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Kopplung der Recheneinheiten (2; AI, A2, ... An) jeweils für einen oder mehrere Taktzyklen des Prozessors (1) erfolgt.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Kopplung der Recheneinheiten (2; AI, A2, ... An) jeweils für einen oder mehrere Taktzyklen des Prozessors (1) erfolgt.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass Recheneinheiten (An) , die eine Bedingung oder Sprunganweisung beinhalten, bei Fehlen besonderer Kopplungsinformationen jeweils mit der nächstniedrigen Recheneinheit (An-1) gekoppelt werden.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass Recheneinheiten (An) , die eine Bedingung oder Sprunganweisung beinhalten, bei Fehlen besonderer Kopplungsinformationen jeweils mit der nächstniedrigen Recheneinheit (An1) gekoppelt werden.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Instruktionen der jeweils gekoppelten Recheneinheiten (An, An-1) parallel zueinander verarbeitet werden.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Instruktionen der jeweils gekoppelten Recheneinheiten (An, An-1) parallel zueinander verarbeitet werden.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass zwei oder mehr Recheneinheiten (2; AI, A2, ... An) an eine, eine Bedingung oder Sprunganweisung enthaltende Recheneinheit (2; AI, A2, ... An) gekoppelt werden.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass zwei oder mehr Recheneinheiten (2; AI, A2, ... An) an eine, eine Bedingung oder Sprunganweisung enthaltende Recheneinheit (2; AI, A2, ... An) gekoppelt werden.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) von der Dekodierstufe (5) zumindest die Information erhält, wie viele der Recheneinheiten
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) von der Dekodierstufe (5) zumindest die Information erhält, wie viele der Recheneinheiten
(9), welcher Informationen betreffend bedingte Instruktionen bzw. Sprunganweisungen zugeführt werden, in Entsprechung zu vorgegebenen Bedingungen in den Instruktionen miteinander gekoppelt werden.
10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass zumindest eine Recheneinheit (2; AI, A2, ... An) von der Kontrolleinheit (9) entsprechend einer in ihr enthaltenen Bedingung einerseits und entsprechend dem Nichtzutreffen dieser Bedingung andererseits mit jeweils zumindest einer adressierten Recheneinheit (2; AI, A2, ... An) gekoppelt wird.
10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass sowohl für den Fall des Zutreffens als auch für den Fall des Nichtzutreffens der in zumindest einer Recheneinheit (2; AI, A2, ... An) enthaltenen Bedingungen diese Recheneinheit mit den jeweils adressierten Recheneinheiten (2; AI, A2, ... An) gekoppelt wird.
11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, dass die Instruktionen in den Recheneinheiten (2; AI, A2, ... An) mit Instruktionen in der Dekodierstufe (5) und/oder mit Instruktionen in der Ladestufe (4) gekoppelt werden.
11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, dass die Instruktionen in den Recheneinheiten (2; AI, A2, ... An) mit Instruktionen in der Dekodierstufe (5) und/oder mit Instruktionen in der Ladestufe (4) gekoppelt werden.
12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, dass die Prüfung der Bedingungen und die Ausführung der daran gekoppelten Instruktion bzw. Recheneinheit (2; AI, A2
... An) in einem Taktzyklus erfolgen.
12. Prozessoreinrichtung (1) mit parallelen Recheneinheiten (2; AI, A2 ... An) zur bedingten Ausführung von Instruktionen, insbesondere von VLIW-Instruktionen mit Speichermitteln (6) zum Speichern der Instruktionen, und einer Ladestufe (4) zum Laden der Instruktionen aus den Speichermitteln (6), mit einer Dekodierstufe (5) zum Aufbrechen der aus der Ladestufe (4) übergebenen Instruktionen und mit einer Ausführungsstufe (3) zum Ausführen der Instruktionen in den parallelen Recheneinheiten, dadurch gekennzeichnet, dass zumindest eine Kontrolleinheit (9) in Form eines logischen Schaltkreises mit der Recheneinheit verbunden ist, um einzelne der Recheneinheiten (2; AI, A2 ... An) entsprechend Bedingungen in den Instruktionen gruppenweise zu koppeln.
13. Prozessoreinrichtung (1) mit parallelen Recheneinheiten (2; AI, A2 ... An) zur bedingten Ausführung von Instruktionen, insbesondere von VLIW-Instruktionen, mit Speichermitteln (6) zum Speichern der Instruktionen, mit einer Ladestufe (4) zum Laden der Instruktionen aus den Speichermitteln (6), mit einer Dekodierstufe (5) zum Aufbrechen der aus der Ladestufe (4) übergebenen Instruktionen, mit einer Ausführungsstufe (3) zum Ausführen der Instruktionen in den parallelen Recheneinheiten, und mit zu mindest einer Kontrolleinheit (9) in Form eines logischen Schaltkreises zum Koppeln von Instruktionen, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) direkt mit den Recheneinheiten (2; AI, A2 ...
An) verbunden ist, um diese Recheneinheiten selbst entsprechend den der Kontrolleinheit (9) zugeführten Informationen betreffend die Kopplung von Instruktionen und den Wahrheitswert von Bedingungen gruppenweise zu koppeln.
13. Prozessoreinrichtung nach Anspruch 12, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) mit der Ladestufe (4) in kommunizierender Verbindung steht.
14. Prozessoreinrichtung nach Anspruch 13, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) mit der Ladestufe (4) in kommunizierender Verbindung steht.
14. Prozessoreinrichtung nach Anspruch 12 oder 13, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) mit der Dekodierstufe (5) in kommunizierender Verbindung steht.
15. Prozessoreinrichtung nach Anspruch 13 oder 14, dadurch gekennzeichnet, dass die zumindest eine Kontrolleinheit (9) mit der Dekodierstufe (5) in kommunizierender Verbindung steht.
15. Prozessorarchitektur nach einem der Ansprüche 12 bis 14, dadurch gekennzeichnet, dass zumindest zwei Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) durch die zumindest eine Kontrolleinheit (9) auf Anweisung aus der Dekodierstufe (5) koppelbar sind.
16. Prozessoreinrichtung nach einem der Ansprüche 13 bis 15, dadurch gekennzeichnet, dass zumindest zwei Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) durch die zumindest eine Kontrolleinheit (9) auf Anweisung aus einer vorangehenden Stufe (5) koppelbar sind.
16. Prozessorarchitektur nach einem der Ansprüche 12 bis 15, dadurch gekennzeichnet, dass auf Signalisierung aus gekoppelten Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) die Ausführung der bedingten Instruktionen in diesen Recheneinheiten
17. Prozessoreinrichtung nach einem der Ansprüche 13 bis 16, dadurch gekennzeichnet, dass auf Signalisierung aus gekoppelten Recheneinheiten (2; AI, A2, ... An) der Ausführungsstufe (3) die Ausführung der bedingten Instruktionen in diesen Recheneinheiten
17. Prozessorarchitektur nach einem der Ansprüche 12 bis 16, dadurch gekennzeichnet, dass die Ladestufe (4) als zentrale Ladestufe (4) für alle Recheneinheiten (2; AI, A2, ... An) des Prozessors (1) ausgebildet ist.
18. Prozessoreinrichtung nach einem der Ansprüche 13 bis 17, dadurch gekennzeichnet, dass die Ladestufe (4) als zentrale Ladestufe (4) für alle Recheneinheiten (2; AI, A2, ... An) des Prozessors (1) ausgebildet ist.
18. Prozessorarchitektur nach einem der Ansprüche 12 bis 17, dadurch gekennzeichnet, dass die Dekodierstufe (5) als zentrale Dekodierstufe (5) für alle Recheneinheiten (2; AI, A2, ... An) des Prozessors (1) ausgebildet ist.
19. Prozessoreinrichtung nach einem der Ansprüche 13 bis 18, dadurch gekennzeichnet, dass die Dekodierstufe (5) als zentrale Dekodierstufe (5) für alle Recheneinheiten (2; AI, A2, ... An) des Prozessors (1) ausgebildet ist.
20. Prozessoreinrichtung nach einem der Ansprüche 13 bis 19, dadurch gekennzeichnet, dass die Prüfung der Bedingung und die Ausführung der damit gekoppelten Instruktion bzw. Recheneinheit (2; AI, AI, ... An) in einem Taktzyklus erfolgen.
AT0005906A 2006-01-16 2006-01-16 Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen AT503171A2 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AT0005906A AT503171A2 (de) 2006-01-16 2006-01-16 Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen
US11/654,065 US20070168645A1 (en) 2006-01-16 2007-01-16 Methods and arrangements for conditional execution of instructions in parallel processing environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT0005906A AT503171A2 (de) 2006-01-16 2006-01-16 Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen

Publications (1)

Publication Number Publication Date
AT503171A2 true AT503171A2 (de) 2007-08-15

Family

ID=38264631

Family Applications (1)

Application Number Title Priority Date Filing Date
AT0005906A AT503171A2 (de) 2006-01-16 2006-01-16 Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen

Country Status (2)

Country Link
US (1) US20070168645A1 (de)
AT (1) AT503171A2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457905B2 (en) * 2005-08-29 2008-11-25 Lsi Corporation Method for request transaction ordering in OCP bus to AXI bus bridge design
KR101645001B1 (ko) 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5036454A (en) * 1987-05-01 1991-07-30 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with overlapped code
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7412591B2 (en) * 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor

Also Published As

Publication number Publication date
US20070168645A1 (en) 2007-07-19

Similar Documents

Publication Publication Date Title
DE69033065T2 (de) Mehrfachbefehlsdecoder
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE68929215T2 (de) Datenprozessor
DE69032381T2 (de) Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor
DE1774296C2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE102007038877B4 (de) Steuervorrichtung mit schneller I/O-Funktion und Steuerverfahren zum Steuern ihrer Daten
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
EP1599794B1 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
CH620779A5 (de)
DE2555963A1 (de) Einrichtung zur funktionsmodifizierung
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE69127182T2 (de) Mehrfachbefehlausgabe
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
EP3417373A1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
EP0325677A2 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE3307194C2 (de)
DE2418921C2 (de) Vorrichtung zum Speichern von Mikroprogrammen in einer Datenverarbeitungsanlage
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen
WO2003060747A2 (de) Reconfigurierbarer prozessor
DE3344340C2 (de) Datenverarbeitungsanordnung zum Durchführen von Mikrobefehlen
AT503171A2 (de) Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen
EP1117037A2 (de) Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads)
DE10359949B4 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Taktzyklusverlust, ohne Umschalt-Programmbefehl und ohne Erweiterung des Programmbefehlsformates

Legal Events

Date Code Title Description
REJ Rejection

Effective date: 20160515