DE69729917T2 - Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem - Google Patents

Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem Download PDF

Info

Publication number
DE69729917T2
DE69729917T2 DE69729917T DE69729917T DE69729917T2 DE 69729917 T2 DE69729917 T2 DE 69729917T2 DE 69729917 T DE69729917 T DE 69729917T DE 69729917 T DE69729917 T DE 69729917T DE 69729917 T2 DE69729917 T2 DE 69729917T2
Authority
DE
Germany
Prior art keywords
cache
address
memory
data
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69729917T
Other languages
English (en)
Other versions
DE69729917D1 (de
Inventor
Yoshio Masubuchi
Takuya Kano
Hiroshi Sakai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Publication of DE69729917D1 publication Critical patent/DE69729917D1/de
Application granted granted Critical
Publication of DE69729917T2 publication Critical patent/DE69729917T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • 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.
  • fcflush
    Figure 00030001
  • loop
    Figure 00030002
  • 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.

Claims (5)

  1. Cache-Flush-Vorrichtung für einen Computer, der eine Mehrzahl von Prozessoren (10), die jeweils mit einem Cache-Speicher vom Rückkopiertyp (20) versehen sind, der einen Bus-Schnüffelmechanismus aufweist, einen Hauptspeicher (51) und einen System-Bus (40) aufweist, der die Mehrzahl von Prozessoren (10), die Cache-Flush-Vorrichtung und den Hauptspeicher (51) verbindet, wobei eine einzige Cache-Flush-Vorrichtung für die Cache-Speicher vom Rückkopiertyp (20) der Mehrzahl von Prozessoren (10) bereitgestellt wird und umfasst: ein Aktualisierungs-Adressenspeichermittel (32) mit einer Mehrzahl von Bereichen, wobei jeder einen oder mehrere Einträge aufweist, wobei jeder Eintrag zum Speichern einer Adresse von Daten vorgesehen ist, die in einem schmutzigen Block eines der Cache-Speicher vom Rückkopiertyp (20) gehalten werden, wobei die Bereiche gemäß den Hauptaspekten der Cache-Speicherkonfiguration konfiguriert sind; ein Aktualisierungs-Adressenregistermittel (33) zum Überwachen des Systembusses (40), um eine Aktualisierung von Daten innerhalb eines der Cache-Speicher (20) zu erfassen, zum Auswählen eines Bereichs des Aktualisierungs-Adressenspeichermittels (32) gemäß der Speicheradresse MU, bei der die Daten aktualisiert wurden, und dem Identifizierer des Prozessors (10), der die Daten aktualisiert hat, und zum Speichern der Speicheradresse MU als eine Aktualisierungsadresse in einem leeren Eintrag des ausgewählten Bereichs; ein Aktualisierungs-Adressenentfernungsmittel (34) zum Überwachen des Systembusses (40), um ein Rückschreiben von Daten von einem schmutzigen Block zu erfassen, zum Auswählen eines Bereichs des Aktualisierungs-Adressenspeichermittels (32) gemäß der Speicheradresse MW, bei der die Daten zurückgeschrieben wurden, und dem Identifizierer des Prozessors (10), von dem die Daten zurückgeschrieben wurden, und zum Entfernen der Aktualisierungsadresse, die gleich der Speicheradresse MW und in einem Eintrag des ausgewählten Bereichs gespeichert ist; und ein Flush-Ausführungsmittel (35) zum Ausgeben an den System-Bus (40) als Antwort auf eine Anforderung von einem der Prozessoren (10) eines Befehls zum sequentiellem Lesen aller in dem Aktualisierungs-Adressenspeichermittel (32) gespeicherten Adressen und Zurückschreiben in den Hauptspeicher (51) der Daten des schmutzigen Blockes, die durch jede der gelesenen Aktualisierungsadressen angegeben werden.
  2. Cache-Flush-Vorrichtung gemäß Anspruch 1, bei der jeder der Cache-Speicher vom Rückkopiertyp ein direkter Abbildungs-Cache-Speicher (20) ist.
  3. Cache-Flush-Vorrichtung gemäß Anspruch 1 oder 2, ferner mit einem Aktualisierungs-Adressenlesemittel (37) zum sequentiellen Lesen aller in dem Aktualisierungs-Adressenspeichermittel (32) gespeicherten Aktualisierungsadressen, um zu ermöglichen, dass die Aktualisierungsadressen von einem der Prozessoren (10) gelesen werden.
  4. Computersystem mit: einer Cache-Flush-Vorrichtung gemäß Anspruch 1 bis 3, einer Mehrzahl von Prozessoren (10), die jeweils mit einem Cache-Speicher vom Rückkopiertyp (20) versehen sind, der einen Bus-Schnüffel-Mechanismus aufweist, einem Hauptspeicher (51) und einem Systembus (40), der die Mehrzahl von Prozessoren (10), die Cache-Flush-Vorrichtung und den Hauptspeicher (51) verbindet.
  5. Computersystem gemäß Anspruch 4, das angeordnet ist, um periodisch einen Prüfpunkt zum Neustarten eines unterbrochenen Prozesses zu extrahieren; wobei das Computersystem ferner umfasst: ein Normal-Datenverarbeitungsmittel zum Durchführen einer normalen Datenverarbeitung, während die Cache-Flush-Vorrichtung veranlasst wird, eine Aktualisierungsadresse zu erfassen; ein Prüfpunkterfassungsmittel mit Mitteln zum Speichern des Kontextes während des Datenprozesses, der durchgeführt wird, so dass alle Prozessoren (10) miteinander synchronisiert werden, in dem Hauptspeicher (51) und Rückschreiben in den Hauptspeicher (51) der in allen schmutzigen Blöcke gespeicherten Daten durch das Flush-Ausführungsmittel (35) der Cache-Flush-Vorrichtung; und ein Rückroll- und Wiedergewinnungsmittel zum Wiederherstellen des Hauptspeichers (51) in einen vorhergehenden Prüfpunkt, wenn ein Fehler aufgetreten ist, und Verwenden der in dem wiederhergestellten Hauptspeicher (51) gespeicherten Information, um die Normal-Datenverarbeitung neu zu starten.
DE69729917T 1996-09-09 1997-08-29 Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem Expired - Fee Related DE69729917T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8238157A JP2916421B2 (ja) 1996-09-09 1996-09-09 キャッシュフラッシュ装置およびデータ処理方法
JP23815796 1996-09-09

Publications (2)

Publication Number Publication Date
DE69729917D1 DE69729917D1 (de) 2004-08-26
DE69729917T2 true DE69729917T2 (de) 2005-07-21

Family

ID=17026043

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69729917T Expired - Fee Related DE69729917T2 (de) 1996-09-09 1997-08-29 Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem

Country Status (7)

Country Link
US (1) US6490657B1 (de)
EP (1) EP0828217B1 (de)
JP (1) JP2916421B2 (de)
KR (1) KR100233207B1 (de)
CN (1) CN1192315C (de)
DE (1) DE69729917T2 (de)
TW (1) TW343303B (de)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320274A (ja) * 1997-03-19 1998-12-04 Toshiba Corp キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
JP3935276B2 (ja) * 1998-10-21 2007-06-20 キヤノン株式会社 ネットワークデバイス管理方法、装置、記憶媒体、及び送出装置
JP3718599B2 (ja) * 1998-12-28 2005-11-24 富士通株式会社 キャッシュ装置、メモリ制御システムおよび方法、記録媒体
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6622208B2 (en) * 2001-03-30 2003-09-16 Cirrus Logic, Inc. System and methods using a system-on-a-chip with soft cache
US6779087B2 (en) * 2001-04-06 2004-08-17 Sun Microsystems, Inc. Method and apparatus for checkpointing to facilitate reliable execution
US6675262B1 (en) * 2001-06-08 2004-01-06 Hewlett-Packard Company, L.P. Multi-processor computer system with cache-flushing system using memory recall
JP3804823B2 (ja) * 2001-07-03 2006-08-02 日本電気株式会社 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法
US7472230B2 (en) * 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
US20030120869A1 (en) * 2001-12-26 2003-06-26 Lee Edward K. Write-back disk cache management
US7080211B2 (en) 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US6986002B2 (en) * 2002-12-17 2006-01-10 International Business Machines Corporation Adaptive shared data interventions in coupled broadcast engines
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
US7296127B2 (en) 2003-03-31 2007-11-13 Intel Corporation NoDMA cache
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7257679B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US20060190678A1 (en) * 2005-02-22 2006-08-24 Butler Douglas B Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a single DRAM cache and tag
US7506100B2 (en) 2005-02-23 2009-03-17 United Memories, Inc. Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a data cache and separate read and write registers and tag blocks
CN1328670C (zh) * 2005-03-30 2007-07-25 中国人民解放军国防科学技术大学 目录协议对多处理器结点内脏数据共享的支持方法
US7467262B2 (en) * 2005-05-24 2008-12-16 International Business Machines Corporation Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US7475195B2 (en) * 2005-05-24 2009-01-06 International Business Machines Corporation Data processing system, cache system and method for actively scrubbing a domain indication
US7478201B2 (en) * 2005-05-24 2009-01-13 International Business Machines Corporation Data processing system, cache system and method for passively scrubbing a domain indication
US7418544B2 (en) * 2005-10-05 2008-08-26 Oracle International Corporation Method and system for log structured relational database objects
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US8195890B1 (en) * 2006-08-22 2012-06-05 Sawyer Law Group, P.C. Method for maintaining cache coherence using a distributed directory with event driven updates
US20080148399A1 (en) * 2006-10-18 2008-06-19 Microsoft Corporation Protection against stack buffer overrun exploitation
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
CN101359326B (zh) * 2007-07-31 2010-11-10 英业达股份有限公司 一种刷新指定裸设备脏数据的系统及方法
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
JP5224038B2 (ja) * 2008-02-27 2013-07-03 日本電気株式会社 コンピュータ装置、コンピュータ装置の運用継続方法及びプログラム
JP5092897B2 (ja) * 2008-05-26 2012-12-05 富士通株式会社 データ移行処理プログラム、データ移行処理装置およびデータ移行処理方法
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
US8135911B2 (en) * 2008-10-21 2012-03-13 International Business Machines Corporation Managing a region cache
CN104461942B (zh) * 2009-09-15 2018-06-08 威盛电子股份有限公司 串流上下文的高速缓存系统
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20150019822A1 (en) * 2013-07-11 2015-01-15 Lsi Corporation System for Maintaining Dirty Cache Coherency Across Reboot of a Node
CN103577349B (zh) * 2013-11-06 2016-11-23 华为技术有限公司 在高速缓存中选择数据进行刷盘的方法和装置
CN103714014B (zh) * 2013-11-18 2016-12-07 华为技术有限公司 处理缓存数据的方法及装置
CN105138481B (zh) * 2014-05-30 2018-03-27 华为技术有限公司 存储数据的处理方法、装置和系统
KR101996266B1 (ko) 2014-09-18 2019-10-01 삼성전자주식회사 호스트 및 이를 포함하는 컴퓨터 시스템
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US10209891B2 (en) * 2015-08-24 2019-02-19 Western Digital Technologies, Inc. Methods and systems for improving flash memory flushing
US10482033B2 (en) * 2016-03-24 2019-11-19 Samsung Electronics Co., Ltd Method and device for controlling memory
US10545816B2 (en) * 2017-05-01 2020-01-28 International Business Machines Corporation Managed hardware accelerator address translation fault resolution utilizing a credit
US10289479B2 (en) * 2017-05-01 2019-05-14 International Business Machines Corporation Hardware accelerator address translation fault resolution
US10572337B2 (en) * 2017-05-01 2020-02-25 International Business Machines Corporation Live partition mobility enabled hardware accelerator address translation fault resolution
CN108509354B (zh) * 2018-03-22 2020-06-23 雷科防务(西安)控制技术研究院有限公司 存储芯片硬件空间回收和管理方法
WO2019193620A1 (ja) * 2018-04-02 2019-10-10 三菱電機株式会社 履歴記憶装置、履歴記憶方法及び履歴記憶プログラム
US11301380B2 (en) * 2020-05-18 2022-04-12 Micron Technology, Inc. Sector-based tracking for a page cache
US11550725B2 (en) 2020-05-18 2023-01-10 Micron Technology, Inc. Dynamically sized redundant write buffer with sector-based tracking
KR20220138760A (ko) * 2021-04-06 2022-10-13 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3382152D1 (de) 1982-12-09 1991-03-07 Sequoia Systems Inc Sicherstellungsspeichersystem.
JP2514208B2 (ja) 1987-07-15 1996-07-10 富士通株式会社 ホットスタンドバイメモリ−コピ−方式
NL8800158A (nl) 1988-01-25 1989-08-16 Philips Nv Computersysteem voorzien van een hierarchisch georganiseerd geheugen.
DE4136729C2 (de) 1990-11-05 1995-07-20 Mitsubishi Electric Corp Cache-Steuereinrichtung
JP3085899B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 マルチプロセッサシステム
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3020833B2 (ja) * 1995-06-19 2000-03-15 株式会社東芝 チェックポイント取得システム
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法

Also Published As

Publication number Publication date
CN1192315C (zh) 2005-03-09
CN1176433A (zh) 1998-03-18
DE69729917D1 (de) 2004-08-26
KR19980024009A (ko) 1998-07-06
KR100233207B1 (ko) 1999-12-01
TW343303B (en) 1998-10-21
EP0828217B1 (de) 2004-07-21
JP2916421B2 (ja) 1999-07-05
JPH1083351A (ja) 1998-03-31
US6490657B1 (en) 2002-12-03
EP0828217A1 (de) 1998-03-11

Similar Documents

Publication Publication Date Title
DE69729917T2 (de) Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE112005002180T5 (de) Lösen von Cachekonflikten
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE202017104840U1 (de) Hybriddatenspeichermanagement
DE102013204417B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen
DE112019000629B4 (de) Koordination von cacheoperationen
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE4220198A1 (de) Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE69930983T2 (de) Pseudo-genaue I-Cache-Speichereinschliessbarkeit für vertikale Cache-Speicher
DE10006430A1 (de) Verbessertes Kohärenzprotokoll für einen Computer-Cache
DE112005000996T5 (de) Mechanismus zum Annullieren von Dateneinträgen eines Umsetzungspuffers in einem Mehrprozessorsystem
DE102006002444A1 (de) Verfahren und System für eine Cache-Nutzung durch ein Vorabrufen für mehrere DMA-Lesevorgänge

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8339 Ceased/non-payment of the annual fee