专利摘要:
Ein Speichersystem weist folgende Merkmale auf: eine Mehrzahl von Speicherspeicherungselementen, ein Adreßersetzungsmodul, das mit der Mehrzahl von Speicherspeicherungselementen gekoppelt ist und wirksam ist, um erste Adressen von ersten vorbestimmten Speicherplätzen in zweite Adressen von zweiten vorbestimmten Speicherplätzen auszubilden; und eine kombinatorische ECC-Logikschaltung, die mit der Mehrzahl von Speicherspeicherungselementen gekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahl von Speicherspeicherungselementen gelesen werden, in weniger als drei Taktzyklen Fehler zu erfassen und zu korrigieren.
公开号:DE102004002219A1
申请号:DE200410002219
申请日:2004-01-15
公开日:2004-10-07
发明作者:Kenneth J. Eldredge;Richard L. Hilton
申请人:Hewlett Packard Development Co LP;
IPC主号:G06F12-16
专利说明:
[0001] Die Erfindung bezieht sich auf einenDirektzugriffsspeicher füreine Datenspeicherung. Im einzelnen bezieht sich diese Erfindungauf ein unterstütztesSpeichersystem.
[0002] Auf dem Gebiet der Speichertechnologiemacht man Riesenschritte bei der Erhöhung der Geschwindigkeit, derErhöhungder Kapazitätund der Erhöhungder Fehlertoleranz. Geschwindigkeit und eine höhere Kapazität bei Speichervorrichtungenwerden hauptsächlichdadurch erzielt, daß dieSpeicherelemente oder -zellen kleiner und dichter bepackt gestaltetwerden. Da die Speicherelementgröße auchproportional zu den Kosten pro Bit ist, besteht das Ziel von Speicherherstellerndarin, die Speicherelementgröße so starkwie praktizierbar zu verringern. Durch Verringern der Zellengröße werdendiese Speichervorrichtungen zur Verwendung als eingebettete Speicherbei elektronischen Verbraucherprodukten und Spielzeugen sowie beiComputern und anderen Vorrichtungen in bezug auf Kosten und Kapazität wettbewerbsfähig.
[0003] Ein Verringern der Größe integrierterSchaltungen und Speichervorrichtungen ist keine einfache und geradlinigeAufgabe. Die Verringerung der Größe und dieErhöhungder Dichte führtoft zu Defekten in den Speicherelementen, die auf nicht-perfektionierteHerstellungsprozesse oder andere Fehler zurückgehen. Manche die Ausbeuteverringernde Defekte könnenbeispielsweise Haftfehler, Übergangsfehler,Kopplungsfehler und zeichenabhängigeAusfälleumfassen.
[0004] Es ist die Aufgabe der vorliegendenErfindung, Systeme, Vorrichtungen, Speicher und Verfahren zu schaffen,die eine effektivere Datenspeicherung ermöglichen.
[0005] Diese Aufgabe wird durch ein Speichersystemgemäß Anspruch1, eine Vorrichtung gemäß Anspruch 10,Verfahren gemäß Anspruch18 oder 25 sowie durch einen Speicher gemäß Anspruch 22 gelöst.
[0006] Gemäß einem Ausführungsbeispielder vorliegenden Erfindung weist ein Speichersystem folgende Merkmaleauf: eine Mehrzahl von Speicherspeicherungselementen, ein mit derMehrzahl von Speicherspeicherungselementen gekoppeltes Adreßersetzungsmodulund eine kombinatorische ECC-Logikschaltung (ECC = error correctingcode, Fehlerkorrekturcode), die mit der Mehrzahl von Speicherspeicherungselementengekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahlvon Speicherspeicherungselementen gelesen werden, in weniger alsdrei Taktzyklen Fehler zu erfassen und zu korrigieren.
[0007] Gemäß einem weiteren Ausführungsbeispielder vorliegenden Erfindung weist eine Vorrichtung folgende Merkmaleauf: einen Prozessor, eine Mehrzahl von Speicherspeicherungselementen,die wirksam sind, um ansprechend auf Anweisungen von dem ProzessorDaten zu speichern, ein Adreßersetzungsmodul,das mit der Mehrzahl von Speicherspeicherungselementen und dem Prozessorgekoppelt ist und wirksam ist, um erste Adressen von ersten vorbestimmtenSpeicherplätzen,die von dem Prozessor empfangen werden, in zweite Adressen von zweitenvorbestimmten Speicherplätzenabzubilden, und eine kombinatorische ECC-Logikschaltung, die mitder Mehrzahl von Speicherspeicherungselementen und dem Prozessorgekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahlvon Speicherspeicherungselementen gelesen werden, in weniger alsdrei Taktzyklen Fehler zu erfassen und zu korrigieren, bevor dieDaten an den Prozessor geliefert werden.
[0008] Gemäß einem noch weiteren Ausführungsbeispielder vorliegenden Erfindung weist ein Verfahren folgende Schritteauf: Empfangen von Daten und zumindest einer Adresse, um die Datenin einer Mehrzahl von Direktzugriffsspeicherspeicherungselementenzu speichern, Bestimmen, ob die zumindest eine empfangene Adresseauf einen defekten Speicherplatz zeigt, Abbilden der empfangenenAdresse in zumindest eine korrigierte Adresse ansprechend darauf,daß diezumindest eine Adresse auf einen defekten Speicherplatz zeigt, undErzeugen eines ECC-Codeworts, unter Verwendung eines kombinatorischenECC-Logikcodierers, aus den empfangenen Daten in weniger als dreiTaktzyklen, und Speichern des ECC-Codeworts in die Mehrzahl von Direktzugriffsspeicherspeicherungselementen,und Lesen der Mehrzahl von Direktzugriffsspeicherspeicherungselementenund Decodieren der ECC-Codewörterin denselben unter Verwendung eines kombinatorischen ECC-Logikdecodierers,der wirksam ist, um Fehler in denselben zu erfassen und zu korrigieren.
[0009] Gemäß einem weiteren Ausführungsbeispielder vorliegenden Erfindung weist ein Speicher folgende Merkmaleauf: eine Mehrzahl von Speicherspeicherungselementen, einen kombinatorischenECC-Logikcodierer, der mit der Mehrzahl von Speicherspeicherungselementengekoppelt ist und wirksam ist, um in weniger als drei Taktzyklenein ECC-Codewort auf der Basis von Daten zu erzeugen, die in derMehrzahl von Speicherspeicherungselementen gespeichert werden sollen.Der Speicher umfaßtferner einen kombinatorischen ECC-Logikdecodierer, der mit der Mehrzahlvon Speicherspeicherungselementen gekoppelt ist und wirksam ist,um ein aus der Mehrzahl von Speicherspeicherungselementen gelesenesECC-Codewort zu empfangen und das ECC-Codewort zu decodieren, umin weniger als drei Taktzyklen zumindest einen Fehler in den Daten zukorrigieren.
[0010] Gemäß einem weiteren Ausführungsbeispielder vorliegenden Erfindung weist ein ECC-Verfahren folgende Schritteauf: ein Codierungsverfahren, das in weniger als drei Taktzyklenabgeschlossen ist, wobei das Codierungsverfahren folgende Schritteaufweist: Empfangen eines Datenblocks einer vorbestimmten Anzahl vonBits, Erzeugen einer Mehrzahl von ECC-Bits auf der Basis des Datenblocks unterVerwendung einer kombinatorischen Logik, und Anhängen der Mehrzahl von ECC- Bits an den Datenblockund Erzeugen eines ECC-Codeworts aus denselben. Das ECC-Verfahrenumfaßtferner ein Decodierungsverfahren, das in weniger als drei Taktzyklenabgeschlossen ist und folgende Schritte aufweist: Empfangen einesECC-Codeworts und Decodieren des ECC-Codeworts und Korrigieren vonFehlern, falls vorhanden, unter Verwendung einer kombinatorischenLogik und Erzeugen des Datenblocks einer vorbestimmten Anzahl vonBits.
[0011] Bevorzugte Ausführungsbeispiele der vorliegendenErfindung werden nachfolgend Bezug nehmend auf die beiliegendenZeichnungen nähererläutert.Es zeigen:
[0012] 1 einvereinfachtes Blockdiagramm einer Vorrichtung 10, die einunterstütztesSpeichersystem 12 gemäß einemAusführungsbeispielder vorliegenden Erfindung aufweist;
[0013] 2 einvereinfachtes Blockdiagramm eines Ausführungsbeispiels eines unterstützten Speichersystems 12 gemäß der vorliegendenErfindung;
[0014] 3 einausführlicheresBlockdiagramm eines Ausführungsbeispielsdes unterstütztenSpeichersystems 12 gemäß der vorliegendenErfindung;
[0015] 4 einLogikdiagramm eines Ausführungsbeispielseines ECC-Codierers gemäß der vorliegenden Erfindung;und
[0016] 5 einLogikdiagramm eines Ausführungsbeispielseines ECC-Decodierers gemäß den Lehrender vorliegenden Erfindung.
[0017] 1 istein vereinfachtes Blockdiagramm einer Vorrichtung 10, dieein unterstütztesSpeichersystem 12 gemäß einemAusführungsbeispielder vorliegenden Erfindung aufweist. Die Vorrichtung 10 kannein beliebiger Herstellungs artikel sein, der einen Prozessor 14 zumSteuern eines oder mehrerer Aspekte seiner Funktion aufweist. Beispielsweisekann die Vorrichtung 10 in einer beliebigen ihrer Implementierungenein Computer sein, eine beliebige Vorrichtung, die Audio-, Video-und andere Arten von Multimedia-Daten erfaßt, verarbeitet, anzeigt und/odersendet, Telekommunikationsvorrichtungen, persönliche digitale Assistentenusw. sein. Das unterstützteSpeichersystem 12 ist auf kommunikative Weise mit dem Prozessor 14 gekoppeltund weist einen Speicher 16 und ein Schnittstellenmodul 18 auf.Der Speicher 16 weist eine Mehrzahl von Speicherzellen oderSpeicherelementen auf, von denen jede bzw. jedes in der Lage ist,zumindest ein Datenbit zu speichern. Der Speicher 16 kannein oder eine Mehrzahl von Speicherchips umfassen. Der Speicher 16 kanneine beliebige Speichertechnologie umfassen, z.B. einen beliebigenDirektzugriffsspeicher (RAM), einschließlich eines dynamischen RAM(DRAM), eines EDO-RAM (extended data out RAM), eines Video-RAM (VRAM),eines statischen RAM (SRAM), eines synchrone DRAM (SDRAM) und einesmagnetoresistiven oder magnetischen RAM (MRAM). MRAMs sind als Technologievon nächstendurchschlagenden nichtflüchtigenSpeichern von Interesse, die Flash-Speicher und EEPROMs ersetzensollen, wo ein schnelles Schreiben oder eine hohe Schreibbeanspruchungsdauererforderlich sind, und sind längerfristigals Mehrzweck-Lese-/Schreib-RAM von Interesse. Während Hersteller MRAM-Entwürfe undHerstellungsprozesse perfektionieren, um die Größe zu verringern und die Fehlerratenund Defekte zu vermindern, ist es wichtig, ein unterstütztes Speichersystemzu schaffen, das einen nicht-perfekten Speicher befähigt, praktischwie eine perfekte oder nahezu perfekte Vorrichtung zu fungieren.Obwohl die vorliegende Erfindung hierin hauptsächlich im Kontext von MRAMbeschrieben ist, ist die Erfindung nicht hierauf beschränkt undauch auf andere Speicherspeicherungstechnologien anwendbar.
[0018] Die Firma Hewlett-Packard, die Anmelderinder vorliegenden Erfindung, ist außerdem die Anmelderin mehrereranderer Pa tentschriften, die auf MRAM-Technologie bezogen sind,einschließlich:US-Patentschrift Nr. 6,188,615 mit dem Titel MRAM DEVICE INCLUDINGDIGITAL SENSE AMPLIFIERS, eingereicht am 29. Oktober 1999 und erteiltam 13. Februar 2001; US-PatentschriftNr. 6,163,477 mit dem Titel MRAM DEVICE USING MAGNETIC FIELD BIASTO IMPROVE REPRODUCIBILITY OF MEMORY CELL SWITCHING, eingereichtam 6. August 1999 und erteilt am 19. Dezember 2000; US-PatentschriftNr. 6,128,239 mit dem Titel MRAM DEVICE INCLUDING ANALOG SENSE AMPLIFIERS,eingereicht am 29. Oktober 1999 und erteilt am 3. Oktober 2000;US-Patentschrift Nr. 6,111,783 mit dem Titel MRAM DEVICE INCLUDINGWRITE CIRCUIT FOR SUPPLYING WORD AND BIT LINE CURRENT HAVING UNEQUALMAGNITUDES, eingereicht am 16. Juni 1999 und erteilt am 29. August2000; und US-PatentschriftNr. 5,982,660 mit dem Titel MAGNETIC MEMORY CELL WITH OFF-AXIS REFERENCELAYER ORIENTATION FOR IMPROVED RESPONSE, eingereicht am 27. August1998 und erteilt am 9. November 1999. Diese Patentschriften sinddurch Bezugnahme in das vorliegende Dokument aufgenommen.
[0019] Ein Schnittstellenmodul 18 dientals Schnittstelle zwischen dem Prozessor 14 und dem Speicher 16. Für eine Vorrichtung 10,beispielsweise einen Notebook-Computer oder einen Personal-Computer,kann das Schnittstellenmodul 18 eine EIDE (enhanced integrateddrive electronics, verbesserte Integrierter-Antrieb-Elektronik),ESDI (enhanced small device interface, verbesserte Kleinvorrichtungsschnittstelle),SCSI (small computer system interface, Kleincomputer-Schnittstelle) odereine andere geeignete Schnittstelle umfassen. Für einen Server kann das Schnittstellenmodul 18 einenFaserkanal oder eine SCSI-Schnittstelle umfassen. Für eine Vorrichtung 10,z.B. eine Digitalkamera, kann das Schnittstellenmodul 18 eineKameraschnittstelle umfassen, und der Speicher 16 kannfür einekurz- oder langfristige Speicherung von digitalen Bildern in derDigitalkamera verwendet werden. Bei anderen Computersystemen kanndas Schnittstellenmodul 18 ein Speichersteuerungsbus sein,der den Prozessor 14 befähigt, aus dem Speicher 16 zulesen und in denselben zu schreiben. Die Implementierung des Schnittstellenmoduls 18 hängt vonder Funktionalitätdes Prozessors 14 und der Vorrichtung 10 ab, denProzessor 14 zu befähigen,effektiv mit dem Speicher 16 zu kommunizieren und Datenzu lesen und zu schreiben.
[0020] Das unterstützte Speichersystem 12 weistferner ein Fehlerkorrekturmodul 20 auf, das wirksam ist,um vorübergehendeund dauerhafte Fehler, die in dem Speicher 16 auftreten,zu erfassen und zu korrigieren. Beispiele einer Fehlererfassungund -korrektur umfassen Adreßersetzungsschemataund Fehlerkorrekturcode-Schemata (ECC-Schemata). ECC ist eine Technik,die verwendet wird, um einen Code auf der Basis der in einen Speichergeschriebenen Daten zu berechnen, der anschließend verwendet wird, um dieGenauigkeit der Daten zu prüfen,wenn sie aus dem Speicher gelesen werden. ECC ist eine Form einerParitätserfassung, beinhaltetjedoch komplexe Berechnungen, um den ECC-Code zu bestimmen. Mitder Hilfe des Fehlerkorrekturmoduls 20 ist das unterstützte Speichersystem 12 inder Lage, in dem Speicher 16 eine unvollkommene Speichertechnologiemit einem höherentolerierbaren Fehlergrad zu verwenden. Um die neue Speichertechnologiezu nutzen, verwendet das unterstützteSpeichersystem 12 ein Fehlerkorrekturmodul 20, um Fehler,die in dem Speicher 16 auftreten können, zu erkennen und zu korrigieren.
[0021] 2 istein ausführlicheresBlockdiagramm eines Ausführungsbeispielsdes unterstütztenSpeichersystems 12 gemäß der vorliegendenErfindung. Mit dem Schnittstellenmodul 18 ist ein sekundäres Datenspeichermoduloder ein Puffer/Cachespeicher 22 gekoppelt, das bzw. derwirksam ist, um Lese-/Schreibdaten vorübergehend zu speichern. DerPuffer/Cachespeicher 22 ist wirksam, um den aktuellen Datenblockzum Zweck eines schnellen Zugriffs durch den Prozessor 14 zuspeichern. Vorzugsweise fungiert der Puffer/Cachespeicher 22 alsCachespeicher, um in Erwartung von Prozessorbefehlen mehr als einenDatenblock, auf den entweder als letztes zugegriffen wurde oderfür denein Zugriff erwartet wird, zu speichern. In seiner einfachsten Formkann der Puffer/Cachespeicher 22 den aktuellen aktivenDatenblock speichern, währender den nächstenDatenblock in Erwartung eines sequentiellen Zugriffs durch den Prozessor 14 inden Adreßraumlädt.
[0022] Schreibdaten werden an einen ECC-Codierer 24 kommuniziert,der mit dem Puffer/Cachespeicher 22 gekoppelt ist und eineMehrzahl von ECC-Bits erzeugt, die an die Datenbits angehängt werdensollen. Einzelheiten des ECC-Codierers 24 sind in 4 gezeigt und nachstehendausführlichbeschrieben. Eine zwischen den ECC-Codierer 24 und Speicherelemente 28 gekoppelteSchreibschaltung 26 fungiert, um die Daten und ECC-Bitsin Speicherplätzezu schreiben, die durch die Schreibadresse festgelegt werden. DieSchreibschaltung 26 kann Schreibwortleitungen und andereSchaltungselemente und Konfigurationen (nicht gezeigt) umfassen,die von der Speichertechnologie abhängen, die zum Implementierender Speicherelemente 28 verwendet wird. Die Schreibadressekann durch ein Adreßersetzungsmodul 30 modifiziertwerden, das arbeitet, um die logische Adresse eines Blocks von defektenSpeicherzellen in eine physische Adresse eines anderen Blocks vonSpeicherzellen, in denen sich die Daten in der Tat befinden, abzubilden.Bei weiteren Ausführungsbeispielenkönnenalle Speicheradressen in neue Adressen abgebildet werden, um alleAdressen in der Tat um die Anzahl von defekten Speicherplätzen zuverschieben. Einzelheiten von Ausführungsbeispielen der Adreßersetzungstechnologiefinden sich in der ebenfalls übertragenenUS-Patentanmeldung Nr. 10/044,542, die am 11. Januar 2002 eingereichtwurde und den Titel Self-Healing MRAM trägt, und in der US-Patentanmeldung Nr.09/766,354, die am 19. Januar 2001 eingereicht wurde undden Titel Self-Healing Memory trägt,wobei beide Patentanmeldungen durch Bezugnahme in das vorliegendeDokument aufgenommen sind. Das ECC-Schema wird optimalerweise dazuverwendet, währenddes Betriebs (on-the-fly)das Vorliegen einiger Datenfehlerbits zu erfassen und zu korrigieren,und die Adreßersetzungwird optimalerweise verwendet, um dauerhafte Fehler oder Defektein größeren Chucksdes Speichers zu korrigieren. Es ist vorzuziehen, beide diese Schemataund vielleicht andere geeignete Techniken zu kombinieren, um vorübergehendeund dauerhafte Fehler in Speichervorrichtungen zu maskieren.
[0023] Eine Erfassungsschaltung 32 istmit den Speicherelementen 28 gekoppelt, um den logischenZustand derselben zu erfassen und dadurch gespeicherte Daten zuerhalten, um sie dem Prozessor 14 bereitzustellen. DieErfassungsschaltung 32 liest die gespeicherten Daten undliefert die Daten an einen ECC-Decodierer 34. Der ECC-Decodierer 34 istwirksam, um einen Fehler zu erfassen, falls er existiert, und diekorrigierten Daten an den Puffer/Cachespeicher 22 zu liefern.Einzelheiten des ECC-Decodierers 34 sind nachfolgend unterBezugnahme auf 5 dargelegt.
[0024] Bei dem unterstützten Speichersystem 12 werdendie Daten in einer Anzahl von Bits gelesen und geschrieben, diepotentiell größer istals die Speicherbusbreite zwischen dem Prozessor 14 unddem Hostschnittstellenmodul 18. Dies ermöglicht eineneffizienten ECC-Schutz und eine verbesserte Leistungsfähigkeitfür sequentielleZugriffe durch ein paralleles Lesen mehrerer Bits. Das Adreßersetzungsmodul 30 verschiebtdie durch den Prozessor angeforderte Speicheradresse gemäß einerFehlertabelle, die bekannte Fehlerinformationen und Adreßabbildungsinformationenenthält,zu einer internen physischen Speicheradresse. Das ECC-Codieren und-Decodieren fügteine weitere Datenfehlerkorrektur während des Betriebs (on-the-fly)hinzu. Der ECC-Codierer 24 und der ECC-Decodierer 34 sindvorzugsweise durch eine sehr „flache" und somit schnellekombinatorische Logik implementiert, die Codier- und Decodiervorgänge in wenigerals Dreitaktzyklen, vorzugsweise einem Taktzyklus, abschließt. Diessteht in krassem Gegensatz zu derzeitigen Implementierungen konventionellerZustandsmaschinen, die viele Taktzyklen benötigen, um lange Berechnungendurchzuführen,um die richtigen ECC-Codes zu erzeugen und die ECC-Codes zu decodieren.
[0025] 3 istein ausführlicheresBlockdiagramm eines Ausführungsbeispielsdes unterstütztenSpeichersystems 12 gemäß der vorliegendenErfindung. Der Speicher 16 weist zumindest eine Speichervorrichtung, beispielsweiseMRAM, mit Speicherelementen 28 auf, die in einem Array 36 angeordnetsind. Jedes Magnetspeicherspeicherungselement 28 umfaßt in derRegel eine Datenspeicherungsschicht und eine Referenzschicht. Derlogische Zustand eines Magnetspeicherelements hängt von den relativen Magnetisierungsausrichtungenin seinen Datenspeicherungs- und Referenzschichten ab. Die Magnetisierungjedes Speicherelements nimmt zu jeglichem gegebenen Zeitpunkt einevon zwei stabilen Orientierungen an. Diese beiden stabilen Orientierungen,parallel und antiparallel, stellen logische Werte „0" und „1" dar. Die Speicherelemente 28 sind üblicherweisein Zeilen und Spalten angeordnet, wobei sich die Zeilen in einerx-Richtung und die Spalten in einer y-Richtung erstrecken. In 3 ist lediglich eine relativgeringe Anzahl von Speicherelementen gezeigt, um die Beschreibungder Erfindung stark zu vereinfachen. In der Praxis werden in verschiedenenBranchen üblicherweiseArrays von 1024×1024-Speicherelementenoder größere Arraysverwendet.
[0026] Leiterbahnen, die als Wortleitungen 40 fungieren,erstrecken sich entlang der x-Richtung, und Leiterbahnen, die alsBitleitungen 42 fungieren, erstrecken sich entlang dery-Richtung. Beieinem Ausführungsbeispielliegt eine Wortleitung fürjede Zeile von Speicherelementen 28 und eine Bitleitungfür jedeSpalte von Speicherelementen 28 vor. Jedes Speicherelementist in der Darstellung an einem Kreuzungspunkt einer entsprechendenWortleitung 40 und Bitleitung 42 positioniert.Die Erfassungsschaltung 32 (2)erfaßtden Widerstand von ausgewähltenSpeicherelementen 28 währendLeseoperationen und richtet die Magnetisierung von ausgewählten Speicherelementen 28 während Schreiboperationenaus.
[0027] Der Speicher 16 weist einenZeilendecodierer 44, der wirksam ist, um Wortleitungen 40 auszuwählen, undeine Mehrzahl von Spaltendecodierschaltungen 46 (auch alsSpaltendecodierer 46 bezeichnet) zum Auswählen vonBitleitungen 42 währendLese- und Schreiboperationen auf. Eine Speicherzelle 28 wirddurch Liefern einer Zeilenadresse Ax anden Zeilendecodierer 44 und einer Spaltenadresse Ay an den Spaltendecodierer 46 ausgewählt. Ansprechendauf die Zeilenadresse Ax koppelt der Zeilendecodierer 44 eineentsprechende Wortleitung 40 mit einem bekannten Spannungspegel,z.B. Masse. Ansprechend auf die Spaltenadresse Ay koppeltder Spaltendecodierer 46 eine entsprechende Bitleitung 42 miteinem Erfassungsverstärker 48.Ein ausgewähltesSpeicherelement 28 liegt an dem Kreuzungspunkt von ausgewählten Wort-und Bitleitungen 40 und 42. Die Erfassungsverstärker 48 erfassenden Logikzustand der ausgewähltenSpeicherelemente 28.
[0028] Die Zeilenadressen Ax unddie Spaltenadressen Ay können durch die Adreßersetzungsschaltung 30 anden Zeilendecodierer 44 bzw. den Spaltendecodierer 46 geliefertwerden. Bei einem Ausführungsbeispiel empfängt dieErsetzungsschaltung 30 durch das Schnittstellenmodul 18 einelogische Adresse von dem Prozessor 14 und wandelt die empfangenelogische Adresse auf der Basis von gespeicherten Speicherzellendefektinformationenin eine physische Adresse um. Der Zeilendecodierer 44 undder Spaltendecodierer 46 können die durch die Ersetzungsschaltung 30 bereitgestelltenphysischen Adressen verwenden, um entsprechende Speicherelemente 28 auszuwählen.
[0029] ECC ist ein übliches Paritätsschema.Der Hamming-Code, die Reed-Solomon-Codes, der Golay-Binärcode, derGoppa-Binärcode, derViterbi-Code oder andere Algorithmen können verwendet werden, um die ECC-Bitsauf der Basis eines Blocks von Daten einer vorbestimmten Größe zu erzeugen.Ei ne höhereKorrekturfähigkeitund Dateneffizienz kann mit größeren Datenblockgrößen, leistungsfähigerenECC-Algorithmen,jedoch mit einer größeren Schaltungskomplexität erzieltwerden. Statt komplexe Zustandsmaschinen zu verwenden, um die Logikdes ECC-Codierers 24 und des ECC-Decodierers 34 zu implementieren,wie bei herkömmlichenSystemen, verwenden Ausführungsbeispieleder vorliegenden Erfindung ein „flaches" kombinatorisches Logikschema. Einederartige ECC-Architektur kann die ECC-Daten in einem oder sehrwenigen Taktzyklen, beispielsweise weniger als drei Taktzyklen,codieren und decodieren. Ein Ausführungsbeispiel der vorliegendenErfindung wird so beschrieben, daß es ein Beispiel eines Vier-Bit-Datenblocksverwendet, der zu Datenblöckengrößerer Größen extrapoliertwerden kann. Bei diesem Beispiel ist das ECC-Codewort die Vier-Bit-Daten, an die dreiBits von zusätzlichenECC-Bits angehängtsind. Der Hamming-Code wird bei diesem Beispiel verwendet, um dieECC-Bits zu erzeugen. Die sich ergebende Beziehung zwischen denEingangsdatenbits und dem Ausgangs-ECC-Codewort kann in Tabelle A zusammengefaßt werden.
[0030] Falls die vier Eingangsdatenbitsd1, d2, d3 und d4 sind und die Codewort-Ausgangsbits c1, c2, c3,c4, c5, c6 und c7 sind, so kann die logische Beziehung zwischenEingang und Ausgang in Tabelle A anschließend auf folgendes reduziertwerden: c1 = d1 c2 = d2 c3 = d3 c4 = d4 c5= d1 XOR d2 XOR d3 c6 = d2 XOR d3 XOR d4 c7 = d1 XOR d2XOR d4
[0031] Diese logischen Gleichungen können durcheine kombinatorische Logik fürden ECC-Codierer 24 implementiert sein, die den ECC-Codein weniger als drei Taktzyklen, und vorzugsweise in einem Taktzyklus,berechnen kann. Wie in 4 gezeigtist, werden fürjedes ECC-Bit, el bis en, ausgewählteDateneingaben, dl bis dm, einer Logikschaltung 50 bereitgestellt,die angehängtwerden, um Codewörterc1 bis c(m + n) zu bilden. Die Codewörter sind in dem Speicher 16 gespeichert.Bei 4 werden XOR-Gatterverwendet, um die Logikschaltung zum Erzeugen der ECC-Bits darzustellen.Vorzugsweise wird das Codieren in einem Taktzyklus des Taktsignals,CLK (CLK = clock, Takt), durchgeführt. Aufgrund der Einfachheitdes Hamming-Codes bei diesem Beispiel können die sich ergebenden logischenGleichungen natürlicherweisefür eineImplementierung einer kombinatorischen Logik geeignet erscheinen.Diese Hamming-Code-Implementierung wird jedoch lediglich als Beispielgeliefert, um den Vorgang des Bestimmens der kombinatorischen Logikschaltungzu veranschaulichen; komplexere und leistungsfähigere ECC-Codes wie beispielsweiseReed-Solomon würdenlogische Gleichungen ergeben, die in der Regel die Verwendung vonZustandsmaschi nen erfordern würden,um die Codewörterin vielen Taktzyklen zu erzeugen.
[0032] Das Ausführungsbeispiel des ECC-Decodierers 34 ist ähnlich,wenn es auch komplexer ist. Bei diesem Beispiel ist das ECC-Schemain der Lage, Einbitfehler in den Daten, die aus dem Speicher zurückgelesen werden,zu korrigieren. Die nachstehende Tabelle B zeigt Codewort-Eingänge c1 bisc7, die alle möglichen Ausgänge desECC-Codierers, plus alle möglichen1-Bit-Fehler, darstellen. Zum Zweck der Korrektur zusätzlicherBitfehler würdeder Codewort-Eingang erweitert, um diese möglichen Fehlereingänge zu umfassen.Die gewünschtenAusgängedes ECC-Decodierers wärendie korrigierten Daten, d1 bis d4.
[0033] Falls die ECC-Decodierereingänge c1,c2, c3, c4, c5, c6 und c7 und die Ausgänge d1, d2, d3 und d4 sind,kann der Datenausgang durch die folgenden Gleichungen dargestelltwerden: d1 = c1 XOR[(c1 XOR c2 XOR c3 XOR c5) AND NOT (c2 XORc3 XOR c4 XOR c6) AND(c1 XOR c2 XOR c4 XOR c7)] d2 = c2 XOR[(c1 XOR c2 XOR c3 XOR c5) AND(c2 XOR c3 XOR c4 XOR c6) AND(c1 XORc2 XOR c4 XOR c7)] d3 = c3 XOR [(c1 XOR c2 XOR c3 XOR c5) AND(c2XOR c3 XOR c4 XOR c6) AND NOT(cl XOR c2 XOR c4 XOR c7)] d4= c4 XOR [NOT(c1 XOR c2 XOR c3 XOR c5) AND(c2 XOR c3 XOR c4 XORc6) AND(c1 XOR c2 XOR c4 XOR c7)]
[0034] Diese logischen Gleichungen beschreibeneinen ECC-Decodierer,der rein durch eine kombinatorische Logik, die in einem Taktzyklusoder sehr wenigen Taktzyklen durchgeführt werden kann, implementiert werdenkann. 5 zeigt eine Darstellungder kombinatorischen Logikschaltung 52, die durch XOR-Gatter dargestelltist, um ein ECC-Decodieren durchzuführen. Da die Anzahl möglicherKombinationen von Fehlerbits mit der Anzahl von Datenbits exponentiellvariiert, verwendet das obige Beispiel einen Vier-Bit-Dateneingang miteinem Drei-Bit-ECC-Code und die Korrektur eines Ein-Bit-Datenfehlers.Dieses Beispiel kann jedoch auf relativ einfache Weise auf größere Datenblöcke erweitertwerden.
[0035] ABEL (Advanced Boolean Equation Language)ist eine Computersprache, die verwendet werden kann, um das Verhalteneiner Logikschaltung zu beschreiben, um die Implementierung derLogikschaltung zu erzeugen. ABEL ist eine in der Branche standardmäßige Hardwarebeschreibungssprache(HDL – hardware descriptionlanguage), die durch die Data I/O Corporation für programmierbare Logikvorrichtungen(PLD – programmablelogic devices) entwickelt wurde. Es gibt auch andere Hardwarebeschreibungssprachen,z.B. VHDL (Verflog Hardware Description Language), die in der Lageist, Systeme einer größeren Komplexität zu beschreiben.Diese und andere Hardwarebeschreibungssprachen können verwendet werden, um dasVerhalten eines Systems in einer Vielzahl von Formen zu beschreiben,einschließlichlogischer Gleichungen, Wahrheitstabellen und Zustandsdiagramme,die C-artige Aussagen verwenden. Ein Kompilierer kann dann die Logikin PLDs (programmable logic devices, programmierbare Logikbauelemente),z.B. PALs (programmable array logic, programmierbare Arraylogik),SPLDs (simple programmable logic devices, einfache programmierbareLogikbauelemente), CPLDs (complex programmable logic devices, komplexeprogrammierbare Logikbauelemente) und FPGAs (field programmablegate arrays, feldprogrammierbare Gatterarrays) simulieren und implementieren.
[0036] Im Betrieb kommuniziert der Prozessor 14 dieDaten zur Speicherung in dem Speicher 16 an den ECC-Codierer 24.Der ECC-Codierer 24 erzeugt ein Codewort aus Datenblöcken derDaten, wobei die Datenblöckeeine vorbestimmte Größe aufweisen.Das sich ergebende Codewort wird anschließend in den Speicher 16 geschrieben.Währendeines Lesezugriffs wird das aus dem Speicher 16 geleseneCodewort in einem einzigen Schritt durch die kombinatorische Logikin dem ECC-Decodierer 34 decodiert, und die korrigiertenDaten werden rasch dem Prozessor 14 bereitgestellt.
[0037] Da ein Entwickeln von Speichertechnologieneine lange Vorlaufzeit benötigt,um die Entwurfs- und Herstellungsprozesse zu perfektionieren, umSpeichervorrichtungen mit ausreichend niedrigen Defekten zu erzeugen,damit sie im Handel überlebensfähig sind,sind Techniken, wie sie hierin beschrieben wurden und die die nochunvollkommenen Technologien zu einer kommerziellen Nutzung weiterführen, vonunschätzbarem Wert.Da die hierin beschriebenen Techniken die Geschwindigkeit der Speichervorrichtungnicht beeinträchtigen,währendsie die Defekte maskieren, könnenderartige Speichervorrichtungen arbeiten, als ob sie keine Defekteaufwiesen.
权利要求:
Claims (25)
[1] Speichersystem (12), das folgende Merkmaleaufweist: eine Mehrzahl von Speicherspeicherungselementen (28); einmit der Mehrzahl von Speicherspeicherungselementen (28)gekoppeltes Adreßersetzungsmodul(30); und eine kombinatorische ECC-Logikschaltung(ECC = error correcting code, Fehlerkorrekturcode) (20),die mit der Mehrzahl von Speicherspeicherungselementen (28)gekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahlvon Speicherspeicherungselementen (28) gelesen werden,in weniger als drei Taktzyklen Fehler zu erfassen und zu korrigieren.
[2] Speichersystem (12) gemäß Anspruch 1, bei dem das Adreßersetzungsmodul(30) wirksam ist, um erste Adressen von ersten vorbestimmtenSpeicherplätzenin zweite Adressen von zweiten vorbestimmten Speicherplätzen abzubilden.
[3] Speichersystem (12) gemäß Anspruch 1 oder 2, das fernereine Erfassungsschaltung (32) aufweist, die mit der Mehrzahlvon Speicherspeicherungselementen (28) gekoppelt ist undwirksam ist, um Daten zu erfassen, die in ausgewählten der Mehrzahl von Speicherspeicherungselementen(28) gespeichert sind.
[4] Speichersystem (12) gemäß einem der Ansprüche 1 bis3, das ferner eine Schreibschaltung (26) aufweist, diemit der Mehrzahl von Speicherspeicherungselementen (28)gekoppelt ist und wirksam ist, um Daten in ausgewählte derMehrzahl von Speicherspeicherungselementen (28) zu schreiben.
[5] Speichersystem (12) gemäß einem der Ansprüche 1 bis4, das ferner ein sekundäresDatenspeicherungsmodul (22) aufweist, das mit der kombinatorischenECC-Logikschaltung(20) gekoppelt ist und wirksam ist, um Daten vorübergehendzu speichern.
[6] Speichersystem (12) gemäß einem der Ansprüche 1 bis5, bei dem die Mehrzahl von Speicherspeicherungselementen (28)Direktzugriffsspeicherzellen aufweist.
[7] Speichersystem (12) gemäß einem der Ansprüche 1 bis6, bei dem die Mehrzahl von Speicherspeicherungselementen (28)magnetoresistive Direktzugriffsspeicherzellen aufweist.
[8] Speichersystem (12) gemäß einem der Ansprüche 1 bis7, bei dem die kombinatorische ECC-Logikschaltung (20)einen ECC-Codierer (24) aufweist, der wirksam ist, um einECC-Codewort auf der Basis einer vorbestimmten Anzahl von Datenbitszu erzeugen.
[9] Speichersystem (12) gemäß einem der Ansprüche 1 bis8, bei dem die kombinatorische ECC-Logikschaltung (20)einen ECC-Decodierer (24) aufweist, der wirksam ist, umein aus der Mehrzahl von Speicherspeicherungselementen (28)gelesenes ECC-Codewort zu decodieren und zumindest ein Fehlerbitin einer vorbestimmten Anzahl von Datenbits zu korrigieren.
[10] Vorrichtung (10), die folgende Merkmaleaufweist: einen Prozessor (14); eine Mehrzahlvon Speicherspeicherungselementen (28), die wirksam sind,um ansprechend auf Anweisungen von dem Prozessor (14) Datenzu speichern; ein Adreßersetzungsmodul(30), das mit der Mehrzahl von Speicherspeicherungselementen(28) und dem Prozessor (14) gekoppelt ist undwirksam ist, um erste Adressen von ersten vorbestimmten Speicherplätzen, die vondem Prozessor (14) empfangen werden, in zweite Adressenvon zweiten vorbestimmten Speicherplätzen abzubilden; und einekombinatorische ECC-Logikschaltung (20), die mit der Mehrzahlvon Speicherspeicherungselementen (28) und dem Prozessor(14) gekoppelt ist und wirksam ist, um in Daten, die ausder Mehrzahl von Speicherspeicherungselementen (28) gelesenwerden, in weniger als drei Taktzyklen Fehler zu erfassen und zukorrigieren, bevor die Daten an den Prozessor (14) geliefertwerden.
[11] Vorrichtung (10) gemäß Anspruch 10, die ferner eineErfassungsschaltung (32) aufweist, die mit der Mehrzahlvon Speicherspeicherungselementen (28) gekoppelt ist undwirksam ist, um Daten zu erfassen, die in ausgewählten der Mehrzahl von Speicherspeicherungselementen(28) gespeichert sind.
[12] Vorrichtung (10) gemäß Anspruch 10 oder 11, dieferner eine Schreibschaltung (26) aufweist, die mit derMehrzahl von Speicherspeicherungselementen (28) gekoppeltist und wirksam ist, um Daten in ausgewählte der Mehrzahl von Speicherspeicherungselementen(28) zu schreiben.
[13] Vorrichtung (10) gemäß einem der Ansprüche 10 bis12, die ferner ein sekundäresDatenspeicherungsmodul (22) aufweist, das mit der kombinatorischenECC-Logikschaltung(20) gekoppelt ist und wirksam ist, um Daten vorübergehendzu speichern.
[14] Vorrichtung (10) gemäß einem der Ansprüche 10 bis13, bei der die Mehrzahl von Speicherspeicherungselementen (28)Direktzugriffsspeicherzellen aufweist.
[15] Vorrichtung (10) gemäß einem der Ansprüche 10 bis14, bei der die Mehrzahl von Speicherspeicherungselementen (28)magnetoresistive Direktzugriffsspeicherzellen aufweist.
[16] Vorrichtung (10) gemäß einem der Ansprüche 10 bis15, bei der die kombinatorische ECC-Logikschaltung (20)einen ECC-Codierer (24) aufweist, der wirksam ist, um einECC-Codewort auf der Basis einer vorbestimmten Anzahl von Datenbitszu erzeugen.
[17] Vorrichtung (10) gemäß einem der Ansprüche 10 bis16, bei der die kombinatorische ECC-Logikschaltung (20)einen ECC-Decodierer (24) aufweist, der wirksam ist, umein aus der Mehrzahl von Speicherspeicherungselementen (28)gelesenes ECC-Codewort zu decodieren und zumindest ein Fehlerbitin einer vorbestimmten Anzahl von Datenbits zu korrigieren.
[18] Verfahren, das folgende Schritte aufweist: Empfangenvon Daten und zumindest einer Schreibadresse, um die Daten in einerMehrzahl von Direktzugriffsspeicherspeicherungselementen zu speichern; Bestimmen,ob zumindest ein defekter Speicherplatz existiert; Abbildender empfangenen Schreibadresse auf zumindest eine korrigierte Adresse,ansprechend auf die Existenz zumindest eines bekannten defektenSpeicherplatzes; und Erzeugen eines ECC-Codeworts, unter Verwendungeines kombinatorischen ECC-Logikcodierers, aus den empfangenen Datenin weniger als drei Taktzyklen, und Speichern des ECC-Codewortsin die Mehrzahl von Direktzugriffsspeicherspeicherungselementen.
[19] Verfahren gemäß Anspruch18, das ferner folgende Schritte aufweist: Empfangen zumindesteiner Leseadresse, um die in derselben gespeicherten Daten zu lesen; Abbildender empfangenen Leseadresse in die zumindest eine korrigierte Adresse,ansprechend auf die Existenz zumindest eines bekannten defektenSpeicherplatzes; und Lesen der Mehrzahl von Direktzugriffsspeicherspeicherungselementenund Decodieren der ECC-Codewörter indenselben, unter Verwendung eines kombinatorischen ECC-Logikcodierers,der wirksam ist, um Fehler in denselben zu erfassen und zu korrigieren.
[20] Verfahren gemäß Anspruch18 oder 19, das ferner ein Erfassen des ECC-Codeworts, das in ausgewählten derMehrzahl von Direktzugriffsspeicherspeicherungselementen gespeichertist, aufweist.
[21] Verfahren gemäß einemder Ansprüche18 bis 20, das ferner ein Schreiben von Daten in ausgewählte derMehrzahl von Direktzugriffsspeicherspeicherungselementen aufweist.
[22] Speicher, der folgende Merkmale aufweist: eineMehrzahl von Speicherspeicherungselementen (28); und einenkombinatorischen ECC-Logikcodierer (24), der mit der Mehrzahlvon Speicherspeicherungselementen (28) gekoppelt ist undwirksam ist, um ein ECC-Codewort auf der Basis von Daten zu erzeugen,die in der Mehrzahl von Speicherspeicherungselementen gespeichertwerden sollen; und einen kombinatorischen ECC-Logikdecodierer(34), der mit der Mehrzahl von Speicherspeicherungselementen(28) gekoppelt ist und wirksam ist, um ein aus der Mehrzahlvon Speicherspeicherungselementen (28) gelesenes ECC-Codewortzu empfangen und das ECC-Codewort zu decodieren, um zumindest einenFehler in den Daten in weniger als drei Taktzyklen zu korrigieren.
[23] Speicher gemäß Anspruch22, bei dem der kombinatorische ECC-Logikcodierer (24)eine kombinatorische Logik aufweist, die wirksam ist, um das ECC-Codewortin einem Taktzyklus zu erzeugen.
[24] Speicher gemäß Anspruch22 oder 23, bei dem der kombinatorische ECC-Logikdecodierer (34)eine kombinatorische Logik aufweist, die wirksam ist, um das ECC-Codewort zu decodierenund Fehler in den Daten in einem Taktzyklus zu korrigieren.
[25] ECC-Verfahren, das folgende Schritte aufweist: einCodierungsverfahren, das in weniger als drei Taktzyklen abgeschlossenist und folgende Schritte aufweist: Empfangen eines Datenblockseiner vorbestimmten Anzahl von Bits; Erzeugen einer Mehrzahlvon ECC-Bits auf der Basis des Datenblocks unter Verwendung einerkombinatorischen Logik; und Anhängen der Mehrzahl von ECC-Bitsan den Datenblock und Erzeugen eines ECC-Codeworts aus denselben;und ein Decodierungsverfahren, das in weniger als drei Taktzyklenabgeschlossen ist und folgende Schritte aufweist: Empfangeneines ECC-Codeworts; und Decodieren des ECC-Codeworts und Korrigierenvon Fehlern, falls vorhanden, unter Verwendung einer kombinatorischenLogik, und Erzeugen des Datenblocks einer vorbestimmten Anzahl vonBits.
类似技术:
公开号 | 公开日 | 专利标题
US20190215015A1|2019-07-11|Semiconductor memory device and method of controlling the same
CN104798047B|2017-08-11|错误检测和校正装置及方法
US8966352B2|2015-02-24|Memory controller supporting rate-compatible punctured codes and supporting block codes
US8812933B2|2014-08-19|Memory system and operating method thereof
US9063875B2|2015-06-23|Error recovery storage along a memory string
Yang et al.2011|Product code schemes for error correction in MLC NAND flash memories
US9053043B2|2015-06-09|Method of error correction of a memory
US20150234705A1|2015-08-20|Semiconductor memory device
US9268632B2|2016-02-23|Memory device with ECC history table
US8788905B2|2014-07-22|Flash memory device error correction code controllers and related methods and memory systems
CN107506257B|2020-05-19|错误检查纠正解码方法与装置
DE10133595B4|2009-01-22|Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
KR0142277B1|1998-07-01|메모리 시스템
US6801471B2|2004-10-05|Fuse concept and method of operation
US8627163B2|2014-01-07|Error-correction forced mode with M-sequence
US6279133B1|2001-08-21|Method and apparatus for significantly improving the reliability of multilevel memory architecture
TW436799B|2001-05-28|Multi-bit memory device having error check and correction circuit and method for checking and correcting data errors therein
US8473815B2|2013-06-25|Methods and systems of a flash memory controller and an error correction code | controller using variable-length segmented ECC data
US9117530B2|2015-08-25|Preserving data from adjacent word lines while programming binary non-volatile storage elements
US7844880B2|2010-11-30|Error correction for flash memory
US7210077B2|2007-04-24|System and method for configuring a solid-state storage device with error correction coding
US7403436B2|2008-07-22|Non-volatile semiconductor memory device
US5754753A|1998-05-19|Multiple-bit error correction in computer main memory
US7536627B2|2009-05-19|Storing downloadable firmware on bulk media
US6662333B1|2003-12-09|Shared error correction for memory design
同族专利:
公开号 | 公开日
JP2004272900A|2004-09-30|
US20040181733A1|2004-09-16|
US7904786B2|2011-03-08|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2004-10-07| OP8| Request for examination as to paragraph 44 patent law|
2008-11-20| 8139| Disposal/non-payment of the annual fee|
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]