DE102021115626A1 - Datenaggregation in zns-laufwerk - Google Patents

Datenaggregation in zns-laufwerk Download PDF

Info

Publication number
DE102021115626A1
DE102021115626A1 DE102021115626.2A DE102021115626A DE102021115626A1 DE 102021115626 A1 DE102021115626 A1 DE 102021115626A1 DE 102021115626 A DE102021115626 A DE 102021115626A DE 102021115626 A1 DE102021115626 A1 DE 102021115626A1
Authority
DE
Germany
Prior art keywords
zone
data
storage device
append
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021115626.2A
Other languages
English (en)
Inventor
Karin Inbar
Shay Benisty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102021115626A1 publication Critical patent/DE102021115626A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Surgical Instruments (AREA)
  • Electrochromic Elements, Electrophoresis, Or Variable Reflection Or Absorption Elements (AREA)
  • Optical Communication System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine effiziente Datenübertragungsverwaltung von Zonenanhangbefehlen für einen in Zonen unterteilten Namensraum (ZNS). Die ZNS-Speichervorrichtung weist eine Speichervorrichtung mit einer Vielzahl von Speicherchips und eine Steuerung auf, die mit der Speichervorrichtung gekoppelt ist. Die Steuerung empfängt eine Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, und Daten, die jedem Zonenanhangbefehl zugeordnet sind, durch die Zonenidentifikation in einem Anhangschreibpuffer abruft und aggregiert. Die aggregierten Daten werden in die Speichervorrichtung geschrieben, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, oder in einen temporären Puffer, wenn die vorbestimmte Schreibgröße nicht erfüllt ist. Jede Zone verwendet einen separaten Kanal, wenn die aggregierten Daten zum Programmieren an die Speichervorrichtung gesendet werden, wodurch mehrere Kanäle parallel verwendet werden können.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht den Vorteil der vorläufigen US-Patentanmeldung mit der Seriennummer 63/114.397 , eingereicht am Montag, 16. November 2020, welche hierin durch Bezugnahme aufgenommen ist.
  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf eine effiziente Datenübertragungsverwaltung von Zonenanhangbefehlen für einen in Zonen unterteilten Namensraum (ZNS).
  • Beschreibung des Stands der Technik
  • In Zonen unterteilte Namensräume (ZNS) sind eine neue Speicherrichtung, in der die Datenspeichervorrichtung Schreibvorgänge auf aufeinanderfolgende Zonen beschränkt. ZNS soll die vorrichtungsseitige Schreibverstärkung und Überversorgung reduzieren, indem Host-Schreibmuster mit interner Vorrichtungsgeometrie ausgerichtet werden und der Bedarf an vorrichtungsseitigen Schreibvorgängen, die nicht direkt mit einem Host-Schreibvorgang verknüpft sind, reduziert wird.
  • ZNS bietet viele Vorteile, einschließlich: verringerte Kosten aufgrund minimaler DRAM-Anforderungen pro SSD (Festplatte); potenzielle Einsparungen aufgrund eines verringerten Bedarfs an Überversorgung von NAND-Medien; bessere SSD-Lebensdauer durch Reduzieren der Schreibverstärkung; dramatisch reduzierte Latenz; signifikant verbesserter Durchsatz; und eine standardisierte Schnittstelle, die ein starkes Software- und Hardware-Ökosystem ermöglicht.
  • In der Regel ist in einer ZNS-Umgebung die Datenübertragungsgröße, die jedem Zonenanhangbefehl zugeordnet ist, eine Blockgröße (z. B. eine NAND-Blockgröße) oder mehrere ganze Blockgrößen (d. h. keine Größen von weniger als einem ganzen Block). Ein Block, wie beispielsweise ein NAND-Block, befindet sich in einem einzelnen NAND-Chip. Die Parallelität der Speichervorrichtung beinhaltet das parallele Zugreifen auf mehrere NAND-Chips. Um die Parallelität zu erhöhen, muss parallel auf mehr NAND-Chips zugegriffen werden. Um die Parallelität der Speichervorrichtung effizient zu nutzen, sollten viele Zonenanhangbefehle parallel ausgeführt werden, während sie verschachtelte Datenübertragung aufweisen. Andernfalls wird der Schreib-Cache-Puffer erheblich erhöht, um die Speichervorrichtung zu nutzen.
  • Daher besteht im Stand der Technik ein Bedarf an einer ZNS-Vorrichtung mit effizienterer Verwaltung von Zonenanhangbefehlen.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf eine effiziente Datenübertragungsverwaltung von Zonenanhangbefehlen für einen in Zonen unterteilten Namensraum (ZNS). Die ZNS-Speichervorrichtung weist eine Speichervorrichtung mit einer Vielzahl von Speicherchips und eine Steuerung, die mit der Speichervorrichtung gekoppelt ist, auf. Die Steuerung empfängt eine Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, und Daten, die jedem Zonenanhangbefehl zugeordnet sind, durch die Zonenidentifikation in einem Anhangschreibpuffer abruft und aggregiert. Die aggregierten Daten werden in die Speichervorrichtung geschrieben, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, oder in einen temporären Puffer, wenn die vorbestimmte Schreibgröße nicht erfüllt ist. Jede Zone verwendet einen separaten Kanal, wenn die aggregierten Daten zum Programmieren an die Speichervorrichtung gesendet werden, wodurch mehrere Kanäle parallel verwendet werden können.
  • In einer Ausführungsform weist eine Datenspeichervorrichtung eine Speichervorrichtung mit einer Vielzahl von Speicherchips, einer Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, und eine Steuerung, die mit der Speichervorrichtung gekoppelt ist, auf. Die Steuerung ist eingerichtet, um eine Vielzahl von Zonenanhangbefehlen zu empfangen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, Daten von einer Hostvorrichtung für jeden Zonenanhangbefehl abzurufen, die abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, zu aggregieren, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden, und wenn die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreichen, Schreiben der aggregierten Daten in die Speichervorrichtung unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung eine Schnittstelle auf, die mit einer Hostvorrichtung gekoppelt ist, eine Speichervorrichtung mit einer Vielzahl von Speicherchips, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet sind, eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, und eine Steuerung, die mit der Speichervorrichtung und der Schnittstelle gekoppelt ist, wobei die Steuerung einen Anhangschreibpuffer aufweist. Die Steuerung ist eingerichtet, um erste Zonenanhangbefehle zu empfangen, die einer ersten Zone der Vielzahl von Zonen zugeordnet sind, zweite Zonenanhangbefehle zu empfangen, die einer zweiten Zone der Vielzahl von Zonen zugeordnet sind, einen oder mehrere erster Blöcke von ersten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein erster Programmierblock auf eine vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist, gleichzeitig einen oder mehrere zweiter Blöcke von zweiten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein zweiter Programmierblock auf die vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist, den ersten Programmierblock in einen ersten Block der Vielzahl von Blöcken zu schreiben, die der ersten Zone zugeordnet sind, unter Verwendung eines ersten Kanals der Vielzahl von Kanälen, und den zweiten Programmierblock in einen zweiten Block der Vielzahl von Blöcken zu schreiben, die der zweiten Zone zugeordnet sind, unter Verwendung eines zweiten Kanals der Vielzahl von Kanälen.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung eine Speichervorrichtung mit einer Vielzahl von Speicherchips auf, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet sind, eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, Mittel zum Empfangen einer Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, Mittel zum Abrufen von Daten aus einer Hostvorrichtung für jeden Zonenanhangbefehl, Mittel zum Aggregieren der abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden, Mittel zum Schreiben der aggregierten Daten in die Speichervorrichtung, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen, und Mittel zum Schreiben der aggregierten Daten in einen temporären Block eines Speicherchips der Vielzahl von Speicherchips, wenn die aggregierten Daten für jede Zone die vorbestimmte Programmierblockgröße nicht erreichen.
  • 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 Umfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem veranschaulicht, das eine Speichervorrichtung aufweist, die als Speichervorrichtung für eine Hostvorrichtung gemäß einer oder mehreren Techniken dieser Offenbarung fungieren kann.
    • 2A ist eine schematische Veranschaulichung der Vorrichtungssteuerung einer herkömmlichen SSD.
    • 2B ist eine schematische Veranschaulichung einer Vorrichtungssteuerung einer ZNS-SSD gemäß einer Ausführungsform.
    • 3 ist eine schematische Veranschaulichung eines Zonenanhangbefehls.
    • 4 ist eine schematische Veranschaulichung eines Zustandsdiagramms einer ZNS-SSD gemäß einer Ausführungsform.
    • 5 ist eine schematische Veranschaulichung einer Zonen-Namensraumstruktur einer Ausführungsform.
    • 6 ist eine schematische Veranschaulichung einer ZNS nicht verschachtelten Datenübertragung.
    • 7A-7B sind schematische Veranschaulichungen eines Speichersystems, das eine ZNS verschachtelte und optimierte Datenübertragung gemäß verschiedenen Ausführungsformen implementiert.
    • 8 ist eine schematische Veranschaulichung verschiedener Tabellen, die bei einer ZNS verschachtelten und optimierten Datenübertragung gemäß verschiedenen Ausführungsformen verwendet 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 beigefügten Ansprüche, es sei denn, dies ist 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 eine effiziente Datenübertragungsverwaltung von Zonenanhangbefehlen für einen in Zonen unterteilten Namensraum (ZNS). Die ZNS-Speichervorrichtung weist eine Speichervorrichtung mit einer Vielzahl von Speicherchips und eine Steuerung, die mit der Speichervorrichtung gekoppelt ist, auf. Die Steuerung empfängt eine Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, und Daten, die jedem Zonenanhangbefehl zugeordnet sind, durch die Zonenidentifikation in einem Anhangschreibpuffer abruft und aggregiert. Die aggregierten Daten werden in die Speichervorrichtung geschrieben, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, oder in einen temporären Puffer, wenn die vorbestimmte Schreibgröße nicht erfüllt ist. Jede Zone verwendet einen separaten Kanal, wenn die aggregierten Daten zum Programmieren an die Speichervorrichtung gesendet werden, wodurch mehrere Kanäle parallel verwendet werden können.
  • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem 100, in dem die Datenspeichervorrichtung 106 als Speichervorrichtung für eine Hostvorrichtung 104 fungieren kann, gemäß einer oder mehreren Techniken dieser Offenbarung veranschaulicht. Zum Beispiel kann die Hostvorrichtung 104 zum Speichern und Abrufen von Daten NVM 110 verwenden, der in der Datenspeichervorrichtung 106 eingeschlossen ist. Die Hostvorrichtung 104 weist einen Host DRAM 138 auf. In einigen Beispielen kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen einschließen, wie die Datenspeichervorrichtung 106, die als Speicheranordnung arbeiten kann. Zum Beispiel kann das Speichersystem 100 eine Vielzahl von Datenspeichervorrichtungen 106 einschließen, die als ein redundantes Array von preiswerten/unabhängigen Festplatten (RAID) eingerichtet sind, die zusammen als Massenspeichervorrichtung für die Hostvorrichtung 104 fungieren.
  • Das Speichersystem 100 schließt eine Hostvorrichtung 104 ein, die Daten auf und/oder von einer oder mehreren Speichervorrichtungen, wie der Datenspeichervorrichtung 106, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 104 über eine Schnittstelle 114 mit der Datenspeichervorrichtung 106 kommunizieren. Die Hostvorrichtung 104 kann eine beliebige aus einer Vielzahl 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 Datenspeichervorrichtung 106 schließt eine Steuerung 108, einen nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, einen flüchtigen Speicher 112, eine Schnittstelle 114 und einen Schreibpuffer 116 ein. In einigen Beispielen kann die Datenspeichervorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 dargestellt sind. Zum Beispiel kann die Datenspeichervorrichtung 106 eine Leiterplatte (PCB) einschließen, an der Komponenten der Datenspeichervorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen enthält, die Komponenten der Datenspeichervorrichtung 106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Datenspeichervorrichtung 106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren schließen unter anderem eine 3,5-Zoll-Datenspeichervorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeichervorrichtung, eine 1,8-Zoll-Datenspeichervorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCle) (z. B. PCIe x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Datenspeichervorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) sein.
  • Die Schnittstelle 114 der Datenspeichervorrichtung 106 kann einen Datenbus zum Datenaustausch mit der Hostvorrichtung 104 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 104 einschließen. Die Schnittstelle 114 kann gemäß einem geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle 114 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), PCI und PCle, Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD) oder dergleichen. Die elektrische Verbindung der Schnittstelle 114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit der Steuerung 108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 104 und der Steuerung 108 her, sodass Daten zwischen der Hostvorrichtung 104 und der Steuerung 108 ausgetauscht werden können. In einigen Beispielen kann die elektrische Verbindung der Schnittstelle 114 der Datenspeichervorrichtung 106 auch ermöglichen, Strom von der Hostvorrichtung 104 zu beziehen. Wie beispielsweise in 1 veranschaulicht, kann die Stromversorgung 111 über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
  • Die Datenspeichervorrichtung 106 schließt NVM 110 ein, der eine Vielzahl von Speichervorrichtungen oder Speichereinheiten einschließen kann. NVM 110 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichereinheit des NVM 110 Daten und eine Nachricht von der Steuerung 108 empfangen, mit der die Speichereinheit zum Speichern der Daten angewiesen wird. In ähnlicher Art und Weise kann die Speichereinheit des NVM 110 eine Nachricht von der Steuerung 108 empfangen, mit der die Speichereinheit zum Abrufen von Daten angewiesen wird. In einigen Beispielen kann jede der Speichereinheiten als ein Die bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Dies (d. h. eine Vielzahl von Speichereinheiten) einschließen. In einigen Beispielen kann jede Speichereinheit zum Speichern relativ großer Datenmengen eingerichtet 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 Speichereinheit des NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie beispielsweise Flash-Speichervorrichtungen, Phasenwechselspeicher-Vorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtung), ferroelektrische Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen und jede andere Art von nichtflüchtigen Speichervorrichtungen.
  • Der NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen oder Speichereinheiten aufweisen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NAND-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Blöcken unterteilt werden, die in eine Vielzahl von Seiten unterteilt werden können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NAND-Zellen einschließen. Reihen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite aus einer Vielzahl von Seiten zu definieren. Entsprechende Zellen in jeder der Vielzahl von Seiten können elektrisch mit den entsprechenden Bitleitungen verbunden sein. Außerdem können NAND-Flash-Speichervorrichtungen 2D- oder 3D-Vorrichtungen sein und Single-Level-Zellen (SLC), Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC), Quad-Level-Zellen (QLC) oder Zellen mit mehreren Level sein. Die Steuerung 108 kann Daten in und aus NAND-Flash-Speichervorrichtungen auf Seitenebene schreiben und lesen und Daten aus NAND-Flash-Speichervorrichtungen auf Blockebene löschen.
  • Die Datenspeichervorrichtung 106 schließt eine Stromversorgung 111 ein, die eine oder mehrere Komponenten der Datenspeichervorrichtung 106 mit Strom versorgen kann. Wenn die Stromversorgung 111 in einem Standardmodus betrieben wird, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie der Hostvorrichtung 104, bereitgestellt wird. Beispielsweise kann die Stromversorgung 111 die eine oder mehrere Komponenten mit Strom versorgen, der von der Hostvorrichtung 104 über die Schnittstelle 114 empfangen wird. In einigen Beispielen kann die Stromversorgung 111 eine oder mehrere Stromspeicherkomponenten einschließen, die eingerichtet sind, um die eine oder die mehreren Komponenten mit Strom zu versorgen, wenn sie in einem Abschaltmodus betrieben werden, wie beispielsweise wenn kein Strom mehr von der externen Vorrichtung empfangen wird. Auf diese Art und Weise kann die Stromversorgung 111 als integrierte Backup-Stromversorgung fungieren. Einige Beispiele für die eine oder die mehreren Stromspeicherkomponenten 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 Stromspeicherkomponenten gespeicherte Strommenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Stromspeicherkomponenten sein. Das heißt, wenn die von einer oder mehreren Stromspeicherkomponenten gespeicherte Strommenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Stromspeicherkomponenten.
  • Die Datenspeichervorrichtung 106 schließt auch den flüchtigen Speicher 112 ein, der von der Steuerung 108 zum Speichern von Informationen verwendet werden kann. Der flüchtige Speicher 112 kann aus einer oder mehreren flüchtigen Speichervorrichtungen bestehen. In einigen Beispielen kann die Steuerung 108 den flüchtigen Speicher 112 als Cache verwenden. Zum Beispiel kann die Steuerung 108 zwischengespeicherte Informationen im flüchtigen Speicher 112 speichern, bis die zwischengespeicherten Informationen in den nichtflüchtigen Speicher 110 geschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Speicher 112 den von der Stromversorgung 111 empfangenen Strom verbrauchen. Beispiele für flüchtigen Speicher 112 schließen ein, sind aber nicht beschränkt auf Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 und dergleichen)).
  • Die Datenspeichervorrichtung 106 schließt eine Steuerung 108 ein, die eine oder mehrere Vorgänge der Datenspeichervorrichtung 106 verwalten kann. Beispielsweise kann die Steuerung 108 das Lesen von Daten von und/oder das Schreiben von Daten in den NVM 110 verwalten. In einigen Ausführungsformen kann die Steuerung 108, wenn die Datenspeichervorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, einen Datenspeicherbefehl initiieren, um Daten in den NVM 110 zu speichern und den Fortschritt des Datenspeicherbefehls zu überwachen. Die Steuerung 108 kann mindestens eine Betriebscharakteristik des Speichersystems 100 bestimmen und die mindestens eine Betriebscharakteristik in den NVM 110 speichern. In einigen Ausführungsformen speichert die Steuerung 108, wenn die Datenspeichervorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, die mit dem Schreibbefehl verbundenen Daten vorübergehend im internen Speicher oder Schreibpuffer 116, bevor die Daten an den NVM 110 gesendet werden.
  • 2A und 2B sind schematische Veranschaulichungen einer Vorrichtungsteuerung einer SSD gemäß verschiedenen Ausführungsformen. In einer Ausführungsform kann die Flash-Vorrichtung von 2A und 2B das NVM 110 der Datenspeichervorrichtung 106 von 1 sein. Außerdem kann gemäß verschiedenen Ausführungsformen die Flash-Vorrichtung von 2A und 2B eine Multi-Level-Zelle sein, wie SLC, MLC, TLC, QLC oder mehr, einschließlich jeder anderen Iteration der Multi-Level-Zelle, die nicht aufgeführt ist. Jedes Quadrat der Blockspeichervorrichtung von 2A und 2B stellt einen Block dar, der zur Datenspeicherung verfügbar ist. Ein schraffiertes Quadrat oder Block bedeutet, dass der Block Daten aufweist. Die Daten können Benutzerdaten, XOR- oder Paritätsdaten, Vorrichtungsmetadaten oder beliebige andere geeignete Daten sein, die im Flash des SSD gespeichert werden sollen.
  • 2A ist eine schematische Veranschaulichung der Vorrichtungssteuerung einer herkömmlichen SSD. Das SSD empfängt Daten von mehreren Anwendungen, wie beispielsweise Anwendung 1, Anwendung 2 und Anwendung 3. Die Daten werden im Flash des SSD gespeichert. Im SSD steuert die Speichervorrichtung die Datenplatzierung. Daten werden sequentiell in den Flash geschrieben, so dass die Daten von jeder Anwendung in der Reihenfolge geschrieben werden können, in der die Daten empfangen werden. Da die Daten von jeder Anwendung während der sequentiellen Schreibvorgänge zufällig sein können, kann die Latenz erhöht und der Durchsatz behindert werden.
  • 2B ist eine schematische Veranschaulichung der Vorrichtungssteuerung einer ZNS-SSD. Ähnlich wie in 2A empfängt das SSD Daten von mehreren Anwendungen, wie beispielsweise Anwendung 1, Anwendung 2 und Anwendung 3. Die Daten werden im Flash des SSD gespeichert. In der SSD steuern die Anwendungen oder der Host, wie beispielsweise die Hostvorrichtung 104 von 1, die Datenplatzierung in den Zonen. Der Flash des SSD ist in verschiedene gleiche Kapazitätszonen aufgeteilt. Die Zonen können als parallele Einheiten betrachtet werden, in denen die Hostvorrichtung 104 Arbeitslasten oder Daten an eine spezifische parallele Einheit leiten kann (d. h. der Host hat Blockzugriff auf den Flash). Zum Beispiel befinden sich die der Anwendung 1 zugeordneten Daten in einer ersten Zone, während sich die der Anwendung 2 zugeordneten Daten in einer zweiten Zone und die der Anwendung 3 zugeordneten Daten in einer dritten Zone befinden. Aufgrund der Zonenbereitstellung wird die Latenz gegenüber der Latenz der herkömmlichen SSD-Vorrichtungssteuerung reduziert und der Durchsatz gegenüber dem Durchsatz der herkömmlichen SSD-Vorrichtungssteuerung verbessert.
  • 3 ist eine schematische Veranschaulichung eines Zonenanhangbefehls. Der Host, wie beispielsweise die Hostvorrichtung 104 von 1, öffnet die Zone implizit oder explizit. Die Hostvorrichtung 104 gibt mehrere Zonenanhangbefehle an dieselbe Adresse aus. Speichervorrichtung, wie beispielsweise die Datenspeichervorrichtung 106 von 1, ist für das Füllen der Daten von der Hostvorrichtung 104 und das Benachrichtigen der Hostvorrichtung 104, wo für jeden Befehl genau die Daten in die Zone geschrieben werden, verantwortlich. Der Ort der in den NVM geschriebenen Daten, wie beispielsweise der NVM 110 von 1, wird in einer logisch-physischen Tabelle (L2P-Tabelle) in dem flüchtigen Speicher, wie beispielsweise dem flüchtigen Speicher 112 von 1, und dem NVM 110 gespeichert. Die L2P-Tabelle weist Zeiger auf eine oder mehrere logische Blockadressen (LBAs), die Daten speichern, wie beispielsweise Benutzerdaten, auf.
  • Wie in 3 veranschaulicht, hat jeder Block in der Zone eine Größe von 4 K. Der Begriff „Block“ wird für beispielhafte Zwecke verwendet und ist nicht auf eine Größe von 4 K beschränkt. Von der Datenspeichervorrichtung 106 werden drei Schreibbefehle (d. h. drei Zonenanhangbefehle) in der Reihenfolge 4K-Schreib0, 8K-Schreib1 und 16K-Schreib2 empfangen. Außerdem entspricht ein Schreibzeiger (WP) einer Zone dem nächsten verfügbaren Ort für einen Schreibbefehl. In 3 wird der 4K-Schreib0 in den ersten Block geschrieben, und der neue Schreibzeigerort befindet sich am Anfang des zweiten Blocks (d. h. an dem Ort mit der Größe 4 K in der Zone). Nachdem das Schreibe in den ersten Block geschrieben wurde, wird das 8K-Schreib1 in die nächsten verfügbaren Blöcke geschrieben, welche die nächsten zwei Blöcke belegen (d. h. zwei 4 K große Blöcke). Der Schreibzeiger wird aktualisiert, um den 16 K großen Ort der Zone für den nächsten Schreibbefehl wiederzugeben. Der letzte 16K-Schreib2-Befehl wird in die nächsten vier Blöcke (d. h. vier 4 K große Blöcke) geschrieben. Der Schreibzeiger wird aktualisiert, um eine Gesamtzonengröße von 28 K wiederzugeben, wobei der nächste Schreibbefehl an den 28 K großen Ort geschrieben wird. An jedem Ort wird der Host mit dem genauen Ort der geschriebenen Daten in der Zone über eine Beendigungsnachricht aktualisiert, die jedem Zonenanhangbefehl zugeordnet ist. Obwohl in der obigen Reihenfolge beispielhaft veranschaulicht, können die gleichzeitig empfangenen Schreibbefehle sequenziell in beliebiger Reihenfolge (d. h. außerhalb der Reihenfolge) geschrieben werden, so dass Schreib2 vor Schreibe in die Zone aufgrund der ZNS-Umgebung geschrieben werden kann.
  • 4 ist eine schematische Veranschaulichung eines Zustandsdiagramms einer ZNS-SSD gemäß einer Ausführungsform. In 4 sind die verschiedenen Zonenzustände (ZS) leer (d. h. ZSE: leer), implizit geöffnet (d. h. ZSIO: implizit geöffnet), explizit geöffnet (d. h. ZSEO: explizit geöffnet), geschlossen (d. h. ZSC: geschlossen), voll (d. h. ZSF: voll), schreibgeschützt (d. h. ZSRO: schreibgeschützt) und offline (d. h. ZSO: Offline). Ein generischer Strömungsweg für eine Zone kann von einem leeren Zustand zu einem offenen Zustand sein, der entweder implizit oder explizit geöffnet sein kann. Aus einem offenen Zustand kann die Zone ausgelastet sein, so dass die ZNS voll ist. Nach dem Vollzustand kann der Zoneninhalt gelöscht werden, was die ZNS auf leer zurücksetzt.
  • Der Anfangszustand für jede Zone nach einem Einschalt- oder Rücksetzereignis einer Steuerung, wie beispielsweise der Steuerung 108 von 1, wird durch die Zoneneigenschaften jeder Zone bestimmt. Zum Beispiel wird der Zonenzustand, ZSE: leer, durch einen gültigen Schreibzeiger (WP) bezeichnet, der auf die niedrigste LBA (d. h. Zonenanfangs-LBA) in der Zone zeigt. Der Zonenzustand, ZSC: geschlossen, wird durch einen WP bezeichnet, der nicht auf die niedrigste LBA in der Zone zeigt. Der Zonenzustand, ZSF: voll, ist der Ausgangszustand, wenn die jüngste Zonenbedingung voll war. Der Zonenzustand, ZSRO: schreibgeschützt, ist der Anfangszustand, wenn die jüngste Zonenbedingung schreibgeschützt war. Der Zonenzustand, ZSO: offline, ist der Anfangszustand, wenn die jüngste Zonenbedingung offline war.
  • Die Zonen können eine beliebige Gesamtkapazität oder Gesamtgröße aufweisen, wie beispielsweise 256 MiB oder 512 MiB. Jedoch kann ein kleiner Abschnitt jeder Zone für das Schreiben von Daten unzugänglich sein, aber dennoch gelesen werden, wie ein Abschnitt jeder Zone, der die XOR-Daten, Metadaten und einen oder mehrere ausgeschlossene Löschblöcke speichert. Wenn zum Beispiel die Gesamtkapazität einer Zone 512 MiB beträgt, kann die Zonenkapazität (ZCAP) 470 MiB betragen, was der verfügbaren Kapazität zum Schreiben von Daten entspricht, während 42 MiB nicht zum Schreiben von Daten zur Verfügung stehen. Die ZCAP einer Zone ist gleich oder kleiner als die Gesamtzonenspeicherkapazität oder die Gesamtzonenspeichergröße. Die Speichervorrichtung, wie beispielsweise die Datenspeichervorrichtung 106 von 1 oder die SSD von 2B, kann die ZCAP jeder Zone beim zurücksetzen der Zone bestimmen. Zum Beispiel kann die Steuerung, wie beispielsweise die Steuerung 108 von 1, die ZCAP jeder Zone bestimmen. Die Speichervorrichtung kann die ZCAP einer Zone bestimmen, wenn die Zone zurückgesetzt wird.
  • Wenn eine Zone leer ist (d. h. ZSE: leer), ist die Zone frei von Daten (d. h. keiner der Löschblöcke in der Zone speichert gegenwärtig Daten) und der Schreibzeiger (WP) befindet sich an der Zonenanfangs-LBA (ZSLBA) (d. h. WP=0). Die ZSLBA bezieht sich auf den Anfang einer Zone (d. h. der erste NAND-Ort einer Zone). Der Schreibzeiger kennzeichnet den Ort des Datenschreibens in einer Zone der Speichervorrichtung. 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 (d. H. ZSIO: implizit geöffnet oder ZSEO: explizit geöffnet). Die Zonenverwaltungsbefehle (ZM-Befehle) können verwendet werden, um eine Zone zwischen den Zuständen „Zone offen“ und „Zone geschlossen“ zu bewegen, die beide aktive Zustände sind. Wenn eine Zone aktiv ist, weist die Zone offene Blöcke auf, die beschrieben werden können, und dem Host kann eine Beschreibung der empfohlenen Zeit im aktiven Zustand bereitgestellt werden. Die Steuerung 108 weist die ZM (nicht abgebildet) auf. Zonen-Metadaten können in der ZM und/oder der Steuerung 108 gespeichert sein.
  • Der Begriff „geschrieben“ schließt das Programmieren von Benutzerdaten auf 0 oder mehr NAND-Stellen in einem Löschblock und/oder teilweise gefüllte NAND-Stellen in einem Löschblock ein, wenn die Benutzerdaten nicht alle verfügbaren NAND-Stellen gefüllt haben. Ein NAND-Ort kann ein Flash-Ort sein, wie in 2A und 2B bezeichnet. Der Begriff „geschrieben“ kann weiterhin das Verschieben einer Zone auf voll (d. h. ZSF: 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 Datenspeichervorrichtung 106 aufgrund von Ressourcenbeschränkungen, wie zu viele offene Zonen, um u. a. den Defektzustand zu verfolgen oder zu entdecken, oder das Schließen der Zone durch eine Hostvorrichtung, wie beispielsweise die Hostvorrichtung 104 von 1, 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 (d. h. ZSIO: implizit geöffnet oder ZSEO: explizit geöffnet) oder geschlossen (d. h. ZSC: 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 108, Ressourcen anderen Aufgaben neu zuzuweisen. Diese Aufgaben können andere Zonen, die offen sind, andere herkömmliche Nicht-Zonen-Bereiche oder andere Bedürfnisse der Steuerung einschließen, sind aber nicht darauf beschränkt.
  • Sowohl in der offenen als auch in der geschlossenen Zone zeigt der Schreibzeiger auf eine Stelle in der Zone irgendwo zwischen der ZSLBA und dem Ende der letzten LBA der Zone (d. h. WP>0). Aktive Zonen können zwischen dem offenen und dem geschlossenen Zustand wechseln, wenn sie von der ZM bezeichnet werden oder wenn ein Schreiben in die Zone geplant ist. Zusätzlich kann die ZM eine aktive Zone zurücksetzen, um die in der Zone gespeicherten Daten zu leeren oder zu löschen, so dass die Zone wieder auf eine leere Zone umschaltet. Sobald eine aktive Zone voll ist, schaltet die Zone in den vollen Zustand. Eine volle Zone ist eine Zone, die vollständig mit Daten gefüllt ist und keine Blöcke mehr zum Schreiben von Daten zur Verfügung hat (d. h. WP=Zonenkapazität (ZCAP)). In einer vollen Zone zeigt der Schreibzeiger auf das Ende der beschreibbaren Kapazität der Zone. Lesebefehle von Daten, die in vollen Zonen gespeichert sind, können weiterhin ausgeführt werden.
  • Die ZM kann eine volle Zone (d. h. ZSF: voll) zurücksetzen und eine Löschung der in der Zone gespeicherten Daten planen, so dass die Zone wieder auf eine leere Zone (d. h. ZSE: leer) 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. Beim Zurücksetzen einer Zone kann die Datenspeichervorrichtung 106 eine neue ZCAP der Rücksetzzone bestimmen und das beschreibbare ZCAP-Attribut in den Zonen-Metadaten aktualisieren. Eine Offline-Zone ist eine Zone, die nicht verfügbar ist, um Daten zu schreiben. Eine Offline-Zone kann sich im vollen Zustand, im leeren Zustand oder in einem teilweise gefüllten Zustand befinden, ohne aktiv zu sein.
  • Da das Zurücksetzen einer Zone alle in der Zone gespeicherten Daten löscht oder eine Löschung plant, entfällt die Notwendigkeit der Speicherbereinigung einzelner Löschblöcke, wodurch der gesamte Speicherbereinigungsprozess der Datenspeichervorrichtung 106 verbessert wird. Die Datenspeichervorrichtung 106 kann einen oder mehrere Löschblöcke zum Löschen markieren. Wenn eine neue Zone gebildet wird und die Datenspeichervorrichtung 106 ein ZM-Öffnen erwartet, können der eine oder die mehreren zum Löschen markierten Löschblöcke dann gelöscht werden. Die Datenspeichervorrichtung 106 kann weiterhin die physische Sicherung der Zone beim Löschen der Löschblöcke entscheiden und erstellen. Sobald somit die neue Zone geöffnet ist und Löschblöcke zur Bildung der Zone ausgewählt werden, werden die Löschblöcke gelöscht worden sein. Darüber hinaus kann bei jedem Zurücksetzen einer Zone eine neue Reihenfolge für die LBAs und der Schreibzeiger für die Zone gewählt werden, wodurch die Zone tolerant gegenüber dem Empfang von Befehlen außerhalb der sequentiellen Reihenfolge sein kann. Der Schreibzeiger kann optional abgeschaltet werden, so dass ein Befehl in jedwede Start-LBA geschrieben werden kann, die für den Befehl angegeben wird.
  • Wenn die Zonenaktivgrenze ein von Null verschiedener Wert ist, kann die Steuerung eine Zone entweder in ZSIO: implizit geöffnet, ZSEO: explizit geöffnet oder ZSC: geschlossen in den Zustand ZSF: voll überführen. Wenn eine Zone in den Zustand ZSIO: implizit geöffnet oder ZSEO: explizit geöffnet übergeht, startet ein interner Zeitgeber in Sekunden, so dass die Hostvorrichtung 104 oder die Datenspeichervorrichtung 106 erkennt, wenn der ZAL-Wert überschritten wird. Wenn der ZAL-Wert oder die Zeitgrenze überschritten wird, kann die Steuerung 108 entweder die Hostvorrichtung 104 warnen, dass die Zone abgeschlossen werden muss (d. h. die Zone muss ausgelastet sein) oder die Zone in den Zustand ZSF: voll überführen. Wenn die Hostvorrichtung 104 gewarnt wird, dass die Zone abgeschlossen werden muss, wird das empfohlene Feld Zone abgeschlossen auf 1 gesetzt und das geänderte Ereignis der Zoneninformation an die Hostvorrichtung 104 gemeldet. Wenn die Zone in den Zustand ZSF: voll übergeführt wird, wird die vom Steuerungsfeld abgeschlossene Zone auf 1 gesetzt und das geänderte Ereignis der Zoneninformation wird an die Hostvorrichtung 104 gemeldet. Da der ZAL-Wert ein globaler Parameter für jede Zone der Speichervorrichtung ist, kann eine Zone vorzeitig geschlossen werden, was weniger als optimalen Speicherlaufwerksbetrieb ermöglicht, oder sie kann spät geschlossen werden, was das Akkumulieren einer inakzeptablen Menge von Bitfehlern ermöglicht, was zu einer verringerten Integrität der Datenspeichervorrichtung führen kann. Die inakzeptable Akkumulation von Bitfehlern kann auch zu einer verringerten Leistung der Datenspeichervorrichtung führen. Der globale ZAL-Parameter ist ein statischer Parameter und kann auf einer Worst-Case-Schätzung der Bedingungen basieren, denen ein Host ausgesetzt sein kann.
  • 5 ist eine schematische Veranschaulichung einer Zonen-Namensraumstruktur 500 gemäß einer Ausführungsform. Die Zonen-Namensraumstruktur 500 schließt eine Vielzahl von NAND-Kanälen 502a-502n ein, wobei jeder NAND-Kanal 502a-502n einen oder mehrere Chips 504a-504n einschließt. Jeder NAND-Kanal 502a-502n kann eine dedizierte Hardware-Schnittstelle (HW-Schnittstelle) aufweisen, so dass jeder NAND-Kanal 502a-502n unabhängig von einem anderen NAND-Kanal 502a-502n ist. Die NAND-Kanäle 502a-502n können Flash-Schnittstellenmodul-Kanäle (FIM-Kanäle) sein. Jeder des einen oder der mehreren Chips 504a-504n schließt einen oder mehrere Löschblöcke 508a-508n ein. Die Zonen-Namensraumstruktur 500 schließt weiterhin eine oder mehrere Zonen 506a-506n ein, wobei jede Zone 506a-506n einen oder mehrere Löschblöcke 508a-508n aus jedem der Vielzahl von Chips einschließt. In einer Ausführungsform ist die Größe jeder der Vielzahl von Zonen gleich. In einer anderen Ausführungsform ist die Größe jeder der Vielzahl von Zonen nicht gleich. In noch einer anderen Ausführungsform ist die Größe einer oder mehrerer Zonen gleich und die Größe der verbleibenden einen oder mehreren Zonen ist nicht gleich.
  • Zum Beispiel schließt eine erste Zone 506a den ersten Löschblock 508a und den zweiten Löschblock 508b von jedem Chip 504a-504n jedes NAND-Kanals 502a-502n ein. Eine Zone 506a-506n kann zwei Löschblöcke 508a-508n von jedem Chip 504a-504n einschließen, sodass zwei Löschblöcke 508a-508n die Parallelität erhöhen, wenn Daten in den Chip 504a-504n und/oder die Zone 506a-506n gelesen oder geschrieben werden. In einer Ausführungsform kann eine Zone eine gerade Anzahl von Löschblöcken von jedem Chip einschließen. In einer anderen Ausführungsform kann eine Zone eine ungerade Anzahl von Löschblöcken von jedem Chip einschließen. In noch einer anderen Ausführungsform kann eine Zone einen oder mehrere Löschblöcke von einem oder mehreren Chips einschließen, wobei der eine oder die mehreren Löschblöcke möglicherweise nicht aus einem oder mehreren Chips ausgewählt werden.
  • Außerdem kann die Datenübertragungsgröße, die jedem Zonenanhangbefehl an eine Zone 506a-506n zugeordnet ist, in der Größe eines Löschblocks oder einer Seite sein, um die NAND-Parallelität auszunutzen und den Zonenanhangbefehl an NAND-Merkmale zu optimieren. Wenn die Datenübertragungsgröße (z. B. Schreibgröße), die einem Zonenanhangbefehl zugeordnet ist, kleiner als die minimale Übertragungsgröße (z. B. Schreibgröße) ist, wie beispielsweise die Größe eines Löschblocks oder einer Seite, kann der Zonenanhangbefehl in einem Puffer, wie beispielsweise einem Schreibpuffer 116 von 1, gehalten werden, bis sich der eine oder die mehreren Zonenanhangbefehle, die in dem Puffer gehalten werden, auf die minimale Übertragungsgröße aggregieren. Wenn der eine oder die mehreren Zonenanhangbefehle parallel ausgeführt werden, wird die Datenübertragung mit jedem Zonenanhangbefehl verschachtelt, um die Größe des Schreib-Cache-Puffers (z. B. des Schreibpuffers 116) zu minimieren.
  • 6 ist eine schematische Veranschaulichung einer ZNS nicht verschachtelten Datenübertragung. Die ZNS nicht-verschachtelte Datenübertragung ist als die Datenübertragung über einen Zeitraum veranschaulicht. In 6 werden vier Zonenanhangbefehle an die Speichervorrichtung gesendet, um in eine Zone geschrieben zu werden. Die Größe der Daten, die jedem der vier Zonenanhangbefehle zugeordnet sind, beträgt 1 MB. Zum Beispiel beträgt die Größe der Daten, die dem ersten Zonenanhangbefehl zugeordnet sind, 1 MB, die Größe der Daten, die dem zweiten Zonenanhangbefehl zugeordnet sind, 1 MB und so weiter.
  • Die Daten für jeden der Zonenanhangbefehle werden über einen Datenbus, wie beispielsweise einen PCIe-Bus, übertragen, wobei eine Steuerung, wie beispielsweise die Steuerung 108 von 1, die Zonenanhangbefehle, die an den jeweiligen Ort in dem Chip der jeweiligen Zone geschrieben werden sollen, in eine Warteschlange einreiht. Die Übertragung von 1 MB erster Daten für den ersten Zonenanhangbefehl über den Datenbus kann etwa 0,14 mSec betragen. Der aufgeführte Zeit-Wert soll nicht einschränkend sein, sondern ein Beispiel für eine Ausführungsform bereitstellen. Nachdem die Übertragung der ersten Daten für den ersten Zonenanhangbefehl beendet wurde, können die dem zweiten Zonenanhangbefehl zugeordneten zweiten Daten übertragen werden, ebenso für die dritten Daten für den dritten Zonenanhangbefehl usw.
  • Nachdem die Daten für einen Zonenanhangbefehl über den Datenbus übertragen wurden, werden die Daten übertragen und an die NAND-Schnittstelle programmiert. Die Programmierung der Daten an die NAND-Schnittstelle erfolgt über eine NAND-Seitengranularität, wie etwa 32 KB, etwa 64 KB, etwa 96 KB oder jede andere geeignete Größe, die nicht aufgeführt ist. Jeder Datenprogrammvorgang kann etwa 2 mSec dauern, wobei das Schreiben von 1 MB Daten etwa 20 mSec dauern kann. Es ist zu beachten zum Beispiel, dass die Zeit zum Schreiben von 1 MB Daten viel größer ist als die Zeit zum Abrufen der zu schreibenden Daten (d. h. 0,14 mSec). Vor dem Schreiben werden alle abgerufenen Daten intern zwischengespeichert. Da die Zeit zum Abrufen von Daten viel geringer ist als die Zeit zum Schreiben von Daten, wird eine große Menge von Daten zwischengespeichert, was eine sehr große Cache-Größe erfordert. Um die Ausführung des nächsten Befehls parallel zu dem zuvor abgerufenen Befehl zu starten, wird der Cache ausreichend groß sein, um sicherzustellen, dass der Cache nicht voll wird, wenn alle Daten, die dem ersten abgerufenen Befehl zugeordnet sind, zwischengespeichert werden. Wenn der Cache nicht voll ist, kann der zweite Befehl abgerufen und parallel zu einem anderen Chip programmiert werden. Aufgrund der sehr großen Zeitdifferenz zwischen Abrufen und Schreiben wäre ein sehr großer interner Cache notwendig, um verschiedene Chips parallel zu programmieren.
  • In 6 empfängt die Steuerung vier Zonenanhangbefehle, jeweils an einen anderen Chip. Zum Beispiel ist der erste Zonenanhangbefehl für die ersten Daten an den ersten Chip0, der zweite Zonenanhangbefehl für die zweiten Daten an den zweiten Chip1, der dritte Zonenanhangbefehl für die dritten Daten an den dritten Chip2 und der vierte Zonenanhangbefehl für die vierten Daten an den vierten Chip3. In der vorliegenden Ausführungsform verfügt die Steuerung über vier verfügbare Schreibpuffer, so dass nach dem Empfangen der Daten, die den vier Zonenanhangbefehlen zugeordnet sind, jeder Befehl ausgeführt werden kann. Wenn ein fünfter Zonenanhangbefehl empfangen wird, der fünften Daten zugeordnet ist, wird der fünfte Zonenanhangbefehl in den Steuerungspuffer (z. B. Schreib-Cache-Puffer) eingereiht, bis ein Schreibpuffer freigegeben wird. Da jedoch die Datengröße für jeden Zonenanhangbefehl 1 MB beträgt, können viele Zonenanhangbefehle in dem Steuerungspuffer gespeichert werden, wodurch die für den Schreib-Cache-Puffer erforderliche Größe erhöht wird. Die zusätzliche Größe des Schreib-Cache-Puffers erhöht die Kosten und erfordert mehr Strom für den Betrieb.
  • 7A-7B veranschaulichen ein Speichersystem 700, das eine ZNS verschachtelte Datenübertragung gemäß verschiedenen Ausführungsformen implementiert. Das Speichersystem 700 kann das Speichersystem 100 aus 1 sein. Das Speichersystem 700 weist eine Hostvorrichtung 702 auf, die mit einer Speichervorrichtung 704 durch einen Datenbus 724 gekoppelt ist. Die Speichervorrichtung 704 ist eine ZNS-Speichervorrichtung, die eine Vielzahl von Löschblöcken oder eine Vielzahl von Chips aufweist, die in Zonen gruppiert sind. Die Speichervorrichtung 704 kann die ZNS-SSD von 2B sein. In einigen Ausführungsformen weist die Speichervorrichtung 704 die ZNS-Struktur 500 von 5 auf.
  • Die Hostvorrichtung 702 weist eine Hostanhangbefehlswarteschlange 706 auf. Die Speichervorrichtung 704 weist einen Anhangschreibpuffer 708 auf. Der Anhangschreibpuffer 708 ist ein Befehlsabruf und kann der Schreibpuffer 116 von 1 sein. Der Anhangschreibpuffer 708 kann in einer Steuerung 710 der Speichervorrichtung 704 gespeichert sein oder mit der Steuerung 710 gekoppelt sein. Der Anhangschreibpuffer 708 aggregiert Blöcke von Daten, die von der Hostvorrichtung 702 abgerufen oder empfangen werden, als Programmierblöcke 714a-714n (kollektiv als Programmierblöcke 714 bezeichnet), wie nachstehend ausführlicher erörtert.
  • Wie in 7A gezeigt, reiht die Hostvorrichtung 702 Zonenanhangbefehle 712a-712h (kollektiv als Zonenanhangbefehle 712 bezeichnet) in der Hostanhangbefehlswarteschlange 706 ein. Während 8 Zonenanhangbefehle 712a-712h in der Hostanhangbefehlswarteschlange 706 gezeigt sind, kann jederzeit eine beliebige Anzahl von Zonenanhangbefehlen 712 in der Hostanhangbefehlswarteschlange 706 gespeichert werden, und die Anzahl von Zonenanhangbefehlen 712 soll nicht einschränkend sein. Die Zonenanhangbefehle 712 können verschiedene Größen aufweisen, beispielsweise von mehreren Kilobytes bis zu mehreren Megabytes. Als solches können ein oder mehrere Zonenanhangbefehle 712 unterschiedliche Größen aufweisen, wie in 7A veranschaulicht.
  • Jeder der Zonenanhangbefehle 712a-712h weist eine Zonenidentifikation (ID) auf oder ist dieser zugeordnet, um die Speichervorrichtung 704 darüber zu informieren, wo die Daten der Zonenanhangbefehle 712a-712h gespeichert werden sollen (d. h. welcher Löschblock bzw. welche Löschblöcke einer bestimmten Zone zugeordnet sind). Die Zonen-ID kann eine Start-LBA eines Blocks sein, der einer spezifischen Zone zugeordnet ist, wie weiter unten in 8 erörtert. Zum Beispiel weisen ein erster Zonenanhangbefehl 712a, ein zweiter Zonenanhangbefehl 712b, ein fünfter Zonenanhangbefehl 712e und ein sechster Zonenanhangbefehl 712f eine Zonen-ID von LBA 0 auf, die einer ersten Zone 0 zugeordnet ist. Ein dritter Zonenanhangbefehl 712c und ein vierter Zonenanhangbefehl 712d weisen eine Zonen-ID von LBA 2000 auf, die einer fünften Zone 4 zugeordnet ist. Ein siebter Zonenanhangbefehl 712g und ein achter Zonenanhangbefehl 712h weisen eine Zonen-ID von LBA 1000 auf, die einer dritten Zone 2 zugeordnet ist. In diesem Beispiel ist jede Zonengröße auf 500 LBAs eingestellt; die Größe der Zonen kann jedoch variieren und die Zonengröße soll nicht einschränkend sein.
  • Die Steuerung 710 der Speichervorrichtung 704 ruft einen oder mehrere Abschnitte oder Blöcke von Daten der Zonenanhangbefehle 712a-712h von der Hostvorrichtung 702 für jede Zone ab, die durch die Zonenanhangbefehle 712a-712h identifiziert wird. Sobald Daten von der Hostvorrichtung 702 abgerufen werden, klassifiziert und aggregiert die Speichervorrichtung 704 den einen oder die mehreren Datenblöcke gemäß der Zonen-ID, die jedem Block in dem Anhangschreibpuffer 708 zugeordnet ist, als Programmierblöcke 714a-714n. Der Anhangschreibpuffer 708 kann eine Vielzahl von Puffern aufweisen. Somit kann jede Zone, die einer Zonen-ID zugeordnet ist, einen individuellen Puffer innerhalb des Anhangschreibpuffers 708 aufweisen, in dem die Programmierblöcke 714 zu aggregieren sind.
  • Nachdem ein oder mehrere Datenblöcke, die einer Zone zugeordnet sind, zu einer vorbestimmten Programmierblockgröße, wie beispielsweise einer NAND-Seitengröße von 96 K, aggregiert wurden, wird der Programmierblock 714 zum Programmieren über die verschiedenen Kanäle 716a-716n (kollektiv als Kanäle 716 bezeichnet) gemäß der Zonen-ID des Programmierblocks 714 gesendet, wie in 7B gezeigt. Die Kanäle 716a-716n können die NAND- oder FIM-Kanäle 502a-502n von 5 sein. Jeder Kanal 716 kann eine dedizierte Hardware-Schnittstelle aufweisen, so dass jeder Kanal 716 unabhängig von einem anderen Kanal 716 ist. Während durchgehend auf eine Programmierblockgröße einer NAND-Seitengröße von 96 K Bezug genommen wird, kann der Programmierblock eine beliebige Größe aufweisen und soll daher nicht einschränkend sein. In einigen Ausführungsformen kann die Programmierblockgröße größer oder kleiner als eine Seitengröße sein. Wenn die Programmierblockgröße gleich einer Seitengröße ist, ist die maximale Anzahl von Zonenanhangbefehlen 712, die parallel durch den Anhangschreibpuffer 708 bedient werden können, die Größe des Anhangschreibpuffers 708 geteilt durch eine Seitengröße. In einigen Ausführungsformen übersteigt die maximale Anzahl von Zonenanhangbefehlen 712, die parallel durch den Anhangschreibpuffer 708 bedient werden können, die Anzahl von Kanälen 716, um zu ermöglichen, dass alle Kanäle 716 parallel genutzt werden. Darüber hinaus kann, während drei Kanäle 716 gezeigt sind, eine größere oder kleinere Anzahl von Kanälen 716 eingeschlossen sein, und die Anzahl von Kanälen 716 soll nicht einschränkend sein. Zum Beispiel können 8 Kanäle, 16 Kanäle oder mehr vorhanden sein.
  • Die Programmierblöcke 714, die zu der vorbestimmten Programmierblockgröße aggregiert sind, werden zum Programmieren an einen oder mehrere Blöcke (nicht gezeigt) gesendet, die auf einer Vielzahl von Chips 718a-718c (kollektiv als Chips 718 bezeichnet) über die verschiedenen Kanäle 716 enthalten sind. Jeder Kanal 716 ist mit einer Vielzahl von Chips 718 gekoppelt, und jeder Chip 718 schließt eine Vielzahl von Blöcken ein. Jede Zone ist einem oder mehreren Blöcken von jedem der Vielzahl von Chips 718 zugeordnet, die mit einem spezifischen Kanal 716 gekoppelt sind. Zum Beispiel verwendet, wie in 7B gezeigt, die erste Zone 0 den ersten Kanal 0 716a, um auf den einen oder die mehreren Blöcke zuzugreifen, die der ersten Zone 0 auf einer Vielzahl von ersten Chips 718a zugeordnet sind. Mit anderen Worten verwendet jede Zone einen individuellen Kanal 716, der mit einer Vielzahl von Chips 718 gekoppelt ist, um auf den einen oder die mehreren Blöcke zuzugreifen, die jeder Zone zugeordnet sind. Da jede Zone einen separaten Kanal 716 verwendet, können ein oder mehrere Kanäle 716 parallel verwendet werden. Somit wird beim parallelen Ausführen oder Programmieren des einen oder der mehreren Zonenanhangbefehle die Datenübertragung mit jedem Zonenanhangbefehl verschachtelt, um die Größe des Anhangschreibpuffers 708 zu minimieren.
  • Unter Bezugnahme auf 7A werden beispielsweise der erste Zonenanhangbefehl 712a von 4 K, der zweite Zonenanhangbefehl 712b von 16 K, der fünfte Zonenanhangbefehl 712e von 16 K und ein Block des sechsten Zonenanhangbefehls 712f von 60 K als ein erster Programmierblock 714a in dem Anhangschreibpuffer 708 an die erste Zone 0 aggregiert. Da der erste, zweite und fünfte Zonenanhangbefehl 712a, 712b, 712e zu 36 K aggregiert sind und der sechste Zonenanhangbefehl 712f eine Größe von 128 K aufwies, wird nur ein 60 K-Block des sechsten Zonenanhangbefehls 712f abgerufen, um die Programmierblockgröße von 96 K zu erfüllen. In einigen Ausführungsformen verarbeitet die Steuerung 710 weiterhin Zonenanhangbefehle 712, die anderen Zonen-IDs zugeordnet sind, bevor sie zurückkehrt, um den Rest des sechsten Zonenanhangbefehls 712f zu verarbeiten.
  • Gleichzeitig oder nach Erreichen der 96 K Programmierblockgröße für die erste Zone 0 werden Zonenanhangbefehle 712, die andere Zonen identifizieren, abgerufen und aggregiert. Zum Beispiel können der dritte Zonenanhangbefehl 712c und der vierte Zonenanhangbefehl 712d abgerufen und in die fünfte Zone 4 im Anhangschreibpuffer 708 aggregiert werden, und der siebte Zonenanhangbefehl 712g und der achte Zonenanhangbefehl 712 h können abgerufen und in die dritte Zone 2 im Anhangschreibpuffer 708 aggregiert werden.
  • Wie in 7B gezeigt, sendet die Speichervorrichtung 704 oder die Steuerung 710 der Speichervorrichtung 704, sobald die Daten, die der ersten Zone 0 zugeordnet sind, zu der Programmierblockgröße (z. B. 96 K) aggregiert sind, den ersten Programmierblock 714a, welcher der ersten zu programmierenden Zone 0 zugeordnet ist. Der erste Programmierblock 714a wird über einen ersten Kanal 0 716a an einen oder mehrere Blöcke gesendet, die der ersten Zone 0 auf einem oder mehreren Chips 718a zugeordnet sind. Die Speichervorrichtung 704 kann verschiedene Tabellen verwenden, um zu bestimmen, an welche Seite, welche Blöcke und/oder welchen Chip die Programmierblöcke 714 jeder Zone gesendet werden sollen, nachdem sie die Programmierblockgröße erreicht haben, wie in 8 gezeigt und erörtert.
  • Da sich die Daten, die der dritten Zone 2 und der zwölften Zone 11 zugeordnet sind, jeweils einzeln zu der Programmierblockgröße aggregieren, sendet in ähnlicher Art und Weise die Steuerung 710 den dritten Programmierblock 714c, welcher der dritten Zone 2 zugeordnet ist, und den fünften Programmierblock 714n, welcher der zwölften zu programmierenden Zone 11 zugeordnet ist. Der dritte Programmierblock 714c wird über einen zweiten Kanal 1 716b an einen oder mehrere Blöcke gesendet, die der dritten Zone 2 auf einem oder mehreren Chips 718b zugeordnet sind. Der fünfte Programmierblock 714n wird über einen achten Kanal 7 an einen oder mehrere Blöcke gesendet, die der zwölften Zone 11 auf einem oder mehreren Chips 718c zugeordnet sind. Somit können der erste Kanal 0 716a, der zweite Kanal 1 716b und der achte Kanal 7 parallel bedient werden. In einigen Ausführungsformen können 8 oder 16 einzelne Kanäle 716 parallel bedient werden.
  • Beim Programmieren des ersten, dritten und fünften Programmierblocks 714a, 714c, 714n werden die Daten des ersten, dritten und fünften Programmierblocks 714a, 714c, 714n aus dem Anhangschreibpuffer 708 freigegeben oder gelöscht, wodurch der Anhangschreibpuffer 708 wiederverwendet werden kann. Zum Beispiel kann beim Freigeben des ersten Programmierblocks 714a der verbleibende Block des sechsten Zonenanhangbefehls 712f abgerufen werden, um mit anderen Zonenanhangbefehlen 712, die der ersten Zone 0 zugeordnet sind, aggregiert zu werden. Da die Speichervorrichtung 704 mehrere Kanäle 716, die mehreren Zonen zugeordnet sind, parallel bedienen kann, wie beispielsweise den ersten Kanal 0 716a, den zweiten Kanal 1 716b und den achten Kanal 7, wie vorstehend beschrieben, ist die Speichervorrichtung 704 nicht festgefahren nur wenige Zonen zu bedienen, die möglicherweise große Datenübertragungen aufweisen (z. B. Datenübertragungen größer als die vorbestimmte Programmiergröße), die den Anhangschreibpuffer 708 vollständig ausfüllen. Das Bedienen von nur wenigen Zonen mit großen Datenübertragungen verhindert, dass mehrere Kanäle 716 gleichzeitig genutzt werden.
  • Da sich die dritten und vierten Zonenanhangbefehle 712c, 712d zu 32 K aggregieren, wartet die Speichervorrichtung 704 darauf, weitere Zonenanhangbefehle 712 zu empfangen, die der fünften Zone 4 zugeordnet sind, bevor sie den zweiten zu programmierenden Programmierblock 714b sendet. Beim Empfangen eines oder mehrerer Datenblöcke, die der fünften Zone 4 zugeordnet sind und sich zu der Programmierblockgröße aggregieren, sendet die Steuerung 710 den zweiten zu programmierenden Programmierblock 714b, wie oben erörtert. Wenn nach einem vorbestimmten Zeitraum, wie etwa 10 Millisekunden bis etwa 100 Millisekunden, keine der fünften Zone 4 zugeordneten Zonenanhangbefehle 712 mehr empfangen werden und alle Cache-Puffer belegt sind, kann der zweite Programmierblock 714b von aggregierten Daten, welcher der fünften Zone 4 zugeordnet ist, dann verarbeitet werden, beispielsweise durch Schreiben des zweiten Programmierblocks 714b in einen temporären Block oder in einen anderen Puffer oder Cache. Sobald der zweite Programmierblock 714b, welcher der fünften Zone 4 zugeordnet ist, verarbeitet ist, kann der Puffer, der den zweiten Programmierblock 714b speichert, aus dem Anhangschreibpuffer 708 freigegeben werden, um für eine andere Zone wiederverwendet zu werden.
  • In einigen Ausführungsformen verfolgt die Steuerung 710 beim Schreiben des zweiten Programmierblocks 714b von 32 K in einen temporären Block oder Puffer die Datenmenge, die benötigt wird, um den nächsten Programmierblock 714, welcher der fünften Zone 4 zugeordnet ist, zu füllen. Somit ist der Steuerung 710 bekannt, dass der nächste Programmierblock 714, welcher der fünften Zone 4 zugeordnet ist, 64 K Daten benötigt, um die Programmierblockgröße zu erreichen. Wenn ein oder mehrere Zonenanhangbefehle 712, die der fünften Zone 4 zugeordnet sind, empfangen und zu 64 K innerhalb eines Programmierblocks 714 aggregiert werden, aggregiert die Steuerung 710 die neu empfangenen 64 K von Daten mit den 32 K von Daten, die in dem temporären Block oder Puffer gespeichert sind, um den nächsten Programmierblock 714, welcher der fünften Zone 4 zugeordnet ist, zu füllen. Der Programmierblock 714, der die neuen 64 K von Daten löscht, wird dann zum Programmieren über einen Kanal 716 gesendet, welcher der fünften Zone 4 zugeordnet ist. Wenn ein oder mehrere Zonenanhangbefehle 712, die der fünften Zone 4 zugeordnet sind, empfangen werden, aber nicht auf 64 K aggregieren, die zum Füllen des nächsten Programmierblocks 714, welcher der fünften Zone 4 zugeordnet ist, benötigt werden, können die neu empfangenen Zonenanhangbefehle 712, die der fünften Zone 4 zugeordnet sind, in dem temporären Block oder Puffer gespeichert werden, bis genügend Zonenanhangbefehle 712 empfangen werden, um die Programmierblockgröße zu erfüllen.
  • Das Aggregieren der Daten der Zonenanhangbefehle 712 durch die Zonen-ID, die den Zonenanhangbefehlen 712 zugeordnet ist, ermöglicht eine verschachtelte Datenübertragung, die mehrere Kanäle 716 parallel verwendet, da jede durch eine Zonen-ID identifizierte Zone einen anderen Kanal 716 verwendet, um die Daten zu programmieren. Da mehrere Kanäle 716 parallel verwendet werden können, entfällt ein Engpass der Speichervorrichtung 704 im Anhangschreibpuffer 708, da die Speichervorrichtung 704 nicht festgefahren ist nur wenige Zonen zu bedienen, die große Datenübertragungen aufweisen, die den Anhangschreibpuffer 708 vollständig ausfüllen.
  • 8 veranschaulicht verschiedene Tabellen 820, 830, 840, die beim Implementieren ZNS verschachtelter Datenübertragung gemäß verschiedenen Ausführungsformen verwendet werden. Die Tabellen 820, 830, 840 können mit dem Speichersystem 700 von 7A-7B verwendet werden. Somit wird auf die Gesichtspunkte von 7A-7B in der Beschreibung von 8 Bezug genommen. Die Tabellen 820, 830, 840 können jeweils in der Steuerung 710 gespeichert und von dieser verwaltet werden. Die Steuerung 710 kann eine oder mehrere der Tabellen 820, 830, 840 verwenden, wenn jeder Programmierblock 714 bereit ist, programmiert zu werden und/oder wenn jeder Zonenanhangbefehl 712 von der Hostvorrichtung 702 empfangen oder abgerufen wird. Die Steuerung 710 kann eine oder mehrere der Tabellen 820, 830, 840 kollektiv oder einzeln verwenden.
  • Die erste gezeigte Tabelle ist eine Zonen-ID-zu-Block-Abbildungstabelle 820. Die Zonen-ID-zu-Block-Abbildungstabelle 820 verfolgt eine Zonen-ID einer bestimmten Zone zu dem spezifischen Kanal, Chip und Blöcken, die der Zone zugeordnet sind. Die Steuerung 710 verwendet die Zonen-ID-zu-Block-Abbildungstabelle 820, um nachzuschlagen, welche Zone der Zonen-ID jedes Zonenanhangbefehls 712 zugeordnet ist, und um dann zu bestimmen, welcher Kanal, welcher Chip und welche Blöcke der identifizierten Zone zugeordnet sind. Der Block kann durch eine Start-LBA des Blocks identifiziert werden.
  • Wenn zum Beispiel der erste Zonenanhangbefehl 712a abgerufen wird und eine Zonen-ID von 0 aufweist, verwendet die Steuerung 710 die Zonen-ID-zu-Block-Abbildungstabelle 820, um nachzuschlagen, welche Zone der Zonen-ID 0 zugeordnet ist. Die Zonen-ID-zu-Block-Abbildungstabelle 820 zeigt an, dass die erste Zone 0 eine Zonen-ID von 0 aufweist, die dem ersten Kanal 0 716a, einem vierten Chip 3 718a auf dem ersten Kanal 0 und dem 56. Block 55 des vierten Chips 3 718a zugeordnet ist. In ähnlicher Art und Weise verwendet die Steuerung 710, wenn der siebte Zonenanhangbefehl 712g abgerufen wird und eine Zonen-ID von 2 aufweist, die Zonen-ID-zu-Block-Abbildungstabelle 820, um nachzuschlagen, welche Zone der Zonen-ID 2 zugeordnet ist. Die Zonen-ID-zu-Block-Abbildungstabelle 820 zeigt an, dass die dritte Zone 2 eine Zonen-ID von 2 aufweist, die dem zweiten Kanal 1 716b, einem fünften Chip 4 718b auf dem zweiten Kanal 1 716b und dem 121. Block 120 des fünften Chips 4 718b zugeordnet ist.
  • Die zweite angezeigte Tabelle ist eine Zonen-ID-zu-aktive-Ressourcennummer-Tabelle 830. Da die Speichervorrichtung 704 eine begrenzte Anzahl aktiver Zonen im System unterstützt (z. B. 4 K), ist die Speichervorrichtung 704 in der Lage, viele Parameter pro aktiver Zone sowie globale Parameter zu pflegen. Globale Parameter können die Gesamtzahl aktiver Zonen und die Anzahl von Blöcken einschließen, die zu einem Zeitpunkt im offenen Zustand sein dürfen (d. h. beschrieben werden können), was als die Anzahl aktiver Ressourcen bezeichnet werden kann. Nicht alle Blöcke können beschrieben werden, da einige Blöcke geschlossen sind (z. B. Blöcke, die derzeit eine maximale Kapazität von Daten speichern). Geschlossene Blöcke können noch gelesen werden, haben aber keine Kapazität mehr, beschrieben zu werden, bis sie gelöscht werden. Wenn eine Zone geöffnet wird und/oder aktiv wird, ordnet die Speichervorrichtung 704 der neu geöffneten Zone einen oder mehrere offene Blöcke zu (z. B. leere Blöcke). Somit ist die aktive Ressourcennummer die Nummer eines offenen Blocks, der jeder Zonen-ID zugeordnet ist. Die Steuerung 710 verwendet die Zonen-ID-zu-aktive-Ressourcennummer-Tabelle 830, um nachzuschlagen, welche aktive Ressource oder welcher offene Block jeder Zonen-ID zugeordnet ist. Zum Beispiel ist die aktive Ressourcennummer, die der ersten Zone 0 mit der Zonen-ID von 0 zugeordnet ist, die aktive Ressourcennummer 4 oder der vierte offene Block aus der Anzahl aller offenen Blöcke.
  • Die dritte angezeigte Tabelle ist eine aktive-Ressource-zu-LBA-Versatz-Tabelle 840. Die Steuerung 710 verwendet die aktive-Ressource-zu-LBA-Versatz-Tabelle 840, um einen LBA-Versatz oder die nächste LBA, in die geschrieben werden soll, innerhalb des Blocks oder aus der aktiven Ressourcennummer, die einer bestimmten Zone zugeordnet ist, zu bestimmen. Da Blöcke im Allgemeinen nur durch die Start-LBA des Blocks identifiziert werden, identifiziert der LBA-Versatz in einem ZNS-System den genauen Ort, an dem die Daten innerhalb des Blocks gespeichert werden sollen. Zum Beispiel weist die erste Zone 0 mit einer aktiven Ressourcennummer 4 einen LBA-Versatz von 96 auf. Somit sollten die Daten des ersten Programmierblocks 714a in die 96. LBA des vierten Blocks (d. h. Block 55) geschrieben werden, welcher der ersten Zone 0 zugeordnet ist.
  • Die Steuerung 710 kann die Zonen-ID-zu-Block-Abbildungstabelle 820, die Zonen-ID-zu-aktive-Ressourcennummer-Tabelle 830 und die aktive-Ressource-zu-LBA-Versatz-Tabelle 840 kollektiv verwenden. Zum Beispiel kann die Steuerung 710 zuerst die Zonen-ID-zu-Block-Abbildungstabelle 820 verwenden, um den spezifischen Kanal, den Chip und die Blöcke zu identifizieren, die einer Zone zugeordnet sind, dann die Zonen-ID-zu-aktive-Ressourcennummer-Tabelle 830 verwenden, um die letzte aktive Ressourcennummer der Zone zu bestimmen, und dann die aktive-Ressource-zu-LBA-Versatz-Tabelle 840 verwenden, um die nächste LBA zu bestimmen, in die innerhalb der letzten aktiven Ressource des Blocks geschrieben werden sollte. Die Tabellen 820, 830, 840 können jedes Mal verwendet werden, wenn ein Zonenanhangbefehl 712 empfangen oder abgerufen wird, sowie jedes Mal, wenn ein Programmierblock gesendet wird, um programmiert zu werden. Darüber hinaus können die Tabellen 820, 830, 840 beliebig oft aktualisiert werden. Zum Beispiel kann jedes Mal, wenn ein Programmierblock programmiert wird, die aktive-Ressource-zu-LBA-Versatz-Tabelle 840 aktualisiert werden, um den neuen LBA-Versatz widerzuspiegeln.
  • Durch Verschachteln der Datenübertragung von Zonenanhangbefehlen in Datenblöcken, die einer Seitengröße äquivalent sind, anstelle eines ganzen Blocks, wird eine Hochleistungsspeichervorrichtungsausnutzung erreicht, ohne die Schreib-Cache-Puffergröße zu erhöhen. Darüber hinaus kann die Speichervorrichtung durch Klassifizieren und Aggregieren der Datenblöcke nach Zonen-ID mehrere Kanäle parallel verwenden, wenn Daten programmiert werden, da unterschiedliche Zonen unterschiedliche Kanäle verwenden, um Daten zu programmieren. Da mehrere Kanäle parallel verwendet werden können, entfällt ein Engpass der Speichervorrichtung im Anhangschreibpuffer, da die Speichervorrichtung nicht festgefahren ist nur wenige Zonen zu bedienen, die große Datenübertragungen aufweisen, die den Anhangschreibpuffer vollständig ausfüllen.
  • In einer Ausführungsform weist eine Datenspeichervorrichtung eine Speichervorrichtung mit einer Vielzahl von Speicherchips, einer Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, und eine Steuerung, die mit der Speichervorrichtung gekoppelt ist, auf. Die Steuerung ist eingerichtet, um eine Vielzahl von Zonenanhangbefehlen zu empfangen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, Daten von einer Hostvorrichtung für jeden Zonenanhangbefehl abzurufen, die abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, zu aggregieren, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden, und wenn die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreichen, Schreiben der aggregierten Daten in die Speichervorrichtung unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen.
  • Die vorbestimmte Programmierblockgröße ist gleich einer Seitengröße. Die Vielzahl von Speicherchips weist eine Vielzahl von Blöcken auf, die der Vielzahl von Zonen zugeordnet sind. Jede Zone verwendet einen separaten Kanal der Vielzahl von Kanälen, um auf die Vielzahl von Blöcken zuzugreifen, die jeder Zone zugeordnet sind. Die Steuerung ist weiterhin eingerichtet, um eine Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind, zu verwalten und eine Abbildung von Zonenidentifikationen auf aktive Ressourcennummern zu verwalten. Die Steuerung ist weiterhin eingerichtet, um eine Abbildung logischer Startblockadressen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind, zu verwalten. Die Steuerung ist weiterhin eingerichtet, um die aggregierten Daten für jede Zone in einen temporären Block in einem Speicherchip der Vielzahl von Speicherchips zu schreiben, wenn die aggregierten Daten die vorbestimmte Programmierblockgröße nicht erreichen. Die Steuerung ist weiterhin eingerichtet, um zusätzliche Daten mit den aggregierten Daten, die in den temporären Block geschrieben werden, zu aggregieren, um die vorbestimmte Programmierblockgröße zu erreichen.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung eine Schnittstelle, die mit einer Hostvorrichtung gekoppelt ist, eine Speichervorrichtung mit einer Vielzahl von Speicherchips, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet sind, eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, und eine Steuerung, die mit der Speichervorrichtung und der Schnittstelle gekoppelt ist, wobei die Steuerung einen Anhangschreibpuffer aufweist, auf. Die Steuerung ist eingerichtet, um erste Zonenanhangbefehle zu empfangen, die einer ersten Zone der Vielzahl von Zonen zugeordnet sind, zweite Zonenanhangbefehle zu empfangen, die einer zweiten Zone der Vielzahl von Zonen zugeordnet sind, einen oder mehrere erster Blöcke von ersten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein erster Programmierblock auf eine vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist, gleichzeitig einen oder mehrere zweiter Blöcke von zweiten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein zweiter Programmierblock auf die vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist, den ersten Programmierblock in einen ersten Block der Vielzahl von Blöcken zu schreiben, die der ersten Zone zugeordnet sind, unter Verwendung eines ersten Kanals der Vielzahl von Kanälen, und den zweiten Programmierblock in einen zweiten Block der Vielzahl von Blöcken zu schreiben, die der zweiten Zone zugeordnet sind, unter Verwendung eines zweiten Kanals der Vielzahl von Kanälen.
  • Die Steuerung ist weiterhin eingerichtet, um einen oder mehrere zweite Blöcke der ersten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein dritter Programmierblock auf die vorbestimmte Programmierblockgröße in dem Anfügungsschreibpuffer gefüllt ist. Der eine oder die mehreren zweiten Blöcke der ersten Zonenanhangbefehlsdaten werden aggregiert, nachdem der erste Programmierblock aus dem Anhangschreibpuffer freigegeben wurde oder wenn keine weiteren ersten Zonenanhangbefehlsdaten zum Abrufen verfügbar sind. Die vorbestimmte Programmierblockgröße ist gleich einer Seitengröße oder etwa 96 K. Der erste Kanal und der zweite Kanal werden parallel genutzt. Die Steuerung ist weiterhin eingerichtet, um empfangenen Zonenanhangbefehlen eine Zonenidentifikation zuzuordnen. Die Steuerung ist weiterhin eingerichtet, um eine Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind, zu verwalten. Eine maximale Anzahl von Zonenanhangbefehlen, die parallel durch den Anhangschreibpuffer bedient werden, ist gleich einer Größe des Anhangschreibpuffers geteilt durch eine Seitengröße.
  • Die Steuerung ist weiterhin eingerichtet, um dritte Zonenanhangbefehle zu empfangen, die einer dritten Zone der Vielzahl von Zonen zugeordnet sind, einen oder mehrere erster Blöcke von dritten Zonenanhangbefehlsdaten als einen dritten Programmierblock in dem Anhangschreibpuffer abzurufen und zu aggregieren, und den dritten Programmierblock in einen temporären Schreibpuffer zu schreiben, wenn die aggregierten Daten die vorbestimmte Programmierblockgröße nicht erreichen. Die Steuerung ist weiterhin eingerichtet, um vierte Zonenanhangbefehle, die der dritten Zone zugeordnet sind, zu empfangen, einen oder mehrere erster Blöcke von vierten Zonenanhangbefehlsdaten als einen vierten Programmierblock in dem Anhangschreibpuffer abzurufen und zu aggregieren, den dritten Programmierblock mit dem vierten Programmierblock zu aggregieren, um die vorbestimmte Programmierblockgröße zu erreichen, und den aggregierten dritten und vierten Programmierblock in einen dritten Block der Vielzahl von Blöcken zu schreiben, die der dritten Zone zugeordnet sind, unter Verwendung eines dritten Kanals der Vielzahl von Kanälen. Die Steuerung ist weiterhin eingerichtet zum: Freigeben des ersten Programmierblocks aus dem Schreibanhangpuffer, nach dem Schreiben des ersten Programmierblocks in den ersten Block, und Freigeben des zweiten Programmierblocks aus dem Schreibanhangpuffer, nach dem Schreiben des zweiten Programmierblocks in den zweiten Block.
  • Die Steuerung ist weiterhin eingerichtet, um dritte Zonenanhangbefehle zu empfangen, die einer dritten Zone der Vielzahl von Zonen zugeordnet sind, einen oder mehrere erster Blöcke von dritten Zonenanhangbefehlsdaten als einen dritten Programmierblock in dem Anhangschreibpuffer abzurufen und zu aggregieren, und den dritten Programmierblock in einen temporären Schreibpuffer zu schreiben, wenn die aggregierten Daten die vorbestimmte Programmierblockgröße nicht erreichen. Die Steuerung ist weiterhin eingerichtet, um vierte Zonenanhangbefehle, die der dritten Zone zugeordnet sind, zu empfangen, einen oder mehrere erster Blöcke von vierten Zonenanhangbefehlsdaten als einen vierten Programmierblock in dem Anhangschreibpuffer abzurufen und zu aggregieren, den dritten Programmierblock mit dem vierten Programmierblock zu aggregieren, um die vorbestimmte Programmierblockgröße zu erreichen, und den aggregierten dritten und vierten Programmierblock in einen dritten Block der Vielzahl von Blöcken zu schreiben, die der dritten Zone zugeordnet sind, unter Verwendung eines dritten Kanals der Vielzahl von Kanälen.
  • In einer anderen Ausführungsform weist eine Datenspeichervorrichtung eine Speichervorrichtung mit einer Vielzahl von Speicherchips, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet sind, eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist, Mittel zum Empfangen einer Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert, Mittel zum Abrufen von Daten aus einer Hostvorrichtung für jeden Zonenanhangbefehl, Mittel zum Aggregieren der abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden, Mittel zum Schreiben der aggregierten Daten in die Speichervorrichtung, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen, und Mittel zum Schreiben der aggregierten Daten in einen temporären Block eines Speicherchips der Vielzahl von Speicherchips, wenn die aggregierten Daten für jede Zone die vorbestimmte Programmierblockgröße nicht erreichen, auf.
  • Die vorbestimmte Programmierblockgröße beträgt etwa 96 K. Jede Zone nutzt einen separaten Kanal der Vielzahl von Kanälen. Die Datenspeichervorrichtung weist weiterhin Mittel zum Verwalten einer Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken auf, die der Vielzahl von Zonen zugeordnet sind. Die Datenspeichervorrichtung weist weiterhin Mittel zum Verwalten einer Abbildung von logischen Startblockadressen auf die Vielzahl von Blöcken auf, die der Vielzahl von Zonen zugeordnet sind, und Mittel zum Verwalten einer Abbildung von Zonenidentifikationen auf aktive Ressourcennummern. Die Datenspeichervorrichtung weist weiterhin Mittel zum Freigeben der aggregierten Daten aus dem Anhangschreibpuffer auf, sobald die aggregierten Daten in die Speichervorrichtung geschrieben wurden. Die Datenspeichervorrichtung weist weiterhin Mittel zum Aggregieren zusätzlicher Daten mit den aggregierten Daten auf, die in den temporären Block geschrieben werden, um die vorbestimmte Programmierblockgröße zu erreichen.
  • 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 Umfang davon abzuweichen, und der Umfang 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 63/114397 [0001]

Claims (20)

  1. Datenspeichervorrichtung, die Folgendes aufweist: eine Speichervorrichtung mit einer Vielzahl von Speicherchips; eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist; und eine Steuerung, die mit der Speichervorrichtung gekoppelt ist, wobei die Steuerung eingerichtet ist zum: Empfangen einer Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert; Abrufen von Daten von einer Hostvorrichtung für jeden Zonenanhangbefehl; Aggregieren der abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden; und nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, Schreiben der aggregierten Daten in die Speichervorrichtung unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen.
  2. Datenspeichervorrichtung gemäß Anspruch 1, wobei die vorbestimmte Programmierblockgröße gleich einer Seitengröße ist.
  3. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die der Vielzahl von Zonen zugeordnet sind, und wobei jede Zone einen separaten Kanal der Vielzahl von Kanäle verwendet, um auf die Vielzahl von Blöcken zuzugreifen, die jeder Zone zugeordnet sind.
  4. Datenspeichervorrichtung gemäß Anspruch 3, wobei die Steuerung weiterhin eingerichtet ist zum: Verwalten einer Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind; und Verwalten einer Abbildung von Zonenidentifikationen auf aktive Ressourcennummern.
  5. Datenspeichervorrichtung gemäß Anspruch 3, wobei die Steuerung weiterhin eingerichtet ist, um eine Abbildung von logischen Startblockadressen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind, zu verwalten.
  6. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um die aggregierten Daten für jede Zone in einen temporären Block in einem Speicherchip der Vielzahl von Speicherchips zu schreiben, wenn die aggregierten Daten die vorbestimmte Programmierblockgröße nicht erreichen.
  7. Datenspeichervorrichtung gemäß Anspruch 6, wobei die Steuerung weiterhin eingerichtet ist, um zusätzliche Daten mit den aggregierten Daten, die in den temporären Block geschrieben werden, zu aggregieren, um die vorbestimmte Programmierblockgröße zu erreichen.
  8. Datenspeichervorrichtung, die Folgendes aufweist: eine Schnittstelle, die mit einer Hostvorrichtung gekoppelt ist; eine Speichervorrichtung mit einer Vielzahl von Speicherchips, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet ist; eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist; und eine Steuerung, die mit der Speichervorrichtung und der Schnittstelle gekoppelt ist, wobei die Steuerung einen Anhangschreibpuffer aufweist, wobei die Steuerung eingerichtet ist zum: Empfangen von ersten Zonenanhangbefehlen, die einer ersten Zone der Vielzahl von Zonen zugeordnet sind; Empfangen von zweiten Zonenanhangbefehlen, die einer zweiten Zone der Vielzahl von Zonen zugeordnet sind; Abrufen und Aggregieren eines oder mehrerer erster Blöcke von ersten Zonenanhangbefehlsdaten, bis ein erster Programmierblock auf eine vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist; gleichzeitigen Abrufen und Aggregieren eines oder mehrerer zweiter Blöcke von zweiten Zonenanhangbefehlsdaten, bis ein zweiter Programmierblock auf die vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist; Schreiben des ersten Programmierblocks in einen ersten Block der Vielzahl von Blöcken, die der ersten Zone zugeordnet sind, unter Verwendung eines ersten Kanals der Vielzahl von Kanälen; und Schreiben des zweiten Programmierblocks in einen zweiten Block der Vielzahl von Blöcken, die der zweiten Zone zugeordnet sind, unter Verwendung eines zweiten Kanals der Vielzahl von Kanälen.
  9. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung weiterhin eingerichtet ist, um einen oder mehrere zweite Blöcke der ersten Zonenanhangbefehlsdaten abzurufen und zu aggregieren, bis ein dritter Programmierblock auf die vorbestimmte Programmierblockgröße in dem Anhangschreibpuffer gefüllt ist.
  10. Datenspeichervorrichtung gemäß Anspruch 8, wobei der eine oder die mehreren zweiten Blöcke der ersten Zonenanhangbefehlsdaten aggregiert werden, nachdem der erste Programmierblock aus dem Anhangschreibpuffer freigegeben wurde oder wenn keine weiteren ersten Zonenanhangbefehlsdaten zum Abrufen verfügbar sind, und wobei eine maximale Anzahl von Zonenanhangbefehlen, die parallel durch den Anhangschreibpuffer bedient werden, gleich einer Größe des Anhangschreibpuffers geteilt durch eine Seitengröße ist.
  11. Datenspeichervorrichtung gemäß Anspruch 8, wobei die vorbestimmte Programmierblockgröße gleich einer Seitengröße oder etwa 96 K ist, und wobei der erste Kanal und der zweite Kanal parallel verwendet werden.
  12. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung weiterhin eingerichtet ist zum: Zuordnen einer Zonenidentifikation zu empfangenen Zonenanhangbefehlen; und Verwalten einer Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind.
  13. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung weiterhin eingerichtet ist zum: Empfangen von dritten Zonenanhangbefehlen, die einer dritten Zone der Vielzahl von Zonen zugeordnet sind; Abrufen und Aggregieren eines oder mehrerer erster Blöcke von dritten Zonenanhangbefehlsdaten als einen dritten Programmierblock in dem Anhangschreibpuffer; und Schreiben des dritten Programmierblocks in einen temporären Schreibpuffer, wenn die aggregierten Daten die vorbestimmte Programmierblockgröße nicht erreichen.
  14. Datenspeichervorrichtung gemäß Anspruch 13, wobei die Steuerung weiterhin eingerichtet ist zum: Empfangen von vierten Zonenanhangbefehlen, die der dritten Zone zugeordnet sind; Abrufen und Aggregieren eines oder mehrerer erster Blöcke von vierten Zonenanhangbefehlsdaten als einen vierten Programmierblock in dem Anhangschreibpuffer; Aggregieren des dritten Programmierblocks mit dem vierten Programmierblock, um die vorbestimmte Programmierblockgröße zu erreichen; und Schreiben des aggregierten dritten und vierten Programmierblocks in einen dritten Block der Vielzahl von Blöcken, die der dritten Zone zugeordnet sind, unter Verwendung eines dritten Kanals der Vielzahl von Kanälen.
  15. Datenspeichervorrichtung gemäß Anspruch 8, wobei die Steuerung weiterhin eingerichtet ist zum: Freigeben des ersten Programmierblocks aus dem Schreibanhangpuffer, nach dem Schreiben des ersten Programmierblocks in den ersten Block; und Freigeben des zweiten Programmierblocks aus dem Schreibanhangpuffer, nach dem Schreiben des zweiten Programmierblocks in den zweiten Block.
  16. Datenspeichervorrichtung, die Folgendes aufweist: eine Speichervorrichtung mit einer Vielzahl von Speicherchips, wobei die Vielzahl von Speicherchips eine Vielzahl von Blöcken aufweist, die einer Vielzahl von Zonen zugeordnet ist; eine Vielzahl von Kanälen, wobei jeder Kanal mit einem oder mehreren Speicherchips der Vielzahl von Speicherchips gekoppelt ist; Mittel zum Empfangen einer Vielzahl von Zonenanhangbefehlen, wobei jeder Zonenanhangbefehl einer Zonenidentifikation zugeordnet ist, die eine Zone einer Vielzahl von Zonen identifiziert; Mittel zum Abrufen von Daten aus einer Hostvorrichtung für jeden Zonenanhangbefehl; Mittel zum Aggregieren der abgerufenen Daten durch die Zonenidentifikation, die jedem Zonenanhangbefehl in einem Anhangschreibpuffer zugeordnet ist, wobei die abgerufenen Daten in separate Programmierblöcke für jede identifizierte Zone aggregiert werden; Mittel zum Schreiben der aggregierten Daten in die Speichervorrichtung, nachdem die aggregierten Daten für jede Zone eine vorbestimmte Programmierblockgröße erreicht haben, unter paralleler Verwendung eines oder mehrerer Kanäle der Vielzahl von Kanälen; und Mittel zum Schreiben der aggregierten Daten in einen temporären Block eines Speicherchips der Vielzahl von Speicherchips, wenn die aggregierten Daten für jede Zone die vorbestimmte Programmierblockgröße nicht erreichen.
  17. Datenspeichervorrichtung gemäß Anspruch 16, wobei die vorbestimmte Programmierblockgröße etwa 96 K beträgt und wobei jede Zone einen separaten Kanal der Vielzahl von Kanälen verwendet.
  18. Datenspeichervorrichtung gemäß Anspruch 16, die weiterhin Mittel zum Verwalten einer Abbildung von Zonenidentifikationen auf die Vielzahl von Blöcken aufweist, die der Vielzahl von Zonen zugeordnet sind.
  19. Datenspeichervorrichtung gemäß Anspruch 16, die weiterhin Folgendes aufweist: Mittel zum Verwalten einer Abbildung von logischen Startblockadressen auf die Vielzahl von Blöcken, die der Vielzahl von Zonen zugeordnet sind; und Mittel zum Verwalten einer Abbildung von Zonenidentifikationen auf aktive Ressourcennummern.
  20. Datenspeichervorrichtung gemäß Anspruch 16, die weiterhin Folgendes aufweist: Mittel zum Freigeben der aggregierten Daten aus dem Anhangschreibpuffer, sobald die aggregierten Daten in die Speichervorrichtung geschrieben wurden; und Mittel zum Aggregieren zusätzlicher Daten mit den aggregierten Daten, die in den temporären Block geschrieben werden, um die vorbestimmte Programmierblockgröße zu erreichen.
DE102021115626.2A 2020-11-16 2021-06-16 Datenaggregation in zns-laufwerk Pending DE102021115626A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063114397P 2020-11-16 2020-11-16
US63/114,397 2020-11-16
US17/184,154 US11599304B2 (en) 2020-11-16 2021-02-24 Data aggregation in ZNS drive
US17/184,154 2021-02-24

Publications (1)

Publication Number Publication Date
DE102021115626A1 true DE102021115626A1 (de) 2022-05-19

Family

ID=81345653

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021115626.2A Pending DE102021115626A1 (de) 2020-11-16 2021-06-16 Datenaggregation in zns-laufwerk

Country Status (4)

Country Link
US (1) US11599304B2 (de)
KR (1) KR102663302B1 (de)
CN (1) CN114510434A (de)
DE (1) DE102021115626A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550481B2 (en) * 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
KR20200106739A (ko) * 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20220104511A (ko) * 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US20230266898A1 (en) * 2022-02-24 2023-08-24 Micron Technology, Inc. Host Defined Zone Group Configuration At A Memory Sub-System
US20230266897A1 (en) * 2022-02-24 2023-08-24 Micron Technology, Inc. Dynamic zone group configuration at a memory sub-system
KR20230135357A (ko) * 2022-03-16 2023-09-25 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US11934657B2 (en) * 2022-08-16 2024-03-19 Micron Technology, Inc. Open block management in memory devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
JP6523193B2 (ja) * 2016-03-08 2019-05-29 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
KR20220014212A (ko) * 2020-07-28 2022-02-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11436083B2 (en) * 2020-09-04 2022-09-06 Western Digital Technologies, Inc. Data address management in non-volatile memory
KR20220050407A (ko) * 2020-10-16 2022-04-25 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법

Also Published As

Publication number Publication date
US20220156000A1 (en) 2022-05-19
CN114510434A (zh) 2022-05-17
KR20220066814A (ko) 2022-05-24
US11599304B2 (en) 2023-03-07
KR102663302B1 (ko) 2024-05-03

Similar Documents

Publication Publication Date Title
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102009026178A1 (de) Mehrstufiger Controller mit intelligentem Speicher-Transfer-Manager zum Verschachteln mehrfacher Ein-Chip-Flash-Speichereinheiten
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE102021114458A1 (de) Befehlsentleerung unter verwendung des host-speicherpuffers
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE112020004963T5 (de) Datenintegritätsschutz für zns-anforderungen
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE102021115360A1 (de) Parallele boot-ausführung von speichervorrichtungen
CN113744783A (zh) 分区名称空间(zns)驱动器中的写入数据传送调度
DE112020005096T5 (de) Gewichtung von lesebefehlen an zonen in speicherungsvorrichtungen
DE102017128938A1 (de) Überlappungs-Schreibsysteme für nichtflüchtige Kreuzpunktspeichervorrichtungen

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE