DE60117818T2 - Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten - Google Patents

Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten Download PDF

Info

Publication number
DE60117818T2
DE60117818T2 DE60117818T DE60117818T DE60117818T2 DE 60117818 T2 DE60117818 T2 DE 60117818T2 DE 60117818 T DE60117818 T DE 60117818T DE 60117818 T DE60117818 T DE 60117818T DE 60117818 T2 DE60117818 T2 DE 60117818T2
Authority
DE
Germany
Prior art keywords
cache
buffer
data
data value
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60117818T
Other languages
English (en)
Other versions
DE60117818D1 (de
Inventor
ANGELO Los Altos PRUSCINO
Roger Woodside BAMFORD
Jr. William Alameda BRIDGE
David Alamo BROWER
Neil Los Gatos MACNAUGHTON
Fung Tak Redwood Shores WANG
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Application granted granted Critical
Publication of DE60117818D1 publication Critical patent/DE60117818D1/de
Publication of DE60117818T2 publication Critical patent/DE60117818T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Circuits Of Receivers In General (AREA)
  • Multi Processors (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft Zwischenspeicher-Verwaltung und, insbesondere, Verwaltung des Ersetzens von Daten in einem Zwischenspeicher auf einem Knoten aufgrund von Zwischenspeichern anderer Knoten.
  • HINTERGRUND DER ERFINDUNG
  • Ein Cluster ist eine Sammlung von Knoten (nodes), wobei jeder mit volatilen dynamischen Speichervorrichtungen („dynamischer Speicher") ist, der von einem oder einer Mehrzahl von CPU's geteilt wird. Jeder Knoten in einem Cluster ist mit den anderen Knoten in dem Cluster über eine Zwischenverbindung gekoppelt. Typischerweise teilt sich jeder Knoten in dem Cluster Ressourcen mit anderen Knoten in dem Cluster. Solche Ressourcen können, zum Beispiel, Datenwerte sein, wie zum Beispiel Seiten, die in einer statischen Speichervorrichtung (z.B. Platten-Speichervorrichtungen) gespeichert sind.
  • Software, die als Anwendung bezeichnet wird, läuft auf jedem der Knoten. Die Anwendung wird auf Daten von geteilten Datenressourcen betrieben. Zum Beispiel kann ein Datenbanksystem auf jedem Knoten in dem Cluster laufen und Daten verwalten, die in den Datenblöcken auf den Plattenspeichervorrichtungen gespeichert sind.
  • Zum Beschleunigen des Zugriffs auf Datenwerte, die von einer Anwendung benötigt werden, die auf einem Knoten in einem Cluster läuft, werden Kopien der Datenwerte in dem Zwischenspeicher des Knotens gehalten. Ein Zwischenspeicher (Cache) ist ein Speichermedium, das zum Speichern einer Kopie eines Datenwerts zum effektiven Zugriff verwendet wird, wobei dieser Datenwert von anderen Quellen weniger effizient erhalten werden kann. Die andere Quelle, auf die weniger effizient zugegriffen wird, wird nachstehend als eine sekundäre Datenquelle bezeichnet. Zum Beispiel speichert ein Datenbanksystem, das auf einem Knoten in einem Cluster läuft, typischerweise Datenblöcke dauerhaft auf einer Speicherscheibe. Jedoch lädt das Datenbanksystem Kopien der Datenblöcke in einen Zwischenspeicher in einem dynamischen Speicher, um darauf zuzugreifen. In ähnlicher Weise speichert ein Browser, der auf einem persönlichem Rechner läuft, Webseiten, auf die häufig zugegriffen wird, die über ein Netzwerk erhalten werden, in einem Zwischenspeicher in der Form von Platten-Dateien.
  • Ein Speicher auf einem Knoten wird von einem Zwischenspeicher-Manager verwaltet. Ein Zwischenspeicher-Manager ist ein Softwaresystem, das versucht, einen Zwischenspeicher in einer Weise zu verwalten, die Eingabe und Ausgabe zwischen dem Zwischenspeicher und einer sekundären Datenressource reduziert. Typischerweise hält der Zwischenspeicher-Manager eine Kopie der Datenwerte, auf die am häufigsten zugegriffen wird, in dem Zwischenspeicher. Zusätzlich kann ein Zwischenspeicher-Manager Änderungen nachverfolgen, die von einer Anwendung an einem Datenwert gemacht werden, und kann durch „Zurückschreiben", „Hindurchschreiben" und verschiedene Logging-Mechanismen arrangieren, dass jeder Datenwert dauerhaft in einer sekundären Datenressource (z.B. Plattenspeichervorrichtung) gespeichert wird.
  • Datenwerte, auf die von einer bestimmten Anwendung häufig zugegriffen wird, werden gemeinsam als Arbeitssatz der Anwendung bezeichnet. Wenn der Arbeitssatz einer Anwendung zu groß ist, um in den Zwischenspeicher eines Knotens zu passen, auf dem die Anwendung läuft, stürzt die Anwendung ab. Abstürzen beinhaltet Ersetzen von zwischengespeicherten Datenwerten in einem Zwischenspeicher durch Datenwerte aus sekundären Datenressourcen mit einer unerwünschten hohen Frequenz. Abstürzen tritt auf, wenn Datenwerte, auf die häufig zugegriffen wird, sich kontinuierlich gegenseitig in dem Zwischenspeicher ersetzen, wodurch häufige Zwischenspeicher-Verluste verursacht werden und dadurch die durchschnittliche Datenwert-Zugriffszeit drastisch erhöht wird. Wenn ein Absturz auftritt und eine Anwendung Datenwerte benötigt, verspätet sich die Anwendung zu oft, indem auf das Abfragen eines benötigten Datenwerts aus der sekundären Datenressource gewartet wird. Abstürzen reduziert daher einen Durchsatz. Andererseits stürzt die Anwendung nicht ab und der Durchsatz des Systems ist verbessert, wenn der Arbeitssatz in verfügbaren dynamischen Speicher passt.
  • Ein skalierbarer Cluster ist ein Cluster zu dem Ressourcen hinzugefügt werden können, um die Kapazität des Clusters als ein Ganzes proportional zu erhöhen. Eine Ressource kann, zum Beispiel, ein Computer, eine CPU, eine Speichervorrichtung, Verbindungsbandbreite oder dynamischer Speicher pro Computer sein. Typischerweise wird die Kapazität gemäß einem Maß von Geschäftswachstum gemessen, wie zum Beispiel der Anzahl der Benutzer, dem Webseiten-Zugriff pro Sekunde, den Übermittlungen pro Zeitperiode und/oder Terabyte von Daten.
  • Wenn der Bedarf an Kapazität in einem Cluster steigt, steigt üblicherweise der Bedarf an CPU's und manchmal steigt der Arbeitssatz. Zum Anpassen des Bedarfs nach zusätzlichen CPU's können mehr Knoten zu dem Cluster hinzugefügt werden. Jedoch benötigt ein Anpassen an einen erhöhten Arbeitssatzes mehr als nur ein Hinzufügen von Rechnern zu dem Cluster. Stattdessen muss der dynamische Speicher aller Knoten in dem Cluster erhöht werden, da jeder Knoten genügend dynamischen Speicher zum Speichern des Arbeitssatzes benötigt. Jeder Knoten benötigt genügend dynamischen Speicher zum Speichern des gesamten Arbeitssatzes, da ein großer Teil der Seiten, auf die am häufigsten zugegriffen wird, typischerweise in dem Zwischenspeicher jedes Knotens wiederholt ist.
  • Für jeden Rechner ist die Menge von dynamischen Speicher, die hinzugefügt werden kann, begrenzt. Sogar bevor die Grenze erreicht ist, ist die Gesamtmenge von dynamischen Speicher, die von der Anwendung benötigt ist, gleich seinem Arbeitssatz multipliziert mit der Anzahl von Knoten in dem Cluster. Wenn der Cluster wächst, falls der Arbeitssatz genauso wächst, dann verringert sich die Preis-Leistung mit der Cluster-Größe und somit skaliert sich der Cluster nicht. Falls der Arbeitssatz größer als die Grenze ist, dann stürzt die Anwendung ab. Hinzufügen von Knoten zu dem Cluster kann die CPU-Kapazität des Clusters erhöhen, aber sie wird das Abstürzen nicht eliminieren. Folglich leidet der Durchsatz des Clusters.
  • Basierend auf dem Vorangegangenen ist es wünschenswert, einen Mechanismus zum Reduzieren des Abstürzens auf einem Cluster bereitzustellen, für den es nicht nötig ist, jedem Knoten in dem Cluster dynamischen Speicher hinzuzufügen.
  • Die folgenden Bezugnahmen geben den Stand der Technik an:
    • US-Patent Nr. 6,092,157 für Suzuki beschreibt ein Informationsverarbeitungssystem, das eine Mehrzahl von Knoten verwendet, in dem jeder der Knoten fähig ist, sowohl auf seinen eigenen internen Speicher als auch auf Speicher anderer Knoten zuzugreifen;
    • Feeley M. J. et al. „Implementing Global Memory Management a Workstation Cluster Operating Systems Review (SIGin OPS), ACM-Hauptquartier, New York, U.S. Vol. 29, Nr. 5, 1. Dezember 1995, Seiten 201, 212, XP000584826 beschreibt den Entwurf eines Workspace-Clusters mit dem Ziel des Verwendens eines einzelnen, vereinheitlichten aber verteilten Speicherverwaltungsalgorithmus auf dem untersten Level des Betriebssystems;
    • US-Pat. Nr. 5,680,576 für Laudon beschreibt ein Multiprozessorsystem mit einer Mehrzahl von Nachfragern, wobei ein Speicher und ein Speicherverzeichnis-Steuergerät, die eine Verzeichnis-basierte Kohärenz anwenden, ein Verfahren zum Detektieren eines Fallens von Sauber-exklusiven (clean-exclusive) Daten implementieren. Nur einer Interventionsnachricht wird erlaubt, auf ein exklusives Objekt zuzugreifen, das von einem ersten Nachfrager gehalten wird, wobei die Interventionsnachricht von einem zweiten Nachfrager hervorgerufen ist. Das System detektiert, ob der erste Nachfrager ein außergewöhnliches Zurückschreiben (writeback) für das Ziel, auf das von der Interventionsnachricht gezielt wird, sowie ob der erste Nachfrager eine Sauber-exklusive, Schmutzig-exklusive (dirty-exclusive) oder ungültige Kopie des Objekts, auf das von der Interventionsnachricht gezielt wird, aufweist. Eine Sauber-exklusive Kopie des Ziels wurde fallen gelassen, wenn kein außerordentliches Zurückschreiben detektiert wurde und der erste Nachfrager das Objekt in dem ungültigen Zustand aufweist.
    • US-Pat. Nr. 5,297,269 für Howard et al. beschreibt ein Zwischenspeicher-Kohärenzprotokoll für ein Multiprozessorsystem, das für Lese/Schreib-, Nur-Lese- und Übergangsdatenzustände bereitsteht und für ein Anzeigen dieser Zustände, die in einem Speicherverzeichnis im Hauptspeicher zu speichern sind; und
    • US-Pat. Nr. 5,829,032 für Yamagami et al. beschreibt, wodurch so viele Bezeichner (tag)-Informationen wie der Anzahl von Blöcken entsprechen, die in Hauptspeichern gespeichert sind, in Bezeichner-Speichern gespeichert sind. Die Bezeichner-Information zeigt an, ob ein Prozessor, der zu einem anderen Knoten gehört wie die Knoten, die Bezeichner-Speicher aufweisen, eine Zugriffsanfrage gemacht hat, und die Inhalte eines Zwischenspeichers erneut geschrieben wurden, oder nicht. Bus-Brücken führen ein Zwischenspeicher-Kohärenzprotokoll durch, das auf die Bezeichner-Informationen bezogen ist. Wen die Bezeichner-Information „modifiziert" anzeigt, stoppen die Bus-Brücken das Lesen von Daten aus den Hauptspeichern und senden die korrekten Daten an den anfragenden Prozessor, nachdem ein Zurück-Speichern-Prozess des modifizierten Blocks abgeschlossen ist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung schafft ein Verfahren zum Verwalten des Ersetzens von Daten, die in Puffern einer Mehrzahl von Zwischenspeichern gespeichert sind, wobei die Mehrzahl von Zwischenspeichern auf einem Knoten eines Satzes von einem oder einer Mehrzahl von Knoten angeordnet sind. Jeder Knoten des Satzes von einem oder einer Mehrzahl von Knoten weist einen oder eine Mehrzahl von Zwischenspeichern der Mehrzahl von Zwischenspeichern auf, wobei die Mehrzahl von Zwischenspeichern einen ersten Zwischenspeicher aufweist. Das Verfahren weist Auswählen zum Ersetzen eines ersten Puffers aus dem ersten Zwischenspeicher auf der Basis von einem oder einer Mehrzahl von Faktoren aus einer Mehrzahl von Puffern auf, die zum Ersetzen in dem ersten Zwischenspeicher verfügbar sind. Der eine oder die Mehrzahl von Faktoren in einer bestimmten Ausführungsform weisen entweder den Zustand von wenigstens einem anderen Zwischenspeicher der Mehrzahl von Zwischenspeichern, oder die Konfiguration des wenigstens einen anderen Zwischenspeichers der Mehrzahl von Zwischenspeichern auf. Das Verfahren weist ferner den Vorgang des Ersetzen des ersten Datenwerts, der in dem ersten Puffer gespeichert ist, durch einen zweiten Datenwert, und des Übertragens des ersten Datenwertes in einen anderen bestimmten Zwischenspeicher der Mehrzahl von Zwischenspeicher auf. In Antwort auf das Übertragen des ersten Datenwerts in den bestimmten Hilfsspeicher, weist das Verfahren ferner auf ein Erzeugen von Daten, die anzeigen, dass der erste Puffer Daten aufweist, die aus dem ersten Zwischenspeicher entfernt werden können, wobei der eine oder die Mehrzahl von Faktoren Daten aufweisen, die anzeigen, dass der erste Puffer einen Datenwert aufweist, der ersetzt werden kann.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung ist beispielhaft und nicht beschränkend in den Figuren der begleitenden Zeichnungen dargestellt, und in der gleiche Bezugszeichen ähnliche Elemente bezeichnen, und in der:
  • 1 ein Blockdiagramm eines beispielhaften Clusters ist;
  • 2 ein Ablaufdiagramm eines Prozesses ist, der Techniken zum Verwalten eines Zwischenspeichers gemäß einem Ausführungsbeispiel der Erfindung implementiert;
  • 3 ein Ablaufdiagramm eines Prozesses ist, der Techniken zum Verwalten eines Zwischenspeichers gemäß einem Ausführungsbeispiel der Erfindung implementiert;
  • 4 ein Blockdiagramm eines Rechnersystems ist, auf dem ein Ausführungsbeispiel der Erfindung implementiert sein kann.
  • DETAILLIERTE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • Ein Verfahren und eine Vorrichtung zum Verwalten (managing) von Zwischenspeichern (Caches) auf den Knoten eines Clusters wird beschrieben. In der folgenden Beschreibung werden, zum Zwecke der Erklärung, zahlreiche spezifische Details erklärt, um ein gründliches Verständnis der Erfindung zu schaffen. Es wird für einen Fachmann jedoch offensichtlich sein, dass die Erfindung ohne diese spezifischen Details ausgeführt werden kann. Andererseits sind bekannte Strukturen und Vorrichtungen in Blockdiagramm-Form gezeigt, um ein unnötiges Verdecken der Erfindung zu vermeiden.
  • BEISPIELHAFTER CLUSTER
  • 1 ist ein Blockdiagramm, das einen beispielhaften Cluster 100 abbildet, auf dem ein Ausführungsbeispiel der Erfindung eingerichtet sein kann. Der Cluster 100 weist Knoten 110, 130 und 150 auf. Eine Zwischenverbindung 160 verbindet die Knoten 110, 130 und 150, so dass jeder Knoten im Cluster 100 Daten an den dynamischen Speicher eines anderen Rechners übermitteln kann.
  • Jeder der Knoten 110, 130 und 150 weist einen Zwischenspeicher und einen Zwischenspeicher-Manager auf. Insbesondere weist der Knoten 110 einen Zwischenspeicher 114 und einen Zwischenspeicher-Manager 112 auf, der Knoten 130 weist einen Zwischenspeicher 134 und einen Zwischenspeicher-Manager 132 auf und der Knoten 150 weist einen Zwischenspeicher 154 und einen Zwischenspeicher-Manager 152 auf. Während ein Ausführungsbeispiel der Erfindung unter Verwendung von Zwischenspeichern dargestellt ist, die alle auf verschiedenen Knoten sitzen, ist die Erfindung nicht auf Zwischenspeicher beschränkt, die auf verschiedenen Knoten sitzen. Sondern die Erfindung kann mit Zwischenspeichern eingerichtet sein, die eine Untermenge von Zwischenspeichern aufweisen, die auf dem gleichen Knoten sitzen, oder die alle auf dem gleichen Knoten sitzen.
  • Zwischenspeicher 114, 134 und 154 werden jeweils von Zwischenspeicher-Managern 112, 132 bzw. 152 zum Speichern von Datenwerten verwaltet, auf die von einem Satz von Anwendungen zugegriffen wird, die auf dem Cluster 100 laufen. In einem Ausführungsbeispiel der Erfindung kann der Anwendungssatz ein Datenbanksystem sein. Jeder der Zwischenspeicher-Manager 112, 132 und 152 läuft unter der Kontrolle eines Datenbanksystems. Die Zwischenspeicher 114, 134 und 154 werden zum Speichern von Datenblöcken verwendet, die Daten aufweisen, die von dem Datenbanksystem verwaltet werden.
  • Die Zwischenspeicher-Manager 112, 132 und 152 bilden gemeinsam einen „kohärenten Cluster-Zwischenspeicher-Manager". Ein kohärenter Cluster-Zwischenspeicher-Manager ist ein System aus Software, das auf einem Cluster läuft, der die Zwischenspeicher in solch einer Weise global verwaltet, dass, wenn eine Anwendung Zugriff auf einen Datenwert in einem gegebenen Zwischenspeicher anfragt, und der Datenwert nicht in dem gegebenen Zwischenspeicher gespeichert ist, aber in einem anderen Zwischenspeicher gespeichert, ein Kopie des Datenwerts direkt von dem anderen Zwischenspeicher zu dem gegebenen Zwischenspeicher kopiert wird. Falls der Datenwert modifiziert wurde, kann eine Kopie des Datenwerts, wie modifiziert, zu einem gegebenen Zwischenspeicher übermittelt werden, ohne zuerst den Datenwert dauerhaft in einer sekundären Datenressource zu speichern. Ein Beispiel eines kohärenten Zwischenspeicher-Managers ist in Klots offenbart, der ein Datenbanksystem beschreibt, das einen Zwischenspeicher verwaltet.
  • Ein kohärenter Cluster-Zwischenspeicher-Manager unterscheidet sich von dem typischen herkömmlichen Zwischenspeicher-Manager auf einem Cluster. Ein herkömmlicher Zwischenspeicher-Manager wird typischerweise nicht auf einem Knoten in einem Cluster betrieben, und, wenn der Knoten einen Datenwert benötigt, der nicht auf dem Knoten zwischengespeichert ist, bekommt er eine Kopie eines Datenwerts von einer sekundären Datenressource, und nicht von dem Zwischenspeicher eines anderen Knotens. Tatsächlich weist der herkömmliche Zwischenspeicher-Manager kein Wissen auf, dass eine Kopie des angefragten Datenwerts in einem anderen Zwischenspeicher existiert, egal ob der Zwischenspeicher auf dem gleichen Knoten sitzt oder auf einem verschiedenen Knoten. Folglich zieht sich ein herkömmlicher Zwischenspeicher-Manager zum Bekommen einer Kopie des Datenwerts die Kosten des Zugriffs auf eine sekundäre Datenressource zu, wie zum Beispiel eines Plattenspeichersystems.
  • Zugreifen auf eine sekundäre Datenressource, wie zum Beispiel ein Plattenspeichersystem, verursacht relativ teure Eingabe- und Ausgabevorgänge. Andererseits ist Zugreifen auf dynamischen Speicher eines anderen Knotens in dem Cluster eine relativ kostengünstiger Vorgang. Folglich ist das Bekommen einer Kopie eines Datenwerts von einem anderen Zwischenspeicher, ob der Zwischenspeicher auf einem anderen Knoten ist oder nicht, weit billiger als ein Bekommen einer Kopie von einer sekundären Datenressource.
  • Mit der Fähigkeit zum kostengünstigeren Bekommen eines angefragten Datenwerts von einem anderen Zwischenspeicher, können Duplikate von Datenwerten, auf die häufig zugegriffen wird, von einigen anderen Zwischenspeichern entfernt werden, ohne ein Abstürzen zu verursachen, solange sie in wenigstens einem Zwischenspeicher in dem Cluster gespeichert werden. Eher als erneutes Zugreifen auf eine Kopie einer Seite, auf die häufig zugegriffen wird, von einer sekundären Datenressource, wird ein Kopie weit weniger teuer von dem Zwischenspeicher eines anderen Knotens wieder bekommen.
  • Da Duplizieren von Datenwerten, ohne ein Abstürzen zu verursachen, reduziert werden kann, wird eine Aufteilung des Arbeitssatzes (working set) auf die Knoten in einem Cluster realisierbar. Da der Arbeitssatz zwischen den Knoten aufgeteilt wird, und nicht auf allen dupliziert wird, kann zusätzlicher dynamischer Speicher für einen Arbeitssatz vorgesehen werden, indem dem Rechner eher ein Knoten hinzugefügt wird, als dass der dynamische Speicher auf allen Knoten vergrößert wird. Aus Effizienzgründen, ist die Größe des Arbeitssatzes daher nicht durch die Kapazität des dynamischen Speichers eines Rechners beschränkt, und folglich ist die Skalierbarkeit nicht durch die Größe des Arbeitssatzes und der Kapazität des dynamischen Speichers der Knoten in dem Cluster begrenzt.
  • Zum Beispiel gibt es 1000 Datenblöcke, auf die häufig von einem Datenbanksystem zugegriffen wird, das auf einem Vier-Knoten-Cluster läuft. Wenn der Arbeitssatz aufgeteilt wird, brauchen die Blöcke, auf die häufig zugegriffen wird, nicht in dem Zwischenspeichern der Knoten dupliziert werden. Der Arbeitssatz kann folglich geteilt werden, so dass jeder der Zwischenspeicher 250 der Datenblöcke hält, auf die häufig zugegriffen wird. Falls ein anderer Knoten hinzugefügt wird, dann würde jeder der Knoten 200 Blöcke zu halten haben. Falls der Arbeitssatz nicht geteilt wird, dann muss jeder Knoten genug dynamischen Speicher aufweisen, um 1000 Blöcke zu halten.
  • ERSETZUNGSPOLITIK, DIE DUPLIZIEREN VON DATENWERTEN REDUZIERT
  • Die hierin beschriebenen Techniken zum Reduzieren der Duplikate von Datenwerten, die im globalen Zwischenspeicher gespeichert sind, sind in die Ersetzungspolitik einer Zwischenspeicher-Manager eingeschlossen. Der Begriff globaler Zwischenspeicher wird nachstehend zum Bezeichnen einer Zwischenspeichermenge von einem oder einer Mehrzahl von Knoten verwendet, zum Beispiel der Knoten in einem Cluster, wo jeder der Zwischenspeicher Datenwerte hält, auf die von einem Satz von einer oder einer Mehrzahl von Anwendungen zugegriffen wird. Ein bestimmter Zwischenspeicher, der von einer Zwischenspeicher-Manager verwaltet wird, wird als ein lokaler Zwischenspeicher bezüglich der Zwischenspeicher-Manager bezeichnet. Eine Ersetzungspolitik ist der Satz von Regeln und Prozeduren, denen ein Zwischenspeicher-Manager folgt, zum Auswählen eines Puffers, der schon einen Datenwert enthält, wenn ein Puffer zum Halten eines gegebenen Datenwerts benötigt wird. Der Datenwert in dem ausgewählten Puffer wird mit dem gegebenen Datenwert ersetzt. Folglich wählt der Zwischenspeicher-Manager einen Puffer aus, der Daten aufweist, die einen relativ kleinen Zwischenspeicher-Beibehaltungswert aufweisen.
  • Ein Zwischenspeicher-Beibehaltungswert ist ein Maß für den Grad bis zu dem ein Behalten eines Datenwerts in dem Zwischenspeicher dem effizienten Betrieb des Zwischenspeichers nützt. Typischerweise weisen die Datenwerte, auf die am häufigsten zugegriffen wird, einen größeren Zwischenspeicher-Beibehaltungswert auf, da das Behalten derselben im Zwischenspeicher eine größere Anzahl von Eingabe- und Ausgabevorgängen zwischen dem Zwischenspeicher und einer sekundären Datenquelle verhindert. Der Begriff Behalten bezeichnet ein Ausführen von Vorgängen, die die Wahrscheinlichkeit erhöhen, dass ein bestimmter Datenwert in einem Zwischenspeicher länger bleiben wird, als ein anderer Datenwert, typischerweise ein Datenwert mit einem kleineren Zwischenspeicher-Beibehaltungswert. Behalten kann sich auf ein Auswählen zum Ersetzen eines anderen Datenwerts oder einfach Zuweisen eines kleineren Zwischenspeicher-Beibehaltungswert für den anderen Datenwert beziehen.
  • Eine Mehrzahl von Faktoren kann zum Bestimmen des Zwischenspeicher-Beibehaltungswerts eines Puffers verwendet werden. Zum Beispiel weisen die Datenwerte, auf die vor kürzester Zeit zugegriffen wurde, einen größeren Zwischenspeicher-Beibehaltungswert auf als diejenigen, auf die vor längster Zeit zugegriffen wurde, da die Datenwerte, auf die vor kürzester Zeit zugegriffen wurde, die wahrscheinlichsten sind, auf die in der Zukunft zugegriffen wird. Ein Zwischenspeicher-Manager kann eine vor kürzestem verwendete Liste (LRU, least recently used) aufrechterhalten, die Puffer von den vor kürzester Zeit zugegriffenen zu den am wenigsten kurz zugegriffenen anweist. Die Gegenstände, auf die vor kürzestem zugegriffen wurde, sind am Kopf der Liste und die vor wenigsten kurzem zugegriffenen sind am Boden der Liste. Folglich zeigt die Position eines Puffers innerhalb einer LRU den Zwischenspeicher-Beibehaltungswert des Datenwerts an, der innerhalb eines Puffers gehalten wird. Ein anderer Faktor, der in Betracht gezogen werden kann, ist, wie häufig auf einen Datenwert innerhalb einer letzten Zeitperiode zugegriffen wurde. Die Datenwerte, auf die in der unmittelbaren Vergangenheit am häufigsten zugegriffen wurde, weisen einen größeren Zwischenspeicher-Beibehaltungswert auf, da diese Datenwerte die wahrscheinlichsten sind, auf die in der nächsten Zukunft zugegriffen wird. Beim Bestimmen des Zwischenspeicher-Beibehaltungswerts gemäß den hierin beschriebenen Techniken, folgt ein Zwischenspeicher-Manager einer Ersetzungspolitik, die auch Faktoren berücksichtigt, die den globalen Zwischenspeicher beinhalten, nicht nur einen lokalen Zwischenspeicher. Einer dieser Faktoren ist, ob ein Datenwert in den Zwischenspeichern eines globalen Zwischenspeichers verdoppelt ist.
  • REDUZIEREN VON DOPPELTEN KOPIEN EINES DATENWERTS
  • 2 ist ein Ablaufdiagramm, das einen Prozess abbildet, dem, zumindest teilweise, beim Implementieren einer Ersetzungspolitik, die doppelte Kopien von Datenwerten in den Zwischenspeichern eines Clusters reduziert, gefolgt werden kann. Die Schritte werden von einem Zwischenspeicher-Manager durchgeführt, wenn er eine Anfrage nach einen Datenwert in dem Zwischenspeicher empfängt, der von der Zwischenspeicher-Manager verwaltet wird. Die Schritte werden unter Verwendung des in 1 gezeigten Clusters 100 dargestellt.
  • Mit Bezugnahme auf 1 empfängt der Zwischenspeicher-Manager 112 in Schritt 210 eine Anfrage von dem Zwischenspeicher-Manager 132 zum direkten Übermitteln eines Datenwerts, der in dem Zwischenspeicher 114 gespeichert ist, an den Zwischenspeicher 134. In Schritt 220 übermittelt der Zwischenspeicher-Manager 112 den angefragten Datenwert direkt an den Zwischenspeicher 134.
  • In Schritt 230 wird bestimmt, ob der übermittelte Datenwert ein Datenwert ist, der eine Verdopplung in anderen Zwischenspeichern verdient. Im Allgemeinen weisen Datenwerte, die eine Verdopplung verdienen, solch einen hohen Zwischenspeicher-Beibehaltungswert auf, dass die Kosten des Verdoppelns derselben bezüglich, zum Beispiel, eines erhöhten dynamischen Speicherverbrauchs, ihre Verdopplung rechtfertigen. Zum Beispiel können die Datenwerte, auf die am häufigsten zugegriffen wird, in dem Zwischenspeicher 110 eine Verdopplung verdienen. Falls bestimmt wird, das der übermittelte Datenwert ein Datenwert ist, der eine Verdopplung verdient, enden die in 1 gezeigten Schritte. Ansonsten schreitet die Ausführung der Schritte mit Schritt 240 fort.
  • Mit Schritt 240 richtet der Zwischenspeicher-Manager 112 den Puffer, der den Datenwert hält, als ersetzbar ein. Einrichten des Puffers als ersetzbar qualifiziert ihn zum Auswählen während des Ersetzungs-Verarbeiten. Es gibt eine Mehrzahl von Wegen zum Einrichten eines Puffers als ersetzbar. Zum Beispiel kann ein Puffer als unmittelbar ersetzbar markiert werden, indem eine Markierung (Flag) in dem Puffer gesetzt wird, oder zu einer Liste von Puffern hinzugefügt wird, die ersetzbar sind.
  • Wenn der Zwischenspeicher-Manager 112 eine Ersetzungs-Verarbeitung durchführt, kann er einen Puffer auswählen, der als unmittelbar ersetzbar eingerichtet wurde. Der Puffer kann ausgewählt werden obwohl, zum Beispiel, sein Platz auf einer LRU, die von der Zwischenspeicher-Manager 112 aufrechterhalten wird, anzeigt, dass der Puffer einen Datenwert hält, dessen Neuheit des Zugriffs relativ hoch ist. Wenn ein Zwischenspeicher-Manager zum Ersetzen einen Puffer auswählt, der als unmittelbar ersetzbar eingerichtet wurde, da der Datenwert des Puffers zu einem anderen Zwischenspeicher übermittelt wurde, folgt der Zwischenspeicher-Manager einer Ersetzungspolitik, die den Zustand des globalen Zwischenspeichers berücksichtigt. Insbesondere ersetzt der Zwischenspeicher-Manager den Datenwert mindestens teilweise, da er in einem anderen Zwischenspeicher gespeichert ist.
  • Andererseits ist die Existenz einer Kopie eines Datenwerts in einem anderen Zwischenspeicher nur ein Faktor, der zum Auswählen eines Puffers zum Ersetzen seiner enthaltenen Daten verwendet werden kann. Andere Faktoren zum Berücksichtigen weisen bereits genannte ein, wie zum Beispiel die Position eines Puffers in einer LRU-Liste.
  • BERÜCKSICHTIGEN DES ZWISCHENSPEICHER-BEIBEHALTUNGSWERTS ZWISCHEN DATENWERTEN IN VERSCHIEDENEN ZWISCHENSPEICHERN
  • Eine Ersetzungspolitik, die berücksichtigt, ob ein Datenwert auf einem anderen Zwischenspeicher verdoppelt wurde, ist nur ein Beispiel dafür, wie der Zustand von Zwischenspeichern auf einer Mehrzahl von Knoten in einem Cluster berücksichtigt werden kann. 3 bildet einen anderen Prozess ab, der den Zustand von Zwischenspeichern auf einer Mehrzahl von Knoten berücksichtigt. Der Prozess wird durchgeführt, wenn ein Zwischenspeicher-Manager einen Datenwert anfragt, der in dem Zwischenspeicher eines anderen Knotens gespeichert ist.
  • Mit Bezugnahme auf 3 empfängt der Zwischenspeicher-Manager 112 in Schritt 310 eine Anfrage von dem Zwischenspeicher-Manager 132 zum direkten Übermitteln eines Datenwerts, der im Zwischenspeicher 114 gespeichert ist.
  • In Schritt 320 übermittelt der Zwischenspeicher-Manager 112 den angefragten Datenwert und die Daten, die den niedrigsten Zwischenspeicher-Beibehaltungswert anzeigen, die irgendeinem Puffer in dem Zwischenspeicher 114 zugeordnet sind, direkt an der Zwischenspeicher-Manager 132. Der Puffer im Zwischenspeicher 114 mit dem niedrigsten Zwischenspeicher-Beibehaltungswert muss nicht der Puffer im Zwischenspeicher 114 sein, in dem der angefragte Datenwert sitzt. Verschiedene Mechanismen können zum Einrichten des Zwischenspeicher-Beibehaltungswerts von Puffern verwendet werden. Zum Beispiel können Daten, die den niedrigsten Zwischenspeicher-Beibehaltungswert anzeigen, die Daten sein, die die letzte Zeit anzeigen, zu der auf einen Datenwert zugegriffen wurde, oder Daten, die die Häufigkeit angeben, mit der auf ihn innerhalb einer Zeitperiode zugegriffen wurde.
  • In Schritt 330 empfängt der Zwischenspeicher-Manager 132 den angefragten Datenwert und die Daten, die den niedrigsten Zwischenspeicher-Beibehaltungswert („empfangener Zwischenspeicher-Beibehaltungswert") anzeigen.
  • In Schritt 335 wählt der Zwischenspeicher-Manager 132 einen Puffer im Zwischenspeicher 134 zum Ersetzen mit den angefragten Datenwerten, die von der Zwischenspeicher-Manager 112 an der Zwischenspeicher-Manager 132 übermittelt sind, aus.
  • In Schritt 340 bestimmt der Zwischenspeicher-Manager 132, ob der empfangene Zwischenspeicher-Beibehaltungswert größer ist als der Zwischenspeicher-Beibehaltungswert des Datenwerts im Puffer, der zum Ersetzen ausgewählt ist (der „ausgewählte Datenwert"). Falls der ausgewählte Datenwert einen Zwischenspeicher-Beibehaltungswert aufweist, der größer ist als der empfangene Beibehaltungswert, dann geht die Steuerung weiter zu Schritt 350, wo der Zwischenspeicher-Manager 132 den ausgewählten Datenwert an den Zwischenspeicher-Manager 112 übermittelt.
  • Falls, andererseits, der empfangene Zwischenspeicher-Beibehaltungswert größer ist als der Zwischenspeicher-Beibehaltungswert des ausgewählten Datenwerts, dann ersetzt der anfragende Knoten den ausgewählten Datenwert in Schritt 375 mit dem empfangenen Datenwert, ohne den ausgewählten Datenwert an den Zwischenspeicher-Manager 112 übermittelt zu haben.
  • In Schritt 350 übermittelt der Zwischenspeicher-Manager 132 den ausgewählten Datenwert an den Zwischenspeicher-Manager 112. In Schritt 360 empfängt der Zwischenspeicher-Manager 112 den ausgewählten Datenwert. In Schritt 370 ersetzt der Zwischenspeicher-Manager 112 mit dem ausgewählten Datenwert einen Datenwert in einem Puffer durch den niedrigsten Zwischenspeicher-Beibehaltungswert im Zwischenspeicher 114. Die Steuerung fährt dann mit Schritt 375 fort.
  • ERSETZUNGSPOLITIKEN, DIE AUF DER KONFIGURATION DES GLOBALEN ZWISCHENSPEICHERS BASIEREN
  • Die hierin beschriebenen Techniken beinhalten Ersetzungspolitiken, die den globalen Zustand der Zwischenspeicher in einem Cluster berücksichtigen. Ersetzungspolitiken können jedoch andere globale Erwägungen berücksichtigen als den globalen Zustand eines Zwischenspeichers. Zum Beispiel kann die Ersetzungspolitik für einen bestimmten Zwischenspeicher auf der Konfiguration anderer Zwischenspeicher basieren. Die Konfiguration eines Zwischenspeichers sind die Logik und die Werte, die den Betrieb des Zwischenspeichers beherrschen, die sich während des Betriebs nicht ändern. Andererseits sind der Zustand eines Zwischenspeichers kollektiv die gegenwärtigen Werte, die sich während des Betriebs des Zwischenspeichers ändern. Zum Beispiel weist der Zustand eines Zwischenspeichers den Datenwert in einem Puffer eines Zwischenspeichers auf. Zusätzlich weist der Zustand eines Zwischenspeichers Werte auf, die ein Attribut des Puffers oder des Datenwerts in dem Puffer repräsentieren, das sich ändert, wenn auf dem Zwischenspeicher tätig geworden wird, wie zum Beispiel die Position eines Puffers in einer LRU oder die Häufigkeit des Zugriffs auf einen Puffer. Die Konfiguration des Zwischenspeichers kann Software, die den Betrieb des Zwischenspeichers beherrscht, und Betriebsparameterwerte, wie zum Beispiel die Größe des Zwischenspeichers, oder die Anzahl von Puffern in dem Zwischenspeicher aufweisen.
  • Das folgende Beispiel stellt dar, wie eine Ersetzungspolitik eines Zwischenspeichers auf der Konfiguration anderer Zwischenspeicher basieren kann. Es wird angenommen, dass ein Datenbanksystem auf einem Cluster läuft, und dass die Zwischenspeicher an den Knoten des Clusters eingerichtet sind, so dass ein Zwischenspeicher eine "Heimat" für einen bestimmten Satz von Datenblöcken ist. Ein Zwischenspeicher, der "Heimat" für einen bestimmten Satz von Datenblöcken ist, wird nachstehend als Haupt-Zwischenspeicher für diesen Satz von Datenblöcken bezeichnet. Wenn ein Zwischenspeicher-Manager einen Puffer im Zwischenspeicher zum Ersetzen auswählen muss, wählt ein Zwischenspeicher-Manager zuerst Puffer mit Datenwerten aus, deren Haupt-Zwischenspeicher ein anderer Zwischenspeicher ist, bevor Datenwerte ohne einen Haupt-Zwischenspeicher oder Datenwerte, deren Haupt-Zwischenspeicher der gegenwärtige Zwischenspeicher ist, ausgewählt werden. Wenn ein Zwischenspeicher-Manager einen Puffer in dem Zwischenspeicher auswählt, der von dem Zwischenspeicher-Manager verwaltet wird, folgt ein Zwischenspeicher-Manager einer Ersetzungspolitik, die die Konfiguration des anderen Zwischenspeichers berücksichtigt, da die Konfiguration eines anderen Zwischenspeichers ihn zu dem Haupt-Zwischenspeicher des Datenwerts im Puffer macht.
  • HAUPT-ZWISCHENSPEICHER FÜR NICHTS-GETEILT-SYSTEME
  • Ein weiteres Beispiel einer Ersetzungspolitik, die auf dem Haupt-Zwischenspeicher eines Datenwerts basiert, ist eine Ersetzungspolitik für einen globalen Zwischenspeicher, wo ein Haupt-Zwischenspeicher für einen bestimmten Datenwert ein Zwischenspeicher auf einem Knoten ist, der direkt auf die sekundäre Datenressource für einen Datenwert zugreifen kann. Ein Behandeln des Zwischenspeicher als einen Haupt-Zwischenspeicher für einen Datenwert auf diese Weise kann insbesondere für ein Nichts-geteilt-System (shared nothing system) vorteilhaft sein. Eine Beschreibung von Nichts-geteilt-Systemen ist daher nützlich.
  • Es gibt drei allgemeine Arten von Mehrfach-Verarbeitungssystemen: Alles-geteilt (shared everything)-, Platte-geteilt-Systeme (shared disk systems) und Nichts-geteilt-Systeme. In Alles-geteilt-Systemen weisen Prozesse auf allen Prozessoren einen direkten Zugriff auf alle dynamischen Speichervorrichtungen und auf alle statischen Speichervorrichtungen im System auf. Ein hoher Grad an Verdrahtung zwischen den verschiedenen Rechnerkomponenten ist zum Bereitstellen einer Alles-geteilt-Funktionalität notwendig.
  • In Platte-geteilt-Systemen sind Prozessoren und dynamische Speichervorrichtung in Knoten gruppiert. Jeder Knoten in einem Platte-geteilt-System kann selbst ein Alles-geteilt-System aufweisen, das eine Mehrzahl von Prozessoren und ein Mehrzahl von Speichern aufweist. Prozesse auf allen Prozessoren können auf alle statischen Speichervorrichtungen in dem System zugreifen, aber nur die Prozesse auf Prozessoren, die zu einem bestimmten Knoten gehören, können auf die dynamischen Speichervorrichtungen innerhalb des bestimmten Knotens direkt zugreifen. Platte-geteilt-Systeme benötigen im Allgemeinen weniger Verdrahtung als Alles-geteilt-Systeme.
  • In Nichts-geteilt-Systemen sind alle Prozessoren, dynamische Speichervorrichtungen und statische Speichervorrichtungen in Knoten gruppiert. In Nichts-geteilt-Systemen sowie in Platte-geteilt-Systeme kann jeder Knoten selbst ein Alles-geteilt-System oder ein Platte-geteilt-System bilden. Nur die Prozesse, die auf einem bestimmten Knoten laufen, können auf die dynamischen Speichervorrichtungen und statische Speichervorrichtungen innerhalb des bestimmten Knotens direkt zugreifen.
  • In Nichts-geteilt-Systemen liest der Knoten, der direkten Zugriff auf die statische Speichervorrichtung hat, den Datenwert in den dynamischen Speicher des Knotens, wenn ein Datenwert in Zwischenspeicher in dynamischen Speicher von einer sekundären Datenressource in der Form einer statischen Speichervorrichtung übermittelt wird. Falls ein Zwischenspeicher in einem anderen dynamischen Speicher eines anderen Knotens der Haupt-Zwischenspeicher für den Datenwert ist, dann wird der Datenwert dorthin übermittelt, was zu einer zusätzlichen Übermittlung des Datenwerts führt. Das kann verhindert werden, indem der Knoten, der direkten Zugriff auf die sekundäre Ressource hat, die den Datenwert hält, als der Haupt-Zwischenspeicher für den Datenwert behandelt wird.
  • HARDWARE-ÜBERBLICK
  • 4 ist ein Blockdiagramm, das ein Rechnersystem 400 darstellt, das zum Implementieren einer Ausführungsform der Erfindung verwendet werden kann. Das Rechnersystem 400 weist einen Bus 402 oder einen anderen Kommunikationsmechanismus zum Berechnen von Informationen und einen Prozessor 404, der mit dem Bus 402 gekoppelt ist, zum Verarbeiten von Informationen auf. Das Rechnersystem 400 weist auch einen Hauptspeicher 406, wie zum Beispiel einen Speicher mit wahlfreiem Zugriff (RAM, random access memory) oder eine andere dynamische Speichervorrichtung, die mit dem Bus 402 zum Speichern von Informationen und Anweisungen, die von dem Prozessor 404 auszuführen sind, gekoppelt sind, auf. Der Hauptspeicher 406 kann auch zum Speichern temporärer Variablen oder anderer Zwischeninformationen während einer Ausführung von Anweisungen, die von dem Prozessor 404 auszuführen sind, verwendet werden. Das Rechnersystem 400 weist ferner einen Nur-Lese-Speicher (ROM, read only memory) 408 oder eine andere statische Speichervorrichtung, die mit dem Bus 402 gekoppelt ist, zum Speichern statischer Informationen und Anweisungen für den Prozessor 404 auf. Eine Speichervorrichtung 410, wie zum Beispiel eine Magnetplatte oder optischen Scheiben, ist vorgesehen und mit dem Bus 402 gekoppelt zum Speichern von Informationen und Anweisungen.
  • Das Rechnersystem 400 kann über den Bus 402 mit einer Anzeige 412 gekoppelt sein, wie zum Beispiel einer Kathodenstrahlröhre (CRT, cathode ray tube), zum Anzeigen von Informationen für einen Rechnerbenutzer. Eine Eingabevorrichtung 414, einschließlich alphanumerischer und anderer Tasten, ist mit dem Bus 402 gekoppelt zum Austauschen von Informationen und Befehlsauswahlen mit dem Prozessor 404. Ein anderer Typ von Benutzer-Eingabevorrichtung ist eine Cursor-Steuerung 416, wie zum Beispiel eine Maus, ein Trackball oder Cursor-Richtungstasten zum Austauschen von Richtungsinformationen und Befehlsauswahlen mit dem Prozessor 404 und zum Steuern einer Cursorbewegung auf der Anzeige 412. Diese Eingabevorrichtung weist typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z.B. x) und einer zweiten Achse (z.B. y) auf, die es der Vorrichtung ermöglichen, Positionen in einer Ebene anzugeben.
  • Die Erfindung betrifft den Gebrauch des Rechnersystems 400 zum Einrichten der hierin beschriebenen Techniken. Gemäß einer Ausführungsform der Erfindung sind diese Techniken mit dem Rechnersystem 400 in Antwort auf den Prozessor 404 eingerichtet, der eine Sequenz oder eine Mehrzahl von Sequenzen von einer Anweisung oder einer Mehrzahl von Anweisungen, die im Hauptspeicher 406 enthalten sind, ausführt. Solche Anweisungen können in den Hauptspeicher 406 von einem anderen Rechnerlesbaren Medium, wie zum Beispiel der Speichervorrichtung 410, eingelesen werden. Eine Ausführung der Sequenzen von Anweisungen, die im Hauptspeicher 406 enthalten sind, bewirkt, dass der Prozessor 404 die hierin beschriebenen Prozessschritte durchführt. In alternativen Ausführungsformen kann ein hart-verdrahteter Schaltkreis anstatt von oder zusammen mit Software-Anweisungen zum Implementieren der Erfindung verwendet werden. Folglich sind Ausführungsformen der Erfindung nicht auf irgendeine spezifische Kombination von Hardware-Schaltkreisen und Software beschränkt.
  • Der Begriff "Rechnerlesbares Medium" wie er nachstehend verwendet wird, betrifft jedes Medium, das beim Bereitstellen von Anweisungen für den Prozessor 404 zur Ausführung teilnimmt. Solch ein Medium kann viele Formen annehmen einschließlich aber nicht beschränkt auf nicht-flüchtige Medien, flüchtige Medien und Übertragungsmedien. Nichtflüchtige Medien weisen zum Beispiel optische oder magnetische Platten, wie zum Beispiel die Speichervorrichtung 410 auf. Flüchtige Medien weisen dynamischen Speicher, wie zum Beispiel den Hauptspeicher 406 auf. Übermittlungsmedien weisen Koaxialleitungen, Kupferdrähte und Glasfaser auf einschließlich der Drähte, die den Bus 402 aufweisen. Übermittlungsmedien können auch die Form von akustischen Wellen oder Lichtwellen annehmen, wie zum Beispiel jene, die während einer Hochfrequenz- und Infrarot-Datenkommunikation erzeugt werden.
  • Allgemeine Formen von rechnerlesbaren Medien weisen zum Beispiel eine Floppy-Disk, eine flexible Disk, eine Festplatte, ein Magnetband oder jedes andere magnetische Medium, eine CD-ROM, jedes andere optische Medium, Lochkarten, Papierbänder, jedes andere physikalische Medium mit Strukturen von Löchern, ein RAM, ein PROM und ein EPROM, ein FLASH-EPROM, jeden anderen Speicherchip oder jedes andere Speichercartridge, eine Trägerwelle, wie nachstehend beschrieben, oder jedes andere Medium, von dem ein Rechner lesen kann, auf.
  • Verschiedene Formen von rechnerlesbaren Medien können beim Tragen von einer oder einer Mehrzahl von Sequenzen von einer oder einer Mehrzahl von Anweisungen zum Prozessor 404 zur Ausführung einbezogen sein. Zum Beispiel können die Anweisungen ursprünglich auf einer Magnetscheibe eines entfernten Rechners getragen werden. Der entfernte Rechner kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Telefonleitung unter Verwendung eines Modems senden. Ein Modem, das zu dem Rechnersystem 400 lokal ist, kann die Daten auf der Telefonleitung empfangen und einen Infrarot-Transmitter zum Umwandeln der Daten in ein Infrarot-Signal verwenden. Ein Infrarot-Detektor kann die Daten empfangen, die in dem Infrarot-Signal getragen sind, und ein geeigneter Schaltkreis kann die Daten auf dem Bus 402 platzieren. Der Bus 402 trägt die Daten zum Hauptspeicher 406, aus dem der Prozessor 404 die Anweisungen abruft und ausführt. Die von dem Hauptspeicher 406 empfangenen Anweisungen können wahlweise, entweder vor oder nach Ausführung durch den Prozessor 404, auf der Speichervorrichtung 410 gespeichert werden.
  • Das Rechnersystem 400 weist auch eine Kommunikationsschnittstelle 418 auf, die mit dem Bus 402 gekoppelt ist. Die Kommunikationsschnittstelle 418 stellt eine Zwei-Wege-Datenkommunikation bereit, die mit einer Netzwerkverbindung 420 gekoppelt ist, die mit einem lokalen Netzwerk 422 gekoppelt ist. Zum Beispiel kann die Kommunikationsschnittstelle 418 eine ISDN (integrated services digital network)-Karte oder ein Modem zum Bereitstellen einer Datenkommunikationsverbindung zu einem entsprechenden Typ von Telefonleitung sein. Als ein anderes Beispiel kann die Kommunikationsschnittstelle 418 eine LAN (local area network)-Karte zum Bereitstellen einer Datenkommunikationsverbindung mit einem kompatiblen LAN sein. Drahtlose Verbindungen können auch implementiert sein. In jeder solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 418 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, die verschiedene Informationstypen repräsentieren.
  • Die Netzwerkverbindung 420 stellt typischerweise eine Datenkommunikation durch eines oder eine Mehrzahl von Netzwerken zu anderen Datenvorrichtungen bereit. Zum Beispiel kann die Netzwerkverbindung 420 ein Verbindung durch das lokale Netzwerk 422 zu einem Host-Rechner 424 oder zu einer Datenausrüstung, die von einem Internet-Dienstanbieter (ISP, internet service provider) 426 betrieben wird, bereitstellen. Der ISP 426 stellt im Gegenzug Datenkommunikationsdienst durch das weltweite Paket-Daten-Kommunikationsnetzwerk bereit, das jetzt allgemein als das "Internet" 428 bezeichnet wird. Das lokale Netzwerk 422 und das Internet 428 verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung 420 und durch die Kommunikationsschnittstelle 418, die die digitalen Daten zu und von dem Rechnersystem 400 tragen, sind beispielhafte Formen von Trägerwellen, die die Informationen transportieren.
  • Das Rechnersystem 400 kann Nachrichten senden und Daten empfangen, einschließlich Programmkode, durch das/die Netzwerk(e), die Netzwerkverbindung 420 und die Kommunikationsschnittstelle 418. In dem Internet-Beispiel kann ein Serverrechner 430 einen angefragten Kode für ein Anwendungsprogramm durch das Internet 428, den ISP 426, das lokale Netzwerk 422 und die Kommunikationsschnittstelle 418 übermitteln. Gemäß der Erfindung implementiert eine solche heruntergeladene Anwendung die hierin beschriebenen Techniken.
  • Der empfangene Kode kann durch den Prozessor 404 wenn er empfangen wird ausgeführt werden, und/oder in der Speichervorrichtung 410 oder einer anderen nichtflüchtigen Speicher gespeichert werden zur späteren Ausführung. Auf diese Weise kann das Rechnersystem 400 einen Anwendungskode in der Form einer Trägerwelle erhalten.
  • In der vorangegangenen Beschreibung wurde die Erfindung mit Bezugnahme auf spezifische Ausführungsformen davon beschrieben. Es wird jedoch offensichtlich sein, dass verschiedene Modifikationen und Änderungen dabei gemacht werden können, ohne vom Umfang der Erfindung abzurücken. Die Beschreibung und die Zeichnungen sind folglich eher in einer darstellenden als in einem beschränkenden Sinn zu sehen.

Claims (11)

  1. Verfahren zum Verwalten des Ersetzens von Datenwerten, die in Puffern einer Mehrzahl von Zwischenspeichern (114, 134, 154) gespeichert sind, die jeweils auf einem Knoten (110, 130, 150) eines Satzes von einem oder einer Mehrzahl von Knoten (110, 130, 150) angeordnet sind, wobei jeder Knoten des Satzes von einem oder einer Mehrzahl von Knoten einen oder eine Mehrzahl von Zwischenspeichern der Mehrzahl von Zwischenspeichern aufweist, wobei die Mehrzahl von Zwischenspeichern einen ersten Zwischenspeicher aufweist, wobei das Verfahren die Schritte aufweist: von einer Mehrzahl von Puffern, die zum Ersetzen in dem ersten Zwischenspeicher (114) verfügbar sind, Auswählen zum Ersetzen eines ersten Puffers aus dem ersten Zwischenspeicher (114) auf der Basis von einem oder einer Mehrzahl von Faktoren, wobei der erste Puffer gegenwärtig zum Speichern eines ersten Datenwerts verwendet wird, wobei der eine oder die Mehrzahl von Faktoren entweder aufweisen: den Zustand von wenigstens einem anderen Zwischenspeicher (134, 154) der Mehrzahl von Zwischenspeichern, oder die Konfiguration des wenigstens einen anderen Zwischenspeichers (134, 154) der Mehrzahl von Zwischenspeichern; Ersetzen des ersten Datenwerts, der in dem ersten Puffer gespeichert ist, durch einen zweiten Datenwert; Übertragen des ersten Datenwertes in einen anderen bestimmten Zwischenspeicher (134, 154) der Mehrzahl von Zwischenspeichern; Erzeugen bestimmter Daten, die anzeigen, dass der erste Puffer Daten aufweist, die aus dem ersten Zwischenspeicher (114) entfernt werden können, in Antwort auf das Übertragen des ersten Datenwerts in den bestimmten Zwischenspeicher (134, 154); und wobei der eine oder die Mehrzahl von Faktoren aufweisen, dass die bestimmten Daten anzeigen, dass der erste Puffer einen Datenwert aufweist, der ersetzt werden kann.
  2. Verfahren gemäß Anspruch 1, wobei der eine oder die Mehrzahl von Faktoren aufweisen, ob der erste Datenwert in dem wenigstens einem anderen Zwischenspeicher (134, 154) der Mehrzahl von Zwischenspeichern angeordnet ist.
  3. Verfahren gemäß Anspruch 1, wobei der Schritt des Erzeugens bestimmter Daten nicht durchgeführt wird, wenn der erste Datenwert zu einer bestimmten Untermenge von Datenwerten gehört, die in dem ersten Zwischenspeicher (114) gespeichert ist.
  4. Verfahren gemäß Anspruch 3, wobei die bestimmte Untermenge von Datenwerten den Satz von Datenwerten aufweist, auf die am häufigsten zugegriffen wird, und der gegenwärtig in dem ersten Zwischenspeicher (114) angeordnet ist.
  5. Verfahren gemäß Anspruch 1, wobei: vor dem Ersetzen des zweiten Datenwerts dem ersten Puffer ein erster Zwischenspeicher-Beibehaltungswert zugeordnet wird, und einem zweiten Puffer ein zweiter Zwischenspeicher-Beibehaltungswert zugeordnet wird, wobei ein zweiter Zwischenspeicher (134) den zweiten Puffer aufweist; und wobei der eine oder die Mehrzahl von Faktoren aufweisen, dass der erste Zwischenspeicher-Beibehaltungswert kleiner ist als der zweite Zwischenspeicher-Beibehaltungswert.
  6. Verfahren gemäß Anspruch 5, wobei dort, wo der erste Zwischenspeicher (114) von einem ersten Zwischenspeicher-Manager (112) verwaltet wird und der zweite Zwischenspeicher (134) von einem zweiten Zwischenspeicher-Manager (132) verwaltet wird, das Verfahren ferner die Schritte aufweist: der erste Zwischenspeicher-Manager (112) empfängt für den zweiten Zwischenspeicher-Manager (132) eine Anfrage für eine direkte Übertragung eines bestimmten Datenwerts, die in dem ersten Zwischenspeicher (114) gespeichert ist; in Antwort auf den erste Zwischenspeicher-Manager (112), der die Anfrage empfängt, überträgt der erste Zwischenspeicher-Manager (112) den ersten Zwischenspeicher-Beibehaltungswert und den bestimmten Datenwert zu dem zweiten Zwischenspeicher (134), wobei der erste Zwischenspeicher-Beibehaltungswert einen kleinsten Zwischenspeicher-Beibehaltungswert aus wenigstens einer Untermenge von Puffern in dem ersten Zwischenspeicher (114) anzeigt.
  7. Verfahren gemäß Anspruch 5, das ferner die Schritte aufweist: der erste Zwischenspeicher (114), der den zweiten Datenwert empfängt, der von dem zweiten Zwischenspeicher (134) in Antwort auf den zweiten Zwischenspeicher-Manager (132) übertragen wird, die bestimmt, dass der zweite Zwischenspeicher-Beibehaltungswert größer ist als der erste Zwischenspeicher-Beibehaltungswert; und wobei die Faktoren aufweisen, dass der erste Zwischenspeicher den zweiten Datenwert empfängt, der von dem zweiten Zwischenspeicher in Antwort auf den zweiten Zwischenspeicher-Manager (132) übertragen wird, die bestimmt, dass der zweite Zwischenspeicher-Beibehaltungswert größer ist als der erste Zwischenspeicher-Beibehaltungswert.
  8. Verfahren gemäß Anspruch 1, ferner aufweisend den Schritt des Übertragens einer Kopie des ersten Datenwerts zu einem zweiten Zwischenspeicher (134) eines zweiten Knotens (130), ohne zuerst den ersten Datenwert von dem ersten Zwischenspeicher (114) in einem persistenten Speicher dauerhaft zu speichern.
  9. Verfahren gemäß Anspruch 1, wobei die Mehrzahl von Zwischenspeichern (114, 134, 154) jeweils von einem Datenbanksystem verwaltet wird.
  10. Verfahren gemäß Anspruch 1, wobei der eine oder die Mehrzahl von Faktoren aufweisen, ob der Datenwert zum Ersetzen geeignet sein wird, wenn er von einem anderen bestimmten Zwischenspeicher (134, 154) der Mehrzahl von Zwischenspeicher übertragen wird.
  11. Computer-lesbares Medium, das eine oder eine Mehrzahl von Befehlssequenzen trägt, die, wenn sie von einem oder einer Mehrzahl von Prozessoren ausgeführt werden, bewirken, dass der eine oder die Mehrzahl von Prozessoren das Verfahren ausführen, das in einem der Ansprüche 1–10 aufgezählt ist.
DE60117818T 2000-08-31 2001-08-30 Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten Expired - Lifetime DE60117818T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US652384 1984-09-20
US09/652,384 US6633891B1 (en) 1998-11-24 2000-08-31 Managing replacement of data in a cache on a node based on caches of other nodes
PCT/US2001/041965 WO2002019115A2 (en) 2000-08-31 2001-08-30 Managing replacement of data in a cache on a node based on caches of other nodes

Publications (2)

Publication Number Publication Date
DE60117818D1 DE60117818D1 (de) 2006-05-04
DE60117818T2 true DE60117818T2 (de) 2006-10-19

Family

ID=24616627

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60117818T Expired - Lifetime DE60117818T2 (de) 2000-08-31 2001-08-30 Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten

Country Status (9)

Country Link
US (1) US6633891B1 (de)
EP (2) EP1667026A3 (de)
JP (1) JP2004511840A (de)
AT (1) ATE320042T1 (de)
AU (2) AU8918001A (de)
CA (1) CA2421700C (de)
DE (1) DE60117818T2 (de)
HK (1) HK1054798B (de)
WO (1) WO2002019115A2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200623B2 (en) 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US7930278B2 (en) 1998-02-13 2011-04-19 Oracle International Corporation Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US7065540B2 (en) * 1998-11-24 2006-06-20 Oracle International Corporation Managing checkpoint queues in a multiple node system
US20030115421A1 (en) * 2001-12-13 2003-06-19 Mchenry Stephen T. Centralized bounded domain caching control system for network edge servers
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
US6961821B2 (en) * 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
JP3973597B2 (ja) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
US7200718B2 (en) * 2004-04-26 2007-04-03 Broadband Royalty Corporation Cache memory for a scalable information distribution system
US7937455B2 (en) * 2004-07-28 2011-05-03 Oracle International Corporation Methods and systems for modifying nodes in a cluster environment
US7962788B2 (en) * 2004-07-28 2011-06-14 Oracle International Corporation Automated treatment of system and application validation failures
US7536599B2 (en) * 2004-07-28 2009-05-19 Oracle International Corporation Methods and systems for validating a system environment
US7590800B2 (en) * 2006-06-30 2009-09-15 Seagate Technology Llc 2D dynamic adaptive data caching
US7996623B2 (en) * 2006-06-30 2011-08-09 Seagate Technology Llc Read ahead storage control
US7743216B2 (en) * 2006-06-30 2010-06-22 Seagate Technology Llc Predicting accesses to non-requested data
JP4448550B2 (ja) * 2006-11-30 2010-04-14 富士通株式会社 キャッシュシステム
US8762664B2 (en) * 2007-08-30 2014-06-24 Red Hat, Inc. Replicating cache nodes in a cluster
JP5020774B2 (ja) * 2007-10-24 2012-09-05 株式会社日立製作所 先読みを用いたストレージ消費電力削減方法及びその方法を用いた計算機システム
US7774309B2 (en) * 2007-11-19 2010-08-10 Red Hat, Inc. Data gravitation in a distributed-tree structure
JP5093757B2 (ja) * 2008-02-19 2012-12-12 日本電気株式会社 フィールド優先度別端末キャッシュ格納システム、その方法及びそのプログラム
US8612383B2 (en) * 2008-11-05 2013-12-17 Mastercard International Incorporated Method and systems for caching objects in a computer system
US8645324B2 (en) * 2009-01-09 2014-02-04 Pivotal Software, Inc. Preventing pauses in algorithms requiring pre-image information concerning modifications during data replication
US8510334B2 (en) 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
US9703706B2 (en) 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
US8577993B2 (en) 2011-05-20 2013-11-05 International Business Machines Corporation Caching provenance information
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9679084B2 (en) 2013-03-14 2017-06-13 Oracle International Corporation Memory sharing across distributed nodes
US9330055B2 (en) * 2013-06-04 2016-05-03 International Business Machines Corporation Modular architecture for extreme-scale distributed processing applications
CN103455579A (zh) * 2013-08-26 2013-12-18 西安建筑科技大学 一种基于万有引力搜索模型的副本替换方法
US9898414B2 (en) * 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
US9558115B2 (en) * 2014-04-22 2017-01-31 Netapp, Inc. Write-back caching-based atomicity in a distributed storage system
US10187488B2 (en) * 2015-02-25 2019-01-22 Netapp, Inc. Methods for managing replacement in a distributed cache environment and devices thereof
US11327887B2 (en) 2017-09-14 2022-05-10 Oracle International Corporation Server-side extension of client-side caches
WO2019109209A1 (zh) * 2017-12-04 2019-06-13 华为技术有限公司 一种存储器数据替换方法、服务器节点和数据存储系统
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10831666B2 (en) 2018-10-05 2020-11-10 Oracle International Corporation Secondary storage server caching
US11379380B2 (en) 2020-05-07 2022-07-05 Nxp Usa, Inc. Systems and methods for managing cache replacement

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193162A (en) 1989-11-06 1993-03-09 Unisys Corporation Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities
US5297269A (en) 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5261069A (en) 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
JPH0827755B2 (ja) * 1991-02-15 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データの単位を高速度でアクセスする方法
US5630124A (en) 1993-12-06 1997-05-13 International Business Machines Corporation System and method for assuring atomicity of distributed update requests in a parallel database
JPH08185359A (ja) 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
US5692149A (en) * 1995-03-16 1997-11-25 Samsung Electronics Co., Ltd. Block replacement method in cache only memory architecture multiprocessor
US5680576A (en) 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
JP3085899B2 (ja) 1995-06-19 2000-09-11 株式会社東芝 マルチプロセッサシステム
JPH0926910A (ja) 1995-07-11 1997-01-28 Canon Inc 情報処理装置及びその方法及び情報処理システム及びその制御方法
US5933849A (en) * 1997-04-10 1999-08-03 At&T Corp Scalable distributed caching system and method
US6256712B1 (en) 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6353836B1 (en) 1998-02-13 2002-03-05 Oracle Corporation Method and apparatus for transferring data from the cache of one node to the cache of another node
US6418514B1 (en) * 1998-02-17 2002-07-09 Internationl Business Machines Corporation Removal of posted operations from cache operations queue

Also Published As

Publication number Publication date
WO2002019115A2 (en) 2002-03-07
EP1316019B1 (de) 2006-03-08
CA2421700C (en) 2009-04-14
EP1667026A2 (de) 2006-06-07
US6633891B1 (en) 2003-10-14
HK1054798B (zh) 2006-08-04
WO2002019115A3 (en) 2002-08-15
AU2001289180B2 (en) 2007-07-26
EP1667026A3 (de) 2009-09-09
AU8918001A (en) 2002-03-13
JP2004511840A (ja) 2004-04-15
CA2421700A1 (en) 2002-03-07
HK1054798A1 (en) 2003-12-12
DE60117818D1 (de) 2006-05-04
EP1316019A2 (de) 2003-06-04
ATE320042T1 (de) 2006-03-15

Similar Documents

Publication Publication Date Title
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69901291T2 (de) Verfahren und vorrichtung zur datenübertragung zwischen der caches von netzwerkknoten
DE69937946T2 (de) Hashen von objekten mit inkrementalen änderungen
DE69433833T2 (de) Datenverarbeitungsgerät für Gleichung der Benutzerslast in einem Netz
DE69803478T2 (de) Ein/ausgabe weiterleitung in einem cachekohärenten rechnersystem mit gemeinsam genutztem plattenspeicher
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69728176T2 (de) Verfahren und gerät das verteilte steuerung von gemeinsamen betriebsmitteln erlaubt
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE69716565T2 (de) Speichersystem mit der Fähigkeit zur Datenumsiedlung
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112010004187T5 (de) Verfahren und System zum Verarbeiten von Netzwerkereignissen
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE112019002948T5 (de) Feststellen einer optimalen speicherumgebung für datensätze und für das migrieren von datensätzen
AU2001289180A1 (en) Managing replacement of data in a cache on a node based on caches of other nodes
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102016013577A1 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE10316725A1 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE69721641T2 (de) Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher
DE10006430A1 (de) Verbessertes Kohärenzprotokoll für einen Computer-Cache

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DENDORFER & HERRMANN PATENTANWAELTE PARTNERSCHAFT,