Nothing Special   »   [go: up one dir, main page]

DE19914210B4 - Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung - Google Patents

Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung Download PDF

Info

Publication number
DE19914210B4
DE19914210B4 DE19914210A DE19914210A DE19914210B4 DE 19914210 B4 DE19914210 B4 DE 19914210B4 DE 19914210 A DE19914210 A DE 19914210A DE 19914210 A DE19914210 A DE 19914210A DE 19914210 B4 DE19914210 B4 DE 19914210B4
Authority
DE
Germany
Prior art keywords
data
segments
data elements
execution
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19914210A
Other languages
English (en)
Other versions
DE19914210A1 (de
Inventor
Patrice Portland Roussel
Glenn J. Portland Hinton
Shreekant S. Portland Thakkar
Brent R. Beaverton Boswell
Karol F. Portland 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 or 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 or 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or 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 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Verfahren zum gestaffelten Ausführen von Anweisungen in einem Prozessor, wobei zur Ausführung jeweils einer Makroanweisung, die wenigstens zwei jeweils einen ersten und einen zweiten gepackten Datenoperanden mit einander entsprechenden Datenelementen speichernde logische Register spezifiziert:
gleichzeitig jeweils auf ein erstes Segment und auf ein zweites Segment der logischen Register zugegriffen wird, wobei die ersten Segmente der logischen Register einen ersten Anteil der einander entsprechenden Datenelemente aufweisen und die zweiten Segmente der logischen Register einen zweiten Anteil der einander entsprechenden Datenelemente aufweisen;
eine von der einzelnen Makroanweisung spezifizierte Operation an den ersten Segmenten und den zweiten Segmenten zu unterschiedlichen Zeiten unter Nutzung derselben Schaltung zum unabhängigen Erzeugen einer ersten und einer zweiten Mehrzahl von Ergebnisdatenelementen ausgeführt wird, und
die erste und zweite Mehrzahl von Ergebnisdatenelementen gleichzeitig in einem logischen Register als dritter gepackter Datenoperand gespeichert werden,
wobei wenigstens zwei aufeinanderfolgende Makroanweisungen jeweils wenigstens zwei logische Register mit gepackten...

Description

  • Die Erfindung bezieht sich auf Verfahren zum gestaffelten Ausführen von Anweisungen bzw. auf einen Prozessor.
  • Aus dem US-Patent 5,642,306 ist ein Verfahren bzw. eine Einrichtung bekannt, bei der Registeroperanden mit gepackten Daten, die vier unabhängige Blöcke der Daten aufweisen, unter Verwendung eines vereinfachten Multiplizierers multipliziert werden, der jeweils nur einen der vier Datenblöcke eines ersten Operanden mit einem von vier Datenblöcken eines zweiten Operanden multipliziert. Dies dient der Verringerung des Hardware-Aufwands für den Multiplizierer, erfordert aber, daß nacheinander jeweils die zugehörigen Einzelblöcke aus den Operanden abgerufen, miteinander multipliziert und das Ergebnis in einem Block eines Registerergebnisoperanden gespeichert wird, bevor das nächste Block-Paar abgerufen und multipliziert werden kann. Darüber hinaus beschreibt die Druckschrift einige Verbesserungen bei der Durchführung von Multiplikationsoperationen durch Fortlassen unnötiger Multiplikationen mit Null.
  • Multimedia-Anwendungen, wie 2D/3D-Graphikanwendungen, Bildverarbeitung, Video-Kompression/Dekompression, Spracherkennungsalgorithmen 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-Anwendungsleistung 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 Datenelement 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 Element 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 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.
  • 2A2B zeigen eine derzeitige Prozessor-Realisierung einer Arithmetik-Logik-Einheit (ALU), die zum Ausführen von SIMD-Anweisungen verwendbar ist. Die ALU gemäß 2A weist die notwendige Schaltung zur Durchführung von Operationen an der vollen Breite der Operanden (d.h. allen Datenelementen) auf. 2A zeigt auch, daß die ALU zwei verschiedenartige 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-Ausführungseinheiten und vier MUL-Ausführungseinheiten sind jeweils in der Lage, als vier separate ADD-Ausführungseinheiten und vier separate MUL-Ausführungseinheiten zu arbeiten. Alternativ kann die ALU mehrere Gleitkomma-Multiplikation-Akkumulation(FMAC)-Einheiten enthalten, von denen jede mehr als eine Operationsart ausführen kann. Bei den folgenden Beispielen wird angenommen, daß ADD- und MUL-Ausführungseinheiten verwendet werden; jedoch können auch andere Ausführungseinheiten, wie FMAC, verwendet werden.
  • Wenn gemäß Darstellung in 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ührungseinheiten 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 Zeitpunkt T+2 ausgegeben wird, so führt jede der vier MUL-Einheiten separat eine MUL-Operation an einem der vier gepackten Datenelemente aus, während die vier ADD-Ausführungseinheiten im Ruhezustand bleiben. Wenn schließlich zum Zeitpunkt 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 erhebliche 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-Ausführungsmaschine in der Lage ist, eine Anweisung pro Taktzyklus zu verarbeiten.
  • Aufgabe der Erfindung ist es, diese Nachteile zu vermeiden, wobei die erforderliche Hardware reduziert, die vorhandene Hardware effektiver genutzt und die Zeitdauer des Untätig-Seins der Ausführungseinheiten verringert werden soll.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. einen Prozessor mit den Merkmalen des Anspruchs 8 gelöst.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Ausführungsbeispielen beschrieben.
  • In der Zeichnung zeigen:
  • 1, eine gepackte SIMD-ADD-Anweisung, wobei entsprechende Datenelemente von einem ersten gepackten Datenoperanden und einem zweiten gepackten Datenoperanden addiert werden;
  • 2A, vier ADD-Ausführungseinheiten und vier MUL-Ausführungseinheiten gemäß einer derzeitigen Prozessorimplementierung des SIMD;
  • 2B, eine derzeitige Prozessorimplementierung eines SIMD-ADD und -MUL unter Verwendung der vier ADD-Ausführungseinheiten und vier MUL-Ausführungseinheiten gemäß 2A;
  • 3, das Konzept einer Operation, die an den Operanden in einer "gestaffelten" Weise ausgeführt wird;
  • 4A, das Prinzip einer Schaltung innerhalb eines Prozessors, der auf Operanden voller Breite aus den logischen Registern zugreift, jedoch Operationen an der Hälfte der Breite der Operanden jeweils durchführt,
  • 4B, ein Zeitdiagramm, welches die Schaltung gemäß 4A verdeutlicht;
  • 5, die Schaltung gemäß 4 mit Bypass gemäß einem Ausführungsbeispiel der Erfindung;
  • 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;
  • 6B, ein Zeitdiagramm, welches das anhand von 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 spezielle Details angeben, um das Verständnis für die vorliegende Erfindung zu erleichtern. Es ist für den Fachmann aber klar, daß diese speziellen Details zum Umsetzen der vorliegenden Erfindung nicht erforderlich sind. In anderen Fällen werden bekannte Strukturen, Schnittstellen und Prozesse nicht im einzelnen beschrieben, um den Gegenstand der Erfindung nicht mit unnötigen Einzelheiten zu belasten.
  • 3 zeigt das Konzept einer Operation, die an Operanden in einer "gestaffelten" Weise durchgeführt wird. Obwohl bei einem Ausführungsbeispiel der Erfindung ein gepacktes 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 Kontext dieses Ausführungsbeispiels auf den Prozeß der Unterteilung der Operanden einer Anweisung in separate Segmente und das sequentielle Verarbeiten jedes Segments unter Verwendung derselben Hardware. Segmente werden sequentiell dadurch verarbeitet, daß eine Verzögerung in die Verarbeitung der aufeinanderfolgenden Segmente eingeführt wird. Wie in der 3 gezeigt ist, werden die gepackten Datenoperanden 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ührungsbeispiele nur ADD- und MUL-Ausführungseinheiten aufweisen, können 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, beschreiben die folgenden Abschnitte zwei exemplarische Ausführungen zur Erläuterung der Erfindung. Insbesondere erhalten beide beschriebenen exemplarischen Ausführungen dieselben Makroanweisungen, welche die 128-Bit-Operanden enthaltenden logischen Register spezifizieren. Der Ausdruck "logisches Register" 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-Umbenennungsmechanismus (weiter unten genauer beschrieben) usw. implementiert werden.
  • Bei dem ersten Ausführungsbeispiel bewirkt jede Makroanweisung, 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 Registern werden die Operanden in niedrig und hoch Segmente (z.B. unter Verwendung von Latch-Schaltungen und Multiplexern) 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ührungsbeispiel jede Makroanweisung, welche 128-Bit-Operanden enthaltende logische Register spezifiziert, in wenigstens zwei Mikroanweisungen unterteilt, welche jeweils nur an der Hälfte der Operanden arbeiten. So werden die Operanden in hoch und niedrig bewertete Segmente unterteilt, und jede Mikroanweisung bewirkt separat, daß nur auf die Hälfte der Operanden aus den Registern zugegriffen wird. Diese Art der Unterteilung ist in einer SIMD-Architektur möglich, da jeder der Operanden vom anderen unabhängig ist. Während Implementierungen 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 resultierenden Operanden in ein von der Makroanweisung spezifiziertes 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 Operanden 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.
  • 4A veranschaulicht das Konzept einer Schaltung innerhalb eines Prozessors gemäß einem ersten Ausführungsbeispiel, das auf die volle Breite der Operanden aus den logischen Registern zugreift, jedoch zu jedem Zeitpunkt Operationen nur auf der Hälfte der Breite der Operanden ausführt. Bei diesem Ausführungsbeispiel wird angenommen, daß die Prozessor-Ausführungsmaschine eine Anweisung pro Taktzyklus zu verarbeiten vermag. Es sei beispielsweise angenommen, 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 übertragen und danach zur Verarbeitung zu den Ausführungseinheiten. 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 Xund 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öglicht daher der 64-Bit-Hardware, die 128 Daten Bits zu verarbeiten. Die niedrig bewerteten Ergebnisse aus der Ausführungseinheit werden im Verzögerungselement M3 solange gehalten, 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 Datensegmente, 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 bewerteten 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 Registerdatei 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 Parallelverarbeitung der vollen Breite der Operanden entsprechend derzeitigen Prozessor-Ausführungen erforderlich wären. Dieses Ausführungsbeispiel zieht Nutzen aus der statistischen Analyse, wonach Multimedia-Anwendungen annähernd 50% ADD-Anweisungen und 50% MUL-Anweisungen benutzen. Um die Vorteile dieses Ausführungsbeispiels der Erfindung in einer Der-Reihe-Nach-Maschine nutzbar zu machen, muß die Reihenfolge der ADD-Anweisungen und MUL-Anweisungen nach dem folgenden 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.
  • 4B ist ein Zeitdiagramm, welches die Schaltung gemäß 4A erläutert. Gemäß 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äß 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 nachfolgenden beiden Datenelemente des höher bewerteten Datensegments, nämlich X2Y2 und X3Y3, werden addiert. Zum Zeitpunkt T+1 kann auch die Verarbeitung der MUL-Anweisung "MUL X,Y" beginnen. Zum Zeitpunkt T+1 führen die beiden MUL-Ausführungseinheiten zunächst MUL-Operationen an den niedriger bewerteten Datensegmenten oder den beiden niedrigeren gepackten Datenelementen gemäß 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 Datensegments, nämlich X2Y2 und X3Y3, werden multipliziert. Wenn auch das zuvor beschriebene Ausführungsbeispiel unter Bezugnahme auf ADD- und MUL-Operationen unter Verwendung von zwei Ausführungseinheiten erläutert wurde, können andere Ausführungsbeispiele mit einer beliebigen Anzahl von Ausführungseinheiten 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-Operation an den höheren 32-Bit-Werten zum Zeitpunkt T+1. Im Falle einer MUL-Operation verhalten sich die MUL-Ausführungseinheiten 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ächtlichen Kostenvorteil für Hardware-Hersteller dar.
  • Wie oben gesagt, werden die ADD- und MUL-Ausführungseinheiten nach dem beschriebenen Ausführungsbeispiel zur Neuausfü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 statistische 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 verwenden. Um aus diesem Ausführungsbeispiel der Erfindung in einer Der-Reihe-Nach-Maschine nutzen zu ziehen, muß die Reihenfolge 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ührungseinheiten die zweite RDD-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 werden, 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 Operationsleistung wie zuvor beibehalten wird.
  • Wenn jedoch eine zweite ADD-Anweisung der ersten folgt, kann die zweite ADD-Anweisung mit Hilfe einer Einplanungseinheit verzögert werden, um den ADD-Ausführungseinheiten die Möglichkeit zu geben, die erste ADD-Anweisung zu beenden, 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 Einplanungseinheit 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ührungseinheiten in einem halben Taktzyklus anstelle eines vollen Taktzyklus. Die Wiederausführung der Anweisung in dem halben Taktzyklus sorgt effektiv für eine Operationsverdoppelung der Hardware, d.h. sie macht die Hardware doppelt so schnell. Auf diese Weise stehen die ADD- oder MUL-Ausführungseinheiten 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 vollen Taktzyklus ausführt. Eine doppelt so schnelle (double pumped) Hardware bedingt jedoch beträchtlich mehr Hardware zur wirksamen Verarbeitung der Anweisung im halben Taktzyklus.
  • 5 zeigt die Schaltung gemäß 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äß 5 steht in Verbindung mit zwei Quellregistern 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 Eingangsdaten werden über die Vollbreiten-Datenleitungen 115 bzw. 125 gelesen. In der Darstellung gemäß 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.
  • 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 5 gezeigt sind, können mehr oder weniger Ausführungseinheiten im Rahmen der vorliegenden Erfindung vorgesehen sein. Um Vollbreitenkalkulationen auszuführen, werden die Vollbreiten-Eingangsdaten in zwei Halbbreiten-Segmente unterteilt und sequentiell in eine Logikeinheit eingegeben. Die Schaltung gemäß 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 unabhä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 Datenleitungen 154 und 164 führen hoch bewertete Daten. Die Datenleitungen 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 niedrig 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 210240, 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 210240 geben die Daten des jeweils ausgewählten Eingangs auf die Datenleitungen 215, 225, 235 bzw. 245, welche zu einer dritten Schaltstufe übertragen werden. Jeder Schalter 210240 schaltet nach Maßgabe der Steuereinrichtung 180 unabhängig voneinander auf einen ausgewählten Eingang.
  • Jede Ausführungseinheit 130 oder 140 empfängt typischerweise Eingaben über zwei Eingangsanschlüsse IN1 und IN2. Eingangsdaten gelangen zu jedem Eingangsanschluß über die dritte Schalterstufe. Die dritte Stufe bildet für jede Ausfü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 vorgesehen. 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 Eingangsdaten stammen von den niedrigen und hohen Datenschaltern 210, 230 der zweiten Stufe. Ein zweites Paar Eingangsdaten werden über die Datenleitungen 310 und 320, jeweils einem "niedrigen lokalen Bypass-Bus" und einem "hohen lokalen 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 identisch den Eingaben zu dem Schalter 270. Ebenso leiten die dem IN2-Anschlufl zugeordneten Schalter ihre Eingaben von derselben Quelle ab. Eingaben an den Schalter 300 sind identisch mit den Eingaben an den Schalter 280. Obwohl die Eingaben identisch sind, können die Schalter 270300 unabhängig voneinander gesteuert werden.
  • Die Ausführungseinheiten 130 und 140 erzeugen die Ausgabedaten als zwei Datensegmente halber Breite. Niedrig bewertete Daten werden an einem OUTLO-Anschluß ausgegeben. Hoch bewertete Daten werden einen Taktzyklus später am OUTHI-Anschluß ausgegeben. Die niedrig und hoch bewerteten Ausgabedaten 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 eingegeben werden sein. Die hoch bewerteten Ausgabendaten, die einen Taktzyklus später erzeugt wurden, können in jede logische Einheit ein Zyklus nach ihrer Erzeugung eingegeben werden. 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 erscheinen 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 210240 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 210240 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-Datenleitungen. Das Flip-Flop 400 verzögert die niedrig bewerteten Datenleitungen um einen Taktzyklus, um einen Aufbau von Daten 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 Ergebnisregister 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ührungseinheit 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.
  • Eine 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. Die Bypass-Steuereinrichtung 180 konfiguriert das Schalten jedes Schalters, um jeden gewünschten Bypass zu implementieren. Wenn die Bypass-Steuereinrichtung 180 eine Anweisung aus dem Prozessor kern empfängt, bestimmt sie, ob die Eingangsdaten 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 ausfü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 Schaltung einlesen zu müssen.
  • Die Bypass-Steuereinrichtung 180 hält einen Drei-Register-Speicher (nicht gezeigt). Ein Register, ein lokales Bypass-Register, ist dem unteren lokalen Bypass-Bus 310 zugeordnet. Ein zweites Register, ein globales Bypass-Register, 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- Steuereinrichtung 180 gespeichert.
  • Jedesmal dann, wenn eine Anweisung durch die in 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 Übereinstimmung, 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 lei ten. Die Steuereinrichtung 180 muß nur die Daten verfolgen, 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-Bussen einen Taktzyklus später um.
  • Die folgende Tabelle erläutert, wie die Bypass-Steuereinrichtung 180 ihre Überwachungsfunktion ausführt. Am Taktzyklus T wird die PADD-Funktion ausgeführt, wobei ein Ergebnis erzeugt wird, das im als Register "C" bezeichneten Bestimmungsregister 390 gespeichert werden soll. Die Bypass- Steuereinrichtung 180 speichert ein Etikett für C in einem dem lokalen Bypass für niedrig bewertete Daten zugeordneten Speicherregister.
  • Figure 00170001
  • Zum Taktzyklus T+1 gibt der Kern die PSHFT-Anweisung aus. Die Bypass-Steuereinrichtung 180 vergleicht ihre lokalen, 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-Steuereinrichtung 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 Etikett 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 bewerteten Daten zur PSHFT-Anweisung folgen, läßt die Steuereinrichtung 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 zugeordneten Register festgestellt. Dementsprechend läßt die Bypass-Steuereinrichtung 180 den globalen Bypaß wirksam werden. 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ückgeleitet zur Logikeinheit 130.
  • Im Taktzyklus T+3 rücken die Daten innerhalb der Register der Bypass-Steuereinrichtung 180 in einer dem Fortschreiten 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 abzuschließ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 Schalter 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 konventionellen Verfahren gelesen wird.
  • Bus-Konflikte können auftreten bei sequentiellen Operationen, die von einer einzelnen Ausführungseinheit durchgefü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 Ausfü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 einzugeben.
  • Bei einem Ausführungsbeispiel können die Schalter der Schaltung als Multiplexer-Latch-Schaltungen ("LMUX") ausgebildet 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 Mikroprozessorkern und den Ausführungseinheiten vermeidet und sieht darüber hinaus das gewünschte "one UOP, two data"-Prinzip der gestaffelten Ausführung vor.
  • Gemäß einem alternativen Ausführungsbeispiel kann mit der vorliegenden Erfindung die gestaffelte Ausführung eines Operanden voller Breite durch das Konvertieren einer Vollbreiten- Makrooperation in wenigstens zwei Mikroanweisungen erreicht werden, von denen jede nur mit der Hälfte der Operanden arbeitet. Obgleich die folgende Beschreibung unter Berücksichtigung eines speziellen Registerumbenennungsverfahrens beschrieben ist, ist einzusehen, daß andere Register-Umbenennungsmechanismen ebenfalls verwendet werden können. 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.
  • 6A veranschaulicht begrifflich ein Ausführungsbeispiel einer Pipeline zur Durchführung von Operationen an Operanden in "gestaffelter" Weise, indem eine Makrooperation in eine Mehrzahl von Mikroperationen konvertiert wird, so daß jede einen Teil der vollen Breite der Operanden verarbeitet. 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ötigerweise zu verundeutlichen. Wie dargestellt, wird in der Dekodierstufe 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 unterstü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 halber 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 Registerabbildungen und Umordnungspuffern. Die Quellen jeder Mikroanweisung 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-Register. 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 Operanden entsprechenden Registerabbildungstabelle. Die Mikroanweisungen 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 ausführt). Jede Mikroanweisung empfängt und bearbeitet getrennt ein 64-Bit-Segment des 128-Bit-Operanden. Eine der Operationen (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 Operation, 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 Operation 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 6A zeigt, daß die gepackten Gleitkommadaten an eine Realregisterdatei mit Y*2 64-Bit-Registern, die jeweils als hoch und niedrig gekennzeichnet sind, zurückgegeben werden, können alternative Ausführungsbeispiele eine Realregisterdatei mit Y 128-Bit-Registern verwenden. Zusätzlich können, während ein Ausführungsbeispiel mit einem Registerumbenennungsmechanismus mit Umordnungspuffer und Realregisterdateien beschrieben wurde, andere Ausführungsbeispiele einen beliebigen Registerumbenennungsmechanismus verwenden. Beispielsweise verwendet der Registerumbenennungsmechanismus gemäß U.S.-Patent Nr. 5,197,132 eine Vorgeschichte-Warteschlange-Sicherungs-Abbildung (Back up map).
  • 6B ist ein Zeitablaufplan, der das in 6A beschriebene Ausführungsbeispiel näher beschreibt. Zum Zeitpunkt T tritt eine Makroanweisung "ADD X,Y" in die Dekodierstufe der Pipeline gemäß 6A ein. Die Makroanweisung ist hierbei beispielsweise eine 128-Bit-Anweisung. Die 128-Bit-Makroanweisung wird konvertiert zu zwei 64-Bit-Mikroanweisungen, 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 ausgeführt. Zum Zeitpunkt T+1 wird die hoch bewertete Operation dann von derselben 64-Bit-Einheit ausgeführt. Dieses Ausführungsbeispiel der vorliegenden Erfindung ist daher speziell zur Verarbeitung von 128-Bit-Anweisungen unter Nutzung vorhandener 64-Bit-Hardwaresysteme ohne signifikante Änderungen der Hardware, geeignet. Die vorhandenen Systeme werden einfach um eine neue Abbildung zur Behandlung gepackter Gleitkommawerte erweitert, zusätzlich zu der vorhandenen Abbildung für skalare gepackte Gleitkomma/Ganzzahl-Daten und skalarer Ganzzahldaten.

Claims (10)

  1. Verfahren zum gestaffelten Ausführen von Anweisungen in einem Prozessor, wobei zur Ausführung jeweils einer Makroanweisung, die wenigstens zwei jeweils einen ersten und einen zweiten gepackten Datenoperanden mit einander entsprechenden Datenelementen speichernde logische Register spezifiziert: gleichzeitig jeweils auf ein erstes Segment und auf ein zweites Segment der logischen Register zugegriffen wird, wobei die ersten Segmente der logischen Register einen ersten Anteil der einander entsprechenden Datenelemente aufweisen und die zweiten Segmente der logischen Register einen zweiten Anteil der einander entsprechenden Datenelemente aufweisen; eine von der einzelnen Makroanweisung spezifizierte Operation an den ersten Segmenten und den zweiten Segmenten zu unterschiedlichen Zeiten unter Nutzung derselben Schaltung zum unabhängigen Erzeugen einer ersten und einer zweiten Mehrzahl von Ergebnisdatenelementen ausgeführt wird, und die erste und zweite Mehrzahl von Ergebnisdatenelementen gleichzeitig in einem logischen Register als dritter gepackter Datenoperand gespeichert werden, wobei wenigstens zwei aufeinanderfolgende Makroanweisungen jeweils wenigstens zwei logische Register mit gepackten Datenoperanden sowie eine erste bzw. eine von der ersten Operation verschiedene, zweite Operation an gepackten Datenoperanden spezifizieren, wobei bei der ersten Operation die Ergebnisdatenelemente unter Nutzung einer ersten Schaltung und bei der zweiten Operation die Ergebnisdatenelemente unter Nutzung einer zweiten Schaltung erzeugt werden, wobei die Operationen derart überlappend ausgeführt werden, daß während der Zeitdauer, in der die erste Schaltung die erste Operation an den zweiten Segmenten ausführt, die zweite Schaltung die zweite Operation an den ersten Segmenten ausführt.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Datenelemente der zweiten Segmente verzögert werden, während der Ausführungsschritt an den Datenelementen der ersten Segmente durchgeführt wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die ersten Segmente die niedriger bewerteten Datensegmente und die zweiten Segmente die höher bewerteten Datensegmente sind.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß der Schritt der Ausführung der von einer Makroanweisung spezifizierten Operation an den ersten Segmenten während eines ersten Taktzyklus' und der Schritt der erneuten Ausführung der Operation an den zweiten Segmenten während des nachfolgenden Taktzyklus' durchgeführt wird.
  5. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß der Schritt der Ausführung der von einer Makroanweisung spezifizierten Operation an den ersten Segmenten während eines ersten halben Taktzyklus' und der Schritt der erneuten Ausführung der Operation an den zweiten Segmenten während des zweiten halben Taktzyklus' durchgeführt wird.
  6. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß zumindest ein Teil der Ergebnisdatenelemente der ersten Operation als Datenoperanden der zweiten Operation benötigt werden.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß eine der zwei Operationen eine SIMD-ADDIER-Operation und die andere Operation eine SIMD-MULTIPLIZIER-Operation ist.
  8. Prozessor mit einer Registerdatei mit wenigstens zwei Registern, die jeweils gepackte Daten enthalten, wobei die gepackten Daten jeweils eine Mehrzahl von einander entsprechenden Datenelementen umfassen, und mit einer mit der Registerdatei gekoppelten Schaltung, wobei die Schaltung in Abhängigkeit von einer eine Operation spezifizierenden Einzelanweisung gleichzeitig 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 Datenelemente durchgeführt wird, um ein erstes Ergebnis auszugeben; und die Operation auf der Ausführungseinheit erneut ausführen kann, wobei die Operation an einer zweiten Untermenge der Datenelemente durchgeführt wird, um ein zweites Ergebnis auszugeben, wobei eine Verzögerungsschaltung vorgesehen ist, die die zweite Untermenge der Datenelemente verzögert, während die Schaltung an der ersten Untermenge der Datenelemente die Operation ausführt, wobei eine erste Ausführungseinheit zum Durchführen einer ersten Operation und eine zweite Ausführungseinheit zum Durchführen einer zweiten Operation vorgesehen ist, wobei die erste und zweite Ausführungseinheit derart in die Schaltung eingekoppelt sind, daß während der Zeit, in der die Schaltung in Abhängigkeit von einer ersten, die erste Operation spezifizierenden Einzelanweisung die erste Operation auf der ersten Ausführungseinheit an der zweiten Untermenge der Datenelemente ausführt, die Schaltung in Abhängigkeit von einer zweiten, nachfolgenden, die zweite Operation spezifizierenden Einzelanweisung die zweite Operation auf der zweiten Ausführungseinheit an der ersten Untermenge der Datenelemente ausführt.
  9. Prozessor nach Anspruch 8, dadurch gekennzeichnet, daß die erste Untermenge der Datenelemente ein niedriger bewertetes Datensegment und die zweite Untermenge der Datenelemente ein höher bewertetes Datensegment des jeweiligen Registers der Registerdatei ist.
  10. Prozessor nach Anspruch 8 oder 9, dadurch gekennzeichnet, daß eine der Operationen eine SIMD-ADDIER-Operation und die andere eine SIMD-MULTIPLIZIER-Operation ist.
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 DE19914210A1 (de) 1999-10-07
DE19914210B4 true 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
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
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
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
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
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
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
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
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
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
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
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
AU2002339867A1 (en) * 2001-09-04 2003-03-18 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
US7668897B2 (en) * 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
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
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
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
JP5126226B2 (ja) 2007-05-17 2013-01-23 富士通株式会社 演算ユニット、プロセッサ及びプロセッサアーキテクチャ
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
GB2537524B (en) * 2014-09-30 2017-09-27 Imagination Tech Ltd Variable length execution pipeline having an odd number of stages
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5680720A (en) * 1979-12-05 1981-07-02 Fujitsu Ltd Synchronous processing unit with partial processing circuit
US4773038A (en) * 1986-02-24 1988-09-20 Thinking Machines Corporation Method of simulating additional processors in a SIMD parallel processor array
US5642306A (en) * 1994-07-27 1997-06-24 Intel Corporation Method and apparatus for a single instruction multiple data early-out zero-skip multiplier

Family Cites Families (70)

* 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
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
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
US5579253A (en) * 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
JP3615222B2 (ja) * 1994-12-02 2005-02-02 インテル・コーポレーション 複合オペランドのパック演算機能を有するマイクロプロセッサ
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
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
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
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
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
BR9612911B1 (pt) 1995-08-31 2010-12-14 aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote.
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
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
AU1465497A (en) 1995-12-19 1997-07-28 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
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
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5680720A (en) * 1979-12-05 1981-07-02 Fujitsu Ltd Synchronous processing unit with partial processing circuit
US4773038A (en) * 1986-02-24 1988-09-20 Thinking Machines Corporation Method of simulating additional processors in a SIMD parallel processor array
US5642306A (en) * 1994-07-27 1997-06-24 Intel Corporation Method and apparatus for a single instruction multiple data early-out zero-skip multiplier

Also Published As

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

Similar Documents

Publication Publication Date Title
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE19914617C2 (de) Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten
DE69429226T2 (de) Absendung von Befehlen an mehrere Verarbeitungseinheiten
DE19882363B4 (de) Prozessor mit einem Umgehungsnetzwerk und mehreren Ports
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE69619885T2 (de) Datenverarbeitungsanordnung mit Koprozessor
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69033444T2 (de) Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69620499T2 (de) Matrizen Tranzposition
DE4010119C2 (de) Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor
DE69228360T2 (de) Registerlesekontrolle
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE3424962C2 (de)
DE1549523B2 (de) Datenverarbeitungsanlage
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
DE69230626T2 (de) Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten

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