-
Die
vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme
und insbesondere ein Cachespeicherverzeichnis mit einem hohen Maß an Integrität.
-
Cachespeicher
sind zu einem wesentlichen Bestandteil von Computersystemen geworden.
Sie sorgen für
einen erheblichen Leistungsvorteil durch Minimieren der Häufigkeit,
mit der langsamere Hilfsspeicher (wie etwa DRAMs) über noch
langsamere Speicherbusse gelesen und/oder geschrieben werden müssen. Sie
arbeiten typisch mit oder fast mit der gleichen Geschwindigkeit
wie der Prozessor, den sie unterstützen, und sind in der Tat häufig in
Prozessoren integriert. Außerdem
werden sie tendenziell unter Verwendung der gleichen Technologien
und Strukturbreiten wie die Prozessoren verwirklicht.
-
Die
Strukturbreite von Cachespeichern schrumpft jedoch weiter, während die
Geschwindigkeit, mit der sie arbeiten sollen, zusammen mit jener der
Prozessoren weiter ansteigt. An sich nimmt das Potenzial für Bitfehler
zu. Derweil nimmt der Bedarf an einem fehlerfreien Betrieb bei mit
kritischen Aufgaben betrauten und großtechnischen Computersystemen
weiter zu.
-
Ein
Problem, das bei Cachespeichern wahrscheinlich stärker als
bei jedem anderen Teil eines Computersystems ausgeprägt ist,
besteht darin, dass Bitfehler äußerst schädlich für den Betrieb
des gesamten Computersystems sein können. Viele Bitfehler, die
während
des Prozessorbetriebs erfasst werden, können beispielsweise durch Benachrichtigen
oder Abbrechen der Task oder des Auftrags, die bzw. der zurzeit
ausgeführt
wird, behoben werden. Ein Hilfsspeicher (wie etwa ein DRAM) kann
Fehlerkorrekturcodes (ECC: Error Correction Codes (engl.)) verwenden,
die eine automatische Einzelbitkorrektor und eine Erfassung der
meisten Mehrbitfehler ermöglichen.
-
Von
Cachespeichern wird andererseits gefordert, dass sie mit viel höheren Geschwindigkeiten als
langsamere Hilfsspeicher arbeiten. Der Geschwindigkeitsunterschied
kann mit den heutigen Technologien das Fünffache oder sogar das Zehnfache
betragen. Fehlerkorrekturcodes sind folglich unrealistisch, denn
die Zeit, die benötigt
wird, um diese Fehler zu erfassen und zu korrigieren, würde unweigerlich
die Ausführung
von zusätzlichen
Cachespeicherzyklen erfordern.
-
Ein
Grund dafür,
dass Cachespeicherbitfehler so katastrophal für ein Computersystem sein können, ist,
dass, wenn ein Fehler auftritt und wenn er erfasst wird, es mitunter
unmöglich
(oder äußerst schwer
und aufwändig)
ist, den Zustand des Speichers des Computersystems zu bestimmen.
Beispielsweise ist es bei Erfassung eines Fehlers in einem Cache-Tag
nicht direkt möglich
zu bestimmen, welcher Hilfs-(DRAM-)Speicherblock diesem Cache-Tag
entspricht. Bei einem 14-Bit-Cache-Tag
und einem Einbitfehler können
potenziell vierzehn verschiedene Blöcke des Hilfsspeichers betroffen
sein. Wenn der Cachespeicher Eigner dieses Speicherblocks ist, dann
kann jeder der möglichen
vierzehn Blöcke
des Hilfsspeichers gültig
sein oder ungültig sein.
Da es undurchführbar
ist, zu bestimmen, welcher Speicherblock betroffen ist, ist es schwierig, wenn
nicht unmöglich,
den Auftrag oder die Task, der bzw. die in diesem Speicher läuft, zu
beenden. Die einzige realistische Folgerung in einigen Situationen ist
dann das Reinitialisieren der Prozessoren, die diesen Cache-Speicher
benutzen könnten,
um zu gewährleisten,
dass der Auftrag oder die Task, der bzw. die in diesem Speicher
ausgeführt
wird, beendet wird.
-
Es
wäre folglich
vorteilhaft, einen Mechanismus zur Verfügung zu haben, um Cachespeicher-Adresstag-Bitfehler
wirksam zu erfassen und zu kompensieren.
-
Das
Dokument US-A-567 511 offenbart die Merkmale und Verfahrensschritte,
die im Oberbegriff der unabhängigen
Ansprüche
angegeben sind.
-
US-A-5
479 641 und US-A-4 945 512 zeigen weitere Beispiele für Mehrwege-Assoziativ-Caches, die
eine Paritätsprüfung anwenden.
-
-
Die
vorliegende Erfindung ist einzig durch die beigefügten Ansprüche definiert.
-
Die
Merkmale und Vorteile der vorliegenden Erfindung werden klarer erfasst
anhand der folgenden ausführlichen
Beschreibung in Verbindung mit den beigefügten Figuren, worin gleiche
Bezugszeichen auf gleichartige oder einander entsprechende Teile
verweisen und worin
-
1 ein
Blockdiagramm ist, das einen Universal-Computer gemäß der vorliegenden
Erfindung veranschaulicht;
-
2 ein
Blockdiagramm einer detaillierteren Darstellung eines Mehrprozessoren-Datenverarbeitungssystems
gemäß der vorliegenden
Erfindung ist;
-
3 ein
Blockdiagramm ist, das ein Paar Prozessormodule (CPUs) veranschaulicht,
die in 2 gezeigt sind;
-
4 ein
Blockdiagramm eines in 3 gezeigten Prozessors ist;
-
5 ein
Blockdiagramm einer AX-Einheit in dem in 4 gezeigten
Prozessor ist;
-
6 ein
Blockdiagramm ist, das einen beispielhaften Cache veranschaulicht;
-
7 ein
Blockdiagramm ist, das eine verbesserte Cache-Vergleichslogik und
ein verbessertes Cacheverzeichnis gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung veranschaulicht; und
-
8 ein
Blockdiagramm ist, das das Format jedes der Primärverzeichniseinträge 130 und Zweitverzeichniseinträge 132 in
das Cacheverzeichnis 120 gemäß einer bevorzugten Ausführungsform der
vorliegenden Erfindung veranschaulicht.
-
Die
Zuverlässigkeit
des Cachespeichers und folglich des Computersystems wird verbessert,
indem Cache-Tag-Einträge
dupliziert werden. Jeder Cache-Tag weist einen Primäreintrag
und einen Zweiteintrag auf. Bei einer assoziativen Suche von Cache-Tags
werden sowohl der Primäreintrag
als auch der Zweiteintrag mit dem Suchwert verglichen. Gleichzeitig
werden sie auch bezüglich
der Parität geprüft und miteinander
verglichen. Bei einer Übereinstimmung
entweder mit dem Primäreintrag
oder mit dem Zweiteintrag wird, wenn dieser Eintrag keinen Paritätsfehler
aufweist, ein "Cachetreffer" angezeigt. Alle
Einbit-Cache-Tag-Paritätsfehler
werden erfasst und kompensiert. Fast alle Mehrbit-Cache-Tag-Paritätsfehler
werden erfasst.
-
In
der folgenden Beschreibung sind zahlreiche besondere Einzelheiten
dargelegt, wie etwa spezifische Wort- oder Bytelängen usw., um ein umfassendes
Verständnis
der vorliegenden Erfindung zu ermöglichen. Dem Fachmann auf dem
Gebiet wird jedoch offensichtlich sein, dass die vorliegende Erfindung
ohne diese besonderen Einzelheiten umgesetzt werden kann. In anderen
Fällen
sind Schaltungen in Blockdiagrammform gezeigt worden, um nicht durch unnötige Einzelheiten
die Sicht auf die vorliegende Erfindung zu verdecken. Meist sind
Einzelheiten, die Betrachtungen zu Ablaufsteuerungen und dergleichen
betreffen, weggelassen worden, weil diese Einzelheiten nicht erforderlich
sind, um ein Gesamtverständnis
der vorliegenden Erfindung zu erreichen, und weil sie zu dem Fachkönnen eines
Durchschnittsfachmanns auf dem relevanten Gebiet gehören.
-
Der
Ausdruck "Bus" wird verwendet,
um mehrere Signale oder Leiter zu bezeichnen, die benutzt werden
können,
um eine oder mehrere verschiedene Arten von Informationen, wie etwa
Daten, Adressen, Steuer- oder Zustandsinformationen zu übertragen.
Die Ausdrücke "geltend machen" und "negieren" werden benutzt werden,
wenn darauf verwiesen wird, dass ein Signal, ein Zustandsbit oder eine ähnliche
Einrichtung in seinen bzw. ihren logisch wahren bzw. logisch falschen
Zustand gebracht wird. Wenn der logisch wahre Zustand ein Logikpegel
eins ist, wird der logisch falsche Zustand ein Logikpegel null sein.
Und wenn der logisch wahre Zustand ein Logikpegel null ist, wird
der logisch falsche Zustand ein Logikpegel eins sein.
-
1 ist
ein Blockdiagramm, das einen Universal-Computer 20 veranschaulicht.
Der Universal-Computer 20 weist einen Computerprozessor 22 und
einen über
einen Bus 26 angeschlossenen Speicher 24 auf.
Der Speicher 24 ist ein mit einer verhältnismäßig hohen Geschwindigkeit maschinenlesbares
Medium und schließt
flüchtige
Speicher, wie etwa DRAM und SRAM, sowie nichtflüchtige Speicher wie etwa ROM,
FLASH, EPROM, EEPROM und Blasenspeicher ein. Außerdem sind ein Sekundärspeicher 30,
ein externer Speicher 32, Ausgabeeinrichtungen wie etwa
ein Monitor 34, Eingabeeinrichtungen wie etwa eine Tastatur 36 (mit
Maus 37) und Drucker 38 an den Bus angeschlossen.
Der Sekundärspeicher 30 schließt maschinenlesbare
Medien wie etwa Festplattenlaufwerke, einen Magnettrommelspeicher
und einen Blasenspeicher ein. Der externe Speicher 32 schließt maschinenlesbare
Medien wie etwa Magnetdisketten, Wechselplattenlaufwerke, Magnetbänder, CD-ROMs
und sogar andere Computer, die möglicherweise über eine
Nachrichtenübertragungsleitung 28 angeschlossen
sind, ein. Der Unterschied zwischen dem sekundären Speicher 30 und
dem externen Speicher 32 wird hier in erster Linie aus
praktischen Gründen
bei der Beschreibung der Erfindung gemacht. An sich sollte einsichtig
sein, dass es wesentliche funktionale Überschneidungen dieser Elemente
gibt. Computer-Software, wie etwa Prüfprogramme, Betriebssysteme
und Anwenderprogramme, kann in einem Computersoftwarespeichermedium
wie etwa dem Speicher 24, einem Sekundärspeicher 30 und einem
externen Speicher 32 gespeichert sein. Ausführbare Versionen
einer Computersoftware 33 können aus einem nichtflüchtigen
Speichermedium wie etwa einem externen Speicher 32, einem
Sekundärspeicher 30 und
einem nichtflüchtigen
Speicher ausgelesen und für
die Ausführung
direkt in den flüchtigen
Speicher geladen werden, direkt aus dem nichtflüchtigen Speicher heraus ausgeführt werden oder
in den Sekundärspeicher 30 gespeichert
werden, bevor sie für
die Ausführung
in einen flüchtigen Speicher
geladen werden.
-
2 ist
ein Blockdiagramm einer detaillierteren Darstellung eines Mehrprozessoren-Datenverarbeitungssystems
gemäß der vorliegenden
Erfindung. Das Mehrprozessoren-Datenverarbeitungssystem 80 umfasst
mehrere Module, die über
einen intramodularen Bus 82, der von einer Speichersteuereinheit 86 gesteuert
ist, zusammengeschaltet sind. In der bevorzugten Ausführungsform
ist jedes dieser Module 84, 88, 90 auf
einer Einzelplatine enthalten, wobei die Platinen an eine Rückwandplatine
angeschlossen sind. Die Rückwandplatine
enthält
den in tramodularen Bus 82. Bei dem typischen Datenverarbeitungssystem 80,
das in 2 gezeigt ist, sind sechzehn Module gezeigt. Das
System enthält
vier (4) Prozessor-("CPU"-)Module 90,
vier (4) Eingabe/Ausgabe-Module ("EAEs") 88 und
acht (8) Speichermodule ("MMEs") 84. Jedes
der vier Eingabe/Ausgabe-Module ("EAEs") 88 ist
an einen Sekundärspeicher 30 gekoppelt
gezeigt. Dies ist funktionstypisch bei derartigen EA-Modulen 88.
Jedes EA-Modul 88 wird typisch mehrere EA-Prozessoren enthalten
(nicht gezeigt). Jedes der acht Speichermodule 84 enthält Speicher 24 und
eine (nicht gezeigte) Speicher-Steuereinrichtung. Dieser Speicher 24 (siehe 1)
ist typisch ein dynamischer Direktzugriffsspeicher (DRAM). Sehr
viele derartige Speicher 24 werden typisch unterstützt. Außerdem ist
in 2 eine Taktmanagementeinheit (TME) 98 gezeigt,
die ein übliches
Taktsignal 99 an den Rest des Systems 80 liefert.
Da Taktsignale in digitalen Computerarchitekturen allgegenwärtig sind,
wird das Taktsignal 99 hier nicht näher dargestellt, es sei denn,
es ist relevant. Außerdem
ist zu beachten, dass in der bevorzugten Ausführungsform mehrere Taktmanagementeinheiten 98 benutzt
werden, um ein redundantes Taktsignal 99 bereitzustellen.
-
3 ist
ein Blockdiagramm, das ein Paar Prozessor-(CPU-)Module 90 veranschaulicht,
die in 2 gezeigt sind. Die zwei CPU-Module 90 sind über den
intramodularen Bus 82 zusammengeschaltet, über den
sie miteinander kommunizieren. Die CPU-Module 90 enthalten
jeweils mehrere Prozessoren (CPUs) 92 und ein Level-2-(L2-)Cachespeichersystem 94,
das von den Prozessoren 92 gemeinsam benutzt wird. In der
bevorzugten Ausführungsform enthält jedes
Prozessor-(CPU-)Modul 90 bis zu vier (4) Prozessoren (CPUs) 92.
Die Prozessoren 92 und ihr L2-Cachespeichersystem 94 sind
zusammengeschaltet und kommunizieren über einen Bus 96 innerhalb
des Prozessors.
-
Das
Level-2-(L2-)Cachespeichersystem 94 wird von den Prozessoren 92 in
einem CPU-Modul 90 gemeinsam benutzt. Das L2-Cachespeichersystem 94 hält Cachekopien
von Daten, die in diese Prozessoren 92 geladen werden.
Das Cachespeichersystem 94, das hier als ein Level-2-Cache
betrachtet wird, ist über
den intramodularen Bus 82 an das Speichersteuerungssystem
(SSE) 86 angeschlossen, mit dem es kommuniziert, um die
Cachekohärenz
sowohl zwischen den Level-2-(L2-)Cachespeichern 94 in
jedem der Prozessor-(CPU-)Module 90, als auch zwischen
Level-1-(L1-)Cachespeichern 256 in jedem der Prozessoren 92 und
in den EA-Modulen 88 aufrechtzuerhalten. Das Speichersteuerungssystem (SSE) 86 bewahrt
außerdem
die Kohärenz
zwischen den verschiedenen Cachespeichern 94, 256 und dem
typisch langsameren Speicher in den Speichermodulen (MMEs) 84.
In der bevorzugten Ausführungsform
wird ein einziger Block des Speichers oder eine einzige Cachezeile
benutzt, um mittels eines einzigen Caches oder Speichers möglicherweise jede
Ebene in der Speicherhierarchie zu aktualisieren. Folglich kann
ein bestimmter Speicherblock oder eine Cache-Zeile zu einem Level-1-(L1-)Cache 256, zu
einem Level-2-(L2-)Cache 94 oder zu einer MME gehören. Es
ist jedoch zu beachten, dass eine Cache-Zeile für ein (Nur-)Lesen von mehreren
Caches in der Hierarchie gehalten werden kann.
-
4 ist
ein Blockdiagramm eines in 3 gezeigten
Prozessors 92. Der Prozessor 92 kommuniziert mit
dem Bus 96 unter Verwendung einer Busschnittstelle 78.
Die Busschnittstelle ist bidirektional mit einem vereinheitlichten
lokalen (Level-2- oder L2-)Cache 256 gekoppelt. Cache-Speicher,
wie etwa dieser vereinheitlichte lokale Cache 256, sind
typisch als schnelle statische Direktzugriffsspeicher (SRAM) ausgelegt.
In der bevorzugten Ausführungsform
ist der lokale Cache 256 in die gleiche integrierte Schaltung
wie der Rest des Prozessors 92 eingegliedert. Der lokale
Cache 256 ist der erste Block, der an die Busschnittstelle 78 koppelt.
Daten und Befehle werden über
den Bus 96 in den lokalen Cache 256 geladen, und
Daten werden aus dem lokalen Cache 256 über den Bus 96 zurückgeschrieben.
Ausführungen, die
Befehle und Daten voneinander getrennt cachen, modifizieren diese
Ausführung
nicht.
-
Der
lokale Cache 256 ist bidirektional an ein AX-Modul 260 gekoppelt.
Die AX-Einheit 260 sorgt für den Hauptteil der Funktionalität des Prozessors 92,
einschließlich
der Befehlsdecodierung. Die AX-Einheit 260 ist bidirektional
an eine Gleitkommaarithmetikeinheit 268 und eine Dezimal/Numerik-(DN-)Einheit 262 gekoppelt
und steuert ihre Abarbeitung. In der bevorzugten Ausführungsform führt die
Gleitkommaarithmetikeinheit 268 sowohl Gleitkomma-Operationen
als auch Festkomma-Multiplikationen und -Divisionen aus. Sie ist
bidirektional an den lokalen Cache 256 gekoppelt. Die Dezimal/Numerik-(DN-)Einheit 262 führt Dezimal-
und Zeichenkettenoperationen aus. Sie ist bidirektional an den lokalen
Cache 256 gekoppelt, was ihr ermöglicht, verhältnismäßig unabhängig von
der AX-Einheit 260 zu arbeiten. Vielmehr wird, wenn Dezimal-
oder Zeichenkettenoperationen erst einmal in der DN-Einheit 262 eingeleitet
worden sind, die DN-Einheit 262 durch
die Operantenverfügbarkeit
in dem lokalen Cache 256 gesteuert.
-
5 ist
ein Blockdiagramm einer AX-Einheit 260 in dem in 4 gezeigten
Prozessor 92. Die AX-Einheit 260 umfasst eine
Mikroprogramm-Steuerabschnitt-(MPS:
Microprogram Control Section (engl.))Einheit 280, einen
Hilfsbetriebsabschnitt (XOPS: Auxiliary Operations Section (engl.)) 282,
einen Grundbetriebsabschnitt (BOPS: Basic Operations Section (engl.)) 284,
einen Sicherungsspeicherpuffer (SSB: Safe Store Buffer (engl.)) 286,
einen Adressaufbereitungsabschnitt (AP: Address Preparation Section
(engl.)) 288 und einen NSA-virtuellen Segmentabschnitt 290.
Der Mikroprogramm-Steuerabschnitt (MPS) 280 ist bidirektional
an den lokalen Cache 256 gekoppelt und nimmt von diesem
Befehle entgegen. Der Mikroprogramm-Steuerabschnitt (MPS) 280 führt eine
Befehlsdecodierung aus und sorgt für eine Mikroprogrammsteuerung
des Prozessors 92. Die Mikroprogrammsteuerung verwendet
einen mikromaschinenausführbaren
Mikrocode 281, der sowohl in dynamischen als auch statischen
Speichern gespeichert ist, in Reaktion auf die Ausführung von
Programmbefehlen. Der Mikroprogramm-Steuerabschnitt (MPS) 280 ist
bidirektional an den Hilfsbetriebsabschnitt (XOPS) 282,
den Grundbetriebsabschnitt (BOPS) 284, die Gleitkommaarithmetikeinheit 268,
die Dezimal/Numerik-(D/N-)Einheit 262 (hier nicht gezeigt),
den Adressaufbereitungsabschnitt (AP) 288 und den NSA-virtuellen
Segmentabschnitt 290 gekoppelt und steuert deren Betrieb.
Der Grundbetriebsabschnitt (BOPS) 284 wird benutzt, um
Festkomma-Arithmetikoperationen, logische Operationen und Verschiebeoperationen
auszuführen.
Der Hilfsbetriebsabschnitt (XOPS) 282 führt den überwiegenden Teil der übrigen Operationen
aus. Der Adressaufbereitungs abschnitt (AP) 288 bildet effektive
Speicheradressen unter Verwendung von Adressumrechungen in einem
virtuellen Speicher. Der NSA-virtuelle Segmentabschnitt 290 ist
bidirektional an den AP-Abschnitt 288 gekoppelt und arbeitet
mit ihm zusammen, um Adressierungsverletzungen zu erfassen.
-
Der
Sicherungsspeicherpuffer (SSB) 286 speichert den aktuellen
Zustand der Prozessorumgebung 92, einschließlich der
Anwender- und Segmentregister, zum Zweck der Veränderung des Prozessorzustands.
Der SSB 286 ist an den BOPS 284, den AP-Abschnitt 288,
den MPS und den NSA 290 gekoppelt und nimmt von diesen
Signale entgegen. Der SSB 286 ist bidirektional an den
lokalen Cache 256 gekoppelt, wodurch es dem SSB 286 möglich ist, Rahmen
in den lokalen Cache 256 hinauszuschieben, wenn eine neue
Prozessorumgebung geladen wird, und aus dem lokalen Cache 256 zurückzuholen, wenn
zu einer alten Prozessorumgebung zurückgekehrt wird.
-
6 ist
ein Blockdiagramm, das einen beispielhaften Cache veranschaulicht.
Der Cache 110 empfängt
Adress- und Befehlsinformationen von einem Adressbus 112.
In dem Cache 110 werden die Adressen von einer Vergleichslogik 122 entgegengenommen.
Die Vergleichslogik 122 vergleicht typisch Abschnitte der
empfangenen Adressen mit Einträgen in
einem Cacheverzeichnis 120. Typisch entspricht jeder Eintrag
in dem Cacheverzeichnis 120 einer Cachezeile in einem Cachedatenblock 116.
Wenn eine Adresse, die auf dem Adressbus 112 angefordert wird,
mit einem Eintrag in dem Cacheverzeichnis 120 übereinstimmt
(Benutzung der Vergleichslogik 122), wird diese Übereinstimmung
als ein "Cachetreffer" angesehen. Die Cachesteuerlogik 118 wird
dann u. a. auf der Grundlage dessen, was der auszuführende Speicherbefehl
erfordert, bestimmen, was mit dem "Cachetreffer" geschehen soll. Folglich wird, falls
ein Prozessor versucht, ein Wort aus dem Speicher zu lesen, die
Cachesteuerlogik 118, wenn sie auf einen "Cachetreffer" stößt, das
ausgewählte
Wort aus der Cachezeile lesen, die dem "Treffereintrag" in dem Cacheverzeichnis 120 entspricht.
Dieses Wort wird dann über
einen Datenbus 114 zurück
zu dem anfordernden Prozessor geschickt. Das Cacheverzeichnis 120 und
die Cachedaten 116 sind typisch aus schnellem statischem
RAM (SRAM) gebildet.
-
Cachespeicher
sind im Stand der Technik wohl bekannt und werden in den meisten
modernen Computern in starkem Maße genutzt. Der obige beispielhafte
Cache ist hier als ein Beispiel herangezogen worden. Es gibt weitere
Cache-Organisationen und Architekturen im Rahmen dieser Erfindung.
-
7 ist
ein Blockdiagramm, das eine verbesserte Cache-Vergleichslogik und
ein verbessertes Cache-Verzeichnis gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung veranschaulicht. Es werden zwei Kopien
jedes Verzeichniseintrags in das Cacheverzeichnis 120 verwaltet. Eine
wird als Primärverzeichniseintrag 130 angesehen,
während
die zweite als Zweitverzeichniseintrag 132 angesehen wird.
Sie werden typisch parallel geschrieben und sollten unter normalen
Umständen
die gleichen Informationen enthalten. Jeder Verzeichniseintrag 130, 132 wird
typisch auch ein oder mehrere Paritätsbits enthalten. Die Ausgabe
aus dem Primärverzeichniseintrag 130 ist
ein Satz von Primärverzeichniseintraginhaltssignalen 140.
Genauso ist die Ausgabe aus dem Zweitverzeichniseintrag 132 ein
Satz aus Zweitverzeichniseintraginhaltssignalen 142. Diese
beiden Signale schließen
die entsprechenden Paritätsbits
ein.
-
Es
ist ein erster Komparator 134 so angeschlossen, dass er
die Primärverzeichniseintraginhaltssignale 140 empfängt. Der
andere Eingang des ersten Komparators 136 nimmt die Eingangsadressensignale 128,
die auf eine Übereinstimmung
oder einen "Treffer" hin geprüft werden,
entgegen. Diese sind typisch eine Untermenge der Adressensignale, die
dem Cache 110 präsentiert
werden. Wenn die Primärverzeichniseintraginhaltssignale 140 mit
den Eingangsadressensignalen 128 übereinstimmen, macht der erste
Komparator 134 ein Primäreintragübereinstimmungssignal 144 geltend.
Andernfalls wird das Signal 144 negiert. Genauso ist ein
zweiter Komparator 136 angeschlossen, der die Zweitverzeichniseintraginhaltssignale 142 empfängt. Der
andere Eingang des zweiten Komparators 136 nimmt die Eingangsadressensignale 128 entgegen.
Wenn die Zweitverzeichniseintraginhaltssignale 142 mit
den Eingangsadressensignalen 128 übereinstimmen, macht der zweite
Komparator 136 ein Zweiteintragübereinstimmungssignal 146 geltend.
Andernfalls wird das Signal 146 negiert.
-
Es
ist ein dritter Komparator 134 so angeschlossen, dass er
die Primärverzeichniseintraginhaltssignale 140 und
die Zweitverzeichniseintraginhaltssignale 142 empfängt und
Bit-für-Bit-Vergleiche zwischen
den Ausgaben der beiden Verzeichniseinträge 130, 132 anstellt.
Der dritte Komparator 134 liefert ein invertiertes Ausgangssignal,
das ein Abweichungssignal (MISCOMPARE-Signal) 144 ist.
Dieses Signal 144 wird immer dann geltend gemacht, wenn die
Inhalte der beiden Verzeichniseinträge 130, 132 verschieden
sind (und wird negiert, wenn sie übereinstimmen).
-
Außerdem ist
die Primäreintrag-Paritätsberechnungslogik 150 so
angeschlossen, dass sie die Primärverzeichniseintraginhaltssignale 140 empfängt. Diese
Primäreintrag-Paritätsberechnungslogik 150 prüft die Parität des Primärverzeichniseintrags 130 jedes
Mal, wenn er benutzt wird. Die Primäreintrag-Paritätsberechnungslogik 150 macht
ein Primäreintragparität-gut-Signal 160 geltend,
wenn die Parität
gut ist, und macht seine Umkehrung, ein Primäreintragparität-schlecht-Signal 161,
geltend, wenn die Parität
schlecht ist. Genauso ist auch die Zweiteintrag-Paritätsberechnungslogik 152 angeschlossen, die
Zweitverzeichniseintraginhaltssignale 142 empfängt. Diese
Zweiteintrag-Paritätsberechnungslogik 152 prüft die Parität des Zweitverzeichniseintrags 132 jedes
Mal, wenn er benutzt wird. Die Zweiteintrag-Paritätsberechnungslogik 152 macht
ein Zweiteintragparität-gut-Signal 162 geltend,
wenn die Parität
gut ist, und macht seine Umkehrung, ein Zweiteintragparität-schlecht-Signal 163,
geltend, wenn die Parität
schlecht ist. In dieser Figur sind die Primäreintrag-Paritätsberechnungslogik 150 und
die Zweiteintrag-Paritätsberechnungslogik 152 als
EXKLUSIV-ODER-Gatter gezeigt. Es ist selbstverständlich, dass dies ein häufig anzutreffendes
Verfahren der Paritätsberechnung
veranschaulicht. Es fallen jedoch noch weitere Verfahren zur Berechnung
und Prüfung der
Parität
in den Rahmen dieser Erfindung.
-
Außerdem ist
ein 2 × 1-Multiplexer
(MUX) 158 so angeschlossen, dass er die Primärverzeichniseintraginhaltssignale 140 und
die Zweitverzeichniseintragin haltssignale 142 empfängt. Der
2 × 1-MUX 158 wählt die
Inhalte aus dem einen oder dem anderen der beiden Verzeichniseinträge 130, 132 in
Abhängigkeit
von dem Wert des Primäreintragparität-schlecht-Signals 161 aus.
Wenn das Primäreintragparität-schlecht-Signal 161 negiert
ist, werden die Primärverzeichniseintraginhaltssignale 140 ausgewählt, und
wenn das Signal 161 geltend gemacht ist, werden die Zweitverzeichniseintraginhaltssignale 142 ausgewählt. Die
Ausgabe von dem 2 × 1-MUX 158 wird
als Auswahlverzeichniseintragsignalen 168 an die Cachesteuerlogik 118 geliefert.
-
Es
ist ein zwei Eingänge
aufweisendes Primäreintragtreffer-UND-Gatter 154 so
angeschlossen, dass es als Eingangssignale das Primäreintragübereinstimmungssignal 144 und
das Primäreintragparität-gut-Signal 160 empfängt und
ein Primäreintragtreffersignal 164 geltend
macht, wenn beide Eingangssignale 160, 144 geltend
gemacht sind. Genauso ist ein zwei Eingänge aufweisendes Zweiteintragtreffer-UND-Gatter 156 angeschlossen,
das als Eingangssignale das Zweiteintragübereinstimmungssignal 144 und
das Zweiteintragparität-gut-Signal 162 empfängt und
ein Zweiteintragtreffersignal 166 geltend macht, wenn beide
Eingangssignale 162, 146 geltend gemacht sind.
Es ist ein zwei Eingänge
aufweisendes Treffer-ODER-Gatter 170 so angeschlossen,
dass es als Eingangssignale das Primäreintragtreffersignal 164 und
das Zweiteintragtreffersignal 166 empfängt und ein "Treffersignal" 180 geltend
macht, wenn eines der beiden Eingangstreffersignale 164, 166 geltend
gemacht ist.
-
Es
ist ein drei Eingänge
aufweisendes MISCOMPARE-und-kein-Paritätsfehler-UND-Gatter 172 angeschlossen,
das als Eingangssignale das Primäreintragparität-gut-Signal 160,
das Zweiteintragparität-gut-Signal 162 und
das Abweichungssignal 144 empfängt und ein MISCOMPARE-und-kein-Paritätsfehlersignal 182 gelten
macht, wenn alle drei Eingangssignale 160, 162, 144 geltend
gemacht sind. Es ist ein zwei Eingänge aufweisendes Paritätsfehler-bei-beiden-Einträgen-UND-Gatter 174 so
angeschlossen, dass es als Eingangssignale das Primäreintragparität-schlecht-Signal 161 und
das Zweiteintragparität-schlecht-Signal 163 empfängt und
ein Paritätsfehler-bei-beiden-Einträgen-Signal 184 geltend macht, wenn
seine beiden Eingangssignale 161, 163 geltend
gemacht sind. Es ist ein zwei Eingänge aufweisendes fataler-Fehler-ODER-Gatter 176 so
angeschlossen, dass es als Eingangssignale das MISCOMPARE-und-kein-Paritätsfehler-Signal 182 und das
Paritätsfehler-bei-beiden-Einträgen-Signal 184 empfängt und
ein fataler-Fehler-Signal 186 geltend macht,
wenn eines seiner beiden Eingangssignale 182, 184 geltend
gemacht ist.
-
Immer
wenn die Primärverzeichniseintraginhaltssignale 140 mit
den Eingangsadressensignalen 128 übereinstimmen und die Parität für den Primärverzeichniseintrag 130 gut
ist, werden folglich die Primärverzeichniseintraginhaltssignale 140 Ausgangssignale 168,
und es wird ein "Treffersignal" 180 geltend
gemacht. Ansonsten, wenn die Zweitverzeichniseintraginhaltssignale 142 mit
den Eingangsadressensignalen 128 übereinstimmen und die Parität für den Zweitverzeichniseintrag 132 gut
ist, werden die Primärverzeichniseintraginhaltssignale 140 Ausgangssignale 168,
und es wird ein "Treffersignal" 180 geltend
gemacht. Es wird jedoch ein fataler Fehler festgestellt, wenn die
Parität
für beide
Verzeichniseinträge 130, 132 gut
ist, sie aber nicht übereinstimmen,
oder wenn die Parität
für beide
Verzeichniseinträge 130, 132 schlecht
ist.
-
8 ist
ein Blockdiagramm zur Veranschaulichung des Formats jedes der Primärverzeichniseinträge 130 und
Zweitverzeichniseinträge 132 in dem
Cacheverzeichnis 120 gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung. Jeder Verzeichniseintrag 190 umfasst
in der bevorzugten Ausführungsform
18 Bits. Der Verzeichniseintrag 190 enthält 14 Adressenbits 192,
drei Zustandsbits 194 und ein Paritätsbit 196. Es ist
zu beachten, dass in der bevorzugten Ausführungsform ein einziges Paritätsbit für jeden
Verzeichniseintrag 130, 132, 190 gespeichert
wird. Dies wird als mehr als ausreichend für die Anzahl der Adressenbits,
die paritätsgeschützt werden,
erachtet. Es sind jedoch auch andere Anzahlen von Paritätsbits und
andere Paritätserfassungsmechanismen
im Rahmen dieser Erfindung.
-
Dies
ist ein äußerst effizientes
Verfahren, das mit einem sehr geringen Aufwand bezüglich der Schaltungsanordnung
und schnell die Zuverlässigkeit
von Cacheverzeichniseinträgen
stark verbessert. Was den Verlust an Zeit oder Geschwindigkeit betrifft, so
ist im Stand der Technik ein einziger Bit-für-Bit-Vergleich 134 zwischen
einem Verzeichniseintrag 130 und den Eingangsadressensignalen 128 erforderlich.
Bei dieser Erfindung werden sowohl die beiden anderen Bit-für-Bit-Vergleiche 136, 138, als
auch das Berechnen und Prüfen
der Parität 150, 152 parallel
zu diesem Vergleich 134 ausgeführt, so dass folglich keine
weiteren Zyklen für
die Teile dieses Verfahrens, die die meiste Zeit beanspruchen, erforderlich
sind. Der einzige tatsächliche
Zeitaufwand entsteht durch das Hinzufügen der Treffer-UND-Gatter 154, 156 und
des ODER-Gatters 170, um das "Treffersignal" 180 zu erzeugen, sowie des
2 × 1-MUX 158,
um die Ausgangssignale 168 zu erzeugen, wenn es einen Treffer
gibt, wobei dies typisch in demselben Zyklus wie das Vergleichen
erfolgen kann. Im Tausch gegen diese minimale Zunahme der Weglänge (und
typisch ohne Zunahme der erforderlichen Zyklen) wird die Cacheverzeichniszuverlässigkeit
wesentlich erhöht.
Wenn Verzeichniseintragfehler im Stand der Technik auch recht selten
sind, so ist die Wahrscheinlichkeit, dass beide, der Primäreintrag 130 und
der Zweiteintrag 132, gleichzeitig schlecht sind, bei Anwendung
dieser Erfindung fast nicht vorhanden.
-
Alle
Einbit-Paritätsfehler
werden durch die Paritätsprüfüng 150, 152 erfasst
und durch die Auswahl des übereinstimmenden
Eintrags ohne Paritätsfehler
kompensiert. Alle ungeraden Anzahlen von schlechten Bits in einem
Verzeichniseintrag 130, 132 werden durch die Paritätsprüfung automatisch
erfasst und durch die Auswahl des übereinstimmenden Eintrags ohne
Paritätsfehler
kompensiert. Eine ungerade Anzahl von schlechten Bits in beiden
Verzeichniseinträgen 130, 132 wird
fast immer erfasst, 184. Eine gerade Anzahl von schlechten
Bits in einem der Verzeichniseinträge 130, 132 oder
in beiden Verzeichniseinträgen 130, 132 wird
fast immer erfasst, 182, da die beiden Verzeichniseinträge 130, 132 voneinander
abweichen, 148. Das Ergebnis ist wesentlich zuverlässiger,
als das mit einem einzigen Paritätsbit 196 und
einem einzigen Verzeichniseintrag 130, 132 möglich wäre.