-
Die
Erfindung bezieht sich auf eine Cache-Flush-Vorrichtung für einen Cache-Speicher, der
einen Schnüffelmechanismus
zum Beibehalten von Datenkohärenz
hat, und auf ein fehlertolerantes Computersystem mit der Cache-Flush-Vorrichtung.
-
Im
Allgemeinen umfasst ein moderner Hochgeschwindigkeitsprozessor einen
Cache-Speicher zum vorübergehenden
Halten von Daten, die von dem Prozessor verlangt werden, um die
wirksame Speicherzugriffslatenzzeit zu verringern. Ein Cache-Speicher
hält Daten
und die Speicheradresse, bei der die Daten in einer Datenspeichereinheit
fester Größe, genannt
ein Cache-Block, ausgelesen werden.
-
Bei
einem Computer (genauer gesagt einem Multiprozessorcomputer), der
eine Mehrzahl von Prozessoren aufweist, von denen jeder seinen eigenen
Cache-Speicher aufweist, wird gewöhnlicherweise ein Schnüffelmechanismus
verwendet, um Datenkohärenz
zwischen den Cache-Speichern beizubehalten. Ein Schnüffelmechanismus überwacht
den Systembus, um Busbefehle zu erfassen, und wenn ein Busbefehl,
der eine Aktion des Cache-Speichers erfordert, erfasst wird, führt der
Schnüffelmechanismus
die erforderliche Aktion, wie beispielsweise Antworten auf den Busbefehl
mit in einem seiner Cache-Blöcke
gehaltenen Daten, Verwerfen von Daten in einem seiner Cache-Blöcke und
dergleichen aus.
-
Der
Cache-Speicher wird in einen Rückkopiertyp
und in einen Write-Through-Typ klassifiziert. Während ein Cache-Speicher Write-Through-Typ
Daten sofort in den Hauptspeicher zurückschreibt, wenn sie in dem
Cache-Speicher aktualisiert werden, vertagt ein Cache-Speicher vom
Rückkopiertyp
das Zurückschreiben
von Daten, bis es notwendig wird. Daher kann für einen Cache-Speicher vom
Rückkopiertyp
ein Cache-Block aktualisierte Daten halten, die noch nicht in den
Hauptspeicher zurückgeschrieben
wurde. Ein derartiger Cache-Block
wird ein dirty bzw. schmutziger Block genannt, und der Zustand eines
derartigen Cache-Blocks wird dirty bzw. schmutzig genannt.
-
Ein
Cache-Speicher vom Rückkopiertyp
erfordert einen Cache-Flush-Vorgang, der alle lediglich in dem Cache-Speicher
aktualisierten Daten in den Hauptspeicher zurückschreibt.
-
Beispielsweise
erfordert ein Datentransfer zwischen einer Eingabe/Ausgabevorrichtung
ohne Speicherkohärenzmechanismus
und dem Hauptspeicher einen Cache-Flush vor dem Datentransfer, um
sicherzustellen, dass der Hauptspeicher gültige Daten hält. Von
nun an bedeutet ein "Cache-Speicher" ein Cache-Speicher
vom Rückkopiertyp.
-
Ein
Cache-Flush ist ebenfalls für
einen Hauptspeicherbasierten, fehlertoleranten Computer vom Prüfpunkt/Rollbacktyp
notwendig. Ein derartiger fehlertoleranter Computer erzeugt periodisch
einen Prüfpunkt
in seinem Hauptspeicher. Wenn der Computer einige Fehler während der
Normal-Datenverarbeitung
erfasst, rollt der Computer seinen internen Zustand zu dem letzten
Prüfpunkt
zurück
und startet dann die Normal-Datenverarbeitung erneut.
-
Da
ein in dem Hauptspeicher erzeugtes Prüfpunktabbild ausreichende Information
enthalten sollte, um die normale Datenverarbeitung neu zu starten,
ist es notwendig, einen Cache-Flush als einen Teil der Prüfpunkterzeugung
durchzuführen.
-
Ein
Cache-Flush wird gewöhnlicherweise
mittels von dem Prozessor bereitgestellter Maschinen-Anweisungen
durchgeführt.
-
Ein
Pentium-Prozessor von Intel und seine Nachfolger stellen beispielsweise
eine Anweisung "wbinvd" (rückschreiben & invalidieren)
bereit. Die Anweisung schreibt Daten aller schmutzigen Blöcke in den
Hauptspeicher zurück
und setzt den Zustand jedes Cache-Blocks auf ungültig. Daher treten, wenn ein
Cache-Flush durch Ausführen
der Anweisung "wbinvd" als Teil einer Prüfpunkterzeugung
durchgeführt
wurde, sehr häufig Cache-Fehltreffer
während
der normale Datenverarbeitung auf, die der Prüfpunkterzeugung folgt.
-
Der
Prozessor MIPS R 4000 stellt beispielweise eine "Sekundärer-Cache-Treffer-Rückschreib"-Anweisung bereit.
Der Operand der Anweisung, der sich von dem Fall der "wbinvd"-Anweisung unterscheidet, ist ein einzelner
Cache-Block. Das folgende ist ein Beispielprogramm eines Cache-Flush-Vorgangs.
-
-
-
Mit
dem vorhergehenden Programm ist "cache
0x1b, 0($4)" die "Sekundärer-Cache-Treffer-Rückschreib"-Anweisung. Die Anweisung
prüft den
Zustand des Cache-Blocks eines durch den Inhalt des vierten Registers
($4) gekennzeichneten sekundären
Cache-Speichers. Wenn der Zustand schmutzig ist, werden die Daten
des Cache-Blocks in den Hauptspeicher zurückgeschrieben, und der Zustand
des Cache-Blocks ändert sich
in "clean-exclusive" oder "shared". Die Schleife sollte
so oft wie die Anzahl der Cache-Blöcke des sekundären Cache- Speichers wiederholt
werden, sogar wenn die Anzahl von schmutzigen Blöcken klein ist. Es sei bemerkt,
dass die Ausführungszeit
einer Cache-Anweisung gewöhnlicherweise
viel länger
als die einer gewöhnlichen
Anweisung, wie beispielsweise einer arithmetischen Anweisung, ist.
-
Der
Prozessor SPARC V9 stellt keine Anweisung für einen Cache-Flush bereit.
Wenn ein Cache-Flush notwendig ist, sollte eine Ladeanweisung verwendet
werden, sodass die Daten in einem schmutzigen Block durch die neu
in den Cache-Block geladenen Daten ersetzt werden. Daher ist die
Unwirksamkeit eines Cache-Flush offensichtlich kritischer als bei
dem Fall des Intel-Pentium-Prozessors.
-
Einen
Cache-Flush-Vorgang zu beschleunigen war ein Anliegen für Entwickler
eines Hauptspeicher-basierten fehlertoleranten Computers vom Prüfpunkt/Rückrolltyp.
Die japanische Patentoffenbarung (KOKAI) Nr. 5-6308, "Cache controller,
fault tolerant computer and data transfer method", Mitsubishi Denki Co, die der
DE 41 36 729 A1 entspricht,
schlug einen Cache-Controller mit zusätzlichem Speicher zum Speichern
der Speicheradresse vor, bei der ein Datenstück aktualisiert wird. Bei einem
Cache-Flush-Vorgang kann, während ein
herkömmlicher
Cache-Controller den Zustand jedes Cache-Blocks prüft, und
wenn er schmutzig ist, die in dem Cache-Block gehaltenen Daten zurückschreibt,
der vorgeschlagene Cache-Controller die in dem zusätzlichem
Speicher dicht gespeicherten Daten verwenden. Dieses Verfahren weist
jedoch einen kritischen Nachteil auf, dass es eine Hauptmodifikation
der gegenwärtigen
Cache-Controller-Ausgestaltung
erfordert, die zu kostspielig ist.
-
Mit
anderen Worten offenbart dieses Dokument ein Cache-Flush-Steuersystem
mit Cache-Controllern, die jeweils in Modulen bereitgestellt werden.
Dieses Dokument umfasst jedoch keine Cache-Flush-Vorrichtung, die
von dem Cache-Speicher unabhängig
und mit dem Cache-Speicher durch den Systembus verbunden ist. Daher
lehrt es keine Erfassung einer Datenaktualisierung in dem Cache-Speicher
durch Überwachen
des Systembusses.
-
Dieses
Dokument kann als eine Offenbarung einer Cache-Flush-Vorrichtung interpretiert werden,
die umfasst: ein Aktualisierungs-Adressenspeichermittel, nämlich eine
Mehrzahl von Stapeln bei allen CPU-Cache-Modulen 1 bis N, zum Speichern
der Adresse von in einem schmutzigen Block des entsprechenden Cache-Speichers
gehaltener Daten, ein Aktualisierungs-Adressenregistrierungsmittel,
um Aktualisierungsdaten in dem Cache-Speicher zu erfassen, und zum
Speichern der Adresse dieser Daten in dem Aktualisierungs-Adressenspeichermittel,
Aktualisierungs-Adressenentfernungsmittel
zum Erfassen eines Zurückschreibens
von Daten von einem schmutzigen Block und zum Entfernen der aktualisierten
Adresse von dem Aktualisierungs-Adressenspeichermittel,
und ein Flush-Ausführungsmittel
zum Zurückschreiben
in einen Hauptspeicher der Daten aller schmutzigen Blöcke basierend
auf den in dem Aktualisierungs-Adressenspeichermittel
gehaltenen Adressen.
-
Die
EP-0 75 262 A2, die am 27. Dezember 1996 veröffentlicht wurde und die Teil
des Stands der Technik gemäß Artikel
54(3) EPÜ bildet,
offenbart eine externe Etikettenspeichervorrichtung, die eine Adresse
aktualisierter Daten und ein Etikett speichert, das angibt, dass
die Daten in den Caches aktualisiert sind.
-
Angesichts
des Vorhergehenden besteht die primäre Aufgabe der Erfindung darin,
eine Cache-Flush-Vorrichtung bereitzustellen, die auf viele handelsübliche Hochgeschwindigkeitsmikroprozessor
mit Cache-Speichern anwendbar ist. Die an dem System-Bus angebrachte
Cache-Flush-Vorrichtung
behält
die in schmutzigen Blöcken
gehaltenen Speicheradressen in ihrem eigenen Speicher während der
normalen Datenverarbeitung bei. Wenn ein Cache-Flush erforderlich
ist, liest die Cache-Flush-Vorrichtung die Speicheradressen aus
dem Speicher effizient und gibt Busbefehle aus, wobei jeder von
diesen erfordert, die in einem der schmutzigen Blöcke gehaltenen
Daten zurückzuschreiben.
Als Ergebnis wird ein schmutziger Block "shared (gemeinsam genutzt)" und hält immer
noch die gleichen Daten. Für
einen nicht schmutzigen Cache-Block gibt es keine Änderung.
-
Erfindungsgemäß wird eine
Cache-Flush-Vorrichtung zur Verwendung in einem Computer gemäß Anspruch
1 und ein Computersystem gemäß Anspruch
4 bereitgestellt. Die abhängigen
Ansprüche
beziehen sich auf weitere vorteilhafte Aspekte der Erfindung.
-
Ein
Hauptspeicher-basierter, fehlertoleranter Computer vom Prüfpunkt/Rückrolltyp
erzeugt periodisch einen Prüfpunkt
in seinem Hauptspeicher. Das Flush-Ausführungsmittel der Cache-Flush-Vorrichtung
beschleunigt einen Cache-Flush, und der Zustand der Cache-Blöcke bleibt
vorteilhafterweise gültig.
Daher erhöht ein
Hauptspeicher-basierter, fehlertoleranter Computer vom Prüfpunkt/Rückrolltyp
mit seiner Cache-Flush-Vorrichtung die Systemleistung erheblich.
-
Zusätzlich zu
dem obigen Computersystem zum periodischen Erfassen von Prüfpunkten
kann die erfindungsgemäße Cache-Flush-Vorrichtung
auf ein Duplexcomputersystem angewendet werden, bei dem der primäre Computer
abwechselnd die Normal-Datenverarbeitung
fortsetzt und sein Prüfpunktabbild
an den sekundären
Computer sendet, und wenn ein Fehler in dem primären Computer auftritt, übernimmt
der sekundäre Computer
die Normal-Datenverarbeitung. Das Cache-Flush-Mittel der Cache-Flush-Vorrichtung
beschleunigt die Prüfpunkterzeugung
des primären
Computers.
-
Die
Erfindung kann vollständiger
aus der folgenden ausführlichen
Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden
werden, in denen zeigen:
-
1 ein
Blockdiagramm, das die Konfiguration eines Computersystems gemäß der ersten
Ausführungsform
der Erfindung zeigt;
-
2A und 2B konzeptionelle
Ansichten, die die Struktur einer Region Ai des
Aktualisierungs-Adressenspeichers
der ersten Ausführungsform
zeigt;
-
3 ein
Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts der
ersten Ausführungsform;
-
4 ein
Betriebsdiagramm des Aktualisierungs-Adressenentfernungsabschnitts der ersten
Ausführungsform;
-
5 ein
Betriebsdiagramm des Flush-Ausführungsabschnitts
der ersten Ausführungsform;
-
6 ein
Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts der
zweiten Ausführungsform;
-
7 ein
Betriebsdiagramm des Aktualisierungs-Adressenentfernungsabschnitts der zweiten
Ausführungsform;
-
8 eine
Tabelle, die den Vorgang darstellt, der durchgeführt wird, wenn der Prozessor
der ersten Ausführungsform
Daten D0, D1 und D2 kontinuierlich bei Adressen 0, BÇM und
2BÇM
schreibt;
-
9 eine
konzeptionelle Ansicht, die die Struktur der Region Ai gemäß einer
Modifikation der ersten Ausführungsform
zeigt;
-
10 ein
Betriebsdiagramm der Cache-Flush-Vorrichtung, das durchgeführt wird,
wenn der Aktualisierungs- Adressenregistrierungsabschnitt
der Modifikation einen Datenaktualisierungsbefehl erfasst;
-
11 ein
Betriebsdiagramm der Cache-Flush-Vorrichtung, das durchgeführt wird,
wenn der Aktualisierungs-Adressenentfernungsabschnitt
der Modifikation einen Befehl zum Zurückschreiben des schmutzigen Blocks
in den Hauptspeicher erfasst;
-
12 ein
Betriebsdiagramm des Flush-Ausführungsabschnitts
der Modifikation;
-
13 eine
Tabelle, die den Vorgang darstellt, der durchgeführt wird, wenn der Prozessor
der Modifikation kontinuierlich Daten D0, D1 und D2 in Adressen
0, BÇM
und 2BÇM
schreibt;
-
14 ein
Diagramm, das die Struktur eines Computersystems gemäß einer
weiteren Modifikation der ersten Ausführungsform zeigt;
-
15 ein
Betriebsdiagramm der in 14 gezeigten
weiteren Modifikation;
-
16 ein
Diagramm, das die Struktur eines Computersystems gemäß einer
zweiten Ausführungsform
zeigt (von der Erfindung nicht abgedeckt);
-
17 eine
konzeptionelle Ansicht, die die Struktur der Region des Aktualisierungs-Adressenspeichers
der zweiten Ausführungsform
zeigt (von der Erfindung nicht abgedeckt);
-
18 ein
Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts und
eines Eintragrückbeanspruchungsabschnitts,
wenn der Aktualisierungs-Adressenregistrierungsabschnitt einen Befehl
erfasst, der eine Datenaktualisierung in dem Cache-Speicher der
zweiten Ausführungsform
angibt (von der Erfindung nicht abgedeckt);
-
19 ein
Betriebsdiagramm des Flush-Ausführungsabschnitts
der zweiten Ausführungsform
(von der Erfindung nicht abgedeckt);
-
20 eine
Tabelle, die den Vorgang zeigt, der durchgeführt wird, wenn der Prozessor
der zweiten Ausführungsform
kontinuierlich Daten D0, D1 und D2 in Adressen 0, BÇM und
2BÇM
schreibt (die zweite Ausführungsform
wird nicht von der Erfindung abgedeckt);
-
21 ein
Diagramm, das die Struktur eines Computersystems gemäß einer
dritten Ausführungsform zeigt;
-
22 ein
Betriebsdiagramm des Aktualisierungs-Adressenentfernungsabschnitts der dritten
Ausführungsform
zum Suchen des Eintrags, bei dem die gleiche Adresse wie die Rückschreibadresse
gespeichert ist, für
eine vorbestimmte Zeit;
-
23 ein
Diagramm, das die Struktur eines Computersystems gemäß einer
vierten Ausführungsform zeigt;
-
24 eine
konzeptionelle Ansicht, die die Struktur der Region des Aktualisierungs-Adressenspeichers
der vierten Ausführungsform
zeigt;
-
25 ein
Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts und
des Eintragrückbeanspruchungsabschnitts
der vierten Ausführungsform,
wenn der Aktualisierungs-Adressenregistrierungsabschnitt
einen Befehl erfasst, der eine Datenaktualisierung in dem Cache-Speicher angibt;
-
26 ein
Betriebsdiagramm des Aktualisierungs-Adressenentfernungsabschnitts der vierten
Ausführungsform;
-
27 ein
Betriebsdiagramm des Flush-Ausführungsabschnitts
der vierten Ausführungsform;
-
28 ein
Diagramm, das die Struktur eines fehlertoleranten Computers gemäß einer
fünften
Ausführungsform
der Erfindung zeigt;
-
29 ein
Diagramm, das die Verschiebung von drei Schritten, wenn die Zeit
abläuft,
in dem Computer der fünften
Ausführungsform
zeigt;
-
30 ein
Diagramm, das die Struktur eines fehlertoleranten Computers gemäß einer
sechsten Ausführungsform
der Erfindung zeigt; und
-
31 ein
Diagramm, das Zustände
von Änderungen
eines ersten Computers 100a und eines zweiten Computers 100b des
Computers der sechsten Ausführungsform
zeigt, wenn die Zeit abläuft.
-
Eine
bevorzugte Ausführungsform
eines Computersystems mit einer erfindungsgemäßen Cache-Flush-Vorrichtung
wird nun mit Bezug auf die begleitenden Zeichnungen beschrieben.
-
Erste Ausführungsform
-
1 ist
ein Blockdiagramm, das die Konfiguration eines Computersystems gemäß der ersten
Ausführungsform
der Erfindung zeigt. Jeder Prozessor 10 umfasst seinen
eigenen Cache-Speicher vom Rückkopiertyp 20 mit
einem Cache-Kohärenzmechanismus
und ist mit einem Systembus 40 verbunden. In einem Fall, in
dem die Konfiguration des Cache-Speichers 20 zweistufig
(nämlich
primäre
und sekundäre
Cache-Speicher umfasst) oder mehr ist, bedeutet der Cache-Speicher
gemäß dieser
Ausführungsform
den Cache-Speicher am nächsten
zu dem Systembus 40. In dem Fall, in dem ein Cache-Speicher
einen Anweisungs-Cache-Speicher und einen Daten-Cache-Speicher umfasst,
bedeutet der Cache-Speicher gemäß dieser
Ausführungsform
den Daten-Cache-Speicher. Der Systembus 40 gemäß dieser
Ausführungsform
hat 32-Bit-Adressen.
-
Eine
Cache-Flush-Vorrichtung 30 und ein Speichercontroller 50 für einen
Hauptspeicher 51 sind mit dem Systembus 40 verbunden.
Die Cache-Flush-Vorrichtung 30 umfasst eine Systembusschnittstelle 31,
einen Aktualisierungs-Adressenspeicher 32 (bestehend aus
Regionen A0 bis An–1),
einen Aktualisierungs-Adressenregistrierungsabschnitt 33,
einen Aktualisierungs-Adressenentfernungsabschnitt 34 und
einen Flush-Ausführungsabschnitt 35.
Der Aktualisierungs-Adressenregistrierungsabschnitt 33 und
der Aktualisierungs-Adressenentfernungsabschnitt 34 können als
ein einzelnes Hardwaremodul implementiert sein.
-
Die
Systembusschnittstelle 31 dient als eine Schnittstelle
mit dem Systembus 40.
-
Der
Aktualisierungs-Adressenspeicher 32 besteht aus n Regionen A0 bis
An–1 zum
Speichern von Adressen von Daten, die in den schmutzigen Blöcken der
Cache-Speicher 20 gehalten werden. Bei dieser Ausführungsform
wird, wenn und nur wenn ein schmutziger Block Daten einer bestimmten
Adresse erhält,
die Adresse in einer bestimmten Region des Aktualisierungs-Adressenspeichers 32 gespeichert.
Von jetzt an nennen wir eine derartige Speicheradresse, die in dem
Aktualisierungs-Adressenspeicher 32 gespeichert
ist, eine Aktualisierungs-Adresse.
-
Die
Struktur einer Region des Aktualisierungs-Adressenspeichers 32 wird nun
beschrieben. Wie in 2A und 2B gezeigt,
umfasst eine Region Ai einen oder mehrere
Einträge,
von denen jeder eine Aktualisierungsadresse speichern kann. Um anzugeben,
ob ein Eintrag eine Aktualisierungsadresse aufweist oder nicht,
wird eines der folgenden Verfahren benutzt.
-
Ein
Ausnahmewert (beispielsweise 0ÇFFFFFFFF)
wird verwendet, um anzugeben, dass der Eintrag keine Aktualisierungsadresse
aufweist (siehe 2A).
-
Ein
Flag wird an jedem Eintrag angebracht, und wenn ein Eintrag keine
Aktualisierungsadresse hält, wird
das entsprechende Flag auf AN (ON) gesetzt (siehe 2B).
-
Das
Verfahren zum Bestimmen, wie viele Regionen der Aktualisierungs-Adressenspeicher
aufweisen sollte, und das Verfahren zum Abbilden jeder Region in
den Speicheradressenraum wird später
beschrieben.
-
3 zeigt
das Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts 33.
Wenn ein Prozessor 10 ein Datenstück in einem Cache-Speicher 20 aktualisiert,
gibt der Cache-Speicher 20 einen Busbefehl auf dem Systembus 40 aus.
Die Systembusschnittstelle 31 erfasst den Busbefehl und
transferiert ihn zu dem Aktualisierungs-Adressenregistrierungsabschnitt 33 (Schritt
A1). Der Aktualisierungs-Adressenregistrierungsabschnitt 33 wählt eine
Region Ai aus den Regionen A0 bis
An–1 gemäß der Speicheradresse
MU, bei dem die Daten aktualisiert sind, und dem Prozessoridentifizierer
(ID), der die Daten aktualisiert hat, aus. (Schritt A2). Der Aktualisierungs-Adressenregistrierungsabschnitt 33 findet
einen leeren Eintrag der Region Ai heraus
und speichert die Speicheradresse MU als eine Aktualisierungsadresse
in dem leeren Eintrag (Schritt A3).
-
Die
Speicheradresse MU ist in dem Busbefehl enthalten. Der Prozessoridentifizierer
kann durch eine der folgenden zwei Verfahren abhängig von der Spezifikation
des Systembusses 40 erfasst werden: 1) durch Extrahieren
des Identifizierers von dem Busbefehl; 2) durch Überwachen einiger Signalleitungen
des Systembusses 40, die zur Busarbitrierung verwendet
werden.
-
4 zeigt
das Betriebsdiagramm des Aktualisierungs-Adressenentfernungsabschnitts 34.
Wenn ein Zurückschreiben
von Daten von einem schmutzigen Block auftritt, gibt der Cache-Speicher 20 einen
Busbefehl auf dem Systembus 40 aus.
-
Die
Systembusschnittstelle 31 erfasst den Busbefehl und transferiert
ihn zu dem Aktualisierungs-Adressenentfernungsabschnitt 34 (Schritt
B1). Der Aktualisierungs-Adressenentfernungsabschnitt 34 wählt eine
Region aus den Regionen A0 bis An–1 gemäß der Speicheradresse
MW, bei der die Daten zurückgeschrieben
wurden, und dem Prozessoridentifizierer aus, von dem die Daten zurückgeschrieben
wurden (Schritt B2). Dann findet der Aktualisierungs-Adressenentfernungsabschnitt 34 den
Eintrag heraus, der die der Speicheradresse MW entsprechende Aktualisierungsadresse
aufweist, und entfernt die Aktualisierungsadresse aus dem Eintrag
(Schritt B3).
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 und
der Aktualisierungs-Adressenentfernungsabschnitt 34 müssen eine
Region auf die gleiche Art und Weise auswählen. Der Grund, warum der
Aktualisierungs-Adressenspeicher 32 aus n Regionen besteht und die beiden Abschnitte 33 und 34 eine
Region auf die gleiche Art und Weise auswählen, besteht darin, dass der
Betrieb des Aktualisierungs-Adressenentfernungsabschnitts 34 durch
Verringern der Anzahl von Einträgen,
die geprüft
werden müssen,
beschleunigt werden kann.
-
Der
Flush-Ausführungsabschnitt 35,
der eine Anforderung von einem der Prozessoren 10 empfängt, liest
und entfernt jede Aktualisierungsadresse aus dem Aktualisierungs-Adressenspeicher 32 und
gibt ein Busbefehl aus, der ein Zurückschreiben von Daten aus dem
schmutzigen Block veranlasst, der die Aktualisierungsadresse aufweist,
bis alle Aktualisierungsadressen entfernt sind.
-
5 zeigt
das Betriebsdiagramm des Flush-Ausführungsabschnitts 35.
In 5 initialisiert der Flush-Ausführungsabschnitt 35 die
Variable i auf Null (Schritt
C1). Wenn die Region Ai (die durch i angegebene Region) keine
Aktualisierungsadresse enthält
(NEIN von Schritt C2), inkrementiert der Flush-Ausführungsabschnitt 35 die
Variable i um Eins (Schritt
C4). Andernfalls (JA von Schritt C2) liest und entfernt der Flush-Ausführungsabschnitt 35 jede
Aktualisierungsadresse aus der Region Ai und
gibt einen Busbefehl aus, der ein Zurückschreiben von Daten von dem
schmutzigen Block veranlasst, der die Aktualisierungsadresse aufweist (Schritt
C3). Dann kehrt der Betrieb zu Schritt C2 zurück.
-
Der
Flush-Ausführungsabschnitt 35 beendet
den Vorgang, wenn die Variable i gleich
n wird (JA von Schritt C2).
-
Bei
der obigen Beschreibung wird eine Aktualisierungsadresse durch den
Flush-Ausführungsabschnitt 35 entfernt.
Es ist jedoch ebenfalls für
den Aktualisierungsentfernungsabschnitt 34 möglich, die
Aktualisierungsadresse zu entfernen, indem der von dem Flush-Ausführungsabschnitt 35 ausgegebene
Busbefehl erfasst wird.
-
Nun
wird beschrieben, wie die Cache-Flush-Vorrichtung 30 gemäß der ersten
Ausführungsform
bei dem Computersystem verwendet wird.
-
Initialisierung
-
Die
Prozessoren 10 initialisieren vor dem Aktivieren der Cache-Flush-Vorrichtung 30 den
Aktualisierungs-Adressenspeicher 32 und die Cache-Speicher,
sodass sie in einem konsistenten Zustand sind. Genauer gesagt löscht einer
der Prozessoren 10 alle Einträge des Aktualisierungs-Adressenspeichers 32,
und jeder Prozessor 10 macht alle Cache-Blöcke seines
eigenen Cache-Speichers durch Ausführen seiner passenden Maschinenanweisungen
ungültig.
-
Während des Normalbetriebs
-
Nach
der Initialisierung beginnen der Aktualisierungs-Adressenregistrierungsabschnitt 33 und
der Aktualisierungs-Adressenentfernungsabschnitt 34 die
oben beschriebenen Vorgänge
durchzuführen,
sodass der Aktualisierungs-Adressenspeicher 32 die
Adressen der in den schmutzigen Blöcken der Cache-Speicher 20 gehaltenen
Daten speichert. Im Gegensatz dazu existiert für jede in dem Aktualisierungs-Adressenspeicher 32 gespeicherte
Aktualisierungsadresse ein entsprechender schmutziger Block. Der
Grund wird nun beschrieben.
-
Es
sei angenommen, dass der Zustand der Cache-Speicher und der Zustand
des Aktualisierungs-Adressenspeichers konsistent sind und dass der
Prozessor 10-1 die Daten der Speicheradresse MU aktualisiert.
Nach der Aktualisierung der Daten wird erläutert, dass der Zustand der
Cache-Speicher und der Zustand des Aktualisierungs-Adressenspeichers
nach der Datenaktualisierung konsistent bleiben werden.
-
(1) In einem Fall, in
dem der Cache-Speicher 20-1 keine Daten der Speicheradresse
MU aufweist
-
Der
Cache-Speicher 20-1 gibt einen Busbefehl aus, der anfordert,
die Daten der Speicheradresse MU zu senden und die Cache-Blöcke der
anderen Cache-Speicher 20-2, 20-3 ungültig zu
machen, die die Daten der Speicheradresse MU halten.
-
Wenn
die Daten an den Cache-Speicher 20-1 geliefert werden,
speichert der Cache-Block, der von dem Cache-Controller (nicht gezeigt) gemäß der Speicheradresse
MU ausgewählt
wurde, die Daten, und der Cache-Block wird in einen schmutzigen
Block geändert.
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 empfängt der
vorhergehenden Busbefehl durch die Systembusschnittstelle 31 und
wählt eine
der Regionen A0 bis An–1 gemäß der Speicheradresse
MU und dem Prozessoridentifizierer 10-1 aus, findet einen
leeren Eintrag heraus und speichert die Speicheradresse MU in den
Eintrag.
-
(2) In einem Fall, in
dem der Cache-Speicher 20-1 die Daten der Adresse MU in
einen gemeinsam benutzten Zustand aufweist
-
Der
Cache-Speicher 20-1 gibt einen Busbefehl aus, der anfordert,
die Cache-Blöcke
der anderen Cache-Speicher 20-2, 20-3, ungültig zu
machen, die die Daten der Speicheradresse MU halten.
-
Wenn
mit einer Bestätigung
für den
vorhergehenden Busbefehl an den Cache-Speicher 20-1 geantwortet
wird, wird der Cache-Block, der die Daten hält, in einen schmutzigen Block
geändert.
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 empfängt den
vorhergehenden Busbefehl durch die Systembusschnittstelle 31 und
wählt eine
der Regionen A0 bis An–1 gemäß der Speicheradresse
MU und dem Prozessoridentifizierer 10-1 aus, findet einen
leeren Eintrag heraus und speichert die Speicheradresse MU in dem
Eintrag.
-
(3) In einem Fall, in
dem der Cache-Speicher 20 Daten aufweist, die in einem
schmutzigen Zustand zu aktualisieren sind
-
Der
Cache-Speicher 20-1 gibt keinen Busbefehl aus, und somit
führt die
Cache-Flush-Vorrichtung 30 keinen Vorgang durch. Es entsteht
jedoch kein Problem, da die Speicheradresse MU bereits in einer
der Regionen A0 bis An–1 gespeichert
wurde.
-
Bei
der obigen Beschreibung wird angenommen, dass ein Cache-Block drei
Zustände "ungültig", "gemeinsam benutzt", und "schmutzig" aufweisen kann.
Da es jedoch einige Cache-Speicher
geben kann, die vier Zustände "ungültig", "gemeinsam benutzt", "schmutzig" und "clean-exclusive" aufweisen, wird
nun beschrieben, wie die Cache-Flush-Vorrichtung auf einen derartigen
Cache-Speicher anzuwenden ist.
-
"Clean-exclusive" bedeutet, dass der
Cache-Block gültige
und ungeänderte
Daten exklusiv (nicht von irgendeinem der anderen Cache-Speicher
gemeinsam genutzt) aufweist. Wenn der Prozessor 20-1 die
Daten eines "clean-exclusive" Cache-Blocks aktualisiert,
wird der Cache-Block in einen schmutzigen Block ohne Ausgeben irgendeines
Busbefehls geändert.
Daher würde
die Cache-Flush-Vorrichtung der Erfindung beim Erfassen der Aktualisierung
von Daten versagen. Somit ist es notwendig, zu verhindern, dass
ein Cache-Block "clean-exclusive" wird. Zu diesem
Zweck sollte, wenn ein Prozessor Daten liest und ein Cache-Fehlertreffer auftritt,
die Busschnittstelle 31 eine „gemeinsam genutzt" Antwort machen.
Als Ergebnis wird der Zustand des Cache-Blocks "gemeinsam genutzt" anstatt von "clean-exclusive".
-
Wenn
die Daten eines schmutzigen Blocks bei der Speicheradresse MW des
Hauptspeichers 51 zurückgeschrieben
werden, erfasst der Aktualisierungs-Adressenentfernungsabschnitt 34 den
Busbefehl und wählt
eine der Regionen A0 bis An–1 auf
die gleiche Art und Weise wie bei dem Aktualisierungs-Adressenregistrierungsabschnitt 33 aus,
sodass die Region, die die Speicheradresse MW enthält, ausgewählt wird.
Dann findet der Aktualisierungs-Adressenentfernungsabschnitt 34 den
Eintrag, dessen Aktualisierungsadresse gleich der Speicheradresse
MW ist.
-
Wenn
der Flush-Ausführungsabschnitt 35 die
Cache-Flush-Prozedur
abschließt,
gibt es keinen schmutzigen Cache-Block in den Cache-Speichern 20 und
keine Aktualisierungsadresse in dem Aktualisierungs-Adressenspeicher 32,
wobei der gleiche Zustand wie die Initialisierung abgeschlossen
ist.
-
Obwohl
es verschiedene mögliche
Wege zum Konfigurieren der Regionen des Aktualisierungs-Adressenspeichers 32 gibt,
ist es vorzuziehen, die Konfiguration gemäß den Hauptaspekten der Cache-Speicherkonfiguration,
z. B. der Anzahl von Prozessoren, der Anzahl von Cache-Blöcken und
direktabgebildet oder teilassoziativ, zu bestimmen.
-
1. Bevorzugte Konfiguration
für einen
Direktabbildungs-Cache-Speicher ohne einen Schreibpuffer
-
Die
Größe eines
Cache-Blocks wird mit B Bytes und die Anzahl der Cache-Blöcke mit
M bezeichnet. In diesem Fall werden Daten bei der Speicheradresse
A in dem ((A/B) mod M)-ten
Cache-Block gespeichert.
-
Es
ist vorzuziehen, eine Eins-zu-Eins-Korrespondenz zwischen einem
Cache-Block und einer Region festzulegen. So sollte die Anzahl der
Regionen MÇP
sein, wobei P die Anzahl der Prozessoren ist, und jede Region sollte
einen Eintrag aufweisen. Der Aktualisierungs-Adressenregistrierungsabschnitt 33 und
der Aktualisierungs-Adressenentfernungsabschnitt 34 sollten
den ((A/B) mod M)ÇPID
auswählen,
wobei A die in dem Busbefehl enthaltene Speicheradresse und PID
der Prozessoridentifizierer ist. Es sei bemerkt, dass, wenn die Anzahl
der Prozessoren Eins ist, die obige Formel nicht den Prozessoridentifizierer
enthalten muss.
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 muss
keinen leeren Eintrag herausfinden, da die ausgewählte Region
nur einen Eintrag aufweist, von dem gewiss ist, dass er leer ist.
-
Der
Aktualisierungs-Adressenentfernungsabschnitt 34 kann die
Aktualisierungsadresse ohne Prüfen, ob
die Aktualisierungsadresse in dem Eintrag der ausgewählten Region
gleich der Speicheradresse A ist, entfernen.
-
2. Bevorzugte Konfiguration
für einen
Direktabbildungs-Cache-Speicher mit einem Schreibpuffer
-
Der
Schreibpuffer eines neuen Hochleistungsprozessors erfordert eine
kompliziertere Cache-Flush-Vorrichtung der Erfindung. Wenn ein Prozessor
mit einem Schreibpuffer Daten der Speicheradresse A aktualisiert
und der entsprechende Cache-Block C Daten der Speicheradresse B
in einem schmutzigen Zustand hält,
findet ein Datenaustausch in der folgenden Sequenz statt:
- (1) Ein Write-Line-Busbefehl für Daten
der Speicheradresse B wird erzeugt und vorübergehend in dem Schreibpuffer
gespeichert.
- (2) Ein Read-Line-with-Invalidate-Busbefehl für Daten
der Speicheradresse A wird auf dem Systembus 40 ausgegeben.
- (3) Die Daten der Speicheradresse A werden an den Cache-Block
C als eine Antwort auf den Busbefehl geliefert.
- (4) Der Write-Line-Busbefehl, der im Schreibpuffer im Wartezustand
gehalten wird, wird auf dem Systembus 40 ausgegeben, und
die Daten werden in den Hauptspeicher zurückgeschrieben.
-
Daher
scheint der Cache-Block C zwischen Schritt (2) und Schritt
(4) sowohl Daten der Speicheradresse A als auch Daten der
Speicheradresse B zu halten. Obwohl eine einfache mögliche Konfiguration
einer Cache-Flush-Vorrichtung darin besteht, die Zahl der Einträge in jeder
Region zu erhöhen,
würden
die folgenden Probleme entstehen:
- (1) Der Umfang
der Hardware wird vergrößert.
- (2) Die Leistung des Aktualisierungs-Adressenentfernungsabschnitt
ist langsamer, da die Anzahl der zu suchenden Einträge zunimmt.
-
Für einen
Direktabbildungs-Cache-Speicher mit einem Schreibpuffer gibt es
zwei effiziente Wege zum Konfigurieren einer Cache-Flush-Vorrichtung.
-
Konfiguration 2-A
-
Die
Konfiguration des Aktualisierungs-Adressenspeichers 32 ist
die gleiche wie die bei der bevorzugten Konfiguration für einen
Direktabbildungs-Cache-Speicher ohne einen Schreibpuffer.
-
Der
Betrieb des Aktualisierungs-Adressenregistrierungsabschnitts 33,
wie in 6 dargestellt, ist der gleiche. Es sei jedoch
bemerkt, dass, wenn die Speicheradresse MU in dem Eintrag der ausgewählten Region (D3)
zu speichern ist, es manchmal geschieht, dass der Eintrag bereits
eine gültige
aktualisierte Adresse aufgrund des Schreibpuffers aufweist. Sogar
wenn das der Fall ist, überschreibt
der Aktualisierungs-Adressenregistrierungsabschnitt 33 einfache
die Speicheradresse MU in den Eintrag.
-
Der
Betrieb des Aktualisierungs-Adressenentfernungsabschnitt 34,
wie in 7 dargestellt, unterscheidet sich geringfügig an dem
Punkt, in dem er die Aktualisierungsadresse von dem Eintrag nur
entfernt, wenn die Aktualisierungsadresse des Eintrags gleich der
Speicheradresse MW ist (E3, E4, E5).
-
Mit
Bezug auf 8 wird ein Beispiel des Betriebs
der Cache-Flush-Vorrichtung und des Cache-Speichers erläutert. Bei
diesem Beispiel gibt es nur einen Prozessor 10, der Daten
D0 bei der Speicheradresse 0, Daten D1 bei der Speicheradresse BÇM und
Daten D2 bei der Speicheradresse 2BÇM in dieser Reihenfolge sequentiell
schreibt. Hier bezeichnet das Symbol B die Größe des Cache-Blocks und M die
Anzahl der Cache-Blöcke.
Es wird angenommen, dass der Anfangszustand des 0-ten Cache-Blocks
ungültig
ist, und daher weist der Eintrag der Region A0 keine
gültige
Aktualisierungsadresse auf.
- (1) Wenn der Prozessor 10 D0
bei der Speicheradresse 0 schreibt, hält der 0-te Cache-Block nicht
die Daten der Speicheradresse 0. So wird ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse
0 auf dem Systembus 40 ausgegeben.
- (2) Wenn Daten der Speicheradresse 0 als eine Antwort auf den
obigen Busbefehl geliefert werden, speichert der Aktualisierungs-Adressenregistrierungsabschnitt 33 die
Speicheradresse 0 als eine Aktualisierungsadresse in dem Eintrag
der Region A0. Der Prozessor 10 schreibt
D0 in den 0-ten
Cache-Block.
- (3) Wenn der Prozessor 10 D1 bei der Speicheradresse
BÇM schreibt,
hält der
0-te Cache-Block Daten D0 im schmutzigen Zustand. Ein Write-Line-Busbefehl
für die
Daten D0 wird erzeugt und im Schreibpuffer im Wartezustand gehalten.
Ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse BÇM wird
auf dem Systembus 40 ausgegeben.
- (4) Der Aktualisierungs-Adressenregistrierungsabschnitt 33 überschreibt
die Speicheradresse BÇM
als eine Aktualisierungsadresse in dem Eintrag der Region A0. Wenn die Daten der Speicheradresse BÇM geliefert
werden, schreibt der Prozessor 10 Daten D1 in den 0-ten
Cache-Block.
- (5) Vor dem Ausgeben des Write-Line-Busbefehls für die Schreibadresse
0 schreibt der Prozessor 10 die Daten D2 bei der Speicheradresse
2BÇM.
Ein weiterer Write-Line-Busbefehl wird für Daten D2 erzeugt und im Schreibpuffer
im Wartezustand gehalten. Ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse
2BÇM
wird auf dem Systembus 40 ausgegeben. Als Ergebnis sind
zwei Write-Line-Busbefehle in dem Schreibpuffer im Wartezustand.
- (6) Der Aktualisierungs-Adressenregistrierungsabschnitt 39 überschreibt
die Speicheradresse 2BÇM
als eine Aktualisierungsadresse in dem Eintrag der Region A0. Wenn die Daten der Speicheradresse 2BÇM geliefert
werden, schreibt der Prozessor 10 Daten D2 in den 0-ten
Cache-Block.
- (7) Der Write-Line-Befehl für
die Speicheradresse 0, der in dem Schreibpuffer im Wartezustand
ist, wird nun an den Systembus 40 ausgegeben. Da der Eintrag
der Region A0 2BÇM aufweist, was von der Speicheradresse
0 unterschiedlich ist, führt
der Aktualisierungs-Adressenentfernungsabschnitt 34 keinen
Vorgang durch.
- (8) Der Schreibanforderungsbefehl für die Speicheradresse BÇM, der
im Schreibpuffer im Wartezustand ist, wird nun an den Systembus 40 ausgegeben.
Da der Eintrag der Region A0 2BÇM aufweist,
was von der Speicheradresse BÇM
unterschiedlich ist, führt
der Aktualisierungs-Adressenentfernungsabschnitt 34 keinen
Vorgang durch.
-
Konfiguration 2-B
-
Jede
Region sollte einen Eintrag und einen Zähler haben, um Zahl Aktualisierungsadressen
in Übereinstimmung
mit der Region zu halten. Der Eintrag und der Zähler werden wie folgt verwendet.
- (1) Zählerwert
Null bedeutet, dass keine in der Region gespeicherte Aktualisierungsadresse
existiert.
- (2) Wenn der Aktualisierungs-Adressenregistrierungsabschnitt 33 die
Aktualisierung einer Region entsprechender Daten erfasst, schreibt
der Aktualisierungs-Adressenregistrierungsabschnitt 33 die
Aktualisierungsadresse in den Eintrag der Region und inkrementiert
den Zähler
um Eins.
- (3) Wenn der Aktualisierungs-Adressenentfernungsabschnitt 34 das
Zurückschreiben
von Daten von einem schmutzigen Block erfasst, dekrementiert der
Aktualisierungs-Adressenentfernungsabschnitt 34 den
Zähler der
entsprechenden Region um Eins.
- (4) Wenn der Zähler
jeder Region einen Wert ungleich Null aufweist, gibt der Flush-Ausführungsabschnitt 35 einen
Befehl zum Anfordern des Zurückschreibens
von Daten von dem schmutzigen Block aus, der durch die in dem Eintrag
der Region gespeicherten Aktualisierungsadresse spezifiziert ist.
-
Eine
Region Ai, wie in 9 dargestellt, umfasst einen
4-Bit-Zähler
sowie auch einen 32-Bit-Eintrag.
-
Der
Betrieb des Aktualisierungs-Adressenregistrierungsabschnitts 33 wird,
wenn ein Datenaktualisierungsbefehl erfasst wird, in 10 gezeigt. 11 zeigt
den Betrieb des Aktualisierungsentfernungsabschnitts 34,
wenn ein Datenrückschreibbefehl
erfasst wird. 12 zeigt den Betrieb des Flush-Ausführungsabschnitts 35.
-
In 13 wird
ein Beispiel des Betriebs der Cache-Flush-Vorrichtung und des Cache-Speichers
erläutert.
Bei diesem Beispiel gibt es nur einen Prozessor 10, der
Daten D0 bei der Speicheradresse 0, Daten D1 bei der Speicheradresse
BÇM und
Daten D2 bei der Speicheradresse 2BÇM in dieser Reihenfolge schreibt. Es
wird angenommen, dass der Anfangszustand des 0-ten Cache-Blocks
ungültig
ist, und daher weist der Eintrag der Region A0 keine
gültige
Aktualisierungsadresse auf.
- (1) Wenn der Prozessor 10 D0
bei der Speicheradresse 0 schreibt, hält der 0-te Cache-Block nicht
die Daten der Speicheradresse 0. So wird ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse
0 auf den Systembus 40 ausgegeben.
- (2) Wenn Daten der Speicheradresse 0 als eine Antwort auf den
obigen Busbefehl geliefert werden, speichert der Aktualisierungs-Adressenregistrierungsabschnitt 33 die
Speicheradresse 0 als eine Aktualisierungsadresse in dem Eintrag
der Region A0 und inkrementiert den Zähler auf
Eins. Der Prozessor 10 schreibt D0 in den 0-ten Cache-Block.
- (3) Wenn der Prozessor 10 D1 bei der Speicheradresse
BÇM schreibt,
hält der
0-te Cache-Block Daten D0 im schmutzigen Zustand. Ein Write-Line-Busbefehl
für die
Daten D0 wird erzeugt und im Schreibpuffer im Wartezustand gehalten.
Ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse BÇM wird
auf dem Systembus 40 ausgegeben.
- (4) Der Aktualisierungs-Adressenregistrierungsabschnitt 33 überschreibt
die Speicheradresse BÇM
als eine Aktualisierungsadresse in dem Eintrag der Region A0 und inkrementiert den Zähler auf zwei. Wenn die Daten
der Speicheradresse BÇM
geliefert werden, schreibt der Prozessor 10 die Daten D1
in den 0-ten Cache-Block.
- (5) Vor dem Ausgeben des Write-Line-Busbefehls für die Speicheradresse
0 wird der Prozessor 10 Daten D2 bei der Speicheradresse
2BÇM
schreiben. Ein weiterer Write-Line-Busbefehl für Daten D2 wird erzeugt und
im Schreibpuffer im Wartezustand gehalten. Ein Read-Line-with-Invalidate-Busbefehl für die Speicheradresse
2BÇM
wird auf dem Systembus 40 ausgegeben. Als Ergebnis werden
zwei Write-Line-Busbefehle im Schreibpuffer im Wartezustand gehalten.
- (6) Der Aktualisierungs-Adressenregistrierungsabschnitt 33 überschreibt
die Speicheradresse 2BÇM
als eine Aktualisierungsadresse in dem Eintrag der Region A0 und inkrementiert den Zähler auf drei. Wenn die Daten
der Speicheradresse 2BÇM
geliefert werden, schreibt der Prozessor 10 die Daten D2
in den 0-ten Cache-Block.
- (7) Der Write-Line-Befehl für
die Speicheradresse 0, der im Schreibpuffer im Wartezustand gehalten
wird, wird nun an den Systembus 40 ausgegeben. Der Aktualisierungs-Adressenentfernungsabschnitt 34 dekrementiert
den Zähler
der Region A0 auf zwei.
- (8) Der Write-Line-Befehl für
die Speicheradresse BÇM,
der im Schreibpuffer im Wartezustand gehalten wird, wird nun an
den Systembus 40 ausgegeben. Der Aktualisierungs-Adressenentfernungsabschnitt 34 dekrementiert
den Zähler
der Region A0 auf Eins.
-
3. Bevorzugte Konfiguration
für einen
Direktabbildungs-Cache-Speicher
ohne einen Schreibpuffer und mit mehr als einen Prozessor
-
Die
Anzahl der Prozessoren wird mit P bezeichnet. Die Cache-Blockgröße wird
mit B (Bytes) und die Anzahl der Cache-Blöcke
mit M bezeichnet.
-
In
diesem Fall kann jedes der beiden nachstehenden Beispiele benutzt
werden.
-
Konfiguration 3-A
-
Die
Anzahl der Regionen wird dazu gebracht, gleich PÇM zu sein, und jede Region
umfasst einen Eintrag. Es gibt eine Eins-zu-Eins Korrespondenz zwischen
einem Cache-Block eines Prozessors und einer Region.
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 und
der Aktualisierungs-Adressenentfernungsabschnitt 34 sind
erforderlich, um die Region gemäß dem Prozessoridentifizierer
und der Speicheradresse auszuwählen.
Da jedes Teil der Cache-Flush-Vorrichtung
fast der gleiche wie der der bevorzugten Konfiguration ist, wird
die ausführliche
Erläuterung
weggelassen.
-
Konfiguration 3-B
-
Der
Anzahl der Regionen wird dazu gebracht, gleich M zu sein, und jede
Region umfasst P Einträge. Eine
Region Ai wird dazu gebracht, dem i-ten Cache-Block jedes Prozessors 10 zu
entsprechen.
-
Wenn
eine Datenaktualisierung oder ein Datenrückschreibbefehl erfasst wird,
wird eine Region gemäß der Speicheradresse
jedoch nicht gemäß dem Prozessoridentifizierer
ausgewählt.
Daher ist der Prozessoridentifizierer nicht erforderlich, um eine
Region auszuwählen,
während
er bei der Konfiguration 3-A erforderlich ist. Somit ist diese Konfiguration
in einem Fall wirksam, wobei es schwierig ist, den Prozessoridentifizierer
aufgrund der Systembusspezifikation zu kennen.
-
Es
entsteht jedoch ein Problem, weil die Konfiguration 3-B nicht auf
Prozessoren mit einem Schreibpuffer angepasst werden kann. Für einen
derartigen Fall sollte die Konfiguration 3-A oder die später zu beschreibenden
zweiten bis vierten Ausführungsformen
benutzt werden.
-
4. Bevorzugte Konfiguration
für einen
N-Wegteilassoziativen Cache-Speicher ohne einen Schreibpuffer
-
In
diesem Fall bilden N Cache-Blöcke
eine Gruppe, und Daten werden an der Adresse A in einem Cache-Block
in der ((a/B) mod (M/N))-ten Gruppe gespeichert. Hier bezeichnet
B die Cache-Blockgröße (in Bytes) und
M die Anzahl der Cache-Blöcke.
-
Konfiguration 4-A
-
Die
Anzahl der Regionen wird dazu gebracht, gleich M/N zu sein, und
jede Region wird dazu gebracht, um aus N Einträgen zu bestehen. Daten an der
Adresse a werden in der ((a/B)
mod (M/N))-ten Region gespeichert. Dieses Verfahren weist jedoch
ein Problem auf, weil es nicht auf einem Prozessor mit einem Schreibpuffer
angewendet werden kann. Für
einen Prozessor, der sowohl einen teilassoziativen Cache-Speicher als auch
einen Schreibpuffer aufweist, sollten die zweiten bis vierten Ausführungsformen
benutzt werden.
-
Konfiguration 4-B
-
In
einem Fall, in dem der teilassoziative Cache-Speicher 20,
wenn einer seiner Cache-Blöcke
Daten speichert, einige Steuersignalleitungen aktiviert, um anzugeben,
welcher Weg der Cache-Blöcke
die Daten speichert, kann der teilassoziative Cache-Speicher als
ein Direktabbildungs-Cache-Block
behandelt werden. In diesem Fall sind die Konfigurationen 2-A und
2-B für
einen Prozessor mit einem Schreibpuffer wirksam.
-
Wenn
der Prozessor 10 erfordert, dass die Cache-Flush-Vorrichtung 30 die
Cache-Flush-Prozedur durchführt,
gibt der Flush-Ausführungsabschnitt 35 Busbefehle
aus, wobei jeder von diesen ein Zurückschreiben von Daten von einem
schmutzigen Block verursacht.
-
Nun
wird der Busbefehl, der verwendet werden kann, um Daten von einem
schmutzigen Block zurückzuschreiben,
erläutert.
-
Bei
vielen Systemen kann ein Read-Line-Befehl verwendet werden. Ein
Read-Line-Befehl fordert bei derartigen Systemen die neuesten Daten
der spezifizierten Adresse an. Wenn ein Cache-Speicher die Daten in
dem schmutzigen Zustand hält,
macht der Cache-Speicher eine Antwort mit den Daten. Dann beobachtet der
Hauptspeichercontroller 50 die Antwort und speichert die
Daten in dem spezifizierten Abschnitt des Hauptspeichers. Bei einigen
anderen Systemen antwortet, wenn ein Read-Line-Befehl ausgegeben
wird und ein Cache-Speicher die Daten in dem schmutzigen Zustand
hält, der
Cache-Speicher mit einem Wiederholungsbefehl (der erfordert, einen
Read-Line-Befehl
später
erneut auszugeben). Dann gibt der Cache-Speicher einen Write-Line-Befehl an
den Systembus aus, um die Daten von dem schmutzigen Block in den
Hauptspeicher zurück
zu schreiben. Wenn ein Read-Line-Befehl später ausgegeben wird, antwortet
nicht der Cache-Speicher sondern der Hauptspeicher.
-
Es
gibt jedoch eine andere Art von Computersystemen, bei dem ein schmutziger
Block in dem schmutzigen Zustand verbleibt, sogar wenn ein Read-Line-Befehl
für den
schmutzigen Block ausgegeben wurde. Es gibt zwei wirksame Wege für ein derartiges
System.
-
Konfiguration 5-A
-
Ein
Weg besteht darin, dass sowohl der Read-Line-with-Invalidate-Befehl
als auch der Write-Line-Befehl verwendet werden. Die Cache-Flush-Vorrichtung 30 gibt,
wenn der Cache-Flush
durchgeführt
wird, einen Read-Line-with-Invalidate-Befehl für einen schmutzigen Block aus,
und gibt dann zum Ungültigmachen
des Inhalts des schmutzigen Blocks einen Write-Line-Befehl aus,
sodass Daten, die zuvor gelesen werden, in den Hauptspeicher 51 zurück geschrieben
werden. Das vorhergehende Verfahren erfordert, dass die Cache-Flush-Vorrichtung 30 eine
volle Funktionalität
eines Cache-Speichers 20 zum
Speichern der schmutzigen Blocks aufweist, um die Datenkohärenz beizubehalten.
-
Konfiguration 5-B
-
Der
andere Weg besteht darin, dass der Prozessor 10 die in
dem Aktualisierungs-Adressenspeicher 32 gespeicherte Aktualisierungsadresse
liest und geeignete Anweisungen zum Zurückschreiben von Daten gemäß der Leseadressen
ausführt.
Für diesen
Zweck liefert ein Aktualisierungs-Adressenleseabschnitt 37 den Prozessor 10 eine
Funktion zum sequentiellen Transferieren aller der in dem Aktualisierungs-Adressenspeicher 32 gespeicherten
Aktualisierungs-Adressen. Der Aktualisierungs-Adressenleseabschnitt 37 liefert
eine erneute Aktualisierungsadresse jedes Mal, wenn die Aktualisierungsadresse
von dem Prozessor 10 gelesen wird. Wenn eine Mehrzahl von
Aktualisierungsadressen parallel von dem Prozessor gelesen werden
können, führt es zu
einem Beschleunigen der Prozedur.
-
Der
Prozessor 10 verwendet die Adresse, um den Inhalt des zugeordneten
schmutzigen Blocks in den Hauptspeicher zurückzuschreiben. Zu dieser Zeit
verwendet der Prozessor 10 eine Cache-Anweisung oder liest
von dem Hauptspeicher Daten an einer anderen Adressen, die auf den
zugeordneten schmutzigen Block fallen, sodass Austausch von Daten
auftritt. Durch Wiederholen dieses Vorgangs bis keine Aktualisierungsadresse
verbleibt, werden die Daten aller schmutzigen Blöcke in den Hauptspeicher zurückgeschrieben.
-
Die
Konfiguration 5-B weist einen Vorteil auf, dass die Hardware einfach
ist, da die Cache-Flush-Vorrichtung 30 nicht die Datenkohärenz verwalten
muss. Ferner kann im Vergleich zu dem herkömmlichen Verfahren, bei dem
der Prozessor 10 alle Prozesse durch eine Software ausführt, der
schmutzige Block effizient erfasst werden, und somit kann der Cache-Flush-Prozess schneller
durchgeführt
werden.
-
Der
Cache-Flush-Vorgang unter Konfiguration 5-B wird in 15 gezeigt.
Bei Schritt Ha1 wird ein Parameter i zum
Angeben der Region als 0 initialisiert. Bei Schritt Ha2 wird geprüft, ob eine
Aktualisierungsadresse in der Region Ai gespeichert ist. Falls JA
bei Schritt Ha2, wird eine in der Region Ai gespeicherte Aktualisierungsadresse
bei Schritt Ha3 aufgerufen, und Daten der zugeordneten Aktualisierungsadresse
werden bei Schritt Ha4 zurück
geschrieben, und dann kehrt der Ablauf zu dem Schritt Ha2 zurück.
-
Falls
NEIN bei Schritt Ha2, wird der Parameter i bei Schritt Ha5 um Eins inkrementiert,
und es wird bei Schritt Ha6 geprüft,
ob der Parameter i gleich n wird, der Anzahl der Regionen.
Falls NEIN bei Schritt Ha6, kehrt der Ablauf zu dem Schritt Ha2
zurück.
Falls bei JA bei Schritt Ha6, ist der Vorgang abgeschlossen.
-
Weitere
Ausführungsformen
werden nun beschrieben. Bei der nachstehenden Beschreibung werden Abschnitte,
die denen der ersten Ausführungsform
entsprechen, die gleichen Bezugsziffern gegeben, und die Beschreibung
der entsprechenden Abschnitte wird weggelassen.
-
Wenn
die erforderliche Zeit einer von der Cache-Flush-Vorrichtung 30 gemäß dieser
Ausführungsform durchgeführten Cache-Flush-Prozedur
und der einer herkömmlichen
Cache-Flush-Prozedur
verglichen wird, unterscheiden sie sich in dem Fall, in dem das
schmutzige Blockverhältnis
(das Verhältnis
der Anzahl von schmutzigen Blöcken
und der Anzahl der gesamten Cache-Blöcke) hoch ist, nicht erheblich.
Das ist so, weil die Rückschreibdaten
von den schmutzigen Blöcken
einen dominierenden Teil der Verarbeitungszeit belegen.
-
Andererseits
wird, wenn das schmutzige Blockverhältnis niedrig ist (beispielsweise
10%), der erstere viel kürzer,
während
der letztere nicht verringert wird, da die Suche nach schmutzigen
Blöcken
einen dominierenden Teil belegt.
-
Die
Ausführungsform
weist einen weiteren Vorteil auf, dass bei dem Ende der Cache-Flush-Prozedur die
Cache-Blöcke,
die am Anfang der Cache-Flush-Prozedur schmutzig waren, verbleiben,
so dass sie gültige Daten
aufweisen.
-
Die
Ausführungsform
weist noch einen weiteren Vorteil auf, dass die Cache-Flush-Prozedur
und die normale Datenverarbeitung durch die Prozessoren 10 parallel
ausgeführt
werden können,
was bei den fünften und
sechsten Ausführungsformen
beschrieben wird.
-
Zweite Ausführungsform,
nicht von der beanspruchten Erfindung abgedeckt
-
Eine
zweite alternative Ausführungsform
wird nun beschrieben. 16 zeigt die Struktur eines
Computersystems gemäß der zweiten
alternativen Ausführungsform.
Die Struktur des Computers, auf den die Cache-Flush-Vorrichtung 30 angewendet
wird, ist die gleiche wie bei der ersten Ausführungsform.
-
Die
Cache-Flush-Vorrichtung 30 umfasst die Systembusschnittstelle 31,
den Aktualisierungs-Adressenspeicher 32 (Regionen A0 bis An–1),
den Aktualisierungs-Adressenregistrierungsabschnitt 33,
den Flush-Ausführungsabschnitt 35 und
einen Eintragrückbeanspruchungsabschnitt 36.
-
Der
Aktualisierungs-Adressenspeicher 32 ist aus n Regionen (Regionen A0 bis
An–1)
zum Speichern von Adressen aller schmutzigen Blöcke zusammengesetzt. Bei dieser
alternativen Ausführungsform
werden die Adressen aller schmutzigen Blöcke in dem Aktualisierungs-Adressenspeicher 32 gespeichert.
Der Aktualisierungs-Adressenspeicher 32 kann ebenfalls
Adressen halten, wobei deren zugeordneter Cache- Block nicht schmutzig ist. Der Grund
dafür ist,
dass der Aktualisierungs-Adressenentfernungsabschnitt 34 der
ersten Ausführungsform
von der Konfiguration dieser Ausführungsform weggelassen wird.
Dies ist der Hauptunterschied zu der ersten Ausführungsform. Wie oben erwähnt, wird
diese Ausführungsform
nicht durch die beanspruchte Erfindung abgedeckt, sondern ist für das Verständnis der
Ausführungsformen
3 und 4 nützlich.
-
Die
Struktur der Region Ai wird nun beschrieben. Um anzugeben, ob der
in jedem Eintrag der Region Ai gespeicherte Wert gültig ist,
kann das bei der ersten Ausführungsform
beschriebene Verfahren benutzt werden. Es ist jedoch vorzuziehen,
das vorliegende Verfahren zu benutzen, D. h., dass eine Mehrzahl
von Einträgen,
die eine Region bilden, als ein zyklischer Puffer verwendet wird.
Ein Lesezeiger (L-Zeiger bzw. ein R-Pointer) und ein Schreibzeiger
(S-Zeiger bzw. ein W-Pointer) werden bereitgestellt. Dann werden
die Aktualisierungsadressen angeordnet, ohne in den Einträgen zwischen
dem L-Zeiger und dem S-Zeiger mit Ausnahme der durch den S-Zeiger
gekennzeichneten Eintrags gespeichert zu werden. Wenn der S-Zeiger und der L-Zeiger
miteinander koinzidieren, ist es unklar, ob alle Einträge leer
oder ob alle Einträge
mit Aktualisierungsadressen gefüllt
sind. Um die obigen Fälle
zu identifizieren, wird eine Region Ai mit einem Belegt-Flag, einem
Einbit-Flag, ausgestattet. Dieses Verfahren ist vorteilhaft, um
die Leistung des Aktualisierungs-Adressenregistrierungsabschnitts 33 und
der des Flush-Ausführungsabschnitt 35 zu
verbessern.
-
17 ist
eine konzeptionelle Ansicht, die die Struktur einer Region gemäß dieser
Ausführungsform zeigt.
Der L-Zeiger kennzeichnet die Aktualisierungs-Adresse, die zuletzt
registriert wurde. Der S-Zeiger kennzeichnet die Position, bei der
eine neue Aktualisierungsadresse registriert werden muss. Das Belegt-Flag
ist nur AN, wenn jeder Eintrag eine gültige Aktualisierungsadresse
enthält.
-
Der
Aktualisierungs-Adressenregistrierungsabschnitt 33 ist
der gleiche wie der der ersten Ausführungsform.
-
Wenn
der Aktualisierungs-Adressenregistrierungsabschnitt 33 eine
Aktualisierungsadresse in eine bestimmte Region schreibt und erfasst,
dass es keinen leeren Eintrag gibt, der zu der Region gehört, wählt der Eintragrückbeanspruchungsabschnitt 36 einen
beliebigen Eintrag in dem Adressenregistrierungsabschnitt 33 aus
und gibt einen Busbefehl zum Rückschalten
des Inhalts des schmutzigen Blocks des ausgewählten Eintrags aus. Dann wird
der ausgewählte
Eintrag verwendet, um die neue Aktualisierungsadresse zu speichern. Es
sei bemerkt, dass es am wirksamsten ist, dass der Eintragrückbeanspruchungsabschnitt 36 einen
Eintrag auf die oben geschriebene Weise erneut beansprucht. Der
Neubeanspruchungsvorgang kann jedoch etwas früher durchgeführt werden,
wenn ein oder einige leere Einträge
existieren.
-
18 ist
ein Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts 33 und
des Eintragrückbeanspruchungsabschnitts 36,
wenn ein eine Datenaktualisierung in dem Cache-Speicher angebender
Befehl von dem Aktualisierungs-Adressenregistrierungsabschnitt 33 erfasst
wird. Wenn der Befehl, der die Datenaktualisierung angibt, bei Schritt
I1 erfasst wird, wird die entsprechende Region Ai gemäß dem Prozessoridentifizierer
in der Aktualisierungsadresse bei Schritt I2 identifiziert. Bei
Schritt I3 wird das Belegt-Flag der Region Ai geprüft. Falls
AUS bei Schritt I3, springt der Vorgang zu Schritt I8. Falls AN
bei Schritt I3, verwendet der Eintragrückbeanspruchungsabschnitt 36 die
Adresse in der durch den L-Zeiger der Region Ai gekennzeichneten
Eintrag, um einen Busbefehl auszugeben, um die Daten in dem schmutzigen
Block in den Hauptspeicher bei Schritt I4 zurückzuschreiben. Bei Schritt
I5 wird geprüft,
ob der L-Zeiger
den letzten Eintrag kennzeichnet oder nicht. Falls NEIN bei Schritt
I5, wird der L-Zeiger um Eins bei Schritt I6 inkrementiert. Falls JA
bei Schritt I5, wird der L-Zeiger eingestellt, um den ersten Eintrag
bei Schritt I7 zu kennzeichnen. Bei Schritt I8 wird die Aktualisierungsadresse
in dem durch den S-Zeiger gekennzeichneten Eintrag registriert.
-
Bei
Schritt I9 wird bestimmt, ob der S-Zeiger den letzten Eintrag kennzeichnet
oder nicht. Falls NEIN bei Schritt I9, wird der S-Zeiger um Eins
bei Schritt I10 inkrementiert. Falls JA bei Schritt I10, wird der
S-Zeiger eingestellt, um den ersten Eintrag bei Schritt I11 zu kennzeichnen.
Bei Schritt I12 wird die Gleichheit des S-Zeigers und des L-Zeigers geprüft. Falls
JA, wird das Belegt-Flag
bei Schritt I13 angeschaltet, und dann endet der Vorgang. Falls
NEIN, endet der Vorgang ohne Ändern
des Belegt-Flag.
-
Der
Betrieb des Flush-Ausführungsabschnitts 35 wird
in 19 gezeigt. Der Flush-Ausführungsabschnitt 35,
der eine Cache-Flush-Anfordnung empfängt, die von dem Prozessor 10 ausgegeben
wurde, ruft alle in der Aktualisierungsadresse 32 gespeicherten
Adressen ab (sodass die Leseadressen von dem Aktualisierungs-Adressenspeicher 32 entfernt
werden) und gibt Busbefehl aus, wobei jeder von diesen die Daten
eines schmutzigen Blocks zurückschreibt.
-
Bei
dieser alternativen Ausführungsform
werden die effektiven Aktualisierungsadressen nur in Einträgen des
durch den L-Zeiger und S-Zeiger jeder Region Ai gekennzeichneten
Bereichs. Daher können
die Aktualisierungsadressen effizient abgerufen werden.
-
Der
Betrieb der Cache-Flush-Vorrichtung 30 gemäß dieser
Ausführungsform
wird nun beschrieben.
-
Initialisierung
-
Der
Prozessor 10 initialisiert die Cache-Flush-Vorrichtung und den
Zustand des Cache-Speichers 20, um den Zustand des Cache-Speichers 20 und
den Zustand des Aktualisierungs-Adressenspeichers 32 der
Cache-Flush-Vorrichtung 30 vor
dem Aktivieren der Cache-Flush-Vorrichtung 30 anzupassen.
Die Initialisierung wird durchgeführt, sodass alle Cache-Blöcke invalidiert
werden. Obwohl dies nicht zwingend erforderlich ist, wird es jedoch
hinsichtlich der Leistung empfohlen, dass der L-Zeiger und der S-Zeiger
jeder Region eingestellt werden, um den gleichen Eintrag zu kennzeichnen.
-
Normalbetrieb der Cache-Flush-Vorrichtung 30
-
Nachdem
der Prozessor 10 die Initialisierung durchführt, führt jeder
Abschnitt der Cache-Flush-Vorrichtung 30 vorbestimmte Vorgänge durch,
sodass die Adressen aller schmutzigen Blöcke in dem Aktualisierungs-Adressenspeicher 32 gespeichert
werden. Wenn die Daten eines bestimmten schmutzigen Blocks jedoch
in den Hauptspeicher 51 zurückgeschrieben werden, werden
keine der in den Regionen A0 bis An–1 gespeicherten
Adressen entfernt. Daher ist es unwahrscheinlich, dass ein Fall
auftritt, bei dem sich ein schmutziger Block in einen nicht schmutzigen
Block ändert,
während
die zugeordnete Adresse in dem Aktualisierungs-Adressenspeicher 32 verbleibt.
-
Wenn
der Aktualisierungs-Adressenregistrierungsabschnitt 33 erfasst,
dass Daten an dem Cache-Speicher 20 aktualisiert werden,
wählt der
Aktualisierungs-Adressenregistrierungsabschnitt 33 eine
der Regionen A0 bis An–1 gemäß der Aktualisierungsadresse
und dem Prozessoridentifizierer 10 aus. Wenn kein leerer
Eintrag in der Region existiert, d. h., das Belegt-Flag AN ist,
gibt der Eintragrückbeanspruchungsabschnitt 36 an
den Systembus 40 einen Busbefehl aus, um die Daten des
schmutzigen Blocks zurückzuschreiben,
der die in dem durch den L-Zeiger gekennzeichneten Eintrag gespeicherten
Adresse aufweist. Wenn der schmutzige Block mit der Adresse existiert,
werden die Daten tatsächlich
in den Hauptspeicher 51 zurück geschrieben. Wenn kein schmutziger
Block mit der Adresse existiert, wird kein Vorgang durchgeführt. Da
der vorhergehende Vorgang gewährleistet,
dass kein der Adresse entsprechender schmutziger Block existiert,
kann der durch den L-Zeiger gekennzeichnete Eintrag verwendet werden,
um die Aktualisierungsadresse zu halten.
-
Wenn
die Daten des schmutzigen Blocks in den Hauptspeicher 51 während der
Normal-Datenverarbeitung des Prozessors 10 zurückgeschrieben
werden, führt
die Cache-Flush-Vorrichtung 30 keinen
Vorgang durch.
-
Cache-Flush-Betrieb durch
die Cache-Flush-Vorrichtung 30
-
Wenn
der Prozessor 10 anfordert, dass die Cache-Flush-Vorrichtung 30 den
Cache-Flush startet, ruft der Flush-Ausführungsabschnitt 35 alle
in dem Aktualisierungs-Adressenspeicher 32 gespeicherten
Adressen ab und gibt Busbefehle aus, von denen jeder die Daten des
schmutzigen Blocks zurückschreibt.
-
Als
Ergebnis kehren der Zustand des Cache-Speichers und der Zustand
der Cache-Flush-Vorrichtung 30 in den Anfangszustand zurück.
-
Im
Vergleich mit der ersten Ausführungsform
ist diese alternative Ausführungsform
imstande, die Adressen und die Regionen flexibler zuzuordnen. D.
h., dass bei der ersten Ausführungsform
die Regionen des Aktualisierungs-Adressenspeichers 32 der
Struktur des Cache-Speichers 20 ähneln sollten. Bei der zweiten
alternativen Ausführungsform
ist diese Einschränkung
jedoch nicht notwendig, und eine Cache-Flush-Vorrichtung der zweiten
alternativen Ausführungsform
kann über
verschiedene Cache- Speicherarchitekturen
anwendbar sein, soweit wie sich die Busspezifikation nicht verändert.
-
Beispiele
des Zuordnens der Adressen und der Regionen werden nun beschrieben.
-
Konfiguration 6
-
Es
sei angenommen, dass der Cache-Speicher 20 eine Direktabbildung
und die Anzahl der Prozessoren p ist. In diesem Fall kann eine Region
an dem i-ten Cache-Block aller Prozessoren 10 bereitgestellt
werden. Unter der Annahme, dass die Anzahl der Cache-Blöcke in einem
Cache-Speicher 20 gleich M ist, ist die Anzahl n der Regionen gleich M.
-
Obwohl
die ersten Ausführungsformen
p oder mehr Einträge
zum Bilden einer Region erfordern, kann die Anzahl von Einträgen bei
dieser Ausführungsform
verringert werden. In diesem Fall entsprechen p Cache-Blöcke einer
Region, wobei die Anzahl von Einträgen etwa p/2 sein kann, da
die Wahrscheinlichkeit, mit der ein bestimmter Cache-Block schmutzig
ist, gewöhnlicherweise
von 20% bis 50% reicht. Außerdem
ist kein besonderer Mechanismus, um mit einem Schreibpuffer des
Prozessors 10 fertig zu werden, aufgrund des später beschriebenen
Grunds erforderlich.
-
Konfiguration 7
-
Bei
einem extremen Fall kann die Anzahl von Regionen Eins sein. Da die
Anzahl der Cache-Blöcke pÇM ist,
wird veranlasst, dass die Anzahl von Einträgen von pÇM/4 bis pÇM/2 reicht. Die Konfiguration
des Cache-Speichers 20 kann eine Direktabbildung, ein teilzugeordnetes,
ein vollzugeordnetes Verfahren oder jedes andere Schema sein.
-
Bei
dieser alternativen Ausführungsform
gibt die Cache-Flush-Vorrichtung 30 keinen
Busbefehl aus, wenn ein leerer Eintrag existiert. Wenn kein leerer
Eintrag existiert, wird ein Busbefehl ausgegeben, um ein Zurückschreiben
von Daten eines schmutzigen Blocks zu veranlassen.
-
Wenn
die Anzahl der Regionen dazu gebracht wird, eins zu sein, besteht
der Vorteil darin, dass die Hardware zum Auswählen der Region gemäß dem Prozessoridentifizierer
und der Aktualisierungsadresse weggelassen werden kann. Es führt jedoch
zu einer schlechten Leistung, da es dazu neigt, ein unnötiges Zurückschreiben
von Daten eines schmutzigen Blockes zu veranlassen.
-
Konfiguration 8
-
Ein
Fall, bei dem der Cache-Speicher 20 N-Weg-teilassoziativ,
die Anzahl von Cache-Blöcken
M und die Anzahl von Prozessoren p ist, wird nun beschrieben. Es
sei angenommen, dass die Größe eines
Cache-Blocks B Byte ist. In diesem Fall bilden N Cache-Blöcke eine
Gruppe, und Daten an der Adresse a wird
in der ((a/B) mod (M/N))-ten Cache-Block-Gruppe gespeichert.
-
Es
sei ferner angenommen, dass die Anzahl von Regionen pÇM und
die Anzahl von Einträgen
in jeder Region 1 ist. Außerdem
wird eine Aktualisierung von Daten bei einer Adresse a durch einen Prozessor mit dem Prozessoridentifizierer
k durchgeführt,
um einer (MÇk
+ (a/B mod M))-ten Region zu entsprechen.
-
Obwohl
der Cache-Speicher 20 mit dem vorhergehenden Verfahren
als N-Weg-teilassoziativ wirkt, bereitet die Cache-Flush-Vorrichtung 30 die
Aktualisierungsadressen wie ein Direktabbildungs-Cache-Speicher. Wenn
der Prozessor 10, der einen Identifizierer 10 aufweist,
Daten an der Adresse BÇM
aktualisieren wird, bei der der Cache-Block die Daten der Adresse
0 in einem schmutzigen Zustand aufweist, gibt die Cache-Flush-Vorrichtung 30 einen
Busbefehl aus, um ein Zurückschreiben
von Daten der Adresse 0 in den Hauptspeicher 51 zu veranlassen.
-
Bei
dieser alternativen Ausführungsform
kann eine Region dazu gebracht werden, einen bestimmten Cache-Block
aller Prozessoren 10 zu entsprechen, wie in Konfiguration
7 und 8 beschrieben. Als Ergebnis erfordert der Aktualisierungs-Adressenregistrierungsabschnitt 33 nicht
notwendigerweise den Identifizierer des Prozessors 10.
-
In 20 werden
nun die Vorgänge
beschrieben, die durchgeführt
werden, wenn der Prozessor 10 sukzessiv Daten D0, D1 und
D2 in Adressen 0, BÇM
und 2BÇM
schreibt. Es sei bemerkt, dass das Symbol B die Größe des Cache-Blocks
und M die Anzahl von Cache-Blöcken
des Prozessors angibt. Die Anzahl von Einträgen der Region A0 wird
dazu gebracht, 2 zu sein.
- (1) Obwohl der Prozessor 10 die
Daten D0 bei der Adresse 0 schreibt, existieren die Daten bei der
Adresse 0 nicht in dem Cache-Block 0. Daher gibt der Prozessor 10 einen
Busbefehl zum Anfordern der Daten von der Adresse 0 an die Adresse
(B – 1)
und zum Mitteilen der Aktualisierung der Daten an die anderen Prozessoren 10 aus.
- (2) Als Ergebnis werden die Daten in den Cache-Block 0 in einem
schmutzigen Zustand gebracht und gespeichert. Zwischen den Daten
werden Daten bei der Adresse 0 auf D0 aktualisiert. Die Adresse
wird in der Region A0 als eine Aktualisierungsadresse
gespeichert.
- (3) Obwohl der Prozessor 10 die Daten D1 an die Adresse
BÇM schreibt,
werden Daten an der Adresse BÇM
nicht in dem Cache-Block 0 gespeichert. Daher wird ein Busbefehl
zum Zurückschreiben
von Daten bei der Adresse 0 in den Hauptspeicher 51 in
den Schreibpuffer gespeichert. Dann wird ein Busbefehl zum Anfordern
von Daten von der Adresse BÇM
zu der Adresse (BÇM
+ B – 1)
und zum Mitteilen der Aktualisierung der Daten an die anderen Prozessoren 10 ausgegeben.
- (4) Als Ergebnis werden Daten von der Adresse BÇM zu der
Adresse (BÇM
+ B – 1)
gebracht und in dem Cache-Block 0 in einem schmutzigen Zustand gespeichert.
Unter den gespeicherten Daten werden Daten an der Adresse BÇM auf
D1 aktualisiert. Die Adresse BÇM
wird neu in der Region A0 als Aktualisierungsadressen
gespeichert.
- (5) Obwohl der Prozessor 10 die Daten D2 bei der Adresse
2BÇM
schreiben wird, werden Daten an der Adresse 2BÇM nicht in dem Cache-Block
0 gespeichert. Daher wird ein Busbefehl zum Zurückschreiben von Daten an der
Adresse 0 in den Hauptspeicher 51 in dem Schreibpuffer
gespeichert. Dann wird ein Busbefehl zum Anfordern von Daten von
der Adresse 2BÇM
zu der Adresse (2BÇM
+ B – 1)
und zum Mitteilen der Aktualisierung der Daten an die anderen Prozessoren 10 ausgegeben.
- (6) Als Ergebnis werden Daten von der Adresse 2BÇM zu der
Adresse (2BÇM
+ B – 1)
gebracht und in dem Cache-Block 0 in schmutzigem Zustand gespeichert.
Unter den gespeicherten Daten werden Daten bei der Adresse 2BÇM auf
D1 aktualisiert. Die Adresse 2BÇM wird neu in der Region
A0 als Aktualisierungsadresse gespeichert.
Wenn das Belegt-Flag AN ist, wird geplant, einen Rückschreibbefehl
der Adresse 0 auszugegeben.
- (7) Der Rückschreibbefehl,
der in dem Schreibpuffer seit (3) gehalten wurde und der
bei (6) geplante Rückschreibbefehl
werden ausgegeben.
- (8) Der Rückschreibbefehl
der Daten D1 bei der Adresse 2BÇM, der in dem Schreibpuffer
gehalten wurde, wird ausgegeben.
- (9) Die Sequenz der Vorgänge
kommt zu einem Abschluss, wobei sowohl 2BÇM als auch BÇM als
Aktualisierungsadressen in den Einträgen der Region A0 existieren.
Es sei bemerkt, dass nur 2BÇM
die gültige Aktualisierungsadresse
ist.
-
Dritte Ausführungsform
-
Eine
dritte Ausführungsform
der Erfindung wird nun beschrieben.
-
21 zeigt
die Struktur des Computersystems gemäß der dritten Ausführungsform.
Die Cache-Flush-Vorrichtung 30 wird auf den gleichen Computer
wie bei den ersten und zweiten Ausführungsformen angewendet.
-
Die
Cache-Flush-Vorrichtung 30 umfasst eine Systembusschnittstelle 31,
einen Aktualisierungs-Adressenspeicher 32 (Regionen A0 bis An–1),
einen Aktualisierungs-Adressenregistrierungsabschnitt 33, einen
Aktualisierungs-Adressenentfernungsabschnitt 34, einen
Flush-Ausführungsabschnitt 35 und
einen Eintragrückbeanspruchungsabschnitt 36.
-
Der
Aktualisierungs-Adressenspeicher 32, der Aktualisierungs-Adressenregistrierungsabschnitt 33, der
Flush-Ausführungsabschnitt 35 und
der Eintragrückbeanspruchungsabschnitt 36 sind
die gleichen wie diejenigen gemäß der zweiten
Ausführungsform.
-
Der
Unterschied zu der zweiten Ausführungsform
besteht darin, dass der Aktualisierungs-Adressenentfernungsabschnitt
wie bei der ersten Ausführungsform
hinzugefügt
wird. Obwohl der Aktualisierungs-Adressenentfernungsabschnitt der
ersten Ausführungsform
immer den Eintrag mit der in dem Busbefehl enthaltenen Adresse sucht
und löscht,
versucht der Aktualisierungs-Adressenentfernungsabschnitt der dritten
Ausführungsform,
wenn ein Rückschreibbusbefehl
befolgt wird, den Eintrag für
eine bestimmte Zeit zu suchen. Wenn er erfolgreich ist, wird der
Eintrag gelöscht.
Andernfalls bleibt der Eintrag unverändert. Da es eine Möglichkeit gibt, dass
der Aktualisierungs-Adressenspeicher 32 Adressen hält, deren
zugeordnete schmutzige Blöcke nicht
länger
existieren, ist der Eintragrückbeanspruchungsabschnitt 36 wie
bei der zweiten Ausführungsform notwendig.
-
Ein
typisches Beispiel, bei dem der Aktualisierungs-Adressenentfernungsabschnitt 34 versucht,
den Eintrag zu suchen, der die gleiche Adresse wie des Rückschreibbusbefehls
für eine
vorbestimmte Zeit hält, wird
nun mit Bezug auf das in 22 gezeigte
Betriebsdiagramm beschrieben.
-
Wie
in 22 gezeigt, vergleicht der Aktualisierungs-Adressenentfernungsabschnitt 34 den
Inhalt des durch den L-Zeiger
gekennzeichneten Eintrags mit der Rückschreibadresse (Schritt K3).
Wenn sie dieselben sind, rückt
der Aktualisierungs-Adressenentfernungsabschnitt 34 den
L-Zeiger vor (Schritte K5 bis K6), um die Aktualisierungsadressen
zu entfernen. Als Ergebnis kann die Leistung verbessert werden.
-
Anstatt
den Eintrag für
eine vorbestimmte Zeit zu suchen, wird der Eintrag gesucht, bis
ein nächster Busbefehl,
der die Datenaktualisierung angibt, oder ein Busbefehl zum Zurückschreiben
des Inhalts des schmutzigen Blocks erfasst wird. Diese Modifikation
verbessert die Leistung zusätzlich,
da die Möglichkeit
für den
Aktualisierungs-Adressenentfernungsabschnitt 34, die Aktualisierungsadresse
aus dem Aktualisierungs-Adressenspeicher 22 zu entfernen,
erhöht
wird.
-
Wenn
ein Busbefehl erfasst wird, der zeigt, dass ein Cache-Block nicht
schmutzig ist, kann der Aktualisierungs-Adressenentfernungsabschnitt außerdem versuchen,
den Eintrag zu suchen und zu entfernen. Dies verbessert die Leistung.
-
Vierte Ausführungsform
-
Eine
vierte Ausführungsform
der Erfindung wird nun beschrieben. 23 zeigt
die Struktur eines Computersystems gemäß der vierten Ausführungsform
der Erfindung. Die Struktur des Computers, auf den die Cache-Flush-Vorrichtung 30 angewendet
wird, ist die gleiche wie die gemäß der ersten Ausführungsform.
-
Die
Cache-Flush-Vorrichtung 30 umfasst die Systembusschnittstelle 31,
den Aktualisierungs-Adressenspeicher 32 (Regionen A0 bis An–1),
den Aktualisierungs-Adressenregistrierungsabschnitt 33,
den Aktualisierungs-Adressenentfernungsabschnitt 34, den
Flush-Ausführungsabschnitt 35 und
den Eintrag in dem Beanspruchungsabschnitt 36.
-
Der
Aktualisierungs-Adressenspeicher 32 umfasst zusätzlich einen
Schmutziger-Block-Zähler
zum Beibehalten den der Regionen entsprechenden Anzahl schmutziger
Blöcke,
wie in 24 gezeigt.
-
Außerdem umfasst
der Aktualisierungs-Adressenregistrierungsabschnitt 33 eine
Funktion, um den Zählwert
des Schmutziger-Block-Zählers
entsprechend der Regionen um Eins zu erhöhen.
-
Der
Eintragrückbeanspruchungsabschnitt 36 ist
der gleiche wie der der zweiten Ausführungsform.
-
25 ist
ein Betriebsdiagramm des Aktualisierungs-Adressenregistrierungsabschnitts 33 und
des Eintragrückbeanspruchungsabschnitt 36,
wenn der Aktualisierungs-Adressenregistrierungsabschnitt 33 einen Befehl
erfasst, der die Datenaktualisierung in dem Cache-Speicher 20 angibt.
Wenn der die Datenaktualisierung angebenden Befehl bei Schritt L1
erfasst wird, wird die entsprechende Region Ai gemäß dem Prozessoridentifizierer
und der Aktualisierungsadresse bei Schritt L2 identifiziert. Bei
Schritt L3 wird der Schmutziger-Block-Zähler um Eins inkrementiert.
Bei Schritt L4 wird bestimmt, ob das Belegt-Flag der Region Ai AN ist oder nicht. Falls NEIN bei Schritt
L4, wird der Prozess zu Schritt L9 verschoben. Falls JA bei Schritt
L4, verwendet der Eintragrückbeanspruchungsabschnitt 36 die
Adresse in dem durch den L-Zeiger gekennzeichneten Eintrag der Region
Ai, um einen Befehl zum Anfordern des Zurückschreibens
der Daten in den schmutzigen Block in den Hauptspeicher bei Schritt
L5 auszugeben. Bei Schritt L6 wird bestimmt, ob der L-Zeiger den
letzten Eintrag kennzeichnet oder nicht. Falls NEIN bei Schritt
L6, wird der L-Zeiger bei Schritt L7 inkrementiert. Falls JA bei
Schritt L6, wird veranlasst, dass der L-Zeiger den ersten Eintrag
bei Schritt L8 kennzeichnet. Dann wird Schritt L9 durchgeführt. Bei
Schritt L9 wird die Aktualisierungsadresse an der durch den S-Zeiger
gekennzeichneten Position registriert.
-
Bei
Schritt L10 wird bestimmt, ob der S-Zeiger den letzten Eintrag kennzeichnet
oder nicht. Falls NEIN bei Schritt L10, wird der S-Zeiger um Eins
bei Schritt L11 inkrementiert. Falls JA bei Schritt L10, wird veranlasst, dass
der S-Zeiger den ersten Eintrag bei Schritt L12 kennzeichnet. Dann
wird Schritt L13 durchgeführt.
Bei Schritt L13 wird bestimmt, ob die Positionen, die jeweils durch
den S-Zeiger und den L-Zeiger gekennzeichnet werden, die gleichen
sind oder nicht. Wenn auf die gleichen Positionen hingewiesen wird,
wird das Belegt-Flag bei Schritt L14 angeschaltet und dann der Vorgang
beendet. Wenn die gekennzeichneten Positionen nicht die gleichen
sind, wird der Vorgang sofort beendet.
-
26 zeigt
einen Vorgang des Aktualisierungs-Adressenentfernungsabschnitts 34.
Wenn der Aktualisierungs-Adressenentfernungsabschnitt 34 einen
Befehl zum Zurückschreiben
des Inhalts des schmutzigen Blocks in den Hauptspeicher 51 erfasst
(Schritt M1), wählt
der Aktualisierungs-Adressenentfernungsabschnitt 34 eine
der n Regionen (A0 bis
An–1),
die die Aktualisierungs-Adressenspeicher 32 bilden, gemäß der Adresse (Rückschreibadresse)
aus, bei der das Zurückschreiben
durchgeführt
wird, und dem Prozessoridentifizierer 10 aus, der das Zurückschreiben
durchführt
(Schritt M2), und dekrementiert dann den Schmutziger-Block-Zähler um
Eins (Schritt M3). Wenn der Zählwert
des Schmutziger-Block-Zählers
dazu gebracht wird, als Ergebnis dieses Dekrementierens Null zu
sein, werden die Werte des L-Zählers
und des S-Zählers
dazu gebracht, gleich zu sein, und das Belegt-Flag wird abgeschaltet
(Schritt M5), sodass alle die in der Region gespeicherten Aktualisierungsadressen
entfernt werden.
-
27 ist
ein Betriebsdiagramm, das den Prozess zeigt, der von dem Flush-Ausführungsabschnitt 35 durchgeführt wird.
Der Flush-Ausführungsabschnitt 35 folgt
einem von dem Prozessor 10 ausgegebenen Befehl, um an den
Systembus 40 einen Befehl zum Anfordern des Rückschreibens
in den Hauptspeicher 51 des Inhalts des schmutzigen Blocks
auszugeben, der die in jedem Eintrag einer Region gespeicherte Adresse
aufweist, die den Schmutziger-Block-Zähler
aufweist, deren Wert nicht Null ist (Schritt N3). Wenn der Zählwert des
Schmutziger-Block-Zählers
dazu gebracht wird, Null zu sein (Schritt N2) ist der Prozess der
vorhergehenden Region beendet.
-
Diese
Ausführungsform
weist die Struktur auf, sodass, zusätzlich der Schmutziger-Block-Zähler bereitgestellt
wird, um den Regionen, die dem Aktualisierungs-Adressenspeicher 32 entsprechen,
und dem Aktualisierungs-Adressenregisterabschnitt 33 und
dem Aktualisierungs-Adressenentfernungsabschnitt 34 entsprechen,
um den Schmutziger-Block-Zähler
zu steuern, um dem Anstieg/der Abnahme der schmutzigen Blöcke zu entsprechen.
Wenn alle einer bestimmten Region entsprechende schmutzige Blöcke verschwunden sind,
leert der Aktualisierungs-Adressenentfernungsabschnitt 34 die
Einträge
aller vorhergehenden Regionen.
-
Als
Ergebnis kann die Häufigkeit
des Anschaltens des Eintrags des Beanspruchungsabschnitts 36 verglichen
mit der zweiten Ausführungsform
abgesenkt werden. Somit die Leistung des Computers mit der Cache-Flush-Vorrichtung 30 gemäß dieser
Ausführungsform.
-
Obwohl
alle Einträge
der entsprechenden Region Ai leer gemacht
werden, wenn der Schmutziger-Block-Zähler durch den Aktualisierungs-Adressenentfernungsabschnitt 34 gemäß dieser
Ausführungsform auf
Null dekrementiert wird, kann es als machbar angesehen werden, das
folgende zweite Verfahren zum Verwenden des Schmutziger-Block-Zählers zu
benutzen.
-
Es
sei angenommen, dass der Zählwert
des Schmutziger-Block-Zählers der
Region Ai als Ergebnis des Dekrementierungsvorgangs
auf 1 gebracht wird. Wenn die Zahl (die in Übereinstimmung mit der Differenz mit
dem L-Zähler
und dem S-Zähler berechnet
werden kann) der in der Region Ai gespeicherten Aktualisierungsadressen
groß ist,
bedeutet dies eine Tatsache, dass tatsächlich kein schmutziger Block
mit Bezug auf im Wesentlichen allen in der Region Ai gespeicherten
Aktualisierungsadressen existiert.
-
Wenn
der Eintragrückbeanspruchungsabschnitt 36 auf
alle Einträge
der Region Ai angewendet wird, kann die
Anzahl der Ausgaben von Befehlen zum Anfordern eines Zurückschreibens
in den Hauptspeicher 51 in die Adressen, bei denen kein
schmutziger Block existiert, verringert werden. Daher kann eine
Verbesserung der Leistung erreicht werden.
-
Die
ersten bis vierten Ausführungsformen
wurden hinsichtlich der Cache-Flush-Vorrichtung beschrieben. Ein
fehlertoleranter Computer, der eine der vorhergehenden Ausführungsformen
benutzt, wird nun beschrieben.
-
Fünfte Ausführungsform
-
28 zeigt
eine fünfte
Ausführungsform
der Erfindung. Die Cache-Flush-Vorrichtung 30 gemäß der ersten,
dritten oder vierten Ausführungsformen
ist mit dem Systembus 40 verbunden. Jeder der Prozessoren 10 umfasst
einen Cache-Speicher vom Rückkopiertyp 20 mit
einer Cache-Kohärenzfunktion.
-
Der
Computer gemäß dieser
Ausführungsform
führt einen
der drei nachstehenden Schritte durch, um für Prozessdaten mit ausgezeichneter
Fehlertoleranzleistung geeignet zu sein.
-
(1) Normal-Datenverarbeitungsschritt
-
Während die
Cache-Flush-Vorrichtung veranlasst wird, die Aktualisierungsadresse
zu erfassen, wird eine Normal-Datenverarbeitung
durchgeführt.
-
(2) Prüfpunkterfassungsschritt
-
Dieser
Schritt wird periodisch durch vorübergehendes Unterbrechen des
Normal-Datenverarbeitungsschritts durchgeführt. In einem Fall, in dem
eine Mehrzahl von Prozessoren 10 bereitgestellt wird, werden
alle Prozessoren synchronisiert, um diesen Schritt durchzuführen. Bei
diesem Schritt werden die nachstehenden zwei Prozesse durchgeführt.
- (2a) Der Kontext (der Inhalt des Programmzählers, des
Allzweckzählers
und dergleichen des Prozessors 10) des Prozessors 10,
der die Verarbeitungsdaten sind, werden in dem Hauptspeicher 51 gespeichert.
- (2b) Durch Anschalten des Flush-Ausführungsabschnitts 35 der
Cache-Flush-Vorrichtung 30 wird der Inhalt aller schmutzigen
Blöcke
in den Hauptspeicher 51 zurückgeschrieben.
-
(3) Rückroll- und Wiedergewinnungsschritt
-
Dieser
Schritt wird durchgeführt,
wenn ein Problem des Computers während
des Normal-Datenverarbeitungsschritts oder des Prüfpunkterfassungsschritt
auftritt. Bei diesem Schritt werden die nachstehenden beiden Prozesse
durchgeführt.
- (3a) Der Hauptspeicher 51 wird in
den Zustand des Prüfpunkts
wiederhergestellt, der direkt vor dem Problem erfasst wurde.
- (3b) In dem wiederhergestellten Hauptspeicher 51 gespeicherte
Information wird verwendet, um die Normal-Datenverarbeitung neu zu starten (wenn
der Betrieb neu gestartet wird, wird der Betrieb zu dem Normal-Datenverarbeitungsschritt
verschoben).
-
29 zeigt
einen Zustand, bei dem die Verschiebung zwischen den drei Schritten
gekennzeichnet ist.
-
Nachdem
eine vorbestimmte Zeit seit dem Start des Normal-Datenverarbeitungsschritts
abgelaufen ist, startet jeder Prozessor 10 den Prüfpunkterfassungsschritt.
Bei diesem Prüfpunkterfassungsschritt
wird ein erster Prozess durchgeführt,
sodass der Fortschritt des Prozesses, d. h., der Kontext (der Inhalt
des Programmzählers,
des Zustandsregisters, des Allzweckregisters und dergleichen) des
Prozessors, wenn der Normal-Datenverarbeitungsschritt zu dem Prüfpunkterfassungsschritt
verschoben wird, in den Hauptspeicher 51 geschrieben wird.
Er kann jedoch einfach in dem Cache-Speicher 20 gespeichert
sein.
-
Ein
zweiter Prozess wird bei dem Prüfpunkterfassungsschritt
durchgeführt,
sodass der Inhalt des schmutzigen Blocks in den Hauptspeicher 51 zurückgeschrieben
wird. Der zweite Prozess ist erforderlich, um die normale Datenverarbeitung
durch den Rückroll-
und Wiedergewinnungsschritt von einem Zustand, bevor ein Fehler
sogar in einem Fall des Fehlers, bei dem Daten in dem Cache-Speicher 20 zerstört werden,
auftritt, neu zu starten.
-
Wenn
der Prüfpunkterfassungsschritt
beendet ist, wird der Normal-Datenverarbeitungsschritt neu gestartet.
Zu dieser Zeit wird der Kontext des Prozessors 10, der
in den Hauptspeicher 51 bei dem Prüfpunkterfassungsschritt geschrieben
wurde, verwendet.
-
29 zeigt
einen Zustand, in dem ein Fehler während eines dritten Datenverarbeitungsschritts
auftritt und der Rückroll-
und Wiedergewinnungsschritt gestartet wird. Bei dem Rückroll-
und Wiedergewinnungsschritt wird ein erster Prozess durchgeführt, sodass
der Zustand des Hauptspeichers 51 in den Zustand wiederhergestellt
wird, bei dem der letzte Prüfpunkterfassungsschritt
durchgeführt
wird, d. h. der Zustand wird in den Zustand, gerade bevor der dritte
Datenverarbeitungsschritt gestartet wird, wiederhergestellt.
-
Im
Allgemeinen findet das Zurückschreiben
des Inhalts des schmutzigen Blocks in den Hauptspeicher 51 zu
einer beliebigen Zeit statt, wobei der Zustand des Hauptspeichers 51 geringfügig von
dem Zustand geändert
wird, wenn die Normal-Datenverarbeitung gestartet wird. Demgemäß wird der
Zustand des Hauptspeichers 51 in den Zustand des letzten
Prüfpunkts
wiederhergestellt, als der erste Prozess des Rückroll- und Wiedergewinnungsschritt.
Die Wiederherstellung kann durchgeführt werden, sodass der Inhalt
des Hauptspeichers 51 vor dem Zurückschreiben in einem Protokollspeicher
gespeichert wird, wann immer das Zurückschreiben des Inhalts des
schmutzigen Blocks in den Hauptspeicher 51 auftritt, und
der Inhalt wird verwendet, um den Zustand des Hauptspeichers 51 wiederherzustellen.
-
Wenn
beispielsweise Daten D1 in die Adresse a zurückgeschrieben
werden, speichert der Speichercontroller 50 den Rückschreibbefehl
und liest den Inhalt (D0) bei der Adresse a des Hauptspeichers 51 aus. Dann
wird D1 in die Adresse a des
Hauptspeichers 51 geschrieben. Dann wird ein Paar von Adressen a und Daten D0 gespeichert.
Als der erste Prozess des Rückroll-
und Wiedergewinnungsschritt wird D0 in den Hauptspeicher 51 bei
der Adresse a geschrieben,
sodass der Zustand des Hauptspeichers 51 an dem letzten
Prüfpunkt
wiederhergestellt wird.
-
Ein
anderes Verfahren kann benutzt werden, bei dem der Hauptspeicher 51 als
Speicher A und Speicher B dupliziert wird. Wenn das Zurückschreiben
des Inhalts des schmutzigen Blocks in den Hauptspeicher 51 bei
dem Normal-Datenverarbeitungsschritt
durchgeführt
wird, wird das Zurückschreiben
nur in den Hauptspeicher A durchgeführt. Die Änderung in dem Speicher A wird
auf den Speicher B bei dem Prüfpunkterfassungsschritt
angepasst. Somit kann die Wiederherstellung durchgeführt werden.
-
Ein
zweiter Prozess des Rückroll-
und Wiedergewinnungsschritts besteht darin, den Normal-Datenverarbeitungsschritt
bei dem wiederhergestellten Zustand des Hauptspeichers neu zu starten.
Der vorhergehende Prozess ist der gleiche wie die Verschiebung von
dem Prüfpunkterfassungsschritt
zu dem Normal-Datenverarbeitungsschritt. In dem in 29 gezeigten
Fall wird ein vierter Datenverarbeitungsschritt von dem gleichen Zustand
wie dem dritten Datenverarbeitungsschritt gestartet.
-
Bei
dem Rückroll-
und Wiedergewinnungsschritt muss ein Prozess durchgeführt werden,
bei dem die Ursache des Fehlers erfasst wird, um die fehlerhafte
Vorrichtung zu trennen. Wenn ein kritisches Problem auftritt, muss
der Neustart abgebrochen und der Betrieb des Computers muss unterbrochen
werden. Da dieser Prozess nicht der springende Punkt der Erfindung
ist, wird er von der weiteren Beschreibung weggelassen.
-
Da
der Computer des obigen Typs eine Verschlechterung in der Leistung
aufgrund der periodischen Ausführung
des Prüfpunkterfassungsschritts
beinhaltet, muss die Zeit, die erforderlich ist, um die Prüfpunkterfassungsschritt
durchzuführen,
verkürzt
werden. Da der Hauptabschnitt des Prüfpunkterfassungsschritts darin besteht,
den Inhalt des schmutzigen Blocks in den Hauptspeicher 51 zurückzuschreiben,
ermöglicht
die Verwendung der erfindungsgemäßen Cache-Flush-Vorrichtung 30,
dass die Zeit, die erforderlich ist, um das Zurückschreiben durchzuführen, verkürzt werden
kann. Somit kann die Zeit, die erforderlich ist, um den Prüfpunkterfassungsschritt
abzuschließen,
beträchtlich
verkürzt
werden.
-
Wenn
der Flush-Ausführungsabschnitt 35 der
Cache-Flush-Vorrichtung 30 in
dem letzteren Halbabschnitt des Normal-Datenverarbeitungsschritt angeschaltet
wird, kann die Zeit, die erforderlich ist, um den Prüfpunkterfassungsschritt
abzuschließen,
zusätzlich
verkürzt
werden. Der Grund dafür
ist, dass die Anzahl der schmutzigen Blöcke, wenn der Prüfpunkterfassungsschritt
gestartet wird, verglichen mit dem Fall, bei dem der vorhergehende
Prozess nicht durchgeführt
wird, beträchtlich
verringert werden kann, da der Flush-Ausführungsabschnitt 35 der
Cache-Flush-Vorrichtung 30 angeschaltet wird. Wenn der
vorhergehende Prozess nicht durchgeführt wird, kann die Wahrscheinlichkeit
der schmutzigen Blöcke
von beispielsweise 30% auf etwa 15% abgesenkt werden. Da der Flush-Ausführungsabschnitt 35 der
Cache-Flush-Vorrichtung 30 gemäß einer der ersten bis vierten
Ausführungsformen
imstande ist, die in dem Aktualisierungsadressenspeicher 32 gespeicherte
Aktualisierungsadresse abzurufen, kann die Zeit, die erforderlich
ist, um den Prüfpunkterfassungsschritt abzuschließen, im
wesentlichen halbiert werden, wenn die Wahrscheinlichkeit der schmutzigen
Blöcke
15% beträgt.
-
Sechste Ausführungsform
-
Eine
sechste Ausführungsform
der Erfindung wird nun beschrieben. 30 zeigt
die Struktur eines fehlertoleranten Computers, der die Cache-Flush-Vorrichtung 30 gemäß einer
der ersten, dritten oder vierten Ausführungsformen aufweist. Wie
in 30 gezeigt, weist der Computer gemäß dieser
Ausführungsform
eine Struktur auf, sodass unabhängige
erste und zweite Computer 100a und 100b miteinander
durch einen Aktualisierungsüberwachungsabschnitt 60 (in
dem ersten Computer 100a) und einen Speicheraktualisierungsabschnitt 70 (in
dem zweiten Computer 100b) verbunden werden. Der erste
Computer 100a und der zweite Computer 100b müssen die
gleiche Art von Prozessoren 10 und die gleiche Art von
Hauptspeichern 51 umfassen.
-
Der
erste Computer 100a führt
immer den normalen Datenverarbeitungsschritt und den Prüfpunkterfassungsschritt
durch. Andererseits führt
der zweite Computer 100b im allgemeinen einen Warteschritt
und kontinuierlich die normale Datenverarbeitung durch, die von
dem ersten Computer 100a durchgeführt wird, wenn ein Fehler bei
dem ersten Computer 100a auftritt.
-
Der
Aktualisierungsüberwachungsabschnitt 60 überwacht
den Systembus 40 des ersten Computers 100a, um
zu überwachen
und Befehle zu speichern, die in dem ersten Computer 100a erzeugt
wurden, und die imstande sind, den Hauptspeicher 51 zu
aktualisieren. Der Aktualisierungsüberwachungsabschnitt 60 folgt einem
von dem ersten Computer 100a ausgegebenen Befehl, um die
gespeicherten Befehle an den Speicheraktualisierungsabschnitt 70 zu
liefern, der mit dem zweiten Computer 100b verbunden ist.
-
Der
Speicheraktualisierungsabschnitt 70 liefert die von dem
Aktualisierungsüberwachungsabschnitt 60 empfangenen
Befehle an den Systembus 40 des zweiten Computers 100b,
um den Zustand des Hauptspeichers 51 des zweiten Computers 100b mit
dem des ersten Computers 100a in Übereinstimung zu bringen.
-
Der
normale Datenverarbeitungsschritt und der Prüfpunkterfassungsschritt des
ersten Computers 100a werden nun beschrieben.
-
(1) Normaler Datenverarbeitungsschritt
-
Wenn
die Cache-Flush-Vorrichtung 30 veranlasst wird, die Aktualisierungsadresse
zu erfassen, wird die gewöhnliche
Datenverarbeitung durchgeführt.
-
(2) Prüfpunkterfassungsschritt
-
Dieser
Schritt wird periodisch auf eine solche Art und Weise durchgeführt, sodass
der normale Datenverarbeitungsschritt vorübergehend unterbrochen ist.
Wenn eine Mehrzahl der Prozessoren 10 bereitgestellt wird,
müssen
alle Prozessoren 10 miteinander synchronisiert sein. Bei
diesem Schritt werden drei nachstehende Prozesse durchgeführt.
- (2a) Der Kontext (der Inhalt des Programmzählers, eines
Allzweckregisters und dergleichen des Prozessors 10) des
Prozessors 10, der den Datenprozess durchführt, wird
in dem Hauptspeicher 51 gespeichert.
- (2b) Durch Anschalten des Flush-Ausführungsabschnitts 35 der
Cache-Flush-Vorrichtung 30 wird der Inhalt aller schmutzigen
Blöcke
in den Hauptspeicher 51 zurückgeschrieben.
- (2c) Ein Befehl wird an den Aktualisierungsüberwachungsabschnitt 60 ausgegeben,
um die gespeicherten Befehle an den Speicheraktualisierungsabschnitt 70 zu
liefern.
-
Bei
dem Warteschritt des zweiten Computers 100b führt keiner
Prozessoren 10 die normale Datenverarbeitung durch, sondern
es wird geprüft,
ob die Hauptspeicheraktualisierungsbefehle periodisch von dem ersten
Computer 100a an den Speicheraktualisierungsabschnitt 70 geliefert
werden. Wenn der Befehl für
eine Zeitspanne, die länger
als eine vorbestimmte Zeitspanne ist, nicht empfangen wird, wird
bestimmt, dass der erste Computer 100a in einen betriebsgesperrten
Zustand gebracht wird. Somit wird die normale Datenverarbeitung
in dem Zustand des Hauptspeichers 51 des zweiten Computers 100b bei
dem vorhergehenden Zeitpunkt durchgeführt.
-
31 zeigt
einen Zustand des Computers gemäß dieser
Ausführungsform,
bei dem die Zustände des
ersten Computers 100a und des zweiten Computers 100b geändert werden,
wenn die Zeit abläuft.
-
Nachdem
eine vorbestimmte Zeit von dem Start des normalen Datenverarbeitungsschritts
abgelaufen ist, startet jeder Prozessor 10 des ersten Computers 100a den
Prüfpunkterfassungsschritt.
Bei diesem Prüfpunkterfassungsschritt
wird ein erster Prozess durchgeführt,
sodass der Fortschritt des Prozesses, d. h. der Kontext (der Inhalt
des Programmzählers,
Zustandsregisters, des Allzweckregisters und dergleichen) des Prozessors,
wenn der Normal-Datenverarbeitungsschritt zu dem Prüfpunkterfassungsschritt
verschoben wird, in den Hauptspeicher 51 geschrieben wird.
Er kann jedoch einfach in dem Cache-Speicher 20 gespeichert
sein.
-
Ein
zweiter Prozess des Prüfpunkterfassungsschritts
besteht darin, den Inhalt des schmutzigen Blocks in den Hauptspeicher 51 zurückzuschreiben.
Der zweite Prozess ist erforderlich, um den gesamten aktualisierten
Inhalt des Hautspeichers 51 in dem ersten Computer 100a an
den zweiten Computer 100b zu liefern.
-
Ein
dritter Prozess des Prüfpunkterfassungsschritts
wird durchgeführt,
sodass ein Befehl an den Aktualisierungsüberwachungsabschnitt 60 ausgegeben
wird, um die gespeicherten Befehle an den Speicheraktualisierungsabschnitt 70 zu
liefern. Es ist vorzuziehen, dass der Befehl direkt vor dem Ende
des Prüfpunkterfassungsschritts
ausgegeben wird. Der Grund dafür
ist, dass der zweite Computer 100b immer ein richtiges Hauptspeicherbild
speichern muss.
-
Nachdem
der Prüfpunkterfassungsschritt
beendet ist, wird der Normal-Datenverarbeitungsschritt neu gestartet.
Zu dieser Zeit wird der Kontext des Prozesses 10, der in
den Hauptspeicher 51 bei dem Prüfpunkterfassungsschritt geschrieben
wurde, verwendet.
-
31 zeigt
einen Zustand, in dem ein Fehler während des dritten Datenverarbeitungsschritts
erzeugt wird. Zu dieser Zeit ist der erste Computer 100a erforderlich,
um dessen Betrieb einfach zu unterbrechen. Als eine Alternative
dazu kann das Hochfahren durchgeführt werden, um eine Vorkehrung
für einen
Fehlers des zweiten Computers 100b durchzuführen.
-
Der
zweite Computer 100b führt
den Warteschritt durch, bis ein Fehler in dem ersten Computer 100a erzeugt
wird. Bei dem Timing T wird bestimmt, dass der Speicheraktualisierungsabschnitt 70 keinen
Befehl von dem Aktualisierungsüberwachungsabschnitt 60 für eine vorbestimmte
Zeit empfängt,
und der normale Datenverarbeitungsschritt wird durchgeführt. In
dem in 31 gezeigten Fall wird der normale
Datenverarbeitungsschritt in dem zweiten Computer 100b in
dem gleichen Zustand wie der dritte Datenverarbeitungsschritt des ersten
Computers 100a gestartet.
-
Da
der Computer des obigen Typs die Verschlechterung in der Leistung
aufgrund der periodischen Ausführung
des Prüfpunkterfassungsschritt
beinhaltet, muss die Zeit, die erforderlich ist, um den Prüfpunkterfassungsschritt
durchzuführen,
verkürzt
werden. Da der Hauptabschnitt des Prüfpunkterfassungsschritt darin besteht,
den Inhalt des schmutzigen Blocks in den Hauptspeicher 51 zurückzuschreiben,
ermöglicht
die Verwendung der Cache-Flush-Vorrichtung 30, dass die
Zeit, die erforderlich ist, um das Zurückschreiben durchzuführen, bedeutend
verkürzt
wird.
-
Wenn
der Flush-Ausführungsabschnitt 35 der
Cache-Flush-Vorrichtung 30 in
dem letzteren Halbabschnitt des normalen Datenverarbeitungsschritts
angeschaltet wird, kann außerdem
die Zeit, die erforderlich ist, um den Prüfpunkterfassungsschritt abzuschließen, ähnlich der
fünften
Ausführungsform
verkürzt
werden.
-
Wie
oben beschrieben, veranlasst die erfindungsgemäße Cache-Flush-Vorrichtung,
dass die Adressen aller schmutzigen Blöcke auf dem Cache-Speicher
in einer der Regionen in der Cache-Flush-Vorrichtung gespeichert
werden. Wenn ein bestimmter Cache-Block in den schmutzigen Zustand
gebracht wird und dann von dem schmutzigen Zustand im Wartezustand
gehalten wird, wird die Adresse von der Region entfernt. Der Flush-Ausführungsabschnitt
gibt den Befehl zum sequentiellen Abrufen der Adressen der schmutzigen
Blöcke von
jeder Region und zum Zurückschreiben
des Inhalts des schmutzigen Blocks bei der Adresse in den Hauptspeicher
aus, sodass der Inhalt aller schmutzigen Blöcke in den Hauptspeicher zurückgeschrieben
wird.
-
Als
Ergebnis kann der Prozess, wie er für die herkömmliche Software erforderlich
ist, um sequentiell für
alle Cache-Blöcke
zu bestimmen, ob der Cache-Block ein schmutziger Block ist oder
nicht, weggelassen werden. Daher kann die Cache-Flush-Prozedur schnell
und effizient durchgeführt
werden.
-
Sogar
wenn der Prozessor den Schreibpuffer und jede Region nur einen Eintrag
aufweist, wird nur die Adresse (die letzte Aktualisierungsadresse)
der in dem Cache-Block – in
dem Schreibpuffer – gespeicherten Daten
in dem vorhergehenden Eintrag gespeichert, sodass eine ordnungsgemäße Cache-Flush-Prozedur durchgeführt wird.
-
Außerdem wird
ein Mechanismus zum Ausgeben eines Befehls zum Zurückschreiben
der Aktualisierungsadresse, die auf den Zustand der Verwendung der
Region anpassbar ist, bereitgestellt, so dass die Anzahl von Einträgen der
Region des Aktualisierungsadressenspeicherabschnitts im wesentlichen
frei eingestellt werden kann, und die Regionen und die Adressen
dazu gebracht werden, miteinander im wesentlichen frei zu koinzidieren.
-
Da
das Computersystem gemäß der Erfindung
imstande ist, die Cache-Flush-Prozedur schnell und effizient durchzuführen, was
der Hauptabschnitt des Prüfpunkterfassungsschritts
ist, kann die Leistung des Systems verbessert werden.