DE69737116T2 - Mehrstufiger Cachespeicher - Google Patents

Mehrstufiger Cachespeicher Download PDF

Info

Publication number
DE69737116T2
DE69737116T2 DE69737116T DE69737116T DE69737116T2 DE 69737116 T2 DE69737116 T2 DE 69737116T2 DE 69737116 T DE69737116 T DE 69737116T DE 69737116 T DE69737116 T DE 69737116T DE 69737116 T2 DE69737116 T2 DE 69737116T2
Authority
DE
Germany
Prior art keywords
cache
data
level cache
block
blocks
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.)
Expired - Lifetime
Application number
DE69737116T
Other languages
English (en)
Other versions
DE69737116D1 (de
Inventor
Erik E. Palo Alto Hagersten
Mark D. Los Altos Hill
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69737116D1 publication Critical patent/DE69737116D1/de
Publication of DE69737116T2 publication Critical patent/DE69737116T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/272Cache only memory architecture [COMA]

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)

Description

  • Die vorliegende Erfindung bezieht sich auf Speicher in Computersystemen. Insbesondere bezieht die vorliegende Erfindung sich auf eine effiziente Auswahl von Speicherbetriebsarten (Speichermodi) in diesen Computersystemen.
  • In einem einfachen Zuordnungsschema für Cache-Speicherraum für ein Computersystem mit Caches auf mehreren Ebenen (multilevel caches), werden alle Datenstrukturen automatisch in beiden Ebenen bzw. Levels von Cache-Speichern aufgenommen. Wenn der Umfang einer Datenstruktur größer ist als der kleinere Cache niedrigerer Ebene (lower-level cache), das heißt, wenn die Datenstruktur nicht in den Cache niedrigerer Ebene passt, wird die Datenstruktur aus dem Cache niedrigerer Ebene verschoben. Wenn dann die Datenstruktur kleiner ist als der größere Cache höherer Ebene (higher-level cache) bleibt der größte Teil der Datenstruktur in dem Cache höherer Ebene.
  • Unglücklicherweise wird, während auf einige Komponenten von Datenstrukturen häufig zugegriffen wird, auf andere Komponenten nur einmal zugegriffen und es nicht leicht, einen künftigen Zugriff bzw. Zugriffe auf eine bestimmte Komponente vorherzusagen, ohne dass man irgendeine statistische Analyse macht und/oder das Programm kennt, welches die Datenstrukturen) besitzt. Beispielsweise verwendet ein Computerprogramm womöglich ein großes Array, in dem es einmal auf jedes Element des Arrays zugreift. Jedes Element wird dann in einer ziemlich komplizierten Berechnung verwendet, die temporäre Variable beinhaltet. In diesem Beispiel erhöht die Cache-Aufnahme jedes Elementes des großen Arrays die Berechnungsgeschwindigkeit nicht beträchtlich. Im Gegensatz hierzu führt die Aufnahme der temporären Variablen in den Cache zu einer schnelleren Ausführung des Programms.
  • Demnach ist das oben beschriebene Schema, auch wenn es einfach ist, ineffizient, da die Wahrscheinlichkeit, dass auf eine bestimmte Komponente erneut zugegriffen wird, nicht notwendigerweise mit der Größe der übergeordneten Datenstruktur zusammenhängt. Da Cache-Speicher nicht unendlich groß sind, kann eine ineffiziente Nutzung des Cache-Speicherraumes bewirken, dass einige andere nützliche Datenstrukturen vorzeitig ersetzt, d. h. vor nachfolgenden Zugriffen aus dem Cache (den Caches) ausgestoßen werden.
  • Es besteht daher ein Bedarf an einem effizienten Mechanismus für die Auswahl von Datenstrukturen für die Cache-Aufnahme, welcher die Zuweisung von Speicherraum in dem Cache höherer Ebene in einem Computersystem mit Caches auf mehreren Ebenen optimiert, um die Ausnutzung der Caches maximal zu machen und um die gesamte Zugriffszeit auf Daten minimal zu machen.
  • Die Europäische Patentanmeldung EP-A-0,780,769, veröffentlicht am 25. Juni 1997 mit einem Prioritätsdatum vom 22. Dezember 1995, bezieht sich auf eine hybride, nicht gleichförmige Speicherarchitektur (non-uniform memory architecture – NUMA) und eine Nur-Cache-Speicherarchitektur (cache-only memory architecture – COMA). Es wird ein Cache-kohärentes Protokoll für ein Computersystem bereitgestellt, welches eine Mehrzahl von Untersystemen hat, die durch eine Systemverbindung miteinander verbunden sind. Insbesondere diskutiert dieses Dokument die Verwendung eines Fehlers für vermeidbare NUMA_Fehlzugriffe, um erkannte, vermeidbare NUMA-Cache-Fehlzugriffe zu überwachen. Das Dokument erläutert auch die Cache-Speicherung in dem COMA und dem Cache oder in dem L2-Cache entsprechend dem ausgewählten NUMA- oder COMA-Betrieb. Die am 25. Juni 1997 veröffentlichte Europäische Patentanmeldung EP-A-0 780 770 mit einem Prioritätsdatum vom 22. Dezember 1995 ist auch auf eine ähnliche Architektur und ein Cache-kohärentes Protokoll gerichtet.
  • Der Artikel „Efficient Shared Memory with Minimal Hardware Support" von Kontothanassis und Scott, p. 29–35, Computer Architecture News, September 1995, offenbart ein System mit einem gemeinsam verwendeten Speicher in einem nicht Cache-kohärenten, nicht gleichförmigen Speicherzugriffssystem und einen Mechanismus für die Erfassung von Cache-Fehlzugriffen. Das System unterstützt eine Veränderung der Granularität der Datenübertragung für den Cache. Insbesondere wird auf einer Maschine, welche Cache-Auffüllungen (Übertragungen in Cache-Zellengröße) von entfernt gelegenen Speichern unterstützt, eine Option bereitgestellt, um stattdessen eine vollständige Seitenkopie in dem lokalen Speicher zu erzeugen. Es hat sich herausgestellt, dass keine dieser Optionen in allen Fällen die beste ist und dementsprechend wird ein hybrider Ansatz vorgeschlagen, in welchem die Granularität dynamisch Seite für Seite verändert werden kann.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung wird ein Verfahren zum Verwenden von Speicherraum in einem Computersystem bereitgestellt, welches einen Speicher niedrigerer Ebene und einen Speicher höherer Ebene hat, wie es in Anspruch 1 definiert ist.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung wird ein Cache-Ressourcen-Zuweiser bereitgestellt, wie er in Anspruch 7 definiert ist.
  • Gemäß einem dritten Aspekt der vorliegenden Erfindung wird ein Computerprogramm bereitgestellt, wie es in Anspruch 12 definiert ist.
  • Ausführungsformen der vorliegenden Erfindung stellen ein effizientes Schema für die Auswahl von Betriebsarten der Speicherung (Speichermodi) einer Cache-Hierarchie auf mehreren Ebenen (levels) eines Computersystems bereit, welches zumindest einen Cache niedrigerer Ebene (lower-level cache – LLC) und einen Cache höherer Ebene (higher-level cache – HLC) hat.
  • In einer Ausführungsform wird Speicherraum in dem Cache niedrigerer Ebene (LLC) in Größeneinheiten von Cache-Zeilen zugewiesen, während Speicherraum in dem Cache höherer Ebene (HLC) in Einheiten von Seitengröße zugewiesen wird, wobei jede Seite zwei oder mehr Cache-Zeilen umfasst. Man beachte jedoch, dass, auch wenn die beispielhaften Speichereinheiten, die für die Speicherung von Komponenten und Blöcken von Daten verwendet werden, Cache-Zeilen bzw. Seiten sind, die Erfindung ebenso auf andere Speichereinheiten und Untereinheiten anwendbar ist.
  • Dementsprechend werden während der Ausführung eines Programms Komponenten in der Größe von Cache-Zeilen eines Blockes von Daten in Seitengröße schrittweise in den Cache-Zeilen der LLCs gespeichert. Anschließend stellt das System fest, dass es an der Zeit ist, die Zuweisung von Cache-Ressourcen, das heißt zwischen dem LLC und dem HLC, zu überprüfen. Der Auslöser für die Überprüfung kann außerhalb des Prozessors liegen, zum Beispiel ein Zeitgeber, welcher den Prozessor periodisch (durch Interrupts) unterbricht. Alternativ kann der Auslöser für die Überprüfung von dem LLC oder dem HLC kommen, beispielsweise wenn der LLC voll ist, oder wenn die Ausnutzung des HLC unter einen gewissen Prozentsatz fällt.
  • Eine Überprüfung der Zuweisung umfasst die Identifizierung von Komponenten, die zu ihren jeweiligen Datenblöcken gehören, und die Feststellung, ob die Anzahl von in dem Cache aufgenommenen Komponenten, die mit ihren Blöcken identifiziert wurden, einen Schwellenwert überschreiten. Wenn der Schwellenwert für die Cache-aufgenommenen Komponenten, die zu einem bestimmten Block gehören, überschritten ist, wird Speicherraum in dem HLC zugewiesen, um Komponenten aus dem Block zu speichern. Dieses Schema erhöht in vorteilhafter Weise die Wahrscheinlichkeit künftiger Cache-Treffer durch optimale Ausnutzung des HLC zum Speichern von Speicherblöcken mit einer beträchtlichen Anzahl nutzbarer Komponenten.
  • In einer Ausführungsform, wie sie in einem COMA/NUMA-Computersystem implementiert ist, entspricht die Auswahl von Speicherorten, das heißt in dem HLC gegenüber dem LLC, der Auswahl von COMA- und NUMA-Cache-Betriebsarten. Es versteht sich jedoch, dass das Auswahlschema ebenso auf alle Cache-Ebenen und auf eine breite Vielfalt von Cache-Systemarchitekturen anwendbar ist, einschließlich eines reinen COMA-Cache oder NUMA-Cache, ohne jedoch hierauf beschränkt zu sein.
  • Die Erfindung wird nun anhand eines Beispiels unter Bezug auf die beigefügten Zeichnungen beschrieben, in welchen durchgehend gleiche Teile mit den gleichen Bezugszeichen bezeichnet sind und in denen:
  • 1A ein Blockdiagramm ist, welches ein Computernetzwerksystem 100 mit einer hybriden Nur-Cache-Speicherarchitektur/nicht-gleichförmigen Speicherarchitektur (CO-MA/NUMA) ist,
  • 1B ein beispielhafter Speicherplan für ein vernetztes Computersystem nach 1A ist,
  • 2 ein Flussdiagramm ist, welches einen Teil einer Ausführungsform der Erfindung für die Zuweisung von Cache-Speicherraum in einem Computersystem mit mehreren Prozessoren veranschaulicht,
  • 3 ein Flussdiagramm ist, welches einen Teil einer anderen Ausführungsform der Erfindung für die Zuweisung von Speicherraum in einem Computersystem mit einem Prozessor veranschaulicht,
  • 4 ein Flussdiagramm ist, welches die Ausführungsform des Zuordnungsschemas nach 2 veranschaulicht,
  • 5A5C Flussdiagramme sind, die eine andere Ausführungsform der Erfindung zeigen.
  • In der folgenden Beschreibung liefern zahlreiche Details ein umfassendes Verständnis der Erfindung. Diese Details umfassen Funktionsblöcke und eine beispielhafte Cache-Architektur, um ein kosteneffizientes Schema für die Zuweisung von Speicherressourcen, zum von Beispiel Cache-Speichern, eines Computersystems, zu unterstützen. Zusätzlich ist die vorliegende Erfindung, während sie unter Bezug auf ein spezielles Cache-Zuweisungsschema beschrieben wird, welches eine Betriebsartauswahl für ein NUMA/COMA-Multiprozessor-Computersystem beinhaltet, auf einen breiten Bereich von Cache- und Systemarchitekturen anwendbar. In ande ren Fällen bzw. in anderer Hinsicht werden wohlbekannte Schaltkreise und Strukturen nicht im Einzelnen beschrieben, um die Erfindung nicht unnötig zu verschleiern.
  • Eine hybride Nur-Cache-Speicherarchitektur/nicht-gleichförmige Speicherarchitektur (COMA/NUMA) mit einem gemeinsam verwendeten globalen Speicheradressraum und einem kohärenten Cache-System für ein vernetztes Computersystem bietet eine geeignete, beispielhafte Hardwareumgebung für die Implementierung der vorliegenden Erfindung.
  • 1A ist ein Blockdiagramm, welches ein solches hybrides COMA/NUMA-Computersystem 100 zeigt. Das System 100 umfasst eine Mehrzahl von Teilsystemen bzw. Untersystemen (Knoten) 110, 120, ... 180, die über eine globale Verbindung 190 miteinander verbunden sind. Jedem Teilsystem bzw. Untersystem ist eine eindeutige Netzwerkknotenadresse zugewiesen. Jedes Teilsystem umfasst einen oder mehrere Prozessoren, eine entsprechende Anzahl von Speichererweiterungseinheiten (MMUs) und hybride Caches zweiter Ebene (second-level caches – L2$s), einen COMA-Cache/Speicher, eine globale Schnittstelle, einen Cache dritter Ebene (L3$) und eine lokale Verbindung. Beispielsweise umfasst das Teilsystem 110 die Prozessoren 111a, 111b ... 111i, die MMUs 112a, 112b, ... 112i, L2$s 113a, 113b, ... 113i, den COMA-Cache/Speicher 114, die globale Schnittstelle 115, den L3$ 118 und die lokale Verbindung 119. In diesem Beispiel kann jeder der Prozessoren 111a, 111b, ... 111i einen optionalen, kompakten Cache erster Ebene (L1$) umfassen (nicht in 1A dargestellt).
  • Um ein verzeichnisbasiertes Cache-Kohärenz-Schema zu unterstützen, umfassen die Teilsysteme 110, 120, ... 180 auch Verzeichnisse 116, 126, ... 186, die jeweils mit globalen Schnittstellen 115, 125, ... 185 verbunden sind. Daten, die von irgendeinem der COMA-Caches/Speicher 114, 124, ... 184 stammen, das heißt deren „Heimat"-Ort dieses ist, können in dem Anziehungsspeicher (AM) des Systems 100 dupliziert werden. Beispielsweise enthält in der COMA-Betriebsart der Cache eines Teilsystems sowohl COMA-Cache/Speicher 114, 124, ... 184 als auch L2$s 113a ... 113i, 123a ... 123i und 183a ... 183i und Daten, deren „Heimat" in dem Cache-Speicher 114 des Teilsystems 110 ist, können in einem oder mehreren der Cache-Speicher 124, ... 184 dupliziert werden und können auch in einem oder mehreren der L2$s 113a ... 113i, 123a ... 123i, und 183a ... 183i dupliziert werden. Alternativ enthält im NUMA-Betrieb der Cache eines Teilsystems L2$s 113a ... 113i, 123a ... 123i, und 183a ... 183i, und Daten, deren „Heimat" sich in dem Cache-Speicher 114 des Teilsystems 110 befindet, können in einen oder mehrere der L2$s 113a ... 113i, 123a ... 123i und 183a ... 183i und möglicherweise auch in L3$ 118, 128 ... 188 dupliziert werden.
  • In einer Ausführungsform der vorliegenden Erfindung, wie sie in den beispielhaften hybriden COMA/NUMA-Computersystemen 100 nach 1A implementiert ist, ist der „Heimat"-Ort der Daten in dem COMA-Cache/Speicher 124 des Teilsystems 120, das heißt das Teilsystem 120 ist sowohl das Heimat- als auch das Besitzer-Teilsystem für die Daten. Kopien der Daten können auch in dem Anziehungsspeicher-(AM)-Raum eines oder mehrerer der anfordernden Teilsysteme gespeichert werden, beispielsweise in dem AM-Speicherraum des anfordernden Teilsystems 110 durch Zuweisung von Speicherraum in dem COMA-Cache/Speicher 114 und/oder in den Hybrid-Cache zweiter Ebene (L2$s) 113a, 113b, ... 113i.
  • Das Heimatverzeichnis 126 ist für die Aufbewahrung einer Hauptaufzeichnung existierender Kopien der Heimatseite in dem gesamten System 100 verantwortlich. Zusätzlich verfolgen Speicheranhänge (MTAGs), die zu den jeweiligen AM-Verzeichnissen, das heißt den Verzeichnissen 116 und 186, gehören, den Zustand der lokalen Kopien in jedem anfordernden Teilsystem unter Verwendung eines von vier beispielhaften Zuständen. Ein Ungültigkeits(„I")-Zustand zeigt an, dass das betreffende Teilsystem keine (im Cache aufgenommene) Kopie einer interessierenden Datenzeile hat. Ein Zustand der gemeinsamen Verwendung („S") zeigt an, dass das Teilsystem und möglicherweise auch weitere Teilsysteme eine gemeinsam verwendete (im Cache aufgenommene) Kopie der interessierenden Datenzeile hat. Ein Besitzzustand („O") zeigt an, dass das Teilsystem und möglicherweise auch andere Teilsysteme eine (im Cache aufgenommene) Kopie der interessierenden Datenzeile hat. Das Teilsystem mit der O-Kopie muss nach dem Austausch ein Zurückschreiben durchführen. Ein modifizierter Zustand („M") zeigt an, dass das Teilsystem die einzige (im Cache aufgenommene) Kopie der interessierenden Datenzeile hat, das heißt das Teilsystem ist der einzige Besitzer der Datenzeile und es gibt keine S-Kopien in den anderen Teilsystemen.
  • In dieser Implementierung wird ein Einschluss zwischen den L1$s und den L2$s aufrechterhalten, jedoch ist kein Einschluss zwischen den L2$s und den Caches dritter Ebene (L3$s) erforderlich. Mit anderen Worten, Daten, die in L1$ residieren, residieren auch in einem entsprechenden L2$. Daten jedoch, die in den L1$ oder L2$ residieren, müssen nicht notwendigerweise auch in einem entsprechenden L3$ residieren. Der L3$ kann also möglicherweise keine Cache-Zeile von Daten zuordnen, selbst wenn Speicherraum für die Cache-Zeile von Daten in dem L2$ zugewiesen ist.
  • In der folgenden Beschreibung stellt das Auswahlschema der vorliegenden Erfindung fest, ob eine bestimmte Datenstruktur, welche gerade in einem Cache niedrigerer Ebene (LLC) gespeichert wird, zum Beispiel in dem L2$ 113a oder in dem L3$ 118, nunmehr in einem Cache höherer Ebene (HLC), beispielsweise dem COMA-Cache 114 eines anfordernden Teilsystems 110 in einer hybriden COMA/NUMA-Umgebung gespeichert werden sollte oder nicht. Dementsprechend kann dieses Auswahlschema verwendet werden, um zu bestimmen, wenn Daten, die gerade im NUMA-Betrieb gespeichert werden, nunmehr im COMA-Betrieb gespeichert werden sollten. Es versteht sich jedoch, dass das Auswahlschema auf alle Cache-Ebenen und auf eine Vielzahl von Cache- und Systemarchitekturen anwendbar ist.
  • 2 ist ein Flussdiagramm, welches einen zugrunde liegenden Aspekt der vorliegenden Erfindung zeigt, wie sie auf einem Multiprozessor-Computersystem 100 implementiert ist. Man beachte, dass aus Gründen der Effizienz sowohl der L2$ als auch der L3$ gleichzeitig Daten zuweisen und in einer Cache-Zeile speichern.
  • Wenn der Prozessor 111a des anfordernden Teilsystems 110 eine Datenanforderung ausgibt, wird eine Suche nach Daten in dem L2$ 113a und dann in dem L3$ 118 durchgeführt (Schritt 210). Wenn die Daten nicht innerhalb des anfordernden Teilsystems 110 gefunden werden, das heißt von dem Teilsystem 110 ein Cache-Fehlzugriff erfasst wird, so wird eine Anforderung an das Heimatteilsystem 120 durchgeführt, um die Daten heranzuholen (Schritt 220).
  • Das anfordernde Teilsystem 110 versucht dann festzustellen, ob der Cache-Fehlzugriff ein „vermeidbarer" Cache-Fehlzugriff ist (Schritt 230). Ein Cache-Fehlzugriff ist vermeidbar, wenn der Cache-Fehlzugriff dadurch hätte vermieden werden können, dass die Daten in dem L3$ 118 geblieben wären. Ein Beispiel eines vermeidbaren Cache-Fehlzugriffs ist ein „überschüssiger" Cache-Fehlzugriff, der als ein Cache-Fehlzugriff definiert wird, dem ein Kapazitätsfehlzugriff oder Konfliktfehlzugriff voranging. Andere Ursachen von vermeidbaren Cache-Fehlzugriffen kann man sich ebenfalls vorstellen. Diese Cache-Fehlzugriffe umfassen Cache-Fehlzugriffe, welche durch Neukonfigurierung von L3$ 118 vermeidbar wären, um neuen Cache-Speicherraum in L3$ 118 frei zu machen, anstatt ältere Daten zu ersetzen durch beispielsweise dynamisches Neubemessen der Größe (Vergrößern) des L3$ 118.
  • In dieser Implementierung wählt das Heimatverzeichnis 126 des Heimatteilsystems 120 eine Liste von anfordernden Teilsystemen mit einer gemeinsam verwendeten (S)Kopie der Daten, die in jeder Cache-Zeile gespeichert sind, beispielsweise in einem Feld dir_share-bit [node], wobei node = 1, ... n und n die Gesamtzahl an Teilsystemen ist. Zusätzlich umfasst das Heimatverzeichnis 126 die Identität des aktuellen Besitzers (Besitzer-ID) der Daten in jeder Cache-Zeile. Wenn es also aktuell keinen Besitzer gibt, so identifiziert owner_ID den letzten Besitzer. Das Heimatverzeichnis 126 umfasst auch ein Rückschreibebit (wb_bit), welches anzeigt, ob der letzte Besitzer die Daten in den Speicher zurückgeschrieben hat oder ob er noch immer der Besitzer ist. Der letzte Schreiber (last write) der Daten kann aus der jeweiligen Besitzer_ID und den Feldern wb_bit in dem Verzeichnis 126 bestimmt werden. Dementsprechend kann ein überschüssiger Cache-Fehlzugriff durch eine Boolsche Gleichung wiedergegeben werden, wie zum Beispiel:
    (RTS & dir_share-bit [node] = 1) OR (RTO & last_write = node),
    wobei RTS ein Lesen zum Zwecke des gemeinsamen Verwendens und RTO ein Lesen zum Zwecke des Besitzens ist.
  • In einer Variante ist das Verzeichnis 126 ein Verzeichnis-Cache, welcher Zustandsinformationen über die Cache-Zeile hat, auf die als letztes zugegriffen wurde.
  • In dieser Variante können nur vermeidbare Fehlzugriffe, deren jeweiliger Eintrag in diesem Verzeichnis-Cache liegt, bewirken, dass das anfordernde Teilsystem 110 Speicherraum in dem L3$ 118 zuweist.
  • Wenn das anfordernde Teilsystem 110 einen vermeidbaren Fehlzugriff erfasst, so wird in dem L3$ 118 zum Speichern der Daten eine geeignete Stelle zugewiesen (Schritt 250). Die geeignete Stelle kann zugewiesen werden, indem man zunächst nach einer freien Stelle oder einer Stelle sucht, die ungültige oder abgelaufene Daten enthält (Schritt 260). Wenn keine leere oder ungültige Stelle gefunden werden kann, so wird eine verwendete Stelle zugewiesen und es ist ein Ersatz für die verschobenen bzw. ausgetauschten Daten erforderlich. Die verwendete Stelle kann unter den in Verwendung befindlichen Stellen nach dem Zufallsprinzip ausgewählt werden. Alternativ kann ein Auswahlkriterium, wie zum Beispiel nach dem Prinzip des am weitesten zurückliegenden Gebrauchs (least-recently-used (LRU)) oder nach dem Prinzip des Gebrauchs mit der geringsten Häufigkeit (least-frequently-used – LFU) angewendet werden, um eine Stelle unter den in Verwendung befindlichen Stellen auszuwählen.
  • Wenn ein Ersatz für die aus der ausgewählten, in Verwendung befindlichen Stelle verschobenen Daten erforderlich ist, sendet das anfordemde Teilsystem 110 die verschobenen Daten zurück an ihr Besitzer-Teilsystem (Schritt 265).
  • Wenn umgekehrt der Cache-Fehlzugriff kein vermeidbarer Cache-Fehlzugriff ist, jedoch eine leere Position in dem Cache 118 vorhanden ist (Schritte 230 und 240), so wird die leere Speicherstelle dem Cache 118 zugewiesen und die Daten werden an der zugewiesenen Stelle gespeichert (Schritte 255 und 270). Wenn anderenfalls der Cache-Fehlzugriff kein vermeidbarer Cache-Fehlzugriff ist und der Cache 118 voll ist (Schritte 230 und 240), so werden die Daten nicht in dem Cache 118 aufgenommen.
  • In jedem der obigen Fälle werden die Daten für den anfordernden Prozessor 111a bereitgestellt (Schritt 280). Man beachte, dass die Daten für einen anfordernden Prozessor 111a zu jedem Zeitpunkt bereitgestellt werden können, nachdem die Daten von dem Besitzer-Teilsystem 120 herangeholt worden sind, das heißt sie können bereitgestellt werden vor oder nach irgendeinem erforderlichen Cache-Speicherschritt 270.
  • 3 ist ein Flussdiagramm, das eine weitere Ausführungsform der vorliegenden Erfindung zeigt, welche in einem Computersystem mit einem einzigen Prozessor implementiert ist. Auch wenn die vorliegende Beschreibung der Ein-Prozessor-Ausführungsform auf einem Computersystem mit einem Prozessor, einem Cache und einem Hauptspeicher beruht, ist das Auswahlschema ebenso anwendbar auf irgendein beliebiges Ein-Prozessor-Computersystem mit mehreren Caches und/oder Speichern. Beispielsweise kann der Hauptspeicher ein Cache höherer Ebene sein.
  • Wenn der Prozessor eine Datenanforderung ausgibt, so wird eine Suche nach den Daten in dem Cache durchgeführt (Schritt 310). Wenn die Daten nicht gefunden werden, das heißt, wenn ein Cache-Fehlzugriff erfasst wird, holt der Prozessor die Daten aus dem Hauptspeicher (Schritt 320).
  • Der Prozessor versucht dann zu bestimmen, ob der Cache-Fehlzugriff ein „vermeidbarer" Cache-Fehlzugriff ist bzw. war (Schritt 330). Ein Beispiel eines vermeidbaren Cache-Fehlzugriffs in einer Ein-Prozessor-Umgebung liegt dann vor, wenn dieselben Daten zuvor von dem Prozessor angefordert und aus dem Hauptspeicher in den Cache herangeholt worden waren.
  • Wenn der Prozessor einen vermeidbaren Fehlzugriff erfasst, so wird eine geeignete Stelle in dem Cache zum Speichern der Daten zugewiesen (Schritt 350). Die geeignete Stelle kann zugewiesen werden, indem man zunächst nach einer leeren Stelle oder nach einer Stelle sucht, die ungültige oder abgelaufene Daten enthält (Schritt 360). Wenn keine leere oder ungültige Speicherstelle gefunden werden kann, so wird eine in Verwendung befindliche Speicherstelle zugewiesen und ein Ersatz für die verschobenen Daten ist möglicherweise erforderlich. Die verwendete Speicherstelle kann nach dem Zufallsprinzip oder unter Verwendung eines Algorithmus, wie zum Beispiel LRU oder LFU, ausgewählt werden.
  • Wenn der Ersatz für die ausgetauschten Daten aus der in Verwendung befindlichen Speicherstelle erforderlich ist, schreibt der Prozessor die Daten zurück in den Hauptspeicher (Schritt 365). Man beachte, dass sowohl in den Ein-Prozessor- als auch in den Multi-Prozessor-Systemen, soweit ein zwangsweises „Durchschreiben" des/der Caches durchgesetzt wird, die verschobenen Daten einfach verworfen werden können, da die Inhalte des/der Cache(s) und Speicher immer kohärent sind. „Zurückkopier"-Caches können ebenfalls verschobene Daten einfach verwerten, wenn die verschobenen Daten nicht modifiziert worden sind.
  • Wenn umgekehrt der Cache-Fehlzugriff nicht ein vermeidbarer Cache-Fehlzugriff ist, und wenn der Cache nicht voll ist (Schritte 330 und 340), so weist der Prozessor eine leere Speicherstelle in dem Cache zu und die Daten werden an der zugewiesenen Stelle gespeichert (Schritte 355 und 370). Wenn ansonsten der Cache-Fehlzugriff nicht ein vermeidbarer Cache-Fehlzugriff ist und wenn der Cache voll ist (Schritte 330 und 340), so werden die Daten nicht im Cache aufgenommen.
  • In jedem der obigen Fälle werden die Daten für den anfordernden Prozessor bereitgestellt (Schritt 380). Man beachte, dass die Daten für den anfordernden Prozessor vor oder nach dem Schritt 370 der Aufnahme im Cache bereitgestellt werden können.
  • Wie oben gemäß der vorliegenden Erfindung erläutert, wie es durch die 4 und 5A5C veranschaulicht wird, wird eine Feststellung getroffen, ob Daten effizienter gespeichert werden können, wenn Speicherraum in nach Seiten bemessenen Einheiten in einem Cache höherer Ebene (HLC), beispielsweise im COMA-Cache 114, zugewiesen werden können, anstatt in nach Cache-Zeilen bemessenen Teileinheiten in einem Cache niedrigerer Ebene (LLC), beispielsweise im L2$ 113a und/oder L3$ 118 zugewiesen zu werden. Mit anderen Worten, das Auswahlschema legt fest, welche Seite(n) von Daten Nutzen daraus ziehen würde(n), wenn darauf im COMA-Betrieb anstatt im NUMA-Betrieb zugegriffen werden würde.
  • In dieser Implementierung kann die Größe des COMA-Cache 114 während der Programmausführung dynamisch verändert werden und sie kann maximal die Größe des Speicherraumes des lokalen Knotens annehmen. In dem COMA-Cache 114 aufgenommene Daten werden nicht in dem L3$ 118 aufgenommen. Da die COMA-Cache-Größe in einfacher Weise erhöht werden kann und da die Hardwarezusatzlast für die Unterstützung von Datenzugriffen in dem COMA-Cache 114 wesentlich geringer gehalten werden kann als die Handwarezusatzlast zum Unterstützen von Datenzugriffen im L3$ 118, kann das Umwandeln von Seiten aus dem NUMA- in den COMA-Betrieb die Datenzugriffsanforderung von dem L3$ 118 verringern.
  • Gemäß 4 werden Komponenten eines Blockes von Daten, beispielsweise Cache-Zeilen von einer Seite von Daten kontinuierlich in einem Cache niedrigerer Ebene (LLC) gespeichert und ersetzt, wobei die Anzahl der im Cache aufgenommenen Komponenten fluktuiert (Schritt 410). In dieser Implementierung werden Feststellungen getroffen, ob die in dem LLC aufzunehmenden individuellen Cache-Zeilen in der oben beschriebenen und in den 2 und 3 gezeigten beispielhaften Weise vorgenommen werden. Cache-Zeilen können jedoch auch auf der Basis anderer Kriterien in dem LLC aufgenommen werden oder sie können einfach jedes Mal dann im Cache aufgenommen werden, wenn die entsprechenden Cache-Zeilen durch ein Teilsystem angefordert werden.
  • Schließlich erfasst das Teilsystem 110 ein Auslösesignal zur Überprüfung der Zuweisung von Speicherraum in dem LLC (Schritt 420). Man beachte, dass eine Überprüfung der LLC-Speicherzuweisung auf eine ganze Anzahl von Arten ausgelöst werden kann. Beispielsweise kann eine Zuweisungsüberprüfung ausgelöst werden, wenn die Ausnutzung des Caches höherer Ebene (HLC), zum Beispiel des COMA-Cache 114, unter einen Schwellenwert herabsinkt, oder wenn der LLC auf Grund zu zahlreicher Datenaustausche zu viel Last aufnimmt, oder wann immer ein Zeitgeber des Systems 100 abläuft.
  • Nach Erfassen eines Signals zur Speicherüberprüfung überprüft das Teilsystem 110 die Inhalte des LLC (Schritt 430) und identifiziert Seiten von Daten, die eine beträchtliche Anzahl von Cache-Zeilen haben, welche in dem LLC vorhanden sind (Schritt 440). Wenn irgendwelche neuen Blöcke von Daten ein Nachprüfungskriterium erfüllen, wenn beispielsweise die Anzahl von Cache-Zeilen einer Seite einen Schwellenwert überschreitet, so wird ein Speicherblock (Seite) in dem HLC für den neuen Datenblock zugewiesen (Schritt 450). Dieser Schwellenwert kann vorbestimmt sein oder über Software auswählbar sein.
  • Wenn der HLC voll ist, sollte ein alter Block an Daten für den Ersatz bzw. Austausch ausgewählt (Schritt 460) werden. Es sind verschiedene Variationen des Blockauswahlprozesses möglich. Beispielsweise kann der ausgewählte alte Datenblock der am weitesten zurückliegend verwendete (LRU)-Block von Daten sein. Andere wohlbekannte Speicheraustauschkriterien schließen das der am wenigsten häufigen Verwendung ein.
  • Nachdem ein alter Block von Daten für den Austausch ausgewählt worden ist, kann ein Zurückschreibevorgang des alten Datenblockes erforderlich sein, je nachdem in dem HLC implementierten Austauschprotokoll. In diesem Beispiel wird, da der HLC, zum Beispiel der COMA-Cache 114, ein Rückkopier-Cache ist, der ersetzte Datenblock an seine entsprechende Heimatstelle zurückgeschrieben (Schritt 470). Umgekehrt kann, wenn der HLC ein Durchschreibe-Cache ist, der ausgetauschte Datenblock einfach verworfen werden. In jedem Fall können nunmehr Komponenten des neuen Datenblockes in dem neu zugewiesenen Blockraum in dem HLC im Cache aufgenommen werden (Schritt 480).
  • In einer weiteren alternativen Ausführungsform der Erfindung, wie sie in 5A dargestellt ist, kann eine Nachprüfung der Speicherzuweisung ausgelöst werden, nachdem ein Cache-Fehlzugriff im Zusammenhang mit einer Komponente aus einem Block von Daten steht. Dementsprechend wird, wenn ein Cache-Fehlzugriff vorliegt, das heißt eine zu einem Block von Daten gehörige Komponente weder in dem LLC noch in dem HLC gefunden wird (Schritt 510), die Komponente von der Heimatstelle (dem Heimatort) herangeholt (Schritt 520). Wenn andere Komponenten, die zu demselben Block von Daten gehören, aktuell in dem HLC gespeichert sind, das heißt Speicherraum für den zugehörigen Datenblock bereits in dem HLC zugewiesen worden ist, so wird die Komponente innerhalb desselben zugewiesenen Speicherblockes in dem HLC gespeichert (Schritt 570).
  • Wenn umgekehrt Speicherraum für den zugehörigen Block noch nicht in dem HLC zugewiesen worden ist (Schritt 530), und das Teilsystem 110 feststellt, dass eine Überprüfung der Cache-Zuweisung zwischen dem HLC und dem LLC an der Zeit ist (Schritt 540), so stellt das Teilsystem 110 fest, ob die Gesamtzahl zugewiesener Komponenten, die in dem LLC aufgenommen ist, den Schwellenwert bzw. Grenzwert überschreitet (Schritt 550). Der Grenzwert bzw. der Schwellenwert kann ein vorbestimmter Wert sein oder er kann ein dynamisch auswählbarer Wert sein. Wenn der Schwellenwert überschritten wird, so wird der Speicherraum für den zugehörigen Block in dem HLC zugewiesen (Schritt 560).
  • 5B zeigt den HLC-Zuweisungsschritt 560 im Detail. Wenn der HLC voll ist (Schritt 561), so kann, je nachdem, ob der HLC ein Zurückschreibe- oder Durchschreibe-Cache ist, ein Zurückschreiben der verschobenen Daten an die Heimatstelle erforderlich sein. In diesem Beispiel wird, da der HLC, das heißt der COMA-Cache 114, ein Rückkopier-Cache ist, ein Zurückschreiben des ausgetauschten bzw. verschobenen Blockes ausgelöst, bevor der frei gemachte Block an Speicherraum in dem HLC erneut beschrieben werden kann (Schritte 562 und 563). Wenn umgekehrt leerer Speicherraum in dem HLC vorhanden ist, wird ein Block an leerem Speicherraum für den neuen Datenblock zugewiesen (Schritte 561 und 564).
  • Gemäß 5A kann nun, nachdem Speicherraum in dem HLC für den neuen Datenblock zugewiesen worden ist, die zu dem neuen Block gehörige Komponente nunmehr in dem HLC gespeichert werden (Schritt 570). In dieser Implementierung wird die Komponente optional in dem LLC gespeichert (Schritt 580).
  • Gemäß 5C kann die vorliegende Ausführungsform mit einer selektiven Cache-Aufnahmemethode umgesetzt werden. Dementsprechend wird, anstatt dass bei jedem Cache-Fehlzugriff einfach in dem LLC aufgenommen wird, eine Komponente nur dann im Cache aufgenommen, wenn ein „vermeidbarer" Fehlzugriff vorliegt (Schritt 581). Ein Beispiel eines vermeidbaren Fehlzugriffes ist ein „überschüssiger" Fehlzugriff, wie zum Beispiel ein Kapazitäts-Fehlzugriff oder ein Konflikt-Fehlzugriff.
  • Wenn der Cache-Fehlzugriff ein vermeidbarer Fehlzugriff ist, so wird Speicherraum in dem LLC für diese Komponente zugewiesen (Schritt 583). Je nachdem, ob der LLC ein Rückkopier- oder Durchschreibe-Cache ist, kann ein Zurückschreiben einer ersetzten Komponente an ihre Heimatstelle erforderlich sein. In diesem Falle wird, da der LLC, zum Beispiel L2$ 113a, ein Rückkopier-Cache ist, ein Zurückschreiben der ersetzten Komponente ausgelöst, bevor die neue Komponente in dem LLC gespeichert werden kann (Schritte 584, 586 und 587). Wenn hingegen leerer Speicherraum in dem LLC vorhanden ist, so wird Speicherraum zugewiesen und die neue Komponente wird in dem LLC gespeichert (Schritte 582, 585 und 587).
  • Wiederum gemäß 5A wird in jedem der obigen Fälle die Datenkomponente für den anfordernden Prozessor bereitgestellt (Schritt 590). Man beachte, dass die Daten für den anfordernden Prozessor jederzeit bereitgestellt werden können, nachdem die Komponenten von der Heimatstelle herangeholt worden sind (Schritt 520), das heißt entweder vor oder nachdem die Komponente in dem HLC und/oder dem LLC aufgenommen worden ist.
  • Es sind verschiedene Optimierungen des oben beschriebenen Speicherauswahlmechanismus möglich. Beispielsweise kann anstelle der automatischen Cache-Aufnahme von Komponenten, die zu einem neuen Block von Daten gehören, in dem Cache höherer Ebene, wann immer die Anzahl zugehöriger Komponenten, die in dem Cache niedrigerer Ebene aufgenommen sind, einen Schwellenwert überschreitet, der neue Block nur dann in dem HLC aufgenommen werden, wenn die Anzahl von im Cache aufgenommenen Komponenten in dem LLC die Anzahl von Cache-Treffern überschreitet, die den älteren Block betreffen, der gerade in dem HLC aufgenommen ist und der für den Austausch ausgewählt worden ist. Der Schutzumfang der Erfindung sollte durch die folgenden Ansprüche festgelegt werden.

