DE60203030T2 - Hochintegres Cacheverzeichnis - Google Patents

Hochintegres Cacheverzeichnis Download PDF

Info

Publication number
DE60203030T2
DE60203030T2 DE60203030T DE60203030T DE60203030T2 DE 60203030 T2 DE60203030 T2 DE 60203030T2 DE 60203030 T DE60203030 T DE 60203030T DE 60203030 T DE60203030 T DE 60203030T DE 60203030 T2 DE60203030 T2 DE 60203030T2
Authority
DE
Germany
Prior art keywords
cache
cache entry
parity
entry
primary
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 - Lifetime
Application number
DE60203030T
Other languages
English (en)
Other versions
DE60203030D1 (de
Inventor
Charles P. Phoenix Ryan
William A. Phoenix Shelly
Stephen A. Phoenix Scheurich
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.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
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 Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of DE60203030D1 publication Critical patent/DE60203030D1/de
Application granted granted Critical
Publication of DE60203030T2 publication Critical patent/DE60203030T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • 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
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

  • 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.
  • Weitere Dokumente, die diese Techniken offenbaren, sind sowohl EP 0 989 492 A und US 6 226 763 B1 als auch US-A-6 134 699.
  • 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.

Claims (12)

  1. Verfahren zum Vergleichen von Cache-Tag-Einträgen (132, 130) mit einem Cacheziel unter Verwendung eines Primärcacheeintrags und eines Zweitcacheeintrags (132), in denen derselbe Tagwert geladen ist, wobei das Verfahren enthält: A) Vergleichen einer Primärcacheeintragsausgabe von dem Primärcacheeintrag mit dem Cacheziel; B) Vergleichen einer Zweitcacheeintragsausgabe von dem Zweitcacheeintrag mit dem Cacheziel; C) Auswählen der Primärcacheeintragsausgabe als Cacheeintragsausgabe, wenn die Primärcacheeintragsausgabe mit dem Cacheziel übereinstimmt; und D) Auswählen der Zweitcacheeintragsausgabe als Cacheeintragsausgabe, wenn die Primärcacheeintragsausgabe nicht mit dem Cacheziel übereinstimmt; E) Prüfen einer Primärcacheeintragsparität der Primärcacheeintragsausgabe für ein Primärcacheeintragsparitätsergebnis; F) Prüfen einer Zweitcacheeintragsparität der Zweitcacheeintragsausgabe für ein Zweiteintragsparitätsergebnis; G) Identifizieren eines Primärcacheeintragtreffers, wenn die Primärcacheeintragsausgabe mit dem Cacheziel übereinstimmt und das Primärcacheeintragsparitätsergebnis gut ist; H) Identifizieren eines Zweitcacheeintragtreffers, wenn die Zweitcacheeintragsausgabe mit dem Cacheziel übereinstimmt und das Zweitcacheeintragsparitätsergebnis gut ist; und I) Identifizieren eines Cacheeintragtreffers, wenn entweder in Schritt (G) der Primärcacheeintragtreffer identifiziert wurde oder in Schritt (H) der Zweitcacheeintragtreffer identifiziert wurde; dadurch gekennzeichnet, dass es weiter enthält: J) Vergleichen der Primärcacheeintragsausgabe mit der Zweitcacheeintragsausgabe; K) Identifizieren eines Mehrfachbitparitätsfehlers, wenn die Primärcacheeintragsausgabe nicht mit der Zweitcacheeintragsausgabe übereinstimmt und das Primärcacheparitätsergebnis gut ist und das Zweitcacheeintragsparitätsergebnis gut ist.
  2. Verfahren nach Anspruch 1, das weiter enthält: L) Identifizieren eines Doppelcachefehleintragfehlers, wenn das Primärcacheparitätsergebnis schlecht ist und das Zweitcacheeintragsparitätsergebnis schlecht ist.
  3. Verfahren nach Anspruch 2, das weiter enthält: M) Identifizieren eines fatalen Eintragsfehlers, wenn entweder in Schritt (G) ein Mehrfachbitparitätsfehler identifiziert wurde oder in Schritt (H) ein Doppelcachefehleintragfehler identifiziert wurde.
  4. Verfahren nach Anspruch 1, das weiter enthält: F) Identifizieren eines Doppelcachefehleintragfehlers, wenn das Primärcacheparitätsergebnis schlecht ist und das Zweitcacheeintragsparitätsergebnis schlecht ist.
  5. Verfahren nach Anspruch 1, bei dem das Prüfen der Primärcacheeintragsparität in Schritt (F) und das Prüfen der Zweitcacheeintragsparität in Schritt (G) eine XOR-Paritätsprüfung verwendet, die eine gerade Parität ergibt.
  6. Verfahren nach Anspruch 1, bei dem das Prüfen der Primärcacheeintragsparität in Schritt (F) und das Prüfen der Zweitcacheeintragsparität in Schritt (G) eine XOR-Paritätsprüfung verwendet, die eine ungerade Parität ergibt.
  7. Cachevergleichsschaltung (122) zum Vergleichen von Cache-Tag-Einträgen mit einem Cacheziel unter Verwendung eines Primärcacheeintrags (130) und eines Zweitcacheeintrags (132), in denen der selbe Tagwert geladen ist, wobei die Cachevergleichsschaltung enthält: A) eine Schaltung zum Vergleichen einer Primärcacheeintragsausgabe von dem Primärcacheeintrag mit dem Cacheziel; B) eine Schaltung zum Vergleichen einer Zweitcacheeintragsausgabe von dem Zweitcacheeintrag mit dem Cacheziel; C) eine Schaltung zum Auswählen der Primärcacheeintragsausgabe als Cacheeintragsausgabe, wenn die Primärcacheeintragsausgabe mit dem Cacheziel übereinstimmt; und D) eine Schaltung zum Auswählen der Zweitcacheeintragsausgabe als Cacheeintragsausgabe, wenn die Primärcacheeintragsausgabe nicht mit dem Cacheziel übereinstimmt; E) eine Schaltung zum Prüfen einer Parität der Primärcacheeintragsausgabe und zum Bestätigen eines Primärcacheeintragsparitätsergebnisses als gut, wenn die Parität der Primärcacheeintragsausgabe gut ist; F) eine Schaltung zum Prüfen einer Parität der Zweitcacheeintragsausgabe und zum Bestätigen eines Zweitcacheeintragsparitätsergebnis als1 gut, wenn die Parität der Zweitcacheeintragsausgabe gut ist; G) eine Schaltung zum Bestätigen eines Primärcacheeintragtreffers, wenn die Primärcacheeintragsausgabe mit dem Cacheziel übereinstimmt und das Primärcacheeintragsparitätsergebnis gut bestätigt ist; H) eine Schaltung zum Bestätigen eines Zweitcacheeintragtreffers, wenn die Zweitcacheeintragsausgabe mit dem Cacheziel übereinstimmt und das Zweitcacheeintragsparitätsergebnis gut bestätigt ist; und I) eine Schaltung zum Bestätigen eines Cacheeintragtreffers, wenn entweder in Schritt (G) der Primärcacheeintragtreffer bestätigt wurde oder in Schritt (H) der Zweitcacheeintragtreffer bestätigt wurde; dadurch gekennzeichnet, dass sie weiter enthält: J) eine Schaltung zum Vergleichen der Primärcacheeintragsausgabe mit der Zweitcacheeintragsausgabe; K) eine Schaltung zum Bestätigen eines Mehrfachbitparitätsfehlers, wenn die Primärcacheeintragsausgabe nicht mit der Zweitcacheeintragsausgabe übereinstimmt und das Primärcacheparitätsergebnis gut bestätigt ist und das Zweitcacheeintragsparitätsergebnis gut bestätigt ist.
  8. Cachevergleichsschaltung nach Anspruch 7, die weiter enthält: L) eine Schaltung zum Bestätigen eines Doppelcachefehleintragfehlers, wenn das Primärcacheparitätsergebnis gut verneint ist und das Zweitcacheeintragsparitätsergebnis gut verneint ist
  9. Cachevergleichsschaltung nach Anspruch 8, die weiter enthält: M) eine Schaltung zum Identifizieren eines fatalen Eintragsfehlers, wenn entweder in Schritt (G) ein Mehrfachbitparitätsfehler bestätigt wurde oder in Schritt (H) ein Doppelcachefehleintragfehler bestätigt wurde.
  10. Cachevergleichsschaltung nach Anspruch 7, die weiter enthält: F) eine Schaltung zum Identifizieren eines Doppelcachefehleintragfehlers, wenn das Primärcacheparitätsergebnis schlecht verneint ist und das Zweitcacheeintragsparitätsergebnis gut verneint ist.
  11. Cachevergleichsschaltung nach Anspruch 7, bei der das Prüfen der Parität in der Schaltung (F) und das Prüfen der Parität in der Schaltung (K) eine XOR-Paritätsprüfung verwendet, die eine gerade Parität ergibt.
  12. Cachevergleichsschaltung nach Anspruch 8, bei der das Prüfen der Parität in der Schaltung (F) und das Prüfen der Parität in der Schaltung (K) eine XOR-Paritätsprüfung verwendet, die eine ungerade Parität ergibt.
DE60203030T 2001-07-17 2002-04-22 Hochintegres Cacheverzeichnis Expired - Lifetime DE60203030T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US907302 2001-07-17
US09/907,302 US6898738B2 (en) 2001-07-17 2001-07-17 High integrity cache directory

Publications (2)

Publication Number Publication Date
DE60203030D1 DE60203030D1 (de) 2005-03-31
DE60203030T2 true DE60203030T2 (de) 2006-04-13

Family

ID=25423865

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60203030T Expired - Lifetime DE60203030T2 (de) 2001-07-17 2002-04-22 Hochintegres Cacheverzeichnis

Country Status (4)

Country Link
US (1) US6898738B2 (de)
EP (1) EP1278123B9 (de)
AT (1) ATE289690T1 (de)
DE (1) DE60203030T2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968427B1 (en) * 2002-12-02 2005-11-22 Advanced Micro Devices, Inc. Built-in self test circuit for testing cache tag array and compare logic
US7051166B2 (en) * 2003-04-21 2006-05-23 Hewlett-Packard Development Company, L.P. Directory-based cache coherency scheme for reducing memory bandwidth loss
GB0602641D0 (en) * 2006-02-09 2006-03-22 Eads Defence And Security Syst High speed data processing system
US20080010566A1 (en) * 2006-06-21 2008-01-10 Chang Tsung-Yung Jonathan Disabling portions of memory with non-deterministic errors
US7809980B2 (en) * 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
US8356239B2 (en) * 2008-09-05 2013-01-15 Freescale Semiconductor, Inc. Selective cache way mirroring
US8145985B2 (en) * 2008-09-05 2012-03-27 Freescale Semiconductor, Inc. Error detection schemes for a unified cache in a data processing system
US8291305B2 (en) * 2008-09-05 2012-10-16 Freescale Semiconductor, Inc. Error detection schemes for a cache in a data processing system
US8051337B2 (en) * 2009-01-22 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for fast cache-hit detection
US10496484B2 (en) * 2016-08-05 2019-12-03 Sandisk Technologies Llc Methods and apparatus for error detection for data storage devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945512A (en) * 1988-09-07 1990-07-31 Unisys Corporation High-speed partitioned set associative cache memory
US5479641A (en) * 1993-03-24 1995-12-26 Intel Corporation Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking
US5729677A (en) * 1995-07-31 1998-03-17 Motorola Inc. Method of testing a cache tag memory array
US5916314A (en) * 1996-09-11 1999-06-29 Sequent Computer Systems, Inc. Method and apparatus for cache tag mirroring
US5867511A (en) * 1997-04-14 1999-02-02 International Business Machines Corporation Method for high-speed recoverable directory access
US6240532B1 (en) * 1998-04-06 2001-05-29 Rise Technology Company Programmable hit and write policy for cache memory test
JP3922844B2 (ja) * 1999-09-02 2007-05-30 富士通株式会社 キャッシュtag制御方法及びこの制御方法を用いた情報処理装置
US6708294B1 (en) * 1999-09-08 2004-03-16 Fujitsu Limited Cache memory apparatus and computer readable recording medium on which a program for controlling a cache memory is recorded

Also Published As

Publication number Publication date
US20030018936A1 (en) 2003-01-23
EP1278123A1 (de) 2003-01-22
ATE289690T1 (de) 2005-03-15
US6898738B2 (en) 2005-05-24
EP1278123B1 (de) 2005-02-23
DE60203030D1 (de) 2005-03-31
EP1278123B9 (de) 2005-08-24

Similar Documents

Publication Publication Date Title
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE112007003801B3 (de) Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
CN101495976B (zh) 用于直接更新软件事务存储器的方法和系统
DE3801361A1 (de) Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE60203030T2 (de) Hochintegres Cacheverzeichnis
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE4410060A1 (de) Rechenvorrichtung
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE4311441C2 (de) Verfahren zum Betreiben eines Mikroprozessors mit einem externen Anschluß
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE112017003350T5 (de) Speicherauslesebefehle, prozessoren, verfahren und systeme, die bei defekten daten keine ausnahme annehmen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition