DE102021114457A1 - Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum - Google Patents

Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum Download PDF

Info

Publication number
DE102021114457A1
DE102021114457A1 DE102021114457.4A DE102021114457A DE102021114457A1 DE 102021114457 A1 DE102021114457 A1 DE 102021114457A1 DE 102021114457 A DE102021114457 A DE 102021114457A DE 102021114457 A1 DE102021114457 A1 DE 102021114457A1
Authority
DE
Germany
Prior art keywords
data
controller
zone
host
read
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
DE102021114457.4A
Other languages
English (en)
Inventor
Ramanathan Muthiah
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 DE102021114457A1 publication Critical patent/DE102021114457A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mram Or Spin Memory Techniques (AREA)
  • Container, Conveyance, Adherence, Positioning, Of Wafer (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Read Only Memory (AREA)

Abstract

Gesichtspunkte einer Speichervorrichtung, die einen Speicher und eine Steuerung einschließt, werden bereitgestellt, welche eine Read-Look-Ahead (RLA)-Leistung basierend auf Zonenkonfigurationen oder gespeicherten Metadaten optimieren. Die Steuerung speichert im Speicher Informationen, die sie zuvor von einem Host empfangen hat, einschließlich einer Zonenkonfiguration oder anderer Informationen, aus denen Metadaten bestimmt werden können, die nachfolgenden Daten zugeordnet sind, welche bei der RLA vorab abgerufen werden sollen. Wenn die gespeicherten Informationen die Zonenkonfiguration einschließen, liest die Steuerung Daten aus dem Speicher als Reaktion auf einen Host-Befehl und begrenzt das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf der Zonenkonfiguration. Wenn die gespeicherten Informationen Metadaten einschließen, liest die Steuerung die Metadaten, die nachfolgenden Daten zugeordnet sind, aus dem Speicher und begrenzt das Vorabrufen der nachfolgenden Daten basierend auf den Metadaten. Somit können Ressourcen der Speichervorrichtung, die üblicherweise bei der RLA verwendet werden, stattdessen für andere Vorgänge verwendet werden, wodurch die Effizienz der Speichervorrichtung verbessert wird.

Description

  • HINTERGRUND
  • Rückverweisung auf verwandte Anmeldungen
  • Diese Anmeldung beansprucht den Vorteil und das Prioritätsrecht der vorläufigen US-Patentanmeldung Nr. 63/079.898 mit dem Titel „Read Handling in Zoned Namespace Devices“, eingereicht am 17. 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 Speichervorrichtungen.
  • Hintergrund
  • Speichervorrichtungen ermöglichen es Benutzern, Daten zu speichern und abzurufen. Beispiele von Speichervorrichtungen schließen Vorrichtungen für nicht-flüchtigen Speicher ein. Ein nicht-flüchtiger Speicher (NVM) bewahrt Daten im Allgemeinen nach einem Leistungszyklus auf. 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.
  • Flash-Speichervorrichtungen können unter Verwendung eines NVM-Befehlssatzes und eines administrativen (Admin) Befehlssatzes arbeiten. Der NVM-Befehlssatz kann verschiedene Befehle einschließen, welche die Flash-Speichervorrichtung in Bezug auf Daten im nicht-flüchtigen Speicher durchführen kann, wie Lesen, Schreiben, Verifizieren usw. Der Admin-Befehlssatz kann verschiedene Befehle einschließen, welche die Flash-Speichervorrichtung in Bezug auf das Verwalten von Beständigkeitsgruppen, Namensräumen oder anderen Parametern des nicht-flüchtigen Speichers durchführen kann.
  • Ein in Zonen unterteilter Namensraum (Zoned Namespace, ZNS) ist eine SSD-Namensraumarchitektur, in der ein Bereich logischer Adressen im nicht-flüchtigen Speicher (z. B. ein in Zonen unterteilter Namensraum) in Gruppen fester Größe logischer Adressen oder Zonen unterteilt ist. Jede Zone innerhalb des in Zonen unterteilten Namensraums wird für eine bestimmte Anwendung verwendet. Zum Beispiel kann der Host Daten, die verschiedenen Anwendungen zugeordnet sind, in verschiedene Zonen des in Zonen unterteilten Namensraums schreiben. Die Flash-Speichervorrichtung 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.
  • Im ZNS können der NVM-Befehlssatz und der Admin-Befehlssatz zusätzliche Befehle einschließen, welche die Flash-Speichervorrichtung in Bezug auf den in Zonen unterteilten Namensraum durchführen kann, welche zusammen als ein Befehlssatz des in Zonen unterteilten Namensraums bezeichnet werden können. Als Beispiel unterstützt der Befehlssatz des in Zonen unterteilten Namensraums eine Namensraum-Identifikationsdatenstruktur, die Zonenbetriebseigenschaften angibt, die das spezifische Verhalten des in Zonen unterteilten Namensraums definieren. Eine solche Eigenschaft schließt ein Bit oder Flag ein, das angibt, ob die Flash-Speichervorrichtung Leseoperationen durchführen kann, die einen Bereich von logischen Adressen spezifizieren, die sich über mehrere Zonen erstrecken (d. h. ob die Vorrichtung über Zonengrenzen hinweg lesen kann). Wenn das Flag gesetzt ist (z. B. ein Wert von ,1'), kann es der Flash-Speichervorrichtung erlaubt werden, über Zonengrenzen hinweg zu lesen, während, wenn das Flag zurückgesetzt oder gelöscht ist (z. B. ein Wert von ,0'), es verboten werden kann, dass die Steuerung über Zonengrenzen hinweg liest. Der Host kann dieses Flag für die Flash-Speichervorrichtung in der Namensraum-Identifikationsdatenstruktur (oder in einer anderen Zonenkonfiguration) bereitstellen, die in einem Konfigurationsregister der Flash-Speichervorrichtung gespeichert sein kann.
  • KURZDARSTELLUNG
  • Ein Gesichtspunkt einer Speichervorrichtung wird hierin offenbart. Die Speichervorrichtung schließt einen Speicher und eine Steuerung ein. Die Steuerung ist eingerichtet, um Daten aus dem Speicher als Reaktion auf einen Host-Befehl zu lesen und das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf gespeicherten Informationen, die zuvor von einem Host empfangen wurden, zu begrenzen.
  • Ein weiterer Gesichtspunkt einer Speichervorrichtung wird hierin offenbart. Die Speichervorrichtung schließt einen Speicher und eine Steuerung ein. Die Steuerung ist eingerichtet, um im Speicher eine von einem Host empfangene Zonenkonfiguration zu speichern, um als Reaktion auf einen Host-Befehl Daten aus dem Speicher zu lesen und das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf der Zonenkonfiguration zu begrenzen.
  • Ein weiterer Gesichtspunkt einer Speichervorrichtung wird hierin offenbart. Die Speichervorrichtung schließt einen Speicher und eine Steuerung ein. Die Steuerung ist eingerichtet, um Daten aus dem Speicher als Reaktion auf einen Host-Befehl zu lesen, um Metadaten, die nachfolgenden Daten zugeordnet sind, aus dem Speicher zu lesen, einschließlich Informationen, die zuvor von einem Host angegeben wurden, und um das Vorabrufen der nachfolgenden Daten aus dem Speicher basierend auf den Informationen zu begrenzen.
  • Es versteht sich, dass andere Gesichtspunkte der Speichervorrichtung 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 Speichervorrichtung 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 Speichervorrichtung von 1 veranschaulicht.
    • 3 ist ein Konzeptdiagramm, das ein Beispiel einer Anordnung von Speicherzellen in der Speichervorrichtung von 1 veranschaulicht.
    • 4 ist ein Konzeptdiagramm, das ein Beispiel einer Anordnung von Blöcken in der Speichervorrichtung von 1 veranschaulicht.
    • 5 ist ein Konzeptdiagramm, das ein Beispiel einer Zuordnung von Zonen zu Gruppen logischer Adressen veranschaulicht, die von der Speichervorrichtung von 1 empfangen werden.
    • 6 ist ein Konzeptdiagramm, das ein Beispiel einer traditionellen Read-Look-Ahead-Leistung veranschaulicht.
    • 7A ist ein Konzeptdiagramm, das ein Beispiel einer optimierten Read-Look-Ahead-Leistung basierend auf Zonen veranschaulicht.
    • 7B ist ein Konzeptdiagramm, das ein Beispiel einer optimierten Read-Look-Ahead-Leistung basierend auf Zonen veranschaulicht.
    • 8 ist ein Konzeptdiagramm, das ein Beispiel einer Steuerung der Speichervorrichtung von 1 veranschaulicht, die eine Abwicklung von Lesen unter Verwendung von optimierter Read-Look-Ahead durchführt.
    • 9 ist ein Flussdiagramm, das ein Verfahren zur Abwicklung von Lesen, wie von der Speichervorrichtung 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 Speichervorrichtung in Kommunikation mit einer Host-Vorrichtung dargestellt. Diese Gesichtspunkte sind für Flash-Speichervorrichtungen, wie SSDs und SD-Karten, gut geeignet. Jedoch wird der Fachmann erkennen, dass diese Gesichtspunkte auf alle Typen von Speichervorrichtungen, 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-Speichervorrichtung eine Definition von Zonen oder Gruppen logischer Adressen bereit. Zum Beispiel kann der Host angeben, dass eine Gruppe von LBAs oder ein logischer Block einer ersten Zone zugeordnet ist, dass eine andere Gruppe von LBAs oder ein anderer logischer Block einer zweiten Zone zugeordnet ist, und so weiter. Die Flash-Speichervorrichtung kann dann jeden logischen Block auf einen oder mehrere physische Blöcke im Flash-Speicher abbilden. Zum Beispiel kann die Flash-Speichervorrichtung 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. Die Flash-Speichervorrichtung kann dann Daten in die Blöcke, die den Zonen zugeordnet sind, schreiben und lesen.
  • Beim Schreiben von Daten in Zonen kann die Flash-Speichervorrichtung zuerst einen Zonenschreibbefehl ausgeben, um das Schreiben in eine Zone einzuleiten, gefolgt von einem oder mehreren Zonenanfügungsbefehlen, um anschließend in diese Zone zu schreiben. Wenn zum Beispiel die erste Zone LBAs 0-1023 einschließt und jede LBA 512 Byte darstellt, kann der Host anfänglich einen Befehl an die Flash-Speichervorrichtung senden, um 256 kB Daten in LBAs 0-511 zu schreiben (welche die Flash-Speichervorrichtung unter Verwendung eines Zonenschreibbefehls ausführt), und der Host kann anschließend einen oder mehrere Befehle an die Flash-Speichervorrichtung senden, um weitere 256 kB Daten in LBAs 512-1023 zu schreiben (welche die Flash-Speichervorrichtung unter Verwendung eines oder mehrerer Zonenanfügungsbefehle ausführt). In ähnlicher Weise kann, wenn die zweite Zone LBAs 1024-2047 einschließt, der Host anfänglich die Flash-Speichervorrichtung auffordern, 256 kB Daten in LBAs 1024-1535 zu schreiben und anschließend 256 kB Daten in LBAs 1536-2047 zu schreiben. Wenn der Host versucht, eine zuvor geschriebene LBA in einer teilweise beschriebenen Zone zu überschreiben (zum Beispiel wenn der Host versucht, Daten erneut in LBAs 0-511 zu schreiben, ohne LBAs 512-1023 zu vervollständigen), kann die Flash-Speichervorrichtung den Befehl als ungültiges Schreiben abbrechen. Somit kann der Host durch den ZNS eingeschränkt werden, um Daten sequenziell in die definierten Zonen zu schreiben.
  • In ähnlicher Weise kann die Flash-Speichervorrichtung beim Lesen von Daten in Zonen die Daten sequentiell in jeder Zone lesen. Wenn zum Beispiel die erste Zone LBAs 0-1023 einschließt und jede LBA 512 Byte darstellt, kann der Host in ähnlicher Weise einen Befehl an die Flash-Speichervorrichtung senden, um 256 kB Daten aus den LBAs 0-511 zu lesen, und der Host kann anschließend einen oder mehrere Befehle an die Flash-Speichervorrichtung senden, um 256 kB Daten aus den LBAs 512-1023 zu lesen. Gleichermaßen kann, wenn die zweite Zone LBAs 1024-2047 einschließt, der Host anfänglich einen Befehl an die Flash-Speichervorrichtung senden, um Daten von LBAs 1024-1535 zu lesen, und der Host kann anschließend einen oder mehrere Befehle an die Flash-Speichervorrichtung senden, um Daten von LBAs 1536-2047 zu lesen.
  • In einigen Fällen kann der Host die Flash-Speichervorrichtung auffordern, Daten über Zonengrenzen hinweg zu lesen. In solchen Fällen kann die Flash-Speichervorrichtung ein Konfigurationsregister überprüfen, um zu bestimmen, ob ein Lesen über Zonengrenzen hinweg erlaubt ist oder nicht. Zum Beispiel kann die Flash-Speichervorrichtung überprüfen, ob ein Bit zum Lesen über Zonengrenzen hinweg in einer spezifischen Namensraum-Identifikationsdatenstruktur des Befehlssatzes des in Zonen unterteilten Namensraums vom Host empfangen wird. Abhängig vom Wert des Bits kann die Flash-Speichervorrichtung Lesevorgänge ermöglichen, die einen LBA-Bereich spezifizieren, der logische Blöcke in mehr als einer Zone enthält. Wenn zum Beispiel die erste Zone LBAs 0-1023 einschließt und die zweite Zone LBAs 1024-2047 einschließt und der Host einen Lesebefehl sendet, um Daten in den LBAs 0-1535 (über die Grenzen der ersten Zone und der zweiten Zone hinweg) zu lesen, kann die Steuerung die Daten erfolgreich lesen, wenn das Bit zum Lesen über Zonengrenzen hinweg gesetzt ist (z. B. ein Wert von 1). Andernfalls, wenn das Bit zum Lesen über die Zonengrenzen hinweg zurückgesetzt ist (z. B. ein Wert von 0), kann die Steuerung den Befehl als ungültiges Lesen mit einem Zonengrenzenfehler abbrechen. Somit kann der Host durch den ZNS eingeschränkt werden, um Daten sequenziell innerhalb einer definierten Zone zu lesen.
  • Beim Lesen von Daten kann die Flash-Speichervorrichtung auch eine Read-Look-Ahead (RLA)-Operation durchführen. Bei der RLA liest die Flash-Speichervorrichtung Daten aus dem nicht-flüchtigen Speicher, bevor sie vom Host einen Lesebefehl für diese Daten empfängt, und die Flash-Speichervorrichtung speichert diese Daten im Cache oder einem anderen flüchtigen Speicher, auf den zugegriffen werden soll, wenn der Lesebefehl später eintrifft. Somit kann die Flash-Speichervorrichtung Daten aus dem Speicher vorab abrufen, wenn die RLA durchgeführt wird. Die Größe von Daten, die bei der RLA vorab abgerufen werden, wird traditionell basierend auf verfügbaren Ressourcen in der Flash-Speichervorrichtung maximiert und festgelegt (z. B. NAND-Busgröße, Anzahl von Zwischenspeichern usw.). Wenn zum Beispiel die maximale Datenmenge, welche die Flash-Speichervorrichtung zu einem Zeitpunkt vorab abrufen kann, basierend auf den verfügbaren Ressourcen 512 kB ist, kann die Flash-Speichervorrichtung diese Menge im Allgemeinen jedes Mal vorab abrufen, wenn die RLA durchgeführt wird.
  • Die Daten, die bei der RLA vorab abgerufen werden, können basierend auf einem vorherigen Lesebefehl vorhergesagt oder spekuliert werden. Wenn zum Beispiel die Flash-Speichervorrichtung einen Lesebefehl vom Host für 512 kB sequentieller Daten empfängt (z. B. LBAs 0-1023 unter der Annahme, dass jede LBA 512 Byte darstellt), kann die Flash-Speichervorrichtung vorhersagen, dass der Host wahrscheinlich einen Lesebefehl für weitere 512 kB nachfolgender sequentieller Daten (z. B. LBAs 1024-2047) ausgeben wird. Daher kann die Flash-Speichervorrichtung zusätzlich zum Abrufen der ersten 512 kB Daten als Reaktion auf den Lesebefehl und zum Bereitstellen der Daten an den Host die nächsten 512 kB Daten vorab abrufen und diese Daten in flüchtigem Speicher speichern, bis die Vorrichtung einen nachfolgenden Lesebefehl für die vorab abgerufenen Daten empfängt. Wenn die Vorhersage erfolgreich ist, kann die Flash-Speichervorrichtung dem Host schnell die Daten aus dem flüchtigen Speicher bereitstellen, ohne Ressourcen im nicht-flüchtigen Speicher zu binden, wodurch ermöglicht wird, dass in der Zwischenzeit andere Hintergrundoperationen, wie z. B. Speicherbereinigung (GC), im nicht-flüchtigen Speicher durchgeführt werden. Eine erfolgreich vorhergesagte RLA kann somit Zeit und Ressourcen in der Flash-Speichervorrichtung sparen. Wenn die RLA-Vorhersage jedoch nicht erfolgreich ist (d. h. der Host gibt den Lesebefehl für die vorab abgerufenen Daten nicht aus), können die vorab abgerufenen Daten abgelehnt werden, und die Zeit, die verwendet wird, und Ressourcen, die während des Vorabrufens im nicht-flüchtigen Speicher gebunden werden, können ineffizient verwendet oder verschwendet werden.
  • Somit kann ein ordnungsgemäßes Vorhersagen von Daten und ein Auslösen der RLA für solche Daten die Flash-Speichervorrichtung erheblich begünstigen. Wenn die Flash-Speichervorrichtung jedoch einen ZNS implementiert, kann der oben beschriebene traditionelle RLA-Ansatz zu weniger erfolgreichen Vorhersagen führen, da eine traditionelle RLA in der Regel unabhängig von Konfigurationen des in Zonen unterteilten Namensraums durchgeführt wird. Wenn beispielsweise die Flash-Speichervorrichtung einen Lesebefehl von einem Host für Daten in einer Zone empfängt, kann die feste und maximierte Datenmenge, die in der Regel bei der RLA empfangen wird, Daten aus einer anderen Zone einschließen, selbst wenn die Flash-Speichervorrichtung zuvor eine Zonenkonfiguration empfangen hat, die verbietet, dass der Host und die Flash-Speichervorrichtung Daten über Zonen hinweg lesen. Zum Beispiel wird angenommen, dass eine erste Zone LBAs 0-1023 einschließt und eine zweite Zone LBAs 1024-2047 einschließt. Wenn in einem solchen Fall die Flash-Speichervorrichtung einen Lesebefehl empfängt, der LBAs 384-895 (z. B. 256 kB Daten) in der ersten Zone einschließt, und maximal 512 kB von nachfolgenden sequenziellen Daten bei der RLA vorab abruft (z. B. umfassend LBAs 896-1919), können die vorab abgerufenen Daten sowohl aus der ersten Zone als auch aus der zweiten Zone stammen. Wenn jedoch das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist (was das Lesen über Zonen hinweg verbietet), kann der Host keinen Lesebefehl senden, der diesen LBA-Bereich angibt, da er logische Blöcke in mehr als einem Bereich enthält, und daher ist es wahrscheinlich, dass die RLA-Daten als Reaktion auf eine fehlgeschlagene Vorhersage verworfen werden können.
  • Um die RLA zu optimieren und eine höhere Wahrscheinlichkeit erfolgreicher Vorhersagen in Flash-Speichervorrichtungen bereitzustellen, welche den ZNS implementieren, kann eine Steuerung der Flash-Speichervorrichtung ihr Vorabrufen von Daten (z. B. abdecken ihrer RLA) basierend auf einer durch einen Host angegebenen Zonenkonfiguration begrenzen. Zum Beispiel kann die Zonenkonfiguration die spezifische Namensraum-Identifikationsdatenstruktur des Befehlssatzes des in Zonen unterteilten Namensraums einschließen, einschließlich Zonenbetriebseigenschaften, wie das Flag zum Lesen über Zonengrenzen hinweg, und die Steuerung kann bestimmen, ob das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist (d. h., dass das Lesen über Zonengrenzen hinweg verboten ist). Wenn die Steuerung bestimmt, dass das Lesen über Zonengrenzen hinweg verboten ist, kann die Steuerung als Nächstes bestimmen, ob der aktuelle Lesebefehl vom Host logische Adressen innerhalb, aber nicht einschließlich des Endes, einer bestimmten Zone einschließt. Wenn die logischen Adressen im aktuellen Lesebefehl das Ende der Zone nicht umfassen (sie befinden sich innerhalb der Mitte der Zone), kann die Steuerung vorhergesagte Daten bis zum Ende der Zone vorab abrufen, ungeachtet dessen, ob ein Cache und Systemressourcen für ein zusätzliches Vorabrufen von Daten verfügbar sind. Wenn die Steuerung später einen Lesebefehl für die vorab abgerufenen Daten empfängt (einschließlich logischer Adressen bis zum Ende der Zone), dann kann die Steuerung anschließend ein Vorabrufen von maximaler Größer bei der RLA basierend auf den verfügbaren Systemressourcen durchführen (ohne die RLA zu begrenzen).
  • Zum Beispiel kann im obigen Beispiel, in dem die erste Zone LBAs 0-1023 einschließt und die zweite Zone LBAs 1024-2047 einschließt, die Steuerung bestimmen, dass das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist und dass der aktuelle Lesebefehl LBAs 384-895 (z. B. 256 kB Daten) in der ersten Zone einschließt. In einem solchen Fall kann die Steuerung zum Vermeiden des Durchführens einer unnötigen RLA in der zweiten Zone zu diesem Zeitpunkt das Vorabrufen von Daten auf LBAs 896-1023 (z. B. 64 kB) begrenzen, die in der ersten Zone enden, selbst wenn die maximale Datenmenge, die gleichzeitig eine RLA sein kann, 512 kB ist, wie oben beschrieben wird. Wenn die RLA-Vorhersage erfolgreich ist und die Steuerung später einen nachfolgenden Lesebefehl für LBAs 896-1023 bis zum Ende der ersten Zone empfängt, kann die Steuerung bestimmen, dass eine höhere Wahrscheinlichkeit besteht, dass ein zusätzlicher Lesebefehl für zusätzliche Daten in der zweiten Zone empfangen werden kann (da in der ersten Zone keine Daten zum Lesen mehr übrig sind). Infolgedessen kann die Steuerung eine RLA für die zusätzlichen Daten in der zweiten Zone (z. B. LBAs 1024-2047) durchführen, ohne das Vorabrufen basierend auf der Zonenkonfiguration zu begrenzen. Dementsprechend kann die Wahrscheinlichkeit erfolgreicher RLA-Vorhersagen im ZNS zunehmen, und die Ressourcennutzung der Flash-Speichervorrichtung kann verbessert werden.
  • In einem anderen Beispiel kann die Steuerung bestimmen, dass das Flag zum Lesen über Zonengrenzen hinweg gesetzt ist oder dass das Lesen über Zonengrenzen hinweg anderweitig erlaubt ist. Alternativ kann die Flash-Speichervorrichtung eine Vorrichtung sein, die keinen ZNS implementiert und somit keine Zonen aufweist. In jedem Beispiel kann die Steuerung versuchen, die RLA in diesen Situationen zu optimieren, indem das Vorabrufen von Daten (z. B. abdecken der RLA) basierend auf gespeicherten Metadaten, die ein sequenzielles Host-Schreibmuster angeben, begrenzt wird. Die gespeicherten Metadaten können durch die Steuerung bestimmt werden oder in einigen Fällen durch den Host bereitgestellt werden.
  • In einem Beispiel kann die Steuerung die Metadaten aus einer Übermittlungswarteschlange von Schreibbefehlen vom Host bestimmen, die Informationen einschließen kann, die angeben, ob ein sequenzielles Schreibmuster in einem ersten Schreibbefehl fortgesetzt wird oder in einem zweiten Schreibbefehl endet. Zum Beispiel kann die Steuerung aus der Übermittlungswarteschlange bestimmen, dass ein erster Schreibbefehl, der LBAs 384-895 einschließt, die 256 kB sequentieller Daten zugeordnet sind, und ein zweiter Schreibbefehl, der LBAs 896-1023 einschließt, anhängig sind. Die Steuerung kann den zweiten Schreibbefehl in der Übermittlungswarteschlange vor dem Verarbeiten und Leeren der Hostdaten im ersten Schreibbefehl an den Flash-Speicher empfangen. Basierend auf den Datenlängen und der Reihenfolge der LBAs für diese Schreibbefehle kann die Steuerung identifizieren, dass der erste Schreibbefehl und der zweite Schreibbefehl sequenzieller Natur sind (d. h. der zweite Schreibbefehl für LBAs 896-1023 setzt das sequenzielle Muster vom ersten Schreibbefehl für LBAs 384-895 fort). Um diese Informationen bezüglich des sequentiellen Musters für die RLA zu behalten, kann die Steuerung die Informationen als Metadaten speichern, die dem ersten Schreibbefehl zugeordnet sind. Zum Beispiel kann die Steuerung die Metadaten in einem Flash Management Unit (FMU)-Header der geschriebenen sequenziellen Daten im ersten Schreibbefehl vor dem Leeren der Daten in den nicht-flüchtigen Speicher markieren, die Metadaten in einer Tabelle oder einer anderen Datenstruktur im nicht-flüchtigen Speicher speichern oder die Metadaten auf andere Weise speichern. Wenn die Steuerung später einen Lesebefehl für die sequenziellen Daten empfängt, kann die Steuerung diese Metadaten zusammen mit den sequenziellen Daten lesen, um zu bestimmen, ob und wie viel der RLA oder des Vorabrufens nachfolgender Daten erforderlich ist. Wenn zum Beispiel der Lesebefehl LBAs 384-895 einschließt, die 256 kB sequenzieller Daten zugeordnet sind, und die Metadaten angeben, dass das sequenzielle Muster für LBAs 896-1023 fortgesetzt wird, wie vorstehend beschrieben wird, kann die Steuerung das Vorabrufen von Daten auf LBAs 896-1023 (z. B. 64 kB) basierend auf den Metadaten begrenzen, selbst wenn die maximale Datenmenge, die gleichzeitig die RLA sein kann, 512 kB beträgt, wie vorstehend beschrieben wird. Alternativ kann, wenn die Metadaten angeben, dass ein sequenzielles Muster endet (z. B. die nächsten LBAs nicht sequenziell zu dem aktuellen Lesebefehl sind), die Steuerung möglicherweise keine RLA durchführen, wodurch Zeit und Ressourcen für andere Hintergrundoperationen wie GC gespart werden. Dementsprechend kann die Ressourcennutzung der Flash-Speichervorrichtung aufgrund der RLA auch für Vorrichtungen, die den ZNS nicht implementieren, oder Vorrichtungen, die den ZNS ohne Zonengrenzenbeschränkungen implementieren, verbessert werden.
  • 1 zeigt ein beispielhaftes Blockdiagramm 100 einer Speichervorrichtung 102, die mit einer Host-Vorrichtung 104 (auch „Host“) gemäß einer beispielhaften Ausführungsform kommuniziert. Der Host 104 und die Speichervorrichtung 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 Speichervorrichtung 102 angeordnet sein. Wenngleich 1 veranschaulicht, dass der Host 104 getrennt von der Speichervorrichtung 102 gezeigt ist, kann der Host 104 in anderen Ausführungsformen ganz oder teilweise in die Speichervorrichtung 102 integriert sein. Alternativ dazu kann der Host 104 in seiner Gesamtheit oder alternativ mit einiger Funktionalität in der Speichervorrichtung 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 Speichervorrichtung 102 kommunizieren, oder mehrere Speichervorrichtungen 102, die mit dem/den Host(s) kommunizieren, einschließen.
  • Die Host-Vorrichtung 104 kann Daten in der Speichervorrichtung 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), konfigurierbare 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 Speichervorrichtung 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 Speichervorrichtung 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 Speichervorrichtung 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 (VWVAN), 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 Speichervorrichtung 102 schließt einen Speicher ein. In der beispielhaften Ausführungsform von 1 kann die Speichervorrichtung 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 Speichervorrichtung 102 oder Benutzerdaten, die vom Host zur Speicherung in der Speichervorrichtung 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 Speichervorrichtung 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 Speichervorrichtung 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 Speichervorrichtung 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 vom Host 104 geschrieben werden, auf physische Adressen im NVM 110, wobei der/die Ort(e) angegeben werden, in denen alle der Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 der Speichervorrichtung 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 im 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, welche 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 Speichervorrichtung 102. Der Cache 122 schließt Einträge ein, welche die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die durch den Host 104 angefordert werden, auf physische Adressen im 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 im 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 im 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 im 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 die Daten werden anschließend von den Daten-Latches 126 an die Zellen 116 übertragen.
  • Die Speichervorrichtung 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 ferner eingerichtet, um beim Lesen oder Schreiben von Daten in die Zellen 116 auf die L2P-Abbildungstabelle 120 im NVM 110 zuzugreifen. Zum Beispiel kann die Steuerung 123 logisch-zu-physisch-Adressabbildungen vom 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, welche 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 im NVM 110 oder in einem Speicher außerhalb der Speichervorrichtung 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 Speichervorrichtung 102 durch Senden eines Schreibbefehls an die Speichervorrichtung 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 im NVM 110 der Speichervorrichtung 102 zum Speichern der Daten zu. Die Steuerung 123 speichert die L2P-Abbildung im NVM (und im 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 am 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 Speichervorrichtung 102 abrufen, indem er einen Lesebefehl, der eine oder mehrere logische Adressen spezifiziert, die den Daten zugeordnet sind, die von der Speichervorrichtung 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 im Cache 122 oder ansonsten im NVM zu, um die logischen Adressen, die im 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').
  • Die Steuerung 123 kann auch Daten in Zonen schreiben und lesen, die vom Host 104 eingerichtet werden. Zum Beispiel können im ZNS Gruppen zusammenhängender, nicht überlappender logischer Adressen (z. B. LBAs 208) in verschiedene Zonen unterteilt werden. Die Steuerung kann Daten von Seiten 316 von Zellen 302 in den Blöcken 402 lesen oder auf diese schreiben, die den logischen Adressen 208 entsprechen, welche den verschiedenen Zonen zugeordnet sind.
  • 5 veranschaulicht ein Konzeptdiagramm 500 eines Beispiels von Zonen 502. Jede Zone 502 weist eine fixe Größe auf und enthält einen zusammenhängenden Bereich sequentieller logischer Adressen 504 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.
  • Beim Schreiben von Daten in Zonen 502 kann die Steuerung 123 zuerst einen Zonenschreibbefehl ausgeben, um das Schreiben in eine Zone einzuleiten, gefolgt von einem oder mehreren Zonenanfügungsbefehlen, um anschließend in diese Zone zu schreiben. Wenn zum Beispiel eine der Zonen 502 LBAs 0-1023 einschließt und jede LBA 512 Byte darstellt, kann der Host 104 anfänglich einen Befehl an die Steuerung senden, um 256 kB Daten in LBAs 0-511 zu schreiben (den die Steuerung unter Verwendung eines Zonenschreibbefehls ausführen kann), und der Host kann anschließend einen oder mehrere Befehle an die Steuerung senden, um andere 256 kB Daten in LBAs 512-1023 zu schreiben (welche die Steuerung unter Verwendung eines oder mehrerer Zonenanfügungsbefehle ausführen kann). In ähnlicher Weise kann der Host, wenn eine andere der Zonen 502 LBAs 1024-2047 einschließt, anfänglich die Steuerung auffordern, 256 kB Daten in LBAs 1024-1535 zu schreiben und anschließend 256 kB Daten in LBAs 1536-2047 zu schreiben. Wenn der Host versucht, eine zuvor geschriebene LBA in einer teilweise beschriebenen Zone zu überschreiben (zum Beispiel wenn der Host versucht, Daten erneut in die LBAs 0-511 zu schreiben, ohne die LBAs 512-1023 abzuschließen), kann die Steuerung 123 den Befehl als ungültiges Schreiben abbrechen. Somit kann der Host 104 durch den ZNS eingeschränkt werden, um Daten sequenziell in jede der Zonen 502 zu schreiben.
  • In ähnlicher Weise kann die Steuerung 123 beim Lesen von Daten in Zonen 502 die Daten sequentiell in jeder Zone lesen. Wenn zum Beispiel eine der Zonen 502 LBAs 0-1023 einschließt und jede LBA 512 Byte darstellt, kann der Host 104 in ähnlicher Weise einen Befehl an die Steuerung senden, um 256 kB Daten aus den LBAs 0-511 zu lesen, und der Host kann anschließend einen oder mehrere Befehle an die Steuerung senden, um 256 kB Daten aus den LBAs 512-1023 zu lesen. Gleichermaßen kann, wenn eine andere der Zonen 502 LBAs 1024-2047 einschließt, der Host 104 anfänglich einen Befehl an die Steuerung senden, um Daten von LBAs 1024-1535 zu lesen, und der Host kann anschließend einen oder mehrere Befehle an die Steuerung senden, um Daten von LBAs 1536-2047 zu lesen.
  • Die Steuerung 123 kann auch vom Host 104 eingerichtet werden, um Daten über Zonengrenzen 506 hinweg zu lesen. Zum Beispiel kann die Steuerung ein Konfigurationsregister überprüfen, das im NVM 110 gespeichert ist, um zu bestimmen, ob das Lesen über Zonengrenzen 506 hinweg erlaubt ist oder nicht. Zum Beispiel kann die Steuerung überprüfen, ob ein Bit zum Lesen über Zonengrenzen hinweg in einer spezifischen Namensraum-Identifikationsdatenstruktur des Befehlssatzes des in Zonen unterteilten Namensraums vom Host 104 empfangen wird. Abhängig vom Wert des Bits kann die Steuerung 123 Lesevorgänge zulassen, die einen LBA-Bereich spezifizieren, der logische Blöcke in mehr als einer der Zonen 502 enthält. Wenn zum Beispiel eine der Zonen 502 LBAs 0-1023 einschließt und eine andere der Zonen 502 LBAs 1024-2047 einschließt und der Host 104 einen Lesebefehl zum Lesen von Daten in den LBAs 0-1535 (über die Grenze 506 der jeweiligen Zonen) sendet, kann die Steuerung die Daten erfolgreich lesen, wenn das Bit zum Lesen über Zonengrenzen hinweg gesetzt ist (z. B. ein Wert von 1). Andernfalls, wenn das Bit zum Lesen über die Zonengrenzen hinweg zurückgesetzt ist (z. B. ein Wert von 0), kann die Steuerung den Befehl als ungültiges Lesen mit einem Zonengrenzenfehler abbrechen. Somit kann der Host durch den ZNS eingeschränkt werden, um Daten sequenziell innerhalb einer definierten Zone zu lesen.
  • Beim Lesen von Daten von Seiten 316 von Zellen 302 in den Blöcken 402 des NVM 110 kann die Steuerung 123 auch die RLA durchführen. Bei der RLA kann die Steuerung Daten aus dem NVM 110 vorab abrufen, bevor sie vom Host 104 einen Lesebefehl für diese Daten empfängt, und die Steuerung 123 kann diese vorab abgerufenen Daten in den Cache 122 oder einen anderen flüchtigen Speicher (z. B. den flüchtigen Speicher 118) speichern, auf den zugegriffen werden soll, wenn der Lesebefehl später eintrifft. Die Größe von Daten, die bei der RLA vorab abgerufen werden, wird traditionell basierend auf verfügbaren Ressourcen in der Speichervorrichtung 102 maximiert und festgelegt (z. B. NAND-Busgröße, Anzahl von Zwischenspeichern usw.). Wenn zum Beispiel die maximale Datenmenge, welche die Steuerung zu einem Zeitpunkt vorab abrufen kann, basierend auf den verfügbaren Ressourcen 512 kB ist, kann die Steuerung traditionell diese Menge jedes Mal vorab abrufen, wenn die RLA durchgeführt wird.
  • 6 zeigt ein Beispieldiagramm 600, das eine traditionelle RLA-Leistung veranschaulicht, wenn der NVM 110 in Zonen unterteilt ist, einschließlich einer ersten Zone 602 und einer zweiten Zone 604, die durch eine Zonengrenze 606 getrennt sind. Die erste Zone 602 und die zweite Zone 604 können jeweils einer der Zonen 502 in 5 entsprechen, und die Zonengrenze 606 kann einer der Zonengrenzen 506 in 5 entsprechen. Im Beispiel von 6 empfängt die Steuerung 123 einen Lesebefehl vom Host 104, der logische Adressen in der ersten Zone 602 einschließt, und die Steuerung liest Daten 608 aus diesen logischen Adressen. Zum Beispiel kann die erste Zone 602 derart eingerichtet sein, dass sie LBAs 0-1023 einschließt, und die Steuerung kann 256 kB Daten 608 in LBAs 384-895 aus der ersten Zone 602 lesen. Darüber hinaus kann die Steuerung 123 identifizieren, dass die an LBAs 384-895 gelesenen Daten 608 ein sequenzielles Muster widerspiegeln, und daher kann die Steuerung bestimmen, dass der Host 104 wahrscheinlich einen Lesebefehl für nachfolgende Daten 610 im sequenziellen Muster ausgeben wird, zum Beispiel an LBAs 896-1919. Daher kann die Steuerung bestimmen, eine RLA maximaler Größe basierend auf verfügbaren Ressourcen in der Speichervorrichtung 102 (z. B. 512 kB von nachfolgenden Daten 610) durchzuführen, wie in 6 veranschaulicht wird. Somit kann die Steuerung zusätzlich zum Abrufen der Daten 608 als Reaktion auf den Lesebefehl die nachfolgenden Daten 610 vorab abrufen und diese Daten vorübergehend im flüchtigen Speicher 118 speichern.
  • Wenn jedoch die Steuerung 123 die nachfolgenden Daten 610 in einer traditionellen RLA vorab abruft, wie vorstehend beschrieben wird, können die nachfolgenden Daten unabhängig von der ersten Zone 602 und der zweiten Zone 604 vorab abgerufen werden. Zum Beispiel berücksichtigt die Steuerung beim Durchführen der RLA möglicherweise nicht, dass die nachfolgenden Daten 610 gerade die verschiedenen Zonen sind, oder dass es dem Host 104 verboten ist, über Zonengrenzen hinweg zu lesen (zum Beispiel ist das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt). Folglich können einige der nachfolgenden Daten 610, die bei der RLA vorab abgerufen werden, verworfen werden. Zum Beispiel kann der Host die erste Zone 602 und die zweite Zone 604 basierend auf der Zonenkonfiguration als logisch durch die Zonengrenze 606 begrenzt betrachten, und daher kann der Host 104 seinen nachfolgenden Lesebefehl an der Zonengrenze 606 selbst abdecken. Mit anderen Worten gibt der Host 104 möglicherweise keinen nachfolgenden Lesebefehl für die Gesamtheit der nachfolgenden Daten 610 aus, sondern kann vielmehr separate Lesebefehle für die Daten in verschiedenen Zonen zu verschiedenen Zeitpunkten ausgeben. Da einige der nachfolgenden Daten 610, die vorab abgerufen wurden, möglicherweise nicht sofort durch den Host angefordert werden, können diese Daten aus dem Cache verworfen werden (z. B. um Platz für andere vorab abgerufene Daten zu schaffen). Infolgedessen können der Zeitaufwand und die Ressourcen, die im NVM 110 während des Vorabrufens nachfolgender Daten 610 gebunden sind, ineffizient genutzt oder verschwendet werden.
  • Dementsprechend kann die Steuerung 123, um die RLA zu optimieren und die Wahrscheinlichkeit des Verwerfens zu reduzieren, das Vorabrufen nachfolgender Daten (z. B. nachfolgender Daten 610) basierend auf einer durch den Host 104 angegebenen Zonenkonfiguration begrenzen. Zum Beispiel kann die Steuerung 123 vom Host 104 eine Zonenkonfiguration empfangen, die eine Zuordnung von Zonen (z. B. Zonen 502) zu Gruppen sequentieller, nicht zusammenhängender logischer Adressen (z. B. logische Adressen 504), eine Namensraum-Identifikationsdatenstruktur, die Zonenbetriebseigenschaften und optionale in Zonen unterteilte Befehlsunterstützung angibt, und andere Informationen in Bezug auf den ZNS angibt. Eine der vom Host empfangenen Zonenbetriebseigenschaften kann das Flag zum Lesen über Zonengrenzen hinweg einschließen, das angibt, ob der Host Daten über Zonengrenzen 506, 606 hinweg lesen kann (z. B. innerhalb der ersten Zone 602 und der zweiten Zone 604), und das in einem Konfigurationsregister im NVM 110 gespeichert werden kann. Wenn die Steuerung bestimmt, dass das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist, oder anderweitig angibt, dass der Host möglicherweise nicht über Zonengrenzen hinweg liest, kann die Steuerung die RLA begrenzen, wenn der aktuelle Lesebefehl vom Host logische Adressen innerhalb, aber nicht einschließlich des Endes, einer bestimmten Zone einschließt. Wenn zum Beispiel unter Bezugnahme auf 6 die Steuerung 123 bestimmt, dass die Daten 608, die als Reaktion auf den Lesebefehl in der ersten Zone 602 (z. B. von LBAs 384-895) gelesen werden, vor der Zonengrenze 606 enden (wie in diesem Beispiel durch LBA 1023 dargestellt), dann kann die Steuerung bestimmen, dass sie wahrscheinlich einen nachfolgenden Lesebefehl für nachfolgende Daten 610 innerhalb der ersten Zone 602 (z. B. in LBAs 896-1023) empfangen wird, aber nicht im gleichen Befehl für nachfolgende Daten 610 innerhalb der zweiten Zone 604 (z. B. in LBAs 1024-2047). Infolgedessen kann die Steuerung die RLA so begrenzen, dass die Steuerung nur nachfolgende Daten 610 bis zum Ende der ersten Zone 602 vorab abruft, ohne in die zweite Zone 604 einzutreten, ungeachtet dessen, ob Ressourcen in der Speichervorrichtung 102 für ein zusätzliches Vorabrufen von Daten in der zweiten Zone verfügbar sind. Sobald der nachfolgende Lesebefehl empfangen wird, der die vorab abgerufenen Daten von der ersten Zone 602 anfordert, und die Steuerung bestimmt, dass sie wahrscheinlich einen zusätzlichen Lesebefehl für nachfolgende Daten 610, beginnend in der zweiten Zone 604, empfangen wird, kann die Steuerung zu diesem Zeitpunkt eine RLA ohne Begrenzung für nachfolgende Daten 610 innerhalb der zweiten Zone 604 durchführen.
  • Somit kann die Steuerung 123 die Ressourcen der Speichervorrichtung 102 optimal nutzen, indem sie effektiv eine zweistufige RLA in Situationen durchführt, in denen das Lesen über Zonengrenzen hinweg verboten ist und der aktuelle Lesebefehl Daten vor dem Ende einer aktuellen Zone anfordert. In der ersten Phase der RLA kann die Steuerung 123 die RLA sofort für einen Teil der nachfolgenden Daten auslösen, der sich innerhalb derselben Zone wie die aktuelle Leseanforderung befindet, während sie das Durchführen der RLA für einen Rest der nachfolgenden Daten innerhalb einer anderen Zone als die aktuelle Leseanforderung unterlässt. Wenn die Steuerung 123 danach bestimmt, dass die erste Phase der RLA erfolgreich ist (ein nachfolgender Lesebefehl wird empfangen, welcher den vorab abgerufenen Abschnitt der nachfolgenden Daten anfordert), kann die Steuerung die zweite Phase der RLA ausführen, in welcher der Rest der nachfolgenden Daten innerhalb der anderen Zone vorab abgerufenen wird. Infolgedessen können die Ressourcen der Speichervorrichtung 102 optimal verwendet werden, um es der Steuerung zu ermöglichen, GC- oder andere Backend-Funktionen während der Zeiten durchzuführen, zu denen die RLA ansonsten möglicherweise durchgeführt worden wäre.
  • 7A und 7B veranschaulichen Beispieldiagramme 700, 750 einer optimierten RLA-Leistung, wenn der NVM 110 in Zonen unterteilt ist, einschließlich einer ersten Zone 702, 752 und einer zweiten Zone 704, 754, die durch eine Zonengrenze 706, 756 getrennt sind. Die optimierte RLA kann eine zweiphasige RLA sein, wie oben beschrieben wurde, wobei 7A ein Beispiel der ersten Phase der optimierten RLA (durchgeführt zum Zeitpunkt t1) veranschaulicht und 7B ein Beispiel der zweiten Phase der optimierten RLA (durchgeführt zum Zeitpunkt t2) veranschaulicht. Die erste Zone 702, 752 und die zweite Zone 704, 754 können jeweils der ersten Zone 602 und der zweiten Zone 604 in 6 entsprechen und die Zonengrenze 706, 756 kann in ähnlicher Weise der Zonengrenze 606 in 6 entsprechen.
  • Bezugnehmend auf 7A empfängt die Steuerung 123 der Speichervorrichtung 102 anfänglich einen Lesebefehl vom Host 104, der logische Adressen in der ersten Zone 702 einschließt, und die Steuerung liest Daten 708 aus diesen logischen Adressen (z. B. zum Zeitpunkt t1). Zum Beispiel kann die erste Zone 702 derart eingerichtet sein, dass sie LBAs 0-1023 einschließt, und die Steuerung kann 256 kB Daten 708 in LBAs 384-895 aus der ersten Zone 702 lesen. Darüber hinaus kann die Steuerung 123 identifizieren, dass die Daten von diesen logischen Adressen (z. B. LBAs 384-895) ein sequentielles Muster widerspiegeln, und daher kann die Steuerung vorhersagen, dass der Host 104 wahrscheinlich einen Lesebefehl für nachfolgende Daten 710 im sequentiellen Muster ausgeben wird (zum Beispiel nachfolgende Daten in LBAs 896-1919). Zusätzlich kann die Steuerung basierend auf einer vom Host 104 empfangenen Zonenkonfiguration bestimmen, dass ein Lesen über Zonengrenzen hinweg verboten wird (z. B. das Flag zum Lesen über Zonengrenzen hinweg ist zurückgesetzt) und dass der aktuelle Lesebefehl LBAs in der ersten Zone 702 enthält, die vor der Zonengrenze 706 enden (z. B. LBAs 384-895, die vor LBA 1023 enden, welche die Grenze der ersten Zone 702 sein kann).
  • Dementsprechend kann die Steuerung 123 basierend auf der Zonenkonfiguration vorhersagen, dass, solange der Host 104 ein Lesen einer aktuellen Zone nicht abgeschlossen hat, nachfolgende Lesebefehle vom Host innerhalb derselben Zone bleiben. Zum Beispiel kann die Steuerung als Reaktion auf den Empfang des Befehls für LBAs 384-895 in der ersten Zone 702 vorhersagen, dass der Host wahrscheinlich einen nachfolgenden Lesebefehl für LBAs 896-1023 in der ersten Zone 702 senden wird, aber nicht gleichzeitig für LBAs 1024-1919 in der zweiten Zone 704. Daher kann die Steuerung bestimmen, das Vorabrufen nachfolgender Daten 710 auf diejenigen LBAs zu begrenzen, die an der Zonengrenze 706 der ersten Zone 702 enden (z. B. LBAs 896-1023 oder 64 kB Daten in diesem Beispiel), ohne die RLA zusätzlicher Daten 712 in der zweiten Zone 704 (z. B. LBAs 1024-1919) durchzuführen.
  • Bezugnehmend auf 7B kann die Steuerung 123 später einen nachfolgenden Lesebefehl vom Host 104 empfangen, einschließlich der logischen Adressen, die den vorab abgerufenen Daten in der ersten Zone 752 zugeordnet sind, und die Steuerung kann die nachfolgenden Daten 758 von diesen logischen Adressen lesen (z. B. zum Zeitpunkt t2). Zum Beispiel kann der nachfolgende Lesebefehl nun die Daten in LBAs 896-1023 anfordern, die zuvor vorab abgerufen und im flüchtigen Speicher 118 gespeichert wurden, und die Steuerung kann erwirken, dass nachfolgende Daten aus dem flüchtigen Speicher dem Host bereitgestellt werden. Wenn die Steuerung 123 bestimmt, dass der nachfolgende Lesebefehl den Rest der LBAs in der ersten Zone 752 einschließt (d. h. keine weiteren Lesebefehle für die erste Zone ankommen), kann die Steuerung 123 bestimmen, dass ein zusätzlicher Lesebefehl für Daten in der zweiten Zone 754 (z. B. zusätzliche Daten 760) wahrscheinlich vom Host empfangen wird. Zum Beispiel kann die Steuerung bestimmen, dass ein zusätzlicher Lesebefehl ankommen kann, der nun Daten von LBAs 1024-1919 anfordert, und dass diese angeforderten Daten Teil desselben sequenziellen Musters wie die zuvor angeforderten Daten sind. Dementsprechend kann die Steuerung die RLA durchführen und die zusätzlichen Daten 760 in der zweiten Zone 704 vorab abrufen, wie oben beschrieben wurde.
  • In einem Beispiel kann die Steuerung 123 die RLA für die zusätzlichen Daten 760 in der zweiten Zone 754 durchführen, ohne das Vorabrufen basierend auf der Zonenkonfiguration zu begrenzen. Zum Beispiel kann die Steuerung eine uneingeschränkte RLA bis zur maximal verfügbaren Größe durchführen, die basierend auf verfügbaren Systemressourcen vorab abgerufen werden kann, wie vorstehend in Bezug auf 6 beschrieben wurde. Da die zusätzlichen Daten 760 jedoch in einer anderen Zone beginnen als die zuvor gelesenen Daten, ist es möglich, dass der Host möglicherweise keinen Lesebefehl sendet, der die Gesamtheit der vorab abgerufenen Daten aus der zweiten Zone anfordert. Zum Beispiel kann der Host entscheiden, den Lesebefehl für einen Teil der zusätzlichen Daten in der zweiten Zone zu senden, oder er kann sogar einen Lesebefehl für zusätzliche Daten in einer dritten Zone (nicht gezeigt) senden. In einem solchen Fall können Systemressourcen noch ineffizient für die RLA verwendet werden.
  • Um diese Möglichkeit einer ineffizienten RLA der zusätzlichen Daten 760 anzugehen, kann die Steuerung 123 das Vorabrufen der zusätzlichen Daten 760 begrenzen. In einem Beispiel kann die RLA-Beschränkung statischer Natur sein. Anstatt beispielsweise eine maximale Datenmenge, die für die RLA verfügbar ist, vorab abzurufen (z. B. 512 kB oder eine andere Datengröße), kann die Steuerung 123 konservativ eine kleinere Menge der zusätzlichen Daten vorab abrufen (z. B. 128 kB oder eine andere Datengröße, die kleiner als die maximale Datenmenge ist, die für die RLA verfügbar ist). In einem anderen Beispiel kann die RLA dynamischer Natur sein. Anstatt beispielsweise die maximale Menge an Daten, die für die RLA verfügbar ist, vorab abzurufen, kann die Steuerung 123 eine Menge der zusätzlichen Daten 760, die vorab abgerufen werden sollen, basierend auf vorherigen sequenziellen Mustern vom Host 104 oder anderen historischen Informationen bestimmen. Wenn zum Beispiel die oben beschriebene zweiphasige RLA für vorherige Lesebefehle durchgeführt wird, kann die Steuerung 123 die Anzahl von Erfolgen oder Fehlschlägen der zweiten Phase der RLA und die Menge, falls vorhanden, zusätzlicher Daten verfolgen, die später vom Host in der zweiten Zone nach der zweiten Phase der RLA angefordert wurden. Wenn die Steuerung basierend auf den vorherigen sequentiellen Mustern oder anderen historischen Informationen bestimmt, dass der Host tendenziell nur einen Teil der zusätzlichen Daten in der zweiten Zone anfordert, oder dass der Host die zusätzlichen Daten in der zweiten Zone im Allgemeinen überhaupt nicht anfordert, kann die Steuerung bestimmen, die RLA der zusätzlichen Daten auf einen größeren Grad zu begrenzen, beispielsweise durch Verwenden kleinerer RLA-Größen oder Verhindern der RLA. Wenn die Steuerung dagegen basierend auf den vorherigen sequenziellen Mustern oder anderen historischen Informationen bestimmt, dass der Host tendenziell einen größeren Teil der zusätzlichen Daten in der zweiten Zone oder sogar ihre Gesamtheit anfordert, kann die Steuerung bestimmen, RLA-Einschränkungen der zusätzlichen Daten zu lockern oder die RLA in geringerem Maße zu begrenzen, beispielsweise durch Verwenden größerer (oder sogar der maximalen) RLA-Größen. Diese Ansätze ermöglichen, dass zusätzliche Ressourcen in der Speichervorrichtung 102 statisch oder dynamisch von der RLA zurückgehalten werden und stattdessen für Hintergrundoperationen verwendet werden, falls Lesebefehle für die Gesamtheit zusätzlicher Daten nicht empfangen werden, wodurch die Effizienz der Speichervorrichtung 102 verbessert wird.
  • Somit kann für Speichervorrichtungen, die den ZNS implementieren, die RLA optimiert werden, wie in den vorstehenden Beispielen beschrieben wurde, wenn das Lesen über Zonengrenzen hinweg verboten wird. Wenn andererseits ein Lesen über Zonengrenzen hinweg erlaubt ist (z. B. das Flag zum Lesen über Zonengrenzen hinweg gesetzt ist), dann kann der Host 104 den gesamten logischen Bereich des NVM 110, der dem in Zonen unterteilten Namensraum zugeordnet ist, als einen einzelnen Raum für Lesevorgänge anstatt als separate Zonen betrachten. Darüber hinaus können Speichervorrichtungen, welche den ZNS nicht implementieren (z. B. Nicht-ZNS-Vorrichtungen), aus der Perspektive des Lesens ähnlich wie ZNS-Vorrichtungen arbeiten, wenn das Lesen über Zonengrenzen hinweg erlaubt ist. In solchen Vorrichtungen kann die Steuerung die RLA in einem Beispiel basierend auf der internen Ressourcenverfügbarkeit der Speichervorrichtung durchführen. Zum Beispiel kann die Steuerung die RLA auslösen, wenn die Speichervorrichtung niedrige Befehlswarteschlangentiefen aufweist und wenn vorhandene Backend-Arbeit geringer ist als die, die das System tatsächlich unterstützen kann.
  • Alternativ führt in einem anderen Beispiel die Steuerung 123 solcher Vorrichtungen (z. B. Nicht-ZNS-Vorrichtungen und ZNS-Vorrichtungen, die eingerichtet sind, um das Lesen über Zonengrenzen hinweg zu erlauben) möglicherweise keine traditionelle RLA durch, wie in Bezug auf 6 beschrieben, sondern führt stattdessen eine simulierte Version der optimierten RLA durch, die vorstehend in Bezug auf 7A und 7B beschrieben wurde. Insbesondere kann die Steuerung in solchen Vorrichtungen das Vorabrufen von Daten bei der RLA basierend auf gespeicherten Metadaten, die ein sequenzielles Host-Schreibmuster angeben, begrenzen. Zum Beispiel kann die Steuerung 123 aus einer Übermittlungswarteschlange von Schreibbefehlen, die vom Host 104 empfangen werden, bestimmen, dass ein sequenzielles Muster in einem anfänglichen Schreibbefehl und einem nachfolgenden Schreibbefehl existiert, und die Steuerung kann Metadaten speichern, die LBAs, Datenlänge und andere Informationen angeben, die dem nachfolgenden Schreibbefehl im NVM 110 zusammen mit den Daten im anfänglichen Schreibbefehl zugeordnet sind (zum Beispiel durch Markieren der Metadaten in einem FMU-Header eines Teils der geschriebenen sequenziellen Daten für den anfänglichen Schreibbefehl). Wenn die Steuerung später ein sequenzielles Lesen dieser Daten als Reaktion auf einen Lesebefehl durchführt, kann die Steuerung die Metadaten lesen und analysieren, um zu bestimmen, ob eine RLA durchzuführen ist, und wenn das der Fall ist, die Menge an Daten, die während der RLA vorab abzurufen ist, zu bestimmen. Die Steuerung kann die Menge an Daten, die während der RLA vorab abgerufen werden soll, basierend auf den gespeicherten Metadaten begrenzen. Somit kann, ähnlich wie bei dem in Bezug auf 7A und 7B beschriebenen Ansatz, der Host der Steuerung Grenzen angeben, um die RLA (über die von der Steuerung bestimmten Metadaten) selbst in Nicht-ZNS-Vorrichtungen ohne Zonengrenzen oder ZNS-Vorrichtungen, die über Zonengrenzen hinweg lesen können, abzudecken oder zu begrenzen, und somit kann die RLA als Ergebnis weiter optimiert werden. Darüber hinaus kann die Steuerung durch Durchführen der RLA basierend auf Konfigurationen oder Metadaten, wie vorstehend beschrieben, Grenzen zum zuverlässigeren Begrenzen der RLA gemäß sequenziellen Host-Mustern identifizieren und somit eine höhere Rate erfolgreicher Vorhersagen für die RLA als bei anderen Ansätzen erreichen, die auf weniger vertrauenswürdige von der Steuerung erzeugte Grenzen angewiesen sein können (z. B. Grenzen, die dort identifiziert werden, wo neue L2P-Adressenübersetzungstabellen erzeugt werden, oder andere vorrichtungsspezifische Situationen, die nicht auf Konfigurationen beruhen, die vom Host bereitgestellt werden).
  • In einem Beispiel kann die Steuerung, wenn sie sequenzielle Schreibbefehle in einer Übermittlungswarteschlange empfängt, Informationen aus der Übermittlungswarteschlange identifizieren, die angeben, ob ein sequenzielles Muster von Daten, die vom Host geschrieben werden, fortgesetzt wird (in einem anderen Schreibbefehl) oder endet (beim aktuellen Schreibbefehl). Wenn zum Beispiel ein anfänglicher Schreibbefehl in der Übermittlungswarteschlange LBAs 384-895 einschließt, die 256 kB sequentieller Daten zugeordnet sind, und ein nachfolgender Schreibbefehl in der Übermittlungswarteschlange LBAs 896-1023 einschließt, kann die Steuerung bestimmen, dass das sequenzielle Muster vom anfänglichen Schreibbefehl mit dem nachfolgenden Schreibbefehl fortgesetzt wird, und somit kann die Steuerung diese Informationen bezüglich des sequenziellen Musters als Metadaten, die dem anfänglichen Schreibbefehl zugeordnet sind, identifizieren und speichern. Wenn zum Beispiel die Steuerung die Hostdaten im anfänglichen Schreibbefehl in den NVM 110 schreibt, kann die Steuerung auch die LBAs, die Datenlänge oder andere Informationen bezüglich des nachfolgenden Schreibbefehls als Metadaten, die dem anfänglichen Schreibbefehl zugeordnet sind, speichern. Zum Beispiel kann die Steuerung die Metadaten in einem FMU-Header markieren, der einem letzten Teil der Daten im anfänglichen Schreibbefehl zugeordnet ist (vor dem Leeren der Daten in den nicht-flüchtigen Speicher), die Steuerung kann die Metadaten in einer Tabelle oder einer anderen Datenstruktur im NVM 110 speichern, oder die Steuerung kann die Metadaten auf eine andere Weise speichern. Wenn die Steuerung später einen sequenziellen Lesebefehl für die Daten empfängt, kann die Steuerung infolgedessen diese Metadaten zusammen mit den sequenziellen Daten lesen, um zu bestimmen, ob und in welchem Maß die RLA oder das Vorabrufen nachfolgender Daten erforderlich ist. Wenn zum Beispiel der Lesebefehl LBAs 384-895 einschließt, die 256 kB sequenzieller Daten zugeordnet sind, und die Metadaten angeben, dass das sequenzielle Muster für LBAs 896-1023 fortgesetzt wird, kann die Steuerung das Vorabrufen von Daten auf LBAs 896-1023 (z. B. 64 kB) basierend auf den Metadaten begrenzen, selbst wenn die maximale Datenmenge, die bei der RLA vorab abgerufenen werden kann, basierend auf verfügbaren Ressourcen in der Speichervorrichtung größer ist (z. B. 512 kB). Alternativ kann, wenn die Metadaten angeben, dass ein sequenzielles Muster endet (z. B. die nächsten LBAs nicht sequenziell zu dem aktuellen Lesebefehl sind), die Steuerung möglicherweise keine RLA durchführen, wodurch Zeit und Ressourcen für andere Hintergrundoperationen wie GC gespart werden.
  • Dieser Ansatz kann auch angewendet werden, wenn die Steuerung 123 mehrere Leseströme verarbeitet. Zum Beispiel kann die Steuerung mehrere Lesebefehle von der Steuerung empfangen, um sequenzielle Daten in verschiedenen Bereichen von LBAs parallel (oder nahezu parallel) zu lesen. In einem solchen Fall kann die Steuerung ähnlich einem einzelnen Lesestrom arbeiten, indem sie die Metadaten jedes Stroms liest und die RLA basierend auf den Metadaten für jeden Strom begrenzt. Zum Beispiel kann die Steuerung einen Lesebefehl empfangen, der LBAs 384-895 einschließt, die 256 kB sequenzieller Daten zugeordnet sind, die in einem ersten Lesestrom verarbeitet werden sollen, und einen anderen Lesebefehl, der LBAs 10384-10895 einschließt, die 256 kB anderer sequenzieller Daten zugeordnet sind, die in einem zweiten Lesestrom verarbeitet werden sollen. Wenn beispielsweise die Metadaten für den ersten Lesestrom angeben, dass das sequenzielle Muster für LBAs 896-1023 fortgesetzt wird, und die Metadaten für den zweiten Lesestrom angeben, dass das sequenzielle Muster für LBAs 10896-11023 fortgesetzt wird, kann die Steuerung das Vorabrufen von Daten auf LBAs 896-1023 (z. B. 64 kB) basierend auf den Metadaten im ersten Lesestrom begrenzen und ebenso das Vorabrufen von Daten auf LBAs 10896-11023 (z. B. 64 kB) basierend auf den Metadaten im zweiten Lesestrom begrenzen. Somit kann die RLA für mehrere Leseströme weiter optimiert werden.
  • Der oben beschriebene Ansatz zum Optimieren der RLA basierend auf gespeicherten Metadaten (ob einzelne oder mehrere Leseströme) setzt voraus, dass der Host die Daten in ungefähr der gleichen Weise liest, wie die Daten in den NVM 110 geschrieben wurden. Wenn der Host zum Beispiel Daten in einem sequenziellen Muster schreibt, das 256 kB Daten gefolgt von 64 kB Daten einschließt, geht dieser Ansatz davon aus, dass der Host Daten in einem ähnlichen sequenziellen Muster von 256 kB, gefolgt von 64 kB, liest. Obwohl es wahrscheinlich ist, dass der Host in ähnlichen sequenziellen Mustern schreiben und lesen kann, kann dieser Ansatz dennoch zu viel oder zu wenig RLA im unwahrscheinlichen Fall führen, dass der Host nicht auf eine solche ähnliche Weise schreibt und liest. Daher können andere Optimierungen der RLA, wie beispielsweise dynamisches Einschränken der RLA basierend auf früheren sequenziellen Mustern oder anderen historischen Informationen, wie oben beschrieben, ebenfalls in Betracht gezogen werden, um das Risiko einer unzureichenden (oder übermäßig ausreichenden) RLA zu reduzieren. Darüber hinaus würde ein solches Auftreten, selbst wenn immer noch eine unzureichende oder übermäßig ausreichende RLA auftritt, in keinem Fall Funktionsausfälle an der Speichervorrichtung verursachen.
  • 8 veranschaulicht ein Beispieldiagramm 800 einer Steuerung 802 einer Speichervorrichtung, die eine optimierte RLA von Daten 804 als Reaktion auf Lesebefehle von einer Host-Vorrichtung 806 durchführt. Zum Beispiel kann die Steuerung 802 der Steuerung 123 der Speichervorrichtung 102 von 1 entsprechen, die Host-Vorrichtung 806 kann dem Host 104 in 1 entsprechen, und die Daten 804 können den Daten 119 von 1 entsprechen. Die Steuerung schreibt und liest Daten 804 in einen Speicher 808, der dem NVM 110 von 1 entsprechen kann. Die Steuerung 802 und der Speicher 808 können sich innerhalb einer ZNS-Vorrichtung oder einer Nicht-ZNS-Vorrichtung befinden.
  • Die Host-Vorrichtung 806 kann der Steuerung 802 Informationen 810 bereitstellen, welche die Steuerung im Speicher 808 speichern kann (z. B. als gespeicherte Informationen 812). In einem Beispiel können die Informationen 810 Folgendes einschließen: eine Zonenkonfiguration 814, die eine Zuordnung von Zonen (z. B. Zonen 502 in 5) zu Gruppen sequentieller, nicht zusammenhängender logischer Adressen (z. B. logische Adressen 504 in 5) angibt, eine Namensraum-Identifikationsdatenstruktur, die Zonenbetriebseigenschaften 816 und optionale in Zonen unterteilte Befehlsunterstützung angibt, und andere Informationen in Bezug auf den ZNS. Eine der Zonenbetriebseigenschaften 816 kann ein Flag zum Lesen über Zonengrenzen hinweg 818 einschließen, das angibt, ob die Host-Vorrichtung 806 Daten über Zonengrenzen hinweg lesen kann (z. B. Zonengrenzen 506, 606, 706, 756 in 5, 6, 7A und 7B). In einem anderen Beispiel können die Informationen 810 Übermittlungswarteschlangeneinträge einschließen, die LBAs, Datenlänge und andere Informationen angeben, die Schreibbefehlen zugeordnet sind, und die Steuerung kann anhand der Informationen 810 bestimmen, ob ein sequentielles Muster in einem Schreibbefehl in einem nachfolgenden Schreibbefehl fortgesetzt wird (oder endet). Wenn die Informationen angeben, dass ein nachfolgender Schreibbefehl einem anfänglichen Schreibbefehl in einem sequenziellen Muster folgt, kann die Steuerung die LBAs, Datenlängen oder andere Informationen, die dem nachfolgenden Schreibbefehl zugeordnet sind, als Metadaten 820, die dem anfänglichen Schreibbefehl zugeordnet sind, schreiben. Die Steuerung kann auch Metadaten 820 im Laufe der Zeit speichern (z. B. als gespeicherte Metadaten 822), da solche Informationen für verschiedene Schreibbefehle bestimmt werden. Somit können die gespeicherten Metadaten 822 Informationen bezüglich sequentieller Muster 824 und Datenlängen 826 einschließen, die verschiedenen Schreibbefehlen zugeordnet sind.
  • Anfänglich kann die Steuerung 802 von der Host-Vorrichtung 806 einen Schreibbefehl empfangen, der Daten 804 einschließt, und die Steuerung 802 kann die Daten 804 in mehreren FMUs 828 in den Speicher 808 schreiben. Jede FMU 828 kann einen Teil der Daten 804 einschließen, zum Beispiel 8 Sektoren oder LBAs (n-7 bis n), wobei n die letzte LBA im aktuellen Datenteil darstellt. Wenn zum Beispiel angenommen wird, dass jede LBA 512 Byte darstellt und jede FMU acht LBAs einschließt, kann jede FMU einen 4 kB-großen Teil der Daten 804 darstellen. Wenn die Steuerung Metadaten 820 (z. B. aus Informationen 810) bestimmt, kann die Steuerung die Metadaten 820 im Speicher 808 speichern, indem sie die Metadaten 820 in einer der FMUs 828 (z. B. einer letzten FMU oder einem Teil in den mehreren FMUs oder Teilen der Daten 804) markiert, wie in 8 veranschaulicht wird. Alternativ kann die Steuerung die Metadaten 820 auf andere Weise im Speicher 808 speichern. Die Metadaten 820 können Informationen darüber angeben, ob ein sequentielles Muster mit nachfolgenden Daten 830 in einem nachfolgenden Schreibbefehl fortgesetzt wird. In einem solchen Fall kann die Steuerung 802 vom Host 104 den nachfolgenden Schreibbefehl empfangen, der die nachfolgenden Daten 830 einschließt, und die Steuerung kann in ähnlicher Weise die nachfolgenden Daten 830 in den Speicher 808 in mehreren FMUs schreiben. Wenn die Steuerung in ähnlicher Weise bestimmt, dass das sequentielle Muster mit zusätzlichen Daten in einem zusätzlichen Schreibbefehl fortgesetzt wird, kann die Steuerung Metadaten 820 speichern, die auch dieses Muster angeben, und der Prozess kann sich für verschiedene Schreibbefehle wiederholen.
  • Nach dem Schreiben von Daten 804 und nachfolgenden Daten 830 in den Speicher 808 kann die Steuerung 802 einen Host-Befehl 832 empfangen, der das Lesen der Daten 804 anfordert (z. B. Daten 708 in 7A). In einem Beispiel können die Informationen 810 die Zonenkonfiguration 814 einschließen (z. B. ist die Speichervorrichtung eine ZNS-Vorrichtung), und der Host-Befehl 832 kann anfordern, Daten in einer ersten Zone (z. B. erste Zone 602, 702 in 6 und 7A) zu lesen. In einem solchen Fall kann die Steuerung 802 überprüfen, ob das im Speicher 808 gespeicherte Flag zum Lesen über Zonengrenzen hinweg 818 zurückgesetzt ist, oder anderweitig angeben, dass der Host möglicherweise nicht über Zonengrenzen hinweg liest. Wenn die Host-Vorrichtung 806 nicht über Zonengrenzen hinweg lesen kann, kann die Steuerung bestimmen, ob sich die angeforderten Daten 804 in logischen Adressen innerhalb, aber nicht einschließlich des Endes, der ersten Zone befinden. Wenn das der Fall ist, kann die Steuerung 802 bestimmen, dass die nachfolgenden Daten 830, die den Daten 804 folgen (z. B. nachfolgende Daten 710, 758 in 7A und 7B), innerhalb sowohl der ersten Zone (z. B. erste Zone 602, 702, 752 in 6 und 7A-7B) als auch der zweiten Zone (z. B. zweite Zone 604, 704, 754 in 6 und 7A-7B) sein können, und die Steuerung kann die Daten 804 aus der ersten Zone abrufen und die RLA oder das Vorabrufen der nachfolgenden Daten 830 auf das Ende der ersten Zone begrenzen. Wenn die Steuerung 802 später einen nachfolgenden Host-Befehl 834 für die nachfolgenden Daten 830 empfängt, die zuvor vorab abgerufen wurden, kann die Steuerung zusätzliche Daten 836 (z. B. zusätzliche Daten 712, 760 in 7A-7B, die dem Rest der nachfolgenden Daten innerhalb der zweiten Zone 704, 754 entsprechen können) unter Verwendung der RLA vor dem Empfangen eines zusätzlichen Host-Befehls für die zusätzlichen Daten vorab abrufen. Die Steuerung kann die RLA für die zusätzlichen Daten 836 durchführen, ohne das Vorabrufen zu begrenzen, oder die Steuerung kann die RLA für die zusätzlichen Daten 836 mit begrenztem Vorabrufen (z. B. statischer oder dynamischer Natur) durchführen. Zum Beispiel kann die Steuerung die RLA basierend auf den sequenziellen Mustern 824, Datenlängen 826 oder anderen historischen Informationen von früheren Host-Befehlen dynamisch begrenzen.
  • In einem anderen Beispiel kann die Steuerung Metadaten 820 aus den Informationen 810 bestimmen (z. B. ist die Speichervorrichtung eine Nicht-ZNS-Vorrichtung oder eine ZNS-Vorrichtung, die das Lesen über Zonengrenzen hinweg erlaubt). In einem solchen Fall kann die Steuerung, nachdem die Steuerung 802 einen Host-Befehl 832 empfangen hat, der das Lesen der Daten 804 anfordert, basierend auf den Metadaten 820 bestimmen, ob die RLA durchgeführt werden soll und in welcher Größe. Zum Beispiel kann die Steuerung die gespeicherten Metadaten 822 zusammen mit Daten 804 lesen und die Steuerung kann aus den Metadaten bestimmen, dass nachfolgende Daten 830 ein sequenzielles Muster von Daten 804 fortsetzen. In einem solchen Fall kann die Steuerung das Vorabrufen bei der RLA auf die Menge der nachfolgenden Daten 830 begrenzen, die in den Metadaten angegeben wurde, ungeachtet dessen, ob zusätzliche Ressourcen zum gleichzeitigen Vorabrufen zusätzlicher Daten 836 bei der RLA verfügbar sind. Die Steuerung 802 kann die RLA ähnlich durchführen, wenn sie mehrere Leseströme verarbeitet.
  • 9 veranschaulicht ein beispielhaftes Flussdiagramm 900 eines Verfahrens zur Abwicklung von Lesen unter Verwendung der optimierten RLA. Zum Beispiel kann das Verfahren in einer Speichervorrichtung 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.
  • In einem Beispiel, wie durch Block 902 dargestellt, kann die Steuerung eine von einem Host empfangene Zonenkonfiguration in einem Speicher speichern. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise eine von der Host-Vorrichtung 806 empfangene Zonenkonfiguration 814 im Speicher 808 speichern. Die Zonenkonfiguration 814 kann eine Zonenbetriebseigenschaft 816 einschließen, die ein Flag zum Lesen über Zonengrenzen hinweg 818 einschließt. Die Zonenkonfiguration 814 kann auch angeben, dass das Lesen über Zonengrenzen hinweg (z. B. Zonengrenzen 506, 606, 706, 756 in 5-7B) verboten ist, wenn das Flag zum Lesen über Zonengrenzen hinweg 818 zurückgesetzt ist, und dass das Lesen über Zonengrenzen hinweg erlaubt ist, wenn das Flag zum Lesen über Zonengrenzen hinweg 818 gesetzt ist.
  • In einem anderen Beispiel, wie durch Block 904 dargestellt, kann die Steuerung Daten und Metadaten schreiben, die nachfolgenden Daten zugeordnet sind. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise Daten 804 und Metadaten 820, die nachfolgenden Daten 830 zugeordnet sind, in den Speicher 808 schreiben. Die Metadaten 820 können angeben, dass die nachfolgenden Daten 830 und Daten 804 Teil eines sequentiellen Musters 824 sind. Die Steuerung 802 kann auch die Metadaten 820, die den nachfolgenden Daten 830 zugeordnet sind, in einen FMU-Header (z. B. in FMU 828) schreiben, der einem Teil der Daten 804 (z. B. einem letzten Teil der Daten, die durch LBAs n-7 bis n angegeben sind) zugeordnet ist.
  • Wie durch Block 906 dargestellt, kann die Steuerung als Reaktion auf einen Host-Befehl Daten aus dem Speicher lesen. Bezugnehmend auf 8 kann die Steuerung 802 zum Beispiel Daten 804 als Reaktion auf den Host-Befehl 832 aus dem Speicher 808 lesen. Darüber hinaus kann, wie durch Block 908 dargestellt, die Steuerung Metadaten, die nachfolgenden Daten zugeordnet sind, aus dem Speicher lesen, einschließlich Informationen, die zuvor durch den Host angegeben wurden. Bezugnehmend auf 8 kann die Steuerung 802 zum Beispiel gespeicherte Metadaten 822, die nachfolgenden Daten 830 zugeordnet sind, aus dem Speicher 808 lesen, einschließlich Informationen, die zuvor von der Host-Vorrichtung 806 angegeben wurden (z. B. Informationen 810 wie LBAs oder andere Informationen, die den nachfolgenden Daten zugeordnet sind, die in Metadaten 820 angegeben sind). Die Metadaten 820 können auch eine Datenlänge 826 der nachfolgenden Daten 830 einschließen.
  • Wie durch Block 910 dargestellt, kann die Steuerung das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf gespeicherten Informationen, die zuvor vom Host empfangen wurden, begrenzen. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise das Vorabrufen nachfolgender Daten 830 aus dem Speicher 808 basierend auf gespeicherten Informationen 812, die zuvor von der Host-Vorrichtung 806 empfangen wurden, begrenzen (z. B. Informationen 810 einschließlich Zonenkonfiguration 814 oder Informationen 810 wie LBAs, Datenlänge oder andere Informationen, die als Metadaten 820 bestimmt wurden). Die gespeicherten Informationen können die von der Host-Vorrichtung 806 empfangene Zonenkonfiguration 814, Metadaten 820, die angeben, dass nachfolgende Daten 830 und Daten 804 Teil eines sequenziellen Musters 824 sind, oder beides einschließen.
  • Die Begrenzung kann der ersten Phase der optimierten RLA entsprechen, wie oben in Bezug auf 7A beschrieben wird. Wenn zum Beispiel die gespeicherten Informationen eine Zonenkonfiguration einschließen, dann kann die Steuerung, wie durch Block 912 dargestellt, bestimmen, ob das Lesen über Zonengrenzen hinweg verboten ist. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise bestimmen, ob das Flag zum Lesen über Zonengrenzen hinweg 818 in den Zonenbetriebseigenschaften 816 der Zonenkonfiguration 814 zurückgesetzt ist. Wenn das der Fall ist, kann die Steuerung, wie durch Block 914 dargestellt, das Vorabrufen nachfolgender Daten innerhalb derselben Zone wie die Daten begrenzen. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise das Vorabrufen nachfolgender Daten 830 innerhalb derselben Zone wie Daten 804 begrenzen. Wenn zum Beispiel, unter Bezugnahme auf 7A, die Steuerung Daten 708 aus der ersten Zone 702 liest, darf die Steuerung nachfolgende Daten 710 nur bis zum Ende der ersten Zone 702 vorab abrufen.
  • Die Steuerung kann dann die zweite Phase der optimierten RLA durchführen, wie oben in Bezug auf 7B beschrieben wird. Zum Beispiel kann die Steuerung, wie durch Block 916 dargestellt, als Reaktion auf einen nachfolgenden Host-Befehl zusätzliche Daten in einer anderen Zone als die nachfolgenden Daten vorab abrufen. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise zusätzliche Daten 836 in einer anderen Zone als die nachfolgenden Daten 830 als Reaktion auf den nachfolgenden Host-Befehl 834 vorab abrufen. Wenn zum Beispiel, unter Bezugnahme auf 7B, die Steuerung nachfolgende Daten 758 aus der ersten Zone 702 liest, kann die Steuerung zusätzliche Daten 760 aus der zweiten Zone 754 vorab abrufen.
  • Außerdem kann die Steuerung, wie durch Block 918 dargestellt, das Vorabrufen der zusätzlichen Daten begrenzen. Bezugnehmend auf 7B und 8 kann die Steuerung 802 das Vorabrufen zusätzlicher Daten 760, 836 aus der zweiten Zone 754 begrenzen. Zum Beispiel kann die Steuerung die RLA für die zusätzlichen Daten 760, 836 mit begrenztem Vorabrufen (z. B. statischer oder dynamischer Natur) wie oben beschrieben durchführen. In einem Beispiel kann die RLA-Beschränkung statischer Natur sein. Anstatt beispielsweise eine maximale Datenmenge, die für die RLA verfügbar ist, vorab abzurufen (z. B. 512 kB oder eine andere Datengröße), kann die Steuerung 123 konservativ eine kleinere Menge der zusätzlichen Daten vorab abrufen (z. B. 128 kB oder eine andere Datengröße, die kleiner als die maximale Datenmenge ist, die für die RLA verfügbar ist). In einem anderen Beispiel kann die RLA dynamischer Natur sein. Anstatt beispielsweise die maximale Menge an Daten, die für die RLA verfügbar ist, vorab abzurufen, kann die Steuerung 123 eine Menge der zusätzlichen Daten 760, die vorab abgerufen werden sollen, basierend auf vorherigen sequenziellen Mustern (z. B. sequenziellen Mustern 824) von der Host-Vorrichtung 806 oder anderen historischen Informationen bestimmen.
  • Alternativ kann, wenn die Steuerung in Block 912 bestimmt, dass ein Lesen über Zonengrenzen hinweg erlaubt ist, oder wenn die gespeicherten Informationen Metadaten einschließen, die Steuerung, wie durch Block 920 dargestellt, das Vorabrufen nachfolgender Daten basierend auf gespeicherten Metadaten, die den nachfolgenden Daten zugeordnet sind, begrenzen. Bezugnehmend auf 8 kann die Steuerung 802 beispielsweise das Vorabrufen nachfolgender Daten 830 basierend auf den gespeicherten Metadaten 822, die den nachfolgenden Daten 830 zugeordnet sind, durch Durchführen der simulierten Version der optimierten RLA, die vorstehend in Bezug auf 7A und 7B beschrieben wurde, begrenzen. Zum Beispiel kann, wie durch Block 922 dargestellt, die Steuerung eine Datenlänge der nachfolgenden Daten aus den Metadaten identifizieren, und wie durch Block 924 dargestellt, kann die Steuerung das Vorabrufen der nachfolgenden Daten gemäß der Datenlänge begrenzen. Bezugnehmend auf 8, kann, nachdem die Steuerung 802 die Metadaten 820, die den nachfolgenden Daten 830 zugeordnet sind, in einen FMU-Header (z. B. in FMU 828) schreibt, der einem Teil der Daten 804 zugeordnet ist, die Steuerung 802 die Metadaten 820 zum Beispiel lesen, die in der FMU 828 markiert sind, um eine Datenlänge 826 der nachfolgenden Daten 830 aus den Metadaten 820 zu identifizieren, und die Steuerung 802 kann das Vorabrufen der nachfolgenden Daten 830 gemäß der Datenlänge 826 begrenzen. Wenn zum Beispiel die Metadaten 820 angeben, dass die nachfolgenden Daten 830 nur 64 kB Daten eingeschlossen haben, kann die Steuerung 64 kB Daten anstatt die maximale Größe, die für die RLA verfügbar ist (z. B. 512 kB), vorab abrufen.
  • Dementsprechend stellt die in der vorliegenden Offenbarung beschriebene Speichervorrichtung eine optimierte sequenzielle Leserichtlinie für ZNS-Vorrichtungen bereit, die eingerichtet sind, um ein Lesen über Zonengrenzen hinweg zu verbieten. Durch Begrenzen des Vorabrufens von Daten bei der RLA basierend auf Zonenkonfigurationen, die von einer Host-Vorrichtung angegeben werden, ist eine höhere Wahrscheinlichkeit erfolgreicher RLA-Vorhersagen möglich. Darüber hinaus kann dieser Effekt für Nicht-ZNS-Vorrichtungen sowie für ZNS-Vorrichtungen simuliert werden, die eingerichtet sind, um ein Lesen über Zonengrenzen hinweg zu erlauben, indem ermöglicht wird, dass bei der RLA vorab abgerufene Daten basierend auf gespeicherten Metadaten, die von der Host-Vorrichtung angegeben werden, ähnlich begrenzt werden. Als Ergebnis dieser Optimierungen für die RLA kann die Ressourcennutzung der Speichervorrichtung verbessert werden und Hintergrundoperationen wie GC können effizienter durchgeführt werden.
  • 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 Speichervorrichtungen 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/079898 [0001]

Claims (20)

  1. Speichervorrichtung, umfassend: Speicher; und eine Steuerung, die eingerichtet ist, um Daten aus dem Speicher als Reaktion auf einen Host-Befehl zu lesen und das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf gespeicherten Informationen, die zuvor von einem Host empfangen wurden, zu begrenzen.
  2. Speichervorrichtung nach Anspruch 1, wobei die gespeicherten Informationen eine vom Host empfangene Zonenkonfiguration umfassen.
  3. Speichervorrichtung nach Anspruch 2, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der nachfolgenden Daten innerhalb einer gleichen Zone wie die Daten zu begrenzen, wenn die Zonenkonfiguration angibt, dass ein Lesen über Zonengrenzen hinweg verboten ist.
  4. Speichervorrichtung nach Anspruch 3, wobei die Steuerung ferner eingerichtet ist, um zusätzliche Daten in einer anderen Zone als die nachfolgenden Daten als Reaktion auf einen nachfolgenden Host-Befehl für die nachfolgenden Daten vorab abzurufen.
  5. Speichervorrichtung nach Anspruch 4, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der zusätzlichen Daten zu begrenzen.
  6. Speichervorrichtung nach Anspruch 2, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der nachfolgenden Daten basierend auf gespeicherten Metadaten, die den nachfolgenden Daten zugeordnet sind, zu begrenzen, wenn die Zonenkonfiguration angibt, dass ein Lesen über Zonengrenzen hinweg erlaubt ist.
  7. Speichervorrichtung nach Anspruch 1, wobei die gespeicherten Informationen Metadaten umfassen, die angeben, dass die nachfolgenden Daten und die Daten Teil eines sequenziellen Musters sind.
  8. Speichervorrichtung nach Anspruch 7, wobei die Steuerung ferner eingerichtet ist, um eine Datenlänge der nachfolgenden Daten aus den Metadaten zu identifizieren und das Vorabrufen der nachfolgenden Daten gemäß der Datenlänge zu begrenzen.
  9. Speichervorrichtung, umfassend: Speicher; und eine Steuerung, die eingerichtet ist, um im Speicher eine von einem Host empfangene Zonenkonfiguration zu speichern, um als Reaktion auf einen Host-Befehl Daten aus dem Speicher zu lesen und das Vorabrufen nachfolgender Daten aus dem Speicher basierend auf der Zonenkonfiguration zu begrenzen.
  10. Speichervorrichtung nach Anspruch 9, wobei die Zonenkonfiguration eine Zonenbetriebseigenschaft umfasst, die ein Flag zum Lesen über Zonengrenzen hinweg einschließt.
  11. Speichervorrichtung nach Anspruch 10, wobei die Zonenkonfiguration angibt, dass ein Lesen über Zonengrenzen hinweg verboten ist, wenn das Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist, und wobei die Zonenkonfiguration angibt, dass ein Lesen über Zonengrenzen hinweg erlaubt ist, wenn das Flag zum Lesen über Zonengrenzen hinweg gesetzt ist.
  12. Speichervorrichtung nach Anspruch 9, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der nachfolgenden Daten innerhalb einer gleichen Zone wie die Daten zu begrenzen, wenn die Zonenkonfiguration angibt, dass ein Flag zum Lesen über Zonengrenzen hinweg zurückgesetzt ist.
  13. Speichervorrichtung nach Anspruch 12, wobei die Steuerung ferner eingerichtet ist, um zusätzliche Daten in einer anderen Zone als die nachfolgenden Daten nach dem Empfangen eines nachfolgenden Host-Befehls für die nachfolgenden Daten vorab abzurufen.
  14. Speichervorrichtung nach Anspruch 13, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der zusätzlichen Daten basierend auf einem vorherigen sequentiellen Muster von Host-Befehlen zu begrenzen.
  15. Speichervorrichtung nach Anspruch 9, wobei die Steuerung ferner eingerichtet ist, um das Vorabrufen der nachfolgenden Daten basierend auf gespeicherten Metadaten, die den nachfolgenden Daten zugeordnet sind, zu begrenzen, wenn die Zonenkonfiguration angibt, dass ein Flag zum Lesen über Zonengrenzen hinweg gesetzt ist.
  16. Speichervorrichtung, umfassend: Speicher; und eine Steuerung, die eingerichtet ist, um Daten aus dem Speicher als Reaktion auf einen Host-Befehl zu lesen, um Metadaten, die nachfolgenden Daten zugeordnet sind, aus dem Speicher zu lesen, einschließlich Informationen, die zuvor von einem Host angegeben wurden, und um das Vorabrufen der nachfolgenden Daten aus dem Speicher basierend auf den Informationen zu begrenzen.
  17. Speichervorrichtung nach Anspruch 16, wobei die Metadaten angeben, dass die nachfolgenden Daten und die Daten Teil eines sequenziellen Musters sind.
  18. Speichervorrichtung nach Anspruch 16, wobei die Informationen eine Datenlänge der nachfolgenden Daten einschließen.
  19. Speichervorrichtung nach Anspruch 16, wobei die Steuerung ferner eingerichtet ist, um die Metadaten in einen Flash Management Unit (FMU)-Header zu schreiben, der einem Teil der Daten zugeordnet ist.
  20. Speichervorrichtung nach Anspruch 19, wobei die Steuerung ferner eingerichtet ist, um eine Datenlänge der nachfolgenden Daten aus den Metadaten im FMU-Header zu identifizieren und das Vorabrufen der nachfolgenden Daten gemäß der Datenlänge zu begrenzen.
DE102021114457.4A 2020-09-17 2021-06-04 Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum Pending DE102021114457A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063079898P 2020-09-17 2020-09-17
US63/079,898 2020-09-17
US17/180,631 US11513723B2 (en) 2020-09-17 2021-02-19 Read handling in zoned namespace devices
US17/180,631 2021-02-19

Publications (1)

Publication Number Publication Date
DE102021114457A1 true DE102021114457A1 (de) 2022-03-17

Family

ID=80351585

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021114457.4A Pending DE102021114457A1 (de) 2020-09-17 2021-06-04 Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum

Country Status (4)

Country Link
US (1) US11513723B2 (de)
KR (1) KR102663304B1 (de)
CN (1) CN114203237A (de)
DE (1) DE102021114457A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11815938B2 (en) * 2021-07-13 2023-11-14 SK Hynix Inc. Storage device and method of operating the same
US11977778B2 (en) * 2022-03-09 2024-05-07 Micron Technology, Inc. Workload-based scan optimization
US20230376225A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for memory system rebuild
US20230376228A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for sequential access operations
US11954367B2 (en) 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200386A1 (en) 2002-04-19 2003-10-23 Seagate Technology Llc Data retention prioritization for a data storage device
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
US10025532B2 (en) 2015-09-11 2018-07-17 Sandisk Technologies Llc Preserving read look ahead data in auxiliary latches
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10795610B2 (en) 2018-05-30 2020-10-06 Micron Technology, Inc. Read look ahead data size determination
US10891233B2 (en) * 2018-06-28 2021-01-12 Intel Corporation Intelligent prefetch disk-caching technology
US11016697B2 (en) * 2019-07-02 2021-05-25 International Business Machines Corporation Prefetching data blocks from a primary storage to a secondary storage system while data is being synchronized between the primary storage and secondary storage
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping

Also Published As

Publication number Publication date
US11513723B2 (en) 2022-11-29
KR20220037333A (ko) 2022-03-24
US20220083256A1 (en) 2022-03-17
CN114203237A (zh) 2022-03-18
KR102663304B1 (ko) 2024-05-03

Similar Documents

Publication Publication Date Title
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE602005004226T2 (de) Speichervorrichtung und Informationsverarbeitungssystem
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112015003536T5 (de) Host-Verwalter nicht flüchtiger Speicher
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen
DE102020116366A1 (de) System und verfahren für reduzierte latenz von lese-, änderungs- und schreibvorgängen
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme

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