DE19516937A1 - Hierarchisches Cachesystem für einen Computer - Google Patents
Hierarchisches Cachesystem für einen ComputerInfo
- Publication number
- DE19516937A1 DE19516937A1 DE19516937A DE19516937A DE19516937A1 DE 19516937 A1 DE19516937 A1 DE 19516937A1 DE 19516937 A DE19516937 A DE 19516937A DE 19516937 A DE19516937 A DE 19516937A DE 19516937 A1 DE19516937 A1 DE 19516937A1
- Authority
- DE
- Germany
- Prior art keywords
- request
- data
- buffers
- buffer
- cache
- 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.)
- Ceased
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
Description
Die Erfindung bezieht sich allgemein auf Computersysteme und
befaßt sich insbesondere mit einem hierarchischen Cachesystem.
Bisher bekannte Computersysteme schließen eine Zentraleinheit,
abgekürzt als ZE, einen Hauptspeicher und ein Cachesystem ein,
das zwischen der ZE und dem Hauptspeicher eingeschaltet ist,
um den Zugriff auf Hauptspeicherdaten zu beschleunigen. Ein
typisches Cachesystem umfaßt einen Datencache, um Daten zu
speichern, die aus dem Hauptspeicher ausgelesen oder in ihn
eingeschrieben wurden, und ein Verzeichnis, um Hauptspeicheradressen
der Daten zu speichern, die in den Datencache kopiert
wurden. Der Prozessor kann auf den Datencache schneller zugreifen
als auf den Hauptspeicher, da der Datencache kleiner
als der Hauptspeicher ist, physisch näher am Prozessor lokalisiert
ist als am Hauptspeicher und gewöhnlich in schnellerer,
aber teurer Technologie ausgeführt ist. Folglich ist es erwünscht,
in dem Cache die Daten zu speichern, die laufend von
der ZE benötigt werden und wahrscheinlich demnächst benötigt
werden. Eine effektive Cache-Strategie beruht auf der räumlichen
und zeitlichen Lage der Bezugnahme, d. h., die Daten, die
wahrscheinlich als nächste von dem Prozessor benötigt werden,
werden im Hauptspeicher in der Nähe der Daten gespeichert, die
augenblicklich abgerufen werden. Dies gilt zum Beispiel dann,
wenn der Prozessor anfordert, nacheinander Zeilen einer Datei
zu lesen, und die Zeilen der Datei in aufeinanderfolgenden
Speicherstellen im Hauptspeicher gespeichert sind. Wenn daher
der Prozessor Daten anfordert, typischerweise vier oder acht
Bytes pro Anforderung, werden diese Daten zusammen mit dem
Rest eines Cacheblocks (typischerweise eine Zeile, die aus 128
Bytes benachbarter Adressen besteht,) aus dem Hauptspeicher
abgerufen und in den Datencache geladen. Der Zeitaufwand für
das Lesen des gesamten Blockes aus dem relativ entfernten
Hauptspeicher wird zurückgewonnen, wenn der Prozessor auf den
Rest eines Blockes (oder einer Zeile) des Caches zugreift.
Es war auch früher bekannt, einen Satz von E-/A-Prozessoren so
mit dem Cachesystem zu verbinden, daß auf Daten, auf die von
einer externen Speichereinrichtung über die E-/A-Prozessoren
zugegriffen werden konnte, von dem Cachesystem durch die ZEen
zugegriffen werden konnte.
Ein hierarchisches, zweistufiges Cachesystem war auch bekannt
und schließt eine Anzahl von Datencaches der Stufe eins (S1)
und entsprechende Verzeichnisse ein. Jedes Paar aus S1-Cache
und Verzeichnis bedient einen Prozessor. Ein Datenspeicher der
Stufe zwei (S2) und das zugehörige Verzeichnis sind mit allen
S1-Caches und den zugehörigen Verzeichnissen verbunden und
bedienen sie. Der Datencache S2 ist auch mit dem Hauptspeicher
(oder dem Zusatzspeicher) verbunden und speichert eine Kopie
aller Datenanforderungen durch irgendeinen der Prozessoren.
Wenn eine andere ZE die gleichen Daten anfordert, dann sind
sie aus dem S2-Cache verfügbar und brauchen nicht aus dem
Hauptspeicher abgerufen zu werden (was zeitaufwendiger ist).
Wenn irgendein Prozessor Daten modifiziert, werden die modifizierten
Daten in den S2-Cache eingeschrieben und Steuerhardware,
die mit dem S2-Datencache verbunden ist, benachrichtigt
alle anderen S1-Caches, die eine Kopie der Daten enthalten,
daß ihre Kopie der Daten jetzt ungültig ist. So dient der S2-Cache
als eine Zentralstation für das Übertragen von Daten
zwischen dem Hauptspeicher und all den S1-Caches.
Es war früher bekannt, solch ein hierarchisches Cachesystem
entweder in einer Betriebsart "Speichere durch" oder in einer
Betriebsart "Speichere ein" zu betreiben. In der Betriebsart
"Speichere durch" fordert die ZE an, Daten nur in dem S2 Cache
zu speichern. Wenn diese Speicherstellen augenblicklich in dem
S2-Cache verkörpert sind, werden die Daten in dem S2-Cache in
diesen Speicherstellen gespeichert, ohne auf den Hauptspeicher
zuzugreifen. Wenn diese Speicherstellen auch in einem S1-Cache
verkörpert sind, werden diese Speicherstellen in den S1-Caches
ungültig gemacht, und die Daten werden nicht in sie eingeschrieben.
Wenn diese Speicherstellen gegenwärtig in dem S2-Cache
nicht verkörpert sind, dann werden die Inhalte dieser
Speicherstellen und die zugehörige Speicherseite aus dem
Hauptspeicher in den S2-Cache kopiert und dann mit den ZE-Daten
überschrieben. In diesem letzten Fall, in dem diese
Speicherstellen nicht in dem S2-Cache verkörpert waren, waren
sie auch nicht in irgendeinem anderen S1-Cache vorhanden, und
daher wird in keinem S1-Cache eine Maßnahme ergriffen.
In der Betriebsart "Speichere ein" fordert die ZE an, Daten
sowohl in dem zugehörigen S1-Cache als auch in dem S2-Cache zu
speichern. Wenn diese Speicherstellen gegenwärtig in dem S2-Cache
verkörpert werden, werden die Daten in dem S2-Cache in
diesen Speicherstellen ohne Zugriff auf den Hauptspeicher
gespeichert. Ebenso werden diese Speicherstellen, die in dem
zugehörigen S1-Cache verkörpert werden, mit den neuen Daten
aktualisiert. Wenn diese Speicherstellen in irgendwelchen
anderen S1-Caches verkörpert sind, werden diese Speicherstellen
in den anderen S1-Caches ungültig gemacht. Wenn diese
Speicherstellen gegenwärtig nicht in dem S2-Cache verkörpert
werden, dann werden die Inhalte dieser Speicherstellen und die
zugehörige Speicherseite aus dem Hauptspeicher in den S2-Cache
kopiert und dann mit den ZE-Daten überschrieben. Dann werden
die aktualisierten Inhalte dieser Speicherstellen in den S1-Cache
der anfordernden ZE geschrieben.
In dem erwähnten hierarchischen Cachesystem nach dem Stand der
Technik war es, wenn eine ZE die Daten in dem S3-Cache oder
dem Hauptspeicher aktualisieren wollte, zuerst nötig, die alten
Daten in den S2-Cache wie in der Betriebsart "Speichere
durch" oder der Betriebsart "Speichere ein" zu kopieren und
dann die Daten in dem S2-Cache zu aktualisieren und, wenn das
angefordert wurde, ein "Auswerfen" der aktualisierten Daten
zurück in den Hauptspeicher anzufordern. Dies hatte den folgenden
Nachteil in den Fällen, in denen die ZE die Daten nicht
unmittelbar lesen oder die Daten weiter aktualisieren wollte.
Es war für die ZE zeitaufwendig und mühsam, die alten Daten
aus dem Hauptspeicher in den S2-Cache zu lesen, die aktualisierten
Daten in den S2-Cache zu schreiben und dann die aktualisierten
Daten auszuwerfen. Selbst wenn sich die Daten in dem
S2-Cache befanden, bevor die Aktualisierungsanforderung des
Hauptspeichers erfolgte, ist es zeitaufwendig, die Aktualisierungen
in den S2-Cache zu schreiben und dann die aktualisierten
Daten zum Hauptspeicher auszuwerfen. Auch können, wenn die
Daten in den S2-Cache eingeschrieben werden, einige andere
Daten ausgeworfen werden, um für die neuen Daten Platz zu
schaffen, und die ZE kann die Daten, die gerade ausgeworfen
wurden, benötigen.
Ein allgemeines Ziel der vorliegenden Erfindung ist es, ein
hierarchisches Cachesystem anzugeben, in dem eine ZE Daten in
den Hauptspeicher schreiben kann, ohne die Daten auch in den
S2-Cache zu schreiben oder ohne zu fordern, daß die alten Daten
sich in dem S2-Cache befinden.
Ein anderes allgemeines Ziel der vorliegenden Erfindung ist
es, ein hierarchisches Cachesystem anzugeben, in dem eine ZE
Daten aus einer Speicherstelle im Hauptspeicher oder im Zusatzspeicher
in eine andere Speicherstelle im Hauptspeicher
oder dem Zusatzspeicher kopieren kann, ohne die Daten auch in
den S2-Cache einzuschreiben.
Ein anderes allgemeines Ziel der vorliegenden Erfindung ist
es, ein hierarchisches Cachesystem der erwähnten Arten anzugeben,
das eine minimale Steuerung durch die ZE erfordert.
Ein anderes Ziel der vorliegenden Erfindung ist es, ein verbessertes
Puffersystem für das Implementieren der erwähnten
Datenübertragung anzugeben.
Die Erfindung liegt in einem hierarchischen Cachesystem, das
umfaßt eine Anzahl von Cache-Subsystemen einer ersten Stufe
für das Speichern von Daten oder Befehlen verschiedener ZEen,
einem Cache-System höherer Stufe, das Daten oder Befehle
der Anzahl von Cache-Subsystemen enthält, und einen Hauptspeicher,
der mit dem Cache-Subsystem der höheren Stufe verbunden
ist. Eine Seitenübertragungseinrichtung ist mit dem
Cache-Subsystem höherer Stufe und dem Hauptspeicher verbunden
und antwortet auf eine Anforderung einer der ZEen, Daten in
dem Hauptspeicher zu speichern, durch Speichern der Daten in
dem Hauptspeicher ohne Kopieren früherer Inhalte einer
Speichere in-Adresse der Anforderung an das Cache-Subsystem
der höheren Stufe als Antwort auf die Anforderung. Ebenso
macht die Seitenübertragungseinrichtung die früheren Inhalte
in dem Cache-Subsystem der höheren Stufe ungültig, wenn sie
sich dort bereits befanden, als die ZE die Anforderung machte.
Die Erfindung liegt auch in einem Puffersystem in der Datenübertragungseinrichtung.
Das Puffersystem umfaßt zumindest vier
Anforderungspuffer, um Anforderungen für das Speichern oder
Kopieren verschiedener Datenblöcke zu speichern, und eine
Anzahl von Datensegmentpuffern gleich der Anzahl der Anforderungspuffer.
Jeder der Datensegmentpuffer ist von einer
Größe, um ein Datensegment vorgegebener Größe zu speichern.
Die Seitenübertragungseinrichtung wählt in zyklischer Folge
die Anforderungspuffer aus, die entsprechende unerledigte
Anforderungen enthalten. Jedesmal, wenn einer der Anforderungspuffer
ausgewählt wird, leitet die Seitenübertragungseinrichtung
eine Anforderung an einen der Datensegmentpuffer
weiter, um ein Datensegment vorgegebener Größe zu speichern
oder zu kopieren, das mit der Anforderung in dem ausgewählten
Anforderungspuffer verbunden ist.
Fig. 1 ist ein Blockdiagramm eines hierarchischen, zweistufigen
Cachesystems gemäß der vorliegenden Erfindung.
Fig. 2 ist ein genaueres Blockdiagramm des zweistufigen
Cachesystems nach Fig. 1.
Fig. 3 ist ein Blockdiagramm der Seitenübertragungseinrichtung
und anderer Hardware innerhalb des
Cachesystems nach Fig. 1.
Fig. 4 ist ein Flußdiagramm einer Operation ZE-SEITENSPEICHERUNG
innerhalb des Cachesystems nach Fig. 1
gemäß der vorliegenden Erfindung.
Fig. 5 ist ein Flußdiagramm einer Operation E-/A-SEITENKOPIE
innerhalb des Cachesystems nach Fig. 1 gemäß
der vorliegenden Erfindung.
Fig. 6 ist ein genaueres Flußdiagramm eines Puffervorgangs
innerhalb der Operationen ZE-SEITENSPEICHERUNG und
E-/A-SEITENKOPIE nach Fig. 4 und Fig. 5.
Fig. 7 ist ein Blockdiagramm auf hoher Stufe eines Mehrfach-Cachesystems
(ohne eine Seitenübertragungseinrichtung),
das in der US-Patentanmeldung mit der
Seriennummer 08/123 495 offenbart wurde.
Fig. 8 ist ein genaueres Diagramm einer Mehrfachstation des
Mehrfach-Cachesystems nach Fig. 7.
Es wird jetzt auf die Figuren im einzelnen Bezug genommen, bei
denen gleiche Bezugszahlen gleiche Elemente überall in den
verschiedenen Zeichnungen bezeichnen. Fig. 1 stellt ein
hierarchisches Cachesystem gemäß der vorliegenden Erfindung
dar, das allgemein mit 20 bezeichnet ist. Das Cachesystem 20
umfaßt vier Zentraleinheiten, (ZEen) 22a-d und vier entsprechende
Cache-Subsysteme 23a-d der Stufe eins (S1). Jedes der S1-Cache-Subsysteme
enthält einen S1-Daten- oder Instruktionscache
24a-d, ein entsprechendes S1-Verhältnis 26a-d und eine
entsprechende S1-Cache-Steuereinheit 28a-d. Jedes der
S1-Cache-Subsysteme bedient einen Prozessor und ist im Stand
der Technik bekannt. Beispielsweise beschreibt das US-Patent
4 719 568 solch ein S1-Cache-Subsystem des S1-Caches, ein S1-Verzeichnis
und eine S1-Cache-Steuereinheit.
Das Cachesystem 20 enthält auch ein Cache-Subsystem 31a der
Stufe zwei (S2). Das S2-Cache-Subsystem 31a enthält einen
Daten- oder Instruktionscache 32a, das S2-Verzeichnis 34a und
eine S2-Cache-Steuereinheit 36a. Das S2-Cache-Subsystem 31a
bedient alle vier S1-Caches 24a-d. Das S2-Verzeichnis 34a enthält
eine Kopie aller Daten, die aus einem Hauptspeicher 51 in
irgendeinen der S1-Caches 24a, b, c, d gelesen wurden oder nachfolgend
durch die ZEen 22a, b, c, d aktualisiert wurden. Das S2-Cache-Subsystem 31a enthält auch ein Kopienverzeichnis
54a-d (Fig. 2) für jeden der S1-Caches 24a-d, um die Adresse
der Daten in den verschiedenen S1-Caches anzugeben und den
Status der Daten in jeder Adresse, d. h. gültig, verriegelt,
Abrufen im Fortgang oder ausschließliches Ungültigmachen. Das
S2-Cache-Subsystem 31a enthält auch eine Verkehrsregelungsschaltung
50a, um Zugriff auf Busse und die Benutzung von Einrichtungen
innerhalb des S2-Cache-Subsystems 31a zu vermitteln.
Das S2-Cache-Subsystem 31a enthält auch ein Ersetzungsverzeichnis
56a, das angibt, welche Daten ersetzt wurden und ob
die ersetzten Daten modifiziert wurden und eine Auswerfoperation
in den Hauptspeicher erfordern.
Das Cachesystem 20 enthält auch eine Speichersteuereinheit 38a
für das S2-Cache-Subsystem 31a. Die Speichersteuereinheit 38
dient als eine Schnittstelle zwischen dem S2-Cache-Subsystem
und dem Hauptspeicher 51 (und zwischen dem S2-Cache-Subsystem
und einem Satz von E-/A-Prozessoren 53a-d). Die Speichersteuereinheit
38a enthält ein Kopienverzeichnis 39a-l für die
Adressen aller in dem S2-Cache 32a gespeicherten Daten und den
Status der Daten in jeder Adresse, d. h. gültig, Speicheroperation,
S2-Operation, Operation zum Ungültigmachen, Kanalspeicherung,
Kanalabruf und E-/A-Verriegelungen. Die Speichersteuereinheit
38a enthält auch ein Verzeichnis 78a des Puffers für
modifizierte Zeilen (PMZ), das die Adressen modifizierter Zeilen
auf ihrem Weg zur Speicherung in dem Hauptspeicher
speichert und den Status der Daten in jeder Adresse, d. h. gültig
und Auswerfen anhängig. Die Speichersteuereinheit enthält
auch eine Verkehrsregelungsschaltung 70a, um Zugriff auf Busse
und die Benutzung von Betriebsmittteln innerhalb des Systems 20
zu vermitteln.
Das Folgende ist eine Flußbeschreibung einer ZE-Leseanforderung
mit Bezug auf Fig. 2. Der Zweck dieser Beschreibung ist
es, etwas Hintergrund für die Funktion der S1- und S2-Cache-Subsysteme
zu geben, bevor Hauptspeicher- (und S4- oder E-/A-)Anforderungen
beschrieben werden, die für die vorliegende Erfindung
zentral sind. Die ZE-Leseanforderung (von der ZE 22a)
wird zu der S1-Cache-Steuereinheit 28a weitergeleitet und die
S1-Cache-Steuereinheit 28a prüft zuerst das lokale S1-Verzeichnis
26a auf die Adresse der angeforderten Daten. Wenn die
Daten in dem S1-Datencache 24a gespeichert sind, schickt die
S1-Cache-Steuereinheit 28a die Daten von dem S1-Cache 23a zu
der ZE 22a. Wenn sich die Daten jedoch nicht in dem S1-Cache
23a befinden, dann schickt die ZE die Adresse der angeforderten
Daten zu der Verkehrsregelungsschaltung 50a in dem S2-Cache-Subsystem
31a über eine S10-Schnittstellen-Warteschlange
54a. Als Antwort auf die Adresse der von der ZE 22a angeforderten
Daten setzt die Verkehrsregelungsschaltung 50a die
Adresse auf einen Adreßbus 60a, der von den Vergleichern 62a-d
für die S1-Kopierverzeichnisse 54a-d und den Vergleichern
64a-d für das S2-Verzeichnis 34a und das Ersetzungsverzeichnis
56a zu lesen ist. Jeder der Vergleicher bestimmt durch Vergleichen
der angeforderten Adresse mit den in dem Verzeichnis
gespeicherten Adressen, ob der betreffende Cache eine Kopie
der angeforderten Daten enthält. Wenn die Daten in dem S2-Cache
32a residieren, dann liest ein Selektor 66a die zugehörigen
Statusbits aus der Statusmatrix 68a aus und liefert sie
über einen Statusbus 67a an die Verkehrsregelungsschaltung
50a. Wenn die Daten gültig sind, dann schickt die Verkehrsregelungsschaltung
50a die Daten aus dem S2-Cache 32a über
einen Lesepuffer in der S1-Schnittstelle 54a zu dem S1-Cache
24a.
Wenn sich jedoch die Daten augenblicklich nicht im S2-Cache
32a befinden, sendet die Verkehrsregelungsschaltung 50 a die
angeforderte Adresse über eine Schnittstelle 84 der Speichersteuereinheit
und eine S20-Schnittstelle 74a zu der Verkehrsregelungsschaltung
70a der Speichersteuereinheit. Die Verkehrsregelungsschaltung 70a der Speichersteuereinheit setzt
die geforderte Adresse auf den Adreßbus 80a, der von dem Vergleicher
82a für das S2-Kopienverzeichnis 39a-l und von dem
Vergleicher 84a für das PMZ-Verzeichnis 78a zu lesen ist.
Unter der Annahme, daß der mit dem S2-Kopienverzeichnis 34a
durchgeführte Vergleich anzeigt, daß der S2-Cache 32a keine
Kopie der angeforderten Daten besitzt, müssen dann die Daten
aus dem Hauptspeicher abgerufen werden. Unter der weiteren
Annahme, daß das Verzeichnis 78a des Puffers für modifizierte
Zeilen angibt, daß der Puffer für modifizierte Zeilen keine
Kopie der angeforderten Daten besitzt, dann sendet die Verkehrsregelungsschaltung
70a der Speichersteuereinheit die angeforderte
Adresse zu der Schnittstelle 94a oder 94b, um die
Daten von dem Hauptspeicher abzurufen.
Das Folgende ist eine Beschreibung einer ZE-Speicheranforderung
mit Bezug auf Fig. 2. Der Zweck dieser Beschreibung ist
es auch, etwas Hintergrund für die Funktion der S1- und S2-Cache-Subsysteme
zu geben, bevor die für die vorliegende
Erfindung zentralen Hauptspeicher-Anforderungen beschrieben
werden. Die Anforderung wird direkt zu der S1-Cachesteuereinheit
28a und auch zu der Verkehrsregelungsschaltung 50a über
die S1-Schnittstelle 54a geschickt. Die S1-Cache-Steuereinheit
28a prüft das lokale S1-Verzeichnis 26a auf die Adresse
der angeforderten Daten, und wenn die Daten in dem S1-Cache
gespeichert sind, werden die Daten in dem S1-Cache aktualisiert,
und es wird ein Verriegelungsbit in dem S1-Verzeichnis
26a gesetzt. Diese Daten in dem S1-Cache 24a werden verriegelt
und sind daher nicht zugreifbar, bis die Kopie in dem S2-Cache
aktualisiert wird und alle die anderen Kopien in den anderen
S1-Caches ungültig gemacht werden. Während die Anforderung in
dem S1-Cache-Subsystem 23a verarbeitet wird, setzt die Verkehrsregelungsschaltung
50a die Adresse auf den Adreßbus 60a,
um zu bestimmen, ob sich die Daten in dem S2-Cache 32a befinden.
Wenn sich die Daten in dem S1-Cache 24a befinden, dann
befinden sich die Daten auch in dem S2-Cache 32a. Die Inhalte
des S2-Verzeichnisses 34a geben an, ob sich die Daten in dem
S2-Cache 32a befinden. Unter der Annahme, daß sich die Kopie
in dem S2-Cache 32a befindet, wird die Kopie in einen Puffer
in der S1-Schnittstelle 54a eingeschrieben, mit den Aktualisierungen
in diesem Puffer gemischt, und dann wird die aktualisierte
Kopie in den S2-Cache 32a geschrieben. Dann schickt
die Verkehrsregelungsschaltung 50a ein Signal zum Ungültigmachen
zu jeder S1-Cache-Steuereinheit 28b-c und/oder d, das
eine Kopie ohne die Aktualisierung besitzt. Die Identität
dieser S1-Caches 28b, c und/oder d wird durch den Vergleich
der Datenadressen mit den Inhalten der entsprechenden S1-Kopierverzeichnisse
54b, c und/oder d angegeben. Die Verkehrsregelungsschaltung
signalisiert auch dem anfordernden S1-Cache
28a, daß die Speicherung erfolgreich beendet wurde, wodurch
die Adresse entriegelt wird und es der ZE 22a erlaubt wird,
die Daten zu benutzen.
Wenn sich die Daten weder in dem S1-Cache 24a oder S2-Cache
32a befinden, dann zeigt der Adreßvergleich in dem S1-Verzeichnis
26a und dem S2-Verzeichnis 34a fehlende Übereinstimmungen
an und die Verkehrsregelungsschaltung 50a schickt über
die Schnittstelle 84a der Speichersteuereinheit und die S20-Schnittstelle
74a eine Anforderung zum ausschließlichen Abrufen
(AA) und Adressieren an die Verkehrsregelungsschaltung 70a
der Speichersteuereinheit. Der Adreßvergleich in der Speichersteuereinheit
38a zeigt eine fehlende Übereinstimmung für
das S2-Kopierverzeichnis 39a-l an und entweder einen Treffer
oder eine fehlende Übereinstimmung für das Verzeichnis 78a des
Puffers für modifizierte Zeilen. Wenn eine fehlende Übereinstimmung
in dem Puffer für modifizierte Zeilen vorliegt, dann
schickt die Verkehrsregelungsschaltung 70a die Adresse (nach
Übersetzung durch einen physischen Adreßübersetzer 92a) und
die Anforderung für ausschließliches Abrufen 51 über die
Schnittstelle 94a des Hauptspeichers an den Hauptspeicher 51.
Die Daten werden zu dem Puffer in der S1-Schnittstelle 54a
über die S2-Schnittstelle 74a, die SSO-Schnittstelle 84a und
die S1-Schnittstelle 54a zurückgeschickt. Nachdem sie einmal
im Puffer sind, werden die Daten mit den Aktualisierungen der
ZE 22a gemischt, und dann liest die Verkehrsregelungsschaltung
die gemischten Daten aus dem Puffer und schreibt sie in den
S2-Cache 32a und schickt ein Betätigungssignal zur S1-Steuereinheit
28, um die Verriegelung im S1-Cache rückzustellen.
Fig. 2 stellt auch die E-/A-Schnittstellen 97a und 99a für
Warteschlangen dar, die E-/A-Operationen bearbeiten. Um die
Figuren zu vereinfachen, sind die Schaltungen zur Umsetzung
von virtuellen in Hauptspeicheradressen und die Puffer zur
Adreßumsetzung nicht verkörpert. Sie führen die folgende
Funktion aus. In vielen Computersystemen identifizieren die
auf einem Prozessor laufenden Programme Daten durch Adreßoperanden,
die in einer Instruktion eingebettet sind. Die Adreßoperanden
werden durch Schaltungen schnell in eine "virtuelle"
Adresse umgesetzt, die eine Speicherstelle in dem linearen
Adreßraum des Programms ist. Dann übersetzt Hardware mit
Unterstützung des Betriebssystems dynamisch die virtuelle
Adresse in die entsprechende Hauptspeicheradresse. Die Zeit,
die erforderlich ist, um die Adreßumsetzung auszuführen, ist
beträchtlich. Daher werden nach der Umsetzung die virtuelle
Adresse und die entsprechende Hauptspeicheradresse oder relevante
Teile davon zusammen mit der programmspezifischen Steuerinformation
in einem Umsetzungspuffer (UP) für künftige Bezugnahme
gespeichert.
Die vorliegende Erfindung ist hauptsächlich befaßt mit einer
Seitenübertragungseinrichtung 71a befaßt, die sich in der
Speichersteuereinheit 38a befindet. Die Seitenübertragungseinrichtung
71a hat drei Hauptfunktionen. Erstens überträgt die
Seitenübertragungseinrichtung Daten, wie angefordert, von dem
S2-Cache zu dem Hauptspeicher oder dem Zusatzspeicher, einer
anderen Speicherstelle im Hauptspeicher oder dem Zusatzspeicher
151. Zweitens schreibt die Seitenübertragungseinrichtung
Daten der ZE in den Hauptspeicher oder den Zusatzspeicher.
Drittens kann die Seitenübertragungseinrichtung ein vorgegebenes
Muster oder lauter Nullen auf eine Seite des Hauptspeichers
oder des Zusatzspeichers schreiben. In allen drei Fällen
wird die Arbeit von der ZE zu der Seitenübertragungseinrichtung
ausgelagert, und der S2-Cache wird nur betätigt, wenn er
eine Kopie der betreffenden Zeile enthält. Daher wird keine
Zeit mit dem Schreiben von Kopien in den S2-Cache (oder den
S1-Cache) verschwendet.
Wie in Fig. 3 dargestellt, enthält die Seitenübertragungseinrichtung
vier Anforderungspuffer 100a-d, von denen jeder einen
Befehl speichert, die Quellen-ID, die Bestimmungs-ID, "Von"-Adresse,
"Von"-Schlüssel, "Zu"-Adresse, "Zu"-Schlüssel, Zustandsbits,
Speicherdaten für eine Speicheranforderung und ein
Antwortbyte. Ein Pool von vier Zeilenpuffern 102a-d für je 128
Bytes ist für Zeilenanforderungen verfügbar, die von dem Anforderungspuffer
analysiert werden, wie das unten genauer beschrieben
wird. Jeder Zeilenpuffer speichert eine Von- oder
Zu-Adresse, eine Datenzeile, Statusbits und die ID des Anforderungspuffers,
die ihm zugeordnet ist. Wie das unten genauer
beschrieben ist, werden E-/A-Zeilenanforderungen von den
Zeilenpuffern zu einem E-/A-Ausführungsstapel 104 weitergeleitet,
und ZE- Zeilenanforderungen werden von den Zeilenpuffern
vor der Ausführung zu einem ZE-Ausführungsstapel 106 in einer
nachfolgenden Stufe weitergeleitet. Jeder Ausführungsstapel
enthält für jede Zeilenanforderung einen Zeiger für den entsprechenden
Zeilenpuffer. Eine Seitenübertragungs-Steuereinrichtung
108 steuert das Analysieren und Weiterleiten von
Anforderungen der Anforderungspuffer an die Zeilenpuffer und
das Weiterleiten von Zeilenanforderungen der Zeilenpuffer an
die Stapel.
Jede der drei ZEen kann drei verschiedene Arten von Befehlen
an die Datenübertragungseinrichtung herausgegeben. Der Befehl
ZE-SEITENKOPIE bedeutet, daß die Seitenübertragungseinrichtung
die Daten aus der 4 K "Von"-Adresse lesen und die Daten in die
4 K "Zu"-Adresse in dem Ziel speichern sollte (Hauptspeicher
51 oder Zusatzspeicher. Wenn die Daten sich in dem S2-Cache
befinden, werden sie von dort gelesen (aber nicht in der Von-Adresse
des S2-Cache ungültig gemacht); sonst werden sie aus
dem Hauptspeicher oder Zusatzspeicher gelesen. Der Befehl ZE-SEITENKOPIE
& AUSLAGERN bedeutet, daß die Seitenübertragungseinrichtung
die Daten der 4 K "Von"-Adresse lesen und die Daten
in der 4 K "Zu"-Adresse speichern sollte. Wenn die Daten
in dem S2-Cache gefunden und aus ihm ausgeelesen werden, werden
sie in der Von-Adresse des S2-Caches ungültig gemacht. Sowohl
für die Operationen ZE-SEITENKOPIE als auch ZE-SEITENKOPIE &
AUSLAGERN macht die Speicherung im Hauptspeicher oder einer
externen Speichereinrichtung alle Kopien ungültig, die in dem
S2-Cache (in der "Zu"-Adresse) gefunden werden.
Der Befehl ZE-SEITENSPEICHERUNG bedeutet, daß die Seitenübertragungseinrichtung
aktuelle Daten speichern sollte, die für
jede Adresse auf der gesamten 4 K-Seite angegeben sind, oder
ein Viererwortmuster (das lauter Nullen sein können), das mit
dem Befehl für die gesamte 4 K-Seite geliefert wird. Dieser
Befehl macht jede Kopie ungültig, die in der Speicheradresse
des S2-Caches gefunden wird. Im Fall eines Befehls ZE SEITENSPEICHERUNG
wird nur eine Zu-Adresse in dem Befehl geliefert;
es gibt keine Von-Adresse.
Jeder der E-/A-Prozessoren 53a-d kann auch die folgenden Befehle
herausgeben. E-/A-SEITENKOPIE bedeutet, daß die Seitenübertragungseinrichtung
die Daten der 4 K Von-Adresse lesen
und die Daten in der 4 K Zu-Adresse speichern sollte. Wenn die
Daten sich in dem S2-Cache befinden, werden sie aus dem S2-Cache
gelesen, aber in der Von-Adresse des S2-Caches nicht
ungültig gemacht. Dann werden die Daten an der Bestimmung
gespeichert und die S2-Kopie wird an der Zu-Adresse des S2-Caches
ungültig gemacht. Der Befehl E-/A-SEITENSPEICHERUNG
NULL bedeutet, daß die Seitenübertragungseinrichtung in der 4 K
Zu-Adresse lauter Nullen speichern und jede Kopie in dem S2-Cache
an der Zu-Adresse in dem S2-Cache ungültig machen
sollte.
Fig. 4 stellt den Fluß einer Anforderung-ZE SEITENSPEICHERUNG
der ZE 22a dar, um die Daten im Hauptspeicher (Schritt 110) zu
aktualisieren. Die ZE 22a schickt eine Anforderung an die Verkehrsregelungsschaltung
50a über die S1-Schnittstelle 54a
(Schritt 111). Die Anforderung gibt an eine Seite von zu
schreibenden Daten, die Zu-Adresse, d. h. die Startadresse für
die Speicherung der Datenseite, und daß die Daten im Hauptspeicher
51 gespeichert werden sollten. (Alternativ könnte die
Anforderung eine Adresse im Zusatzspeicher angeben, um dort zu
speichern.) Da die Anforderung eine Hauptspeicheranforderung
ist, schickt die Verkehrsregelungsschaltung 50a die Anforderung
zu der Verkehrsregelungsschaltung 70a der Speichersteuereinheit
38a über die SS-Schnittstelle 85a und die S20-Schnittstelle
74a. Die Verkehrsregelungsschaltung 70a empfängt die
Anforderung ZE-SEITENSPEICHERUNG und gibt ihr Vorrang unter
früher empfangenen Anforderungen aller Arten der ZE. Die Verkehrsregelungsschaltung
70a gibt auch allen Arten der E-/A-Prozessoranforderungen
Vorrang vor allen ZE-Anforderungen, ob
sie früher empfangen wurden oder nachfolgend empfangen wurden,
(bevor die verbleibenden ZE-Anforderungen ausgeführt werden).
Daher schickt die Verkehrsregelungsschaltung 70a irgendwelche
Anforderungen der E-/A-Prozessoren zu der Seitenübertragungseinrichtung
vor irgendwelchen ZE-Anforderungen, und in der Abwesenheit
von irgendwelchen Anforderungen der E-/A-Prozessoren
schickt sie ZE-Anforderungen in FIFO (first-in/first-out)-Reihenfolge
zu der Seitenübertragungseinrichtung (Schritt 112.)
Die Seitenübertragungseinrichtung kann nicht alle Anforderungen
unmittelbar speichern oder ausführen. Daher bestimmt die
Seitenübertragungseinrichtung 71a nach dem Empfangen der Anforderung
ZE-SEITENSPEICHERUNG, ob irgendeiner der vier Anforderungspuffer
92a-d verfügbar ist, um die Anforderung zu empfangen.
(Entscheidung 116). Wenn nicht, schickt die Seitenübertragungseinrichtung
ein Besetztsignal zu der anfordernden
ZE über die Verkehrsregelungsschaltung 70a und setzt ein Besetztbit,
um der ZE zu signalisieren, wenn ein Anforderungspuffer
verfügbar wird (Schritt 117). Wenn jedoch einer der
Anforderungspuffer 100a-d verfügbar ist, dann schickt die Seitenübertragungseinrichtung
eine Annahmeantwort über die Verkehrsregelungsschaltung
70a zu der anfordernden ZE (Schritt
118). Die Seitenübertragungseinrichtung lädt auch den verfügbaren
Anforderungspuffer mit den oben definierten Anforderungsparametern
und der Datenseite, die von der ZE geliefert
wurde (Schritt 118). Danach sieht die Seitenübertragungseinrichtung
71a die Seitenanforderung und die Datenseite an als
32 aufeinanderfolgende Speicheranforderungen für 32 aufeinanderfolgende
Zeilen der Seite. (Wie oben angegeben, gibt es 32
Zeilen pro Seite.)
An diesem Punkt in dem Fluß gibt es einen bis vier Anforderungspuffer,
die Anforderungen enthalten, und jeder hat seine
entsprechende Seite logisch in Zeilen unterteilt. Die Seitenübertragungseinrichtung
wählt die Anforderungspuffer in einer
zyklischen Reihenfolge, (z. B. Anforderungspuffer 100a, 100b,
100c, 100d, 100a, . . .) aus und bestimmt dann, ob die anfordernde
ZE für jeden ausgewählten Anforderungspuffer berechtigt
ist, um an der Adresse im Anforderungspuffer zu speichern.
Demgemäß fordert die Seitenübertragungseinrichtung den Schlüssel
für die Zu-Adresse von einer Schlüsselmatrix 49 im Hauptspeicher
51 und vergleicht sie mit dem Schlüssel in der Anforderung
(Schritt 119 und Entscheidung 120). Wenn die anfordernde
ZE nicht berechtigt ist, die Zu-Adresse zu aktualisieren
oder wenn ein Fehler beim Lesen des Schlüssels auftrat, wird
der Befehl annulliert und ein Fehlersignal mit der geeigneten
Antwort zu der ZE geschickt (Schritt 121). Wenn kein solcher
Schlüsselfehler vorlag, wird ein Bit gesetzt, das angibt, daß
keine weitere Schlüsselprüfung für die 4 K-Seite durchgeführt
werden sollte (wenn der Schlüssel nicht geändert wird. Wenn
der Zustand irgendeines Schlüssels in der Schlüssel-Schnittstelle
geändert wird, wird die Adresse des Schlüssels zu der
Datenübertragungseinrichtung geschickt. Als Antwort vergleicht
die Seitenübertragungseinrichtung die Adresse mit allen Adressen
in dem Anforderungspuffer und setzt für jede Anforderung,
die durch die Schlüsseländerung berührt wird, die Bits, welche
augenblicklich angeben, keine Schlüsselüberprüfung durchzuführen.
Die nächste Anforderung, die die Adresse einschließt, die
durch die Schlüsseländerung berührt wird, fordert eine Schlüsselprüfung
wegen der Bits, die rückgesetzt wurden, an.)
Wenn die ZE berechtigt ist, in die Zu-Adresse, die in der Anforderung
angegeben ist, zu schreiben, versucht die Seitenübertragungseinrichtung
als nächstes, einen verfügbaren
Zeilenpuffer für die nächste Zeile in jedem ausgewählten
Anforderungspuffer zu finden. (Entscheidung 122). Für jeden
Anforderungspuffer schließt dies eine Prüfung ein, ob der
zugehörige Zeilenpuffer verfügbar ist. Wenn der zugehörige
Zeilenpuffer nicht verfügbar ist, bestimmt die Seitenübertragungseinrichtung,
ob ein anderer der Zeilenpuffer 102 leer ist
und ob der ausgewählte Anforderungspuffer der mit dem höchsten
Vorrang ist, der auf einen Zeilenpuffer wartet (Entscheidung
123). Wenn das der Fall ist oder wenn die Antwort auf die
Entscheidung 122 Ja war, dann schreitet die Seitenübertragungseinrichtung
fort, um den identifizierten Zeilenpuffer 102
mit der nächsten Zeile des Anforderungspuffers zu laden, der
im Schritt 118 ausgewählt wurde (Schritt 124). Als nächstes
setzt die Seitenübertragungseinrichtung die analysierte Anforderung
des Zeilenpuffers nach einer Zeilenspeicherung auf den
ZE-Ausführungsstapel 106 (Schritt 126). Die Seitenübertragungseinrichtung
bedient den E-/A-Ausführungsstapel vor dem
ZE-Ausführungsstapel. Wenn der E-/A-Stapel leer ist und diese
Anforderung nach einer Zeilenspeicherung für die ZE die nächste
auf dem ZE-Stapel ist (Entscheidung 127), gibt die Seitenübertragungseinrichtung
eine Anforderung nach einer Seitenspeicherung
an die Verkehrsregelungsschaltung 70a innerhalb
der Speichersteuereinheit heraus (Schritt 128). Dann schickt
die Verkehrsregelungsschaltung 70a die Datenzeile von dem
Zeilenpuffer zu der Steuerung des Puffers für modifizierte
Zeilen (Schritt 129). Die Steuerung des Puffers für modifizierte
Zeilen schickt die Datenzeile zu der Bestimmung, in dem
dargestellten Beispiel zum Hauptspeicher, wenn der Bus
freigegeben wird. Während die Daten zu dem Puffer für modifizierte
Zeilen geschickt werden, prüft die Verkehrsregelungsschaltung
70a auch das Kopienverzeichnis 39a-l, um zu bestimmen,
ob der S2-Cache 32a eine Kopie dieser Seite enthält (Entscheidung
130). Wenn das der Fall ist, schickt die Verkehrsregelungsschaltung
70a ein Signal zum Ungültigmachen dieser
Zeile zu der Verkehrsregelungsschaltung 50a für den S2-Cache
32a, und das Signal zum Ungültigmachen wird in dem S2-Verzeichnis
34a gespeichert (Schritt 131). Während die Verkehrsregelungsschaltung
50a die Kopie in dem S2-Cache ungültig
macht, prüft die Verkehrsregelungsschaltung 50a (die Teil der
S2-Cache-Steuereinrichtung ist,) auch seine S1-Kopienverzeichnisse
54a-d, um zu bestimmen, ob irgendeiner der S1-Caches eine
Kopie dieser Seite enthält, und wenn das der Fall ist, schickt
sie ein Signal zum Ungültigmachen an das S1-Verzeichnis oder
die Verzeichnisse in den S1-Cache-Subsystemen, die eine Kopie
dieser Seite enthalten (Entscheidung 132 und Schritt 133).
Nach dem Abschicken der Zeile zu dem Puffer für modifizierte
Zeilen und dem Ungültigmachen der S2- und S1-Caches gibt die
Seitenübertragungseinrichtung den Zeilenpuffer frei (Schritt
134). Parallel zu den Schritten 127-134 bestimmt die Seitenübertragungseinrichtung,
ob es irgendwelche weiteren Zeilenanforderungen
in den Zeilenpuffern gibt (Entscheidung 135). Wenn
nicht, bestimmt die Seitenübertragungseinrichtung, ob es
irgendwelche Zeilenanforderungen in den Zeilenpuffern gibt,
die auf den entsprechenden Ausführungsstapel kopiert, aber
noch nicht erledigt wurden (Entscheidung 136). Dies schließt
die Anforderung ein, die gerade ausgeführt wurde. Wenn das der
Fall ist, wartet die Seitenübertragungseinrichtung bis alle
Anforderungen nach Zeilenspeicherungen erledigt sind und
schickt ein Erledigungssignal zu der ZE, die ursprünglich die
entsprechenden Anforderungen machte (Schritt 138).
Es wird wieder auf die Entscheidung 135 Bezug genommen. Wenn
dort weitere Zeilenanforderungen auszuführen sind, kehrt die
Seitenübertragungseinrichtung zur Entscheidung 122 zurück, um
das vorausgehende Verfahren für das Ausführen zusätzlicher
Zeilenanforderungen zu wiederholen.
Es wird wieder auf das bejahende Ausgangssignal der Entscheidung
122 Bezug genommen. Während die Seitenübertragungseinrichtung
(die Schritte) 124, 126 usw. ausführt, erhöht die
Seitenübertragungseinrichtung auch die vorhergehende Zeilenadresse
um 128 Bytes, um die Startadresse der nächsten Zeile
der Seite zu identifizieren (Schritt 140). Dann bestimmt die
Seitenübertragungseinrichtung, ob das Ergebnis auf XXXXX endet,
um das Seitenende anzugeben (Entscheidung 142). Wenn das
der Fall ist, dann stoppt die Seitenübertragungseinrichtung
das Erhöhen. Wenn jedoch das Ergebnis nicht das Seitenende
anzeigt, bestimmt die Seitenübertragungseinrichtung, ob eine
Schlüsselprüfung erforderlich ist (Schritt 144). Eine Schlüsselprüfung
ist erforderlich, wenn die Adresse den Beginn einer
neuen Seite angibt oder wenn der Schlüssel für die Seite seit
der letzten Prüfung geändert wurde. Wenn eine Schlüsselprüfung
erforderlich ist, kehrt die Seitenübertragungseinrichtung zum
Schritt 162 zurück, um den Schlüssel in der oben angegebenen
Weise zu prüfen.
Das Folgende ist eine Flußbeschreibung für eine Anforderung
E-/A-Seitenkopie des E-/A-Prozessors 53a, wie sie in Fig. 5
dargestellt ist. Der E-/A-Prozessors 53a schickt die Anforderung
zu der Verkehrsregelungsschaltung 70a über die Schnittstelle
97a (oder 99a) des E-/A-Prozessors (Schritt 150). Die
Anforderung gibt die Von-Startadresse der Seite im Hauptspeicher
51 an, die zu kopieren ist, und die Zu-Startadresse im
Hauptspeicher, in die zu kopieren ist. (Alternativ könnte die
Anforderung eine Adresse im Zusatzspeicher oder dem S3-Cache
angeben, wenn einer vorhanden ist, von der aus oder in die zu
kopieren ist.) Dann leitet die Verkehrsregelungsschaltung 70a
die Anforderung nach allen vorher empfangenen E-/A-Prozessoranforderungen
zu der Datenübertragungseinrichtung 71 zur Verarbeitung
weiter (Schritt 152). Als Antwort bestimmt die Seitenübertragungseinrichtung,
ob einer der Anforderungspuffer
100a-d verfügbar ist (Entscheidung 156). Wenn nicht, setzt die
Seitenübertragungseinrichtung ein Besetztbit, das anzeigt, daß
eine Besetztantwort zu dem anfordernden E-/A-Prozessor geschickt
wurde, und schickt eine Besetztantwort zu der Verkehrsregelungsschaltung
70a zurück, und die Verkehrsregelungsschaltung
70a leitet die Besetztantwort zu dem anfordernden
E-/A-Prozessor weiter (Schritt 158). Wenn einer der Anforderungspuffer
verfügbar ist, lädt die Seitenübertragungseinrichtung
die Anforderung in ihn und sendet über die Verkehrsregelungsschaltung
70a ein Annahmesignal zu dem anfordernden E-/A-
Prozessor zurück (Schritt 160). Als nächstes fordert die Seitenübertragungseinrichtung
den Schlüssel für die Von-Adresse
von der Hauptspeicher-Schlüsselmatrix 49 (Schritt 162) und
vergleicht diesen Schlüssel mit dem Schlüssel des anfordernden
E-/A-Prozessors. Wenn der E-/A-Prozessor nicht die erforderliche
Berechtigung besitzt, schickt die Seitenübertragungseinrichtung
ein Schlüsselfehler-Signal zu der Verkehrsregelungsschaltung
70a und die Verkehrsregelungsschaltung leitet das
Fehlersignal zu dem E-/A-Prozessor weiter (Entscheidung 164
und Schritt 166). Wenn jedoch der E-/A-Prozessor die Berechtigung
besitzt, auf die in dem Anforderungspuffer angegebene
Adresse zuzugreifen, bestimmt die Seitenübertragungseinrichtung
als nächstes, ob der zugehörige Zeilenpuffer 102a frei
ist (Entscheidung 172). Wenn nicht, bestimmt die Seitenübertragungseinrichtung,
ob ein anderer der Zeilenpuffer 102b-d
für den E-/A-Prozessor 53a verfügbar ist (Entscheidung 174).
Wenn das der Fall ist oder wenn die Antwort auf die Entscheidung
172 Ja lautete, dann setzt die Seitenübertragungseinrichtung
den Anforderungsteil für einen Zeilenabruf der E-/A-SEITENKOPIEANFORDERUNG
auf den Ausführungsstapel 104 (Schritt
175). Wenn diese Zeilenanforderung die nächste auf dem Ausführungsstapel
104 (Entscheidung 177) ist, dann leitet die
Seitenübertragungseinrichtung die Zeilenabrufanforderung zu
der Verkehrsregelungsschaltung 70a weiter (Schritt 178), und
die Verkehrsregelungsschaltung 70a ruft dann die Datenzeile
aus dem Hauptspeicher 51 ab (Schritt 180). (Wenn jedoch die
Daten auch in dem S2-Cache residieren oder in dem Puffer für
modifizierte Zeilen, dann ruft die Verkehrsregelungsschaltung
70a die Daten aus dem S2-Cache ab oder statt dessen aus dem
Puffer für modifizierte Zeilen.) Als nächstes schickt die
Verkehrsregelungsschaltung 70a die Daten zu der Seitenübertragungseinrichtung
zurück und die Seitenübertragungseinrichtung
lädt die Daten in den Zeilenpuffer (Schritt 181). Als nächstes
bestimmt die Seitenübertragungseinrichtung, ob eine Schlüsselprüfung
erforderlich ist, um in die gewünschten Speicherstellen
zu schreiben (Entscheidung 182). Wenn die Zeile in dem
Zeilenpuffer die erste Zeile einer Seite ist oder wenn der
Schlüssel für die Zu-Adresse geändert wurde, dann muß der
Schlüssel des E-/A-Prozessors geprüft werden. Diese Prüfung
wird durchgeführt durch Abrufen des Schlüssels für diese Seite
aus der Schlüsselmatrix 49 (Schritt 184) und durch dann folgendes
Vergleichen des Schlüssels des E-/A-Prozessors, der mit
der Anforderung für diese Seite geliefert wurde, mit dem aus
dem Hauptspeicher abgerufenen Schlüssel (Schritt 186). Wenn
der E-/A-Prozessor nicht berechtigt ist, in die in der Anforderung
angegebene Adresse zu schreiben, schickt die Seitenübertragungseinrichtung
ein Schlüsselfehler-Signal zu der
Verkehrsregelungsschaltung 70a, und die Verkehrsregelungsschaltung
70a schickt das Schlüsselfehler-Signal zu dem E-/A-Prozessor
zurück (Schritt 187). Sonst setzt die Seitenübertragungseinrichtung
als nächstes eine Speicheranforderung, die
dem Zeilenpuffer entspricht, der gerade das Abrufen beendete,
auf den Ausführungsstapel 104 (Schritt 188). Wie oben angemerkt
wurde, haben die E-/A-Operationen einen höheren Vorrang
als die ZE-Operationen (Entscheidung 189), und wenn diese
Anforderung zur Zeilenspeicherung den Anfang des Stapels 104
erreicht, schicht die Seitenübertragungseinrichtung sie zu der
Verkehrsregelungsschaltung 70a und die Verkehrsregelungsschaltung
70a schickt die Datenzeile aus dem Zeilenpuffer in den
Puffer für modifizierte Zeilen (Schritt 192 und 194). Während
die Daten in dem Puffer für modifizierte Zeilen empfangen werden,
prüft die Verkehrsregelungsschaltung 70a das Kopienverzeichnis
in der Speichersteuereinheit, um zu bestimmen, ob der
S2-Cache eine Kopie dieser Zeile enthält (Schritt 195). Wenn
das der Fall ist, schickt die Verkehrsregelungsschaltung 70a
ein Signal Ungültigmachen an die Verkehrsregelungsschaltung
50a des S2-Cache-Subsystems 31a für diese Zeile, und das Signal
Ungültigmachen wird in dem S2-Verzeichnis 34a gespeichert
(Schritt 196). Während die Verkehrsregelungsschaltung 50a die
Kopie in dem S2-Cache ungültig macht, prüft die S2-Steuereinheit
auch seine L1-Kopienverzeichnisse 54a-d, um zu bestimmen,
ob irgendeiner der S1-Caches eine Kopie dieser Seite enthält
(Entscheidung 197) und schickt, wenn das der Fall ist, ein
Signal Ungültigmachen an das S1-Verzeichnis oder die Verzeichnisse
in den S1-Cache-Subsystemen, die eine Kopie dieser Zeile
enthalten (Schritt 198). Nach dem Schicken der Zeile zu dem
Puffer für modifizierte Zeilen und dem Ungültigmachen der S2-
und S1-Cachekopien, gibt die Seitenübertragungseinrichtung den
Zeilenpuffer frei (Schritt 199).
Parallel zu den Schritten 189-199 bestimmt die Seitenübertragungseinrichtung,
ob irgendwelche Anforderungen in dem Anforderungspuffer
vorhanden sind (Entscheidung 200). Wenn nicht,
bestimmt die Seitenübertragungseinrichtung, ob in den Zeilenpuffern
irgendwelche Zeilenanforderungen vorliegen, die in den
entsprechenden Ausführungsstapel kopiert, aber noch nicht erledigt
wurden (Entscheidung 202). Wenn das der Fall ist, gibt
die Seitenübertragungseinrichtung diese Anforderungspuffer
frei und schickt ein Erledigungssignal an den E-/A-Prozessor,
der ursprünglich die entsprechende Anforderung machte (Schritt
204).
Es wird wieder auf die Entscheidung 200 Bezug genommen. Wenn
weitere Anforderungen in den Zeilenpuffern vorliegen, die zu
dem entsprechenden Stapel geschickt, aber noch nicht erledigt
wurden, kehrt die Seitenübertragungseinrichtung zur Entscheidung
172 zurück, um das vorhergehende Verfahren für das Ausführen
der zusätzlichen Zeilenanforderungen zu wiederholen.
Es wird wieder auf das bejahende Ausgangssignal der Entscheidung
172 Bezug genommen. Während die Seitenübertragungseinrichtung
(die Schritte) 176, 178 ausführt, erhöht die Seitenübertragungseinrichtung
auch die Adresse der vorherigen Zeile
um 128 Bytes, um die Startadresse der nächsten Zeile der Seite
zu identifizieren (Schritt 210). Dann bestimmt die Seitenübertragungseinrichtung,
ob das Ergebnis auf XXXXX endet, um das
Seitenende anzugeben (Entscheidung 212). Wenn das Fall
ist, stoppt die Seitenübertragungseinrichtung das Erhöhen.
Wenn das Ergebnis nicht das Seitenende anzeigt, bestimmt die
Seitenübertragungseinrichtung, ob eine Schlüsselprüfung erforderlich
ist (Schritt 214). Eine Schlüsselprüfung ist erforderlich,
wenn die Adresse den Beginn einer neuen Seite angibt
oder wenn der Schlüssel für die Seite seit der letzten Prüfung
geändert wurde. Wenn eine Schlüsselprüfung erforderlich ist,
kehrt die Seitenübertragungseinrichtung zum Schritt 162
zurück, um den Schlüssel in der oben angegebenen Weise zu
prüfen.
Die Operation E-/A-SEITENSPEICHERUNG NULL ist die gleiche wie
die Operation ZE-SEITENSPEICHERUNG und wird wie in Fig. 4
ausgeführt, mit der Ausnahme, daß der Befehl E-/A-SEITENSPEICHERUNG
NULL von einem E-/A-Prozessor stammt anstatt von der
ZE und keine expliziten Daten geliefert werden; durch den
Befehl weiß die Seitenübertragungseinrichtung, daß sie lauter
Nullen im Seitenpuffer im Schritt 118 schreiben soll.
Die Operation ZE-SEITENKOPIE ist die gleiche wie die Operation
E-/A-SEITENKOPIE und wird so ausgeführt wie in Fig. 5, mit
der Ausnahme, daß der Befehl ZE-SEITENKOPIE von der ZE stammt
anstatt von einem E-/A-Prozessor und die Verkehrsregelungsschaltung
70a über die Verkehrsregelungsschaltung 50a
erreicht.
Die Operation ZE-SEITENKOPIE & LÖSCHEN ist die gleiche wie die
Operation E-/A-SEITENKOPIE und wird wie in Fig. 5 ausgeführt,
mit der Ausnahme, daß der Befehl ZE-SEITENKOPIE & LÖSCHEN von
einer ZE ausgeht anstatt von einem E-/A-Prozessor, und während
des Abrufs vom S2-Cache (Schritte 180-181, unter der Annahme,
daß sich die Daten in dem S2-Cache befinden,) macht die Operation
ZE-SEITENKOPIE & LÖSCHEN stets die Von-Adresse in dem S2-
Cache der S2-Kopie ungültig, die gerade abgerufen wurde, wogegen
die Operation ZE-SEITENKOPIE die Von-Adresse in dem S2-
Cache der S2-Kopie nach der Abrufoperation nicht ungültig
macht. Während der nachfolgenden Speicheroperation für die
Operationen ZE-SEITENKOPIE & LÖSCHEN, ZE-SEITENKOPIE und E-/A-
SEITENKOPIE werden die Daten für die Zu-Adresse, wenn sie
ebenfalls in dem S2-Cache residieren, dort ungültig gemacht.
Fig. 6 erläutert genauer die vorhergehenden Schritte 119-120
und 172-174 zur Bestimmung, welcher Seitenpuffer jedem Anforderungspuffer
zuzuordnen ist. Es sei bemerkt, daß die Seitenübertragungseinrichtung
in Hardware implementiert ist, die dem
Flußdiagramm entspricht. Die Anforderungspuffer werden reihum
ausgewählt in einer Reihenfolge nach Art einer Wanderdrossel.
Wenn er ausgewählt wurde, kann jeder Anforderungspuffer immer
den zugeordneten Zeilenpuffer benutzen, nachdem der zugehörige
Zeilenpuffer freigegeben wird. Wenn jedoch einer oder mehrere
Zeilenpuffer verfügbar sind, d. h. es liegt keine Anforderung
in dem (den) entsprechenden Anforderungspuffer(n) vor, sind
sie für den (die) Anforderungspuffer mit dem höchsten Vorrang
verfügbar. Das Flußdiagramm nach Fig. 6 ist spezifisch für
den Puffer 100a, aber jeder der anderen Puffer wird in analoger
Weise betrieben. Im Schritt 450 lädt die Seitenübertragungseinrichtung
den Anforderungspuffer 100a. Dann bestimmt
die Seitenübertragungseinrichtung, ob der Zeilenpuffer 102a
verfügbar ist (Entscheidung 452). Wenn das der Fall ist, dann
lädt die Seitenübertragungseinrichtung den Zeilenpuffer 102a
mit der nächsten Zeilenanforderung des Anforderungspuffers
100a (Schritt 453). Wenn jedoch der Zeilenpuffer 102a aufgrund
der Speicherung einer früheren, aber noch nicht ausgeführten
Zeilenanforderung des Anforderungspuffers 100a (oder aufgrund
der Speicherung einer früheren, aber noch nicht ausgeführten
Zeilenanforderung eines anderen Anforderungspuffers, bevor
eine Anforderung im Anforderungspuffer 100a gespeichert
wurde,) nicht verfügbar ist, dann führt die Seitenübertragungseinrichtung
die folgenden Schritte aus, um festzustellen,
ob ein anderer der Zeilenpuffer frei ist und ob der Anforderungspuffer
100a der Anforderungspuffer mit dem höchsten Vorrang
ist, der einen anderen Zeilenpuffer sucht. Im Schritt 454
bestimmt die Seitenübertragungseinrichtung, ob es eine unerledigte
Anforderung im Anforderungspuffer 100b gibt. Wenn nicht,
dann bestimmt die Seitenübertragungseinrichtung, ob der Anforderungspuffer
100a einen höheren Vorrang aufweist als die Anforderungspuffer
100c und 100d (wenn die Anforderungspuffer
100c und 100d gegenwärtig einen Zeilenpuffer suchen). Wenn der
Anforderungspuffer 100a einen höheren Vorrang als die Anforderungspuffer
100c und 100d aufweist oder zumindest einen höheren
Vorrang als jeder dieser Anforderungspuffer, der einen
Zeilenpuffer sucht, oder wenn weder der Anforderungspuffer
100c noch der Anforderungspuffer 100d einen Zeilenpuffer sucht
(Entscheidung 456), dann lädt die Seitenübertragungseinrichtung
die Zeilenanforderung für den Anforderungspuffer 100a in
den Zeilenpuffer 102b (Schritt 458). Wenn die Antwort auf die
Entscheidung 456 nein lautet, dann kehrt die Seitenübertragungseinrichtung
zum Schritt 452 zurück, um zu bestimmen, ob
der Zeilenpuffer 102a jetzt verfügbar ist und fährt dann fort,
wie das oben während der ersten Iteration beschrieben wurde.
Selbst wenn der Zeilenpuffer 102a in der nächsten Iteration
der Entscheidung 459 noch nicht frei ist, kann der Zeilenpuffer
102b jetzt frei sein. Daher ist, wenn es einen Anforderungspuffer
mit einem höheren Vorrang als dem des Anforderungspuffers
100a gibt, der Anforderungspuffer 100a nicht in
der Lage, irgendeinen der Zeilenpuffer 102b-d zu benutzen,
sondern es wird die Benutzung des Zeilenpuffers 102a aufrechterhalten.
(Das Prüfen der Zeilenpuffer 102c oder 102d macht
keinen Sinn, da, wenn der Anforderungspuffer 100a nicht der
mit dem höchsten Vorrang für den Zeilenpuffer 102b ist, der
Anforderungspuffer 100a nicht der mit dem höchsten Vorrang für
die Zeilenpuffer 102c oder 102d ist.)
Es wird wieder auf die Entscheidung 454 Bezug genommen. Wenn
während der ersten Iteration keine unerledigte Anforderung im
Anforderungspuffer 100b war, dann schreitet die Seitenübertragungseinrichtung
weiter zum Schritt 464, um zu bestimmen, ob
es eine unerledigte Anforderung im Anforderungspuffer 100c
gibt. Die Schritte 466 und 468 sind ähnlich den Schritten 456
und 458, die oben beschrieben wurden. Es wird wieder auf die
Entscheidung 464 Bezug genommen. Wenn während der ersten Iteration
eine unerledigte Anforderung in den Anforderungspuffern
100b und 100c vorhanden war, dann geht die Seitenübertragungseinrichtung
weiter zu den Schritten 474-478, die ähnlich den
Schritten 454-458 sind, die oben beschrieben wurden. Nachdem
irgendeiner der Zeilenpuffer mit der Zeilenanforderung des
Anforderungspuffers 100a geladen wurde, kehrt die Seitenübertragungseinrichtung
zum Schritt 452 zurück, um zu versuchen,
einen Zeilenpuffer für die nächste Zeilenanforderung des
Anforderungspuffers 100a zu finden.
Das Folgende sind Beispiele dafür, wie das oben beschriebene
Verfahren die vier Anforderungspuffer aufteilt. Wenn eine
einzelne ZE- oder E-/A-Anforderung (in einem einzelnen Anforderungspuffer)
vorliegt und keine anderen unerledigten Anforderungen
in den anderen drei Anforderungspuffern, dann werden
alle vier Zeilenpuffer für die eine Anforderung während der
zweiunddreißig aufeinanderfolgenden Iterationen der Schritte
119-134 oder 172-199 benutzt. Während der ersten vier Iterationen
empfangen die vier Zeilenpuffer in rascher Folge die
ersten vier Anforderungen, und die Seitenübertragungseinrichtung
leitet sie schnell zu dem Ausführungsstapel weiter. Nachdem
jede Zeilenanforderung zu dem Stapel weitergeleitet wurde,
wird der Zeilenpuffer freigegeben, um die nächste Zeile zu
empfangen. Da es gerade einen Anforderungspuffer mit einer
unerledigten Anforderung gibt, leitet er eine andere Zeilenanforderung
an jeden Zeilenpuffer weiter, wenn diese freigegeben
wurden. Da alle vier Zeilenpuffer benutzt werden, um die alleinige
Anforderung zu erfüllen, wird die Anforderung in einem
minimalen Zeitbetrag ausgeführt.
Wenn es zwei konkurrierende Anforderungen mit dem gleichen
Vorrang (in zwei Anforderungspuffern) gibt, dann sorgen vier
Iterationen der Schritte 119-134 oder 172-199 dafür, daß zwei
Zeilenpuffer mit zwei Zeilen einer Anforderung und zwei Zeilenpuffer
mit zwei Zeilen der anderen Anforderung versorgt
werden. Nachem die Zeile aus jedem Zeilenpuffer zu dem Ausführungsstapel
weitergeleitet wurde, ist der Zeilenpuffer
frei, um die nächste Zeile des nächsten Anforderungspuffers zu
speichern. Mit der Zeit werden die Zeilenpuffer gleichmäßig
zwischen die beiden Anforderungspuffer aufgeteilt. Wenn es
drei anhängige Anforderungen mit gleichem Vorrang (in drei
Anforderungspuffern) gibt, dann benutzt mit der Zeit jede Anforderung
einen Puffer für zwei Drittel der Zeit und zwei Puffer
für ein Drittel der Zeit. Wenn es zwei Anforderungen eines
Vorrangs gibt und eine dritte Anforderung eines niedrigeren
Vorrangs, dann benutzt jede Anforderung die zugeordneten entsprechenden
Zeilenpuffer und die zwei Anforderungen mit höherem
Vorrang teilen sich in die Benutzung (zu verschiedenen
Zeiten) des restlichen Zeilenpuffers. Wenn es zwei Anforderungen
mit einem Vorrang und eine dritte Anforderung mit höherem
Vorrang gibt, dann benutzt jede Anforderung den zugehörigen
entsprechenden Zeilenpuffer und die Anforderung mit höherem
Vorrang benutzt auch den restlichen Zeilenpuffer. Daher benutzt
allgemein jeder Anforderungspuffer seinen zugehörigen
Zeilenpuffer, und die übrigen Zeilenpuffer, werden, wenn
welche vorhanden sind, an der einen Anforderung oder den
mehreren Anforderungen höchsten Vorranges beteiligt.
Die US-Patentanmeldung 08/123 495, angemeldet am 17. 9. 93 von
J. W. Bishop et al. wird hiermit durch Bezugnahme als Teil der
vorliegenden Beschreibung eingegliedert und offenbart spezielle
Hardware, die in Fig. 7 dargestellt ist, mit Ausnahme der
Seitenübertragungseinrichtungen 71a und 71b. Die US-Patentanmeldung
08/123 495 offenbart auch den Fluß, in dem zwei (oder
mehr) S2-Cache-Subsysteme vorgesehen sind und jedes der S2-
Cache-Subsysteme als eine Gruppe von vier S1-Cache-Subsystemen
dient. Es gibt auch eine getrennte Speichersteuereinheit für
jedes S2-Cache-Subsystem. Ein Zweck der Speichersteuereinheit
für jeden S2-Cache ist es, den anderen S2-Cache zu durchsuchen,
wenn der entsprechende S2-Cache die notwendigen Daten
nicht enthält. Wenn der andere S2-Cache die notwendigen Daten
enthält, dann werden die Daten aus diesem anderen S2-Cache
abgerufen. Eine andere Zweckbestimmung der Speichersteuereinheit
für jeden S2-Cache besteht darin, die Kopien in den anderen
S2-Caches und den zugehörigen S1-Caches ungültig zu
machen, wenn Daten in dem entsprechenden S2-Cache aktualisiert
werden. Eine andere Übertragungseinrichtung 71b, die ähnlich
der Seitenübertragungseinrichtung 71a ist, ist in der Speichersteuereinheit
38b des hierarchischen Cachesystems nach der
US-Patentanmeldung 08/123 495 installiert. In dem Fall der
Operationen ZE-SEITENKOPIE, ZE-SEITEKOPIE & LÖSCHEN und E-/A-
SEITENKOPIE werden die Schritte 180 und 195-198 für die Mehrfach-
Cacheanordnung nach Fig. 7 erweitert, so daß die Speichersteuereinheit
auch prüft, ob irgendein anderer S2-Cache
eine Kopie der Daten enthält, wenn der S2-Cache des anfordernden
E-/A-Prozessors der ZE nicht die abzurufenden Daten
enthält. Wenn der andere S2-Cache die Daten enthält und der
S2-Cache des anfordernden E-/A-Prozessors oder der ZE nicht,
dann ruft die Seitenübertragungseinrichtung die Daten von dem
anderen S2-Cache im Schritt 180 ab. Während der nachfolgenden
Speicheroperation irgendeiner dieser Kopieranforderungen
schickt die Seitenübertragungseinrichtung (im Schritt 195-196)
auch Signale zum Ungültigmachen an den anderen S2-Cache für
die Zu-Adresse. In dem Fall der Operationen ZE-SEITENSPEICHERUNG
und E-/A-SEITENSPEICHERUNG NULL werden die Schritte 130-133
auf die Mehrfach-Cacheanordnung nach Fig. 7 ausgedehnt,
so daß die Speichersteuereinheit auch prüft, ob irgendein anderer
S2-Cache eine Kopie der Daten enthält, und die Seitenübertragungseinrichtung
macht alle Kopien in allen S2-Cache-
Subsystemen ungültig, die die Zu-Adresse enthalten.
Fig. 8 ist ein genaueres Blockschaltbild einer Gruppe des
Mehrfach-Cachesystems, das in der US-Patentanmeldung
08/123 495 (ohne die Übertragungseinrichtungen 71a oder 71b)
beschrieben ist.
Basierend auf dem Vorhergehenden wurden Seitenübertragungseinrichtungen
gemäß der vorliegenden Erfindung beschrieben.
Jedoch können zahlreiche Modifikationen und Substitutionen
vorgenommen werden, ohne von dem Schutzumfang der vorliegenden
Erfindung abzuweichen. Daher ist die Erfindung zur Erläuterung
und nicht zur Beschränkung bechrieben worden, und es sollte
auf die folgenden Ansprüche Bezug genommen werden, um den
Schutzumfang der vorliegenden Erfindung zu bestimmen.
Claims (13)
1. Hierarchisches Cachesystem, umfassend:
eine Anzahl Cache-Subsysteme erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Hauptspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache-Subsystem höherer Stufe und dem Hauptspeicher verbunden ist und auf eine Anforderung einer der ZEen, Daten in dem Hauptspeicher zu speichern anspricht, zum Speichern der Daten in dem Hauptspeicher, ohne frühere Inhalte einer Speichere in-Adresse der Anforderung in das Cache-Subsystem höherer Stufe als Antwort auf die Anforderung zu kopieren, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
eine Anzahl Cache-Subsysteme erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Hauptspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache-Subsystem höherer Stufe und dem Hauptspeicher verbunden ist und auf eine Anforderung einer der ZEen, Daten in dem Hauptspeicher zu speichern anspricht, zum Speichern der Daten in dem Hauptspeicher, ohne frühere Inhalte einer Speichere in-Adresse der Anforderung in das Cache-Subsystem höherer Stufe als Antwort auf die Anforderung zu kopieren, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
2. System nach Anspruch 1, bei dem die Einrichtung zum Ungültigmachen
ein Kopienverzeichnis der Datenadressen in
dem Cache-Subsystem höherer Stufe umfaßt und Mittel zum
Vergleichen der Speichere in-Adresse der Anforderung mit
den Datenadressen in dem Kopienverzeichnis.
3. System nach Anspruch 1, bei dem es mehrfache Anforderungen
von ZEen gibt, die mit der Anzahl von Cache-Subsystemen
verbunden sind, und das weiter umfaßt eine Anzahl von
Anforderungspuffern, um die Anforderungen zu speichern,
eine gleiche Anzahl von Datensegmentpuffern und Mittel
zum Auswählen der Anforderungspuffer in zyklischer Reihenfolge
und, bei Auswahl, zum Kopieren einer Anforderung
in einen verfügbaren Datensegmentpuffer, um ein Segment
der Daten in dem Hauptspeicher zu speichern.
4. System nach Anspruch 3, bei dem es weniger Anforderungspuffer
gibt, die unerledigte Anforderungen enthalten, als
Datensegmentpuffer, wobei jeder Anforderungspuffer, der
eine unerledigte Anforderung enthält, Zugriff auf einen
entsprechenden der Datensegmentpuffer hat, und die Datensegmentpuffer,
für welche der entsprechende Anforderungspuffer
keine unerledigte Anforderung enthält, den Anforderungspuffern,
basierend auf Vorrang, zugeordnet werden,
die unerledigte Anforderungen enthalten, oder bei dem es
weniger Anforderungspuffer gibt, die unerledigte Anforderungen
enthalten, als Datensegmentpuffer, und jeder Anforderungspuffer,
der eine unerledigte Anforderung enthält,
Zugriff auf einen entsprechenden der Datensegmentpuffer
hat, und die Datensegmentpuffer, für die der entsprechende
Anforderungspuffer keine unerledigte Anforderung
enthält, unter den Anforderungspuffern, die unerledigte
Anforderungen enthalten, aufgeteilt werden, oder
bei dem, wenn es weniger Anforderungspuffer gibt, die unerledigte
entsprechende Anforderungen enthalten, als
Datensegmentpuffer, dann die Datenübertragungseinrichtung
mehr als einen Datensegmentpuffer einem der Anforderungspuffer
zuordnet, der eine unerledigte Anforderung enthält,
oder bei dem, wenn es weniger Anforderungspuffer
gibt, die unerledigte Anforderungen enthalten, als Datensegmentpuffer,
dann jeder Anforderungspuffer, der eine
unerledigte Anforderung enthält, Zugriff auf einen entsprechenden
der Datensegmentpuffer hat, und die Datensegmentpuffer,
für die der entsprechende Anforderungspuffer
keine unerledigte Anforderung enthält, den Anforderungspuffern,
basierend auf Vorrang, zugeordnet werden, die
unerledigte Anforderungen enthalten.
5. System nach Anspruch 4, bei dem die Datenübertragungseinrichtung
die Zeilenpuffer, für die der entsprechende Anforderungspuffer
keine unerledigte Anforderung enthält,
allgemein gleichmäßig über der Zeit aufteilt zwischen den
Anforderungspuffern, die entsprechende unerledigte Anforderungen
gleichen Vorranges enthalten.
6. Hierarchisches Cachesystem, umfassend:
eine Anzahl von Cache-Subsystemen erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Hauptspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache-Subsystem höherer Stufe und dem Hauptspeicher verbunden ist und auf eine Anforderung einer der ZEen, Daten aus einer Speicherstelle im Speicher in eine andere Speicherstelle im Hauptspeicher zu kopieren, anspricht zum Kopieren der Daten in den Hauptspeicher, ohne frühere Inhalte einer Kopiere in-Adresse der Anforderung in das Cache-Subsystem höherer Stufe als Antwort auf die Anforderung zu kopieren, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
eine Anzahl von Cache-Subsystemen erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Hauptspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache-Subsystem höherer Stufe und dem Hauptspeicher verbunden ist und auf eine Anforderung einer der ZEen, Daten aus einer Speicherstelle im Speicher in eine andere Speicherstelle im Hauptspeicher zu kopieren, anspricht zum Kopieren der Daten in den Hauptspeicher, ohne frühere Inhalte einer Kopiere in-Adresse der Anforderung in das Cache-Subsystem höherer Stufe als Antwort auf die Anforderung zu kopieren, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
7. System nach Anspruch 1 oder 6, bei dem die Einrichtung zum
Ungültigmachen auch das Ungültigmachen der früheren Inhalte
in der Anzahl der Cache-Subsysteme bis zu dem Ausmaß
einleitet, in dem sie sich in der Anzahl von Cache-
Subsystemen befanden, als die eine ZE die Anforderung
machte.
8. System nach Anspruch 6, bei dem es mehrfache Anforderungen
von ZEen gibt, die der Anzahl von Cache-Subsystemen
zugeordnet sind, und weiter umfassend eine Anzahl von
Anforderungspuffern, um die Anforderungen zu speichern,
eine gleiche Anzahl von Datensegmentpuffern und Mittel
zum Auswählen der Anforderungspuffer in zyklischer Reihenfolge
und, bei Auswahl, zum Kopieren einer Anforderung
in einen verfügbaren Datensegmentpuffer, um ein Segment
der Daten in dem Hauptspeicher zu speichern.
9. Verfahren zum Speichern von Daten in einem Hauptspeicher
in einem hierarchischen Cachesystem, das eine Anzahl von
Cache-Subsystemen erster Stufe zum Speichern von Daten
oder Instruktionen verschiedener ZEen und ein Cache-Subsystem
höherer Stufe umfaßt, das Daten oder Instruktionen
der Anzahl von Cache-Subsystemen enthält, wobei das
Verfahren die Schritte umfaßt des:
Speicherns der Daten als Antwort auf eine Anforderung einer der ZEen, Daten in dem Hauptspeicher zu speichern, in dem Hauptspeicher ohne Kopieren früherer Inhalte einer Speicher in-Adresse der Anforderung in dem Cache-Subsystem höherer Stufe als Antwort auf die Anforderung und
Ungültigmachens der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
Speicherns der Daten als Antwort auf eine Anforderung einer der ZEen, Daten in dem Hauptspeicher zu speichern, in dem Hauptspeicher ohne Kopieren früherer Inhalte einer Speicher in-Adresse der Anforderung in dem Cache-Subsystem höherer Stufe als Antwort auf die Anforderung und
Ungültigmachens der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
10. Puffersystem, umfassend:
eine Anzahl von Anforderungspuffern, um Anforderungen nach Speicherung oder Kopie verschiedener Datenblöcke zu speichern,
eine Anzahl von Datensegmentpuffern, die zumindest in der Anzahl gleich der Anzahl der Anforderungspuffer sind, wobei jeder der Datensegmentpuffer eine Größe besitzt, um ein Datensegment vorgegebener Größe zu speichern,
Mittel zum Auswählen der Anforderungspuffer in zyklischer Reihenfolge, die verschiedene unerledigte Anforderungen enthalten, und zum Weiterleiten einer Anforderung jedesmal, wenn einer der Anforderungspuffer ausgewählt wird, an einen der Datensegmentpuffer, um ein Datensegment vorgegebener Größe zu speichern oder zu kopieren, das der Anforderung in dem ausgewählten Anforderungspuffer zugeordnet ist, und
in dem, wenn alle Anforderungspuffer gleichen Vorrang haben und es weniger Anforderungspuffer gibt, die verschiedene unerledigte Anforderungen enthalten, als die Anzahl der Datensegmentpuffer, die Datenübertragungseinrichtung den Anforderungspuffern mit unerledigtem Anforderungen die Benutzung der Datensegmentpuffer, für die es keine unerledigten Anforderungen gibt, zuordnet.
eine Anzahl von Anforderungspuffern, um Anforderungen nach Speicherung oder Kopie verschiedener Datenblöcke zu speichern,
eine Anzahl von Datensegmentpuffern, die zumindest in der Anzahl gleich der Anzahl der Anforderungspuffer sind, wobei jeder der Datensegmentpuffer eine Größe besitzt, um ein Datensegment vorgegebener Größe zu speichern,
Mittel zum Auswählen der Anforderungspuffer in zyklischer Reihenfolge, die verschiedene unerledigte Anforderungen enthalten, und zum Weiterleiten einer Anforderung jedesmal, wenn einer der Anforderungspuffer ausgewählt wird, an einen der Datensegmentpuffer, um ein Datensegment vorgegebener Größe zu speichern oder zu kopieren, das der Anforderung in dem ausgewählten Anforderungspuffer zugeordnet ist, und
in dem, wenn alle Anforderungspuffer gleichen Vorrang haben und es weniger Anforderungspuffer gibt, die verschiedene unerledigte Anforderungen enthalten, als die Anzahl der Datensegmentpuffer, die Datenübertragungseinrichtung den Anforderungspuffern mit unerledigtem Anforderungen die Benutzung der Datensegmentpuffer, für die es keine unerledigten Anforderungen gibt, zuordnet.
11. System nach Anspruch 10, weiter umfassend Mittel zum Einreihen
der Datenspeicher- oder Kopieranforderungen auf
dem Weg zu den Anforderungspuffern so, daß die Anforderungen
höheren Vorrangs den Anforderungen niedrigeren
Vorrangs vorgehen, oder bei dem, wenn alle der Anforderungspuffer
gleichen Vorrang besitzen und es weniger
Anforderungspuffer gibt, die entsprechende unerledigte
Anforderungen enthalten, als die Anzahl der Datensegmentpuffer,
die Datenübertragungseinrichtung den Anforderungspuffern
mit unerledigten Anforderungen die Benutzung
der Datensegmentpuffer, für die es keine unerledigten Anforderungen
gibt, ungefähr gleich oft über der Zeit zuordnet,
oder bei dem jeder der Anforderungspuffer einen
Vorrang besitzt, der der Anforderung entspricht, die der
Anforderungspuffer speichert, es weniger Anforderungspuffer
gibt, die entsprechende unerledigte Anforderungen
enthalten, als die Anzahl der Datensegmentpuffer, und die
Datenübertragungseinrichtung dem (den) Anforderungspuffer(n)
mit unerledigten Anforderungen höchsten relativen
Vorrangs die Benutzung der Datensegmentpuffer, für welche
es keine unerledigten Anforderungen gibt, ungefähr gleich
oft über der Zeit zuordnet, oder weiter umfassend Mittel,
die mit einem Ausgang der Datensegmentpuffer verbunden
sind, zum Ausführen der Anforderungen, ein Segment vorgegebener
Größe zu speichern oder zu kopieren, oder weiter
umfassend einen ersten Stapel von Datensegmentanforderungen
relativ hohen Vorrangs und einen zweiten Stapel für
Datensegmentanforderungen relativ niedrigen Vorrangs,
Mittel zum Weiterleiten der Datensegmentanforderungen von
den Datensegmentpuffern zu den Stapeln und Mittel zum
Ausführen der Datensegmentanforderungen des Stapels mit
höherem Vorrang vor den Datensegmentanforderungen des
Stapels mit niedrigerem Vorrang.
12. System nach Anspruch 11, weiter umfassend einen Hauptspeicher,
der mit den Datensegmentpuffern verbunden ist
und in dem die Anforderungen zur Datenspeicherung solche
sind, die Daten im Hauptspeicher zu speichern und die
Anforderungen zum Kopieren von Daten solche sind, die
Daten aus einer Speicherstelle im Hauptspeicher in eine
andere Speicherstelle im Hauptspeicher zu kopieren.
13. Hierarchisches Cachesystem, umfassend:
eine Anzahl von Cache-Subsystemen erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Zusatzspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache- Subsystem höherer Stufe und dem Zusatzspeicher verbunden ist und auf eine Anforderung einer der ZEen anspricht, Daten in dem Zusatzspeicher zu speichern, zum Speichern der Daten in dem Zusatzspeicher ohne Kopieren der früheren Inhalte einer Speichere in-Adresse der Anforderung in dem Cache-Subsystem höherer Stufe als Antwort auf die Anforderung, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
eine Anzahl von Cache-Subsystemen erster Stufe zum Speichern von Daten oder Instruktionen verschiedener ZEen,
ein Cache-Subsystem höherer Stufe, das Daten oder Instruktionen der Anzahl von Cache-Subsystemen enthält,
einen Zusatzspeicher, der mit dem Cache-Subsystem höherer Stufe verbunden ist, und
eine Datenübertragungseinrichtung, die mit dem Cache- Subsystem höherer Stufe und dem Zusatzspeicher verbunden ist und auf eine Anforderung einer der ZEen anspricht, Daten in dem Zusatzspeicher zu speichern, zum Speichern der Daten in dem Zusatzspeicher ohne Kopieren der früheren Inhalte einer Speichere in-Adresse der Anforderung in dem Cache-Subsystem höherer Stufe als Antwort auf die Anforderung, und zum Ungültigmachen der früheren Inhalte in dem Cache-Subsystem höherer Stufe, wenn sie sich bereits dort befanden, als die ZE die Anforderung machte.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/241,910 US5539895A (en) | 1994-05-12 | 1994-05-12 | Hierarchical computer cache system |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19516937A1 true DE19516937A1 (de) | 1995-12-07 |
Family
ID=22912675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19516937A Ceased DE19516937A1 (de) | 1994-05-12 | 1995-05-09 | Hierarchisches Cachesystem für einen Computer |
Country Status (3)
Country | Link |
---|---|
US (1) | US5539895A (de) |
JP (1) | JP2784464B2 (de) |
DE (1) | DE19516937A1 (de) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0877073A (ja) * | 1994-08-31 | 1996-03-22 | Toshiba Corp | 集合光ディスク装置 |
JP3132749B2 (ja) * | 1994-12-05 | 2001-02-05 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | マルチプロセッサ・データ処理システム |
US5729713A (en) * | 1995-03-27 | 1998-03-17 | Texas Instruments Incorporated | Data processing with first level cache bypassing after a data transfer becomes excessively long |
US5740399A (en) * | 1995-08-23 | 1998-04-14 | International Business Machines Corporation | Modified L1/L2 cache inclusion for aggressive prefetch |
US5758119A (en) * | 1995-08-23 | 1998-05-26 | International Business Machines Corp. | System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US6000011A (en) * | 1996-12-09 | 1999-12-07 | International Business Machines Corporation | Multi-entry fully associative transition cache |
US6263404B1 (en) | 1997-11-21 | 2001-07-17 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US6219758B1 (en) * | 1998-03-24 | 2001-04-17 | International Business Machines Corporation | False exception for cancelled delayed requests |
US6473834B1 (en) | 1999-12-22 | 2002-10-29 | Unisys | Method and apparatus for prevent stalling of cache reads during return of multiple data words |
US6415357B1 (en) | 1999-12-23 | 2002-07-02 | Unisys Corporation | Caching method and apparatus |
JP4025501B2 (ja) * | 2000-03-03 | 2007-12-19 | 株式会社ソニー・コンピュータエンタテインメント | 楽音発生装置 |
US20020161698A1 (en) * | 2000-10-04 | 2002-10-31 | Wical Kelly J. | Caching system using timing queues based on last access times |
US20020138302A1 (en) * | 2001-03-21 | 2002-09-26 | David Bodnick | Prepaid telecommunication card for health care compliance |
US6772315B1 (en) * | 2001-05-24 | 2004-08-03 | Rambus Inc | Translation lookaside buffer extended to provide physical and main-memory addresses |
US6760819B2 (en) * | 2001-06-29 | 2004-07-06 | International Business Machines Corporation | Symmetric multiprocessor coherence mechanism |
US6587924B2 (en) * | 2001-07-12 | 2003-07-01 | International Business Machines Corporation | Scarfing within a hierarchical memory architecture |
US6587926B2 (en) * | 2001-07-12 | 2003-07-01 | International Business Machines Corporation | Incremental tag build for hierarchical memory architecture |
US6587925B2 (en) * | 2001-07-12 | 2003-07-01 | International Business Machines Corporation | Elimination of vertical bus queueing within a hierarchical memory architecture |
US20030061352A1 (en) * | 2001-09-27 | 2003-03-27 | International Business Machines Corporation | Optimized file cache organization in a network server |
US6970975B2 (en) * | 2002-11-15 | 2005-11-29 | Exanet Co. | Method for efficient caching and enumerating objects in distributed storage systems |
US20040117437A1 (en) * | 2002-12-16 | 2004-06-17 | Exanet, Co. | Method for efficient storing of sparse files in a distributed cache |
US7231504B2 (en) * | 2004-05-13 | 2007-06-12 | International Business Machines Corporation | Dynamic memory management of unallocated memory in a logical partitioned data processing system |
US8341371B2 (en) * | 2005-01-31 | 2012-12-25 | Sandisk Il Ltd | Method of managing copy operations in flash memories |
US8252806B2 (en) * | 2005-03-14 | 2012-08-28 | Neurosearch A/S | Potassium channel modulating agents and their medical use |
US7649537B2 (en) * | 2005-05-27 | 2010-01-19 | Ati Technologies, Inc. | Dynamic load balancing in multiple video processing unit (VPU) systems |
US7698495B2 (en) * | 2005-07-01 | 2010-04-13 | QNZ Software Systems GmbH & Co. KG | Computer system having logically ordered cache management |
US9280479B1 (en) * | 2012-05-22 | 2016-03-08 | Applied Micro Circuits Corporation | Multi-level store merging in a cache and memory hierarchy |
GB2506900A (en) * | 2012-10-12 | 2014-04-16 | Ibm | Jump positions in recording lists during prefetching |
US9785545B2 (en) * | 2013-07-15 | 2017-10-10 | Cnex Labs, Inc. | Method and apparatus for providing dual memory access to non-volatile memory |
JP2016028319A (ja) * | 2014-07-08 | 2016-02-25 | 富士通株式会社 | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 |
US11288017B2 (en) | 2017-02-23 | 2022-03-29 | Smart IOPS, Inc. | Devices, systems, and methods for storing data using distributed control |
US10372353B2 (en) * | 2017-05-31 | 2019-08-06 | Micron Technology, Inc. | Apparatuses and methods to control memory operations on buffers |
US11354247B2 (en) | 2017-11-10 | 2022-06-07 | Smart IOPS, Inc. | Devices, systems, and methods for configuring a storage device with cache |
US10394474B2 (en) | 2017-11-10 | 2019-08-27 | Smart IOPS, Inc. | Devices, systems, and methods for reconfiguring storage devices with applications |
US20230214138A1 (en) * | 2022-01-06 | 2023-07-06 | Samsung Electronics Co., Ltd. | Memory interface for initalizing memory and method thereof |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0398523A2 (de) * | 1989-05-19 | 1990-11-22 | Hitachi, Ltd. | Dateneingabe-/-ausgabevorrichtung und Ausführungsunterstützung in digitalen Prozessoren |
US5241641A (en) * | 1989-03-28 | 1993-08-31 | Kabushiki Kaisha Toshiba | Hierarchical cache memory apparatus |
EP0579418A2 (de) * | 1992-07-02 | 1994-01-19 | International Business Machines Corporation | Computersystem mit Aufrechterhaltung der Datenübereinstimmung zwischen dem Cache-Speicher und dem Hauptspeicher |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3735360A (en) * | 1971-08-25 | 1973-05-22 | Ibm | High speed buffer operation in a multi-processing system |
US4084231A (en) * | 1975-12-18 | 1978-04-11 | International Business Machines Corporation | System for facilitating the copying back of data in disc and tape units of a memory hierarchial system |
US4044337A (en) * | 1975-12-23 | 1977-08-23 | International Business Machines Corporation | Instruction retry mechanism for a data processing system |
US4096567A (en) * | 1976-08-13 | 1978-06-20 | Millard William H | Information storage facility with multiple level processors |
US4298929A (en) * | 1979-01-26 | 1981-11-03 | International Business Machines Corporation | Integrated multilevel storage hierarchy for a data processing system with improved channel to memory write capability |
US4394731A (en) * | 1980-11-10 | 1983-07-19 | International Business Machines Corporation | Cache storage line shareability control for a multiprocessor system |
US4394733A (en) * | 1980-11-14 | 1983-07-19 | Sperry Corporation | Cache/disk subsystem |
US4467411A (en) * | 1981-03-06 | 1984-08-21 | International Business Machines Corporation | Scheduling device operations in a buffered peripheral subsystem |
US4445174A (en) * | 1981-03-31 | 1984-04-24 | International Business Machines Corporation | Multiprocessing system including a shared cache |
US4525780A (en) * | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
US4484267A (en) * | 1981-12-30 | 1984-11-20 | International Business Machines Corporation | Cache sharing control in a multiprocessor |
US4442487A (en) * | 1981-12-31 | 1984-04-10 | International Business Machines Corporation | Three level memory hierarchy using write and share flags |
US4564899A (en) * | 1982-09-28 | 1986-01-14 | Elxsi | I/O Channel bus |
US4535455A (en) * | 1983-03-11 | 1985-08-13 | At&T Bell Laboratories | Correction and monitoring of transient errors in a memory system |
US4774654A (en) * | 1984-12-24 | 1988-09-27 | International Business Machines Corporation | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory |
US4633440A (en) * | 1984-12-31 | 1986-12-30 | International Business Machines | Multi-port memory chip in a hierarchical memory |
US4703481A (en) * | 1985-08-16 | 1987-10-27 | Hewlett-Packard Company | Method and apparatus for fault recovery within a computing system |
US4797814A (en) * | 1986-05-01 | 1989-01-10 | International Business Machines Corporation | Variable address mode cache |
JPH0734185B2 (ja) * | 1987-02-16 | 1995-04-12 | 日本電気株式会社 | 情報処理装置 |
JPS63201850A (ja) * | 1987-02-18 | 1988-08-19 | Matsushita Electric Ind Co Ltd | オンチツプキヤツシユメモリ |
JPS63240650A (ja) * | 1987-03-28 | 1988-10-06 | Toshiba Corp | キヤツシユメモリ装置 |
US4907228A (en) * | 1987-09-04 | 1990-03-06 | Digital Equipment Corporation | Dual-rail processor with error checking at single rail interfaces |
US5025366A (en) * | 1988-01-20 | 1991-06-18 | Advanced Micro Devices, Inc. | Organization of an integrated cache unit for flexible usage in cache system design |
US4924466A (en) * | 1988-06-30 | 1990-05-08 | International Business Machines Corp. | Direct hardware error identification method and apparatus for error recovery in pipelined processing areas of a computer system |
US4912707A (en) * | 1988-08-23 | 1990-03-27 | International Business Machines Corporation | Checkpoint retry mechanism |
US4947319A (en) * | 1988-09-15 | 1990-08-07 | International Business Machines Corporation | Arbitral dynamic cache using processor storage |
US5097532A (en) * | 1989-03-03 | 1992-03-17 | Compaq Computer Corporation | Circuit for enabling a cache using a flush input to circumvent a late noncachable address input |
US5155832A (en) * | 1989-07-05 | 1992-10-13 | Hewlett-Packard Company | Method to increase performance in a multi-level cache system by the use of forced cache misses |
US5153881A (en) * | 1989-08-01 | 1992-10-06 | Digital Equipment Corporation | Method of handling errors in software |
US5113514A (en) * | 1989-08-22 | 1992-05-12 | Prime Computer, Inc. | System bus for multiprocessor computer system |
JP2531802B2 (ja) * | 1989-09-28 | 1996-09-04 | 甲府日本電気株式会社 | リクエストバッファ制御システム |
JPH04175948A (ja) * | 1990-11-09 | 1992-06-23 | Hitachi Ltd | 情報処理装置 |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5353423A (en) * | 1991-06-21 | 1994-10-04 | Compaq Computer Corporation | Memory controller for use with write-back cache system and multiple bus masters coupled to multiple buses |
US5426765A (en) * | 1991-08-30 | 1995-06-20 | Compaq Computer Corporation | Multiprocessor cache abitration |
US5341487A (en) * | 1991-12-20 | 1994-08-23 | International Business Machines Corp. | Personal computer having memory system with write-through cache and pipelined snoop cycles |
JPH05181746A (ja) * | 1991-12-26 | 1993-07-23 | Mitsubishi Electric Corp | データ処理システム及びメモリ制御方式 |
JPH05233443A (ja) * | 1992-02-21 | 1993-09-10 | Nec Corp | マルチプロセッサシステム |
US5325503A (en) * | 1992-02-21 | 1994-06-28 | Compaq Computer Corporation | Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line |
US5265212A (en) * | 1992-04-01 | 1993-11-23 | Digital Equipment Corporation | Sharing of bus access among multiple state machines with minimal wait time and prioritization of like cycle types |
-
1994
- 1994-05-12 US US08/241,910 patent/US5539895A/en not_active Expired - Fee Related
-
1995
- 1995-02-09 JP JP7021735A patent/JP2784464B2/ja not_active Expired - Lifetime
- 1995-05-09 DE DE19516937A patent/DE19516937A1/de not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241641A (en) * | 1989-03-28 | 1993-08-31 | Kabushiki Kaisha Toshiba | Hierarchical cache memory apparatus |
EP0398523A2 (de) * | 1989-05-19 | 1990-11-22 | Hitachi, Ltd. | Dateneingabe-/-ausgabevorrichtung und Ausführungsunterstützung in digitalen Prozessoren |
EP0579418A2 (de) * | 1992-07-02 | 1994-01-19 | International Business Machines Corporation | Computersystem mit Aufrechterhaltung der Datenübereinstimmung zwischen dem Cache-Speicher und dem Hauptspeicher |
Non-Patent Citations (1)
Title |
---|
BERNSTEIN, H.: Hardware-Handbuch PC-XT-AT und Kompatible, Markt & Technik Verlag AG, Haar bei München, 3. Auflage, Seite 39 * |
Also Published As
Publication number | Publication date |
---|---|
US5539895A (en) | 1996-07-23 |
JPH07311713A (ja) | 1995-11-28 |
JP2784464B2 (ja) | 1998-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19516937A1 (de) | Hierarchisches Cachesystem für einen Computer | |
DE60035151T2 (de) | Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem | |
DE60037174T2 (de) | Puffersystem für externen speicherzugriff | |
DE69733374T2 (de) | Speichersteuerungsvorrichtung und -system | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE69734129T2 (de) | Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren | |
DE69727465T2 (de) | Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung | |
DE69637294T2 (de) | Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung | |
DE69935737T2 (de) | Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
US5715447A (en) | Method of and an apparatus for shortening a lock period of a shared buffer | |
EP0438211A2 (de) | Cache-Speicheranordnung | |
DE102013204417B4 (de) | Daten-Cachespeicherblock-Freigabeanforderungen | |
DE112006002565T5 (de) | Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE2226382B2 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE3102150A1 (de) | "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage | |
EP0407087B1 (de) | Eingabewarteschlange für Speichersubsysteme | |
DE60316197T2 (de) | Verfahren und System zum Teilen eines Speichermoduls | |
DE102006030879A1 (de) | System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem | |
US5568638A (en) | Split control system for a page/page group in a data processing system a pre-split process using a temporary overflow area | |
DE19733151A1 (de) | System und Verfahren für einen virtuellen Gerätezugriff in einem Computersystem | |
DE3934145A1 (de) | Platteneinheit-steuerungsvorrichtung und informationsverarbeitungssystem, das dieselbe enthaelt | |
DE4207158A1 (de) | Speicher-zugriffssteuerung | |
DE2641722A1 (de) | Hierarchisch geordnetes speichersystem fuer eine datenverarbeitende anlage mit virtueller adressierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |