DE112020000139T5 - Nicht sequentiell in zonen aufgeteilte namensräume - Google Patents

Nicht sequentiell in zonen aufgeteilte namensräume Download PDF

Info

Publication number
DE112020000139T5
DE112020000139T5 DE112020000139.3T DE112020000139T DE112020000139T5 DE 112020000139 T5 DE112020000139 T5 DE 112020000139T5 DE 112020000139 T DE112020000139 T DE 112020000139T DE 112020000139 T5 DE112020000139 T5 DE 112020000139T5
Authority
DE
Germany
Prior art keywords
zone
logical blocks
command
data associated
logical
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
DE112020000139.3T
Other languages
English (en)
Inventor
Alan D. Bennett
Matias BJORLING
Daniel L. Helmick
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
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 DE112020000139T5 publication Critical patent/DE112020000139T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ist konfiguriert, um einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke einer ersten Zone abzurufen und einen Speicherzugriff (DMA) zum Lesen und Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in die ersten logischen Blöcke zu leiten. Die ersten logischen Blöcke liegen zwischen einem Zonenstartpunkt der ersten Zone und einer Zonenkapazität der ersten Zone. Die Steuerung ist konfiguriert, einen zweiten Befehl zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke der ersten Zone abzurufen und die Daten, die dem zweiten Befehl zugeordnet sind, DMA-zu lesen und in die zweiten logischen Blöcke zu schreiben. Die zweiten logischen Blöcke liegen zwischen dem Zonenanfang und der Zonenkapazität der ersten Zone und die ersten logischen Blöcke sind nicht sequentiell zu den zweiten logischen Blöcken.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der US-Anmeldung Nr. 16/703,643 , eingereicht am 4. Dezember 2019, welche die Priorität und den Nutzen der vorläufigen US-Patentanmeldung Seriennummer 62/899,717 , eingereicht am 12. September 2019, beansprucht, die beide durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen sind.
  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Speichervorrichtungen, wie zum Beispiel Solid-State-Laufwerke (SSDs).
  • Beschreibung des Stands der Technik
  • Speichervorrichtungen, wie z. B. 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 auf eine Speichervorrichtung. Die Menge der Speichervorrichtung wird als Namensraum bezeichnet, und die Steuerung ist konfiguriert, um Daten aus dem einen oder den mehreren Namensräumen der Speichervorrichtung zu lesen oder Daten in diese zu schreiben. Jeder Namensraum umfasst eine Vielzahl von logischen Blockadressen (LBAs) oder Sektoren. Die Steuerung kann jederzeit auf eine beliebige LBA innerhalb eines beliebigen Namensraums zugreifen.
  • Wenn jedoch ein Abschnitt aufeinanderfolgender LBAs (z.B. LBAs 1-8) innerhalb eines Namensraums bereits Daten speichert und ein Nach-Schreiben in ausgewählte Daten einer LBA (z.B. LBA 4) innerhalb des Abschnitts empfangen wird, muss die Steuerung alle Daten innerhalb des Abschnitts auslesen, die ausgewählten Daten modifizieren und die Daten, die jeder LBA des Abschnitts zugeordnet sind, an einer neuen Stelle erneut schreiben. Ein solcher Lese-Modifizierungs-Schreib-Prozess kann die Leistung sowohl der Speichervorrichtung als auch des Hosts verringern, sowie die Lebensdauer der Speichervorrichtung verringern und den Host-Overhead erhöhen.
  • Der Erfindung liegt daher die Aufgabe zugrunde, ein neues Verfahren zum Betreiben einer Speichervorrichtung anzugeben.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ist konfiguriert, um einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke einer ersten Zone abzurufen und einen Speicherzugriff (DMA) zum Lesen und Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in die ersten logischen Blöcke zu leiten. Die ersten logischen Blöcke liegen zwischen einem Zonenstartpunkt der ersten Zone und einer Zonenkapazität der ersten Zone. Die Steuerung ist konfiguriert, einen zweiten Befehl zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke der ersten Zone abzurufen und die Daten, die dem zweiten Befehl zugeordnet sind, DMA-zu lesen und in die zweiten logischen Blöcke zu schreiben. Die zweiten logischen Blöcke liegen zwischen dem Zonenanfang und der Zonenkapazität der ersten Zone und die ersten logischen Blöcke sind nicht sequentiell zu den zweiten logischen Blöcken.
  • In einer Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in eine erste Zone und dem ersten Befehl zugeordnete DMA-Lesedaten abruft, einen oder mehrere erste logische Blöcke der ersten Zone identifiziert, in welche die dem ersten Befehl zugeordneten Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, einen zweiten Befehl abruft, um Daten in die erste Zone zu schreiben, und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, und einen oder mehrere zweite logische Blöcke der ersten Zone zu identifizieren, um die Daten, die dem zweiten Befehl zugeordnet sind, in diese zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
  • In einer anderen Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl abruft, um Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone zu schreiben, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an eine erste Stelle in der Medieneinheit schreibt, einen zweiten Befehl abruft, um Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken sind, und dem zweiten Befehl zugeordnete Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und an einen zweiten Ort in der Medieneinheit zu schreiben, wobei der zweite Ort sequentiell zu dem ersten Ort angeordnet ist.
  • In noch einer anderen Ausführungsform umfasst ein Speichersystem eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle und ein Speichersystem umfasst. Das Speichersystem umfasst eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle und eine mit der Medieneinheit gekoppelte Steuerung speichert. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, abruft, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, die dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone schreibt, die erste und die zweite Verfolgungstabelle aktualisiert, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind, einen zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und DMA-Lesen von Daten abruft, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei mindestens einer des einen oder mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken ist, Daten schreiben, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und die erste und die zweite Verfolgungstabelle zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  • 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 in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht.
    • 2 veranschaulicht ein Speichersystem umfassend eine Speichervorrichtung, die mit einer Hostvorrichtung gemäß einer anderen Ausführungsform gekoppelt ist.
    • 3 ist ein Blockdiagramm, das ein Verfahren zum Betrieb einer Speichervorrichtung zur Ausführung eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht.
    • 4A veranschaulicht in einer Speichervorrichtung verwendete, in Zonen aufgeteilte Namensräume gemäß einer Ausführungsform.
    • 4B veranschaulicht ein Zustandsdiagramm für die in Zonen aufgeteilten Namensräume der Speichervorrichtung aus 4A gemäß einer Ausführungsform.
    • 5A veranschaulicht einen in Zonen unterteilten Namensraum, bei dem die sequenzielle Prüfung ausgeschaltet ist, gemäß einer Ausführungsform.
    • 5B veranschaulicht eine entsprechende Tabelle von Schreibbefehlen, die für die in Zonen unterteilten Namensräume aus 5A empfangen werden, gemäß einer Ausführungsform.
    • 6A veranschaulicht einen in Zonen unterteilten Namensraum, in dem die sequenzielle Prüfung eingeschaltet ist, gemäß einer anderen Ausführungsform.
    • 6B veranschaulicht eine entsprechende Tabelle von Schreibbefehlen, die für die in Zonen unterteilten Namensräume aus 6A empfangen wurden, gemäß einer Ausführungsform.
    • Die 7A-7F veranschaulichen das Schreiben in eine Zone von einem ZNS nicht sequenziell und ohne Empfang von Zonenanhangbefehlen gemäß einer Ausführungsform.
    • 8 veranschaulicht eine entsprechende Tabelle, die Schreibbefehle nachverfolgt, die von der Zone der 7A-7F abgerufen werden.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. 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 beiliegenden 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 beiliegenden Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ist konfiguriert, um einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke einer ersten Zone abzurufen und einen Speicherzugriff (DMA) zum Lesen und Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in die ersten logischen Blöcke zu leiten. Die ersten logischen Blöcke liegen zwischen einem Zonenstartpunkt der ersten Zone und einer Zonenkapazität der ersten Zone. Die Steuerung ist konfiguriert, einen zweiten Befehl zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke der ersten Zone abzurufen und die Daten, die dem zweiten Befehl zugeordnet sind, DMA-zu lesen und in die zweiten logischen Blöcke zu schreiben. Die zweiten logischen Blöcke liegen zwischen dem Zonenanfang und der Zonenkapazität der ersten Zone und die ersten logischen Blöcke sind nicht sequentiell zu den zweiten logischen Blöcken.
  • 1 ist ein schematisches Blockdiagramm zur Veranschaulichung eines Speichersystems 100, in dem die Speichervorrichtung 106 als 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 Speichervorrichtungen 110 benutzen, 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 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 sogenannten „Smartphones“, sogenannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienplayern, Videospielkonsolen, Video-Streaming-Geräten und dergleichen.
  • Die Speichervorrichtung 106 schließt eine Steuerung 108, einen nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, einen flüchtigen Speicher 112 und eine Schnittstelle 114 ein. Die Steuerung 108 umfasst eine Zonenverwaltung 120. In einigen Beispielen kann die Speichervorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 dargestellt sind. Beispielsweise kann die Speichervorrichtung 106 eine Leiterplatte (PCB) einschließen, an der Komponenten der Speichervorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen einschließt, 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 (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe 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 einen Datenbus zum Datenaustausch mit der Hostvorrichtung 104 und/oder einen 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), Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), CoherentAccelerator(CXL) 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. Wie beispielsweise in 1 veranschaulicht, kann die Stromversorgung 111 über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
  • Die Speichervorrichtung 106 schließt NVM 110 ein, der eine Vielzahl von Speichervorrichtungen einschließen kann. NVM 110 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Beispielsweise kann eine Speichervorrichtung des NVM 110 Daten und eine Nachricht von der Steuerung 108 empfangen, mit der die Speichervorrichtung zum Speichern der Daten angewiesen wird. In ähnlicher Weise kann die Speichervorrichtung des NVM 110 eine Nachricht von der Steuerung 108 empfangen, mit der die Speichervorrichtung zum Abrufen der Daten angewiesen wird. In einigen Beispielen kann jede der Speichervorrichtungen als eine Matrize bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Matrizen (d. h. eine Vielzahl von Speichervorrichtungen) einschließen. In einigen Beispielen kann jede der Speichervorrichtungen zum Speichern relativ großer Datenmengen konfiguriert 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 Speichervorrichtung von NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie z. B. Flash-Speichervorrichtungen, Phasenwechselspeichervorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtung), ferroelektrischer Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen, Festplattenlaufwerke (HDD) und jede andere Art von nichtflüchtigen Speichervorrichtungen.
  • Der NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen umfassen. 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 werden, die in eine Vielzahl von Seiten unterteilt werden können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NAND-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 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 mehrere 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 Energiespeicherkomponenten 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-Stromversorgung fungieren. Einige Beispiele für die eine oder die mehreren Energiespeicherkomponenten 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 Energiespeicherkomponenten gespeicherte Energiemenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Energiespeicherkomponenten sein. Das heißt, wenn die von einer oder mehreren Energiespeicherkomponenten gespeicherte Energiemenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Energiespeicherkomponenten.
  • 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 NVM 110 geschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Speicher 112 den von der Stromversorgung 111 empfangenen Strom verbrauchen. Beispiele für einen 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. Die Steuerung 108 kann eine Zonenverwaltung 120 umfassen, um das Lesen und Schreiben in Zonen zu verwalten, sowie das Verschieben gültiger Daten in und aus Zonen zu Speicherbereinigungszwecken. In einigen Ausführungsformen kann die Steuerung 108, wenn die Speichervorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, einen Datenspeicherbefehl initiieren, um Daten in den NVM 110 zu speichern und den Fortschritt des Datenspeicherbefehls zu überwachen. Die Steuerung 108 kann mindestens eine Betriebscharakteristik des Speichersystems 100 bestimmen und die mindestens eine Betriebscharakteristik in den NVM 110 speichern.
  • 2 veranschaulicht ein Speichersystem 200 umfassend 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 beispielsweise NAND-Zugriff, planen und ein Lesen auf eine Speichervorrichtung durchführen, bevor ein zuvor empfangener Befehl ein Schreiben auf dieselbe Speichervorrichtung erfordert. Der Befehlsprozessor 220 ist mit einer oder mehreren Speichervorrichtungen 228 und einem Befehlsabruf 222 gekoppelt. Die eine oder 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 besteht aus einer oder mehreren Host-Softwareanwendungen 232, 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 Latenz der QoS für jeden Benutzer des Systems 200 abzuleiten. Die Hostvorrichtung 204 weist ferner ein Betriebssystem (OS) oder eine Softwareanwendung 240 ohne zugehörige QoS aus. 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 Verbindung 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. Warteschlangentiefe (QD) ist die maximale Anzahl von Befehlen, die an die Speichervorrichtung 206 angehängt werden, und Daten-QD ist die Datenmenge, die den an eine QD angehängten Befehlen zugeordnet ist. 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 Betrieb einer Speichervorrichtung zum Ausführen eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht. 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.
  • 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 umfassen. Die Hostvorrichtung kann einen oder mehrere Befehle in einer beliebigen Reihenfolge (d. h. einer Übermittlungsreihenfolge) in die Übermittlungswarteschlange schreiben, unabhängig von der sequenziellen Schreibreihenfolge des einen oder der mehreren Befehle (d. h. einer sequenziellen Verarbeitungsreihenfolge).
  • 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 oder DMA-Iiest 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. Die Steuerung kann einen oder mehrere Befehle in der Übertragungsreihenfolge oder in der sequentiellen Reihenfolge verarbeiten. Die Verarbeitung eines Schreibbefehls kann die Identifizierung einer Zone zum Schreiben der mit dem Befehl verbundenen Daten, das Schreiben der Daten in eine oder mehrere LBA der Zone und das Vorrücken eines Schreibzeigers der Zone zur Identifizierung der nächsten verfügbaren LBA innerhalb der Zone aufweisen.
  • In Operation 358 schreibt die Steuerung, sobald der Befehl vollständig verarbeitet wurde, einen dem ausgeführten Befehl entsprechenden Abschlusseintrag in eine Abschlusswarteschlange der Hostvorrichtung und bewegt oder aktualisiert den CQ-Kopfzeiger, um auf den neu geschriebenen Abschlusseintrag zu zeigen.
  • 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 mit dem Befehl verbundenen Daten in der Speichervorrichtung verfügbar sind. Das Unterbrechungssignal benachrichtigt weiterhin die Hostvorrichtung, dass die Abschlusswarteschlange bereit ist, gelesen oder verarbeitet zu werden.
  • In Operation 362 verarbeitet die Hostvorrichtung den Abschlusseintrag. 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 Abschlusseintrag freizugeben.
  • 4A veranschaulicht gemäß einer Ausführungsform eine Ansicht der in Zonen aufgeteilten Namensräume (Zoned Namespaces, ZNS) 402, die in einer Speichervorrichtung 400 verwendet werden. Die Speichervorrichtung 400 kann die Ansicht der ZNS 402 einer Hostvorrichtung 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 in Zonen aufgeteilten Namensräumen 402 umfassen. 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, so dass die Kapazität in eine Vielzahl von Zonen 406a-406n (zusammenfassend als Zonen 406 bezeichnet) unterteilt wird. Jede der Zonen 406 weist eine Vielzahl von physikalischen 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 z. B. von einer (nicht dargestellten) Hostvorrichtung oder der Übertragungswarteschlange einer Hostvorrichtung, kann die Steuerung 408 Daten von der Vielzahl von Logikblöcken lesen und Daten in diese schreiben, die mit der Vielzahl von Löschblöcken der ZNS 402 verbunden sind. 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. Wie in der folgenden Beschreibung beschrieben, entsprechen die NAND-Stellen somit einer Granularität von 512 Byte. Als solche 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 einem Zeitpunkt in eine Zone 406 geschrieben werden, bis eine Zone 406 voll ist, oder in mehrere Zonen 406, so dass mehrere Zonen 406 teilweise gefüllt sein können. In ähnlicher Weise können beim Schreiben von Daten in eine bestimmte Zone 406 Daten in die Vielzahl der Löschblöcke blockweise gleichzeitig, in sequentieller Reihenfolge der NAND-Stellen 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 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 jedes Löschblocks, bevor in die zweite NAND-Stelle jedes Löschblocks geschrieben wird).
  • Wenn eine Steuerung 408 die Löschblöcke auswählt, die Daten für jede Zone speichern werden, ist die Steuerung 408 in der Lage, die Löschblöcke entweder zur Zonenöffnungszeit auszuwählen, oder die Steuerung 408 kann die Löschblöcke auswählen, wenn die Notwendigkeit besteht, die erste NAND-Stelle oder Wortleitung dieses bestimmten Löschblocks zu füllen. Dies kann differenzierter sein, wenn das oben beschriebene Verfahren zum vollständigen Füllen eines Löschblocks vor dem Starten des nächsten Löschblocks verwendet wird. Die Steuerung 408 kann die Zeitdifferenz verwenden, um einen optimaleren Löschblock auf einer Just-in-Time-Basis auszuwählen. Die Entscheidung, welcher Löschblock für jede Zone und ihre zusammenhängenden LBAs zugewiesen und zugeteilt wird, kann für null oder mehr gleichzeitige Zonen zu jeder Zeit innerhalb der Steuerung 408 erfolgen.
  • Jede der Zonen 406 ist einer Zonenstart-Logikblockadresse (ZSLBA) oder einem Zonenstartssektor 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 n-te 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, um auf den nächsten verfügbaren Block in der Zone 406 zu zeigen oder diesen anzuzeigen, in den Daten geschrieben werden sollen, um den nächsten Schreibstartpunkt zu verfolgen (d. h. der Abschlusspunkt 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 406 durch ihre ZSLBA identifiziert, und der Schreibzeiger 410 bestimmt, wo der Schreibvorgang der Daten innerhalb der identifizierten Zone 406 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 z. B. 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 schaltet in eine offene und aktive Zone um, 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 bewegen, die beide aktive Zustände sind. Wenn eine Zone aktiv ist, umfasst die Zone offene Blöcke, die beschrieben werden können, und dem Host kann eine Beschreibung der empfohlenen Zeit im aktiven Zustand durch die ZM oder die Steuerung 408 bereitgestellt werden. Die Steuerung kann die ZM aufweisen.
  • Der Begriff „geschrieben“ umfasst das Programmieren von Benutzerdaten auf 0 oder mehr NAND-Stellen in einem Löschblock und/oder teilweise gefüllte NAND-Stellen in einem Löschblock, wenn die Benutzerdaten nicht alle verfügbaren NAND-Stellen gefüllt haben. Der Begriff „geschrieben“ kann ferner das Verschieben einer Zone auf voll aufgrund interner Laufwerksbehandlungsanforderungen (Bedenken hinsichtlich der Datenerhaltung bei offenen Blöcken, da sich die fehlerhaften Bits bei offenen Löschblöcken schneller ansammeln), das Schließen oder Füllen einer Zone durch die Speichervorrichtung 400 aufgrund von Ressourcenbeschränkungen, wie zu viele offene Zonen, um u. a. den Defektzustand zu verfolgen oder zu entdecken, oder das Schließen einer Zone durch eine Hostvorrichtung aufgrund von Bedenken, wie u. a. das Fehlen von Daten zum Senden an das Laufwerk, das Herunterfahren des Computers, die Fehlerbehandlung auf dem Host, begrenzte Host-Ressourcen für die Verfolgung, 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 weist gegenwärtig zugewiesene Ressourcen auf. Die Daten, die von der Hostvorrichtung mit einem Schreibbefehl oder Zonenanhangbefehl empfangen werden, können auf einen offenen Löschblock programmiert werden, der gegenwärtig nicht mit früheren Daten gefüllt ist. 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 Bedürfnisse 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 Schreiben 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, so dass die Zone wieder auf eine leere Zone umschaltet. Sobald eine aktive Zone voll ist, schaltet 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, so dass die Zone wieder auf eine leere Zone umschaltet. Wenn eine volle Zone zurückgesetzt wird, kann es vorkommen, dass die Zone nicht sofort von Daten gelöscht wird, obwohl die Zone als leere Zone markiert werden kann, die zum Beschreiben bereit ist. Die Rücksetzzone muss jedoch vor dem Wechsel zu einer offenen und aktiven 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 alle in der Zone gespeicherten Daten löscht oder eine 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 physikalische Sicherung der Zone beim Löschen der Löschblöcke entscheiden und erstellen. Sobald somit die neue Zone geöffnet ist und Löschblöcke zur Bildung der Zone ausgewählt werden, werden die Löschblöcke gelöscht worden sein. Darüber hinaus kann 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 optional abgeschaltet werden, so dass ein Befehl in jedwede Start-LBA geschrieben werden kann, die für den Befehl angegeben wird.
  • Zurück zu 4A: Wenn die Steuerung 408 einen Schreibbefehl vom Host 204 empfängt oder der direkte Speicherzugriff (DMA) die Schreibdaten liest, kann die Steuerung 408 einen leeren Löschblock auswählen, um die mit dem Befehl verbundenen Daten zu schreiben, und die leere Zone 406 wechselt in eine aktive und offene Zone 406. 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 dazu konfiguriert, neue Befehle aus einer von einer Hostvorrichtung besetzten Übertragungswarteschlange DMA-zu lesen oder einzuziehen.
  • In einer leeren Zone 406, die gerade in eine aktive Zone 406 gewechselt wurde, werden die Daten der Zone 406 und dem zugehörigen Satz von sequentiellen LBAs der Zone 406 zugewiesen, beginnend bei der ZSLBA, da der Schreibzeiger 410 den zur ZSLBA gehörenden logischen Block als ersten verfügbaren logischen Block angibt. Die Daten können in einen oder mehrere Löschblöcke oder NAND-Stellen geschrieben werden, die für die physikalische Stelle der Zone 406 zugewiesen wurden. Nachdem die mit dem Schreibbefehl verbundenen Daten in die Zone 406 geschrieben wurden, wird der Schreibzeiger 410 aktualisiert, um auf die nächste für einen Host-Schreibvorgang verfügbare LBA zu zeigen (d. h. auf den Abschlusspunkt des ersten Schreibvorgangs). Die Schreibdaten von einem solchen Host-Schreibbefehl werden sequenziell in die nächste verfügbare NAND-Stelle in dem Löschblock programmiert, der für die physische Unterstützung der Zone ausgewählt wurde.
  • 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 optional mehrere Schreibbefehle an einem anderen Speicherort, wie beispielsweise 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. Für die Zwecke dieser Beschreibung sind die Schreibdatengrößen gleich einer NAND-Stelle von 512 Bytes; die Größe einer NAND-Stelle soll jedoch nicht einschränkend sein.
  • Beispielsweise kann die Steuerung 408 einen ersten Schreibbefehl in eine dritte Zone 406c oder einen ersten Zonenanhangbefehl empfangen. 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 oder einen zweiten Zonenanhangbefehl empfängt, werden die mit dem zweiten Schreibbefehl verbundenen 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 werden, rückt der Schreibzeiger 410 erneut vor oder wird aktualisiert, um auf die nächste verfügbare LBA zu zeigen, die für einen Host-Schreibvorgang zur Verfügung steht. Durch das Zurücksetzen der Zone 406c wird der Schreibzeiger 410 wieder auf ZcSLBA zurückbewegt (d. h. WP=0), und die Zone 406c wechselt in eine leere Zone.
  • Eine strenge Schreibreihenfolge kann jedoch bewirken, dass die Host-Schreibvorgänge auf einzelne E/A-Schreibvorgänge pro Zone 406 degeneriert werden, was die Host-Leistung begrenzt und den Host-Overhead erhöht. Insofern ist die Speichervorrichtung 400 konfiguriert, um einen herstellungs- oder anbieterspezifischen Befehl zum Ausschalten der sequenziellen Prüfung zu empfangen.
  • 5A veranschaulicht einen ZNS 500, bei dem die sequenzielle Prüfung ausgeschaltet ist, während Befehle zum Anhängen der Zone empfangen werden, gemäß einer Ausführungsform. 5B veranschaulicht eine entsprechende Tabelle 550 von Schreibbefehlen, die für den ZNS 500 abgerufen wurden. Die Tabelle 550 kann in der Steuerung oder in einer Speichervorrichtung der Speichervorrichtung gespeichert sein. Die ZNS 500 können die ZNS 402 aus 4 sein. Während der ZNS 500 aus 5A als eine Zone 506 aufweisend gezeigt ist, können die ZNS 500 eine Vielzahl von Zonen 506 umfassen. Darüber hinaus kann jede Zone 506 der Vielzahl von Zonen des ZNS 500 ihre eigene individuelle Tabelle 550 aufweisen, oder eine Tabelle 550 kann alle von jeder Zone 506 der Vielzahl von Zonen abgerufenen Schreibbefehle verfolgen. 6A veranschaulicht einen ZNS 600, bei dem die sequenzielle Prüfung eingeschaltet ist, während Befehle zum Anhängen der Zone empfangen werden, gemäß einer anderen Ausführungsform. 6B veranschaulicht eine entsprechende Tabelle 650 von Schreibbefehlen, die für den ZNS 600 abgerufen wurden. Die ZNS 600 können die ZNS 402 aus 4 sein.
  • In 5A werden ein erster Schreibbefehl (Schreiben0) 520, ein zweiter Schreibbefehl 522 (Schreiben1) und ein dritter Schreibbefehl 524 (Schreiben2) empfangen oder DMA-gelesen, und eine Zone 506 wird durch ihre ZSLBA identifiziert, um die Daten zu speichern, die jedem der ersten, zweiten und dritten Schreibbefehle 520, 522, 524 zugeordnet sind. Die Schreibbefehle 520, 522, 524 können jeweils ein Befehl zum Schreiben neuer Daten oder ein Befehl zum Verschieben gültiger Daten von einer Zone in eine andere Zone zum Zweck der Speicherbereinigung sein. Eine Steuerung, wie beispielsweise die Steuerung 408 aus 4A, ist konfiguriert, um neue Befehle von einer Hostvorrichtung abzurufen und die Daten, die den neuen Befehlen zugeordnet sind, DMA-zu lesen. Sequentiell soll zuerst der erste Schreibbefehl 520, als zweites der zweite Schreibbefehl 522 und als drittes der dritte Schreibbefehl 524 geschrieben werden. Die Zone 506 umfasst eine Vielzahl von logischen Blöcken 5120-5127 (kollektiv als logische Blöcke 512 bezeichnet). Jeder der logischen Blöcke entspricht einer LBA, die in der Tabelle 550 gezeigt ist. Während acht logische Blöcke 512 angezeigt werden, kann die Zone 506 eine beliebige Anzahl von logischen Blöcken 512 umfassen.
  • 5B veranschaulicht eine entsprechende Tabelle 550, welche die von der Zone 506 abgerufenen Schreibbefehle verfolgt. Die Tabelle 550 umfasst eine erste Spalte 552, die eine Schreib-ID der Befehle (d. h. die sequentielle Reihenfolge der Befehle) identifiziert, eine zweite Spalte 554, welche die Start-LBA identifiziert, eine dritte Spalte 556, welche die Anzahl logischer Blöcke identifiziert, die benötigt werden, um die Daten, die einem Befehl und der erwarteten Start-LBA zugeordnet sind, zu schreiben, eine vierte Spalte 558, welche die Anzahl logischer Blöcke identifiziert, die der Schreibzeiger 510 vorgerückt ist, nachdem ein Schreibvorgang in der Abschlusswarteschlange protokolliert worden ist, eine fünfte Spalte 560, die den LBA-Offset der Zone von der ZSLBA identifiziert, und eine sechste Spalte 562, welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die zum Speichern der Daten verwendet wird. Während drei Schreibzeiger 5100 , 5101 , 5102 gezeigt sind, umfasst die Zone 506 nur einen Schreibzeiger 510, und die drei Schreibzeiger 5100 , 5101 , 5102 zeigen die Position des einzelnen Schreibzeigers 510 an, wenn Daten zu verschiedenen Zeiten in die Zone 506 geschrieben werden, wie nachstehend beschrieben.
  • Jeder Schreibbefehl 520, 522, 524 wird in der Tabelle 550 in der Übermittlungsreihenfolge und nicht in der sequentiellen Reihenfolge angezeigt. In der Tabelle 550 wird der zweite Schreibbefehl 522, identifiziert durch Schreib-ID 1, vor dem ersten Schreibbefehl 520, identifiziert durch Schreib-ID 0, empfangen. Die zweite Spalte 554 identifiziert die Start-LBA für den zweiten Schreibbefehl 522 als ZSLBA und benötigt zwei logische Blöcke (2 LBA), um die Daten zu speichern, wie in der dritten Spalte 556 gekennzeichnet. Da der erste Schreibbefehl 520 der erste sequentielle Schreibvorgang in die Zone 506 sein soll und nur einen logischen Block (1 LBA) benötigt, identifiziert die dritte Spalte 556 ferner die erwartete Start-LBA für den zweiten Befehl 522 als den zweiten logischen Block 5121 der Zone 506.
  • Da jedoch der zweite Befehl 522 vor dem ersten Befehl 520 übermittelt wurde, beginnt der zweite Befehl 522 mit dem ersten verfügbaren logischen Block 512o der Zone 506, die durch den Schreibzeiger 5100 angezeigt wird. Da die Tabelle 550 lediglich die Start-LBA als die ZSLBA angibt, werden die dem zweiten Befehl 522 zugeordneten Daten in den durch den Schreibzeiger 5100 angegebenen ersten verfügbaren logischen Block 512o geschrieben. Beim Schreiben der dem zweiten Befehl 522 zugeordneten Daten in den ersten logischen Block 5120 und den zweiten logischen Block 5121 der Zone 506 wird der Schreibzeiger 510 um zwei logische Blöcke vorgerückt und die vierte Spalte 558 entsprechend aktualisiert. Wie in der sechsten Spalte 562 der Tabelle 550 gezeigt, werden die Daten, die dem zweiten Befehl 522 zugeordnet sind, in einer ersten und einer zweiten NAND-Stelle NL0, NL1 gespeichert, da der erste logische Block 5120 und der zweite logische Block 5121 der ersten NAND-Stelle NL0 bzw. der zweiten NAND-Stelle NL1 entsprechen.
  • Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone 506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers 510, die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte 560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die dem zweiten Befehl 522 zugeordneten Daten in die Zone 506 geschrieben wurden, die LBAs von der ZSLBA um zwei versetzt sind (ZSLBA + 2). Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und ein Aktualisieren der fünften Spalte 560 informiert die Hostvorrichtung, wo die dem zweiten Befehl zugehörigen Daten gespeichert sind.
  • Der erste Schreibbefehl 520 wurde nach dem zweiten Schreibbefehl 522 übermittelt. Insofern identifiziert die zweite Spalte 554 für den ersten Befehl (Schreib-ID 0) die Start-LBA für den ersten Schreibbefehl 520 als die ZSLBA und erfordert einen logischen Block (1 LBA), wie in der dritten Spalte 556 identifiziert. Während die Daten, die dem ersten Schreibbefehl 520 zugeordnet sind, in den ersten logischen Block 5120 geschrieben werden sollen, wie in der dritten Spalte 556 angegeben, wurden die Daten, die dem zweiten Schreibbefehl 522 zugeordnet sind, bereits in den ersten logischen Block 5120 geschrieben, wie in der fünften Spalte 560 für den zweiten Befehl angegeben (Schreib-ID 1).
  • Da die Steuerung den LBA-Offset in der fünften Spalte 560 verfolgt und den Schreibzeiger 510 entsprechend vorrückt, bestätigt die Steuerung, dass der erste logische Block 512o verwendet wird, und schreibt die dem ersten Befehl 520 zugeordneten Daten in den nächsten verfügbaren logischen Block 5122 , wie durch den Schreibzeiger 5101 angegeben. Beim Schreiben der dem ersten Befehl 520 zugeordneten Daten in den dritten logischen Block 5122 der Zone 506 wird der Schreibzeiger 510 um einen logischen Block vorgerückt und die vierte Spalte 558 wird entsprechend aktualisiert. Wie in der sechsten Spalte 562 der Tabelle 550 gezeigt, werden die Daten, die dem ersten Befehl 520 zugeordnet sind, in einer dritten NAND-Stelle NL2 gespeichert, da der dritte logische Block 5122 der dritten NAND-Stelle NL2 entspricht.
  • Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone 506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers 510, die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte 560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die Daten, die dem ersten und dem zweiten Befehl 520, 522 zugeordnet sind, in die Zone 506 geschrieben wurden, die LBAs nun um drei von der ZSLBA versetzt sind (ZSLBA + 3). Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und Aktualisieren der fünften Spalte 560 informiert die Hostvorrichtung, wo die dem ersten Befehl zugeordneten Daten gespeichert sind.
  • Der dritte Befehl 524 wurde als drittes übermittelt. Für den dritten Befehl 524 (Schreib-ID 2) identifiziert die Tabelle 550 in der zweiten Spalte 554 die Start-LBA als ZSLBA und identifiziert in der dritten Spalte 556, dass vier logische Blöcke (4 LBA) benötigt werden. Die Steuerung schreibt die dem dritten Befehl 524 zugeordneten Daten in den nächsten verfügbaren logischen Block 5123 , wie durch den Schreibzeiger 5101 angegeben. Beim Schreiben der dem dritten Befehl 524 zugeordneten Daten in den vierten logischen Block 5123 über den siebten logischen Block 5126 wird der Schreibzeiger 5102 um vier logische Blöcke vorgerückt und die vierte Spalte 558 entsprechend aktualisiert. Wie in der sechsten Spalte 562 der Tabelle 550 gezeigt, werden die Daten, die dem dritten Befehl 524 zugeordnet sind, in einer vierten bis siebten NAND-Stelle NL3-NL6 gespeichert, da der vierte bis siebte logische Block 5123-5126 der vierten bis siebten NAND-Stelle NL3-NL6 entspricht.
  • Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone 506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers 510, die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte 560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die Daten, die dem ersten, zweiten und dritten Befehl 520, 522, 524 zugeordnet sind, in die Zone 506 geschrieben wurden, die LBAs von der ZSLBA nun um sieben (ZSLBA + 7) versetzt sind. Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und ein Aktualisieren der fünften Spalte 560 informiert die Hostvorrichtung, wo die dem dritten Befehl zugehörigen Daten gespeichert sind.
  • Alternativ veranschaulichen die 6A-6B einen ZNS 600, bei dem die sequenzielle Prüfung eingeschaltet ist, und eine entsprechende Tabelle 650 von Schreibbefehlen, die für den ZNS 600 abgerufen wurden. Während der ZNS 600 aus 6A gezeigt ist, der eine Zone 606 umfasst, kann der ZNS 600 eine Vielzahl von Zonen 606 umfassen. Darüber hinaus kann jede Zone 606 der Vielzahl von Zonen des ZNS 600 ihre eigene individuelle Tabelle 650 umfassen, oder eine Tabelle 650 kann alle von jeder Zone 606 der Vielzahl von Zonen abgerufenen Schreibbefehle verfolgen.
  • In 6A werden ein erster Schreibbefehl (Schreiben0) 620, ein zweiter Schreibbefehl 622 (Schreiben1) und ein dritter Schreibbefehl 624 (Schreiben2) abgerufen oder DMA-gelesen, und eine Zone 606 wird durch ihre ZSLBA identifiziert, um die Daten zu speichern, die jedem der ersten, zweiten und dritten Schreibbefehle 620, 622, 624 zugeordnet sind. Eine Steuerung, wie beispielsweise die Steuerung 408 aus 4A, ist konfiguriert, um neue Befehle von einer Hostvorrichtung DMA-zu lesen. Sequentiell soll zuerst der erste Schreibbefehl 620, als zweites der zweite Schreibbefehl 622 und als drittes der dritte Schreibbefehl 624 geschrieben werden. Die Zone 606 umfasst eine Vielzahl von logischen Blöcken 6120-6127 (kollektiv als logische Blöcke 612 bezeichnet). Jeder der logischen Blöcke entspricht einer LBA, die in der Tabelle 650 gezeigt ist. Während acht logische Blöcke 612 angezeigt werden, kann die Zone 606 eine beliebige Anzahl von logischen Blöcken 612 umfassen.
  • 6B veranschaulicht eine entsprechende Tabelle 650, welche die in der Zone 606 empfangenen Schreibbefehle verfolgt. Die Tabelle 650 umfasst eine erste Spalte 652, die eine Schreib-ID der Befehle identifiziert, eine zweite Spalte 654, welche die Start-LBA identifiziert, eine dritte Spalte 656, welche die Anzahl von logischen Blöcken identifiziert, die benötigt werden, um die Daten zu schreiben, die einem Befehl und der Start-LBA zugeordnet sind, eine vierte Spalte 658, welche die Anzahl logischer Blöcke identifiziert, die der Schreibzeiger 610 vorgerückt ist, nachdem ein Schreibvorgang in der Abschlusswarteschlange protokolliert worden ist, und eine fünfte Spalte 662, welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die zum Speichern der Daten verwendet wird.
  • Jeder Schreibbefehl 620, 622, 624 wird in der Tabelle 650 in der Übermittlungsreihenfolge und nicht in der sequentiellen Reihenfolge angezeigt. In der Tabelle 650 wird der zweite Schreibbefehl 622, identifiziert durch Schreib-ID 1, vor dem ersten Schreibbefehl 620, identifiziert durch Schreib-ID 0, empfangen. Die zweite Spalte 654 identifiziert die Start-LBA für den zweiten Schreibbefehl 622 als den zweiten logischen Block nach der ZSLBA (ZSLBA + 1) (d.h. die zweite LBA 6121 ) und benötigt zwei logische Blöcke (2 LBA), um die Daten zu speichern, wie in der dritten Spalte 656 gekennzeichnet. Da der erste Schreibbefehl 620 der erste sequentielle Schreibvorgang in die Zone 606 sein soll und nur einen logischen Block (1 LBA) zum Speichern der Daten benötigt, identifiziert die dritte Spalte 656 ferner die Start-LBA für den zweiten Befehl 622 als die zweite LBA 6121 der Zone 606.
  • Da der zweite Befehl 622 vor dem ersten Befehl 620 übermittelt wurde, versucht die Steuerung, die dem zweiten Befehl 622 zugeordneten Daten vor den dem ersten Befehl 620 zugeordneten Daten zu schreiben. Der Schreibzeiger 610 zeigt jedoch den der ersten logischen Blockadresse zugeordneten ersten logischen Block 612o als den ersten verfügbaren logischen Block an, die Tabelle 650 zeigt jedoch widersprüchlich den zweiten logischen Block 6121 als den logischen Startblock für den zweiten Befehl 622 an. Da der Schreibzeiger 610 und die Tabelle 650 unterschiedliche Start-LBAs für den zweiten Befehl 622 angeben, können die dem zweiten Befehl 622 zugeordneten Daten nicht in die Zone 606 geschrieben werden.
  • Die 7A-7F veranschaulichen das Schreiben in eine Zone 706 eines ZNS 700 nicht sequenziell und ohne Empfang von Zonenanhangbefehlen gemäß einer Ausführungsform. Die ZNS 700 können mit dem Speichergerät 400 und NVM 404 aus 4 verwendet werden. Die ZNS 700 können die ZNS 402 aus 4 sein. Obwohl nur eine Zone 706 in dem ZNS 700 gezeigt ist, kann der ZNS 700 eine Vielzahl von Zonen umfassen, und die ähnliche außerhalb der Reihenfolge liegende Schreibaktivität, die nachstehend beschrieben wird, kann in einer oder mehreren der Vielzahl von Zonen auftreten. 8 veranschaulicht eine beispielhafte entsprechende Tabelle 800, die von der Zone 706 abgerufenen Schreibbefehle verfolgt. Jede Zone 706 der Vielzahl von Zonen der ZNS 700 kann ihre eigene individuelle Tabelle 800 aufweisen, oder eine Tabelle 800 kann alle Schreibbefehle verfolgen, die von jeder Zone 706 der Vielzahl von Zonen abgerufen werden. Die Tabelle 800 kann in der Steuerung, in einer Speichervorrichtung der Speichervorrichtung und/oder in der Hostvorrichtung gespeichert sein. In einer Ausführungsform speichern sowohl die Speichervorrichtung als auch die Hostvorrichtung einzeln die Tabelle 800.
  • Wie oben beschrieben, entsprechen die beispielhaften NAND-Stellen einer Granularität von 512 Bytes. So ergeben sich bei einer LBA-Größe von 512 Byte und einer Seitengröße von 16 kB für zwei Seiten eines MCL-NAND etwa 16 NAND-Speicherplätze pro Wortleitung. Die Größe der NAND-Stelle ist jedoch nicht als Einschränkung gedacht und wird lediglich als Beispiel verwendet. Außerdem können, während NAND als Beispiel verwendet wird, auch andere Speichertypen verwendet werden, und NAND soll nicht einschränkend sein.
  • 7A veranschaulicht, dass die Zone 706 leer ist und keine Daten speichert (d. h. es wurde noch kein Befehl abgerufen, Daten in die Zone 706 zu schreiben). Die Zone 706 kann sich im leeren oder aktiven Zustand befinden. Die Zone 706 umfasst eine Vielzahl von logischen Blöcken 7120-7127 (kollektiv als logische Blöcke 712 bezeichnet). Jeder der logischen Blöcke 712 entspricht einer LBA oder einem Sektor, die in einer entsprechenden Tabelle 800 aus 8 verfolgt werden. Während acht logische Blöcke 712 angezeigt werden, kann die Zone 706 eine beliebige Anzahl von logischen Blöcken 712 umfassen. Eine ZSLBA gibt den Anfang oder erste LBA der Zone 706 an, während eine ZSLBA + ZCAP das Ende oder volle Kapazität der Zone 706 (d.h. Zonenkapazität) angibt.
  • Eine Steuerung, wie beispielsweise die Steuerung 408 aus 4A, ist konfiguriert, um neue Befehle in einer Zone 706 von einer Hostvorrichtung abzurufen und die Daten, die den neuen Befehlen zugeordnet sind, DMA-zu lesen. Die Steuerung kann dann die dem Befehl zugeordneten Daten in einen oder mehrere logische Blöcke 712 der Zone 706 schreiben. Die Zone 706 verwendet keinen Schreibzeiger, da ein Schreibzeiger verwendet wird, um den nächsten sequentiell verfügbaren logischen Block 712 zu identifizieren. Darüber hinaus wird die sequenzielle Prüfung ausgeschaltet, wie in den obigen 5A-5B beschrieben. Die Steuerung kann jedoch immer noch ein optionales Sicherheitsmerkmal implementieren, um zu bestimmen, ob bereits während der aktuellen Dauer des zonenaktiven Zustands in eine bestimmte LBA geschrieben wurde. Wenn eine bestimmte LBA bereits während der aktuellen Dauer des zonenaktiven Zustands geschrieben wurde, kann die Steuerung optional den zweiten Schreibvorgang in die LBA zurückweisen.
  • 8 veranschaulicht eine entsprechende Tabelle 800, welche die von der Zone 706 empfangenen Schreibbefehle verfolgt. Die Tabelle 800 kann im DRAM gespeichert sein. Die Tabelle 800 umfasst eine erste Spalte 852, die eine Schreib-ID der Befehle (d. h. die sequentielle Reihenfolge der Befehle) identifiziert, eine zweite Spalte 854, die Start-LBA identifiziert, eine dritte Spalte 856, welche die Anzahl logischer Blöcke identifiziert, die benötigt werden, um die Daten, die einem Befehl und der erwarteten Start-LBA zugeordnet sind, zu schreiben, eine vierte Spalte 860, welche die LBA identifiziert, die verwendet wird, um die Daten, die einem Befehl zugeordnet sind, als nicht verfügbar zu speichern, um geschrieben zu werden (d. h. voll), und eine fünfte Spalte 862, welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die verwendet wird, um die Daten zu speichern.
  • 7B veranschaulicht die Zone 706, nachdem ein erster Befehl 730 an die Zone 706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem ersten Befehl 730 zugeordnet sind, in den vierten logischen Block 7123 der Zone 706 geschrieben wurden. Der Host identifiziert, in welchen logischen Block 712 der Zone 706 die mit dem ersten Befehl 730 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann einen oder mehrere verfügbare logische Blöcke 712 der Zone 706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, und die Auswahl muss nicht sequenziell erfolgen. Da die Hostvorrichtung speziell einen oder mehrere logische Blöcke 712 der Zone 706 zum Speichern der Daten identifiziert, muss kein Schreibzeiger verwendet werden.
  • Die Steuerung ruft dann den ersten Befehl 730 ab, DMA-Iiest die Daten, die dem ersten Befehl 730 zugeordnet sind, und schreibt die Daten in den ausgewählten logischen Block 712 (d. h. den vierten logischen Block 7123 ), der durch die Hostvorrichtung identifiziert wird. Während die Daten, die dem ersten Befehl 730 zugeordnet sind, auf den vierten logischen Block 7123 programmiert sind, kann die NAND-Adresse, die dem vierten logischen Block 7123 zugeordnet ist, die erste verfügbare NAND-Stelle in NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die erste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des ersten Befehls 730 eine erste NAND-Stelle NL0 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der vierte logische Block 7123 einer vierten NL im NAND (z.B. einer vierten NAND-Stelle NL3). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone 706 dies nicht sind. Die Tabelle 800 aus 8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem ersten Befehl 730 zugeordnet sind, in dem ausgewählten logischen Block 7123 gespeichert wurden, der durch die Hostvorrichtung identifiziert wird.
  • Sowohl die Hostvorrichtung als auch die Speichervorrichtung können individuell verfolgen, welche logischen Blöcke 712 der Zone 706 verwendet wurden, um Daten zu speichern. Sobald ein logischer Block 712 geschrieben wurde, verfolgen sowohl die Hostvorrichtung als auch die Speichervorrichtung, dass der/die geschriebene(n) logische(n) Block/Blöcke 712 nicht in der Lage ist/sind, mehr Daten zu speichern, oder nicht verfügbar ist/sind, bis die Zone 706 wieder in einen leeren Zustand zurückversetzt wird.
  • 7C veranschaulicht die Zone 706, nachdem ein zweiter Befehl 732 an die Zone 706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem zweiten Befehl 732 zugeordnet sind, in den siebten logischen Block 7126 der Zone 706 geschrieben wurden. Der Host identifiziert wiederum, in welchen logischen Block 712 der Zone 706 die mit dem zweiten Befehl 732 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann einen oder mehrere verfügbare logische Blöcke 712 der Zone 706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, mit Ausnahme des vierten logischen Blocks 7123 , der bereits den Zustand speichert, der dem ersten Befehl 730 zugeordnet ist. Die Auswahl eines logischen Blocks 712 durch die Hostvorrichtung muss nicht sequenziell erfolgen. Zum Beispiel werden die Daten, die dem ersten Befehl 730 zugeordnet sind, im vierten logischen Block 7123 gespeichert, während die Daten, die dem zweiten Befehl 732 zugeordnet sind, im siebten logischen Block 7126 gespeichert werden.
  • Die Steuerung ruft dann den zweiten Befehl 732 ab, DMA-Iiest die Daten, die dem zweiten Befehl 732 zugeordnet sind, und schreibt die Daten in den ausgewählten logischen Block 712 (d. h. den siebten logischen Block 7126 ), der durch die Hostvorrichtung identifiziert wird. Während die Daten, die dem zweiten Befehl 732 zugeordnet sind, auf den siebten logischen Block 7126 programmiert sind, kann die NAND-Adresse, die dem siebten logischen Block 7126 zugeordnet ist, die nächste verfügbare NL im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des zweiten Befehls 732 eine zweite NAND-Stelle NL1 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der siebte logische Block 7126 einer siebten NL im NAND (z.B. einer siebten NL6). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone 706 dies nicht sind. Die Tabelle 800 aus 8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem zweiten Befehl 732 zugeordnet sind, in dem ausgewählten logischen Block 7126 gespeichert wurden, der durch die Hostvorrichtung identifiziert wird.
  • 7D veranschaulicht die Zone 706, nachdem ein dritter Befehl 734 an die Zone 706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem dritten Befehl 734 zugeordnet sind, in den zweiten logischen Block 7121 , den dritten logischen Block 7122 und den achten logischen Block 7127 der Zone 706 geschrieben wurden. Der Host identifiziert wiederum, in welche logischen Blöcke 712 der Zone 706 die dem dritten Befehl 734 zugeordneten Daten geschrieben werden sollen, was mehr als einen logischen Block 712 erfordert. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke 712 der Zone 706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer dem vierten logischen Block 7123 und dem siebten logischen Block 7126 , die bereits den Zustand speichern, der dem ersten und zweiten Befehl 730, 732 zugeordnet ist. Die Auswahl logischer Blöcke 712 durch die Hostvorrichtung muss nicht sequenziell erfolgen. Zum Beispiel werden die Daten, die dem dritten Befehl 734 zugeordnet sind, im zweiten, dritten und achten logischen Block 7121 , 7122 , 7127 gespeichert.
  • Die Steuerung ruft dann den dritten Befehl 734 ab, DMA-Iiest die Daten, die dem dritten Befehl 734 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke 712 (d. h. den zweiten, dritten und achten logischen Block 7121 , 7122 , 7127 ), die von der Hostvorrichtung identifiziert werden. Während die dem dritten Befehl 734 zugeordneten Daten auf den zweiten, dritten und achten logischen Block 7121 , 7122 , 7127 programmiert sind, kann die dem zweiten, dritten und achten logischen Block 7121 , 7122 , 7127 zugeordnete NAND-Adresse die nächsten verfügbaren NLs im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächsten verfügbaren NLs im NAND). Zum Beispiel kann die NAND-Adresse der Daten des dritten Befehls 734 die dritte, vierte und fünfte NAND-Stelle NL2, NL3, NL4 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der zweite, dritte und achte logische Block 7121 , 7122 , 7127 der zweiten, dritten bzw. achten NLs im NAND (z.B. der zweiten, dritten und achten NAND-Stelle NL1, NL2, NL7). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone 706 dies nicht sind. Die Tabelle 800 aus 8 wird dann aktualisiert und ein Abschlusseintrag in die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem dritten Befehl 734 zugeordnet sind, in den ausgewählten logischen Blöcken 7121 , 7122 , 7127 gespeichert wurden, die durch die Hostvorrichtung identifiziert werden.
  • 7E veranschaulicht die Zone 706, nachdem ein vierter Befehl 736 an die Zone 706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem vierten Befehl 736 zugeordnet sind, in den fünften logischen Block 7124 und den sechsten logischen Block 7125 der Zone 706 geschrieben wurden. Der Host identifiziert wiederum, in welche logischen Blöcke 712 der Zone 706 die dem vierten Befehl 736 zugeordneten Daten geschrieben werden sollen, was mehr als einen logischen Block 712 erfordert. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke 712 der Zone 706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer dem zweiten bis vierten logischen Block 7121 - 7123 , dem siebten logischen Block 7126 und dem achten logischen Block 7127 , die bereits den Zustand speichern, der dem ersten, zweiten und dritten Befehl 730, 732, 734 zugeordnet sind. Die Auswahl logischer Blöcke 712 durch die Hostvorrichtung muss nicht sequenziell erfolgen; die Hostvorrichtung kann jedoch sequenzielle logische Blöcke auswählen, wenn sie dies entscheidet. Zum Beispiel werden die Daten, die dem vierten Befehl 736 zugeordnet sind, im vierten und fünften logischen Block 7123 , 7124 gespeichert.
  • Die Steuerung ruft dann den vierten Befehl 736 ab, DMA-Iiest die Daten, die dem vierten Befehl 736 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke 712 (d. h. den vierten und fünften logischen Block 7123 , 7124 ), die von der Hostvorrichtung identifiziert werden. Während die Daten, die dem vierten Befehl 736 zugeordnet sind, auf den vierten und fünften logischen Block 7123 , 7124 programmiert sind, kann die NAND-Adresse, die dem vierten und fünften logischen Block 7123 , 7124 zugeordnet ist, die nächsten verfügbaren NLs im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächsten verfügbaren NLs im NAND). Zum Beispiel kann die NAND-Adresse der Daten des vierten Befehls 736 die sechste und siebte NAND-Stelle NL5, NL6 sein. Bei herkömmlichen Zonenanhangbefehlen entsprechen der vierte und fünfte logische Block 7123 , 7124 den vierten und fünften NLs im NAND (z.B. der vierten und fünften NAND-Stelle NL3, NL4). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone 706 dies nicht sind. Die Tabelle 800 aus 8 wird dann aktualisiert und ein Abschlusseintrag in die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem vierten Befehl 736 zugeordnet sind, in den ausgewählten logischen Blöcken 7123 , 7124 gespeichert wurden, die von der Hostvorrichtung identifiziert werden.
  • 7F veranschaulicht die Zone 706, nachdem ein fünfter Befehl 738 an die Zone 706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem fünften Befehl 738 zugeordnet sind, in den ersten logischen Block 712o der Zone 706 geschrieben wurden. Der Host identifiziert wiederum, in welchen logischen Block 712 der Zone 706 die mit dem fünften Befehl 738 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke 712 der Zone 706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer den zweiten bis achten logischen Blöcken 7121 - 7127 , die bereits den Zustand speichern, der dem ersten bis vierten Befehl 730-736 zugeordnet ist.
  • Die Steuerung ruft dann den fünften Befehl 738 ab, DMA-Iiest die Daten, die dem fünften Befehl 738 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke 712 (d. h. den ersten logischen Block 7120 ), die von der Hostvorrichtung identifiziert werden. Während die Daten, die dem fünften Befehl 738 zugeordnet sind, auf den ersten logischen Block 7120 programmiert sind, kann die NAND-Adresse, die dem ersten logischen Block 7120 zugeordnet ist, die nächste verfügbare NL im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des fünften Befehls 738 eine achte NAND-Stelle NL7 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der erste logische Block 7120 einer ersten NL im NAND (z.B. einer ersten NAND-Stelle NL0). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone 706 dies nicht sind. Die Tabelle 800 aus 8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem fünften Befehl 738 zugeordnet sind, in den ausgewählten logischen Blöcken 7120 gespeichert wurden, die von der Hostvorrichtung identifiziert werden.
  • Beim Schreiben der Daten, die dem fünften Befehl 738 zugeordnet sind, in den ersten logischen Block 712o befindet sich die Zone 706 im vollen Zustand, und die Kapazität der Zone 706 wird vollständig genutzt. Eine volle Zone ist eine Zone, die vollständig mit Daten gefüllt ist und keine verfügbaren Blöcke mehr hat, in die Daten geschrieben werden können. 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, so dass die Zone wieder auf eine leere Zone umschaltet. Sobald die Zone 706 von Daten gelöscht, in den Löschzustand gewechselt und dann in den aktiven Zustand gewechselt ist, kann die Hostvorrichtung logische Blöcke 712 der Zone 706 auswählen, um Daten in beliebiger Reihenfolge gemäß dem oben beschriebenen Verfahren zu schreiben. Die Hostvorrichtung ist nicht auf das Schreiben von Daten in die Zone 706 in der gleichen Reihenfolge wie oben beschrieben beschränkt, sondern kann jeden verfügbaren logischen Block 712 in beliebiger Reihenfolge auswählen.
  • Beim Löschen der Zone 706 zeigen die LBA-Zeiger alle auf einen Standardwert, der keinen physischen Speicherort bedeutet, wie beispielsweise NULL, 0x0000, 0xFFFF oder dergleichen. Wenn jeder Schreibvorgang von der Steuerung empfangen wird, werden die Daten an die nächste NAND-Stelle geschrieben, während gleichzeitig der vorhandene LBA-Wert überprüft wird, um sicherzustellen, dass er auf NULL zeigt. Wenn der LBA-Wert in der Verfolgungstabelle 800 nicht auf NULL zeigt, dann bestimmt die Steuerung, dass dies nicht das erste Mal ist, dass die LBA während dieser Dauer durch den Zonenaktivzustand geschrieben wurde. Der Schreibvorgang kann optional zurückgewiesen werden, da der Host nicht in der Lage ist, jede LBA nur ein einziges Mal zu schreiben. Die Zurückweisung des Schreib- und Sicherheitsmerkmals ermöglicht es der Speichervorrichtung, sequenziellen Schreibverkehr aufrechtzuerhalten, und stellt sicher, dass das Background-Speicherbereinigungsmerkmal weiterhin ausgeschaltet werden kann.
  • Umgekehrt zeigen in herkömmlichen Verfahren, sobald eine Zone gelöscht ist, alle LBAs auf einen Markierungswert, wie NULL, 0x0000, 0xFFFF oder dergleichen. Wenn die Schreibvorgänge sequentiell eine Zone füllen, zeigt jede LBA, in die geschrieben wird, auf die nächste NAND-Stelle, an der die Daten platziert wurden. Gleichzeitig wird die LBA des aktuellen Schreibvorgangs überprüft, um nur zu bestimmen, ob sie der letzten Schreib-LBA folgt.
  • Die Verwendung von nicht sequenziellem Schreiben in die Zone, wie in 7-8 beschrieben, anstelle der Verwendung von Zonenanhangbefehlen ermöglicht es der Speichervorrichtung, die Menge an durchgeführter Arbeit zu reduzieren, da die Speichervorrichtung den Schreibvorgang verfolgt, aber keinen Schreibzeiger verfolgen und aktualisieren muss. Darüber hinaus darf die Hostvorrichtung über die LBA zum Speichern von Daten entscheiden, im Gegensatz zu Zonenanhangbefehlen. Insofern werden sowohl die Speichervorrichtungsleistung als auch die Host-Leistung erhöht, und der Speichervorrichtungsaufwand wird verringert.
  • Eine Hostvorrichtung, welche über die LBA zum Speichern der Daten entscheidet, kann in der Lage sein, diesen Vorteil zu verwenden, um Wettlaufbedingungen zu vermeiden. Dies ermöglicht es einigen bestehenden Strukturen in hostseitigen Anwendungen, ohne Änderung fortzufahren. Zum Beispiel haben einige hostseitige Anwendungen eine Entität, die Kenntnis über alle verfügbaren Speicher-LBAs aufweist, und diese Entität verwaltet Schreiborte an andere Hostanwendungen. Bei Verwendung von nicht sequentiellem Schreiben in die Zone, wie in den 7-8 beschrieben, dürfen die anderen Anwendungen im Host ihre zugewiesenen LBAs halten und ihre zugewiesenen LBAs zu einem späteren Zeitpunkt verbrauchen. Insofern besteht keine Gefahr von nicht sequentiellen Schreibvorgängen in Zonen. Da die Speichervorrichtung eine sequenzielle Schreibprüfung ausschalten kann, wird die Lebensdauer der Speichervorrichtung verbessert. Die Lebensdauer der Speichervorrichtung wird aufrechterhalten, da die eingehenden Daten noch an der nächsten verfügbaren NAND-Stelle platziert werden können.
  • In einer Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in eine erste Zone und dem ersten Befehl zugeordnete DMA-Lesedaten abruft, einen oder mehrere erste logische Blöcke der ersten Zone identifiziert, in welche die dem ersten Befehl zugeordneten Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, einen zweiten Befehl abruft, um Daten in die erste Zone zu schreiben, und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, und eines oder mehrerer zweiter logischer Blöcke der ersten Zone identifiziert, um die Daten, die dem zweiten Befehl zugeordnet sind, in diese zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
  • Die Steuerung ist ferner konfiguriert, die Daten, die dem ersten Befehl zugeordnet sind, zu schreiben, vor dem Abrufen des zweiten Befehls diese Daten zu schreiben, und die Daten, die dem zweiten Befehl zugeordnet sind, nach dem Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone zu schreiben. Die Steuerung ist ferner konfiguriert, um einen ersten Abschlusseintrag an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zurückzugeben und einen zweiten Abschlusseintrag an die Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, zurückzugeben. Die Steuerung ist ferner konfiguriert, um eine oder mehrere Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugeordnet sind, nach dem Zurückgeben des ersten Abschlusseintrag zu schreiben, und die eine oder mehreren Verfolgungstabellen nach dem Schreiben der Daten zu aktualisieren, die dem zweiten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des zweiten Abschlusseintrags zu schreiben.
  • Die eine oder die mehreren Verfolgungstabellen umfassen eine erste Verfolgungstabelle, die in der Speichervorrichtung gespeichert ist, und eine zweite Verfolgungstabelle, die in der Hostvorrichtung gespeichert ist. Die Hostvorrichtung wählt den einen oder die mehreren zweiten Blöcke zum Speichern der Daten aus, die dem zweiten Befehl zugeordnet sind, unter Verwendung der zweiten Verfolgungstabelle. Eine Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der Daten aus, die dem ersten Befehl zugeordnet sind.
  • In einer anderen Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl abruft, um Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone zu schreiben, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an eine erste Stelle in der Medieneinheit schreibt, einen zweiten Befehl abruft, um Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken sind, und dem zweiten Befehl zugeordnete Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und an einen zweiten Ort in der Medieneinheit zu schreiben, wobei der zweite Ort sequentiell zu dem ersten Ort angeordnet ist.
  • Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren zweiten logischen Blöcken sind, und die Daten, die dem dritten Befehl zugeordnet sind, in den einen oder die mehreren dritten logischen Blöcke der ersten Zone und an einen dritten Ort in der Medieneinheit schreibt, wobei der dritte Ort sequentiell zu dem zweiten Ort angeordnet ist. Die dem zweiten Befehl zugehörigen Daten werden in zwei oder mehr zweite logische Blöcke geschrieben und die zwei oder mehr zweiten logischen Blöcke sind nicht sequentiell zueinander. Eine Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der dem ersten Befehl zugeordneten Daten und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der dem zweiten Befehl zugeordneten Daten aus.
  • Die Steuerung ist ferner konfiguriert, um einen ersten Abschlusseintrag an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zurückzugeben und eine oder mehrere Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugeordnet sind, zu schreiben. Mindestens eine der einen oder mehreren Verfolgungstabellen ist in der Medieneinheit der Speichervorrichtung gespeichert.
  • In noch einer anderen Ausführungsform umfasst ein Speichersystem eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle und ein Speichersystem umfasst. Das Speichersystem umfasst eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle und eine mit der Medieneinheit gekoppelte Steuerung speichert. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, abruft, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, die dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone schreibt, die erste und die zweite Verfolgungstabelle aktualisiert, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind, einen zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und DMA-Lesen von Daten abruft, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei mindestens einer des einen oder mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken ist, Daten schreiben, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und die erste und die zweite Verfolgungstabelle zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  • Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone zu schreiben und DMA-zu lesen, die dem dritten Befehl zugeordnet sind, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequentiell zu mindestens dem einen oder den mehreren zweiten logischen Blöcken sind, die dem dritten Befehl zugeordneten Daten in den einen oder die mehreren dritten logischen Blöcke der ersten Zone schreiben und die ersten und zweiten Verfolgungstabellen aktualisieren, um anzuzeigen, dass der eine oder die mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind. Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone zu schreiben, und von DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke zwischen dem ersten einen oder den mehreren logischen Blöcken und dem einen oder mehreren zweiten logischen Blöcken liegt, die dem dritten Befehl zugeordneten Daten in die zwei oder mehreren dritten logischen Blöcke der ersten Zone schreibt und die ersten und zweiten Verfolgungstabellen aktualisiert, um anzuzeigen, dass die zwei oder mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  • Die Steuerung ist ferner konfiguriert, einen dritten Befehl zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, abzurufen, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke sequentiell vor dem einen oder den mehreren ersten logischen Blöcken oder dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist, die dem dritten Befehl zugehörigen Daten in die zwei oder mehr dritten logischen Blöcke der ersten Zone zu schreiben und die ersten und zweiten Verfolgungstabellen zu aktualisieren, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht zum Schreiben von Befehlen zugehörigen Daten verfügbar sind. Die Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der Daten, die dem ersten Befehl zugeordnet sind, und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, basierend auf der ersten Verfolgungstabelle aus.
  • Die Steuerung ist ferner so konfiguriert, dass sie nach dem Schreiben der dem ersten Befehl zugeordneten Daten einen ersten Abschlusseintrag an eine Abschlusswarteschlange der Hostvorrichtung zurückgibt, und wobei die Hostvorrichtung die erste Verfolgungstabelle nach dem Empfang des ersten Abschlusseintrags aktualisiert. Die dem zweiten Befehl zugeordneten Daten werden in zwei oder mehr zweite logische Blöcke geschrieben, und wobei die zwei oder mehr zweiten logischen Blöcke durch einen oder mehr leere logische Blöcke oder mehr erste logische Blöcke voneinander beabstandet sind.
  • 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/703643 [0001]
    • US 62/899717 [0001]

Claims (20)

  1. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in eine erste Zone und von Direct Memory Access (DMA)-Lesedaten, die dem ersten Befehl zugeordnet sind; Identifizieren eines oder mehrerer erster logischer Blöcke der ersten Zone, in die mit dem ersten Befehl zugehörigen Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Abrufen eines zweiten Befehls zum Schreiben von Daten in die erste Zone und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind; und Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone zum Schreiben der mit dem zweiten Befehl zugehörigen Daten, wobei sich der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone befinden, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
  2. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung ferner eingerichtet ist zum: Schreiben der Daten, die dem ersten Befehl zugeordnet sind, vor dem Abrufen des zweiten Befehls zum Schreiben von Daten; und Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, nach dem Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone.
  3. Speichervorrichtung gemäß Anspruch 2, wobei die Steuerung weiterhin eingerichtet ist zum: Zurückgeben eines ersten Abschlusseintrags an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind; und Zurückgeben eines zweiten Abschlusseintrags an die Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der Daten, die dem zweiten Befehl zugeordnet sind.
  4. Speichervorrichtung gemäß Anspruch 3, wobei die Steuerung weiterhin eingerichtet ist zum: Aktualisieren einer oder mehrerer Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des ersten Abschlusseintrags zu schreiben; und Aktualisieren der einen oder mehreren Verfolgungstabellen nach dem Schreiben der Daten, die dem zweiten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des zweiten Abschlusseintrags zu schreiben.
  5. Speichervorrichtung gemäß Anspruch 4, wobei die eine oder die mehreren Verfolgungstabellen eine erste Verfolgungstabelle, die in der Speichervorrichtung gespeichert ist, und eine zweite Verfolgungstabelle, die in der Hostvorrichtung gespeichert ist, umfassen.
  6. Speichervorrichtung gemäß Anspruch 5, wobei die Hostvorrichtung den einen oder die mehreren zweiten Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, unter Verwendung der zweiten Verfolgungstabelle auswählt.
  7. Speichervorrichtung gemäß Anspruch 1, wobei eine Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der mit dem ersten Befehl zugehörigen Daten auswählt.
  8. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an einen ersten Ort in der Medieneinheit; Abrufen eines zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren ersten logischen Blöcken sind; und Schreiben der dem zweiten Befehl zugehörigen Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und in einen zweiten Ort in der Medieneinheit, wobei sich der zweite Ort sequenziell zu dem ersten Ort befindet.
  9. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone, wobei sich der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone befinden und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren zweiten logischen Blöcken sind; und Schreiben der mit dem dritten Befehl zugehörigen Daten in den einen oder die mehreren dritten logischen Blöcke der ersten Zone und in einen dritten Ort in der Medieneinheit, wobei sich der dritte Ort sequenziell zu dem zweiten Ort befindet.
  10. Speichervorrichtung gemäß Anspruch 8, wobei die dem zweiten Befehl zugehörigen Daten in zwei oder mehr zweite logische Blöcke geschrieben werden und wobei die zwei oder mehr zweiten logischen Blöcke nicht sequentiell zueinander sind.
  11. Speichervorrichtung gemäß Anspruch 8, wobei eine Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der mit dem ersten Befehl zugehörigen Daten und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der mit dem zweiten Befehl zugehörigen Daten auswählt.
  12. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung ferner eingerichtet ist zum: Zurückgeben eines ersten Abschlusseintrags an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind; und Aktualisieren einer oder mehrerer Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugehörig sind.
  13. Speichervorrichtung gemäß Anspruch 12, wobei mindestens eine der einen oder mehreren Verfolgungstabellen in der Medieneinheit der Speichervorrichtung gespeichert ist.
  14. Speichersystem, aufweisend: eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle umfasst; und ein Speichersystem, wobei das Speichersystem Folgendes umfasst: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle speichert; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in den einen oder die mehreren ersten logischen Blöcke der ersten Zone; Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind; Abrufen eines zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer des einen oder der mehreren zweiten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren ersten logischen Blöcken ist; Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  15. Speichersystem gemäß Anspruch 14, wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequenziell zu mindestens dem einen oder den mehreren zweiten logischen Blöcken sind; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in den einen oder die mehreren dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  16. Speichersystem gemäß Anspruch 14, wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugehörig sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke zwischen dem einen oder den mehreren ersten logischen Blöcken und dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in die zwei oder mehr dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  17. Speichersystem gemäß Anspruch 14, wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugehörig sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke sequentiell vor dem einen oder den mehreren ersten logischen Blöcken oder dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in die zwei oder mehr dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
  18. Speichersystem gemäß Anspruch 14, wobei die Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der Daten, die dem ersten Befehl zugeordnet sind, und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, basierend auf der ersten Verfolgungstabelle auswählt.
  19. Speichersystem gemäß Anspruch 18, wobei die Steuerung ferner konfiguriert ist, einen ersten Abschlusseintrag an eine Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der dem ersten Befehl zugehörigen Daten zurückzugeben, und wobei die Hostvorrichtung die erste Verfolgungstabelle nach dem Empfangen des ersten Abschlusseintrags aktualisiert.
  20. Speichersystem gemäß Anspruch 14, wobei die dem zweiten Befehl zugehörigen Daten in zwei oder mehr zweite logische Blöcke geschrieben werden und wobei die zwei oder mehr zweiten logischen Blöcke durch einen oder mehrere leere logische Blöcke oder mehrere erste logische Blöcke voneinander beabstandet sind.
DE112020000139.3T 2019-09-12 2020-03-17 Nicht sequentiell in zonen aufgeteilte namensräume Pending DE112020000139T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962899717P 2019-09-12 2019-09-12
US62/899,717 2019-09-12
US16/703,643 US11294827B2 (en) 2019-09-12 2019-12-04 Non-sequential zoned namespaces
US16/703,643 2019-12-04
PCT/US2020/023171 WO2021050107A1 (en) 2019-09-12 2020-03-17 Non-sequential zoned namespaces

Publications (1)

Publication Number Publication Date
DE112020000139T5 true DE112020000139T5 (de) 2021-07-29

Family

ID=74865996

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000139.3T Pending DE112020000139T5 (de) 2019-09-12 2020-03-17 Nicht sequentiell in zonen aufgeteilte namensräume

Country Status (5)

Country Link
US (1) US11294827B2 (de)
KR (1) KR102569783B1 (de)
CN (1) CN113179658B (de)
DE (1) DE112020000139T5 (de)
WO (1) WO2021050107A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593258B2 (en) * 2019-11-26 2023-02-28 Micron Technology, Inc. Enhanced filesystem support for zone namespace memory
KR20210108107A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11789611B2 (en) * 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11860791B2 (en) * 2020-04-24 2024-01-02 Netapp, Inc. Methods for managing input-output operations in zone translation layer architecture and devices thereof
KR20220058224A (ko) * 2020-10-30 2022-05-09 에스케이하이닉스 주식회사 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법
KR20220104511A (ko) * 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
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
CN114138193B (zh) * 2021-11-25 2024-03-26 郑州云海信息技术有限公司 一种分区命名空间固态硬盘的数据写入方法、装置及设备
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11995316B2 (en) 2022-06-15 2024-05-28 Samsung Electronics Co., Ltd. Systems and methods for a redundant array of independent disks (RAID) using a decoder in cache coherent interconnect storage devices
US20240111456A1 (en) * 2022-10-02 2024-04-04 Silicon Motion, Inc. Storage device controller and method capable of allowing incoming out-of-sequence write command signals
US20230229358A1 (en) * 2023-03-23 2023-07-20 Lemon Inc. Zoned namespaces storage device and system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US8112574B2 (en) 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7779056B2 (en) 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US20080235489A1 (en) 2007-03-19 2008-09-25 Sergey Anatolievich Gorobets Systems for forcing an update block to remain sequential
US20080235464A1 (en) * 2007-03-19 2008-09-25 Shai Traister System for conversion of update blocks based on comparison with a threshold size
US9612948B2 (en) * 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
KR102148889B1 (ko) * 2014-08-18 2020-08-31 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR20160027805A (ko) * 2014-09-02 2016-03-10 삼성전자주식회사 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법
US20170337212A1 (en) * 2015-01-13 2017-11-23 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US9696934B2 (en) * 2015-02-12 2017-07-04 Western Digital Technologies, Inc. Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory
US9940261B2 (en) * 2016-05-05 2018-04-10 Western Digital Technology, Inc. Zoning of logical to physical data address translation tables with parallelized log list replay
KR20170128012A (ko) 2016-05-13 2017-11-22 주식회사 맴레이 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스
JP6855704B2 (ja) * 2016-08-22 2021-04-07 富士通株式会社 ストレージシステム、ストレージ制御装置及びデータ格納方法
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN109582599B (zh) * 2017-09-29 2023-12-22 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
US10621084B2 (en) * 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies

Also Published As

Publication number Publication date
WO2021050107A1 (en) 2021-03-18
US11294827B2 (en) 2022-04-05
US20210081330A1 (en) 2021-03-18
KR102569783B1 (ko) 2023-08-22
CN113179658A (zh) 2021-07-27
KR20210076143A (ko) 2021-06-23
CN113179658B (zh) 2024-09-20

Similar Documents

Publication Publication Date Title
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102017104125B4 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE112020005096T5 (de) Gewichtung von lesebefehlen an zonen in speicherungsvorrichtungen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE112017005782T5 (de) Warteschlange für Speichervorgänge

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US