DE102021115374A1 - Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus - Google Patents

Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus Download PDF

Info

Publication number
DE102021115374A1
DE102021115374A1 DE102021115374.3A DE102021115374A DE102021115374A1 DE 102021115374 A1 DE102021115374 A1 DE 102021115374A1 DE 102021115374 A DE102021115374 A DE 102021115374A DE 102021115374 A1 DE102021115374 A1 DE 102021115374A1
Authority
DE
Germany
Prior art keywords
blocks
sub
zones
data
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021115374.3A
Other languages
English (en)
Inventor
Rakshit Tikoo
Adarsh Sreedhar
Lovleen Arora
Niraj Srimal
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 DE102021115374A1 publication Critical patent/DE102021115374A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

Gesichtspunkte einer Speicherungsvorrichtung, die einen Speicher und eine Steuerung einschließt, werden bereitgestellt, die eine Speicherbereinigung in Architekturen des in Zonen unterteilten Namensraums (ZNS) durch Abbilden von Zonen auf Unterblöcke von Blöcken des Speichers reduziert oder eliminiert. Jede Zone schließt eine Vielzahl von logischen Adressen ein. Die Steuerung bestimmt eine Anzahl offener Zonen und bildet die offenen Zonen als Reaktion darauf, dass die Anzahl offener Zonen einen Schwellenwert erreicht, auf die Unterblöcke ab. Somit können größere Anzahlen von offenen Blöcken, die in der Regel im ZNS vorhanden sind, reduziert werden, und erhöhte Blockgrößen aufgrund von Skalierung können im ZNS untergebracht werden. In einigen Gesichtspunkten empfängt die Steuerung eine Anforderung von einer Hostvorrichtung zum Schreiben von Daten, die den Zonen in Unterblöcken zugeordnet sind, und bildet jede der Zonen als Reaktion auf die Anforderung auf mindestens einen der Unterblöcke ab. Die Anforderung kann anzeigen, dass Zonen teilweise ungenutzt sind. Somit können auch Außerzonenzustände vermieden werden.

Description

  • HINTERGRUND
  • Rückverweisung auf verwandte Anmeldungen
  • Diese Anmeldung beansprucht den Vorteil und das Prioritätsrecht der vorläufigen US-Patentanmeldung Nr. 63/074.936 mit dem Titel „Zoned Namespace Limitation Mitigation Using Sub Block Mode“, eingereicht am 4. September 2020, deren gesamter Inhalt durch Bezugnahme hierin eingeschlossen ist, als ob sie hierin vollständig dargelegt wäre.
  • Gebiet
  • Diese Offenbarung bezieht sich im Allgemeinen auf elektronische Vorrichtungen und insbesondere auf Speicherungsvorrichtungen.
  • Hintergrund
  • Speicherungsvorrichtungen ermöglichen es Benutzern, Daten zu speichern und abzurufen. Beispiele von Speicherungsvorrichtungen schließen Vorrichtungen für nicht-flüchtige Speichervorrichtungen ein. Ein nicht-flüchtiger Speicher behält Daten im Allgemeinen nach einem Leistungszyklus bei. Ein Beispiel eines nicht-flüchtigen Speichers ist ein Flash-Speicher, der (eine) Anordnung(en) von NAND-Zellen auf einem oder mehreren Chips einschließen kann. Flash-Speicher kann in Festkörpervorrichtungen (SSDs), Secure Digital-Karten (SD-Karten) und dergleichen zu finden sein.
  • Eine Flash-Speicherungsvorrichtung kann Steuerinformationen speichern, die Daten zugeordnet sind. Zum Beispiel kann eine Flash-Speicherungsvorrichtung Steuertabellen unterhalten, die eine Abbildung von logischen Adressen auf physische Adressen einschließen. Diese Steuertabellen werden verwendet, um den physischen Ort von logischen Sektoren oder Blöcken in dem Flash-Speicher zu verfolgen. Die Steuertabellen sind in dem nicht-flüchtigen Speicher gespeichert, um einen Zugriff auf die gespeicherten Daten nach einem Leistungszyklus zu ermöglichen.
  • Ein in Zonen unterteilter Namensraum (Zoned Namespace ZNS) ist eine SSD-Namensraumarchitektur, in welcher der nicht-flüchtige Speicher in Gruppen fester Größe logischer Adressen oder Zonen unterteilt ist. Jede Zone wird für eine bestimmte Anwendung verwendet. Zum Beispiel kann der Host Daten, die verschiedenen Anwendungen zugeordnet sind, in verschiedene Zonen schreiben. Zonen werden über einen einzelnen Chip verteilt, wobei jede Zone im Allgemeinen 48 MB oder 64 MB der Größe überspannt. Die Flash-Speicherungsvorrichtung ist mit dem Host verbunden, um die definierten Zonen zu erhalten, und sie bildet die Zonen auf Blöcke im Flash-Speicher ab. Somit kann der Host separate anwendungsbezogene Daten in separate Blöcke des Flash-Speichers schreiben.
  • Herkömmlicherweise können Daten in einer Flash-Speicherungsvorrichtung in kleinen Blöcken (z. B. 4 KB von Daten) ungültig gemacht werden, zum Beispiel wenn ein Host die Daten überschreibt. Um die ungültig gemachten Daten aus dem Flash-Speicher zu entfernen, führt die Flash-Speicherungsvorrichtung einen Speicherbereinigungsprozess (GC-Prozess) durch, in dem gültige Daten in einen neuen Block kopiert werden können und die ungültig gemachten Daten aus dem alten Block gelöscht werden. Im ZNS wird jedoch eine Zone sequentiell geschrieben, bevor die Daten in der Zone ungültig gemacht werden, und somit kann die gesamte Zone auf einmal ungültig gemacht werden (z. B. 48 oder 64 MB von Daten). Dieses Merkmal vom ZNS reduziert oder eliminiert GC, was wiederum Schreibverstärkung (WA) reduziert. Infolgedessen kann ZNS die Lebensdauer der Flash-Speicherungsvorrichtung optimieren sowie die Konsistenz von Eingabe/Ausgabe- (I/O) Befehlslatenzen verbessern.
  • KURZDARSTELLUNG
  • Ein Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher weist eine Vielzahl von Blöcken auf, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt. Die Steuerung ist eingerichtet, um eine Zone auf mindestens einen der Unterblöcke abzubilden, wobei die Zone eine Vielzahl von logischen Adressen einschließt.
  • Ein weiterer Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher weist eine Vielzahl von Blöcken auf, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt. Die Steuerung ist eingerichtet, um eine Anzahl offener Zonen zu bestimmen und die offenen Zonen als Reaktion darauf, dass die Anzahl offener Zonen einen Schwellenwert erreicht, auf die Unterblöcke abzubilden.
  • Ein weiterer Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher weist eine Vielzahl von Blöcken auf, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt. Die Steuerung ist eingerichtet, um eine Anforderung zum Schreiben von Daten, die Zonen in den Unterblöcken zugeordnet sind, zu empfangen und jede der Zonen als Reaktion auf die Anforderung auf mindestens einen der Unterblöcke abzubilden.
  • Es versteht sich, dass andere Gesichtspunkte der Speicherungsvorrichtung für den Fachmann aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Gesichtspunkte von Einrichtungen und Verfahren zur Veranschaulichung gezeigt und beschrieben werden. Wie zu erkennen ist, können diese Gesichtspunkte in anderen und unterschiedlichen Formen implementiert werden und sind ihre verschiedenen Details in verschiedenen anderen Hinsichten zu einer Modifikation fähig. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Figurenliste
  • Verschiedene Gesichtspunkte der vorliegenden Erfindung werden nun in der detaillierten Beschreibung als Beispiel und nicht als Einschränkung unter Bezugnahme auf die beigefügten Zeichnungen dargestellt, wobei gilt:
    • 1 ist ein Blockdiagramm, das eine beispielhafte Ausführungsform einer Speicherungsvorrichtung in Kommunikation mit einer Host-Vorrichtung veranschaulicht.
    • 2 ist ein Konzeptdiagramm, das ein Beispiel einer logisch-zu-physisch-Abbildungstabelle in einem nicht-flüchtigen Speicher der Speicherungsvorrichtung von 1 veranschaulicht.
    • 3 ist ein Konzeptdiagramm, das ein Beispiel einer Anordnung von Speicherzellen in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 4 ist ein Konzeptdiagramm, das ein Beispiel einer Anordnung von Blöcken in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 5 ist ein Konzeptdiagramm, das ein Beispiel eines Speicherbereinigungs- (GC) Prozesses darstellt, der in der Speicherungsvorrichtung von 1 implementiert werden kann.
    • 6 ist ein Konzeptdiagramm, das ein Beispiel einer Zuordnung von Zonen zu Gruppen logischer Adressen veranschaulicht, die von der Speicherungsvorrichtung von 1 empfangen werden.
    • 7 ist ein Konzeptdiagramm, das ein Beispiel einer Steuerung der Speicherungsvorrichtung von 1 veranschaulicht, die Daten auf Blöcke, die auf verschiedenen Zonen abgebildet sind, schreibt.
    • 8 ist ein Konzeptdiagramm, das ein Beispiel einer Steuerung der Speicherungsvorrichtung von 1 veranschaulicht, die Daten auf Unterblöcke, die auf verschiedenen Zonen abgebildet sind, schreibt.
    • 9 ist ein Konzeptdiagramm, das ein beispielhaftes Abbilden von Zonen auf Unterblöcken durch die Speicherungsvorrichtung von 1 veranschaulicht.
    • 10 ist ein Konzeptdiagramm, das ein weiteres beispielhaftes Abbilden von Zonen auf Unterblöcken durch die Steuerung in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 11 ist ein Konzeptdiagramm, das ein zusätzliches beispielhaftes Abbilden von Zone auf Unterblöcken durch die Steuerung in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 12 ist ein Flussdiagramm, das ein Verfahren zur Schreiben von Daten auf Zonen, die auf Unterblöcken abgebildet sind, wie von der Speicherungsvorrichtung von 1 durchgeführt, veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen ist als eine Beschreibung verschiedener beispielhafter Ausführungsformen der vorliegenden Offenbarung gedacht und soll nicht die einzigen Ausführungsformen darstellen, in denen die vorliegende Erfindung praktisch umgesetzt werden kann. Die detaillierte Beschreibung schließt spezifische Details ein, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Jedoch ist es für einen Fachmann ersichtlich, dass die vorliegende Erfindung ohne diese spezifischen Details praktisch umgesetzt werden kann. In einigen Fällen sind hinlänglich bekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Erfindung unklar werden. Akronyme und andere beschreibende Terminologie können lediglich der Einfachheit und Klarheit halber verwendet werden und sollen den Schutzumfang der Erfindung nicht einschränken.
  • Die Wörter „beispielhaft“ und „Beispiel“ werden hierin in der Bedeutung von „als ein Beispiel oder Fall oder zur Veranschaulichung dienend“ verwendet. Jede hierin als „beispielhaft“ beschriebene beispielhafte Ausführungsform ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen beispielhaften Ausführungsformen auszulegen. Gleichermaßen erfordert der Begriff „beispielhafte Ausführungsform“ einer Vorrichtung, eines Verfahrens oder eines Herstellungsartikels nicht, dass alle beispielhaften Ausführungsformen der Erfindung die beschriebene(n) Komponenten, Struktur, Merkmale, Funktionalität, Prozesse, Vorteile, Nutzen oder Betriebsmodi einschließen.
  • Unter dem Begriff „gekoppelt“ wird im Rahmen der vorliegenden Erfindung entweder eine direkte Verbindung zwischen zwei Komponenten oder gegebenenfalls eine indirekte Verbindung untereinander durch zwischengeschaltete oder dazwischen liegende Komponenten verstanden. Wenn dagegen eine Komponente als mit einer anderen Komponente „direkt gekoppelt“ bezeichnet wird, sind hingegen keine zwischengeschalteten Elemente vorhanden.
  • In der folgenden detaillierten Beschreibung werden verschiedene Gesichtspunkte einer Speicherungsvorrichtung in Kommunikation mit einer Host-Vorrichtung dargestellt. Diese Gesichtspunkte sind für Flash-Speicherungsvorrichtungen, wie SSDs und SD-Karten, gut geeignet. Jedoch wird der Fachmann erkennen, dass diese Gesichtspunkte auf alle Typen von Speicherungsvorrichtungen, die zum Speichern von Daten in der Lage sind, ausgedehnt werden können. Entsprechend soll jede Bezugnahme auf eine bestimmte Einrichtung oder ein bestimmtes Verfahren nur die verschiedenen Gesichtspunkte der vorliegenden Erfindung veranschaulichen, wobei davon ausgegangen wird, dass diese Gesichtspunkte einen weiten Bereich von Anwendungen aufweisen können, ohne vom Schutzumfang und Geist der vorliegenden Offenbarung abzuweichen.
  • Typischerweise stellt ein Host im ZNS einer Flash-Speicherungsvorrichtung eine Definition von Zonen oder Gruppen logischer Adressen bereit. Der Host kann beispielsweise angeben, dass eine Gruppe von LBAs, die 48 oder 64 MB Daten entsprechen, einer ersten Zone zugeordnet sind, dass eine andere Gruppe von LBAs, die weiteren 48 oder 64 MB Daten entsprechen, einer zweiten Zone zugeordnet sind, und so weiter. Die Flash-Speicherungsvorrichtung bildet dann jede Zone auf einen einzelnen Block in dem Flash-Speicher ab. Zum Beispiel kann die Flash-Speicherungsvorrichtung die LBAs, die der ersten Zone zugeordnet sind, auf einen ersten physischen Block, die LBAs, die der zweiten Zone zugeordnet sind, auf einen zweiten physischen Block usw. abbilden. Dieses Eins-zu-Eins-Abbilden jeder Zone zu einem Block ermöglicht die Reduzierung oder Eliminierung von GC, indem die Zonen effektiv unabhängig gemacht werden. Zum Beispiel kann der Host nach dem sequentiellen Schreiben von Daten in einen Block, der auf eine Zone abgebildet ist, diese Zone ungültig machen, indem er die Flash-Speicherungsvorrichtung anweist, nur diesen Block zu löschen, ohne die Daten in anderen Zonen/Blöcken zu beeinflussen.
  • Durch dieses Zone-zu-Block-Abbilden kann jedoch ZNS zu einer großen Anzahl offener Blöcke in der Flash-Speicherungsvorrichtung führen. Anders als zum Beispiel herkömmliche Flash-Speicherungsvorrichtungen, die in der Regel eine geringe Anzahl offener Blöcke (z. B. 1 oder 2 offene Blöcke von Multi-Level-Zellen (MLCs) wie Quad-Level-Zellen (QLCs)) aufweisen, können Flash-Speicherungsvorrichtungen, die ZNS implementieren, in Abhängigkeit von der Anzahl von Anwendungen des Hosts signifikant mehr offene Blöcke aufweisen (z. B. zwischen bis zu 12 und bis zu 4000 offene Blöcke). Da offene Blöcke bekanntermaßen schlechtere Datenretentionseigenschaften (DR) (z. B. mehr umgedrehte Bitzahlen) als geschlossene Blöcke, insbesondere offene MLC-Blöcke wie QLC-Blöcke aufweisen, kann die Datenzuverlässigkeit oder Integrität der Flash-Speicherungsvorrichtung durch ZNS signifikant beeinflusst werden.
  • Zusätzlich gibt es eine Tendenzzunahme in physikalischen Blockgrößen (z. B. Anzahl von Wortleitungen und Ketten), wenn sich Flash-Speicherungsvorrichtungen in Richtung nachfolgender Generationen bewegen. Zum Beispiel weisen BICs4-Flash-Speicherungsvorrichtungen derzeit 96 Wortleitungen in einem Block auf, BICs5-Flash-Speicherungsvorrichtungen können 112 Wortleitungen in einem Block aufweisen, und es wird erwartet, dass BICs6-Flash-Speicherungsvorrichtungen noch mehr Wortleitungen in einem Block aufweisen. Obwohl die Flash-Speicherungsvorrichtung zunehmende physische Blockgrößen unterstützen kann, kann der Host dennoch möglicherweise nicht in der Lage sein, unterschiedliche Zonengrößen zu unterstützen (d. h. Zonengrößen sind im ZNS festgelegt). Dies kann zu ungenutztem Speicherplatz in jedem Block und damit verschwendetem Speicherplatz führen. Selbst wenn zum Beispiel die Kapazität jedes Blocks in zukünftigen Generationen von 64 MB auf 128 MB erhöht wird, kann der Host möglicherweise immer noch in der Lage sein, höchstens 64 MB von Daten in eine Zone zu schreiben, die auf jedem Block abgebildet ist, was dazu führt, dass die verbleibenden 64 MB jedes Blocks ungenutzt bleiben.
  • Während ferner in einigen Fällen der Host eine geringe Anzahl von Anwendungen aufweisen kann, die jeweils einer großen Datenmenge zugeordnet sind, die der Host in einer jeweiligen Zone ausfüllen kann (z. B. 48 oder 64 MB von Daten für einige Anwendungen oder Zonen), kann in anderen Fällen der Host eine große Anzahl von Anwendungen aufweisen, denen jeweils nur eine geringe Datenmenge zugeordnet ist, die der Host in eine jeweilige Zone schreiben kann (z. B. 24 oder 32 MB von Daten für mehrere Anwendungen oder Zonen). Wenn Zonen auf einzelne physikalische Blöcke abgebildet werden, wie vorstehend beschrieben, aber die Anzahl der offenen Blöcke, die zum Abbilden verfügbar sind, begrenzt ist, dann kann im letzteren Fall die Flash-Speicherungsvorrichtung aus Zonen laufen. Wenn zum Beispiel nur 10 offene Blöcke in der Flash-Speicherungsvorrichtung verfügbar sind, aber der Host mehr als 10 Zonen für seine Anwendungsdaten benötigt, kann die Flash-Speicherungsvorrichtung möglicherweise die Anforderungen des Hosts basierend auf dem eine-Zone-/ein-Block-Abbildungsschema nicht effizient unterstützen, insbesondere in dem Fall, in dem jede Anwendungsdatengröße klein ist (z. B. eine halbe Zonengröße).
  • Um die vorstehend genannten Einschränkungen oder Wirkungen vom ZNS abzuschwächen (z. B. eine große Anzahl offener Blöcke mit schlechter DR, eine fehlende Anpassungsfähigkeit an erhöhte Blockgrößen und einen ineffizienten Außerzonenzustand für kleine Datenanwendungen), verwendet die Steuerung Unterblöcke für Zonen und Abbildung. Als Reaktion auf das Empfangen einer Definition von Zonen vom Host (z. B. einer Abbildung der Zone zur logischen Adresse) oder einer anderen Nachricht, die angibt, dass ZNS verwendet werden soll, aktiviert die Steuerung einen Unterblock-Modus (SBM). In dem SBM wird jeder Block, der auf eine Zone abgebildet werden soll, in eine Anzahl von Unterblöcken aufgeteilt. Zum Beispiel kann ein Block mit 96 Wortleitungen (d. h. WL 0-95) so unterteilt werden, dass die unteren Wortleitungen (d. h. WL 0-47) in einem Unterblock eingeschlossen sind und die oberen Wortleitungen (d. h. WL 48-95) in einem anderen Unterblock eingeschlossen sind. Die Unterblöcke sind so eingerichtet, dass sie unabhängig programmierbar, lesbar und löschbar sind; zum Beispiel können andere Spannungen an die Wortleitungen in einem ausgewählten Unterblock als in einem nicht ausgewählten Unterblock angelegt werden, um das Lesen, Programmieren oder Löschen von Daten nur in dem ausgewählten Unterblock zu ermöglichen. Diese Eigenschaft von Unterblöcken erlaubt es, die Unabhängigkeit jeder Zone und damit die Reduktion bzw. Eliminierung von GC aus dem ZNS aufrechtzuerhalten.
  • Um die Anzahl offener Blöcke in der Speicherungsvorrichtung zu reduzieren und somit die Datenhaltung zu verbessern, kann die Steuerung jede Zone auf zwei Unterblöcke (in verschiedenen Blöcken) abbilden. Zum Beispiel kann die Steuerung bestimmen, ob die Anzahl offener Blöcke oder Zonen größer als ein Schwellenwert für offene Zonen ist, in welchem Fall die Steuerung SBM und die Hälfte jeder Zone auf einen Unterblock in einem Block und die andere Hälfte jeder Zone auf einen Unterblock in einem anderen Block abbilden kann. Somit kann jeder physische Block auf zwei verschiedene Zonen abgebildet werden, anstatt auf eine Zone wie bei herkömmlicher ZNS-Implementierung. Ein Beispiel dieses Abbildens ist in 9 veranschaulicht. Eine solche Abbildung dient dazu, die Wahrscheinlichkeit, offene Blöcke zu haben, zu verringern, da zwei teilweise geschriebene Zonen, die auf denselben Block abgebildet werden, zu einem geschlossenen Block statt zu zwei offenen Blöcken wie im herkömmlichen ZNS führen können.
  • Darüber hinaus kann die Steuerung, um die ZNS-Kompatibilität mit erhöhten Blockgrößen aufrechtzuerhalten, jede Zone auf einen Unterblock abbilden, wenn solche erhöhten Blockgrößen der Zonengröße äquivalent sind. Anstatt beispielsweise die Hälfte einer Zone auf einem Unterblock abzubilden, wie vorstehend beschrieben, kann die Steuerung, wenn sich die Unterblockgröße verdoppelt, die gesamte Zone auf den Unterblock abbilden. Ein Beispiel dieses Abbildens ist in 10 veranschaulicht. Ein solches Abbilden verhindert, dass ungenutzter Platz in jedem Block aufgrund erhöhter Blockgrößen entsteht, wodurch die verschwendete Speicherkapazität eliminiert wird, die aus herkömmlichen ZNS-Implementierungen resultieren kann.
  • Um eine Bedingung zu minimieren, in der die Flash-Speicherungsvorrichtung außerhalb von Zonen läuft, in Fällen, in denen der Host mehrere Anwendungen verwaltet, die nur eine relativ geringe Datenmenge schreiben (z. B. Hälfte einer typischen Zonengröße wie 24 oder 32 MB von Daten), kann die Steuerung SBM als Reaktion auf eine Anforderung von SBM vom Host aktivieren, die angibt, dass eine oder mehrere Anwendungen nur eine geringe Datenmenge schreiben werden. Zum Beispiel kann die Angabe Kennungen einschließen, welche Zonen nicht vollständig durch den Host geschrieben werden sollen, wie eine Angabe, dass der Host sicherstellt, dass nur die Hälfte jeder angegebenen Zone durch eine jeweilige Anwendung gefüllt wird. In einem solchen Fall kann die Steuerung jede angegebene Zone auf einen einzelnen Unterblock abbilden. Ein Beispiel dieses Abbildens ist in 11 veranschaulicht. Ein solches Abbilden erzeugt effektiv mehr Zonen (halber Kapazität), indem ermöglicht wird, dass mehr offene Blöcke zur Verwendung mit mehr Anwendungen abgebildet werden als in herkömmlichen ZNS-Implementierungen.
  • 1 zeigt ein beispielhaftes Blockdiagramm 100 einer Speicherungsvorrichtung 102, die mit einer Host-Vorrichtung 104 (auch „Host“) gemäß einer beispielhaften Ausführungsform kommuniziert. Der Host 104 und die Speicherungsvorrichtung 102 können ein System, wie ein Computersystem (z. B. Server, Desktop, Mobiltelefon/Laptop, Tablet, Smartphone usw.), bilden. Die Komponenten von 1 können physisch zusammen angeordnet sein oder nicht. In dieser Hinsicht kann der Host 104 entfernt von der Speicherungsvorrichtung 102 angeordnet sein. Wenngleich 1 veranschaulicht, dass der Host 104 getrennt von der Speicherungsvorrichtung 102 gezeigt ist, kann der Host 104 in anderen Ausführungsformen ganz oder teilweise in die Speicherungsvorrichtung 102 integriert sein. Alternativ dazu kann der Host 104 in seiner Gesamtheit oder alternativ mit einiger Funktionalität in der Speicherungsvorrichtung 102 über mehrere entfernte Einheiten verteilt sein.
  • Der Fachmann wird erkennen, dass andere beispielhafte Ausführungsformen mehr oder weniger als die in 1 gezeigten Elemente einschließen können und dass die offenbarten Prozesse in anderen Umgebungen implementiert werden können. Zum Beispiel können andere beispielhafte Ausführungsformen eine unterschiedliche Anzahl von Hosts, die mit der Speicherungsvorrichtung 102 kommunizieren, oder mehrere Speicherungsvorrichtungen 102, die mit dem/den Host(s) kommunizieren, einschließen.
  • Die Host-Vorrichtung 104 kann Daten in der Speicherungsvorrichtung 102 speichern und/oder Daten von dieser abrufen. Die Host-Vorrichtung 104 kann eine beliebige Rechenvorrichtung einschließen, einschließlich zum Beispiel eines Computerservers, einer Network Attached Storage-Einheit (NAS-Einheit), eines Desktop-Computers, eines Notebook-Computers (z. B. eines Laptop-Computers), eines Tablet-Computers, einer mobilen Rechenvorrichtung, wie eines Smartphones, eines Fernsehers, einer Kamera, einer Anzeigevorrichtung, eines digitalen Medienwiedergabegeräts, einer Videospielkonsole, einer Videostreaming-Vorrichtung oder dergleichen. Die Host-Vorrichtung 104 kann mindestens einen Prozessor 101 und einen Host-Speicher 103 einschließen. Der mindestens eine Prozessor 101 kann eine beliebige Form von Hardware einschließen, die zum Verarbeiten von Daten in der Lage ist, und kann eine Universalverarbeitungseinheit (wie eine zentrale Verarbeitungseinheit (CPU)), eine dedizierte Hardware (wie eine anwendungsspezifische integrierte Schaltung (ASIC), einen Digitalsignalprozessor (DSP), einrichtbare Hardware (wie eine feldprogrammierbare Gatteranordnung, FPGA) oder eine beliebige andere Form von Verarbeitungseinheit, die durch Softwareanweisungen, Firmware oder dergleichen eingerichtet ist, einschließen. Der Host-Speicher 103 kann durch die Host-Vorrichtung 104 verwendet werden, um durch den Host verarbeitete Daten oder Anweisungen oder von der Speicherungsvorrichtung 102 empfangene Daten zu speichern. In einigen Beispielen kann der Host-Speicher 103 nicht-flüchtigen Speicher, wie magnetische Speichervorrichtungen, optische Speichervorrichtungen, holografische Speichervorrichtungen, Flash-Speichervorrichtungen (z. B. NAND oder NOR), Phasenwechselspeichervorrichtungen (PCM-Vorrichtungen), resistive Direktzugriffsspeicher-Vorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Direktzugriffsspeicher-Vorrichtungen (MRAM-Vorrichtungen), ferroelektrische Direktzugriffsspeicher-Vorrichtungen (F-RAM-Vorrichtungen) und einen beliebigen anderen Typ von nicht-flüchtigen Speichervorrichtungen, einschließen. In anderen Beispielen kann der Host-Speicher 103 flüchtigen Speicher, wie Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen) einschließen. Der Host-Speicher 103 kann auch sowohl nicht-flüchtigen Speicher als auch flüchtigen Speicher, egal ob miteinander integriert oder als diskrete Einheiten, einschließen.
  • Die Host-Schnittstelle 106 ist eingerichtet, um die Speicherungsvorrichtung 102 mit dem Host 104 über einen Bus/ein Netzwerk 108 zu verbinden, und kann die Verbindung unter Verwendung von zum Beispiel Ethernet oder WiFi oder einem Bus-Standard, wie Serial Advanced Technology Attachment (SATA), PCI express (PCle), Small Computer System Interface (SCSI) oder Serial Attached SCSI (SAS) neben anderen möglichen Kandidaten, herstellen. Alternativ dazu kann die Host-Schnittstelle 106 drahtlos sein und kann die Speicherungsvorrichtung 102 unter Verwendung von zum Beispiel einer Mobilfunkkommunikation (z. B. 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 usw.), drahtlosen Verteilungsverfahren durch Zugangspunkte (z. B. IEEE 802.11, WiFi, HiperLAN usw.), Infrarot (IR), Bluetooth, Zigbee oder einer anderen Technologie für ein drahtloses Weitverkehrsnetzwerk (WWAN), ein drahtloses lokales Netzwerk (WLAN), ein drahtloses persönliches Netzwerk (WPAN) oder vergleichbaren Technologien für ein Weitverkehrsnetzwerk, ein lokales Netzwerk und ein persönliches Netzwerk mit dem Host 104 verbinden.
  • Die Speicherungsvorrichtung 102 schließt einen Speicher ein. In der beispielhaften Ausführungsform von 1 kann die Speicherungsvorrichtung 102 einen nicht-flüchtigen Speicher (NVM) 110 zum dauerhaften Speichern von vom Host 104 empfangenen Daten enthalten. Der NVM 110 kann zum Beispiel integrierte Flash-Schaltungen, NAND-Speicher (z. B. Single-Level-Zellen-Speicher (SLC-Speicher), Multi-Level-Zellen-Speicher (MLC-Speicher), Triple-Level-Zellen-Speicher (TLC-Speicher), Quad-Level-Zellen-Speicher (QLC-Speicher), Penta-Level-Zellen-Speicher (PLC-Speicher) oder eine beliebige Kombination davon) oder NOR-Speicher einschließen. Der NVM 110 kann eine Vielzahl von Speicherorten 112 einschließen, die Systemdaten zum Betreiben der Speicherungsvorrichtung 102 oder Benutzerdaten, die von dem Host zur Speicherung in der Speicherungsvorrichtung 102 empfangen werden, speichern können. Zum Beispiel kann der NVM eine Cross-Point-Architektur, einschließlich einer 2-D-NAND-Anordnung von Speicherorten 112 mit n Zeilen und m Spalten, einschließen, wobei m und n gemäß der Größe des NVM vordefiniert sind. In der beispielhaften Ausführungsform von 1 kann jeder Speicherort 112 ein Chip 114 sein, der mehrere Ebenen einschließt, die jeweils mehrere Blöcke von mehreren Zellen 116 einschließen. Alternativ kann jeder Speicherort 112 eine Ebene sein, die mehrere Blöcke der Zellen 116 einschließt. Die Zellen 116 können zum Beispiel Single-Level-Zellen, Multi-Level-Zellen, Triple-Level-Zellen, Quad-Level-Zellen und/oder Penta-Level-Zellen sein. Andere Beispiele von Speicherorten 112 sind möglich; zum Beispiel kann jeder Speicherort ein Block oder eine Gruppe von Blöcken sein. Jeder Speicherort kann einen oder mehrere Blöcke in einer 3-D-NAND-Anordnung einschließen. Jeder Speicherort 112 kann einen oder mehrere logische Blöcke einschließen, die auf einen oder mehrere physische Blöcke abgebildet werden. Alternativ können der Speicher und jeder Speicherplatz auf andere dem Fachmann bekannte Weise implementiert werden.
  • Die Speicherungsvorrichtung 102 schließt außerdem einen flüchtigen Speicher 118 ein, der zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM) oder einen statischen Direktzugriffsspeicher (SRAM) einschließen kann. Daten, die in einem flüchtigen Speicher 118 gespeichert sind, können Daten, die aus dem NVM 110 gelesen werden, oder Daten, die in den NVM 110 geschrieben werden sollen, einschließen. In dieser Hinsicht kann der flüchtige Speicher 118 einen Schreibpuffer oder einen Lesepuffer zum temporären Speichern von Daten einschließen. Während 1 den flüchtigen Speicher 118 als von einer Steuerung 123 der Speicherungsvorrichtung 102 entfernt veranschaulicht, kann der flüchtige Speicher 118 in die Steuerung 123 integriert sein.
  • Der Speicher (z. B. der NVM 110) ist eingerichtet, um Daten 119, die von der Host-Vorrichtung 104 empfangen werden, zu speichern. Die Daten 119 können in den Zellen 116 eines beliebigen der Speicherorte 112 gespeichert sein. Als ein Beispiel veranschaulicht 1 die Daten 119, die an verschiedenen Speicherorten 112 gespeichert sind, obwohl die Daten an dem gleichen Speicherort gespeichert sein können. In einem anderen Beispiel können die Speicherorte 112 verschiedene Chips sein und die Daten in einem oder mehreren der verschiedenen Chips gespeichert sein.
  • Alle der Daten 119 können einer logischen Adresse zugeordnet sein. Zum Beispiel kann der NVM 110 eine logisch-zu-physisch-Abbildungstabelle (L2P-Abbildungstabelle) 120 für die Speicherungsvorrichtung 102 speichern, die allen Daten 119 eine logische Adresse zuordnet. Die L2P-Abbildungstabelle 120 speichert die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die von dem Host 104 geschrieben werden, auf physische Adressen in dem NVM 110, wobei der/die Ort(e) angegeben werden, in denen alle der Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 der Speicherungsvorrichtung durchgeführt werden. Die L2P-Abbildungstabelle kann eine Tabelle oder eine andere Datenstruktur sein, die eine Kennung einschließt, wie eine logische Blockadresse (LBA), die jedem Speicherort 112 in dem NVM, in dem Daten gespeichert sind, zugeordnet ist. Während 1 eine einzelne L2P-Abbildungstabelle 120 veranschaulicht, die an einem der Speicherorte 112 von NVM gespeichert ist, um eine unangemessene Verunklarung der Konzepte von 1 zu vermeiden, kann die L2P-Abbildungstabelle 120 tatsächlich mehrere Tabellen einschließen, die an einem oder mehreren Speicherorten von NVM gespeichert sind.
  • 2 ist ein Konzeptdiagramm 200 eines Beispiels einer L2P-Abbildungstabelle 205, die die Abbildung von Daten 202, die von einer Host-Vorrichtung empfangen werden, auf logische Adressen und physische Adressen in dem NVM 110 von 1 veranschaulicht. Die Daten 202 können den Daten 119 in 1 entsprechen, während die L2P-Abbildungstabelle 205 der L2P-Abbildungstabelle 120 in 1 entsprechen kann. In einer beispielhaften Ausführungsform können die Daten 202 in einer oder mehreren Seiten 204 gespeichert sein, z. B. Seiten 1 bis x, wobei x die Gesamtanzahl von Seiten von Daten ist, die in den NVM 110 geschrieben werden. Jede Seite 204 kann einem oder mehreren Einträgen 206 der L2P-Abbildungstabelle 205 zugeordnet sein, die eine logische Blockadresse (LBA) 208, eine physische Adresse 210, die den in den NVM geschriebenen Daten zugeordnet ist, und eine Länge 212 der Daten identifizieren. Die LBA 208 kann eine logische Adresse sein, die in einem Schreibbefehl für die von der Host-Vorrichtung empfangenen Daten spezifiziert ist. Die physische Adresse 210 kann den Block und die Verschiebung angeben, bei denen die Daten, die der LBA 208 zugeordnet sind, physisch geschrieben werden. Die Länge 212 kann eine Größe der geschriebenen Daten angeben (z. B. 4 KB oder eine andere Größe).
  • Unter erneuter Bezugnahme auf 1 speichert der flüchtige Speicher 118 außerdem einen Cache 122 für die Speicherungsvorrichtung 102. Der Cache 122 schließt Einträge ein, die die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die durch den Host 104 angefordert werden, auf physische Adressen in dem NVM 110 zeigen, wobei der/die Ort(e) angegeben werden, in denen die Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 durchgeführt werden. Wenn die Steuerung 123 einen Lesebefehl oder einen Schreibbefehl für die Daten 119 empfängt, prüft die Steuerung den Cache 122 auf die logisch-zu-physisch-Abbildung aller Daten. Wenn eine Abbildung nicht vorhanden ist (es z. B. die erste Anforderung für die Daten ist), greift die Steuerung auf die L2P-Abbildungstabelle 120 zu und speichert die Abbildung in dem Cache 122. Wenn die Steuerung 123 den Lesebefehl oder Schreibbefehl ausführt, greift die Steuerung auf die Abbildung aus dem Cache zu und liest die Daten aus dem NVM 110 an der spezifizierten physischen Adresse oder schreibt sie in diesen. Der Cache kann in Form einer Tabelle oder einer anderen Datenstruktur gespeichert sein, die eine logische Adresse einschließt, die jedem Speicherort 112 in NVM zugeordnet ist, wo Daten gelesen werden.
  • Der NVM 110 schließt den Abtastverstärker 124 und Daten-Latches 126 ein, die mit jedem Speicherort 112 verbunden sind. Zum Beispiel kann der Speicherort 112 ein Block sein, der Zellen 116 auf mehreren Bitleitungen einschließt und der NVM 110 kann einen Abtastverstärker 124 auf jeder Bitleitung einschließen. Darüber hinaus können ein oder mehrere Daten-Latches 126 mit den Bitleitungen und/oder Abtastverstärkern verbunden sein. Bei den Daten-Latches kann es sich zum Beispiel um Schieberegister handeln. Wenn Daten aus den Zellen 116 des Speicherorts 112 gelesen werden, tasten die Abtastverstärker 124 die Daten durch Verstärken der Spannungen auf den Bitleitungen auf einen logischen Pegel (z. B. lesbar als eine „0“ oder eine „1“) ab und die abgetasteten Daten werden in den Daten-Latches 126 gespeichert. Die Daten werden dann von den Daten-Latches 126 an die Steuerung 123 übertragen, wonach die Daten in dem flüchtigen Speicher 118 gespeichert werden, bis sie an die Host-Vorrichtung 104 übertragen werden. Wenn Daten in die Zellen 116 des Speicherorts 112 geschrieben werden, speichert die Steuerung 123 die programmierten Daten in den Daten-Latches 126 und werden die Daten anschließend von den Daten-Latches 126 an die Zellen 116 übertragen.
  • Die Speicherungsvorrichtung 102 schließt eine Steuerung 123 ein, die Schaltlogik, wie einen oder mehrere Prozessoren zum Ausführen von Anweisungen einschließt, und kann eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), festverdrahtete Logik, analoge Schaltlogik und/oder eine Kombination davon einschließen.
  • Die Steuerung 123 ist eingerichtet, um Daten zu empfangen, die von einer oder mehreren der Zellen 116 der verschiedenen Speicherorte 112 als Reaktion auf einen Lesebefehl übertragen werden. Zum Beispiel kann die Steuerung 123 die Daten 119 lesen, indem sie die Abtastverstärker 124 aktiviert, um die Daten aus den Zellen 116 in Daten-Latches 126 abzutasten, und die Steuerung 123 kann die Daten von den Daten-Latches 126 empfangen. Die Steuerung 123 ist außerdem eingerichtet, um als Reaktion auf einen Schreibbefehl Daten in eine oder mehrere der Zellen 116 zu programmieren. Zum Beispiel kann die Steuerung 123 die Daten 119 schreiben, indem sie Daten an die Daten-Latches 126 sendet, um in die Zellen 116 programmiert zu werden. Die Steuerung 123 ist weiterhin eingerichtet, um beim Lesen oder Schreiben von Daten in die Zellen 116 auf die L2P-Abbildungstabelle 120 in dem NVM 110 zuzugreifen. Zum Beispiel kann die Steuerung 123 logisch-zu-physisch-Adressabbildungen von dem NVM 110 als Reaktion auf Lese- oder Schreibbefehle von der Host-Vorrichtung 104 empfangen, die physischen Adressen identifizieren, die auf die logischen Adressen abgebildet sind, die in den Befehlen identifiziert sind, (z. B. die logischen Adressen in physische Adressen übersetzen) und auf Daten in den Zellen 116, die sich an den abgebildeten physischen Adressen befinden, zugreifen oder diese speichern.
  • Die Steuerung 123 und ihre Komponenten können mit eingebetteter Software implementiert sein, die die verschiedenen Funktionen der in dieser Offenbarung beschriebenen Steuerung durchführt. Alternativ dazu kann Software zum Implementieren jeder der zuvor erwähnten Funktionen und Komponenten in dem NVM 110 oder in einem Speicher außerhalb der Speicherungsvorrichtung 102 oder der Host-Vorrichtung 104 gespeichert sein, und es kann durch die Steuerung 123 zur Ausführung durch den einen oder die mehreren Prozessoren der Steuerung 123 auf sie zugegriffen werden. Alternativ dazu können die Funktionen und Komponenten der Steuerung mit Hardware in der Steuerung 123 implementiert sein, oder sie können unter Verwendung einer Kombination der zuvor erwähnten Hardware und Software implementiert sein.
  • Im Betrieb speichert die Host-Vorrichtung 104 Daten in der Speicherungsvorrichtung 102 durch Senden eines Schreibbefehls an die Speicherungsvorrichtung 102, der eine oder mehrere logische Adressen (z. B. LBAs) sowie eine Länge der zu schreibenden Daten spezifiziert. Das Schnittstellenelement 106 empfängt den Schreibbefehl, und die Steuerung ordnet einen Speicherort 112 in dem NVM 110 der Speicherungsvorrichtung 102 zum Speichern der Daten zu. Die Steuerung 123 speichert die L2P-Abbildung in dem NVM (und dem Cache 122), um eine logische Adresse, die den Daten zugeordnet ist, auf die physische Adresse des Speicherorts 112 abzubilden, der für die Daten zugeordnet ist. Die Steuerung speichert außerdem die Länge der L2P-abgebildeten Daten. Die Steuerung 123 speichert dann die Daten an dem Speicherort 112, indem sie sie an einen oder mehrere Daten-Latches 126 sendet, die mit dem zugeordneten Speicherort verbunden sind, von dem die Daten in die Zellen 116 programmiert werden.
  • Der Host 104 kann Daten von der Speicherungsvorrichtung 102 abrufen, indem er einen Lesebefehl, der eine oder mehrere logische Adressen spezifiziert, die den Daten zugeordnet sind, die von der Speicherungsvorrichtung 102 abgerufen werden sollen, sowie eine Länge der zu lesenden Daten sendet. Die Schnittstelle 106 empfängt den Lesebefehl, und die Steuerung 123 greift auf die L2P-Abbildung in dem Cache 122 oder ansonsten in dem NVM zu, um die logischen Adressen, die in dem Lesebefehl spezifiziert sind, in die physischen Adressen zu übersetzen, die den Ort der Daten angeben. Die Steuerung 123 liest dann die angeforderten Daten aus dem durch die physischen Adressen spezifizierten Speicherort 112, indem sie die Daten unter Verwendung der Abtastverstärker 124 abtastet und in Daten-Latches 126 speichert, bis die gelesenen Daten über die Host-Schnittstelle 106 an den Host 104 zurückgegeben werden.
  • 3 veranschaulicht ein Beispiel einer NAND-Speicheranordnung 300 von Zellen 302. Die Zellen 302 können den Zellen 116 im NVM 110 von 1 entsprechen. Mehrere Zellen 302 sind mit Wortleitungen 304 und Bitleitungen 306 gekoppelt. Zum Beispiel kann die Speicheranordnung 300 n Wortleitungen und m Bitleitungen innerhalb eines Blocks eines Chips 114 des NVM 110 einschließen, wobei n und m gemäß der Größe des Blocks vordefiniert sind. Jede Wortleitung und Bitleitung kann jeweils einer Zeilen- und Spaltenadresse zugeordnet sein, welche die Steuerung 123 verwenden kann, um bestimmte Wortleitungen und Bitleitungen auszuwählen (z. B. unter Verwendung eines Zeilen- und Spaltendecoders). Zum Beispiel können die Wortleitungen 0-n jeweils ihrer eigenen Zeilenadresse zugeordnet sein (z. B. kann die Wortleitung 0 der Wortleitungsadresse 0 entsprechen, die Wortleitung 1 kann der Wortleitungsadresse 1 entsprechen usw.), und die Bitleitungen 0-m können jeweils ihrer eigenen Spaltenadresse zugeordnet sein (z. B. kann die Bitleitung 0 der Bitleitungsadresse 0 entsprechen, die Bitleitung 1 kann der Bitleitungsadresse 1 entsprechen usw.). Auswahl-Gate-Source (SGS)-Zellen 308 und Auswahl-Gate-Drain (SGD)-Zellen 310 sind mit den Speicherzellen 302 auf jeder Bitleitung 306 gekoppelt. Die SGS-Zellen 308 und SGD-Zellen 310 verbinden die Speicherzellen 302 mit einer Sourceleitung 312 (z. B. Masse) bzw. Bitleitungen 306. Eine Kette 314 kann eine Gruppe von Zellen 302 (einschließlich SGS- und SGD-Zellen 308, 310) einschließen, die mit einer Bitleitung innerhalb eines Blocks gekoppelt sind, während eine Seite 316 eine Gruppe von Zellen 302 einschließen kann, die mit einer Wortleitung innerhalb des Blocks gekoppelt sind.
  • 4 veranschaulicht ein Beispiel einer NAND-Speicheranordnung 400 von Blöcken 402, die mehrere Ketten 404 einschließen. Blöcke 402 können Blöcken eines Chips 114 im NVM 110 von 1 entsprechen, und Ketten 404 können jeweils Kette 314 in 3 entsprechen. Wie in der Speicheranordnung 300 von 3 kann jede Kette 404 eine Gruppe von Speicherzellen einschließen, die jeweils mit einer Bitleitung 406 gekoppelt sind und einzeln mit jeweiligen Wortleitungen 408 gekoppelt sind. In ähnlicher Weise kann jede Kette eine SGS-Zelle 410 und eine SGD-Zelle 412 einschließen, welche die Speicherzellen in jeder Kette 404 jeweils mit einer Sourceleitung 414 und einer Bitleitung 406 verbinden.
  • Wenn die Steuerung 123 Daten von einer Seite 316 von Zellen 302 liest oder Daten in diese schreibt (d. h. auf einer Wortleitung 304, 408), kann die Steuerung einen Befehl senden, um eine Lesespannung oder Programmierspannung an die ausgewählte Wortleitung und eine Durchgangsspannung an die anderen Wortleitungen anzulegen. Der gelesene oder programmierte Zustand der Zelle (z. B. eine Logik ‚0‘ oder eine Logik̃ ‚1‘ für SLCs) kann dann basierend auf einer Schwellenspannung der Zellen 302 bestimmt werden. Wenn zum Beispiel während eines SLC-Lesevorgangs die Schwellenspannung einer Zelle 302 kleiner als die Lesespannung ist (d. h. Strom als Reaktion auf die Lesespannung durch die Zelle fließt), kann die Steuerung 123 bestimmen, dass die Zelle eine Logik ‚1‘ speichert, während wenn die Schwellenspannung der Zelle 302 größer als die Lesespannung ist (d. h. kein Strom als Reaktion auf die Lesespannung durch die Zelle fließt), die Steuerung 123 bestimmen kann, dass die Zelle eine Logik ‚0‘ speichert. In ähnlicher Weise kann die Steuerung während eines SLC-Programmiervorgangs eine Logik ‚0‘ speichern, indem sie einen Befehl zum Anlegen der Programmierspannung an die Zelle 302 auf der Wortleitung 304, 408 sendet, bis die Zelle die Schwellenspannung erreicht, und bei einem Löschvorgang kann die Steuerung einen Befehl zum Anlegen einer Löschspannung an den Block 402 einschließlich der Zellen 302 (z. B. an ein Substrat der Zellen wie eine p-Wanne) senden, bis die Zellen wieder unter die Schwellenspannung absinken (zurück zu Logik ‚1‘).
  • 5 ist ein Konzeptdiagramm 500 eines Beispiels für einen Speicherbereinigungsprozess, bei dem in Seiten 504 eines Blocks 502 von SLC-Zellen gespeicherte Daten zu Seiten 508 eines Blocks 506 von QLC-Zellen verschoben werden. Die Daten können den Daten 119 von 1 entsprechen, die Blöcke 502, 506 können den Blöcken 402 von 4 entsprechen und die SLC/QLC-Zellen können den Zellen 116, 302 von 1 und 3 entsprechen. Jede Seite 504, 508 schließt Daten ein, die in mehreren Zellen entlang einer gleichen Zeile oder Wortleitung (z. B. Wortleitung 304, 408) des NVM gespeichert sind. Somit kann jede Seite 504 Daten einschließen, die in einer Zeile der Zellen 116 eines Blocks gespeichert sind, während jede Seite 508 Daten einschließen kann, die in einer Zeile der Zellen 116 eines anderen Blocks gespeichert sind. Zur Vereinfachung veranschaulicht das Beispiel von 5 die Blöcke 502, 506, die jeweils nur vier Seiten 504, 508 einschließen. Es sollte jedoch beachtet werden, dass jeder Block eine beliebige Anzahl von Seiten einschließen kann.
  • In dem Beispiel von 5 sind durch Kennung A, B und C dargestellte Daten in verschiedenen Seiten 504 des Blocks 502 gespeichert. Ursprünglich werden die Daten A, B und C in drei Seiten des Blocks 502 als Reaktion auf Schreibbefehle von der Host-Vorrichtung gespeichert, wobei in diesem Beispiel eine der Seiten frei geblieben ist. Wenn die Speicherungsvorrichtung neue oder aktualisierte Daten empfängt, werden diese Daten in der freien Seite 510 gespeichert. Zum Beispiel können aktualisierte Daten A' von der Host-Vorrichtung empfangen und in die freie Seite 510 geschrieben werden. Da Daten im Flash-Speicher nicht überschrieben werden können, bleiben die ungültigen Daten A im Block 502 gespeichert. Infolge neuer Daten und ungültiger Daten kann der Block 502 schnell voll werden.
  • Um Speicherplatz im SLC-Block freizugeben, können ursprüngliche und aktualisierte Daten im Block 502 in den Block 506 übertragen werden. Die ungültigen Daten bleiben im alten Block. Beispielsweise werden in dem Beispiel von 5 die ursprünglichen Daten B und C und die aktualisierten Daten A' von den Seiten 504 des Blocks 502 gelesen und in eine oder mehrere Seiten 508 des Blocks 506 geschrieben. Die ungültigen Daten A bleiben im Block 502. Wenn der Block 502 anschließend gelöscht wird, werden die ungültigen Daten verworfen, und der Block 502 kann wiederverwendet werden, um neue Daten zu speichern.
  • Ein solcher GC-Prozess kann jedoch zu einer erhöhten Schreibverstärkung der Speicherungsvorrichtung 102 führen, zum Beispiel in Fällen, in denen mehrere 4-KB-Datenüberschreibung auftreten. Um GC zu reduzieren oder zu eliminieren und dadurch die Schreibverstärkung der Speicherungsvorrichtung zu reduzieren, kann die Speicherungsvorrichtung 102 ZNS implementieren, in dem Gruppen zusammenhängender, nicht überlappender logischer Adressen in Zonen unterteilt sind. 6 veranschaulicht ein Konzeptdiagramm 600 eines Beispiels von Zonen 602. Jede Zone 602 weist eine fixe Größe auf und enthält einen zusammenhängenden Bereich sequentieller logischer Adressen 604 im NVM 110. Wie zum Beispiel veranschaulicht, kann der NVM 110 insgesamt z LBAs einschließen, die in x Zonen unterteilt sind, wobei jede Zone einen Bereich von n - m sequentielle LBAs einschließt, wobei z die Gesamtzahl von Sektoren im Flash-Speicher darstellt, x die Anzahl von Zonen darstellt, m eine erste LBA in einer Zone darstellt und n eine letzte LBA in derselben Zone darstellt. Jede Zone kann separat vom Host zum Speichern von Daten verwendet werden, die einer oder mehreren Anwendungen zugeordnet sind, die vom Host ausgeführt werden. Somit kann der Host 104 die LBAs in eine Anzahl von Zonen unterteilen, abhängig von der Anzahl von Anwendungen, die vom Host ausgeführt werden.
  • 7 veranschaulicht ein Beispieldiagramm 700 einer Steuerung 702 einer Speicherungsvorrichtung, die von einer Hostvorrichtung 706 empfangene Daten 704 in Blöcke 708 eines Chips 710 gemäß Zonen 712 schreibt. Zum Beispiel kann die Steuerung 702 der Steuerung 123 der Speicherungsvorrichtung 102 in 1 entsprechen, die Hostvorrichtung 706 kann dem Host 104 in 1 entsprechen, die Blöcke 708 können den Blöcken 402 von 4 entsprechen, die Daten 704 können den Daten 119 von 1 entsprechen und die Zonen 712 können den Zonen 602 von 6 entsprechen. Herkömmlicherweise kann der Host 706 eine Definition der Zonen 712 (z. B. eine Abbildung der Zonen 602 auf logische Adressen 604 in 6) an die Steuerung 702 senden, und die Steuerung kann eine L2P-Abbildungstabelle 714 (z. B. L2P-Abbildungstabelle 120, 205) erstellen, die LBAs jeder Zone 712 (z. B. logische Adressen 604) auf einen einzigen physischen Block (z. B. Block 402) abbildet. In dem Beispiel von 7 wird angenommen, dass jede Zone 64 MB in der Größe mit einer 512 Byte Sektorgröße überspannt, und somit kann jede Zone 125000 LBAs einschließen. Außerdem wird angenommen, dass jeder Block 64 MB von Daten speichern kann. Somit kann Zone 0 nur auf einen Block (z. B. PBA 0) abgebildet werden, Zone 1 kann nur in einen anderen Block (z. B. PBA 1) abgebildet werden usw. Jede Anwendung des Hosts kann dann Daten in eine jeweilige Zone, z. B., schreiben, indem der Steuerung ein sequenzieller Bereich von LBAs angezeigt wird. Zum Beispiel kann der Host 706 Schreibbefehle an die Steuerung 702 senden, um Daten sequenziell von LBA 0 auf LBA 124999 und/oder sequenziell von LBAs 125000 auf 249999 zu schreiben. Die Steuerung kann die angegebenen LBAs in die abgebildete physische Adresse übersetzen (z. B. PBA 0 bzw. 1) und die Daten entsprechend in den abgebildeten Block 708 schreiben. Somit kann der Host Daten von verschiedenen Anwendungen in verschiedene physische Blöcke schreiben, die individuell verschiedenen Zonen entsprechen.
  • Ein primärer Vorteil vom ZNS ist, dass der Host keine Daten Seite für Seite schreiben und ungültig machen kann (z. B. zwischen 4 KB-Befehlen), wie vorstehend in 5 beschrieben. Wenn zum Beispiel Daten in Zone 1 in 6 geschrieben werden, kann der Host nicht einfach Daten in LBA m schreiben, und dann sofort danach neue Daten in LBA m schreiben, während die alten Daten bei LBA m ungültig gemacht werden. Vielmehr muss die gesamte Zone vollständig beschrieben werden (d. h. von LBA m in LBA n- 1 in einem oder mehreren Schreibvorgängen), bevor Daten wieder in vorherige LBAs in dieser Zone geschrieben werden. Somit muss in dem Beispiel von 7 in Bezug auf Zone 0, wenn der Host Daten in LBA 0 schreibt, der Host fortfahren, Daten sequenziell von LBA 1 bis LBA 124999 zu schreiben (in einem oder mehreren Schreibvorgängen zu verschiedenen Zeiten), bevor der Host schließlich neue Daten zurück in LBA 0 schreiben kann. Dieses Merkmal von ZNS verhindert, dass Blöcke, die auf verschiedene Zonen abgebildet sind, teilweise ungültige Daten einschließen, die GC erfordern würden (wie beispielsweise in 5 gezeigt), wodurch GC reduziert oder eliminiert und die Schreibverstärkung verbessert wird.
  • Die herkömmliche Implementierung von ZNS kann jedoch auch mehrere Nachteile aufweisen. Erstens kann ZNS zu einer größeren Anzahl offener Blöcke (die tendenziell zu schlechteren Datenretentionseigenschaften (DR) als geschlossene Blöcke tendieren) in der Speicherungsvorrichtung 102 führen als Implementierungen ohne ZNS. In der Regel hält die Steuerung 123 ohne ZNS einen oder zwei offene Blöcke im gesamten NVM 110 aufrecht. Wenn dagegen Zonen auf einzelne physische Blöcke in ZNS abgebildet werden, kann die Steuerung 123 mindestens einen offenen Block für jede Zone im NVM 110 aufrechterhalten. Somit kann, wenn die Anzahl von Zonen groß ist (z. B. wenn der Host zahlreiche Anwendungen aufweist, die jeweils einer Zone entsprechen), die Anzahl von offenen Blöcken ebenfalls signifikant sein, was zu einer signifikant schlechteren Gesamt-DR der Speicherungsvorrichtung führt. Zweitens, während Zonengrößen in ZNS fest bleiben, neigen Blockgrößen dazu, sich mit der Zeit zu skalieren oder zu vergrößern. Eine solche Skalierung kann bewirken, dass sich zusätzlicher, ungenutzter Speicherplatz ergibt, wenn Zonen fester Größe auf einzelnen physischen Blöcken abgebildet werden. Die Zuordnung dieses zusätzlichen Platzes zu einer anderen Zone würde den Nutzen von ZNS überwinden, da GC in diesem Fall wahrscheinlich erforderlich wäre. Wenn zum Beispiel eine Zone vollständig in einen skalierten Block geschrieben wird (und somit ungültig gemacht werden kann), während eine andere Zone nur teilweise in den Rest des skalierten Blocks geschrieben wird (und somit nicht ungültig gemacht werden kann), wäre GC immer noch erforderlich, um die gültigen Daten zu schützen. Drittens kann, wenn der Host zahlreiche Anwendungen aufweist, die jeweils eine oder mehrere Zonen zum Speichern von Daten in ZNS anfordern, aber die Anzahl von Blöcken, die in der Speicherungsvorrichtung verfügbar sind, begrenzt ist, ein Zustand des Ausführens von Zonen auftreten, wenn Zonen auf einzelnen physischen Blöcken abgebildet werden. Solch eine Bedingung kann ineffizient sein, insbesondere in Fällen, in denen eine oder mehrere Anwendungen des Hosts nicht einmal erfordern, dass der gesamte Block für die Daten verfügbar ist (z. B. die Anwendungen schreiben nur eine geringe Datenmenge in jeden Block).
  • Um diese Einschränkungen von ZNS abzuschwächen, kann die Steuerung Zonen eher auf Unterblöcke als auf einzelnen Blöcke abbilden. In 3-D-NAND-Vorrichtungen können Gruppen von Wortleitungen in verschiedene Unterblöcke getrennt werden. Zum Beispiel kann ein Stapel unterer Wortleitungen in einer Speicherlochebene durch eine oder mehrere Dummy-Wortleitungen und/oder einen Verbindungsbereich von einem Stapel oberer Wortleitungen in eine anderen Speicherlochebene getrennt sein. Somit kann unter der Annahme von 128 Wortleitungen in einem Block der Stapel von unteren Wortleitungen (z. B. WLs 0-63) als ein Unterblock betrachtet werden, und der Stapel von oberen Wortleitungen (z. B. WLs 64-127) kann als ein anderer Unterblock betrachtet werden. Die Struktur der Unterblöcke ermöglicht es, dass die Wortleitungen innerhalb jedes Unterblocks unabhängig gelesen oder programmiert werden und der Unterblock unabhängig gelöscht wird. Die Steuerung kann solche unabhängigen Lese-/Programmier-/Löschvorgänge in verschiedenen Unterblöcken als Reaktion auf einen Unterblock-Modus- (SBM) Freigabebefehl durchführen, den die Steuerung an NAND sendet. Zum Beispiel kann die Steuerung einen Befehl an einen Chip senden, um einen SBM zu aktivieren, woraufhin unterschiedliche Spannungen an die Wortleitungen in verschiedenen Unterblöcken des Chips angelegt werden können, um gleichzeitige Lese- und Programmiervorgänge oder unabhängige Löschvorgänge durchzuführen. Zum Beispiel kann die Steuerung zum gleichzeitigen Lesen oder Schreiben von Daten in verschiedenen Unterblöcken Lese- oder Programmierspannungen an die ausgewählten Wortleitungen in den Unterblöcken anlegen und Spannungen an die nicht ausgewählten Wortleitungen in den Unterblöcken durchlassen, wenn SBM aktiviert ist. In ähnlicher Weise kann die Steuerung unabhängig verschiedene Unterblöcke löschen, indem sie niedrige Spannungen an Wortleitungen in einem ausgewählten Unterblock und hohe Spannungen an Wortleitungen in einem nicht ausgewählten Unterblock anlegt, wenn SBM aktiviert ist.
  • 8 veranschaulicht ein Beispieldiagramm 800 einer Steuerung 802 einer Speicherungsvorrichtung, die von einer Hostvorrichtung 806 empfangene Daten 804 in Unterblöcke 808 von verschiedenen Blöcken 810 eines Chips 812 gemäß Zonen 814 schreibt. Zum Beispiel kann die Steuerung 802 der Steuerung 123 der Speicherungsvorrichtung 102 in 1 entsprechen, die Hostvorrichtung 806 kann der Host-Vorrichtung 104 in 1 entsprechen, die Blöcke 810 können den Blöcken 402 von 4 entsprechen, die Daten 804 können den Daten 119 von 1 entsprechen und die Zonen 814 können den Zonen 602 von 6 entsprechen. Jeder Block 810 kann n Wortleitungen (z. B. 128 Wortleitungen oder eine andere Zahl n) einschließen, die wie vorstehend beschrieben in verschiedene Unterblöcke 808 unterteilt sind. Zum Beispiel kann die Hälfte der Wortleitungen eines Blocks (z. B. ein unterer Stapel von Wortleitungen von WL 0 bis WL n/2-1) in einem Unterblock eingeschlossen sein, während die andere Hälfte der Wortleitungen eines Blocks (z. B. ein oberer Stapel von Wortleitungen von WL n/2 bis WL n-1) in einem anderen Unterblock eingeschlossen sein kann, wobei n die Anzahl von Wortleitungen in dem Block ist. Die Steuerung 802 kann Daten in den Unterblöcken 808 als Reaktion auf einen SBM-Befehl 816 lesen, programmieren und löschen, den die Steuerung erzeugt und an den Chip 812 zur Ausführung sendet. Wenn zum Beispiel der Chip 812 den SBM-Befehl 816 empfängt, kann eine Schaltung in dem Chip aktiviert oder aktiviert werden, die ermöglicht, dass unterschiedliche Spannungen an die Wortleitungen in unterschiedlichen Unterblöcken angelegt werden, um gleichzeitige Lesevorgänge und Programme oder unabhängige Löschungen durchzuführen. Die Steuerung 802 kann den SBM-Befehl 816 als Reaktion auf den Empfang einer Definition der Zonen 814 vom Host 806 ausgeben. Die Steuerung kann auch den SBM-Befehl als Reaktion auf das Empfangen einer Anforderung 818 vom Host 806 zum Aktivieren von SBM ausgeben.
  • Im Betrieb kann der Host 806 eine Definition der Zonen 814 an die Steuerung 802 senden, die der Steuerung anzeigt, dass Daten in Zonen in ZNS geschrieben werden sollen. Die Steuerung kann dann bestimmen, ob eine Anzahl offener Zonen in der Speicherungsvorrichtung größer oder gleich einem Schwellenwert für offene Zonen ist (z. B. 10 oder eine andere vordefinierte Anzahl). Zum Beispiel kann die Steuerung überprüfen, ob der Host plant, Daten in mehr als 10 Zonen zu schreiben, was im Allgemeinen mindestens 10 offene Blöcke erfordern würde. Wenn die Anzahl offener Zonen kleiner als der Schwellenwert ist (z. B. gibt es eine akzeptable Anzahl offener Blöcke, die sich aus dem Abbilden von Zonen auf einzelne Blöcke ergeben würden, wie insgesamt neun Blöcke oder weniger), kann die Steuerung die LBAs jeder Zone 814 auf einzelne physische Blöcke abbilden, wie vorstehend in 7 beschrieben. Andernfalls, wenn die Anzahl offener Zonen den Schwellenwert erreicht, kann die Steuerung die LBAs jeder Zone 814 auf Unterblöcke 808 abbilden, wie nachstehend in Bezug auf eine beliebige der 9-11 beschrieben. Wenn zum Beispiel LBAs auf PBAs in der L2P Abbildungstabelle 120, 205 abgebildet werden, kann die Steuerung weiterhin ein Flag-Bit (z. B. 0 oder 1) anzeigen, das einen jeweiligen Unterblock jedes physischen Blocks anzeigt, auf den die LBAs abgebildet werden. Jede Anwendung des Hosts kann dann Daten in eine jeweilige Zone, schreiben, z. B. indem der Steuerung ein sequenzieller Bereich von LBAs angezeigt wird, und die Steuerung kann die angezeigten LBAs in den abgebildeten Unterblock 810 übersetzen und die Daten entsprechend in den Unterblock schreiben. Da Unterblöcke unabhängig löschbar sind, hält die Abbildung von Zonen auf Unterblöcke den Vorteil von ZNS der Reduktion oder Eliminierung von GC aufrecht, um die Schreibverstärkung zu reduzieren, während die vorstehend genannten Nachteile von ZNS weiter abgeschwächt werden.
  • Wenn zum Beispiel die Anzahl offener Blöcke, die sich aus der Einzelblockabbildung ergeben würden, zu groß wäre und somit signifikante DR-Probleme verursacht, kann die Steuerung 802 jede Zone auf zwei Unterblöcke 808 in verschiedenen Blöcken 810 abbilden, um die Anzahl offener Blöcke zu reduzieren. 9 veranschaulicht ein Beispiel einer L2P-Abbildungstabelle 900, welche die Steuerung erzeugen kann, die jede Zone auf zwei Unterblöcke 904 in verschiedenen Blöcken 902 abbildet. In dem Beispiel von 9 überspannt jede Zone 64 MB in der Größe mit einer 512 Byte-Sektorgröße, und somit kann jede Zone 125000 LBAs einschließen. Außerdem ist jeder Block in der Lage, 64 MB Daten zu speichern, und somit ist jeder Unterblock in der Lage, 32 MB Daten zu speichern. Anstatt somit jede Zone (alle 125000 LBAs) auf jeden Block 902 abzubilden, wie vorstehend in 7 veranschaulicht, bildet die Steuerung hier eine erste Hälfte jeder Zone (32 MB von Daten) auf einen Unterblock in einem Block und eine zweite Hälfte jeder Zone (32 MB von Daten) auf einen Unterblock in einem anderen Block ab. Zum Beispiel kann die Steuerung LBAs 0-62499 (die erste Hälfte von Zone 0) auf Unterblock 0 von Block 0 abbilden, die Steuerung kann LBAs 62500-124999 (die zweite Hälfte von Zone 0) auf Unterblock 0 von Block 1 abbilden, die Steuerung kann LBAs 125000-187499 (die erste Hälfte von Zone 1) auf Unterblock 1 von Block 0 abbilden, und die Steuerung kann LBAs 187500-249999 (die zweite Hälfte von Zone 1) auf Unterblock 1 von Block 1 abbilden. Auf diese Weise wird, wenn der Host sequentiell Daten in Zone 0 und Zone 1 schreibt, beginnend mit der ersten LBA jeder Zone, zunächst nur Block 0 geschrieben. Somit beginnt die Steuerung mit dem Schreiben in Block 1 erst, nachdem die erste Hälfte der Zonen 0 und 1 gefüllt ist und Block 0 vollständig geschrieben ist (d. h. Block 0 wird ein geschlossener Block). Dieser Ansatz reduziert die Gesamtzahl der offenen Blöcke, die sich ergeben werden, z. B. um die Hälfte. Obwohl zum Beispiel Zone 0 und 1 halb gefüllt sind, ist nur ein Block (Block 1) offen, anstatt zwei Blöcke (beide Blöcke 0 und 1), wie dies im Beispiel von 7 der Fall wäre.
  • In einem anderen Beispiel kann, wenn ein Block später aufgrund der Skalierung in der Größe verdoppelt wird, sodass ein Unterblock nun eine Zonengröße überspannt (statt eines Blocks wie zuvor), die Steuerung die Zone auf einen Unterblock abbilden, um die Skalierung aufzunehmen und dennoch die Reduktion oder Eliminierung von GC aufrechtzuerhalten. 10 veranschaulicht ein Beispiel einer L2P-Abbildungstabelle 1000, welche die Steuerung erzeugen kann, die jede Zone auf einen Unterblock 1004 in verschiedenen Blöcken 1002 abbildet. In dem Beispiel von 10 überspannt jede Zone 64 MB in der Größe mit einer 512 Byte-Sektorgröße, und somit kann jede Zone 125000 LBAs einschließen. Außerdem hat sich die Größe jedes Blocks aufgrund der Skalierung vergrößert, sodass jeder Block nun 128 MB von Daten speichern kann und somit jeder Unterblock 64 MB von Daten speichern kann. Anstatt somit die Hälfte jeder Zone (62500 LBAs) auf jeden Unterblock abzubilden, wie vorstehend in 9 veranschaulicht, bildet hier die Steuerung jede Zone auf jeden Unterblock doppelter Größe ab. Zum Beispiel kann die Steuerung LBAs 0-62499 (die erste Hälfte von Zone 0) und LBAs 62500-124999 (die zweite Hälfte von Zone 0) auf Unterblock 0 von Block 0 unter Verwendung ähnlicher Unterblockabbildung abbilden, wie vorstehend in Bezug auf 9 beschrieben. Auf diese Weise kann selbst bei Blöcken doppelter Größe aufgrund von Skalierung ungenutzter Platz in jedem Block für ZNS vermieden werden, indem die gesamte Zone auf den Unterblock abgebildet wird. Dieser Ansatz hält auch die Reduzierung oder Eliminierung von GC aufrecht, da Unterblöcke unabhängig gelöscht werden können, selbst wenn die Anzahl von Wortleitungen in einem Block angestiegen ist.
  • In einem weiteren Beispiel kann, wenn die Steuerung eine Angabe von dem Host empfängt (z. B. in SBM-Anforderung 818), dass Zonen nicht vollständig geschrieben werden (z. B. wird die Anwendung nur eine geringe Datenmenge in diese Zonen schreiben), die Steuerung die Zonen auf einzelnen Unterblöcken abbilden, um einen Außerzonenzustand zu verhindern. 11 veranschaulicht ein Beispiel einer L2P-Abbildungstabelle 1100, welche die Steuerung erstellen kann, die zwei Zonen auf einen Unterblock 1004 in demselben Block 1102 abbildet. In dem Beispiel von 11 überspannt jede Zone 64 MB in der Größe mit einer 512 Byte-Sektorgröße, und somit kann jede Zone 125000 LBAs einschließen. Außerdem ist jeder Block in der Lage, 64 MB Daten zu speichern, und somit ist jeder Unterblock in der Lage, 32 MB Daten zu speichern. Anstatt somit eine Zone auf zwei Unterblöcke abzubilden, wie vorstehend in 9 veranschaulicht, bildet hier die Steuerung die Hälfte jeder Zone auf einen Unterblock ab, basierend auf der Angabe, dass die andere Hälfte jeder Zone ungenutzt sein wird (keine Daten werden in diesen LBAs gespeichert). Zum Beispiel kann die Steuerung LBAs 0-62499 (die erste Hälfte von Zone 0) auf Unterblock 0 von Block 0 und LBAs 125000-187499 (die erste Hälfte von Zone 1) auf Unterblock 1 von Block 0 unter Verwendung ähnlicher Unterblockabbildung abbilden, wie vorstehend in Bezug auf 9 beschrieben. Die Steuerung bildet LBAs 62500-124999 (die zweite Hälfte von Zone 0) und LBAs 187500-249999 (die zweite Hälfte von Zone 1) jedoch nicht auf Block 1 ab, anders als im Beispiel von 9, da diese Regionen vom Host als ungenutzt angezeigt wurden. Stattdessen kann Block 1 auf anderen Zonen abgebildet werden. Auf diese Weise kann die Anzahl der Zonen in der Speicherungsvorrichtung effektiv erhöht werden. Anstatt Unterblöcke in den Blöcken 0 und 1 auf Zone 0 und 1 abzubilden, wie vorstehend im Beispiel von 9 beschrieben, kann hier die Steuerung Unterblöcke nur in Block 0 auf Zone 0 und 1 abbilden, da die Hälfte jeder Zone nicht geschrieben wird, wodurch es der Steuerung ermöglicht wird, Block 1 auf zwei weitere halb geschriebene Zonen abgebildet. Somit kann die Steuerung als Reaktion auf eine Anzeige vom Host (z. B. in einer Anforderung zum Aktivieren von SBM oder in einer anderen Nachricht), dass ihre Anwendungen nur eine geringe Datenmenge in den verschiedenen Zonen speichern, ermöglichen, dass mehr Blöcke zum Abbilden auf zusätzliche Zonen verfügbar sind.
  • 12 veranschaulicht ein beispielhaftes Flussdiagramm 1200 eines Verfahrens zum Schreiben von Daten auf Zonen basierend auf Unterblock-Abbilden. Zum Beispiel kann das Verfahren in einer Speicherungsvorrichtung 102, wie der in 1 veranschaulichten, ausgeführt werden. Jeder der Schritte im Flussdiagramm kann unter Verwendung der Steuerung wie nachstehend beschrieben (z. B. der Steuerung 123, 802) oder durch ein beliebiges anderes geeignetes Mittel gesteuert werden.
  • Wie durch Block 1202 dargestellt, kann die Steuerung Daten von einem Host empfangen, die in eine Zone (z. B. in ZNS) geschrieben werden sollen. Die Zone kann eine Vielzahl von logischen Adressen einschließen. Bezugnehmend auf 6-8 kann die Steuerung 702, 802 Daten 704, 804 von der Hostvorrichtung 706, 806 empfangen, die in eine Zone 602, 712, 814 geschrieben werden sollen. Die Zone 602 kann eine Vielzahl von logischen Adressen 604 einschließen. Die Steuerung 702, 802 kann vom Host 706, 806 eine Zuordnung der Zone 602 zu den logischen Adressen 604 erhalten. Zum Beispiel kann die Steuerung eine Abbildung der Zonen auf logische Adresse, wie in 6 veranschaulicht, in einer Nachricht von dem Host empfangen, die Zonen 712, 814 angibt.
  • Wie durch Block 1204 dargestellt, kann die Steuerung bestimmen, ob die Anzahl offener Zonen einen Schwellenwert für offene Zonen erreicht. Wenn die Anzahl offener Zonen dem Schwellenwert für offene Zonen entspricht, kann die Steuerung, wie durch Block 1206 dargestellt, einen Unterblock-Modus (SBM) aktivieren und die Zone auf Unterblock (Unterblöcken) des Speichers, abbilden, z. B. wie vorstehend in Bezug auf 8-11 beschrieben. Andernfalls, wenn die Anzahl offener Zonen dem Schwellenwert für offene Zonen nicht entspricht, kann die Steuerung Zonen auf Blöcke abbilden, z. B. wie vorstehend in Bezug auf 7 beschrieben.
  • Bezugnehmend auf die 1 und 6-11 kann der Speicher (z. B. NVM 110) eine Vielzahl von Blöcken 708, 810, 902, 1002, 1102 aufweisen, wobei jeder der Blöcke eine Vielzahl von Unterblöcken 808, 904, 1004, 1104 einschließt, und die Steuerung 123, 802 kann eine Zone 602 auf mindestens einen der Unterblöcke abbilden. Jeder der Unterblöcke kann unabhängig lesbar, programmierbar und löschbar sein, z. B. wie vorstehend in Bezug auf 8 beschrieben. Die Steuerung kann eine Anzahl offener Zonen (z. B. eine Anzahl der Zonen 602, die offen sind oder einem offenen Block entsprechen) bestimmen und die offenen Zonen als Reaktion darauf, dass die Anzahl offener Zonen einen Schwellenwert (z. B. einen Schwellenwert für offene Zonen, wie z. B. 10 oder eine andere Anzahl) erreicht, auf den mindestens einen der Unterblöcke abbilden.
  • In einem Beispiel kann die Zone auf zwei der Unterblöcke abgebildet werden, wobei die zwei der Unterblöcke aus unterschiedlichen Blöcken stammen. In diesem Beispiel kann jeder der verschiedenen Blöcke einen anderen Unterblock einschließen, der auf eine andere Zone abgebildet ist. Zum Beispiel kann unter Bezugnahme auf 9 die Zone 0 auf den Unterblock 0 in Block 0 und den Unterblock 0 in Block 1 abgebildet werden. Darüber hinaus kann jeder der Blöcke (z. B. Blöcke 0 und 1) einen anderen Unterblock (z. B. Unterblock 1) einschließen, der auf eine andere Zone (z. B. Zone 1) abgebildet ist.
  • In einem anderen Beispiel kann die Zone als Reaktion auf eine Angabe von des Hosts, dass die Zone teilweise ungenutzt ist, auf einen der Unterblöcke abgebildet werden, wobei sich der eine der Unterblöcke in einem der Blöcke befindet. In diesem Beispiel kann der eine der Blöcke einen anderen Unterblock einschließen, der auf eine andere Zone abgebildet ist. Zum Beispiel kann unter Bezugnahme auf 11 Zone 0 als Reaktion auf eine Angabe des Hosts 806, dass Zone 0 nicht vollständig geschrieben wird, auf Unterblock 0 im Block 0 abgebildet werden. Darüber hinaus kann Block 0 einen anderen Unterblock (z. B. Unterblock 1) einschließen, der auf einer anderen Zone (z. B. Zone 1) abgebildet ist. Die Steuerung kann eine Anforderung (z. B. SBM-Anforderung 818) zum Schreiben von Daten 804 empfangen, die auf Zonen 814 in den Unterblöcken 808 abgebildet sind, und jede der Zonen als Reaktion auf die Anforderung auf mindestens einen der Unterblöcke abbilden. Die Anforderung kann die Angabe vom Host einschließen, dass die Zone teilweise ungenutzt ist.
  • Schließlich kann, wie durch Block 1208 dargestellt, die Steuerung bestimmen, ob alle Zonen mit Daten von dem Host beschrieben wurden. Wenn nicht, schreibt die Steuerung die Daten in eine Zone (wie auf Unterblöcke oder Blöcke abgebildet, wie vorstehend unter 1204 beschrieben) und wiederholt den vorstehenden Prozess für jede Zone. Andernfalls, wenn alle Zonen mit Daten beschrieben sind, endet das Verfahren.
  • Dementsprechend kann die in der vorliegenden Offenbarung beschriebene Speicherungsvorrichtung die Einschränkungen vom ZNS abschwächen, einschließlich einer großen Anzahl offener Blöcke mit schlechter DR, Unflexibilität für erhöhte Blockgrößen und beschränkten verfügbaren Zonen. Indem ermöglicht wird, dass jede Zone auf zwei Unterblöcken in verschiedenen Blöcken abgebildet wird, kann sich eine geringere Anzahl offener Blöcke in der Speicherungsvorrichtung ergeben als im herkömmlichen ZNS, was zu einer höheren Datenzuverlässigkeit führt. Darüber hinaus kann in Fällen, in denen weniger Daten einer bestimmten Anwendung programmiert werden und die Speicherungsvorrichtung außerhalb von Zonen läuft, das Abbilden jeder Zone zu einem Unterblock die Anzahl von Zonen während der Laufzeit effektiv erhöhen. Darüber hinaus können die Vorteile vom ZNS beim Reduzieren von GC und Schreibverstärkung noch aufrechterhalten werden, selbst wenn sich die Blockgrößen der Speicherungsvorrichtung skaliert oder erhöht haben, da Fehlanpassungen zwischen Zonenkapazität und Blockgröße aufgrund von Unterblockabbildung vermieden werden können und die volle Blockkapazität weiterhin verwendet werden kann.
  • Die verschiedenen Gesichtspunkte dieser Offenbarung werden bereitgestellt, um es einem Fachmann zu ermöglichen, die vorliegende Erfindung praktisch umzusetzen. Verschiedene Modifikationen an beispielhaften Ausführungsformen, die in dieser Offenbarung dargestellt werden, werden für den Fachmann leicht ersichtlich sein, und die hierin offenbarten Konzepte können auf andere magnetische Speicherungsvorrichtungen ausgedehnt werden. Daher sollen die Ansprüche nicht auf die verschiedenen Gesichtspunkte dieser Offenbarung beschränkt sein, sondern es soll ihnen der volle Schutzumfang in Übereinstimmung mit der Formulierung der Ansprüche gewährt werden. Alle strukturellen und funktionalen Äquivalente zu den verschiedenen Komponenten der beispielhaften Ausführungsformen, die in dieser Offenbarung beschrieben sind und die einem Fachmann bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen durch die Ansprüche eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. § 112(f) in den Vereinigten Staaten oder eines analogen Gesetzes oder Rechtsgrundsatzes in einer anderen Region zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs unter Verwendung des Ausdrucks „Schritt für“ erwähnt wird.
  • 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 63/074936 [0001]

Claims (20)

  1. Speicherungsvorrichtung, aufweisend: einen Speicher, aufweisend eine Vielzahl von Blöcken, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt; und eine Steuerung, die eingerichtet ist, um eine Zone auf mindestens einen der Unterblöcke abzubilden, wobei die Zone eine Vielzahl von logischen Adressen einschließt.
  2. Speicherungsvorrichtung gemäß Anspruch 1, wobei jeder der Unterblöcke unabhängig programmierbar und löschbar ist.
  3. Speicherungsvorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, von einem Host eine Zuordnung der Zone zu den logischen Adressen zu empfangen.
  4. Speicherungsvorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um eine Anzahl offener Zonen zu bestimmen und die offenen Zonen als Reaktion darauf, dass die Anzahl offener Zonen einen Schwellenwert erreicht, auf mindestens einen der Unterblöcke abzubilden.
  5. Speicherungsvorrichtung gemäß Anspruch 1, wobei die Zone auf zwei der Unterblöcke abgebildet wird, wobei die zwei der Unterblöcke aus verschiedenen Blöcken stammen.
  6. Speicherungsvorrichtung gemäß Anspruch 5, wobei jeder der verschiedenen Blöcke einen anderen Unterblock einschließt, der auf eine andere Zone abgebildet ist.
  7. Speicherungsvorrichtung gemäß Anspruch 1, wobei die Zone als Reaktion auf eine Angabe von einem Host, dass die Zone teilweise ungenutzt ist, auf einen der Unterblöcke abgebildet wird, wobei sich der eine der Unterblöcke in einem der Blöcke befindet.
  8. Speicherungsvorrichtung gemäß Anspruch 7, wobei der eine der Blöcke einen anderen Unterblock einschließt, der auf eine andere Zone abgebildet ist.
  9. Speicherungsvorrichtung, aufweisend: einen Speicher, aufweisend eine Vielzahl von Blöcken, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt; und Steuerung, die eingerichtet ist, um eine Anzahl offener Zonen zu bestimmen und die offenen Zonen als Reaktion darauf, dass die Anzahl offener Zonen einen Schwellenwert erreicht, auf die Unterblöcke abzubilden.
  10. Speicherungsvorrichtung gemäß Anspruch 9, wobei jeder der Unterblöcke unabhängig lesbar und programmierbar ist.
  11. Speicherungsvorrichtung gemäß Anspruch 9, wobei die Steuerung weiterhin eingerichtet ist, von einem Host eine Zuordnung der offenen Zonen zu einer Vielzahl von logischen Adressen zu empfangen.
  12. Speicherungsvorrichtung gemäß Anspruch 9, wobei jede der offenen Zonen auf zwei der Unterblöcke abgebildet wird, wobei die zwei der Unterblöcke aus verschiedenen Blöcken stammen.
  13. Speicherungsvorrichtung gemäß Anspruch 9, wobei jede der offenen Zonen in Reaktion auf eine Angabe von einem Host, dass die offene Zone nicht vollständig geschrieben werden wird, auf einen der Unterblöcke abgebildet wird.
  14. Speicherungsvorrichtung, aufweisend: einen Speicher, aufweisend eine Vielzahl von Blöcken, wobei jeder der Blöcke eine Vielzahl von Unterblöcken einschließt; und eine Steuerung, die eingerichtet ist, um eine Anforderung zum Schreiben von Daten, die Zonen in den Unterblöcken zugeordnet sind, zu empfangen und jede der Zonen als Reaktion auf die Anforderung auf mindestens einen der Unterblöcke abzubilden.
  15. Speicherungsvorrichtung gemäß Anspruch 14, wobei jeder der Unterblöcke unabhängig lesbar und löschbar ist.
  16. Speicherungsvorrichtung gemäß Anspruch 14, wobei die Steuerung weiterhin eingerichtet ist, von einem Host eine Zuordnung der Zonen zu einer Vielzahl von logischen Adressen zu empfangen.
  17. Speicherungsvorrichtung gemäß Anspruch 14, wobei die Steuerung weiterhin eingerichtet ist, um eine Anzahl der Zonen zu bestimmen, die offen sind, und um die Zonen auf die Unterblöcke abzubilden, wenn die Anzahl der Zonen, die offen sind, einen Schwellenwert erreicht.
  18. Speicherungsvorrichtung gemäß Anspruch 14, wobei jede der Zonen auf zwei der Unterblöcke abgebildet wird, wobei die zwei der Unterblöcke aus verschiedenen Blöcken stammen.
  19. Speicherungsvorrichtung gemäß Anspruch 14, wobei die Anforderung eine Angabe von einem Host einschließt, dass die Zonen teilweise ungenutzt sind.
  20. Speicherungsvorrichtung gemäß Anspruch 19, wobei jede der Zonen als Reaktion auf die Angabe auf einen der Unterblöcke abgebildet wird.
DE102021115374.3A 2020-09-04 2021-06-14 Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus Pending DE102021115374A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063074936P 2020-09-04 2020-09-04
US63/074,936 2020-09-04
US17/180,625 US11455244B2 (en) 2020-09-04 2021-02-19 Zoned namespace limitation mitigation using sub block mode
US17/180,625 2021-02-19

Publications (1)

Publication Number Publication Date
DE102021115374A1 true DE102021115374A1 (de) 2022-03-10

Family

ID=80266815

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021115374.3A Pending DE102021115374A1 (de) 2020-09-04 2021-06-14 Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus

Country Status (4)

Country Link
US (1) US11455244B2 (de)
KR (1) KR102652694B1 (de)
CN (1) CN114138682A (de)
DE (1) DE102021115374A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220027064A1 (en) * 2015-04-10 2022-01-27 Pure Storage, Inc. Two or more logical arrays having zoned drives
KR20230081505A (ko) * 2021-11-30 2023-06-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그의 동작 방법
CN114625321A (zh) * 2022-03-25 2022-06-14 阿里巴巴(中国)有限公司 数据写入方法以及装置
US11954367B2 (en) 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101916718B1 (ko) * 2012-02-28 2018-11-09 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 메모리 관리 방법
SG196732A1 (en) 2012-07-16 2014-02-13 Agency Science Tech & Res Data storage system, method of writing to storage in the data storage system, hard disk and method of forming the hard disk
US9466382B2 (en) * 2012-11-14 2016-10-11 Sandisk Technologies Llc Compensation for sub-block erase
JP5781109B2 (ja) * 2013-03-01 2015-09-16 株式会社東芝 不揮発性半導体記憶装置
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9449698B1 (en) 2015-10-20 2016-09-20 Sandisk Technologies Llc Block and zone erase algorithm for memory
KR102570367B1 (ko) * 2016-04-21 2023-08-28 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
KR102469539B1 (ko) 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치
US11087849B2 (en) 2018-05-08 2021-08-10 Sandisk Technologies Llc Non-volatile memory with bit line controlled multi-plane mixed sub-block programming
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11789612B2 (en) * 2020-06-16 2023-10-17 Sandisk Technologies Llc Plane programming scheme for non-volatile memory with large block sizes

Also Published As

Publication number Publication date
CN114138682A (zh) 2022-03-04
KR20220031490A (ko) 2022-03-11
KR102652694B1 (ko) 2024-03-28
US11455244B2 (en) 2022-09-27
US20220075716A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen
DE102018109929A1 (de) NAND-Flash-Speichervorrichtung mit NAND-Puffer

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE