DE10232926B4 - Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems - Google Patents

Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems Download PDF

Info

Publication number
DE10232926B4
DE10232926B4 DE10232926A DE10232926A DE10232926B4 DE 10232926 B4 DE10232926 B4 DE 10232926B4 DE 10232926 A DE10232926 A DE 10232926A DE 10232926 A DE10232926 A DE 10232926A DE 10232926 B4 DE10232926 B4 DE 10232926B4
Authority
DE
Germany
Prior art keywords
cache
cache line
group
lines
cache lines
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 - Fee Related
Application number
DE10232926A
Other languages
English (en)
Other versions
DE10232926A1 (de
Inventor
Blaine D. Fort Collins Gaither
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to DE10262164A priority Critical patent/DE10262164B4/de
Publication of DE10232926A1 publication Critical patent/DE10232926A1/de
Application granted granted Critical
Publication of DE10232926B4 publication Critical patent/DE10232926B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Abstract

Verfahren zur Aufrechterhaltung der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems mit einem Bus (106), über den eine maximale Anzahl von Cachezeilen als Gruppe übertragen wird, wobei die Anzahl der tatsächlich übertragenen Cachezeilen einer Gruppe von den Besitzverhältnissen innerhalb der Gruppe abhängt.

Description

  • Diese Erfindung bezieht sich allgemein auf ein Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems.
  • Die meisten Computersysteme verwenden eine aus mehreren Ebenen bestehende Hierarchie von Speichersystemen, wobei sich relativ schnelle, teure Speicher mit begrenzter Kapazität auf der höchsten Ebene der Hierarchie befinden und sich relativ langsamere, kostengünstigere Speicher mit höherer Kapazität auf der untersten Ebene der Hierarchie befinden. In der Regel umfaßt die Hierarchie einen kleinen schnellen Speicher, der als Cache bezeichnet wird, der entweder physisch in eine prozessorintegrierte Schaltung integriert oder der Geschwindigkeit halber physisch nahe des Prozessors angebracht ist. Es können getrennte Anweisungscaches und Datencaches vorliegen. Es können mehrere Ebenen von Caches vorliegen.
  • Viele Computersysteme verwenden mehrere Prozessoren, von denen jeder mehrere Ebenen von Caches aufweisen kann. Es können manche Caches durch mehrere Prozessoren gemeinsam verwendet werden. Alle Prozessoren und Caches können einen gemeinsamen Hauptspeicher verwenden. Eine bestimmte Cachezeile kann gleichzeitig in einem Speicher und in den Cache-Hierarchien für mehrere Prozessoren vorhanden sein. Alle Kopien einer Cachezeile in den Caches müssen identisch sein, eine Eigenschaft, die als Kohärenz bezeichnet wird. Die Protokolle zum Aufrechterhalten einer Kohärenz für mehrere Prozessoren werden als Cache-Kohärenzprotokolle bezeichnet.
  • Ein Cache „besitzt" eine Cachezeile, wenn der Cache über eine Erlaubnis verfügt, die Cachezeile zu modifizieren, ohne weitere Kohärenztransaktionen auszugeben. Es kann lediglich einen „Besitzer" einer Cachezeile geben. Für jegliches Cache-Kohärenzprotokoll muß die aktuellste Kopie einer Cachezeile von dem derzeitigen Besitzer, falls vorhanden, wiedergewonnen werden, und dem Anforderer muß eine Kopie der Daten geliefert werden. Falls die Cachezeile modifiziert werden soll, muß der Besitz durch den Anforderer erworben werden, und etwaige gemeinsam verwendete Kopien müssen invalidiert werden.
  • Es gibt drei übliche Ansätze, um die Position des Besitzers einer Cachezeile zu bestimmen, mit vielen Variationen und Zwischenformen. Bei einem Ansatz, der als Snoop-Protokoll bezeichnet wird, ist der Besitzer unbekannt, und alle Caches müssen befragt (snooped) werden, um die Position der aktuellsten Kopie der angeforderten Cachezeile zu bestimmen. Alle Anforderungen eines Zugangs zu einer Cachezeile, seitens einer beliebigen Vorrichtung in dem System, werden zu allen Caches in dem System weitergeleitet. Schließlich wird die aktuellste Kopie einer Cachezeile lokalisiert, und dem Anforderer wird eine Kopie bereitgestellt. Bei einem Einzelbussystem verwenden Kohärenzverkehr (Snooping-Verkehr), Adressen und oft Daten alle einen gemeinsamen Bus.
  • Bei einem zweiten Ansatz, der als ein verzeichnisbasiertes Protokoll bezeichnet wird, wird ein Speicher bereitgestellt, um Informationen über den Zustand jeder Cachezeile in dem Speichersystem zu pflegen. Beispielsweise kann ein Verzeichnis für jede Cachezeile in einem Speicher ein Bit für jede Cache-Hierarchie umfassen, um anzugeben, ob die Cache-Hierarchie eine Kopie der Cachezeile aufweist, und ein Bit, um anzugeben, ob die Cache-Hierarchie einen Besitz aufweist. Für jede Anforderung eines Zugangs zu einer Cachezeile muß das Verzeichnis konsultiert werden, um den Besitzer zu bestimmen, und daraufhin wird die aktuellste Ko pie der Cachezeile wiedergewonnen und dem Anforderer geliefert. In der Regel werden Markierungen und Statusbits für ein Verzeichnis in einem Hauptspeicher gespeichert, so daß eine Anforderung von Zustandsinformationen in dem Hauptspeicher zirkuliert und die Wartezeit des Hauptspeichers aufweist. Bei einem Mehrbussystem kann ein Verzeichnisverkehr auf einem separaten Bus stattfinden.
  • Ein dritter Ansatz ist ein globales Kohärenzfilter, das für jede gültige Cachezeile in dem Cachesystem eine Markierung aufweist. Ein Kohärenzfilter ist ein Snoop-System mit einem zweiten Satz von Markierungen, die zentral gespeichert sind, für alle Caches in dem System. Eine Anforderung einer Cachezeile wird an das zentrale Filter und nicht an alle Caches weitergeleitet. Die Markierungen für ein Kohärenzfilter werden üblicherweise in einem kleinen Hochgeschwindigkeitsspeicher gespeichert. Manche Kohärenzfilter verfolgen eventuell nur im Besitz befindliche Cachezeilen und enthalten vielleicht nicht alle gemeinsam verwendeten Cachezeilen in dem System. Bei einem Mehrbussystem kann ein Kohärenzfilterverkehr auf einem separaten Bus vorliegen.
  • Bei relativ kleinen Systemen mit einem Bus oder mit lediglich einigen wenigen Bussen liefern Snoop-basierte Protokolle die beste Leistungsfähigkeit. Snoop-basierte Systeme mit einem Bus erhöhen jedoch den Busverkehr, und bei großen Systemen mit einem Bus oder mit lediglich einigen wenigen Bussen kann ein Snoop-Verkehr die Gesamtleistungsfähigkeit begrenzen. Verzeichnisbasierte Systeme erhöhen die Zeit, die erforderlich ist, um eine Cachezeile wiederzugewinnen (Latenz bzw. Wartezeit), relativ zu einem Schnüffeln auf einem einzelnen Bus, jedoch erfordert ein Verzeichnis bei einem Mehrbussystem weniger Kohärenzverkehr auf den Systembussen als Snoop-basierte Systeme. Bei großen Mehrbussystemen, bei denen ein Busverkehr wichtiger sein kann als eine Wartezeit, liefern verzeichnisbasierte Systeme in der Regel die beste Gesamtleistungsfähigkeit. Viele Computersysteme sind eine gewisse Art von Zwischenform aus Snoop-basierten und verzeichnisbasierten Protokollen. Bei einem Mehrbussystem können beispielsweise Snoop-basierte Protokolle zum Zweck einer Kohärenz auf jedem lokalen Bus verwendet werden, und verzeichnisbasierte Protokolle können zum Zweck einer sich über mehrere Busse erstreckende Kohärenz verwendet werden.
  • Wenn ein Prozessor eine Cachezeile anfordert, umfaßt die Gesamtzeit, die erforderlich ist, um die Cachezeile wiederzugewinnen (Gesamtwartezeit) (1) die Zeit, die erforderlich ist, um Zugangsrechte unter Verwendung eines Cache-Kohärenzprotokolls zu erwerben, (2) die Zeit, die erforderlich ist, um eine Adresse zu verarbeiten, und (3) die Zeit, die erforderlich ist, um die Daten wiederzugewinnen und zu transferieren. Wie oben erörtert wurde, kann ein Busverkehr für Kohärenzanforderungen eine Gesamtleistungsfähigkeit begrenzen.
  • Eine Möglichkeit, einen Busverkehr für Kohärenzanforderungen zu vermindern, besteht darin, die Cachezeilengröße zu erhöhen. Falls beispielsweise aneinander angrenzende Cachezeilen angefordert werden, erfordert jede Cachezeile eine separate Kohärenzanforderung. Falls eine Cachezeilengröße verdoppelt wird, werden für jede Kohärenzanforderung zweimal so viele Daten gelesen. Ferner ist ein beträchtlicher Teil der Gesamtwartezeit die Zeit, die erforderlich ist, um eine Speicheranforderung zu den verschiedenen Speicherkomponenten zu leiten und die Daten von diesen Komponenten zu erhalten. Größere Cachezeilen stellen mehr Daten für jede Anforderung bereit. Wenn die Cachezeilen jedoch noch größer werden, wird ein Großteil der transferierten Daten nicht benötigt, und ein Großteil des Cache-Raums ist mit Daten gefüllt, die nicht benötigt werden. Dies erhöht den Busverkehr für einen Datentransfer und erhöht die Cache-Fehlgriffrate, die beide die Gesamtleistungsfähigkeit negativ beeinflussen. Ferner kann ein gewisser Bruchteil einer Cachezeile exklusiv durch mehr als einen Prozessor oder Knoten benötigt werden. Dies kann eine übermäßige Cache-Zu- Cache-Kopieraktivität bewirken, da die beiden Prozessoren oder Knoten um einen Besitz kämpfen, und die sich ergebende Anzahl von Kohärenzanforderungen kann steigen.
  • Die US-A-5,787,475 beschreibt ein variable Prefetch-Schema, bei dem eine Anzahl von in einer Gruppe übertragenen Speicherzeilen abhängig von der Hardware des Computersystems bestimmt wird.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zu schaffen, das die zur Aufrechterhaltung der Kohärenz notwendige Busbelastung reduziert.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 gelöst.
  • Die vorliegende Erfindung schafft ein Verfahren zur Aufrechterhaltung der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems mit einem Bus, über den eine maximale Anzahl von Cachezeilen als Gruppe übertragen wird, wobei die Anzahl der tatsächlich übertragenen Cachezeilen von den Besitzverhältnissen innerhalb der Gruppe abhängt.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines beispielhaften Computersystems, das sich zur Verwendung bei der Erfindung eignet;
  • 2 ein Flußdiagramm eines beispielhaften Verfahrens zum Aufrechterhalten einer Kohärenz für eine Cachezeilenanforderung ohne eine Anforderung eines Besitzes;
  • 3 ein Flußdiagramm eines beispielhaften Verfahrens zum Aufrechterhalten einer Kohärenz für eine Cachezeilenanforderung mit einer Anforderung eines Besitzes;
  • 4 ein Flußdiagramm eines beispielhaften alternativen Verfahrens für einen Teil der 3;
  • 5 ein Flußdiagramm einer beispielhaften Alternative zu den Verfahren der 2 bis 4.
  • 1 veranschaulicht ein beispielhaftes Computersystem, das zur Verwendung bei der Erfindung geeignet ist. In 1 sind mehrere Knoten (100, 102 und 104) durch einen Schalter 106 oder eine andere Zwischenverbindung miteinander verbunden. Jeder Knoten umfaßt mehrere Prozessoren (P). Jeder Prozessor umfaßt einen Cache erster Ordnung (C1). Jeder Knoten umfaßt einen gemeinsam verwendeten Cache zweiter Ordnung (C2) und einen gemeinsam verwendeten Speicher (M). Jeder gemeinsam verwendete Speicher umfaßt ein Verzeichnis (D). Die Anzahl der Knoten, die Anzahl der Prozessoren pro Knoten, die Anzahl der Caches, die Position des Speichers und die Verwendung der Verzeichnisse dienen alle lediglich Veranschaulichungszwecken.
  • In bezug auf einen Cache-Fehlgriff sei angenommen, daß die Zeit (Wartezeit), die ein Prozessor benötigt, um eine Cachezeile von einem Cache erster Ordnung von einem anderen Prozessor in seinem eigenen Knoten wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor 108 benötigt, um eine Cachezeile von dem Cache 110 wiederzugewinnen) T Nanosekunden beträgt. Die Zeit, die der Prozessor benötigt, um eine Cachezeile von dem Speicher seines eigenen Knotens wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor 108 benötigt, um eine Cachezeile von dem Speicher 112 wiederzugewinnen) kann ca. 3T Nanosekunden betragen. Die Zeit, die der Prozessor benötigt, um eine Cachezeile von dem Speicher eines fernen Knoten wiederzugewinnen (bei spielsweise die Wartezeit, die der Prozessor 108 benötigt, um eine Cachezeile von dem Speicher 114 wiederzugewinnen), kann ca. 6T Nanosekunden betragen. Die Zeit, die der Prozessor benötigt, um eine Cachezeile von einem Cache erster Ordnung in einem fernen Knoten wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor benötigt, um eine Cachezeile von dem Cache 116 wiederzugewinnen), kann ca. 9T Nanosekunden betragen. Bei einem typischen Einzelbussystem (beispielsweise Bus 106) ist ein Cache-Zu-Cache-Transfer in der Regel schneller als ein Transfer von einem Speicher. Bei einem typischen Mehrbussystem, wie in 1, ist ein Transfer des schlimmsten Falls von einem Speicher (6T Nanosekunden) schneller als ein Cache-Zu-Cache-Transfer des schlimmsten Falles (9T Nanosekunden). Deshalb wird für ein Mehrbussystem im Vergleich zu einem Einzelbussystem eine andere Strategie benötigt, um Cachezeilen im Falle eines Cache-Fehlgriffs wiederzugewinnen, um die Gesamtspeicher-Wartezeit zu optimieren.
  • Bei einem typischen Computersystem entspricht eine Speicheradresse einer Cachezeile. Wenn eine Adresse einem Speichersystem präsentiert wird, kann das Speichersystem die angeforderten Daten wiedergewinnen, möglicherweise aus mehreren verschachtelten Quellen, und die sich ergebenden Daten daraufhin in ein Speicherregister plazieren. Um eine Parallelität zu erhöhen, ist es bekannt, daß Speichersysteme (beispielsweise Speicher 112) in der Tat mehrere Cachezeilen wiedergewinnen und mehrere Cachezeilen in ein Speicherregister plazieren. Bei einem im Handel erhältlichen beispielhaften Computersystem beträgt eine Cachezeile beispielsweise 128 Bytes, und wenn eine Cachezeile angefordert wird, gewinnt das Speichersystem 512 Bytes (4 Cachezeilen) wieder und plaziert die Cachezeilen in ein Register. Der anfordernde Prozessor empfängt lediglich die eine angeforderte Cachezeile. Die übrigen Cachezeilen stehen für ein Lesen mit verringerter Wartezeit zur Verfügung, wobei angenommen wird, daß eine der anderen Cachezeilen bald benötigt wird. Eine Kenntnis dieser Anordnung kann verwendet werden, um Compiler zu optimieren, die daraufhin die verringerte Wartezeit für die anderen Cachezeilen nutzen können.
  • Es ist ferner bekannt, daß Caches einen zugeordneten Vorabrufpuffer aufweisen, so daß die angeforderte Cachezeile und N folgende Cachezeilen im Falle eines Cache-Fehlgriffs aus dem Speicher wiedergewonnen werden. Üblicherweise ist der Transfer jeder der N Cachezeilen das Ergebnis einer separaten Bustransaktion. Der anfordernde Cache empfängt lediglich die eine angeforderte Cachezeile, und die übrigen Cachezeilen sind für ein Lesen mit verringerter Wartezeit verfügbar, wobei angenommen wird, daß eine der anderen Cachezeilen bald benötigt wird.
  • Im Gegensatz zu obigem kann bei einem Computersystem gemäß der Erfindung eine Cachezeilengruppe aus dem Speicher wiedererlangt oder aus einem Cache kopiert werden, und die gesamte Cachezeilengruppe kann durch den Anforderer mit einer einzigen Leseanweisung im Cache abgespeichert werden. Ferner wird eine Cache-Kohärenz zusätzlich zu einzelnen Cachezeilen auch für Cachezeilengruppen aufrechterhalten. Insbesondere weisen einzelne Cachezeilen innerhalb einer Cachezeilengruppe unterschiedliche Besitzer auf. Hieraus ergeben sich mehrere Vorteile. Als erstes betrachte man die oben erläuterten relativen Wartezeiten. Falls der Prozessor 108 eine Cachezeile anfordert, die sich im Speicher 114 befindet, beinhaltet ein Großteil der Wartezeit ein Lokalisieren der Cachezeile. Falls es wahrscheinlich ist, daß benachbarte Cachezeilen benötigt werden (räumlich-nahe Lage), liefert ein System gemäß der Erfindung mehrere Cachezeilen für eine sehr geringe inkrementale Wartezeit. Ein individueller Besitz an Cachezeilen innerhalb von Cachezeilengruppen verringert eine Cache-Zu-Cache-Kopieraktivität. Ferner ermöglichen spezielle Speicheranweisungen einen Transfer einer variablen Anzahl von Cachezeilen, je nach Besitz, was eine Cache-Zu-Cache-Kopieraktivität weiter verringert. Wie unten ausführlicher erläutert wird, transferiert ein System gemäß der Erfindung in der Regel ferner eine Cachezeilengruppe von einem Speicher und nicht von einem Cache, wodurch die durchschnittliche Wartezeit, der lokale Busverkehr und der Verknüpfungsverkehr (beispielsweise 118) für ein Mehrbussystem verringert wird. Falls beispielsweise ein Prozessor im Knoten 100 eine Cachezeile anfordert, die sich im Speicher 114 im Knoten 104 befindet und ferner in einem Cache im Knoten 102 abgespeichert ist, findet das System den Eintrag in dem Verzeichnis für den Knoten 104 und gewinnt die Cachezeilen direkt aus dem Speicher 114 wieder, statt einen zusätzlichen Busverkehr an dem Knoten 102 zu verursachen. Dementsprechend verringert ein System, das Cachezeilengruppen gemäß der Erfindung verwendet, die Wartezeit und nutzt die räumlich-nahe Lage sogar über die von in Sektoren aufgeteilten Caches und Vorabrufpuffern hinaus, während es übermäßige Cache-Zu-Cache-Transfers vermeidet.
  • Typische Caches weisen eine Cachezeilengröße L auf, und die Einheit der Kohärenz und die Einheit des Transfers beträgt L. In Sektoren aufgeteilte Caches mit Teil-Cachezeilen weisen Teil-Cachezeilen (oder Teilblöcke) der Größe S auf, wobei S < L, die Kohärenzeinheit kann S sein, und die Transfereinheit kann S oder L sein. Bei einem Cache gemäß der Erfindung beträgt die Cachezeilengröße L, die Transfereinheit kann L oder ganzzahlige Vielfache von L betragen, und die Kohärenzeinheit beträgt ganzzahlige Vielfache von L. Cachezeilengruppen können die Verwendung von Teil-Cachezeilen ergänzen. Das heißt, daß in Sektoren aufgeteilte Caches mit Teil-Cachezeilen sowie ein Schnüffeln in jedem Knoten verwendet werden können und Cachezeilengruppen mit einem Verzeichnis oder Kohärenzfilter über mehrere Knoten verwendet werden können.
  • Falls ein Speichersystem N Cachezeilen wiedergewinnt und sie in ein Register plaziert, kann es zweckmäßig sein, dieselben N Cachezeilen als eine Cachezeilengruppe zu verwenden. Es ist jedoch nicht nötig, daß eine Cachezeilengruppe dieselbe Größe aufweist wie ein Speicherregister. In einem Teil der folgenden Erörterung sei angenommen, daß eine Ca chezeilengruppe lediglich zu Darstellungszwecken aus vier Cachezeilen besteht. Unter Vorgabe einer M-Bit-Adresse und von N Cachezeilen in einer Cachezeilengruppe wird eine Cachezeilengruppe durch die höchstwertigen M minus log2(N) Bits der Adresse definiert. Beispielsweise sei angenommen, daß eine Cachezeilengruppe vier Cachezeilen beträgt, und unter der Annahme, der Einfachheit halber, einer 16-Bit-Adresse, liegt eine aus vier Cachezeilen bestehende Cachezeilengruppe vor, die durch die 14 höchstwertigen Bits der Adresse in Verbindung mit allen Kombinationen der zwei mindestwertigen Bits der Adresse definiert wird.
  • Ein Cache ist bekanntermaßen in Sätze organisiert, wobei manche der Adreßbits als ein Index verwendet werden, um zu bestimmen, welcher Satz für die Adresse zu verwenden ist. In jedem Satz werden andere Adreßbits, als Markierung bezeichnet, verwendet, um zu bestimmen, welche Cachezeile in einem Satz der Adresse entspricht. Bei Cachezeilengruppen gemäß der Erfindung kann der Index statt einer einzelnen Cachezeile einer Cachezeilengruppe entsprechen. Unter Vorgabe beispielsweise eines I-Bit-Index können die höchstwertigen I-2 Bits des Index als Index für eine aus vier Cachezeilen bestehende Cachezeilengruppe verwendet werden. Eine Markierung kann für die gesamte Cachezeilengruppe gelten. Alternativ weist jede Cachezeile vorzugsweise einen separaten adressierbaren Eintrag auf, wie durch die Markierung für die Cachezeile bestimmt wird. Jede Cachezeile weist vorzugsweise ihren eigenen Kohärenzzustand auf, und die gesamte Gruppe kann der Zweckmäßigkeit halber optional einen separaten Kohärenzzustand aufweisen. Der separate Kohärenzzustand für die gesamte Gruppe wird nachfolgend ausführlicher erörtert.
  • Aus der obigen Erörterung können unter Vorgabe einer Adresse N Cachezeilen aus dem Speicher oder aus einem anderen Cache als eine Gruppe wiedergewonnen werden, und N Cachezeilen können als Gruppe in einen Cache plaziert werden. Nachdem die Cachezeilengruppe in den Cache plaziert wurde, können die Cachezeilen als Gruppe oder separate Cachezeilen behandelt werden, wie unten erläutert wird.
  • Cache-Kohärenzprotokolle plazieren üblicherweise jede im Cache abgespeicherte Cachezeile in einen von mehreren Zuständen. Ein üblicher Ansatz verwendet drei mögliche Zustände für jede Cachezeile in einem Cache. Bevor irgendwelche Cachezeilen in den Cache plaziert werden, befinden sich alle Einträge in einem vorgegebenen Zustand, der als „ungültig" („invalid") bezeichnet wird. Wenn eine zuvor nicht im Cache abgespeicherte physische Cachezeile in den Cache plaziert wird, wird der Zustand des Eintrags in dem Cache von Ungültig zu „Gemeinsam Verwendet" geändert. Falls eine Cachezeile in einem Cache modifiziert wird, kann sie auch unmittelbar in einem Speicher modifiziert werden (als Durchschreiben bezeichnet). Alternativ dazu kann ein Cache eine modifizierte Cachezeile nur dann in einen Speicher schreiben, wenn die modifizierte Cachezeile in dem Cache invalidiert oder ersetzt ist (als Rückschreiben bezeichnet). Wenn bei einem Rückschreib-Cache eine Cachezeile in dem Cache modifiziert ist oder werden wird, wird der Zustand des Eintrags in dem Cache zu „Modifiziert" geändert. Die soeben beschriebene Zuweisung von drei Zuständen wird manchmal als MSI-Protokoll bezeichnet, wobei auf den Anfangsbuchstaben jedes der drei Zustände verwiesen wird.
  • Eine übliche Variation fügt einen zusätzlichen Zustand hinzu. Bei der Variation wird, wenn eine physische Cachezeile in den Cache kopiert wird, falls keine Kopie der Cachezeile in einem anderen Cache existiert, die Cachezeile in einen „Exklusiv"-Zustand plaziert. Das Wort „Exklusiv" bedeutet, daß genau eine Cache-Hierarchie eine Kopie der Cachezeile aufweist. Falls sich eine Cachezeile in einem „Exklusiv"-Zustand in einer Cache-Hierarchie für einen ersten Prozessor befindet, und falls ein zweiter Prozessor dieselbe Cachezeile anfordert, wird die Cachezeile anschließend in zwei Cache-Hierarchien kopiert, und der Zustand des Eintrags in jedem Cache wird auf „Gemeinsam Verwendet" einge stellt. Diese soeben beschriebene Zuweisung von vier Zuständen wird manchmal als MESI-Protokoll bezeichnet, wobei auf den Anfangsbuchstaben jedes der vier Zustände verwiesen wird. Es gibt noch viele andere Variationen.
  • Eine Cachezeile in dem Exklusiv-Zustand kann jederzeit durch ihren Besitzer ohne weitere Kohärenzoperationen modifiziert werden. Nachdem sie modifiziert wurde, ist die Cachezeile in dem lokalen Cache als Modifiziert markiert. Der Exklusiv-Zustand ermöglicht, daß eine Cachezeile im Besitz befindlich sein kann (die einzige Kopie in dem System), ohne modifiziert zu sein. Dieses Schema verringert die Anzahl von zusätzlichen Kohärenzanforderungen, die benötigt werden, um eine Cachezeile zu modifizieren.
  • In der nachfolgenden Erörterung wird das MESI-Protokoll verwendet, um ein erstes beispielhaftes Ausführungsbeispiel der Erfindung zu veranschaulichen. Die Erfindung ist gleichermaßen auf andere Cache-Kohärenzsysteme und -verfahren anwendbar. Ferner werden einige weitere Annahmen vorausgesetzt, um eine Erörterung eines ersten beispielhaften Ausführungsbeispiels wie folgt zu ermöglichen. Eine Cachezeile wird in dem MESI-Protokoll im Besitz sein, wenn sie sich in dem Modifiziert- oder Exklusiv-Zustand befindet. Zu Veranschaulichungszwecken lediglich, falls eine Cachezeile einen Besitzer (Zustand Modifiziert oder Exklusiv) aufweist und die Cachezeile durch einen Anforderer angefordert wird, der die Cachezeile eventuell modifiziert, wird die aktuellste Kopie der Cachezeile dem Anforderer bereitgestellt und zusätzlich in einen Speicher geschrieben. Der vorherige Besitzer invalidiert seine Kopie der Cachezeile, und der neue Besitzer stellt den Anfangszustand der Cachezeile auf Exklusiv ein. Falls eine Cachezeile nicht im Besitz befindlich ist (nicht in einem Cache abgespeichert oder mit dem Zustand Gemeinsam Verwendet im Cache abgespeichert ist), stellt der Anforderer den Anfangszustand der Cachezeile auf Gemeinsam Verwendet ein.
  • Weitere Annahmen können für Cachezeilengruppen nützlich sein. Falls sich eine angeforderte Cachezeile in einer Cachezeilengruppe befindet, die einen gemischten Besitz aufweist (das heißt mindestens zwei Cachezeilen in der Gruppe weisen unterschiedliche Besitzer auf), so sollte der Anforderer vorzugsweise einen Besitz lediglich der einen angeforderten Cachezeile erhalten, um übermäßige Cache-Zu-Cache-Transfers zu vermeiden. Falls sich im Gegensatz hierzu eine angeforderte Cachezeile in einer Cachezeilengruppe befindet, die gänzlich der Besitz eines einzigen Besitzers sind, ist es wahrscheinlich, daß sich ein Besitz einer gesamten Datenstruktur ändert, und der Anforderer sollte vorzugsweise einen Besitz der gesamten Cachezeilengruppe bekommen. Diese Regeln verringern eine Wartezeit für Cachezeilengruppen, indem eine Cachezeilengruppe und ein Besitz der Gruppe transferiert werden, falls die Cachezeilen alle verwendet sind, um sich im Besitz desselben vorherigen Besitzers zu befinden, während sie verstärkte Cache-Zu-Cache-Transfers verhindern, indem sie Cachezeilen, die eine Geschichte aufweisen, in der sie sich gleichzeitig im Besitz verschiedener Besitzer befanden, nicht kombinieren.
  • Ein weiteres optionales Merkmal eines Systems gemäß der Erfindung besteht darin, dem Anforderer eine Steuerung darüber zu geben, ob mehrere Cachezeilen transferiert werden sollten, wenn lediglich eine Cachezeile angefordert wird. Im einzelnen können neue Speichersystembefehle implementiert werden, die eine Anforderung optional auf eine einzige Cachezeile begrenzen oder optional erlauben, daß mehrere Cachezeilen transferiert werden.
  • Angesichts der obigen Annahmen und Merkmale veranschaulicht 2 ein beispielhaftes Verfahren zum Aufrechterhalten einer Kohärenz für Cachezeilengruppen für eine Cachezeilenanforderung, bei der ein Besitz der angeforderten Cachezeile nicht angefordert wird. 3 und 4 veranschaulichen ein beispielhaftes Verfahren zum Aufrechterhalten einer Kohärenz für eine Cachezeilengruppe für eine Cachezeilenan forderung, bei der ein Besitz der angeforderten Cachezeile angefordert wird. In 1 und in der folgenden Erläuterung der 2 bis 4 wird ein Verzeichnis zum Zweck eines beispielhaften Systems angenommen, jedoch sind Kohärenzfilter oder andere Kohärenzverfahren gleichermaßen geeignet.
  • In 2 wird eine Cachezeile angefordert, aber ein Besitz der Cachezeile wird nicht angefordert. Das heißt, daß der Anforderer die Daten lesen muß und die Daten nicht modifizieren muß. In dem Verzeichnis werden Kohärenzzustände für die entsprechende Cachezeilengruppe geprüft. Bei Schritt 200, falls alle Cachezeilen in der entsprechenden Cachezeilengruppe nicht im Besitz sind (für MESI befinden sich keine Cachezeilen in irgendeinem Cache in dem Modifiziert- oder Exklusiv-Zustand), so erhält der Anforderer bei Schritt 202 eine Kopie der angeforderten Cachezeile und Kopien von bis zu allen der anderen Cachezeilen in der entsprechenden Cachezeilengruppe. Der Anforderer markiert seine Kopie von wiedergewonnenen Cachezeilen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Cachezeilen als Ungültig. Bei Schritt 204, falls manche Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz sind und die angeforderte Cachezeile nicht im Besitz ist, erhält der Anforderer bei Schritt 206 eine Kopie der angeforderten Cachezeile und Kopien von bis zu allen der anderen nicht im Besitz befindlichen Cachezeilen in der entsprechenden Cachezeilengruppe. Der Anforderer markiert seine Kopie von wiedergewonnenen Cachezeilen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Cachezeilen als Ungültig.
  • Man beachte, daß bei den Schritten 202 und 206 die angeforderte Cachezeile und vielleicht andere Cachezeilen in einer Cachezeilengruppe nicht im Besitz sind. Deshalb können die nicht im Besitz befindlichen Cachezeilen aus dem Speicher wiedergewonnen werden, und, wie oben erörtert wurde, für ein Mehrbussystem werden die nicht im Besitz befindlichen Cachezeilen an einem fernen Knoten vorzugsweise aus dem Speicher wiedergewonnen. Das System kann ein Schnüffeln in einem Knoten verwenden, wobei eine resultierende Priorität auf ein Wiedergewinnen von Cachezeilen aus einem Cache, falls verfügbar, gesetzt wird, und kann ein Verzeichnis oder ein Kohärenzfilter über Knoten verwenden, wobei eine Priorität auf ein Wiedergewinnen von Cachezeilen aus dem Speicher gesetzt wird. Folglich wird die Wartezeit pro Cachezeile verringert, da mit einer einzigen Anforderung mehrere Cachezeilen transferiert werden, und für Mehrbussysteme wird die Wartezeit weiter verringert und der lokale Busverkehr weiter verringert, da die Cachezeilen statt aus Caches aus einem Speicher wiedergewonnen werden.
  • Bei Schritt 208 befindet sich die angeforderte Cachezeile im Besitz, und falls ein Besitz innerhalb der Cachezeilengruppe gemischt ist (das heißt, daß sich manche Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz unterschiedlicher Besitzer befinden), dann erhält der Anforderer bei Schritt 210 genau die angeforderte Cachezeile von dem Besitzer. Wie oben erörtert wurde, sollte der Anforderer vorzugsweise einen Besitz lediglich der einen angeforderten Cachezeile erhalten, um übermäßige Cache-Zu-Cache-Transfers zu vermeiden. Der Anforderer markiert seine Kopie der wiedergewonnenen Cachezeile als Exklusiv oder Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für die nicht wiedergewonnenen Cachezeilen als Ungültig. Bei Schritt 212 befinden sich alle Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz desselben Besitzers. Der Anforderer kann eine Kopie der angeforderten Cachezeile und Kopien von bis zu allen der anderen Cachezeilen in der Gruppe von dem Besitzer erhalten. Wie oben erläutert wurde, ist es wahrscheinlich, daß sich ein Besitz einer gesamten Datenstruktur ändert, und der Anforderer sollte vorzugsweise eine Kopie der gesamten Cachezeilen gruppe erhalten. Der Anforderer markiert seine Kopie von wiedergewonnenen Cachezeilen als Exklusiv oder Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Cachezeilen als Ungültig.
  • In 3 wird eine Cachezeile angefordert, und ein Besitz der Cachezeile wird angefordert. Bei Schritt 300, falls alle Cachezeilen in der entsprechenden Cachezeilengruppe nicht im Besitz sind, kann der Anforderer bei Schritt 302 eine Kopie der angeforderten Cachezeile und von bis zu allen der anderen Cachezeilen in der entsprechenden Cachezeilengruppe erhalten. Alle existierenden Kopien der angeforderten Cachezeilen, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Cachezeile als Exklusiv und seine Kopien anderer wiedergewonnener Cachezeilen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Cachezeilen als Ungültig. Bei Schritt 304, falls einige Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz sind und die angeforderte Cachezeile nicht im Besitz ist, erhält der Anforderer bei Schritt 306 eine Kopie der angeforderten Cachezeile und Kopien von bis zu allen der anderen nicht im Besitz befindlichen Cachezeilen in der entsprechenden Cachezeilengruppe. Alle existierenden Kopien der angeforderten Cachezeilen, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Cachezeile als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Kopien etwaiger anderer wiedergewonnener Cachezeilen als Gemeinsam Verwendet, und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Cachezeilen als Ungültig. Wie oben in Zusammenhang mit 2 erörtert wurde, werden nicht im Besitz befindliche Cachezeilen für ein Mehrbussystem vorzugsweise aus dem Speicher wiedergewonnen. Exklusive Cachezeilen können entweder aus dem besitzenden Cache oder Hauptspeicher wiedergewonnen werden.
  • Bei Schritt 308 ist die angeforderte Cachezeile im Besitz befindlich, und falls sich manche Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz unterschiedlicher Besitzer befinden, erhält der Anforderer bei Schritt 310 genau die angeforderte Cachezeile von dem Besitzer der angeforderten Cachezeile. Alle existierenden Kopien der angeforderten Cachezeile, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Cachezeile als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für die nicht wiedergewonnenen Cachezeilen als Ungültig. Bei Schritt 312 befinden sich alle Cachezeilen in der entsprechenden Cachezeilengruppe im Besitz desselben Besitzers. Wie oben erläutert wurde, ist es wahrscheinlich, daß sich ein Besitz einer gesamten Datenstruktur ändert, und der Anforderer sollte vorzugsweise einen Besitz der gesamten Cachezeilengruppe erhalten. Bei Schritt 312 wird die aktuellste Kopie der gesamten Gruppe in den Speicher kopiert und zu dem Anforderer kopiert, und alle existierenden Kopien der Gruppe, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der Gruppe als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis).
  • Die Wahl, ob eine gesamte Gruppe oder lediglich eine Teilmenge einer Gruppe zu einem Anforderer kopiert werden soll, kann geändert werden. Insbesondere befindet sich eine Gruppe bei Schritt 312 in 3 im Besitz, und die gesamte Cachezeilengruppe wird zu dem Anforderer kopiert. Es ist möglich, daß ein Gruppenbesitz zu einem Überlastungszustand (übermäßige Cache-Zu-Cache-Transfers) führen kann. 4 veranschaulicht ein alternatives Verfahren, das bei der Entscheidung „JA" für Schritt 308 in 3 beginnt und bei dem ein Besitz einer Gruppe zerschlagen werden kann, wenn sie durch den derzeitigen Besitzer lediglich teilweise modifiziert wird.
  • In 4 wird ein zusätzlicher Test 400 hinzugefügt, um zu bestimmen, ob alle Cachezeilen in einer Cachezeilengruppe durch einen ursprünglichen Besitzer modifiziert wurden. Bei Schritt 400 befindet sich die gesamte Cachezeilengruppe im Besitz, und falls manche Cachezeilen nicht modifiziert wurden (manche Cachezeilen befinden sich nicht in dem Modifiziert-Zustand), wird bei Schritt 402 lediglich die angeforderte Cachezeile zu dem Anforderer kopiert. Der Anforderer markiert seine Kopie der angeforderten Cachezeile als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für die nicht wiedergewonnenen Cachezeilen als Ungültig. Als Alternative könnten bei Schritt 402' zusätzlich zu einem Kopieren der angeforderten Cachezeile alle Cachezeilen, die nicht die angeforderte Cachezeile sind, kopiert werden, und der Zustand der Cachezeilen, die nicht die angeforderte Cachezeile sind, könnte als Gemeinsam Verwendet markiert werden. Als weitere Alternative könnten bei Schritt 402'' zusätzlich zu einem Kopieren der angeforderten Cachezeile alle Cachezeilen, die nicht die angeforderte Cachezeile sind, kopiert werden, und der Zustand aller nicht-angeforderten Cachezeilen, die sich zuvor in dem Modifiziert-Zustand befanden, könnte als Exklusiv markiert werden, und der Zustand aller nicht-angeforderten Cachezeilen, die sich zuvor in dem Exklusiv-Zustand befanden, könnte als Gemeinsam Verwendet markiert werden. Obwohl sich alle Cachezeilen im Besitz desselben Besitzers befanden, könnte daher, falls zwei Caches unterschiedliche Cachezeilen innerhalb einer Gruppe modifizieren müssen, jeder einen Besitz unterschiedlicher Cachezeilen erhalten, und ein Überlastungszustand wird vermieden. Falls die gesamte Gruppe durch den ursprünglichen Besitzer modifiziert wird, wird bei Schritt 404 ein Besitz der gesamten Gruppe an den Anforderer transferiert, und ein forderer transferiert, und ein Überlastungszustand ist unwahrscheinlich.
  • Ferner kann die Wahl, ob erlaubt werden soll, daß eine ursprüngliche Kopie einer nicht im Besitz befindlichen Gruppe verbleibt, geändert werden. Beispielsweise könnte in 2 bei Schritt 202 die existierende Kopie der gesamten Cachezeilengruppe invalidiert werden. Falls der Raum nicht benötigt wird, kann es der ursprünglichen Kopie der Cachezeilengruppe jedoch gestattet werden, zu verbleiben, wie in 2 veranschaulicht ist. Das System kann verfolgen, wo Kopien von Cachezeilen existieren, und falls eine Cachezeile modifiziert wird, müssen lediglich die Caches mit Kopien der modifizierten Cachezeilen benachrichtigt werden.
  • Wie oben erörtert wurde, verringern Verzeichnisse und globale Kohärenzfilter einen Kohärenzverkehr auf einem Bus, während sie die Wartezeit erhöhen. Ein Lesen und Schreiben von Cachezeilengruppen verringert den Kohärenzverkehr, so daß ein busbasiertes System wie in 1 verwendet werden kann, wo ansonsten Verzeichnisse oder globale Kohärenzfilter erforderlich wären. Ferner ist die vorliegende Erfindung gleichermaßen auf Systeme anwendbar, die Verzeichnisse oder globale Kohärenzfilter verwenden. Beispielsweise können die Kohärenzzustände für jeden der Schritte, bei denen Kohärenzzustände ermittelt werden (2, 200, 204, 208; 3, 300, 304, 308; 4, 400), durch ein Schnüffeln oder durch Prüfen eines Verzeichnisses oder durch Prüfen eines globalen Kohärenzfilters bestimmt werden.
  • Ausgehend von den 2 bis 5 ist Besitz ein wichtiges Konzept für die Erfindung. Auf einem Besitz statt auf MESI basierende Kohärenzzustände wären besonders nützlich. In der früheren US-A-6,868,481 wird eine Alternative zu einem Schnüffeln, zu Verzeichnissen und globalen Kohärenzfiltern offenbart. Bei der US-A-6,868,481 erhält ein Computersystem eine Liste von Markierungen (als Globaler-Besitz-Markierungsliste, GOTL = global ownership tag list, be zeichnet) für alle Cachezeilen in dem System aufrecht, für die ein Cache einen Besitz aufweist. Das heißt, daß für jede Markierung in der GOTL die entsprechende Cachezeile modifiziert (dirty) oder lediglich potentiell modifiziert (potentiell dirty) sein kann. Eine GOTL umfaßt im Besitz befindliche Cachezeilen und umfaßt allgemein nicht alle Gemeinsam Verwendeten Cachezeilen in dem System. Falls eine Cachezeile keinen Eintrag in der GOTL aufweist, kann angenommen werden, daß die Cachezeile Gemeinsam Verwendet wird. Man beachte ferner, daß bei einer GOTL in der Tat ein Besitz transferiert werden kann, ohne daß die Daten transferiert werden müssen.
  • Eine GOTL ist besonders auf die vorliegende Erfindung anwendbar. Das heißt, daß eine GOTL einen Eintrag für jede Cachezeilengruppe, für die mindestens eine Cachezeile im Besitz ist, aufweisen kann. Ferner kann jeder Eintrag Informationen bezüglich des Kohärenzzustands jeder Cachezeile innerhalb der Cachezeilengruppe und bezüglich dessen, welcher Prozessor oder Cache oder Knoten oder Bus der Besitzer der Cachezeile ist, umfassen. Falls eine bestimmte Cachezeile in einem Cache im Besitz ist, können die Markierungen für die entsprechende Cachezeilengruppe in die GOTL plaziert werden, und als Teil des GOTL-Eintrags wird die bestimmte Cachezeile als im Besitz befindlich markiert, und der Besitzer wird identifiziert. Für jeden der Schritte, bei denen Kohärenzzustände bestimmt werden (2, 200, 204, 208; 3, 300, 304, 308; 4, 400), können die Kohärenzzustände durch Prüfen der GOTL bestimmt werden. Man beachte jedoch, daß sich eine Adresse für eine Cachezeile normalerweise nur dann in der GOTL befindet, wenn die Cachezeile im Besitz ist, wohingegen eine Adresse für eine Cachezeilengruppe in der GOTL auch dann in der GOTL verbleiben kann, wenn jede einzelne Cachezeile in der Gruppe als gemeinsam verwendet markiert ist. Wie oben erörtert wurde, könnte beispielsweise in 2, bei Schritt 202, die existierende Kopie der gesamten Cachezeilengruppe invalidiert werden, oder falls der Raum nicht benötigt wird, kann es der ursprünglichen Kopie der Cachezeilengruppe gestattet werden, zu verbleiben. Falls ein Raum in der GOTL benötigt wird, kann das System wählen, nicht im Besitz befindliche Cachezeilengruppen auszusondern, bevor Gruppen mit zumindest teilweisem Besitz ausgesondert werden.
  • 5 veranschaulicht ein Beispiel eines Gegenstücks zu den 3 und 4 (angeforderter Besitz) beim Verwenden einer GOTL. Man erinnere sich aus der obigen Erörterung, daß es einer Cachezeilengruppe optional gestattet sein kann, in einem Cache zu verbleiben, obwohl sie sich nicht mehr auch nur teilweise im Besitz befindet. Dementsprechend kann ein Eintrag für eine Cachezeilengruppe in einer GOTL verbleiben, obwohl keine Cachezeile in der Cachezeilengruppe im Besitz ist. Das heißt, daß in einer GOTL ein Eintrag immer dann erfolgt, wenn eine Cachezeile in der Cachezeilengruppe im Besitz ist, daß jedoch der Eintrag nicht unbedingt unmittelbar entfernt wird, wenn alle Cachezeilen innerhalb der Cachezeilengruppe nicht mehr im Besitz sind. Die GOTL umfaßt lediglich die schmutzigen bzw. modifizierbaren Cachezeilen. Falls sich die Cachezeilengruppe, die die angeforderte Cachezeile umfaßt, nicht in der GOTL befindet (Schritt 500) oder falls die Cachezeilengruppe in der GOTL verbleibt, jedoch vollständig nicht im Besitz befindlich ist (Schritt 502), empfängt der Anforderer bis zu der gesamten Cachezeilengruppe (Schritt 504). Falls die angeforderte Cachezeile nicht im Besitz ist, jedoch andere Cachezeilen in der Cachezeilengruppe im Besitz sind (Schritt 506), werden bis zu alle nicht im Besitz befindlichen Cachezeilen empfangen (Schritt 508). Falls die angeforderte Cachezeile im Besitz ist und die Cachezeilengruppe einen gemischten Besitz aufweist, wird lediglich die angeforderte Cachezeile empfangen (Schritt 512). Falls sich die gesamte Cachezeilengruppe im Besitz desselben Besitzers befindet, wird die gesamte Cachezeilengruppe empfangen (Schritt 514).
  • Man beachte, daß in den 2 bis 4 manche Schritte dazu führen, daß eine Teilmenge einer Gruppe kopiert wird, bei spielsweise 2, 202. Wenn eine CPU-Anweisung beispielsweise eine einzelne Cachezeile anfordert, können alle nicht im Besitz befindlichen Cachezeilen in der entsprechenden Cachezeilengruppe für den Fall, daß sie bald benötigt werden, spekulativ kopiert werden. Alternativ kann ein Besitz mehrerer Cachezeilen gewährt werden, obwohl der Anforderer lediglich eine Cachezeile anfordert. Alternativ dazu kann eine spezielle CPU-Anweisung implementiert werden, die ausdrücklich eine Cachezeile plus alle nicht im Besitz befindlichen anderen Cachezeilen in einer Cachezeilengruppe anfordert. Bei jeder der Alternativen kopiert das System ein Minimum der angeforderten Cachezeile. Alternativ dazu kann eine spezielle CPU-Anweisung implementiert werden, die ausdrücklich eine Kopie oder einen Besitz einer gesamten Cachezeilengruppe anfordert. Je nach der übrigen Systemarchitektur können Anforderungen, die mehr als eine Cachezeile erbeten, in einer einzigen unteilbaren Operation durchgeführt werden müssen.
  • Bei der obigen Beschreibung wird eine Kohärenz für Cachezeilengruppen aufrechterhalten. Man könnte beispielsweise MESI verwenden, bei dem sich eine Cachezeilengruppe lediglich dann in dem M-Zustand befindet, wenn sich alle Cachezeilen in der Gruppe in dem M-Zustand befinden, und so weiter. Für die in den 2 bis 5 veranschaulichten Verfahren liefert ein Besitz jedoch nützlichere Kohärenzinformationen für Cachezeilengruppen. Für die in den 2 bis 5 veranschaulichten Verfahren wäre insbesondere der folgende Satz von Besitzkohärenzzuständen für Cachezeilengruppen für Entscheidungen 200, 208, 300, 308, 400, 502 und 510 vorzuziehen:
    nicht im Besitz befindlich (alle Cachezeilen innerhalb der Gruppe sind nicht im Besitz befindlich)
    nicht ein Besitzer (mindestens eine Cachezeile ist im Besitz befindlich, und nicht alle Cachezeilen befinden sich im Besitz eines Besitzers)
    ein Besitzer (alle Cachezeilen innerhalb der Gruppe befinden sich im Besitz desselben Besitzers)
    ein-Besitzer-modifiziert (alle Cachezeilen innerhalb der Gruppe werden durch denselben Besitzer modifiziert).
  • Für die Zwecke der Entscheidungen in 2 bis 5 muß ein Besitz ferner lediglich auf einer Knoten-Ebene und nicht auf einer Cache-Ebene vorliegen. Es genügt zum Beispiel zu wissen, daß sich alle Cachezeilen innerhalb einer Gruppe im Besitz von Caches befinden, die sich alle in einem Knoten befinden und auf einem Bus durchschnüffelt werden können.

Claims (7)

  1. Verfahren zur Aufrechterhaltung der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems mit einem Bus (106), über den eine maximale Anzahl von Cachezeilen als Gruppe übertragen wird, wobei die Anzahl der tatsächlich übertragenen Cachezeilen einer Gruppe von den Besitzverhältnissen innerhalb der Gruppe abhängt.
  2. Verfahren gemäß Anspruch 1, bei dem eine angeforderte Cachezeile zusammen mit allen zusätzlichen nicht im Besitz befindlichen Cachezeilen kopiert wird (202, 206; 302, 306).
  3. Verfahren gemäß Anspruch 2, bei dem in dem Cache-Speicher (C1, C2) die Kopie der angeforderten Cachezeile als Exklusiv und die Kopien der zusätzlichen Cachezeilen als Gemeinsam Verwendet markiert werden.
  4. Verfahren gemäß Anspruch 1, bei dem, wenn ein Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt, alle Cachezeilen in der Gruppe kopiert werden und als Exklusiv markiert werden.
  5. Verfahren gemäß Anspruch 1, bei dem, wenn ein Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und alle Cachezeilen als Modifiziert markiert sind, alle Cachezeilen in der Gruppe zu dem anfordernden Cache-Speicher (C1, C2) kopiert werden und als Exklusiv markiert werden (404), und wenn der Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und nicht alle Cachezeilen als Modifiziert markiert sind, lediglich die angeforderte Cache zeile in der Gruppe zu dem anfordernden Cache-Speicher kopiert wird und als Exklusiv markiert wird (402).
  6. Verfahren gemäß Anspruch 1, bei dem, wenn ein Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und alle Cachezeilen als Modifiziert markiert sind, alle Cachezeilen in der Gruppe zu dem anfordernden Cache-Speicher (C1, C2) kopiert werden und als Exklusiv markiert werden (404), und wenn der Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und nicht alle Cachezeilen als Modifiziert markiert sind, alle Cachezeilen in der Gruppe zu dem anfordernden Cache-Speicher kopiert werden und die angeforderte Cachezeile als exklusiv markiert wird und die nicht-angeforderten Cachezeilen als Gemeinsam Verwendet markiert werden (402').
  7. Verfahren gemäß Anspruch 1, bei dem wenn ein Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und alle Cachezeilen als Modifiziert markiert sind, alle Cachezeilen in der Gruppe zu dem anfordernden Cache-Speicher (C1, C2) kopiert werden und als Exklusiv markiert werden (404), und wenn der Cache-Speicher (C1, C2) alle Cachezeilen in der Gruppe besitzt und nicht alle Cachezeilen als Modifiziert markiert sind, alle Cachezeilen in der Gruppe zu dem anfordernden Cache-Speicher kopiert werden und die angeforderte Cachezeile und alle etwaigen modifizierten nicht-angeforderten Cachezeilen als Exklusiv markiert werden und alle exklusiven nicht-angeforderten Cachezeilen als Gemeinsam Verwendet markiert werden (402'').
DE10232926A 2001-07-31 2002-07-19 Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems Expired - Fee Related DE10232926B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10262164A DE10262164B4 (de) 2001-07-31 2002-07-19 Computersystem mit einer hierarchischen Cacheanordnung

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/919,309 US6662277B2 (en) 2001-07-31 2001-07-31 Cache system with groups of lines and with coherency for both single lines and groups of lines
US09/919,309 2001-07-31
DE10262164A DE10262164B4 (de) 2001-07-31 2002-07-19 Computersystem mit einer hierarchischen Cacheanordnung

Publications (2)

Publication Number Publication Date
DE10232926A1 DE10232926A1 (de) 2003-03-06
DE10232926B4 true DE10232926B4 (de) 2006-04-13

Family

ID=25441869

Family Applications (2)

Application Number Title Priority Date Filing Date
DE10262164A Expired - Fee Related DE10262164B4 (de) 2001-07-31 2002-07-19 Computersystem mit einer hierarchischen Cacheanordnung
DE10232926A Expired - Fee Related DE10232926B4 (de) 2001-07-31 2002-07-19 Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE10262164A Expired - Fee Related DE10262164B4 (de) 2001-07-31 2002-07-19 Computersystem mit einer hierarchischen Cacheanordnung

Country Status (3)

Country Link
US (2) US6662277B2 (de)
JP (1) JP2003067246A (de)
DE (2) DE10262164B4 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222220B2 (en) * 2001-05-01 2007-05-22 Sun Microsystems, Inc. Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US7210006B2 (en) * 2002-06-28 2007-04-24 Sun Microsystems, Inc. Computer system supporting read-to-write-back transactions for I/O devices
US7162588B2 (en) * 2002-08-23 2007-01-09 Koninklijke Philips Electronics N.V. Processor prefetch to match memory bus protocol characteristics
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
US7636815B1 (en) 2003-04-09 2009-12-22 Klaiber Alexander C System and method for handling direct memory accesses
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US7363432B2 (en) * 2004-03-25 2008-04-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management
US7321956B2 (en) * 2004-03-25 2008-01-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US7536513B2 (en) * 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7971002B1 (en) 2005-04-07 2011-06-28 Guillermo Rozas Maintaining instruction coherency in a translation-based computer system architecture
US7581068B2 (en) * 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
US8539164B2 (en) * 2007-04-30 2013-09-17 Hewlett-Packard Development Company, L.P. Cache coherency within multiprocessor computer system
US20080307169A1 (en) * 2007-06-06 2008-12-11 Duane Arlyn Averill Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8140771B2 (en) 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9274955B2 (en) * 2012-08-17 2016-03-01 Futurewei Technologies, Inc. Reduced scalable cache directory
US20140223100A1 (en) * 2013-02-07 2014-08-07 Alex J. Chen Range based collection cache
US9596279B2 (en) * 2013-02-08 2017-03-14 Dell Products L.P. Cloud-based streaming data receiver and persister
US9442993B2 (en) 2013-02-11 2016-09-13 Dell Products L.P. Metadata manager for analytics system
US9191432B2 (en) 2013-02-11 2015-11-17 Dell Products L.P. SAAS network-based backup system
US9141680B2 (en) 2013-02-11 2015-09-22 Dell Products L.P. Data consistency and rollback for cloud analytics
US20140281270A1 (en) * 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US20150074357A1 (en) * 2013-09-09 2015-03-12 Qualcomm Incorporated Direct snoop intervention
US10102000B2 (en) * 2016-04-01 2018-10-16 Intel Corporation Apparatus and method for non-serializing split locks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404483A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5787475A (en) * 1992-07-21 1998-07-28 Digital Equipment Corporation Controlled prefetching of data requested by a peripheral
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150472A (en) * 1989-10-20 1992-09-22 International Business Machines Corp. Cache management method and apparatus for shared, sequentially-accessed, data
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5615334A (en) * 1994-10-07 1997-03-25 Industrial Technology Research Institute Memory reflection system and method for reducing bus utilization and device idle time in the event of faults
US5832232A (en) * 1996-12-16 1998-11-03 Intel Corporation Method and apparatus for providing user-based flow control in a network system
US6035376A (en) * 1997-10-21 2000-03-07 Apple Computer, Inc. System and method for changing the states of directory-based caches and memories from read/write to read-only
US6049845A (en) * 1997-11-05 2000-04-11 Unisys Corporation System and method for providing speculative arbitration for transferring data
US6330591B1 (en) * 1998-03-09 2001-12-11 Lsi Logic Corporation High speed serial line transceivers integrated into a cache controller to support coherent memory transactions in a loosely coupled network
US6189078B1 (en) * 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US6493809B1 (en) * 2000-01-28 2002-12-10 International Business Machines Corporation Maintaining order of write operations in a multiprocessor for memory consistency
US6412046B1 (en) * 2000-05-01 2002-06-25 Hewlett Packard Company Verification of cache prefetch mechanism
US6647453B1 (en) * 2000-08-31 2003-11-11 Hewlett-Packard Development Company, L.P. System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US6711662B2 (en) * 2001-03-29 2004-03-23 Intel Corporation Multiprocessor cache coherence management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404483A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5787475A (en) * 1992-07-21 1998-07-28 Digital Equipment Corporation Controlled prefetching of data requested by a peripheral
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses

Also Published As

Publication number Publication date
JP2003067246A (ja) 2003-03-07
US6662277B2 (en) 2003-12-09
DE10232926A1 (de) 2003-03-06
US7310708B2 (en) 2007-12-18
US20040039879A1 (en) 2004-02-26
US20030028730A1 (en) 2003-02-06
DE10262164B4 (de) 2010-11-11

Similar Documents

Publication Publication Date Title
DE10232926B4 (de) Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE69737116T2 (de) Mehrstufiger Cachespeicher
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8172 Supplementary division/partition in:

Ref document number: 10262164

Country of ref document: DE

Kind code of ref document: P

Q171 Divided out to:

Ref document number: 10262164

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130201