DE112020001219T5 - Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung - Google Patents

Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung Download PDF

Info

Publication number
DE112020001219T5
DE112020001219T5 DE112020001219.0T DE112020001219T DE112020001219T5 DE 112020001219 T5 DE112020001219 T5 DE 112020001219T5 DE 112020001219 T DE112020001219 T DE 112020001219T DE 112020001219 T5 DE112020001219 T5 DE 112020001219T5
Authority
DE
Germany
Prior art keywords
ecc
data
storage system
detecting
memory
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
DE112020001219.0T
Other languages
English (en)
Inventor
Gil Golov
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.)
Micron Technology Inc
Original Assignee
Micron 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020001219T5 publication Critical patent/DE112020001219T5/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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
    • G06F11/1052Bypassing or disabling error detection or correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40607Refresh operations in memory devices with an internal cache or data buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/401Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C2211/406Refreshing of dynamic cells
    • G11C2211/4062Parity or ECC in refresh operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits

Abstract

Es wird ein Schema für einen aufgeschobenen Fehlerkorrekturcode (ECC) für Speichervorrichtungen offenbart. In einer Ausführungsform wird ein Verfahren offenbart, umfassend Starten eines Aufschiebezeitraums eines Betriebs eines Speichersystems als Reaktion auf das Erkennen der Erfüllung einer Bedingung; Empfangen eines Vorgangs während des Aufschiebezeitraums, wobei der Vorgang einen Lese- oder Schreibvorgang umfasst, der auf eine oder mehrere Speicherbanken des Speichersystems zugreift; Aufschieben von ECC-Vorgängen für den Vorgang; Ausführen des Vorgangs; Erkennen eines Endes der Aufschiebezeitraums des Betriebs; und Ausführen der ECC-Vorgänge nach dem Ende des Aufschiebezeitraums.

Description

  • VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität der US-Patentanmeldung mit der Seriennummer 16/353,962 , eingereicht am 14. März 2019 und mit dem Titel „Deferred Error Code Correction with Improved Effective Data Bandwidth Performance“, deren gesamte Offenbarung hiermit durch Bezugnahme hierin aufgenommen wird.
  • URHEBERRECHTSHINWEIS
  • Diese Anwendung beinhaltet Material, das möglicherweise urheberrechtlich geschützt ist. Der Urheberrechtsinhaber hat keine Einwände gegen die Faksimile-Reproduktion der Patentoffenlegung durch Dritte, wie sie in den Akten oder Aufzeichnungen des Patent- und Markenamtes enthalten ist, behält sich jedoch ansonsten alle Urheberrechtsrechte vor.
  • ALLGEMEINER STAND DER TECHNIK
  • Vorrichtungen eines dynamischen Speichers mit wahlfreiem Zugriff (dynamic random-access memory - DRAM) werden üblicherweise in fast allen Computersystemen verwendet, um einen Hochgeschwindigkeitszugriff auf Daten bereitzustellen, die durch einen oder mehrere Prozessoren verwendet werden. Einige DRAM-Vorrichtungen nutzen ein Schema für einen Fehlerkorrekturcode (error correction code - ECC), wie etwa Hamming-Codes, um die Integrität der Daten während Lese- und Schreibzugriffen sicherzustellen. Die Verwendung von ECC ermöglicht es einer DRAM-Vorrichtung, Fehler in den gelesenen/geschriebenen Daten aus den zugrundeliegenden Speicherstrukturen zu erkennen und in einigen Fällen zu korrigieren.
  • Eine ECC-fähige DRAM-Steuerung -typischerweise in einem System-ona-Chip (SoC) angeordnet -generiert ECC-Paritätsbits und speichert die Paritätsbits zusammen mit den Daten in dem DRAM-Datenspeicher. Eine DRAM-Vorrichtung, die ein ECC-Schema umsetzt, kann ein eingebettetes oder bandexternes (out-of-band - OOB) ECC-Schema umsetzen. In einem eingebetteten Schema speichert die DRAM-Steuerung die ECC-Paritätsbits während der Lese-/Schreibzugriffe als Nutzlast und benötigt keine zusätzlichen DRAM-Chips. Im Gegensatz dazu erfordert ein OOB-ECC-Schema einen dedizierten DRAM-Chip (z. B. eine Bank) zum Speichern von ECC-Paritätsbits.
  • Während Lesezugriffen liest eine DRAM-Steuerung die ECC-Paritätsbits aus den Daten (z. B. aus einem Teil der im Speicher gespeicherten Daten, wenn ein eingebettetes Schema verwendet wird). Die Steuerung prüft auf Datenfehler, indem ein ECC-Syndrom auf Grundlage der gelesenen Daten generiert und mit gespeicherten ECC-Syndromen verglichen wird, wobei eine Übereinstimmung einen Fehler angibt.
  • Das vorgenannte System leidet unter dem Nachteil einer Bandbreiteneinbuße aufgrund der Tatsache, dass ein Teil der Datenbandbreite zwischen DRAM und SoC verwendet wird, um die ECC-Paritätsbits als Nutzlast zu liefern. Die offenbarten Ausführungsformen lösen diese und andere Probleme des Standes der Technik.
  • Figurenliste
  • Das Vorstehende und andere Ziele, Merkmale und Vorteile der Offenbarung werden aus der folgenden Beschreibung von Ausführungsformen ersichtlich, wie sie in den beigefügten Zeichnungen veranschaulicht sind, in denen sich Bezugszeichen in den verschiedenen Ansichten auf dieselben Teile beziehen. Die Zeichnungen sind nicht unbedingt maßstabsgetreu, stattdessen liegt der Schwerpunkt vielmehr auf der Veranschaulichung der Prinzipien der Ausführungsformen.
    • 1 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen in einem Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 2 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen während eines Speicherlesevorgangs gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 3 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen während eines Speicherschreibvorgangs gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 4 ist ein Blockdiagramm, das ein Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Um den Betrieb eines Speichersystems zu verbessern, das ein eingebettetes ECC-Schema verwendet, stellen die offenbarten Ausführungsformen Mechanismen zum Aufschieben von ECC-Vorgängen während Speicherlese- und -schreibvorgängen bereit. Die Verfahren und Vorrichtungen der offenbarten Ausführungsformen starten und stoppen einen Aufschiebezeitraum eines Vorgangs (in dem ECC-Vorgänge ausgesetzt werden) als Reaktion auf vorkonfigurierte Auslöser. Wenn ECC-Vorgänge aufgeschoben sind, wird Speicher gelesen/geschrieben, ohne ECC-Daten zwischen einer Steuerung und einer Speicherbank (oder zwischen der Steuerung und einem Host-Prozessor) zu übertragen. Wenn der Aufschiebezeitraum endet, führen die Verfahren und Vorrichtungen die aufgeschobenen ECC-Vorgänge durch und warnen den Host-Prozessor, wenn ECC-Fehler erkannt werden. Auf diese Weise ist die Busauslastung ausschließlich den Benutzerdaten gewidmet, wodurch die Gesamtbandbreite des Speichersystems und des gesamten Computersystems, das das Speichersystem einsetzt, verbessert wird.
  • 1 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen in einem Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • In einer Ausführungsform wird das Verfahren 100 durch eine Steuerung eines Speichersystems ausgeführt. In einigen Ausführungsformen wird das Verfahren 100 durch Firmware ausgeführt, die in der Steuerung installiert ist. In einigen Ausführungsformen wird das Verfahren 100 durch eine eigenständige Verarbeitungsvorrichtung (z. B. einen separaten ECC-Prozessor) ausgeführt. In einigen Ausführungsformen schließt das an dem Verfahren 100 beteiligte Speichersystem ein DRAM-Speichersystem ein.
  • In Schritt 102 betreibt das Verfahren den Speicher normal.
  • Wie vorstehend beschrieben, wird das Verfahren in der veranschaulichten Ausführungsform in einem Speicher eingesetzt, der ein eingebettetes ECC-Schema einsetzt. In diesem Zusammenhang generiert der Speicher bei normalem Betrieb ECC-Paritätsbits und speichert die ECC-Paritätsbits zusammen mit den Benutzerdaten. Im hierin verwendeten Sinne beziehen sich Benutzerdaten auf alle Daten, die durch einen Prozessor in dem Speichersystem gespeichert werden. In einigen Ausführungsformen sind die ECC-Daten mit Benutzerdaten verschachtelt. In anderen Ausführungsformen sind die ECC-Daten in einem separaten ECC-Bereich der Speicherbank(en) des Speichersystems gespeichert. Die konkrete Konfiguration von ECC-Daten in Speicherbanken ist nicht einschränkend und jede andere Konfiguration kann verwendet werden. In jedem Szenario beinhalten die Daten, die zwischen einer Steuerung und einer Speicherbank beim „normalen“ Betrieb in Schritt 102 übertragen werden, ECC-Daten und Benutzerdaten, wodurch die Bandbreite des Datenbusses, der die Steuerung und die Speicherbanken verbindet, aufgeteilt wird. Obwohl nicht im Detail beschrieben, beinhaltet der normale Betrieb einer eingebetteten ECC-DRAM-Vorrichtung verschiedene andere Vorgänge, die hierin nicht beschrieben sind. Beispielsweise wird hierin keine detaillierte Beschreibung spezifischer ECC-Mechanismen (z. B. Paritätserzeugung, Hamming-Codes usw.) bereitgestellt, ist aber als Teil „normaler“ Vorgänge eines eingebetteten ECC-Speichersystems beinhaltet.
  • In Schritt 104 bestimmt das Verfahren, ob die Aufschiebung von ECC-Vorgängen ausgelöst wurde. In einer Ausführungsform umfasst das Bestimmen, ob die Aufschiebung von ECC-Vorgängen ausgelöst wurde, Bestimmen, ob eine oder mehrere Bedingungen durch das Speichersystem erfüllt wurden.
  • In einer Ausführungsform bestimmt das Verfahren, ob ein Prozessor einen Befehl übertragen hat, der explizit anfordert, dass das Speichersystem EEC-Vorgänge aufschiebt. In einigen Ausführungsformen stellt das Verfahren eine externe Befehlsschnittstelle und einen Aufschiebungsbefehl bereit, den eine auf dem Prozessor laufende Anwendung an das Speichersystem übertragen kann, um ECC-Vorgänge proaktiv aufzuschieben. Als ein Beispiel kann, wenn das Speichersystem beispielsweise in einer Medienvorrichtung verwendet wird, eine auf dem Prozessor laufende Anwendung so konfiguriert werden, dass sie Verzögerungen bei der Fehlerbenachrichtigung handhabt (z. B. durch Puffern von Daten vor Ausgeben der Daten). In diesem Beispiel kann eine Anwendung (z. B. ein Videoplayer) angeben, dass ECC-Vorgänge aufgeschoben werden können. In einigen Ausführungsformen beinhaltet der Befehl zum Aufschieben von ECC-Vorgängen eine Zeitdauer zum Aufschieben von Vorgängen. Es sei angemerkt, dass ein solcher Zeitraum in einigen Ausführungsformen durch einen Auslöser außer Kraft gesetzt wird, um das Aufschieben von ECC-Vorgängen in Schritt 108 zu beenden.
  • In einer Ausführungsform bestimmt das Verfahren, ob eine Auslastung eines Datenbusses einen vorkonfigurierten Schwellenwert überschreitet. In einer Ausführungsform umfasst der Datenbus einen Bus zwischen der Steuerung und den Speicherbanken. Alternativ oder in Verbindung mit dem Vorhergehenden beinhaltet der Bus den Bus zwischen der Steuerung und dem Prozessor. In einigen Ausführungsformen umfasst der vorkonfigurierte Schwellenwert einen Busauslastungsschwellenwert von 90 %. In diesen Ausführungsformen wird die Aufschiebung von ECC-Vorgängen mit der Datenmenge synchronisiert, die über die verschiedenen Busse des Speichersystems übertragen wird. Da ECC-Daten auf demselben Bus wie Benutzerdaten transportiert werden, kann der vorkonfigurierte Schwellenwert auf Grundlage der Größe der ECC-Daten relativ zur Größe der Benutzerdaten bemessen sein. Auf diese Weise erkennt der Schwellenwert, wenn die ECC-Vorgänge relativ zu der Menge an auf dem Bus übertragenen Benutzerdaten zu viel Bandbreite verbrauchen.
  • Die vorstehenden Beispiele sollen spezifische Arten von Bedingungen veranschaulichen, bei denen das Verfahren ECC-Vorgänge aufschiebt. Anstelle oder in Kombination mit diesen Beispielen können andere Bedingungen verwendet werden, und die Beschreibung soll nicht allein auf diese Beispiele beschränkt sein. Als ein Beispiel verwendet das Verfahren in einer Ausführungsform die Fehlerrate der ECC-Vorgänge, um zu bestimmen, ob ECC-Vorgänge aufgeschoben werden sollen. Wenn beispielsweise die Fehlerrate niedrig ist, kann das Verfahren ECC-Vorgänge vorübergehend aufschieben. Als ein weiteres Beispiel schiebt das Verfahren in einer Ausführungsform ECC-Vorgänge während eines Zeitraums beim Systemstart oder gemäß einem im Voraus geplanten Intervall auf. Wenn ein im Voraus geplantes Intervall verwendet wird, aktiviert das Verfahren ECC-Vorgänge für (beispielsweise) 10 Mikrosekunden und schiebt dann ECC-Vorgänge für 10 Mikrosekunden auf, wobei dieses Muster auf unbestimmte Zeit wiederholt wird.
  • In einigen Ausführungsformen wird Schritt 104 durch Firmware durchgeführt, die in eine Speichersteuerung integriert ist. In dieser Ausführungsform führt die Firmware die vorstehend beschriebenen Überwachungsschritte durch. Alternativ wird Schritt 104 in einigen Ausführungsformen durch eine dedizierte Schaltung in der Steuerung durchgeführt, um ECC-Vorgänge zu aktivieren/deaktivieren.
  • Wie veranschaulicht, umfasst Schritt 104 einen bedingten Befehl. Wenn das Verfahren bestimmt, dass ECC-Anweisungen nicht aufgeschoben werden sollen (z. B. bei geringer Busauslastung), fährt das Verfahren in Schritt 102 mit dem normalen Betrieb des Speichers fort. Wenn das Verfahren jedoch bestimmt, dass die Bedingung erfüllt wurde (z. B. überschreitet die Busnutzung einen vorkonfigurierten Schwellenwert), fährt das Verfahren mit Schritt 106 fort.
  • In Schritt 106 schiebt das Verfahren ECC-Vorgänge während Lese-, Schreib- und anderen Vorgängen, die auf die im Speicher gespeicherten Daten zugreifen, auf.
  • Die Einzelheiten von Schritt 106 werden in den 2 und 3 ausführlicher (für Schreib- bzw. Lesezugriffe) beschrieben und die Einzelheiten dieser Figuren sind hierin durch Bezugnahme in ihrer Gesamtheit eingeschlossen. Kurz gesagt beendet das Verfahren während des Schritts 106 die Übertragung von ECC-Daten über die mit der Steuerung verbundenen Datenbusse. Während dieses Zeitraums verarbeitet der Steuerung jedoch weiterhin ECC-Daten (wie in den 2 und 3 beschrieben wird) für eine spätere Verwendung.
  • In Schritt 108 bestimmt das Verfahren, ob der aufgeschobene ECC-Zeitraum abgelaufen ist.
  • Wie in Schritt 104 umfasst das Bestimmen, ob die Aufschiebung von ECC-Vorgängen deaktiviert wurde, Bestimmen, ob eine oder mehrere Bedingungen durch das Speichersystem erfüllt wurden.
  • In einer Ausführungsform bestimmt das Verfahren, ob ein Prozessor einen Befehl übertragen hat, der explizit anfordert, dass das Speichersystem das Aufschieben der EEC-Vorgänge stoppt. In einigen Ausführungsformen stellt das Verfahren eine externe Befehlsschnittstelle und einen Aufschiebungsstoppbefehl bereit, der eine auf dem Prozessor ausgeführte Anwendung an das Speichersystem übertragen kann, um das Aufschieben der ECC-Vorgänge proaktiv zu stoppen. Die Anweisung zum Stoppen des Aufschiebens von ECC-Vorgängen ist die logische Umkehrung der Anweisung zum Aufschieben von ECC-Vorgängen, die in Verbindung mit Schritt 104 erörtert wurde.
  • In einer Ausführungsform bestimmt das Verfahren, ob eine Nutzung eines Datenbusses (vorstehend erörtert) einen vorkonfigurierten Schwellenwert unterschreitet. In einigen Ausführungsformen umfasst der vorkonfigurierte Schwellenwert einen Busnutzungsschwellenwert von 50 %. In diesen Ausführungsformen wird die Aufschiebung von ECC-Vorgängen mit der Datenmenge synchronisiert, die über die verschiedenen Busse des Speichersystems übertragen wird. Da ECC-Daten auf demselben Bus wie Benutzerdaten transportiert werden, kann der vorkonfigurierte Schwellenwert auf Grundlage der Größe der ECC-Daten relativ zur Größe der Benutzerdaten bemessen sein. Auf diese Weise erkennt der Schwellenwert, wenn die Nutzung des Datenbusses nach dem Aufschieben von ECC-Vorgängen „befreit“ wurde, und reaktiviert als Reaktion ECC-Vorgänge.
  • In einer weiteren Ausführungsform bestimmt das Verfahren, ob ein lokaler Cache-Speicher voll (oder fast voll) ist, und aktiviert ECC-Vorgänge, wenn bestimmt wird, dass der Cache voll oder fast voll ist. Wie nachstehend beschrieben wird, verwendet das Speichersystem in einigen Ausführungsformen einen lokalen Cache-Speicher, um ECC-Daten, die normalerweise über die Datenbusse übertragen würden, vorübergehend zu speichern. Wenn dieser Cache-Speicher voll oder fast voll ist, kann das Verfahren ECC-Vorgänge nicht länger aufschieben und muss den Cache leeren, indem es ECC-Vorgänge reaktiviert (und zu Schritt 110 übergeht, um die im Cache gespeicherten ECC-Daten vollständig zu löschen).
  • Die obigen Beispiele sollen spezifische Arten von Bedingungen veranschaulichen, bei denen das Verfahren das Aufschieben von ECC-Vorgängen stoppt. Anstelle oder in Kombination mit diesen Beispielen können andere Bedingungen verwendet werden, und die Beschreibung soll nicht allein auf diese Beispiele beschränkt sein. Als ein Beispiel verwendet das Verfahren in einer Ausführungsform die Fehlerrate der ECC-Vorgänge, um zu bestimmen, ob das Aufschieben der ECC-Vorgänge gestoppt werden soll. Wenn beispielsweise die Fehlerrate hoch ist, kann das Verfahren das Aufschieben von ECC-Vorgängen stoppen (um einen schnellen Cache-Überlauf zu vermeiden sowie zu verhindern, dass völlig beschädigte Daten zurückgegeben/geschrieben werden). Als weiteres Beispiel stoppt das Verfahren in einer Ausführungsform das Aufschieben von ECC-Vorgängen gemäß einem im Voraus geplanten Intervall. Wenn ein im Voraus geplantes Intervall verwendet wird, aktiviert das Verfahren ECC-Vorgänge für (als Beispiel) 10 Mikrosekunden und schiebt dann ECC-Vorgänge für 10 Mikrosekunden auf, wobei dieses Muster auf unbestimmte Zeit wiederholt wird.
  • In einigen Ausführungsformen wird Schritt 108 durch Firmware durchgeführt, die in eine Speichersteuerung integriert ist. In dieser Ausführungsform führt die Firmware die vorstehend beschriebenen Überwachungsschritte durch. Alternativ wird Schritt 104 in einigen Ausführungsformen durch eine dedizierte Schaltung in der Steuerung durchgeführt, um ECC-Vorgänge zu aktivieren/deaktivieren.
  • Wie dargestellt umfasst Schritt 108 einen bedingten Befehl. Wenn das Verfahren bestimmt, dass ECC-Anweisungen aufgeschoben werden sollten (z. B. ist die Busauslastung hoch), fährt das Verfahren damit fort, ECC-Vorgänge in Schritt 106 aufzuschieben. Wenn das Verfahren jedoch bestimmt, dass die Bedingung erfüllt wurde (z. B. unterschreitet die Busauslastung einen vorkonfigurierten Schwellenwert), fährt das Verfahren mit Schritt 110 fort.
  • In Schritt 110 führt das Verfahren eine Nachaufschiebungsverarbeitung von ECC-Daten aus.
  • Die Einzelheiten von Schritt 110 werden in den 2 und 3 ausführlicher (für Schreib- bzw. Lesezugriffe) beschrieben und die Einzelheiten dieser Figuren sind hierin durch Bezugnahme in ihrer Gesamtheit eingeschlossen. Kurz gesagt, während des Schritts 110 wickelt das Verfahren alle ECC-Daten ab, die während des Aufschiebezeitraums im lokalen Cache gespeichert wurden. Bei Lesezugriffen stellt das Verfahren sicher, dass ein lokal durch die Steuerung berechnetes ECC-Syndrom mit dem im Speicher gespeicherten ECC-Syndrom übereinstimmt. Für Schreibzugriffe schreibt das Verfahren ein im lokalen Cache zwischengespeichertes ECC-Syndrom an der entsprechenden Speicheradresse in den Speicher.
  • 2 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen während eines Speicherlesevorgangs gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • Wie veranschaulicht, veranschaulicht 2 Ausführungsformen der Schritte 106, 108 und 110, wie vorstehend kurz beschrieben. Insbesondere veranschaulicht 2 Ausführungsformen der Schritte 106 und 110, die als Reaktion auf einen Schreibvorgang durchgeführt werden. In der veranschaulichten Ausführungsform bezieht sich ein Schreibvorgang auf eine Speicherschreibanweisung, wie beispielsweise eine Anweisung zum Schreiben in eine DRAM-Speichervorrichtung. Das spezielle Format eines Schreibvorgangs ist nicht einschränkend und verschiedene alternative Schreibvorgangsformate können verwendet werden. Im Allgemeinen kann (für die Zwecke von 2) angenommen werden, dass ein Schreibvorgang einen Benutzerdatenabschnitt (in eine Speichervorrichtung zu schreibende Daten) und eine Adresse (entweder relativ/Versatz oder absolut) beinhaltet. In einigen Ausführungsformen weist der Schreibvorgang zusätzlich zu einem Datenfeld und einer Schreibadresse weitere Parameter auf.
  • In Schritt 202 empfängt das Verfahren den Schreibvorgang. In einigen Ausführungsformen wird der Schreibvorgang über einen dedizierten Bus empfangen. In anderen Ausführungsformen wird der Schreibvorgang an Pin-Eingängen einer dedizierten Speichersteuerung empfangen. In einer Ausführungsform wird der Schreibvorgang durch Firmware in der Speichersteuerung empfangen. In anderen Ausführungsformen wird der Schreibvorgang durch eine dedizierte Schaltung in der Speichersteuerung empfangen.
  • In Schritt 204 schreibt das Verfahren Daten ohne ECC-Daten in die Speichervorrichtung.
  • Wie vorstehend erörtert, beinhalten vorhandene Speichersteuerungen eine ECC-Schaltung zum Generieren von ECC-Daten während jedes Schreibzugriffs. Diese ECC-Daten werden dann zusammen mit den Benutzerdaten im DRAM-Speicher gespeichert. In Schritt 204 deaktiviert das Verfahren diese ECC-Schaltung und schreibt nur die Benutzerdaten in die Speichervorrichtung. In einigen Ausführungsformen umfasst der Schritt 204 Melden eines Deaktivierungsbits oder -flags an der ECC-Schaltung. In anderen Ausführungsformen umfasst der Schritt 204 das Deaktivieren einer Subroutine, die durch die Firmware ausgeführt wird, die die ECC-Code-Generierung durchführt.
  • In Schritt 206 generiert das Verfahren ECC-Paritätsbits für die in den Speicher geschriebenen Daten.
  • In einigen Ausführungsformen nutzt das Verfahren vorhandene ECC-Codierungsschemata, um die Paritätsbits in Schritt 206 zu generieren. Beispielsweise verwendet das Verfahren in einer Ausführungsform einen Hamming-Code (z. B. einen 7,4-Hamming-Code), um Paritätsbits für empfangene Daten zu generieren.
  • In einigen Ausführungsformen verwendet das Verfahren vorhandene ECC-Hardware, um Paritätsbits für Benutzerdaten zu generieren, die in die Speichervorrichtung geschrieben werden sollen. In einigen Ausführungsformen generiert das Verfahren die ECC-Paritätsbits parallel zum Schreiben der Daten in den Speicher. In anderen Ausführungsformen generiert das Verfahren die ECC-Paritätsbits, bevor die Daten in den Speicher geschrieben werden. In einigen Ausführungsformen puffert das Verfahren die Generierung von ECC-Paritätsbits, während Schreibzugriffe auf den Speicher optimiert werden.
  • In Schritt 208 speichert das Verfahren die ECC-Paritätsbits und Zieladressen in einem lokalen Cache-Speicher.
  • In einer Ausführungsform beinhaltet eine Speichersteuerung einen kleinen Cache-Speicher (wie etwa eine statische DRAM-Vorrichtung) oder ist kommunikativ an diesen gekoppelt. In Schritt 208 speichert das Verfahren die in Schritt 206 generierten Paritätsbits in diesen Cache. Außerdem speichert das Verfahren die Zieladressen in den Cache. Die Zieladressen entsprechen den Schreibadressen in den Schreibvorgängen. In einigen Ausführungsformen speichert das Verfahren die Schreibadressen, die verwendet werden, um die Benutzerdaten in den Speicher zu schreiben, falls die empfangenen Adressen vor dem Schreiben in das zugrundeliegende Speichersystem modifiziert werden.
  • Wie in 1 erörtert, fährt das Verfahren damit fort, Schritt 106 (Schritte 202-208) auszuführen, bis bestimmt wird (Schritt 108), dass ECC-Vorgänge nicht länger aufgeschoben werden sollen. Bei Erreichen dieser Bestimmung führt das Verfahren die Nachaufschiebungsverarbeitungsschritte 210 und 212 für alle während Schritt 106 empfangenen Schreibvorgänge aus.
  • In Schritt 210 überträgt das Verfahren die ECC-Paritätsbits vom Cache an den Speicher.
  • In einer Ausführungsform speichert der Cache Speicheradressen und Paritätsbits für diese Speicheradressen. In einer Ausführungsform modifiziert das Verfahren die Benutzerdaten an einer Speicherstelle, um die Paritätsbits zu beinhalten. In anderen Ausführungsformen berechnet das Verfahren eine Paritätszieladresse unter Verwendung der im Cache gespeicherten Zieladresse (wenn der Paritätsabschnitt einer Speichervorrichtung getrennt von den Benutzerdaten gespeichert ist). In jedem Fall erhält das Verfahren die zwischengespeicherten Paritätsbits und eine Adresse in der Speichervorrichtung, in die die Paritätsbits geschrieben werden sollen.
  • Das Verfahren schreibt dann die Paritätsbits in die identifizierte Stelle im Speicher. Auf diese Weise erzielt das Verfahren eine „Wiederherstellung“ des Speichers auf eine Standard-ECC-Speicherkonfiguration. Somit können vorhandene Schaltungen reaktiviert werden und kann der ECC-Speicher in einer standardmäßigen Weise betrieben werden.
  • Es sei angemerkt, dass in einigen Ausführungsformen während Schritt 204 Schreibfehler auftreten können. In einigen Ausführungsformen ignoriert das Verfahren Schreibfehler oder speichert diese Fehler alternativ während des Modus der aufgeschobenen Verarbeitung im Cache zwischen (Schritt 106). Wenn dies der Fall ist, meldet das Verfahren diese Schreibfehler während Schritt 210. In einigen alternativen Ausführungsformen kann das Verfahren Schreibfehler sofort melden.
  • In Schritt 212 leert das Verfahren den Cache.
  • In einigen Ausführungsformen ist Schritt 212 optional. Wenn Schritt 212 nicht umgesetzt wird, betreibt das Verfahren den Cache auf herkömmliche Weise. Zum Beispiel kann das Verfahren den Cache als ein am längsten nicht verwendeter (least-recently used - LRU), am wenigsten häufig verwendeter (least frequently used - LFU), First-in-First-out-(FIFO)-Cache oder gemäß anderen Cache-Ersetzungsrichtlinien betreiben. In einigen Ausführungsformen leert das Verfahren jedoch den Cache, nachdem die gesamte Nachaufschiebungsverarbeitung ausgeführt wurde. Es sei angemerkt, dass sich in diesen Ausführungsformen das „Leeren“ des Caches auf das Löschen von Daten bezieht, die gespeichert sind, um das Abwickeln der in Schritt 106 durchgeführten Vorgänge zu unterstützen. Das heißt, das Verfahren leert nicht den gesamten Cache, sondern bereinigt vielmehr die Daten, die zum Ausführen von Schritt 110 erforderlich sind.
  • 3 ist ein Flussdiagramm, das ein Verfahren zum Aufschieben von ECC-Vorgängen während eines Speicherschreibvorgangs gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • Wie veranschaulicht, veranschaulicht 3 Ausführungsformen der Schritte 106, 108 und 110, wie vorstehend kurz beschrieben. Insbesondere veranschaulicht 3 Ausführungsformen der Schritte 106 und 110, die als Reaktion auf einen Lesevorgang durchgeführt werden. In der veranschaulichten Ausführungsform bezieht sich ein Lesevorgang auf eine Speicherleseanweisung, wie etwa eine Anweisung zum Lesen aus einer DRAM-Speichervorrichtung. Das spezielle Format eines Lesevorgangs ist nicht einschränkend und verschiedene alternative Lesevorgangsformate können verwendet werden. Im Allgemeinen kann (für die Zwecke der 3) angenommen werden, dass ein Lesevorgang eine Adresse (entweder relativ/Versatz oder absolut) beinhaltet, um aus dem Speicher zu lesen. In einigen Ausführungsformen weist der Lesevorgang zusätzlich zu einer Adresse weitere Parameter auf.
  • In Schritt 302 empfängt das Verfahren einen Lesevorgang. In einigen Ausführungsformen wird der Lesevorgang über einen dedizierten Bus empfangen. In anderen Ausführungsformen wird der Lesevorgang an Pin-Eingängen einer dedizierten Speichersteuerung empfangen. In einer Ausführungsform wird der Lesevorgang durch Firmware in der Speichersteuerung empfangen. In anderen Ausführungsformen wird der Lesevorgang durch eine dedizierte Schaltung in der Speichersteuerung empfangen.
  • In Schritt 304 liest das Verfahren Daten aus der Speichervorrichtung, wobei die Daten sowohl Benutzerdaten als auch während eines Schreibzugriffs generierte ECC-Paritätsbits beinhalten.
  • In Schritt 306 generiert das Verfahren ein ECC-Syndrom für die aus dem Speicher gelesenen Daten.
  • In einer Ausführungsform wendet das Verfahren eine Paritätsprüfmatrix auf die Speicherdaten an, um das Syndrom zu generieren. Das Syndrom umfasst eine Bitfolge, die angibt, ob Fehler aufgetreten sind. Ein Syndrom besteht nur aus Nullen, wenn keine Fehler aufgetreten sind, und beinhaltet Einsen, wenn Fehler aufgetreten sind. Im Allgemeinen verwendet das Verfahren eine Syndromtabelle, um Syndrombitfolgen Fehlerkorrekturen zuzuordnen, wodurch die Fehlerkorrektur beschleunigt wird. Die spezifischen Einzelheiten der Syndromdecodierung sind im Stand der Technik bekannt und Einzelheiten bezüglich dieser Decodierungstechniken sind hierin nicht beinhaltet.
  • In Schritt 308 speichert das Verfahren das Syndrom und die Zieladressen in einem lokalen Cache-Speicher.
  • Im Gegensatz zu vorhandenen Speichern versucht das Verfahren nicht, Fehler zu korrigieren, bevor Daten an den Host-Prozessor zurückgegeben werden (Schritt 319). Stattdessen speichert das Verfahren das Syndrom und die mit dem Syndrom verknüpften Zieladressen in einem lokalen Cache-Speicher (vorstehend erörtert) zur späteren Verwendung. In einigen Ausführungsformen kann das Verfahren Adressen mit einem Syndrom nur mit Nullen verwerfen, da dies einen erfolgreichen Lesezugriff angibt. In den veranschaulichten Ausführungsbeispielen beinhaltet der Cache nur die Speicheradressen und Syndrombits und erfordert somit keine signifikante Speicherung, da die Benutzerdaten nicht im Cache gespeichert werden.
  • In Schritt 310 gibt das Verfahren die Daten an den Prozessor zurück, der die Lesevorgang ausgegeben hat. Dies kann gemäß einer klar definierten Schnittstelle erfolgen, wie sie in der Technik bekannt ist. Bemerkenswerterweise wurde jedoch keine Fehlerkorrektur an den in Schritt 310 zurückgegebenen Daten durchgeführt, und daher können potentielle Fehler in den zurückgegebenen Daten vorhanden sein. Wie noch erörtert wird, werden diese Fehler in Schritt 110 erkannt und, falls möglich, korrigiert.
  • Wie in 1 erörtert, fährt das Verfahren damit fort, Schritt 106 (Schritte 302-310) auszuführen, bis bestimmt wird (Schritt 108), dass ECC-Vorgänge nicht länger aufgeschoben werden sollen. Bei Erreichen dieser Bestimmung führt das Verfahren die Nachaufschiebungsverarbeitungsschritte 312 und 314 für alle während Schritt 106 empfangenen Lesevorgänge aus.
  • In Schritt 312 untersucht das Verfahren alle im Cache vorhandenen Syndrome.
  • Wie vorstehend beschrieben, speichert das Verfahren in einigen Ausführungsformen nur Syndrome für gelesene Daten, die einen oder mehrere Fehler beinhalten. In alternativen Ausführungsformen beinhaltet der Cache jedoch Syndrome für Daten, die keine Fehler beinhalten. In jedem Fall identifiziert das Verfahren alle Syndrome im Cache, die das Vorhandensein eines Fehlers angeben.
  • Als Teil von Schritt 312 ruft das Verfahren die Speicheradressen ab, die mit den Syndromen verknüpft sind, die einen Fehler darstellen. Das Verfahren ruft dann auf Grundlage dieser Adressen die Benutzerdaten und ECC-Daten aus den Speichervorrichtungen ab.
  • In Schritt 314 erkennt und korrigiert (wenn möglich) das Verfahren die Fehler unter Verwendung der Syndrome im Cache.
  • Die im Cache gespeicherten Syndrome können mit einer Paritätsprüfmatrix verglichen werden, die verwendet wird, um die aus dem Speicher gelesenen Daten zu generieren. Durch Vergleichen der Syndrome mit der Paritätsprüfmatrix identifiziert das Verfahren ein oder mehrere Bits, die Fehler in den im Speicher gespeicherten Daten enthalten.
  • In einigen Ausführungsformen berechnet das Verfahren ferner ein zweites Syndrom unter Verwendung der vom Speicher zurückgegebenen Daten. Das Verfahren vergleicht dann das zweite Syndrom mit dem im Cache gespeicherten Syndrom. Stimmen die Syndrome nicht überein, markiert das Verfahren das Leseergebnis als Fehler.
  • In Schritt 316 alarmiert das Verfahren die empfangende Vorrichtung bei Erkennen eines Fehlers bei einem aufgeschobenen Lesevorgang.
  • In einer Ausführungsform überträgt das Verfahren ein Signal, das einen Lesefehler angibt, auf einer dedizierten Unterbrechungsleitung. Dieses Signal bewirkt, dass der empfangende Prozessor Vorgänge anhält und die Unterbrechung bearbeitet, um die fehlerkorrigierten Daten abzurufen, die mit der Zieladresse der fehlerenthaltenden Daten verknüpft sind.
  • In einer weiteren Ausführungsform zeichnet das Verfahren die Adressen von Lesezugriffen, die Fehler enthalten, in einem speziellen Register (oder einer Registerdatei) auf. In dieser Ausführungsform fragt der Prozessor (oder ein anderer Host) periodisch das Spezialregister ab, wenn sich der Speichersteuerung nicht in einem Aufschiebemodus befindet, um Lesefehler zu erkennen.
  • 4 ist ein Blockdiagramm, das ein Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • Wie in 4 veranschaulicht, beinhaltet ein Computersystem (400) einen Prozessor (402), der über einen Bus (404) kommunikativ an ein Speichersystem (406) gekoppelt ist. Das Speichersystem (406) umfasst eine Steuerung (410), die über einen Bus/eine Schnittstelle (412) kommunikativ an eine oder mehrere Speicherbanken (408A-N) gekoppelt ist. Wie veranschaulicht, beinhaltet die Steuerung (410) einen lokalen Cache (414), Firmware (416), Fehlerbehandlungsmodule (418) und ein ECC-Modul (420).
  • In der veranschaulichten Ausführungsform kann der Prozessor (402) jede Art von Rechenprozessor umfassen, wie beispielsweise eine Zentraleinheit, eine Grafikverarbeitungseinheit oder eine andere Art von Rechenvorrichtung für allgemeine oder spezielle Zwecke. Der Prozessor (402) beinhaltet einen oder mehrere Ausgangsanschlüsse, die die Übertragung von Adress-, Benutzer- und Steuerdaten zwischen dem Prozessor (402) und dem Speichersystem (406) ermöglichen. In der veranschaulichten Ausführungsform wird diese Kommunikation über den Bus (404) durchgeführt. In einer Ausführungsform umfasst der Bus (404) einen Eingabe-/Ausgabe-(E/A)-Bus oder einen ähnlichen Bustyp.
  • Das Speichersystem (406) ist verantwortlich für die Verwaltung einer oder mehrerer Speicherbanken (408A-4087V). In einer Ausführungsform umfassen die Banken (408A-4087V) DRAM - Banken, zum Beispiel auf einem Dual Inline Memory Module (DIMM). In anderen Ausführungsformen umfassen die Banken (408A-4087V) NAND- Flash-Chips oder andere Konfigurationen von nichtflüchtigem Speicher.
  • Die Banken (408A-4087V) werden durch die Steuerung (410) verwaltet. In einigen Ausführungsformen umfasst der Steuerung (410) eine Rechenvorrichtung, die konfiguriert ist, um den Zugriff auf die und von Speicherbänken (408A-408N) zu vermitteln. In einer Ausführungsform umfasst die Steuerung (410) eine ASIC oder eine andere Schaltung, die auf einer Leiterplatte installiert ist, die die Banken (408A-408N) aufnimmt. In einigen Ausführungsformen kann die Steuerung (410) physisch von den Banken (408A-408N) getrennt sein. Die Steuerung (410) kommuniziert mit den Banken (408A-408N) über die Schnittstelle (412). In einigen Ausführungsformen umfasst diese Schnittstelle (412) eine physisch verdrahtete Schnittstelle (z. B. mit Leiterbahn). In anderen Ausführungsformen umfasst die Schnittstelle (412) einen Standardbus für die Kommunikation mit den Banken (408A-408N).
  • Die Steuerung (410) umfasst verschiedene Module (414-420). In einer Ausführungsform umfassen die verschiedenen Module (414-420) verschiedene physisch unterschiedliche Module oder Schaltungen. In anderen Ausführungsformen können die Module (414-420) vollständig (oder teilweise) als Software oder Firmware umgesetzt sein.
  • Wie veranschaulicht, umfasst die Firmware (416) den Kern der Steuerung und verwaltet alle Vorgänge der Steuerung. Somit vermittelt die Firmware (416) den gesamten Zugriff auf die Banken (408A-408N). Während des Nichtaufschiebebetriebs empfängt die Firmware (416) Schreibvorgänge und leitet die Daten an das ECC-Modul (420) weiter. Das ECC-Modul (420) generiert Paritätsbits für die Schreibdaten und die Firmware (416) schreibt die codierten Daten in die Banken (408A-408N). In ähnlicher Weise ruft die Firmware (416) während Lesevorgängen Daten und Paritätsbits aus den Banken (408A-408N) ab und führt Fehlerprüfungen/-korrekturen der Daten durch, indem die abgerufenen Daten an den ECC (420) weitergeleitet und das fehlerkorrigierte Codewort von dem ECC (420) empfangen wird.
  • Während des Aufschiebebetriebs umgeht die Firmware (416) das ECC-Modul (420) beim Zugriff auf die Banken (408A-408N). Während der Schreibzugriffe schreibt die Firmware (416) direkt Benutzerdaten in die Speicherbanken (408A-408N), während die Paritätsbits unter Verwendung des ECC (420) bandextern generiert werden. Die Firmware (416) schreibt dann die Paritätsbits in den Cache (414) und ordnet die Adresse des Schreibzugriffs den Paritätsbits zu. Der Cache (414) umfasst eine Speichervorrichtung mit niedriger Latenz, wie etwa einen SDRAM-Chip oder einen ähnlichen Speichermechanismus. Während der Lesevorgänge ruft die Firmware (416) die Daten aus den Banken (408A-4087V) ab und gibt die Daten über den Bus (404) an den Prozessor (402) zurück. Gleichzeitig leitet die Firmware (416) die gelesenen Daten an den ECC (420) weiter, der ein Syndrom zurückgibt. Die Firmware (416) speichert dieses Syndrom (und die zugehörige Adresse) im Cache (414).
  • Nach Verlassen des Aufschiebemodus schreibt die Firmware (416) die im Cache (414) gespeicherten Paritätsdaten für jeden Schreibvorgang in den Speicherbanken (408A-408N). Für Lesevorgänge liest das Verfahren die Daten erneut aus den Banken (408A-408N), berechnet das Syndrom erneut und vergleicht die zwei Syndrome (einschließlich des einen im Cache (414) gespeicherten), um zu bestimmen, ob ein Lesefehler aufgetreten ist. Wenn in beiden Szenarien ein Fehler auftritt, leitet die Firmware (416) die Adresse an den Fehlerbehandlungscode (418) weiter, der eine Unterbrechung an dem Prozessor (402) melden oder den Fehler in einem speziellen Register (nicht veranschaulicht) speichern kann. Zusätzlich zu dem Vorhergehenden ist die Firmware (416) konfiguriert, um den Status des Speichersystems (406) zu überwachen, um zu bestimmen, wann das Speichersystem (406) in den Aufschiebemodus eintreten soll.
  • Dieser und andere Vorgänge, die durch die Steuerung (410) durchgeführt werden, werden in den 1 und 3 ausführlicher beschrieben. Der Vollständigkeit halber ist die Steuerung (410) so konfiguriert, dass sie beliebige und alle zuvor erörterten, aber in Verbindung mit 4 nicht erneut dargelegten Vorgänge durchführt.
  • Die vorliegende Offenbarung wurde im Folgenden unter Bezugnahme auf die beigefügten Zeichnungen, die einen Teil hiervon bilden und die zur Veranschaulichung bestimmte beispielhafte Ausführungsformen zeigen, ausführlicher beschrieben. Der Gegenstand kann jedoch in einer Vielzahl unterschiedlicher Formen verkörpert sein, und daher soll der abgedeckte oder beanspruchte Gegenstand so ausgelegt werden, dass er nicht auf irgendwelche hierin dargelegten beispielhaften Ausführungsformen beschränkt ist; beispielhafte Ausführungsformen dienen lediglich der Veranschaulichung. Ebenso ist ein einigermaßen breiter Anwendungsbereich für beanspruchte oder abgedeckte Gegenstände vorgesehen. Unter anderem kann der Gegenstand als Verfahren, Vorrichtungen, Komponenten oder Systeme verkörpert sein. Dementsprechend können Ausführungsformen beispielsweise die Form von Hardware, Software, Firmware oder einer beliebigen Kombination davon (außer Software an sich) annehmen. Die folgende detaillierte Beschreibung ist deshalb nicht in einem beschränkenden Sinn aufzufassen.
  • In der gesamten Patentschrift und den Ansprüchen können Begriffe nuancierte Bedeutungen haben, die im Kontext vorgeschlagen oder impliziert werden und über eine explizit angegebene Bedeutung hinausgehen. Ebenso bezieht sich der Ausdruck „in einer Ausführungsform“, wie er hierin verwendet wird, nicht notwendigerweise auf dieselbe Ausführungsform, und der Ausdruck „in einer anderen Ausführungsform“, wie er hierin verwendet wird, bezieht sich nicht notwendigerweise auf eine andere Ausführungsform. Es ist beispielsweise beabsichtigt, dass der beanspruchte Gegenstand Kombinationen von beispielhaften Ausführungsformen ganz oder teilweise umfasst.
  • Im Allgemeinen kann die Terminologie zumindest teilweise aus der Verwendung im Kontext verstanden werden. Beispielsweise können Begriffe wie „und“, „oder“ oder „und/oder“, wie sie hierin verwendet werden, eine Vielzahl von Bedeutungen beinhalten, die zumindest teilweise von dem Kontext abhängen können, in dem derartige Begriffe verwendet werden. In der Regel bedeutet „oder“, wenn es zum Zuordnen einer Liste wie A, B oder C verwendet wird, A, B und C, was hier im einschließenden Sinne verwendet wird, sowie A, B oder C, was hier im ausschließenden Sinn verwendet wird. Zusätzlich kann der Begriff „eine/s/r oder mehrere“, wie er hierin verwendet wird, zumindest teilweise abhängig vom Kontext verwendet werden, um ein Merkmal, eine Struktur oder eine Eigenschaft in einem singulären Sinne zu beschreiben, oder kann dazu verwendet werden, Kombinationen von Merkmalen, Strukturen oder Eigenschaften im Plural zu beschreiben. In ähnlicher Weise können Begriffe wie „ein“, „eine“ oder „der/die/das“ wiederum so verstanden werden, dass sie eine singuläre Verwendung oder eine pluralistische Verwendung vermitteln, was zumindest teilweise vom Kontext abhängig ist. Darüber hinaus kann der Begriff „auf Grundlage von“ so verstanden werden, dass er nicht unbedingt einen ausschließlichen Satz von Faktoren vermitteln soll, sondern stattdessen die Existenz zusätzlicher Faktoren ermöglichen kann, die wiederum nicht unbedingt ausdrücklich beschrieben werden, was zumindest teilweise vom Kontext abhängig ist.
  • Die vorliegende Offenbarung wurde unter Bezugnahme auf Blockdiagramme und operativer Veranschaulichungen von Verfahren und Vorrichtungen beschrieben. Es versteht sich, dass jeder Block der Blockdiagramme oder Betriebsveranschaulichungen und Kombinationen von Blöcken in den Blockdiagrammen oder Betriebsveranschaulichungen durch Computerprogrammanweisungen analoge oder digitale Hardware- und Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Universalprozessor, einem Spezialcomputer, einer ASIC oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, die Funktionen/Handlungen, die in den Blockdiagrammen oder dem Betriebsblock oder den Betriebsblöcken angegeben sind, umsetzen. In einigen alternativen Umsetzungen können die in den Blöcken angegebenen Funktionen/Handlungen außerhalb der in den Betriebsveranschaulichungen angegebenen Reihenfolge auftreten. Beispielsweise können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter abhängig von der jeweiligen Funktion in der umgekehrten Reihenfolge ausgeführt werden.
  • Für die Zwecke dieser Offenbarung speichert ein computerlesbares Medium (oder ein computerlesbares Speichermedium/computerlesbare Speichermedien) Computerdaten, wobei die Daten Computerprogrammcode (oder computerausführbare Anweisungen) beinhalten können, die von einem Computer in maschinenlesbarer Form ausgeführt werden können. Beispielsweise und nicht einschränkend kann ein computerlesbares Medium computerlesbare Speichermedien zur materiellen oder festen Speicherung von Daten oder Kommunikationsmedien zur vorübergehenden Interpretation von codehaltigen Signalen umfassen. Computerlesbare Speichermedien, wie hierin verwendet, beziehen sich auf physischen und materiellen Speicher (im Gegensatz zu Signalen) und beinhalten unter anderem flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien, die in jedem beliebigen Verfahren oder jeder beliebigen Technologie zum materiellen Speichern von Informationen wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten umgesetzt sind. Computerlesbare Speichermedien beinhalten unter anderem RAM, ROM, EPROM, EEPROM, Flash-Speicher oder andere Solid-State-Speichertechnologie, CD-ROM, DVD oder einen anderen optischen Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes physisches oder materielles Medium, das zum materiellen Speichern der gewünschten Informationen oder Daten oder Anweisungen verwendet werden kann und auf das durch einen Computer oder Prozessor zugegriffen werden kann.
  • 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 16/353962 [0001]

