DE112022001547T5 - Speicheradressenschutz - Google Patents

Speicheradressenschutz Download PDF

Info

Publication number
DE112022001547T5
DE112022001547T5 DE112022001547.0T DE112022001547T DE112022001547T5 DE 112022001547 T5 DE112022001547 T5 DE 112022001547T5 DE 112022001547 T DE112022001547 T DE 112022001547T DE 112022001547 T5 DE112022001547 T5 DE 112022001547T5
Authority
DE
Germany
Prior art keywords
read
burst
address
data
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112022001547.0T
Other languages
English (en)
Inventor
Peter John Waldemar Graumann
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of DE112022001547T5 publication Critical patent/DE112022001547T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein Verfahren zum Speicherschutz schließt das Empfangen einer Burst-Schreibanweisung ein, die Daten und eine Burst-Schreibadresse einschließt. Die Daten werden in eine Vielzahl von Datenblöcken segmentiert. Ein oder mehrere Bits der Burst-Schreibadresse oder ein Hash der Burst-Schreibadresse werden mit jeweiligen Datenblöcken verkettet, um Daten- und Schreibadressbitsegmente (DWAB-Segmente) zu erhalten. Ein SECDED-ECC wird an jeweiligen DWAB-Segmenten ausgeführt, um eine entsprechende Vielzahl von Sätzen von Paritätsbits (DWAB-PB) zu erzeugen. Jeweilige DWAB-PB werden mit dem entsprechenden Datenblock verkettet, um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke) zu erzeugen, wobei keiner der FEC-Blöcke die Burst-Schreibadresse oder den Hash der Burst-Schreibadresse einschließt. Ein Burst-Schreibbefehl und ein jeweiliger Abschnitt eines jeweiligen FEC-Blocks werden während einer Vielzahl von Taktimpulsen an jeweilige Speichervorrichtungen gesendet, bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden.

Description

  • VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht gemäß 35 U.S.C., § 119, den Nutzen des Prioritätsdatums der vorläufigen US-Patentanmeldung, Seriennummer 63/195,618 , eingereicht am 1. Juni 2021, deren gesamter Inhalt durch Bezugnahme aufgenommen ist, als wäre sie hierin vollständig aufgeführt.
  • HINTERGRUND
  • Direktzugriffsspeicher (random access memory, RAM) sind eine weitverbreitete Art von Halbleiterspeicher und schließen dynamische RAM (dynamic RAM, DRAM), synchrone DRAM (synchronous DRAM, SDRAM) und SDRAM mit doppelter Datenrate (DDR-SDRAM) ein, die Daten sowohl an der steigenden Flanke als auch an der fallenden Flanke jedes Taktimpulses übertragen. Einige DDR-SDRAM wie zum Beispiel DDR4-SDRAM und DDR5-SDRAM sind als Burst-orientierte Speicher betreibbar. Im Burst-Modus ermöglichen diese DDR-SDRAMs Datenübertragungen mit hoher Geschwindigkeit und hohem Durchsatz. Zum Beispiel übergeben Prozessoranweisungen, die auf Daten aus dem DDR-SDRAM zugreifen müssen, diesem die Adresse in einer Leseanforderungsanweisung und warten dann auf die angeforderten Informationen während einer Zeit, die der Taktgeschwindigkeit entspricht, mit der der Speicher läuft. Nach dem Lokalisieren eines ersten Blocks der angeforderten Daten wird eine Anzahl (z. B. 32) von Bytes in der unmittelbaren Umgebung des ersten Blocks, in derselben Transaktion in der Form eines „Burst“ von Speicheraktivität übertragen. In ähnlicher Weise wird zum Schreiben von Daten eine Anzahl (z. B. 32) von Bytes in der unmittelbaren Umgebung des ersten Blocks, in der gleichen Transaktion als „Burst“ von Speicheraktivität geschrieben.
  • DDR-SDRAM Iterationen, die es ermöglichen, Burst-Lese- und -Schreibvorgänge wie z. B. DDR4-SDRAM und DDR5-SDRAM, sind wünschenswert, da sie mit höheren Bitraten und/oder Frequenzen arbeiten können als frühere Generationen von DDR-SDRAM-Vorrichtungen. Derartige Speicher unterliegen jedoch fehlerhaften Leseadressereignissen wie z. B. Adressleitungsfehlern, bei denen unerwünschte Daten aus einer falschen Adresse wiederhergestellt werden.
  • Einige Adressleitungsfehler ergeben sich aus einer Ein-Bit-Umkehr (1-Bit-Umkehr) an einer bestimmten Stelle der betroffenen Leseradresse. Eine 1-Bit-Umkehr kann katastrophale Folgen im Zusammenhang mit dem zuverlässigen Betrieb von Datenzentren und anderen Entitäten mit hohen Datenverkehrsaufkommen haben. In derartigen Kontexten wird eine konsistente Erfassung der Adressleitungsfehler benötigt, um die Entstehung und anschließende Verbreitung derartiger Fehler zu verhindern. Fehlerkorrektur wird verwendet, um diese und verwandte Probleme zu verhindern oder zu abzumildern.
  • Adressfehler, manchmal als „Adressleitungs“-Fehler oder als „Fehladresse“ bezeichnet, treten auf, wenn das Lesen Daten aus dem Lesevorgang abruft, bei denen es sich infolge einer Nichtübereinstimmung zwischen der Burst-Schreibadresse und der Laseradresse, die zum Durchführen eines bestimmten Lesevorgangs verwendet wurde, nicht um die Daten handelt, die durch die Leseanweisung abgerufen werden sollten.
  • Einige Fehler treten während des Prozesses zum Schreiben der Daten in den DDR-SDRAM auf, die als „Burst-schreibbezogene Fehler“ bezeichnet werden können. Diese Fehlerarten können als Ergebnis einer Nichtübereinstimmung zwischen der Burst-Schreibadresse und der Adresse, die zum Durchführen eines bestimmten Schreibvorgangs verwendet wurde, oder als Ergebnis eines bestimmten anderen Fehlers in dem Schreibprozess auftreten. Eine „Verfälschungsbit“-Markierung („poisonbit“ marker) wird manchmal verwendet, um einen DDR-SDRAM-Burst als „defekt“ zu markieren, was bedeutet, dass der Burst in Bezug auf einen Adressleitungsfehler (oder einen anderen Fehler) defekt ist und die Daten somit in Bezug auf die Datenanforderung des Prozessors zu dem Zeitpunkt als beschädigt bekannt sind, zu dem die Daten geschrieben werden. Ein Burst-Schreib-bezogener Fehler oder ein anderer Fehler, der zum Zeitpunkt des Schreibprozesses bekannt ist, kann zusammen als „durch ein Verfälschungsbit angegebener Fehler“ bezeichnet werden, wenn eine Verfälschungsbitmarkierung verwendet wird, um den betreffenden Fehler zu kennzeichnen.
  • Bei herkömmlichen Fehlerkorrekturansätzen wird ein einzelnes Bit aus dem Fehlerkorrektursteuerungs-Paritätsfeld (ECC= Error Correction Control) verwendet, um eine Verfälschungsbitmarkierung zu bezeichnen. Die Verwendung des Paritätsfeldbits, um ein Verfälschungsbit zu markieren, ist unerwünscht, da die Anzahl der für ECC verfügbaren Bits reduziert wird. Ein weiterer herkömmlicher Ansatz kehrt eine Anzahl von Bits aus dem Burst-Block als Verfälschungsbitmarkierung um. Diese herkömmlichen Ansätze können zu einem markierten Block führen, der nicht ordnungsgemäß decodiert wird, sondern von einem normalen undecodierbaren Block nicht unterscheidbar ist (z. B. einem Block mit zu vielen Fehlern). Infolgedessen „verlieren“ die herkömmlichen Ansätze somit die Verfälschungsbitmarkierung selbst. Diese Ansätze können nicht nur zu einem völlig fehlerhaften Block führen, der nicht korrigiert werden kann, sondern auch der markierte Block unterliegt einer Fehlkorrektur. Insbesondere kann der markierte Block fälschlicherweise als „gut“ markiert werden, schließt aber tatsächlich vollständig falsche Daten ein. Im hierin verwendeten Sinne bezeichnet der Begriff „falsche Korrektur“ das Markieren eines Burst-Blocks zur Verarbeitung von Daten, die nicht beschädigt sind, die einer Speicheradresse in seinen Kopfdaten (header) entsprechen, aber in Wirklichkeit Daten einschließen, die nicht mit der angegebenen Adresse in Zusammenhang stehen, was somit wertlos und/oder kontraproduktiv für die weitere Verarbeitung ist.
  • Eine weitere Situation, die eine falsche Korrektur verursachen kann, sind Fehladressfehler, die auftreten, wenn das Lesen Daten aus dem Lesevorgang abruft, bei denen es sich infolge einer Nichtübereinstimmung zwischen der Burst-Schreibadresse und der Laseradresse, die zum Durchführen eines bestimmten Lesevorgangs verwendet wurde,-nicht um die Daten handelt, die durch die Leseanweisung abgerufen werden sollten, die als Burst-lesebezogener Fehler bezeichnet werden können. Dies kann als Ergebnis einer Nichtübereinstimmung zwischen der Burst-Leseadresse und der Leseadresse auftreten, die verwendet wurde, um einen bestimmten Lesevorgang durchzuführen.
  • Dementsprechend besteht ein Bedarf bezüglich eines Verfahrens und einer Vorrichtung, die eine Erkennung und Korrektur von Adressfehlern und durch Verfälschungsbits angegebenen Fehlern ermöglichen, um die Chancen von nicht korrigierbaren Fehlern zu reduzieren, die aus Verfälschungsblockmarkierung und falschen Korrekturen resultieren, während die Anzahl der zum Speichern von ECC-Paritätsbits verfügbaren Bits nicht beschränkt wird.
  • KURZDARSTELLUNG
  • Es wird ein Verfahren zum Speicherschutz offenbart, das Empfangen einer Burst-Schreibanweisung einschließt. Die Burst-Schreibanweisung schließt Daten und eine Burst-Schreibadresse ein. Die Daten werden in eine Vielzahl von Datenblöcken segmentiert. Ein oder mehrere Bits der Burst-Schreibadresse oder ein Hash der Burst-Schreibadresse werden mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken verkettet, um eine Vielzahl von Daten- und Schreibadressbitsegmenten (DWAB-Segmenten, DWAB = data-and-write-address-bit) zu erhalten. Ein Einzelfehlerkorrektur-Doppelfehlererkennungs-Fehlerkorrekturcode (SECDED-ECC) (SECDED = Single Error Correction Double Error Detection) wird an jeweiligen DWAB-Segmenten der Vielzahl von DWAB-Segmenten ausgeführt, um eine entsprechende Vielzahl von Sätzen von Paritätsbits (DWAB-PB) zu erzeugen. Das jeweilige DWAB-PB wird mit dem entsprechenden Datenblock verkettet, um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke, FEC = forward-error-correction) zu erzeugen. Zu beachten ist, dass keiner der FEC-Blöcke die Burst-Schreibadresse oder den Hash der Burst-Schreibadresse einschließt. Ein Burst-Schreibbefehl und ein jeweiliger Abschnitt eines jeweiligen der FEC-Blöcke werden an jeweilige einer Vielzahl von Speichervorrichtungen während jeweiliger Taktimpulse einer Vielzahl von Taktimpulsen gesendet, bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden.
  • Bei einer Implementierung umfasst das Verketten eines oder mehrerer Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse ferner das Verketten eines Verfälschungsangabebits und eines oder mehrerer Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse mit entsprechenden Datenblöcken der Vielzahl von Datenblöcken, um die Vielzahl von DWAB-Segmenten zu erhalten. Keiner der FEC-Blöcke schließt das Verfälschungsangabebit, die Burst-Schreibadresse oder den Hash der Burst-Schreibadresse ein.
  • Ein Verfahren zum Speicherschutz schließt das Durchführen eines Burst-Lesevorgangs als Reaktion auf das Empfangen einer Burst-Leseanweisung ein, die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an eine Vielzahl von Speichervorrichtungen gesendet wird und als Reaktion auf eine Vielzahl von Lese-Vorwärtsfehlerkorrekturblöcken (Lese-FEC-Blöcken) empfangen wird. Die Lese-FEC-Blöcke werden segmentiert, um eine Vielzahl von Datenabschnitten und eine Vielzahl von entsprechenden DWAB-PB zu erhalten. Ein oder mehrere Bits der Burst-Leseadresse oder ein Hash der Burst-Leseadresse werden mit jeweiligen Datenabschnitten der Vielzahl von Datenabschnitten verkettet, um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten, DRAB = data-and-read-address-bit) zu erhalten. Entsprechende der Vielzahl von DRAB-Segmenten werden unter Verwendung des entsprechenden DWAB-PB und eines Einzelfehlerkorrektur-Doppelfehlererkennungs-Decodiervorgangs (SECDED-Decodiervorgangs) decodiert, um für jeweilige DRAB-Segmente einen Datenblock, und wenn eine Einzelereigniskorrektur (Single Event Correction, SEC) aufgetreten ist, die Bitposition des korrigierten Bits zu erkennen. Es wird festgestellt, dass ein Leseadressfehler aufgetreten ist, wenn eine SEC an einer Bitposition vorgenommen wurde, die dem einen oder den mehreren Bits der Burst-Leseadresse oder einem Hash der Burst-Leseadresse entspricht. Wenn der Leseadressfehler aufgetreten ist, schließt das Verfahren ein: Angeben, dass ein Adressfehler aufgetreten ist, Anfordern einer erneuten Übertragung der Burst-Leseanweisung oder Angeben, dass ein Adressfehler aufgetreten ist und Anfordern einer erneuten Übertragung der Burst-Leseanweisung.
  • Eine integrierte Schaltung (integrated circuit, IC) schließt eine Speichersteuereinheit ein, um eine Burst-Schreibanweisung zu empfangen. Die Burst-Schreibanweisung schließt Daten und eine Burst-Schreibadresse ein. Die Speichersteuereinheit segmentiert die Daten in eine Vielzahl von Datenblöcken. Ein oder mehrere Bits der Burst-Schreibadresse oder ein oder mehrere Bits des Hash der Burst-Schreibadresse werden mit jedem der Vielzahl von Datenblöcken verkettet, um eine Vielzahl von Daten- und Schreibadressbitsegmenten (DWAB-Segmenten) zu erhalten. Ein Einzelfehlerkorrektur-Doppelfehlererkennungs-Fehlerkorrekturcode (SECDED-ECC) wird an jeweiligen DWAB-Segmenten der Vielzahl von DWAB-Segmenten ausgeführt, um entsprechende Sätze von Paritätsbits (DWAB-PB) zu erzeugen. Der jeweilige Satz von Paritätsbits wird mit dem entsprechenden Datenblock verkettet, um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke) zu erzeugen. Keiner der FEC-Blöcke schließt das eine oder die mehreren Bits der Burst-Schreibadresse oder das eine oder die mehreren Bits des Hash der Burst-Schreibadresse ein. Ein Burst-Schreibbefehl und ein jeweiliger Abschnitt eines jeweiligen der FEC-Blöcke werden an einzelne einer Vielzahl von Speichervorrichtungen während jeweiliger einer Vielzahl von Taktimpulsen gesendet, bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden.
  • Die Verfahren und die Vorrichtungen der vorliegenden Erfindung ermöglichen den Schutz von Lesevorgängen von Speichervorrichtungen vor Adressfehlern und vor durch Verfälschungsbits angegebenen Fehlern durch wirksames Erkennen von Adressfehlern beim Auftreten und ermöglichen eine Verfälschungsbitmarkierung von durch Verfälschungsbits angegebenen Fehlern derart, dass die Anzahl der verfügbaren Bits zum Speichern von ECC-Paritätsbits nicht reduziert wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Einige veranschaulichende Gesichtspunkte, Merkmale und Elemente, die sich auf beispielhafte Implementierungen der vorliegenden Offenbarung beziehen, werden hierin unter Bezugnahme auf die folgende(n) Beschreibung und Zeichnungen beschrieben. Somit sind verschiedene Arten, in denen die hierin offenbarten Prinzipien praktisch implementierbar sind, beschrieben, und alle Gesichtspunkte und Äquivalente davon sollen innerhalb des Schutzumfangs des beanspruchten Gegenstands fallen. Die vorstehenden und andere Merkmale und Verwendungen der vorliegenden Offenbarung werden angesichts der folgenden Beschreibung in Verbindung mit jeder aufgezählten Figur (FIG.) der beigefügten Zeichnungen deutlicher. In der gesamten Patentschrift der vorliegenden Offenbarung beziehen sich die gleichen Bezugszeichen (wie in jeder FIG. der Zeichnungen gezeigt) im Allgemeinen auf die gleichen Komponenten, Merkmale und/oder Elemente.
    • 1 stellt ein Speichersystem bildlich dar.
    • 2 stellt ein Flussdiagramm eines Verfahrens zum Speicherschutz bildlich dar.
    • 3 veranschaulicht Funktionen einiger der Strukturen des Speichersystems.
    • 4A stellt ein Beispiel eines DWAB-Segments bildlich dar.
    • 4B stellt ein Beispiel eines DWAB-Segments bildlich dar, das ein Verfälschungsangabebit einschließt.
    • 5A veranschaulicht ein Beispiel der Ausführung eines ECC an dem DWAB-Segment von 4A.
    • 5B veranschaulicht ein Beispiel der Ausführung eines ECC an dem DWAB-Segment von 4B.
    • 6 veranschaulicht eine beispielhafte Ausführung eines SECDED-ECC an einem DWAB-Segment.
    • 7 veranschaulicht eine beispielhafte Ausführung eines SECDED-ECC an einem DWAB-Segment, das ein Verfälschungsangabebit einschließt.
    • 8 veranschaulicht ein Beispiel des Erzeugens eines FEC-Blocks und des Speicherns des FEC-Blocks.
    • 9 veranschaulicht ein Beispiel des Speicherns von FEC-Blöcken auf Speichervorrichtungen.
    • 10A veranschaulicht ein Beispiel des Speicherns von FEC-Blöcken auf Speichervorrichtungen in einem Burst, der sechzehn Taktimpulse aufweist, sodass alle Paritätsbits auf zwei einzelnen Speichervorrichtungen gespeichert werden.
    • 10B veranschaulicht ein Beispiel des Speicherns von FEC-Blöcken auf Speichervorrichtungen in einem Burst, der sechzehn Taktimpulse aufweist, sodass alle Paritätsbits auf einer einzigen Speichervorrichtung gespeichert werden.
    • 10C veranschaulicht ein Beispiel des Speicherns von FEC-Blöcken auf achtzehn Speichervorrichtungen in einem Burst, der acht Taktimpulse aufweist.
    • 10D veranschaulicht ein Beispiel des Speicherns von FEC-Blöcken auf neun Speichervorrichtungen in einem Burst, der acht Taktimpulse aufweist.
    • 11 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Speicherschutz bildlich dar.
    • 12 veranschaulicht Funktionen einiger der Strukturen des Speichersystems in Bezug auf das Verfahren von 11.
    • 13A veranschaulicht ein Beispiel des Decodierens eines DRAB-Segments.
    • 13B veranschaulicht ein Beispiel des Decodierens eines DRAB-Segments, das ein Verfälschungsangabebit einschließt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 zeigt ein System 1, das eine IC-Vorrichtung 3 und Speichervorrichtungen 2 einschließt. Die IC-Vorrichtung 3 schließt eine Speichersteuereinheit 5 und Speichervorrichtungen 2a ein, die mit der Speichersteuereinheit 5 verbunden sind. Die Speichervorrichtungen des Systems 1 können außerhalb der IC-Vorrichtung 3 (z. B. Speichervorrichtungen 2) oder intern in der IC-Vorrichtung 3 (Speichervorrichtungen 2a) oder sowohl interne (Speichervorrichtungen 2a) als auch externe (Speichervorrichtungen 2) der IC-Vorrichtung 3 sein. Die Speichersteuereinheit 5 schließt eine Schreibsteuereinheit 10, einen Codierer 11, eine Lesesteuereinheit 12, einen Decodierer 13, einen Taktgeber 14, eine Steuereinheit 15, einen Speicherbus 16 und eine Schnittstelle 18 ein. Die Schnittstelle 18 ermöglicht der IC-Vorrichtung 3, mit einer oder mehreren externen Vorrichtungen (oder anderen Entitäten) außerhalb der IC-Vorrichtung 3 zu Datenaustauschzwecken verbunden zu werden. Bei dem vorliegenden Beispiel schließt die Schnittstelle 18 einen Eingangs- und Ausgangsverbindung- (E/A-Verbindung) 19 ein, die einen Datenaustausch mit externen Vorrichtungen wie zum Beispiel einem Host-Datenverarbeitungssystem ermöglicht.
  • Der Speicherbus 16 verbindet eines oder mehreres der Schreibsteuereinheit 10, des Codierers 11, der Lesesteuereinheit 12, des Decodierers 13, des Taktgebers 14, der Steuereinheit 15, der Schnittstelle 18 und der Speichervorrichtungen 2 bis 2a und ermöglicht somit eine Datenübertragung zwischen beliebigen und allen dieser Komponenten. Die Steuereinheit 15 steuert eines oder mehreres der Schreibsteuereinheit 10, des Codierers 11, der Lesesteuereinheit 12, des Decodierers 13, des Taktgebers 14, des Speicherbusses 16, der Schnittstelle 18 und der Speichervorrichtungen 2 bis 2a.
  • Der Takt 14 erzeugt ein Taktsignal (CLK) 6, mit dem Speichervorgänge der Vorrichtung synchronisiert werden. Bei einer beispielhaften Implementierung sind die Speichervorrichtungen 2, die Speichervorrichtungen 2a oder sowohl die Speichervorrichtungen 2 als auch die Speichervorrichtungen 2a als DDR-SDRAM betreibbar, und der Takt 14 taktet die IC-Vorrichtung 3 an seiner steigenden Flanke ,Clk+' und wieder an seiner fallenden Flanke ,Clk-`. Zwei (2) aufeinanderfolgende Wörter sind somit bei jedem CLK 6 übertragbar; ein erstes der Wörter bei der steigenden Flanke von Clk+ und ein zweites der Wörter bei der fallenden Flanke davon Clk-. Beispielhafte Implementierungen von Speichervorrichtungen 2 bis 2a schließen ohne Einschränkung DDR4-SDRAM und/oder DDR5-SDRAM ein. Bei einer alternativen Implementierung wird der CLK 6 aus einer externen Taktquelle bereitgestellt.
  • Der Decodierer 13 schließt eine Decodier-Engine 56 und eine Decodierlogik 55 ein, die miteinander verbunden sind. Bei einem Beispiel führt eine Decodier-Engine 56 einen Decodiervorgang (z. B. einen SECDED-Decodiervorgang) an der Eingabe durch, die von der Decodierlogik 55 empfangen wurde. Bei dem vorliegenden Beispiel schließen eines oder mehreres der Speichersteuereinheit 5, der Schreibsteuereinheit 10, des Codierers 11, der Lesesteuereinheit 12, des Decodierers 13, des Taktgebers 14, der Steuereinheit 15, des Speicherbusses 16 und der Schnittstelle 18 Software, Hardware (kann z. B. einen Prozessor einschließen), Firmware oder eine Kombination aus Software und Hardware zum Durchführen von Aufgaben wie z. B. einigen oder allen der Schritte der nachstehend gezeigten Verfahren 100, 200 ein.
  • 2 zeigt ein Flussdiagramm eines Verfahrens 100 zum Speicherschutz. Bei einem Beispiel führt die Speichersteuereinheit 5 von 1 alle Schritte des Verfahrens 100 durch. In der folgenden Erörterung der Verfahren 100 und 200 können die Speichervorrichtungen 2 bis 2a, auf die geschrieben oder von denen gelesen wird, sowohl intern in als auch extern zu der IC-Vorrichtung vorliegen, die einige oder alle der Schritte des betreffenden Verfahrens 100 oder des Verfahrens 200 durchführt, die nachstehend weiter beschrieben werden. 1 veranschaulicht ein System 1, in dem Speichervorrichtungen sowohl als interne (Speichervorrichtungen 2a) als auch externe (Speichervorrichtungen 2) gezeigt sind, um zu veranschaulichen, dass die verschiedenen Arten von Speichervorrichtungen in dem System 1 implementiert sein können. Obwohl das System 1 sowohl interne Speichervorrichtungen 2a als auch externe Speichervorrichtungen 2 einschließen kann, schließt das System 1 alternativ nur Speichervorrichtungen 2 ein, die sich außerhalb der IC-Vorrichtung 3 befinden (d. h., das System 1 schließt keine Speichervorrichtungen 2a ein), und die Lesevorgänge und Schreibvorgänge der Verfahren 100 und 200 werden nur auf Speichervorrichtungen 2 durchgeführt. Bei einem weiteren Beispiel schließt das System 1 nur interne Speichervorrichtungen 2a ein (d. h., das System 1 schließt keine Speichervorrichtungen 2 ein), und die Lesevorgänge und Schreibvorgänge der Verfahren 100 und 200 werden nur auf Speichervorrichtungen 2a durchgeführt.
  • Eine Burst-Schreibanweisung wird empfangen (101). Die Burst-Schreibanweisung schließt Daten und eine Burst-Schreibadresse ein. In 1 wird die Burst-Schreibanweisung (z. B. von einem Hostcomputer) über E/A-Verbindung 19 der Schnittstelle 18 empfangen und wird mit der Schreibsteuereinheit 10 über den Speicherbus 16 verbunden. 3 zeigt ein Beispiel einer Burst-Schreibanweisung 31, die Daten 32 und eine Burst-Schreibadresse 33 einschließt. Bei diesem Beispiel wird die Burst-Schreibanweisung 31 an der Schnittstelle 18 empfangen, die über den Speicherbus 16 mit der Schreibsteuereinheit 10 verbunden ist, wie durch den Pfeil 40 veranschaulicht.
  • In der folgenden Erörterung können Datenaustauschvorgänge, die angeben, dass ein Burst-Schreibvorgang oder ein Burst-Lesevorgang durchgeführt werden muss, als „Anweisung“ oder als „Befehl“ bezeichnet sein. Zwischen der Bedeutung des Begriffs „Anweisung“ und des Begriffs „Befehl“ besteht in dem in der vorliegenden Anmeldung verwendeten Sinne kein Unterschied. Zur Unterscheidung zwischen eingehenden und ausgehenden Anweisungen/Befehlen wird der Begriff „Anweisungen“ für eingehende Anforderungen an den IC verwendet, um einen Lesevorgang oder Schreibvorgang durchzuführen, und der Begriff „Befehl“ wird verwendet, um Anforderungen an Speichervorrichtungen zum Durchführen eines Lesevorgangs oder eines Schreibvorgangs zu bezeichnen.
  • Die Daten werden in eine Vielzahl von Datenblöcken segmentiert (102). In 3 segmentiert die Schreibsteuereinheit 10 die Daten 32 in eine Vielzahl von Datenblöcken 34. Bei einem Beispiel (102) werden die Daten 32 in eine Anzahl von Datenblöcken 34 segmentiert, die gleich der Anzahl der Taktimpulse des Burst-Schreibvorgangs sind. Bei einem Beispiel werden die Daten 32 in eine Vielzahl von 64-Bit-Datenblöcken 34 segmentiert. Alternativ werden die Daten 32 in größere oder kleinere Blöcke segmentiert, wie zum Beispiel ohne Einschränkung 128-Bit oder 256-Bit-Blöcke.
  • Ein oder mehrere Bits der Burst-Schreibadresse oder ein Hash der Burst-Schreibadresse werden mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken verkettet (103), um eine Vielzahl von Daten- und Schreibadressbitsegmenten (DWAB-Segmenten) 36 zu erhalten. Jedes der Vielzahl von DWAB-Segmenten entspricht einem jeweiligen der Vielzahl von Datenblöcken 34. Der Begriff „verketten“ ist im hierin verwendeten Sinne so gemeint, dass er das Verbinden der Strukturen einschließt, von denen angegeben ist, dass die verkettet werden sollen. Die Schreibadressbits 35 können mit dem Ende des jeweiligen Datenblocks 34, dem Beginn des jeweiligen Datenblocks 34 oder an einer vorgegebenen Stelle innerhalb des jeweiligen Datenblocks 34 verkettet werden. In 1 führt die Speichersteuereinheit 5 das Verketten von Schritt 103 durch (z. B. führen eines oder mehreres der Schreibsteuereinheit 10, der Steuereinheit 15 und des Codierers 11 die Verkettung durch). Wenn ein Hash der Burst-Schreibadresse verwendet wird, berechnen die Schreibsteuereinheit 10, die Steuereinheit 15 und/oder der Codierer 11 den Hash der Burst-Schreibadresse. Bei dem in 3 gezeigten Beispiel verkettet die Schreibsteuereinheit 10 das eine oder die mehreren Bits der Burst-Schreibadresse oder einen Hash der Burst-Schreibadresse mit jedem der Datenblöcke 34, um DWAB-Segmente 36 zu erhalten. Das eine oder die mehreren Bits der Burst-Schreibadresse oder ein Hash der Burst-Schreibadresse können nachstehend als „Schreibadressbits“ bezeichnet sein und sind in 3 als Schreibadressbits 35 veranschaulicht. Der Begriff „Schreibadressbits“ schließt in dem in der vorliegenden Anmeldung verwendeten Sinne ein oder mehrere Bits einer Burst-Schreibadresse oder einen Hash einer Burst-Schreibadresse ein. Bei dem in 3 gezeigten Beispiel gibt die Schreibsteuereinheit 10 die DWAB-Segmente 36 an den Codierer 11 aus, wie durch den Pfeil 40a gezeigt.
  • 4A zeigt ein Beispiel des DWAB-Segments 36, das den Datenblock 34 einschließt. Bei diesem Beispiel wurden Schreibadressbits 35 mit dem Ende des Datenblocks 34 verkettet. Es versteht sich jedoch, dass das DWAB-Segment 36 alternativ Schreibadressbits 35 einschließen könnte, die mit dem Anfang des Datenblocks 34 verkettet sind oder alternativ an vorgegebenen Stellen innerhalb des DWAB-Segments 36 derart verteilt sind, dass sie zwischen verschiedenen Bits des Datenblocks 34 verteilt sind.
  • Optional schließt Schritt 103 das Verketten (104) oder mehrere Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse und eines Verfälschungsangabebits mit den jeweiligen Datenblöcken der Vielzahl von Datenblöcken ein, um die Vielzahl von DWAB-Segmenten zu erhalten. Bei dem Begriff „Verfälschungsangabebit“ handelt es sich in dem in der vorliegenden Anmeldung verwendeten Sinne um ein Bit, das einen Block kennzeichnet, der zum Zeitpunkt der Verkettung von Schritt 104 einen bekannten Schreibadressfehler oder einen anderen Fehler wie z. B. einen „defekten“ DDR-SDRAM-Burst aufweist. Bei dem Begriff „verfälschtes Bit“ handelt es sich in dem in der vorliegenden Anmeldung verwendeten Sinne um ein Verfälschungsangabebit, das einen Wert aufweist, der angibt, dass das betreffende Bit als Teil eines Bursts markiert wurde, der einen Fehler (z. B. einen nicht korrigierbaren Block) aufweist. Bei dem Begriff „nicht verfälschtes Bit“ handelt es sich in dem in der vorliegenden Anmeldung verwendeten Sinne um ein Verfälschungsangabebit, das einen Wert aufweist, der angibt, dass das betreffende Bit nicht als Teil eines Bursts markiert wurde, der einen Fehler aufweist. Dementsprechend ist jedes Verfälschungsangabebit entweder ein Verfälschungsbit (das einen Verfälschungsbitwert aufweist) oder ein nicht verfälschtes Bit (das einen Nichtverfälschten Bitwert aufweist). Bei dem Begriff „durch ein Verfälschungsbit angegebener Fehler“ handelt es sich in dem in der vorliegenden Anmeldung verwendeten Sinne um einen Fehler, der nicht korrigiert werden kann, indem der Block wie z. B. ein Schreibadressfehler oder eine andere Fehlerart einfach decodiert wird, und bezeichnet einen Fehler oder Fehler, die die Ursache dafür sind, dass die Verfälschungsangabebits eines bestimmten Burst-Schreibvorgangs als Verfälschungsbits markiert werden.
  • Bei dem in 3 gezeigten Beispiel verbindet die Schreibsteuereinheit 10 DWAB-Segmente 36 mit dem Codierer 11, und der Codierer 11 erzeugt das Verfälschungsangabebit 30 und verkettet die Schreibadressbits 35 und das Verfälschungsangabebit 30 mit jedem Datenblock 34, um DWAB-Segmente 36 zu bilden, die das Verfälschungsangabebit 30 einschließen. Bei diesem Beispiel erzeugt der Codierer 11 das Verfälschungsangabebit 30. Bei einem Beispiel schließt das DWAB-Segment, das von der Schreibsteuereinheit 10 zu dem Codierer 11 verbunden ist, ein nicht verfälschtes Bit als Platzhalter ein, und der Codierer 11 ändert den Wert des empfangenen nicht verfälschten Bits in einen Verfälschungsbitwert, wenn das DWAB-Segment 36 als verfälschtes Bit markiert werden soll, wodurch die Bildung des DWAB-Segments 36 bei dem Codierer 11 abgeschlossen wird. Wenn der Burst-Schreibvorgang keinen Fehler aufweist, wird das Verfälschungsangabebit 30 in jedem DWAB-Segment 36 bei dem Burst-Schreibvorgang auf einen ersten Wert (z. B. „0“) gesetzt, der als Nicht-verfälscht-Bitwert bezeichnet werden kann. Der Nicht-verfälscht-Bitwert gibt an, dass der Burst-Schreibvorgang keinen Fehler aufweist, der nicht korrigiert werden kann, indem der Block einfach decodiert wird (d. h., der Burst-Schreibvorgang weist keinen nicht korrigierbaren Fehler auf), d. h., das Verfälschungsangabebit 30 ist ein Nicht-verfälscht-Bit. Wenn der Burst-Schreibvorgang einen Fehler aufweist, wird das Verfälschungsangabebit 30 in jedem DWAB-Segment 36 bei dem Burst-Schreibvorgang auf einen zweiten Wert gesetzt, der sich von dem ersten Wert (z. B. „1“) unterscheidet, der als Gefälscht-Bitwert bezeichnet werden kann. Der Verfälschungsbitwert gibt an, dass der Burst-Schreibvorgang einen Fehler aufweist, der nicht korrigiert werden kann, indem der Block einfach decodiert wird (d. h., der Burst-Schreibvorgang weist einen nicht korrigierbaren Fehler auf), d. h., das Verfälschungsangabebit 30 ein Gefälscht-Bit.
  • 4B zeigt ein Beispiel, bei dem ein Verfälschungsangabebit 30 mit dem Ende des Datenblocks 34 verkettet wurde, um das DWAB-Segment 36 zu bilden. Es versteht sich jedoch, dass die Schreibadressbits 35 alternativ mit dem Anfang des Datenblocks 34 verkettet werden könnten oder alternativ innerhalb des DWAB-Segments 36 so verteilt werden könnten, dass es zwischen verschiedenen Bits des Datenblocks 34 verteilt ist. In ähnlicher Weise könnte das Verfälschungsangabebit 30 mit dem Anfang des Datenblocks 34 verkettet, mit dem Ende der Schreibadressbits 35 verkettet oder alternativ zwischen Bits des Datenblöcken 34 oder den Schreibadressbits 35 verteilt werden.
  • Ein Einzelfehlerkorrektur-Doppelfehlererkennungs-Fehlerkorrekturcode (SECDED-ECC) wird an jeweiligen DWAB-Segmenten der Vielzahl von DWAB-Segmenten ausgeführt (105), um eine Vielzahl von Sätzen von Paritätsbits (DWAB-PB) zu erzeugen. Bei dem Beispiel von 3 empfängt der Codierer 11 die DWAB-Segmente 36 und führt einen SECDED-ECC-Vorgang an jedem DWAB-Segment 36 aus, um einen entsprechenden Satz von Paritätsbits für jedes DWAB-Segment 36 zu erzeugen, veranschaulicht als DWAB-PB 37.
  • 5A zeigt ein Beispiel, bei dem das DWAB-Segment 36 dem Datenblock 34 und Adressbits 35 einschließt und bei dem der SECDED-ECC-Vorgang von Schritt 105 ein DWAB-PB 37 bildet. Bei diesem Beispiel sind die Datenbits 34 und die Adressbits 35 in dem DWAB-PB 37 widergespiegelt.
  • 5B zeigt ein Beispiel, bei dem die Verkettung von Schritt 104 das DWAB-Segment 36 bildet, das den Datenblock 34, das Verfälschungsangabebit 30 und die Adressbits 35 einschließt, und bei dem SECDED-ECC-Vorgang von Schritt 105 ein DWAB-PB 37 bildet. Bei diesem Beispiel werden sind die Datenbits 34, das Verfälschungsangabebit 30 und die Adressbits 35 in dem DWAB-PB 37 widergespiegelt.
  • Bei einem Beispiel wird der in Schritt 105 durchgeführte abgeschlossene SECDED-ECC-Vorgang an einem DWAB-Segment 36 durchgeführt, das Schreibadressbits 35 aufweist, die gesamte Burst-Schreibadresse 33 einschließen. Wenn ein einfacheres SECDED-ECC-Schema verwendet wird, ist die maximale Größe des FEC-Blocks in einigen Fällen zu klein, um die Gesamtheit der Burst-Schreibadresse 33 einzuschließen, die zum Beispiel eine 40-bit-Adresse sein kann. In diesem Fall schließt eine beispielhafte Implementierung einen Abschnitt, z. B. eine Teilmenge der Bits der Burst-Schreibadresse 33s oder eine Hash-Tabellenversion der Burst-Schreibadresse 33 anstelle der vollständigen Burst-Schreibadresse 33 ein. Bei diesem Beispiel wird der in Schritt 105 durchgeführte SECDED-ECC an einem DWAB-Segment 36 durchgeführt, das Schreibadressbits 35 aufweist, die einen Hash der in Schritt 101 empfangenen Burst-Schreibadresse 33 einschließen, wobei der Hash eine Anzahl von Bits aufweist, die kleiner als die Anzahl von Bits in der gesamten Burst-Schreibadresse 33 ist.
  • 6 zeigt ein Beispiel, bei dem der Datenblock 34 64 Datenbits einschließt und die Schreibadressbits 35 6 Adressbits (z. B. 6 der Bits in der Burst-Schreibadresse 33 oder einen Hash der Burst-Schreibadresse 33) einschließen und wobei jeder in Schritt 105 durchgeführte SECDED-ECC-Vorgang ein DWAB-PB bildet, das 8 Paritätsbits aufweist.
  • 7 zeigt ein Beispiel, bei dem das DWAB-Segment 36 ein Verfälschungsangabebit 30, einen Datenblock 34, der 64 Datenbits und Schreibadressbits 35 aufweist, die 5 Bits aufweisen (z. B. 5 der Bits in der Burst-Schreibadresse 33 oder einen Hash der Burst-Schreibadresse 33) einschließt und bei dem jeder in Schritt 105 durchgeführte SECDED-ECC-Vorgang ein DWAB-PB 37 bildet, das 8 Paritätsbits aufweist.
  • Die in Schritt 105 erzeugten Sätze von Paritätsbits, d. h. das DWAB-PB, werden mit den entsprechenden Datenblöcken verkettet (106), um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke) 38 zu erzeugen. 8 zeigt ein Beispiel eines FEC-Blocks 38, der durch die Verkettung von Schritt 106 gebildet wurde. Der FEC-Block 38 schließt nicht die Burst-Schreibadresse oder den Hash der Burst-Schreibadresse (106) ein. Wenn das DWAB-PB 37 durch Durchführen eines SECDED-ECC an einem DWAB-Segment 36 gebildet wird, das das Verfälschungsangabebit 30 einschließt, wie in 5B gezeigt, schließen die entsprechenden FEC-Blöcke 38 kein Verfälschungsangabebit 30 ein (106). In 3 verkettet der Codierer 11 jeweilige DWAB-PB 37 mit dem entsprechenden Datenblock 34, wobei der Datenblock 34 aus dem DWAB-Segment 36 erhalten wird, um entsprechende FEC-Blöcke 38 zu erzeugen. In 8 wurden die DWAB-PB 37 mit dem Ende des Datenblocks 34 verkettet. Es versteht sich jedoch, dass der FEC-Block 38 alternativ DWAB-PB 37 einschließen könnte, der mit dem Anfang des Datenblocks 34 verkettet sind, oder alternativ innerhalb des FEC-Blocks 38 verteilt ist, sodass die Paritätsbits von DWAB-PB 37 zwischen verschiedenen Bits des Datenblocks 34 verteilt sind.
  • Ein Burst-Schreibbefehl und ein jeweiliger Abschnitt eines jeweiligen der FEC-Blöcke 38 der Vielzahl von FEC-Blöcken 38 werden während jeweiliger einer Vielzahl von Taktimpulsen an jeweilige einer Vielzahl von Speichervorrichtungen gesendet (107), bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden. Bei dem in 8 bis 9 gezeigten Beispiel werden ein Burst-Schreibbefehl und ein jeweiliger Abschnitt eines jeweiligen FEC-Blocks 38 an die zu schreibenden Datenträger gesendet, als Datenträger 41 veranschaulicht, die die Speichervorrichtungen 2, die Speichervorrichtungen 2a oder beide Speichervorrichtungen 2 und 2a einschließen können.
  • 9 zeigt ein Beispiel eines auf den Datenträgern 41 gespeicherten Burst-Schreibvorgangs, der n FEC-Blöcke 38a bis 38n einschließt, die auf den Speichervorrichtungen 2 oder 2a gespeichert sind. Bei einem Beispiel beträgt n 16, sodass bei einem einzigen Burst-Schreibvorgang 16 FEC-Blöcke 38 gespeichert werden. Bei einem weiteren Beispiel beträgt n 8, sodass bei dem einzelnen Burst-Schreibvorgang 8 FEC-Blöcke 38 gespeichert werden. Anzumerken ist, dass keiner der FEC-Blöcke 38a bis 38n in dem Burst-Schreibvorgang das eine oder die mehreren Bits der Burst-Schreibadresse 33, das eine oder die mehreren Bits eines Hash der Burst-Schreibadresse 33 oder das Verfälschungsangabebit 30 einschließt.
  • Bei einem Beispiel ist die Burst-Schreibanweisung 31 eine DDR-Burst-Schreibanweisung, und die Anzahl der Datenblöcke, die Anzahl der FEC-Blöcke und die Anzahl der Vielzahl von Taktimpulsen sind gleich acht. Bei einem weiteren Beispiel sind die Anzahl der Datenblöcke, die Anzahl der FEC-Blöcke und die Anzahl der Vielzahl von Taktimpulsen gleich sechzehn. Bei dem Beispiel von 3 sendet der Codierer 11 die FEC-Blöcke 38 zu der Schreibsteuereinheit 10, wie durch den Pfeil 40b gezeigt. Als Reaktion auf das Empfangen von FEC-Blöcken 38 sendet die Schreibsteuereinheit 10 einen Burst-Schreibbefehl und einen jeweiligen Abschnitt eines der FEC-Blöcke (veranschaulicht als Block 39) an jeweilige der Vielzahl von Speichervorrichtungen 2 oder 2a, wie durch den Pfeil 40c veranschaulicht, bis alle der Vielzahl von FEC-Blöcken in dem Burst-Schreibvorgang an die Datenträger 41 gesendet wurden.
  • Bei den in 10A gezeigten Beispielen wird bei jedem Taktimpuls ein FEC-Block gebildet. Bei diesem Beispiel weist der DDR-Burst 22 16 Taktimpulse auf, die mit ,0' bis 15' nummeriert sind. Bei jedem Taktimpuls werden vier (4) Datenbits in jedem von acht (8) Chips (z. B. DDR-5-Speichervorrichtungen) gespeichert, die mit ,0' bis ,7' nummeriert sind, und Paritätsbits werden in einem neunten Chip 23, das mit ,8' nummeriert ist, und in einem zehnten Chip 24 gespeichert, das mit ,9' nummeriert ist. Bei einem Beispiel werden 8 Paritätsbits bei jedem Taktimpuls gespeichert (z. B. werden bei jedem Taktimpuls 4 Paritätsbits in dem Chip 23 gespeichert, und 4 Paritätsbits werden in dem Chip 24 gespeichert).
  • 10B zeigt ein Beispiel, bei dem zwei Taktimpulse verwendet werden, um jeden FEC-Block 38 zu bilden, und bei dem die Parität in einem einzigen Chip gespeichert ist. Bei diesem Beispiel speichert der Burst 22 Daten und ECC in neun Chips (z. B. 9 DDR-5-Speichervorrichtungen), wobei Daten in acht Chips gespeichert werden und Paritätsbits in dem neunten Chip 23 gespeichert werden. Bei einem Beispiel schließt jedes DWAB-Segment 8 Paritätsbits (z. B. 4 Paritätsbits, die bei jedem Taktimpuls gespeichert werden) ein.
  • Bei dem in 10C gezeigten Beispiel wird ein gesamter FEC-Block 38 bei jedem Taktimpuls unter Verwendung eines DDR-Bursts 22, der 8 Taktimpulse aufweist, die mit ,0` bis ,7` nummeriert sind, zum Speichern von Daten und Paritätsbits des DWAB-PB 37 auf achtzehn Chips gespeichert. Bei diesem Beispiel werden vier (4) Datenbits in jedem von sechzehn (16) Chips (z. B. DDR-4-Speichervorrichtungen), die mit ,0` bis , 15' nummeriert sind, mit Paritätsbits des DWAB-PB 37 gespeichert, die in einem siebzehnten Chip (Chip 16) 25 und achtzehnten Chip (Chip 17) 26 gespeichert werden. Bei einem Beispiel schließt jedes DWAB-Segment 8 Paritätsbits ein (z. B. werden bei jeden Taktimpuls 4 Paritätsbits in dem Chip 25 gespeichert, und 4 Paritätsbits werden in dem Chip 26 gespeichert).
  • Bei dem in 10D gezeigten Beispiel wird ein gesamter FEC-Block 38 bei jedem Taktimpuls unter Verwendung eines DDR-Bursts 22, der 8 Taktimpulse aufweist, die mit ,0` bis ,7` nummeriert sind, zum Speichern von Daten und Paritätsbits des DWAB-PB 37 auf neun Chips gespeichert. Bei diesem Beispiel werden bei jedem Taktimpuls acht-Datenbits in jedem von acht Chips (z. B. DDR-4-Speichervorrichtungen) gespeichert, die mit ,0' bis ,7' nummeriert sind, wobei Paritätsbits in einem n-ten Chip (Chip 8) 23 gespeichert werden. Bei einem Beispiel schließt jedes DWAB-Segment 8 Paritätsbits ein (z. B. werden bei jedem Taktimpuls 8 Paritätsbits in dem Chip 23 gespeichert).
  • Bei den Beispielen, die in 10A bis 10D gezeigt sind, sind Daten und Parität zusammenhängend, wobei Paritätsbits auf bestimmten Chips gespeichert sind Daten auf anderen Chips gespeichert sind. Alternativ könnten die Paritätsbits jedoch mit Datenbits verschachtelt und nicht auf bestimmten Chips gespeichert werden. Obwohl die vorstehenden Beispiele 8 Paritätsbits verwenden, versteht es sich, dass alternativ mehr oder weniger Paritätsbits verwendet werden könnten.
  • Wenn Lesevorgänge des einen oder der mehreren FEC-Blöcke als Reaktion auf eine Burst-Leseanweisung durchgeführt werden, die eine Burst-Leseadresse einschließt, werden optional Leseadressfehler unter Verwendung der Burst-Leseadresse und des DWAB-PB in dem einen oder den mehreren FEC-Blöcken erkannt (108). Wenn ein Leseadressfehler erkannt wird, wird eine Korrekturmaßnahme vorgenommen. Optional werden, wenn die DWAB-Segmente eine Verfälschungsbitangabe einschließen, durch Verfälschungsbits angegebene Fehler unter Verwendung der Burst-Leseadresse und des DWAB-PB in dem einen oder den mehreren FEC-Blöcken erkannt, und wenn ein durch ein Verfälschungsbit angegebener Fehler erkannt wird, wird Korrekturmaßnahme vorgenommen. Bei einem Beispiel wird Schritt 108 von 1 unter Verwendung einiger oder aller Schritte des in 11 gezeigten Verfahrens 200 durchgeführt.
  • 11 veranschaulicht ein Verfahren 200 zum Speicherschutz. Das Verfahren 200 kann unabhängig von dem Verfahren 100 durchgeführt werden. Alternativ werden einige oder alle Schritte des Verfahrens 100 und des Verfahrens 200 durchgeführt. Bei einem Beispiel führt die Speichersteuereinheit 5 von 1 alle der Schritte des Verfahrens 200 durch.
  • Ein Burst-Lesevorgang wird als Reaktion auf das Empfangen einer Burst-Leseanweisung durchgeführt (201), die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an eine Vielzahl von Speichervorrichtungen gesendet wird und als Reaktion auf eine Vielzahl von Lese-FEC-Blöcken empfangen wird. Bei dem in 1 gezeigten Beispiel führt die Lesesteuereinheit 12 den Burst-Lesevorgang als Reaktion auf das Empfangen einer Burst-Leseanweisung durch, die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an eine Vielzahl von Speichervorrichtungen 2 oder 2a gesendet wird, und die Lesesteuereinheit 12 empfängt als Reaktion auf eine Vielzahl von Lese-FEC-Blöcken. Bei dem in 12 gezeigten Beispiel wird an der Schnittstelle 18 eine Burst-Leseanweisung 61 empfangen, die eine Burst-Leseadresse 63 einschließt. Die Burst-Leseanweisung 61 ist über die Schnittstelle 18 mit der Lesesteuereinheit 12 verbunden, wie durch den Pfeil 57 gezeigt. Nach dem Empfangen der Burst-Lese-Leseanweisung an der Lesesteuereinheit 12 sendet die Lesesteuereinheit 12 einen Burst-Lesebefehl 66 an die zu lesenden Datenträger 41, wie durch den Pfeil 57a veranschaulicht. Als Reaktion empfängt die Lesesteuereinheit 12 eine Vielzahl von Lese-FEC-Blöcken 67, wie durch den Pfeil 57b veranschaulicht. Bei einem Beispiel sind die Datenträger 41 Speichervorrichtungen 2 oder 2a, die Burst-Leseanweisung 61 ist eine DDR-Burst-Leseanweisung, die an der Lesesteuereinheit 12 empfangen wird, und der Burst-Lesebefehl 66 ist ein DDR-Burst-Lesebefehl, der von der Lesesteuereinheit 12 an jede der Speichervorrichtungen 2 oder 2a gesendet wird.
  • Entsprechende Lese-FEC-Blöcke aus dem Burst-Lesevorgang von Schritt 201 schließen Leseparitätsbits ein, die Datenbits, ein oder mehrere Bits einer Burst-Schreibadresse oder einen Hash der Burst-Schreibadresse (die Schreibadressbits) und optional ein Verfälschungsangabebit widerspiegeln. Bei einem Beispiel sind die Lese-FEC-Blöcke die in dem Verfahren 100 gespeicherten FEC-Blöcke, sodass Adressbits 35 und optional Verfälschungsangabebit 30 in den Leseparitätsbits 37a jedes Lese-FEC-Blocks widergespiegelt werden. Die Lese-FEC-Blöcke werden segmentiert (202), um eine Vielzahl von Datenabschnitten und eine Vielzahl von entsprechenden Sätzen von Leseparitätsbits für die jeweiligen Datenabschnitte zu erhalten. In 12 sendet die Lesesteuereinheit 12 die Lese-FEC-Blöcke 67 und die Burst-Leseadresse 63 (oder einen Hash der Burst-Leseadresse 63) an den Decodierer 13, wie durch den Pfeil 57c veranschaulicht. Der Decodierer 13 segmentiert die Lese-FEC-Blöcke, um Datenabschnitte 64 zu erhalten, die die gleiche Größe wie die bei der Segmentierung von Schritt 102 aufweisen. Sofern in dem Decodierungsprozess kein unkorrigierter Fehler vorliegt, erzeugt der Decodierer Datenabschnitte 64, die dieselben sind wie die, die den Datenblöcke 34 entsprechen, die in Schritt 107 gespeichert werden, und entsprechende Leseparitätsbits 37a, die dieselben sind wie die entsprechenden DWAB-PB 37, die in Schritt 107 gespeichert werden. Bei dem vorliegenden Beispiel ist den Leseparitätsbits die Nummer 37a vergeben, die sich von der Nummer unterscheidet, die den in dem Verfahren 100 gespeicherten Paritätsbits 37 vergeben ist, um die Tatsache widerzuspiegeln, dass ein Fehler auftreten könnte, der bewirkt, dass die aus dem Lesevorgang erhaltenen Paritätsbits sich von den ursprünglich gespeicherten Paritätsbits 37 unterscheiden. Bei einer beispielhaften Implementierung sind die Anzahl der Datenabschnitte 64, die Anzahl der Lese-FEC-Blöcke 67 und die Anzahl der Taktimpulse in dem Lesevorgang von Schritt 201 jeweils gleich 8. Bei einer weiteren beispielhaften Implementierung ist die Anzahl der Datenabschnitte 64, die Anzahl der Lese-FEC-Blöcke 67 und die Anzahl der Taktimpulse bei dem Lesevorgang von Schritt 201 jeweils gleich 16.
  • Ein oder mehrere Bits der Burst-Leseadresse oder ein Hash der Burst-Leseadresse werden mit jeweiligen Datenabschnitten der Vielzahl von Datenabschnitten verkettet (203), um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten) zu erhalten. In 12 berechnet die Decodierlogik 55 einen Hash der Burst-Leseadresse 63, wenn ein Hash erforderlich ist. Die Decodierlogik 55 verkettet ein oder mehrere Bits der Burst-Leseadresse 63 oder einen Hash der Burst-Leseadresse mit einem jeweiligen Datenabschnitt 64, um ein entsprechendes DRAB-Segment 68 zu bilden. Das eine oder die mehreren Bits der Leseadresse oder der Hash der Leseadresse, die in Schritt 203 verkettet werden, können als „Leseadressbits“ bezeichnet werden und sind als Leseadressbits 65 veranschaulicht. Bei einem Beispiel erzeugt jeder Burst-Lesevorgang 16 DRAB-Segmente 68, die zusammen mit den entsprechenden Leseparitätsbits 37a mit der Decodier-Engine 56 verbunden werden, wie durch den Pfeil 57d gezeigt. 13A zeigt ein Beispiel, bei dem die Verkettung von Schritt 203 ein DRAB-Segment 68 erzeugt, das den Datenabschnitt 64 und die Leseadressbits 65 einschließt.
  • Wenn das DWAB-PB 37 der FEC-Blöcke ein Verfälschungsangabebit widerspiegelt, werden optional in Schritt 203 das eine oder die mehreren Bits der Burst-Leseadresse oder ein Hash der Burst-Leseadresse und ein nicht verfälschtes Bit (ein Bit, das den Nichtverfäschungsbitwert aufweist) mit jeweiligen Datenabschnitten der Vielzahl von Datenabschnitten verkettet. Bei dem in 12 gezeigten Beispiel erzeugt die Decodierlogik 55 ein Nicht-verfälscht-Bit 60 (das z. B. auf den ersten Wert gesetzt wird, z. B. „0“) und führt die Verkettung durch. 13B zeigt ein Beispiel, bei dem die Verkettung von Schritt 204 ein DRAB-Segment 68 erzeugt, das den Datenabschnitt 64, die Leseadressbits 65 und das Nicht-verfälscht-Bit 60 einschließt. Die Positionierung des Nicht-verfälscht-Bits 60 ist bei einem Beispiel die gleiche wie die vorstehend in Schritt 104 ausgewählte Positionierung.
  • Die Verkettung der Schritte 203 entspricht der Verkettung der Schritte 103 oder 104, sodass die Größe des Datenabschnitts 64 derselbe wie des entsprechenden Datenblocks 34 ist (außerdem sollten sie dieselben Daten einschließen, wenn keine Fehler vorliegen). Des Weiteren weist DWAB-Segment 36 die gleiche Anzahl von Bits wie das DRAB-Segment 68 und optional eine Verfälschungsbitangabe 30 auf und sollte in derselben Reihenfolge wie der des Verfahrens 100 verkettet sein. Wenn zum Beispiel die Schreibadressbits 35 mit dem Ende jedes Datenblocks 34 in Schritt 103 verkettet werden, werden sie in Schritt 203 mit dem Ende jedes Datenabschnitts 64 verkettet; wenn Schreibadressbits 35 in Schritt 103 mit dem Anfang jedes Datenblocks 34 verkettet werden, werden sie ohne Einschränkung in Schritt 203 mit dem Anfang jedes Datenabschnitts 64 verkettet.
  • Entsprechende der Vielzahl von DRAB-Segmenten werden unter Verwendung der entsprechenden Leseparitätsbits 37a und unter Verwendung eines SECDED-Decodiervorgangs decodiert (204), um für jeweilige DRAB-Segmente den entsprechenden Datenblock, und wenn eine Einzelfehlerkorrektur (SEC) aufgetreten ist, die Bitposition des korrigierten Bits zu erkennen. Bei dem Beispiel der 12 sendet die Decodierlogik 55 DRAB-Segmente 68 und Paritätsbits 37a zu der Decodier-Engine 56, wie durch den Pfeil 57d gezeigt, und die Decodier-Engine 56 führt das Decodieren von Schritt 204 durch. Jedes Decodieren von Schritt 204 erzeugt ein decodiertes DRAB-Segment 59, das einen entsprechenden Datenblock einschließt, und erzeugt eine Decodierstatusangabe 62, die entweder ein fehlerfreies Decodieren, eine Doppelfehlererkennung (DED) oder eine SEC und eine Angabe der Bitposition des korrigierten Bits angibt. Das Decodieren von Schritt 204 wird unter Verwendung von DRAB-Segmenten 68 mit der gleichen Anzahl von Datenbits durchgeführt, um decodierte DRAB-Segmente 59 zu erzeugen, die Datenblöcke 34, die die gleiche Anzahl von Bits wie entsprechende Datenblöcke 34 aufweisen, die in Schritt 107 gespeichert wurden, von Leseadressbits 65, die die gleiche Anzahl von Bits wie entsprechende Schreibadressbits 35 aufweisen; und optional das Nicht-verfälscht-Bit 60 einschließen, das die gleiche Anzahl von Bits wie das Verfälschungsangabebit 30 aufweist. Wenn zum Beispiel der Codiervorgang von Schritt 105 ein SECDED-Codiervorgang an 48 Bits ist, ist das Decodieren von Schritt 205 ein SECDED-Decodiervorgang an 48 Bits.
  • Bei dem in 12 gezeigten Beispiel sind jedes decodierte DRAB-Segment 59 (das den Datenblock 34 einschließt) und die entsprechende Decodierstatusangabe 62 mit der Decodierlogik 55 verbunden, wie durch den Pfeil 57e gezeigt. Die Decodierstatusangabe kann in Form einer Nachricht gesendet oder in einem gemeinsamen Speicherbereich gespeichert werden, in dem sie sowohl durch die Decodier-Engine 56 als auch durch die Decodierlogik 55 zugänglich ist.
  • Die Decodierlogik 55 segmentiert die decodierten DRAB-Segments 59, um den Datenblock 34a und die Leseadressbits 65 zu erhalten, und verkettet den Datenblock 34a und die Leseadressbits 65, um ein Datenwort 69 zu bilden, das mit der Lesesteuereinheit 12 verbunden ist. Bei dem vorliegenden Beispiel ist dem Datenblock die Nummer 34a vergeben, die sich von der Nummer 34 unterscheidet, die dem in dem Verfahren 100 gespeicherten Datenblock 34 vergeben ist, um die Tatsache widerzuspiegeln, dass ein Fehler auftreten könnte, der bewirkt, dass der aus der Segmentierung erhaltene Datenblock sich von dem ursprünglich gespeicherten Datenblock 34 unterscheidet. Wenn die FEC-Blöcke ein Verfälschungsangabebit widerspiegeln, schließt das decodierte DRAB-Segment 59 ein Nicht-verfälscht-Bit 60 ein, das durch die Segmentierung und Verkettung entfernt wird, um ein Datenwort 69 zu erzeugen, das nicht ein Nicht-verfälscht-Bit 60 einschließt.
  • Unter erneuter Bezugnahme auf 11, wird, wenn das Decodieren eines DRAB-Segments eine SEC (205) ist und eine SEC in der Bitposition angibt, die dem Verfälschungsangabebit (210) entspricht, festgestellt, dass das decodierte DRAB-Segment verfälscht ist (211), und ein Verfälschungsbitsymbol wird an dem Decodierer erzeugt. Bei einem Beispiel ermittelt die Decodierlogik 55, wann eine SEC an der Bitposition aufgetreten ist, die dem Verfälschungsangabebit entspricht, sodass das decodierte DRAB-Segment verfälscht ist, und erzeugt das Verfälschungsbitsymbol an dem Decodierer. Bei einem Beispiel ist das Verfälschungsbitsymbol in dem durch den Decodierer 13 ausgegebenen Datenwort 69 anstelle einiger oder aller Leseadressbits eingeschlossen, um anzugeben, dass das betreffende decodierte DRAB-Segment 68 verfälscht ist. Bei dem in 7 gezeigten Beispiel, weist, wenn Verfälschungsangabebit 30 als Verfälschungsbit (auf einen Wert von 1 gesetzt) vor dem Codiervorgang von Schritt 105 markiert ist, der Decodiervorgang von Schritt 205 einen Einzelbitfehler an der Bitposition auf, die dem Verfälschungsbit 30 entspricht (da das Bit bei dem Codiervorgang auf 1 und bei dem Decodiervorgang auf 0 gesetzt wurde).
  • Die Anzahl der verfälschten DRAB-Segmente bei dem Burst-Lesevorgang (NPDS) wird mit einem Fehlerschwellenwert (error threshold, ET) verglichen (212). Bei einem Beispiel ist ET auf vier gesetzt. Bei dem in 12 gezeigten Beispiel zählt die Decodierlogik 55 die Anzahl von Decodierungen in dem Burst-Lesevorgang, die eine SEC an der Bitposition erzeugen, die dem Verfälschungsangabebit entspricht, um NPDS zu ermitteln. Bei einem Beispiel schließt die Decodierlogik 55 einen Zähler ein, der vor dem Decodieren von Schritt 204 null ist und der jedes Mal inkrementiert wird, wenn ein Decodiervorgang für einen bestimmten Burst-Lesevorgang eine SEC an der Bitposition erzeugt, die dem Verfälschungsangabebit entspricht. Die Decodierlogik 55 führt dann den Vergleich von Schritt 212 bis 213 durch.
  • Wenn ein NPDS in Block 213 ET nicht überschreitet, wird der Datenblock in dem DRAB-Segment an die Lesesteuereinheit 12 gesendet (219). Bei dem in 12 gezeigten Beispiel segmentiert die Decodierlogik 55 das decodierte DRAB-Segment 59, um den Datenblock 34a und die Leseadressbits 65 zu erhalten. Die Decodierlogik 55 verkettet den Datenblock 34a und die Leseadressbits 65, um ein Datenwort 69 zu bilden, das an die Lesesteuereinheit 12 gesendet wird. Wenn NPDS ET (213 bis 214) überschreitet, wird festgestellt, dass der Burst-Lesevorgang als verfälscht (214) markiert wurde.
  • Wenn festgestellt wurde, dass der Burst-Lesevorgang in Schritt 214 als verfälscht markiert wurde, wird festgestellt, dass ein Verfälschungsmarkierungangegeben-Fehler aufgetreten ist, und es wird eine Ausgabe erzeugt, die angibt, dass ein Fehler aufgetreten ist (z. B. eine Angabe, dass ein nicht korrigierbarer Fehler aufgetreten ist), und die Datenblöcke aus dem Burst-Lesevorgang werden nicht ausgegeben (215). Bei einem Beispiel ist die bei 215 erzeugte Ausgabe eine Fehlermeldung, die von der Speichersteuereinheit 5 an die Entität gesendet wird, die die Burst-Leseanweisung 61 (z. B. eine Fehlermeldung angibt, die einen nicht korrigierbaren Fehler in dem Burst-Lesevorgang aufgetreten ist) gesendet hat, und die decodierten Blöcke aus dem Burst-Lesevorgang werden nicht an die Entität gesendet, die die Burst-Leseanweisung 61 gesendet hat (z. B. werden sie durch die Lesesteuereinheit 12 verworfen).
  • Wenn ein Decodieren eines DRAB-Segments eine SEC (205) ist und eine SEC an der Bitposition angibt, die den Leseadressbits (216) entspricht, wird festgestellt, dass ein Leseadressfehleraufgetreten ist (217). Bei einem Beispiel ermittelt die Decodierlogik 55, wann eine SEC an der Bitposition aufgetreten ist, die den Leseadressbits 65 entspricht, und erzeugt an dem Decodierer ein Leseadressfehlersymbol. Bei einem Beispiel ist das Leseadressfehlersymbol in dem Datenwort 69 eingeschlossen, das durch den Decodierer 13 anstelle einiger oder aller der Leseadressbits ausgegeben wird, um der Lesesteuereinheit 12 anzugeben, dass ein Leseadressfehler aufgetreten ist. Wenn festgestellt wird, dass ein Leseadressfehler aufgetreten ist, setzt die Decodierlogik 55 außerdem einen einer Vielzahl von Merkern (flags) (z. B. einen Leseadressfehlermerker), um anzugeben, dass der Leseadressfehler aufgetreten ist. In 12 ist der eine der Merker 70 gesetzt, bei dem es sich um den Leseadressfehlermerker handelt.
  • Nunmehr unter Bezugnahme auf Schritt 218 schließt das Verfahren, wenn festgestellt wird, dass ein Leseadressfehler aufgetreten ist, das Erzeugen der Ausgabe ein, die angibt, dass ein Adressfehler aufgetreten ist, das Anfordern einer erneuten Übertragung der Burst-Leseanweisung oder das Erzeugen einer Angabe ein, die angibt, dass ein Adressfehler aufgetreten ist, und das Anfordern einer erneuten Übertragung der Burst-Leseanweisung ein. Bei dem Beispiel von 12 erzeugt die Lesesteuereinheit 12 nach dem Empfangen des Datenworts 69 und/oder als Reaktion auf das Setzen des Leseadressfehlermerkers entweder eine Fehlermeldung, die über die Schnittstelle 18 verbunden ist und an die externe Partei ausgegeben wird, die die Burst-Leseanweisung 61 gesendet hat; erzeugt eine Nachricht, die eine erneute Übertragung der Burst-Leseanweisung anfordert, die über die Schnittstelle 18 mit der externen Partei verbunden ist, die die Burst-Leseanweisung 61 gesendet hat; oder erzeugt sowohl die Fehlermeldung, die an die externe Partei ausgegeben wird, die die Burst-Leseanweisung 61 gesendet hat, und erzeugt die Nachricht, die eine erneute Übertragung der Burst-Leseanweisung anfordert, die an die externe Partei ausgegeben wird, die die Burstleseanweisung 61 gesendet hat. Wenn in Schritt 217 festgestellt wird, dass ein Leseadressfehler aufgetreten ist, werden optional die Datenblöcke 34a in dem Burst-Lesevorgang nicht ausgegeben. Bei einem Beispiel werden sie verworfen, und nur die Nachricht(en) von Schritt 218 werden ausgegeben.
  • Wenn ein Decodieren eines DRAB-Segments eine SEC ist, die keine SEC an der Bitposition angibt, die dem Verfälschungsangabebit oder in der Bitposition entspricht, die den Leseadressbits entspricht, wird der Datenblock in dem DRAB-Segment an die Lesesteuereinheit 12 gesendet (219). Bei dem in 12 gezeigten Beispiel segmentiert die Decodierlogik 55 das decodierte DRAB-Segment 59, um den Datenblock 34a und die Leseadressbits 65 zu erhalten. Die Decodierlogik 55 verkettet den Datenblock 34a und die Leseadressbits 65, um ein Datenwort 69 zu bilden, das an die Lesesteuereinheit 12 gesendet wird.
  • Wenn ein Decodieren eines DRAB-Segments eine DED (206) ist, ist ein nicht korrigierbarer Fehler aufgetreten, und es wird eine Ausgabe erzeugt (209), die angibt, dass ein Fehler aufgetreten ist, und die Datenblöcke des Burst-Lesevorgangs werden nicht ausgegeben. Bei dem in 12 gezeigten Beispiel ermittelt die Decodierlogik 55 als Reaktion auf das Empfangen der Decodierstatusangabe 62, wann die Decodierstatusangabe eine DED angibt, und setzt als Reaktion einen von vier Merkern, wie durch den Block 70 von 12 gezeigt (setzt z. B. den Decodierfehlermerker). Als Reaktion das Setzen des Decodierfehlermerkers erzeugt die Lesesteuereinheit 12 eine Ausgabe, die angibt, dass ein Fehler aufgetreten ist, und gibt die Datenblöcke 34a des Burst-Lesevorgangs nicht aus. Bei einem Beispiel ist die bei 209 erzeugte Ausgabe eine Fehlermeldung, die von der Speichersteuereinheit 5 an die Entität gesendet wird, die eine Burst-Leseanweisung 61 gesendet hat (z. B. eine Fehlermeldung, die einen nicht korrigierbaren Fehler in dem Burst-Lesevorgang angibt).
  • Die Verarbeitung jeweiliger DRAB-Segmente 68 wird fortgesetzt (bei 220, 204 und 219, 204), bis eine DED auftritt (206) oder bis alle DRAB-Segmente in dem Burst-Lesevorgang decodiert wurden (207 bis 208). Wenn keine DED 206, keine SEC 205 vorliegen und alle DRAB-Segmente in dem Burst-Lesevorgang nicht decodiert wurden 207, wird der Datenblock (220) an die Lesesteuereinheit 12 gesendet (z. B. in einem Datenwort 69, das die Leseadressbits und den Datenblock einschließt).
  • Wenn keine SEC 205 und keine DED bei dem Decodieren des Burst-Lesevorgangs (206) vorhanden sind und der Burst-Lesevorgang nicht als verfälscht (214) markiert wurde, werden Datenblöcke 64 des Burst-Lesevorgangs (208) als Ergebnis des Lesevorgangs aus der Speichersteuereinheit 5 an die Entität ausgegeben, die die Burst-Leseanweisung 61 gesendet hat.
  • Die Verfahren und die Vorrichtungen der vorliegenden Erfindung ermöglichen den Schutz von Lesevorgängen vor Adressfehlern durch wirksames Erkennen von Adressfehlern beim Auftreten und ermöglichen eine Verfälschungsbitmarkierung Adressfehlern derart, dass die Anzahl der verfügbaren Bits zum Speichern von ECC-Paritätsbits nicht reduziert wird. Insbesondere werden fehlerhafte Schreib- oder -Lesevorgänge von Adressen erkannt (z. B. durch den Decodierer), und es werden Korrekturmaßnahmen ergriffen, um zu verhindern, dass die zugehörigen fehlerhaften Daten möglicherweise den Betrieb des Systems beeinträchtigen können.
  • Obwohl die vorstehenden Beispiele 8 Paritätsbits verwenden, versteht es sich, dass alternativ mehr oder weniger Paritätsbits verwendet werden könnten.
  • Der Klarheit und Kürze halber sowie zur Vermeidung unnötiger oder unnützlicher, verwirrender, verschleiernder, blockierender oder verdeckender Merkmale oder Elemente eines Beispiels der Offenbarung wurden bestimmte Feinheiten und Details, die Fachleuten in verwandten Technologien allgemein bekannt sind, weggelassen oder in weniger als erschöpfendem Detail erörtert. Alle solchen Auslassungen oder Erörterungen gelten als unnötig zum Beschreiben von Beispielen der Offenbarung und/oder als nicht besonders relevant für das Verständnis signifikanter Merkmale, Funktionen und Gesichtspunkte der hierin beschriebenen Beispiele der Offenbarung.
  • Der Begriff „oder“ wird hierin in einem einschließenden und nicht ausschließenden Sinne verwendet (sofern in einem bestimmten Fall nicht ausdrücklich das Gegenteil angegeben ist), und die Verwendung des Begriffs „und/oder“ hierin schließt eine beliebige und alle Kombinationen von einem oder mehreren der zugehörigen aufgelisteten Elemente ein, die damit verbunden/davon getrennt sind. Innerhalb der vorliegenden Beschreibung werden der Begriff „einschließen“ und seine Pluralform „einschließt“ (und/oder, in einigen Kontexten, der Begriff „aufweisen“ und sein Konjugat „aufweist“) jeweils in demselben Sinne verwendet, wie die Begriffe „umfassen“ und „umfasst“ in den nachstehend dargelegten Ansprüchen, Änderungen daran, die potenziell darstellbar sind, und ihren Äquivalenten und Alternativen verwendet werden, und/oder sind somit als im Wesentlichen synonym dazu zu verstehen.
  • Die Figuren sind schematische, graphische, symbolische und/oder flussbezogene Darstellungen und sind daher nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich auf das Gegenteil hingewiesen wird. Sofern in Bezug auf eine bestimmte Verwendung nicht ausdrücklich auf das Gegenteil hingewiesen wird, sind bestimmte Begriffe, die hierin verwendet werden, als in einem generischen und/oder beschreibenden Sinne und nicht für irgendeinen Zweck der Einschränkung zu verstehen.
  • In der Patentschrift und den Figuren hierin werden Beispiele von Implementierungen somit in Bezug auf die nachstehend dargelegten Ansprüche beschrieben. Die vorliegende Offenbarung ist jedoch nicht auf solche Beispiele beschränkt, und die Patentschrift und die Figuren hierin sollen somit Durchschnittsfachleute in Technologien, die sich auf integrierte Schaltungen beziehen, in Bezug auf das Verständnis, das Begreifen und den Vorschlag von Alternativen und Äquivalenten dazu aufklären.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/195618 [0001]

Claims (20)

  1. Verfahren zum Speicherschutz, wobei das Verfahren umfasst: Empfangen einer Burst-Schreibanweisung, wobei die Burst-Schreibanweisung Daten und eine Burst-Schreibadresse einschließt; Segmentieren der Daten in eine Vielzahl von Datenblöcken; Verketten eines oder mehrerer Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken, um eine Vielzahl von Daten- und Schreibadressbitsegmenten (DWAB) zu erhalten; Ausführen eines Einzelfehlerkorrektur-Doppelfehlererkennungs-Fehlerkorrekturcodes (SECDED-Fehlerkorrekturcodes) an jeweiligen DWAB-Segmenten der Vielzahl von DWAB-Segmenten, um eine entsprechende Vielzahl von Sätzen von Paritätsbits (DWAB-PB) zu erzeugen; Verketten eines jeweiligen DWAB-PB der Vielzahl von DWAB-PB mit dem entsprechenden Datenblock, um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke) zu erzeugen, wobei die FEC-Blöcke nicht die Burst-Schreibadresse oder den Hash der Burst-Schreibadresse einschließen; und Senden eines Burst-Schreibbefehls und eines jeweiligen Abschnitts eines jeweiligen des FEC-Blocks der Vielzahl von FEC-Blöcken an jeweilige Speichervorrichtungen einer Vielzahl von Speichervorrichtungen während einer Vielzahl von Taktimpulsen, bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden.
  2. Verfahren nach Anspruch 1, wobei das Segmentieren der Daten das Segmentieren der Daten in eine Anzahl von Datenblöcken umfasst, die einer Anzahl von Taktimpulsen des Burst-Schreibvorgangs entsprechen.
  3. Verfahren nach Anspruch 1, wobei das Verketten eines oder mehrerer Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse ferner das Verketten jeweiliger Verfälschungsangabebits umfasst, um die DWAB-Segmente zu erhalten.
  4. Verfahren nach Anspruch 1, umfassend: Durchführen eines Burst-Lesevorgangs als Reaktion auf das Empfangen einer Burst-Leseanweisung, die eine Burst-Lese-Adresse einschließt; und Ermitteln unter Verwendung der Burst-Leseadresse und der DWAB-PB in den jeweiligen FEC-Blöcken, wann Leseadressfehler aufgetreten sind.
  5. Verfahren nach Anspruch 4, umfassend: wenn festgestellt wurde, dass ein Leseadressfehler aufgetreten ist, Angeben, dass ein Adressfehler aufgetreten ist, Anfordern einer erneuten Übertragung der Burst-Leseanweisung, oder Angeben, dass ein Adressfehler aufgetreten ist, und Anfordern einer erneuten Übertragung der Burst-Leseanweisung.
  6. Verfahren nach Anspruch 4, wobei das Durchführen des Burst-Lesevorgangs und des Ermitteln, wann Leseadressfehler aufgetreten sind, umfasst: Durchführen des Burst-Lesevorgangs als Reaktion auf das Empfangen der Burst-Leseanweisung und Empfangen, als Reaktion darauf, einer Vielzahl von Lese-FEC-Blöcken; Segmentieren der Lese-FEC-Blöcke, um eine Vielzahl von Lesedatenabschnitten und eine Vielzahl von entsprechenden Leseparitätsbits zu erhalten; Verketten eines oder mehrerer Bits der Burst-Leseadresse oder eines Hash der Burst-Leseadresse mit jeweiligen Lesedatenabschnitten der Vielzahl von Lesedatenabschnitten, um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten) zu erhalten; Decodieren, unter Verwendung eines SECDED-Decodiervorgangs, von jeweiligen der Vielzahl von DRAB-Segmenten unter Verwendung der entsprechenden Leseparitätsbits, um für jeweilige DRAB-Segmente einen Datenblock, und wenn eine Einzelereigniskorrektur (SEC) aufgetreten ist, eine Bitposition eines korrigierten Bits zu erkennen, wobei festgestellt wird, dass ein Leseadressfehler aufgetreten ist, wenn die SEC aufgetreten ist und die Bitposition des korrigierten Bits dem einen oder den mehreren Bits der Burst-Leseadresse oder einem Hash der Burst-Leseadresse entspricht.
  7. Verfahren zum Speicherschutz, umfassend: Durchführen eines Burst-Lesevorgangs als Reaktion auf das Empfangen einer Burst-Leseanweisung ein, die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an eine Vielzahl von Speichervorrichtungen gesendet wird und, als Reaktion darauf eine Vielzahl, von Lese-Vorwärtsfehlerkorrekturblöcken (FEC-Blöcken) empfangen wird; Segmentieren der Lese-FEC-Blöcke, um eine Vielzahl von Lesedatenabschnitten und eine Vielzahl von entsprechenden Sätzen von Leseparitätsbits zu erhalten; Verketten eines oder mehrerer Bits der Burst-Leseadresse oder eines Hash der Burst-Leseadresse mit jeweiligen Lesedatenabschnitten der Vielzahl von Lesedatenabschnitten, um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten) zu erhalten; Decodieren jeweiliger der Vielzahl von DRAB-Segmenten unter Verwendung der entsprechenden Leseparitätsbits und Verwendung eines SECDED-Decodiervorgangs, um für jeweilige DRAB-Segmente einen Lesedatenblock, und wenn eine Einzelereigniskorrektur (SEC) aufgetreten ist, eine Bitposition eines korrigierten Bits zu erkennen; Feststellen, dass ein Leseadressfehler aufgetreten ist, wenn die SEC aufgetreten ist und die Bitposition des korrigierten Bits dem einen oder den mehreren Bits der Burst-Leseadresse oder dem Hash der Burst-Leseadresse entspricht, wenn der Leseadressfehler aufgetreten ist: Angeben, dass ein Adressfehler aufgetreten ist, Anfordern einer erneuten Übertragung der Burst-Leseanweisung, oder Angeben, dass ein Adressfehler aufgetreten ist, und Anfordern einer erneuten Übertragung der Burst-Leseanweisung.
  8. Verfahren nach Anspruch 7, wobei die Leseparitätsbits einen Datenblock und ein oder mehrere Bits einer Burst-Schreibadresse oder einen Hash der Burst-Schreibadresse widerspiegeln.
  9. Verfahren nach Anspruch 7, wobei das Verketten eines oder mehrerer Bits der Burst-Leseadresse oder des Hash der Burst-Leseadresse ferner das Verketten eines Nicht-Verfälschungs-Bits mit den jeweiligen Datenblöcken der Vielzahl von Datenblöcken umfasst, um die Vielzahl von DRAB-Segmenten zu erhalten.
  10. Integrierte Schaltungsvorrichtung (IC-Vorrichtung), umfassend: eine Speichersteuereinheit zum: Empfangen einer Burst-Schreibanweisung, die Daten und eine Burst-Schreibadresse einschließt, Segmentieren der Daten in eine Vielzahl von Datenblöcken, Verketten eines oder mehrerer Bits der Burst-Schreibadresse oder eines Hash der Burst-Schreibadresse mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken, um eine Vielzahl von Daten- und Schreibadressbitsegmenten (DWAB) zu erhalten, Ausführen eines Einzelfehlerkorrektur-Doppelfehlererkennungs-Fehlerkorrekturcodes (SECDED-Fehlerkorrekturcodes) an jeweiligen DWAB-Segmenten der Vielzahl von DWAB-Segmenten, um eine entsprechende Vielzahl von Sätzen von Paritätsbits (DWAB-PB) zu erzeugen, Verketten eines jeweiligen Satzes von Paritätsbits der Vielzahl von Sätzen von Paritätsbits mit dem entsprechenden Datenblock, um entsprechende Vorwärtsfehlerkorrekturblöcke (FEC-Blöcke) zu erzeugen, wobei die FEC-Blöcke nicht das eine oder die mehreren Bits der Burst-Schreibadresse oder den Hash der Burst-Schreibadresse einschließen, Senden eines Burst-Schreibbefehls und eines jeweiligen Abschnitts eines jeweiligen der FEC-Blöcke an einzelne der Vielzahl von Speichervorrichtungen während jedes der Vielzahl von Taktimpulsen, bis alle Taktimpulse des Burst-Schreibvorgangs gesendet wurden.
  11. IC-Vorrichtung nach Anspruch 10, wobei die Speichersteuereinheit eine Schreibsteuereinheit und einen Codierer einschließt, der mit der Schreibsteuereinheit verbunden ist, die Schreibsteuereinheit zum: Empfangen der Burst-Schreibanweisung, Verketten des einen oder der mehreren Bits der Burst-Schreibadresse oder des Hash der Burst-Schreibadresse mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken, um die Vielzahl von DWAB-Segmenten zu erhalten, und den Codierer zum: Ausführen des SECDED-Fehlerkorrekturcodes und Verketten des jeweiligen Satzes von Paritätsbits mit dem entsprechenden Datenblock, um die entsprechenden FEC-Blöcke zu erzeugen.
  12. IC-Vorrichtung nach Anspruch 10, wobei die Vielzahl von Speichervorrichtungen innerhalb der IC-Vorrichtung vorliegen und mit der Speichersteuereinheit verbunden sind.
  13. IC-Vorrichtung nach Anspruch 10, wobei das Verketten eines oder mehrerer Bits der Burst-Schreibadresse oder des Hash der Burst-Schreibadresse ferner das Verketten eines Verfälschungsangabebits mit jeweiligen Datenblöcken der Vielzahl von Datenblöcken umfasst, um die Vielzahl von DWAB-Segmenten zu erhalten, wobei keiner der FEC-Blöcke das Verfälschungsangabebit, das eine oder die mehreren Bits der Burst-Schreibadresse oder den Hash der Burst-Schreibadresse einschließt.
  14. IC-Vorrichtung nach Anspruch 10, wobei das Segmentieren der Daten das Segmentieren der Daten in eine Anzahl von Datenblöcken umfasst, die einer Anzahl der Vielzahl von Taktimpulsen entsprechen.
  15. IC-Vorrichtung nach Anspruch 10, wobei das eine oder die mehreren Bits der Burst-Schreibadresse oder der Hash der Burst-Schreibadresse mit dem Ende eines jeweiligen der Vielzahl von Datenblöcken verkettet sind.
  16. IC-Vorrichtung nach Anspruch 10, wobei das eine oder die mehreren Bits der Burst-Schreibadresse oder der Hash der Burst-Schreibadresse mit dem Anfang eines jeweiligen der Vielzahl von Datenblöcken verkettet sind.
  17. IC-Vorrichtung nach Anspruch 10, wobei die Vielzahl von Speichervorrichtungen diskrete Speichervorrichtungen, Speichervorrichtungen mit doppelter Datenrate (DDR-Speichervorrichtungen) sind und die IC-Vorrichtung eine diskrete IC-Vorrichtung ist, die mit den DDR-Speichervorrichtungen verbunden ist.
  18. IC-Vorrichtung nach Anspruch 10, wobei die Speichersteuereinheit dient zum: Durchführen eines Burst-Lesevorgangs als Reaktion auf das Empfangen einer Burst-Leseanweisung, die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an die jeweiligen Speichervorrichtungen der Vielzahl von Speichervorrichtungen gesendet wird und als Reaktion darauf eine Vielzahl von Lese-FEC-Blöcken empfangen wird, Segmentieren der Vielzahl von Lese-FEC-Blöcken, um eine Vielzahl von Lesedatenabschnitten und eine Vielzahl von entsprechenden Leseparitätsbits zu erhalten, Verketten eines oder mehrerer Bits der Burst-Leseadresse oder eines Hash der Burst-Leseadresse mit einem entsprechenden Datenabschnitt der Vielzahl von Lesedatenabschnitten, um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten) zu erhalten, Decodieren jeweiliger der Vielzahl von DRAB-Segmenten unter Verwendung der entsprechenden Leseparitätsbits und Verwendung eines Einzelfehlerkorrektur-Doppelfehlererkennungs-Decodiervorgangs (SECDED-Decodiervorgangs), um für jeweilige DRAB-Segmente der Vielzahl von DRAB-Segmenten einen Datenblock, und wenn eine Einzelereigniskorrektur (SEC) aufgetreten ist, eine Bitposition eines korrigierten Bits zu erkennen, Feststellen, dass ein Leseadressfehler aufgetreten ist, wenn die SEC aufgetreten ist und die Bitposition des korrigierten Bits dem einen oder den mehreren Bits der Burst-Leseadresse oder dem Hash der Burst-Leseadresse entspricht, wenn der Leseadressfehler aufgetreten ist: Angeben, dass ein Adressfehler aufgetreten ist, Anfordern einer erneuten Übertragung der Burst-Leseanweisung oder Angeben, dass ein Adressfehler aufgetreten ist, und Anfordern einer erneuten Übertragung der Burst-Leseanweisung.
  19. IC-Vorrichtung nach Anspruch 18, wobei die Speichersteuereinheit eine Lesesteuereinheit und einen Decodierer einschließt, der mit der Lesesteuereinheit verbunden ist, die Lesesteuereinheit dazu dient, den Burst-Lesevorgang durchzuführen, um die Vielzahl von Lese-FEC-Blöcken zu erhalten und um die Vielzahl von FEC-Blöcken mit dem Decodierer zu verbinden, und der Decodierer dazu dient, die Lese-FEC-Blöcke zu segmentieren, um die Verkettung durchzuführen, um das Decodieren durchzuführen und festzustellen, dass der Leseadressfehler aufgetreten ist.
  20. IC-Vorrichtung nach Anspruch 10, wobei die Speichersteuereinheit dient zum: Durchführen eines Burst-Lesevorgangs als Reaktion auf das Empfangen einer Burst-Leseanweisung, die eine Burst-Leseadresse einschließt, indem ein Burst-Lesebefehl an die jeweiligen Speichervorrichtungen der Vielzahl von Speichervorrichtungen gesendet wird und, als Reaktion darauf, eine Vielzahl von Lese-FEC-Blöcken empfangen wird, Segmentieren der Vielzahl von Lese-FEC-Blöcken, um eine Vielzahl von Lesedatenabschnitten und eine Vielzahl von entsprechenden Leseparitätsbits zu erhalten, Verketten eines oder mehrerer Bits der Burst-Leseadresse oder des Hash der Burst-Leseadresse mit einem entsprechenden Datenabschnitt der Vielzahl von Lesedatenabschnitten und mit einem Nicht-Verfälschungs-Bit, um eine Vielzahl von Daten- und Leseadressbitsegmenten (DRAB-Segmenten) zu erhalten, Decodieren jeweiliger der Vielzahl von DRAB-Segmenten unter Verwendung der entsprechenden Leseparitätsbits und Verwendung einer Einzelfehlerkorrektur-Doppelfehlererkennungs-Decodiervorgangs (SECDED-Decodiervorgangs), um für jeweilige DRAB-Segmente der Vielzahl von DRAB-Segmenten einen Datenblock, und wenn eine Einzelereigniskorrektur (SEC) aufgetreten ist, eine Bitposition eines korrigierten Bits zu erkennen, Feststellen, dass ein Leseadressfehler aufgetreten ist, wenn eine SEC aufgetreten ist und die Bitposition des korrigierten Bits dem einen oder den mehreren Bits der Burst-Leseadresse oder dem Hash der Burst-Leseadresse entspricht, wenn der Leseadressfehler aufgetreten ist: Angeben, dass ein Adressfehler aufgetreten ist, Anfordern einer erneuten Übertragung der Burst-Leseanweisung oder Angeben, dass ein Adressfehler aufgetreten ist, und Anfordern einer erneuten Übertragung der Burst-Leseanweisung, Feststellen, dass ein decodiertes DRAB-Segment verfälscht ist, wenn eine SEC aufgetreten ist und die Bitposition des korrigierten Bits dem Verfälschungsangabebit entspricht, Vergleichen einer ermittelten Anzahl von verfälschten DRAB-Segmenten in dem Burst-Lesevorgang (NPDS) mit einem Fehlerschwellenwert, wenn der ermittelte NPDS den Fehlerschwellenwert überschreitet, Feststellen, dass der Burst-Lesevorgang als verfälscht markiert wurde, wenn der Burst-Lesevorgang als verfälscht markiert wurde, Erzeugen einer Ausgabe, dass ein Fehler aufgetreten ist.
DE112022001547.0T 2021-06-01 2022-05-26 Speicheradressenschutz Pending DE112022001547T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163195618P 2021-06-01 2021-06-01
US63/195,618 2021-06-01
PCT/US2022/031068 WO2022256220A1 (en) 2021-06-01 2022-05-26 Memory address protection

Publications (1)

Publication Number Publication Date
DE112022001547T5 true DE112022001547T5 (de) 2024-01-11

Family

ID=82156474

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022001547.0T Pending DE112022001547T5 (de) 2021-06-01 2022-05-26 Speicheradressenschutz

Country Status (4)

Country Link
US (1) US11663076B2 (de)
CN (1) CN117280328A (de)
DE (1) DE112022001547T5 (de)
WO (1) WO2022256220A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11843393B2 (en) 2021-09-28 2023-12-12 Microchip Technology Inc. Method and apparatus for decoding with trapped-block management
CN116089346B (zh) * 2023-04-07 2023-07-28 芯砺智能科技(上海)有限公司 一种嵌入式总线上错误数据重传方法、系统、介质及设备

Family Cites Families (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754858B2 (en) * 2001-03-29 2004-06-22 International Business Machines Corporation SDRAM address error detection method and apparatus
US7139312B2 (en) 2002-05-23 2006-11-21 Stmicroelectronics, Inc. System and method for improving coding gain performance within gigabit phy viterbi decoder
EP1460765A1 (de) 2003-03-19 2004-09-22 STMicroelectronics S.r.l. Fehlerkorrekturmethode für als Symbolsequenz codierte digitale Daten
US20050015420A1 (en) 2003-07-18 2005-01-20 Gibb Sean G. Recoded radix-2 pipeline FFT processor
US7428564B2 (en) 2003-11-26 2008-09-23 Gibb Sean G Pipelined FFT processor with memory address interleaving
US7415584B2 (en) 2003-11-26 2008-08-19 Cygnus Communications Canada Co. Interleaving input sequences to memory
EP1750278B1 (de) 2005-07-28 2009-11-11 STMicroelectronics S.r.l. Verfahren zur Programmierung einer Flash-Speichervorrichtung mit vier Zuständen und entsprechender Seitenspeicher
US7916641B2 (en) 2006-06-29 2011-03-29 Wi-Lan, Inc. System and process for packet delineation
WO2008085964A2 (en) 2007-01-08 2008-07-17 Rambus Inc. Adaptive continuous-time line equalizer for correcting the first post-cursor isi
US8625498B2 (en) 2007-01-22 2014-01-07 Wi-Lan, Inc. Tiling allocations for wireless communication
EP2152861B1 (de) 2007-05-31 2017-03-22 University of Washington Herbeiführbare mutagenese von target-genen
US7961593B2 (en) 2008-01-28 2011-06-14 Wi-Lan, Inc. Downlink acquisition
US8196024B2 (en) 2008-06-27 2012-06-05 Wi-Lan Inc. Demapper using floating-point representation of soft bits
US8386870B2 (en) 2008-07-03 2013-02-26 Wi-Lan, Inc. Fractional HARQ re-transmission
US8229020B2 (en) 2009-03-23 2012-07-24 Oracle America, Inc. Integrated equalization and CDR adaptation engine with single error monitor circuit
US8300684B2 (en) 2009-06-29 2012-10-30 Lsi Corporation Real-time eye monitor for statistical filter parameter calibration
US8707122B1 (en) 2011-02-08 2014-04-22 Pmc-Sierra Us, Inc. Nonvolatile memory controller with two-stage error correction technique for enhanced reliability
US8631309B2 (en) 2011-05-04 2014-01-14 Pmc-Sierra, Inc. Forward error correction with extended effective block size
US8694855B1 (en) 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US8694849B1 (en) 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US8923382B2 (en) 2012-03-16 2014-12-30 Lsi Corporation Tap adaptation with a fully unrolled decision feedback equalizer
US9141467B2 (en) 2012-03-23 2015-09-22 Samsung Electronics Co., Ltd. Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
US8812935B2 (en) * 2012-08-02 2014-08-19 Oracle International Corporation Using a data ECC to detect address corruption
US9128858B1 (en) 2013-01-29 2015-09-08 Pmc-Sierra Us, Inc. Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US8990661B1 (en) 2013-03-05 2015-03-24 Pmc-Sierra Us, Inc. Layer specific attenuation factor LDPC decoder
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US8938037B1 (en) 2013-03-13 2015-01-20 Pmc-Sierra Us, Inc. High speed gain and phase recovery in presence of phase noise
US9166623B1 (en) 2013-03-14 2015-10-20 Pmc-Sierra Us, Inc. Reed-solomon decoder
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9235467B2 (en) 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9590656B2 (en) 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9660842B2 (en) 2013-06-27 2017-05-23 Intel Corporation Low power equalizer and its training
US8971396B1 (en) 2013-08-22 2015-03-03 Pmc-Sierra Us, Inc. Windowed-based decision feedback equalizer and decision feedback sequence estimator
TWI512732B (zh) 2013-08-30 2015-12-11 Phison Electronics Corp 解碼方法、記憶體儲存裝置與非揮發性記憶體模組
US9571125B2 (en) * 2013-10-03 2017-02-14 Futurewei Technologies, Inc. Systems and methods of vector-DMA cache-XOR for MPCC erasure coding
US9270296B1 (en) 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9170876B1 (en) 2013-12-31 2015-10-27 Pmc-Sierra Us, Inc. Method and system for decoding encoded data stored in a non-volatile memory
US9325347B1 (en) 2014-02-21 2016-04-26 Microsemi Storage Solutions (U.S.), Inc. Forward error correction decoder and method therefor
US9564922B1 (en) 2014-03-19 2017-02-07 Microsemi Storage Solutions (U.S.), Inc. Error correction code decoder with stochastic floor mitigation
US9747200B1 (en) 2014-07-02 2017-08-29 Microsemi Solutions (U.S.), Inc. Memory system with high speed non-volatile memory backup using pre-aged flash memory devices
US9432053B1 (en) 2014-07-07 2016-08-30 Microsemi Storage Solutions (U.S.), Inc. High speed LDPC decoder
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US9305661B2 (en) 2014-09-03 2016-04-05 Microsemi Storage Solutions (U.S.), Inc. Nonvolatile memory system that uses programming time to reduce bit errors
US9602133B1 (en) 2015-01-27 2017-03-21 Microsemi Storage Solutions (U.S.), Inc. System and method for boost floor mitigation
US9564921B1 (en) 2015-02-04 2017-02-07 Microsemi Storage Solutions (U.S.), Inc. Method and system for forward error correction decoding based on a revised error channel estimate
US9473175B1 (en) 2015-02-10 2016-10-18 Microsemi Storage Solutions (U.S.), Inc. Forward error correction decoder system
US9524210B1 (en) 2015-03-02 2016-12-20 Crossbar, Inc. Separating bits represented by a MLC in connection with ECC
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9742439B1 (en) 2015-06-08 2017-08-22 Microsemi Solutions (U.S.), Inc. Method and device for forward error correction decoder system utilizing orthogonality of an H matrix
JP6532777B2 (ja) 2015-07-02 2019-06-19 株式会社日立製作所 等化器
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9793924B1 (en) 2015-12-04 2017-10-17 Microsemi Solutions (U.S.), Inc. Method and system for estimating an expectation of forward error correction decoder convergence
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US10164656B2 (en) 2016-03-30 2018-12-25 Silicon Motion Inc. Bit flipping algorithm for providing soft information during hard decision hard decoding
US9940980B2 (en) * 2016-06-30 2018-04-10 Futurewei Technologies, Inc. Hybrid LPDDR4-DRAM with cached NVM and flash-nand in multi-chip packages for mobile devices
US10157677B2 (en) 2016-07-28 2018-12-18 Ip Gem Group, Llc Background reference positioning and local reference positioning using threshold voltage shift read
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
US9898229B1 (en) 2016-07-29 2018-02-20 Sandisk Technologies Llc Systems and methods of memory reads
US10268541B2 (en) 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
US10181969B2 (en) 2016-12-08 2019-01-15 Intel Corporation High performance receiver with single calibration voltage
US10853163B2 (en) * 2017-04-28 2020-12-01 Qualcomm Incorporated Optimized error-correcting code (ECC) for data protection
US10700713B2 (en) 2017-08-01 2020-06-30 Microsemi Storage Solutions, Inc. System and method for error correction in data communications
US10491244B2 (en) 2017-11-14 2019-11-26 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10511326B2 (en) 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
WO2019133184A1 (en) 2017-12-28 2019-07-04 Microsemi Storage Solutions, Inc. System and method for drift compensation in data communications
US10230552B1 (en) 2018-07-26 2019-03-12 Microsemi Storage Solutions, Inc. System and method for decision feedback equalizer (DFE) adaptation
US11165443B2 (en) 2018-10-01 2021-11-02 Microchip Technology Incorporated Burst error tolerant decoder and related systems, methods, and devices
US11119909B2 (en) * 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
US11086716B2 (en) 2019-07-24 2021-08-10 Microchip Technology Inc. Memory controller and method for decoding memory devices with early hard-decode exit
US10972249B1 (en) 2020-04-20 2021-04-06 Microchip Technology Inc. System and method for data sampler drift compensation
US20220365845A1 (en) * 2021-05-13 2022-11-17 Micron Technology, Inc. Interleaved codeword transmission for a memory device

Also Published As

Publication number Publication date
US11663076B2 (en) 2023-05-30
US20220382629A1 (en) 2022-12-01
CN117280328A (zh) 2023-12-22
WO2022256220A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
DE112022001547T5 (de) Speicheradressenschutz
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE102010051813B4 (de) Fehlerkorrekturmechanismen für 8-Bit Speichergeräte
DE102020115736A1 (de) Halbleiterspeichervorrichtung und Verfahren zum Betreiben der Halbleiterspeichervorrichtungen
DE69910320T2 (de) Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE102011108933B4 (de) Sichere Speicherung durch interne Betriebssicherstellung
DE2942998A1 (de) Fehler-korrektur- und -erkennungs- anordnung
DE3111447C2 (de)
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE112011105326T5 (de) Speichermodul, umfassend eine Kopierroutine zum Kopieren von Daten aus einen aktiven Speicherwürfel in einen Reservespeicherwürfel
DE102011075814A1 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102007010584A1 (de) Handhabung von unzulässigen Befehlen auf der Befehlsdecoderstufe
DE1284996B (de) Leseschaltung fuer einen Speicher
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE102017114054A1 (de) Speicheradressen-Schutzschaltung und Verfahren
US5956352A (en) Adjustable filter for error detecting and correcting system
DE2655653C2 (de) Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher
DE2549392C3 (de) Verfahren zur Erhöhung der Zuverlässigkeit von integrierten Speicherbausteinen und zur Verbesserung der Ausbeute von nach außen hin fehlerfrei erscheinenden Speicherbausteinen bei ihrer Herstellung
DE102020111321A1 (de) System und verfahren zur erkennung und berichtigung von datenfehlern eines transparenten registers
DE2320354A1 (de) Selbstpruefender codeumsetzer
EP1444700B1 (de) Speichertest
DE69924012T2 (de) Verfahren und vorrichtung für speicherdata-fehlerdetektion und speichermodul-fehlerdetektion

Legal Events

Date Code Title Description
R012 Request for examination validly filed