-
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. Die
US 6 345 339 B1 ein Cache Kohärenz Protokoll , welches den Zugriff auf L1, L2 oder L3 Cache Speicher regelt.
-
ÜBERBLICK
-
Es wird ein Systeme gemäß Anspruch 1 und ein Verfahren zur Beibehaltung der Kohärenz gemäß Anspruch 10 bereitgestellt. Das 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 wird ein erster Ansatz für die Beibehaltung einer Kohärenz (beispielsweise ähnlich zu einem MESI-Protokoll usw.) in einer Speicherebene implementiert, während ein zweiter Ansatz zur Beibehaltung der Kohärenz (beispielsweise ähnlich zu einem MOESI-Protokoll usw.) in einer weiteren Speicherebene implementiert wird. 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.
-
Erfindungsgemäß 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 ist ein L2-Cache-Speicher und die Speicherkomponente der zweiten Ebene ist ein L3-Cache-Speicher. 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.
-
Figurenliste
-
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
-
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 494 - 497 (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.