Claims (21)

  1. Verfahren, das Folgendes umfasst: Starten eines Aufschiebezeitraums eines Betriebs eines Speichersystems als Reaktion auf das Erkennen der Erfüllung einer Bedingung; Empfangen eines Vorgangs während des Aufschiebezeitraums, wobei der Vorgang einen Lese- oder Schreibvorgang umfasst, der auf eine oder mehrere Speicherbanken des Speichersystems zugreift; Aufschieben von Vorgängen zur Fehlercodekorrektur (ECC) für den Vorgang; Ausführen des Vorgangs; Erkennen eines Endes des Aufschiebezeitraums des Betriebs; und Ausführen der ECC-Vorgänge nach dem Ende des Aufschiebezeitraums.
  2. Verfahren nach Anspruch 1, wobei das Erkennen der Erfüllung der Bedingung ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Starten des Aufschiebezeitraums von einem Prozessor; oder eine Datenbusauslastung über einem vorbestimmten Schwellenwert.
  3. Verfahren nach Anspruch 1, wobei das Erkennen des Endes des Aufschiebezeitraums ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Stoppen des Aufschiebezeitraums von einem Prozessor; eine Datenbusauslastung unter einem vorbestimmten Schwellenwert; oder einen vollen Cache-Speicher in einer Steuerung des Speichersystems.
  4. Verfahren nach Anspruch 1, wobei der Vorgang einen Schreibvorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren von ECC-Paritätsbits auf Grundlage der Daten; und Speichern der ECC-Paritätsbits und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  5. Verfahren nach Anspruch 4, wobei das Ausführen der ECC-Vorgänge ein Schreiben der ECC-Paritätsbits in die Speicherbank unter Verwendung der Adresse umfasst.
  6. Verfahren nach Anspruch 1, wobei der Vorgang einen Lesevorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren eines ECC-Syndroms auf Grundlage der Daten; und Speichern des ECC-Syndroms und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  7. Verfahren nach Anspruch 5, wobei das Ausführen der ECC-Vorgänge Folgendes umfasst: Erkennen einer Nichtübereinstimmung unter Verwendung des ECC-Syndroms; und als Reaktion auf das Erkennen der Nichtübereinstimmung, Warnen eines Prozessors, dass ein Fehler beim Ausführen des Lesevorgangs aufgetreten ist.
  8. Nichttransitorisches computerlesbares Speichermedium zum materiellen Speichern von Computerprogrammanweisungen, die durch einen Computerprozessor ausgeführt werden können, wobei die Computerprogrammanweisungen die folgenden Schritte definieren: Starten eines Aufschiebezeitraums eines Betriebs eines Speichersystems als Reaktion auf das Erkennen der Erfüllung einer Bedingung; Empfangen eines Vorgangs während der Aufschiebezeitraums, wobei der Vorgang einen Lese- oder Schreibvorgang umfasst, der auf eine oder mehrere Speicherbanken des Speichersystems zugreift; Aufschieben von Vorgängen zur Fehlercodekorrektur (ECC) für den Vorgang; Ausführen des Vorgangs; Erkennen eines Endes des Aufschiebezeitraums des Betriebs; und Ausführen der ECC-Vorgänge nach dem Ende des Aufschiebezeitraums.
  9. Computerlesbares Speichermedium nach Anspruch 8, wobei das Erkennen der Erfüllung der Bedingung ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Starten des Aufschiebezeitraums von einem Prozessor; oder eine Datenbusauslastung über einem vorbestimmten Schwellenwert.
  10. Computerlesbares Speichermedium nach Anspruch 8, wobei das Erkennen des Endes des Aufschiebezeitraums ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Stoppen des Aufschiebezeitraums von einem Prozessor; eine Datenbusauslastung unter einem vorbestimmten Schwellenwert; oder einen vollen Cache-Speicher in einer Steuerung des Speichersystems.
  11. Computerlesbares Speichermedium nach Anspruch 8, wobei der Vorgang einen Schreibvorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren von ECC-Paritätsbits auf Grundlage der Daten; und Speichern der ECC-Paritätsbits und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  12. Computerlesbares Speichermedium nach Anspruch 11, wobei das Ausführen der ECC-Vorgänge ein Schreiben der ECC-Paritätsbits in die Speicherbank unter Verwendung der Adresse umfasst.
  13. Computerlesbares Speichermedium nach Anspruch 8, wobei der Vorgang einen Lesevorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren eines ECC-Syndroms auf Grundlage der Daten; und Speichern des ECC-Syndroms und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  14. Computerlesbares Speichermedium nach Anspruch 13, wobei das Ausführen der ECC-Vorgänge Folgendes umfasst: Erkennen einer Nichtübereinstimmung unter Verwendung des ECC-Syndroms; und als Reaktion auf das Erkennen der Nichtübereinstimmung, Warnen eines Prozessors, dass ein Fehler beim Ausführen des Lesevorgangs aufgetreten ist.
  15. Speichersystem, das Folgendes umfasst: eine Vielzahl von Speicherbanken; einen Bus, der mit den Speicherbanken verbunden ist; und eine Steuerung, die mit dem Bus verbunden ist, wobei die Steuerung konfiguriert ist, um die folgenden Vorgänge durchzuführen: Starten eines Aufschiebezeitraums eines Betriebs des Speichersystems als Reaktion auf das Erkennen der Erfüllung einer Bedingung; Empfangen eines Vorgangs während der Aufschiebezeitraums, wobei der Vorgang einen Lese- oder Schreibvorgang umfasst, der auf die Speicherbanken des Speichersystems zugreift; Aufschieben von Vorgängen zur Fehlercodekorrektur (ECC) für den Vorgang; Ausführen des Vorgangs; Erkennen eines Endes des Aufschiebezeitraums des Betriebs; und Ausführen der ECC-Vorgänge nach dem Ende des Aufschiebezeitraums.
  16. Speichersystem nach Anspruch 15, wobei das Erkennen der Erfüllung der Bedingung ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Starten des Aufschiebezeitraums von einem Prozessor; oder eine Datennutzung des Busses über einem vorbestimmten Schwellenwert.
  17. Speichersystem nach Anspruch 15, wobei das Erkennen des Endes des Aufschiebezeitraums ein Erkennen eines von Folgenden umfasst: einen Empfang eines Befehls zum Stoppen des Aufschiebezeitraums von einem Prozessor; eine Datennutzung des Busses unter einem vorbestimmten Schwellenwert; oder einen vollen Cache-Speicher in der Steuerung.
  18. Speichersystem nach Anspruch 15, wobei der Vorgang einen Schreibvorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren von ECC-Paritätsbits auf Grundlage der Daten; und Speichern der ECC-Paritätsbits und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  19. Speichersystem nach Anspruch 18, wobei das Ausführen der ECC-Vorgänge ein Schreiben der ECC-Paritätsbits in die Speicherbank unter Verwendung der Adresse umfasst.
  20. Speichersystem nach Anspruch 15, wobei der Vorgang einen Lesevorgang umfasst und das Aufschieben der ECC-Vorgänge für den Vorgang Folgendes umfasst: Übertragen von Daten zwischen einer Steuerung und einer Speicherbank des Speichersystems, wobei die Daten aus Benutzerdaten bestehen; Generieren eines ECC-Syndroms auf Grundlage der Daten; und Speichern des ECC-Syndroms und einer mit den Daten verknüpften Adresse in einem lokalen Cache.
  21. Speichersystem nach Anspruch 20, wobei das Ausführen der ECC-Vorgänge Folgendes umfasst: Erkennen einer Nichtübereinstimmung unter Verwendung des ECC-Syndroms; und als Reaktion auf das Erkennen der Nichtübereinstimmung, Warnen eines Prozessors, dass ein Fehler beim Ausführen des Lesevorgangs aufgetreten ist.
