DE102020116190A1 - Slc-/qlc-doppelprogrammierung und ressourcenfreigabe - Google Patents

Slc-/qlc-doppelprogrammierung und ressourcenfreigabe Download PDF

Info

Publication number
DE102020116190A1
DE102020116190A1 DE102020116190.5A DE102020116190A DE102020116190A1 DE 102020116190 A1 DE102020116190 A1 DE 102020116190A1 DE 102020116190 A DE102020116190 A DE 102020116190A DE 102020116190 A1 DE102020116190 A1 DE 102020116190A1
Authority
DE
Germany
Prior art keywords
buffer
data
storage device
release
slc
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
DE102020116190.5A
Other languages
English (en)
Inventor
Karin Inbar
Shay Benisty
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 DE102020116190A1 publication Critical patent/DE102020116190A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • 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/0658Controller construction arrangements
    • 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
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine verbesserte Grob-Fein-Programmierung. Anstatt anfänglich in eine SLC zu schreiben und dann später ein Grobschreiben in eine QLC mit den aus der SLC gelesenen Daten und dann ein Feinschreiben in die QLC mit aus der SLC wieder gelesenen Daten durchzuführen, kann das Grobschreiben in die QLC parallel zum anfänglichen Schreiben in die SLC unter Verwendung desselben Puffers durchgeführt werden. Sobald das Grobschreiben in die QLC abgeschlossen wurde und das Schreiben in die SLC ebenfalls abgeschlossen wurde, kann der Datenpuffer freigegeben werden. Die in die SLC geschriebenen Daten werden dann aus der SLC gelesen und werden zum ersten und einzigen Mal durch einen Verschiebungspuffer geleitet, um dann unter Verwendung der Feinprogrammierung in die QLC geschrieben zu werden. Somit werden die Daten nur einmal durch den Verschiebungspuffer geleitet, und der Verschiebungspuffer kann nach nur einem Durchleiten der Daten dadurch zur Verwendung freigegeben werden.

