DE69418146T2 - Temporärer Registersatz für einen superpipeline-superskalaren Prozessor - Google Patents
Temporärer Registersatz für einen superpipeline-superskalaren ProzessorInfo
- Publication number
- DE69418146T2 DE69418146T2 DE69418146T DE69418146T DE69418146T2 DE 69418146 T2 DE69418146 T2 DE 69418146T2 DE 69418146 T DE69418146 T DE 69418146T DE 69418146 T DE69418146 T DE 69418146T DE 69418146 T2 DE69418146 T2 DE 69418146T2
- Authority
- DE
- Germany
- Prior art keywords
- pipeline
- instruction
- result
- temporary
- register
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 26
- 238000013507 mapping Methods 0.000 description 47
- 238000012545 processing Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 16
- 239000011295 pitch Substances 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3873—Variable length pipelines, e.g. elastic pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf das Gebiet des Computersystementwurfs. Insbesondere bezieht sich die vorliegende Erfindung auf den Entwurf super-pipeline-verschachtelter und superskalarer Mikroprozessoren.
- Als Mikroprozessoren das erste Mal eingeführt wurden, hatten sie typischerweise eine zentrale Verarbeitungseinheit (CPU), die eine serielle Hardware-Organisation verwendete. Dies bedeutete, daß die logischen Hauptblöcke (z. B. Heranholen, Decodieren, Ausführen und Zurückschreiben) einfach miteinander verkettet waren, so daß nachfolgende Stufen warten mußten, bis der vorhergehende Logikblock seine Arbeit beendet hatte. Folglich mußte eine arithmetisch-logische Einheit (ALU) des Ausführungslogikblocks, der einen Befehl ausführen sollte, darauf warten, daß die Operanden aus einem gistersatz gelesen waren. Das Lesen der Operanden aus dem Registersatz wiederum mußte warten, bis der Befehl decodiert war. Das Decodieren des Befehls wiederum konnte nicht geschehen, bevor der Befehl aus dem Speicher herangeholt war.
- Eine Pipeline-Verschachtelung verringert die Befehlszykluszeit durch Überlappen der Operationen der logischen Hauptblöcke. Beispielsweise können sich der Befehls-Cache, der Registersatz und die ALU in separaten Pipeline-Stufen befinden. Während der Operation verarbeiten die Stufen gleichzeitig verschiedene Befehle. Bei jedem Voranschreiten eines Systemtakts leitet jede Stufe ihr Ergebnis an die nachfolgende Stufe weiter.
- Super-Pipeline-Entwürfe erhöhen den Datendurchsatz, indem sie die Anzahl der Pipelinestufen erhöhen, wodurch es der CPU ermöglicht wird, an Abschnitten verschiedener Befehle gleichzeitig zu arbeiten. Im allgemeinen ist eine Super-Pipeline eine erweiterte Pipeline (und länger als die vier herkömmlichen Heranhol-, Decodier-, Ausführ- und Rückschreibstufen), die üblicherweise bei irgendeinem. Vielfachen entweder des CPU-, Befehls-Cache- oder externen Speichertaktes getaktet wird.
- Superskalare Mikroprozessoren enthalten zwei oder mehr parallele Ausführungseinheiten und können folglich gleichzeitig mehr als einen Befehl pro Zyklus verarbeiten. Ein beispielhafter "Zwei-Skalar"-Prozessor würde zwei Befehle aus dem Befehls-Cache heranholen, zwei Sätze von Registeradressen und Lese- und Schreib-Ports aufweisen und zwei Funktionseinheiten, wie beispielsweise ALUs. Wo ein "einskalarer" Prozessor höchstens einen Befehl pro Zyklus in seine Pipeline eingeben kann, weist der beispielhafte zweiskalare superskalare Prozessor genügend Ressourcen auf, um bis zu zwei Befehle pro Zyklus (einen Befehl pro Pipeline) zu behandeln. Üblicherweise ist ein superskalarer Prozessor ebenfalls pipeline-verschachtelt.
- Nicht alle aufeinanderfolgenden Gruppen von Befehlen in einem Programm sind für die gleichzeitige Ausführung geeignet. Folglich weisen superskalare Prozessoren üblicherweise eine zusätzliche Logik auf, die den Befehlsstrom überprüft und entscheidet, wieviele Befehle in jedem Zyklus zur Ausführung ausgegeben werden sollen. Die Komplexität dieser Logik hängt von der Befehlssatzarchitektur und dem speziellen Satz von Ausführungsressourcen ab, die die Designer einzubringen auswählten. Oftmals setzen superskalare Prozessoren die zusätzliche Befehlsüberprüfungslogik in eine zusätzliche Pipeline-Stufe zwischen der Heranhol- und der Registerlesestufe ein.
- Ein "jüngerer" Befehl kann beispielsweise als Basis, auf der der jüngere Befehl sein Ergebnis aufbaut, ein Ergeb nis erfordern, das durch einen vorhergehenden "älteren" Befehl berechnet wurde. In einem solchen Falle wird die Befehlsüberprüfungslogik typischerweise die Abfertigung des jüngeren Befehls (d. h. den Eintritt des jüngeren Befehls in eine Ausführungspipeline zur Ausführung) verzögern, bis der ältere Befehl die Daten berechnet hat, von welchen der jüngere Befehl abhängt. Bei einem zweiten Beispiel kann es sein, daß nur eine Pipeline innerhalb des superskalaren Prozessors in der Lage ist, einen speziellen Typ eines Befehls auszuführen. Sofern zwei Befehle in einem Befehlsstrom von diesem speziellen Typ sind, wird die Befehlsüberprüfungslogik üblicherweise den älteren Befehl in die ausgewählte Pipeline abfertigen und die Abfertigung des jüngeren Befehls verzögern, bis die ausgewählte Pipeline verfügbar ist.
- Wenn eine Gruppe von Befehlen parallel in einem superskalaren Prozessor ausgeführt wird, kann es sein, daß einer der Befehle das Auftreten einer Ausnahme bewirkt. Wenn die Ausnahme auftritt, wird üblicherweise jeder Befehl in der Gruppe von Befehlen, der sich nach dem die Ausnahme hervorrufenden Befehl befindet (d. h. der jünger ist als der Ausnahmebefehl), annulliert. Sobald die Ausnahme behandelt worden ist, werden die Befehle, die jünger als der Ausnahmebefehl sind, dann erneut herangeholt, abgefertigt und ausgeführt.
- Sofern ein superskalarer Prozessor super-pipeline-verschachtelt ist, ist es typisch, daß eine Pipeline, die einen einfachen Befehl behandelt, weniger Ausführungsstufen erfordert, als eine Pipeline, die einen relativ komplexen Befehl behandelt. Man betrachte beispielsweise einen zwei-skalaren Super-Pipeline-Prozessor. Bei diesem Beispielprozessor ist eine Ausführungspipeline in fünf Stufen unterteilt, um einen relativ komplexen Befehl zu behandeln, und die andere Ausführungspipeline ist in zwei Stufen unterteilt, um einen relativ einfachen Befehl zu behandeln. Somit wird die einfache Pipeline ein Endergebnis am Ende der zweiten Stufe haben, aber die komplexe Pipeline wird für drei weitere Stufen kein Endergebnis haben. Um Ausnahmen zu behandeln und die Pipelines auszubalancieren, werden typischerweise zusätzliche Stufen zu der einfacheren Pipeline hinzugefügt. Bei diesem Beispiel würden drei zusätzliche Stufen zu der einfachen Pipeline hinzugefügt werden, so daß sowohl die einfache als auch die komplexe Pipeline fünf Stufen hätten. Jede dieser zusätzlichen Stufen ist eine Blindstufe, die das Ergebnis des endgültigen einfachen Ergebnisses hält, bis ihre korrespondierende komplexe Pipeline-Stufe die Verarbeitung abschließt. Das Hinzufügen dieser zusätzlichen Stufen zu der einfachen Befehlspipeline gestattet es, daß das Endergebnis von beiden Pipelines gleichzeitig in den Registersatz geschrieben wird (d. h. am Ende der fünften Stufe).
- Das Hinzufügen von Blindstufen vereinfacht die Ausnahmebehandlung, sofern ein Befehlspaar ausgeführt wird, daß aus einem komplexen Befehl gefolgt von einem einfachen Befehl aufgebaut ist, und bei dem eine Ausnahme für den (älteren) komplexen Befehl auftritt, nachdem der (jüngere) einfache Befehl bei seinem Endergebnis angekommen ist. In solch einem Fall erzeugt die Ausführung des einfachen Befehls ein Endergebnis, das wegen der von dem älteren Befehl erzeugten Ausnahme nicht gültig ist, und die permanente Zustandsänderung des einfachen Befehls sollte zurückgestellt werden. Sofern die zusätzlichen Stufen nicht zu der einfachen Befehlspipeline hinzugefügt worden wären, könnte das Ergebnis des einfachen Befehls möglicherweise bereits in den Registersatz zurückgeschrieben werden, bevor die Ausnahme für den komplexen Befehl auftritt. Durch Hinzufügen der zusätzlichen Stufen zu der einfachen Befehlspipeline wird das Endergebnis des einfachen Befehls nicht in den Registersatz geschrieben, bis der komplexe Befehl erfolgreich abgeschlossen wurde. Wenn eine Ausnahme bei einem älteren komplexen Befehl auftritt, ist es folglich eine einfache Sache, das Endergebnis des jüngeren einfachen Befehls in den zusätzlichen Stufen ungültig zu machen, bevor das Endergebnis des einfachen Befehls in den Registersatz zurückgeschrieben wird. So kann ein Befehl abgefertigt und spekulativ ausgeführt werden. Der spekulative Befehl wird nicht den Zustand des Computers aktualisieren, bis jeder Befehl, der älter als der spekulative Befehl ist, erfolgreich abgeschlossen worden ist.
- Man beachte, daß bei dem obigen Beispiel das Endergebnis des einfachen Befehls drei Stufen vor seinem Schreiben in dem Registersatz bekannt ist. Ein typischer superskalarer Super-Pipeline-Entwurf macht sich diesen Umstand zunutze, indem er eine Auswahlschaltung am Beginn jeder Ausführungspipeline zur Verfügung stellt. Die von irgendeiner (oder sämtlichen) Stufen irgendeiner (oder sämtlicher) Ausführungspipelines erzeugten Daten werden in temporären Ergebnisregistern latch-gespeichert und in die Auswahllogik eingegeben. Dann wird die Auswahllogik verwendet, um zwischen den Ausgabe-Ports des Registersatzes und den erzeugten Daten einiger (oder sämtlicher) Ausführungsstufen (einiger oder sämtlicher) Pipelines auszuwählen. Dies gestatte t es, daß ein Befehl, der von den durch eine Ausführungsstufe eines älteren Befehls erzeugten Daten abhängig ist, in eine Ausführungspipeline abgefertigt wird, sobald die geforderten Ausführungsstufendaten für den älteren Befehl erzeugt worden sind. Folglich braucht die Abfertigung des jüngeren Befehls nicht verzögert zu werden, bis die erzeugten Daten des älteren Befehls in den Registersatz geschrieben worden sind. Stattdessen wird die Auswahllogik verwendet, um den abgefertigten Befehl mit den in Bezug auf den abgefertigten Befehl jüngst erzeugten Daten zu versorgen.
- Jede Stufe einer Pipeline erzeugt typischerweise ein temporäres Ergebnis, das in die nächste Stufe der Pipeline eingegeben wird. So wie eine Pipeline ein Endergebnis einer Pipeline erfordern kann, das als Eingabe zur Verfügung gestellt wird, kann es auch sein, daß ein Zwischenergebnis als Eingabe für eine Pipeline verwendet werden kann. So könnte beispielsweise eine zweistufige Pipeline den Schritt des Addierens der Inhalte zweier Register in einer ersten Stufe durchführen, und dann, in einer zweiten Stufe, die in der ersten Stufe gewonnene Summe verschieben. Sofern das Zwischenergebnis der ersten Stufe durch einen nachfolgenden Befehl verwendet wird, der die in der ersten Stufe der zweistufigen Pipeline gewonnene Summe als Eingabe erfordert, kann der Durchsatz des Prozessors erhöht werden, indem die Summe zur Verwendung durch den nachfolgenden Befehl zur Verfügung gestellt wird.
- Es gibt eine Reihe von Problemen, die der Einbringung temporärer Ergebnisregister in die Pipelines eines superskalaren Prozessors zugeordnet sind. Wenn die Anzahl der Pipelines und die Anzahl der Stufen pro Pipeline erhöht wird, so muß auch die Anzahl der Eingänge in die Auswahlschaltungen am Beginn jeder Ausführungspipeline erhöht werden. Dieses Problem wird noch verschlimmert, wenn die Breite (d. h. die Anzahl von Bits) des Datenpfades ebenfalls erhöht wird. Das Liefern verschiedener breiter Eingangssignale in eine Auswahlschaltung benutzt einen großen Anteil der Fläche auf einem Chip einer integrierten Schaltung, und es ist eine schwierige Aufgabe, die temporären Ergebnisse von vielen Stufen der mehreren Pipelines in mehrere Auswahlschaltungen zu leiten (zu routen).
- Das Abstandsrastermaß (Pitch) kann für die Zwecke dieser Erörterung gedacht werden als die physikalische Breite der temporären Register, der Auswahllogik oder der Funktionseinheiten. Das Rastermaß der Funktionseinheiten jeder Pipeline ist typischerweise größer als das Minimal-Rastermaß, das für die temporären Register und die zwischen den Stufen angeordnete Auswahllogik erforderlich ist. Typischerweise wird die Größe der temporären Register und der Auswahllogik einer Pipeline künstlich über die minimal erforderliche Größe erhöht, so daß die temporären Register und Auswahllogik ein Rastermaß aufweisen, das mit dem Rastermaß der Funktionseinheiten der Pipeline übereinstimmt. Somit wird Fläche auf dem Chip verschwendet, um das Rastermaß der temporären Register und der Auswahllogik, die zwischen den Stufen der Funktionseinheiten angeordnet ist, mit dem Rastermaß der Funktionseinheiten einer Pipeline in Übereinstimmung zu bringen.
- Da die temporären Register und die Auswahllogik typischerweise auf dem kritischen Datenpfad der Pipeline angeordnet sind, erhöhen sie zusätzlich die Länge jeder Pipeline-Stufe. Dies verlangsamt die Pipeline und macht, sofern zusätzliche Stufen zu den Pipelines hinzugefügt werden, das Ausbalancieren der längeren Pipelines komplexer. Da die Auswahllogik zwischen den Pipelines eingestreut ist, müssen darüber hinaus, sofern die Auswahllogik modifiziert werden muß, verschiedene Logikblöcke innerhalb des Prozessors geändert werden.
- Der Trend bei der Konstruktion superskalarer Super- Pipeline-Prozessoren geht in Richtung einer Erhöhung der Anzahl von Pipelines, einer Erhöhung der Anzahl von Ausführungsstufen innerhalb jeder Pipeline und der Erhöhung der Breite des Datenpfads jeder Pipeline. Die bekannte Lösung des Hinzufügens einer Auswahlschaltung an den Beginn jeder Ausführungspipeline ist nicht machbar, wenn eine große Anzahl von Pipeline-Stufen aus einer großen Anzahl von Pipelines jeweils eine breite Datenpfadeingabe in die Auswahlschaltung jeder Pipeline liefert.
- US-A-4,228,497 offenbart eine Pipeline, bei welcher jede Stufe ein zugeordnetes Ausgabedateiregister aufweist. Jedoch gibt es keinen gemeinsamen Registersatz für sämtliche Stufen und es gibt nur eine einzige Pipeline.
- Die Erfindung bezieht sich auf eine Vorrichtung und ein Verarbeitungsverfahren nach den Ansprüchen 1 und 7. Es werden ein Prozessor-Verfahren und eine Prozessor-Einrichtung offenbart. Der Prozessor weist eine Ausführungspipeline, einen Registersatz und eine Steuereinrichtung auf. Die Ausführungseinheit dient der Ausführung eines Befehls und weist eine erste Stufe zum Erzeugen eines ersten Ergebnisses und eine letzte Stufe zum Erzeugen eines Endergebnisses auf. Der Registersatz dient dem Speichern des ersten Ergebnisses und des Endergebnisses. Die Steuereinrichtung macht das in dem Registersatz gespeicherte erste Ergebnis in dem Falle verfügbar, daß das erste Ergebnis für die Ausführung eines nachfolgenden Befehls erforderlich wird. Durch Speichern des Ergebnisses der ersten Stufe in dem Registersatz wird die Länge der Ausführungspipeline gegenüber der des Standes der Technik reduziert. Darüber hinaus wird die zum Liefern der Eingabesignale an die Ausführungspipeline erforderliche Logik beträchtlich gegenüber der im Stand der Technik erforderlichen vereinfacht.
- Die Aufgaben, Merkmale und Vorteile des Verfahrens und der Vorrichtung gemäß der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der Erfindung ersichtlich, in welcher:
- Fig. 1 einen Prozessor veranschaulicht, der Pipeline- Eingaben aus einem Registersatz empfängt, der durch temporäre Pipeline-Register erweitert worden ist, die von Stufen der Pipelines erzeugte temporäre Daten speichern;
- Fig. 2 ein Ablaufdiagramm veranschaulicht, das den Prozeß der Auswahl einer Eingabe aus dem Registersatz zu einer Pipeline des Prozessors gemäß Fig. 1 beschreibt;
- Fig. 3 einen Prozessor veranschaulicht, der selektiv Pipeline-Eingaben aus einem primären Registersatz oder aus einem temporären Pipeline-Registersatz empfängt, der von Stufen der Pipelines erzeugte temporäre Daten speichert; und
- Fig. 4 ein Ablaufdiagramm veranschaulicht, das den Prozeß der Auswahl einer Eingabe in eine Pipeline des Prozessors gemäß Fig. 3 aus dem primären Registersatz oder aus dem temporären Pipeline-Registersatz beschreibt.
- Es werden ein Verfahren und eine Vorrichtung zum Implementieren eines temporären Pipeline-Registersatz-Mechanismus für Computerprozessorarchitekturen offenbart. Das offenbarte Verfahren bzw. die offenbarte Vorrichtung findet insbesondere Anwendung bei super-pipeline-verschachtelten und superskalaren mikroprozessor-basierten Computersystemen.
- In der folgenden Beschreibung werden aus Gründen der Erläuterung spezielle Anzahlen, Materialien und Konfigurationen angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu erreichen. Für den Fachmann ist es jedoch klar, daß die vorliegende Erfindung auch ohne diese speziellen Details ausgeführt werden kann. An anderen Stellen werden gut bekannte Systeme in Diagramm- oder Blockschaltbildform gezeigt, um die vorliegende Erfindung nicht unnötigerweise zu verdunkeln.
- Es wird jetzt auf Fig. 1 Bezug genommen, in der ein Prozessor 100 veranschaulicht ist, der Pipeline-Eingaben aus einem Registersatz empfängt, der durch temporäre Pipeline- Register erweitert worden ist, welche von Stufen der Pipelines erzeugte temporäre Daten speichern.
- Der Prozessor 100 ist ein superskalarer Prozessor, da er mehr als eine Pipeline aufweist, d. h. die Pipeline A und die Pipeline B. Darüber hinaus ist der Prozessor 100 super- pipeline-verschachtelt, da die Pipeline B in mehr als eine Ausführungsstufe unterteilt ist, d. h. die erste Pipeline-B- Stufe 160 und die zweite Pipeline-B-Stufe 170. Andererseits weist die Pipeline A nur eine Ausführungsstufe, die erste Pipeline-A-Stufe 150 auf. Um ein unnötiges Verdunkeln der zu erörternden Konzepte zu vermeiden, wurde Fig. 1 in hohem Maße vereinfacht, indem sie auf die minimale Anzahl von Pipelines und Stufen, die noch die zu erörternden Konzepte präsentieren können, reduziert wurde. Es wird vorausgesetzt, daß bei tatsächlichen Ausführungsbeispielen die Anzahl der Pipelines auf eine Anzahl erhöht werden kann, die größer als zwei ist und die Anzahl der Ausführungsstufen innerhalb einer gegebenen Pipeline ebenfalls größer als zwei sein kann.
- In Fig. 1 ist zu sehen, daß der Registersatz 180 der ersten Stufe 150 der Pipeline A eine Eingabe über den Lese- Port A zur Verfügung stellt und eine Eingabe der ersten Stufe 160 der Pipeline B über den Lese-Port B zur Verfügung stellt. Typischerweise sind die Lese-Ports A und B des Registersatzes 180 mehrere Ports, die mehrere Eingangssignale ihren jeweiligen Pipelines zur Verfügung stellen. Das Endergebnis der Pipeline A wird zum Registersatz 180 über den Schreib-Port A aus der ersten Stufe 150 der Pipeline A zurückgeschrieben. Auf ähnliche Weise wird das Endergebnis der Pipeline B zum Registersatz 180 über den Schreib-Port B2 aus der zweiten Stufe 170 der Pipeline B zurückgeschrieben. Das temporäre Ergebnis der ersten Stufe 160 der Pipeline B wird ebenfalls an den Registersatz 180 über den Schreib-Port B1 aus der ersten Stufe 160 der Pipeline B zurückgeschrieben.
- Ein typischer durch eine Pipeline-Stufe ausgeführter Befehl wird zwei Eingaben an die Pipeline zur Verfügung stellen und zu einem aus der Pipeline ausgegebenen Endergebnis führen, das zu dem Registersatz zurückgeschrieben wird. Folglich könnte beispielsweise ein Additionsbefehl angeben, daß der in einem ersten Register des Registersatzes 180 gespeicherte Inhalt zu dem in einem zweiten Register des Registersatzes 180 gespeicherten Inhalt addiert und die Summe zu einem dritten Register des Registersatzes 180 zurückgeschrieben werden soll. Sofern dieser Beispielbefehl durch die Pipeline A ausgeführt würde, würden der Inhalt des ersten und des zweiten Registers des Registersatzes 180 der ersten Stufe 150 der Pipeline A über den Lese-Port A aus dem ersten und dem zweiten Register des Registersatzes 180 zur Verfügung gestellt werden. Die erste Stufe 150 der Pipeline A würde dann die Summe berechnen und die Summe dem Schreib- Port A des Registersatzes 180 zur Verfügung stellen, wo sie schließlich in dem dritten Register des Registersatzes 180 gespeichert würde.
- Es ist jedoch möglich, daß ein Befehl mehr als zwei Operanden hat, welche der Ausführungspipeline, die den Befehl ausführen soll, zur Verfügung gestellt werden müßten. So kann beispielsweise ein Speicherbefehl drei Eingaben aufweisen, die der Pipeline zum Ausführen des Speicherbefehls aus dem Registersatz 180 über den Lese-Port für die Pipeline zur Verfügung gestellt werden. Bei dem Beispielspeicherbefehl könnten zwei der Eingaben verwendet werden, um ein Register zu berechnen, zu welchem die aus der dritten Eingabe zur Verfügung gestellten Daten gespeichert werden sollen.
- Im Prozessor 100 wurde der Registersatz 180 in temporäre Pipeline-Register 140 und primäre Register 130 unterteilt. Ein typischer Registersatz, wie beispielsweise der Registersatz 180, kann hunderte von primären Registern aufweisen. Folglich kann bei einem Ausführungsbeispiel, bei dem es 512 primäre Register in dem Registersatz gibt, ein bestimmtes primäres Register des Registersatzes 180 durch eine 9-Bit- Binärzahl (2&sup9; = 512) angegeben werden.
- Wie oben erörtert, würde eine typische Lösung bei bekannten Prozessoren zum Ausbalancieren der Pipeline A und der Pipeline B darin bestehen, daß eine zusätzliche Stufe zum Ende der Pipeline A derart hinzufügt würde, daß die Pipeline A die gleiche Anzahl von Stufen wie die Pipeline B hätte. Ein temporäres Ergebnisregister würde dann nach der ersten Stufe 150 der Pipeline A eingefügt werden, um das Ergebnis der ersten Stufe 150 der Pipeline A zu speichern, so daß es beiden Pipelines zur Verfügung gestellt werden könnte, bevor das Ergebnis zu einem Registersatz 180 geschrieben würde. Ein temporäres Ergebnisregister würde darüber hinaus in die Pipeline B zwischen der ersten Stufe 160 der Pipeline B und der zweiten Stufe 170 der Pipeline B eingefügt werden, um das Ergebnis der ersten Stufe 160 der Pipeline B zu speichern, so daß das temporäre Ergebnis als Eingabe beiden Pipelines zur Verfügung gestellt werden könnte.
- Bei dem in Fig. 1 dargestellten Ausführungsbeispiel wurde der Registersatz 180 durch das Hinzufügen temporärer Pipeline-Register 140 erweitert. Dies gestattet es, daß das Endergebnis der ersten Stufe 150 der Pipeline A und das Zwischenergebnis der ersten Stufe 160 der Pipeline B in den Registersatz 180 geschrieben werden kann, unmittelbar nachdem es berechnet worden ist. Das Ergebnis aus der ersten Stufe 150 der Pipeline A wird in ein Register der temporären Pipeline-Register 140 geschrieben, wo es spekulativ gehalten wird, bis sämtliche älteren Befehle die Ausführung erfolgreich abgeschlossen haben. Zu diesem Zeitpunkt wird dann das Ergebnis der Pipeline A aus dem temporären Pipeline-Register der temporären Pipeline-Register 140 zu seinem tatsächlichen primären Bestimmungsregister der primären Register 130 übertragen. Wenn ein Ergebnis aus der ersten Stufe 160 der Pipeline B ein Endergebnis ist, wird es in den Registersatz 130 übertragen, wenn sämtliche älteren Befehle die Ausführung erfolgreich abgeschlossen haben.
- Die Abbildungslogik 120 verfolgt die endgültigen Bestimmungsregister für die in den temporären Pipeline-Registern 140 gespeicherten Inhalte und das relative Alter (d. h. die Position in der Programmreihenfolge) des Befehls, der die in ihnen gespeicherten Inhalte erzeugt hat. Wenn ein Befehl aus dem Befehlsregister 110 in die Abbildungslogik 120 eintritt, verwendet der Befehl vom Programmierer addressierbare Registerindizes, um die primären Register zu spezifizieren, die die Eingaben an diejenige Pipeline zur Verfügung stellen, die den Befehl abfertigen wird. Diese vom Programmierer addressierbaren Registerindizes sind die Registeradressen oder Registernummern für die primären Register 130 und werden im folgenden als virtuelle Indizes bezeichnet. So würden beispielsweise dann, wenn der Registersatz 180 bis zu 512 primäre Register 130 aufweist, die primären Register durch den Programmierer als 9-Bit-Binärzahl addressiert werden, welche einen Dezimalbereich von 0-511 hat. Wenn der tatsächliche Index, der von der Abbildungslogik 120 dem Registersatz 180 zur Verfügung gestellt wird, um ein Bit erweitert wird, so wird die Anzahl der in dem Registersatz 180 addressierbaren Register verdoppelt. Wenn der Registersatz 180 512 vom Programmierer addressierbare primäre Register aufweist, gestattet es folglich eine Erhöhung des Index für den Registersatz 180 von 9 Bits auf 10 Bits dem Registersatz 180, 1024 Register (2¹&sup0; = 1024) aufzuweisen, die addressiert werden können. Folglich können durch Erhöhen des Index des Registersatzes 180 von 9 Bits auf 10 Bits bis zu 512 temporäre Pipeline-Register 140 im Registersatz 180 addressiert und zum Halten temporärer Ergebnisdaten aus den Stufen der Pipelines verfügbar gemacht werden. In dem unwahrscheinlichen Fall, daß noch eine größere Anzahl temporärer Pipeline-Register 140 erforderlich wird, kann der Index auf den Registersatz 180 durch Hinzufügen weiterer Bits erweitert werden.
- Wenn ein Befehl aus dem Befehlsregister 110 eine Eingabe in eine Pipeline spezifiziert, bestimmt somit die Abbildungslogik 120, ob eines oder mehrere Register der temporären Pipeline-Register 140 ein in jüngerer Zeit erzeugtes Ergebnis enthalten, das von der Pipeline verwendet werden könnte. Ein vor kürzerer Zeit erzeugtes Ergebnis ist ein temporäres Ergebnis eines jüngsten, älteren Befehls oder ein Endergebnis eines jüngsten, älteren Befehls, der noch in seinem primären Zielregister gespeichert werden soll, wobei das Ergebnis als Eingabe für den Befehl verwendet werden kann. Sofern kein Register der temporären Pipeline-Register 140 Daten enthält, die dieses Kriterium erfüllen, so stellt die Abbildungslogik 120 als Lese-Index einen realen (physikalischen) Index in den Registersatz 180 zur Verfügung, der dem von dem Befehl spezifizierten virtuellen Index entspricht. Dies bewirkt, daß der in dem spezifizierten primären Register des Registersatzes 180 gespeicherte Inhalt über einen Lese-Port des Registersatzes 180 für die Pipeline, bei der der Befehl abgefertigt wird, gewonnen wird. Somit wird der in dem von dem Befehl spezifizierten primären Register gespeicherte Inhalt als Eingabe in diejenige Pipe line zur Verfügung gestellt, zu der der Befehl abgefertigt wird.
- Wenn andererseits die Abbildungslogik 120 feststellt, daß ein Register der temporären Pipeline-Register 140 jüngst erzeugte Daten enthält, die als Eingabe der Pipeline zur Verfügung gestellt werden können, dann findet die Abbildungslogik 120 den Index (realen Index) des temporären Pipeline-Registers 140 des Registersatzes 180 auf, der das vor jüngst erzeugte Ergebnis enthält. Dieser reale Index wiederum wird von der Abbildungslogik 120 spezifiziert, wodurch bewirkt wird, daß das temporäre Ergebnis an dem richtigen Lese-Port des Registersatzes 180 als Eingabe in die Ausführungspipeline, in welche der Befehl abgefertigt wird, erzeugt wird.
- Es kann darüber hinaus der Fall eintreten, daß die als Eingabe in eine Pipeline erforderlichen Daten gegenwärtig weder in den primären Registern 130, noch in den temporären Pipeline-Registern 140 verfügbar sind. In dem erstgenannten Fall könnte dies beispielsweise auftreten, weil eine Ladeoperation, die das primäre Register mit den erforderlichen Daten füllen soll, nicht abgeschlossen ist. In dem letztgenannten Fall könnte dies beispielsweise auftreten, weil die erforderlichen Daten durch einen Befehl berechnet werden sollen, der noch nicht durch die Pipeline zu demjenigen Punkt vorangeschritten ist, an dem die erforderlichen Daten erzeugt werden. In beiden Fällen wartet die Abbildungslogik 120, bis die erforderlichen Daten dem jeweiligen primären oder temporären Pipeline-Register zur Verfügung gestellt worden sind, bevor die Daten aus dem Registersatz 180 gelesen werden.
- Die Abbildungslogik 120 spezifiziert darüber hinaus Schreibindizes in den Registersatz 180, wenn temporäre und Endergebnisse durch die Pipelines an den Schreib-Ports des Registersatzes 180 zur Verfügung gestellt werden. Jeder Schreibindex der von der Abbildungslogik 120 spezifizierten Schreibindizes zeigt dasjenige primäre Register der primären Register 130 oder dasjenige temporäre Pipeline-Register der temporären Pipeline-Register 140 an, zu welchem ein End- oder temporäres Ergebnis geschrieben werden soll. Schreibindizes werden zu dem gleichen Zeitpunkt bestimmt, zu dem Lese-Indizes durch die Abbildungslogik 120 erzeugt werden. Diese Schreibindizes können in der Abbildungslogik gehalten werden oder zusammen mit dem Befehl an die Ausführungspipeline für den Befehl gesendet werden.
- Das Hinzufügen temporärer Pipeline-Register 140 zu dem Registersatz 180 bietet verschiedene Vorteile gegenüber dem Stand der Technik. In erster Linie wird die Auswahlschaltung zwischen den Lese-Ports des Registersatzes 180 und den Ausführungsstufen der Pipelines beseitigt. Somit werden unabhängig davon, wieviele Pipelines es in dem Prozessor gibt oder wieviele Stufen es innerhalb einer gegebenen Pipeline gibt, temporäre Daten stets über die Lese-Ports der Register 180 so zur Verfügung gestellt, als ob sie durch die primären Register 130 zur Verfügung gestellt würden. Diese Technik konvertiert den Registersatz 180 im Endeffekt in eine Auswahlschaltung. Dies ist eine effizientere Lösung als die im Stand der Technik zu findende, weil auf den Speicher mit wahlfreiem Zugriff (RAM) des Registersatzes 130 effizient unter Verwendung solcher Techniken zugegriffen werden kann, wie beispielsweise Y-Decodierung, die effektiver als die Schaffung einer speziellen Multiplexer-Schaltung für jeden Eingang zur Pipeline des Prozessors sind.
- Ein weiterer Vorteil der Lösung gemäß Fig. 1 besteht darin, daß diejenigen temporären Register und die Abbildungslogik, die durch bekannte Lösungen erforderlich wären, in temporäre Pipeline-Register 140 bzw. die Abbildungslogik 120 aufgenommen wurden. Dies bietet verschiedene Vorteile. Ein Vorteil besteht darin, daß die Abbildungslogikschaltung und die temporären Register aus dem Datenpfad jeder Pipeline entfernt worden sind. Dies gestattet es, daß der Datenpfad jeder Pipeline kleiner ist, wodurch die Zykluszeit des Prozessors verringert wird, indem die Zeitdauer reduziert wird, die zum Durchleiten der Daten durch jede Pipeline erforderlich ist.
- Zusätzlich wird die Fläche der Prozessorschaltung verringert, da die Komponenten mit anderen Komponenten gruppiert werden, die etwa das gleiche Rastermaß (Pitch) aufweisen. Somit besteht kein Erfordernis mehr zur künstlichen Erhöhung der Größe von Komponenten, um Rastermaße anzupassen. Folglich können sämtliche Stufen der Pipelines in einer kompakten Fläche auf dem Prozessorchip kombiniert werden. Darüber hinaus werden sämtliche der temporären Pipeline-Register 140 in einer kompakten Fläche innerhalb des Registersatzes 180 kombiniert und sämtliche der Abbildungslogikschaltungen werden in einer kompakten zentralisierten Fläche der Abbildungslogik 120 kombiniert. Darüber hinaus werden die Komponenten nach ihrer Funktionalität gruppiert, wodurch es leichter ist, Änderungen durchzuführen, da sämtliche Komponenten ähnlicher Funktionalität an einem Ort zu finden sind, und nicht über das Chip verteilt sind.
- Es wird jetzt auf Fig. 2 Bezug genommen, in der ein Ablaufdiagramm veranschaulicht ist, das den Prozeß der Auswahl der Inhalte eines Registersatzes beschreibt, der in eine Pipeline des Prozessors gemäß Fig. 1 eingegeben werden soll. Der Prozeß gemäß Fig. 2 wird für jeden Eingabeoperanden jedes abzufertigenden Befehls durchgeführt. In Abhängigkeit von der Art der gewählten Implementierung kann der Prozeß gemäß Fig. 2 entweder sequentiell oder parallel durchgeführt werden.
- Der Prozeß gemäß Fig. 2 beginnt in der Startblase 200 und setzt sich zum Verarbeitungsblock 210 fort. Im Verarbeitungsblock 210 empfängt die Abbildungslogik einen Eingabeoperanden von einem auszuführenden Befehl. Der Eingabeoperand ist ein virtueller Registerindex eines primären Registers in dem Registersatz, der als Eingabe in die Ausführungspipeline zur Verfügung gestellt werden soll, in welche der Befehl abgefertigt werden wird.
- Im Entscheidungsblock 220 bestimmt die Abbildungslogik, ob wenigstens eines der temporären Pipeline-Register als Eingabe zur Verfügung stellbare temporäre oder End-Ergebnisdaten enthält, die vor kürzerer Zeit erzeugte Daten als die primären Register enthalten, die den von dem Befehl spezifizierten virtuellen Registerindex aufweisen. Wenn kein temporäres Pipeline-Register einen Inhalt aufweist, der dieses Kriterium erfüllt, dann wird der Entscheidungspfad 224 von dem Entscheidungsblock 220 zum Verarbeitungsblock 225 genommen. Im Verarbeitungsblock 225 konvertiert die Abbildungslogik den virtuellen Registerindex in einen zugehörigen realen Registersatzindex. Der zugehörige reale Registersatzindex wird dann im Verarbeitungsblock 230 als Leseindex für einen Lese-Port zu der Pipeline, zu der der Befehl abgefertigt wird, spezifiziert. Dies veranlaßt den Registersatz, den Inhalt des primären Registers, das den spezifizierten realen Registersatzindex aufweist, als Eingabe in die Ausführungspipeline, zu der der Befehl abgefertigt werden wird, zur Verfügung zu stellen.
- Es wird wieder auf den Entscheidungsblock 220 Bezug genommen, wobei der Entscheidungspfad 222 zum Verarbeitungsblock 240 genommen wird, wenn jüngst erzeugte Daten, die als Eingabe zur Verfügung gestellt werden könnten, als in den temporären Pipeline-Registern gespeichert gefunden worden sind. Im Verarbeitungsblock 240 findet die Abbildungslogik sämtliche Befehle auf, welche älter als derjenige Befehl sind, der abgefertigt werden soll, und welche Daten in einem temporären Pipeline-Register gespeichert haben, die als Eingabe der Pipeline, zu der der Befehl abgefertigt werden soll, zur Verfügung gestellt werden könnten. Sofern mehr als ein älterer Befehl dieses Kriterium erfüllt, werden die vor kürzester Zeit erzeugten Daten im Verarbeitungsblock 250 bestimmt.
- Dann bestimmt im Verarbeitungsblock 250 die Abbildungslogik den realen Registersatzindex der vor kürzester Zeit erzeugten Daten, die im Verarbeitungsblock 240 gefunden wur den. Der reale Registersatzindex, der im Verarbeitungsblock 250 gefunden wird, wird dann im Verarbeitungsblock 260 als aus dem Registersatz als Eingabe in die Pipeline, die den abzufertigenden Befehl ausführen soll, zu lesend spezifiziert. Der Prozeß gemäß Fig. 2 endet dann an der Endblase 270.
- Man beachte, daß die Abbildung von Registern in dem Registersatz auf unterschiedliche Weise ausgeführt werden kann. Bei einem Ausführungsbeispiel entspricht jedes Register der temporären Pipeline-Register einem temporären Register, das unter Verwendung der Konstruktion aus dem Stand der Technik benutzt worden wäre. Bei diesem Ausführungsbeispiel werden die Inhalte der temporären Pipeline-Register mit jedem Zyklus der Superpipeline von einem einer Stufe einer Pipeline entsprechenden temporären Pipeline-Register zu dem der nächsten Stufe einer Pipeline entsprechenden temporären Pipeline-Register übertragen.
- Bei einem alternativen Ausführungsbeispiel ist die Abbildungsfunktion ausgeklügelter, um die Tatsache auszunützen, daß, sobald eine Pipeline ein Endergebnis erreicht hat, sich das Ergebnis nicht ändern wird. So wird statt eines Verschiebens des Inhalts der temporären Pipeline-Register des Registersatzes die Indexabbildung durch die Abbildungslogik mit jedem Superpipeline-Zyklus geändert. Auf diese Weise wird, sobald ein Endergebnis in ein temporäres Pipeline-Register geschrieben wird, es in diesem speziellen Register bleiben, bis es in das primäre Register gespeichert werden soll, für welches es bestimmt ist.
- In noch einem weiteren Ausführungsbeispiel wird die Unterteilung zwischen den primären Registern und den temporären Pipeline-Registern innerhalb des Registersatzes aufgehoben. So werden die Inhalte entweder in ein primäres Register oder ein temporäres Pipeline-Register geschrieben, und die Abbildungsfunktion stellt die Abbildung zwischen virtuellen Indizes und realen Indizes in der geforderten Form ein. Folglich wird, sobald ein Endergebnis in den Registersatz geschrieben worden ist, es in dem Register des Registersatzes, in welches es geschrieben worden ist, bleiben, und die Abbildungslogik wird die Abbildung so einstellen, daß das Register jeder nachfolgenden Blindstufe der Pipeline und schließlich dem primären Zielregister entspricht.
- Es wird jetzt auf Fig. 3 Bezug genommen, in der ein alternatives Ausführungsbeispiel eines Prozessors veranschaulicht ist. Der Prozessor 300 empfängt selektiv Pipeline-Eingaben aus primären Registern 330 oder aus temporären Pipeline-Registern 340. Statt einer Erhöhung der Tiefe des Registersatzes, wie sie bei dem in Fig. 1 veranschaulichten Ausführungsbeispiel erfolgte, hat somit der Prozessor 300 gemäß Fig. 3 zwei separate Registersätze; primäre Register 330 sind die vom Programmierer addressierbaren primären Register, und temporäre Pipeline-Register 340 sind die temporären Register.
- Wie der Prozessor 100 gemäß Fig. 1 ist der Prozessor 300 gemäß Fig. 3 ein superskalarer Prozessor, da er mehr als eine Pipeline aufweist, d. h. die Pipeline A und die Pipeline B. Darüber hinaus ist der Prozessor 300 ein Super- Pipeline-Prozessor, da die Pipeline B in mehr als eine Ausführungsstufe unterteilt ist (die in der Figur als erste Stufe 380 und zweite Stufe 390 der Pipeline B angegeben sind). Die Pipeline A andererseits hat nur eine Ausführungsstufe, die erste Stufe 370 der Pipeline A. Wiederum wurde, um ein unnötiges Verdunkeln des zu erörternden Konzepts zu vermeiden, Fig. 3 in hohem Maße vereinfacht, indem sie auf die Minimalzahl von Pipelines und Stufen reduziert wurde, die noch das zu erörternde Konzept präsentieren können. Es wird vorausgesetzt, daß bei tatsächlichen Ausführungsbeispielen die Anzahl der Pipelines auf eine Zahl größer als zwei erhöht werden kann, und die Anzahl der Ausführungsstufen innerhalb einer gegebenen Pipeline ebenfalls größer als zwei sein kann. Obwohl der Prozessor 300 nur einen Eingang von jedem Auswähler (Selektor) einer Pipeline zu seiner Pipeline zeigt, wird vorausgesetzt, daß wie bei dem Prozes sor 100 gemäß Fig. 1 bei tatsächlichen Ausführungsbeispielen wenigstens zwei Eingänge zu jeder Pipeline zur Verfügung gestellt werden.
- Beim Prozessor 300 gemäß Fig. 3 stellen der Selektor A 350 und der Selektor B 360 die Eingaben an die Pipeline A bzw. die Pipeline B zur Verfügung. Wenn ein Befehl aus dem Befehlsregister 310 in eine Pipeline abgefertigt werden soll, gibt die Abbildungslogik 320 parallele Anforderungen an die primären Registern 330 und die temporären Pipeline- Register 340 für die in die Pipeline, zu welcher der Befehl abgefertigt wird, einzugebenden Informationen aus. Wenn es wenigstens ein temporäres oder Endergebnis gibt, das in einem Register der temporären Pipeline-Register 340 gespeichert ist und das als geeignete Eingabe der Pipeline zur Verfügung gestellt werden kann (ein "Treffer"), so fordert die Abbildungslogik 320 das temporäre oder Endergebnis an, das denjenigen zuletzt erzeugten Daten entspricht, die die richtige in die Pipeline abzufertigende Eingabe zur Verfügung stellen können. Wenn ein Treffer in den temporären Pipeline-Registern 340 gefunden wird, gibt darüber hinaus die Abbildungslogik 320 ein Steuersignal an den Selektor für diejenige Pipeline, die den Befehl abfertigen wird, aus, um zu bewirken, daß die aus den temporären Pipeline-Registern 340 gewonnenen Informationen als Eingabe der Pipeline anstelle der Eingabe aus den primären Registern 330 zur Verfügung gestellt werden.
- Wenn andererseits kein Treffer in den temporären Pipeline-Registern 340 gefunden wird, dann wird die aus den primären Registern 330 gewonnene Eingabe als Eingabe in die Pipeline, die den Befehl ausführen wird, ausgewählt. Diese Auswahl wird durch Anlegen eines Steuersignals aus der Abbildungslogik 320 an den Selektor für die Pipeline ausgeführt. Wenn die Pipeline mehrere Eingabeoperanden aufweist, werden mehrere Steuersignale (1 pro Operand) den Selektor für die Pipeline steuern.
- So stellt beispielsweise der Selektor A 350 die Eingabe an die erste Stufe 370 der Pipeline zur Verfügung, wenn ein Befehl in die Pipeline A abgefertigt wird. Die Abbildungslogik 320 gibt eine Anforderung an die primären Register 330 für die Eingabe in die Pipeline A über eine Primärregister- Lese-Indizes-Signalleitung aus. Die Registersatzregister 330 gewinnen die an dem Register mit dem virtuellen Index A gespeicherten Informationen und stellen die angeforderten Informationen über den Lese-Port A dem Selektor A 350 zur Verfügung.
- Gleichzeitig bestimmt die Abbildungslogik 320, ob es wenigstens ein temporäres oder Endergebnis gibt, das in den temporären Pipeline-Registern 340 gespeichert ist und das ein jüngeres und somit richtigeres Eingabesignal für die Pipeline A als der in den primären Registern 330 gespeicherte Inhalt zur Verfügung stellen würde. Sofern mehr als ein Register der temporären Pipeline-Register 340 dieses Kriterium erfüllt, so wählt die Abbildungslogik 320 die jüngst erzeugten Daten als Eingabe in den Selektor A 370 aus. Dieses temporäre Pipeline-Register wird über eine Temporär-Pipelineregister-Lese-Indizes-Signalleitung addressiert und wird in den Selektor A 350 aus den temporären Pipeline-Registern 340 über den Lese-Port A-in eingelesen.
- Sofern keine Daten in den temporären Pipeline-Registern 340 gefunden wurden, die eine geeignete Eingabe in die Pipeline A darstellen, so setzt die Abbildungslogik 320 die Signalsteuerleitung A, um zu bewirken, daß der Selektor A 350 als Eingabe in die erste Stufe 370 der Pipeline A die Ausgabe des Lese-Ports A der primären Register 330 wählt. Wenn andererseits eine geeignete Eingabe in den temporären Pipeline-Registern 340 gefunden wird, so setzt die Abbildungslogik 320 die Steuerung A so, daß der Selektor A 350 veranlaßt wird, als Eingabe in die erste Stufe 370 der Pipeline A die Ausgabe der temporären Pipeline-Register 340 zu wählen, die dem Selektor A 350 aus dem Lese-Port A-in zur Verfügung gestellt wird.
- Bei der obigen Beschreibung wurde die Signalleitungssteuerung A stets aktiv gesetzt, um die Auswahl einer Eingabe aus den primären Registern 330 oder aus den temporären Pipeline-Registern 340 zu bewirken. Bei einem alternativen Ausführungsbeispiel wird der Selektor A 350 so gesetzt, daß er die primären Register 330 standardmäßig als Quelle einer Eingabe in die Pipeline A auswählt. Wenn dann ein Treffer in temporären Pipeline-Registern 340 auftritt, wird die Signalleitungssteuerung A aktiviert, so daß sie die Eingabe aus den temporären Pipeline-Registern 340 auswählt. Bei einem alternativen Ausführungsbeispiel wird der Selektor A 350 so gesetzt, daß er die temporären Pipeline-Register 340 standardmäßig als Quelle einer Eingabe in die Pipeline A auswählt. Wenn dann kein Treffer in temporären Pipeline-Registern 340 auftritt, wird die Signalleitungssteuerung A so aktiviert, daß sie die Eingabe aus den primären Registern 330 auswählt. Bei alternativen Ausführungsbeispielen, bei denen eine Standardeingabequelle für den Selektor A 350 ausgewählt wird, wird als Standardquelle die wahrscheinlichste Eingabequelle ausgewählt.
- Sobald die erste Stufe 370 der Pipeline A den in die Pipeline A abgefertigten Befehl ausgeführt hat, wird das Ergebnis in ein Register der temporären Pipeline-Register 340 über den Schreib-Port A1 geschrieben. Dieses Endergebnis wird spekulativ in temporären Pipeline-Registern 340 gespeichert. Nachdem dann sämtliche älteren Befehle erfolgreich ihre Ausführung abgeschlossen haben, wird das Endergebnis über den Lese-Port A-out aus den temporären Pipeline-Registern 340 gewonnen und über den Schreib-Port A in das richtige Register der primären Register 330 geschrieben. Die geeigneten Lese- und Schreibindizes zum Steuern dieser Operation werden durch die Abbildungslogik 320 spezifiziert.
- Auf ähnliche Weise fordert die Abbildungslogik 320 die Eingaben für die Pipeline B aus den primären Registern 330 unter Verwendung des Primärregister-Lese-Indizes-Signals und aus den temporären Pipeline-Registern 340 unter Verwendung der Temporär-Pipeline-Register-Lese-Indizes-Signalleitung. Die Eingaben werden dann dem Selektor B 360 aus den primären Registern 330 über den Lese-Port B und aus den temporären Pipeline-Registern 340 über den Lese-Port Bin zur Verfügung gestellt. Die richtige Eingabe in die Pipeline B wird dann über den Selektor B 360 mit Hilfe der Steuerleitungssteuerung B aus der Abbildungslogik 320 ausgewählt.
- Bei der obigen Beschreibung wurde die Signalleitungssteuerung B stets aktiv gesetzt, um die Auswahl einer Eingabe aus den primären Registern 330 oder aus den temporären Pipeline-Registern 340 zu bewirken. Bei einem alternativen Ausführungsbeispiel wird der Selektor B 360 derart gesetzt, daß die primären Registern 330 standardmäßig als Quelle einer Eingabe in die Pipeline B ausgewählt werden. Wenn dann ein Treffer in temporären Pipeline-Registern 340 auftritt, wird die Signalleitungssteuerung B aktiviert, um die Eingabe aus den temporären Pipeline-Registern 340 auszuwählen. Bei einem alternativen Ausführungsbeispiel wird der Selektor B 360 so eingestellt, daß er die temporären Pipeline-Register 340 standardmäßig als Quelle einer Eingabe in die Pipeline B auswählt. Wenn dann kein Treffer in temporären Pipeline-Registern 340 auftritt, wird die Signalleitungssteuerung B aktiviert, damit sie die Eingabe aus den primären Registern 330 auswählt. Bei alternativen Ausführungsbeispielen, bei denen eine Standardeingabequelle für den Selektor B 360 ausgewählt wird, wird die Standardquelle so ausgewählt, daß sie die wahrscheinlichste Eingabequelle ist.
- Das von der ersten Stufe 380 der Pipeline B erzeugte temporäre Ergebnis wird in die temporären Pipeline-Register 340 über den Schreib-Port B1 geschrieben. Das Endergebnis der zweiten Stufe 390 der Pipeline B wird in das richtige Register der primären Register 330 über den Schreib-Port B geschrieben.
- Der Prozessor 300 bietet viele Vorteile gegenüber dem Prozessor gemäß dem Stand der Technik. Bei dem Prozessor 300 wurden die Abbildungslogik und die temporären Register aus dem Datenpfad jeder Pipeline entfernt, wodurch der kritische Pfad und die Zykluszeit einer Pipeline reduziert werden. Dies gestattet es darüber hinaus, daß die Stufen hinsichtlich ihrer Rastermaße (Pitch) so abgeglichen werden, daß die von den Pipelines verwendete Gesamtfläche reduziert wird. Darüber hinaus können die temporären Pipeline-Register 340 als Speicher mit wahlfreiem Zugriff statt als einzelne spezielle temporäre Register, die mehr Raum erfordern, implementiert werden. Darüber hinaus wird die Logik aufgrund ihrer Funktionalität gruppiert. Das Gruppieren nach der Funktionalität erlaubt eine einfachere Durchführung von Designüberarbeitungen, da sämtliche ähnlich funktionierenden Schaltungen an einem Ort lokalisiert sind. Das Gruppieren nach Funktionalität gestattet darüber hinaus, daß die Rastermaße der Schaltungen effektiv aufeinander abgestimmt werden. Dies führt zu kompakten Designs. Bei einem Ausführungsbeispiel des Prozessors 300 wird die Abbildungslogik 320 unter Verwendung eines durch seinen Inhalt addressierbaren Speichers (CAM) implementiert, wodurch weitere Vorteile zur Verfügung gestellt werden, die durch über den Prozessor verteilte spezielle Abbildungslogik zur Verfügung gestellt werden könnten.
- Obwohl der Prozessor 300 einen Selektor aufweist, der am Beginn jeder Pipeline angeordnet ist, hat darüber hinaus jeder Selektor nur zwei Eingänge, zwischen welchen er auswählen muß, einen aus den primären Registern 330 und den anderen aus den temporären Pipeline-Registern 340. Diese Designarchitektur läßt sich gut skalieren, weil dann, wenn zusätzliche Pipelines oder Pipelinestufen hinzugefügt werden, es kein Erfordernis gibt, die Anzahl der Eingänge zu einem Selektor am Beginn einer Pipeline zu erhöhen.
- Es wird jetzt auf Fig. 4 Bezug genommen, in der ein den Prozeß der Auswahl einer Eingabe in eine Pipeline des Prozessors gemäß Fig. 3 beschreibendes Ablaufdiagramm veranschaulicht wird. Wie es bei dem Prozeß gemäß Fig. 2 der Fall war, wird der Prozeß gemäß Fig. 4 entweder seriell oder parallel für jeden Befehlsoperanden jedes abzufertigenden Befehls durchgeführt.
- Der Prozeß gemäß Fig. 4 startet an der Startblase 400 und fährt zum Verarbeitungsblock 410 fort, wo die Abbildungslogik einen Eingabeoperanden empfängt, der eine virtuellen Registerindex einer Eingabe in eine Pipeline spezifiziert. Die Verarbeitungsblöcke 420 und 430 werden dann parallel ausgeführt. Im Verarbeitungsblock 420 wird das primäre Register, das den dem virtuellen Index entsprechenden realen Index aufweist, gelesen, und der Inhalt wird dem Selektor am Beginn derjenigen Pipeline zur Verfügung gestellt, in welche der Befehl abgefertigt werden wird. Gleichzeitig wird im Verarbeitungsblock 430 ein Test ausgeführt, um zu bestimmen, ob wenigstens ein temporäres oder Endergebnis in den temporären Pipeline-Registern gespeichert ist, das einem älteren Befehl entspricht und das vor kürzerer Zeit erzeugte Daten als Eingabe der Pipeline zur Verfügung stellen kann, als die von dem Registersatz zur Verfügung gestellte Eingabe. Wenn nur ein derartiges temporäres Pipeline-Register gefunden wird, so wird es gelesen und dem Selektor der Pipeline, in welche der Befehl abgefertigt werden soll, zur Verfügung gestellt. Sofern mehr als ein Register der temporären Pipeline-Register dieses Kriterium erfüllt, dann wird dasjenige temporäre Pipeline-Register ausgewählt, das die jüngst erzeugten Daten enthält, die dieses Kriterium erfüllen, und aus den temporären Registern gelesen, um eine Eingabe dem Selektor der Pipeline, in welche der Befehl abgefertigt werden soll, zur Verfügung zu stellen.
- Nachdem die Verarbeitungsblöcke 420 und 430 abgeschlossen sind, wird ein Test im Entscheidungsblock 440 durchgeführt, um zu bestimmen, ob in den temporären Pipeline-Registern Daten gefunden wurden, die eine vor kürzerer Zeit erzeugte Eingabe an die Pipeline zur Verfügung stellen können, als die aus den primären Registern zur Verfügung gestellte Eingabe. Wenn zu jüngerer Zeit erzeugte Daten als in den temporären Pipeline-Registern gespeichert gefunden werden, dann wird der Entscheidungspfad 442 zum Verarbeitungsblock 460 genommen, wo die Ausgabe der temporären Pipeline-Register als Eingabe in die Pipeline ausgewählt wird. Dann endet der Prozeß in der Endblase 470.
- Wenn andererseits im Entscheidungsblock 440 festgestellt worden ist, daß keine in jüngerer Zeit erzeugten Daten in den temporären Pipeline-Registern gefunden wurden, dann wird der Entscheidungspfad 444 zum Verarbeitungsblock 450 genommen. Im Verarbeitungsblock 450 wird die Ausgabe aus den primären Registern als Eingabe in die Pipeline ausgewählt. Der Prozeß endet dann an der Endblase 470.
- Während das Verfahren und die Vorrichtung gemäß der vorliegenden Erfindung anhand ihrer gegenwärtig bevorzugten und alternativen Ausführungsbeispiele beschrieben worden ist, werden Fachleute erkennen, daß die vorliegende Erfindung mit Modifikationen und Änderungen innerhalb des Umfangs der anhängigen Ansprüche ausgeführt werden kann. Dementsprechend sind die Beschreibung und die Zeichnungen in einem veranschaulichenden und nicht in einem einschränkenden Sinne zu verstehen.
Claims (9)
1. Ein Prozessor (100), aufweisend:
eine erste Ausführungspipeline (B) zum Ausführen einer
ersten Instruktion, wobei die erste Ausführungspipeline eine
erste Stufe (160) zum Erzeugen eines ersten Ergebnisses und
eine letzte Stufe (170) zum Erzeugen eines Endergebnisses
enthält;
eine Registerdatei (180) zum Speichern des ersten
Ergebnisses und des Endergebnisses, wobei die Registerdatei (180)
ein durch einen Benutzer nicht zugreifbares temporäres
Registers zum Speichern des ersten Ergebnisses der ersten Stufe
(160) und ein Primärregister zum Speichern des
Endergebnisses enthält;
eine Steuereinrichtung (120), die das in der
Registerdatei (180) gespeicherte erste Ergebnis in dem Falle verfügbar
macht, daß das erste Ergebnis für die Ausführung einer
nachfolgenden Instruktion erforderlich ist; und
zumindest eine zusätzliche Ausführungspipeline (A) zum
Ausführen zumindest einer zusätzlichen Instruktion, wobei
die erste Instruktion einer zweiten Instruktion in einer
Programmreihenfolge vorhergeht, und wobei dann, wenn das aus
der Ausführung der ersten Instruktion sich ergebende erste
Ergebnis für die Ausführung der zweiten Instruktion
erforderlich ist, die Steuereinrichtung (120) das erste Ergebnis
an die Ausführungspipeline der zweiten Instruktion
weiterleitet.
2. Der Prozessor nach Anspruch 1, wobei die erste
Ausführungspipeline (B) ferner zumindest eine Zwischenstufe
zwischen der ersten Stufe (160) und der letzten Stufe (170)
aufweist.
3. Der Prozessor nach Anspruch 2, wobei zumindest ein
Ergebnis der zumindest einen Zwischenstufe in der
Registerdatei (180) gespeichert ist.
4. Der Prozessor nach Anspruch 1, wobei die
Registerdatei einen durch die Steuereinrichtung (120) gesteuerten
Multiplexer zum Auswählen zwischen dem temporären und dem
Primärregister aufweist.
5. Der Prozessor nach Anspruch 1, wobei das erste
Ergebnis das zuletzt gespeicherte Ergebnis einer Mehrzahl von
Ergebnissen ist, die in einer Mehrzahl von temporären
Registern (140) in der Registerdatei gespeichert sind.
6. Ein Computersystem, aufweisend:
einen Hauptspeicher zum Speichern von Daten und
Instruktionen;
einen Prozessor nach einem der Ansprüche 1 oder 2 oder 3
oder 5 zum Ausführen der Instruktionen unter Verwendung der
Daten des Hauptspeichers.
7. Ein Verfahren zum Ausführen von Instruktionen
durch einen Prozessor, umfassend die Schritte:
Ausführen einer ersten Instruktion in einer ersten
Ausführungspipeline und Erzeugen eines ersten Ergebnisses in
einer ersten Stufe und eines Endergebnisses in einer letzten
Stufe der ersten Ausführungspipeline;
Speichern des ersten Ergebnisses in ein durch einen
Benutzer nicht zugreifbares temporäres Register und des
Endergebnisses in ein primäres Register einer Registerdatei;
Auswählen zwischen dem temporären und dem primären
Register und Verfügbar-Machen des ersten Ergebnisses oder des
Endergebnisses für die Ausführung einer nachfolgenden
Instruktion, sofern Sie für die Ausführung einer nachfolgenden
Instruktion erforderlich werden;
Ausführen zumindest einer zusätzlichen Instruktion in
zumindest einer zusätzlichen Ausführungspipeline, wobei die
erste Instruktion der zusätzlichen Instruktion in der
Programmreihenfolge vorhergeht, und, sofern dies für die
Ausführung der zusätzlichen Instruktion erforderlich wird,
Weiterleiten des in der ersten Ausführungspipeline erzeugten
ersten Ergebnisses an die Ausführungspipeline der
zusätzlichen Instruktion.
8. Das Verfahren nach Anspruch 7, ferner umfassend
den Schritt des Speicherns zumindest eines Ergebnisses
zumindest einer zwischen der ersten Stufe und der letzten
Stufe positionierten Zwischenstufe in die Registerdatei.
9. Das Verfahren nach Anspruch 7, wobei nur das
zuletzt gespeicherte erste Ergebnis durch eine
Steuereinrichtung an die Ausführungspipeline der zweiten Instruktion
weitergeleitet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/153,814 US6128721A (en) | 1993-11-17 | 1993-11-17 | Temporary pipeline register file for a superpipelined superscalar processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69418146D1 DE69418146D1 (de) | 1999-06-02 |
DE69418146T2 true DE69418146T2 (de) | 1999-11-25 |
Family
ID=22548847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69418146T Expired - Lifetime DE69418146T2 (de) | 1993-11-17 | 1994-10-19 | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor |
Country Status (5)
Country | Link |
---|---|
US (1) | US6128721A (de) |
EP (1) | EP0653703B1 (de) |
JP (1) | JPH07191846A (de) |
KR (1) | KR100346515B1 (de) |
DE (1) | DE69418146T2 (de) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
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 |
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 |
CN1100291C (zh) * | 1997-08-20 | 2003-01-29 | 松下电器产业株式会社 | 数据处理装置 |
WO2000008555A1 (en) * | 1998-08-06 | 2000-02-17 | Koninklijke Philips Electronics N.V. | Data processing device |
EP1004959B1 (de) | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Prozessor mit Pipelineschutz |
US6615338B1 (en) | 1998-12-03 | 2003-09-02 | Sun Microsystems, Inc. | Clustered architecture in a VLIW processor |
EP1050800A1 (de) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Pipelineausführungseinheit |
US6704854B1 (en) * | 1999-10-25 | 2004-03-09 | Advanced Micro Devices, Inc. | Determination of execution resource allocation based on concurrently executable misaligned memory operations |
US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
WO2001095101A2 (en) * | 2000-06-02 | 2001-12-13 | Sun Microsystems, Inc. | Synchronizing partially pipelined instructions in vliw processors |
WO2003036468A1 (en) | 2001-10-24 | 2003-05-01 | Telefonaktiebolaget Lm Ericsson (Publ) | An arrangement and a method in processor technology |
CN100337193C (zh) * | 2002-09-17 | 2007-09-12 | 皇家飞利浦电子股份有限公司 | 超长指令字处理器 |
US20040128475A1 (en) * | 2002-12-31 | 2004-07-01 | Gad Sheaffer | Widely accessible processor register file and method for use |
JP4551635B2 (ja) * | 2003-07-31 | 2010-09-29 | ソニー株式会社 | パイプライン処理システムおよび情報処理装置 |
JP2005078656A (ja) * | 2003-08-29 | 2005-03-24 | Sony Corp | パイプライン処理システムおよび情報処理装置 |
JP4082300B2 (ja) * | 2003-08-29 | 2008-04-30 | ソニー株式会社 | パイプライン処理システムおよび情報処理装置 |
US7124318B2 (en) * | 2003-09-18 | 2006-10-17 | International Business Machines Corporation | Multiple parallel pipeline processor having self-repairing capability |
US7415705B2 (en) * | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US8862835B2 (en) * | 2011-06-14 | 2014-10-14 | Texas Instruments Incorporated | Multi-port register file with an input pipelined architecture and asynchronous read data forwarding |
US8862836B2 (en) * | 2011-06-14 | 2014-10-14 | Texas Instruments Incorporated | Multi-port register file with an input pipelined architecture with asynchronous reads and localized feedback |
US10802987B2 (en) * | 2013-10-15 | 2020-10-13 | Mill Computing, Inc. | Computer processor employing cache memory storing backless cache lines |
US20150261542A1 (en) * | 2014-03-14 | 2015-09-17 | Arm Limited | Data processing apparatus and method for performing data processing operation with a conditional processing step |
US20160232006A1 (en) * | 2015-02-09 | 2016-08-11 | Qualcomm Incorporated | Fan out of result of explicit data graph execution instruction |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1527289A (en) * | 1976-08-17 | 1978-10-04 | Int Computers Ltd | Data processing systems |
US4228497A (en) * | 1977-11-17 | 1980-10-14 | Burroughs Corporation | Template micromemory structure for a pipelined microprogrammable data processing system |
US4598365A (en) * | 1983-04-01 | 1986-07-01 | Honeywell Information Systems Inc. | Pipelined decimal character execution unit |
JPH0650512B2 (ja) * | 1984-07-11 | 1994-06-29 | 日本電気株式会社 | デ−タ処理装置 |
US4819155A (en) * | 1987-06-01 | 1989-04-04 | Wulf William A | Apparatus for reading to and writing from memory streams of data while concurrently executing a plurality of data processing operations |
US4991078A (en) * | 1987-09-29 | 1991-02-05 | Digital Equipment Corporation | Apparatus and method for a pipelined central processing unit in a data processing system |
US5019967A (en) * | 1988-07-20 | 1991-05-28 | Digital Equipment Corporation | Pipeline bubble compression in a computer system |
US5148536A (en) * | 1988-07-25 | 1992-09-15 | Digital Equipment Corporation | Pipeline having an integral cache which processes cache misses and loads data in parallel |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5299320A (en) * | 1990-09-03 | 1994-03-29 | Matsushita Electric Industrial Co., Ltd. | Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
JP2693651B2 (ja) * | 1991-04-30 | 1997-12-24 | 株式会社東芝 | 並列プロセッサー |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
DE4137485A1 (de) * | 1991-11-14 | 1993-05-19 | Schering Ag | Schaltvorrichtung |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US5274818A (en) * | 1992-02-03 | 1993-12-28 | Thinking Machines Corporation | System and method for compiling a fine-grained array based source program onto a course-grained hardware |
DE69308548T2 (de) * | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
-
1993
- 1993-11-17 US US08/153,814 patent/US6128721A/en not_active Expired - Lifetime
-
1994
- 1994-10-19 DE DE69418146T patent/DE69418146T2/de not_active Expired - Lifetime
- 1994-10-19 EP EP94307684A patent/EP0653703B1/de not_active Expired - Lifetime
- 1994-11-14 KR KR1019940029760A patent/KR100346515B1/ko not_active IP Right Cessation
- 1994-11-17 JP JP6307061A patent/JPH07191846A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR950015093A (ko) | 1995-06-16 |
US6128721A (en) | 2000-10-03 |
JPH07191846A (ja) | 1995-07-28 |
EP0653703A1 (de) | 1995-05-17 |
DE69418146D1 (de) | 1999-06-02 |
KR100346515B1 (ko) | 2002-11-30 |
EP0653703B1 (de) | 1999-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69429226T2 (de) | Absendung von Befehlen an mehrere Verarbeitungseinheiten | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE3587591T2 (de) | Mikroprozessor für Forth-ähnliche Sprache. | |
DE69228360T2 (de) | Registerlesekontrolle | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69130723T2 (de) | Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69507975T2 (de) | Verarbeitungssystem und -verfahren | |
DE4301417A1 (de) | ||
DE102015111333A1 (de) | Betreiben eines 32-bit betriebssystems auf einer 64-bit maschine | |
DE69131917T2 (de) | Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |