DE3832758C2 - Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers - Google Patents

Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers

Info

Publication number
DE3832758C2
DE3832758C2 DE3832758A DE3832758A DE3832758C2 DE 3832758 C2 DE3832758 C2 DE 3832758C2 DE 3832758 A DE3832758 A DE 3832758A DE 3832758 A DE3832758 A DE 3832758A DE 3832758 C2 DE3832758 C2 DE 3832758C2
Authority
DE
Germany
Prior art keywords
address
cache
virtual
memory
data
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
DE3832758A
Other languages
English (en)
Other versions
DE3832758A1 (de
Inventor
William Van Loo
John Watkins
Joseph Moran Moran
William Shannon
Ray Cheng
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE3832758A1 publication Critical patent/DE3832758A1/de
Application granted granted Critical
Publication of DE3832758C2 publication Critical patent/DE3832758C2/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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring

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 bezieht sich auf ein Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache- Speichers.
Das Verfahren findet seinen Einsatz in Computer-Systemen, die von virtueller Adressierung in Multibenutzer-Betriebssystemen mit Rückschreib-Caches Gebrauch machen und Betriebssysteme enthalten, welche es jedem Benutzer ermöglichen, mehrfach ak­ tive Prozesse zu haben. Im folgenden wird die Erfindung unter Bezugnahme auf ein für mehrere Benutzer geeignetes Betriebssy­ stem beschrieben, das zudem mehrere Prozesse gleichzeitig ver­ arbeiten kann. Ein solches System ist das Unix-Betriebssystem. Die Erfindung ist jedoch nicht auf die Verwendung des Unix-Be­ triebssystems beschränkt.
Bei einer Arbeitsstation auf Unix-Basis kann die Systemfunktion dadurch beträchtlich verbessert werden, daß man ein Rück­ schreib-Cache für virtuelle Adressen als eines der Systemele­ mente verwendet. Ein in Verbindung mit solchen Systemen erwach­ sendes Problem liegt in der Unterstützung von Alias-Adressen, d. h. zwei oder mehrere virtuelle Adressen, welche auf dieselbe physikalische Adresse im Realspeicher abbilden.
Das Problem entsteht dadurch, daß eine durch eine Alias-Adresse durchgeführte Datenaktualisierung im Rückschreib-Cache über einen Cachezugriff zur Alias-Adresse nicht gesehen wird, da die beiden Alias-Adressen nicht übereinstimmen.
Die virtuelle Adressierung ermöglicht insbesondere eine Alia­ sierung, d. h. die Aufzeichnung bzw. Abbildung von virtuellen Mehrfachadressen an derselben physikalischen Adresse. Wenn ein direkt aufgezeichneter Virtuelladressen-Rückschreib-Cache in einem System ohne Seitenabbildungsrestriktionen verwendet würde, so könnten zwei beliebige virtuelle Adressen zwei belie­ bige Cache-Plätze einnehmen und trotzdem auf derselben physika­ lischen Adresse abbilden. Wenn Cache-Blöcke modifiziert werden, ist es generell unmöglich, beliebige Cache-Plätze nach Daten­ konsistenz zu überprüfen. Daten können inkonsistent werden, wenn Änderungen an einem Cache-Platz an einem anderen Cache- Platz nicht gesehen werden. Schließlich enthalten die Daten an der gemeinsamen physikalischen Adresse im Hauptspeicher nur einen Teil der von der CPU oder einem Eingabe/Ausgabe-Gerät an einigen Cache-Plätzen vorgenommenen Modifikation.
Aus der Zeitschrift Elektronik, Heft 13, 26.06.1987, S. 105-110 ist es für Mehrprozessorsysteme bekannt, diejenigen Bereiche grundsätzlich nicht in den Cache-Speicher zu laden, die von un­ terschiedlichen Prozessoren genutzt werden. Zu diesem Zweck kennzeichnet das Betriebssystem die von mehreren Prozessoren genutzten Bereiche (Seiten) mit einem Cache-Inhibit-Bit als nicht cachefähig. Die Leistungsvorteile des Cache-Speichers können in diesem Fall nicht genutzt werden.
Aufgabe der Erfindung ist es, die Datenkonsistenz in einem virtuellen Cache-Speicher zu gewährleisten.
Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. eine Einrichtung mit den Merkmalen des Anspruchs 5 gelöst.
Das Prinzip der erfindungsgemäßen Lösung besteht darin, daß zwei unterschiedliche Strategien des Handlings von Alias-Adres­ sen miteinander kombiniert werden.
Die erste Strategie besteht in der Erzeugung von Alias-Adressen derart, daß ihre Adreßbits niedriger Ordnung identisch sind, modulo die Größe des Cache-Speichers (als Minimum). Diese Stra­ tegie ist anwendbar auf alle Benutzerprogramme, die vom Kern erzeugte oder vollständig im Kern befindliche Alias-Adressen benutzen. Diese Alias-Adressen werden für diese Strategie durch Modifikationen des Kerns erzeugt und sind für Benutzerprogramme unsichtbar. Die so erzeugten Alias-Adressen bilden auf densel­ ben Cache-Block innerhalb eines direkt aufgezeichneten (Einweg- Satz-Assoziativ-)Cache oder innerhalb desselben Cache-Satzes in einem Mehrweg-Satz-Assoziativ-Speicher ab. Eine Alias-Hardware- Bestimmungslogik wird dann zum Garantieren der Datenkonsistenz innerhalb dieses Cache-Blocks (oder Cache-Satzes) verwendet.
Die zweite Strategie erfaßt statt der Benutzerprogramme dieje­ nigen Alias-Adressen im Betriebssystem, welche an ihren Adreß­ bits niedriger Ordnung nicht in Übereinstimmung gebracht werden können. Diese werden durch Zuordnung ihrer Seiten als "Nicht- Cache- (zu speichernde)" Seiten in der Speichermanagementeinheit (MMU) gehandhabt, welche von Arbeitsstationen bei Verwendung virtueller Adressierung benutzt wird.
Im folgenden wird die Erfindung unter Bezugnahme auf die Zeichnung näher erläutert. In der Zeichnung zeigen:
Fig. 1 ein Blockschaltbild mit den Hauptkomponenten einer Arbeitsstation, bei der virtuelle Adres­ sen mit Rückschreib-Cache verwendet werden;
Fig. 2a ein schematisches Schaltbild einer Cache­ -"Hit"-Logik;
Fig. 2b ein schematisches Schaltbild einer Schaltung zur Feststellung einer Cache-Schutz­ übertretung;
Fig. 2c ein schematisches Schaltbild einer Schaltung zur Feststellung einer MMU-Schutz­ übertretung;
Fig. 3 ein genaueres Blockschaltbild zur Darstellung des von der Alias-Bestimmungslogik nach der Erfindung verwendeten Adressenwegs;
Fig. 4a, 4b ein Ablaufdiagramm einer zustandsmaschi­ nenimplementierung für gewisse auf die Adres­ sierung eines Virtuelladressen-Rückschreib­ -Cache bezogene Steuerungen;
Fig. 5 ein genaueres Blockschaltbild des von der Alias-Bestimmungslogik nach der Erfindung benutzten Datenweges;
Fig. 6a, 6b ein Ablaufdiagramm einer Zustandsmaschi­ nenimplementierung für gewisse Steuervorgänge, die auf Datenübertragungen zu und von einem virtuelladressen-Rückschreib-Cache (Zustände (a)-(o)) bezogen sind;
Fig. 7a ein Ablaufdiagramm einer Zustandsmaschinenim­ plementierung für den Datenweg, bei dem sich eine Realadressenübereinstimmung ergibt (Zu­ stände (q)-(u));
Fig. 7b ein Ablaufdiagramm einer Zustandsmaschinenim­ plementierung für den Datenweg, bei dem sich während eines CPU-Schreib-Buszyklus keine Realadressenübereinstimmung ergibt (Zustände (q)-(y));
Fig. 7c ein Ablaufdiagramm einer Zustandsmaschinenim­ plementierung für den Datenweg, bei dem es während eines CPU-Lese-Buszyklus (Zustände (q)-(y)) keine Realadressenübereinstimmung gibt;
Fig. 7d ein Ablaufdiagramm einer Zustandsmaschinenim­ plementierung für den Datenweg während eines CPU-Schreib-Buszyklus, wenn die MMU eine Nicht-Cache-Seite angibt;
Fig. 8 ein Ablaufdiagramm einer Zustandsmaschinenim­ plementierung zur Steuerung der Rückschreib­ -Buszyklen zum Speicher;
Fig. 9a ein Zeitdiagramm für die beste Zeitgabe für einen CPU-Schreib-Buszyklus, wenn die MMU eine Cache-speicherbare Seite angibt;
Fig. 9b ein Zeitdiagramm für die beste Zeitgabe eines CPU-Schreib-Buszyklus, wenn die MMU eine Nicht-Cache-Seite angibt;
Fig. 10a ein Zeitdiagramm für die beste Zeitgabe eines CPU-Lese-Buszyklus, wenn die MMU eine Cache­ -speicherbare Seite angibt;
Fig. 10b ein Zeitdiagramm für die beste Zeitgabe eines CPU-Lese-Buszyklus, wenn die MMU eine Nicht­ -Cache-Seite angibt;
Fig. 11a ein Zeitdiagramm des Speicherbuszyklus zur Durchführung eines Block-Lesezyklus;
Fig. 11b ein Zeitdiagramm des Speicherbuszyklus zur Durchführung eines Rückschreiblesezyklus; und
Fig. 11c ein Zeitdiagramm des Speicherbuszyklus zur Durchführung eines Lesezyklus zu einer Nicht­ -Cache-Seite.
Fig. 1 zeigt die Funktionsblöcke in einer typischen, virtuelle Adressen verwendenden Arbeitsstation, in der die vorliegende Erfindung implementiert ist.
Insbesondere weist eine Arbeitsstation einen Mikroprozessor oder eine Zentraleinheit (CPU) 11, ein Cache-Daten(speicher)­ feld 19, ein Cache-Tag-Feld 23, einen Cache­ -Trefferkomparator 25, eine Speichermanagementeinheit (MMU) 27, einen Hauptspeicher 31 , einen Rückschreibpuffer 39 und eine Arbeitsstations-Steuerlogik 40 auf. Derartige Arbeitssta­ tionen können wahlweise auch ein Kontext ID Register 32, eine Cache-Flush-Logik 33, eine direkte virtuelle Speicherzugriff (DVMA) Logik 35 und einen Multiplexer 37 aufweisen.
Zusätzlich zu den oben erwähnten Komponenten werden zur Imple­ mentierung der Erfindung auch ein Multiplexer 45, eine Alias­ -Bestimmungslogik 47, eine Alias-Bestimmungssteuerlogik 49 und ein Realadressenregister 51 benötigt. Die zuvor angegebenen Elemente unterstützen Alias-Adressen ohne die Probleme, die bekannten Implementierungen unter Verwendung eines Virtuell­ adressen-Rückschreib-Caches anhaften.
Jede der zuvor genannten Arbeitsstationskomponenten wird im folgenden beschrieben, einschließlich der an dem Betriebssy­ temkern vorzunehmenden Änderungen, wobei die erfindungsgemäß neuen Komponenten besonders hervor­ gehoben werden.
Beschreibung der notwendigen Elemente der Arbeitsstation
Die CPU 11 gibt Buszyklen zum Adressieren von Befehlen und Daten im Speicher (folgend einer Adressenübersetzung) und möglicherweise anderen Systemkomponenten aus. Die CPU-Adresse selbst ist eine virtuelle Adresse von (A) Bits Länge, die Befehlsbytes oder Daten innerhalb eines virtuellen Kontextes besonders identifiziert. Der Buszyklus kann durch ein oder mehrere Steuerfelder charakterisiert werden, um den Buszyklus speziell zu identifizieren. Insbesondere ist ein Lese/Schreib­ -Indikator sowie ein "Typ"-Feld erforderlich. Dieses Feld identifiziert den Speicherbefehl und den Datenadreßraum sowie die Zugriffspriorität (d. h. "Überwacher" oder "Benutzer"-Zu­ griffspriorität) für den Buszyklus. Eine CPU, die in einer Arbeitsstation mit virtueller Adressierung und der Möglichkeit der Unterstützung eines Multi-Benutzer-Betriebssystems verwen­ det werden kann, ist eine MC68020.
Ein anderes notwendiges Element in einer virtuellen Adressen­ -Arbeitsstation mit Rückschreib-Cache, wie sie in Fig. 1 ge­ zeigt ist, ist das virtuelle Cache-Daten­ feld 19, das als Feld von 2N Datenblöcken mit jeweils 2M Bytes organisiert ist. Die 2M Bytes innerhalb jedes Blockes sind mit den M-Adreßbits niedriger Ordnung speziell identifiziert. Jeder der 2N Blöcke ist besonders adressiert als Matrix- oder Speicherfeldelement durch die nächstniedrig­ sten N-Adreßbits. Als virtueller Adreß-Cache sind die (N+M) Bits adressierenden Bytes innerhalb des Cache von dem virtuel­ len Adreßraum von (A+C) Bits. (Die (C) Bits sind Kontext-Bits vom optionellen Kontext ID Register 32, das nachfolgend be­ schrieben werden wird.) Die (N+M) Bits enthalten generell die (P) unübersetzten Seitenbits plus addierte virtuelle Bits aus den die virtuelle Seitenadresse definierenden (A+C-P) Bits.
Das virtuelle Adressen-Cache-Datenspeicherfeld 19, das hier beschrieben wird, ist ein "direkt abgebildeter (direct mapped)" Cache oder ein "Einweg-Satz-Assoziativ-"-Speicher. Diese Cache-Organisation dient nur im Rahmen der vorliegenden Beschreibung zu Erläuterungszwecken und soll die Erfindung nicht beschränken. Die Erfindung kann auch in Verbindung mit Mehrweg- Satz-Assoziativ-Cache-Speichern verwendet werden.
Ein anderes notwendiges Element, das in Fig. 1 gezeigt ist, ist das Virtuelladreß-Cache-Tag-Feld 23, das ein Tag-Feldelement für jeden Datenblock im Cache-Daten-Tag- Feld 19 hat. Das Tag-Feld enthält daher 2N Elemente, von denen jedes ein gültiges Bit (V), ein modifiziertes Bit (M), zwei Schutzbits (P), bestehend aus einem Kontroll- oder Überwacherschutzbit (Supvsr Prot) und einem Schreiben-Erlaubt­ -Bit besteht, und ein Virtuelladreßfeld (VA und optionell CX), wie in Fig. 3 gezeigt ist. Der Inhalt des virtuellen Adreß­ felds identifiziert zusammen mit den zum Adressieren der Cache-Tag und Datenfelder verwendeten Adreßbits niedri­ ger Ordnung speziell den Cache-Block innerhalb des gesamten virtuellen Adreßraums von (A+C) Bits. D.h. das Virtuelladreß- Tag-Feld muß ((A+C)-(M+N)) virtuelle Adreßbits enthal­ ten.
Die Cache-"Hit"-Logik 25 vergleicht virtuelle Zugriffsadressen mit dem Inhalt des Virtuelladreß-Cache-Tag-Adreßfeldes. Innerhalb der Zugriffsadresse adressieren die M-Bits niedrig­ ster Ordnung Bytes innerhalb eines Blocks; die nächstniedrigen N-Bits adressieren einen Block innerhalb des Cache; und die restlichen ((A+C)-(M+N)) Bits treten in Vergleich mit dem virtuellen Tagadreßfeld als Teil der Cache-"Hit"-Logik.
Die Cache-"Hit"-Logik muß bei Systemen mit einem gemeinsam genutzten Betriebssystem die Zugriffe zu Benutzerbefehlen und Daten und zu Überwacherbefehlen und Daten identifizieren. Eine "Hit"-Definition, welche diesen Erfordernissen genügt, ist in Fig. 2a dargestellt, welche Komparatoren 20, ein UND-Gatter 22, ein ODER-Gatter 24 und ein UND-Gatter 26 enthält.
Die MMU 27, welche Adressen innerhalb des virtuellen Raumes in eine physikalische Adresse übersetzt, ist ein anderes notwen­ diges Element. MMU 27 ist organisiert auf der Basis von Seiten von Größe (2P) Bytes, die ihrerseits als Segmente von Größe Seiten gruppiert sind. Das Adressieren innerhalb einer Seite bedingt (P) Bits. Diese (P) Bits sind physikalische Adreßbits, welche keiner Übersetzung bedürfen. Die Rolle der MMU 27 liegt in der Übersetzung der virtuellen Seitenadreßbits ((A+C-P) oder (A-P)) in physikalische Seitenadressen von (MM) Bits. Die zusammengesetzte physikalische Adresse ist dann (MM) Seitenadreßbits mit (P) Bits pro Seite.
MMU 27 ist auch der Ort für die Sicherungs- bzw. Schutzprü­ fung, d. h. den Vergleich der Zugriffsbuszykluspriorität mit der der Seite zugeordneten Sicherung. Um diesen Punkt darzu­ stellen, gibt es zwei Arten von Sicherung oder Schutz, die oder der einer Seite zugeordnet werden kann, nämlich einen Überwacher/Benutzer-Zugriffsbezeichner und einen Schreib­ schutz/Schreibzulassungsbezeichner. Obwohl die vorliegende Erfindung nicht auf diese beiden Schutztypen beschränkt ist, kann bei dieser Seitensicherung eine "Schutzübertretung" re­ sultieren, wenn entweder ein "Benutzer"-Prioritätsbuszyklus auf eine Seite mit "Überwacher"- bzw. "Kontrolleur"-Sicherung zugreift; oder wenn ein "Schreib"-Buszyklus auf eine Seite mit einer "Schreibschutz"-Bezeichnung zugreift.
Die Anwendung der MMU-Schutzprüfung durch die MMU ist in Fig. 2c gezeigt. Die zugehörige Schaltung weist einen Inverter 28, UND-Gatter 30a und 30b, ein ODER-Gatter 34 und ein UND-Gatter 36 auf. Außerdem kann mit einem Virtuelladressen-Rückschreib­ -Cache das Konzept der Schutzprüfung auf das Cache-Speichern nur derjenigen CPU-Zyklen erweitert werden, welche nicht auf die MMU zugreifen. Eine solche Nur-Cache-Schutzlogik ist in Fig. 2b gezeigt und weist einen Inverter 42, UND-Gatter 44a und 44b, ein ODER-Gatter 46 und ein UND-Gatter 48 auf.
Ferner ist in Fig. 1 ein Hauptspeicher 31 gezeigt, der inner­ halb des physikalischen Adreßraums adressierbar ist; die Steu­ erung des Hauptspeicherzugriffs geschieht über die Arbeitssta­ tions-Steuerlogik 40.
Rückschreibpuffer 39 ist ein Register mit einem aus dem Cache­ -Datenfeld 19 geladenen Cache-Datenblock. Rückschreibpuffer 39 wird immer dann geladen, wenn ein vorhandener Cache-Block ersetzt werden soll. Dies kann aufgrund der Notwendigkeit zum Aktualisieren des Cache-Blocks mit neuen Inhalten oder eines Löschers (flushing) des Blocks bedingt sein. In jedem Falle bestimmt in einem Rückschreib-Cache der Zustand des Cache-Tags für einen existierenden Cache-Block, ob dieser Block in den Speicher zurückgeschrieben werden muß. Wenn die Tags angeben, daß der Block gültig und in der weiter unten defi­ nierten Weise modifiziert ist, so muß der Blockinhalt in den Speicher 31 rückgeschrieben werden, wenn der Cache-Block er­ setzt wird. Der Rückschreibpuffer 39 speichert solche Daten zeitweilig zwischen, bevor sie in den Speicher geschrieben werden.
Die Arbeitsstations-Steuerlogik 40 steuert die Gesamtoperation der in Fig. 1 gezeigten Arbeitsstationselemente. Bei dem be­ vorzugten Ausführungsbeispiel hat die Steuerlogik 40 die Im­ plementierung einiger Zustandsmaschinen, die in den Fig. 4 und 6 bis 8 gezeigt sind und genauer in Verbindung mit der Beschreibung der Alias-Bestimmungssteuerlogik 49 beschrieben werden, wobei die Steuerlogik 49 bei dem bevorzugten Ausfüh­ rungsbeispiel ebenfalls in die Arbeitsstations-Steuerlogik integriert ist.
Beschreibung von optionellen Komponenten der Arbeitsstation
Das Kontext ID Register 32 ist ein optionelles externes Adreß­ register, das weitere virtuelle Adreßbits zur Identifizierung eines virtuellen Kontextes oder Prozesses enthält. Dieses Register enthält C-Bits, identifiziert eine Gesamtzahl von (2**C) aktiven Benutzerprozessen; der gesamte virtuelle Adreß­ raum hat die Größe von 2**(A+C).
Eine wichtige Komponente dieses virtuellen Adreßraums von 2**(A+C) Bits ist der vom Betriebssystem besetzte Adreßraum.
Das Betriebssystem ist allen Benutzerprozessen gemeinsam und ist daher einem gemeinsamen Adreßraum über alle aktiven Benut­ zerprozesse zugeordnet. D.h. die (C) Kontext-Bits haben keine Bedeutung für die Qualifizierung der Adressen von Seiten in­ nerhalb des Betriebssystems. Statt dessen wird angenommen, daß das Betriebssystem innerhalb eines gemeinsamen, exklusiven Bereichs am oberen Ende der (2**A) Bytes des virtuellen Adreß­ raums für jeden aktiven Kontext liegt. Keine Benutzerseiten können innerhalb dieses Bereichs liegen. So sind die Betriebs­ system-Seitenadressen für zwei verschiedene Benutzerprozesse identisch, während die Benutzerseiten für die beiden Prozesse unterschiedlich sind. Alle Seiten innerhalb des Betriebssy­ stems sind mit "Überwacher"-Schutz markiert.
Arbeitsstationen des Typs, bei dem die Erfindung Verwendung finden kann, können auch eine Cache-Flush-Logik 33 zur Entfer­ nung ausgewählter Blöcke aus dem virtuellen Cache enthalten, wenn virtuelle Adressen umgeordnet werden sollen.
Die Cache-Flush-Logik 33 wird hier nur soweit beschrieben, wie ihrer Rolle als Komponente in einem Virtuelladressen-Rück- Schreib-Cache-System zukommt. Wenn ein Bereich von Adressen (beispielsweise eine virtuelle Seitenadresse) umgeordnet wer­ den soll, so müssen alle Adressen aus diesem Bereich entfernt oder "gespült = flushed" werden, bevor die neue Adressenzuord­ nung hergestellt werden kann. Ein Cache-Block wird "ausge­ spült" durch Ungültigmachen des gültigen Bits in seinen Tags und Rückschreiben des Blocks in den Speicher, wenn der Block modifiziert worden ist.
Zusätzlich zur CPU 11 als Quelle von Buszyklen kann die Ar­ beitsstation ein oder mehrere externe Eingabe/Ausgabe-(I/O-)- Geräte, z. B. eine DVMA-Logik 35 aufweisen. Diese externen I/O-Geräte sind in der Lage, Buszyklen auszugeben, welche parallel zur CPU auf einen oder mehrere "Typen" von virtuellen Adreßräumen zugreifen. Die virtuelle Adresse entweder von der CPU 11 oder der DVMA-Logik 35 wird zusammen mit der Adresse im Kontext ID Register 32 als Zugriffsadresse bezeichnet.
Ein anderes optionelles Element ist der Datenbuspuffer 37, der bei dem bevorzugten Ausführungsbeispiel in Form von zwei Puf­ fern implementiert ist, um den Datenfluß zwischen einem 32-Bit-Bus und einem 64-Bit-Bus zu steuern. Derartige Puffer werden benötigt, wenn der CPU-Datenbus 32 Bits und der Cache­ -Datenfeld-Datenbus 64 Bits ist.
Beschreibung der besonderen neuen Komponenten der Arbeitsstation
Wie oben angegeben, macht die Erfindung von zwei unterschied­ lichen Strategien zur Lösung der aus Alias-Adressen resultie­ renden Datenkonsistenzprobleme Gebrauch. Beide Strategien bedingen die Wechselwirkung des Betriebssystems mit spezieller Cache-Hardware, um konsistente Daten zu gewährleisten.
Die erste Strategie macht es erforderlich, daß alle Alias­ -Adressen, welche sich auf dieselben Daten richten bzw. abbil­ den, hinsichtlich ihrer Adreßbits niedriger Ordnung überein­ stimmen, um sicherzustellen, daß sie denselben Speicherplatz benutzen, wenn die Daten Cache-gespeichert werden sollen. Die Erfindung benutzt die Alias-Bestimmungslogik 47, die ein Real­ adreßkomparator ist, um Alias-Adressen an Speicherzugriffen festzustellen, welche den Cache "verfehlen", und um die Cache­ -Datenaktualisierung zu steuern, damit gewährleistet ist, daß alle Alias-Adressen auf konsistente Daten innerhalb desselben Cache-Platzes hinweisen.
Die Kernadreß-Operationsmodulen, welche diese erste Strategie implementieren, zwingen Alias-Adressen, ihre Adreßbits niedri­ ger Ordnung in Übereinstimmung zu bringen, so daß Alias-Adres­ sen garantiert den gleichen Cache-Platz benutzen. Wenn der Cache die Größe von 2N Datenblöcken hat, jeweils mit 2M Bytes, so müssen wenigstens die (N+M) Bits niedriger Ordnung der Alias-Adressen übereinstimmen. Dies gilt für Alias-Adres­ sen innerhalb desselben Prozesses ebenso wie für Alias-Adres­ sen zwischen Prozessen. Solange diese Bedingung für direkt abgebildete (mapped) Cache-Speicher erfüllt ist, bilden Alias­ -Adressen in demselben Cache-Block ab, und im Mehrwegesatz-As­ soziativspeicher bilden Alias-Adressen in demselben Cache-Satz ab. Die zweite Strategie verhindert, daß Daten durch Verwen­ dung eines "Nicht-Cache"-Bits, das für jede Seite in der MMU 27 definiert ist, Cache-gespeichert werden. Mit anderen Wor­ ten, jeder Seitendeskriptor in der MMU 27 hat ein "Nicht­ -Cache"-Bit, das bestimmt, ob Befehle und Daten aus dieser Seite in den Cache-Speicher geschrieben werden. Wenn dieses Steuerbit für eine Seite gesetzt ist, so werden alle Datenzu­ griffe zu dieser Seite direkt auf den und von dem Hauptspei­ cher unter Umgehung des Cache-Speichers zugegriffen. Bei der Umgehung des Cache-Speichers wird das Problem der virtuellen Cache-Datenkonsistenz vermieden.
Da Alias-Adressierung möglich ist, wenn eine Seite bei einer MMU-Seitenangabe mit "Nicht-Cache" markiert ist, muß die Mar­ kierung "Nicht-Cache" bei allen Alias-Seiteneingaben vorgese­ hen werden. Anderenfalls wäre eine Datenkonsistenz nicht ga­ rantiert.
Alias-Adressenerzeugung für Benutzerprozesse wird durch den Kern (kernel) derart gesteuert, daß alle Benutzerprozesse die erste Strategie zur Gewährleistung der Datenkonsistenz unter Alias-Adressen verwenden. Einige Adressen für das Betriebssy­ stem können jedoch nicht geändert werden, um die Adressierbe­ dingungen für die erste Strategie zu erfüllen. Diese System­ -Alias-Adressen werden statt dessen mit der zweiten Strategie verarbeitet, d. h. der Zuordnung zu " Nicht-Cache" -Seiten.
Im folgenden wird eine Funktionsbeschreibung dessen gegeben, was zur Herstellung der Datenkonsistenz in einem direkt abge­ bildeten virtuellen Adressen-Rückschreib-Cache unter Verwen­ dung einer Kombination der beiden Strategien benötigt wird. Wenn ein CPU 11- oder DVMA 35-Speicherzugriffszyklus den Cache "verfehlt", so wird die virtuelle Zugriffsadresse von der MMU übersetzt. Die MMU-Übersetzung bestimmt, ob die zugegriffene Seite eine "Nicht-Cache"-Seite ist und ob der Zugriff eine Schutzverletzung beinhaltet. Wenn der Zugriff gültig und ein Zugriff zu einer Cache-speicherbaren Seite ist, so wird der Cache mit dem der Zugriffsadresse entsprechenden Cache-Block aktualisiert.
Der vorhandene Inhalt des Cache an dem der Zugriffsadresse entsprechenden Platz muß geprüft werden, um eine mögliche Alias-Adresse festzustellen. Wenn der existierende Cache-Block gültig und modifiziert ist, so muß die übersetzte Adresse des Cache-Blocks mit der übersetzten Zugriffsadresse verglichen werden, um die Quelle der validen Daten zur Aktualisierung des Caches festzustellen.
Der Realadressenvergleich, der von der Alias-Bestimmungslogik 47 durchgeführt wird, nimmt als Eingänge die übersetzte Bus­ zyklus-Zugriffsadresse vom Realadressenregister 51 und die übersetzte Cache-Adresse von der MMU 27.
Wenn der vorhandene Cache-Block gültig ist und die übersetzten Adressen vergleichbar sind, so sind die Zugriffsadresse und die Cache-Block-Adresse Alias. Wenn der Cache-Block modifi­ ziert ist, so sind die existierenden Cache-Daten die neuesten Daten, und die Hauptspeicherdaten an dieser Adresse sind alt.
Wenn die übersetzten Adressen vergleichbar sind, jedoch der Cache-Block nicht modifiziert ist, so sind die alten Cache-Da­ ten und die Speicherdaten identisch und können beide als Quel­ le für die Aktualisierung des Cache benutzt werden.
Sobald die Quelle für die gültigen Blockdaten bestimmt worden ist, kann der Zugriffszyklus abgeschlossen werden. Bei Lese­ zyklen führt der Buszyklus Daten entweder direkt aus der Quel­ le oder aus dem Cache nach der Cache-Aktualisierung zurück, was von der Implementierung abhängig ist. Bei Schreib-Zyklen können die Zugriffsdaten in den Cache geschrieben werden. Sowohl der Umfang der Cache-Aktualisierungen als auch die Cache-Datenausrichtung sind implementierungsabhängig.
Um Datenkonsistenz zu garantieren, macht das Schreiben in eine Seite erforderlich, daß alle Bezugnahmen auf diese Seite (Le­ sen oder Schreiben) dieser Restriktion unterliegen. Keine Be­ dingung wird an die Alias-Adressierung von Nur-Lese-Seiten gestellt.
Das bevorzugte Ausführungsbeispiel für den die Alias-Bestim­ mungslogik 47 beinhaltenden Adressenweg ist in Fig. 3 gezeigt. Wie in Fig. 3 gezeigt ist, enthält der Adressenweg die grund­ sätzlichen Komponenten für die Adressensteuerung in einem Virtuelladressen-Rückschreib-Cache. Für die Alias-Adressenun­ terstützung werden auch ein Virtuelladressen-Register 52 (VAR) für die virtuelle Adresse (CX und VA) und ein Cache-Block-Gül­ tigkeitsbit (V), ein Multiplexer 45 zum Multiplexen der virtu­ ellen Adresse des Virtuelladressen-Registers, ein Realadres­ senregister 51 , eine Alias-Bestimmungslogik 47, ein UND-Gatter 53 (dessen Eingänge durch das Gültigkeitsbit vom VAR und das Ausgangssignal der Alias-Bestimmungslogik gebildet werden), und ein Realadressen-Übereinstimmungsflipflop 55 benötigt, wobei letzteres gesetzt ist, wenn eine Realadressenüberein­ stimmung festgestellt wird.
Der Datenweg vom Cache 19 zum Hauptspeicher 31 verläuft über zwei 64-Bit-Busse 56 und 58. Der CPU-Datenweg 60 ist 32 Bits, angegeben als D(31 : 0). Bei Lesebuszyklen wählt das Cache­ -Adreßbit A(2), welcher der beiden 32-Bit-Puffer 37 Daten vom 64-Bit-Cache-Datenbus 56 auf dem 32-Bit-CPU-Datenbus 60 akti­ vieren kann. Die Alias-Bestimmungslogik 49 steuert die Quelle der Daten bei Lesezyklus-Cache-Fehlgriffen (misses) (der Cache oder Speicher) und ob der Cache mit den Speicherdaten bei Schreibzyklus-Cache-Fehlgriffen aktualisiert wird, wie dies anhand der Datenzustandsmaschine gemäß Fig. 6 und 7 erläu­ tert wird.
In den Fig. 3 und 5 sind zur Vermeidung einer Linienhäufung nicht alle Steuerleitungen gezeigt. Die für die richtige Ope­ ration der erfindungsgemäßen Anordnung notwendigen Steuerlei­ tungen ergeben sich jedoch aus dem Ablaufdiagramm der in den Fig. 4 und 6 bis 8 gezeigten Zustandsmaschinen.
In den Ablaufdiagrammen werden die folgenden Abkürzungen und Bezeichnungen benutzt:
MUX - Multiplexer 45
VA - virtuelle Adresse
RA - reale Adresse
OE - Ausgangsaktivierung
Ack - Bestätigung
Assert - Anlegen
Deassert - Unterbrechen bzw. Abnehmen
Translate - Übersetze
Update - Aktualisiere
State - Zustand
Merge - Mische
Retry - Neuversuch
Cache Hit? - Hat Cache "Hit"-Logik 25 einen Cache-Hit (Treffer) festgestellt? (Fig. 2a)
Cache Protect Violation? - Hat Steuerlogik 40 eine Cache-Schutzübertretung festgestellt? (Fig. 2b)
Memory Busy? - Wurde der Speicher als besetzt festgestellt?
MMU Protect Violation? - Hat Steuerlogik 40 eine MMU- Schutzübertretung festge­ stellt? (Fig. 2c)
RAR - Realadressenregister 51
CLK - Takt
Adr - Adresse
Mem Adr Strobe - Speicher 31 Adreßmarkierimpuls
VAR - Virtuelladressenregister 52
Mem Adr Ack? - Wurde eine Speicheradressen­ bestätigung vom Speicher 31 angelegt?
Mem Data Strobe 0? - Hat Speicherdatenstrobe 0 angestanden?
Mem Data Ack 0? - Hat Speicherdatenbestätigung 0 angestanden?
Mem Data Strobe 1? - Hat Speicherdatenstrobe 1 angestanden?
Mem Data Ack 1? - Hat Speicherdatenbestätigung 1 angestanden?
Clk Write Back Buffer - Taktrückschreibpuffer 39
Real Adr Match? - Wurde eine Realadressenüber­ einstimmung festgestellt (Flipflop 55)?
Don′t Cache Page? - Hat Steuerlogik 40 eine Nicht- Cache-Seite aus der MMU 27 festgestellt?
CPU Read Cycle? - Ist CPU 11 in einem Lese­ zyklus?
Clk Data Reg. - Taktdatenregister 61
Valid and Modified
Write Back Data? - Hat Steuerlogik 40 ein gülti­ ges Bit (V) und ein modifi­ ziertes Bit (M) festgestellt?
Write to Don′t Cache Page - Hat Steuerlogik 40 einen CPU- Schreibbefehl in eine Nicht- Cache-Seite festgestellt?
Start No Cache Write? - Hat Steuerlogik 40 Start Nicht-Cache-Schreiben festge­ stellt?
Start Write Back Cycle? - Hat Steuerlogik 40 Start- Rückschreib-Zyklus festge­ stellt?
Cache Miss - Cache-Fehlgriff
Missmatch - Keine Übereinstimmung festge­ stellt
Complete Write to Memory - Vervollständige Schreib­ operation in Speicher
Ähnliche Abkürzungen finden in den Zeitdiagrammen gemäß den Fig. 9 bis 11 Verwendung.
Die Adressenzustandsmaschine, die in den Fig. 4a und 4b gezeigt ist, definiert einige der auf den Adressenverarbei­ tungsabschnitt des Caches bezogenen Steueroperationen. Die Erfindung wird integriert über das Takten des Realadressen­ -Übereinstimmungs-Flipflops 55 am Zustand (o). Die Zustands- Tags 23 werden als gültig während des Zustandes (w) ge­ schrieben, und zwar im Anschluß an eine erfolgreiche Übertra­ gung aller Blockdaten aus dem Speicher 31.
Die in den Fig. 6a und 6b sowie 7a-7d gezeigte Datenzu­ standsmaschine definiert gewisse Steueroperationen, die auf den Datenübertragungsabschnitt des Cache bezogen sind. Wie dargestellt, wird nach dem Zustand (g) ein Test auf ein Schreiben in eine Nicht-Cache-Seite durchgeführt; die Verar­ beitung dieses Schreibbefehls in den Speicher ist auch in dem Weg-Folgezustand (i.dw) in der Datenzustandsmaschine beschrie­ ben. Dem Zustand (o) folgend, wird ein Test nach einem Nicht­ -Cache-Seiten-Zugriff (dieses Mal nach Lesedaten) durchge­ führt. Die Nicht-Cache-Lesesteuerung nimmt den gleichen Weg wie die Keine-Realadressen-Übereinstimmung, und zwar bis zu Zuständen (q.nr) und (u.nr). Hier sperrt ein Test nach Nicht­ -Cache-Seiten Cache-Aktualisierungen in Zuständen (s.nr) und (w.nr).
Die Rückschreib-Zustandsmaschine, die in Fig. 8 gezeigt ist, definiert die Steueroperation des Rückschreibbuszyklus zum Speicher. Dieser Zyklus kann parallel zu CPU-Cache-Zugriffen ausgeführt werden, da sowohl die Rückschreib-Steueroperationen als auch der Datenweg unabhängig von Cache-Zugriffssteuerungen und Datenweg sind. Wie weiter unten beschrieben werden wird, bewirkt das "Speicher belegt"-Signal, daß die Adreß- und Da­ tenzustandsmaschinen warten, bis ein vorausgegangener Rück­ schreibzyklus abgeschlossen ist.
Das in Fig. 9a gezeigte Cache-Schreibfehlgriff-Zeitdiagramm definiert die Gesamtzeitgabe eines CPU-Schreibbuszyklus zu einer Cache-fähigen Seite im Speicher, welche den Cache ver­ fehlt. Der Cache-Hit und die Schutzprüfung finden im Zyklus (c) dieses Diagramms statt.
Ein Teil der Fehlgriff-Handlingfolge umfaßt das Laden des zu ersetzenden aktuellen Cache-Blocks in den Rückschreibpuffer 39 während der Zyklen (i) und (m). Die übersetzte Adresse für den aktuellen Cache-Block wird auch in das Realadreß-Register 51 im Zyklus (o) geladen. Das Realadressen-Übereinstimmungslatch (Flipflop 55) wird auch beim Zyklus (o) getaktet. Wenn der aktuelle Cache-Block sowohl gültig als auch modifiziert ist aus einem früheren CPU- (oder DVMA)-Schreibzyklus, so wird dieser Cache-Block durch einen Rückschreibbuszyklus in den Speicher 31 zurückgeschrieben, wie durch die Speicherdatenbus­ zeitgabe und die Rückschreib-Zustandsmaschine, Fig. 11b bzw. 8 beschrieben ist.
Ein aktives Realadressen-Übereinstimmungslatch (Flipflop 55) gibt eine Alias-Adressenübereinstimmung an. Wenn keine Alias­ -Übereinstimmung existiert, werden die CPU-Schreibdaten mit Blockdaten gemischt, die aus dem Speicher bei der ersten Da­ tenübertragung eines Blocklesespeicher-Buszyklus zurückgeführt wurden. Während der Zyklen (q) bis (u) sind die CPU-Schreib­ ausgabe-Aktivierungssteuerpuffer 37 aktiv nur für die von der CPU zu schreibenden Bytes, während das Datenregister-Ausgangs­ aktivierungs-Steuerdatenregister 61 für alle anderen Bytes aktiv ist. Während der zweiten Datenübertragung, Zyklus (w), sind die Datenregister-Ausgangsaktivierungen für alle Bytes aktiv.
Wenn es eine Alias-Übereinstimmung gibt, werden die CPU-Daten im Zustand (s) in den Datencache geschrieben, und die Daten vom Speicher 31 werden ignoriert.
Die in Fig. 9b gezeigte Zeitgabe für das Schreibe-in-Nicht­ -Cache-Seite definiert die Gesamtzeitgabe eines CPU-Schreib­ buszyklus zum Speicher für Zugriffe auf eine Nicht-Cache­ -Seite. Der Cache-Hit, der im Zyklus (c) auftritt, zeigt stets einen Fehlgriff (keinen Hit) an.
Der Schreibe in eine Nicht-Cache-Seite-Fall unterscheidet sich von dem Cache-Fehlgriff-Fall für eine Schreiboperation in eine Cache-speicherbare Seite dadurch, daß der Cache weder durch CPU- noch durch Speicherdaten aktualisiert wird. Die Implemen­ tierung verwendet einen speziellen Speicherbuszyklus, genannt Schreibe in Nicht-Cache-Seite-Zyklus (Fig. 11c), um den Spei­ cher direkt zu aktualisieren. Zu beachten ist, daß das Real­ adreß-Übereinstimmungslatch keine Bedeutung für diesen Fall hat.
Das in Fig. 10a gezeigte Lese-Cache-Fehlgriff-Zeitdiagramm definiert die gesamte Zeitgabe eines CPU-Lesebuszyklus in eine Cache-speicherbare Seite im Speicher, welche den Cache ver­ fehlt. Der Cache-Hit und die Schutzprüfung finden im Zyklus (c) dieses Diagramms statt.
Ein Teil dieser Fehlgriff-Handlingfolge umfaßt das Laden des zu ersetzenden Cache-Blocks in den Rückschreibpuffer 39 wäh­ rend der Zyklen (i) und (m). Die übersetzte Adresse für den aktuellen Cache-Block wird auch in das Realadressen-Register 51 in Zyklus (o) geladen. Das Realadressen-Übereinstimmungs­ latch (Flipflop 55) wird ebenfalls beim Zyklus (o) getaktet. Wenn der aktuelle Cache-Block sowohl gültig als auch aus einem früheren CPU- (oder DVMA)-Schreibzyklus modifiziert ist, so wird dieser Cache-Block über einen Rückschreib-Buszyklus in den Speicher 31 rückgeschrieben, was sowohl in der Speicherda­ tenbuszeitgabe als auch der Rückschreib-Zustandsmaschine, Fig. 11b bzw. 8, beschrieben ist.
Ein aktives Realadressen-Übereinstimmungslatch (Flipflop 55) bezeichnet eine Alias-Adressenübereinstimmung. Wenn es keine Alias-Adressenübereinstimmung gibt, werden Daten zur CPU gele­ sen, indem gleichzeitig die Daten über Puffer 37, die von einem in den Zuständen (q) bis (u) aktiven Steuersignal, CPU- Lese-Ausgangsaktivierung, aktiviert werden, zur CPU umgelei­ tet werden und der Cache im Zustand (s) aktualisiert wird. Der Speicher ist so ausgebildet, daß er die "fehlenden Daten" bei der ersten 64-Bit-Übertragung eines Block-Lese-Speicherbus­ zyklus und die anderen 64 Bits bei der nachfolgenden Übertra­ gung stets zurückführt. Nach der Rückführung der CPU-Lesebus­ -Zyklusdaten kann die CPU interne Zyklen durchlaufen, während der Cache mit der zweiten Datenübertragung vom Speicher aktua­ lisiert wird.
Wenn es eine Alias-Adressenübereinstimmung gibt, werden Daten direkt aus dem Cache 19 zur CPU 11 gelesen, und die Daten vom Speicher 31 werden ignoriert.
Die Zeitgabe für das Lesen aus einer Nicht-Cache-Seite ist in Fig. 10b gezeigt und definiert die Gesamtzeitgabe eines CPU- Lesebuszyklus zum Speicher für Zugriffe auf eine Nicht-Cache­ -Seite. Der Cache-Hit, der im Zustand (c) auftritt, gibt immer einen Fehlgriff (keinen Hit bzw. Treffer) an.
Der Fall des Lesens von einer Nicht-Cache-Seite unterscheidet sich von dem Fall des Cache-Fehlgriffs beim Lesen aus einer Cache-fähigen Seite dadurch, daß der Cache nicht mit Speicher­ daten aktualisiert wird. Die Implementierung benutzt denselben Block-Lese-Speicherbuszyklus wie im Falle des Cache-Fehlgriffs (siehe das Speicherdatenbus-Zeitdiagramm). Das Realadressen­ -Übereinstimmungslatch (Flipflop 55) hat keine Bedeutung für diesen Fall.
Die in den Fig. 11a-11c gezeigte Speicherdatenbus-Zeitgabe zeigt die Zeitgabe von Block-Lesen, Rückschreiben und Schrei­ ben in Nicht-Cache-Seiten-Buszyklen. Da die Cache-Blockgröße 128 Bits beträgt, macht jede Cache-Block-Aktualisierung zwei Datentransfers erforderlich. Wie oben angegeben, werden die die von CPU 11 adressierten Daten enthaltenden 64 Bits stets am ersten Transfer für Block-Lesebuszyklen rückgeführt. Das "Speicher belegt"-Steuersignal, das während des Rückschreib­ zyklus aktiv ist, wird zur Verhinderung des Starts des näch­ sten Cache-Fehlgriffzyklus benutzt, bis der vorhergehende Rückschreibzyklus zum Abschluß kommen kann.
Beim Schreiben in Nicht-Cache-Seite-Buszyklen definiert das 8-Bit Byte Markierungsfeld, das während der Adressenübertra­ gungsphase des Zyklus ausgesandt wird, welches der 8 Datenby­ tes, die während der Datenphase gesendet wurden, im Speicher 31 aktualisiert werden sollen.
Zusätzlich zu der zuvor beschriebenen Hardware muß der Be­ triebssystemkern auf zwei grundsätzliche Weisen modifiziert werden, um die Alias-Adressierung zu unterstützen:
  • 1) Die Betriebssystem-Utilitäten, welche die Benutzer-Alias­ -Adressen erzeugen, müssen derart modifiziert werden, daß Alias-Adressen zuverläsig die Minimalbedingung erfüllen, daß ihre Adreßbits niedriger Ordnung (N+M) übereinstimmen.
  • 2) Beispiele von Alias-Adressen innerhalb des Betriebssystems, welche mit der Regel der Übereinstimmung der Bits niedriger Ordnung (N+M) nicht in Übereinstimmung gebracht werden können, müssen den "Nicht-Cache" -Seiten zugewiesen werden.

Claims (5)

1. Verfahren zum Adressieren eines im Rückschreib-Modus be­ triebenen virtuellen Cache-Speichers (23, 19) mit einem Daten- Cache-Speicher (19) und einem Tag-Speicher (23),
wobei eine ein Betriebssystem und mindestens einen Prozeß ausführende CPU (11) virtuelle Adressen an eine Speichermanage­ menteinheit (27) zur Übersetzung in physikalische Adressen ausgibt,
wobei eine vorgegebene Anzahl P am geringsten bewerteter Seitenbits der virtuellen Adresse unübersetzt in die physikali­ sche Adresse übernommen wird und die verbleibenden höherwerti­ gen virtuellen Seitenadreßbits (C+A-P) in eine physikalische Seitenadresse übersetzt werden,
wobei die virtuellen Adressen zur Adressierung des virtuel­ len Cache-Speichers (23, 19) in drei Abschnitte unterteilt werden,
wobei ein erster Abschnitt ((C+A)-(M+N)) der am höchsten bewerteten Bits als Tag verwendet wird, ein zweiter Abschnitt von N Bit Breite als Index den Tag-Speicher (23) und einen Block des Daten-Cache-Speichers (19) adressiert und ein dritter Abschnitt der M am geringsten bewerteten Bits ein Element in dem Block des Daten-Cache-Speichers (19) auswählt, dadurch gekennzeichnet,
  • a) daß eine erste und eine zweite virtuelle Adresse, die auf dieselbe physikalische Adresse abgebildet werden (Aliasing), derart vom Betriebssystem geändert werden, daß ihre N+M am geringsten bewerteten Bits übereinstimmen,
    wobei die N+M Bits, die nicht vom Betriebssystem veränder­ baren P Seitenbits und zusätzlich (N+M)-P am geringsten bewer­ tete virtuelle Seitenadreßbits umfassen, und
  • b) daß die die erste und die zweite virtuelle Adresse ent­ haltenden virtuellen Speicherseiten als nicht-cache-speicherbar markiert werden, wenn die (N+M)-P am geringsten bewerteten virtuellen Seitenadreßbits der ersten und zweiten virtuellen Adressen nicht vom Betriebssystem geändert werden können.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ferner
  • c) bei einem Lesezyklus-Cache-Fehlversuch festgestellt wird, ob die von der CPU ausgegebene virtuelle Adresse eine Alias-Adresse ist,
  • d) die Daten aus dem Daten-Cache-Speicher (19) gelesen bzw. in ihn geschrieben werden, wenn die virtuelle Adresse eine Alias- Adresse ist, und
  • e) anderenfalls die Daten aus einem Hauptspeicher (31) gewonnen werden und im Daten-Cache-Speicher (19) aktualisiert werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß zum Feststellen des Vorliegens einer Alias-Adresse
  • c1) die von der CPU ausgegebene virtuelle Adresse in eine erste physikalische Adresse übersetzt und die physikalische Adresse in einem Realadreßregister (51) gespeichert wird,
  • c2) die virtuelle Adresse, die dem Tag des Cache-Blocks entspricht, der durch die von der CPU ausgegebene virtuelle Adresse indiziert wird, in einem virtuellen Adreßregister (52) gespeichert und in eine zweite physikalische Adresse übersetzt wird,
  • c3) ein mit dem Tag gespeichertes Gültig-Bit (Va1) in dem virtuellen Adreßregister (52) gespeichert wird,
  • c4) die erste und die zweite physikalische Adresse mit ei­ nem Komparator (47) verglichen werden und ein Komparatoraus­ gangssignal erzeugt wird, wenn die erste physikalische Adresse mit der zweiten physikalischen Adresse übereinstimmt und
  • c5) das Komparatorausgangssignal und das in dem virtuellen Adreßregister (52) gespeicherte Gültig-Bit (Va1) UND-verknüpft werden, wobei ein eine gültige Alias-Adresse anzeigendes Signal erzeugt wird.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch ge­ kennzeichnet, daß beim Schritt b) innerhalb eines Seitendes­ kriptors für die virtuelle Speicherseite in der Speichermanage­ menteinheit ein Markierungsbit für eine nicht-cache-speicher­ bare Seite gesetzt wird.
5. Einrichtung zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 4 mit einer CPU (11), einem Hauptspeicher (31), einem Daten-Cache-Speicher (19), einem Cache-Tag-Speicher (23), einer Speichermanagementeinheit (27) und einer Steuerlo­ gik (40),
dadurch gekennzeichnet,
daß eine Alias-Bestimmungslogik (47, 51, 52, 53) mit der Speichermanagementeinheit (27) und dem Cache-Tag-Speicher (23) gekoppelt ist zum Feststellen, ob eine von der CPU (11) ausge­ gebene virtuelle Adresse eine Alias-Adresse ist, und
daß die Alias-Bestimmungslogik (47, 51, 52, 53) aufweist:
  • a) ein mit der Speichermanagementeinheit (27) gekoppeltes Realadreßregister (51) zum Speichern einer ersten übersetzten physikalischen Adresse,
  • b) einen mit der Speichermanagementeinheit (27) und dem Realadreßregister (51) gekoppelten Komparator (47) zum Verglei­ chen einer in dem Realadreßregister (51) gespeicherten ersten physikalischen Adresse mit einer von der Speichermanagementein­ heit (27) übersetzten zweiten physikalischen Adresse;
  • c) ein mit dem Cache-Tag-Speicher (23) und der Speicherma­ nagementeinheit (27) gekoppeltes Virtuelladreßregister (52) zum Speichern von Tag-Bits und eines Gültig-Bits; und
  • d) ein UND-Gatter (53) mit einem mit dem Ausgang des Kompa­ rators (47) gekoppelten ersten Eingang und einem mit dem Gül­ tig-Bit innerhalb des Virtuelladreßregisters (52) gekoppelten zweiten Eingang.
