DE69130580T2 - Cache-Speicheranordnung - Google Patents

Cache-Speicheranordnung

Info

Publication number
DE69130580T2
DE69130580T2 DE69130580T DE69130580T DE69130580T2 DE 69130580 T2 DE69130580 T2 DE 69130580T2 DE 69130580 T DE69130580 T DE 69130580T DE 69130580 T DE69130580 T DE 69130580T DE 69130580 T2 DE69130580 T2 DE 69130580T2
Authority
DE
Germany
Prior art keywords
data
computer
common
cache
working set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69130580T
Other languages
English (en)
Other versions
DE69130580D1 (de
Inventor
Moriyoshi Setagaya-Ku Tokyo-To Ohara
Shigenori Asao-Kum Kawasaki-Shi Kanagawa-Ken Shimizu
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69130580D1 publication Critical patent/DE69130580D1/de
Publication of DE69130580T2 publication Critical patent/DE69130580T2/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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Diese Erfindung bezieht sich auf eine Cache-Speicheranordnung für ein Mehrrechnersystem, und insbesondere für ein Mehrrechnersystem, das eine sogenannte Snoopy-Cache-Architektur aufnimmt, wobei jede private Cache-Anordnung mit einer Steuerung bereitgestellt wird, die Signale in dem gemeinsamen Bus überwacht, und Daten im privaten Cache manipuliert, um beispielsweise die Datenkonsistenz in den privaten Caches zu erhalten.
  • Fest miteinander verbundene Mehrrechnersysteme mit einer Vielzahl von Rechnern mit privaten Caches, deren Rechner über einen gemeinsamen Bus miteinander verbunden sind, werden in praktischen Anwendungen benutzt.
  • In einem solchen Mehrrechnersystem liest eine Vielzahl von Rechnern aus dem oder schreibt in den gemeinsamen Speicher, der an den gemeinsamen Bus angeschlossen ist. Ohne private Caches hat jeder Rechner über den gemeinsamen Bus Lese-/Schreibzugang zum gemeinsamen Speicher. Deshalb ist der gemeinsame Speicher sehr häufig belegt, und durch die Zunahme der Rechner wird die Leistung nicht über eine bestimmte Grenze hinaus verbessert.
  • Dementsprechend wurde ein Verfahren vorgeschlagen, wobei jeder Rechner einen privaten Cache hat, der eine Teilkopie von gespeicherten Daten im gemeinsamen Speicher behält, und den Lese- /Schreibzugang auf die Daten in dem Cache durchführt. Dadurch werden der gemeinsame Bus und der gemeinsame Speicher nicht sehr häufig benutzt (ein Mehrcachesystem). Dieses Verfahren führt jedoch zu dem Problem, daß, wenn jeder Rechner gemeinsame Daten in seinem Cache verändert, ohne daß er mit dem anderen Rechner oder mehreren gemeinsamen Rechnern verbunden ist, die gemeinsamen Rechner zu einer bestimmten Zeit unter einer be stimmten Adresse unterschiedliche Daten haben können. Mittel, damit die Daten, die unter einer bestimmten Adresse in verschiedenen Caches gespeichert sind, gleich sind, sind daher erforderlich. Der Begriff "Datenkonsistenz" wird hier benutzt, um aufzuzeigen, daß jeder Rechner in der Lage ist, auf die gleichen Daten unter einer bestimmten Adresse zuzugreifen.
  • Ein Verfahren, um die Datenkonsistenz sicherzustellen, ist die Snoopy-Cache-Technik. Die Snoopy-Cache-Technik erhält die Datenkonsistenz unter den Caches, indem der gemeinsame Bus mit Cache-Steuerungen überwacht wird, die für jeden Rechner bereitgestellt werden. Das heißt, wenn ein Rechner Daten in seinem Cache verändert, sendet er Informationen darüber, wie er die Daten verändert, und wo sich die gemeinsame Adresse in dem gemeinsamen Bus befindet. Wenn ein anderer oder mehrere Rechner diese Daten gemeinsam benutzen, sehen die Cache-Steuerungen der anderen Rechner diese Information und aktualisieren oder annullieren die Daten in ihren Caches, damit die Datenkonsistenz erhalten bleibt.
  • Die konventionellen Snoopy-Cache-Techniken übernehmen entweder ein erstes Protokoll, wobei nach der Änderung von gemeinsamen Daten in einem Cache, die Kopien in den anderen Caches annulliert werden, oder ein zweites Protokoll, wobei die Kopien geändert werden. Zum Beispiel Dragon of Xerox Corporation, Vereinigte Staaten von Amerika und FireFly von Digital Equipment Corporation, Vereinigte Staaten von Amerika benutzen das Aktualisierungsprotokoll, und SPUR von der University of California benutzt das Annullierungsprotokoll. Außerdem wurde TOP-1, das von dem Tokyo Research Laboratory, IBM Japan Ltd., entwickelt wurde, konzipiert, um bei Durchführung der Software zwischen Aktualisierung und Annullierung hin- und herschalten zu können. Das Dokument COMPUTER ARCHITECTURE CONFERENCE PROCEEDINGS, vol 17, no. 3, June 1989, pages 10-11, beschreibt ein Simulations modell, um zwischen write-broadcast und write-invalidate Protokollen hin- und herschalten zu können.
  • Die oben genannten beiden Protokollarten können die Datenkonsistenz unter einer Vielzahl von Caches gleich gut aufrechterhalten, das heißt, Aktualisierung und Annullierung von Daten haben - bezogen auf die Datenkonsistenz - die gleiche Wirkung. Beide haben sie jedoch - bezogen auf ihre Verfahren - Vor- und Nachteile.
  • Die Aktualisierung ist für Fälle geeignet, in denen Daten, die von Rechnern ausschließlich gemeinsam benutzt werden (oder in denen Rechner stets gleich auf gemeinsame Daten zugreifen) manipuliert werden. In diesen Fällen ist die Annullierung nicht geeignet, da jedesmal, wenn der Rechner einen gemeinsamen Datenbereich ändert, die Kopien in den Caches der anderen gemeinsamen Rechnern annulliert werden. Bedingt dadurch, verursacht ein Lese-/Schreibzugriff auf diesen Bereich durch andere gemeinsame Rechner einen unvermeidbaren Cache Miss und verlangt Zugriff auf den gemeinsamen Bus. In dieser Hinsicht werden Kopien in den gemeinsamen Caches entsprechend aktualisiert, wodurch es dem Datenbereich ermöglicht wird, ohne Zugriff auf den gemeinsamen Bus ausgelesen zu werden. Allgemein gesagt, funktioniert die Aktualisierung gut, wenn diese für Puffer benutzt wird, die das Parallelprogramm des Hersteller- und Verbrauchermodells und des Zeichenträgers u.ä. einsetzen, das zum Synchronisieren von Rechnern usw. benutzt wird.
  • Die Annullierung wird hingegen vorzugsweise bei gemeinsamen Daten angewendet, die ausschließlich von einem Rechner benutzt werden oder auf gemeinsame Daten, auf die von anderen Rechnern weniger häufig zugegriffen wird. Der Seitenaustausch der Prozeßumstellung kann aus Daten, die ausschließlich von einem Rechner gespeichert werden, gemeinsame Daten machen, obgleich er diese ausschließlich speichern sollte. Durch diese Situation werden jedoch unnötige gemeinsame Daten in das System plaziert, und die Leistung verschlechtert sich. Die Annullierung ist in dieser Situation wirksam.
  • Der Vorzug zwischen den vorgenannten Arten kann nicht unbedingt geradewegs entschieden werden und hängt von Charakteristiken eines auszuführenden Programms und den Betriebszuständen der einzelnen Rechner ab. Der Stand der Technik liefert kein Protokoll, das wirksame Operationen in jeder Datenzugriffsituation ermöglicht.
  • Dragon, FireFly und SPUR liefern jeweils nur eine Art, und somit wird in einigen Situationen die Leistung schlechter. TOP-1 kann mittels der Software wahlweise zwischen den oben genannten Arten hin- und herschalten, wobei jedoch das Problem, wie und wann umzuschalten ist, noch nicht gelöst ist. Es hängt von der Lösung des Problems ab, ob die Leistung voll und ganz verbessert wurde oder nicht.
  • Gemäß der vorliegenden Erfindung wird eine Cache-Speicheranordnung bereitgestellt, um einen Rechner und einen gemeinsamen Bus in einem Mehrrechner-Datenverarbeitungssystem miteinander zu verbinden, wobei das System eine Vielzahl von Rechnern enthält, die über ähnliche Cache-Speicheranordnungen mit dem gemeinsamen Bus verbunden sind;
  • wobei die Cache-Speicheranordnung enthält:
  • - Speichermittel (4), um die gemeinsamen Daten, die in Speicherblöcken angeordnet sind, zu speichern; einige der Speicherblöcke ein 'Working Set' für häufigen Zugriff durch den Rechner bieten;
  • eine Steuerung (3), um die Signale im gemeinsamen Bus zu überwachen, und, wenn ein gemeinsamer Datenteil in einer anderen Cache-Speicheranordnung geändert wird, eine von zwei Datenkonsistenzprozeduren für den gemeinsamen Datenteil durchzuführen;
  • gekennzeichnet durch:
  • - Mittel, um zu bestimmen (5), ob die Adresse eines gemeinsamen Datenteils, der in den Speichermitteln gespeichert ist, der Adresse eines Speicherblocks in dem Working Set entspricht oder nicht, wenn eine Datenkonsistenzprozedur für den gemeinsamen Datenteil durchgeführt werden muß, wobei die Steuerung auf die Mittel zur Bestimmung reagiert; und die Steuerung enthält:
  • Mittel, um eine der beiden Datenkonsistenzprozeduren in Abhängigkeit des Ergebnisses durchzuführen, das durch die Mittel zur Bestimmung erzielt wurde.
  • Vorzugsweise enthalten die Mittel zur Bestimmung:
  • - Mittel, um die Adressen der Speicherblöcke zu speichern, die zu dem Working Set gehören;
  • - Mittel, um zu bestimmen, ob die Adresse des Speicherblocks, zu dem der gemeinsame Datenteil gehört, für den eine der beiden Datenkonsistenzprozeduren durchzuführen ist, zu einer der Adressen paßt oder nicht, die in den Adreßspeichermitteln gespeichert sind.
  • In einer bevorzugten Form der Erfindung wird, wenn der Rechner auf Daten in einem Speicherblock zugreift, der nicht zu dem Working Set gehört, der Speicherblock zu dem Working Set hinzugefügt, und wenn der Rechner nicht auf Daten in einem bestimmten Speicherblock zugreift, der zum Working Set gehört, während der Rechner auf Daten in anderen Speicherblöcken so oft zugreift, wie dies zuvor bestimmt wurde, wird der bestimmte Speicherblock aus dem Working Set gelöscht.
  • Die Datenkonsistenzprozeduren können eine Annullierungsprozedur enthalten, wobei, wenn ein gemeinsamer. Datenteil in den Speichermitteln verändert wird, der Status des gemeinsamen Datenteils in einen exklusiven Status geändert wird, und der gemeinsame Datenteil, der in den Speichermitteln der anderen Cache- Speicheranordnungen im Mehrrechner-Datenverabeitungssystem gespeichert ist, wird annulliert, und eine Aktualisierungsprozedur, wobei, wenn ein gemeinsamer Datenteil geändert wird, der gemeinsame Datenteil, der in den Speichermitteln der anderen Cache-Speicheranordnungen im Mehrrechner-Datenverarbeitungssystem gespeichert ist, entsprechend aktualisiert wird, und wenn in keiner anderen Cache-Speicheranordnung der gemeinsame Datenteil gespeichert ist, wird sein Status in einen exklusiven Status geändert. Ergibt sich bei der Bestimmung, daß der gemeinsame Datenteil nicht zu dem Working Set gehört, führt die Steuerung eine Datenkonsistenzprozedur in Form einer Annullierung durch, und ergibt sich bei der Bestimmung, daß der gemeinsame Datenteil zu dem Working Set gehört, führt die Steuerung eine Datenkonsistenzprozedur in Form einer Aktualisierung durch.
  • Die vorliegende Erfindung liefert eine Vorrichtung, die in der Lage ist, dynamisch und äußerst geschickt, zwischen den einzelnen Protokollen (Annullierung und Aktualisierung) hin- und herzuschalten. Durch diese Vorrichtung wird der Datenverkehr im gemeinsamen Bus reduziert und die Systemleistung verbessert.
  • Die Erfindung stellt außerdem die Cache-Steuerung bereit, wobei die vorerwähnte Vorrichtung bei. Einführung eines neuen Cache- Protokolls benutzt wird, um den Datenverkehr im gemeinsamen Bus zu reduzieren.
  • Für gewöhnlich greift jeder Rechner wiederholt auf einen begrenzten Bereich des Speichers in einer bestimmten kurzen Zeit zu. Dieser Bereich wird, bezogen auf den Rechner, als "Working Set" bezeichnet. Gemäß der vorliegenden Erfindung wird jedesmal, wenn eine Schreiboperation in den gemeinsamen Daten durchgeführt wird, für jeden der gemeinsamen Rechner festgelegt, ob die Daten zum Working Set gehören oder nicht, und wenn bestimmt wird, daß diese zu dem jeweiligen Working Set gehören, dann wird die Cache-Konsistenz durch die Aktualisierungsprozedur und andernfalls durch die Annullierungsprozedur bearbeitet. Die Daten in dem Working Set sind Daten, die von dem Rechner mit einer hohen Wahrscheinlichkeit benutzt werden. Der Rechner kann auf die neuesten Daten zugreifen, ohne den Bus benutzen zu müssen, indem die Daten innerhalb des Working Set aktualisiert werden. Im Gegensatz dazu ist bei Daten außerhalb des Working Set die Wahrscheinlichkeit gering, daß der Rechner auf diese zugreift. Trotzdem müssen diese Daten jedesmal aktualisiert werden, wenn ein anderer Rechner auf die Daten zugreift, wenn die Daten noch im Cache sind (Aktualisierung). Die Erfindung reduziert deshalb den Busdatenverkehr für unnötige Aktualisierung durch Annullierung der Daten, die sich außerhalb des Working Set befinden.
  • Des weiteren verbessert diese Erfindung die Systemleistung, indem die oben genannte Vorrichtung benutzt wird, um den Working Set bei einem neuen Cache-Protokoll zu bestimmen, das als ALL READ bezeichnet wird. Eine Vielzahl von Rechnern in einem Mehrrechnersystem, das Snoopy-Caches benutzt, benutzt häufig gemeinsame Daten oder einen Code in einer Adresse. In diesem Fall rufen konventionelle Snoopy-Cache-Protokolle den Rechner einzeln auf, um den Bus zu benutzen, um Daten oder den Code in ihre Caches zu laden. Obwohl dies zu einer besseren Systemleistung führt, als wenn ein Rechner ein Read Miss bei Daten oder einem Code in einer Adresse verursacht, liest ein anderer Rechner oder mehrere andere Rechner, die Daten oder den Code automatisch in seine Caches, wobei ein anderer oder mehrere Caches in den konventionellen Systemen die Benutzung der Daten oder des Codes nicht vorhersagen können, und dadurch können die kon ventionellen Systeme das Rundsenden von gelesenen Daten nicht wirksam ausführen. Gemäß dieser Erfindung wird mittels der Vorrichtung zur Bestimmung des Working Set ALL READ nur auf Daten innerhalb des Working Set angewendet. Diese Erfindung stellt somit auf wirksame Art und Weise ALL READ bereit, reduziert den Busdatenverkehr und verbessert die Systemleistung.
  • Durch die Erfindung kann ein Mehrrechner-Datenverarbeitungssystem bereitgestellt werden, das eine Vielzahl von Rechnern; einen gemeinsamen Bus und eine Vielzahl von Cache-Speicheranordnungen - wie oben beschrieben - enthält, wobei jeder Rechner über eine der Cache-Speicheranordnungen mit dem gemeinsamen Bus verbunden ist.
  • Es wird nun ein Ausführungsbeispiel der Erfindung anhand der beiliegenden Zeichnungen beschrieben, in denen
  • Fig. 1 ein Blockdiagramm zeigt, das die Gesamtkonfiguration von einem Ausführungsbeispiel dieser Erfindung zeigt;
  • Fig. 2 ein Blockdiagramm zeigt, das die Konfiguration des privaten Caches darstellt, der in dem Ausführungsbeispiel von Fig. 1 benutzt wird;
  • Fig. 3 ein Diagramm zeigt, das die Konfiguration der Cache- Basissteuerung aus Fig. 2 zeigt;
  • Fig. 4 ein Blockdiagramm zeigt, in dem die Modusschaltsteuerung aus Fig. 2 abgebildet ist;
  • und die
  • Fig. 5 bis 7 Diagramme zeigen, in denen die Anwendungen des Ausführungsbeispiels abgebildet sind.
  • 1. Konfiguration
  • Fig. 1 zeigt die Gesamtkonfiguration des Mehrrechnersystems aus dem Ausführungsbeispiel, in der eine Vielzahl von Rechnern P1, P2, ..Pn über die jeweiligen Caches C1, C2, ..Cn mit einem gemeinsamen Bus 1 und einem gemeinsamen Speicher 2 verbunden sind. Die Caches C1, C2, ..Cn ermöglichen es den Rechnern P1, P2, ..Pn, den Speicherzugriff im Durchschnitt schneller durchzuführen und haben Mittel, um die Konsistenz unter den Caches C1, C2, ..Cn zu erhalten.
  • Jeder der Caches C ist entsprechend Fig. 2 konfiguriert, wobei eine Cache-Steuerung 3 die Basissteuerung des kompletten Caches C durchführt, die notwendig ist, wenn Rechner P auf Cache C zugreift, und wenn Bus 1 untersucht wird. Ein Cache-Datenspeicher 4 ist ein Hochgeschwindigkeitsspeicher, um eine Teilkopie von den im Hauptspeicher (gemeinsamer Speicher 2) gespeicherten Daten zu speichern. Der Rechner P kann die notwendigen Daten über den Datenspeicher 4 auslesen oder in diesen schreiben, wobei er die meiste Zeit nicht auf den Hauptspeicher zugreifen muß (auf die Daten wird mit 4 · 4 Bytes zugegriffen). Deshalb kann der Rechner P im Durchschnitt schneller auf den Speicher zugreifen. Eine Modusschaltsteuerung 5 schaltet die Modi von Cache C, damit die Cache-Basissteuerung 3 die Konsistenz in diesem Cache und in den anderen Cache aufrechterhalten kann, indem der Speicherzugriff durch den Rechner und der Speicherzugriff auf Bus 1 überwacht wird.
  • Fig. 3 zeigt die Cache-Basissteuerung 3, wobei die Steuerung 3 sowohl von dem Rechner P als auch von dem Bus 1 Eingaben als Zugriffssteuersignale und Adreßsignale empfängt. Die Cache- Basissteuerung 3 hat einen Tag-Speicher 6, um die Hauptspeicheradresse zu speichern, in denen der Cache C Kopien der Daten aufbewahrt. Wenn der Rechner P auf den Cache zugreift, oder Snooping-Operationen durchgeführt werden, prüft die Steuerung 3, ob sich die adressierten Daten im Cache befinden oder nicht und führt die für den Cache verlangte Steuerung aus.
  • Fig. 4 zeigt die Modusschaltsteuerung 5, die aus n-Working Set Speichern (nachstehend einzeln mit WSM1, WSM2,.., WSMn bezeichnet und allgemein als WSM) und eine n-Input ODER-Schaltung 7. WSM besteht aus einem Zähler 8, einem Adreß-Tag 9, einem gültigen Flag 10, zwei Vergleichseinrichtungen 11 und 12 und einem Steuerkreis 13, der WSM steuert. In jedem WSM wird ein Speicherblock (z. B. von 4KB), der im Working Set enthalten ist, registriert. Die Modusschaltsteuerung 5 bestimmt, ob eine Zugriffsadresse von dem Rechner P oder im Bus 1 im Speicherblock innerhalb des Working Set enthalten ist oder nicht. Wenn die Adresse in einem der Speicherblöcke innerhalb des Working Set enthalten ist, gibt die ODER-Schaltung "1" aus, und der Modus der oben erwähnten Cache-Basissteuerung wird "aktualisiert", andernfalls gibt der OR Schaltkreis 7 "0" aus, und der Modus der Cache-Basissteuerung 3 wird "annulliert".
  • 2. Funktion (1) Arbeitsweise der Modusschaltsteuerung
  • Wenn ein Rechner P sehr kurze Zeit beobachtet wird, greift dieser häufig auf einen sehr begrenzten Speicherplatz zu (eine begrenzte Anzahl von Speicherblöcken). Dieser Speicherplatz wird als sein "Working Set" bezeichnet. Die WSMs erkennen das Working Set und registrieren die zum Working Set gehörenden Speicherblöcke. Die WSMs bestimmen, ob eine Adresse, auf die der Rechner P zugreift oder die sich in Bus 1 befindet, innerhalb des Working Set ist oder nicht. Bei längerer Beobachtung wird festgestellt, daß sich das Working Set verändert, und deshalb werden unbenutzte Speicherblöcke aus den WSMs gelöscht.
  • Die Funktionen der Modusschaltsteuerung 5 werden ausführlich mit Bezug auf Fig. 4 beschrieben.
  • Das Adreßtag - wie in Fig. 4 abgebildet - behält die Adresse eines Speicherblocks in dem Working Set. Es wird hier angenommen, daß der Adreßraum des Rechners P 2m Bytes beträgt, wobei der Platz eines Speicherblocks im Working Set 2w Bytes beträgt. Das Adreßtag speichert demgemäß die oberen (m-w) Bits der Adresse. Das gültige Flag 10 gibt an, ob WSM die Adresse eines effektiven Speicherblocks als Working Set speichert oder nicht. Nach der Speicherzugriffsanforderung von dem Rechner oder im Bus 1 benutzt jeder WSM die Vergleichseinrichtung, um die oberen (m-w) Bits der Zugriffsadresse mit den Inhalten im Adreßtag 9 zu vergleichen. Wenn die oberen Adreßbits mit den Inhalten übereinstimmen, und das Bit des gültigen Flag "1" ist, wird der Zugriff innerhalb des Working Set als erfolgt betrachtet, und die ODER-Schaltung 7 gibt "1" aus.
  • Die Registrierung eines Speicherblocks, der zu dem Working Set gehört, wird wie folgt durchgeführt. Wenn der Rechner P eine Speicherzugriffsanforderung für eine Adresse ausgibt, die nicht innerhalb eines Speicherblocks des Working Set vorhanden ist, wird die Adresse als Adresse eines neuen Speicherblocks des Working Set registriert. Für diese Registrierung wird ein WSM mit dem gültigen Flag "0" benutzt, und die oberen (m-w) Bits der Adresse werden in das Adreßtag 9 geschrieben, und das gültige Flag 10 wird in "1" geändert. Wenn die gültigen Flags 10 von allen WSMs "1" behalten, dann ist im Working Set kein neuer Eintrag registriert worden.
  • Als nächstes wird die Löschung eines Speicherblocks aus dem Working Set beschrieben. Wenn ein Speicherblock, der im Working Set als registriert enthalten ist, nicht benutzt wird, wird der Block aus dem WSM gelöscht. Zu diesem Zweck wird der Zähler 8 im WSM benutzt, der jedesmal, wenn der Rechner P eine Speicherzugriffsanforderung ausgibt, inkrementiert wird, und gelöscht wird, wenn die Speicherzugriffsanforderung von dem entsprechenden Speicherblock im Working Set kommt. Anders ausgedrückt, der Zähler 8 gibt an, wie oft der Rechner P auf andere Speicherbereiche als den entsprechenden Speicherblock im Working Set zugreift, nachdem er das letzte Mal auf den entsprechenden Speicherblock zugegriffen hat. Wenn der Zähler 8 voll ist, wird bestimmt, daß der Speicherblock im Working Set nicht länger benötigt wird, und "1" im gültigen Flag wird gelöscht, und der Speicherblock wird somit aus dem Working Set gelöscht.
  • In diesem Ausführungsbeispiel wird das Working Set wie oben beschrieben in den WSMs registriert. Nachfolgend wird die dynamische Optimierung der Protokolle beschrieben, die auf der Ausgabe der Modusschaltsteuerung 5 basieren (die Ausgabe der ODER- Schaltung in Fig. 4) und die Steuerung für das Rundsenden der ausgelesenen Daten.
  • 2. Dynamische Optimierung' der Protokollsteuerung
  • Jeder Cache C aus Fig. 1 durchsucht den Bus 1. Die Cache- Basissteuerung 3 erkennt eine Schreiboperation in Daten, deren Kopie sie im Bus hat, und behält dann die Konsistenz unter den Caches, indem sie ihre Kopie annulliert oder aktualisiert. Wenn eine Schreiboperation für Daten durchgeführt wird, deren Kopie der Cache hat, kann die Modusschaltsteuerung 5 bestimmen, ob die Daten in dem Working Set enthalten sind oder nicht. Wenn die Daten in dem Working Set der Cache-Basissteuerung 3 enthalten sind, dann werden diese aktualisiert. Andernfalls annulliert. Der Aktualisierungsmodus ist für Daten im Working Set wirksamer, und wird deshalb wahrscheinlicher häufiger benutzt. Der Annullierungsmodus ist bei Daten außerhalb des Working Set effizienter, wobei es unwahrscheinlicher ist, daß auf diese zugegriffen wird. Die Protokolle werden entsprechend geschaltet, was davon abhängt, ob eine Schreiboperation in den gemeinsamen Daten im Working Set durchgeführt wird oder nicht, und somit ist die Konsistenz unter den Caches wirksam gewährleistet.
  • 3. Steuerung für ALL READ
  • Wenn in einem Bus, der mit einem Mehrrechner verbunden ist, der konventionelle Caches benutzt, ein Cache Miss auftritt, benutzen einzelne Rechner Bus 1, um Daten aus dem Speicher 2 in die Caches zu lesen. Wenn jeder Rechner P, der eine Menge von Datenfortschritten verarbeitet, die Benutzung teilt, benutzt jeder Rechner P einzeln den Bus 1, um die gleichen Daten zu lesen. In diesem Fall könnte das Benutzungsverhältnis von Bus 1 reduziert werden, und die Systemleistung könnte verbessert werden, wenn ein Rechner P Daten aus dem Speicher liest, während die Daten an die Caches der anderen Rechner übertragen werden. Dieses Verfahren wird als "ALL READ" bezeichnet.
  • Da dieses Verfahren jedoch Daten löscht, die in den Caches der anderen Rechner gespeichert sind, um neue Daten zu speichern, sollte der folgende Punkt notiert werden.
  • i) Auswahl von Rechnern, die an Rundsende-Operationen beteiligt sind
  • Da alle Rechner, die mit Bus 1 verbunden sind, nicht unbedingt jeden Datenteil verarbeiten müssen, sollte eine Rundsende- Operation nur bei Rechnern ausgeführt werden, die gemeinsame Daten übertragen müssen.
  • ii) Synchronisation der Rechner P untereinander
  • Selbst wenn Rechner einen gemeinsamen Datenteil verarbeiten, müssen sie nicht unbedingt untereinander synchronisiert werden, und es ist deshalb nicht sicher, daß wenn ein Rechner P eine ALL READ Operation durchführt, ein anderer Rechner P die Daten benötigt. Eine Rundsende-Operation sollte durchgeführt werden, so daß die Daten an dynamisch ausgewählte Rechner übertragen werden, welche die Daten anforderten.
  • Ohne die vorstehenden Punkte zu berücksichtigen, kann ALL READ Daten aus dem Cache löschen und die Systemleistung verschlechtern.
  • Das Ausführungsbeispiel der Erfindung ermöglicht es, daß ALL READ Operationen effizient durchgeführt werden können, indem eine Erkennungseinrichtung für das Working Set benutzt wird. Wenn ein Rechner P eine ALL READ Operation durchführt, wird eine ALL READ Anforderung in Bus 1 plaziert. Gleichzeitig prüfen die Modusschaltsteuerungen 5 der anderen Rechnern, ob die Adresse der Anforderung aus den Speicherblöcken in ihren jeweiligen Working Sets kommt oder nicht. Wenn die Adresse aus den jeweiligen Working Sets kommt, veranlassen die Cache- Basissteuerungen 3, daß die Daten in ihre jeweiligen Datenspeicher 4 geschrieben werden. Andernfalls veranlassen sie nicht, daß die Daten in ihre Datenspeicher 4 geschrieben werden. Da Rechner, die keine rundgesendeten gemeinsamen Daten benutzen, nicht in Daten schreiben, ist das Problem (1) gelöst. In bezug auf das Problem (ii) schreiben Rechner, die die Daten während der Rundsende-Operation nicht benutzen, nicht in die Daten. Im Gegensatz dazu wird, wenn eine Vielzahl von Rechnern den gleichen breiten Datenblock benötigt, eine ALL READ Operation wie folgt durchgeführt.
  • 1. Jeder Rechner P benutzt Bus 1, um auf den ersten Teil der gemeinsamen Daten (durch einen gewöhnlichen Zugriff) zuzugreifen. Der Arbeitsblock, der den gemeinsamen Datenteil enthält, wird als Working Set für jeden Rechner registriert.
  • 2. Als nächstes liest einer der Rechner den nächsten Teil der gemeinsamen Daten mittels einer ALL READ Operation. Da diese Daten Teil des Working Set sind, der in Schritt 1 registriert ist, liest der Rechner P in den Datenteil ein.
  • Während die üblichen Zugriffe auf den ersten Datenteil erfolgen, werden auf diese Art und Weise ALL READ Operationen für die folgenden Datenteile im Arbeitsblock durchgeführt, und dadurch wird der Busdatenverkehr reduziert und die Systemleistung verbessert.
  • 3. Effizienz des Ausführungsbeispiels
  • In diesem Ausführungsbeispiel wird mittels der dynamisch optimierten Protokollsteuerung und der ALL READ Steuerung der Busdatenverkehr in einem Mehrrechnersystem reduziert, und die Systemleistung wird verbessert. Nachstehend wird die Effizienz des Ausführungsbeispiels anhand von Fallbeispielen beschrieben.
  • 3.1) Effizienz mit dynamisch optimiert Protokollsteuerung a. Spin Lock
  • Eine Spin-Lock-Technik ist für die exklusive Steuerung eines kritischen Bereichs in einem Mehrrechner typisch. Fig. 5 zeigt den Spin Lock, wobei ein Rechner P eine zuvor bestimmte gemeinsame Variable auf 1 setzt, wenn der kritische Abschnitt erreicht wird und stellt diese beim Verlassen des Bereichs auf 0 zurück. Ein Rechner, der den kritischen Bereich erreicht, prüft die gemeinsame Variable, und wenn diese 1 ist, wartet er, bis die Variable in 0 geändert wird. Das Programm, das in Fig. 5 abgebildet ist, ist wie folgt.
  • (1) Die gemeinsame Variable X lesen.
  • (2) Die gelesene Variable X mit 1 vergleichen.
  • (3) Wenn sich bei dem Vergleich herausstellt, daß X gleich 1 ist, dann zur Schleife springen.
  • (4) Wenn in Schritt (3) X 0 ist, dann prüfen, ob · 1 ist und auf 1 setzen. Der Befehl in Schritt (4) führt den Vergleich aus und kombiniert die Operation.
  • (5) Wenn in Schritt (4) X nicht 1 ist, dann zur Schleife springen.
  • (6) Den kritischen Bereich ausführen.
  • (7) Abschließend X auf 0 setzen.
  • Hier wird angenommen, daß ein Rechner P1 den kritischen Bereich ausführt, und daß die anderen Rechner P2 bis P10 auf X warten, um den Wert in 0 zu ändern, um auf den kritischen Bereich in einem Mehrrechnersystem zuzugreifen, das 10 Rechner enthält, die fest miteinander verbunden sind (n in Fig. 1 ist 10). Die Caches arbeiten wie folgt.
  • Der Rechner p1 schreibt in Schritt (7) in X. Da die anderen Caches zu diesem Zeitpunkt eine Kopie von X haben, arbeiten die Cache-Steuerungsschaltungen, um die Konsistenz unter den Caches aufrechtzuerhalten. Wenn die Konsistenz im Annullierungsmodus erhalten bleibt, werden die Kopien von X der Rechner P2 bis P10 annulliert. Diese Rechner führen die Schritte (1) bis (3) aus und verursachen deshalb in Schritt (1) Cache Misses und lesen Kopien von X mittels des Busses. Es gibt 10 Fälle von veranlaßtem Busdatenverkehr, d. h. ein Fall wird von Schritt (7) durch den Rechner P1 veranlaßt, und 9 Fälle werden von den Rechnern P2 bis P10 in Schritt 1 durch Read Misses verursacht. Andererseits werden im Aktualisierungsmodus, wenn der Rechner P1 eine Schreiboperation in Schritt (7) ausführt, Kopien von X, die von den Rechnern P2 bis P10 aufbewahrt werden, aktualisiert, die in Schritt (1) keine Read Misses veranlassen. Daraus ergibt sich, daß die Häufigkeit des Busdatenverkehrs insgesamt eins ist, die in Schritt (7) durch den Rechner P1 erfolgt.
  • Gemäß dem Ausführungsbeispiel ist X, während die Rechner P2 bis P10 die Schleife der Schritte (1) bis (3) ausführen, in den Working Sets der Rechner P2 bis P10 enthalten. Wenn der Rechner P1 in Schritt (7) in X schreibt, befehlen die Modusschaltsteuerungen 5 der Rechner P2 bis P10 den Cache-Basissteuerungen 3, die Konsistenz unter den Caches im Aktualisierungsmodus aufrechtzuerhalten. Wie zuvor erwähnt, wird der Busdatenverkehr insgesamt reduziert, und die Systemleistung wird dadurch verbessert.
  • b. Prozeßumstellung
  • Bei dem oben erwähnten Fall liegt der Aktualisierungsmodus über dem Annullierungsmodus, doch es gibt auch den umgekehrten Fall.
  • In einem Mehrrechnersystem wird ein Programm in einer Mehrrechnerumgebung ausgeführt. Gewöhnlich gibt es mehr Prozesse als Rechner, und deshalb werden die Prozesse unter zuvor bestimmten Bedingungen geschaltet, um den Rechnern zugewiesen zu werden. Achten Sie auf einen Prozeß, der einem Rechner P zugewiesen wird, und der anschließend von dem Steuerprogramm unterbrochen wird, und der dann zu einem späteren Zeitpunkt wieder einem Rechner P zugewiesen wird, und die Operation wird wiederholt. Während der oben genannten Operationen unterscheidet sich der Rechner, dem der Prozeß das erste Mal zugewiesen wird, von dem Rechner, dem der Prozeß als nächster zugeordnet wird.
  • Das Phänomen, daß ein Prozeß durch die Prozeßschaltung den verschiedenen Rechnern zugewiesen wird, wird als "Prozeßumstellung" bezeichnet.
  • Im Aktualisierungsmodus plaziert ein Rechner Schreibdaten während seiner Schreiboperation in Bus 1, und Kopien in den Caches der anderen Rechner werden mit den Daten aktualisiert. Wenn es eine Menge gemeinsamer Daten gibt, wird Bus 1 sehr häufig benutzt. Nach der Prozeßumstellung wird der enthaltene Prozeß in einem anderen Rechner ausgeführt, und nicht in dem Rechner, der zuvor den Prozeß ausgeführt hat. Der Cache des zuletzt genannten Rechners behält jedoch stets eine Kopie der Daten, die der Prozeß benutzt hat. Die Daten, die der Prozeß benutzt, werden von dem ersten und letzten Rechner gemeinsam benutzt. Diese gemeinsamen Daten werden hier als "falsche gemeinsame Daten" bezeichnet. Die Prozeßumstellung verursacht somit falsche gemeinsame Daten, und wenn der Aktualisierungsmodus benutzt wird, erhöht er das Benutzungsverhältnis des Busses 1 und beeinflußt dadurch die Systemleistung.
  • Im Gegensatz dazu wird die Systemleistung von der Prozeßumstellung nicht beeinflußt, wenn Caches der Annullierungsart benutzt werden. Weil, wenn ein Prozeß eine Schreiboperation für falsche gemeinsame Daten ausführt, wird eine Kopie der falschen gemeinsamen Daten im Cache des Rechners, in dem der Prozeß vorher ausgeführt wurde, annulliert, und es werden nicht gemeinsame Daten. Bei falschen gemeinsamen Daten werden die Schreibdaten einmal beim ersten Mal in Bus 1 plaziert, jedoch Bus 1 wird später nicht benutzt.
  • In diesem Ausführungsbeispiel wird die Konsistenz unter den Caches im Aktualisierungsmodus für Daten innerhalb des Working Set und im Annullierungsmodus für Daten außerhalb des Working Set aufrechterhalten. Weiters wird selbst, wenn die Prozeßumstellung erfolgt, das Working Set des enthaltenen Prozesses aus den Working Set Speichern von Cache C des Rechners ausgeschlossen, der zuvor den Prozeß ausgeführt hat, und dadurch werden falsche gemeinsame Daten im Annullierungsmodus manipuliert.
  • Zusammenfassend kann gesagt werden, daß manchmal der Annullierungsmodus besser arbeitet, um die Cache-Konsistenz aufrechtzuerhalten, und ein anderes Mal kann es der Aktualisierungsmodus sein. In diesem Ausführungsbeispiel werden die Protokolle geschaltet, um bessere Leistung zu erreichen, und somit wird die Systemleistung verbessert.
  • 3. 2) Effizienz von ALL READ
  • Wie ALL READ effizient arbeitet, wird durch Multiplikation von zweidimensionalen Matrizen dargestellt. Wie Fig. 6 zeigt, wird die Multiplikation von zwei Matrizen von jeweils 120 · 120 ausgeführt, indem jede Matrix in 9 Teilmatrizen aufgeteilt wird. Wie Fig. 7 zeigt, führt jeder Rechner P1 bis P9 jede Multiplikation der Teilmatrizen durch. Angenommen, ein Element von jeder Matrix hat 32 Bits (4 Bytes), und es werden jedesmal, wenn eine Übertragung erfolgt, 32 Datenbits an den Bus übertragen.
  • i. Mit dem üblichen Protokoll
  • Da jeder Rechner P dreimal die Multiplikation der Teilmatrizen vornimmt, wie Fig. 7 zeigt, liest er 6 Teilmatrizen. Jede Teilmatrix hat 1.600 Elemente, und ein Element wird jedesmal übertragen, wenn eine Übertragung erfolgt. Jeder Rechner P fordert demnach 9.600 (= 1.600·6) Mal die Busübertragung an. Weitere 9 Rechner führen unabhängig die Busübertragung aus. Somit wird für das gesamte System 86.400 (= 9.600·9) Mal die Busübertragung angefordert.
  • ii. Mit ALL READ
  • Wie aus Fig. 7 hervorgeht, wird auf jede Teilmatrix von 3 Rechnern zugegriffen. Mittels ALL READ kann der Datenteil in den Working Sets an eine Vielzahl von Caches mit einer Übertragung übertragen werden. Es wird hier angenommen, daß die Elemente einer Teilmatrix in einen übereinstimmenden Speicherbereich plaziert werden. Wenn wir beispielsweise All betrachten, so wird dies durch 3 Rechner bezeichnet: P1, P2 und P3. Diese Rechner lesen das erste Element von All aus, indem sie den Bus unabhängig voneinander benutzen. Zu diesem Zeitpunkt wird der Speicherbereich, in den All plaziert wird, als Working Set der Rechner registriert. Deshalb wird es, wenn einer der Rechner das zweite Element und die folgenden Elemente von All mittels Bus 1 liest, in die Caches der beiden anderen Rechner gelesen. Damit die drei Rechner All lesen können, ist 1.602 (= 3·159) Mal die Busübertragung notwendig. Die anderen 8 Teilmatrizen werden ebenso übertragen. Insgesamt sind 14.418 Busübertragungen notwendig.
  • Wie oben beschrieben wurde, kann ALL READ die Busübertragungshäufigkeit von 86.400, die normalerweise verlangt wird, auf 14.418 reduzieren.
  • 4. Änderungen des Ausführungsbeispiels
  • Obgleich die Erfindung in bezug auf das oben genannte Ausführungsbeispiel beschrieben wurde, sollte es klar sein, daß diese Erfindung nicht auf das Ausführungsbeispiel begrenzt ist, und zahlreiche Änderungen innerhalb des Bereichs der Ansprüche durchgeführt werden können. Der Punkt ist, daß der Aktualisierungsmodus für Daten mit einer Speicherstelle benutzt wird, und der Annullierungsmodus für Daten ohne Speicherstelle benutzt wird.
  • Wie beschrieben wurde, kann die Erfindung eine Vorrichtung bereitstellen, die in der Lage ist, dynamisch und äußerst geschickt, zwischen den einzelnen Protokollen (Annullierung und Aktualisierung) hin- und herzuschalten. Durch diese Vorrichtung wird der Datenverkehr im gemeinsamen Bus reduziert und die Systemleistung verbessert. Diese Erfindung kann außerdem die Cache-Steuerung bereitstellen, wobei die oben genannte Vorrichtung bei Einführung eines neuen Cache-Protokolls benutzt wird, um den Datenverkehr im gemeinsamen Bus zu reduzieren.
  • Es wurde ein Mehrrechnersystem beschrieben, das eine Vielzahl von Rechnern hat, von denen jeder über einen entsprechenden privaten Cache mit einem gemeinsamen Speicher und einem gemeinsamen Bus verbunden ist, wobei jeder private Cache enthält:
  • Speichermittel zur Speicherung von gemeinsamen Daten, die in Speicherblöcken angeordnet sind, wobei einige der Speicherblökke ein 'Working Set' für häufigen Zugriff durch den jeweiligen Rechner sind;
  • eine Steuerung, um Signale in dem gemeinsamen Bus zu überwachen, und wenn ein gemeinsamer Datenteil in einem der anderen privaten Caches geändert wird, eines der beiden Datenkonsistenzverfahren für den gemeinsamen Datenteil in seinem privaten Cache durchzuführen, um Unstimmigkeiten bei dem gemeinsamen Datenteil in den privaten Caches zu beheben, eine Verbesserung, bei der die privaten Caches außerdem enthalten:
  • Mittel, um zu bestimmen, ob die Adresse eines gemeinsamen Datenteils in seinem Cache der Adresse eines Speicherblocks, der zu dem Working Set gehört, entspricht oder nicht, wenn ein Datenkonsistenzverfahren für den gemeinsamen Datenteil erforderlich ist; und
  • Konsistenzerhaltungsmittel, damit eines der beiden Datenkonsistenzerhaltungsverfahren ausgeführt werden kann, was von dem Ergebnis der Bestimmungsmittel abhängt;
  • wobei die Bestimmungsmittel enthalten können:
  • Mittel, um die Adressen von einer Vielzahl der Speicherblöcke zu speichern, die zu dem Working Set gehören; und
  • Mittel, um zu bestimmen, ob die Adresse des Speicherblocks, zu dem der gemeinsame Datenteil gehört, auf die von seinem Rechner zugegriffen wird, mit den Adressen, die in den Speichermitteln gespeichert wurden, übereinstimmt oder nicht.
  • Wenn der entsprechende Rechner in dem betreffenden privaten Cache auf Daten in einem Speicherblock zugreift, der nicht zum Working Set des betreffenden Caches gehört, kann der Speicherblock zu dem Working Set hinzugefügt werden, und wenn der entsprechende Rechner in dem betreffenden privaten Cache nicht auf Daten in einem Speicherblock zugreift, der zu dem Working Set gehört, während der entsprechende Rechner auf Daten in einem oder mehreren anderen Speicherblöcken in einer zuvor bestimmten Anzahl zugreift, kann dieser Speicherblock aus dem Working Set gelöscht werden.
  • Die Datenkonsistenzprozeduren können eine Annullierungsprozedur enthalten, wobei, wenn ein gemeinsamer Datenteil in den Speichermitteln verändert wird, der Status des gemeinsamen Datenteils in einen exklusiven Status geändert wird, und der gemeinsame Datenteil oder gemeinsame Datenteile in einem oder mehreren privaten Caches annulliert wird bzw. werden, und eine Aktualisierungsprozedur, wobei, wenn ein gemeinsamer Datenteil in einem privaten Cache geändert wird, der gemeinsame Datenteil oder die gemeinsamen Datenteile in einem oder mehreren privaten Caches entsprechend aktualisiert wird bzw. werden, falls erforderlich, oder den Status des gemeinsamen Datenteils im privaten Cache in einen exklusiven Status zu ändern, wenn kein anderer privater Cache die gemeinsamen Daten enthält.
  • Wenn diese Bestimmungsmittel bestimmen, daß Daten innerhalb der Datenerhaltungsprozeduren in einem Speicherblock sind, der zu dem Working Set gehört, werden die Prozeduren zur Aktualisierung durchgeführt, und wenn die Bestimmungsmittel bestimmen, daß Daten innerhalb der Datenerhaltungsprozeduren in einem Speicherblock sind, der nicht zum Working Set gehört, werden die Prozeduren zur Annullierung durchgeführt.

Claims (7)

1. Cache-Speicheranordnung (C1), um einen Rechner (P1) und einen gemeinsamen Bus (Bus1) in einem Mehrrechner- Datenverarbeitungssystem miteinander zu verbinden, wobei das System eine Vielzahl von Rechnern (P1-Pn) enthält, die über ähnliche Cache-Speicheranordnungen (C1-Cn) mit dem gemeinsamen Bus (Bus1) verbunden sind;
wobei die Cache-Speicheranordnung enthält:
- Speichermittel (4), um die gemeinsamen Daten, die in Speicherblöcken angeordnet sind, zu speichern; einige der Speicherblöcke ein 'Working Set' für häufigen Zugriff durch den Rechner bieten;
- eine Steuerung (3), um die Signale im gemeinsamen Bus zu überwachen, und, wenn ein gemeinsamer Datenteil in einer anderen Cache-Speicheranordnung geändert wird, eine von zwei Datenkonsistenzprozeduren für den gemeinsamen Datenteil durchzuführen;
gekennzeichnet durch:
- Mittel, um zu bestimmen (5), ob die Adresse eines gemeinsamen Datenteils, der in den Speichermitteln gespeichert ist, der Adresse eines Speicherblocks in dem Working Set entspricht oder nicht, wenn eine Datenkonsistenzprozedur für den gemeinsamen Datenteil durchgeführt werden muß, wobei die Steuerung auf die Mittel zur Bestimmung reagiert;
und die Steuerung Mittel enthält, um eine der beiden Datenkonsistenzprozeduren in Abhängigkeit des Ergebnisses durchzuführen, das durch die Mittel zur Bestimmung erzielt wurde.
2. Cache-Speicheranordnung gemäß Anspruch 1, wobei die Mittel zur Bestimmung enthalten:
- Mittel, um die Adressen (WSM, 9) der Speicherblöcke zu speichern, die zu dem Working Set gehören;
- Mittel, um zu bestimmen (7), ob die Adresse des Speicherblocks, zu dem der gemeinsame Datenteil gehört, für den eine der beiden Datenkonsistenzprozeduren durchzuführen ist, zu einer der Adressen paßt oder nicht, die in den Adreßspeichermitteln (WSH,9) gespeichert sind.
3. Cache-Speicheranordnung gemäß Anspruch 1 oder Anspruch 2, die außerdem Mittel enthält, um zu veranlassen, daß ein Speicherblock in das Working Set eingefügt wird, wenn der Rechner (P1) auf Daten in diesem Speicherblock zugreift; und
Mittel, um zu veranlassen, daß ein bestimmter Speicherblock aus dem Working Set gelöscht wird, wenn der Rechner (P1) nicht auf Daten in diesem bestimmten Speicherblock zugreift, während der Rechner (P1) auf Daten in anderen Speicherblöcken entsprechend einer zuvor bestimmten Häufigkeit zugreift.
4. Cache-Speicheranordnung gemäß einem vorhergehenden Anspruch, die außerdem enthält:
Datenkonsistenz-Annullierungsmittel, um den Status des gemeinsamen Datenteils in einen exklusiven Status zu ändern und zu veranlassen, daß der gemeinsame Datenteil, der in den Speichermitteln der anderen Cache-Speicheranordnungen in dem Mehrrechner-Datenverarbeitungssystem gespeichert ist, annulliert wird, wenn ein gemeinsamer Datenteil in den Speichermitteln (4) annulliert wird, und ein Datenkonsistenz-Aktualisierungsmittel, um zu veranlassen, daß der gemeinsame Datenteil in den Speichermitteln der anderen Cache-Speicheranordnungen in dem Mehrrechner- Datenverarbeitungssystem entsprechend aktualisiert wird, und wenn keine andere Cache-Speicheranordnung den gemeinsamen Datenteil gespeichert hat, deren Status in einen exklusiven Status zu ändern, wenn ein gemeinsamer Datenteil geändert wird.
5. Cache-Speicheranordnung gemäß Anspruch 4, die außerdem Mittel enthält, um die Datenkonsistenzprozedur in Form einer Annullierung auszuführen, wenn bestimmt wird, daß der gemeinsame Datenteil nicht zu dem Working Set gehört, und Mittel, um eine Datenkonsistenzprozedur in Form einer Aktualisierung durchzuführen, wenn bestimmt wird, daß der gemeinsame Datenteil zu dem Working Set gehört.
6. Ein Mehrrechner-Datenverarbeitungssystem mit einer Vielzahl von Rechnern (P1-Pn);
einem gemeinsamen Bus (BUS1) und einer Vielzahl von Cache- Speicheranordnungen (C1-Cn) gemäß einem vorhergehenden Anspruch, wobei jeder Rechner über eine Cache- Speicheranordnung (C1-Cn) mit dem gemeinsamen Bus verbunden ist.
7. Ein Mehrrechner-Datenverarbeitungssystem, das eine Vielzahl von Rechnern (P1-Pn) hat, von denen jeder über einen entsprechenden privaten Cache (C1-Cn) mit einem gemeinsamen Speicher (2) und einem gemeinsamen Bus (BUS1) verbunden ist,
mit
Speichermitteln, um die gemeinsamen Daten, die in Speicherblöcken angeordnet sind, zu speichern, wobei einige der Speicherblöcke einen 'Working Set' für den häufigen Zugriff durch den jeweiligen Rechner darstellt;
einer Steuerung (3), um Signale in dem gemeinsamen Bus zu überwachen, und, wenn ein gemeinsamer Datenteil in einem der anderen privaten Caches geändert wird, eine der beiden Arten des Datenkonsistenzverfahrens für den gemeinsamen Datenteil in seinem privaten Cache auszuführen, um Unstimmigkeiten bei dem gemeinsamen Datenteil zwischen den privaten Caches zu beheben;
dadurch gekennzeichnet, daß der private Cache außerdem enthält:
Mittel, um zu bestimmen (5), ob die Adresse eines gemeinsamen Datenteils in seinem privaten Cache der Adresse eines Speicherblocks in dem Working Set entspricht oder nicht, wenn eine Datenkonsistenzprozedur für den gemeinsamen Datenteil durchgeführt werden muß; und
Konsistenzerhaltungsmittel, um eines der beiden Datenkonsistenzerhaltungsverfahren auszuführen, was von dem Ergebnis abhängt, das von den Bestimmungsmitteln erzielt wird.
DE69130580T 1990-01-16 1991-01-04 Cache-Speicheranordnung Expired - Fee Related DE69130580T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004668A JPH061463B2 (ja) 1990-01-16 1990-01-16 マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法

Publications (2)

Publication Number Publication Date
DE69130580D1 DE69130580D1 (de) 1999-01-21
DE69130580T2 true DE69130580T2 (de) 1999-07-15

Family

ID=11590292

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69130580T Expired - Fee Related DE69130580T2 (de) 1990-01-16 1991-01-04 Cache-Speicheranordnung

Country Status (4)

Country Link
US (1) US5228136A (de)
EP (1) EP0438211B1 (de)
JP (1) JPH061463B2 (de)
DE (1) DE69130580T2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5161219A (en) * 1989-01-13 1992-11-03 International Business Machines Corporation Computer system with input/output cache
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
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
GB9118312D0 (en) * 1991-08-24 1991-10-09 Motorola Inc Real time cache implemented by dual purpose on-chip memory
US5627967A (en) * 1991-09-24 1997-05-06 International Business Machines Corporation Automated generation on file access control system commands in a data processing system with front end processing of a master list
EP0636256B1 (de) 1992-03-31 1997-06-04 Seiko Epson Corporation Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5553266A (en) * 1992-04-24 1996-09-03 Digital Equipment Corporation Update vs. invalidate policy for a snoopy bus protocol
DE69323790T2 (de) * 1992-04-29 1999-10-07 Sun Microsystems, Inc. Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5511226A (en) * 1992-08-25 1996-04-23 Intel Corporation System for generating snoop addresses and conditionally generating source addresses whenever there is no snoop hit, the source addresses lagging behind the corresponding snoop addresses
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
EP1107111A3 (de) 1992-12-31 2002-02-06 Seiko Epson Corporation System und Verfahren zur Änderung der Namen von Registern
US5664153A (en) * 1993-04-21 1997-09-02 Intel Corporation Page open/close scheme based on high order address bit and likelihood of page access
FR2707774B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
FR2707776B1 (fr) 1993-07-15 1995-08-18 Bull Sa Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé.
FR2707777B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Ensemble informatique à mémoire partagée.
FR2707778B1 (fr) * 1993-07-15 1995-08-18 Bull Sa NÓoeud de processeurs.
US5630095A (en) * 1993-08-03 1997-05-13 Motorola Inc. Method for use with a data coherency protocol allowing multiple snoop queries to a single snoop transaction and system therefor
US5581793A (en) * 1993-08-24 1996-12-03 Micron Electronics, Inc. System for bypassing setup states in a bus operation
US5655102A (en) * 1993-09-29 1997-08-05 Silicon Graphics, Inc. System and method for piggybacking of read responses on a shared memory multiprocessor bus
US5535352A (en) * 1994-03-24 1996-07-09 Hewlett-Packard Company Access hints for input/output address translation mechanisms
US5651134A (en) * 1994-10-26 1997-07-22 Ncr Corporation Method for configuring a cache memory to store only data, only code, or code and data based on the operating characteristics of the application program
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
US5787476A (en) 1995-05-05 1998-07-28 Silicon Graphics, Inc. System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer
US6106565A (en) * 1997-02-27 2000-08-22 Advanced Micro Devices, Inc. System and method for hardware emulation of a digital circuit
US5923898A (en) * 1997-05-14 1999-07-13 International Business Machines Corporation System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched
US6023747A (en) * 1997-12-17 2000-02-08 International Business Machines Corporation Method and system for handling conflicts between cache operation requests in a data processing system
US6128706A (en) * 1998-02-03 2000-10-03 Institute For The Development Of Emerging Architectures, L.L.C. Apparatus and method for a load bias--load with intent to semaphore
US6415358B1 (en) 1998-02-17 2002-07-02 International Business Machines Corporation Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US6292872B1 (en) 1998-02-17 2001-09-18 International Business Machines Corporation Cache coherency protocol having hovering (H) and recent (R) states
US6272603B1 (en) 1998-02-17 2001-08-07 International Business Machines Corporation Cache coherency protocol having hovering (H), recent (R), and tagged (T) states
US6263407B1 (en) 1998-02-17 2001-07-17 International Business Machines Corporation Cache coherency protocol including a hovering (H) state having a precise mode and an imprecise mode
US6253285B1 (en) 1998-04-16 2001-06-26 Compaq Computer Corporation Method and apparatus for minimizing dcache index match aliasing using hashing in synonym/subset processing
US6370622B1 (en) 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
US6484238B1 (en) 1999-12-20 2002-11-19 Hewlett-Packard Company Apparatus and method for detecting snoop hits on victim lines issued to a higher level cache
US6631474B1 (en) * 1999-12-31 2003-10-07 Intel Corporation System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching
JP2002032265A (ja) * 2000-07-14 2002-01-31 Hitachi Ltd キャッシュ・アクセス制御方式およびデータ処理システム
US7664823B1 (en) * 2003-09-24 2010-02-16 Cisco Technology, Inc. Partitioned packet processing in a multiprocessor environment
JP4912790B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 システムコントローラ,スヌープタグ更新方法および情報処理装置
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3848234A (en) * 1973-04-04 1974-11-12 Sperry Rand Corp Multi-processor system with multiple cache memories
US3840862A (en) * 1973-09-27 1974-10-08 Honeywell Inf Systems Status indicator apparatus for tag directory in associative stores
US3938097A (en) * 1974-04-01 1976-02-10 Xerox Corporation Memory and buffer arrangement for digital computers
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
US4843542A (en) * 1986-11-12 1989-06-27 Xerox Corporation Virtual memory cache for use in multi-processing systems
JPH0668735B2 (ja) * 1987-02-09 1994-08-31 日本電気アイシーマイコンシステム株式会社 キヤツシユメモリ−
US4959777A (en) * 1987-07-27 1990-09-25 Motorola Computer X Write-shared cache circuit for multiprocessor system
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
EP0343567A3 (de) * 1988-05-25 1991-01-09 Hitachi, Ltd. Mehrprozessoranordnung und Cache-Speichervorrichtung zur Verwendung in dieser Anordnung
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors

Also Published As

Publication number Publication date
EP0438211A3 (en) 1992-08-05
EP0438211B1 (de) 1998-12-09
JPH061463B2 (ja) 1994-01-05
EP0438211A2 (de) 1991-07-24
US5228136A (en) 1993-07-13
DE69130580D1 (de) 1999-01-21
JPH03217963A (ja) 1991-09-25

Similar Documents

Publication Publication Date Title
DE69130580T2 (de) Cache-Speicheranordnung
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69130583T2 (de) Cache-Steuerungsanordnung
DE3856451T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem
DE69900797T2 (de) Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE3586389T2 (de) Dynamisch zugeordnete lokale/globale speicheranordnung.
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69031086T2 (de) Cache-Speicherinhaltssteuerung in Mehrprozessornetzwerken
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69116953T2 (de) Methode und Vorrichtung zur dynamischen Ermittlung und Wegfindung für nichtgleichförmigen Verkehr, in parallelen, gepufferten, mehrstufigen Verbindungsnetzwerken
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69322064T2 (de) Verfahren und System zur Zuteilung mehrerer Befehle in einem superskalaren Prozessorsystem in einem einzigen Zyklus
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE69029995T2 (de) Multiprozessor mit relativ atomaren Befehlen
DE69023568T2 (de) Cache-Speicheranordnung.
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE69721394T2 (de) Verfahren und Vorrichtung für einen Kohärenzumwandler mit begrenztem Speicher zur Verbindung von Rechnersystem-Kohärenzdomänen
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee