DE112006003917T5 - Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll - Google Patents

Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll Download PDF

Info

Publication number
DE112006003917T5
DE112006003917T5 DE112006003917T DE112006003917T DE112006003917T5 DE 112006003917 T5 DE112006003917 T5 DE 112006003917T5 DE 112006003917 T DE112006003917 T DE 112006003917T DE 112006003917 T DE112006003917 T DE 112006003917T DE 112006003917 T5 DE112006003917 T5 DE 112006003917T5
Authority
DE
Germany
Prior art keywords
cache
speculative
thread
message
mask
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.)
Withdrawn
Application number
DE112006003917T
Other languages
English (en)
Inventor
Carlos Madriles Gimeno
Carlos Garcia Quinones
Pedro Marcuello
Jesés Sanchez
Fernando Latorre
Antonio Gonzalez
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 DE112006003917T5 publication Critical patent/DE112006003917T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

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

Abstract

Ein Verfahren umfassend:
Empfangen einer Busnachricht in einem ersten Cachespeicher, wobei die Busnachricht einem spekulativen Zugriff auf einen Teil eines zweiten Cachespeichers durch einen zweiten Faden entspricht; und
dynamisches Bestimmen im Cache-Endspeicher ob eine Fadenabhängigkeit zwischen dem zweiten Faden und einem dem ersten Cachespeicher zugeordneten ersten Faden in Bezug auf diesen einen Teil besteht.

Description

  • Hintergrund
  • Die Ausführungen der vorliegenden Erfindung beziehen sich auf prozessorbasierte Systeme und insbesondere auf die Implementierung eines Speicher-Kohärenzprotokolls in einem derartigen System.
  • In den letzten Jahren wurde in die Prozessoren in zunehmendem Maße Hardware für eine Parallelität auf Ausführungsebene eingeführt. Üblicherweise ist die auf Ausführungsebene von den Architekturen genutzte Parallelität explizit oder nicht spekulativ. Die Verwendung der Parallelität auf der Ebene spekulativer Abarbeitung wurde vorgeschlagen, um den Nutzen der Multifaden-/Multikernarchitekturen noch weiter zu steigern. In derartigen Lösungen wird der Code in Stücke aufgeteilt, die spekulativ parallel ausgeführt werden. Die Ausführung in einem Transaktionsspeicher ist eine ähnliche Technik bei der zugelassen wird, dass unterschiedliche Fäden spekulativen Zugriff haben und in den Speicher schreiben, wobei die möglichen Datenabhängigkeiten zwischen den Fäden ignoriert werden. In diesen beiden Ausführungsmodellen wird der Zustand des spekulativen Speichers atomisch an den Architekturzustand übergeben oder in Abhängigkeit von den Prüfungen der Ausführungszeit verworfen (zum Beispiel Speicherabhängigkeiten zwischen Fäden).
  • Zur effektiven Implementierung dieser Ausführungsmodelle in aktuellen Mehrfaden- und Mehrkernprozessoren wird die Hardware im Speicher-Teilsystem um die Hardware zur Behandlung spekulativer Daten, zur Erkennung von Datenabhängigkeiten zwischen Fäden und zur Übergabe oder Vernichtung des spekulativen Zustands erweitert. Auf diese Weise wird ein Speicher-Teilsystem in die Lage versetzt, eine unterschiedliche spekulative Version pro Faden für den gleichen Speicherplatz zu führen, so dass spekulative Fäden derselben Anwendung sich den Speicherbereich teilen und in die gleichen Speicherbereiche schreiben können. Ein um die Unterstützung für Spekulation und Multiversion erweitertes Speicher-Teilsystem wird auch als Multiversions-Cache (MVC) bezeichnet. Häufig beinhalten derartige Systeme zentralisierte Tabellen wie eine Tabelle zur Auflösung von Mehrdeutigkeiten im Speicher um den Pfad für die Daten aufrechtzuerhalten, auf die spekulativ zugegriffen wurde. Hardware dieser Art ist jedoch teuer und benötigt eine beträchtliche Menge an Platz und Energie. Eine Hardware dieser Art muss außerdem typischerweise hardwarebasierte Lesebefehle unterstützen. Darüber hinaus ist ein bedeutender Kommunikationsumfang zwischen den einzelnen Cachespeichern jedes Systems unter Einschluss der Übertragung der spekulativen Daten selbst erforderlich, was zu einer Erhöhung des Busverkehrsaufkommens und zu Nachteilen bezüglich der Leistung und des Energieverbrauchs führt.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt ein Blockdiagramm eines Teils eines Systems entsprechend einer Ausführung der vorliegenden Erfindung.
  • 2 zeigt ein Flussdiagramm eines Verfahrens zur spekulativen Abarbeitung entsprechend einer Ausführung der vorliegenden Erfindung.
  • 3 zeigt ein Flussdiagramm eines Verfahrens zur Abarbeitung zusätzlicher spekulativer Operationen entsprechend einer Ausführung der vorliegenden Erfindung.
  • 4 zeigt ein Flussdiagramm eines Verfahrens für weitere spekulative Operationen entsprechend einer Ausführung der vorliegenden Erfindung.
  • 5 zeigt ein Flussdiagramm eines Verfahrens zur Verarbeitung empfangener Busnachrichten entsprechend einer Ausführung der vorliegenden Erfindung.
  • 6 zeigt ein Flussdiagramm eines Verfahrens zur Übergabe der Ergebnisse einer spekulativen Operation entsprechend einer Ausführung der vorliegenden Erfindung.
  • 7 zeigt ein Flussdiagramm eines Verfahrens zum Vernichten einer spekulativen Operation entsprechend einer Ausführung der vorliegenden Erfindung.
  • 8 zeigt ein Zustandsübergangsdiagramm, das die Antworten auf Prozessorereignisse entsprechend einer Ausführung der vorliegenden Erfindung darstellt.
  • 9 zeigt ein Zustandsübergangsdiagramm, das die Antworten auf Busnachrichten entsprechend einer Ausführung der vorliegenden Erfindung darstellt.
  • 10 zeigt ein Blockdiagramm eines Multiprozessorsystems entsprechend einer Ausführung der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Ein Protokoll eines Multiversions-Cachespeichers zur Zulassung der spekulativen Verarbeitung mehrfacher Fäden und/oder Transaktionen in einem System kann in verschiedenen Ausführungen implementiert werden. Auf diese Weise lässt sich ein verbessertes Verhalten erzielen, da die Fäden parallel ausführbar sind und ein Cachespeicher-Kohärenzprotokoll in Kombination mit der Software zur Steuerung der Befehle pro Faden die Gültigkeit eines jeden spekulativen Fadens bestimmen kann.
  • Darüber hinaus implementiert ein Multiversions-Cachespeicher entsprechend einer Ausführung der vorliegenden Erfindung zur Verminderung der Komplexität der Hardware keine Kommunikation von spekulativen Speicherwerten zwischen spekulativen Fäden. Dadurch, dass eine solche Kommunikation nicht stattfindet, vereinfacht sich die Hardware wesentlich, auf diese Weise wird eine zentralisierte Steuerlogik zur Versionskontrolle vermieden. Damit wird eine Verminderung der Hardware zur Implementierung der Abarbeitung spekulativer Fäden auf ein Minimum möglich und darüber hinaus ist kein zentrales Verzeichnis oder eine andere zentralisierte Cache-Speicherstruktur erforderlich. Dagegen kann ein Cache-Speichercontroller, der lokalen Cachespeichern zugeordnet ist, den Busverkehr in Zusammenhang mit spekulativen Zugriffen empfangen und auf der Grundlage dieser Information und des Zustands der minimalen spekulativen Hardware im Cachespeicher bestimmen, ob ein Konflikt bezüglich eines Speicherplatzes vorliegt, auf den ein Zugriff erfolgen soll. Wenn dies der Fall ist, kann der Cache-Speichercontroller ein Signal an eine Softwareschicht zur Feststellung der Art des Konflikts aussenden, zum Beispiel an einen Anwendungshandler. Wird festgestellt, dass ein oder mehrere Fäden zu vernichten sind, kann der Anwendungshandler über den Bus eine Nachricht aussenden, um diese Vernichtung zu veranlassen. Der Controller (oder die Controller) des dem Faden (den Fäden) zugeordneten Cachespeichers (der zugeordneten Cachespeicher) kann nach deren Annullierung demzufolge den Zustand einer oder mehrerer dem Faden zugeordneter Speicherzeilen setzen.
  • In verschiedenen Ausführungen kann ein Kohärenzprotokoll für Multiversions-Cachespeicher auf der Grundlage eines konventionellen Protokolls implementiert werden: Geändert, Gemeinsam genutzt, Ungültig (MSI)/Geändert, Exklusiv, Gemeinsam genutzt, Ungültig (MESI). Das Protokoll, auf das hier als Protokoll MUSLI Bezug genommen wird, beinhaltet zusätzliche Zustände (zum Beispiel einen Zustand L entsprechend einem Zustand Spekulatives Laden und einen Zustand U entsprechend einem Zustand Unsicher) und kann in der Granularität des Worts arbeiten, dynamisch die Speicherabhängigkeiten zwischen Fäden feststellen und eine spekulative Version für einen Speicherplatz in jedem Daten-Cachespeicher unterstützen. Das heißt, das Protokoll kann eine spekulative Version eines gegebenen Worts pro Faden und pro Daten-Cachespeicher unterstützen.
  • Der Zustand des spekulativen Speichers kann in jedem lokalen Daten-Cachespeicher des Kerns gehalten werden und breitet sich bis zu dessen Übergabe nicht auf höhere Ebenen einer Speicherhierarchie aus. Das Entfernen einer spekulativ veränderten Cachespeicher-Zeile kann die Annullierung eines spekulativen Fadens verursachen, der in diesem Kern abgearbeitet wird. Die kohärente Aktivität nicht spekulativer Lade- und Speichervorgänge kann in der Granularität der Zeile ausgeführt werden. Für spekulative Lade- und Speichervorgänge kann das Protokoll in der Granularität eines Worts arbeiten, um spekulative Versionen zu unterstützen und unnötige Annullierungen auf Grund einer falschen Bedingung für gemeinsame Nutzung zu vermeiden.
  • Die Speicherabhängigkeiten zwischen Fäden lassen sich dynamisch verifizieren. Wird eine Datenabhängigkeit festgestellt (zum Beispiel eine Abhängigkeit zwischen Fäden für Lesen nach Schreiben (RAW) oder Schreiben nach Lesen (WAR)), kann ein Verletzungs-Handler aufgerufen werden. Der Verletzungs-Handler wird auf Anwendungsebene ausgeführt und annulliert in geeigneter Weise die spekulative Aktivität. Zur Verminderung der Komplexität der Hardware umfasst das Protokoll kein Konzept bezüglich der Reihenfolge der Fäden. Im Falle spekulativer Mehrfachfäden, bei denen eine sequentielle Ordnung zwischen den Fäden besteht, kann eine Softwareschicht implementiert werden, welche die Beziehungen zwischen den Fäden regelt. Im Fall einer Verletzung der Datenabhängigkeit zwischen Fäden ist der aufgerufene Software-Handler für die Prüfung verantwortlich, ob eine Abhängigkeit Lesen nach Schreiben vorliegt, bevor der spekulative Faden (und alle seine Nachfolger) annulliert wird, der einen Lesevorgang ausgeführt hat.
  • In verschiedenen Ausführungen kann die Entfernung nicht spekulativer Zeilen aus dem Cachespeicher nach dem Protokoll MESI erfolgen. Da jedoch der Zustand des spekulativen Speichers und der Zustand der Information lokal im Daten-Cachespeicher gehalten wird und sich bis zu seiner Übergabe nicht auf höhere Ebenen ausbreitet, verursacht jede Entfernung einer Zeile aus dem Cachespeicher, auf den spekulativ zugegriffen wird (das heißt, ein Schreib- oder Lesezugriff), eine Verletzung ähnlich einer Datenabhängigkeit zwischen Fäden.
  • Andererseits kann das Protokoll eine Mischung von spekulativen und nicht spekulativen Lade- und Speichervorgängen im gleichen lokalen Daten-Cachespeicher zulassen. Generell wird jeder von einem spekulativen Faden ausgeführte Lade- und Speichervorgang als spekulativ behandelt. Dennoch können spezielle Lade- und Speichervorgänge, die als "sichere" Zugriffe bezeichnet werden, von beliebigen Fäden (spekulativ oder nicht) als Zugriff auf den gemeinsam genutzten Speicher ausgeführt werden, diese Zugriffe dürfen als nicht spekulativ betrachtet werden. Daher können Wechselwirkungen auftreten, wenn sowohl spekulative als auch nicht spekulative Lade- und Speichervorgänge durch Zugriff des gleichen Fadens auf die gleichen Speicherplätze ausgeführt werden. In diesem Fall kann das Protokoll die Frage lösen, indem es immer dann einen Verletzungsfall deklariert, wenn ein nicht spekulativer Lade- und Speichervorgang auf den Speicherplatz eines Worts zugreift, auf das spekulativ zugegriffen wurde (das heißt, mit den Bits U oder L).
  • Das Kohärenzprotokoll kann in unterschiedlichen Ausführungen den Pfad der Datenworte des Speichers dynamisch aufrechterhalten, auf die ein spekulativer Zugriff erfolgt ist und die Datenabhängigkeiten zwischen Fäden prüfen, um falsche Spekulationen über den Ablauf zu erkennen. Der Mechanismus zur dynamischen Prüfung der Abhängigkeiten zwischen Fäden kann auf mehreren Busnachrichten basieren. In einer Ausführung können derartige Nachrichten mit dem Fadenbezeichner (ID) des die Nachricht erzeugenden Fadens, der Adresse der Zeile des Cachespeichers auf die der Zugriff erfolgt ist und mindestens einer Wortmaske zur Angabe des Worts (der Worte) versehen werden, auf die ein Zugriff innerhalb der Zeile erfolgt ist. Diese Nachrichten können in unterschiedlichen Ausführungen unterschiedliche Formen annehmen. Dennoch ist es möglich, diese Nachrichten zu verwenden um andere Cache-Speichercontroller über den Zustand der Daten zu informieren, auf die ein spekulativer Zugriff erfolgt ist. Als Antwort können diese Cache-Speichercontroller verschiedene Aktionen ausführen wie nachstehend genauer beschrieben wird. In einer Ausführung können die bezüglich eines spekulativen Zugriff generierten Nachrichten eine Nachricht zur Leseprüfung, eine Nachricht zur Schreibprüfung und eine Nachricht zur Prüfung nicht spekulativen Schreibens (die mit ChkRd, ChkWr und ChkNSWr bezeichnet werden) beinhalten.
  • In unterschiedlichen Systemen können verschiedene Ausführungen implementiert werden, dabei ist in einer Ausführung eines Mehrfachprozessorsystems die Verwendung eines Multiversions-Cachespeichers möglich. Das System kann zum Beispiel mehrere Prozessoren umfassen, zum Beispiel Kerne eines Mehrfachkern-Prozessors oder mehrere Prozessoren eines Mehrfach-Prozessorsystems. Jeder Kern kann einen lokalen Cachespeicher beinhalten, oder diesem kann ein lokaler Cachespeicher zugeordnet sein, zum Beispiel ein Cachespeicher Niveau 1 (L1), der einen Cache-Speichercontroller beinhaltet.
  • In 1 ist ein Blockdiagramm eines Teils eines Systems entsprechend einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 1 hervorgeht, beinhaltet das System 10 einen Prozessor 20, der mit einem Systemspeicher 65 gekoppelt ist und in dem in einer Ausführung ein dynamischer Speicher für direkten Zugriff (DRAM) verwendet werden kann. Wie in 1 gezeigt, kann. der Prozessor 20 an den Systemspeicher 65 über eine Schnittstelle 60 außerhalb des Chips angeschlossen sein, der Geltungsbereich der vorliegenden Erfindung wird hierdurch jedoch nicht auf diesen Aspekt beschränkt.
  • Wie ebenfalls aus 1 hervorgeht beinhaltet ein Prozessor 20 einen Kern 30 und einen Cachespeicher 40. Der Prozessor 20 kann in einer Ausführung ein Prozessor mit nur einem Kern sein, in anderen Implementierungen kann der Prozessor 20 ein Mehrkern-Prozessor sein, in dem weitere Kerne in ähnlicher Weise mit einem Kern und einem zugeordneten Cachespeicher konfiguriert sind. Der Cachespeicher 40 kann ein Cachespeicher L1 sein, der eine Speichermatrix 42 und einen Cache-Speichercontroller 50 umfasst. Die Speichermatrix 42 enthält eine Mehrzahl von Cache-Speicherzeilen 43a43n (allgemein Zeile 43 des Cachespeichers). Jede Cache-Speicherzeile 43 kann mehrfache Datenworte in einem Datenteil 49 speichern. Der Datenteil 49 kann in einer Ausführung acht Worte speichern, wobei der Geltungsbereich der vorliegenden Erfindung hierdurch nicht beschränkt wird. Außer den Daten kann jede Cache-Speicherzeile ein zugeordnetes Etikett 44 beinhalten, das für den Zugriff auf die Cache-Speicherzeile verwendbar ist. Weiterhin kann jede Cache-Speicherzeile 43 einen ersten Zustandsteil 45 mit einer Reihe von Bits oder Flags enthalten entsprechend einem gewählten Cachespeicher-Kohärenzprotokoll. In einer Ausführung kann dies zum Beispiel ein Protokoll MESI sein. In anderen Ausführungen sind andere Protokolle für den Cachespeicher einsetzbar wie zum Beispiel ein Protokoll MSI.
  • Weiterhin mit Bezug auf 1 kann jede Cache-Speicherzeile 43 außerdem eine erste spekulative Maske 46 beinhalten, auf die auch als erste Wortmaske Bezug genommen wird. Die erste spekulative Maske 46 kann ein jedem Wort des Datenteils 49 zugeordnetes Bit enthalten. Demzufolge kann die erste spekulative Maske 46 in der Ausführung nach 1 erste spekulative Flags 411 418 enthalten (allgemein erstes spekulatives Flag 41), von denen jedes einem entsprechenden Wort des Datenteils 49 zugeordnet ist. Die erste spekulative Wortmaske 46 ist verwendbar um anzuzeigen, dass ein spekulatives Lesen des zugehörigen Worts im Datenteil 49 stattgefunden hat.
  • Analog dazu kann eine zweite spekulative Wortmaske 48, auf die hier auch als zweite Wortmaske Bezug genommen wird, ein jedem Wort des Datenteils 49 zugeordnetes Bit enthalten. Wie in 1 dargestellt, kann die zweite spekulative Wortmaske zweite spekulative Flags 471 478 (allgemein als zweites spekulatives Flag 47 bezeichnet) von denen jedes einem entsprechenden Wort des Datenteils 49 zugeordnet ist. Die zweite spekulative Wortmaske 48 ist verwendbar um anzuzeigen, dass ein spekulatives Schreiben des zugehörigen Worts im Datenteil 49 stattgefunden hat.
  • In einer Ausführung kann jedes der zweiten Flags der zweiten spekulativen Wortmaske 48 als Bit U (Unsicher) bezeichnet werden, dieses wird gesetzt, wenn eine Speicherung durch einen spekulativen Faden oder einen Transaktionsbereich in das entsprechende Wort erfolgt. Analog dazu kann jedes der ersten Flags 41 der ersten spekulativen Wortmaske 46 als Bit L (spekulatives Laden) bezeichnet werden, dieses gibt an, dass das Datenwort durch die Transaktion oder den spekulativen Faden gelesen und nicht von diesem Faden oder dieser Transaktion erzeugt wurde. Ein spekulatives Laden kann dieses Bit in jedem beliebigen gelesenen Wort setzen, für welches das Bit U leer ist.
  • Daher kann der Cache-Speichercontroller 50 veranlassen, dass bei spekulativer Ausführung mit Zugriff auf Daten im Cachespeicher 40 die entsprechenden Flags in der ersten spekulativen Maske 46 und in der zweiten spekulativen Maske 48 gesetzt werden. Darüber hinaus kann der Cache-Speichercontroller 50 auf der Grundlage des Zustands einer gegebenen Zeile des Cachespeichers die Erzeugung und Übertragung von Busnachrichten bezüglich des Zustands der unterschiedlichen Zeilen des Cachespeichers an andere Agenten des Systems veranlassen, zum Beispiel an weitere Cache-Speichercontroller. Auf diese Weise kann die spekulative Verarbeitung unter Nutzung einer minimalen zusätzlichen Hardware implementiert werden. In unterschiedlichen Ausführungen kann der Cache-Speicherkontroller 50 darüber hinaus zum Empfang der eingehenden Busnachrichten konfiguriert sein, die zum Beispiel von anderen Cache-Speichercontrollern stammen, und feststellen, ob ein Konflikt zwischen einer in der Busnachricht angegebenen Adresse und einem Speicherort im Cachespeicher 40 besteht. Wenn dies der Fall ist, kann der Cache-Speichercontroller 50 eine Nachricht über die Verletzung der Datenabhängigkeit zum Beispiel an den Kern 30 senden, um die Ausführung eines geeigneten Handlers und eine Festlegung der Reihenfolge zwischen den in Konflikt stehenden Zugriffen zu ermöglichen.
  • Wie weiterhin in 1 dargestellt ist, kann der Prozessor 20 eine Schnittstelle 55 auf dem Chip beinhalten, welche die Kommunikation zwischen den einzelnen Kernen im Prozessor 20 in Ausführungen ermöglicht, in denen der Prozessor 20 ein Mehrfachkern-Prozessor ist. Obwohl in 1 diese spezielle Implementierung dargestellt ist, wird hierdurch der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt eingeschränkt.
  • In 2 ist ein Flussdiagramm eines Verfahrens zur Ausführung spekulativer Operationen gemäß einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 2 hervorgeht, kann das Verfahren 100 mit der spekulativen Ausführung eines Fadens beginnen (Block 110). Diese spekulative Ausführung kann der Abarbeitung eines Fadens entsprechen, zum Beispiel auf der Grundlage der Vorhersage eines Zweigs eines wahrscheinlichen Wegs in einem Programmablauf. In anderen Implementierungen kann die spekulative Abarbeitung der Ausführung einer Transaktion in einem Transaktionsspeicher gemäß einer Ausführung der vorliegenden Erfindung entsprechen. Während der Ausführung des spekulativen Fadens kann bestimmt werden, ob eine Ladeoperation (Rhombus 115) ausgeführt werden muss. Wenn das nicht der Fall ist, wird die Steuerung an den vorher betrachteten Block 110 zurückgegeben. Ist eine Ladeoperation auszuführen, übernimmt der Block 120 die Steuerung. Hierbei kann ein Zugriff auf die Daten eines lokalen Cachespeichers (Block 120) erfolgen. Zum Beispiel kann ein Kern, in dem der Faden ausgeführt wird, Daten anfordern, die in einem Cachespeicher L1 vorhanden sind. Anschließend kann bestimmt werden, ob die Daten, auf welche der Zugriff erfolgt ist, während der aktuellen spekulativen Abarbeitung (Rhombus 125) gelesen oder geschrieben wurden. Es ist beispielsweise möglich, ein den Daten zugeordnetes Bit U und ein Bit L zu prüfen, um den spekulativen Zustand der Daten festzustellen, auf die zugegriffen wurde. Wird festgestellt, dass während der spekulativen Ausführung kein Zugriff auf die Daten erfolgt ist, geht die Steuerung an Block 130 über.
  • Um eine Multiversion der Daten zu ermöglichen, auf die zugegriffen wurde, kann ein dem Cachespeicher L1 zugeordneter Cache-Speichercontroller ein Flag bezüglich des spekulativen Ladens für die entsprechenden dem Prozessor gelieferten Daten setzen und außerdem eine Busnachricht (Block 130) generieren. Genauer gesagt kann der Cache-Speichercontroller die geforderten Daten an den Kern senden. Der Cache-Speichercontroller kann darüber hinaus ein oder mehrere den Daten zugeordnete Flags bezüglich des spekulativen Ladens setzen. Nochmals mit Bezug auf 1 soll angenommen werden, dass der Kern Daten aus einer kompletten Cache-Speicherzeile 43 anfordert. Unter dieser Annahme würde der Cache-Speichercontroller alle ersten Flags 411 418 der ersten spekulativen Wortmaske 46 setzen um anzuzeigen, dass alle Daten entsprechend einer Cache-Speicherzeile 43 geladen wurden. Um die Kohärenz zwischen den Mehrfachfäden zu wahren, kann der Cache-Speichercontroller außerdem eine Busnachricht generieren. Es ist zu beachten, dass diese Busnachricht nur während des ersten spekulativen Zugriffs auf einen Speicherplatz bestimmter Daten im Verlauf der Abarbeitung eines spekulativen Fadens generiert werden kann. Auf diese Weise wird ein verminderter Busverkehr realisiert, ohne jedoch auf die Übermittlung der benötigten Information zu verzichten, das heißt, der spekulative Faden hatte Zugriff auf einen bestimmten Speicherplatz. In einer Ausführung kann eine Identifikationsnachricht gesendet werden um anzuzeigen, dass die Daten im Cachespeicher während der Abarbeitung spekulativ geladen wurden, dies kann einer Busnachricht zur Leseprüfung, also einem ChkRd entsprechen. Diese Nachricht kann mit der Adresse und dem Inhalt der ersten Wortmaske gesendet werden. Diese Nachricht kann veranlassen, dass weitere Cache-Speichercontroller feststellen, ob in diese Wortmaske das Speichern eines Worts eingetragen wurde. Die Analyse der Wortmaske durch weitere Cache-Speichercontroller wird nachfolgend betrachtet. Es ist zu beachten, dass in Block 130 die Operationen des Setzens eines Ladeflags und des Generierens einer Busnachricht nicht erfolgen, wenn die Daten, auf welche der Zugriff erfolgt ist, während der aktuellen spekulativen Ausführung bereits gelesen, geschrieben oder gespeichert wurden. Block 130 wird also umgangen und das Verfahren 100 endet.
  • In 3 ist ein Flussdiagramm eines Verfahrens zur Ausführung spekulativer Operationen entsprechend einer Ausführung der vorliegenden Erfindung dargestellt. Wie in 3 dargestellt kann ein Verfahren 135 mit der Fortsetzung der spekulativen Abarbeitung eines Fadens beginnen (Block 138). Anschließend wird bestimmt, ob eine Speicherung erfolgen soll (Rhombus 140). Ist dies nicht der Fall, wird die Steuerung wieder an Block 138 für eine weitere spekulative Ausführung übergeben. Ist dagegen eine Speicherungsspeicheroperation durchzuführen, geht die Steuerung an Block 145 über.
  • In diesem kann auf die Daten des lokalen Cachespeichers während der spekulativen Abarbeitung zugegriffen werden (Block 145). Anschließend wird festgestellt ob diese Daten während der spekulativen Abarbeitung generiert wurden (Rhombus 150). Wenn dies der Fall ist, endet das Verfahren 135. Anderenfalls geht die Steuerung von Rhombus 150 an Block 155 über.
  • In diesem Block können die spekulativen Daten gespeichert und ein Flag gesetzt werden, welches das spekulative Schreiben anzeigt. Weiterhin kann eine Busnachricht generiert werden (Block 155). Das heißt, außer dem Speichern der Daten im Datenteil 49 einer Cache-Speicherzeile 43 werden ein oder mehrere zweite Flags 47 in der zweiten spekulativen Wortmaske 48 gesetzt, um dieses Schreiben spekulativer Daten anzuzeigen. Darüber hinaus kann der zugeordnete Cache-Speichercontroller eine Busnachricht senden, zum Beispiel eine Nachricht zur Schreibprüfung, also ein ChkWr, diese Nachricht wird von weiteren Cache-Speichercontrollern empfangen, die daraufhin prüfen, ob während eines Ladevorgangs Daten eines Worts entsprechend der zweiten spekulativen Wortmaske 48 von einem Speicherplatz gelesen wurden, auf den das Schreiben erfolgt ist. Ebenso wie im Fall der vorhergehend beschriebenen Nachricht zur Leseprüfung darf diese Nachricht ausschließlich während der ersten Bereitstellung eines Daten-Speicherplatzes mit Speicherdaten während der Abarbeitung eines spekulativen Fadens gesendet werden. Dadurch wird der Busverkehr vermindert, ohne jedoch auf die Bereitstellung der erforderlichen Information zu verzichten, das heißt, ein Daten-Speicherplatz wurde während der spekulativen Ausführung verändert. Auch wenn die Beschreibung in Zusammenhang mit 3 für diese spezielle Ausführungsform erfolgt ist, muss beachtet werden, dass hierdurch der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt eingeschränkt wird. Darüber hinaus ist zu beachten, dass in einem System die Ausführung weiterer Aktionen möglich ist, um zu prüfen, ob die spekulative Ausführung die richtige war und daher akzeptiert werden soll, oder ob diese wie nachstehend genauer beschrieben zu annullieren ist.
  • In 4 ist ein Flussdiagramm eines Verfahrens für weitere spekulative Operationen gemäß einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 4 hervorgeht, kann das Verfahren 200 mit der Komplettierung der spekulativen Verarbeitung beginnen (Block 210). Ein spekulativer Prozess wird beispielsweise komplettiert, wenn ein spekulativer Faden an das Ende seiner Anweisungsfolge gelangt ist, oder wenn eine Transaktion in einem Transaktionsspeichersystem abgeschlossen wird. In dem einen oder dem anderen Fall können bei der spekulativen Abarbeitung bestimmte Daten spekulativ in einen lokalen Cachespeicher geschrieben werden, zum Beispiel in einen Cachespeicher L1 eines Kerns, in dem die spekulative Abarbeitung stattgefunden hat.
  • Anschließend wird festgestellt, ob die spekulative Ausführung validiert wurde (Rhombus 220). Bei dieser Prüfung wird berücksichtigt, ob die vom Kern für die spekulative Abarbeitung verwendeten Daten gültig waren. Es ist möglich, die Validierung in unterschiedlichen Ausführungen auf verschiedene Art und mit unterschiedlicher Software in Kombination mit der Hardware vorzunehmen.
  • Wird weiterhin mit Bezug auf 4 die spekulative Abarbeitung validiert, geht die Steuerung an Block 230 über, hier kann die Übergabe des Zustands des spekulativen Speichers an den Architekturzustand erfolgen (Block 230). Diese Übergabe des Zustands des lokalen Cachespeichers kann entsprechend einem Flussdiagramm erfolgen, das nachstehend in Zusammenhang mit 6 beschrieben wird. Wurde die Ausführung nicht validiert, geht die Steuerung alternativ an Block 240 über. In diesem kann die Annullierung des spekulativen Zustands erfolgen. In einer Ausführung ist es möglich, diese Annullierung entsprechend dem Flussdiagramm in 7 auszuführen wie nachstehend noch genauer erläutert wird.
  • Wie vorstehend beschrieben kann ein Cache-Speichercontroller außer dem Setzen von Flags und dem Generieren von Busnachrichten während der spekulativen Abarbeitung auch Busnachrichten empfangen, zum Beispiel von anderen an der spekulativen Abarbeitung beteiligten Cache-Speichercontrollern. Diese Busnachrichten können Information bezüglich des spekulativen Zustands von Daten in dem Cache-Speichercontroller zugeordneten Cache-Speicherzeilen enthalten, der diese Busnachrichten aussendet. Auf der Grundlage dieser Nachrichten kann ein empfangender Cache-Speichercontroller feststellen, ob dadurch Auswirkungen auf einen Speicherplatz in seinem lokalen Cachespeicher entstanden sind.
  • In 5 ist ein Flussdiagramm eines Verfahrens zur Verarbeitung empfangener Busnachrichten gemäß einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 5 hervorgeht, beginnt das Verfahren 300 mit dem Empfang einer der spekulativen Abarbeitung zugeordneten Busnachricht (Block 310). Diese Busnachricht wird zum Beispiel von einem Cache-Speichercontroller empfangen, der einem spekulativ abgearbeiteten Faden zugeordnet ist. Auf der Grundlage der empfangenen Busnachricht kann festgestellt werden, ob die der Busnachricht entsprechenden Daten im Cachespeicher des die Busnachricht empfangenden Cache-Speichercontroller vorhanden sind (Rhombus 320). Auf der Grundlage der mit der Nachricht gesendeten Information über das Etikett ist eine Bestimmung möglich, ob ein Bit im Cachespeicher vorliegt. Das Verfahren 300 endet, wenn dies nicht der Fall ist.
  • Ist dagegen eine Auswirkung zu verzeichnen, geht die Steuerung an Block 330 über. Hier wird bestimmt, ob ein Konflikt zwischen den Daten entsprechend dem spekulativen Zugriff und den Daten im lokalen Cachespeicher vorliegt. Der Cache-Speichercontroller kann in verschiedenen Ausführungen feststellen, ob ein Konflikt vorliegt indem er zum Beispiel die mit der Nachricht empfangene spekulative Wortmaske mit der eigenen spekulativen Wortmaske der betroffenen Cache-Speicherzeile vergleicht. Beispielsweise wird eine logische Operation "UND" mit den Bits der empfangenen Maske und der eigenen Maske der betroffenen Datenzeile durchgeführt. Diese Operation wird nachstehend genauer betrachtet. Bei Feststellung einer Übereinstimmung (das heißt, das Ergebnis der logischen Operation "UND" ist eine logische "Eins") liegt ein Konflikt vor. Die Steuerung geht demzufolge an den Block 340 über. Werden keine Auswirkungen festgestellt (das heißt, das Ergebnis der logischen Operation "UND" ergibt nur logische "Nullen"), so liegt kein Konflikt vor und das Verfahren 300 endet.
  • Weiterhin in Bezug auf 5 kann der Cache-Speichercontroller eine Verletzung der Datenabhängigkeit signalisieren (Block 340), wenn ein Konflikt besteht. Genauer gesagt kann er eine Verletzung der Datenabhängigkeit zwischen Fäden signalisieren. In einer Ausführung kann der die Verletzung feststellende Cache-Speichercontroller eine bestimmte Verletzungsnachricht (Viol) zusammen mit den Bezeichnern der in Konflikt stehenden Fäden zum Beispiel an seinen zugeordneten Kern senden. Der Kern kann nun seinerseits einen Anwendungshandler vektorisieren, damit dieser einen Ordnungsvergleich zwischen den in Konflikt stehenden Fäden ausführt. Auf der Grundlage der Festlegung der Ordnungsabhängigkeit kann der Anwendungshandler Busnachrichten generieren, mit denen angezeigt wird, dass einer oder mehrere Fäden zu annullieren sind, um Datenverletzungen zu vermeiden. Auch wenn die Darstellung in 5 diese spezielle Implementierung zeigt ist zu verstehen, dass die Behandlung ankommender Busnachrichten auch auf andere Weise erfolgen kann.
  • In 6 ist ein Flussdiagramm eines Verfahrens zur Übergabe der Ergebnisse einer spekulativen Operation an einen Architekturzustand gemäß einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 6 zu entnehmen ist, beginnt das Verfahren 400 mit dem Empfang einer Nachricht zur Übergabe an einen Bus (Block 410). Diese Nachricht zur Übergabe an einen Bus wird durch den Cache-Speichercontroller empfangen, der die Mitteilung erhalten hat, dass die in seinem Cachespeicher abgelegten, spekulativ generierten Daten validiert wurden.
  • Daraufhin kann der Cache-Speichercontroller den spekulativen Zustand der Datenzeile zurücksetzen, auf die in seinem lokalen Cachespeicher spekulativ zugegriffen wurde (Block 420). Das heißt, dass beide spekulative Wortmasken, die erste und die zweite, für alle Cache-Speicherzeilen zurückgesetzt werden können, auf die spekulativ zugegriffen wurde. Darüber hinaus kann jede dieser Cache-Speicherzeilen, in denen ein oder mehrere Worte während der spekulativen Ausführung geändert wurden, einen aktualisierten Kohärenzzustand des Cachespeichers besitzen. Genauer gesagt kann für jede beliebige dieser Zeilen ein Zustand "Geändert" gesetzt werden (Block 430). Zum Beispiel in den Implementierungen unter Verwendung des Protokolls MESI kann das Bit M gesetzt werden.
  • Als Ergebnis führen diese Operationen zu einer tatsächlichen Aktualisierung der entsprechenden Cache-Speicherzeilen, auf die in dem lokalen Cachespeicher spekulativ zugegriffen wurde, um den eigenen Architekturzustand bezüglich der Validierung der spekulativen Ausführung wiederzugeben. Um darüber hinaus einen korrekten Architekturzustand durch das System zu erreichen, kann der Cache-Speichercontroller weiterhin eine Bus-Aktualisierungsnachricht generieren. Genauer gesagt, der Cache-Speichercontroller kann solche Nachrichten für gemeinsam genutzte Daten generieren, die geändert wurden (Block 440). In einer Ausführung kann eine Bus-Aktualisierungsnachricht gesendet werden, das heißt, eine Nachricht DUpd.
  • In Implementierungen, in denen Änderungen auf Wortebene stattgefunden haben, können derartige Busnachrichten veranlassen, dass ein oder mehrere Cache-Speichercontroller einen Architekturwert der ungültigen geänderten Datenzeile senden (Block 460). Daraufhin kann der lokale Cachespeicher nach Erhalt dieses Werts seine spekulativ geschriebenen Worte mit dem Architekturwert der Zeile vereinen, um eventuell den korrekten Architekturzustand der Zeile an den Speicher zu übergeben (Block 470). Auch wenn diese spezielle Implementierung in der Ausführung nach 6 beschrieben wurde, ist zu verstehen, dass der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt ist.
  • Ein Anwendungshandler oder ein anderer Agent kann bestimmen, ob die spekulative Ausführung einer Transaktion oder eines gegebenen Fadens eine Regel bezüglich der Datenabhängigkeit verletzt. Wenn dies der Fall ist, kann eine Busnachricht zur Annullierung gesendet werden. In 7 ist ein Flussdiagramm eines Verfahrens zur Annullierung einer spekulativen Operation gemäß einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 7 hervorgeht, beginnt das Verfahren 500 nach Empfang einer Busnachricht zur Annullierung (Block 510). In einer Ausführung wird die Nachricht von einem Kern empfangen, in dem der Anwendungshandler implementiert ist. Dennoch kann die Nachricht in anderen Ausführungen auch von einem Cache-Speichercontroller oder einem weiteren Systemagenten generiert werden.
  • Nach Erhalt einer derartigen Nachricht kann ein Controller eines Cachespeichers, in dem sich die Daten befinden auf die ein spekulativer Zugriff erfolgt ist, den spekulativen Zustand der Cache-Speicherzeilen zurücksetzen, auf die ein spekulativer Zugriff erfolgt ist (Block 520). Beispielsweise können die erste und die zweite spekulative Wortmaske für alle Cache-Speicherzeilen gelöscht werden, auf die ein spekulativer Zugriff erfolgt ist.
  • Anschließend kann der Cache-Speichercontroller den Zustand aller spekulativ geschriebenen Cache-Speicherzeilen auf "Ungültig" setzen (Block 530). Es können demzufolge alle Cache-Speicherzeilen ungültig gemachten werden, für die Flags in den zweiten spekulativen Wortmasken gesetzt sind. Dies kann dem Setzen eines Bits "Ungültig" in einem Zustand MESI der zugeordneten Cache-Speicherzeile entsprechen.
  • Weiterhin mit Bezug auf 7 kann anschließend bestimmt werden, ob die ungültig gemachten Zeilen exklusiv genutzt wurden (Rhombus 540). Das heißt, es wird bestimmt, ob die ungültig gemachten Zeilen, auf die ein spekulativer Zugriff erfolgt ist, ausschließliches Eigentum des lokalen Cachespeichers waren. Wenn dies nicht der Fall ist, endet das Verfahren 500. Befand sich dagegen irgendeine der ungültig gemachten Zeilen im Zustand "Exklusiv", geht die Steuerung an Block 550 über. In diesem kann eine Busnachricht über die Freigabe (das heißt, RelOwner) für diese vorhergehend exklusiven Cache-Speicherzeilen gesendet werden (Block 550). Daraufhin kann der Cache-Speichercontroller eine Busnachricht zur Freigabe des Eigentums an der oder den zugehörigen Cache-Speicherzeilen senden und demzufolge das Eigentum an der Speicherzeile zurückgeben. Auch wenn in Zusammenhang mit 7 diese spezielle Implementierung beschrieben wurde, ist zu verstehen, dass der Geltungsbereich der vorliegenden Erfindung hierdurch nicht eingeschränkt wird und in anderen Ausführungen andere Formen zur Abwicklung oder Annullierung von Transaktionen oder ungültigen spekulativen Ausführungen realisiert werden können.
  • In 8 und 9 werden Zustandsübergangsdiagramme entsprechend einer Ausführung der vorliegenden Erfindung dargestellt. In 8 werden die Antworten auf Ereignisse im Prozessor und in 9 die Antworten auf Busnachrichten dargestellt. Aus Gründen der Übersichtlichkeit werden keine transienten Zustände dargestellt. Die Zustandsübergänge werden gemäß folgender Regel bezeichnet: "Ereignis oder Nachricht/empfangene Aktionen und/oder erzeugte Nachrichten". Die am Protokoll beteiligten und in 8 und 9 dargestellten Zustände, Ereignisse, Aktionen und Nachrichten sind in Tabelle 1 zusammengefasst. Tabelle 1
    Zustand Beschreibung
    M. E. S. I Zustände MESI (pro Zeile): Geändert, Exklusiv, Gemeinsam genutzt, Ungültig
    ML, EL, SL, IL Zustände spekulativen Ladens (pro Wort): Wort vor dem spekulativen Laden erzeugt
    EU, SU, IU Zustände "Unsicher", spekulativ gespeichert (pro Wort): Wort spekulativ geschrieben
    EUL, SUL, IUL Zustände Geladen und Unsicher (pro Wort): Wort spekulativ geladen und später geschrieben
    Ereignis Beschreibung
    Ld Nicht spekulatives Laden
    st Nicht spekulatives Speichern
    SLd Spekulatives Laden
    SSt Spekulatives Speichern
    SubW_SSt Spekulatives Speichern eines Teilworts
    Aktion Beschreibung
    Tk Buswert nehmen und in Zeile kopieren
    Zusammenführen Den neuen Inhalt der Zeile mit den (unsicheren) spekulativen Werten zusammenführen
    Viol(tidprod tidcons) Verletzungs-Handler aufrufen auf Grund einer Verletzung der Abhängigkeit zwischen (tidprod y tidcons)
    Nachricht Beschreibung
    BuSRd (@line) Bus lesen – Anforderung des Zeilenwerts
    BusRdX (@line) Exklusives Buslesen – der Zeilenwert wird exklusiv angefordert (sonstige Kopien ungültig machen)
    BusUpg (@line) Busgrad erhöhen – sonstige Kopien der Zeile ungültig machen
    DRdResp (@line) Antwort auf Daten lesen – Wert der gelesenen Zeile
    DWrResp (@line) Antwort auf Daten schreiben – Wert der geschriebenen Zeile
    DWBack < (@line) Daten erneut schreiben – Wert der eliminierten Zeile
    RelOwner (@line) Eigentum freigeben – Rückgabe des Eigentums an der Zeile an den Speicher
    ChkRd (@line,Word_mask) Lesen prüfen – Nachweisen, dass kein Wort in der Wortmaske geschrieben wurde
    ChkWr (@line,Word_mask) Schreiben prüfen – Nachweisen, dass kein Wort in der Wortmaske gelesen wurde
    ChkNSWr (@line,Word_mask) Nicht spekulatives Schreiben prüfen – ChkWr wurde durch eine nicht spekulative Speicherung generiert
    DUpd (@line) Daten aktualisieren – Aktualisiert den Speicher mit dem Zeilenwert ohne Freigabe des Eigentums
    DMTrsfr (@line) Datenspeicherübertragung – Der Speicher erwirbt das Eigentum an der Zeile und sendet seine eigene saubere Kopie an den Bus
    BusKill (tid) Annullieren – Annulliert die (unsicheren) spekulativen Werte des zu dem Faden gehörigen Cachespeichers tid
    BusCommit (tid) Übernehmen – Übernehmen der (unsicheren) spekulativen Werte des zu dem Faden gehörigen Cachespeichers tid
  • In verschiedenen Beispielen der in 8 und 9 dargestellten Übergänge wird eine Nachricht ChkRd bei jedem spekulativen Laden mit Zugriff auf einen Wort-Speicherplatz generiert, auf den vorher kein Zugriff (lesen oder schreiben) durch denselben Faden erfolgt ist. Andererseits wird die Nachricht ChkWr durch jedes spekulative Speichern auf einen Wort-Speicherplatz erzeugt, auf den vorher nicht spekulativ geschrieben wurde (und der demzufolge nicht unsicher ist). Wie vorstehend beschrieben können die Nachrichten zur Verifizierung nur beim ersten spekulativen Laden oder Speichern auf einen Wort-Speicherplatz im Cachespeicher generiert werden. Die Nachrichten ChkNSWr können durch jeden nicht spekulativen Speichervorgang generiert werden (das heißt, Speicherung durch einen nicht spekulativen Faden oder "sicheres" Speichern durch einen beliebigen Faden).
  • Die Verifizierung einer realen Abhängigkeit kann immer dann ausgeführt werden, wenn ein Cache-Speichercontroller eine Prüfnachricht empfängt und die Wortmaske der Nachricht mit den Bits L und U der Cache-Speicherzeile vergleicht (zum Beispiel mit einer bitweisen Operation "UND"), auf die zugegriffen wurde. Im allgemeinen veranlasst die Nachricht ChkRd, dass der Cache-Speichercontroller die Wortmaske der Nachricht mit den Bits U vergleicht, während bei Nachrichten ChkWr und ChkNSWr der Vergleich mit den Bits L erfolgt. Im Fall eines Konflikts, das heißt, wenn das Ergebnis der bitweisen Operation "UND" nicht Null ist, wird eine Datenabhängigkeit zwischen Fäden und eine möglicherweise daraus resultierende Verletzung festgestellt. Diese Verletzung ruft einen Anwendungshandler mit den IDs (Bezeichnern) des produzierenden und des verbrauchenden Fadens als Parameter auf. Wird die Verletzung auf Grund einer Nachricht ChkNSWr generiert, kann als Fadenbezeichner ein Sonder-ID als Parameter des erzeugenden Fadens übermittelt werden der anzeigt, dass der erzeugende Faden nicht spekulativ ist.
  • In verschiedenen Implementierungsformen kann die Anwendung über den Verletzungs-Handler für die korrekte Annullierung der spekulativen Aktivität verantwortlich sein. In einem Modell einer Abarbeitung spekulativer Mehrfachfäden bedeutet dies eine Überprüfung der Reihenfolge zwischen den erzeugenden und den verbrauchenden Fäden um zu prüfen, ob die Verletzung durch eine Abhängigkeit Lesen nach Schreiben verursacht wurde. Wenn dies der Fall ist, kann der Handler eine Nachricht zur Annullierung des verbrauchenden Fadens und aller seiner Nachfolger aussenden. Da in einem Transaktionsspeichersystem keine Reihenfolge zwischen den Fäden besteht, wird nur der verbrauchende Faden annulliert. Es ist zu beachten, dass das Protokoll Mehrfachversionen (eine Version pro Faden) des gleichen Wort-Speicherplatzes unterstützt und daher die Datenabhängigkeit Schreiben nach Schreiben keine Verletzung verursacht.
  • Es ist möglich, die Zugriffe auf Teilworte besonders zu behandeln. Ein spekulatives Speichern auf einen Speicherplatz eines Teilworts impliziert eine Verletzung, wenn ein anderer Faden in das gleiche Wort schreibt, da in diesem Fall die Kohärenz des Cachespeichers nicht garantiert ist. Um diese zu garantieren, wird durch das spekulative Speichern eines Teilworts veranlasst, dass der Controller des zugeordneten Cachespeichers das Bit U setzt und eine Nachricht ChkWr sendet, wie dies bei einer spekulativen Speicheroperation der Fall ist. Darüber hinaus kann der Cache-Speichercontroller das Bit L setzen und eine Nachricht ChkRd senden. Damit wird sichergestellt, dass eine Verletzung der Datenabhängigkeit zwischen Fäden erkannt wird, wenn ein anderer Faden auf den gleichen Wort-Speicherplatz schreibt.
  • Wird die spekulative Aktivität bestätigt und kein Fehler festgestellt, kann der spekulative Zustand des Speichers in den Architekturzustand übernommen werden. Um einen Übernahmeprozess zu starten, wird eine Nachricht "BusCommit" (Bus Übernahme" gesendet, die den Fadenbezeichner des zu übernehmenden spekulativen Fadens oder des Transaktionsbereichs enthält. Wenn der Cache-Speichercontroller die Nachricht "BusCommit" entsprechend dem in der Nachricht enthaltenen Fadenbezeichner empfängt, wird der Prozess zur Übernahme des spekulativen Speichers eingeleitet. Dieser Prozess kann entsprechend einem in 6 dargestellten Flussdiagramm erfolgen. In der nachstehenden Tabelle 2 werden darüber hinaus die mit der Cache-Speicherzeile in jedem der gegebenen Zustände ausgeführten Aktionen zusammengefasst (Spalte "BusCommit"). Tabelle 2
    Zustand BusCommit BusKill
    Nachricht Neuer Zustand Nachricht Neuer Zustand
    IL - I - I
    SL - S - S
    EL - E - E
    ML - M - M
    IU BusRdX M - I
    SU BusUpg M - I
    EU - M RelOwner I
    IUL BusRdX M - I
    SUL BusUpg M - I
    EUL - M RelOwner I
  • Es ist zu beachten, dass mit dem Übernahmeprozess ein Zurücksetzen aller Bits L und U der Zeilen des lokalen Cachespeichers erfolgt und der Zustand M für diejenigen Zeilen gesetzt wird, in die ein beliebiges Wort spekulativ geschrieben wurde (also unsicher). Zu diesem Zweck wird eine Abfrage des lokalen Daten-Cachespeichers durchgeführt. Alle Zeilen, die sich im Zustand SU oder im Zustand SUL befinden, bewirken eine Erhöhung des Busgrads (BusUpg), um weitere Kopien der Zeile des Cachespeichers ungültig zu machen. Auf ähnliche Weise verursachen die Zeilen im Zustand IU oder IUL die Erzeugung einer Busnachricht für exklusives Buslesen (BusRdX), um den Architekturwert der Zeile anzufordern und die spekulativ geschriebenen Worte lokal zusammenzuführen. Weiterhin wird für die Zeilen im Zustand EU oder EUL dieser auf M geändert und keine Busnachricht erzeugt, da die entsprechende Zeile nur lokal in diesem Cachespeicher vorhanden ist.
  • Wenn die Spekulation fehlschlägt, muss die spekulative Aktivität annulliert werden. Ein Protokoll entsprechend einer Ausführung der vorliegenden Erfindung kann für das Verwerfen des gesamten durch den transaktionalen Bereich oder den annullierten Faden erzeugten spekulativen Speicherzustands verantwortlich sein. Dies wird über eine "BusKill" genannte Busnachricht in einer Ausführung implementiert, die in einer Ausführung den Fadenbezeichner ID des zu annullierenden spekulativen Fadens enthält. Bei Empfang der Nachricht BusKill durch den Cache-Speichercontroller, in welchem der Fadenbezeichner ID mit dem Fadenbezeichner der Nachricht übereinstimmt, wird der Prozess zur Annullierung des spekulativen Speichers eingeleitet. Dieser Prozess kann entsprechend dem in 7 gezeigten Flussdiagramm ablaufen. Tabelle 2 enthält darüber hinaus alle mit einer Cache-Speicherzeile ausgeführten Operationen für jeden gegebenen Zustand (das heißt, hier die Spalte BusKill).
  • Wie vorstehend beschrieben beinhaltet diese Annullierung das Rücksetzen aller Bits L und U in dem lokalen Daten-Cachespeicher. Weiterhin werden alle Zeilen des Cachespeichers ungültig gemacht, die ein beliebiges spekulatives (also unsicheres) Wort enthalten. Die Zeilen, auf die nicht spekulativ zugegriffen wird, werden nicht geändert. Das heißt, alle Zeilen mit einem der Zustände EU, EUL, SU, SUL, IU oder IUL wechseln in den Zustand I und die Zeilen mit einem der Zustände ML, EL, SL oder IL wechseln nach M, E, S und I. Es ist zu beachten, dass die Zeilen im Zustand EU oder EUL das Eigentum an der Speicherzeile über eine Busnachricht zur Freigabe des Eigentümers (das heißt, ein RelOwner) zurückgeben, wenn deren Zustand auf Ungültig wechselt.
  • In verschiedenen Ausführungen erfolgt das Ordnen der Fäden mittels Software (zum Beispiel durch einen Compiler generierter Code), die für das Filtern der Abhängigkeiten zwischen den einzelnen Fäden im Speicher bei Operationen wie Lesen nach Schreiben verantwortlich ist.
  • Ein Protokoll gemäß einer Ausführung der vorliegenden Erfindung kann ebenfalls die Abarbeitung des Transaktionsspeichers unterstützen, wobei die Reihenfolge der Fäden bedeutungslos ist.
  • Es ist möglich, die Ausführungen in zahlreichen Arten unterschiedlicher Systeme zu implementieren. In 10 wird ein Blockdiagramm eines Systems entsprechend einer Ausführung der vorliegenden Erfindung dargestellt. Wie aus 10 hervorgeht, beinhaltet ein System für eine Punkt-zu-Punkt-Verbindung 700 einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verbindung 750 miteinander gekoppelt sind. Obwohl 10 ein System für eine Punkt-zu-Punkt Verbindung zeigt, ist zu verstehen, dass hierdurch der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt eingeschränkt wird und das System 700 in anderen Ausführungen ein Multipunkt-Bus oder ein sonstiges System dieser Art sein kann. Wie aus 10 hervorgeht, kann jeder der Prozessoren 770 und 780 ein Mehrkern-Prozessor sein, der einen ersten und einen zweiten Prozessorkern enthält (das heißt, Prozessorkerne 774a und 774b sowie 784a und 784b). Die einzelnen Prozessorkerne können jeder einen lokalen Cachespeicher beinhalten, für die ein Protokoll zur Wahrung der Cachespeicher-Kohärenz gemäß einer Ausführung der vorliegenden Erfindung implementiert ist. Demzufolge kann das System 700 spekulative Transaktionen und Übertragungen mit Mehrfachfäden ausführen.
  • Der erste Prozessor 770 beinhaltet darüber hinaus ein Speicherkontrollzentrum (MCH) 772 und Punkt-zu-Punkt Schnittstellen (P-P) 776 und 778. Analog dazu beinhaltet der zweite Prozessor 780 ein MCH 782 und Schnittstellen P-P 786 und 788. Wie in 10 dargestellt koppeln die MCH 772 und 782 die Prozessoren mit den zugehörigen Speichern, das heißt, mit einem Speicher 732 und mit einem Speicher 734, die Teile eines lokal mit den entsprechenden Prozessoren verbundenen Hauptspeichers sein können.
  • Der erste Prozessor 770 und der zweite Prozessor 780 können mit einem Chipsatz 790 über Schnittstellen P-P 752 und 754 gekoppelt sein. Wie aus 10 hervorgeht, beinhaltet der Chipsatz 790 Punkt-zu-Punkt Schnittstellen 794 und 798. Darüber hinaus umfasst der Chipsatz 790 eine Schnittstelle 792 zur Kopplung des Chipsatzes 790 mit einem Motor zur Erzeugung von Hochleistungsgraphiken 738. In einer Ausführung kann ein Bus 739 "Advanced Graphics Port (AGP)" (verbesserter Graphikkarten-Anschluss) zur Kopplung zwischen dem Graphikmotor 738 und dem Chipsatz 790 verwendet werden. Der Bus 739 AGP genügt der Accelerated Graphics Port Interface Specification, Revision 2.0 (Spezßfizierung des verbesserten Graphikkarten Anschlusses, Revision 2.0), veröffentlicht am 7. Mai 1998 von der Intel Corporation, Santa Clara, Kalifornien (USA). Alternativ ist eine Kopplung dieser Komponenten über eine Punkt-zu-Punkt Verbindung 739 möglich.
  • Der Chipsatz 790 ist seinerseits mit einem ersten Bus 716 über eine Schnittstelle 796 gekoppelt. In einer Ausführung kann dieser erste Bus 716 ein "Peripheral Component Interconnect Bus (PCI (Bus zur Verbindung peripherer Komponenten) sein, wie er in der "PCI Local Bus Specification, Production Version, Revision 2.1" vom Juni 1995 definiert ist oder ein Bus wie der PCI Express Bus oder ein anderer Bus zur Zusammenschaltung von Einund Ausgängen (I/O) der dritten Generation sein, wobei der Geltungsbereich der vorliegenden Erfindung nicht hierauf beschränkt wird.
  • Wie aus 10 hervorgeht, können an den ersten Bus 716 mehrere Ein-/Ausgabegeräte I/O 714 zusammen mit einer Busbrücke 718 an den ersten Bus 716 angeschlossen werden, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt. Der zweite Bus 720 kann in einer Ausführung ein LPC-Bus sein (Bus mit niedriger PIN-Zahl oder persönlicher Geheimzahl). An den zweiten Bus können unterschiedliche Einrichtungen angeschlossen sein, zum Beispiel eine Tastatur/Maus 722, Kommunikationseinrichtungen 726 und die Datenspeichereinheit 728, die in einer Ausführung den Code enthalten kann. Darüber hinaus ist es möglich, an den zweiten Bus 720 ein Audio-Ein-/Ausgabegerät 724 anzuschließen.
  • Die Ausführungen können in Form von Code implementiert und auf einem maschinenlesbaren Träger gespeichert sein, wie zum Beispiel einem Speichermedium, auf dem Befehle gespeichert sind, die zur Programmierung eines Systems zur Abarbeitung der Befehle dienen können. Das Speichermedium kann ohne Einschränkung auf die genannten flexible Platten oder Disketten, Nur-Lese Kompakt-Disk (CD-ROMS), wieder beschreibbare Kompakt-Disk (CD-RW), magnetooptische Platten, Halbleitereinrichtungen wie Nur-Lesespeicher (ROM), Schreib-Lesespeicher (RAM) wie dynamische Schreib-Lesespeicher (DRAM), statische Schreib-Lesespeicher (SRAM), programmierbare, löschbare Nur-Lesespeicher (EPROM), schnelle Speicher, programmierbare, elektrisch löschbare Nur-Lesespeicher (EEPROM), Magnetkarten oder optische Karten oder jedes beliebige sonstige Medium umfassen, das zur Speicherung elektronischer Befehle geeignet ist.
  • Obwohl die vorliegende Erfindung in Zusammenhang mit einer begrenzten Zahl von Ausführungen beschrieben wurde, erkennen Fachleute auf dem Gebiet zahlreiche Abwandlungen und Varianten derselben. Es wurde beabsichtigt, dass die beigefügten Patentansprüche alle diese Abwandlungen und Varianten umfassen, insoweit diese im tatsächlichen Geist und Umfang der vorliegenden Erfindung enthalten sind.
  • Zusammenfassung
  • Bei einer Ausführungsform umfasst die vorliegende Erfindung ein Verfahren zum Empfangen einer Busnachricht in einem ersten Cash-Speicher, die einem spekulativem Zugriff auf einen Teil eines zweiten Cash-Speichers durch einen zweiten Faden entspricht und ein dynamisches Bestimmen im ersten Cash-Speicher, ob eine Abhängigkeit zwischen Fäden vorliegt, zwischen dem zweiten Faden und einem ersten Faden, der mit dem ersten Cash-Speicher im Hinblick auf diesen Teil assoziiert ist. Weitere Ausführungsformen sind beschrieben und beansprucht.

Claims (27)

  1. Ein Verfahren umfassend: Empfangen einer Busnachricht in einem ersten Cachespeicher, wobei die Busnachricht einem spekulativen Zugriff auf einen Teil eines zweiten Cachespeichers durch einen zweiten Faden entspricht; und dynamisches Bestimmen im Cache-Endspeicher ob eine Fadenabhängigkeit zwischen dem zweiten Faden und einem dem ersten Cachespeicher zugeordneten ersten Faden in Bezug auf diesen einen Teil besteht.
  2. Verfahren nach Anspruch 1, das darüber hinaus umfasst, eine Verletzung der Abhängigkeit einem Handler der zugeordneten Anwendung zu signalisieren, der einer den ersten Faden und den zweiten Faden umfassenden Anwendung zugeordnet ist.
  3. Verfahren nach Anspruch 2, das darüber hinaus umfasst: Empfangen der Signalisierung der Abhängigkeitsverletzung und eines Bezeichners des ersten Fadens und des zweiten Fadens im Anwendungshandler; und Bestimmen, welcher von dem ersten Faden und dem zweiten Faden auf der Grundlage des Ordnens der Information des ersten Fadens und des zweiten Fadens zu annullieren ist.
  4. Verfahren nach Anspruch 1, wobei der Empfang der Busnachricht das Empfangen eines Teils der Nachricht, eines Adressteils und eines Fadenbezeichners des zweiten Fadens umfasst und der Teil nicht empfangen wird, auf den spekulativ zugegriffen wurde.
  5. Verfahren nach Anspruch 1, das darüber hinaus umfasst: Setzen eines ersten Flags des spekulativen Zustands für den Teil, auf den der zweite Faden spekulativ zugegriffen hat, und Setzen eines zweiten Flags des spekulativen Zustands für den Teil, auf den der zweite Faden spekulativ zugegriffen hat, wenn der Teil durch den zweiten Faden spekulativ geschrieben wird.
  6. Verfahren nach Anspruch 1, wobei die dynamische Bestimmung umfasst: Vergleichen einer ersten Maske der Busnachricht mit einer ersten Maske einer Cache-Speicherzeile des ersten Cachespeichers der besagten Teil enthält; und Bestimmen der Abhängigkeit zwischen Fäden auf der Grundlage des Vergleichs.
  7. Ein Gerät umfassend: einen Cachespeicher, der eine Speichermatrix und einen Cache-Speichercontroller umfasst, wobei die Speichermatrix eine Mehrzahl von Zeilen umfasst, von denen jede beinhaltet: einen Zustandsteil zur Speicherung einer ersten Maske mit ersten spekulativen Flags von denen jedes einen spekulativen Zugriff auf ein entsprechendes Wort der Zeile anzeigt, den Zustandsteil um darüber hinaus eine zweite Maske mit zweiten spekulativen Flags zu speichern, von denen jedes ein spekulatives Schreiben eines entsprechenden Worts der Zeile anzeigt; und einen Datenteil zum Speichern einer Mehrzahl von Worten; und den Cache-Speichercontroller zum Übermitteln und Verarbeiten der den spekulativen Zugriffen auf den Cachespeicher zugeordneten Busnachrichten.
  8. Gerät nach Anspruch 7, wobei der Zustandsteil und der Datenteil keine Ordnungsinformation enthalten.
  9. Gerät nach Anspruch 7, wobei der Zustandsteil darüber hinaus zur Speicherung eines ersten Satzes von Flags dient entsprechend einem Kohärenzprotokoll Modifiziert, Exklusiv, Gemeinsam genutzt und Ungültig.
  10. Gerät nach Anspruch 9, wobei der erste Satz von Flags zeilenbasiert zu führen ist und die erste und die zweite Maske wortbasiert zu führen sind.
  11. Gerät nach Anspruch 7, wobei der Cache-Speichercontroller zur Bestätigung einer Abhängigkeitsverletzung zwischen Fäden an einen Anwendungshandler dient.
  12. Gerät nach Anspruch 11, wobei der Cache-Speichercontroller zur Bestätigung der Abhängigkeitsverletzung zwischen Fäden dient, wenn die mit der eingehenden Busnachricht empfangene erste oder zweite Maske in Konflikt mit einer ersten Maske oder zweiten Maske steht, mit der sie in der Speichermatrix übereinstimmt.
  13. Gerät nach Anspruch 7, wobei der Cache-Speichercontroller dem Empfang einer Busnachricht dient, mit der die Übernahme eines spekulativen Fadens angezeigt wird, wenn der spekulative Faden validiert wurde.
  14. Gerät nach Anspruch 13, wobei der Cache-Speichercontroller dazu dient, die erste Maske und die zweite Maske der mit dem spekulativen Faden assoziierten Zeilen frei zu setzen, wenn der spekulative Faden validiert wurde.
  15. Gerät nach Anspruch 7, wobei der Cache-Speichercontroller zur dynamischen Verifizierung einer Datenabhängigkeit zwischen Fäden auf der Grundlage einer eingehenden Busnachricht dient.
  16. Gerät nach Anspruch 7, wobei der Cache-Speichercontroller zur Übertragung einer ersten Busnachricht zur Anzeige eines spekulativen Zugriffs auf ein Wort einer Zeile und zur Übertragung einer zweiten Busnachricht zur Anzeige eines spekulativen Schreibens in das Wort dient, wobei die erste und die zweite Busnachricht ohne das Wort zu übertragen sind.
  17. Gerät nach Anspruch 16, wobei die erste Busnachricht die erste Maske und die zweite Busnachricht die zweite Maske enthält.
  18. Ein Produkt, das ein maschinenlesbares Speichermedium umfasst, das die Anweisungen enthält, deren Ausführung durch die Maschine diese dazu befähigt, ein Verfahren auszuführen umfassend: Empfangen einer Busnachricht von einem zweiten Cachespeicher in einem ersten Cachespeicher zur Anzeige einer Datenwertänderung im zweiten Cachespeicher durch eine Transaktion eines Transaktionsspeichersystems; und Bestimmen im ersten Cachespeicher, ob die Transaktion auf der Grundlage mindestens eines Teils der Busnachricht in Konflikt mit einem ersten Faden steht, der auf einem dem ersten Cachespeicher zugeordneten Prozessor ausgeführt wird.
  19. Produkt nach Anspruch 18, wobei das Verfahren darüber hinaus das Senden einer Verletzungsnachricht vom ersten Cachespeicher an einen Anwendungshandler des Prozessors umfasst, um die Ordnung zwischen der Transaktion und dem ersten Faden zu bestimmen, wenn der Konflikt festgestellt wird.
  20. Produkt nach Anspruch 19, wobei das Verfahren darüber hinaus das Empfangen einer Nachricht vom Anwendungshandler zur Annullierung der Transaktion auf der Grundlage der Feststellung der Ordnung umfasst.
  21. Produkt nach Anspruch 20, wobei das Verfahren darüber hinaus umfasst: Rücksetzen der mit dem Datenwert assoziierten spekulativen Flags im zweiten Cachespeicher; und Aussenden einer Busnachricht von einem zweiten Cachespeicher zur Freigabe des Eigentums an einer Cachespeicherzeile einschließlich des Datenwerts, falls der zweite Cachespeicher im Besitz dieser Cachespeicherzeile war.
  22. Ein System umfassend: einen ersten Prozessor, der einen ersten Kern und einen ersten Cachespeicher aufweist; einen zweiten Prozessor, der einen zweiten Kern und einen zweiten Cachespeicher aufweist, wobei die dynamische Bestimmung einer Datenabhängigkeit zwischen den Cachespeichern bezüglich eines Datenwerts, der sowohl im ersten Cachespeicher wie im zweiten Cachespeicher vorliegt, auf der Grundlage einer zwischen dem ersten Cachespeicher und dem zweiten Cachespeicher gesendeten Busnachricht erfolgt; und einen mit dem ersten Prozessor und mit dem zweiten Prozessor gekoppelten dynamischen Speicher mit direktem Zugriff (DRAM).
  23. System nach Anspruch 22 in welchem der erste Cachespeicher einen ersten Cache-Speichercontroller zur dynamischen Bestimmung der Datenabhängigkeit zwischen Cachespeichern umfasst.
  24. System nach Anspruch 23 in welchem der erste Cachespeicherkontroller zum Erzeugen einer Verletzungsnachricht dient, um eine Verletzung der Datenabhängigkeit zwischen Cachespeichern auf der Grundlage der Busnachricht anzuzeigen.
  25. System nach Anspruch 24, das darüber hinaus einen Handler zum Empfang der Verletzungsnachricht und zur Bestimmung der Ordnung zwischen einem erzeugenden Faden und einem verbrauchenden Faden umfasst.
  26. System nach Anspruch 25, das darüber hinaus ein Anwendungsprogramm umfasst, das den erzeugenden Faden und den verbrauchenden Faden beinhaltet, wobei darüber hinaus das Anwendungsprogramm den Handler beinhaltet.
  27. System nach Anspruch 23 in welchem der Controller des ersten Cachespeichers zur Signalisierung einer Verletzung der Datenabhängigkeit zwischen Cachespeichern dient, wenn ein spekulativer Zugriff auf einen Ort mit spekulativem Zugriff im ersten Cachespeicher erfolgt, wobei der spekulative Zugriff eine sichere Operation umfasst.
DE112006003917T 2006-05-30 2006-05-30 Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll Withdrawn DE112006003917T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2006/070074 WO2007138124A1 (es) 2006-05-30 2006-05-30 Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache

Publications (1)

Publication Number Publication Date
DE112006003917T5 true DE112006003917T5 (de) 2009-06-04

Family

ID=38778149

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006003917T Withdrawn DE112006003917T5 (de) 2006-05-30 2006-05-30 Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll

Country Status (4)

Country Link
US (1) US8185700B2 (de)
CN (1) CN101449250B (de)
DE (1) DE112006003917T5 (de)
WO (1) WO2007138124A1 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128750B1 (en) * 2008-03-03 2015-09-08 Parakinetics Inc. System and method for supporting multi-threaded transactions
US8316366B2 (en) * 2008-04-02 2012-11-20 Oracle America, Inc. Facilitating transactional execution in a processor that supports simultaneous speculative threading
US7934180B2 (en) * 2008-05-27 2011-04-26 International Business Machines Corporation Incremental speculative merging
US8806145B2 (en) * 2008-11-07 2014-08-12 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8898401B2 (en) * 2008-11-07 2014-11-25 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
CN101853188B (zh) * 2009-05-21 2012-11-21 威盛电子股份有限公司 检测载入-储存冲突的方法及其装置
US8392666B2 (en) * 2009-05-21 2013-03-05 Via Technologies, Inc. Low power high speed load-store collision detector
US8468539B2 (en) * 2009-09-03 2013-06-18 International Business Machines Corporation Tracking and detecting thread dependencies using speculative versioning cache
US8832415B2 (en) * 2010-01-08 2014-09-09 International Business Machines Corporation Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
US8533399B2 (en) * 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US9507647B2 (en) * 2010-01-08 2016-11-29 Globalfoundries Inc. Cache as point of coherence in multiprocessor system
CN102947807B (zh) * 2010-06-14 2015-09-09 富士通株式会社 多核处理器***、缓存一致性控制方法以及缓存一致性控制程序
US20110320781A1 (en) * 2010-06-29 2011-12-29 Wei Liu Dynamic data synchronization in thread-level speculation
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
CN101966102A (zh) * 2010-10-23 2011-02-09 浙江晶皓光电科技有限公司 一种牙具
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
CN104583943B (zh) 2012-06-15 2018-06-08 英特尔公司 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列
TWI599879B (zh) 2012-06-15 2017-09-21 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
CN104583942B (zh) * 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
WO2013188414A2 (en) * 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for filtering the stores to prevent all stores from having to snoop check against all words of a cache
CN104583956B (zh) 2012-06-15 2019-01-04 英特尔公司 用于实现加载存储重新排序和优化的指令定义
KR101996592B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
EP2862061A4 (de) 2012-06-15 2016-12-21 Soft Machines Inc Speicherwarteschlange für virtuelle last mit dynamischem versandfenster mit einheitlicher struktur
WO2013188701A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
KR101695845B1 (ko) 2012-09-20 2017-01-12 한국전자통신연구원 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
US9311241B2 (en) 2012-12-29 2016-04-12 Intel Corporation Method and apparatus to write modified cache data to a backing store while retaining write permissions
WO2014107148A1 (en) 2013-01-03 2014-07-10 Intel Corporation Adaptive data prefetching
US9417974B2 (en) 2013-03-28 2016-08-16 Microsoft Technology Licensing, Llc. Transaction processing for database in persistent system
US20150205721A1 (en) * 2014-01-22 2015-07-23 Advanced Micro Devices, Inc. Handling Reads Following Transactional Writes during Transactions in a Computing Device
US10169103B2 (en) 2014-02-27 2019-01-01 International Business Machines Corporation Managing speculative memory access requests in the presence of transactional storage accesses
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
CN106126450B (zh) * 2016-06-20 2018-10-30 中国航天科技集团公司第九研究院第七七一研究所 一种应对多核处理器监听访问冲突的Cache设计结构及方法
CN106126451B (zh) * 2016-06-20 2019-01-25 中国航天科技集团公司第九研究院第七七一研究所 基于包含式Cache体系的多核处理器低功耗设计结构
US10417129B2 (en) * 2017-05-08 2019-09-17 International Business Machines Corporation Transactional memory operation success rate
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US11169805B2 (en) 2018-04-30 2021-11-09 Hewlett Packard Enterprise Development Lp Dynamic processor cache to avoid speculative vulnerability
US11055221B2 (en) * 2019-03-22 2021-07-06 Samsung Electronics Co., Ltd. Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory
GB2585202B (en) * 2019-07-01 2021-11-24 Advanced Risc Mach Ltd An apparatus and method for speculatively vectorising program code
US11550716B2 (en) * 2021-04-05 2023-01-10 Apple Inc. I/O agent
US12007895B2 (en) 2021-08-23 2024-06-11 Apple Inc. Scalable system on a chip

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2882475B2 (ja) 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US20040123081A1 (en) * 2002-12-20 2004-06-24 Allan Knies Mechanism to increase performance of control speculation
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7657880B2 (en) * 2003-01-31 2010-02-02 Intel Corporation Safe store for speculative helper threads
US7089374B2 (en) * 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US20080134196A1 (en) 2005-05-19 2008-06-05 Intel Corporation Apparatus, System, and Method of a Memory Arrangement for Speculative Multithreading
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core

Also Published As

Publication number Publication date
CN101449250B (zh) 2011-11-16
US8185700B2 (en) 2012-05-22
US20090083488A1 (en) 2009-03-26
WO2007138124A1 (es) 2007-12-06
CN101449250A (zh) 2009-06-03

Similar Documents

Publication Publication Date Title
DE112006003917T5 (de) Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69636452T2 (de) Mehrprozessor-cachespeicherkohärenzprotokoll für einen lokalbus
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE69519816T2 (de) Anordnung mit Duplikat des Cache-Etikettenspeichers
DE68917325T2 (de) Verfahren und Vorrichtung zum Schreiben gegenseitiger verriegelter Variablen in einen integrierten Cachespeicher.
DE68917326T2 (de) Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
DE69900797T2 (de) Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE69812685T2 (de) System und verfahren zur spekulativen arbitrierung bei datenübertragung
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112008002018T5 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE2856715C3 (de) Verfahren zum Durchführen einer Pufferspeicher-Koinzidenz in einem Mehrprozessorsystem
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE102010051477A1 (de) Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform
DE102007048507A1 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee