DE102005032949A1 - Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren - Google Patents

Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren Download PDF

Info

Publication number
DE102005032949A1
DE102005032949A1 DE102005032949A DE102005032949A DE102005032949A1 DE 102005032949 A1 DE102005032949 A1 DE 102005032949A1 DE 102005032949 A DE102005032949 A DE 102005032949A DE 102005032949 A DE102005032949 A DE 102005032949A DE 102005032949 A1 DE102005032949 A1 DE 102005032949A1
Authority
DE
Germany
Prior art keywords
order
memory
queue
vector
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
DE102005032949A
Other languages
English (en)
Inventor
George Milford Chrysos
Ugonna Worcester Echeruo
Chyi-Chang Sharon Miao
James North Grafton Vash
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102005032949A1 publication Critical patent/DE102005032949A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

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

Abstract

Bei einer Ausführungsform der vorliegenden Erfindung umfaßt ein Verfahren ein Erzeugen eines ersten Ordnungsvektors entsprechend eines ersten Eintrags in einer Operationsordnungsschlange, welcher einer ersten Speicheroperation entspricht, und ein Unterbinden, daß eine nachfolgende Speicheroperation abgeschlossen wird, bis die erste Speicheroperation abgeschlossen ist. Bei einem derartigen Verfahren kann die Operationsschlange beispielsweise eine Ladeschlange oder eine Speicherschlange sein. Genauso kann ein Ordnungsvektor für einen Eintrag einer ersten Operationsordnungsschlange auf der Grundlage von Einträgen in einer zweiten Operationsordnungsschlange erzeugt werden. Weiterhin kann ein derartiger Eintrag ein Feld zum Identifizieren eines Eintrags in der zweiten Operationsordnungsschlange umfassen. Ein Mischpuffer kann an die erste Operationsordnungsschlange angeschlossen werden und ein Signal produzieren, wenn alle vorhergehenden Schreibvorgänge sichtbar geworden sind.

Description

  • Die vorliegende Erfindung betrifft das Speicherordnen und insbesondere das Ausführen von Speicheroperationen gemäß einem Speicherordnungsmodell.
  • Ein Ausführen einer Speicherinstruktion muß gemäß einem Speicherordnungsmodell der Zielbefehlssatzarchitektur (ISA) agieren. Als Referenz weisen die beiden Haupt-ISAs der Intel Corporation, Intel®-Architektur (IA-32 oder x86) und Intels ITANIUM®-Prozessorfamilie (IPF), sehr unterschiedliche Speicherordnungsmodelle auf. Bei der IA-32 müssen Lade- und Speicheroperationen sichtbar in Programmordnung sein. Bei der IPF-Architektur müssen sie es im Allgemeinen nicht, es gibt jedoch Spezialinstruktionen, durch welche ein Programmierer ein Ordnen, falls nötig, erzwingen kann (z.B. Ladeannahme (hierin als „Ladeannahme" bezeichnet), Speicherfreigabe (hierin als „Speicherfreigabe" bezeichnet), Speicherschranke und Semaphoren).
  • Eine einfache Strategie, jedoch mit geringem Leistungsvermögen, um Speicheroperationen in Ordnung zu halten, ist es, keiner Speicherinstruktion zu gestatten, auf eine Speicherhierarchie zuzugreifen, bis eine vorhergehende Speicherinstruktion ihre Daten (für einen Ladevorgang) erhalten hat oder eine Bestätigung der Eigentümerschaft über ein Cachekohärenzprotokoll (für einen Speichervorgang) bekommen hat.
  • Software-Anwendungen hängen jedoch zunehmend von geordneten Speicheroperationen ab, das bedeutet von Speicheroperationen, welche ein Ordnen anderer Speicheroperationen und von ihnen selbst einführen. Beim Ausführen paralleler Threads in einem Chip-Multiprozessor (CMP) werden geordnete Speicherinstruktionen in Synchronisation und Kommunikation zwischen unterschiedlichen Software-Threads oder Prozessen einer einzelnen Anwendung verwendet. Ein Ausführen von Transaktionen und verwaltete Laufzeitumgebungen hängen von geordneten Speicherinstruktionen ab, um wirksam zu funktionieren. Weiterhin nehmen binäre Übersetzer, welche aus einem stärkeren ISA-Speicherordnungsmodell (z.B. x86) in eine schwächere ISA-Speicherordnung (z.B. IPF) übersetzen, an, daß die übersetzte Anwendung von dem Ordnen abhängt, welches von dem stärkeren Speicherordnungsmodell erzwungen wird. Wenn die Binärcodierungen folglich übersetzt sind, müssen sie Lade- und Speichervorgänge durch geordnete Lade- und Speichervorgänge ersetzen, um die Richtigkeit des Programms zu garantieren.
  • Mit zunehmendem Einsatz geordneter Speicheroperationen wird das Leistungsvermögen geordneter Speicheroperationen wichtiger. Bei aktuellen x86-Prozessoren ist ein ungeordnetes Ausführen geordneter Speicheroperationen bereits entscheidend für das Leistungsvermögen, da alle Speicheroperationen geordnete Operationen sind. Ungeordnete Prozessoren, welche ein starkes Speicherordnungsmodell implementieren, können spekulativerweise ungeordnete Ladevorgänge ausführen und dann überprüfen, um zu gewährleisten, daß keine Ordnungsverletzung aufgetreten ist, bevor die Ladeinstruktion dem Maschinenzustand übergeben wird. Dies kann durch Nachverfolgen ausgeführter jedoch noch nicht übergebener Ladeadressen in einer Ladeschlange und durch Überwachen von Schreibvorgängen durch andere Zentraleinheiten (CPUs) oder Cache-kohärenten Agenten vorgenommen werden. Falls eine andere CPU auf die gleiche Adresse schreibt wie ein Ladevorgang in der Ladeschlange, kann die CPU den passenden Ladevorgang einfangen oder erneut ausführen (und alle nachfolgenden, nicht übergebenen Ladevorgänge löschen) und dann diesen Ladevorgang und alle nachfolgenden Ladevorgänge wieder ausführen, um sicherzustellen, daß kein jüngerer Ladevorgang vor einem älteren Ladevorgang erfüllt wird.
  • Geordnete CPUs können jedoch Ladeinstruktionen übergeben, bevor die ihre Daten in die Registerdatei zurückgegeben haben. Bei einer derartigen CPU können Ladevorgänge übergeben werden, sobald sie alle ihre Fehlerprüfungen (z.B. Ausbleiben im Datenübersetzungspuffer (DTB) und unausgerichteter Zugang) bestanden haben und bevor Daten abgerufen werden. Wenn Ladeinstruktionen einmal zurückgezogen wurden, können sie nicht wieder ausgeführt werden. Deshalb ist es keine Option, Ladevorgänge einzufangen und erneut abzurufen oder wieder auszuführen, nachdem sie auf der Grundlage des Überwachens von Schreibvorgängen von anderen CPUs zurückgezogen wurden, wie oben stehend beschrieben.
  • Es besteht folglich ein Bedarf zum Verbessern des Leistungsvermögens geordneter Speicheroperationen insbesondere bei einem Prozessor mit einem schwachen Speicherordnungsmodell.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Ladeinstruktion gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Ablaufdiagramm eines Verfahrens zum Laden von Daten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Speicherinstruktion gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Speicherschranke gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Unter Bezugnahme auf 1 wird ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Genauer gesagt kann, wie in 1 gezeigt, System 10 ein Informationsbehandelungssystem sein, wie beispielsweise ein Personal-Computer (z.B. ein Arbeitsplatz-Computer, ein Notebook-Computer, ein Server-Computer oder dergleichen). Wie in 1 gezeigt, kann System 10 verschiedene Prozessorbetriebsmittel umfassen, wie beispielsweise eine Ladeschlange 20, eine Speicherschlange 30 und einen Misch- (d.h. einen Schreibkombinations-)-Puffer 40. Bei bestimmten Ausführungsformen können sich diese Schlangen und Puffer innerhalb eines Prozessors des Systems befinden, wie beispielsweise in einer Zentraleinheit (CPU). Beispielsweise kann eine derartige CPU bei bestimmten Ausführungsformen gemäß einer Architektur IA-32 oder IPF sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht so eingeschränkt ist. Bei anderen Ausführungsformen können die Ladeschlange 20 und die Speicherschlange 30 zu einem einzelnen Puffer vereinigt werden.
  • Ein Prozessor, welcher derartige Prozessorbetriebsmittel umfaßt, kann sie als vorübergehende Speicherung für verschiedene Speicheroperationen verwenden, welche innerhalb des Systems ausgeführt werden können. Beispielsweise kann die Ladeschlange 20 verwendet werden, um vorübergehend Einträge bestimmter Speicheroperationen, wie beispielsweise Ladeoperationen, zu speichern und um vorhergehende Ladevorgänge oder andere Speicheroperationen nachzuverfolgen, welche abgeschlossen sein müssen, bevor die gegebene Speicheroperation selbst abgeschlossen werden kann. Genauso kann die Speicherschlange 30 verwendet werden, um Speicheroperationen zu speichern, beispielsweise Speichervorgänge, und um vorhergehende Speicheroperationen (gewöhnlich Ladevorgänge) nachzuverfolgen, welche abgeschlossen sein müssen, bevor eine gegebene Speicheroperation selbst übergeben werden kann. Bei verschiedenen Ausführungsformen kann ein Mischpuffer 40 als ein Puffer verwendet werden, um vorübergehend Daten entsprechend einer Speicheroperation zu speichern, bis zu einem derartigen Zeitpunkt, an welchem die Speicheroperation (z.B. ein Speichervorgang oder eine Semaphore) abgeschlossen oder übergeben werden kann.
  • Eine ISA mit einem schwachen Speicherordnungsmodell (wie beispielsweise IPF-Prozessoren) können explizite Instruktionen umfassen, welche eine stringente Speicherordnung erfordern (z.B. Ladeannahme, Speicherfreigabe, Speicherschranke und Semaphoren), während die gewöhnlichsten Lade- und Speichervorgänge keine stringente Speicherordnung einführen. Bei einer ISA mit einem starken Speicherordnungsmodell (z.B. einer ISA IA-32) kann jede Lade- oder Speicherinstruktion stringenten Speicherordnungsregeln folgen. Folglich kann ein Programm, welches aus einer IA-32-Umgebung in eine IPF-Umgebung übersetzt wurde, beispielsweise eine starke Speicherordnung einführen, um ein sachgerechtes Programmverhalten zu gewährleisten, indem alle Ladevorgänge durch Ladeannahmen und alle Speichervorgänge durch Speicherfreigaben substituiert werden.
  • Wenn ein Prozessor gemäß einer Ausführungsform der vorliegenden Erfindung eine Ladeannahme verarbeitet, gewährleistet er, daß die Ladeannahme eine globale Sichtbarkeit erzielt hat, bevor nachfolgende Ladevorgänge und Speichervorgänge verarbeitet werden. Falls folglich die Ladeannahme in einem Datencache des ersten Levels ausbleibt, kann nachfolgenden Ladevorgängen verboten werden, auch dann die Registerdatei zu aktualisieren, wenn sie in dem Datencache eingetroffen wären, und nachfolgende Speichervorgänge müssen die Eigentümerschaft des Blocks, welchen sie schreiben, nur prüfen, nachdem die Ladeannahme ihre Daten in die Registerdatei zurückgegeben hat. Um dies zu erreichen, kann der Prozessor erzwingen, daß alle jüngeren Ladevorgänge als eine ausstehende Ladeannahme in dem Datencache ausbleiben und in eine Ladeschlange eintreten, d.h. in einer Anforderungsschlange (MRQ) ausbleiben, um eine sachgerechte Ordnung zu gewährleisten.
  • Wenn ein Prozessor gemäß einer Ausführungsform der vorliegenden Erfindung eine Speicherfreigabe verarbeitet, gewährleistet er, daß alle vorhergehenden Lade- und Speichervorgänge eine globale Sichtbarkeit erzielt haben. Bevor folglich die Speicherfreigabe ihren Schreibvorgang global sichtbar machen kann, müssen alle vorhergehenden Ladevorgänge Daten in die Registerdatei zurückgegeben haben und müssen alle vorhergehenden Speichervorgänge eine Sichtbarkeit der Eigentümerschaft über ein Cachekohärenzprotokoll erzielt haben.
  • Speicherschranken- und Semaphorenoperationen weisen Elemente sowohl von Ladeannahme- als auch von Speicherfreigabesemantiken auf.
  • Immer noch unter Bezugnahme auf 1 wird Ladeschlange 20 (hierin auch als „MRQ 20" bezeichnet) gezeigt, welche einen MRQ-Eintrag 25 umfaßt, welcher ein Eintrag entsprechend einer bestimmten Speicheroperation (d.h. eines Ladevorgangs) ist. Während sie zu Darstellungszwecken mit einem einzelnen Eintrag 25 gezeigt wird, können mehrere derartige Einträge vorliegen. Dem MRQ-Eintrag 25 ist ein Ordnungsvektor 26 zugeordnet, welcher mit mehreren Bits gebildet wird. Jedes Bit des Ordnungsvektors 26 kann einem Eintrag innerhalb der Ladeschlange 20 entsprechen, um anzuzeigen, ob vorhergehende Speicheroperationen abgeschlossen wurden. Folglich kann der Ordnungsvektor 26 vorhergehende Ladevorgänge nachverfolgen, welche abgeschlossen werden müssen, bevor eine zugeordnete Speicheroperation abgeschlossen werden kann.
  • Dem MRQ-Eintrag 25 ist auch ein Ordnungsbit (O-Bit) 27 zugeordnet, welches verwendet werden kann, um anzuzeigen, daß nachfolgende Speicheroperationen, welche in der Ladeschlange 20 gespeichert sind, hinsichtlich des MRQ-Eintrags 25 geordnet werden sollten.
  • Weiterhin kann auch ein Validierungsbit 28 vorliegen. Wie außerdem in 1 gezeigt, kann der MRQ-Eintrag 25 auch eine Ordnungsspeicherpuffer-Kennung (ID) 29 umfassen, welche verwendet werden kann, um einen Eintrag in einem Speicherpuffer entsprechend der Speicheroperation des MRQ-Eintrags zu identifizieren.
  • Genauso kann die Speicherschlange 30 (hierin auch als „STB 30" bezeichnet) mehrere Einträge umfassen. Zu Darstellungszwecken wird nur ein einzelner STB-Eintrag 35 in 1 gezeigt. Der STB-Eintrag 35 kann einer gegebenen Speicheroperation (d.h. einem Speichervorgang) entsprechen. Wie in 1 gezeigt, kann der STB-Eintrag 35 einen Ordnungsvektor 36 aufweisen, welcher ihm zugeordnet ist. Ein derartiger Ordnungsvektor kann das relative Anordnen der Speicheroperation entsprechend dem STB-Eintrag 35 hinsichtlich vorhergehender Speicheroperationen innerhalb der Ladeschlange 20 und bei manchen Ausführungsformen gegebenenfalls innerhalb der Speicherschlange 30 anzeigen. Folglich kann der Ordnungsvektor 36 vorhergehende Speicheroperationen (gewöhnlich Ladevorgänge) in der MRQ 20 anzeigen, welche abgeschlossen werden müssen, bevor eine zugeordnete Speicheroperation übergeben werden kann. Während es nicht in 1 gezeigt wird, kann die STB 30 bei bestimmten Ausführungsformen eine STB-Übergabebenachrichtigung (z.B. der MRQ bereitstellen, um anzuzeigen, daß nun eine vorhergehende Speicheroperation (gewöhnlich ein Speichervorgang in der STB) übergeben wurde.
  • Bei verschiedenen Ausführungsformen kann der Mischpuffer 40 ein Signal 45 (d.h. ein Signal „alle vorhergehenden Schreibvorgänge sichtbar") übertragen, welches verwendet werden kann, um anzuzeigen, daß alle vorhergehenden Schreiboperationen Sichtbarkeit erzielt haben. Bei einer derartigen Ausführungsform kann das Signal 45 verwendet werden, um zu melden, daß eine Freigabe-semantische Speicheroperation in der STB 30 (gewöhnlich eine Speicherfreigabe, eine Speicherschranken- oder eine Semaphorenfreigabe), welche ein Übergeben verzögert hat, nun beim Empfang des Signals 45 übergeben werden kann. Eine Verwendung des Signals 45 wird nachfolgend weiter diskutiert.
  • Zusammen können diese Mechanismen eine Speicherordnung erzwingen, wie sie von den Semantiken der erteilten Speicheroperationen benötigt wird. Die Mechanismen können ein hohes Leistungsvermögen erleichtern, da ein Prozessor gemäß bestimmten Ausführungsformen nur Ordnungsbedingungen erzwingen kann, wenn es erwünscht ist, native Binärcodes zu nutzen, welche ein schwaches Speicherordnungsmodell verwenden.
  • Weiterhin können bei verschiedenen Ausführungsformen Ordnungsvektorprüfungen für Ladevorgänge so lange wie möglich verzögert werden. Dies weist zwei Auswirkungen auf. Hinsichtlich vorbereiteter Speicherzugriffe greifen erstens Ladevorgänge, welche Ordnungsbedingungen erfordern, normal auf die Cachehierarchie zu (abgesehen von einem erzwungenen Ausbleiben aus dem primären Datencache). Dies gestattet einem Ladevorgang, auf Caches des zweiten und dritten Levels und auf andere Socket-Caches und Speicher des Prozessors zuzugreifen, bevor seine Ordnungsbedingungen geprüft werden. Nur wenn die Daten des Ladevorgangs bereit sind, in die Registerdatei geschrieben zu werden, wird der Ordnungsvektor geprüft, um zu gewährleisten, daß alle Bedingungen erfüllt sind. Falls eine Ladeannahme aus dem primären Datencache ausbleibt, kann beispielsweise ein nachfolgender Ladevorgang (welcher warten muß, daß die Ladeannahme abgeschlossen wird) seine Anforderung im Schatten der Ladeannahme starten. Falls die Ladeannahme Daten zurückgibt, bevor der nachfolgende Ladevorgang Daten zurückgibt, erleidet der nachfolgende Ladevorgang keine Leistungseinbuße aufgrund der Ordnungsbedingung. Folglich kann im besten Fall ein Ordnen erzwungen werden, während Ladeoperationen vollständig vorbereitet sind.
  • Hinsichtlich einem Datenvorablesezugriff wird zweitens ein nachfolgender Ladevorgang seinen zugegriffenen Block wirksam vorab in den CPU-Cache ausgelesen haben, falls er versucht, Daten vor einer vorhergehenden Ladeannahme zurückzugeben. Nachdem die Ladeannahme Daten zurückgibt, kann es der nachfolgende Ladevorgang aus der Ladeschlange heraus erneut versuchen und seine Daten aus dem Cache bekommen. Eine Ordnung kann erhalten werden, weil ein eingreifender, global sichtbarer Schreibvorgang bewirkt, daß die Cachezeile ungültig wird, was dazu führt, daß der Cacheblock erneut ausgelesen wird, um eine aktualisierte Kopie zu erhalten.
  • Jetzt unter Bezugnahme auf 2 wird ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Ladeinstruktion gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Eine derartige Ladeinstruktion kann eine Ladevorgangs- oder eine Ladeannahmeinstruktion sein. Wie in 2 gezeigt, kann Verfahren 100 durch ein Empfangen einer Ladeinstruktion (Oval 102) beginnen. Eine derartige Instruktion kann in einem Prozessor mit Speicherordnungsregeln ausgeführt werden, in welchem eine Ladeannahmeinstruktion global sichtbar wird, bevor irgendeine nachfolgende Lade- oder Speicheroperation global sichtbar wird. Ersatzweise muß eine Ladeinstruktion bei bestimmten Prozessorumgebungen nicht geordnet sein. Während das Verfahren der 2 verwendet werden kann, um Ladeinstruktionen zu behandeln, kann ein ähnlicher Ablauf bei anderen Ausführungsformen verwendet werden, um andere Speicheroperationen zu behandeln, welche den Speicherordnungsregeln anderer Prozessoren entsprechen, bei welchen eine erste Speicheroperation vor nachfolgenden Speicheroperationen sichtbar werden muß.
  • Immer noch unter Bezugnahme auf 2 kann als nächstes festgestellt werden, ob irgendwelche vorhergehenden geordneten Operationen in einer Ladeschlange (Karo 105) ausstehen. Derartige Operationen können Ladeannahmeinstruktionen, Speicherschranken und dergleichen umfassen. Falls derartige Operationen ausstehen, kann der Ladevorgang in einer Ladeschlange (Block 170) gespeichert werden. Weiterhin kann ein Ordnungsvektor, welcher dem Eintrag in der Ladeschlange entspricht, auf der Grundlage von Ordnungsbits vorhergehender Einträge (Block 180) erzeugt werden. Das bedeutet, daß Ordnungsbits in dem erzeugten Ordnungsvektor für Operationen, welche geordnet werden können, vorliegen können, wie beispielsweise für Ladeannahmen, Speicherschranken und dergleichen. Bei einer Ausführungsform kann der MRQ-Eintrag die O-Bits aller vorhergehenden MRQ-Einträge kopieren, um seinen Ordnungsvektor zu erzeugen. Wenn beispielsweise fünf vorhergehende MRQ-Einträge vorliegen, von welchen jeder bereits global sichtbar geworden ist, kann der Ordnungsvektor für den sechsten Eintrag einen Einzelwert für jede der fünf vorhergehenden MRQ-Einträge umfassen. Dann kann die Steuerung zu Karo 115 weitergehen, wie nachfolgend weiter diskutiert wird. Während 2 zeigt, daß ein gegenwärtiger Eintrag von vorhergehenden Ordnungsoperationen in der Speicherschlange abhängig sein kann, kann der aktuelle Eintrag auch von vorhergehenden Ordnungsoperationen in der Speicherschlange abhängig sein, und demgemäß kann auch bestimmt werden, ob es irgendwelche derartige Operationen in der Speicherschlange gibt.
  • Falls bei Karo 105 statt dessen festgestellt wird, daß keine vorhergehenden geordneten Operationen in der Ladeschlange ausstehen, kann festgestellt werden, ob Daten in einem Datencache vorliegen (Karo 110). Falls dies so ist, können die Daten aus dem Datencache (Block 118) erhalten werden, und ein normales Ausführen kann fortgesetzt werden.
  • Bei Karo 115 kann festgestellt werden, ob die Instruktion eine Ladeannahmeoperation ist. Falls sie es nicht ist, kann die Steuerung zum Erhalten der Daten zu 3 weitergehen (Oval 195). Falls statt dessen bei Karo 115 festgestellt wird, daß die Instruktion eine Ladeannahmeoperation ist, kann die Steuerung zu Block 120 weitergehen, bei welchem erzwungen werden kann, daß nachfolgende Ladevorgänge in dem Datencache ausbleiben (Block 120). Wenn erzeugt, kann der MRQ-Eintrag dann auch sein eigenes O-Bit setzen (Block 150). Ein derartiges Ordnungsbit kann durch nachfolgende MRQ-Einträge verwendet werden, um zu bestimmen, wie ihr Ordnungsvektor hinsichtlich der gegenwärtig vorhandenen MRQ-Einträge zu setzen ist. Mit anderen Worten, ein nachfolgender Ladevorgang kann ein O-Bit eines MRQ-Eintrags durch entsprechendes Setzen eines entsprechenden Bits in seinem Ordnungsvektor melden. Als nächstes kann die Steuerung zu Oval 195 weitergehen, welches der 3 entspricht, welche nachfolgend diskutiert wird.
  • Während es in 2 nicht gezeigt ist, können bei bestimmten Ausführungsformen nachfolgende Ladeinstruktionen in einem MRQ- Eintrag gespeichert werden und ein O-Bit und ein dementsprechender Ordnungsvektor erzeugt werden. Das bedeutet, daß nachfolgende Ladevorgänge bestimmen können, wie ihr Ordnungsvektor durch Kopieren der O-Bits vorhandener MRQ-Einträge zu setzen ist (d.h. ein nachfolgender Ladevorgang meldet das O-Bit der Ladeannahme durch ein Setzen des entsprechenden Bits in seinem Ordnungsvektor des MRQ-Eintrags). Während es in 2 nicht gezeigt ist, versteht es sich, daß nachfolgende (d.h. Nicht-Freigabe) Speichervorgänge, auf die gleiche Weise wie es Ladevorgänge tun, bestimmen können, wie ihr Ordnungsvektor auf der Grundlage der O-Bits der MRQ-Einträge zu setzen ist.
  • Jetzt unter Bezugnahme auf 3 wird ein Ablaufdiagramm eines Verfahrens zum Laden von Daten gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 3 gezeigt, kann das Verfahren 200 mit einer Datenladeoperation beginnen (Oval 205). Als nächstes können Daten aus der Speicherhierarchie entsprechend der Ladeinstruktion empfangen werden (Block 210). Derartige Daten können sich an verschiedenen Orten einer Speicherhierarchie befinden, wie beispielsweise im Systemspeicher oder in einem ihm zugeordneten Cache oder in einem Cache auf dem Chip oder nicht auf dem Chip, welches einem Prozessor zugeordnet ist. Wenn die Daten aus der Speicherhierarchie empfangen werden, können sie im Datencache oder in einem anderen temporären Speicherort gespeichert werden.
  • Dann kann ein Ordnungsvektor entsprechend der Ladeinstruktion analysiert werden (Block 220). Beispielsweise kann ein MRQ-Eintrag in einer Ladeschlange entsprechend der Ladeinstruktion einen ihm zugeordneten Ordnungsvektor aufweisen. Der Ordnungsvektor kann analysiert werden, um zu bestimmen, ob der Ordnungsvektor gelöscht ist (Karo 230). Falls alle Bits des Ordnungsvektors gelöscht sind, kann dies bei der Ausführungsform der 3 anzeigen, daß alle vorhergehenden Speicheroperationen abgeschlossen sind. Falls der Ordnungsvektor nicht gelöscht ist, zeigt dies an, daß derartige vorhergehende Operationen nicht abgeschlossen wurden und entsprechend keine Daten zurückgegeben wurden. Statt dessen geht die Ladeoperation in der Ladeschlange in einen Wartezustand (Block 240), wobei sie auf einen Fortschritt vorhergehender Speicheroperationen, wie beispielsweise vorhergehender Ladeannahmeoperationen, wartet.
  • Falls statt dessen bei Karo 230 festgestellt wird, daß der Ordnungsvektor gelöscht ist, kann die Steuerung zu Block 250 weitergehen, bei welchem die Daten in eine Registerdatei geschrieben werden können. Als nächstes kann der Eintrag entsprechend der Ladeinstruktion freigegeben werden (Block 260). Schließlich kann bei Block 270 das Ordnungsbit, welches der abgeschlossenen (d.h. freigegebenen) Ladeoperation entspricht, spaltenweise aus allen nachfolgenden Einträge in der Ladeschlange und in der Speicherschlange gelöscht werden. In derartiger Weise können diese Ordnungsvektoren mit dem abgeschlossenen Status der aktuellen Operation aktualisiert werden.
  • Falls eine Speicheroperation bereit ist, zu versuchen, globale Sichtbarkeit zu erlangen (z.B. Kopieren aus dem Speicherpuffer heraus in den Mischpuffer und Anfordern der Eigentümerschaft für ihren Cacheblock), kann sie erst überprüfen, um zu gewährleisten, daß ihr Ordnungsvektor gelöscht ist. Falls er es nicht ist, kann die Operation verzögert werden, bis der Ordnungsvektor vollständig gelöscht ist.
  • Jetzt unter Bezugnahme auf 4 wird ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Speicherinstruktion gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Eine derartige Speicherinstruktion kann eine Speicher- oder eine Speicherfreigabeinstruktion sein. Bei bestimmten Ausführungsformen muß eine Speicherinstruktion nicht geordnet sein. Bei Ausführungsformen zur Verwendung mit bestimmten Prozessoren können jedoch Speicherordnungsregeln diktieren, daß alle vorhergehenden Lade- oder Speicheroperationen global sichtbar werden, bevor eine Speicherfreigabeoperation selbst global sichtbar wird. Während er in der Ausführungsform der 4 auf Speicherinstruktionen bezogen diskutiert wird, versteht es sich, daß ein derartiger Ablauf oder ein ähnlicher Auflauf verwendet werden kann, um ähnliche Speicherordnungsoperationen zu verarbeiten, welche erfordern, daß vorhergehende Speicheroperationen vor einer Sichtbarkeit der gegebenen Operation sichtbar werden.
  • Immer noch unter Bezugnahme auf 4 kann das Verfahren 400 durch Empfangen einer Speicherinstruktion beginnen (Oval 405). Bei Block 410 kann die Speicherinstruktion in einen Eintrag in der Speicherschlange eingefügt werden. Als nächstes kann festgestellt werden, ob die Operation eine Speicherfreigabeoperation ist (Karo 415). Falls sie es nicht ist, kann ein Ordnungsvektor für den Eintrag auf der Grundlage aller vorhergehenden, ausstehenden, geordneten Operationen in der Ladeschlange erzeugt werden (wobei ihr Ordnungsbit gesetzt ist) (Block 425). Da die Speicherinstruktion keine geordnete Instruktion ist, kann ein derartiger Ordnungsvektor erzeugt werden, ohne daß ihr Ordnungsbit gesetzt wird. Dann kann die Steuerung zu Karo 430 weitergehen, wie nachfolgend weiter diskutiert wird.
  • Falls statt dessen bei Karo 415 festgestellt wird, daß eine Speicherfreigabeoperation vorliegt, kann als nächstes ein Ordnungsvektor für den Eintrag auf der Grundlage von Informationen erzeugt werden, welche alle vorhergehenden, ausstehenden Operationen in der Ladeschlange, welche geordnet werden können, betreffen (Block 420). Wie oben stehend diskutiert, kann ein derartiger Ordnungsvektor Bits entsprechend anstehender Speicheroperationen umfassen (z.B. ausstehende Ladevorgänge in einer MRQ sowie Speicherschranken und andere derartige Operationen).
  • Bei Karo 430 kann festgestellt werden, ob der Ordnungsvektor gelöscht ist. Falls der Ordnungsvektor nicht gelöscht ist, kann eine Schleife ausgeführt werden, bis der Ordnungsvektor gelöscht wird. Wenn der Ordnungsvektor gelöscht wird, kann festgestellt werden, ob die Operation eine Freigabeoperation ist (Karo 435). Falls es nicht so ist, kann die Steuerung unmittelbar zu Block 445 weitergehen; wie nachfolgend diskutiert wird. Falls statt dessen festgestellt wird, daß eine Freigabeoperation vorliegt, kann dann bestimmt werden, ob alle vorhergehenden Schreibvorgänge Sichtbarkeit erzielt haben (Karo 440). Bei einer Ausführungsform können Speichervorgänge beispielsweise sichtbar sein, wenn Daten, welche der Instruktion entsprechen, in einem gegebenen Puffer oder an einem anderen Speicherort vorliegen. Falls nicht, kann Karo 440 auf sich selbst zurück verzweigen, bis alle vorhergehenden Schreibvorgänge Sichtbarkeit erzielt haben. Wenn eine derartige Sichtbarkeit erzielt ist, kann die Steuerung zu Block 445 weitergehen.
  • Dort kann der Speichervorgang Sichtbarkeit für den Schreibvorgang in seinen Cacheblock anfordern (Block 445). Während es nicht in 4 gezeigt ist, können Daten in dem Mischpuffer zu dem Zeitpunkt gespeichert werden, an welchem dem Speichervorgang gestattet ist, Sichtbarkeit anzufordern. Falls bei einer Ausführungsform alle vorhergehenden Speichervorgänge Sichtbarkeit erreicht haben, kann ein Mischpuffer-Sichtbarkeitssignal logisch wahr gesetzt werden. Ein derartiges Signal kann anzeigen, daß alle vorhergehenden Speicheroperationen globale Sichtbarkeit erlangt haben, wie durch den Mischpuffer bestätigt wird. Bei einer Ausführungsform kann ein Cachekohärenzprotokoll abgefragt werden, um eine derartige Sichtbarkeit zu erlangen. Eine derartige Sichtbarkeit kann erlangt werden, wenn das Cachekohärenzprotokoll eine Rückbestätigung an den Speicherpuffer bereitstellt.
  • Bei bestimmten Ausführungsformen kann sich ein Cacheblock für eine Speicherfreigabeoperation bereits in dem eigenen Mischpuffer (MGB) befinden, wenn die Speicherfreigabe bereit ist, Sichtbarkeit zu erlangen. Der MGB kann ein hohes Leistungsvermögen für Ströme von Speicherfreigaben erhalten (z.B. bei Codesegmenten, bei welchen alle Speichervorgänge Speicherfreigaben sind), falls es ein ausreichendes Maß an Mischung in dem MGB für diese Blöcke gibt.
  • Falls der Speichervorgang Sichtbarkeit erlangt hat, kann ein Bestätigungsbit zum Speichern von Daten in dem Mischpuffer gesetzt werden. Der MGB kann dieses Bestätigungsbit, welches auch als ein Eigentümerschafts- oder Schmutzbit bezeichnet wird, für jeden gültigen Cacheblock umfassen. Bei derartigen Ausführungsformen kann der MGB dann eine ODER-Operation über alle seine gültigen Einträge durchführen. Falls irgendwelche gültigen Einträge nicht bestätigt sind, kann das Signal „alle vorhergehenden Schreibvorgänge sichtbar" logisch falsch gesetzt werden. Wenn dieses Bestätigungsbit einmal gesetzt ist, kann der Eintrag global sichtbar werden. In einer derartigen Weise kann Sichtbarkeit für die Speicher- oder Speicherfreigabeinstruktion erzielt werden (Block 460). Es versteht sich, daß mindestens bestimmte Aktionen, welche in 4 dargelegt sind, bei unterschiedlichen Ausführungsformen in einer anderen Reihenfolge durchgeführt werden können. Beispielsweise können bei einer Ausführungsform vorhergehende Schreibvorgänge sichtbar werden, wenn Daten, welche der Instruktion entsprechen, in einem gegebenen Puffer oder in einem anderen Speicherort vorliegen.
  • Jetzt unter Bezugnahme auf 5 wird ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Speicherschranken-(MF)-Operation gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform der 5 kann eine Speicherschranke in einem Prozessor mit Speicherordnungsregeln verarbeitet werden, welche diktieren, daß für eine Speicherschranke alle vorhergehenden Lade- und Speichervorgänge sichtbar werden, bevor irgendwelche nachfolgenden Lade- und Speichervorgänge sichtbar gemacht werden können. Bei einer Ausführungsform kann ein derartiger Prozessor ein IPF-Prozessor, ein IA-32-Prozessor oder ein anderer derartiger Prozessor sein.
  • Wie in 5 gezeigt kann eine Speicherschrankeninstruktion von einem Prozessor erteilt werden (Oval 505). Als nächstes kann ein Eintrag sowohl in einer Ladeschlange als auch in einer Speicherschlange mit Ordnungsvektoren erzeugt werden, welche dem Eintrag entsprechen (Block 510). Genauer gesagt, die Ordnungsvektoren können allen vorhergehenden betätigbaren Operationen in der Ladeschlange entsprechen. Beim Bilden des MRQ-Eintrags kann eine Eintragsnummer, welche dem Speicherschlangeneintrag entspricht, in ein Speicherordnungsidentifikations-(ID)-Feld des Ladeschlangeneintrags eingefügt werden (Block 520). Insbesondere kann die MRQ den STB-Eintrag aufzeichnen, welcher von der Speicherschranke in einen Feld „Ordnungs-STB-ID" belegt war. Als nächstes kann das Ordnungsbit für den Ladeschlangeneintrag gesetzt werden (Block 530). Der MRQ-Eintrag für die Speicherschranke kann sein O-Bit setzen, so daß nachfolgende Lade- und Speichervorgänge die Speicherschranke in ihrem Ordnungsvektor registrieren.
  • Dann kann festgestellt werden, ob alle vorhergehenden Speichervorgänge sichtbar sind und ob nun der Ordnungsvektor für den Eintrag in der Speicherschlange gelöscht ist (Karo 535). Falls nicht, kann eine Schleife ausgeführt werden, bis derartige Speichervorgänge sichtbar geworden sind und der Ordnungsvektor gelöscht wird. Wenn dies auftritt, kann die Steuerung zu Block 550 weitergehen, bei welchem der Speicherschrankeneintrag aus der Speicherschlange freigegeben werden kann.
  • Wie bei einer Speicherfreigabeverarbeitung kann die STB verhindern, daß die MF freigegeben wird, bis ihr Ordnungsvektor gelöscht ist und sie ein Signal „alle vorhergehenden Schreibvorgänge sichtbar" aus dem Mischpuffer empfängt. Wenn die Speicherschranke einmal aus der STB freigegeben wird, kann die Speicherordnungsschlangen-ID der Speicherschranke an die Ladeschlange übertragen werden (Block 560). Dementsprechend kann die Ladeschlange die Speicherschlangen-ID des freigegebenen Speichervorgangs sehen und eine inhaltsadressierte Speicher-(CAM)-Operation über alle Ordnungsspeicherschlangen-ID-Felder der Einträge durchführen. Weiterhin kann der Speicherschrankeneintrag in der Ladeschlange aus einem Wartezustand aufgeweckt werden.
  • Dann können das Ordnungsbit, welches dem Ladevorgang entspricht, und Schlangeneinträge spaltenweise aus allen anderen Einträgen (d.h. nachfolgenden Lade- und Speichervorgängen) in der Ladeschlange und in der Speicherschlange gelöscht werden (Block 570), wobei ihnen gestattet wird, abgeschlossen zu werden, und die Speicherschranke kann aus der Ladeschlange freigegeben werden.
  • Ordnungs-Hardware kann gemäß einer Ausführungsform der vorliegenden Erfindung auch die Ordnung von Speicher- oder anderen Prozessoroperationen aus anderen Gründen steuern. Beispielsweise kann sie verwendet werden, um einen Ladevorgang mit einem vorhergehenden Speichervorgang zu ordnen, welcher einige jedoch nicht alle Daten des Ladevorgangs bereitstellen kann (Teiltreffer); sie kann verwendet werden, um Lesen-nach-Schreiben- (RAW), Schreiben-nach-Lesen- (WAR) und Schreiben-nach-Schreiben-(WAW)-Datenabhängigkeitsgefahren durch Speicher zu erzwingen; und sie kann verwendet werden, um ein lokales Umgehen von Daten aus bestimmten Operationen zu anderen zu vermeiden (z.B. aus einer Semaphore zu einem Ladevorgang oder aus einem Speichervorgang zu einer Semaphore). Weiterhin können bei bestimmten Ausführungsformen Semaphoren die gleiche Hardware verwenden, um eine sachgerechte Ordnung zu erzwingen.
  • Jetzt unter Bezugnahme auf 6 wird ein Blockdiagramm eines repräsentativen Computersystems 600 gemäß einer Ausführungsform der Erfindung gezeigt. Wie in 6 gezeigt, umfaßt das Computersystem 600 einen Prozessor 601a. Der Prozessor 601a kann bei einer Ausführungsform über eine Speichersystemverbindung 620 an ein Cache-kohärentes, gemeinsam genutztes Speichersubsystem („kohärenter Speicher 630") 630 angeschlossen sein. Bei einer Ausführungsform kann der kohärente Speicher 630 einen dynamischen Schreib-/Lesespeicher (DRAM, dynamic random access memory) umfassen und kann weiterhin eine kohärente Speichersteuerungslogik umfassen, um den kohärenten Speicher 630 für den Prozessor 601a und 601b gemeinsam zu nutzen.
  • Es versteht sich, daß bei anderen Ausführungsformen zusätzliche derartige Prozessoren an den kohärenten Speicher 630 angeschlossen werden können. Weiterhin kann bei bestimmten Ausführungsformen der kohärente Speicher 630 teilweise und derartig ausgebreitet implementiert werden, daß eine Untergruppe von Prozessoren innerhalb des Systems 600 mit manchen Abschnitten des kohärenten Speichers 630 kommuniziert und andere Prozessoren mit anderen Abschnitten des kohärenten Speichers 630 kommunizieren.
  • Wie in 6 gezeigt, kann Prozessor 601a gemäß einer Ausführungsform der vorliegenden Erfindung eine Speicherschlange 30a, eine Ladeschlange 20a und einen Mischpuffer 40a umfassen. Es wird auch ein Sichtbarkeitssignal 45a gezeigt, welches bei bestimmten Ausführungsformen der Speicherschlange 30a aus dem Mischpuffer 40a bereitgestellt werden kann. Außerdem kann ein Level-2-(L2)-Cache 607 an den Prozessor 601a angeschlossen werden. Wie weiterhin in 6 gezeigt wird, können ähnliche Prozessorkomponenten in dem Prozessor 601b vorhanden sein, welcher ein zweiter Kernprozessor eines Multiprozessorsystems sein kann.
  • Der kohärente Speicher 630 kann auch (über eine Hub-Verknüpfung) an einen Eingang/Ausgang-(E/A)-Hub 635 angeschlossen sein, welcher an einen E/A-Erweiterungsbus 655 und an einen Peripheriebus 650 angeschlossen ist. Bei verschiedenen Ausführungsformen kann der E/A-Erweiterungsbus 655 an verschiedene E/A-Geräte angeschlossen werden, wie beispielsweise unter anderen Geräten an eine Tastatur und an eine Maus. Der Peripheriebus 650 kann an verschiedene Komponenten angeschlossen werden, wie beispielsweise an das Peripheriegerät 670, welches eine Speichervorrichtung sein kann, wie beispielsweise ein Flash-Speicher, eine Einbaukarte und dergleichen. Obwohl die Beschreibung auf spezifische Komponenten des Systems 600 verweist, können zahlreiche Modifikationen der illustrierten Ausführungsformen möglich sein.
  • Ausführungsformen können in einem Computerprogramm implementiert werden, welches auf einem Speichermedium mit Instruktionen, um ein Computersystem zu programmieren, gespeichert werden kann, um die Ausführungsformen durchzuführen. Das Speichermedium kann insbesondere jeden Plattentyp, einschließlich Disketten, Optikplatten, Compact-Disks mit Nur-Lesespeicher (CD-ROMs), wiederbeschreibbaren Compact-Disks (CD-RWs) und Magneto-Optikplatten, Halbleiterelementen, wie beispielsweise Nur-Lesespeicher (ROMs), Direktzugriffsspeicher (RAMs), wie beispielsweise dynamische und statische RAMs, löschbare programmierbare Nur-Lesespeicher (EPROMs), elektrisch löschbare programmierbare Nur-Lesespeicher (EEPROMs), Flash-Speicher, magnetische oder optische Karten oder alle Medientypen umfassen, welche zum Speichern elektronischer Instruktionen geeignet sind.
  • Andere Ausführungsformen können als Software-Module implementiert werden, welche von einer programmierbaren Steuerungsvorrichtung ausgeführt werden.
  • Während die vorliegende Erfindung hinsichtlich einer begrenzten Anzahl von Ausführungsformen beschrieben wurde, werden Durchschnittsfachleute zahlreiche Modifikationen und Abweichungen davon erkennen. Es ist vorgesehen, daß die angefügten Ansprüche alle derartigen Modifikationen und Abweichungen so abdecken, daß sie innerhalb des wahren Gedankens und Schutzumfangs dieser vorliegenden Erfindung fallen.

Claims (30)

  1. Verfahren, welches umfaßt: Erzeugen eines Ordnungsvektors, welcher zu einem Eintrag in einer Operationsordnungsschlange gehört, wobei der Eintrag einer Operation eines Systems entspricht; und Unterbinden des Ausführens der Operation, basierend auf dem Ordnungsvektor.
  2. Verfahren nach Anspruch 1, wobei der Ordnungsvektor eine Vielzahl von Bits umfaßt, von denen jedes einem zugehörigen Eintrag in der Operationsordnungsschlange entspricht.
  3. Verfahren nach Anspruch 2, welches des weiteren ein Unterbinden des Ausführens umfaßt, welches auf Bits in dem Ordnungsvektor basiert, die auf unvollständige vorhergehende Operationen hinweisen.
  4. Verfahren nach Anspruch 2, welches des weiteren das Löschen eines gegebenen Bits des Ordnungsvektors umfaßt, wenn eine entsprechende vorhergehende Operation abgeschlossen ist.
  5. Verfahren nach Anspruch 1, wobei der Ordnungsvektor ein zu jedem Eintrag in der Operationsordnungsschlange gehöriges Ordnungsbit umfaßt.
  6. Verfahren nach Anspruch 5, welches des weiteren Setzen des Ordnungsbits für Einträge in der Operationsordnungsschlange umfaßt, welche acquire-semantischen Speicheroperationen entsprechen.
  7. Verfahren nach Anspruch 5, wobei Erzeugen des Ordnungsvektors Kopieren der Ordnungsbits in den Ordnungsvektor umfaßt, die vorhergehenden ausstehenden Speicheroperationen entsprechen.
  8. Verfahren nach Anspruch 1, welches des weiteren Erzwingen des Ausbleibens einer nachfolgenden Speicheroperation in einem Datencache umfaßt.
  9. Verfahren nach Anspruch 1, welches des weiteren ein Setzen eines ersten Ordnungsbits umfaßt, welches der Operation entspricht.
  10. Verfahren nach Anspruch 9, welches des weiteren Löschen des ersten Ordnungsbits umfaßt, wenn die Operation abgeschlossen ist.
  11. Verfahren nach Anspruch 9, welches des weiteren Erzeugen eines zweiten Ordnungsvektors umfaßt, der einer nachfolgenden Operation entspricht, wobei der zweite Ordnungsvektor das erste Ordnungsbit umfaßt.
  12. Verfahren, welches umfaßt: Erzeugen eines Ordnungsvektors, welcher zu einem Eintrag in einer ersten Operationsordnungsschlange gehört, wobei der Eintrag einer Speicheroperation entspricht, und wobei der Ordnungsvektor eine Vielzahl von Bits aufweist, von denen jedes einem Eintrag in einer zweiten Operationsordnungsschlange entspricht; und Unterbinden des Ausführens der Speicheroperation, welche auf dem Ordnungsvektor basiert.
  13. Verfahren nach Anspruch 12, welches des weiteren ein Unterbinden des Ausführens umfaßt, welches auf Bits in dem Ordnungsvektor basiert, welche auf unvollständige vorhergehende Speicheroperationen in der zweiten Operationsordnungsschlange hinweisen.
  14. Verfahren nach Anspruch 13, welches des weiteren ein Löschen eines gegebenen Bits des Ordnungsvektors umfaßt, wenn eine entsprechende vorhergehende Speicheroperation abgeschlossen ist.
  15. Verfahren nach Anspruch 12, wobei die erste Operationsordnungsschlange eine Speicherschlange umfaßt, und die zweite Operationsordnungsschlange eine Ladeschlange umfaßt.
  16. Verfahren nach Anspruch 15, wobei der Ordnungsvektor ein zu jedem Eintrag in der Ladeschlange gehöriges Ordnungsbit umfaßt.
  17. Verfahren nach Anspruch 16, welches des weiteren Setzen des Ordnungsbits für Einträge in der Ladeschlange umfaßt, welche acquire-semantischen Operationen entsprechen.
  18. Gegenstand, welcher ein maschinenlesbares Speichermedium umfaßt, welches Instruktionen umfaßt, die, wenn sie ausgeführt werden, ein System in die Lage versetzen: eine Speicheroperation daran zu hindern, zu einer ersten Zeit aufzutreten, wenn ein Ordnungsvektor, welcher der Speicheroperation entspricht, darauf hinweist, daß wenigstens eine vorhergehende Speicheroperation nicht abgeschlossen worden ist.
  19. Gegenstand nach Anspruch 18, welcher des weiteren Instruktionen umfaßt, die, wenn sie ausgeführt werden, das System in die Lage versetzen, den Ordnungsvektor bei Abschließen von wenigstens einer vorhergehenden Speicheroperation zu aktualisieren.
  20. Gegenstand nach Anspruch 18, welcher des weiteren Instruktionen umfaßt, die, wenn sie ausgeführt werden, das System in die Lage versetzen, das Ausbleiben einer nachfolgenden Speicheroperation in einem Cache zu erzwingen.
  21. Gegenstand nach Anspruch 18, welcher des weiteren Instruktionen umfaßt, die, wenn sie ausgeführt werden, das System in die Lage versetzen, ein Ordnungsbit für die Speicheroperation zu setzen.
  22. Vorrichtung, welche umfaßt: einen ersten Puffer, um eine Vielzahl von Einträgen zu speichern, von denen jeder einer Speicheroperation entspricht, wobei jeder der Vielzahl von Einträgen einen dazugehörigen Ordnungsvektor aufweist, um ein relatives Anordnen der entsprechenden Speicheroperation anzuzeigen.
  23. Vorrichtung nach Anspruch 22, welche des weiteren einen zweiten Puffer umfaßt, um eine Vielzahl von Einträgen zu speichern, von denen jeder einer Speicheroperation entspricht, wobei jeder der Vielzahl von Einträgen einen dazugehörigen Ordnungsvektor aufweist, um ein relatives Anordnen der entsprechenden Speicheroperation anzuzeigen.
  24. Vorrichtung nach Anspruch 22, welche des weiteren einen Mischpuffer umfaßt, welcher mit dem ersten Puffer gekoppelt ist, um ein Signal zu erzeugen, wenn vorhergehende Speicheroperationen sichtbar sind.
  25. Vorrichtung nach Anspruch 22, wobei jeder der Vielzahl von Einträgen ein Ordnungsbit umfaßt, um anzuzeigen, ob nachfolgende Speicheroperationen bezüglich der entsprechenden Speicheroperation zu ordnen sind.
  26. System, welches umfaßt: einen Prozessor, der einen ersten Puffer aufweist, um eine Vielzahl von Einträgen zu speichern, von denen jeder einer Speicheroperation entspricht, wobei jeder der Vielzahl von Einträgen einen dazugehörigen Ordnungsvektor aufweist, um ein relatives Anordnen der entsprechenden Speicheroperation anzuzeigen; und ein DRAM (dynamic random accsess memory), der an den Prozessor gekoppelt ist.
  27. System nach Anspruch 26, welches des weiteren einen zweiten Puffer umfaßt, um eine Vielzahl von Einträgen zu speichern, von denen jeder einer Speicheroperation entspricht, wobei jeder der Vielzahl von Einträgen einen dazugehörigen Ordnungsvektor aufweist, um ein relatives Anordnen der entsprechenden Speicheroperation anzuzeigen.
  28. System nach Anspruch 26, welches des weiteren einen Mischpuffer umfaßt, welcher mit dem ersten Puffer gekoppelt ist, um ein Signal zu erzeugen, wenn vorhergehende Speicheroperationen sichtbar sind.
  29. System nach Anspruch 26, wobei der Prozessor eine Befehlssatzarchitektur aufweist, um Ladeinstruktionen in einer ungeordneten Weise abzuarbeiten.
  30. System nach Anspruch 26, wobei der Prozessor eine Befehlssatzarchitektur aufweist, um Speicherinstruktionen in einer ungeordneten Weise abzuarbeiten.
DE102005032949A 2004-07-30 2005-07-14 Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren Ceased DE102005032949A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/903,675 US20060026371A1 (en) 2004-07-30 2004-07-30 Method and apparatus for implementing memory order models with order vectors
US10/903,675 2004-07-30

Publications (1)

Publication Number Publication Date
DE102005032949A1 true DE102005032949A1 (de) 2006-02-23

Family

ID=35721659

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005032949A Ceased DE102005032949A1 (de) 2004-07-30 2005-07-14 Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren

Country Status (4)

Country Link
US (1) US20060026371A1 (de)
JP (1) JP4388916B2 (de)
CN (1) CN100388186C (de)
DE (1) DE102005032949A1 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US7907673B2 (en) * 2006-10-26 2011-03-15 Telefonaktiebolaget L M Ericsson (Publ) Robust and low-complexity combined signal power estimation
JP4983919B2 (ja) * 2007-06-20 2012-07-25 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
US8412888B2 (en) * 2011-01-06 2013-04-02 International Business Machines Corporation Cache-based speculation of stores following synchronizing operations
FR2982683B1 (fr) * 2011-11-10 2014-01-03 Sagem Defense Securite Procede de sequencement sur un processeur multicoeur.
CN104583939B (zh) * 2012-06-15 2018-02-23 英特尔公司 用于选择指令的***和方法
EP2862061A4 (de) 2012-06-15 2016-12-21 Soft Machines Inc Speicherwarteschlange für virtuelle last mit dynamischem versandfenster mit einheitlicher struktur
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
KR102248470B1 (ko) * 2012-06-15 2021-05-06 인텔 코포레이션 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템
CN104583942B (zh) * 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
EP2862069A4 (de) 2012-06-15 2016-12-28 Soft Machines Inc Anweisungsdefinition zur implementierung von lastspeicherumordnung und -optimierung
EP2862068B1 (de) 2012-06-15 2022-07-06 Intel Corporation Neugeordnete spekulative befehlsfolgen mit einer eindeutigen irregulären lade-/speicherwarteschlange
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和***
KR102008733B1 (ko) * 2012-06-15 2019-08-09 소프트 머신즈, 인크. 스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US10353680B2 (en) * 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US9733909B2 (en) 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
WO2016014866A1 (en) 2014-07-25 2016-01-28 Soft Machines, Inc. System for an instruction set agnostic runtime architecture
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
CN105808654A (zh) * 2016-02-29 2016-07-27 湖南蚁坊软件有限公司 一种针对流数据的二级排序方法
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
US11113065B2 (en) 2019-04-03 2021-09-07 Advanced Micro Devices, Inc. Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
CN112486638A (zh) * 2019-09-11 2021-03-12 百度时代网络技术(北京)有限公司 用于执行处理任务的方法、装置、设备和存储介质
US11494306B2 (en) 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm
US11531622B2 (en) 2019-09-20 2022-12-20 Micron Technology, Inc. Managing data dependencies for out of order processing in a hybrid DIMM

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689679A (en) * 1993-04-28 1997-11-18 Digital Equipment Corporation Memory system and method for selective multi-level caching using a cache level code
DE69423206T2 (de) * 1994-04-28 2000-09-07 Hewlett-Packard Co., Palo Alto Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge
JP3005456B2 (ja) * 1995-06-16 2000-01-31 甲府日本電気株式会社 ベクトル処理装置
JPH09120383A (ja) * 1995-10-25 1997-05-06 Fujitsu Ltd データ入出力方法及びそのためのデータ入出力装置
US6065105A (en) * 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
CN1111297C (zh) * 1998-07-15 2003-06-11 北京多思科技工业园股份有限公司 指令控制排序方法及其装置
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer

Also Published As

Publication number Publication date
CN1728087A (zh) 2006-02-01
JP2006048696A (ja) 2006-02-16
US20060026371A1 (en) 2006-02-02
CN100388186C (zh) 2008-05-14
JP4388916B2 (ja) 2009-12-24

Similar Documents

Publication Publication Date Title
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69029995T2 (de) Multiprozessor mit relativ atomaren Befehlen
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE69801842T2 (de) Verteilte verriegelungsoperation zum exklusiven speicherzugang während nicht elementaren operationen
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69900797T2 (de) Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
DE102013204417B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20120424