DE3687744T2 - Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem. - Google Patents

Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.

Info

Publication number
DE3687744T2
DE3687744T2 DE8686112337T DE3687744T DE3687744T2 DE 3687744 T2 DE3687744 T2 DE 3687744T2 DE 8686112337 T DE8686112337 T DE 8686112337T DE 3687744 T DE3687744 T DE 3687744T DE 3687744 T2 DE3687744 T2 DE 3687744T2
Authority
DE
Germany
Prior art keywords
branch
function
operand
history table
instruction
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
DE8686112337T
Other languages
English (en)
Other versions
DE3687744D1 (de
Inventor
Philip G Emma
James H Pomerene
Gururaj S Rao
Rudolph N Rechtschaffen
Howard E Sachar
Frank J Sparacio
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3687744D1 publication Critical patent/DE3687744D1/de
Publication of DE3687744T2 publication Critical patent/DE3687744T2/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

  • Die Erfindung liegt im Bereich der Datenverarbeitung und ist speziell auf die Verarbeitung von Verzweigungsbefehlen in einem Rechengerät ausgerichtet.
  • Bei Hochleistungsprozessoren ist es allgemein üblich, einen Befehl in mehrere Schritte zu zerlegen, die jeweils von verschiedenen Schrittverarbeitungseinheiten ausgeführt werden. Jede solche Einheit kann die Fähigkeit haben, einen spezifischen Schritt für aufeinanderfolgende Befehle pro Zyklus anzunehmen. Es ist allgemein üblich, dadurch die aufeinanderfolgenden Schritte bei der Ausführung eines Befehls Zyklus für Zyklus zu überlappen, wobei jeder Folgebefehl sich um jeweils einen Zyklus verschiebt. Im Idealfall ist es hierdurch möglich, einen Befehl pro Zyklus abzuwickeln, obwohl für den Abschluß jedes gegebenen Befehls mehrere Zyklen erforderlich sind.
  • Diese ideale Überlappung ist aus mehreren Gründen manchmal nicht möglich. Ein Hauptgrund ist das häufige Auftreten von Verzweigungsbefehlen. Diese Befehle haben zwei wichtige Attribute: die Verzweigung kann genommen werden oder nicht, wodurch es vorübergehend zu einer Unsicherheit darüber kommt, welcher von zwei Befehlen der nächste ist; wird die Verzweigung dagegen genommen, muß der nächste Befehl von einer Adresse erhalten werden, die normalerweise in der Verzweigung vorgegeben ist.
  • Eine Anzahl von Patenten befaßt sich mit Verzweigungsvorhersagemechanismen, von denen jeder bestimmte Vor- und Nachteile hat. Zum Beispiel wird in der U.S.-Patentschrift 4,370,711 von Smith eine Verzweigungsvorhersagefunktion offenbart, die das Ergebnis eines bedingten Verzweigungsbefehls in einem Rechnersystem voraussagt. Diesem System liegt das Prinzip zugrunde, daß über einen bedingten Verzweigungsbefehl wahrscheinlich in der gleichen Weise entschieden wird, wie über die jüngsten Ausführungen der Befehle.
  • In der U.S.-Patentschrift 4,251,864 von Kindell et al wird eine Verzweigungsvorhersagefunktion zur Manipulation von Signalgruppen offenbart, deren Grenzen nicht mit den Grenzen des Speicherraums der Signalgruppen übereinstimmen. Wird ein Wort, das eine Operandengrenze enthält, zur Zentraleinheit übertragen, werden zusammen mit dem Wort auch nicht zum Operanden gehörende Daten übertragen. Die im Grenzwort vorkommenden nicht zum Operanden gehörenden Daten werden aus der Operanden-Signalgruppe entnommen und in der Zentraleinheit gespeichert. Nach Manipulation des Operanden durch die Zentraleinheit werden die nicht zum Operanden gehörenden Daten wieder in die Grenzworte der vorher eingenommenen Signalposition eingefügt und die Wortgruppe, welche die Manipulation oder den daraus resultierenden Operanden enthält, wird an der Stelle im Speicher gespeichert, aus der sie ursprünglich entnommen wurde.
  • In der U.S.-Patentschrift 3,800,291 von Cocke et al wird ein Verzweigungsvorhersagemechanismus beschrieben, in welchem Verzweigungsbefehle zur Adresse der Information auf derselben Seite oder auf einer anderen Seite verzweigen können. Der Verzweigungsbefehl enthält einen Anzeiger, der angibt, ob es sich bei der Verzweigungsadresse um eine physische Adresse auf derselben oder einer anderen Seite oder um eine virtuelle Adresse auf einer anderen Seite handelt.
  • In der U.S.-Patentschrift 4,181,942 von Forster et al werden ein Programmverzweigungsverfahren und ein Gerät offenbart, in welchem ein in einem Rechensystem verwendeter spezieller Verzweigungsbefehl als eine bedingte Verzweigung oder eine nicht bedingte Verzweigung verwendet wird, je nachdem, wie es der Status eines internen Registers festlegt. Dieser spezielle Verzweigungsbefehl wird zur bedingten Verzweigung innerhalb oder am Ende einer Programmschleife und zur unbedingten Verzweigung außerhalb einer solchen Schleife verwendet.
  • In der U.S.-Patentschrift 3,325,785 von Stephens wird ein Verzweigungsvorhersagemechanismus dargelegt, welcher den Steuerspeicher und seine Zugriffssteuerungen effizient ausnutzt. Eine einfache Strategie für die Abwicklung von Verzweigungen ist die Aussetzung der Überlappung, bis die Verzweigung vollständig abgeschlossen ist: gelöst als angenommen oder nicht angenommen, und wenn angenommen, wird der Zielbefehl aus dem Speicher abgerufen. Diese Strategie hat jedoch mehrere Zyklen pro Verzweigung zur Folge, die der idealen Überlappung verlorengehen. Eine andere Strategie besteht darin, eine feste Auswahl zu treffen, basierend auf der Art der Verzweigung und der statistischen Erfahrung, ob die Verzweigung genommen wird. Wird durch die Auswahl angezeigt, daß die Verzweigung nicht genommen wurde, wird die normale Überlappung auf einer Bedingungsbasis bis zum endgültigen Ergebnis fortgesetzt. Erweist sich die Auswahl als falsch, werden die bedingt eingeleiteten Befehle verlassen und der Zielbefehl abgerufen. Die Zyklen, die den bedingten Befehlen gewidmet wurden, gehen ebenso verloren wie die Zyklen für den Zielabruf. Letzteres wird jedoch häufig durch Vorabruf des Ziels zum Zeitpunkt der Verzweigungsdekodierung vermieden.
  • Die U.S.-Patentschrift 4,435,758 von Lorie et al ist auf Abbildungsprogramme auf einen SIMD-Prozessor (SIMD = single instruction-stream, multiple data-stream = einfacher Befehlsstrom, mehrfacher Datenstrom) ausgerichtet und auf die Sicherstellung eines korrekten und (hoffentlich) effizienten Programmbetriebs in allen Prozessoren. Ein SIMD-Prozessor besteht aus vielen identischen Prozessoren, welche identische Befehlsfolgen auf verschiedenen Datenströmen parallel ausführen. SIMD-Prozessoren bieten eine hohe Leistung bei Anwendungsarten, bei denen es zwischen den verschiedenen Eingabedatenströmen keine Interdependenzen gibt.
  • Die U.S.-Patentschrift 4,477,872 von Losq et al ist auf eine "Dekodier-Geschichtstabelle" ausgerichtet. Hierin wird ein Mechanismus zur Vorhersage der Funktion (nicht jedoch des Ziels) von bedingten Verzweigungen zur Verfügung gestellt. Die Erfindung schließt eine Tabelle mit aus einer Verzweigungsadresse bestehenden Eintragungen ein, sowie ein Bit, welches anzeigt, ob die Verzweigung bei ihrer letzten Ausführung genommen wurde oder nicht. Wenn ein bedingter Verzweigungsbefehl dekodiert wird, wird die Tabelle unter Verwendung der zu dekodierenden Verzweigungsadresse abgesucht. Wird unter dieser Adresse ein Eintrag gefunden, wird das Geschichts-Bit innerhalb des Eintrags verwendet, um vorherzusagen, ob die Verzweigung genommen wird oder nicht. Die Vorhersage ist die, daß für die Verzweigung dieselbe Funktion gültig ist, wie bei ihrer letzten Ausführung.
  • EP-A-0199947 (veröffentlicht am 5. November 1986) mit dem Titel "Pageable Branch History Table", welches auf den Erwerber der vorliegenden Erfindung übertragen wurde, ist auf eine Verzweigungsgeschichtstabelle (branch history table = BHT) ausgerichtet, die durch Unterteilung in zwei Teile wesentlich verbessert wurde: einen aktiven Bereich und einen Sicherungsbereich. Der aktive Bereich enthält Eintragungen für eine kleine Anzahl von Verzweigungen, die der Prozessor in unmittelbarer Zukunft antreffen kann, und der Sicherungsbereich enthält alle anderen Verzweigungseinträge. Es werden Mittel zur Verfügung gestellt, die Einträge vom Sicherungsbereich in den aktiven Bereich bringen, und zwar bevor der Prozessor diese Eintragungen verwenden wird. Werden Eintragungen nicht länger benötigt, werden sie aus dem aktiven Bereich herausgenommen und in den Sicherungsbereich gegeben, falls sie sich dort nicht bereits befinden. Neue Eintragungen für die nahe Zukunft werden hereingebracht, so daß der aktive Bereich, obwohl er klein ist, fast immer die Verzweigungsinformation enthält, die vom Prozessor benötigt wird. Da der aktive Bereich klein ist, kann er schnell und innerhalb der Prozessor- Anordnung optimal plaziert sein. Der Sicherungsbereich kann außerhalb des kritischen Teils der Anordnung untergebracht sein und kann daher größer gemacht werden, als für eine Standard-BHT normalerweise praktikabel wäre.
  • Eine weitere Strategie wird in der U.S.-Patentschrift 3,559,183 von Sussenguth ausgestaltet, dieses Patent wurde an den Erwerber der vorliegenden Erfindung übertragen. Es basiert auf der Beobachtung, daß die meisten Verzweigungen, einzeln betrachtet, übereinstimmend entweder genommen oder nicht genommen werden, und, wenn sie genommen werden, eine gemeinsame Zieladresse haben. In dieser Strategie wird eine Tabelle der genommenen Verzweigungen aufgebaut. Jeder Eintrag in der Tabelle besteht aus der Adresse der genommenen Verzweigung, gefolgt von der Zieladresse der Verzweigung. Diese Tabelle ist ein Hardware-Konstrukt und hat daher eine vorbestimmte Größe, normalerweise zwischen 1024 und 4096 Eintragungen. Eintragungen werden nur für genommene Verzweigungen gemacht, wenn sie angetroffen werden. Ist die Tabelle voll, ist für einen neuen Eintrag die Verlagerung eines älteren Eintrags erforderlich. Dies kann, wie bei Cache-Speichern, auf LRU-Basis (LRU = Least Recently Used = am längsten nicht benutzt) durchgeführt werden.
  • Im Prinzip wird jede Verzweigung im auszuführenden Befehlsstrom in der Tabelle anhand ihrer Adresse nachgeschlagen, und wenn sie gefunden wird, wird ihr Ziel abgerufen und wird zum nächsten Befehl im Strom. Befindet sich die Verzweigung nicht in der Tabelle, wird angenommen, daß sie nicht genommen wurde. Alle auf der Tabelle basierenden Funktionen werden während der Befehlsausführung überprüft. Wird festgestellt, daß die Tabelle falsch ist, werden Korrekturen vorgenommen.
  • Wird die Verzweigung, deren Annahme vorausgesagt wurde, nicht genommen, wird der Tabelleneintrag gelöscht. Wird eine Verzweigung, deren Nichtannahme vorausgesagt wurde, genommen, wird für sie ein neuer Eintrag vorgenommen. Ist die vorhergesagte Zieladresse falsch, wird die korrigierte Adresse eingetragen.
  • In der Praxis werden die oben beschriebenen Vorgänge leicht modifiziert. Es ist wünschenswert, genommene Verzweigungen früh genug zu finden, so daß das Ziel abgerufen werden kann, bevor oder wenigstens sobald es benötigt wird, so daß es zu keiner Verzögerung im Fließband kommt. Diese Bedingung wird normalerweise nicht erfüllt, wenn auf die Tabelle erst nach Lokalisierung und Identifizierung einer Verzweigung zugegriffen wird. Daher wird die Tabelle normalerweise auf der Basis des Befehlsabrufpakets der Maschine organisiert und adressiert. Üblicherweise handelt es sich bei diesem Paket um ein Doppelwort (DW). Das praktische Vorgehen ist dann wie folgt. Wenn die Maschine ein Doppelwort in ihren Befehlspuffer abruft, wird auch die DW-Adresse an die Tabelle weitergegeben. Existiert ein Eintrag, wird das Ziel (DW) abgerufen, sobald es die Cache-Priorität zuläßt. Dieses Ziel-Doppelwort wird wiederum an die Tabelle weitergegeben, wodurch der Prozeß fortgesetzt wird.
  • Mechanismen von Verzweigungsgeschichtstabellen (BHT) werden auch im IBM Technical Disclosure Bulletin, Band 28, Nr. 4, September 1985, Seite 1723-1724, New York, USA, und im IBM Technical Disclosure Bulletin, Band 28, Nr. 5, Oktober 1985, Seite 2255-2262, New York, USA, beschrieben. Im zuerst genannten Bulletin werden Erweiterungen der BHT vorgeschlagen, die es ermöglichen, einen Operanden, der einem gegebenen Befehl zugeordnet ist, zu identifizieren, um datenabhängige Verzweigungsbefehle abzuwickeln. Das zuletzt genannte Bulletin beschreibt die Verwendung eines Byte-Puffers zusätzlich zur BHT, in welchem den Operanden zugeordnete Informationen gespeichert sind. Bei bestimmten Verzweigungsbefehlen muß auf diese zweite Tabelle Bezug genommen werden, um eine Voraussage über die Verzweigungsfunktion zu erhalten.
  • Der oben beschriebene bisherige Stand der Technik wird als Verzweigungsgeschichtstabelle (BHT) bezeichnet und wickelt einen großen Teil der Verzweigungen mit Erfolg ab; es kommt jedoch zu einem Verlust von mehreren Zyklen, wenn die Verzweigung falsch war. Bei zweckmäßigen Tabellengrößen (etwa 256 Einträge oder etwa 2 K-Bytes) wird der erzielte Vorteil durch diesen Verlust nahezu wieder aufgehoben. Obwohl eine größere Tabelle (4K Eintragungen oder etwa 32 K-Bytes) den Prozentsatz der falschen Voraussagen und damit den Verlust verringern würde, liegt hierbei das Problem darin, daß die Tabellen-Hardware in den geschwindigkeitskritischen Befehlsabruf- und -vorbereitungsbereich der Maschine gepackt werden muß. Es wäre wichtig, die Tabellen-Hardware in diesem Bereich eher zu reduzieren, als zu erhöhen, denn je mehr Hardware in den Bereich hineingepackt werden muß, desto länger sind die Verdrahtungsabstände und desto größer ist die Anzahl der logischen Verzögerungen, mit denen in den kritischen Pfaden, welche die Zykluszeit bestimmen, gerechnet werden muß. Diese würden natürlich die Zykluszeit verlängern und eine längere Zyklus zeit verlangsamt konstant die Geschwindigkeit der Maschine. Wenige organisatorische Verbesserungen, die BHT eingeschlossen, reichen aus, um einen großen Teil der durch sie verursachten verlängerten Zyklus zeit wieder auszugleichen. Man hat daher nach Verbesserungen gesucht, durch die der kritische Bereich nicht mit noch mehr Hardware belastet wird.
  • Es ist ein Ziel der Erfindung, einen verbesserten Vorhersagemechanismus für Verzweigungsbefehle zur Verfügung zu stellen.
  • Es ist ein weiteres Ziel der Erfindung, einen verbesserten Vorhersagemechanismus für Verzweigungsbefehle zur Verfügung zu stellen, in welchem eine datenabhängige Verzweigungstabelle in Verbindung mit einer Verzweigungsgeschichtstabelle verwendet wird.
  • Ein weiteres Ziel der Erfindung ist es, einen verbesserten Vorhersagemechanismus für Verzweigungsbefehle zur Verfügung zu stellen, in welchem eine datenabhängige Verzweigungsgeschichtstabelle verwendet wird, die auf diejenigen Operanden reagiert, die geprüft werden, um die Resultate der Verzweigungsfunktionen zu bestimmen. Die datenabhängige Verzweigungstabelle arbeitet in Verbindung mit einer Verzweigungsgeschichtstabelle, um diejenigen Fälle im voraus zu erkennen, in denen die Verzweigungsgeschichtstabelle eine falsche Voraussage macht, und enthält Mittel zur Korrektur der Verzweigungsgeschichtstabelle, bevor die eigentliche Voraussage gemacht wird.
  • Gemäß der vorliegenden Erfindung wird, gemäß den Ansprüchen, eine datenabhängige Verzweigungstabelle (DDBT) beschrieben, die auf diejenigen Operanden reagiert, die geprüft werden, um die Resultate der Verzweigung zu bestimmen. Die DDBT arbeitet mit der Verzweigungsgeschichtstabelle (BHT) zusammen, und:
  • (1) enthält einen Eintrag für jedes zugehörige Byte, bestehend aus:
  • (a) der Adresse des Bytes,
  • (b) der Adresse des Verzweigungsbefehls, dessen Funktion durch das Byte festgelegt wird;
  • (c) der Zieladresse der Verzweigung, für den Fall, daß die Verzweigung genommen wird,
  • (d) einer Codierung, die ein Mittel zur Prüfung des zugehörigen Bytes festlegt, um für eine bestimmte Verzweigung die Verzweigungsfunktion festzustellen,
  • (e) einem Funktionsbit, welches das Resultat der Verzweigungsprüfung in bezug auf das letzte Vorkommen des zugehörigen Bytes festlegt;
  • (2) wird von jeder Speicheroperation abgesucht, um festzustellen, ob (durch eine Übereinstimmung im Vergleich mit (a)) die Speicherung für eines der Bytes in der Tabelle erfolgte oder nicht, und wenn eine Übereinstimmung gefunden wurde:
  • (3) fähig ist, das nächste Verzweigungsresultat zu erzeugen, durch Verwendung von (d) in Verbindung mit dem neuen Vorkommen des zu speichernden Bytes und durch Vergleichen des neuen Resultats mit (e);
  • (4) in der Lage ist, festzustellen, ob die nächste Ausführung der durch (b) vorgegebenen Verzweigung, sollte diese stattfinden, dieselbe Funktion wie die vorhergehende Ausführung hat, und wenn nicht,
  • (5) Eintragung in die BHT oder Löschen eines Eintrags aus der BHT (je nachdem, was gefordert ist), unter Verwendung von
  • (b) und (c), so daß beim nächsten Vorkommen der Verzweigung die BHT eine korrekte Voraussage macht.
  • Die Erfindung, die in den beiliegenden Ansprüchen definiert wird, wird nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen ausführlich beschrieben; es zeigt:
  • Fig. 1, bestehend aus Fig. 1A und 1B, in der Ansicht mit Fig. 1A oben und Fig. 1B unten, eine Darstellung der Aktualisierungslogik der Verzweigungsgeschichtstabelle als Blockdiagramm;
  • Fig. 2, bestehend aus Fig. 2A und 2B, in der Ansicht mit Fig. 2A oben und Fig. 2B unten, eine Darstellung der datenabhängigen Verzweigungstabellenlogik in Form eines Blockdiagramms, welches veranschaulicht, wie Operanden für die Prüfung vorbereitet werden;
  • Fig. 3, in Form eines Blockdiagramms, eine Darstellung der Logik, welche bestimmt, ob eine Aktualisierung der Verzweigungsgeschichtstabelle erforderlich ist;
  • Fig. 4, in Form eines Blockdiagramms, eine Darstellung der Logik, welche bestimmt, wie Einträge in der Aktualisierungswarteschlange der Verzweigungsgeschichtstabelle für die Logik der Verzweigungsgeschichtstabelle verfügbar gemacht werden;
  • Fig. 5, in Form eines Blockdiagramms, eine Darstellung der Logik zur Vorbereitung von Einträgen für die datenabhängige Verzweigungstabelle; und
  • Fig. 6, bestehend aus Fig. 6A und 6B, in der Ansicht mit Fig. 6A oben und Fig. 6B unten, eine Darstellung der Logik, die zur Aktualisierung der datenabhängigen Verzweigungstabellen- Matrizen verwendet wird, in Form eines Blockdiagramms.
  • Gemäß der vorliegenden Erfindung wird eine datenabhängige Verzweigungstabelle dargelegt, die auf diejenigen Operanden anspricht, die geprüft werden, um die Resultate der Verzweigungsfunktion zu bestimmen. Die datenabhängige Verzweigungstabelle arbeitet in Verbindung mit einer Verzweigungsgeschichtstabelle, um diejenigen Fälle vorauszusehen, in denen die Verzweigungsgeschichtstabelle eine falsche Vorhersage macht, und enthält Mittel zur Korrektur der Verzweigungsgeschichtstabelle, bevor die tatsächliche Vorhersage gemacht wird.
  • Eine Verzweigungsgeschichtstabelle (BHT) wird verwendet, um die Resultate von Verzweigungen vorauszusagen, indem vorausberechnet wird, daß das folgende Resultat einer beliebigen gegebenen Verzweigung dasselbe ist, wie das aktuelle Resultat dieser Verzweigung. Die Grund-BHT enthält Eintragungspaare, die aus der Adresse des Verzweigungsbefehls und des Zielbefehls für alle genommenen Verzweigungen bestehen. Somit wird bei einem BHT-Treffer die Annahme impliziert, daß die Adresse, die den Treffer verursachte, die Adresse einer genommenen Verzweigung ist.
  • Da viele Verzweigungen bei nachfolgenden Ausführungen die Funktion verändern, muß die BHT in diesem Falle so aktualisiert werden, daß neue Voraussagen darin wiedergegeben werden. Mit Aktualisierung ist gemeint, daß für nicht genommene Verzweigungen, bei denen jedoch vorausgesagt wurde, daß sie genommen werden, die zugehörigen Eintragungen aus der BHT herausgenommen werden sollten, und daß bei genommenen Verzweigungen, die verfehlt wurden, Eintragungen in die BHT eingefügt werden sollten.
  • Alle Verzweigungen, die ihre Funktion verändern, sind bedingte Verzweigungen, wobei die Änderung der Funktion von den Daten verursacht wird, die angeben, daß der Bedingungscode sich verändert hat. Gemäß der vorliegenden Erfindung wird eine datenabhängige Verzweigungstabelle (DDBT) beschrieben, welche Speicherungen von zugehörigen Daten überwacht und die BHT aktualisiert für den Fall, daß eine solche Speicherung bewirkt, daß eine abhängige Verzweigung ihre Funktion ändert.
  • Nachfolgend soll eine besondere Implementierung beschrieben werden, die mit der BHT über einen Mechanismus locker gekoppelt ist, der die BHT bei einer falschen Verzweigungsvorhersage aktualisiert. Somit kann diese besondere Implementierung an eine Standard-BHT angehängt werden, ohne daß die BHT umstrukturiert werden müßte, und mit sehr geringen Veränderungen der bestehenden Steuerungsschaltungen.
  • Zunächst soll zum besseren Verständnis der Darstellung ein mögliches BHT-Aktualisierungsschema beschrieben werden. Danach soll die DDBT beschrieben werden, sowie ein Verfahren, um diese durch eine Aktualisierungs-Hardware an die BHT zu koppeln. Schließlich wird dargestellt, wie Einträge in die DDBT eingefügt und daraus gelöscht werden.
  • Fig. 1 zeigt eine Implementierung der BHT-Aktualisierungs- Hardware. Wenn eine BHT 2 einen Treffer hat, sendet sie über die Leitungen 6 bzw. 8 die Verzweigungsadresse (BA) und die Zieladresse (TA) zu einem Speicher-Cache und einer CPU 4, so daß der Befehlsabruf umgeleitet werden kann, nachdem die Verzweigung abgerufen wurde. Das BA-TA-Paar wird über die Leitungen 12 bzw. 14 auch an eine Verzweigung-Aktiv-Warteschlange (BAQ) 10 weitergegeben. Die BAQ 10 enthält BA-TA- Paare für alle BHT-Treffer, die bisher noch nicht durch eine Endop-Anweisung bestätigt wurden. Die BAQ 10 hat zwei Funktionen; einmal werden Einträge in der Warteschlange zur Ausrichtung und Auswahl von Befehlen aus dem Befehlspuffer verwendet, der im Speicher-Cache und in der CPU 4 enthalten ist, und zum anderen werden Eintragungen in der Warteschlange mit Verzweigungen verglichen, die eine Endop-Anweisung erhalten, um zu beurteilen, ob die BHT 2 aktualisiert werden muß oder nicht.
  • Zu dem Zeitpunkt, an dem eine Verzweigung in Einheit 4 die Endop-Anweisung erhält, werden die Verzweigungsadresse (BA) und die Zieladresse (TA) für die Verzweigung, sowie ein Action-Bit, welches festlegt, ob die Verzweigung genommen wurde oder nicht, über die Leitungen 18, 20 bzw. 22 an ein Verzweigungs-Endop-Register (BER) 16 weitergegeben. Da jede ausgeführte Verzweigung das Register 16 durchläuft und nur Verzweigungen, die als genommen vorhergesagt wurden, durch die BAQ 10 laufen, stimmt bei einem Vergleich der BA-Eintrag des BER 16 nur dann mit dem BA-Eintrag der BAQ 10 überein, wenn die betreffende Verzweigung als genommen vorhergesagt wurde. Dieser Vergleich wird von einem Komparator 24 durchgeführt, der den Eintrag für den Stapelanfang (TOS) auf Leitung 26 mit dem BER-Eintrag auf Leitung 28 vergleicht. Ergibt der Vergleich eine Übereinstimmung, wird das Action-Bit auf Leitung 30 vom DER 16 verwendet, um die Funktionsvoraussage für "genommen" zu überprüfen. Bei genommenen Verzweigungen, bei denen dies auch vorausgesagt wurde, wird die Zieladresse vom Komparator 32 geprüft, um festzustellen, ob die BHT 2 das richtige Ziel vorausgesagt hatte, sowie auch durch Vergleich der TA auf Leitung 34 von der BAQ 10 und der TA auf Leitung 36 vom BER 16.
  • Der Dekodierer 38 nimmt das Action-Bit auf Leitung 30 vom BER 16 sowie die Ergebnisse der beiden Vergleiche von den Komparatoren 24 und 32, um vier wichtige Bedingungen zu bestimmen. Entspricht die BA der BAQ 10 der BA des BER 16, was durch die ODER-Schaltung 40 geprüft wird, kann der Stapelanfang der BAQ verworfen werden, das heißt, der Eintrag entspricht einer Verzweigung, die als genommen vorausgesagt wurde, die jedoch eine Endop-Anweisung erhielt. Wurde jedoch die betreffende Verzweigung nicht genommen, dann muß der BHT- Eintrag, wie auch auf Leitung 42 angezeigt wird, gelöscht werden, oder, wenn die betreffende Verzweigung zu einem anderen Ziel geführt wurde, muß die BHT entsprechend den Angaben auf Leitung 44 modifiziert werden, um die korrekte Zieladresse wiederzugeben. Entspricht die BA der BAQ 10 nicht der BA des BER 16, so entspricht dies einem BHT-Fehlversuch. Für den Fall, daß die Verzweigung genommen wurde, muß eine neue Eintragung, entsprechend Leitung 46, in die BHT eingefügt werden.
  • Die ODER-Schaltung 48 identifiziert diejenigen Fälle, bei denen die Einfügung eines Eintrags in die BHT, das Löschen eines Eintrags aus der BHT oder die Modifizierung eines vorhandenen Eintrags in der BHT erforderlich sind. Die ODER- Schaltung 48 bewirkt, daß das BA-TA-Paar auf den Leitungen 50 bzw. 52 vom BER 16 durch die Ausgabe des ODER-Gatters 48 auf Leitung 54 in die BHT-Korrekturwarteschlange (BCQ) 56 eingegeben wird, zusammen mit einer Kodierung der entsprechenden Korrektur in Netz 58, die durchgeführt werden muß. Eintragungen in der BCQ 56 entsprechen noch anstehenden Aktualisierungen, die in der BHT 2 durchgeführt werden müssen. Diese Aktualisierungen werden von einer Korrektursteuerschaltung 60 durchgeführt, die hierdurch Eintragungen in der BCQ 56 zurückzieht und die BHT 2 über die Leitung 62 aktualisiert.
  • Die datenabhängige Verzweigungstabelle (DDBT) ist eine Tabelle mit Einträgen, von denen jeder sechs Felder umfaßt. Diese Einträge sind für eine Teilmenge der Einträge in der BHT 2 relevant und dienen zur Aktualisierung der BHT 2 für den Fall, daß ein Prüfoperand, der eine Verzweigung festlegt, verändert wird. Die Felder in jedem Eintrag sind folgende:
  • (1) OADDR - die Adresse des Operanden, der geprüft wird,
  • (2) BADDR - die Adresse der Verzweigung, die von dem durch OADDR vorgegebenen Operanden abhängt,
  • (3) TADDR - die Adresse des Ziels zu dem durch BADDR vorgegebenen Verzweigungsbefehl,
  • (4) TEST - eine Kodierung, die die Art und Weise vorschreibt, nach der der durch OADDR vorgegebenen Operand geprüft wird, um das Resultat der durch BADDR vorgegebenen Verzweigung zu bestimmen,
  • (5) ACTION (FUNKTION) - ein Bit, das vorschreibt, ob die durch BADDR vorgegebene Verzweigung bei ihrer letzten Ausführung genommen wurde oder nicht, und
  • (6) V - ein Gültigkeits-Bit, welches bedeutet, daß der Eintrag kein Null-Eintrag ist.
  • Die Tabelle kann in jeder beliebigen geeigneten Weise organisiert werden. Die hierin vorgeschriebene Art und Weise wurde nur zur Veranschaulichung ausgewählt, sie soll die Variationsbreite der Erfindung in keiner Weise einschränken.
  • Zum Zwecke der Beschreibung wurden die verschiedenen berücksichtigten Operandenprüfungen auf Befehle im Speicher- und Direktformat (SI) beschränkt, die den Bedingungscode setzen, das heißt, TM, CLI, NI, OI und XI. Diese Beschränkung wurde wiederum zur Vereinfachung der Darstellung ausgewählt und soll keinesfalls den Anwendungsbereich für diese Erfindung einschränken. Diese Befehle prüfen Einzel-Byte-Operanden im Speicher und die DDBT enthält Einträge für diese Bytes. Immer wenn ein Eintrag aus dem Puffer für anstehende Speicherungen freigegeben wird, wird die Adresse des Eintrags verwendet, um die DDBT abzusuchen und zu prüfen, ob es sich bei dem zu speichernden Operanden um ein Prüfbyte handelt. Wird festgestellt, daß dies der Fall ist, wird das zu speichernde Byte in der durch TEST vorgeschriebenen Weise geprüft, um festzustellen, ob die BHT in Erwartung einer nachfolgenden, auf dem Byte basierenden Verzweigungsfunktion aktualisiert werden sollte.
  • Fig. 2 zeigt eine DDBT 64 und die Art und Weise, in der Operanden für die Prüfung vorbereitet werden. Wird eine Speicheraufforderung aus dem Puffer für anstehende Speicherungen freigegeben (nicht dargestellt), wird sie in einer Kandidaten-Operanden-Warteschlange (COQ) 66 plaziert. Die COQ 66 ist kennzeichnend für die DDBT 64 und dient als ein temporärer Puffer, der Operanden hält, die in der DDBT 64 vorhanden sein dürfen. Die DDBT 64 ist mit 128 Einträgen dargestellt und ist organisiert als assoziative Tabelle mit 32-mal-4 Wegegruppen. Die niederwertigen 5 Bits der Operanden-Adresse von der COQ 66 dienen zum Lesen eines Eintrags aus jeder Gruppe. Da jeder spezifische Operand mehr als eine Verzweigung betreffen kann, können für jeden gegebenen Operanden mehrfache Einträge vorhanden sein. Um dies zu ermöglichen, werden die niederwertigen 2 Bits der Halbwortadresse BADDR (Bits 21 und 22) dazu verwendet, die Gruppe zu bestimmen, wie ausführlicher in Fig. 3 und Fig. 6 dargestellt ist. Obwohl für diese besondere Organisation kein DDBT-Verzeichnis erforderlich ist, ist eine mögliche Alternative eine Variation dieses Schemas, in welcher ein LRU-Replacement ermöglicht wird.
  • Die vier Einträge von der DDBT-Matrix 64 werden in temporäre Puffer 68, 70, 72 und 74 geladen. Die OADDR-Felder aus jedem dieser Einträge bestehen tatsächlich aus den Bits 0 bis 18 der Operanden-Adressen. Dies ist deswegen der Fall, weil die Bits 19 bis 23 in der Kongruenz-Klasse mit eingeschlossen sind. Daher werden die Bits O bis 18 des Eintrags in der COQ 66 mit den OADDR-Feldern in jedem der vier Kandidaten- Gruppeneinträge verglichen, um festzustellen, ob einer dieser Kandidaten tatsächlich durch den COQ-Eintrag vorgegeben wurde. Die Vergleiche werden durch die Komparatoren 76, 78, 80 und 82 ausgeführt. Eine weitere Rasterung wird durch die UND-Schaltungen 84, 86, 88 und 90 erreicht, um sicherzustellen, daß das Gültig-Bit für die übereinstimmenden Kandidaten gesetzt ist.
  • Wenn keine gültigen Kandidaten mit der OADDR von der COQ 66 übereinstimmen, wie durch die NOR-Schaltung 92 in Antwort auf die Ausgaben von den UND-Schaltungen 84, 86, 88 und 90 festgelegt wird, wird dieses Resultat durch die ODER-Schaltung 94 über die Leitung 96 an die COQ 66 übermittelt und der Stapelanfangs-Eintrag (TOS) wird verworfen. Werden jedoch gültige übereinstimmende Kandidaten gefunden, so werden sie durch einen Selektor 98 geschaltet. Die Durchschaltung wird durch einen Zwei-Bit-Zähler 100 ausgeführt, der jeden Eintrag nach Gruppe abfragt und nur diejenigen Einträge weitergibt, die gültig sind und in Antwort auf das PUSH-Signal auf die Warteschlange für anstehende Prüfungen (PTQ) 102 passen. Das Signal 104 entspricht den Ausgaben der UND-Schaltungen 84, 86, 88 und 90, je nachdem, welche Gruppe gerade abgefragt wird.
  • Wenn alle vier Gruppen abgefragt sind und der Zähler 100 zum Status NULL zurückkehrt, bewirkt die ODER-Schaltung 94, daß der TOS-Eintrag auf der COQ 66 verworfen wird, und der oben beschriebene Prozeß wird für den nächsten Kandidaten-Eintrag wiederholt. Die PTQ 102 ist eine Warteschlange aller Prüfungen, die durchgeführt werden müssen, um festzustellen, ob die BHT aktualisiert werden soll oder nicht. Hierbei ist zu beachten, daß, wenn ein Eintrag in die PTQ 102 eingegeben wird, er zusammen mit dem zu prüfenden Operanden (von der COQ 66) eingegeben wird, sowie mit den niederwertigen fünf Bits der Operanden-Adresse (dem DDBT-Indexfeld). Der DDBT-Index dient zur Aktualisierung der DDBT, wenn das Resultat der Prüfung anders ausfällt, als das durch das ACTION-Bit vorgegebene.
  • Fig. 3 demonstriert, wie Einträge in einer Warteschlange für anstehende Prüfungen (PTQ) 102 geprüft werden, um festzustellen, ob eine Aktualisierung der BHT erforderlich ist. Da dieses besondere Ausführungsbeispiel die Prüfungen auf die Befehle TM, CLI, NI, OI und XI begrenzt, besteht das TEST-Feld im PTQ-Eintrag aus drei Teilfeldern, wie in dem vergrößerten TEST-Feld 108 dargestellt ist. Es ist zu beachten, daß in anderen möglichen Implementierungen, in denen mehr Prüfbefehle implementiert werden, das TEST-Feld 108 ein etwas anderes Format haben kann, und daß das hier dargestellte besondere Format willkürlich ausgewählt wurde. Da diese fünf Befehle mit einem Speicheroperanden (im OPERAND-Feld 110 der PTQ 102) und mit einem Direkt-Operanden (innerhalb der Befehlsformate von TM, CLI, Ni, OI und XI) arbeiten, muß das TEST-Feld der PTQ 102 ein Teilfeld enthalten, wie auf Leitung 112 angegeben, in welchem der Direkt-Operand vorgegeben wird. Hierfür sind acht Bits erforderlich. Da es fünf mögliche Prüfbefehle gibt, wird ein Drei-Bit-Teilfeld des TEST-Felds verwendet, wie auf Leitung 114 angegeben, das eine Codierung der durchzuführenden Prüfung enthält. Da die betreffende Operation verwendet wird, um einen Bedingungscode zu setzen, der im Vergleich mit einem durch den jeweiligen Verzweigungsbefehl vorgegebenen Maskenfeld geprüft wird, muß das Maskenfeld des Bedingungscodes, wie auf Leitung 116 angezeigt, auch als ein Teilfeld im TEST-Feld enthalten sein.
  • Zu Beginn eines Prüfzyklus wird das Operations-Teilfeld 114 das TEST-Felds 108 des in der PTQ 102 vorne liegenden Eintrags durch einen Dekodierer 118 dekodiert. Der Dekodierer 118 liefert auf Leitung 120 Steuereingaben an eine arithmetische Acht-Bit-Logikeinheit (ALU) 122. Die ALU führt die betreffenden Operationen mit den Eingaben 110 und 112 durch und gibt einen Vier-Bit-Bedingungscode (CC) auf Leitung 124 aus, der das Ergebnis dieser Operation in der CPU wäre. Die Bedingungscode-Ausgabe 124 wird von einem Komparator 126 mit dem Bedingungscode-Maskenfeld 116 verglichen, um festzustellen, wie das Verzweigungsresultat auf Leitung 128 wäre. Dieses Resultat auf Leitung 128, das von der Prüfschaltung berechnet wurde, wird dann von einem Zwei-Bit-Dekodierer 131 mit dem ACTION-Bit auf Leitung 130 verglichen. Dadurch, daß durch das ACTION-Bit 130 angezeigt wird, ob die Verzweigung bei ihrer letzten Ausführung genommen wurde oder nicht, und das Prüfausgabe-Bit 128 anzeigt, ob die Verzweigung bei ihrer nächsten Ausführung genommen wird oder nicht, kann der Dekodierer 131 zwei Fälle feststellen, bei denen eine Modifizierung der BHT erforderlich ist.
  • Wenn durch ACTION 130 vorgegeben wird, daß die Verzweigung bei ihrer letzten Ausführung genommen wurde, und die Prüfausgabe 128 vorgibt, daß die Verzweigung nachfolgend nicht genommen wird, dann ist bekannt, daß der BHT-Eintrag für diese Verzweigung entsprechend den Angaben auf Leitung 132 zu löschen ist. Wenn das ACTION-Bit 130 vorgibt, daß die Verzweigung bei ihrer letzten Ausführung nicht genommen wurde, und die Prüfausgabe 128 vorgibt, daß die Verzweigung nachfolgend genommen wird, dann ist bekannt, daß ein neuer BHT-Eintrag für diese Verzweigung gemäß den Angaben auf Leitung 134 eingefügt werden soll. Die ODER-Schaltung 136 erkennt jeden dieser Fälle und gibt die betreffende Information über die Leitung 140 an die BHT-Aktualisierungswarteschlange (BUQ) 138 und über die Leitung 144 an die DDBT-Korrekturwarteschlange (DCQ) 142 weiter.
  • Einträge in die BUQ 138 stellen Aktualisierungen dar, die in der BHT durchgeführt werden müssen. Diese Einträge bestehen aus der Adresse der Verzweigung, für die die Aktualisierung relevant ist (BADDR), der Zieladresse dieser Verzweigung (TADDR) und der Art der Aktualisierung (das heißt Einfügen oder Löschen). Einträge in der DCQ 142 stellen Aktualisierungen dar, die in der DDBT durchzuführen sind, das heißt, das Action-Bit des betreffenden DDBT-Eintrags muß geändert werden. Diese Einträge bestehen aus dem neuen Funktionsbit 128, dem DDBT-Index auf Leitung 146 von der PTQ 102 (welcher die Kongruenzklasse des DDBT-Eintrags identifiziert) und dem Gruppen-ID auf Leitung 148 von der PTQ 102, bei dem es sich um die Bits 21 und 22 des BADDR-Felds des PTQ-Eintrags handelt. Der Gruppen-ID auf Leitung 148 kennzeichnet die Gruppe, in die der zu modifizierende DDBT-Eintrag abzubilden ist.
  • Fig. 4 zeigt, wie Einträge in der BUQ 138 für die BHT- Aktualisierungs-Hardware verfügbar gemacht werden. Fig. 4 stellt die Gesamtmenge der Modifizierungen dar, die bei Fig. 1 erforderlich sind, um dem DDBT-Mechanismus die Unterstützung der BHT zu ermöglichen. Bezugnehmend auf Fig. 1 müssen alle Eingabeleitungen zur BCQ 56 abgeschnitten und zu Fig. 4 gelegt werden. Hierzu gehören die Leitungen 50 und 52 vom BER 16, die Leitungen 42, 44 und 46 vom Dekodierer 38 und die Leitung 54 von der ODER-Schaltung 48. Wenn wir uns nun der Fig. 4 zuwenden, sind all diese Leitungen, mit Ausnahme der Leitung 54, Eingaben an eine Datenselektorschaltung 150 und Leitung 54 dient zur Auswahl dieser Eingaben anstelle der Eingaben von einer BUQ 138.
  • Man beachte, daß auf der rechten Seite des Selektors 150 als ein Gegenstück zum MODIFY-Signal 44 eine "0"-Eingabe 154 erforderlich ist, da Einträge in die BUQ 138 nur zu Einfügungen oder Löschungen gehören. Es ist außerdem zu beachten, daß die Leitung 54 die linken Eingaben bevorzugt, so daß Einträge von der BUQ 138 nur durchgeschaltet werden, wenn kein Eintrag in der BAQ 10 der Fig. 1 mehr aussteht. Diese bevorzugte Behandlung wird willkürlich gegeben, sie hat jedoch den Vorteil, daß die Schaltung, welche Informationen aus der BAQ 10 herausholt, nicht modifiziert werden muß.
  • Ein Statussteuersignal auf Leitung 156 aus dem BUQ-Leer-Netz 158 wird mit dem PUSH-Signal auf Leitung 54 in der NOR-Schaltung 160 verbunden, um den obersten Eintrag in der BUQ 138 auszuwählen. Das Ausgabesignal 162 von Gatter 160 wird mit dem Signal 54 in der ODER-Schaltung 164 verbunden, um den ausgewählten Eingabeeintrag über die Leitung 168 in die BHT- Korrekturschlange (BCQ) 56 einzugeben. Stammt die ausgewählte Eingabe von der BUQ 138, wird das Signal auf Leitung 170 dazu verwendet, nach der Eingabe in die BCQ 56 über die Leitung 168 Informationen aus der BUQ 138 zu entnehmen. Einträge in der BCQ 56 dienen zur Modifizierung der BHT in der oben beschriebenen Weise.
  • Fig. 5 zeigt, wie Einträge in der BHT, die aus der DDBT Nutzen ziehen können, gekennzeichnet werden können, und wie entsprechende DDBT-Einträge assimiliert und in die DDBT- Aktualisierungswarteschlange (DUQ) 172 plaziert werden können. Dies kann durch die Endop-Warteschlange 173 des Prozessors erreicht werden. Es handelt sich hierbei um eine Warteschlange, die intern für den Prozessor geführt wird und ihre Einträge sind Aufzeichnungen aller Befehle, die dekodiert wurden, für die jedoch noch keine Endop-Anweisung gegeben wurde. Viele Prozessoren verfügen bereits über eine solche Warteschlange, so daß für die DDBT keine Implementierung einer zusätzlichen Steuerung innerhalb des Prozessors benötigt wird, sondern nur eine Erweiterung der Einträge in der Warteschlange in der Weise, daß sie bestimmte Felder enthalten, die gewöhnlich nicht verwaltet werden können.
  • Die Felder, die von der DDBT benötigt werden, sind die Befehlsadresse, das erste Halbwort des Befehlsbildes, die Operanden-Adresse, die durch den Befehl (falls zutreffend) adresserzeugt (AGEN) wurde, und, im Fall einer Verzweigung, ob die Verzweigung genommen wurde oder nicht. Bei einer Endop-Anweisung für einen Befehl wird der op-Code (erstes Byte des Befehlsbildes) von einem Dekodierer 174 geprüft, um festzustellen, ob es sich bei dem Befehl um einen relevanten Prüfbefehl (TM, CLI, NI, OI oder XI), um eine bedingte Verzweigung oder um einen Befehl handelt, der einen Bedingungscode setzt, der nicht mit den betreffenden Prüfbefehlen übereinstimmt.
  • Handelt es sich bei dem Befehl um einen Prüfbefehl, wie auf Leitung 176 angezeigt, wird ein Prüf-Endop-Register (TER) 178 mit der betreffenden Information geladen. Diese Information besteht aus dem in der Prüfung verwendeten direkten Operanden (zweites Byte des Befehlsbildes), der Adresse des Speicher- Operanden, der getestet wird (OADDR) und der Art der Prüfung, die durchgeführt wird (Operation). In diesem Falle handelt es sich bei dem Feld Operation um ein Drei-Bit-Feld, welches von einem Kodierer 180 auf der Basis eines op-Codes assimiliert wird. Es ist zu beachten, daß bei Laden des TER 178, ein GÜLTIG-Bit gesetzt wird, um anzuzeigen, daß der durch das TER vorgegebene Befehl der jüngste einen Bedingungscode setzende Befehl ist, der eine Endop-Anweisung erhielt. Wenn ein einen Bedingungscode setzender Befehl, der nicht zu den betreffenden Befehlen gehört, eine Endop-Anweisung erhält, wie auf der Ausgabeleitung 182 vom Dekodierer 174 angezeigt, wird das GÜLTIG-Bit 184 zurückgesetzt, so daß der Befehl im TER 178 nicht irrtümlicherweise einer nachfolgenden bedingten Verzweigung zugeordnet wird.
  • Erhält eine bedingte Verzweigung eine Endop-Anweisung, wie auf Ausgabeleitung 186 vom Dekodierer 174 angezeigt, wird, genauso wie in Fig. 1 mit BER 16, ein Verzweigungs-Endop- Register (BER) 188 gesetzt, mit der Ausnahme, daß das CC-Maskenfeld 190 (drittes Halb-Byte des Befehlsbildes) auch in das BER 188 geladen wird. Wenn das GÜLTIG-Bit im TER 178 gleichzeitig mit der Ladung des BER 188 gesetzt wird, dann ist der durch das TER 178 vorgegebene Prüfbefehl der Befehl, der den Bedingungscode für die bedingte Verzweigung, die durch das BER 188 vorgegeben wird, setzt. Diese Bedingung wird von der UND-Schaltung 192 geprüft. Leitung 42 der Fig. 1 wurde ganz willkürlich als eine Eingabe zu dieser UND-Schaltung einbezogen. Dies geschieht auf rein wirtschaftlichen Überlegungen in bezug auf die DDBT, das heißt, das LÖSCHEN-Signal 42 ist ein Hinweis darauf, daß die durch das BER 188 vorgegebene Verzweigung in der BHT falsch vorausgesagt wurde. (Man beachte, daß es sich bei EINFÜGEN nicht um einen solchen Hinweis handelt, da Verzweigungen, die von der BHT vorher nie gesehen wurden, diesen Status verursachen, wenn sie genommen werden.)
  • Somit gibt die UND-Schaltung 192 einen Eintrag in die DUQ 172 ein, wenn eine falsch vorausgesagte Verzweigung identifiziert wurde, deren Bedingungscode-Setzbefehl einer der Prüfbefehle innerhalb der gewählten DDBT-Implementierung ist.
  • Fig. 6 zeigt, wie neue Einträge von der DDBT-Aktualisierungswarteschlange 172 in der DDBT 64 plaziert werden und wie bestehende Einträge in der DDBT durch die DDBT-Korrekturwarteschlange 142 modifiziert werden (siehe Fig. 3). Kehren wir zur Fig. 6 zurück; die Statusinformation im DCQ-Leer-Register 198 und im DUQ-Leer-Register 200 wird von einem Prioritätskodierer 202 geprüft, um festzustellen, ob die DCQ 142 oder die DUQ 172 bedient werden soll. Der Kodierer 202 sperrt beliebig die Auswahl einer Warteschlange, wenn auf Leitung 204 vom Puffer für anstehende Speicherungen eine Speicherung freigegeben wird, so daß die DDBT-Matrizen für die unmittelbare Prüfung verfügbar sind (siehe Fig. 2). Somit hat in dieser speziellen Implementierung das Absuchen der DDBT Vorrang gegenüber der Aktualisierung der DDBT.
  • Trifft der Prioritätskodierer 202 die Wahl, die DCQ 142 zu bedienen, so wird durch das Signal 208 nur das ACTION-Bit durch den Selektor 206 geschaltet. Der Selektor 210 führt unter Verwendung des DDBT-Indexfelds von der DCQ 142 eine Reihenauswahl bei allen vier Gruppen der DDBT-Matrix durch. Die entsprechende Gruppe wird durch das Gruppen-ID-Feld in der DCQ 142 bestimmt und wird durch den Selektor 212 geschaltet, wo sie vom Dekodierer 214 dekodiert wird, um eine Schreib- Freigabe für die betreffende Gruppe zu erzeugen. Signal 208 erzeugt einen Schreibimpuls für das ACTION-Feld nur innerhalb der freigegebenen Gruppe.
  • Trifft der Prioritätskodierer 202 die Wahl, die DUQ 172 zu bedienen, müssen alle Felder in der DDBT-Matrix gespeichert werden. Das ACTION-Feld von der DUQ 172 wird durch den Selektor 206 geschaltet, alle anderen relevanten Felder treiben jedoch direkt die DDBT-Matrixeingaben. Diese Felder sind die Zieladresse (TA) und die Verzweigungsadresse (BA), das TEST- Feld und die Bits 0 bis 18 von OADDR. Die Bits 19 bis 23 von OADDR werden durch den Selektor 210 geschaltet, um eine Reihenadresse für alle Gruppen der DDBT-Matrix bereitzustellen, und die Bits 21 und 22 der Verzweigungsadresse (BA) auf Leitung 216 werden durch den Selektor 212 geschaltet, wo sie vom Dekodierer 214 dekodiert werden, um eine Schreib-Freigabe für die entsprechende Gruppe zu erzeugen. Der Prioritätskodierer 202 liefert einen Schreibimpuls 218 für alle Felder in der ausgewählten Gruppe.
  • Die DDBT ist ein passiver Mechanismus, der unabhängig von der BHT und dem Prozessor ist, sie erkennt jedoch im voraus falsche Voraussagen seitens der BHT und aktualisiert die BHT, um viele falsche Verzweigungsvoraussagen zu vermeiden. Die hier gewählte besondere Implementierung ist rein exemplarisch und wurde ausgewählt, weil sie leicht verständlich ist; eine DDBT kann jedoch beliebig ausgearbeitet werden. Innerhalb der Klasse von DDBTs gibt es sehr wenige Ausführungsmöglichkeiten, die "falsch" sind, das heißt, Probleme wie Stabilität der abgedeckten Prüfungen, Effizienz des Betriebs und die Frage, ob BHT-Aktualisierungen zeitgerecht ausgeführt werden, beeinflussen die Durchführbarkeit der Planung nicht. Diese Möglichkeiten beeinflussen lediglich die Anzahl der falschen Voraussagen im Hinblick auf BHT-Verzweigungen, die vermieden werden können.

Claims (8)

1. Rechengerät mit einem Prozessor (4), einem Speicher (4) zur Speicherung von mit dem Prozessor zu verarbeitender Befehle und Operanden aufweisender Information einer Verzweigungsgeschichtstabelle (2) zur Speicherung von Informationen, um die Vorhersage der Funktionen von Verzweigungsbefehlen zu ermöglichen, einem Mittel (56) zur Aufzeichnung von vom Prozessor genommener Verzweigungsbefehlen in der Verzweigungsgeschichtstabelle, wodurch zukünftige Funktionen in Abhängigkeit von einer Verzweigungsinstruktion auf der Basis einer vergangenen Funktion in Abhängigkeit von der Verzweigungsinstruktion vorhersagbar sind, einem Datenspeichermittel (64) zur Speicherung von Information über verzweigungsbefehle, deren Funktion von einem Operanden abhängig ist, wobei die Information den Operanden identifiziert und daraus das Berechnen der Funktion erlaubt, und einem auf eine Speicherüberprüfung eines Operanden durch den Prozessor ansprechenden Mittel (76-92; 122) zur Bestimmung, ob sich der Operand in der Datenspeichereinrichtung befindet, und, falls dies zutrifft, zur Berechnung der Funktion des neuen Wertes des Operanden, wobei das Gerät dadurch gekennzeichnet ist, daß es weiters enthält:
Mittel (126, 131) zur Bestimmung, ob ein Unterschied zwischen der berechneten Funktion für den neuen Wert des Operanden und der Funktion des vorhergehenden Wertes des Operanden vorhanden ist,
und ein auf einen Unterschied in der Funktion zwischen dem vorhergehenden und dem neuen Operandenwert ansprechendes Mittel (138) zur dementsprechenden Aktualisierung der Information für den entsprechenden Verzweigungsbefehl in der Verzweiungsgeschichtstabelle.
2. Rechengerat nach Anspruch 1, bei welchem die Verzweigungsgeschichtstabelle (2) für jeden genommenen Verzweigungsbefehl eine Verzweigungsadresse BA und eine Zieladresse TA speichert.
3. Rechengerät nach Anspruch 2, bei welchem das Mittel (138) zur Aktualisierung der Verzweigungsgeschichtstabelle (2) Mittel zur Aktualisierung jeglichen BA- oder TA-Unterschiedes im Fall eines Unterschiedes in der Funktion zwischen dem vorhergehenden und dem neuen Operandenwert aufweist.
4. Rechengerät nach einem der vorhergehenden Ansprüche, bei welchem das Datenspeichermittel (64) ein Funktionsbit enthält, das zur Anzeige, ob bei seiner letzten Durchführung ein Verzweigungsbefehl genommen worden ist oder nicht, setzbar ist.
5. Rechengerät nach Anspruch 4, bei welchem die Mittel (126, 131) zur Bestimmung, ob ein Unterschied in der Funktion zwischen dem neuen und dem vorhergehenden Operandenwert vorhanden ist, ein Mittel (142) zur Aktualisierung des Funktionsbits aufweisen.
6. Verfahren zur Verarbeitung von verzweigungsbefehlen in einem Rechengerät mit einem Prozessor (4) und einem Speicher (4) zur Speicherung von fit dem Prozessor zu verarbeitender Befehle und Operanden aufweisender Information, bestehend aus folgenden Schritten:
Speicherung der Information in einer Verzweigungsgeschichtstabelle (2), um die Vorhersage der Funktion von Verzweigungsbefehlen zu ermöglichen,
Aufzeichnung von vom Prozessor genommener verzweigungsbefehle in der Verzweigungsgeschichtstabelle, wodurch zukünftige Funktionen in Abhängigkeit von dem Verzweigungsbefehl auf der Basis einer vergangenen Funktion in Abhängigkeit von dem Verzweigungsbefehl vorhersagbar sind,
Speicherung von Information über Verzweigungsbefehlen, deren Funktion von einem Operanden abhängig sind, in einem Datenspeichermittel (64), wobei die Information den Operanden identifiziert und daraus das Berechnen der Funktion erlaubt,
und Bestimmen in Abhängigkeit einer vom Prozessor gemachten Speicherüberprüfung, ob sich der Operand in dem Datenspeichermittel befindet, und, falls dies zutrifft, Berechnung der Funktion des neuen Operanden-Wertes,
wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist:
Bestimmung, ob ein Unterschied zwischen der berechneten Funktion für den neuen Operandenwert und der Funktion des vorhergehenden Operandenwertes vorhanden ist,
und dementsprechende Aktualisierung der Information für den entsprechenden Verzweigungsbefehl in der Verzweigungsgeschichtstabelle in Abhängigkeit von einem Unterschied in der Funktion zwischen dem vorhergehenden und dem neuen Operandenwert.
7. Verfahren nach Anspruch 6, wobei die Verzweigungsgeschichtstabelle (2) für jeden genommenen Verzweigungsbefehl eine Verzweigungsadresse BA und eine Zieladresse TA speichert, und der Schritt der Aktualisierung der Verzweigungsgeschichtstabelle (2) die Aktualisierung jeglichen BA- oder TA- Unterschiedes im Fall eines Unterschiedes in der Funktion zwischen dem vorhergehenden und dem neuen Operandenwert aufweist.
8. Verfahren nach Anspruch 6 oder 7, wobei das Datenspeichermittel (64) ein Funktionsbit aufweist, das zur Anzeige setzbar ist, ob bei seiner letzten Durchführung ein Verzweigungsbefehl genommen worden ist oder nicht, und der Schritt der Bestimmung, ob ein Unterschied in der Funktion zwischen dem neuen und dem vorhergehenden Operandenwert vorhanden ist, weiters den Schritt der dementsprechenden Aktualisierung des Funktionsbits aufweist.
DE8686112337T 1985-10-30 1986-09-05 Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem. Expired - Fee Related DE3687744T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/793,057 US4763245A (en) 1985-10-30 1985-10-30 Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table

Publications (2)

Publication Number Publication Date
DE3687744D1 DE3687744D1 (de) 1993-03-25
DE3687744T2 true DE3687744T2 (de) 1993-08-19

Family

ID=25158963

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8686112337T Expired - Fee Related DE3687744T2 (de) 1985-10-30 1986-09-05 Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.

Country Status (4)

Country Link
US (1) US4763245A (de)
EP (1) EP0227892B1 (de)
JP (1) JPS62106545A (de)
DE (1) DE3687744T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4447238B4 (de) * 1994-01-04 2005-08-18 Intel Corporation, Santa Clara Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0258453B1 (de) * 1986-02-28 1993-05-19 Nec Corporation Steuervorrichtung zum vorabruf von befehlen
JPH06100968B2 (ja) * 1986-03-25 1994-12-12 日本電気株式会社 情報処理装置
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
JPS6398737A (ja) * 1986-10-15 1988-04-30 Mitsubishi Electric Corp デ−タ処理装置
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
JPH0743672B2 (ja) * 1987-02-18 1995-05-15 株式会社東芝 メモリ保護違反検出装置
US5247627A (en) * 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
JPH01142941A (ja) * 1987-11-30 1989-06-05 Nec Corp 分岐予測テーブルの正当性判定装置
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
JPH01271838A (ja) * 1988-04-22 1989-10-30 Fujitsu Ltd マイクロプログラム分岐方法
JP2570859B2 (ja) * 1989-05-25 1997-01-16 日本電気株式会社 データ処理装置
JP2508280B2 (ja) * 1989-07-28 1996-06-19 日本電気株式会社 分岐ヒストリテ―ブル制御方式
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5649097A (en) * 1991-10-25 1997-07-15 International Business Machines Corporation Synchronizing a prediction RAM
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
DE69227465T2 (de) * 1992-02-27 1999-06-10 Samsung Electronics Co. Ltd., Suwon, Kyungki Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
TW345637B (en) * 1994-02-04 1998-11-21 Motorola Inc Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs.
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5794024A (en) * 1996-03-25 1998-08-11 International Business Machines Corporation Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US5805877A (en) * 1996-09-23 1998-09-08 Motorola, Inc. Data processor with branch target address cache and method of operation
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6546481B1 (en) * 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler
US7024663B2 (en) * 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
US8694760B2 (en) * 2009-05-19 2014-04-08 Panasonic Corporation Branch prediction using a leading value of a call stack storing function arguments
GB2578573B (en) * 2018-10-30 2021-09-08 Advanced Risc Mach Ltd Technique for maintaining data values in a prediction register that are used to predict whether a branch represented by a branch instruction will be taken.

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3559183A (en) * 1968-02-29 1971-01-26 Ibm Instruction sequence control
US4155120A (en) * 1977-12-01 1979-05-15 Burroughs Corporation Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
JPS57185545A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Information processor
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4447238B4 (de) * 1994-01-04 2005-08-18 Intel Corporation, Santa Clara Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage

Also Published As

Publication number Publication date
EP0227892B1 (de) 1993-02-10
JPS62106545A (ja) 1987-05-18
EP0227892A3 (en) 1989-07-19
JPH0231419B2 (de) 1990-07-13
US4763245A (en) 1988-08-09
EP0227892A2 (de) 1987-07-08
DE3687744D1 (de) 1993-03-25

Similar Documents

Publication Publication Date Title
DE3687744T2 (de) Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE3884101T2 (de) Abholung von Operanden in Unordnung.
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69023568T2 (de) Cache-Speicheranordnung.
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69032465T2 (de) Prozessorarchitektur mit entkoppelter Befehlsbereitstellung
DE3851746T2 (de) Sprungvorhersage.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE3752100T2 (de) Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
DE69028153T2 (de) Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung
DE69130858T2 (de) Überlappende Serienverarbeitung
DE69327927T2 (de) Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE68928727T2 (de) Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE3131341A1 (de) &#34;pufferspeicherorganisation&#34;
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee