DE102013218370B4 - Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher - Google Patents

Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher Download PDF

Info

Publication number
DE102013218370B4
DE102013218370B4 DE102013218370.4A DE102013218370A DE102013218370B4 DE 102013218370 B4 DE102013218370 B4 DE 102013218370B4 DE 102013218370 A DE102013218370 A DE 102013218370A DE 102013218370 B4 DE102013218370 B4 DE 102013218370B4
Authority
DE
Germany
Prior art keywords
cache
cache line
speculative
line
until
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.)
Active
Application number
DE102013218370.4A
Other languages
English (en)
Other versions
DE102013218370A1 (de
Inventor
James Van Zoeren
Alexander Klaiber
Guillermo J. Rozas
Paul Serris
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013218370A1 publication Critical patent/DE102013218370A1/de
Application granted granted Critical
Publication of DE102013218370B4 publication Critical patent/DE102013218370B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

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

In einem Prozessor, ein Verfahren (500) zur Akquirierung spekulativer Genehmigung für Zugriff auf einen gemeinsam genutzten Speicher, aufweisend:Erhalten eine Speicheranweisung von einem Prozessorkern, eine erste Cachezeile in einem ersten Cache zu modifizieren, wobei die erste Cachezeile in dem ersten Cache und eine zweite Cachezeile in einem zweiten Cache in einem gemeinsam genutzten Zustand sind und den gleichen Dateninhalt umfassen;in Antwort auf das Erhalten der Speicheranweisung, Markieren der ersten Cachezeile als spekulativ;Modifizieren der ersten Cachezeile gemäß der Speicheranweisung; undnach Erhalt einer Modifikationsgenehmigung, die auf der Grundlage eines aktuellen Zustands der zweiten Cachezeile in dem zweiten Cache bestimmt wird, Festschreiben der Speicheranweisung in der ersten Cachezeile in dem ersten Cache.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich generell auf Computersysteme.
  • HINTERGRUND DER ERFINDUNG
  • Prozessoren verwenden oft einen MESI-Zustandskohärenzmechanismus für Multiprozessor-Caching, wobei jede Zeile in dem Cache entweder modifiziert, exklusiv, gemeinsam genutzt oder ungültig markiert wird. Eine gemeinsam genutzte Zeile kann erst dann in eine exklusive oder modifizierte umgewandelt werden (wenn eine Speicheranweisung zum Beispiel zu einer gemeinsam genutzten Zeile zurückziehen möchte), nachdem zuerst eine Belauschung (engl. „snoop“) zu anderen Caches gesendet wurde, die alle anderen möglichen gemeinsam genutzten Zeilen in gleichgestellten Caches in ungültige umwandeln, und es dann der Zeile endlich erlaubt wurde, in eine exklusive upgegradet zu werden. Die möglichen Zustandskombinationen werden gemäß dem MESI-Zustandskohärenzmechanismus verfolgt und implementiert. US 7 873 793 B1 beschreibt Verfahren und System zur Unterstützung spekulativer Modifikation in einem Daten-Cache. US 2005 / 0 154 831 A1 beschreibt Multiprozessorsysteme und -verfahren. US 7 062 631 B1 beschreibt ein Verfahren und System zum Erzwingen konsistenter pro-physikalischer Seiten-Cachefähigkeitsattribute.
  • Das Problem mit einem konventionellen System ist aber, dass das System zwei Wahlmöglichkeiten hat, wenn eine Speicheranweisung eine gemeinsam genutzte Cachezeile trifft (engl. „hits“). Es kann entweder abwarten, dass alle Belauschungen abschließen, bevor es erlaubt, dass die Speicheranweisung abschließt, was die Parallelität der Maschine reduziert, oder es kann die gemeinsam genutzte Zeile hinauswerfen (engl. „evict“) und dann die Speicheranweisung zu einer ungültigen Zeile abschließen. Dies erlaubt mehr Parallelität, da der Prozessor mit der Ausführung von anderem Code fortsetzen kann, aber erlaubt nicht, dass irgendwelche spätere Zugriffe (engl. „loads“) die in der Zeile enthaltenen Daten sehen. Das Ausführen des Hinauswerfens fügt auch Latenz hinzu.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ausführungsforme der vorliegenden Erfindung verwenden einen spekulativen Caching-Mechanismus, wobei alle Cachezeilen mit einem MESI-Zustand (zum Beispiel modifiziert, exklusiv, gemeinsam genutzt oder ungültig) markiert werden, aber auch mit einer Mehrzahl von zusätzlichen Bits markiert werden, die sich auf den spekulativen transaktionalen Zustand der Zeile beziehen. Dies erlaubt, dass jede Transaktion atomar festgeschrieben (engl. „atomically committed) (zum Beispiel alles auf einmal gespeichert) oder zurückgerollt (zum Beispiel alle Änderungen verworfen) wird.
  • In einer Ausführungsform weist die vorliegende Erfindung ein computerimplementiertes Verfahren zur Akquirierung spekulativer Genehmigung (engl. „speculative permission acquisition“) für Zugriff auf einen gemeinsam genutzten (engl. „shared“) Speicher auf. Das Verfahren nach Anspruch 1 enthält unter anderem ein Erhalten eine Speicheranweisung (engl. „störe“) von einem Prozessorkern, eine gemeinsam genutzte Cachezeile zu modifizieren, und in Antwort auf das Erhalten der Speicheranweisung, ein Markieren der Cachezeile als spekulativ. Die Cachezeile wird dann gemäß der Speicheranweisung modifiziert. Nach Erhalt einer Modifikationsgenehmigung, kann die modifizierte Cachezeile anschließend festgeschrieben (engl „committed“) werden.
  • Das vorhergehende ist eine Zusammenfassung und enthält folglich zwangsläufig Simplifizierungen, Generalisierungen und Weglassungen von Details; Fachleute werden folglich erkennen, dass die Zusammenfassung nur illustrativ ist und nicht dazu beabsichtigt ist, in irgendeiner Weise limitierend zu sein. Andere Aspekte, erfinderische Merkmale und Vorteile der vorliegenden Erfindung, wie sie alleine von den Patentansprüchen definiert ist, werden in der nicht limitierende detaillierte Beschreibung, die unten gegeben wird, ersichtlich werden.
  • Figurenliste
  • Die vorliegende Erfindung wird in den Figuren der beigefügten Zeichnungen beispielhaft und nicht limitierend dargestellt, und in denen gleiche Bezugszeichen sich auf ähnliche Elemente beziehen.
    • Die 1 zeigt ein Diagramm von einer Cachemanagementeinheit gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 2 zeigt einen Cachezeile und eine Mehrzahl von spekulativen Zustandsbits gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 3 zeigt einen Prozess zum Upgraden einer Cachezeile gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 4 zeigt einen Prozess zum Upgraden einer Cachezeile, bei dem zwei Upgrades gleichzeitig ablaufen, gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 5 zeigt ein Flussdiagramm von einem Prozess zur Akquirierung spekulativer Genehmigungen gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 6 zeigt ein Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die 1 zeigt ein Diagramm von einer Cachemanagementeinheit gemäß einer Ausführungsform der vorliegenden Erfindung. Eine Cachemanagementeinheit 101 ist, wie in der 1 gezeigt, an einen L1-Cache 102 und einen L2-Cache 103 gekoppelt. Der L1-Cache ist an den Prozessorkern 102 gekoppelt zum kommunikativen Austauschen von Instruktionen und Daten, die die Cachezeilen aufweisen.
  • Ausführungsformen der vorliegenden Erfindung verwenden einen spekulativen Caching-Mechanismus, wobei alle Cachezeilen mit einem MESI-Zustand (zum Beispiel modifiziert, exklusiv, gemeinsam genutzt oder ungültig) markiert werden, aber auch mit einer Mehrzahl von zusätzlichen Bits markiert werden, die sich auf den spekulativen Transaktionszustand der Zeile beziehen. Dies erlaubt, dass jede Transaktion atomar festgeschrieben (zum Beispiel alles auf einmal gespeichert) oder zurückgerollt (zum Beispiel alle Änderungen verworfen) werden.
  • Die 2 zeigt eine Cachezeile 202 und eine Mehrzahl von spekulativen Zustandsbits gemäß einer Ausführungsform der vorliegenden Erfindung. In einer Ausführungsform ist dieses spekulative transaktionale Verhalten der Caches implementiert durch Hinzufügung eines spekulativen Bits, das bedeutet, dass die Zeile in der jetzigen Transaktionen modifiziert worden ist, und eines observierten Bits, das bedeutet, dass die Zeile in der jetzigen Transaktion gelesen worden ist, zu den Cachezeilen. Die spekulativen Zustandsbits (zum Beispiel spekulative und observierte Bits) werden nach einem Festschreiben (engl. „commitment“) oder Zurückrollen (engl. „rollback“) gelöscht, aber spekulative Zeilen werden auch nach einem Zurückrollen von modifizierten in ungültige umgewandelt. Jegliche modifizierte Daten, die die Transaktion vorausgehen, müssen zu einem Außen-Level-Cache (engl. „outerlevel cache“) als eine versionierte (engl. „versioned“) Zeile zurückgeschrieben werden. So lange sowohl spekulative als auch observierte Zeilen bis zum Ende der Transaktion im Cache verbleiben, wird die Transaktion folglich bei dem Sichtpunkt des Systems oder anderer Prozessoren in dem System atomar gesehen werden.
  • Wenn zum Beispiel eine transaktionale Speicheranweisung verfehlt (zum Beispiel oder eine ungültige Zeile trifft), helfen die spekulativen Zustandsbits zu sichern, dass die Transaktion nicht festgeschrieben wird, bevor exklusive Genehmigungen für die Zeile dadurch akquiriert worden sind, das Belauschungen zu jeglichen anderen Caches, die die Zeile enthalten mögen, abgeschlossen sind. Dies kann mit einer geringen Anzahl von Zustandsmaschinen oder speziellen Cachezeilen gemacht werden, die die Zeile als exklusiv aber nicht sichtbar für Belauschungen markieren. Diese Zustandsmaschinen behalten den Überblick über die Zeile bis alle Belauschungen zu anderen Caches abgeschlossen sind und markieren dann die Zeile als jetzt sichtbar für Belauschungen.
  • Folglich ist eine solche Ausführungsform konsistent mit der üblichen MESI-Regel, dass, wenn irgendeiner Cache eine Zeile als modifiziert oder exklusiv hat, dann müssen alle anderen gleichgestellten Caches die Zeile als ungültig haben. Gemäß Ausführungsformen der vorliegenden Erfindung, wenn eine Zeile modifiziert oder exklusiv und nicht sichtbar für Belauschungen ist, berechnet der Prozessor aber tatsächlich den Zustand, in dem die Zeile am Ende der Transaktion sein wird, statt die Zeile in der Tat als modifiziert oder exklusiv in dem vollen MESI-Protokoll zu markieren.
  • Zum Beispiel, wenn eine Belauschung eine observierte oder spekulative Zeile trifft, die für Belauschungen sichtbar ist, muss die jetzige Transaktion für diesen Prozessor entweder festgeschrieben oder zurückgerollt werden, bevor die Belauschung abgeschlossen werden kann. Im Allgemeinen bedeutet dies, dass Belauschungen Zurückrollungen verursachen, wenn sie observierte oder spekulative Zeilen treffen.
  • Ein spekulativer Caching-Mechanismus gemäß Ausführungsformen der vorliegenden Erfindung ist vorteilhafterweise im Stande, Begrenzungen eines konventionellen Systems zu vermeiden. Zum Beispiel, wenn eine transaktionale Speicheranweisung eine gemeinsam genutzte Zeile trifft, hatte das konventionelle System zwei Wahlmöglichkeiten: 1. Abwarten, dass alle Belauschungen abgeschlossen werden, bevor erlauben, dass die Speicheranweisung abgeschlossen wird, was die Parallelität der Maschine reduziert. 2. Hinauswerfen der gemeinsam genutzten Zeile, dann Abschließen der Speicheranweisung zu einer ungültigen Zeile. Dies erlaubt mir Parallelität, weil der Prozessor mit Ausführung von anderem Code fortsetzten kann, aber erlaubt keinen späteren Zugriffen, die in der Zeile enthaltenen Daten zu sehen. Das Ausführen des Hinauswerfens fügt auch Latenz hinzu.
  • Ein spekulativer Caching-Mechanismus gemäß Ausführungsformen der vorliegenden Erfindung stellt eine Anzahl von Vorteilen bereit. Die Hinzufügung von solchen Upgrade-Zustandsmaschinen stellt die Funktionalität bereit.
  • 1. Akquirierungen von Genehmigungen kann überlappt werden für mehrere Speicheranweisungen, die gemeinsam genutzte Zeilen verfehlten oder trafen, durch Erlauben, dass die Maschine weiterhin Code abschließt bis die nächste transaktionale Abgrenzung (engl. „transactional boundary“). Dies gibt uns die beste Leistung dadurch, dass nicht auf Genehmigungsanforderungen seriell gewartet wird. Wir können auch Zugriffsverfehlen (engl. „load misses“) aussenden oder andere Operationen langer Latenz starten, ohne zuerst auf alle Belauschungen zu warten. Zusätzlich, aufgrund des Vorauslaufen-Modus unseres Prozessors, können wir sogar über die Transaktionsabgrenzung hinaus sehen, um mehrere Verfehlen-Anforderungen zu enthüllen und an äußeren Caches zu senden.
  • 2. Stadt ein extra Bit für jede Cachezeile zu speichern, kann eine geringe Anzahl von Zustandsmaschinen verwaltet werden, die die Adressen verfolgen, die derzeit upgegradet werden. Diese Zustandsmaschinen müssen nicht verfolgen, wo sich die Zeile innerhalb des Caching-Systems befindet, was Speicherbedarf reduziert und bedeutet, dass die Upgrade-Zustandsmaschinen mit anderen Hinauswerfe-Zustandsmaschinen oder mit anderen Maschinen, die Cachezeilen bewegen, nicht ineinandergreifen müssen. Zusätzlich, wenn eine Upgradeanforderung an das äußere Speichersystem gesendet worden ist, besteht kein Bedürfnis mehr, die Adresse zu verfolgen. Dies erlaubt eine Erweiterung durch zwei Sätze von Zustandsmaschinen: eine, die Adressen aufbewahrt, die andere nur wartend auf antworte auf schon abgesandte Anforderungen. Der letztgenannte Satz von Zustandsmaschinen benötigt eine sehr geringe Speichermenge, was die Anzahl von Zustandselementen erheblich verkleinert, wenn mit einer Upgrade-Bit-pro-Cachezeile-Implementierung verglichen wird.
  • 3. Eine Speicheranweisung, die eine gemeinsam genutzte Zeile trifft, mag eine Zeile mit einer schon ausstehenden Anforderung treffen. Da Anforderungen exklusive Genehmigungen zurückgeben oder nicht zurückgeben könnten, erlaubt das Design der Zustandsmaschine abzuwarten, dass die vorhandene Anforderung abgeschlossen wird, bevor jegliche zusätzliche Anforderungen gemacht werden, was das Anforderungsprotokoll zwischen Caches simplifiziert und redundante Anforderungen reduziert, wobei Leistung verbessert wird.
  • 4. Jede Zustandsmaschine sichert, dass die jetzige Transaktion nicht abgeschlossen wird, ohne dass eine logische ODER-Operation über alle Upgrade-Bits des gesamten Cache verlangt wird. Da es sehr schwierig ist, eine ODER-Operation über viele Bits zu implementieren, verlangt die Zustandsmaschine-Lösung keine allzu schwierige Mechanismen, wie zum Beispiel eine schwierige Implementierung oder irgend eine Art anderer Maschinerie, die upgegradeten Zeilen in einen speziellen Aufbewahrungspuffer hinein bewegen würden, was Latenz hinzufügen würde.
  • 5. Ein inklusives Äußerer-Cache-Design mag tatsächlich nicht benötigen, Genehmigungen in allen Fällen zu akquirieren, bevor eine Antwort auf eine dieser Upgradeanforderungen gesendet wird. Wenn der äußere Cache weiß, dass die Zeile nicht mehr in dem inneren Cache vorhanden ist, dann kann er sofort antworten. Der innere Prozessor hat seine Transaktion schon zurückgerollt und die upgegradete Zeile ungültig markiert, so dass die Antwort nichts Schädliches macht. In Fällen, in denen Prozessoren um eine Zeile kämpfen und Schwierigkeiten haben, mit ihren spekulativen Transaktionen Fortschritte zu machen, könnte dies Leistung bemerkbar fördern. Diese und die anderen oben beschriebenen Vorteile sind in beispielhaften Operationen schematisiert, die durch 3 und 4 unten beschrieben werden.
  • Die 3 stellt einen Cachezeile-Upgradeprozess gemäß einer Ausführungsform der vorliegenden Erfindung dar. Wie in der 3 gezeigt, sind zwei gemeinsam genutzten Caches dargestellt, Cache A und Cache B. Die jeweilige Cache-MESI und Cache-Transaktional sind auch gezeigt. Die 3 zeigt, dass, wenn eine Transaktion festgeschrieben wird, das Upgrade erlaubt, dass die Speicheranweisung ausgeführt wird, durch Markieren der Cachezeile als spekulativ. Das „*“ bezeichnet Zeiten während der Transaktion, wo Festschreibungen nicht erlaubt sind.
  • Die 4 stellt einen Cachezeile-Upgradeprozess dar, bei dem zwei Upgrades gleichzeitig ablaufen, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in der 4 gezeigt, sind zwei gemeinsam genutzten Caches dargestellt, Cache A und Cache B. Die jeweilige Cache-MESI und Cache-Transaktional sind auch gezeigt. Zwei Upgrades sind gezeigt, indem sie die Transaktion abschließen. Wie mit 3, zeigt die 4, dass, wenn eine Transaktion festgeschrieben wird, das Upgrade erlaubt, dass die Speicheranweisung ausgeführt wird, durch Markieren der Cachezeile als spekulativ.
  • Die 5 zeigt ein Flussdiagramm von einem Prozess zur Akquirierung spekulativer Genehmigungen gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in der 5 gezeigt, zeigt der Prozess 500 die Übersichtsschritte des Prozesses zur Akquirierung spekulativer Genehmigungen für die Akquirierung von Genehmigungen zum Modifizieren von Cachezeilen.
  • Der Prozess 500 beginnt im Schritt 501, in dem eine Speicheranweisung von einem Prozessorkern erhalten wird, eine gemeinsam genutzte Cachezeile zu modifizieren. Im Schritt 502 wird die Cachezeile als spekulativ markiert. Im Schritt 503 wird die Cachezeile gemäß der Speicheranweisung modifiziert. Im Schritt 504, nach Erhalt einer Modifikationsgenehmigung, Festschreiben der modifizierte Cachezeile. Im Schritt 505, falls die Modifikationsgenehmigung nicht erhalten worden ist, Detektieren, ob eine Cachemanagementverletzung stattgefunden hat. Eine solche Cachemanagementverletzung kann zum Beispiel eine MESI-Verletzung sein. Im Schritt 506 initiiert der Prozess 500 eine Wiederherstellung nach Detektion einer Cachemanagementverletzung.
  • Computersvstemplattform
  • Die 6 zeigt ein Computersystem 600 gemäß einer Ausführungsform der vorliegenden Erfindung. Das Computersystem 600 zeigt die Bauteile eines einfachen Computersystems gemäß Ausführungsformen der vorliegenden Erfindung, das die Ausführungsplattform für bestimmte hardwarebasierte und softwarebasierte Funktionalität bereitstellt. Das Computersystem 600 weist generell zumindest eine CPU 601, einen Systemspeicher 615 und zumindest eine Grafikverarbeitungseinheit (GPU) 610 auf. Die CPU 601 kann an den Systemspeicher 615 über eine(n) Brückenbauteil/Speichersteuerung (nicht gezeigt) gekoppelt sein oder sie kann direkt an den Systemspeicher 615 über eine Speichersteuerung (nicht gezeigt), die intern in der CPU 601 ist, gekoppelt sein. Die GPU 610 ist an eine Anzeigevorrichtung 612 gekoppelt. Die GPU 610 ist gezeigt aufweisend einen Allokation/De-Allokations-Bauteil 620 für Just-in-Time-Registerallokation für einen Prozessor mit mehreren Threads. Eine Registerdatei 627 und ein beispielhaftes eine der Mehrzahl von Registern (zum Beispiel Register 625), dass die Registerdatei enthält, ist auch innerhalb der GPU 610 gezeigt. Eine oder mehrere zusätzliche GPUs können optional an das System 600 gekoppelt sein, um dessen Computerkraft weiter zu erhöhen. Die GPU(s) 610 ist (sind) an die CPU 601 und den Systemspeicher 615 gekoppelt. Das System 600 kann zum Beispiel als ein Desktopcomputersystem oder ein Servercomputersystem implementiert sein, das eine kraftvolle Mehrzweck-CPU 601 hat, die an eine dedizierte grafikrendernde GPU 610 gekoppelt ist. In einer solchen Ausführungsform können Bauteile inkludiert sein, die periphere Busse, spezialisierten Grafikspeicher, I/O-Vorrichtungen und ähnliches hinzufügen. In ähnlicher Weise kann das System 600 als eine Handheld-Vorrichtung (zum Beispiel Mobiltelefon etc.) oder als eine Set-Top-Videospielkonsole implementiert sein, wie zum Beispiel das Xbox®, das von Microsoft Corporation in Redmond, Washington erhältlich ist, oder die PlayStation3®, die von Sony Computer Entertainment Corporation in Tokio, Japan erhältlich ist.
  • Es sollte verstanden werden, dass die GPU 610 implementiert werden kann als ein diskretes Bauteil, als eine diskrete Grafikkarte, die zum Koppeln an das Computersystem 600 über einen Anschluss (zum Beispiel AGP-Slot, PCI-Express-Slot etc.) ausgelegt ist, als ein diskretes Integrierter-Schaltkreis-Die (das zum Beispiel direkt an einer Hauptplatine montiert ist) oder als eine integrierte GPU, die innerhalb des Integrierter-Schaltkreis-Die eines Computersystem-Chipsatzbauteils (nicht gezeigt) inkludiert ist. Zusätzlich kann ein lokaler Grafikspeicher 614 inkludiert sein für die GPU 610 zum Speichern von Grafikdaten hoher Bandweite.

Claims (9)

  1. In einem Prozessor, ein Verfahren (500) zur Akquirierung spekulativer Genehmigung für Zugriff auf einen gemeinsam genutzten Speicher, aufweisend: Erhalten eine Speicheranweisung von einem Prozessorkern, eine erste Cachezeile in einem ersten Cache zu modifizieren, wobei die erste Cachezeile in dem ersten Cache und eine zweite Cachezeile in einem zweiten Cache in einem gemeinsam genutzten Zustand sind und den gleichen Dateninhalt umfassen; in Antwort auf das Erhalten der Speicheranweisung, Markieren der ersten Cachezeile als spekulativ; Modifizieren der ersten Cachezeile gemäß der Speicheranweisung; und nach Erhalt einer Modifikationsgenehmigung, die auf der Grundlage eines aktuellen Zustands der zweiten Cachezeile in dem zweiten Cache bestimmt wird, Festschreiben der Speicheranweisung in der ersten Cachezeile in dem ersten Cache.
  2. Das Verfahren (500) gemäß Anspruch 1, wobei, wenn die Modifikationsgenehmigung nicht erhalten worden ist, eine Cachemanagementeinheit (101) detektiert, ob eine Cachemanagementverletzung stattgefunden hat.
  3. Das Verfahren (500) gemäß Anspruch 2, wobei eine Wiederherstellung initiiert wird nach Detektion einer Cachemanagementverletzung und wobei die Speicheranweisung in der ersten Cachezeile nicht festgeschrieben wird.
  4. Das Verfahren (500) gemäß einem beliebigen der Ansprüche 1 bis 3, wobei die erste Cachezeile von einer Mehrzahl von Kernen des Prozessors zugreifbar ist.
  5. Das Verfahren (500) gemäß einem beliebigen der Ansprüche 1 bis 4, wobei eine Mehrzahl von spekulativen Zustandsbits zu der ersten Cachezeile angehängt ist, um den spekulativen Zustand zu verfolgen.
  6. Das Verfahren (500) gemäß einem beliebigen der Ansprüche 1 bis 5, wobei die erste Cachezeile gemäß einem MESI-(modifiziert, exklusiv, gemeinsam genutzt oder ungültig)-Protokoll verwaltet wird.
  7. Das Verfahren (500) gemäß einem beliebigen der Ansprüche 1 bis 6, wobei das Modifizieren der ersten Cachezeile eine Transaktion aufweist und wobei eine Zustandsmaschine Belauschungen auf die erste Cachezeile überwacht bis Modifizierungsgenehmigung erhalten ist.
  8. Ein computerlesbares Speichermedium, das computerausführbare Instruktionen auf sich gespeichert hat, die, wenn sie von einem Computersystem (600) ausgeführt werden, bewirken, dass das Computersystem (600) ein Verfahren (500) zur Akquirierung spekulativer Genehmigung für Zugriff auf einen gemeinsam genutzten Speicher gemäß einem beliebigen der Ansprüche 1 bis 7 durchführt.
  9. Ein Computersystem (600) aufweisend: ein Computersystem (600), das einen Prozessor aufweist, der an ein computerlesbares Speichermedium gekoppelt ist und computerlesbarer Code ausführt, der bewirkt, dass das Computersystem (600) die Operationen durchführt, die in einem beliebigen der Ansprüche 1 bis 7 angeführt sind.
DE102013218370.4A 2012-09-14 2013-09-13 Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher Active DE102013218370B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/620,070 US9645929B2 (en) 2012-09-14 2012-09-14 Speculative permission acquisition for shared memory
US13/620,070 2012-09-14

Publications (2)

Publication Number Publication Date
DE102013218370A1 DE102013218370A1 (de) 2014-03-20
DE102013218370B4 true DE102013218370B4 (de) 2022-01-27

Family

ID=50181951

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013218370.4A Active DE102013218370B4 (de) 2012-09-14 2013-09-13 Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher

Country Status (3)

Country Link
US (1) US9645929B2 (de)
DE (1) DE102013218370B4 (de)
TW (1) TWI536167B (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US11169805B2 (en) 2018-04-30 2021-11-09 Hewlett Packard Enterprise Development Lp Dynamic processor cache to avoid speculative vulnerability

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050154831A1 (en) 2004-01-13 2005-07-14 Steely Simon C.Jr. Source request arbitration
US7062631B1 (en) 2003-07-17 2006-06-13 Transmeta Corporation Method and system for enforcing consistent per-physical page cacheability attributes
US7873793B1 (en) 2003-07-16 2011-01-18 Guillermo Rozas Supporting speculative modification in a data cache

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956753A (en) 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
GB2287111B (en) 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5487146A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
JPH0877347A (ja) 1994-03-08 1996-03-22 Texas Instr Inc <Ti> 画像/グラフィックス処理用のデータ処理装置およびその操作方法
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6519694B2 (en) 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US6981083B2 (en) 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7139876B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7010648B2 (en) 2003-09-08 2006-03-07 Sun Microsystems, Inc. Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
US7496732B2 (en) 2003-12-17 2009-02-24 Intel Corporation Method and apparatus for results speculation under run-ahead execution
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8190863B2 (en) 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7257699B2 (en) 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
US7194604B2 (en) 2004-08-26 2007-03-20 International Business Machines Corporation Address generation interlock resolution under runahead execution
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7421567B2 (en) 2004-12-17 2008-09-02 International Business Machines Corporation Using a modified value GPR to enhance lookahead prefetch
US20060149931A1 (en) 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US20060174228A1 (en) 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US20060277398A1 (en) 2005-06-03 2006-12-07 Intel Corporation Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US8035648B1 (en) 2006-05-19 2011-10-11 Nvidia Corporation Runahead execution for graphics processing units
US7895421B2 (en) 2007-07-12 2011-02-22 Globalfoundries Inc. Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
US20090327661A1 (en) 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US8145890B2 (en) 2009-02-12 2012-03-27 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state
US8719625B2 (en) 2010-07-22 2014-05-06 International Business Machines Corporation Method, apparatus and computer program for processing invalid data
US8627044B2 (en) 2010-10-06 2014-01-07 Oracle International Corporation Issuing instructions with unresolved data dependencies
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873793B1 (en) 2003-07-16 2011-01-18 Guillermo Rozas Supporting speculative modification in a data cache
US7062631B1 (en) 2003-07-17 2006-06-13 Transmeta Corporation Method and system for enforcing consistent per-physical page cacheability attributes
US20050154831A1 (en) 2004-01-13 2005-07-14 Steely Simon C.Jr. Source request arbitration

Also Published As

Publication number Publication date
DE102013218370A1 (de) 2014-03-20
US9645929B2 (en) 2017-05-09
US20140082291A1 (en) 2014-03-20
TWI536167B (zh) 2016-06-01
TW201439765A (zh) 2014-10-16

Similar Documents

Publication Publication Date Title
DE102013218370B4 (de) Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112007003801B3 (de) Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE102018004727B4 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE68917325T2 (de) Verfahren und Vorrichtung zum Schreiben gegenseitiger verriegelter Variablen in einen integrierten Cachespeicher.
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE10232926B4 (de) Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE4218003A1 (de) Sekundaeres cache-speichersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final