Claims (13)

  1. Verfahren zum Verwenden von Speicherraum in einem Computersystem (110), welches einen Cache auf niedrigerer Ebene (lower level cache) und einen Cache auf höherer Ebene (higher level cache) hat, wobei das Verfahren die Schritte aufweist: schrittweises Speichern (410) von Datenkomponenten eines Blockes von Daten in dem Cache niedrigerer Ebene, Erfassen (420, 430, 440), ob die Anzahl der zu dem Datenblock gehörenden Datenkomponenten, welche in dem Cache niedrigerer Ebene gespeichert sind, einen Grenzwert überschreiten, und bei einer solchen Erfassung: Zuordnen (450) von Speicherraum für den Datenblock in dem Cache höherer Ebene, um die Datenkomponenten aus dem Datenblock zu speichern, und Speichern (480) der Datenkomponenten, die zu dem Datenblock gehören, in dem zugeordneten Speicherraum des Caches höherer Ebene.
  2. Verfahren nach Anspruch 1, wobei der Cache höherer Ebene ein Hauptspeicher ist.
  3. Verfahren nach Anspruch 1, wobei der Cache niedrigerer Ebene eine Mehrzahl von Cachezeilen enthält und wobei der Cache höherer Ebene eine Mehrzahl von Seiten enthält, wobei jede Seite eine Mehrzahl von Cachezeilen enthält und wobei die Komponenten die Größe von Cachezeilen haben und der Block von Daten die Größe einer Seite hat.
  4. Verfahren nach Anspruch 3, wobei das Computersystem eine hybride Architektur aus einer nur-Cache-Speicherarchitektur/nicht gleichförmigen Speicherarchitektur (COMA/NUMA) hat und das Speichern in dem Cache niedrigerer Ebene dem Speichern im NUMA-Betrieb entspricht, während das Speichern in dem Cache höherer Ebene einem Speichern in einem CO-MA-Betrieb entspricht.
  5. Verfahren nach Anspruch 1, wobei der Schritt des schrittweisen bzw. stufenweisen Speicherns nur ausgeführt wird, wenn ein zugehöriger Cachefehlzugriff in dem Cache niedrigerer Ebene ein vermeidbarer Cachefehlzugriff war.
  6. Verfahren nach Anspruch 5, wobei der vermeidbare Cachefehlzugriff ein Fehlzugriff, wie z.B. ein Kapazitätsfehlzugriff oder ein Konfliktfehlzugriff ist.
  7. Cacheresourcenzuweiser für ein Computersystem 8110), welches einen Prozessor (111a), einen Hauptspeicher zum Speichern von Blöcken von Daten, wobei jeder Block eine Mehrzahl von Datenkomponenten umfaßt, einen Cache niedrigerer Ebene (113c; 118), um Kopien der Datenkomponenten in dem Cache aufzunehmen und einen Cache höherer Ebene (114), um Kopien der Blöcke von Daten in dem Cache aufzunehmen, wobei der Cacheresourcenzuweiser aufweist: einen Zähler, der mit dem Cache niedrigerer Ebene verbunden ist und dafür ausgelegt ist festzustellen, ob die Anzahl von Datenkomponenten, die einem der Blöcke zugeordnet sind, welche in dem Cache niedrigerer Ebene aufgenommen sind, einen Grenzwert übersteigen, wobei der Zähler bei einer solchen Feststellung bewirkt, daß Speicherraum für den einen der Blöcke in dem Cache höherer Ebene zugewiesen wird, um die im Cache aufgenommenen Datenkomponenten, die zu dem einen der Blöcke gehören, zu speichern, und weiterhin bewirkt, daß die im Cache aufgenommenen Datenkomponenten, die zu dem einen der Blöcke gehören, in dem zugewiesenen Speicherraum des Caches höherer Ebene gespeichert werden.
  8. Computersystem (110), welches aufweist: einen Prozessor (111a), einen Hauptspeicher, der mit dem Prozessor verbunden ist und dafür ausgelegt ist, Blöcke von Daten zu speichern, wobei jeder Block eine Mehrzahl von Datenkomponenten umfaßt, einen Cache niedrigerer Ebene (113a; 118), der mit dem Prozessor verbunden ist und dafür ausgelegt ist, in dem Cache Kopien der Datenkomponenten aufzunehmen, einen Cache höherer Ebene (114), der mit dem Cache niedrigerer Ebene verbunden ist und dafür ausgelegt ist, Kopien der Blöcke von Daten im Cache aufzunehmen, und einen Cacheresourcenzuweiser nach Anspruch 7.
  9. Computersystem nach Anspruch 8, wobei der Cache niedrigerer Ebene eine Mehrzahl von Cachezeilen aufweist und der Cache höherer Ebene eine Mehrzahl von Seiten umfaßt, wobei jede Seite eine Mehrzahl von Cachezeilen umfaßt und wobei die Datenkomponenten in der Größe von Cachezeilen vorliegen und der Datenblock in der Größe einer Seite vorliegt.
  10. Computersystem nach Anspruch 8, wobei die Datenkomponente in dem Cache niedrigerer Ebene nur nach Erfassung eines vermeidbaren Cachefehlzugriffs aufgenommen wird.
  11. Computersystem nach Anspruch 10, wobei der vermeidbare Cachefehlzugriff ein Zugriffsfehlzugriff, wie z.B. ein Kapazitätsfehlzugriff oder ein Konfliktfehlzugriff, ist.
  12. Computerprogramm, welches Programmcodemodule für die Zuweisung von Speicherresourcen in einem Computersystem (110) hat, mit einem Prozessor (111a), einem Hauptspeicher für das Speichern von Blöcken von Daten, wobei jeder Block eine Mehrzahl von Datenkomponenten enthält, einem Cache niedrigerer Ebene (113a, 118), für die Cacheaufnahme von Kopien der Datenkomponenten und einem Cache höherer Ebene (114) für die Cacheaufnahme von Kopien der Blöcke von Daten, wobei die Codemodule, wenn sie in dem Computersystem ausgeführt werden, in der Weise betreibbar sind, daß sie: bestimmen, ob die Anzahl von Datenkomponenten, die zu einem der Blöcke gehören, welche in dem Cache niedrigerer Ebene aufgenommen sind, einen Grenzwert überschreiten, und in Reaktion auf diese Feststellung Speicherraum für den einen der Blöcke in dem Cache höherer Ebene zuordnen, um die Datenkomponenten des einen Blockes von Daten zu speichern, und um die Datenkomponenten des einen Blockes von Daten in dem zugewiesenen Speicherraum des Caches höherer Ebene zu speichern.
  13. Computerprogramm nach Anspruch 12, welches in einem computerlesbaren Medium verkörpert ist.
DE69737116T 1996-07-01 1997-06-30 Mehrstufiger Cachespeicher Expired - Lifetime DE69737116T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/674,029 US5802563A (en) 1996-07-01 1996-07-01 Efficient storage of data in computer system with multiple cache levels
US674029 1996-07-01

Publications (2)

Publication Number Publication Date
DE69737116D1 DE69737116D1 (de) 2007-02-01
DE69737116T2 true DE69737116T2 (de) 2007-07-19

Family

ID=24705041

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737116T Expired - Lifetime DE69737116T2 (de) 1996-07-01 1997-06-30 Mehrstufiger Cachespeicher

Country Status (4)

Country Link
US (1) US5802563A (de)
EP (1) EP0817080B1 (de)
JP (1) JP4068185B2 (de)
DE (1) DE69737116T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958068A (en) * 1997-04-14 1999-09-28 International Business Machines Corporation Cache array defect functional bypassing using repair mask
US5996049A (en) * 1997-04-14 1999-11-30 International Business Machines Corporation Cache-coherency protocol with recently read state for data and instructions
US6148375A (en) * 1998-02-13 2000-11-14 International Business Machines Corporation Hierarchical bus simple COMA architecture for shared memory multiprocessors having a bus directly interconnecting caches between nodes
US6205537B1 (en) * 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US6338117B1 (en) * 1998-08-28 2002-01-08 International Business Machines Corporation System and method for coordinated hierarchical caching and cache replacement
US6314500B1 (en) * 1999-01-11 2001-11-06 International Business Machines Corporation Selective routing of data in a multi-level memory architecture based on source identification information
US6775745B1 (en) * 2001-09-07 2004-08-10 Roxio, Inc. Method and apparatus for hybrid data caching mechanism
US6721852B2 (en) * 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US7302455B1 (en) * 2002-02-26 2007-11-27 At&T Bls Intellectual Property, Inc. System and method for reliably purging statistical records
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7089356B1 (en) * 2002-11-21 2006-08-08 Oracle International Corporation Dynamic and scalable parallel processing of sequence operations
US7058773B1 (en) 2003-01-16 2006-06-06 Cisco Technology, Inc. System and method for managing data in a distributed system
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US9600417B2 (en) * 2015-04-29 2017-03-21 Google Inc. Data caching
CN111158578B (zh) * 2018-11-08 2022-09-06 浙江宇视科技有限公司 存储空间管理方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4181937A (en) * 1976-11-10 1980-01-01 Fujitsu Limited Data processing system having an intermediate buffer memory
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US5136700A (en) * 1989-12-22 1992-08-04 Digital Equipment Corporation Apparatus and method for reducing interference in two-level cache memories
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
US5450563A (en) * 1992-10-30 1995-09-12 International Business Machines Corporation Storage protection keys in two level cache system
JP2809962B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 資源管理方式
US5535116A (en) * 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
WO1995012165A1 (en) * 1993-10-22 1995-05-04 Gestalt Technologies, Incorporated Distributed management in a partitioned memory system
US5577227A (en) * 1994-08-04 1996-11-19 Finnell; James S. Method for decreasing penalty resulting from a cache miss in multi-level cache system
US5640520A (en) * 1995-05-01 1997-06-17 Intel Corporation Mechanism for supporting out-of-order service of bus requests with in-order only requesters devices
US5634110A (en) * 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors

Also Published As

Publication number Publication date
JP4068185B2 (ja) 2008-03-26
US5802563A (en) 1998-09-01
EP0817080B1 (de) 2006-12-20
DE69737116D1 (de) 2007-02-01
EP0817080A2 (de) 1998-01-07
JPH10214224A (ja) 1998-08-11
EP0817080A3 (de) 1998-01-21

Similar Documents

Publication Publication Date Title
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69737116T2 (de) Mehrstufiger Cachespeicher
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE69715203T2 (de) Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69716663T2 (de) Prozesszuweisung in einem Mehrrechnersystem
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69604734T2 (de) Client-Server-Computersystem und Verfahren zum Verwenden eines lokalen Plattenlaufwerks als Daten-Cache
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
EP0817078A2 (de) Cachespeicherbereich-Zuordnung in einem Rechnersystem
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE2226382B2 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112005002180T5 (de) Lösen von Cachekonflikten
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition