DE112020000184T5 - In zonen unterteilte namensräume in festkörperlaufwerken - Google Patents

In zonen unterteilte namensräume in festkörperlaufwerken Download PDF

Info

Publication number
DE112020000184T5
DE112020000184T5 DE112020000184.9T DE112020000184T DE112020000184T5 DE 112020000184 T5 DE112020000184 T5 DE 112020000184T5 DE 112020000184 T DE112020000184 T DE 112020000184T DE 112020000184 T5 DE112020000184 T5 DE 112020000184T5
Authority
DE
Germany
Prior art keywords
zone
zones
storage device
host device
full
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
DE112020000184.9T
Other languages
English (en)
Inventor
Matias BJORLING
Horst-christoph Georg HELLWIG
David Landsman
Daniel L. Helmick
Liam Parker
Alan D. Bennett
Peter Grayson
Judah Gamliel Hahn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112020000184T5 publication Critical patent/DE112020000184T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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
    • 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/7207Details relating to flash memory management management of metadata or control data
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Die Speichervorrichtung weist eine Steuerung und eine Medieneinheit auf. Die Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Steuerung ist eingerichtet zum Vornehmen einer informierten Nutzung von Fehlern durch Aktualisieren von Zonenmetadaten, um anzuzeigen, dass eine oder mehrere erste logische Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern von Daten verfügbar ist. Die Steuerung ist weiterhin eingerichtet zum Aktualisieren von Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen zurückzusetzen, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen in einen vollen Zustand zu überführen, um die Hostvorrichtung zu warnen, dass eine oder mehrere offene Zonen in den vollen Zustand überführt wurden, und zum Benachrichtigen der Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • GEBIET DER OFFENBARUNG
  • Diese Anmeldung beansprucht die Priorität der US-Anmeldung Nr. 16/728.917, 27 . Dezember 2019, die den Vorteil der vorläufigen US-Patentanmeldung mit der Seriennummer 62/905.894 , eingereicht am Mittwoch, 25. September 2019, beansprucht, welche hierin beide durch Bezugnahme aufgenommen 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. Der Umfang der Speichervorrichtung wird als Namensraum bezeichnet und die Steuerung ist eingerichtet, um Daten aus dem einen oder den mehreren Namensräumen der Speichervorrichtung zu lesen oder Daten in diese zu schreiben. Jeder Namensraum weist eine Vielzahl von logischen Blockadressen (LBAs) oder Sektoren auf, die einer physischen Stelle eines Mediums, wie Löschblöcken, entsprechen.
  • Wenn bei einer Speichervorrichtung beim Schreiben von Daten in Löschblöcke ein Fehler, wie E/A-Fehler, Ladungsverlust und/oder Lese-/Programmstörungen, auftritt, maskiert die Speichervorrichtung den Fehler in der Regel vor der Hostvorrichtung und verwaltet den Fehler im Backend. Die Hostvorrichtung weiß also nicht, dass ein Fehler aufgetreten ist, und kennt die Stelle, an der die Daten gespeichert sind, nicht mehr. Darüber hinaus können einige Fehler, die in einer Speichervorrichtung auftreten, dazu führen, dass ein oder mehrere Löschblöcke keine Daten speichern können. In solchen Fällen muss die Speichervorrichtung alle Daten aus den fehlerhaften Löschblöcken lesen und die Daten in einen neuen Satz von Löschblöcken umschreiben, während sie weiterhin Befehle von der Hostvorrichtung empfängt, was arbeitsaufwendig sein kann, die Gesamtzahl von Schreibvorgängen auf dem Medium verringern kann und die Gesamtleistung der Speichervorrichtung verschlechtern kann.
  • Es ist also ein neues Verfahren zum Betreiben einer Speichervorrichtung erforderlich.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Die Speichervorrichtung weist eine Steuerung und eine Medieneinheit auf. Die Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Steuerung ist eingerichtet zum Vornehmen einer informierten Nutzung von Fehlern durch Aktualisieren von Zonenmetadaten, um anzuzeigen, dass eine oder mehrere erste logische Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern von Daten verfügbar ist. Die Steuerung ist weiterhin eingerichtet zum Aktualisieren von Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen zurückzusetzen, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen in einen vollen Zustand zu überführen, um die Hostvorrichtung zu warnen, dass eine oder mehrere offene Zonen in den vollen Zustand überführt wurden, und zum Benachrichtigen der Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist zum Aktualisieren von Zonenmetadaten, um einer Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen der Vielzahl von Zonen zurückzusetzen, zum Aktualisieren von Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen der Vielzahl von Zonen in einen vollen Zustand zu überführen, zum Überführen einer oder mehreren offenen Zonen in den vollen Zustand und zum Aktualisieren von Zonenmetadaten, um die Hostvorrichtung darauf hinzuweisen, dass die eine oder mehreren offenen Zonen in den vollen Zustand überführt wurden.
  • In einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist zum Bestimmen einer beschreibbaren Zonenkapazität jeder der Vielzahl von Zonen, wobei die beschreibbare Zonenkapazität gleich oder kleiner ist als eine Gesamtzonenspeicherkapazität jeder Zone, wobei die beschreibbare Kapazität jeder Zone mit einer Kapazität eines oder mehrerer Löschblöcke abgestimmt ist, und zum Aktualisieren von Zonenmetadaten, um eine Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen zu benachrichtigen.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist, um einen Schreibbefehl zum Schreiben von Daten in eine oder mehrere erste logische Blockadressen in einer ersten Zone der Vielzahl von Zonen zu empfangen, um beim Auftreten eines Fehlers während des Schreibens der Daten in die eine oder die mehreren ersten logischen Blockadressen in der ersten Zone einen Schreibzeiger der ersten Zone so zu aktualisieren, dass er auf eine nächste gültige logische Blockadresse in der ersten Zone zeigt; und Zonenmetadaten zu aktualisieren, um anzuzeigen, dass die eine oder die mehreren ersten logischen Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern der Daten in der ersten Zone verfügbar ist.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend dargelegten Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von welchen 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 ist ein Blockdiagramm, das ein Verfahren zum Betreiben einer Speichervorrichtung zur Ausführung eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht.
    • 3A veranschaulicht die in einer Speichervorrichtung verwendeten in Zonen unterteilten Namensräume gemäß einer Ausführungsform.
    • 3B veranschaulicht ein Zustandsdiagramm der in Zonen unterteilten Namensräume der Speichervorrichtung aus 3A gemäß einer Ausführungsform.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. 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. Die Speichervorrichtung weist eine Steuerung und eine Medieneinheit auf. Die Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Steuerung ist eingerichtet zum Vornehmen einer informierten Nutzung von Fehlern durch Aktualisieren von Zonenmetadaten, um anzuzeigen, dass eine oder mehrere erste logische Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern von Daten verfügbar ist. Die Steuerung ist weiterhin eingerichtet zum Aktualisieren von Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen zurückzusetzen, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen in einen vollen Zustand zu überführen, um die Hostvorrichtung zu warnen, dass eine oder mehrere offene Zonen in den vollen Zustand überführt wurden, und zum Benachrichtigen der Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen.
  • 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 so genannten „Smartphones“, so genannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienwiedergabegeräten, Videospielkonsolen, Video-Streaming-Vorrichtungen und dergleichen.
  • Die Speichervorrichtung 106 schließt eine Steuerung 108, einen nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, einen flüchtigen Speicher 112 und eine Schnittstelle 114 ein. Die Steuerung 108 weist ferner eine Zonenverwaltung 120 auf. 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 2,5-Zoll-Datenspeichervorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeichervorrichtung, eine 1,8-Zoll-Datenspeichervorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCle) (z. B. PCle x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Speichervorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) sein.
  • Die Schnittstelle 114 der Speichervorrichtung 106 kann 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 beliebigen geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle 114 gemäß einem oder mehreren der folgenden Protokolle betrieben werden: 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), Coherent Accelerator (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 den NVM 110 ein, der eine Vielzahl von Speichervorrichtungen einschließen kann. NVM 110 kann eingerichtet 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 Dies (d. h. eine Vielzahl von Speichervorrichtungen) enthalten. In einigen Beispielen kann jede Speichervorrichtung zum Speichern relativ großer Datenmengen eingerichtet werden (z. B. 128 MB, 256 MB, 412 MB, 1 GB, 2 GB, 3 GB, 8 GB, 16 GB, 22 GB, 54 GB, 128 GB, 256 GB, 412 GB, 1 TB usw.).
  • In einigen Beispielen kann jede Speichervorrichtung des NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen, wie Flash-Speichervorrichtungen, Phasenwechselspeichervorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtung), ferroelektrische Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen, Festplattenlaufwerke und jede andere Art von nichtflüchtigen Speichervorrichtungen, einschließen.
  • Der NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen aufweisen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NAND-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Blöcken unterteilt 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. Weiterhin können NAND-Flash-Speichervorrichtungen 2D- oder 2D-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.
  • Ein Abschnitt des NVM 110 kann in logische Blöcke formatiert sein, sodass eine Kapazität des NVM 110 in eine Vielzahl von Zonen unterteilt ist. Jede der Zonen weist eine Vielzahl von physischen Blöcken oder Löschblöcken des NVM 110 auf und jedem der Löschblöcke ist eine Vielzahl von Logikblöcken zugeordnet. Jeder der Logikblöcke ist einer eindeutigen LBA oder einem Sektor zugeordnet. Jede der Zonen kann eine Größe haben, die mit der Kapazität von einem oder mehreren Löschblöcken des NVM 110 abgestimmt ist. Wenn die Steuerung 108 einen Befehl, wie beispielsweise von einer Hostvorrichtung 104, erhält, kann die Steuerung 108 Daten aus der Vielzahl von Logikblöcken, die der Vielzahl von Löschblöcken des NVM 110 zugeordnet sind, lesen und in diese schreiben.
  • 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 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 (ZM) 120 aufweisen, um Lese- und Schreibvorgänge in Zonen sowie die Verschiebung gültiger Daten in und aus Zonen zu Speicherbereinigungszwecken zu verwalten. Zonenmetadaten 122 können entweder in der Zonenverwaltung 120 oder der Steuerung 108 gespeichert werden. 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.
  • Die Zonenmetadaten 122 speichern Informationen über jede der Vielzahl von Zonen, wie den Zustand jeder Zone. Die Zonenmetadaten 122 können durch die Steuerung 108 oder die ZM 120 aktualisiert werden, um der Hostvorrichtung 104 Empfehlungen über eine oder mehrere Zonen zu geben, um die Hostvorrichtung 104 darüber zu informieren, dass eine oder mehrere Zonen aktualisiert oder geändert wurden, oder um die Hostvorrichtung 104 über Ereignisse zu informieren, die möglicherweise in einer oder mehreren Zonen aufgetreten sind. Die Zonenmetadaten 122 weisen eine Vielzahl von Attributen oder Feldern, welche die Steuerung 108 oder die ZM 120 aktualisieren kann, auf. Zum Beispiel können die Zonenmetadaten 122 ein Attribut „Beschreibbare Zonenkapazität“, ein Attribut „Empfehlung zum Überführen der Zone zu Voll“, ein Attribut „Durch Steuerung zum vollen Zustand überführt“, ein Attribut „Zurücksetzen der vollen Zone erwartet“, sowie Daten bezüglich E/A-Fehlern, Programmfehlern und jeglichen übersprungenen LBAs innerhalb einer Zone aufweisen, wie nachstehend unter Bezugnahme auf die 3A-3B erörtert.
  • Die Steuerung 108 und/oder die ZM 120 sind eingerichtet zum Ausgeben eines Ereignisses oder einer Benachrichtigung, um der Hostvorrichtung 104 mitzuteilen, dass die Zonenmetadaten 122 mit einem oder mehreren ausgewählten Attributen aktualisiert wurden (z. B. das Attribut „Beschreibbare Zonenkapazität“, das Attribut „Empfehlung zum Überführen der Zone zu Voll“, das Attribut „Durch Steuerung zum vollen Zustand überführt“ und das Attribut „Zurücksetzen der vollen Zone erwartet“), und dass die Hostvorrichtung 104 eine Liste der Änderungen, die an den Zonenmetadaten 122 vorgenommen wurden, lesen oder abrufen sollte. Die Zonenmetadaten 122 befähigen die Hostvorrichtung 104, sich mit der Speichervorrichtung 106 zu synchronisieren, sodass die Hostvorrichtung 104 in voller Kenntnis aller relevanter Ereignisse in der Speichervorrichtung 106 ist. Beispielweise ermöglichen die Zonenmetadaten 122 der Hostvorrichtung 104, zu jedem beliebigen Zeitpunkt Kenntnis über die Stelle aller innerhalb der Speichervorrichtung 106 gespeicherten Daten zu haben oder alle E/A-Fehler, die beim Schreiben von Daten von der Hostvorrichtung 104 auf die Speichervorrichtung 106 auftreten, zu kennen.
  • 2 ist ein Blockdiagramm, das ein Verfahren 200 zum Betreiben einer Speichervorrichtung zum Ausführen eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht. Das Verfahren 200 kann mit dem Speichersystem 100 angewendet werden, das eine Hostvorrichtung 104 und eine Speichervorrichtung 106 aufweist, die eine Steuerung 108 umfasst. Verfahren 200 kann mit der Vorrichtung, einer Hostvorrichtung und einer Speichervorrichtung, die einen Befehlsprozessor umfasst, angewendet werden.
  • Verfahren 200 beginnt bei Operation 250, bei der die Hostvorrichtung einen Befehl als Eintrag in eine Übertragungswarteschlange schreibt. Die Hostvorrichtung kann bei Operation 250 einen oder mehrere Befehle in die Übertragungswarteschlange schreiben. Die Befehle können Lese- oder Schreibbefehle sein. Die Hostvorrichtung kann eine oder mehrere Übertragungswarteschlangen aufweisen. Die Hostvorrichtung kann einen oder mehrere Befehle in einer beliebigen Reihenfolge (d. h. einer Übertragungsreihenfolge) in die Übertragungswarteschlange schreiben, unabhängig von der sequenziellen Schreibreihenfolge des einen oder der mehreren Befehle (d. h. einer sequenziellen Verarbeitungsreihenfolge).
  • Bei Operation 252 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, zum Ausführen bereiten Befehl zu benachrichtigen oder ihr diesen zu signalisieren. 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. Bei Operation 254 ruft eine Steuerung der Speichervorrichtung als Reaktion auf das Empfangen des Türklingel- oder Unterbrechungssignals den Befehl aus der einen oder den mehreren Übertragungswarteschlangen ab und die Steuerung empfängt den Befehl oder liest den Befehl per DMA.
  • Bei Operation 256 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.
  • Bei Operation 258 schreibt die Steuerung, sobald der Befehl vollständig verarbeitet wurde, einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in eine Beendigungswarteschlange der Hostvorrichtung und verschiebt oder aktualisiert den CQ-Kopfzeiger, um auf den neu geschriebenen Beendigungseintrag zu zeigen.
  • Bei Operation 260 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 Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden.
  • Bei Operation 262 verarbeitet die Hostvorrichtung den Beendigungseintrag. Bei Operation 264 schreibt die Hostvorrichtung einen aktualisierten CQ-Kopfzeiger in die Speichervorrichtung und läutet die Türklingel oder sendet ein Unterbrechungssignal an die Speichervorrichtung, um den Beendigungseintrag freizugeben.
  • 3A veranschaulicht gemäß einer Ausführungsform eine Ansicht der in Zonen unterteilten Namensräume (Zoned Namespaces, ZNS) 302, die in einer Speichervorrichtung 300 verwendet werden. Die Speichervorrichtung 300 kann die Ansicht der ZNS 302 einer Hostvorrichtung präsentieren. 3B veranschaulicht ein Zustandsdiagramm 350 für die ZNS 302 der Speichervorrichtung 300 gemäß einer Ausführungsform. Die Speichervorrichtung 300 kann die Speichervorrichtung 106 des Speichersystems 100 von 1 sein. Die Speichervorrichtung 300 kann einen oder mehrere ZNS 302 haben, und jeder ZNS 302 kann unterschiedlich groß sein. Die Speichervorrichtung 300 kann weiterhin einen oder mehrere herkömmliche Namensräume zusätzlich zu dem einen oder den mehreren in Zonen unterteilten Namensräumen 302 aufweisen. Darüber hinaus kann der ZNS 302 ein Zoned Block Command (ZBC) für SAS und/oder ein Zoned-Device ATA Command Set (ZAC) für SATA sein.
  • In der Speichervorrichtung 300 ist der ZNS 302 die Menge an NVM, die in Logikblöcke formatiert werden kann, sodass die Kapazität in eine Vielzahl von Zonen 306a-306n (zusammenfassend als Zonen 306 bezeichnet) unterteilt wird. Jede der Zonen 306 weist eine Vielzahl von physischen Blöcken oder Löschblöcken (nicht dargestellt) einer Medieneinheit oder eines NVM 304 auf und jedem der Löschblöcke ist eine Vielzahl von Logikblöcken (nicht dargestellt) zugeordnet. Jede der Zonen 306 kann eine Größe aufweisen, die mit der Kapazität von einem oder mehreren Löschblöcken des NVM oder der NAND-Vorrichtung abgestimmt ist. Wenn die Steuerung 308 einen Befehl empfängt, wie von einer (nicht dargestellten) Hostvorrichtung oder der Übertragungswarteschlange einer Hostvorrichtung, kann die Steuerung 308 Daten von der Vielzahl von Logikblöcken, die der Vielzahl von Löschblöcken der ZNS 302 zugeordnet sind, lesen und Daten in diese schreiben. Jeder der Logikblöcke ist einer eindeutigen LBA oder einem Sektor zugeordnet.
  • In einer Ausführungsform ist der NVM 304 eine NAND-Vorrichtung. Die NAND-Vorrichtung weist einen oder mehrere Dies auf. Jeder des einen oder der mehreren Dies weist eine oder mehrere Ebenen auf. Jede der einen oder mehreren Ebenen weist einen oder mehrere Löschblöcke auf. Jeder des einen oder der mehreren Löschblöcke weist eine oder mehrere Wortleitungen (z. B. 256 Wortleitungen) auf. Jede der einen oder mehreren Wortleitungen kann auf einer oder mehreren Seiten adressiert werden. Zum Beispiel kann ein MLC NAND-Die die obere Seite und die untere Seite verwenden, um die zwei Bits in jeder Zelle der vollständigen Wortleitung zu erreichen (z. B. 16 kB pro Seite). Außerdem kann auf jede Seite mit einer Granularität zugegriffen werden, die gleich oder kleiner als die volle Seite ist. Eine Steuerung kann häufig in Benutzerdatengranularität-LBA-Größen von 512 Bytes auf NAND zugreifen. Somit sind, wie in der nachstehenden Beschreibung erwähnt, NAND-Stellen gleich einer Granularität von 512 Bytes. Somit ergibt eine LBA-Größe von 512 Bytes und eine Seitengröße von 16 kB für zwei Seiten eines MLC-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 306 aktualisiert, um zu verfolgen, wo sich die Daten innerhalb des NVM 304 befinden. Daten können jeweils in eine Zone 306 geschrieben werden, bis eine Zone 306 voll ist, oder in mehrere Zonen 306, sodass mehrere Zonen 306 teilweise gefüllt sein können. In ähnlicher Weise können beim Schreiben von Daten in eine bestimmte Zone 306 Daten in einen Block nach dem anderen, 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 zu dem zweiten Löschblock gewechselt wird) oder in mehrere Blöcke gleichzeitig, in sequentieller Reihenfolge der NAND-Stelle oder Wortleitung für Wortleitung, um jeden Block teilweise in einer paralleleren 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 308 die Löschblöcke auswählt, welche die Daten für jede Zone speichern werden, kann die Steuerung 308 die Löschblöcke entweder zum Zeitpunkt des Öffnens der Zone auswählen oder kann die Löschblöcke auswählen, wenn sie eine Notwendigkeit zum Füllen der ersten NAND-Stelle oder Wortleitung dieses bestimmten Löschblocks erreicht. Dies kann differenzierter sein, wenn das vorstehend beschriebene Verfahren zum vollständigen Füllen eines Löschblocks vor dem Starten des nächsten Löschblocks verwendet wird. Die Steuerung 308 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 zugeordnet und zugewiesen wird, kann für null oder mehr übereinstimmende Zonen zu jeder Zeit innerhalb der Steuerung 308 erfolgen.
  • Jeder der Zonen 306 ist eine Zonenstart-Logikblockadresse (ZSLBA) oder ein Zonenstart-Sektor zugeordnet. Die ZSLBA ist die erste verfügbare LBA in der Zone 306. Zum Beispiel ist die erste Zone 306a ZaSLBA zugeordnet, die zweite Zone 306b ist ZbSLBA zugeordnet, die dritte Zone 306c ist ZcSLBA zugeordnet, die vierte Zone 306d ist ZdSLBA zugeordnet und die n-te Zone 306n (d. h. die letzte Zone) ist ZnSLBA zugeordnet. Jede Zone 306 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 306 geschrieben werden, wird ein Schreibzeiger 310 vorgerückt oder aktualisiert, um auf den nächsten verfügbaren Block in der Zone 306 zu zeigen oder diesen anzuzeigen, in den Daten geschrieben werden sollen, um den nächsten Schreibstartpunkt zu verfolgen (d. h. der Beendigungspunkt des vorherigen Schreibvorgangs entspricht dem Startpunkt eines nachfolgenden Schreibvorgangs). Somit zeigt der Schreibzeiger 310 an, wo der nachfolgende Schreibvorgang in die Zone 306 beginnen wird. Nachfolgende Schreibbefehle sind ‚Zonenanhang‘-Befehle, bei denen die mit dem nachfolgenden Schreibbefehl verbundenen Daten an die Zone 306 an der Stelle angehängt werden, die der Schreibzeiger 310 als nächsten Startpunkt angibt. Eine geordnete Liste von LBAs innerhalb der Zone 306 kann für die Schreibreihenfolge gespeichert werden. Jede Zone 306 kann ihren eigenen Schreibzeiger 310 haben. Wenn somit ein Schreibbefehl empfangen wird, wird eine Zone durch ihre ZSLBA identifiziert, und der Schreibzeiger 310 bestimmt, wo der Schreibvorgang der Daten innerhalb der identifizierten Zone beginnt.
  • 3B veranschaulicht ein Zustandsdiagramm 350 für den ZNS 302 aus 3A. In dem Zustandsdiagramm 350 kann jede Zone in einem anderen Zustand, wie leer, aktiv, voll oder offline, sein. 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 der Befehl zum Öffnen der Zone vom 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, weist die Zone offene Blöcke auf, die beschrieben werden können, und dem Host kann eine Beschreibung der empfohlenen Zeit im aktiven Zustand bereitgestellt werden. Die Steuerung 308 weist die ZM auf. Zonenmetadaten können in der ZM und/oder der Steuerung 308 gespeichert sein.
  • Der Begriff „beschrieben“ schließt 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, ein. Der Begriff „beschrieben“ kann weiterhin das Wechseln einer Zone zu voll aufgrund von Anforderungen an die interne Laufwerksbehandlung (Bedenken hinsichtlich der Datenhaltung in offenen Blöcken, da sich die fehlerhaften Bits bei offenen Löschblöcken schneller anhäufen), das Schließen oder Füllen einer Zone durch die Speichervorrichtung 300 aufgrund von Ressourcenbeschränkungen, wie u. a. zu viele offene Zonen, um den Fehlerzustand 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 Hostressourcen 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 308, 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)). In einer vollen Zone zeigt der Schreibzeiger auf das Ende der beschreibbaren Kapazität der Zone. Lesebefehle von Daten, die in vollen Zonen gespeichert sind, können weiterhin ausgeführt werden.
  • Die Zonen können eine beliebige Gesamtkapazität haben, wie 256 MiB oder 512 MiB. Ein kleiner Teil jeder Zone kann jedoch für das Schreiben von Daten unzugänglich sein, kann aber dennoch gelesen werden, wie ein Teil jeder Zone, der die XOR-Daten und einen oder mehrere ausgeschlossene Löschblöcke speichert. Wenn beispielsweise die Gesamtkapazität einer Zone 306 512 MiB beträgt, kann die ZCAP 470 MiB betragen, was der verfügbaren Kapazität zum Schreiben von Daten entspricht, während 42 MiB nicht zum Schreiben von Daten zur Verfügung stehen. Die beschreibbare Kapazität (ZCAP) einer Zone ist gleich oder kleiner als die Gesamtzonenspeicherkapazität. Beim Zurücksetzen der Zone kann die Speichervorrichtung 300 die ZCAP jeder Zone bestimmen. Zum Beispiel kann die Steuerung 308 oder die ZM die ZCAP jeder Zone bestimmen. Die Speichervorrichtung 300 kann die ZCAP einer Zone bestimmen, wenn die Zone zurückgesetzt wird.
  • Ein Attribut „Beschreibbare ZCAP“ wird den Zonenmetadaten hinzugefügt und die Speichervorrichtung 300 kann das Attribut „Beschreibbare ZCAP“ aktualisieren, um der Hostvorrichtung die beschreibbare Kapazität einer Zone 306 anzuzeigen. Die Hostvorrichtung kann das Attribut „Beschreibbare ZCAP“ aus den Zonenmetadaten lesen, um die von der Speichervorrichtung ausgewählte ZCAP einer Zone 306 zu bestimmen, und daher ist der Hostvorrichtung bekannt, wie viele Daten in der Zone 306 gespeichert werden dürfen. Die Speichervorrichtung 300 kann das Attribut „Beschreibbare ZCAP“ aktualisieren, das auf jede der Zonen 306 angewendet wird. Nach dem Aktualisieren der Zonenmetadaten mit dem ZCAP-Attribut kann die Steuerung 308 und/oder die ZM ein Ereignis ausgeben, um die Hostvorrichtung zu informieren, dass sich die Zonenmetadaten geändert haben.
  • Die ZCAP einer Zone 306 kann so gewählt werden, dass sie sich an die Kapazität der Grenzen physischer Medien anpasst, wie beispielsweise an einen oder mehrere Löschblöcke, was ermöglicht, dass die Hostvorrichtung und die Speichervorrichtung 300 beim Schreiben von Daten zusammenwirken. Alle in einer Zone 306 gespeicherten Daten sind entweder gültig oder ungültig und die Hostvorrichtung verfolgt den Status der Daten unabhängig von der Speichervorrichtung. Infolgedessen muss die Speichervorrichtung keine Daten verschieben, um Löschblöcke für neue Schreibvorgänge freizugeben, da nun die Hostanwendung oder Hostvorrichtung diesen Prozess verwaltet. Damit entfällt der vorrichtungsseitige Schreibverstärkungsfaktor.
  • 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. Vor dem Umschalten auf eine offene und aktive Zone muss die Rücksetzzone jedoch gelöscht werden. Eine Zone kann jederzeit zwischen einem ZM-Zurücksetzen und einem ZM-Öffnen gelöscht werden. Beim Zurücksetzen einer Zone kann die Speichervorrichtung 300 eine neue ZCAP der Rücksetzzone bestimmen und das Attribut „Beschreibbare ZCAP“ in den Zonenmetadaten aktualisieren. 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 300 verbessert wird. Die Speichervorrichtung 300 kann einen oder mehrere Löschblöcke zum Löschen markieren. Wenn eine neue Zone gebildet wird und die Speichervorrichtung 300 ein ZM-Öffnen erwartet, können der eine oder die mehreren zum Löschen markierten Löschblöcke dann gelöscht werden. Die Speichervorrichtung 300 kann weiterhin die physische 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 den Schreibzeiger 310 für die Zone 306 gewählt werden, wodurch die Zone 306 tolerant gegenüber dem Empfang von Befehlen außerhalb der sequentiellen Reihenfolge ist. Der Schreibzeiger 310 kann wahlweise abgeschaltet werden, sodass ein Befehl in jedwede Start-LBA geschrieben werden kann, die für den Befehl angegeben wird.
  • Unter Rückbezug auf 3A kann die Steuerung 308, wenn die Steuerung 308 einen Schreibbefehl vom Host empfängt oder der direkte Speicherzugriff (DMA) die Schreibdaten liest, einen leeren Löschblock auswählen, um die dem Befehl zugeordneten Daten zu schreiben, und die leere Zone 306 schaltet in eine aktive und offene Zone 306 um. 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 308 ist eingerichtet, um neue Befehle aus einer von einer Hostvorrichtung besetzten Übertragungswarteschlange per DMA zu lesen oder einzuziehen.
  • In einer leeren Zone 306, die gerade auf eine aktive Zone 306 umgeschaltet wurde, werden die Daten der Zone 306 und dem zugehörigen Satz von sequentiellen LBAs der Zone 306 zugewiesen, beginnend bei der ZSLBA, da der Schreibzeiger 310 den zur ZSLBA gehörenden logischen Block als ersten verfügbaren logischen Block anzeigt. Die Daten können in einen oder mehrere Löschblöcke oder NAND-Stellen geschrieben werden, die für die physische Stelle der Zone 306 zugewiesen wurden. Nachdem die dem Schreibbefehl zugeordneten Daten in die Zone 306 geschrieben wurden, wird ein Schreibzeiger 310 aktualisiert, um auf die nächste für einen Host-Schreibvorgang verfügbare LBA zu zeigen (d. h. den Beendigungspunkt des ersten Schreibvorgangs). Die Schreibdaten aus diesem Host-Schreibbefehl werden sequentiell in die nächste verfügbare NAND-Stelle in dem Löschblock programmiert, der für die physische Sicherung 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 wahlweise mehrere Schreibbefehle an einem anderen Speicherort wie DRAM oder SRAM aggregieren, bevor sie eine vollständige Wortleitung programmiert, die aus mehreren Schreibbefehlen zusammengesetzt ist. Schreibbefehle, die länger als eine Wortleitung sind, sind in der Lage, eine vollständige Wortleitung mit einigen der Daten zu programmieren und zu füllen, und die überschüssigen Daten über eine Wortleitung hinaus werden verwendet, um die nächste Wortleitung zu füllen. Für die Zwecke dieser Beschreibung entsprechen die Schreibdatengrößen einer NAND-Stelle von 512 Bytes; dies soll jedoch nicht einschränkend sein.
  • Beispielsweise kann die Steuerung 308 einen ersten Schreibbefehl in eine dritte Zone 306c oder einen ersten Zonenanhangbefehl empfangen. Der Host identifiziert nacheinander, in welchen Logikblock der Zone 306 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 306c geschrieben, wie durch den Schreibzeiger 310 angezeigt wird, und der Schreibzeiger 310 wird vorgerückt oder aktualisiert, um auf die nächste verfügbare LBA zu zeigen, die für einen Host-Schreibvorgang verfügbar ist (d. h. WP>0). Wenn die Steuerung 308 einen zweiten Schreibbefehl in die dritte Zone 306c oder einen zweiten Zonenanhangbefehl empfängt, werden die dem zweiten Schreibbefehl zugeordneten Daten in die nächste(n) verfügbare(n) LBA(s) in der dritten Zone 306c geschrieben, die durch den Schreibzeiger 310 identifiziert wird/werden. Sobald die dem zweiten Befehl zugeordneten Daten in die dritte Zone 306c geschrieben werden, rückt der Schreibzeiger 310 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 dritten Zone 306c wird der Schreibzeiger 310 wieder auf ZcSLBA zurück verschoben (d. h. WP=0) und die dritte Zone 306c schaltet in eine leere Zone um.
  • Das Schreiben von Benutzerdaten in Löschblöcke oder NAND-Stellen einer Zone (d. h. das Programmieren einer Zelle) erfolgt durch Pulsen von Elektronen in die Zelle, bis die Spannung der Zelle innerhalb des Bereichs für einen gegebenen logischen Zustand liegt. Die Spannung kann nur ansteigen und muss entladen werden (z. B. durch eine Flash-Blocklöschung), bevor die Zelle erneut programmiert werden kann. Das Programmieren ist ein energieaufwendiger Vorgang, der dazu führen kann, dass Ladungen in benachbarte Zellen fließen und so möglicherweise den logischen Zustand der Nachbarzelle verändern.
  • Um Ladungslecks zu benachbarten Zellen zu reduzieren, kann eine zweistufige Programmierung der Zellen verwendet werden. Bei einer zweistufigen Programmierung für Multi-Level-Zellen (MLC) wird beispielsweise ein erstes Programm auf dem unteren Bit einer ersten Zelle (d. h. ein hochenergetisches grobkörniges Programm) und dann ein zweites Programm auf dem oberen Bit der ersten Zelle (d. h. ein niederenergetisches feinkörniges Programm) ausgeführt. Zwischen der Programmierung des unteren und oberen Bits der ersten Zelle wird das untere Bit einer benachbarten zweiten Zelle programmiert. Bei einer Zell-zu-Zell-Interferenz kann die feinkörnige Programmierung der ersten Zelle die Stromspannung der benachbarten zweiten Zelle erfassen und nur die für den erforderlichen logischen Zustand erforderliche Energie pulsen. Währenddessen sind Zellen, die nicht durch das feinkörnige Programm programmiert wurden, nicht lesbar, was dazu führt, dass die Hostdaten nicht lesbar sind, bis das feinkörnige Programm abgeschlossen ist.
  • Ein weiterer Nachteil bei der Verwendung der zweistufigen Programmierung ist, dass die Zellen in einem teilweise programmierten Zustand anfälliger für Programmstörungen und Lesestörungen sind, was die Fähigkeit beeinflusst, die entsprechende Spannung einer Zelle im feinkörnigen Programmierschritt zu lesen - was dazu führt, dass ein ungültiger logischer Zustand gespeichert wird. Fehler wie Ladungsverluste und Lese-/Programmierstörungen führen dazu, dass sich der logische Zustand der Zellen durch aus den Zellen austretende oder in die Zellen eintretende Elektronen ändert.
  • Offene Zonen, wie vorstehend in 3B beschrieben, sind anfällig für Fehler durch Lesestörungen, durch das zweistufige Programmiermodell und/oder durch andere physische Eigenschaften des Mediums, was dazu führen kann, dass die Speichervorrichtung 300 zum Aufrechterhalten der Zuverlässigkeit einen Satz von Löschblöcken zurückstellen oder auffüllen muss, um solche Fehler zu kompensieren. Offene Zonen, in denen Fehler auftreten, können dazu führen, dass eine Zone von der Steuerung 308 vorzeitig in den vollen Zustand überführt wird, wodurch die Anzahl der Schreibvorgänge auf das Medium reduziert wird. In solchen Fällen hat die Hostvorrichtung keine Gelegenheit, die Zone 306 mit Benutzerdaten zu füllen, was zu einer Verschwendung von Schreibkapazität führt.
  • Die ZNS 302 verwendende Speichervorrichtung 300 kann jedoch mit der Hostvorrichtung zusammenwirken, sodass die Hostvorrichtung Kenntnis über bald abzuschließende Zonen oder von der Steuerung abgeschlossene Zonen haben kann, was ermöglicht, dass die Hostvorrichtung frühzeitig informiert wird und Daten, falls erforderlich, in die offene Zone platzieren kann. Um die Zusammenarbeit zwischen der Speichervorrichtung 300 und der Hostvorrichtung zu ermöglichen, werden zwei neue Attribute oder Felder zu den Zonenmetadaten hinzugefügt, die auf einer offenen Zone ausgeführt werden sollen: „Empfehlung zum Überführen der Zone zu Voll“ und „Durch Steuerung zum vollen Zustand überführt“. Die Steuerung 308 kann die Hostvorrichtung darüber informieren, dass die Speichervorrichtung 300 beabsichtigt, eine offene Zone in den vollen Zustand zu überführen, und später, falls der Host nicht antwortet, eine offene Zone autonom in den vollen Zustand überführen. Zum Beispiel können die Steuerung 308 und/oder die ZM der Speichervorrichtung 300 die offene Zone nach einer vorbestimmten Zeitdauer autonom überführen, wenn die Hostvorrichtung die offene Zone nicht in den vollen Zustand überführt. Wenn die Steuerung 308 den Wechsel initiiert, wird das Attribut „Durch Steuerung zum vollen Zustand überführt“ aktualisiert.
  • Die Attribute „Empfehlung zum Überführen der Zone zu Voll“ und „Durch Steuerung zum vollen Zustand überführt“ können jederzeit aktualisiert werden, während sich eine Zone im offenen Zustand befindet, und als solches nutzt die Speichervorrichtung 300 Benachrichtigungen über das Framework für asynchrone Ereignisbenachrichtigungen in der NVM Express-Spezifikation. Immer wenn die Werte oder Attribute von „Empfehlung zum Überführen der Zone zu Voll“ und „Durch Steuerung zum vollen Zustand überführt“ aktualisiert werden, kann die Speichervorrichtung 300 ein Ereignis ausgeben, das die Hostvorrichtung darüber informiert, dass sich die Zonenmetadaten geändert haben. Die Hostvorrichtung sollte dann eine Liste von Änderungen abrufen und alle Abschwächungsmaßnahmen durchführen, welche die Hostvorrichtung für notwendig hält.
  • In ähnlicher Weise müssen volle Zonen, wie vorstehend in 3B beschrieben, an irgendeinem Punkt aufgrund von Lesestörungen und Ladungslecks neu geschrieben werden. Wenn eine volle Zone neu geschrieben werden muss, sind aus Sicht der Speichervorrichtung 300 alle Daten gültig. Üblicherweise müsste die Speichervorrichtung 300 alle Daten aus den Löschblöcken lesen, welche die bestimmte volle Zone (z. B. die erste Zone 306a) unterstützen, und die Daten in einen neuen Satz von Löschblöcken in einer anderen Zone (z. B. der zweiten Zone 306b) umschreiben, während der volle Zustand der Zone (z. B. der ersten Zone 306a) für die Hostvorrichtung aufrechterhalten wird. Da das Umschreiben von vollen Zonen ein arbeitsaufwendiger Vorgang ist, kann die Hostvorrichtung darüber informiert werden, wenn eine volle Zone umgeschrieben werden muss, und Maßnahmen ergreifen.
  • Das Attribut oder Feld „Zurücksetzen der vollen Zone erwartet“ wird zu den Zonenmetadaten hinzugefügt, um die Hostvorrichtung darauf aufmerksam zu machen, dass eine volle Zone zurückgesetzt werden sollte. Die Steuerung 308 kann das Attribut oder Bit „Zurücksetzen der vollen Zone erwartet“ setzen, um die Hostvorrichtung darüber zu informieren, dass sie der Hostvorrichtung empfiehlt, die Daten umzuschreiben oder die volle Zone autonom zurückzusetzen, wenn die Daten für die Hostvorrichtung nicht mehr gültig sind. Von daher können die Speichervorrichtung 300 und die Hostvorrichtung bei dem herkömmlichen Speicherbereinigungsprozess zusammenwirken, wodurch unnötige Neuschreibvorgänge eliminiert werden und die Gesamtleistung der Speichervorrichtung 300 verbessert wird.
  • Wenn die Hostvorrichtung die volle Zone nicht zurücksetzt (z. B. weil die Daten nicht benötigt werden oder weil sie an anderer Stelle umgeschrieben wurden), kann die Speichervorrichtung 300 die Daten intern aktualisieren oder zurücksetzen und das Attribut „Zurücksetzen der vollen Zone erwartet“ aktualisieren, sodass die Hostvorrichtung darüber informiert wird, dass sie nicht mehr versuchen sollte, die Daten zu aktualisieren oder zurückzusetzen. Zum Beispiel kann die Steuerung 308 der Speichervorrichtung 300 die volle Zone nach einer vorbestimmten Zeitdauer zurücksetzen, wenn die Hostvorrichtung die Daten nicht umschreibt. Da das Zurücksetzen oder Umschreiben einer Zone weniger als eine Sekunde dauert, ist es unwahrscheinlich, dass zwischen der Speichervorrichtung und der Hostvorrichtung, die gleichzeitig Daten aus einer Zone verschiebt, eine Wettlaufsituation besteht.
  • Darüber hinaus führt der ZNS 302 eine strenge Schreibreihenfolge ein, die bewirken kann, dass die Host-Schreibvorgänge zu einzelnen Schreib-E/A pro Zone 306 degenerieren. Von daher müssen Schreibvorgänge in eine Zone 306 sequentiell erfolgen, und das Umschreiben einer Zone 306 erfordert, dass die Zone 306 zuerst zurückgesetzt wird. Das Ausgeben von E/A, die nicht der strengen Schreibreihenfolge entsprechen, führt zu E/A-Fehlern der Steuerung.
  • Wenn eine ZNS 302 verwendende Speichervorrichtung 300 einen Schreibfehler an die Hostvorrichtung zurückgibt, befinden sich die zurückgegebenen Fehler innerhalb einer einzigen Zone. Somit ist der Strahlradius begrenzt, und daher wird ein E/A-Fehler nicht als schwerwiegend angesehen. Der ZNS 302 erlaubt die Rückgabe von E/A-Fehlern bei Schreibvorgängen, und das Speichergerät nimmt eine informierte Nutzung der E/A-Fehler vor. Auftretende Fehler können in den Zonenmetadaten aufgezeichnet werden. Von daher stellen die Fehler der Speichervorrichtung 300 zusätzliche Informationen bereit, welche die Speichervorrichtung 300 an die Hostvorrichtung weitergeben kann. Die Hostvorrichtung kann die Zonenmetadaten lesen, um zu bestimmen, warum der Fehler aufgetreten ist sowie die Ursache des Fehlers, und um genau zu bestimmen, welche Löschblöcke oder NAND-Stellen von dem Fehler betroffen waren. Die Hostvorrichtung weiß dann, dass auf die Speicherung von Daten an den Stellen, an denen der Fehler aufgetreten ist, zu verzichten ist.
  • Wenn zum Beispiel die Speichervorrichtung 300 beim Schreiben in eine LBA in einer Zone 306 einen Fehler oder Programmausfall erfährt, kann der Schreibzeiger eine oder mehrere LBAs überspringen, um zur nächsten gültigen LBA überzugehen, die zum Speichern von Daten verfügbar ist. Die Hostvorrichtung kann dann die Zonenmetadaten lesen, um zu bestimmen, wie viele LBAs übersprungen wurden, um mit der Speichervorrichtung 300 neu synchronisiert zu werden, und mit dem Schreiben von Daten bei der nächsten gültigen LBA beginnen, die durch den Schreibzeiger angezeigt wird. Statt dass die Speichervorrichtung 300 den Fehler vor der Hostvorrichtung maskiert und den Fehler im Backend verwaltet, kann die Speichervorrichtung 300 somit die Hostvorrichtung darauf hinweisen, keine Daten in einem oder mehreren LBAs zu speichern, bei denen ein Fehler oder ein Programmfehler aufgetreten ist. Daher kennt die Hostvorrichtung immer die Stelle, an der die Daten gespeichert sind.
  • In einem anderen Beispiel kann die Speichervorrichtung 300, wenn bei der Speichervorrichtung 300 beim Schreiben auf eine LBA in einer Zone ein Fehler oder Programmfehler auftritt, bestimmen, dass die gesamte Zone 306 zum Speichern von Daten ungeeignet ist. Wenn eine offene Zone 306 nicht mehr zum Speichern von Daten geeignet ist, kann die Speichervorrichtung 300 die ungeeignete Zone 306 in den vollen Zustand überführen und das Attribut „Durch Steuerung zum vollen Zustand überführt“ in den Zonenmetadaten aktualisieren, um die Hostvorrichtung darauf hinzuweisen, dass die Zone 306 in den vollen Zustand überführt wurde. Die Hostvorrichtung weiß dann, dass die überführte Zone 306 zum Speichern von Daten nicht zur Verfügung steht und kann Daten nach Wahl der Hostvorrichtung in eine neue Zone 306 schreiben.
  • Durch die informierte Nutzung von E/A-Fehlern oder Programmfehlern arbeiten die Hostvorrichtung und die Speichervorrichtung 300 bei der Datenplatzierung zusammen und die Hostvorrichtung ist in der Lage, Daten, welche die gleiche Temperatur aufweisen, so auszurichten, dass sie zusammenbleiben, wodurch arbeitsaufwendige Speicherbereinigungsroutinen, wie sie in herkömmlichen SSDs zu finden sind, eliminiert werden und der Schreibverstärkungsfaktor der Vorrichtung reduziert wird. Darüber hinaus kann die Speichervorrichtung 300 die Hostvorrichtung darauf hinweisen, entweder keine Daten in der einen oder den mehreren LBAs zu speichern, bei denen ein Fehler oder ein Programmfehler aufgetreten ist, oder dass eine offene Zone in den vollen Zustand überführt wurde und nicht mehr zum Speichern von Daten verwendet werden kann. Daher ist der Hostvorrichtung ständig bekannt, an welcher Stelle die Daten gespeichert sind.
  • Darüber hinaus können durch das Verwenden von Attributen in den Zonenmetadaten, um die Hostvorrichtung über das Geschehen auf der Laufwerksseite zu informieren, sowohl der vorrichtungsseitige Schreibverstärkungsfaktor als auch die Überversorgung eines zur Verbesserung der Speicherbereinigung vorgesehenen Laufwerks eliminiert werden, wodurch die zu verwendende Speicherkapazität für die Hostvorrichtung erhöht wird. Zusätzlich können die Speichervorrichtung und die Hostvorrichtung mit dem herkömmlichen Speicherbereinigungsprozess zusammenwirken, wodurch unnötige Neuschreibvorgänge eliminiert werden und die Gesamtleistung der Speichervorrichtung verbessert wird.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist zum Aktualisieren von Zonenmetadaten, um einer Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen der Vielzahl von Zonen zurückzusetzen, zum Aktualisieren von Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen der Vielzahl von Zonen in einen vollen Zustand zu überführen, zum Überführen einer oder mehreren offenen Zonen in den vollen Zustand und zum Aktualisieren von Zonenmetadaten, um die Hostvorrichtung darauf hinzuweisen, dass die eine oder mehreren offenen Zonen in den vollen Zustand überführt wurden.
  • Die Steuerung ist eingerichtet zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten geändert haben, wenn in den Zonenmetadaten ein Attribut „Zurücksetzen der vollen Zone erwartet“, „Empfehlung zum Überführen der Zone zu Voll“ oder „Durch Steuerung zum vollen Zustand überführt“ aktualisiert wurde. Die Zonenmetadaten werden mit einem Attribut „Zurücksetzen der vollen Zone erwartet“ aktualisiert, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren vollen Zonen zurückzusetzen. Die Zonenmetadaten werden mit einem Attribut „Empfehlung zum Überführen der Zone zu Voll“ aktualisiert, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren offenen Zonen in den vollen Zustand zu überführen. Die Zonenmetadaten werden mit dem Attribut „Durch Steuerung zum vollen Zustand überführt“ aktualisiert, um die Hostvorrichtung darauf hinzuweisen, dass die eine oder die mehreren offenen Zonen in den vollen Zustand überführt wurden. Die Steuerung ist weiterhin eingerichtet zum autonomen Zurücksetzen der einen oder der mehreren vollen Zonen, wenn die in der einen oder den mehreren vollen Zonen gespeicherten Daten nicht mehr gültig sind. Die Steuerung ist weiterhin eingerichtet zum Aktualisieren der Zonenmetadaten, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren vollen Zonen zurückzusetzen, wenn die eine oder die mehreren vollen Zonen von Lesestörungen oder Ladungslecks betroffen sind, und zum Aktualisieren der Zonenmetadaten, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren offenen Zonen in den vollen Zustand zu überführen, wenn bestimmt wird, dass die eine oder die mehreren Zonen zum Speichern von Daten ungeeignet sind.
  • In einer anderen Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist zum Bestimmen einer beschreibbaren Zonenkapazität jeder der Vielzahl von Zonen, wobei die beschreibbare Zonenkapazität gleich oder kleiner ist als eine Gesamtzonenspeicherkapazität jeder Zone, wobei die beschreibbare Kapazität jeder Zone mit einer Kapazität eines oder mehrerer Löschblöcke abgestimmt ist, und zum Aktualisieren von Zonenmetadaten, um eine Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen zu benachrichtigen.
  • Die Steuerung aktualisiert ein Attribut „Beschreibbare ZCAP“ in den Zonenmetadaten, um die Hostvorrichtung über die beschreibbare Zonenkapazität zu benachrichtigen. Die beschreibbare Zonenkapazität der mindestens einen Zone ist kleiner als die Gesamtzonenspeicherkapazität der mindestens einen Zone. Wobei die mindestens eine Zone, die eine beschreibbare Zonenkapazität aufweist, die kleiner ist als die Gesamtzonenspeicherkapazität, einen lesbaren Abschnitt aufweist, auf den zum Schreiben von Daten nicht zugegriffen werden kann. Der lesbare Abschnitt der mindestens einen Zone speichert XOR-Daten. Die Steuerung ist eingerichtet, um beim Zurücksetzen von Zonen die beschreibbare Zonenkapazität jeder Zone zu bestimmen. Die Steuerung ist eingerichtet zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten beim Aktualisieren eines Attributs „Beschreibbare ZCAP“ in den Zonenmetadaten geändert haben.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Medieneinheit auf. Eine Kapazität der Medieneinheit ist in eine Vielzahl von Zonen unterteilt. Die Medieneinheit weist eine Vielzahl von Dies auf, wobei jeder der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist. Die Speichervorrichtung weist weiterhin eine Steuerung auf, die mit der Medieneinheit gekoppelt ist, wobei die Steuerung eingerichtet ist, um einen Schreibbefehl zum Schreiben von Daten in eine oder mehrere erste logische Blockadressen in einer ersten Zone der Vielzahl von Zonen zu empfangen, um beim Auftreten eines Fehlers während des Schreibens der Daten in die eine oder die mehreren ersten logischen Blockadressen in der ersten Zone einen Schreibzeiger der ersten Zone so zu aktualisieren, dass er auf eine nächste gültige logische Blockadresse in der ersten Zone zeigt; und Zonenmetadaten zu aktualisieren, um anzuzeigen, dass die eine oder die mehreren ersten logischen Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern der Daten in der ersten Zone verfügbar ist.
  • Die Medieneinheit ist eine nichtflüchtige Speichervorrichtung. Durch das Aktualisieren der Zonenmetadaten, um anzuzeigen, dass eine oder mehrere erste logische Blockadressen übersprungen wurden, wird eine Hostvorrichtung darauf hingewiesen, dass die eine oder die mehreren ersten logischen Blockadressen keine Daten speichern können. Wenn beim Schreiben von Daten in eine oder mehrere zweite logische Blockadressen in einer zweiten Zone ein Fehler auftritt, ist die Steuerung eingerichtet, um zu bestimmen, dass die zweite Zone zum Speichern der Daten ungeeignet ist. Die Steuerung ist weiterhin eingerichtet zum Überführen der zweiten Zone in einen vollen Zustand und zum Aktualisieren der Zonenmetadaten, um eine Hostvorrichtung darauf aufmerksam zu machen, dass die zweite Zone in den vollen Zustand überführt wurde. Die Zonenmetadaten werden mit dem Attribut „Durch Steuerung zum vollen Zustand überführt“ aktualisiert, um die Hostvorrichtung darauf hinzuweisen, dass die zweite Zone in den vollen Zustand überführt wurde. Die Steuerung ist weiterhin eingerichtet zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten beim Aktualisieren der Zonenmetadaten mit dem Attribut „Durch Steuerung zum vollen Zustand überführt“ geändert haben.
  • 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/72891727 [0001]
    • US 62/905894 [0001]

Claims (20)

  1. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist und wobei die Medieneinheit eine Vielzahl von Dies aufweist, wobei jede der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Aktualisieren von Zonenmetadaten, um einer Hostvorrichtung zu empfehlen, eine oder mehrere volle Zonen der Vielzahl von Zonen zurückzusetzen; Aktualisieren der Zonenmetadaten, um der Hostvorrichtung zu empfehlen, eine oder mehrere offene Zonen der Vielzahl von Zonen in einen vollen Zustand zu überführen; Überführen der einen oder der mehreren offenen Zonen in den vollen Zustand; und Aktualisieren der Zonenmetadaten, um die Hostvorrichtung darauf hinzuweisen, dass die eine oder die mehreren offenen Zonen in den vollen Zustand überführt wurden.
  2. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung eingerichtet ist zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten geändert haben, wenn in den Zonenmetadaten ein Attribut „Zurücksetzen der vollen Zone erwartet“, „Empfehlung zum Überführen der Zone zu Voll“ oder „Durch Steuerung zum vollen Zustand überführt“ aktualisiert wurde.
  3. Speichervorrichtung gemäß Anspruch 1, wobei die Zonenmetadaten mit einem Attribut „Zurücksetzen der vollen Zone erwartet“ aktualisiert werden, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren vollen Zonen zurückzusetzen.
  4. Speichervorrichtung gemäß Anspruch 1, wobei die Zonenmetadaten mit einem Attribut „Empfehlung zum Überführen der Zone zu Voll“ aktualisiert werden, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren offenen Zonen in den vollen Zustand zu überführen.
  5. Speichervorrichtung gemäß Anspruch 1, wobei die Zonenmetadaten mit einem Attribut „Durch Steuerung zum vollen Zustand überführt“ aktualisiert werden, um die Hostvorrichtung darauf hinzuweisen, dass die eine oder die mehreren offenen Zonen in den vollen Zustand überführt wurden.
  6. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist zum autonomen Zurücksetzen der einen oder der mehreren vollen Zonen, wenn die in der einen oder den mehreren vollen Zonen gespeicherten Daten nicht mehr gültig sind.
  7. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist zum: Aktualisieren der Zonenmetadaten, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren vollen Zonen zurückzusetzen, wenn die eine oder die mehreren vollen Zonen von Lesestörungen oder Ladungslecks betroffen sind; und Aktualisieren der Zonenmetadaten, um der Hostvorrichtung zu empfehlen, die eine oder die mehreren offenen Zonen in den vollen Zustand zu überführen, nachdem bestimmt wurde, dass die eine oder die mehreren Zonen zum Speichern von Daten ungeeignet sind.
  8. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist und wobei die Medieneinheit eine Vielzahl von Dies aufweist, wobei jede der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Bestimmen einer beschreibbaren Zonenkapazität jeder der Vielzahl von Zonen, wobei die beschreibbare Zonenkapazität gleich oder kleiner ist als eine Gesamtzonenspeicherkapazität jeder Zone, wobei die beschreibbare Kapazität jeder Zone mit einer Kapazität eines oder mehrerer Löschblöcke abgestimmt ist; und Aktualisieren von Zonenmetadaten, um eine Hostvorrichtung über die beschreibbare Zonenkapazität jeder der Vielzahl von Zonen zu benachrichtigen.
  9. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung ein Attribut „Beschreibbare ZCAP“ in den Zonenmetadaten aktualisiert, um die Hostvorrichtung über die beschreibbare Zonenkapazität zu benachrichtigen.
  10. Speichervorrichtung gemäß Anspruch 8, wobei die beschreibbare Zonenkapazität von mindestens einer Zone kleiner ist als die Gesamtzonenspeicherkapazität der mindestens einen Zone und wobei die mindestens eine Zone, die eine beschreibbare Zonenkapazität aufweist, die kleiner ist als die Gesamtzonenspeicherkapazität, einen lesbaren Abschnitt aufweist, auf den zum Schreiben von Daten nicht zugegriffen werden kann.
  11. Speichervorrichtung gemäß Anspruch 10, wobei der lesbare Abschnitt der mindestens einen Zone XOR-Daten speichert.
  12. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung eingerichtet ist, um beim Zurücksetzen von Zonen die beschreibbare Zonenkapazität jeder Zone zu bestimmen.
  13. Speichervorrichtung gemäß Anspruch 8, wobei die Steuerung eingerichtet ist zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten beim Aktualisieren eines Attributs „Beschreibbare ZCAP“ in den Zonenmetadaten geändert haben.
  14. Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist und wobei die Medieneinheit eine Vielzahl von Dies aufweist, wobei jede der Vielzahl von Dies eine Vielzahl von Löschblöcken aufweist; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Empfangen eines Schreibbefehls zum Schreiben von Daten in eine oder mehrere erste logische Blockadressen in einer ersten Zone der Vielzahl von Zonen; Aktualisieren eines Schreibzeigers der ersten Zone, um auf eine nächste gültige logische Blockadresse in der ersten Zone zu zeigen, wenn ein Fehler beim Schreiben der Daten in die eine oder die mehreren ersten logischen Blockadressen in der ersten Zone aufgetreten ist; und Aktualisieren von Zonenmetadaten, um anzuzeigen, dass die eine oder die mehreren ersten logischen Blockadressen übersprungen wurden, und um anzuzeigen, dass die nächste gültige logische Blockadresse zum Speichern der Daten in der ersten Zone verfügbar ist.
  15. Speichervorrichtung gemäß Anspruch 14, wobei die Medieneinheit eine nichtflüchtige Speichervorrichtung ist.
  16. Speichervorrichtung gemäß Anspruch 14, wobei das Aktualisieren der Zonenmetadaten, um anzuzeigen, dass die eine oder die mehreren ersten logischen Blockadressen übersprungen wurden, eine Hostvorrichtung darauf hinweist, dass die eine oder die mehreren ersten logischen Blockadressen keine Daten speichern können.
  17. Speichervorrichtung gemäß Anspruch 14, wobei bei Auftreten eines Fehlers beim Schreiben von Daten in eine oder mehrere zweite logische Blockadressen in einer zweiten Zone die Steuerung eingerichtet ist, um zu bestimmen, dass die zweite Zone zum Speichern der Daten ungeeignet ist.
  18. Speichervorrichtung gemäß Anspruch 17, wobei die Steuerung weiterhin eingerichtet ist zum: Überführen der zweiten Zone in einen vollen Zustand; und Aktualisieren der Zonenmetadaten, um eine Hostvorrichtung darauf hinzuweisen, dass die zweite Zone in den vollen Zustand überführt wurde.
  19. Speichervorrichtung gemäß Anspruch 18, wobei die Zonenmetadaten mit einem Attribut „Durch Steuerung zum vollen Zustand überführt“ aktualisiert werden, um die Hostvorrichtung darauf hinzuweisen, dass die zweite Zone in den vollen Zustand überführt wurde.
  20. Speichervorrichtung gemäß Anspruch 19, wobei die Steuerung weiterhin eingerichtet ist zum Ausgeben eines Ereignisses, um die Hostvorrichtung darüber zu informieren, dass sich die Zonenmetadaten beim Aktualisieren der Zonenmetadaten mit dem Attribut „Durch Steuerung zum vollen Zustand überführt“ geändert haben.
