DE2710477C2 - - Google Patents
Info
- Publication number
- DE2710477C2 DE2710477C2 DE2710477A DE2710477A DE2710477C2 DE 2710477 C2 DE2710477 C2 DE 2710477C2 DE 2710477 A DE2710477 A DE 2710477A DE 2710477 A DE2710477 A DE 2710477A DE 2710477 C2 DE2710477 C2 DE 2710477C2
- Authority
- DE
- Germany
- Prior art keywords
- level
- block
- information
- faster
- processor
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
Description
Die Erfindung betrifft eine Anordnung zur kohärenten Verwaltung
des Informationsaustauschs zwischen den Speicherblöcken zweier
aneinanderstoßender Niveaus einer Speicherhierarchie nach dem
Oberbegriff des Patentanspruchs 1.
Bei einer solchen Anordnung mit zwei aneinanderstoßenden Niveaus
der Speicherhierarchie wird das schnellere Niveau von Befehls-
Prozessoren benutzt, während die weniger schnellen Niveaus nur
von Schaltungen geleitet werden, die Leit-Prozessoren genannt
werden können; solche Schaltungen sind im übrigen auch in dem
schnelleren Niveau zusätzlich zu oder in Verbindung mit den Befehls-
Prozessoren vorhanden.
Die Verwendung von Speicherhierarchien in den Datenverarbeitungsanlagen
ist allgemein üblich, weil man dadurch über
einen möglichst großen Speicherraum verfügen kann, der
gegenwärtig beispielsweise etwa 1 Milliarde Oktaden beträgt,
ohne daß der Gesamtaufwand unannehmbar groß wird,
weil an dieser Hierarchie die verschiedenen Technologien
im umgekehrten Verhältnis zu ihren Eigenkosten teilnehmen.
Man kann dann in die schnelleren Speicher, die normalerweise
den Befehls-Prozessoren zugeordnet sind, die jeweils
nützlichsten Informationen einbringen, die dann mit einer
mittleren Zugriffszeit verfügbar sind, die in der Größenordnung
der Zykluszeit des schnellsten Teils der Hierarchie
liegt, während die Gesamtkapazität gleich derjenigen des
langsamsten Niveaus ist.
Die Verwaltung der Niveaus dieser Speicherhierarchie ergibt
unter anderem das Problem der Kohärenz der Informationsübertragungen
zwischen den verschiedenen Niveaus dieser
Hierarchie. Ein solches Problem besteht jedesmal dann,
wenn ein Niveau mehrere Blöcke mit autonomer Leitung enthält,
die mit dem gleichen Block eines langsameren Niveaus
im Informationsaustausch stehen und dabei Informationen
behandeln, die auf dem schnelleren Niveau im Verlauf der
Ausführung einer Arbeit modifizierbar sind, die einen
ausschließlichen oder nicht ausschließlichen Zugang zu
modifizierbaren Informationen hat. Eine Inkohärenz kann sich
ergeben, wenn Kopien der gleichen Ursprungsinformation in
mehreren voneinander unabhängigen Blöcken des schnelleren
Niveaus vorhanden und modifiziert sein können. Als "Block"
wird im vorliegenden Fall jeder Speicher oder Speicherteil
eines Niveaus bezeichnet, der autonom durch einen örtlichen
Leit-Prozessor geleitet wird, der wenigstens auf dem
schnelleren Niveau mit einem oder mehreren der dort vorhandenen
Prozessoren zusammenfallen kann.
Nach der üblichen Terminologie bezeichnet man als "Seite"
die kleinste Informationsmenge, die auf einem Niveau der
Hierarchie mit dem sich anschließenden weniger schnellen
Niveau ausgetauscht werden kann, während diese "Seite"
für den Informationsaustausch mit dem sich anschließenden
schnelleren Niveau in "Fragmente" unterteilbar ist. Im
allgemeinen ist die Größe der Seiten eine Potenz von zwei,
und für die Informationsübertragungen ist es zweckmäßig,
daß die Seiten eines Niveaus eine Größe haben, die ein
Vielfaches der Größe der Seiten des sich anschließenden
schnelleren Niveaus ist.
Dem Leit-Prozessor jedes Blocks ist in den meisten Fällen
ein Repertoire von Zustandswörtern zugeordnet, das ebenso
viele Wörter enthält, wie Seiten im Block oder auch Seitenfragmente
vorhanden sind. Jedes Zustandswort der Repertoires
enthält wenigstens eine Informationsadresse und Zustandsbits,
welche diese Information betreffen.
In der FR-OS 23 08 164 ist ein Verfahren zur kohärenten Leitung
der Informationen in einer Speicherhierarchie beschrieben,
bei welchem jeder Leit-Prozessor eines Blocks des schnelleren
Niveaus zusammenwirkt, von denen jeder einem Leit-
Prozessor und/oder einem Befehls-Prozessor zugeordnet ist, für
jede Seite des Blocks in dem dieser Seite entsprechenden Register
seines Repertoires die Operationen des Lesens zu und des
Schreibens und der Abwurfsignalisierung von dem schnelleren Niveau
speichert und bei jeder Anforderung des Lesens eines Fragments
einer Seite des Blocks der Leit-Prozessor dieses Blocks den
auf diese Weise gespeicherten Inhalt des betreffenden Registers
des Repertoires befragt, um zu entscheiden, ob diese Anforderung
unmittelbar erfüllt werden kann, oder ob vorher die Blöcke des
schnelleren Niveaus, die zuvor Fragmente der gleichen Seite
empfangen haben, von diesen Kopien entleert werden müssen.
Bei einer besonderen Ausführungsform des Verfahrens wird
jedes Seitenregister des Repertoires des weniger schnellen
Niveaus in ebenso viele Stellen zur Speicherung dieser
Operation unterteilt, wie Blöcke im schnelleren Niveau
vorhanden sind. Falls erforderlich, kann jede dieser Stellen
ihrerseits in ebenso viele Speicherstellen unterteilt
werden, wie Fragmente in der Seite des Blocks des weniger
schnellen Niveaus vorhanden sind.
Wenn die Informationen pro Seite des Blocks wenigstens
des weniger schnellen Niveaus mit einem Repertoire-Index
versehen sind, der anzeigt, ob die Information auf dem
schnelleren Niveau modifizierbar ist oder nicht, wirkt
sich die Abfragung des Leit-Prozessors des weniger schnellen
Niveaus auch auf diesen Index aus. Wenn die Information
als nicht modifizierbar markiert ist, wird die Leseanforderung
unmittelbar erfüllt, ohne vorherige Entleerung.
Im praktischen Betrieb haben die Anwendungsmodalitäten
dieses Verfahrens gewisse unerwünschte Erscheinungen gezeigt,
die gemeinsam zur Verlangsamung des Informationsaustauschs
zwischen den Niveaus beitragen, und insbesondere
zwischen dem schnellsten Niveau, das gewöhnlich
von Befehls-Prozessoren geleitet wird, von denen jeder
Aufgaben-Programme ausführt, deren Ablauf zahlreiche Informationsübertragungen
zwischen ihren autonomen Blöcken
und dem sie bedienenden Block des weniger schnellen
Niveaus erfordern, der nur durch einen einfachen Leit-
Prozessor, mit anderen Worten durch einen einfachen
"örtlichen Automaten" geleitet wird. Natürlich muß gerade
zwischen diesen beiden Niveaus die strikteste Kohärenz
aufrecht erhalten werden.
Bei dem in der FR-OS 23 08 164 beschriebenen Verfahren wird
nämlich die Leitung des Informationsaustauschs vollständig
von dem weniger schnellen Niveau übernommen. Die Speicherung,
d. h. praktisch die Zählung der Austauschoperationen, erfolgt
in dem Repertoire der Zustandswörter oder in der "Tabelle",
die dem autonomen Leit-Prozessor eines Blocks des weniger
schnellen Niveaus zugeordnet ist. Diese Verwaltung erfolgt
also vollkommen mit der Zugriffszeit dieses langsameren
Niveaus. Die Entleerungsbefehle für die Blöcke des schnelleren
Niveaus werden also ohne weiteres auf diesem langsameren
Niveau entschieden. Jeder auf diese Weise erteilte
Entleerungsbefehl unterscheidet auf dem schnelleren Niveau
in keiner Weise zwischen den Fragmenten der Seite, deren
Wiedereingabe in den Block des schnelleren Niveaus er befiehlt.
Es werden also unterschiedslos nicht modifizierbare
Informationen, beispielsweise die Programminformationen,
und modifizierbare Informationen, die jedoch nicht
modifiziert worden sind, zurückgebracht, und sogar modifizierbare
Informationen, die modifiziert worden sind,
aber nur zu der Arbeit gehören, die in dem Prozessor läuft,
der dem betreffenden Block des schnelleren Niveaus zugeordnet
ist. Es gibt somit einen Zeitverlust und eine Verringerung
des Wirkungsgrades, die größer als oft erwünscht ist,
weil jede Rückführung von Informationen eine Zugriffszeit
zu dem Block des langsameren Niveaus erfordert. Die Hinzufügung
eines Index, der anzeigt, ob die Information modifizierbar
ist oder nicht, auf dem weniger schnellen Niveau
vermindert zwar die Anzahl der Entleerungsbefehle, verringert
aber nicht die Dauer der Ausführung jedes Befehls;
ferner ist diese Verminderung teilweise dadurch wieder
aufgehoben, daß eine solche Markierung nur auf den vollständigen
Inhalt einer Seite des Blocks des weniger schnellen
Niveaus angewendet werden kann, damit die Kapazität
des jedem Leit-Prozessor des weniger schnellen Niveaus zugeordneten
Repertoires nicht vergrößert wird; selbst in
diesem Fall ist es dann erforderlich, um eine solche Markierung
in gültiger Weise bei jedem Fragment anzuwenden,
daß die Entscheidung auf dem schnelleren Niveau bei der
Übertragung der Seite getroffen wird, und daß die Information
auf das weniger schnelle Niveau zur Speicherung
zurückübertragen wird, wodurch sich offensichtlich ein
Zeitverlust ergibt.
Aufgabe der Erfindung ist es, bei einer Anordnung der eingangs
angegebenen Art die Kohärenz des Informationsaustauschs
zwischen verschiedenen Niveaus der Speicherhierarchie
ohne Kommunikation zwischen den Speicherblöcken jeweils
desselben Niveaus zu gewährleisten.
Diese Aufgabe wird bei einer gattungsgemäßen Anordnung erfindungsgemäß
durch die im Kennzeichen des Patentanspruchs 1
angegebenen Merkmale gelöst.
Bei einer praktischen Ausführungsform der erfindungsgemäßen Anordnung
ist auf dem weniger schnellen Niveau der Speicherhierarchie
dem Leit-Prozessor jedes Speicherblocks eine Tabelle zugeordnet,
die vorzugsweise in einer schnellen Technologie ausgeführt
ist und ebenso viele Register enthält, wie Seiten oder
Abschnitte des geleiteten Speicherblocks vorhanden sind. Jedes
Register der Tabelle enthält ebenso viele Stellen wie Blöcke des
schnelleren Niveaus von dem Block des weniger schnellen Niveaus
bedient werden, sowie Eintragfelder, die an jeder dieser Stellen
in binärer Weise notieren, ob der Block des schnelleren Niveaus
Auszüge oder Fragmente der Seite oder des Abschnitts des Speicherblocks
des weniger schnellen Niveaus enthält oder nicht. Auf
dem schnelleren Niveau ist jedem Leit- und/oder Befehls-Prozessor
und somit jedem Speicherblock dieses Niveaus eine Tabelle
zugeordnet, die ebenso viele Register enthält, wie Seiten oder
Abschnitte in dem Block des weniger schnellen Niveaus vorhanden
sind, um die Eingaben oder Ausgaben von Auszügen dieser Seiten
oder Abschnitte in dem Speicherblock dieses Niveaus zu zählen,
während eine andere Tabelle, die gegebenenfalls mit der Zähltabelle
vereinigt sein kann, die Adressen der Seiten des Blocks
des schnelleren Niveaus notiert, an denen diese Auszüge eingeordnet
sind, sowie kennzeichnende Bits für den Zustand dieser Auszüge
auf dem Niveau des Blocks enthält, nämlich wenigstens ein
Gültigkeitsbit, gegebenenfalls ein Bit, das anzeigt, ob die Information
des Auszugs auf diesem Niveau durch den Prozessor des
Blocks modifiziert worden ist oder nicht, und gegebenenfalls
auch noch ein Bit, das anzeigt, ob der Block ausschließlich oder
nicht ausschließlich Zugriff zu dem Auszug gehabt hat (d. h. unter
Ausschluß des Zugriffs der übrigen Blöcke des schnelleren
Niveaus oder ohne Ausschluß des Zugriffs dieser übrigen Blöcke).
Dieser Grundanordnung werden, je nach den Anforderungen der Anwendung,
Einrichtungen zur Verwaltung der Tabellen hinzugefügt.
Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
Einzelheiten einer Ausführungsform der Erfindung ergeben sich
aus der folgenden Beschreibung anhand der Zeichnung. In der
Zeichnung zeigt
Fig. 1 eine schematische Darstellung eines Speichersystems,
von dem nur ein Block des weniger schnellen Niveaus
und zwei Blöcke des schnelleren Niveaus dargestellt
sind, wobei dieses Schema aber auf jede beliebige
Anzahl von Blöcken in jedem Niveau erweiterungsfähig
ist, und wobei ferner angenommen ist, daß die
Leitung auf dem schnelleren Niveau durch Befehls-
Prozessoren erfolgt, und
Fig. 2 bis 5 Diagramme zur Erläuterung von vier Anwendungsbeispielen
der Anordnung von Fig. 1.
In Fig. 1 sind teilweise die beiden schnelleren Speicherniveaus
(i + 1) und (i) einer Speicherhierarchie dargestellt,
die, wie angedeutet, wenigstens ein Niveau (i + 2) aufweist,
das weniger schnell als das Niveau (i + 1) ist, während das
Niveau (i) schneller als das Niveau (i + 1) ist. Ein Block
eines Niveaus steht im Informationsaustausch mit mehreren
Blöcken des anstoßenden schnelleren Niveaus über eine Mehrfachverbindung,
wie sie bei BUS zwischen den Niveaus (i + 2)
und (i + 1) einerseits und den Niveaus (i + 1) und (i) andererseits
dargestellt ist.
Im Niveau (i + 1) ist nur ein Speicherblock Bp und der zugeordnete
Leit-Prozessor PBp dargestellt. Im Niveau (i)
sind zwei Speicherblöcke bj und bk und die jeweils zugeordneten
Leit-Prozessoren Pbj und Pbk dargestellt. Es
wird hier angenommen, daß es sich um Befehls-Prozessoren
handelt, die Aufgabenprogramme aufgrund von Informationen
ausführen, die allein aus dem Block Bp des Niveaus (i + 1)
kopiert sind.
Zur bequemeren Erläuterung wird als Beispiel angenommen,
daß die dargestellten Blöcke in Seiten unterteilt sind,
wobei jede Seite ihrerseits in Fragmente unterteilt ist,
obwohl dies für die Erfindung nicht wesentlich ist. Im
Block Bp befinden sich beispielsweise x Seiten P 1 bis Px,
von denen jede Seite ihrerseits aus n Fragmenten besteht.
Die Blöcke bj und bk enthalten jeweils z Seiten p 1 bis pz,
und jede dieser Seiten besteht aus q Fragmenten. Es ist
jedoch nicht unbedingt notwendig, daß die Blöcke bj und bk
die gleiche Seitenzahl mit der gleichen individuellen Kapazität
haben.
Dem Leit-Prozessor PBp ist eine Tabelle Tp zugeordnet,
die vorzugsweise in einer schnellen Technologie ausgeführt
ist. Diese Tabelle ist wie folgt organisiert: In
der Stelle AP steht die Nummer der Seite des Blocks Bp,
also x Register mit den Adressen AP 1 bis APx; in der
"Zeile" gibt es so viele Bitstellen wie Blöcke, also m,
in dem schnelleren Niveau, die im Informationsaustausch
mit dem Block Bp stehen, in Zellen b 1 bis bm. Der Klarheit
der Erläuterung wegen ist dargestellt, daß der Tabelle
Tp ein Schreib-Lese-Register ELTp zugeordnet ist.
Dieses Register kann fortgelassen werden, wenn das Ablesen
in der Tabelle zerstörungsfrei erfolgt, und wenn ein direktes
Einschreiben in die Tabelle möglich ist. Jede der
Zellen b 1 bis bm jeder Zeile der Tabelle kann ein Bit des
Wertes "1" oder des Wertes "0" aufnehmen. Das Vorhandensein
eines Bits des Wertes "1" in einer dieser Stellen zeigt
an, daß es wenigstens einen Auszug aus der im Abschnitt AP
adressierten Seite in wenigstens einem Block des schnelleren
Niveaus gibt, der seinerseits einer der Adressen b 1
bis bm hat. Jedesmal dann, wenn aus dem Block Bp zu einem
der Blöcke des Niveaus (i) ausgelesen wird, wird nämlich
ein Bit des Wertes "1" in der entsprechenden Zelle b 1 bis
bm unter der Steuerung durch den Leit-Prozessor PBp markiert.
Der Leit-Prozessor bezeichnet die Adresse des Blocks
mit dem schnelleren Niveau und aktiviert eine Schaltung R,
die den Markierungswert "+1" in die adressierte Stelle
einbringt. Das Bit wird durch Aktivierung einer Schaltung WE
auf den Wert 0 gebracht, was praktisch eine Löschung des
adressierten Bits ergibt. Die Bedingungen dieser Löschung
werden später angegeben; das Steuersignal empfängt der
Leit-Prozessor PBp von dem entsprechenden Block b des
schnelleren Niveaus. Dem Abschnitt b 1 bis bm des Schreib-
Lese-Registers ELTp ist eine Oder-Schaltung OU zugeordnet.
Bei jeder Befragung einer Zeile der Tabelle wird somit ein
Signal zu dem Leit-Prozessor geschickt, das anzeigt, daß
ein oder mehrere Auszüge der im Abschnitt AP adressierten
Seite in einem oder mehreren anderen Blöcken des schnelleren
Niveaus vorhanden sind, wenn der Ausgang 1 der Oder-
Schaltung aktiviert ist, oder daß keine solchen Auszüge
vorhanden sind, wenn der Ausgang 0 der Oder-Schaltung
aktiviert ist.
Da in dieser Tabelle die Information "1" in jeder der
Zellen b 1 bis bm jeder Zeile keine Zählung der Anzahl
der Auszüge ergibt, wäre es unnötig, die Steuerung dieser
Information jedesmal zu wiederholen, wenn ein Auszug aus
dem Block Bp ausgelesen und zu dem gleichen Block des
schnelleren Niveaus gerichtet wird. Es ist jedoch einfacher,
diese Steuerung laufen zu lassen, die somit nach
einer ersten Notierung eines Auszugs an einer der Stellen
in einer adressierten Zeile der Tabelle lediglich den
Wert "1" an dieser Stelle bestätigt, als den Leit-Prozessor
mit einer Anordnung zur Unterscheidung zwischen
der ersten Notierung und den folgenden zu belasten.
Wenn es jedoch für nützlich angesehen wird, die Auszüge
zu identifizieren, könnte natürlilch jede Stelle von b 1
bis bm eine Kapazität von z Bits haben, wenn mit z die
Anzahl der Seiten jedes der Blöcke b 1 bis bm des schnelleren
Niveaus ist, die im Informationsaustausch mit dem
Block Bp stehen. Ein Auszug aus dem Block Bp, d. h. ein
"Fragment" einer Seite des Blocks Bp, füllt nämlich eine
Seite der Blöcke b des schnelleren Niveaus, zumindest
bei dem üblichen Fall der Ausbildung eines solchen Systems.
Eine solche Kapazitätsbedingung entfällt offensichtlich
bei der bevorzugten Anwendung der Erfindung, bei der die
Auszüge in der Tabelle Tp nicht gezählt werden.
Das Lesen und Schreiben im Speicherblock Bp erfolgt in
üblicher Weise durch die Steuerung des Adressenregisters RA
und des Schreib-Lese-Registers REL durch den Leit-Prozessor
PBp.
Im schnelleren Niveau (i) sind zwei Speicherblöcke bj und
bk und ihre Leit-Prozessoren Pbj bzw. Pbk dargestellt, von
denen angenommen wird, daß sie durch Befehls-Prozessoren Pj
bzw. Pk gesteuert werden, die Programmaufgaben ausführen.
Bei gewissen früheren Systemen war es üblich, jedem dieser
Prozessoren eine Tabelle von Zustandswörter zuzuordnen,
die ebenso viele Zeilen enthält, wie Blöcke vorhanden sind,
und unter diesen Zustandswörtern und den diese Zustandswörter
bildenden Indizes findet man oft ein "Gültigkeits"-
Indexbit V, das jedesmal dann auf den Wert "1" gebracht
wird, wenn die betreffende Seite p von dem Leit-Prozessor
des Blocks "ungültig" gemacht wird (entweder aufgrund einer
örtlichen Entscheidung oder aufgrund eines vom weniger
schnellen Niveau stammenden Befehls). Man findet darin
ferner ein Indexbit M, das normalerweise im Zustand "0"
ist und in den Zustand "1" gebracht wird, wenn die Information
durch den örtlichen Leit-Prozessor modifiziert
wird oder wenn diesem angezeigt wird, daß sie auf dem
schnelleren Niveau modifiziert worden ist. Für bestimmte
Modalitäten der praktischen Anwendung der Erfindung findet
man ferner einen Ausschluß-Index X; wenn dieser durch den
Leit-Prozessor des Blocks in den Zustand "1" gebracht ist,
zeigt er an, daß die Information von dem weniger schnellen
Niveau unter einer Ausschließlichkeitsbedingung erhalten
worden ist, daß also der Zugang zu dieser Information auf
dem weniger schnellen Niveau vorübergehend für jeden anderen
Block des schnelleren Niveaus ausgeschlossen ist. Wenn
dieser Index angewendet wird, wird er einem Entleerungsbefehl
unterstellt, der auf einen Aufruf zum Lesen im Block Bp
durch einen Block b des schnelleren Niveaus folgt.
Die Indizes V und M sind bereits bei bestimmten früheren
Systemen angewendet worden, um die Kohärenz der Informationsübertragungen
zwischen zwei aneinanderstoßenden
Niveaus einer Speicherhierarchie zu gewährleisten; hierauf
braucht nicht näher eingegangen zu werden, da dies
außerhalb der eigentlichen Erfindung liegt, obwohl es für
die praktische Anwendung der Erfindung auch vorteilhaft
sein kann, diese Maßnahme anzuwenden, um die Wirksamkeit
des kohärenten Leitsystems zu erhöhen.
Insbesondere wird der Gültigkeitsindex V, der auch außerhalb
jedes Kohärenzproblems und sogar außerhalb jedes
Speicherhierarchieproblems üblich ist, vorzugsweise in
einem Entleerungsbefehl und in einem Berichtigungsbefehl
berücksichtigt, der von dem Leit-Prozessor des Blocks des
weniger schnellen Niveaus zu den mit ihm in Informationsaustausch
stehenden Leit-Prozessoren der Blocks des schnelleren
Niveaus geschickt wird. Ein Entleerungsbefehl hat
zur Folge, daß der Block Bp aufs laufende gebracht wird
und daß dann die betreffenden Informationen in dem Block
des schnelleren Niveaus, der davon Kopien enthält, ungültig
gemacht werden. Ein Berichtigungsbefehl (d. h. ein
Befehl, der die Information aufs laufende bringt) wird
in einem Block des schnelleren Niveaus nur dann ausgeführt,
wenn der Gültigkeitsindex den Wert "0" hat. Wenn ferner
der Modifizierungsindex M vorhanden ist, schickt der Aufhebungsbefehl
die modifizierten Informationen zu dem
weniger schnellen Niveau, bevor sie ungültig gemacht
werden. Ein Berichtigungsbefehl schickt nur dann eine
gültige Information zu dem weniger schnellen Niveau,
wenn der Modifizierungsindex M den Wert "1" hat (wonach
dieser Index auf den Wert "0" zurückgebracht wird).
Die Indizes V, M und X sind daher jeder Seite p eines
Blocks des schnelleren Niveaus in der dem Leit-Prozessor
dieses Blocks zugeordneten Tabelle von Zustandswörtern
hinzuzufügen, damit bei einer Befragung dieser Tabelle
unter der Adresse der Nummer der Seite des Blocks diese
Indizes direkt überprüfbar und modifizierbar sind.
Grundsätzlich muß aber für die Zwecke der Erfindung für
jeden Block des schnelleren Niveaus eine Tabelle für die
Identifizierung der Nummern der Seiten des Blocks des
weniger schnellen Niveaus vorhanden sein, von denen Auszüge
in dem Block vorhanden sind, sowie eine Zählung der
Anzahl dieser Auszüge und eine Identifizierung der Seiten
des Blocks des schnelleren Niveaus, an denen sich diese
Auszüge befinden.
Es gibt normalerweise zwei getrennte Tabellen, nämlich
eine Tabelle für die "normale" Funktion der Identifizierung
der Zustände der in den Seiten des Blocks enthaltenen
Information und eine andere Tabelle für die erfindungsgemäße
"spezielle" Funktion der Identifizierung und Zählung
der Auszüge des Blocks des weniger schnellen Niveaus und
für die Identifizierung der Stellen, an denen sie sich
befinden.
Zum besseren Verständnis der Erläuterung erscheint es
vorteilhaft, nur eine Tabelle darzustellen, in der diese
beiden getrennten Tabellen vereinigt sind, und eine solche
vereinigte Tabelle ist in Fig. 1 bei Tj für den Block bj
und seinen Prozessor Pbj sowie bei Tk für den Block bk
und dessen Prozessor Pbk dargestellt. Eine solche Tabelle
mit assoziativer Adressierung enthält dann beispielsweise
in jeder Zeile eine Adresse der Seite des Blocks des weniger
schnellen Niveaus bei AP 1 bis APx, die Anzahl CE der
Auszüge aus dieser Seite, die in dem Block vorhanden sind,
und ebenso viele Stellen p 1 bis pz, wie es Seiten des betreffenden
Blocks des schnelleren Niveaus gibt, an denen
eine Adresse p und eine Markierung (.) für das Vorhandensein
eines Auszugs aus der Seite AP in der Seite p, gefolgt
von den drei zuvor definierten Indizes V, M, X, eingeschrieben
sein können. Das Adressenregister ad kann also eine Adresse
APb oder eine Adresse p empfangen, um den Inhalt einer auf
diese Weise ausgewählten Zeile in das Schreib-Lese-Register
el einzubringen.
Das Schreib-Lese-Register el ist an der Stelle, an der es
den Zählerstand CE für die Anzahl der Auszüge empfängt,
mit einem Decodierer mit zwei Ausgängen versehen, von
denen der eine Ausgang (O) anzeigt, daß keine Auszüge
vorhanden sind, während der andere Ausgang ( ) anzeigt,
daß Auszüge vorhanden sind. Der Ausgang (O) ist mit einem
Eingang des Leit-Prozessors Pb verbunden. Der Ausgang ( )
ist mit einem Steuereingang einer Torschaltung g verbunden,
die somit entsperrt wird, wenn der Ausgang ( ) erregt ist.
Der Ausgang der Torschaltung g ist mit einem Generator (-)
für ein Bit "-1" verbunden, dessen Ausgang zu dem Register
el gerichtet ist, um den Zählerstand CE der Auszüge
jedesmal dann um eine Einheit zu verringern, wenn ein im
Block b vorhandenes Fragment aufgrund eines vom Leit-Prozessor
Pb abgegebenen Befehls aufgegeben wird. Der Ausgang
eines Generators (+) für ein Bit "+1" ist gleichfalls mit
dem Register el verbunden, um darin den Zählerstand CE
um eine Einheit zu erhöhen, wenn er vom Prozessor Pb
aktiviert wird.
Wenn die Stelle CE ebenso viele Bitzellen enthält, wie
Fragmente der Seite P des Blocks Bp vorhanden sind, also
n, ist der Decodierer eine einfache Oder-Schaltung, und
die Generatoren (+) und (-) bewirken die Einschreibung
oder Löschung der Bits in diesen Zellen, die dann bei
der Adressierung der Tabelle identifiziert werden.
Jeder Block des schnelleren Niveaus wird von dem Prozessor
Pb mit Hilfe des Adressenregisters ra und des Schreib-
Lese-Registers Rel des Blocks b gesteuert.
Die Verwaltung der Tabelle läßt sich wie folgt erläutern:
Jedesmal dann, wenn eine Information in einem Block des
schnelleren Niveaus auf Anforderung durch dessen Prozessor Pb
kopiert wird, wird ein Anwesenheitsbit an der Stelle CEk der
Zeile mit der Adresse AP eingegeben, von der das Fragment
der Seite des Blocks Bp stammt, und zwar durch Aktivierung
des Bitgenerators (+) durch den Prozessor, der den Inhalt
der Zeile mit der Adresse AP in das Register el seiner
Tabelle T gerufen hat. Gleichzeitig markiert er ein Anwesenheitsbit
für das Fragment an der Adresse p der Seite
des Blocks b in dieser Zeile, und er ordnet ihm einen
Index V = 0, einen Index M = 0 und einen Index X zu, der,
je nach Lage des Falles, entweder 0 oder 1 sein kann.
Jedesmal dann, wenn eine Information "aufgegeben" wird,
ohne daß sie im schnelleren Niveau modifiziert worden ist,
erregt der Prozessor seine Verbindung zu dem Generator (-),
wobei er gleichzeitig in das Register el den Inhalt der
Zeile ruft, die durch die Seite p adressiert worden ist,
in der sich diese Information befindet. Somit wird der
Auszug-Zählerstand CE um eine Einheit verringert, und ihre
Seitenmarkierung wird gelöscht, oder es wird wenigstens
ihr Bit V auf "1" gebracht, um sie ungültig zu machen. Das
gleiche gilt für jede Information, die wieder in dem weniger
schnellen Niveau kopiert wird. Wenn durch die Abwärtszählung
der Zählerstand CE auf Null gebracht wird, verursacht
die Erregung des Ausgangs (O) des Decodierers im
Prozessor eine Abwurf-Signalgabe, die für den Block Bp
des weniger schnellen Niveaus bestimmt ist, wobei gleichzeitig
oder vorher eine Aufforderung für das Wiedereinschreiben
der Information in den Block Bp erfolgt, wenn
die Prüfung des Bits M gezeigt hat, daß die Information
modifiziert worden ist. Falls erforderlich, wird dann
ferner der Index X auf Null gebracht.
Jede Modifizierung der Information wird natürlich bei M
notiert, wenn diese Modifizierung durch den mit dem Block
verbundenen Befehls-Prozessor beschlossen worden ist.
Jede Signalisierung des Abwurfs eines Blocks b des schnelleren
Niveaus wird von dem Leit-Prozessor PBp verarbeitet,
damit die Anwesenheits-Markierung an der Selle des Adressenregisters
AP, die dem den Abwurf signalisierenden Block b
zugeordnet ist, gelöscht wird.
Durch die laufende Berichtigung der zuvor definierten
Tabellen sowohl in dem Block des weniger schnellen Niveaus
als auch in dem Block des schnelleren Niveaus ist es daher
möglich, automatisch in jedem Zeitpunkt die Aufteilung der
Informationen des Blocks Pb auf die Blöcke b des schnelleren
Niveaus und die Zustände dieser Informationen erkennen zu
lassen. Um aufgrund der zuvor beschriebenen elementaren
Mechanismen die Kohärenz der Informationsleitung zu gewährleisten,
genügt es, ihre Befehle der automatischen
Leitung in den Prozessoren zu definieren.
Bevor mehrere Gruppen definiert werden, welche die Anpassungsfähigkeit
des erfindungsgemäßen Systems für die
Aufrechterhaltung der Kohärenz zeigen, ist zu bemerken,
daß jede Verbindung zwischen dem Block B des weniger
schnellen Niveaus und den Blöcken b des schnelleren Niveaus
und umgekehrt jede Verbindung zwischen einem Block b des
schnelleren Niveaus und dem Block B des weniger schnellen
Niveaus über die Sammelleitungen BUS an der Schnittstelle
des schnelleren Niveaus geht, und daß bei jeder dieser
Verbindungen diese Sammelleitungen gleichzeitig eine vollständige
Adresse führen, welche die Adressen der Seite des
weniger schnellen Blocks und die Position der Information
in dieser Seite enthält, und außerdem die gegebenenfalls
übertragene Information und die Art des ausgeführten oder
auszuführenden Befehls. Die Identität des anfordernden
schnellen Blocks kann zu der vollständigen Adresse hinzugefügt
sein oder von der diesem Block zugehörigen Rufleitung
der Sammelleitung BUS abgeleitet werden. Es ist
also festzustellen, daß ohne zusätzlichen Materialaufwand
praktisch eine mögliche Zwischenverbindung zwischen den
Blöcken b besteht, die bei gewissen Anwendungsmodalitäten
der Erfindung ausgenutzt werden kann.
Die Fig. 2 bis 5 ermöglichen die Definition dieser
Anwendungsmodalitäten. Jede dieser Figuren zeigt von I
bis V verschiedene Stadien des Informationsaustauschs
zwischen dem Block Bp des weniger schnellen Niveaus (i + 1)
und zwei Blöcken bj und bk des schnelleren Niveaus (i)
unter der Steuerung durch die Prozessoren Pj und Pk dieses
schnelleren Niveaus.
Es werden nicht notwendigerweise alle Indizes der Tabellen
bei diesen Anwendungsmodalitäten benutzt. Der Index V
genügt für die Modalitäten der Fig. 2 und 3 und die
Indizes V und M sowie der Index x für diejenige von Fig. 4.
Nur die Modalität von Fig. 5 benutzt die drei Indizes V,
M und X.
Fig. 2 betrifft den Fall, daß jede Modifikation einer
Information auf dem schnelleren Niveau eine sofortige
Berichtigung verursacht, durch die der Speicherblock Bp
aufs laufende gebracht wird. Im Diagramm I ist eine Informationsgruppe,
beispielsweise eine Seite des schnellen
Blocks, aus dem Block Bp entnommen und im Block bj
kopiert worden. Im Diagramm II ist die gleiche Informationsgruppe
auch im Block bk kopiert worden. Wenn gemäß
dem Diagramm III die im Block bj stehenden Informationen
wenigstens teilweise modifiziert worden sind, müssen sie
im Block bk "gelöscht" werden, wobei sie jedoch in den
Block Bp zurückgeschickt werden müssen, damit dieser sofort
aufs laufende gebracht wird (Programm des Prozessors
Pj). Gemäß der obigen Beschreibung hat der Block Bp einen
Entleerungsbefehl abgegeben, und dieser Befehl, der im
Block bk nur unmodifizierte Informationen findet, hat
verursacht, daß diese Informationen durch den Prozessor Pk
ungültig gemacht worden sind. Wenn der Prozessor Pk ungültig
gemachte Informationen benötig, fordert er sie wieder
vom Block Bp an, und er erwirbt somit die modifizierten
Informationen, die im Block Bp "aufs laufende gebracht"
sind. Das Diagramm V zeigt lediglich, daß anschließend
der Prozessor Pk vom Block Bp weitere Informationen erhalten
kann, ohne den Block bj zu stören, da er sich mit
dem Lesen begnügt.
Beim Empfang der Berichtigungs-Anforderung hat der Leit-
Prozessor des Blocks Bp die Markierung für die Anwesenheit
der Informationen in seiner Tabelle Tp für den Block bk
gelöscht, nachdem er diese Anwesenheitsmarkierungen im
Verlauf der Operationen I und II eingeschrieben hat. Er
hat diese Markierung bei der Operation des Diagramms IV
wieder eingeschrieben, ohne den Block Bj zu "entleeren".
Fig. 3 zeigt die Abänderung des Vorgangs, wenn im Block Bp
die Berichtigung, durch die die modifizierten Daten aufs
laufende gebracht werden, nicht sofort erfolgt.
Wenn nach der Eingabe einer Datengruppe in den Block bj
(beispielsweise) gemäß dem Diagramm I der Prozessor Pk
die gleichen Informationen anfordert, werden diese zu
ihm übertragen; da aber die Markierung für das Vorhandensein
der Informationen im Block bj in die Tabelle Tp
eingeschrieben ist, wird ein Entleerungsbefehl, der sich
aus einer Ungültigmachung dieser Informationsgruppe im
Block bj ergibt, gemäß dem Diagramm II zum Prozessor Pj
übertragen. Der Prozessor Pk kann dann Daten dieser Informationsgruppe
modifizieren (Diagramm III), ohne die
Blöcke Bp und bj zu stören. Wenn jedoch der Prozessor Pj
(Diagramm IV) diese Informationen wieder anfordert, wird
die Berichtigung vom Prozessor Pk verlangt, weil die
Markierung für das Vorhandensein der Informationen in
der Tabelle des Blocks Bp existiert. Der Block Bp wird
aufs laufende gebracht, und der Bock bj empfängt die
modifizierten Informationen; er kann sie gleichzeitig
mit dem Block Bp erhalten, da sie, wie zuvor erwähnt,
auf den Sammelleitungen BUS des Niveaus (i) vorhanden
sind. Das Diagramm V zeigt den gleichen Fall wie das
Diagramm V von Fig. 2.
Fig. 4 zeigt eine andere Abänderung des Vorgangs, wenn
die Berichtigung im Block Bp, durch die die modifizierten
Daten aufs laufende gebracht werden, nicht sofort
erfolgt und unterstellt wird, daß die nicht modifizierten
Daten in mehreren Blöcken des schnelleren Niveaus
kopiert sind.
Die Diagramme I und II sind mit denjenigen von Fig. 2
identisch, jedoch sind die Übertragungen unter der Bedingung
der Ausschließlichkeit durchgeführt worden, d. h.,
daß der Index X sowohl im Block bj als auch im Block bk
auf den Wert "1" gebracht worden ist. Bei der ersten Modifizierung
von Daten im Block bk (Diagramm III) werden die
Daten im Block bj nach Prüfung des Vorhandenseins der
Anwesenheitsmarkierung in der Tabelle des Blocks Bp ungültig
gemacht, ohne daß aber der Block Bp aufs laufende
gebracht wird; dies erfolgt aufgrund eines vom Prozessor Pk
abgegebenen Ungültigmachungsbefehls, da dann die Indizes X
und M beide durch den Prozessor Pk auf "1" gebracht worden
sind. Der Prozessor Pk bewirkt, daß der Index M der Daten
in seiner Tabelle Tk auf "1" gebracht wird. Jede spätere
Modifizierung wird nicht signalisiert (Diagramm IV), da
der Index M für die Datengruppe bereits auf dem Wert "1"
ist. Wenn der Prozessor Pj die gleiche Datengruppe vom
Block Bp anfordert, fordert der Leit-Prozessor des Blocks Bp
die Berichtigung an, aber ohne Ungültigmachung im Block bk.
Im Block bk wird der Index m auf "0" zurückgebracht. In den
Blöcken Bp, bj und bk stehen somit die gleichen Versionen
der betreffenden Informationen, und man befindet sich wieder
im Zustand des Diagramms II.
Fig. 5 zeigt noch eine andere Variante, die den direkten
Austausch von modifizierten Informationen zwischen den
Blöcken des schnellen Niveaus ermöglicht, ohne daß der
Speicher Bp des weniger schnellen Niveaus aufs laufende
gebracht wird.
Die Diagramme I und II sind mit denjenigen von Fig. 4
identisch, einschließlich der Markierung des Index X.
Wenn (Diagramm III) eine Modifizierung im Block Bj efolgt,
wird der Index M in der Tabelle Tj auf den Wert "1"
gebracht. Wenn die Tabelle Tp mehrere Bits des Wertes "1"
für den Block bj enthält, und nachdem der Prozessor Pj
den Ungültigmachungsbefehl abgegeben hat, weil die Indizes
X und M dann beide auf dem Wert "1" sind, wird die Datengruppe
der gleichen Adresse Ap im Block bk ungültig gemacht.
Wenn dann (Diagramm IV) der Prozessor Pk diese Datengruppe
wieder anfordert, verursacht die Anforderung vom Prozessor
Pk eine Entleerung im Block bj, wodurch der Index X, aber
nicht der Index M in diesem Block auf "0" zurückgebracht
wird. Der Block Bp wird nicht aufs laufende gebracht, und
die modifizierten Daten werden direkt im Block bk kopiert,
wo der Index M für diese Daten auf "1" gebracht wird. Da
keine Kopierung im Block Bp stattgefunden hat, werden die
Daten im Block bj nicht ungültig gemacht. Es bestehen somit
dann in den Blöcken des schnelleren Niveaus zwei Informationssätze,
die miteinander identisch sind, aber
nicht die gegenwärtige Version in dem Block des weniger
schnellen Niveaus haben. In der dem Prozessor Pj zugeordneten
Tabelle wird der Index M auf "1" gehalten, aber
der Index X wird auf "0" zurückgebracht.
Wenn anschließend im Block bj die Datengruppe vollständig
verwertet worden ist, wird das Abwurfsignal zu dem weniger
schnellen Niveau geschickt, begleitet von einer Einschreib-
Anforderung, da M = 1. Der Speicher Bp wird dadurch aufs
laufende gebracht (Diagramm V).
Zusammenfassend läßt sich sagen, daß das zuvor beschriebene
System bei jeder beliebigen Anwendungsmodalität die
beiden folgenden Bedingungen und damit die Kohärenz gewährleistet:
- - Wenn ein von einem Prozessor abgegebener Lesebefehl eine Information betrifft, die in seinem Speicherblock nicht vorhanden ist, und wenn der Leit-Prozessor des Blocks des weniger schnellen Niveaus in seiner Tabelle feststellt, daß die Information in anderen Blöcken (oder in wenigstens einem anderen Block) des schnelleren Niveaus vorhanden ist, wird ein Berichtigungsbefehl ausgeführt, durch den der Block des weniger schnellen Niveaus aufs laufende gebracht wird;
- - wenn ein von einem Prozessor abgegebener Schreibbefehl eine Information betrifft, die in seinem Speicherblock nicht vorhanden ist, oder die zwar vorhanden ist, wobei aber ihr Index M den Wert "0" hat, und wenn durch Befragung der dem Block des weniger schnellen Niveaus zugeordneten Tabelle festgestellt wird, daß die Information in anderen Blöcken vorhanden ist, wird ein Befehl zur Entleerung dieser anderen Blöcke ausgeführt.
Falls erwünscht, kann in dem weniger schnellen Niveau der
Index M nicht global einer Seite p zugeordnet werden, sondern
die Tabelle kann die Fragmente 1 bis q dieser Seite
unterscheiden und ihnen individuell einen Index M zuordnen,
wobei als Gegenleistung für diesen erhöhten Aufwand eine
geringere Anzahl von Operationen zu erwarten ist, mit denen
der Block des weniger schnellen Niveaus aufs laufende gebracht
wird.
Claims (4)
1. Anordnung zur kohärenten Verwaltung des Informationsaustauschs
zwischen den Speicherblöcken (Bp; bj, bk) zweier aneinanderstoßender
Niveaus (i + 1; i) einer Speicherhierarchie,
von denen das eine Niveau (i) schneller als das andere Niveau
(i + 1) ist und jedes Niveau in Speicherblöcke (Bp; bj, bk) unterteilt
ist, von denen jeder durch einen Leit-Prozessor (PBp;
Pbj, Pbk) verwaltet wird, dem wenigstens eine auf dem laufenden
gehaltene Tabelle (Tp; Tj, Tk) von Zustandswörtern zugeordnet
ist, die von diesem Leit-Prozessor (PBp; Pbj, Pbk) bei
jeder Lese- und Schreib-Operation befragt wird, wobei jeder
Speicherblock (Bp) des Niveaus (i + 1) Informationen mit mehreren
Speicherblöcken (bj, bk) des anschließenden schnelleren
Niveaus (i) austauscht, dadurch gekennzeichnet,
daß jede Tabelle (Tp) eines Speicherblocks (Bp) des weniger schnellen Niveaus (i + 1) Eintragfelder (AP 1, . . . APx) enthält, um für jede Seite (P 1, . . . Px) dieses Speicherblocks (Bp) und für jeden davon bedienten Speicherblock (bj, bk) des schnelleren Niveaus (i) eine Markierung auf dem laufenden zu halten, die das Vorhandensein von kopierten Informationen in den Speicherblöcken (bj, bk) des schnelleren Niveaus (i) anzeigt,
daß jede Tabelle (Tj, Tk) eines Speicherblocks (bj, bk) des schnelleren Niveaus (i) Eintragfelder (AP 1, . . . APx) enthält, um diejenigen seiner Seiten (p 1 . . . pz) zu identifizieren, welche kopierte Informationen aus dem Speicherblock (Bp) des weniger schnellen Niveaus (i + 1) enthalten, sowie Eintragfelder (CE) enthält, um für jede Seite (P 1, . . . Px) des Speicherblocks (Bp) des weniger schnellen Niveaus (i + 1) einen Zählwert dieser Informationen auf dem laufenden zu halten und der Tabelle (Tp) dieses Speicherblocks (Bp) jedes Erreichen des Zählwertes Null bei jedem Zählwert anzuzeigen,
und daß bei jeder Anforderung eines Lese- und Schreibvorgangs in dem Speicherblock (Bp) des weniger schnellen Niveaus (i + 1) der Leit-Prozessor (PBp) dieses Speicherblocks (Bp) nach Befragung seiner Tabelle (Tp) jede selektive Berichtigung der Daten der von der Anforderung betroffenen Seite (P 1, . . . Px) sowohl vor der als auch gleichzeitig mit der Erfüllung der Anforderung sowohl im zugehörigen Speicherblock (Bp) als auch in den Speicherblöcken (bj, bk) des schnelleren Niveaus (i) durchführen kann.
daß jede Tabelle (Tp) eines Speicherblocks (Bp) des weniger schnellen Niveaus (i + 1) Eintragfelder (AP 1, . . . APx) enthält, um für jede Seite (P 1, . . . Px) dieses Speicherblocks (Bp) und für jeden davon bedienten Speicherblock (bj, bk) des schnelleren Niveaus (i) eine Markierung auf dem laufenden zu halten, die das Vorhandensein von kopierten Informationen in den Speicherblöcken (bj, bk) des schnelleren Niveaus (i) anzeigt,
daß jede Tabelle (Tj, Tk) eines Speicherblocks (bj, bk) des schnelleren Niveaus (i) Eintragfelder (AP 1, . . . APx) enthält, um diejenigen seiner Seiten (p 1 . . . pz) zu identifizieren, welche kopierte Informationen aus dem Speicherblock (Bp) des weniger schnellen Niveaus (i + 1) enthalten, sowie Eintragfelder (CE) enthält, um für jede Seite (P 1, . . . Px) des Speicherblocks (Bp) des weniger schnellen Niveaus (i + 1) einen Zählwert dieser Informationen auf dem laufenden zu halten und der Tabelle (Tp) dieses Speicherblocks (Bp) jedes Erreichen des Zählwertes Null bei jedem Zählwert anzuzeigen,
und daß bei jeder Anforderung eines Lese- und Schreibvorgangs in dem Speicherblock (Bp) des weniger schnellen Niveaus (i + 1) der Leit-Prozessor (PBp) dieses Speicherblocks (Bp) nach Befragung seiner Tabelle (Tp) jede selektive Berichtigung der Daten der von der Anforderung betroffenen Seite (P 1, . . . Px) sowohl vor der als auch gleichzeitig mit der Erfüllung der Anforderung sowohl im zugehörigen Speicherblock (Bp) als auch in den Speicherblöcken (bj, bk) des schnelleren Niveaus (i) durchführen kann.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß
in jeder Tabelle (Tj, Tk) des schnelleren Niveaus (i) jeder
Seite (p 1 . . . pz) des Speicherblocks (bj, bk) ein Gültigkeitsindex
(V) zugeordnet ist und durch den zugehörigen
Leit-Prozessor (Pbj, Pbk) auf dem laufenden gehalten wird,
und daß Einrichtungen ("-") vorgesehen sind, um den Zählerstand
der dieser Seite zugehörigen Informationen (CE) um
eine Einheit zu verringern, wenn der Gültigkeitsindex (V)
von dem Leit-Prozessor (Pbj, Pbk) auf Ungültigkeit umgeschaltet
wird.
3. Anordnung nach Anspruch 2, dadurch gekennzeichnet, daß
in jeder Tabelle (Tj, Tk) des schnelleren Niveaus (i) ein
Index (M), der die örtliche Modifizierung einer Information
anzeigt, wenigstens jeder Seite (p 1, . . . pz) des zugehörigen
Speicherblocks (bj, bk) zugeordnet ist und durch den
Leit-Prozessor (Pbj, Pbk) auf dem laufenden gehalten wird,
und daß der Leit-Prozessor (Pbj, Pbk) Einrichtungen enthält,
durch die bei jedem Berichtigungsbefehl, der von dem Leit-
Prozessor (Pbj, Pbk) empfangen wird, durch die Befragung
dieses Index (M) gewährleistet wird, daß nur die Daten betroffen
sind, deren Indizes (V, M) gleichzeitig die Gültigkeit
und die Modifizierung markieren, und daß dieser Index
(M) dann auf einen Wert umgeschaltet wird, der die Nichtmodifizierung
der Information anzeigt.
4. Anordnung nach Anspruch 2, dadurch gekennzeichnet, daß
in jeder Tabelle (Tj, Tk) des schnelleren Niveaus (i) ein
vom Leit-Prozessor (Pbj, Pbk) verwalteter Index (X) vorhanden
ist, der jeder Seite (p 1, . . . pz) zugeordnet ist und
anzeigt, ob deren Informationen unter einer Bedingung erhalten
worden sind, die den Zugang für andere Speicherblöcke
(bj, bk) des schnelleren Niveaus (i) ausschließt,
und daß Einrichtungen vorgesehen sind, um bei einer Modifizierung
einer Information beim Vorhandensein dieses Ausschließungsindex
(X) zu gewährleisten, daß ein Befehl für
die Verhinderung jedes Kopierens dieser Information in jedem
anderen Block (bj, bk) des schnelleren Niveaus (i) abgegeben
wird, wobei dieser Index (X) bei jedem vom Leit-
Prozessor (Pbj, Pbk) empfangenen Berichtigungsbefehl auf
einen Wert zurückgebracht wird, der die Nichtausschließung
markiert.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR7606879A FR2344094A1 (fr) | 1976-03-10 | 1976-03-10 | Systeme de gestion coherente des echanges entre deux niveaux contigus d'une hierarchie de memoires |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2710477A1 DE2710477A1 (de) | 1977-09-15 |
DE2710477C2 true DE2710477C2 (de) | 1988-12-01 |
Family
ID=9170234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19772710477 Granted DE2710477A1 (de) | 1976-03-10 | 1977-03-10 | Anordnung zur kohaerenten leitung des informationsaustauschs zwischen zwei aneinanderstossenden niveaus einer speicherhierarchie |
Country Status (3)
Country | Link |
---|---|
US (1) | US4173781A (de) |
DE (1) | DE2710477A1 (de) |
FR (1) | FR2344094A1 (de) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH048824B2 (de) * | 1979-01-09 | 1992-02-18 | ||
US4484262A (en) * | 1979-01-09 | 1984-11-20 | Sullivan Herbert W | Shared memory computer method and apparatus |
JPS5680872A (en) * | 1979-12-06 | 1981-07-02 | Fujitsu Ltd | Buffer memory control system |
EP0051745B1 (de) * | 1980-11-10 | 1988-01-27 | International Business Machines Corporation | Pufferspeicherhierarchie für ein Multiprozessorsystem |
US4823259A (en) * | 1984-06-29 | 1989-04-18 | International Business Machines Corporation | High speed buffer store arrangement for quick wide transfer of data |
US4730249A (en) * | 1986-01-16 | 1988-03-08 | International Business Machines Corporation | Method to operate on large segments of data in a virtual memory data processing system |
US4785395A (en) * | 1986-06-27 | 1988-11-15 | Honeywell Bull Inc. | Multiprocessor coherent cache system including two level shared cache with separately allocated processor storage locations and inter-level duplicate entry replacement |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US5034885A (en) * | 1988-03-15 | 1991-07-23 | Kabushiki Kaisha Toshiba | Cache memory device with fast data-write capacity |
US5136700A (en) * | 1989-12-22 | 1992-08-04 | Digital Equipment Corporation | Apparatus and method for reducing interference in two-level cache memories |
US5689679A (en) * | 1993-04-28 | 1997-11-18 | Digital Equipment Corporation | Memory system and method for selective multi-level caching using a cache level code |
US6047357A (en) * | 1995-01-27 | 2000-04-04 | Digital Equipment Corporation | High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy |
US7281092B2 (en) * | 2005-06-02 | 2007-10-09 | International Business Machines Corporation | System and method of managing cache hierarchies with adaptive mechanisms |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3581291A (en) * | 1968-10-31 | 1971-05-25 | Hitachi Ltd | Memory control system in multiprocessing system |
US3588839A (en) * | 1969-01-15 | 1971-06-28 | Ibm | Hierarchical memory updating system |
US3771137A (en) * | 1971-09-10 | 1973-11-06 | Ibm | Memory control in a multipurpose system utilizing a broadcast |
US3820078A (en) * | 1972-10-05 | 1974-06-25 | Honeywell Inf Systems | Multi-level storage system having a buffer store with variable mapping modes |
US3911401A (en) * | 1973-06-04 | 1975-10-07 | Ibm | Hierarchial memory/storage system for an electronic computer |
US3938097A (en) * | 1974-04-01 | 1976-02-10 | Xerox Corporation | Memory and buffer arrangement for digital computers |
FR2308164A1 (fr) * | 1975-04-17 | 1976-11-12 | Cii | Procede et moyens pour une gestion coherente des informations dans une hierarchie de memoires |
US4077059A (en) * | 1975-12-18 | 1978-02-28 | Cordi Vincent A | Multi-processing system with a hierarchial memory having journaling and copyback |
-
1976
- 1976-03-10 FR FR7606879A patent/FR2344094A1/fr active Granted
-
1977
- 1977-03-10 DE DE19772710477 patent/DE2710477A1/de active Granted
- 1977-03-10 US US05/776,359 patent/US4173781A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
FR2344094B1 (de) | 1978-12-08 |
DE2710477A1 (de) | 1977-09-15 |
FR2344094A1 (fr) | 1977-10-07 |
US4173781A (en) | 1979-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3131341C2 (de) | ||
DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
DE3803759C2 (de) | ||
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE2710477C2 (de) | ||
DE2856715C3 (de) | Verfahren zum Durchführen einer Pufferspeicher-Koinzidenz in einem Mehrprozessorsystem | |
DE2817431C2 (de) | Speichereinrichtung mit auf Durchspeichern(store thru) beruhender Speicherhierarchie mit Teilspeicherung | |
DE2241257A1 (de) | Datenverarbeitende anlage | |
DE2226382A1 (de) | Datenverarbeitungsanlage | |
DE2515696A1 (de) | Anordnung zum selektiven loeschen von teilen beziehungsweise zum ersatz von daten in einem cache-speicher | |
DE3621321A1 (de) | Cache-speicher- bzw. multiprozessor-system und betriebsverfahren | |
EP0600112A1 (de) | Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff | |
DE3805107A1 (de) | Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers | |
DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
DE2054830A1 (de) | Informationsverarbeitungssystem mit wortstrukturiertem Speicher und Verfahren fur einen Zugriff zu einem derar tigen Speicher | |
DE2640357A1 (de) | Wortgruppenprioritaetsanordnung | |
DE1801620A1 (de) | Verfahren und Anordnung zur Adressierung eines Speichers in einer Datenverarbeitungsanlage | |
DE69130626T2 (de) | Verfahren zur Verwaltung einer Cache-Speicheranordnung | |
CH670715A5 (de) | ||
CH495584A (de) | Datenverarbeitungsanlage | |
DE1774212B2 (de) | En 20417 12.08.67 " 37132 bez: datenverarbeitungsanlage | |
DE2750126B2 (de) | ||
DE2947115A1 (de) | Loeschanordnung fuer einen cache- speicher eines prozessors in einem multiprozessorsystem | |
DE4005319C2 (de) | Verfahren und Anordnung zur Aufrechterhaltung der Datenkonsistenz in einem Multiprozessorsystem mit privaten Cachespeichern |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8128 | New person/name/address of the agent |
Representative=s name: PRINZ, E., DIPL.-ING. LEISER, G., DIPL.-ING., PAT. |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition |