DE112010004322T5 - Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge - Google Patents

Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge Download PDF

Info

Publication number
DE112010004322T5
DE112010004322T5 DE112010004322T DE112010004322T DE112010004322T5 DE 112010004322 T5 DE112010004322 T5 DE 112010004322T5 DE 112010004322 T DE112010004322 T DE 112010004322T DE 112010004322 T DE112010004322 T DE 112010004322T DE 112010004322 T5 DE112010004322 T5 DE 112010004322T5
Authority
DE
Germany
Prior art keywords
instruction
load
store
hazard
entry
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.)
Ceased
Application number
DE112010004322T
Other languages
English (en)
Inventor
Brian William Thompto
Christian Jacobi
Gregory William Alexander
Khary Jason Alexander
Brian William Curran
James Russell Mitchell
Jonathan Ting Hsieh
Brian Robert Prasky
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
Priority claimed from US12/644,923 external-priority patent/US8468325B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010004322T5 publication Critical patent/DE112010004322T5/de
Ceased legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Abstract

Ein Verfahren und ein Informationsverarbeitungssystem verwalten Lade- und Speichervorgangsoperationen, die in abweichender Reihenfolge ausgeführt werden. Es wird mindestens eine der folgenden Anweisungen ausgeführt: eine Ladevorgangsanweisung und eine Speichervorgangsanweisung. Es erfolgt eine Feststellung, dass eine Operand-Speichervorgang-Vergleich-Gefahr aufgetreten ist. Auf der Grundlage der Feststellung wird ein Eintrag in einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren erstellt. Der Eintrag umfasst mindestens eine Anweisungsadresse der Anweisung, die ausgeführt wurde, und ein Gefahrenanzeigeattribut, das der Anweisung zugeordnet ist. Das Gefahrenanzeigeattribut zeigt an, dass die Anweisung auf die Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist. Wenn eine Ladevorgangsanweisung des Gefahrenanzeigeattributes zugeordnet ist, wird die Ladevorgangsanweisung von allen Speichervorgangsanweisungen abhängig, die einem im Wesentlichen gleichen Attribut zugeordnet sind.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein Mikroprozessoren und insbesondere das Verwalten von Lade- und Speichervorgangsoperationen, die in abweichender Reihenfolge durchgeführt werden.
  • HINTERGRUND DER ERFINDUNG
  • Ein Mikroprozessor, der in der Lage ist, Maschinenanweisungen in abweichender Reihenfolge (out of order) auszugeben und auszuführen, erlaubt im Allgemeinen, dass Ladevorgänge (loads) vor Speichervorgängen (stores) durchgeführt werden können. Diese Funktion ermöglicht einen großen Leistungsvorteil, vorausgesetzt, dass die Ladeadresse und die Speicheradresse nicht beide dieselbe physische Adresse besitzen. Bei üblichen Programmen sind Fälle selten, in denen ein Ladevorgang dem Speichervorgang vorausgeht und ihre physischen Adressen übereinstimmen. Da die Entdeckung dieser Speichervorgangsverletzungsbedingung jedoch in der Anweisungsausführungs-Pipeline üblicherweise erst spät erfolgt, kann der Wiederherstellungsaufwand erheblich sein. Zum Beispiel bringt es der Wiederherstellungsprozess mit sich, dass die Ladevorgangsanweisung, welche die Verletzung verursacht hat, und alle neueren Anweisungen, die in der Programmreihenfolge hinter der Ladevorgangsanweisung stehen, für ungültig erklärt werden müssen und die Ladevorgangsanweisung ein zweites Mal ausgegeben werden muss.
  • Herkömmliche Mechanismen zum Verwalten von Speichervorgang-Vergleich-Gefahren (store-compare hazards) verwalten diese Gefahren im Allgemeinen nicht sehr wirksam.
  • KURZDARSTELLUNG DER ERFINDUNG
  • In einer Ausführungsform wird ein Verfahren zum Verwalten von Lade- und Speichervorgangsoperationen offenbart, die in abweichender Reihenfolge ausgeführt werden. Das Verfahren umfasst das Ausführen mindestens einer der folgenden Anweisungen: eine Ladevorgangsanweisung und eine Speichervorgangsanweisung. Auf der Grundlage des Ausführens erfolgt eine Feststellung, dass eine Operand-Speichervorgang-Vergleich-Gefahr aufgetreten ist. Auf der Grundlage der Feststellung wird ein Eintrag in einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren erstellt. Der Eintrag umfasst mindestens eine Anweisungsadresse der ausgeführten Anweisung und ein Gefahrenanzeigeattribut (wie beispielsweise ein Bit), das der Anweisung zugeordnet ist. Das Gefahrenanzeigeattribut zeigt an, dass die Anweisung auf eine Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist.
  • In einer weiteren Ausführungsform wird ein Verfahren zum Verwalten von Lade- und Speichervorgangsoperationen offenbart, die in abweichender Reihenfolge ausgeführt werden. Das Verfahren umfasst das Holen einer Anweisung. Bei der Anweisung handelt es sich entweder um eine Ladevorgangsanweisung oder eine Speichervorgangsanweisung. Die Anweisung wird decodiert.
  • Als Reaktion auf das Decodieren wird eine Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren nach einer Anweisungsadresse der Anweisung abgefragt. Die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst einen ersten Eintrag für eine Ladevorgangsanweisung und einen zweiten Eintrag für eine Speichervorgangsanweisung. Der erste und der zweite Eintrag sind voneinander unabhängig. Der erste und der zweite Eintrag geben an, dass die Ladevorgangsanweisung bzw. die Speichervorgangsanweisung zuvor auf eine Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist. Der erste und der zweite Eintrag umfassen jeweils mindestens eine Anweisungsadresse entweder der Ladevorgangsanweisung oder der Speichervorgangsanweisung und ein einer Operand-Speichervorgang-Vergleich-Gefahr zugeordnetes Gefahrenanzeigeattribut. Als Reaktion auf das Abfragen der Vorhersagetabelle erfolgt eine Feststellung, dass die Anweisung entweder dem ersten oder dem zweiten Eintrag in der Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren zugeordnet ist. Auf der Grundlage der Feststellung wird das Gefahrenanzeigeattribut identifiziert, das entweder im ersten oder zweiten Eintrag enthalten ist, welcher der Anweisung zugeordnet ist. Wenn die Anweisung dem ersten Eintrag zugeordnet ist, handelt es sich bei der Anweisung um eine Ladevorgangsanweisung. Die Anweisung wird auf der Grundlage des Gefahrenanzeigeattributes, das identifiziert wurde, markiert. Die Markierung macht eine Ausführung der Anweisung davon abhängig, dass mindestens eine Speichervorgangsanweisung, die einem Eintrag der Vorhersagetabelle zugeordnet ist, der ein Gefahrenanzeigeattribut umfasst, das im Wesentlichen des Gefahrenanzeigeattributes gleicht, das der Anweisung zugeordnet ist, ein gegebenes Ausführungsstadium erreicht hat. Wenn die Anweisung dem zweiten Eintrag zugeordnet ist, handelt es sich bei der Anweisung um eine Speichervorgangsanweisung.
  • In noch einer weiteren Ausführungsform wird ein Informationsverarbeitungssystem zum Verwalten von Lade- und Speichervorgangsoperationen offenbart, die in abweichender Reihenfolge ausgeführt werden. Das Informationsverarbeitungssystem umfasst einen Speicher und einen Prozessor, der zum Datenaustausch mit dem Speicher verbunden ist. Der Prozessor ist so eingerichtet, dass er ein Verfahren durchführen kann, welches das Ausführen mindestens einer der folgenden Anweisungen umfasst: eine Ladevorgangsanweisung und eine Speichervorgangsanweisung. Auf der Grundlage des Ausführens erfolgt eine Feststellung, dass eine Operand-Speichervorgang-Vergleich-Gefahr aufgetreten ist. Ein Eintrag in einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren wird auf der Grundlage der Feststellung erstellt. Der Eintrag umfasst mindestens eine Anweisungsadresse der ausgeführten Anweisung und ein Gefahrenanzeigeattribut (wie beispielsweise ein Bit), das der Anweisung zugeordnet ist. Das Gefahrenanzeigeattribut zeigt an, dass die Anweisung auf die Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die angehängten Figuren, in denen gleiche Bezugsziffern identische oder funktionsgleiche Elemente in verschiedenen Ansichten bezeichnen und die zusammen mit der nachstehenden detaillierten Beschreibung in die Beschreibung aufgenommen und Bestandteil davon sind, dienen dazu, verschiedene Ausführungsformen weiter zu veranschaulichen und verschiedene Grundgedanken und Vorteile sämtlich gemäß der vorliegenden Erfindung zu erläutern, wobei:
  • 1 ein Beispiel einer Betriebsumgebung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 2 ein Beispiel eines Ladevorgangswarteschlangeneintrags gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 3 ein Beispiel eines Speichervorgangswarteschlangeneintrags gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 4 ein Beispiel eines Eintrags einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 5 bis 7 Ablaufflusspläne zeigen, die verschiedene Beispiele für das Erstellen eines Eintrags in einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung darstellt;
  • 8 einen Ablaufflussplan zeigt, der ein Beispiel für das Vorhersagen und Verhindern von Operand-Speichervorgang-Vergleich-Gefahren gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung darstellt; und
  • 9 ein Blockschaltbild zeigt, das ein Beispiel für ein Informationsverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Wie erforderlich werden hierin detaillierte Ausführungsformen der vorliegenden Erfindung offenbart; es versteht sich jedoch, dass die offenbarten Ausführungsformen lediglich Beispiele der Erfindung darstellen, die in vielfältigen Formen ausgebildet werden kann. Daher sind spezifische hierin offenbarte strukturelle und funktionelle Einzelheiten nicht als einschränkend, sondern lediglich als Grundlage für die Ansprüche und als veranschaulichende Grundlage zum Unterweisen eines Fachmannes anzusehen, die vorliegende Erfindung in praktisch jeder beliebigen geeignet ausgebildeten Struktur und Funktion auf vielfältige Weise zu verwenden. Weiterhin sind die hierin verwendeten Begriffe und Ausdrücke nicht als einschränkend anzusehen, sondern dienen vielmehr dazu, eine verständliche Beschreibung der Erfindung zur Verfügung zu stellen.
  • Die hierin verwendeten Begriffe „ein” oder „eine” sind als eines oder mehr als eines definiert. Der hierin verwendete Begriff „Vielzahl” ist als zwei oder mehr als zwei definiert. Die hierin verwendeten Begriffe „ein weiterer”, „eine weitere” oder „ein weiteres” sind als mindestens ein zweites oder mehr definiert. Die hierin verwendeten Begriffe „enthalten”, „beinhalten” und/oder „aufweisen” sind als „umfassen” definiert (d. h. offene Sprache). Der hierin verwendete Begriff „verbunden” ist so definiert, dass nicht notwendigerweise eine direkte oder mechanische Verbindung vorliegen muss. Begriffe in Plural und Singular sind identisch, sofern nicht ausdrücklich anderweitig festgelegt.
  • Überblick
  • In Mikroprozessoren, die Lade- und Speichervorgangsanweisungen in abweichender Reihenfolge ausführen, können aufgrund des Neuordnens zwischen unabhängigen Lade- und Speichervorgängen drei Operand-Speichervorgang-Vergleich-Gefahren (operand store compare hazards, OSC-Gefahren) auftreten (Speichervorgang-Treffer-Ladevorgang (store-hit-load), Ladevorgang-Treffer-Speichervorgang ohne Weiterleitungsmöglichkeit (non-forwardable load-hit store) und dauerhafter Ladevorgang-Treffer-Speichervorgang ohne Weiterleitungsmöglichkeit (persistent non-forwardable load-hit store)). Zum Beispiel wird angenommen, dass ein Ladevorgang für Adresse A auf einen Speichervorgang für Adresse A folgt. In einer Situation kann der Ladevorgang vor dem Speichervorgang ausgeführt werden, d. h. die Speichervorgangswarteschlange (Store Queue STQ) umfasst nicht die Adressinformationen des Speichervorgangs. Daher zeigt die Speichervorgangswarteschlange keinen Konflikt an, wenn der Ladevorgang ausgeführt wird. Nachdem die Ausführung des Ladevorgangs beendet ist, wird der Speichervorgang ausgeführt, erkennt den Konflikt mit dem bereits beendeten Ladevorgang in der Ladevorgangswarteschlange und leert die Pipeline, um den Ladevorgang und jede darauffolgende Anweisung anzuhalten. Dies ist ein sehr aufwändiger Vorgang, da ein großer Arbeitsumfang erneut durchgeführt werden muss (der Ladevorgang und alle zukünftigen Anweisungen, die bereits zuvor spekulativ ausgeführt worden sind). Die vorstehend beschriebene Situation wird als „Speichervorgang-Treffer-Ladevorgang” (Store-hit-Load, SHL) bezeichnet.
  • In einer weiteren Situation führt der Speichervorgang seine Adressberechnung durch, die Daten für den Speichervorgang werden jedoch verzögert, z. B. weil die Daten erzeugende Anweisung eine lange Latenzzeit aufweist (z. B. Division). Dann wird der Ladevorgang ausgeführt, bevor die Speichervorgangsdaten in die STQ geschrieben werden. Der Ladevorgang erkennt, dass er vom Speichervorgang abhängt, der Ladevorgang kann jedoch die Speichervorgangsdaten nicht weiterleiten, da die Daten nicht verfügbar sind. Daher muss der Ladevorgang zurückgewiesen und später, nachdem die Speichervorgangsdaten verfügbar geworden sind, erneut versucht werden. Diese Situation wird als „Ladevorgang-Treffer-Speichervorgang ohne Weiterleitungsmöglichkeit” (non-forwardable Load-hit-Store, nf-LHS) bezeichnet.
  • In noch einer weiteren, der vorstehend erläuterten nf-LHS-Situation ähnlichen Situation können eventuell bestimmte Speichervorgangsanweisungen (z. B. wenn es eine Zeilenüberkreuzung gibt oder die Länge > 8 Byte ist) allgemein (aufgrund des spezifischen Aufbaus der STQ) nicht weiterleitbar sein. Auch im Falle, dass die Speichervorgangsdaten bereits in die STQ geschrieben sind, muss der Ladevorgang in dieser Situation wieder und wieder eine Schleife durchlaufen, bis der Speichervorgang in den L1-Cachespeicher zurückgeschrieben ist. Diese Situation wird als „dauerhafter nf-LHS” (persistent nf-LHS) bezeichnet.
  • Herkömmliche Mechanismen zur Verwaltung einer Verarbeitung in abweichender Reihenfolge können die drei oben beschriebenen Gefahren im Allgemeinen nicht wirksam bewältigen. So beschränken zum Beispiel manche herkömmliche Mechanismen den Parallelismus auf Anweisungsebene (Instruction-Level-Parallelism ILP), indem sie den Ladevorgang von allen vorhergehenden Speichervorgängen abhängig machen. Andere herkömmliche Mechanismen können generell nicht mit dem verbreiteten Fall umgehen, dass eine Ladevorgangsanweisung von mehreren Speichervorgangsanweisungen abhängt, wobei sich diese mehreren Speichervorgangsanweisungen auf unterschiedlichen Zweigpfaden befinden können, die zur Ladevorgangsanweisung führen.
  • Ein Vorteil der verschiedenen Ausführungsformen der vorliegenden Erfindung liegt jedoch darin, dass die drei vorstehend erläuterten Gefahren wirksam vermieden werden. In mindestens einer Ausführungsform wird eine Vorhersagetabelle erstellt, die vorhersagt, welche Ladevorgänge und Speichervorgänge Abhängigkeiten aufweisen, sowie welcher Art diese Abhängigkeiten sind (wie beispielsweise e-Bit-Abhängigkeiten oder w-Bit-Abhängigkeiten). Nach der Anweisungsdecodierung werden dann e-Bit-Ladevorgänge von allen vorhergehenden e-Bit-Speichervorgängen abhängig gemacht und durch die Anweisungsausgabelogik so behandelt, als ob es sich um eine reguläre Registerabhängigkeit handeln würde. Dies verzögert wirksam die Ausführung der e-Bit-Ladevorgangsanweisung, bis alle e-Bit-Speichervorgänge ihre Adressberechnung ausgeführt und ihre Daten in die STQ geschrieben haben. Dies beseitigt in der Tat SHL- und nf-LHS-Gefahren. Bei w-Bit-Abhängigkeiten wird der Ladevorgang vom Zurückschreiben des letzten als w-Bit-Speichervorgang vorhergesagten Speichervorgangs in den L1-Cachespeicher abhängig gemacht. Dies verhindert wirksam dauerhafte nf-LHS-Gefahren.
  • Betriebsumgebung
  • 1 zeigt ein Blockschaltbild, das ein Beispiel einer Betriebsumgebung 100 darstellt, die auf einen oder mehrere Prozesse, Anweisungen und Daten gemäß einer oder mehrerer Ausführungsformen der vorliegenden Erfindung anwendbar ist. Der Prozessor 101 umfasst einen einzelnen Prozessor mit integrierter Schaltung, wie beispielsweise einen superskalaren Prozessor, der verschiedene Ausführungseinheiten, Register, Puffer, Speicher und andere Funktionseinheiten enthält, die alle durch integrierte Schaltungen ausgebildet sind. Der Prozessor 101 ist in einer Ausführungsform in der Lage, Anweisungen in abweichender Reihenfolge auszugeben und auszuführen.
  • Der Prozessor 101 umfasst in einer Ausführungsform eine Anweisungsholeinheit (instruction fetch unit IFU) 102, eine Anweisungsdecodiereinheit (instruction decode unit IDU) 104, eine Anweisungsausgabeeinheit (instruction issue unit ISU) 106, eine Lade-/Speichereinheit (load/store unit LSU) 108, eine Operand-Adressen-Erzeugungseinheit 110, eine Festkommaeinheit 112 (fixed point unit FXU) (oder eine oder mehrere beliebige weitere Ausführungseinheiten) und weitere Komponenten 114, wie beispielsweise verschiedene weitere Ausführungseinheiten, Register, Puffer, Speicher und andere Funktionseinheiten. Die IFU 102 umfasst in einer Ausführungsform eine Operand-Speichervorgang-Vergleich-Vorhersagetabelle (operand-store-compare (OSC) prediction table) 116. Die OSC-Vorhersagetabelle 116 wird nachstehend detaillierter erläutert.
  • Die Ausgabeeinheit 106 umfasst in dieser Ausführungsform eine Ausgabewarteschlange 118. Die LSU 106 umfasst in dieser Ausführungsform eine Ladevorgangswarteschlange (load queue LDQ) 120, eine Speichervorgangswarteschlange (STQ) 122 und einen L1-Cachespeicher 124. Die LDQ 120 und die STQ 122 umfassen jeweils Einträge 126 bzw. 128, die zusätzliche Informationen verfolgen, welche ausstehenden Lade- und Speichervorgangsanweisungen zugeordnet sind. Es ist festzuhalten, dass die vielfältigen Ausführungsformen der vorliegenden Erfindung nicht auf die Konfiguration des in 1 gezeigten Prozessors beschränkt sind. Die Ausführungsformen der vorliegenden Erfindung sind auf eine Vielfalt von Architekturen übertragbar, die von dem in 1 gezeigten Beispiel abweichen können.
  • Im Allgemeinen holt die IFU 102 Anweisungscodes, die in einem I-Cachespeicher gespeichert sind, der Teil des L1-Cachespeichers 124 sein kann. Diese geholten Anweisungscodes werden durch die IDU 104 in Anweisungsverarbeitungsdaten decodiert. Nachdem sie decodiert sind, werden die Anweisungen abgefertigt und vorübergehend in einer entsprechenden Ausgabewarteschlange 118 platziert. Die Anweisungen bleiben in der Ausgabewarteschlange 118, bis all ihre benötigten Operanden verfügbar sind. Von der oder den Ausgabewarteschlangen 118 können Anweisungen auf opportune Weise an die Ausführungseinheiten des Prozessors 100, z. B. die LSU 108, die FXU 112 usw., zur Ausführung ausgegeben werden. In anderen Worten: Die Anweisungen können in abweichender Reihenfolge ausgegeben werden. Für den möglichen Fall, dass Anweisungen erneut ausgegeben werden müssen, verbleiben die Anweisungen jedoch in der oder den Ausgabewarteschlangen 118, bis die Ausführung der Anweisungen abgeschlossen ist und die sich ergebenden Daten (falls vorhanden) zurückgeschrieben sind.
  • Während der Ausführung in einer der Ausführungseinheiten 108, 112 empfängt eine Anweisung Operanden (falls vorhanden) von einem oder mehreren architekturdefinierten Registern und/oder Umbenennungsregistern innerhalb einer Registerdatei, die mit der Ausführungseinheit verbunden ist. Nachdem eine Ausführungseinheit die Ausführung einer Anweisung beendet hat, schreibt die Ausführungseinheit das Ergebnis auf das durch die Anweisung festgelegte bezeichnete Ziel, entfernt die Anweisung aus der Ausgabewarteschlange, und die Durchführung von Anweisungen kann in der Programmreihenfolge geplant werden. Die Operand-Adressen-Erzeugungseinheit 110 erzeugt Operandadressinformationen für Lade- und Speichervorgangsanweisungen und schreibt diese Adressen in die entsprechende LDQ 120 und die STQ 122. Die FXU 112 schreibt Datenwerte in die STQ 122.
  • Wie vorstehend erläutert, empfängt die LSU 108 Lade- und Speichervorgangsanweisungen von der ISU 106 und führt die Lade- und Speichervorgangsanweisungen aus. Im Allgemeinen enthält jede Ladevorgangsanweisung Adressinformationen, die eine Adresse von benötigten Daten angeben. In einer Ausführungsform unterstützt die LSU 108 Ausführungen von Lade- und Speichervorgangsanweisungen in abweichender Reihenfolge und erreicht dadurch eine hohe Leistungsfähigkeit. In einer Ausführungsform weist die LSU 108 eine Pipeline auf. Das bedeutet, dass die LSU 108 Lade- und Speichervorgangsanweisungen über einen Satz geordneter Pipelinestufen ausführt, die nacheinander durchgeführt werden.
  • OSC-Gefahrenverwaltung
  • Wie vorstehend erläutert, können in einem Prozessor, der Lade- und Speichervorgänge in abweichender Reihenfolge ausführt, drei Arten von Gefahren (Speichervorgang-Treffer-Ladevorgang, Ladevorgang-Treffer-Speichervorgang ohne Weiterleitungsmöglichkeit und dauerhafter Ladevorgang-Treffer-Speichervorgang ohne Weiterleitungsmöglichkeit) auftreten. Daher können im Prozessor 100 zusätzlich zu den vorstehend unter Bezugnahme auf 1 erläuterten allgemeinen Verarbeitungsmechanismen auch eine oder mehrere der folgenden Ausführungsformen ausgebildet werden, um diese OSC-Gefahren vorherzusagen und zu vermeiden.
  • Im Allgemeinen wird jedem Ladevorgang ein Eintrag in der LDQ 120 zugewiesen, in dem die Adresse jedes Ladevorgangs gespeichert wird, nachdem dieser vollständig ausgeführt wurde. Jedem Speichervorgang wird ein Eintrag in der STQ 122 zugewiesen, in dem gleichermaßen die Speicheradressen von der Ausführung der Speicheradressberechnung bis zur Beendigung des Speichervorgangs und dem Schreiben seiner Daten in den L1-Cachespeicher 124 gespeichert werden. Auf der Grundlage des erkannten Gefahrentyps können ein LDQ-Eintrag und ein STQ-Eintrag jedoch auch zusätzliche Informationen zur Vorhersage und Vermeidung von OSC-Gefahren umfassen.
  • Zum Beispiel führt in einer Ausführungsform die LSU 108 eine Ladevorgangsanweisung aus und vergleicht diese Ladevorgangsanweisung mit einem entsprechenden Eintrag in der STQ 122. Die Ladevorgangsanweisung stellt fest, dass kein Weiterleiten von Speichervorgangsdaten durchgeführt werden kann. Zum Beispiel wird die Ladevorgangsanweisung ausgeführt, bevor die Speichervorgangsdaten in die STQ geschrieben werden (nf-LHS), oder das Weiterleiten von Speicherdaten ist nicht erlaubt, obwohl die Daten verfügbar sind (dauerhafter nf-LHS). Falls die Ladevorgangsanweisung eine nf-LHS-Gefahr erkannt hat, setzt sie ein OSC-Gefahrenbit, wie beispielsweise ein „e-Flag” (z. B. ein Ausführungsattribut), im STQ-Eintrag, mit dem sie einen Vergleich durchgeführt hat. Alternativ hierzu setzt die Ladevorgangsanweisung, falls sie eine Gefahr eines dauerhaften nf-LHS erkannt hat, ein OSC-Gefahrenbit, wie beispielsweise eine „w-Flag” (z. B. ein Schreibattribut), im STQ-Eintrag, mit dem sie einen Vergleich durchgeführt hat. Die Ladevorgangsanweisung setzt zudem in ihrem eigenen Eintrag in der LDQ 120 dasselbe OSC-Gefahrenbit, wie beispielsweise das e-Attribut oder das w-Attribut.
  • Wenn eine ausgeführte Speichervorgangsanweisung eine SHL-Gefahr erkennt und aufgrund eines LDQ-Eintrags eine SHL-Leerung durchführt, setzt die Speichervorgangsanweisung ein OSC-Gefahrenbit wie das „e-Attribut” in ihrem eigenen STQ-Eintrag und setzt ebenso ein OSC-Gefahrenbit wie das „e-Attribut” im (ältesten) LDQ-Eintrag, mit dem die Anweisungen einen Vergleich durchführen. Es ist festzuhalten, dass dieser LDQ-Eintrag aufgrund der daraus folgenden Leerung ungültig wird, das „e-Attribut” jedoch im LDQ 120 verbleibt. Wenn die Prozessor-Pipeline mit einem erneuten Holvorgang und einem erneuten Ausführen der geleerten Anweisungen beginnt, wird dieser Ladevorgang diesem LDQ-Eintrag zugewiesen, der nun das von vor der Leerung gesetzte „e-Attribut” aufweist.
  • 2 bis 3 zeigen ein Beispiel eines LDQ-Eintrags 226 bzw. eines STQ-Eintrags 328 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 2 erkennbar ist, umfasst ein Eintrag 226 in der LDQ-Warteschlange 120 zusätzlich zu allgemeinen Informationen wie Operandadressinformationen 204, Gültigkeitsbitinformationen 206 und anderen allgemeinen Informationen 210 auch ein oder mehrere OSC-Gefahrenbits 208. Wie vorstehend erläutert, kann es sich bei dem OSC-Gefahrenanzeigebit 208, abhängig davon, ob die Ladevorgangsanweisung auf eine nf-LHS-Gefahr oder eine dauerhafte nf-LHS-Gefahr gestoßen ist, um ein e-Attribut oder ein w-Attribut handeln. Dieses OSC-Gefahrenbit 208 kann, wie vorstehend erläutert, auch durch eine Speichervorgangsanweisung gesetzt werden. Es ist festzuhalten, dass auch andere Arten von Attributen usw. verwendet werden können, um anzugeben, dass die Ladevorgangsanweisung auf eine nf-LHS-Gefahr oder eine dauerhafte nf-LHS-Gefahr gestoßen ist.
  • Wie in 3 erkennbar ist, umfasst ein Eintrag 328 in der STQ-Warteschlange 120 zusätzlich zu allgemeinen Informationen wie Operandadressinformationen 304, Gültigkeitsbitinformationen 306, Datenwertinformationen 308 und anderen allgemeinen Informationen 312 auch ein oder mehrere OSC-Gefahrenbits 310. Wie vorstehend erläutert, kann es sich bei dem OSC-Gefahrenbit 310 abhängig davon, ob eine Ladevorgangsanweisung auf eine nf-LHS-Gefahr oder eine dauerhafte nf-LHS-Gefahr gestoßen ist, um ein e-Attribut oder ein w-Attribut handeln. Wenn die Speichervorgangsanweisung wie vorstehend erläutert auf eine SHL-Gefahr gestoßen ist, kann es sich bei diesem OSC-Gefahrenbit 310 auch um ein e-Attribut handeln.
  • Es ist festzuhalten, dass auch andere Arten von Attributen usw. verwendet werden können, um anzugeben, dass die Ladevorgangsanweisung auf eine nf-LHS-Gefahr oder eine dauerhafte nf-LHS-Gefahr gestoßen ist und/oder dass eine Speichervorgangsanweisung auf eine SHL-Gefahr gestoßen ist. Ein OSC-Gefahrenanzeigebit 208, 310 in einer der Warteschlangen 120, 122 wird zudem mindestens mit einem OSC-Gefahrenanzeigebit 208, 310 in der anderen Warteschlange 120, 122 übereinstimmen, da die Lade- oder Speichervorgangsanweisung in einem Eintrag der anderen Warteschlange dasselbe Bit setzt, das sie in einem Eintrag ihrer eigenen Warteschlange setzt. Eine Erläuterung, wie mit den OSC-Gefahrenbitinformationen 208, 310 OSC-Gefahren vorhergesagt und vermieden werden, folgt zudem nachstehend.
  • Nach Beendigung der Ladevorgangsanweisung stellt die Ladevorgangsanweisung fest, ob sie in der LDQ 120 OSC-Gefahrenbitinformationen wie ein e-Attribut oder ein w-Attribut aufweist. Falls ja, zeigt die Ladevorgangsanweisung dies der IFU 102 an. In einer Ausführungsform erstellt die IFU 102 dann für diese spezielle Ladevorgangsanweisung einen Eintrag in einer OSC-Vorhersagetabelle 116. Die OSC-Vorhersagetabelle erstellt auf der Grundlage der Anweisungsadresse des Ladevorgangs einen Eintrag und merkt sich das eine oder mehrere Attribut für diesen Ladevorgang. Zum Beispiel gibt ein Eintrag in der OSC-Vorhersagetabelle an, ob ein Ladevorgang eines e-Attributs und/oder eines w-Attributs zugeordnet ist, wobei der Ladevorgang beide Attribute aufweisen kann, wenn der Ladevorgang einen Vergleich mit mehreren Speichervorgangswarteschlangen durchführt.
  • Wenn eine Speichervorgangsanweisung beendet ist und in den L1-Cachespeicher 124 zurückgeschrieben wird, stellt die Speichervorgangsanweisung fest, ob sie in der STQ 122 OSC-Gefahrenbitinformationen wie ein e-Attribut oder ein w-Attribut aufweist. Falls ja, zeigt die Ladevorgangsanweisung dies der IFU 102 an. Die IFU 102 erstellt dann für diese spezielle Speichervorgangsanweisung einen Eintrag in einer OSC-Vorhersagetabelle 116, welcher die Anweisungsadresse der Speichervorgangsanweisung und das eine oder mehrere Attribute unter der Anweisungsadresse dieses Speichervorgangs umfasst. Wenn zudem die Speichervorgangsanweisung in den L1-Cachespeicher 124 zurückgeschrieben ist, informiert die STQ 122 die ISU 106 über die STQ-Eintragsnummer (Stag) dieser bestimmten Speichervorgangsanweisung in der STQ 122.
  • 4 zeigt ein Beispiel für einen Ladevorgangsanweisungseintrag und einen Speichervorgangsanweisungseintrag in der OSC-Vorhersagetabelle 116. Insbesondere zeigt 4, dass der Ladevorgangsanweisungseintrag 402 die Anweisungsadresse 404 der Anweisung, ein Eintragsgültigkeitsbit 406 und ein oder mehrere Gefahrenanzeigebits wie ein Ladevorgangs-„e”-Bit 408 und ein Ladevorgangs-„w”-Bit 410 umfasst. Der Speichervorgangsanweisungseintrag 403 umfasst die Anweisungsadresse 412 der Anweisung, ein Eintragsgültigkeitsbit 414 und ein oder mehrere Gefahrenanzeigebits, wie ein Speichervorgangs-„e”-Bit 416 und ein Speichervorgangs-„w”-Bit 418. Die OSC-Gefahrenanzeigebits 408, 410, 414, 416 werden, wie vorstehend erläutert, auf der Grundlage der von den Ladevorgangsanweisungen und der STQ 122 erhalten Informationen gesetzt. Alle Lade- und Speichervorgangseinträge in der OSC-Vorhersagetabelle 116 werden unabhängig voneinander erstellt. In anderen Worten: Ein Ladevorgangseintrag in der OSC-Vorhersagetabelle 116 nimmt keinen Bezug auf Speichervorgangseinträge in der OSC-Vorhersagetabelle 116 oder einer beliebigen anderen Tabelle, und auf ihn wird auch nicht durch solche Speichervorgangseinträge für diesen Zweck Bezug genommen und umgekehrt.
  • Zum Beispiel benachrichtigt eine Ladevorgangsanweisung mit einem gesetzten „e”-Abhängigkeitsbit in ihrem LDQ-Eintrag und einem gesetzten „e”-Bit in ihrem STQ-Eintrag einer entsprechenden Speichervorgangsanweisung die IFU 102, die dann wie in 4 gezeigt für jede der Lade- und Speichervorgangsanweisungen einen Eintrag 402, 403 in der Vorhersagetabelle 116 erstellt. In diesem Beispiel ist das Ladevorgangs-„e”-Bit 408 im Ladevorgangsanweisungseintrag 402 und das Speichervorgangs-„e-Bit 414 im Speichervorgangsanweisungseintrag 403 gesetzt. Es ist ebenfalls festzuhalten, dass vielfältige Techniken verwendet werden können, um die Vorhersagetabelle auf der Grundlage von Anweisungsadressen zu generieren. Zum Beispiel können für Vorhersagetabellen Techniken, die sich auf Überläufe (Techniken, die auf der am längsten zurückliegenden Verwendung basieren) oder Lese-/Schreibkonflikte (Warteschlangen) richten, und ähnliche Techniken verwendet werden.
  • Nachdem die Vorhersagetabelle 116 aufgefüllt worden ist, fragt die IFU 102 jedes Mal, wenn eine Anweisung durch die IFU 102 geholt und zum Decodieren durch die IDU 104 an die Pipeline geschickt wird, parallel dazu die OSC-Vorhersagetabelle 116 ab und sendet diese Informationen an die IDU 104. Mittels dieser Abfrage stellt die IDU 104 fest, ob die konkrete geholte Anweisung als ein Lade- und/oder Speichervorgang erkannt wird, der ein „e”- oder „w”-Bit aufweist. Zum Beispiel verwendet die IFU 102 die Anweisungsadresse einer Anweisung zur Abfrage der Vorhersagetabelle 116, um einen Eintrag mit der entsprechenden Anweisungsadresse zu finden. Die aus der OSC-Vorhersagetabelle 116 erhaltenen Informationen werden von der IDU 104 an die ISU 106 weitergereicht.
  • Die ISU 106 verwendet diese Abhängigkeitsinformationen, um Folgendes durchzuführen: Wenn die Anweisung ein Speichervorgangs-e-Bit umfasst, merkt sich die ISU 106 die Anweisung als eine Speichervorgangs-e-Bit-Anweisung. Wenn die Anweisung ein Speichervorgangs-w-Bit aufweist, merkt sich die ISU 106 die STQ-Eintragsnummer („Stag”), die der Anweisung zugewiesen ist. In einer Ausführungsform merkt sich die ISU 106 den jüngsten dieser Stags, der als w-Stag bezeichnet wird. Wenn die Anweisung ein Ladevorgangs-e-Bit aufweist, markiert die ISU 106 diese Anweisung als von jeder vorhergehenden Anweisung abhängig, die mit einem Speichervorgangs-e-Bit markiert wurde. Diese Abhängigkeit ähnelt stark der Abhängigkeit, die zwischen dem Schreiber und dem Leser eines gegebenen universellen Registers erzeugt wird. Die ISU 106 stellt sicher, dass die Ladevorgangsanweisung nicht ausgeführt wird, bevor die Speichervorgangsanweisung erfolgreich ausgeführt wurde und die Speicheradresse und Daten in ihrem STQ-Eintrag gespeichert hat. Indem der Ladevorgang bis zu diesem Punkt verzögert wird, stellt die ISU 106 sicher, dass der Ladevorgang weitergeleitete Speichervorgangsdaten vom STQ-Eintrag erhalten kann. Somit wird eine SHL-Gefahr oder eine nf-LHS-Gefahr vermieden.
  • Wenn die Anweisung ein Ladevorgangs-w-Bit aufweist, wird der Ladevorgang so markiert, dass die ISU 106 das Ausführen des Ladevorgangs nicht erlaubt, bis der Stag des letzten vor dem Ladevorgang (d. h. dem w-Stag) liegenden Speichervorgangs mit Speichervorgangs-w-Bit in den L1-Cachespeicher 124 zurückgeschrieben hat (wie oben erläutert, informiert die STQ 122 die ISU 106, wenn das Zurückschreiben auftritt). Indem der Ladevorgang verzögert wird, bis der Speichervorgang in den L1-Cachespeicher 124 zurückgeschrieben hat, werden dauerhafte nf-LHS-Gefahren vermieden. Der vorstehende, durch die ISU 106 durchgeführte Prozess macht alle e-Bit-Ladevorgänge von der Ausführung aller vorhergehenden e-Bit-Speichervorgänge und alle w-Bit-Ladevorgänge vom Zurückschreiben aller vorhergehenden w-Bit-Speichervorgänge abhängig.
  • Es ist festzuhalten, dass die Speichervorgangsanweisung, die als letzte den w-Stag in der ISU 106 gesetzt hat, manchmal z. B. aufgrund eines Zweigfehlers geleert wird. Der w-Stag kann jedoch nach wie vor verfolgt werden. Zum Beispiel wird in einer Ausführungsform der jüngste nicht geleerte w-Bit-Speichervorgang als der gespeicherte jüngste w-Bit-Speichervorgang bezeichnet. Diese Option kann einen erheblichen Verfolgungsaufwand erfordern. In einer weiteren Ausführungsform wird der jüngste nicht geleerte Stag zum gespeicherten jüngsten w-Bit-Speichervorgang. Dieser Speichervorgang muss nicht als w-Bit-Speichervorgang markiert worden sein. Diese Option erfordert keinen großen Verfolgungsaufwand, behandelt jedoch einen Speichervorgang als w-Speichervorgang, obwohl dieser Speichervorgang eventuell keine w-Bit-Vorhersage aufwies, was zu einer leichten Verschlechterung der Leistung führt. In noch einer weiteren Ausführungsform wird der gespeicherte jüngste w-Bit-Speichervorgang ungültig. W-Bit-Ladevorgänge, die zugeteilt werden, während sich der gespeicherte jüngste w-Bit-Speichervorgang noch in ungültigem Zustand befindet, markieren keine Stag-Abhängigkeit.
  • Im Hinblick auf Anweisungen, die sowohl Lade- als auch Speichervorgänge sind, werden Schritte unternommen, um sicherzustellen, dass diese Anweisungen keine w-Bit-Abhängigkeit von sich selbst markieren. Dies ist insbesondere ein Problem, wenn die Anweisung aus mehreren Teilen besteht. In einer Ausführungsform kann diese Abhängigkeit vermieden werden, indem sichergestellt wird, dass durch ein w-Bit gekennzeichnete Speichervorgangsteile stets den durch ein w-Bit gekennzeichneten Ladevorgangsteilen folgen, oder indem sichergestellt wird, dass der gespeicherte jüngste w-Bit-Speichervorgang nicht aktualisiert wird, bevor alle Teile einer Anweisung zugeteilt sind. Allgemein ist das Markieren von e-Bit-Abhängigkeiten innerhalb einer aus mehreren Teilen bestehenden Anweisung sicher, da die Teile einfach in ihrer Reihenfolge ausgegeben werden. Es ist jedoch möglich, bei Bedarf ähnliche Verfahren zu verwenden, um diese Abhängigkeit zu vermeiden.
  • In einer Ausführungsform wird ein Vektor von mit einem e-Bit gekennzeichneten Speichervorgängen geführt (andere Verfolgungsmechanismen ähnlich Registerabhängigkeiten sind ebenfalls möglich), der 1 Bit pro Ausgabewarteschlangeneintrag umfasst, und mit einem e-Bit gekennzeichnete Ladevorgänge werden von allen älteren gültigen Einträgen der Ausgabewarteschlange abhängig gemacht, für die das entsprechende e-Bit im Vektor gesetzt ist. Bits im Vektor werden geschrieben, wenn eine Anweisung in sie zugeteilt wird, und wenn es sich bei der Anweisung um einen e-Bit-Speichervorgang handelt, werden sie in den gesetzten Zustand, andernfalls in den ungesetzten Zustand versetzt.
  • Alternativ dazu können Ladevorgänge und Speichervorgänge in Gruppen von e- und w-Bits verfolgt werden (z. B. könnten 5 e-Bits e1 bis e5 vorhanden sein und nur e1-Speichervorgänge und e1-Ladevorgänge sowie e2-Speichervorgänge und a2-Ladevorgänge usw. miteinander paarweise verbunden sein). Zu Gefahrenzeiten kann ein zufälliges e-Bit (z. B. e2) in der LDQ und STQ ausgewählt und gesetzt werden. Wenn es sich bei bestimmten Anweisungen sowohl um Lade- als auch Speichervorgänge handelt (z. B. die CS-Anweisung im System z), kann dieser Aufbau auf das vorstehend erläuterte Verfahren ausgedehnt werden, indem die zwei Aspekte getrennt behandelt, jedoch die Abhängigkeiten sowohl als Ladevorgang als auch als Speichervorgang durchgesetzt werden.
  • Wie ersichtlich ist, sind die vorstehenden Ausführungsformen der vorliegenden Erfindung insofern vorteilhaft, als eine Vorhersagetabelle erstellt wird, die vorhersagt, welche Ladevorgänge und welche Speichervorgänge Abhängigkeiten aufweisen und welcher Art diese Abhängigkeiten sind (beispielsweise e-Bit- oder w-Bit-Abhängigkeiten). Nach der Anweisungsdecodierung werden dann e-Bit-Ladevorgänge von allen vorhergehenden e-Bit-Speichervorgängen abhängig gemacht und durch die Anweisungsausgabelogik so behandelt, als ob es sich um eine reguläre Registerabhängigkeit handeln würde. Dies verzögert wirksam die Ausführung der e-Bit-Ladevorgangsanweisung, bis alle e-Bit-Speichervorgänge ihre Adressberechnung ausgeführt und ihre Daten in die STQ geschrieben haben. Dadurch werden SHL- und nf-LHS-Gefahren wirksam beseitigt. Bei w-Bit-Abhängigkeiten wird der Ladevorgang vom Zurückschreiben des letzten als w-Bit-Speichervorgang vorhergesagten Speichervorgangs in den L1-Cachespeicher abhängig gemacht. Dies verhindert wirksam dauerhafte nf-LHS-Gefahren. Alle Ladevorgangseinträge und alle Speichervorgangseinträge sind in der OSC-Vorhersagetabelle voneinander unabhängig. In anderen Worten: Ein Ladevorgangsanweisungseintrag bezieht sich nicht auf einen Speichervorgangsanweisungseintrag und umgekehrt. Dadurch können Abhängigkeiten zwischen mehreren Speichervorgangsanweisungen und mehreren Ladevorgängen erzeugt werden.
  • Wenn ein Ladevorgang darüber hinaus sowohl ein gesetztes e-Bit als auch ein gesetztes w-Bit aufweist, wird gemäß einer Ausführungsform der Ladevorgang verzögert, bis alle in der OSC-Vorhersagetabelle angegebenen e-Bit- und w-Bit-Speichervorgänge erledigt sind. Dies bedeutet, dass der Ladevorgang verzögert wird, bis alle e-Bit-Speichervorgänge ihre Adressberechnung ausgeführt und ihre Daten in die STQ geschrieben haben, sowie dass der Ladevorgang auch vom Zurückschreiben des letzten w-Bit-Speichervorgangs in den L1-Cachespeicher abhängig gemacht wird.
  • Wenn zudem ein Ladevorgang ein gesetztes e-Bit in der OSC-Tabelle und ein Speichervorgang sowohl ein gesetztes e-Bit als auch ein gesetztes w-Bit in der OSC-Tabelle aufweist, wird der Ladevorgang gemäß einem Beispiel verzögert, bis der Speichervorgang mit dem gesetzten e-Bit seine Adressberechnung ausgeführt und seine Daten in die STQ geschrieben hat (z. B. werden die Daten weitergeleitet). Wenn ein Ladevorgang ein gesetztes w-Bit und ein Speichervorgang sowohl ein gesetztes e-Bit als auch ein gesetztes w-Bit in der OSC-Tabelle aufweist, wird der Ladevorgang verzögert, bis der Speichervorgang mit dem gesetzten w-Bit das Zurückschreiben in den L1-Cachespeicher ausgeführt hat. Wenn schließlich bei einem Ladevorgang sowohl das e-Bit als auch das w-Bit gesetzt sind und bei einem Speichervorgang sowohl das e-Bit als auch das w-Bit gesetzt sind, hat das w-Bit Vorrang. Der Ladevorgang mit dem gesetzten w-Bit wird bis nach der Ausführung des Speichervorgangs mit dem gesetzten w-Bit verzögert, was der längsten (vom Zurückschreiben in den L1-Cachespeicher abhängigen) Verzögerung des Speichervorgangs mit dem gesetzten w-Bit entspricht.
  • Gemäß einer Ausführungsform können ein oder mehrere Ladevorgänge und ein oder mehrere Speichervorgänge in einer komplexen Anweisung enthalten sein. Vielfältige Beispiele dieser Art komplexer Anweisungen finden sich in der Veröffentlichung mit dem Titel „z/Architecture Principles of Operation”, SA22-7832-07, achte Auflage, veröffentlicht im Februar 2009 durch International Business Machines. Dies bedeutet, dass eine Anweisung als Ladevorgang und Speichervorgang betrachtet werden kann. Ein und dieselbe Anweisung kann einen oder mehrere Ladevorgangseinträge und einen oder mehrere Speichervorgangseinträge in der OSC-Tabelle erstellen. Diese Ladevorgänge und Speichervorgänge können entsprechend ihren jeweiligen e-Bits und w-Bits in der OSC-Tabelle verfolgt werden.
  • Ablaufflussplan
  • 5 zeigt einen Ablaufflussplan, der ein Beispiel des Erzeugens eines Eintrags in einer OSC-Vorhersagetabelle 116 zum Vorhersagen und Vermeiden von OSC-Gefahren darstellt. Der Ablaufflussplan von 5 beginnt mit Schritt 502 und mündet direkt in Schritt 504. In Schritt 504 beginnt eine Ladevorgangsanweisung vor einer zugeordneten Speichervorgangsanweisung mit der Ausführung. Die Ladevorgangsanweisung erhält in Schritt 506 Daten von einem Speicherort, in den die Anweisung in der Zukunft schreiben wird. In Schritt 508 beendet die Ladevorgangsanweisung die Ausführung. In Schritt 510 beendet die Speichervorgangsanweisung die Ausführung. In Schritt 512 stellt die Speichervorgangsanweisung fest, dass die Ladevorgangsanweisung zuvor Daten von einem Speicherort erhalten hat, auf den die Speichervorgangsanweisung momentan schreibt.
  • In Schritt 514 stellt die Speichervorgangsanweisung fest, dass sie auf eine SHL-Gefahr gestoßen ist. In Schritt 516 setzt die Speichervorgangsanweisung dann ein Attributbit, wie beispielsweise ein e-Attributbit, um anzuzeigen, dass es sich bei dieser Anweisung um einen Kandidaten für eine OSC-Gefahrensituation handelt. Dieses e-Attributbit wird im ältesten LDQ-Eintrag gesetzt, mit dem die Speichervorgangsanweisung einen Vergleich durchführt. In Schritt 518 setzt die Speichervorgangsanweisung ein e-Attributbit im STQ-Eintrag, welcher der Speichervorgangsanweisung in der STQ 122 zugeordnet ist. Dann löscht die Speichervorgangsanweisung in Schritt 520 die Ladevorgangsanweisung und alle jüngeren Ladevorgangsanweisungen aus der Pipeline.
  • In Schritt 522 schreibt die Speichervorgangsanweisung in den L1-Cachespeicher 124 zurück. In Schritt 524 informiert die Speichervorgangsanweisung die IFU 102, dass die Speichervorgangsanweisung ein anhängiges e-Attributbit (oder ein durch eine Ladevorgangsanweisung gesetztes w-Attribut) aufweist. In Schritt 526 erstellt die IFU 102 einen Eintrag für die Speichervorgangsanweisung in der OSC-Vorhersagetabelle 116. Dieser Eintrag beinhaltet eine Anweisungsadresse der Speichervorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Speichervorgangsanweisung einem e-Attribut zugeordnet ist. Zum Beispiel kann im Eintrag ein Bit oder ein Attribut gesetzt sein, um anzuzeigen, dass die Anweisung einem Speichervorgangs-e-Bit zugeordnet ist. In Schritt 527 erstellt die IFU 102 zudem einen Eintrag für die Ladevorgangsanweisung in der OSC-Vorhersagetabelle 116. Nachdem zum Beispiel der Ladevorgang in Schritt 520 aus dem SHL gelöscht wurde, führt die Pipeline den Ladevorgang erneut aus, wofür derselbe LDQ-Eintrag wie zuvor verwendet wird. Nachdem der Ladevorgang beendet ist, schreibt der Ladevorgang sein Attribut (z. B. e-Bit) in die IFU-Vorhersagetabelle 116. Dieser Eintrag beinhaltet eine Anweisungsadresse der Ladevorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Ladevorgangsanweisung einem e-Attribut zugeordnet ist. Die Speicher- und Ladevorgangseinträge sind voneinander unabhängig und beziehen sich in keiner Weise aufeinander. Die STQ 122 informiert die ISU 106 in Schritt 528 über die STQ-Eintragsnummer (Stag) der Speichervorgangsanweisung, die in den L1-Cachespeicher 124 zurückgeschrieben hat. Der Steuerungsablauf wird dann in Schritt 530 beendet.
  • 6 zeigt einen Ablaufflussplan, der ein weiteres Beispiel des Erzeugens eines Eintrags in einer OSC-Vorhersagetabelle 116 zum Vorhersagen und Vermeiden von OSC-Gefahren darstellt. Der Ablaufflussplan von 6 beginnt mit Schritt 602 und mündet direkt in Schritt 604. In Schritt 604 führt eine Speichervorgangsanweisung ihre Adressberechnung aus. In Schritt 606 werden die Daten für die Speichervorgangsanweisung verzögert. In Schritt 608 wird die Ladevorgangsanweisung ausgeführt, bevor die Speichervorgangsdaten in die STQ 122 geschrieben werden. In Schritt 610 stellt die Ladevorgangsanweisung fest, dass sie von der Speichervorgangsanweisung abhängt und keine Weiterleitungsmöglichkeit für die Speichervorgangsdaten besteht.
  • In Schritt 612 stellt die Ladevorgangsanweisung fest, dass sie auf eine nf-LHS-Situation gestoßen ist. In Schritt 614 setzt die Ladevorgangsanweisung ein e-Attributbit im STQ-Eintrag der Speichervorgangsanweisung. In Schritt 616 setzt die Ladevorgangsanweisung ein e-Attributbit in einem entsprechenden LDQ-Eintrag. In Schritt 618 beendet die Ladevorgangsanweisung die Ausführung. In Schritt 620 sendet die Ladevorgangsanweisung Informationen an die IFU 102, dass sie in der LDQ 120 ein e-Attributbit gesetzt hat. In Schritt 622 erstellt die IFU 102 einen Eintrag für die Ladevorgangsanweisung in einer OSC-Vorhersagetabelle 116. Dieser Eintrag beinhaltet eine Anweisungsadresse der Ladevorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Ladevorgangsanweisung einem e-Attributbit zugeordnet ist. Zum Beispiel kann im Eintrag ein Bit oder ein Attribut gesetzt sein, um anzuzeigen, dass die Anweisung einem Ladevorgangs-e-Bit zugeordnet ist. In Schritt 623 erstellt die IFU 102 zudem einen Eintrag für die Speichervorgangsanweisung in der OSC-Vorhersagetabelle 116. Wenn zum Beispiel die Speichervorgangsanweisung in den L1-Cachespeicher 206 zurückschreibt (was vor oder nach Schritt 620 geschehen kann), wird der IFU 102 das Attribut (e-Bit) in der STQ mitgeteilt und in der Tabelle 116 ein Eintrag für den Speichervorgang erstellt. Dieser Eintrag beinhaltet eine Anweisungsadresse der Speichervorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Speichervorgangsanweisung einem e-Attributbit zugeordnet ist. Die Lade- und Speichervorgangseinträge sind voneinander unabhängig und beziehen sich in keiner Weise aufeinander. Der Steuerungsablauf wird dann in Schritt 624 beendet.
  • 7 zeigt einen Ablaufflussplan, der noch ein weiteres Beispiel des Erzeugens eines Eintrags in einer OSC-Vorhersagetabelle 116 zum Vorhersagen und Vermeiden von OSC-Gefahren darstellt. Der Ablaufflussplan von 7 beginnt mit Schritt 702 und mündet direkt in Schritt 704. In Schritt 704 führt eine Speichervorgangsanweisung ihre Adressberechnung aus. In Schritt 706 beginnt eine Ladevorgangsanweisung mit ihrer Ausführung. In Schritt 708 stellt die Ladevorgangsanweisung fest, dass sie von der Speichervorgangsanweisung abhängt und keine Weiterleitungsmöglichkeit für die Speichervorgangsdaten besteht.
  • In Schritt 710 stellt die Ladevorgangsanweisung fest, dass sie auf eine dauerhafte nf-LHS-Situation gestoßen ist. In Schritt 712 setzt die Ladevorgangsanweisung ein w-Attributbit im STQ-Eintrag der Speichervorgangsanweisung. In Schritt 714 setzt die Ladevorgangsanweisung ein w-Attributbit in einem entsprechenden LDQ-Eintrag. In Schritt 716 beendet die Ladevorgangsanweisung die Ausführung. In Schritt 718 informiert die Ladevorgangsanweisung die IFU 102 darüber, dass sie in der LDQ 120 ein w-Attributbit gesetzt hat. In Schritt 720 erstellt die IFU einen Eintrag für die Ladevorgangsanweisung in einer OSC-Vorhersagetabelle 116. Dieser Eintrag beinhaltet eine Anweisungsadresse der Ladevorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Ladevorgangsanweisung einem w-Attributbit zugeordnet ist. Zum Beispiel kann im Eintrag ein Bit oder ein Attribut gesetzt sein, um anzuzeigen, dass die Anweisung einem Ladevorgangs-w-Bit zugeordnet ist. In Schritt 721 erstellt die IFU einen Eintrag für die Speichervorgangsanweisung in einer OSC-Vorhersagetabelle 116. Wenn zum Beispiel die Speichervorgangsanweisung in den L1-Cachespeicher 206 zurückschreibt (was vor oder nach Schritt 718 geschehen kann), wird der IFU 102 das Attribut (e-Bit) in der STQ mitgeteilt und in der Tabelle 116 ein Eintrag für den Speichervorgang erstellt. Dieser Eintrag beinhaltet eine Anweisungsadresse der Speichervorgangsanweisung, ein Gültigkeitsbit und eine Angabe, dass die Speichervorgangsanweisung einem w-Attributbit zugeordnet ist. Die Lade- und Speichervorgangseinträge sind voneinander unabhängig und beziehen sich in keiner Weise aufeinander. Der Steuerungsablauf wird dann in Schritt 722 beendet.
  • 8 zeigt einen Ablaufflussplan, der ein Beispiel für das Vorhersagen und Vermeiden von OSC-Gefahren darstellt. Der Ablaufflussplan von 8 beginnt mit Schritt 802 und mündet direkt in Schritt 804. In Schritt 804 holt die IFU 102 eine Anweisung. Parallel dazu fragt die IFU 102 in Schritt 806 die OSC-Vorhersagetabelle 116 nach der Anweisungsadresse der Anweisung ab. In Schritt 808 stellt die IFU 102 fest, ob die Anweisung einen Eintrag in der Vorhersagetabelle 116 aufweist. Wenn das Ergebnis dieser Feststellung negativ ist, wird in Schritt 810 eine herkömmliche Verarbeitung durchgeführt. Der Steuerungsablauf wird dann in Schritt 812 beendet. Wenn das Ergebnis der Feststellung positiv ist, sendet die IFU 102 in Schritt 813 die Anweisung und die von der OSC-Vorhersagetabelle 116 erhaltenen, der Anweisung zugeordneten OSC-Gefahreninformationen an die IDU 104. In Schritt 814 decodiert die IDU 104 die Anweisung.
  • Wenn das Ergebnis der Feststellung in Schritt 808 positiv ist, stellt die IDU 104 in Schritt 816 fest, ob die Anweisung ein Speichervorgangs-e-Bit aufweist (z. B. wenn es sich bei der Anweisung um einen Speichervorgang mit einem e-Attributbit handelt). Wenn das Ergebnis dieser Feststellung positiv ist, merkt sich die ISU 106 in Schritt 818 die Speichervorgangsanweisung als Speichervorgangs-e-Bit. Wenn diese Anweisung nur ein einziges Bit umfasst, kehrt der Steuerungsfluss dann zu Schritt 804 zurück. Wenn jedoch die Anweisung sowohl einen oder mehrere Ladevorgänge als auch einen oder mehrere Speichervorgänge durchführt und daher mehrere Bit umfasst, führt die IDU die Schritte 826 und 828 aus, falls es sich bei dem weiteren Bit um ein Ladevorgangs-„e”-Bit handelt, oder führt Schritt 832 aus, wenn es sich bei dem weiteren Bit um ein Ladevorgangs-„w”-Bit handelt.
  • Wenn das Ergebnis der Feststellung in Schritt 816 negativ ist, stellt die IDU 104 in Schritt 820 fest, ob die Anweisung ein Speichervorgangs-w-Bit aufweist (z. B. wenn es sich bei der Anweisung um einen Speichervorgang mit einem w-Attributbit handelt). Wenn das Ergebnis dieser Feststellung positiv ist, merkt sich die ISU 106 in Schritt 822 die STQ-Eintragsnummer (Stag), die der Speichervorgangsanweisung zugewiesen ist. Der Steuerungsablauf kehrt dann zu Schritt 804 zurück.
  • Wenn das Ergebnis der Feststellung in Schritt 820 negativ ist, stellt die IDU 104 in Schritt 824 fest, ob die Anweisung ein Ladevorgangs-e-Bit aufweist (z. B. wenn es sich bei der Anweisung um einen Ladevorgang mit einem e-Attributbit handelt). Wenn das Ergebnis dieser Feststellung positiv ist, markiert die ISU 106 in Schritt 826 die Ladevorgangsanweisung als von jeder vorhergehenden Anweisung abhängig, die mit einem Speichervorgangs-e-Bit markiert wurde. In Schritt 828 wird die Ausführung der Ladevorgangsanweisung als Folge des Markiertwerdens verhindert, bis der Speichervorgang erfolgreich ausgeführt wurde und er die Speicheradresse und die Daten in seinen STQ-Eintrag gespeichert hat. Der Steuerungsablauf kehrt dann zu Schritt 804 zurück.
  • Wenn das Ergebnis der Feststellung in Schritt 824 negativ ist, wird in Schritt 830 festgestellt, dass es sich bei der Anweisung um einen Ladevorgang mit einem w-Attributbit handelt. In Schritt 832 markiert die ISU 106 diese Anweisung so, dass sie nicht ausgeführt wird, bis der Stag des letzten vor dem Ladevorgang liegenden Speichervorgangs mit Speichervorgangs-w-Bit (d. h. der w-Stag) in den L1-Cachespeicher zurückgeschrieben hat. Der Steuerungsablauf kehrt dann zu Schritt 804 zurück.
  • Informationsverarbeitungssystem
  • 9 zeigt ein Blockschaltbild, das eine detaillierte Ansicht eines Informationsverarbeitungssystems 900 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Das Informationsverarbeitungssystem 900 basiert auf einem geeignet konfigurierten Verarbeitungssystem, das so angepasst ist, dass es eine oder mehrere Ausführungsformen der vorliegenden Erfindung realisieren kann. Jedes beliebige geeignet konfigurierte Verarbeitungssystem kann von Ausführungsformen der vorliegenden Erfindung gleichermaßen als das Informationsverarbeitungssystem 900 verwendet werden.
  • Das Informationsverarbeitungssystem 900. beinhaltet einen Computer 902. Der Computer 902 weist einen oder mehrere Prozessoren 101, wie beispielsweise den Prozessor von 1 auf. Der Prozessor 101 umfasst die IFU 102 einschließlich der OSC-Vorhersagetabelle 116; die IDU 104; die ISU 106, welche die Ausgabewarteschlange 118 umfasst; die LSU 108, welche die LDQ 120, die STQ 122 und den L1-Cachespeicher 124 umfasst; die Operand-Adressen-Erzeugungseinheit 110, die FXU 112 und verschiedene weitere Komponenten 114, wie in 1 gezeigt.
  • Der Prozessor 101 ist mit einem Hauptspeicher 906, einer Massenspeicherschnittstelle 908 und Netzwerkadapter-Hardware 910 verbunden. Ein Systembus 912 verbindet diese Systemkomponenten miteinander. Mithilfe der Massenspeicherschnittstelle 908 werden Massenspeichereinheiten wie eine Datenspeicherungseinheit 914 mit dem Informationsverarbeitungssystem 900 verbunden. Ein spezifischer Typ einer Datenspeicherungseinheit ist ein optisches Laufwerk wie ein CD/DVD-Laufwerk, mit dem Daten auf einem computerlesbaren Medium oder Speicherprodukt wie einer CD/DVD 916 (jedoch nicht darauf beschränkt) gespeichert oder von einem solchen gelesen werden können. Einen weiteren Typ einer Datenspeicherungseinheit stellt eine Datenspeicherungseinheit dar, die so eingerichtet ist, dass sie zum Beispiel Dateisystemoperationen unterstützen kann.
  • In einer Ausführungsform verwendet das Informationsverarbeitungssystem 600 herkömmliche virtuelle Adressierungsmechanismen, mithilfe derer sich Programme so verhalten können, als ob sie Zugriff auf eine einzige große, hierin als Computersystemspeicher bezeichnete Speichereinheit anstelle von Zugriff auf mehrere kleine Speichereinheiten wie den Hauptspeicher 906 und die Datenspeicherungseinheit 916 haben. Es ist zu beachten, dass sich der hierin verwendete Begriff „Computersystemspeicher” generisch auf den gesamten virtuellen Speicher des Informationsverarbeitungssystems 900 bezieht.
  • Obwohl für den Computer 902 nur ein Prozessor 101 abgebildet ist, können ebenso wirksam Computersysteme mit mehreren Prozessoren verwendet werden. Verschiedene Ausführungsformen der vorliegenden Erfindung umfassen weiterhin Schnittstellen, die jeweils separate, vollständig programmierte Mikroprozessoren beinhalten, mittels derer der Prozessor 101 von Verarbeitung entlastet wird. Bei einem im Hauptspeicher enthaltenen Betriebssystem (nicht gezeigt) handelt es sich um ein geeignetes Betriebssystem, das mehrere Aufgaben gleichzeitig erledigen kann (multitasking), wie beispielsweise und ohne einschränkende Wirkung GNU/Linux, AIX, Solaris oder HP-UX. In verschiedenen Ausführungsformen der vorliegenden Erfindung kann ein beliebiges anderes geeignetes Betriebssystem verwendet werden. Einige Ausführungsformen der vorliegenden Erfindung verwenden Architekturen wie einen objektorientierten Rahmenmechanismus (object oriented framework mechanism), mit denen Anweisungen von Komponenten des Betriebssystems (nicht gezeigt) auf jedem beliebigen Prozessor ausgeführt werden können, der sich im Informationsverarbeitungssystem 900 befindet. Mithilfe der Netzwerkadapter-Hardware 910 wird einem oder mehreren Netzwerken 918 eine Schnittstelle bereitgestellt. Die vielfältigen Ausführungsformen der vorliegenden Erfindung können so angepasst werden, dass sie mit beliebigen Datenübertragungsverbindungen einschließlich aktueller analoger und/oder digitaler Techniken oder über einen zukünftigen Netzwerkmechanismus arbeiten können.
  • Obwohl die beispielhaften Ausführungsformen der vorliegenden Erfindung im Kontext eines vollständig funktionsfähigen Computersystems beschrieben sind, ist es für den Fachmann ersichtlich, dass Ausführungsformen als Programmprodukt über CD oder DVD, z. B. die CD 916, CD-ROM oder eine andere Form von beschreibbarem Medium oder über einen beliebigen Typ von elektronischem Übertragungsmechanismus verbreitet werden können.
  • Beispiele ohne einschränkende Wirkung
  • Obwohl spezielle Beispiele der Erfindung offenbart wurden, erkennt der Fachmann, dass an den speziellen Ausführungsformen Änderungen vorgenommen werden können, ohne vom Grundgedanken und Umfang der Erfindung abzuweichen. Der Umfang der Erfindung ist daher nicht als auf die speziellen Beispiele beschränkt anzusehen und so gedacht, dass die angehängten Ansprüche jegliche innerhalb des Umfangs der vorliegenden Erfindung liegenden Anwendungen, Modifikationen und Ausführungsformen abdecken.
  • Obwohl verschiedene beispielhafte Ausführungsformen der vorliegenden Erfindung im Kontext eines vollständig funktionsfähigen Computersystems erläutert wurden, ist es für den Fachmann ersichtlich, dass vielfältige Ausführungsformen als Programmprodukt über CD oder DVD, z. B. die CD 916, CD-ROM oder eine andere Form von beschreibbarem Medium oder über einen beliebigen Typ von elektronischem Übertragungsmechanismus verbreitet werden können.

Claims (21)

  1. Verfahren zum Verwalten von in abweichender Reihenfolge ausgeführten Lade- und Speichervorgangsoperationen, wobei das Verfahren Folgendes umfasst: Ausführen mindestens einer der folgenden Anweisungen: eine Ladevorgangsanweisung und eine Speichervorgangsanweisung; auf der Grundlage des Ausführens Feststellen, dass eine Operand-Speichervorgang-Vergleich-Gefahr aufgetreten ist; auf der Grundlage des Feststellens Erstellen eines Eintrags innerhalb einer Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren, der mindestens eine Anweisungsadresse der mindestens einen ausgeführten Anweisung und ein der mindestens einen ausgeführten Anweisung zugeordnetem Gefahrenanzeigeattribut umfasst, wobei das Gefahrenanzeigeattribut angibt, dass die mindestens eine ausgeführte Anweisung auf die Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist.
  2. Verfahren nach Anspruch 1, wobei das Ausführen ein Ausführen einer Anweisung umfasst, die aus der Ladevorgangsanweisung und der Speichervorgangsanweisung ausgewählt wird; wobei das Verfahren weiterhin Folgendes umfasst: auf der Grundlage des Feststellens Erstellen eines Eintrags innerhalb der Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren, der eine Anweisungsadresse der anderen, aus der Ladevorgangsanweisung und der Speichervorgangsanweisung nicht ausgewählten Anweisung und ein der anderen Anweisung zugeordnetes Gefahrenanzeigeattribut umfasst, wobei das der anderen Anweisung zugeordnete Gefahrenanzeigeattribut im Wesentlichen dem Gefahrenanzeigeattribut gleicht, das der einen ausgeführten Anweisung zugeordnet ist, wobei das der anderen Anweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die andere Anweisung auf die Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist.
  3. Verfahren nach Anspruch 1, wobei das Ausführen Folgendes umfasst: Ausführen der Ladevorgangsanweisung vor der Speichervorgangsanweisung; und Ausführen der Speichervorgangsanweisung nach dem Beenden des Ausführens der Ladevorgangsanweisung, wobei die Ladevorgangsanweisung einen Datensatz von einem Speicherort erhält, an dem die Speichervorgangsanweisung eine darauffolgende Schreiboperation durchführt.
  4. Verfahren nach Anspruch 3, das weiterhin Folgendes umfasst: Feststellen durch die Speichervorgangsanweisung, dass die Ladevorgangsanweisung den Datensatz von dem Speicherort erhalten hat; als Reaktion auf das Feststellen Feststellen durch die Speichervorgangsanweisung, dass eine Speichervorgang-Treffer-Ladevorgang-Gefahr aufgetreten ist; und als Reaktion auf das Feststellen, dass die Speichervorgang-Treffer-Ladevorgang-Gefahr angetroffen wurde, Setzen eines Gefahrenanzeigeattributes in einem ältesten Ladevorgangswarteschlangeneintrag, mit dem die Speichervorgangsanweisung einen Vergleich durchführt, durch die Speichervorgangsanweisung, wenn festgestellt wird, dass die Ladevorgangsanweisung den Datensatz von dem Speicherort erhalten hat, wobei das Gefahrenanzeigeattribut angibt, dass die Ladevorgangsanweisung der Speichervorgang-Treffer-Ladevorgang-Gefahr zugeordnet ist.
  5. Verfahren nach Anspruch 4, das weiterhin mindestens einen der folgenden Schritte umfasst: Informieren einer Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch die Speichervorgangsanweisung darüber, dass die Speichervorgangsanweisung das Gefahrenanzeigeattribut gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt; als Reaktion darauf, dass die Speichervorgangsanweisung das Gefahrenattribut gesetzt hat, Informieren einer Anweisungsausgabeeinheit durch eine Speichervorgangswarteschlange über eine Speichervorgangswarteschlangen-Eintragsnummer in der Speichervorgangswarteschlange der Speichervorgangsanweisung; und Informieren der Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch die Ladevorgangsanweisung darüber, dass die Speichervorgangsanweisung das Gefahrenanzeigeattribut gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt.
  6. Verfahren nach Anspruch 1, wobei das Ausführen weiterhin Folgendes umfasst: Ausführen der Speichervorgangsanweisung vor der Ladevorgangsanweisung, wobei ein der Speichervorgangsanweisung zugeordneter Datensatz verzögert wird; und Ausführen der Ladevorgangsanweisung, bevor der Datensatz durch die Speichervorgangsanweisung in eine Speichervorgangswarteschlange geschrieben wird.
  7. Verfahren nach Anspruch 6, das weiterhin Folgendes umfasst: auf der Grundlage, dass die Ladevorgangsanweisung ausgeführt wird, bevor der Datensatz durch die Speichervorgangsanweisung in eine Speichervorgangswarteschlange geschrieben wird, Feststellen durch die Ladevorgangsanweisung, dass die Ladevorgangsanweisung von der Speichervorgangsanweisung abhängt. auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung von der Speichervorgangsanweisung abhängt, Feststellen durch die Ladevorgangsanweisung, dass kein Weiterleiten von Speichervorgangsdaten durchgeführt werden kann; und auf der Grundlage des Feststellens, dass kein Weiterleiten von Speichervorgangsdaten durchgeführt werden kann, Feststellen durch die Ladevorgangsanweisung, dass die Ladevorgangsanweisung auf eine Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist.
  8. Verfahren nach Anspruch 7, das weiterhin Folgendes umfasst: auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung auf die Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, Setzen eines Gefahrenanzeigeattributes in einem Speichervorgangswarteschlangeneintrag in der der Speichervorgangsanweisung zugeordneten Speichervorgangswarteschlange durch die Ladevorgangsanweisung, wobei das Gefahrenanzeigeattribut angibt, dass die Speichervorgangsanweisung der Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit zugeordnet ist; und auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung auf die Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, Setzen eines Gefahrenanzeigeattributes in einem Ladevorgangswarteschlangeneintrag in einer der Ladevorgangsanweisung zugeordneten Ladevorgangswarteschlange durch die Ladevorgangsanweisung, wobei das Gefahrenanzeigeattribut in dem Ladevorgangswarteschlangeneintrag angibt, dass die Ladevorgangsanweisung auf die dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist.
  9. Verfahren nach Anspruch 8, das weiterhin mindestens einen der folgenden Schritte umfasst: Informieren einer Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch die Ladevorgangsanweisung, dass die Ladevorgangsanweisung das Gefahrenanzeigeattribut im Ladevorgangswarteschlangeneintrag gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt; und Informieren der Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch, die Speichervorgangsanweisung darüber, dass die Ladevorgangsanweisung das Gefahrenanzeigeattribut im Speichervorgangswarteschlangeneintrag gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt.
  10. Verfahren nach Anspruch 1, wobei das Ausführen weiterhin Folgendes umfasst: Ausführen der Speichervorgangsanweisung vor der Ladevorgangsanweisung, wobei ein der Speichervorgangsanweisung zugeordneter Datensatz dauerhaft nicht verfügbar ist; Ausführen der Ladevorgangsanweisung nach der Speichervorgangsanweisung.
  11. Verfahren nach Anspruch 10, das weiterhin Folgendes umfasst: auf der Grundlage, dass der Datensatz dauerhaft nicht verfügbar ist, Feststellen durch die Ladevorgangsanweisung, dass die Ladevorgangsanweisung von der Speichervorgangsanweisung abhängt; auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung von der Speichervorgangsanweisung abhängt, Feststellen durch die Ladevorgangsanweisung, dass kein Weiterleiten von Speichervorgangsdaten durchgeführt werden kann; und auf der Grundlage des Feststellens, dass kein Weiterleiten von Speichervorgangsdaten durchgeführt werden kann und der Datensatz dauerhaft nicht verfügbar ist, Feststellen durch die Ladevorgangsanweisung, dass die Ladevorgangsanweisung auf eine dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist.
  12. Verfahren nach Anspruch 11, das weiterhin Folgendes umfasst: auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung auf die dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, Setzen eines Gefahrenanzeigeattributes in einem Speichervorgangswarteschlangeneintrag in der der Speichervorgangsanweisung zugeordneten Speichervorgangswarteschlange durch die Ladevorgangsanweisung, wobei das Gefahrenanzeigeattribut angibt, dass die Speichervorgangsanweisung der dauerhaften Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit zugeordnet ist; und auf der Grundlage des Feststellens, dass die Ladevorgangsanweisung auf die dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, Setzen einer Gefahrenanzeigeattributes in einem Ladevorgangswarteschlangeneintrag in einer der Ladevorgangsanweisung zugeordneten Ladevorgangswarteschlange durch die Ladevorgangsanweisung, wobei das Gefahrenanzeigeattribut in dem Ladevorgangswarteschlangeneintrag angibt, dass die Ladevorgangsanweisung auf die dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist.
  13. Verfahren nach Anspruch 12, das weiterhin mindestens eines der folgenden Elemente umfasst: Informieren einer Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch die Ladevorgangsanweisung darüber, dass die Ladevorgangsanweisung das Gefahrenanzeigeattribut im Ladevorgangswarteschlangeneintrag gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt; und Informieren der Anweisungsholeinheit, welche die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren umfasst, durch die Speichervorgangsanweisung darüber, dass die Ladevorgangsanweisung das Gefahrenanzeigeattribut im Speichervorgangswarteschlangeneintrag gesetzt hat, wobei die Anweisungsholeinheit den Eintrag als Reaktion auf das Informieren erstellt.
  14. Verfahren nach Anspruch 1, das weiterhin Folgendes umfasst: Decodieren der Anweisung; Abfragen der Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren nach der Anweisungsadresse der Anweisung, wobei die Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren einen ersten Eintrag für eine Ladevorgangsanweisung und einen zweiten Eintrag für eine Speichervorgangsanweisung umfasst, wobei der erste und der zweite Eintrag voneinander unabhängig sind, und wobei der erste und der zweite Eintrag angeben, dass die Ladevorgangsanweisung bzw. die Speichervorgangsanweisung zuvor auf eine Operand-Speichervorgang-Vergleich-Gefahr gestoßen ist, und wobei der erste und der zweite Eintrag mindestens eine Anweisungsadresse jeweils entweder der Ladevorgangsanweisung oder der Speichervorgangsanweisung sowie ein Gefahrenanzeigeattribut umfassen, die einer Operand-Speichervorgang-Vergleich-Gefahr zugeordnet ist; als Reaktion auf das Abfragen der Vorhersagetabelle Feststellen, dass die Anweisung entweder dem ersten oder dem zweiten Eintrag in der Tabelle zur Vorhersage von Operand-Speichervorgang-Vergleich-Gefahren zugeordnet ist; auf der Grundlage des Feststellens Identifizieren des Gefahrenanzeigeattributes, das entweder in dem ersten oder dem zweiten Eintrag enthalten ist, welcher der Anweisung zugeordnet ist; wobei es sich im Falle, dass die Anweisung dem ersten Eintrag zugeordnet ist, bei der Anweisung um eine Ladevorgangsanweisung handelt, und auf der Grundlage des identifizierten Gefahrenanzeigeattributes Markieren der Anweisung, wobei die Markierung eine Ausführung der Anweisung davon abhängig macht, dass mindestens eine Speichervorgangsanweisung, die dem zweiten Eintrag der Vorhersagetabelle zugeordnet ist, der ein Gefahrenanzeigeattribut umfasst, das im Wesentlichen dem Gefahrenanzeigeattribut gleicht, das der Anweisung zugeordnet ist, ein gegebenes Ausführungsstadium erreicht hat; und wobei es sich im Falle, dass die Anweisung dem zweiten Eintrag zugeordnet ist, bei der Anweisung um eine Speichervorgangsanweisung handelt.
  15. Verfahren nach Anspruch 14, wobei das der Anweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die Anweisung zuvor auf eine Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, und wobei die Markierung eine Ausführung der Anweisung von allen Speichervorgangsanweisungen abhängig macht, die einem Eintrag der Vorhersagetabelle zugeordnet sind, der das Gefahrenanzeigeattribut umfasst, das im Wesentlichen dem Gefahrenanzeigeattribut gleicht, das der Anweisung zugeordnet ist, die ein Stadium erreicht hat, in dem die Speichervorgänge weiterleitbar sind.
  16. Verfahren nach Anspruch 14, wobei das der Anweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die Anweisung zuvor auf eine dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist, und wobei das der mindestens einen Speichervorgangsanweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die mindestens eine Speichervorgangsanweisung zuvor auf eine dauerhafte Ladevorgang-Treffer-Speichervorgang-Gefahr ohne Weiterleitungsmöglichkeit gestoßen ist.
  17. Verfahren nach Anspruch 14, wobei das der Anweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die Anweisung zuvor auf eine Speichervorgang-Treffer-Ladevorgang-Gefahr gestoßen ist, und wobei das der mindestens einen Speichervorgangsanweisung zugeordnete Gefahrenanzeigeattribut angibt, dass die mindestens eine Speichervorgangsanweisung zuvor auf eine Speichervorgang-Treffer-Ladevorgang-Gefahr gestoßen ist.
  18. Verfahren nach Anspruch 14, das weiterhin Folgendes umfasst: auf der Grundlage der Markierung Verzögern der Ausführung der Ladevorgangsanweisung, bis alle Speichervorgangsanweisungen, die einem Eintrag der Vorhersagetabelle zugeordnet sind, der das Gefahrenanzeigeattribut umfasst, das im Wesentlichen dem Gefahrenanzeigeattribut gleicht, das der Anweisung zugeordnet ist, ihre Adressberechnung ausgeführt und ihre Daten in einen entsprechenden Eintrag in einer Speichervorgangswarteschlange geschrieben haben.
  19. Verfahren nach Anspruch 14, wobei es sich bei der mindestens einen Speichervorgangsanweisung um eine jüngste Speichervorgangsanweisung handelt, welche das Gefahrenanzeigeattribut aufweist, das im Wesentlichen dem Gefahrenanzeigeattribut gleicht, das der Anweisung zugeordnet ist, und wobei das Verfahren weiterhin Folgendes umfasst: auf der Grundlage der Markierung Verzögern der Ausführung der Anweisung, bis die mindestens eine Speichervorgangsanweisung ein Zurückschreiben in den L1-Cachespeicher durchgeführt hat.
  20. System, das Mittel umfasst, die so ausgebildet sind, dass sie all die Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche ausführen können.
  21. Computerprogramm, das Anweisungen zum Ausführen all der Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche umfasst, wenn das Computerprogramm auf einem Computersystem ausgeführt wird.