DE3832758A 1987-10-02 1988-09-27 Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers Expired - Fee Related DE3832758C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10463587A 1987-10-02 1987-10-02

Publications (2)

Publication Number Publication Date
DE3832758A1 DE3832758A1 (de) 1989-04-13
DE3832758C2 true DE3832758C2 (de) 1996-05-30

Family

ID=22301527

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3832758A Expired - Fee Related DE3832758C2 (de) 1987-10-02 1988-09-27 Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers

Country Status (7)

Country Link
JP (1) JPH071489B2 (de)
AU (1) AU609519B2 (de)
CA (1) CA1301354C (de)
DE (1) DE3832758C2 (de)
FR (1) FR2621408A1 (de)
GB (1) GB2210479B (de)
HK (1) HK95493A (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
US5813046A (en) * 1993-11-09 1998-09-22 GMD--Forschungszentrum Informationstechnik GmbH Virtually indexable cache memory supporting synonyms
GB2293670A (en) * 1994-08-31 1996-04-03 Hewlett Packard Co Instruction cache
US6189074B1 (en) * 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
US6446189B1 (en) 1999-06-01 2002-09-03 Advanced Micro Devices, Inc. Computer system including a novel address translation mechanism
US6510508B1 (en) 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
US6665788B1 (en) 2001-07-13 2003-12-16 Advanced Micro Devices, Inc. Reducing latency for a relocation cache lookup and address mapping in a distributed memory system
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US11853231B2 (en) 2021-06-24 2023-12-26 Ati Technologies Ulc Transmission of address translation type packets

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54148329A (en) * 1978-05-15 1979-11-20 Toshiba Corp Buffer memory control system and information processor containing buffer memory
JPS595482A (ja) * 1982-06-30 1984-01-12 Fujitsu Ltd キヤツシユバツフア装置管理方式
JPS62145341A (ja) * 1985-12-20 1987-06-29 Fujitsu Ltd キヤツシユメモリシステム
EP0282213A3 (de) * 1987-03-09 1991-04-24 AT&T Corp. Speicherverwaltungseinheit mit simultanem Kontext

Also Published As

Publication number Publication date
JPH01108651A (ja) 1989-04-25
HK95493A (en) 1993-09-24
GB2210479A (en) 1989-06-07
CA1301354C (en) 1992-05-19
JPH071489B2 (ja) 1995-01-11
AU609519B2 (en) 1991-05-02
FR2621408A1 (fr) 1989-04-07
DE3832758A1 (de) 1989-04-13
AU2242288A (en) 1989-04-06
GB2210479B (en) 1992-06-17
FR2621408B1 (de) 1994-04-22
GB8819017D0 (en) 1988-09-14

Similar Documents

Publication Publication Date Title
DE3832912C2 (de) Virtuell adressierbare Cache-Speichereinrichtung
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE112005003863B3 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE2350215C2 (de) Rechenanlage
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE69637294T2 (de) Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
DE3151745C2 (de)
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE2241257B2 (de) Datenverarbeitende Anlage
DE4410060A1 (de) Rechenvorrichtung
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee