DE102013114256A1 - Systeme und Verfahren zur Beibehaltung der Informationskohärenz - Google Patents

Systeme und Verfahren zur Beibehaltung der Informationskohärenz Download PDF

Info

Publication number
DE102013114256A1
DE102013114256A1 DE102013114256.7A DE102013114256A DE102013114256A1 DE 102013114256 A1 DE102013114256 A1 DE 102013114256A1 DE 102013114256 A DE102013114256 A DE 102013114256A DE 102013114256 A1 DE102013114256 A1 DE 102013114256A1
Authority
DE
Germany
Prior art keywords
memory
cache
level
state
information
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.)
Granted
Application number
DE102013114256.7A
Other languages
English (en)
Other versions
DE102013114256B4 (de
Inventor
Anurag Chaudhary
Guillermo Juan Rozas
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 DE102013114256A1 publication Critical patent/DE102013114256A1/de
Application granted granted Critical
Publication of DE102013114256B4 publication Critical patent/DE102013114256B4/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0817Cache consistency protocols using directory methods
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

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

Es werden Systeme und Verfahren zur Beibehaltung der Kohärenz bereitgestellt. Die Systeme und Verfahren umfassen die Verwendung mehrerer Ansätze oder Protokolle zur Verfolgung von Informationszuständen in unterschiedlichen Direktzugriffsspeicherebenen oder Speicherebenen. In einer Ausführungsform kann der erste Ansatz zur Kohärenzbeibehaltung (beispielsweise ähnlich einem MESI-Protokoll, usw.) in einer Speicherebene implementiert werden, während ein zweiter Ansatz zur Kohärenzbeibehaltung (beispielsweise einem MOESI-Protokoll, usw.) in einer weiteren Speicherebene implementiert werden kann. Information in einer speziellen Speicherebene oder Schicht kann durch eine Gruppe lokaler Zustandsangaben und eine Gruppe wesentlicher Zustandsangaben verfolgt werden. Die wesentliche Zustandsangabe kann „extern” von einem Speicherschichtverzeichnis oder Ebenenverzeichnis (beispielsweise Ebenenverzeichnis einer weiteren Cache-Ebene, in einer zentralen Stelle zwischen Cache-Ebenen, usw.) verfolgt werden. Eine Speicherebene kann Operationen auf der Grundlage der lokalen Zustandsangaben steuern, und eine weitere Speicherebene kann Operationen auf der Grundlage zumindest zum Teil einer wesentlichen Zustandsangabe steuern.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Informationsspeicherung. Insbesondere betrifft die vorliegende Erfindung ein System und Verfahren zur Verfolgung von Cache-Operationen.
  • HINTERGRUND DER ERFINDUNG
  • Elektronische Systeme und Schaltungen haben wesentlich zur Entwicklung der modernen Gesellschaft beigetragen und werden in einer Reihe von Anwendungen eingesetzt, um vorteilhafte Ergebnisse zu erzielen. Zahlreiche elektronische Techniken, etwa digitale Computer, Recheneinrichtungen, Audiogeräte, Videoanlagen und Telefonsysteme haben eine erhöhte Produktivität und geringere Kosten bei der Analyse und Weiterverbreitung von Daten in vielen Bereichen der Geschäftswelt, der Wissenschaft, der Erziehung und der Unterhaltung ermöglicht. Diese Aktivitäten beinhalten häufig eine Speicherung von Information. Die Art, in der die elektronischen Geräte Speicheroperationen ausführen, kann einen wesentlichen Einfluss auf das Leistungsverhalten und die Endergebnisse haben. Jedoch haben traditionelle Versuche für die Informationsspeicherung Beschränkungen und können sehr komplex und kompliziert sein.
  • Viele herkömmliche Vorgehensweisen bei der Speicherung versuchen, Ebenen oder Schichten an Speicher zu nutzen, wozu Cache-Speicher, Systemspeicher und Massenspeicher gehören, und bei der Nutzung mehrerer Ebenen ist es wichtig, die Informationskohärenz bzw. den Informationszusammenhang beizubehalten. Es gibt viele herkömmliche Vorgehensweisen für Protokolle für die Cache-Kohärenz. Einige übliche Protokolle für die Cache-Kohärenz sind um einfache Zustände herum, in denen Cache-Zeilen sein können, und die Übergänge zwischen diesen Zuständen aufgebaut.
  • In einem herkömmlichen MESI-Kohärenzprotokoll können Cache-Zeilen in einem der folgenden Zustände sein: modifiziert, exklusiv, gemeinsam benutzt oder ungültig. In einem Zustand Modifiziert ist die Zeile exklusiv für einen speziellen Cache-Speicher und ist modifiziert worden, seit sie abgeholt wurde. Bei einer Verdrängung muss die Cache-Zeile an eine Position (beispielsweise DRAM) zurück geschrieben werden. In einem Zustand Exklusiv sind die Cache-Zeilen exklusiv für den Cache-Speicher, der diesem Zustand hat und diese können danach modifiziert werden. Wenn es keine modifizierten Daten gibt, muss bei einer Verdrängung nichts zurück geschrieben werden. In einem Zustand Gemeinsam Benutzt enthalten die Cache-Zeilen Daten, die andere Agenten haben können, und wenn dies der Fall ist, sind dies die gleichen Daten. Wenn es keine modifizierten Daten gibt, muss bei einer Verdrängung nicht zurück geschrieben werden. In einem Zustand Ungültig enthält die Cache-Zeile keine gültigen Daten und die Zeile kann nach Bedarf erneut zugewiesen werden.
  • Es gibt auch ein herkömmliches MOESI-Kohärenzprotokoll. Zusätzlich zu den MESI-Zuständen führt das MOESI-Protokoll den „gehört bzw. im Besitz von” Zustand, der ähnlich zu dem Zustand Gemeinsam Benutzt ist mit der Ausnahme, dass die Zeile an die Heimposition bei Verdrängung zurück geschrieben werden muss. Der Zustand Gehört entsteht, wenn eine Zeile in einem gewissen Cache-Speicher modifiziert wird, und ein weiterer Agent anfordert, dass diese gemeinsam benutzt wird. In einem MESI-System sollte die Zeile in den Hintergrundspeicher zurück geschrieben werden und sollte gleichzeitig dem Agenten zugeführt werden, der diese als gemeinsam benutzt anfordert, und es sollte ein Übergang von dem modifizierten Zustand in Zustand gemeinsam benutzt in dem ursprünglichen Cache-Speicher vollzogen werden. In einem MOESI-System wird die Zeile nicht zurück geschrieben, sie wird lediglich dem Agenten zugeleitet, der sie als gemeinsam benutzt anfordert, aber es wird ein Übergang zu gehört vollzogen, so dass der ursprüngliche Agent sich daran erinnert, dass sie im Wesentlichen zurück zu schreiben ist, obwohl die Zeile nicht länger beschrieben werden darf, das sie (möglicherweise) mit anderen Agenten gemeinsam benutzt wird.
  • Jedes herkömmliche Kohärenzprotokoll hat oft Stärken und Schwächen im Vergleich zu einem weiteren Kohärenzprotokoll und herkömmliche Vorgehensweisen der Verwendung eines Kohärenzprotokolls sind in der Gesamteffizienz beschränkt. Das MESI-Protokoll ist für gewöhnlich einfacher zu implementieren, da ein Agent nur eine Zeile zurück schreiben muss, wenn er sie modifiziert hat (wie dies durch ihn angegeben wird, wenn er in dem M-Zustand ist). Wenn eine Zeile modifiziert wird, kann sie auch beschrieben werden, wenn sichergestellt ist, dass die Zeile exklusiv ist. In dem MOESI-Protokoll muss ein Agent eine Zeile zurück schreiben, wenn die Zeile modifiziert worden ist, selbst wenn die Zeile nicht beschreibbar ist, da die Zeile nunmehr in dem Zustand Gehört ist. Somit beinhaltet das MOESI-Protokoll eine Unterscheidung eines Zustands (beispielsweise gehört, usw.), der zurück geschrieben werden muss, selbst wenn keine neuen Schreiboperationen für diesen Zustand akzeptiert werden können. Es gibt mehr Varianten für beide Protokolle.
  • Das MOESI-Protokoll kann vermeiden, dass in einigen Situationen soviel DRAM-Bandbreite wie bei dem MESI-Protokoll verbraucht wird. Wenn beispielsweise zwei Agenten kommunizieren, wobei einer davon die Daten gelegentlich schreibt und der andere lediglich nach einer aktualisierten Kopie nachfragt, beinhaltet das MOESI-Protokoll typischerweise weniger Rückschreiboperationen und verbraucht weniger Bandbreite in dem DRAM als das MESI-Protokoll. Typischerweise verursacht in dem MESI-Protokoll jede derartige Anforderung für eine aktualisierte Kopie, dass die Zeile in den DRAM zurück geschrieben wird. In dem MOESI-Protokoll bewirkt für gewöhnlich nur die endgültige Verdrängung der Zeile durch einen Agenten, der sie modifiziert hat, dass DRAM-Bandbreite verschwendet wird.
  • ÜBERBLICK
  • Es werden Systeme und Verfahren zur Beibehaltung der Kohärenz bereitgestellt. Die Systeme und Verfahren beinhalten die Verwendung von Ansätzen zur Verfolgung mehrerer Informationszustände oder Protokolle für unterschiedliche Direktzugriffsspeicherebenen oder Speicherebenen. In einer Ausführungsform kann ein erster Ansatz für die Beibehaltung einer Kohärenz (beispielsweise ähnlich zu einem MESI-Protokoll usw.) in einer Speicherebene implementiert werden, während ein zweiter Ansatz zur Beibehaltung der Kohärenz (beispielsweise ähnlich zu einem MOESI-Protokoll usw.) in einer weiteren Speicherebene implementiert werden kann. Information in einer speziellen Speicherebene oder Schicht kann durch eine Gruppe lokaler Zustandsangaben und eine Gruppe wesentlicher Zustandsangaben verfolgt werden. Die wesentliche Zustandsangabe kann „extern” von einem Speicherschicht- oder Speicherebenenverzeichnis (beispielsweise in einem Verzeichnis einer weiteren Cache-Ebene, in einem Verteiler, einer zentralen Stelle oder einem Netzknoten zwischen Cache-Ebenen, usw.) verfolgt werden. Eine Speicherebene kann Operationen auf der Grundlage der lokalen Zustandsangaben steuern, und eine weitere Speicherebene kann Operationen auf der Grundlage zumindest teilweise der wesentlichen Zustandsangaben steuern.
  • In einer Ausführungsform umfasst ein System: eine Speicherkomponente einer ersten Ebene, in welcher Speicherkomponente eine Speicherzustandsangabe extern verfolgt wird; und eine Speicherkomponente einer zweiten Ebene zum Empfang von Information aus der Speicherkomponente der ersten Ebene und zum Einwirken auf die Informationen auf der Grundlage zumindest eines Teils des Speicherzustandsinformation, die mit der Speicherkomponente der ersten Ebene verknüpft ist. In einer anschaulichen Implementierung oder Realisierung fast die extern verfolgte Information eine zusätzliche Information (beispielsweise eine detailliertere Informationen, eine verfeinerte Information usw.) als das, was die Verzeichnisse der ersten Ebene ansonsten tatsächlich angeben (beispielsweise Gehört im Vergleich zu Gemeinsam Benutzt). Der Zustand der Information kann ein Zustand einer Cache-Zeile sein und der Speicherzustand der Cache-Zeile kann von der Speicherkomponente der zweiten Ebene verfolgt werden. Der Speicherzustand der Cache-Zeile kann von einem kohärenten Knoten, einem Verteiler oder einer zentralen Stelle verfolgt werden. Die Speicherkomponente der ersten Ebene kann ein L2-Cache-Speicher sein und die Speicherkomponente der zweiten Ebene kann ein L3-Cache-Speicher sein. Der Speicherzustand der Cache-Zeile in dem L2-Cache-Speicher kann von dem L3-Cache-Speicher verfolgt werden, oder die Cache-Zeile kann von einer kohärenten zentralen Stelle verfolgt werden. Der L2-Cache-Speicher kann die Cache-Zeile als in einem MESI-Zustand erachten und der L3 kann tatsächlich verfolgen, welche Zeilen tatsächlich in den Hintergrundspeicher zurück geschrieben worden sind. In einer Ausführungsform führt eine Verdrängung einer Cache-Zeile aus dem L2-Cache-Speicher in den L3-Cache-Speicher tatsächlich dazu, dass die Cache-Zeile zurück in den Hintergrundspeicher geschrieben wird, wenn dies geeignet ist, und die Cache-Zeile wird nicht weiterverbreitet, wenn dies nicht geeignet ist. Der L3 kann zusätzliche Zustände für jede Cache-Zeile verfolgen, wobei die zusätzlichen Zustände anzeigen, ob eine Zeile verschmutzt bzw. geändert ist, und das L3-Verzeichnis gibt an, dass die Zeile zurück zu schreiben ist.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • Die begleitenden Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil davon bilden, zeigen Ausführungsformen der Erfindung anhand von Beispielen und nicht als Einschränkung. Die Zeichnungen, auf die in dieser Beschreibung verwiesen wird, sollten als nicht maßstabsgetreu betrachtet werden, außer wenn dies explizit angegeben ist.
  • 1 ist eine Blockansicht einer anschaulichen Speicherarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Flussdiagramm eines anschaulichen Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist eine Blockansicht einer anschaulichen Speicherarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist eine Blockansicht eines Computersystems, d. h., eine Ausführungsform eines Computersystems, in welchem Ausführungsformen der vorliegenden Erfindung realisiert werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird nun auf die bevorzugten Ausführungsformen der Erfindung detailliert verwiesen, wovon Beispiele in den begleitenden Zeichnungen dargestellt sind. Obwohl die Erfindung in Verbindung mit den bevorzugten Ausführungsformen beschrieben ist, ist zu beachten, dass diese nicht als Einschränkung der Erfindung auf diese Ausführungsformen zu betrachten sind. Vielmehr beabsichtigt die Erfindung, andere Alternativen, Modifizierungen und Äquivalente abzudecken, die in dem Grundgedanken und dem Schutzbereich der Erfindung, wie sie durch die angefügten Patentansprüche definiert ist, enthalten sein können. Ferner sind in der folgenden detaillierten Beschreibung der vorliegenden Erfindung zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung auch ohne diese speziellen Details praktiziert werden kann. In anderen Fällen sind gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht detailliert beschrieben worden, um nicht in unnötiger Weise Aspekte der vorliegenden Erfindung zu verdunkeln.
  • Die vorliegenden Systeme und Verfahren können eine effiziente Informationsspeicherung und Verfolgungsoperationen ermöglichen. Die Systeme und Verfahren umfassen die Verwendung mehrerer Verfolgungsansätze für einen Informationszustand oder mehrere Protokolle in unterschiedlichen Direktzugriffsspeicherebenen oder Speicherebenen. Information, die in einer speziellen Speicherebene oder Schicht gespeichert ist (beispielsweise L2, L3, Hauptspeicher usw.) kann mit mehreren unterschiedlichen Zustandsangaben verfolgt werden, und eine Verwendung unterschiedlicher Gruppen an Zustandsangaben kann die Realisierung unterschiedlicher Protokolle für die Beibehaltung der Kohärenz in unterschiedlichen Speicherebenen oder Direktzugriffsspeicherebenen ermöglichen. In einer anschaulichen Realisierung kann ein erster Ansatz zur Kohärenzbeibehaltung (beispielsweise ähnlich zu einem MESI-Protokoll usw.) in einer Speicherebene realisiert werden, während ein zweiter Ansatz zur Beibehaltung der Kohärenz (beispielsweise einem MOESI-Protokoll usw.) in einer weiteren Speicherebene realisiert werden kann.
  • In einer Ausführungsform wird Information in einer speziellen Speicherebene oder Schicht durch eine Gruppe lokaler Zustandsangaben und eine Gruppe wesentlicher Zustandsangaben verfolgt. Die wesentliche Zustandsangabe kann „extern” von einem Speicherschicht- oder Ebenenverzeichnis (beispielsweise in einem Verzeichnis einer weiteren Cache-Ebene, in einem Knoten zwischen Cache-Ebenen, usw.) verfolgt werden. In einer Ausführungsform ermöglicht die lokale Zustandsangabe eine einfachere Implementierung (beispielsweise MESI-Protokoll, vereinfachte Steuerung, usw.) auf lokaler Speicherebene, während die wesentliche Zustandsangabe eine Implementierung mit höherer Leistung (beispielsweise MOESI-Protokoll, bessere Bandbreite usw.) auf einer weiteren Speicherebene ermöglicht. Die wesentlichen Zustandsangaben können mit einer vollständigen Kohärenzzustandsangabe von Information in einer speziellen Ebene (beispielsweise sauber gemeinsam benutzt, verschmutzt gemeinsam benutzt, usw.) verknüpft sein, und die lokalen Zustandsangaben können mit zweckdienlichen Zustandsangaben in dieser speziellen Ebene (beispielsweise gemeinsam benutzt, modifiziert, usw.) verknüpft sein. Weitere Information über die wesentliche Zustandsangaben zur externen Verfolgung und die lokale Zustandsangaben zur Verfolgung wird in den folgenden Abschnitten der Beschreibung angegeben.
  • 1 ist eine Blockansicht einer anschaulichen Speicherarchitektur 100 gemäß einer Ausführungsform der vorliegenden Erfindung. In einer Ausführungsform umfasst die Speicherarchitektur 100 ein Speichersystem zur externen Verfolgung eines Informationszustands. Die Speicherarchitektur 100 umfasst Ebenen 105, 110, 120, 130, 140 und 150. Die Ebenen 105, 110, 120, 130, 140 und 150 sind Speicherebenen. In einer anschaulichen Realisierung kann die Speicherebene 105 als eine Verarbeitungsebene (beispielsweise mit Registern, Flipflops, usw.) betrachtet werden, die Speicherebenen 110, 120 und 130 können als eine Cache-Ebene (beispielsweise mit L1-Cache-Speicher, L2-Cache-Speicher, L3-Cache-Speicher usw.) betrachtet werden, die Speicherebene 140 kann als ein Hintergrundspeicher oder eine Hauptspeicherebene betrachtet werden (beispielsweise RAM, DRAM, usw.), und die Speicherebene 150 kann als ein Massenspeicher (beispielsweise Festplatte, CD, usw.) betrachtet werden. Die Speicherebenen 105, 110, 120, 130, 140 umfassen Speicherkomponenten 111, 121, 131, 141 und 151. In einer Ausführungsform umfasst die Speicherarchitektur 100 optional eine Knotenkomponente 170.
  • Information, die in den Komponenten der Speicherarchitektur 100 gespeichert ist, kann mit Zustandsangaben verknüpft sein. Eine Zustandsangaben kann eine Angabe des Status der Information in einer Speicherkomponente (beispielsweise gemeinsam benutzt, modifiziert, verschmutzt, usw.) beinhalten. Die Statusangabe kann verwendet werden, um Aktionen oder eine Verarbeitung auszulösen oder zu koordinieren, die in Bezug zu der Information auszuführen sind (beispielsweise Zuweisung eines Speicherplatzes, Zurückschreiben, nicht zuweisen, nicht Zurückschreiben, usw.). In einer anschaulichen Realisierung ist die Information in einer Speicherkomponente (beispielsweise Cache-Speicher, Speicher, usw.) mit einer wesentlichen Zustandsangabe (beispielsweise besessen oder gehörend, sauber, schmutzig, modifiziert, usw.) verknüpft, die extern verfolgt wird. Information in der Speicherkomponente kann auch mit einer lokalen Zustandsangabe (beispielsweise gemeinsam benutzt, modifiziert, usw.) verknüpft sein, die von einem lokalen Verzeichnis verfolgt wird.
  • In einer Ausführungsform umfasst die Speicherebene 110 die Speicherkomponente 111, und eine Angabe des wesentlichen Zustands der Information, die mit der Speicherkomponente 111 verknüpft ist, wird extern zu der Speicherkomponente 111 verfolgt. Eine Angabe des wesentlichen Zustands der Information, der mit der Speicherkomponente 111 verknüpft ist, kann von Komponenten in der Speicherebene 120 verfolgt werden. In einer anschaulichen Realisierung wird der wesentliche Zustand der Information, der mit der Speicherkomponente 111 verknüpft ist, von einem Knoten (beispielsweise ähnlich zu der Knotenkomponente 170, usw.) verfolgt. Zu beachten ist, dass ein lokaler Zustand an Information von der Speicherkomponente 111 verfolgt werden kann, und dieser kann unterschiedlich sein zu dem wesentlichen Zustand von Information, der mit der Speicherkomponente 111 verknüpft ist und der extern zu der Speicherkomponente 111 verfolgt wird.
  • Aktionen oder Operationen in dem System 100 können auf Speicherzuständen beruhen. In einer Ausführungsform schreibt die Speicherkomponente 111 Information in diversen lokalen Zuständen in die Ebene 120 zurück. Jedoch wird der Speicherplatz für die zurück geschriebene Information in der Speicherkomponente 121 auf der Grundlage der Angabe des wesentlichen Zustands der außerhalb der Speicherkomponente 111 verfolgt wird, zugewiesen. In einer Ausführungsform kann ein wesentlicher Zustand, der extern zu der Speicherkomponente 111 verfolgt wird, angewendet werden, um einen lokalen Speicherzustand für die Ebene 120 zu erstellen, und Information kann ebenfalls von der Speicherebene 120 entsprechend in die Speicherebene 130 zurück geschrieben werden. In einer anschaulichen Realisierung kann Information, die in der Ebene 110 als lokal gemeinsam benutzt verfolgt wird, extern durch die Ebene 120 als „gehörend” verfolgt werden und in die Ebene 130 entsprechend der Zustandsangabe „gehörend” zurück geschrieben werden. Zu beachten ist, dass eine Rückschreibung von einer Ebene zu einer weiteren Ebene während diverser Zeiten auftreten kann (beispielsweise zurück geschrieben, wie in der Ebene 120 zugewiesen wurde, zurück geschrieben bei Verdrängung aus der Ebene 120, usw.).
  • 2 ist ein Flussdiagramm eines anschaulichen Verfahrens 200 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Im Block 210 werden eine wesentliche Speicherdatenangabe und eine lokale Speicherdatenangabe verfolgt. In einer Ausführungsform wird Information, die mit einer Speicherkomponente verknüpft ist, in einer Speicherebene extern zu dem Speicherebenenverzeichnis mit dem lokalen Zustand verfolgt. In einer Ausführungsform können die Speicherebenen Cache-Ebenen sein und ein lokaler Speicherzustand einer Cache-Zeile in einer Speicherkomponente kann von der Speicherkomponente als ein Zustand verfolgt werden (beispielsweise gemeinsam benutzt, modifiziert, usw.), und der wesentliche Zustand der Cache-Zeile kann extern als ein ähnlicher Status oder ein weiterer Status (beispielsweise gehörend, schmutzig, usw.) verfolgt werden.
  • Im Block 220 wird auf Information in der Speicherkomponente der einen Ebene auf der einen Speicherebene auf der Grundlage einer lokalen Speicherzustandsangabe eingewirkt bzw. verarbeitet. In einer Ausführungsform schreibt die Speicherkomponente der einen Ebene Information in mehreren Speicherzuständen zurück. In einer anschaulichen Realisierung kann zusätzlich zur Information in einem modifizierten Zustand auch Information in einem gemeinsam benutzten Zustand und einem exklusiven Zustand zurück in eine andere Speicherkomponente in einer anderen Speicherebene geschrieben werden.
  • Im Block 230 wird auf die Information, die in der anderen Speicherkomponente empfangen wird, auf der Grundlage zumindest teilweise des wesentlichen Speicherzustands der Information eingewirkt. In einer Ausführungsform empfängt die Speicherkomponente der anderen Ebene Rückschreiboperationen aus der Speicherkomponente der einen Ebene und wirkt auf die Information ein, wozu das Verwerfen irrelevanter Rückschreiboperationen gehört, auf der Grundlage des wesentlichen Speicherzustands, und das Zuweisen von Speicherplatz für verbleibende Information gehören. In einer anschaulichen Implementierung erzeugt die Speicherkomponente der anderen Ebene ihre eigene lokale Zustandsangabe auf der Grundlage zumindest teilweise einer wesentlichen Zustandsangabe und wirkt auf die Informationen auf der Grundlage ihrer eigenen lokale Zustandsangabe ein (beispielsweise leitet Rückschreiboperationen zu einer noch weiteren Speicherebene weiter, usw.).
  • In einer Ausführungsform enthält eine Speicherzustandsangabe, die extern verfolgt wird, eine andere Informationen im Vergleich zu einer Speicherzustandsangabe, die ansonsten eine intern verfolgte Angabe angeben würde. In einer anschaulichen Implementierung enthält die extern verfolgte Information zusätzliche Information (beispielsweise detailliertere Informationen, verfeinerte Information usw.), als von den Verzeichnissen auf der ersten Ebene ansonsten angegeben würde (beispielsweise gehörend gegenüber gemeinsam benutzt). Die extern verfolgte Information kann Information enthalten, die durch die Kombination der Information über mehrere erste Ebenen erstellt wird, und kann ein Beibehalten einer Historie beinhalten, wie die ersten Ebenen zu dem aktuellen Zustand gekommen sind. Ein konventioneller Ansatz für eine erste Ebene kann typischerweise nicht in unaufwändiger Weise diese zusätzliche Information verfolgen, da nicht bekannt ist, was die anderen ersten Ebenen beabsichtigen, oder was sie bislang getan haben. Ein erster Ansatz für die Kohärenzbeibehaltung (beispielsweise ähnlich zu MESI, usw.) kann in der Speicherkomponente der ersten Ebene realisiert werden, während die extern verfolgte Speicherzustandsangabe mit einem zweiten Ansatz zur Beibehaltung der Kohärenz kompatibel ist (beispielsweise ähnlich zu MOESI, usw.), und der zweite Ansatz zur Kohärenzbeibehaltung wird in der Speicherkomponente der zweiten Ebene realisiert.
  • Zu beachten ist, dass die angegebenen Systeme und Verfahren effizient in einer Vielzahl von Konfigurationen und Umgebungen realisiert werden können. Es können viele gleichartige Speicherkomponenten in einer ähnlichen Speicherebene einer Speicherarchitektur vorhanden sein. Die Verfolgung eines wesentlichen Zustands kann zumindest teilweise durch eine Komponente der nächsten Ebene mit Rückschreibung und Schreibzuweisung exklusiv realisiert werden. Es kann unterschiedliche Arten von Kohärenzprotokollen geben, die in unterschiedlichen Speicherebenen realisiert sind. In einer anschaulichen Realisierung kann ein erstes Protokoll ähnlich einem MESI-Kohärenzprotokoll sein, mit Ausnahme einer modifiziert zu Rückschreibinformation in mehreren unterschiedlichen Zuständen (beispielsweise gemeinsam benutzt und exklusiv zusätzlich zu modifiziert, usw.) bei Verdrängung, und das zweite Protokoll kann ähnlich zu einem MOESI-Kohärenzprotokoll sein. Die Speicherkomponente kann eine Cache-Komponente in einer Cache-Speicher-Architekturebene sein.
  • 3 ist eine Blockansicht einer anschaulichen Speicherarchitektur 300 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Speicherarchitektur 300 umfasst Verarbeitungskomponenten 310 (beispielsweise Register, Flipflops, usw.), einen Cache-Speicher der Ebene eins (L1) 320, einen Cache-Speicher der Ebene zwei (L2) 330, einen Cache-Speicher der Ebene drei (L3) 340, einen Hauptspeicher 350 und einen optionalen Massenspeicher 370. Die Verarbeitungskomponente 310 ist mit dem L1-Cache-Speicher 320 verbunden, der mit dem L2 verbunden ist, der wiederum mit dem L3-Cache-Speicher 340 verbunden ist. Der L3-Cache-Speicher ist mit dem Hauptspeicher 350 verbunden, der wiederum mit dem optionalen Massenspeicher 370 verbunden sein kann. In einer Ausführungsform kann der Cache-Speicher der Ebene eins 320 eine Cache-Steuerung der Ebene eins 321 enthalten, der Cache-Speicher der Ebene zwei 330 kann eine Cache-Steuerung der Ebene zwei 331 enthalten, der Cache-Speicher der Ebene drei 340 kann eine Cache-Steuerung der Ebene drei 341 enthalten. Die Cache-Steuerungen können Verzeichnisse zur Verfolgung von Statusangaben enthalten.
  • Die Komponenten des Systems 300 können gemeinsam zusammenwirken, so dass mehrere Speicherebenen realisiert werden. In einer Ausführungsform umfasst ein L3-Cache-Speicher eine Zeile, wenn diese nicht in einem L2-Cache-Speicher enthalten ist. Wenn ein L2-Cache-Speicher eine Zeile anfordert, kann das Ergebnis ein Treffer oder ein Fehltreffer sein. Wenn das Ergebnis ein Treffer in dem L3-Cache-Speicher ist, wird die Zeile an den L2-Cache-Speicher gesendet und in dem L3-Cache-Speicher auf ungültig gesetzt. Wenn das Ergebnis ein Fehltreffer in dem L3-Cache-Speicher ist, wird die Anforderung an den Speicher gesendet, und die Antwort wird an den L2-Cache-Speicher gesendet, ohne dass eine Zeile in dem L3-Cache-Speicher reserviert wird. Zeilen in dem L3-Cache-Speicher werden bei Verdrängung aus dem L2-Cache-Speicher zugewiesen. Der L2-Cache-Speicher schreibt Cache-Zeilen in diversen Zuständen zurück (beispielsweise modifiziert, gemeinsam benutzt, exklusiv, usw.), was die Zuweisung von unmodifizierten (beispielsweise nurlesen, usw.) Daten ermöglicht, die ansonsten in dem L3-Cache-Speicher nicht zugewiesen würden und ansonsten aus dem Speicher angefordert werden müssten.
  • In einer Ausführungsform weist der L3-Cache-Speicher die Zeile zu, wenn der L3-Cache-Speicher eine Verdrängung aus dem L2-Cache-Speicher empfängt (die beispielsweise Information darüber enthält, ob die Zeile von dem L2-Cache-Speicher modifiziert wurde oder nicht, usw.). Der L3-Cache-Speicher kann eine Zeile bereits in dem L3-Cache-Speicher ersetzen. Die ersetzte Zeile kann in eine andere Speicherebene verdrängt werden (beispielsweise DRAM, Hintergrundspeicher, usw.), wenn dies geeignet ist (beispielsweise modifiziert, gehörend, usw.).
  • In einer anschaulichen Implementierung ermöglicht die externe Verfolgung des wesentlichen Zustands die Bewahrung einer Exklusiv-Eigenschaft. In einer Ausführungsform kann der L3-Cache-Speicher den Zeilenzustand der Zeilen in diversen L2-Cache-Speichern verfolgen. In einer anschaulichen Realisierung wird, wenn eine Zeile in mehreren L2-Cache-Speichern gemeinsam benutzt wird, jede bis auf die letzte Verdrängung aus einem L2-Cache-Speicher von dem L3-Cache-Speicher ignoriert. Dies kann ermöglichen, dass eine Duplizierung der Zeile zwischen dem L3-Cache-Speicher und den verbleibenden L2-Cache-Speichern mit der Zeile vermieden werden kann, was ansonsten auftreten könnte, wenn eine Zeile in dem L3-Cache-Speicher zugewiesen wird, wenn jeder der L2-Cache-Speicher die „gemeinsam benutzte” Zeile verdrängt. Ohne die Merkmale der Vermeidung einer Duplizierung in dem vorliegenden System kann eine Duplizierung ansonsten dazu führen, dass der L3-Cache-Speicher nicht mehr exklusiv in Bezug auf die L2-Cache-Speicher ist und auch wirksam die Kapazität des L3-Cache-Speichers beeinträchtigt.
  • In einer Ausführungsform hat der L3 Verzeichnisse, die den Zustand der Zeile in den diversen L2-Cache-Speichern verfolgen, und der L3-Cache-Speicher implementiert einen Zustand ”Gehörend” oder ”Gehört” (beispielsweise ähnlich zu MOESI-Protokollen, usw.), ohne dass die L2-Cache-Speicher (beispielsweise ähnlich zu MESI-Protokollen, usw.) über die Modifikation hinaus modifiziert werden, dass die L2-Cache-Speicher saubere Zeilen an den L3-Cache-Speicher zur Zuweisung in dem L3-Cache-Speicher zu verdrängen haben. Die duplizierten Verzeichnisse für die L2-Cache-Speicher in dem L3-Cache-Speicher können verfolgen, ob die Zeile durch einen der Cache-Speicher modifiziert worden ist, seit sie das letzte Mal aus dem DRAM abgeholt wurde, und obwohl einige der L2-Cache-Speicher die Zeile in dem gemeinsam benutzten Zustand haben können, können die externen Duplikat-Verzeichnisse verfolgen, dass die Zeile modifiziert worden ist, und wenn sie verdrängt wurde (aus dem L3), muss sie an ihre Ursprungsadresse zurück geschrieben werden, anstatt dass sie stillschweigend auf ungültig gesetzt wird.
  • In einer Ausführungsform können die externen Duplikat-Verzeichnisse für den L2-Cache-Speicher zwischen einem „sauberen gemeinsam benutzten” Zustand, der angibt, dass die Zeile bei Verdrängung in den DRAM zurück geschrieben werden muss, und einem „schmutzigen gemeinsam benutzten” Zustand unterscheiden, der angibt, dass Zeile zu einem gewissen Grad modifiziert wurde, seit sie das letzte Mal aus dem DRAM abgeholt wurde, und somit letztlich zurück geschrieben werden muss. Wenn der letzte L2-Cache-Speicher eine „schmutzige gemeinsam benutzte” Zeile in den L3 zurück schreibt, kann der L3 sie in dem modifizierten Zustand in dem L3 reservieren, so dass sie in den DRAM zurück geschrieben wird, wenn sie aus dem L3 verdrängt wird, selbst wenn der eigentliche L2-Cache-Speicher, der die Zeile verdrängt, der Meinung ist, dass diese nur gemeinsam benutzt (unsauber) war. Wenn jedoch der letzte L2 eine „saubere gemeinsam benutzte” Zeile in den L3 zurück schreibt, kann der L3 diese nicht in dem gemeinsam benutzten Zustand (oder modifizierten Zustand) zuweisen, was bedeutet, dass sie nicht in den DRAM zurück geschrieben werden muss, wenn sie aus dem L3 verdrängt wird.
  • In einer Ausführungsform ergeben sich DRAM-Bandbreiteneinsparungen ähnlich zu einem MOESI-Protokoll, das in der L2-Ebene realisiert ist, ohne dass die L2-Cache-Speicher wesentlich geändert werden, was ansonsten in einem MESI-Protokoll beteiligt wäre. In einer anschaulichen Realisierung ist ein L2-Cache-Speicher ähnlich zu einem MESI-Protokoll mit der Ausnahme einer eleganten Modifizierung zum Zurückschreiben oder Ausschreiben von Zeilen in einer Vielzahl von Zuständen bei Verdrängung, so dass diese nach Bedarf in dem L3 zugewiesen werden können. Es kann eine zusätzliche Bandbreite zwischen den L2-Cache-Speichern und dem L3-Cache-Speicher vorhanden sein, wenn derartige Zeilen gemeinsam benutzt werden, da nur die letzte Verdrängung aus einem L2-Cache-Speicher tatsächlich es notwendig macht, dass die Zeile an den L3-Cache-Speicher gesendet wird. Da jedoch die Mehrheit der Zeilen häufig nur in einem einzelnen Agenten vorhanden ist, ist die zusätzliche Bandbreite (beispielsweise zu dem L3-Cache Speicher und nicht zu dem DRAM, usw.) typischerweise gering und oft chipintern mit wesentlich höherer verfügbarer Bandbreite als chipextern, wenn der DRAM angesprochen wird. Daher kann es wichtig sein, den Verbrauch an DRAM-Bandbreite zu bewahren oder zu reduzieren, im Vergleich zu konventionellen Vorgehensweisen, selbst wenn die chipinterne Bandbreite nicht bewahrt oder reduziert wird, da die chipinterne Bandbreite häufig besser verfügbar oder größer ist. Obwohl es einen zusätzlichen Bandbreitenverbrauch geben kann, können die L2-Cache-Speicher und die Steuerungen relativ einfach gehalten werden (beispielsweise ein relativ einfaches Protokoll implementieren, Protokolle ähnlich zu MESI implementieren, usw.). Es ist zu beachten, dass, obwohl große Teile der detaillierten Beschreibung im Hinblick auf L2-und L3-Cache-Speicher angegeben sind, die Vorgehensweise in einer Vielzahl von Konfigurationen für eine Vielzahl unterschiedlicher Speicherkonfigurationen verwendet und realisiert werden kann. In einer anschaulichen Realisierung kann der gleichartige Cache-Speicher oder der Cache-Speicher der tieferen Ebene ein L1-Cache-Speicher sein und der Cache-Speicher der nächsten Ebene zum Zurückschreiben und zur Schreibzuweisung exklusiv kann ein L2-Cache-Speicher sein.
  • Zu beachten ist, dass ein Verweis auf eine erste Speicherebene oder Cache-Ebene und eine zweite Speicherebene oder einen Cache-Speicher verwendet werden kann, um anzugeben, dass die Ebenen im Hinblick zueinander statt auf eine absolute Position in einer Hierarchie unterschiedlich sind. Beispielsweise kann in der Speicherarchitektur 300 der L1-Cache-Speicher eine erste Ebene in Bezug auf einen L2-Cache-Speicher einer zweiten Ebene sein, während der L2-Cache-Speicher eine erste Ebene in Bezug auf einen L3-Cache-Speicher der zweiten Ebene sein kann. In einer Ausführungsform kann die Speicherebene der ersten Ebene ein L2-Cache-Speicher sein, und die Speicherkomponente der zweiten Ebene kann ein L3-Cache-Speicher sein. Der Speicherzustand der Cache-Zeile in dem L2-Cache-Speicher kann durch diverse Komponenten verfolgt werden. Der Speicherzustand der Cache-Zeile in dem L2-Cache-Speicher kann von dem L3-Cache-Speicher verfolgt werden. Der Speicherzustand der Cache-Zeile in dem L2 kann von einem kohärenten Knoten verfolgt werden.
  • Obwohl viele der Ausführungsformen mit Cache-Speichern und der Verfolgung auf einem einzelnen Chip oder Plättchen beschrieben sind, ist zu beachten, dass die vorliegenden Systeme und Verfahren in diversen Konfigurationen angewendet werden können. In einer Ausführungsform können die Systeme und Verfahren in flexibler Weise skaliert werden. In einer anschaulichen Realisierung können die Komponenten auf unterschiedlichen Chips verteilt sein. Ein kohärenter Knoten, der extern Speicherzustände verfolgt, kann auf einem anderen Chip oder Halbleiterplättchen angeordnet sein. Es können mehrere CPUs jeweils mit unterschiedlichen L2 in unterschiedlichen Chips vorhanden sein, die einen gemeinsam benutzten Speicher als Hintergrundspeicher verwenden. Die externe Verfolgung der Cache-Zeilenzustände der L2-Cache-Speicher kann in diversen Komponenten erfolgen (beispielsweise einem kohärenten Knoten auf einem Chip in einem Netzwerk, eine Komponente oder einen L3, der nicht notwendigerweise auf dem gleichen Chip wie ein L2 ist, usw.).
  • 4 ist eine Blockansicht eines Computersystems 400, d. h. eine Ausführungsform eines Computersystems, in welchem Ausführungsformen der vorliegenden Erfindung realisiert werden können. Das Computersystem 400 umfasst eine zentrale Recheneinheit 401, einen Hauptspeicher 402 (beispielsweise Speicher mit wahlfreiem Zugriff), einen Chipsatz 420 mit einer Nordbrücke 421 und einer Südbrücke 425, eine entfernbare Datenspeichereinrichtung 404, eine Eingabeeinrichtung 407, einen Signalkommunikationsport 408, und ein Grafiksubsystem 450, das mit einer Anzeige 470 verbunden ist. Das Computersystem 440 umfasst mehrere Busse, um die Komponenten des Computersystems 400 kommunizierend miteinander zu verbinden. Der Kommunikationsbus 491 (beispielsweise ein Frontseitenbus) verbindet die Nordbrücke 421 des Chipsatzes 420 mit der zentralen Recheneinheit 401. Der Kommunikationsbus 492 (beispielsweise ein Hauptspeicherbus) verbindet die Nordbrücke 421 des Chipsatzes 420 mit dem Hauptspeicher 402. Ein Kommunikationsbus 493 (beispielsweise die erweiterte Grafikport-Schnittstelle) verbindet die Nordbrücke des Chipsatzes 420 mit dem Grafiksubsystem 450. Die Kommunikationsbusse 494497 (beispielsweise ein PCI-Bus) verbinden die Südbrücke 425 des Chipsatzes 420 mit der entfernbaren Datenspeichereinrichtung 404, der Eingabeeinrichtung 407, dem Signalkommunikationsport 408. Das Grafiksubsystem 450 umfasst einen Grafikprozessor 451, eine Speicherverwaltungseinheit 455 und einen Grafikpuffer 459.
  • Die Komponenten des Computersystems 400 arbeiten zusammen, um eine Vielzahl von Verarbeitungsaufgaben auszuführen und um effiziente Speicherzugriffe zu ermöglichen. Der Kommunikationsbusse 491, 492, 493, 494, 495 und 497 übermitteln Information. Der zentrale Prozessor 401 verarbeitet Information. Der Hauptspeicher 402 speichert Informationen und Befehle für den zentralen Prozessor 401. Die entfernbare Datenspeichereinrichtung 404 speichert ebenfalls Informationen und Befehle (beispielsweise dienen sie als ein großes Informationsreservoir). Die Eingabeeinrichtung 407 stellt einen Mechanismus zur Einspeisung von Information und/oder zum Zeigen auf oder zur Markierung von Informationen auf der Anzeige 470. Der Signalkommunikationsport 408 stellt eine Kommunikationsschnittstelle für externe Geräte (beispielsweise eine Schnittstelle für ein Netzwerk) bereit. Die Anzeigeeinrichtungen 470 stellt Information entsprechend den Daten war, die in dem Blockpuffer 451 gespeichert sind. Der Grafikprozessor 451 verarbeitet Grafikbefehle aus dem zentralen Prozessor 401 und leitet die resultierenden Ergebnisse dem Grafikpuffer 459 zur Speicherung und für das Abrufen durch den Anzeigebildschirm 474 zu. Die Speicherverwaltungseinheit 455 handhabt die Speicherzugriffsanforderungen zwischen dem Grafikprozessor 451 und dem Grafikpuffer 459. Zu beachten ist, dass ähnliche Speicherverwaltungseinheiten realisiert werden können, um effiziente und unabhängige Zugriffsanforderungen auf andere Speicherkomponenten des Computersystems 400 zu ermöglichen, wozu der Hauptspeicher 402 und der Massendatenspeicher 404 gehören.
  • Zu beachten ist, dass die vorliegende Erfindung in einer Vielzahl aus Ausführungsformen realisiert werden kann. In einer anschaulichen Realisierung kann die vorliegende Erfindung in Verarbeitungssystemen verwendet werden, die zum Bereitstellen einer Vielzahl von Grafikanwendungen genutzt werden, wozu Videospiele gehören. Beispielsweise kann die vorliegende Erfindung in einer Spielekonsole, einem Personalcomputer, einem persönlichen digitalen Assistenten, einem Funktelefon oder in einer Vielzahl von Plattformen zur Einrichtung von Videospielen verwendet werden. Ferner ist zu beachten, dass ein Verweis auf eine Videospielanwendung nur anschaulich ist und dass die vorliegende Erfindung nicht auf diese Realisierungen beschränkt ist.
  • Wiederum ist zu beachten, dass, obwohl die detaillierte Beschreibung im Hinblick auf L2- und L3-Cache-Speicher angegeben ist, die vorliegende Vorgehensweise in einer Vielzahl von Konfigurationen mit einer Vielzahl unterschiedlicher Speicherkonfigurationen eingesetzt und realisiert werden kann. In einer Ausführungsform wird Komplexität nur im L3 eingeführt, der eine optionale Komponente des Systems sein kann.
  • Teile der detaillierten Beschreibung sind im Hinblick auf ein Verfahren angegeben und erläutert. Obwohl Schritte und deren Reihenfolge in den Figuren offenbart sind, die die Operationen dieses Verfahrens beschreiben, sind derartige Schritte und deren Reihenfolge nur anschaulicher Natur. Ausführungsformen sind gut geeignet, diverse andere Schritte oder Variationen der Schritte, die in dem Flussdiagramm der Figur hierin genannt sind, auszuführen, und auch die Reihenfolge kann anders sein, als dies hierin dargestellt und beschrieben ist.
  • Gewisse Teile der detaillierten Beschreibung sind in Begriffen von Prozeduren, Schritten, Logikblöcken, Verarbeitung und anderen symbolischen Darstellungen von Operationen an Datenbits angegeben, die in Computerspeichern ausgeführt werden können. Diese Beschreibungen und Darstellungen sind die Mittel, die der Fachmann verwendet, um in höchst effizienter Weise den Inhalt seiner Arbeit einem anderen Fachmann mitzuteilen. Eine Prozedur, ein Computer ausgeführter Schritt, ein Logikblock, Prozess, usw. ist hierin und generell als eine selbstkonsistente Reihenfolge an Schritten oder Befehlen zu verstehen, die zu einem gewünschten Resultat führen. Die Schritte umfassen die physikalische Manipulation physikalischer Größen. Für gewöhnlich, aber nicht notwendigerweise, nehmen diese Größen die Form elektrischer, magnetischer, optischer Signale oder von Quantensignalen an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig bearbeitet werden können in einem Computersystem. Es hat sich zu Zeiten als bequem erwiesen, insbesondere aus Gründen der üblichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch in Erinnerung behalten werden, dass alle diese und ähnliche Begriffe mit den geeigneten physikalischen Größen zu verknüpfen sind und lediglich angenehme Namen darstellen, die diesen Größen zugeordnet sind. Sofern dies nicht anders speziell angegeben ist oder anderweitig aus der folgenden Erläuterung hervorgeht, ist zu beachten, dass durchgängig Erläuterungen, die Begriffe wie „verarbeiten”, „berechnen”, „rechnen”, „ermitteln”, „anzeigen”, „zugreifen”, „schreiben”, „einschließen”, „speichern”, „übertragen”, „durchlaufen”, „verknüpfen”, „erkennen” oder dergleichen verwenden, die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Recheneinrichtung bezeichnen, die Daten manipuliert und transformiert, die als physikalische (elektronische) Größen innerhalb der Registern und Speicher des Computersystems dargestellt sind, wobei diese Größen in andere Daten umgewandelt werden können, die in ähnlicher Weise als physikalische Größen innerhalb der Speicher oder Register des Computersystems oder in einem anderen derartigen Informationsspeicher, einer Übertragung oder in Anzeigegeräten dargestellt werden können.
  • Einige Ausführungsformen können im allgemeinen Zusammenhang mit computerlesbaren Befehlen beschrieben sein, etwa als Programmmodule, die von einem oder mehreren Computern oder anderen Einrichtungen ausgeführt werden. Generell umfassen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen, usw., die spezielle Aufgaben ausführen oder spezielle abstrakte Datentypen realisieren. Typischerweise können die Funktionen der Programmmodule kombiniert oder verteilt werden, wie dies in den diversen Ausführungsformen erforderlich ist.
  • Die vorhergehenden Beschreibungen spezieller Ausführungsformen der vorliegenden Erfindung sind zum Zwecke der Darstellung und der Beschreibung angegeben. Sie beabsichtigen nicht, umfassend zu sein oder die Erfindung auf die genaue offenbart Form einzuschränken, und es sind offensichtlich viele Modifizierungen und Variationen im Lichte der obigen Lehren möglich. Die Ausführungsformen wurden ausgewählt und beschrieben, um am besten die Prinzipien der Erfindung und ihre praktische Anwendung zu erläutern, um damit den Fachmann in die Lage zu versetzen, die Erfindung und diverse Ausführungsformen mit diversen Modifizierungen am besten zu nutzen, wie dies für die speziell betrachtete Verwendung geeignet ist. Es ist beabsichtigt, dass der Schutzbereich der Erfindung durch die angehängten Patentansprüchen und ihre Äquivalente definiert ist.

Claims (20)

  1. Ein System aufweisend: eine Speicherkomponente einer ersten Ebene, in welcher Speicherkomponente eine Speicherzustandsangabe extern verfolgt wird, wobei ein erster Ansatz zur Kohärenzbeibehaltung in der Speicherkomponente der ersten Ebene implementiert ist, wobei die extern verfolgte Speicherzustandsangabe mit einem zweiten Ansatz zur Kohärenzbeibehaltung kompatibel ist; und eine Speicherkomponente einer zweiten Ebene zum Empfangen von Information aus der Speicherkomponente der ersten Ebene und zum Einwirken auf die Information auf der Grundlage zumindest des Speicherzustands von Information, welche mit der Speicherkomponente der ersten Ebene verknüpft ist, wobei der zweite Ansatz zur Kohärenzbeibehaltung in der Speicherkomponente der zweiten Ebene implementiert ist.
  2. Das Speichersystem gemäß Anspruch 1, wobei der Zustand von Information der Zustand einer Cache-Zeile ist.
  3. Das Speichersystem gemäß Anspruch 2, wobei der Speicherzustand der Cache-Zeile von der Speicherkomponente der zweiten Ebene verfolgt wird.
  4. Das Speichersystem gemäß Anspruch 2, wobei der Speicherzustand der Cache-Zeile von einer kohärenten zentralen Stelle verfolgt wird.
  5. Das Speichersystem gemäß Anspruch 2, wobei die Speicherkomponente der ersten Ebene ein L2-Cache-Speicher ist und die Speicherkomponente der zweiten Ebene ein L3-Cache-Speicher ist.
  6. Das Speichersystem gemäß Anspruch 5, wobei der Speicherzustand der Cache-Zeile in dem L2-Cache Speicher von dem L3-Cache-Speicher verfolgt wird.
  7. Das Speichersystem gemäß Anspruch 5, wobei der Speicherzustand der Cache-Zeile von einer kohärenten zentralen Stelle verfolgt wird.
  8. Das Speichersystem gemäß Anspruch 5, wobei der L2-Cache-Speicher die Cache-Zeile als in einem MESI-Zustand betrachtet und der L3 tatsächlich verfolgt, welche Zeilen tatsächlich in einen Hintergrundspeicher zurück geschrieben worden sind.
  9. Das Speichersystem gemäß Anspruch 5, wobei bei Verdrängung einer Cache-Zeile aus dem L2-Cache-Speicher der L3-Cache-Speicher tatsächlich die Cache-Zeile in den Hintergrundspeicher überführt, wenn dies geeignet ist, und die Cache-Zeile nicht überführt, wenn dies nicht geeignet ist.
  10. Das Speichersystem gemäß Anspruch 5, wobei der L3 zusätzliche Zustände für jede Cache-Zeile verfolgt, und wobei die zusätzlichen Zustände angeben, ob eine Zeile in dem L2-Cache-Speicher verschmutzt ist und wobei das L3-Verzeichnis angibt, dass die Zeile zurück zu schreiben ist.
  11. Ein Verfahren: externes Verfolgen eines wesentlichen Speicherzustands von Information, welche mit einer Speicherkomponente verknüpft ist, die in einer Speicherebene enthalten ist; Einwirken auf Information in der Speicherkomponente der einen Ebene auf der Grundlage einer lokalen Speicherzustandsangabe; und Einwirken auf die Information, die in einer weiteren Speicherkomponente empfangen wird, auf der Grundlage zumindest teilweise des wesentlichen Speicherzustands der Information.
  12. Das Verfahren gemäß Anspruch 11, wobei die eine Speicherkomponente einen gehörenden Zustand nicht verfolgt.
  13. Das Verfahren gemäß Anspruch 11, wobei die Speicherkomponente der anderen Ebene Rückschreiboperationen aus der Speicherkomponente der einen Ebene empfängt und irrelevante Rückschreiboperationen auf der Grundlage des wesentlichen Speicherzustands verwirft.
  14. Das Verfahren gemäß Anspruch 11, wobei die Speicherkomponente der anderen Ebene Schreiboperationen, die von der Speicherkomponente empfangen werden, entsprechend dem wesentlichen Speicherzustand weiterleitet.
  15. Ein System aufweisend eine Mehrzahl von Cache-Speichern einer ersten Ebene, die ein grundlegendes MESI-Protokoll verwenden und wobei die Mehrzahl von Cache-Speichern der ersten Ebene Cache-Zeilen zurück schreiben, die verdrängt werden und die eine schmutzige gemeinsam benutzte Cache-Zeile enthalten; und einen Cache-Speicher einer zweiten Ebene, der die schmutzige gemeinsam benutzte Cache-Zeile in einem modifizierten Zustand in dem Cache-Speicher der zweiten Ebene zuweist, so dass die schmutzige gemeinsam benutzte Cache-Zeile in eine Speicherkomponente einer dritten Ebene zurück geschrieben wird, wenn diese aus dem Cache-Speicher der zweiten Ebene verdrängt wird.
  16. Das System gemäß Anspruch 15, wobei die schmutzige gemeinsam benutzte Cache-Zeile in eine Speicherkomponente einer dritten Ebene zurück geschrieben wird, wenn sie von dem Cache-Speicher der zweiten Ebene verdrängt wird, selbst wenn einer der Mehrzahl von Cache-Speicher der ersten Ebene, der die schmutzige gemeinsam benutzte Cache-Zeile verdrängt, die schmutzige gemeinsam benutzte Cache-Zeile behandelt, als ob diese nur gemeinsam benutzt wird und sauber ist.
  17. Das System gemäß Anspruch 15, wobei der letzte der Mehrzahl von Cache-Speicher der ersten Ebene eine „saubere gemeinsam benutzte” Zeile in den L3 zurück schreibt und der L3 diese in dem gemeinsam benutzten Zustand oder unmodifizierten Zustand kontingentiert, was bedeutet, dass sie nicht in den DRAM zurück geschrieben werden muss, wenn sie aus dem L3 verdrängt wird.
  18. Das System gemäß Anspruch 15, wobei die Mehrzahl von Cache-Speicher der ersten Ebene auch exklusive Cache-Zeilen und nicht modifizierte Cache-Zeilen zurück schreiben.
  19. Das System gemäß Anspruch 15, wobei der Cache-Speicher der zweiten Ebene ein exklusiver Cache-Speicher der nächsten Ebene mit Rückschreibung und Schreibzuweisung ist.
  20. Das System gemäß Anspruch 15, wobei Zeilen des Cache-Speichers der zweiten Ebene bei Verdrängung aus einem der Mehrzahl von Cache-Speicher der ersten Ebene zugewiesen werden.
DE102013114256.7A 2012-12-21 2013-12-17 Systeme und Verfahren zur Beibehaltung der Informationskohärenz Active DE102013114256B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/725,881 2012-12-21
US13/725,881 US9824009B2 (en) 2012-12-21 2012-12-21 Information coherency maintenance systems and methods

Publications (2)

Publication Number Publication Date
DE102013114256A1 true DE102013114256A1 (de) 2014-06-26
DE102013114256B4 DE102013114256B4 (de) 2022-06-15

Family

ID=50878889

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013114256.7A Active DE102013114256B4 (de) 2012-12-21 2013-12-17 Systeme und Verfahren zur Beibehaltung der Informationskohärenz

Country Status (4)

Country Link
US (1) US9824009B2 (de)
CN (1) CN103885894A (de)
DE (1) DE102013114256B4 (de)
TW (1) TWI526839B (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256514B2 (en) 2009-02-19 2016-02-09 Nvidia Corporation Debugging and perfomance analysis of applications
US9965395B2 (en) * 2010-09-28 2018-05-08 Texas Instruments Incorporated Memory attribute sharing between differing cache levels of multilevel cache
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US10108548B2 (en) * 2014-08-19 2018-10-23 MIPS Tech, LLC Processors and methods for cache sparing stores
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10459824B2 (en) * 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
KR20210079637A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US20230099256A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Storing an indication of a specific data pattern in spare directory entries

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620217A (en) 1983-09-22 1986-10-28 High Resolution Television, Inc. Standard transmission and recording of high resolution television
US4648045A (en) 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
US4901224A (en) 1985-02-25 1990-02-13 Ewert Alfred P Parallel digital processor
US4700319A (en) 1985-06-06 1987-10-13 The United States Of America As Represented By The Secretary Of The Air Force Arithmetic pipeline for image processing
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US5185856A (en) 1990-03-16 1993-02-09 Hewlett-Packard Company Arithmetic and logic processing unit for computer graphics system
CA2043493C (en) 1990-10-05 1997-04-01 Ricky C. Hetherington Hierarchical integrated circuit cache memory
US5268995A (en) 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
JPH06318060A (ja) 1991-07-31 1994-11-15 Toshiba Corp 表示制御装置
JP3004108B2 (ja) 1991-11-27 2000-01-31 株式会社東芝 情報処理装置
US5357604A (en) 1992-01-30 1994-10-18 A/N, Inc. Graphics processor with enhanced memory control circuitry for use in a video game system or the like
US5600584A (en) 1992-09-15 1997-02-04 Schlafly; Roger Interactive formula compiler and range estimator
US5488687A (en) 1992-09-17 1996-01-30 Star Technologies, Inc. Dual resolution output system for image generators
JP2725546B2 (ja) 1992-12-07 1998-03-11 株式会社日立製作所 デ−タ処理装置
TW241196B (de) 1993-01-15 1995-02-21 Du Pont
US5392393A (en) 1993-06-04 1995-02-21 Sun Microsystems, Inc. Architecture for a high performance three dimensional graphics accelerator
US5579476A (en) 1993-10-19 1996-11-26 Industrial Technology Research Institute Automatic test environment for communications protocol software
US5487022A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5577213A (en) 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
US5579473A (en) 1994-07-18 1996-11-26 Sun Microsystems, Inc. Interface controller for frame buffer random access memory devices
US5655132A (en) 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US5604824A (en) 1994-09-22 1997-02-18 Houston Advanced Research Center Method and apparatus for compression and decompression of documents and the like using splines and spline-wavelets
US5701444A (en) 1995-03-24 1997-12-23 3Dlabs Inc. Ltd. Three-dimensional graphics subsystem with enhanced support for graphical user interface
US5764228A (en) 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5850572A (en) 1996-03-08 1998-12-15 Lsi Logic Corporation Error-tolerant video display subsystem
US5777628A (en) 1996-05-29 1998-07-07 Hewlett-Packard Company Method and apparatus for detecting cache collisions in a two dimensional memory
US6115047A (en) 1996-07-01 2000-09-05 Sun Microsystems, Inc. Method and apparatus for implementing efficient floating point Z-buffering
US6173366B1 (en) 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US6496537B1 (en) 1996-12-18 2002-12-17 Thomson Licensing S.A. Video decoder with interleaved data processing
US5831640A (en) 1996-12-20 1998-11-03 Cirrus Logic, Inc. Enhanced texture map data fetching circuit and method
US6166743A (en) 1997-03-19 2000-12-26 Silicon Magic Corporation Method and system for improved z-test during image rendering
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5941940A (en) 1997-06-30 1999-08-24 Lucent Technologies Inc. Digital signal processor architecture optimized for performing fast Fourier Transforms
JP3414209B2 (ja) 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
US5995121A (en) 1997-10-16 1999-11-30 Hewlett-Packard Company Multiple graphics pipeline integration with a windowing system through the use of a high speed interconnect to the frame buffer
US6345339B1 (en) * 1998-02-17 2002-02-05 International Business Machines Corporation Pseudo precise I-cache inclusivity for vertical caches
US6259460B1 (en) 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
JP3541669B2 (ja) 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
US6862278B1 (en) 1998-06-18 2005-03-01 Microsoft Corporation System and method using a packetized encoded bitstream for parallel compression and decompression
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
JP2000047872A (ja) 1998-08-03 2000-02-18 Hitachi Ltd 低消費電力動作機能を備えたマイクロプロセッサ
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
AU5686199A (en) 1998-08-20 2000-03-14 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6407740B1 (en) 1998-09-30 2002-06-18 Sun Microsystems, Inc. Addressable output buffer architecture
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6222550B1 (en) 1998-12-17 2001-04-24 Neomagic Corp. Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine
US6333744B1 (en) 1999-03-22 2001-12-25 Nvidia Corporation Graphics pipeline including combiner stages
US6775830B1 (en) 1999-09-24 2004-08-10 Hitachi, Ltd. Computer system and a program install method thereof
US6526430B1 (en) 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6351806B1 (en) 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
US6466222B1 (en) 1999-10-08 2002-10-15 Silicon Integrated Systems Corp. Apparatus and method for computing graphics attributes in a graphics display system
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6411301B1 (en) 1999-10-28 2002-06-25 Nintendo Co., Ltd. Graphics system interface
US6417851B1 (en) 1999-12-06 2002-07-09 Nvidia Corporation Method and apparatus for lighting module in a graphics processor
US6198488B1 (en) 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US6353439B1 (en) 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6557022B1 (en) 2000-02-26 2003-04-29 Qualcomm, Incorporated Digital signal processor with coupled multiply-accumulate units
US6718542B1 (en) 2000-04-14 2004-04-06 Sun Microsystems, Inc. Disambiguating memory references based upon user-specified programming constraints
US6624818B1 (en) 2000-04-21 2003-09-23 Ati International, Srl Method and apparatus for shared microcode in a multi-thread computation engine
US6806886B1 (en) 2000-05-31 2004-10-19 Nvidia Corporation System, method and article of manufacture for converting color data into floating point numbers in a computer graphics pipeline
US6915509B1 (en) 2000-06-28 2005-07-05 Microsoft Corporation Method and system for debugging a program
US6636221B1 (en) 2000-08-02 2003-10-21 Ati International, Srl Graphics processing system with enhanced bus bandwidth utilization and method therefore
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6664958B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Z-texturing
JP2002073330A (ja) 2000-08-28 2002-03-12 Mitsubishi Electric Corp データ処理装置
JP2002171401A (ja) 2000-11-29 2002-06-14 Canon Inc 間引き演算命令を備えたsimd型演算装置
US6778181B1 (en) 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
US6411130B1 (en) 2001-01-23 2002-06-25 Micrel, Inc. Method and system for reliably providing a lock indication
US6791559B2 (en) 2001-02-28 2004-09-14 3Dlabs Inc., Ltd Parameter circular buffers
US6542971B1 (en) 2001-04-23 2003-04-01 Nvidia Corporation Memory access system and method employing an auxiliary buffer
JP2002333978A (ja) 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US6741256B2 (en) 2001-08-27 2004-05-25 Sun Microsystems, Inc. Predictive optimizer for DRAM memory
US6947053B2 (en) 2001-09-27 2005-09-20 Intel Corporation Texture engine state variable synchronizer
EP1306810A1 (de) 2001-10-25 2003-05-02 STMicroelectronics Limited Identifikationpuffer von dreiecken
US7127482B2 (en) 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations
US7158141B2 (en) 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US7227556B2 (en) 2002-03-01 2007-06-05 O'driscoll Gerard High quality antialiased lines with dual sampling pattern
US7187383B2 (en) 2002-03-01 2007-03-06 3D Labs Inc., Ltd Yield enhancement of complex chips
US6731288B2 (en) 2002-03-01 2004-05-04 3Dlabs Inc., Ltd. Graphics engine with isochronous context switching
US6924808B2 (en) 2002-03-12 2005-08-02 Sun Microsystems, Inc. Area pattern processing of pixels
US7154502B2 (en) 2002-03-19 2006-12-26 3D Labs, Inc. Ltd. 3D graphics with optional memory write before texturing
WO2003083680A1 (en) 2002-03-22 2003-10-09 Deering Michael F Scalable high performance 3d graphics
DE10218916A1 (de) 2002-04-27 2003-11-06 Degussa Verfahren zur Herstellung von Acetalen und Ketalen mit Hilfe mehrstufiger Pervaporation oder Dampfpermeation
US6980209B1 (en) 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6809732B2 (en) 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US7656416B2 (en) 2002-11-27 2010-02-02 Ati Technologies, Inc. Apparatus for generating anti-aliased and stippled 3d lines, points and surfaces using multi-dimensional procedural texture coordinates
US8036475B2 (en) 2002-12-13 2011-10-11 Ricoh Co., Ltd. Compression for segmented images and other types of sideband information
JP4288461B2 (ja) 2002-12-17 2009-07-01 日本電気株式会社 対称型画像フィルタ処理装置、プログラム、及びその方法
US7268779B2 (en) 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
KR100510131B1 (ko) 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7430654B2 (en) 2003-07-09 2008-09-30 Via Technologies, Inc. Dynamic instruction dependency monitor and control system
US8035646B2 (en) 2003-11-14 2011-10-11 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7450120B1 (en) 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US20050134588A1 (en) 2003-12-22 2005-06-23 Hybrid Graphics, Ltd. Method and apparatus for image processing
US6980222B2 (en) 2004-01-12 2005-12-27 International Business Machines Corporation Method and apparatus for implementing dynamically sizable color tables
US8736620B2 (en) 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7079156B1 (en) 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US7106336B1 (en) 2004-05-14 2006-09-12 Nvidia Corporation Method and system for deferred evaluation of transforms in graphics processors
US7298375B1 (en) 2004-05-14 2007-11-20 Nvidia Corporation Arithmetic logic units in series in a graphics pipeline
KR100865811B1 (ko) 2004-05-14 2008-10-28 엔비디아 코포레이션 저전력 프로그램가능 프로세서
US7710427B1 (en) 2004-05-14 2010-05-04 Nvidia Corporation Arithmetic logic unit and method for processing data in a graphics pipeline
US7190366B2 (en) 2004-05-14 2007-03-13 Nvidia Corporation Method and system for a general instruction raster stage that generates programmable pixel packets
US8711155B2 (en) 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8860722B2 (en) 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US7280112B1 (en) 2004-05-14 2007-10-09 Nvidia Corporation Arithmetic logic unit temporary registers
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US20060007234A1 (en) 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
US7199799B2 (en) 2004-05-14 2007-04-03 Nvidia Corporation Interleaving of pixels for low power programmable processor
US7941645B1 (en) 2004-07-28 2011-05-10 Nvidia Corporation Isochronous pipelined processor with deterministic control
US7525543B2 (en) 2004-08-09 2009-04-28 Siemens Medical Solutions Usa, Inc. High performance shading of large volumetric data using screen-space partial derivatives
US7644255B2 (en) 2005-01-13 2010-01-05 Sony Computer Entertainment Inc. Method and apparatus for enable/disable control of SIMD processor slices
US20060177122A1 (en) 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US7412591B2 (en) 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor
US7659898B2 (en) 2005-08-08 2010-02-09 Via Technologies, Inc. Multi-execution resource graphics processor
TWI283835B (en) 2005-08-30 2007-07-11 Via Tech Inc An adaptive method and apparatus for generating shadow using shadow volume
US7477260B1 (en) 2006-02-01 2009-01-13 Nvidia Corporation On-the-fly reordering of multi-cycle data transfers
US8860721B2 (en) 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US20070279408A1 (en) 2006-06-01 2007-12-06 Intersil Corporation Method and system for data transmission and recovery
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
US7928990B2 (en) 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8773447B1 (en) 2006-12-08 2014-07-08 Nvidia Corporation Tag logic scoreboarding in a graphics pipeline
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US9164910B2 (en) * 2008-02-21 2015-10-20 Arm Limited Managing the storage of data in coherent data stores
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9372718B2 (en) 2008-07-28 2016-06-21 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US9256514B2 (en) 2009-02-19 2016-02-09 Nvidia Corporation Debugging and perfomance analysis of applications
WO2012103373A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
GB2491588A (en) * 2011-06-06 2012-12-12 St Microelectronics Res & Dev Multiprocessor with different cache coherency protocols between different parts
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay

Also Published As

Publication number Publication date
DE102013114256B4 (de) 2022-06-15
TW201502789A (zh) 2015-01-16
US20140181404A1 (en) 2014-06-26
US9824009B2 (en) 2017-11-21
TWI526839B (zh) 2016-03-21
CN103885894A (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE60316783T2 (de) Erkennung von Speichermangel und Feinabschaltung
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102005022893B3 (de) Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte
DE112015000430T5 (de) Einheitliche Speichersysteme und -verfahren
DE102009023898A1 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE10316725A1 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112005002355T5 (de) Vorrichtung zum Abrufen von Daten in einem Prozessor-Cachespeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R082 Change of representative

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

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