-
Gebiet der
Erfindung
-
Diese
Erfindung bezieht sich auf Datenverarbeitung und insbesondere auf
ein Verfahren und eine Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen
in einem Datenprozessor.
-
Hintergrund
der Erfindung
-
Ein
Datenverarbeitungssystem ist "gepipelinet", wenn es eine Anzahl
von Stufen zur Programmabarbeitung enthält. Beispielsweise kann eine
vierstufige Pipeline eine Abrufstufe, eine Decodierungsstufe, eine
Ausführungsstufe
und eine Rückschreibestufe
enthalten. Während
der Abrufstufe wird eine nächste
Anweisung von einer Speicherposition abgerufen. Dann wird die Anweisung
decodiert, ausgeführt
und an eine Position in dem Speicher oder in ein Register zurückgeschrieben.
Jede dieser Stufen kann einen oder mehrere Taktzyklen benötigen, um vollendet
zu werden. Auch kann simultan mit dem Decodieren der ersten Anweisung
eine zweite Anweisung abgerufen werden und, während die erste Anweisung ausgeführt wird,
kann die zweite Anweisung decodiert werden usw., so dass die "Pipeline" voll bleibt.
-
Gepipelinete
Datenverarbeitungssysteme können
zu Ausführungsfehlern
führen,
wenn ein Programm, welches ausgeführt wird, eine Flussänderungsanweisung
enthält.
Wenn eine Änderung
des Flusses auftritt, kann es notwendig sein, dass das Datenverarbeitungssystem
die Abarbeitung des Programmflusses stoppt, um die Anweisungspipeline wieder
aufzufüllen.
-
Verschiedene
Schemata, wie etwa Verzweigungsvorhersage, Vorabrufen und bedingte
Ausführung
gehören
zu den Techniken, die verwendet werden, um die Leistung zu verbessern,
wenn eine Flussänderung
auftritt. Viele dieser Schemata bringen jedoch eine erhöhte Komplexität in das
Datenverarbeitungssystem und es kann sein, dass sie nicht in jeder
Umgebung effektiv sind. Daher besteht ein Bedarf, eine Kontrolle über Verzweigungsvorhersage,
Vorhersagezielvorabruf und bedingte Ausführung zur Verfügung zu
stellen, die an verschiedene Umgebungen anpassbar ist.
EP 0 355 069 offenbart ein System
mit variabler Verzweigungsverzögerung.
-
Zusammenfassung
der Erfindung
-
Entsprechend
werden eine erfindungsgemäße Vorrichtung
und ein Verfahren, wie in den Ansprüchen 1 bzw. 7 beansprucht,
zur Verfügung
gestellt.
-
Kurze Beschreibung
der Zeichnungen
-
1 illustriert
in Form eines Blockdiagramms ein gepipelinetes Datenverarbeitungssystem
gemäß der vorliegenden
Erfindung.
-
2 illustriert
eine Folge von Anweisungen, die hilfreich sind bei der Beschreibung
der vorliegenden Erfindung.
-
3–11 illustrieren
in Form von Timing-Diagrammen
verschiedene Fälle
zur Illustration der Verzweigungssteuerung gemäß der vorliegenden Erfindung.
-
12 illustriert
eine Tabelle von Steuerwerten für
das Verzweigungssteuerfeld von 1 und die
anwendbaren FÄLLE
1–9, die
zu der zu jedem Steuerwert gehörenden
Aktion korrespondieren.
-
Detaillierte Beschreibung
der bevorzugten Ausführungsform
-
Allgemein
stellt die vorliegende Erfindung ein Datenverarbeitungssystem und
ein Verfahren zur selektiven Steuerung der Vorwärtsverzweigungsvorhersage und
der Rückwärtsverzweigungsvorhersage sowie
zum Vorabrufen und zur bedingten Ausführung von Anweisungen für verschiedene
Verzweigungszenarien zur Verfügung.
Ein 3 Bit großes
programmiererzugängliches
Steuerfeld wird benutzt, um den Aktivitätstyp, der mit einer bedingten
Verzweigungsanweisung verwendet werden soll, zu bestimmen, indem
die unabhängige
Steuerung des Vorabrufens von Anweisungen für vorwärtsgerichtete und für rückwärtsgerichtete,
bedingte Verzweigungen zugelassen wird. Auch wird eine Kontrolle über bedingte Ausführung für vorwärtsgerichtete
und rückwärtsgerichtete
Ver zweigungen bereitgestellt. Indem eine unabhängige Steuerung der vorwärtsgerichteten
und rückwärtsgerichteten
Verzweigungsvorhersage und bedingten Ausführung zugelassen wird, können Pipeline-Stockungen
reduziert werden und eine flexiblere Programmabarbeitung kann für verschiedene Umgebungen
erreicht werden. Insbesondere kann die vorliegende Erfindung weiter
unter Bezugnahme auf die 1–12 beschrieben
werden.
-
1 illustriert
in Form eines Blockdiagramms ein gepipelinetes Datenverarbeitungssystem 10 gemäß der vorliegenden
Erfindung. Das Datenverarbeitungssystem 10 enthält einen
Speicher 12 und einen Datenprozessor 14. Der Datenprozessor 14 enthält einen
Adresspuffer 16, einen Adressmultiplexer 24, eine
Steuereinheit 18, ein Verzweigungssteuerungs-Bitfeld 19,
eine Anweisungsabrufeinheit 26, einen Anweisungsdecodierer 32,
eine Ausführungseinheit 40,
eine Busschnittstelleneinheit 23, einen Dateneingangspuffer 20 und
einen Datenausgangspuffer 22. Die Anweisungsabrufeinheit 26 enthält einen
Programmsteuerungsberechnungsblock 28 und einen Anweisungspuffer 30.
-
Der
Speicher 12 ist mit einem Adressbus zum Empfangen einer
Adresse und mit einem Datenbus zum Empfangen und Bereitstellen von
Daten gekoppelt. Der Speicher 12 kann irgendeine Art herkömmlicher
Speicher, einschließlich
flüchtige
Speicher, wie etwa statische Direktzugriffsspeicher (SRAMs: static
random access memories) und dynamische Direktzugriffsspeicher (DRAMs:
dynamic random access memories) oder nicht-flüchtige Speicher, wie etwa elektrisch
programmierbare Festwertspeicher (EPROM: electrically programmable
read only memories) und Flash-Speicher sein. Auch kann sich der
Speicher 12 auf demselben integrierten Schaltkreis wie
der Prozessor 14 befinden oder er kann außerhalb
des Prozessors 14 positioniert sein. Der Adressmultiplexer 24 weist
eine erste Mehrzahl von Eingangsterminals zum Empfangen einer Operandenadresse
von der Ausführungseinheit 40,
eine zweite Mehrzahl von Eingangsterminals zum Empfangen einer Anweisungsadresse
von der Anweisungsabrufeinheit 26 und eine Mehrzahl von
Ausgangsterminals, die mit dem Adresspuffer 16 gekoppelt
sind, auf. Der Adressmultiplexer 24 wird von der Busschnittstelleneinheit 23 gesteuert,
um entweder die Operandenadresse oder die Anweisungsadresse zum
Speicher 12 zu leiten. Die Anweisungsabrufeinheit 26 ist
mit dem Dateneingangspuffer 20 gekoppelt, um ausgewählte Anweisungen
sequentiell aus dem Speicher 12 abzurufen.
-
Der
Anweisungsdecodierer 32 ist mit der Anweisungsabrufeinheit 26 über die
Busse 42 und 44 gekoppelt. Die Anweisungsabrufeinheit 26 liefert
eine Anweisungsadresse, um einen Anweisungcodierungswert zu erhalten.
Der Anweisungsdecodierer 32 empfängt den Anweisungscodierungswert
von der Anweisungsabrufeinheit 26, bereitet den Anweisungscodierungswert
durch Übersetzen
des Anweisungscodierungswertes in ein Format, welches von dem Datenprozessor 14 ausgeführt werden
kann, vor und decodiert selektiv die Anweisungen, die von der Anweisungsabrufeinheit 26 abgerufen
werden. Der Anweisungsdecodierer 32 ist mit der Ausführungseinheit 40 über die
Busse 42 und 44 gekoppelt. Die Ausführungseinheit 40 ist
mit dem Dateneingangspuffer 20 gekoppelt, um Daten von
dem Speicher 12 zu empfangen. Gleichermaßen ist
die Ausführungseinheit 40 mit
dem Datenausgangspuffer 22 gekoppelt, um Daten an den Speicher 12 zu
liefern. Die Ausführungseinheit 40 führt selektiv
die Anweisungen aus, die von dem Anweisungsdecodierer 32 decodiert
werden, und liefert das Ergebnis an den Datenausgangspuffer 22.
Die Ausführungseinheit 40 kann
beispielsweise eine arithmetische Logikeinheit (ALU: arithmetic
logic unit) enthalten.
-
Die
Busschnittstelleneinheit 23 empfängt eine Operandenzugriffanforderung
von der Anweisungseinheit 40 und liefert als Antwort Zugriffssteuerungssignale
an den Speicher 12 um auf Daten, die verarbeitet werden
sollen, zuzugreifen. Auch ist die Busschnittstelleneinheit 23 mit
der Anweisungsabrufeinheit 26 gekoppelt, um eine Anweisungszugriffsanforderung,
wegen der Anweisungen auf den Speicher 12 zuzugreifen,
zu empfangen. Die Busschnittstelleneinheit 23 ist bidirektional über einen Bus 54 mit
der Steuereinheit 18 gekoppelt, um die Anweisungssequenzierung
in dem Datenverarbeitungssystem 10 zu koordinieren.
-
Die
Steuereinheit 18 ist bidirektional mit der Anweisungsabrufeinheit 26 über einen
Steuerbus 48 verbunden, um den Betrieb der Anweisungsabrufeinheit 26 zu
steuern. Die Steuereinheit 18 ist bidirektional mit dem
Anweisungsdecodierer 32 über einen Steuerbus 50 gekoppelt
und die Steuereinheit 18 ist bidirektional mit der Ausführungseinheit 40 über einen
Steuerbus 52 gekoppelt. Die Ausführungseinheit 40 ist
mit der Ausführungsabrufeinheit 26 über einen Bedingungsbus 46 gekoppelt,
um der Anweisungsabrufeinheit 26 Bedingungsinformation
zur Verfügung
zu stellen. Bei der illustrierten Ausführungsform ist das Verzweigungssteuerfeld 19 ein
3-Bit-Steuerfeld eines Registers innerhalb der Steuereinheit 18, welches
Information zu Auswahlstrategien zur Steuerung vorwärtsgerichteten
und rückwärtsgerichteten Verzweigungsvorabrufs
und bedingter Anweisungsausführung
speichert. Bei anderen Ausführungsformen
kann das Steuer feld ein oder mehrere Bits enthalten. Das Steuerfeld 19 steuert
die Anweisungsabrufeinheit 26 direkt durch Deaktivieren
der Anweisungsabrufeinheit 26 für einen vorbestimmten Zeitraum
als Antwort darauf, dass eine bedingte Flussanweisung (bedingte
Verzweigungsanweisung) von dem Anweisungsdecodierer 32 erkannt
wird. Die Steuereinheit liefert ein Steuersignal an die Anweisungsabrufeinheit 26 als
Antwort auf den in dem Verzweigungssteuerfeld 19 gespeicherten
Wert. Das Verzweigungssteuerfeld 19 bestimmt einen von
mehreren Betriebsmodi, indem die Anweisungsabrufeinheit 26 weitere
Anweisungen abruft, wenn der Anweisungsdecodierer 32 feststellt,
dass eine bedingte Verzweigungsanweisung angetroffen wurde (siehe 12).
Die Betriebsmodi werden von der Richtung des Anweisungsflusses (rückwärtsgerichtete
Verzweigung oder eine vorwärtsgerichtete
Verzweigung), die von der bedingten Verzweigungsanweisung angezeigt
wird, bestimmt. Die bedingte Flussanweisung kann beispielsweise
eine Unterbrechungs- oder eine Sprunganweisung sein.
-
Deaktivieren
der Anweisungsabrufeinheit 26 reduziert den Überhang
des Datenverarbeitungssystems 10, indem eine Abrufoperation
vollständig
vermieden wird, bis die vorbestimmte Zeitspanne abgelaufen ist.
Nachdem die vorbestimmte Zeitspanne abgelaufen ist, nimmt die Anweisungsabrufeinheit 26 automatisch
den Betrieb wieder auf. Die Anweisungsabrufeinheit 26 kann
auch sowohl für
vorwärtsgerichtete
als auch für
rückwärtsgerichtete
Verzweigungen deaktiviert werden.
-
Das
Datenverarbeitungssystem 10 führt Anweisungen in einer vierstufigen
Pipeline aus. Die vier Stufen umfassen eine Abrufstufe, eine Decodierungsstufe,
eine Ausführungsstufe
und eine Rückschreibestufe.
Während
der Anweisungsabrufstufe wird eine Anweisung vom Speicher, wie etwa
dem Speicher 12 abgerufen. Die Anweisung wird dann in dem
Anweisungsdecodierer 32 decodiert. Die decodierte Anweisung
wird über
den Bus 42 an die Ausführungseinheit 40 geliefert.
Die Ausführungseinheit 40 führt die
Anweisung aus und schreibt die Ergebnisse über den Datenausgangspuffer 22 in
den Speicher 12 zurück.
-
2 illustriert
eine Folge von Anweisungen, die hilfreich sind bei der Beschreibung
der vorliegenden Erfindung. Zum Zwecke der Beschreibung der Erfindung
sind die Anweisungstypen nicht wichtig. Daher wird die zu jeder
Anweisungsnummer in 2 zugehörige Anweisung durch einen
einzelnen Buchstaben repräsentiert.
Im Laufe der Ausführung der
Anweisungen von 2 wird das Verarbeitungssystem 10 jede
Anweisung sequentiell abarbeiten, bis es auf eine Anweisung trifft,
die es erfordert, dass das Datenverarbeitungssystem 10 zu
einer anderen Anweisung geht, von der es sein kann, dass sie nicht die
nächste
sequentielle Anweisung ist, wie beispielsweise eine bedingte Verzweigungsanweisung. In 2 illustriert
die Anweisungsnummer 4 eine bedingte Verzweigungsanweisung, die
mit "V" markiert ist. Nach
Ausführung
der Anweisung V muss das Datenverarbeitungssystem 10 entweder
die nächste Anweisung
in der Sequenz ausführen
oder zur Anweisung W übergehen,
basierend auf einem nach Ausführung
der Anweisung V erhaltenen Ergebnis. Der bedingte Fluss wird durch
gekrümmte
Pfeile repräsentiert,
die von der Anweisung V ausgehen. Um die in 2 gezeigten
Folgen von Anweisungen effizienter auszuführen, kann das Datenverarbeitungssystem 10 versuchen,
vorherzusagen, ob die Verzweigung zur Anweisung X oder zur Anweisung
W geht, basierend auf der vorbestimmten Steuerinformation, die in
dem Verzweigungssteuerfeld 19 enthalten ist. Zusätz lich zur
Bestimmung, ob oder ob nicht eine Verzweigungsvorhersage durchgeführt werden
soll, kann das Verzweigungssteuerfeld 19 auch verwendet
werden, um zu bestimmen, ob oder ob nicht eine bedingte Ausführung eines
vorhergesagten Folgeanweisungsschritts durchgeführt wird.
-
Das
Verzweigungssteuerfeld 19 gestattet eine unabhängige Kontrolle über Vorabruf,
Vorhersage und bedingte Ausführung
in Verbindung mit bedingten Flussanweisungen. Entsprechend einem
Aspekt der Erfindung wird, basierend auf den Steuerbits des Verzweigungssteuerfeldes 19 eine
Folgeanweisung nicht abgerufen bis eine Bedingung in der aktuellen
Anweisung, die gerade ausgeführt
wird, aufgelöst
ist. Da die Folgeanweisung nicht abgerufen wird, wird eine Verzögerung,
die durch Vorabrufen einer Anweisung, die später verworfen wird, verursacht wird,
in der Datenverarbeitungseinheit 10 reduziert. Auch kann
der Energieverbrauch durch Eliminieren unnötiger Vorabrufung und Ausführung reduziert werden.
Außerdem
führt das
Datenverarbeitungssystem Anweisungen schneller und effizienter aus.
Außerdem
schafft die Erfindung zusätzliche
Flexibilität, indem
dem Benutzer gestattet wird zu wählen,
eine rückwärtsgerichtete
Verzweigung, nicht jedoch eine vorwärtsgerichtete Verzweigung,
vorabzurufen, falls dies das spezielle Programm veranlassen würde, in dem
gepipelineten Prozessor effizienter ausgeführt zu werden.
-
3 bis 11 illustrieren
in Form von Timing-Diagrammen
verschiedene Fälle
zur Beschreibung der Verzweigungssteuerung gemäß der vorliegenden Erfindung.
Die in den 3–11 illustrierten
Beispiele verwenden den Anweisungsfluss von 2 zu Illustrationszwecken.
-
3 illustriert
ein Timing-Diagramm eines FALLES 1, in dem weder in einer
vorwärtsgerichteten noch
einer rückwärtsgerichteten
Verzweigung in dem Datenverarbeitungssystem 10 eine Vorabrufung durchgeführt wird.
In 3 ist jede der vier Pipelinestufen des Datenprozessors 10 illustriert.
Während eines
ersten Taktzyklus wird Anweisung T abgerufen, die die Anweisung
2 in 2 ist. Während
eines zweiten Taktzyklus wird Anweisung U abgerufen und simultan
mit dem Abrufen von Anweisung U wird Anweisung T decodiert. In Taktzyklus
3 wird Anweisung V abgerufen, während
U decodiert wird. Anweisung V ist als eine vorwärtsgerichtete Verzweigungsanweisung
illustriert, wie durch die Pfeile angedeutet, die auf Anweisung
X und W zeigen. Wenn die Steuerbits im Verzweigungssteuerfeld 19 (1)
anzeigen, dass keine vorwärtsgerichteten
Verzweigungen vorabgerufen werden sollen, ruft in Taktzyklus 4 der
Prozessor 10 die nächste
Anweisung nicht ab, wie durch das Wort "Halt" angezeigt.
Anweisung V wird jedoch decodiert und Anweisung U ausgeführt, da
sie sich in späteren
Stufen in der Pipeline befinden. Der Halt bei Taktzyklus 4 ist eingefügt, um zu
gestatten, dass Anweisung V aufgelöst wird, um zu wissen, ob Anweisung
X oder Anweisung W im nächsten
Taktzyklus abgerufen werden muss. Sobald die Bedingung aufgelöst ist,
wie am Ende von Taktzyklus 4 angezeigt, kann die geeignete Anweisung
abgerufen werden. Siehe 12 bzgl.
der Steuerfeldwerte, die auf FALL 1 anwendbar sind.
-
4 illustriert
in Form eines Timingdiagramms einen FALL 2, bei dem das Vorabrufziel
korrekt vorhergesagt wurde. Zu Illustrationszwecken illustriert 4 eine
rückwärtige Verzweigung. 4 wäre jedoch
gleichermaßen
auf eine vorwärtsgerichtete
Verzweigung anwendbar. In Takt zyklus 1 wird die in 2 illustrierte
Anweisung Z abgerufen. In Taktzyklus 2 wird die nächste sequentielle
Anweisung, Anweisung W abgerufen, während Anweisung Z decodiert
wird. Bei Taktzyklus 3 wird Anweisung Q abgerufen, Anweisung W wird
decodiert und Anweisung Z wird ausgeführt. Anweisung Q ist eine rückwärtsgerichtete
bedingte Verzweigungsanweisung, wobei die nächste Anweisung Anweisung S
oder Anweisung R sein kann. Zu Illustrationszwecken wird vorhergesagt,
dass Anweisung S die nächste
Anweisung ist. Daher wird Anweisung S vorabgerufen, Anweisung Q
wird decodiert, Anweisung W wird ausgeführt und Anweisung Z zurückgeschrieben.
Am Ende des Taktzyklus 4 wird die Bedingung aufgelöst, um anzuzeigen,
dass Anweisung S die korrekte Anweisung war, und in Taktzyklus 5
wird Anweisung S dann decodiert, während Anweisung T vorabgerufen
wird, Anweisung Q ausgeführt
wird und Anweisung W zurückgeschrieben
wird. In FALL 2 tritt kein Pipeline-Stopp auf.
-
5 illustriert
in Form eines Timing-Diagramms einen FALL 3, bei dem ein Vorabrufziel falsch
vorhergesagt wurde. In Taktzyklus 1 wird Anweisung Z (2)
abgerufen. In Taktzyklus 2 wird Anweisung W abgerufen und in Taktzyklus
3 wird Anweisung Q abgerufen und Anweisung Q ist eine bedingte,
rückwärtsgerichtete
Verzweigungsanweisung. Wenn der Rückwärtsverzweigungsvorabruf im Verzweigungssteuerfeld 19 ausgewählt ist,
wird Anweisung S in Taktzyklus 4 vorabgerufen. (Siehe 12 bezüglich der
auf FALL 3 anwendbaren Steuerfeldwerte.) Während Taktzyklus 5 wird Anweisung Q
ausgeführt
und es wird festgestellt, dass der Vorabruf von Anweisung S falsch
war. Die Pipeline stoppt, während
die korrekte Anweisung, Anweisung R, abgerufen wird. Sobald Anweisung
R in Taktzyklus 6 abgerufen ist, wird die normale Abarbeitung wieder aufgenommen.
-
6 illustriert
in Form eines Timing-Diagramms einen FALL 4 bei dem sequentieller
Vorabruf korrekt vorhergesagt wird. In Taktzyklus 3 wird die Verzweigungsanweisung
V abgerufen, da das Verzweigungssteuerfeld 19 anzeigt,
dass der Vorabruf sequentiell sein sollte. Während Taktzyklus 4 wird Anweisung
X abgerufen. Bei Taktzyklus 5 wird Anweisung V ausgeführt und
die Bedingung wird aufgelöst,
um anzuzeigen, dass die Anweisung X die korrekte, vorabzurufende
Anweisung war. Die normale Abarbeitung fährt mit Anweisung X fort.
-
7 illustriert
in Form eines Timing-Diagramms einen FALL 5, bei dem der Anweisungsabruf sequentiell
ist und falsch vorhergesagt wird. Bei Taktzyklus 3 wird Anweisung
V vorabgerufen, wobei Anweisung V eine vorwärtsgerichtete bedingte Verzweigungsanweisung
ist. Da die nächste
Anweisung bei Taktzyklus 4 Anweisung X ist, wird Anweisung X abgerufen.
Bei Taktzyklus 5 wird Anweisung V ausgeführt. Die Bedingung wird aufgelöst, wobei
angezeigt wird, dass Anweisung X die falsche vorabzurufende Anweisung
war. Da der Vorabruf falsch war, wird bei Taktzyklus 6 die korrekte
Anweisung, Anweisung W abgerufen und die Pipeline wird wieder aufgefüllt.
-
8 illustriert
in Form eines Timing-Diagramms einen FALL 6, bei dem eine bedingte
Ausführung
ermöglicht
wird und eine Verzweigungsvorhersage korrekt durchgeführt wurde.
Bei Taktzyklus 3 wird eine vorwärtsgerichtete
Verzweigungsanweisung V abgerufen. Es wurde vorhergesagt, dass die Verzweigung
zu nehmen ist; daher wird Anweisung W abgerufen. Anweisung W wird
in Taktzyklus 6 ausgeführt,
bevor die Bedingung aufgelöst
ist. Nach Taktzyklus 6 wird die Bedingung aufgelöst und die Vorhersage war korrekt;
daher kann der Pipeline-Fluss weitergehen.
-
9 illustriert
in Form eines Timing-Diagramms einen FALL 7, der eine bedingte Ausführung illustriert,
bei der eine Verzweigung unzutreffenderweise als genommen vorhergesagt
wurde. Wie oben bei 8 diskutiert, wird vorhergesagt,
dass Anweisung W die nächste
Anweisung ist. In diesem Fall ist Anweisung W jedoch die falsche
Anweisung. Daher wird am Ende von Taktzyklus 6 die Bedingung aufgelöst und bei
Taktzyklus 7 wird die korrekte Anweisung, Anweisung X, abgerufen
und die Pipeline muss mit den korrekten Anweisungen wieder aufgefüllt werden.
-
10 illustriert
in Form eines Timing-Diagramms einen FALL 8, der eine bedingte Ausführung illustriert,
wobei eine Verzweigung korrekterweise als nicht genommen vorhergesagt
wurde. Bei Taktzyklus 3 ist Anweisung V die vorwärtsgerichtete Verzweigungsanweisung
und, weil die Vorhersage "nicht
genommen" ist, wird
die nächste
sequentielle Anweisung, Anweisung X, abgerufen. Am Ende von Taktzyklus
6, wenn Anweisung X ausgeführt
wird, wird die Bedingung korrekt aufgelöst und der Pipelinefluss bleibt
ungestört.
-
11 illustriert
in Form eines Timing-Diagramms einen FALL 9, der eine bedingte Ausführung zeigt,
bei der die Verzweigungsvorhersage unzutreffenderweise als nicht
genommen vorhergesagt wurde. Nach Abruf der Verzweigungsanweisung
V bei Taktzyklus 3 ist die nächste
abzurufende sequentielle Anweisung, Anweisung X (siehe 2).
Am Ende von Taktzyklus 6 in 11 wird
die Bedingung falsch aufgelöst.
Da die korrekte Anweisung Anweisung W hätte sein sollen, wird in Taktzyklus
7 Anweisung W abgerufen und die Pipeline stoppt während sie
mit den korrekten Anweisungen gefüllt wird.
-
12 illustriert
eine Tabelle von Steuerwerten für
das Verzweigungssteuerfeld 19 von 1 und die
anwendbaren FÄLLE
1–9, die
zu jedem Steuerwert korrespondieren. Das Verzweigungssteuerfeld 19 ist
Teil eines Programmierermodells für die Datenverarbeitung 10.
Bei der illustrierten Ausführungsform
kann das Verzweigungssteuerfeld 19 durch Einfügen geeigneter
Anweisungen innerhalb der auszuführenden
Anweisungssequenz aktualisiert werden. Dies gestattet effiziente
Nutzung der Verzweigungsvorhersage sowohl bei vorwärts- als
auch bei rückwärtsgerichteter
bedingter Verzweigung sowohl für Vorabruf
als auch bedingte Ausführung.
-
Das
Folgende ist eine Zusammenfassung der Handlungen, die für jeden
Steuerwert in 12 ausgeführt werden:
Wenn das Verzweigungssteuerfeld
000 enthält – Vorabrufvorhersagen
für entweder
vorwärts-
oder rückwärtsgerichtete
Verzweigungen werden nicht durchgeführt, bis die Verzweigungsbedingungen
aufgelöst sind;
wenn
das Verzweigungssteuerfeld 001 enthält – das Ziel einer rückwärtsgerichteten
Verzweigung wird vorabgerufen, wobei es jedoch keine Vorabrufvorhersage
für vorwärtsgerichtete
Verzweigungen gibt;
wenn das Verzweigungssteuerfeld 010 enthält – Vorabruf
des Ziels und Gestattung bedingter Ausführung eines rückwärtsgerichteten
Verzweigungsziels (d.h. "rückwärts wird
genommen" vorhersagen
und Ziel vorabrufen, mit bedingter Ausführung), keine Vorabrufvorhersage
für vorwärtsgerichtete
Verzweigungen;
wenn das Verzweigungssteuerfeld 011 enthält – Zielvorabruf
der rückwärtsgerichteten
Verzweigung (d.h. "genom men" vorhersagen und
Ziel vorabrufen, jedoch keine bedingte Ausführung), sequentielle Anweisung
für vorwärtsgerichtete
Verzweigungen vorabrufen (d.h. "nicht
genommen" vorhersagen,
jedoch keine bedingte Ausführung);
wenn
das Verzweigungssteuerfeld 100 enthält – Ziel beider Verzweigungsrichtungen
vorabrufen (d.h. "genommen" vorhersagen, jedoch
keine bedingte Ausführung);
wenn
das Verzweigungssteuerfeld 101 enthält – Ziel beider Verzweigungsrichtungen
vorabrufen, bedingte Ausführung
vorhergesagter rückwärtsgerichteter Verzweigungen
gestatten (d.h. "genommen" vorhersagen, jedoch
keine bedingte Ausführung
für rückwärtsgerichtete
Verzweigungen);
wenn das Verzweigungssteuerfeld 110 enthält – Ziel beider
Verzweigungsrichtungen vorabrufen, bedingte Ausführung vorhergesagter Verzweigungen
gestatten (d.h. "genommen" vorhersagen und
bedingte Ausführung
für alle
Verzweigungen gestatten); und
wenn das Verzweigungssteuerfeld
111 enthält – Ziel rückwärtsgerichteter
Verzweigung vorabrufen, bedingte Ausführung vorhergesagter rückwärtsgerichteter
Verzweigungen gestatten (d.h. "genommen" vorhersagen und
Ziel vorabrufen, bedingte Ausführung
gestatten), sequentielle Anweisung für vorwärtsgerichtete Verzweigungen
vorabrufen (d.h. "nicht
genommen" vorhersagen,
bedingte Ausführung
gestatten).
-
Durch
unabhängige
Gestattung der Kontrolle über
Vorabruf, Vorhersage und bedingte Ausführung für Verzweigungsanweisungen kann
Verarbeitungszeit effizienter genutzt werden, da Pipeline-Stops
als ein Ergebnis falscher Vorhersagen reduziert werden können.
-
Obgleich
die Erfindung unter Bezugnahme auf spezielle Ausführungsformen
beschrieben und illustriert wurde, ist nicht beabsichtigt, dass
die Erfindung auf diese illustrativen Ausführungsbeispiele limitiert ist.
Der Fachmann wird erkennen, dass Variationen und Modifikationen
durchgeführt
werden können,
ohne sich von der Erfindung zu entfernen. Daher ist beabsichtigt,
innerhalb der Erfindung all solche Variationen und Modifikationen
abzudecken, die in den Umfang der anhängenden Ansprüche fallen.