DE112010004322T 2009-12-22 2010-12-13 Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge Ceased DE112010004322T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/644,923 US8468325B2 (en) 2009-12-22 2009-12-22 Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US12/644,923 2009-12-22
US12/822,960 2010-06-24
US12/822,960 US8521992B2 (en) 2009-12-22 2010-06-24 Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
PCT/EP2010/069496 WO2011076602A1 (en) 2009-12-22 2010-12-13 Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors

Publications (1)

Publication Number Publication Date
DE112010004322T5 true DE112010004322T5 (de) 2012-08-23

Family

ID=43416544

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010004322T Ceased DE112010004322T5 (de) 2009-12-22 2010-12-13 Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge

Country Status (6)

Country Link
US (2) US8521992B2 (de)
JP (2) JP5850532B2 (de)
CN (1) CN102652304B (de)
DE (1) DE112010004322T5 (de)
GB (1) GB2486155B (de)
WO (1) WO2011076602A1 (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069563B2 (en) * 2011-09-16 2015-06-30 International Business Machines Corporation Reducing store-hit-loads in an out-of-order processor
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) * 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9158691B2 (en) 2012-12-14 2015-10-13 Apple Inc. Cross dependency checking logic
US9880849B2 (en) * 2013-12-09 2018-01-30 Macom Connectivity Solutions, Llc Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US9274970B2 (en) 2013-12-31 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for handling processor read-after-write hazards with cache misses
US11093401B2 (en) 2014-03-11 2021-08-17 Ampere Computing Llc Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
CN104063329B (zh) * 2014-06-30 2017-04-12 龙芯中科技术有限公司 64位立即数处理方法及装置
US10209995B2 (en) 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US9483409B2 (en) * 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US9928075B2 (en) 2015-02-13 2018-03-27 International Business Machines Corporation Load queue entry reuse for operand store compare history table update
WO2017019008A1 (en) * 2015-07-27 2017-02-02 Applied Micro Circuits Corporation Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9710281B2 (en) * 2015-07-30 2017-07-18 International Business Machines Corporation Register comparison for operand store compare (OSC) prediction
US20170046167A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US9606805B1 (en) 2015-10-19 2017-03-28 International Business Machines Corporation Accuracy of operand store compare prediction using confidence counter
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10740107B2 (en) * 2016-06-01 2020-08-11 International Business Machines Corporation Operation of a multi-slice processor implementing load-hit-store handling
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10684859B2 (en) * 2016-09-19 2020-06-16 Qualcomm Incorporated Providing memory dependence prediction in block-atomic dataflow architectures
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10417002B2 (en) * 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US10564979B2 (en) * 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
CN108519906B (zh) * 2018-03-20 2022-03-22 东南大学 超标量乱序处理器稳定状态指令吞吐率建模方法
US10725783B2 (en) * 2018-11-02 2020-07-28 International Business Machines Corporation Splitting load hit store table for out-of-order processor
CN111221579B (zh) * 2018-11-27 2022-04-26 展讯通信(上海)有限公司 预测Load指令执行延迟的方法及系统
JP7151439B2 (ja) * 2018-12-06 2022-10-12 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10977040B2 (en) 2019-02-19 2021-04-13 International Business Machines Corporation Heuristic invalidation of non-useful entries in an array
US10802830B2 (en) * 2019-03-05 2020-10-13 International Business Machines Corporation Imprecise register dependency tracking
US11099989B2 (en) 2019-03-12 2021-08-24 International Business Machines Corporation Coherency maintenance via physical cache coordinate comparison
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US10831661B2 (en) 2019-04-10 2020-11-10 International Business Machines Corporation Coherent cache with simultaneous data requests in same addressable index
US10824430B1 (en) * 2019-04-25 2020-11-03 International Business Machines Corporation Resolving operand store compare conflicts
EP3812891A1 (de) * 2019-10-21 2021-04-28 ARM Limited Verarbeitung mit entkoppeltem zugriff-ausführung
US11755731B2 (en) 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks
US11803638B2 (en) 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor core with a store dependence predictor accessed using a translation context
US11803637B2 (en) 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor that prevents store-to-load forwarding between different translation contexts
US11755732B2 (en) * 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Microprocessor that conditions store-to-load forwarding on circumstances associated with a translation context update
CN115576610B (zh) * 2022-11-18 2023-03-10 北京数渡信息科技有限公司 一种适用于通用顺序发射处理器的指令分发处理方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5619662A (en) 1992-11-12 1997-04-08 Digital Equipment Corporation Memory reference tagging
US5666506A (en) 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US6219742B1 (en) 1998-04-29 2001-04-17 Compaq Computer Corporation Method and apparatus for artificially generating general purpose events in an ACPI environment
US6463523B1 (en) 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6999952B1 (en) 2001-04-18 2006-02-14 Cisco Technology, Inc. Linear associative memory-based hardware architecture for fault tolerant ASIC/FPGA work-around
US20030126409A1 (en) * 2001-12-28 2003-07-03 Toni Juan Store sets poison propagation
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
US20050223292A1 (en) 2004-02-17 2005-10-06 Lee Chee S Single instruction type based hardware patch controller
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
US7716528B2 (en) 2004-09-07 2010-05-11 Broadcom Corporation Method and system for configurable trigger logic for hardware bug workaround in integrated circuits
US8627047B2 (en) 2008-02-15 2014-01-07 International Business Machines Corporation Store data forwarding with no memory model restrictions
US8443227B2 (en) 2008-02-15 2013-05-14 International Business Machines Corporation Processor and method for workaround trigger activated exceptions

Also Published As

Publication number Publication date
US8521992B2 (en) 2013-08-27
GB2486155A (en) 2012-06-06
US20130318330A1 (en) 2013-11-28
WO2011076602A1 (en) 2011-06-30
GB201206367D0 (en) 2012-05-23
JP6143306B2 (ja) 2017-06-07
CN102652304B (zh) 2015-04-15
US20110153986A1 (en) 2011-06-23
JP2015228237A (ja) 2015-12-17
US9430235B2 (en) 2016-08-30
CN102652304A (zh) 2012-08-29
GB2486155B (en) 2017-04-19
JP5850532B2 (ja) 2016-02-03
JP2013515306A (ja) 2013-05-02

Similar Documents

Publication Publication Date Title
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112007003801B3 (de) Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE112018000848T5 (de) Registerkontextwiederherstellung auf der Grundlage der Wiedergewinnung von Umbenennungsregistern
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE112010003330T5 (de) Einrichten von Prüfpunkten bei Cachespeichern für die spekulative Versionierung
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE102014108753A1 (de) Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem
DE112015000294T5 (de) Wiederherstellen von Hardware-Transaktionen
DE112018000202T5 (de) Umgehen eines Speicherzugriffs für eine Ladeanweisung unter Verwendung einer Anweisungsadresszuordnung
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final