DE112020000139T5 - Nicht sequentiell in zonen aufgeteilte namensräume - Google Patents
Nicht sequentiell in zonen aufgeteilte namensräume Download PDFInfo
- Publication number
- DE112020000139T5 DE112020000139T5 DE112020000139.3T DE112020000139T DE112020000139T5 DE 112020000139 T5 DE112020000139 T5 DE 112020000139T5 DE 112020000139 T DE112020000139 T DE 112020000139T DE 112020000139 T5 DE112020000139 T5 DE 112020000139T5
- Authority
- DE
- Germany
- Prior art keywords
- zone
- logical blocks
- command
- data associated
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 abstract description 20
- 230000005540 biological transmission Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004146 energy storage Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
- Diese Anmeldung beansprucht die Priorität der US-Anmeldung Nr.
16/703,643 62/899,717 - HINTERGRUND DER OFFENBARUNG
- Gebiet der Offenbarung
- Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Speichervorrichtungen, wie zum Beispiel Solid-State-Laufwerke (SSDs).
- Beschreibung des Stands der Technik
- Speichervorrichtungen, wie z. B. SSDs, können in Computern in Anwendungen verwendet werden, bei denen eine relativ geringe Latenz und eine hohe Speicherkapazität erwünscht sind. So können SSDs beispielsweise eine geringere Latenz aufweisen als Festplatten (HDDs), insbesondere bei Direktlese- und -schreibvorgängen. In der Regel empfängt eine Steuerung der SSD einen Befehl zum Lesen oder Schreiben von Daten von einer Hostvorrichtung auf eine Speichervorrichtung. Die Menge der Speichervorrichtung wird als Namensraum bezeichnet, und die Steuerung ist konfiguriert, um Daten aus dem einen oder den mehreren Namensräumen der Speichervorrichtung zu lesen oder Daten in diese zu schreiben. Jeder Namensraum umfasst eine Vielzahl von logischen Blockadressen (LBAs) oder Sektoren. Die Steuerung kann jederzeit auf eine beliebige LBA innerhalb eines beliebigen Namensraums zugreifen.
- Wenn jedoch ein Abschnitt aufeinanderfolgender LBAs (z.B. LBAs 1-8) innerhalb eines Namensraums bereits Daten speichert und ein Nach-Schreiben in ausgewählte Daten einer LBA (z.B. LBA 4) innerhalb des Abschnitts empfangen wird, muss die Steuerung alle Daten innerhalb des Abschnitts auslesen, die ausgewählten Daten modifizieren und die Daten, die jeder LBA des Abschnitts zugeordnet sind, an einer neuen Stelle erneut schreiben. Ein solcher Lese-Modifizierungs-Schreib-Prozess kann die Leistung sowohl der Speichervorrichtung als auch des Hosts verringern, sowie die Lebensdauer der Speichervorrichtung verringern und den Host-Overhead erhöhen.
- Der Erfindung liegt daher die Aufgabe zugrunde, ein neues Verfahren zum Betreiben einer Speichervorrichtung anzugeben.
- KURZDARSTELLUNG DER OFFENBARUNG
- Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ist konfiguriert, um einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke einer ersten Zone abzurufen und einen Speicherzugriff (DMA) zum Lesen und Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in die ersten logischen Blöcke zu leiten. Die ersten logischen Blöcke liegen zwischen einem Zonenstartpunkt der ersten Zone und einer Zonenkapazität der ersten Zone. Die Steuerung ist konfiguriert, einen zweiten Befehl zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke der ersten Zone abzurufen und die Daten, die dem zweiten Befehl zugeordnet sind, DMA-zu lesen und in die zweiten logischen Blöcke zu schreiben. Die zweiten logischen Blöcke liegen zwischen dem Zonenanfang und der Zonenkapazität der ersten Zone und die ersten logischen Blöcke sind nicht sequentiell zu den zweiten logischen Blöcken.
- In einer Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in eine erste Zone und dem ersten Befehl zugeordnete DMA-Lesedaten abruft, einen oder mehrere erste logische Blöcke der ersten Zone identifiziert, in welche die dem ersten Befehl zugeordneten Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, einen zweiten Befehl abruft, um Daten in die erste Zone zu schreiben, und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, und einen oder mehrere zweite logische Blöcke der ersten Zone zu identifizieren, um die Daten, die dem zweiten Befehl zugeordnet sind, in diese zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
- In einer anderen Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl abruft, um Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone zu schreiben, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an eine erste Stelle in der Medieneinheit schreibt, einen zweiten Befehl abruft, um Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken sind, und dem zweiten Befehl zugeordnete Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und an einen zweiten Ort in der Medieneinheit zu schreiben, wobei der zweite Ort sequentiell zu dem ersten Ort angeordnet ist.
- In noch einer anderen Ausführungsform umfasst ein Speichersystem eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle und ein Speichersystem umfasst. Das Speichersystem umfasst eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle und eine mit der Medieneinheit gekoppelte Steuerung speichert. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, abruft, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, die dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone schreibt, die erste und die zweite Verfolgungstabelle aktualisiert, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind, einen zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und DMA-Lesen von Daten abruft, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei mindestens einer des einen oder mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken ist, Daten schreiben, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und die erste und die zweite Verfolgungstabelle zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
- Figurenliste
- Zur Verdeutlichung der Art und Weise, wie die vorstehend angegebenen Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
-
1 ist ein schematisches Blockdiagramm, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht. -
2 veranschaulicht ein Speichersystem umfassend eine Speichervorrichtung, die mit einer Hostvorrichtung gemäß einer anderen Ausführungsform gekoppelt ist. -
3 ist ein Blockdiagramm, das ein Verfahren zum Betrieb einer Speichervorrichtung zur Ausführung eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht. -
4A veranschaulicht in einer Speichervorrichtung verwendete, in Zonen aufgeteilte Namensräume gemäß einer Ausführungsform. -
4B veranschaulicht ein Zustandsdiagramm für die in Zonen aufgeteilten Namensräume der Speichervorrichtung aus4A gemäß einer Ausführungsform. -
5A veranschaulicht einen in Zonen unterteilten Namensraum, bei dem die sequenzielle Prüfung ausgeschaltet ist, gemäß einer Ausführungsform. -
5B veranschaulicht eine entsprechende Tabelle von Schreibbefehlen, die für die in Zonen unterteilten Namensräume aus5A empfangen werden, gemäß einer Ausführungsform. -
6A veranschaulicht einen in Zonen unterteilten Namensraum, in dem die sequenzielle Prüfung eingeschaltet ist, gemäß einer anderen Ausführungsform. -
6B veranschaulicht eine entsprechende Tabelle von Schreibbefehlen, die für die in Zonen unterteilten Namensräume aus6A empfangen wurden, gemäß einer Ausführungsform. - Die
7A-7F veranschaulichen das Schreiben in eine Zone von einem ZNS nicht sequenziell und ohne Empfang von Zonenanhangbefehlen gemäß einer Ausführungsform. -
8 veranschaulicht eine entsprechende Tabelle, die Schreibbefehle nachverfolgt, die von der Zone der7A-7F abgerufen werden. - Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
- DETAILLIERTE BESCHREIBUNG
- Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Obwohl Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, ist die Offenbarung nicht einschränkend, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen angegeben. Ebenso soll eine Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und soll nicht als Element oder Einschränkung der beiliegenden Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
- Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren zum Betrieb von Speichervorrichtungen. Eine Steuerung der Speichervorrichtung ist konfiguriert, um einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke einer ersten Zone abzurufen und einen Speicherzugriff (DMA) zum Lesen und Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in die ersten logischen Blöcke zu leiten. Die ersten logischen Blöcke liegen zwischen einem Zonenstartpunkt der ersten Zone und einer Zonenkapazität der ersten Zone. Die Steuerung ist konfiguriert, einen zweiten Befehl zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke der ersten Zone abzurufen und die Daten, die dem zweiten Befehl zugeordnet sind, DMA-zu lesen und in die zweiten logischen Blöcke zu schreiben. Die zweiten logischen Blöcke liegen zwischen dem Zonenanfang und der Zonenkapazität der ersten Zone und die ersten logischen Blöcke sind nicht sequentiell zu den zweiten logischen Blöcken.
-
1 ist ein schematisches Blockdiagramm zur Veranschaulichung eines Speichersystems100 , in dem die Speichervorrichtung106 als Speichervorrichtung für eine Hostvorrichtung104 gemäß einer oder mehreren Techniken dieser Offenbarung fungieren kann. Zum Beispiel kann die Hostvorrichtung104 zum Speichern und Abrufen von Daten nichtflüchtige Speichervorrichtungen110 benutzen, die in der Speichervorrichtung106 eingeschlossen sind. Die Hostvorrichtung104 weist einen Host DRAM138 auf. In einigen Beispielen kann das Speichersystem100 eine Vielzahl von Speichervorrichtungen einschließen, wie die Speichervorrichtung106 , die als Speicheranordnung arbeiten kann. Zum Beispiel kann das Speichersystem100 eine Vielzahl von Speichervorrichtungen106 einschließen, die als eine redundante Anordnung von preiswerten/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als Massenspeichervorrichtung für die Hostvorrichtung104 fungieren. - Das Speichersystem
100 schließt eine Hostvorrichtung104 ein, die Daten auf und/oder von einer oder mehreren Speichervorrichtungen, wie der Speichervorrichtung106 , speichern und/oder abrufen kann. Wie in1 veranschaulicht, kann die Hostvorrichtung104 über eine Schnittstelle114 mit der Speichervorrichtung106 kommunizieren. Die Hostvorrichtung104 kann jegliche aus einer großen Vielfalt von Vorrichtungen aufweisen, einschließlich Computerservern, NAS-Einheiten (Network Attached Storage), Desktop-Computern, Notebook-Computern (d. h. Laptops), Tablet-Computern, Digitalempfängern, Telefonhandgeräten wie sogenannten „Smartphones“, sogenannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienplayern, Videospielkonsolen, Video-Streaming-Geräten und dergleichen. - Die Speichervorrichtung
106 schließt eine Steuerung108 , einen nichtflüchtigen Speicher110 (NVM110 ), eine Stromversorgung111 , einen flüchtigen Speicher112 und eine Schnittstelle114 ein. Die Steuerung108 umfasst eine Zonenverwaltung120 . In einigen Beispielen kann die Speichervorrichtung106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in1 dargestellt sind. Beispielsweise kann die Speichervorrichtung106 eine Leiterplatte (PCB) einschließen, an der Komponenten der Speichervorrichtung106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen einschließt, die Komponenten der Speichervorrichtung106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren schließen unter anderem eine 3,5-Zoll-Datenspeichervorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeichervorrichtung, eine 1,8-Zoll-Datenspeichervorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Speichervorrichtung106 direkt mit einer Hauptplatine der Hostvorrichtung104 gekoppelt (z. B. direkt verlötet) sein. - Die Schnittstelle
114 der Speichervorrichtung106 kann einen Datenbus zum Datenaustausch mit der Hostvorrichtung104 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung104 einschließen. Die Schnittstelle114 kann gemäß einem geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle114 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), CoherentAccelerator(CXL) oder dergleichen. Die elektrische Verbindung der Schnittstelle114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit der Steuerung108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung104 und der Steuerung108 her, sodass Daten zwischen der Hostvorrichtung104 und der Steuerung108 ausgetauscht werden können. In einigen Beispielen kann die Speichervorrichtung106 durch die elektrische Verbindung der Schnittstelle114 auch Strom von der Hostvorrichtung104 beziehen. Wie beispielsweise in1 veranschaulicht, kann die Stromversorgung111 über die Schnittstelle114 Strom von der Hostvorrichtung104 empfangen. - Die Speichervorrichtung
106 schließt NVM110 ein, der eine Vielzahl von Speichervorrichtungen einschließen kann. NVM110 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Beispielsweise kann eine Speichervorrichtung des NVM110 Daten und eine Nachricht von der Steuerung108 empfangen, mit der die Speichervorrichtung zum Speichern der Daten angewiesen wird. In ähnlicher Weise kann die Speichervorrichtung des NVM110 eine Nachricht von der Steuerung108 empfangen, mit der die Speichervorrichtung zum Abrufen der Daten angewiesen wird. In einigen Beispielen kann jede der Speichervorrichtungen als eine Matrize bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Matrizen (d. h. eine Vielzahl von Speichervorrichtungen) einschließen. In einigen Beispielen kann jede der Speichervorrichtungen zum Speichern relativ großer Datenmengen konfiguriert werden (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.). - In einigen Beispielen kann jede Speichervorrichtung von NVM
110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie z. B. Flash-Speichervorrichtungen, Phasenwechselspeichervorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtung), ferroelektrischer Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen, Festplattenlaufwerke (HDD) und jede andere Art von nichtflüchtigen Speichervorrichtungen. - Der NVM
110 kann eine Vielzahl von Flash-Speichervorrichtungen umfassen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NAND-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Blöcken unterteilt werden, die in eine Vielzahl von Seiten unterteilt werden können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NAND-Zellen einschließen. Reihen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite aus einer Vielzahl von Seiten zu definieren. Entsprechende Zellen in jeder der Vielzahl von Seiten können elektrisch mit den entsprechenden Bitleitungen verbunden sein. Ferner können NAND-Flash-Speichervorrichtungen 2D- oder 3D-Vorrichtungen sein und Single-Level-Zellen (SLC), Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC) oder Quad-Level-Zellen (QLC) sein. Die Steuerung108 kann Daten in und aus NAND-Flash-Speichervorrichtungen auf Seitenebene schreiben und lesen und Daten aus NAND-Flash-Speichervorrichtungen auf Blockebene löschen. - Die Speichervorrichtung
106 schließt eine Stromversorgung111 ein, die eine oder mehrere Komponenten der Speichervorrichtung106 mit Strom versorgen kann. Wenn die Stromversorgung111 in einem Standardmodus betrieben wird, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie der Hostvorrichtung104 , bereitgestellt wird. Beispielsweise kann die Stromversorgung111 die eine oder mehrere Komponenten mit Strom versorgen, der von der Hostvorrichtung104 über die Schnittstelle114 empfangen wird. In einigen Beispielen kann die Stromversorgung111 eine oder mehrere Energiespeicherkomponenten einschließen, die eingerichtet sind, um die eine oder die mehreren Komponenten mit Strom zu versorgen, wenn sie in einem Abschaltmodus betrieben werden, z. B. wenn kein Strom mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Stromversorgung111 als integrierte Backup-Stromversorgung fungieren. Einige Beispiele für die eine oder die mehreren Energiespeicherkomponenten schließen, ohne darauf beschränkt zu sein, Kondensatoren, Superkondensatoren, Batterien und dergleichen ein. In einigen Beispielen kann die von der einen oder den mehreren Energiespeicherkomponenten gespeicherte Energiemenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Energiespeicherkomponenten sein. Das heißt, wenn die von einer oder mehreren Energiespeicherkomponenten gespeicherte Energiemenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Energiespeicherkomponenten. - Die Speichervorrichtung
106 schließt auch den flüchtigen Speicher112 ein, der von der Steuerung108 zum Speichern von Informationen verwendet werden kann. Der flüchtige Speicher112 kann aus einer oder mehreren flüchtigen Speichervorrichtungen bestehen. In einigen Beispielen kann die Steuerung108 den flüchtigen Speicher112 als Cache verwenden. Zum Beispiel kann die Steuerung108 zwischengespeicherte Informationen im flüchtigen Speicher112 speichern, bis die zwischengespeicherten Informationen in den NVM110 geschrieben werden. Wie in1 veranschaulicht, kann der flüchtige Speicher112 den von der Stromversorgung111 empfangenen Strom verbrauchen. Beispiele für einen flüchtigen Speicher112 schließen ein, sind aber nicht beschränkt auf Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 und dergleichen)). - Die Speichervorrichtung
106 schließt eine Steuerung108 ein, die eine oder mehrere Operationen der Speichervorrichtung106 verwalten kann. Beispielsweise kann die Steuerung108 das Lesen von Daten von und/oder das Schreiben von Daten in den NVM110 verwalten. Die Steuerung108 kann eine Zonenverwaltung120 umfassen, um das Lesen und Schreiben in Zonen zu verwalten, sowie das Verschieben gültiger Daten in und aus Zonen zu Speicherbereinigungszwecken. In einigen Ausführungsformen kann die Steuerung108 , wenn die Speichervorrichtung106 einen Schreibbefehl von der Hostvorrichtung104 empfängt, einen Datenspeicherbefehl initiieren, um Daten in den NVM110 zu speichern und den Fortschritt des Datenspeicherbefehls zu überwachen. Die Steuerung108 kann mindestens eine Betriebscharakteristik des Speichersystems100 bestimmen und die mindestens eine Betriebscharakteristik in den NVM110 speichern. -
2 veranschaulicht ein Speichersystem200 umfassend eine Speichervorrichtung206 , die mit einer Hostvorrichtung204 gemäß einer anderen Ausführungsform gekoppelt ist. Speichersystem200 kann das Speichersystem100 , die Hostvorrichtung104 und die Speichervorrichtung106 aus1 sein. - Die Speichervorrichtung
206 kann Befehle und Daten von der Hostvorrichtung204 senden und empfangen und weist einen Befehlsprozessor220 auf. Der Befehlsprozessor220 kann die Steuerung108 aus1 sein. Der Befehlsprozessor220 kann den Zugriff auf die Speichervorrichtung, wie beispielsweise NAND-Zugriff, planen und ein Lesen auf eine Speichervorrichtung durchführen, bevor ein zuvor empfangener Befehl ein Schreiben auf dieselbe Speichervorrichtung erfordert. Der Befehlsprozessor220 ist mit einer oder mehreren Speichervorrichtungen228 und einem Befehlsabruf222 gekoppelt. Die eine oder mehreren Speichervorrichtungen228 können nichtflüchtige NAND-Speichervorrichtungen sein. Der Befehlsabruf222 ist mit einer Arbitrierung der Übertragungswarteschlange224 gekoppelt. Die Arbitrierung der Übertragungswarteschlange224 ist mit einem oder mehreren Kopf- und Endzeigern der Übertragungswarteschlange226 gekoppelt. - Die Hostvorrichtung
204 besteht aus einer oder mehreren Host-Softwareanwendungen232 , die mit einer oder mehreren Verarbeitungseinheiten oder CPU-Anwendungen234 gekoppelt sind. In einer Ausführungsform hat die Softwareanwendung232 eine begrenzte Warteschlangentiefe für Solid-State-Laufwerke, um eine Latenz der QoS für jeden Benutzer des Systems200 abzuleiten. Die Hostvorrichtung204 weist ferner ein Betriebssystem (OS) oder eine Softwareanwendung240 ohne zugehörige QoS aus. Die CPU234 ist mit einer Zwischenverbindung236 und einem Host DRAM238 gekoppelt. Der Host DRAM238 kann Daten der Übertragungswarteschlange speichern. Die Zwischenverbindung236 ist mit der Speichervorrichtung206 gekoppelt. Die Zwischenverbindung236 kann sowohl mit den Kopf- und Endzeigern der Übertragungswarteschlange226 als auch mit dem Befehlsabruf222 in Verbindung stehen. - Die CPU
234 erzeugt einen oder mehrere Befehle216 zum Senden an die Speichervorrichtung206 und kann über das Befehlsabrufsignal244 Befehle von der Speichervorrichtung206 senden und empfangen. Die CPU234 kann weiterhin eine Unterbrechung oder Türklingel218 an die Speichervorrichtung206 senden, um die Speichervorrichtung206 über einen oder mehrere Befehle216 zu informieren. Die CPU234 kann die an die Speichervorrichtung206 übermittelte Daten-Warteschlangentiefe begrenzen. Warteschlangentiefe (QD) ist die maximale Anzahl von Befehlen, die an die Speichervorrichtung206 angehängt werden, und Daten-QD ist die Datenmenge, die den an eine QD angehängten Befehlen zugeordnet ist. In einer Ausführungsform entspricht die Daten-QD242 der Speichervorrichtung206 der Bandbreite der Speichervorrichtung206 . Die Daten-QD242 ist auf die höchste Ebene beschränkt, unter der die Speichervorrichtung206 noch eine gewünschte Latenz-QoS aufrechterhalten kann. Der Befehlsprozessor220 verarbeitet dann die von der Hostvorrichtung204 empfangenen Befehle. -
3 ist ein Blockdiagramm, das ein Verfahren300 zum Betrieb einer Speichervorrichtung zum Ausführen eines Lese- oder Schreibbefehls gemäß einer Ausführungsform veranschaulicht. Verfahren300 kann mit dem Speichersystem100 mit einer Hostvorrichtung104 und einer Speichervorrichtung106 verwendet werden, die eine Steuerung108 aufweist. Das Verfahren300 kann ferner mit dem Speichersystem200 mit einer Hostvorrichtung204 und einer Speichervorrichtung206 verwendet werden, die einen Befehlsprozessor220 aufweist. - Verfahren
300 beginnt bei der Operation350 , bei der die Hostvorrichtung einen Befehl als Eintrag in eine Übertragungswarteschlange schreibt. Die Hostvorrichtung kann bei Operation350 einen oder mehrere Befehle in die Übertragungswarteschlange schreiben. Die Befehle können Lese- oder Schreibbefehle sein. Die Hostvorrichtung kann eine oder mehrere Übertragungswarteschlangen umfassen. Die Hostvorrichtung kann einen oder mehrere Befehle in einer beliebigen Reihenfolge (d. h. einer Übermittlungsreihenfolge) in die Übermittlungswarteschlange schreiben, unabhängig von der sequenziellen Schreibreihenfolge des einen oder der mehreren Befehle (d. h. einer sequenziellen Verarbeitungsreihenfolge). - In Operation
352 schreibt die Hostvorrichtung einen oder mehrere aktualisierte Endzeiger der Übertragungswarteschlange und läutet eine Türklingel oder sendet ein Unterbrechungssignal, um die Speichervorrichtung über den neuen Befehl zu benachrichtigen oder zu signalisieren, der zur Ausführung bereit ist. Das Türklingelsignal kann die Türklingel218 aus2 sein. Der Host kann einen aktualisierten Endzeiger der Übertragungswarteschlange schreiben und bei mehr als einer Übertragungswarteschlange für jede der Übertragungswarteschlangen ein Türklingel- oder Unterbrechungssignal senden. In Operation354 ruft eine Steuerung der Speichervorrichtung als Reaktion auf das Empfangen des Türklingel- oder Unterbrechungssignals den Befehl aus der einen oder den mehreren Übertragungswarteschlangen ab, und die Steuerung empfängt oder DMA-Iiest den Befehl. - In Operation
356 verarbeitet die Steuerung den Befehl und schreibt oder überträgt die mit dem Befehl verbundenen Daten in den Speicher der Hostvorrichtung. Die Steuerung kann mehr als einen Befehl gleichzeitig verarbeiten. Die Steuerung kann einen oder mehrere Befehle in der Übertragungsreihenfolge oder in der sequentiellen Reihenfolge verarbeiten. Die Verarbeitung eines Schreibbefehls kann die Identifizierung einer Zone zum Schreiben der mit dem Befehl verbundenen Daten, das Schreiben der Daten in eine oder mehrere LBA der Zone und das Vorrücken eines Schreibzeigers der Zone zur Identifizierung der nächsten verfügbaren LBA innerhalb der Zone aufweisen. - In Operation
358 schreibt die Steuerung, sobald der Befehl vollständig verarbeitet wurde, einen dem ausgeführten Befehl entsprechenden Abschlusseintrag in eine Abschlusswarteschlange der Hostvorrichtung und bewegt oder aktualisiert den CQ-Kopfzeiger, um auf den neu geschriebenen Abschlusseintrag zu zeigen. - In Operation
360 erzeugt und sendet die Steuerung ein Unterbrechungssignal oder eine Türklingel an die Hostvorrichtung. Das Unterbrechungssignal zeigt an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten in der Speichervorrichtung verfügbar sind. Das Unterbrechungssignal benachrichtigt weiterhin die Hostvorrichtung, dass die Abschlusswarteschlange bereit ist, gelesen oder verarbeitet zu werden. - In Operation
362 verarbeitet die Hostvorrichtung den Abschlusseintrag. In Operation364 schreibt die Hostvorrichtung einen aktualisierten CQ-Kopfzeiger in die Speichervorrichtung und läutet die Türklingel oder sendet ein Unterbrechungssignal an die Speichervorrichtung, um den Abschlusseintrag freizugeben. -
4A veranschaulicht gemäß einer Ausführungsform eine Ansicht der in Zonen aufgeteilten Namensräume (Zoned Namespaces, ZNS) 402, die in einer Speichervorrichtung400 verwendet werden. Die Speichervorrichtung400 kann die Ansicht der ZNS402 einer Hostvorrichtung präsentieren.4B veranschaulicht ein Zustandsdiagramm450 für die ZNS402 der Speichervorrichtung400 gemäß einer Ausführungsform. Die Speichervorrichtung400 kann die Speichervorrichtung106 des Speichersystems100 aus1 oder die Speichervorrichtung206 des Speichersystems200 aus2 sein. Die Speichervorrichtung400 kann einen oder mehrere ZNS402 aufweisen, und jeder ZNS402 kann unterschiedliche Größen aufweisen. Die Speichervorrichtung400 kann weiterhin einen oder mehrere herkömmliche Namensräume zusätzlich zu dem einen oder den mehreren in Zonen aufgeteilten Namensräumen402 umfassen. Darüber hinaus kann der ZNS402 ein Zoned Block Command (ZBC) für SAS und/oder ein Zoned-Device ATA Command Set (ZAC) für SATA sein. - In der Speichervorrichtung
400 ist der ZNS402 die Menge an NVM, die in Logikblöcke formatiert werden kann, so dass die Kapazität in eine Vielzahl von Zonen406a-406n (zusammenfassend als Zonen406 bezeichnet) unterteilt wird. Jede der Zonen406 weist eine Vielzahl von physikalischen oder Löschblöcken (nun gezeigt) einer Medieneinheit oder eines NVM404 auf und jedem der Löschblöcke ist eine Vielzahl von Logikblöcken (nicht gezeigt) zugeordnet. Wenn die Steuerung408 einen Befehl empfängt, wie z. B. von einer (nicht dargestellten) Hostvorrichtung oder der Übertragungswarteschlange einer Hostvorrichtung, kann die Steuerung408 Daten von der Vielzahl von Logikblöcken lesen und Daten in diese schreiben, die mit der Vielzahl von Löschblöcken der ZNS402 verbunden sind. Jeder der Logikblöcke ist einer eindeutigen LBA oder einem Sektor zugeordnet. - In einer Ausführungsform ist der NVM
404 eine NAND-Vorrichtung. Die NAND-Vorrichtung weist einen oder mehrere Dies auf. Jeder des einen oder der mehreren Dies weist eine oder mehrere Ebenen auf. Jede der einen oder mehreren Ebenen weist einen oder mehrere Löschblöcke auf. Jeder des einen oder der mehreren Löschblöcke weist eine oder mehrere Wortleitungen (z. B. 256 Wortleitungen) auf. Jede der einen oder mehreren Wortleitungen kann auf einer oder mehreren Seiten adressiert werden. Zum Beispiel kann ein MLC NAND-Die die obere Seite und die untere Seite verwenden, um die zwei Bits in jeder Zelle der vollständigen Wortleitung zu erreichen (z. B. 16 kB pro Seite). Außerdem kann auf jede Seite mit einer Granularität zugegriffen werden, die gleich oder kleiner als die volle Seite ist. Eine Steuerung kann häufig in Benutzerdatengranularität-LBA-Größen von 512 Bytes auf NAND zugreifen. Wie in der folgenden Beschreibung beschrieben, entsprechen die NAND-Stellen somit einer Granularität von 512 Byte. Als solche ergibt eine LBA-Größe von 512 Bytes und eine Seitengröße von 16 kB für zwei Seiten eines MCL-NAND etwa 16 NAND-Stellen pro Wortleitung. Die Größe der NAND-Stelle ist jedoch nicht als Einschränkung gedacht und wird lediglich als Beispiel verwendet. - Wenn Daten in einen Löschblock geschrieben werden, werden ein oder mehrere Logikblöcke entsprechend innerhalb einer Zone
406 aktualisiert, um zu verfolgen, wo sich die Daten innerhalb des NVM404 befinden. Daten können zu einem Zeitpunkt in eine Zone406 geschrieben werden, bis eine Zone406 voll ist, oder in mehrere Zonen406 , so dass mehrere Zonen406 teilweise gefüllt sein können. In ähnlicher Weise können beim Schreiben von Daten in eine bestimmte Zone406 Daten in die Vielzahl der Löschblöcke blockweise gleichzeitig, in sequentieller Reihenfolge der NAND-Stellen oder Wortleitung für Wortleitung in die Vielzahl der Löschblöcke geschrieben werden, bis zu einem benachbarten Block gewechselt wird (d. h. Schreiben in einen ersten Löschblock, bis der erste Löschblock voll ist, bevor zum zweiten Löschblock gewechselt wird) oder in mehrere Blöcke gleichzeitig, in sequentieller Reihenfolge der NAND-Stellen oder Wortleitung für Wortleitung, um jeden Block teilweise in einer stärker parallelen Weise zu füllen (d. h. Schreiben der ersten NAND-Stelle jedes Löschblocks, bevor in die zweite NAND-Stelle jedes Löschblocks geschrieben wird). - Wenn eine Steuerung
408 die Löschblöcke auswählt, die Daten für jede Zone speichern werden, ist die Steuerung408 in der Lage, die Löschblöcke entweder zur Zonenöffnungszeit auszuwählen, oder die Steuerung408 kann die Löschblöcke auswählen, wenn die Notwendigkeit besteht, die erste NAND-Stelle oder Wortleitung dieses bestimmten Löschblocks zu füllen. Dies kann differenzierter sein, wenn das oben beschriebene Verfahren zum vollständigen Füllen eines Löschblocks vor dem Starten des nächsten Löschblocks verwendet wird. Die Steuerung408 kann die Zeitdifferenz verwenden, um einen optimaleren Löschblock auf einer Just-in-Time-Basis auszuwählen. Die Entscheidung, welcher Löschblock für jede Zone und ihre zusammenhängenden LBAs zugewiesen und zugeteilt wird, kann für null oder mehr gleichzeitige Zonen zu jeder Zeit innerhalb der Steuerung408 erfolgen. - Jede der Zonen
406 ist einer Zonenstart-Logikblockadresse (ZSLBA) oder einem Zonenstartssektor zugeordnet. Die ZSLBA ist die erste verfügbare LBA in der Zone406 . Zum Beispiel ist die erste Zone406a ZaSLBA zugeordnet, die zweite Zone406b ist ZbSLBA zugeordnet, die dritte Zone406c ist ZcSLBA zugeordnet, die vierte Zone406d ist ZdSLBA zugeordnet und die n-te Zone406n (d. h. die letzte Zone) ist ZnSLBA zugeordnet. Jede Zone406 wird durch ihre ZSLBA identifiziert und ist dazu eingerichtet, sequentielle Schreibvorgänge zu empfangen (d. h. das Schreiben von Daten auf den NVM110 in der Reihenfolge, in der die Schreibbefehle empfangen werden). - Wenn Daten in eine Zone
406 geschrieben werden, wird ein Schreibzeiger410 vorgerückt oder aktualisiert, um auf den nächsten verfügbaren Block in der Zone406 zu zeigen oder diesen anzuzeigen, in den Daten geschrieben werden sollen, um den nächsten Schreibstartpunkt zu verfolgen (d. h. der Abschlusspunkt des vorherigen Schreibvorgangs entspricht dem Startpunkt eines nachfolgenden Schreibvorgangs). Somit zeigt der Schreibzeiger410 an, wo der nachfolgende Schreibvorgang in die Zone406 beginnen wird. Nachfolgende Schreibbefehle sind ‚Zonenanhang‘-Befehle, bei denen die mit dem nachfolgenden Schreibbefehl verbundenen Daten an die Zone406 an der Stelle angehängt werden, die der Schreibzeiger410 als nächsten Startpunkt angibt. Eine geordnete Liste von LBAs innerhalb der Zone406 kann für die Schreibreihenfolge gespeichert werden. Jede Zone406 kann ihren eigenen Schreibzeiger410 haben. Wenn somit ein Schreibbefehl empfangen wird, wird eine Zone406 durch ihre ZSLBA identifiziert, und der Schreibzeiger410 bestimmt, wo der Schreibvorgang der Daten innerhalb der identifizierten Zone406 beginnt. -
4B veranschaulicht ein Zustandsdiagramm450 für den ZNS402 aus4A . In dem Zustandsdiagramm450 kann jede Zone in einem anderen Zustand sein, wie z. B. leer, aktiv, voll oder offline. Wenn eine Zone leer ist, ist die Zone frei von Daten (d. h. keiner der Löschblöcke in der Zone speichert gegenwärtig Daten) und der Schreibzeiger befindet sich auf der ZSLBA (d. h. WP=0). Eine leere Zone schaltet in eine offene und aktive Zone um, sobald ein Schreibvorgang in die Zone eingeplant ist oder wenn ein Zonenöffnungsbefehl durch den Host ausgegeben wird. Die Zonenverwaltungsbefehle (ZM-Befehle) können verwendet werden, um eine Zone zwischen den Zuständen „Zone offen“ und „Zone geschlossen“ zu bewegen, die beide aktive Zustände sind. Wenn eine Zone aktiv ist, umfasst die Zone offene Blöcke, die beschrieben werden können, und dem Host kann eine Beschreibung der empfohlenen Zeit im aktiven Zustand durch die ZM oder die Steuerung408 bereitgestellt werden. Die Steuerung kann die ZM aufweisen. - Der Begriff „geschrieben“ umfasst das Programmieren von Benutzerdaten auf 0 oder mehr NAND-Stellen in einem Löschblock und/oder teilweise gefüllte NAND-Stellen in einem Löschblock, wenn die Benutzerdaten nicht alle verfügbaren NAND-Stellen gefüllt haben. Der Begriff „geschrieben“ kann ferner das Verschieben einer Zone auf voll aufgrund interner Laufwerksbehandlungsanforderungen (Bedenken hinsichtlich der Datenerhaltung bei offenen Blöcken, da sich die fehlerhaften Bits bei offenen Löschblöcken schneller ansammeln), das Schließen oder Füllen einer Zone durch die Speichervorrichtung
400 aufgrund von Ressourcenbeschränkungen, wie zu viele offene Zonen, um u. a. den Defektzustand zu verfolgen oder zu entdecken, oder das Schließen einer Zone durch eine Hostvorrichtung aufgrund von Bedenken, wie u. a. das Fehlen von Daten zum Senden an das Laufwerk, das Herunterfahren des Computers, die Fehlerbehandlung auf dem Host, begrenzte Host-Ressourcen für die Verfolgung, einschließen. - Die aktiven Zonen können entweder offen oder geschlossen sein. Eine offene Zone ist eine leere oder teilweise gefüllte Zone, die bereit ist, beschrieben zu werden, und weist gegenwärtig zugewiesene Ressourcen auf. Die Daten, die von der Hostvorrichtung mit einem Schreibbefehl oder Zonenanhangbefehl empfangen werden, können auf einen offenen Löschblock programmiert werden, der gegenwärtig nicht mit früheren Daten gefüllt ist. Eine geschlossene Zone ist eine leere oder teilweise gefüllte Zone, die derzeit nicht fortlaufend vom Host beschrieben wird. Der Wechsel einer Zone von einem offenen Zustand in einen geschlossenen Zustand ermöglicht es der Steuerung
408 , Ressourcen anderen Aufgaben neu zuzuweisen. Diese Aufgaben können andere Zonen, die offen sind, andere herkömmliche Nicht-Zonen-Bereiche oder andere Bedürfnisse der Steuerung einschließen, sind aber nicht darauf beschränkt. - Sowohl in der offenen als auch in der geschlossenen Zone zeigt der Schreibzeiger auf eine Stelle in der Zone irgendwo zwischen der ZSLBA und dem Ende der letzten LBA der Zone (d. h. WP>0). Aktive Zonen können zwischen dem offenen und dem geschlossenen Zustand wechseln, wenn sie von der ZM bezeichnet werden oder wenn ein Schreiben in die Zone geplant ist. Zusätzlich kann die ZM eine aktive Zone zurücksetzen, um die in der Zone gespeicherten Daten zu leeren oder zu löschen, so dass die Zone wieder auf eine leere Zone umschaltet. Sobald eine aktive Zone voll ist, schaltet die Zone in den vollen Zustand. Eine volle Zone ist eine Zone, die vollständig mit Daten gefüllt ist und keine Blöcke mehr zum Schreiben von Daten zur Verfügung hat (d. h. WP=Zonenkapazität (ZCAP)). Lesebefehle von Daten, die in vollen Zonen gespeichert sind, können weiterhin ausgeführt werden.
- Die ZM kann eine volle Zone zurücksetzen und eine Löschung der in der Zone gespeicherten Daten planen, so dass die Zone wieder auf eine leere Zone umschaltet. Wenn eine volle Zone zurückgesetzt wird, kann es vorkommen, dass die Zone nicht sofort von Daten gelöscht wird, obwohl die Zone als leere Zone markiert werden kann, die zum Beschreiben bereit ist. Die Rücksetzzone muss jedoch vor dem Wechsel zu einer offenen und aktiven Zone gelöscht werden. Eine Zone kann jederzeit zwischen einem ZM-Zurücksetzen und einem ZM-Öffnen gelöscht werden. Eine Offline-Zone ist eine Zone, die nicht verfügbar ist, um Daten zu schreiben. Eine Offline-Zone kann sich im vollen Zustand, im leeren Zustand oder in einem teilweise gefüllten Zustand befinden, ohne aktiv zu sein.
- Da das Zurücksetzen einer Zone alle in der Zone gespeicherten Daten löscht oder eine Löschung plant, entfällt die Notwendigkeit der Speicherbereinigung einzelner Löschblöcke, wodurch der gesamte Speicherbereinigungsprozess der Speichervorrichtung
400 verbessert wird. Die Speichervorrichtung400 kann einen oder mehrere Löschblöcke zum Löschen markieren. Wenn eine neue Zone gebildet wird und die Speichervorrichtung400 ein ZM-Öffnen erwartet, können der eine oder die mehreren zum Löschen markierten Löschblöcke dann gelöscht werden. Die Speichervorrichtung400 kann weiterhin die physikalische Sicherung der Zone beim Löschen der Löschblöcke entscheiden und erstellen. Sobald somit die neue Zone geöffnet ist und Löschblöcke zur Bildung der Zone ausgewählt werden, werden die Löschblöcke gelöscht worden sein. Darüber hinaus kann bei jedem Zurücksetzen einer Zone eine neue Reihenfolge für die LBAs und der Schreibzeiger410 für die Zone406 gewählt werden, wodurch die Zone406 tolerant gegenüber dem Empfang von Befehlen außerhalb der sequentiellen Reihenfolge sein kann. Der Schreibzeiger410 kann optional abgeschaltet werden, so dass ein Befehl in jedwede Start-LBA geschrieben werden kann, die für den Befehl angegeben wird. - Zurück zu
4A : Wenn die Steuerung408 einen Schreibbefehl vom Host204 empfängt oder der direkte Speicherzugriff (DMA) die Schreibdaten liest, kann die Steuerung408 einen leeren Löschblock auswählen, um die mit dem Befehl verbundenen Daten zu schreiben, und die leere Zone406 wechselt in eine aktive und offene Zone406 . Der Schreibbefehl kann ein Befehl zum Schreiben neuer Daten oder ein Befehl zum Verschieben gültiger Daten in eine andere Zone zum Zweck der Speicherbereinigung sein. Die Steuerung408 ist dazu konfiguriert, neue Befehle aus einer von einer Hostvorrichtung besetzten Übertragungswarteschlange DMA-zu lesen oder einzuziehen. - In einer leeren Zone
406 , die gerade in eine aktive Zone406 gewechselt wurde, werden die Daten der Zone406 und dem zugehörigen Satz von sequentiellen LBAs der Zone406 zugewiesen, beginnend bei der ZSLBA, da der Schreibzeiger410 den zur ZSLBA gehörenden logischen Block als ersten verfügbaren logischen Block angibt. Die Daten können in einen oder mehrere Löschblöcke oder NAND-Stellen geschrieben werden, die für die physikalische Stelle der Zone406 zugewiesen wurden. Nachdem die mit dem Schreibbefehl verbundenen Daten in die Zone406 geschrieben wurden, wird der Schreibzeiger410 aktualisiert, um auf die nächste für einen Host-Schreibvorgang verfügbare LBA zu zeigen (d. h. auf den Abschlusspunkt des ersten Schreibvorgangs). Die Schreibdaten von einem solchen Host-Schreibbefehl werden sequenziell in die nächste verfügbare NAND-Stelle in dem Löschblock programmiert, der für die physische Unterstützung der Zone ausgewählt wurde. - In einigen Ausführungsformen kann eine NAND-Stelle gleich einer Wortleitung sein. Wenn in einer solchen Ausführungsform der Schreibbefehl kleiner als eine Wortleitung ist, kann die Steuerung optional mehrere Schreibbefehle an einem anderen Speicherort, wie beispielsweise DRAM oder SRAM, aggregieren, bevor sie eine vollständige Wortleitung programmiert, die aus mehreren Schreibbefehlen zusammengesetzt ist. Schreibbefehle, die länger als eine Wortleitung sind, sind in der Lage, eine vollständige Wortleitung mit einigen der Daten zu programmieren und zu füllen, und die überschüssigen Daten über eine Wortleitung hinaus werden verwendet, um die nächste Wortleitung zu füllen. Für die Zwecke dieser Beschreibung sind die Schreibdatengrößen gleich einer NAND-Stelle von 512 Bytes; die Größe einer NAND-Stelle soll jedoch nicht einschränkend sein.
- Beispielsweise kann die Steuerung
408 einen ersten Schreibbefehl in eine dritte Zone406c oder einen ersten Zonenanhangbefehl empfangen. Der Host identifiziert nacheinander, an welchen Logikblock der Zone406 die dem ersten Befehl zugeordneten Daten zu schreiben sind. Die dem ersten Befehl zugeordneten Daten werden dann in die erste oder nächste(n) verfügbare(n) LBA(s) in der dritten Zone406c geschrieben, wie durch den Schreibzeiger410 angezeigt wird, und der Schreibzeiger410 wird so vorgerückt oder aktualisiert, dass er auf die nächste verfügbare LBA zeigt, die für einen Host-Schreibvorgang verfügbar ist (d. h. WP>0). Wenn die Steuerung408 einen zweiten Schreibbefehl in die dritte Zone406c oder einen zweiten Zonenanhangbefehl empfängt, werden die mit dem zweiten Schreibbefehl verbundenen Daten in die nächste(n) verfügbare(n) LBA(s) in der dritten Zone406c geschrieben, die durch den Schreibzeiger410 identifiziert werden. Sobald die dem zweiten Befehl zugeordneten Daten in die dritte Zone406c geschrieben werden, rückt der Schreibzeiger410 erneut vor oder wird aktualisiert, um auf die nächste verfügbare LBA zu zeigen, die für einen Host-Schreibvorgang zur Verfügung steht. Durch das Zurücksetzen der Zone406c wird der Schreibzeiger410 wieder auf ZcSLBA zurückbewegt (d. h. WP=0), und die Zone406c wechselt in eine leere Zone. - Eine strenge Schreibreihenfolge kann jedoch bewirken, dass die Host-Schreibvorgänge auf einzelne E/A-Schreibvorgänge pro Zone
406 degeneriert werden, was die Host-Leistung begrenzt und den Host-Overhead erhöht. Insofern ist die Speichervorrichtung400 konfiguriert, um einen herstellungs- oder anbieterspezifischen Befehl zum Ausschalten der sequenziellen Prüfung zu empfangen. -
5A veranschaulicht einen ZNS500 , bei dem die sequenzielle Prüfung ausgeschaltet ist, während Befehle zum Anhängen der Zone empfangen werden, gemäß einer Ausführungsform.5B veranschaulicht eine entsprechende Tabelle 550 von Schreibbefehlen, die für den ZNS500 abgerufen wurden. Die Tabelle 550 kann in der Steuerung oder in einer Speichervorrichtung der Speichervorrichtung gespeichert sein. Die ZNS500 können die ZNS402 aus4 sein. Während der ZNS500 aus5A als eine Zone506 aufweisend gezeigt ist, können die ZNS500 eine Vielzahl von Zonen506 umfassen. Darüber hinaus kann jede Zone506 der Vielzahl von Zonen des ZNS500 ihre eigene individuelle Tabelle 550 aufweisen, oder eine Tabelle 550 kann alle von jeder Zone506 der Vielzahl von Zonen abgerufenen Schreibbefehle verfolgen.6A veranschaulicht einen ZNS600 , bei dem die sequenzielle Prüfung eingeschaltet ist, während Befehle zum Anhängen der Zone empfangen werden, gemäß einer anderen Ausführungsform.6B veranschaulicht eine entsprechende Tabelle 650 von Schreibbefehlen, die für den ZNS600 abgerufen wurden. Die ZNS600 können die ZNS402 aus4 sein. - In
5A werden ein erster Schreibbefehl (Schreiben0)520 , ein zweiter Schreibbefehl522 (Schreiben1) und ein dritter Schreibbefehl524 (Schreiben2) empfangen oder DMA-gelesen, und eine Zone506 wird durch ihre ZSLBA identifiziert, um die Daten zu speichern, die jedem der ersten, zweiten und dritten Schreibbefehle520 ,522 ,524 zugeordnet sind. Die Schreibbefehle520 ,522 ,524 können jeweils ein Befehl zum Schreiben neuer Daten oder ein Befehl zum Verschieben gültiger Daten von einer Zone in eine andere Zone zum Zweck der Speicherbereinigung sein. Eine Steuerung, wie beispielsweise die Steuerung408 aus4A , ist konfiguriert, um neue Befehle von einer Hostvorrichtung abzurufen und die Daten, die den neuen Befehlen zugeordnet sind, DMA-zu lesen. Sequentiell soll zuerst der erste Schreibbefehl520 , als zweites der zweite Schreibbefehl522 und als drittes der dritte Schreibbefehl524 geschrieben werden. Die Zone506 umfasst eine Vielzahl von logischen Blöcken5120-5127 (kollektiv als logische Blöcke512 bezeichnet). Jeder der logischen Blöcke entspricht einer LBA, die in der Tabelle 550 gezeigt ist. Während acht logische Blöcke512 angezeigt werden, kann die Zone506 eine beliebige Anzahl von logischen Blöcken512 umfassen. -
5B veranschaulicht eine entsprechende Tabelle 550, welche die von der Zone506 abgerufenen Schreibbefehle verfolgt. Die Tabelle 550 umfasst eine erste Spalte552 , die eine Schreib-ID der Befehle (d. h. die sequentielle Reihenfolge der Befehle) identifiziert, eine zweite Spalte554 , welche die Start-LBA identifiziert, eine dritte Spalte556 , welche die Anzahl logischer Blöcke identifiziert, die benötigt werden, um die Daten, die einem Befehl und der erwarteten Start-LBA zugeordnet sind, zu schreiben, eine vierte Spalte558 , welche die Anzahl logischer Blöcke identifiziert, die der Schreibzeiger510 vorgerückt ist, nachdem ein Schreibvorgang in der Abschlusswarteschlange protokolliert worden ist, eine fünfte Spalte560 , die den LBA-Offset der Zone von der ZSLBA identifiziert, und eine sechste Spalte562 , welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die zum Speichern der Daten verwendet wird. Während drei Schreibzeiger5100 ,5101 ,5102 gezeigt sind, umfasst die Zone506 nur einen Schreibzeiger510 , und die drei Schreibzeiger5100 ,5101 ,5102 zeigen die Position des einzelnen Schreibzeigers510 an, wenn Daten zu verschiedenen Zeiten in die Zone506 geschrieben werden, wie nachstehend beschrieben. - Jeder Schreibbefehl
520 ,522 ,524 wird in der Tabelle 550 in der Übermittlungsreihenfolge und nicht in der sequentiellen Reihenfolge angezeigt. In der Tabelle 550 wird der zweite Schreibbefehl522 , identifiziert durch Schreib-ID 1, vor dem ersten Schreibbefehl520 , identifiziert durch Schreib-ID0 , empfangen. Die zweite Spalte554 identifiziert die Start-LBA für den zweiten Schreibbefehl522 als ZSLBA und benötigt zwei logische Blöcke (2 LBA), um die Daten zu speichern, wie in der dritten Spalte556 gekennzeichnet. Da der erste Schreibbefehl520 der erste sequentielle Schreibvorgang in die Zone506 sein soll und nur einen logischen Block (1 LBA) benötigt, identifiziert die dritte Spalte556 ferner die erwartete Start-LBA für den zweiten Befehl522 als den zweiten logischen Block5121 der Zone506 . - Da jedoch der zweite Befehl
522 vor dem ersten Befehl520 übermittelt wurde, beginnt der zweite Befehl522 mit dem ersten verfügbaren logischen Block512o der Zone506 , die durch den Schreibzeiger5100 angezeigt wird. Da die Tabelle 550 lediglich die Start-LBA als die ZSLBA angibt, werden die dem zweiten Befehl522 zugeordneten Daten in den durch den Schreibzeiger5100 angegebenen ersten verfügbaren logischen Block512o geschrieben. Beim Schreiben der dem zweiten Befehl522 zugeordneten Daten in den ersten logischen Block5120 und den zweiten logischen Block5121 der Zone506 wird der Schreibzeiger510 um zwei logische Blöcke vorgerückt und die vierte Spalte558 entsprechend aktualisiert. Wie in der sechsten Spalte562 der Tabelle 550 gezeigt, werden die Daten, die dem zweiten Befehl522 zugeordnet sind, in einer ersten und einer zweiten NAND-Stelle NL0, NL1 gespeichert, da der erste logische Block5120 und der zweite logische Block5121 der ersten NAND-Stelle NL0 bzw. der zweiten NAND-Stelle NL1 entsprechen. - Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone
506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers510 , die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die dem zweiten Befehl522 zugeordneten Daten in die Zone506 geschrieben wurden, die LBAs von der ZSLBA um zwei versetzt sind (ZSLBA + 2). Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und ein Aktualisieren der fünften Spalte560 informiert die Hostvorrichtung, wo die dem zweiten Befehl zugehörigen Daten gespeichert sind. - Der erste Schreibbefehl
520 wurde nach dem zweiten Schreibbefehl522 übermittelt. Insofern identifiziert die zweite Spalte554 für den ersten Befehl (Schreib-ID 0) die Start-LBA für den ersten Schreibbefehl520 als die ZSLBA und erfordert einen logischen Block (1 LBA), wie in der dritten Spalte556 identifiziert. Während die Daten, die dem ersten Schreibbefehl520 zugeordnet sind, in den ersten logischen Block5120 geschrieben werden sollen, wie in der dritten Spalte556 angegeben, wurden die Daten, die dem zweiten Schreibbefehl522 zugeordnet sind, bereits in den ersten logischen Block5120 geschrieben, wie in der fünften Spalte560 für den zweiten Befehl angegeben (Schreib-ID 1). - Da die Steuerung den LBA-Offset in der fünften Spalte
560 verfolgt und den Schreibzeiger510 entsprechend vorrückt, bestätigt die Steuerung, dass der erste logische Block512o verwendet wird, und schreibt die dem ersten Befehl520 zugeordneten Daten in den nächsten verfügbaren logischen Block5122 , wie durch den Schreibzeiger5101 angegeben. Beim Schreiben der dem ersten Befehl520 zugeordneten Daten in den dritten logischen Block5122 der Zone506 wird der Schreibzeiger510 um einen logischen Block vorgerückt und die vierte Spalte558 wird entsprechend aktualisiert. Wie in der sechsten Spalte562 der Tabelle 550 gezeigt, werden die Daten, die dem ersten Befehl520 zugeordnet sind, in einer dritten NAND-Stelle NL2 gespeichert, da der dritte logische Block5122 der dritten NAND-Stelle NL2 entspricht. - Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone
506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers510 , die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die Daten, die dem ersten und dem zweiten Befehl520 ,522 zugeordnet sind, in die Zone506 geschrieben wurden, die LBAs nun um drei von der ZSLBA versetzt sind (ZSLBA + 3). Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und Aktualisieren der fünften Spalte560 informiert die Hostvorrichtung, wo die dem ersten Befehl zugeordneten Daten gespeichert sind. - Der dritte Befehl
524 wurde als drittes übermittelt. Für den dritten Befehl524 (Schreib-ID 2) identifiziert die Tabelle 550 in der zweiten Spalte554 die Start-LBA als ZSLBA und identifiziert in der dritten Spalte556 , dass vier logische Blöcke (4 LBA) benötigt werden. Die Steuerung schreibt die dem dritten Befehl524 zugeordneten Daten in den nächsten verfügbaren logischen Block5123 , wie durch den Schreibzeiger5101 angegeben. Beim Schreiben der dem dritten Befehl524 zugeordneten Daten in den vierten logischen Block5123 über den siebten logischen Block5126 wird der Schreibzeiger5102 um vier logische Blöcke vorgerückt und die vierte Spalte558 entsprechend aktualisiert. Wie in der sechsten Spalte562 der Tabelle 550 gezeigt, werden die Daten, die dem dritten Befehl524 zugeordnet sind, in einer vierten bis siebten NAND-Stelle NL3-NL6 gespeichert, da der vierte bis siebte logische Block5123-5126 der vierten bis siebten NAND-Stelle NL3-NL6 entspricht. - Die Steuerung der Speichervorrichtung bestimmt dann den LBA-Offset von der ZSLBA, und der Abschlusseintrag wird als letzte in die Zone
506 geschriebene LBA in die Abschlusswarteschlange zurückgegeben. Das Vorrücken des Schreibzeigers510 , die Bestimmung des Offsets und die Rückkehr des Abschlusseintrags in die Abschlusswarteschlange können gleichzeitig oder in beliebiger Reihenfolge erfolgen. Die fünfte Spalte560 wird dann aktualisiert, um zu identifizieren, dass, nachdem die Daten, die dem ersten, zweiten und dritten Befehl520 ,522 ,524 zugeordnet sind, in die Zone506 geschrieben wurden, die LBAs von der ZSLBA nun um sieben (ZSLBA + 7) versetzt sind. Ein Zurückgeben des Abschlusseintrags an die Abschlusswarteschlange und ein Aktualisieren der fünften Spalte560 informiert die Hostvorrichtung, wo die dem dritten Befehl zugehörigen Daten gespeichert sind. - Alternativ veranschaulichen die
6A-6B einen ZNS600 , bei dem die sequenzielle Prüfung eingeschaltet ist, und eine entsprechende Tabelle 650 von Schreibbefehlen, die für den ZNS600 abgerufen wurden. Während der ZNS600 aus6A gezeigt ist, der eine Zone606 umfasst, kann der ZNS600 eine Vielzahl von Zonen606 umfassen. Darüber hinaus kann jede Zone606 der Vielzahl von Zonen des ZNS600 ihre eigene individuelle Tabelle 650 umfassen, oder eine Tabelle 650 kann alle von jeder Zone606 der Vielzahl von Zonen abgerufenen Schreibbefehle verfolgen. - In
6A werden ein erster Schreibbefehl (Schreiben0)620 , ein zweiter Schreibbefehl622 (Schreiben1) und ein dritter Schreibbefehl624 (Schreiben2) abgerufen oder DMA-gelesen, und eine Zone606 wird durch ihre ZSLBA identifiziert, um die Daten zu speichern, die jedem der ersten, zweiten und dritten Schreibbefehle620 ,622 ,624 zugeordnet sind. Eine Steuerung, wie beispielsweise die Steuerung408 aus4A , ist konfiguriert, um neue Befehle von einer Hostvorrichtung DMA-zu lesen. Sequentiell soll zuerst der erste Schreibbefehl620 , als zweites der zweite Schreibbefehl622 und als drittes der dritte Schreibbefehl624 geschrieben werden. Die Zone606 umfasst eine Vielzahl von logischen Blöcken 6120-6127 (kollektiv als logische Blöcke612 bezeichnet). Jeder der logischen Blöcke entspricht einer LBA, die in der Tabelle 650 gezeigt ist. Während acht logische Blöcke612 angezeigt werden, kann die Zone606 eine beliebige Anzahl von logischen Blöcken612 umfassen. -
6B veranschaulicht eine entsprechende Tabelle 650, welche die in der Zone606 empfangenen Schreibbefehle verfolgt. Die Tabelle 650 umfasst eine erste Spalte652 , die eine Schreib-ID der Befehle identifiziert, eine zweite Spalte654 , welche die Start-LBA identifiziert, eine dritte Spalte656 , welche die Anzahl von logischen Blöcken identifiziert, die benötigt werden, um die Daten zu schreiben, die einem Befehl und der Start-LBA zugeordnet sind, eine vierte Spalte658 , welche die Anzahl logischer Blöcke identifiziert, die der Schreibzeiger610 vorgerückt ist, nachdem ein Schreibvorgang in der Abschlusswarteschlange protokolliert worden ist, und eine fünfte Spalte662 , welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die zum Speichern der Daten verwendet wird. - Jeder Schreibbefehl
620 ,622 ,624 wird in der Tabelle 650 in der Übermittlungsreihenfolge und nicht in der sequentiellen Reihenfolge angezeigt. In der Tabelle 650 wird der zweite Schreibbefehl622 , identifiziert durch Schreib-ID 1, vor dem ersten Schreibbefehl620 , identifiziert durch Schreib-ID 0, empfangen. Die zweite Spalte654 identifiziert die Start-LBA für den zweiten Schreibbefehl622 als den zweiten logischen Block nach der ZSLBA (ZSLBA + 1) (d.h. die zweite LBA6121 ) und benötigt zwei logische Blöcke (2 LBA), um die Daten zu speichern, wie in der dritten Spalte656 gekennzeichnet. Da der erste Schreibbefehl620 der erste sequentielle Schreibvorgang in die Zone606 sein soll und nur einen logischen Block (1 LBA) zum Speichern der Daten benötigt, identifiziert die dritte Spalte656 ferner die Start-LBA für den zweiten Befehl622 als die zweite LBA6121 der Zone606 . - Da der zweite Befehl
622 vor dem ersten Befehl620 übermittelt wurde, versucht die Steuerung, die dem zweiten Befehl622 zugeordneten Daten vor den dem ersten Befehl620 zugeordneten Daten zu schreiben. Der Schreibzeiger610 zeigt jedoch den der ersten logischen Blockadresse zugeordneten ersten logischen Block612o als den ersten verfügbaren logischen Block an, die Tabelle 650 zeigt jedoch widersprüchlich den zweiten logischen Block6121 als den logischen Startblock für den zweiten Befehl622 an. Da der Schreibzeiger610 und die Tabelle 650 unterschiedliche Start-LBAs für den zweiten Befehl622 angeben, können die dem zweiten Befehl622 zugeordneten Daten nicht in die Zone606 geschrieben werden. - Die
7A-7F veranschaulichen das Schreiben in eine Zone706 eines ZNS700 nicht sequenziell und ohne Empfang von Zonenanhangbefehlen gemäß einer Ausführungsform. Die ZNS700 können mit dem Speichergerät400 und NVM404 aus4 verwendet werden. Die ZNS700 können die ZNS402 aus4 sein. Obwohl nur eine Zone706 in dem ZNS700 gezeigt ist, kann der ZNS700 eine Vielzahl von Zonen umfassen, und die ähnliche außerhalb der Reihenfolge liegende Schreibaktivität, die nachstehend beschrieben wird, kann in einer oder mehreren der Vielzahl von Zonen auftreten.8 veranschaulicht eine beispielhafte entsprechende Tabelle 800, die von der Zone706 abgerufenen Schreibbefehle verfolgt. Jede Zone706 der Vielzahl von Zonen der ZNS700 kann ihre eigene individuelle Tabelle 800 aufweisen, oder eine Tabelle 800 kann alle Schreibbefehle verfolgen, die von jeder Zone706 der Vielzahl von Zonen abgerufen werden. Die Tabelle 800 kann in der Steuerung, in einer Speichervorrichtung der Speichervorrichtung und/oder in der Hostvorrichtung gespeichert sein. In einer Ausführungsform speichern sowohl die Speichervorrichtung als auch die Hostvorrichtung einzeln die Tabelle 800. - Wie oben beschrieben, entsprechen die beispielhaften NAND-Stellen einer Granularität von 512 Bytes. So ergeben sich bei einer LBA-Größe von 512 Byte und einer Seitengröße von 16 kB für zwei Seiten eines MCL-NAND etwa 16 NAND-Speicherplätze pro Wortleitung. Die Größe der NAND-Stelle ist jedoch nicht als Einschränkung gedacht und wird lediglich als Beispiel verwendet. Außerdem können, während NAND als Beispiel verwendet wird, auch andere Speichertypen verwendet werden, und NAND soll nicht einschränkend sein.
-
7A veranschaulicht, dass die Zone706 leer ist und keine Daten speichert (d. h. es wurde noch kein Befehl abgerufen, Daten in die Zone706 zu schreiben). Die Zone706 kann sich im leeren oder aktiven Zustand befinden. Die Zone706 umfasst eine Vielzahl von logischen Blöcken7120-7127 (kollektiv als logische Blöcke712 bezeichnet). Jeder der logischen Blöcke712 entspricht einer LBA oder einem Sektor, die in einer entsprechenden Tabelle 800 aus8 verfolgt werden. Während acht logische Blöcke712 angezeigt werden, kann die Zone706 eine beliebige Anzahl von logischen Blöcken712 umfassen. Eine ZSLBA gibt den Anfang oder erste LBA der Zone706 an, während eine ZSLBA + ZCAP das Ende oder volle Kapazität der Zone706 (d.h. Zonenkapazität) angibt. - Eine Steuerung, wie beispielsweise die Steuerung
408 aus4A , ist konfiguriert, um neue Befehle in einer Zone706 von einer Hostvorrichtung abzurufen und die Daten, die den neuen Befehlen zugeordnet sind, DMA-zu lesen. Die Steuerung kann dann die dem Befehl zugeordneten Daten in einen oder mehrere logische Blöcke712 der Zone706 schreiben. Die Zone706 verwendet keinen Schreibzeiger, da ein Schreibzeiger verwendet wird, um den nächsten sequentiell verfügbaren logischen Block712 zu identifizieren. Darüber hinaus wird die sequenzielle Prüfung ausgeschaltet, wie in den obigen5A-5B beschrieben. Die Steuerung kann jedoch immer noch ein optionales Sicherheitsmerkmal implementieren, um zu bestimmen, ob bereits während der aktuellen Dauer des zonenaktiven Zustands in eine bestimmte LBA geschrieben wurde. Wenn eine bestimmte LBA bereits während der aktuellen Dauer des zonenaktiven Zustands geschrieben wurde, kann die Steuerung optional den zweiten Schreibvorgang in die LBA zurückweisen. -
8 veranschaulicht eine entsprechende Tabelle 800, welche die von der Zone706 empfangenen Schreibbefehle verfolgt. Die Tabelle 800 kann im DRAM gespeichert sein. Die Tabelle 800 umfasst eine erste Spalte852 , die eine Schreib-ID der Befehle (d. h. die sequentielle Reihenfolge der Befehle) identifiziert, eine zweite Spalte854 , die Start-LBA identifiziert, eine dritte Spalte856 , welche die Anzahl logischer Blöcke identifiziert, die benötigt werden, um die Daten, die einem Befehl und der erwarteten Start-LBA zugeordnet sind, zu schreiben, eine vierte Spalte860 , welche die LBA identifiziert, die verwendet wird, um die Daten, die einem Befehl zugeordnet sind, als nicht verfügbar zu speichern, um geschrieben zu werden (d. h. voll), und eine fünfte Spalte862 , welche die physische Position der NAND-Adresse identifiziert, die der LBA zugeordnet ist, die verwendet wird, um die Daten zu speichern. -
7B veranschaulicht die Zone706 , nachdem ein erster Befehl730 an die Zone706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem ersten Befehl730 zugeordnet sind, in den vierten logischen Block7123 der Zone706 geschrieben wurden. Der Host identifiziert, in welchen logischen Block712 der Zone706 die mit dem ersten Befehl730 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann einen oder mehrere verfügbare logische Blöcke712 der Zone706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, und die Auswahl muss nicht sequenziell erfolgen. Da die Hostvorrichtung speziell einen oder mehrere logische Blöcke712 der Zone706 zum Speichern der Daten identifiziert, muss kein Schreibzeiger verwendet werden. - Die Steuerung ruft dann den ersten Befehl
730 ab, DMA-Iiest die Daten, die dem ersten Befehl730 zugeordnet sind, und schreibt die Daten in den ausgewählten logischen Block712 (d. h. den vierten logischen Block7123 ), der durch die Hostvorrichtung identifiziert wird. Während die Daten, die dem ersten Befehl730 zugeordnet sind, auf den vierten logischen Block7123 programmiert sind, kann die NAND-Adresse, die dem vierten logischen Block7123 zugeordnet ist, die erste verfügbare NAND-Stelle in NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die erste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des ersten Befehls730 eine erste NAND-Stelle NL0 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der vierte logische Block7123 einer vierten NL im NAND (z.B. einer vierten NAND-Stelle NL3). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone706 dies nicht sind. Die Tabelle 800 aus8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem ersten Befehl730 zugeordnet sind, in dem ausgewählten logischen Block7123 gespeichert wurden, der durch die Hostvorrichtung identifiziert wird. - Sowohl die Hostvorrichtung als auch die Speichervorrichtung können individuell verfolgen, welche logischen Blöcke
712 der Zone706 verwendet wurden, um Daten zu speichern. Sobald ein logischer Block712 geschrieben wurde, verfolgen sowohl die Hostvorrichtung als auch die Speichervorrichtung, dass der/die geschriebene(n) logische(n) Block/Blöcke712 nicht in der Lage ist/sind, mehr Daten zu speichern, oder nicht verfügbar ist/sind, bis die Zone706 wieder in einen leeren Zustand zurückversetzt wird. -
7C veranschaulicht die Zone706 , nachdem ein zweiter Befehl732 an die Zone706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem zweiten Befehl732 zugeordnet sind, in den siebten logischen Block7126 der Zone706 geschrieben wurden. Der Host identifiziert wiederum, in welchen logischen Block712 der Zone706 die mit dem zweiten Befehl732 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann einen oder mehrere verfügbare logische Blöcke712 der Zone706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, mit Ausnahme des vierten logischen Blocks7123 , der bereits den Zustand speichert, der dem ersten Befehl730 zugeordnet ist. Die Auswahl eines logischen Blocks712 durch die Hostvorrichtung muss nicht sequenziell erfolgen. Zum Beispiel werden die Daten, die dem ersten Befehl730 zugeordnet sind, im vierten logischen Block7123 gespeichert, während die Daten, die dem zweiten Befehl732 zugeordnet sind, im siebten logischen Block7126 gespeichert werden. - Die Steuerung ruft dann den zweiten Befehl
732 ab, DMA-Iiest die Daten, die dem zweiten Befehl732 zugeordnet sind, und schreibt die Daten in den ausgewählten logischen Block712 (d. h. den siebten logischen Block7126 ), der durch die Hostvorrichtung identifiziert wird. Während die Daten, die dem zweiten Befehl732 zugeordnet sind, auf den siebten logischen Block7126 programmiert sind, kann die NAND-Adresse, die dem siebten logischen Block7126 zugeordnet ist, die nächste verfügbare NL im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des zweiten Befehls732 eine zweite NAND-Stelle NL1 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der siebte logische Block7126 einer siebten NL im NAND (z.B. einer siebten NL6). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone706 dies nicht sind. Die Tabelle 800 aus8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem zweiten Befehl732 zugeordnet sind, in dem ausgewählten logischen Block7126 gespeichert wurden, der durch die Hostvorrichtung identifiziert wird. -
7D veranschaulicht die Zone706 , nachdem ein dritter Befehl734 an die Zone706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem dritten Befehl734 zugeordnet sind, in den zweiten logischen Block7121 , den dritten logischen Block7122 und den achten logischen Block7127 der Zone706 geschrieben wurden. Der Host identifiziert wiederum, in welche logischen Blöcke712 der Zone706 die dem dritten Befehl734 zugeordneten Daten geschrieben werden sollen, was mehr als einen logischen Block712 erfordert. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke712 der Zone706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer dem vierten logischen Block7123 und dem siebten logischen Block7126 , die bereits den Zustand speichern, der dem ersten und zweiten Befehl730 ,732 zugeordnet ist. Die Auswahl logischer Blöcke712 durch die Hostvorrichtung muss nicht sequenziell erfolgen. Zum Beispiel werden die Daten, die dem dritten Befehl734 zugeordnet sind, im zweiten, dritten und achten logischen Block7121 ,7122 ,7127 gespeichert. - Die Steuerung ruft dann den dritten Befehl
734 ab, DMA-Iiest die Daten, die dem dritten Befehl734 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke712 (d. h. den zweiten, dritten und achten logischen Block7121 ,7122 ,7127 ), die von der Hostvorrichtung identifiziert werden. Während die dem dritten Befehl734 zugeordneten Daten auf den zweiten, dritten und achten logischen Block7121 ,7122 ,7127 programmiert sind, kann die dem zweiten, dritten und achten logischen Block7121 ,7122 ,7127 zugeordnete NAND-Adresse die nächsten verfügbaren NLs im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächsten verfügbaren NLs im NAND). Zum Beispiel kann die NAND-Adresse der Daten des dritten Befehls734 die dritte, vierte und fünfte NAND-Stelle NL2, NL3, NL4 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der zweite, dritte und achte logische Block7121 ,7122 ,7127 der zweiten, dritten bzw. achten NLs im NAND (z.B. der zweiten, dritten und achten NAND-Stelle NL1, NL2, NL7). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone706 dies nicht sind. Die Tabelle 800 aus8 wird dann aktualisiert und ein Abschlusseintrag in die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem dritten Befehl734 zugeordnet sind, in den ausgewählten logischen Blöcken7121 ,7122 ,7127 gespeichert wurden, die durch die Hostvorrichtung identifiziert werden. -
7E veranschaulicht die Zone706 , nachdem ein vierter Befehl736 an die Zone706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem vierten Befehl736 zugeordnet sind, in den fünften logischen Block7124 und den sechsten logischen Block 7125 der Zone706 geschrieben wurden. Der Host identifiziert wiederum, in welche logischen Blöcke712 der Zone706 die dem vierten Befehl736 zugeordneten Daten geschrieben werden sollen, was mehr als einen logischen Block712 erfordert. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke712 der Zone706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer dem zweiten bis vierten logischen Block7121 -7123 , dem siebten logischen Block7126 und dem achten logischen Block7127 , die bereits den Zustand speichern, der dem ersten, zweiten und dritten Befehl730 ,732 ,734 zugeordnet sind. Die Auswahl logischer Blöcke712 durch die Hostvorrichtung muss nicht sequenziell erfolgen; die Hostvorrichtung kann jedoch sequenzielle logische Blöcke auswählen, wenn sie dies entscheidet. Zum Beispiel werden die Daten, die dem vierten Befehl736 zugeordnet sind, im vierten und fünften logischen Block7123 ,7124 gespeichert. - Die Steuerung ruft dann den vierten Befehl
736 ab, DMA-Iiest die Daten, die dem vierten Befehl736 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke712 (d. h. den vierten und fünften logischen Block7123 ,7124 ), die von der Hostvorrichtung identifiziert werden. Während die Daten, die dem vierten Befehl736 zugeordnet sind, auf den vierten und fünften logischen Block7123 ,7124 programmiert sind, kann die NAND-Adresse, die dem vierten und fünften logischen Block7123 ,7124 zugeordnet ist, die nächsten verfügbaren NLs im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächsten verfügbaren NLs im NAND). Zum Beispiel kann die NAND-Adresse der Daten des vierten Befehls736 die sechste und siebte NAND-Stelle NL5, NL6 sein. Bei herkömmlichen Zonenanhangbefehlen entsprechen der vierte und fünfte logische Block7123 ,7124 den vierten und fünften NLs im NAND (z.B. der vierten und fünften NAND-Stelle NL3, NL4). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone706 dies nicht sind. Die Tabelle 800 aus8 wird dann aktualisiert und ein Abschlusseintrag in die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem vierten Befehl736 zugeordnet sind, in den ausgewählten logischen Blöcken7123 ,7124 gespeichert wurden, die von der Hostvorrichtung identifiziert werden. -
7F veranschaulicht die Zone706 , nachdem ein fünfter Befehl738 an die Zone706 von der Hostvorrichtung abgerufen wurde und die Daten, die dem fünften Befehl738 zugeordnet sind, in den ersten logischen Block712o der Zone706 geschrieben wurden. Der Host identifiziert wiederum, in welchen logischen Block712 der Zone706 die mit dem fünften Befehl738 verbundenen Daten geschrieben werden sollen. Die Hostvorrichtung kann beliebige verfügbare logische Blöcke712 der Zone706 zwischen der ZSLBA und der ZSLBA + ZCAP auswählen, außer den zweiten bis achten logischen Blöcken7121 -7127 , die bereits den Zustand speichern, der dem ersten bis vierten Befehl730-736 zugeordnet ist. - Die Steuerung ruft dann den fünften Befehl
738 ab, DMA-Iiest die Daten, die dem fünften Befehl738 zugeordnet sind, und schreibt die Daten in die ausgewählten logischen Blöcke712 (d. h. den ersten logischen Block7120 ), die von der Hostvorrichtung identifiziert werden. Während die Daten, die dem fünften Befehl738 zugeordnet sind, auf den ersten logischen Block7120 programmiert sind, kann die NAND-Adresse, die dem ersten logischen Block7120 zugeordnet ist, die nächste verfügbare NL im NAND oder NVM der Speichervorrichtung sein (d. h. der entsprechende LBA-Zeiger zeigt auf die nächste verfügbare NL im NAND). Zum Beispiel kann die NAND-Adresse der Daten des fünften Befehls738 eine achte NAND-Stelle NL7 sein. Bei herkömmlichen Zonenanhangbefehlen entspricht der erste logische Block7120 einer ersten NL im NAND (z.B. einer ersten NAND-Stelle NL0). Somit wird der NAND oder NVM sequenziell programmiert, selbst wenn die LBAs der Zone706 dies nicht sind. Die Tabelle 800 aus8 wird dann aktualisiert und ein Abschlusseintrag wird an die Abschlusswarteschlange der Hostvorrichtung zurückgegeben, um die Hostvorrichtung zu benachrichtigen, dass die Daten, die dem fünften Befehl738 zugeordnet sind, in den ausgewählten logischen Blöcken7120 gespeichert wurden, die von der Hostvorrichtung identifiziert werden. - Beim Schreiben der Daten, die dem fünften Befehl
738 zugeordnet sind, in den ersten logischen Block712o befindet sich die Zone706 im vollen Zustand, und die Kapazität der Zone706 wird vollständig genutzt. Eine volle Zone ist eine Zone, die vollständig mit Daten gefüllt ist und keine verfügbaren Blöcke mehr hat, in die Daten geschrieben werden können. Lesebefehle von Daten, die in vollen Zonen gespeichert sind, können weiterhin ausgeführt werden. Die ZM kann eine volle Zone zurücksetzen und eine Löschung der in der Zone gespeicherten Daten planen, so dass die Zone wieder auf eine leere Zone umschaltet. Sobald die Zone706 von Daten gelöscht, in den Löschzustand gewechselt und dann in den aktiven Zustand gewechselt ist, kann die Hostvorrichtung logische Blöcke712 der Zone706 auswählen, um Daten in beliebiger Reihenfolge gemäß dem oben beschriebenen Verfahren zu schreiben. Die Hostvorrichtung ist nicht auf das Schreiben von Daten in die Zone706 in der gleichen Reihenfolge wie oben beschrieben beschränkt, sondern kann jeden verfügbaren logischen Block712 in beliebiger Reihenfolge auswählen. - Beim Löschen der Zone
706 zeigen die LBA-Zeiger alle auf einen Standardwert, der keinen physischen Speicherort bedeutet, wie beispielsweise NULL, 0x0000, 0xFFFF oder dergleichen. Wenn jeder Schreibvorgang von der Steuerung empfangen wird, werden die Daten an die nächste NAND-Stelle geschrieben, während gleichzeitig der vorhandene LBA-Wert überprüft wird, um sicherzustellen, dass er auf NULL zeigt. Wenn der LBA-Wert in der Verfolgungstabelle 800 nicht auf NULL zeigt, dann bestimmt die Steuerung, dass dies nicht das erste Mal ist, dass die LBA während dieser Dauer durch den Zonenaktivzustand geschrieben wurde. Der Schreibvorgang kann optional zurückgewiesen werden, da der Host nicht in der Lage ist, jede LBA nur ein einziges Mal zu schreiben. Die Zurückweisung des Schreib- und Sicherheitsmerkmals ermöglicht es der Speichervorrichtung, sequenziellen Schreibverkehr aufrechtzuerhalten, und stellt sicher, dass das Background-Speicherbereinigungsmerkmal weiterhin ausgeschaltet werden kann. - Umgekehrt zeigen in herkömmlichen Verfahren, sobald eine Zone gelöscht ist, alle LBAs auf einen Markierungswert, wie NULL, 0x0000, 0xFFFF oder dergleichen. Wenn die Schreibvorgänge sequentiell eine Zone füllen, zeigt jede LBA, in die geschrieben wird, auf die nächste NAND-Stelle, an der die Daten platziert wurden. Gleichzeitig wird die LBA des aktuellen Schreibvorgangs überprüft, um nur zu bestimmen, ob sie der letzten Schreib-LBA folgt.
- Die Verwendung von nicht sequenziellem Schreiben in die Zone, wie in
7-8 beschrieben, anstelle der Verwendung von Zonenanhangbefehlen ermöglicht es der Speichervorrichtung, die Menge an durchgeführter Arbeit zu reduzieren, da die Speichervorrichtung den Schreibvorgang verfolgt, aber keinen Schreibzeiger verfolgen und aktualisieren muss. Darüber hinaus darf die Hostvorrichtung über die LBA zum Speichern von Daten entscheiden, im Gegensatz zu Zonenanhangbefehlen. Insofern werden sowohl die Speichervorrichtungsleistung als auch die Host-Leistung erhöht, und der Speichervorrichtungsaufwand wird verringert. - Eine Hostvorrichtung, welche über die LBA zum Speichern der Daten entscheidet, kann in der Lage sein, diesen Vorteil zu verwenden, um Wettlaufbedingungen zu vermeiden. Dies ermöglicht es einigen bestehenden Strukturen in hostseitigen Anwendungen, ohne Änderung fortzufahren. Zum Beispiel haben einige hostseitige Anwendungen eine Entität, die Kenntnis über alle verfügbaren Speicher-LBAs aufweist, und diese Entität verwaltet Schreiborte an andere Hostanwendungen. Bei Verwendung von nicht sequentiellem Schreiben in die Zone, wie in den
7-8 beschrieben, dürfen die anderen Anwendungen im Host ihre zugewiesenen LBAs halten und ihre zugewiesenen LBAs zu einem späteren Zeitpunkt verbrauchen. Insofern besteht keine Gefahr von nicht sequentiellen Schreibvorgängen in Zonen. Da die Speichervorrichtung eine sequenzielle Schreibprüfung ausschalten kann, wird die Lebensdauer der Speichervorrichtung verbessert. Die Lebensdauer der Speichervorrichtung wird aufrechterhalten, da die eingehenden Daten noch an der nächsten verfügbaren NAND-Stelle platziert werden können. - In einer Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in eine erste Zone und dem ersten Befehl zugeordnete DMA-Lesedaten abruft, einen oder mehrere erste logische Blöcke der ersten Zone identifiziert, in welche die dem ersten Befehl zugeordneten Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, einen zweiten Befehl abruft, um Daten in die erste Zone zu schreiben, und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, und eines oder mehrerer zweiter logischer Blöcke der ersten Zone identifiziert, um die Daten, die dem zweiten Befehl zugeordnet sind, in diese zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
- Die Steuerung ist ferner konfiguriert, die Daten, die dem ersten Befehl zugeordnet sind, zu schreiben, vor dem Abrufen des zweiten Befehls diese Daten zu schreiben, und die Daten, die dem zweiten Befehl zugeordnet sind, nach dem Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone zu schreiben. Die Steuerung ist ferner konfiguriert, um einen ersten Abschlusseintrag an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zurückzugeben und einen zweiten Abschlusseintrag an die Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, zurückzugeben. Die Steuerung ist ferner konfiguriert, um eine oder mehrere Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugeordnet sind, nach dem Zurückgeben des ersten Abschlusseintrag zu schreiben, und die eine oder mehreren Verfolgungstabellen nach dem Schreiben der Daten zu aktualisieren, die dem zweiten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des zweiten Abschlusseintrags zu schreiben.
- Die eine oder die mehreren Verfolgungstabellen umfassen eine erste Verfolgungstabelle, die in der Speichervorrichtung gespeichert ist, und eine zweite Verfolgungstabelle, die in der Hostvorrichtung gespeichert ist. Die Hostvorrichtung wählt den einen oder die mehreren zweiten Blöcke zum Speichern der Daten aus, die dem zweiten Befehl zugeordnet sind, unter Verwendung der zweiten Verfolgungstabelle. Eine Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der Daten aus, die dem ersten Befehl zugeordnet sind.
- In einer anderen Ausführungsform umfasst eine Speichervorrichtung eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und eine Steuerung, die mit der Medieneinheit gekoppelt ist. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl abruft, um Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone zu schreiben, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an eine erste Stelle in der Medieneinheit schreibt, einen zweiten Befehl abruft, um Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken sind, und dem zweiten Befehl zugeordnete Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und an einen zweiten Ort in der Medieneinheit zu schreiben, wobei der zweite Ort sequentiell zu dem ersten Ort angeordnet ist.
- Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone zu schreiben, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren zweiten logischen Blöcken sind, und die Daten, die dem dritten Befehl zugeordnet sind, in den einen oder die mehreren dritten logischen Blöcke der ersten Zone und an einen dritten Ort in der Medieneinheit schreibt, wobei der dritte Ort sequentiell zu dem zweiten Ort angeordnet ist. Die dem zweiten Befehl zugehörigen Daten werden in zwei oder mehr zweite logische Blöcke geschrieben und die zwei oder mehr zweiten logischen Blöcke sind nicht sequentiell zueinander. Eine Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der dem ersten Befehl zugeordneten Daten und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der dem zweiten Befehl zugeordneten Daten aus.
- Die Steuerung ist ferner konfiguriert, um einen ersten Abschlusseintrag an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zurückzugeben und eine oder mehrere Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind, zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugeordnet sind, zu schreiben. Mindestens eine der einen oder mehreren Verfolgungstabellen ist in der Medieneinheit der Speichervorrichtung gespeichert.
- In noch einer anderen Ausführungsform umfasst ein Speichersystem eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle und ein Speichersystem umfasst. Das Speichersystem umfasst eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle und eine mit der Medieneinheit gekoppelte Steuerung speichert. Die Steuerung ist so konfiguriert, dass sie einen ersten Befehl zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, abruft, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen, die dem ersten Befehl zugeordnete Daten in den einen oder die mehreren ersten logischen Blöcke der ersten Zone schreibt, die erste und die zweite Verfolgungstabelle aktualisiert, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind, einen zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und DMA-Lesen von Daten abruft, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen und wobei mindestens einer des einen oder mehreren zweiten logischen Blöcke nicht sequentiell zu dem einen oder den mehreren ersten logischen Blöcken ist, Daten schreiben, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und die erste und die zweite Verfolgungstabelle zu aktualisieren, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
- Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone zu schreiben und DMA-zu lesen, die dem dritten Befehl zugeordnet sind, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequentiell zu mindestens dem einen oder den mehreren zweiten logischen Blöcken sind, die dem dritten Befehl zugeordneten Daten in den einen oder die mehreren dritten logischen Blöcke der ersten Zone schreiben und die ersten und zweiten Verfolgungstabellen aktualisieren, um anzuzeigen, dass der eine oder die mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind. Die Steuerung ist ferner so konfiguriert, dass sie einen dritten Befehl abruft, um Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone zu schreiben, und von DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke zwischen dem ersten einen oder den mehreren logischen Blöcken und dem einen oder mehreren zweiten logischen Blöcken liegt, die dem dritten Befehl zugeordneten Daten in die zwei oder mehreren dritten logischen Blöcke der ersten Zone schreibt und die ersten und zweiten Verfolgungstabellen aktualisiert, um anzuzeigen, dass die zwei oder mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
- Die Steuerung ist ferner konfiguriert, einen dritten Befehl zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, abzurufen, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke sequentiell vor dem einen oder den mehreren ersten logischen Blöcken oder dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist, die dem dritten Befehl zugehörigen Daten in die zwei oder mehr dritten logischen Blöcke der ersten Zone zu schreiben und die ersten und zweiten Verfolgungstabellen zu aktualisieren, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht zum Schreiben von Befehlen zugehörigen Daten verfügbar sind. Die Hostvorrichtung wählt den einen oder die mehreren ersten Blöcke zum Speichern der Daten, die dem ersten Befehl zugeordnet sind, und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, basierend auf der ersten Verfolgungstabelle aus.
- Die Steuerung ist ferner so konfiguriert, dass sie nach dem Schreiben der dem ersten Befehl zugeordneten Daten einen ersten Abschlusseintrag an eine Abschlusswarteschlange der Hostvorrichtung zurückgibt, und wobei die Hostvorrichtung die erste Verfolgungstabelle nach dem Empfang des ersten Abschlusseintrags aktualisiert. Die dem zweiten Befehl zugeordneten Daten werden in zwei oder mehr zweite logische Blöcke geschrieben, und wobei die zwei oder mehr zweiten logischen Blöcke durch einen oder mehr leere logische Blöcke oder mehr erste logische Blöcke voneinander beabstandet sind.
- Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.
- ZITATE ENTHALTEN IN DER BESCHREIBUNG
- Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
- Zitierte Patentliteratur
-
- US 16/703643 [0001]
- US 62/899717 [0001]
Claims (20)
- Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in eine erste Zone und von Direct Memory Access (DMA)-Lesedaten, die dem ersten Befehl zugeordnet sind; Identifizieren eines oder mehrerer erster logischer Blöcke der ersten Zone, in die mit dem ersten Befehl zugehörigen Daten geschrieben werden sollen, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Abrufen eines zweiten Befehls zum Schreiben von Daten in die erste Zone und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind; und Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone zum Schreiben der mit dem zweiten Befehl zugehörigen Daten, wobei sich der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone befinden, und wobei der eine oder die mehreren zweiten logischen Blöcke von dem einen oder den mehreren ersten logischen Blöcken durch einen oder mehrere leere logische Blöcke beabstandet sind.
- Speichervorrichtung gemäß
Anspruch 1 , wobei die Steuerung ferner eingerichtet ist zum: Schreiben der Daten, die dem ersten Befehl zugeordnet sind, vor dem Abrufen des zweiten Befehls zum Schreiben von Daten; und Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, nach dem Identifizieren eines oder mehrerer zweiter logischer Blöcke der ersten Zone. - Speichervorrichtung gemäß
Anspruch 2 , wobei die Steuerung weiterhin eingerichtet ist zum: Zurückgeben eines ersten Abschlusseintrags an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind; und Zurückgeben eines zweiten Abschlusseintrags an die Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der Daten, die dem zweiten Befehl zugeordnet sind. - Speichervorrichtung gemäß
Anspruch 3 , wobei die Steuerung weiterhin eingerichtet ist zum: Aktualisieren einer oder mehrerer Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des ersten Abschlusseintrags zu schreiben; und Aktualisieren der einen oder mehreren Verfolgungstabellen nach dem Schreiben der Daten, die dem zweiten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten, die nachfolgenden Befehlen zugehörig sind, nach dem Zurückgeben des zweiten Abschlusseintrags zu schreiben. - Speichervorrichtung gemäß
Anspruch 4 , wobei die eine oder die mehreren Verfolgungstabellen eine erste Verfolgungstabelle, die in der Speichervorrichtung gespeichert ist, und eine zweite Verfolgungstabelle, die in der Hostvorrichtung gespeichert ist, umfassen. - Speichervorrichtung gemäß
Anspruch 5 , wobei die Hostvorrichtung den einen oder die mehreren zweiten Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, unter Verwendung der zweiten Verfolgungstabelle auswählt. - Speichervorrichtung gemäß
Anspruch 1 , wobei eine Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der mit dem ersten Befehl zugehörigen Daten auswählt. - Speichervorrichtung, aufweisend: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in den einen oder die mehreren ersten logischen Blöcke der ersten Zone und an einen ersten Ort in der Medieneinheit; Abrufen eines zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren zweiten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren ersten logischen Blöcken sind; und Schreiben der dem zweiten Befehl zugehörigen Daten in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone und in einen zweiten Ort in der Medieneinheit, wobei sich der zweite Ort sequenziell zu dem ersten Ort befindet.
- Speichervorrichtung gemäß
Anspruch 8 , wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone, wobei sich der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone befinden und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren zweiten logischen Blöcken sind; und Schreiben der mit dem dritten Befehl zugehörigen Daten in den einen oder die mehreren dritten logischen Blöcke der ersten Zone und in einen dritten Ort in der Medieneinheit, wobei sich der dritte Ort sequenziell zu dem zweiten Ort befindet. - Speichervorrichtung gemäß
Anspruch 8 , wobei die dem zweiten Befehl zugehörigen Daten in zwei oder mehr zweite logische Blöcke geschrieben werden und wobei die zwei oder mehr zweiten logischen Blöcke nicht sequentiell zueinander sind. - Speichervorrichtung gemäß
Anspruch 8 , wobei eine Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der mit dem ersten Befehl zugehörigen Daten und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der mit dem zweiten Befehl zugehörigen Daten auswählt. - Speichervorrichtung gemäß
Anspruch 8 , wobei die Steuerung ferner eingerichtet ist zum: Zurückgeben eines ersten Abschlusseintrags an eine Abschlusswarteschlange einer Hostvorrichtung nach dem Schreiben der Daten, die dem ersten Befehl zugeordnet sind; und Aktualisieren einer oder mehrerer Verfolgungstabellen nach dem Schreiben der Daten, die dem ersten Befehl zugehörig sind, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugehörig sind. - Speichervorrichtung gemäß
Anspruch 12 , wobei mindestens eine der einen oder mehreren Verfolgungstabellen in der Medieneinheit der Speichervorrichtung gespeichert ist. - Speichersystem, aufweisend: eine Hostvorrichtung, wobei die Hostvorrichtung eine erste Verfolgungstabelle umfasst; und ein Speichersystem, wobei das Speichersystem Folgendes umfasst: eine Medieneinheit, wobei eine Kapazität der Medieneinheit in eine Vielzahl von Zonen unterteilt ist, wobei jede Zone eine Vielzahl von logischen Blöcken umfasst, und wobei die Medieneinheit eine zweite Verfolgungstabelle speichert; und eine mit der Medieneinheit gekoppelte Steuerung, die eingerichtet ist zum: Abrufen eines ersten Befehls zum Schreiben von Daten in einen oder mehrere erste logische Blöcke in einer ersten Zone und von DMA-Lesedaten, die dem ersten Befehl zugeordnet sind, wobei der eine oder die mehreren ersten logischen Blöcke zwischen einer logischen Zonenstartblockadresse der ersten Zone und einer Zonenkapazität der ersten Zone liegen; Schreiben der Daten, die dem ersten Befehl zugeordnet sind, in den einen oder die mehreren ersten logischen Blöcke der ersten Zone; Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren ersten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind; Abrufen eines zweiten Befehls zum Schreiben von Daten in einen oder mehrere zweite logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem zweiten Befehl zugeordnet sind, wobei der eine oder die mehreren zweiten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer des einen oder der mehreren zweiten logischen Blöcke nicht sequenziell zu dem einen oder den mehreren ersten logischen Blöcken ist; Schreiben der Daten, die dem zweiten Befehl zugeordnet sind, in den einen oder die mehreren zweiten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren zweiten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind.
- Speichersystem gemäß
Anspruch 14 , wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in einen oder mehrere dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugeordnet sind, wobei der eine oder die mehreren dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei der eine oder die mehreren dritten logischen Blöcke nicht sequenziell zu mindestens dem einen oder den mehreren zweiten logischen Blöcken sind; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in den einen oder die mehreren dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass der eine oder die mehreren dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind. - Speichersystem gemäß
Anspruch 14 , wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugehörig sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke zwischen dem einen oder den mehreren ersten logischen Blöcken und dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in die zwei oder mehr dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind. - Speichersystem gemäß
Anspruch 14 , wobei die Steuerung ferner eingerichtet ist zum: Abrufen eines dritten Befehls zum Schreiben von Daten in zwei oder mehr dritte logische Blöcke in der ersten Zone und von DMA-Lesedaten, die dem dritten Befehl zugehörig sind, wobei die zwei oder mehr dritten logischen Blöcke zwischen der logischen Zonenstartblockadresse der ersten Zone und der Zonenkapazität der ersten Zone liegen, und wobei mindestens einer der zwei oder mehr dritten logischen Blöcke sequentiell vor dem einen oder den mehreren ersten logischen Blöcken oder dem einen oder den mehreren zweiten logischen Blöcken angeordnet ist; Schreiben der Daten, die dem dritten Befehl zugeordnet sind, in die zwei oder mehr dritten logischen Blöcke der ersten Zone; und Aktualisieren der ersten und der zweiten Verfolgungstabelle, um anzuzeigen, dass die zwei oder mehr dritten logischen Blöcke nicht verfügbar sind, um Daten zu schreiben, die nachfolgenden Befehlen zugeordnet sind. - Speichersystem gemäß
Anspruch 14 , wobei die Hostvorrichtung den einen oder die mehreren ersten Blöcke zum Speichern der Daten, die dem ersten Befehl zugeordnet sind, und den einen oder die mehreren zweiten logischen Blöcke zum Speichern der Daten, die dem zweiten Befehl zugeordnet sind, basierend auf der ersten Verfolgungstabelle auswählt. - Speichersystem gemäß
Anspruch 18 , wobei die Steuerung ferner konfiguriert ist, einen ersten Abschlusseintrag an eine Abschlusswarteschlange der Hostvorrichtung nach dem Schreiben der dem ersten Befehl zugehörigen Daten zurückzugeben, und wobei die Hostvorrichtung die erste Verfolgungstabelle nach dem Empfangen des ersten Abschlusseintrags aktualisiert. - Speichersystem gemäß
Anspruch 14 , wobei die dem zweiten Befehl zugehörigen Daten in zwei oder mehr zweite logische Blöcke geschrieben werden und wobei die zwei oder mehr zweiten logischen Blöcke durch einen oder mehrere leere logische Blöcke oder mehrere erste logische Blöcke voneinander beabstandet sind.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962899717P | 2019-09-12 | 2019-09-12 | |
US62/899,717 | 2019-09-12 | ||
US16/703,643 US11294827B2 (en) | 2019-09-12 | 2019-12-04 | Non-sequential zoned namespaces |
US16/703,643 | 2019-12-04 | ||
PCT/US2020/023171 WO2021050107A1 (en) | 2019-09-12 | 2020-03-17 | Non-sequential zoned namespaces |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112020000139T5 true DE112020000139T5 (de) | 2021-07-29 |
Family
ID=74865996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112020000139.3T Pending DE112020000139T5 (de) | 2019-09-12 | 2020-03-17 | Nicht sequentiell in zonen aufgeteilte namensräume |
Country Status (5)
Country | Link |
---|---|
US (1) | US11294827B2 (de) |
KR (1) | KR102569783B1 (de) |
CN (1) | CN113179658B (de) |
DE (1) | DE112020000139T5 (de) |
WO (1) | WO2021050107A1 (de) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593258B2 (en) * | 2019-11-26 | 2023-02-28 | Micron Technology, Inc. | Enhanced filesystem support for zone namespace memory |
KR20210108107A (ko) * | 2020-02-25 | 2021-09-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11789611B2 (en) * | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11860791B2 (en) * | 2020-04-24 | 2024-01-02 | Netapp, Inc. | Methods for managing input-output operations in zone translation layer architecture and devices thereof |
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
KR20220104511A (ko) * | 2021-01-18 | 2022-07-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) * | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
CN114138193B (zh) * | 2021-11-25 | 2024-03-26 | 郑州云海信息技术有限公司 | 一种分区命名空间固态硬盘的数据写入方法、装置及设备 |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US11995316B2 (en) | 2022-06-15 | 2024-05-28 | Samsung Electronics Co., Ltd. | Systems and methods for a redundant array of independent disks (RAID) using a decoder in cache coherent interconnect storage devices |
US20240111456A1 (en) * | 2022-10-02 | 2024-04-04 | Silicon Motion, Inc. | Storage device controller and method capable of allowing incoming out-of-sequence write command signals |
US20230229358A1 (en) * | 2023-03-23 | 2023-07-20 | Lemon Inc. | Zoned namespaces storage device and system |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526599B2 (en) | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
US8112574B2 (en) | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US8607016B2 (en) * | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US7779056B2 (en) | 2006-09-15 | 2010-08-17 | Sandisk Corporation | Managing a pool of update memory blocks based on each block's activity and data order |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
US20080235489A1 (en) | 2007-03-19 | 2008-09-25 | Sergey Anatolievich Gorobets | Systems for forcing an update block to remain sequential |
US20080235464A1 (en) * | 2007-03-19 | 2008-09-25 | Shai Traister | System for conversion of update blocks based on comparison with a threshold size |
US9612948B2 (en) * | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US20150212752A1 (en) * | 2013-04-08 | 2015-07-30 | Avalanche Technology, Inc. | Storage system redundant array of solid state disk array |
KR102148889B1 (ko) * | 2014-08-18 | 2020-08-31 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
KR20160027805A (ko) * | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US20170337212A1 (en) * | 2015-01-13 | 2017-11-23 | Hitachi Data Systems Engineering UK Limited | Computer program product, method, apparatus and data storage system for managing defragmentation in file systems |
US9696934B2 (en) * | 2015-02-12 | 2017-07-04 | Western Digital Technologies, Inc. | Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory |
US9940261B2 (en) * | 2016-05-05 | 2018-04-10 | Western Digital Technology, Inc. | Zoning of logical to physical data address translation tables with parallelized log list replay |
KR20170128012A (ko) | 2016-05-13 | 2017-11-22 | 주식회사 맴레이 | 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 |
JP6855704B2 (ja) * | 2016-08-22 | 2021-04-07 | 富士通株式会社 | ストレージシステム、ストレージ制御装置及びデータ格納方法 |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN109582599B (zh) * | 2017-09-29 | 2023-12-22 | 上海宝存信息科技有限公司 | 数据储存装置以及非挥发式存储器操作方法 |
US10621084B2 (en) * | 2018-03-05 | 2020-04-14 | International Business Machines Corporation | Efficient garbage collection in the presence of block dependencies |
-
2019
- 2019-12-04 US US16/703,643 patent/US11294827B2/en active Active
-
2020
- 2020-03-17 CN CN202080006553.1A patent/CN113179658B/zh active Active
- 2020-03-17 KR KR1020217016550A patent/KR102569783B1/ko active IP Right Grant
- 2020-03-17 DE DE112020000139.3T patent/DE112020000139T5/de active Pending
- 2020-03-17 WO PCT/US2020/023171 patent/WO2021050107A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021050107A1 (en) | 2021-03-18 |
US11294827B2 (en) | 2022-04-05 |
US20210081330A1 (en) | 2021-03-18 |
KR102569783B1 (ko) | 2023-08-22 |
CN113179658A (zh) | 2021-07-27 |
KR20210076143A (ko) | 2021-06-23 |
CN113179658B (zh) | 2024-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112020000139T5 (de) | Nicht sequentiell in zonen aufgeteilte namensräume | |
DE102020107659A1 (de) | Zonenbildung für gezonte namensräume | |
DE112020000184T5 (de) | In zonen unterteilte namensräume in festkörperlaufwerken | |
DE102017104125B4 (de) | Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay | |
DE112020005060T5 (de) | Ratengrenze für den übergang von zonen zum öffnen | |
DE112019005511T5 (de) | Halten von schreibbefehlen in gezonten namensräumen | |
DE102017104150B4 (de) | Abnutzungsausgleich in Speichervorrichtungen | |
DE102017113439B4 (de) | Abbildungstabellen für Speichervorrichtungen | |
DE112018000834T5 (de) | System und verfahren zur adaptiven befehlsabruf-aggregation | |
DE112018000181T5 (de) | System und verfahren für die schnelle ausführung von kapselinternen befehlen | |
DE102016009806A1 (de) | Speichern von paritätsdaten getrennt von geschützten daten | |
DE102010018765A1 (de) | Speichervorrichtung und Speicherverfahren | |
DE112020005180T5 (de) | Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen | |
DE112017005955T5 (de) | Speichersystem und verfahren zur schlanken speicherzuweisung | |
DE102021115626A1 (de) | Datenaggregation in zns-laufwerk | |
DE102008036822A1 (de) | Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem | |
DE112018000230T5 (de) | System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers | |
DE112020005787T5 (de) | Verbesserte dateisystem-unterstützung für zonen-namespace-speicher | |
DE112020005078T5 (de) | Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen | |
DE112019000161T5 (de) | Speicher-cache-verwaltung | |
DE102021115500A1 (de) | Hostverwaltete hardwarekomprimierung mit gezonten namensräumen | |
DE112020005096T5 (de) | Gewichtung von lesebefehlen an zonen in speicherungsvorrichtungen | |
DE112020005044T5 (de) | Zonenanhang-befehlsplanung basierend auf zonenzustand | |
DE112022000468T5 (de) | Unterschiedliche schreibpriorisierung in zns-vorrichtungen | |
DE112017005782T5 (de) | Warteschlange für Speichervorgänge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE Representative=s name: DEHNS GERMANY, DE |
|
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE |
|
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US |
|
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US |