DE69831370T2 - Verfahren und Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen in einem Datenprozessor - Google Patents

Verfahren und Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen in einem Datenprozessor Download PDF

Info

Publication number
DE69831370T2
DE69831370T2 DE69831370T DE69831370T DE69831370T2 DE 69831370 T2 DE69831370 T2 DE 69831370T2 DE 69831370 T DE69831370 T DE 69831370T DE 69831370 T DE69831370 T DE 69831370T DE 69831370 T2 DE69831370 T2 DE 69831370T2
Authority
DE
Germany
Prior art keywords
instruction
unit
conditional
instructions
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69831370T
Other languages
English (en)
Other versions
DE69831370D1 (de
Inventor
William C. Dripping Springs Texas Moyer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Application granted granted Critical
Publication of DE69831370D1 publication Critical patent/DE69831370D1/de
Publication of DE69831370T2 publication Critical patent/DE69831370T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Description

  • 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.
  • 311 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 112 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 311 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.

Claims (8)

  1. Datenprozessor (10), der eine Mehrzahl von Anweisungen ausführt, einschließlich wenigstens eine Flussänderungsanweisung, umfassend: eine Anweisungsvorabrufeinheit (26) zum sequentiellen Abrufen ausgewählter aus der Mehrzahl von Anweisungen; eine Anweisungsdecodierungseinheit (32), die mit der Anweisungsvorabrufeinheit (26) gekoppelt ist, zum selektiven Decodieren der ausgewählten aus der Mehrzahl von Anweisungen, die von der Anweisungsvorabrufeinheit (26) abgerufen werden; eine Anweisungsausführungseinheit (40), die mit der Anweisungsdecodierungseinheit (32) gekoppelt ist, wobei die Anweisungsausführungseinheit (40) selektiv die Mehrzahl von Anweisungen ausführt, die von der Anweisungsdecodierungseinheit (40) decodiert werden; und dadurch gekennzeichnet, dass weiter umfasst ist: eine Steuereinheit (18), die mit der Anweisungsvorabrufeinheit (26), der Anweisungsdecodierungseinheit (32) und der Anweisungsausführungseinheit (40) gekoppelt ist, wobei die Steuereinheit (18) einen gespeicherten Multibit-Steuerwert aufweist, der die Anweisungsvorabrufeinheit (26) direkt steuert, indem das Vorabrufen weiterer Anweisungen, die der bedingten Flussanweisung folgen, basierend auf ei ner von der bedingten Flussanweisung angezeigten Flussrichtung gesteuert wird.
  2. Datenprozessor (10) von Anspruch 1, wobei die bedingte Flussanweisung eine bedingte Verzweigungsanweisung ist.
  3. Datenprozessor (10) von Anspruch 2, wobei die Anweisungsvorabrufeinheit (26) als Antwort auf das Erkennen der bedingten Verzweigungsanweisung daran gehindert wird, weitere Anweisungen abzurufen, ungeachtet der durch die Erkennung der bedingten Verzweigungsanweisung angezeigten Richtung im Anweisungsfluss.
  4. Datenprozessor (10) von Anspruch 1, wobei der vorbestimmte Zeitraum, in dem der gespeicherte Multibit-Steuerwert die Anweisungsvorabrufeinheit (26) daran hindert, irgendwelche weiteren Anweisungen abzurufen, ein Zeitraum ist, der erforderlich ist, bis eine Bedingung aufgelöst ist, auf der die bedingte Flussanweisung basiert.
  5. Datenprozessor (10) von Anspruch 1, wobei die bedingte Flussanweisung eine Unterbrechungs- oder Sprunganweisung ist.
  6. Datenprozessor (10) von Anspruch 1, wobei die Steuereinheit (18) weiter umfasst: einen codierten Wert für das Steuersignal, bei dem die Anweisungsvorabrufeinheit (26) als Antwort darauf, dass die bedingte Flussanweisung eine erste Richtung des Anweisungsflusses anzeigt, zusätzliche Anweisungen in sequentieller Reihenfolge von der bedingten Flussanweisung an bedingt ausführt, und die Anweisungsvorabrufeinheit (26) als Antwort darauf, dass die bedingte Verzweigungsanweisung eine zweite Richtung des Anweisungsflusses anzeigt, zusätzliche Anweisungen durch Springen zu der vorhergesagten Zielanweisung bedingt ausführt.
  7. Verfahren zum Ausführen einer Anweisungsflussänderung in einem Datenprozessor (10), umfassend die Schritte: sequentielles Abrufen, mittels einer Anweisungsvorabrufeinheit (26), ausgewählter aus einer Mehrzahl von Anweisungen; selektives Decodieren der ausgewählten aus der Mehrzahl von Anweisungen, die abgerufen werden; selektives Ausführen der ausgewählten aus der Mehrzahl von Anweisungen, die decodiert werden; dadurch gekennzeichnet, dass weiter der Schritt umfasst ist: Verwenden eines Multibit-Steuerwertes, der die Anweisungsvorabrufeinheit (26) direkt steuert, indem das Vorabrufen weiterer Anweisungen, die der bedingten Flussanweisung folgen, basierend auf einer von der bedingten Flussanweisung angezeigten Flussrichtung, gesteuert wird.
  8. Verfahren nach Anspruch 7, weiter umfassend ein Erkennen einer bedingten Verzweigungsanweisung, wobei der Steuerwert dazu dient, basierend auf einer Bestimmung, ob eine von der bedingten Flussanweisung geforderte Anweisungsflussänderungsrichtung vorwärts oder rückwärts ist, zu steuern, ob die Anweisungsvorabrufeinheit zu veranlassen ist, zusätzliche Anweisungen abzurufen und in einer sequentiellen Weise bedingt auszuführen oder zusätzliche Anwei sungen abzurufen und durch Springen zu einer vorhergesagten Zielanweisung bedingt auszuführen.
DE69831370T 1997-07-25 1998-06-02 Verfahren und Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen in einem Datenprozessor Expired - Fee Related DE69831370T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US900796 1997-07-25
US08/900,796 US5951678A (en) 1997-07-25 1997-07-25 Method and apparatus for controlling conditional branch execution in a data processor

Publications (2)

Publication Number Publication Date
DE69831370D1 DE69831370D1 (de) 2005-10-06
DE69831370T2 true DE69831370T2 (de) 2006-03-09

Family

ID=25413089

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69831370T Expired - Fee Related DE69831370T2 (de) 1997-07-25 1998-06-02 Verfahren und Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen in einem Datenprozessor

Country Status (5)

Country Link
US (1) US5951678A (de)
EP (1) EP0893756B1 (de)
JP (1) JP3977931B2 (de)
KR (1) KR100570906B1 (de)
DE (1) DE69831370T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1645956A3 (de) 1997-08-29 2008-02-13 Matsushita Electric Industrial Co., Ltd. Anordnung zur Befehlsumwandlung um der Anzahl von Befehlsarten zu reduzieren
US6353880B1 (en) * 1998-07-22 2002-03-05 Scenix Semiconductor, Inc. Four stage pipeline processing for a microcontroller
EP1049100B1 (de) * 1999-04-28 2005-01-19 STMicroelectronics S.r.l. Halbleitervorrichtung mit auswälbarer Anschlussfläche
US6859875B1 (en) * 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US7168005B2 (en) * 2000-09-14 2007-01-23 Cadence Design Systems, Inc. Programable multi-port memory BIST with compact microcode
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US6948054B2 (en) * 2000-11-29 2005-09-20 Lsi Logic Corporation Simple branch prediction and misprediction recovery method
TW477954B (en) * 2000-12-05 2002-03-01 Faraday Tech Corp Memory data accessing architecture and method for a processor
US6957306B2 (en) * 2002-09-09 2005-10-18 Broadcom Corporation System and method for controlling prefetching
US7103757B1 (en) * 2002-10-22 2006-09-05 Lsi Logic Corporation System, circuit, and method for adjusting the prefetch instruction rate of a prefetch unit
US7139902B2 (en) * 2002-10-29 2006-11-21 Broadcom Corporation Implementation of an efficient instruction fetch pipeline utilizing a trace cache
US7140003B2 (en) * 2003-02-14 2006-11-21 International Business Machines Corporation Method and system for specifying sets of instructions for selection by an instruction generator
US7013383B2 (en) * 2003-06-24 2006-03-14 Via-Cyrix, Inc. Apparatus and method for managing a processor pipeline in response to exceptions
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8131984B2 (en) * 2009-02-12 2012-03-06 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
JPH08106387A (ja) * 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
US5701448A (en) * 1995-12-15 1997-12-23 Cyrix Corporation Detecting segment limit violations for branch target when the branch unit does not supply the linear address
US5734881A (en) * 1995-12-15 1998-03-31 Cyrix Corporation Detecting short branches in a prefetch buffer using target location information in a branch target cache

Also Published As

Publication number Publication date
EP0893756B1 (de) 2005-08-31
JPH1196004A (ja) 1999-04-09
US5951678A (en) 1999-09-14
EP0893756A2 (de) 1999-01-27
EP0893756A3 (de) 2000-11-15
KR19990014132A (ko) 1999-02-25
JP3977931B2 (ja) 2007-09-19
KR100570906B1 (ko) 2006-10-24
DE69831370D1 (de) 2005-10-06

Similar Documents

Publication Publication Date Title
DE69831370T2 (de) Verfahren und Vorrichtung zur Steuerung der Ausführung bedingter Verzweigungen in einem Datenprozessor
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE10085375B4 (de) Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer
DE19983517B4 (de) Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69931288T2 (de) Ermittlung der Latenzzeit eines Rechnerspeichers
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69919081T2 (de) Datenprozessor mit Verzweigungssteuerung und -verfahren
DE112004002365T5 (de) Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen
DE112005002173T5 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
KR910014804A (ko) 명령큐 충전 방법
DE4311441C2 (de) Verfahren zum Betreiben eines Mikroprozessors mit einem externen Anschluß
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE19506435A1 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE69632970T2 (de) Mikroprozessor mit reduzierten Programmcodes
DE69728081T2 (de) Verfahren und Schaltkreis zur Steuerung verzögerter Verzweigungsbefehle
DE112006000514T5 (de) CPU-Architektur mit einzelnem Zyklus und geringer Leistungsaufnahme

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: SCHUMACHER & WILLSAU PATENTANWALTSGESELLSCHAFT MBH

8339 Ceased/non-payment of the annual fee