-
ANWENDUNGSGEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der digitalen
Rechnerschaltungen und insbesondere auf ein System und ein Verfahren
für eine
Befehlsausführungsvorrichtung
zur Verwendung mit einem Prozessor mit Ausnahmeroutinen.
-
HINTERGRUND DER ERFINDUNG
-
Es
existieren allgemeine Beweggründe
für den
Entwurf von Mikroprozessoren, zum Beispiel, die Leistungsaufnahme
und die Abmessungen dieser Vorrichtungen zu reduzieren und auch
die Gesamtkosten zu senken. Insbesondere war eine technologische
Entwicklung in dieser Hinsicht die Entwicklung von Befehlsausführungsarchitekturen,
die eine Reihe von gleichzeitigen parallelen Befehlen implementieren.
-
Es
sind Systeme und Verfahren bekannt, die Befehlsausführungsarchitekturen
der oben erwähnten
Art schaffen, zum Beispiel Mikroprozessor-Befehlssatz-Architekturen (Instruction
Set Architektures, ISA). Typischerweise wird für die Implementierung derartiger
ISAs ein sogenanntes Pipeline-Verfahren genutzt, um verschiedene
Ausführungsstufen
von aufeinanderfolgenden Befehlen zu überlappen.
-
Eine
herkömmliche
vierstufige Pipeline nutzt (1) Abruf (Fetch), (2)
Decodierung (Decode), (3) Ausführung (Execute) und (4)
Rückschreiben
(Write-back). Für
Datenübertragungsbefehle
wie zum Beispiel einen Ladebefehl wird normalerweise eine zusätzliche
Befehlspipeline-Stufe benötigt.
-
In
der ersten Stufe des Zyklus ruft der Prozessor einen Befehl aus
dem Speicher ab. Die Adresse des abzurufenden Befehls ist im internen
Register gespeichert, das als Programmzähler oder PC (Program Counter)
bezeichnet wird. Solange der Prozessor darauf wartet, dass der Speicher
mit dem Befehl antwortet, inkrementiert er den PC. Das bedeutet,
dass die Abrufphase des nächsten
Zyklus den Befehl an dem nächsten
sequentiellen Speicherplatz im Speicher abrufen wird (wenn der PC
nicht durch eine spätere
Phase des Zyklus modifiziert wird).
-
In
der Decodierphase speichert der Prozessor die von dem Speicher zurückgesendeten
Informationen in einem anderen internen Register, das als Befehlsregister
oder IR (Instruction Register) bekannt ist. Das IR enthält jetzt
einen einzigen Maschinenbefehl, der als Binärzahl codiert ist. Der Prozessor
decodiert den Wert im IR, um herauszufinden, welche Operationen
in der nächsten
Stufe durchzuführen
sind.
-
In
der Ausführungsstufe
führt der
Prozessor den Befehl tatsächlich
aus. Dieser Schritt umfasst oft weitere Speicheroperationen; zum
Beispiel kann der Befehl den Prozessor anweisen, zwei Operanden
aus dem Speicher abzurufen (sie zum Beispiel in Operandenregistern
speichern), sie zu addieren und das Ergebnis an einem dritten Speicherplatz
zu speichern (die Zieladressen der Operanden und das Ergebnis erden
ebenfalls als Teil des Befehls codiert).
-
In
der Rückschreibstufe
der Pipeline wird das zuvor in der Pipeline berechnete Ergebnis
in ein Zielregister in einer Registerdatei geschrieben (zurückgezogen).
-
Bei
einem weiteren Pipeline-Verfahren nach dem Stand der Technik ist
eine Schaltung vorgesehen, die es ermöglicht, dass Operanden oder
Ergebniswerte die Registerdatei umgehen. Mit Hilfe dieser Umgehungsschaltungen
stehen die Operanden oder Ergebniswerte bereits nachfolgenden Befehlen
zur Verfügung, bevor
die Operanden-erzeugenden Befehle zurückgezogen wurden (z. B. in
die Registerdatei zurückgeschrieben
wurden).
-
Schließlich gibt
es zahlreiche Gründe
dafür,
dass der normale Pipeline-Fluss in einem typischen Prozessor systematisch
unterbrochen wird. Der Nachteil dieser Unterbrechungen macht sich
in Form von verlorenen oder verzögerten
Pipeline-Zyklen bemerkbar. Insbesondere dürfen Ausnahmeroutinen oder
Unterbrechungen oft den Befehlsfluss durch die Pipeline auf eine
solche Weise unterbrechen, dass ein erster Befehl nicht sofort wieder
in die Pipeline eintritt, nachdem die Ausnahme beendet ist, während ein
zweiter Befehl, der nach dem ersten Befehl in die Pipeline eingetreten
war, dies tut. Dadurch wird die Pipeline komplizierter, weil die Änderung
der Befehlsreihenfolge in der Pipeline berücksichtigt werden muss, damit
Befehlsoperanden und Ergebniswerte ordnungsgemäß verarbeitet werden.
-
Diese
Arten von herkömmlichen
Pipelines weisen zahlreiche Nachteile auf. Herkömmliche Pipeline-Verfahren
erfordern zum Beispiel oft eine Vielzahl von separaten Registern
in einer Registerdatei, um zahlreiche gleichzeitige parallel Befehle
in angemessener Weise auszuführen
und Daten während
der Unterbrechungen zu speichern. Die große Registerdatei wiederum trägt typischerweise
erheblich zu der Gesamtleistungsaufnahme und den Abmessungen des
Prozessors bei.
-
Es
besteht also in der Technik ein Bedarf an verbesserten Systemen,
Verfahren und Techniken zur Reduzierung des Schreibverkehrs in herkömmliche
Register innerhalb eines Prozessors, wobei die Gesamtleistungsaufnahme
reduziert wird und gleichzeitig die Auswirkungen von Unterbrechungen
in einer Pipeline-Architektur kompensiert werden.
-
KURZE ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung hat zur Aufgabe, einige der Beschränkungen
von herkömmlichen
Befehlsausführungsvorrichtungen
innerhalb von Prozessoren, wie sie oben beschrieben wurden, zu milder.
-
Die
Erfindung hat weiterhin zur Aufgabe, eine Prozessor-Befehlssatz-Architektur zu schaffen,
die die Anzahl der Registerdatei-Schreiboperationen in einem Pipeline-Verfahren
reduziert und dabei gleichzeitig die Auswirkung von Unterbrechungen
in einer Pipeline-Architektur berücksichtigt; vorteilhafterweise
ermöglicht
sie ihrerseits eine Reduzierung der Gesamtleistungsaufnahme des
Prozessors.
-
Die
mit dem Registerschreibverkehr in einem Prozessor zusammenhängenden
Nachteile werden durch eine Anordnung in Übereinstimmung mit den Prinzipien
der vorliegenden Erfindung, bei der eine Befehlsausführungsvorrichtung
geschaffen wird, reduziert oder überwunden.
Die Befehlsausführungsvorrichtung umfasst
eine Befehlspipeline zum Erzeugen eines Ergebnisses für einen
Befehl, wobei Ausnahmeroutinen die Befehlspipeline in zufälligen Intervallen
unterbrechen können;
eine Registerdatei, die mindestens einen Schreib-Port zum Speichern
des Ergebnisses umfasst, eine Umgehungsschaltung, um den Zugriff
auf das Ergebnis zu erlauben, wobei eine Angabe für eine Registerdatei-Steuerung vorgesehen
ist, der zu entnehmen ist, ob das Ergebnis durch nur einen anderen
Befehl benutzt wird, und die Registerdatei-Steuerung verhindert, dass
das Ergebnis in dem Schreib-Port gespeichert wird, wenn über die
Umgehungsschaltung auf das Ergebnis zugegriffen wurde und das Ergebnis
durch nur einen anderen Befehl benutzt wird, einen First-In-First-Out-Zwischenspeicher
(FIFO) zum Speichern des Ergebnisses und eine FIFO-Steuerung zum Schreiben
des Inhalts des FIFO-Zwischenspeichers in die Registerdatei, wenn
eine Ausnahme auftritt.
-
Bei
einer Ausführungsform
der vorliegenden Erfindung umfasst die Angabe, ob das Ergebnis durch nur
einen anderen Befehl benutzt wird, die Codierung jedes Befehls.
-
In
dem „Operationscode” (Opcode)
von jeden Befehl wird zum Beispiel ein so genanntes „Totwert”-Feld bestimmt,
um anzugeben, ob das Ergebnis durch nur einen anderen Befehl benutzt
wird.
-
Bei
einer weiteren Ausführungsform
der Erfindung umfasst das Mittel zum Angeben, ob das erste Ergebnis
durch nur den zweiten Befehl verwendet wird, dass die Befehlspipeline
bestimmt, ob ein Ergebnis eines Befehls in der Befehlspipeline und
ein weiteres Ergebnis eines weiteren Befehls in der Befehlspipeline
zur Speicherung in dem gleichen Schreib-Port in der Registerdatei
vorgesehen sind. Da der Schreib-Port in der Registerdatei durch
einen nachfolgenden Befehl, der sich bereits in der Befehlspipeline
befindet, „wiederverwendet” wird,
wird dies benutzt, um anzugeben, dass das erste Ergebnis durch nur
einen anderen Befehl benutzt wird.
-
Diese
und andere Ausführungsformen
und Aspekte der vorliegenden Erfindung werden im Folgenden ausführlich beschrieben.
-
KURZE BESCHREIBUNG DER ZEICHNUNG
-
Die
Merkmale und Vorteile der vorliegenden Erfindung lassen sich unter
Bezugnahme auf die nachstehende ausführliche Beschreibung der bevorzugten
Ausführungsformen
anhand der Zeichnungen nachvollziehen. Es zeigen:
-
1 ein
Blockschaltbild von einer beispielhaften Anordnung einer Befehlsausführungsvorrichtung
in Übereinstimmung
mit den Erkenntnissen der vorliegenden Erfindung;
-
2 ein
Blockschaltbild von einer weiteren beispielhaften Anordnung einer
Befehlsausführungsvorrichtung
in Übereinstimmung
mit den Erkenntnissen der vorliegenden Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Einige
Abschnitte der folgenden ausführlichen
Beschreibungen werden in Form von Programmen oder Algorithmen und
symbolischen Darstellungen von Operationen an Datenbits in einem
Computerspeicher vorgelegt. Diese algorithmischen Beschreibungen
und Darstellungen sind die von Fachkundigen auf dem Gebiet der Datenverarbeitung
verwendeten Mittel, um den Inhalt ihrer Arbeit anderen Fachkundigen
am effizientesten mitteilen zu können.
Hier, und im Allgemeinen, ist ein Algorithmus als eine selbstkon sistente
Sequenz von Schritten zu verstehen, die zu einem gewünschten
Ergebnis führt.
Die Schritte sind diejenigen, die physikalische Manipulationen von
physikalischen Größen erfordern.
Normalerweise – jedoch
nicht zwangsläufig – liegen
diese Größen in Form
von elektrischen, magnetischen oder optischen Signalen vor, die
gespeichert, übertragen,
kombiniert, verglichen und auf andere Weise manipuliert werden können.
-
Bezug
nehmend auf 1 wird ein Blockschaltbild dargestellt,
dass eine Ausführungsform
einer Befehlsausführungsvorrichtung
in Übereinstimmung
mit den Erkenntnissen der vorliegenden Erfindung veranschaulicht.
Es ist zu erkennen, dass 1 zu Erklärungszwecken vereinfacht wurde
und dass die gesamte Prozessorumgebung, die zur Verwendung mit der
Erfindung geeignet ist, zum Beispiel Cache-Speicher, RAM- und ROM-Speicher,
Compiler oder Assembler, E/A-Vorrichtungen, usw. umfasst, die hier
nicht alle darstellt werden müssen.
Im Allgemeinen nutzt die Befehlsausführungsvorrichtung 10 eine
n-stufige Pipeline-Befehlssatz-Registerarchitektur (ISA) 121 bis 12n (im
Folgenden kollektiv als „Pipeline 12” bezeichnet),
eine herkömmliche
Umgehungsschaltung 14, eine Registerdatei 16,
eine Registerdatei-Steuerung 18, einen FIFO-Zwischenspeicher 24 (First-In-First-Out) und
eine FIFO-Zwischenspeicher-Steuerung 26.
-
Die
Pipeline 12 umfasst eine Reihe von Pipeline-Stufen (zum
Beispiel Abrufen, Decodieren, Ausführen und Rückschreiben), die in den Registern 121 bis 12n gespeichert
werden. Im Gegensatz zu herkömmlichen Pipelines
umfasst Pipeline 12 auch ein „Verbraucherkennung”-Feld in
den Pipeline-Stufenregistern, und seine Verwendung wird im Folgenden
ausführlich
erläutert.
Es ist jedoch zu beachten, dass sich die Erfindung nicht auf eine
bestimmte Pipeline-Architektur beschränkt. Die Stufen in einer Pipelinke
können
zum Beispiel umfassen: Befehlsabruf, Decodieren, Operandenabruf,
ALU-Ausführung,
Speicherzugriff und Rückschreiben
der Operationsergebnisse. Außerdem
kann die Kette der Stufen in der Pipeline feiner unterteilt oder
kombiniert werden. Die Anzahl der Stufen in der Pipeline ist ein
architektonisches Merkmal, das entsprechend der beabsichtigten Nutzung
der Befehlsebenen-Parallelität
geändert
werden kann.
-
Die
Registerdatei 16 umfasst mindestens einen adressierbaren
Ziel-Schreib-Port 20 zum
Speichern von Daten. Wie der Fachkundige verstehen wird, kann die
Registerdatei jedes beliebige herkömmliche Datenbank/Indexier-Speichermittel
sein, das sich zum Speichern von Datensätzen/Daten eignet und den Zugriff
darauf erlaubt.
-
Die
Registerdatei-Steuerung 18 umfasst die Mehrzahl der Logik-,
Steuerungs-, Überwachungs-
und Übersetzungsfunktionen,
die zur Steuerung der Operation des Rückschreibens von Schreibdaten
in die Registerdatei 16 erforderlich sind. Die Registerdatei-Steuerung 18 umfasst
auch Programme für
die Operationen, die in 3 funktionell
beschrieben sind. Wie im Folgenden ausführlich erläutert, wird durch die Ausführung dieser
Programme die Funktionalität
implementiert, die erforderlich ist, um die Anzahl von Registerdatei-Schreiboperationen
in der Pipeline zu reduzieren.
-
Befehle
können
einem von drei Haupttypen zugerechnet werden: arithmetisch/logisch,
Datenübertragung
und Steuerung. Arithmetische und logische Befehle wenden primitive
Funktionen von ein oder zwei Argumenten an, zum Beispiel Addition,
Multiplikation oder logische UND-Verknüpfung.
-
Die
Zeitsteuerung jeder Stufe hängt
von der internen Konstruktion des Prozessors und von der Komplexität der Befehle
ab, die er ausführt.
Die Quantenzeiteinheit zum Messen von Operationen wird als Taktzyklus
bezeichnet. Die Logik, die Operationen in einem Prozessor lenkt,
wird durch einen externen Takt gesteuert, bei dem es sich zum Beispiel
um eine Schaltung handeln kann, die ein Rechtecksignal mit einer
festen Periode erzeugt. Die Anzahl der zur Ausführung einer Operation erforderlichen
Taktzyklen bestimmt die Zeitdauer, die hierfür benötigt wird.
-
Ich
habe angemerkt, dass eine große
Anzahl von Befehlen einen Ergebniswert ergibt, der nur durch einen
einzigen Befehl an späterer
Stelle in einem Algorithmus verwendet wird, zum Beispiel einen anderen
Befehl, der nachfolgend in die Pipeline eintritt (der erstgenannte
Befehl wird hier als „Erzeuger” bezeichnet
und der letztgenannte als „Verbraucher”). Eine
Analyse des Registerdatenflusses in den SPEC-Benchmarks zeigt, dass
70% aller ganzzahligen Ergebnisse und 80–99% aller Gleitkomma-Ergebnisse
nur einmal „verbraucht” werden;
siehe hierzu den Artikel von M. Franklin et al. mit dem Titel „Register
Traffic Analysis for Streamlining Inter-Operation Communication
in Fine Grain Parallel Processors”, der in The 25 Annual Internation
Symposium an Microarchitecture (MICRO-25) auf den Seiten 236–245 im
Dezember 1992 veröffentlicht
wurde. Außerdem
betritt in einer sehr großen
Anzahl von Fällen
der Verbraucher die Pipeline-Architektur, bevor sich der Erzeuger
zurückzieht.
Dies gilt in noch stärkerem
Maße für spezielle
Prozessortypen, zum Beispiel Superskalar- und VLIW-Prozessoren.
Dementsprechend erhält
der Verbraucher den Ergebniswert über ein anderes Verfahren als
die Registerdatei, zum Beispiel, durch die Umgehungsschaltung. Das
Ergebnis wird jedoch nichtsdestoweniger in die Registerdatei zurückgeschrieben.
-
Wichtiger
noch habe ich erkannt, dass der Ergebniswert des Erzeugers in einer
derartigen Situation nicht zur Registerdatei zurückgezogen zu werden braucht,
weil er nicht durch einen anderen Verbraucher benutzt wird. Der
Ergebniswert des Erzeugers wird praktisch zu einem „Totwert”, sobald
er zum Verbraucher hin umgangen worden ist. In Übereinstimmung mit einem Aspekt
der Erfindung bestimmt also die Registerdatei-Steuerung 18, ob ein bestimmter
Befehl von mehr als einem Verbraucher benutzt wird, und wenn dies
der Fall ist, wird das Ergebnis in der Stufe n, zum Beispiel der
Rückschreib-Stufe, in die Registerdatei 16 zurückgeschrieben.
In beiden Fällen
wird das Ergebnis (das die Schreibdaten, die Zieladresse und die
Verbraucherkennung umfasst) vorübergehend
in dem FIFO-Zwischenspeicher 24 gespeichert.
-
In
der beispielhaften Ausführungsform
aus 1 wird in jedem Befehl eine explizite Codierung
verwendet, um anzugeben, ob der Ergebniswert eines bestimmten Befehls
durch nur einen Verbraucher benutzt wird (oder nur durch andere
Verbraucher in der Pipeline). Vorzugsweise wird ein spezielles „Totwert”-Bit bei der
Befehlscodierung (dem so genannten „Operationscode” oder „Opcode” eines
Befehls) verwendet, das je nach Maß des Verbrauchs durch einen
Compiler oder Assembler (nicht abgebildet) gesetzt oder gelöscht wird. Wenn
das Totwert-Bit gesetzt wird, wird der Ergebniswert nicht in Stufe
n von Pipeline 12 in die Registerdatei 16 zurückgeschrieben
(zum Beispiel über
ein Write-Enable-Signal),
sondern im FIFO-Zwischenspeicher 24 gespeichert. Insbesondere
wird das Totwert-Bit ebenso wie die Befehlskennung des zugehörigen Befehls
der Registerdate-Steuerung 18 zugeführt, die
ihrerseits die Registerdatei 16 über ein Write-Enable-Signal
steuert, um den Ergebniswert zurückzuschreiben
oder nicht. Wenn ein spezielles Bit nicht zur Verfügung steht,
können
alternativ ein paar häufig
verwendete Befehle ausgewählt
werden (z. B. ADDIEREN und LADEN), die einem alternativen Opcode
zugewiesen werden, um das Maß des
Verbrauchs anzugeben.
-
Durch
Speichern des Ergebnisses im FIFO-Zwischenspeicher 24 berücksichtigt
die Erfindung die Auswirkungen von Ausnahmen, die den Befehlsfluss
durch die Pipeline unterbrechen dürfen. Ausnahmen können den
Befehlsfluss auf eine solche Weise unterbrechen, dass der Erzeuger
nicht mehr wieder in die Pipeline eintritt, nachdem die Ausnahme
behandelt wurde, der Verbraucher dies aber tut. Wenn der Verbraucher
nach Beendigung der Ausnahmeroutine wieder in die Pipeline eintritt,
liest er seine Operanden aus der Registerdatei 16, weil
jetzt der Erzeuger nicht mehr in der Pipeline dem Verbraucher nachgeschaltet
ist. Da aber der Erzeuger die Registerdatei 16 vor dem
Auftreten der Ausnahme nicht mehr aktualisiert hat, liest der Verbraucher
verzögerte
Daten aus der Registerdatei 16, und das Programm verhält sich
daher nicht korrekt.
-
Bestimmte
Pipeline-Architekturen, zum Beispiel Trimedia ISA, lassen an zufälligen Punkten
im Befehlsfluss keine Unterbrechungen zu. Stattdessen schafft die
ISA spezielle Befehle, die die CPU veranlassen, sich mit ausstehenden
Ausnahmen zu synchronisieren. Solange der Erzeuger und der Verbraucher
nicht durch derartige Befehle getrennt sind, kann kein Schaden entstehen
und können
die Totwerte gefahrlos ausgesondert werden.
-
Die
MIPS-ISA (Mikroprozessor ohne Interlocking-Pipeline-Stages) und
die meisten anderen herkömmlichen
ISAs lassen nicht zu, dass Anwendungsprogramme entscheiden, wann
der Prozessor sich mit ausstehenden Ausnahmen synchronisieren sollte.
Infolgedessen können
die Ausnahmen den Befehlsfluss auf eine solche Weise unterbrechen,
dass der Prozessor nach der Behandlung der Ausnahme nicht mehr in
die Pipeline eintritt, während
der Verbraucher dies tut.
-
Im
Betrieb speichert der FIFO-Zwischenspeicher 24 die Ergebnisse
jedes Befehls im unteren Bereich des FIFO-Speichers 24.
Das Ergebnis umfasst wiederum die Schreibdaten, die Zieladresse
der Registerdatei 16 und die Verbraucherkennung aus dem
Pipeline-Stufen-Register, die einen Verbraucher eindeutig identifiziert.
-
Die
FIFO-Steuerung 26 überwacht
ständig
den Fluss von zurückziehenden
Befehlen und vergleicht ihre Identität mit der „Verbraucherkennung” im oberen
Bereich des FIFOs 24. Wenn sie eine Übereinstimmung erkennt, wird
der obere Bereich des FIFO-Zwischenspeichers 24 abgehoben
und sein Wert ausgesondert.
-
Während einer
Ausnahme schreibt die FIFO-Steuerung 26 jedoch den Inhalt
des FIFO-Zwischenspeichers 24 in die Registerdatei 16,
dabei beginnend mit dem oberen Bereich und zum unteren Bereich hin
fortfahrend, bis der FIFO 24 leer ist. Wie der Fachkundige
verstehen wird, kann die FIFO-Zwischenspeicher-Schreiboperation
auf vielfältige
Weise ausgeführt
werden, zum Beispiel über
die Registerdatei-Steuerung oder eine direkte Verbindung mit der
Registerdatei. Anschließend
wird ein Verbraucher nach Beendigung der Ausnahmeroutine die korrekten
Daten aus der Registerdatei 16 lesen.
-
In
einer weiteren beispielhaften Ausführungsform, die in 2 dargestellt
ist, wird eine implizite Codierung in jedem Befehl benutzt, um anzugeben,
ob der Ergebniswert eines bestimmten Befehls durch nur einen Verbraucher
(oder andere Verbraucher in der Pipeline) benutzt wird. Insbesondere
bestimmt die Pipeline 12, ob ein anderer Befehl in der
Pipeline die gleiche Zieladresse (z. B. Schreib-Port 20)
in der Registerdatei 16 verwenden wird wie ein nachfolgender
Befehl in der Pipeline. Dies kann auf verschiedene Weisen herausgefunden
werden. Wenn zum Beispiel der Ergebniswert des Befehls in Stufe
3 123 für die Zieladresse des Schreib-Ports 20 in
der Registerdatei 16 angegeben wird und auch der Ergebniswert
des Befehls in Stufe 1 121 ebenfalls
für die
gleiche Zieladresse in der Registerdatei 16 genannt wird,
ist der Ergebniswert des Befehls in Stufe 3 „tot”, weil seine Zieladresse durch
einen anderen Befehl in der Pipeline wiederverwendet wird. Mit anderen
Worten, nur ein Verbraucher wird den Ergebniswert benutzen. Alternativ
wird dieses Verfahren auch verwendet, wenn mehr als ein Verbraucher
(in der Pipeline) den Ergebniswert benutzt. Wenn zum Beispiel der Ergebniswert
des Befehls in-Stufe n 12n für die Zieladresse
von Schreib-Port 20 in der Registerdatei 16 angegeben
wird und der Ergebniswert des (früheren) Befehls in Stufe 1 121 ebenfalls für die gleiche Zieladresse in der
Registerdatei 16 genannt wird, ist der Ergebniswert des
Befehls in Stufe n von Stufe 2 bis Stufe n-1 „lebendig”, aber in Stufe 1 „tot”. Auf dieses
Weise kann der Ergebniswert durch zahlreiche Verbraucher genutzt
werden, während
er „lebendig” ist. Wenn
ein Ergebniswert einmal „tot” ist, wird
er dementsprechend nicht in die Registerdatei 16 zurückgeschrieben.
-
Bei
der beispielhaften Ausführungsform
aus 2 werden herkömmliche
Gatter- und Logik-Schaltungen 22, zum Beispiel ODER-Gatter,
verwendet, um der Registerdatei-Steuerung 18 ein Totwert-Bit
zu liefern, wie in 2 dargestellt. Die Befehlskennung
des zugehörigen
Befehls wird ebenfalls der Registerdatei-Steuerung zugeführt. Wie
in der Technik gut bekannt ist, sind allerdings bei Mikro-Architekturen,
die Registerumbenennung unterstützen,
Gatter- und Logik-Schaltungen nicht erforderlich, weil ein derartiger
Prozessor bereits einen Mechanismus zum Erkennen der Register-Wiederverwendung
umfasst.
-
Eine
Reduzierung der Leistungsaufnahme hängt von den tatsächlichen
Eigenschafen der Implementierungstechnologie ab. Die Daten in dem
FIFO-Zwischenspeicher
werden dort zum Beispiel nur für
ein paar Taktzyklen gespeichert, bevor sie ausgesondert werden.
Wenn man sich dies vor Augen führt,
kann es möglich sein,
die Daten in dem FIFO-Zwischenspeicher als dynamische Ladungen ohne
Auffrischungsmöglichkeiten zu
speichern. Hierdurch könnte
die Komplexität
des FIFO-Zwischenspeichers erheblich reduziert werden, was insbesondere
vorteilhaft für
Prozessoren wäre,
die ein hohes Maß an
Befehlsebenen-Parallelität
nutzen und die daher in der Lage sein müssen, viele Befehle pro Taktzyklus
zurückzuziehen.
-
Im
Folgenden werden nur die Prinzipien der Erfindung veranschaulicht.
Es ist also zu beachten, dass der Fachkundige in der Lage sein wird,
verschiedene Anordnungen zu erdenken, die – obwohl hier nicht explizit beschrieben
oder dargestellt – die
Prinzipien der Erfindung verkörpern
und in ihrer Wesensart und ihrem Umfang enthalten sind. Darüber hinaus
wird beabsichtigt, dass alle Aussagen, in denen Prinzipien, Aspekte
und Ausführungsformen
der Erfindung sowie spezielle Beispiele hierfür genannt werden, sowohl die
strukturellen als auch die funktionellen Äquivalente hiervon umfassen.
Außerdem
wird beabsichtigt, dass derartige Äquivalente sowohl derzeit bekannte Äquivalente
als auch in Zukunft noch zu entwickenlde Äquivalente umfassen, d. h.
alle entwickelten Elemente, die die gleiche Funktion ausüben, unabhängig von
ihrer Struktur.
-
In
den Ansprüchen
hierfür
soll jedes Element, das als ein Mittel zur Ausführung einer bestimmten Funktion
genannt wird, jede Möglichkeit
zur Ausführung
dieser Funktion umfassen, einschließlich zum Beispiel a) eine
Kombination von Schaltungselementen, die diese Funktion ausführen oder
b) Software in jeglicher Form, einschließlich Firmware, Microcode oder ähnliches,
kombiniert mit entsprechenden Schaltungen zur Ausführung dieser
Software, um die Funktion auszuführen.
Die Erfindung, wie sie durch derartige Ansprüche definiert ist, liegt in
der Tatsache, dass die durch die verschiedenen genannten Mittel
gelieferten Funktionalitäten
auf eine Weise kombiniert und zusammengeführt werden, wie sie in den
Ansprüchen
beschrieben wird. Die Anmelderin betrachtet daher alle Mittel, die
diese Funktionalitäten
liefern können,
als den hier dargestellten äquivalent.
-
Text in der Zeichnung
-
Fig.
1
Pipeline
flow | Pipeline-Fluss |
Stage | Stufe |
Bypass
circuit | Umgehungsschaltung |
Dead
value | Totwert |
Instr.
ID | Befehlskennung |
Result
value | Ergebniswert |
Register
file control | Registerdatei-Steuerung |
Write
enable | Write-Enabel |
FIFO
buffer | FIFO-Zwischenspeicher |
Register
file | Registerdatei |
Exception | Ausnahme |
Write
Port | Schreib-Port |
FIFO
control | FIFO-Steuerung |
FIFO
buffer write | FIFO-Zwischenspeicher-Write-Signal |
Fig.
2
Logic
circuit | Logikschaltung |
Dest
addr. | Zieladresse |
Stage | Stufe |
Bypass
circuit | Umgehungsschaltung |
Dead
value | Totwert |
Instr
id | Befehlskennung |
Result
value | Ergebniswert |
Register
file control | Registerdatei-Steuerung |
Write
enable | Write-Enabel |
FIFO
buffer | FIFO-Zwischenspeicher |
Register
file | Registerdatei |
Exception | Ausnahme |
Write
Port | Schreib-Port |
FIFO
control | FIFO-Steuerung |
FIFO
buffer Write | FIFO-Zwischenspeicher-Write-Signal |