HINTERGRUND DER ERFINDUNG
-
Die Erfindung betrifft ein Computersystem, das Subsysteme in
der Form eines Prozessors mit einem Vordergrundspeicher und
einem Hauptspeicher sowie ein Kommunikationsnetz, das die
Subsysteme miteinander verbindet, aufweist, wobei der
Vordergrundspeicher zum vorübergehenden Speichern wenigstens
eines Informationsblocks aus dem Hauptspeicher für eine
privilegierte Verwendung durch den Prozessor geeignet ist
und wobei für jede erste Speicherstelle im
Vordergrundspeicher ein Zulässigkeitsbit (zulässig), um eine zulässige
Informationsspeicherung darin anzuzeigen, und ein
Änderungsbit (markiert), um eine darin bewirkte Änderung anzuzeigen,
vorgesehen sind.
AUSGEWÄHLTE WIEDERGABE DES STANDS DER TECHNIK
-
Als grundlegende Quelle führt die Anmelderin die
EP-Patentanmeldung 19 358 an, die der GB Patentanmeldung 79 16 021
vom 9. Mai 1979 und dem US-Patent 4 322 815 entspricht und
die durch Bezugnahme hierin aufgenommen wird. Wenn der
Prozessor Informationen zu lesen wünscht, wird ein Block, der
diese Informationen enthält, vom Hauptspeicher zum
Vordergrundspeicher transferiert. Der privilegierte
Vordergrundspeicher eröffnet entweder aufgrund einer technologisch
schnelleren Ausführung und/oder aufgrund der Tatsache, daß
keine Transportoperation über das Kommunikationssystem (Bus
oder auf andere Weise) benötigt wird, einen schnelleren
Zugriff. Beim Transfer zum Vordergrundspeicher wird ein
Zulässigkeitsbit der relevanten Stelle in die Position
"zulässig" gesetzt, und des weiteren wird die
Hauptspeicheradresse
oder eine andere Kennung des relevanten
Speicherblocks zusammen mit der Stelle im Vordergrundspeicher in
einer Assoziativorganisation gespeichert. Deshalb ist es
lokal bekannt, welche Speicherblöcke vorhanden sind. Falls
die im Vordergrundspeicher vorhandenen Informationen in der
Folge geändert werden, wird eine solche Änderung durch
Umschalten des Änderungsbits angezeigt. An sich ist es
nicht unbedingt notwendig, daß das Zulässigkeitsbit und das
Änderungsbit die gleiche Speicherkapazität belegen; diese
Kapazität kann für das Änderungsbit kleiner sein. Das
Änderungsbit zeigt an, daß sich die lokalen Informationen nicht
in Übereinstimmung mit der Version der gleichen
Informationen befinden, die im Hauptspeicher vorhanden sind. Dies ist
nicht unzulässig, falls die relevanten Informationen nur für
den Prozessor oder einen darin ausgeführten Prozeß von
Wichtigkeit sind. In bestimmten Fällen ist es jedoch notwendig,
die Informationen im Hauptspeicher auf der Basis der im
Vordergrundspeicher vorhandenen veränderten Informationen
zu aktualisieren. Es gibt im allgemeinen zwei Gründe zur
Aktualisierung:
-
a. ein bestimmter Umfang an Speicherplatz im
Vordergrundspeicher wird zum Speichern anderer Informationen benötigt,
die für den Prozessor entscheidend sind (verdrängen);
-
b. die Ausführung des laufenden Prozesses wird vorübergehend
oder endgültig beendet und die zugehörigen Informationen
werden nicht mehr lokal benötigt (überschreiben). Alle
Speicherstellen, die für den relevanten Prozeß verwendet werden,
können nun in den Hauptspeicher kopiert werden. Im Prinzip
wird eine Beschleunigung erzielt, falls nur der Inhalt der
geänderten Speicherstellen kopiert wird. Falls keine weiteren
Schritte vorgenommen werden, bedeutet dies, daß alle Adressen
der relevanten Stellen adressiert werden müssen. Eine direkte
Suchoperation ist zeitaufwendig, und eine assoziative
Suchoperation würde für das Gerät eine komplizierte Addition
bedeuten.
ABRISS DER ERFINDUNG
-
Unter anderem ist es eine Aufgabe der vorliegenden Erfindung,
ein Computersystem der genannten Art zu schaffen, bei dem
die Kopie geänderter Informationen mit einfachen Mitteln
innerhalb eines kurzen Zeitintervalls zum Hauptspeicher
kopiert werden kann. Gemäß einem Aspekt der Erfindung wird
dies dadurch erreicht, daß ein Registrierungsspeicher
vorgesehen ist, der eine Folge weiterer Speicherstellen aufweist,
in denen Schreiboperationen in einer vorgegebenen ersten
Adressenfolge durchgeführt werden können und die danach in
einer vorgegebenen zweiten Adressenfolge direkt gelesen
werden können, um in jeder der weiteren Speicherstellen die
Adresse einer zugehörigen ersten Stelle zu speichern, für
die eine Änderung stattgefunden hat. Der
Registrierungsspeicher kann direktadressiert sein, so daß man ohne eine
komplizierte Assoziativoperation auskommt. Die erste und die
zweite Adressenfolge können direkt zusammenhängen, wie in
einem FIFO-Speicher oder einem LIFO-Speicher. Im ersteren
Fall sind die Adressenfolgen während Schreib- und
Leseoperationen die gleichen, und im zweiten Fall sind sie
entgegengesetzt. Eine dritte Möglichkeit besteht in einem zyklisch
adressierbaren Pufferspeicher. Ein schnelles Lesen wird dann
insofern realisiert, als es immer sofort bekannt ist, wo die
nächsten Informationen gespeichert sind, ohne daß es
erforderlich ist, Leerstellen zu adressieren. Derartige, in einem
RAM ausgeführte Speicher sind an sich bekannt. Des weiteren
sind im Prinzip auch noch andere Speicherorganisationen
brauchbar, die die gleichen vorteilhaften Eigenschaften
haben. Die einfache Organisation wird ganz besonders dadurch
erzielt, daß die Informationen im Vordergrundspeicher nicht
in einer sortierten Art und Weise gespeichert werden und
nicht sortiert werden müssen.
-
Es ist ein bevorzugter Aspekt der Erfindung, daß für jede
der ersten Speicherstellen ein Registrierungsbit vorgesehen
ist, um anzuzeigen, daß die zugehörige Adresse im
Registrierungsspeicher gespeichert worden ist. Dies verhindert einen
Überlaufzustand des Registrierungsspeichers.
-
Weitere vorteilhafte Aspekte sind in den Unteransprüchen
aufgezählt.
KURZBESCHREIBUNG DER FIGUREN
-
Die Erfindung wird nachstehend mit Bezug auf einige Figuren im
einzelnen beschrieben. Darin zeigen:
-
Fig. 1 einen Aufbau eines erfindungsgemäßen Computersystems;
-
Fig. 2 ein Blockdiagramm eines Vordergrundspeichers;
-
Fig. 3 ein Blockdiagramm eines Registrierungsspeichers.
BESCHREIBUNG EINER BEVORZUGTEN AUSFUHRUNGSFORM
-
Fig. 1 zeigt einen Aufbau eines Computersystems gemäß der
Erfindung. Ein Block 22 bezeichnet einen Hauptspeicher, der
beispielsweise als großer RAM mit einer Kapazität im
Megabyte-Bereich aufgebaut ist. Ein Block 24 bezeichnet einen
Hintergrundspeicher, beispielsweise einen Satz
Plattenspeicher. Die Blöcke 26 28, 30 bezeichnen drei Prozessoren.
Jeder Prozessor weist einen lokalen Speicher 32, 34, 36 in
RAM-Technologie auf, der normalerweise eine vergleichsweise
geringe Speicherkapazität im Vergleich mit der des Speichers
22 aufweist. Die jeweiligen Subsysteme sind mittels eines
Kommunikationssystems 20 miteinander verbunden, das in diesem
Beispielfall durch einen Bus gebildet wird. Die Einrichtungen
für die Zuweisung des Bus sind der Einfachheit halber
weggelassen worden. Die Konstruktion des Systems kann einfacher
sein, beispielsweise kann es nur einen Prozessor aufweisen,
oder der Hintergrundspeicher kann fehlen. Alternativ kann
das System komplizierter sein oder einen Teil eines
komplizierteren Systems bilden. Der lokale Speicher enthält (nicht
separat gezeigt) den Vordergrundspeicher, den
Registrierungsspeicher und eventuell weitere Speicher, die in diesem
Zusammenhang nicht relevant sind.
-
Fig. 2 zeigt ein Blockdiagramm eines Vordergrundspeichers.
Er weist drei Speicherstellen auf, von denen jede zum
Speichern eines Blocks dient. In einer einfachen Organisation
können diese Blöcke eine feste Länge haben. Die
Speicherstelle 50 weist eine Beschreiberstelle auf. Diese Stelle
enthält ein Zulässigkeitsbit V (40), ein Änderungsbit D (42)
und ein Registrierungsbit R (44). Außerdem ist dort Platz
für einen sogenannten Kennzeichner oder Merker 46 vorgesehen,
der den Inhalt der Speicherstelle kennzeichnet. Dieser Merker
kann beispielsweise eine Adresse oder einen Adressenabschnitt
oder eine Segmentzahl anzeigen. Die Speicherstelle weist
ferner einen Abschnitt 48 zum Speichern der aktuellen
Benutzerinformationen auf. Die Speicherstelle 52 ist auf die
gleiche Art organisiert, hat aber eine größere
Speicherkapazität. Die Speicherstelle 54 ist nochmals auf die gleiche
Art organisiert, etwa dadurch, daß zwei Änderungsbit und
zwei Registrierungsbit vorgesehen sind, die jedesmal einen
jeweiligen Abschnitt der Stelle 54 kennzeichnen. Deshalb
kann angezeigt werden, ob eine Änderung im ersten Abschnitt
oder im zweiten Abschnitt dieser Speicherstelle stattgefunden
hat. An der Anzeige 60 sind die Bit-Positionen, die durch
ein Kreuz bezeichnet sind, für den Beschreiber irrelevant;
sie können daher für Benutzerinformationen verfügbar sein.
Wenn der relevante Prozessor bestimmte Informationen zu
lesen wünscht, wird zuerst der Vordergrundspeicher in einer
weiteren Assoziativorganisation (der Einfachheit halber hier
nicht aufgeführt) adressiert, um zu überprüfen, ob die
relevanten Informationen darin vorhanden sind. Falls dies nicht
der Fall ist, wird der relevante Informationsblock zu einer
leeren Position im Vordergrundspeicher kopiert; für diese
Position hat das Zulässigkeitsbit den Wert "unzulässig". In
Antwort auf das Kopieren wird das zugehörige
Zulässigkeitsbit "zulässig", das Änderungsbit wird "ungeändert", und das
Registrierungsbit wird "nichtregistriert". War jedoch der
relevante Block im Vordergrundspeicher vorhanden, so wird
die Leseoperation unmittelbar danach durchgeführt. Wenn der
relevante Block nicht im Vordergrundspeicher vorhanden ist
und auch keine freie Stelle verfügbar ist, findet
Verdrängen/Austreibung statt. Gemäß einem bestimmten Algorithmus,
z.B. dem "am wenigsten zuletzt benutzt (LRU)"-Algorithmus,
wird ein Block ausgewählt, sein Inhalt wird zum
Hauptspeicher kopiert, und seine Stelle wird mit den neuen
Informationen gefüllt. Die drei Anzeigebits werden dann "zulässig",
"ungeändert", und das letzte Bit bleibt in seinem Zustand;
somit wird ein Zustand "registriert" aufrechterhalten.
-
Wenn der relevante Prozessor bestimmte Informationen zu
schreiben wünscht, wird zuerst der Vordergrundspeicher in
einer Assoziativorganisation auf die gleiche Art wie in dem
Fall einer Leseoperation adressiert, um zu prüfen, ob der
Speicherplatz, der für die relevanten Informationen bestimmt
ist, zum Vordergrundspeicher kopiert worden ist. Dieser
Speicherplatz kann bereits gefüllt sein oder nicht. Dies
liegt daran, daß sich in einem Block leerer Platz für
weitere einzufügende Informationen befinden kann. Wenn sich der
relevante Block nicht im Vordergrundspeicher befindet, wird
er in diesen kopiert, falls notwendig, auf die gleiche Art
wie für Leseoperationen beschrieben. Darauf werden die neuen
Informationen an der richtigen Stelle in den
Vordergrundspeicher geschrieben. Während dieser Schreiboperation werden
die nachstehenden Operationen in der einen oder anderen
Folge durchgeführt:
-
- falls das Zulässigkeitsbit "unzulässig" war (es betraf z.B.
einen leeren Block), wird das Zulässigkeitsbit auf "zulässig"
gesetzt;
-
- das Änderungsbit wird auf "geändert" gesetzt, um
anzuzeigen,
daß in wenigen Augenblicken ein Kopieren in den
Hauptspeicher erforderlich wird;
-
- die absolute Vordergrundspeicher-Adresse des relevanten
Blocks wird im Registrierungsspeicher gespeichert und das
Registrierungsbit des Speicherblocks wird auf "registriert"
gesetzt.
-
Darauf ist der Vordergrundspeicher für die nächste
Zugriffsoperation des lokalen Prozessors bereit.
-
Fig. 3 zeigt ein Blockdiagramm eines Registrierungsspeichers.
-
Der Speicher weist einen Abschnitt 62 auf, der wie ein RAM
organisiert ist. Die Kapazität jeder Speicherstelle reicht
für Zeigerinformationen für eine der Adressen im
Vordergrundspeicher aus. Außerdem sind ein Startadressenzähler 64
und ein Endadressenzähler 66 vorgesehen. Der
Startadressenzahler speichert die Position, an die der erste
Registrierungszeiger geschrieben werden kann. Der Endadressenzähler
speichert, wohin der nächste Registrierungszeiger
geschrieben werden kann. Anfänglich sind die zwei Zählerpositionen
gleich. Während einer Registrierung wird die Position des
Endadressenzählers jedesmal erhöht, bis beispielsweise
höchstens, im Wege eines Überlaufs, die Position des
Endadressenzählers gleich der des Startadressenzählers ist.
-
Es gibt die nachstehenden Fälle, in denen Informationen im
Falle einer Änderung in den Hauptspeicher kopiert werden
müssen:
-
a, b. Die zuvor beschriebenen Fälle a, b, die als Verdrängen
bzw. Überschreiben bekannt sind.
-
c. Der Fall, in dem im Registrierungsspeicher ein
Überlaufzustand auftritt. Dies kann verhindert werden, indem die
Anzahl von Speicherstel len im Registrierungsspeicher kleiner
als die Anzahl von Änderungsbits im Vordergrundspeicher
gehalten wird. In diesem Fall werden die Speicherstellen des
Registrierungsspeichers aufeinanderfolgend abgefragt und
werden die so angezeigten Informationen im
Vordergrundspeicher an die gleiche Stelle im Hauptspeicher kopiert, an der
sich die verfallene Version der Informationen befand. Das
Änderungsbit der Version im Vordergrundspeicher wird dann
auf "ungeändert" gesetzt, und das Registrierungsbit wird auf
"nichtregistriert" gesetzt. Diese Abfrage kann sowohl
dadurch verwirklicht werden, daß der Startadressenzähler
erhöht wird, als auch dadurch, daß der Endadressenzähler
vermindert wird. Die Abfrage ist beendet, wenn ein Vergleich
der Startadresse und der Endadresse zeigt, daß alle
registrierten Speicherstellen in den Hauptspeicher kopiert
worden sind. Ein Beispiel des Vorstehenden erhält man, wenn der
Vordergrundspeicher 1024 Stellen aufweist und der
Registrierungsspeicher 64 Stellen aufweist. Der Überlaufzustand kann
an sich dadurch gelöscht werden, daß nur eine begrenzte
Anzahl von Speicherblöcken in den Hauptspeicher kopiert wird.
Im Prinzip reicht in vielen Fällen bereits ein Block aus.
-
d. Schließlich kann es sein, daß es allgemein relevante
Informationen gibt; diese Situation tritt nur dann auf, wenn
das System wenigstens zwei Prozessoren aufweist. Prozessoren
werden hierin so verstanden, daß sie außerdem Steuereinheiten
beispielsweise eines Peripheriegeräts aufweisen, die
unabhängig Änderungen des Speicherinhalts verwirklichen können.
Eine solche Änderung kann beispielsweise im Fall eines
sogenannten direkten Speicherzugriffs (DMA) auftauchen. In
diesem Fall kann ein Konsistenzproblem auftreten: wenn mehrere
Prozessoren die gleichen Informationen benötigen, müssen sie
auch identische Informationen verfügbar haben. Das letztere
Problem kann auf verschiedene Weise gelöst werden. Eine
erste Möglichkeit besteht darin, daß es verboten wird, die
relevanten gemeinschaftlichen Informationen im
Vordergrundspeicher zu speichern. Eine zweite Möglichkeit besteht
darin, daß zwischen den verschiedenen Prozessoren Ungleichheit
erzeugt wird: ein bestimmter Prozessor wird der "Eigentümer"
der Informationen und kann sich selbst so verhalten, als ob
die Informationen nur für ihn selbst wichtig wären. Alle
anderen Prozessoren müssen den Eigentümerprozessor sofort
warnen, wenn die Informationen geändert werden, und müssen
den Prozessor mit der Änderung versorgen, oder sie müssen
versuchen, selbst Eigentümer der relevanten Informationen zu
werden. Im letzteren Fall besitzt nur der Eigentümer das
Recht zu ändern. Eine dritte Möglichkeit besteht darin, daß
die gemeinschaftlichen Informationen in den verschiedenen
Vordergrundspeichern gespeichert werden können, ein Kopieren
in den Hauptspeicher aber immer zusammen mit einer Warnung
an die anderen Prozessoren stattfindet, daß eine
Inkonsistenz existiert; dies wird dadurch verwirklicht, daß ein
Sonderdetektor (spy) vorgesehen wird, der die relevanten
Adressen auf dem Adressenbus erkennt. Der in diesem
Abschnitt beschriebene Mechanismus kann außerdem über den
Rahmen der vorliegenden Erfindung hinaus verwendet werden.
-
Das Folgende ist eine letzte Möglichkeit für das Auftreten
eines Überlaufzustands im Vordergrundspeicher. Wenn ein
Speicherblock im Vordergrundspeicher durch einen anderen
Block verdrängt wird, gibt es drei Möglichkeiten:
-
- der relevante Speicherblock ist ungeändert; in diesem Fall
ist kein Kopieren in den Hauptspeicher erforderlich;
-
- der relevante Speicherblock ist geändert; in diesem Fall
wird er kopiert und durch einen neuen Speicherblock ersetzt
wenn das Registrierungsbit nicht vorgesehen ist, ist es
unbekannt, ob sich ein Zeiger für den relevanten Block im
Registrierungsspeicher befindet; folglich bleibt die
Registrierung, falls es eine gibt, in Kraft. Wenn der neue Block
wieder geändert wird, wird das Änderungsbit geändert, jedoch
ist es nicht bekannt, daß bereits eine Registrierung
stattgefunden hat. Es findet dann eine neue Registrierung statt.
Dieser Mechanismus kann sich im Prinzip fortsetzen, bis der
Registrierungsspeicher vollständig gefüllt ist. Die letztere
Strategie selbst ist nicht sehr unattraktiv im Hinblick auf
die Zeit, die zur Aktualisierung benötigt wird, da die
Registrierung eines ungeänderten Speicherblocks nicht zum
Kopieren
führen muß, so daß wenig Zeit verloren wird, wenn die
relevante Adresse im Registrierungsspeicher adressiert wird.
Der einzige Nachteil besteht darin, daß der Überlaufzustand
eher aufzutreten neigt, so daß in diesem Fall der Prozeß
stockt, der in dem relevanten Prozessor ausgeführt wird.
-
Ein Überlaufzustand im Registrierungsspeicher kann somit zwei
Ursachen haben:
-
- für die Speicherblöcke im Vordergrundspeicher kann eine
Mehrfachregistrierung stattfinden (d.h. es ist kein
Registrierungsbit vorgesehen). Diese Ursache wird durch das
Registrierungsbit beseitigt;
-
- der Registrierungsspeicher ist zu klein gewählt. Wenn die
Registrierungsbits vorgesehen sind und die Anzahl der
Adressen des Registrierungsspeichers gleich der oder größer als
die Anzahl der im Vordergrundspeicher zu registrierenden
Stellen ist, kann kein Überlauf mehr stattfinden.