DE112015003569T5 - Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern - Google Patents

Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern Download PDF

Info

Publication number
DE112015003569T5
DE112015003569T5 DE112015003569.9T DE112015003569T DE112015003569T5 DE 112015003569 T5 DE112015003569 T5 DE 112015003569T5 DE 112015003569 T DE112015003569 T DE 112015003569T DE 112015003569 T5 DE112015003569 T5 DE 112015003569T5
Authority
DE
Germany
Prior art keywords
data
nand
page
page data
control unit
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.)
Granted
Application number
DE112015003569.9T
Other languages
English (en)
Other versions
DE112015003569B4 (de
Inventor
David J. Pelster
Aliasgar S. Madraswala
Yogesh B. Wakchaure
Eric L. HOFFMAN
Xin Guo
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.)
SK Hynix NAND Product Solutions Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112015003569T5 publication Critical patent/DE112015003569T5/de
Application granted granted Critical
Publication of DE112015003569B4 publication Critical patent/DE112015003569B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/1072Adding 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 multilevel memories
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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/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/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/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • 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/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output
    • 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/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices
    • 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/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
    • 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

Abstract

Seitendaten (z. B. Daten der höheren Seite), die von einem Host empfangen werden, werden in einem Übertragungspuffer einer Steuereinheit des Festkörperlaufwerks gespeichert. Weitere Seitendaten (z. B. Daten einer tieferen Seite) werden aus einem nichtflüchtigen Datenspeicher (z. B. einem NAND-Datenspeicher) gelesen, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten und die Seitendaten werden in den nichtflüchtigen Datenspeicher geschrieben. In zusätzlichen Ausführungsformen lädt eine Steuereinheit Seitendaten (z. B. Daten einer höheren Seite), die von dem Host empfangen werden, in einen oder mehrere NAND-Seitenpuffer. Die Steuereinheit liest weitere Seitendaten (z. B. Daten der tieferen Seite) aus dem NAND-Datenspeicher, um sie in einem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten, die in dem Übertragungspuffer gespeichert sind, werden in den einen oder die mehreren NAND-Seitenpuffer geladen.

Description

  • HINTERGRUND
  • Ein Festkörperlaufwerk (SSD) ist eine Datenspeichervorrichtung, die Anordnungen integrierter Schaltungen als Datenspeicher verwendet, um Daten dauerhaft zu speichern. SSDs weisen keine beweglichen mechanischen Komponenten auf, was SSDs von herkömmlichen elektromechanischen Magnetplatten wie z. B. Festplattenlaufwerken (HDDs) oder Floppy-Disks, die drehende Scheiben und bewegliche Lese/Schreibköpfe enthalten, unterscheidet. Im Vergleich zu elektromechanischen Platten sind SSDs typischerweise widerstandsfähiger gegen physikalische Stöße, laufen leise und weisen eine niedrige Zugriffszeit und weniger Latenz auf.
  • Viele Typen von SSDs verwenden NAND-basierten Flash-Datenspeicher, der Daten ohne Stromversorgung hält und ein Typ nichtflüchtiger Speichertechnologie ist. Ein wichtiges Ziel von NAND-Datenspeicherentwicklung war es, die Kosten pro Bit zu reduzieren und die maximale Chip-Kapazität zu erhöhen, so dass Flash-Datenspeicher mit magnetischen Speichervorrichtungen wie Festplatten konkurrieren kann.
  • In einem Einpegelzellen-NAND (SLC-NAND) kann jede Zelle in einem von zwei Zuständen existieren und ein Informationsbit pro Zelle speichern. Ein Mehrpegelzellen-NAND (MLC-NAND) ist ein Festkörper-Flash-Datenspeicher, der mehrere Pegel pro Zelle verwendet, um zu ermöglichen, dass mehr Bits unter Verwendung derselben Anzahl von Transistoren gespeichert sein können. Einige MLC-NANDs weisen vier mögliche Zustände pro Zelle auf, so dass sie zwei Informationsbits pro Zelle speichern können.
  • TLC-NAND (Dreipegelzellen-NAND) ist ein Typ von Mehrpegelfestkörper-NAND, der drei Informationsbits pro Zelle des Flash-Mediums speichern kann. In speziellen Situationen kann es wünschenswert sein, SSDs mit höherer Speicherkapazität mit TLC-NANDs herzustellen, im Vergleich zu NAND-Flash-Datenspeicher, der ein oder zwei Informationsbits pro Zelle speichert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Jetzt Bezug nehmend auf die Zeichnungen, in denen gleiche Bezugszeichen durchgehend entsprechende Teile repräsentieren:
  • 1 stellt ein Blockdiagramm einer Computer-Umgebung, in der ein Host Daten in eine SSD schreibt, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 2 stellt ein weiteres Blockdiagramm, das zeigt, wie Daten einer tieferen Seite und dann Daten einer höheren Seite in die SSD geschrieben werden, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 3 stellt einen Ablaufplan, der erste beispielhafte Operationen zum Schreiben von Daten in eine SSD zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 4 stellt ein Blockdiagramm, das die Größenanforderungen eines Übertragungspuffers, um die in 3 gezeigten ersten beispielhaften Operationen zu implementieren, zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar.
  • 5 stellt einen Ablaufplan, der zweite beispielhafte Operationen zum Schreiben von Daten in eine SSD zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 6 stellt ein Blockdiagramm, das die Größenanforderungen eines Übertragungspuffers, um die in 5 gezeigten zweiten beispielhaften Operationen zu implementieren, zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 7 stellt einen Ablaufplan, der dritte beispielhafte Operationen zum Schreiben von Daten in eine SSD zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar;
  • 8 stellt einen Ablaufplan, der vierte beispielhafte Operationen zum Schreiben von Daten in eine SSD zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar; und
  • 9 stellt ein Blockdiagramm einer Computer-Vorrichtung in Übereinstimmung mit speziellen Ausführungsformen dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Teil davon bilden und die verschiedene Ausführungsformen darstellen. Es ist zu verstehen, dass andere Ausführungsformen benutzt werden können und strukturelle und die Operationen betreffende Änderungen vorgenommen werden können.
  • Fehlplatzierungsfehler sind in MLC-NANDs ein Hauptproblem. Dieses Thema ist insbesondere schlechter für TLC-NAND. In TLC-NANDs werden drei Datenbits pro Zelle programmiert. Die ersten Bits, die gespeichert sind, werden als die Daten der tieferen Seite bezeichnet. Die zweiten Bits, die gespeichert sind, werden als die Daten der höheren Seite bezeichnet, und dritte Bits, die gespeichert sind, werden als die Daten der besonderen Seite bezeichnet. Als ein Ergebnis kann TLC nach dem Programmieren der Daten der besonderen Seite 8 Zustände aufweisen. Die Daten der tieferen Seite, die Daten der höheren Seite und die Daten der besonderen Seite können als Seitendaten bezeichnet sein.
  • In TLC-NAND können Daten durch zuerst Schreiben von Daten der tieferen Seite durch Programmieren der Daten der tieferen Seite in den TLC-NAND und dann Schreiben der Daten der höheren Seite durch Programmieren der Daten der höheren Seite in den TLC-NAND geschrieben werden. Zum Schreiben der Daten der höheren Seite müssen jedoch die bereits geschriebenen Daten der tieferen Seite gelesen werden, bevor die Daten der höheren Seite in den TLC-NAND programmiert werden.
  • In TLC-NANDs können Lesefehler auftreten, wenn bereits geschriebene Daten der tieferen Seite gelesen werden. Da TLC-NANDs (oder im Übrigen andere NANDs) keine internen Mechanismen zum Überprüfen und Korrigieren von Fehlern (ECC-Mechanismen) aufweisen, können irgendwelche Fehler beim Lesen der Daten der tieferen Seite zu Fehlplatzierungsfehlern beim Programmieren der Daten der höheren Seite in den TLC-NAND führen.
  • Da TLC-NANDs keine internen Mechanismen zum Überprüfen und Korrigieren von Fehlern aufweisen, stellen spezielle Ausführungsformen Mechanismen zum Verwenden eines Übertragungspuffers einer Steuereinheit eines Festkörperlaufwerks bereit, um Überprüfen und Korrektur von Fehlern für Daten tieferer Seiten, die bereits in den TLC-NAND geschrieben sind und aus dem TLC-NAND gelesen werden, vor dem Schreiben der Daten der höheren Seite auszuführen, um Fehlplatzierungsfehler zu reduzieren. Da der Übertragungspuffer aus einem flüchtigen Datenspeichertyp besteht, wie z. B. statischem Direktzugriffsspeicher (SRAM), ist der Speicherplatz des Übertragungspuffers relativ sehr klein im Vergleich zu dem Speicherplatz der TLC-NANDs. Der Übertragungspuffer kann aus irgendeinem anderen Typ eines flüchtigen Datenspeichers bestehen, der von SRAM verschieden ist, solange der flüchtige Datenspeicher sehr schnell und als ein Ergebnis relativ teuer ist. Zusätzlich sind Übertragungspuffer mit großem Speicherplatz schwierig zu implementieren, da Reservestrommechanismen zum Verhindern von Stromausfall, der zu Datenverlust in dem Übertragungspuffer führen kann, für Übertragungspuffer mit großem Speicherplatz aufwändig zu konstruieren sind. Deshalb sollte die Größe des Übertragungspuffers relativ klein sein, und zusätzliche Ausführungsformen stellen Mechanismen zum Reduzieren der Größe des Übertragungspuffers der Steuereinheit des Festkörperlaufwerks durch Verwenden eines oder mehrerer NAND-Seitenpuffer bereit, um die Daten der höheren Seite zu speichern, während die Daten der tiefere Seite in dem Übertragungspuffer gespeichert sind.
  • 1 stellt ein Blockdiagramm einer Computer-Umgebung 100, in der ein Host 102 Daten in eine SSD 104 schreibt, in Übereinstimmung mit speziellen Ausführungsformen dar. Die SSD 102 kann eine Steuereinheit 106 und einen NAND-Komplex 108 umfassen, wobei in speziellen Ausführungsformen der NAND-Komplex 108 ein TLC-NAND sein kann. In anderen Ausführungsformen kann die SSD 104 eine Steuereinheit umfassen, die spezielle andere Typen nichtflüchtigen Datenspeichers steuert, wie z. B. NOR-Datenspeicher oder einen anderen geeigneten nichtflüchtigen Datenspeicher. Es wird darauf hingewiesen, dass spezielle Ausführungsformen in eine SSD implementiert sein können, die aus nichtflüchtigem Datenspeicher hergestellt ist, der NAND-Datenspeicher, NOR-Datenspeicher oder irgendeinen anderen geeigneten nichtflüchtigen Datenspeicher enthält. In speziellen Ausführungsformen kann die SSD 104 imstande sein, mehrere Terrabytes Daten oder mehr zu speichern, und mehrere TLC-NANDs 108, von denen jeder mehrere Gigabytes Daten oder mehr speichert, können in der SSD 104 gefunden werden.
  • In speziellen Ausführungsformen kann die Steuereinheit 106 über eine anwendungsspezifische integrierte Schaltung (ASIC) implementiert sein. Die Steuereinheit 106 kann einen Übertragungspuffer 110 und eine ECC-Engine 112 aufweisen. Der Übertragungspuffer 110 kann ein SRAM sein, und die ECC-Engine 112 kann in Schaltungsanordnung oder Firmware implementiert sein. Obwohl der TLC-NAND in der Größenordnung von Gigabytes Speicherplatz sein kann, kann der Übertragungspuffer 110 in der Größenordnung von Kilobytes oder Megabytes Speicherplatz sein.
  • Der TLC-NAND 108 kann mehrere NAND-Seitenpuffer 114 und den NAND-Datenspeicher 116 umfassen. Die Anzahl der NAND-Seitenpuffer 114 kann etwa vier (oder mehr) sein und kann in der Größenordnung von Kilobytes Speicherplatz sein. Beispielsweise weist in speziellen Ausführungsformen jeder NAND-Seitenpuffer einen Speicherplatz von 64 Kilobytes auf.
  • In speziellen Ausführungsformen kann der Host 102 irgendeine geeignete Computervorrichtung wie z. B. einen Personalcomputer, einen Mainframe, ein Telefoniegerät, ein Smartphone, eine Speichersteuereinheit, einen Blade-Computer, einen Prozessor mit Speicher usw. umfassen. In speziellen Ausführungsformen kann der Host 102 mit der SSD 104 über einen Bus (wie z. B. eine Zusammenschaltung peripherer Komponenten (PCIe), einen seriellen Anschluss mit weiterentwickelter Technologie (SA-TA), Systemschnittstelle für seriell angeschlossene kleine Computer (SAS)) oder ein Netz wie z. B. das Internet, ein Speichernetz (SAN) oder ein lokales Netz (LAN) usw. kommunizieren.
  • In speziellen Ausführungsformen sendet der Host 102 tiefere und höhere Seiten von Daten zu der SSD 104 zum Schreiben in die TLC-NANDs 108 der SSD 104. Die Seiten (tiefere und/oder höhere) werden durch die Steuereinheit 106 der SSD 104 in dem Übertragungspuffer 110 gespeichert, und die Steuereinheit 106 kommuniziert zu dem Host 102, dass die Daten in die SSD geschrieben worden sind. Somit ist das Schreiben der Daten durch den Host 102 in die SSD 104 asynchron. Die Seiten werden in einigen wenigen Mikrosekunden in den Übertragungspuffer 110 geschrieben, da der Übertragungspuffer über SRAM implementiert ist. Das Schreiben in den NAND-Datenspeicher 116 dauert jedoch in der Größenordnung von Millisekunden und wird aus dem Übertragungspuffer 110 durch die Steuereinheit 106 später nach dem Informieren des Hosts 102, dass die Daten in die SSD 104 geschrieben worden sind, ausgeführt. Die Leistung der SSD 104 wird durch zuerst Speichern von Seiten in dem schnellen Übertragungspuffer 106 und dann Übertragen der Seiten in den relativ langsameren NAND-Datenspeicher 116 verbessert.
  • 2 stellt ein weiteres Blockdiagramm 200, das zeigt, wie Daten 202 tieferer Seiten und dann Daten 204 höherer Seiten aus dem Host 102 in die SSD 104 geschrieben werden, in Übereinstimmung mit speziellen Ausführungsformen dar. Zuerst sendet der Host 102 die Daten 202 der tieferen Seite zu der SSD 104 und sendet dann nach einem Zeitintervall 210 die Daten 204 der höheren Seite. In speziellen Ausführungsformen können die Daten sowohl der tieferen Seite als auch der höheren Seite 64 Kilobytes sein, und ungefähr 100 bis 1000 Bytes zusätzlicher Platz können für Fehlerkorrekturinformationen benötigt sein.
  • Deshalb zeigt 2 spezielle Ausführungsformen, in denen der Host 102, um Daten in die SSD 104 zu schreiben, zuerst die Daten 202 der tieferen Seite sendet und dann nach einem Zeitintervall 210 die Daten 204 der höheren Seite sendet.
  • 3 stellt einen Ablaufplan 300, der erste beispielhafte Operationen zum Schreiben von Daten in eine SSD 104 zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar. Die in 3 gezeigten Operationen können durch die Steuereinheit 106, die in der SSD 104 implementiert ist, ausgeführt werden.
  • Die Steuerung startet bei Block 302, in dem die Steuereinheit 106 die Daten 202 der tieferen Seite von dem Host 102 in dem Übertragungspuffer 110 der Steuereinheit 106 von dem Host 102 empfängt und die Daten 202 der tieferen Seite durch Programmieren des NAND-Datenspeichers 116 in den NAND-Datenspeicher 116 schreibt. Sobald die Daten 202 der tieferen Seite in den NAND-Datenspeicher 116 geschrieben worden sind, können die Daten der tieferen Seite in dem Übertragungspuffer 110 der Steuereinheit 110 überschrieben werden, da die Menge des verfügbaren Platzes in dem Übertragungspuffer 110 relativ klein ist und der verfügbare Platz benötigt wird, um zusätzliche Seiten, die durch den Host 102 gesendet werden, zu speichern.
  • Nach einer Zeitspanne empfängt die Steuereinheit 106 (bei Block 304) die Daten 204 der höheren Seite in dem Übertragungspuffer 110 der Steuereinheit 106 von dem Host 102. Die Daten 204 der höheren Seite können nicht in den NAND-Datenspeicher 116 programmiert werden, wenn die Steuereinheit 106 nicht die Daten der tieferen Seite aus dem NAND-Datenspeicher 116 liest. Deshalb liest die Steuereinheit 106 (bei Block 306) die Daten 202 der tieferen Seite aus dem NAND-Datenspeicher 116 und speichert die Daten 202 der tieferen Seite in dem Übertragungspuffer 110 der Steuereinheit 106 nach dem Durchlaufen der Daten 202 der tieferen Seite durch die ECC-Engine 112, um irgendwelche Fehler in den Daten 202 der tieferen Seite in der ECC-Engine 112 zu detektieren und zu korrigieren. Die ECC-Engine 112 ist für das Übertragen der korrigierten Daten 202 der tieferen Seite in den Übertragungspuffer 110 zuständig. Zu diesem Zeitpunkt speichert der Übertragungspuffer 110 sowohl die Daten 202 der tieferen Seite als auch die Daten 204 der höheren Seite.
  • Es wird darauf hingewiesen, dass die Daten der tieferen Seite korrekt sind, falls die Daten der tieferen Seite keine Lesefehler aufweisen. Falls die Daten der tieferen Seite nicht korrekt sind, werden die Daten der tieferen Seite in der ECC-Engine 112 korrigiert. Es wird darauf hingewiesen, dass während dieses Prozesses die Daten der tieferen Seite zuerst die ECC-Engine 112 durchlaufen, wo die Daten der tieferen Seite korrigiert werden, falls irgendwelche Fehler vorhanden sind. Danach werden die korrigierten Daten aus der ECC-Engine 112 in den Übertragungspuffer 110 übertragen.
  • Die Steuerung fährt mit Block 310 fort, in dem die Steuereinheit 106 die korrigierten Daten der tieferen Seite in den NAND-Datenspeicher 116 schreibt. Die Steuereinheit 106 schreibt dann (bei Block 312) die Daten der höheren Seite, die in dem Übertragungspuffer 110 empfangen wurden, durch Programmieren des NAND-Datenspeichers 116 in den NAND-Datenspeicher 116.
  • Deshalb stellt 3 spezielle Ausführungsformen dar, in denen ein Übertragungspuffer 110 verwendet wird, um Daten der tieferen Seite, die zur Korrektur von Lesefehlern aus dem NAND-Datenspeicher 116 gelesen werden, verwendet wird, um die Daten der höheren Seite in den NAND-Datenspeicher 116 zu programmieren.
  • 4 stellt ein Blockdiagramm 400, das die Größenanforderungen eines Übertragungspuffers 110, um die in
  • 3 gezeigten ersten beispielhaften Operationen 300 zu implementieren, zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar.
  • In 4 ist zu sehen, dass unmittelbar nach der Ausführung der in Block 306 von 3 gezeigten Operationen (d. h. nachdem die Steuereinheit 106 die Daten 202 der tieferen Seite aus dem NAND-Datenspeicher 116 in den Übertragungspuffer 110 über ECC-Fehlerkorrektur der Daten 202 der tieferen Seite liest) sowohl die Daten 202 der tieferen Seite als auch die Daten 204 der höheren Seite zur selben Zeit in dem Übertragungspuffer 110 gespeichert sind. Deshalb ist, während Fehlerkorrektur ausgeführt wird, um das Vorkommen von Fehlplatzierungsfehlern zu reduzieren, ein größerer Bedarf für Speicherplatz in dem Übertragungspuffer 110 vorhanden, da sowohl die Daten 202 der tieferen Seite als auch die Daten 204 der höheren Seite gleichzeitig in dem Übertragungspuffer 110 gespeichert sein müssen.
  • 5 stellt einen Ablaufplan 500, der zweite beispielhafte Operationen zum Schreiben von Daten in eine SSD 104 zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar. Die in 5 gezeigten Operationen können durch die Steuereinheit 106, die in der SSD 104 implementiert ist, ausgeführt werden. Die in 5 gezeigten Operationen reduzieren die in dem Übertragungspuffer 110 benötigte Speicherplatzmenge, selbst wenn Fehlplatzierungsfehler über Fehlerkorrektur der Daten 202 der tieferen Seite reduziert werden, in der Steuereinheit 106.
  • Die Steuerung startet bei Block 502, in dem die Steuereinheit 106 die Daten 202 der tieferen Seite von dem Host 102 empfängt und die Daten 202 der tieferen Seite durch Programmieren des NAND-Datenspeichers 116 in den NAND-Datenspeicher 116 schreibt. Nach dem Schreiben der Daten 202 der tieferen Seite in den NAND-Datenspeicher können die Daten 202 der tieferen Seite in dem Übertragungspuffer 110 durch andere Seiten überschrieben werden.
  • Die Steuerung fährt mit Block 504 fort, in dem die Steuereinheit 106 die Daten 204 der höheren Seite in dem Übertragungspuffer 110 der Steuereinheit 106 von dem Host 102 empfängt. Die Steuereinheit 110 lädt (bei Block 506) die Daten 204 der höheren Seite aus dem Übertragungspuffer 204 in einen oder mehrere NAND-Seitenpuffer 114. Es wird darauf hingewiesen, dass das Laden der Daten 204 der höheren Seite in die NAND-Seitenpuffer 114 sehr schnell ist (z. B. in der Größenordnung von 10 Mikrosekunden), da die NAND-Seitenpuffer 114 SRAM und keine Flash-Datenspeicherzellen sind. Die Anzahl von NAND-Seitenpuffern, die zum Laden der Daten 204 der höheren Seite benötigt werden, hängt von der Größe der Daten 204 der höheren Seite und der Größe jedes NAND-Seitenpuffers ab. In speziellen Ausführungsformen ist die Größe jedes NAND-Seitenpuffers so konstruiert, um Daten einer einzigen Seite zu halten, da alle Programm/Lesedaten durch die NAND-Seitenpuffer gehen. Es wird darauf hingewiesen, dass für die Ausführungsformen, die in dieser Offenbarung präsentiert sind, keine Änderung der Größe der NAND-Seitenpuffer existierender TLC-NANDs nötig ist.
  • Die Steuereinheit 106 liest (bei Block 508) die Daten 202 der tieferen Seite aus dem NAND-Datenspeicher 116 und speichert die Daten der tieferen Seite nach der Fehlerdetektion und Korrektur der Daten 202 der tieferen Seite über die ECC-Engine 112 in dem Übertragungspuffer 110. Es wird darauf hingewiesen, dass Leseoperationen aus dem NAND-Datenspeicher 116 ausgeführt werden können, wenn Daten (z. B. die Daten 204 der höheren Seite) in einen der NAND-Seitenpuffer 114 geladen werden. Da die Daten 204 der höheren Seite zu dieser Zeit bereits in dem einen oder den mehreren NAND-Seitenpuffern 114 sind, können die Daten 204 der höheren Seite in dem Übertragungspuffer 110 durch die Daten 202 der tieferen Seite oder andere Seiten, die zum Speichern in dem Übertragungspuffer 110 ankommen, überschrieben werden.
  • Da die Daten 202 der tieferen Seite, die aus dem NAND-Datenspeicher 116 gelesen werden, Fehler aufweisen können, bestimmt die ECC-Engine 112 der Steuereinheit 106, ob die Daten 202 der tieferen Seite korrekt sind (d. h. keine Lesefehler aufweisen), und korrigiert, falls nicht, die Daten 202 der tieferen Seite und sendet die Daten 202 der tieferen Seite zu dem Übertragungspuffer 110 (d. h. die Daten der tieferen Seite werden in der ECC-Engine 112 korrigiert, und dann werden die korrigierten Daten der tieferen Seite in den Übertragungspuffer 110 übertragen).
  • Die Steuerung fährt mit Block 512 fort, in dem die Steuereinheit 106 die Daten 202 der tieferen Seite aus dem Übertragungspuffer 110 in den einen oder die mehreren NAND-Seitenpuffer 114 lädt. Nach der Ausführung der Operationen von Block 512 sind sowohl die Daten 204 der höheren Seite als auch die Daten 202 der tieferen Seite in dem einen oder den mehreren NAND-Seitenpuffern 114. Die Steuereinheit 106 programmiert (bei Block 514) das Schreiben der Daten 204 der höheren Seite und der Daten 202 der tieferen Seite aus den NAND-Seitenpuffern 114 in den NAND-Datenspeicher 116.
  • Deshalb stellt 5 spezielle Ausführungsformen dar, in denen Speicherplatzbedarf der Übertragungspuffer 110 im Vergleich zu den in 3 gezeigten Ausführungsformen reduziert ist. Während in den in 3 gezeigten Ausführungsformen der Übertragungspuffer 110 sowohl die Daten 202 der tieferen Seite als auch die Daten 204 der höheren Seite gleichzeitig speichern muss, müssen in den in 5 gezeigten Ausführungsformen die Daten 202 der tieferen Seite und die Daten 204 der höheren Seite beide nicht zur gleichen Zeit in dem Übertragungspuffer 110 gespeichert sein.
  • 6 stellt ein Blockdiagramm 600, das die Größenanforderungen des Übertragungspuffers 110, um die in 5 gezeigten zweiten beispielhaften Operationen zu implementieren, zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar. In 6 sind der Ort der Daten 202 der tieferen Seite und der Daten 204 der höheren Seite am Ende der Ausführung der in Block 508 gezeigten Operationen gezeigt, unmittelbar nach der Fehlerkorrektur der Daten 202 der tieferen Seite und dem Speichern der Daten 202 der tieferen Seite in dem Übertragungspuffer 110. Es ist zu erkennen, dass der Übertragungspuffer 110 die Daten 202 der tieferen Seite speichert, während die Daten 204 der höheren Seite in dem einen oder den mehreren NAND-Seitenpuffern 114 gespeichert sind. Deshalb ist durch Verwenden der NAND-Seitenpuffer 114, um die Daten 204 der höheren Seite zu speichern, der Platzbedarf des Übertragungspuffers 110 reduziert im Vergleich zu den in 4 gezeigten Ausführungsformen, wo sowohl die Daten 202 der tieferen Seite als auch die Daten 204 der höheren Seite in dem Übertragungspuffer 110 gespeichert waren.
  • 7 stellt einen Ablaufplan 700, der dritte beispielhafte Operationen zum Schreiben von Daten in eine SSD 104 zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar. Die in 7 gezeigten Operationen können durch die Steuereinheit 106, die in der SSD 104 implementiert ist, ausgeführt werden.
  • Die Steuerung startet bei Block 702, in dem eine Steuereinheit 106 Daten 202 einer tieferen Seite von einem Host 102 empfängt und die Daten der tieferen Seite in den NAND-Datenspeicher 116 (oder einen anderen geeigneten nichtflüchtigen Datenspeicher wie z. B. einen NOR-Datenspeicher) schreibt. Die Steuerung fährt mit Block 704 fort, in dem Daten 204 einer höheren Seite, die von dem Host 102 empfangen werden, in dem Übertragungspuffer 106 der Steuereinheit 106 des Festkörperlaufwerks 104 gespeichert werden. Die Daten 202 der tieferen Seite werden (bei Block 706) aus dem NAND-Datenspeicher 116 gelesen, um sie nach der Korrektur über eine ECC-Engine 112 in dem Übertragungspuffer 110 zu speichern. Die korrigierten Daten der tieferen Seite und der Daten der höheren Seite werden (bei Block 712) in den NAND-Datenspeicher 116 geschrieben.
  • Deshalb stellt 7 spezielle Ausführungsformen dar, die den Übertragungspuffer 110 der Steuereinheit 106 verwenden, um Fehlplatzierungsfehler in dem NAND-Datenspeicher 116 der SSD 104 zu reduzieren.
  • 8 stellt einen Ablaufplan 800, der vierte beispielhafte Operationen zum Schreiben von Daten in eine SSD zeigt, in Übereinstimmung mit speziellen Ausführungsformen dar. Die in 8 gezeigten Operationen können durch die Steuereinheit 106, die in der SSD 104 implementiert ist, ausgeführt werden.
  • Die Steuerung startet bei Block 802, in dem eine Steuereinheit 106 Daten 202 einer tieferen Seite von einem Host 102 empfängt und die Daten 202 der tieferen Seite in den NAND-Datenspeicher 116 (oder einen anderen geeigneten nichtflüchtigen Datenspeicher wie z. B. einen NOR-Datenspeicher) schreibt. Die Steuerung fährt mit Block 804 fort, in dem die Steuereinheit 106 Daten 204 einer höheren Seite, die von dem Host 102 empfangen werden, in einen oder mehrere NAND-Seitenpuffer 114 lädt. Die Steuereinheit liest (bei Block 806) die Daten 202 der tieferen Seite aus dem NAND-Datenspeicher 116, um sie nach der Korrektur über die ECC-Engine 112 in dem Übertragungspuffer 110 zu speichern. Die korrigieren Daten 202 der tieferen Seite, die in dem Übertragungspuffer 110 gespeichert sind, werden (bei Block 810) in den einen oder die mehreren NAND-Seitenpuffer 114 geladen. Die Steuerung fährt mit Block 812 fort, in dem die korrigierten Daten der tieferen Seite und die Daten der höheren Seite aus dem einen oder mehreren NAND-Seitenpuffern 114 in den NAND-Datenspeicher 116 gespeichert werden.
  • Deshalb stellt 8 spezielle Ausführungsformen dar, die den Übertragungspuffer 110 der Steuereinheit 106 verwenden, um Fehlplatzierungsfehler in dem NAND-Datenspeicher 116 der SSD 104 zu reduzieren, während sie gleichzeitig den Speicherbedarf des Übertragungspuffers 110 reduzieren durch Speichern der Daten 204 der höheren Seite in NAND-Seitenpuffern 114, wenn die Daten 202 der tieferen Seite in den Übertragungspuffer 110 zur Fehlerkorrektur gelesen werden.
  • Deshalb stellen die 18 spezielle Ausführungsformen zum Reduzieren von Fehlplatzierungsfehlern in einem Festkörperlaufwerk durch Ausführen von Fehlerkorrektur von Daten einer tieferen Seite, die aus einem NAND-Datenspeicher gelesen werden, vor dem Schreiben der Daten der höheren Seite, die aus dem Host gelesen werden, in den NAND-Datenspeicher dar. In speziellen Ausführungsformen wird Speicherplatz in dem Übertragungspuffer eingespart durch Verschieben der Daten der höheren Seite aus dem Übertragungspuffer in einen oder mehrere NAND-Seitenpuffer, wenn Fehlerkorrektur auf den Daten der tieferen Seite in der Steuereinheit des Festkörperlaufwerks ausgeführt wird.
  • In speziellen MLC-NANDs sind zwei Informationsbits in derselben physikalischen Zelle gespeichert. Die erste Gruppe von Bits, die gespeichert sind, wird als die Daten der tieferen Seite bezeichnet, und die zweite Gruppe von Bits, die gespeichert sind, wird als die Daten der höheren Seite bezeichnet. Beispielsweise werden in speziellen Ausführungsformen die Daten der tieferen Seite von 4 Kilobytes (d. h. 32 Kilobits) in 32K physikalischen Zellen gespeichert, und danach werden die Daten der höheren Seite in denselben 32K physikalischen Zellen gespeichert.
  • TLC-Programmieren ist eine Obermenge spezieller Typen von MLC-Programmierung, und in TLC-Programmierung werden 3 Datenbits pro Zelle programmiert. Die ersten Bits, die gespeichert sind, werden als die Daten der tieferen Seite bezeichnet. Die zweiten Bits, die gespeichert sind, werden als die Daten der höheren Seite bezeichnet, und dritte Bits, die gespeichert sind, werden als die Daten der besonderen Seite bezeichnet. Als ein Ergebnis kann TLC nach dem Programmieren der Daten der besonderen Seite 8 Zustände aufweisen.
  • Die in den 18 beschriebenen Ausführungsformen können sowohl in speziellen MLC-NANDs als auch in TLC-NANDs implementiert sein. Während die 18 Korrektur der tieferen Seite während des Programmierens der höheren Seite beschreiben, können in TLC-NANDs jede der höheren oder tieferen Seiten während des Programmierens der besonderen Seite korrigiert werden.
  • Deshalb werden in speziellen Ausführungsformen Seitendaten (z. B. Daten der höheren Seite), die von einem Host empfangen werden, in einem Übertragungspuffer einer Steuereinheit des Festkörperlaufwerks gespeichert. Weitere Seitendaten (z. B. Daten einer tieferen Seite) werden aus einem NAND-Datenspeicher gelesen, um in dem Übertragungspuffer als fehlerkorrigierte Seitendaten gespeichert zu werden. Die fehlerkorrigierten Seitendaten (z. B. die fehlerkorrigierten Daten der tieferen Seite) und die Seitendaten (z. B. die Daten der höheren Seite) werden in den NAND-Datenspeicher geschrieben.
  • In zusätzlichen Ausführungsformen lädt eine Steuereinheit Seitendaten (z. B. Daten einer höheren Seite), die von dem Host empfangen werden, in einen oder mehrere NAND-Seitenpuffer. Die Steuereinheit liest weitere Seitendaten (z. B. Daten der tieferen Seite) aus dem NAND-Datenspeicher, um sie in einem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten, die in dem Übertragungspuffer gespeichert sind, werden in den einen oder die mehreren NAND-Seitenpuffer geladen.
  • In speziellen Ausführungsformen werden Seitendaten (z. B. Daten der besonderen Seite), die von einem Host empfangen werden, in einem Übertragungspuffer einer Steuereinheit des Festkörperlaufwerks gespeichert. Weitere Seitendaten (z. B. Daten einer tieferen oder höheren Seite) werden aus einem NAND-Datenspeicher gelesen, um in dem Übertragungspuffer als fehlerkorrigierte Seitendaten gespeichert zu werden. Die fehlerkorrigierten Seitendaten und die Seitendaten werden in den NAND-Datenspeicher geschrieben.
  • In zusätzlichen Ausführungsformen lädt eine Steuereinheit Seitendaten (z. B. Daten einer besonderen Seite), die von dem Host empfangen werden, in einen oder mehrere NAND-Seitenpuffer. Die Steuereinheit liest weitere Seitendaten (z. B. Daten der tieferen oder höheren Seite) aus dem NAND-Datenspeicher, um sie in einem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten, die in dem Übertragungspuffer gespeichert sind, werden in den einen oder die mehreren NAND-Seitenpuffer geladen.
  • Die beschriebenen Operationen können als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt unter Verwendung von Standard-Programmier- und/oder Konstruktionstechniken implementiert sein, um Software, Firmware, Hardware oder irgendeine Kombination daraus zu produzieren. Die beschriebenen Operationen können als Code, der in einem "computerlesbaren Speichermedium" gehalten ist, implementiert sein, wobei ein Prozessor den Code aus dem computerlesbaren Speichermedium lesen und ausführen kann. Das computerlesbare Speichermedium enthält wenigstens eines aus elektronischer Schaltungsanordnung, Speichermaterialien, anorganischen Materialien, organischen Materialien, biologischen Materialien, eine Ummantelung, einem Gehäuse, einer Beschichtung und Hardware. Ein computerlesbares Speichermedium kann ein magnetisches Speichermedium (z. B. Festplattenlaufwerke, Floppy-Disks, Magnetband, usw.), optischen Speicher (CD-ROMs, DVDs, optische Platten usw.), flüchtige und nichtflüchtige Datenspeichervorrichtungen (z. B. EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash-Datenspeicher, Firmware, programmierbare Logik, usw.), Festkörpervorrichtungen (SSD) usw. umfassen, ist jedoch nicht darauf beschränkt. Der Code, der die beschriebenen Operationen implementiert, kann ferner in Hardware-Logik implementiert sein, die in einer Hardware-Vorrichtung (z. B. einem Chip mit integrierter Schaltung, einem programmierbaren Gate-Array (PGA), einer anwendungsspezifischen integrierten Schaltung (ASIC) usw.) implementieren sind. Ferner noch kann der Code, der die beschriebenen Operationen implementiert, in "Übertragungssignalen" implementier sein, wobei sich Übertragungssignale durch Raum oder durch ein Übertragungsmedium wie z. B. einen Lichtleiter, Kupferdraht usw. ausbreiten können. Die Übertragungssignale, in denen der Code oder die Logik codiert sind, können ferner ein drahtloses Signal, Satellitenübertragung, Funkwellen, Infrarotsignale, Bluetooth usw. umfassen. Der auf einem computerlesbaren Speichermedium eingebettete Programmcode kann als Übertragungssignale von einer Sendestation oder einem Computer zu einer Empfangsstation oder einem Computer übertragen werden. Ein computerlesbares Speichermedium umfasst nicht nur Übertragungssignale. Fachleute werden erkennen, dass viele Modifikationen an dieser Konfiguration vorgenommen werden können und dass das Herstellungserzeugnis ein geeignetes Informationenträgermedium aus dem Stand der Technik umfassen kann.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der speziellen Ausführungsformen kann in irgendeiner Kombination aus einer oder mehreren Programmiersprachen geschrieben sein. Blöcke des Ablaufplans und Blockdiagramme können durch Computerprogrammanweisungen implementiert sein.
  • 9 stellt ein Blockdiagramm eines Systems 900, das der Steuereinheit 106, dem Host 102 oder der SSD 104 entspricht, in Übereinstimmung mit speziellen Ausführungsformen dar. Das System 900 kann eine Schaltungsanordnung 902 enthalten, die in speziellen Ausführungsformen wenigstens einen Prozessor 904 enthalten kann. Das System 900 kann außerdem einen Datenspeicher 906 (z. B. eine flüchtige Datenspeichervorrichtung) und Speicher 908 enthalten. Der Speicher 908 kann eine nichtflüchtige Datenspeichervorrichtung (z. B. EEPROM, ROM, PROM, RAM, Flash, Firmware, programmierbare Logik), Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk usw. enthalten. Der Speicher 908 kann eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung und/oder eine über ein Netz zugreifbare Speichervorrichtung umfassen. Das System 900 kann eine Programmlogik 910 enthalten, die Code 912 enthält, der in den Datenspeicher 906 geladen und durch den Prozessor 904 oder die Schaltungsanordnung 902 ausgeführt werden kann. In speziellen Ausführungsformen kann die Programmlogik 910, die den Code 912 enthält, in dem Speicher 908 gespeichert sein. In speziellen anderen Ausführungsformen kann die Programmlogik 910 in der Schaltungsanordnung 902 implementiert sein. Deshalb kann, obwohl 9 die Programmlogik 910 getrennt von den anderen Elementen zeigt, die Programmlogik 910 in dem Datenspeicher 906 und/oder der Schaltungsanordnung 902 implementiert sein.
  • Spezielle Ausführungsformen können sich auf ein Verfahren zum Verteilen von Computeranweisungen durch eine Person oder automatisierte Verarbeitung, die computerlesbaren Code in ein Computersystem integriert, beziehen, wobei der Code in Kombination mit dem Computersystem die Operationen der beschriebenen Ausführungsformen ausführen kann.
  • Die Begriffe "eine [engl.: a] Ausführungsform" "Ausführungsform", "Ausführungsformen", "die Ausführungsform", "die Ausführungsformen", "eine oder mehrere Ausführungsformen", "einige Ausführungsformen" und "eine [engl.: one] Ausführungsform" bedeuten "eine oder mehrere (jedoch nicht alle) Ausführungsformen", solange nicht ausdrücklich anders spezifiziert.
  • Die Begriffe "enthalten", "umfassen", "aufweisen" und Variationen davon bedeuten "enthalten, jedoch nicht darauf beschränkt", solange nicht ausdrücklich anders spezifiziert.
  • Die nummerierte Auflistung von Elementen impliziert nicht, dass irgendwelche oder alle dieser Elemente gegenseitig ausschließend sind, solange nicht ausdrücklich anders spezifiziert.
  • Die Begriffe "ein/eine" und "der/die/das" bedeuten "eines oder mehrere", solange nicht ausdrücklich anders spezifiziert.
  • Vorrichtungen, die in Kommunikation miteinander sind, müssen nicht in kontinuierlicher Kommunikation miteinander sein, solange nicht ausdrücklich anders spezifiziert. Zusätzlich können Vorrichtungen, die in Kommunikation miteinander sind, direkt oder indirekt über eine oder mehrere Zwischenstationen kommunizieren.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten in Kommunikation miteinander impliziert nicht, dass alle diese Komponenten erforderlich sind. Im Gegensatz dazu ist eine Auswahl optionaler Komponenten beschrieben, um die große Vielzahl möglicher Ausführungsformen darzustellen.
  • Ferner können, obwohl Prozessschritte, Verfahrensschritte, Algorithmen oder dergleichen in einer Reihenfolge beschrieben sein können, solche Prozesse, Verfahren und Algorithmen konfiguriert sein, um in alternativen Reihenfolgen zu funktionieren. Mit anderen Worten gibt irgendeine Reihenfolge oder Folge von Schritten, die beschrieben sein kann, nicht notwendigerweise eine Anforderung an, dass die Schritte in dieser Reihenfolge ausgeführt werden. Die Schritte von Prozessen, die hier beschrieben sind, können in irgendeiner praktischen Reihenfolge ausgeführt werden. Ferner können einige Schritte gleichzeitig ausgeführt werden.
  • Wenn ein/e einzige/r Vorrichtung oder Gegenstand hier beschrieben ist, ist leicht offensichtlich, dass mehr als ein/e Vorrichtung/Gegenstand (unabhängig davon, ob sie zusammenwirken) anstelle der/des einzigen Vorrichtung/Gegenstands verwendet sein können. Ähnlich ist, wenn mehr als eine Vorrichtung oder ein Gegenstand hier beschrieben ist (unabhängig davon, ob sie zusammenwirken), leicht offensichtlich, dass ein/e einzige/r Vorrichtung/Gegenstand anstelle der/des mehr als einen Vorrichtung oder Gegenstands verwendet sein kann, oder eine andere Anzahl von Vorrichtungen/Gegenständen anstelle der gezeigten Anzahl von Vorrichtungen oder Programmen verwendet sein kann. Die Funktionalität und/oder Merkmale einer Vorrichtung können alternativ durch eine oder mehrere andere Vorrichtungen verwirklicht sein, die nicht ausdrücklich so beschrieben sind, dass sie solche Funktionalität/Merkmale aufweisen. Somit müssen andere Ausführungsformen die Vorrichtung selbst nicht enthalten.
  • Wenigstens spezielle Operationen, die in den Figuren dargestellt sein können, zeigen spezielle Ereignisse, die in einer speziellen Reihenfolge auftreten. In alternativen Ausführungsformen können spezielle Operationen in anderer Reihenfolge ausgeführt, modifiziert oder entfernt werden. Außerdem können Schritte zu der vorstehend beschriebenen Logik hinzugefügt und immer noch mit den beschriebenen Ausführungsformen konform sein. Ferner können hier beschriebene Operationen der Reihe nach auftreten, oder spezielle Operationen können parallel verarbeitet werden. Weiter noch können Operationen durch eine einzige Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten ausgeführt werden.
  • Die vorstehende Beschreibung verschiedener Ausführungsformen ist zum Zweck der Darstellung und Beschreibung präsentiert worden. Es ist nicht vorgesehen, dass sie umfassend ist oder auf die exakte offenbarte Form beschränkt ist. Viele Modifikationen und Variationen sind angesichts der vorstehenden Lehren möglich.
  • BEISPIELE
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Verfahren, in dem Seitendaten, die von einem Host empfangen werden, in einem Übertragungspuffer einer Steuereinheit eines Festkörperlaufwerks gespeichert werden. Weitere Seitendaten werden aus einem nichtflüchtigen Datenspeicher gelesen, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten und die Seitendaten werden in den nichtflüchtigen Datenspeicher geschrieben.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 enthalten, dass der nichtflüchtige Datenspeicher ein NAND-Datenspeicher ist, wobei die Seitendaten Daten einer höheren Seite sind, wobei die weiteren Seitendaten Daten einer tieferen Seite sind, und wobei der Übertragungspuffer eine adäquate Speicherkapazität aufweist, um sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufzunehmen.
  • In Beispiel 3 kann der Gegenstand von Anspruch 2 enthalten, dass die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt. Die empfangenen Daten der tieferen Seite werden vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben, und das Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, wird benötigt, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  • In Beispiel 4 kann der Gegenstand von Anspruch 2 enthalten, dass der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit des Festkörperlaufwerks in das Festkörperlaufwerk schreibt, wobei das Festkörperlaufwerk Folgendes umfasst: die Steuereinheit, die den Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) wenigstens zum Korrigieren der Daten der tieferen Seite; und einen Dreipegelzellen-NAND (TLC-NAND), der den NAND-Datenspeicher umfasst.
  • In Beispiel 5 kann der Gegenstand von Anspruch 2 enthalten, dass die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, um Fehlplatzierungsfehler in dem Festkörperlaufwerk zu reduzieren, wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend das Schreiben der fehlerkorrigierten Daten der tieferen Seite gefolgt durch die Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  • In Beispiel 6 kann der Gegenstand von Anspruch 1 enthalten, dass die Seitendaten Daten einer besonderen Seite sind, wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  • Beispiel 7 ist ein weiteres Verfahren, in dem eine Steuereinheit Seitendaten, die von einem Host empfangen werden, in einen oder mehrere NAND-Seitenpuffer eines Festkörperlaufwerks lädt. Die Steuereinheit liest weitere Seitendaten aus dem NAND-Datenspeicher, um sie in einem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern. Die fehlerkorrigierten Seitendaten, die in dem Übertragungspuffer gespeichert sind, werden in den einen oder die mehreren NAND-Seitenpuffer geladen.
  • In Beispiel 8 kann der Gegenstand von Anspruch 7 enthalten, dass die Seitendaten Daten einer höheren Seite sind, wobei die weiteren Seitendaten Daten einer tieferen Seite sind. Die fehlerkorrigierten Daten der tieferen Seite und die Daten der höheren Seite werden aus dem einen oder den mehreren NAND-Seitenpuffern in den NAND-Datenspeicher geschrieben.
  • In Beispiel 9 kann der Gegenstand von Anspruch 8 enthalten, dass die Anforderungen an die Speicherkapazität des Übertragungspuffers reduziert sind, weil der Übertragungspuffer nicht sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufnehmen muss. Die Steuereinheit empfängt die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host, und die empfangenen Daten der tieferen Seite werden vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben. Das Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, wird benötigt, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  • In Beispiel 10 kann der Gegenstand von Anspruch 8 enthalten, dass der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit des Festkörperlaufwerks in das Festkörperlaufwerk schreibt. Das Festkörperlaufwerk umfasst die Steuereinheit, die den Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) wenigstens zum Korrigieren der Daten der tieferen Seite umfasst, und einen Dreipegelzellen-NAND (TLC-NAND), der den NAND-Datenspeicher und den einen oder die mehreren NAND-Seitenpuffer umfasst.
  • In Beispiel 11 kann der Gegenstand von Anspruch 8 enthalten, dass die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite und der Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  • In Beispiel 12 kann der Gegenstand von Anspruch 7 enthalten, dass die Seitendaten Daten einer besonderen Seite sind, und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  • Beispiel 13 ist eine Vorrichtung, die Folgendes umfasst: einen nichtflüchtigen Datenspeicher und eine Steuereinheit, die einen Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) umfasst, wobei die Steuereinheit den nichtflüchtigen Datenspeicher steuert. Die Steuereinheit arbeitet, um in dem Übertragungspuffer Seitendaten zu speichern, die von einem Host empfangen werden, weitere Seitendaten aus dem nichtflüchtigen Datenspeicher zu lesen, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern, und die fehlerkorrigierten Seitendaten und die Seitendaten in den nichtflüchtigen Datenspeicher zu schreiben.
  • In Beispiel 14 kann der Gegenstand von Anspruch 13 enthalten, dass der nichtflüchtige Speicher ein NAND-Datenspeicher ist, wobei die Seitendaten Daten einer höheren Seite sind, wobei die weiteren Seitendaten Daten einer tieferen Seite sind, und wobei der Übertragungspuffer eine adäquate Speicherkapazität aufweist, um sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufzunehmen.
  • In Beispiel 15 kann der Gegenstand von Anspruch 14 enthalten, dass die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt. Die empfangenen Daten der tieferen Seite werden vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben. Das Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, wird benötigt, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  • In Beispiel 16 kann der Gegenstand von Anspruch 14 enthalten, dass der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit der Vorrichtung in die Vorrichtung schreibt, wobei der NAND-Datenspeicher einem Dreipegelzellen-NAND (TLC-NAND) entspricht.
  • In Beispiel 17 kann der Gegenstand von Beispiel 14 enthalten, dass die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, um Fehlplatzierungsfehler in der Vorrichtung zu reduzieren, und wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite gefolgt durch Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  • In Beispiel 18 kann der Gegenstand von Beispiel 13 enthalten, dass die Seitendaten Daten einer besonderen Seite sind, und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  • Beispiel 19 ist eine Vorrichtung, die einen NAND-Komplex, der einen oder mehrere NAND-Seitenpuffer und einen NAND-Datenspeicher umfasst, eine Steuereinheit, die einen Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) umfasst, wobei die Steuereinheit den NAND-Komplex steuert, umfasst. Die Steuereinheit arbeitet, um in einen oder mehrere NAND-Seitenpuffer Seitendaten, die von einem Host empfangen werden, zu laden, weitere Seitendaten aus dem NAND-Datenspeicher zu lesen, um sie in einem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern, und die fehlerkorrigierten Seitendaten in den einen oder die mehreren NAND-Seitenpuffer zu laden.
  • In Beispiel 20 kann der Gegenstand von Beispiel 19 enthalten, dass die Seitendaten Daten einer höheren Seite sind, und wobei die weiteren Seitendaten Daten einer tieferen Seite sind, und wobei die Steuereinheit ferner arbeitet, um die fehlerkorrigierten Daten der tieferen Seite und die Daten der höhere Seite aus dem einen oder den mehreren NAND-Seitenpuffern in den NAND-Datenspeicher zu schreiben.
  • In Beispiel 21 kann der Gegenstand von Anspruch 20 enthalten, dass die Anforderungen an die Speicherkapazität des Übertragungspuffers reduziert sind, weil der Übertragungspuffer nicht sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufnehmen muss. Die Steuereinheit empfängt die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host, und die empfangenen Daten der tieferen Seite werden vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben. Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, wird benötigt, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  • In Beispiel 22 kann der Gegenstand von Anspruch 20 enthalten, dass der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit der Vorrichtung in die Vorrichtung schreibt, und wobei der NAND-Komplex ein Dreipegelzellen-NAND (TLC-NAND) ist.
  • In Beispiel 23 kann der Gegenstand von Anspruch 20 enthalten, dass die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite und der Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  • In Beispiel 24 kann der Gegenstand von Anspruch 19 enthalten, dass die Seitendaten Daten einer besonderen Seite sind, wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  • In Beispiel 25 kann der Gegenstand von Anspruch 19 enthalten, dass die Vorrichtung ferner eine NAND-Vorrichtung umfasst, die Folgendes umfasst: mehrere NAND-Seitenpuffer und ein NAND-Array, das mehrere NAND-Datenspeicherelemente umfasst, die den NAND-Datenspeicher enthalten, wobei die NAND-Vorrichtung konfiguriert ist, ankommende Seitendaten in einen NAND-Seitenpuffer aus den mehreren NAND-Seitenpuffern zu speichern und dann Leseoperationen auf das NAND-Array zu erlauben und dann weiteres Übertragen von gelesenen Daten zu der Steuereinheit zu erlauben, ohne die ankommenden Seitendaten, die in dem NAND-Seitenpuffer gespeichert sind, zu beschädigen.

Claims (25)

  1. Verfahren, das Folgendes umfasst: Speichern in einem Übertragungspuffer einer Steuereinheit eines Festkörperlaufwerks von Seitendaten, die von einem Host empfangen werden; Lesen von weiteren Seitendaten aus einem nichtflüchtigen Datenspeicher in dem Festkörperlaufwerk, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern; und Schreiben der fehlerkorrigierten Seitendaten und der Seitendaten in den nichtflüchtigen Datenspeicher.
  2. Verfahren nach Anspruch 1, wobei der nichtflüchtige Datenspeicher ein NAND-Datenspeicher ist, wobei die Seitendaten Daten einer höheren Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite sind und wobei der Übertragungspuffer eine adäquate Speicherkapazität aufweist, um sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufzunehmen.
  3. Verfahren nach Anspruch 2, wobei: die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt; die empfangenen Daten der tieferen Seite vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben werden; und Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, benötigt wird, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  4. Verfahren nach Anspruch 2, wobei der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit des Festkörperlaufwerks in das Festkörperlaufwerk schreibt, und wobei das Festkörperlaufwerk Folgendes umfasst: die Steuereinheit, die den Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) wenigstens zum Korrigieren der Daten der tieferen Seite umfasst; und und einen Dreipegelzellen-NAND (TLC-NAND), der den NAND-Datenspeicher umfasst.
  5. Verfahren nach Anspruch 2, wobei die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, um Fehlplatzierungsfehler in dem Festkörperlaufwerk zu reduzieren, und wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite gefolgt durch Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  6. Verfahren nach Anspruch 1, wobei die Seitendaten Daten einer besonderen Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  7. Verfahren, das Folgendes umfasst: Laden durch eine Steuereinheit von Seitendaten, die von einem Host empfangen werden, in einen oder mehrere NAND-Seitenpuffer eines Festkörperlaufwerks; Lesen von weiteren Seitendaten aus einem NAND-Datenspeicher, um sie in einem Übertragungspuffer der Steuereinheit als fehlerkorrigierte Seitendaten zu speichern; und Laden der fehlerkorrigierten Seitendaten in den einen oder die mehreren NAND-Seitenpuffer.
  8. Verfahren nach Anspruch 7, wobei die Seitendaten Daten einer höheren Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite sind, wobei das Verfahren ferner Folgendes umfasst: Schreiben der fehlerkorrigierten Daten der tieferen Seite und der Daten der höheren Seite aus dem einen oder den mehreren NAND-Seitenpuffern in den NAND-Datenspeicher.
  9. Verfahren nach Anspruch 8, wobei die Anforderungen an die Speicherkapazität des Übertragungspuffers reduziert sind, weil der Übertragungspuffer nicht sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufnehmen muss, und wobei: die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt; die empfangenen Daten der tieferen Seite vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben werden; und Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, benötigt wird, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  10. Verfahren nach Anspruch 8, wobei der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit des Festkörperlaufwerks in das Festkörperlaufwerk schreibt, und wobei das Festkörperlaufwerk Folgendes umfasst: die Steuereinheit, die den Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) wenigstens zum Korrigieren der Daten der tieferen Seite umfasst; und einen Dreipegelzellen-NAND (TLC-NAND), der den NAND-Datenspeicher und den einen oder die mehreren NAND-Seitenpuffer umfasst.
  11. Verfahren nach Anspruch 8, wobei die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, und wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite und der Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  12. Verfahren nach Anspruch 7, wobei die Seitendaten Daten einer besonderen Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  13. Vorrichtung, die Folgendes umfasst: einen nichtflüchtigen Datenspeicher; und eine Steuereinheit, die einen Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) umfasst, wobei die Steuereinheit den nichtflüchtigen Datenspeicher steuert und wobei die Steuereinheit arbeitet, um: in dem Übertragungspuffer Seitendaten, die von einem Host empfangen werden, zu speichern; weitere Seitendaten aus dem nichtflüchtigen Datenspeicher zu lesen, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern; und die fehlerkorrigierten Seitendaten und die Seitendaten in den nichtflüchtigen Datenspeicher zu schreiben.
  14. Vorrichtung nach Anspruch 13, wobei der nichtflüchtige Datenspeicher ein NAND-Datenspeicher ist, wobei die Seitendaten Daten einer höheren Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite sind und wobei der Übertragungspuffer eine adäquate Speicherkapazität aufweist, um sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufzunehmen.
  15. Vorrichtung nach Anspruch 14, und wobei: die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt; die empfangenen Daten der tieferen Seite vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben werden; und Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, benötigt wird, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  16. Vorrichtung nach Anspruch 14, wobei der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit der Vorrichtung in die Vorrichtung schreibt, und wobei der nichtflüchtige Datenspeicher einem Dreipegelzellen-NAND (TLC-NAND) entspricht.
  17. Verfahren nach Anspruch 14, wobei die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, um Fehlplatzierungsfehler in der Vorrichtung zu reduzieren, und wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch Lesen und Korrigieren der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben korrigierter Daten der tieferen Seite gefolgt durch Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  18. Vorrichtung nach Anspruch 13, wobei die Seitendaten Daten einer besonderen Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  19. Vorrichtung, die Folgendes umfasst: einen NAND-Komplex, der einen oder mehrere NAND-Seitenpuffer und einen NAND-Datenspeicher umfasst; und eine Steuereinheit, die einen Übertragungspuffer und eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) umfasst, wobei die Steuereinheit den NAND-Komplex steuert und wobei die Steuereinheit arbeitet, um: in den einen oder die mehreren NAND-Seitenpuffer Seitendaten, die von einem Host empfangen werden, zu laden; weitere Seitendaten aus dem NAND-Datenspeicher zu lesen, um sie in dem Übertragungspuffer als fehlerkorrigierte Seitendaten zu speichern; und die fehlerkorrigierten Seitendaten in den einen oder die mehreren NAND-Seitenpuffer zu laden.
  20. Vorrichtung nach Anspruch 19, wobei die Seitendaten Daten einer höheren Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite sind und wobei die Steuereinheit ferner arbeitet, um: die fehlerkorrigierten Daten der tieferen Seite und die Daten der höheren Seite aus dem einen oder den mehreren NAND-Seitenpuffern in den NAND-Datenspeicher zu schreiben.
  21. Vorrichtung nach Anspruch 20, wobei die Anforderungen an Speicherkapazität des Übertragungspuffers reduziert sind, weil der Übertragungspuffer nicht sowohl die Daten der tieferen Seite als auch die Daten der höheren Seite gleichzeitig aufnehmen muss, und wobei: die Steuereinheit die Daten der höheren Seite von dem Host nach dem Empfangen der Daten der tieferen Seite von dem Host empfängt; die empfangenen Daten der tieferen Seite vor dem Empfangen der Daten der höheren Seite von dem Host in den NAND-Datenspeicher geschrieben werden; und Lesen der Daten der tieferen Seite, die in den NAND-Datenspeicher geschrieben sind, benötigt wird, um die Daten der höheren Seite in den NAND-Datenspeicher zu schreiben.
  22. Vorrichtung nach Anspruch 20, wobei der Host die Daten durch zuerst Übertragen der Daten der tieferen Seite und dann Übertragen der Daten der höheren Seite zu der Steuereinheit der Vorrichtung in die Vorrichtung schreibt und wobei der NAND-Komplex ein Dreipegelzellen-NAND (TLC-NAND) ist.
  23. Vorrichtung nach Anspruch 20, wobei die Fehlerkorrektur der Daten der tieferen Seite in der Steuereinheit über eine Fehlerüberprüfungs- und Korrektur-Engine (ECC-Engine) ausgeführt wird, die in der Steuereinheit abläuft, und wobei Fehlplatzierungsfehler, die durch Lesefehler der Daten der tieferen Seite verursacht sind, durch das Lesen und die Fehlerkorrektur der Daten der tieferen Seite durch die Steuereinheit und nachfolgend Schreiben der fehlerkorrigierten Daten der tieferen Seite und der Daten der höheren Seite in den NAND-Datenspeicher reduziert werden.
  24. Vorrichtung nach Anspruch 19, wobei die Seitendaten Daten einer besonderen Seite sind und wobei die weiteren Seitendaten Daten einer tieferen Seite oder Daten einer höheren Seite sind.
  25. Vorrichtung nach Anspruch 19, wobei die Vorrichtung ferner Folgendes umfasst: eine NAND-Vorrichtung, die Folgendes umfasst: mehrere NAND-Seitenpuffer; und ein NAND-Array, das mehrere NAND-Datenspeicherelemente umfasst, die den NAND-Datenspeicher enthalten, wobei die NAND-Vorrichtung konfiguriert ist, ankommende Seitendaten in einem NAND-Seitenpuffer aus den mehreren NAND-Seitenpuffern zu speichern und dann Leseoperationen auf das NAND-Array zu erlauben und dann weiteres Übertragen von gelesenen Daten zu der Steuereinheit zu erlauben, ohne die ankommenden Seitendaten, die in dem NAND-Seitenpuffer gespeichert sind, zu beschädigen.
DE112015003569.9T 2014-09-26 2015-08-26 Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern Active DE112015003569B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/499,010 2014-09-26
US14/499,010 US9529668B2 (en) 2014-09-26 2014-09-26 Method and system for using NAND page buffers to improve the transfer buffer utilization of a solid state drive
PCT/US2015/047029 WO2016048562A1 (en) 2014-09-26 2015-08-26 Method and system for using nand page buffers to improve the transfer buffer utilization of a solid state drive

Publications (2)

Publication Number Publication Date
DE112015003569T5 true DE112015003569T5 (de) 2017-06-14
DE112015003569B4 DE112015003569B4 (de) 2024-04-25

Family

ID=55581772

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015003569.9T Active DE112015003569B4 (de) 2014-09-26 2015-08-26 Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern

Country Status (6)

Country Link
US (1) US9529668B2 (de)
KR (1) KR102282879B1 (de)
CN (1) CN106575250B (de)
DE (1) DE112015003569B4 (de)
TW (1) TWI603191B (de)
WO (1) WO2016048562A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521121B2 (en) 2016-12-29 2019-12-31 Intel Corporation Apparatus, system and method for throttling a rate at which commands are accepted in a storage device
US9811269B1 (en) * 2016-12-30 2017-11-07 Intel Corporation Achieving consistent read times in multi-level non-volatile memory
KR20190135746A (ko) 2018-05-29 2019-12-09 삼성전자주식회사 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US11061762B2 (en) * 2019-02-04 2021-07-13 Intel Corporation Memory programming techniques
WO2022040949A1 (en) * 2020-08-26 2022-03-03 Yangtze Memory Technologies Co., Ltd. Non-destructive mode cache programming in nand flash memory devices
US11704061B2 (en) * 2021-03-16 2023-07-18 Kioxia Corporation Page buffer enhancements

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200302966A (en) * 2002-01-29 2003-08-16 Matsushita Electric Ind Co Ltd Memory device, data processing method and data processing program
US7057939B2 (en) * 2004-04-23 2006-06-06 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
US8819332B2 (en) * 2010-03-26 2014-08-26 Panasonic Corporation Nonvolatile storage device performing periodic error correction during successive page copy operations
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
KR20130084492A (ko) * 2012-01-17 2013-07-25 삼성전자주식회사 비휘발성 메모리 시스템
JP5929485B2 (ja) * 2012-05-08 2016-06-08 ソニー株式会社 制御装置、記憶装置、データ書込方法
US9460018B2 (en) * 2012-05-09 2016-10-04 Qualcomm Incorporated Method and apparatus for tracking extra data permissions in an instruction cache
US9135106B2 (en) * 2012-05-22 2015-09-15 Hgst Technologies Santa Ana, Inc. Read level adjustment using soft information
US8914696B2 (en) * 2012-08-29 2014-12-16 Seagate Technology Llc Flash memory read scrub and channel tracking
JP2014052978A (ja) * 2012-09-10 2014-03-20 Toshiba Corp 不揮発性半導体メモリの制御方法及びメモリシステム
KR102025263B1 (ko) 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
US9135112B2 (en) 2012-12-11 2015-09-15 Seagate Technology Llc Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US8819337B1 (en) * 2014-04-16 2014-08-26 Sandisk Technologies Inc. Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data

Also Published As

Publication number Publication date
CN106575250B (zh) 2021-06-08
WO2016048562A1 (en) 2016-03-31
KR20170035983A (ko) 2017-03-31
TW201626225A (zh) 2016-07-16
TWI603191B (zh) 2017-10-21
DE112015003569B4 (de) 2024-04-25
US9529668B2 (en) 2016-12-27
KR102282879B1 (ko) 2021-07-29
US20160092299A1 (en) 2016-03-31
CN106575250A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
DE112015003569T5 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern
DE102010030742B4 (de) Phasenwechselspeicher in einem doppelreihigen Speichermodul
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102011075023A1 (de) Indexierter Registerzugriff für einen Speicherbaustein
DE102017120784A1 (de) Kontinuierliche adaptive Kalibrierung für Flash-Arbeitsspeichervorrichtungen
DE102016010717A1 (de) Verschleißmanagement für Flash-Speicher-Systeme
DE112010003762T5 (de) Flash-Speicher-Steuereinheit
DE112016000696T5 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE102020115970B3 (de) Befehlsoptimierung durch intelligente schwellwertdetektion
DE102017120826A1 (de) Verfahren und Vorrichtung zum Überwachen von Speicher unter Verwendung einer Hintergrundmedienabtastung
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE112020000159T5 (de) Systeme und verfahren zum definieren von speicher-unterblöcken
DE112017004919T5 (de) Bestimmung der Abgrenzungsspannung zur Handhabung von Drift in nichtflüchtigen Speichergeräten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: SK HYNIX NAND PRODUCT SOLUTIONS CORP., SAN JOS, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 112015007324

Country of ref document: DE