DE112020000184.9T 2019-09-25 2020-03-18 In zonen unterteilte namensräume in festkörperlaufwerken Pending DE112020000184T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962905894P 2019-09-25 2019-09-25
US62/905,894 2019-09-25
US16/728,917 2019-12-27
US16/728,917 US11209989B2 (en) 2019-09-25 2019-12-27 Zoned namespaces in solid-state drives
PCT/US2020/023413 WO2021061190A1 (en) 2019-09-25 2020-03-18 Zoned namespaces in solid-state drives

Publications (1)

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

Family

ID=74880857

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000184.9T Pending DE112020000184T5 (de) 2019-09-25 2020-03-18 In zonen unterteilte namensräume in festkörperlaufwerken

Country Status (5)

Country Link
US (2) US11209989B2 (de)
KR (1) KR102580577B1 (de)
CN (1) CN113196226A (de)
DE (1) DE112020000184T5 (de)
WO (1) WO2021061190A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210286517A1 (en) * 2016-10-04 2021-09-16 Pure Storage, Inc. Utilizing Allocation Shares To Improve Parallelism In A Zoned Drive Storage System
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
US11593258B2 (en) * 2019-11-26 2023-02-28 Micron Technology, Inc. Enhanced filesystem support for zone namespace memory
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11860791B2 (en) * 2020-04-24 2024-01-02 Netapp, Inc. Methods for managing input-output operations in zone translation layer architecture and devices thereof
US11137920B1 (en) * 2020-04-30 2021-10-05 Micron Technology, Inc. Storing zones in a zone namespace on separate planes of a multi-plane memory device
KR20220060372A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11604591B2 (en) * 2020-12-17 2023-03-14 Micron Technology, Inc. Associating data types with stream identifiers for mapping onto sequentially-written memory devices
US20220244869A1 (en) * 2021-02-02 2022-08-04 Micron Technology, Inc. File system storage allocation based on zones of a memory device
US11733884B2 (en) 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11520656B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery due to storage device failure
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction due to storage device failure
US11307931B1 (en) * 2021-03-19 2022-04-19 Micron Technology, Inc. Using zones to manage capacity reduction due to storage device failure
US11650881B2 (en) 2021-03-19 2023-05-16 Micron Technology, Inc. Managing storage reduction and reuse in the presence of storage device failures
US11816345B2 (en) * 2021-03-29 2023-11-14 Micron Technology, Inc. Zone block staging component for a memory subsystem with zoned namespace
US11733895B2 (en) 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11543993B1 (en) 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US20230009642A1 (en) * 2021-07-07 2023-01-12 Micron Technology, Inc. Programmable metadata
US11748195B2 (en) * 2022-01-05 2023-09-05 International Business Machines Corporation Detect multifold disturbance and minimize read-disturb errors in NAND flash
US11853612B2 (en) * 2022-04-06 2023-12-26 Western Digital Technologies, Inc. Controlled system management based on storage device thermal load
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI472916B (zh) * 2008-06-02 2015-02-11 A Data Technology Co Ltd 記憶體儲存空間管理方法
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8537669B2 (en) 2010-04-27 2013-09-17 Hewlett-Packard Development Company, L.P. Priority queue level optimization for a network flow
US8670310B2 (en) 2010-12-21 2014-03-11 Hewlett-Packard Development Company, L.P. Dynamic balancing priority queue assignments for quality-of-service network flows
KR101925870B1 (ko) 2012-03-21 2018-12-06 삼성전자주식회사 Ssd 콘트롤러 및 그의 제어 방법
US9830111B1 (en) * 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US8848577B2 (en) 2012-09-24 2014-09-30 Apple Inc. Bandwidth management
US20140169102A1 (en) * 2012-12-19 2014-06-19 Western Digital Technologies, Inc. Log-likelihood ratio and lumped log-likelihood ratio generation for data storage systems
US9792349B2 (en) * 2013-06-12 2017-10-17 Oracle International Corporation In-database sharded queue
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US10417190B1 (en) * 2014-09-25 2019-09-17 Amazon Technologies, Inc. Log-structured file system for zone block devices with small zones
US9710199B2 (en) * 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US20170038994A1 (en) * 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Storage device and data reading method
US10732856B2 (en) * 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10339044B2 (en) * 2016-03-30 2019-07-02 Sandisk Technologies Llc Method and system for blending data reclamation and data integrity garbage collection
KR102227643B1 (ko) * 2016-09-28 2021-03-15 한국전자기술연구원 오케스트레이션 기반 최적 스토리지 할당을 위한 예측형 후보군 선정 방법
US10209897B2 (en) * 2016-12-01 2019-02-19 Toshiba Memory Corporation Storage device and control method of the same
US10095568B2 (en) 2017-02-08 2018-10-09 Seagate Technology Llc Background reads to condition programmed semiconductor memory cells
US11941279B2 (en) * 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US10474582B2 (en) * 2017-04-28 2019-11-12 Seagate Technology Llc NAND flash storage device and methods using non-NAND storage cache
US10430356B2 (en) 2017-04-28 2019-10-01 Nvidia Corporation Low overhead copy engine fault and switch mechanism
KR20180130140A (ko) 2017-05-29 2018-12-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 방법
US10564857B2 (en) 2017-11-13 2020-02-18 Western Digital Technologies, Inc. System and method for QoS over NVMe virtualization platform using adaptive command fetching
US10430106B2 (en) 2018-02-16 2019-10-01 Microsoft Technology Licensing, Llc Policy based tiered allocation for hybrid storage devices
US10996894B2 (en) * 2019-07-17 2021-05-04 International Business Machines Corporation Application storage segmentation reallocation
US10990526B1 (en) * 2020-04-30 2021-04-27 Micron Technology, Inc. Handling asynchronous power loss in a memory sub-system that programs sequentially
US11327684B2 (en) * 2020-05-14 2022-05-10 Western Digital Technologies, Inc. Storage system and method for host memory access

Also Published As

Publication number Publication date
US20210089217A1 (en) 2021-03-25
US20220100390A1 (en) 2022-03-31
CN113196226A (zh) 2021-07-30
KR20210079394A (ko) 2021-06-29
US11209989B2 (en) 2021-12-28
KR102580577B1 (ko) 2023-09-19
WO2021061190A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102021115893A1 (de) EFFIZIENTE DATENSPEICHERUNGSNUTZUNG IM ZUSAMMENHANG MIT EINEM NICHT ORDNUNGSGEMÄßEN HERUNTERFAHREN
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung

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