DE10121792C2 - Universelle Ladeadresse/Wertevorhersageschema - Google Patents

Universelle Ladeadresse/Wertevorhersageschema

Info

Publication number
DE10121792C2
DE10121792C2 DE10121792A DE10121792A DE10121792C2 DE 10121792 C2 DE10121792 C2 DE 10121792C2 DE 10121792 A DE10121792 A DE 10121792A DE 10121792 A DE10121792 A DE 10121792A DE 10121792 C2 DE10121792 C2 DE 10121792C2
Authority
DE
Germany
Prior art keywords
value
prediction
counter
command
counters
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
DE10121792A
Other languages
English (en)
Other versions
DE10121792A1 (de
Inventor
Harald Stefan Barowsky
Rolf Hilgendorf
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.)
Intel 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
Publication of DE10121792A1 publication Critical patent/DE10121792A1/de
Application granted granted Critical
Publication of DE10121792C2 publication Critical patent/DE10121792C2/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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

1. DER ERFINDUNG ZUGRUNDELIEGENDER ALLGEMEINER STAND DER TECHNIK 1.1 BEREICH DER ERFINDUNG
Die vorliegende Erfindung betrifft Leistungsverbesserungen in Superskalarrechnersystemen. Insbesondere betrifft sie ein verbessertes Verfahren und System zur Vorhersage von Hybridadressen.
1.2 BESCHREIBUNG UND NACHTEILE DES STANDES DER TECHNIK
Um höhere Leistungen zu erzielen werden die meisten Mikroprozessoren als Superskalarprozessoren konstruiert, die mehrfache Ausführungseinheiten aufweisen. Die Idee hinter diesem Konzept ist die Erhöhung des Befehlsebenenparallelismus, der nachstehend als ILP (Instruction Level Parallelism) bezeichnet wird. Da die meisten Befehle Abhängigkeiten aufweisen, die zu Verzögerungen in der/den Prozessor-Pipelines führen würden, bis die Abhängigkeit gelöst ist, ermöglicht die Umbenennung von Registern in Kombination mit einer Befehlsausführung außerhalb der Reihenfolge Verbesserungen des ILP. Nichtsdestoweniger gibt es noch eine Menge Abhängigkeiten, die eine parallele Mehrfach-Befehlsausführung verhindern, was zu Blasen in der Pipeline führt.
Um die Leistungsfähigkeit zu erhöhen und die Blasen in der Pipeline zu vermeiden, kann eine Ladeadresse oder Wertvorhersage helfen, die Pipeline-Staus zu überwinden, weil sogar abhängige Befehle unter Verwendung von spekulativ berechneten Daten ausgeführt werden können. Wenn es sich dann herausstellt, dass der vorhergesagte Wert falsch war, müssen die entsprechenden Befehle erneut ausgeführt werden, was einen leistungsabträglichen Mehraufwand bedeutet.
Um den Mehraufwand für falsch vorhergesagte Werte zu reduzieren, ist es
  • a) erforderlich, die bestmögliche Ladeadresse/Wertvorhersage zu machen, und
  • b) erforderlich, die Befehle zu bestimmen, deren Operanden mit der höchsten Wahrscheinlichkeit vorhergesagt werden können und die einen nur geringen Mehraufwand verursachen, auch wenn die vorhergesagte Adresse/Wert falsch war.
Im einzelnen kann die Wertvorhersage auf dem Stand der Technik in drei Kategorien eingeteilt werden: Vorhersage der Ladeadresse, Vorhersage der Quellregisterwerte, und Vorhersage der Zielregisterwerte.
Der einfachste Algorithmus, der in Wert-Prädiktoren auf dem Stand der Technik benutzt wird, gründet sich auf die Annahme, dass der Inhalt von Speicherstellen und Registern in den meisten Fällen unverändert bleibt. Somit ist also ein geeignetes Vorhersageschema, einfach immer den letzten Wert vorherzusagen. Der sogenannte Letztwert-Prädiktor, hier nachstehend auch als LVP (Last Value Predictor) bezeichnet, wird in Fig. 1 beispielhaft beschrieben und beinhaltet eine Tabelle 10, die durch Hash-Codieren 12 der Befehlsadresse adressiert wird, wobei jeder Eintrag aus einem Kennzeichnungsfeld 14 und einem Feld 16 für den letzten Wert besteht.
Die Tabelle ist am wahrscheinlichsten als n-fach gesetztes Assoziativ (z. B. n = 4) organisiert. Wenn eine Übereinstimmung dadurch gefunden wird, dass das Kennzeichnungsfeld mit der Befehlsadresse übereinstimmt, dann wird der entsprechende Letztwert von diesem Tabelleneintrag zur Vorhersage benutzt. Wenn keine Übereinstimmung gefunden wird, wird ein neuer Eintrag gemacht, der den Least Recently Used (LRU - letzter benutzter) Tabelleneintrag ersetzt, der durch einen sogenannten LRU-Algorithmus bestimmt wurde. Jedenfalls wird der Prädiktor jedesmal mit dem richtigen Wert aktualisiert, wenn dieser bekannt/bestätigt ist.
Ein weiteres Schema auf dem Stand der Technik ist eine einfache Erweiterung des LVP, wie in Fig. 2 gezeigt wird.
Jedem Tabelleneintrag werden zwei zusätzliche Felder hinzugefügt, das Schrittlängenfeld (Stride) 20 und das Statusfeld 22. Die Idee hinter diesem Prädiktor ist, dass oft Speicherinhalte um einen gewissen Differenzwert (Delta) verändert wird, d. i. eine Schrittlänge. Somit lässt sich der nächste vorhergesagte Wert ganz einfach errechnen durch Addieren der Schrittlänge zum letzten Wert. Das Statusfeld wird benutzt zu bestimmen, ob der Prädiktor den Letztwert, oder den Letztwert erhöht um einen bestimmten Schritt, vorhersagen soll. Somit wird der Schritt-Prädiktor, hier nachstehend als SP (Stride Predictor) bezeichnet, nur dann einbezogen, wenn ein bestimmter Schrittwert gefunden und bestätigt werden konnte, wobei das Statusfeld diese Entwicklung verfolgt.
Wenn der Schrittprädiktor nach einigen erfolgreichen Vorhersagen falsch liegt, schaltet er zurück zur letzten Wertvorhersage (und schaltet dabei das Statusfeld zurück zum LVP), falls nicht ein neuer Schritt gefunden und bestätigt wird.
Der Schritt-Prädiktor, hier nachstehend als SP abgekürzt, wird jedesmal mit dem neuesten Wert aktualisiert. Wenn sich der Schritt ändert, wird er nur dann benutzt, wenn der neue Schritt bestätigt wird, d. h. wenn der gleiche Schritt das nächste Mal wieder gefunden wird.
Hier muss darauf hingewiesen werden, dass eine solche Bestätigung vorteilhaft dann gemacht wird, wenn der gleiche Schritt mindestens zweimal hintereinander vorkommt.
Trotzdem können der LVP und der SP korrekte Vorhersageraten bis zu über 50% erreichen. Für bestimmte Fälle gibt es noch einige weitere Befehle, die die Inhalte der Speicherstellen gemäß einem bestimmten Muster ändern, das mehrere Male wiederholt wird. So lassen sich Werte außerhalb eines solchen Kontextes vorhersagen und auch ein sogenannten Kontext- Prädiktor, nachstehend CP (Context Predictor) bezeichnet, wurde vorgeschlagen.
Während der SP eine Erweiterung des LVP ist, gründet sich der Kontext-Prädiktor auf das Nachschlagen in zwei Tabellen und besteht daher aus zwei Tabellen, wie in Fig. 3 gezeigt wird.
Die Einträge in die erste Tabelle 30, die als n-fach Assoziativ organisiert ist, enthalten jeweils ein Kennzeichnungsfeld 14, einige (z. B. vier) Letztwertfelder 31a-31d, ein LRU Info-Feld 32 und ein Wertverlaufmusterfeld 33. Ein Eintrag wird gewählt durch Hashen 12, z. B. einer Befehlsadresse. Wenn keine passende gefunden wird, wird ein neuer Eintrag zur Tabelle hinzugefügt und ersetzt den zuletzt benutzten Tabelleneintrag gemäß der LRU-Info. Dieser Schritt des Hinzusetzens eines neuen Eintrags beinhaltet insbesondere das Schreiben der Kennzeichnungs-Info - z. B. der Befehlsadresse - in das Kennzeichnungsfeld, das Schreiben des augenblicklichen Ergebnisses, das von dem Befehl erzeugt wurde, in eines der Wertefelder 31a-31d, und Initialisieren des in den Feldern 33 gespeicherten Wertverlaufmusters.
Das Wertverlaufmuster beschreibt den Verlauf der letzten paar (z. B. sechs) Werte des ausgewählten Speicherorts, der in einer Serie benutzt wird, wobei jedes der Wertefelder 3131d durch ein 2-Bit-Muster identifiziert wird. '00' bezieht sich auf den Wert, der im Feld 0 gespeichert ist, '01' bezieht sich auf den Wert, der im Wertefeld 1 gespeichert ist, usw. Wenn z. B. die sechs letzten benutzten Werte eines bestimmten Befehls in die Wertefelder 0, 1, 2, 0, 3, 2 gesetzt wurden, ist das entsprechende Werteverlaufmuster (VHP - Value History Pattern) '00 01 10 00 11 10'. Das in jedem Tabelleneintrag gespeicherte LRU-Feld legt fest, welches Wertefeld überschrieben/ersetzt wird, wenn ein neuer Wert für diesen Befehl gefunden wird.
Das Zwei-Tabellen-Nachschlagen wird gemacht durch Benutzen des VHP (z. B. ein 12-Bit-Muster) als Adresse zum Auswählen eines Eintrags in die zweite, die sogenannte Musterverlauftabelle 34, hier nachstehend auch als PHT (Pattern History Table) bezeichnet. Beispielhaft kann die zweite PHT Tabelle eine Anzahl von 4K Einträgen haben in Verbindung mit dem 12-Bit-Muster, das zum Adressieren dieser Tabelle benutzt wird.
Ein Eintrag in diese Tabelle enthält vier Sättigungs-4-Bit- Zähler 35a bis 35d. Diese Zähler stellen jedes Wertefeld 31a bis 31d in der ersten Tabelle 30 dar. Der Zähler mit dem höchsten Wert und mit einer Zählung, der höher als ein Schwellenwert liegt, wählt die geeigneten Letztwerte aus, die in der ersten Tabelle gespeichert werden. Die Zähler in der PHT werden aktualisiert gemäß dem laufenden Wert, d. h. der entsprechende Zähler wird um eine bestimmte Zahl erhöht (z. B. um 3), während die anderen Zähler verringert werden (z. B. um 1). Die Zähler sind gesättigt (z. B. bei 0 bzw. 12) und der Schwellenwert wird gewählt (z. B. bei 6), um zu bestimmen, ob eine Vorhersage gemacht werden kann oder nicht.
Das zweite Aktualisierungsverfahren beinhaltet die Aktualisierung des VHP 33: Das VHP 33 wird um zwei Bits nach links verschoben und die leergewordenen zwei Bits auf der rechten Seite werden gefüllt mit dem Bitmuster entsprechend dem augenblicklichen Wert. Wenn der Wert nicht schon in einem der 'Letztwertfelder' gespeichert war, ersetzt der augenblickliche Wert den zuletzt benutzen Letztwert, der in einem der vier Werteschlitze gespeichert waren, und das entsprechende 2-Bit-Muster wird in das VHP 33 gesetzt.
Zwar sagt ein solcher Kontext-Prädiktor bestimmte, sich wiederholende Wertemuster voraus - hier Muster, bestehend aus bis zu vier unterschiedlichen Werten - er kann jedoch keine schrittweisen oder letzte Werte vorhersagen. Die beste Vorhersage kann daher erreicht werden durch Kombinieren des CP mit dem LVP/SP. Dieser 'kombinierte' Prädiktor wird oft als Hybridprädiktor (HP) bezeichnet. Er benutzt ein bestimmtes Schaltschema, um den Prädiktor der Wahl auszuwählen, um die beste Wahrscheinlichkeit zu erzielen.
Ein Vorteil des Hybridprädiktors ist, dass er Verriegelungs­ zählungen speichert zum Benutzen des SP für den Letztwert und Schrittvorhersagen. Der Hauptnachteil ist jedoch, das zugrunde liegende komplexe Schaltschema, das auf dem Stand der Technik erforderlich ist zum Entscheiden, ob der LVP oder der SP oder der CP benutzt werden soll. Gemäß dem Stand der Technik wird vorzugsweise die Vorhersage immer mit dem LVP begonnen. Wenn der LVP keinen Erfolg hat, aber ein Schritt gefunden und bestätigt werden kannte, dann wird der SP aufgerufen. Wenn kein Schritt bestimmt werden kann, dann wird der CP initialisiert und läuft an mit dem Erfassen und Bestätigen des Musters - unter der Annahme, dass es ein bestimmtes Wertemuster gibt.
Wenn sich das Muster stabilisiert, d. h. die Zähler in PHT 33 den Schwellenwert erreichen, können aus dem Kontext Vorhersagen gemacht werden. Wenn der Prädiktor keinen Erfolg hat, schaltet das Schaltschema den LVP wieder ein. Der Nachteil dabei ist jedoch, dass der Kontext-Prädiktor-Aufruf ziemlich uneffizient ist, weil es ziemlich lang dauert, bis der CP wirklich benutzt wird, weil vor der Ausgabe einer Kontextvorhersage die Daten erfasst werden müssen, die die Grundlage für einen zuverlässigen CP sind.
Ein Beispiel für ein solches Hybrid-Vorhersageverfahren ist in NAKRA, Tarun u. a.: Global Context-Based Value Prediction. In: Proceedings Fifth International Symposium on High-Performance Computer Architecture, IEEE, 1999 auf Seite 10 bis 11 offenbart. Das dort offenbarte Verfahren enthält jedoch auch ein komplexes Schaltschema zum Umschalten zwischen den Prädiktor-Arten.
1.3 AUFGABEN DER ERFINDUNG
Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Vorhersageschema vorzusehen, das die Wertvorhersage, die Schrittvorhersage und die Kontextvorhersage unterstützt mit reduzierten Speichererfordernissen und mit einer besseren Leistung.
2. ZUSAMMENFASSUNG UND VORTEILE DER ERFINDUNG
Diese Aufgabe der Erfindung wird gelöst durch die Merkmale, die in den begleitenden unabhängigen Ansprüchen genannt sind. Weitere vorteilhafte Anordnungen und Ausführungsformen der Erfindung sind in den entsprechenden Unteransprüchen erklärt.
Die vorliegende Erfindung offenbart ein neues Ladeadressen/Wertevorhersageschema, das die Vorteile der oben beschriebenen drei Vorhersageschemata aus dem Stand der Technik, LVP, SP und CP, kombiniert.
Dieses neue Schema zur Wertvorhersage ermöglicht die Vorhersage von Letztwerten, Schrittwerte sowie auch Werte außerhalb des Kontextes, ohne die Anwendung eines komplizierten Schaltschemas zwischen verschiedenen Prädiktoren. Dieses ganz 'universelle' Vorhersageschema (UP - Universal Prediction) wird geoffenbart, das sich auf einen Zwei-Tabellen-Nachschlagmechanismus des Kontext-Prädiktors gründet, das aber die Unterschiede zwischen aufeinanderfolgenden Werten behandelt, die an einem bestimmten Speicherplatz gespeichert sind.
Das erfindungsgemäße Vorhersagesystem erfasst Muster der aufeinanderfolgenden Wertedifferenzen (Deltas) anstatt der Werte selbst. So kann ein LVP erzielt werden durch Vorhersagen eines 'Musters' von nur einer Schrittweite, die Null ist. Ein Schrittprädiktor benutzt ein Muster, das nur aus einem (konstanten) Schritt besteht. Und ein bestimmtes Wertemuster wird jetzt modelliert durch Aufzeichnen der Musters der Deltas zwischen den Werten und Addieren der Deltas zum letzten Wert.
Da sich jetzt die Kontextvorhersage auf die Deltas gründet, d. i. die Unterschiede zwischen einigen Werten, ist der Prädiktor auch in der Lage, Werte vorherzusagen, die ein bestimmtes Änderungsmuster zeigen. Das ist also allgemeiner als nur das Aufzeichnen eines bestimmten Wertemusters. Der Hauptvorteil dieser erfindungsgemäßen Prädiktorkonzepte ist, dass sie das Schaltschema inhärent involvieren, d. h., wenn ein bestimmter Zähler einen Schwellenwerttreffer erreicht, läuft die Vorhersage aus dem Kontext einschließlich Schrittvorhersage sowie die Letztwertvorhersage an.
Gemäß einer bevorzugten Ausführungsform ist die Vorgabe und Anfangsvorhersagemethode LVP mit Verwenden eines Schrittes = 0. Das kann erreicht werden durch Initialisieren des entsprechenden Zählers auf den Schwellenwert. Wenn der Wert überhaupt nicht vorhersagbar ist, wird dieser Zähler unter den Schwellenwert zurückgestellt und der neue Status 'nicht vorhersagbar' wird erkannt und kann ausgegeben werden. Das ist ein bemerkenswerter Vorteil im Vergleich zum Stand der Technik, weil der Leistungsaufwand aufgrund einer Fehlvorhersage-Wiederherstellung merklich größer sein kann als Abwarten, bis die Abhängigkeit gelöst ist und das Ergebnis auf die übliche Art berechnet wird.
Wenn die Letzwertvorhersage oder die Schrittvorhersage richtig ist, beginnt der Prädiktor unverzüglich, diese Vorhersageschemata zu benutzen. Wenn kein Schritt gefunden, aber statt dessen ein Muster entdeckt werden konnte, hat der Prädiktor bereits begonnen mit dem Erfassen und Bestätigen dieses Musters und lässt den Kontextvorhersagemechanismus so bald als möglich anlaufen.
Auf diese Weise speichert der Prädiktor Anordnungszählungen, weil die Schrittweiten, die in den Schrittfeldern gespeichert sind, möglicherweise eine beschränkte Bitanzahl haben im Vergleich zu dem im CP gespeicherten Letztwert. Das ist so, ungeachtet der Tatsache, dass der Letztwert bei jedem Eintrag in einem zusätzlichen Feld gespeichert werden muss. Unter der Annahme, dass die vorherzusagenden Werte 64 Bits breit sind und dass ein aus 16 Bits bestehendes Schrittfeld ausreicht, verbrauchen vier Schrittfelder und das Letztwertfeld zusammen 128 Bits, während der CP mit vier Letztwerten, die in jedem Eintrag gespeichert werden, 256 Bits verbraucht.
Vorteilhafterweise ist die Anzahl der Schrittweitenfelder Größer als 3 und kleiner als 7 zur Anwendung in den heutigen modernen Rechnerarchitekturen.
3. KURZE BESCHREIBUNG DER ZEICHNUNGEN
Die vorliegende Erfindung wird beispielhaft illustriert und wird nicht eingeschränkt durch die Form der Abbildungen in den begleitenden Zeichnungen, in diesen ist
Fig. 1 ein schematisches Blockschaltbild, das die wesentlichen Komponenten zeigt, die in einem Letztwertprädiktor auf dem Stand der Technik benutzt werden;
Fig. 2 ist ein schematisches Blockschaltbild, das die wesentlichen Komponenten zeigt, die in einem Schrittweitenprädiktor auf dem Stand der Technik benutzt werden;
Fig. 3 ist ein schematisches Blockschaltbild, das die wesentlichen Komponenten zeigt, die in einem Kontextprädiktor auf dem Stand der Technik benutzt werden;
Fig. 4 ist ein schematisches Blockschaltbild, das die wesentlichen Komponenten zeigt, die in einem Hybridprädiktor gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung benutzt werden; und
Fig. 5 ist ein schematisches Blockschaltbild, das die grundlegenden Schritte und die Steuerung während der Setup- und Aktualisierungsverfahren der bevorzugten Ausführungsform der vorliegende Erfindung gemäß Fig. 4 zeigt; und
Fig. 6 ist ein schematisches Blockschaltbild, das die grundlegenden Schritte und die Steuerung während des Vorhersageverfahrens der bevorzugten Ausführungsform der vorliegende Erfindung gemäß Fig. 4 zeigt.
4. BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
Unter allgemeiner Bezugnahme auf die Figuren und hier unter besonderer Bezugnahme auf Fig. 4 werden die wesentlichen Komponenten, die in einem Hybridprädiktor gemäß einer bevorzugten Ausführungsform der vorliegende Erfindung, der hier als 'universeller Prädiktor' (UP) angezogen wird, nachstehend in weiteren Einzelheiten beschrieben und gelten für eine Befehlsadressenvorhersage für 64-Bit-Adressen.
Der Universalprädiktor ist ein Zwei-Ebenen-Prädiktor enthaltend zwei Tabellen 40 und 44. Die Einträge in die erste Tabelle 40, die vierfach-assoziativ organisiert ist, umfassen:
Ein Kennzeichenfeld 14 (Stand der Technik), 32 Bit lang,
ein LRU Info-Feld 32, 6 Bit lang, in Abhängigkeit von der Anzahl der gebrauchten Schrittweitenfelder,
ein Letztwertfeld 42, 64 Bit lang,
vier Schrittweitenfelder 41a bis 41d, jedes 16 Bit lang, und ein Schrittweitenverlaufmuster-(SHP)-Feld 43, 6 mal 2 Bit = 12 Bit lang.
Ein Eintrag der Tabelle 40 wird ausgewählt durch Hashen der Befehlsadresse. Wenn keine Übereinstimmung gefunden wird, wird ein neuer Eintrag zur Tabelle hinzugefügt, der den letztbenutzten Tabelleneintrag durch gemäß einer anderen LRU- Info ersetzt. Es ist ein 6-Bit-Muster für jede Hash-Adresse, die den letztbenutzten Tabelleneintrag der vierfachsatz­ assoziativ organisierten ersten Tabelle 40 verfolgt.
Wenn ein neuer Befehl zum ersten Mal während der Operation auftritt, ist keine Schrittweite dafür bekannt, und ein neuer Eintrag muss hinzugefügt werden, der das Schreiben der Kennzeichnungs-Info, d. i. der Befehlsadresse, in das Kennzeichenfeld 14, das Schreiben des augenblicklichen Werts in das Letztwertfeld 42, und das Schreiben der Schrittweite = 0 in eines, z. B. das erste der vier Schrittweitenfelder 41a . . . 41d, und Initialisieren des Schrittweitenverlaufmusters durch z. B. '00 00 00 00 00 00' wenn das Schrittmuster = 0 ist, geschrieben in das erste Schrittweitenfeld, beinhaltet. Somit kann für das nächste Mal höchstens eine Schrittweite = 0, d. i. der letzte Wert, vorhergesagt werden. Wenn sich eine Schrittweite nicht gleich 0 als wahr herausstellt, dann existiert irgend ein Deltawert, der LVP stellt sich als unpassend heraus, und der Deltawert kann als Schrittweite für künftige Vorhersagen genommen werden und ersetzt die vorherige Schrittweite = 0 im Schrittweiten-0-Feld 41a.
Das Schrittweitenverlaufmuster beschreibt den Verlauf der letzten sechs Schrittweiten, die in Reihe benutzt wurden, wobei jede Schrittweite durch ein Zwei-Bit-Muster identifiziert wird, z. B. '00', für die Schrittweite, die ins Schrittweitenfeld 0 gesetzt wird, '01' für die Schrittweite, die ins Schrittweitenfeld 1 gesetzt wird, usw. Wenn z. B. die letzten sechs benutzten Schrittweiten in die Schrittweitenfelder 0, 1, 1, 0, 3, 2 gesetzt wurden, dann wäre das Schrittweitenverlaufmuster (DHP) 00 01 01 00 11 10.
Eine zweite LRU-Info, gespeichert im LRU-Info-Feld 32 jedes Tabelleneintrags, bestimmt, welche Schrittweiten in den Schrittweitenfeldern ersetzt werden müssen, wenn mehr als 4 Schrittweiten benötigt werden und die letztbenutzte Schrittweite ersetzt wird.
Dann wird das 2-Tabellen-Nachschlagen durchgeführt unter Verwendung des Schrittweitenverlaufmusters SHP (ein 12-Bit- Muster) als Adresse zum Auswählen eines Eintrags in einer zweiten, sogenannten Musterverlauftabelle 44 (PHT) mit 4K Einträgen. Ein Eintrag in dieser Tabelle enthält vier Sättigungs-4-Bit-Zähler. Jeder Zähler 45a . . . 45d ist einem entsprechenden Schrittweitenfeld 41a . . . 41d in der ersten Tabelle 40 zugeordnet. Der Zähler mit dem höchsten Wert und mit einer Zählung, die höher ist als ein bestimmter vorgegebener Schwellenwert, wählt die geeignete Schrittweite, die zur Vorhersage benutzt wird, die dann wie auf dem Stand der Technik ausgeführt wird - siehe unteren Teil der Fig. 3 und 4, jedoch - einheitlich auf der Grundlage von Schrittweiten anstatt von getrennt ausgewerteten Werten, Schrittweiten und sich auf Wert gründenden Mustern. Der vorhergesagte Wert wird berechnet durch Addition der gewählten Schrittweite zum Letztwert 0. Wenn der/die Zähler in der PHT 44 unter diesem Schwellenwert liegen, dann wird keine Vorhersage gemacht und damit wird dem entsprechenden Zyklus ein Status 'nicht vorhersagbar' zuerkannt.
Als nächstes wird das Aktualisierungs- und Initialisierungsverfahren der Zähler in näheren Einzelheiten beschrieben, da es einige wichtige Aspekte der vorliegende Erfindung enthüllt.
Um eine kurze Setup-Zeit des Prädiktors vorzusehen, sollte die Anzahl der Forderungen an einen bestimmten Tabelleneintrag, bis eine Vorhersage für den entsprechenden Befehl gemacht werden kann, möglichst klein gehalten werden. Somit wird eine besondere Initialisierung des Prädiktors erforderlich.
Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung läuft eine Vorhersage unmittelbar nach dem Abspeichern eines neuen Befehls im LVP/SP an, d. h., wenn der Befehl das nächste Mal getroffen wird, sagt der LVP den Letztwert voraus.
Wenn der Letztwert falsch ist, wird die augenblickliche Differenz als Schrittweite gespeichert, und das nächste Mal kann die Vorhersage unter Verwendung dieser Schrittweite gemacht werden. Dessen ungeachtet sagt der Prädiktor immer den Letztwert voraus, bis die Schrittweite bestätigt ist.
Ohne besondere Initialisierung schlägt das erfindungsgemäße Konzept vor, nur dann eine Vorhersage zu machen, wenn mindestens ein Zähler in der PHT einen bestimmten Schwellenwert überschreitet. Das heißt, dass in Abhängigkeit vom Zähleraktualisierungsverfahren - enthaltend seinerseits das Erhöhen des richtigen PHT-Zählers und dekrementieren der übrigen Zähler - verschiedene Anforderungen an den Prädiktor gestellt werden müssen, bis der Prädiktor die Wertvorhersage wirklich anlaufen lässt.
Insbesondere, wenn ein neuer Befehl erfasst wird und ein neuer Eintrag in die erste Tabelle geschrieben wird, wird der augenblickliche Wert in das letzte Wertefeld gesetzt, Schrittweite 0 in das str0 Feld, und das LRU wird initialisiert, so dass die nächste Schrittweite in str0 gesetzt wird und Schrittweite 0 ersetzt. Das SHP wird initialisiert mit dem Muster '00 00 00 00 00 00', das einen gültigen Verlauf für mindestens den Wert/Schrittweitenprädiktor beschreibt, der immer die Schrittweite benutzt, die in str0 gespeichert ist. Dieses Muster ist einzigartig für ein LVP/SP und die entsprechenden Zähler in der PHT müssen geeignet gesetzt werden, um sicherzustellen, dass die Vorhersage str0 benutzt wird, d. h., der erste Zähler wird auf einen Wert gesetzt, der weit über dem Schwellenwert liegt (z. B. auf den Maximumwert 12) und die übrigen Zähler werden auf einen Wert gesetzt, der weit unter dem Schwellenwert liegt (z. B. = 0).
Unter der Annahme, dass jedes Schrittweitenfeld (str0, str1, str2 oder str3) bei der LVP/SP-Vorhersage des entsprechenden SHP benutzt werden kann, adressieren die entsprechenden SHP ("00 00 00 00 00 00", "01 01 01 01 01 01", "10 10 10 10 10 10", oder "11 11 11 11 11 11") bestimmte Zähler in der PHT, die geeignet initialisiert (und sogar festeingestellt) werden können: Wenn die zur Vorhersage benutzte Schrittweite in Feld str2 gespeichert ist, wird der zweite Zähler des Eintrags '101010101010' in der PHT auf einen Wert voreingestellt, der weit über dem Schwellenwert liegt, und die restlichen Zähler werden auf Werte gesetzt, die weit unter dem Schwellenwert liegen. Dementsprechend können die folgenden PHT-Einträge auf die folgenden Zählerwerte voreingestellt (und sogar festeingestellt) werden:
Damit folgt das Hinzusetzen eines neuen Befehls in den vorgeschlagenen Prädiktor vorteilhaft den folgenden Schritten:
1. Schritt: Schreiben eines Eintrags in die erste Tabelle bei Erfassen eines neuen Befehls:
Der neue Eintrag wird mittels der Hash-Funktion adressiert. Das SHP wird initialisiert mit einem Muster für LVP/SP unter Verwendung von str0 ('00 00 00 00 00 00').
Damit zeigt das SHP auf den PHT-Eintrag '000000000000' mit seinem Zähler gesetzt auf: c0 = 12 (max), c1 = c2 = c3 = 0 (min).
Damit zeigt der c0-Zähler 45a auf str0-Feld 41a, das im nächsten Zyklus für eine Letztwertvorhersage benutzt werden kann.
2. Schritt: Wird durchgeführt wenn eine Schrittweite von nicht-0 gefunden wird:
Da das Schrittweitenfeld 41a, str0, für die Vorhersage benutzt wird, bleibt SHP gleich '00 00 00 00 00 00'.
Eine Schrittweite x wird in das Schrittweitenfeld 41a - str0 geschrieben, wobei x die Differenz zwischen dem augenblicklichen Wert und dem letzen Wert ist. Die nächste Vorhersage entspricht dann (Letztwert + x). Um sicherzustellen, dass die Schrittweite in str0 geschrieben wird - und dabei Schrittweite 0 ersetzt - muss LRU entsprechend initialisiert werden, wie oben beschrieben.
3. Schritt: Wenn keine einzelne Schrittweite gefunden wird:
Die Vorhersage benutzt immer noch str0, aber in dem leeren Schrittweitenfeld wird keine Schrittweite gespeichert. Das SHP wird verändert in Abhängigkeit von dem benutzten Schrittweitenfeld:
Wenn str1-Feld 41b zum Speichern des neuen Deltawerts benutzt wird, ist das entsprechende SHP '01 00 00 00 00 00'.
Die entsprechenden Zähler in der PHT bleiben unverändert, d. h., sie können die entsprechenden Werte irgendwo unter dem Schwellenwert haben, z. B. 3, bei einem Schwellenwert 6, oder Werte, die bereits durch einen anderen Befehl angeglichen wurden, der das gleiche Schrittweitenverlaufmuster befolgt.
Wenn alle entsprechenden Zähler in der PHT unter dem Schwellenwert liegen, wird das nächste Mal keine Vorhersage gemacht. Wenn ein bestimmtes Schrittweitenmuster erfasst und bestätigt wird, d. h. mindestens ein Zähler den Schwellenwert übersteigt, werden Vorhersagen gemacht durch Benutzen des Schrittweitenfelds, das durch den PHT-Zähler mit dem höchsten Wert spezifiziert wird.
Auf diese Weise kann eine unmittelbare Antwort der erfindungsgemäßen Vorhersagemethode auf die neutralen Anfangsbedingungen sowie auf das Erstellen neuer Tabelleneinträge erzielt werden.
Unter Bezugnahme auf Fig. 5 werden die grundlegenden Schritte im Steuerfluss während des Setup der Zähler und der Aktualisierungsverfahren der entsprechenden Felder in den Tabellen 40 und 44 in weiteren Einzelheiten beschrieben:
In einem ersten Schritt 510 - beim Anlaufen des Programms - werden alle Zähler initialisiert, d. h. beim Setup - vorteilhafterweise gemäß dem oben angegebenen Schema.
Wenn ein Ergebnis von einem neu abgeschlossenen Befehl verfügbar ist, siehe "Ja"-Zweig der Entscheidung 520, wird geprüft, Entscheidungsblock 530, ob der gleiche Befehl als in Tabelle 40 bereits vorhanden identifiziert werden kann. Damit wird das Kennzeichnungsfeld 14 in Tabelle 40 geprüft und das Kennzeichen wird mit der Befehlsadresse verglichen. Solange kein Ergebnis zur Verfügung steht - siehe "Nein"-Zweig - springt die Steuerung zurück und wiederholt die Prüfung 520.
Im "Nein"-Zweig der Entscheidung 530, d. h., wenn kein übereinstimmender Eintrag gefunden wurde, wird dieser augenblickliche Befehl in die erste Tabelle 40 gesetzt, Block 540: Insbesondere wird das Kennzeichnungsfeld 14 geschrieben, das SHP Feld 43 sowie das LRU-Feld 32 werden installiert, und eine Schrittweite 0 wird in das Schrittweitenfeld 41a des entsprechenden Eintrags in Tabelle 40 geschrieben.
Sonst, "Ja"-Zweig in 530, wird die augenblickliche Schrittweite berechnet durch Abziehen des letzten Wertes vom augenblicklichen Ergebnis, Schritt 550.
Dann wird überprüft, ob die gleiche Schrittweite in einem der Schrittweitenfelder 41a, . . . 41d gefunden werden kann, Entscheidungsblock 555.
Wenn nicht - im "Nein"-Zweig von 555 - wird die augenblickliche Schrittweite im entsprechenden Schrittweitenfeld gespeichert, das spezifiziert wird durch den Wertespeicher im LRU-Feld 32, und das LRU-Feld wird aktualisiert, Block 560.
Im "Ja"-Zweig von 555 wurde eine augenblickliche Schrittweite bereits in einem der Schrittweitenfelder gespeichert. Jetzt, sowie auch nach Durchführen des Blocks 560, werden die entsprechenden PHT-Zähler 45a . . . 45d aktualisiert, Block 565, durch Erhöhen des korrekten Zählers um 3, und Dekrementieren der anderen Zähler um 1. Es muss darauf hingewiesen werden, dass der entsprechende Eintrag in Tabelle 44 vom SHP in Feld 43 adressiert wird.
Dann wird, wie auch nach Durchführen von Block 540, das neue Schrittweitenverlaufmuster berechnet wie vorstehend beschrieben, Schritt 570. Insbesondere wird das SHP-Feld 43 um zwei Bits nach links verschoben und die leeren Bits auf der rechten Seite werden durch das neue Bit-Muster entsprechend der augenblicklichen korrekten Schrittweite ersetzt. Wenn dieser Schritt nicht gefunden wird, wird der augenblickliche Schritt geschrieben zum Ersetzen des zuletzt benutzten Schrittweitenfelds, und das entsprechende 2-Bit- Muster wird in das SHP 43 gelegt.
Schließlich wird das Ergebnis in das letzte Wertefeld 42, Schritt 575, gespeichert und die Steuerung springt in Schleife zurück zum Entscheidungsblock 520, um den nächsten Befehl nach seinem Abschluss zu abzuarbeiten.
Nehmen wir jetzt Bezug auf Fig. 6, hier wird das Vorhersageverfahren in näheren Einzelheiten beschrieben. Es wird darauf hingewiesen, dass - in dieser bevorzugten Ausführungsform - die Aktualisierungs/Setup-Verfahren und das jetzt beschriebene Vorhersageverfahren als unabhängig laufende Verfahren implementiert sind, die durch entsprechende Schreib- (Fig. 5) und Lese-(Fig. 6)-Zugriffe auf die gleiche Hardware-Anordnung zugreifen.
Ein beliebiger Befehl wird gemäß dem folgenden Steuerschema behandelt:
In einem Schritt 610 wird der Befehl zunächst decodiert. Dann wird in einem Entscheidungsblock 620 geprüft, ob dieser gleiche Befehl als in Tabelle 40 vorkommend identifiziert werden kann. Damit wird die Befehlsadresse verglichen mit der Kennzeichnung, die im Kennzeichnungsfeld 14 in Tabelle 40 gespeichert ist.
Wenn kein übereinstimmender Befehl gefunden wird, ist keine Vorhersage möglich, Block 630, und der Status 'unvorhersagbar' kann vorteilhafterweise signalisiert werden, d. h. ausgegeben werden, um eine Fehlvorhersage zu vermeiden, siehe Schritt 635. Dann wird die Steuerung wieder zu Schritt 610 zurückgegeben zum Decodieren des nächsten Befehls.
Ansonsten, "Ja"-Zweig der Entscheidung 620, wird nach einer Kennzeichnungsübereinstimmung, das Schrittweitenverlaufmuster aus der ersten Tabelle 40, Feld 43 gelesen, Schritt 640. Dieses Muster wird benutzt zum Auswählen eines entsprechenden übereinstimmenden Eintrags in die zweite Tabelle 44 zum Auswerten und Wählen der Zählerwerte, Schritt 650.
So können die Zähler und die entsprechenden Muster gelesen und ausgewertet werden, insbesondere wenn der augenblickliche Zählstand eines Zählers über einem vorgegebenen Schwellenwert liegt, z. B. bei 6, Entscheidungsblock 670.
Wenn im "Ja"-Zweig von 670 ein Zähler eine Zählung von über dem Schwellenwert 6 aufweist, kann die entsprechende Vorhersage automatisch gemacht werden durch Auszählen des höchsten Zählers, Schritt 660. Das ist ein bemerkenswerter Vorteil im Vergleich zum Stand der Technik, der ein kompliziertes Schaltschema braucht, um vom LVP zu SP, und insbesondere von SP zu CP umzuschalten.
Dann wird im Schritt 690 der augenblickliche Vorhersagewert berechnet durch Addieren des letzten Wertes zur Schrittweite, die vom am höchsten stehenden Zähler gewählt wurde. Dann springt die Steuerung wieder zurück zum Schritt 610.
In der obigen Beschreibung wurde die Erfindung beschrieben unter Bezugnahme auf eine spezifische, beispielhafte Ausführungsform. Es ist jedoch offenbar, dass verschiedene Modifikationen und Veränderungen angebracht werden können ohne von Umfang und Wesensart der Erfindung abzuweichen, die in den anhängigen Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen müssen daher lediglich als illustrativ anstatt im einschränkenden Sinn angesehen werden.
Insbesondere können die Abmessungen der in der obigen beispielhaften Ausführungsform angegebenen Felder verändert werden, wie für die verwendete Prozessorarchitektur entsprechend erforderlich ist.

Claims (10)

1. Ein Hybrid-Vorhersageverfahren für computerberechnete Werte, das in parallel rechnenden Prozessoren einsetzbar ist, gekennzeichnet durch die Anwendung von Schrittlängen der Wertedifferenzen aufeinander folgender, zu einer jeweiligen Befehlsadresse gehöriger, computerberechneter Werte für die Letztwertvorhersage für eine auf Schrittlängen basierende Wertevorhersage und für eine auf Verlaufmuster basierende Wertevorhersage, wobei eine vorhandene Mehrzahl von der jeweilig aufgetretenen Befehlsadresse zugeordneten unterschiedlichen Schrittlängen (41a, 41b, 41c, 41d) in einer bezüglich dieser Befehlsadressen geordneten Tabelle (40) aufgelistet werden, und für die Wertvorhersage eine Auswahl der der jeweiligen Befehlsadresse zugeordneten Schrittlänge unter Berücksichtigung von auftretenden Verlaufsmustern von Schrittlängen und deren Häufigkeit unter Zuhilfenahme einer zweiten, den Schrittlängenverlauf verfolgenden Tabelle (44), zur Addition mit dem Letztwert (42) erfolgt.
2. Das Verfahren gemäß Anspruch 1, das ferner die Schritte zur Berechnung (550) einer augenblicklichen Schrittlänge aus einem Vergleich zwischen dem letzten Ergebniswert aus einem früher abgeschlossenen Beispiel eines Befehls und dem augenblicklichen Ergebnis des gleichen Befehls enthält, unter Aktualisieren (565) mindestens eines Zählers einer Vielzahl von Sättigungszählern (45a, 45b, 45c, 45d) in einer Schrittlängenverlauf-verfolgenden Tabelle (44) gemäß der augenblicklichen Schrittlänge, und Vorhersagen (690) eines Werts, berechnet aus dem Vergleich des letzten sich ergebenden Werts aus einem früher abgeschlossenen Befehl und der Schrittlänge, die in einem Schrittlängenfeld gespeichert ist, das einen Wert über einem getroffenen Schwellenwert enthält.
3. Das Verfahren gemäß Anspruch 1, ferner beinhaltend, für einen in der ersten Tabelle (40) noch nicht gespeicherten Befehl, die Schritte zum Initialisieren(510) eines Zählers, der seinen augenblicklichen Ergebniswert mit einem Sättigungswert, und die übrigen Zähler mit den entsprechenden gegenüberliegenden Sättigungswerten reflektiert, und zur Aktualisierung der Zähler (45a, 45b, 45c, 45d) entsprechend dem Vorkommen von Werten, berechnet aus dem Abschluss späterer Beispiele des gleichen Befehls.
4. Das Verfahren gemäß Anspruch 1, ferner beinhaltend die Schritte des Inkrementierens (565) des entsprechenden Zählers beim Vorkommen der gleichen Schrittlänge als wählbar (650) durch diesen Zähler, und Dekrementieren(565) der restlichen Zähler, und Vorhersagen eines Werts, berechnet aus der Schrittlänge, wählbar (650) durch den am höchsten stehenden Zähler, wenn (670) der am höchsten stehende Zähler einen Wert über einem vorgegebenen Schwellenwert aufweist.
5. Das Verfahren gemäß Anspruch 1, ferner beinhaltend den Schritt des Signalisierens (635), dass ein Wert nicht vorhergesagt werden kann, wenn kein Zähler (45a, 45b, 45c, 45d) über dem Schwellenwert steht.
6. Hybrid-Vorhersageschaltung enthaltend Schaltungen entsprechend einer ersten Tabelle (40) mit einer ersten Vielzahl von Einträgen, wobei jeder Eintrag einer Befehlsadresse zugeordnet ist und eine zweite Vielzahl von Schrittlängenfeldern (41a, 41b, 41c, 41d), ein Schrittlängenverlaufmusterfeld (43), und eine Musterverlauftabelle (44) enthält, die die gleiche zweite Vielzahl Zähler (45a, . . . 45d) speichert und so angeordnet ist, dass sie adressierbar ist durch einen Zwei-Tabellen- Nachschlagmechanismus, der ein Schrittlängenverlaufmuster (SHP)(43) zum Auswählen(650) eines Eintrags in der zweiten Tabelle (44) enthält, und die Zähler (45a, . . . 45d) so angeordnet sind, dass sie gemäß dem Vorkommen wiederholter Schrittlängen oder Schrittlängenmuster aktualisiert werden (565).
7. Hybrid-Vorhersageschaltung gemäß Anspruch 6, in dem die Anzahl der Schrittlängenfelder (41a, 41b, 41c, 41d) größer als 3 und kleiner als 7 ist.
8. Eine Untereinheit zur Anwendung in Mikroprozessorvorrichtungen mit wenigstens einer Vorhersageschaltung gemäß einem der Asprüche 6 oder 7.
9. Eine Mikroprozessorvorrichtung mit wenigstens einer Untereinheit gemäß Anspruch 8.
10. Ein Rechnersystem mit einer Mikroprozessorvorrichtung gemäß Anspruch 9.
DE10121792A 2000-05-26 2001-05-04 Universelle Ladeadresse/Wertevorhersageschema Expired - Fee Related DE10121792C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP00111339 2000-05-26

Publications (2)

Publication Number Publication Date
DE10121792A1 DE10121792A1 (de) 2001-12-06
DE10121792C2 true DE10121792C2 (de) 2003-09-25

Family

ID=8168843

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10121792A Expired - Fee Related DE10121792C2 (de) 2000-05-26 2001-05-04 Universelle Ladeadresse/Wertevorhersageschema

Country Status (2)

Country Link
US (1) US6986027B2 (de)
DE (1) DE10121792C2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7089400B1 (en) * 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
CN1726459A (zh) * 2002-12-12 2006-01-25 皇家飞利浦电子股份有限公司 基于用于数据预取的步距预测的计数器
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US6976147B1 (en) * 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US8386648B1 (en) 2003-06-26 2013-02-26 Nvidia Corporation Hardware support system for accelerated disk I/O
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US8356142B1 (en) * 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US8700808B2 (en) * 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US7461211B2 (en) * 2004-08-17 2008-12-02 Nvidia Corporation System, apparatus and method for generating nonsequential predictions to access a memory
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7554464B1 (en) * 2004-09-30 2009-06-30 Gear Six, Inc. Method and system for processing data having a pattern of repeating bits
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US8533430B2 (en) * 2005-04-14 2013-09-10 International Business Machines Corporation Memory hashing for stride access
US20060253677A1 (en) * 2005-05-04 2006-11-09 Arm Limited Data access prediction
US7747841B2 (en) * 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
AU2007212342B2 (en) 2006-02-03 2011-05-12 Russell H. Fish Iii Thread optimized multiprocessor architecture
US7657729B2 (en) * 2006-07-13 2010-02-02 International Business Machines Corporation Efficient multiple-table reference prediction mechanism
US7856548B1 (en) * 2006-12-26 2010-12-21 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold
US7788473B1 (en) * 2006-12-26 2010-08-31 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using the storage destination of a load operation
US9311085B2 (en) * 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
US8356128B2 (en) * 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US8370552B2 (en) * 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US8698823B2 (en) * 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
US20110010506A1 (en) * 2009-07-10 2011-01-13 Via Technologies, Inc. Data prefetcher with multi-level table for predicting stride patterns
JP5552042B2 (ja) * 2010-12-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析の方法、システムおよびプログラム
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
WO2016097790A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
US11709679B2 (en) * 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
CN108762221B (zh) * 2018-07-09 2021-05-11 西安电子科技大学 含有不可控事件的自动制造系统的无死锁控制方法
US11204771B2 (en) * 2019-10-24 2021-12-21 Arm Limited Methods and apparatus for handling processor load instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442767A (en) * 1992-10-23 1995-08-15 International Business Machines Corporation Address prediction to avoid address generation interlocks in computer systems
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2503984B2 (ja) * 1986-07-15 1996-06-05 日本電気株式会社 情報処理装置
JPS63284673A (ja) * 1987-05-15 1988-11-21 Nec Corp 情報処理装置
US5222767A (en) * 1991-09-30 1993-06-29 Volkema Russell H Double use manuscript divider
EP0663083B1 (de) * 1992-09-29 2000-12-20 Seiko Epson Corporation System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
JPH09231203A (ja) * 1996-02-27 1997-09-05 Kofu Nippon Denki Kk ベクトルストア追い越し制御回路
US5919256A (en) * 1996-03-26 1999-07-06 Advanced Micro Devices, Inc. Operand cache addressed by the instruction address for reducing latency of read instruction
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
JP2000132390A (ja) * 1998-10-23 2000-05-12 Toshiba Corp プロセッサ及び分岐予測器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442767A (en) * 1992-10-23 1995-08-15 International Business Machines Corporation Address prediction to avoid address generation interlocks in computer systems
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CODRESCU, L. u.a.: Architecture of Atlas Chip-Mul-tiprocessor: Dynamically Parallelizing Irregular Applications. In: IEEE Trans. on Computers, Vol. 50, No. 1, Januar 2001, S. 67-82 *
MARCUELLO, Pedro u.a.: Value prediction for specu-lative multithreaded Architectures. In: Proc. of the 32nd Annual ACM/IEEE International Symposium on Microarchitectures, IEEE, 1999, S. 230-236 *
NAKRA, Tarun u.a.: Global Context-Based Value Prediction. In: Proc. 5th International Symposium on High-Performance Computer Architecture, IEEE, 1999, S. 4-12 *
SAZEIDES, Y. u.a.: The Predictability of Data Values. In: Proc. of the 30th Annual ACM/IEEE International Symposium on Microarchitectures, 1997, S. 248-258 *
WANG, K. u.a.: Highly Accurate Data Value Predic- tion using Hybrid Predictors. In: Proc. of the 30th Annual ACM/IEEE International Symposium on Microarchitecture, IEEE, 1997, S. 281-290 *

Also Published As

Publication number Publication date
US6986027B2 (en) 2006-01-10
DE10121792A1 (de) 2001-12-06
US20020023204A1 (en) 2002-02-21

Similar Documents

Publication Publication Date Title
DE10121792C2 (de) Universelle Ladeadresse/Wertevorhersageschema
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
EP0010198B1 (de) Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher
DE4447238B4 (de) Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage
AT389772B (de) Datenverarbeitungsanordnung mit einem programmspeicher und einer schutzeinheit
DE112007001397B4 (de) Verfahren zum Vorabholen von Daten
DE69838966T2 (de) Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen
DE69734403T2 (de) Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE2630323A1 (de) Datenspeichereinrichtung
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen
DE3131341A1 (de) "pufferspeicherorganisation"
EP0048767A1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE10015675A1 (de) Spekulative Auswahl von heißen Spuren in einem dynamischen CACHE-Übersetzer mit geringem Aufwand
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE2403039C2 (de) Einrichtung zur Befehlsausführung in einer adressenerweiterten elektronischen Datenverarbeitungsanlage
DE112004002505T5 (de) Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen
DE60036667T2 (de) Prozess zur Seitenfreigebung für virtuellen Adressierungsmechanismus
DE2906685A1 (de) Instruktionsdecodierer
AT501213B1 (de) Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten
DE19926580C2 (de) Verfahren und Vorrichtung zur Vorhersage von Sprungzieladressen
EP0818728B1 (de) Verfahren zur Behandlung von indizierten Sprüngen bei einer Codetransformation
DE10232488B4 (de) Verfahren und Prozessor zur Verzweigungsvorhersage mit zwei parallel durchsuchten Verzweigungsziel-Speichern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8304 Grant after examination procedure
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7

R081 Change of applicant/patentee

Owner name: INTEL CORPORATION (N.D.GES.D. STAATES DELAWARE, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

Effective date: 20130529

Owner name: INTEL CORPORATION (N.D.GES.D. STAATES DELAWARE, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, US

Effective date: 20130529

R082 Change of representative

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

Effective date: 20130529

Representative=s name: BOEHMERT & BOEHMERT, DE

Effective date: 20130529

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee