DE3650021T2 - Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung. - Google Patents
Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung.Info
- Publication number
- DE3650021T2 DE3650021T2 DE3650021T DE3650021T DE3650021T2 DE 3650021 T2 DE3650021 T2 DE 3650021T2 DE 3650021 T DE3650021 T DE 3650021T DE 3650021 T DE3650021 T DE 3650021T DE 3650021 T2 DE3650021 T2 DE 3650021T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- information
- line
- sdid
- flush
- 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
Links
- 230000015654 memory Effects 0.000 claims description 67
- 238000000034 method Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 4
- 239000013256 coordination polymer Substances 0.000 description 48
- 238000013461 design Methods 0.000 description 13
- 238000011010 flushing procedure Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000011109 contamination Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100328518 Caenorhabditis elegans cnt-1 gene Proteins 0.000 description 1
- 101001004623 Homo sapiens Lactase-like protein Proteins 0.000 description 1
- 102100025640 Lactase-like protein Human genes 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung liegt auf dem Gebiet der Datenverarbeitung. Sie ist insbesondere auf die Steuerung des gemeinsamen Zusammenhangs von Daten gerichtet, die von einer Vielzahl von Zentraleinheiten mit privaten Cache-Speichern in einem Multiverarbeitungssystem benutzt werden.
- Die meisten Hochleistungsprozessoren, abgekürzt als (CPen), (CP = central processor), haben private, durch Hardware verwaltete Hochleistungspufferspeicher, die oft als Cache- Speicher bekannt sind. Cache-Speicher sind gewöhnlich für die Benutzer des Systems transparent. In einem Mehrprozessorsystem (MP) können viele CPen den gleichen Hauptspeicher (HS) gemeinsam benutzen, und für jeden CP ist es stets nötig, die zuletzt aktualisierte Version der Daten zu erhalten, wenn ein Zugriff herausgegeben wird. Diese Forderung beansprucht die Hardwaresteuerung der Datenkonsistenz unter Cache-Speichern, was oft als das Cache-Kohärenzproblem bekannt ist.
- Es gibt verschiedene Arten von Cache-Speichern in MP-Systemen nach dem Stand der Technik. Eine Art von Cache-Speicher ist der Durchspeicher-Cache-Speicher, abgekürzt als (ST = store through) der einen CP nicht stört, der Daten direkt in den Hauptspeicher (oder einen Cache-Speicher der zweiten Ebene) speichert, um stets Änderung von Daten für die Speicherhierarchie der unteren Ebene zu aktualisieren. Bei dem Aktualisieren eines Speichers für den Hauptspeicher können geeignete Querrückfragemaßnahmen, abgekürzt als (XI= cross interrogate) stattfinden, um die Kopien der berührten Cache-Speicherzeile aus den anderen Cache- Speichern außer der bei dem CP ungültig zu machen, der das Speichern einleitete. Übliche ST-Entwürfe erfordern bedeutende Bandbreiten des Hauptspeichers, um die Datenspeicher (, die normalerweise im Durchschnitt zwischen 10 bis 20% aller CP-Speicheranforderungen ausmachen,) einzugliedern.
- Eine andere Art des Cache-Speicherentwurfs ist der Registrierspeicher, abgekürzt als (SIC = store in cache). SIC sind in den US Patenten 3 735 360 von Anderson et al. und 3 771 137 von Barner et al. beschrieben. Ein SIC-Cache- Speicherverzeichnis ist im einzelnen im US Patent 4 394 731 von Flusche et al. beschrieben, bei dem die gemeinsame MP-Benutzbarkeit jeder Zeile in einem SIC gesteuert wird durch ein Exklusiv/Nur Lesen-(EX/RO)-Markierbit. Der Hauptunterschied zwischen ST-und SIC-Cache-Speichern besteht darin, daß alle Speicherungen bei SIC zu dem Cache-Speicher selbst geleitet werden (, was einen Speicherfehlschlag verursachen kann, wenn die gespeicherte Zeile sich nicht in dem SIC-Cache-Speicher befindet). Gewöhnlich werden Modifikationen der Cache- Speicherzeile für den HS nur aktualisiert, wenn die Zeilen aus dem Cache-Speicher ersetzt werden. Als Folge verringert der SIC-Entwurf die Bandbreitenforderung für den Hauptspeicher auf Kosten einer komplexeren Kohärenzsteuerung und der Erschwerungen von XI-Hinauswürfen (XI-Hinauswürfe passieren, wenn ein Datenzugriff eines CPs die Zeile in dem Cache-Speicher eines anderen CPs modifiziert vorfindet.)
- Es wurden verschiedene Steuermechanismen zur Cache- Speicherkohärenz entwickelt. Typische Beispiele sind: Globales Verzeichnis, Rundspruch und Speichermarkierung. Bei dem Verfahren Globales Verzeichnis enthalten die Speichersteuerelemente, abgekürzt als (SCEe = storage control elements) Kopien der CP-Cache-Speicherverzeichnisse, so daß XI-Entscheidungen ziemlich wirkungsvoll getroffen werden können. Das Rundspruch-Verfahren schickt Speicheranforderungen von CPen an alle anderen CPen, wenn Zugriffe auf die lokalen Cache- Speicher nicht erfolgen können. Das Verfahren der Speichermarkierung markiert jede Zeile im Hauptspeicher, um anzugeben (oder zu approximieren), welche CPen die Zeile augenblicklich in ihren Cache-Speichern haben.
- Alle die oben erwähnten Verfahren zur Steuerung der Cache- Speicherkohärenz haben Nachteile, wenn die Anzahl der CPen wächst oder wenn es eine körperliche Trennung zwischen CP-Gruppen gibt, insbesondere, wenn Hochleistungs-CPen betrachtet werden.
- Eine andere Alternative besteht darin, Software die Kohärenz von bestimmten Daten steuern zu lassen, für welche eine wirksame Implementierung von XI-Steuerung unnatürlich ist. Die Idee besteht darin, Zeilen aus dem privaten Cache-Speicher auszuschwemmen, wenn die Gefahr der Datenverunreinigung durch Speicher anderer CPen besteht. Solch eine Verunreinigung kann auftreten, wenn beispielsweise ein Objekt durch eine Task, die auf dem CP läuft, freigegeben wird und daher Tasks auf anderen CPen das Betriebsmittel erhalten können und es modifizieren. Bei einigen Computerarchitekturen (z. B. der IBM 801) werden Instruktionen angeboten, um Datenzeilen aus einem Cache-Speicher auszuschwemmen. Solche Ausschwemm-Instruktionen für den Cache- Speicher werden aufgebaut durch Angeben von Adreßbereichen, in denen Zeilen durch den Cache-Speicher zu ersetzen sind. Solche Lösungen zwingen die Software (z. B. den Compilierer oder den Programmierer), sich die Adreßbereiche für das Ausschwemmen genau zu merken. Adreßbereich ist eine nicht-semantische Angabe von logischen Objekten in der Software. Daher machen solche Ausschwemm-Instruktionen für den Cache-Speicher die Speicherung für die Software weniger transparent.
- Es sind verschiedene Verfahren für Steuerungen der Cache- Speicherkohärenz bekannt, jedoch ist dem Anmelder kein Stand der Technik bekannt, der auf eine Cache-Speicherkohärenz mit Verriegelung gerichtet ist. Das Folgende ist repräsentativer Stand der Technik für Vorrichtungen zur Cache- Speichersteuerung.
- US Patent 4 484 267 von Fletcher befaßt sich mit bestimmten Veränderungen der üblichen Steuervorrichtungen zur Cache- Speicherkohärenz. Es versucht, dynamisch zu bestimmen, ob eine Cache-Speicherzeile möglicherweise einer zukünftigen Querrückfrage unterworfen wird und versucht, das Durchspeichern in solchen Zeilen vorzunehmen, um die Erschwerungen des Pingpongs zu verringern. Bei diesem Verfahren wird eine übliche globale SCE-Verzeichnissteuerung benötigt, um Annullierungen vorzunehmen. Bei der vorliegenden Erfindung jedoch wird ein Cache-Speicherentwurf (plus ein zweckmäßiger Systementwurf) dargelegt, bei dem die globale XI-Steuerung eliminiert werden kann, so daß stark gekoppelte Mehrprozessorsysteme sich überhaupt nicht um Querrückfragen zu kümmern brauchen.
- EP-A-0 088 239 verringert den Aufwand der Querrückfrage und basiert auf der Verwendung eines Taskidentifizierungs (TID)- Kennzeichens für jeden Zeileneintrag des Verzeichnisses, um die Task zu identifizieren, die die Zeile anforderte, und basiert auf einer Beobachtung, daß ein XI-Treffer einer Zeile in einem lokalen Cache-Speicher eine Anzeige dafür ist, daß andere Zeilen in dem lokalen Cache-Speicher, die der gleichen TID zugeordnet sind, wahrscheinlich in der nahen Zukunft durch den entfernten CP angefordert werden, der den letzten XI-Treffer verursachte. Diese Zeilen in dem lokalen Cache-Speicher, die der gleichen TID zugeordnet sind wie eine lokale Zeile, die jüngst einen XI-Treffer empfing, werden anschließend ausgeschwemmt.
- US Patent 4 293 910 von Flusche et al. befaßt sich mit der Steuerung von Schutzschlüsseln. Schutzschlüssel sind für das Feststellen unautorisierter Zugriffe auf oder Modifikationen von Speicherdaten benutzt worden. In der vorliegenden Erfindung jedoch werden Speicherkennzeichen benutzt, um die Operationen für die Cache-Speicherkohärenz zu vereinfachen. Es gibt keine direkte Beziehung zwischen Schutzschlüsseln und dem vorgeschlagenen Schema von Speicherkennzeichen.
- US Patent 4 400 770 von Chan et al. befaßt sich mit dem sogenannten "Synonym-Problem". Das Synonym-Problem wird durch die Möglichkeit von mehr als einer (z. B. 4) der Kongruenzklassen des Cache-Speichers verursacht, die durch die "virtuellen" Adressen ausgewählt werden, die die gleiche physikalische (absolute) Zeilenadresse darstellen. Dieses Problem hat etwas zu tun mit der Seitengröße, der Cache-Speichergröße und der Zeilengröße des Cache-Speichers Es ist nicht auf das Problem der Cache-Speicherkohärenz in Mehrprozessorsystemen gerichtet
- US Patent 4 400 773 von Brown et al. befaßt sich mit dem Problem der E-/A-Kanalserialisierung. Es benutzt die Software- Steuerblöcke UCB, um bestimmte Verriegelungsbits zu speichern und benutzt den Befehl Teste Unterkanal, um die Serialisierungsbedingungen zu überprüfen. Die vorliegende Erfindung jedoch befaßt sich mit Cache-Speichern und ist nicht speziell mit dem Serialisierungsproblem von Kanaloperationen auf bestimmten E-/A-Geräten befaßt.
- US Patent 4 399 504 von Obermarck et al. befaßt sich mit Datenbankverriegelung in Mehrfachsystemen. Sein Brennpunkt ist der Algorithmus-Aspekt für ein Softwarepaket. Die vorliegende Erfindung jedoch nimmt bestimmte Implementierungen zur Softwaresynchronisation (z. B. Datenbankverriegelung) an und befaßt sich nicht wirklich damit, wie die Softwareverriegelung implementiert wird.
- US Patent 4 099 243 von Palumbo befaßt sich mit der Serialisierung von Operationen an einem Speicherblock von verschiedenen Geräten aus mittels eines Verriegelungssystems. Dies ist ähnlich der Datenbankverriegelung, ausgenommen, daß es sich mit Speicherblöcken befaßt und hauptsächlich durch Hardware implementiert ist. Ähnlich den US Patenten 4 400 773 und 4 399 504 oben befaßt sich Palumbo mit der Serialisierung von Geräten und implementiert verriegelungsartige Einrichtungen.
- Die vorliegende Erfindung setzt eine bestimmte vorhandene Synchronisation von Objekten in der Systemsoftware voraus. Cache-Speicherprotokolle werden behandelt, die die Cache- Speicherkohärenz garantieren, wobei die Richtigkeit der Softwaresynchronisation vorausgesetzt wird. Daher befassen sich Palumbos Erfindung und die vorliegende Erfindung mit verschiedenen Problemen in unterschiedlichen Weisen.
- Es ist ein Ziel der Erfindung, eine verbesserte Vorrichtung für die Cache- Speicherkohärenz anzugeben.
- Es ist ein anderes Ziel der Erfindung, eine verbesserte Vorrichtung für die Cache-Speicherkohärenz anzugeben, die auf der Verriegelung basiert.
- Es ist noch ein anderes Ziel der Erfindung, eine verbesserte Vorrichtung für die Cache-Speicherkohärenz anzugeben durch Benutzen von Steuerdomänenidentifizierungen, abgekürzt als (CDIDen = control domain identifications) von Software, die von jeder Cache-Speicherzeile eingeschlossen werden.
- Es ist noch ein anderes Ziel der Erfindung, eine verbesserte Vorrichtung für die Cache-Speicherkohärenz anzugeben, ohne übliche Querrückfragen (XI) durchzuführen.
- Es ist ein weiteres Ziel der Erfindung, eine verbesserte Vorrichtung für die Cache-Speicherkohärenz anzugeben, die Softwareprotokolle benutzt zur Steuerung des Ausschwemmens freigegebener Cache- Speicherzeilen unter Benutzung von Domänenidentifizierungen und Taskidentifizierungen auf hoher Ebene.
- Gemäß der vorliegenden Erfindung wird eine neue Anordnung und Steuerung bereitgestellt, um in Cache-Speicherverzeichnissen bestimmte logische Identifizierungen von Software-Objekten und/oder Benutzertasks zu verbinden. Daher können semantische Protokolle durch die Software benutzt werden, um Ausschwemmen des Cache-Speichers durchzuführen, um die Cache-Speicherkohärenz aufrechtzuerhalten. Dies eliminiert die Notwendigkeit der XI-Steuerung in bestimmten Situationen, in denen wirksame Implementierungen schwierig zu erreichen sind.
- Die Erfindung, die in den angefügten Patentansprüchen definiert ist, wird unten im einzelnen unter Bezugnahme auf die Zeichnungen genauer beschrieben, von denen:
- Fig. 1 ein Blockschaltbild ist, das den Cache-Speicher und das das Verzeichnis in einem Mehrrechnersystem zeigt,
- Fig. 2 ein genaueres Blockschaltbild eines modifizierten üblichen, assoziativen Cache-Speichers mit einer Vierweggruppe ist. In diesem Diagramm sind die neuen Felder CDID, UIDC1 und UIDC2 in jedem Verzeichniseintrag und einige zugehörige Steuerschaltungen dargestellt,
- Fig. 3 die Erkennungsschaltungen für Treffer/Fehlschlag des CP-Cache-Speicherverzeichnisses zeigt,
- Fig. 4 die Kennzeichenbits in jedem Verzeichniseintrag des CP-Cache-Speichers darstellt,
- Fig. 5 die Steuerschaltungen für FLUSH-Ausführung bei jeder Kongruenzklasse zeigt,
- Fig. 6 ein Flußdiagramm der gesamten Ausführungsschritte von FLUSH enthält und
- Fig. 7 ein Flußdiagramm für die Ausführung von FLUSH bei einer Kongruenzklasse des Cache-Speichers enthält, wenn in der Kongruenzklasse Zeileneinträge des Cache- Speichers gefunden werden, die mit den durch die FLUSH-Parameter angegebenen Bedingungen übereinstimmen.
- Die Erfindung bezieht sich auf ein Verfahren zum Verbinden in Cache-Speicherverzeichnissen der Steuer-Domänen-Identifizierungen, abgekürzt als (CDIDen = Control Domains Identifications) der Software, die in jeder Cache-Speicherzeile eingeschlossen sind. Durch die Benutzung solch einer Maßnahme und/oder das Hinzufügen von Identifizierungen von Benutzern, die die Zeilen aktiv benutzen, wird die Cache-Speicherkohärenz bestimmter Daten gesteuert ohne Durchführen üblicher Querrückfragen (XI), wenn Zugriffe auf solche Objekte richtig synchronisiert sind mit Parallelbetriebssteuerungen vom Verriegelungstyp. Software- Protokolle für die Cache-Speicher werden für den Kern der Betriebsmittel geliefert, um das Ausschwemmen freigegebener Cache-Speicherzeilen zu steuern. Die Parameter dieser Protokolle sind Domänen-Identifizierungen und Task-Identifizierungen.
- Die vorliegende Erfindung stellt eine neue Anordnung und Steuerung bereit, um in Cache-Speicherverzeichnissen bestimmte logische Identifizierungen von Software-Objekten und/oder Benutzer-Tasks zu verbinden. Mit solch einer Maßnahme können semantische Protokolle durch die Software benutzt werden, um das Ausschwemmen des Cache- Speichers durchzuführen, um die Cache- Speicherkohärenz aufrecht zu erhalten. Dies eliminiert die Notwendigkeit der XI-Steuerung in bestimmten Situationen, in denen wirksame Implementierungen schwierig zu erreichen sind.
- Die Grundidee der auf der Verriegelung basierenden Kohärenzsteuerung des Cache-Speichers ist folgende Softwarezugriffe auf gemeinsam benutzte Daten werden oft durch bestimmte Vorrichtungen für die Zugriffsberechtigung gesteuert. Verriegelung ist ein typisches Verfahren für solch eine Steuerung der Softwaresynchronisation. Einem Benutzer muß eine Verriegelung gewährt werden, um auf ein Objekt zuzugreifen. Nach dem Benutzen des Objektes gibt der Benutzer die Verriegelung frei. Es gibt verschiedene Arten der Verriegelung. Hier besteht das Interesse hauptsächlich an einer solchen Verriegelung, daß, wenn ein Benutzer ein Objekt modifiziert, die Verriegelung des Objektes Ausschließlichkeit garantieren sollte (d. h., dieser Benutzer ist der einzige, der auf dies Objekt zugreifen kann, bevor das Objekt durch den Benutzer freigegeben wird). Als Folge wird einem Benutzer eine AUSSCHLIESSLICHE Verriegelung für ein Objekt nur gewährt, wenn alle anderen Benutzer ihre Verriegelungen für dieses Objekt freigegeben haben.
- Es wird angenommen, daß der HS in BLÖCKE von der Größe einer Potenz von 2 (z. B. 256 Bytes) unterteilt ist. Die BLOCK-Größe sollte zumindest so groß sein wie die Größen aller einbezogenen Zeilen des Cache-Speichers. Daher kann eine Zeile nicht in zwei BLÖCKE getrennt werden. Objekte mit den Blockzusammenhang störender Eigenschaft werden betrachtet. Ein Objekt hat eine den Blockzusammenhang störende Eigenschaft, wenn zu irgendeinem Zeitpunkt die HS-Blöcke, die zugeordnet wurden, um dieses Objekt zu enthalten, keine irgendwelchen zugreifbaren Daten enthalten sollten, die nicht zu dem Objekt gehören. Soweit die Cache- Speicherkohärenz betroffen ist, muß man sich vergewissern, daß eine Zeile in dem Cache-Speicher aus dem Cache-Speicher herausgeworfen wird, wenn irgendeine Möglichkeit besteht, daß diese Zeile durch andere CPen modifiziert wird und daß die Modifizierungen in einer Zeile im Cache-Speicher stets für den HS aktualisiert werden, bevor auf diese Zeile von anderen CPen zugegriffen werden kann. Diese Bedingungen können erfüllt sein, wenn Zeilen, die zu einem Block gehören, aus dem Cache-Speicher ausgeschwemmt werden (mit modifizierten Zeilen, die für den HS aktualisiert wurden), sobald kein aktiver Benutzer des CPs vorhanden ist, der noch eine Verriegelung für das Objekt, das diesen Block einschließt, innehat. Es hat Architekturen gegeben, z. B. den Computer IBM 801, in dem Instruktionen vorgesehen sind, um Zeilen aus dem Cache-Speicher auszuschwemmen. Jedoch benutzen solche Instruktionen für das Ausschwemmen von Cache- Speicherzeilen Adreßbereiche, um die auszuschwemmenden Zeilen anzugeben. Dies bürdet der Software eine Last auf, sich die Adreßbereiche der Softwareobjekte genau zu merken, was auch das Speichersystem für die Software weniger transparent macht.
- Das neue Verfahren des Einbettens von Identifizierungen der Objekte in die Cache-Speicherverzeichnisse wird hier aufgegriffen. Dieses sorgt für Instruktionen zum Ausschwemmen des Cache- Speichers, die semantische Spezifikationen von Zielobjekten aufnehmen. Es werden auch Verfahren bereitgestellt, um die Häufigkeiten von Cache-Speicherausfällen aufgrund unnötigen Ausschwemmens von Zeilen zu verringern, die gleichzeitig durch viele aktive Benutzer auf dem gleichen CP gemeinsam benutzt werden.
- Als erstes werden die Zeilen in dem HS in zwei Typen klassifiziert. Zeilen vom Typ I sind diejenigen, für die die Cache-Speicherkohärenz durch FLUSH-Protokolle gesteuert wird. Zeilen vom Typ 11 sind der Rest. Die Zeilen vom Typ 11 der Cache-Speicherkohärenz können durch andere Mittel gesteuert werden. Im folgenden werden, wenn es nicht anders angegeben wird, nur Zeilen vom Typ I behandelt. Ebenso wird, wenn das nicht anders angegeben ist, die nachfolgende Erfindung unter Benutzung von SIC beschrieben, in denen MODIFIZIERTE Bits in dem Cache-Speicherverzeichnis benutzt werden. Eine Cache- Speicherzeile mit einem modifizierten Bit EIN enthält Modifizierungen, die noch nicht für den HS aktualisiert wurden.
- Jeder HS-BLOCK wird dynamisch einer Steuerdomäne, abgekürzt als (CD = control domain), zugeordnet. Jede CD hat eine eindeutige Identifizierung (CDID) . Die maximale Anzahl von CDen, die in dem MP-System vorhanden sind, wird bestimmt durch die Anzahl von Bits, die verfügbar sind, um jede CDID darzustellen. Viele BLÖCKE können zu der gleichen CD gehören. Für jeden Speicherzugriff eines CP sollte die entsprechende CDID der Hardware bekannt sein. Die CDIDen können in Adreßübersetzungstabellen (z. B. Segmenttabellen, Seitentabellen) gespeichert sein oder sie können direkt durch Hardware (z. B. 8 Kennzeichnungsbits pro 1 Megabyte HS-Speicher) implementiert sein. Innerhalb des Verzeichnisses jedes Cache-Speichers (, der ST oder SIC sein kann,) gibt es ein CDID-Feld (zusätzlich zu anderen notwendigen Statusindikatoren wie ein GÜLTIGES-Bit und MODIFIZIERTES-Bit) für jede Zeile in dem Cache-Speicher, das das CDID für die laufende Zeile speichert. Wenn nötig, kann eine eindeutige CDID (bezeichnet als CDID0) zugeordnet werden, um die Datenzeilen vom Typ II anzugeben (, für die die gemeinsame Benutzbarkeit nicht durch die explizierte Lösung des Ausschwemmens von Cache- Speicherzeilen gesteuert wird). Nach dem Abrufen einer Zeile aus dem HS in den Cache Speicher wird die CDID, die durch die Hardware für den Speicherzugriff erhalten wird, automatisch in das CDID-Feld des Cache-Speicherverzeichnisses gesteuert. Unter der Annahme, daß die SEITE die Körnigkeit der virtuellen Adreßumsetzung ist und daß die Adreßumsetzungspuffer, abgekürzt als (TLB = translation lookaside buffer) für das Beschleunigen der Umsetzung benutzt werden, können die für jede SEITE benutzen CDIDen auch in ihren entsprechenden TLB-Eintragungen aufgezeichnet werden.
- Die Option der Zuordnung von Benutzeridentifizierungen, abgekürzt als (UIDen = user identifications) zu Cache- Speicherverzeichnissen ist auch vorgesehen. Diese Option erlaubt das Verringern des Aufwandes für das Ausschwemmen von Zeilen aus einem Cache-Speicher während noch Benutzer auf dem CP sind, die Verriegelungen für die einbezogenen Objekte beibehalten. Der betrachtete Benutzer sollte mit dem Verriegeln und Zugreifen auf gemeinsam benutzte Objekte verträglich sein. Es sollten zu jedem Zeitpunkt keine mehrfachen (mehr als eine) Verriegelungen für das gleiche, gemeinsam benutzte Objekt aufrechterhalten werden. Einem Programm, das auf ein gemeinsam benutztes Objekt zugreift, das unter einer UID läuft, sollte das Recht des Zugriffs über eine Verriegelung gewährt werden, die unter der gleichen UID erhalten wird. Auch sollte eine Verriegelung für ein gemeinsam benutztes Objekt, das unter einer UID erhalten wird, unter der gleichen UID freigegeben werden. Die Definition der UID ist Sache der speziellen Systemimplementierung. Wenn diese Option ausgeübt wird, sollte die UID für die Hardware zum Speicherzugriff verfügbar sein. Eine UID kann vom System über Instruktionen vom Typ LCTL in ein Steuerregister geladen werden, bevor ein Programm gestartet wird. Im folgenden wird die vorliegende Erfindung mit der Option der Zuordnung von UIDen in Cache- Speicherverzeichnissen beschrieben.
- Es gibt eine feste Anzahl (z. B. 2) von UIDC-Feldern in jedem Zeileneintrag des Cache-Speicherverzeichnisses. Jede UIDC besteht aus einer festen Anzahl von Bits (z. B. 4 Bits) . Eine UID kann zur Darstellung mehr Bits gebrauchen (z. B. 32 Bits) als das ihre entsprechende UIDC tut. Die UIDC für eine UID (angegeben als "uidc (UID)") wird durch Hardware entsprechend bestimmten Regeln abgeleitet (, z. B. durch Trennen bestimmter Bits von der UID). Wenn es mehr als ein UIDC-Feld in jedem Verzeichniseintrag gibt, was für die folgende Beschreibung angenommen wird, ist eine bestimmte Ersetzungshardware vom Typ LRU (PLRU) vorgesehen, um bis zu K aktive UIDCen einzufangen, die Zugriffen auf die Cache-Speicherzeile zugeordnet sind, wobei K eine ganze Zahl ist. Wenn ein Zugriff auf eine Cache-Speicherzeile (mit CDID nicht gleich CDID0) durch den CP herausgegeben wird, prüft die Hardware, ob die augenblickliche UIDC sich bereits in dem UIDC- Feld in dem Eintrag des Cache-Speicherverzeichnisses befindet. Wenn eine Übereinstimmung gefunden wird, wird diese UIDC zu der zuletzt benutzten, abgekürzt als (MRU = most recently-used), gemacht, wenn sie das nicht bereits ist. Sonst wird die UIDC durch notwendige Ersetzungen als MRU eingefügt. Eine eindeutige UIDC wird als HILFSGRÖSSE bezeichnet, die nicht die UIDC irgendeiner gültigen UID sein kann. Ebenso wird eine UID (auch HILFSGRÖSSE genannt) angenommen, die nicht die UID für irgendein laufendes Programm sein kann. Wenn beide UIDC-Werte HILFSGRÖSSEN in den UIDC-Feldern eines Eintrags einer Cache-Speicherzeile sind, dann wird die Cache-Speicherzeile als UNGÜLTIG behandelt. (In diesem Fall wird daher kein gesondertes V-Bit in einem Eintrag des Cache-Speicherverzeichnisses benötigt, um die Gültigkeit anzugeben.) Während des Rücksetzens des Systems weiden alle UIDC-Felder in den Cache Speicherverzeichnissen initialisiert, so daß sie HILFSGROSSEN enthalten.
- Die Steuerung der Cache- Speicherkohärenz wird durch eine Instruktion FLUSH von der Form
- FLUSH UID,CDID,M,I
- implementiert. Die Kennzeichen Modifiziert (M) und Ungültig (I) können unter Benutzung je eines Bits dargestellt werden. Das genaue Format der Instruktionen ist Sache des Entwurfs der speziellen Architektur. Wenn FLUSH von einem CP herausgegeben wird, werden die Parameter UID, CDID und M benutzt, um die Zielzeilen der Operation in dem Cache-Speicher zu vergleichen. Die Bedeutung von UID und CDID sind aus den vorhergehenden Beschreibungen offensichtlich. Wenn das Kennzeichen M ein ist, wirkt FLUSH nur auf modifizierte Zeilen in dem Cache-Speicher, sonst schließt er auch unmodifizierte Zeilen ein. Wenn der angegebene UID-Parameter nicht HILFSGRÖSSE ist, schließt FLUSH nur diejenigen Zeilen ein, bei denen "uidc (UID)" in den UIDC-Feldern in dem Cache-Speicherverzeichnis gefunden wird, sonst wird kein Vergleichen von UIDC ausgeführt. Für alle die Cache-Speicherzeilen, die mit den UID-, CDID- und M-Angaben übereinstimmen, aktualisiert die Ausführung von FLUSH die modifizierten für den HS und schaltet die entsprechenden MODIFIZIERTEN Bits ab. Es wird eine Implementierung von FLUSH betrachtet, bei der die UID angegeben ist und ein Mehrzweckregister, abgekürzt als (GPR = general purpose register), benutzt, und es wird angenommen, daß GPR 0 (RO) die HILFSGRÖSSE UID angibt. Wenn das I-Kennzeichen ein ist und wenn UID durch RO nicht angegeben ist, ändert die Ausführung von FLUSH auch die "uidc (UID)en" in den übereinstimmenden Verzeichniseinträgen in HILFSGRÖSSE. Wenn das Kennzeichen I ein ist und wenn die UID als RO angegeben ist, werden die übereinstimmenden Cache-Speicherzeilen tatsächlich ungültig gemacht (durch Setzen von K HILFSGRÖSSEN in die UIDC-Felder ihrer Verzeichniseinträge)
- Die Ausführung von FLUSH sollte synchron mit HS-Aktualisierungen sein. Wenn modifizierte Cache-Speicherzeilen für den HS aufgrund der Ausführung von Flush aktualisiert werden, wird FLUSH nicht ausgeführt, bis diese Aktualisierungen durch das HS-System bestätigt werden.
- Die Bestätigung von Aktualisierungen durch den HS ist in hohem Maße abhängig von der speziellen HS-Architektur. Für HS-Systeme, in denen Pufferspeicher für anhängiges Speichern implementiert sind, kann die Bestätigung der Aktualisierungen herausgegeben werden, sobald die Aktualisierungen gepuffert sind. Dieser Teil der Implementierung wird in der folgenden Beschreibung nicht weiter diskutiert.
- Die FLUSH-Instruktion ist nicht auf die oben dargestellte Form beschränkt. Für eine Cache-Speicherorganisation ohne MODIFIZIERTE Bits (z. B. in ST) besteht keine Notwendigkeit für das Vorhandensein des M-Parameters in FLUSH. Wenn es immer erwünscht ist, die Operationen auszuführen, die durch das Kennzeichen I angegeben sind, kann der Paramater I im Instruktionsformat weggelassen werden. Wenn die UID der Hardware stets bekannt ist, wenn FLUSH ausgeführt wird, dann kann der UID-Parameter auch weggelassen werden. Wenn es nur eine CDID außer CDID0 gibt, kann der CDID-Parameter auch weggelassen werden. Ebenfalls ist es vorteilhaft, für ein zusätzliches Parameterbit S zu sorgen, um alle gemeinsam benutzten Objekte anzugeben. Wenn das S-Bit ein ist, werden alle gemeinsam benutzten Objekte (Typ I) in den FLUSH einbezogen (,in welchem Fall der CDID-Parameterwert ignoriert werden kann).
- Die vorliegende Erfindung ist hauptsächlich dazu gedacht, einen Entwurf bereitzustellen, mit dem der Systemkern logische FLUSH- Protokolle herausgeben kann, um die Cache-Speicherkohärenz für bestimmte gemeinsam benutzte Datenobjekte zu garantieren, auf die unter geeigneter Verriegelungssteuerung zugegriffen wird. Bevor ein Benutzer den Zugriff auf ein gemeinsam benutztes Objekt beginnt, wird ein Verriegelungsprotokoll herausgegeben, um die Zugriffsberechtigung zu erhalten. Nachdem solche Zugriffe auf das gemeinsam benutzte Objekt abgeschlossen sind, fordert der Benutzer die Freigabe der Verriegelung, der Systemkern benutzt die FLUSH-Instruktion, um notwendige Ausschwemmoperationen des Cache- Speichers durchzuführen, bevor die Verriegelung zur Verfügbarkeit für andere Benutzer tatsächlich freigegeben wird. Das System kann auch, wenn die Möglichkeit einer CP-Umschaltung für einen Benutzer besteht, die FLUSH-Instruktion herausgeben, um die Arbeitszeilen in dem Cache-Speicher des CP zu löschen, mit denen der Benutzer zuletzt arbeitete. Die FLUSH-Instruktion sollte nur in einem bevorrechtigten Systemzustand ausgeführt werden. Auf diese Weise kann die Konsistenz des Speicherzustandes nicht durch Problemprogramme ruiniert werden, und die Problemprogramme werden von der Last befreit, die Cache-Speicherkohärenz aufrechtzuerhalten.
- Nachteilige Leistungsverschlechterungen können s ich ergeben, wenn die FLUSH-Instruktion in großer Häufigkeit ausgeführt wird. Ein guter Systementwurf, der die vorliegende Erfindung benutzt, sollte die auf der Software basierende Steuerung der Cache- Speicherkohärenz nur auf den relativ seltenen Zugriff auf gemeinsam benutzte Objekte beschränken, für die eine wirksame XI-Implementierung nicht leicht erreicht werden kann. Diese Situation tritt auf, wenn es eine große Anzahl von CPen in dem MP-System gibt, oder wenn eine körperliche Trennung zwischen CP-Gruppen besteht. Wenn solch eine Situation eintritt, kann es ziemlich schwierig sein, eine vollstandige allgemeine Steuerung der Cache-Speicherkohärenz bei Benutzung eines üblichen Verfahrens zu erhalten. Eine vernünftige Lösung, um in solch einer Umgebung für eine gemeinsame Benutzung des HS zu sorgen, besteht darin, das System zu unterteilen, so daß die meisten der Systemaktivitäten in individuellen CPen (oder CP-Gruppen) ausgeführt werden, und die CPen (oder CP-Gruppen) miteinander durch einfache Zugriffe auf gemeinsame benutzte Objekte kommunizieren zu lassen. Ein mögliches Beispiel solch eines gemeinsam benutzten Objektes sind Nachrichten. Die vorliegende Erfindung sorgt dann für eine elegante Lösung der Steuerung der Datenkonsistenz für den Zugriff auf Objekte, die von CPen (oder CP-Gruppen) gemeinsam benutzt werden.
- Die Zuordnung gemeinsam benutzter Objekte zu CDn hat eine Auswirkung auf die Leistung des Cache-Speichers. Es wird die Situation betrachtet, in der ein Benutzer berechtigt ist, auf zwei verschiedene, gemeinsam benutzte Objekte zuzugreifen. Wenn eines der Objekte durch den Benutzer freigegeben wird, kann das System gültige Arbeitszeilen für das andere Objekt in dem Cache- Speicher ausschwemmen, wenn diese zwei Objekte zufällig der gleichen CD zugeordnet sind. Dies würde unnötigen Speicheraufwand bei Speicheraktualisierungen und Speicherfehlschläge verursachen. Daher ist das Hauptprinzip bei der Zuteilung von gemeinsam benutzten Objekten zu CDn, für eine vernünftige willkürliche Verteilung von CDIDen unter den gemeinsam benutzen Objekten zu sorgen, so daß das oben erwähnte Phänomen dazu neigt, nicht zu häufig aufzutreten.
- In Fig. 1 ist eine mögliche MP-Konfiguration beschrieben, in der die vorliegende Erfindung implementiert werden kann. Es gibt N, wobei N eine ganze Zahl ist, CPen 2, 4, 6 und 8 in dem MP, die den gleichen HS 10 gemeinsam benutzen. Jeder CP besitzt ein Element (IE) 12, 14, 16 und 18 zum Decodieren und Ausführen einer Instruktion und ein Element zur Puffersteuerung, abgekürzt als (BCE = buffer control element) 20, 22, 24 und 26. Das BCE enthält ein privates CP Verzeichnis, und seinen jeweiligen Cache Speicher und die Steuerungen. Jedes BCE greift auf den gemeinsamen Hauptspeicher (HS) 10 über eine Speichersteuerung, abgekürzt als (SC = sterage control) 28 oder 30 zu. Die SCen 28 und 30 sind mit Kanalgeräten 29 bzw. 31 verbunden. Der HS 10 kann statt dessen ein Cache-Speicher (L2) der zweiten Ebene sein, der von allen CPen gemeinsam benutzt wird, indem der Cache-Speicher L2 wiederum auf den HS zugreift; und der Betrieb solch eines Cache-Speichers L2 ist der gleiche wie der Betrieb des HS, der unten beschrieben wird.
- Fig. 2 zeigt den internen Aufbau eines der BCE'e 20, 22, 24 oder 26, die in Fig. 1 dargestellt sind. Das BCE schließt einen assoziativen 4-Weg-Cache-Speicher 40 ein, sein Verzeichnis 42, Auswählschaltungen 44 zum Verzeichnisaustausch und andere Logik, die jedem CP von der früher in dem US Patent 4 394 731 beschriebenen Art zugeordnet sind mit Ausnahme der CIDI-, UIDC1, UIDC2-Felder und ihrer Steuerschaltungen Das Prozessorverzeichnis nach US Patent 4 394 731 wird modifiziert, um für ein CP-Cache-Speicherverzeichnis für die vorliegende Erfindung zu sorgen durch Ersetzen der früheren V-Bitstelle durch UIDC1, UIDC2 und durch Hinzufügen zweier neuer Felder UR (1 Bit) und CDID in jedem Zeileneintrag in dem Verzeichnis, wie es in Fig. 4 dargestellt ist. Auch die Steuerungen für die CP-Verzeichnisse, die hier für das Ausführungsbeispiel dieser Erfindung beschrieben worden sind, sind von denen im US Patent 4 394 731 verschieden.
- Das UR-Bit in jedem Verzeichniseintrag des Cache-Speichers dient dem Zweck der Implementierung von LRU auf der UIDC1 und UIDC2 für die Zeile. Bei jedem Verzeichniseintrag des Cache-Speichers ist UIDC1 (bzw. UIDC2) die am längsten nicht benutzte (LRU) wenn das UR 1 (bzw. 0) ist. Wenn eine neue (bestimmte) UIDC in einen Verzeichniseintrag einzufügen ist, ist das UIDC-Feld in dem Eintrag, daß das neue UIDC enthalten soll, dasjenige, das das LRU ist. Für Zwecke der Erläuterung wird angenommen, daß die BLOCK-Körnigkeit die SEITE ist, und daß jeder Eintrag in der Seitentabelle die CDID enthält, die der laufenden SEITE zugeordnet ist. Bei virtueller Adreßumsetzung erhält die Umsetzungseinrichtung die CDID der einbezogenen SEITE und leitet sie in ein internes Register CDIDR in dem BCE. Es wird auch angenommen, daß, wenn ein Programm zur Ausführung auf einem CP inganggesetzt wird, seine "uidc (UID)" in ein internes Register UIDCR geladen wird, das auch in dem BCE lokalisiert ist. In der Beschreibung wird "Inhalt (CDIDR)" bzw. "(Inhalt (UIDR)" benutzt, um den augenblicklichen Inhalt im Register CDIDR (bzw. UIDR) anzuzeigen.
- Fig. 3 zeigt das Format eines Eintrags einschlägiger Information in die vier assoziativen Einträge in irgendeiner ausgewählten Kongruenzklasse in ein Ausgangsregister 100 oder das CP-Cache- Speicherverzeichnis. übliche EXKLUSIV ODER-Schaltungen 104A-104D bestimmen, welcher (wenn überhaupt) der vier assoziativen Einträge auswählbar ist, und UIDC-Vergleichsschaltungen (= HILFSGRÖSSE) 101A-101D, 102A-102D, auf die NOR-Glieder 105A-105D folgen, erlauben nur die Auswahl 106A-106D eines gültigen Zeileneintrags, um zu bestimmen, ob ein Cache- Speichertreffer oder -fehlschlag durch eine Anforderungsadresse von dem IE 103 vorliegt. Ein Cache-Speichertreffer in der Kongruenzklasse im Register 100 aktiviert eine der Eingangsleitungen zu einem ODER-Glied 107, um eine Leitung 108 Cache-Speichertreffer zu aktivieren. Wenn keine der Eingangsleitungen zum ODER-Glied aktiviert wird, wird eine Leitung 110 Cache-Speicherfehlschlag durch einen Inverter 109 aktiviert, der kein Signal von dem ODER-Glied 107 empfängt.
- Bei einem Cache-Speicherfehlschlag benutzt das BCE das interne Register CDIDR, (das durch die Umsetzungseinrichtung gesetzt wird,) um zu prüfen, ob die CDID für die augenblickliche Cache Speicheranforderung CDID0 ist. Wenn gefunden wird, daß die augenblickliche Cache-Speicheranforderung eine für CDID0 ist, sind die ergriffenen Maßnahmen (z. B. bei XI-Entscheidungen und bei Aktualisierungen zum Ersetzen der Gruppe ähnlich dem, was im US Patent 4 394 731 beschrieben ist, mit der Ausnahme, daß das Ungültigmachen einer (entfernten) Cache- Speicherzeile dargestellt wird durch Setzen von HILFSGRÖSSE in sowohl UIDC1 als auch UIDC2 des ungültig gemachten Eintrags im entfernten Cache-Speicherverzeichnis. Wenn ein Cache-Speichertreffer für CDID0 nicht festgestellt wird, wird die ausgewählte Cache- Speicherzeile als bereit für einen Zugriff durch ein IE (ohne irgendwelche weiteren XI-Betrachtungen) angesehen. In beiden Fällen werden die UIDC-Felder des ausgewählten Verzeichniseintrages gemäß den Regeln aktualisiert, die in der Tabelle I angegeben sind, bevor der Cache-Speicherzugriff endet.
- BEDINGUNG MASSNAHMEN
- 1. UIDC1 = UIDC UR ← 0
- 2. UIDC2 = UIDC UR ← 1
- 3. (UIDC1 ≠ UIDC)& (UIDC2 ≠ UIDC)& (UR = 0) UIDC2 ← UIDC UR ← 1
- 4. (UIDC1 ≠ UIDC)& (UIDC2 ≠ UIDC)& (UR = 1) UIDC1 ← UIDC UR ← 0
- Das CH-Bit des ausgewählten Verzeichniseintrages wird eingeschaltet, wenn das IE eine Speicheroperation anforderte. Ebenso wird bei einem Cache-Speicherfehlschlag "Inhalt (CDIDR)" in das CDID-Feld des Verzeichniseintrages für die neuerliche abgerufene Zeile geleitet.
- Auf einen Cache-Speicherfehlschlag hin für eine Zugriffsanforderung auf den Cache-Speicher durch das IE 103 mit "Inhalt (CDIRD)" = CDID0 werden Entscheidungen getroffen, um die LRU-Zeile in der ausgewählten Kongruenzklasse zu ersetzen. Das Auswählen der LRU-Zeilen für das Ersetzen ist ähnlich dem im US Patent 4 394 731 gewählten Verfahren. Aktualisierungen für den HS werden zuerst ausgeführt, wenn das CH-Bit der ersetzten Zeilen in ihrem Verzeichniseintrag ein ist, wie das im US Patent 4 394 731 angegeben ist. Die unlängst aus dem HS ausgelesene Zeile für die vom IE angeforderte wird zu der Position der Cache-Speicherzeile übertragen, an der das Ersetzen ausgewählt wurde. Der Verzeichniseintrag der unlängst gelesenen Zeile wird rückgesetzt, so daß CDID ← "Inhalt (CDIDR)", UIDC1 ← "Inhalt (UIDCR)", UIDC2 ← HILFSGRÖSSE, und UR ← 0. Das Änderungsbit CH sollte auch auf 1 gesetzt sein, wenn die IE-Anforderung eine für eine Speicheroperation war.
- Eine mögliche Implementierung für die Ausführung des FLUSH-Befehls, der von einem IE herausgegeben wird, ist in dem Flußdiagramm in Fig. 6 beschrieben. Der beschriebene Algorithmus in Fig. 6 ist der folgende. Die Kongruenzklassen des Cache- Speichers werden eine nach der anderen durchsucht, indem nach Verzeichniseinträgen (,wenn überhaupt welche vorliegen,) geschaut wird, die mit den Spezifikationen, die durch die Parameter des FLUSH angegeben sind, übereinstimmen. Wenn übereinstimmende Verzeichniseinträge in einer Kongruenzklasse gefunden werden, werden geeignete Maßnahmen für die Ausführung von FLUSH ergriffen.
- Das Logikdiagramm für den Übereinstimmungsteil 128 der Verzeichniseinträge in Fig. 6 ist in Fig. 5 dargestellt. Die UIDC 112 (berechnet aus dem Eingangsparameter UID des FLUSH) wird verglichen mit den UIDC-Feldern der vier Assoziativitäten, die EXKLUSIV ODER-Glieder 116A-116D und 117A-117D benutzen. Dann bestimmen NOR-Glieder 118A-118D, ob jeder der vier Einträge in der Kongruenzklasse übereinstimmende UIDC-Felder besitzt. Das EXLUSIV ODER-Glied 115 bestimmt, ob das Eingangssignal UIDC eine HILFSGRÖSSE ist und liefert das Ausgangsbit (0, wenn der Eingang eine HILFSGRÖSSE ist) an die NOR-Glieder 118A-118D. In ähnlicher Weise wird der CDID-Eingangsparameter mit den CDID-Feldern der vier Einträge in den Kongruenzklassen verglichen unter Benutzung der EXKLUSIV ODER-Glieder 120A-120D. Das EXKLUSIV ODER-Glied 119 wird benutzt, um zu bestimmen, ob die Eingangs-CDID die CDID0 ist, und das Ausgangsbit (0, wenn das Eingangssignal CDID ist,) wird zu den NOR-Gliedern 121A-121D weitergeleitet. Das M-Parameterbit des FLUSH wird zuerst am Inverter 122 invertiert, und dann den ODER-Gliedern 123A-123D zugeführt. Die UND-Glieder 124A-124D wählen dann alle Einträge in der Kongruenzklasse aus, die übereinstimmende Werte mit den Eingangsparametern UIDC, CDID und M aufweisen.
- Wenn es für irgendeine Kongruenzklasse Einträge gibt, die aus 125A-125D in 128 ausgewählt wurden, wird jede der ausgewählten Zeilen der FLUSH-Operation 129 unterworfen. Fig. 7 liefert ein Flußdiagramm für 129. In Fig. 7 wird jeder der Zeileneinträge, die durch 125A-125D ausgewählt wurden, zuerst auf sein Änderungskennzeichen CH geprüft, 134. Wenn CH = 1, wird die Zeile (oder ihre Änderungen) aktualisiert für den HS, 135, und das CH-Bit wird abgeschaltet beim Empfangen der HS-Bestätigung der Aktualisierung. Wenn danach das I-Kennzeichen in dem FLUSH angegeben wird, 136, wird ein geeigneter Schritt zum Ungültigmachen des ausgewählten Eintrages unternommen, 137. Der Schritt zum Ungültigmachen, 137, wird ausgeführt durch geeignetes Ändern der UR-, UIDC1 und UIDC2-Felder gemäß den Regeln in Tabelle II.
- BEDINGUNG MASSNAHMEN
- 1. UIDS = HILFSGRÖSSE UIDC2 ← HILFSGRÖSSE
- 2. (UIDC ≠ HILFSGRÖSSE)& (UIDC1 = UIDC) UIDC1 ← HILFSGRÖSSE UR ← 1
- 3. (UIDC ≠ HILFSGRÖSSE)& (UIDC2 = UIDC) UIDC2 ← HILFSGRÖSSE UR ← 0
- Die obigen Beschreibungen der vorliegenden Erfindung befassen sich nicht mit Einzelheiten des Entwurfs der Speichersteuerung unterhalb der BCE-Ebene, da die erfundenen einfachen Ausdrücke (UID, UIDC, CDID, CDIDC, UR) und die FLUSH-Instruktion in einer Vielzahl bekannter Entwürfe für die Speicherhierarchie unterhalb der BCE-Ebene implementiert werden können, obgleich der Speicherentwurf auf der niedrigeren Ebene maßgeschneidert werden kann, uni für eine bessere Implementierung der vorliegenden Erfindung zu sorgen.
- Die Definitionen von UIDen und CDIDen für Benutzer und Daten sind Sache des speziellen Systementwurfs. Spezielle Instruktionen wie
- SETUID UID
- SETCDID CDID, SEITENID
- oder andere Varianten können für Softwaredefinitionen geliefert werden. Wenn gewünscht, kann das interne Register UIDCR ersetzt werden oder vergrößert werden durch ein anderes Register UIDR, das UID (anstatt von "uidc(UID)"). enthält.
- Die vorliegende Erfindung wurde unter Benutzung von SICn beschrieben. Erweiterungen der Beschreibungen auf MP mit ST- Cache-Speichern sind einfach. Mit ST-Cache-Speichern können alle Operationen verworfen werden, die mit CH-Kennzeichen und HS- Aktualisierungen beim Ersetzen und Ungültigmachen von Cache- Speicherzeilen verbunden sind.
- In Fig. 6 ist die dargestellte Ausführung von FLUSH sequentiell auf der Basis einer Kongruenzklasse. Für jede Kongruenzklasse führen die Auswählschaltungen für die PD-Einträge der Fig. 5 die FLUSH-Spezifikation durch paralleles Vergleichen der vier Einträge der Kongruenzklasse aus. Eine bessere Implementierung der FLUSH-Ausführung sollte den Parallelismus beim Vergleichen der Verzeichniseinträge des Cache-Speichers mit den FLUSH-Parametern optimieren. In einem Verzeichniseintrag eines Cache- Speichers sind die für den Vergleich der FLUSH-Bedingungen benötigten Kennzeichen hauptsächlich CH, CDID, UIDC1 und UIDC2. Eine mögliche Lösung beim Optimieren dieses Teils des Entwurfs besteht darin, einige oder alle dieser Kennzeichen zu separaten Schaltungen zu übertragen (oder eine Zusatzkopie dieser Kennzeichen aufrechtzuerhalten), so daß das Suchen nach übereinstimmenden Verzeichniseinträgen nicht auf das Auslesen einzelner Kongruenzklassen beschränkt ist. Speziell entworfene Schaltungen können die Vergleichsoperationen in Fig. 5 für mehr (z. B. 16) Verzeichniseinträge parallel zu einem Zeitpunkt durchführen.
- Die CDID-Kennzeichen bei Verzeichniseinträgen des Cache- Speichers werden hauptsächlich für FLUSH-Operationen aufrechterhalten. In einem MP ist es immer sicher, (obgleich nicht optimal für die Leistung) zusätzliche Cache Speicherzeilen auszuschwemmen. Ein praktischer Weg, um Verzeichnisbits zu sparen, besteht darin, ein CDID-Klassen-Kennzeichen, abgekürzt als (CDIDC), anstatt des CDID-Kennzeichens bei jedem Zeileneintrag eines Cache-Speichers zu benutzen. Es werde eine 8-Bit Darstellung für CDID und eine 4-Bit Darstellung für CDIDC betrachtet. Mehr als eine der CDIDen kann der gleichen CDIDC zugeordnet sein. Für eine CDID kann die entsprechende CDIDC (bezeichnet "cdidc (CDID)") berechnet werden durch Trennen( oder (EXKLUSIV ODER-Verknüpfung) bestimmter Bits der CDID- Darstellung. Wenn CDIDC-Kennzeichen in Cache-Speicherverzeichnissen benutzt werden, sollte die Eingangsleitung 113 (Fig. 5) der Auswählschaltungen für die FLUSH-Eingabe "cdidc (CDID)") (anstatt von CDID) aussenden, die vorausberechnet und in einem internen Register gespeichert werden kann. Ein ausschlaggebender Faktor beim Entwurf der CDIDC Berechnung und der Zuordnung von gemeinsam benutzten Objekten zu CDn besteht darin, für genug willkürliche Verteilung zu sorgen, so daß die Ausführung einer FLUSH-Instruktion nicht zu viele Zeilen in dem Cache-Speicher berührt, die nicht Teil der gemeinsam benutzten Objekte sind, die FLUSH verursachen.
- Die vorliegende Erfindung ist mit der Option der Implementierung von UIDen und UIDCn beschrieben worden. Wenn diese Option nicht erforderlich ist, kann ein explizites V-Bit pro Verzeichniseintrag des Cache-Speichers benötigt werden (, wie das im US Patent 4 394 731 beschrieben ist), um die Gültigkeit einer Cache-Speicherzeile anzugeben. Andere Teile der beschriebenen Implementierung können einfach modifiziert werden durch Eliminieren all der Schaltungen und Schritte, die sich auf das Testen und Aktualisieren von UIDen und UIDCn beziehen.
Claims (4)
1. Verfahren zum Aufrechterhalten der Cache- Speicher-
Übereinstimmung (coherence) in einem
Multiverarbeitungssystem, bestehend aus einer Anzahl von
Prozessoren (2, 4, 6, 8), die einen Hauptspeicher gemeinsam
benutzen, wobei jedem Prozessor ein Cache-Speicher
zugeordnet ist zum Festhalten von Informationsblöcken, die
vom Hauptspeicher übertragen wurden, und jeder Block
zumindest eine Informationszeile umfaßt, mit einer Steuer-
Domäne (SD), die definiert ist als zumindest einer der
Informationsblöcke, wobei jedem Cache-Speicher ein Cache-
Speicher-Verzeichnis zugeordnet ist, das Zeileneinträge von
Information einschließt, wobei jeder Zeileneintrag ein SD-
Identifizierungskennzeichen (SDID) einschließt, das die SD
identifiziert, zu der die Informationszeile in dem Cache-
Speicher gehört, und das Verfahren gekennzeichnet ist durch
die Schritte des:
Setzens des SDID-Kennzeichens in dem Zeileneintrag des
Cache-Speicher-Verzeichnisses, wenn eine Informationszeile
von dem Hauptspeicher zu dem Cache-Speicher übertragen wird,
Aussendens einer Datenverriegelung an den Benutzer, wenn ein
Benutzer eines bestimmten der Prozessoren Zugriff auf die
gemeinsam benutzte Information anfordert, um Zugriff auf die
gemeinsam benutzte Information nur zu genehmigen, wenn alle
anderen Benutzer dieser Information ihre Verriegelungen für
diese Information entriegelt haben,
Übertragens der Information vom Hauptspeicher zu dem Cache-
Speicher und des Setzens des SDID-Kennzeichens in der
Zeileneintragung des Cache-Speicher-Verzeichnisses für jede
Zeile angeforderter Information, wenn die angeforderte,
gemeinsam benutzte Information nicht in dem Cache-Speicher
ist, der dem anfordernden Prozessor zugeordnet ist,
Aussendens eines FLUSH-Befehls einschließlich eines vorher
festgelegten SDID-Kennzeichens durch den angegebenen
Prozessor, um eine Informationszeile mit der vorher
festgelegten SDID aus dem Cache-Speicher zu entfernen, der
dem angegebenen Prozessor zugeordnet ist, wenn der Benutzer
den Zugriff auf die gemeinsam benutzte Information beendet
hat und bevor die Verriegelung, die der Benutzer besitzt,
entriegelt wird,
Vergleichens des SDID-Kennzeichens, das in dem FLUSH-Befehl
angegeben ist, mit der SDID der Informationszeilen in dem
zugeordneten Cache-Speicher und, wenn eine Übereinstimmung
von SDIDen gefunden wird, des Entfernens der Zeilen mit der
übereinstimmenden SDID aus dem Cache-Speicher, während
modifizierte Zeilen für den Hauptspeicher aktualisiert
werden.
2. Verfahren nach Anspruch 1, bei dem jede Informationszeile
ein Änderungskennzeichen (CH) einschließt, das in einem
Zustand anzeigt, daß es geändert wurde und, wenn es in einem
anderen Zustand sich befindet, anzeigt, daß es nicht
geändert wurde, und der FLUSH-Befehl ein
Modifizierkennzeichen (M) einschließt, das in einem Zustand anzeigt,
daß der FLUSH-Befehl nur auf modifizierte Zeilen in dem
Cache-Speicher wirkt, und das den Schritt einschließt des:
Entfernens der Informationszeile aus dem Cache-Speicher nur,
wenn das M-Kennzeichen sich in dem einen Zustand befindet,
gleichzeitig damit, daß sich das CH-Kennzeichen in dem einen
Zustand befindet.
3. Verfahren nach Anspruch 2, bei dem ein Kennzeichen zur
Benutzeridentifizierung (UID) jedem Systembenutzer der
entsprechenden Informationszeilen zugeordnet ist, die in den
Speichern der ersten Ebene gespeichert sind, um zu
identifizieren, wenn einer oder mehrere der Benutzer die
gleiche Informationszeile benutzen, wobei das Verfahren den
Schritt einschließt des:
Antwortens auf den FLUSH-Befehl durch einen Cache-Speicher
nur, wenn alle UIDen anzeigen, daß von der Informationszeile
kein Gebrauch gemacht wird.
4. Verfahren nach Anspruch 3, einschließend den Schritt des
Anzeigens, daß ein bestimmtes Kennzeichen zur
Benutzeridentifizierung (UIDC) in einer Informationszeile
ungültig gemacht wird, wenn das UIDC-Kennzeichen sich in
einer Informationszeile befindet, in der das SDID- und das
CH-Kennzeichen mit dem SDID- bzw. dem M-Kennzeichen des
FLUSH-Befehls übereinstimmen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US79272885A | 1985-10-30 | 1985-10-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3650021D1 DE3650021D1 (de) | 1994-09-15 |
DE3650021T2 true DE3650021T2 (de) | 1995-03-09 |
Family
ID=25157874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3650021T Expired - Fee Related DE3650021T2 (de) | 1985-10-30 | 1986-09-12 | Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung. |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0220451B1 (de) |
JP (1) | JPH0619739B2 (de) |
DE (1) | DE3650021T2 (de) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01119849A (ja) * | 1987-11-04 | 1989-05-11 | Hitachi Ltd | 多重プロセッサシステム |
JPH01173241A (ja) * | 1987-12-28 | 1989-07-07 | Toshiba Corp | キャッシュメモリ装置 |
GB8814077D0 (en) * | 1988-06-14 | 1988-07-20 | Int Computers Ltd | Data memory system |
US4928225A (en) * | 1988-08-25 | 1990-05-22 | Edgcore Technology, Inc. | Coherent cache structures and methods |
US5724549A (en) * | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
GB9704542D0 (en) * | 1997-03-05 | 1997-04-23 | Sgs Thomson Microelectronics | A cache coherency mechanism |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US9454490B2 (en) | 2003-05-12 | 2016-09-27 | International Business Machines Corporation | Invalidating a range of two or more translation table entries and instruction therefore |
JPWO2012102002A1 (ja) | 2011-01-24 | 2014-06-30 | パナソニック株式会社 | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路 |
US9182984B2 (en) | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3735360A (en) * | 1971-08-25 | 1973-05-22 | Ibm | High speed buffer operation in a multi-processing system |
EP0049423B1 (de) * | 1980-10-06 | 1987-04-01 | International Business Machines Corporation | Mehrprozessor-System |
US4399506A (en) * | 1980-10-06 | 1983-08-16 | International Business Machines Corporation | Store-in-cache processor means for clearing main storage |
JPS609296B2 (ja) * | 1980-12-19 | 1985-03-09 | 富士通株式会社 | バッファメモリ制御方式 |
JPS589273A (ja) * | 1981-07-07 | 1983-01-19 | Nec Corp | デ−タ処理装置 |
US4463420A (en) * | 1982-02-23 | 1984-07-31 | International Business Machines Corporation | Multiprocessor cache replacement under task control |
-
1986
- 1986-09-12 EP EP86112663A patent/EP0220451B1/de not_active Expired - Lifetime
- 1986-09-12 DE DE3650021T patent/DE3650021T2/de not_active Expired - Fee Related
- 1986-09-19 JP JP61219918A patent/JPH0619739B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0220451A3 (en) | 1989-11-15 |
JPH0619739B2 (ja) | 1994-03-16 |
DE3650021D1 (de) | 1994-09-15 |
EP0220451A2 (de) | 1987-05-06 |
JPS62105250A (ja) | 1987-05-15 |
EP0220451B1 (de) | 1994-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE60320026T2 (de) | Verbessertes speichermanagement für echtzeit-anwendungen | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE3832912C2 (de) | Virtuell adressierbare Cache-Speichereinrichtung | |
DE69030945T2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung | |
DE69530776T2 (de) | Zweiwege set-assoziativer cache-speicher | |
DE3586635T2 (de) | Vorausholungsanordnung fuer einen schnellpufferspeicher. | |
DE112010003492B4 (de) | Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung | |
DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69637294T2 (de) | Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung | |
DE3932675C2 (de) | ||
DE69029173T2 (de) | Mikroprozessor | |
DE602004011018T2 (de) | Ungültigkeitserklärung eines speichers und löschen von puffereinträgen | |
DE112005003863B3 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE10002120B4 (de) | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE112011103433B4 (de) | Verfahren, System und Programm zum Steuern von Cache-Kohärenz | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE112010004971T5 (de) | Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE102020104701A1 (de) | Cache data location system | |
DE112018002032T5 (de) | Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |