DE102019123642A1 - Speicherfehlererkennung und korrektur - Google Patents

Speicherfehlererkennung und korrektur Download PDF

Info

Publication number
DE102019123642A1
DE102019123642A1 DE102019123642.8A DE102019123642A DE102019123642A1 DE 102019123642 A1 DE102019123642 A1 DE 102019123642A1 DE 102019123642 A DE102019123642 A DE 102019123642A DE 102019123642 A1 DE102019123642 A1 DE 102019123642A1
Authority
DE
Germany
Prior art keywords
syndrome
circuit
generator
ecc
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019123642.8A
Other languages
English (en)
Inventor
Hiroki Noguchi
Yu-Der Chih
Hsueh-Chih Yang
Randy Osborne
Win San Khwa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Taiwan Semiconductor Manufacturing Co TSMC Ltd filed Critical Taiwan Semiconductor Manufacturing Co TSMC Ltd
Publication of DE102019123642A1 publication Critical patent/DE102019123642A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1655Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1677Verifying circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/025Detection or location of defective auxiliary circuits, e.g. defective refresh counters in signal lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/31Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining coding for error detection or correction and efficient use of the spectrum
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/161Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1202Word line control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Mram Or Spin Memory Techniques (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hall/Mr Elements (AREA)

Abstract

Eine Speichervorrichtung, wie z.B. eine MRAM-Vorrichtung, umfasst mehrere Speicher-Makros, wobei jedes eine Anordnung von Speicherzellen und eine erste ECC-Schaltung aufweist, die eingerichtet ist, Datenfehler in dem jeweiligen Speicher-Makro zu erkennen. Eine zweite ECC-Schaltung liegt entfernt von den mehreren Speicher-Makros und ist über eine Kommunikationsverbindung mit jedem von den mehreren Speicher-Makros verbunden. Die zweite ECC-Schaltung ist eingerichtet, die erkannten Datenfehler aus den ersten ECC-Schaltungen der mehreren Speicher-Makros zu empfangen und die Datenfehler zu korrigieren.

Description

  • 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
    • US 62/738177 [0001]

Claims (20)

  1. Speichervorrichtung mit: mehreren Speicher-Makros, von denen jedes eine Anordnung von Speicherzellen und eine erste Fehlerkorrekturcode-Schaltung, ECC-Schaltung, aufweist, die eingerichtet ist, Datenfehler in dem jeweiligen Speicher-Makro zu erkennen; einer zweiten ECC-Schaltung, die entfernt von den mehreren Speicher-Makros liegt und in einer Kommunikationsverbindung an jedes von den mehreren Speicher-Makros gekoppelt ist, und die eingerichtet ist, die erkannten Datenfehler von den ersten ECC-Schaltungen der mehreren Speicher-Makros aus zu empfangen, die Datenfehler zu korrigieren und die korrigierten Daten in die Speicheranordnungen zu schreiben.
  2. Speichervorrichtung nach Anspruch 1, wobei die Speicher-Makros jeweils ein magnetisches Direktzugriffspeicher, MRA-Makro aufweisen.
  3. Speichervorrichtung nach Anspruch 2, wobei die MRAM-Makros jeweils ferner aufweisen: eine Anordnung von MRAM-Bitzellen, wobei jede MRAM-Bitzelle aufweist: ein magnetisches Tunnelübergangselement; einen Zugriffstransistor, der mit dem magnetischen Tunnelübergangselement verbunden ist; eine erste Bitleitung die mit dem Zugriffstransistor verbunden ist; eine zweite Bitleitung, die mit dem magnetischen Tunnelübergangselement verbunden ist; eine Wortleitung, die mit dem Gate des Zugriffstransistors verbunden ist; und ein lokaler Eingabe-Ausgabe-Schaltkreis, der mit der ersten und der zweiten Bitleitung der MRAM-Bitzellen verbunden ist.
  4. Speichervorrichtung nach Anspruch 3, wobei die erste ECC-Schaltung aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; einen zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndrom-si-Erzeugers und des zweiten Syndrom-s3-Erzeugers verbunden ist.
  5. Speichervorrichtung nach Anspruch 4, wobei die zweite ECC-Schaltung aufweist: eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom-s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist; eine Fehlerkorrekturschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der MRAM-Zellen mit einem Fehler.
  6. Speichervorrichtung nach Anspruch 3, wobei die erste ECC-Schaltung aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; einen zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndroms1-Erzeugers, des zweiten Syndrom-s3-Erzeugers, der EN-Berechnungsschaltung und der Syndrom-s1^3-Berechnungsschaltung verbunden ist.
  7. Speichervorrichtung nach Anspruch 6, wobei die zweite ECC-Schaltung aufweist: eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom-s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist; eine Fehlerkorrekturschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der MRAM-Zellen mit einem Fehler.
  8. Speichervorrichtung nach Anspruch 3, wobei die erste ECC-Schaltung aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndrom-si-Erzeugers, des zweiten Syndrom-s3-Erzeugers, der EN-Berechnungsschaltung und der Syndrom-s1^3-Berechnungssehaltung verbunden ist; eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom- s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; und eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist.
  9. Speichervorrichtung nach Anspruch 8, wobei die zweite ECC-Schaltung aufweist: eine Fehlerkorrekturschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der MRAM-Zellen mit einem Fehler.
  10. ECC-System mit: mehreren ersten ECC-Schaltungen, wobei jede der mehreren ersten ECC-Schaltungen eingerichtet ist, über eine Kommunikationsverbindung mit einer entsprechenden Speicheranordnung verbunden zu sein und die Datenfehler in der entsprechenden Speicheranordnung zu erkennen; und einer zweiten ECC-Schaltung, die über eine Kommunikationsverbindung mit jeder von den mehreren ersten ECC-Schaltungen verbunden und eingerichtet ist, die erkannten Datenfehler aus den mehreren ersten ECC-Schaltungen zu empfangen und die Datenfehler zu korrigieren.
  11. ECC-System nach Anspruch 10, wobei jede der mehreren ersten ECC-Schaltungen aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; einen zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; und eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndrom-si-Erzeugers und des zweiten Syndrom-s3-Erzeugers verbunden ist; und wobei die zweite ECC-Schaltung aufweist: eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom-s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist; einer Fehlerkorrekturschaltung die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der Speicherzellen, die einen Fehler aufweisen.
  12. ECC-System nach Anspruch 10, wobei jede der mehreren ersten ECC-Schaltungen aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; einen zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; und eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndrom-si-Erzeugers und des zweiten Syndroms s3, der EN-Berechnungsschaltung und der Syndrom-s1^3-Berechnungssehaltung verbunden ist; wobei die zweite ECC-Schaltung aufweist: eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom-s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; und eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist; eine Fehlerkorrekturschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der Speicherzellen, die einen Fehler aufweisen.
  13. ECC-System nach Anspruch 10, wobei jede der mehreren ersten ECC-Schaltungen aufweist: einen ersten Syndrom-s1-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; einen zweiten Syndrom-s3-Erzeuger, der mit der ersten und der zweiten Bitleitung verbunden ist; eine EN-Berechnungsschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis verbunden ist; eine Syndrom-s1^3-Berechnungsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; eine Fehlerprüfschaltung, die mit dem jeweiligen Ausgang des ersten Syndrom-si-Erzeugers, des zweiten Syndroms s3, der EN-Berechnungsschaltung und der Syndrom-s1^3-Berechnungssehaltung verbunden ist; eine Syndrom-si-Inversionsschaltung, die mit dem Ausgang des ersten Syndrom-s1-Erzeugers verbunden ist; einen Syndrom-Komparator, der mit dem Ausgang des Syndrom-s1^3-Erzeugers und dem Ausgang des zweiten Syndrom-s3-Erzeugers verbunden ist; eine GF-Multi-Berechnungsschaltung, die mit dem Ausgang des Syndrom-Komparators und dem Ausgang der Syndrom-si-Inversionsschaltung verbunden ist; wobei die zweite ECC-Schaltung aufweist: eine Fehlerkorrekturschaltung, die mit dem lokalen Eingabe-Ausgabe-Schaltkreis, dem Syndrom-s1-Erzeuger und der GF-Multi-Berechnungsschaltung verbunden ist; und eine Prüfbiterzeugerschaltung für die Korrektur der Speicherzellen, die einen Fehler aufweisen.
  14. Verfahren, umfassend: Bereitstellen von mehreren Speicher-Makros, von denen jedes eine Anordnung von Speicherzellen und eine erste ECC-Schaltung aufweist; Bereitstellung einer zweiten ECC-Schaltung räumlich getrennt von den mehreren Speicher-Makros und über eine Kommunikationsverbindung mit jedem von den mehreren Speicher-Makros verbunden; Refreshen der Speicheranordnungen einschließlich der Prüfung auf Datenfehler in den Speicheranordnungen mit den ersten ECC-Schaltungen; wenn durch die ersten ECC-Schaltungen ein Datenfehler erkannt wird, Weiterleiten des erkannten Datenfehlers an die zweite ECC-Schaltung; Korrigieren des Datenfehlers durch die zweite ECC-Schaltung; und Schreiben der korrigierten Daten in die Speicheranordnungen.
  15. Verfahren nach Anspruch 14, wobei die Überprüfung auf Datenfehler in der MRAM-Anordnung mit den ersten ECC-Schaltungen umfasst: Erzeugen eines Syndroms s1 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s3 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Fehlerprüfung auf Basis des Syndroms si und des Syndroms s3.
  16. Verfahren nach Anspruch 15, wobei das Korrigieren des Datenfehlers mit der zweiten ECC-Schaltung umfasst: Erzeugen eines EN auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s1^3 auf Basis des Syndroms si; Erzeugen einer Syndrom-si-Invertierung auf Basis des Syndroms si; Vergleichen des Syndroms s1^3 und des Syndroms s3; Erzeugen einer GF-Multi-Berechnung auf Basis der Syndrom-si-Invertierung und des Vergleichs des Syndroms s1^3 und des Syndroms s3; Erzeugen einer Prüfbit-Fehlerkorrektur auf Basis des EN, des Syndroms s1 und der GF-Multi-Berechnung; und Schreiben der Prüfbit-Fehlerkorrektur in die MRAM-Anordnung zum Korrigieren des Fehlers.
  17. Verfahren nach Anspruch 14, wobei das Prüfen auf Datenfehler in der MRAM-Anordnung mit der ersten ECC-Schaltung umfasst: Erzeugen eines Syndroms s1 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s3 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines EN auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s1^3 auf Basis des Syndroms si; und Fehlerprüfung auf Basis des Syndroms s1, des Syndroms s3, des EN und des Syndroms s1^3.
  18. Verfahren nach Anspruch 17, wobei das Korrigieren des Datenfehlers mit der zweiten ECC-Schaltung umfasst: Erzeugen einer Syndrom-si-Invertierung auf Basis des Syndroms si; Vergleichen des Syndroms s1^3 und des Syndroms s3; Erzeugen einer GF-Multi-Berechnung auf Basis der Syndrom-si-Invertierung und des Vergleichs des Syndroms s1^3 und des Syndroms s3; Erzeugen einer Prüfbit-Fehlerkorrektur auf Basis des EN, des Syndroms s1 und der GF-Multi-Berechnung; und Schreiben der Prüfbit-Fehlerkorrektur in die MRAM-Anordnung zum Korrigieren des Fehlers.
  19. Verfahren nach Anspruch 14, wobei die Prüfung auf Datenfehler in der MRAM-Anordnung mit den ersten ECC-Schaltungen umfasst: Erzeugen eines Syndroms s1 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s3 auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines EN auf Basis von Daten, die aus der MRAM-Anordnung empfangen wurden; Erzeugen eines Syndroms s1^3 auf Basis des Syndroms si; Fehlerprüfung auf Basis des Syndroms s1, des Syndroms s3, des EN und des Syndroms s1^3; Erzeugen einer Syndrom-si-Invertierung auf Basis des Syndroms si; Vergleichen des Syndroms s1^3 und des Syndroms s3; und Erzeugen einer GF-Multi-Berechnung auf Basis der Syndrom-si-Invertierung und des Vergleichs des Syndroms s1^3 und des Syndroms s3.
  20. Verfahren nach Anspruch 19, wobei das Korrigieren des Datenfehlers mit der zweiten ECC-Schaltung umfasst: Erzeugen einer Prüfbit-Fehlerkorrektur auf Basis des EN, des Syndroms s1 und der GF-Multi-Berechnung; und Schreiben der Prüfbit-Fehlerkorrektur in die MRAM-Anordnung zum Korrigieren des Fehlers.
DE102019123642.8A 2018-09-28 2019-09-04 Speicherfehlererkennung und korrektur Pending DE102019123642A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862738177P 2018-09-28 2018-09-28
US62/738,177 2018-09-28
US16/535,787 US11204826B2 (en) 2018-09-28 2019-08-08 Memory error detection and correction
US16/535,787 2019-08-08

Publications (1)

Publication Number Publication Date
DE102019123642A1 true DE102019123642A1 (de) 2020-04-02

Family

ID=69781255

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019123642.8A Pending DE102019123642A1 (de) 2018-09-28 2019-09-04 Speicherfehlererkennung und korrektur

Country Status (2)

Country Link
US (3) US11204826B2 (de)
DE (1) DE102019123642A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11710030B2 (en) * 2018-08-31 2023-07-25 Texas Instmments Incorporated Fault detectable and tolerant neural network
US11204826B2 (en) * 2018-09-28 2021-12-21 Taiwan Semiconductor Manufacturing Company, Ltd. Memory error detection and correction
US11016843B2 (en) * 2018-12-06 2021-05-25 Micron Technology, Inc. Direct-input redundancy scheme with adaptive syndrome decoder
US12081237B2 (en) * 2019-09-23 2024-09-03 SK Hynix Inc. Processing-in-memory (PIM) devices
US11438015B2 (en) * 2020-07-10 2022-09-06 Taiwan Semiconductor Manufacturing Company, Ltd. Two-level error correcting code with sharing of check-bits
US11687407B2 (en) * 2020-08-27 2023-06-27 Micron Technologies, Inc. Shared error correction code (ECC) circuitry
US11907544B2 (en) 2020-08-31 2024-02-20 Micron Technology, Inc. Automated error correction with memory refresh
US11461174B2 (en) * 2020-08-31 2022-10-04 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit and method of operating same
US12086026B2 (en) 2021-03-17 2024-09-10 Micron Technology, Inc. Multiple error correction code (ECC) engines and ECC schemes
US11742047B2 (en) * 2021-06-29 2023-08-29 Micron Technology, Inc. Shared error correction coding circuitry
US12014797B2 (en) 2022-04-27 2024-06-18 Micron Technology, Inc. Apparatuses, systems, and methods for managing metadata storage at a memory
US11955989B2 (en) * 2022-08-21 2024-04-09 Nanya Technology Corporation Memory device and test method thereof
TWI835381B (zh) * 2022-11-02 2024-03-11 慧榮科技股份有限公司 資料加密的錯誤偵測裝置
US20240170088A1 (en) * 2022-11-15 2024-05-23 Micron Technology, Inc. Apparatuses and methods for configurable ecc modes

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5721739A (en) * 1995-12-14 1998-02-24 Fairchild Semiconductor Corporation Method for detecting read errors, correcting single-bit read errors and reporting multiple-bit read errors
JP4270707B2 (ja) * 1999-04-09 2009-06-03 株式会社東芝 ダイナミック型半導体記憶装置
US7383464B2 (en) * 2003-12-08 2008-06-03 International Business Machines Corporation Non-inline transaction error correction
JP2005216339A (ja) * 2004-01-28 2005-08-11 Nec Electronics Corp 半導体集積回路装置
JP2006190425A (ja) 2005-01-07 2006-07-20 Nec Electronics Corp 半導体記憶装置
US7600177B2 (en) * 2005-02-08 2009-10-06 Lsi Corporation Delta syndrome based iterative Reed-Solomon product code decoder
JP2007066463A (ja) * 2005-09-01 2007-03-15 Renesas Technology Corp 半導体装置
TWI303487B (en) * 2006-06-13 2008-11-21 Au Optronics Corp Method for manufactruring an array substate of a transflective liquid crystal display
US7895502B2 (en) * 2007-01-04 2011-02-22 International Business Machines Corporation Error control coding methods for memories with subline accesses
US20080270683A1 (en) * 2007-04-25 2008-10-30 International Business Machines Corporation Systems and methods for a dram concurrent refresh engine with processor interface
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US20090199043A1 (en) * 2008-01-31 2009-08-06 Peter Schrogmeier Error correction in an integrated circuit with an array of memory cells
KR20120063329A (ko) 2010-12-07 2012-06-15 삼성전자주식회사 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템
US9336342B2 (en) * 2011-09-23 2016-05-10 Synopsys, Inc. Memory hard macro partition optimization for testing embedded memories
US9235466B2 (en) 2012-07-03 2016-01-12 Samsung Electronics Co., Ltd. Memory devices with selective error correction code
KR102083498B1 (ko) 2012-07-03 2020-04-14 삼성전자 주식회사 선택적 ecc 동작을 수행하는 메모리 장치
US8938656B2 (en) 2012-09-14 2015-01-20 Sandisk Technologies Inc. Data storage device with intermediate ECC stage
US20160147598A1 (en) * 2013-07-31 2016-05-26 Hewlett-Packard Development Company, L.P. Operating a memory unit
JP6275427B2 (ja) * 2013-09-06 2018-02-07 株式会社東芝 メモリ制御回路およびキャッシュメモリ
US9484113B2 (en) 2014-04-15 2016-11-01 Advanced Micro Devices, Inc. Error-correction coding for hot-swapping semiconductor devices
KR102178137B1 (ko) * 2014-08-26 2020-11-12 삼성전자주식회사 반도체 메모리 장치, 이의 에러 정정 방법 및 이를 포함하는 메모리 시스템
US9654144B2 (en) 2014-09-30 2017-05-16 Micron Technology, Inc. Progressive effort decoder architecture
KR20170001777A (ko) 2015-06-25 2017-01-05 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9811418B2 (en) * 2015-10-26 2017-11-07 Sandisk Technologies Llc Syndrome-based codeword decoding
US10140175B2 (en) 2015-11-20 2018-11-27 Qualcomm Incorporated Protecting an ECC location when transmitting correction data across a memory link
US9910606B2 (en) * 2016-03-23 2018-03-06 Seagate Technology Llc End of life extension of solid state memory
KR102479212B1 (ko) 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US10056921B2 (en) 2016-08-25 2018-08-21 Taiwan Semiconductor Manufacturing Company Ltd. Memory system having flexible ECC scheme and method of the same
US10176886B1 (en) * 2017-07-07 2019-01-08 Seagate Technology Llc Multi-level data block error detection code
JP2019168316A (ja) * 2018-03-23 2019-10-03 株式会社東芝 半導体集積回路
US11204826B2 (en) * 2018-09-28 2021-12-21 Taiwan Semiconductor Manufacturing Company, Ltd. Memory error detection and correction

Also Published As

Publication number Publication date
US11762732B2 (en) 2023-09-19
US11204826B2 (en) 2021-12-21
US20200104205A1 (en) 2020-04-02
US20220114046A1 (en) 2022-04-14
US20240028451A1 (en) 2024-01-25

Similar Documents

Publication Publication Date Title
DE102019123642A1 (de) Speicherfehlererkennung und korrektur
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE69120333T2 (de) Verriegeltes On-Chip-Fehlererkennungs- und -korrektursystem
US9690650B2 (en) Storage scheme for built-in ECC operations
DE69112624T2 (de) Mehrfehlerkorrektur eines rechnerspeichers.
DE102005028221B4 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
CN102915768B (zh) 基于edac模块的三模冗余对存储器的容错装置及其方法
DE2260850A1 (de) Fehlerkorrektursystem
DE102013111710A1 (de) Speichermodul, Speichersystem mit demselben und Verfahren zum Auslesen davon und Schreiben dort hinein
TWI714277B (zh) 記憶體錯誤偵測及校正
DE102020106203A1 (de) Vorrichtung für integrierte Speicher-Selbsttests mit Fehlererkennungs- und -Korrekturcodebekanntheit
DE102015215401A1 (de) Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
DE112004001843T5 (de) System und Verfahren zum automatischen Erkennen von Softfehlern in Latches einer integrierten Schaltung
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102021112203A1 (de) Integrierter schaltkreis und betriebsverfahren dafür
DE69317766T2 (de) Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc)
DE102020134945A1 (de) Dynamische fehlerüberwachung und -reparatur
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
DE102011087634A1 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE112019001968B4 (de) Gemeinsame korrekturlogik für hohe und niedrige zufalls-bitfehlerraten

Legal Events

Date Code Title Description
R012 Request for examination validly filed