-
VERWEIS AUF EINE VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht die Priorität der Vorläufigen
US-Patentanmeldung 62/738,177 /, eingereicht am 28. September 2018, die hier durch Bezugnahme insgesamt aufgenommen wird.
-
STAND DER TECHNIK
-
Speicher werden in großem Umfang verwendet, um Informationen (sowohl Daten als auch Programme) in einem digitalen System zu speichern. Während des Betriebs des Systems können die Informationen (Bits), die im Speicher gespeichert sind, aus verschiedenen Gründen beschädigt werden. Eine mögliche Ursache für die Beschädigung besteht in Umweltereignissen sowohl innerhalb des Speichers als auch außerhalb des Speichers. Ein solches externes Ereignis ist das Auftreffen von Teilchen. Es gibt andere Ursachen außer den Umweltereignissen, welche die Beschädigung (den Ausfall) von Bits bewirken können. Wenn ein Bit beschädigt ist, dann ist die gespeicherte Information verloren, was einen Systemausfall oder Datenverlust zur Folge hat. Deshalb ist es wichtig, die Unversehrtheit des Speicherinhalts zu schützen. Es wurden schon verschiedenartige Mittel für den Schutz des Speicherinhalts vor Beschädigung eingesetzt. Fehlerkorrekturcodes (ECC) haben den Vorteil, dass sie in der Lage sind, Fehler in einem Codewort (sowohl das Datenfeld als auch die Prüfbits) zu erkennen und auch die Fehler zu korrigieren.
-
Figurenliste
-
Ausbildungen der vorliegenden Offenbarung sind am besten anhand der nachfolgenden ausführlichen Beschreibung zu verstehen, wenn sie in Verbindung mit den beigefügten Figuren gelesen wird. Es wird angemerkt, dass im Einklang mit der üblichen Vorgehensweise in der Industrie die verschiedenen Merkmale nicht maßstabsgetreu gezeichnet sind. Tatsächlich können die Abmessungen der verschiedenen Merkmale aus Gründen der Verständlichkeit der Darlegung beliebig vergrößert oder verkleinert sein. Darüber hinaus dienen die Zeichnungen als Beispiele von Ausführungsformen der Erfindung zur Veranschaulichung und sind nicht dazu gedacht, eine Einschränkung darzustellen.
- 1 ist ein Blockdiagramm, das allgemein ein Beispiel für eine MRAM-Vorrichtung mit mehreren MRAM-Anordnungen zeigt, von denen jede eine zugehörige und vereinfachte ECC-Schaltung gemäß einer Ausführungsform aufweist.
- 2 ist ein Blockdiagramm, das ein Beispiel für eine MRAM-Zelle in einer MRAM-Anordnung gemäß einer Ausführungsform allgemein darstellt.
- 3 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 4 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 5 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 6 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 7 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 8 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 9 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 10 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 11 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 12 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 13 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 14 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 15 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 16 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 17 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logikprozess zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt.
- 18 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines ECC-Logikprozesses gemäß einer Ausführungsform.
- 19 ist ein Ablaufdiagramm eines Verfahrens zum Korrigieren von MRAM-Fehlern unter Verwendung eines hierarchischen ECC-Logikprozesses gemäß einer Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Offenbarung stellt viele unterschiedliche Ausführungsformen oder Beispiele für die Realisierung unterschiedlicher Merkmale des bereitgestellten Gegenstandes zur Verfügung. Nachfolgend werden spezielle Beispiele für Komponenten und Anordnungen beschrieben, um die vorliegende Offenbarung zu vereinfachen. Selbstverständlich sind das nur Beispiele, und sie sind nicht zur Einschränkung vorgesehen. Zum Beispiel kann das Ausbilden eines ersten Merkmals über oder auf einem zweiten Merkmal in der nachfolgenden Beschreibung Ausführungsformen umfassen, bei denen das erste und das zweite Merkmal in einem direkten Kontakt ausgebildet sind, und es kann auch Ausführungsformen umfassen, bei denen zusätzliche Merkmale zwischen dem ersten und dem zweiten Merkmal derart ausgebildet werden können, dass das erste und das zweite Merkmal nicht in einem direkten Kontakt sein können. Außerdem können in der vorliegenden Offenbarung Bezugsziffern und/oder Buchstaben in den verschiedenartigen Beispielen wiederholt werden. Diese Wiederholung dient dem Zweck der Einfachheit und Klarheit und gibt von sich aus keine Beziehung zwischen den erörterten verschiedenartigen Ausführungsformen und/oder Konfigurationen vor.
-
Ferner können hier räumliche Relationsbegriffe, wie z.B. „unterhalb“, „unten“, „unterer“, „oberhalb“, „oberer“ und dergleichen, der Einfachheit der Beschreibung halber verwendet werden, um die Beziehung eines Elements oder Merkmals zu einem anderen Element oder Merkmal (anderen Elementen oder Merkmalen) zu beschreiben, wie in den Figuren dargestellt ist. Die räumlichen Relationsbegriffe sind dazu gedacht, verschiedene Ausrichtungen der Vorrichtung im Einsatz oder beim Betrieb zusätzlich zu der Ausrichtung zu umfassen, die in den Figuren wiedergegeben ist. Die Vorrichtung kann auf eine andere Weise ausgerichtet (um 90 Grad oder in andere Richtungen gedreht) werden, und die hier verwendeten räumlichen Kennzeichnungen können ebenso dementsprechend interpretiert werden.
-
Speichervorrichtungen werden verwendet, um Informationen in Halbleitervorrichtungen und Systemen zu speichern. Die weitverbreitete dynamische Direktzugriffsspeicherzelle (DRAM-Zelle) weist einen Schalter und einen Kondensator auf. DRAMs sichern die Daten nicht, wenn die Stromquelle abgeschaltet wird. Eine nichtflüchtige Speichervorrichtung ist in der Lage, die Daten selbst nach dem Abschalten der Stromquelle zu sichern. Beispiele für nichtflüchtige Speichervorrichtungen umfassen den Flash-Speicher, magnetische Direktzugriffspeicher (MRAM), ferroelektrische Direktzugriffspeicher (FRAM) und Phasenwechsel-Direktzugriffspeicher (PRAM). Die MRAM speichern Daten unter Verwendung von Änderungen in der Magnetisierungsrichtung an Tunnelübergängen. Die FRAM speichern Daten unter Verwendung von Polarisationskennwerten der Ferroelektrizität. Die PRAM speichern Daten unter Verwendung von Widerstandsänderungen, die durch Phasenänderungen spezieller Materialien verursacht werden.
-
Ein Speicher ist gewöhnlich in einer 2-dimensionalen Anordnung eingerichtet. Eine Speicheranordnung kann eine eigenständige Vorrichtung oder in eine weitere Vorrichtung eingebettet sein, und sie kann auch viele Speicherbit-Zellen aufweisen. Jede Speicherbitzelle kann üblicherweise ein Informationsbit speichern. Ein Speicher-Makro kann eine oder mehrere Anordnungen von Bitzellen und andere Logikschaltkreise aufweisen, wie z.B Treiber, Puffer, Takt-Fanout-Schaltungen, ECC-Schaltungen und andere periphere Schaltkreise.
-
Bestimmte Typen von Speichervorrichtungen, wie z.B. MRAM, weisen zwei oder mehr Widerstandszustände auf, die vom Zustand der Magnetisierungsausrichtung zwischen zwei Schichten magnetischer Materialien, wie z.B. ferromagnetischer Materialien, abhängen. Insbesondere speichert der MRAM Daten in Speicherzellen, die zwei übereinanderliegende Magnetmaterialschichten aufweisen, die durch einen dünnen isolierenden Film voneinander getrennt sind. Die Schichtstruktur bildet einen magnetischen Tunnelübergang oder Tunnelwiderstand („MTJ“ oder „MTJ-Element“; engl.: magnetic tunnel junction) einer MRAM-Zelle aus. Die zwei Schichten umfassen eine magnetische Schicht, die in einer festgelegten Richtung der Magnetfeldausrichtung dauerhaft magnetisiert ist (diese Schicht wird als eine „gepinnte Schicht“ bezeichnet), und eine veränderlich magnetisierte magnetische Schicht (diese Schicht wird als eine „freie Schicht“ bezeichnet). Die freie Schicht kann in einer von zwei Richtungen bezüglich der dauerhaft magnetisierten Schicht magnetisiert sein. Die zwei Richtungen werden gekennzeichnet über die sich deutlich voneinander unterscheidenden Reihenwiderstände durch die übereinanderliegenden Schichten des MTJ hindurch. Die Magnetfeldrichtung der veränderlichen Schicht kann so ausgerichtet werden, dass sie die gleiche wie die von der Permanentmagnetschicht (parallel) oder entgegengesetzt zu der von der Permanentmagnetschicht (antiparallel) ist. Der Parallel-Ausrichtungszustand weist einen im Vergleich geringeren Widerstand und der Antiparallel-Ausrichtungszustand einen höheren Widerstand auf.
-
Die zwei Zustände einer MRAM-Zelle, welche die unterschiedlichen Binärlogikwerte eines im Speicher gespeicherten Bits darstellen, können anhand ihres vergleichsweise höheren oder niedrigeren Widerstands (RH und RL) ermittelt werden. Zum Beispiel kann RL (oder ein hoher Zellenstrom) als eine logische „1“ („Daten-i“) bezeichnet werden, RH (oder niedriger Zellenstrom) kann als eine logische „0“ („Daten-o“) bezeichnet werden. In bestimmten Ausführungsformen kann eine Referenzspannung an die MRAM-Zelle angelegt werden, und der sich ergebende Zellenstrom kann verwendet werden, um zu bestimmen, ob die Zelle in einem niederohmigen Zustand oder in einem hochohmigen Zustand ist. In bestimmten Ausführungsformen kann ein Leseverstärker verwendet werden, um den Zellenstrom mit einem Referenzstrom zu vergleichen.
-
Datenfehler, wie z.B. Soft-Errors, die nicht permanent oder kennzeichnend für einen physischen Schaden am Gerät sind, können die Folge von Störungsfehlern, Strahlungseinwirkungen oder Wärmeeinwirkungen sein. Derartige Fehler können deterministisch sein oder können von stochastischen Prozessen ausgehen. Datenfehlerraten unter Einschluss von Soft-Errors können den Einsatz von Fehlerkorrekturcode-Programmen (ECC-Programmen) erfordern, die in die MRAM-Vorrichtungs-Chip eingebaut sind. Der ECC kann verwendet werden, um Bitfehler, die in einem Speicher enthalten sind, zu erkennen und zu korrigieren. Der ECC codiert die Daten durch Erzeugung von ECC-Prüfbits, z.B. Redundanzbits oder Paritätsbits, die zusammen mit den Daten in einer Speichervorrichtung gespeichert sind. Daten und Paritätsbits bilden zusammen das Codewort. Zum Beispiel kann ein ECC, der 8 Paritätsbits für 64 Datenbits erzeugt, normalerweise zwei Bitfehler erkennen und einen Bitfehler in den 64 Datenbits korrigieren, was als SECDED-Code, Einfehlerkorrektur (SEC) und Zweifehlererkennung (DED), bekannt ist.
-
Es kann zusätzlicher Speicherplatz erforderlich sein, um die Prüfbits, die bei einem ECC verwendet werden, zu speichern. Somit kann eine zusätzliche Speichervorrichtung oder Vorrichtungen (z.B. ein zusätzlicher Chip oder Chips) erforderlich sein, um die Prüfbits zum Bereitstellen der ECC-Fähigkeit zu speichern. In einigen Speicheranordnungen können zusätzliche Spalten zur Anordnung hinzugefügt werden, um die Prüfbits (die auch als Paritätsbits bezeichnet werden) hinzuzufügen. Die Daten, die in einer Zeile einer Speicheranordnung enthalten sind, können als ein Wort bezeichnet werden. Ein Codewort bezieht sich auf eine Datenkette, die das Wort plus die Paritätsbits umfasst, die in der(den) zusätzliche(n) Spalte(n) hinzugefügt worden sind. Weist ein Codewort einen Wortanteil mit K Bits und M Paritätsbits auf, dann wäre die Länge N des Codeworts N = K+M. Zum Beispiel kann ein ECC-Speicher, der eine 8-Bit-Parität für jedes 32-Bit-Datenwort bereitstellen kann, eine Schnittstelle mit einer Breite von 40 Bit aufweisen, um auf ein 40-Bit-Codewort mit 32-Bit Daten zuzugreifen. Auf die gleiche Weise kann ein ECC-Speicher, der eine 8-Bit-Parität für jedes 64-Bit-Datenwort bereitstellen kann, eine Schnittstelle mit einer Breite von 72 Bit aufweisen, um auf ein 72-Bit-Codewort mit 64-Bit Daten zuzugreifen.
-
Durch das Bereitstellen von ECC-Schaltkreisen für jede Speicheranordnung oder jedes Makro werden die Anforderungen an die Vorrichtung erhöht. Ein alternativer Ansatz, mit dem der Flächenbedarf, der für die ECC-Schaltkreise erforderlich ist, minimiert wird, besteht darin, globale ECC-Schaltkreise zu schaffen, die von den Speicheranordnungen oder Makros gemeinsam genutzt werden. Ein Programm zur gemeinsamen Nutzung von ECC-Schaltkreisen für die Speicheranordnungen oder Makros vergrößert jedoch die Energie, die bei der Bewegung oder Weiterleitung der Daten zu den und von den Speicheranordnungen und ECC-Schaltkreisen verbraucht wird im Vergleich zu einer Bereitstellung von ECC-Schaltkreisen für jede Speicheranordnung oder jedes Makro.
-
Das Erkennen von Bitfehlern in einem Codewort erfordert weniger Arbeitsgänge als die Bitfehlerkorrektur, und somit erfordert sie weniger Schaltkreise zum Unterstützen der geringeren Zahl von Arbeitsgängen. Gemäß den offenbarten Ausführungsformen wird ein erster Teil der ECC-Schaltkreise lokal jedem Speicher-Makro zur Verfügung gestellt, während ein zweiter Teil als ein gemeinsam genutzter globaler ECC ausgeführt ist, auf den alle Speicher-Makros der Speichervorrichtung zugreifen können. Zum Beispiel können die Fehlererkennungsausbildungen der ECC-Schaltung als ein erster, lokaler ECC für jedes MRAM-Makro oder für eine kleine Gruppe von Makros ausgeführt werden. Die Fehlerkorrekturausbildungen des ECC werden als ein zweiter oder globaler ECC ausgeführt, der viele MRAM-Makros unterstützt. Auf diese Weise müssen nur die Speicherfehler, die vom lokalen ECC erkannt wurden, an den globalen ECC zur Fehlerkorrektur weitergeleitet werden.
-
Mit einer hierarchischen ECC-Struktur, wie zum Beispiel derjenigen, die lokale und globale ECC-Ausbildungen aufweist, kann eine effektive Balance zwischen dem Flächenbedarf und dem Leistungsverbrauch einer Vorrichtung mit Bezug auf die Fehlerkorrektur gefunden werden, indem die Fläche der Overhead-ECC-Schaltkreise im Vergleich dazu reduziert wird, dass bei jeder Speicheranordnung oder jedem Makro ein lokaler kompletter ECC zur Verfügung gestellt wird, und indem die globale Datenkommunikationsenergie im Vergleich dazu reduziert wird, dass ein gemeinsam genutzter globaler kompletter ECC zur Verfügung gestellt wird. Die globale Datenkommunikationsenergie wird reduziert, indem für die Korrektur nur die erkannten Speicherfehler zu den globalen ECC-Schaltkreisen hin verschoben oder weitergeleitet werden, und der Flächenbedarf der Vorrichtungen wird minimiert, indem nur die Erkennungs-ECC-Schaltkreise bei jeder Speicheranordnung oder jedem Makro zur Verfügung gestellt werden, während die Fehlerkorrektur-Schaltkreise von den gemeinsam genutzten globalen ECC-Schaltkreisen zur Verfügung gestellt werden.
-
1 ist ein Blockdiagramm, das ein Beispiel für eine Speichervorrichtung mit mehreren Speicheranordnungen allgemein darstellt, von denen jede eine zugehörige und vereinfachte ECC-Schaltung gemäß einigen Ausführungsformen der vorliegenden Offenbarung aufweist. In dem Beispiel, das in 1 dargestellt ist, kann die Speichervorrichtung eine MRAM-Vorrichtung 100 sein, obwohl andere Speichertypen im Umfang der Offenbarung liegen. Die MRAM-Vorrichtung 100 umfasst mehrere Speicheranordnungen 102a-n, lokale ECC-Schaltungen 140a-n, die mit den jeweiligen Speicheranordnungen 102 verbunden sind, lokale E/A-Schaltungen 106a-n, die mit den jeweiligen Speicheranordnungen 102 und den ECC-Schaltungen 140 verbunden sind, ein Steuerglied 108, das mit jeder von den lokalen E/A-Schaltungen 106 verbunden ist, eine globale ECC-Schaltung 160 und eine globale E/A-Schaltung 110. In der dargestellten Ausführungsform können die Speicher-Makros 130a-n die lokalen Speicheranordnungen 102a-n, die lokalen ECC 140a-n und die lokale E/A 106a-n aufweisen.
-
Gemäß einigen Ausführungsformen sollten die meisten Leseoperationen in einem Speicherrefresh relativ fehlerfrei sein, wenn das Refreshintervall richtig eingerichtet ist. In einem solchen Fall kann ein ECC-Programm realisiert werden, in dem einfache Fehlererkennungsfunktionen lokal ausgeführt werden können, was einen kürzeren lokalen Refresh-Datenweg 120 und eine verringerte Wartezeit während des Refreshs zur Folge hat. Eine ECC-Schaltung mit Fehlerkorrektur könnte dann von mehreren Makros 130a-n gemeinsam genutzt werden, und der längere globale Refresh-Datenweg 122 würde dann für solche vergleichsweise seltenen Ereignisse verwendet werden. In einem derartigen Programm würde die Fläche, die für die lokalen ECC-Schaltungen 140a-n benötigt wird, die nur eine Fehlererkennung haben, eine bedeutend geringere Fläche in Anspruch nehmen.
-
Zum Realisieren des ECC sind viele Programme, die Hamming-Codes, Tripel-Modular-Redundanz und weitere einschließen, entwickelt worden. Die Hamming-Codes sind zum Beispiel eine Klasse von linearen binären Blockcodes, die in Abhängigkeit von der Zahl der eingesetzten Paritätsbits bis zu zwei Bitfehler pro Codewort erkennen oder einen Bitfehler korrigieren können, ohne nicht korrigierte Fehler zu erkennen. Es sind verschiedene Programme entwickelt worden, aber im Allgemeinen können die Bits im Fehler identifiziert werden, wenn Paritätsbits in einem Codewort derart angeordnet werden, dass unterschiedliche inkorrekte Bits unterschiedliche Fehlerergebnisse erzeugen. Für ein Codewort mit Fehlern wird das Fehlermuster als das Fehlersyndrom bezeichnet, und es kennzeichnet das Bit im Fehler. Eine derartige Syndrom-Decodierung stellt ein hoch effizientes Verfahren zum Decodieren eines linearen Blocks dar, der Fehler aufweist.
-
Wie hier beschrieben worden ist, können der lokale ECC 140a-n und der globale ECC 160 die ECC-Codierung und -Decodierung unter Verwendung von ECC-Encodern und - Decodern nutzen. Ein ECC-Encoder kann eine beliebige Technik oder einen beliebigen Algorithmus aufweisen, bei dem eine Redundanz zu den Informationen hinzugefügt wird, um Fehler aufzufinden oder zu korrigieren. Zum Beispiel können fehlerkorrigierende Codes umfassen: nicht-binäre Blockcodes, wie z.B. die Reed-Solomon [255, 239]- oder [255, 221]-Codes; lineare Blockcodes, wie z.B. die Hamming-Codes und Bose-Chaudhuri-Hocquenghem(BCH)-Codes; zyklische Hamming-Codes; Hadamard-Codes, wie z.B. den Hadamard[16, 5]-Code; Golay-Codes, wie z.B. den Golay[23, 12]-Code, den erweiterten Golay [24, 12]-Code oder den zyklischen Golay[24, 12]-Code; Schieberegistercodes maximaler Länge; einen Reed-Muller-Code; einen alternativen Code; einen Gappa-Code; binäre und nicht-binäre Faltungscodes; Dual-K-Codes; Turbo-Codes; Turbo-Produktcodes; LDPC-Codes; verkettete Codes, die durch Einfügen eines Codes in einen anderen erzeugt wurden, und dergleichen. Die Stärke des fehlerkorrigierenden Codes kann erforderlichenfalls durch Hinzufügen von mehr Paritätsbits angepasst werden. Die Stärke eines Codes kann zum Beispiel mittels eines minimalen Hamming-Abstands gemessen werden. An einen ECC-Encoder kann ein ECC-Decoder gekoppelt und dazu verwendet werden, ein Syndrom eines Codeworts zu berechnen.
-
In einigen Ausführungsformen und im Besonderen kann der lokale ECC 140a-n einen ECC-Decoder aufweisen, der eine Matrix-Multiplikation einer vorher festgelegten Paritätsprüfmatrix und des Codeworts ausführen kann. Die vorher festgelegte Paritätsprüfmatrix kann entsprechend dem Typ des verwendeten ECC festgelegt werden. Zum Beispiel kann die vorher festgelegte Paritätsprüfmatrix die 7×3-Paritätsprüfmatrix H eines (7, 4)-Hamming-Codes sein. Dementsprechend gibt der ECC-Decoder einen 3-Tupel-Vektor aus, der 3 Bits aufweist. Der ECC-Decoder dient der Prüfung, ob das codierte Codewort ein gültiges Codewort ist, das auf dem Prinzip des (7, 4)-Hamming-Codes basiert. Ist der 3-Tupel-Vektor, d.h. das Syndrom, der vom ECC-Decoder erzeugt wurde, gleich (o, o, o), dann wird festgestellt, dass das codierte Codewort ein gültiges Codewort ist. In diesem Fall werden nur Operationen benötigt, bei denen festgestellt wurde, dass das Codewort gültig ist, und der lokale Refresh-Datenweg 120 wird verwendet. Ist der 3-Tuple-Vektor, der vom ECC-Decoder erzeugt wurde, bei der Operation nicht gleich (o, o, o), dann wird festgestellt, dass das codierte Codewort mindestens einen Fehler aufweist. In diesem Fall wird ein vollständigerer ECC benötigt, der eine Fehlerkorrektur umfasst, und der globale Refresh-Datenweg 122 wird verwendet.
-
2 ist ein Blockdiagramm, das weitere Ausbildungen eines Beispiels der MRAM-Zelle 100 allgemein darstellt. In der dargestellten Ausführungsform weist die lokale Speicheranordnung 102a mehrere MRAM-Bitzellen auf, wie z.B. die MRAM-Bitzelle 200, die in Zeilen und Spalten angeordnet sind. Die MRAM-Bitzelle 200 weist einen Zugriffstransistor 212 und ein MTJ-Element 214 auf. Das MTJ-Element 214 weist einen veränderlichen Widerstand auf, der von der Ausrichtung seiner freien Schicht abhängt, und ist betriebsbereit zwischen den Zugriffstransistor 212 und eine Bitleitung geschaltet 204. Der Zugriffstransistor 212 ist betriebsbereit zwischen eine Bitleitung 206 und das MTJ-Element 214 geschaltet und weist ein Gate auf, das mit einer Wortleitung 202 verbunden ist. Während eines Lese- oder Schreibvorgangs wird eine Spannung, die größer als die Schwellenspannung des Zugriffstransistors 212 ist, an die Wortleitung 202 angelegt, wodurch der Zugriffstransistor 212 „eingeschaltet“ und ermöglicht wird, dass ein Strom von der Bitleitung 206 durch das MTJ-Element 214 zur Bitleitung 204 fließt. Der Strom wird von einem (nicht dargestellten) Leseverstärker nachgewiesen, der in der Lage ist, den Strom in den Bitleitungen zu messen und zu vergleichen und ein logisches High „1“ oder Low „0“ auszugeben, das dem Zustand der freien Schicht im MTJ-Element 214 und letztendlich den Daten („1“ oder „0“) entspricht, die in der MRAM-Bitzelle 200 gespeichert sind. Der Zugriff auf irgendeine von den mehreren Bitzellen in der lokalen Speicheranordnung 102a erfolgt durch eine genaue zeitliche Abstimmung für das Anlegen von Spannungen an die Wortleitungen und das Messen des Stroms in den entsprechenden Bitleitungen. Die Daten der Bitzellen in der lokalen Speicheranordnung 102a können zum Beispiel über die Bitleitungen 204 und 206 der lokalen ECC-Schaltung übermittelt werden. Die Daten der Bitzellen in der lokalen Speicheranordnung 102a werden zum Beispiel über die Bitleitungen 204 und 206 durch die lokale E/A-Schaltung 106a hindurch auf die Schaltungen übertragen und von ihnen empfangen, die außerhalb des Makros 130a liegen, wie in 1 dargestellt ist.
-
3 ist ein Blockdiagramm, das allgemein ein Beispiel für einen ECC-Logik-Prozess 300 für die MRAM-Fehlerkorrektur gemäß einer Ausführungsform darstellt. In der dargestellten Ausführungsform umfasst der ECC-Logik-Prozess 300 eine lokale ECC-Logik 340 und eine globale ECC-Logik 360. In einigen Ausführungsformen ist die lokale ECC-Logik 340 mit einer Speicheranordnung oder einem Makro ausgestattet, und die globale ECC-Logik 360 wird von mehreren Speicheranordnungen oder Makros gemeinsam genutzt. Mit Bezugnahme auf 1 kann die lokale ECC-Logik 340 zum Beispiel der lokalen ECC-Schaltung 140a entsprechen, die mit der lokalen Speicheranordnung 102a in dem lokalen Speicher-Makro 130a versehen ist, und die globale ECC-Logik kann der globalen ECC-Schaltung 160 entsprechen, die von den mehreren Speicher-Makros 130a-n gemeinsam genutzt wird.
-
Die lokale ECC-Logik 340 weist einen Syndrom-s1-Erzeuger 342, einen Syndrom-s3-Erzeuger 344 und eine Fehlerprüfschaltung 346 auf. Die MRAM-Bitzellen 200 in den Speicheranordnungen 102a-n speichern sowohl Daten- als auch Paritätsbits für die Fehlererkennung und -Korrektur. In dem dargestellten Beispiel bearbeitet der ECC-Logik-Prozess 300 ein Codewort, das aus der lokalen Speicheranordnung 102a gelesen wird, z.B. ausgelesene Daten einer Länge von N Bit, die aus dem MRAM-Makro 130a gelesen werden. In einigen Ausführungsformen werden nur die Syndrome s1 und s3 benötigt, um zu bestimmen, ob die ausgelesenen Daten einen Fehler aufweisen, und deshalb ist nur ein partielles Dekodieren der ausgelesenen Daten erforderlich. Die Syndrome s1 und s3 können einfache numerische Elemente sein, oder die Syndrome s1 und s3 können jeweils ein Vektor aus mehreren numerischen Elementen sein, oder die Syndrome s1 und s3 können eine Matrix aus mehreren numerischen Elementen sein. Der Syndrom-s1-Erzeuger 342 führt Matrixmultiplikationen der ausgelesenen Daten unter Verwendung einer vorher festgelegten Paritätsprüfmatrix aus, um zum Syndrom s1 zu gelangen, und ebenso führt der Syndrom-s3-Erzeuger 344 Matrixmultiplikationen an der vorher festgelegten Paritätsprüfmatrix aus, um zum Syndrom s3 zu gelangen. Die Fehlerprüfschaltung 346 ist eingerichtet, die Syndrome s1 und s3 zu bewerten und zu bestimmen, ob die ausgelesenen Daten, z.B. das Codewort, mindestens einen Fehler enthalten.
-
In den Fällen, in denen von der Fehlerprüfschaltung 346 festgestellt wurde, dass die ausgelesenen Daten mindestens einen Fehler aufweisen, ist ein vollständiges Decodieren der ausgelesenen Daten erforderlich, wobei die globale ECC-Logik 360 benötigt wird. Die globale ECC-Logik 360 weist eine x^3(= x hoch drei oder x3)-Berechnungsschaltung 351, eine Encoder(EN)-Berechnungsschaltung 352, einen Prüfbiterzeuger 353, eine XOR(exklusives ODER)-Berechnungsschaltung 354, eine Inversberechnungsschaltung 355, eine Finit-Feld-Berechnungsschaltung, wie z.B. die Galois-Feld(GF)-Multi-Berechnungsschaltung 356 und eine Fehlerkorrekturschaltung 362 auf. In einigen Ausführungsformen bearbeitet die EN-Berechnungsschaltung 352 die ausgelesenen Daten und gibt ein einziges Bit aus, das codiert, ob das Codewort nach der Korrektor zurück in die lokale Speicheranordnung 102a geschrieben werden muss. Die EN-Berechnungsschaltung 352 kann zum Beispiel die Encoder-Stufe eines zyklischen BCH-Fehlerkorrekturcodes sein. In einigen Ausführungsformen fügt die EN-Berechnungsschaltung 352 ein Paritätsbit derart zu, dass die globale ECC-Logik 360 eine zusätzliche Fehlererkennung zusätzlich zur Korrektur aufweisen kann, z.B. die Einfehlerkorrektur-Zweifehlererkennung (SECDED), Zweifehlerkorrektur-Dreifehlererkennung (DECTED), usw. In der Ausführungsform, die in 3 dargestellt ist, werden die Syndrome si und s3 in der lokalen ECC-Logik 340 berechnet und werden weitergeleitet und von der globalen ECC-Logik 360 verwendet. Insbesondere verarbeitet die x^3-Berechnungsschaltung 351 das Syndrom s1, sodass sich s1^3 (= s1 hoch drei oder s13) ergibt, die XOR-Berechnungsschaltung 354 verarbeitet das Syndrom s3 und das sich aus der Dritte-Potenz-Berechnungsschaltung 351 ergebende s1^3, um s3 und s1^3 zu vergleichen und einen Vektor gemäß einer XOR-Wahrheitswertetafel auszugeben. Die Inversberechnungsschaltung 355 verarbeitet das Syndrom s1 und gibt das Inverse des Syndroms s1 aus, und die GF-Multi-Berechnungsschaltung 356 verarbeitet die Ausgabe der Inversberechnungsschaltung 355 und der XOR-Berechnungsschaltung 354. In einigen Ausführungsformen kann die GF-Multi-Berechnungsschaltung 356 die Decoderstufe eines zyklischen BCH-Fehlerkorrekturcodes mit einer Fehlererkennung und Fehlerkorrektur sein. In einigen Ausführungsformen verarbeitet die GF-Multi-Berechnungsschaltung 356 das Codewort mittels Multiplikation und Akkumulation im Galois-Feld eines jeden Datenbits, wobei die Datenbits als Koeffizienten von Polynomen behandelt werden. Die Ausgabe der GF-Multi-Berechnungsschaltung 356 wird zusammen mit den ausgelesenen Daten und dem Syndrom s1 in die Fehlerkorrekturschaltung 362 eingegeben. Die Ausgabe der Fehlerkorrekturschaltung 362 ist das fehlerkorrigierte Codewort. Der Prüfbiterzeuger 353 verarbeitet dann das korrigierte Wort, z.B. die Daten ohne die Paritätsbits, codiert die Paritätsbits entsprechend der vorher festgelegten Paritätsprüfmatrix des gewählten ECC-Typs oder Programms, wobei das korrigierte Codewort gebildet wird, das in die lokale Speicheranordnung 102a zu schreiben ist.
-
4 ist ein Ablaufdiagramm eines Verfahrens 400 zum Korrigieren von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 300, der in 3 dargestellt ist. Das Verfahren 400 beginnt am Schritt 402, in dem die Syndrome s1 und s3 aus den gelesenen Daten als Teil eines Speicherrefreshvorgangs für die Speicheranordnungen berechnet werden. Zum Beispiel wird ein Codewort aus einem von mehreren Makros 130a-n gelesen, welche die lokalen Speicheranordnungen 102a-n aufweisen, und es werden die Syndrome s1 und s3 berechnet, indem Matrixmultiplikationen an den ausgelesenen Daten unter Verwendung einer vorher festgelegten Paritätsprüfmatrix innerhalb einer lokalen ECC-Schaltung 140a-n ausgeführt werden, die der lokalen Speicheranordnung 102a-n zugeordnet ist, aus der die ausgelesenen Daten während des Refreshzyklus stammen. In einigen Ausführungsformen kann die Berechnung der Syndrome s1 und s3 unter Verwendung des si-Syndrom-Erzeugers 342 und des s3-Syndrom-Erzeugers 344 innerhalb der lokalen ECC-Logik 340 erfolgen, wie in 3 dargestellt ist. Im Schritt 404 werden die Syndrome s1 und s3 bewertet, um zu bestimmen, ob das Codewort mindestens einen Fehler aufweist, wobei zum Beispiel die Fehlerprüfung 346 innerhalb der lokalen ECC-Logik 340 verwendet wird. Liegt kein Fehler vor, dann endet das Verfahren 400 für dieses Codewort und beginnt am Schritt 402 für das nächste Codewort im Refreshzyklus für die lokale Speicheranordnung 102a-n. Liegt mindestens ein Fehler vor, dann wird das Verfahren 400 mit dem Schritt 406 fortgesetzt, in dem die ausgelesenen Daten und die Syndrome s1 und s3 in eine globale ECC-Schaltung 160, wie z.B. die globale ECC-Logik 360, eingegeben werden, die mehreren lokalen Makros zugeordnet ist, die das lokale Makro einschließen, aus dem die aktuellen ausgelesenen Daten stammen, bei denen festgestellt wurde, dass sie mindestens einen Fehler aufweisen. Ob das Codewort nach der Korrektur zurück auf die lokale Speicheranordnung 102 geschrieben werden muss, wird aus den ausgelesenen Daten bestimmt, indem zum Beispiel die EN-Berechnungsschaltung 352 verwendet wird. Die EN-Berechnungsschaltung 352 kann zum Beispiel die Encoder-Stufe eines zyklischen BCH-Fehlerkorrekturcodes sein. In einigen Ausführungsformen fügt die EN-Berechnungsschaltung 352 ein Paritätsbit derart hinzu, dass die globale ECC-Logik 360 eine zusätzliche Fehlererkennung zusätzlich zur Korrektur aufweisen kann, z.B. eine Einfehlerkorrektur-Zweifehlererkennung (SECDED), Zweifehlerkorrektur-Dreifehlererkennung (DECTED) usw. Im Schritt 408 wird s1^3 durch die x^3-Berechnungsschaltung 351 innerhalb der globalen ECC-Logik 360 berechnet. Im Schritt 410 werden die XOR von den Eingaben s1^3 und s3 berechnet, so z.B. durch die XOR-Berechnungsschaltung 354 in der globalen ECC-Logik 360, und das Inverse von s1 wird berechnet, so z.B. durch die Inversberechnungsschaltung 355 in der globalen ECC-Logik 360. Im Schritt 412 wird zum Beispiel durch die GF-Multi-Berechnungsschaltung 356 das GF-Multi berechnet, wobei die Ausgaben der Invers-si- und XOR-Berechnungen verwendet werden. In einigen Ausführungsformen kann die GF-Multi-Berechnungsschaltung 356 die Decoderstufe eines zyklischen BCH-Fehlerkorrekturcodes sein, wobei die Fehlererkennung und Fehlerkorrektur enthalten ist. In einigen Ausführungsformen verarbeitet die GF-Multi-Berechnungsschaltung 356 das Codewort mittels Multiplikation und Akkumulation im Galois-Feld eines jeden Datenbits, wobei die Datenbits als Koeffizienten von Polynomen behandelt werden. Im Schritt 414 wird ein korrigiertes Codewort berechnet, so z.B. durch die Fehlerkorrekturschaltung 362 in der globalen ECC-Logik 360, wobei die ausgelesenen Daten und die Ausgaben der GF-Multi- und Syndrom-si-Berechnungen verwendet werden. Im Schritt 416, wird das korrigierte Wort, z.B. die korrigierten Daten, aus dem korrigierten Codewort extrahiert, und ein Prüfbiterzeuger, zum Beispiel der Prüfbiterzeuger 353 in der globalen ECC-Logik 360, codiert die korrigierten Daten mit Paritätsbits, wobei eine vorher festgelegte Paritätsprüfmatrix gemäß einem gewählten ECC-Typ oder -Programm verwendet wird. Das korrigierte und codierte Codewort wird dann zurück in das lokale Makro 130 geschrieben.
-
5 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 500 für die MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. In dem ECC-Logik-Prozess 500 ist im Vergleich zum ECC-Logik-Prozess 300 von 3 der Prüfbiterzeuger 353 nicht mehr in der globalen ECC-Logik 360 enthalten, sondern ist in der lokalen ECC-Logik 340 enthalten. Mit diesem Unterschied zum ECC-Logik-Prozess 300 werden die Arbeitsgänge zum Codieren der Paritätsbits in die korrigierten Daten und das Schreiben des sich ergebenden korrigierten Codeworts in die lokale Speicheranordnung 102a in der lokalen ECC-Logik 340, die der lokalen Speicheranordnung 102a zugeordnet ist, derart übertragen, dass die globale ECC-Logik 360 nicht mehr verantwortlich für das Codieren der Paritätsbits und das Zurückschreiben des korrigierten Codeworts auf die lokalen Speicheranordnungen 102a-n für die mehreren Makros ist, die gemeinsam die globale ECC-Logik 360 nutzen.
-
6 ist ein Ablaufdiagramm eines Verfahrens 600 zum Korrigieren von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 500. Das Verfahren 600 ist ähnlich zu dem obigen Verfahren 400, wobei der Unterschied darin besteht, dass im Schritt 616 die gleichen Arbeitsgänge, die im Schritt 416 enthalten sind, innerhalb des lokalen ECC statt des globalen ECC ausgeführt werden, wobei diese Arbeit auf die lokale ECC-Logik-Schaltung übertragen wird, wie zuvor im Zusammenhang mit 5 beschrieben wurde. Insbesondere umfasst der Schritt 616 das Extrahieren des korrigierten Wortes, z.B. der korrigierten Daten, aus dem korrigierten Codewort und das Codieren der korrigierten Daten mit Paritätsbits unter Verwendung einer vorher festgelegten Paritätsprüfmatrix entsprechend einem gewählten ECC-Typ oder -Programm, sowie das Schreiben des korrigierten und codierten Codeworts zurück auf das lokale Makro, das der lokalen ECC-Logik-Schaltung zugeordnet ist.
-
7 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 700 für die MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 700 ist ähnlich zu dem obigen ECC-Logik-Prozess 500, wobei es zwei Unterschiede gibt. Der erste Unterschied besteht darin, dass der Syndrom-s1-Erzeuger 342 und der Syndrom-s3-Erzeuger 344 innerhalb der globalen ECC-Logik 360 gedoppelt werden. Das Doppeln des Syndrom-s1-Erzeugers 342 und des Syndrom-s3-Erzeugers 344 innerhalb der globalen ECC-Logik 360 kann die Zahl der Verbindungen verringern, die innerhalb des umfassenden hierarchischen ECC-Programms benötigt werden, und es kann auch die Layout-Struktur vereinfachen. Zum Beispiel erfordern die ECC-Logik-Prozesse 300 und 500, dass jede lokale ECC-Schaltung 140a-n und lokale E/A-Schaltung 106a-n die Übertragung der ausgelesenen Daten und der Syndrome s1 und s3 unterstützen, und sie erfordern, dass die globale ECC-Schaltung 160 das Empfangen der Syndrome s1 und s3 zusammen mit den ausgelesenen Daten unterstützt. Im Gegensatz dazu erfordert der ECC-Logik-Prozess 700 nur, dass die lokalen ECC-Schaltungen 140a-n und die lokalen E/A-Schaltungen die Übermittlung der ausgelesenen Daten unterstützen, und erfordert nur, dass die globale ECC-Schaltung 160 das Empfangen der ausgelesenen Daten unterstützt. Somit können in einigen Ausführungsformen die Verbindungen, die für die Übertragung der Syndrome s1 und s3 zwischen den lokalen E/A-Schaltungen 106a-n und der globalen ECC-Schaltung 160 benötigt werden, bei einer Verwendung des ECC-Logik-Prozesses 700 beseitigt werden, was die Layout-Struktur der MRAM-Vorrichtung 100 vereinfachen kann.
-
Der zweite Unterschied besteht darin, dass in der globalen ECC-Logik 360 eine Fehlererkennungsschaltung 357 enthalten ist. Ähnlich zu der Fehlerprüfschaltung 346 ist die Fehlererkennungsschaltung 357 eingerichtet, zu bestimmen, ob die ausgelesenen Daten, z.B. das Codewort, mindestens einen Fehler enthalten, erledigt das aber innerhalb der globalen ECC-Logik 360. Die Fehlererkennungsschaltung 357 empfängt die Ausgabe der EN-Berechnungsschaltung 351, s1, s3 und s1^3, als Eingaben, und gibt aus, ob die ausgelesenen Daten mindestens einen Fehler aufweisen. Die Fehlererkennungsschaltung 357 kann ausgeben, ob mindestens ein Fehler in den ausgelesenen Daten vorliegt oder ob mindestens zwei Fehler in den ausgelesenen Daten vorliegen, und sie kann ausgeben, ob mindestens drei oder mehr Fehler in den ausgelesenen Daten vorliegen.
-
8 ist ein Ablaufdiagramm eines Verfahrens 800 zur Korrektur von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 700. Das Verfahren 800 ist ähnlich zu dem obigen Verfahren 600, wobei es zwei Unterschiede gibt. Erstens wird der Schritt 406 durch den Schritt 806 ersetzt, in dem s1 und s3 innerhalb der globalen ECC-Schaltung 160 (z.B. der globalen ECC-Logik 360) berechnet werden, statt von den gleichen Arbeitsgängen aus eingegeben zu werden, die im Schritt 406 der Verfahren 400 und 600 enthalten sind. Zweitens wird im Schritt 809 zwischen den Schritten 408 und 410 innerhalb der globalen ECC-Schaltung 160 (z.B. der Fehlererkennungsschaltung 357) berechnet, ob ein Fehler in den ausgelesenen Daten vorliegt, und die Anzahl von Fehlern wird berechnet.
-
9 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 900 für die MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 900 ist ähnlich zu dem obigen ECC-Logik-Prozess 700, wobei es vier Unterschiede gibt. Erstens werden der Syndrom-s1-Erzeuger 342 und der Syndrom-s3-Erzeuger nicht mehr innerhalb der globalen ECC-Logik 360 gedoppelt. Zweitens sind die Dritte-Potenz-Berechnungsschaltung 351, die EN-Berechnungsschaltung 352 und die Fehlererkennungsschaltung 357 in der lokalen ECC-Logik 340 enthalten, und sie sind nicht mehr in der globalen ECC-Logik 360 enthalten. Dadurch dass die Dritte-Potenz-Berechnungsschaltung 351, die EN- Berechnungsschaltung 352 und die Fehlererkennungsschaltung 357 innerhalb der lokale ECC-Logik 340 vorhanden sind, nehmen die Brauchbarkeit der Berechnungen und die Leistung der lokalen ECC-Logik 340 zu. Für MRAM-Vorrichtungen 100, bei denen eine vergleichsweise höhere Datenfehlerrate auftritt, können sowohl die Energieverbrauchsbelastung bei der Datenbewegung als auch die Datenwartezeit infolge der Auslagerung der Fehlererkennungs- und Korrekturarbeitsgänge in die gemeinsam genutzte globale ECC-Schaltung 160 den Nutzen der Flächenersparnis überwiegen, der bei der Beseitigung der Schaltkreise zum Ausführen dieser Arbeitsgänge in den lokalen Speicher-Makros 130a-n erreicht wird. In derartigen Fällen kann die Effizienz der MRAM-Vorrichtung 100 erhöht werden, indem die Balance zwischen Fläche, Energieverbrauch und Datenwartezeit, die mit der Fehlerprüfung verbunden sind, durch eine Aufstockung der lokal ausgeführten Arbeitsgänge angepasst wird. Indem zum Beispiel die EN-Berechnung und die Berechnung der dritten Potenz des Syndroms s1 einbezogen werden, kann die lokale ECC-Logik 340 des ECC-Logik-Prozesses 900 auch die Fehlererkennung, z.B. mithilfe der Fehlererkennungsschaltung 357, ausführen und kann somit die Anzahl von Fehlern genauer erkennen, was umfasst, dass das Vorliegen eines Fehlers im Codewort und auch die Anzahl von Fehlern innerhalb des Codewortes und des Wortes erkannt werden.
-
Der dritte Unterschied besteht darin, dass die Fehlerprüfschaltung 351 weggelassen wird. Der vierte Unterschied besteht darin, dass der Prüfbiterzeuger 353 statt in die lokale ECC-Logik 340 wieder in die globale ECC-Logik 360 einbezogen wird, was ähnlich zum ECC-Logik-Prozess 300 ist.
-
10 ist ein Ablaufdiagramm eines Verfahrens 1000 zur Korrektur von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 900. Das Verfahren 1000 ist ähnlich zu dem obigen Verfahren 800, wobei es vier Unterschiede gibt. Erstens wird nach dem Schritt 402 der Schritt 1003 einbezogen, in dem s1^3 und EN durch die x^3-Berechnungsschaltung 351 bzw. die EN-Berechnungsschaltung 352 innerhalb der lokalen ECC-Logik 340 berechnet werden. Zweitens wird der Schritt 404 durch den Schritt 1004 ersetzt, in dem das Vorhandensein eines Fehlers in den ausgelesenen Daten und die Anzahl von Fehlern in den ausgelesenen Daten durch die Fehlererkennungsschaltung 357 innerhalb der lokalen ECC-Logik 340 berechnet werden, und er basiert auf den Berechnungen von s1, s3, s1^3 und EN. Liegt kein Fehler vor, dann endet das Verfahren 1000 für dieses Codewort und beginnt am Schritt 402 des Verfahrens 1000 für das nächste Codewort in dem Refreshzyklus für die lokale Speicheranordnung 102a. Drittens, liegt mindestens ein Fehler vor, dann geht das Verfahren 1000 zum Schritt 1006 über, in dem die ausgelesenen Daten, die Syndrome s1 und s3, s1^3 und die erkannte Anzahl von Fehlern in die globale ECC-Logik 360 eingegeben werden. Viertens wird in dem Verfahren 1000 der Schritt 616 des Verfahrens 800 durch den Schritt 416 des Verfahrens 400 ersetzt, das heißt im Schritt 416 des Verfahrens 1000 wird das korrigierte Wort, z.B. die korrigierten Daten, aus dem korrigierten Codewort extrahiert, und der Prüfbiterzeuger 353 in der globalen ECC-Logik 360 codiert die korrigierten Daten mit Paritätsbits unter Verwendung einer vorher festgelegten Paritätsprüfmatrix gemäß einem gewählten ECC-Typ oder -Programm, und das korrigierte und codierte Codewort wird zurück in das lokale Makro 130 geschrieben.
-
11 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 1100 zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 1100 ist ähnlich zu dem obigen ECC-Logik-Prozess 900, wobei der Unterschied darin besteht, dass der Prüfbiterzeuger 353 nicht mehr in der globalen ECC-Logik 360 sondern in der lokalen ECC-Logik 340 enthalten ist. Wie oben in Zusammenhang mit dem ECC-Logik-Prozess 500 von 5 festgestellt wurde, besteht dieser Unterschied darin, dass die Arbeitsgänge zum Codieren von Paritätsbits in die korrigierten Daten und zum Schreiben des sich ergebenden korrigierten Codeworts in die lokale Speicheranordnung 102a derart auf die lokale ECC-Logik 360, die der lokalen Speicheranordnung 102a zugeordnet ist, übertragen werden, dass die globale ECC-Logik nicht mehr verantwortlich für das Codieren der Parität und das Schreiben der korrigierten Codewörter für die mehreren Speicher-Makros 130a-n ist, welche die globale ECC-Logik 360 gemeinsam nutzen.
-
12 ist ein Ablaufdiagramm eines Verfahrens 1200 für die Korrektur von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 1100. Das Verfahren 1200 ist ähnlich zu dem obigen Verfahren 1000, wobei der Unterschied darin besteht, dass der Schritt 416 derart durch den Schritt 616 ersetzt ist, dass das Extrahieren des korrigierten Wortes, z.B. der korrigierten Daten, aus dem korrigierten Codewort und das Codieren der korrigierten Daten mit Paritätsbits unter Verwendung einer vorher festgelegten Paritätsprüfmatrix gemäß einem gewählten ECC-Typ oder -Programm sowie das Schreiben des korrigierten und codierten Codeworts zurück in die lokale Speicheranordnung 102, die der lokalen ECC-Logik 340 zugeordnet ist, innerhalb der lokalen ECC-Logik 340 statt innerhalb der globalen ECC-Logik 360 ausgeführt werden, so z.B. mit den Verfahren 600 und 800,.
-
13 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 1300 zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 1300 ist ähnlich zu dem obigen ECC-Logik-Prozess 1100, wobei der Unterschied darin besteht, dass der Syndrom-s1-Erzeuger 342, der Syndrom-s3-Erzeuger 344 und die Dritte-Potenz-Berechnungsschaltung 351 innerhalb der globalen ECC-Logik 360 gedoppelt werden. Wie oben im Zusammenhang mit 7 beschrieben wurde, kann das Doppeln des Syndroms1-Erzeugers 342, des Syndrom-s3-Erzeugers 344 und der Dritte-Potenz-Berechnungsschaltung 351 innerhalb der globalen ECC-Logik 360 die Anzahl der Verbindungen verringern, die innerhalb des umfassenden hierarchischen ECC-Programms benötigt werden, und es kann auch die Layout-Struktur vereinfachen.
-
14 ist ein Ablaufdiagramm eines Verfahrens 1400 für die MRAM-Fehlerkorrektur unter Verwendung des ECC-Logik-Prozesses 1300. Das Verfahren 1400 ist ähnlich zu dem obigen Verfahren 1200, wobei der Unterschied darin besteht, dass ein Schritt 1406 den Schritt 1006 ersetzt. Mit anderen Worten, die Syndrome s1 und s3, und s1^3 werden innerhalb der globalen ECC-Logik 360 als ein Dopplung der Größen berechnet, welche innerhalb der lokalen ECC-Logik 340 berechnet werden. Das erfolgt anstelle der Eingabe dieser Größen in die globale ECC-Logik 360 von der lokalen ECC-Logik 340 aus, wie sie im Schritt 1006 von Verfahren 1200 erfolgt. Somit umfasst der Schritt 1406 des Verfahrens 1400 eine Eingabe der ausgelesenen Daten und der Fehleranzahl, die vom Schritt 1004 her erkannt wurde, in die globale ECC-Logik 360 sowie das Doppeln der Berechnungen von s1, s3, und s1^3 innerhalb der globalen ECC-Logik 360. Das ist ähnlich zu der Dopplung, die in dem Verfahren 800 stattfindet, das in 8 in Verbindung mit dem ECC-Prozess 700 von 7 dargestellt ist.
-
15 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 1500 zur MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 1500 ist ähnlich zu dem obigen ECC-Logik-Prozess 900, wobei der Unterschied darin besteht, dass die XOR-Schaltung 354, die Inversberechnungsschaltung 355 und die GF-Multi-Berechnungsschaltung 356 in der lokalen ECC-Logik 340 enthalten sind und nicht mehr in der globalen ECC-Logik 360 enthalten sind. Das Einbeziehen der XOR-Schaltung 354, der Inversberechnungsschaltung 355 und der GF-Multi-Berechnungsschaltung 356 in die lokale ECC-Logik 340 vergrößert die Brauchbarkeit der Berechnungen und die Leistung der lokalen ECC-Logik. Wie oben in Verbindung mit dem ECC-Prozess 900 und der 9 beschrieben wurde, kann die Effizienz der MRAM-Vorrichtung 100 erhöht werden, indem die Balance zwischen Fläche, Energieverbrauch und Datenwartezeit, die mit der Fehlerprüfung verbunden sind, durch eine Aufstockung der lokal ausgeführten Arbeitsgänge angepasst wird, wenn die Datenfehlerraten zunehmen, indem z.B. ein Flächenkompromiss eingegangen wird, bei dem mehr Prüfschaltkreise lokal innerhalb der lokalen ECC-Schaltungen 140a-n eingerichtet werden, um die Datenwartezeit und den Energieverbrauch zu verringern, die mit einer Datenverschiebung zu einer gemeinsam genutzten globalen ECC-Schaltung 160 hin verbunden sind. Zum Beispiel führt die lokale ECC-Logik 340 in dem ECC-Logik-Prozess 1500 alle ECC-Arbeitsgänge lokal aus, außer der Fehlerkorrektur und dem Codieren und Schreiben der fehlerkorrigierten Daten auf das lokale Makro.
-
16 ist ein Ablaufdiagramm eines Verfahrens 1600 für die Korrektur von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 1500. Das Verfahren 1600 ist ähnlich zu dem obigen Verfahren 1000, wobei es fünf Unterschiede gibt. Erstens wird in dem Verfahren 1600 der Schritt 1004 des Verfahrens 1000 durch den Schritt 1604 ersetzt. Im Schritt 1604 des Verfahrens 1600 werden die gleichen Arbeitsgänge wie im Schritt 1004 des Verfahrens 1000 ausgeführt, das heißt auf Basis der Berechnungen von s1, s3, s1^3 und EN wird innerhalb der lokale ECC-Logik 340 berechnet, ob ein Fehler vorliegt, und die Anzahl von Fehlern in den ausgelesenen Daten wird berechnet. Der einzige Unterschied besteht darin, dass beim Vorliegen eines Fehlers in den ausgelesenen Daten der Schritt 1604 statt des Schrittes 1006 zum Schritt 1610 des Verfahrens 1600 übergeht. Das liegt an den zusätzlichen Schaltungen, welche die lokale ECC-Logik 340 im ECC-Logik-Prozess 1500 aufweist. Zweitens wird der Schritt 1006 in dem Verfahren 1600 nicht ausgeführt, und stattdessen folgt im Verfahren 1600 als dritter Unterschied zum Verfahren 1000 der Schritt 1610 auf den Schritt 1604. Im Schritt 1610 wird das XOR von s1^3 mit s3 berechnet, so z.B. durch die XOR-Berechnungsschaltung 354, zusammen mit dem Inversen von s1, das z.B. durch die Inversberechnungsschaltung 355 innerhalb der lokalen ECC-Logik 340 berechnet wird. Viertens wird im Schritt 1612 das GF-Multi innerhalb der lokalen ECC-Logik 340 berechnet, und fünftens werden im Schritt 1613 die ausgelesenen Daten, die Zahl der erkannten Fehler, s1 und das GF-Multi-Berechnungsergebnis in die globale ECC-Logik 360 eingegeben und zur Berechnung des korrigierten Codeworts im Schritt 414 des Verfahrens 1600 verwendet.
-
17 ist ein Blockdiagramm, das ein Beispiel für einen ECC-Logik-Prozess 1700 für die MRAM-Fehlerkorrektur gemäß einer Ausführungsform allgemein darstellt. Der ECC-Logik-Prozess 1700 ist ähnlich zu dem obigen ECC-Logik-Prozess 1500, wobei der Unterschied darin besteht, dass der Prüfbiterzeuger 353 nicht mehr in der globalen ECC-Logik 360, sondern in der lokalen ECC-Logik 340 enthalten ist. Wie oben in Zusammenhang mit den 5 und 11 festgestellt wurde, werden durch diesen Unterschied des ECC-Logik-Prozesses 1700 die Arbeitsgänge zum Codieren der Paritätsbits in die korrigierten Daten und zum Schreiben des sich ergebenden korrigierten Codewortes in die lokale Speicheranordnung 102a derart auf die lokale ECC-Logik 340 verlagert, die der lokalen Speicheranordnung 102a zugeordnet ist, dass die globale ECC-Logik 360 nicht mehr für das Codieren der Parität und das Schreiben des korrigierten Codeworts für die mehreren Speicher-Makros 130a-n verantwortlich ist, welche die globale ECC-Logik 360 gemeinsam nutzen.
-
18 ist ein Ablaufdiagramm eines Verfahrens 1800 für die Korrektur von MRAM-Fehlern unter Verwendung des ECC-Logik-Prozesses 1700. Das Verfahren 1800 ist ähnlich zu dem obigen Verfahren 1600, wobei der Unterschied darin besteht, dass der Schritt 416 derart durch den Schritt 616 ersetzt wird, dass das Extrahieren des korrigierten Wortes, z.B. der korrigierten Daten, aus dem korrigierten Codewort und das Codieren der korrigierten Daten mit Paritätsbits unter Verwendung einer vorher festgelegten Paritätsprüfmatrix gemäß einem gewählten ECC-Typ oder -Programm sowie das Schreiben des korrigierten und codierten Codeworts zurück in das lokale Speicher-Makro 130, das der lokalen ECC-Logik 340 zugeordnet ist, innerhalb der lokalen ECC-Logik 340 durchgeführt werden, so z.B. mit den Verfahren 600, 800,1200 und 1400, statt innerhalb der globalen ECC-Logik 360.
-
19 ist ein Ablaufdiagramm eines Verfahrens 1900 für die Korrektur von MRAM-Fehlern unter Verwendung eines hierarchischen ECC-Logik-Prozesses gemäß einigen Ausführungsformen. Das Verfahren 1900 beginnt im Schritt 1902, bei dem mehrere Speicher-Makros, z.B. die MRAM-Speicher-Makros 130a-n, bereitgestellt werden, von denen jedes mindestens eine Speicherzellanordnung und eine lokale ECC-Logik-Schaltung aufweist. In einigen Ausführungsformen umfassen die mehreren Speicher-Makros die lokalen Speicheranordnungen 102a-n, von denen jede entsprechend die lokale ECC-Logik 140a-n aufweist. Im Schritt 1904 wird eine globale ECC-Logik-Schaltung bereitgestellt, die von den MRAM-Makros räumlich getrennt und mit jedem von den mehreren MRAM-Makros verbunden ist. In einigen Ausführungsformen weist die globale ECC-Logik-Schaltung die globale ECC-Logik 160 auf. Im Schritt 1906 werden die Daten aus den lokalen MRAM-Makros geprüft, zum Beispiel als ein Teil eines Refreshzyklus, in welchem Teilbereiche des lokalen MRAM-Speichers, z.B. die ausgelesenen Daten oder Codewörter, innerhalb der lokalen ECC-Logik-Schaltung auf Fehler geprüft werden. Werden in einem bestimmten Codewort keine Fehler gefunden, dann wird das nächste Codewort in dem Makro als ein Teil des Refreshzyklus geprüft. Das Verfahren 1900 geht dann zum Schritt 1908 über, in dem dann, wenn mindestens ein Fehler in der Speicheranordnung eines lokalen Makro gefunden wird, die Daten, die geprüft wurden und bei denen gefunden wurde, dass sie mindestens einen Fehler aufweisen, so z.B das Codewort mit dem mindestens einen Fehler, zusammen mit den Ausgaben der Berechnungsschaltungen in der lokalen ECC-Logik-Schaltung an eine globale ECC-Logik gesendet werden. Im Schritt 1910 werden die Daten, die mindestens einen Fehler aufweisen, innerhalb der globalen ECC-Logik-Schaltung korrigiert, und im Schritt 1912 werden die korrigierten Daten zurück in die lokale Makro-Speicheranordnung geschrieben.
-
Die offenbarten Beispiele liefern somit eine Fehlererkennung und Korrektur für Speichervorrichtungen, und insbesondere für Kurzzeitspeichervorrichtungen, wie z.B. MRAM, die ein periodisches Refresh erfordern. Durch Verwendung eines hierarchischen ECC-Ansatzes, in dem einige ECC-Funktionen einem Speicher-Makro lokal zur Verfügung gestellt werden und andere ECC-Funktionen global bereitgestellt werden, kann eine Makro-Flächenreduzierung sowie eine Leistungsverringerung für die MRAM-Vorrichtungen bei einer hinreichend niedrigen Fehlerrate erreicht werden. Bestimmte offenbarte Ausführungsformen weisen eine Speichervorrichtung, wie z.B. eine MRAM Speichervorrichtung, mit mehreren Speicher-Makros auf, die alle eine Anordnung von Speicherzellen und eine erste ECC-Schaltung umfassen. Die erste ECC-Schaltung ist eingerichtet, Datenfehler in dem jeweiligen Speicher-Makro zu erkennen. Eine zweite ECC-Schaltung ist entfernt liegend von den mehreren Speicher-Makros angeordnet und über eine Kommunikationsverbindung an jedes von den mehreren Speicher-Makros gekoppelt. Die zweite ECC-Schaltung ist eingerichtet, die erkannten Datenfehler aus den ersten ECC-Schaltungen von den mehreren Speicher-Makros zu empfangen und die Datenfehler zu korrigieren.
-
Gemäß weiteren Ausbildungen weist ein ECC-System mehrere erste ECC-Schaltungen auf. Jede der mehreren ersten ECC-Schaltungen ist eingerichtet, über eine Kommunikationsverbindung an eine jeweilige Speicheranordnung gekoppelt zu werden, und sie ist eingerichtet, die Datenfehler in der jeweiligen Speicheranordnung zu erkennen. Eine zweite ECC-Schaltung ist über eine Kommunikationsverbindung mit einer jeden von den mehreren ersten ECC-Schaltungen verbunden und eingerichtet, die erkannten Datenfehler von den mehreren ersten ECC-Schaltungen aus zu empfangen und die Datenfehler zu korrigieren.
-
Gemäß noch weiteren Ausbildungen umfasst ein Verfahren das Bereitstellen von mehreren Speicher-Makros, von denen jedes eine Anordnung von Speicherzellen und eine erste ECC-Schaltung aufweist. Das Verfahren umfasst ferner das Bereitstellen einer zweiten ECC-Schaltung, die entfernt liegend von den mehreren Speicher-Makros angeordnet und über eine Kommunikationsverbindung mit jedem von den mehreren Speicher-Makros verbunden ist, und das Refresh der Speicheranordnungen einschließlich des Prüfens auf Datenfehler in den Speicheranordnungen mit den ersten ECC-Schaltungen. Wird ein Datenfehler durch die ersten ECC-Schaltungen erkannt, dann umfasst das Verfahren ferner das Weiterleiten des erkannten Datenfehlers an die zweite ECC-Schaltung, das Korrigieren des Datenfehlers durch die zweite ECC-Schaltung und das Schreiben der korrigierten Daten in die Speicheranordnungen.
-
In dieser Offenbarung werden verschiedene Ausführungsformen so dargelegt, dass Fachleute die Ausbildungen der vorliegenden Offenbarung besser verstehen können. Fachleute sollten anerkennen, dass sie die vorliegende Offenbarung leicht als eine Grundlage dafür einsetzen können, andere Prozesse und Strukturen zu konzipieren oder abzuwandeln, um die gleichen Zielstellungen zu realisieren und/oder die gleichen Vorteile der hier dargelegten Ausführungsformen zu erreichen. Fachleute sollten auch erkennen, dass derartige gleichwertige Konstruktionen nicht vom Grundgedanken und Umfang der vorliegenden Offenbarung abweichen und dass sie hierin verschiedenartige Veränderungen, Ersetzungen und Abwandlungen erzeugen können, ohne vom Grundgedanken und Umfang der vorliegenden Offenbarung abzuweichen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-