DE68902193T2 - Datenspeicheranordnung. - Google Patents
Datenspeicheranordnung.Info
- Publication number
- DE68902193T2 DE68902193T2 DE8989304836T DE68902193T DE68902193T2 DE 68902193 T2 DE68902193 T2 DE 68902193T2 DE 8989304836 T DE8989304836 T DE 8989304836T DE 68902193 T DE68902193 T DE 68902193T DE 68902193 T2 DE68902193 T2 DE 68902193T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- buffer memory
- memory
- buffer
- context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung bezieht sich auf Datenspeicheranordnungen und insbes. auf eine Datenspeicheranordnung mit einem Rückkopier- Pufferspeicher.
- Es sind Doppelpegel-Speicheranordnungen bekannt, die aus einem Hauptspeicher und einem kleineren, schnelleren Pufferspeicher bestehen. Der Pufferspeicher ist so ausgelegt, daß er im Betrieb Kopien von Datenausdrücken aus dem Hauptspeicher aufnimmt, die gerade benutzt werden, oder die wahrscheinlich in naher Zukunft benötigt werden, so daß diese Ausdrücke rasch zugegriffen werden können, ohne daß die Verzögerung durch einen Hauptspeicherzugriff in Kauf genommen werden muß. Derartige Speicher sind beispielsweise in "Cache Memories" von A.J. Smith, ACM Computer Surveys, September 1982, Seite 473 beschrieben.
- Bei einer derartigen Speicheranordnung muß der neue Wert, wenn ein Datenausdruck im Pufferspeicher aktualisiert werden soll, in den Hauptspeicher eingeschrieben werden, damit er auf dem neuesten Stand gehalten wird. Es gibt hierfür normalerweise zwei Möglichkeiten, die als Durchschreiben und Rückkopieren bezeichnet werden. Bei der Durchschreib-Methode wird der aktualisierte Wert, wenn ein Ausdruck im Pufferspeicher aktualisiert wird, unmittelbar in den Hauptspeicher eingeschrieben. Bei der Rückkopiermethode wird der Hauptspeicher etwas später aktualisiert, üblicherweise nur, wenn der modifizierte Datenausdruck aus dem Pufferspeicher gerade entfernt wird, um Platz für einen anderen Ausdruck zu machen. Dies hat den Vorteil, daß die Anzahl von Zugriffen zum Hauptspeicher reduziert wird. Vorliegende Erfindung betrifft nur Pufferspeicher, die diese Rückkopiermöglichkeit nutzen.
- Es ist bei virtuellen Pufferspeichern auch bekannt, die Datenausdrücke in einem Pufferspeicher mit Kontextziffern zu markieren, um anzuzeigen, welchem einer Anzahl von unterschiedlichen Vorgängen oder Programmen der Datenausdruck bei einer bestimmten virtuellen Adresse zugeordnet ist. Wenn ein Datenausdruck in den Pufferspeicher eingeführt wird, ist er mit der laufenden Kontextzahl markiert, d.h. der Kontestzahl des Programms, das gerade ausgeführt wird. Wenn ein Datenausdruck im Pufferspeicher zugegriffen wird, wird seine Kontextmarkierung mit der jeweiligen Kontextzahl verglichen, und wenn Ungleichheit besteht, wird ein "Fehl"-Signal erzeugt, das angibt, daß der gewünschte Datenausdruck im Pufferspeicher nicht vorhanden ist. Dies ermöglicht, daß der Pufferspeicher Daten halten kann, die sich auf eine Anzahl unterschiedlicher Kontexte beziehen, während vermieden wird, daß der gesamte Pufferspeicher geräumt werden muß, wenn der Kontext geändert wird.
- Normalerweise werden Kontextzahlen sequentiell Programmen zugeordnet, wenn dies erforderlich ist. Letztlich sind jedoch alle möglichen Kontextzahlen zugeordnet worden, und in diesem Fall ist es erforderlich, den Zwischenspeicher zu "flushen", damit die Kontextzahlen für nachfolgende Programme wieder verwendet werden können.
- Die übliche Technik zum "Flushen eines Rückkopier-Zwischenspeichers besteht darin, jede Datenstelle nacheinander zu durchlaufen und die Inhalte eines jeden modifizierten Speicherplatzes in den Hauptspeicher zurückzukopieren. Dies stellt sicher, daß die modifizierten Werte im Hauptspeicher bewahrt werden, bevor die Daten im Zwischenspeicher ungültig werden. Dieser Flush-Vorgang nimmt jedoch eine verhältnismäßig lange Zeit in Anspruch und kann eine unerwünschte Unterbrechung des Betriebs der Anordnung ergeben.
- Aufgabe vorliegender Erfindung ist es, dieses Problem zu lösen.
- Der Oberbegriff des Anspruches 1 ergibt sich aus COMPUTER DESIGN, Band 26, Nr. 14, 1. August 1987, Seiten 89 - 94 von W. Van Loo: "Maximize performance by choosing best memory".
- In der US-A- 38 45 474 ist beschrieben, daß ein Pufferspeicher, der Daten enthält, welche im Hauptspeicher modifiziert worden sind, dadurch gelöscht wird, daß Pegelstatusflags eines Markierungs-Inhaltsverzeichnisses in den Pufferspeicher rückgesetzt werden.
- Gemäß der Erfindung wird eine Datenverarbeitungsanordnung vorgeschlagen, die aufweist
- a) einen Hauptspeicher
- b) einen Pufferspeicher mit einer Mehrzahl von Speicherplätzen, wobei jeder Speicherplatz eine Kontextmarkierung und eine virtuelle Markierung besitzt,
- c) eine Datenverarbeitungsvorrichtung zur Durchführung einer Mehrzahl von Verarbeitungsvorgängen und zum Zuweisen eines Wertes eines vorbestimmten Wertesatzes an jeden der Bearbeitungsvorgänge als eine Kontextzahl für diesen Vorgang,
- d) eine Vorrichtung zur Speicherung einer laufenden Kontextzahl gleich der Kontextzahl des Vorganges, der von der Datenverarbeitungsvorrichtung gerade ausgeführt wird,
- e) eine Vorrichtung zum Eingeben eines Datenausdruckes aus dem Hauptspeicher in einen Speicherplatz des Pufferspeichers, Überschreiben von in diesem Speicherplatz bereits vorhandenen Ausdrücken, und Setzen der Kontextmarkierung dieses Speicherplatzes gleich der laufenden Kontextzahl, und
- f) eine Vorrichtung zum Rückkopieren modifizierter Datenausdrücke aus dem Pufferspeicher in den Hauptspeicher dann, wenn sie in den Pufferspeicher überschrieben werden sollen,
- und das dadurch gekennzeichnet ist, daß dann, wenn alle Werte des vorbestimmten Wertesatzes zugewiesen worden sind, die Verarbeitungsvorrichtung alle Kontextmarkierungen im Pufferspeicher auf einen vorbestimmten reservierten Wert rücksetzt, der ungleich einem Wert des vorbestimmten Wertesatzes ist, ohne daß modifizierte Datenausdrücke aus dem Pufferspeicher in den Hauptspeicher unmittelbar kopiert werden.
- Das Rücksetzen der Kontextmarkierungen flusht den Speicher wirksam, da keine der Kontextmarkierungen mit der laufenden Kontextzahl zusammenpaßt. Die Daten sind jedoch physisch noch im Pufferspeicher vorhanden, und modifizierte Ausdrücke werden letztlich in den Hauptspeicher zurückkopiert, bevor sie überschrieben werden.
- Eine Datenverarbeitungsanordnung mit einer Datenspeicheranordnung nach der Erfindung wird nachstehend anhand eines Ausführungsbeispieles in Verbindung mit den Zeichnungen beschrieben.
- Fig. 1 zeigt ein Gesamtblockschaltbild des Datenverarbeitungsanordnung.
- Fig. 2 ist ein Blockschaltbild eines der Verarbeitungsmoduln der Anordnung.
- Fig. 3 ist ein Blockschaltbild eines Pufferspeichers, der Teil eines jeden Verarbeitungsmoduls bildet.
- Fig. 4 ist ein Flußdiagramm, das die Arbeitsweise des Pufferspeichers darstellt.
- Fig. 5 ist ein Flußdiagramm, das die Arbeitsweis einer Snoop-Logikeinheit zeigt, die einen Teil eines jeden der Verarbeitungsmoduln bildet.
- Nach Fig. 1 weist die Datenverarbeitungsanordnung eine Vielzahl von Datenverarbeitungsmoduln 10 und einen Hauptspeicher 11 auf, die über eine Hochgeschwindigkeits-Sammelleitung 12 miteinander verbunden sind.
- Im Betrieb kann eines der Verarbeitungsmoduln 10 die Sammelleitung zum Zweck der Einleitung einer Sammelleitungstransaktion, z.B. eines Lese- oder Schreibvorganges über die Sammelleitung 12 an das Speichermodul 11 besetzen. Die Besitzübernahme der Sammelleitung erfolgt durch ein Sammelleitungs-Entscheidungsschema, dessen Details für vorliegende Erfindung nicht entscheidend sind.
- Fig. 2 zeigt eines der Verarbeitungsmoduln 10 im einzelnen.
- Das Verarbeitungsmodul weist eine Verarbeitungseinheit 20 auf, die ein herkömmlicher Mikroprozessor sein kann.
- Das Verarbeitungsmodul besitzt ferner einen Pufferspeicher 21. Dabei handelt es sich um einen verhältnismäßig kleinen Speicher, der einen verglichen mit dem Hauptspeicher 11 schnellen Zugriff hat und der lokale Kopien von Datenausdrükken hält, um einen raschen Zugriff in die Verarbeitungseinheit zu erzielen. Wenn die Verarbeitungseinheit einen Datenausdruck im Betrieb zugreifen soll, entweder zum Auslesen oder zum Schreiben, erzeugt sie die virtuelle Adresse VA des Ausdrucks auf einem Adressenpfad 22. Die virtuelle Adresse VA wird dem Pufferspeicher 21 aufgegeben. Wenn der gewünschte Datenausdruck im Pufferspeicher vorhanden ist, wird ein HIT angezeigt, wodurch die Verarbeitungseinheit in die Lage versetzt wird, den Datenausdruck über den Datenpfad 23 zu lesen oder zu schreiben.
- Wenn andererseits der gewünschte Datenausdruck im Pufferspeicher nicht vorhanden ist, muß er aus dem Hauptspeicher zugegriffen und in den Pufferspeicher eingeführt werden. Der Hauptspeicher wird mit Hilfe einer physischen Adresse PA adressiert, die aus der virtuellen Adrese VA über eine Speichermanagementeinheit (MMU) 24 abgeleitet wird. Die physische Adresse wird mit einer Interface-Einheit 25 über die Sammelleitung 11 gesendet.
- Das Verarbeitungsmodul weist ferner eine Snoop-Logikeinheit 26 auf, deren Zweck darin besteht, eine Kohärenz zwischen den Inhalten des Pufferspeichers 21 und der Pufferspeicher in den anderen Verarbeitungsmoduln sicherzustellen. Die Snoop-Logik 26 ist eine assoziativer Speicher, der die physische Adresse aller Daten, die gleichzeitig im Pufferspeicher 21 vorhanden sind, als Merkmale speichert. Die Snoop-Logik empfängt alle physischen Adressen, die auf der Hochgeschwindigkeits-Sammelleitung von allen Verarbeitungsmoduln auftreten, und vergleicht jede empfangene Adresse mit den gespeicherten physischen Adressenkennzeichen. Wenn die empfangene Adresse einer der gespeicherten physischen Adressen entspricht, erzeugt die Snoop-Logik die entsprechende virtuelle Adresse und gibt sie an den Pufferspeicher 21, damit die entsprechende Datenzeile zugegriffen werden kann.
- Der Betrieb der Snoop-Logikeinheit 26 wird nachstehend im einzelnen in Verbindung mit Fig. 5 beschrieben.
- Fig. 3 zeigt den Pufferspeicher im Detail.
- In dieser Figur ist die virtuelle Adresse VA als aus 32 Bits VA 0-31 bestehend gezeigt, wobei VA 0 das Bit niedrigster Bedeutung ist.
- Der Pufferspeicher 21 weist eine Datengruppe 30 auf, die ein Speicher mit wahlfreiem Zugriff (RAM) ist, der 16K Doppelwörter hält, wobei jedes Doppelwort aus 64 Bits (8 Bytes) besteht. Die Datengruppe 10 wird durch Bits VA 3-16 der virtuellen Adresse adressiert, so daß ein Zugriff zu einem Doppelwort erfolgt. Dies Doppelwort kann dann über die Hochgeschwindigkeits-Sammelleitung 12 oder den Prozessor- Datenpfad 23 geschrieben oder gelesen werden.
- Die Datengruppe wird als in 4K Zeilen von Daten organisiert betrachtet, wobei jede Zeile vier Doppelwörter (32 Bytes) enthält. Bits VA 5-16 wählen eine Zeile des Pufferspeichers aus, während Bits VA 3-4 ein Doppelwort innerhalb dieser Zeile auswählen.
- Der Pufferspeicher besitzt ferner eine virtuelle Markierungsgruppe 31, eine Kontextmarkierungsgruppe 32, eine Statusgruppe 33 und eine Rückkopier-Adressengruppe 34. Jede dieser Gruppen umfaßt einen RAM mit 4K Speicherplätzen, und zwar jeweils einen für jede Datenlinie im Pufferspeicher. Diese Gruppen sind alle parallel durch Bits VA 5-16 der virtuellen Adresse adressiert, so daß immer dann, wenn eine Leitung der Datengruppe zugegriffen wird, der entsprechende Platz in jeder der Gruppen 31-34 ebenfalls zugegriffen wird.
- Die virtuelle Markierungsgruppe 31 hält eine 15 Bit umfassende virtuelle Adressenmarkierung für jede Zeile im Pufferspeicher. Wenn eine Zeile in die Datengruppe eingefüllt wird, werden VA 17-31 der virtuellen Adresse in die Gruppe 31 als die virtuelle Adressenmarkierung für diese Zeile eingeschrieben. Wenn entsprechend eine Datenzeile in der Datengruppe zugegriffen wird, wird die virtuelle Adressenmarkierung mit Bits VA 17-31 der virtuellen Adresse verglichen. Sind sie gleich, wird ein VT MATCH-Signal erzeugt.
- Die Kontextmarkierungsgruppe 32 hält eine 16-Bit Kontextmarkierung für jede Zeile des Pufferspeichers. Der Dateneingang dieser Gruppe ist mit einem momentanen Kontextregister 35 verbunden. Wenn eine neue Zeile in den Pufferspeicher eingefüllt wird, wird der Inhalt des Registers 35 in den jeweiligen adressierten Speicherplatz der Gruppe als die Kontextmarkierung für diese Zeile eingeschrieben, so daß jede Datenzeile mit der Kontextzahl des Programms, zu dem sie gehört, markiert wird. Wenn entsprechend eine Datenzeile zugegriffen wird, wird ihre Kontextmarkierung mit dem Inhalt des Speichers 35 verglichen. Sind sie gleich, wird ein CT MATCH-Signal erzeugt.
- Bei diesem Beispiel werden beide Markierungsgruppen 31 und 32 aus JGS - THOMSON MK41H80 Vorrichtungen konstruiert, die die notwendigen RAMs und auch Vergleichsvorrichtungen zur Durchführung der vorerwähnten Vergleiche ergeben.
- Das momentane Kontextregister 35 ist durch die Verarbeitungseinheit 20 zugreifbar. Wenn die Verarbeitungseinheit 20 mit einem neuen Programm beginnt, ordnet sie diesem Programm eine 16-Bit Kontextzahl zu. Diese Kontextzahl kann einen beliebigen Wert mit Ausnahme eines hexadezimalen FFFF (lauter Einsen) haben, der für eine Null-Kontextzahl reserviert ist. Wenn die Verarbeitungseinrichtung damit beginnt, ein Programm auszuführen, dem eine Kontextzahl zugeordnet worden ist, füllt sie diese Kontextzahl in das laufende Kontextregister 35 ein.
- Schließlich sind alle möglichen Kontextzahlen durch die Verarbeitungseinheit zugeordnet worden. Wenn dies der Fall ist, ist es erforderlich, den Pufferspeicher zu flushen, damit die Kontextzahlen in Umlauf gesetzt werden können. Dies geschieht wie folgt. Ein Ein-Bit-Register 36 ist mit einem RESET-Eingang der Kontextmarkierungsgruppe verbunden. Wenn die Verarbeitungseinheit das Flushen des Pufferspeichers anfordert, wird das Register 36 zurückgesetzt, und dies hat zur Folge, daß alle Speicherplätze der Kontextmarkierungsgruppe auf den Nullwert FFFF zurückgesetzt werden (in der Praxis werden die Markierungs-RAMs in den Gesamt-Null-Zustand zurückgesetzt und der inverse Wert wird verwendet, d.h. daß die momentane Kontextmarkierung invertiert wird, bevor der Vergleich erfolgt). Dies ergibt das gewünschte Flushen des Pufferspeichers, da keine der Zeilen im Pufferspeicher nunmehr eine Kontextmarkierung hat, die der momentanen Kontextzahl entspricht. Es ist jedoch zu beachten, daß die Daten immer noch physisch im Pufferspeicher vorhanden sind und letztlich in den Hauptspeicher zurückkopiert werden, wie nachstehend beschrieben wird.
- Die Statusgruppe 33 hält drei Statusbits für jede Zeile des Pufferspeichers. Diese geben dem Zustand der entsprechenden Zeile wie folgt an. Status-Bits Status INVALID PRIVATE MODIFIED SHARED
- PRIVATE bedeutet, daß die Daten in der Zeile nicht mit einem der anderen Verarbeitungsmoduln geteilt werden, und daß sie nicht modifiziert (aktualisiert) worden sind, da sie in den Puf ferspeicher eingefüllt waren.
- MODIFIED bedeutet, daß die Daten in der Zeile nicht anteilig verwendet werden, und daß sie modifiziert worden sind. Es handelt sich somit um die am weitesten aktualisierte Kopie im System dieser Daten.
- SHARED bedeutet, daß eine Kopie dieser Daten ebenfalls in mindestens einem Verarbeitungsmodul gehalten worden ist, und daß sie nicht modifiziert worden sind.
- Die Ausgänge der Gruppen 31 - 33 werden alle in eine Pufferspeicher-Steuerlogikeinheit 37 eingeführt, die den Betrieb des Pufferspeichers in der nachbeschriebenen Weise steuert.
- Die Rückkopieradressengruppe hält eine physische 19-Bit Adresse PA für jede Zeile im Pufferspeicher. Dies gibt die physische Adresse an, in die die Zeile letztlich zurückkopiert wird.
- Fig. 4 zeigt die Arbeitsweise des Pufferspeichers 21.
- Wie oben ausgeführt, gibt die Verarbeitungseinheit immer dann, wenn sie einen Zugriff zu einem Datenausdruck erfordert, die virtuelle Adresse VA der Daten an den Pufferspeicher 21, so daß eine Zeile des Pufferspeichers zugegriffen wird. Wenn VT MATCH und CT MATCH beide echt sind und wenn die Zeile gültig ist (d.h. die Status-Bits nicht gleich 000 sind), wird ein HIT erzielt, was anzeigt, daß der gewünschte Datenausdruck in der adressierten Zeile des Pufferspeichers vorhanden ist. Andernfalls wird ein MISS erzielt.
- Die Arbeitsweise des Pufferspeichers hängt davon ab, ob ein HIT oder ein MISS erzielt wird, und ob dies ein LESE- oder SCHREIB-Vorgang ist, und zwar wie folgt:
- (1) LESEN HIT. In diesem Fall können die Daten unmittelbar aus dem Pufferspeicher zugegriffen werden. Der Status der Pufferspeicherzeile wird nicht geändert.
- (2) LESEN MISS. In diesem Fall müssen die gewünschten Daten aus dem Hauptspeicher geholt und in den Pufferspeicher eingefüllt werden, wobei die vorhandene Zeile des Pufferspeichers überschrieben wird. Wenn die vorliegende Zeile den MODIFIED Zustand einnimmt, muß sie zuerst in den Hauptspeicher zurückkopiert werden, damit sichergestellt ist, daß die am weitesten akltualisierte Kopie der Daten erhalten bleibt. Dies wird mit Hilfe einer Blockschreibtransaktion über die Hochgeschwindigkeits-Sammelleitung erreicht. Die gewünschten Daten werden dann aus dem Hauptspeicher mit Hilfe einer Blocklesetransaktion über die Hochgeschwindigkeis-Sammelleitung abgerufen und in den Pufferspeicher eingefüllt. Der Status des neuen Blockes wird entweder auf SHARED oder PRIVATE gesetzt, je nachdem, ob diese Zeile bereits im Pufferspeicher eines anderen Verarbeitungsmoduls vorhanden ist oder nicht, wie durch eine "SHARED" Statuszeile der Sammelleitung angezeigt.
- (3) SCHREIBEN HIT. Wenn der jeweilige Zustand der Pufferspeicherzeile PRIVATE ist, werden die Daten in den Pufferspeicher eingeschrieben, und der Zustand wird auf MODIFIED gesetzt. Wenn der Zustand bereits MODIFIED ist, erfolgt das Einschreiben ohne Verzögerung, und es tritt keine Änderung des Zustands ein. Ist der Pufferspeicher-Zeilenstatus SHARED, wird die physische Adresse auf der Zeile über die Sammelleitung in die anderen Verarbeitungsmoduln übertragen, so daß sie die entsprechende Zeile in ihren Pufferspeichern unwirksam machen können, um eine Pufferspeicherkohärenz sicherzustellen. Dies wird als Übertragungs-Ungültigmachungsvorgang bezeichnet. Die Daten werden in den Pufferspeicher eingeschrieben und der Pufferspeicherzeilenstatus wird auf MODIFIED gesetzt.
- (4) SCHREIBEN MISS. In diesem Fall folgt der Pufferspeicher der Folge für den vorbeschriebenen LESEN MISS Vorgang, an den sich die Folge für den SCHREIBEN HIT Vorgang anschließt.
- In Fig. 5 ist die Arbeitsweise der Snoop-Logikeinheit 23 wie folgt. Wenn die Snoop-Logik eine Anpassung während eines Übertragungs-Unwirksamkeitsbetriebs durch ein anderes Verarbeitungsmodul anzeigt, setzt sie den Zustand der adressierten Pufferspeicherzeile auf INVALID. Dies stellt eine Pufferspeicherkohärenz sicher.
- Wenn andererseits die Snoop-Logik eine Anpassung während einer Blocklesetransaktion anstatt während einer Übertragungs-Unwirksamkeitsvorganges anzeigt, prüft sie den Status der Datenzeile im Pufferspeicher 21. Wenn der Status der Pufferspeicherzeile MODIFIED ist, leitet die Snoop-Logik einen INTERVENTION-Vorgang ein. Dies bewirkt, daß die Blocklesetransaktion vorübergehend stillgelegt wird, während die Datenzeile in den Hauptspeicher zurückkopiert wird. Anschießend wird der Blocklesetransaktion ermöglicht, fortzufahren. Dies stellt sicher, daß die am weitesten aktualisierte Kopie der Daten im Hauptspeicher für die Blocklesetransaktion verfügbar ist.
- Die Snoop-Logik überwacht Blocklesetransaktionen, die von allen Verarbeitungsmoduln erzeugt werden, einchließlich des Moduls, in welchem die Snoop-Logik angeordnet ist. Diese letztere Möglichkeit wird als "Self-Snoop" Arbeitsweise bezeichnet. Ihr Zweck besteht darin, das Problem von Synonymen im Pufferspeicher zu verhindern. Ein Synonym tritt auf, wenn zwei oder mehr virtuelle Adressen auf der gleichen physischen Adresse abgebildet werden, so daß mehr als eine Kopie des gleichen Datenausdrucks in unterschiedlichen Speicherplätzen des Pufferspeichers vorhanden ist.
- Wenn der Pufferspeicher HIT sich aus einem Self-Snoop Vorgang ergeben hat, wird der Status der adressierten Leitung des Pufferspeichers auf INVALID gesetzt. Damit wird die vorhandene Kopie des Datenausdruckes im Pufferspeicher unwirksam gemacht und verhindert das Auftreten eines Synonyms.
- Wenn andererseits der Pufferspeicher HIT sich aus einer Lesetransaktion durch ein anderes Verarbeitungsmodul ergeben hat, wird der Status der adressierten Zeile des Pufferspeichers auf SHARED gesetzt, und die anteilige Statuszeile der Sammelleitung wird angesteuert, so daß der andere Modul darüber informiert wird, daß die in Frage kommenden Daten ebenfalls im Pufferspeicher in diesem Verarbeitungsmodul vorhanden sind.
- Zusammenfassend ergibt sich, daß der Pufferspeicher einfach durch Rücksetzen aller Kontextmarkierungen in der Gruppe 32 auf den Nullwert geflusht werden kann. Dies stellt sicher, daß keiner der vorhandenen Datenausdrücke im Pufferspeicher nunmehr durch die Verarbeitungseinheit zugegriffen werden kann, da keine von ihnen ein CT MATCH erzeugt. Die Datenausdrücke werden jedoch immer noch im Pufferspeicher gehalten, und es werden letztlich modifizierte Ausdrücke zurück in den Hauptspeicher kopiert, entweder, wenn die Zeile aufgrund eines MISS überschrieben wird, oder als Ergebnis eines INTERVENTION-Vorganges.
Claims (4)
1. Datenverarbeitungsanordnung mit
(a) einem Hauptspeicher
(b) einem Pufferspeicher mit einer Mehrzahl von
Speicherplätzen, wobei jeder Speicherplatz eine textabhängige
Markierung und eine virtuelle Markierung besitzt,
(c) einer Datenverarbeitungsvorrichtung zur Durchführung
einer Mehrzahl von Verarbeitungsvorgängen und zum
Zuweisen eines Wertes eines vorbestimmten Wertesatzes
an jeden der Verarbeitungsvorgänge als eine
Kontextzahl für diesen Vorgang,
(d) einer Vorrichtung zum Speicherung einer laufenden
Kontextzahl gleich der Kontextzahl des Vorganges, der
von der Datenverarbeitungsvorrichtung gerade
ausgeführt wird,
(e) einer Vorrichtung zum Eingeben eines Datenausdruckes
aus dem Hauptspeicher in einen Speicherplatz des
Pufferspeichers, Überschreiben von in diesem
Speicherplatz bereits vorhandenen Datenausdrücken, und
Setzen der Kontextmarkierung dieses Speicherplatzes
gleich der laufenden Kontextzahl, und
(f) einer Vorrichtung zum Rückkopieren modifizierter
Datenausdrücke aus dem Pufferspeicher in den
Hauptspeicher dann, wenn sie in den Pufferspeicher
überschrieben werden sollen,
dadurch gekennzeichnet, daß dann, wenn alle Werte des
vorbestimmten Wertesatzes zugewiesen worden sind, die
Verarbeitungsvorrichtung alle Kontextmarkierungen im
Pufferspeicher auf einen vorbestimmten reservierten Wert
rücksetzt, der ungleich einem Wert des vorbestimmten
Wertesatzes ist, ohne daß modifizierte Datenausdrücke aus
dem Pufferspeicher in den Hauptspeicher unmittelbar
kopiert werden.
2. Datenverarbeitungsanordnung nach Anspruch 1, mit einer
Vorrichtung, die wirksam wird, wenn ein
Datenspeicherplatz im Pufferspeicher zugegriffen wird, um die
Kontextmarkierung dieses Speicherplatzes mit der jeweiligen
Kontextzahl sowie die virtuelle Markierung dieses
Speicherplatzes mit der jeweiligen virtuellen Adresse zu
vergleichen, und um ein Pufferspeicher-Bit anzuzeigen,
wenn beide Vergleiche Gleichheit ergeben.
3. Datenverarbeitungsanordnung nach Anspruch 1 oder 2, mit
einer Mehrzahl von Verarbeitungseinheiten, deren jede
einen getrennten Pufferspeicher aufweist, wobei der
Hauptspeicher zwischen den Verarbeitungseinheiten geteilt
wird.
4. Datenverarbeitungsanordnung nach Anspruch 3, bei der jede
Verarbeitungseinheit eine logische Snoop-Einheit zur
Überwachung von Zugriffen zum Hauptspeicher aus den
anderen Verarbeitungseinheiten aufweist.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB888814077A GB8814077D0 (en) | 1988-06-14 | 1988-06-14 | Data memory system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE68902193D1 DE68902193D1 (de) | 1992-08-27 |
| DE68902193T2 true DE68902193T2 (de) | 1993-02-04 |
Family
ID=10638633
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE8989304836T Expired - Fee Related DE68902193T2 (de) | 1988-06-14 | 1989-05-12 | Datenspeicheranordnung. |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US5146603A (de) |
| EP (1) | EP0347040B1 (de) |
| AU (1) | AU608447B2 (de) |
| DE (1) | DE68902193T2 (de) |
| GB (1) | GB8814077D0 (de) |
| ZA (1) | ZA893785B (de) |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5287512A (en) * | 1990-08-06 | 1994-02-15 | Ncr Corporation | Computer memory system and method for cleaning data elements |
| US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
| EP0510242A2 (de) * | 1991-04-22 | 1992-10-28 | Acer Incorporated | Anordnung und Verfahren zur Verwaltung der Leitweglenkungsausführung in einer Rechneranordnung |
| US5319768A (en) * | 1991-05-01 | 1994-06-07 | Sgs-Thomson Microelectronics, Inc. | Control circuit for resetting a snoop valid bit in a dual port cache tag memory |
| US5396604A (en) * | 1991-07-12 | 1995-03-07 | Hewlett-Packard Company | System and method for reducing the penalty associated with data cache misses |
| US5335335A (en) * | 1991-08-30 | 1994-08-02 | Compaq Computer Corporation | Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed |
| US5530835A (en) * | 1991-09-18 | 1996-06-25 | Ncr Corporation | Computer memory data merging technique for computers with write-back caches |
| GB2260429B (en) * | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
| US5301298A (en) * | 1991-10-11 | 1994-04-05 | Intel Corporation | Processor for multiple cache coherent protocols |
| US5371872A (en) * | 1991-10-28 | 1994-12-06 | International Business Machines Corporation | Method and apparatus for controlling operation of a cache memory during an interrupt |
| US5724549A (en) * | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
| US5524212A (en) * | 1992-04-27 | 1996-06-04 | University Of Washington | Multiprocessor system with write generate method for updating cache |
| KR100294105B1 (ko) * | 1992-04-29 | 2001-09-17 | 썬 마이크로시스템즈, 인코포레이티드 | 멀티 프로세서 컴퓨터 시스템의 일관성 카피-백 버퍼용 방법 및 장치 |
| JPH0667980A (ja) * | 1992-05-12 | 1994-03-11 | Unisys Corp | 4ブロックキャッシュメモリへのアクセスを最適化するためのキャッシュ論理システムおよびメインフレームコンピュータの高速キャッシュメモリへのアクセス時のダブルミスを防ぐ方法 |
| US5675763A (en) * | 1992-07-15 | 1997-10-07 | Digital Equipment Corporation | Cache memory system and method for selectively removing stale aliased entries |
| EP0587918B1 (de) * | 1992-08-19 | 1999-11-03 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Multiprozessorsystem mit Cache-Speichern |
| US5522057A (en) * | 1993-10-25 | 1996-05-28 | Intel Corporation | Hybrid write back/write through cache having a streamlined four state cache coherency protocol for uniprocessor computer systems |
| US5581704A (en) * | 1993-12-06 | 1996-12-03 | Panasonic Technologies, Inc. | System for maintaining data coherency in cache memory by periodically broadcasting invalidation reports from server to client |
| US5586297A (en) * | 1994-03-24 | 1996-12-17 | Hewlett-Packard Company | Partial cache line write transactions in a computing system with a write back cache |
| US5613153A (en) * | 1994-10-03 | 1997-03-18 | International Business Machines Corporation | Coherency and synchronization mechanisms for I/O channel controllers in a data processing system |
| JP2902976B2 (ja) * | 1995-06-19 | 1999-06-07 | 株式会社東芝 | キャッシュフラッシュ装置 |
| US6615300B1 (en) * | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
| DE10158393A1 (de) * | 2001-11-28 | 2003-06-12 | Infineon Technologies Ag | Speicher für die Zentraleinheit einer Rechenanlage, Rechenanlage und Verfahren zum Synchronisieren eines Speichers mit dem Hauptspeicher einer Rechenanlage |
| US20070271421A1 (en) * | 2006-05-17 | 2007-11-22 | Nam Sung Kim | Reducing aging effect on memory |
| WO2008053053A1 (es) * | 2006-11-03 | 2008-05-08 | Intel Corporation | Reducción del efecto de envejecimiento en los registros |
| US20150363312A1 (en) * | 2014-06-12 | 2015-12-17 | Samsung Electronics Co., Ltd. | Electronic system with memory control mechanism and method of operation thereof |
| US12026095B2 (en) | 2014-12-30 | 2024-07-02 | Arteris, Inc. | Cache coherent system implementing victim buffers |
| US10255183B2 (en) | 2015-07-23 | 2019-04-09 | Arteris, Inc. | Victim buffer for cache coherent systems |
| US9542316B1 (en) * | 2015-07-23 | 2017-01-10 | Arteris, Inc. | System and method for adaptation of coherence models between agents |
| GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
| US10318436B2 (en) * | 2017-07-25 | 2019-06-11 | Qualcomm Incorporated | Precise invalidation of virtually tagged caches |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3845474A (en) * | 1973-11-05 | 1974-10-29 | Honeywell Inf Systems | Cache store clearing operation for multiprocessor mode |
| GB1515376A (en) * | 1975-07-09 | 1978-06-21 | Int Computers Ltd | Data storage systems |
| US4053948A (en) * | 1976-06-21 | 1977-10-11 | Ibm Corporation | Look aside array invalidation mechanism |
| DE3068498D1 (en) * | 1979-05-09 | 1984-08-16 | Int Computers Ltd | Hierarchical data storage system |
| US4426682A (en) * | 1981-05-22 | 1984-01-17 | Harris Corporation | Fast cache flush mechanism |
| US4463420A (en) * | 1982-02-23 | 1984-07-31 | International Business Machines Corporation | Multiprocessor cache replacement under task control |
| US4714990A (en) * | 1982-09-18 | 1987-12-22 | International Computers Limited | Data storage apparatus |
| US4819154A (en) * | 1982-12-09 | 1989-04-04 | Sequoia Systems, Inc. | Memory back up system with one cache memory and two physically separated main memories |
| US4713755A (en) * | 1985-06-28 | 1987-12-15 | Hewlett-Packard Company | Cache memory consistency control with explicit software instructions |
| EP0220451B1 (de) * | 1985-10-30 | 1994-08-10 | International Business Machines Corporation | Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung |
| US4811209A (en) * | 1986-07-31 | 1989-03-07 | Hewlett-Packard Company | Cache memory with multiple valid bits for each data indication the validity within different contents |
| DE3633227A1 (de) * | 1986-09-30 | 1988-04-21 | Siemens Ag | Anordnung zur umwandlung einer virtuellen adresse in eine physikalische adresse fuer einen in seiten organisierten arbeitsspeicher einer datenverarbeitungsanlage |
| 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 |
| US4977498A (en) * | 1988-04-01 | 1990-12-11 | Digital Equipment Corporation | Data processing system having a data memory interlock coherency scheme |
-
1988
- 1988-06-14 GB GB888814077A patent/GB8814077D0/en active Pending
-
1989
- 1989-05-12 EP EP89304836A patent/EP0347040B1/de not_active Expired - Lifetime
- 1989-05-12 DE DE8989304836T patent/DE68902193T2/de not_active Expired - Fee Related
- 1989-05-16 US US07/352,393 patent/US5146603A/en not_active Expired - Lifetime
- 1989-05-19 ZA ZA893785A patent/ZA893785B/xx unknown
- 1989-06-13 AU AU36292/89A patent/AU608447B2/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| EP0347040B1 (de) | 1992-07-22 |
| AU608447B2 (en) | 1991-03-28 |
| US5146603A (en) | 1992-09-08 |
| EP0347040A1 (de) | 1989-12-20 |
| ZA893785B (en) | 1990-03-28 |
| AU3629289A (en) | 1989-12-21 |
| DE68902193D1 (de) | 1992-08-27 |
| GB8814077D0 (en) | 1988-07-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE68902193T2 (de) | Datenspeicheranordnung. | |
| DE3886182T2 (de) | Mehrcachedatenspeicheranordnung. | |
| DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
| DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
| DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
| DE102007030116B4 (de) | Snoop-Filter mit ausschließlicher Inhaberschaft | |
| DE69317729T2 (de) | Cache-Etikettenspeicher | |
| EP0013737B1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
| DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
| DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
| DE69029173T2 (de) | Mikroprozessor | |
| DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
| DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
| DE69708188T2 (de) | Speichersteuerungseinheit | |
| DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
| DE69706934T2 (de) | Rechnersystem mit Speicherung der Speicheraktualisierungsgeschichte | |
| DE69109803T2 (de) | Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers. | |
| DE69527383T2 (de) | Virtuelle Speicheranordnung | |
| DE69527634T2 (de) | Rechner-Cachespeichersystem | |
| DE68925336T2 (de) | Datenverarbeitungsvorrichtung mit Cache-Speicher | |
| DE3502147C2 (de) | ||
| DE3439302A1 (de) | Speichersteuerungsvorrichtung | |
| DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
| DE10316725A1 (de) | Datenverwaltungsverfahren für ein Distributed Shared Memory-System | |
| DE10006430B4 (de) | Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |