DE19914210A1 - Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung - Google Patents

Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung

Info

Publication number
DE19914210A1
DE19914210A1 DE19914210A DE19914210A DE19914210A1 DE 19914210 A1 DE19914210 A1 DE 19914210A1 DE 19914210 A DE19914210 A DE 19914210A DE 19914210 A DE19914210 A DE 19914210A DE 19914210 A1 DE19914210 A1 DE 19914210A1
Authority
DE
Germany
Prior art keywords
data
subset
instruction
data elements
execution
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
DE19914210A
Other languages
English (en)
Other versions
DE19914210B4 (de
Inventor
Patrice Roussel
Glenn J Hinton
Shreekant S Thakkar
Brent R Boswell
Karol F Menezes
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE19914210A1 publication Critical patent/DE19914210A1/de
Application granted granted Critical
Publication of DE19914210B4 publication Critical patent/DE19914210B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

Bei einem Verfahren bzw. einem Prozessor wird zunächst eine einzelne Makroanweisung empfangen, wobei die einzelne Makroanweisung eine Operation (z. B. ADD, MUL) und wenigstens zwei logische Register (X, Y) einer Registerdatei (480) spezifiziert. Die beiden logischen Register enthalten einen ersten bzw. zweiten gepackten Datenoperanden mit einander entsprechenden Datenelementen. Die von der Makroanweisung spezifizierte Operation wird dann von derselben Schaltung (Ausführungseinheit (ADD, MUL)) zu verschiedenen Zeiten unabhängig zunächst an einer ersten Mehrzahl und dann an einer zweiten Mehrzahl von einander entsprechenden Datenelementen des ersten bzw. zweiten Operanden ausgeführt, um eine erste bzw. eine zweite Mehrzahl von Ergebnisdatenelementen zu erzeugen. Die erste und zweite Mehrzahl von Ergebnisdatenelementen werden als dritter gepackter Daten-Operand (Z) in die Registerdatei (480) gespeichert.

Description

Die Erfindung bezieht sich auf Verfahren und Einrichtun­ gen zum Staffeln der Ausführung einer Anweisung.
Multimedia-Anwendungen, wie 2D/3D-Graphikanwendungen, Bildverarbeitung, Video-Kompression/Dekompression, Spracher­ kennungsalgorithmen und Audio-Verarbeitung erfordern die Durchführung der gleichen Operation an einer großen Anzahl von Datenelementen (bezeichnet als "Datenparallelität"), welche in einer kleinen Anzahl von Bits dargestellt werden können. So werden graphische und Audiodaten typischerweise durch 32 Bits in Gleitkomma-Format und 8 oder 16 Bits in Ganzzahl-Format dargestellt. Gleitkommazahlen werden in einem Computersystem in der Form einer Datenkette mit drei Komponenten dargestellt: Einem Vorzeichen, einem Exponenten (der die Größe der Zahl anzeigt) und einer Kenngröße oder Mantisse (welche den Wert des Bruchteils der Zahl angibt). Jede Art von Multimedia-Anwendung implementiert mindestens einen Algorithmus, wobei jeder Algorithmus eine Anzahl von Gleitkomma- oder Ganzzahl-Operationen, wie Addition (ADD) oder Multiplikation (MUL), erforderlich machen kann.
Einzelanweisungs-Mehrfachdaten(SIMD)-Technologie hat eine beträchtliche Verbesserung in der Multimedia-Anwen­ dungsleistung ermöglicht. Die SIMD-Technologie liefert eine einzige Makroanweisung, deren Ausführung bewirkt, daß der Prozessor die gleiche Operation an mehreren Datenelementen parallel durchführt. Diese Technologie ist insbesondere für Systeme geeignet, welche gepackte Datenformate liefern. Ein gepacktes Datenformat ist ein solches, bei dem die in einem Register befindlichen Bits in eine Anzahl von Datenelementen fester Größe logisch unterteilt werden, wobei jedes Daten­ element einen separaten Wert darstellt. So kann ein 64-Bit- Register in vier 16-Bit-Elemente aufgebrochen werden, von denen jedes einen separaten 16-Bit-Wert darstellt. SIMD- Anweisungen verarbeiten dann separat und parallel jedes Ele­ ment in diesen gepackten Datentypen. Beispielsweise addiert eine gepackte SIMD-ADD-Anweisung zugehörige Datenelemente aus einem ersten gepackten Datenoperanden und einem zweiten gepackten Datenoperanden, wie dies in Fig. 1 dargestellt ist. Insbesondere werden die entsprechenden Datenelemente für X und Y addiert mit dem Ergebnis Z, d. h.
X0+Y0 = Z0, X1+Y1 = Z1, X2+Y2 = Z2 und X3+Y3 = Z3.
Fig. 2A-2B zeigen eine derzeitige Prozessor-Realisie­ rung einer Arithmetik-Logik-Einheit (ALU), die zum Ausführen von SIMD-Anweisungen verwendbar ist. Die ALU gemäß Fig. 2A weist die notwendige Schaltung zur Durchführung von Opera­ tionen an der vollen Breite der Operanden (d. h. allen Daten­ elementen) auf. Fig. 2A zeigt auch, daß die ALU zwei ver­ schiedenartige Ausführungseinheiten zum jeweiligen Ausführen verschiedener Operationsarten enthält (z. B. gewisse ALU's verwenden separate Einheiten zum Durchführen von ADD- und MUL-Operationen). Bei diesem Beispiel ist angenommen, daß die Prozessor-Ausführungsmaschine in der Lage ist, eine Anweisung pro Taktzyklus zu verarbeiten. Die vier ADD-Aus­ führungseinheiten und vier MUL-Ausführungseinheiten sind jeweils in der Lage, als vier separate ADD-Ausführungsein­ heiten und vier separate MUL-Ausführungseinheiten zu arbei­ ten. Alternativ kann die ALU mehrere Gleitkomma-Multiplika­ tion-Akkumulation(FMAC)-Einheiten enthalten, von denen jede mehr als eine Operationsart ausführen kann. Bei den folgen­ den Beispielen wird angenommen, daß ADD- und MUL-Ausfüh­ rungseinheiten verwendet werden; jedoch können auch andere Ausführungseinheiten, wie FMAC, verwendet werden.
Wenn gemäß Darstellung in Fig. 2B zum Zeitpunkt T eine "ADD X,Y"-Anweisung über den Ausgabeport 105 ausgegeben wird, führt jede der vier ADD-Ausführungseinheiten eine ADD- Operation an den separaten gepackten Datenelementen aus. Die vier MUL-Einheiten bleiben zum Zeitpunkt T in Ruhestellung. Angenommen, eine "ADD A,B"-Anweisung wird ausgegeben, so führt zum Zeitpunkt T+1 jede der vier ADD-Ausführungseinhei­ ten erneut eine ADD-Operation an den getrennt gepackten Datenelementen aus, während die vier MUL-Einheiten wiederum im Ruhezustand sind. Wenn eine "MUL X,Y"-Anweisung zum Zeit­ punkt T+2 ausgegeben wird, so führt jede der vier MUL-Ein­ heiten separat eine MUL-Operation an einem der vier gepack­ ten Datenelemente aus, während die vier ADD-Ausführungsein­ heiten im Ruhezustand bleiben. Wenn schließlich zum Zeit­ punkt T+3 eine "ADD S,T"-Anweisung ausgegeben wird, so führt jede der vier ADD-Ausführungseinheiten Additionsoperationen (ADD's) aus, während die vier MUL-Einheiten im Ruhezustand bleiben.
Die oben beschriebene Implementierung kann eine erhebli­ che Menge duplizierter Hardware-Komponenten erforderlich machen und ist bei der Ausnutzung der Hardware-Komponenten (nämlich der ADD- und MUL-Ausführungseinheiten) ineffizient. Zu jeder Zeit bleibt eine Ausführungseinheit im Ruhezustand, während die zweite Ausführungseinheit aktiv ist. Wiederum wird bei diesem Beispiel angenommen, daß die Prozessor-Aus­ führungsmaschine in der Lage ist, eine Anweisung pro Taktzy­ klus zu verarbeiten.
Die Erfindung befaßt sich mit einem Verfahren und einer Einrichtung zum Staffeln der Ausführung einer Anweisung. Gemäß einem Ausführungsbeispiel der Erfindung wird eine ein­ zelne Makroanweisung aufgenommen, wobei die einzelne Makro­ anweisung wenigstens zwei logische Register spezifiziert und wobei die beiden logischen Register jeweils einen ersten und zweiten gepackten Datenoperanden mit einander entsprechenden Datenelementen speichern. Eine von der einzelnen Makroanwei­ sung spezifizierte Operation wird dann unabhängig an einer ersten und zweiten Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten gepackten Datenoperanden zu verschiedenen Zeiten ausgeführt, wobei dieselbe Schaltung zum unabhängigen Generieren einer ersten und zweiten Mehrzahl von resultierenden Datenelementen ver­ wendet wird. Die erste und zweite Mehrzahl von resultieren­ den Datenelementen werden in einem einzigen logischen Regi­ ster als ein dritter gepackter Datenoperand gespeichert.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von in der Zeich­ nung dargestellten Ausführungsbeispielen beschrieben.
In der Zeichnung zeigen:
Fig. 1, eine gepackte SIMD-ADD-Anweisung, wobei ent­ sprechende Datenelemente von einem ersten gepackten Daten­ operanden und einem zweiten gepackten Datenoperanden addiert werden;
Fig. 2A, vier ADD-Ausführungseinheiten und vier MUL- Ausführungseinheiten gemäß einer derzeitigen Prozessorimple­ mentierung des SIMD;
Fig. 2B, eine derzeitige Prozessorimplementierung eines SIMD-ADD und -MUL unter Verwendung der vier ADD-Ausführungs­ einheiten und vier MUL-Ausführungseinheiten gemäß Fig. 2A;
Fig. 3, das Konzept einer Operation, die an den Operan­ den in einer "gestaffelten" Weise ausgeführt wird;
Fig. 4A, das Prinzip einer Schaltung innerhalb eines Prozessors, der auf Operanden voller Breite aus den logi­ schen Registern zugreift, jedoch Operationen an der Hälfte der Breite der Operanden jeweils durchführt,
Fig. 4B, ein Zeitdiagramm, welches die Schaltung gemäß Fig. 4A verdeutlicht;
Fig. 5, die Schaltung gemäß Fig. 4 mit Bypass gemäß einem Ausführungsbeispiel der Erfindung;
Fig. 6A, das Konzept eines Ausführungsbeispiels einer Außer-der-Reihe-Pipeline zum Durchführen von Operationen an Operanden in einer "gestaffelten" Weise durch Umwandeln einer Makrooperation in eine Vielzahl von Mikrooperationen, von denen jede einen Teil der vollen Breite der Operanden verarbeitet;
Fig. 6B, ein Zeitdiagramm, welches das anhand von Fig. 6A beschriebene Ausführungsbeispiel näher erläutert.
Die Erfindung befaßt sich mit einem Verfahren und einer Einrichtung zur Staffelung der Ausführung einer Anweisung. In der folgenden Figurenbeschreibung werden zahlreiche spe­ zielle Details angeben, um das Verständnis für die vorlie­ gende Erfindung zu erleichtern. Es ist für den Fachmann aber klar, daß diese speziellen Details zum Umsetzen der vorlie­ genden Erfindung nicht erforderlich sind. In anderen Fällen werden bekannte Strukturen, Schnittstellen und Prozesse nicht im einzelnen beschrieben, um den Gegenstand der Erfin­ dung nicht mit unnötigen Einzelheiten zu belasten.
ÜBERBLICK
Fig. 3 zeigt das Konzept einer Operation, die an Ope­ randen in einer "gestaffelten" Weise durchgeführt wird. Ob­ wohl bei einem Ausführungsbeispiel der Erfindung ein gepack­ tes Datenoperandenformat angenommen wird, ist die folgende Beschreibung auch bei der Ausführung gewisser Operationen (z. B. logische Operationen) an einem skalaren Datenformat anwendbar. Die "gestaffelte Ausführung" bezieht sich im Kon­ text dieses Ausführungsbeispiels auf den Prozeß der Unter­ teilung der Operanden einer Anweisung in separate Segmente und das sequentielle Verarbeiten jedes Segments unter Ver­ wendung derselben Hardware. Segmente werden sequentiell dadurch verarbeitet, daß eine Verzögerung in die Verarbei­ tung der aufeinanderfolgenden Segmente eingeführt wird. Wie in der Fig. 3 gezeigt ist, werden die gepackten Datenope­ randen einer ADD-Anweisung in ein "hoch bewertetes Segment" (Datenelemente 3 und 2) und ein "niedrig bewertetes Segment" (Datenelemente 1 und 0) unterteilt. Das niedrig bewertete Segment wird verarbeitet, während das hoch bewertete Segment verzögert wird. Nachfolgend wird dann das hoch bewertete Segment verarbeitet und das Ergebnis in voller Breite gewonnen. Obwohl die folgenden beschriebenen Ausführungsbei­ spiele nur ADD- und MUL-Ausführungseinheiten aufweisen, kön­ nen zusätzlich andere Arten von Ausführungseinheiten, z. B. FMAC-Einheiten, verwendet werden.
Während es eine Anzahl unterschiedlicher Möglichkeiten zum Staffeln der Ausführung von Anweisungen gibt, beschrei­ ben die folgenden Abschnitte zwei exemplarische Ausführungen zur Erläuterung der Erfindung. Insbesondere erhalten beide beschriebenen exemplarischen Ausführungen dieselben Makro­ anweisungen, welche die 128-Bit-Operanden enthaltenden logi­ schen Register spezifizieren. Der Ausdruck "logisches Regi­ ster" wird hier verwendet, um das Konzept zu beschreiben, in welchem Anweisungen einen Speicherbereich spezifizieren, welcher einen einzelnen Operanden enthält. Daher kann ein logisches Register in Hardware unter Verwendung bekannter Techniken, einschließlich dedizierter physikalischer Register, eines oder mehrerer dynamisch zugeordneter physikalischer Register unter Verwendung eines Register-Um­ benennungsmechanismus (weiter unten genauer beschrieben) usw. implementiert werden.
Bei dem ersten Ausführungsbeispiel bewirkt jede Makroan­ weisung, welche 128-Bit-Operanden enthaltende logische Register spezifiziert, den Zugriff aus den physikalischen Registern über die volle Breite der Operanden. Nach dem Zugriff auf die Operanden der vollen Breite aus den Regi­ stern werden die Operanden in niedrig und hoch Segmente (z. B. unter Verwendung von Latch-Schaltungen und Multiple­ xern) unterteilt und unter Verwendung derselben Hardware sequentiell ausgeführt. Die resultierenden Ergebnisse halber Breite werden gesammelt und gleichzeitig in ein einziges logisches Register geschrieben.
Im Gegensatz dazu wird bei dem zweiten Ausführungsbei­ spiel jede Makroanweisung, welche 128-Bit-Operanden enthal­ tende logische Register spezifiziert, in wenigstens zwei Mikroanweisungen unterteilt, welche jeweils nur an der Hälf­ te der Operanden arbeiten. So werden die Operanden in hoch und niedrig bewertete Segmente unterteilt, und jede Mikroan­ weisung bewirkt separat, daß nur auf die Hälfte der Operan­ den aus den Registern zugegriffen wird. Diese Art der Unter­ teilung ist in einer SIMD-Architektur möglich, da jeder der Operanden vom anderen unabhängig ist. Während Implementie­ rungen des zweiten Ausführungsbeispiels die Mikrobefehle in jeder Reihenfolge (entweder der Reihe nach oder nach einem Außer-der-Reihe-Ausführungsmodell) ausführen kann, bewirken die Mikroanweisungen jeweils, daß die von der Makroanweisung spezifizierte Operation unabhängig an den niedrigen und hohen Segmenten der Operanden durchgeführt wird. Außerdem bewirkt jede Mikroanweisung, daß die Hälfte des resultie­ renden Operanden in ein von der Makroanweisung spezifizier­ tes einziges logisches Register geschrieben wird.
Obwohl bei den beschriebenen Ausführungsbeispielen 128- Bit-Operanden in zwei Segmente unterteilt werden, könnten alternative Ausführungsbeispiele größere oder kleinere Ope­ randen verwenden und/oder diese Operanden in mehr als zwei Segmente unterteilen. Wenn auch zwei Ausführungsbeispiele zur gestaffelten Ausführung beschrieben werden, könnten alternative Ausführungsbeispiele andere Methoden verwenden.
ERSTES AUSFÜHRUNGSBEISPIEL
Fig. 4A veranschaulicht das Konzept einer Schaltung innerhalb eines Prozessors gemäß einem ersten Ausführungs­ beispiel, das auf die volle Breite der Operanden aus den logischen Registern zugreift, jedoch zu jedem Zeitpunkt Ope­ rationen nur auf der Hälfte der Breite der Operanden aus­ führt. Bei diesem Ausführungsbeispiel wird angenommen, daß die Prozessor-Ausführungsmaschine eine Anweisung pro Taktzy­ klus zu verarbeiten vermag. Es sei beispielsweise angenom­ men, daß die folgende Folge von Anweisungen ausgeführt wird: ADD X,Y; MUL A,B. Zum Zeitpunkt T werden jeweils 128 Bits aus X und 128 Bits aus Y über die Ports 1 und 2 aus deren zugehörigen Registern gewonnen. Die niedriger bewerteten Datensegmente, nämlich die niedrigeren 64 Bits, sowohl von X als auch von Y werden zu den Multiplexern 400 und 404 über­ tragen und danach zur Verarbeitung zu den Ausführungseinhei­ ten. Die höher bewerteten Datensegmente, die höheren 64 Bits von X und Y, werden in Verzögerungselementen M1 und M2 gehalten. Zum Zeitpunkt T+1 werden die höher bewerteten Datensegmente von X und Y aus den Verzögerungselementen M1+M2 ausgelesen, in die Multiplexer 402 und 404 und von dort zum Verarbeiten in die Ausführungseinheiten geleitet. Der Verzögerungsmechanismus zum Speichern der höher bewerteten Datensegmente in den Verzögerungselementen M1 und M2 ermög­ licht daher der 64-Bit-Hardware, die 128 Daten Bits zu ver­ arbeiten. Die niedrig bewerteten Ergebnisse aus der Ausfüh­ rungseinheit werden im Verzögerungselement M3 solange gehal­ ten, bis die hoch bewerteten Ergebnisse fertig sind. Die Ergebnisse der beiden Verarbeitungsschritte werden danach über Port 3 in die Registerdatei 400 zurückgeschrieben.
Zum Zeitpunkt T+1 kann auch die MUL-Anweisung gestartet worden sein. Daher können zum Zeitpunkt T+1 128 Bits von A und B aus ihren entsprechenden Registern über Ports 1 und 2 gewonnen worden sein. Die niedriger bewerteten Datenseg­ mente, nämlich die unteren 64 Bits, sowohl von A als auch B können in die Multiplexer 406 und 408 übertragen werden. Nachdem die höher bewerteten Bits von X und Y aus den Verzö­ gerungselementen M1 und M2 entfernt und in die Multiplexer 406 und 408 übertragen worden sind, können die höher bewer­ teten Bits von A und B in den Verzögerungselementen M1 und M2 gespeichert gehalten werden. Die Ergebnisse der beiden Verarbeitungsschritte werden über Port 3 in die Registerda­ tei 400 zurückgeschrieben.
Somit sind nach diesem Ausführungsbeispiel der Erfindung Ausführungseinheiten vorgesehen, die nur die Hälfte der Hardware (z. B. zwei ADD-Ausführungseinheiten einfacher Genauigkeit und zwei MUL-Ausführungseinheiten einfacher Genauigkeit) derjenigen Anordnung enthalten, die zur Paral­ lelverarbeitung der vollen Breite der Operanden entsprechend derzeitigen Prozessor-Ausführungen erforderlich wären. Diese Ausführungsbeispiel zieht Nutzen aus der statistischen Ana­ lyse, wonach Multimedia-Anwendungen annähernd 50% ADD- Anweisungen und 50% MUL-Anweisungen benutzen. Um die Vor­ teile dieses Ausführungsbeispiels der Erfindung in einer Der-Reihe-Nach-Maschine nutzbar zu machen, muß die Reihen­ folge der ADD-Anweisungen und MUL-Anweisungen nach dem fol­ genden Muster festgelegt werden: ADD, MUL, ADD, MUL. Bei einer Außer-Der-Reihe-Maschine braucht jedoch dieses Muster nicht angewendet zu werden, da ein Einplanungsmechanismus verwendet werden kann, um die Anweisungen, soweit möglich, in dem richtigen Muster zu ordnen. Durch Verwendung der ADD- und MUL-Ausführungseinheiten in der oben beschriebenen Weise, sorgt das beschriebene Ausführungsbeispiel für eine optimierte Nutzung der Ausführungseinheiten, wodurch eine mit einem derzeitigen Prozessor vergleichbare Arbeitsweise bei niedrigeren Kosten ermöglicht wird.
Fig. 4B ist ein Zeitdiagramm, welches die Schaltung gemäß Fig. 4A erläutert. Gemäß Fig. 4B gilt insbesondere, daß bei einer Anweisung "ADD X,Y" zum Zeitpunkt T die beiden ADD-Ausführungseinheiten zuerst die ADD's an den niedriger bewerteten Datensegmenten oder den beiden niedrigeren gepackten Datenelementen gemäß Fig. 1, nämlich an X0Y0 und X1Y1 ausführen. Zum Zeitpunkt T+1 wird die ADD-Operation an den restlichen beiden Datenelementen aus den Operanden von denselben Ausführungseinheiten durchgeführt, und die nach­ folgenden beiden Datenelemente des höher bewerteten Daten­ segments, nämlich X2Y2 und X3Y3, werden addiert. Zum Zeit­ punkt T+1 kann auch die Verarbeitung der MUL-Anweisung "MUL X,Y" beginnen. Zum Zeitpunkt T+1 führen die beiden MUL-Aus­ führungseinheiten zunächst MUL-Operationen an den niedriger bewerteten Datensegmenten oder den beiden niedrigeren gepackten Datenelementen gemäß Fig. 1, nämlich X0Y0 und X1Y1, aus. Zum Zeitpunkt T+2 wird die MUL-Operation an den restlichen beiden Datenelementen aus den Operanden mit Hilfe derselben Ausführungseinheiten durchgeführt, und die beiden nachfolgenden Datenelemente des höher bewerteten Datenseg­ ments, nämlich X2Y2 und X3Y3, werden multipliziert. Wenn auch das zuvor beschriebene Ausführungsbeispiel unter Bezug­ nahme auf ADD- und MUL-Operationen unter Verwendung von zwei Ausführungseinheiten erläutert wurde, können andere Ausfüh­ rungsbeispiele mit einer beliebigen Anzahl von Ausführungs­ einheiten und/oder zur Ausführung einer beliebigen Anzahl unterschiedlicher Operationen in einer gestaffelten Weise verwendet werden.
Nach dem beschriebenen Ausführungsbeispiel kann 64-Bit- Hardware zur Verarbeitung von 128-Bit-Daten verwendet werden. Ein 128-Bit-Register kann in vier 32-Bit-Elemente untergliedert werden, von denen jedes einen separaten 32- Bit-Wert darstellt. Zum Zeitpunkt T führen die beiden ADD- Ausführungseinheiten ADD-Operationen zunächst an den beiden niedrigeren 32-Bit-Werten aus, gefolgt von einer ADD-Opera­ tion an den höheren 32-Bit-Werten zum Zeitpunkt T+1. Im Falle einer MUL-Operation verhalten sich die MUL-Ausfüh­ rungseinheiten in der gleichen Weise. Diese Fähigkeit zur gleichzeitigen Verwendung von verfügbarer 64-Bit-Hardware zur Verarbeitung von 128-Bit-Daten stellt einen beträchtli­ chen Kostenvorteil für Hardware-Hersteller dar.
Wie oben gesagt, werden die ADD- und MUL-Ausführungsein­ heiten nach dem beschriebenen Ausführungsbeispiel zur Neu­ ausführung einer zweiten ADD- oder MUL-Operation während eines nachfolgenden Taktzyklus wiederverwendet. Um diese Wiederverwendung oder "gestaffelte Ausführung" effizient durchzuführen, nutzt dieses Ausführungsbeispiel das stati­ stische Verhalten von Multimedia-Anwendungen aus. Wie oben gesagt, nutzt dieses Ausführungsbeispiel insbesondere die statistische Analyse aus, wonach Multimedia-Anwendungen annähernd 50% ADD-Anweisungen und 50% MUL-Anweisungen ver­ wenden. Um aus diesem Ausführungsbeispiel der Erfindung in einer Der-Reihe-Nach-Maschine nutzen zu ziehen, muß die Rei­ henfolge der ADD-Anweisungen und MUL-Anweisungen nach dem folgenden Muster festgelegt werden: ADD, MUL, ADD, MUL. Bei einer Außer-Der-Reihe-Maschine braucht dieses Muster jedoch nicht festgelegt zu werden, da ein Einplanungsmechanismus verwendet werden kann, der die Anweisungen, soweit möglich, in das richtige Muster ordnet.
Wenn zum Zeitpunkt T+1 die beiden ADD-Ausführungseinhei­ ten die zweite ADD-Operation an den beiden Datenelementen des höher bewerteten Datensegments ausführen, können die beiden MUL-Einheiten eine Multiplikationsoperation beginnen. Die ersten beiden Datenelemente der MUL-Operation, d. h. das niedriger bewertete Datensegment, können zum Zeitpunkt T+1 von den beiden MUL-Ausführungseinheiten multipliziert wer­ den, gefolgt zum Zeitpunkt T+2 von den MUL-Einheiten, welche die MUL-Operation an den beiden gepackten Datenelementen des höher bewerteten Datenelements erneut ausführen. Auf diese Weise wird bei einem Ausführungsbeispiel der Erfindung die Anzahl von ADD- und MUL-Ausführungseinheiten um die Hälfte reduziert, während die gleiche oder eine vergleichbare Ope­ rationsleistung wie zuvor beibehalten wird.
Wenn jedoch eine zweite ADD-Anweisung der ersten folgt, kann die zweite ADD-Anweisung mit Hilfe einer Einplanungs­ einheit verzögert werden, um den ADD-Ausführungseinheiten die Möglichkeit zu geben, die erste ADD-Anweisung zu been­ den, oder genauer gesagt, das höher bewertete Datensegment der ersten ADD-Anweisung. Die zweite ADD-Anweisung kann dann mit der Ausführung beginnen. Alternativ kann dann in einem Außer-Der-Reihe-Prozessor die Einplanungseinheit festlegen, daß eine MUL-Anweisung weiter unten im Anweisungsstrom außer der Reihe ausgeführt wird. Ist dies der Fall, kann die Ein­ planungseinheit die MUL-Ausführungseinheiten informieren, mit der Verarbeitung der MUL-Anweisung zu beginnen. Wenn keine MUL-Anweisung zum Zeitpunkt T+1 zur Ausführung ansteht, gibt der Einplaner keine der ersten ADD-Anweisung folgende Anweisung aus, womit den ADD-Ausführungseinheiten Zeit gegeben wird, vor Beginn der zweiten ADD-Anweisung die erste ADD-Anweisung abzuschließen.
Ein anderes Ausführungsbeispiel der Erfindung ermöglicht die Ausgabe von "back-to-back"-ADD- oder -MUL-Anweisungen durch erneute Ausführung der Anweisung in denselben Ausfüh­ rungseinheiten in einem halben Taktzyklus anstelle eines vollen Taktzyklus. Die Wiederausführung der Anweisung in dem halben Taktzyklus sorgt effektiv für eine Operationsverdop­ pelung der Hardware, d. h. sie macht die Hardware doppelt so schnell. Auf diese Weise stehen die ADD- oder MUL-Ausfüh­ rungseinheiten während jedes Taktzyklus zur Ausführung einer neuen Anweisung zur Verfügung. Die doppelt schnelle Hardware ermöglicht den Hardware-Einheiten die Ausführung doppelt so wirkungsvoll, wie einfache Hardware, welche nur auf den vol­ len Taktzyklus ausführt. Eine doppelt so schnelle (double pumped) Hardware bedingt jedoch beträchtlich mehr Hardware zur wirksamen Verarbeitung der Anweisung im halben Taktzy­ klus.
Fig. 5 zeigt die Schaltung gemäß Fig. 4A mit einer Bypass-Funktionalität gemäß einem Ausführungsbeispiel der Erfindung. Die Bypass-Funktion dieses Ausführungsbeispiels kann zusätzlich zu der "gestaffelten Ausführungs"-Funktion gemäß vorstehender Beschreibung implementiert werden. Die Schaltung gemäß Fig. 5 steht in Verbindung mit zwei Quell­ registern und einem Zielregister entsprechend den oben beschriebenen Techniken. Typischerweise werden die Register von der Steuerlogik (nicht gezeigt) selektiv adressiert. Daher kann die Schaltung bei einer Makroanweisung Operanden aus den beiden Registern lesen und ein Ergebnis in das dritte Register schreiben. Die Register speichern Daten einer vorgegebenen Breite, beispielsweise 128 Bits. Die Ein­ gangsdaten werden über die Vollbreiten-Datenleitungen 115 bzw. 125 gelesen. In der Darstellung gemäß Fig. 5 sollten alle Datenleitungen als Halbbreiten-Paralleldatenleitungen betrachtet werden, sofern sie nicht anders markiert sind. Vollbreiten-Paralleldatenleitungen sind als solche durch die Markierung "\F" bezeichnet.
Fig. 5 zeigt zusätzlich Ausführungseinheiten 130 und 140, welche Operationen an der Hälfte der Breite der aus den Quellregistern gewonnenen Operanden durchführen. Obwohl zwei Ausführungseinheiten in Fig. 5 gezeigt sind, können mehr oder weniger Ausführungseinheiten im Rahmen der vorliegenden Erfindung vorgesehen sein. Um Vollbreitenkalkulationen aus­ zuführen, werden die Vollbreiten-Eingangsdaten in zwei Halb­ breiten-Segmente unterteilt und sequentiell in eine Logik­ einheit eingegeben. Die Schaltung gemäß Fig. 5 bildet eine erste Schaltstufe mit Schaltern 150 und 160. Die Schalter 150 und 160 geben Daten aus einem von mehreren Eingängen aus. Datenleitung 115 ist ein erster Eingang zum Schalter 150. Datenleitung 125 ist ein erster Eingang zum Schalter 160. Die Schalter 150 und 160 sind beide mit Datenleitungen 170, einem "Schreibe-zurück-Bypass-Bus" verbunden, und zwar als zweiten Eingang. Die Schalter 150 und 160 wählen unab­ hängig unter Steuerung einer Steuereinrichtung 180 einen Eingang aus. Die Schalter 150 und 160 empfangen und geben Daten als Vollbreitensignale aus.
Die Ausgangssignale voller Breite der Schalter 150 und 160 wird in zwei Halbbreiten-Datenelemente unterteilt. Die Datenleitungen 152 und 162 führen das niedrig bewertete Daten-Ausgangssignal der Schalter 150 und 160. Die Datenlei­ tungen 154 und 164 führen hoch bewertete Daten. Die Daten­ leitungen 154 und 156 bilden jeweils die Eingänge zu den Verzögerungselementen 190 bzw. 200. Die Verzögerungselemente 190 und 200 verzögern die Eingangsdaten um einen vollen Taktzyklus. Die hoch bewerteten Daten werden daher durch die Schaltung um einen Taktzyklus verzögert gegenüber den nied­ rig bewerteten Daten übertragen. Bei einem Ausführungsbeispiel können die Verzögerungselemente 190 und 200 als Master- Slave-Flip-Flops ausgebildet sein.
Bei einem Ausführungsbeispiel weist die Schaltung eine zweite Schaltstufe, gebildet aus Schaltern 210-240, auf. Schalter 210 erhält das niedrig bewertete Ausgangssignal vom Schalter 150; Schalter 230 erhält das hoch bewertete Daten- Ausgangssignal vom Schalter 150. Schalter 220 erhält ein niedrig bewertetes Daten-Ausgangssignal vom Schalter 160; Schalter 240 erhält ein hoch bewertetes Daten-Ausgangssignal vom Schalter 160. Schalter 210 und 220 erhalten beide Daten aus Datenleitung 250, einem "niedrig bewerteten globalen Bypass-Bus", als zweiten Eingang. Schalter 230 und 240 erhalten jeweils Daten von Datenleitungen 260, einen "hoch bewerteten globalen Bypass-Bus" als zweiten Eingang. Die Schalter 210-240 geben die Daten des jeweils ausgewählten Eingangs auf die Datenleitungen 215, 225, 235 bzw. 245, wel­ che zu einer dritten Schaltstufe übertragen werden. Jeder Schalter 210-240 schaltet nach Maßgabe der Steuereinrichtung 180 unabhängig voneinander auf einen ausgewählten Eingang.
Jede Ausführungseinheit 130 oder 140 empfängt typischer­ weise Eingaben über zwei Eingangsanschlüsse IN1 und IN2. Eingangsdaten gelangen zu jedem Eingangsanschluß über die dritte Schalterstufe. Die dritte Stufe bildet für jede Aus­ führungseinheit ein Schalterpaar. Daher ist ein Schalterpaar 270 und 280 für die Ausführungseinheit 130 und ein zweites Schalterpaar 290 und 300 für die Ausführungseinheit 140 vor­ gesehen. Jeder Schalter der dritten Stufe wählt einen von vier in zwei Paaren organisierten Eingängen aus. Betrachtet sei der Schalters 270 als Beispiel. Ein erstes Paar Ein­ gangsdaten stammen von den niedrigen und hohen Datenschal­ tern 210, 230 der zweiten Stufe. Ein zweites Paar Eingangs­ daten werden über die Datenleitungen 310 und 320, jeweils einem "niedrigen lokalen Bypass-Bus" und einem "hohen loka­ len Bypass-Bus" empfangen. In ähnlicher Weise empfängt der Schalter 280 ein erstes Paar Eingaben von den Schaltern 220, 240 der zweiten Stufe und ein zweites Paar Eingaben von den niedrigen und hohen lokalen Bypass-Bussen 310 und 320.
Für jede Ausführungseinheit 130, 140 leiten die dem IN1 Anschluß zugeordneten Schalter ihre Eingaben von derselben Quelle ab. Daher, sind die Eingaben zu dem Schalter 290 iden­ tisch den Eingaben zu dem Schalter 270. Ebenso leiten die dem IN2-Anschluß zugeordneten Schalter ihre Eingaben von derselben Quelle ab. Eingaben an den Schalter 300 sind iden­ tisch mit den Eingaben an den Schalter 280. Obwohl die Ein­ gaben identisch sind, können die Schalter 270-300 unabhän­ gig voneinander gesteuert werden.
Die Ausführungseinheiten 130 und 140 erzeugen die Ausga­ bedaten als zwei Datensegmente halber Breite. Niedrig bewer­ tete Daten werden an einem OUTLO-Anschluß ausgegeben. Hoch bewertete Daten werden einen Taktzyklus später am OUTHI- Anschluß ausgegeben. Die niedrig und hoch bewerteten Ausga­ bedaten werden über getrennte Treiber 330 und 340 an die jeweils unteren bzw. oberen lokalen Bypass-Busse 310 und 320 übertragen. Daher können niedrig bewertete Ausgabedaten im nächsten Zyklus nach Erzeugung in jede logische Einheit ein­ gegeben werden sein. Die hoch bewerteten Ausgabendaten, die einen Taktzyklus später erzeugt wurden, können in jede logi­ sche Einheit ein Zyklus nach ihrer Erzeugung eingegeben wer­ den. Daher gibt es in Zuordnung zu dem lokalen Bypass keinerlei Verzögerung.
Daten auf jedem der unteren und oberen lokalen Bypass- Busse 310 und 320 werden über Verzögerungselemente 350 und 360 zu den jeweiligen globalen unteren und oberen Bypass- Bussen 250 und 260 übertragen. Jedes Verzögerungselement 350, 360 kann ein Latch 370 und einen Treiber 380 aufweisen. Einem Verzögerungselement 350, 360 eingegebene Daten er­ scheinen an dessen Ausgang mit einem Taktzyklus Verzögerung. So erscheinen Daten an den unteren und oberen globalen Bypass-Bussen 250, 260 einen Taktzyklus, nachdem sie an den jeweiligen lokalen Bypass-Bussen 310, 320 erschienen sind.
Wie gesagt, bilden die globalen Bypass-Busse 250, 260 die Eingänge für die Schalter 210-240 der zweiten Stufe. Niedrig bewertete Daten erreichen den globalen Bypass-Bus 260 einen Taktzyklus bevor die zugeordneten, hoch bewerteten Daten an dem oberen globalen Bypass-Bus 250 ankommen. Wenn jedes Paar von Schaltern 210-240 der zweiten Stufe so geschaltet wird, daß es Daten vom globalem Bypass-Bus als Eingabe erhält, können die globalen Bypass-Daten zu den logischen Einheiten 130, 140 zurückgeleitet werden.
Daten fließen von den globalen Bypass-Bussen 250, 260 über die Datenleitung 410 zurück zu einem Ergebnisregister 390. Das Ergebnisregister 390 ist ein Register, das die volle Breite der Datenregister 110 und 120 besitzt. Die Daten werden in das Ergebnisregister 390, unter Nutzung der parallelen Datenleitung voller Breite geschrieben. Ein Master-Slave-Flip-Flop 400 verbindet den niedrig bewerteten globalen Bypass-Bus 250 mit den Datenleitungen 410. Die Datenleitungen 410 sind parallele Vollbreiten-Datenleitun­ gen. Das Flip-Flop 400 verzögert die niedrig bewerteten Datenleitungen um einen Taktzyklus, um einen Aufbau von Da­ ten auf dem hoch bewerteten globalen Bypass-Bus 260 zu ermöglichen. Wenn solche Daten verfügbar werden, können niedrig und hoch bewertete Daten gleichzeitig in das Ergeb­ nisregister 390 geschrieben werden.
Der Schreib-Bypass-Bus 170 erlaubt es, Daten, die in das Ergebnisregister 390 geschrieben worden sind, zurück in die Schalter 150, 160 der ersten Stufe zu leiten. Daher können Daten vom Schreib-Bypass-Bus 170 zurück auf die Ausführungs­ einheit 130 zurückgeführt werden, indem einer der ersten Schalter 150, 160 auf Ausgabe von Daten des Schreib-Bypass- Busses 170 geschaltet wird. Daten, die über den Schreib- Bypass-Bus 170 zur Ausführungseinheit 150 fließen, werden drei Taktzyklen nach ihrer Erzeugung am Ausgangsanschluß OUTLO in die Ausführungseinheit getaktet.
Ein Bypass-Steuereinrichtung 180 ist in Verbindung mit den Schaltern aller drei Schaltstufen vorgesehen. Die Bypass-Steureinrichtung 180 überwacht die Anweisungen, die vom Mikroprozessorkern (nicht gezeigt) ausgegeben werden. Der Bypass-Steuereinrichtung 180 konfiguriert das Schalten jedes Schalters, um jeden gewünschten Bypass zu implementie­ ren. Wenn die Bypass-Steuereinrichtung 180 eine Anweisung aus dem Prozessorkern empfängt, bestimmt sie, ob die Ein­ gangsdaten der neuen Anweisung auf einem Bypass-Bus des Systems anstehen. Betrachtet sei ein Beispiel, bei dem der Kern die folgenden Anweisungen ausgibt:
PADD A,B → C,
PSHFT A,C → D,
PXOR A,C → E, und
PSUB A,C → F
Es sei ferner angenommen, daß die Ausführungseinheit 130 selektiv die PADD-, PXOR- oder die PSUB-Funktionen ausführt, und daß die Ausführungseinheit 140 die PSHFT-Funktion aus­ führt. Das mit "C"- bezeichnete Ergebnis der PADD-Funktion, ist eine Eingabe an jede der folgenden drei Anweisungen. Die Bypass-Architektur leitet den C-Wert vorteilhafterweise zurück zu den Eingängen der Ausführungseinheiten, ohne dabei Daten in das Register 390 schreiben und wieder in die Schal­ tung einlesen zu müssen.
Die Bypass-Steuereinrichtung 180 hält einen Drei-Regi­ ster-Speicher (nicht gezeigt). Ein Register, ein lokales Bypass-Register, ist dem unteren lokalen Bypass-Bus 310 zu­ geordnet. Ein zweites Register, ein globales Bypass-Regi­ ster, ist dem niedrig bewerteten globalen Bypass-Bus 250 zugeordnet. Das dritte Register, ein Rückschreib-Bypass Register, ist dem Rückschreib-Bypass Bus 170 zugeordnet. Etiketten (label) der auf jedem Bypass-Bus vorliegenden Daten werden in einem zugehörigen Register der Bypass-Steu­ ereinrichtung 180 gespeichert.
Jedesmal dann, wenn eine Anweisung durch die in Fig. 5 gezeigte Schaltung ausgeführt werden soll, vergleicht die Bypass-Steuereinrichtung 180 die Etiketten der Eingangsdaten mit den Etiketten, die in ihren drei Registern gespeichert sind. Die Bypass-Steuereinrichtung 180 erkennt eine Überein­ stimmung, wenn Daten, die zur Anweisung eingegeben werden, bereits auf einem der Bypasse vorhanden sind. Wenn eine Übereinstimmung festgestellt wird, veranlaßt die Bypass- Steuereinrichtung 180 die Schaltstufen dazu, die Daten an die geeigneten Eingänge der richtigen Ausführungseinheit zu leiten. Die Steuereinrichtung 180 muß nur die Daten verfol­ gen, die auf den niedrig bewerteten Bypass-Bussen vorhanden sind. Wenn er bestimmt, daß Daten von einem der niedrig bewerteten Bypass-Busse umgeleitet werden, leitet er Daten automatisch von dem zugeordneten hoch bewerteten Bypass-Bus­ sen einen Taktzyklus später um.
Die folgende Tabelle erläutert, wie die Bypass-Steuerein­ richtung 180 ihre Überwachungsfunktion ausführt. Am Taktzy­ klus T wird die PADD-Funktion ausgeführt, wobei ein Ergebnis erzeugt wird, das im als Register "C" bezeichneten Bestim­ mungsregister 390 gespeichert werden soll. Die Bypass-Steu­ ereinrichtung 180 speichert ein Etikett für C in einem dem lokalen Bypass für niedrig bewertete Daten zugeordneten Speicherregister.
Zum Taktzyklus T+1 gibt der Kern die PSHFT-Anweisung aus. Die Bypass-Steuereinrichtung 180 vergleicht ihre loka­ len, globalen und Rückschreib-Busse mit den bezeichneten Eingängen des PSHFT-Befehls, A und C. Eine Übereinstimmung wird an dem dem lokalen Bypass-Bus 310 zugeordneten Register erkannt. Dementsprechend bewirkt die Bypass-Steuereinrich­ tung 180, daß der lokale Bypass wirksam wird. In diesem Fall wählt der Schalter 300 den lokalen Bypass-Bus 310 aus, um C zur PSHFT-Ausführungseinheit 140 zurückzuleiten.
Zum Taktzyklus T+2 sind die Daten innerhalb der Register der Bypass-Steuereinrichtung 180, entsprechend der Bewegung der Daten von Bypass-Bus zu Bypass-Bus vorgerückt. Das Eti­ kett für C bewegt sich zu dem dem globalen Bypass-Bus 250 zugeordneten Register; das Etikett für D wird in das dem lokalen Bypass 310 zugeordnete Register eingegeben. Um zu bewirken, daß die hoch bewerteten Daten den niedrig bewerte­ ten Daten zur PSHFT-Anweisung folgen, läßt die Steuerein­ richtung 180, den Schalter 300 den lokalen Bypass 320 für hoch bewertete Daten als Eingang auswählen.
Wenn der Kern die PXOR-Anweisung ausgibt, vergleicht die Bypass-Steuereinrichtung 180 wiederum ihre Register mit den bezeichneten Eingängen der PXOR-Anweisung, A und C. Eine Übereinstimmung wird bei dem dem globalen Bypass 250 zuge­ ordneten Register festgestellt. Dementsprechend läßt die Bypass-Steuereinrichtung 180 den globalen Bypaß wirksam wer­ den. Hier wählt der Schalter 220 den globalen Bypass-Bus 250 und der Schalter 280 die Datenleitung 225. Die Daten vom niedrig bewerteten globalen Bypass-Bus 250 werden zurückge­ leitet zur Logikeinheit 130.
Im Taktzyklus T+3 rücken die Daten innerhalb der Regi­ ster der Bypass-Steuereinrichtung 180 in einer dem Fort­ schreiten der Daten entsprechenden Weise vor. Das Etikett C bewegt sich in das Register, das dem Rückschreib-Bypass-Bus 170 zugeordnet ist, das Etikett für D bewegt sich in das globale Bypass-Register und das Etikett für E wird in das lokale Bypass-Register geschrieben. Die Steuereinrichtung 180 läßt den Schalter 240 den hoch bewerteten globalen Bypass-Bus 260 auswählen, um die hoch bewerteten Daten zur Logikeinheit 140 zu leiten und die PXOR-Anweisung abzu­ schließen.
Wenn der Kern die PSUB-Anweisung ausgibt, führt die Bypass-Steuereinrichtung 180 den Vergleich durch und stellt dabei eine Übereinstimmung auf dem Rückschreib-Bypass-Bus 170 fest. Die Steuereinrichtung 180 veranlaßt den Schalter 160, den Rückschreib-Bypass Bus 170 auszuwählen, den Schal­ ter 220, die Datenleitung 162 auszuwählen, und den Schalter 280, die Datenleitung 225 auswählen. Für Taktzyklen T+4 und folgende gilt, daß dann, wenn C als eine Eingabe für eine Anweisung bezeichnet wird, es aus dem Register 390 nach kon­ ventionellen Verfahren gelesen wird.
Bus-Konflikte können auftreten bei sequentiellen Opera­ tionen, die von einer einzelnen Ausführungseinheit durchge­ führt werden sollen. Unter erneuter Verwendung des Beispiels der Tabelle 1 sei betrachtet, was passieren würde, wenn der Kern eine PADD-Anweisung im Taktzyklus T+4 ausgibt. Die Aus­ führungseinheit 130 führt PADDs aus. Zum Zyklus T+4 leitet die Steuereinrichtung 180 jedoch hoch bewertete Daten von dem Verzögerungs-Latch 200 zur Ausführungseinheit 130 um, um die PSUB-Anweisung aus dem Zyklus T+3 abzuschließen. Die Ausführungseinheit 130 ist beschäftigt mit der Beendigung der PSUB-Anweisung. Dementsprechend berücksichtigen die Kern-Einplaner den Bus-Konflikt und verzögern die Ausgabe der PADD-Anweisung, bis die Ausführungseinheit 130 nicht mehr belegt ist.
Der oben beschriebene Bus-Konflikt tritt nur auf, wenn hoch bewertete Daten von einem Bypass-Bus und eine neue Anweisung dieselbe Logikeinheit, wie die Einheit 130 in dem obigen Beispiel, nutzen müssen. Wenn die neue Anweisung eine PSHFT oder andere Anweisung ist, bei der die referenzierte Ausführungseinheit irgendeine andere als die Einheit 130 ist, dann würde kein Konflikt auftreten. Daher erlaubt es die Bypass-Architektur der vorliegenden Erfindung, Daten gleichzeitig in zwei oder mehr Ausführungseinheiten einzuge­ ben.
Bei einem Ausführungsbeispiel können die Schalter der Schaltung als Multiplexer-Latch-Schaltungen ("LMUX") ausge­ bildet sein. Die LMUXs wählen eine aus einer Mehrzahl von Eingängen aus und leiten die Daten von dem gewählten Eingang zu einem Ausgang. Die oben beschriebene Bypass-Architektur sieht vorteilhafterweise ein Architekturschema vor, das unnötiges Lesen und Schreiben von Daten zwischen dem Mikro­ prozessorkern und den Ausführungseinheiten vermeidet und sieht darüber hinaus das gewünschte "one UOP, two data"- Prinzip der gestaffelten Ausführung vor.
Zweites Ausführungsbeispiel
Gemäß einem alternativen Ausführungsbeispiel kann mit der vorliegenden Erfindung die gestaffelte Ausführung eines Operanden voller Breite durch das Konvertieren einer Voll­ breiten-Makrooperation in wenigstens zwei Mikroanweisungen erreicht werden, von denen jede nur mit der Hälfte der Ope­ randen arbeitet. Obgleich die folgende Beschreibung unter Berücksichtigung eines speziellen Registerumbenennungsver­ fahrens beschrieben ist, ist einzusehen, daß andere Regi­ ster-Umbenennungsmechanismen ebenfalls verwendet werden kön­ nen. Das unten beschriebene Registerumbenennungsverfahren, setzt die Benutzung einer Register-Alias-Tabelle (RAT), eines Umordnungspuffers (ROB) und eines Retirement-Puffers, wie sie im U.S.-Patent Nr. 5,446,912 detailliert beschrieben sind, voraus. Andere Registerumbenennungsverfahren, wie im U.S.-Patent Nr. 5,197,132 beschrieben, können ebenfalls implementiert werden.
Fig. 6A veranschaulicht begrifflich ein Ausführungsbei­ spiel einer Pipeline zur Durchführung von Operationen an Operanden in "gestaffelter" Weise, indem eine Makrooperation in eine Mehrzahl von Mikrooperationen konvertiert wird, so daß jede einen Teil der vollen Breite der Operanden verar­ beitet. Es sollte angemerkt werden, daß zahlreiche weitere Stufen der Pipeline, z. B. eine Vorab-Heranhol-Stufe, nicht im Detail gezeigt werden, um die Erfindung nicht unnötiger­ weise zu verundeutlichen. Wie dargestellt, wird in der Deko­ dierstufe der Pipeline eine die logischen Quellregister, von denen jedes einen Operanden voller Breite (z. B. 128-Bit) speichert, spezifizierende Makroanweisung empfangen. Die beschriebenen Operanden sind beispielsweise gepackte 128- Bit-Gleitkommadatenoperanden. Bei diesem Beispiel unter­ stützt der Prozessor Y logische Register zum Speichern gepackter Gleitkommadaten. Die Makroanweisung wird in zwei Mikroanweisungen halber Breite (z. B. 64 Bit) konvertiert, nämlich eine "hoch bewertete Operation" und eine "niedrig bewertete Operation". Jede der beiden Mikroanweisungen hal­ ber Breite spezifiziert eine erste und eine zweite Quelle und ein Ziel.
Die beiden Mikroanweisungen halber Breite bewegen sich dann in eine Registerumbenennungsstufe der Pipeline. Die Registerumbenennungsstufe umfaßt eine Vielfalt von Register­ abbildungen und Umordnungspuffern. Die Quellen jeder Mikro­ anweisung sind Zeiger auf spezifische Registereinträge in einer Registerabbildungstabelle (z. B. ein RAT). Die Einträge in der Registerabbildungstabelle zeigen wiederum auf die Orte der Quellen in einem ROB oder in einem Retirement-Regi­ ster. Um die oben beschriebenen hoch und niedrig bewerteten Operationen halber Breite gemäß einem Ausführungsbeispiel aufzunehmen, ist ein RAT für gepackte Gleitkommadaten mit Y.2 Einträgen vorgesehen. Daher wird z. B. anstelle einer RAT mit den acht Einträgen eine RAT mit 16 jeweils "hoch" und "niedrig" adressierten Einträgen erzeugt. Jeder Eintrag kennzeichnet eine 64-Bit-Quelle, die entweder dem hohen oder niedrigen Teil des logischen 128-Bit-Registers entspricht.
Jede der hoch oder niedrig bewerteten Mikroanweisungen hat somit zugeordnete Einträge in der den jeweiligen Operan­ den entsprechenden Registerabbildungstabelle. Die Mikroan­ weisungen bewegen sich dann in die Einplanungsstufe bei einem außer der Reihe ausführenden Prozessor oder in die Ausführungsstufe (wenn der Prozessor in der Reihenfolge aus­ führt). Jede Mikroanweisung empfängt und bearbeitet getrennt ein 64-Bit-Segment des 128-Bit-Operanden. Eine der Operatio­ nen (d. h. die niedriger bewertete Operation) wird zuerst von den 64-Bit-Hardwareeinheiten ausgeführt, und 64-Bit-Daten (z. B. die niedriger bewerteten 64 Bits) werden empfangen und bearbeitet. Die andere Operation (z. B. die höher bewertete Operation) wartet, bis die 64-Bit-Hardwareeinheiten die niedriger bewertete Operation komplettiert haben. Dann führt dieselbe 64-Bit-Hardwareeinheit die höher bewerteten Opera­ tion, wobei sie zuerst weitere 64-Bit-Daten (z. B. die höher bewerteten Bits) zur Verarbeitung gewinnt. Obwohl das obige Beispiel die Ausführung der niedriger bewerteten Operationen und der höher bewerteten Operationen in sequentieller Weise beschreibt, müssen die Operationen nicht tatsächlich in sequentieller Reihenfolge durchgeführt werden. Jede Opera­ tion ist vollständig unabhängig von der anderen, d. h. jede Operation kann als erste ausgeführt werden, und jede Anzahl anderer Operationen kann zwischen diesen beiden Operationen durchgeführt werden. Die Ergebnisse der Operation werden jedoch sequentiell abgelegt.
Obgleich das obige Ausführungsbeispiel beschreibt, daß die Makroanweisung in zwei Mikrooperationen aufgeteilt wird, können alternative Ausführungsbeispiele die Makroanweisung auch in mehrere Mikroanweisungen unterteilen. Während Fig. 6A zeigt, daß die gepackten Gleitkommadaten an eine Realre­ gisterdatei mit Y.2 64-Bit-Registern die jeweils als hoch und niedrig gekennzeichnet sind, zurückgegeben werden, kön­ nen alternative Ausführungsbeispiele eine Realregisterdatei mit Y 128-Bit-Registern verwenden. Zusätzlich können, wäh­ rend ein Ausführungsbeispiel mit einem Registerumbenennungs­ mechanismus mit Umordnungspuffer und Realregisterdateien beschrieben wurde, andere Ausführungsbeispiele einen belie­ bigen Registerumbenennungsmechanismus verwenden. Beispiels­ weise verwendet der Registerumbenennungsmechanismus gemäß U.S.-Patent Nr. 5,197,132 eine Vorgeschichte-Warteschlange- Sicherungs-Abbildung (Back up map).
Fig. 6B ist ein Zeitablaufplan, der das in Fig. 6A beschriebene Ausführungsbeispiel näher beschreibt. Zum Zeit­ punkt T tritt eine Makroanweisung "ADD X,Y" in die Dekodier­ stufe der Pipeline gemäß Fig. 6A ein. Die Makroanweisung ist hierbei beispielsweise eine 128-Bit-Anweisung. Die 128-Bit- Makroanweisung wird konvertiert zu zwei 64-Bit-Mikroanwei­ sungen, nämlich der hoch bewerteten Operation "ADD XH,YH" und der niedrig bewerteten Operation "ADD XL,YL". Jede Mikroanweisung verarbeitet dann ein Segment von Daten, das zwei Datenelemente enthält. Zum Zeitpunkt T wird die niedrig bewertete Operation von einer 64-Bit-Ausführungseinheit aus­ geführt. Zum Zeitpunkt T+1 wird die hoch bewertete Operation dann von derselben 64-Bit-Einheit ausgeführt. Dieses Ausfüh­ rungsbeispiel der vorliegenden Erfindung ist daher speziell zur Verarbeitung von 128-Bit-Anweisungen unter Nutzung vor­ handener 64-Bit-Hardwaresysteme ohne signifikante Änderungen der Hardware, geeignet. Die vorhandenen Systeme werden ein­ fach um eine neue Abbildung zur Behandlung gepackter Gleit­ kommawerte erweitert, zusätzlich zu der vorhandenen Abbil­ dung für skalare gepackte Gleitkomma/Ganzzahl-Daten und skalarer Ganzzahldaten.

Claims (29)

1. Verfahren zum Ausführen einer Anweisung in einem Prozessor, wobei:
eine einzelne Makroanweisung, die wenigstens zwei logi­ sche Register spezifiziert, empfangen wird, wobei die beiden logischen Register jeweils einen ersten und einen zweiten gepackten Datenoperanden mit einander entsprechenden Daten­ elementen speichern; und
eine von der einzelnen Makroanweisung spezifizierte Ope­ ration an einer ersten und zweiten Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten gepackten Datenoperanden zu unterschiedlichen Zeiten unter Nutzung derselben Schaltung zum unabhängigen Erzeugen einer ersten und zweiten Mehrzahl von Ergebnisdatenelementen aus­ geführt wird, wobei die erste und zweite Mehrzahl von Ergeb­ nisdatenelementen in einem einzelnen logischen Register als dritter gepackter Datenoperand gespeichert werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Schritt der unabhängigen Ausführung der Operation folgende Schritte umfaßt:
gleichzeitiges Zugreifen auf die erste und die zweite Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten logischen Register;
unabhängiges Durchführen der von der einzelnen Makroan­ weisung spezifizierten Operation an der ersten und zweiten Mehrzahl einander entsprechender Datenelemente; und
gleichzeitiges Speichern der ersten und zweiten Mehrzahl von Ergebnisdatenelementen in dem einzelnen logischen Regi­ ster.
3. Verfahren zum Staffeln der Ausführung einer Anwei­ sung, wobei
Daten in Erwiderung einer eine Operation spezifizieren­ den Einzelanweisung wiedergewonnen (retrieve) werden, wobei die Daten eine Mehrzahl von Datenelementen umfassen;
die Operation auf einer Ausführungseinheit ausgeführt wird, wobei der Ausführungsschritt an einer ersten Unter­ menge der Mehrzahl von Datenelementen durchgeführt wird; und
die Operation auf der Ausführungseinheit erneut ausge­ führt wird, wobei der Schritt der erneuten Ausführung an einer zweiten Untermenge der Mehrzahl von Datenelemente aus­ geführt wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die zweite Untermenge der Mehrzahl von Datenelementen verzögert wird, während der Ausführungsschritt an der ersten Untermenge der Mehrzahl von Datenelementen durchgeführt wird.
5. Verfahren nach Anspruch 3 oder 4, dadurch gekenn­ zeichnet, daß beim Wiedergewinnen der Daten in Erwiderung der Einzelanweisung 128 Bit Daten aus einer Registerdatei wiedergewonnen werden.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die 128 Bit Daten aus der Registerdatei in ein niedriger bewertetes Datensegment und ein höher bewertetes Datenseg­ ment unterteilt werden.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß die erste Untermenge der Mehrzahl von Datenelementen das niedriger bewertete Datensegment ist und die zweite Unter­ menge der Mehrzahl von Datenelementen das höher bewertete Datensegment ist.
8. Verfahren nach einem der Ansprüche 3-7, dadurch ge­ kennzeichnet, daß der Schritt der Ausführung der Operation während eines ersten Taktzyklus' durchgeführt wird und der Schritt der erneuten Ausführung der Operation während des nachfolgenden Taktzyklus' durchgeführt wird.
9. Verfahren nach einem der Ansprüche 3-7, dadurch ge­ kennzeichnet, daß der Schritt der Ausführung der Operation während eines ersten halben Taktzyklus' durchgeführt wird und der Schritt der erneuten Ausführung der Operation wäh­ rend des zweiten halben Taktzyklus' durchgeführt wird.
10. Verfahren nach einem der Ansprüche 3-7, dadurch ge­ kennzeichnet, daß der Schritt der Ausführung der Operation an der ersten Untermenge der Daten den Schritt der Ausfüh­ rung einer Einzelanweisungs-Mehrfachdaten(SIMD)-Operation an der ersten Untermenge der Mehrzahl von Datenelementen und der erneuten Ausführung der SIMD-Operation an der zweiten Untermenge der Mehrzahl von Datenelementen umfaßt.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die SIMD-Operation eine ADDIER-Operation ist.
12. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die SIMD-Operation eine MULTIPLIZIER-Operation ist.
13. Prozessor mit einer Registerdatei, die gepackte Daten enthält, wobei die Daten eine Mehrzahl von Datenele­ menten umfassen,
gekennzeichnet durch:
eine mit der Registerdatei gekoppelte Schaltung, wobei die Schaltung in Erwiderung einer eine Operation spezifizie­ renden Einzelanweisung
die Mehrzahl von Datenelementen aus der Registerdatei wiedergewinnen kann;
die Operation auf einer Ausführungseinheit ausführen kann, wobei die Operation an einer ersten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein erstes Ergebnis auszu­ geben; und
die Operation auf der Ausführungseinheit erneut ausführen kann, wobei die Operation an einer zweiten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein zweites Ergebnis auszu­ geben.
14. Prozessor nach Anspruch 13, dadurch gekennzeichnet, daß eine Verzögerungsschaltung vorgesehen ist, die die zwei­ te Untermenge der Mehrzahl von Datenelementen verzögert, während die Schaltung an der ersten Untermenge der Mehrzahl von Datenelementen die Operation ausführt.
15. Prozessor nach Anspruch 14, gekennzeichnet durch eine Bypass-Schaltung.
16. Prozessor nach einem der Ansprüche 13-15, dadurch gekennzeichnet, daß die Mehrzahl von Datenelementen 128 Bit Daten aus der Registerdatei enthält.
17. Prozessor nach Anspruch 16, dadurch gekennzeichnet, daß die 128 Bit Daten aus der Registerdatei in ein niedriger bewertetes Datensegment und ein höher bewertetes Datenseg­ ment unterteilt sind.
18. Prozessor nach Anspruch 17, dadurch gekennzeichnet, daß die erste Untermenge der Mehrzahl von Datenelementen das niedriger bewertete Datensegment ist und die zweite Unter­ menge der Mehrzahl von Datenelementen das höher bewertete Datensegment ist.
19. Prozessor nach einem der Ansprüche 13-18, dadurch gekennzeichnet, daß die Schaltung die Operation während eines ersten Taktzyklus' ausführt und die Operation während des nachfolgenden Taktzyklus' erneut ausführt.
20. Prozessor nach einem der Ansprüche 13-18, dadurch gekennzeichnet, daß die Schaltung die Operation während einer ersten Hälfte eines Taktzyklus' ausführt und die Ope­ ration während der zweiten Hälfte des Taktzyklus' erneut ausführt.
21. Prozessor nach einem der Ansprüche 13-20, dadurch gekennzeichnet, daß die Schaltung eine Einzelanweisungs- Mehrfachdaten(SIMD)-Operation an der ersten Untermenge der Mehrzahl von Datenelementen ausführt und die SIMD-Operation an der zweiten Untermenge der Mehrzahl von Datenelementen erneut ausführt.
22. Prozessor nach Anspruch 21, dadurch gekennzeichnet, daß die SIMD-Operation eine ADDIER-Operation ist.
23. Prozessor nach Anspruch 21, dadurch gekennzeichnet, daß die SIMD-Operation eine MULTIPLIZIER-Operation ist.
24. System zur gestaffelten Ausführung von Anweisungen, aufweisend:
eine Registerdatei, die eine Mehrzahl von Datenelementen aufweisende Daten speichert;
einen Prozessor, der die Mehrzahl von Datenelementen aus der Registerdatei in Erwiderung einer eine Operation spezi­ fizierenden einzelne Anweisung wiedergewinnt (retrieve);
eine die Anweisung an einer ersten Untermenge der Mehr­ zahl von Datenelementen ausführende Ausführungseinheit, wobei die Ausführungseinheit dann die Anweisung an einer zweiten Untermenge der Mehrzahl von Datenelementen ausführt.
25. System nach Anspruch 24, gekennzeichnet durch eine Verzögerungsschaltung, die die zweite Untermenge der Mehr­ zahl von Datenelementen verzögert, während die Ausführungs­ einheit die Operation an der ersten Untermenge der Mehrzahl von Datenelementen ausführt.
26. System nach Anspruch 24 oder 25, dadurch gekenn­ zeichnet, daß die Operation eine Einzelanweisungs-Mehrfach­ daten(SIMD)-Operation ist.
27. System Anspruch 26, dadurch gekennzeichnet, daß die SIMD-Operation eine ADDIER-Operation ist.
28. System nach Anspruch 26, dadurch gekennzeichnet, daß die SIMD-Operation eine MULTIPLIZIER-Operation ist.
29. Schaltung zur Ausführung von Anweisungen, aufwei­ send:
Ausführungseinheiten, die einer eine Operation spezifi­ zierende einzelnen Anweisung entsprechende gepackte Daten empfangen; und
eine Auswahleinheit, die den Ausführungseinheiten selek­ tiv gestattet, die Anweisung an einer ersten Untermenge der gepackten Daten auszuführen und dann die Anweisung an einer zweiten Untermenge der gepackten Daten erneut auszuführen.
DE19914210A 1998-03-31 1999-03-29 Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung Expired - Fee Related DE19914210B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/053,004 1998-03-31
US09/053,004 US6230257B1 (en) 1998-03-31 1998-03-31 Method and apparatus for staggering execution of a single packed data instruction using the same circuit

Publications (2)

Publication Number Publication Date
DE19914210A1 true DE19914210A1 (de) 1999-10-07
DE19914210B4 DE19914210B4 (de) 2006-01-05

Family

ID=21981307

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19914210A Expired - Fee Related DE19914210B4 (de) 1998-03-31 1999-03-29 Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung

Country Status (2)

Country Link
US (6) US6230257B1 (de)
DE (1) DE19914210B4 (de)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7483935B2 (en) * 1995-08-16 2009-01-27 Microunity Systems Engineering, Inc. System and method to implement a matrix multiply unit of a broadband processor
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US7100025B1 (en) * 2000-01-28 2006-08-29 Hewlett-Packard Development Company, L.P. Apparatus and method for performing single-instruction multiple-data instructions
FR2818145B1 (fr) * 2000-12-18 2003-11-28 Oreal Compositions cosmetiques antisolaires a base d'un melange synergetique de filtres et utilisations
WO2003021423A2 (en) * 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
US7668897B2 (en) * 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
US7457938B2 (en) * 2005-09-30 2008-11-25 Intel Corporation Staggered execution stack for vector processing
US7650474B2 (en) * 2006-01-09 2010-01-19 Lsi Corporation Method and system for interleaving first and second halves of a data segment of unknown length
US8239659B2 (en) * 2006-09-29 2012-08-07 Intel Corporation Vector completion mask handling
US7565513B2 (en) * 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
EP2148272B1 (de) * 2007-05-17 2012-08-08 Fujitsu Limited Berechnungseinheit, prozessor und prozessorarchitektur
US20090327657A1 (en) * 2008-06-25 2009-12-31 Zeev Sperber GENERATING AND PERFORMING DEPENDENCY CONTROLLED FLOW COMPRISING MULTIPLE MICRO-OPERATIONS (uops)
US8949575B2 (en) 2011-12-14 2015-02-03 International Business Machines Corporation Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) * 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
GB2537523B (en) * 2014-09-30 2017-09-27 Imagination Tech Ltd Multimode variable length execution pipeline
KR102270791B1 (ko) 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
US20160188341A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused add-add instructions
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10853067B2 (en) * 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675001A (en) * 1970-12-10 1972-07-04 Ibm Fast adder for multi-number additions
US3723715A (en) * 1971-08-25 1973-03-27 Ibm Fast modulo threshold operator binary adder for multi-number additions
FR2212952A5 (de) * 1972-12-29 1974-07-26 Cit Alcatel
US3900724A (en) * 1974-02-11 1975-08-19 Trw Inc Asynchronous binary multiplier using non-threshold logic
JPS5680720A (en) * 1979-12-05 1981-07-02 Fujitsu Ltd Synchronous processing unit with partial processing circuit
JPS5824941A (ja) * 1981-08-07 1983-02-15 Hitachi Ltd 演算装置
JPS58182754A (ja) * 1982-04-19 1983-10-25 Hitachi Ltd 演算処理装置
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4773038A (en) * 1986-02-24 1988-09-20 Thinking Machines Corporation Method of simulating additional processors in a SIMD parallel processor array
US4890218A (en) 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5047975A (en) * 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US5189636A (en) * 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
US4972362A (en) * 1988-06-17 1990-11-20 Bipolar Integrated Technology, Inc. Method and apparatus for implementing binary multiplication using booth type multiplication
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US5081698A (en) * 1989-02-14 1992-01-14 Intel Corporation Method and apparatus for graphics display data manipulation
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
JP2651267B2 (ja) * 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US5241493A (en) * 1991-12-16 1993-08-31 International Business Machines Corporation Floating point arithmetic unit with size efficient pipelined multiply-add architecture
US5311508A (en) * 1991-12-23 1994-05-10 Square D Company Apparatus for receiving and decoding a serial data packet containing the status of a network of single point I/O devices
US5210711A (en) * 1992-02-26 1993-05-11 Sony Corporation Of America Very fast variable input multi-bit adder
US5606677A (en) * 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
JPH06242928A (ja) * 1993-02-22 1994-09-02 Nec Corp 加算器およびこれを用いた乗算回路
US5327369A (en) * 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5806049A (en) * 1993-04-21 1998-09-08 Petruzzi; Christopher R. Data processing system for global assessment of investment opportunity and cost
US5390135A (en) * 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5883824A (en) * 1993-11-29 1999-03-16 Hewlett-Packard Company Parallel adding and averaging circuit and method
US5673427A (en) 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
US5642306A (en) 1994-07-27 1997-06-24 Intel Corporation Method and apparatus for a single instruction multiple data early-out zero-skip multiplier
US5579253A (en) * 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
US5819101A (en) * 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
KR100329338B1 (ko) * 1994-12-02 2002-07-18 피터 엔. 데트킨 복합피연산자의팩연산을수행하는마이크로프로세서
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
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
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US6006318A (en) * 1995-08-16 1999-12-21 Microunity Systems Engineering, Inc. General purpose, dynamic partitioning, programmable media processor
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
CN1892589B (zh) 1995-08-31 2011-02-23 英特尔公司 执行多媒体应用的操作的装置、系统及实现该操作的方法
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6470370B2 (en) * 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
WO1997024681A1 (en) 1995-12-19 1997-07-10 Intel Corporation A computer system performing a two-dimensional rotation of packed data representing multimedia information
US5852726A (en) 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5835748A (en) 1995-12-19 1998-11-10 Intel Corporation Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file
US5701508A (en) 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5793661A (en) * 1995-12-26 1998-08-11 Intel Corporation Method and apparatus for performing multiply and accumulate operations on packed data
US5983257A (en) * 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5835392A (en) * 1995-12-28 1998-11-10 Intel Corporation Method for performing complex fast fourier transforms (FFT's)
US5880983A (en) * 1996-03-25 1999-03-09 International Business Machines Corporation Floating point split multiply/add system which has infinite precision
US6041403A (en) 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US6061521A (en) * 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
JPH10268117A (ja) 1997-03-27 1998-10-09 Fuji Photo Optical Co Ltd ピックアップ光学系用対物レンズ
US5884071A (en) * 1997-03-31 1999-03-16 Intel Corporation Method and apparatus for decoding enhancement instructions using alias encodings
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6178482B1 (en) * 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6192467B1 (en) * 1998-03-31 2001-02-20 Intel Corporation Executing partial-width packed data instructions
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US6122725A (en) 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6378060B1 (en) * 1998-08-24 2002-04-23 Microunity Systems Engineering, Inc. System to implement a cross-bar switch of a broadband processor
US6272512B1 (en) * 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic

Also Published As

Publication number Publication date
US6925553B2 (en) 2005-08-02
US20010034826A1 (en) 2001-10-25
US7366881B2 (en) 2008-04-29
DE19914210B4 (de) 2006-01-05
US6425073B2 (en) 2002-07-23
US20050251645A1 (en) 2005-11-10
US6694426B2 (en) 2004-02-17
US20020178348A1 (en) 2002-11-28
US6687810B2 (en) 2004-02-03
US6230257B1 (en) 2001-05-08
US20020184474A1 (en) 2002-12-05
US20040083353A1 (en) 2004-04-29

Similar Documents

Publication Publication Date Title
DE19914210A1 (de) Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE19914617C2 (de) Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE69928428T2 (de) Multiplizier-akkumulator-konfiguration zur effizienten planung in einem digitalen signalverarbeitungsrechner
DE4010119C2 (de) Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE2714805C2 (de)
DE69837791T2 (de) VERFAHREN UND GERÄT FÜR EFFIZIENTE, SYNCHRONE MIMD-OPERATIONEN MIT iVLIW PE-ZU-PE KOMMUNIKATIONEN
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE2856483C2 (de)
DE3424962C2 (de)
DE4301417A1 (de)
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE60226141T2 (de) Fifo-speicher system und verfahren dafür
DE2421130C2 (de)
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE2801543A1 (de) Datenverarbeitungsanlage
DE2401364A1 (de) Datenverarbeitungssystem
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE69823302T2 (de) Verfahren und Vorrichtung zum Verschieben von Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee