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
Application number
DE3650021T
Other languages
English (en)
Other versions
DE3650021D1 (de
Inventor
Lishing Liu
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 DE3650021D1 publication Critical patent/DE3650021D1/de
Publication of DE3650021T2 publication Critical patent/DE3650021T2/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/0837Cache 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
  • TABELLE I
  • 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
  • TABELLE II
  • 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.
DE3650021T 1985-10-30 1986-09-12 Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung. Expired - Fee Related DE3650021T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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