DE60210658T2 - Fehlerkorrigierende speicher und verfahren zu seiner nutzung - Google Patents

Fehlerkorrigierende speicher und verfahren zu seiner nutzung Download PDF

Info

Publication number
DE60210658T2
DE60210658T2 DE60210658T DE60210658T DE60210658T2 DE 60210658 T2 DE60210658 T2 DE 60210658T2 DE 60210658 T DE60210658 T DE 60210658T DE 60210658 T DE60210658 T DE 60210658T DE 60210658 T2 DE60210658 T2 DE 60210658T2
Authority
DE
Germany
Prior art keywords
write
value
ecc
data
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60210658T
Other languages
English (en)
Other versions
DE60210658D1 (de
Inventor
Wingyu Cupertino Leung
Fu-Chieh Saratonga HSU
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.)
Peraso Inc
Original Assignee
Monolithic System Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Monolithic System Technology Inc filed Critical Monolithic System Technology Inc
Application granted granted Critical
Publication of DE60210658D1 publication Critical patent/DE60210658D1/de
Publication of DE60210658T2 publication Critical patent/DE60210658T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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

Description

  • BEREICH DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Halbleiterspeichersysteme wie z.B. SRAM-(Static Random Access Memory)-Systeme oder DRAM-(Dynamic Random Access Memory)-Systeme. Spezieller, die vorliegende Erfindung betrifft ein Speichersystem mit einem Fehlererkennungs- und -korrektursystem.
  • ERÖRTERUNG DER VERWANDTEN TECHNIK
  • Halbleiterspeicher wie DRAM- und SRAM-Geräte sind für Soft- und Hardfehler anfällig. Softfehler entstehen dann, wenn subatomare energetische Partikel auf das Speichergerät treffen und eine Ladung erzeugen, die hoch genug ist, um den Zustand von einer oder mehreren Speicherzellen zu stören. Hardfehler werden durch Defekte in dem Halbleiterbauelement während des Herstellungsprozesses erzeugt. Der Einbau eines Fehlererkennungs- und -korrekturschaltkomplexes in Speichergeräte wurde in vielen Ansätzen des Standes der Technik beschrieben.
  • So beschreibt z.B. das US-Patent Nr. 5,638,385 mit dem Titel „Fast Check Bit Write For A Semiconductor Memory" von John A. Fifield et al. die Verwendung von Fehlerkorrekturcodes (ECC) wie Fehlerkorrektur-Prüfbits in einem Speicher mit zwei verschiedenen Speicherzellentypen. Zum Speichern von Datenbits werden kleinere und langsamere Speicherzellen benutzt, während zum Speichern von Fehlerkorrektur-Prüfbits größere und schnellere Speicherzellen verwendet werden. Die schnelleren Zellen bieten einen schnelleren Speicherzugriff auf die Fehlerkorrektur-Prüfbits, so dass die mit der Erzeugung der Fehlerkorrektur-Prüfbits assoziierte Verzögerung kompensiert und der Einfluss der ECC-Erzeugung auf die Speicherschreiblatenz insgesamt minimal gehalten wird. Dies geht jedoch auf Kosten einer größeren Fläche.
  • Das US-Patent Nr. 6,065,146 mit dem Titel „Error Correcting Memory" von Patrick Bosshart beschreibt einen Fehlerkorrekturspeicher, bei dem keine Einbußen im Hinblick auf die Speicherzugriffslatenz oder die Betriebsfrequenz entstehen. Dieser Fehlerkorrekturspeicher führt Fehlerkorrektur nur während einer Auffrischungsoperation des Speichers, während einer zweiten oder nachfolgenden Leseoperation einer Burst-Lesesequenz oder während einer Write-back-Operation aus. Infolgedessen erhöht der Fehlerkorrekturansatz die Leselatenz des Speichers nicht. Ebenso werden Fehlerkorrektur-Prüfbits nur bei Auffrischungsoperationen des Speichers erzeugt. Infolgedessen erhöht die Erzeugung von Fehlerkorrektur-Prüfbits die Schreiblatenz des Speichers nicht. Dieser Fehlerkorrekturansatz kann jedoch keine Datenfehler korrigieren, die in der ersten Leseoperation einer Burst-Lesesequenz auftreten, oder in Daten, die vor dem Erzeugen der Fehlerkorrektur-Prüfbits auf den Speicher geschrieben wurden.
  • Das US-Patent Nr. 5,003,542 mit dem Titel „Semiconductor Memory Device Having Error Correcting Circuit and Method for Correcting Error" von Koichiro Mashiko et al. beschreibt einen Speicher mit einem ECC-Schaltkomplex, der in den Leseverstärkerbereich des Speichers eingebaut ist. Spezieller, ein zweiter Satz von Leseverstärkern und ECC-Korrekturlogik ist mit den Bitleitungen der Speicherarray gekoppelt, um dadurch den Fehlerkorrekturprozess durch Eliminieren von Verzögerungen durch den Ein-/Ausgangs-(E/A)-Schaltkomplex zu beschleunigen. Dieser Ansatz erfordert jedoch den Einbau eines zweiten Satzes von Leseverstärkern und ECC-Korrekturlogik in jede Speicherarray. im Allgemeinen gibt es viele Speicherarrays in einem Speichergerät. Infolgedessen vergrößert diese Anordnung die Arrayfläche und somit die Siliciumfläche des Speichers. Außerdem verlängern, obwohl Verzögerungen durch die E/A-Schaltung wegfallen, die Verzögerungen durch die ECC-Korrekturschaltung weiterhin die Speicherzykluszeit. Für einen Hochfrequenzspeicher ist diese Verlängerung signifikant.
  • Die britische Patentanmeldung 2,289.779A beschreibt ein Verfahren und eine Vorrichtung für ein automatisches Scrubbing von ECC-Fehlern in einem Speicher nach der Erkennung eines korrigierbaren Fehlers in aus dem Speicher gelesenen Daten. Eine Datenschreiboperation wird jedoch wie folgt durchgeführt. Schreibdaten müssen zunächst von einem Systembus auf eine Busmaschine (BEC) einer Speichersteuerung (MC) übertragen werden. Die BEC beinhaltet eine In-Order-Queue für Systembusanforderungen und die Statusmaschinen, die zum Steuern des Busses und zum Koordinieren von Datentransfers nötig sind. Schreibdaten werden nachfolgend von der BEC zu Schreibdatenpuffern in einer Warteschlangenmanagementeinheit (QMUC) der Speichersteuerung übertragen. Die Schreibdaten werden dann von den Schreibdatenpuffern auf eine Datenpfadeinheit (DPU) übertragen, wobei die Schreibdaten durch einen Multiplexer (OUT MUX) zu einer ECC-Codewort-Erzeugungseinheit geleitet werden.. Der Multiplexer kann dann so gesteuert werden, dass er Daten entweder von den Schreibdatenpuffern oder einem Satz von Lesedatenpuffern leitet. Die ECC-Codewort-Erzeugungseinheit erzeugt 8 Paritätsbits, die an den Schreibdatenwert angehängt werden, um ein 72-Bit-Codewort zu bilden, das danach über Speicher-Ein-/Ausgabe-(MIO)-Puffer auf den Speicher geschrieben wird. Der beschriebene Speicherzyklus ist daher unerwünscht lang, mit großen Schreiblatenzen.
  • Es wäre daher wünschenswert, einen verbesserten Fehlererkennungs- und -korrekturansatz zu haben, der die oben beschriebenen Mängel des Standes der Technik abstellt.
  • ZUSAMMENFASSUNG
  • Demgemäß stellt die in den Ansprüchen definierte vorliegende Erfindung ein Speichergerät oder einen eingebetteten Speicherblock bereit, der eine Array von Speicherzellen mit eingebautem ECC-Schutz beinhaltet.
  • Speziell wird gemäß einem Aspekt der Erfindung ein Halbleiterspeichergerät bereitgestellt, dass Folgendes umfasst: eine Speicherarray, die so konfiguriert ist, dass sie Datenwerte und entsprechende Fehlerkorrekturcodewerte speichert; ein erstes Register, das so konfiguriert ist, dass es einen ersten Schreibdatenwert und einen entsprechenden ersten Schreibadresswert bei einem ersten Schreibzugriff auf die Speicherarray speichert; einen Fehlerkorrekturcode-(ECC)-Generator, der so konfiguriert ist, dass er den ersten Schreibdatenwert vom ersten Register empfängt und als Reaktion darauf einen ersten ECC-Wert beim ersten Schreibzugriff auf die Speicherarray erzeugt, wobei der ECC-Generator so konfiguriert ist, dass er den ersten ECC-Wert erzeugt, solange der erste Schreibdatenwert im ersten Register gespeichert ist; Mittel zum Ausgeben des ersten Schreibdatenwertes und des ersten ECC-Wertes bei einem Lesezugriff, wenn ein mit dem Lesezugriff assoziierter Leseadresswert mit dem in der ersten Speicherschaltung gespeicherten ersten Schreibadresswert übereinstimmt; und Mittel zum Schreiben des ersten Schreibdatenwertes und des ersten ECC-Wertes auf eine Stelle in der Speicherarray, die mit dem ersten Schreibadresswert assoziiert ist, bei einem zweiten Schreibzugriff.
  • Gemäß einem zweiten Aspekt der Erfindung wird ein Verfahren zum Betreiben eines Halbleiterspeichers bereitgestellt, das die folgenden Schritte umfasst: Speichern eines ersten Schreibdatenwertes und einer entsprechenden ersten Schreibadresse in einer ersten Stufe eines Schreibpuffers bei einem ersten Schreibzugriff; Erzeugen eines ersten Fehlerkorrekturcode-(ECC)-Wertes als Reaktion auf den in der ersten Stufe des Schreibpuffers gespeicherten ersten Schreibdatenwertes bei dem ersten Schreibzugriff und Erzeugen des ersten ECC-Wertes, solange der erste Schreibdatenwert im ersten Register gespeichert ist; Übertragen des ersten Schreibdatenwertes, des ersten ECC-Wertes und der ersten Schreibadresse auf eine Speicherarray bei einem zweiten Schreibzugriff; Schreiben des ersten Schreibdatenwertes und des ersten ECC-Wertes auf eine Stelle in der Speicherarray, die durch die erste Schreibadresse beim zweiten Schreibzugriff identifiziert wird; Speichern eines zweiten Schreibdatenwertes und einer entsprechenden zweiten Schreibadresse in der ersten Stufe des Schreibpuffers bei dem zweiten Schreibzugriff; und Erzeugen eines zweiten Fehlerkorrekturcode-(ECC)-Wertes als Reaktion auf den in der ersten Stufe des Schreibpuffers gespeicherten zweiten Schreibdatenwert beim zweiten Schreibzugriff und Erzeugen des zweiten ECC-Wertes, solange der zweite Schreibdatenwert im ersten Register gespeichert ist.
  • Die Speicherzellen sind DRAM-Zellen oder SRAM-Zellen. Die Fehlerkorrekturcode-Funktion ist so ausgelegt, dass die Fehlerkorrekturcode-Erzeugung die Schreibzugriffszeit des Speichergerätes nicht verlängert. Der Ansatz sieht auch ein Zurückschreiben (Write-back) von korrigierten Daten vor, ohne die Betriebsfrequenz des Speichergerätes zu verringern.
  • Zum Eliminieren des Effekts der ECC-Erzeugung auf die Schreibzugriffszeit wird ein Schreibpuffer verwendet, um ein gepostetes Schreibschema zu erleichtern. Bei einem ersten Schreibzugriff werden ein erster Schreibdatenwert und die entsprechende erste Schreibadresse an einer ersten Einsprungadresse des Schreibpuffers gespeichert. Zu diesem Zeitpunkt erzeugt eine Fehlerkorrekturschaltung einen ersten Fehlerkorrekturcode als Reaktion auf den ersten Schreibdatenwert. Bei einem zweiten Schreibzugriff werden der erste Schreibdatenwert und der erste Fehlerkorrekturcode auf eine zweite Einsprungadresse des Schreibpuffers übertragen und auf der Speicherarray abgelegt. Gleichzeitig werden ein zweiter Schreibdatenwert und eine entsprechende zweite Schreibadresse an der ersten Einsprungadresse des Schreibpuffers gespeichert. Nach dem Speichern des zweiten Schreibdatenwertes an der ersten Einsprungadresse des Schreibpuffers erzeugt die Fehlerkorrekturschaltung einen zweiten Fehlerkorrekturcode als Reaktion auf den zweiten Schreibdatenwert. Der zweite Schreibdatenwert, die zweite Schreibadresse und der zweite Fehlerkorrekturcode werden bis zur nächsten Schreiboperation im Schreibpuffer gespeichert. Da der Fehlerkorrekturcode parallel zum Ablegen eines vorherigen Schreibdatenwertes erzeugt wird und da die Fehlerkorrekturschaltung und der Schreibpuffer schneller arbeiten als die Speicherarray, geht die Fehlerkorrekturcode-Erzeugung nicht auf Kosten von Speicherzykluszeit oder Schreibzugriffszeit.
  • Fehlererkennung und -korrektur erfolgen auch an vom Speichergerät gelesenen Datenwerten. Bei einem Lesezugriff werden ein Lesedatenwert und das entsprechende ECC-Wort von der Speicherarray gelesen und zu einer Fehlererkennungs-/-korrekturschaltung gesendet. Die Fehlererkennungs-/-korrekturschaltung erzeugt einen korrigierten Lesedatenwert, der an den Ausgang des Speichergerätes angelegt wird. Die Fehlererkennungs-/-korrekturschaltung erzeugt auch ein korrigiertes ECC-Wort und ein Fehleranzeigesignal, das anzeigt, ob der Lesedatenwert oder das entsprechende ECC-Wort einen Fehler beinhaltet. In einer Ausgestaltung zeigt das Fehleranzeigesignal an, ob der Lesedatenwert oder das entsprechende ECC-Wort ein einzelnes Fehlerbit enthielt. Wenn das Fehleranzeigesignal aktiviert ist, werden der korrigierte Lesedatenwert und das korrigierte ECC-Wort zur gleichen Zeit in den Write-back-Puffer geschrieben, zu der der korrigierte Lesedatenwert an den Ausgang des Speichergerätes angelegt wird. Der/das korrigierte Lesedatenwert und ECC-Wort im Write-back-Puffer werden während eines Ruhezyklus der Speicherarray, in dem kein externer Zugriff erfolgt, auf dieser abgelegt. Durch Ablegen des korrigierten Lesedatenwertes und ECC-Wortes während eines Ruhezyklus hat das Write-back-Schema keinen negativen Einfluss auf die Speicherzykluszeit.
  • Die Zahl der Einsprungadressen im Write-back-Puffer ist begrenzt. Daher können die Einsprungadressen des Write-back-Puffer in einer Periode mit vielen aufeinander folgenden Lesezugriffen mit korrigierbaren Fehlern erschöpft werden. In diesem Fall kann eine Zuordnungs-Policy ausgeführt werden, um entweder die früheste Einsprungadresse im Write-back-Puffer (FIFO-Policy) fallen zu lassen oder das Akzeptieren von Einsprungadressen im Write-back-Puffer (LIFO-Policy) zu stoppen. Die Wahrscheinlichkeit, die Zuordnungs-Policy aufrufen zu müssen, ist gering, weil die Zahl der Fehler enthaltenden Wörter in dem Speicher zu einem gegebenen Zeitpunkt klein ist. Die Wahrscheinlichkeit, dass alle diese Fehlerwörter ohne eine ausreichende Zahl von Ruhezyklen dazwischen gelesen werden, ist noch geringer. Außerdem hält die Zuordnungs-Policy das Speichergerät nicht davon ab, korrekt zu arbeiten, weil auf einen) Lesedatenwert/ECC-Wort, der/das einen Fehler enthält, aber nicht im Write-back-Puffer gepostet werden kann, trotzdem von der Speicherarray zugegriffen werden kann, korrigiert mit der Fehlererkennungs-/-korrekturschaltung. Dann kann er/es an den Speicherausgang angelegt werden, solange der/das Datenwert/ECC-Wort nicht mehr Fehlerbits akkumuliert, als die Fehlerkorrekturschaltung korrigieren kann. Die Write-back-Pufferung koppelt die Speicherarray-Operation von der Fehlerkorrekturoperation ab, weil die Speicherarray nicht auf die korrigierten Daten zu warten braucht, bevor der Zugriffszyklus vollendet wird. Daher wird die Speicherzykluszeit nicht durch die Write-back-Operation beeinträchtigt. Die Leselatenz nimmt jedoch zu, weil die Daten durch die Fehlererkennungs-/-korrekturschaltung propagieren müssen, bevor sie an den Ausgang des Speichers angelegt werden.
  • Die vorliegende Erfindung wird angesichts der nachfolgenden Beschreibung und der Zeichnungen besser verständlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Speichergerätes gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm eines Schreibpuffer-Fehlerkorrekturcode-(ECC)-Generators gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 3 ist ein Schaltschema eines Write-back Puffers gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 4 ist ein Wellenformschema, das den Zeitablauf eines Schreibzugriffs illustriert, gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 5 ist ein Wellenformschema, das den Zeitablauf einer Lesetransaktion, gefolgt von einer Write-back-Operation illustriert, gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 6 ist ein Wellenformschema, das den Zeitablauf von zwei aufeinander folgenden Lesezugriffszyklen, gefolgt von zwei aufeinander folgenden Write-back-Zyklen illustriert, gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Blockdiagramm eines Speichergerätes 100 gemäß einer Ausgestaltung der vorliegenden Erfindung. Das Speichergerät 100 beinhaltet die Speicherarray 101, den Speicherarray-Sequencer 102, das Adressregister 103, den Multiplexer 104, den Schreibpuffer/ECC-Generator 105, die Fehlererkennungs-/- korrekturschaltung 106, den Write-back-Puffer 107, den Ausgangstreiber 108 und das NOR-Gate 109. Die externe Schnittstelle des Speichergerätes 100 beinhaltet einen 64-Bit-Eingangsdatenbus Di[63:0], einen 64-Bit-Ausgangsdatenbus Do[63:0], eine Lese-Enable-Leitung REN, eine Schreib-Enable-Leitung WEN, eine Taktleitung CLK und einen 15-Bit-Adressbus A[14:0]. In den beschriebenen Ausgestaltungen sind jeder) Bus/Leitung und das entsprechende Signal mit demselben Bezugselement bezeichnet. So wird z.B. Di[63:0] zum Bezeichnen des Eingangsdatenbusses und des auf dem Eingangsdatenbus gesendeten Eingangsdatenwertes benutzt.
  • In dem beschriebenen Beispiel ist die Speicherarray 101 eine herkömmliche 32 kB × 72 Bit Speicherarray, aber dies ist nicht unbedingt notwendig. In der beschriebenen Ausgestaltung beinhaltet die Speicherarray 101 eine Mehrzahl von Subarrays. Jede Subarray beinhaltet Wortleitungstreiber zum Aktivieren einer gewählten Wortleitung sowie Leseverstärker zum Verstärken von Signalen von den gewählten Speicherzellen. Die Speicherarray 101 enthält auch Adressdecoder zum Zugreifen auf die Speicherzellen, die von der vom Multiplexer 104 gelieferten Speicheradresse MA[14:0] gewählt wurden. Die Speicherarray 101 beinhaltet einen Schaltkomplex, der der durchschnittlichen Fachperson im Bereich Speicherdesign hinlänglich bekannt ist.
  • Die Speicherarray 101 verwendet in der beschriebenen Ausgestaltung DRAM-Zellen, obwohl in einer anderen Ausgestaltung auch SRAM-Zellen verwendet werden können. Die Auffrischung der DRAM-Zellen wird von einem Schaltkomplex außerhalb des Speichergerätes 100 durch periodische Lesezugriffe auf alle Wortleitungen der Speicherarray 101 gesteuert. Es lässt sich auch leicht zusätzliche Logik integrieren, um den Auffrischungsansatz zu adaptieren, der in dem in Gemeinschaftsbesitz befindlichen US-Patent Nr. 6,028,804 „Method and Apparatus For 1-T SRAM Compatible Memory" beschrieben ist. Der Betrieb der Speicherarray 101 wird vom Speicherarray-Sequencer 102 gesteuert, der ein Reihenzugriffsauswahlsignal RAS#, ein Leseverstärker-Enable-Signal SEN#, ein Spaltenadressauswahlsignal CAS# und ein Vorladungssignal PRC# erzeugt. Die Funktionen dieser Steuersignale und der Betrieb des Speicherarray-Sequencers 102 sind ausführlicher in dem in Gemeinschaftsbesitz befindlichen US-Patent Nr. 6,147,535 mit dem Titel „Clock Phase Generator For Controlling Operation of a DRAM Array" beschrieben. In der beschriebenen Ausgestaltung drückt der Speicherarray-Sequencer 102 der Reihe nach die Signale RAS#, SEN#, CAS# und PRC# auf eine vorbestimmte Weise auf, damit ein Speicherzugriff während eines einzelnen Taktzyklus vollendet werden kann.
  • Der Adressmultiplexer 104 leitet eine Eingangsadresse MA[14:0] von einer von drei unterschiedlichen Quellen zur Speicherarray 101. Eine Quelle ist ein gerastetes Adresssignal LA[14:0], das am Ausgang des Adressregisters 103 anliegt. Eine andere Quelle ist die Schreibpuffer-Tag-Adresse WBTag[14:0], die vom Adressfeld des Schreibpuffers/ECC-Generators 105 erzeugt wird. Die dritte Quelle ist die Write-back-Puffer-Tag-Adresse WBBTag[14:0], die vom Adressfeld des Write-back-Puffers 107 erzeugt wird. Der Adressmultiplexer 104 wird vom Lese-Enable-Signal REN und vom Schreib-Enable-Signal WEN gesteuert. Wie nachfolgend ausführlicher beschrieben wird, lässt der Multiplexer 104 das gerastete Adresssignal LA[14:0] bei einer Leseoperation durch, wenn das Lese-Enable-Signal REN aufgedrückt und das Schreib-Enable-Signal WEN weggenommen wird. Der Multiplexer 104 lässt die Schreibpuffer-Tag-Adresse WBTag[14:0] bei einer Schreiboperation durch, wenn das Schreib-Enable-Signal WEN aufgedrückt und das Lese-Enable-Signal REN weggenommen wird. Schließlich lässt der Multiplexer 104 die Write-back-Puffer-Tag-Adresse WBBTag[14:0] bei einer Write-back-Operation durch, wenn sowohl das Schreib-Enable-Signal WEN als auch das Lese-Enable-Signal REN weggenommen werden.
  • Die Dateneingabe in die Speicherarray 101 und die Datenausgabe von der Speicherarray 101 werden als ein 72-Bit-Speicherdatenwort MD[71:0] auf einem 72-Bit-Datenbus gesendet. Das 72-Bit-Speicherdatenwort MD[71:0] enthält zwei Felder: ein 64-Bit-Datenfeld und ein 8-Bit-Fehlerkorrekturcode-(ECC)-Feld. Am Anfang eines Speicherzyklus (wie die abfallende Flanke des Signals RAS# andeutet) wird das 72-Bit-Speicherdatenwort MD[71:0] in ein Datenregister (nicht dargestellt) in der Speicherarray 101 gerastet.
  • 2 ist ein Blockdiagramm des Schreibpuffers/ECC-Generators 105 gemäß einer Ausgestaltung der vorliegenden Erfindung. In der beschriebenen Ausgestaltung beinhaltet der Schreibpuffer/ECC-Generator 105 das Eingangsregister 200, das Ausgangsregister 201, den Fehlerkorrekturcode-(ECC)-Generator 202, die AND-Gates 203-204, den Komparator 205, die OR-Gates 206-207, den D-Flipflop 208 und die Tristate-Ausgangspuffer 210-211. Der Schreibpuffer/ECC-Generator 105 enthält die Register 200 und 201. Die Register 200-201 sind in einer FIFO-(First In First Out)-Konfiguration angeordnet. Das Eingangsregister 200 enthält 79 Bit zum Speichern eines Adresseintrags (15 Bit) und eines Dateneintrags (64 Bit). Das Ausgangsregister 201 enthält 87 Bit zum Speichern eines Adresseintrags (15 Bit), eines Dateneintrags (64 Bit) und des vom ECC-Generator 202 erzeugten assoziierten Fehlerkorrekturcodes (8 Bit).
  • Der Schreibpuffer/ECC-Generator 105 funktioniert wie folgt. Zu Beginn eines ersten Speicherschreibzugriffs werden ein erster Schreibdatenwert Di1[63:0] und eine entsprechende erste Schreibadresse Ai1[14:0] an das Eingangsregister 200 angelegt und das Schreib-Enalbe-Signal WEN wird im H-Zustand aufgedrückt. Das Taktsignal CLK geht dann in einen logisch hohen Zustand über und veranlasst dadurch das AND-Gate 203, ein logisch hohes Signal zum Enablen des Eingangsregisters 200 anzulegen. Als Reaktion darauf rastet das Eingangsregister 200 den ersten Schreibdatenwert Di1[63:0] und die entsprechende erste Schreibadresse Ai1[14:0]. Der erste Schreibdatenwert Di1[63:0] wird an den ECC-Generator 202 angelegt. Als Reaktion darauf erzeugt der ECC-Generator 202 ein erstes Fehlerkorrektur-Prüfbit-Signal CBi1[7:0].
  • Zu Beginn eines zweiten (folgenden) Speicherschreibzugriffs werden ein zweiter Schreibdatenwert Di2[63:0] und eine entsprechende zweite Schreibadresse Ai2[14:0] an das Eingangsregister 200 angelegt, und das Schreib-Enable-Signal WEN wird mit einem hohen Logikwert aufgedrückt. Das Taktsignal CLK geht danach auf einen hohen Logikwert über, so dass das AND-Gate 203 veranlasst wird, ein logisch hohes Signal an das Enable-Register 200 anzulegen, und das OR-Gate 206 veranlasst wird, ein logisch hohes Signal an das Enable-Register 201 anzulegen. Als Reaktion darauf werden der erste Schreibdatenwert Di1[63:0], die erste Schreibadresse Ai1[14:0] und das erste Prüfbit CBi1[7:0] in das Ausgangsregister 201 gerastet. Außerdem werden der zweite Schreibdatenwert Di2[63:0] und die zweite Schreibadresse Ai2[14:0] in das Eingangsregister 200 gerastet.
  • Das logisch hohe Schreib-Enable-Signal WEN veranlasst auch das OR-Gate 207, ein logisch hohes Signal im Flipflop 208 zu rasten. Dieses logisch hohe Signal wird als Reaktion auf die ansteigende Flanke des CLK-Signals im Flipflop 208 gerastet.
  • Infolgedessen legt der Flipflop 208 ein logisch hohes Signal an die Enable-Anschlüsse der Tristate-Ausgangspuffer 210 und 211 an und enabled dadurch diese Puffer. Als Reaktion darauf setzen die Ausgangspuffer 210 und 211 den ersten Schreibdatenwert Di1[63:0] und das erste Prüfbit CBi1[7:0] vom Ausgangsregister 201 auf den Speicherdatenbus MD[7l:0]. Der erste Schreibadresswert Ai1[14:0] wird vom Ausgangsregister 201 als Schreibpuffer-Tag-Adresse WBTag[14:0] geleitet. Die Schreibpuffer-Tag-Adresse WBTag[14:0] wird als Reaktion auf das logisch hohe WEN-Signal und das logisch tiefe REN-Signal durch den Multiplexer 104 zur Speicherarray 101 geleitet (1). Der erste Schreibdatenwert Di1[63:0] und das erste Prüfhit CBi1[7:0] (d.h. das Speicherdatenwort MD[71:0]) werden auf die Speicherarray 101 an die Stelle geschrieben, die durch die Schreibpuffer-Tag-Adresse WBTag[14:0] identifiziert wird.
  • In der obigen Weise arbeitet der Schreibpuffer/ECC-Generator 105 als geposteter Schreibpuffer. Das heißt, bei einem Schreibzugriffszyklus werden Daten- und Adresswerte, die zuvor zum Schreibpuffer/ECC-Generator 105 gepostet wurden, zum Durchführen eines Schreibzugriffs auf die Speicherarray 101 verwendet. Neue Daten- und Adresswerte werden zum Register 200 gepostet und entsprechende Prüfbits werden während desselben Schreibzugriffszyklus erzeugt. Die Register 200-201 und der ECC-Generator 202 sind erheblich schneller als die Speicherarray 101. Infolgedessen verzögern die im Schreibpuffer/ECC-Generator 105 durchgeführten Operationen Schreibzugriffe auf die Speicherarray 101 nicht.
  • Man beachte, dass die Datenkohärenz gewahrt bleiben muss, wenn ein Lesezugriff auf den Inhalt des Schreibpuffers/ECC-Generators 105 trifft. Zum Wahren der Datenkohärenz wird der Komparator 205 so geschaltet, dass er sowohl die aktuelle Zugriffsadresse A[14:0] als auch die zuvor zum Eingangsregister 200 gepostete Schreibadresse empfängt. Der Komparator 205 drückt ein logisch hohes MATCH-Ausgangssignal auf, wenn die aktuelle Zugriffsadresse mit der im Eingangsregister 200 gespeicherten Schreibadresse übereinstimmt. Das MATCH-Signal und das Lese-Enable-Signal REN werden beide an das AND-Gate 204 angelegt. Wenn der Komparator 205 eine Übereinstimmung erfasst und der aktuelle Zugriff ein Lesezugriff ist (REN = „1"), dann drückt das AND-Gate 204 ein logisch hohes Schreibpuffer-Hit-Signal WBHit auf und zeigt dadurch an, dass der aktuelle Lesezugriff auf den Inhalt des Schreibpuffers/ECC-Generators 105 getroffen ist.
  • Das WBHit-Signal wird an einen Eingangsanschluss des Speicherzugriff-Sequencers 102 angelegt. Wenn das WBHit-Signal mit einem logisch hohen Wert aufgedrückt wird, dann wird verhindert, dass der Speicherzugriff-Sequencer 102 die Zugriffssteuersignale RAS#, SEN#, CAS# und PRC# erzeugt, so dass ein Zugriff auf die Speicherarray 101 unterbunden wird. Stattdessen werden die Lesedaten vom Schreibpuffer/ECC-Generator 105 in der nachfolgend beschriebenen Weise angelegt.
  • Innerhalb des Schreibpuffers/ECC-Generators 105 wird das WBHit-Signal an Eingangsanschlüsse von OR-Gates 206 und 207 angelegt. Wenn also das WBHit-Signal im H-Zustand aufgedrückt wird, dann legt das OR-Gate 206 ein logisch hohes Signal an den Takteingangsanschluss von Register 201 an. Demzufolge werden zu diesem Zeitpunkt die Schreibdaten, die Schreibadresse und die assoziierten Prüfbits, die im Eingangsregister 200 gespeichert sind, in das Ausgangsregister 201 gerastet. Das OR-Gate 207 legt ein logisch hohes Signal an den Flipflop 208 an. Dieses logisch hohe Signal wird als Reaktion auf die ansteigende Flanke des CLK-Signals in den Flipflop 208 gerastet. Die Tristate-Ausgangspuffer 210 und 211 werden als Reaktion auf das in den Flipflop 208 gerastete logisch hohe Signal enabled. Infolgedessen werden der Datenwert und der im Ausgangsregister 201 gespeicherte entsprechende ECC-Wert auf den Datenbus MD[71:0] gesetzt. Die Daten und ECC-Werte auf dem Datenbus MD[71:0] werden zur Fehlererkennungs-/-korrektureinheit 106 geleitet. Als Reaktion darauf erzeugt die Fehlererkennungs-/-korrektureinheit 106 einen korrigierten Datenwert, der durch den Ausgangstreiber 108 zum Datenausgangsbus Do[63:0] geleitet wird, um dadurch den Lesezugriff zu vollenden.
  • In dem vorliegenden Beispiel wird zwar das Ausgangsregister 201 verwendet, aber dieses Element des Schreibpuffers 105 ist nicht in allen Ausgestaltungen nötig. So kann die im Eingangsregister 200 gespeicherte Adresse direkt als die Schreibpuffer-Tag-Adresse WBTag[14:0] angelegt werden, der im Eingangsregister 200 gespeicherte Datenwert kann direkt an den Ausgangstreiber 210 angelegt werden, und die entsprechenden Prüfbits CB[7:0] können direkt an den Ausgangstreiber 211 angelegt werden. Während einer nachfolgenden Schreiboperation werden die im Register 200 gespeicherten Daten und Adresswerte und die vom ECC-Generator 202 kommenden Prüfbits direkt in Register in der Speicherarray 101 gerastet, so dass sich das Ausgangsregister 201 erübrigt.
  • Fehlererkennung/-korrektur
  • Es wird jetzt die Fehlererkennungs-/-korrekturschaltung 106 beschrieben. Es können in der vorliegenden Erfindung viele verschiedene Fehlererkennungs-/-korrekturcodes verwendet werden. So kann zum Beispiel in einer Ausgestaltung der Hammingcode mit ungerader Gewichtung (odd-weight) verwendet werden, der im US-Patent Nr. 5,638,385 mit dem Titel „Fast Check Bit Write For a Semiconductor Memory" von John A. Fifield et al und in „Cost Analysis of On Chip Error Control Ciding for Fault Tolerant Dynamice RAMs" von N. Jarwala et al, Proceedings of the Seventeenth International Symposium on Fault-Tolerant Computing, Pittsburgh, Pa., 6.-8. Juli 1987, S. 278-283, beschrieben wird. In der beschriebenen Ausgestaltung wird der Hammingcode mit ungerader Gewichtung verwendet, der in „16-bit CMOS Error Detection and Correction Unit", Integrated Device Technology, Inc. Data Book, April 1990, Section 5.10, S. 1-19, beschrieben ist. Der modifizierte 72-Bit-Hammingcode bietet Einzelbit-Fehlerkorrektur und Doppelbit-Fehlerkorrektur. Der 72-Bit-Code beinhaltet 64 Datenbits und 8 Prüfbits.
  • Die Implementation von Fehlererkennung/-korrektur unter Verwendung von Hammingcode mit ungerader Gewichtung wurde in der Literatur beschrieben, z.B. im US-Patent Nr. 5,638,385 mit dem Titel „Fast Check Bit Write For A Semiconductor Memory" von John A. Fifield et als, und in „A Class Of Optimal Minimum Odd-Weight-Column SEC-DED Codes" von M.Y. Hsiao, IBM Journal of Research and Dev., Bd. 14, Juli 1970, S. 395-401. In einer bevorzugten Ausgestaltung arbeitet die Fehlererkennungs-/-korrektureinheit 106 hauptsächlich mit Kombinationslogik. Für die Syndromerzeugung können 3 Level von 4-Eingangs- und 3-Eingangs-XOR-Gates verwendet werden. Für die Syndromdecodierung können 5-Eingangs-AND-Gates verwendet werden. Diese Art der Implementation mit Kombinationslogik ist im Bereich Logikdesign gut bekannt und wird daher nicht näher beschrieben.
  • Die Fehlererkennungs-/-korrektureinheit 106 beinhaltet den Prüfbitgenerator 111, den Syndromgenerator und -decoder 112 und die Fehlerkorrektureinheit 113. Bei einem Lesezugriff wird der Hammingcode mit ungerader Gewichtung aus der Speicherarray 101 gelesen und auf den Speicherdatenbus MD[71:0] gesetzt. In der Fehlererkennungs-/-korrektureinheit wird der Speicherbus in zwei Felder unterteilt: das Lesedatenwort-Feld RD[63:0] und das Leseprüfbit-Feld RCB[7:0]. Das Lesedatenwort RD[63:0] wird in den Prüfbitgenerator 111 eingegeben. Der Prüfbitgenerator 111 erzeugt, ähnlich wie der ECC-Generator 202 (2), einen 8-Bit-ECC-Prüfbitwert als Reaktion auf das Lesedatenwort RD[63:0]. Dieser ECC-Prüfbitwert wird an den Syndromgenerator und -decoder 112 angelegt. Der Syndromgenerator und -decoder 112 vergleicht bitweise (XORs) die Leseprüfbits RCB[7:0] mit dem ECC-Prüfbitwert vom Prüfbitgenerator 111. Das resultierende 8-Bit-Syndromwort wird decodiert, um zu ermitteln, ob der aus der Speicherarray gelesene 72-Bit-Code fehlerfrei ist, einen Einzelbitfehler oder Mehrbitfehler enthält. Im Falle eines Einzelbitfehlers erzeugt der Syndromgenerator und -decoder 112 ein 8-Bit-Signal, das den Ort des Fehlerbits anhand des Syndroms identifiziert, und aktiviert ein Einzelfehlerkennsignal (1-ERR) in einen logisch hohen Zustand. Das den Ort des Fehlerbits identifizierende 8-Bit-Syndromsignal wird zur Fehlerkorrektureinheit 113 gesendet. Als Reaktion darauf korrigiert die Fehlerkorrektureinheit 113 das Fehlerbit, das im Lesedatenwort RD[63:0] oder im ECC-Prüfbitwert RCB[7:0] vorliegt. Wenn kein Fehler erkannt wird, dann werden das Lesedatenwort RD[63:0] und der ECC-Prüfbitwert RCB[7:0] nicht modifiziert. Im Falle eines Mehrbitfehlers wird weder das Lesedatenwort RD[63:0] noch der ECC-Prüfbitwert RCB[7:0] modifiziert.
  • Der von der Fehlerkorrektureinheit 113 erzeugte Lesedatenwert wird als korrigierter Datenwert CD[63:0] etikettiert (obwohl zu verstehen ist, dass die Fehlerkorrektureinheit 113 möglicherweise keine Korrekturen am Lesedatenwert vornimmt). Ebenso wird der von der Fehlerkorrektureinheit erzeugte ECC-Prüfbitwert als korrigierter ECC-Prüfbitwert CCB[7:0] designiert. Der korrigierte Datenwert CD[63:0] wird durch den Ausgangstreiber 108 auf den Ausgangsdatenbus Do[63:0] gesetzt. Sowohl der korrigierte Datenwert CD[63:0] als auch der korrigierte ECC-Prüfbitwert CCB[7:0] werden auch auf den Write-back-Puffer 107 gesetzt. Wenn das Einzelfehler-Anzeigesignal 1-ERR im H-Zustand aufgedrückt wird, dann werden der korrigierte Datenwert CD[63:0], der korrigierte ECC-Prüfbitwert CCB[7:0] und die entsprechende mit dem Lesezugriff assoziierte gerastete Adresse LA[14:0] alle auf den Write-back-Puffer 107 geschrieben. Wie nachfolgend ausführlicher beschrieben wird, werden der korrigierte Datenwert CD[63:0] und der korrigierte ECC-Prüfbitwert CCB[7:0] in eine Warteschlange im Write-back-Puffer 107 gesetzt, in Erwartung einer Write-back-Operation auf die Speicherarray 101.
  • Write-back-Puffer
  • 3 ist ein Schaltschema, das den Write-back-Puffer 107 gemäß einer Ausgestaltung der vorliegenden Erfindung illustriert. In dieser Ausgestaltung beinhaltet der Write-back-Puffer 107 Register 300-301, D-Flipflops 310-311, Toggle-Flipflops 312-313, AND-Gates 321-326, NAND-Gate 327, OR-Gates 330-332, NOR-Gate 333, Ausgangsmultiplexer 341-343 und Tristate-Ausgangstreiber 351-352. Die Register 300-301 bieten Speicherkapazität für 2 Einträge, wobei jeder Eintrag ein Adressfeld (ADDR), ein Datenfeld (DATA), ein Korrekturprüfbitfeld (CCB) und ein Gültig-Bit-Feld (VALID) beinhaltet. Das Gültigbit-Feld zeigt an, wenn es auf logisch '1' gesetzt ist, dass der Inhalt des entsprechenden Registers gültig ist und zurück auf die Speicherarray 101 geschrieben werden soll. Die Register 300 und 301 sind in der beschriebenen Ausgestaltung in einer FIFO-Konfiguration angeordnet.
  • Die Adressfelder der Register 300 und 301 sind so geschaltet, dass sie das gerastete Adresssignal LA[14:0] empfangen, die Datenfelder der Register 300 und 301 sind so geschaltet, dass sie den korrigierten Datenwert CD[63:0] empfangen, und die Korrekturprüfbitfelder der Register 300 und 301 sind so geschaltet, dass sie die korrigierten Prüfbits CCB[7:0] empfangen. Die Adress-, Daten-, Korrekturbit- und Gültig-Felder von Register 300 sind jeweils mit LA0, CD0, CCB0 bzw. VA0 beschriftet. Die Adress-, Daten-, Korrekturprüfbit- und Gültig-Felder von Register 301 sind jeweils mit LA1, CD1, CCB1 bzw. VA1 beschriftet. Die in den Registern 300 und 301 gespeicherten korrigierten Prüfbitwerte CCB0 und CCB1 werden zum Multiplexer 341 gesendet. Die in den Registern 300 und 301 gespeicherten korrigierten Datenwerte CD0 und CD0 werden zum Multiplexer 342 gesendet. Die in den Registern 300 und 301 gespeicherten gerasteten Adresswerte LA0 und LA1 werden zum Multiplexer 343 gesendet.
  • Die Multiplexer 341-343 werden vom Q-Ausgang des Toggle-Flipflop 313 gesteuert, der als Lesezeigerwert RP dient. Wenn der vom Flipflop 313 erzeugte Lesezeigerwert RP einen Logikwert von „0" hat, dann leiten die Multiplexer 341, 342 und 343 jeweils die Werte CCB0, CD0 bzw. LA0. Umgekehrt, wenn der Lesezeigerwert RP einen Logikwert von „1" hat, dann leiten die Multiplexer 341, 342 und 343 jeweils die Werte CCB1, CD1 bzw. LA1.
  • Die Ausgänge der Multiplexer 341 und 342 werden jeweils zu Tristate-Ausgangstreibern 351 und 352 geleitet. Die Tristate-Treiber 351 und 352 werden durch das am Q-Ausgangsanschluss des Flipflop 311 anliegende Ausgangs-Enable-Signal OE gesteuert. Wenn aktiviert (enabled), legen die Tristate-Puffer 351 und 352 die Signale von den Multiplexern 341 und 342 jeweils als Speicherdatenausgangssignale MD[7l:64] und MD[63:0] an. Der Ausgang des Multiplexers 343 wird direkt als Write-back-Puffer-Tag-Adresse WBBTag[14:0] bereitgestellt.
  • Der Write-back-Puffer 107 funktioniert im Allgemeinen wie folgt. Wenn die Fehlererkennungs-/-korrektureinheit 106 bei einer Leseoperation einen Einzelfehler erkennt, dann werden der korrigierte Datenwert, der korrigierte Prüfbitwert und der assoziierte Adresswert auf eines der Register 300-301 im Write-back-Puffer 107 geschrieben. Während eines nachfolgenden Ruhezyklus werden der korrigierte Datenwert und der korrigierte Prüfbitwert zurück auf die Speicherarray 101 auf die durch den assoziierten Adresswert vorgegebene Stelle geschrieben.
  • Der Betrieb des Write-back-Puffers 107 wird jetzt ausführlicher beschrieben. Zum Initialisieren des Write-back-Puffers 107 wird das RESET-Signal zunächst im H-Zustand aufgedrückt. Als Reaktion darauf legen die OR-Gates 330 und 331 jeweils logisch hohe Reset-Werte R0 und R1 an die Register 300 und 301 an. Diese logisch hohen Reset-Werte R0 und R1 setzen die VALID-Bit-Felder der Register 300 und 301 asynchron auf logische „0"-Werte (d.h. VA0 = VA1 = „0"). Die VALID-Bits VA0 und VA1 auf logisch „0" bewirken, dass das OR-Gate 332 ein Ausgangssignal von logisch „0" an das AND-Gate 326 anlegen, so dass der Write-back-Puffer das Signal WBBRet mit logisch „0" ablegen muss. Das WBBRet-Signal auf logisch „0" wird in den Flipflop 311 gerastet, so dass das Ausgang-Enable-Signal OE zunächst einen logischen „0"-Wert hat, wodurch die Tristate-Ausgangstreiber 351-352 gesperrt werden. Wenn das WBBRet-Signal einen Logikwert von „0" hat, dann werden keine korrigieren Datenwerte zurück auf die Speicherarray 101 geschrieben. Das WBBRet-Signal von logisch „0" wird auch an die AND-Gates 324 und 325 angelegt. Infolgedessen bewirkt das WBBRet-Signal, dass die von den OR-Gates 330 und 331 erzeugten Reset-Werte R0 und R1 zunächst auf logisch „0" bleiben, nachdem das RESET-Signal auf logisch „0" übergegangen ist.
  • Das logisch hohe RESET-Signal setzt auch den Lesezeigerwert RP vom Toggle-Flipflop 313 auf logisch „1", so dass die Multiplexer 341-343 zunächst so eingestellt werden, dass sie jeweils die Werte CCB1, CD1 bzw. LA1 vom Register 301 durchlassen.
  • Das logisch hohe RESET-Signal setzt auch den Q-Ausgang des Toggle-Flipflop 312 auf logisch „0". Der Q-Ausgang des Toggle-Flipflop 312 dient als Schreibzeigerwert WP. Wenn der Schreibzeigerwert WP tief ist, dann hat das Register 300 die Aufgabe, den korrigierten Prüfbitwert CCB[7:0], den korrigierten Datenwert CD[63:0] und den gerasteten Adresswert LA[14:0] zu empfangen. Umgekehrt, wenn der Schreibzeigerwert WP hoch ist, dann hat das Register 301 die Aufgabe, diese Werte CCB[7:0], CD[63:0] und LA[14:0] zu empfangen. Spezieller, wenn der Schreibzeigerwert WP tief ist, dann wird das AND-Gate 322 enabled, das Schreibpuffer-Enable-Signal WBEN zum Enable-Eingangsanschluss des Registers 300 als das Ladesignal LD0 durchzulassen. Wenn der Schreibpufferwert WP hoch ist, dann wird das AND-Gate 323 enabled, das Schreibpuffer-Enable-Signal WBEN zum Enable-Eingangsanschluss des Registers 301 als das Ladesignal LD1 durchzulassen.
  • Das Schreibpuffer-Enable-Signal WBEN wird vom AND-Gate 321 bereitgestellt. Das AND-Gate 321 ist so geschaltet, dass es das 1-ERR Signal von der Fehlererkennungs-/-korrekturschaltung 106 empfängt. Das AND-Gate 321 ist auch so geschaltet, dass es ein gerastetes Lesen-Enable-Signal LREN empfängt, das am Q-Ausgang des Flipflop 310 anliegt. (Das Lesen-Enable-Signal REN wird als Reaktion auf das CLK-Signal in den Flipflop 310 gerastet, um das gerastete Lesen-Enable-Signal LREN bereitzustellen). Das AND-Gate 321 ist auch so geschaltet, dass es den Ausgang des NAND-Gate 327 empfängt, dessen Eingangsanschlüsse so geschaltet sind, dass sie Gültigbits VA0 und VA1 empfangen. Somit wird das Schreibpuffer-Enable-Signal WBEN hoch aufgedrückt, wenn ein Einzelfehler in einem Lesedatenwert (1-ERR = „0") bei einer Leseoperation (LREN = „1") erkannt wird und sich in einem der Register 300 und 301 eine verfügbare Einsprungadresse befindet (VA0 und VA1 nicht gleich „11").
  • Beim ersten Erkennen eines Einzelfehlers bei einer Leseoperation wird das Schreibpuffer-Enable-Signal WBEN hoch aufgedrückt. Als Reaktion auf das hohe WBEN-Signal und den tiefen Schreibzeigerwert WP drückt das AND-Gate 322 ein logisch hohes Ladesignal LD0 auf, das das Register 300 enablet. Als Reaktion darauf werden die Werte CCB[7:0], CD[63:0] und LA[14:0] bei der Leseoperation in das Register 300 gerastet. Außerdem wird das logisch hohe LD0-Signal in das VALID-Feld des Registers 300 gerastet, um dadurch das Gültigbit VA0 in einen logisch hohen Zustand zu setzen.
  • Das logisch hohe Gültigbit VA0 bewirkt, dass das OR-Gate 332 ein logisch hohes Signal an das AND-Gate 326 anlegt. Während eines nachfolgenden Ruhezyklus empfängt, wenn keine Lese- oder Schreibzugriffe anhängig sind (d.h. REN = WEN = „0"), das AND-Gate 326 ein logisch hohes Signal vom NOR-Gate 333. Unter diesen Bedingungen wird das Write-back-Puffer-Ablegesignal WBBRet hoch aufgedrückt, wodurch angezeigt wird, dass der Inhalt des Registers 300 in der Speicherarray 101 abgelegt werden kann, ohne eine Lese- oder Schreiboperation zu stören. An der nächsten ansteigenden Flanke des CLK-Signals schaltet das logisch hohe WBBRet-Signal den vom Flipflop 313 erzeugten Lesezeigerwert RP auf logisch „0" um und bewirkt, dass das Ausgang-Enable-Signal OE des Flipflop 311 auf logisch „1" übergeht. Zu diesem Zeitpunkt leiten die Multiplexer 341-343 die Signale CCB0, CD0 und LA0 vom Register 300. Die Tristate-Puffer 351 und 352 werden enabled, die Werte CCB0, und CD0 vom Register 300 als die Werte MD[71:64] und MD[63:0] als Reaktion auf das logisch hohe Ausgang-Enable-Signal OE anzulegen. Der gerastete Adresswert LA0 vom Register 300 wird als die Write-back-Puffer-Tag-Adresse WBBTag[14:0] zur Speicherarray 101 gesendet. Man beachte, dass das Signal WBBTag[14:0] als Reaktion auf die logisch tiefen REN- und WEN-Signale durch den Adressmultiplexer 104 geleitet wird.
  • Das logisch hohe WBBRet-Signal wird auch an den Speicherarray-Sequencer 102 angelegt, wodurch die Erzeugung der Speichersteuersignale (RAS#, SEN#, CAS#, PRC#) eingeleitet wird, die zum Schreiben der korrigierten Daten zurück auf die Speicherarray 101 nötig sind. Zu diesem Zeitpunkt werden der korrigierte Datenwert CD0 und der korrigierte Prüfbitwert CCB0 zurück auf die Speicherarray 101 an die durch den Adresswert LA0 identifizierte Stelle geschrieben.
  • Das CLK-Signal geht nachfolgend auf einen logisch tiefen Pegel über. Zu diesem Zeitpunkt bewirken das logisch tiefe CLK-Signal, das logisch hohe WBBRet-Signal und der logisch tiefe Lesezeigerwert RP, dass das AND-Gate 324 ein logisch hohes Ausgangssignal anlegt. Als Reaktion darauf drückt das OR-Gate 330 ein logisch hohes Reset-Signal R0 auf, das das Gültigbit VA0 im Register 300 auf logisch „0" zurücksetzt. Das logisch tiefe VA0-Bit bewirkt, dass das WBBRet-Signal auf einen logisch tiefen Wert übergeht.
  • Wie oben beschrieben, wird der im Register 300 gespeicherte Eintrag während eines Ruhezyklus abgelegt (d.h. WEN = REN = „0"). Solange jedoch aufeinander folgende Lese- oder Schreiboperationen laufen, gibt es keinen Ruhezyklus, während dem der Eintrag im Register 300 abgelegt werden kann. In diesem Fall bleibt der Eintrag im Register 300.
  • Wenn eine andere Leseoperation (REN = „1") mit einem Einzelfehler (1-ERR = „1") vor dem nächsten Ruhezyklus auftritt, dann drückt das AND-Gate 321 das Schreibpuffer-Enable-Signal WBEN wieder mit einem Wert von logisch „1" auf. Die logische „1" des WBEN-Signals bewirkt, dass der Flipflop 312 umschaltet, so dass der Schreibzeigerwert WP auf logisch „1" wechselt. Dieses logisch hohe WP-Signal bewirkt, dass das AND-Gate 323 ein logisch hohes Ladesignal LD1 aufdrückt. Als Reaktion darauf werden mit der aktuellen Leseoperation assoziierte Signale CCB[7:0], CD[63:0] und LA[14:0] jeweils als Werte CCB1, CD1 und LA1 in das Register 301 geladen. Das logisch hohe Ladesignal LD1 wird auch in das VALID-Feld von Register 301 geladen, so dass das Gültigbit VA1 einen logisch hohen Wert hat.
  • Zu diesem Zeitpunkt haben beide Gültigbits VA0 und VA1 logische „1"-Werte. Infolgedessen legt das NAND-Gate 327 eine logische „0" an das AND-Gate an. Demzufolge kann das Schreibpuffer-Enable-Signal WBEN erst dann aufgedrückt werden, wenn wenigstens eines der Gültigbits VA0 und VA1 auf logisch „0" übergeht.
  • Das heißt, es können erst dann wieder zusätzliche Einträge auf den Write-back-Puffer 107 geschrieben werden, wenn der im Register 300 gespeicherte Eintrag in der Speicherarray 101 abgelegt wurde. Man beachte, dass, wenn bei einer nachfolgenden Leseoperation (bevor der Eintrag im Register 300 abgelegt werden kann) ein Einzelfehlerzustand vorliegt, die entsprechenden korrigierten Datenwerte/Prüfbits nicht zurück auf die Speicherarray 101 geschrieben werden. Der korrigierte Datenwert wird jedoch aus dem Speichergerät 100 gelesen. Somit führt ein Nichtzurückschreiben des korrigierten Wertes nicht zu einem Ausfall des Speichergerätes 100. Es ist wahrscheinlich, dass beim nächsten Lesen dieses Datenwertes/Prüfbits aus der Speicherarray 101 Raum im Write-back-Puffer 107 zur Verfügung steht, so dass das/der korrigierte Datenwert/Prüfbit ordnungsgemäß zurück auf die Speicherarray 101 geschrieben werden kann.
  • Es werden nun spezielle Beispiele für Schreib-, Lese- und Write-back-Operationen beschrieben.
  • Zeitablauf des Schreibzugriffs
  • 4 ist ein Wellenformschema, das den Zeitablauf von zwei Schreibzugriffen gemäß einer Ausgestaltung der vorliegenden Erfindung illustriert. Vor der ansteigenden Flanke von Taktzyklus T1 wird das Schreib-Enable-Signal WEN hoch aufgedrückt, ein erster Schreibdatenwert D0 wird an den Eingangsdatenbus Di[63:0] und ein erster Schreibadresswert A0 an den Adressbus A[14:0] angelegt. An der ansteigenden Flanke von Taktzyklus T1 werden der erste Schreibdatenwert D0 und die erste Schreibadresse A0 in das Register 200 gerastet. In 4 werden der im Register 200 gespeicherte Schreibdatenwert als DATA200 und der im Register 200 gespeicherte Adresswert als ADDR200 bezeichnet. Während des Zyklus T1 erzeugt der ECC-Generator 202 einen ECC-Prüfbitwert CB0 als Reaktion auf den im Register 200 gespeicherten ersten Schreibdatenwert D0. Man beachte, dass der Speicherarray-Sequencer 102 die Speichersteuersignale RAS#, SEN#, CAS# und PRC# während des ersten Taktzyklus T1 als Reaktion auf das logisch hohe Schreib-Enable-Signal WEN aufdrückt. Dieser Schreibzugriff wird der Deutlichkeit halber in dem vorliegenden Beispiel ignoriert. [0054] Während des Taktzyklus T2 (d.h. wenn das WEN-Signal tief ist) erfolgt kein Schreibzugriff. Infolgedessen bleiben der erste Schreibdatenwert D0 und die erste Schreibadresse A0 während des Zyklus T2 im Register 200 gerastet.
  • Vor der ansteigenden Flanke von Taktzyklus T3 wird das Schreib-Enable-Signal WEN hoch aufgedrückt, ein zweiter Schreibdatenwert D1 wird an den Eingangsdatenbus Di[63:0] and ein zweiter Schreibadresswert A1 an den Adressbus A[14:0] angelegt. An der ansteigenden Flanke von Taktzyklus T3 werden der erste Schreibdatenwert D0, die erste Schreibadresse A0 und der erste ECC-Prüfbitwert CB0 in das Register 201 gerastet. In 4 sind der im Register 201 gespeicherte Schreibdatenwert als DATA201, der im Register 201 gespeicherte Adresswert als ADDR201 und der im Register 201 gespeicherte ECC-Prüfbitwert als CB201 bezeichnet. Ebenso werden an der ansteigenden Flanke von Taktzyklus T3 der zweite Schreibdatenwert D1 und der zweite Schreibadresswert A1 in das Register 200 gerastet. Während Zyklus T3 erzeugt der ECC-Generator 202 einen ECC-Prüfbitwert CB1 als Reaktion auf den im Register 200 gespeicherten zweiten Schreibdatenwert D1.
  • Das logisch hohe Schreib-Enable-Signal WEN enabled die Ausgangspuffer 210 und 211, so dass diese Ausgangspuffer den ersten Datenwert D0 und den ersten ECC-Prüfbitwert CB0 vom Register 210 auf den Speicherdatenbus MD[71:0] setzen. Die erste Schreibadresse A0 wird vom Register 201 als das Schreibpuffer-Tag-Signal WBTag[14:0] bereitgestellt. Dieses Schreibpuffer-Tag-Signal WBTag[14:0] wird als Reaktion auf das logisch hohe Schreib-Enable-Signal durch den Multiplexer 104 zur Speicherarray 101 geleitet. Der Speicherarray-Sequencer drückt das Speicherschreibsignal MWrite und die Speichersteuersignale RAS#, SEN#, CAS# und PRC# als Reaktion auf das logisch hohe Schreib-Enable-Signal WEN während des Zyklus T3 auf und ermöglicht es so, dass der erste Schreibdatenwert D0 und der erste ECC-Prüfbitwert CB0 auf die Speicherarray 101 an die durch die erste Schreibadresse A0 vorgegebene Stelle geschrieben werden. Man beachte, dass der zweite Schreibdatenwert D1 und die zweite Schreibadresse A1 bis zum nächsten Schreibzugriff (oder dem nächsten Lesezugriff, der auf den Schreibpuffer 105 trifft) im Register 200 bleiben. Man beachte auch, dass der ECC-Prüfbitwert CB1 am Ausgang des ECC-Generators bis zum Anfang des nächsten Schreibzugriffs wartet. Somit hat die Erzeugung von ECC-Prüfbitwerden keinen Einfluss auf die Schreibzugriffslatenz des Speichergerätes 100.
  • Zeitablauf von einzelnem Lesezugriff und Write-back
  • 5 ist ein Wellenformschema, das den Zeitablauf einer Lesetransaktion, gefolgt von einer Write-back-Operation gemäß einer Ausgestaltung der vorliegenden Erfindung illustriert. Vor der ansteigenden Flanke von Taktzyklus T1 wird das Lese-Enable-Signal REN hoch aufgedrückt und eine Leseadresse Ax[14:0] wird an den Adressbus A[14:0] angelegt, um einen Lesezugriff einzuleiten. An der ansteigenden Flanke von Zyklus T1 wird die Leseadresse Ax[14:0] als die gerastete Leseadresse LAx[14:0] in das Adressregister 103 gerastet. Diese gerastete Leseadresse LAx[14:0] wird durch den Multiplexer 104 auf den Speicheradressbus MA[14:0] gesetzt. Der Multiplexer 104 leitet die gerastete Lesezugriffsadresse LAx[14:0] als Reaktion auf den H-Zustand des Lese-Enable-Signals REN und den L-Zustand des Schreib-Enable-Signals WEN.
  • Das logisch hohe Lese-Enable-Signal REN wird als Reaktion auf die ansteigende Flanke des Zyklus T1 auch in den Speicherarray-Sequencer 102 gerastet. Als Reaktion darauf aktiviert der Speicherarray-Sequencer 102 sequenziell die Speicherarray-Steuersignale RAS#, SEN#, CAS# und PRC# und liest dadurch das mit der gerasteten Leseadresse LAx[14:0] assoziierte Hammingcode-Wort (d.h. MDx[71:0]). Man beachte, dass das einzige in 5 gezeigte Speicherarray-Steuersignal das CAS#-Signal ist. Der H-Zustand des gerasteten Lese-Enable-Signals REN im Speicherarray-Sequencer 102 bewirkt, dass das Speicherschreibsignal MWrite einen logisch tiefen Wert hat, wodurch angezeigt wird, dass die vorliegende Speicheroperation ein Lesezugriff ist. Demzufolge wird das Wort MDx[71:0], auf das zugegriffen wird, aus der Speicherarray auf den Datenbus MD[71:0] gelesen.
  • Das 72-Bit-Wort MDx[71:0], auf das zugegriffen wird, wird an die Fehlererkennungs-/-korrektureinheit 106 angelegt, wobei der Datenteil des Wortes (d.h. MDx[63:0]) und der Prüfbitteil des Wortes (d.h. MDx[71:64]) für Syndromerzeugung, Fehlererkennung und -korrektur getrennt werden. Wenn ein Einzelbitfehler erkannt wird, dann aktiviert der Syndromgenerator 112 das Einzelfehlersignal (1-ERR) noch und die Fehlerkorrektureinheit 113 korrigiert den Einzelbitfehler entweder im Datenwort oder in den Prüfbits. Das korrigierte Datenwort CDx[63:0] wird vom Ausgangstreiber 108 als der Ausgangsdatenwert Do[63:0] angelegt.
  • Innerhalb des Write-back-Puffers 107 rastet der Flipflop 310 das logisch hohe Lese-Enable-Signal REN an der ansteigenden Flanke von Zyklus T1 und erzeugt dadurch ein logisch hohes gerastetes Lese-Enable-Signal LREN. Wenn das Einzelfehlersignal 1-ERR vom Syndromgenerator 112 hoch aktiviert wird, dann aktiviert das AND-Gate 321 das Schreibpuffer-Enable-Signal WBEN in einem logisch hohen Zustand. Das AND-Gate 322 aktiviert das Ladedatensignal LD0 als Reaktion auf das logisch hohe WBEN-Signal und den logischen tiefen Schreibzeigerwert WP auf einen logisch hohen Wert. Zu Beginn von Taktzyklus T2 geht das CLK-Signal in einen logisch hohen Zustand über und aktiviert dadurch das Register 300, so dass das logisch hohe LD0-Signal, die korrigierten Prüfbits CCBx[7:0], das korrigierte Datenwort CDx[63:0] und die assoziierte gerastete Adresse LAx[14:0] in das Register 300 des Write-back-Puffers l07 geschrieben werden. Zu diesem Zeitpunkt geht das Gültigbit VA0, in einen logisch hohen Zustand über und das korrigierte ECC-Codewort, das aus korrigierten Prüfbits CCBx[7:0] und dem korrigierten Datenwort CDx[63:0] besteht, liegt am Ausgang des Registers 300 an.
  • Zu Beginn von Zyklus T2 sind sowohl das Lese-Enable-Signal REN als auch das Schreib-Enable-Signal WEN im L-Zustand, was die Abwesenheit eines externen Zugriffs anzeigt. Das Gültigsignal VA0 geht jedoch nach der ansteigenden Flanke von Taktzyklus T2 in den H-Zustand. Infolgedessen hat das WBBRet-Signal einen L-Zustand an der ansteigenden Flanke von Zyklus T2. Somit erfolgt in Zyklus T2 kein Write-back, obwohl in Zyklus T2 kein externer Zugriff angefordert wird.
  • Zu Beginn von Zyklus T3 schaltet der H-Zustand des WBBRet-Signals den Ausgang des Toggle-Flipflop 313 (d.h. den Lesezeigerwert RP) von hoch auf tief. Der L-Zustand des Lesezeigersignals RP bewirkt, dass die Multiplexer 341-343 den entsprechenden Inhalt von Register 300 leitet. Infolgedessen wird der im Register 300 gespeicherte gerastete Adresswert LAx[14:0] als die Write-back-Puffer-Tag-Adresse WBBTagx[14:0] angelegt. Das WBBTagx[14:0] Signal wird an den Multiplexer 104 angelegt. Der Multiplexer 104 leitet das Signal WBBTagx[14:0] als Reaktion auf die logischen L-Zustände der REN- und WEN-Signale als das Speicheradresssignal MA[14:0]. Die Multiplexer 341 und 342 leiten den korrigierten Prüfbitwert CCBx[7:0] und das korrigierte Datenwort CDx[63:0] jeweils zu den Tristate-Puffern 351 und 352. Das Ausgang-Enable-Signal OE wird hoch aufgedrückt, wenn der H-Zustand des WBBRet-Signals an der ansteigenden Flanke von Zyklus T3 in den Flipflop 311 gerastet.
  • Das hohe OE-Signal enables die Tristate-Puffer 341 und 342, den korrigierten Prüfbitwert CCBx[7:0] und das korrigierte Datenwort CDx[63:0] auf den Speicherdatenbus MD[71:0] zu setzen.
  • Der Speicherarray-Sequencer 102 rastet das logisch hohe WBBRet-Signal an der ansteigenden Flanke von Zyklus T3, was zu einer sequenziellen Aktivierung der Speichersteuersignale RAS#, SEN#, CAS# und PRC# führt. Der Speicherarray-Sequencer 102 drückt auch das MWrite-Signal als Reaktion auf das logisch hohe WBBRet-Signal auf. Infolgedessen wird das Wort auf dem Datenbus MD[71:0] auf die durch die Adresse ABBTag[14:0] vorgegebene Speicherstelle geschrieben. An der abfallenden Flanke des CLK-Signals in Zyklus T3 legt das AND-Gate 324 ein logisch hohes Ausgangssignal an, wodurch das Reset-Signal R0 in einen logisch hohen Zustand gesetzt wird. Das logisch hohe Reset-Signal R0 setzt das Gültigbit VA0 auf einen logisch tiefen Wert zurück. Die logisch tiefen Gültigbits VA0 und VA1 bewirken, dass das OR-Gate 333 ein logisches „0"-Ausgangssignal anlegen, was wiederum bewirkt, dass das WBBRet-Signal in einen logischen „0"-Zustand übergeht. Am Ende von CLK-Zyklus T3 werden die Steuersignale RAS#, SEN#, CAS# und PRC# im H-Zustand weggenommen, womit der Speicherschreiboperations- und Write-back-Zyklus vollendet wird.
  • Man beachte, dass, wenn kein Einzelbitfehler im Lesezugriff von Zyklus T1 auftritt, weder die Daten- noch die Prüfbits, die von der Speicherarray 101 gelesen wurden, korrigiert und im Write-back-Puffer 107 gespeichert werden. Die unkorrigierten Daten werden jedoch weiterhin vom Ausgangstreiber 108 auf den Ausgangsdatenbus Do[63:0] gesetzt.
  • Aufeinander folgende Lesezyklen und Write-back-Zyklen
  • 6 ist ein Wellenformschema, das den Zeitablauf von zwei aufeinander folgenden Lesezugriffszyklen, gefolgt von zwei aufeinander folgenden Write-back-Zyklen gemäß einer Ausgestaltung der vorliegenden Erfindung illustriert. Vor der ansteigenden Flanke von Taktzyklus T1 wird das Lese-Enable-Signal REN hoch aufgedrückt und eine Leseadresse A1[14:0] wird an den Adressbus A[14:0] angelegt, um einen Lesezugriff einzuleiten. Die Lesezyklusoperationen und die Steuertiming-Wellenformen sind den in 5 gezeigten ähnlich. In diesem ersten Lesezugriff wird ein Einzelbitfehler erkannt, der dazu führt, dass das korrigierte Hammingcode-Wort (CD1/CCB1) und die Adresse A1[14:0] im Register 300 des Write-back-Puffers 107 gespeichert werden. An der ansteigenden Flanke von Zyklus T2 veranlasst der H-Zustand der Signale 1-ERR und LREN den Toggle-Flipflop 312, den Schreibzeigerwert WP von einem logischen „0"-Wert in einen logischen „1"-Wert zu ändern, so dass das Register 301 des Write-back-Puffers 107 zum Empfangen des/der nächsten korrigierten Hammingcode-Wortes und Adresse konfiguriert wird.
  • Vor der ansteigenden Flanke von Taktzyklus T2 wird ein weiteres Lese-Enable-Signal REN hoch aufgedrückt und eine zweite Leseadresse A2[14:0] wird an den Adressbus A[14:0] angelegt, um einen zweiten Lesezugriff einzuleiten. Auch hier sind die Lesezyklusoperationen und die Steuertiming-Wellenformen wieder den in 5 gezeigten ähnlich. Bei diesem zweiten Lesezugriff wird ein Einzelbitfehler erkannt. Als Reaktion darauf drückt die Fehlererkennungs-/-korrekturschaltung 106 das 1-ERR Signal auf und legt ein korrigiertes Hammingcode-Wort an, das korrigierte Daten CD[63:0] und das korrigierte Prüfbit CCB2[7:0] beinhaltet. Als Reaktion auf das logisch hohe 1-ERR Signal und das logisch hohe LREN-Signal und den logisch hohen Ausgang von NAND-Gate 327, legt das AND-Gate 321 ein logisch hohes Schreibpuffer-Enable-Signal WBEN an. Als Reaktion auf das logisch hohe WBEN-Signal und den Schreibzeigerwert von logisch „1" drückt das AND-Gate 323 das Ladesignal LD1 mit einem logisch hohen Wert auf, wodurch das Register 301 enabled wird. An der ansteigenden Flanke von Zyklus T3 werden das korrigierte Hammingcode-Wort (CD2/CCB2), die Adresse A2[14:0] und der H-Zustand von LD1 in das Register 301 von Write-back-Puffer 107 gerastet. Demzufolge wird das Gültigbit VA1 auf einen logisch hohen Wert gesetzt.
  • Am Ende von Zyklus T2 zeigen die L-Zustände der REN- und WEN-Signale die Abwesenheit eines externen Speicherzugriffs an. Die L-Zustände der REN- und WEN-Signale bewirken zusammen mit dem H-Zustand des VA0-Signals, dass das AND-Gate 326 ein logisch hohes WBBRet-Signal anlegt. Im Write-back-Puffer 107 wird dieses hohe WBBRet-Signal an der ansteigenden Flanke von Zyklus T3 in den Flipflop 311 gerastet, so dass bewirkt wird, dass das Ausgang-Enable-Signal OE in den H-Zustand geht. Der H-Zustand des WBBRet-Signals an der ansteigenden Taktflanke bewirkt auch, dass der Toggle-Flipflop 313 den Lesezeigerwert RP in einen logischen „0"-Zustand setzt. Demzufolge wird die im Register 300 gespeicherte erste Adresse A1[14:0] als das Ausgangssignal WBBTag[14:0] angelegt, während die im Register 300 gespeicherten korrigierten Daten- und Prüfbits CD1[63:0] und CCB1[7:0] als Ausgangssignal MD[71:0] angelegt werden. Der Write-back-Puffer-Tag WBBTag[14:0] wird als Reaktion auf die logisch tiefen REN- und WEN-Signale durch den Multiplexer 104 an die Speicherarray 101 angelegt. Im Speicherarray-Sequencer 102 wird der H-Zustand des WBBRet-Signals am Anfang von Zyklus T3 gerastet. Demzufolge wird das MWrite-Signal in den H-Zustand gesetzt und die Speicherarray-Steuersignale RAS#, SEN#, CAS# und PRC# werden der Reihe nach aktiviert, so dass die Speicherarray 101 einen Speicherschreibzyklus durchläuft, wobei das korrigierte Codewort MD[71:0] auf die durch WBBTag[14:0] vorgegebene Stelle geschrieben wird. Das Reset-Signal R0 geht als Reaktion auf die abfallende Flanke von Zyklus T3 in den H-Zustand und setzt dadurch das Gültigbit VA0 im Register 300 zurück. Durch das Zurücksetzen des Gültigbits VA0 wird der Inhalt von Register 300 invalidiert. Am Ende von Zyklus T3 werden alle Speicherarray-Steuersignale hoch deaktiviert und die Speicherarray 101 ist für einen weiteren Zugriff bereit.
  • Am Ende von Zyklus T3 zeigen die L-Zustände der REN- und WEN-Signale wieder die Abwesenheit eines externen Speicherzugriffs an. Die L-Zustände der REN- und WEN-Signale bewirken zusammen mit dem H-Zustand von Gültigbit VA1, dass das WBBRet-Signal in einem logischen H-Zustand bleibt. Am Anfang von Zyklus T4 bewirkt der H-Zustand des WBBRet-Signals, dass der Lesezeigerwert RP vom Toggle-Flipflop 313 in einen logischen H-Zustand übergeht. Infolgedessen werden die Multiplexer 341-343 so gesteuert, dass sie das korrigierte Prüfbit CCB2[7:0] und den korrigierten Datenwert CD2[63:0] als den MD[71:0] Wert und den Adresswert A2[14:0] als den Write-back-Puffer-Tag-Wert WBBTag[14:0] leiten. Man beachte, dass das Ausgang-Enable-Signal OE als Reaktion auf das logisch hohe WBBRet-Signal in einem logischen H-Zustand bleibt. Im Speicherarray-Sequencer 102 wird der H-Zustand des WBBRet-Signals an der ansteigenden Flanke von Zyklus T4 gerastet. Der H-Zustand des WBBRet-Signals bewirkt, dass das MWrite-Signal hoch bleibt, wodurch ein weiterer Schreibzyklus in der Speicherarray 101 gestartet wird. Der Schreibzyklus erfolgt mit der aufeinanderfolgenden Aktivierung der Signale RAS#, SEN#, CAS# und PRC#. Dies hat zur Folge, dass das modifizierte Hammingcode-Wort MD[71:0] von Register zurück auf die Speicherarray 101 an die Stelle (A2) geschrieben wird, die durch die vom Register 301 gelesene Adresse WBBTag[14:0] vorgegeben wird. Das Reset-Signal R1 geht als Reaktion auf die abfallende Flanke von Zyklus T4 in den H-Zustand und setzt so das Gültigbit VA1 im Register 30l zurück. Durch das Zurücksetzen des Gültigbits VA1 wird der Inhalt von Register 301 invalidiert. Am Ende von Zyklus T4 werden alle Speicherarray-Steuersignale hoch deaktiviert und die Speicherarray 101 ist für einen weiteren Zugriff bereit. Wenn das Gültigbit VA1 in einen logisch tiefen Zustand übergeht, dann haben beide Gültigbits VA0 und VA1 logisch tiefe Werte. Infolgedessen legt das OR-Gate 332 ein logisch tiefes Ausgangssignal an, so dass das WBBRet-Signal in einen logisch tiefen Zustand übergeht. Die logisch tiefen Gültigbits VA0 und VA1 zeigen an, dass beide Einträge von Write-back-Puffer 107 auf der Speicherarray 101 abgelegt wurden.
  • Man beachte, dass, wenn in Zyklus T3 ein weiterer Lesezugriff mit einem Einzelbitfehler auf dem Codewort erfolgt, auf das zugegriffen wurde, dann wird das korrigiere Codewort nicht in den Write-back-Puffer geschrieben, weil beide Gültigbits VA0 und VA1 hoch sind. Die hohen Gültigbits VA0 und VA1 bewirken, dass der Ausgang von NAND-Gate 327 in den L-Zustand gehen und dass der Ausgang des AND-Gates (d.h. das Write-back-Enable-Signal WBEN) in den L-Zustand geht. Der L-Zustand des WBEN-Signals verhindert, dass die Ladesignale LD0 und LD1 aufgedrückt werden, und verhindert dadurch das Schreiben neuer Einträge auf die Register 300 und 301. Stattdessen werden die Einsprungadressen in den Registern 300 und 301 für nachfolgende Write-back-Operationen konserviert. Der korrigierte Code, der von diesem dritten Lesezugriff resultierte, wird nicht zurück auf die Speicherarray 101 geschrieben. Dies führt jedoch nicht zu einem Speicherausfall, solange das Speicherwort kein anderes Fehlerbit akkumuliert, weil dieses Codewort bei einem nachfolgenden Lesezugriff weiterhin gelesen und korrigiert werden kann.
  • Die Erfindung wurde zwar in Verbindung mit mehreren Ausgestaltungen beschrieben, aber es ist zu verstehen, dass die vorliegende Erfindung nicht auf die offenbarten Ausgestaltungen begrenzt ist, sondern dass verschiedene für die Fachperson offensichtliche Modifikationen möglich sind. So lag der Schwerpunkt in den beschriebenen Ausgestaltungen zum Beispiel auf einer Speicherarray mit DRAM-Zellen, aber es ist zu verstehen, dass in anderen Ausgestaltungen auch eine Speicherarray mit SRAM-Zellen oder nichtflüchtigen Speicherzellen mit einer Modifikation am Speicherarray-Sequencer implementiert werden kann. Eine solche Modifikation könnte von einer durchschnittlichen Fachperson im Bereich Speicherdesign leicht durchgeführt werden. So ist die Erfindung nur durch die nachfolgenden Ansprüche begrenzt.

Claims (17)

  1. Halbleiterspeicherbauelement (100), das Folgendes umfasst: eine Speicherarray (101), die so konfiguriert ist, dass sie Datenwerte und entsprechende Fehlerkorrekturcodewerte speichert; ein erstes Register (200), das so konfiguriert ist, dass es einen ersten Schreibdatenwert und einen entsprechenden ersten Schreibadresswert bei einem ersten Schreibzugriff auf die Speicherarray (101) speichert; einen Fehlerkorrekturcode-(ECC)-Generator (202), der so konfiguriert ist, dass er den ersten Schreibdatenwert vom ersten Register empfängt und als Reaktion darauf einen ersten ECC-Wert beim ersten Schreibzugriff auf die Speicherarray erzeugt; Mittel zum Schreiben des ersten Schreibdatenwertes und des ersten ECC-Wertes auf eine Stelle in der Speicherarray (101), die mit dem ersten Schreibadresswert assoziiert ist, bei einem nachfolgenden zweiten Schreibzugriff; wobei das Bauelement gekennzeichnet ist durch: Mittel zum Ausgeben des ersten Schreibdatenwertes und des ersten ECC-Wertes bei einem nachfolgenden Lesezugriff, wenn ein mit dem Lesezugriff assoziierter Leseadresswert mit dem im ersten Register (200) gespeicherten ersten Schreibadresswert übereinstimmt; und dadurch, dass der ECC-Generator so konfiguriert wird, dass er den ersten ECC-Wert erzeugt, solange der erste Schreibdatenwert im ersten Register (200) gespeichert ist.
  2. Halbleiterspeicherbauelement (100) nach Anspruch 1, das ferner ein zweites Register (201) umfasst, das so konfiguriert ist, dass es den ersten Schreibdatenwert und den entsprechenden ersten Schreibadresswert vom ersten Register (200) und den ersten ECC-Wert vom Fehlerkorrekturcode-Generator (202) empfängt und speichert, wobei das zweite Register (201) mit der Speicherarray (101) gekoppelt ist.
  3. Halbleiterspeicherbauelement (100) nach Anspruch 1, wobei das Ausgabemittel einen Komparator (205) umfasst, der zum Empfangen des im ersten Register (200) gespeicherten ersten Schreibadresswertes und des mit dem Lesezugriff assoziierten Leseadresswertes gekoppelt ist, wobei der Komparator ein Übereinstimmungssteuersignal anlegt, wenn der erste Schreibadresswert mit dem mit dem Lesezugriff assoziierten Leseadresswert übereinstimmt.
  4. Halbleiterspeicherbauelement (100) nach Anspruch 3, wobei das Ausgabemittel ferner eine Logikschaltung (204) umfasst, die zum Empfangen des Übereinstimmungssteuersignals und eines Lesefreigabesignals gekoppelt ist, wobei die Logikschaltung ein Hit-Signal anlegt, um anzuzeigen, dass ein Lesezugriff auf das erste Register (200) getroffen ist, wenn sowohl das Übereinstimmungssteuersignal als auch das Lesefreigabesignal anliegen.
  5. Halbleiterspeicherbauelement (100) nach Anspruch 3, wobei das erste Register (200) und das zweite Register (201) einen doppelt gepufferten Schreibpuffer bilden, der in einer F1FO-(First In First Out)-Konfiguration angeordnet ist.
  6. Halbleiterspeicherbauelement (100) nach Anspruch 1, wobei das erste Register (200) ferner so konfiguriert ist, dass es einen zweiten Schreibdatenwert und einen entsprechenden zweiten Adresswert beim zweiten Schreibzugriff auf die Speicherarray (101) speichert, und wobei der Fehlerkorrekturcode-(ECC)-Generator (202) ferner so konfiguriert ist, dass er den zweiten Schreibdatenwert vom ersten Register (200) empfängt und als Reaktion darauf erneut zweiten ECC-Wert beim zweiten Schreibzugriff auf die Speicherarray erzeugt.
  7. Halbleiterspeicherbauelement (100) nach Anspruch 1, wobei jeder Datenwert und entsprechende Fehlerkorrekturcode-(ECC)-Wert einen Daten/ECC-Wert bildet, wobei das Halbleiterspeicherbauelement ferner Folgendes umfasst: eine Fehlererkennungs-/-korrekturschaltung (106), die zum Empfangen eines ersten Daten/ECC-Wertes von einer ersten Adresse der Speicherarray (101) bei einem ersten Lesezugriff gekoppelt ist, wobei die Fehlererkennungs-/-korrekturschaltung (106) zum Erzeugen eines korrigierten ersten Daten/ECC-Wertes und zum Anlegen eines Fehleranzeigesignals nach dem Erkennen eines Fehlers im ersten Daten/ECC-Wert konfiguriert ist; und einen Write-Back-Puffer (107), der so konfiguriert ist, dass er den korrigierten ersten Daten/ECC-Wert als Reaktion auf das angelegte Fehleranzeigesignal speichert, wobei der Write-Back-Puffer (107) ferner so konfiguriert ist, dass er den korrigierten ersten Daten/ECC-Wert auf die erste Adresse der Speicherarray (101) bei einem Ruhezyklus des Speicherbauelementes schreibt.
  8. Halbleiterspeicherbauelement (100) nach Anspruch 7, wobei der Write-Back-Puffer (107) mehrere Einsprungadressen aufweist und in einer FIFO-(First In First Out)-Konfiguration angeordnet ist.
  9. Halbleiterspeicherbauelement (100) nach Anspruch 7, wobei der Write-Back-Puffer (107) mehrere Einsprungadressen aufweist und in einer LIFO-(Last In First Out)-Konfiguration angeordnet ist.
  10. Halbleiterspeicherbauelement (100) nach Anspruch 7, wobei der Write-Back-Puffer (107) mehrere Einsprungadressen aufweist, wobei der Write-Back-Puffer (107) eine Schaltung aufweist, um Schreiboperationen auf den Write-Back-Puffer (107) zu verhindern, wenn alle Einsprungadressen des Write-Back-Puffers (107) voll sind.
  11. Verfahren zum Betreiben eines Halbleiterspeichers (100), das die folgenden Schritte umfasst: Speichern eines ersten Schreibdatenwertes und einer entsprechenden ersten Schreibadresse in einem ersten Register (200) eines Schreibpuffers bei einem ersten Schreibzugriff; Erzeugen eines ersten Fehlerkorrekturcode-(ECC)-Wertes als Reaktion auf den im ersten Register (200) des Schreibpuffers gespeicherten ersten Schreibdatenwertes beim ersten Schreibzugriff; Übertragen des ersten Schreibdatenwertes, des ersten ECC-Wertes und der ersten Schreibadresse auf eine Speicherarray (101) bei einem nachfolgenden zweiten Schreibzugriff; Schreiben des ersten Schreibdatenwertes und des ersten ECC-Wertes auf eine Stelle in der Speicherarray (101), die durch die erste Schreibadresse beim zweiten Schreibzugriff identifiziert wird; Speichern eines zweiten Schreibdatenwertes und einer entsprechenden zweiten Schreibadresse im ersten Register (200) des Schreibpuffers beim zweiten Schreibzugriff; und Erzeugen eines zweiten Fehlerkorrekturcode-(ECC)-Wertes als Reaktion auf den im ersten Register (200) des Schreibpuffers gespeicherten zweiten Schreibdatenwert beim zweiten Schreibzugriff und Erzeugen des zweiten ECC-Wertes, solange der zweite Schreibdatenwert im ersten Register (200) gespeichert ist, wobei das Verfahren gekennzeichnet ist durch Erzeugen des ersten ECC-Wertes, solange der erste Schreibdatenwert im ersten Register (200) gespeichert ist; und durch Ausgeben des ersten Schreibdatenwertes und des ersten ECC-Wertes bei einem nachfolgenden Lesezugriff, wenn ein mit dem Lesezugriff assoziierter Leseadresswert mit der im ersten Register (200) gespeicherten ersten Schreibadresse übereinstimmt.
  12. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: Übertragen des ersten Schreibdatenwertes, des ersten ECC-Wertes und der ersten Schreibadresse in ein zweites Register (201) des Schreibpuffers beim zweiten Schreibzugriff; und Schreiben des ersten Schreibdatenwertes und des ersten ECC-Wertes vom zweiten Register (201) des Schreibpuffers auf die Stelle in der Speicherarray (10l ), die durch die erste Schreibadresse beim zweiten Schreibzugriff identifiziert wird.
  13. Verfahren nach Anspruch 11, das ferner das Übertragen des ersten Schreibdatenwertes und des ersten ECC-Wertes zur Speicherarray (101) durch Freigeben von Tristate-Puffern beim zweiten Schreibzugriff umfasst.
  14. Verfahren nach Anspruch 11, das ferner das Ausgeben des ersten Schreibdatenwertes und des ersten ECC-Wertes umfasst, wenn eine Leseadresse eines Lesezugriffs mit dem im ersten Register (200) des Schreibpuffers gespeicherten ersten Schreibadresswert übereinstimmt.
  15. Verfahren nach Anspruch 14, das ferner das Verhindern des Zugriffs auf die Speicherarray umfasst, wenn eine Leseadresse eines Lesezugriffs mit dem im ersten Register (200) des Schreibpuffers gespeicherten ersten Schreibadresswert übereinstimmt.
  16. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: Lesen des ersten Schreibdatenwertes und des ersten ECC-Wertes von der Stelle, die durch die erste Schreibadresse bei einem ersten Lesezugriff identifiziert wird; Erzeugen eines ersten korrigierten Daten/ECC-Wertes als Reaktion auf den ersten Schreibdatenwert und den beim ersten Lesezugriff gelesenen ersten ECC-Wert, wobei der erste Daten/ECC-Werte einen Fehler beinhaltet; Anlegen eines Fehleranzeigesignals, um anzuzeigen, dass der erste Daten/ECC-Wert einen Fehler beinhaltet; Speichern des ersten korrigierten Daten/ECC-Wertes und der ersten Schreibadresse in einem Write-Back-Puffer (107) als Reaktion auf das angelegte Fehleranzeigesignal; und Schreiben des ersten korrigierten Daten/ECC-Wertes auf die erste Schreibadresse der Speicherarray (101) bei einem Ruhezyklus des Speicherbauelementes (100).
  17. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Lesen eines Datenwertes und eines entsprechenden ECC-Wertes von einer Leseadresse bei einem zweiten Lesezugriff; Erzeugen eines zweiten korrigierten Daten/ECC-Wertes als Reaktion auf den Datenwert und den beim zweiten Lesezugriff gelesenen entsprechenden ECC-Wert, wobei der zweite Daten/ECC-Werte einen Fehler beinhaltet; Anlegen des Fehleranzeigesignals, um anzuzeigen, dass der zweite Daten/ECC-Wert einen Fehler beinhaltet; Speichern des zweiten korrigierten Daten/ECC-Wertes und der Leseadresse im Write-Back-Puffer (107) als Reaktion auf das angelegte Fehleranzeigesignal, wobei der erste korrigierte Daten/ECC-Werte und der zweite korrigierte Daten/ECC-Werte gleichzeitig im Write-Back-Puffer (107) gespeichert werden; und Schreiben des zweiten korrigierten Daten/ECC-Wertes auf die Leseadresse der Speicherarray (101) bei einem Ruhezyklus des Speicherbauelementes (100).
DE60210658T 2001-11-14 2002-11-13 Fehlerkorrigierende speicher und verfahren zu seiner nutzung Expired - Lifetime DE60210658T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/003,602 US7051264B2 (en) 2001-11-14 2001-11-14 Error correcting memory and method of operating same
US3602 2001-11-14
PCT/GB2002/005123 WO2003042826A2 (en) 2001-11-14 2002-11-13 Error correcting memory and method of operating same

Publications (2)

Publication Number Publication Date
DE60210658D1 DE60210658D1 (de) 2006-05-24
DE60210658T2 true DE60210658T2 (de) 2007-04-05

Family

ID=21706644

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60210658T Expired - Lifetime DE60210658T2 (de) 2001-11-14 2002-11-13 Fehlerkorrigierende speicher und verfahren zu seiner nutzung

Country Status (5)

Country Link
US (2) US7051264B2 (de)
EP (1) EP1449082B1 (de)
DE (1) DE60210658T2 (de)
TW (1) TW580709B (de)
WO (1) WO2003042826A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021205172A1 (de) 2021-05-20 2022-11-24 Robert Bosch Gesellschaft mit beschränkter Haftung Speichervorrichtung und Verfahren zur Überprüfung von Speicherinhalten

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4856848B2 (ja) * 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US7027064B2 (en) * 2002-02-28 2006-04-11 Sun Microsystems, Inc. Active block write-back from SRAM cache to DRAM
US6976194B2 (en) * 2002-06-28 2005-12-13 Sun Microsystems, Inc. Memory/Transmission medium failure handling controller and method
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
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
KR100481820B1 (ko) * 2002-09-26 2005-04-11 (주)실리콘세븐 패러티로서 비유효한 출력 데이터를 보정하는 에스램 호한메모리와 그 구동방법
JP2004234770A (ja) * 2003-01-31 2004-08-19 Renesas Technology Corp 半導体記憶装置とテスト方法
US7664987B2 (en) * 2003-05-25 2010-02-16 Sandisk Il Ltd. Flash memory device with fast reading rate
US7530008B2 (en) 2003-08-08 2009-05-05 Sun Microsystems, Inc. Scalable-chip-correct ECC scheme
US8176250B2 (en) * 2003-08-29 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for testing a memory
US7346755B2 (en) * 2003-09-16 2008-03-18 Hewlett-Packard Development, L.P. Memory quality assurance
US7188296B1 (en) 2003-10-30 2007-03-06 Sun Microsystems, Inc. ECC for component failures using Galois fields
US7376887B2 (en) * 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
US7328377B1 (en) 2004-01-27 2008-02-05 Altera Corporation Error correction for programmable logic integrated circuits
JP4102313B2 (ja) * 2004-02-05 2008-06-18 株式会社東芝 半導体集積回路装置
US7099221B2 (en) 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20060010339A1 (en) * 2004-06-24 2006-01-12 Klein Dean A Memory system and method having selective ECC during low power refresh
US7340668B2 (en) * 2004-06-25 2008-03-04 Micron Technology, Inc. Low power cost-effective ECC memory system and method
US7116602B2 (en) * 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US6965537B1 (en) * 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
US7392456B2 (en) 2004-11-23 2008-06-24 Mosys, Inc. Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
DE102004058288A1 (de) * 2004-12-02 2006-06-08 Robert Bosch Gmbh Vorrichtung und Verfahren zur Behebung von Fehlern bei einem Prozessor mit zwei Ausführungseinheiten
US20060156177A1 (en) * 2004-12-29 2006-07-13 Sailesh Kottapalli Method and apparatus for recovering from soft errors in register files
US7644341B2 (en) * 2004-12-30 2010-01-05 Taiwan Semiconductor Manufacturing Co., Ltd. Method and system for correcting soft errors in memory circuit
CN100347677C (zh) * 2005-01-10 2007-11-07 中国航天时代电子公司第七七一研究所 空间计算机抗单粒子翻转的存储器纠检错与自动回写方法
US20060195774A1 (en) * 2005-02-17 2006-08-31 Stephen Bowyer Error correction circuit and method
DE102005022107B9 (de) * 2005-05-12 2016-04-07 Infineon Technologies Ag Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
US20060265636A1 (en) * 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7373583B2 (en) * 2005-05-19 2008-05-13 Infineon Technologies North America Corp. ECC flag for testing on-chip error correction circuit
JP4653218B2 (ja) * 2005-06-09 2011-03-16 ガンブロ・ルンディア・エービー 医療機器および医療機器をセットアップするための方法
US7447948B2 (en) * 2005-11-21 2008-11-04 Intel Corporation ECC coding for high speed implementation
JP4936746B2 (ja) * 2006-03-08 2012-05-23 ルネサスエレクトロニクス株式会社 半導体装置
JP2007242162A (ja) * 2006-03-09 2007-09-20 Toshiba Corp 半導体記憶装置
US7539923B1 (en) * 2006-08-03 2009-05-26 Xilinx, Inc. Circuit and method of transmitting a block of data
CN100557715C (zh) * 2006-08-11 2009-11-04 福昭科技(深圳)有限公司 利用一组ecc电路并行处理多组数据的方法
US7894289B2 (en) * 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7900120B2 (en) 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US7917828B2 (en) * 2006-12-28 2011-03-29 Intel Corporation Providing error correction coding for probed data
US7840876B2 (en) * 2007-02-20 2010-11-23 Qimonda Ag Power savings for memory with error correction mode
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
KR100890546B1 (ko) * 2007-04-30 2009-03-27 슈어소프트테크주식회사 메모리 오류 검출 방법
US7797594B1 (en) * 2007-07-05 2010-09-14 Oracle America, Inc. Built-in self-test of 3-dimensional semiconductor memory arrays
US20090083495A1 (en) * 2007-09-26 2009-03-26 Khellah Muhammad M Memory circuit with ecc based writeback
JP4820795B2 (ja) * 2007-10-04 2011-11-24 パナソニック株式会社 半導体記憶装置
KR101291721B1 (ko) * 2007-12-03 2013-07-31 삼성전자주식회사 저항체를 이용한 비휘발성 메모리 장치, 이를 포함하는메모리 시스템
US8140945B2 (en) * 2008-05-23 2012-03-20 Oracle America, Inc. Hard component failure detection and correction
US8352781B2 (en) * 2008-07-04 2013-01-08 Stmicroelectronics International N.V. System and method for efficient detection and restoration of data storage array defects
TWI382422B (zh) * 2008-07-11 2013-01-11 Genesys Logic Inc 根據錯誤更正碼更新快閃記憶體之資料頁面之儲存裝置與方法
CN102171767A (zh) * 2008-09-30 2011-08-31 Lsi公司 用于存储装置的基于性能因素调节的软数据生成方法装置
TWI401694B (zh) * 2009-01-14 2013-07-11 Nanya Technology Corp 動態隨機存取記憶體行命令位址的控制電路及方法
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
KR101543245B1 (ko) * 2009-03-18 2015-08-11 삼성전자주식회사 에러 교정 장치와 이를 포함하는 메모리 장치와 데이터 처리 시스템
JP2011108306A (ja) * 2009-11-16 2011-06-02 Sony Corp 不揮発性メモリおよびメモリシステム
JP2013033560A (ja) 2009-12-03 2013-02-14 Panasonic Corp 半導体記憶装置
US8438344B2 (en) * 2010-03-12 2013-05-07 Texas Instruments Incorporated Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes
US8352839B2 (en) 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
US20120110244A1 (en) * 2010-11-02 2012-05-03 Micron Technology, Inc. Copyback operations
KR101873526B1 (ko) 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
DE112012003493T5 (de) * 2011-08-24 2014-05-08 Mitsubishi Electric Corporation Fehlerkorrigierender Dekodierer
US9336342B2 (en) * 2011-09-23 2016-05-10 Synopsys, Inc. Memory hard macro partition optimization for testing embedded memories
US9057764B2 (en) * 2011-10-27 2015-06-16 International Business Machines Corporation Detection of unchecked signals in circuit design verification
US8707133B2 (en) 2011-12-05 2014-04-22 Lsi Corporation Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port
JP5867264B2 (ja) * 2012-04-24 2016-02-24 ソニー株式会社 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
KR20130136341A (ko) * 2012-06-04 2013-12-12 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
JP5962258B2 (ja) * 2012-06-29 2016-08-03 富士通株式会社 データ変換方法、データ変換装置およびデータ変換プログラム
US8862953B2 (en) * 2013-01-04 2014-10-14 International Business Machines Corporation Memory testing with selective use of an error correction code decoder
US9690650B2 (en) * 2013-03-11 2017-06-27 Macronix International Co., Ltd. Storage scheme for built-in ECC operations
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
US9348697B2 (en) * 2013-09-10 2016-05-24 Kabushiki Kaisha Toshiba Magnetic random access memory
KR102127455B1 (ko) * 2013-12-11 2020-06-26 삼성전자주식회사 반도체 메모리 장치 및 그것의 테스트 방법
CN105023616A (zh) * 2014-04-30 2015-11-04 深圳市中兴微电子技术有限公司 一种基于汉明码存取数据的方法及集成随机存取存储器
US9495242B2 (en) * 2014-07-30 2016-11-15 International Business Machines Corporation Adaptive error correction in a memory system
US9704563B2 (en) * 2014-12-08 2017-07-11 Intel Corporation Apparatus, method and system for performing successive writes to a bank of a dynamic random access memory
TW202236267A (zh) 2015-05-28 2022-09-16 日商鎧俠股份有限公司 半導體裝置
US9778983B2 (en) 2015-08-06 2017-10-03 Nxp B.V. Integrated circuit device and method for reducing SRAM leakage
US10223197B2 (en) 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US10437666B2 (en) 2015-08-06 2019-10-08 Nxp B.V. Integrated circuit device and method for reading data from an SRAM memory
US9639418B2 (en) * 2015-09-01 2017-05-02 International Business Machines Corporation Parity protection of a register
US9800271B2 (en) 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR20170045806A (ko) 2015-10-20 2017-04-28 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
US10210041B2 (en) * 2015-11-05 2019-02-19 SK Hynix Inc. Systems and methods for low latency copy operations in non-volatile memory
US9904595B1 (en) * 2016-08-23 2018-02-27 Texas Instruments Incorporated Error correction hardware with fault detection
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
JP6880795B2 (ja) * 2017-02-08 2021-06-02 オムロン株式会社 制御装置およびその制御方法
CN107195329B (zh) * 2017-05-17 2024-04-02 西安紫光国芯半导体有限公司 在读操作时纠正dram中存储阵列的错误的方法以及dram
DE102017212181A1 (de) * 2017-07-17 2019-01-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen von Prüfsummen, Pufferspeicher und Prozessor
US10460822B2 (en) * 2017-08-23 2019-10-29 Arm Limited Memory with a controllable I/O functional unit
US10908995B2 (en) * 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system
JP2019079377A (ja) * 2017-10-26 2019-05-23 東芝メモリ株式会社 半導体記憶装置
US10725862B2 (en) * 2018-07-06 2020-07-28 Macronix International Co., Ltd. Data recovery method to error correction code in memory
US10802974B2 (en) * 2018-10-15 2020-10-13 Texas Instruments Incorporated Virtual network pre-arbitration for deadlock avoidance and enhanced performance
US10977121B2 (en) 2018-10-17 2021-04-13 Macronix International Co., Ltd. Fast page continuous read
US11048649B2 (en) 2018-10-17 2021-06-29 Macronix International Co., Ltd. Non-sequential page continuous read
JP7016332B2 (ja) 2019-07-05 2022-02-04 華邦電子股▲ふん▼有限公司 半導体メモリ装置
US11557365B2 (en) * 2019-08-16 2023-01-17 Nxp B.V. Combined ECC and transparent memory test for memory fault detection
JP2021047690A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
US10957384B1 (en) 2019-09-24 2021-03-23 Macronix International Co., Ltd. Page buffer structure and fast continuous read
US11056160B2 (en) 2019-10-22 2021-07-06 Nxp Usa, Inc. Non-volatile memory with selectable hard write
US11249913B2 (en) 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands
US11302366B2 (en) 2020-03-06 2022-04-12 Macronix International Co., Ltd. Method and system for enhanced read performance in low pin count interface
KR20210122455A (ko) * 2020-04-01 2021-10-12 삼성전자주식회사 반도체 메모리 장치
US11366715B2 (en) * 2020-09-22 2022-06-21 Texas Instruments Incorporated Infrastructure integrity checking
US11429481B1 (en) * 2021-02-17 2022-08-30 Xilinx, Inc. Restoring memory data integrity
US11379306B1 (en) * 2021-07-29 2022-07-05 Bae Systems Information And Electronic System Integration Inc. Method for radiation hardening synchronous DRAM

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576982A (en) * 1968-12-16 1971-05-04 Ibm Error tolerant read-only storage system
US3814921A (en) * 1972-11-15 1974-06-04 Honeywell Inf Systems Apparatus and method for a memory partial-write of error correcting encoded data
US3969706A (en) * 1974-10-08 1976-07-13 Mostek Corporation Dynamic random access memory misfet integrated circuit
SE387764B (sv) * 1975-09-16 1976-09-13 Ericsson Telefon Ab L M Sett att upptecka fel i en minnesanordning och kategoritillempningslogik for utforande av settet
US4037091A (en) * 1976-04-05 1977-07-19 Bell Telephone Laboratories, Incorporated Error correction circuit utilizing multiple parity bits
US4045783A (en) * 1976-04-12 1977-08-30 Standard Microsystems Corporation Mos one transistor cell ram having divided and balanced bit lines, coupled by regenerative flip-flop sense amplifiers, and balanced access circuitry
JPS5555499A (en) 1978-10-16 1980-04-23 Nec Corp Memory control unit
JPS5647988A (en) * 1979-09-20 1981-04-30 Nec Corp Semiconductor memory device
US4317201A (en) * 1980-04-01 1982-02-23 Honeywell, Inc. Error detecting and correcting RAM assembly
US4380812A (en) * 1980-04-25 1983-04-19 Data General Corporation Refresh and error detection and correction technique for a data processing system
US4345328A (en) * 1980-06-30 1982-08-17 Sperry Corporation ECC Check bit generation using through checking parity bits
US5177743A (en) * 1982-02-15 1993-01-05 Hitachi, Ltd. Semiconductor memory
US4479214A (en) * 1982-06-16 1984-10-23 International Business Machines Corporation System for updating error map of fault tolerant memory
US4561095A (en) * 1982-07-19 1985-12-24 Fairchild Camera & Instrument Corporation High-speed error correcting random access memory system
JPS60219700A (ja) * 1984-04-13 1985-11-02 Sharp Corp 誤り訂正機能内蔵半導体集積回路
US4604751A (en) * 1984-06-29 1986-08-05 International Business Machines Corporation Error logging memory system for avoiding miscorrection of triple errors
JPS6134793A (ja) * 1984-07-27 1986-02-19 Hitachi Ltd ダイナミツクメモリ装置における診断及びエラ−訂正装置
US4726021A (en) * 1985-04-17 1988-02-16 Hitachi, Ltd. Semiconductor memory having error correcting means
US4933904A (en) * 1985-11-29 1990-06-12 General Electric Company Dense EPROM having serially coupled floating gate transistors
US4794597A (en) * 1986-03-28 1988-12-27 Mitsubishi Denki Kabushiki Kaisha Memory device equipped with a RAS circuit
US4768197A (en) * 1986-09-15 1988-08-30 Amdahl Corporation Cache error code update
JPH07118193B2 (ja) * 1986-09-18 1995-12-18 富士通株式会社 半導体記憶装置
US4740968A (en) * 1986-10-27 1988-04-26 International Business Machines Corporation ECC circuit failure detector/quick word verifier
US4939694A (en) * 1986-11-03 1990-07-03 Hewlett-Packard Company Defect tolerant self-testing self-repairing memory system
US4782487A (en) * 1987-05-15 1988-11-01 Digital Equipment Corporation Memory test method and apparatus
US4884271A (en) * 1987-12-28 1989-11-28 International Business Machines Corporation Error checking and correcting for read-modified-write operations
JPH01183000A (ja) * 1988-01-14 1989-07-20 Mitsubishi Electric Corp 誤り訂正回路を有する半導体メモリ装置
US5008886A (en) * 1989-01-27 1991-04-16 Digital Equipment Corporation Read-modify-write operation
US5235693A (en) * 1989-01-27 1993-08-10 Digital Equipment Corporation Method and apparatus for reducing buffer storage in a read-modify-write operation
JPH0664918B2 (ja) * 1989-05-25 1994-08-22 ローム株式会社 自己訂正機能を有する半導体記憶装置
JP2617026B2 (ja) * 1989-12-22 1997-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 障害余裕性メモリ・システム
US5307356A (en) * 1990-04-16 1994-04-26 International Business Machines Corporation Interlocked on-chip ECC system
JP3215105B2 (ja) * 1990-08-24 2001-10-02 富士通株式会社 メモリアクセス装置
US5233616A (en) * 1990-10-01 1993-08-03 Digital Equipment Corporation Write-back cache with ECC protection
US5241503A (en) * 1991-02-25 1993-08-31 Motorola, Inc. Dynamic random access memory with improved page-mode performance and method therefor having isolator between memory cells and sense amplifiers
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5289584A (en) * 1991-06-21 1994-02-22 Compaq Computer Corp. Memory system with FIFO data input
WO1993004432A2 (en) * 1991-08-16 1993-03-04 Multichip Technology High-performance dynamic memory system
US5369651A (en) * 1992-06-30 1994-11-29 Intel Corporation Multiplexed byte enable bus for partial word writes to ECC protected memory
US5519839A (en) * 1992-10-02 1996-05-21 Compaq Computer Corp. Double buffering operations between the memory bus and the expansion bus of a computer system
US5430742A (en) * 1992-10-14 1995-07-04 Ast Research, Inc. Memory controller with ECC and data streaming control
US5519847A (en) * 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
US5402389A (en) * 1994-03-08 1995-03-28 Motorola, Inc. Synchronous memory having parallel output data paths
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US5535226A (en) * 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US5592435A (en) * 1994-06-03 1997-01-07 Intel Corporation Pipelined read architecture for memory
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US5502835A (en) * 1994-08-31 1996-03-26 Motorola, Inc. Method for synchronously accessing memory
JP3013714B2 (ja) * 1994-09-28 2000-02-28 日本電気株式会社 半導体記憶装置
TW358907B (en) * 1994-11-22 1999-05-21 Monolithic System Tech Inc A computer system and a method of using a DRAM array as a next level cache memory
US5513148A (en) * 1994-12-01 1996-04-30 Micron Technology Inc. Synchronous NAND DRAM architecture
US5533194A (en) * 1994-12-28 1996-07-02 International Business Machines Corporation Hardware-assisted high speed memory test apparatus and method
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5687353A (en) * 1995-03-03 1997-11-11 Hal Computer Systems, Inc. Merging data using a merge code from a look-up table and performing ECC generation on the merged data
JP3272903B2 (ja) * 1995-03-16 2002-04-08 株式会社東芝 誤り訂正検出回路と半導体記憶装置
US5671187A (en) * 1995-06-07 1997-09-23 Texas Instruments Incorporated Storage circuit
US5615169A (en) * 1995-08-31 1997-03-25 Monolithic System Technology, Inc. Method and structure for controlling internal operations of a DRAM array
JP3106947B2 (ja) * 1996-02-28 2000-11-06 日本電気株式会社 不揮発性半導体記憶装置
JPH10177800A (ja) * 1996-10-21 1998-06-30 Texas Instr Inc <Ti> エラー訂正ダイナミック・メモリ及びそのエラー訂正方法
US5708624A (en) * 1996-11-27 1998-01-13 Monolithic System Technology, Inc. Method and structure for controlling internal operations of a DRAM array
US5961655A (en) * 1996-12-05 1999-10-05 Hewlett-Packard Company Opportunistic use of pre-corrected data to improve processor performance
US6052011A (en) * 1997-11-10 2000-04-18 Tritech Microelectronics, Ltd. Fractional period delay circuit
JP3566051B2 (ja) * 1997-11-14 2004-09-15 株式会社ルネサステクノロジ 位相の異なる複数のクロック信号を出力するクロック信号発生回路およびそれを用いたクロック位相制御回路
JP3199021B2 (ja) * 1998-03-19 2001-08-13 日本電気株式会社 半導体メモリ装置、該半導体メモリ装置の検査方法及び使用方法
US6078547A (en) * 1998-05-12 2000-06-20 Mosys, Inc. Method and structure for controlling operation of a DRAM array
US20020029365A1 (en) * 1998-12-17 2002-03-07 Yoshimichi Sato Information processing apparatus
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6799287B1 (en) * 2000-05-01 2004-09-28 Hewlett-Packard Development Company, L.P. Method and apparatus for verifying error correcting codes
JP4810051B2 (ja) * 2000-06-07 2011-11-09 コネクサント システムズ,アイエヌシー. 電力線通信ネットワークシステムにおけるメディアアクセス制御用の方法及び装置
JP2002056671A (ja) * 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
US20030120858A1 (en) * 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
US6563745B1 (en) * 2001-12-14 2003-05-13 Matrix Semiconductor, Inc. Memory device and method for dynamic bit inversion
FR2840445B1 (fr) * 2002-06-03 2004-09-10 St Microelectronics Sa Circuit memoire comportant un code correcteur d'erreur
US7124260B2 (en) * 2002-08-26 2006-10-17 Micron Technology, Inc. Modified persistent auto precharge command protocol system and method for memory devices
US7206891B2 (en) * 2002-09-26 2007-04-17 Lsi Logic Corporation Multi-port memory controller having independent ECC encoders
US6781898B2 (en) * 2002-10-30 2004-08-24 Broadcom Corporation Self-repairing built-in self test for linked list memories
US7099997B2 (en) * 2003-02-27 2006-08-29 International Business Machines Corporation Read-modify-write avoidance using a boundary word storage mechanism
JP4278414B2 (ja) * 2003-03-18 2009-06-17 株式会社ルネサステクノロジ 半導体記憶装置
US7099216B2 (en) * 2003-09-05 2006-08-29 International Business Machines Corporation Single cycle read/write/writeback pipeline, full-wordline I/O DRAM architecture with enhanced write and single ended sensing
FR2864321B1 (fr) * 2003-12-23 2007-01-19 St Microelectronics Sa Memoire dynamique a acces aleatoire ou dram comportant au moins deux registres tampons et procede de commande d'une telle memoire
US7116602B2 (en) * 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7483289B2 (en) * 2004-08-02 2009-01-27 Stmicroelectronics Pvt. Ltd. Synchronous SRAM capable of faster read-modify-write operation
US7257762B2 (en) * 2004-10-07 2007-08-14 Lsi Corporation Memory interface with write buffer and encoder
JP2006190425A (ja) * 2005-01-07 2006-07-20 Nec Electronics Corp 半導体記憶装置
US7451380B2 (en) * 2005-03-03 2008-11-11 International Business Machines Corporation Method for implementing enhanced vertical ECC storage in a dynamic random access memory
JP4703220B2 (ja) * 2005-03-04 2011-06-15 株式会社東芝 半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021205172A1 (de) 2021-05-20 2022-11-24 Robert Bosch Gesellschaft mit beschränkter Haftung Speichervorrichtung und Verfahren zur Überprüfung von Speicherinhalten

Also Published As

Publication number Publication date
US7353438B2 (en) 2008-04-01
TW580709B (en) 2004-03-21
US20030093744A1 (en) 2003-05-15
US20050044467A1 (en) 2005-02-24
US7051264B2 (en) 2006-05-23
WO2003042826A3 (en) 2004-04-22
EP1449082A2 (de) 2004-08-25
DE60210658D1 (de) 2006-05-24
EP1449082B1 (de) 2006-04-12
TW200300258A (en) 2003-05-16
WO2003042826A2 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
DE60210658T2 (de) Fehlerkorrigierende speicher und verfahren zu seiner nutzung
EP0418457B1 (de) Pipelinefehlerprüfung und Korrektur für Cache-Speicher
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE102020115736A1 (de) Halbleiterspeichervorrichtung und Verfahren zum Betreiben der Halbleiterspeichervorrichtungen
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
US9996471B2 (en) Cache with compressed data and tag
US5172379A (en) High performance memory system
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
US7603528B2 (en) Memory device verification of multiple write operations
US7620875B1 (en) Error correction code memory system with a small footprint and byte write operation
US8245087B2 (en) Multi-bit memory error management
DE102018122491A1 (de) Halbleiterspeichervorrichtung und verfahren zum betreiben derselben
US6023746A (en) Dual associative-cache directories allowing simultaneous read operation using two buses with multiplexors, address tags, memory block control signals, single clock cycle operation and error correction
DE102013111710A1 (de) Speichermodul, Speichersystem mit demselben und Verfahren zum Auslesen davon und Schreiben dort hinein
JPH10177800A (ja) エラー訂正ダイナミック・メモリ及びそのエラー訂正方法
US7257762B2 (en) Memory interface with write buffer and encoder
US8122317B1 (en) Two-dimensional parity technique to facilitate error detection and correction in memory arrays
JPH081617B2 (ja) メモリフォルトマッピング装置、検出エラーのマッピング方法及びマルチパスメモリフォルトマッピング装置
DE102006025108A1 (de) Direktzugriffsspeicher mit ECC
US5200963A (en) Self-checking on-line testable static ram
DE102020118505A1 (de) Speichervorrichtungen mit darin enthaltenen variablen reparatureinheiten und verfahren zu deren reparatur
US5450422A (en) Method and structure for providing error correction code for each byte on SIMM&#39;S
US6799291B1 (en) Method and system for detecting a hard failure in a memory array
DE112007003512T5 (de) Speicherbauelement mit Fehlerkorrekturfähigkeit und effizienter Teilwort-Schreiboperation
US5886930A (en) Bit interleaving in a memory which uses multi-bit DRAMs

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1449082

Country of ref document: EP

Representative=s name: WILHELMS, KILIAN & PARTNER, 81541 MUENCHEN, DE