DE19882853B3 - Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist - Google Patents

Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist Download PDF

Info

Publication number
DE19882853B3
DE19882853B3 DE19882853.5T DE19882853T DE19882853B3 DE 19882853 B3 DE19882853 B3 DE 19882853B3 DE 19882853 T DE19882853 T DE 19882853T DE 19882853 B3 DE19882853 B3 DE 19882853B3
Authority
DE
Germany
Prior art keywords
memory
logic
data
data value
error
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
DE19882853.5T
Other languages
English (en)
Other versions
DE19882853T1 (de
Inventor
Vincent Von Bokern
Zohar Bogin
David Freker
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE19882853T1 publication Critical patent/DE19882853T1/de
Application granted granted Critical
Publication of DE19882853B3 publication Critical patent/DE19882853B3/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Abstract

Steuereinrichtung (12), die zwischen einem Speichersubsystem (14) und wenigstens einem Speicherzugriffsanforderungen ausgebenden Teilnehmer (10, 16, 22) eingekoppelt ist, wobei die Speicherzugriffsanforderungen Lese- und Schreibanforderungen umfassen,
wobei die Steuereinrichtung aufweist:
eine Zugriffslogik (45a–45c, 30, 37, 41), die über Schnittstellen mit den anfordernden Teilnehmern (10, 16, 22) und über eine Schnittstelle (37) mit dem Speichersubsystem (14) gekoppelt ist,
eine Fehlererfassungslogik (39), die aus dem Speichersubsystem (14) ausgegebene Datenwerte empfängt und ein Fehlersignal auf einer Leitung (27) ausgibt, welches anzeigt, ob der von dem Speichersubsystem (14) ausgegebene Datenwert einen korrigierbaren Fehler aufweist,
eine mit der Zugriffslogik und der Leitung (27) gekoppelte Korrekturlogik (35), die ein Steuersignal der Zugriffslogik abtastet, welches anzeigt, ob es sich bei einem Zugriff auf das Speichersubsystem (14) um eine Speicherleseoperation aufgrund einer Leseanforderung eines der anfordernden Teilnehmer handelt,
wobei die Korrekturlogik (35) jedesmal dann, wenn das abgetastete Steuersignal anzeigt, dass es sich um eine Speicherleseoperation handelt, und wenn das Signal auf der Leitung (27) anzeigt, dass der gelesene Datenwert einen korrigierbaren Fehler aufweist, eine Anforderung zum Schreiben einer korrigierten Version des gelesenen Datenwerts in das Speichersubsystem (14) an die Zugriffslogik ausgibt, wobei bei der so angeforderten Schreiboperation die von der Fehlererfassungslogik (39) erzeugte korrigierte Version der Daten, welche in einem Speicher (105) zwischengespeichert ist, in das Speichersubsystem (14) zurückgeschrieben wird.

Description

  • Die vorliegende Erfindung betrifft eine Einrichtung, insbesondere eine Steuereinrichtung, die zwischen einem Speichersubsystem und wenigstens einem Speicherzugriffsanforderungen ausgebenden Teilnehmer eingekoppelt ist, wobei die Speicherzugriffsanforderungen Lese- und Schreibanforderungen umfassen, wobei die Steuereinrichtung eine Zugriffslogik, die über Schnittstellen mit den anfordernden Teilnehmern und über eine Schnittstelle mit dem Speichersubsystem gekoppelt ist, eine Fehlererfassungslogik, die aus dem Speichersubsystem ausgegebene Datenwerte empfängt und ein Fehlersignal auf einer Leitung ausgibt, welches anzeigt, ob der von dem Speichersubsystem ausgegebene Datenwert einen korrigierbaren Fehler aufweist, und eine mit der Zugriffslogik und der Leitung gekoppelte Korrekturlogik, die eine korrigierte Version der Daten erzeugt, aufweist. Ferner betrifft die Erfindung ein Verfahren zum Korrigieren beschädigter Daten eines Speichersubsystems mit Hilfe einer solchen Steuereinrichtung und ein Computersystem, das eine solche Steuereinrichtung aufweist.
  • Einige moderne Computer verwenden Fehlerkorrekturtechniken, um automatisch aus einem Speichersubsystem gelesene beschädigte Daten zu korrigieren. Beispielsweise werden bei einer Fehlerkorrekturtechnik Fehlerkorrekturcodes (ECCs) zusammen mit jedem Datenwert in dem Speichersubsystem gespeichert. Wenn ein Datenwert in dem Speicher in einem Computersystem, welches eine ECC-basierte Fehlerkorrekturtechnik benutzt, geschrieben wird, wird der Datenwert durch eine kombinatorische Logik hindurchgeleitet, um einen ECC-Wert zu erzeugen. Der ECC-Wert kann als eine Signatur angesehen werden, die dem ursprünglichen Datenwert entspricht, und wird in dem Speicher zusammen mit dem Datenwert gespeichert. Wenn später der Datenwert aus dem Speicher gelesen wird, wird der ECC-Wert zusammen mit dem Datenwert ausgegeben, und sowohl der ECC- als auch der Datenwert werden einem Syndromgenerator eingegeben. Der Syndromgenerator erzeugt einen Wert, der Syndrom genannt wird und welcher typischerweise vom Wert Null ist, sofern der Datenwert nicht beschädigt worden ist, und anderenfalls ungleich Null ist. (Hierbei bezieht sich der Begriff beschädigter Datenwert auf einen Datenwert, bei welchem eines oder mehrere Bits in Bezug auf ihren richtigen Zustand invertiert worden sind.) Das Syndrom wird einem Flip-Vektor-Generator eingegeben, in dem es verwendet wird, um eine Tabelle von Flip-Vektoren genannten Werten zu indexieren. Bei einem System, das in der Lage ist, einen Einzelbitfehler zu korrigieren, enthält die Tabelle von Flip-Vektoren typischerweise jeweils einen Eintrag für jede mögliche Bitposition in einem Datenwert, wobei jeder Eintrag ein einzelnes gesetztes Bit an jeweils einer anderen Bitposition als die anderen Einträge aufweist. Somit wird durch Exklusiv-ODER-Kombination eines Datenwerts, der einen Einzelbitfehler aufweist, und des richtigen Flip-Vektors das fehlerhafte Bit invertiert (flipped), so dass der ursprüngliche Datenwert wiederhergestellt wird. Weil die Fehlerkorrektur typischerweise in dem Übertragungspfad zwischen dem Speicher und dem Verbraucher des Datenwerts (z. B. einem Prozessor, einem Graphikbeschleuniger, etc.) stattfindet, ist die Fehlerkorrektur für den Verbraucher transparent, das heißt unsichtbar.
  • Eine Einschränkung der oben beschriebenen Fehlerkorrekturtechnik besteht darin, dass dann, wenn die Quelle der Datenbeschädigung der im Speicher gespeicherte Wert ist (beispielsweise infolge eines flüchtigen Ereignisses während der Übertragung des Datenwerts zum Speicher oder während der Speicherung des Datenwerts in dem Speicher), die Korrektur des Einzelbitfehlers beim Lesen des Datenwerts aus dem Speicher nicht den beschädigten Wert im Speicher selbst korrigiert. Mit anderen Worten, obwohl ein wiederhergestellter Datenwert einem Verbraucher geliefert wird, bleibt der Datenwert im Speichersubsystem beschädigt. Dies ist wesentlich, weil viele Computersysteme Fehlerkorrekturtechniken benutzen, die einen Einzelbitfehler korrigieren können, aber nicht Mehrfachbitfehler. Demzufolge wird bei derartigen Systemen dann, wenn ein oder mehrere weitere Bits eines bereits beschädigten Datenwerts fehlerhafterweise invertiert werden, der Datenwert unwiederherstellbar beschädigt.
  • Aus der US 4,884,271 ist ein Computersystem mit einer CPU, einer RAM-Speichereinheit und einer Speichersteuereinrichtung bekannt, wobei die Speichersteuereinrichtung eine Einrichtung der eingangs genannten Art umfasst. Die Druckschrift befasst sich ebenfalls mit der Fehlerkorrektur. Es wird eine Anordnung beschrieben, bei der Daten einer partiellen Wortbreite von einer CPU zu einem Hauptspeicher mit einer größeren vollen Wortbreite übertragen werden, wobei den Daten mit der größeren, vollen Wortbreite im Speicher zusätzlich Fehlerkorrekturbits (ECC-Bits) angehängt sind. Wenn bei einem solchen System eine Fehlerkorrektur vorgesehen ist und eine Schreiboperation von der CPU zu dem Speicher durchgeführt werden soll, so wird zunächst das Wort voller Breite, in dem durch die Schreiboperation ein Teil geändert werden soll, aus dem Speicher zusammen mit seinem Fehlerkorrekturcode gelesen. Der Fehlerkorrekturcode wird überprüft und, sofern sich ein korrigierbarer Fehler zeigt, das Wort voller Breite korrigiert. Dann wird das korrigierte Wort durch die von der CPU eingehenden zu schreibenden Daten partieller Wortbreite modifiziert. Dann werden die neuen ECC-Bits erzeugt, und es werden das modifizierte Wort und die neuen ECC-Bits in den Speicher zurückgeschrieben. Ausgehend davon befasst sich die Druckschrift mit einer Erhöhung der Systemleistung durch Verkürzung des beschriebenen Ablaufs, indem das Lesen des Worts aus dem Speicher, in das die von der CPU eingehenden zu schreibenden Daten eingespeichert werden soll, gelesen und überprüft wird, wobei für den (relativ häufigen) Fall, dass die gelesenen Daten keinen Fehler aufweisen, ein relativ schneller Umgehungspfad zur Verfügung gestellt wird. Bei dieser Vorgehensweise werden nur dann korrigierte Daten in den Speicher zurückgeschrieben, wenn eine Schreiboperation in demselben Speicherwort stattfindet. Wenn beispielsweise das erste Halbwort von der CPU in dem Speicher geschrieben werden soll, so wird ggf. das zweite Halbwort korrigiert und zurückgeschrieben. Bei Leseoperationen, d. h. bei Leseanforderungen der CPU, werden dagegen keine korrigierten Daten in den Speicher zurückgeschrieben; es werden lediglich korrigierte Daten an die anfordernde CPU ausgegeben. Werden fehlerhafte Daten gelesen, so bleiben die fehlerhaften Daten im Speicher, so dass das eingangs beschriebene Problem auftreten kann. Insbesondere bei solchen Daten, die für lange Zeit in dem Speicher unverändert gespeichert bleiben sollen und die von den anfordernden Teilnehmern häufig nur gelesen werden, gibt es keine Korrektur.
  • US 4,319,356 beschreibt einen Korrekturzyklus beim Refresh eines RAM, der periodisch zu jeden Speicherplatz separat von normalen Lese- oder Schreiboperationen ausgeführt wird.
  • US 4,939,694 beschreibt ein sich selbst testendes Speichersystem.
  • Gemäß US 4,535,455 wird dann, wenn beim Lesen von gespeicherten Daten ein Fehler festgestellt wird, die Adresse gespeichert, die Art des Fehlers gespeichert, ein Interrupt aufgrund eines Fehlersignals erzeugt und in eine Interrupt-Routine eingetreten, wobei im Verlauf der Interrupt-Routine der Speicherblock identifiziert wird, in welchem der Fehler auftrat, die Art des Fehlers bestimmt wird, auf den Speicherplatz des Speicherblocks erneut zugegriffen wird, jedes gelesene Wort ggf. korrigiert wird, der korrigierte Wert zurückgeschrieben wird und erneut ein Kontroll-Lesen durchgeführt wird, um zu überprüfen, ob es sich um einen permanenten Fehler handelt.
  • US 4,604,750 beschreibt ein Speichersteuersystem, bei dem in einen Speicher sowohl die Daten als auch ein zugehöriger Fehlerkorrekturcode eingeschrieben werden sollen. Um trotz eines langsamen Verfahrens zum Berechnen des Fehlerkorrekturcodes einen schnellen Zugriff auf die Daten zu ermöglichen, schlägt die Druckschrift vor, zunächst die Daten in den Speicher einzuschreiben, bevor der Fehlerkorrekturcode berechnet worden ist, und den Fehlerkorrekturcode nachträglich einzuschreiben. So kann bereits auf neu eingeschriebene Daten zugegriffen werden, bevor der zugehörige Fehlerkorrekturcode eingeschrieben worden ist.
  • Der Erfindung liegt die Aufgabe zugrunde, die Speicherung fehlerhafter Daten zu verringern, insbesondere die Ansammlung von Fehlern im Speicher über längere Zeit zu reduzieren.
  • Diese Aufgabe wird durch eine Steuereinrichtung mit den Merkmalen des Anspruchs 1, ein Verfahren mit den Merkmalen des Anspruchs 13 bzw. ein Computersystem mit den Merkmalen des Anspruchs 21 gelöst. Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Bei den erfindungsgemäßen Einrichtungen und dem erfindungsgemäßen Verfahren wird eine Zugriffslogik zum Zugreifen auf einen Speicher zur Verfügung gestellt. Für jeden durch den Speicher bei einer Speicherleseoperation ausgegebenen Datenwert erzeugt eine Fehlererfassungslogik ein Fehlersignal, welches anzeigt, ob der Datenwert einen korrigierbaren Fehler aufweist. Bei jedem Datenwert, bei dem das Fehlersignal anzeigt, dass er einen korrigierbaren Fehler aufweist, fordert die Korrekturlogik die Zugriffslogik auf, eine korrigierte Version des Datenwerts in den Speicher zu schreiben.
  • Die vorliegende Erfindung wird beispielhaft und nicht in einschränkender Weise anhand der Figuren der begleitenden Zeichnungen veranschaulicht, in welchen gleiche Bezugszeichen ähnliche Elemente anzeigen und in welchen:
  • 1 ein Blockschaltbild einer Einrichtung ist, in welcher ein oder mehrere Ausführungsbeispiele der vorliegenden Erfindung verwendet werden können;
  • 2 ein Blockschaltbild eines Ausführungsbeispiels einer Subsystemsteuereinrichtung ist;
  • 3 ein Blockschaltbild einer Speicherkorrekturlogik gemäß einem Ausführungsbeispiel ist;
  • 4 ein Ausführungsbeispiel eines Speichersubsystems veranschaulicht, das mehrere Bauelementezeilen enthält;
  • 5 ein Zeitdiagramm ist, das einen Pipeline-artigen Zugriff auf ein Speichersubsystem veranschaulicht;
  • 6A eine Beispielliste von Kommandos zum Lesen von Daten aus einem Speichersubsystem ist;
  • 6B einen Säuberungspuffer zeigt, nachdem die erste Leseoperation initiiert worden ist;
  • 6C den Säuberungspuffer zeigt, nachdem die zweite Leseoperation initiiert worden ist;
  • 6D den Säuberungspuffer zeigt, nachdem die dritte Leseoperation initiiert worden ist;
  • 6E einen Säuberungspuffer zeigt, nachdem eine vierte Leseoperation initiiert worden ist und nachdem die Daten, die einer ersten Leseoperation entsprechen, aus einem Speichersubsystem ausgegeben worden sind;
  • 6F einen Säuberungspuffer zeigt, nachdem eine fünfte Leseoperation initiiert worden ist und nachdem Daten, die einer zweiten Leseoperation entsprechen, aus einem Speichersubsystem ausgegeben worden sind;
  • 6G einen Säuberungspuffer zeigt, nachdem Daten, die einer dritten Leseoperation entsprechen, aus einem Speichersubsystem ausgegeben worden sind;
  • 6H einen Säuberungspuffer zeigt, nachdem eine Säuberungsoperation als abgeschlossen oder initiiert bestimmt worden ist;
  • 7 ein Ausführungsbeispiel zum Schreiben korrigierter Daten zurück in ein Speichersubsystem veranschaulicht;
  • 8 ein Ablaufdiagramm eines Verfahrens gemäß einem oder mehrerer Ausführungsbeispiele der vorliegenden Erfindung ist.
  • Gemäß den verschiedenen Ausführungsbeispielen der vorliegenden Erfindung werden die Adressen, die bei Speicherleseoperationen angelegt werden, durch eine Speicherkorrekturlogik mitgelauscht (snooped) und in einem Puffer gespeichert. Wenn die jeweiligen Datenwerte, die den gespeicherten Adressen entsprechen, aus dem Speicher ausgegeben werden, wird der Datenwert der Fehlerlogik eingegeben, die die Speicherkorrekturlogik benachrichtigt, sofern ein korrigierbarer Fehler erfasst wird, und die eine korrigierte Version des Datenwerts erzeugt. Wenn ein korrigierbarer Fehler in einem Datenwert erfasst wird, gibt die Speicherkorrekturlogik eine Anforderung zum Schreiben der korrigierten Version des Datenwerts zurück in den Speicher an der Adresse aus dem Puffer, die dem Datenwert entspricht, aus. Die korrigierte Version des Datenwerts wird dann in den Speicher an diejenige Adresse zurückgeschrieben, aus welcher der Datenwert gelesen wurde, wobei der beschädigte Datenwert mit den korrigierten Daten überschrieben wird. Da die beschädigten Daten in dem Speicher und nicht nur in dem Übertragungspfad zu einem Verbraucher korrigiert werden, wird es viel weniger wahrscheinlich, dass weitere beschädigende Ereignisse Daten bewirken, die nicht wiederherstellbar werden. Im Ergebnis wird die Gesamtsystemzuverlässigkeit erhöht.
  • 1 ist ein Blockschaltbild einer Einrichtung 15, in welcher ein oder mehrere Ausführungsbeispiele der vorliegenden Erfindung verwendet werden können. Die Einrichtung 15 umfasst einen Prozessor 10, ein Speichersubsystem 14, ein Graphiksubsystem 16 und ein I/O-Subsystem 22, die sämtlich mit einer Subsystemsteuereinrichtung 12 gekoppelt sind. Bei einem Ausführungsbeispiel ist der Prozessor 10 mit der Subsystemsteuereinrichtung 12 über ein lokalen Bus 11 gekoppelt. Das Graphiksubsystem 16, das Speichersubsystem 14 und das I/O-Subsystem 22 sind in gleicher Weise mit der Subsystemsteuereinrichtung über jeweilige Busse gekoppelt.
  • Das Speichersubsystem 14 ist typischerweise aus Halbleiterspeichern mit wahlfreiem Zugriff (RAM) aufgebaut, wie beispielsweise dynamischen RAM mit erweiterter Datenausgabe (EDO DRAN) oder synchronen dynamischen RAM (SDRAM). Andere Arten von Speicherbauelementen, einschließlich RAMBUS®-DRAM-Bauelementen, die von der Rambus®, Inc. aus Mountain View, Kalifornien, entwickelt wurden, und statischen RAM-Bauelementen (SRAM), können ebenfalls benutzt werden.
  • Das I/O-Subsystem 22 ist aus einem oder mehreren Komponentenbussen (24, 25) aufgebaut, mit welchen verschiedene I/O-Einrichtungen (26A, 26B, 26D, 26E) gekoppelt sind. Eine Vielzahl verschiedener Busse können in dem I/O-Subsystem 22 verwendet werden, einschließlich beispielsweise eines Peripheriekomponentenverbindungsbusses (PCI), eines Industriestandardarchitektur(ISA)-Busses, eines erweiterten ISA-Busses (EISA), eines von der Firma IBM® Corporation aus Armonk, New York, entwickelten Microchannel-Busses und dergleichen. Die Bezeichnung Microchannel kann nach Bundes- und/oder Bundesstaatsmarkengesetzen geschützt sein. Sofern mehr als ein Komponentenbus in dem I/O-Bussubsystem 22 vorhanden sind (beispielsweise ein oder mehrere PCI-Busse für eine Datenübertragung hoher Bandbreite und ein oder mehrere ISA-Busse zum Unterstützen älterer Erweiterungskarten), können die Busse miteinander über eine Brücke 26C oder eine ähnliche Bus-zu-Bus-Verbindungseinrichtung verbunden sein.
  • Die Natur der I/O-Einrichtungen wird durch den vorgesehenen Zweck der Einrichtung 15 bestimmt. Wenn beispielsweise die Einrichtung 15 ein Computersystem ist, würden die I/O-Einrichtungen (26A, 26B, 26D, 26E) typischerweise Benutzereingabeeinrichtungen, wie beispielsweise eine Tastatur und eine Cursorsteuereinrichtung (z. B. eine Maus, ein Trackball oder ein Stylus), eine oder mehrere Massenspeichereinrichtungen, wie beispielsweise Einrichtungen zum Lesen und Schreiben von Daten auf optische und magnetische Speichermedien, und verschiedene andere Computersystemeinrichtungen (z. B. Drucker, Audio-I/O-Einrichtungen, serielle Bussteuereinrichtungen usw.) enthalten. Wenn alternativ die Einrichtung 15 eine Digitalkamera, ein Funktelefon oder ein anderes Konsumgüterelektronikgerät ist, könnten die I/O-Einrichtungen (26A, 26B, 26D, 26E) Benutzerschnittstellen (z. B. Knöpfe und Anzeigen) umfassen, um es der Einrichtung zu ermöglichen, für den Betrieb konfiguriert zu werden, und andere funktionsspezifische Einrichtungen (z. B. Hochfrequenzsendeempfänger für Funktelefon, Blenden- und Brennweitensteuerung für eine Digitalkamera, etc.).
  • Das Graphiksubsystem 16 umfasst einen Graphikbeschleuniger 20, der mit der Subsystemsteuereinrichtung 12 gekoppelt ist, um eine Hochgeschwindigkeitsübertragung von Graphikdaten aus dem Speichersubsystem 14 zu dem Graphiksubsystem 16 zu ermöglichen, wo die Graphikdaten verarbeitet und auf einer Anzeige 18 durch eine Anzeigesteuereinrichtung 19 präsentiert werden. Bei einem Ausführungsbeispiel ist der Graphikbeschleuniger 20 mit der Subsystemsteuereinrichtung über einen beschleunigten Graphikport (AGP – Accelerated Graphics Port) gekoppelt, der der ”Accelerated Graphics Port Interface Specification”, Revision 1.0 oder spätere, veröffentlicht am 01. August 1996 durch die Intel Corporation, entspricht. Der AGP ist eine spezielle Schnittstelle zum Übertragen von Graphikinformationen und -kommandos zwischen dem Graphikbeschleuniger 20 und der Subsystemsteuereinrichtung. Bei alternativen Ausführungsbeispielen können andere spezielle Graphikports verwendet werden. Außerdem kann das Graphiksubsystem 16, statt mit der Subsystemsteuereinrichtung über einen speziellen Graphik-Port gekoppelt zu sein, alternativ mit der Subsystemsteuereinrichtung 12 über einen geteilten Bus gekoppelt sein, wie beispielsweise den lokalen Bus 11 oder einen Komponentenbus (24, 25) in dem I/O-Subsystem 22.
  • 2 ist ein Blockschaltbild eines Ausführungsbeispiels der Subsystemsteuereinrichtung 12. Die Subsystemsteuereinrichtung 12 enthält eine Zugriffsanforderungslogik (45A, 45B, 45C), eine Speicherzugriffssteuerlogik 30, eine Speicherschnittstellenlogik 37, eine Speicherkorrekturlogik 35, eine Fehlerberichtslogik 43, eine ECC-Logik 39 und eine Lese-Verschmelze-Schreib-Logik 41 (RMW-Logik; read-merge-write logic). Die Subsystemsteuereinrichtung 12 kann darüber hinaus eine Auffrischlogik 46 enthalten, um das Auffrischen der DRAM-Zellen 14 in dem Speichersubsystem zu steuern. Bei alternativen Ausführungsbeispielen kann die Auffrischlogik 46 von der Subsystemsteuereinrichtung 12 getrennt sein. Die Subsystemsteuereinrichtung 12 kann darüber hinaus weitere (nicht gezeigte) Logik enthalten, die eine Logik zum Verwalten von Anforderungen, beispielsweise zum Übertragen von Daten zwischen dem Prozessor 10 und dem I/O-Subsystem 22, zwischen dem Prozessor 10 und dem Graphiksubsystem 16 oder zwischen dem Graphiksubsystem 16 und dem I/O-Subsystem 22, enthalten.
  • Bei einem Ausführungsbeispiel wird die Zugriffsanforderungslogik (45A, 45B, 45C) verwendet, um aus dem Prozessor 10, dem Graphiksubsystem 16 und einem oder mehreren Bus-Master-Einrichtungen in dem I/O-Subsystem 22 empfangene Speicherzugriffsanforderungen zu verwalten. Es können darüber hinaus weitere anfordernde Teilnehmer, einschließlich der Auffrischlogik 46 und der Speicherkorrekturlogik 35 vorhanden sein. Obwohl separate Zugriffsanforderungslogikeinheiten (45A, 45B, 45C) für den Prozessor 10, das Graphiksubsystem 16 und das I/O-Subsystem 22 gezeigt sind, ist dies nicht erforderlich, und es könnte auch eine einzige Zugriffsanforderungslogikeinheit verwendet werden, um Anforderungen von mehreren anfordernden Teilnehmern zu bedienen.
  • Die Zugriffsanforderungslogik (45A, 45B, 45C) priorisiert Speicherzugriffsanforderungen in Übereinstimmung mit verschiedenen Kriterien (z. B. einer Seitentrefferoptimierung, Datenabhängigkeitsregeln, etc.) und leitet dann die Anforderungen an die Speicherzugriffssteuerlogik 30 weiter. Dies ist in 2 allgemein durch die REQ-Pfade aus der Zugriffsanforderungslogik (45A, 45B, 45C) und aus der Auffrischlogik 46 gezeigt. Das Symbol ”/” auf den Anforderungspfaden und anderen Signalübertragungspfaden zeigt in den verschiedenen Figuren an, dass der Signalpfad mehrere Leiter enthalten kann. Jedoch sollte das Fehlen eines ”/”-Symbols auf einem Signalpfad nicht so ausgelegt werden, dass es Ausführungsbeispiele der vorliegenden Erfindung auf einen einzigen Signalleiter für diesen Pfad einschränkt. Darüber hinaus kann jeder der Anforderungspfade parallele Pfade zum gleichzeitigen Anlegen von Lese- und Schreibanforderungen an die Speicherzugriffssteuerlogik 30 in separaten Anforderungspfaden enthalten.
  • Die Speicherzugriffssteuerlogik 30 enthält eine Zuteilungsentscheidungslogik 31, um die parallelen Speicherzugriffsanforderungen, die durch die verschiedenen anfordernden Teilnehmer angelegt werden, zu serialisieren. Gemäß einem Ausführungsbeispiel gibt die Zuteilungsentscheidungslogik 31 die Zugriffspriorität für bestimmte Anforderungen aus dem Prozessor 10 und aus dem Graphiksubsystem 16, bedient aber anderenfalls Anforderungen auf eine Weise, die Speicherzugriffe für alle anfordernden Teilnehmer sichert.
  • Sobald eine Anforderung ausgewählt worden ist, bedient zu werden (das heißt, sobald die Anforderung serialisiert ist), wird die Anforderung an die Sequenzierlogik 33 innerhalb der Speicherzugriffssteuerlogik 30 weitergeleitet. Die Sequenzierlogik 33 gibt ein Zugriffskommando 34 an die Speicherschnittstellenlogik 37 in Übereinstimmung mit der Anforderung aus. Bei einem Ausführungsbeispiel erzeugt die Sequenzierlogik 33 beispielsweise ein Zugriffskommando 34, das die Adresse des zu lesenden Speicherplatzes, die Anzahl der zu übertragenden Quadworte und ein Lese/Schreib-Signal zum Anzeigen, ob eine Speicherlese- oder eine Speicherschreiboperation angefordert worden ist, enthält. Wenn die Speicherschnittstellenlogik 37 die Speicherzugriffssteuerlogik 30 nicht mehr benötigt, um das Zugriffskommando 34 anzulegen, und bereit ist, ein nachfolgendes Zugriffskommando zu empfangen, legt die Speicherschnittstellenlogik 37 ein Kommandobestätigungssignal an die Speicherzugriffslogik an. In Erwiderung der Speicherzugriffssteuerlogik kann die Speicherzugriffssteuerlogik 30 ein Bestätigungssignal an den anfordernden Teilnehmer ausgeben, um anzuzeigen, dass der angeforderte Zugriff initiiert worden ist. Bei einem Ausführungsbeispiel gibt die Speicherzugriffssteuerlogik 30 beispielsweise ein Säuberungsbestätigungssignal 42 (scrub acknowledge signal) an die Speicherkorrekturlogik 35 aus, um anzuzeigen, dass eine Säuberungsoperation initiiert worden ist. Dies wird unten detaillierter erörtert.
  • In Erwiderung eines Zugriffskommandos 34 aus der Speicherzugriffssteuerlogik 30 legt die Speicherschnittstellenlogik 37 Steuer(CNTRL)- und Adresssignale (ADR) an das Speichersubsystem 14 an, um die befohlene Operation durchzuführen. Im Falle eines Speichersubsystems 14, das EDO-DRAM-Bauelemente enthält, legt die Speicherschnittstellenlogik 37 beispielsweise ein Zeilenadress-Strobe-Signal (RAS) an, um einen Zeilenabschnitt der Adresse (ADR) zu den richtigen DRAM-Bauelementen zu tasten (strobe), und ein Spaltenadress-Strobe-Signal (CAS), um den verbleibenden Abschnitt der Adresse in die DRAM-Bauelemente einzutasten (strobe), um einen Abschnitt der durch den Zeilenabschnitt der Adresse ausgewählten Speicherseite auszuwählen. Bei einem Speichersubsystem 14, das SDRAM-Bauelemente enthält, werden verschiedene Kombinationen von Chipauswahl-, Zeilenadress-Strobe- und Spaltenadress-Strobe-Signalen verwendet, um den Betrieb des Speichersubsystems zu steuern. Andere Speichersteuertechniken können für andere Arten von Speichern verwendet werden, welche beispielsweise Speicher einschließen, die aus RAMBUS®-DRAM-Komponenten gebildet sind. Darüber hinaus kann bei Hybrid-Speichersubsystem (beispielsweise einem, das sowohl EDO-DRAM- als auch SDRAM-Bauelemente enthält) das Protokoll zum Anlegen der Steuersignale (CNTRL) von einem Zugriff zum nächsten geändert werden, um verschiedene Arten von Bauelementen zu unterstützen.
  • Bei einem Ausführungsbeispiel enthält die Speicherschnittstellenlogik 37 darüber hinaus eine Zeilendecodierlogik (die nicht in 2 gezeigt ist), um zu bestimmen, welche Zeile oder Reihe einer Mehrzahl von Zeilen oder Reihen von Speicherbauelementen bei einem gegebenen Speicherzugriff gelesen bzw. geschrieben werden soll, und um ein Chipauswahlsignal zum Auswählen der Bauelementezeile auszugeben. Hierbei bezieht sich der Ausdruck ”Bauelementezeile” auf einen oder mehrere Speicher-ICs (integrierte Schaltungen), die ausgewählt werden, um gleichzeitig Daten über jeweilige Abschnitte eines Datenpfades auszugeben (oder zu empfangen). Bei einem Ausführungsbeispiel eines Speichersubsystems 14 kann eine Bauelementezeile beispielsweise aus vier DRAM-Bauelementen bestehen, die jeweils ein Wort (das heißt, einen 16-Bit-Wert) eines Quadwort-Datenwerts unterstützen. In dem Fall, in dem eine Bauelementezeile nur einen Speicher-IC enthält, kann der eine Speicher-IC den gesamten oder nur einen Abschnitt des Datenpfades ansteuern, wenn er ausgewählt wird. Wie es in 2 gezeigt ist, wird ein Zeilendecodiersignal (ZEILE), das die ausgewählte Bauelementezeile identifiziert, von der Speicherschnittstellenlogik 37 an die Speicherkorrekturlogik 35 ausgegeben, um bestimmte Fehlerberichtsfunktionen zu unterstützen. Die Speicherschnittstellenlogik 37 gibt darüber hinaus ein Daten-Bereit-Signal (DATEN BEREIT) aus, wenn das Speichersubsystem 14 einen Datenwert an seinem Ausgang anlegt.
  • Wie es in 2 gezeigt ist, werden Datenwerte und ECC-Werte, die von dem Speichersubsystem 14 ausgegeben werden, an die ECC-Logik 39 angelegt. Für jeden aus dem Speichersubsystem 14 empfangenen Datenwert bestimmt die ECC-Logik 39, ob der Datenwert beschädigt ist, benachrichtigt die Speicherkorrekturlogik 35 über ein oder mehrere Fehlererfassungssignale 27 (FEHLER ERFASST), um anzuzeigen, ob der Datenwert beschädigt ist, und, sofern die Daten beschädigt sind, versucht, den Datenwert wiederherzustellen. Der Datenwert wird dann von der ECC-Logik an die RMW-Logik 41 über den Datenpfad mit der Bezeichnung KORRIGIERTE DATEN weitergeleitet. Der Datenwert kann alternativ zu verschiedenen (nicht gezeigten) Lesepuffern weitergeleitet werden, die den jeweiligen anfordernden Teilnehmern zugeordnet sind. Man beachte, dass trotz des Namens KORRIGIERTE DATEN, ein aus der ECC-Logik über den Pfad KORRIGIERTE DATEN übertragener Datenwert beschädigt sein kann, sofern er einen nicht-korrigierbaren Fehler aufweist.
  • Bei einem Ausführungsbeispiel wird die RMW-Logik 41 durch die Sequenzierlogik 33 in der Speicherzugriffssteuerlogik 30 über eines oder mehrere RMW-Steuersignale (RMW-CNTRL) gesteuert und verwendet, um Daten an das Steuersubsystem 14 über die ECC-Logik 39 in Speicherschreiboperationen zu liefern. Aus dem Speicher gelesene Daten können mit Daten aus anderen Schreibpuffern verschmolzen und zum Speicher über den mit SCHREIBE DATEN bezeichneten Datenpfad zurückgeschrieben werden. Bei einem unten erörterten Ausführungsbeispiel werden die korrigierten Daten in der RMW-Logik 41 gepuffert und dann zum Speichersubsystem 14 zu einer Adresse zurückgeschrieben, die von der Speicherkorrekturlogik 35 bereitgestellt wird.
  • Auf der Grundlage der vorstehenden Beschreibung der Zugriffsanforderungslogik (45A, 45B, 45C), der Speicherzugriffssteuerlogik 30, der Speicherschnittstellenlogik 37 und der RMW-Logik 41 ist es klar, dass diese Logikeinheiten gemeinsam eine Zugriffslogik zum Lesen von Daten aus dem Speichersubsystem 14 und zum Schreiben von Daten in das Speichersubsystem 14 bilden. Es ist ferner klar, dass die Zugriffslogik andere logische Einheiten enthalten kann, beispielsweise Lesepuffer und Schreibpuffer, die den verschiedenen anfordernden Teilnehmern zugeordnet sind.
  • Bei einem Ausführungsbeispiel lauscht (snoops) die Speicherkorrekturlogik 35 an dem Zugriffsbefehlspfad 34 zu der Speicherschnittstellenlogik 37, um festzustellen, ob die Speicherzugriffssteuerlogik 30 eine Speicherleseoperation initiiert hat. Wie unten erörtert, wird diese mitgelauschte Information in Verbindung mit einem oder mehreren von der ECC-Logik 39 ausgegebenen Fehler-Erfasst-Signalen 27 verwendet, um Anforderungen an die Speicherzugriffssteuerlogik 30 zum Schreiben eines korrigierten Datenwerts zurück in das Speichersubsystem 14 zu erzeugen. Die Speicherkorrekturlogik 35 leitet darüber hinaus das eine oder die mehreren Fehler-Erfasst-Signale 27 an die Fehlerberichtslogik 43 zusammen mit den mitgelauschten Adressinformationen und den Bauelementezeileninformationen (die über das Zeilendecodiersignal (ZEILE) aus der Speicherschnittstellenlogik empfangen wurden) weiter. Dies ist in 2 durch die Signalpfade FEHLER ERFASST und ADR/ZEILE, die sich von der Speicherkorrekturlogik 35 zu der Fehlerberichtslogik 43 erstrecken, angezeigt. Wie unten erörtert, tastet die Speicherkorrekturlogik 35 das Daten-Bereit-Signal ab, das von der Speicherschnittstellenlogik 37 ausgegeben worden ist, um festzustellen, wann das jeweilige Zugriffskommando abgeschlossen worden ist.
  • Bei einem Ausführungsbeispiel enthält die Fehlerberichtslogik 43 eines oder mehrere durch den Prozessor zugreifbare Berichtsregister und außerdem eine Logik zum Erzeugen eines Systemfehlersignals (SERR) in Abhängigkeit von dem einen oder den mehreren Fehler-Erfasst-Signalen, die von der Speicherkorrekturlogik 35 weitergeleitet wurden. Durch Speicherung der Bauelementezeile und der Adresse der beschädigten Daten in einem durch den Prozessor zugreifbaren Register innerhalb der Fehlerberichtslogik und Anlegen des SERR, um den Prozessor zu unterbrechen (Interrupt), kann der Prozessor 10 über die Speicherbeschädigung informiert werden und korrektive Aktivitäten unternehmen. Beispielsweise kann der Prozessor 10 so programmiert werden, dass er die Ausfallinformationen in einer Datenbank für Diagnosezwecke protokolliert, oder der Prozessor 10 kann einen Zugriff auf den betroffenen Bereich des Speichers blockieren, indem er einen anderen Speicher in dem Speichersubsystem 14, der stattdessen benutzt werden soll, zuweist. Die Bauelementezeileninformation kann insbesondere für Service-Personal hilfreich sein, da eine Bauelementezeile oftmals auf einer einzelnen im Betrieb ersetzbaren Speicherkarte, wie beispielsweise einem Dual-Inline-Speichermodul (DIMM), lokalisiert ist. Bei alternativen Ausführungsbeispielen können die Berichtsregister in der Fehlerberichtslogik 43 durch andere Teilnehmer in einem Computersystem zugreifbar sein, wie beispielsweise dem Graphiksubsystem oder einer Bus-Master-Einrichtung in dem I/O-Subsystem 22. 3 ist ein Blockschaltbild eines Ausführungsbeispiels der Speicherkorrekturlogik 35. Die Speicherkorrekturlogik 35 enthält einen N-Eintrags-Säuberungspuffer 50, eine Säuberungssteuerlogik 51 und eine Säuberungsanforderungslogik 53. Bei einem Ausführungsbeispiel wird der Säuberungspuffer 50 verwendet, um eine Adresse, eine Bauelementezeile und Fehlerinformationen zu halten, die für jede Speicherleseoperation erzeugt werden. Die Säuberungssteuerlogik 51 enthält einen Schreibzeiger 54 und einen Flag-Zeiger 55, um zu bestimmen, welcher Eintrag in dem Säuberungspuffer 50 einen gegebenen Satz von Adresse, Zeile und Fehlerinformationen empfangen soll. Bei einem Ausführungsbeispiel wird die Säuberungsanforderungslogik 53 verwendet, um eine Säuberungsanforderung (SÄUB.-ANF.) an die Speicherzugriffssteuerlogik (z. B. das Element 30 gemäß 2) auf der Grundlage der Informationen in dem Säuberungspuffer 50, auf die durch den Flag-Zeiger 55 verwiesen wird, auszugeben. Ein Säuberungszeiger 56 wird von der Säuberungssteuerlogik 51 aufrechterhalten, um einen Eintrag in dem Säuberungspuffer 50 anzuzeigen, für welchen eine Säuberungsanforderung anhängig ist.
  • Wie oben erwähnt, enthält jedes von der Speicherzugriffssteuerlogik an die Speicherschnittstellenlogik (z. B. das Element 37 gemäß 2) angelegte Zugriffskommando ein Lese/Schreib-Signal (RD/WR*), um anzuzeigen, ob die befohlene Speicheroperation eine Leseoperation oder eine Schreiboperation ist, eine Transaktionslänge (LEN), um die Anzahl der bis zum Abschluss der Lese- oder Schreiboperation nacheinander zu übertragenden Werte anzuzeigen, und eine Adresse (ADR) des Speichersubsystems, bei welcher der Zugriff stattfinden soll. Bei einem Ausführungsbeispiel werden RD/WR* und LEN durch die Säuberungssteuerlogik 51 mitgelauscht (snooped) und verwendet, um festzustellen, wann der Schreibzeiger 54 und der Flag-Zeiger 55 vorgerückt werden sollen. Das Daten-Bereit-Signal (DATEN BEREIT) wird für jeden aus dem Speichersubsystem ausgegebenen Datenwert angelegt und in Verbindung mit der Transaktionslänge (LEN) verwendet, um zu bestimmen, wann ein gegebener Lesezugriff abgeschlossen ist. Wenn beispielsweise ein Kommando zum Lesen von vier Quadworten durch die Speicherzugriffssteuerlogik ausgegeben wird (das heißt, wenn vier Quadworte nacheinander übertragen werden sollen, um den Lesezugriff abzuschließen), dann zählt die Speicherkorrekturlogik das Anlegen des Daten-Bereit-Signals, bis sein Anlegen viermal (gleich der Anzahl, die durch die Transaktionslänge angezeigt wird) erfasst worden ist. Von jedem nachfolgenden Anlegen des Daten-Bereit-Signals kann dann angenommen werden, dass es einem weiteren Zugriffskommando entspricht.
  • Wenn ein Zugriffskommando durch die Speicherzugriffssteuerlogik ausgegeben wird, so erfasst die Säuberungssteuerlogik 51 das RD/WR*-Signal, um zu bestimmen, ob eine Leseoperation oder eine Schreiboperation initiiert worden ist. Sofern eine Leseoperation angezeigt wird, wird die in dem Zugriffskommando enthaltene Adresse (ADR) in einem Säuberungspuffereintrag, der durch den Schreibzeiger 54 angezeigt ist, gespeichert. Der von der Speicherschnittstellenlogik ausgegebene Bauelementezeilenwert (ZEILE) wird ebenfalls in dem Eintrag, auf den durch den Schreibzeiger verwiesen wird, gespeichert (das heißt, in der BAUEL.ZEILE-Spalte), und, nachdem der Adress- und der Zeilenwert gespeichert worden sind, wird der Schreibzeiger 54 vorgerückt, um den nächsten verfügbaren Eintrag im Säuberungspuffer 50 anzuzeigen. Man beachte, dass ein Verzögerungselement, wie beispielsweise ein Flip-Flop (nicht gezeigt), in dem Zugriffskommandopfad angeordnet sein kann, um den Empfang des Bauelementezeilenwerts (ZEILE) und der Adressinformationen (ADR) an dem Säuberungspuffer 50 zu synchronisieren.
  • Bei einem Ausführungsbeispiel wird der Schreibzeiger 54 sukzessive vorgerückt, bis ein letzter Eintrag in dem Säuberungspuffer 50 erreicht ist. An dieser Stelle läuft der Schreibzeiger 54 zu dem Anfangseintrag in dem Puffer um. Der Flag-Zeiger 55 und der Säuberungszeiger 56 können in ähnlicher Weise vom Ende zum Beginn des Säuberungspuffers 50 umlaufen, obwohl die Kriterien für ihr Vorrücken von denen des Schreibzeigers 54 abweichen. Somit wird bei wenigstens einem Ausführungsbeispiel der Säuberungspuffer 50 durch die Säuberungssteuerlogik 51 als zirkularer Puffer verwaltet.
  • Zu dem Zeitpunkt, zu dem die Adress- und Zeileninformationen in einen Eintrag in dem Säuberungspuffer 50 geschrieben werden, ist der Fehler-Flag-Abschnitt des Eintrags (das heißt, der Wert in der Fehler-Flag-Spalte) gewöhnlich unbestimmt, da der Datenwert, der der Adresse in dem Säuberungspuffereintrag entspricht, noch nicht aus dem Speichersubsystem ausgegeben worden ist. Tatsächlich kann infolge der Pipeline-Natur der Speicherzugriffsoperationen der Schreibzeiger 54 in Erwiderung verschiedener Zugriffskommandos vorgerückt werden, bevor die dem ersten der Kommandos entsprechenden Daten aus dem Speichersubsystem ausgegeben werden. Gemäß einem Ausführungsbeispiel wird der Flag-Zeiger 55 verwendet, um den ältesten gespeicherten Eintrag in dem Säuberungspuffer 50 anzuzeigen, für welchen die Daten noch nicht aus dem Speichersubsystem ausgegeben worden sind. Diese noch auszugebenden Daten werden hier als anhängige Daten bezeichnet.
  • Somit zeigt in wenigstens einem Ausführungsbeispiel der Flag-Zeiger 55 den ältesten Säuberungspuffereintrag an, für welchen die Daten anhängig sind.
  • Wie zuvor erörtert, kann die ECC-Logik verwendet werden, um eines oder mehrere Fehler-Erfasst-Signale (FEHLER-ERFASST) auf der Grundlage eines ECC und eines Datenwerts, die von dem Speichersubsystem ausgegeben werden, zu erzeugen. Bei einem Ausführungsbeispiel umfassen das eine bzw. die mehreren Fehler-Erfasst-Signale wenigstens einen Korrigierbarer-Fehler-Indikator 50, der anzeigt, ob der ausgegebene Datenwert durch einen Fehler beschädigt ist, der durch die ECC-Logik korrigiert werden kann. Wenn das Daten-Bereit-Signal (DATEN BEREIT) angelegt wird, was anzeigt, dass ein zuvor anhängiger Datenwert aus dem Speichersubsystem ausgegeben worden ist, gibt die Säuberungssteuerlogik 51 den Korrigierbarer-Fehler-Indikator 57 in den Fehler-Flag-Abschnitt des Säuberungspuffereintrags, auf den durch den Flag-Zeiger 55 verwiesen wird, frei. Beispielsweise kann ein Fehler-Flag mit dem Wert Null gespeichert werden, um anzuzeigen, dass die Daten keinen korrigierbaren Fehler aufweisen, oder ein Fehler-Flag ungleich Null gespeichert werden, um einen korrigierbaren Fehler anzuzeigen. Nachdem das Fehler-Flag in dem Säuberungspuffereintrag gespeichert ist, wird der Flag-Zeiger 55 vorgerückt, damit er auf den nächsten Eintrag in dem Säuberungspuffer 50 zeigt, welcher nunmehr der älteste Säuberungspuffereintrag ist, für welchen die Daten anhängig sind.
  • Bei einem Ausführungsbeispiel wird dann, wenn die Transaktionslänge (LEN) anzeigt, dass mehrere Datenwerte übertragen werden sollen, um einen befohlenen Speicherzugriff abzuschließen, der Flag-Zeiger 55 solange nicht vorgerückt, bis das Daten-Bereit-Signal LEN mal angelegt worden ist. Die jeweils angelegten Korrigierbarer-Fehler-Indikatoren 57 können logisch (z. B. durch eine logische ODER-Funktion) kombiniert werden, um ein zusammengesetztes Fehler-Flag für die mehreren Ausgabewerte zu bestimmen. Bei einem Ausführungsbeispiel wird die Startadresse eines Mehrfachübertragungsspeicherzugriffs in dem Säuberungszugriff 50 aufgezeichnet und bei jedem nachfolgend ausgegebenen Datenwert unverändert gelassen. Bei einem alternativen Ausführungsbeispiel kann die Startadresse durch die Säuberungssteuerlogik 51 inkrementiert und erneut in den durch den Flag-Zeiger 55 angezeigten Säuberungspuffereintrag eingeschrieben werden, nachdem jeweils das Daten-Bereit-Signal angelegt worden ist. Unter Verwendung dieser Technik verfolgt die Adresse in dem Säuberungspuffer 50 jeden der mehreren ausgegebenen Werte, so dass die Adresse, aus welcher beschädigte Daten erlangt worden sind, genau identifiziert werden kann. Um die Möglichkeit mehrerer Fehler innerhalb eines Mehrfachübertragungsspeicherzugriffs zu berücksichtigen, können mehrere Fehler-Flags in jedem Säuberungspuffereintrag gespeichert werden.
  • Bei einem Ausführungsbeispiel werden die Adresse und das Fehler-Flag aus einem durch den Säuberungszeiger angezeigten Eintrag (das heißt, den Säuberungseintrag) zu der Säuberungsanforderungslogik 53 ausgegeben. Sofern das Fehler-Flag aus dem Säuberungseintrag (das heißt, das Säuberungs-Flag) einen korrigierbaren Fehler anzeigt, gibt die Säuberungsanforderungslogik eine Säuberungsanforderung 41 aus, die die Adresse aus dem Säuberungseintrag (das heißt, die Säuberungsadresse) einschließt. Nachdem die Säuberungsanforderung 41 ausgegeben worden ist, wartet die Säuberungssteuerlogik 51 auf das Anlegen des Säuberungsbestätigungssignals 42, bevor der Säuberungszeiger 56 vorgerückt wird.
  • In Erwiderung der Säuberungsanforderung 41 gibt die Speicherzugriffssteuerlogik einen Lese-Verschmelze-Schreib-Zugriff aus, welcher bewirkt, dass ein Datenwert aus dem Speichersubsystem an der Säuberungsadresse gelesen, durch die ECC-Logik zum Erzeugen einer korrigierten Version des Datenwerts durchgeleitet und in der RMW-Logik (z. B. dem Element 41 gemäß 2) gepuffert wird. Wie unten erörtert wird, bewirkt dann die Sequenzierlogik innerhalb der Speicherzugriffssteuerlogik, dass die korrigierte Version des Datenwerts in der RMW-Logik zurück in das Speichersubsystem an die Säuberungsadresse geschrieben wird. Die Gesamtoperation des Lesens, Korrigierens und Rückschreibens eines Datenwerts aus einer in einer Säuberungsanforderung spezifizierten Adresse wird hier als Säuberungsoperation bezeichnet, da ihre Wirkung darin besteht, beschädigte Daten in dem Speichersubsystem mit korrigierten Daten zu überschreiben. Somit sind im Unterschied zu bekannten Systemen, welche Daten nur während einer Übertragung aus dem Speichersubsystem zu einem Verbraucher korrigieren, die verschiedenen Ausführungsbeispiele der vorliegenden Erfindung in der Lage, beschädigte Daten in ihrer Speichersubsystemquelle zu korrigieren.
  • Bei einem Ausführungsbeispiel gibt die Speicherzugriffssteuerlogik den Säuberungsanforderungen die Priorität gegenüber Anforderungen aus anderen anfordernden Teilnehmern und blockiert andere Anforderungen, bis die Säuberungsoperation abgeschlossen ist. In diesem Fall kann die Säuberungssteuerlogik 51 davon ausgehen, dass das nach einer Säuberungsanforderung ausgegebene Zugriffskommando einer Säuberungsoperation entspricht und das Vorrücken des Säuberungszeigers 56 in Verbindung mit dem Säuberungsbestätigungssignal 42 steuern. Da eine Säuberungsoperation tatsächlich zwei Speicherzugriffe, ein Lesen gefolgt von einem Schreiben, umfasst, werden zwei Kommandobestätigungssignale (z. B. das Signal 36 gemäß 2) von der Speicherschnittstellenlogik während der Säuberungsoperation erzeugt – jeweils eines für jeden Speicherzugriff. Bei einem Ausführungsbeispiel gibt die Speicherzugriffssteuerlogik (z. B. das Element 30 gemäß 2) ein Säuberungsbestätigungssignal 42 an die Speicherkorrekturlogik 35 aus, nachdem sie ein Kommandobestätigungssignal empfangen hat, das ein Kommando zum Schreiben korrigierter Daten in das Speichersubsystem bestätigt. Wenn das Säuberungsbestätigungssignal 42 empfangen worden ist, wird das Fehler-Flag in dem Säuberungseintrag gelöscht und der Säuberungszeiger wird zu einem weiteren Säuberungspuffereintrag vorgerückt, dessen Fehler-Flag gesetzt ist. Sofern es keinen weiteren Eintrag gibt, bei welchem das Fehler-Flag gesetzt ist, braucht der Säuberungspuffer nicht vorgerückt zu werden. Alternativ kann das Fehlen eines Fehlers angezeigt werden, indem dem Säuberungszeiger 56 ein Wert zugewiesen wird, der auf einen Außerhalb-des-Bereichs-Eintrag verweist, oder indem dem Säuberungszeiger 56 ein Wert zugewiesen wird, der auf einen speziellen Eintrag verweist, der ein gelöschtes Fehler-Flag enthält.
  • Indem wir kurz zu dem Säuberungspuffer 50 zurückkehren, sei angemerkt, dass, während die aus der Speicherzugriffssteuerlogik an die Speicherschnittstellenlogik gelieferte Adresse eine Reihe von N Bits enthalten kann, die zum eindeutigen Identifizieren eines Speicherplatzes im Speichersubsystem erforderlich sind, die zugehörige in dem Säuberungspuffer 50 gespeicherte Adresse weniger als N Bits enthalten kann. Darüber hinaus kann der an die Fehlerberichtslogik weitergeleitete Adresswert sämtliche oder einen Teil der Adressbits der in dem Säuberungspuffer 50 gespeicherten Adresse enthalten. Während es insbesondere bei einigen Ausführungsbeispielen wünschenswert sein kann, den gesamten Satz von N Bits pro angelegter Adresse zu speichern oder zu berichten, kann es bei anderen Ausführungsbeispielen erwünscht sein, einige der geringer bewerteten Bits der in dem Säuberungspuffer 50 gespeicherten Adresse oder der an die Fehlerberichtslogik berichteten Adresse fallenzulassen. Beispielsweise könnten nur diejenigen Adressbits, die zum Identifizieren der Seite des Speichers erforderlich sind, in dem Säuberungspuffer gespeichert werden. In diesem Falle kann, wenn eine Säuberungsanforderung ausgegeben wird, die gesamte Seite des Speichers gelesen und mit korrigierten Werten zurückgeschrieben werden. Begrifflich soll der Vorgang des Speicherns einer Adresse in dem Säuberungspuffer hier so verstanden werden, dass er das Speichern einer Adresse bedeutet, die einen eindeutig adressierbaren Ort im Speichersubsystem identifiziert, aus welchem ein Datenwert gelesen wird, oder eine Adresse, die einen Bereich adressierbarer Plätze in dem Speichersubsystem identifiziert, die den eindeutig adressierbaren Speicherplatz in dem Speichersubsystem einschließt, aus welchem der Datenwert gelesen wird.
  • Es wird noch auf 3 Bezug genommen; bei einem Ausführungsbeispiel werden das eine oder die mehreren Fehler-Erfasst-Signale 27 und die Adress- und Bauelementezeileninformationen in dem durch den Flag-Zeiger angezeigten Puffereintrag (das heißt, die Flag-Adresse und die Flag-Zeile) an die Fehlerberichtslogik (z. B. das Element 43 gemäß 2) ausgegeben. Sofern das eine oder die mehreren Fehler-Erfasst-Signale 27 einen Fehler anzeigen, können die Adresse und die Bauelementezeile, aus welchen die beschädigten Daten erlangt worden sind, aufgezeichnet werden, und es kann der Prozessor oder ein anderer Fehlerbehandlungsteilnehmer in der oben beschriebenen Weise benachrichtigt werden.
  • 4 veranschaulicht ein Ausführungsbeispiel des Speichersubsystems 14, das mehrere Bauelementezeilen (70A, 70B, 70C) enthält. Wie gezeigt ist, kann jede der Zeilen auf einem separaten DIMM 68 angeordnet sein. Dies ist vom Standpunkt der Ausrüstungswartung aus vorteilhaft, da für eine gegebene Bauelementezeile berichtete Ausfälle durch Ersetzen des zugehörigen DIMM korrigiert werden können, ohne dass andere DIMMs ersetzt werden müssen. Bei einem alternativen Ausführungsbeispiel können mehrere Zeilen auf einem DIMM angeordnet oder der gesamte Speicher in einem einzigen IC oder zumindest in einem Satz von ICs auf einer einzigen Schaltungsplatine implementiert sein.
  • Wie zuvor erörtert, empfängt die Speicherschnittstellenlogik 37 in der Subsystemsteuereinrichtung 12 Speicherzugriffskommandos aus der Speicherzugriffssteuerlogik. Die Zeilendecodierlogik 65 in der Speicherschnittstellenlogik 37 bestimmt auf der Grundlage des Adressabschnitts eines Zugriffskommandos, auf welche der Mehrzahl von Zeilen (70A, 70B, 70C) zugegriffen werden soll, und erzeugt ein dementsprechendes Zeilendecodiersignal 67. Das Zeilendecodiersignal 67 wird an die Speicherkorrekturlogik in der oben erörterten Weise ausgegeben und wird außerdem der Zeilenauswahllogik 66 eingegeben, um eine der Mehrzahl von Zeilenauswahlleitungen (RS0-RSN-1) zu aktivieren. Bei einem (in 4 gezeigten) Ausführungsbeispiel ist jede der Zeilenauswahlleitungen (RS0-RSN-1) so angekoppelt, dass sie Eingänge einer jeweiligen Zeile von diskreten integrierten Speicherschaltungen (ICs) auswählt. Beispielsweise ist die Zeilenauswahlleitung RS0 mit dem Speicher-IC0 bis Speicher-ICM-1 der Zeile Null, die Zeilenauswahlleitung RS1 mit dem Speicher-IC0 bis Speicher-ICM-1 der Zeile 1 gekoppelt, was sich bis zur Zeile N – 1 fortsetzt. Auf diese Weise werden die Speicher-ICs einer einzigen Bauelementezeile gleichzeitig ausgewählt, um Daten in einem gegebenen Speicherzyklus zu empfangen oder auszugeben. Die Breite des pro Speicherzugriff übertragenen Datenwerts ist implementierungsabhängig und im allgemeinen durch M × K gegeben, wobei M die Anzahl der Speicher-ICs pro Bauelementezeile und K die Anzahl der pro Speicher-IC übertragenen Datenbits ist. Für die Zwecke der vorliegenden Erörterung kann der Datenwert als den ECC-Wert enthaltend betrachtet werden. Darüber hinaus sollen, obwohl die Inhalte des Speichers hier grundsätzlich als Daten oder Datenwerte bezeichnet werden, derartige Ausdrücke so verstanden werden, dass sie Programmbefehle ebenso umfassen (z. B. Befehlscodes, Bytecodes, etc.).
  • Es wird noch auf 4 Bezug genommen; der Auswahleingang der Speicher-ICs kann in Abhängigkeit von der Art des verwendeten Speicherbauelements variieren. Bei einem SDRAM-Bauelement beispielsweise wäre der Auswahleingang typischerweise ein Chipauswahleingang und die Zeilenauswahlleitungen (RS0-RSN-1) würden Chipauswahlsignale führen. Bei einem EDO-DRAM-Bauelement wäre der Auswahleingang typischerweise ein Zeilenadress-Strobe-Eingang und die Zeilenauswahlleitungen würden Zeilenadress-Strobe-Signale führen. Es können auch andere Zeilenauswahlschemata verwendet werden, um andere Speicherarten zu unterstützen, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
  • 5 ist ein Zeitdiagramm, das den Pipeline-artigen Zugriff auf das Speichersubsystem unter der Steuerung eines DRAM-Taktsignals 73 veranschaulicht. Für die Zwecke der 5 wird angenommen, dass das Speichersubsystem aus SDRAM-Bauelementen gebildet ist, obwohl, wie oben erörtert, andere Speicherbauelemente, einschließlich EDO-DRAM und RAMBUS®-DRAM, ebenfalls verwendet werden könnten.
  • Um den Pipeline-Speicherzugriff zu veranschaulichen, sei eine beispielhafte Sequenz von vier Leseoperationen 74 angenommen, wobei jede Leseoperation erfordert, dass zwei Quadworte aus dem Speicher ausgegeben werden. Um eine erste der Leseoperationen RD1, zu initiieren, wird ein Chipauswahlsignal während einer ansteigenden Flanke 73A des DRAM-Taktsignals 73 angelegt (auf niedrigem Pegel gehalten). Da bei diesem Beispiel jede Leseoperation zwei aus dem Speicher auszugebende Quadworte erfordert, wird das Chipauswahlsignal für die zweite Leseoperation, RD2, während der ansteigenden DRAM-Taktflanke 73B, zwei Taktzyklen nach der ansteigenden Flanke 73A, angelegt. Die Chipauswahlsignale für die dritte und vierte Leseoperation, RD3 und RD4 werden in ähnlicher Weise in Zwei-Taktzyklus-Inkrementen während der ansteigenden Flanken 73C und 73D angelegt. Nach dem Anlegen des Chipauswahlsignals zum Eintasten einer Adresse in den SDRAM sind eine Reihe von Taktzyklen (beispielsweise drei) erforderlich, bevor der SDRAM gültige Daten ausgibt. Somit wird, wie es durch das Speicherdatensignal 79 gezeigt ist, der Datenwert 1A, welcher der durch die RD1-Operation gesuchte erste Wert ist, solange nicht abgetastet, bis die DRAM-Taktflanke 73E auftritt, drei Taktzyklen, nachdem die Chipauswahl angelegt worden ist und nachdem die Chipauswahl für die RD2-Operation angelegt worden ist. Somit wird ein Zugriffskommando für die zweite Leseoperation RD2 ausgegeben, bevor die Daten für die erste Leseoperation ausgegeben werden. Dies wird als Pipeline bezeichnet. Trotz der Tatsache, dass eine oder mehrere weitere Leseanforderungen zwischen dem Beginn der Operation RD1 und der Ausgabe des Datenwerts 1A initiiert werden, wird dennoch durch eine gut definierte Verzögerung zwischen dem Start einer Leseoperation und der Ausgabe der zugehörigen Daten für den Datenwert 1A festgestellt, dass er der RD1-Operation entspricht. Der Datenwert 1B, der zweite durch die RD1 gesuchte Datenwert, wird nicht bis zur Taktflanke 73C abgetastet, der gleichen Taktflanke, bei welcher die Chipauswahl für die RD3-Operation abgetastet wird. Die Datenwerte 2A/2B, 3A/3B und 4A/4B werden auf ähnliche Weise pipeline-verschachtelt. Da einige DRAM-DIMMs Register zum Puffer bestimmter Steuersignale bereitstellen, kann darüber hinaus die Tiefe der Pipeline (das heißt, die Verzögerungszeit zwischen dem Anlegen der Chipauswahl und der Ausgabe der zugehörigen Daten) um eine weitere DRAM-Taktperiode ausgedehnt werden. Dies ist durch das registrierte Speicherdatensignal 81 gezeigt. Nachdem der Datenwert aus dem Speichersubsystem ausgegeben worden ist, kann ein zusätzlicher Taktzyklus durch die ECC-Logik verbraucht werden, so dass zu dem Zeitpunkt, zu dem die Speicherkorrekturlogik ein Korrigierbarer-Fehler-Signal empfängt, das dem RD1-Zugriffskommando entspricht, die RD2- und RD3-Zugriffskommandos bereits ausgegeben worden sind. Dies ist in 5 durch das ECC-Logik-Ausgangssignal 83 angezeigt, bei welchem der Datenwert 1A nicht gültig wird, bis der RD3-Zugriff initiiert worden ist. Wie es durch das Säuberungsanforderungsausgangssignal 85 gezeigt ist, können zu dem Zeitpunkt, zu dem die Fehlerkorrekturlogik eine Säuberungsanforderung für den Datenwert 1A ausgibt (angenommen, dass eine Säuberungsoperation erforderlich ist), bereits vier oder mehr Zugriffskommandos durch die Speicherzugriffssteuerlogik ausgegeben worden sein.
  • Wie durch 5 gezeigt ist, können mehrere DRAM-Taktzyklen zwischen dem Zeitpunkt, zu dem eine Leseoperation initiiert wird, und dem Zeitpunkt, zu dem die anhängigen Daten ausgegeben und durch die ECC-Logik durchgeleitet werden, vergehen. Während dieser Zeit können zusätzliche Zugriffskommandos ausgegeben werden. Vom Standpunkt der Fehlerkorrektur aus schafft der Pipeline-artige Speicherzugriff der genannten Art ein Problem, da die einem gegebenen Zugriffskommando zugeordneten Adressinformationen möglicherweise nicht zu dem Zeitpunkt zur Verfügung stehen, zu dem die angeforderten Daten aus dem Speichersubsystem ausgegeben werden. Wie oben erörtert, wird bei verschiedenen Ausführungsbeispielen der vorliegenden Erfindung dieses Problem gelöst, indem wenigstens jeweils der Adressabschnitt der Leseoperationen entsprechenden Zugriffskommandos gepuffert wird, so dass dann, wenn beschädigte Daten erfasst werden, der Adressabschnitt des Zugriffskommandos wieder aufgerufen werden kann, und der Speicherzugriffssteuerlogik bei einer Anforderung zum Schreiben einer korrigierten Version der Daten zurück in das Speichersubsystem bei der gepufferten Adresse geliefert werden kann.
  • Die 6A, 6B, 6C, 6D, 6E, 6F, 6G und 6H veranschaulichen die Art und Weise, auf welche ein beispielhafter Satz von Leseoperationen durch die Speicherkorrekturlogik behandelt wird. In den 6B6G sind ein Säuberungspuffer, ein Schreibzeiger, ein Flag-Zeiger und ein Säuberungszeiger in Übereinstimmung mit den unter Bezugnahme auf 3 beschriebenen Ausführungsbeispielen gezeigt. Andere Säuberungspufferimplementierungen und Zeigeranordnungen können verwendet werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen. Beispielsweise kann, obwohl eine Spalte von Bauelementezeileninformationen in den 6B6G gezeigt ist, diese Spalte in einem alternativen Ausführungsbeispiel fortgelassen werden.
  • 6A listet fünf Beispielkommandos zum Lesen von Daten aus dem Speichersubsystem auf. Die Adresse, aus welcher die Daten gelesen werden, ist für jedes Kommando zusammen mit einer Anzeige darüber gezeigt, ob ein Fehler in dem gelesenen Datenwert erfasst wurde.
  • 6B zeigt den Zustand des Säuberungspuffers, nachdem die erste Leseoperation initiiert worden ist. Der Schreibzeiger zeigt anfänglich auf den Eintrag Null und wird vorgerückt, so dass er auf den Eintrag Eins zeigt, nachdem die Adresse, 0 500 000, und die Bauelementezeile, 0, in den Eintrag Null geschrieben worden sind. Diese Operation wird als ”Laden” eines Eintrags des Säuberungspuffers bezeichnet. Angenommen, es gibt keine weiteren Einträge in dem Säuberungspuffer, so wird der Flag-Zeiger so zugewiesen, dass er auf den Eintrag Null zeigt, während die Daten für den Eintrag Null anhängig sind (das heißt, noch aus dem Speichersubsystem ausgegeben werden sollen). Für den Säuberungszeiger wird angezeigt, dass er N/A (= nicht anwendbar) ist, da keine Fehler-Flags gesetzt worden sind. Wie oben erörtert, kann der N/A-Status des Säuberungszeigers beispielsweise gekennzeichnet werden, indem ein Außerhalb-des-Bereichs-Werts dem Säuberungszeiger zugewiesen wird oder indem dem Säuberungszeiger ein Wert zugewiesen wird, der auf einen Säuberungspuffereintrag verweist, der ein gelöschtes Fehler-Flag aufweist (das heißt ein Fehler-Flag, das auf einen keinen Fehler anzeigenden Zustand gesetzt ist). Der Inhalt der Fehler-Flag-Spalte (EFLAG) ist als unbekannt (das heißt ”?”) für den Eintrag Eins angezeigt, während der Datenwert anhängig ist. Um zu vermeiden, dass der Säuberungszeiger unabsichtlich vorgerückt wird, kann der Inhalt der Fehler-Flag-Spalte für sämtliche Säuberungspuffereinträge beim Einschalten des Systems gelöscht werden. Die Inhalte der Adress-, der Zeilen- und der Fehler-Flag-Spalte für den Eintrag Eins sind ebenfalls als unbekannt angezeigt, da der Eintrag noch zu laden ist.
  • 6C veranschaulicht den Zustand des Säuberungspuffers, nachdem die zweite Leseoperation initiiert worden ist. Der Schreibzeiger wurde zum Eintrag Zwei vorangerückt, nachdem der Eintrag Eins mit Adress- und Bauelementezeileninformationen geladen ist. Der Flag-Zeiger verweist weiterhin auf den Eintrag Null, da der Eintrag Null der älteste Eintrag ist, für welchen die Daten anhängig sind. Der Säuberungszeiger verbleibt N/A.
  • 6D veranschaulicht den Zustand des Säuberungspuffers, nachdem eine dritte Leseoperation initiiert worden ist. Der Säuberungspuffereintrag Zwei wird mit Adress- und Bauelementezeileninformationen geladen, die der dritten Leseoperation entsprechen, und der Schreibzeiger wird auf den Eintrag Drei vorgerückt. An irgendeiner Stelle vor der Initiierung der vierten Leseoperation wird der für den Eintrag Null anhängige Datenwert aus dem Speichersubsystem ausgegeben und durch die ECC-Logik geleitet. Da bei diesem Beispiel kein Fehler für die erste Leseoperation erfasst wird (das heißt, die Daten sauber waren), wird ein Fehler-Flag mit dem Wert Null in dem Säuberungspuffereintrag aufgezeichnet, auf den durch den Flag-Zeiger verwiesen wird. Man beachte, dass die Verwendung eines Fehler-Flags vom Wert Null zum Anzeigen sauberer Daten willkürlich ist und alternativ ein Wert ungleich Null verwendet werden kann, um saubere Daten anzuzeigen. In jedem Fall wird das Zuweisen eines Werts zum Fehler-Flag, der saubere Daten anzeigt, als Löschen des Fehler-Flags bezeichnet und das Zuweisen eines Werts, der beschädigte Daten anzeigt, als das Setzen des Fehler-Flags bezeichnet. Nachdem das Fehler-Flag gelöscht worden ist, wird der Flag-Zeiger vorgerückt, so dass er auf den Säuberungspuffereintrag Eins verweist, welcher jetzt der älteste Säuberungspuffereintrag ist, für welchen die Daten anhängig sind.
  • 6E veranschaulicht den Zustand des Säuberungspuffers, nachdem die vierte Leseoperation initiiert worden ist und nachdem die Daten, die dem Eintrag Eins entsprechen, durch das Speichersubsystem ausgegeben worden sind. Wie angezeigt, wird der dritte Eintrag mit Adress- und Bauelementezeileninformationen geladen, die der vierten Leseoperation entsprechen, und der Schreibzeiger wird so vorgerückt, dass er auf den Eintrag Vier verweist. Da ein Fehler in dem ausgegebenen Datenwert erfasst worden ist, wird das Fehler-Flag für den Eintrag Eins gesetzt und der Flag-Zeiger wird zum Eintrag Zwei vorgerückt. Wie oben erörtert, können die Adress- und Bauelementezeileninformationen im Eintrag Eins zur Fehlerberichtslogik weitergeleitet werden. Weil das Fehler-Flag für den Eintrag Eins gesetzt ist, wird darüber hinaus dem Säuberungszeiger ein Wert zugewiesen, der auf den Eintrag Eins verweist (das heißt, Eintrag Eins wird der Säuberungseintrag). Die Säuberungsanforderungslogik, welche die Adresse und den Fehler-Flag-Wert aus dem Säuberungseintrag empfängt, erfasst, dass das Fehler-Flag gesetzt ist und gibt eine Säuberungsanforderung aus. Bei einem Ausführungsbeispiel bleibt das Fehler-Flag in dem Säuberungseintrag gesetzt und wird der Säuberungszeiger nicht vorgerückt, bis eine Säuberungsbestätigung empfangen worden ist, die eine Bestätigung eines Zugriffskommandos zum Schreiben eines korrigierten Datenwerts in das Speichersubsystem bei der Säuberungsadresse anzeigt.
  • 6F veranschaulicht den Zustand des Säuberungspuffers, nachdem die fünfte Leseoperation initiiert worden ist und nachdem die dem Säuberungspuffereintrag Zwei entsprechenden Daten durch das Speichersubsystem ausgegeben worden sind. Eintrag Vier wird mit den Adress- und Bauelementezeileninformationen geladen, die der fünften Leseoperation entsprechen, und der Schreibzeiger wird zum Säuberungspuffereintrag Fünf vorgerückt. In Abhängigkeit von der Anzahl der Einträge in dem Säuberungspuffer wird das Vorrücken des Schreibzeigers schließlich das Umlaufen des Schreibzeigers zurück zum Eintrag Null erfordern. Da die dem Säuberungspuffereintrag Zwei zugeordneten Daten sauber sind, wird das Fehler-Flag für den Eintrag Zwei gelöscht und der Flag-Zeiger vorgerückt. Der Säuberungszeiger zeigt weiterhin auf den Eintrag Eins.
  • 6G veranschaulicht den Zustand des Säuberungspuffers, nachdem die dem Eintrag Drei entsprechenden Daten ausgegeben worden sind. Das Fehler-Flag des Eintrags Drei wird gesetzt und der Flag-Zeiger wird vorgerückt. Da bei diesem Beispiel keine neuen Leseoperationen initiiert worden sind, zeigt der Schreibzeiger weiterhin auf Eintrag Fünf. Der Säuberungszeiger zeigt weiterhin auf Eintrag Eins.
  • In 6H wird die für den Eintrag Eins angeforderte Säuberungsoperation bestätigt. Gemäß einem Ausführungsbeispiel wird der Fehler-Flag-Wert für den Eintrag gelöscht und der Säuberungszeiger wird auf den nächsten Säuberungspuffereintrag vorgerückt, für welchen ein Fehler-Flag gesetzt ist (bei diesem Beispiel der Eintrag Drei). Da nunmehr Eintrag Drei der Säuberungseintrag ist, werden die Adresse und das Fehler-Flag aus dem Eintrag Drei der Säuberungsanforderungslogik geliefert. Da das Fehler-Flag des Eintrags Drei gesetzt ist, gibt die Säuberungsanforderungslogik eine Säuberungsanforderung zum Schreiben eines korrigierten Datenwerts an das Speichersubsystem an der Adresse aus dem Eintrag Drei aus.
  • 7 veranschaulicht die Art und Weise, auf welche gemäß einem Ausführungsbeispiel korrigierte Daten in das Speichersubsystem zurückgeschrieben werden. Wie angezeigt, werden vom Speichersubsystem 14 ausgegebene Daten und ECC-Werte durch einen bidirektionalen Treiber 98A durchgeleitet und einem Syndromgenerator 91 in der ECC-Logik 39 eingegeben. Auf der Grundlage einer Kombination des ECC-Werts und seines zugehörigen Datenwerts gibt der Syndromgenerator 91 einen Wert aus, der ”Syndrom” 95 genannt wird, ebenso wie eines oder mehrere Fehler-Erfasst-Signale 27. Wenn das eine oder die mehreren Fehler-Erfasst-Signale 27 anzeigen, dass die Daten einen korrigierbaren Fehler aufweisen, kann die Speicherkorrekturlogik eine Säuberungsanforderung erzeugen und den Fehler in der oben erörterten Weise berichten.
  • Das Syndrom 95 wird einem Flip-Vektor-Generator 92 geliefert, um einen Flip-Vektor 96 zu erzeugen. Bei einem Ausführungsbeispiel wird der Flip-Vektor 96 mit dem Datenwert (beispielsweise unter Verwendung des Logikelements 94) exklusiv-ODER-verknüpft, um einen korrigierten Datenwert zu erzeugen. Insbesondere wird dann, wenn der von dem Speichersubsystem ausgegebene Datenwert eines oder mehrere identifizierbare invertierte (flipped) Bits aufweist, ein Flip-Vektor 96, der gesetzte Bits in den den fehlerhaften Positionen in dem Datenwert entsprechenden Positionen enthält, mit dem Datenwert exklusiv-ODER-verknüpft, um den Datenwert in einem korrigierten Zustand wiederherzustellen. Wenn der Datenwert keine invertierten Bits aufweist, kann ein Flip-Vektor 96 mit dem Wert Null angelegt werden. Wenn der Datenwert eines oder mehrere nicht identifizierbare invertierte Bits aufweist, werden die Daten als nicht wiederherstellbar beschädigt angesehen.
  • Für die vorliegenden Zwecke sei angenommen, dass ein beschädigter Datenwert von der ECC-Logik 39 korrigiert wird, und der Datenwert der RMW-Logik 41 geliefert wird. Gemäß einem Ausführungsbeispiel enthält die RMW-Logik 41 eine RMW-Steuerlogik 102, einen RMW-Puffer 105 und Multiplexer (100A, 100B, 100C). Die RMW-Steuerlogik 102 empfängt RMW-Steuersignale (RMW – CNTRL) aus der Speicherzugriffssteuerlogik, um wenigstens zwei Arten von Operationen zu unterstützen: partielle Schreiboperationen und Säuberungsoperationen.
  • Eine partielle Schreiboperation bezeichnet ein Schreiben einer geringeren Menge von Daten, als sie durch die Granularität des Speichersubsystems 14 gestattet ist (z. B. ein Schreiben eines Werts von Wortgröße in ein Speichersubsystem, auf das nur in einer Granularität von Quadwort-Größe zugegriffen werden kann). Ein Weg zum Durchführen einer partiellen Schreiboperation besteht darin, einen Abschnitt eines aus dem Speichersubsystem 14 gelesenen Datenwerts mit den zu schreibenden Daten zu überschreiben (das heißt, die zu schreibenden Daten und den aus dem Speicher zu lesenden Wert zu verschmelzen) und dann den verschmolzenen Wert in das Speichersubsystem 14 zurückzuschreiben. Bei einem Ausführungsbeispiel wird dies unter Verwendung von Multiplexern (100A, 100B, 100C) ausgeführt, um Daten aus einem einer Reihe von Schreibpuffern mit in dem RMW-Puffer 105 gespeicherten Daten zu verschmelzen. In Erwiderung eines oder mehrerer RMW-Steuersignale aus der Speicherzugriffslogik veranlasst die RMW-Steuerlogik 102, dass ein von der ECC-Logik 39 ausgegebener Datenwert in dem RMW-Puffer 105 gespeichert wird, und legt Multiplexer-Steuersignale an die Multiplexer (100A, 100B, 100C) an, um den Datenwert in dem RMW-Puffer 105 mit Daten aus anderen Schreibpuffern zu verschmelzen. Der verschmolzene Datenwert wird dann dem Speichersubsystem 14 (über den ECC-Generator 97 in der ECC-Logik 39) geliefert, wo er an die richtige Adresse geschrieben wird.
  • Gemäß einem Ausführungsbeispiel wird die zum Durchführen der oben beschriebenen Lese-Verschmelze-Schreib-Operation verwendete Schaltung außerdem verwendet, um Säuberungsoperationen zu unterstützen. In Erwiderung einer Säuberungsanforderung gibt die Speicherzugriffssteuerlogik RMW-Steuersignale aus, um zu veranlassen, dass ein korrigierter Datenwert in dem RMW-Puffer 105 gespeichert und dann durch die Multiplexer (100A, 100B, 100C) ohne Modifikation durch partielle Schreibdaten aus anderen Schreibpuffern gelenkt wird. Der korrigierte Datenwert aus dem RMW-Puffer 105 wird dann in den Speicher an die in der Säuberungsanforderung gelieferte Adresse geschrieben. Bei einem Ausführungsbeispiel wird der von dem RMW-Puffer 105 ausgegebene korrigierte Datenwert durch den ECC-Generator 97 in der ECC-Logik 39 derart durchgeleitet, dass ein korrigierter Datenwert und sein zugehöriger ECC in dem Speichersubsystem 14 gespeichert werden.
  • Es ist klar, dass das oben beschriebene Ausführungsbeispiel zum Bedienen von Säuberungsanforderungen viele der gleichen Logikelemente und Datenpfade verwendet, die zum Unterstützen partieller Schreiboperationen verwendet werden. Durch eine mehrfache Benutzung der Lese-Verschmelze-Schreib-Logik auf diese Weise können verschiedene Ausführungsbeispiele der vorliegenden Erfindung mit einer verringerten Gatteranzahl und folglich zu geringeren Kosten implementiert werden. Trotz dieser Vorteile würden Ausführungsbeispiele, bei denen separate Logik für die Lese-Verschmelze-Schreib-Operationen und die Säuberungsoperationen verwendet wird, nicht vom Geist und Umfang der vorliegenden Erfindung abweichen.
  • 8 ist ein Ablaufdiagramm eines verallgemeinerten Verfahrens gemäß einem oder mehrerer Ausführungsbeispiele der vorliegenden Erfindung. Beim Schritt 112 werden Adressen an ein Speichersubsystem zum Lesen von Datenwerten aus dem Speichersubsystem angelegt. Beim Schritt 114 werden die Adressen in einem Speicherpuffer gespeichert, während die Ausgabe der Datenwerte aus dem Speichersubsystem anhängig ist. Für jeden der aus dem Speichersubsystem ausgegebenen Datenwerte wird im Schritt 116 eine Bestimmung darüber ausgeführt, ob der Datenwert einen korrigierbaren Fehler aufweist. Sofern der Datenwert einen korrigierbaren Fehler aufweist, wird im Schritt 118 eine korrigierte Version des Datenwerts in einen Speicherplatz des Speichersubsystems eingeschrieben, der durch eine entsprechende in dem Speicherpuffer gespeicherte Adressse angezeigt wird.

Claims (23)

  1. Steuereinrichtung (12), die zwischen einem Speichersubsystem (14) und wenigstens einem Speicherzugriffsanforderungen ausgebenden Teilnehmer (10, 16, 22) eingekoppelt ist, wobei die Speicherzugriffsanforderungen Lese- und Schreibanforderungen umfassen, wobei die Steuereinrichtung aufweist: eine Zugriffslogik (45a45c, 30, 37, 41), die über Schnittstellen mit den anfordernden Teilnehmern (10, 16, 22) und über eine Schnittstelle (37) mit dem Speichersubsystem (14) gekoppelt ist, eine Fehlererfassungslogik (39), die aus dem Speichersubsystem (14) ausgegebene Datenwerte empfängt und ein Fehlersignal auf einer Leitung (27) ausgibt, welches anzeigt, ob der von dem Speichersubsystem (14) ausgegebene Datenwert einen korrigierbaren Fehler aufweist, eine mit der Zugriffslogik und der Leitung (27) gekoppelte Korrekturlogik (35), die ein Steuersignal der Zugriffslogik abtastet, welches anzeigt, ob es sich bei einem Zugriff auf das Speichersubsystem (14) um eine Speicherleseoperation aufgrund einer Leseanforderung eines der anfordernden Teilnehmer handelt, wobei die Korrekturlogik (35) jedesmal dann, wenn das abgetastete Steuersignal anzeigt, dass es sich um eine Speicherleseoperation handelt, und wenn das Signal auf der Leitung (27) anzeigt, dass der gelesene Datenwert einen korrigierbaren Fehler aufweist, eine Anforderung zum Schreiben einer korrigierten Version des gelesenen Datenwerts in das Speichersubsystem (14) an die Zugriffslogik ausgibt, wobei bei der so angeforderten Schreiboperation die von der Fehlererfassungslogik (39) erzeugte korrigierte Version der Daten, welche in einem Speicher (105) zwischengespeichert ist, in das Speichersubsystem (14) zurückgeschrieben wird.
  2. Einrichtung nach Anspruch 1, wobei die Korrekturlogik (35) enthält: einen Speicherpuffer zum Halten von bei Speicherleseoperationen angelegten Adressen; einen Schreibzeiger (54) zum Anzeigen eines jeweiligen Eintrags in dem Speicherpuffer, in welchem die jeweilige Adresse gespeichert werden soll; einen Flag-Zeiger (55) zum Anzeigen eines Eintrags in dem Speicherpuffer, der eine am längsten zurückliegend gespeicherte Adresse derjenigen Adressen enthält, für welche die Ausgabe von Daten aus dem Speicher noch anhängig ist.
  3. Einrichtung nach Anspruch 2, wobei die Korrekturlogik (35) ferner einen Säuberungszeiger (56) enthält, um einen Eintrag in dem Speicherpuffer anzuzeigen, für welchen ein aus dem Speicher ausgegebener zugehöriger Datenwert einen korrigierbaren Fehler aufweist.
  4. Einrichtung nach Anspruch 3, wobei die Anforderung an die Zugriffslogik eine Adresse aus dem Speicherpuffereintrag, auf den durch den Säuberungszeiger (56) verwiesen wird, enthält.
  5. Einrichtung nach Anspruch 2, wobei der Flag-Zeiger (55) vorgerückt wird, um auf einen nachfolgenden Eintrag in dem Speicherpuffer zu verweisen, nachdem die anhängigen Daten aus dem Speicher ausgegeben worden sind und nachdem ein Flag-Wert, der anzeigt, ob der Datenwert einen korrigierbaren Fehler aufweist, in dem durch den Flag-Zeiger angezeigten Speicherpuffereintrag gespeichert worden ist.
  6. Einrichtung nach Anspruch 5, wobei der Flag-Wert auf der Grundlage des Fehlersignals bestimmt wird.
  7. Einrichtung nach Anspruch 5, wobei die Korrekturlogik (35) ferner einen Säuberungszeiger (56) enthält, um auf einen Eintrag in dem Speicherpuffer zu zeigen, der eine am längsten zurückliegend gespeicherte Adresse enthält, die an die Zugriffslogik bei einer anhängigen Anforderung zum Schreiben eines korrigierten Datenwerts in den Speicher geliefert worden ist.
  8. Einrichtung nach Anspruch 7, wobei der Säuberungszeiger (56) vorgerückt wird, um auf einen weiteren Eintrag in dem Speicherpuffer zu zeigen, für welchen der Flag-Wert einen korrigierbaren Fehler anzeigt, nachdem die anhängige Anforderung zum Schreiben eines korrigierten Datenwerts bestätigt worden ist.
  9. Einrichtung nach Anspruch 2, wobei die Korrekturlogik (35) ferner einen Säuberungszeiger (56) enthält, der einen Eintrag in den Speicherpuffer anzeigt, der eine am längsten zurückliegend gespeicherte Adresse enthält, die an die Zugriffslogik bei einer anhängigen Anforderung zum Schreiben eines korrigierten Datenwerts geliefert worden ist.
  10. Einrichtung nach Anspruch 2, wobei die Adresse in dem durch den Flag-Zeiger (55) angezeigten Speicherpuffereintrag an eine Fehlerberichtslogik (43) geliefert wird, sofern für die anhängigen Daten, wenn sie durch den Speicher ausgegeben werden, durch das zugehörige Fehlersignal angezeigt wird, dass sie einen korrigierbaren Fehler aufweisen.
  11. Einrichtung nach Anspruch 2, ferner aufweisend eine Speicherschnittstellenlogik (37), die ein Signal an die Korrekturlogik (35) anlegt, um anzuzeigen, auf welche Zeile einer Mehrzahl von Zeilen von Speicherbauelementen während einer Speicherleseoperation zugegriffen wird, und wobei die Korrekturlogik (35) einen Zeilenwert speichert, der die zugegriffene Zeile zusammen mit einer zugehörigen der Adressen in einem Eintrag in dem Speicherpuffer anzeigt.
  12. Einrichtung nach Anspruch 10, wobei die Adresse und der Zeilenwert in dem Speicherpuffereintrag, auf den von dem Flag-Zeiger (55) gezeigt wird, der Fehlerberichtslogik (43) geliefert werden, sofern für den anhängigen Datenwert, wenn er durch den Speicher ausgegeben wird, durch das zugehörige Fehlersignal angezeigt wird, dass er einen korrigierbaren Fehler aufweist.
  13. Verfahren zum Korrigieren beschädigter Daten eines Speichersubsystems mit Hilfe einer zwischen dem Speichersubsystem (14) und Speicherzugriffsanforderungen ausgebenden Teilnehmern (10, 16, 22) eingekoppelten Steuereinrichtung (12), wobei: von der Steuereinrichtung festgestellt wird, ob ein angeforderter Speicherzugriff auf das Speichersubsystem an einer spezifizierten Adresse eine Leseoperation zum Lesen von Datenwerten ist, und dann, wenn dies der Fall ist, die Adresse der Speicherleseoperation in der Steuereinrichtung zwischengespeichert wird (114), während die Ausgabe des zugehörigen Datenwerts aus dem Speicher ansteht, für den aus dem Speicher ausgegebenen Datenwert bestimmt wird (116), ob der Datenwert einen korrigierbaren Fehler aufweist, und dann, wenn der gelesene Datenwert einen korrigierbaren Fehler aufweist, in der Steuereinrichtung eine korrigierte Version des Datenwerts erzeugt und in einem Speicher (105) zwischengespeichert wird, mit Hilfe der zwischengespeicherten Adresse und der zwischengespeicherten korrigierten Version des Datenwerts eine Schreibanforderung erzeugt wird und die korrigierte Version des Datenwerts in dem durch die Adresse angezeigten Speicherplatz des Speichersubsystems eingeschrieben wird (118).
  14. Verfahren nach Anspruch 13, wobei der Schritt des Speicherns der Adressen den Schritt des Speicherns wenigstens eines am höchsten bewerteten Abschnitts jeder der Adressen, die an den Speicher angelegt werden, in einen Speicherpuffer umfasst.
  15. Verfahren nach Anspruch 13, ferner umfassend den Schritt des Speicherns von Zeilenwerten in einen Speicherpuffer, um anzuzeigen, auf welche Zeile einer Mehrzahl von Zeilen von Speicherbauelementen zugegriffen wird, um den jeweiligen der Datenwerte zu lesen.
  16. Verfahren nach Anspruch 15, ferner umfassend den Schritt des Übertragens eines Zeilenwerts und einer Adresse aus dem Speicherpuffer zu einer Fehlerberichtslogik für einen Zugriff durch einen Prozessor, sofern der zugehörige Datenwert, der durch den Speicher ausgegeben wird, einen korrigierbaren Fehler aufweist.
  17. Verfahren nach Anspruch 13, ferner umfassend die Schritte: Speichern jeder der Adressen in einem zugehörigen Speicherpuffereintrag, der durch einen Schreibzeiger angezeigt wird; und Speichern, für jeden der Datenwerte, eines Flag-Werts, der anzeigt, ob der Datenwert einen korrigierbaren Fehler aufweist, in einem zugehörigen Speicherpuffereintrag, der durch einen Flag-Zeiger angezeigt wird, wobei der zugehörige Speicherpuffereintrag, der durch den Flag-Zeiger angezeigt wird, darüber hinaus eine zugehörige Adresse, aus welcher der Datenwert gelesen wurde, enthält.
  18. Verfahren nach Anspruch 17, ferner umfassend die Schritte: Aufrechterhalten eines Säuberungszeigers, um einen Eintrag in dem Speicherpuffer anzuzeigen, der einen Flag-Wert aufweist, der einen korrigierbaren Fehler anzeigt; und Löschen des Flag-Werts in dem Speicherpuffereintrag, der durch den Säuberungszeiger angezeigt wird, nachdem der Schritt des Schreibens einer korrigierten Version des Datenwerts begonnen hat.
  19. Verfahren nach Anspruch 18, wobei der Schritt des Schreibens einer korrigierten Version des Datenwerts in einen Speicherplatz des Speichers den Schritt des Schreibens einer korrigierten Version des Datenwerts in den Speicher an einer Adresse desjenigen Speicherpuffereintrags, auf den durch den Säuberungszeiger verwiesen wird, umfasst.
  20. Verfahren nach Anspruch 13, wobei der Schritt des Schreibens einer korrigierten Version des Datenwerts in einen Speicherplatz des Speichers die Schritte umfasst: Lesen des Datenwerts aus dem Speicherplatz in dem Speicher; Erzeugen einer korrigierten Version des Datenwerts auf der Grundlage eines Fehlerkorrekturwerts, der dem Datenwert zugeordnet ist; und Schreiben der korrigierten Version des Datenwerts in den Speicherplatz in dem Speicher.
  21. Ein Computersystem aufweisend: einen Prozessor als einem Speicherzugriffsanforderungen ausgebenden Teilnehmer; einen Speicher, der eine Mehrzahl von Speicherbauelementen mit wahlfreiem Zugriff enthält; und eine mit dem Prozessor und dem Speicher gekoppelte Steuereinrichtung nach einem der Ansprüche 1–12.
  22. Computersystem nach Anspruch 21, dadurch gekennzeichnet, dass der Speicher eine Mehrzahl von dynamischen Speicherbauelementen mit wahlfreiem Zugriff und erweiterter Datenausgabe (EDO DRAM) enthält.
  23. Computersystem nach Anspruch 21, dadurch gekennzeichnet, dass der Speicher eine Mehrzahl von synchronen, dynamischen Speicherbauelementen mit wahlfreiem Zugriff (SDRAM) aufweist.
DE19882853.5T 1997-11-26 1998-10-22 Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist Expired - Fee Related DE19882853B3 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/978,807 US5987628A (en) 1997-11-26 1997-11-26 Method and apparatus for automatically correcting errors detected in a memory subsystem
US08/978,807 1997-11-26
PCT/US1998/022417 WO1999027449A1 (en) 1997-11-26 1998-10-22 Method and apparatus for automatically correcting errors detected in a memory subsystem

Publications (2)

Publication Number Publication Date
DE19882853T1 DE19882853T1 (de) 2001-06-21
DE19882853B3 true DE19882853B3 (de) 2014-02-20

Family

ID=25526405

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19882853.5T Expired - Fee Related DE19882853B3 (de) 1997-11-26 1998-10-22 Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist

Country Status (5)

Country Link
US (1) US5987628A (de)
AU (1) AU1273999A (de)
DE (1) DE19882853B3 (de)
TW (1) TW413755B (de)
WO (1) WO1999027449A1 (de)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560725B1 (en) * 1999-06-18 2003-05-06 Madrone Solutions, Inc. Method for apparatus for tracking errors in a memory system
US6519717B1 (en) * 1999-10-06 2003-02-11 Sun Microsystems Inc. Mechanism to improve fault isolation and diagnosis in computers
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6784889B1 (en) 2000-12-13 2004-08-31 Micron Technology, Inc. Memory system and method for improved utilization of read and write bandwidth of a graphics processing system
US6675317B2 (en) * 2000-12-14 2004-01-06 International Business Machines Corporation Method and system for determining erase procedures run on a hard drive
US7079775B2 (en) * 2001-02-05 2006-07-18 Finisar Corporation Integrated memory mapped controller circuit for fiber optics transceiver
US20040197101A1 (en) * 2001-02-05 2004-10-07 Sasser Gary D. Optical transceiver module with host accessible on-board diagnostics
US7302186B2 (en) * 2001-02-05 2007-11-27 Finisar Corporation Optical transceiver and host adapter with memory mapped monitoring circuitry
US7346278B2 (en) * 2001-02-05 2008-03-18 Finisar Corporation Analog to digital signal conditioning in optoelectronic transceivers
US6851070B1 (en) * 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6741253B2 (en) * 2001-10-09 2004-05-25 Micron Technology, Inc. Embedded memory system and method including data error correction
US20030163769A1 (en) * 2002-02-27 2003-08-28 Sun Microsystems, Inc. Memory module including an error detection mechanism for address and control signals
US6941493B2 (en) * 2002-02-27 2005-09-06 Sun Microsystems, Inc. Memory subsystem including an error detection mechanism for address and control signals
EP1359485B1 (de) * 2002-05-03 2015-04-29 Infineon Technologies AG Steuer- und Überwachungssystem
US6976194B2 (en) * 2002-06-28 2005-12-13 Sun Microsystems, Inc. Memory/Transmission medium failure handling controller and method
US6996766B2 (en) * 2002-06-28 2006-02-07 Sun Microsystems, Inc. Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
US6973613B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US6996686B2 (en) * 2002-12-23 2006-02-07 Sun Microsystems, Inc. Memory subsystem including memory modules having multiple banks
US7779285B2 (en) * 2003-02-18 2010-08-17 Oracle America, Inc. Memory system including independent isolated power for each memory module
US7092978B2 (en) 2003-02-24 2006-08-15 Sun Microsystems, Inc. Space-efficient, depth-first parallel copying collection technique making use of work—stealing on the same structures that maintain the stack of items to be scanned
US20040186862A1 (en) * 2003-03-18 2004-09-23 Garthwaite Alexander T. Parallel caching of insertions into remembered-sets
US7072918B2 (en) * 2003-03-24 2006-07-04 Sun Microsystems, Inc. Remembered-set scrubbing to remove stale entries in an incremental garbage collector
US7613767B2 (en) 2003-07-11 2009-11-03 Microsoft Corporation Resolving a distributed topology to stream data
US7530008B2 (en) 2003-08-08 2009-05-05 Sun Microsystems, Inc. Scalable-chip-correct ECC scheme
US7188296B1 (en) 2003-10-30 2007-03-06 Sun Microsystems, Inc. ECC for component failures using Galois fields
US7712108B2 (en) * 2003-12-08 2010-05-04 Microsoft Corporation Media processing methods, systems and application program interfaces
US7733962B2 (en) * 2003-12-08 2010-06-08 Microsoft Corporation Reconstructed frame caching
US7900140B2 (en) 2003-12-08 2011-03-01 Microsoft Corporation Media processing methods, systems and application program interfaces
US7735096B2 (en) * 2003-12-11 2010-06-08 Microsoft Corporation Destination application program interfaces
US20050185718A1 (en) * 2004-02-09 2005-08-25 Microsoft Corporation Pipeline quality control
US7934159B1 (en) 2004-02-19 2011-04-26 Microsoft Corporation Media timeline
US7941739B1 (en) 2004-02-19 2011-05-10 Microsoft Corporation Timeline source
US7664882B2 (en) 2004-02-21 2010-02-16 Microsoft Corporation System and method for accessing multimedia content
US7609653B2 (en) 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
US7577940B2 (en) 2004-03-08 2009-08-18 Microsoft Corporation Managing topology changes in media applications
US7669206B2 (en) * 2004-04-20 2010-02-23 Microsoft Corporation Dynamic redirection of streaming media between computing devices
US7590750B2 (en) * 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
DE102004059392B4 (de) 2004-12-09 2015-09-10 Infineon Technologies Ag Verfahren zur Neubelegung eines Befehlsspeichers, Subsystem zur Durchführung eines derartigen Verfahrens, sowie Mikrokontroller
US9459960B2 (en) * 2005-06-03 2016-10-04 Rambus Inc. Controller device for use with electrically erasable programmable memory chip with error detection and retry modes of operation
US7831882B2 (en) * 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
TWI292866B (en) * 2005-09-09 2008-01-21 Via Tech Inc Method for calculatng an error detection code
US7885929B2 (en) 2006-01-03 2011-02-08 Motio, Inc. Continuous integration of business intelligence software
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
JP4887824B2 (ja) * 2006-02-16 2012-02-29 富士通セミコンダクター株式会社 メモリシステム
US20070271495A1 (en) * 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
US8352805B2 (en) 2006-05-18 2013-01-08 Rambus Inc. Memory error detection
JP4343945B2 (ja) * 2006-12-28 2009-10-14 三菱電機株式会社 電子制御装置
US8176388B1 (en) * 2007-06-20 2012-05-08 Marvell Israel (Misl) Ltd. System and method for soft error scrubbing
US7882323B2 (en) * 2007-09-07 2011-02-01 International Business Machines Corporation Scheduling of background scrub commands to reduce high workload memory request latency
US8122308B2 (en) * 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
US8159956B2 (en) 2008-07-01 2012-04-17 Finisar Corporation Diagnostics for serial communication busses
US9170879B2 (en) * 2009-06-24 2015-10-27 Headway Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
GB2497525A (en) 2011-12-12 2013-06-19 St Microelectronics Ltd Controlling shared memory data flow
US9325346B1 (en) * 2012-05-31 2016-04-26 Marvell International Ltd. Systems and methods for handling parity and forwarded error in bus width conversion
US9898362B2 (en) * 2016-04-07 2018-02-20 Atmel Corporation Multi-channel RAM with ECC for partial writes
KR102243582B1 (ko) * 2017-04-24 2021-04-23 에스케이하이닉스 주식회사 반도체장치
CN111819547A (zh) 2018-03-26 2020-10-23 拉姆伯斯公司 命令/地址通道错误检测
US11294766B2 (en) * 2019-08-13 2022-04-05 Micron Technology, Inc. Coordinated error correction
US20220075688A1 (en) * 2021-11-14 2022-03-10 Intel Corporation Circuits And Methods For Correcting Errors In Memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4319356A (en) * 1979-12-19 1982-03-09 Ncr Corporation Self-correcting memory system
US4535455A (en) * 1983-03-11 1985-08-13 At&T Bell Laboratories Correction and monitoring of transient errors in a memory system
US4604750A (en) * 1983-11-07 1986-08-05 Digital Equipment Corporation Pipeline error correction
US4884271A (en) * 1987-12-28 1989-11-28 International Business Machines Corporation Error checking and correcting for read-modified-write operations
US4939694A (en) * 1986-11-03 1990-07-03 Hewlett-Packard Company Defect tolerant self-testing self-repairing memory system

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3735105A (en) * 1971-06-11 1973-05-22 Ibm Error correcting system and method for monolithic memories
US4005405A (en) * 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
US4336611A (en) * 1979-12-03 1982-06-22 Honeywell Information Systems Inc. Error correction apparatus and method
JPS6388920A (ja) * 1986-10-02 1988-04-20 Victor Co Of Japan Ltd 符号エラ−訂正回路
US4899342A (en) * 1988-02-01 1990-02-06 Thinking Machines Corporation Method and apparatus for operating multi-unit array of memories
US4888773A (en) * 1988-06-15 1989-12-19 International Business Machines Corporation Smart memory card architecture and interface
US4920539A (en) * 1988-06-20 1990-04-24 Prime Computer, Inc. Memory error correction system
US4964130A (en) * 1988-12-21 1990-10-16 Bull Hn Information Systems Inc. System for determining status of errors in a memory subsystem
US4964129A (en) * 1988-12-21 1990-10-16 Bull Hn Information Systems Inc. Memory controller with error logging
US5127014A (en) * 1990-02-13 1992-06-30 Hewlett-Packard Company Dram on-chip error correction/detection
US5140592A (en) * 1990-03-02 1992-08-18 Sf2 Corporation Disk array system
US5233616A (en) * 1990-10-01 1993-08-03 Digital Equipment Corporation Write-back cache with ECC protection
US5392302A (en) * 1991-03-13 1995-02-21 Quantum Corp. Address error detection technique for increasing the reliability of a storage subsystem
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5263032A (en) * 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5325375A (en) * 1991-06-28 1994-06-28 Sun Microsystems, Inc. Method and apparatus for non-atomic level parity protection for storing data in a random access memory
US5267242A (en) * 1991-09-05 1993-11-30 International Business Machines Corporation Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
US5644583A (en) * 1992-09-22 1997-07-01 International Business Machines Corporation Soft error correction technique and system for odd weight row error correction codes
US5430742A (en) * 1992-10-14 1995-07-04 Ast Research, Inc. Memory controller with ECC and data streaming control
US5388108A (en) * 1992-10-23 1995-02-07 Ncr Corporation Delayed initiation of read-modify-write parity operations in a raid level 5 disk array
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
US5367526A (en) * 1993-06-22 1994-11-22 Kong Edmund Y Memory module, parity bit emulator, and associated method for parity bit emulation
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4319356A (en) * 1979-12-19 1982-03-09 Ncr Corporation Self-correcting memory system
US4535455A (en) * 1983-03-11 1985-08-13 At&T Bell Laboratories Correction and monitoring of transient errors in a memory system
US4604750A (en) * 1983-11-07 1986-08-05 Digital Equipment Corporation Pipeline error correction
US4939694A (en) * 1986-11-03 1990-07-03 Hewlett-Packard Company Defect tolerant self-testing self-repairing memory system
US4884271A (en) * 1987-12-28 1989-11-28 International Business Machines Corporation Error checking and correcting for read-modified-write operations

Also Published As

Publication number Publication date
TW413755B (en) 2000-12-01
AU1273999A (en) 1999-06-15
DE19882853T1 (de) 2001-06-21
US5987628A (en) 1999-11-16
WO1999027449A1 (en) 1999-06-03

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
DE69910320T2 (de) Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits
DE3909896C2 (de)
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE60210658T2 (de) Fehlerkorrigierende speicher und verfahren zu seiner nutzung
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE102006039473B4 (de) Datenspeichersystem und Verfahren zum Übertragen von Daten in einen Datenspeicher
DE69725687T2 (de) Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE102009061252B3 (de) Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE19515661C2 (de) Halbleiter-Plattenvorrichtung
DE2714805A1 (de) Datenverarbeitungssystem
DE102007046947B4 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem
DE60002908T2 (de) Vorrichtung und verfahren zur verbesserten fehlerortung und diagnose in rechnern
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE3911721C2 (de)
DE2912073A1 (de) Stapelspeicheranordnung zur kurzzeitigen speicherung von informationen bei nichtabsetzbarkeit dieser informationen in einem datenverarbeitungssystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G11C 29/00

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R020 Patent grant now final

Effective date: 20141121

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee