DE10232926A1 - Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen - Google Patents

Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen

Info

Publication number
DE10232926A1
DE10232926A1 DE10232926A DE10232926A DE10232926A1 DE 10232926 A1 DE10232926 A1 DE 10232926A1 DE 10232926 A DE10232926 A DE 10232926A DE 10232926 A DE10232926 A DE 10232926A DE 10232926 A1 DE10232926 A1 DE 10232926A1
Authority
DE
Germany
Prior art keywords
line
lines
line group
cache
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10232926A
Other languages
English (en)
Other versions
DE10232926B4 (de
Inventor
Blaine D 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 Co
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 Co filed Critical Hewlett Packard Co
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

Bei einem Computersystem mit einer Cache-Speicherung können Speichertransaktionen Leitungsgruppen wiedergewinnen und speichern. Kohärenzzustände werden für Leitungsgruppen und für einzelne Leitungen aufrechterhalten. Eine einzelne Kohärenztransaktion und eine einzelne Adreßtransaktion können daraufhin zu dem Transfer von mehreren Datenleitungen führen, wobei eine Gesamtwartezeit verringert wird. Obwohl Leitungen als Gruppe transferiert werden können, können die Leitungen anschließend separat behandelt werden. Dies vermeidet viele der durch lange Leitungen verursachten Probleme, wie beispielsweise eine erhöhte Cache-Zu-Cache-Speicheraktivität.

Description

  • Diese Erfindung bezieht sich allgemein auf Computersysteme und im einzelnen auf Cachespeichersysteme.
  • 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.
  • Caches werden üblicherweise um eine Speichermenge herum organisiert, die als Leitung oder Block oder Seite bezeichnet wird. Die vorliegende Patentschrift verwendet den Begriff "Leitung", die Erfindung ist jedoch gleichermaßen auf Systeme anwendbar, die Blöcke oder Seiten verwenden.
  • 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 Leitung kann gleichzeitig in einem Speicher und in den Cache- Hierarchien für mehrere Prozessoren vorhanden sein. Alle Kopien einer Leitung 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 Leitung, wenn der Cache über eine Erlaubnis verfügt, die Leitung zu modifizieren, ohne weitere Kohärenztransaktionen auszugeben. Es kann lediglich einen "Besitzer" einer Leitung geben. Für jegliches Cache- Kohärenzprotokoll muß die aktuellste Kopie einer Cacheleitung von dem derzeitigen Besitzer, falls vorhanden, wiedergewonnen werden, und dem Anforderer muß eine Kopie der Daten geliefert werden. Falls die Leitung 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 Leitung zu bestimmen, mit vielen Variationen und Zwischenformen. Bei einem Ansatz, der als Schnüffelprotokoll oder als auf einer Schnüffelei (einem Snoop) basierendes Protokoll bzw. Snoop-Protokoll bezeichnet wird, ist der Besitzer unbekannt, und alle Caches müssen befragt (durchschnüffelt bzw. snooped) werden, um die Position der aktuellsten Kopie der angeforderten Leitung zu bestimmen. Alle Anforderungen eines Zugangs zu einer Cacheleitung, seitens einer beliebigen Vorrichtung in dem System, werden zu allen Caches in dem System weitergeleitet. Schließlich wird die aktuellste Kopie einer Leitung 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 Leitung in dem Speichersystem zu pflegen. Beispielsweise kann ein Verzeichnis für jede Leitung in einem Speicher ein Bit für jede Cache-Hierarchie umfassen, um anzugeben, ob die Cache- Hierarchie eine Kopie der Leitung aufweist, und ein Bit, um anzugeben, ob die Cache-Hierarchie einen Besitz aufweist. Für jede Anforderung eines Zugangs zu einer Cacheleitung muß das Verzeichnis konsultiert werden, um den Besitzer zu bestimmen, und daraufhin wird die aktuellste Kopie der Leitung 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 Leitung 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 Cacheleitung 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 Leitungen und enthalten vielleicht nicht alle gemeinsam verwendeten Leitungen 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 Leitung 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 Leitung anfordert, umfaßt die Gesamtzeit, die erforderlich ist, um die Leitung 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 Leitungsgröße zu erhöhen. Falls beispielsweise aneinander angrenzende Leitungen angefordert werden, erfordert jede Leitung eine separate Kohärenzanforderung. Falls eine Leitungsgröß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 Leitungen stellen mehr Daten für jede Anforderung bereit. Wenn die Leitungen 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 Leitung 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.
  • Alternativ ist es bekannt, eine teilweise Leitungsinvalidierung (oder teilweise Blockinvalidierung) zu gestatten. Ferner ist es bekannt, zusätzliche Teilleitungen vorabzurufen. Siehe beispielsweise C. K. Liu und T. C. King, A Performance Study on Bounteous Transfer in Multiprocessor Sectored Caches, The Journal of Supercomputing, 11, 405-420 (1997). Liu und King beschreiben ein Kohärenzprotokoll zum Invalidieren von Teilleitungen und zum Vorabrufen mehrerer Teilleitungen.
  • Es ist die Aufgabe der vorliegenden Erfindung, Computersysteme und Verfahren zu schaffen, die es ermöglichen, insbesondere bei großen Mehrbussystemen die Gesamtwartezeit zu verringern und dabei die Kohärenz aufrechtzuerhalten.
  • Diese Aufgabe wird durch Computersysteme gemäß den Ansprüchen 1, 9, 10 oder 11 sowie durch Verfahren gemäß den Ansprüchen 12, 13, 15, 16, 18 oder 19 gelöst.
  • Ein Computersystem gewinnt Leitungsgruppen wieder und speichert diese. Kohärenzzustände werden für Leitungsgruppen und für einzelne Leitungen aufrechterhalten. Alternativ dazu kann der Kohärenzzustand einer Leitungsgruppe aus dem Kohärenzzustand aller ihrer Teilleitungen hergeleitet werden. Eine einzelne Kohärenztransaktion und eine einzelne Adreßtransaktion können daraufhin zu dem Transfer von mehreren Datenleitungen führen, wobei die Gesamtwartezeit verringert wird. Obwohl Leitungen als Gruppe wiedergewonnen werden können, können die Leitungen anschließend separat behandelt werden. Dies vermeidet viele der durch lange Leitungen verursachten Probleme, beispielsweise eine erhöhte Cache-Zu-Cache-Kopieraktivität. Innerhalb einer Leitungsgruppe können mehrere Leitungsbesitzer vorhanden sein. Es können spezielle Anweisungen implementiert werden, die bis zu eine Leitungsgruppe anfordern. Das heißt, daß die Anweisung je nach Besitz dazu führen kann, daß lediglich eine Leitung transferiert wird oder daß bis zu eine ganze Leitungsgruppe transferiert wird. Bei Mehrbussystemen kann die Wartezeit weiter verringert werden, indem vorzugsweise nicht im Besitz befindliche Leitungen aus einem Speicher und nicht aus Caches wiedergewonnen werden.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • Fig. 1 ein Blockdiagramm eines beispielhaften Computersystems, das sich zur Verwendung bei der Erfindung eignet;
  • Fig. 2 ein Flußdiagramm eines beispielhaften Verfahrens zum Aufrechterhalten einer Kohärenz für eine Leitungsanforderung ohne eine Anforderung eines Besitzes;
  • Fig. 3 ein Flußdiagramm eines beispielhaften Verfahrens zum Aufrechterhalten einer Kohärenz für eine Leitungsanforderung mit einer Anforderung eines Besitzes;
  • Fig. 4 ein Flußdiagramm eines beispielhaften alternativen Verfahrens für einen Teil der Fig. 3;
  • Fig. 5 ein Flußdiagramm einer beispielhaften Alternative zu den Verfahren der Fig. 2 bis 4.
  • Fig. 1 veranschaulicht ein beispielhaftes Computersystem, das zur Verwendung bei der Erfindung geeignet ist. In Fig. 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 Leitung 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 Leitung von dem Cache 110 wiederzugewinnen) T Nanosekunden beträgt. Die Zeit, die der Prozessor benötigt, um eine Leitung von dem Speicher seines eigenen Knotens wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor 108 benötigt, um eine Leitung von dem Speicher 112 wiederzugewinnen) kann ca. 3T Nanosekunden betragen. Die Zeit, die der Prozessor benötigt, um eine Leitung von dem Speicher eines fernen Knoten wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor 108 benötigt, um eine Leitung von dem Speicher 114 wiederzugewinnen), kann ca. 6T Nanosekunden betragen. Die Zeit, die der Prozessor benötigt, um eine Leitung von einem Cache erster Ordnung in einem fernen Knoten wiederzugewinnen (beispielsweise die Wartezeit, die der Prozessor benötigt, um eine Leitung 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 Fig. 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 Leitungen im Falle eines Cache- Fehlgriffs wiederzugewinnen, um die Gesamtspeicher- Wartezeit zu optimieren.
  • Bei einem typischen Computersystem entspricht eine Speicheradresse einer Speicherleitung. 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 Leitungen wiedergewinnen und mehrere Leitungen in ein Speicherregister plazieren. Bei einem im Handel erhältlichen beispielhaften Computersystem beträgt eine Leitung beispielsweise 128 Bytes, und wenn eine Leitung angefordert wird, gewinnt das Speichersystem 512 Bytes (4 Leitungen) wieder und plaziert die Leitungen in ein Register. Der anfordernde Prozessor empfängt lediglich die eine angeforderte Leitung. Die übrigen Leitungen stehen für ein Lesen mit verringerter Wartezeit zur Verfügung, wobei angenommen wird, daß eine der anderen Leitungen bald benötigt wird. Eine Kenntnis dieser Anordnung kann verwendet werden, um Compiler zu optimieren, die daraufhin die verringerte Wartezeit für die anderen Leitungen nutzen können.
  • Es ist ferner bekannt, daß Caches einen zugeordneten Vorabrufpuffer aufweisen, so daß die angeforderte Leitung und N folgende Leitungen im Falle eines Cache-Fehlgriffs aus dem Speicher wiedergewonnen werden. Üblicherweise ist der Transfer jeder der N Leitungen das Ergebnis einer separaten Bustransaktion. Der anfordernde Cache empfängt lediglich die eine angeforderte Leitung, und die übrigen Leitungen sind für ein Lesen mit verringerter Wartezeit verfügbar, wobei angenommen wird, daß eine der anderen Leitungen bald benötigt wird.
  • Im Gegensatz zu obigem kann bei einem Computersystem gemäß der Erfindung eine Leitungsgruppe aus dem Speicher wiedererlangt oder aus einem Cache kopiert werden, und die gesamte Leitungsgruppe kann durch den Anforderer mit einer einzigen Leseanweisung im Cache abgespeichert werden. Ferner wird eine Cache-Kohärenz zusätzlich zu einzelnen Leitungen auch für Leitungsgruppen aufrechterhalten. Insbesondere weisen einzelne Leitungen innerhalb einer Leitungsgruppe unterschiedliche Besitzer auf. Hieraus ergeben sich mehrere Vorteile. Als erstes betrachte man die oben erläuterten relativen Wartezeiten. Falls der Prozessor 108 eine Leitung anfordert, die sich im Speicher 114 befindet, beinhaltet ein Großteil der Wartezeit ein Lokalisieren der Leitung. Falls es wahrscheinlich ist, daß benachbarte Leitungen benötigt werden (räumlich-nahe Lage), liefert ein System gemäß der Erfindung mehrere Leitungen für eine sehr geringe inkrementale Wartezeit. Ein individueller Besitz an Leitungen innerhalb von Leitungsgruppen verringert eine Cache-Zu- Cache-Kopieraktivität. Ferner ermöglichen spezielle Speicheranweisungen einen Transfer einer variablen Anzahl von Leitungen, 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 Leitungsgruppe 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 Leitung 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 Leitungen direkt aus dem Speicher 114 wieder, statt einen zusätzlichen Busverkehr an dem Knoten 102 zu verursachen. Dementsprechend verringert ein System, das Leitungsgruppen 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 Leitungsgröße L auf, und die Einheit der Kohärenz und die Einheit des Transfers beträgt L. In Sektoren aufgeteilte Caches mit Teilleitungen weisen Teilleitungen (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 Leitungsgröße L, die Transfereinheit kann L oder ganzzahlige Vielfache von L betragen, und die Kohärenzeinheit beträgt und L und ganzzahlige Vielfache von L. Leitungsgruppen können die Verwendung von Teilleitungen ergänzen. Das heißt, daß in Sektoren aufgeteilte Caches mit Teilleitungen sowie ein Schnüffeln in jedem Knoten verwendet werden können und Leitungsgruppen mit einem Verzeichnis oder Kohärenzfilter über mehrere Knoten verwendet werden können.
  • Falls ein Speichersystem N Leitungen wiedergewinnt und sie in ein Register plaziert, kann es zweckmäßig sein, dieselben N Leitungen als eine Leitungsgruppe zu verwenden. Es ist jedoch nicht nötig, daß eine Leitungsgruppe dieselbe Größe aufweist wie ein Speicherregister. In einem Teil der folgenden Erörterung sei angenommen, daß eine Leitungsgruppe lediglich zu Darstellungszwecken aus vier Leitungen besteht. Unter Vorgabe einer M-Bit-Adresse und von N Leitungen in einer Leitungsgruppe wird eine Leitungsgruppe durch die höchstwertigen M minus log2(N) Bits der Adresse definiert. Beispielsweise angenommen, daß eine Leitungsgruppe vier Leitungen beträgt, und unter der Annahme, der Einfachheit halber, einer 16-Bit-Adresse, liegt eine aus vier Leitungen bestehende Leitungsgruppe 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 Leitung in einem Satz der Adresse entspricht. Bei Leitungsgruppen gemäß der Erfindung kann der Index statt einer einzelnen Leitung einer Leitungsgruppe 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 Leitungen bestehende Leitungsgruppe verwendet werden. Eine Markierung kann für die gesamte Leitungsgruppe gelten. Alternativ weist jede Leitung vorzugsweise einen separaten adressierbaren Eintrag auf, wie durch die Markierung für die Leitung bestimmt wird. Jede Leitung 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 Leitungen aus dem Speicher oder aus einem anderen Cache als eine Gruppe wiedergewonnen werden, und N Leitungen können als Gruppe in einen Cache plaziert werden. Nachdem die Leitungsgruppe in den Cache plaziert wurde, können die Leitungen als Gruppe oder separate Leitungen behandelt werden, wie unten erläutert wird.
  • Cache-Kohärenzprotokolle plazieren üblicherweise jede im Cache abgespeicherte Leitung in einen von mehreren Zuständen. Ein üblicher Ansatz verwendet drei mögliche Zustände für jede Leitung in einem Cache. Bevor irgendwelche Leitungen 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 Leitung in den Cache plaziert wird, wird der Zustand des Eintrags in dem Cache von Ungültig zu "Gemeinsam Verwendet" geändert. Falls eine Leitung in einem Cache modifiziert wird, kann sie auch unmittelbar in einem Speicher modifiziert werden (als Durchschreiben bezeichnet). Alternativ dazu kann ein Cache eine modifizierte Leitung nur dann in einen Speicher schreiben, wenn die modifizierte Leitung in dem Cache invalidiert oder ersetzt ist (als Rückschreiben bezeichnet). Wenn bei einem Rückschreib-Cache +eine Leitung 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 Leitung in den Cache kopiert wird, falls keine Kopie der Leitung in einem anderen Cache existiert, die Leitung in einen "Exklusiv"-Zustand plaziert. Das Wort "Exklusiv" bedeutet, daß genau eine Cache-Hierarchie eine Kopie der Leitung aufweist. Falls sich eine Leitung in einem "Exklusiv"-Zustand in einer Cache-Hierarchie für einen ersten Prozessor befindet, und falls ein zweiter Prozessor dieselbe Leitung anfordert, wird die Leitung anschließend in zwei Cache- Hierarchien kopiert, und der Zustand des Eintrags in jedem Cache wird auf "Gemeinsam Verwendet" eingestellt. 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 Leitung in dem Exklusiv-Zustand kann jederzeit durch ihren Besitzer ohne weitere Kohärenzoperationen modifiziert werden. Nachdem sie modifiziert wurde, ist die Leitung in dem lokalen Cache als Modifiziert markiert. Der Exklusiv- Zustand ermöglicht, daß eine Leitung 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 Leitung 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 Leitung wird in dem MESI-Protokoll im Besitz sein, wenn sie sich in dem Modifiziert- oder Exklusiv-Zustand befindet. Zu Veranschaulichungszwecken lediglich, falls eine Leitung einen Besitzer (Zustand Modifiziert oder Exklusiv) aufweist und die Leitung durch einen Anforderer angefordert wird, der die Leitung eventuell modifiziert, wird die aktuellste Kopie der Leitung dem Anforderer bereitgestellt und zusätzlich in einen Speicher geschrieben. Der vorherige Besitzer invalidiert seine Kopie der Leitung, und der neue Besitzer stellt den Anfangszustand der Leitung auf Exklusiv ein. Falls eine Leitung 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 Leitung auf Gemeinsam Verwendet ein.
  • Weitere Annahmen können für Leitungsgruppen nützlich sein. Falls sich eine angeforderte Leitung in einer Leitungsgruppe befindet, die einen gemischten Besitz aufweist (das heißt mindestens zwei Leitungen in der Gruppe weisen unterschiedliche Besitzer auf), so sollte der Anforderer vorzugsweise einen Besitz lediglich der einen angeforderten Leitung erhalten, um übermäßige Cache-Zu-Cache-Transfers zu vermeiden. Falls sich im Gegensatz hierzu eine angeforderte Leitung in einer Leitungsgruppe 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 Leitungsgruppe bekommen. Diese Regeln verringern eine Wartezeit für Leitungsgruppen, indem eine Leitungsgruppe und ein Besitz der Gruppe transferiert werden, falls die Leitungen alle verwendet sind, um sich im Besitz desselben vorherigen Besitzers zu befinden, während sie verstärkte Cache-Zu-Cache-Transfers verhindern, indem sie Leitungen, 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 Leitungen transferiert werden sollten, wenn lediglich eine Leitung angefordert wird. Im einzelnen können neue Speichersystembefehle implementiert werden, die eine Anforderung optional auf eine einzige Leitung begrenzen oder optional erlauben, daß mehrere Leitungen transferiert werden.
  • Angesichts der obigen Annahmen und Merkmale veranschaulicht Fig. 2 ein beispielhaftes Verfahren zum Aufrechterhalten einer Kohärenz für Leitungsgruppen für eine Leitungsanforderung, bei der ein Besitz der angeforderten Leitung nicht angefordert wird. Fig. 3 und 4 veranschaulichen ein beispielhaftes Verfahren zum Aufrechterhalten einer Kohärenz für eine Leitungsgruppe für eine Leitungsanforderung, bei der ein Besitz der angeforderten Leitung angefordert wird. In Fig. 1 und in der folgenden Erläuterung der Fig. 2 bis 4 wird ein Verzeichnis zum Zweck eines beispielhaften Systems angenommen, jedoch sind Kohärenzfilter oder andere Kohärenzverfahren gleichermaßen geeignet.
  • In Fig. 2 wird eine Leitung angefordert, aber ein Besitz der Leitung 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 Leitungsgruppe geprüft. Bei Schritt 200, falls alle Leitungen in der entsprechenden Leitungsgruppe nicht im Besitz sind (für MESI befinden sich keine Leitungen in irgendeinem Cache in dem Modifiziert- oder Exklusiv- Zustand), so erhält der Anforderer bei Schritt 202 eine Kopie der angeforderten Leitung und Kopien von bis zu allen der anderen Leitungen in der entsprechenden Leitungsgruppe. Der Anforderer markiert seine Kopie von wiedergewonnenen Leitungen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Leitungen als Ungültig. Bei Schritt 204, falls manche Leitungen in der entsprechenden Leitungsgruppe im Besitz sind und die angeforderte Leitung nicht im Besitz ist, erhält der Anforderer bei Schritt 206 eine Kopie der angeforderten Leitung und Kopien von bis zu allen der anderen nicht im Besitz befindlichen Leitungen in der entsprechenden Leitungsgruppe. Der Anforderer markiert seine Kopie von wiedergewonnenen Leitungen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Leitungen als Ungültig.
  • Man beachte, daß bei den Schritten 202 und 206 die angeforderte Leitung und vielleicht andere Leitungen in einer Leitungsgruppe nicht im Besitz sind. Deshalb können die nicht im Besitz befindlichen Leitungen aus dem Speicher wiedergewonnen werden, und, wie oben erörtert wurde, für ein Mehrbussystem werden die nicht im Besitz befindlichen Leitungen 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 Leitungen 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 Leitungen aus dem Speicher gesetzt wird. Folglich wird die Wartezeit pro Leitung verringert, da mit einer einzigen Anforderung mehrere Leitungen transferiert werden, und für Mehrbussysteme wird die Wartezeit weiter verringert und der lokale Busverkehr weiter verringert, da die Leitungen statt aus Caches aus einem Speicher wiedergewonnen werden.
  • Bei Schritt 208 befindet sich die angeforderte Leitung im Besitz, und falls ein Besitz innerhalb der Leitungsgruppe gemischt ist (das heißt, daß sich manche Leitungen in der entsprechenden Leitungsgruppe im Besitz unterschiedlicher Besitzer befinden), dann erhält der Anforderer bei Schritt 210 genau die angeforderte Leitung von dem Besitzer. Wie oben erörtert wurde, sollte der Anforderer vorzugsweise einen Besitz lediglich der einen angeforderten Leitung erhalten, um übermäßige Cache-Zu-Cache-Transfers zu vermeiden. Der Anforderer markiert seine Kopie der wiedergewonnenen Leitung 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 Leitungen als Ungültig. Bei Schritt 212 befinden sich alle Leitungen in der entsprechenden Leitungsgruppe im Besitz desselben Besitzers. Der Anforderer kann eine Kopie der angeforderten Leitung und Kopien von bis zu allen der anderen Leitungen 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 Leitungsgruppe erhalten. Der Anforderer markiert seine Kopie von wiedergewonnenen Leitungen 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 Leitungen als Ungültig.
  • In Fig. 3 wird eine Leitung angefordert, und ein Besitz der Leitung wird angefordert. Bei Schritt 300, falls alle Leitungen in der entsprechenden Leitungsgruppe nicht im Besitz sind, kann der Anforderer bei Schritt 302 eine Kopie der angeforderten Leitung und von bis zu allen der anderen Leitungen in der entsprechenden Leitungsgruppe erhalten. Alle existierenden Kopien der angeforderten Leitungen, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Leitung als Exklusiv und seine Kopien anderer wiedergewonnener Leitungen als Gemeinsam Verwendet (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Leitungen als Ungültig. Bei Schritt 304, falls einige Leitungen in der entsprechenden Leitungsgruppe im Besitz sind und die angeforderte Leitung nicht im Besitz ist, erhält der Anforderer bei Schritt 306 eine Kopie der angeforderten Leitung und Kopien von bis zu allen der anderen nicht im Besitz befindlichen Leitungen in der entsprechenden Leitungsgruppe. Alle existierenden Kopien der angeforderten Leitungen, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Leitung als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Kopien etwaiger anderer wiedergewonnener Leitungen als Gemeinsam Verwendet, und der Anforderer markiert seine Eintragspositionen für etwaige nicht wiedergewonnene Leitungen als Ungültig. Wie oben in Zusammenhang mit Fig. 2 erörtert wurde, werden nicht im Besitz befindliche Leitungen für ein Mehrbussystem vorzugsweise aus dem Speicher wiedergewonnen. Exklusive Leitungen können entweder aus dem besitzenden Cache oder Hauptspeicher wiedergewonnen werden.
  • Bei Schritt 308 ist die angeforderte Leitung im Besitz befindlich, und falls sich manche Leitungen in der entsprechenden Leitungsgruppe im Besitz unterschiedlicher Besitzer befinden, erhält der Anforderer bei Schritt 310 genau die angeforderte Leitung von dem Besitzer der angeforderten Leitung. Alle existierenden Kopien der angeforderten Leitung, die nicht die Kopie des Anforderers sind, werden als Ungültig markiert. Der Anforderer markiert seine Kopie der angeforderten Leitung als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für die nicht wiedergewonnenen Leitungen als Ungültig. Bei Schritt 312 befinden sich alle Leitungen in der entsprechenden Leitungsgruppe 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 Leitungsgruppe 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 Fig. 3 im Besitz, und die gesamte Leitungsgruppe wird zu dem Anforderer kopiert. Es ist möglich, daß ein Gruppenbesitz zu einem Überlastungszustand (übermäßige Cache-Zu-Cache-Transfers) führen kann. Fig. 4 veranschaulicht ein alternatives Verfahren, das bei der Entscheidung "JA" für Schritt 308 in Fig. 3 beginnt und bei dem ein Besitz einer Gruppe zerschlagen werden kann, wenn sie durch den derzeitigen Besitzer lediglich teilweise modifiziert wird.
  • In Fig. 4 wird ein zusätzlicher Test 400 hinzugefügt, um zu bestimmen, ob alle Leitungen in einer Leitungsgruppe durch einen ursprünglichen Besitzer modifiziert wurden. Bei Schritt 400 befindet sich die gesamte Leitungsgruppe im Besitz, und falls manche Leitungen nicht modifiziert wurden (manche Leitungen befinden sich nicht in dem Modifiziert- Zustand), wird bei Schritt 402 lediglich die angeforderte Leitung zu dem Anforderer kopiert. Der Anforderer markiert seine Kopie der angeforderten Leitung als Exklusiv (sowohl vor Ort als auch in dem entsprechenden Verzeichnis), und der Anforderer markiert seine Eintragspositionen für die nicht wiedergewonnenen Leitungen als Ungültig. Als Alternative könnten bei Schritt 402' zusätzlich zu einem Kopieren der angeforderten Leitung alle Leitungen, die nicht die angeforderte Leitung sind, kopiert werden, und der Zustand der Leitungen, die nicht die angeforderte Leitung sind, könnte als Gemeinsam Verwendet markiert werden. Als weitere Alternative könnten bei Schritt 402" zusätzlich zu einem Kopieren der angeforderten Leitung alle Leitungen, die nicht die angeforderte Leitung sind, kopiert werden, und der Zustand aller nicht-angeforderten Leitungen, die sich zuvor in dem Modifiziert-Zustand befanden, könnte als Exklusiv markiert werden, und der Zustand aller nichtangeforderten Leitungen, die sich zuvor in dem Exklusiv- Zustand befanden, könnte als Gemeinsam Verwendet markiert werden. Obwohl sich alle Leitungen im Besitz desselben Besitzers befanden, könnte daher, falls zwei Caches unterschiedliche Leitungen innerhalb einer Gruppe modifizieren müssen, jeder einen Besitz unterschiedlicher Leitungen 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 Ü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 Fig. 2 bei Schritt 202 die existierende Kopie der gesamten Leitungsgruppe invalidiert werden. Falls der Raum nicht benötigt wird, kann es der ursprünglichen Kopie der Leitungsgruppe jedoch gestattet werden, zu verbleiben, wie in Fig. 2 veranschaulicht ist. Das System kann verfolgen, wo Kopien von Leitungen existieren, und falls eine Leitung modifiziert wird, müssen lediglich die Caches mit Kopien der modifizierten Leitungen 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 Leitungsgruppen verringert den Kohärenzverkehr, so daß ein busbasiertes System wie in Fig. 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 (Fig. 2, 200, 204, 208; Fig. 3, 300, 304, 308; Fig. 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 Fig. 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. Bei einer früheren Anmeldung (der am 31. 10. 2000 eingereichten US-Patentanmeldung Nr. 09/704,176) wird eine Alternative zu einem Schnüffeln, zu Verzeichnissen und globalen Kohärenzfiltern offenbart. Bei der Anmeldung 09/704,176 erhält ein Computersystem eine Liste von Markierungen (als Globaler- Besitz-Markierungsliste, GOTL = global ownership tag list, bezeichnet) für alle Cacheleitungen 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 Leitung modifiziert (dirty) oder lediglich potentiell modifiziert (potentiell dirty) sein kann. Eine GOTL umfaßt im Besitz befindliche Leitungen und umfaßt allgemein nicht alle Gemeinsam Verwendeten Leitungen in dem System. Falls eine Leitung keinen Eintrag in der GOTL aufweist, kann angenommen werden, daß die Leitung 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 Leitungsgruppe, für die mindestens eine Leitung im Besitz ist, aufweisen kann. Ferner kann jeder Eintrag Informationen bezüglich des Kohärenzzustands jeder Leitung innerhalb der Leitungsgruppe und bezüglich dessen, welcher Prozessor oder Cache oder Knoten oder Bus der Besitzer der Leitung ist, umfassen. Falls eine bestimmte Leitung in einem Cache im Besitz ist, können die Markierungen für die entsprechende Leitungsgruppe in die GOTL plaziert werden, und als Teil des GOTL-Eintrags wird die bestimmte Leitung als im Besitz befindlich markiert, und der Besitzer wird identifiziert. Für jeden der Schritte, bei denen Kohärenzzustände bestimmt werden (Fig. 2, 200, 204, 208; Fig. 3, 300, 304, 308; Fig. 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 Leitung normalerweise nur dann in der GOTL befindet, wenn die Leitung im Besitz ist, wohingegen eine Adresse für eine Leitungsgruppe in der GOTL auch dann in der GOTL verbleiben kann, wenn jede einzelne Leitung in der Gruppe als gemeinsam verwendet markiert ist. Wie oben erörtert wurde, könnte beispielsweise in Fig. 2, bei Schritt 202, die existierende Kopie der gesamten Leitungsgruppe invalidiert werden, oder falls der Raum nicht benötigt wird, kann es der ursprünglichen Kopie der Leitungsgruppe gestattet werden, zu verbleiben. Falls ein Raum in der GOTL benötigt wird, kann das System wählen, nicht im Besitz befindliche Leitungsgruppen auszusondern, bevor Gruppen mit zumindest teilweisem Besitz ausgesondert werden.
  • Fig. 5 veranschaulicht ein Beispiel eines Gegenstücks zu den Fig. 3 und 4 (angeforderter Besitz) beim Verwenden einer GOTL. Man erinnere sich aus der obigen Erörterung, daß es einer Leitungsgruppe 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 Leitungsgruppe in einer GOTL verbleiben, obwohl keine Leitung in der Leitungsgruppe im Besitz ist. Das heißt, daß in einer GOTL ein Eintrag immer dann erfolgt, wenn eine Leitung in der Leitungsgruppe im Besitz ist, daß jedoch der Eintrag nicht unbedingt unmittelbar entfernt wird, wenn alle Leitungen innerhalb der Leitungsgruppe nicht mehr im Besitz sind. Die GOTL umfaßt lediglich die schmutzigen bzw. modifizierbaren Leitungen. Falls sich die Leitungsgruppe, die die angeforderte Leitung umfaßt, nicht in der GOTL befindet (Schritt 500) oder falls die Leitungsgruppe in der GOTL verbleibt, jedoch vollständig nicht im Besitz befindlich ist (Schritt 500), empfängt der Anforderer bis zu der gesamten Leitungsgruppe (Schritt 504). Falls die angeforderte Leitung nicht im Besitz ist, jedoch andere Leitungen in der Leitungsgruppe im Besitz sind (Schritt 506), werden bis zu alle nicht im Besitz befindlichen Leitungen empfangen (Schritt 508). Falls die angeforderte Leitung im Besitz ist und die Leitungsgruppe einen gemischten Besitz aufweist, wird lediglich die angeforderte Leitung empfangen (Schritt 512). Falls sich die gesamte Leitungsgruppe im Besitz desselben Besitzers befindet, wird die gesamte Leitungsgruppe empfangen (Schritt 514).
  • Man beachte, daß in den Fig. 2 bis 4 manche Schritte dazu führen, daß eine Teilmenge einer Gruppe kopiert wird, beispielsweise Fig. 2, 202. Wenn eine CPU-Anweisung beispielsweise eine einzelne Leitung anfordert, können alle nicht im Besitz befindlichen Leitungen in der entsprechenden Leitungsgruppe für den Fall, daß sie bald benötigt werden, spekulativ kopiert werden. Alternativ kann ein Besitz mehrerer Leitungen gewährt werden, obwohl der Anforderer lediglich eine Leitung anfordert. Alternativ dazu kann eine spezielle CPU-Anweisung implementiert werden, die ausdrücklich eine Leitung plus alle nicht im Besitz befindlichen anderen Leitungen in einer Leitungsgruppe anfordert. Bei jeder der Alternativen kopiert das System ein Minimum der angeforderten Leitung. Alternativ dazu kann eine spezielle CPU-Anweisung implementiert werden, die ausdrücklich eine Kopie oder einen Besitz einer gesamten Leitungsgruppe anfordert. Je nach der übrigen Systemarchitektur können Anforderungen, die mehr als eine Leitung erbeten, in einer einzigen unteilbaren Operation durchgeführt werden müssen.
  • Bei der obigen Beschreibung wird eine Kohärenz für Leitungsgruppen aufrechterhalten. Man könnte beispielsweise MESI verwenden, bei dem sich eine Leitungsgruppe lediglich dann in dem M-Zustand befindet, wenn sich alle Leitungen in der Gruppe in dem M-Zustand befinden, und so weiter. Für die in den Fig. 2 bis 5 veranschaulichten Verfahren liefert ein Besitz jedoch nützlichere Kohärenzinformationen für Leitungsgruppen. Für die in den Fig. 2 bis 5 veranschaulichten Verfahren wäre insbesondere der folgende Satz von Besitzkohärenzzuständen für Leitungsgruppen für Entscheidungen 200, 208, 300, 308, 400, 502 und 510 vorzuziehen:
    nicht im Besitz befindlich (alle Leitungen innerhalb der Gruppe sind nicht im Besitz befindlich)
    nicht ein Besitzer (mindestens eine Leitung ist im Besitz befindlich, und nicht alle Leitungen befinden sich im Besitz eines Besitzers)
    ein Besitzer (alle Leitungen innerhalb der Gruppe befinden sich im Besitz desselben Besitzers)
    ein-Besitzer-modifiziert (alle Leitungen innerhalb der Gruppe werden durch denselben Besitzer modifiziert).
  • Für die Zwecke der Entscheidungen in Fig. 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 Leitungen 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 (19)

1. Computersystem, das folgender Merkmale aufweist:
einen Cache-Speicher (C1, C2), der eine Leitungsgruppe mit einer einzigen Speichertransaktion liest und im Cache abspeichert; und
ein System zum Aufrechterhalten einer Identität dessen, welche Vorrichtung, wenn überhaupt eine, die Leitungsgruppe besitzt und welche Vorrichtung, wenn überhaupt eine, jede einzelne Leitung innerhalb der Leitungsgruppe besitzt.
2. Computersystem gemäß Anspruch 1, wobei das System zum Aufrechterhalten einer Identität eine Identität dessen aufrechterhält, welcher Bus (106), wenn überhaupt einer, jede einzelne Leitung innerhalb der Leitungsgruppe besitzt.
3. Computersystem gemäß Anspruch 1 oder 2, das ferner folgende Merkmale aufweist:
einen Prozessor (P); und
wenn der Prozessor eine einzelne Leitung innerhalb der Leitungsgruppe anfordert und die Leitung nicht in dem Cache-Speicher (116) vorhanden ist, und wenn mehr als eine Leitung innerhalb der Leitungsgruppe nicht im Besitz befindlich ist, werden mehr als eine Leitung zu dem Cache-Speicher kopiert.
4. Computersystem gemäß Anspruch 3, das ferner folgendes Merkmal aufweist:
wenn der Prozessor (108) eine einzelne Leitung innerhalb der Leitungsgruppe anfordert und wenn mindestens eine Leitung innerhalb der Leitungsgruppe im Besitz befindlich ist, werden alle nicht im Besitz befindlichen Leitungen in der Leitungsgruppe zu dem Cache- Speicher kopiert.
5. Computersystem gemäß einem der Ansprüche 1 bis 4, das ferner folgendes aufweist:
ein Speichersystem (112, 114); und
wenn das Speichersystem eine Anforderung einer einzelnen Leitung empfängt, liest das Speichersystem eine Leitungsgruppe.
6. Computersystem gemäß einem der Ansprüche 1 bis 5, das ferner folgende Merkmale aufweist:
ein Speichersystem (112, 114); und
wenn ein Cache-Speicher (110) bei einem ersten Knoten (100) eine Leitung anfordert, die in einem Cache- Speicher bei einem zweiten Knoten (102) verfügbar ist, und die Leitung ferner in einem gemeinsam verwendeten Speicher (114) bei einem dritten Knoten (104) verfügbar ist, kopiert das Speichersystem eine Leitungsgruppe aus dem gemeinsam verwendeten Speicher bei dem dritten Knoten zu dem Cache-Speicher bei dem ersten Knoten.
7. Computersystem gemäß einem der Ansprüche 1 bis 6, das ferner folgendes Merkmal aufweist:
wenn ein Cache-Speicher (116) in einem ersten Knoten (100) eine Leitung anfordert, die in einem gemeinsam verwendeten Zustand in einem Cache-Speicher (116) in einem zweiten Knoten (102) verfügbar ist, wird die Leitung aus dem Speicher in dem zweiten Knoten und nicht aus dem Cache-Speicher in dem zweiten Knoten wiedergewonnen.
8. Computersystem gemäß einem der Ansprüche 1 bis 7, das ferner folgendes Merkmal aufweist:
mindestens zwei Leitungen in der Leitungsgruppe, die separate Besitzer aufweisen.
9. Computersystem, das folgende Merkmale aufweist:
einen Cache-Speicher (C1, C2), der eine Leitungsgruppe mit einer einzigen Speichertransaktion liest; und
wobei der Cache-Speicher weniger als alle Leitungen innerhalb der Leitungsgruppe empfängt, wenn die Leitungsgruppe angefordert wird und wenn die Leitungsgruppe teilweise im Besitz eines anderen Cache- Speichers ist.
10. Computersystem, das folgende Merkmale aufweist:
einen Cache-Speicher, der eine bestimmte Leitung innerhalb einer Leitungsgruppe anfordert; und
wobei der Cache-Speicher eine variable Anzahl von Leitungen innerhalb der Leitungsgruppe als Antwort auf die Anforderung der einen bestimmten Leitung empfängt, wenn die Leitungsgruppe teilweise im Besitz eines anderen Cache-Speichers ist.
11. Computersystem, das folgende Merkmale aufweist:
einen Cache-Speicher, der eine bestimmte Leitung innerhalb einer Leitungsgruppe anfordert; und
wobei der Cache-Speicher die gesamte Leitungsgruppe empfängt, wenn die gesamte Leitungsgruppe im Besitz desselben Besitzers ist.
12. Verfahren zum Aufrechterhalten einer Kohärenz für ein Computersystem, das folgende Schritte aufweist:
Wiedergewinnen (202, 206, 212; 302, 306, 312; 402', 402", 404) einer Leitungsgruppe als Antwort auf eine Anforderung einer einzigen Leitung; und
Aufrechterhalten (202, 206, 210, 212; 302, 306, 310, 312; 402, 402', 402", 404) von Besitzinformationen für die Leitungsgruppe und für jede einzelne Leitung innerhalb der Leitungsgruppe.
13. Verfahren zum Transferieren von Speicherleitungen in einem Computersystem, das folgende Schritte aufweist:
Anfordern einer Speicherleitung durch einen Prozessor (108); und
Kopieren der angeforderten Speicherleitung aus einem gemeinsam verwendeten Speicher (M) zu einem Cache- Speicher (C1, C2);
Kopieren (202, 206; 302, 306) aller zusätzlichen nicht im Besitz befindlichen Leitungen innerhalb einer Leitungsgruppe, die der angeforderten Leitung entspricht, aus dem gemeinsam verwendeten Speicher zu dem Cache- Speicher, und Nichtkopieren etwaiger anderer im Besitz befindlicher Leitungen innerhalb der Leitungsgruppe als die angeforderte Leitung.
14. Verfahren gemäß Anspruch 13, das ferner folgenden Schritt aufweist:
Einstellen eines Kohärenzzustands, in dem Cache- Speicher, einer Eintragsposition für eine Leitung in der Leitungsgruppe, die nicht kopiert ist, auf einen Zustand, der anzeigt, daß der Inhalt der Eintragsposition ungültig ist.
15. Verfahren zum Aufrechterhalten einer Kohärenz für ein Computersystem, das folgende Schritte aufweist:
a) Anfordern einer Speicherleitung durch einen Prozessor (P), wobei sich die Speicherleitung innerhalb einer Leitungsgruppe befindet;
b) Erfassen, daß alle Leitungen in der Leitungsgruppe durch einen Besitzer modifiziert wurden;
c) Kopieren, als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe zu einem Cache-Speicher für den Prozessor (P); und
d) Einstellen eines Kohärenzzustands, in dem Cache- Speicher, aller Leitungen in der Leitungsgruppe auf einen Zustand, der angibt, daß die Leitungen im Besitz des Cache-Speichers sind.
16. Verfahren zum Aufrechterhalten einer Kohärenz für ein Computersystem, das folgende Schritte aufweist:
a) Anfordern einer Speicherleitung durch einen Prozessor (P), wobei sich die Speicherleitung innerhalb einer Leitungsgruppe befindet;
b) Kopieren (404), als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe, zu einem Cache-Speicher (C1, C2) für den Prozessor, wenn alle Leitungen in der Leitungsgruppe durch denselben Besitzer modifiziert wurden; und
c) Kopieren (402), als Antwort auf die Anforderung des Schritts (a), lediglich der angeforderten Leitung in der Leitungsgruppe, zu einem Cache- Speicher für den Prozessor, wenn alle Leitungen in der Leitungsgruppe im Besitz befindlich sind, jedoch mindestens eine Leitung in der Leitungsgruppe nicht modifiziert wurde.
17. Verfahren gemäß Anspruch 15 Schritt (b), das ferner den Schritt des Markierens aller Leitungen in der Leitungsgruppe als exklusiv aufweist.
18. Verfahren zum Aufrechterhalten einer Kohärenz für ein Computersystem, das folgende Schritte aufweist:
a) Anfordern einer Speicherleitung durch einen Prozessor (P), wobei sich die Speicherleitung innerhalb einer Leitungsgruppe befindet;
b) Kopieren, als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe zu einem Cache-Speicher (C1, C2) für den Prozessor, wobei alle Leitungen in der Leitungsgruppe als exklusiv markiert werden, wenn alle Leitungen in der Leitungsgruppe durch einen Besitzer modifiziert wurden; und
c) Kopieren, als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe zu einem Cache-Speicher für den Prozessor, wobei die angeforderte Leitung als exklusiv markiert wird und die nicht-angeforderten Leitungen als gemeinsam verwendet markiert werden, wenn alle Leitungen in der Leitungsgruppe im Besitz eines Besitzers sind, jedoch mindestens eine Leitung in der Leitungsgruppe nicht modifiziert wurde.
19. Verfahren zum Aufrechterhalten einer Kohärenz für ein Computersystem, das folgende Schritte aufweist:
a) Anfordern einer Speicherleitung durch einen Prozessor (P), wobei sich die Speicherleitung in einer Leitungsgruppe befindet;
b) Kopieren, als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe zu einem Cache-Speicher (116) für den Prozessor, wobei alle Leitungen in der Leitungsgruppe als exklusiv markiert werden, wenn alle Leitungen in der Leitungsgruppe durch einen Besitzer modifiziert wurden; und
c) Kopieren, als Antwort auf die Anforderung des Schritts (a), aller Leitungen in der Leitungsgruppe zu einem Cache-Speicher für den Prozessor, wobei die angeforderte Leitung und alle etwaigen modifizierten nicht-angeforderten Leitungen als Exklusiv markiert werden und alle exklusiven nichtangeforderten Leitungen als gemeinsam verwendet markiert werden, wenn alle Leitungen in der Leitungsgruppe im Besitz eines Besitzer sind, jedoch mindestens eine Leitung in der Leitungsgruppe nicht modifiziert wurde.
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 true DE10232926A1 (de) 2003-03-06
DE10232926B4 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

Family Cites Families (18)

* 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
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
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
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
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
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE10393919B4 (de) Spekulative verteilte Konfliktauflösung für ein Cache-Kohärenzprotokoll
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE112015004336T5 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
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
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112005002180T5 (de) Lösen von Cachekonflikten
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System

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