DE19516937A1 - Hierarchisches Cachesystem für einen Computer - Google Patents

Hierarchisches Cachesystem für einen Computer

Info

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
Application number
DE19516937A
Other languages
English (en)
Inventor
James Wilson Bishop
Jun Charles Embry Carmack
Patrick Wayne Gallagher
Stefan Peter Jackowski
Gregory Robert Klouda
Robert Dwight Siegl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19516937A1 publication Critical patent/DE19516937A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means

Description

Hintergrund der Erfindung
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.
Zusammenfassung der Erfindung
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.
Kurze Beschreibung der Zeichnungen
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.
Genaue Beschreibung der bevorzugten Ausführungsbeispiele
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.
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.
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.
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.
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.
DE19516937A 1994-05-12 1995-05-09 Hierarchisches Cachesystem für einen Computer Ceased DE19516937A1 (de)

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)

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

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3735360A (en) * 1971-08-25 1973-05-22 Ibm High speed buffer operation in a multi-processing system
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

Patent Citations (3)

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

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