DE112019005511T5 - Halten von schreibbefehlen in gezonten namensräumen - Google Patents

Halten von schreibbefehlen in gezonten namensräumen Download PDF

Info

Publication number
DE112019005511T5
DE112019005511T5 DE112019005511.9T DE112019005511T DE112019005511T5 DE 112019005511 T5 DE112019005511 T5 DE 112019005511T5 DE 112019005511 T DE112019005511 T DE 112019005511T DE 112019005511 T5 DE112019005511 T5 DE 112019005511T5
Authority
DE
Germany
Prior art keywords
command
page
data
data associated
erase 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
DE112019005511.9T
Other languages
English (en)
Inventor
Daniel L. Helmick
Peter Grayson
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 DE112019005511T5 publication Critical patent/DE112019005511T5/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/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/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
    • 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/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]

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betreiben von Speicher vorrichtungen. Eine Steuerung der Speichervorrichtung ruft ein erstes Mal Daten eines ersten Befehls ab und führt eine erste Durchgangsprogrammierung der Daten des ersten Befehls auf eine erste Seite in einem ersten Löschblock durch. Daten eines zweiten Befehls werden dann ein erstes Mal von der Steuerung abgerufen, und die Steuerung führt eine erste Durchgangsprogrammierung der Daten des zweiten Befehls auf eine zweite Seite in dem ersten Löschblock durch. Beim Abrufen des zweiten Befehls beendet die Steuerung die Verarbeitung des ersten Befehls durch Abrufen der Daten des ersten Befehls ein zweites Mal und Schreiben der Daten des ersten Befehls auf die erste Seite durch Durchführen einer zweiten Durchgangsprogrammierung. Die Daten des ersten Befehls werden in der Hostvorrichtung gespeichert, bis die zweite Durchgangsprogrammierung beendet ist.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der US-Anmeldung Nr. 16/696,830 , eingereicht am 26. November 2019, die den Vorteil der vorläufigen US-Patentanmeldung Seriennummer 62/868,792 , eingereicht am 28. Juni 2019, beansprucht, die beide durch Verweis hierin aufgenommen sind.
  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Speichervorrichtungen, wie Solid-State-Laufwerke (SSDs).
  • Beschreibung des Stands der Technik
  • Speichervorrichtungen, wie SSDs, können in Computern in Anwendungen verwendet werden, bei denen eine relativ geringe Latenz und eine hohe Speicherkapazität erwünscht sind. So können SSDs beispielsweise eine geringere Latenz aufweisen als Festplatten (HDDs), insbesondere bei Direktlese- und -schreibvorgängen. In der Regel empfängt eine Steuerung der SSD einen Befehl zum Lesen oder Schreiben von Daten von einer Hostvorrichtung. Für Schreibbefehle werden dann die einem Befehl zugeordneten Daten vorübergehend in einem internen Puffer oder Speicher der Steuerung gespeichert. Sobald die dem Befehl zugeordneten Daten im internen Speicher der Steuerung gespeichert sind, sendet die Steuerung einen Befehlsbeendigungseintrag an den Host. Währenddessen werden die dem Befehl zugeordneten Daten in ein Medium oder eine Speichervorrichtung im Hintergrund geschrieben. Somit werden die Daten für die gesamte Dauer der Verarbeitung des Schreibbefehls in dem internen Speicher der Steuerung gespeichert.
  • SSD-Steuerungen weisen jedoch eine begrenzte Menge an internem Speicher auf, der sowohl eine Strom- als auch Kostenauswirkung auf die SSDs hat. Wenn sich der interne Speicher der Steuerung vollständig füllt, kann die Steuerung die Anzahl der Befehle reduzieren, die parallel abgearbeitet werden, oder die Befehle analysieren, ohne die zugehörigen Daten einzuziehen. Dementsprechend beeinflusst das vorübergehende Speichern der dem Befehl zugeordneten Daten im internen Speicher der Steuerung, während der Befehlsbeendigungseintrag gesendet wird und während die Daten in das Medium geschrieben werden, die Gesamtleistung, den Durchsatz und die Effizienz der SSD negativ und erhöht die Menge an Strom, die während der Verarbeitung von Befehlen verbraucht wird.
  • Somit wird ein Verfahren zum Betreiben einer Speichervorrichtung benötigt, das die Menge an verbrauchtem Strom verringert, während Leistung und Durchsatz der Speichervorrichtung erhöht werden.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betreiben von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ruft ein erstes Mal Daten eines ersten Befehls ab und führt eine erste Durchgangsprogrammierung der Daten des ersten Befehls auf eine erste Seite in einem ersten Löschblock durch. Daten eines zweiten Befehls werden dann ein erstes Mal von der Steuerung abgerufen, und die Steuerung führt eine erste Durchgangsprogrammierung der Daten des zweiten Befehls auf eine zweite Seite in dem ersten Löschblock durch. Beim Abrufen des zweiten Befehls beendet die Steuerung die Verarbeitung des ersten Befehls durch Abrufen der Daten des ersten Befehls ein zweites Mal und Schreiben der Daten des ersten Befehls auf die erste Seite durch Durchführen einer zweiten Durchgangsprogrammierung. Die Daten des ersten Befehls werden in der Hostvorrichtung gespeichert, bis die zweite Durchgangsprogrammierung beendet ist.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit und eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist. Die Steuerung ist eingerichtet, um einen ersten Befehl zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Medieneinheit abzurufen, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist, einen zweiten Befehl zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock abzurufen und beim Abrufen des zweiten Befehls die dem ersten Befehl zugeordneten Daten auf die erste Seite in dem ersten Löschblock zu schreiben.
  • In einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist eingerichtet, um ein erstes Durchgangsprogramm von Daten durchzuführen, die einem ersten Befehl zugeordnet sind, um die Daten teilweise auf eine erste Seite in einem ersten Löschblock einer ersten Zone der Vielzahl von Zonen zu schreiben, das erste Durchgangsprogramm von Daten durchzuführen, die einem zweiten Befehl zugeordnet sind, um die Daten teilweise auf eine zweite Seite in dem ersten Löschblock zu schreiben, beim Durchführen des ersten Durchgangsprogramms der Daten, die dem zweiten Befehl zugeordnet sind, ein zweites Durchgangsprogramm durchzuführen, um die Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock zu schreiben.
  • In noch einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist eingerichtet ist, um einen ersten Befehl zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Speichervorrichtung abzurufen, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist, die Daten, die dem ersten Befehl zugeordnet sind, bei einem ersten Spannungsziel, das für eine erste Zeitdauer angelegt wird, teilweise auf die erste Seite in dem ersten Löschblock zu schreiben, einen zweiten Befehl zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock abzurufen, die Daten, die dem zweiten Befehl zugeordnet sind, bei dem ersten Spannungsziel teilweise auf die zweite Seite in dem ersten Löschblock zu schreiben, und beim Abrufen des zweiten Befehls die Daten, die dem ersten Befehl zugeordnet sind, bei einem zweiten Spannungsziel, das für eine zweite Zeitdauer angelegt wird, wobei die zweite Zeitdauer größer als die erste Zeitdauer ist, auf die erste Seite in dem ersten Löschblock zu schreiben.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend angegebenen 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 die beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulichen und daher nicht als deren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht.
    • 2 veranschaulicht ein Speichersystem, aufweisend eine Speichervorrichtung, die mit einer Hostvorrichtung gekoppelt ist, gemäß einer anderen Ausführungsform.
    • 3 ist ein Blockdiagramm, das ein Verfahren zum Betreiben einer Speichervorrichtung zum Ausführen eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht.
    • 4A veranschaulicht in einer Speichervorrichtung verwendete gezonte Namensräume gemäß einer Ausführungsform.
    • 4B veranschaulicht ein Zustandsdiagramm für die gezonten Namensräume der Speichervorrichtung aus 4A gemäß einer Ausführungsform.
    • 5A veranschaulicht ein Verfahren zum Betreiben einer Speichervorrichtung gemäß einer Ausführungsform.
    • 5B veranschaulicht ein beispielhaftes Diagramm, das die erwartete Spannungsverteilung für eine erste Durchgangsprogrammierung und eine zweite Durchgangsprogrammierung zeigt, auf die in dem Verfahren aus 5A Bezug genommen wird.
    • 6 veranschaulicht ein Verfahren zum Betreiben einer Speichervorrichtung gemäß einer anderen Ausführungsform.
    • 7 veranschaulicht ein Verfahren zum Betreiben einer Speichervorrichtung während eines Stromausfalls gemäß einer Ausführungsform.
    • 8 veranschaulicht ein Verfahren zum Betreiben einer Speichervorrichtung, die ZNS während eines Speicherbereinigungsprozesses nicht verwendet, 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 vorteilhaft auf andere Ausführungsformen angewendet werden können, ohne besonders genannt zu werden.
  • 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. Obwohl Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, ist die Offenbarung nicht einschränkend, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. 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 angegeben. 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 oder mehreren Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betreiben von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ruft ein erstes Mal Daten eines ersten Befehls ab und führt eine erste Durchgangsprogrammierung der Daten des ersten Befehls auf eine erste Seite in einem ersten Löschblock durch. Daten eines zweiten Befehls werden dann ein erstes Mal von der Steuerung abgerufen, und die Steuerung führt eine erste Durchgangsprogrammierung der Daten des zweiten Befehls auf eine zweite Seite in dem ersten Löschblock durch. Beim Abrufen des zweiten Befehls beendet die Steuerung die Verarbeitung des ersten Befehls durch Abrufen der Daten des ersten Befehls ein zweites Mal und Schreiben der Daten des ersten Befehls auf die erste Seite durch Durchführen einer zweiten Durchgangsprogrammierung. Die Daten des ersten Befehls werden in der Hostvorrichtung gespeichert, bis die zweite Durchgangsprogrammierung beendet ist.
  • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem 100 veranschaulicht, in dem die Speichervorrichtung 106 als eine Speichervorrichtung für eine Hostvorrichtung 104 gemäß einer oder mehreren Techniken dieser Offenbarung fungieren kann. Zum Beispiel kann die Hostvorrichtung 104 zum Speichern und Abrufen von Daten nichtflüchtige Medieneinheiten 110 verwenden, die in der Speichervorrichtung 106 eingeschlossen sind. Die Hostvorrichtung 104 weist einen Host DRAM 138 auf. In einigen Beispielen kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen einschließen, wie die Speichervorrichtung 106, die als eine Speicheranordnung arbeiten kann. Zum Beispiel kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen 106 einschließen, die als eine redundante Anordnung von preiswerten/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als Massenspeichervorrichtung für die Hostvorrichtung 104 fungieren.
  • Das Speichersystem 100 schließt eine Hostvorrichtung 104 ein, die Daten auf und/oder von einer oder mehreren Speichervorrichtungen, wie der Speichervorrichtung 106, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 104 über eine Schnittstelle 114 mit der Speichervorrichtung 106 kommunizieren. Die Hostvorrichtung 104 kann jegliche aus einer großen Vielfalt von Vorrichtungen aufweisen, einschließlich Computerservern, NAS-Einheiten (Network Attached Storage), Desktop-Computern, Notebook-Computern (d. h. Laptops), Tablet-Computern, Digitalempfängern, Telefonhandgeräten wie so genannten „Smartphones“, so genannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienwiedergabegeräten, Videospielkonsolen, Video-Streaming-Vorrichtungen und dergleichen.
  • Die Speichervorrichtung 106 schließt eine Steuerung 108, nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, flüchtigen Speicher 112 und eine Schnittstelle 114 ein. Die Steuerung 108 weist einen internen Speicher 120 oder Puffer auf. In einigen Beispielen kann die Speichervorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 gezeigt sind. Beispielsweise kann die Speichervorrichtung 106 eine Leiterplatte (PB) einschließen, an der Komponenten der Speichervorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen enthält, die Komponenten der Speichervorrichtung 106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung 106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren schließen unter anderem eine 3,5-Zoll-Datenspeichervorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeichervorrichtung, eine 1,8-Zoll-Datenspeichervorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCle) (z. B. PCle x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Speichervorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) sein.
  • Die Schnittstelle 114 der Speichervorrichtung 106 kann eines oder beides von einem Datenbus zum Austauschen von Daten mit der Hostvorrichtung 104 und einem Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 104 einschließen. Die Schnittstelle 114 kann gemäß einem geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle 114 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), PCI und PCle, Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD) oder dergleichen. Die elektrische Verbindung der Schnittstelle 114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit der Steuerung 108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 104 und der Steuerung 108 her, sodass Daten zwischen der Hostvorrichtung 104 und der Steuerung 108 ausgetauscht werden können. In einigen Beispielen kann die Speichervorrichtung 106 durch die elektrische Verbindung der Schnittstelle 114 auch Strom von der Hostvorrichtung 104 beziehen. Beispielsweise kann die Stromversorgung 111, wie in 1 veranschaulicht, über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
  • Die Speichervorrichtung 106 schließt NVM 110 ein, der eine Vielzahl von Medieneinheiten einschließen kann. NVM 110 kann eingerichtet sein, um Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Medieneinheit des NVM 110 Daten und eine Nachricht von der Steuerung 108 empfangen, die die Speichervorrichtung zum Speichern der Daten anweist. In ähnlicher Weise kann die Medieneinheit des NVM 110 eine Nachricht von der Steuerung 108 empfangen, die die Speichervorrichtung zum Abrufen von Daten anweist. In einigen Beispielen kann jede der Medieneinheiten als ein Die bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Dies (d. h. eine Vielzahl von Speichervorrichtungen) enthalten. In einigen Beispielen kann jede Speichervorrichtung zum Speichern relativ großer Datenmengen eingerichtet werden (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
  • In einigen Beispielen kann jede Medieneinheit des NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie Flash-Speichervorrichtungen, Phasenwechselspeicher-Vorrichtungen (PCM-Vorrichtungen), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtungen), ferroelektrische Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen und jegliche andere Art von nichtflüchtigen Speichervorrichtungen.
  • Der NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen aufweisen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NAND-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Blöcken unterteilt sein, die in eine Vielzahl von Seiten unterteilt sein können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NAN D-Zellen einschließen. Reihen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite aus einer Vielzahl von Seiten zu definieren. Entsprechende Zellen in jeder der Vielzahl von Seiten können elektrisch mit den entsprechenden Bitleitungen verbunden sein. Ferner können NAND-Flash-Speichervorrichtungen 2D- oder 3D-Vorrichtungen sein und können Single-Level-Zellen (SLC), Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC) oder Quad-Level-Zellen (QLC) sein. Die Steuerung 108 kann Daten in und aus NAND-Flash-Speichervorrichtungen auf Seitenebene schreiben und lesen und Daten aus NAND-Flash-Speichervorrichtungen auf Blockebene löschen.
  • Die Speichervorrichtung 106 schließt eine Stromversorgung 111 ein, die eine oder mehrere Komponenten der Speichervorrichtung 106 mit Strom versorgen kann. Wenn die Stromversorgung 111 in einem Standardmodus betrieben wird, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie der Hostvorrichtung 104, bereitgestellt wird. Beispielsweise kann die Stromversorgung 111 die eine oder die mehreren Komponenten mit Strom versorgen, der von der Hostvorrichtung 104 über die Schnittstelle 114 empfangen wird. In einigen Beispielen kann die Stromversorgung 111 eine oder mehrere Stromspeicherkomponenten einschließen, die eingerichtet sind, um die eine oder die mehreren Komponenten mit Strom zu versorgen, wenn sie in einem Abschaltmodus betrieben werden, z. B. wenn kein Strom mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Stromversorgung 111 als integrierte Backup-Stromquelle fungieren. Einige Beispiele für die eine oder die mehreren Stromspeicherkomponenten schließen, ohne darauf beschränkt zu sein, Kondensatoren, Superkondensatoren, Batterien und dergleichen ein. In einigen Beispielen kann die von der einen oder den mehreren Stromspeicherkomponenten gespeicherte Strommenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Stromspeicherkomponenten sein. Das heißt, wenn die von der einer oder den mehreren Stromspeicherkomponenten gespeicherte Strommenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Stromspeicherkomponenten.
  • Die Speichervorrichtung 106 schließt auch den flüchtigen Speicher 112 ein, der von der Steuerung 108 zum Speichern von Informationen verwendet werden kann. Der flüchtige Speicher 112 kann aus einer oder mehreren flüchtigen Speichervorrichtungen bestehen. In einigen Beispielen kann die Steuerung 108 den flüchtigen Speicher 112 als Cache verwenden. Zum Beispiel kann die Steuerung 108 zwischengespeicherte Informationen im flüchtigen Speicher 112 speichern, bis die zwischengespeicherten Informationen in den nichtflüchtigen Speicher 110 geschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Speicher 112 den von der Stromversorgung 111 empfangenen Strom verbrauchen. Beispiele für flüchtigen Speicher 112 schließen ein, sind aber nicht beschränkt auf Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 und dergleichen)).
  • Die Speichervorrichtung 106 schließt eine Steuerung 108 ein, die eine oder mehrere Operationen der Speichervorrichtung 106 verwalten kann. Beispielsweise kann die Steuerung 108 das Lesen von Daten von und/oder das Schreiben von Daten in den NVM 110 verwalten. In einigen Ausführungsformen kann die Steuerung 108, wenn die Speichervorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, einen Datenspeicherbefehl zum Speichern von Daten in den NVM 110 initiieren und den Fortschritt des Datenspeicherbefehls überwachen. Die Steuerung 108 kann mindestens eine Betriebscharakteristik des Speichersystems 100 bestimmen und die mindestens eine Betriebscharakteristik in den NVM 110 speichern. In einigen Ausführungsformen speichert die Steuerung 108, wenn die Speichervorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, die mit dem Schreibbefehl verbundenen Daten vorübergehend im internen Speicher 120, bevor sie die Daten an den NVM 110 sendet.
  • 2 veranschaulicht ein Speichersystem 200, aufweisend eine Speichervorrichtung 206, die mit einer Hostvorrichtung 204 gemäß einer anderen Ausführungsform gekoppelt ist. Speichersystem 200 kann das Speichersystem 100, die Hostvorrichtung 104 und die Speichervorrichtung 106 aus 1 sein.
  • Die Speichervorrichtung 206 kann Befehle und Daten von der Hostvorrichtung 204 senden und empfangen und weist einen Befehlsprozessor 220 auf. Der Befehlsprozessor 220 kann die Steuerung 108 aus 1 sein. Der Befehlsprozessor 220 kann den Zugriff auf die Speichervorrichtung, wie NAND-Zugriff, planen und einen Lesevorgang auf eine Speichervorrichtung oder Medieneinheit durchführen, bevor ein zuvor empfangener Befehl einen Schreibvorgang auf dieselbe Speichervorrichtung erfordert. Der Befehlsprozessor 220 ist mit einer oder mehreren Speichervorrichtungen 228 und einem Befehlsabruf 222 gekoppelt. Die eine oder die mehreren Speichervorrichtungen 228 können nichtflüchtige NAND-Speichervorrichtungen sein. Der Befehlsabruf 222 ist mit einer Arbitrierung der Übertragungswarteschlange 224 gekoppelt. Die Arbitrierung der Übertragungswarteschlange 224 ist mit einem oder mehreren Kopf- und Endzeigern der Übertragungswarteschlange 226 gekoppelt.
  • Die Hostvorrichtung 204 weist eine oder mehrere Host-Softwareanwendungen 232 auf, die mit einer oder mehreren Verarbeitungseinheiten oder CPU-Anwendungen 234 gekoppelt sind. In einer Ausführungsform hat die Softwareanwendung 232 eine begrenzte Warteschlangentiefe für Solid-State-Laufwerke, um eine QoS der Latenz für jeden Benutzer des Systems 200 abzuleiten. Die Hostvorrichtung 204 weist ferner ein Betriebssystem (BS) oder eine Softwareanwendung 240 ohne zugehörige QoS auf. Die CPU 234 ist mit einer Zwischenverbindung 236 und einem Host-DRAM 238 gekoppelt. Der Host-DRAM 238 kann Daten der Übertragungswarteschlange speichern. Die Zwischenverbindung 236 ist mit der Speichervorrichtung 206 gekoppelt. Die Zwischenverbindung 236 kann sowohl mit den Kopf- und Endzeigern der Übertragungswarteschlange 226 als auch mit dem Befehlsabruf 222 in Kommunikation stehen.
  • Die CPU 234 erzeugt einen oder mehrere Befehle 216 zum Senden an die Speichervorrichtung 206 und kann über das Befehlsabrufsignal 244 Befehle von der Speichervorrichtung 206 senden und empfangen. Die CPU 234 kann weiterhin eine Unterbrechung oder Türklingel 218 an die Speichervorrichtung 206 senden, um die Speichervorrichtung 206 über einen oder mehrere Befehle 216 zu informieren. Die CPU 234 kann die an die Speichervorrichtung 206 übermittelte Daten-Warteschlangentiefe begrenzen. Die Warteschlangentiefe (QD) ist die maximale Anzahl von Befehlen, die in die Warteschlange für die Speichervorrichtung 206 platziert werden, und die Daten-QD ist die Datenmenge, die den Befehlen zugeordnet ist, die mit einer QD in der Warteschlange platziert werden. In einer Ausführungsform entspricht die Daten-QD 242 der Speichervorrichtung 206 der Bandbreite der Speichervorrichtung 206. Die Daten-QD 242 ist auf die höchste Ebene beschränkt, unter der die Speichervorrichtung 206 noch eine gewünschte Latenz-QoS aufrechterhalten kann. Der Befehlsprozessor 220 verarbeitet dann die von der Hostvorrichtung 204 empfangenen Befehle.
  • 3 ist ein Blockdiagramm, das ein Verfahren 300 zum Betreiben einer Speichervorrichtung zum Ausführen eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht. Das Verfahren 300 kann mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 verwendet werden, die eine Steuerung 108 aufweist. Das Verfahren 300 kann ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 verwendet werden, die einen Befehlsprozessor 220 aufweist.
  • Das Verfahren 300 beginnt bei der Operation 350, bei der die Hostvorrichtung einen Befehl als Eintrag in eine Übertragungswarteschlange schreibt. Die Hostvorrichtung kann bei Operation 350 einen oder mehrere Befehle in die Übertragungswarteschlange schreiben. Die Befehle können Lese- oder Schreibbefehle sein. Die Hostvorrichtung kann eine oder mehrere Übertragungswarteschlangen aufweisen.
  • In Operation 352 schreibt die Hostvorrichtung einen oder mehrere aktualisierte Endzeiger der Übertragungswarteschlange und läutet eine Türklingel oder sendet ein Unterbrechungssignal, um die Speichervorrichtung über den neuen Befehl zu benachrichtigen oder zu signalisieren, der zur Ausführung bereit ist. Das Türklingelsignal kann die Türklingel 218 aus 2 sein. Der Host kann einen aktualisierten Endzeiger der Übertragungswarteschlange schreiben und bei mehr als einer Übertragungswarteschlange für jede der Übertragungswarteschlangen ein Türklingel- oder Unterbrechungssignal senden. In Operation 354 ruft eine Steuerung der Speichervorrichtung als Reaktion auf das Empfangen des Türklingel- oder Unterbrechungssignals den Befehl aus der einen oder den mehreren Übertragungswarteschlangen ab, und die Steuerung empfängt den Befehl.
  • In Operation 356 verarbeitet die Steuerung den Befehl und schreibt oder überträgt die mit dem Befehl verbundenen Daten in den Speicher der Hostvorrichtung. Die Steuerung kann mehr als einen Befehl gleichzeitig verarbeiten. Zum Beispiel kann das Verarbeiten eines empfangenen ersten Befehls das teilweise Schreiben von Daten, die dem ersten Befehl zugeordnet sind, in eine Speichervorrichtung, wie eine NAND-Speichervorrichtung, aufweisen. Das teilweise Schreiben kann ein erstes Durchgangsprogramm der Daten sein. Beim Empfangen eines zweiten Befehls kann die Steuerung den zweiten Befehl teilweise schreiben und das Schreiben des ersten Befehls (d. h. ein zweites Durchgangsprogramm) beenden.
  • In Operation 358 schreibt die Steuerung, sobald der Befehl vollständig verarbeitet wurde, einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in eine Beendigungswarteschlange der Hostvorrichtung und verschiebt oder aktualisiert den CQ-Kopfzeiger, sodass er auf den neu geschriebenen Beendigungseintrag zeigt.
  • In Operation 360 erzeugt und sendet die Steuerung ein Unterbrechungssignal oder eine Türklingel an die Hostvorrichtung. Das Unterbrechungssignal zeigt an, dass der Befehl ausgeführt wurde und die dem Befehl zugeordneten Daten in der Speichervorrichtung verfügbar sind. Das Unterbrechungssignal benachrichtigt weiterhin die Hostvorrichtung, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden.
  • In Operation 362 verarbeitet die Hostvorrichtung den Beendigungseintrag. In Operation 364 schreibt die Hostvorrichtung einen aktualisierten CQ-Kopfzeiger in die Speichervorrichtung und läutet die Türklingel oder sendet ein Unterbrechungssignal an die Speichervorrichtung, um den Beendigungseintrag freizugeben.
  • 4A veranschaulicht gemäß einer Ausführungsform eine Ansicht der gezonten Namensräume (Zoned Namespaces, ZNS) 402, die in einer Speichervorrichtung 400 verwendet werden. Die Speichervorrichtung 400 kann einer Hostvorrichtung die Ansicht der ZNS 402 präsentieren. 4B veranschaulicht ein Zustandsdiagramm 450 für die ZNS 402 der Speichervorrichtung 400 gemäß einer Ausführungsform. Die Speichervorrichtung 400 kann die Speichervorrichtung 106 des Speichersystems 100 aus 1 oder die Speichervorrichtung 206 des Speichersystems 200 aus 2 sein. Die Speichervorrichtung 400 kann einen oder mehrere ZNS 402 aufweisen, und jeder ZNS 402 kann unterschiedliche Größen aufweisen. Die Speichervorrichtung 400 kann weiterhin einen oder mehrere herkömmliche Namensräume zusätzlich zu dem einen oder den mehreren gezonten Namensräumen 402 aufweisen. Darüber hinaus kann der ZNS 402 ein Zoned Block Command (ZBC) für SAS und/oder ein Zoned-Device ATA Command Set (ZAC) für SATA sein.
  • In der Speichervorrichtung 400 ist der ZNS 402 die Menge an NVM, die in Logikblöcke formatiert werden kann, sodass die Kapazität in eine Vielzahl von Zonen 406a-406n (zusammen als Zonen 406 bezeichnet) unterteilt wird. Jede der Zonen 406 weist eine Vielzahl von physischen oder Löschblöcken (nun gezeigt) einer Medieneinheit oder eines NVM 404 auf, und jedem der Löschblöcke ist eine Vielzahl von Logikblöcken (nicht gezeigt) zugeordnet. Wenn die Steuerung 408 einen Befehl empfängt, wie von einer (nicht dargestellten) Hostvorrichtung oder der Übertragungswarteschlange einer Hostvorrichtung, kann die Steuerung 408 Daten von der Vielzahl von Logikblöcken, die mit der Vielzahl von Löschblöcken der ZNS 402 verbunden ist, lesen und Daten in diese schreiben. Jeder der Logikblöcke ist einer eindeutigen LBA oder einem Sektor zugeordnet.
  • In einer Ausführungsform ist der NVM 404 eine NAND-Vorrichtung. Die NAND-Vorrichtung weist einen oder mehrere Dies auf. Jeder des einen oder der mehreren Dies weist eine oder mehrere Ebenen auf. Jede der einen oder mehreren Ebenen weist einen oder mehrere Löschblöcke auf. Jeder des einen oder der mehreren Löschblöcke weist eine oder mehrere Wortleitungen (z. B. 256 Wortleitungen) auf. Jede der einen oder mehreren Wortleitungen kann auf einer oder mehreren Seiten adressiert werden. Zum Beispiel kann ein MLC-NAND-Die die obere Seite und die untere Seite verwenden, um die zwei Bits in jeder Zelle der vollständigen Wortleitung zu erreichen (z. B. 16 kB pro Seite). Außerdem kann auf jede Seite mit einer Granularität zugegriffen werden, die gleich oder kleiner als die volle Seite ist. Eine Steuerung kann häufig in Benutzerdatengranularität-LBA-Größen von 512 Bytes auf NAND zugreifen. Somit sind, wie in der nachstehenden Beschreibung erwähnt, NAND-Stellen gleich einer Granularität von 512 Bytes. Somit ergibt eine LBA-Größe von 512 Bytes und eine Seitengröße von 16 kB für zwei Seiten eines MCL-NAND etwa 16 NAND-Stellen pro Wortleitung. Die Größe der NAND-Stelle ist jedoch nicht als Einschränkung gedacht und wird lediglich als Beispiel verwendet.
  • Wenn Daten in einen Löschblock geschrieben werden, werden ein oder mehrere Logikblöcke entsprechend innerhalb einer Zone 406 aktualisiert, um zu verfolgen, wo sich die Daten innerhalb des NVM 404 befinden. Daten können zu einer Zeit in eine einzige Zone 406 geschrieben werden, bis eine Zone 406 voll ist, oder in mehrere Zonen 406, sodass mehrere Zonen 406 teilweise gefüllt sein können. In ähnlicher Weise können beim Schreiben von Daten in eine bestimmte Zone 406 Daten blockweise gleichzeitig, in sequentieller Reihenfolge der NAND-Stellen, Seite für Seite oder Wortleitung für Wortleitung in die Vielzahl der Löschblöcke geschrieben werden, bis zu einem benachbarten Block gewechselt wird (d. h. Schreiben in einen ersten Löschblock, bis der erste Löschblock voll ist, bevor zum zweiten Löschblock gewechselt wird) oder in mehrere Blöcke gleichzeitig, in sequentieller Reihenfolge der NAND-Stellen, Seite für Seite oder Wortleitung für Wortleitung, um jeden Block teilweise in einer stärker parallelen Weise zu füllen (d. h. Schreiben der ersten NAND-Stelle oder Seite jedes Löschblocks, bevor in die zweite NAND-Stelle oder Seite jedes Löschblocks geschrieben wird).
  • Jede der Zonen 406 ist einer Zonenstart-Logikblockadresse (ZSLBA) zugeordnet. Die ZSLBA ist die erste verfügbare LBA in der Zone 406. Zum Beispiel ist die erste Zone 406a ZaSLBA zugeordnet, die zweite Zone 406b ist ZbSLBA zugeordnet, die dritte Zone 406c ist ZcSLBA zugeordnet, die vierte Zone 406d ist ZdSLBA zugeordnet und die nte Zone 406n (d. h. die letzte Zone) ist ZnSLBA zugeordnet. Jede Zone 406 wird durch ihre ZSLBA identifiziert und ist dazu eingerichtet, sequentielle Schreibvorgänge zu empfangen (d. h. das Schreiben von Daten auf den NVM 110 in der Reihenfolge, in der die Schreibbefehle empfangen werden).
  • Wenn Daten in eine Zone 406 geschrieben werden, wird ein Schreibzeiger 410 vorgerückt oder aktualisiert, sodass er auf den nächsten verfügbaren Block in der Zone 406, in den Daten geschrieben werden sollen, zeigt oder diesen anzeigt, um den nächsten Schreibstartpunkt zu verfolgen (d. h. der Beendigungspunkt des vorherigen Schreibvorgangs entspricht dem Startpunkt eines nachfolgenden Schreibvorgangs). Somit zeigt der Schreibzeiger 410 an, wo der nachfolgende Schreibvorgang in die Zone 406 beginnen wird. Nachfolgende Schreibbefehle sind ,Zonenanhang`-Befehle, bei denen die mit dem nachfolgenden Schreibbefehl verbundenen Daten an die Zone 406 an der Stelle angehängt werden, die der Schreibzeiger 410 als nächsten Startpunkt angibt. Eine geordnete Liste von LBAs innerhalb der Zone 406 kann für die Schreibreihenfolge gespeichert werden. Jede Zone 406 kann ihren eigenen Schreibzeiger 410 haben. Wenn somit ein Schreibbefehl empfangen wird, wird eine Zone durch ihre ZSLBA identifiziert, und der Schreibzeiger 410 bestimmt, wo der Schreibvorgang der Daten innerhalb der identifizierten Zone beginnt.
  • 4B veranschaulicht ein Zustandsdiagramm 450 für den ZNS 402 aus 4A. In dem Zustandsdiagramm 450 kann jede Zone in einem anderen Zustand sein, wie leer, aktiv, voll oder offline. Wenn eine Zone leer ist, ist die Zone frei von Daten (d. h. keiner der Löschblöcke in der Zone speichert gegenwärtig Daten) und der Schreibzeiger befindet sich auf der ZSLBA (d. h. WP=0). Eine leere Zone wechselt in eine offene und aktive Zone, sobald ein Schreibvorgang in die Zone eingeplant ist oder wenn ein Zonenöffnungsbefehl durch den Host ausgegeben wird. Die Zonenverwaltungsbefehle (ZM-Befehle) können verwendet werden, um eine Zone zwischen den Zuständen „Zone offen“ und „Zone geschlossen“ zu verschieben, die beide aktive Zustände sind. Wenn eine Zone aktiv ist, weist die Zone offene Blöcke auf, die beschrieben werden können, und dem Host kann eine Beschreibung der empfohlenen Zeit im aktiven Zustand bereitgestellt werden. Die Steuerung kann die ZM aufweisen.
  • Der Begriff „beschrieben“ schließt das Programmieren von Benutzerdaten auf 0 oder mehr Wortleitungen in einem Löschblock, das Löschen und/oder teilweise gefüllte Wortleitungen in einem Löschblock ein, wenn die Benutzerdaten nicht alle verfügbaren Wortleitungen gefüllt haben. Der Begriff „beschrieben“ kann weiterhin das Schließen einer Zone aufgrund interner Laufwerksbehandlungsanforderungen (Probleme hinsichtlich der Datenhaltung in offenen Blöcken, da sich die fehlerhaften Bits bei offenen Löschblöcken schneller anhäufen), das Schließen einer Zone durch die Speichervorrichtung 400 aufgrund von Ressourcenbeschränkungen, wie zu viele offene Zonen, um den Defektzustand zu verfolgen oder zu entdecken, u. a., oder das Schließen einer Zone durch eine Hostvorrichtung aufgrund von Problemen, wie Fehlen von Daten, die an das Laufwerk gesendet werden können, Herunterfahren des Computers, Fehlerbehandlung auf dem Host, begrenzte Host-Ressourcen für die Verfolgung u. a., einschließen.
  • Die aktiven Zonen können entweder offen oder geschlossen sein. Eine offene Zone ist eine leere oder teilweise gefüllte Zone, die bereit ist, beschrieben zu werden, und gegenwärtig zugewiesene Ressourcen aufweist. Die Daten, die von der Hostvorrichtung mit einem Schreibbefehl oder Zonenanhang-Befehl empfangen werden, können auf einen offenen Löschblock programmiert werden, der gegenwärtig nicht mit früheren Daten gefüllt ist. Neue Daten, die von der Hostvorrichtung eingezogen werden, oder gültige Daten, die verlagert werden, können in eine offene Zone geschrieben werden. Gültige Daten können zum Zweck der Speicherbereinigung von einer Zone (z. B. der ersten Zone 402a) in eine andere Zone (z. B. die dritte Zone 402c) verschoben werden. Eine geschlossene Zone ist eine leere oder teilweise gefüllte Zone, die derzeit nicht fortlaufend vom Host beschrieben wird. Der Wechsel einer Zone von einem offenen Zustand in einen geschlossenen Zustand ermöglicht es der Steuerung 408, Ressourcen anderen Aufgaben neu zuzuweisen. Diese Aufgaben können andere Zonen, die offen sind, andere herkömmliche Nicht-Zonen-Bereiche oder andere Anforderungen der Steuerung einschließen, sind aber nicht darauf beschränkt.
  • Sowohl in der offenen als auch in der geschlossenen Zone zeigt der Schreibzeiger auf eine Stelle in der Zone irgendwo zwischen der ZSLBA und dem Ende der letzten LBA der Zone (d. h. WP>0). Aktive Zonen können zwischen dem offenen und dem geschlossenen Zustand wechseln, wenn sie von der ZM bezeichnet werden oder wenn ein Schreibvorgang in die Zone geplant ist. Zusätzlich kann die ZM eine aktive Zone zurücksetzen, um die in der Zone gespeicherten Daten zu leeren oder zu löschen, sodass die Zone wieder in eine leere Zone wechselt. Sobald eine aktive Zone voll ist, wechselt die Zone in den vollen Zustand. Eine volle Zone ist eine Zone, die vollständig mit Daten gefüllt ist und keine Blöcke mehr zum Schreiben von Daten zur Verfügung hat (d. h. WP=Zonenkapazität (ZCAP)). Lesebefehle von Daten, die in vollen Zonen gespeichert sind, können weiterhin ausgeführt werden.
  • Die ZM kann eine volle Zone zurücksetzen und eine Löschung der in der Zone gespeicherten Daten planen, sodass die Zone wieder in eine leere Zone wechselt. Wenn eine volle Zone zurückgesetzt wird, kann es vorkommen, dass die Zone nicht sofort von Daten geleert wird, obwohl die Zone als leere Zone markiert werden kann, die zum Beschreiben bereit ist. Die Rücksetzzone muss jedoch vor dem Wechsel in eine aktive Zone gelöscht werden. Eine Zone kann jederzeit zwischen einem ZM-Zurücksetzen und einem ZM-Öffnen gelöscht werden. Eine Offline-Zone ist eine Zone, die nicht verfügbar ist, um Daten zu schreiben. Eine Offline-Zone kann sich im vollen Zustand, im leeren Zustand oder in einem teilweise gefüllten Zustand befinden, ohne aktiv zu sein.
  • Da das Zurücksetzen einer Zone die in der Zone gespeicherten Daten löscht oder deren Löschung plant, entfällt die Notwendigkeit der Speicherbereinigung einzelner Löschblöcke, wodurch der gesamte Speicherbereinigungsprozess der Speichervorrichtung 400 verbessert wird. Die Speichervorrichtung 400 kann einen oder mehrere Löschblöcke zum Löschen markieren. Wenn eine neue Zone gebildet wird und die Speichervorrichtung 400 ein ZM-Öffnen erwartet, können der eine oder die mehreren zum Löschen markierten Löschblöcke dann gelöscht werden. Die Speichervorrichtung 400 kann weiterhin die physische Sicherung der Zone beim Löschen der Löschblöcke beschließen und erstellen. Sobald somit die neue Zone geöffnet ist und Löschblöcke zum Bilden der Zone ausgewählt werden, werden die Löschblöcke gelöscht worden sein. Darüber hinaus können bei jedem Zurücksetzen einer Zone eine neue Reihenfolge für die LBAs und der Schreibzeiger 410 für die Zone 406 gewählt werden, wodurch die Zone 406 tolerant gegenüber dem Empfang von Befehlen außerhalb der sequentiellen Reihenfolge sein kann. Der Schreibzeiger 410 kann wahlweise abgeschaltet werden, sodass ein Befehl in jedwede Start-LBA geschrieben werden kann, die für den Befehl angegeben wird.
  • Wieder Bezug nehmend auf 4A kann die Steuerung 408, wenn die Steuerung 408 einen Schreibbefehl initiiert oder einzieht, eine leere Zone 406 auswählen, um die dem Befehl zugeordneten Daten zu schreiben, und die leere Zone 406 wechselt in eine aktive Zone 406. Wie hier verwendet, weist das Initiieren oder Einziehen eines Schreibbefehls durch die Steuerung 408 das Empfangen eines Schreibbefehls oder das Lesen per direkten Speicherzugriff (DMA) des Schreibbefehls auf. Der Schreibbefehl kann ein Befehl zum Schreiben neuer Daten oder ein Befehl zum Verschieben gültiger Daten in eine andere Zone zum Zweck der Speicherbereinigung sein. Die Steuerung 408 ist eingerichtet, um neue Befehle aus einer von einer Hostvorrichtung besetzten Übertragungswarteschlange per DMA zu lesen oder einzuziehen.
  • In einer leeren Zone 406, die gerade in eine aktive Zone 406 gewechselt hat, werden die Daten beginnend bei der ZSLBA in die Zone 406 geschrieben, da der Schreibzeiger 410 den der ZSLBA zugeordneten Logikblock als den ersten verfügbaren Logikblock anzeigt. Die Daten können in einen oder mehrere Löschblöcke oder NAND-Stellen geschrieben werden, die für die physische Stelle der Zone 406 zugewiesen wurden. Nachdem die dem Schreibbefehl zugeordneten Daten in die Zone 406 geschrieben wurden, wird der Schreibzeiger 410 aktualisiert und zeigt auf den nächsten verfügbaren Block in der Zone 406, um den nächsten Schreibstartpunkt (d. h. den Beendigungspunkt des ersten Schreibvorgangs) zu verfolgen. Alternativ kann die Steuerung 408 eine aktive Zone auswählen, um die Daten zu schreiben. In einer aktiven Zone werden die Daten in den Logikblock geschrieben, der durch den Schreibzeiger 410 als der nächste verfügbare Block angezeigt wird.
  • In einigen Ausführungsformen kann eine NAND-Stelle gleich einer Wortleitung sein. Wenn in einer solchen Ausführungsform der Schreibbefehl kleiner als eine Wortleitung ist, kann die Steuerung wahlweise mehrere Schreibbefehle an einem anderen Speicherort wie DRAM oder SRAM aggregieren, bevor sie eine vollständige Wortleitung programmiert, die aus mehreren Schreibbefehlen zusammengesetzt ist. Schreibbefehle, die länger als eine Wortleitung sind, sind in der Lage, eine vollständige Wortleitung mit einigen der Daten zu programmieren und zu füllen, und die überschüssigen Daten über eine Wortleitung hinaus werden verwendet, um die nächste Wortleitung zu füllen. Eine NAND-Stelle ist jedoch nicht darauf beschränkt, gleich einer Wortleitung zu sein, und kann eine größere oder kleinere Größe als eine Wortleitung aufweisen. Zum Beispiel kann in einigen Ausführungsformen eine NAND-Stelle gleich der Größe einer Seite sein.
  • Beispielsweise kann die Steuerung 408 einen ersten Schreibbefehl in eine dritte Zone 406c oder einen ersten Zonenanhang-Befehl empfangen, einziehen oder DMA-lesen. Der Host identifiziert nacheinander, an welchen Logikblock der Zone 406 die dem ersten Befehl zugeordneten Daten zu schreiben sind. Die dem ersten Befehl zugeordneten Daten werden dann in die erste oder nächste(n) verfügbare(n) LBA(s) in der dritten Zone 406c geschrieben, wie durch den Schreibzeiger 410 angezeigt wird, und der Schreibzeiger 410 wird so vorgerückt oder aktualisiert, dass er auf die nächste verfügbare LBA zeigt, die für einen Host-Schreibvorgang verfügbar ist (d. h. WP>0). Wenn die Steuerung 408 einen zweiten Schreibbefehl in die dritte Zone 406c empfängt oder einzieht, werden die dem zweiten Schreibbefehl zugeordneten Daten in die nächste(n) verfügbare(n) LBA(s) in der dritten Zone 406c geschrieben, die durch den Schreibzeiger 410 identifiziert werden. Sobald die dem zweiten Befehl zugeordneten Daten in die dritte Zone 406c geschrieben worden sind, rückt der Schreibzeiger 410 erneut vor oder wird aktualisiert, sodass er auf die nächste verfügbare LBA zeigt, die für einen Host-Schreibvorgang zur Verfügung steht. Durch das Zurücksetzen der dritten Zone 406c wird der Schreibzeiger 410 wieder auf ZcSLBA zurück verschoben (d. h. WP=0), und die dritte Zone 406c wechselt in eine leere Zone.
  • 5A veranschaulicht ein Verfahren 500 zum Betreiben einer Speichervorrichtung gemäß einer Ausführungsform. 5B veranschaulicht ein beispielhaftes Diagramm 550, das die erwartete Spannungsverteilung für die erste Durchgangsprogrammierung (d. h. die „Foggy“-Programmierung) und die zweite Durchgangsprogrammierung (d. h. die „Fine“-Programmierung), auf die in dem Verfahren 500 Bezug genommen wird, zeigt. Das Verfahren 500 kann mit dem Speichersystem 100 aus 1, das die Steuerung 108 aufweist, oder dem Speichersystem 200 aus 2, das den Befehlsprozessor 220 aufweist, verwendet werden. Das Verfahren 500 kann mit einer Speichervorrichtung implementiert werden, die ZNS verwendet, wie die ZNS 402 aus 4.
  • In Operation 502 wird ein erster Befehl zum Schreiben von Daten auf eine erste Seite oder eine erste NAND-Stelle in einem ersten Löschblock abgerufen, die dem ersten Befehl zugeordneten Daten werden ein erstes Mal von einer Hostvorrichtung eingezogen, DMA-gelesen oder an die Speichervorrichtung übertragen, und der erste Befehl wird teilweise verarbeitet. Der erste Löschblock kann sich in einer ersten Zone befinden. Der erste Löschblock ist innerhalb einer Medieneinheit wie einer NAND-Speichervorrichtung angeordnet. In einer Ausführungsform ist die Medieneinheit eine QLC-NAND-Medieneinheit. Das teilweise Verarbeiten des ersten Befehls kann das Lesen der Daten, die dem ersten Befehl zugeordnet sind, und das teilweise Schreiben oder Durchführen einer ersten Durchgangsprogrammierung der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite oder die erste NAND-Stelle in dem ersten Löschblock (d. h. eine „Foggy“-Programmierung der Daten) aufweisen. Das teilweise Schreiben der Daten wird bei einem ersten Spannungsziel durchgeführt, das für eine erste Zeitdauer an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt wird. Die Steuerung kann wahlweise die Daten verwerfen, die dem ersten Befehl zugeordnet sind.
  • In einer Ausführungsform beruht der Grund für die Foggy-Fine-Programmierung und die verschachtelte Programmierung der NAND-Seitenordnungen auf den hohen Spannungen, die während des Foggy-Zustands angelegt werden, die hohe Störungen auf den benachbarten Seiten verursachen. Das zukünftige Halten der Foggy-Programmierspannungen auf zwei NAND-Seiten bedeutet, dass die Fine-Programmierschritte niedrigerer Spannungen die Nachbarseiten und die Daten der Nachbarseiten nicht stören. Somit ist die zuletzt fertiggestellte fine-programmierte Seite nur geringfügig von der Fine-Programmierung des laufenden Fine-Programmierschrittes betroffen. In ähnlicher Weise ist dieselbe NAND-Seite zwei Seiten von der Seite entfernt, die die Foggy-Programmierspannungen erfahren hat.
  • Da die Daten, die dem ersten Befehl zugeordnet sind, nur teilweise auf die erste Seite (oder die erste NAND-Stelle) geschrieben oder vollständig verworfen werden, können die Daten in einigen Implementierungen nicht lesbar sein. Obwohl die Daten teilweise geschrieben werden können, ist außerdem der erste Befehl unvollständig, und die Daten werden in der Hostvorrichtung statt in der Steuerung gespeichert. Während die Daten zwischen dem Abrufen des ersten Befehls und dem teilweisen Schreiben der dem ersten Befehl zugeordneten Daten in den ersten Löschblock durch einen internen Speicher des Steuerungs laufen können, werden die Daten für die Dauer der Verarbeitung des ersten Befehls nicht im Steuerungsspeicher gespeichert.
  • In Operation 504 wird ein zweiter Befehl zum Schreiben von Daten auf eine zweite Seite oder eine zweite NAND-Stelle in dem ersten Löschblock abgerufen, die dem zweiten Befehl zugeordneten Daten werden ein erstes Mal von der Hostvorrichtung eingezogen, DMA-gelesen oder an die Speichervorrichtung übertragen, und der zweite Befehl wird teilweise verarbeitet. Das teilweise Verarbeiten des zweiten Befehls kann das Lesen der Daten, die dem zweiten Befehl zugeordnet sind, und das teilweise Schreiben oder Durchführen einer ersten Durchgangsprogrammierung der Daten, die dem zweiten Befehl zugeordnet sind, an die zweite Seite oder die zweite NAND-Stelle in dem ersten Löschblock (d. h. eine erneute „Foggy“-Programmierung der Daten) aufweisen. Das teilweise Schreiben der Daten erfolgt beim ersten Spannungsziel. In einer Ausführungsform kann der zweite Befehl in einen zweiten Löschblock der Medieneinheit geschrieben werden. Die Steuerung kann wahlweise die Daten verwerfen, die dem zweiten Befehl zugeordnet sind.
  • In Operation 506 wird beim Abrufen des zweiten Befehls die Verarbeitung des ersten Befehls durch ein zweites Einziehen, DMA-Lesen oder Übertragen der dem ersten Befehl zugeordneten Daten und Schreiben der dem ersten Befehl zugeordneten Daten auf die erste Seite oder erste NAND-Stelle in dem ersten Löschblock abgeschlossen. Das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, wird nach dem Abrufen des zweiten Befehls bei einem zweiten Spannungsziel durchgeführt, das größer als das erste Spannungsziel ist, und ist eine zweite Durchgangsprogrammierung der Daten (d. h. eine „Fine“-Programmierung der Daten). Das zweite Spannungsziel wird für eine zweite Zeitdauer, die größer als die erste Zeitdauer ist, an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt. Das Abrufen des zweiten Befehls löst das vollständige Schreiben der Daten aus, die dem ersten Befehl zugeordnet sind (d. h. das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, wird erst dann beendet, wenn die Speichervorrichtung den zweiten Befehl empfängt). Somit wird der erste Befehl als „hostage“ gehalten (d. h. nicht beendet, nur teilweise beendet und/oder angehalten), bis der zweite Befehl abgerufen wird. Das Halten des ersten Befehls als „hostage“ kann weiterhin das Zurückhalten oder Verzögern eines Schreibbeendigungseintrags oder einer Schreibbeendigungsbenachrichtigung von einer Hostvorrichtung aufweisen. Sobald die Verarbeitung des ersten Befehls beendet ist, sind die Daten von der Medieneinheit lesbar.
  • Nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite oder die erste NAND-Stelle in dem ersten Löschblock signalisiert die Steuerung die Beendigung des ersten Befehls. Die Steuerung kann die Beendigung des ersten Befehls signalisieren, indem sie einen ersten Beendigungseintrag, der dem ersten Befehl entspricht, in die Beendigungswarteschlange schreibt, das Ende der Beendigungswarteschlange aktualisiert, sodass es auf den ersten Beendigungseintrag zeigt, und an der Türklingel bei der Hostvorrichtung klingelt. Das Verfahren 500 kann dann ein oder mehrere Male wiederholen, wenn nachfolgende Befehle von der Hostvorrichtung empfangen werden.
  • 5B veranschaulicht ein beispielhaftes Diagramm 550, das die erwartete Spannungsverteilung für die erste Durchgangsprogrammierung (d. h. die „Foggy“-Programmierung) und die zweite Durchgangsprogrammierung (d. h. die „Fine“-Programmierung) zeigt. Wie gezeigt, legt der Foggy-Zustand 552 der Programmierung große Spannungsimpulse an, um die Zellen der Seite oder NAND-Stelle zu programmieren, während der Fine-Zustand 554 kleinere, genauere Spannungsimpulse anlegt, um die Zellen der Seite oder NAND-Stelle zu programmieren. Die Spannung des Foggy-Zustands 552 kann für eine endgültige Verteilung von Spannungszuständen möglicherweise nicht gut gesteuert werden. Eine solche mangelnde Genauigkeit beruht darauf, dass der Foggy-Programmierzustand die Spannungsverteilung durch eine große Geschwindigkeitsänderung verschiebt. Die Spannung des Fine-Zustands 554 wird genauer angelegt, sodass der Spannungszustand in einem genau gesteuerten Zustand abgeschlossen wird. Um den genau gesteuerten Zustand zu erreichen, werden langsamere Programmierschritte mit kleineren Spannungsinkrementen angewendet, und die Medienschaltung kann eine zusätzliche Erfassung des Zwischen- und/oder Endstatus während dieser feinen Spannungsprogrammierschritte anwenden.
  • Das vorstehende Verfahren beschreibt eine Ausführungsform, bei der die Daten, die einem Host-Schreibbefehl zugeordnet sind, groß genug sind, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, entsprechen einer Seitengröße oder einer NAND-Stellengröße). In Ausführungsformen, in denen der Host-Schreibbefehl zu klein ist, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind kleiner als eine Seitengröße oder eine NAND-Stellengröße) oder zu groß für eine Seite oder eine NAND-Stelle (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind größer als eine Seitengröße oder eine NAND-Stellengröße), ist das vorstehende Verfahren jedoch immer noch anwendbar.
  • In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu groß sind, um eine Seite oder eine NAND-Stelle zu füllen, werden die Daten, die dem Host-Schreibbefehl zugeordnet sind, zuerst in Seitengrößen oder NAND-Stellengrößen zerlegt. In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, kann mehr als ein Host-Befehl erforderlich sein, um eine Seite oder eine NAND-Stelle zu füllen, und mehrere Host-Schreibbefehle können aggregiert werden, um eine Seite oder eine NAND-Stelle zu füllen. Darüber hinaus können Host-Schreibbefehle, die zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, wahlweise zusammengeführt werden. Das Zusammenführen von Schreibbefehlen ist eine unabhängige Entscheidung durch die Speichervorrichtung, die verwendet werden kann, und die Speichervorrichtung kann die Warteschlangentiefe berücksichtigen, wenn ausgewählt wird, ob Schreibbefehle zusammengeführt werden sollen.
  • 6 veranschaulicht ein Verfahren 600 zum Betreiben einer Speichervorrichtung gemäß einer anderen Ausführungsform. Das Verfahren 600 kann mit der Speichervorrichtung 106 aus 1 oder der Speichervorrichtung 206 aus 2 verwendet werden. Das Verfahren 600 kann mit einer Speichervorrichtung implementiert werden, die eine ZNS verwendet, wie die ZNS 402 aus 4.
  • In Operation 602 wird ein erster Befehl zum Schreiben von Daten auf eine erste Seite oder eine erste NAND-Stelle in einem ersten Löschblock von einer Steuerung der Speichervorrichtung abgerufen und die Daten, die dem ersten Befehl zugeordnet sind, werden ein erstes Mal eingezogen, DMA-gelesen oder übertragen. Der erste Löschblock kann sich in einer ersten Zone befinden. In einer Ausführungsform wird der erste Befehl von einer Hostvorrichtung abgerufen, wie der Hostvorrichtung 104 aus 1 oder der Hostvorrichtung 204 aus 2. In einer anderen Ausführungsform werden die Daten, die dem ersten Befehl zugeordnet sind, aus einem anderen Löschblock für Speicherbereinigungszwecke abgerufen. Der erste Löschblock ist innerhalb einer Medieneinheit oder Medien wie einer NAND-Medieneinheit angeordnet. In einer Ausführungsform ist die Medieneinheit eine QLC-NAND-Medieneinheit. Das Abrufen des ersten Befehls weist das Durchführen eines ersten Lesens der Daten, die dem ersten Befehl zugeordnet sind, von der Hostvorrichtung auf.
  • In Operation 604 werden die Daten, die dem ersten Befehl zugeordnet sind, teilweise an die erste Seite oder erste NAND-Stelle in dem ersten Löschblock bei einem ersten Spannungsziel geschrieben. Der erste Spannungspegel wird für eine erste Zeitdauer an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt. Das teilweise Schreiben der Daten kann ein „Foggy“-Schreiben oder -Programmieren sein, wie in 5B beschrieben. Das teilweise Schreiben kann ein erstes Durchgangsprogramm der Daten sein. Die Steuerung kann wahlweise die Daten verwerfen, die dem ersten Befehl zugeordnet sind.
  • Da die dem ersten Befehl zugeordneten Daten nur teilweise in den ersten Löschblock geschrieben oder verworfen werden, sind die Daten nicht lesbar. Obwohl die Daten teilweise geschrieben werden, ist außerdem der erste Befehl nicht beendet und die Daten werden immer noch in der Hostvorrichtung und nicht in der Steuerung gespeichert. Während die Daten zwischen dem Abrufen des ersten Befehls und dem teilweisen Schreiben der dem ersten Befehl zugeordneten Daten in den ersten Löschblock durch einen internen Speicher des Steuerungs laufen können, werden die Daten für die Dauer der Verarbeitung des ersten Befehls nicht im Steuerungsspeicher gespeichert.
  • In Operation 606 wird ein zweiter Befehl zum Schreiben von Daten auf eine zweite Seite oder eine zweite NAND-Stelle in dem ersten Löschblock von der Steuerung abgerufen und die Daten, die dem zweiten Befehl zum Schreiben von Daten zugeordnet sind, werden ähnlich der Operation 602 erstmals eingezogen, DMA-gelesen oder übertragen. Das Abrufen des zweiten Befehls weist das Durchführen eines ersten Lesens der Daten, die dem zweiten Befehl zugeordnet sind, von der Hostvorrichtung auf. In einer Ausführungsform wird der zweite Befehl von einer Hostvorrichtung abgerufen, wie der Hostvorrichtung 104 aus 1 oder der Hostvorrichtung 204 aus 2. In einer anderen Ausführungsform werden die Daten, die dem zweiten Befehl zugeordnet sind, aus einem anderen Löschblock für Speicherbereinigungszwecke abgerufen.
  • In Operation 608 werden die Daten, die dem zweiten Befehl zugeordnet sind, teilweise in die zweite Seite oder zweite NAND-Stelle in dem ersten Löschblock bei dem ersten Spannungsziel geschrieben, ähnlich wie in Operation 604. In einer Ausführungsform kann der zweite Befehl in einen zweiten Löschblock der Medieneinheit geschrieben werden. Die Steuerung kann wahlweise die Daten verwerfen, die dem zweiten Befehl zugeordnet sind.
  • In Operation 610 werden beim Abrufen des zweiten Befehls in Operation 606 die dem ersten Befehl zugeordneten Daten ein zweites Mal eingezogen, DMA-gelesen oder übertragen und auf die erste Seite oder erste NAND-Stelle in dem ersten Löschblock bei einem zweiten Spannungsziel geschrieben. Das zweite Spannungsziel wird für eine zweite Zeitdauer, die größer als die erste Zeitdauer ist, an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt. Das Schreiben der Daten am zweiten Spannungsziel kann ein „Fine“-Schreiben sein, wie in 5B beschrieben. Das Schreiben der Daten am zweiten Spannungsziel kann ein zweites Durchgangsprogramm der Daten sein. Das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, weist bei dem zweiten Spannungsziel das Durchführen eines zweiten Lesens der Daten, die dem ersten Befehl zugeordnet sind, von der Hostvorrichtung auf.
  • Nach dem Schreiben der Daten bei dem zweiten Spannungsziel sind die Daten aus der Speichervorrichtung lesbar. Das Abrufen des zweiten Befehls löst das vollständige Schreiben der Daten aus, die dem ersten Befehl zugeordnet sind (d. h. das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, ist erst dann beendet, wenn die Speichervorrichtung den zweiten Befehl empfängt). Somit wird der erste Befehl als „hostage“ gehalten (d. h. nicht beendet, nur teilweise beendet und/oder angehalten), bis der zweite Befehl empfangen wird.
  • In Operation 612 signalisiert die Steuerung wahlweise die Beendigung des ersten Befehls. Die Steuerung signalisiert die Beendigung des ersten Befehls für Befehle, die von einer Hostvorrichtung empfangen werden. Die Steuerung kann die Beendigung des ersten Befehls signalisieren, indem sie einen ersten Beendigungseintrag, der dem ersten Befehl entspricht, in die Beendigungswarteschlange schreibt, das Ende der Beendigungswarteschlange aktualisiert, sodass es auf den ersten Beendigungseintrag zeigt, und an der Türklingel bei der Hostvorrichtung klingelt. Im Gegensatz zu herkömmlichen Verfahren wird der erste Beendigungseintrag in die Beendigungswarteschlange geschrieben, nachdem das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, vollständig verarbeitet wurde (d. h. die Verarbeitung des Befehls findet nicht im Hintergrund statt).
  • Wenn die dem ersten Befehl zugeordneten Daten zu Speicherbereinigungszwecken abgerufen wurden, signalisiert die Steuerung die Beendigung des ersten Befehls nicht. Daher wird, wenn die Daten, die dem ersten Befehl zugeordnet sind, zu Speicherbereinigungszwecken abgerufen werden, der erste Befehl aus der Perspektive der Hostvorrichtung nicht angehalten oder als „hostage“ gehalten.
  • Verfahren 600 wird auf die gleiche Weise fortgesetzt, während mehr Befehle empfangen werden. Zum Beispiel kann ein dritter Befehl zum Schreiben von Daten auf eine dritte Seite oder eine dritte NAND-Stelle in dem ersten Löschblock (oder in einen anderen Löschblock) das Abrufen sein, und Daten, die einem dritten Befehl zugeordnet sind, werden ein erstes Mal nach dem Schreiben des ersten Beendigungseintrags, der dem ersten Schreibbefehl entspricht, eingezogen, DMA-gelesen oder übertragen. Die Daten, die dem dritten Befehl zugeordnet sind, werden dann teilweise in die dritte Seite oder dritte NAND-Stelle im ersten Löschblock geschrieben oder verworfen. Beim Abrufen des dritten Befehls werden die Daten, die dem zweiten Befehl zugeordnet sind, ein zweites Mal eingezogen, DMA-gelesen oder übertragen und auf die zweite Seite oder zweite NAND-Stelle in dem ersten Löschblock bei dem zweiten Spannungsziel geschrieben. Die Steuerung kann die Beendigung des zweiten Befehls signalisieren, indem sie einen zweiten Beendigungseintrag, der dem zweiten Befehl entspricht, in die Beendigungswarteschlange schreibt, das Ende der Beendigungswarteschlange aktualisiert, sodass es auf den zweiten Beendigungseintrag zeigt, und an der Türklingel bei der Hostvorrichtung klingelt.
  • Sobald neue Befehle abgerufen werden, werden die neuen Befehle somit teilweise auf eine neue Seite oder eine neue NAND-Stelle an dem ersten Spannungsziel geschrieben, und der zuvor abgerufene Befehl wird in eine andere Seite oder eine andere NAND-Stelle bei dem zweiten Spannungsziel geschrieben. Mit anderen Worten wird eine erste Durchgangsprogrammierung des neuen Befehls durchgeführt, und eine zweite Durchgangsprogrammierung des zuvor empfangenen Befehls wird durchgeführt.
  • Das vorstehende Verfahren beschreibt eine Ausführungsform, bei der die Daten, die einem Host-Schreibbefehl zugeordnet sind, groß genug sind, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, entsprechen einer Seitengröße oder einer NAND-Stellengröße). In Ausführungsformen, in denen der Host-Schreibbefehl zu klein ist, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind kleiner als eine Seitengröße oder eine NAND-Stellengröße) oder zu groß für eine Seite oder eine NAND-Stelle (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind größer als eine Seitengröße oder eine NAND-Stellengröße), ist das vorstehende Verfahren jedoch immer noch anwendbar.
  • In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu groß sind, um eine Seite oder eine NAND-Stelle zu füllen, werden die Daten, die dem Host-Schreibbefehl zugeordnet sind, zuerst in Seitengrößen oder NAND-Stellengrößen zerlegt. In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, kann mehr als ein Host-Befehl erforderlich sein, um eine Seite oder eine NAND-Stelle zu füllen, und mehrere Host-Schreibbefehle können aggregiert werden, um eine Seite oder eine NAND-Stelle zu füllen. Darüber hinaus können Host-Schreibbefehle, die zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, wahlweise zusammengeführt werden. Das Zusammenführen von Schreibbefehlen ist eine unabhängige Entscheidung durch die Speichervorrichtung, die verwendet werden kann, und die Speichervorrichtung kann die Warteschlangentiefe berücksichtigen, wenn ausgewählt wird, ob Schreibbefehle zusammengeführt werden sollen.
  • 7 veranschaulicht ein Verfahren 700 zum Betreiben einer Speichervorrichtung während eines Stromausfalls gemäß einer Ausführungsform. Das Verfahren 700 kann mit dem Speichersystem 100 aus 1, das die Steuerung 108 aufweist, oder dem Speichersystem 200 aus 2, das den Befehlsprozessor 220 aufweist, verwendet werden. Das Verfahren 700 kann mit einer Speichervorrichtung implementiert werden, die ZNS verwendet, wie die ZNS 402 aus 4. Zusätzlich kann das Verfahren 700 mit einer Speichervorrichtung implementiert werden, die keine ZNS verwendet.
  • In Operation 702 wird ein erster Befehl zum Schreiben von Daten auf eine erste Seite oder eine erste NAND-Stelle in einem ersten Löschblock abgerufen, die dem ersten Befehl zugeordneten Daten werden ein erstes Mal eingezogen oder DMA-gelesen, und der erste Befehl wird teilweise verarbeitet. Der erste Löschblock kann sich in einer ersten Zone befinden. Der erste Löschblock ist innerhalb einer Medieneinheit oder Medien wie einer NAND-Medieneinheit angeordnet. In einer Ausführungsform ist die Medieneinheit eine QLC-NAND-Medieneinheit. Das teilweise Verarbeiten des ersten Befehls kann das Lesen der Daten, die dem ersten Befehl zugeordnet sind, und das teilweise Schreiben oder Durchführen einer ersten Durchgangsprogrammierung der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock (d. h. eine „Foggy“-Programmierung der Daten) aufweisen, wie in 5B beschrieben. Das teilweise Schreiben der Daten wird bei einem ersten Spannungsziel durchgeführt, das für eine erste Zeitdauer an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt wird. Die Steuerung kann wahlweise die Daten verwerfen, die dem ersten Befehl zugeordnet sind.
  • In Operation 704 hält die Speichervorrichtung den ersten Befehl als „hostage“ (d. h. nicht beendet, nur teilweise beendet und/oder angehalten) und wartet ein zweites Mal auf das Einziehen oder DMA-Lesen der dem ersten Befehl zugeordneten Daten, um die Verarbeitung des ersten Befehls zu beenden, bis ein zweiter Befehl empfangen wird. In Operation 706 wird eine Stromausfall- oder Stromausfallbenachrichtigung empfangen. Die Stromausfallbenachrichtigung wird empfangen, bevor ein zweiter Befehl empfangen, eingezogen oder DMA-gelesen wird.
  • In Operation 708 kann die Speichervorrichtung wahlweise Dummy-Programmdaten auf die zweite Seite oder eine zweite NAND-Stelle des ersten Löschblocks foggyprogrammieren und die Daten, die dem ersten Befehl zugeordnet sind, ein zweites Mal einziehen oder DMA-lesen, um die Verarbeitung des ersten Befehls zu beenden. Das zweite Einziehen oder DMA-Lesen der Daten, die dem ersten Befehl zugeordnet sind, ermöglicht es der Speichervorrichtung, das Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zu beenden, sodass die Daten von der Medieneinheit lesbar sind, wie oben in den Verfahren 500 und 600 beschrieben. Sobald die Verarbeitung des ersten Befehls beendet ist, sind die Daten von der Medieneinheit lesbar. Eine Schreibbeendigung kann dann an den Host zurückgegeben werden, was signalisiert, dass die Daten beim nächsten Einschalten für die Speichervorrichtung lesbar sind.
  • Alternativ kann die Speichervorrichtung bei Empfang der Stromausfallbenachrichtigung den ersten Befehl möglicherweise nicht beenden. In einer solchen Ausführungsform wird das Einziehen oder DMA-Lesen der Daten, die dem ersten Befehl zugeordnet sind, ein zweites Mal nicht beendet, und das Programm der Daten befindet sich in einem unvollständigen Status. Wenn die Speichervorrichtung den ersten Befehl nicht beendet, können die Daten, die dem ersten Befehl zugeordnet sind, beim nächsten Booten möglicherweise nicht lesbar oder gültig sein. Der unvollständige Schreibvorgang würde abgewickelt, da für jede SSD die Schnittstellenspezifikation gilt. Im Falle von NVMe wäre das Schreiben nicht beendet, und die Daten müssen nicht lesbar sein.
  • Die Verfahren 500, 600 und 700 können jeweils einzeln mit einer Speichervorrichtung implementiert werden, die keine ZNS verwendet. Speichervorrichtungen, die keine ZNS verwenden, können jedoch gültige Daten zu Speicherbereinigungszwecken von einem ersten Löschblock zu einem zweiten Löschblock verschieben. 8 veranschaulicht ein Verfahren 900 zum Betreiben einer Speichervorrichtung, die eine ZNS während eines Speicherbereinigungsprozesses nicht verwendet, gemäß einer anderen Ausführungsform. Das Verfahren 800 kann mit der Speichervorrichtung 106 aus 1 oder der Speichervorrichtung 206 aus 2 verwendet werden.
  • In Operation 802 wird ein erster Speicherbereinigungsbefehl-(GC-Befehl) zum erneuten Schreiben gültiger Daten auf eine erste Seite oder eine erste NAND-Stelle in einem ersten Löschblock empfangen, die gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, werden ein erstes Mal eingezogen oder DMA-gelesen, und der erste GC-Befehl wird teilweise verarbeitet. Der erste Löschblock ist innerhalb einer Medieneinheit oder Medien wie einer NAND-Medieneinheit angeordnet. In einer Ausführungsform ist die Medieneinheit eine QLC-NAND-Medieneinheit. Das teilweise Verarbeiten des ersten GC-Befehls kann das Lesen der gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, und das teilweise Schreiben oder Durchführen einer ersten Durchgangsprogrammierung der gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, auf die erste Seite oder die erste NAND-Stelle in dem ersten Löschblock (d. h. eine erneute Programmierung der Daten) aufweisen, wie in 5B beschrieben. Das teilweise Schreiben der gültigen Daten wird bei einem ersten Spannungsziel durchgeführt, das für eine erste Zeitdauer an jede Zelle der ersten Seite oder ersten NAND-Stelle angelegt wird. Die Steuerung kann wahlweise die gültigen Daten verwerfen, die dem ersten GC-Befehl zugeordnet sind.
  • In Operation 804 werden die gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, ein zweites Mal eingezogen oder DMA-gelesen, um die Verarbeitung des ersten GC-Bereinigungsbefehls zu beenden, und die gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, werden in die erste Seite oder erste NAND-Stelle in dem ersten Löschblock neu geschrieben, ohne dass darauf gewartet wird, einen zweiten GC-Befehl zu empfangen. Das Neuschreiben der gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, wird bei einem zweiten Spannungspegel durchgeführt, der größer als der erste Spannungspegel ist, und ist eine zweite Durchgangsprogrammierung der Daten (d. h. eine „Fine“-Programmierung der Daten), wie in 5B beschrieben. Der zweite Spannungspegel ist ein Zielspannungspegel für die Verarbeitung des Befehls. Die zweite Durchgangsprogrammierung der gültigen Daten, die dem ersten GC-Befehl zugeordnet sind, kann im Hintergrund erfolgen, wenn die Speichervorrichtung andere Befehle verarbeitet. Insofern hält die Speichervorrichtung den ersten GC-Befehl nicht als „hostage“. Sobald die Verarbeitung des ersten GC-Befehls beendet ist, sind die gültigen Daten wieder von der Medieneinheit lesbar.
  • Das vorstehende Verfahren beschreibt eine Ausführungsform, bei der die Daten, die einem Host-Schreibbefehl zugeordnet sind, groß genug sind, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, entsprechen einer Seitengröße oder einer NAND-Stellengröße). In Ausführungsformen, in denen der Host-Schreibbefehl zu klein ist, um eine Seite oder eine NAND-Stelle zu füllen (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind kleiner als eine Seitengröße oder eine NAND-Stellengröße) oder zu groß für eine Seite oder eine NAND-Stelle (d. h. die Daten, die dem Host-Befehl zugeordnet sind, sind größer als eine Seitengröße oder eine NAND-Stellengröße), ist das vorstehende Verfahren jedoch immer noch anwendbar.
  • In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu groß sind, um eine Seite oder eine NAND-Stelle zu füllen, werden die Daten, die dem Host-Schreibbefehl zugeordnet sind, zuerst in Seitengrößen oder NAND-Stellengrößen zerlegt. In Ausführungsformen, in denen die Daten, die einem Host-Schreibbefehl zugeordnet sind, zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, kann mehr als ein Host-Befehl erforderlich sein, um eine Seite oder eine NAND-Stelle zu füllen, und mehrere Host-Schreibbefehle können aggregiert werden, um eine Seite oder eine NAND-Stelle zu füllen. Darüber hinaus können Host-Schreibbefehle, die zu klein sind, um eine Seite oder eine NAND-Stelle zu füllen, wahlweise zusammengeführt werden. Das Zusammenführen von Schreibbefehlen ist eine unabhängige Entscheidung durch die Speichervorrichtung, die verwendet werden kann, und die Speichervorrichtung kann die Warteschlangentiefe berücksichtigen, wenn ausgewählt wird, ob Schreibbefehle zusammengeführt werden sollen.
  • Durch Durchführen einer ersten Durchgangsprogrammierung von Daten, die einem ersten Befehl zugeordnet sind, um die Daten, die dem ersten Befehl zugeordnet sind, teilweise in einen Löschblock zu schreiben, und dann Durchführen einer zweiten Durchgangsprogrammierung der Daten, die dem ersten Befehl zugeordnet sind, können die Daten, die dem ersten Befehl zugeordnet sind, in der Hostvorrichtung gespeichert werden, bis das Schreiben der Daten beendet ist. Dabei spart der flüchtige Speicherplatz der Steuerung, wie der DRAM und/oder SRAM, Platz. Durch Speichern von Daten in der Hostvorrichtung während des Verarbeitens von Befehlen anstatt in dem internen Speicher der Steuerung werden die SSD-Gesamtleistung, der SSD-Durchsatz und die SSD-Effizienz verbessert. Darüber hinaus wird die Menge an Strom, die während des Verarbeitens von Befehlen verbraucht wird, reduziert, was wiederum Kosten reduziert, die mit der Steuerung verbunden sind.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit und eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist. Die Steuerung ist eingerichtet, um einen ersten Befehl zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Medieneinheit abzurufen, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist, einen zweiten Befehl zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock abzurufen und beim Abrufen des zweiten Befehls die dem ersten Befehl zugeordneten Daten auf die erste Seite in dem ersten Löschblock zu schreiben.
  • Die Daten, die dem ersten Befehl zugeordnet sind, können in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem ersten Befehl zugeordnet sind, beim Empfangen des zweiten Befehls auf die erste Seite geschrieben werden. Die Steuerung kann weiterhin eingerichtet sein, um die Daten, die dem ersten Befehl zugeordnet sind, teilweise auf die erste Seite in dem ersten Löschblock bei einem ersten Spannungsziel zu schreiben, das für eine erste Zeitdauer angelegt wird, bevor der zweite Befehl abgerufen wird, wobei die dem ersten Befehl zugeordneten Daten auf die erste Seite bei einem zweiten Spannungsziel geschrieben werden, das für eine zweite Zeitdauer angelegt wird, die größer ist als die erste Zeitdauer, und eine Beendigung des ersten Befehls nach dem Schreiben der dem ersten Befehl zugeordneten Daten auf die erste Seite zu signalisieren. Die Steuerung kann weiterhin eingerichtet sein, um einen dritten Befehl zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock nach dem Signalisieren der Beendigung des ersten Befehls abzurufen, nach dem Abrufen des dritten Befehls die dem zweiten Befehl zugeordneten Daten auf die zweite Seite in dem ersten Löschblock zu schreiben und eine Beendigung des zweiten Befehls zu signalisieren.
  • Die Steuerung kann weiterhin eingerichtet sein, um die Daten, die dem zweiten Befehl zugeordnet sind, teilweise auf die zweite Seite in dem ersten Löschblock bei einem ersten Spannungsziel zu schreiben, das für eine erste Zeitdauer angelegt wird, bevor der dritte Befehl abgerufen wird, wobei die dem zweiten Befehl zugeordneten Daten auf die zweite Seite bei einem zweiten Spannungsziel geschrieben werden, das für eine zweite Zeitdauer angelegt wird, die größer ist als die erste Zeitdauer, und eine Beendigung des ersten Befehls nach dem Schreiben der dem ersten Befehl zugeordneten Daten auf die erste Seite zu signalisieren. Die Steuerung kann weiterhin eingerichtet sein, um einen vierten Befehl zum Schreiben von Daten auf eine vierte Seite in dem ersten Löschblock abzurufen, nachdem die Beendigung des zweiten Befehls signalisiert wurde, beim Abrufen des vierten Befehls die Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock zu schreiben und eine Beendigung des dritten Befehls zu signalisieren.
  • In einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist. Die Steuerung eingerichtet, um ein erstes Durchgangsprogramm von Daten durchzuführen, die einem zweiten Befehl zugeordnet sind, um die Daten teilweise auf eine erste Seite in einem ersten Löschblock einer ersten Zone der Vielzahl von Zonen zu schreiben, das erste Durchgangsprogramm von Daten durchzuführen, die einem zweiten Befehl zugeordnet sind, um die Daten teilweise auf eine zweite Seite in dem ersten Löschblock zu schreiben, bei Durchführen des ersten Durchgangsprogramms der Daten, die dem zweiten Befehl zugeordnet sind, ein zweites Durchgangsprogramm durchzuführen, um die Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock zu schreiben.
  • Die Daten, die dem ersten Befehl zugeordnet sind, können in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem ersten Befehl zugeordnet sind, beim Durchführen des zweiten Durchgangsprogramms auf die erste Seite geschrieben werden. Das erste Durchgangsprogramm kann bei einem ersten Spannungsziel durchgeführt werden, das für eine erste Zeitdauer angelegt wird, und das zweite Durchgangsprogramm kann bei einem zweiten Spannungsziel durchgeführt werden, das für eine zweite Zeitdauer angelegt wird, die größer als die erste Zeitdauer ist. Die Steuerung kann weiterhin eingerichtet sein, um eine Beendigung des ersten Befehls zu signalisieren, nachdem das zweite Durchgangsprogramm der Daten, die dem ersten Befehl zugeordnet sind, beendet ist.
  • Der Steuerung kann weiterhin eingerichtet sein zum Abrufen eines dritten Befehls zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock nach dem Schreiben des ersten Beendigungseintrags, Durchführen des ersten Durchgangsprogramms von Daten, die dem dritten Befehl zugeordnet sind, um die Daten teilweise auf die dritte Seite in dem ersten Löschblock zu schreiben, und beim Abrufen des dritten Befehls, Durchführen des zweiten Durchgangsprogramms, um die Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock zu schreiben. Die Steuerung kann weiterhin eingerichtet sein, um eine Beendigung des zweiten Befehls zu signalisieren, nachdem die dem zweiten Befehl zugeordneten Daten auf die zweite Seite geschrieben wurden. Die Daten, die dem zweiten Befehl zugeordnet sind, können in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem zweiten Befehl zugeordnet sind, beim Durchführen des zweiten Durchgangsprogramms auf die zweite Seite geschrieben werden.
  • In noch einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist eingerichtet ist, um einen ersten Befehl zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Speichervorrichtung abzurufen, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist, die Daten, die dem ersten Befehl zugeordnet sind, bei einem ersten Spannungsziel, das für eine erste Zeitdauer angelegt wird, teilweise auf die erste Seite in dem ersten Löschblock zu schreiben, einen zweiten Befehl zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock abzurufen, die Daten, die dem zweiten Befehl zugeordnet sind, bei dem ersten Spannungsziel teilweise auf die zweite Seite in dem ersten Löschblock zu schreiben, und beim Abrufen des zweiten Befehls die Daten, die dem ersten Befehl zugeordnet sind, bei einem zweiten Spannungsziel, das für eine zweite Zeitdauer angelegt wird, wobei die zweite Zeitdauer größer als die erste Zeitdauer ist, auf die erste Seite in dem ersten Löschblock zu schreiben.
  • Die Daten, die dem ersten Befehl zugeordnet sind, können in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem ersten Befehl zugeordnet sind, bei dem zweiten Spannungsziel geschrieben werden. Die Steuerung kann weiterhin eingerichtet sein, um eine Beendigung des ersten Befehls nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite zu signalisieren, einen dritten Befehl zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock abzurufen, teilweise die Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock bei dem ersten Spannungsziel zu schreiben, beim Abrufen des dritten Befehls die Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock bei dem zweiten Spannungsziel zu schreiben und eine Beendigung des zweiten Befehls zu signalisieren.
  • Die Daten, die dem zweiten Befehl zugeordnet sind, können in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem zweiten Befehl zugeordnet sind, bei dem zweiten Spannungsziel geschrieben werden. Die Steuerung kann weiterhin eingerichtet sein, um einen vierten Befehl zum Schreiben von Daten auf eine vierte Seite in dem ersten Löschblock nach dem Schreiben des zweiten Beendigungseintrags, der dem zweiten Schreibbefehl entspricht, abzurufen, teilweise die Daten, die dem vierten Befehl zugeordnet sind, auf die vierte Seite in dem ersten Löschblock bei dem ersten Spannungsziel zu schreiben, beim Abrufen des vierten Befehls die Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock bei dem zweiten Spannungsziel zu schreiben und eine Beendigung des zweiten Befehls zu signalisieren.
  • 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.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/696830 [0001]
    • US 62/868792 [0001]

Claims (20)

  1. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Medieneinheit, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist; Abrufen eines zweiten Befehls zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock; und beim Abrufen des zweiten Befehls, Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock.
  2. Speichervorrichtung gemäß Anspruch 1, wobei die dem ersten Befehl zugeordneten Daten in einer Hostvorrichtung gespeichert werden, bis die dem ersten Befehl zugeordneten Daten beim Empfangen des zweiten Befehls auf die erste Seite geschrieben werden.
  3. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist zum: teilweisen Schreiben der dem ersten Befehl zugeordneten Daten auf die erste Seite in dem ersten Löschblock bei einem ersten Spannungsziel, das für eine erste Zeitdauer angelegt wird, bevor der zweite Befehl empfangen wird, wobei die dem ersten Befehl zugeordneten Daten auf die erste Seite bei einem zweiten Spannungsziel geschrieben werden, das für eine zweite Zeitdauer angelegt wird, die größer als die erste Zeitdauer ist; und Signalisieren einer Beendigung des ersten Befehls nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite.
  4. Speichervorrichtung gemäß Anspruch 3, wobei die Steuerung weiterhin eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock nach dem Signalisieren der Beendigung des ersten Befehls; beim Abrufen des dritten Befehls, Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock; und Signalisieren einer Beendigung des zweiten Befehls.
  5. Speichervorrichtung gemäß Anspruch 4, wobei die Steuerung weiterhin eingerichtet ist zum: teilweisen Schreiben der dem zweiten Befehl zugeordneten Daten auf die zweite Seite in dem ersten Löschblock bei einem ersten Spannungsziel, das für eine erste Zeitdauer angelegt wird, bevor der dritte Befehl abgerufen wird, wobei die dem zweiten Befehl zugeordneten Daten auf die zweite Seite bei einem zweiten Spannungsziel geschrieben werden, das für eine zweite Zeitdauer angelegt wird, die größer als die erste Zeitdauer ist; und Signalisieren einer Beendigung des zweiten Befehls nach dem Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite.
  6. Speichervorrichtung gemäß Anspruch 5, wobei die dem zweiten Befehl zugeordneten Daten in einer Hostvorrichtung gespeichert werden, bis die dem zweiten Befehl zugeordneten Daten auf die zweite Seite bei dem zweiten Spannungsziel geschrieben werden.
  7. Speichervorrichtung gemäß Anspruch 5, wobei die Steuerung weiterhin eingerichtet ist zum: Abrufen eines vierten Befehls zum Schreiben von Daten auf eine vierte Seite in dem ersten Löschblock nach dem Schreiben des zweiten Beendigungseintrags; beim Abrufen des vierten Befehls, Schreiben der Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock; und Signalisieren einer Beendigung des dritten Befehls.
  8. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Durchführen eines ersten Durchgangsprogramms von Daten, die einem ersten Befehl zugeordnet sind, um die Daten teilweise auf eine erste Seite in einem ersten Löschblock einer ersten Zone der Vielzahl von Zonen zu schreiben; Durchführen des ersten Durchgangsprogramms von Daten, die einem zweiten Befehl zugeordnet sind, um die Daten teilweise auf eine zweite Seite in dem ersten Löschblock zu schreiben; und beim Durchführen des ersten Durchgangsprogramms der Daten, die dem zweiten Befehl zugeordnet sind, Durchführen eines zweiten Durchgangsprogramms, um die Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock zu schreiben.
  9. Speichervorrichtung gemäß Anspruch 8, wobei die Daten, die dem ersten Befehl zugeordnet sind, in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite beim Durchführen des zweiten Durchgangsprogramms geschrieben werden.
  10. Speichervorrichtung gemäß Anspruch 8, wobei das erste Durchgangsprogramm bei einem ersten Spannungsziel durchgeführt wird, das für eine erste Zeitdauer angelegt wird, und das zweite Durchgangsprogramm bei einem zweiten Spannungsziel durchgeführt wird, das für eine zweite Zeitdauer angelegt wird, die größer als die erste Zeitdauer ist.
  11. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung weiterhin eingerichtet ist zum: Signalisieren einer Beendigung des ersten Befehls, nachdem das zweite Durchgangsprogramm der Daten, die dem ersten Befehl zugeordnet sind, beendet ist.
  12. Speichervorrichtung gemäß Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock; Durchführen des ersten Durchgangsprogramms von Daten, die dem dritten Befehl zugeordnet sind, um die Daten teilweise auf die dritte Seite in dem ersten Löschblock zu schreiben; und beim Abrufen des dritten Befehls, Durchführen des zweiten Durchgangsprogramms, um die Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock zu schreiben.
  13. Speichervorrichtung gemäß Anspruch 12, wobei die Steuerung weiterhin eingerichtet ist zum: Signalisieren einer Beendigung des zweiten Befehls, nachdem die Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite geschrieben werden.
  14. Speichervorrichtung gemäß Anspruch 12, wobei die Daten, die dem zweiten Befehl zugeordnet sind, in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem zweiten Befehl zugeordnet sind, beim Durchführen des zweiten Durchgangsprogramms auf die zweite Seite geschrieben werden.
  15. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten auf eine erste Seite in einem ersten Löschblock der Medieneinheit, wobei der erste Löschblock in einer ersten Zone der Vielzahl von Zonen angeordnet ist; teilweisen Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock bei einem ersten Spannungsziel, das für eine erste Zeitdauer angelegt wird; Abrufen eines zweiten Befehls zum Schreiben von Daten auf eine zweite Seite in dem ersten Löschblock; teilweise Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock bei dem ersten Spannungsziel; und beim Abrufen des zweiten Befehls, Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite in dem ersten Löschblock bei einem zweiten Spannungsziel, das für eine zweite Zeitdauer angelegt wird, wobei die zweite Zeitdauer größer als die erste Zeitdauer ist.
  16. Speichervorrichtung nach Anspruch 15, wobei die Daten, die dem ersten Befehl zugeordnet sind, in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem ersten Befehl zugeordnet sind, bei dem zweiten Spannungsziel geschrieben werden.
  17. Speichervorrichtung gemäß Anspruch 15, wobei die Steuerung weiterhin eingerichtet ist zum: Schreiben eines ersten Beendigungseintrags, der dem ersten Befehl entspricht, nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, auf die erste Seite; Abrufen eines dritten Befehls zum Schreiben von Daten auf eine dritte Seite in dem ersten Löschblock nach dem Schreiben des ersten Beendigungeintrags, der dem ersten Schreibbefehl entspricht; und teilweisen Schreiben der Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock bei dem ersten Spannungsziel.
  18. Speichervorrichtung gemäß Anspruch 17, wobei die Steuerung weiterhin eingerichtet ist zum: beim Abrufen des dritten Befehls, Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, auf die zweite Seite in dem ersten Löschblock bei dem zweiten Spannungsziel; und Signalisieren einer Beendigung des zweiten Befehls.
  19. Speichervorrichtung nach Anspruch 18, wobei die Daten, die dem zweiten Befehl zugeordnet sind, in einer Hostvorrichtung gespeichert werden, bis die Daten, die dem zweiten Befehl zugeordnet sind, bei dem zweiten Spannungsziel geschrieben werden.
  20. Speichervorrichtung gemäß Anspruch 18, wobei die Steuerung weiterhin eingerichtet ist zum: Abrufen eines vierten Befehls zum Schreiben von Daten auf eine vierte Seite in dem ersten Löschblock nach dem Schreiben des zweiten Beendigungseintrags, der dem zweiten Schreibbefehl entspricht; teilweisen Schreiben der Daten, die dem vierten Befehl zugeordnet sind, auf die vierte Seite in dem ersten Löschblock bei dem ersten Spannungsziel; beim Abrufen des vierten Befehls, Schreiben der Daten, die dem dritten Befehl zugeordnet sind, auf die dritte Seite in dem ersten Löschblock bei dem zweiten Spannungsziel; und Signalisieren einer Beendigung des zweiten Befehls.
DE112019005511.9T 2019-06-28 2019-12-17 Halten von schreibbefehlen in gezonten namensräumen Pending DE112019005511T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962868792P 2019-06-28 2019-06-28
US62/868,792 2019-06-28
US16/696,830 2019-11-26
US16/696,830 US20200409601A1 (en) 2019-06-28 2019-11-26 Hold of Write Commands in Zoned Namespaces
PCT/US2019/066895 WO2020263322A1 (en) 2019-06-28 2019-12-17 Hold of write commands in zoned namespaces

Publications (1)

Publication Number Publication Date
DE112019005511T5 true DE112019005511T5 (de) 2021-09-16

Family

ID=74042852

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005511.9T Pending DE112019005511T5 (de) 2019-06-28 2019-12-17 Halten von schreibbefehlen in gezonten namensräumen

Country Status (5)

Country Link
US (1) US20200409601A1 (de)
KR (1) KR20210096133A (de)
CN (1) CN113168374A (de)
DE (1) DE112019005511T5 (de)
WO (1) WO2020263322A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200082B2 (en) 2019-10-31 2021-12-14 EMC IP Holding Company LLC Data storage system employing dummy namespaces for discovery of NVMe namespace groups as protocol endpoints
US11435914B2 (en) * 2020-03-30 2022-09-06 Western Digital Technologies, Inc. Dynamic ZNS open zone active limit
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
TWI775268B (zh) 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11340987B1 (en) * 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11940911B2 (en) 2021-12-17 2024-03-26 Netapp, Inc. Persistent key-value store and journaling system
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7298648B2 (en) * 2004-11-19 2007-11-20 Samsung Electronics Co., Ltd. Page buffer and multi-state nonvolatile memory device including the same
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
JP2011022760A (ja) * 2009-07-15 2011-02-03 Hagiwara Sys-Com:Kk データ消去方法及び情報機器
JP5538970B2 (ja) * 2010-03-25 2014-07-02 キヤノン株式会社 情報処理装置、データ処理方法、プログラム
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
CN104298465B (zh) * 2013-07-17 2017-06-20 光宝电子(广州)有限公司 固态储存装置中的区块分组方法
CN103678150B (zh) * 2013-12-23 2017-06-09 华为技术有限公司 固态硬盘使用方法及装置
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
CN104461391B (zh) * 2014-12-05 2019-08-02 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及***
US9575669B2 (en) * 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
KR102372828B1 (ko) * 2015-12-30 2022-03-14 에스케이하이닉스 주식회사 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US10025522B2 (en) * 2016-04-15 2018-07-17 Sandisk Technologies Llc Memory interface command queue throttling
US9927981B2 (en) * 2016-08-29 2018-03-27 Seagate Technology Llc Hybrid data storage device with partitioned local memory
US10534709B2 (en) * 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory
US10354737B2 (en) * 2017-06-22 2019-07-16 Western Digital Technologies, Inc. Non-volatile memory sub-block erasure disturb management scheme
US10109361B1 (en) * 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
US10789011B2 (en) * 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer

Also Published As

Publication number Publication date
WO2020263322A1 (en) 2020-12-30
KR20210096133A (ko) 2021-08-04
CN113168374A (zh) 2021-07-23
US20200409601A1 (en) 2020-12-31

Similar Documents

Publication Publication Date Title
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand

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, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE