-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft im Allgemeinen Datenprozessoren und betrifft insbesondere Datenprozessoren mit Pipeline-Verarbeitung.
-
HINTERGRUND DER ERFINDUNG
-
Einige Datenprozessoren wenden eine Technik an, die als Pipeline-Verarbeitung bekannt ist, um eine höhere Leistungsfähigkeit zu erreichen. Die Pipeline-Verarbeitung ist ein Verfahren, in welchem die Instruktionsabarbeitungsaufgabe in kleinere modulare Teilaufgaben unterteilt wird, wovon jede in einer speziellen nicht unterteilbaren Zeitdauer, die als Pipeline-Zyklus bekannt ist, ausgeführt wird. Durch Unterteilen dieser Aufgabe in diese kleineren Zyklen können Datenprozessoren beispielsweise eine einzelne Anweisung abholen, während eine weitere ausgeführt wird und während die Ergebnisse einer dritten Anweisung in die Registerdatei geschrieben werden. Obwohl daher einzelne Instruktionen einige Zyklen zur Bearbeitung erfordern, kann der Gesamtdurchsatz sich einer Anweisung pro Pipeline-Zyklus annähern.
-
Moderne Mikroprozessoren besitzen aufwendigere Pipeline-Architekturen als dieses dreistufige Beispiel. Beispielsweise kann eine fünfstufige Pipeline das Abholen, Decodieren, den Operandenzugriff, das Ausführen und das Zurückschreiben als Stufen aufweisen. Je länger die Pipeline ist, um so komplizierter kann die Datenverarbeitungsanweisung sein, wobei dennoch der Durchsatz näherungsweise bei einer Anweisung pro Zyklus gehalten wird.
-
Ein Problem taucht jedoch auf, wenn gewisse Sequenzen aus Instruktionen auftreten. Eine spezielle Sequenz aus Instruktionen kann eine sogenannte Pipeline-Abhängigkeit hervorrufen. Eine Art der Pipeline-Abhängigkeit, die als Operandenabhängigkeit bekannt ist, tritt auf, wenn eine Instruktion nicht ausgeführt werden kann, bis das Ergebnis des Ausführens einer vorhergehenden Anweisung verfügbar ist. Es sei beispielsweise die Instruktionssequenz angenommen:
ADD R2, R0, R1
ADD R3, R1, R2,
in der das erste Register das Ziel des Ergebnisses und das zweite und das dritte Register die Eingangsoperanden speichern. Da R2 das Zielregister der ersten ADD-Anweisung ist, hängt das Ausführen der zweiten ADD-Anweisung von dem Ergebnis der ersten ADD-Anweisung ab und kann nicht durchgeführt werden, bis die Ergebnisse der ersten ADD-Instruktion bekannt sind.
-
Eine weitere Art der Abhängigkeit ist als eine Ladeabhängigkeit bekannt. Es sei beispielsweise die Instruktionssequenz angenommen:
MOV R0, (R1)
ADD R3, R0, R2
-
In dieser Sequenz lädt die erste Anweisung das Register R0 mit den Inhalten der Speicherstelle, auf die durch die im Register R1 gespeicherte Adresse gezeigt wird. Offensichtlich hängt die korrekte Abarbeitung der ADD-Instruktion von der Verfügbarkeit des neuen Wertes des Registers R0 ab.
-
Mike Johnson et al. offenbaren im
US-Patent 4,734,852 ein Verfahren, in welchem ein Umgehungspfad angewendet werden kann, um die Ergebnisse einer früheren Speicherladeoperation an eine nachfolgende Instruktion bzw. Anweisung weiterzuleiten, ohne dass das Ergebnis zunächst in das Zielregister in der Registerdatei geschrieben werden muss und dann aus der Registerdatei gelesen werden muss. Somit ist der neue Registerwert wesentlich früher verfügbar und die Pipeline-Unterbrechungszeit nach einer Ladeabhängigkeit kann minimiert werden.
-
Jedoch würde dies in einigen Datenprozessoren, die eine Pipeline-Struktur mit tiefer Verschachtelung aufweisen, einen hohen zusätzlichen Schaltungsaufwand erfordern, um Umgehungspfade für jede Pipeline-Stufe hinzuzufügen, die Ergebnisse zur Einspeisung der Pipeline erzeugt, um unmittelbare Ergebnisse weiterzuleiten, so dass neue Anweisungen früher ausgegeben werden können. Dies gilt insbesondere bei Gleitkommaausführungseinheiten, in denen der Operand beispielsweise 74 Bit lang sein kann. Ferner sind einige Ergebnisse einfach nicht verfügbar bis die Anweisung das Ende der Pipeline erreicht hat.
-
Friendly, Daniel [et al.]: Putting the fill unit to work: dynamic optimizations for trace cache microprocessors. Proceedings of the 31st annual ACM/IEEE International Symposium an Microarchitecture. Dallas, Texas, United States: IEEE Computer Society Press, 1998. S. 173–181. – ISBN 1-58113-016-3: offenbart Verfahren zum Reduzieren der Anzahl der abhängigen Befehlsketten in Trace-Speichern.
-
Jacobson, Q.; Smith, J. E.: Instruction pre-processing in trace processors. Fifth International Symposium an High-Performance Computer Architecture, 1999. Proceedings. Orlando, FL, USA: IEEE Computer Society Press, 1999. S. 125–129. – ISBN 0-7695-0004-8: offenbart ähnliche Verfahren zum Umwandeln von abhängigen Befehlsketten in Einzelbefehle, die in Trace-Speichern abgelegt werden.
-
Patel, S. J.; Lumetta, S. S.: rePLay: A Hardware Framework for Dynamic Optimization. In: Computers, IEEE Transactions an Computers, Vol. 50, No. 6, 2001. S. 590–608. – ISSN 0018-9340: offenbart Optimierungsverfahren für abhängige Befehlsketten, die in Frame-Speichern, die, abgesehen von der Befehlsequenzlänge, wie Trace-Speicher arbeiten, abgelegt werden.
-
Es ist daher die Aufgabe der vorliegenden Erfindung, zusätzliche Gelegenheiten vorteilhaft zur Reduzierung des negativen Einflusses von Abhängigkeiten auszunutzen, ohne zusätzliche all zu große Schaltungsfläche hinzuzufügen.
-
Die Aufgabe der vorliegenden Erfindung wird durch das Verfahren nach Anspruch 1 oder 5 oder durch die Vorrichtung nach Anspruch 8 gelöst.
-
Diese und weitere wünschenswerte Merkmale und Eigenschaften der vorliegenden Erfindung gehen aus der nachfolgenden detaillierten Beschreibung sowie den angefügten Patentansprüchen hervor, wenn diese im Zusammenhang mit den begleitenden Zeichnungen und dem vorhergehenden technischen Gebiet und der Einleitung studiert werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird im Anschluss mit den folgenden Zeichnungen beschrieben, wobei gleiche Bezugszeichen gleiche Elemente bezeichnen, und
-
1 eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur eines Datenprozessors gemäß dem Stand der Technik zeigt;
-
2 eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur eines Datenprozessors gemäß der vorliegenden Erfindung zeigt; und
-
3 eine Teilblockansicht und ein Teillogikdiagramm der Umlenklogikschaltung aus 2 zeigt.
-
BESTE ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNG
-
1 zeigt eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur 100 eines bekannten Datenprozessors. Die Ausführungseinheit 100 ist eine Gleitkommaeinheit mit einer Addiereinheit 120, einer Multipliziereinheit 130 und einer Gleitkommaregisterdatei 150. Eine Ausgabelogikschaltung 110 ist für das Ausgeben von Anweisungen zu der Addiereinheit 120 und der Multipliziereinheit 130 verantwortlich. Im Allgemeinen enthalten Anweisungen, etwa die Anweisung 112, ein OP-Codefeld, das als „OP CODE” bezeichnet ist, eine erste Operandenregisterkennung, die als „Rs” benannt ist, eine zweite Operandenregisterkennung, die als „Rt” bezeichnet ist, und eine Zielregisterkennung, die als „Rd” bezeichnet ist. Für einige spezielle Anweisungen in dem Instruktionssatz kann das Rt-Feld fehlen oder es kann ein optionales Feld für einen unmittelbaren Operanden vorhanden sein, wobei diese anderen Anweisungen die Funktion des Umlenkmechanismus, der nachfolgend zu beschreiben ist, nicht beeinflussen und diese werden nicht weiter erläutert.
-
Die Ausführungseinheit 100 ist eine Einzelausgabe-Ausführungseinheit, so dass die Ausgabelogik 110 eine Anweisung pro Pipeline-Zyklus ausgibt und die Anweisung entweder der Addiereinheit 120 oder der Multipliziereinheit 130 entsprechend der Art der Anweisung zuführt. Die Addiereinheit 120 besitzt drei Pipeline-Stufen: eine Ausrichtstufe 122, eine Addierstufe 124 und eine Normierstufe 126. Die Multipliziereinheit 130 besitzt ebenso drei Stufen: eine Booth'sche Codierstufe 132, eine Mehrfach-Arraystufe 134 und eine letzte Addier- und Rundungsstufe 136.
-
Anweisungen, die an die Addiereinheit 120 oder die Multipliziereinheit 130 ausgegeben werden, laufen entlang ihrer entsprechenden Pipelineverbindungen und rücken um eine Stufe am Ende jedes Pipeline-Zyklusses weiter. Die Eingangsoperanden werden der ersten Stufe der ausgewählten Einheit in der folgenden Weise zugeführt. Die Rs und Rt Felder der Anweisung 112 werden von der Ausgabelogik 110 sowohl an eine Umleitschaltung 140 als auch an die Registerdatei 150 ausgegeben. Wenn es keine Operandenabhängigkeiten gibt, dann werden die Operanden Rs und Rt von der Registerdatei 150 über die Umleitschaltung 140 auf Busse 160 und 170 zurückgegeben. Wenn Operandenabhängigkeiten auf der Basis von Anweisungen vorhanden sind, die gerade in den letzten Pipelinestufen beendet werden, dann werden diese von der Umleitschaltung 140 empfangen und an die geeigneten Operandenbusse weitergegeben. Wenn es eine oder mehrere Abhängigkeiten zu vorhergehenden Anweisungen gibt, die noch nicht abgeschlossen sind, dann unterbricht die Ausgabelogik 110 das Ausgeben der neuen Anweisung, bis die vorhergehende Anweisung, von der die neuen Anweisungen abhängen, vollständig bearbeitet sind. Wenn in diesem Falle die vorhergehende Anweisung, die die Abhängigkeit hervorruft, vollständig abgeschlossen ist, laufen die Ergebnisse durch die Umleitschaltung 140 auf die Busse 160 und 170, so dass die unterbrochene neue Anweisung ausgegeben werden kann. Gleichzeitig schreibt die Umleitschaltung 140 den neuen Wert in die Registerdatei 150.
-
In Fällen, in denen eine Operandenabhängigkeit auf Grund einer Anweisung in einer der ersten beiden Pipeline-Stufen vorhanden ist, wird die Ausgabe der neuen Anweisung unterbrochen, bis die vorhergehende Anweisung abgeschlossen ist. Diese Unterbrechung führt dazu, dass die Hardware im Wartezustand ist und keine nutzbringenden Funktionen ausführt. Es wäre wünschenswert, die Anzahl an Ereignissen dieser Art des Unterbrechens zu reduzieren oder dies zu korrigieren, wenn eine entsprechende Situation auftritt.
-
Beispielsweise besitzt die Ausrichtstufe der Addiereinheit 120 Eingänge zum Empfangen der ersten und zweiten Operandenwerte über die Operandenbusse 160 und 170. Diese Werte, der OP-Code, die Zielregisterkennung Rd und diverse andere decodierte und teilweise decodierte Felder gehen zu den Pipelinestufen weiter. Wenn eine Anweisung über die Normierstufe 126 bearbeitet ist, wird diese einem Eingang der Umleitschaltung 140 zugeführt. Die Umleitschaltung 140 ist vorgesehen, um einen Weg zwischen den Ergebnissen einer vorhergehenden Anweisung und dem Eingang einer nachfolgenden Anweisung bereitzustellen, um damit einen Pipelinezyklus einzusparen, der ansonsten erforderlich wäre, um das Ergebnis in das Zielregister in der Registerdatei 150 zu schreiben und nachfolgend auszulesen.
-
2 zeigt eine Blockansicht einer Ausführungseinheit mit Pipelinestruktur 200 eines Datenprozessors gemäß der vorliegenden Erfindung. Ebenso wie in 1 ist die Ausführungseinheit 200 eine Gleitkommaeinheit, könnte jedoch auch eine andere Art einer Ausführungseinheit sein, etwa eine Ganzzahleinheit, eine Vektoreinheit, etc. Die Ausführungseinheit 200 ist ähnlich zur Ausführungseinheit 100 aus 1 mit Ausnahme, dass sie eine Umlenklogikschaltung 210 aufweist, die in Verbindung mit weiteren Elementen der Ausführungseinheit 200 verhindert, dass eine Klasse an Anweisungen, die Operandenabhängigkeiten hervorrufen können, die Pipeline unterbrechen. Die Umlenklogikschaltung 210 erfasst mehrerer Arten an Anweisungen, die für gewöhnlich Registerabhängigkeiten hervorrufen würden, und korrigiert diese durch Austauschen von Registerkennungen, die das korrekte Ergebnis bereitstellen.
-
Die erste Art einer Anweisung ist eine Register-zu-Register-Ladeanweisung, die von einer weiteren Anweisung gefolgt wird, die das Zielregister der Register-zu-Register-Ladeanweisung als ein Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz angenommen:
MOV R1, R0
ADD R3, R2, R1
wobei die erste Anweisung eine Ladeoperation kennzeichnet, in der der Inhalt des Registers R0 in das Register R1 geladen wird, und die zweite Anweisung gibt eine Addieroperation an, in der der Inhalt von R1 zu dem Inhalt von R2 hinzuaddiert wird, wobei die Summe in das Register R3 geschrieben wird. In bekannten Systemen verursacht diese Sequenz eine Abhängigkeit, die verhindert, dass die ADD-Anweisung ausgegeben wird, bis die Ergebnisse der MOV-Anweisung entweder in der Registerdatei oder in der Umleitschaltung 140 verfügbar sind. Die Ausführungseinheit 200 führt die MOV-Anweisung tatsächlich aus, indem die Addiereinheit 120 verwendet wird, indem eine äquivalente Addieroperation durchgeführt wird, in der der Wert 0 für den zweiten Operanden verwendet wird. Somit müsste die zweite Anweisung normalerweise warten, bis die Normierstufe 126 das Ergebnis zu der Umleitschaltung 140 zuführt. Jedoch bewirkt in der Ausführungseinheit 200 die Umlenklogikschaltung 210, dass der Inhalt von R0 den Inhalt von R1 in der ADD-Anweisung ersetzt und die ADD-Anweisung wird unmittelbar ausgegeben, wobei der Inhalt von R0 als ein zweiter Operand verwendet wird. Somit wird die ADD-Anweisung in korrekter Weise ausgeführt.
-
Die zweite Art an Anweisungen ist eine ADD-Anweisung, in der einer der Operanden gleich Null ist, woran sich eine weitere Anweisung anschließt, die das Zielregister der ADD-Anwendung als Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz betrachtet:
ADD R2, R1, R0
ADD R4, R3, R2
wobei die erste ADD-Anweisung eine Addition kennzeichnet, in der der Inhalt des Registers R0 dem Inhalt des Registers R1 hinzugefügt wird, und wobei die Summe im Register R2 gespeichert wird, und die zweite ADD-Anweisung bezeichnet eine Addieroperation, in der der Inhalt von R2 zu dem Inhalt von R3 addiert wird und die Summe im Register R4 gespeichert wird. In bekannten Systemen verursacht diese Sequenz eine Abhängigkeit, die verhindert, dass die zweite Addier-Anweisung ausgegeben wird, bis nicht die Ergebnisse der ersten Addier-Anweisung verfügbar sind. In der Ausführungseinheit 200 bewirkt jedoch im Falle, dass R1 (R0) = 0 ist, die Umlenklogikschaltung 210, dass der Inhalt von R0 (R1) den Inhalt von R2 in der zweiten ADD-Anweisung ersetzt und die zweite ADD-Anweisung unmittelbar ausgegeben wird, wobei der Inhalt von R0 (R1) als zweiter Operand verwendet wird.
-
Die dritte Art an Anweisung ist eine Multiplikationsanweisung, in der einer der Operanden gleich 1 ist, woran sich eine weitere Anweisung anschließt, die das Zielregister der Multiplizieranweisung als ein Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz betrachtet:
MUL R2, R1, R0
ADD R4, R3, R2
wobei die erste Anweisung eine Multiplikation bezeichnet, in der der Inhalt des Register R0 mit dem Inhalt des Registers R1 multipliziert wird und das Produkt in dem Register R2 gespeichert wird, und wobei die zweite Anweisung eine Addieroperation angibt, in der der Inhalt des Registers R2 zu dem Inhalt des Registers R3 addiert und im Register R4 abgelegt wird. In bekannten Systemen bewirkt diese Sequenz eine Abhängigkeit, die verhindert, dass die ADD-Anweisung ausgegeben wird, bis nicht die Ergebnisse der MUL Anweisung verfügbar sind. Jedoch bewirkt in der Ausführungseinheit 200 in diesem Falle, wenn R1 (R0) = 1 ist, die Umlenklogikschaltung 210, dass der Inhalt von R0 (R1) an die Stelle des Inhalts von R2 in der ADD-Anweisung tritt und die ADD-Anweisung unmittelbar ausgegeben wird, wobei der Inhalt R0 (R1) als ein zweiter Operand verwendet wird.
-
In all diesen Instruktionssequenzen unterbrechen bekannte Ausführungseinheiten das Ausgeben der zweiten Anweisung, bis die Ergebnisse der ersten Anweisung für die Weiterleitung verfügbar sind. Die Ausführungseinheit 200 erkennt diese Bedingungen jedoch, um damit ein Register an die Stelle des Registers zu setzen, das eigentlich referenziert ist und ermöglicht es, dass die Anweisung unmittelbar ausgegeben wird. Ein Datenprozessor, der eine derartige Ausführungseinheit verwendet, bearbeitet einen gegebenen Codierungsabschnitt in weniger Zeit oder alternativ verlangt dem Compiler, der diese Anweisungen ausgibt, weniger Einschränkungen ab.
-
Die Ausführungseinheit 200 führt eine weitere Registerersetzung durch, um Pipeline-Unterbrechungen zu verhindern, indem gewisse andere Anweisungen erkannt werden, die durch Ersetzen eines referenzierten Registers mit einem Register durch Erzwingen einer Änderung im Vorzeichenbit des Ergebnisses ausgegeben werden können. Operanden in der Ausführungseinheit 200 werden in einem von zwei Formaten verarbeitet. Das erste Format ist ein IEEE-normiertes (32-Bit) Gleitkommaformat, in welchem eine Zahl durch ein Vorzeichenbit, 8 Exponentenbits und 23 Nachkommabits repräsentiert ist. Das zweite Format ist ein IEEE-Format (64-Bit) mit doppelter Genauigkeit, in welchem eine Zahl durch ein Vorzeichenbit, 11 Exponentenbits und 52 Nachkommabits repräsentiert ist. Da diese Zahlen ein explizites Vorzeichenbit aufweisen, kann bei R0 = 0 und wenn das Vorzeichenbit von R1 negativ ist, die zweite Anweisung in der Sequenz
ADD R2, R1, R0
ADD R4, R3, R2
ausgegeben werden, indem R1 für den zweiten Operanden verwendet wird und das Vorzeichenbit des Ergebnisses auf 1 gesetzt wird, um eine negative Zahl anzuzeigen.
-
Durch dieses Merkmal wird ermöglicht, dass weitere Anweisungen in den Satz aus Anweisungen mit eingeschlossen werden, auf die die Umlenklogikschaltung 210 reagiert. Zu derartigen Anweisungen gehören ABS, das den Absolutwert einer Zahl nimmt, und NEG, das das Vorzeichen einer Zahl negiert bzw. ändert. Für diese beiden Anweisungen repräsentiert die Umlenklogikschaltung 210 einen Mechanismus, der den Wert des Vorzeichenbits ändert, wenn ein Operand nach Bedarf als Ersatz verwendet wird. Andere Anweisungen, für die die Umlenklogikschaltung 210 den Wert des Vorzeichenbits ändert, enthalten eine Subtraktionsanweisung, in der der Minuend (d. h. in dem Ausdruck A – B der Operand A) gleich 0 ist, und eine Multiplizieranweisung, in der jeder Operand gleich –1 ist. Eine Subtraktion, in der der Subtrahend (d. h. in dem Ausdruck A – B der Operand B) 0 ist, ist äquivalent zu einer „Addition mit 0”-Anweisung, und in diesem Falle ersetzt die Umlenklogikschaltung 210 den Zieloperanden durch den ersten Operanden, ohne dass das Vorzeichenbit geändert wird. Eine Multiplikation, in der ein Operand 0 ist, erzeugt ein Ergebnis 0, und in diesem Falle ersetzt die Umlenklogikschaltung 210 das Zielregister durch das 0-Operandenregister. Es können andere Anweisungen, die für den speziellen Instruktionssatz des Datenprozessors einzigartig sind, in den Satz aus Instruktionen, auf die die Umlenklogikschaltung 210 reagiert, gemäß den Prinzipien wie sie hierin beschrieben sind, mit eingebaut werden.
-
Einige Details der Implementierung des zuvor beschriebenen Mechanismus sind in 3 gezeigt, in der eine Teilblockansicht und ein Teillogikdiagramm der Umlenklogikschaltung 210 aus 2 dargestellt sind. Die Umlenklogikschaltung 210 umfasst im Allgemeinen eine Umlenkerkennungslogikschaltung 300, ein erstes Umlenkregister 310, ein zweites Umlenkregister 320, einen Satz aus Komparatoren 330 und einen Satz aus Multiplexern 340. Die Umlenkerkennungslogikschaltung 300 besitzt einen Eingang, der mit den Bussen 160 und 170 verbunden ist, und einen Ausgang. Die Funktion der Umlenklogikschaltung 300 liegt darin, jene Bedingungen zu erkennen, die für einen Registeraustausch in der zuvor beschriebenen Weise geeignet sind, und um einen Eintrag in das erste Umlenkregister 310 zu erzeugen, um eine Abhängigkeit einer nachfolgenden Anweisung zu erkennen und einen geeigneten Registeraustausch zu veranlassen. In der Ausführungseinheit 200 führen die Busse 160 und 170 nicht nur die Werte der Operanden Rs und Rt, die von der Umleitlogikschaltung zurückgegeben werden, sondern auch Signale, die von der Umleitlogikschaltung 140 decodiert werden, um diverse Zustände der Operanden anzuzeigen. Beispielsweise enthält die Umleitlogikschaltung 140 eine Hardware, um zu erkennen, wenn die Exponenten- und Nachkommastellenfelder einer Zahl gleich Null sind oder wenn das Exponentenfeld gleich einem vorbestimmten Wert ist, der verwendet wird, um den Wert von 1 in diesem Zahlenformat darzustellen. Beispielsweise ist im Allgemeinen ein Wert 0 dargestellt, wenn sowohl das Exponentenfeld als auch das Nachkammastellenfeld 0 sind. jedoch ermöglicht die Ausführungseinheit 200, dass die 0 dargestellt wird, wenn lediglich das Exponentenfeld gleich 0 ist, unabhängig von dem Wert des Nachkommastellenfeldes. Ein Wert 1 ist durch eine Zahl repräsentiert, die ein Nachkommastellenfeld mit 0 hat und ein Exponentenfeld, das seinen vorbestimmten Wert (127 für normales Format und 1023 für Format mit doppelter Genauigkeit) aufweist. Aus dieser Information in Verbindung mit dem OP Code-Feld kann die Umlenklogikschaltung 300 die Bedingungen für Addieren mit 0 und Multiplizieren mit 1 erkennen.
-
Das erste Umlenkregister 310 besitzt Eingänge zum Empfangen der Registerzuordnungsfelder Rs, Rt und Rd, einen Eingang, der mit dem Ausgang der Umlenkerkennungslogikschaltung 300 verbunden ist, und einen Ausgang. Das zweite Umlenkregister 320 besitzt einen Eingang, der mit dem Ausgang des Register 310 verbunden ist, und besitzt ferner drei Ausgänge. Jedes Umlenkregister besitzt die folgenden Felder: ein Vorzeichenbitfeld, das als „S” bezeichnet ist, ein Gültigkeitsbitfeld, das als „V” bezeichnet ist, ein Registerkennungsübereinstimmungsfeld, das mit „MATCH” bezeichnet ist, und ein Austauschfeld, das als „SUBST” bezeichnet ist. Der Ausgang des ersten Umlenkregisters 310 wird in das zweite Umlenkregister 320 synchron mit einem Taktsignal, das nicht gezeigt ist, verschoben, das das Weiterschalten der Pipeline anzeigt.
-
Der Satz aus Komparatoren 330 enthält vier Komparatoren 332, 334, 336 und 338. Der Komparator 332 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rs, einen zweiten Eingang, der mit dem MATCH-Feld des zweiten Umlenkregisters 320 verbunden ist, einen Steuereingang, der mit dem V-Feld des zweiten Umlenkregisters 320 verbunden ist, und einen Ausgang. Der Komparator 334 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rs, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des ersten Umlenkregisters 310 verbunden ist, einen Steuereingang, der mit dem V-Feld des ersten Umlenkregisters 310 verbunden ist, und einen Ausgang. Der Komparator 336 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rt, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des zweiten Umlenkregisters 320 verbunden ist, einen Steuereingang, der mit dem V-Feld des zweiten Umlenkregisters 320 verbunden ist, und einen Ausgang. Der Komparator 338 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rt, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des ersten Umlenkregisters 310 verbunden ist, einen Steuereingang, der mit dem V-Feld des ersten Umlenkregisters 310 verbunden ist, und einen Ausgang.
-
Jeder Komparator bestimmt, ob der Wert eines Operandenregisters einer vorhergehenden oder einer zweiten vorhergehenden Anweisung an die Stelle eines Operanden der aktuellen Anweisung treten soll. Somit erkennt der Komparator 332, ob die Zielregisterkennung Rd der zweiten vorhergehenden Anweisung mit der ersten Operandenregisterkennung Rs der aktuellen Anweisung übereinstimmt. Der Komparator 334 erkennt, ob die Zielregisterkennung Rd der zweiten vorhergehenden Anweisung mit der zweiten Operandenregisterkennung Rt der aktuellen Anweisung übereinstimmt. Der Komparator 336 erkennt, ob die Zielregisterkennung Rd der vorhergehenden Anweisung mit der ersten Operandenregisterkennung Rs der aktuellen Anweisung übereinstimmt. Der Komparator 338 erkennt, ob die Zielregisterkennung Rd der vorhergehenden Anweisung mit der zweiten Operandenregisterkennung Rt der aktuellen Anweisung übereinstimmt.
-
Der Satz aus Multiplexern 340 umfasst Multiplexer 342 und 344. Der Multiplexer 342 besitzt einen ersten Eingang zum Empfangen von Rs, einen zweiten Eingang, der mit dem SUBST-Feld des zweiten Umlenkregisters 320 verbunden ist, einen dritten Eingang, der mit dem SUBST-Feld des ersten Umlenkregisters 310 verbunden ist, Steuereingänge, die mit den Ausgängen der Komparatoren 332 und 334 verbunden sind, und einen Ausgang zur Bereitstellung von NEW Rs. Der Multiplexer 344 besitzt einen ersten Eingang zum Empfangen von Rt, einen zweiten Eingang, der mit dem SUBST-Feld des ersten Umlenkregisters 310 verbunden ist, einen dritten Eingang, der mit dem SUBST-Feld des zweiten Umlenkregisters 320 verbunden ist, Steuereingänge, die mit den Ausgängen der Komparatoren 336 und 338 verbunden sind, und einen Ausgang zum Bereitstellen von NEW Rt.
-
Die Multiplexer 342 und 344 enthalten jeweils eine Multiplexer- und Logikschaltung, um geeignete Eingänge auszuwählen, um damit jeweils die Werte NEW Rs und NEW Rt bereitzustellen. Wenn weder das Umlenkregister 310 noch das Register 320 einen zulässigen Eintrag aufweisen, dann wählen die Multiplexer 342 und 344 Rs und Rt aus, um jeweils den Wert NEW Rs und NEW Rt bereitzustellen. Wenn lediglich das Umlenkregister 310 oder das Register 320 einen zulässigen Eintrag aufweist, dann wählen die Multiplexer 342 und 344 einen der SUBST-Werte aus, der dem zulässigen Umlenkregistereintrag entspricht, um NEW Rs und NEW Rt bereitzustellen, wenn Rs oder Rt mit dem Inhalt des entsprechenden MATCH-Feld übereinstimmen. Wenn beide Umlenkregister 310 und 320 jeweils einen zulässigem Eintrag aufweisen, dann wählen die Multiplexer 340 und 344 die SUBST-Werte aus, die dem zulässigen Umlenkregistereintrag entsprechen, um NEW Rs und NEW Rt bereitzustellen, wenn Rs und/oder Rt mit dem Inhalt des entsprechenden MATCH-Feldes übereinstimmen. Wenn beide Umlenkregister 310 und 320 einen zulässigen Eintrag aufweisen und die Werte der MATCH-Felder gleich sind, dann geben die Multiplexer 342 und 344 der jüngsten ausgegebenen Anweisung die Priorität, d. h. der Multiplexer wählt den Eingang aus, der von dem SUBST-Feld des Umlenkregisters 310 bereitgestellt wird.
-
Zu beachten ist, dass die Überprüfung über normale Abhängigkeiten parallel in einer entsprechenden Testschaltung zur Prüfung normaler Abhängigkeiten, die nicht gezeigt ist, in der Ausgabelogikschaltung 110 stattfindet. Die Technik zur Reduzierung der Pipeline-Unterbrechung, wie sie hierin beschrieben ist, funktioniert so, dass die Prüfung auf normale Abhängigkeit mit geringerer Priorität bewertet wird. Die Testschaltung für normale Abhängigkeit gibt zwei Signale aus, die als „rs_stall” und „rt_stall” bezeichnet sind, die Abhängigkeiten zwischen zuvor ausgegebenen aber noch nicht abgeschlossenen Anweisungen und den Rs- und Rt-Operanden der aktuellen Anweisung erkennen. Eine zusätzliche Logikschaltung in der Umlenklogikschaltung 210, die in 2 oder 3 nicht gezeigt ist, erzeugt ein Signal, das als „kill_rs_stall” bezeichnet ist, wenn der Ausgang des Komparators 342 oder der Ausgang des Komparators 344 logisch „wahr” ist, und erzeugt ein Signal, das als „kill_rt_stall” bezeichnet ist, wenn der Ausgang des Komparators 346 oder der Ausgang des Komparators 348 logisch „wahr” ist. Die Ausgabelogikschaltung 110 unterbricht dann das Ausgeben der Anweisung 112, wenn rs_stall mit kill_rs_stall als Torsignal „wahr” ist oder wenn rt_stall mit kill_rt_stall als Torsignal „wahr” ist.
-
Zu beachten ist, dass in der dargestellten Ausführungsform die Umlenklogikschaltung 210 von der Addiereinheit 120 und der Multipliziereinheit 130 gemeinsam verwendet wird, da die Ausführungseinheit 200 lediglich eine Einzelausgabeeinheit ist. Für superskalare Implementierungen ist die Logik entsprechend komplex, aber die Prinzipien für das Erkennen und Austauschen bleiben die gleichen.
-
In anderen Ausführungsformen kann die Ausführungseinheit mit Pipeline-Struktur zwei oder mehr als drei Stufen aufweisen. Um den hierin beschriebenen Mechanismus vorteilhaft auszunutzen, kann die Anweisung unter Umständen lediglich eine Operandenkennung aufweisen. Ferner kann die Umlenkerkennungslogikschaltung die Operanden direkt untersuchen, um spezielle Bedingungen zu erkennen, etwa gleich 0 oder gleich 1 entsprechend weiterer Ausführungsformen, in denen eine derartige Information nicht über bestehende Operandenbusse verfügbar ist.
-
Obwohl wenigstens eine beispielhafte Ausführungsform in der vorhergehenden detaillierten Beschreibung dargestellt ist, sollte beachtet werden, dass eine grolle Anzahl an Änderungsmöglichkeiten besteht. Es sollte ferner beachtet werden, dass die beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen lediglich Beispiele sind und nicht den Schutzbereich, die Anwendbarkeit oder die Konfiguration der Erfindung einschränken sollen. Die vorhergehende detaillierte Beschreibung gibt vielmehr dem Fachmann eine geeignete Anleitung zum Einrichten der diversen beispielhaften Ausführungsformen. Es sollte selbstverständlich sein, dass diverse Änderungen hinsichtlich der Funktion und der Anordnung von Elementen durchgeführt werden können, ohne von dem Schutzbereich der Erfindung, wie sie in den folgenden Patentansprüchen und den Äquivalenten dargelegt ist, abzuweichen.
-
Bezugszeichenliste
-
Fig. 1Stand der Technik
- 110
- Ausgabelogik
- 122
- Ausrichten
- 124
- Addieren
- 126
- Normieren
- 132
- Booth'sche Codierung
- 134
- Mehrfacharray
- 126
- Abschließen des Addieren und Runden
- 140
- Umleitung
- 150
- Registerdatei
Fig. 2 - 210
- Umlenklogik
Fig. 3 -
- von den Bussen 160 und 170
- 300
- Umlenkerkennungslogik