DE102019116520A1 - Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind - Google Patents

Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind Download PDF

Info

Publication number
DE102019116520A1
DE102019116520A1 DE102019116520.2A DE102019116520A DE102019116520A1 DE 102019116520 A1 DE102019116520 A1 DE 102019116520A1 DE 102019116520 A DE102019116520 A DE 102019116520A DE 102019116520 A1 DE102019116520 A1 DE 102019116520A1
Authority
DE
Germany
Prior art keywords
read level
data
level voltage
read
target block
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
DE102019116520.2A
Other languages
English (en)
Inventor
Jun Tao
Niang-Chu CHEN
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies 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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102019116520A1 publication Critical patent/DE102019116520A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • G11C16/28Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
    • 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/061Improving I/O performance
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Vorrichtungen, Medien, Verfahren und Systeme für Datenspeichersysteme und -verfahren für eine verbesserte Datenumlagerung, basierend auf Lesepegelspannungen, die mit einer Fehlerwiederherstellung verbunden sind. Ein Datenspeichersystem kann einen nichtflüchtigen Speicher einschließlich einem Quellbereich und einem Zielbereich aufweisen, wobei der Zielbereich einen ersten Zielblock und einen zweiten Zielblock, der von dem ersten Zielblock verschieden ist, und eine Steuerung aufweist. Die Steuerung ist eingerichtet, um erste Daten in dem Quellbereich unter Verwendung einer ersten Lesepegelspannung zu lesen und zweite Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung zu lesen, die sich von der ersten Lesepegelspannung unterscheidet. Die Steuerung ist eingerichtet, um basierend auf den ersten und zweiten Lesepegelspannungen, jeweils die ersten Daten und die zweiten Daten einem jeweiligen der ersten und der zweiten Zielblöcke zuzuordnen. Die Steuerung ist eingerichtet, um zu bewirken, dass jede der ersten und zweiten Daten in dem zugeordneten der ersten und zweiten Zielblöcke gespeichert wird.

Description

  • HINTERGRUND
  • Datenspeichersysteme müssen möglicherweise periodisch Daten von einem Ort zu einem anderen Ort umlagern. Auf alle Daten, die verschoben werden, kann nicht mit der gleichen Häufigkeit zugegriffen werden. Zum Beispiel kann auf bestimmte Daten häufiger zugegriffen werden als auf andere Daten, während auf bestimmte andere Daten nicht über einen ausgedehnten Zeitraum zugegriffen werden kann. Jedes Mal, wenn auf gespeicherte Daten zugegriffen wird, legt das Datenspeichersystem eine bestimmte Spannung an die Wortleitung an, welche die Daten speichert. Wenn auf die Daten häufiger zugegriffen wird, erhöht sich die Lesepegelspannung, die erforderlich ist, um die Daten erfolgreich zu lesen und/oder zu dekodieren. In ähnlicher Weise nimmt, wenn auf Daten nicht über einen ausgedehnten Zeitraum zugegriffen wird, die Lesepegelspannung ab, die erforderlich ist, um die Daten erfolgreich zu lesen und/oder zu dekodieren. Die Änderung der Lesepegelspannungen, die zum erfolgreichen Lesen und/oder Dekodieren der Daten erforderlich ist, kann die Fehlerraten erhöhen, wenn auf die Daten zugegriffen wird, was die Berechnungskosten und die Verarbeitungszeit erhöht, um Leseoperationen durch das Datenspeichersystem erfolgreich durchzuführen.
  • Die im Hintergrundabschnitt vorgesehene Beschreibung sollte nicht als Stand der Technik angenommen werden, lediglich weil sie in dem Hintergrundabschnitt erwähnt wird oder diesem zugeordnet ist. Der Hintergrundabschnitt kann Informationen beinhalten, die einen oder mehrere Aspekte der vorliegenden Technologie beschreiben.
  • Figurenliste
    • 1 zeigt ein beispielhaftes graphisches Diagramm, das drei mögliche Szenarien für eine Lesepegelspannung gemäß veranschaulichenden Implementierungen darstellt.
    • 2 ist ein Blockdiagramm, das Komponenten eines Datenspeichersystems gemäß veranschaulichenden Implementierungen darstellt.
    • 3 ist ein Blockdiagramm, das Komponenten eines Datenspeichersystems gemäß veranschaulichenden Implementierungen darstellt.
    • 4 zeigt die Assoziation von Daten von Quellblöcken mit Zielblöcken gemäß veranschaulichenden Implementierungen.
    • 5 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Bestimmen, ob eine Wortleitung eine wahre Löschbedingung erfüllt, gemäß veranschaulichenden Implementierungen.
  • Bei einer oder mehreren Implementierungen können nicht alle der dargestellten Komponenten in jeder Figur erforderlich sein, und eine oder mehrere Implementierungen können zusätzliche Komponenten einschließen, die in einer Figur nicht gezeigt sind. Variationen in der Anordnung und dem Typ der Komponenten können vorgenommen werden, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Zusätzliche Komponenten, unterschiedliche Komponenten oder weniger Komponenten können innerhalb des Umfangs der vorliegenden Offenbarung verwendet werden.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Offenbarung gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Offenbarung in der Praxis umgesetzt werden kann. Die beigefügten Zeichnungen sind in dieses Dokument integriert und Bestandteil der detaillierten Beschreibung. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Offenbarung zu ermöglichen. Jedoch wird für Fachleute offensichtlich sein, dass die vorliegende Offenbarung ohne diese spezifischen Details in der Praxis umgesetzt werden kann. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Offenbarung unklar werden. Gleiche Komponenten sind zum leichteren Verständnis mit identischen Elementnummern gekennzeichnet.
  • Die vorliegende Beschreibung bezieht sich im Allgemeinen auf Datenspeichersysteme und insbesondere auf, zum Beispiel und ohne Einschränkung, Datenspeichersysteme und Verfahren für Datenumlagerungen auf der Basis von Fehlerwiederherstellungen. Eine Lesepegelspannung wird an die Wortleitung angelegt, um Daten von der Wortleitung in einem nichtflüchtigen Speicher zu lesen. Die Anlegung der Lesepegelspannung an die Wortleitung kann angrenzende oder benachbarte Wortleitungen beeinflussen. Zum Beispiel können Elektronen der angrenzenden oder benachbarten Wortleitungen in das Floating-Gate der Wortleitung injiziert werden, die gelesen wird, wodurch die Ladung der Wortleitung, die gelesen wird, geändert wird, was einen Lesestörungseffekt verursacht. Aufgrund der größeren Anzahl von Elektronen kann die Lesepegelspannung, die erforderlich ist, um die Leseoperation auf der Wortleitung präzise durchzuführen, nach rechts von der voreingestellten oder anfänglichen Lesepegelspannung verschoben werden oder höher als diese sein, wie in 1 gezeigt. Je häufiger die Daten gelesen werden, desto wahrscheinlicher ist die Spannung, die zum erfolgreichen Lesen oder Dekodieren der Daten erforderlich ist, höher als die voreingestellte oder anfängliche Lesepegelspannung. Leistung und Effizienz des Datenspeichersystems werden verbessert, wenn solche Daten in einem Block mit einem niedrigen Programmlöschzykluszähler gespeichert werden. Bei einigen Implementierungen wird ein Programmlöschzykluszähler eines Blocks als ein niedriger Programmlöschzykluszähler bestimmt, wenn der Programmlöschzykluszähler des Blocks einem Schwellenprogrammlöschzykluszähler genügt oder kleiner oder gleich diesem ist.
  • In ähnlicher Weise treten Probleme mit der Beibehaltung dieser Daten auf, wenn auf gespeicherte Daten für einen langen Zeitraum nicht zugegriffen wird. Wenn zum Beispiel auf die Daten nicht zugegriffen wird oder sie für einen langen Zeitraum nicht gelesen werden, werden einige der Elektronen, die in dem Floating-Gate der Wortleitung gespeichert sind, die die zu speichernden Datenwerte darstellt, dann aus dem Floating-Gate entweichen, wodurch Probleme mit der Zurückhaltung von Daten verursacht werden. Der Verlust von Elektronen beeinflusst die geeignete Lesepegelspannung, die angelegt werden soll, wenn die Daten gelesen werden. Zum Beispiel kann, wie in 1 gezeigt, eine niedrigere Lesepegelspannung angelegt werden, um die Daten erfolgreich aus der nichtflüchtigen Speichervorrichtung zu lesen. Wenn Daten bei einer niedrigeren Spannung als einer bestimmten standardmäßigen Lesepegelspannung oder einer ersten Lesepegelspannung erfolgreich gelesen werden, dann wird wahrscheinlich nicht so häufig auf diese Daten zugegriffen wie auf andere Daten. Das Datenspeichersystem würde davon profitieren, wenn solche Daten in einem Block mit einem hohen Programmlöschzykluszähler gespeichert wären. Bei einigen Implementierungen wird ein Programmlöschzykluszähler eines Blocks als ein hoher Programmlöschzykluszähler bestimmt, wenn der Programmlöschzykluszähler des Blocks einem Schwellenprogrammlöschzykluszähler genügt oder höher als dieser ist.
  • 2 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems 100 gemäß einem oder mehreren Aspekten der vorliegenden Technologie zeigt. Das Datenspeichersystem 100 schließt unter anderem die Steuerung 102 und das nichtflüchtige Speichereinrichtungs-Array 108 ein. Die Steuerung 102 schließt den Prozessor 102, die Kodier-/Dekodier-Maschine 104, das Speichermedium 106 ein. In einigen Implementierungen können die Kodier-/Dekodier-Maschine 104 und das Speichermedium 106 außerhalb der Steuerung 102 platziert sein. Wie in 2 dargestellt, kann das Datenspeichersystem 100 mit einer Host-Vorrichtung 110 über eine Host-Schnittstelle 112 verbunden sein.
  • Die Steuerung 102 kann mehrere interne Komponenten (nicht gezeigt), wie einen oder mehrere Prozessoren 103, einen Nur-Lese-Speicher, eine nichtflüchtige Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Befehls- und Datentransport entlang einer Verbindung zu dem nichtflüchtigen Speichervorrichtungs-Array 108), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen, beinhalten. Ein Prozessor der Steuerung 102 kann den Betrieb der Komponenten in der Datenspeichersteuerung 102 überwachen und steuern. Der Prozessor und/oder die Steuerung 102 können ein Mehrkernprozessor, ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), eine anwenderprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA), ein programmierbarer Logikbaustein (PLD), eine Steuerung, eine Zustandsmaschine, ein Logikgatter, einzelne Hardwarekomponenten oder eine Kombination der Vorstehenden sein. In einigen Implementierungen können eines oder mehrere Elemente der Steuerung 102 in einem einzelnen Chip integriert sein. In einigen Implementierungen können die Elemente in zwei oder mehr einzelnen Komponenten implementiert sein.
  • Die Steuerung 102 kann einen Code oder Anweisungen ausführen, um die hierin beschriebenen Operationen und Funktionen durchzuführen. Zum Beispiel kann die Steuerung 102 Operationen zum Verwalten von Anforderungsfluss- und Adressenabbildungen durchführen, Berechnungen durchführen und Befehle erzeugen. Eine oder mehrere Sequenzen von Anweisungen können als Firmware in Speicher in der Steuerung 102 gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können Software sein, die von dem Speichermedium 106 und dem nichtflüchtigen Speichervorrichtungs-Array 108 gespeichert und gelesen wird oder von der Host-Vorrichtung 110 empfangen wird (zum Beispiel über die Host-Schnittstelle 112). Das Speichermedium 106 und das nichtflüchtige Speichervorrichtungs-Array 108 beinhalten Beispiele von maschinen- oder computerlesbaren Medien, auf denen Anweisungen/Codes, die durch die Steuerung 102 ausführbar sind, gespeichert werden können. Die Begriffe maschinen- oder computerlesbare Medien können allgemein jedes materielle und nichtflüchtige Medium oder jeden Datenträger bezeichnen, das/der verwendet wird, um Anweisungen an die Steuerung 102 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise einem dynamischen Speicher, der für Speichermedien oder für Puffer in der Steuerung 102 verwendet wird, als auch nichtflüchtige Medien, wie elektronische Medien, optische Medien und magnetische Medien. Die hierin beschriebenen Operationen und Funktionen können auch unter Verwendung zum Beispiel von logischen Schaltungen in Hardware oder einer Kombination von Hardware und Software/Firmware implementiert sein.
  • Nach einigen Aspekten stellt das Speichermedium 106 den flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die dazu dienen, das Datenspeichersystem 100 zu verwalten. Nach Aspekten der vorliegenden Offenbarung ist das Speichermedium 106 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Typen von RAM können auch verwendet werden, um das Speichermedium 106 zu implementieren. Das Speichermedium 106 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Während das Speichermedium 106 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass das Speichermedium 106 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Alternativ kann das Speichermedium 106 ein nichtflüchtiger Speicher sein, wie eine Magnetplatte, ein Flash-Speicher, ein Peripherie-SSD und dergleichen. In einigen Implementierungen kann das Speichermedium 106 einen oder mehrere Puffer beinhalten, wie etwa die Puffer 304, wie in 3 gezeigt.
  • Die Host-Schnittstelle 112 kann mit der Host-Vorrichtung 110 gekoppelt werden, um Daten von der Host-Vorrichtung 110 zu empfangen und Daten an diese zu senden. Die Host-Schnittstelle 112 kann sowohl elektrische als auch physische Verbindungen enthalten, um die Host-Vorrichtung 110 betriebsmäßig mit der Steuerung 102 zu koppeln. Die Host-Schnittstelle 112 kann Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 110 und der Steuerung 102 kommunizieren. Auf diese Weise kann die Steuerung 102, als Reaktion auf einen Schreibbefehl von der Host-Vorrichtung 110, von der Host-Vorrichtung 110 empfangene Daten im nichtflüchtigen Speichervorrichtungs-Array 108 speichern und im nichtflüchtigen Speichervorrichtungs-Array 108 gespeicherte Daten lesen und die gelesenen Daten, als Reaktion auf einen Lesebefehl von der Host-Vorrichtung 110, über die Host-Schnittstelle 112 an die Host-Vorrichtung 110 übertragen.
  • Host-Vorrichtung 110 stellt jede Vorrichtung dar, die mit dem Datenspeichersystem 100 gekoppelt werden kann und Daten in dem Datenspeichersystem 100 speichert. Die Host-Vorrichtung 110 kann ein Rechensystem, wie ein Personalcomputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen, sein. Alternativ kann die Host-Vorrichtung 110 eine elektronische Vorrichtung, wie eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen, sein.
  • Wie weiterhin in 2 dargestellt, können die Host-Vorrichtung 110 und das Datenspeichersystem 100 über einen Bus 114 miteinander kommunizieren. Der Bus kann geeignete Schnittstellenstandards verwenden, einschließlich, aber nicht beschränkt auf: Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fiber-Channel-Technologie, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC), Universal Flash Storage (UFS) und Peripheral Component Interconnect Express (PCle). Gemäß einigen Aspekten kann das Datenspeichersystem 100 Stifte (oder eine Buchse) einschließen, um sich mit einer entsprechenden Buchse (oder Stiften) auf der Host-Vorrichtung 110 zu verbinden, um eine elektrische und physikalische Verbindung herzustellen.
  • Die Steuerung kann einen internen Systembus 115 einschließen. Der Systembus 115 kann eine Kombination aus einem Steuerbus, Adressbus und Datenbus einschließen und die Komponenten der Steuerung 102 (z. B. einen darin befindlichen Prozessor und/oder Speicher) mit anderen Komponenten des Datenspeichersystems 100 verbinden, einschließlich der Kodier-/Dekodier-Maschine 104, des Speichermediums 106, des nichtflüchtigen Speichervorrichtungs-Arrays 108 und der Host-Schnittstelle 112. Daten werden zwischen den verschiedenen Komponenten über den Systembus 115 übertragen. Der Systembus 115 kann sich teilweise außerhalb und teilweise innerhalb der Steuerung 102 befinden.
  • Die Host-Vorrichtung 110 und das Datenspeichersystem 100 können über eine verdrahtete oder drahtlose Verbindung miteinander kommunizieren und können lokal oder entfernt voneinander sein. Nach einem oder mehreren anderen Aspekten beinhaltet das Datenspeichersystem 100 (oder die Host-Schnittstelle 112) einen drahtlosen Transceiver, um das Host-Gerät 110 und das Datenspeichersystem 100 in drahtlose Kommunikation miteinander zu bringen.
  • Die Steuerung 102 kann Daten und/oder Speicherzugriffsbefehle von einem Speicherschnittstellenmodul 116 (z. B. einem Gerätetreiber) der Host-Vorrichtung 110 empfangen. Von der Speicherschnittstelle 116 kommunizierte Speicherzugriffsbefehle können von dem Host-System 110 ausgegebene Schreib- und Lesebefehle beinhalten. Lese- und Schreibbefehle können eine logische Adresse (z. B. logische Blockadressen oder LBAs) vorgeben, die verwendet wird, um auf Daten zuzugreifen, die in dem Datenspeichersystem 100 gespeichert sind. Die Steuerung 102 kann Befehle in dem nichtflüchtigen Speichervorrichtungs-Array 108 als Reaktion auf Befehle ausführen, die von dem Speicherschnittstellenmodul 116 empfangen werden.
  • Das nichtflüchtige Speichervorrichtungs-Array 108 kann mehrere nichtflüchtige Speichervorrichtungen 118 einschließen. Eine nichtflüchtige Speichervorrichtung 118 stellt eine nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Gemäß Aspekten der vorliegenden Technologie schließt die nichtflüchtige Speichervorrichtung 118 beispielsweise einen NAND-Flash-Speicher ein. Jede nichtflüchtige Speichervorrichtung 118 kann einen einzelnen nichtflüchtigen Speicherchip oder ein -Modul beinhalten, oder sie kann mehrere nichtflüchtige Speicherchips oder -Module beinhalten. Zum Beispiel können in einem nichtflüchtigen Speichervorrichtungs-Array 108 einige der nichtflüchtigen Speichervorrichtungen 118 ein nichtflüchtiges Modul aufweisen, während andere mehr als ein nichtflüchtiges Modul aufweisen können. Die nichtflüchtige Speichervorrichtung 118 ist nicht auf irgendeine bestimmte Kapazität oder Konfiguration beschränkt. Zum Beispiel können die Anzahl physischer Blöcke, die Anzahl physischer Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und die Größe der Sektoren innerhalb des Umfangs der vorliegenden Technologie variieren.
  • Die nichtflüchtigen Speichervorrichtungen 118 können in mehreren Kanälen angeordnet sein, wobei jeder Kanal eine oder mehrere nichtflüchtige Speichervorrichtungen 118 aufweist. Eine nichtflüchtige Speichervorrichtung 118 kann eine oder mehrere nichtflüchtige Speicherschnittstellen (nicht dargestellt) einschließen. Jede nichtflüchtige Speicherschnittstelle verbindet die Steuerung 102 über einen entsprechenden Kanal mit einer der nichtflüchtigen Speichervorrichtungen. Jeder der Kanäle (nicht dargestellt) kann unter Verwendung von einem oder mehreren physischen E/A-Bussen implementiert werden, die zwischen einer der nichtflüchtigen Speicherschnittstellen und der/den entsprechenden nichtflüchtigen Vorrichtung(en) gekoppelt sind. Jeder Kanal ermöglicht der entsprechenden nichtflüchtigen Speicherschnittstelle, Lese-, Schreib- und/oder Löschbefehle an die entsprechende nichtflüchtige(n) Speichervorrichtung(en) zu senden. Jede nichtflüchtige Speicherschnittstelle kann ein Register (z. B. ein First-In-First-Out- (FIFO) -Register) beinhalten, das Lese-, Schreib- und/oder Löschbefehle von der Steuerung 102 für die entsprechende nichtflüchtige Speichervorrichtung in einer Warteschlange anordnet. Obwohl sich der Begriff „Kanal“, wie vorstehend verwendet, auf den Bus bezieht, der zwischen einer nichtflüchtigen Speicherschnittstelle und der entsprechenden nichtflüchtigen Speichervorrichtung gekoppelt ist, kann sich der Begriff „Kanal“ auch auf die entsprechende nichtflüchtige Speichervorrichtung beziehen, die durch einen Bus (z. B. den Systembus 115) adressierbar ist. Nichtflüchtige Speichervorrichtungen 118 können Speicherblöcke einschließen. In einigen Implementierungen können die Speicherblöcke einer nichtflüchtigen Speichervorrichtung logisch gruppiert werden, basierend auf bestimmten Speichervorrichtungs-Operationen und/oder -Verfahren, wie die Speicherbereinigung, Datenumlagerung, und dergleichen. In einigen Implementierungen können einige der Speicherblöcke logisch in Quellspeicherblöcken gruppiert sein, wie etwa die Quellspeicherblöcke 305, wie in 3 gezeigt. Zum Beispiel können, wie in 4 gezeigt, die Speicherblöcke 401a, 401b, 401c, 401d kollektiv als Quellblöcke 305 bezeichnet werden. In einigen Implementierungen können einige der Speicherblöcke logisch in Zielspeicherblöcken gruppiert sein, wie zum Beispiel Zielspeicherblöcke 306, wie in 3 gezeigt. Zum Beispiel können, wie in 4 gezeigt, die Speicherblöcke 405, 406 kollektiv als Zielblöcke 306 bezeichnet werden. Die Steuerung 102 kann eingerichtet sein, um die in den Quellspeicherblöcken 305 gespeicherten Daten in die Zielspeicherblöcke 306 umzulagern, basierend auf Fehlerkorrekturdaten, die den in Quellspeicherblöcken gespeicherten Daten zugeordnet sind. Zusätzliche Details der Datenumlagerung werden unter Bezugnahme auf 5 beschrieben.
  • Die nichtflüchtige Speichervorrichtung 118 kann über eine Standardschnittstellenspezifikation verfügen. Dieser Standard stellt sicher, dass Chips von mehreren Herstellern austauschbar verwendet werden können. Die Schnittstelle der nichtflüchtigen Speichervorrichtung 118 kann verwendet werden, um auf interne Register 120 und eine interne nichtflüchtige Steuerung 122 zuzugreifen. Bei einigen Implementierungen können die Register 120 Adress-, Befehls- und/oder Datenregister einschließen, die intern die notwendigen Daten zu und von einem Speicherzellen-Array 124 abrufen und ausgeben. Bei einigen Implementierungen kann das Speicherzellen-Array 124 ein NAND-Speicherzellen-Array sein. Beispielsweise kann das Speicherzellen-Array 124 einen Einzelpegelzellenspeicher (Single-Level Cell, SLC), einen Mehrpegelzellenspeicher (Multi-Level Cell, MLC), einen Dreipegelzellenspeicher (Three-Level Cell, TLC), einen Vierpegelzellenspeicher (Four-Level Cell, QLC) usw. aufweisen. Nach einigen Aspekten kann das nichtflüchtige Speichervorrichtungs-Array 108 eine oder mehrere Hybridspeichervorrichtungen aufweisen, die in einer oder mehreren SLC-, MLC- oder TLC-Betriebsarten arbeiten können. Andere Typen von nichtflüchtigen Speichern, wie etwa 3D-NAND-Flash-Speicher, werden in der vorliegenden Technologie ebenfalls in Betracht gezogen.
  • Ein Datenregister (z. B. von Registern 120) kann Daten, die in dem Speicherzellen-Array 124 gespeichert werden sollen, oder Daten nach einem Abruf aus dem Speicherzellen-Array 124 beinhalten und kann außerdem zur temporären Datenspeicherung verwendet werden und/oder wie ein Puffer wirken. Ein Adressenregister kann die Speicheradresse speichern, von der Daten an die Host-Vorrichtung 110 abgerufen werden, oder die Adresse, an die Daten gesendet und gespeichert werden. Nach einigen Aspekten ist ein Befehlsregister enthalten, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. Nach einigen Aspekten ist die interne nichtflüchtige Speichersteuerung 122 über ein Steuerregister zugänglich, um das allgemeine Verhalten der nichtflüchtigen Speichervorrichtung 118 zu steuern. Die interne nichtflüchtige Steuerung 122 und/oder das Steuerregister können die Anzahl von Stoppbits, die Wortlänge, die Empfänger-Taktquelle steuern und können außerdem das Umschalten des Adressiermodus, der Paging-Steuerung, der Coprozessorsteuerung und dergleichen steuern.
  • Die Kodier-/Dekodier-Maschine 104 stellt eine oder mehrere Komponenten dar, die Codewörter kodieren und/oder dekodieren können, die in dem nichtflüchtigen Speichervorrichtungs-Array 108 gespeichert und/oder aus diesem gelesen werden sollen. Die Kodier-/Dekodier-Maschine 104 kann einen Kodierer und einen Dekodierer einschließen. Bei einigen Implementierungen kann die Kodier-/Dekodier-Maschine 104 einen oder mehrere Kodierer und/oder einen oder mehrere Dekodierer einschließen. Der Decodierer kann einen harten Decodierer und einen Soft-Decision-ECC-Decodierer einschließen. Die Kodier-/Dekodier-Maschine 104 kann die von der Host-Vorrichtung 110 empfangenen Daten in Codewörter kodieren und Codewörter aus der nichtflüchtigen Speichervorrichtung 118 vor dem Senden der dekodierten Daten an den Host dekodieren. Bei einigen Implementierungen kann die Kodier-/Dekodier-Maschine 104 eine oder mehrere Speichervorrichtung(en) und/oder eine oder mehrere Verarbeitungseinheit(en) aufweisen, die verwendet werden, um eine Fehlerkorrektur durchzuführen (z. B. unter Verwendung von LDPC, BCH oder Turbo-Codes). Die Kodier-/Dekodier-Maschine 104 kann auch ein unspezifisches Informationsmodul beinhalten, das unspezifische metrische Eingaben für Kodier- und Dekodierungsoperationen bestimmt und/oder beibehält. Obwohl die Kodier-/Dekodier-Maschine 104 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass die Kodier-/Dekodier-Maschine 104 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. In einigen Implementierungen kann die Kodier-/Dekodier-Maschine 104 eingerichtet sein, um Daten an den einen oder die mehreren Prozessoren 103 der Steuerung 102 zu senden oder zu liefern. Zusätzliche Details der Kodier-/Dekodier-Maschine 104 sind unten mit Bezug auf 5 beschrieben.
  • Wie oben beschrieben, können Daten effizienter gespeichert werden, um die Effizienz und Leistung des Datenspeichersystems während der Durchführung von Datenoperationen zu verbessern, wodurch der Gesamtwirkungsgrad und die Leistungsfähigkeit des Datenspeichersystems verbessert werden. Die Steuerung 102 kann eingerichtet sein, um Daten als Antwort auf das Übertragen einer Leseoperation oder eines Befehls bei einer ersten Lesepegelspannung an die nichtflüchtige Speichervorrichtung 118 zu empfangen. Bei einigen Implementierungen kann eine erste Lesepegelspannung eine voreingestellte Lesepegelspannung sein. Bei einigen Implementierungen kann eine voreingestellte Lesepegelspannung für eine nichtflüchtige Speichervorrichtung, wie etwa die nichtflüchtige Speichervorrichtung 118, vorbestimmt sein. Wie oben beschrieben, können die Daten in Speicherblöcken in der nichtflüchtigen Speichervorrichtung 118 gespeichert werden, die als Quellspeicherblöcke bezeichnet werden, wie etwa die Quellspeicherblöcke 401a, 401b, 401c, 401d. Die Steuerung 102 kann eingerichtet sein, um zu bestimmen, ob die empfangenen Daten erfolgreich durch die Kodier-/Dekodier-Maschine 104 bei der ersten Lesepegelspannung gelesen oder dekodiert werden.
  • Wenn die Steuerung 102 bestimmt, dass die empfangenen Daten nicht erfolgreich durch die Kodier-/Dekodier-Maschine 104 unter Verwendung der ersten Lesepegelspannung gelesen oder dekodiert werden, dann bestimmt die Steuerung 102 eine verschobene Lesepegelspannung und überträgt eine Leseoperation an die nichtflüchtige Speichervorrichtung, um Daten aus dem Quellblock unter Verwendung der verschobenen Lesepegelspannung zu lesen oder abzurufen. Die Steuerung 102 kann eingerichtet sein, um zu bestimmen, ob die Daten, die empfangen werden, wenn die verschobene Lesepegelspannung verwendet wird, erfolgreich unter Verwendung der verschobenen Lesepegelspannung gelesen oder dekodiert werden, und wenn die Daten nicht erfolgreich gelesen oder dekodiert werden, dann kann in einigen Implementierungen die Steuerung 102 eingerichtet sein, immer weiter neue verschobene Lesepegelspannung zu bestimmen, bis die Daten erfolgreich gelesen oder dekodiert werden oder eine nicht korrigierbare Fehlermeldung empfangen wird. Wenn die Daten erfolgreich gelesen oder dekodiert werden, kann die Steuerung 102 eingerichtet sein, um die Daten einem Zielblock unter Verwendung des Umlagerungspuffers 403 oder 404 zuzuordnen, wie in 4 gezeigt. Der Umlagerungspuffer 403 kann dem Zielblock 405 zugeordnet sein, und der Umlagerungspuffer 404 kann dem Zielblock 406 zugeordnet sein. Die Steuerung 102 kann eingerichtet sein zum Ausgeben oder Übertragen von Daten-Schreiboperationen an die nichtflüchtige Speichervorrichtung 118 für Daten, die dem Umlagerungspuffer 403 zugeordnet sind, um in dem Zielblock 405 gespeichert werden, und für Daten, die dem Umlagerungspuffer 404 zugeordnet sind, um in dem Zielblock 406 gespeichert werden.
  • Wenn die Steuerung 102 bestimmt, dass die empfangenen Daten erfolgreich von der Kodier-/Dekodier-Maschine 104 unter Verwendung der ersten Lesepegelspannung gelesen oder dekodiert werden, dann kann die Steuerung eingerichtet sein, die Zielblöcke mit der geringsten Menge an verfügbarem Speicherplatz oder dem höchsten Belegungsgrad zu bestimmen und die Daten diesem Zielblock zuzuordnen. Die Steuerung 102 kann eingerichtet sein, um die Daten dem entsprechenden Umlagerungspuffer dieses Zielblocks zuzuordnen, wie in 4 gezeigt. Zusätzliche Details der Umlagerung von Daten werden unten mit Bezug auf 5 beschrieben.
  • Mit Blick auf 5 wird ein Flussdiagramm gezeigt, das einen Prozess der Datenumlagerung basierend auf einem Fehlerwiederherstellungsergebnis veranschaulicht. Zum Zwecke der Darstellung eines klar verständlichen Beispiels werden Komponenten des Datenspeichersystems 100, das unter Bezugnahme auf die 2 und 3 gezeigt und beschrieben wurde, dafür verwendet, den Prozess der Datenumlagerung basierend auf dem Fehlerwiederherstellungsergebnis zu beschreiben. Der Prozess der Datenumlagerung basierend auf dem Fehlerwiederherstellungsergebnis kann als Antwort auf eine Datenumlagerungsoperation, wie z. B., ohne darauf beschränkt zu sein, eine Speicherbereinigungsoperation des Datenspeichersystems 100, initiiert werden. Das Verfahren 500 beinhaltet das Empfangen (durch eine Steuerung von einem Datenspeichersystem, wie etwa die Steuerung 102 des Datenspeichersystems 100) von Daten von einem Quellblock, wie etwa einem Quellblock 305 der nichtflüchtigen Speichervorrichtung 118 unter Verwendung einer ersten Lesepegelspannung (Block 701). Daten können von einem Quellblock 305 der nichtflüchtigen Speichervorrichtung 118 als Antwort auf eine Leseoperation empfangen werden, die an dem Quellblock durchgeführt wird. Daten können aus dem Quellblock über eine Leseoperation gelesen werden.
  • Bei einigen Implementierungen wird eine Leseoperation durchgeführt, indem die erste Lesepegelspannung an eine Wortleitung des Quelldatenblocks angelegt wird. Solch eine erste Lesepegelspannung kann eine vorbestimmte Lesepegelspannung oder eine Spannung sein, die aufgrund einer oder mehrerer Betriebsbedingungen des Datenspeichersystems berechnet wird. Beispielsweise kann eine solche Lesepegelspannung basierend auf dem Verschleißniveau der nichtflüchtigen Speichervorrichtung berechnet werden, wie etwa einer Anzahl von Programmlöschzyklen, die der nichtflüchtigen Speichervorrichtung zugeordnet sind. Bei einigen Implementierungen kann eine Anzahl von Lesepegelspannungen vorgegeben sein, und die Steuerung 102 oder die Steuerung 122 der nichtflüchtigen Speichervorrichtung 118 können eingerichtet sein, um eine der vorbestimmten Lesepegelspannungen basierend auf verschiedenen Faktoren der nichtflüchtigen Speichervorrichtung 118 anzulegen. Zum Beispiel kann die Steuerung 102 oder die Steuerung 122 der nichtflüchtigen Speichervorrichtung 118 eingerichtet sein, um eine bestimmte vorbestimmte Lesepegelspannung basierend auf dem Programmlöschzykluszähler der nichtflüchtigen Speichervorrichtung 118 anzulegen.
  • Bei einigen Implementierungen können Daten, die aus dem Quellblock der nichtflüchtigen Speichervorrichtung gelesen werden, in einer Datenspeichereinheit gespeichert werden, die mit der Kodier-/Dekodier-Maschine 104 gekoppelt ist. Die aus dem Quellblock gelesenen Daten können kodiert sein. Bei einigen Implementierungen kann die Steuerung 102 beispielsweise über den Prozessor 103 eingerichtet sein, um eine Kennung für jede Leseoperation bereitzustellen, die von der Steuerung angefordert wird. Die Kennung kann eine Kennung eines Pufferspeicherplatzes in einer Datenspeichereinheit sein, die mit der Steuerung 102 gekoppelt ist oder in der Steuerung 102 beinhaltet ist. Zum Beispiel kann die Datenspeichereinheit mit dem Prozessor 103 der Steuerung 102 gekoppelt sein.
  • Die Steuerung 102 versucht zum Beispiel über die Kodier-/Dekodier-Maschine 104, die empfangenen Daten unter Verwendung der ersten Lesepegelspannung (Block 502) zu lesen. Die Kodier-/Dekodier-Maschine 104 kann versuchen, die empfangenen Daten durch Dekodieren der kodierten Daten oder des Codeworts zu lesen. Die Kodier-/Dekodier-Maschine 104 kann eingerichtet sein, um die empfangenen Daten unter Verwendung der ersten Lesepegelspannung zu dekodieren, die beim Lesen dieser Daten aus dem Quellblock angelegt wird. Die Steuerung 102 kann über die Kodier-/Dekodier-Maschine 104 unter Verwendung der ersten Lesepegelspannung bestimmen, ob die empfangenen Daten erfolgreich gelesen oder dekodiert wurden (Block 503). Bei einigen Implementierungen kann das erfolgreiche Lesen der empfangenen Daten das erfolgreiche Dekodieren empfangener kodierter Daten beinhalten. Wenn die Kodier-/Dekodier-Maschine 104 die Daten durch Anlegen der ersten Spannung erfolgreich liest und/oder dekodiert, dann bestimmt die Steuerung 102 über den Prozessor 103 die Belegungsgrade des Zielblöcke, wie etwa der Zielblöcke 405, 406, in denen die erfolgreich gelesen Daten gespeichert werden können (Block 504). Der Prozessor 103 kann eingerichtet sein, um einen Zielblock zum Speichern der Daten, basierend auf dem verfügbaren Raum oder dem Belegungsgrad der Zielblöcke, auszuwählen. Bei einigen Implementierungen kann der Prozessor 103 eingerichtet sein, um verfügbaren Speicherplatz oder Belegungsgrad jedes der Zielblöcke basierend auf Daten zu bestimmen, die für das Anzeigen des verfügbaren Speicherraums oder freien Raums der Zielblöcke relevant sind. Bei einigen Implementierungen können dem Prozessor 103 Daten bereitgestellt werden, die mit dem verfügbaren Speicherplatz oder den Belegungsgraden aller Zielblöcke zu Beginn des Datenumlagerungsprozesses in Beziehung stehen, und er kann eingerichtet sein, um Daten zu erhalten und/oder zu aktualisieren, die mit dem verfügbaren Speicherplatz oder den Belegungsgraden der Zielblöcke in Beziehung stehen, nachdem Daten in den Zielblöcken gespeichert werden. Zum Beispiel kann der Prozessor 103 nach jedem während des Umlagerungsprozesses ausgegebenen Daten-Schreiboperationsbefehl den verfügbaren Speicherplatz des Zielblocks, in dem die Daten gespeichert werden, aktualisieren.
  • Die Steuerung 102 ordnet über den Prozessor 103 die Daten dem Zielblock, basierend auf den Belegungsgraden der Zielblöcke (Block 505), zu. Der Prozessor 103 kann eingerichtet sein, um die Daten dem Zielblock mit der geringsten Menge an verfügbarem Speicherplatz oder dem höchsten Belegungsgrad der Zielblöcke zuzuordnen. Der Prozessor 103 kann die Daten einem Zielblock zuordnen, indem er eine Kennung der Daten, wie etwa die Pufferkennung der Daten, einem Umlagerungspuffer zuordnet, wie etwa den Umlagerungspuffern 403, 404. Bei einigen Implementierungen kann der Prozessor 103 eingerichtet sein, um die Pufferkennung der Daten in einem Umlagerungspuffer zu speichern, der dem Zielblock zugeordnet ist. Zum Beispiel kann der Prozessor 103 bestimmen, dass ein Zielblock 306 über den höchsten Belegungsgrad oder den geringsten verfügbaren Speicherraum verfügt, und ordnet die Daten dem Zielblock 406 zu, indem er die Pufferkennung in den Umlagerungspuffer 404 speichert, wobei der Umlagerungspuffer dem Zielblock 306 zugeordnet ist. Die Steuerung 102 bewirkt über den Prozessor 103, dass die Daten in dem zugehörigen Zielblock gespeichert werden (Block 512). Zum Beispiel kann der Prozessor 103 eingerichtet sein, um eine Daten-Schreiboperation oder einen Schreibbefehl an die nichtflüchtige Speichervorrichtung 118 auszugeben oder zu übertragen und die Daten an die nichtflüchtigen Speichervorrichtung 118 zu übertragen, um sie in dem Zielblock zu speichern. Der Prozessor 103 kann eingerichtet sein, um den Zielblock vorzugeben, wenn er die Daten-Schreiboperation oder den Schreibbefehl an die nichtflüchtige Speichervorrichtung 118 ausgibt oder überträgt. Zusätzliche Details des Blocks 512 sind unten beschrieben. Durch Zuordnen oder Auswählen des Zielblocks mit der geringsten Menge an verfügbarem Speicherplatz oder dem geringsten Belegungsgrad veranlasst die Steuerung 102 über den Prozessor 103, dass die Daten in diesem Zielblock gespeichert werden und dass dieser Zielblock gefüllt und geschlossen wird, wodurch die Anzahl der offenen Speicherblöcke in dem Datenspeichersystem 100 verringert wird. Die Verringerung der Anzahl von offenen Speicherblöcken verringert die Wahrscheinlichkeit von Fehlern, die in gespeicherten Daten auftreten, und verbessert die Bitfehlerrate, die den gespeicherten Daten und/oder der Bitfehlerrate des nichtflüchtigen Speichers zugeordnet ist. Das Verbessern der Bitfehlerrate verbessert die Leistung und Effizienz des Datenspeichersystems beim Durchführen verschiedener Datenoperationen. Beispielsweise verringert eine Verbesserung der Bitfehlerrate die Anzahl von Fehlern, die abgerufene Daten beeinflussen, wodurch die Anzahl von Prozessorzyklen verringert wird, die erforderlich sind, um Daten erfolgreich zu lesen und/oder zu dekodieren, und die Leistung und Effizienz des Datenspeichersystems verbessert werden.
  • Wenn, mit erneutem Bezug auf Block 503, die Steuerung 102 über die Kodier-/Dekodier-Maschine 104 die Daten nicht erfolgreich durch Anlegen der ersten Spannung liest oder dekodiert, dann bestimmt die Steuerung 102 über die Kodier-/ Dekodier-Maschine 104 eine verschobene Lesepegelspannung (Block 506). Die verschobene Lesepegelspannung ist eine Lesepegelspannung, die höher oder niedriger als die erste Lesepegelspannung sein kann. Bei einigen Implementierungen kann die Kodier-/Dekodier-Maschine 104 eingerichtet sein, um verschobene Lesepegelspannungen, basierend auf einem Spannungsverschiebungsmuster, zu bestimmen. Bei einigen Implementierungen kann ein Spannungsverschiebungsmuster eine Liste von verschobenen Lesepegelspannungen und/oder eine Liste von Ausgleichsbeträgen sein. Die Kodier-/Dekodier-Maschine 104 kann eingerichtet sein, um eine Reihe oder eine Anzahl von verschobenen Lesepegelspannungen aufrechtzuerhalten und/oder zu verfolgen. Beispielsweise kann die Kodier-/Dekodier-Maschine 104 einen Zähler beibehalten und/oder aktualisieren, der die Häufigkeit angibt, mit der die Lesepegelspannung verschoben wird. Die Kodier-/Dekodier-Maschine 104 kann eingerichtet sein, um eine neue verschobene Lesepegelspannung und/oder die Spannungshöhe zu bestimmen, um die eine Lesepegelspannung, beispielsweise die erste Lesepegelspannung, basierend auf solchen Zählern zu verschieben ist. Die Kodier-/Dekodier-Maschine 104 kann eingerichtet sein, um eine Abbildung zwischen Lesepegelspannungen und Zählerwerten oder Offsets oder Verschiebungsbeträgen und Zählerwerten zu verwenden, um eine neue verschobene Lesepegelspannung und/oder die Spannungshöhe, um die eine Lesepegelspannung zu verschieben ist, zu bestimmen.
  • Die Steuerung 102 kann so eingerichtet sein, dass sie einen Leseoperationsbefehl unter Verwendung der verschobenen Lesepegelspannung ausgibt. Beispielsweise kann die Kodier-/Dekodier-Maschine 104 zuerst die Lesepegelspannung um einen Schwellenbetrag erhöhen, und Daten können erneut aus dem Quellblock gelesen werden, wobei die erhöhte Lesepegelspannung verwendet wird. In ähnlicher Weise kann die Kodier-/Dekodier-Maschine 104 zuerst die Lesepegelspannung um einen Schwellenbetrag verringern, und Daten können erneut aus dem Quellblock unter Verwendung der verringerten Lesepegelspannung gelesen werden. Als Reaktion auf die Leseoperation, die unter Verwendung der verschobenen Lesepegelspannung durchgeführt wird, empfängt die Steuerung Daten von dem Quellblock, die unter Verwendung der verschobenen Lesepegelspannung (Block 507) abgerufen oder gelesen wurden. Die Steuerung 102 kann beispielsweise über die Kodier-/Dekodier-Maschine 104 eingerichtet sein, um die empfangenen Daten unter Verwendung der verschobenen Lesepegelspannung (Block 508) zu lesen oder erfolgreich zu dekodieren.
  • Die Steuerung 102 bestimmt beispielsweise über die Kodier-/Dekodier-Maschine 104, ob die Daten erfolgreich unter Verwendung der verschobenen Lesepegelspannung (Block 509) gelesen oder dekodiert wurden. Wenn die Steuerung 102 über die Kodier-/Dekodier-Maschine 104 bestimmt, dass die empfangenen Daten nicht erfolgreich unter Verwendung der verschobenen Lesepegelspannung gelesen oder dekodiert werden(„NEIN“ bei Block 509), fährt der Prozess mit Block 510 fort, um zu bestimmen, ob alle möglichen Lesepegelspannungen angelegt wurden, um die empfangenen Daten zu lesen oder zu dekodieren. Bei einigen Implementierungen kann die Steuerung 102 eingerichtet sein, um eine vorbestimmte Anzahl von Lesepegelspannungen an empfangene Daten anzulegen. Bei einigen Implementierungen kann die Steuerung 102 eingerichtet sein, um einen Zählerwert zu erzeugen und/oder zu aktualisieren, der eine Anzahl von Lesepegelspannungen anzeigt, die an empfangene Daten angelegt werden, und um zu bestimmen, ob alle möglichen Lesepegelspannungen an die empfangenen Daten angelegt wurden, indem bestimmt wird, ob die Anzahl von Lesepegelspannungen, die an empfangene Daten angelegt werden, die durch den Zähler angezeigt werden, eine vorbestimmte Anzahl von Lesepegelspannungen erfüllt. Bei einigen Implementierungen kann die Steuerung 102 eingerichtet sein, um einen Satz oder einen Bereich von Lesepegelspannungen anzulegen, zum Beispiel Lesepegelspannungen zwischen 1,2 Volt und 1,5 Volt, und zu bestimmen, ob alle möglichen Lesepegelspannungen angelegt wurden, um die empfangenen Daten zu lesen oder zu dekodieren, basierend darauf, ob alle Lesepegelspannungen innerhalb des Satzes oder des Bereichs der Lesepegelspannungen angelegt werden, um die empfangenen Daten zu lesen oder zu dekodieren. Bei einigen Implementierungen kann die Steuerung 102 eingerichtet sein, um jede Lesepegelspannung zu speichern, die angelegt wird, um die empfangenen Daten in einer Speichereinheit zu lesen oder zu dekodieren und zu bestimmen, ob jede Lesepegelspannung innerhalb des Satzes oder des Bereichs der Lesepegelspannungen basierend auf den Lesepegelspannungen der in der Speichereinheit gespeicherten Lesepegelspannungen und Lesepegelspannungen innerhalb des Satzes oder des Bereichs von Lesepegelspannungen angelegt wird. Zum Beispiel kann die Steuerung 102 eingerichtet sein, um die in der Speichereinheit angelegten und/oder gespeicherten Lesepegelspannungen mit den Lesepegelspannungen in dem Satz oder dem Bereich von Lesepegelspannungen zu vergleichen und zu bestimmen, dass alle möglichen Lesepegelspannungen angelegt werden, wenn jede Lesepegelspannung in dem Satz oder dem Bereich von Lesepegelspannungen in der Speichereinheit angelegt und/oder gespeichert wird.
  • Wenn die Steuerung 102 über die Kodier-/Dekodier-Maschine 104 bestimmt, dass nicht alle möglichen Lesepegelspannungen angelegt werden („NEIN“ bei Block 510), fährt der Prozess mit Block 506 fort, um eine neue verschobene Lesepegelspannung zu bestimmen. Bei Implementierungen, bei denen die Kodier-/Dekodier-Maschine 104 eingerichtet ist, um verschobene Lesepegelspannungen basierend auf einem Spannungsverschiebungsmuster zu bestimmen, können die neuen verschobenen Lesepegelspannungen basierend auf dem Spannungsverschiebungsmuster bestimmt werden. Bei Implementierungen, bei denen die Kodier-/Dekodier-Maschine 104 eingerichtet ist, um verschobene Lesepegelspannungen basierend auf einem Zähler zu bestimmen, der die Häufigkeit der Verschiebungen der Lesepegelspannung angibt. Wenn die Steuerung 102 über die Kodier-/Dekodier-Maschine 104 bestimmt, dass alle möglichen Lesepegelspannungen angelegt wurden („JA“ bei Block 510), dann endet der Prozess.
  • Wenn die Steuerung 102 über die Kodier-/Dekodier-Maschine 104 die empfangenen Daten unter Verwendung der verschobenen Lesepegelspannung erfolgreich liest oder dekodiert („JA“ bei Block 509), dann bestimmt die Steuerung 102 über den Prozessor 103, ob die zum erfolgreichen Lesen und/oder Dekodieren der Daten verwendete verschobene Lesepegelspannung höher oder niedriger als die erste Lesepegelspannung (Block 511) ist. Die Steuerung 102 ordnet über den Prozessor 103 die empfangenen Daten oder die dekodierten Daten einem Zielblock zu, wie etwa einem Zielblock 405, 406 (Block 512). Wenn die Steuerung 102 über den Prozessor 103 bestimmt, dass die verschobene Lesepegelspannung höher als die erste Lesepegelspannung war, dann kann die Steuerung 102 über den Prozessor 103 eingerichtet werden, um die Daten einem Zielblock zuzuordnen, der über einen Programmlöschzykluszähler verfügt, der unter oder gleich einem bestimmten Schwellenwert des Programmlöschzykluszählers ist. Wenn die Steuerung 102 über den Prozessor 103 bestimmt, dass die verschobene Lesepegelspannung niedriger als die erste Lesepegelspannung war, dann kann die Steuerung 102 über den Prozessor 103 eingerichtet werden, die Daten einem Zielblock zuzuordnen, der über einen Programmlöschzykluszähler verfügt, die über oder gleich einem bestimmten Schwellenwert der Programmlöschzykluszähler ist. Die Steuerung 102 kann über den Prozessor 103 eingerichtet sein, um die Daten einem Zielblock zuzuordnen, indem die Daten einem Umlagerungspuffer zugeordnet werden, wie etwa den Umlagerungspuffern 403, 404.
  • In einigen Implementierungen kann die Steuerung 102 über den Prozessor 103 eingerichtet sein, um empfangene Daten Zielblöcken zuzuordnen, indem eine Kennung der empfangenen Daten einem Umlagerungspuffer zugeordnet wird, der den Zielblöcken zugeordnet ist. Zum Beispiel ist, wie in 4 gezeigt, der Umlagerungspuffer 403 den Zielblöcken 405 zugeordnet, und der Umlagerungspuffer 404 ist den Zielblöcken 406 zugeordnet. Die Steuerung 102 kann eingerichtet sein, um die empfangenen Daten oder eine Kennung von empfangenen Daten einem Umlagerungspuffer zuzuordnen, indem die Kennung der empfangenen Daten in einem der Umlagerungspuffer gespeichert wird. Wenn zum Beispiel die empfangenen Daten unter Verwendung einer verschobenen Lesepegelspannung, die höher als die erste Lesepegelspannung ist, erfolgreich gelesen und/oder dekodiert wurden, dann kann die Steuerung 102 über den Prozessor 103 die empfangenen Daten und/oder die Kennung der empfangenen Daten dem Umlagerungspuffer zuordnen, der den Zielblöcken zugeordnet ist, die über einen niedrigen Programmlöschzykluszähler verfügen, wie etwa der Umlagerungspuffer 404, der den Zielblöcken 406 zugeordnet ist. In ähnlicher Weise kann, wenn die empfangenen Daten unter Verwendung einer verschobenen Lesepegelspannung, die niedriger als die erste Lesepegelspannung ist, erfolgreich gelesen und/oder dekodiert wurden, die Steuerung über den Prozessor die empfangenen Daten und/oder die Kennung der empfangenen Daten dem Umlagerungspuffer zuordnen, der den Zielblöcken zugeordnet ist, die über einen hohen Programmlöschzykluszähler verfügen, wie etwa der Umlagerungspuffer 403, der den Zielblöcken 405 zugeordnet ist.
  • Die Steuerung 102 bewirkt über den Prozessor 103, dass die Daten in den zugehörigen Zielblöcken gespeichert werden (Block 513). Die Steuerung 102 kann über den Prozessor 103 eingerichtet sein, um zu bewirken, dass die einem Zielblock zugeordneten empfangenen Daten in dem Zielblock gespeichert werden, indem eine Schreibdatenoperation oder ein Schreibbefehl an den nichtflüchtigen Speicher ausgegeben wird, der die Zielblöcke enthält. Die Steuerung 102 kann über den Prozessor 103 eingerichtet sein, um zu bewirken, dass die einem Umlagerungspuffer zugeordneten empfangenen Daten in den zugeordneten Zielblöcken gespeichert werden. Die Steuerung 102 kann über den Prozessor 103 eingerichtet sein um zu bewirken, dass die einem Umlagerungspuffer zugeordneten empfangenen Daten in den zugeordneten Zielblöcken gespeichert werden, indem eine Daten-Schreiboperation oder ein Schreibbefehls an den nichtflüchtigen Speicher, der die Zielblöcke beinhaltet, ausgegeben werden. Bei einigen Implementierungen kann die Steuerung 102 über den Prozessor 103 eingerichtet sein, um zu bewirken, dass die empfangenen Daten in dem Zielblock gespeichert werden, wenn die Menge der empfangenen Daten oder die dem Umlagerungspuffer zugeordnete Menge an Daten einen Datenschwellenwert erfüllt. Wenn zum Beispiel die dem Umlagerungspuffer zugeordnete Datenmenge 96 KB Daten oder eine physikalische Datenseite erfüllt, dann kann die Steuerung über den Prozessor bewirken, dass die dem Puffer zugeordneten Daten in dem Zielblock gespeichert werden, indem eine Daten-Schreiboperation an die nichtflüchtige Speichervorrichtung ausgegeben oder übertragen wird.
  • Die Blöcke des Flussdiagramms, die in 5 dargestellt sind, wurden als sequentiell auftretend beschrieben. Die vorliegende Technologie ist nicht auf die beschriebene sequentielle Durchführung des dargestellten Prozesses beschränkt. Einer oder mehrere der Blöcke kann/können parallel zu anderen Blöcken in dem dargestellten Prozess ausgeführt werden. Andere Variationen in dem dargestellten Prozess liegen innerhalb des Umfangs der vorliegenden Technologie.
  • Bei einer oder mehreren Implementierungen kann sich ein Quellbereich auf einen Quellblock beziehen. Bei einem oder mehreren Beispielen kann sich ein Quellblock auf einen oder mehrere Quellblöcke beziehen. Ein Quellblock kann als ein Quellspeicherblock bezeichnet werden. Bei einer oder mehreren Implementierungen kann sich ein Zielbereich auf einen Zielblock beziehen. In einem oder mehreren Beispielen kann sich ein Zielblock auf einen oder mehrere Zielblöcke beziehen. Ein Zielblock kann als ein Zielspeicherblock bezeichnet werden. Bei einer oder mehreren Implementierungen kann sich eine Datenerhaltungswiederherstellung auf einen Prozess einer Wiederherstellung von Daten beziehen, indem eine Lesepegelspannung so verschoben oder angepasst wird, dass sie niedriger als eine mittlere Lesepegelspannung oder eine voreingestellte Lesepegelspannung oder eine vorbestimmte Lesepegelspannung ist. Bei einer oder mehreren Implementierungen kann sich eine Störungsfehlerwiederherstellung auf einen Prozess einer Wiederherstellung von Daten beziehen, indem eine Lesepegelspannung so verschoben oder angepasst wird, dass sie höher als eine mittlere Lesepegelspannung oder eine voreingestellte Lesepegelspannung oder eine vorbestimmte Lesepegelspannung ist.
  • Verschiedene Beispiele von Aspekten der Offenbarung werden nachfolgend beschrieben. Diese dienen als Beispiele und schränken die vorliegende Technologie nicht ein.
  • Bei einer oder mehreren Implementierungen beinhaltet ein Datenspeichersystem eine nichtflüchtige Speichervorrichtung einschließlich eines Quellbereichs und eines Zielbereichs, wobei der Zielbereich einen ersten Zielblock und einer zweiten Zielblock beinhaltet, wobei sich der zweite Zielblock von dem ersten Zielblock unterscheidet, und eine Steuerung. Die Steuerung ist eingerichtet, um erste Daten in dem Quellbereich unter Verwendung einer ersten Lesepegelspannung zu lesen. Die Steuerung ist eingerichtet, um zweite Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung zu lesen, die sich von der ersten Lesepegelspannung unterscheidet. Die Steuerung ist eingerichtet, um basierend auf den ersten und zweiten Lesepegelspannungen, jeweils die ersten Daten und die zweiten Daten einem der jeweiligen der ersten und der zweiten Zielblöcke zuzuordnen. Die Steuerung ist eingerichtet, um zu bewirken, dass jede der ersten und zweiten Daten in dem zugeordneten der ersten und zweiten Zielblöcke gespeichert wird.
  • Bei einer oder mehreren Implementierungen beinhaltet ein Computerimplementiertes Verfahren das Lesen erster Daten in einem Quellbereich einer nichtflüchtigen Speichervorrichtung unter Verwendung einer ersten Lesepegelspannung. Das Verfahren beinhaltet das Lesen zweiter Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung, die sich von der ersten Lesepegelspannung unterscheidet. Das Verfahren beinhaltet das Speichern der ersten Daten von dem Quellbereich in einem ersten Zielblock der nichtflüchtigen Speichervorrichtung, die der ersten Lesepegelspannung zugeordnet ist, wobei sich der erste Zielblock in einem Zielbereich der nichtflüchtigen Speichervorrichtung befindet. Das Verfahren beinhaltet das Speichern der zweiten Daten von dem Quellbereich in einem zweiten Zielblock der nichtflüchtigen Speichervorrichtung, die der zweiten Lesepegelspannung zugeordnet ist, wobei sich der zweite Zielblock in dem Zielbereich der nichtflüchtigen Speichervorrichtung befindet.
  • Bei einer oder mehreren Implementierungen beinhaltet ein Datenspeichersystem eine nichtflüchtige Speichervorrichtung einschließlich eines Quellbereichs und eines Zielbereichs, wobei der Zielbereich einen ersten Zielblock und einer zweiten Zielblock beinhaltet, wobei sich der zweite Zielblock von dem ersten Zielblock unterscheidet. Das Datenspeichersystem beinhaltet ein Mittel zum Lesen erster Daten in dem Quellbereich unter Verwendung einer ersten Lesepegelspannung. Das Datenspeichersystem beinhaltet ein Mittel zum Lesen zweiter Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung, die sich von der ersten Lesepegelspannung unterscheidet. Das Datenspeichersystem beinhaltet ein Mittel zum Umlagern der ersten und der zweiten Daten aus dem Quellbereich in den ersten oder den zweiten Zielblock, basierend auf den ersten und zweiten Lesepegelspannungen.
  • In einer oder mehreren Implementierungen kann ein nichtflüchtiges maschinenlesbares Medium maschinenausführbare Anweisungen einschließen, die bei Ausführung durch einem Prozessor ein Verfahren ausführen. Das Verfahren beinhaltet das Lesen erster Daten in einem Quellbereich einer nichtflüchtigen Speichervorrichtung unter Verwendung einer ersten Lesepegelspannung. Das Verfahren beinhaltet das Lesen zweiter Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung, die sich von der ersten Lesepegelspannung unterscheidet. Das Verfahren beinhaltet das Speichern der ersten Daten von dem Quellbereich in einem ersten Zielblock der nichtflüchtigen Speichervorrichtung, die der ersten Lesepegelspannung zugeordnet ist, wobei sich der erste Zielblock in einem Zielbereich der nichtflüchtigen Speichervorrichtung befindet. Das Verfahren beinhaltet das Speichern der zweiten Daten von dem Quellbereich in einem zweiten Zielblock der nichtflüchtigen Speichervorrichtung, die der zweiten Lesepegelspannung zugeordnet ist, wobei sich der zweite Zielblock in dem Zielbereich der nichtflüchtigen Speichervorrichtung befindet.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie für Fachleute aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung gezeigt und beschrieben werden. Die vorliegende Technologie ermöglicht andere und unterschiedliche Konfigurationen und ihre verschiedenen Details ermöglichen Modifikationen in verschiedener anderer Hinsicht, ohne vom Umfang der vorliegenden Technologie abzuweichen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Viele der vorstehend beschriebenen Funktionen eines beispielhaften Prozesses und dargelegten Merkmale und Anwendungen können als Software- oder Firmware-Prozesse implementiert sein, die als ein Satz von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium aufgezeichnet sind (auch als computerlesbares Medium bezeichnet). Wenn diese Anweisungen von einer oder mehreren Verarbeitungseinheit(en) (z. B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en) zum Durchführen der in den Anweisungen angegebenen Maßnahmen. Beispiele prozessorlesbarer Medien beinhalten, sind aber nicht begrenzt auf, flüchtige Speicher, nichtflüchtige Speicher, sowie andere Formen von Medien wie etwa magnetische Medien, optische Medien und elektronische Medien. Das prozessorlesbare Medium enthält keine Trägerwellen und elektronische Signale, die drahtlos oder über verdrahtete Verbindungen übertragen werden.
  • Der Begriff „Software“ soll gegebenenfalls Firmware beinhalten, die sich im Speicher oder anderen im Speicher gespeicherten Anwendungen befindet, die zur Verarbeitung durch einen Prozessor in den Arbeitsspeicher gelesen werden können. Auch können in einigen Implementierungen mehrere Softwareaspekte der vorliegenden Offenbarung als Unterteile eines größeren Programms implementiert werden, während die übrigen individuellen Softwareaspekte der vorliegenden Offenbarung beibehalten werden. In einigen Implementierungen können auch mehrere Software Aspekte als separate Programme implementiert werden. Schließlich liegt jede beliebige Kombination von separaten Programmen, die zusammen einen hier beschriebenen Softwareaspekt implementieren, innerhalb des Umfangs der vorliegenden Offenbarung. Bei einigen Implementierungen definieren die Softwareprogramme, wenn sie installiert sind, um auf einem oder mehreren elektronischen Systemen zu arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Operationen der Softwareprogramme ausführen und durchführen.
  • Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Skript oder Code bekannt) kann in jeder Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, und kann in jeder Form eingesetzt werden, einschließlich als ein eigenständiges Programm oder als Modul, Komponente, Subroutine, Objekt oder eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei gespeichert sein, der andere Programme oder Daten (z. B. ein oder mehrere Skripte, die in einem Markup Language Dokument gespeichert sind) in einer einzelnen Datei, die dem betreffenden Programm zugeordnet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeanteile speichern) enthält.
  • Es versteht sich, dass veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die in diesem Dokument beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet sein (z. B. in einer anderen Reihenfolge angeordnet oder in einer anderen Weise aufgeteilt sein), ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen als eine Veranschaulichung einiger beispielhafter Ansätze dargestellt wird. Basierend auf Designpräferenzen und/oder anderen Überlegungen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet werden kann. Zum Beispiel können in einigen Implementierungen einige der Schritte gleichzeitig ausgeführt werden. Somit stellen die beigefügten Verfahrensansprüche Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sollen nicht auf die spezielle dargestellte Reihenfolge oder Hierarchie beschränkt sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Aspekte in der Praxis umzusetzen. Die vorhergehende Beschreibung stellt verschiedene Beispiele der vorliegenden Offenbarung bereit, und die vorliegende Offenbarung ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Aspekte angewendet werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen den vollen Schutzumfang erhalten, der mit den in Sprachform niedergelegten Ansprüchen konsistent ist, wobei die Bezugnahme auf ein Element im Singular nicht „ein und nur ein“ Element bedeuten soll, sofern dies nicht speziell angegeben ist, sondern „ein oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Pronomen im grammatikalischen Maskulin (z. B. sein) schließen das grammatikalische Feminin und Neutrum (z. B. ihr und sein) ein, und umgekehrt. Überschriften und Untertitel, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die vorliegende Offenbarung nicht ein.
  • Die Prädikatswörter „eingerichtet, um“, „betreibbar, um“ und „programmiert, um“ implizieren keine spezielle materielle oder immaterielle Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Zum Beispiel kann ein Prozessor, der eingerichtet ist, um eine Operation oder eine Komponente zu überwachen, auch bedeuten, dass der Prozessor so programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist, die Operation zu überwachen und zu steuern. Ebenfalls kann ein Prozessor, der eingerichtet ist, um Code auszuführen, als ein Prozessor ausgelegt sein, der programmiert ist, um Code auszuführen oder betreibbar ist, um Code auszuführen.
  • Die Ausdrücke „in Kommunikation mit“ und „gekoppelt“ bedeuten „in direkter Kommunikation mit“ oder „in indirekter Kommunikation mit“ über eine oder mehrere Komponenten, die in diesem Dokument benannt oder nicht benannt sind (z. B. ein Speicherkartenlesegerät).
  • Ein Ausdruck, wie etwa ein „Aspekt“, bedeutet nicht, dass ein solcher Aspekt für die vorliegende Offenbarung wesentlich ist oder dass ein derartiger Aspekt für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck, wie etwa eine „Implementierung“, impliziert nicht, dass eine solche Implementierung für die vorliegende Offenbarung wesentlich ist oder dass eine solche Implementierung für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Implementierung bezieht, kann für alle Aspekte oder einen oder mehrere Aspekte gelten. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise eine „Implementierung“, kann sich auf eine oder mehrere Implementierungen beziehen und umgekehrt. Ein Ausdruck, wie beispielsweise eine „Konfiguration“, impliziert nicht, dass eine solche Konfiguration für die vorliegende Offenbarung wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie z. B. eine „Konfiguration“, kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in der Bedeutung „als Beispiel oder zur Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs zu verstehen.

Claims (20)

  1. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung einschließlich eines Quellbereichs und eines Zielbereichs, wobei der Zielbereich einen ersten Zielblock und einen zweiten Zielblock beinhaltet, wobei sich der zweite Zielblock von dem ersten Zielblock unterscheidet; und eine Steuerung, wobei die Steuerung eingerichtet ist, um: erste Daten in dem Quellbereich unter Verwendung einer ersten Lesepegelspannung zu lesen; zweite Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung zu lesen, die sich von der ersten Lesepegelspannung unterscheidet; basierend auf der ersten und zweiten Lesepegelspannung, jeweils die ersten Daten und die zweiten Daten einem jeweiligen der ersten und der zweiten Zielblöcke zuzuordnen; und zu bewirken, dass jeweils die ersten und zweiten Daten in dem zugeordneten der ersten und zweiten der Zielblöcke gespeichert werden.
  2. Datenspeichersystem gemäß Anspruch 1, wobei der erste Zielblock einen Programmlöschzykluszähler aufweist, der höher als ein Programmlöschzykluszähler des zweiten Zielblocks ist.
  3. Datenspeichersystem gemäß Anspruch 2, wobei die erste Lesepegelspannung niedriger als die zweite Lesepegelspannung ist und wobei jede der ersten und zweiten Lesepegelspannungen einer Fehlerwiederherstellung zugeordnet ist.
  4. Datenspeichersystem gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um: dritte Daten in dem Quellbereich unter Verwendung einer dritten Lesepegelspannung zu lesen, die sich von jeder der ersten und zweiten Lesepegelspannungen unterscheidet; einen Belegungsgrad eines ersten Puffers, der dem ersten Zielblock zugeordnet ist, zu bestimmen; einen Belegungsgrad eines zweiten Puffers, der dem zweiten Zielblock zugeordnet ist, zu bestimmen; und dritte Daten aus dem Quellbereich in einen der ersten und zweiten Puffer umzulagern, basierend auf den bestimmten Belegungsgraden.
  5. Datenspeichersystem gemäß Anspruch 4, wobei die dritte Lesepegelspannung niedriger als die zweite Lesepegelspannung und höher als die erste Lesepegelspannung ist.
  6. Datenspeichersystem gemäß Anspruch 4, wobei der nichtflüchtige Speicher einen ersten Puffer, der dem ersten Zielblock zugeordnet ist, und einen zweiten Puffer, der dem zweiten Zielblock zugeordnet ist, beinhaltet und wobei die Steuerung so eingerichtet ist, dass sie die dritten Daten aus dem Quellbereich in einen der ersten und zweiten Puffer umlagert, wobei der eine der ersten und zweiten Puffer eine geringere Menge an nicht belegtem Datenspeicherplatz aufweist als der andere aus den ersten und zweiten Puffer.
  7. Datenspeichersystem gemäß Anspruch 1, wobei der Quellbereich logische Seiten beinhaltet und wobei eine der logischen Seiten eine Mehrzahl von Codewörtern beinhaltet, wobei die Steuerung eingerichtet ist, um: ein erstes aus der Vielzahl von Codewörtern unter Verwendung einer dritten Lesepegelspannung zu lesen; ein zweites aus der Vielzahl von Codewörtern unter Verwendung einer vierten Lesepegelspannung zu lesen, die sich von der dritten Lesepegelspannung unterscheidet; und die ersten und zweiten aus der Vielzahl von Codewörtern in denselben der ersten und zweiten Zielblöcke umzulagern, basierend auf einem Belegungsgrad eines ersten und eines zweiten Puffers.
  8. Datenspeichersystem gemäß Anspruch 1, wobei die ersten Daten ein erstes Codewort aufweisen, wobei die Steuerung, die eingerichtet ist, um erste Daten zu lesen, die Steuerung aufweist, die eingerichtet ist, um: eine dritte Lesepegelspannung anzulegen, um eine erste Dekodieroperation an dem ersten Codewort durchzuführen, wobei die dritte Lesepegelspannung niedriger als die zweite Lesepegelspannung und höher als die erste Lesepegelspannung ist; zu bestimmen, dass das erste Codewort unter Verwendung der dritten Lesepegelspannung nicht erfolgreich dekodiert wird; und als Antwort auf die Bestimmung, dass das erste Codewort nicht erfolgreich dekodiert wird: die erste Lesepegelspannung zu bestimmen; die erste Lesepegelspannung anzulegen, um eine zweite Dekodieroperation an dem ersten Codewort durchzuführen; und das erste Codewort unter Verwendung der ersten Lesepegelspannung erfolgreich zu dekodieren.
  9. Computer-implementiertes Verfahren für ein Datenspeichersystem, aufweisend: das Lesen erster Daten in einem Quellbereich einer nichtflüchtigen Speichervorrichtung unter Verwendung einer ersten Lesepegelspannung; das Lesen zweiter Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung, die sich von der ersten Lesepegelspannung unterscheidet; das Speichern der ersten Daten von dem Quellbereich in einem ersten Zielblock der nichtflüchtigen Speichervorrichtung, die der ersten Lesepegelspannung zugeordnet ist, wobei sich der erste Zielblock in einem Zielbereich der nichtflüchtigen Speichervorrichtung befindet; und das Speichern der zweiten Daten von dem Quellbereich in einem zweiten Zielblock der nichtflüchtigen Speichervorrichtung, die der zweiten Lesepegelspannung zugeordnet ist, wobei sich der zweite Zielblock in dem Zielbereich der nichtflüchtigen Speichervorrichtung befindet.
  10. Computer-implementiertes Verfahren gemäß Anspruch 9, wobei ein Programmlöschzykluszähler des ersten Zielblocks höher als ein Programmlöschzykluszähler des zweiten Zielblocks ist.
  11. Computer-implementiertes Verfahren gemäß Anspruch 10, wobei die erste Lesepegelspannung niedriger als die zweite Lesepegelspannung ist, wobei die erste Lesepegelspannung einer Datenerhaltungs-Fehlerwiederherstellung zugeordnet ist und wobei die zweite Lesepegelspannung einer Lesestörungs-Fehlerwiederherstellung zugeordnet ist.
  12. Computer-implementiertes Verfahren gemäß Anspruch 9, weiterhin aufweisend: Lesen von dritten Daten in dem Quellbereich unter Verwendung einer dritten Lesepegelspannung, die sich von jeder der ersten und zweiten Lesepegelspannungen unterscheidet; und Umlagern der dritten Daten von dem Quellbereich in einen ersten Puffer oder einen zweiten Puffer, basierend auf den Belegungsgraden des ersten und zweiten Puffers, wobei der erste Puffer dem ersten Zielblock zugeordnet ist und der zweite Puffer dem zweiten Zielblock zugeordnet ist.
  13. Computer-implementiertes Verfahren gemäß Anspruch 12, wobei die dritte Lesepegelspannung niedriger als die zweite Lesepegelspannung und höher als die erste Lesepegelspannung ist.
  14. Computer-implementiertes Verfahren gemäß Anspruch 12, weiterhin aufweisend: das Umlagern der dritten Daten von der Quellregion in einen aus einem ersten und einem zweiten Puffer, wobei der eine der ersten und zweiten Puffer eine geringere Menge an nicht belegtem Datenspeicherplatz als der andere aus dem ersten und dem zweiten Puffer aufweist, wobei der erste Puffer dem ersten Zielblock zugeordnet ist und der zweite Puffer dem zweiten Zielblock zugeordnet ist; und wobei die nichtflüchtige Speichervorrichtung den ersten Puffer und den zweiten Puffer einschließt.
  15. Computer-implementiertes Verfahren gemäß Anspruch 9, weiterhin aufweisend: das Lesen eines ersten aus einer Vielzahl von Codewörtern unter Verwendung einer dritten Lesepegelspannung, wobei die Vielzahl von Codewörtern in einer der logischen Seiten eingeschlossen ist, die in dem Quellbereich beinhaltet sind; das Lesen eines zweiten aus der Vielzahl von Codewörtern unter Verwendung einer vierten Lesepegelspannung, die sich von der dritten Lesepegelspannung unterscheidet; und das Speichern des ersten und zweiten aus der Vielzahl von Codewörtern in denselben der ersten und zweiten Zielblöcke, basierend auf Belegungsgraden erster und zweiter Puffer, die den ersten und zweiten Zielblöcken zugeordnet sind.
  16. Computer-implementiertes Verfahren gemäß Anspruch 15, wobei die ersten Daten ein erstes Codewort aufweisen und wobei das Lesen der ersten Daten aufweist: das Bestimmen, dass das erste Codewort unter Verwendung einer dritten Lesepegelspannung nicht erfolgreich dekodiert wird; und dass das erste Codewort unter Verwendung der ersten Lesepegelspannung erfolgreich dekodiert wird, wobei die erste Lesepegelspannung niedriger als die dritte Lesepegelspannung ist.
  17. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung einschließlich eines Quellbereichs und eines Zielbereichs, wobei der Zielbereich einen ersten Zielblock und einen zweiten Zielblock beinhaltet, wobei sich der zweite Zielblock von dem ersten Zielblock unterscheidet; Mittel zum Lesen erster Daten in dem Quellbereich unter Verwendung einer ersten Lesepegelspannung; Mittel zum Lesen zweiter Daten in dem Quellbereich unter Verwendung einer zweiten Lesepegelspannung, die sich von der ersten Lesepegelspannung unterscheidet; und Mittel zum Umlagern der ersten und der zweiten Daten aus dem Quellbereich in den ersten oder den zweiten Zielblock, basierend auf den ersten und zweiten Lesepegelspannungen.
  18. Datenspeichersystem gemäß Anspruch 17, wobei der erste Zielblock einen Programmlöschzykluszähler aufweist, der höher als ein Programmlöschzykluszähler des zweiten Zielblocks ist.
  19. Datenspeichersystem gemäß Anspruch 18, wobei die ersten und die zweiten Lesepegelspannungen auf einer Fehlerwiederherstellung basieren.
  20. Datenspeichersystem gemäß Anspruch 17, weiterhin aufweisend: Mittel zum Lesen von dritten Daten in dem Quellbereich unter Verwendung einer dritten Lesepegelspannung, die sich von jeder der ersten und zweiten Lesepegelspannungen unterscheidet; und Mittel zum Umlagern der dritten Daten aus dem Quellbereich in einen ersten Puffer oder einen zweiten Puffer, basierend auf Belegungsgraden des ersten und des zweiten Puffers, wobei der erste Puffer dem ersten Zielblock zugeordnet ist und der zweite Puffer dem zweiten Zielblock zugeordnet ist.
DE102019116520.2A 2018-09-26 2019-06-18 Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind Pending DE102019116520A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/143,242 US11086529B2 (en) 2018-09-26 2018-09-26 Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery
US16/143,242 2018-09-26

Publications (1)

Publication Number Publication Date
DE102019116520A1 true DE102019116520A1 (de) 2020-03-26

Family

ID=69725114

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019116520.2A Pending DE102019116520A1 (de) 2018-09-26 2019-06-18 Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind

Country Status (3)

Country Link
US (2) US11086529B2 (de)
CN (1) CN110955385B (de)
DE (1) DE102019116520A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10891065B2 (en) * 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11675509B2 (en) * 2020-10-29 2023-06-13 Micron Technology, Inc. Multiple open block families supporting multiple cursors of a memory device
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US20230280926A1 (en) * 2022-03-03 2023-09-07 Western Digital Technologies, Inc. Data Relocation With Protection For Open Relocation Destination Blocks

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7859932B2 (en) * 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
KR101578518B1 (ko) * 2009-07-07 2015-12-17 삼성전자주식회사 불휘발성 메모리 장치의 읽기 방법 및 그것을 포함하는 메모리 시스템
KR101678909B1 (ko) * 2009-09-17 2016-11-23 삼성전자주식회사 플래시 메모리 시스템 및 그것의 소거 리프레쉬 방법
US8363478B1 (en) * 2010-02-17 2013-01-29 Marvell International Ltd. Group based read reference voltage management in flash memory
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
KR20120001405A (ko) * 2010-06-29 2012-01-04 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
DE102011107193A1 (de) * 2011-07-13 2013-01-17 Epcos Ag Elektrische Vorrichtung
KR20130061967A (ko) * 2011-12-02 2013-06-12 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
US8942100B2 (en) * 2012-09-18 2015-01-27 Cisco Technology, Inc. Real time and high resolution buffer occupancy monitoring and recording
US9218881B2 (en) * 2012-10-23 2015-12-22 Sandisk Technologies Inc. Flash memory blocks with extended data retention
KR20140096875A (ko) * 2013-01-29 2014-08-06 삼성전자주식회사 메모리 시스템의 및 그것의 블록 관리 방법
US9870830B1 (en) * 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9450610B1 (en) * 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9633740B1 (en) * 2016-02-11 2017-04-25 Seagate Technology Llc Read retry operations where likelihood value assignments change sign at different read voltages for each read retry
KR102252378B1 (ko) * 2014-10-29 2021-05-14 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US9536601B2 (en) * 2014-11-05 2017-01-03 Macronix International Co., Ltd. Threshold voltage grouping of memory cells in same threshold voltage range
US9720754B2 (en) * 2014-11-20 2017-08-01 Western Digital Technologies, Inc. Read level grouping for increased flash performance
US9620226B1 (en) * 2015-10-30 2017-04-11 Western Digital Technologies, Inc. Data retention charge loss and read disturb compensation in solid-state data storage systems
US9846544B1 (en) * 2015-12-30 2017-12-19 EMC IP Holding Company LLC Managing storage space in storage systems
US9842022B2 (en) * 2016-01-20 2017-12-12 Intel Corporation Technologies for reducing latency in read operations
US10168917B2 (en) * 2016-04-05 2019-01-01 International Business Machines Corporation Hotness based data storage for facilitating garbage collection
US10290353B2 (en) 2016-09-06 2019-05-14 Western Digital Technologies, Inc. Error mitigation for 3D NAND flash memory
KR20180040288A (ko) * 2016-10-12 2018-04-20 삼성전자주식회사 비휘발성 메모리 장치의 리클레임 제어 방법, 상기 비휘발성 메모리 장치를 포함하는 저장 장치의 동작 방법 및 저장 장치
US10656847B2 (en) * 2018-05-10 2020-05-19 International Business Machines Corporation Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation

Also Published As

Publication number Publication date
US20210318810A1 (en) 2021-10-14
CN110955385B (zh) 2023-09-19
US11086529B2 (en) 2021-08-10
US11775178B2 (en) 2023-10-03
US20200097189A1 (en) 2020-03-26
CN110955385A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102013218440A1 (de) Verfahren zum Betreiben eines Flash-Speicherbauelements sowie Bildverarbeitungssystem
US20190235789A1 (en) Method for performing writing management in a memory device, and associated memory device and controller thereof
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
US20190278515A1 (en) Managing internal command queues in solid state storage drives
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
US11640354B2 (en) Logical-to-physical mapping of data groups with data locality
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE102019133147A1 (de) Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102018123961A1 (de) Gruppen-leseaktualisierung

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R016 Response to examination communication