DE102017114054B4 - Speicheradressen-Schutzschaltung und Verfahren - Google Patents

Speicheradressen-Schutzschaltung und Verfahren Download PDF

Info

Publication number
DE102017114054B4
DE102017114054B4 DE102017114054.9A DE102017114054A DE102017114054B4 DE 102017114054 B4 DE102017114054 B4 DE 102017114054B4 DE 102017114054 A DE102017114054 A DE 102017114054A DE 102017114054 B4 DE102017114054 B4 DE 102017114054B4
Authority
DE
Germany
Prior art keywords
add
address
memory
parity bits
circuit
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.)
Active
Application number
DE102017114054.9A
Other languages
English (en)
Other versions
DE102017114054A1 (de
Inventor
Saman M. I. Adham
Ramin SHARIAT-YAZDI
Shih-Lien Linus Lu
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 DE102017114054A1 publication Critical patent/DE102017114054A1/de
Application granted granted Critical
Publication of DE102017114054B4 publication Critical patent/DE102017114054B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • 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/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Schaltung (100, 200,300,400), umfassend:
einen Speicher (110, 210,410), der so konfiguriert ist, dass er eine Dateneinheit (D_U) und Paritätsbits (P_B, A_P _B) speichert, wobei die Paritätsbits (P_B, A_P_B) auf einer Schreibadresse (W_ADD, RW_ADD) basieren, die der gespeicherten Dateneinheit (D_U) zugeordnet ist;
einen Adressport (105, 301), der so konfiguriert ist, dass er eine Leseadresse (R_ADD, RW_ADD) für die gespeicherte Dateneinheit (D_U) empfängt;
eine Decodierschaltung (150, 250), die so konfiguriert ist, dass sie eine decodierte Schreibadresse (D_W_ADD) aus der Leseadresse (R_ADD, RW_ADD) und den Paritätsbits (P_B, A_P_B) erzeugt; und
eine Fehlererfassungsschaltung (160), die so konfiguriert ist, dass sie auf Grundlage eines Vergleichs der decodierten Schreibadresse (D_W_ADD) mit der Leseadresse (R_ADD, RW_ADD) bestimmt, ob ein Adressfehler vorliegt.

Description

  • HINTERGRUND
  • Anwendungen, die Speicherschaltungen betreffen, verwenden häufig Methoden zum Schutz von Speicherdaten und -adressen vor Fehlern, die Funktionsfehler verursachen können. Die Methoden umfassen Online- und Offline-Fehlererfassung und Fehlerkorrektur.
  • Bei Online-Ansätzen, die auf Fehlerkorrekturcodes (ECCs) basieren, werden permanente, transiente, intermittierende und latente Fehler potentiell identifiziert und während des Funktionsablaufs korrigiert. Bei Offline-Ansätzen, die auf dedizierter Hardware und/oder Software basieren, werden Fehler während Hochfahr-Sequenzen oder anderen Situationen behoben, in denen eine Schaltung nicht an funktionalen Vorgängen beteiligt ist.
  • Die US 8 812 935 B2 offenbart ein System zum Erfassen eines Adress- oder Datenfehlers in einem Speichersystem. Während des Betriebs speichert das System einen Datenblock an einer Adresse durch: Berechnen eines Hash der Adresse; Verwenden des berechneten Hash und der Datenbits aus dem Datenblock, um ECC-Prüfbits zu berechnen; und Speichern des Datenblocks, der die Datenbits und die ECC-Prüfbits enthält, an der Adresse. Während einer nachfolgenden Abrufoperation verwendet das Speichersystem die Adresse, um den Datenblock abzurufen, der die Datenbits und ECC-Prüfbits enthält. Als nächstes berechnet das System einen Hash der Adresse und verwendet den berechneten Hash und die Datenbits, um ECC-Prüfbits zu berechnen. Schließlich vergleicht das System die berechneten ECC-Prüfbits mit den abgerufenen ECC-Prüfbits, um zu bestimmen, ob ein Fehler in den Adress- oder Datenbits vorhanden ist oder ob ein Datenbeschädigungsindikator gesetzt ist.
  • Die DE 102 06 189 A1 beschreibt ein Verfahren und eine Vorrichtung zum Betreiben und/oder Testen von Speichern, welche einen zeitsparenden Test von Halbleiterspeichern während des laufenden Betriebs ermöglichen. Bei dem Verfahren zum Testen von Speichern mit Speicherzellen wird zu den Speicherzellen jeweils eine erste Prüfinformation in Abhängigkeit von einem der jeweiligen Speicherzelle zugeordneten variablen Parameter und einem Inhalt der jeweiligen Speicherzelle gebildet.
  • Die DE 26 55 653 C2 offenbart eine Vorrichtung zum Bilden eines binär codierten Fehleridentifizierungszeichens durch Vergleichen der Testbits, die von dem ersten und dem zweiten Testbitgenerator erzeugt werden. Ein Fehlerstellendecodierer erzeugt Fehlersignale und Korrektursignale, die einer Korrekturvorrichtung zugeführt werden, um fehlerhafte Bits des aus dem Speicher gelesenen Wortes zu korrigieren. Durch die Verknüpfung von Adresse und Speicherwort wird ein Datenblock gebildet. Es ist mit jedem Eingang der beiden Testbitgeneratoren verbunden. Wird im Bereich der Adresse ein Fehler erkannt, sendet der Fehlerortungsdecoder ein Fehlersignal.
  • Figurenliste
  • Aspekte der vorliegenden Offenbarung werden am besten aus der folgenden detaillierten Beschreibung verstanden, wenn sie mit den beigefügten Zeichnungen gelesen wird. Man beachte, dass in Übereinstimmung mit dem üblichen Vorgehen in der Branche verschiedene Merkmale nicht maßstabsgetreu gezeichnet sind. Tatsächlich können die Abmessungen der verschiedenen Merkmale zur Klarheit der Diskussion beliebig vergrößert oder verkleinert werden.
    • 1 ist ein Diagramm einer Speicherschaltung gemäß einigen Ausführungsformen.
    • 2 ist ein Diagramm einer Speicherschaltung gemäß einigen Ausführungsformen.
    • 3 ist ein Diagramm einer Speicherschaltung gemäß einigen Ausführungsformen.
    • 4 ist ein Diagramm einer Speicherschaltung gemäß einigen Ausführungsformen.
    • 5 ist ein Flussdiagramm eines Verfahrens zum Schützen einer Speicherschaltung gemäß einigen Ausführungsformen.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Offenbarung sieht viele verschiedene Ausführungsformen oder Beispiele vor, um verschiedene Merkmale des angegebenen Gegenstands zu implementieren. Spezielle Beispiele für Komponenten, Werte, Vorgänge, Materialien, Anordnungen oder dergleichen werden nachfolgend beschrieben, um die vorliegende Offenbarung zu vereinfachen. Andere Komponenten, Werte, Vorgänge, Materialien, Anordnungen oder dergleichen werden in Betracht gezogen. Beispielsweise kann das Ausbilden eines ersten Elements über oder auf einem zweiten Element in der folgenden Beschreibung Ausführungsformen umfassen, in denen das erste und das zweite Element in direktem Kontakt ausgebildet sind, und kann auch Ausführungsformen umfassen, in denen zusätzliche Elemente zwischen dem ersten Element und dem zweiten Element ausgebildet sein können, so dass das erste und das zweite Element nicht in direktem Kontakt stehen müssen. Zusätzlich kann die vorliegende Offenbarung Bezugszeichen und/oder Buchstaben in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Einfachheit und Klarheit und erzwingt an sich keine Beziehung zwischen den verschiedenen beschriebenen Ausführungsformen und/oder Konfigurationen.
  • Weiter können räumlich relative Begriffe, wie „unten“, „unter“, „unterer“, „über“, „oberer“ und ähnliche, hier der Einfachheit der Beschreibung halber verwendet werden, um die Beziehung eines Elements oder einer Einrichtung mit anderen Element(en) oder Einrichtung(en) zu beschreiben, wie in den Figuren gezeigt ist. Die räumlich relativen Begriffe sollen verschiedene Orientierungen der Vorrichtung, die verwendet oder betrieben wird, zusätzlich zu der in den Figuren gezeigten Orientierung umfassen. Die Vorrichtung kann anders orientiert sein (um 90 Grad gedreht oder in einer anderen Orientierung) und die räumlich relativen Begriffe, die hier verwendet werden, können ebenfalls demgemäß interpretiert werden.
  • Eine Speicherschaltung umfasst einen Speicher, einen Adressport, eine Decodierschaltung und eine Fehlererfassungsschaltung. Der Speicher speichert Datenbits in Form einer Dateneinheit und Paritätsbits, der Adressport empfängt eine der gespeicherten Dateneinheit zugeordnete Leseadresse, die Decodierschaltung erzeugt eine decodierte Schreibadresse aus der Leseadresse und den Paritätsbits und die Fehlererfassungsschaltung vergleicht die Leseadresse mit der decodierten Schreibadresse, um zu ermitteln, ob ein Adressfehler vorliegt. In einigen Ausführungsformen werden die Paritätsbits aus der Schreibadresse und der Dateneinheit erzeugt und in anderen Ausführungsformen werden die Paritätsbits nur aus der Schreibadresse erzeugt. In einigen Ausführungsformen ist der Adressport ein Leseadressenport und die Speicherschaltung umfasst einen Schreibadressenport, der von dem Leseadressenport getrennt ist, und in anderen Ausführungsformen empfängt der Adressport auch eine Schreibadresse in einer Schreiboperation. In einigen Ausführungsformen ist der Speicher ein Festwertspeicher (ROM), und die Paritätsbits werden als Teil eines ROM-Programmierverfahrens erzeugt.
  • 1 ist ein Diagramm einer Speicherschaltung 100 gemäß einigen Ausführungsformen. Die Speicherschaltung 100 umfasst einen Speicher 110, eine Codierschaltung 130, eine Decodierschaltung 150 und eine Fehlererfassungsschaltung 160. Ein Schreibadressenport 101 ist so konfiguriert, dass er eine Schreibadresse W_ADD empfängt, ein Dateneingangsport 103 ist so konfiguriert, dass er eine Dateneinheit D_U empfängt, die in dem Speicher 110 an der von der Schreibadresse W_ADD spezifizierten Stelle gespeichert werden soll, und ein Leseadressenport 105 ist so konfiguriert, dass er eine Leseadresse R_ADD empfängt, die den Ort identifiziert, an dem die Dateneinheit D_U gespeichert ist.
  • Der Speicher 110 ist so konfiguriert, dass er die Schreibadresse W_ADD auf dem Schreibadressenport 101, die Dateneinheit D_U auf dem Dateneingangsport 103 und die Leseadresse R_ADD auf dem Leseadressenport 105 empfängt. Der Speicher 110 ist auch so konfiguriert, dass er ein oder mehrere Paritätsbits P_B von der Codierschaltung 130 auf einem Paritätsbitport 131 empfängt.
  • Der Speicher 110 ist so konfiguriert, dass er Daten, beispielsweise die Dateneinheit D_U, in einem Speicherabschnitt 111 speichert und Paritätsdaten, beispielsweise die Paritätsbits P_B, in einem Speicherabschnitt 113 speichert. Der Speicher 110 ist so konfiguriert, dass er die Dateneinheit D_U und die Paritätsbits P_B an einer oder mehreren Stellen speichert, die auf Grundlage der Schreibadresse W_ADD auf dem Schreibadressenport 101 bestimmt werden, und dass er die gespeicherte Dateneinheit D_U und die Paritätsbits P_B von der einen oder mehreren Stellen als Antwort auf die Leseadresse R_ADD auf dem Leseadressenport 105 abruft.
  • In einigen Ausführungsformen ist der Speicher 110 so konfiguriert, dass er die Dateneinheit D_U und die Paritätsbits P_B als ein einziges Wort speichert, wobei die Dateneinheit D_U an einer Stelle im Speicherabschnitt 111 angrenzend an eine Stelle gespeichert wird, an der die Paritätsbits P_B in dem Speicherabschnitt 113 gespeichert sind. In einigen Ausführungsformen wird die Dateneinheit D_U in dem Speicherabschnitt 111 an einer Stelle gespeichert, die von einer Stelle getrennt ist, an der die Paritätsbits P_B im Speicherabschnitt 113 gespeichert sind.
  • In einigen Ausführungsformen ist der Speicher 110 ein Multiport-Speicher. In einigen Ausführungsformen ist der Speicher 110 ein Dual-Port-Speicher. In einigen Ausführungsformen ist der Speicher 110 ein Direktzugriffsspeicher (RAM). In einigen Ausführungsformen ist der Speicher 110 ein statischer Direktzugriffsspeicher (SRAM). In einigen Ausführungsformen ist der Speicher 110 ein dynamischer Direktzugriffsspeicher (DRAM).
  • In einer oder mehreren Ausführungsformen umfasst der Speicher 110 Schaltungen (nicht gezeigt) wie beispielsweise eine oder mehrere Steuerschaltungen, eine oder mehrere Adressen-Decodierschaltungen, eine oder mehrere Eingangs/Ausgangs-Schaltungen und/oder eine oder mehrere zusätzliche Schaltungen, die konfiguriert sind, um andere Funktionen auszuführen, die mit dem Betrieb des Speichers 110 verbunden sind.
  • Die Codierschaltung 130 ist eine Logikschaltung, die so konfiguriert ist, dass sie die Schreibadresse W_ADD auf dem Schreibadressenport 101 und die Dateneinheit D_U auf dem Dateneingangsport 103 empfängt. Die Codierschaltung 130 ist so konfiguriert, dass sie einen ECC verwendet, um die Adresse W_ADD und die Dateneinheit D_U zu schreiben, um Paritätsbits P_B zu erzeugen. Ein ECC ist eine Logik, die Paritäts- oder andere Bits erzeugt, die zur Identifizierung und/oder Korrektur von Fehlern in den Bits verwendet werden können, auf die sie angewendet wird. Die Codierschaltung 130 ist so konfiguriert, dass sie die Paritätsbits P_B auf dem Paritätsbitport 131 ausgibt.
  • In einigen Ausführungsformen umfasst die Codierschaltung 130 Hardware, die konfiguriert ist, um einen ECC auszuführen. In einigen Ausführungsformen umfasst die Codierschaltung 130 eine Kombination aus Hardware und Software, die so konfiguriert ist, dass sie einen ECC ausführt.
  • In einigen Ausführungsformen umfasst die Schreibadresse W_ADD 10 Datenbits. In anderen Ausführungsformen umfasst W_ADD mehr oder weniger als 10 Datenbits. In einigen Ausführungsformen umfasst die Dateneinheit D_U 32 Datenbits. In anderen Ausführungsformen umfasst die Dateneinheit D_U mehr oder weniger als 32 Datenbits. In einigen Ausführungsformen umfassen die Paritätsbits P_B 7 Datenbits. In anderen Ausführungsformen umfasst die Paritätsbits P_B mehr oder weniger als 7 Datenbits.
  • Der Speicher 110 ist so konfiguriert, dass er eine abgerufene Dateneinheit R_D_U und die abgerufenen Paritätsbits R_P_B auf einem Speicherausgangsport 151 ausgibt. Die Decodierschaltung 150 ist so konfiguriert, dass sie die abgerufene gespeicherte Dateneinheit R_D_U und die abgerufenen Paritätsbits R_P_B auf dem Speicherausgangsport 151 empfängt und die Leseadresse R_ADD auf dem Leseadressenport 105 empfängt.
  • Die Decodierschaltung 150 ist so konfiguriert, dass sie einen ECC auf die abgerufene Dateneinheit R_D_U, die abgerufenen Paritätsbits R_P_B und die Leseadresse R_ADD anwendet. In einigen Ausführungsformen umfasst die Decodierschaltung 150 Hardware, die konfiguriert ist, um einen ECC auszuführen. In einigen Ausführungsformen umfasst die Decodierschaltung 150 eine Kombination aus Hardware und Software, die konfiguriert ist, um einen ECC auszuführen.
  • Basierend auf einem ECC, der auf die abgerufene Dateneinheit R_D_U und die abgerufenen Paritätsbits R_P_B angewendet wird, ist die Decodierschaltung 150 so konfiguriert, dass sie die abgerufene Dateneinheit R_D_U an einem Datenausgangsport 153 und ein Fehlersignal D_ERR an einem Datenfehlerport 155 ausgibt. In einigen Ausführungsformen ist die Decodierschaltung 150 so konfiguriert, dass sie einen oder mehrere Fehler in der abgerufenen Dateneinheit R_D_U korrigiert, bevor sie die abgerufene Dateneinheit R_D_U auf dem Datenausgangsport 153 ausgibt. Die Decodierschaltung 150 ist so konfiguriert, dass sie das Fehlersignal D_ERR auf dem Datenfehlerport 155 ausgibt, das anzeigt, dass der ECC einen Fehler in der abgerufenen Dateneinheit R_D_U gefunden hat. In einigen Ausführungsformen ist die Decodierschaltung 150 nicht so konfiguriert, dass sie das Fehlersignal D_ERR auf dem Datenfehlerport 155 ausgibt.
  • Basierend auf einem ECC, der auf die abgerufenen Paritätsbits R_P_B und die empfangene Leseadresse R_ADD angewendet wird, ist die Decodierschaltung 150 so konfiguriert, dass sie eine decodierte Schreibadresse D_W_ADD erzeugt und auf einem Decodier-Ausgangsport 157 ausgibt. Die Codierschaltung 130 und die Decodierschaltung 150 sind so konfiguriert, dass bei Abwesenheit eines detektierbaren Fehlers in der ursprünglichen Schreibadresse W_ADD auf dem Schreibadressenport 101 oder der Leseadresse R_ADD auf dem Leseadressenport 105 die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 eine Kopie der ursprünglichen Schreibadresse W_ADD ist, die auf dem Schreibadressenport 101 empfangen wurde. Die Codierschaltung 130 und die Decodierschaltung 150 sind so konfiguriert, dass, wenn ein Fehler in entweder der Schreibadresse W_ADD auf dem Schreibadressenport 101 oder der Leseadresse R_ADD auf dem Leseadressenport 105 detektiert wird, die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 keine Kopie der Schreibadresse W_ADD auf dem Schreibadressenport 101 ist. Zusätzliche Details bezüglich Decodierung werden in dem gemeinsam zugeteilten US-Patent Nr. 7 779 334 , erteilt am 17. August 2010, dem gemeinsam zugeteilten US-Patent Nr. 8 301959 , erteilt am 30. Oktober 2012, dem gemeinsam zugeteilten US-Patent Nr. 8 464136 , erteilt am 11. Juni 2013, und dem US-Patent Nr. 5 173 905 , erteilt am 22. Dezember 1992, offenbart.
  • In einem nicht einschränkenden Beispiel wendet die Decodierschaltung 150 im Betrieb einen ECC auf die Adresse R_ADD auf dem Leseadressenport 105 an, um wiederhergestellte Paritätsbits zu erzeugen. Wenn kein Fehler in der Schreibadresse W_ADD auf dem Schreibadressenport 101 oder in der Leseadresse R_ADD auf dem Leseadressenport 105 vorliegt, sind die wiederhergestellten Paritätsbits identisch mit den abgerufenen Paritätsbits R_P_B auf dem Speicherausgangsport 151 und die Leseadresse R_ADD wird als decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 ausgegeben. Wenn ein Fehler in entweder der Schreibadresse W_ADD auf dem Schreibadressenport 101 oder der Leseadresse R_ADD auf dem Leseadressenport 105 vorliegt, sind die wiederhergestellten Paritätsbits nicht mit den abgerufenen Paritätsbits R_P_B auf dem Speicherausgangsport 151 identisch. In diesem Fall wird ein ECC auf die Leseadresse R_ADD auf dem Leseadressenport 105 durch die Decodierschaltung 150 angewendet, so dass die Decodierschaltung 150 die decodierte Schreibadresse D_W_ADD als korrigierte Version der Leseadresse R_ADD erzeugt und auf dem Decodier-Ausgangsport 157 ausgibt, wobei die Korrektur so entworfen ist, dass die decodierte Schreibadresse D_W_ADD Paritätsbits erzeugt, die mit den abgerufenen Paritätsbits R_P_B identisch sind.
  • Die Fehlererfassungsschaltung 160 ist so konfiguriert, dass sie die decodierte Schreibadresse D_W_ADD auf dem Decodier-Ausgangsport 157 und die Leseadresse R_ADD auf dem Leseadressenport 105 empfängt. Die Fehlererfassungsschaltung 160 ist so konfiguriert, dass sie die decodierte Schreibadresse D_W_ADD auf dem Decodier-Ausgangsport 157 mit der Leseadresse R_ADD auf dem Leseadressenport 105 vergleicht, um zu bestimmen, ob ein Adressfehler vorliegt, und ein Fehlersignal A_ERR erzeugt, das ein Ergebnis des Vergleichs anzeigt. Die Fehlererfassungsschaltung 160 ist so konfiguriert, dass sie das Fehlersignal A_ERR auf einem Adressfehlerport 161 ausgibt. In einigen Ausführungsformen ist die Fehlererfassungsschaltung 160 so konfiguriert, dass sie das Fehlersignal A_ERR auf dem Adressfehlerport 161 ausgibt, das einen Fehler anzeigt, wenn die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 nicht gleich der Leseadresse R_ADD auf dem Leseadressenport 105 ist.
  • Die Fehlererfassungsschaltung 160 umfasst eine Hardware, die so konfiguriert ist, dass sie einen Vergleich der decodierten Schreibadresse D_W_ADD auf dem Decodier-Ausgangsport 157 mit der Leseadresse R_ADD auf dem Leseadressenport 105 durchführt und das Fehlersignal A_ERR erzeugt. In einigen Ausführungsformen umfasst die Fehlererfassungsschaltung ein oder mehrere Logikgatter.
  • Die Speicherschaltung 100 ist somit so konfiguriert, dass im Betrieb das Vorliegen eines Adressfehlers aus der decodierten Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 und der Leseadresse R_ADD am Leseadressenport 105 bestimmt wird, wobei die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 157 auf der Leseadresse R_ADD auf dem Leseadressenport 105 und den Paritätsbits P_B basiert, die aus der ursprünglichen Schreibadresse W_ADD auf dem Schreibadressenport 101 erzeugt wurden.
  • In einigen Ausführungsformen detektiert die Speicherschaltung 100, indem sie sich auf decodierte Schreibadressen wie beispielsweise die decodierte Schreibadresse D_W_ADD auf dem Decodier-Ausgangsport 157 und empfangene Leseadressen wie beispielsweise die Leseadresse R_ADD auf dem Leseadressenport 105 stützt, Adressfehler, ohne dass Schreibadressen im Speicher gespeichert werden. Die Speicherschaltung 100 erleichtert somit eine Fehlererfassung und -korrektur mit einer kleineren Speichergröße als Speicherschaltungen, in denen Schreibadressen im Speicher gespeichert werden.
  • 2 ist ein Diagramm einer Speicherschaltung 200 gemäß einigen Ausführungsformen. Die Speicherschaltung 200 umfasst die Fehlererfassungsschaltung 160, den Schreibadressenport 101, den Dateneingangsport 103 und den Leseadressenport 105, die oben mit Bezug auf die Speicherschaltung 100 und 1 beschrieben wurden. Die Speicherschaltung 200 umfasst auch einen Speicher 210, eine Codierschaltung 220, eine Codierschaltung 230, eine Decodierschaltung 240 und eine Decodierschaltung 250.
  • Die Speicherschaltung 200 ähnelt der Speicherschaltung 100, ist jedoch so konfiguriert, dass sie Paritätsbits für Adressen getrennt von Paritätsbits für Daten erzeugt, speichert und abruft. Somit ersetzen in der Speicherschaltung 200 die Codierschaltung 220 und die Codierschaltung 230 die Codierschaltung 130 und die Decodierschaltung 240 und die Decodierschaltung 250 die Decodierschaltung 150.
  • Der Speicher 210 umfasst jedes der Merkmale des Speichers 110, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurden, und die nachfolgende Beschreibung ist auf die Merkmale des Speichers 210 beschränkt, die sich von denen des Speichers 110 unterscheiden.
  • Der Speicher 210 ist so konfiguriert, dass er Adressenparitätsbits A_P_B von der Codierschaltung 230 auf einem Paritätsbitport 231 empfängt und Datenparitätsbits D_P_B von der Codierschaltung 220 auf einem Paritätsbitport 221 empfängt. In einigen Ausführungsformen sind der Paritätsbitport 231 und der Paritätsbitport 221 als ein einzelner Paritätsbitport angeordnet.
  • Der Speicher 210 ist so konfiguriert, dass er Daten, beispielsweise die Dateneinheit D_U, in einem Speicherabschnitt 211 speichert, Paritätsdaten, beispielsweise die Datenparitätsbits D_P_B, in einem Speicherabschnitt 213 speichert und Paritätsdaten, beispielsweise die Adressenparitätsbits A_P_B, in einem Speicherabschnitt 215 speichert. Der Speicher 210 ist so konfiguriert, dass er die Dateneinheit D_U, die Adressenparitätsbits A_P_B und die Datenparitätsbits D_P_B an einer oder mehreren Stellen speichert, die durch die Schreibadresse W_ADD auf dem Schreibadressenport 101 bestimmt werden, und die gespeicherte Dateneinheit D_U, die Adressenparitätsbits A_P_B und die Datenparitätsbits D_P_B von der einen oder mehreren Stellen in Antwort auf die Leseadresse R_ADD auf dem Leseadressenport 105 abruft.
  • In einigen Ausführungsformen ist der Speicher 210 so konfiguriert, dass er die Dateneinheit D_U, die Datenparitätsbits D_P_B und die Adressenparitätsbits A_P_B als ein einziges Wort speichert, wobei die Dateneinheit D_U an einer Stelle im Speicherabschnitt 211 angrenzend an Stellen gespeichert werden, an denen die Datenparitätsbits D_P_B in dem Speicherabschnitt 213 gespeichert sind und an denen die Adressenparitätsbits A_P_B in dem Speicherabschnitt 215 gespeichert sind. In einigen Ausführungsformen werden eine oder mehrere der Dateneinheit D_U, der Datenparitätsbits D_P_B oder der Adressenparitätsbits A_P_B in dem Speicher 210 an einer oder mehreren Stellen gespeichert, die von einer oder mehreren Stellen getrennt sind, an denen eine oder mehrere weitere der Dateneinheit D_U, der Datenparitätsbits D_P_B oder der Adressenparitätsbits A_P_B gespeichert sind.
  • Die Codierschaltung 220 ist eine Logikschaltung, die so konfiguriert ist, dass sie die Dateneinheit D_U auf dem Dateneingangsport 103 empfängt und einen ECC auf die Dateneinheit D_U anwendet, um die Datenparitätsbits D_P_B zu erzeugen. Die Codierschaltung 220 ist so konfiguriert, dass sie die Datenparitätsbits D_P_B auf dem Paritätsbitport 221 ausgibt. In einigen Ausführungsformen umfassen die Datenparitätsbits D_P_B 6 Datenbits. In anderen Ausführungsformen umfassen die Datenparitätsbits D_P_B mehr oder weniger als 6 Datenbits.
  • Die Codierschaltung 230 ist eine Logikschaltung, die so konfiguriert ist, dass sie die Schreibadresse W_ADD auf dem Schreibadressenport 101 empfängt und einen ECC auf die Schreibadresse W_ADD anwendet, um die Adressenparitätsbits A_P_B zu erzeugen. Die Codierschaltung 230 ist so konfiguriert, dass sie die Adressenparitätsbits A_P_B auf dem Paritätsbitport 231 ausgibt. In einigen Ausführungsformen umfassen die Adressenparitätsbits A_P_B 2 Datenbits. In anderen Ausführungsformen umfassen die Adressenparitätsbits A_P_B ein Datenbit oder mehr als 2 Datenbits.
  • In einigen Ausführungsformen sind die Codierschaltung 220 und die Codierschaltung 230 als eine einzige Codierschaltung angeordnet, die so konfiguriert ist, dass sie die Dateneinheit D_U auf dem Dateneingangsport 103 und die Schreibadresse W_ADD auf dem Schreibadressenport 101 empfängt und die Datenparitätsbits D_P_B erzeugt und auf dem Paritätsbitport 231 ausgibt und die Adressenparitätsbits A_P_B erzeugt und auf dem Paritätsbitport 231 ausgibt.
  • Der Speicher 210 ist so konfiguriert, dass er eine abgerufene Dateneinheit R_D_U und abgerufenen Datenparitätsbits R_D_P_B auf einem Speicherausgangsport 241 ausgibt. Die Decodierschaltung 240 ist so konfiguriert, dass sie die abgerufene Dateneinheit R_D_U und die abgerufenen Datenparitätsbits R_D_P_B auf dem Speicherausgangsport 241 abruft.
  • Basierend auf einem ECC, der auf die abgerufene Dateneinheit R_D_U und die abgerufenen Datenparitätsbits R_D_P_B angewendet wird, ist die Decodierschaltung 240 so konfiguriert, dass sie die abgerufene Dateneinheit R_D_U an einem Datenausgangsport 243 und ein Fehlersignal D_ERR an einem Datenfehlerport 245 ausgibt. In einigen Ausführungsformen ist die Decodierschaltung 240 so konfiguriert, dass sie einen oder mehrere Fehler in der abgerufenen Dateneinheit R_D_U korrigiert, bevor sie die abgerufene Dateneinheit R_D_U auf dem Datenausgangsport 243 ausgibt. Die Decodierschaltung 240 ist so konfiguriert, dass sie das Fehlersignal D_ERR auf dem Datenfehlerport 245 ausgibt, das anzeigt, dass der ECC einen Fehler in der abgerufenen Dateneinheit R_D_U gefunden hat. In einigen Ausführungsformen ist die Decodierschaltung 240 nicht so konfiguriert, dass sie das Fehlersignal D_ERR auf dem Datenfehlerport 245 ausgibt.
  • Der Speicher 210 ist so konfiguriert, dass er die abgerufenen Adressenparitätsbits R_A_P_B an einem Speicherausgangsport 251 ausgibt. Die Decodierschaltung 250 ist so konfiguriert, dass sie die abgerufenen Adressenparitätsbits R_A_P_B auf dem Speicherausgangsport 251 und die Leseadresse R_ADD auf dem Leseadressenport 105 empfängt.
  • Die Decodierschaltung 250 umfasst jedes der Merkmale, die sich auf die Erzeugung und Ausgabe der decodierten Schreibadresse D_W_ADD beziehen, die oben mit Bezug auf die Decodierschaltung 150 beschrieben wurden, mit der Ausnahme, dass die abgerufenen Adressenparitätsbits R_A_B_P am Speicherausgangsport 251 die abgerufenen Paritätsbits R_P_B auf dem Speicherausgangsport 151 ersetzen. Dementsprechend ist die Decodierschaltung 250 auf Grundlage eines ECC, der auf die abgerufenen Adressenparitätsbits R_A_P_B und die empfangene Leseadresse R_ADD angewendet wird, so konfiguriert, dass sie die decodierte Schreibadresse D_W_ADD auf einem Decodier-Ausgangsport 253 ausgibt.
  • Die Codierschaltung 230 und die Decodierschaltung 250 sind somit so konfiguriert, dass bei Abwesenheit eines detektierbaren Fehlers in entweder der Schreibadresse W_ADD auf dem Schreibadressenport 101 oder der Leseadresse R_ADD auf dem Leseadressenport 105 die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 eine Kopie der Schreibadresse W_ADD auf dem Schreibadressenport 101 ist. Die Codierschaltung 230 und die Decodierschaltung 250 sind somit so konfiguriert, dass, wenn ein Fehler in entweder der Schreibadresse W_ADD auf dem Schreibadressenport 101 oder der Leseadresse R_ADD auf dem Leseadressenport 105 detektiert wird, die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 keine Kopie der Schreibadresse W_ADD auf dem Schreibadressenport 101 ist.
  • Die Fehlererfassungsschaltung 160 ist so konfiguriert, dass sie die decodierte Schreibadresse D_W_ADD auf dem Decodier-Ausgangsport 253 empfängt. Andernfalls ist die Fehlererfassungsschaltung 160 wie oben beschrieben in Bezug auf die Speicherschaltung 100 konfiguriert.
  • In einigen Ausführungsformen sind die Decodierschaltung 240 und die Decodierschaltung 250 als eine einzige Decodierschaltung angeordnet, die so konfiguriert ist, dass sie die abgerufene Dateneinheit R_D_U und die abgerufenen Datenparitätsbits R_D_P_B auf dem Speicherausgangsport 241 und die abgerufenen Adressenparitätsbits R_A_P_B auf dem Speicherausgangsport 251 empfängt und die abgerufene Dateneinheit R_D_U am Datenausgangsport 243, das Fehlersignal D_ERR auf dem Datenfehlerport 245 und die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 erzeugt und ausgibt. Obwohl eine einzelne Decodierschaltung eine kleinere Fläche als getrennte Decodierschaltungen erfordert, sind getrennte Decodierschaltungen in der Lage, eine effizientere und robustere Debugging- und Diagnosefähigkeit im Vergleich zu einer einzigen Decodierschaltung bereitzustellen.
  • Die Speicherschaltung 200 ist dabei so konfiguriert, dass im Betrieb das Vorliegen eines Adressfehlers aus der decodierten Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 und der Leseadresse R_ADD am Leseadressenport 105 bestimmt wird, wobei die decodierte Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 auf der Leseadresse R_ADD auf dem Leseadressenport 105 und den Paritätsbits P_B basiert, die ausschließlich aus der ursprünglichen Schreibadresse W_ADD auf dem Schreibadressenport 101 erzeugt wurden.
  • Wenn sich auf decodierte Schreibadressen wie z. B. D_W_ADD auf dem Decodier-Ausgangsport 253 und empfangenen Leseadressen wie R_ADD auf dem Leseadressenport 105 gestützt wird, detektiert die Speicherschaltung 200 Adressfehler, ohne Schreibadressen im Speicher zu speichern. Die Speicherschaltung 200 ermöglicht somit eine Fehlererfassung und -korrektur mit einer kleineren Speichergröße als Speicherschaltungen, in denen Schreibadressen im Speicher gespeichert werden. Verglichen mit der Speicherschaltung 100 verbraucht die Speicherschaltung 200 in einigen Ausführungsformen eine etwas größere Speicherfläche/-fußabdruck, um Datenparitätsbits und Adressenparitätsbits getrennt zu speichern, und erfordert eine etwas größere Fläche/Fußabdruck für getrennte Decodierschaltungen, erleichtert jedoch eine bessere Fehlerdiagnose und vermeidet Adressfehler-Aliasing.
  • 3 ist ein Diagramm einer Speicherschaltung 300 gemäß einigen Ausführungsformen. Die Speicherschaltung 300 umfasst die Fehlererfassungsschaltung 160, den Speicher 210, die Codierschaltung 220, die Codierschaltung 230, die Decodierschaltung 240, die Decodierschaltung 250 und den Dateneingangsport 103, die oben mit Bezug auf die Speicherschaltungen 100 und 200 und die 1 und 2 beschrieben wurden. Die Speicherschaltung 300 umfasst auch eine Ein-Port-Speicherschnittstelle 310 und einen Lese-/Schreibadressenport 301.
  • Die Speicherschaltung 300 ähnelt der Speicherschaltung 200, ist jedoch so konfiguriert, dass sie Lese-/Schreibadressen an einem einzelnen Adressport anstelle von getrennten Lese- und Schreibadressen auf getrennten Adressports empfängt. Somit ersetzt der Adressport 301 in der Speicherschaltung 300 den Schreibadressenport 101 und den Leseadressenport 105.
  • Der Adressport 301 ist so konfiguriert, dass er eine Lese-/Schreibadresse RW_ADD empfängt. Die Lese-/Schreibadresse RW_ADD umfasst eine Eingangsadresse, die an einer Stelle außerhalb der Speicherschaltung 300 entsteht und als entweder eine Leseadresse oder eine Schreibadresse wirkt. In einigen Ausführungsformen ist die Speicherschaltung 300 so konfiguriert, dass sie auf die Lese-/Schreibadresse RW_ADD entweder als eine Leseadresse oder eine Schreibadresse reagiert, abhängig von dem logischen Zustand eines Schreibfreigabesignals (nicht gezeigt).
  • Die Ein-Port-Speicherschnittstelle 310 umfasst einen Adressport 311, der so konfiguriert ist, dass er die Lese-/Schreibadresse RW_ADD auf dem Adressport 301 empfängt und die Lese-/Schreibadresse RW_ADD dem Speicher 210 in einer Multiport-Konfiguration bereitstellt. Bei der in 3 gezeigten Ausführungsform ist der Speicher 210 ein Dual-Port-Speicher und der Adressport 311 so konfiguriert, dass er die Lese-/Schreibadresse RW_ADD dem Speicher 210 an zwei Zweigen des Adressports 311 bereitstellt, die durch zwei Pfeile in 3 gekennzeichnet sind. In einigen Ausführungsformen ist der Speicher 210 ein Multiport-Speicher mit mehr als zwei Anschlüssen und der Adressport 311 so konfiguriert, dass er die Lese-/Schreibadresse RW_ADD dem Speicher 210 an einer Anzahl von Zweigen bereitstellt, die mit der Anzahl von Anschlüssen des Multiport-Speichers übereinstimmt.
  • Da der Speicher 210 entweder ein Dual-Port-Speicher oder ein Multiport-Speicher mit mehr als zwei Ports ist, umfasst der Speicher 210 zwei oder mehr Adressen-Decodierschaltungen (nicht gezeigt). Wie oben in Bezug auf die Speicherschaltung 200 beschrieben, erleichtert die Kombination des Speichers 210, der Codierschaltung 230, der Decodierschaltung 250 und der Fehlererfassungsschaltung 160 die Bestimmung von Fehlern bei Adressen, die auf getrennten Lese- und Schreibadressenports empfangen werden. Durch Bereitstellen der Lese-/Schreibadresse RW_ADD an dem Speicher 210 auf getrennten Ports ermöglicht die Ein-Port-Speicherschnittstelle 310 die gleiche Fehlererfassungsfähigkeit wie die Speicherschaltung 300.
  • Die Speicherschaltung 300 ist dabei so konfiguriert, dass bei einer Leseoperation das Vorliegen eines Adressfehlers aus der decodierten Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 und der Lese-/Schreibadresse RW_ADD am Adressport 301 bestimmt wird, wobei die decodierte Schreibadresse D_W_ADD auf der Lese-/Schreibadresse RW_ADD auf dem Adressport 301 und den Paritätsbits P_B basiert, die aus der Lese-/Schreibadresse RW_ADD auf dem Adressport 301 erzeugt wurden, die in einer vorherigen Schreiboperation verwendet wurde.
  • Durch die Verwendung eines Multiport-Speichers 210 und einer Ein-Port-Speicherschnittstelle 310 erleichtert die Speicherschaltung 300 in einigen Ausführungsformen die Erfassung und Korrektur von Adressfehlern und vermeidet Adressfehler-Aliasing, während sie eine Single-Port-Speicherfunktionalität für externe Schaltungen bereitstellt. Im Vergleich zu anderen Ein-Port-Speicherschaltungen, die keine Multiport-Speicher aufweisen, weist die Speicherschaltung 300 eine verbesserte Adressfehlererfassung auf Kosten einer größeren Speicherfläche für den Multiport-Speicher auf.
  • 4 ist ein Diagramm einer Speicherschaltung 400 gemäß einigen Ausführungsformen. Die Speicherschaltung 400 umfasst die Fehlererfassungsschaltung 160, die Decodierschaltung 240, die Decodierschaltung 250 und den Leseadressenport 105, die oben mit Bezug auf die Speicherschaltungen 100 und 200 und die 1 und 2 beschrieben wurden, und einen Festwertspeicher (ROM) 410. 4 umfasst auch eine Darstellung eines ROM-Programmiergeräts 420, das von der Speicherschaltung 400 getrennt ist.
  • Das ROM-Programmiergerät 420 ist ein System, das eine Kombination von Hardware und Software umfasst und das so konfiguriert ist, dass es Datenbits in einem ROM wie dem ROM 410 erzeugt und programmiert, also schreibt. Im Betrieb führt das ROM-Programmiergerät 420 ein Offline-Verfahren durch, das das Anwenden eines ECCs auf die Dateneinheit D_U, um Datenparitätsbits D_P_B zu erzeugen, und das Anwenden eines ECCs auf die Schreibadresse W_ADD für die Dateneinheit D_U umfasst, um Adressenparitätsbits A_P_B zu erzeugen. Im Betrieb umfasst das von dem ROM-Programmiergerät 420 durchgeführte Offline-Verfahren auch das Programmieren des ROMs 410 mit der Dateneinheit D_U, den Datenparitätsbits D_P_B und den Adressenparitätsbits A_P_B.
  • Als Ergebnis des Offline-Verfahrens, das durch das ROM-Programmiergerät 420 durchgeführt wird, ist der ROM 410 so konfiguriert, dass er Daten, beispielsweise die Dateneinheit D_U, in einem ROM-Abschnitt 411 speichert, Paritätsdaten, beispielsweise die Datenparitätsbits D_P_B, in einem ROM-Abschnitt 413 speichert und Paritätsdaten, beispielsweise die Adressenparitätsbits A_P_B, in einem ROM-Abschnitt 415 speichert. Der ROM 410 ist so konfiguriert, dass er die Dateneinheit D_U, die Adressenparitätsbits A_P_B und die Datenparitätsbits D_P_B an einer oder mehreren aus der Schreibadresse W_ADD bestimmten Stellen speichert und die gespeicherte Dateneinheit D_U, Adressenparitätsbits A_P_B und Datenparitätsbits D_P_B von der einen oder mehreren Stellen als Antwort auf die Leseadresse R_ADD auf dem Leseadressenport 105 abruft.
  • In einigen Ausführungsformen ist der ROM 410 so konfiguriert, dass er die Dateneinheit D_U, die Datenparitätsbits D_P_B und die Adressenparitätsbits A_P_B als ein einziges Wort speichert, wobei die Dateneinheit D_U an einer Stelle im ROM-Abschnitt 411 benachbart zu den Stellen speichert, an denen die Datenparitätsbits D_P_B in dem ROM-Abschnitt 413 gespeichert sind und an denen die Adressenparitätsbits A_P_B in dem ROM-Abschnitt 415 gespeichert sind. In einigen Ausführungsformen werden eine oder mehrere der Dateneinheit D_U, der Datenparitätsbits D_P_B oder der Adressenparitätsbits A_P_B in dem ROM 410 an einer oder mehreren Stellen gespeichert, die von einer oder mehreren Stellen getrennt sind, an denen eine oder mehrere weitere der Dateneinheit D_U, der Datenparitätsbits D_P_B oder der Adressenparitätsbits A_P_B gespeichert sind.
  • Die Speicherschaltung 400 ist dabei so konfiguriert, dass im Betrieb das Vorliegen eines Adressfehlers aus der decodierten Schreibadresse D_W_ADD am Decodier-Ausgangsport 253 und der Leseadresse R_ADD am Leseadressenport 105 bestimmt wird, wobei die decodierte Schreibadresse D_W_ADD auf der Leseadresse R_ADD auf dem Leseadressenport 105 und den Paritätsbits P_B basiert, die aus der Schreibadresse W_ADD erzeugt wurden.
  • Durch das Speichern von Adressenparitätsbits und das Bereitstellen von Decodier- und Fehlererfassungsschaltungen ermöglicht die Speicherschaltung 400 die Erfassung und Korrektur von Adressfehlern, während ein Ein-Port-ROM bereitgestellt wird, der mit externen Schaltungen arbeitet. Im Vergleich zu anderen ROM-Schaltungen, die keine gespeicherten Adressenparitätsbits aufweisen, hat die Speicherschaltung 400 eine verbesserte Adressfehlererfassung auf Kosten einer etwas größeren ROM-Fläche.
  • 5 ist ein Flussdiagramm eines Verfahrens 500 zum Schützen einer Speicherschaltung gemäß einigen Ausführungsformen. Das Verfahren 500 kann mit jeder der oben beschriebenen Speicherschaltungen 100, 200, 300 oder 400 durchgeführt werden.
  • Die Reihenfolge, in der die Vorgänge des Verfahrens 500 in 5 gezeigt sind, dient nur zur Veranschaulichung; die Vorgänge des Verfahrens 500 können in einer Reihenfolge durchgeführt werden, die sich von der unterscheiden, die in 5 gezeigt ist. In einigen Ausführungsformen können Vorgänge zusätzlich zu denen, die in 5 gezeigten sind, vor, zwischen und/oder nach den in 5 gezeigten Vorgängen durchgeführt werden.
  • Bei Vorgang 510 wird eine Schreibadresse erzeugt. In einigen Ausführungsformen wird das Erzeugen der Schreibadresse durch eine Schaltung ausgeführt, die mit einer Speicherschaltung in Verbindung steht, und sie wird der Speicherschaltung als Teil einer Schreiboperation bereitgestellt. In einigen Ausführungsformen ist die Schreibadresse die Schreibadresse W_ADD, die oben mit Bezug auf die Speicherschaltungen 100, 200 und 400 beschrieben wurde. In einigen Ausführungsformen ist die Schreibadresse die Lese-/Schreibadresse RW_ADD, die oben mit Bezug auf die Speicherschaltung 300 beschrieben wurde. In einigen Ausführungsformen ist der Vorgang 510 optional.
  • Bei Vorgang 520 werden Paritätsbits für die Schreibadresse erzeugt. In einigen Ausführungsformen wird das Erzeugen der Paritätsbits auf Grundlage der Schreibadresse zusammen mit einer Dateneinheit durchgeführt, die der Schreibadresse zugeordnet ist. In einigen Ausführungsformen wird das Erzeugen der Paritätsbits nur auf Grundlage der Schreibadresse durchgeführt. In einigen Ausführungsformen wird das Erzeugen der Paritätsbits durch Anwenden eines ECCs auf die Schreibadresse durchgeführt. In einigen Ausführungsformen ist der Vorgang 520 optional.
  • In einigen Ausführungsformen wird das Erzeugen der Paritätsbits unter Verwendung der Codierschaltung 130 durchgeführt, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen wird das Erzeugen der Paritätsbits unter Verwendung der Codierschaltung 230 durchgeführt, die oben mit Bezug auf die Speicherschaltungen 200 und 300 beschrieben wurde. In einigen Ausführungsformen wird das Erzeugen der Paritätsbits als Teil des ROM-Programmierverfahrens 420 durchgeführt, das oben mit Bezug auf die Speicherschaltung 400 beschrieben wurde.
  • Bei Vorgang 530 werden eine Dateneinheit und Paritätsbits in einem Speicher gespeichert. In einigen Ausführungsformen umfasst das Speichern der Dateneinheit und der Paritätsbits das Speichern der Dateneinheit und der Paritätsbits an benachbarten Stellen in dem Speicher. In einigen Ausführungsformen umfasst das Speichern der Dateneinheit und der Paritätsbits das Speichern der Dateneinheit und der Paritätsbits an nicht benachbarten Stellen in dem Speicher. In einigen Ausführungsformen ist der Vorgang 530 optional.
  • In einigen Ausführungsformen umfasst das Speichern der Dateneinheit und der Paritätsbits das Speichern der Dateneinheit D_U und der Paritätsbits P_B im Speicher 110, der oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen umfasst das Speichern der Dateneinheit und der Paritätsbits das Speichern der Dateneinheit D_U und der Paritätsbits A_P_B im Speicher 210, der oben mit Bezug auf die Speicherschaltungen 200 und 300 beschrieben wurde. In einigen Ausführungsformen ist das Speichern der Dateneinheit und der Paritätsbits Teil des Offline-Verfahrens, das durch das ROM-Programmiergerät 420 für den ROM 410 durchgeführt wird, der oben mit Bezug auf die Speicherschaltung 400 beschrieben wurde.
  • Bei Vorgang 540 wird ein Lesebefehl von einer Speicherschaltung empfangen. In einigen Ausführungsformen wird der Lesebefehl als Teil einer Leseoperation der Speicherschaltung empfangen. In einigen Ausführungsformen wird der Lesebefehl als Teil eines Tests der Speicherschaltung empfangen. Der Lesebefehl umfasst eine Leseadresse für eine in einem Speicher der Speicherschaltung gespeicherte Dateneinheit.
  • In einigen Ausführungsformen umfasst der Lesebefehl eine Leseadresse R_ADD, die auf dem Leseadressenport 105 empfangen wird, der oben mit Bezug auf die Speicherschaltungen 100, 200 oder 400 beschrieben wurde. In einigen Ausführungsformen umfasst der Lesebefehl eine Lese-/Schreibadresse RW_ADD, die auf dem Lese-/Schreibadressenport 301 empfangen wird, der oben mit Bezug auf die Speicherschaltung 300 beschrieben wurde.
  • Bei Vorgang 550 werden Paritätsbits aus einem Speicher abgerufen. Die Paritätsbits basieren auf einer Schreibadresse für eine im Speicher gespeicherte Dateneinheit. In einigen Ausführungsformen umfasst das Abrufen der Paritätsbits aus dem Speicher das Abrufen der abgerufenen Paritätsbits R_P_B aus dem Speicher 110 auf dem Speicherausgangsport 151, der oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen umfasst das Abrufen der Paritätsbits aus dem Speicher das Abrufen der abgerufenen Paritätsbits R_A_P_B aus dem Speicher 210 auf dem Speicherausgangsport 251, der oben mit Bezug auf die Speicherschaltungen 200 und 300 beschrieben wurde. In einigen Ausführungsformen umfasst das Abrufen der Paritätsbits aus dem Speicher das Abrufen der abgerufenen Paritätsbits R_A_P_B aus dem ROM 410 auf dem Speicherausgangsport 251, der oben mit Bezug auf die Speicherschaltung 400 beschrieben wurde.
  • In einigen Ausführungsformen umfasst der Vorgang 550 das Abrufen der Dateneinheit aus dem Speicher. In einigen Ausführungsformen umfasst der Vorgang 550 das Abrufen der abgerufenen Dateneinheit R_D_U aus dem Speicher 110 auf dem Speicherausgangsport 151, der oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen umfasst der Vorgang 550 das Abrufen der abgerufenen Dateneinheit R_D_U aus dem Speicher 210 auf dem Speicherausgangsport 241, der oben mit Bezug auf die Speicherschaltungen 200 und 300 beschrieben wurde, oder aus dem ROM 410 auf dem Speicherausgangsport 241, der oben mit Bezug auf die Speicherschaltung 400 beschrieben wurde.
  • Bei Vorgang 560 wird eine decodierte Schreibadresse aus der Leseadresse des Lesebefehls und den abgerufenen Paritätsbits erzeugt. In einigen Ausführungsformen wird das Erzeugen der decodierten Schreibadresse durch Anwenden eines ECCs auf die Paritätsbits basierend auf der Schreibadresse zusammen mit einer Dateneinheit durchgeführt. In einigen Ausführungsformen wird das Erzeugen der decodierten Schreibadresse durch Anwenden eines ECCs auf die Leseadresse R_ADD auf dem Leseadressenport 105 und die abgerufenen Paritätsbits R_P_B auf dem Speicherausgangsport 151 durchgeführt, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurden.
  • In einigen Ausführungsformen wird das Erzeugen der decodierten Schreibadresse durch Anwenden eines ECCs auf die Paritätsbits nur auf Grundlage der Schreibadresse durchgeführt. In einigen Ausführungsformen wird das Erzeugen der decodierten Schreibadresse durch Anwenden eines ECCs auf die Leseadresse R_ADD auf dem Leseadressenport 105 und die abgerufenen Adressenparitätsbits R_A_P_B auf dem Speicherausgangsport 251 durchgeführt, die oben mit Bezug auf die Speicherschaltungen 200 und 400 beschrieben wurden. In einigen Ausführungsformen wird das Erzeugen der decodierten Schreibadresse durch Anwenden eines ECCs auf die Lese-/Schreibadresse RW_ADD auf dem Lese-/Schreibadressenport 301 und die abgerufenen Adressenparitätsbits R_A_P_B auf dem Speicherausgangsport 251 durchgeführt, die oben mit Bezug auf die Speicherschaltung 300 beschrieben wurden.
  • In einigen Ausführungsformen wird das Decodieren der Schreibadresse unter Verwendung der Decodierschaltung 150 durchgeführt, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen wird das Decodieren der Schreibadresse unter Verwendung der Decodierschaltung 250 durchgeführt, die oben mit Bezug auf die Speicherschaltungen 200, 300 oder 400 beschrieben wurde.
  • In einigen Ausführungsformen umfasst der Vorgang 560 das Ausgeben einer Dateneinheit auf einem Datenausgangsport. In einigen Ausführungsformen umfasst das Ausgeben einer Dateneinheit das Ausgeben der abgerufenen Dateneinheit R_D_U auf dem Datenausgangsport 153 unter Verwendung der Decodierschaltung 150, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen umfasst das Ausgeben einer Dateneinheit das Ausgeben der abgerufenen Dateneinheit R_D_U auf dem Datenausgangsport 243 unter Verwendung der Decodierschaltung 250, die oben mit Bezug auf die Speicherschaltungen 200, 300 oder 400 beschrieben wurde.
  • In einigen Ausführungsformen umfasst der Vorgang 560 das Ausgeben eines Fehlersignals auf einem Datenfehlerport basierend auf dem Erfassen eines Fehlers in einer gespeicherten Dateneinheit. In einigen Ausführungsformen umfasst das Ausgeben eines Fehlersignals das Ausgeben des Fehlersignals D_ERR auf dem Datenfehlerport 155 unter Verwendung der Decodierschaltung 150, die oben mit Bezug auf die Speicherschaltung 100 beschrieben wurde. In einigen Ausführungsformen umfasst das Ausgeben eines Fehlersignals das Ausgeben des Datenfehlersignals D_ERR auf dem Datenfehlerport 245 unter Verwendung der Decodierschaltung 250, die oben mit Bezug auf die Speicherschaltungen 200, 300 oder 400 beschrieben wurde.
  • Bei Vorgang 570 wird das Vorliegen eines Adressfehlers aus der decodierten Schreibadresse und der Leseadresse bestimmt. In einigen Ausführungsformen umfasst das Bestimmen des Vorliegens eines Adressfehlers das Bestimmen, ob die decodierte Schreibadresse und die Leseadresse gleich sind. In einigen Ausführungsformen umfasst das Bestimmen des Vorliegens eines Adressfehlers das Vergleichen der decodierten Schreibadresse mit der Leseadresse mit einer Logikschaltung. In einigen Ausführungsformen wird das Bestimmen des Vorliegens eines Adressfehlers unter Verwendung der Fehlererfassungsschaltung 160 durchgeführt, die oben mit Bezug auf die Speicherschaltungen 100, 200, 300 oder 400 beschrieben wurde.
  • Bei Vorgang 580 wird ein Fehlersignal auf Grundlage des Bestimmens des Vorliegens eines Adressfehlers erzeugt. In einigen Ausführungsformen umfasst das Erzeugen des Fehlersignals das Erzeugen des Fehlersignals A_ERR unter Verwendung der Fehlererfassungsschaltung 160, die oben mit Bezug auf die Speicherschaltungen 100, 200, 300 oder 400 beschrieben wurde. In einigen Ausführungsformen ist der Vorgang 580 optional.
  • In einigen Ausführungsformen umfasst der Vorgang 580 das Ausgeben des Fehlersignals auf einen Adressfehlerport. In einigen Ausführungsformen umfasst das Ausgeben des Fehlersignals das Ausgeben des Fehlersignals A_ERR auf dem Adressfehlerport 161 unter Verwendung der Fehlererfassungsschaltung 160, die oben mit Bezug auf die Speicherschaltungen 100, 200, 300 oder 400 beschrieben wurde.
  • Bei Vorgang 590 wird ein Adressfehler auf Grundlage des Bestimmens des Vorliegens eines Adressfehlers korrigiert. In einigen Ausführungsformen wird das Korrigieren des Adressfehlers unter Verwendung einer der Speicherschaltungen 100, 200, 300 oder 400 durchgeführt. In einigen Ausführungsformen wird das Korrigieren des Adressfehlers unter Verwendung einer Schaltung durchgeführt, die mit einer der Speicherschaltungen 100, 200, 300 oder 400 in Verbindung steht. In einigen Ausführungsformen ist der Vorgang 590 optional.
  • Durch Durchführen der Vorgänge des Verfahrens 500 wird das Vorliegen eines Adressfehlers aus einer decodierten Schreibadresse und einer Leseadresse bestimmt, wobei die decodierte Schreibadresse auf der Leseadresse und Paritätsbits basiert, die aus der ursprünglichen Schreibadresse erzeugt wurden.
  • Indem sich auf die decodierten Schreibadressen und empfangenen Leseadressen gestützt wird, erfasst das Verfahren 500 Adressfehler, ohne Schreibadressen im Speicher zu speichern. Das Verfahren 500 erleichtert daher die Fehlererfassung und -korrektur unter Verwendung einer kleineren Speichergröße als Anwendungen, bei denen Schreibadressen im Speicher gespeichert werden. Das Verfahren 500 ermöglicht auch die Dual-Port-basierte Fehlererfassung und -korrektur in Single-Port-Speicher- oder ROM-Anwendungen.
  • In einigen Ausführungsformen umfasst eine Schaltung einen Speicher, der so konfiguriert ist, dass er eine Dateneinheit und Paritätsbits speichert, wobei die Paritätsbits auf einer Schreibadresse basieren, die der gespeicherten Dateneinheit zugeordnet ist, und einen Adressport, der so konfiguriert ist, dass er eine Leseadresse für die gespeicherte Dateneinheit empfängt. Die Speicherschaltung umfasst ferner eine Decodierschaltung, die so konfiguriert ist, dass sie eine decodierte Schreibadresse aus der Leseadresse und den Paritätsbits erzeugt, und eine Fehlererfassungsschaltung, die so konfiguriert ist, dass sie bestimmt, ob ein Adressfehler auf Grundlage eines Vergleichs der decodierten Schreibadresse mit der Leseadresse vorliegt.
  • In einigen Ausführungsformen umfasst eine Multiport-Speicherschaltung einen Schreibadressenport, der so konfiguriert ist, dass er eine Schreibadresse empfängt, einen Dateneingangsport, der so konfiguriert ist, dass er eine Dateneinheit empfängt, eine Codierschaltung, die so konfiguriert ist, dass sie Paritätsbits aus der Schreibadresse erzeugt, einen Speicher, der so konfiguriert ist, dass er die Dateneinheit und die Paritätsbits an der Schreibadresse speichert, und einen Leseadressenport, der von dem Schreibadressenport getrennt ist, wobei der Leseadressenport so konfiguriert ist, dass er eine Leseadresse für die gespeicherte Dateneinheit empfängt. Eine Decodierschaltung ist so konfiguriert, dass sie eine decodierte Schreibadresse aus der Leseadresse und den Paritätsbits erzeugt, und eine Fehlererfassungsschaltung ist so konfiguriert, dass sie bestimmt, ob ein Adressfehler auf Grundlage eines Vergleichs der decodierten Schreibadresse mit der Leseadresse vorliegt.
  • In einigen Ausführungsformen umfasst ein Verfahren zum Betreiben eines Speichers: Empfangen einer Leseadresse für eine in dem Speicher gespeicherte Dateneinheit an einem Port des Speichers; und Abrufen von Paritätsbits aus dem Speicher, wobei die Paritätsbits auf einer Schreibadresse für die gespeicherte Dateneinheit basieren. Das Verfahren umfasst ferner das Erzeugen einer decodierten Schreibadresse unter Verwendung einer Decodierschaltung auf Grundlage der Leseadresse und der abgerufenen Paritätsbits; und das Bestimmen, unter Verwendung einer Fehlererfassungsschaltung, des Vorliegens eines Adressfehlers basierend auf der decodierten Schreibadresse und der Leseadresse.

Claims (20)

  1. Schaltung (100, 200,300,400), umfassend: einen Speicher (110, 210,410), der so konfiguriert ist, dass er eine Dateneinheit (D_U) und Paritätsbits (P_B, A_P _B) speichert, wobei die Paritätsbits (P_B, A_P_B) auf einer Schreibadresse (W_ADD, RW_ADD) basieren, die der gespeicherten Dateneinheit (D_U) zugeordnet ist; einen Adressport (105, 301), der so konfiguriert ist, dass er eine Leseadresse (R_ADD, RW_ADD) für die gespeicherte Dateneinheit (D_U) empfängt; eine Decodierschaltung (150, 250), die so konfiguriert ist, dass sie eine decodierte Schreibadresse (D_W_ADD) aus der Leseadresse (R_ADD, RW_ADD) und den Paritätsbits (P_B, A_P_B) erzeugt; und eine Fehlererfassungsschaltung (160), die so konfiguriert ist, dass sie auf Grundlage eines Vergleichs der decodierten Schreibadresse (D_W_ADD) mit der Leseadresse (R_ADD, RW_ADD) bestimmt, ob ein Adressfehler vorliegt.
  2. Schaltung (100) nach Anspruch 1, wobei die Paritätsbits (P_B) auf der Schreibadresse (W_ADD) in Kombination mit der gespeicherten Dateneinheit (D_U) basieren.
  3. Schaltung (200, 300, 400) nach Anspruch 1, wobei die Paritätsbits (A_P_B) nur auf der Schreibadresse (W_ADD, RW_ADD) basieren.
  4. Schaltung (200, 300) nach einem der vorhergehenden Ansprüche, die ferner eine Codierschaltung (230) umfasst, die so konfiguriert ist, dass sie die Paritätsbits (A_P_B) nur aus der Schreibadresse (W_ADD, RW_ADD) erzeugt.
  5. Schaltung (200, 300,400) nach einem der vorhergehenden Ansprüche, die ferner eine zweite Decodierschaltung (240) umfasst, die so konfiguriert ist, dass sie zweite Paritätsbits (D_P_B) decodiert, wobei die zweiten Paritätsbits (D_P_B) auf der gespeicherten Dateneinheit (D_U) basieren.
  6. Schaltung (100, 200, 300) nach einem der vorhergehenden Ansprüche, die ferner einen Schreibadressenport (101, 301) umfasst, der so konfiguriert ist, dass er die Schreibadresse (W_ADD, RW_ADD) empfängt.
  7. Schaltung (300) nach einem der vorhergehenden Ansprüche, wobei der Speicher (210) ein Dual-Port-Speicher ist und der Adressport (301) so konfiguriert ist, dass er die Schreibadresse (RW_ADD) als kombinierte Lese-/Schreibadresse (RW_ADD) empfängt.
  8. Schaltung (400) nach einem der Ansprüche 1 bis 6, wobei der Speicher (410) ein Festwertspeicher ist.
  9. Multiport-Speicherschaltung (100, 200), umfassend: einen Schreibadressenport (101), der so konfiguriert ist, dass er eine Schreibadresse (W_ADD) empfängt; einen Dateneingangsport (103), der so konfiguriert ist, dass er eine Dateneinheit (D_U) empfängt; eine Codierschaltung (130, 230), die so konfiguriert ist, dass sie Paritätsbits (P_B, A_P_B) aus der Schreibadresse (W_ADD) erzeugt; einen Speicher (110, 210), der so konfiguriert ist, dass er die Dateneinheit (D_U) und die Paritätsbits (P_B, A_P_B) an der Schreibadresse (W_ADD) speichert; einen Leseadressenport (105), der von dem Schreibadressenport (101) getrennt ist, wobei der Leseadressenport (105) so konfiguriert ist, dass er eine Leseadresse (R_ADD) für die gespeicherte Dateneinheit (D_U) empfängt; eine Decodierschaltung (150, 250), die so konfiguriert ist, dass sie eine decodierte Schreibadresse (D_W_ADD) aus der Leseadresse (R_ADD) und den Paritätsbits (P_B, A_P_B) erzeugt; und eine Fehlererfassungsschaltung (160), die so konfiguriert ist, dass sie auf Grundlage eines Vergleichs der decodierten Schreibadresse (D_W_ADD) mit der Leseadresse (R_ADD) bestimmt, ob ein Adressfehler vorliegt.
  10. Schaltung (100) nach Anspruch 9, wobei die Paritätsbits (P_B) auf der Schreibadresse (W_ADD) zusammen mit der gespeicherten Dateneinheit (D_U) basieren.
  11. Schaltung (200) nach Anspruch 9, wobei die Paritätsbits (A_P_B) nur auf der Schreibadresse (W_ADD) basieren.
  12. Schaltung (200) nach einem der Ansprüche 9 bis 11, ferner umfassend: eine Codierschaltung (230), die so konfiguriert ist, dass sie die Paritätsbits (A_P_B) nur aus der Schreibadresse (W_ADD) erzeugt; und eine zweite Decodierschaltung (240), die so konfiguriert ist, dass sie zweite Paritätsbits (D_P_B) basierend auf der gespeicherten Dateneinheit (D_U) decodiert.
  13. Verfahren (500) zum Betreiben eines Speichers (110, 210, 410), umfassend: Empfangen (540) einer Leseadresse (R_ADD) für eine in dem Speicher (110, 210,410) gespeicherte Dateneinheit (D_U) an einem Port (105, 301) des Speichers (110, 210 410); Abrufen (550) von Paritätsbits (P_B, A_P_B) aus dem Speicher (110, 210, 410), wobei die Paritätsbits (P_B, A_P_B) auf einer Schreibadresse (W_ADD, RW_ADD) für die gespeicherte Dateneinheit (D_U) basieren; Erzeugen (560) einer decodierten Schreibadresse (D_W_ADD) unter Verwendung einer Decodierschaltung (150, 250) auf Grundlage der Leseadresse (R_ADD) und der abgerufenen Paritätsbits (R_P_B, R_A_P_B); und Bestimmen (570), unter Verwendung einer Fehlererfassungsschaltung (160), des Vorliegens eines Adressfehlers basierend auf der decodierten Schreibadresse (D_W_ADD) und der Leseadresse (R_ADD).
  14. Verfahren (500) nach Anspruch 13, das ferner das Speichern (530) der Dateneinheit (D_U) und der Paritätsbits (P_B, A_P_B) in dem Speicher (110, 210, 410) umfasst.
  15. Verfahren (500) nach Anspruch 13 oder 14, das ferner das Erzeugen (520) der Paritätsbits (P_B) aus der Schreibadresse (W__ADD) zusammen mit der gespeicherten Dateneinheit (D_U) umfasst.
  16. Verfahren (500) nach Anspruch 13 oder 14, das ferner das Erzeugen (520) der Paritätsbits (A_P_B) nur aus der Schreibadresse (W_ADD, RW_ADD) umfasst.
  17. Verfahren (500) nach einem der Ansprüche 13 bis 16, das ferner das Erzeugen (510) der Schreibadresse (RW_ADD) als kombinierte Lese-/Schreibadresse (RW_ADD) umfasst.
  18. Verfahren (500) nach einem der Ansprüche 13 bis 17, das ferner das Erzeugen (520) und Speichern (530) der Paritätsbits (A_P_B) als Teil eines ROM-Programmierverfahrens (420) umfasst.
  19. Verfahren (500) nach einem der Ansprüche 13 bis 18, das ferner das Erzeugen (580) eines Fehlersignals auf Grundlage der Bestimmung des Vorliegens eines Adressfehlers umfasst.
  20. Verfahren (500) nach einem der Ansprüche 13 bis 19, das ferner das Korrigieren (590) eines Adressfehlers auf Grundlage der Bestimmung des Vorliegens eines Adressfehlers umfasst.
DE102017114054.9A 2016-11-29 2017-06-26 Speicheradressen-Schutzschaltung und Verfahren Active DE102017114054B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662427684P 2016-11-29 2016-11-29
US62/427,684 2016-11-29
US15/622,408 2017-06-14
US15/622,408 US10740174B2 (en) 2016-11-29 2017-06-14 Memory address protection circuit and method

Publications (2)

Publication Number Publication Date
DE102017114054A1 DE102017114054A1 (de) 2018-05-30
DE102017114054B4 true DE102017114054B4 (de) 2022-08-18

Family

ID=62117731

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017114054.9A Active DE102017114054B4 (de) 2016-11-29 2017-06-26 Speicheradressen-Schutzschaltung und Verfahren

Country Status (5)

Country Link
US (3) US10740174B2 (de)
KR (1) KR101952512B1 (de)
CN (1) CN108121616B (de)
DE (1) DE102017114054B4 (de)
TW (1) TWI632459B (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10553300B2 (en) * 2017-06-09 2020-02-04 Taiwan Semiconductor Manufacturing Company, Ltd. Method of detecting address decoding error and address decoder error detection system
KR20210071469A (ko) 2019-12-06 2021-06-16 삼성전자주식회사 기능 안전 수준을 향상시키는 오류 검출 기능을 갖는 메모리 장치 및 이를 포함하는 제어 시스템
DE112022001547T5 (de) * 2021-06-01 2024-01-11 Microchip Technology Inc. Speicheradressenschutz
CN114237972A (zh) * 2021-12-13 2022-03-25 合肥芯荣微电子有限公司 一种用于总线传输的端到端ecc保护装置及方法
US11928021B2 (en) * 2022-03-31 2024-03-12 Micron Technology, Inc. Systems and methods for address fault detection

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2655653C2 (de) 1976-12-08 1982-12-16 Siemens AG, 1000 Berlin und 8000 München Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher
US5173905A (en) 1990-03-29 1992-12-22 Micron Technology, Inc. Parity and error correction coding on integrated circuit addresses
DE10206189A1 (de) 2001-11-12 2003-05-28 Siemens Ag Speichertest
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US8301959B2 (en) 2006-09-01 2012-10-30 Maple Vision Technologies Inc. Apparatus and method for processing beam information using low density parity check code
US8464136B2 (en) 2010-06-10 2013-06-11 Global Unichip Corporation Data transfer protection apparatus for flash memory controller
US8812935B2 (en) 2012-08-02 2014-08-19 Oracle International Corporation Using a data ECC to detect address corruption

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3599146A (en) * 1968-04-19 1971-08-10 Rca Corp Memory addressing failure detection
JPH07107782B2 (ja) * 1986-02-28 1995-11-15 ソニー株式会社 ディジタルテープレコーダ
JPH05236099A (ja) * 1992-02-19 1993-09-10 Nec Corp 時分割スイッチにおける障害検出方式
US6072746A (en) * 1998-08-14 2000-06-06 International Business Machines Corporation Self-timed address decoder for register file and compare circuit of a multi-port CAM
US6938142B2 (en) * 2002-08-28 2005-08-30 Micron Technology, Inc. Multi-bank memory accesses using posted writes
US7203890B1 (en) * 2004-06-16 2007-04-10 Azul Systems, Inc. Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits
JP4799027B2 (ja) * 2005-03-31 2011-10-19 富士通株式会社 記憶制御回路、記憶制御回路におけるアドレスエラーチェック方法
TWI410970B (zh) * 2005-07-29 2013-10-01 Ibm 控制記憶體的方法及記憶體系統
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
JP2007188552A (ja) * 2006-01-11 2007-07-26 Sharp Corp 半導体記憶装置
US8112699B2 (en) * 2008-02-14 2012-02-07 Atmel Rousset S.A.S. Error detecting/correcting scheme for memories
CN101604267B (zh) * 2008-06-09 2012-05-30 普安科技股份有限公司 独立磁盘冗余阵列系统
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
US20120110411A1 (en) * 2010-10-29 2012-05-03 Brocade Communications Systems, Inc. Content Addressable Memory (CAM) Parity And Error Correction Code (ECC) Protection
US8687437B2 (en) 2010-11-30 2014-04-01 Taiwan Semiconductor Manufacturing Company, Ltd. Write assist circuitry
CN102034555B (zh) * 2011-01-19 2012-09-19 哈尔滨工业大学 一种利用奇偶校验码进行故障在线纠错装置及方法
US8630132B2 (en) 2011-05-31 2014-01-14 Taiwan Semiconductor Manufacturing Company, Ltd. SRAM read and write assist apparatus
US8693235B2 (en) 2011-12-06 2014-04-08 Taiwan Semiconductor Manufacturing Company, Ltd. Methods and apparatus for finFET SRAM arrays in integrated circuits
US8605523B2 (en) 2012-02-17 2013-12-10 Taiwan Semiconductor Manufacturing Company, Ltd. Tracking capacitive loads
US8964492B2 (en) 2012-07-27 2015-02-24 Taiwan Semiconductor Manufacturing Company, Ltd. Tracking mechanism for writing to a memory cell
US8760948B2 (en) 2012-09-26 2014-06-24 Taiwan Semiconductor Manufacturing Company, Ltd. Multiple bitcells tracking scheme semiconductor memory array
US8982643B2 (en) 2012-12-20 2015-03-17 Taiwan Semiconductor Manufacturing Company, Ltd. Shared tracking circuit
US8867263B2 (en) * 2013-01-14 2014-10-21 Freescale Semiconductor, Inc. Multiport memory with matching address and data line control
US8811102B2 (en) * 2013-01-16 2014-08-19 International Business Machines Corporation Multiple read port memory system with a single port memory cell
US9324413B2 (en) 2013-02-15 2016-04-26 Taiwan Semiconductor Manufacturing Company, Ltd. Write assist circuit, memory device and method
US8929160B2 (en) 2013-02-28 2015-01-06 Taiwan Semiconductor Manufacturing Company, Ltd. Tracking circuit
US9117510B2 (en) 2013-03-14 2015-08-25 Taiwan Semiconductor Manufacturing Company, Ltd. Circuit for memory write data operation
US9129707B2 (en) 2013-10-02 2015-09-08 Taiwan Semiconductor Manufacturing Co., Ltd. Dual port SRAM with dummy read recovery
US10431295B2 (en) 2014-05-30 2019-10-01 Taiwan Semiconductor Manufacturing Company, Ltd. Static random access memory and method of controlling the same
US9281056B2 (en) 2014-06-18 2016-03-08 Taiwan Semiconductor Manufacturing Company, Ltd. Static random access memory and method of using the same
US9405624B2 (en) * 2014-06-19 2016-08-02 Seagate Technology Llc On-die error detection and correction during multi-step programming
US9218872B1 (en) 2014-06-20 2015-12-22 Taiwan Semiconductor Manufactruing Company, Ltd. Memory chip and layout design for manufacturing same
US9564211B2 (en) 2014-06-27 2017-02-07 Taiwan Semiconductor Manufacturing Company, Ltd. Memory chip and layout design for manufacturing same
US9455025B2 (en) 2014-06-27 2016-09-27 Taiwan Semiconductor Manufacturing Company, Ltd. Static random access memory and method of controlling the same
US9105333B1 (en) 2014-07-03 2015-08-11 Sandisk Technologies Inc. On-chip copying of data between NAND flash memory and ReRAM of a memory die
US9852811B2 (en) 2014-11-13 2017-12-26 Macronix International Co., Ltd. Device and method for detecting controller signal errors in flash memory
US10489241B2 (en) * 2015-12-30 2019-11-26 Arteris, Inc. Control and address redundancy in storage buffer

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2655653C2 (de) 1976-12-08 1982-12-16 Siemens AG, 1000 Berlin und 8000 München Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher
US5173905A (en) 1990-03-29 1992-12-22 Micron Technology, Inc. Parity and error correction coding on integrated circuit addresses
DE10206189A1 (de) 2001-11-12 2003-05-28 Siemens Ag Speichertest
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US8301959B2 (en) 2006-09-01 2012-10-30 Maple Vision Technologies Inc. Apparatus and method for processing beam information using low density parity check code
US8464136B2 (en) 2010-06-10 2013-06-11 Global Unichip Corporation Data transfer protection apparatus for flash memory controller
US8812935B2 (en) 2012-08-02 2014-08-19 Oracle International Corporation Using a data ECC to detect address corruption

Also Published As

Publication number Publication date
US20180150352A1 (en) 2018-05-31
US10740174B2 (en) 2020-08-11
US20220334916A1 (en) 2022-10-20
CN108121616A (zh) 2018-06-05
US11379298B2 (en) 2022-07-05
CN108121616B (zh) 2021-03-23
US11714705B2 (en) 2023-08-01
US20230385145A1 (en) 2023-11-30
US20200371865A1 (en) 2020-11-26
KR20180060927A (ko) 2018-06-07
DE102017114054A1 (de) 2018-05-30
KR101952512B1 (ko) 2019-02-26
TW201820148A (zh) 2018-06-01
TWI632459B (zh) 2018-08-11

Similar Documents

Publication Publication Date Title
DE102017114054B4 (de) Speicheradressen-Schutzschaltung und Verfahren
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE69026743T2 (de) Fehlertolerantes Speichersystem
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE69220818T2 (de) Verfahren und Einrichtung zur Fehlererkennung in Recherspeichern versehen mit Mehrfach-bit-Ausgängen
DE68927164T2 (de) Verfahren zur Identifizierung schlechter Daten
DE2030760A1 (de) Speicherschaltung
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
DE102011108933A1 (de) Sichere Speicherung durch interneBetriebssicherstellung
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE102013215055A1 (de) Schaltungsanordnung und Verfahren mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE3784181T2 (de) Fehlererkennung unter verwendung von paritaetspruefung mit veraenderlichem feld.
DE102015210651B4 (de) Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
DE102005016050A1 (de) Speicherfehlererkennungsvorrichtung und Verfahren zum Erkennen eines Speicherfehlers
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102020106203A1 (de) Vorrichtung für integrierte Speicher-Selbsttests mit Fehlererkennungs- und -Korrekturcodebekanntheit
DE69129059T2 (de) Speichersystem mit Fehlererkennung und -korrektur
DE102011087634B4 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE1250163B (de) Einrichtung zur Paritätsprüfung von Speicherworten
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final