Description

  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf eine Verbesserung des Grob-Fein-Schreibens in MLC, wie QLC, und angemessene Freigabe von Pufferressourcen nach der Verwendung.
  • Beschreibung des Stands der Technik
  • Das Programmieren oder Schreiben von Daten kann zwei Schreibphasen erfordern: grob und fein. Bei der Grob-Fein-Programmierung können die Bits, die geschrieben werden sollen, nicht einfach einmal geschrieben werden. Stattdessen müssen die Daten zuerst durch die Grobprogrammierung geschrieben werden, bei der Spannungsimpulse bereitgestellt werden, um den aktuellen Zustand in einen gelösten, aber nicht vollständig gelösten Zustand zu versetzen. Die Feinprogrammierung wird zu einem Zeitpunkt nach der Grobprogrammierung durchgeführt, um die Daten wieder in den vollständig gelösten Zustand zu schreiben.
  • Um eine Grob-Fein-Programmierung durchzuführen, können mehrere Megabyte mehrere Male programmiert werden. Um die mehrfache Programmierung durchzuführen, muss eine große Menge von Daten zurückgelegt werden, um eine wiederholte Programmierung mit genau den gleichen Daten durchzuführen. Das Speichern der Daten nimmt Pufferraum in Anspruch. Der Pufferraum kann nicht freigegeben werden, bis die Daten mindestens zweimal geschrieben wurden, einmal grob und einmal fein. Da der Pufferraum verwendet wird, können keine zusätzlichen Daten in den Pufferraum gelegt werden, was zu einer langsameren Verarbeitung und unzureichender Pufferspeicherung führt.
  • Eine Lösung besteht darin, die Speicherkapazität des Puffers einfach zu erhöhen. Das Hinzufügen zusätzlicher Pufferspeicherkapazität erfordert jedoch zusätzliche Mittel für Pufferspeichervorrichtungen mit größerer Kapazität. Zusätzliche Pufferspeichervorrichtungen oder größere Pufferspeichervorrichtungen erfordern mehr Platz auf immer kleiner werdenden Vorrichtungen.
  • Daher besteht im Stand der Technik ein Bedarf an einer verbesserten Grob-Fein-Programmierung.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine verbesserte Grob-Fein-Programmierung. Anstatt anfänglich in eine SLC zu schreiben und dann später ein Grobschreiben in eine MLC mit den aus der SLC gelesenen Daten und dann ein Feinschreiben in die MLC mit aus der SLC wieder gelesenen Daten durchzuführen, kann das Grobschreiben in die MLC parallel zum anfänglichen Schreiben in die SLC unter Verwendung desselben Puffers durchgeführt werden. Sobald das Grobschreiben in die MLC abgeschlossen wurde und das Schreiben in die SLC ebenfalls abgeschlossen wurde, kann der Datenpuffer freigegeben werden. Die in die SLC geschriebenen Daten werden dann aus der SLC gelesen und werden zum ersten und einzigen Mal durch einen Verschiebungspuffer geleitet, um dann unter Verwendung der Feinprogrammierung in die MLC geschrieben zu werden. Somit werden die Daten nur einmal durch den Verschiebungspuffer geleitet, und der Verschiebungspuffer kann nach nur einem Durchleiten der Daten dadurch zur Verwendung freigegeben werden.
  • In einer Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen, wobei die eine oder die mehreren Speichervorrichtungen einen SLC-Speicher und einen MLC-Speicher einschließen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung so eingerichtet ist, dass sie: Daten in den SLC-Speicher schreibt; Daten grob in den MLC-Speicher schreibt, wobei das Grobschreiben der Daten in den MLC-Speicher parallel zum Schreiben von Daten in den SLC-Speicher unter Verwendung des gleichen Puffers erfolgt; Daten aus dem SLC-Speicher liest; und die aus dem SLC-Speicher gelesenen Daten in den MLC-Speicher fein schreibt.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung so eingerichtet ist, dass sie: bestimmt, ob eine erste Pufferfreigabeanforderung für einen Puffer empfangen wurde; bestimmt, ob eine zweite Pufferfreigabeanforderung für den Puffer empfangen wurde; und den Puffer an einen verfügbaren Pufferpool von Puffern freigibt.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen; Mittel zum Bestimmen, dass ein Puffer zwei Freigabeanforderungen empfangen hat; und Mittel zum Grobschreiben in den MLC-Speicher parallel zum Schreiben in den SLC-Speicher.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend dargelegten Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist eine schematische Veranschaulichung eines Systems zum Speichern von Daten gemäß einer Ausführungsform.
    • 2A ist eine schematische Veranschaulichung eines Prozesses des Grob-Fein-Schreibens gemäß einer Ausführungsform.
    • 2B ist eine schematische Veranschaulichung eines Prozesses des Grob-Fein-Schreibens gemäß einer anderen Ausführungsform.
    • 3 ist ein Flussdiagramm, das ein Verfahren zum Bestimmen, ob ein Puffer zur weiteren Verwendung gemäß einer Ausführungsform freigegeben werden kann, veranschaulicht.
    • 4 ist eine schematische Veranschaulichung eines Systems zur Speicherung von Daten gemäß einer anderen Ausführungsform.
    • 5 ist ein Flussdiagramm, das ein Verfahren zum Bestimmen, ob ein Puffer zur weiteren Verwendung gemäß einer anderen Ausführungsform freigegeben werden kann, veranschaulicht.
    • 6 ist eine schematische Veranschaulichung eines Systems zum Speichern von Daten gemäß einer anderen Ausführungsform.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Auch wenn Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder dem Stand der Technik erzielen können, bedeutet die Tatsache, ob durch eine bestimmte Ausführungsform ein besonderer Vorteil erzielt wird oder nicht, keine Einschränkung der Offenbarung. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beigefügten Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen erwähnt. Ebenso soll eine Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und soll nicht als Element oder Einschränkung der beigefügten Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine verbesserte Grob-Fein-Programmierung. Anstatt anfänglich in eine SLC zu schreiben und dann später ein Grobschreiben in eine MLC mit den aus der SLC gelesenen Daten und dann ein Feinschreiben in die MLC mit aus der SLC wieder gelesenen Daten durchzuführen, kann das Grobschreiben in die MLC parallel zum anfänglichen Schreiben in die SLC unter Verwendung desselben Puffers durchgeführt werden. Sobald das Grobschreiben in die MLC abgeschlossen wurde und das Schreiben in die SLC ebenfalls abgeschlossen wurde, kann der Datenpuffer freigegeben werden. Die in die SLC geschriebenen Daten werden dann aus der SLC gelesen und werden zum ersten und einzigen Mal durch einen Verschiebungspuffer geleitet, um dann unter Verwendung der Feinprogrammierung in die MLC geschrieben zu werden. Somit werden die Daten nur einmal durch den Verschiebungspuffer geleitet, und der Verschiebungspuffer kann nach nur einem Durchleiten der Daten dadurch zur Verwendung freigegeben werden. Es versteht sich, dass, während QLC beschrieben wurde, die Ausführungsformen hierin auf Multi-Level-Zellen (MLCs), einschließlich TLCs und QLCs, anwendbar sind.
  • 1 ist eine schematische Veranschaulichung eines Systems zum Speichern von Daten gemäß einer Ausführungsform. Das System 100 zum Speichern von Daten gemäß einer Ausführungsform schließt eine Host-Vorrichtung 102 und eine Datenspeichervorrichtung 104 ein. Die Host-Vorrichtung 102 schließt einen dynamischen Direktzugriffsspeicher (DRAM) 112 ein. Die Host-Vorrichtung 102 kann eine breite Palette an Vorrichtungen einschließen, wie etwa Computerserver, Netzwerkspeichereinheiten (NAS-Einheiten), Desktopcomputer, Notebookcomputer (d. h. einen Laptop), Tabletcomputer (d. h. ein „Smartpad“), Set-Top-Boxen, Telefongeräte (d. h. „Smartphones“), Fernseher, Kameras, Anzeigevorrichtungen, digitale Medienplayer, Videospielkonsolen, Video-Streaming-Vorrichtungen und Automobilanwendungen (z. B. zum Abbilden [Mapping], autonomen Fahren). In bestimmten Ausführungsformen schließt der Host-Vorrichtung 102 jede Vorrichtung mit einer Verarbeitungseinheit oder einer beliebigen Form von Hardware ein, die in der Lage ist, Daten zu verarbeiten, einschließlich einer Universalverarbeitungseinheit, dedizierter Hardware (wie einer anwendungsspezifischen integrierten Schaltung (ASIC)), konfigurierbarer Hardware wie einem Field Programmable Gate Array (FPGA) oder einer anderen Form von Verarbeitungseinheit, die mittels Softwareanweisungen, Mikrocode oder Firmware eingerichtet ist.
  • Die Datenspeichervorrichtung 104 kommuniziert mit der Host-Vorrichtung 102 über eine Schnittstelle 106, die in der Datenspeichervorrichtung 104 eingeschlossen ist. Die Datenspeichervorrichtung 104 schließt eine Steuerung 108, einen Puffer 114 und eine oder mehrere Speichervorrichtungen 110 ein. Die Datenspeichervorrichtung 104 kann ein internes Speicherlaufwerk sein, wie etwa eine Notebook-Festplatte oder eine Desktop-Festplatte. Die Datenspeichervorrichtung 104 kann eine entnehmbare Massenspeichervorrichtung sein, wie etwa unter anderem eine tragbare, entnehmbare Speichervorrichtung, wie etwa eine Speicherkarte (z. B. eine sichere digitale (SD-)Karte, eine mikrosichere digitale (micro-SD-)Karte oder eine Multimediakarte (MMC)) oder eine universelle serielle Bus-Vorrichtung (USB-Vorrichtung). Die Datenspeichervorrichtung 104 kann die Form einer eingebetteten Massenspeichervorrichtung annehmen, wie etwa eines eingebetteten eSD/eMMC-Flash-Speichers, der in der Host-Vorrichtung 102 eingebettet ist. Die Datenspeichervorrichtung 104 kann auch eine beliebige andere Art von interner Speichervorrichtung, entnehmbarer Speichervorrichtung, eingebetteter Speichervorrichtung, externer Speichervorrichtung oder Netzwerkspeichervorrichtung sein.
  • Die Speichervorrichtung 110 kann unter anderem eine interne oder externe Speichereinheit sein. Die Speichervorrichtung 110 beruht auf einem Halbleiterspeicherchip, in dem Daten als Direktzugriffspeicher (RAM), Nurlesespeicher (ROM) oder andere Arten von RAM und ROM gespeichert werden können. Ein RAM wird zur vorübergehenden Speicherung von Daten eingesetzt, wohingegen ein ROM zum dauerhaften Speichern von Daten eingesetzt wird.
  • Die Datenspeichervorrichtung 104 schließt eine Steuerung 108 ein, welche die Vorgänge der Datenspeichervorrichtung 104 verwaltet, wie etwa Schreibabläufe oder Leseabläufe von der Speichervorrichtung 110. Die Steuerung 108 führt mit computerlesbaren Programmcodes (z. B. Software oder Firmware) ausführbare Anweisungen (hierin als „Anweisungen“ bezeichnet) für die Übertragung von Daten aus. Die Anweisungen können durch verschiedene Komponenten der Steuerung 108 ausgeführt werden, wie etwa durch einen Prozessor, Logik-Gates, Schalter, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logiksteuerungen, eingebettete Mikrosteuerungen und andere Komponenten der Steuerung 108.
  • Die Datenspeichervorrichtung 104 schließt einen Puffer 114 ein, der ein Bereich einer Speicherung eines physischen Speichers ist, der dazu verwendet wird, Daten vorübergehend zu speichern, während sie von einem Ort zu einem anderen bewegt werden (d. h. von der Host-Vorrichtung 102 zu der Datenspeichervorrichtung 104).
  • Daten können an den oder aus dem DRAM 112 der Host-Vorrichtung 102 an die Datenspeichervorrichtung 104 übertragen werden. Ein Datenübertragungsweg kann von dem DRAM 112 der Host-Vorrichtung 102 ausgehen und über die Schnittstelle 106 der Datenspeichervorrichtung 104 an die Steuerung 108 kommunizieren. Die Daten laufen dann durch den Puffer 114 der Datenspeichervorrichtung 104 und werden in der Speichervorrichtung 110 gespeichert. Wenn die Daten in einen SLC-Speicher geschrieben werden, dann werden die Daten einfach geschrieben. Wenn die Daten jedoch in einen MLC-Speicher, wie einen QLC-Speicher, geschrieben werden, dann tritt ein Prozess des Grob-Fein-Schreibens auf. Es ist zu beachten, dass Schreiben und Programmieren während der gesamten Offenbarung austauschbar verwendet werden können.
  • 2A ist eine schematische Veranschaulichung des Prozesses des Grob-Fein-Schreibens nach dem Stand der Technik. Die Daten stammen von dem Host-DRAM 112 und werden durch den Puffer 114 der Datenspeichervorrichtung 104 geleitet. Die Daten werden auf die Single-Level-Zelle (SLC) 202 geschrieben und dann durch den Verschiebungspuffer 204 übertragen, um auf die Quad-Level-Zelle (QLC) 206 geschrieben zu werden. Das anfängliche Schreiben auf die QLC 206 ist das „Grobschreiben“. Die Daten werden erneut gelesen und als „Feinschreiben“ von SLC 202 an den Verschiebungspuffer 204 an QLC 206 übertragen. Die gleichen Daten werden 5 Mal durch den NAND-Bus (d. h. einmal durch den Puffer 114 und viermal durch den Puffer 204) geleitet. Die Gesamt-NAND-Last von Puffer 114 zu QLC 206 besteht aus 5 Übertragungen: 1 Schreiben auf SLC 202, 1 Lesen aus SLC 202, 1 Schreiben auf QLC 206 (grob), 1 Lesen aus SLC 202 und 1 Schreiben auf QLC 206 (grob). Die Gesamt-DRAM-Last für das Grob- und Feinschreiben beträgt 4 Übertragungen: Verschiebung von SLC 202 nach QLC 206 (grob) und Verschiebung von SLC 202 nach QLC 206 (fein). In dem Fall, dass sich der Verschiebungspuffer 204 in Doppeldatenraten (DDR) befindet, werden die Daten durch die DDR mindestens 4 Mal für 2 Lese- und 2 Schreibvorgänge geleitet. Der Puffer 114 kann sich im DRAM befinden, und die Daten werden durch den DRAM 5 Mal geleitet. Ein Leistungsengpass kann aufgrund des NAND-Bus-Durchsatzes und des DRAM-Busdurchsatzes auftreten.
  • 2B ist eine schematische Veranschaulichung eines Prozesses des Grob-Fein-Schreibens gemäß einer Ausführungsform. Um den Leistungsengpass aufgrund des NAND-Bus-Durchsatzes und des DRAM-Bus-Durchsatzes des Prozesses des Grob-Fein-Schreibens nach dem Stand der Technik in 2A zu beheben, führt die schematische Veranschaulichung in 2B das QLC-Grobschreiben parallel zum SLC-Programmierschritt aus. Der Prozess verwendet die gleichen Ressourcen und Puffer, wodurch die Anzahl der NAND-Lastübertragungen (von 5 auf 4) und der DRAM-Lastübertragungen (von 4 auf 2) verringert wird.
  • Der Host-DRAM 112 leitet Daten durch den Puffer 114. Die Daten werden aus dem Puffer 114 gelesen und parallel zu SLC 202 und QLC 206 geschrieben. Das anfängliche Schreiben auf QLC 206 aus Puffer 114 ist der Grobschritt. Die Daten werden aus der SLC 202 gelesen und durch den Verschiebungspuffer 204 an die QLC 206 geleitet. Das Schreiben auf QLC 206 aus SLC 202 ist der Feinschritt.
  • In einer Ausführungsform sind der Puffer 114 und der Verschiebungspuffer 204 separate Elemente. In einer anderen Ausführungsform sind der Puffer 114 und der Verschiebungspuffer 204 derselbe Puffer. In beiden Fällen müssen die Daten den Puffer 14 zweimal verlassen. Daher kann der Puffer 114 erst dann zur weiteren Verwendung freigegeben werden, wenn die Daten sowohl für SLC 202 als auch für QLC 206 freigegeben wurden.
  • 3 ist ein Flussdiagramm, das ein Verfahren zum Bestimmen, ob ein Puffer zur weiteren Verwendung gemäß einer Ausführungsform freigegeben werden kann, veranschaulicht. Ein oder mehrere Blöcke des Verfahrens 300 können von der Steuerung 108 ausgeführt werden durch Ausführen von computerlesbaren Programmcodes (z. B. Software oder Firmware) ausführbaren Anweisungen, die in Datenspeichervorrichtung 104 gespeichert sind. Zu der ASIC-Steuerung 108 wird eine dedizierte Hardware (HW)-Unterstützung zur Doppelfreigabe von Ressourcen als Ergebnis der Doppelprogrammierung der gleichen Daten für die SLC 202 und die QLC 206 hinzugefügt. Ein Programmier-Firmware- (FW-)Fluss wird geändert, um paralleles Schreiben auf die SLC 202 und die QLC-FG 206 durchzuführen. Die ASIC-Steuerung 108 empfängt eine Pufferfreigabeanforderung 302, wenn Daten parallel auf die SLC 202 und die QLC 206 geschrieben werden. Der Puffer 114 wird freigegeben, wenn bestimmte Kriterien erfüllt sind, wodurch Speicherplatz frei wird. Bei Block 304 bestimmt die ASIC-Steuerung 108, ob das Doppelfreigabemerkmal (z. B. gemeinsame Freigabe) bei Puffer 114 aktiviert ist. Wenn das Merkmal nicht aktiviert ist, wird der Puffer 114 an den verfügbaren Pufferpool bei Block 308 freigegeben. Wenn das Merkmal aktiviert ist, bestimmt die ASIC-Steuerung 108, ob es eine zweite Freigabeanforderung des gleichen Puffers bei Block 306 gibt. Der Puffer 114 wird bei Block 310 nicht freigegeben, wenn es keine zweite Freigabeanforderung des Puffers 114 gibt. Der Puffer 114 wird an den verfügbaren Pufferpool bei Block 312 freigegeben, wenn es eine zweite Freigabeanforderung des Puffers 114 gibt. Die Zonen SLC 202 und QLC 206 können in verschiedenen Kanälen/Rohchips implementiert sein und können unabhängig voneinander eine Freigabeanforderung ausgeben. Die Doppelfreigabe von Ressourcen ermöglicht eine beliebige Reihenfolge der Freigabeanforderungen von Puffer 114. Bei Block 306 wird in einem Doppelfreigabe-Bitmap-Register ein Wert „1“ oder „0“ gespeichert, der den Freigabestatus des betreffenden Puffers enthält. Ein Wert „1“ gibt an, dass die erste Freigabeanforderung bei Block 302 an den Puffer 114 ausgegeben wurde, und ein Wert „0“ gibt an, dass bei Block 302 keine Freigabeanforderung ausgegeben wurde. Bei Block 314 wird der Wert des entsprechenden Bits im Dual-Release-Bitmap-Register invertiert, um die Freigabeanforderung des Puffers 114 anzugeben. Der Puffer 114 wird freigegeben, wenn sowohl SLC 202 als auch QLC 206 eine Freigabeanforderung ausgeben.
  • 4 ist eine schematische Veranschaulichung eines Systems zur Speicherung von Daten gemäß einer anderen Ausführungsform. Das System 400 zum Speichern von Daten gemäß einer Ausführungsform schließt eine Host-Vorrichtung 102, eine Datenspeichervorrichtung 104, einen Dual-Releaser 402 (z.B. gemeinsamen Releaser) und einen Ressourcen-Server 404 ein. Der Dual-Releaser 402 schließt eine interne Zwischenverbindung 408, ein Dual-Release-Register 410 (z. B. Joint-Release-Register), einen Re-Release-Zugriffsmanipulator 412 und ein Dual-Releaser-Bitmap-Register 414 (z. B. Joint-Releaser-Bitmap-Register) ein. Die interne Zwischenverbindung 408 ermöglicht den Zugriff auf das Dual-Releaser-Register 410, den Re-Release-Zugriffsmanipulator 412 und das Dual-Releaser-Bitmap-Register 414. Der Dual-Releaser 402 kommuniziert mit dem Ressourcen-Server (RS) 404, um die Ressource (d.h. Puffer 114) bei Block 406 freizugeben, wenn die Kriterien des Dual-Release-Verfahrens 300 erfüllt sind.
  • Das Dual-Releaser-Bitmap-Register 414 weist jedem zufällig zugewiesenen Puffer ein Bit zu. Das Dual-Release-Bitmap-Register 414 weist den Bitwert durch das Bestimmen des Haltens eines Freigabezustands jedes Puffers zu. Die Definition eines neuen Bits in dem Register für Ressourcenfreigabe 406 ermöglicht dem Tunneling Random Access Memory (TRAM) mit zwei Anschlüssen eine zufällige Zuweisung einer gemeinsamen Freigabe. Wenn der erste Zugriff auf die Ressourcenfreigabe 406 fehlerhaft ist, wird der Puffer aus dem Dual-Releaser 404 nicht freigegeben. Der zweite Zugriff auf die Ressourcenfreigabe 406 gibt den Puffer aus dem Dual-Releaser 404 frei. Die Verringerung der Zeiten, in denen die gleichen Daten durch den NAND-Bus geleitet werden, von 5 auf 4, kann die Schreibleistung potenziell um 0-10 %, 10-20 %, 20-30 %, 30-40 %, 40-50 % oder im Bereich von 0-50 % verbessern, wobei der Durchschnitt bei 25 % liegt. Die Verringerung der Zeiten der verschobenen Daten durch den DRAM um 2 (von 4 oder 5 auf 2 oder 3) kann den DRAM-Durchsatz potenziell um 0-10 %, 10-20 %, 20-30 %, 30-40 %, 40-50 %, 50-60 %, 60-70 % oder im Bereich von 0-70 % verbessern, wobei 50-66 % mathematisch abgeleitet werden.
  • 5 ist ein Flussdiagramm, das ein Verfahren zum Bestimmen, ob ein Puffer zur weiteren Verwendung gemäß einer anderen Ausführungsform freigegeben werden kann, veranschaulicht. Ein oder mehrere Blöcke des Verfahrens 500 können von der Steuerung 108 durch Ausführen von computerlesbarem Programmcode (z. B. Software oder Firmware) ausführbaren Anweisungen durchgeführt werden, die in der Datenspeichervorrichtung 104 gespeichert sind. Die Anweisungen werden als logisches Verfahren ausgeführt, um bestimmten Variablen eine 0 oder 1 zuzuordnen, die durch das Argument bestimmt wird. Bei Block 502 werden Daten über den Grobfluss auf SLC 202 und QLC 206 geschrieben und setzen „FirstFail“ und „SecondFail“ gleich 0. Bei Block 504 enthält der temporäre Puffer 114 die Schreibdaten und die ausgegebene Schreibanforderung SLC 202 und Grobschreibanforderung QLC 206. Wenn die erste Freigabeanforderung bei Block 506 empfangen wird, fährt das Verfahren mit der zweiten Freigabeanforderung bei Block 512 fort. Wenn das Programm keine erste Freigabeanforderung bei Block 504 empfängt, weist der Programmfehler bei Block 508 „FirstFail“ bei Block 510 erneut von 0 auf 1 zu. Ein „FirstFail“ gleich 1 bedeutet, dass die erste Freigabe nicht ausgegeben wurde. Wenn das Programm keine zweite Freigabeanforderung bei Block 512 empfängt, weist der Programmfehler bei Block 514 „SecondFail“ bei Block 516 erneut von 0 auf 1 zu. Ein „SecondFail“ gleich 1 bedeutet, dass die zweite Freigabe nicht ausgegeben wurde. Wenn „FirstFail“ oder „SecondFail“ oder beide gleich 1 sind, dann wird der temporäre Puffer 114 bei Block 520 nicht freigegeben. Wenn „FirstFail“ und „SecondFail“ gleich 0 sind, dann wird der temporäre Puffer 114 bei Block 522 freigegeben.
  • Während eines Datenfehlers bei Block 508 oder Block 514 können Datenpuffer im statischen Direktzugriffsspeicher (SRAM) bei Puffer 114 oder im DRAM an der Host-Vorrichtung 112 verfügbar sein oder nicht. Die Datenwiederherstellung kann von der Verfügbarkeit von Datenpuffern für die Datenwiederherstellung abhängen oder ein anderes Schema verwenden (d. h. Wiederherstellung mit Paritäten). Wenn beim Schreiben von Daten in die QLC 206 während des Grobschrittes ein Programmfehler auftritt, werden die Daten entweder in die SLC 206 programmiert oder sind noch im SRAM bei Puffer 114 oder im DRAM bei der Host-Vorrichtung 112 zur Wiederherstellung verfügbar.
  • 6 ist eine schematische Veranschaulichung eines Systems zum Speichern von Daten gemäß einer anderen Ausführungsform. Das System 600 zum Speichern von Daten gemäß einer Ausführungsform schließt ein Host-Computersystem 602 und eine Datenspeichervorrichtung 610 ein. Das Host-Computersystem 602 verwendet Parallel-Redundanz-Protokolle (PRPs) 604, Datenpuffer 606 und andere Komponenten 608 des Host-Computersystems 602, die eingeschlossen sein können, aus Gründen der Übersichtlichkeit jedoch nicht gezeigt sind. Das Host-Computersystem 602 kann eine breite Palette an Vorrichtungen einschließen, wie Computerserver, Netzwerkspeichereinheiten (NAS-Einheiten), Desktopcomputer, Notebookcomputer (d. h. einen Laptop), Tabletcomputer (d. h. ein „Smartpad“), Set-Top-Boxen, Telefongeräte (d. h. „Smartphones“), Fernseher, Kameras, Anzeigevorrichtungen, digitale Medienplayer, Videospielkonsolen, Video-Streaming-Vorrichtungen und Automobilanwendungen (z. B. zum Abbilden [Mapping], autonomen Fahren). In bestimmten Ausführungsformen schließt das Host-Computersystem 602 jede Vorrichtung mit einer Verarbeitungseinheit oder einer beliebigen Form von Hardware ein, die in der Lage ist, Daten zu verarbeiten, einschließlich einer Universalverarbeitungseinheit, dedizierter Hardware (wie einer anwendungsspezifischen integrierten Schaltung (ASIC)), konfigurierbarer Hardware wie einem Field Programmable Gate Array (FPGA) oder einer anderen Form von Verarbeitungseinheit, die mittels Softwareanweisungen, Mikrocode oder Firmware eingerichtet ist.
  • Andere Komponenten 608 des Host-Computersystems 602 können eine zentrale Verarbeitungseinheit (CPU) einschließen, die mit einem Host-Speicherplatz wie einem DRAM oder anderen Hauptspeichern verbunden ist, sind jedoch darauf nicht beschränkt. Ein Anwendungsprogramm kann in einer anderen Komponente 608 des Host-Computersystems 602, wie einem Speicherplatz, zur Ausführung von den Komponenten des Host-Computersystems 602 gespeichert werden. Der Host-Speicherplatz kann Host-Warteschlangen, wie Befehlsübermittlungswarteschlangen und Befehlsabschlusswarteschlangen, einschließen. Der Host-Speicherplatz kann Datenpuffer 606, wie einen Host-Datenpuffer, einschließen.
  • Der Steuerung 612 kann die Schnittstelle 630 für den Eintritt von Nachrichten vom Host-Computersystem 602 an die Datenspeichervorrichtung 610 und den Austritt von Nachrichten von der Datenspeichervorrichtung 610 an das Host-Computersystem 602 über die Schnittstelle 630 einschließen. Die Schnittstelle 630 weist die Komponenten Peripheral Component Interface Express (PCle), Medium Access Control (MAC) und Physical Layer (PHY) auf. Eine PCIe-Verbindung kann eine bis zweiunddreißig Spuren darstellen, in Abhängigkeit von der Anzahl der verfügbaren PHYs, die zwei PCle verbinden. Die PCIe-Verbindung wird in der Regel während der Initialisierung der Endpunktvorrichtungen eingestellt, wie bei der Initialisierung der Datenspeichervorrichtung 610.
  • Das Host-Computersystem 602 und die Schnittstelle 630 der Steuerung 612 arbeiten unter einem Kommunikationsprotokoll, wie einem seriellen PCIe-Kommunikationsprotokoll oder anderen geeigneten Kommunikationsprotokollen. Zu den geeigneten Kommunikationsprotokollen zählen Ethernet, seriell angeschlossene SCSI (SAS), serielle AT-Anschlüsse (SATA), jedes Protokoll im Zusammenhang mit Remote Direct Memory Access (RDMA) wie Infiniband, iWARP oder RDMA over Converged Ethernet (RoCE) und andere geeignete Kommunikationsprotokolle. Die Datenspeichervorrichtung 610 kann auch über einen Schalter oder eine Brücke mit dem Host 602 verbunden werden.
  • Die Datenspeichervorrichtung 610 kann gemäß einer Ausführungsform eine Steuerung 612 und ein Speicherarray 620 einschließen. Die Datenspeichervorrichtung 610 kann ein Speicherarray 620 verwenden, um Daten auf SLC 622, Triple-Layer-Zellen (TLC) 624 und QLC 626 zu schreiben und zu lesen. Das Speicherarray 620 der Datenspeichervorrichtung 610 kann für die langfristige Speicherung von Informationen als nichtflüchtiger Speicherplatz (NVM) eingerichtet werden und bewahrt Informationen nach dem Ein- und Ausschalten auf. Der NVM 620 kann aus einem oder mehreren Rohchips eines NAND-Flash-Speichers bestehen. Andere Beispiele für NVM schließen Phasenwechselspeicher, ReRAM-Speicher, MRAM-Speicher, magnetische Medien (einschließlich Shingled Magnetic Recording), optische Platten, Disketten, elektrisch programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM) und andere Solid-State-Speicher ein. Magnetische Medien-NVM können eine oder mehrere Magnetplatten in der Datenspeichervorrichtung 610 sein. Jede Platte kann einen oder mehrere Bereiche einer oder mehrerer Datenspuren enthalten. Der NVM 620 kann einen oder mehrere Typen von nichtflüchtigen Speichern einschließen.
  • Die Datenspeichervorrichtung 610 schließt eine Steuerung 612 ein, die Vorgänge der Speichervorrichtung 610 verwaltet, wie das Schreiben in den und Lesen aus dem NVM 620. Die Steuerung 612 schließt einen oder mehrere Prozessoren 632 ein, bei denen es sich um Mehrkernprozessoren handeln kann. Der Prozessor 632 bearbeitet die Komponenten der Datenspeichervorrichtung 610 durch einen Firmwarecode.
  • Die Steuerung 612 kann unter dem NVM-Express-Treiberprotokoll (NVMe-Treiberprotokoll) betrieben werden, aber es sind auch andere Protokolle möglich. NVMe-Protokoll ist ein(e) Kommunikationsschnittstelle/-protokoll, die/das für SSDs entwickelt wurde, um über einen Host und eine Speichervorrichtung zu arbeiten, die über eine PCIe-Schnittstelle verbunden sind. Das NVMe-Protokoll stellt eine Befehlsübermittlungswarteschlange und eine Befehlsabschlusswarteschlange für den Zugriff auf die in der Datenspeichervorrichtung 610 gespeicherten Daten durch das Host-Computersystem 602 bereit. Die Datenspeichervorrichtung 610 kann Host-Befehle aus einer Befehlsübermittlungswarteschlange der Host-Warteschlangen 608 des Host-Speicherplatzes 608 abrufen oder lesen.
  • Die Steuerung 612 führt mit computerlesbaren Programmcodes (z. B. Software oder Firmware) ausführbare Anweisungen (hierin als „Anweisungen“ bezeichnet) für die Übertragung von Daten aus. Die Anweisungen können von verschiedenen Komponenten der Steuerung 612 ausgeführt werden, wie beispielsweise dem Prozessor 632, Logikgattern, Schaltern, anwendungsspezifischen integrierten Schaltungen (ASICs), programmierbaren Logiksteuerungen, eingebetteten Mikrosteuerungen und anderen Komponenten der Steuerung 612.
  • Die Anweisungen werden auf einem nichtflüchtigen, computerlesbaren Speichermedium gespeichert. In bestimmter Ausführungsform werden die Anweisungen auf einem nichtflüchtigen, computerlesbaren Speichermedium der Datenspeichervorrichtung 610 gespeichert, wie in einem Nur-Lese-Speicher oder NVM 620. Anweisungen, die in der Datenspeichervorrichtung 610 gespeichert sind, können ohne zusätzliche Eingaben oder Anweisungen vom Host-Computersystem 602 ausgeführt werden. In weiteren Ausführungsformen werden die Anweisungen vom Host-Computersystem 602 übertragen. Die Steuerung 612 ist mit Hardware und Anweisungen eingerichtet, um verschiedene hierin beschriebene und in den Figuren dargestellte Funktionen auszuführen.
  • Die Steuerung 612 schließt auch andere Komponenten ein, wie ein Flash-Schnittstellenmodul 634, ein Direct Memory Access-(DMA)-Modul 640, ein Fehlerkorrekturmodul 636, einen Befehlsausführer 646, einen Befehlsabrufer 644, ein Befehlsverarbeitungsmodul 648, einen Steuerpfad 642 und einen Datenübertragungsplaner 638. Das Flash-Schnittstellenmodul 634 interagiert mit NVM 620 für Lese- und Schreibvorgänge. Das DMA-Modul 640 führt Datenübertragungen zwischen dem Host-Computersystem 602 und der Datenspeichervorrichtung 610 ohne Beteiligung der CPU aus. Der Datenübertragungsplaner 638 steuert die Datenübertragung, während er den Steuerpfad 642 zum Abrufen physischer Seitenbereiche (PRPs), zum Postingabschluss und zu Unterbrechungen sowie zur Aktivierung von DMAs für die tatsächliche Datenübertragung zwischen dem Host-Computersystem 602 und der Datenspeichervorrichtung 610 aktiviert. Das Fehlerkorrekturmodul 636 korrigiert die aus den Speicherarrays abgerufenen Daten. Der Befehlsabrufer 644 ruft Befehle an den Befehlsausführer 140 zur Ausführung auf dem Flash-Schnittstellenmodul 634 auf.
  • Im Befehlsverarbeitungsmodul 648 gibt es eine dedizierte Logik, die sicherstellt, dass es keine Kollision zwischen dem Lesebefehl und den Cache-Schreibdaten gibt. Wenn eine Kollision erkannt wird, wird der Lesebefehl in der Kollisionswarteschlange gehalten, bis die Kollision aufgelöst wird (z. B. werden Cache-Daten in SLC programmiert). Das Befehlsverarbeitungsmodul 648 ist für die Implementierung der Kollisionslogik verantwortlich, während intern eine Kollisionstabelle 650 implementiert wird. Die Kollisionstabelle 650 enthält alle LBAs, die zwischengespeichert und nicht in NAND gespeichert sind.
  • In einer Ausführungsform ist das Verfahren 500 implementiert, um die Übertragung von Daten vom Host-Computersystem 602 an die Datenspeichervorrichtung 610 durch Schreiben in SLC 622, TLC 624 und QLC 626, sowohl fein als auch grob, zu erleichtern. Das Verfahren 500 zusammen mit einer Ausführungsform des in 6 gezeigten Systems kann die Schreibleistung durch Verringern der Anzahl der NAND-Bus- und DRAM-Übertragungen um 0-10 %, 10-20 %, 20-30 % oder im Bereich von 0-30 %, wobei 25 % der durchschnittliche Wert ist, verbessern. Die Verringerung von Übertragungen kann potentiell den Stromverbrauch der Datenspeichervorrichtung 610 verringern.
  • Es versteht sich, dass während sich die hierin aufgeführten Beispiele auf QLCs bezogen haben, die hierin erörterten Ausführungsformen jedoch auf alle MLCs anwendbar sind, einschließlich der Dual-Level-Zellen (oft als MLCs bezeichnet), Triple-Level-Zellen (TLCs), Quad-Level-Zellen (QLCs) und Zellen mit mehr als vier Levels. Mit Bezugnahme auf MLC versteht sich hierin jede Level-Zelle, die größer als 1 ist, und umfasst somit Dual-Level-, Triple-Level-, Quad-Level- und zukünftige Generationen, die eine Grob-Fein-Programmierung verwenden.
  • In einer Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen, wobei die eine oder die mehreren Speichervorrichtungen einen SLC-Speicher und einen MLC-Speicher einschließen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung so eingerichtet ist, dass sie: Daten in den SLC-Speicher schreibt; Daten grob in den MLC-Speicher schreibt, wobei das Grobschreiben der Daten in den MLC-Speicher parallel zum Schreiben von Daten in den SLC-Speicher unter Verwendung des gleichen Puffers erfolgt; Daten aus dem SLC-Speicher liest; und die aus dem SLC-Speicher gelesenen Daten in den MLC-Speicher fein schreibt. Die aus dem SLC-Speicher gelesenen Daten werden durch eine Verschiebungspuffer-Speichervorrichtung geleitet. Die Daten werden ein einziges Mal durch den Verschiebungspuffer geleitet, bevor sie in den MLC-Speicher geschrieben werden. Der Steuerung ist ferner so eingerichtet, dass sie: eine erste Freigabeanforderung zum Freigeben des gleichen Puffers empfängt, wobei die erste Freigabeanforderung angibt, dass entweder das Schreiben der Daten in den SLC-Speicher oder das Grobschreiben der Daten in den MLC-Speicher abgeschlossen wurde. Die Steuerung ist ferner so eingerichtet, dass sie eine zweite Freigabeanforderung zum Freigeben des gleichen Puffers empfängt, wobei die zweite Freigabeanforderung angibt, dass entweder das Schreiben der Daten in den SLC-Speicher oder das Grobschreiben der Daten in den MLC-Speicher abgeschlossen wurde. Die Steuerung ist ferner so eingerichtet, dass sie den gleichen Puffer freigibt, nachdem sie sowohl die erste Freigabeanforderung als auch die zweite Freigabeanforderung empfangen hat. Die Daten werden nach dem Lesen der Daten aus dem SLC-Speicher und vor dem Feinschreiben der Daten in den MLC-Speicher durch einen Verschiebungspuffer geleitet.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung so eingerichtet ist, dass sie: bestimmt, ob eine erste Pufferfreigabeanforderung für einen Puffer empfangen wurde; bestimmt, ob eine zweite Pufferfreigabeanforderung für den Puffer empfangen wurde; und den Puffer an einen verfügbaren Pufferpool von Puffern freigibt. Die Steuerung ist ferner so eingerichtet, dass sie die Daten im Puffer hält, bis der Puffer freigegeben wurde. Die Steuerung ist ferner so eingerichtet, dass sie den Puffer nicht freigibt, wenn entweder die erste Pufferfreigabeanforderung oder die zweite Pufferfreigabeanforderung nicht empfangen wurde. Die Steuerung ist ferner so eingerichtet, dass sie einen Wert von FirstFail von 0 auf 1 inkrementiert, wenn eine erste Programmierung fehlgeschlagen ist. Die Steuerung ist so eingerichtet, dass sie einen Wert von SecondFail von 0 auf 1 inkrementiert, wenn eine zweite Programmierung fehlgeschlagen ist. Die Steuerung ist ferner so eingerichtet, dass sie den Puffer nicht freigibt, wenn entweder der FirstFail oder der SecondFail gleich 1 ist. Die Steuerung ist ferner so eingerichtet, dass sie den Puffer nur dann an den verfügbaren Pufferpool freigibt, wenn sowohl die erste Pufferfreigabeanforderung als auch die zweite Pufferfreigabeanforderung empfangen wurden.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung auf: eine oder mehrere Speichervorrichtungen; Mittel zum Bestimmen, dass ein Puffer zwei Freigabeanforderungen empfangen hat; und Mittel zum Grobschreiben in den MLC-Speicher parallel zum Schreiben in den SLC-Speicher. Die Datenspeichervorrichtung weist ferner Mittel zum Empfangen einer ersten Freigabeanforderung auf. Die Datenspeichervorrichtung weist ferner Mittel zum Empfangen einer zweiten Freigabeanforderung auf. Die Datenspeichervorrichtung weist ferner Mittel zum Freigeben des Puffers auf, wobei das Mittel zum Freigeben des Puffers so eingerichtet ist, dass es den Puffer basierend auf einer Rückmeldung von dem Mittel, das bestimmt werden soll, freigibt. Die Datenspeichervorrichtung weist ferner Mittel zum Lesen von Daten aus dem SLC-Speicher und zum Feinschreiben der aus dem SLC-Speicher gelesenen Daten in den MLC-Speicher auf. Die Datenspeichervorrichtung weist ferner Mittel zum Freigeben eines Puffers an einen verfügbaren Pufferpool auf.
  • Durch das Schreiben, das ein Grobschreiben direkt in die MLC durchführt, ohne die Daten über eine zusätzliche Zeit durch den Puffer zu senden, kann das Datenschreiben verbessert werden, da die Daten nicht mehrere Male durch die SLC geleitet werden müssen, um in die MLC geschrieben zu werden.
  • Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.

Claims (20)

  1. Datenspeichervorrichtung, aufweisend: eine oder mehrere Speichervorrichtungen, wobei die eine oder die mehreren Speichervorrichtungen einen SLC-Speicher und einen MLC-Speicher einschließen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung eingerichtet ist zum: Schreiben von Daten in den SLC-Speicher; Grobschreiben der Daten in den MLC-Speicher, wobei das Grobschreiben der Daten in den MLC-Speicher parallel zum Schreiben von Daten in den SLC-Speicher unter Verwendung des gleichen Datenpuffers erfolgt; Lesen der Daten aus dem SLC-Speicher; und Feinschreiben der aus dem SLC-Speicher gelesenen Daten in den MLC-Speicher.
  2. Datenspeichervorrichtung gemäß Anspruch 1, wobei die aus dem SLC-Speicher gelesenen Daten durch eine Verschiebungspuffer-Speichervorrichtung geleitet werden.
  3. Datenspeichervorrichtung gemäß Anspruch 2, wobei die Daten vor dem Schreiben in den MLC-Speicher ein einziges Mal durch den Verschiebungspuffer geleitet werden.
  4. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung ferner so eingerichtet ist, dass sie: eine erste Freigabeanforderung zum Freigeben des gleichen Puffers empfängt, wobei die erste Freigabeanforderung angibt, dass entweder das Schreiben der Daten in den SLC-Speicher oder das Grobschreiben der Daten in den MLC-Speicher abgeschlossen wurde.
  5. Datenspeichervorrichtung gemäß Anspruch 4, wobei die Steuerung ferner so eingerichtet ist, dass sie eine zweite Freigabeanforderung zum Freigeben des gleichen Puffers empfängt, wobei die zweite Freigabeanforderung angibt, dass entweder das Schreiben der Daten in den SLC-Speicher oder das Grobschreiben der Daten in den MLC-Speicher abgeschlossen wurde.
  6. Datenspeichervorrichtung gemäß Anspruch 5, wobei die Steuerung ferner so eingerichtet ist, dass sie den gleichen Puffer freigibt, nachdem sie sowohl die erste Freigabeanforderung als auch die zweite Freigabeanforderung empfangen hat.
  7. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Daten nach dem Lesen der Daten aus dem SLC-Speicher und vor dem Feinschreiben der Daten in den MLC-Speicher durch einen Verschiebungspuffer geleitet werden.
  8. Datenspeichervorrichtung, aufweisend: eine oder mehrere Speichervorrichtungen; und eine Steuerung, die mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuerung eingerichtet ist zum: Bestimmen, ob eine erste Pufferfreigabeanforderung für den Puffer empfangen wurde; Bestimmen, ob eine zweite Pufferfreigabeanforderung für den Puffer empfangen wurde; und Freigeben des Puffers an einen verfügbaren Pufferpool von Puffern.
  9. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung ferner so eingerichtet ist, das sie die Daten im Puffer hält, bis der Puffer freigegeben wurde.
  10. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung ferner so eingerichtet ist, dass sie den Puffer nicht freigibt, wenn entweder die erste Pufferfreigabeanforderung oder die zweite Pufferfreigabeanforderung nicht empfangen wurde.
  11. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung so eingerichtet ist, dass sie einen Wert von FirstFail von 0 auf 1 inkrementiert, wenn eine erste Programmierung fehlgeschlagen ist.
  12. Datenspeichervorrichtung gemäß Anspruch 11, wobei die Steuerung so eingerichtet ist, dass sie einen Wert von SecondFail von 0 auf 1 inkrementiert, wenn eine zweite Programmierung fehlgeschlagen ist.
  13. Datenspeichervorrichtung gemäß Anspruch 12, wobei die Steuerung ferner so eingerichtet ist, dass sie den Puffer nicht freigibt, wenn entweder der FirstFail oder der SecondFail gleich 1 ist.
  14. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung ferner so eingerichtet ist, dass sie den Puffer nur dann an den verfügbaren Pufferpool freigibt, wenn sowohl die erste Pufferfreigabeanforderung als auch die zweite Pufferfreigabeanforderung empfangen wurden.
  15. Datenspeichervorrichtung, aufweisend: eine oder mehrere Speichervorrichtungen; Mittel zum Bestimmen, dass ein Puffer zwei Freigabeanforderungen empfangen hat; und Mittel zum Grobschreiben in den MLC-Speicher parallel zum Schreiben in den SLC-Speicher.
  16. Datenspeichervorrichtung gemäß Anspruch 15, die ferner Mittel zum Empfangen einer ersten Freigabeanforderung aufweist.
  17. Datenspeichervorrichtung gemäß Anspruch 16, die ferner Mittel zum Empfangen einer zweiten Freigabeanforderung aufweist.
  18. Datenspeichervorrichtung gemäß Anspruch 17, die ferner Mittel zum Freigeben des Puffers aufweist, wobei das Mittel zum Freigeben des Puffers so eingerichtet ist, dass es den Puffer basierend auf einer Rückmeldung von dem Mittel, das bestimmt werden soll, freigibt.
  19. Datenspeichervorrichtung gemäß Anspruch 15, die ferner Mittel zum Lesen von Daten aus dem SLC-Speicher und zum Feinschreiben der aus dem SLC-Speicher gelesenen Daten in den MLC-Speicher aufweist.
  20. Datenspeichervorrichtung gemäß Anspruch 15, die ferner Mittel zum Freigeben eines Puffers an einen verfügbaren Pufferpool aufweist.
DE102020116190.5A 2020-02-04 2020-06-18 Slc-/qlc-doppelprogrammierung und ressourcenfreigabe Pending DE102020116190A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/781,885 2020-02-04
US16/781,885 US11205473B2 (en) 2020-02-04 2020-02-04 Dual SLC/QLC programming and resource releasing

Publications (1)

Publication Number Publication Date
DE102020116190A1 true DE102020116190A1 (de) 2021-08-05

Family

ID=76853505

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020116190.5A Pending DE102020116190A1 (de) 2020-02-04 2020-06-18 Slc-/qlc-doppelprogrammierung und ressourcenfreigabe

Country Status (4)

Country Link
US (2) US11205473B2 (de)
KR (1) KR102462048B1 (de)
CN (1) CN113220215A (de)
DE (1) DE102020116190A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783893B2 (en) * 2020-12-23 2023-10-10 Intel Corporation Utilizing NAND buffer for DRAM-less multilevel cell programming
KR20240008482A (ko) 2022-07-12 2024-01-19 김정기 성능/용량 조절 및 최적화 기능을 구비한 메모리 카드

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
TW580619B (en) * 2002-04-03 2004-03-21 Via Tech Inc Buffer control device and the management method
US7630252B2 (en) * 2007-06-25 2009-12-08 Sandisk Corporation Systems for programming multilevel cell nonvolatile memory
US7719889B2 (en) 2007-06-25 2010-05-18 Sandisk Corporation Methods of programming multilevel cell nonvolatile memory
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US9092340B2 (en) 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US20120167100A1 (en) * 2010-12-23 2012-06-28 Yan Li Manual suspend and resume for non-volatile memory
WO2014138118A1 (en) * 2013-03-07 2014-09-12 Peddle Charles I High speed flash controllers
KR102125376B1 (ko) 2013-07-01 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 쓰기 방법
US9218242B2 (en) * 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
KR102163872B1 (ko) 2013-08-09 2020-10-13 삼성전자 주식회사 멀티 비트 메모리 장치, 그것의 온칩 버퍼 프로그램 방법 및 멀티 비트 메모리 시스템
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9400713B2 (en) 2014-10-02 2016-07-26 Sandisk Technologies Llc System and method for pre-encoding of data for direct write to multi-level cell memory
US10223001B2 (en) * 2015-03-12 2019-03-05 Toshiba Memory Corporation Memory system
US9530491B1 (en) * 2015-11-16 2016-12-27 Sandisk Technologies Llc System and method for direct write to MLC memory
KR102398186B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
CN107632794A (zh) * 2017-10-20 2018-01-26 北京小米移动软件有限公司 读写锁控制方法及装置
JP2019133391A (ja) * 2018-01-31 2019-08-08 東芝メモリ株式会社 メモリシステムおよび制御方法
US10831650B2 (en) 2018-03-07 2020-11-10 Exten Technologies, Inc. Systems and methods for accessing non-volatile memory and write acceleration cache
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
US11837277B2 (en) 2023-12-05
US20220076735A1 (en) 2022-03-10
KR20210099493A (ko) 2021-08-12
KR102462048B1 (ko) 2022-11-01
US20210241819A1 (en) 2021-08-05
CN113220215A (zh) 2021-08-06
US11205473B2 (en) 2021-12-21

Similar Documents

Publication Publication Date Title
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102018123937A1 (de) Verwalten von Flash-Speicher-Lesevorgängen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102006002526A1 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE102013016993A1 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102011075814A1 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102020116190A1 (de) Slc-/qlc-doppelprogrammierung und ressourcenfreigabe
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102019134290A1 (de) Verfahren und System zum Verbessern der Leistung einer Speichervorrichtung unter Verwendung einer asynchronen, unabhängigen Ebenenlesefunktionalität
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE112020000124T5 (de) Ausführung von open-channel-vektorbefehlen
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE