DE3832758A1 - Computerisierte arbeitsstation - Google Patents
Computerisierte arbeitsstationInfo
- Publication number
- DE3832758A1 DE3832758A1 DE3832758A DE3832758A DE3832758A1 DE 3832758 A1 DE3832758 A1 DE 3832758A1 DE 3832758 A DE3832758 A DE 3832758A DE 3832758 A DE3832758 A DE 3832758A DE 3832758 A1 DE3832758 A1 DE 3832758A1
- Authority
- DE
- Germany
- Prior art keywords
- cache
- address
- addresses
- alias
- page
- 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.)
- Granted
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 eine computerisierte Arbeitsstation,
die von virtueller Adressierung in Multibenutzer-Betriebssystemen
mit Rückschreib-Caches (write back caches)
Gebrauch macht, einschließlich Betriebssystemen, welche es
jedem Benutzer ermöglichen, aktive Vielfachprozesse zu haben.
Zweckmäßigerweise wird die Erfindung im folgenden unter Bezugnahme
auf ein besonderes Multibenutzer-Mehrfach-Aktivprozeß-
Betriebssystem, nämlich in bezug auf das Unix-Betriebssystem
beschrieben. Die Erfindung ist jedoch nicht auf die
Verwendung des Unix-Betriebssystems beschränkt.
Bei einer Arbeitsstation auf Unix-Basis kann die Systemfunktion
dadurch beträchtlich verbessert werden, daß man ein Rückschreib-
Cache für virtuelle Adressen als eines der Systemelemente
verwendet. Ein in Verbindung mit solchen Systemen erwachsendes
Problem liegt in der Unterstützung von Alias-Adressen,
d. h. zwei oder mehrere virtuellen Adressen, welche auf
dieselbe physikalische Adresse im Realspeicher abbilden
(map).
Das Problem entsteht dadurch, daß eine durch eine Alias-Adresse
durchgeführte Datenaktualisierung in 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 Aliasierung,
d. h. die Aufzeichnung bzw. Abbildung (mapping) 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 beliebige Cache-Plätze einnehmen und trotzdem
auf derselben physikalischen Adresse abbilden. Wenn Cache-
Blöcke modifiziert werden, ist es generell unmöglich, beliebige
Cache-Plätze nach Datenkonsistenz 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 Modifikationen.
Bei der vorliegenden Erfindung wird das zuvor beschriebene
Problem dadurch gelöst, daß zwei unterschiedliche Strategien
des Handlings von Alias-Adressen 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 Strategie ist anwendbar auf alle Benutzerprogramme, die
vom Kern (kernel) 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 denselben Cache-Block innerhalb eines
direkt aufgezeichneten (Einweg-Satz-Assoziativ-)Cache oder
innerhalb desselben Cache-Satzes in einem Mehrwege-Satz-Assoziativ-
Speicher (multi-way set associative cache) 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 diejenigen
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 Adressen
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(vorschrift)übertretung;
Fig. 2c ein schematisches Schaltbild einer Schaltung
zur Feststellung einer MMU-Schutz(vorschrift)übertretung;
Fig. 3 ein genaueres Blockschaltbild zur Darstellung
des von der Alias-Bestimmungslogik nach der
Erfindung verwendeten Adressenwegs;
Fig. 4a, 4b ein Ablaufdiagramm einer Zustandsmaschinenimplementierung
für gewisse auf die Adressierung
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 Zustandsmaschinenimplementierung
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 Zustandsmaschinenimplementierung
für den Datenweg, bei dem sich
eine Realadressenübereinstimmung ergibt (Zustände
(q)-(u));
Fig. 7b ein Ablaufdiagramm einer Zustandsmaschinenimplementierung
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 Zustandsmaschinenimplementierung
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 Zustandsmaschinenimplementierung
für den Datenweg während eines
CPU-Schreib-Buszyklus, wenn die MMU eine
Nicht-Cache-Seite angibt;
Fig. 8 ein Ablaufdiagramm einer Zustandsmaschinenimplementierung
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ückwärtslesezyklus; 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-Etiketten(speicher)feld 23, einen Cache-
Trefferkomparator 25, eine Speichermanagementeinheit (MMU)
27, einen Hauptspeicher 31, einen Rückschreibpuffer 39 und
eine Arbeitsstations-Steuerlogik 40 auf. Derartige Arbeitsstationen
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 Implementierung
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 Virtuelladressen-
Rückschreib-Caches anhaften.
Jede der zuvor genannten Arbeitsstationskomponenten wird im
folgenden beschrieben, einschließlich der an dem Betriebssystemkern
(operating system kernel) vorzunehmenden Änderungen,
wobei die erfindungsgemäß neuen Komponenten besonders hervorgehoben
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"-Zugriffsprioritä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 verwendet
werden kann, ist eine MC 68 020.
Ein anderes notwendiges Element in einer virtuellen Adressen-
Arbeitsstation mit Rückschreib-Cache, wie sie in Fig. 1 gezeigt
ist, ist das virtuelle Adressen-Cache-Daten(speicher)feld
19, das als Feld von 2 N Datenblöcken mit jeweils
2 M Bytes organisiert ist. Die 2 M Bytes innerhalb jedes
Blockes sind mit den M-Adreßbits niedriger Ordnung speziell
identifiziert. Jeder der 2 N Blöcke ist besonders adressiert
als Matrix- oder Speicherfeldelement durch die nächstniedrigsten
N-Adreßbits. Als virtueller Adreß-Cache sind die (N+M)
Bits adressierenden Bytes innerhalb des Cache von dem virtuellen
Adreßraum von (A+C) Bits. (Die (C) sind Kontext-Bits
vom optionellen Kontext ID Register 32, das nachfolgend beschrieben
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 (multi-way set associative
caches) verwendet werden.
Ein anderes notwendiges Element, das in Fig. 1 gezeigt ist,
ist das Virtuelladreß-Cache-Etiketten(speicher)feld 23, das
ein Etikettenfeldelement für jeden Datenblock im Cache-Datenfeld
19 hat. Das Etikettenfeld enthält daher 2 N 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-Etiketten- und Datenfelder verwendeten Adreßbits niedriger
Ordnung speziell den Cache-Block innerhalb des gesamten
virtuellen Adreßraums von (A+C) Bits. Das heißt das Virtuelladreß-
Etikettenfeld muß ((A+C) - (M+N)) virtuelle Adreßbits enthalten.
Die Cache-"Hit"-Logik 25 vergleicht virtuelle Zugriffsadressen
mit dem Inhalt des Virtuelladreß-Cache-Etikettenadreßfeldes.
Innerhalb der Zugriffsadresse adressieren die M-Bits niedrigster
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 Etikettenadreß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 notwendiges
Element. MMU 27 ist organisiert auf der Basis von Seiten
von Größe (2 P ) Bytes, die ihrerseits als Segmente von Größe
(2 S ) 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 darzustellen,
gibt es zwei Arten von Sicherung oder Schutz, die
oder der einer Seite zugeordnet werden kann, nämlich einen
Überwacher/Benutzer-Zugriffsbezeichner und einen Schreibschutz/
Schreibzulassungsbezeichner. Obwohl die vorliegende
Erfindung nicht auf diese beiden Schutztypen beschränkt ist,
kann bei dieser Seitensicherung eine "Schutzübertretung" resultieren,
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 30 a und 30 b, 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 44 a
und 44 b, ein ODER-Gatter 46 und ein UND-Gatter 48 auf.
Ferner ist in Fig. 1 ein Hauptspeicher 31 gezeigt, der innerhalb
des physikalischen Adreßraums adressierbar ist; die Steuerung
des Hauptspeicherzugriffs geschieht über die Arbeitsstations-
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
versetzt werden soll. Dies kann aufgrund der Notwendigkeit zum
Aktualisieren des Cache-Blocks mit neuen Inhalten oder eines
Spülens (flushing) des Blocks bedingt sein. In jedem Falle
bestimmt in einem Rückschreib-Cache der Zustand des Cache-Etiketts
für einen existierenden Cache-Block, ob dieser Block in
den Speicher zurückgeschrieben werden muß. Wenn die Etiketten
angeben, daß der Block gültig und in der weiter unten definierten
Weise modifiziert ist, so muß der Blockinhalt in den
Speicher 31 rückgeschrieben werden, wenn der Cache-Block versetzt
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 bevorzugten
Ausführungsbeispiel hat die Steuerlogik 40 die Implementierung
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ührungsbeispiel
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 Benutzerprozesse
zugeordnet. Das heißt die (C) Kontext-Bits haben keine
Bedeutung für die Qualifizierung der Adressen von Seiten innerhalb
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 Betriebssystem-
Seitenadressen für zwei verschiedene Benutzerprozesse
identisch, während die Benutzerseiten für die beiden Prozesse
unterschiedlich sind. Alle Seiten innerhalb des Betriebssystems
sind mit "Überwacher"-Schutz markiert.
Arbeitsstationen des Typs, bei dem die Erfindung Verwendung
finden kann, können auch eine Cache-Flush-Logik 33 zur Entfernung
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ückschreib-
Cache-System zukommt. Wenn ein Bereich von Adressen
(beispielsweise eine virtuelle Seitenadresse) umgeordnet werden
soll, so müssen alle Adressen aus diesem Bereich entfernt
oder "gespült = flushed" werden, bevor die neue Adressenzuordnung
hergestellt werden kann. Ein Cache-Block wird "ausgespült"
durch Ungültigmachen des gültigen Bits in seinen Etiketten
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 Arbeitsstation
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 Puffern
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 unterschiedlichen
Strategien zur Lösung der aus Alias-Adressen resultierenden
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. abbilden,
hinsichtlich ihrer Adreßbits niedriger Ordnung übereinstimmen,
um sicherzustellen, daß sie denselben Speicherplatz
benutzen, wenn die Daten Cache-gespeichert werden sollen. Die
Erfindung benutzt die Alias-Bestimmungslogik 47, die ein Realadreß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 niedriger
Ordnung in Übereinstimmung zu bringen, so daß Alias-Adressen
garantiert den gleichen Cache-Platz benutzen. Wenn der
Cache die Größe von 2 M Datenblöcken hat, jeweils mit 2 N
Bytes, so müssen wenigstens die (N+M) Bits niedriger Ordnung
der Alias-Adressen übereinstimmen. Dies gilt für Alias-Adressen
innerhalb desselben Prozesses ebenso wie für Alias-Adressen
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-Assoziativspeicher
bilden Alias-Adressen in demselben Cache-Satz
ab. Die zweite Strategie verhindert, daß Daten durch Verwendung
eines "Nicht-Cache"-Bits, das für jede Seite in der MMU
27 definiert ist, Cache-gespeichert werden. Mit anderen Worten,
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 Datenzugriffe
zu dieser Seite direkt auf den und von dem Hauptspeicher
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 Markierung
"Nicht-Cache" bei allen Alias-Seiteneingaben vorgesehen
werden. Anderenfalls wäre eine Datenkonsistenz nicht garantiert.
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 Betriebssystem
können jedoch nicht geändert werden, um die Adressierbedingungen
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 abgebildeten
virtuellen Adressen-Rückschreib-Cache unter Verwendung
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 Buszyklus-
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 modifiziert
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-Daten
und die Speicherdaten identisch und können beide als Quelle
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 Lesezyklen
führt der Buszyklus Daten entweder direkt aus der Quelle
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 (Lesen
oder Schreiben) dieser Restriktion unterliegen. Kein Bedingung
wird an die Alias-Adressierung von Nur-Lese-Seiten
gestellt.
Das bevorzugte Ausführungsbeispiel für den die Alias-Bestimmungslogik
47 beinhaltenden Adressenweg ist in Fig. 3 gezeigt.
Wie in Fig. 3 gezeigt ist, enthält der Adressenweg die grundsätzlichen
Komponenten für die Adressensteuerung in einem
Virtuelladressen-Rückschreib-Cache. Für die Alias-Adressenunterstützung
werden auch ein Virtuelladressen-Register 52 (VAR)
für die virtuelle Adresse (CX und VA) und ein Cache-Block-Gültigkeitsbit
(V), ein Multiplexer 45 zum Multiplexen der virtuellen
Adresse des Virtuelladressen-Registers, ein Realadressenregister
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übereinstimmung
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 aktivieren
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äutert
wird.
In den Fig. 3 und 5 sind zur Vermeidung einer Linienhäufung
nicht alle Steuerleitungen gezeigt. Die für die richtige Operation
der erfindungsgemäßen Anordnung notwendigen Steuerleitungen
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, Virt. Addr. - | wählen bzw. ansteuern | |
VA - | virtuelle Adresse | |
RA - | reale Adresse | |
OE - | Ausgangsaktivierung | |
Ack - | Bestätigung | |
Assert - | Anlegen | |
Deassert - | Unterbrechen bzw. Abnehmen | |
Tag - | Etikett | |
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übertragung festgestellt? (Fig. 2c) | |
RAR - | Realadressenregister 51 | |
CLK - | Takt | |
Adr - | Adresse | |
Mem Adr Strobe - | Speicher 31 Adreßmarkierimpuls | |
VAR - | Virtuelladressenregister 52 | |
Mem Adr Ack? - | Wurde eine Speicheradressenbestä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übereinstimmung 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 Lesezyklus? | |
Clk Data Reg. - | Taktdatenregister 61 | |
Valid and Modified @ | Write Back Data? - | Hat Steuerlogik 40 ein gültiges Bit (V) und ein modifiziertes 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 festgestellt? | |
Start Write Back Cycle? - | Hat Steuerlogik 40 Start- Rückschreib-Zyklus festgestellt? | |
Cache Miss - | Cache-Fehlgriff | |
Missmatch - | Keine Übereinstimmung festgestellt | |
Complete Write to Memory - | Vervollständige Schreiboperation 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 Adressenverarbeitungsabschnitt
des Caches bezogenen Steueroperationen. Die
Erfindung wird integriert über das Takten des Realadressen-
Übereinstimmungs-Flipflops 55 am Zustand (o). Die Zustandsetiketten
23 werden als gültig während des Zustandes (w) geschrieben,
und zwar im Anschluß an eine erfolgreiche Übertragung
aller Blockdaten aus dem Speicher 31.
Die in den Fig. 6a und 6b sowie 7a-7d gezeigte Datenzustandsmaschine
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 Verarbeitung
dieses Schreibbefehls in den Speicher ist auch in dem
Weg-Folgezustand (i.dw) in der Datenzustandsmaschine beschrieben.
Dem Zustand (o) folgend, wird ein Test nach einem Nicht-
Cache-Seiten-Zugriff (dieses Mal nach Lesedaten) durchgefü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 Datenzustandsmaschinen
warten, bis ein vorausgegangener Rückschreibzyklus
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 verfehlt.
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 Speicherdatenbuszeitgabe
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 Datenübertragung
eines Blocklesespeicher-Buszyklus zurückgeführt
wurden. Während der Zyklen (q) bis (u) sind die CPU-Schreibausgabe-
Aktivierungssteuerpuffer 37 aktiv nur für die von der
CPU zu schreibenden Bytes, während das Datenregister-Ausgangsaktivierungs-
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-Schreibbuszyklus
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 Implementierung
verwendet einen speziellen Speicherbuszyklus, genannt
Schreibe in Nicht-Seite-Zyklus (Fig. 11c), um den Speicher
direkt zu aktualisieren. Zu beachten ist, daß das Realadreß-
Ü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 verfehlt.
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ährend
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-Übereinstimmungslatch
(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 Speicherdatenbuszeitgabe
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 gelesen,
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 umgeleitet
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-Speicherbuszyklus
und die anderen 64 Bits bei der nachfolgenden Übertragung
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 aktualisiert
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 Speicherdaten
aktualisiert wird. Die Implementierung benutzt denselben
Block-Lese-Speicherbuszyklus wie im Falle des Cache-Fehlgriffs
(siehe des 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 Schreiben
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ückschreibzyklus
aktiv ist, wird zur Verhinderung des Starts des nächsten
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übertragungsphase
des Zyklus ausgesandt wird, welches der 8 Datenbytes,
die während der Datenphase gesendet wurden, im Speicher
31 aktualisiert werden sollen.
Zusätzlich zu der zuvor beschriebenen Hardware muß der Betriebssystemkern
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ässig 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 (11)
1. Arbeitsstation mit einem einen Rückschreib-Cache für
virtuelle Adressen benutzenden Betriebssystem, einem Hauptprozessor
(11), der mit einem Cache-Etikettenfeld (23) gekoppelt
ist, einem Cache-Datenfeld (19), einem Rückschreibpuffer (39),
einer Speichermanagementeinheit (27), einem Realadressen-Register
(51), einem Hauptspeicher (31), der physikalische Adressen
hat, einem Cache-Hitdetektor und einer Arbeitsstations-
Steuerlogik (40),
gekennzeichnet durch:
- a) eine erste Anordnung (47, 49), welche sicherstellt, daß alle Adressen, die auf dieselbe physikalische Adresse im Hauptspeicher (31) abbilden (map) und nicht zu einem vorgegebenen Satz von Alias-Adressen gehören, welche auf vom Betriebssystem exklusiv benutzte physikalische Adressen abbilden, in ihren Adreßbits niedriger Ordnung übereinstimmen, wodurch derselbe Platz im Cache-Datenfeld (23) benutzt wird; und
- b) eine zweite Anordnung zum Sicherstellen, daß der vorgegebene Satz von Alias-Adressen, welche auf exklusiv vom Betriebssystem benutzte physikalische Adressen abbilden, Seiten haben, die als Nicht-Cache-Seiten markiert sind.
2. Arbeitsstation nach Anspruch 1, dadurch gekennzeichnet,
daß die erste Anordnung die folgenden Komponenten enthält:
- a) eine Alias-Bestimmungslogik (47) zur Bestimmung von Alias-Adressen, welche auf physikalische Adressen in dem Hauptspeicher (31) abbilden; und
- b) eine Alias-Bestimmungssteuerlogik (49) zur Gewinnung der bei Lesezyklus- und Schreibzyklus-Cache-Fehlgriffen benutzten Daten entweder aus dem Cache-Datenfeld (19) oder dem Hauptspeicher (31) und zur Steuerung der Aktualisierung des Cache-Datenfeldes bei Schreibzyklus-Cachefehlgriffen.
3. Arbeitsstation nach Anspruch 2, dadurch gekennzeichnet,
daß die Alias-Bestimmungslogik aufweist:
- a) einen Komparator (47), der mit der Speichermanagementeinheit (27) und dem Realadressen-Register (51) gekoppelt ist und eine logische 1 erzeugt, wenn die in dem Realadressenregister gespeicherte Adresse mit einer vorgegebenen Cache-Adresse in einer Speichermanagementeinheit (27) übereinstimmt;
- b) ein UND-Gatter (53), dessen einer Eingang mit dem Ausgang des Komparators (47) und dessen zweiter Eingang mit einem Cache-Gültigkeitsbit innerhalb eines Virtuelladressenregisters (52) gekoppelt ist, wobei das Virtuelladressenregister eine aus dem Cache-Etikettenfeld (23) geladene vorgegebene virtuelle Adresse speichert;
- c) ein mit dem Ausgang des UND-Gatters (53) gekoppeltes Flipflop (55), das gesetzt ist, wenn in Abhängigkeit von dem Ausgang des UND-Gatters eine Realadressen-Übereinstimmung festgestellt wird.
4. Arbeitsstation nach Anspruch 2 oder 3, dadurch gekennzeichnet,
daß die Alias-Bestimmungssteuerlogik (49) eine Zustandsmaschine
enthält.
5. Arbeitsstation nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß die zweite Anordnung Anzeigemittel enthält,
die in der Speichermanagementeinheit (27) anzeigen, daß
eine Seite im Hauptspeicher (31) eine Nicht-Cache-Seite ist.
6. Arbeitsstation nach Anspruch 5, dadurch gekennzeichnet,
daß die Anzeigemittel ein Bit innerhalb eines Seitendeskriptorworts
für jede Seite in der Speichermanagementeinheit (27)
aufweist, wobei die Anordnung so getroffen ist, daß beim Setzen
dieses Bits für eine Seite alle Datenzugriffe auf diese
Seite direkt auf und von dem Speicher erfolgen, wodurch das
Cache-Datenfeld (19) umgangen wird.
7. Verfahren zum Feststellen von Daten-Inkonsistenzen in
einem Cache-Datenfeld und zur Korrektur der festgestellten
Dateninkonsistenzen innerhalb einer Arbeitsstation mit einem
einen Rückschreib-Cache für virtuelle Adressen benutzenden
Betriebssystem, einem mit einem Cache-Etikettenfeld gekoppelten
Hauptprozessor, dem Cache-Datenfeld, einem Rückschreibpuffer,
einer Speichermanagementeinheit, einem Realadressen-Register,
einem Hauptspeicher mit physikalischen Adressen, einem
Cache-Hit-Detektor und einer Arbeitsstations-Steuerlogik,
dadurch gekennzeichnet, daß sichergestellt wird, daß alle
Alias-Adressen, welche auf dieselbe physikalische Adresse in
dem Hauptspeicher abbilden (map) und andere Alias-Adressen
sind als die Alias-Adressen eines vorgegebenen Satzes, die auf
exklusiv vom Betriebssystem genutzte physikalische Adressen
abbilden, in ihren Adreßbits niedriger Ordnung übereinstimmen,
so daß sie denselben Platz im Cache-Datenfeld benutzen; und
daß die Alias-Adressen des vorgegebenen Satzes, welche auf
exklusiv vom Betriebssystem genutzte physikalische Adressen
abbilden, als Nicht-Cache-Seiten markiert werden.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß
die Sicherstellung mit den folgenden Schritten erfolgt:
- a) die auf physikalische Adressen in dem Hauptspeicher abbildenden Alias-Adressen werden bestimmt,
- b) die bei Lesezyklus- und Schreibzyklus-Cache-Fehlgriffen benutzten Daten werden entweder von dem Cache-Datenfeld oder dem Hauptspeicher gewonnen; und
- c) das Cache-Datenfeld wird bei Schreibzyklus-Cachefehlgriffen selektiv aktualisiert.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
beim Feststellen der Alias-Adressen ein Komparator-Ausgangssignal
erzeugt wird, das eine logische 1 ist, wenn die im Realadressenregister
gespeicherte Adresse mit einer vorgegebenen
Cache-Adresse in der Speichermanagementeinheit übereinstimmt,
daß das Komparatorausgangssignal an einen ersten Eingang eines
UND-Gatters angelegt wird, dessen zweiter Eingang ein Cache-
Gültigkeitsbit innerhalb eines Virtuelladreßregisters erhält,
welches eine vom Cache-Etikettenfeld geladene vorgegebene
virtuelle Adresse speichert, und daß ein mit dem Ausgang des
UND-Gatters gekoppeltes Flipflop gesetzt wird, wenn eine Realadressenübereinstimmung
in Abhängigkeit vom Zustand des Ausgangssignals
des UND-Gatters festgestellt wird.
10. Verfahren nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet,
daß beim Markieren des vorgegebenen Satzes von
Alias-Adressen in der Speichermanagementeinheit angegeben
wird, daß eine Seite in dem Hauptspeicher eine Nicht-Cache-
Seite ist.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß
beim Anzeigeschritt ein Bit innerhalb eines Seitendeskriptorworts
für jede Seite in der Speichermanagementeinheit gesetzt
wird und daß nach Setzen dieses Bits für eine Seite alle Datenzugriffe
auf die Seite direkt auf und von dem Speicher
durchgeführt werden, wodurch das Cache-Datenfeld umgangen
wird.
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 true DE3832758A1 (de) | 1989-04-13 |
DE3832758C2 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
Non-Patent Citations (1)
Title |
---|
Elektronik, Heft 13, 26.6.1987, S. 105-110 * |
Also Published As
Publication number | Publication date |
---|---|
CA1301354C (en) | 1992-05-19 |
JPH01108651A (ja) | 1989-04-25 |
GB2210479A (en) | 1989-06-07 |
GB2210479B (en) | 1992-06-17 |
DE3832758C2 (de) | 1996-05-30 |
GB8819017D0 (en) | 1988-09-14 |
AU609519B2 (en) | 1991-05-02 |
FR2621408B1 (de) | 1994-04-22 |
HK95493A (en) | 1993-09-24 |
JPH071489B2 (ja) | 1995-01-11 |
AU2242288A (en) | 1989-04-06 |
FR2621408A1 (fr) | 1989-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
DE69530776T2 (de) | Zweiwege set-assoziativer cache-speicher | |
DE60320026T2 (de) | Verbessertes speichermanagement für echtzeit-anwendungen | |
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE2350215C2 (de) | Rechenanlage | |
DE3151745C2 (de) | ||
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE112005003863B3 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE60003273T2 (de) | Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse | |
DE3724317C2 (de) | ||
DE2227882C2 (de) | Virtuelle Speicheranordnung | |
DE3832912A1 (de) | Arbeitsstation mit virtueller adressierung in multibenutzer-betriebssystemen | |
DE2501853A1 (de) | Prozessor fuer ein datenverarbeitungssystem | |
DE2241257B2 (de) | Datenverarbeitende Anlage | |
DE3102150A1 (de) | "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage | |
DE4410060A1 (de) | Rechenvorrichtung | |
DE69937611T2 (de) | Intelligenter Puffer-Speicher | |
DE2441754A1 (de) | Prozessor-datenuebertragungssteueranordnung sowie verfahren zur steuerung der datenuebertragung eines prozessors | |
DE10002120A1 (de) | Logikstruktur eines Adressumsetzpuffers | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
DE2641722A1 (de) | Hierarchisch geordnetes speichersystem fuer eine datenverarbeitende anlage mit virtueller adressierung | |
DE4103093C2 (de) | Verfahren zum Steuern eines Datenübertragungs-Pufferspeichers und Computersystem zum Durchführen dieses Verfahrens |
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 |