DE112020001219.0T 2019-03-14 2020-03-03 Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung Pending DE112020001219T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/353,962 2019-03-14
US16/353,962 US10956262B2 (en) 2019-03-14 2019-03-14 Deferred error code correction with improved effective data bandwidth performance
PCT/US2020/020775 WO2020185448A1 (en) 2019-03-14 2020-03-03 Deferred error code correction with improved effective data bandwidth performance

Publications (1)

Publication Number Publication Date
DE112020001219T5 true DE112020001219T5 (de) 2021-12-23

Family

ID=72422564

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020001219.0T Pending DE112020001219T5 (de) 2019-03-14 2020-03-03 Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung

Country Status (4)

Country Link
US (2) US10956262B2 (de)
CN (1) CN113574508A (de)
DE (1) DE112020001219T5 (de)
WO (1) WO2020185448A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093323B2 (en) * 2019-04-15 2021-08-17 Nvidia Corporation Performant inline ECC architecture for DRAM controller
US11726911B2 (en) * 2021-01-25 2023-08-15 Western Digital Technologies, Inc. NVMe persistent memory region quick copy
US20230236931A1 (en) * 2022-01-24 2023-07-27 Micron Technology, Inc. Instant write scheme with delayed parity/raid
US11847022B2 (en) * 2022-03-07 2023-12-19 International Business Machines Corporation Computation and placement of error correcting codes (ECC) in a computing system data cache
US20230317195A1 (en) * 2022-04-04 2023-10-05 Micron Technology, Inc. Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4373615B2 (ja) * 2001-01-25 2009-11-25 富士通マイクロエレクトロニクス株式会社 初期不良ブロックのマーキング方法
JP3892832B2 (ja) * 2003-08-11 2007-03-14 株式会社東芝 半導体記憶装置
US7644341B2 (en) 2004-12-30 2010-01-05 Taiwan Semiconductor Manufacturing Co., Ltd. Method and system for correcting soft errors in memory circuit
US7624329B2 (en) * 2006-08-30 2009-11-24 Freescale Semiconductor, Inc. Programming a memory device having error correction logic
US8281188B2 (en) * 2010-08-05 2012-10-02 Miller Gary L Data processing system with peripheral configuration information error detection
US8583987B2 (en) 2010-11-16 2013-11-12 Micron Technology, Inc. Method and apparatus to perform concurrent read and write memory operations
TWI521529B (zh) 2014-04-15 2016-02-11 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10303560B2 (en) * 2017-02-14 2019-05-28 Dell Products L.P. Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss
KR20180127707A (ko) 2017-05-22 2018-11-30 에스케이하이닉스 주식회사 메모리 모듈 및 이의 동작 방법
KR102453437B1 (ko) * 2018-01-25 2022-10-12 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법

Also Published As

Publication number Publication date
CN113574508A (zh) 2021-10-29
WO2020185448A1 (en) 2020-09-17
US20210191812A1 (en) 2021-06-24
US20200293396A1 (en) 2020-09-17
US10956262B2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
DE112020001219T5 (de) Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE69910320T2 (de) Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102019111132A1 (de) Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102012214324A1 (de) Datenüberprüfung mithilfe eines Prüfsummen-Sidefile
CN109416666A (zh) 具有压缩数据和标签的缓存
DE112016000726T5 (de) Transparente hardwareunterstützte speicherdekompression
DE102016108733B4 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102021115858A1 (de) Tlc-datenprogrammierung mit hybrid-parität
DE112017007690T5 (de) Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102019112751A1 (de) Selektives hintergrund-datenauffrischen für ssd
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode
DE102018124836A1 (de) Neuartiger speicherbaustein

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: TER MEER STEINMEISTER & PARTNER PATENTANWAELTE, DE