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-SpeichersInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page 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.
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.
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.
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
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,
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:
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.
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)
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)
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 |
-
1988
- 1988-08-10 GB GB8819017A patent/GB2210479B/en not_active Expired - Fee Related
- 1988-09-16 CA CA000577716A patent/CA1301354C/en not_active Expired - Fee Related
- 1988-09-20 AU AU22422/88A patent/AU609519B2/en not_active Ceased
- 1988-09-27 DE DE3832758A patent/DE3832758C2/de not_active Expired - Fee Related
- 1988-09-30 FR FR8812827A patent/FR2621408A1/fr active Granted
- 1988-10-03 JP JP63247551A patent/JPH071489B2/ja not_active Expired - Fee Related
-
1993
- 1993-09-16 HK HK954/93A patent/HK95493A/xx not_active IP Right Cessation
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 |