-
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.