DE102019133167A1 - Optimierte Handhabung mehrerer Kopien im Speichermanagment - Google Patents

Optimierte Handhabung mehrerer Kopien im Speichermanagment Download PDF

Info

Publication number
DE102019133167A1
DE102019133167A1 DE102019133167.6A DE102019133167A DE102019133167A1 DE 102019133167 A1 DE102019133167 A1 DE 102019133167A1 DE 102019133167 A DE102019133167 A DE 102019133167A DE 102019133167 A1 DE102019133167 A1 DE 102019133167A1
Authority
DE
Germany
Prior art keywords
data
memory
cache
logical
controller
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
DE102019133167.6A
Other languages
English (en)
Inventor
Alexander Bazarsky
Tomer Eliash
Yuval Grossman
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
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 DE102019133167A1 publication Critical patent/DE102019133167A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • 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/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/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
    • 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/068Hybrid storage device
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Verschieben von Daten in einer Speichervorrichtung und das Aktualisieren einer komprimierten logisch-physischen Tabelle (L2P-Tabelle) als Reaktion darauf, ohne die Cache-Einträge der L2P-Tabelle ungültig zu machen. Nach dem Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, zu einem zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, wird ein Versionsindikator eines Cache-Eintrags, der der ersten physischen Adresse in der L2P-Tabelle entspricht, erhöht. Ein oder mehrere Cache-Einträge werden dann der L2P-Tabelle hinzugefügt, die die verschobenen Daten dem zweiten physischen Block zuordnet, ohne den Cache-Eintrag entsprechend der ersten physischen Adresse ungültig zu machen. Wenn ein Befehl zum Lesen oder Schreiben der verschobenen Daten empfangen wird, durchsucht die Speichervorrichtung die L2P-Tabelle und liest die Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock.

Description

  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf Speichervorrichtungen, wie Solid-State-Laufwerke (SSDs).
  • Beschreibung des Stands der Technik
  • SSDs können als Speichervorrichtungen verwendet werden, um eine bessere Lese- und Vorrichtungsleistung zu erreichen. So können SSDs beispielsweise eine geringere Latenz aufweisen als Festplatten (HDDs), insbesondere bei Direktlese- und -schreibvorgängen. Dies kann einen höheren Durchsatz für Direktlese- und -schreibvorgänge auf eine SSD im Vergleich zu einer Festplatte ermöglichen. Darüber hinaus können SSDs mehrere, parallele Datenkanäle zum Lesen und Schreiben auf Speichervorrichtungen verwenden, was zu hohen sequentiellen Lese- und Schreibgeschwindigkeiten führen kann.
  • Um eine höhere Vorrichtungsleistung zu erreichen, kann es jedoch erforderlich sein, komplexe Verwaltungsschemata und -operationen zu implementieren. Eine solche Verwaltungsoperation, die zur Erhöhung der Vorrichtungsleistung verwendet wird, weist das Verschieben von Daten zu und von Speicherblöcken in einer Flash-Speichervorrichtung auf. Das Verschieben von Daten kann vorteilhaft sein, beispielsweise zur Verbesserung des Verschleißniveaus und der Datenrückgewinnung, und kann Datenverluste vermeiden, wie bei Ausfällen von schwachen und harten Speichern. Die Datenverschiebung kann jedoch zu Leistungseinbußen führen.
  • Um diese komplexen Verwaltungsoperationen zu unterstützen, können Verwaltungstabellen verwendet werden, wie logisch-physische Tabellen. Logisch-physische Tabellen (L2P-Tabellen) sind Tabellen, die logisch-physische Adressabbildungen speichern, um eine Position von Benutzerdaten in einer physischen Einheit, wie einer Flash-Speichervorrichtung, zu identifizieren. Bei jeder Datenverschiebung können Cache-Einträge, die den verschobenen Daten in den L2P-Tabellen entsprechen, ungültig gemacht werden, und es können neue Einträge hinzugefügt werden. Als Reaktion darauf können Cache-Kohärenzfehler auftreten und die L2P-Tabelle kann an Größe zunehmen, was die Leseleistung reduziert und die Host-Operationen stört.
  • Daher ist es notwendig, ein Verfahren zum Betreiben einer Speichervorrichtung mit erhöhter Leseleistung bereitzustellen und gleichzeitig Cache-Kohärenzausfälle und Störungen der Host-Operationen zu minimieren.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Verschieben von Daten in einer Speichervorrichtung und das Aktualisieren einer komprimierten logisch-physischen Tabelle (L2P-Tabelle) als Reaktion darauf, ohne die Cache-Einträge der L2P-Tabelle ungültig zu machen. Nach dem Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, zu einem zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, wird ein Versionsindikator eines Cache-Eintrags, der der ersten physischen Adresse in der L2P-Tabelle entspricht, erhöht. Ein oder mehrere Cache-Einträge werden dann der L2P-Tabelle hinzugefügt, die die verschobenen Daten dem zweiten physischen Block zuordnet, ohne den Cache-Eintrag entsprechend der ersten physischen Adresse ungültig zu machen. Wenn ein Befehl zum Lesen oder Schreiben der verschobenen Daten empfangen wird, durchsucht die Speichervorrichtung die L2P-Tabelle und liest die Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock.
  • In einer Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung mit einer Vielzahl von Speicherblöcken das Verschieben von in einem ersten Speicherblock gespeicherten Daten in einen zweiten Speicherblock, das Empfangen einer Anforderung zum Lesen der Daten, das Lesen einer logischen in eine physische Tabelle, um zu bestimmen, in welchem Speicherblock aus der Vielzahl von Speicherblöcken die Daten gespeichert sind, und das Lesen der Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock auf. Ein Controller der Speichervorrichtung ist in der Lage, den ersten Speicherblock und den zweiten Speicherblock nach dem Verschieben der Daten zu lesen.
  • In einer anderen Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung das Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, zu einem zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, auf. Die erste physische Adresse wird in einem ersten Cache-Eintrag in einer komprimierten logisch-physischen Tabelle protokolliert. Das Verfahren weist ferner das Erhöhen eines Versionsindikators des ersten Cache-Eintrags in der komprimierten logisch-physischen Tabelle, das Hinzufügen eines oder mehrerer aktualisierter Cache-Einträge zu der komprimierten logisch-physischen Tabelle als Reaktion auf das Verschieben der Daten zu der zweiten physischen Adresse, das Durchsuchen der komprimierten logisch-physischen Tabelle, um zu bestimmen, wo sich die Daten befinden, das Lesen des ersten Cache-Eintrags vor dem Lesen der einen oder der mehreren aktualisierten Cache-Einträge und das Lesen der Daten von der ersten physischen Adresse auf.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Vielzahl von Speicherblöcken auf. Jeder Speicherblock der Vielzahl von Speicherblöcken weist Flash-Speichereinheiten auf. Die Speichervorrichtung weist ferner einen Controller auf, der mit der Vielzahl von Speicherblöcken gekoppelt ist. Der Controller ist konfiguriert, um eine komprimierte logisch-physische Tabelle zu speichern. Die komprimierte logisch-physische Tabelle protokolliert den Speicherort der Daten zu einem oder mehreren der Vielzahl von Speicherblöcken. Der Controller ist ferner konfiguriert, um ein Array von Gültigkeitszählern anhand von Gültigkeitszählern zu sortieren. Der Gültigkeitszähler ist eine Anzahl von gültigen Flash-Speichereinheiten in einem Speicherblock. Der Controller ist ferner konfiguriert, um einen oder mehrere Speicherblöcke aus der Vielzahl von zu löschenden Speicherblöcken zu priorisieren. Speicherblöcke mit einem niedrigen Gültigkeitszähler werden über Speicherblöcke mit einem hohen Gültigkeitszähler priorisiert. Speicherblöcke, die nicht mit Daten in der komprimierten logisch-physischen Tabelle protokolliert werden, werden über Speicherblöcke priorisiert, die mit Daten in der komprimierten logisch-physischen Tabelle protokolliert werden. Der Controller ist ferner konfiguriert, um einen oder mehrere Speicherblöcke aus der Vielzahl von zu löschenden Speicherblöcken in der Reihenfolge der Priorität zu planen.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend dargelegten Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von 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 dargestellt sind und diese daher nicht als Einschränkung ihres Schutzumfangs anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein schematisches Blockdiagramm, das ein Speichersystem mit einer Hostvorrichtung und einer Speichervorrichtung gemäß einer Ausführungsform veranschaulicht.
    • 2 ist ein schematisches Blockdiagramm, das ein Speichersystem mit einer Hostvorrichtung und einer Speichervorrichtung gemäß einer anderen Ausführungsform veranschaulicht.
    • 3A veranschaulicht ein Verfahren zum Verschieben von Daten während Host-Direktleseoperationen gemäß einer Ausführungsform.
    • 3B veranschaulicht ein herkömmliches Verfahren zum Verschieben von Daten während Host-Direktleseoperationen zu Vergleichszwecken.
    • 4 veranschaulicht ein Flussdiagramm eines Verfahrens zum Aktualisieren eines L2P-Cache eines Controllers einer Speichervorrichtung, wenn der Controller Daten gemäß einer Ausführungsform verschiebt.
    • 5 veranschaulicht ein Flussdiagramm eines Verfahrens zum Verwenden eines L2P-Cache eines komprimierten Controllers, um Speicherblöcke zum Löschen gemäß einer Ausführungsform zu planen.
    • 6 veranschaulicht ein Flussdiagramm eines Verfahrens zum Aktualisieren einer anstehenden Aktualisierungsoperation des L2P-Cache eines Controllers einer Speichervorrichtung gemäß einer Ausführungsform.
    • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemeinsam 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 sollte jedoch verstanden werden, 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. Auch wenn Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder dem Stand der Technik erzielen können, bedeutet die Tatsache, ob durch eine bestimmte Ausführungsform ein besonderer Vorteil erzielt wird oder nicht, keine Einschränkung der Offenbarung. 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, sie werden ausdrücklich in einem oder mehreren Ansprüchen erwähnt. 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 beigefügten Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Verschieben von Daten in einer Speichervorrichtung und das Aktualisieren einer komprimierten logisch-physischen Tabelle (L2P-Tabelle) als Reaktion darauf, ohne die Cache-Einträge der L2P-Tabelle ungültig zu machen. Nach dem Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, zu einem zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, wird ein Versionsindikator eines Cache-Eintrags, der der ersten physischen Adresse in der L2P-Tabelle entspricht, erhöht. Ein oder mehrere Cache-Einträge werden dann der L2P-Tabelle hinzugefügt, die die verschobenen Daten dem zweiten physischen Block zuordnet, ohne den Cache-Eintrag entsprechend der ersten physischen Adresse ungültig zu machen. Wenn ein Befehl zum Lesen oder Schreiben der verschobenen Daten empfangen wird, durchsucht die Speichervorrichtung die L2P-Tabelle und liest die Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock.
  • 1 ist ein schematisches Blockdiagramm zur Veranschaulichung eines Speichersystems 100, in dem eine Speichervorrichtung 106 als Speichervorrichtung für die Hostvorrichtung 104 gemäß einer oder mehreren Techniken dieser Offenbarung fungieren kann. Zum Beispiel kann die Hostvorrichtung 104 zum Speichern und Abrufen von Daten nichtflüchtige Speichervorrichtungen verwenden, die in der Speichervorrichtung 106 eingeschlossen sind. In einigen Beispielen kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen enthalten, wie die Speichervorrichtung 106, die als Speicheranordnung arbeiten kann. Zum Beispiel kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen 106 einschließen, die als eine redundante Anordnung von preiswerten/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als Massenspeichervorrichtung für die Hostvorrichtung 104 fungieren.
  • Das Speichersystem 100 schließt eine Hostvorrichtung 104 ein, die Daten auf und/oder von einer oder mehreren Speichervorrichtungen, wie der Speichervorrichtung 106, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 104 über eine Schnittstelle 114 mit der Speichervorrichtung 106 kommunizieren. Die Hostvorrichtung 104 kann eine beliebige aus einer Vielzahl von Vorrichtungen aufweisen, einschließlich Computerservern, NAS-Einheiten (Network Attached Storage), Desktop-Computern, Notebook-Computern (d. h. Laptops), Beistellgeräten, Telefonhandgeräten wie sogenannten „Smartphones“, sogenannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienplayern, Videospielkonsolen, Video-Streaming-Geräten und dergleichen.
  • Wie in 1 veranschaulicht, schließt die Speichervorrichtung 106 einen Controller 108, einen nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, einen flüchtigen Speicher 112 und eine Schnittstelle 114 ein. In einigen Beispielen kann die Speichervorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 dargestellt sind. Beispielsweise kann die Speichervorrichtung 106 eine Leiterplatte (PB) einschließen, an der Komponenten der Speichervorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen enthält, die Komponenten der Speichervorrichtung 106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung 106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren schließen, ohne darauf beschränkt zu sein, 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. PCle x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Speichervorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) werden.
  • Die Schnittstelle 114 der Speichervorrichtung 106 kann einen Datenbus zum Datenaustausch mit der Hostvorrichtung 104 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 104 einschließen. Die Schnittstelle 114 kann in Übereinstimmung mit 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 PCIe, Non-Volatile Memory Express (NVMe) oder dergleichen. Die elektrische Verbindung der Schnittstelle 114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit dem Controller 108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 104 und dem Controller 108 her, sodass Daten zwischen der Hostvorrichtung 104 und dem Controller 108 ausgetauscht werden können. In einigen Beispielen kann die Speichervorrichtung 106 durch die elektrische Verbindung der Schnittstelle 114 auch Strom von der Hostvorrichtung 104 beziehen. Wie beispielsweise in 1 veranschaulicht, kann die Stromversorgung 111 über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
  • Die Speichervorrichtung 106 schließt NVM 110 ein, die eine Vielzahl von Speichervorrichtungen einschließen kann. NVM 110 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichervorrichtung von NVM 110 Daten und eine Nachricht vom Controller 108 empfangen, mit der die Speichervorrichtung zum Speichern der Daten angewiesen wird. In ähnlicher Weise kann die Speichervorrichtung von NVM 110 eine Nachricht vom Controller 108 empfangen, mit der die Speichervorrichtung zum Abrufen der Daten angewiesen wird. In einigen Beispielen kann jede der Speichervorrichtungen als eine Matrize bezeichnet werden. In einigen Beispielen kann ein einzelner physischer Chip eine Vielzahl von Matrizen (d. h. eine Vielzahl von Speichervorrichtungen) einschließen. In einigen Beispielen kann jede Speichervorrichtung zum Speichern relativ großer Datenmengen konfiguriert werden (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
  • In einigen Beispielen kann jede Speichervorrichtung von NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie Flash-Speichervorrichtungen, Phasenwechselspeicher-Vorrichtungen (PCM-Vorrichtungen), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtungen), ferroelektrischer Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen und jede andere Art von nichtflüchtigen Speichervorrichtungen.
  • NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen aufweisen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In einigen Flash-Speichervorrichtungen, wie NAND-basierten 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 kann 128KB Daten, 256KB Daten, 2MB Daten, 8MB Daten, usw. einschließen. In einigen Fällen kann jede Seite 1 Kilobyte (KB) Daten, 4KB Daten, 8KB Daten, usw. einschließen. Jede Seite kann null oder mehr Flash-Speichereinheiten (FMUs) aufweisen. In einigen Fällen kann jede FMU 1 Kilobyte (KB) Daten, 4KB Daten, 8KB Daten, usw. einschließen. Der Controller 108 kann Daten in die Flash-Speichervorrichtungen auf FMU-Ebene schreiben und Daten von diesen lesen und Daten aus diesen löschen sowie Daten aus den Flash-Speichervorrichtungen auf Blockebene löschen.
  • Die Speichervorrichtung 106 schließt eine Stromversorgung 111 ein, die eine oder mehrere Komponenten der Speichervorrichtung 106 mit Strom versorgen kann. Wenn die Stromversorgung 111 in einem Standardmodus betrieben wird, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie der Hostvorrichtung 104, bereitgestellt wird. Beispielsweise kann die Stromversorgung 111 die eine oder mehrere Komponenten mit Strom versorgen, der von der Hostvorrichtung 104 über die Schnittstelle 114 empfangen wird. Einige Beispiele für die eine oder die mehreren Energiespeicherkomponenten weisen, ohne darauf beschränkt zu sein, Kondensatoren, Superkondensatoren, Batterien und dergleichen auf. In einigen Beispielen kann die von der einen oder den mehreren Energiespeicherkomponenten gespeicherte Energiemenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Energiespeicherkomponenten sein. Das heißt, wenn die von einer oder mehreren Energiespeicherkomponenten gespeicherte Energiemenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Energiespeicherkomponenten.
  • Die Speichervorrichtung 106 schließt auch den flüchtigen Speicher 112 ein, der vom Controller 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 der Controller 108 den flüchtigen Speicher 112 als Cache verwenden. Zum Beispiel kann der Controller 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 weisen, ohne darauf beschränkt zu sein, Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen)) auf.
  • Die Speichervorrichtung 106 schließt einen Controller 108 ein, der eine oder mehrere Operationen der Speichervorrichtung 106 verwalten kann. Zum Beispiel kann der Controller 108 das Lesen von Daten von und/oder das Schreiben von Daten in NVM 110 verwalten. In einigen Ausführungsformen kann beim Empfangen durch die Speichervorrichtung 106 eines Schreibbefehls von der Hostvorrichtung 104 der Controller 108 einen Datenspeicherbefehl auslösen, um Daten in NVM 110 zu speichern und den Fortschritt des Datenspeicherbefehls zu überwachen. Der Controller 108 kann mindestens eine Betriebscharakteristik des Speichersystems 100 bestimmen und die mindestens eine Betriebscharakteristik in NVM 110 speichern.
  • 2 ist ein schematisches Blockdiagramm, das ein Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 gemäß einer anderen Ausführungsform veranschaulicht. Das Speichersystem 200 kann das Speichersystem 100 sein, das die Hostvorrichtung 104 und die Speichervorrichtung 106 aus 1 aufweist.
  • Die Speichervorrichtung 206 weist einen Controller 208 und eine oder mehrere Flash-Speichervorrichtungen 220 auf. Der Controller 208 kann der Controller 108 aus 1 sein. Die Flash-Speichervorrichtung 220 kann das NVM 110 aus 1 sein. Jede der einen oder der mehreren Flash-Speichervorrichtungen 220 kann eine Vielzahl von Blöcken einschließen; jeder Block kann eine Vielzahl von Seiten einschließen; jede Seite kann null oder mehr Flash-Verwaltungseinheiten (FMUs) einschließen; und jede FMU kann eine Vielzahl von Bytes enthalten. Wie hierin verwendet, bezieht sich eine FMU auf eine adressierbare Speichereinheit in einer Flash-Speichervorrichtung 220. Die Flash-Speichervorrichtung 220 speichert eine Master-Tabelle 222 zur logisch-physischen Adressübersetzung (L2P), die eine logische Adresse in eine physische Adresse in der Flash-Speichervorrichtung 220 umwandelt, in der Daten gespeichert sind. Die physische Adresse kann einer oder mehreren FMUs eines Speicherblocks entsprechen.
  • Während des Betriebs kann der Controller 208 einen Lesebefehl oder eine Schreibanforderung von der Hostvorrichtung 204 empfangen und bestimmen, wo die in der Schreibanforderung enthaltenen Daten gespeichert werden sollen. Der Controller 208 kann ferner bestimmen, dass Daten verschoben werden, ohne einen Befehl von der Hostvorrichtung 204 zu erhalten, um Verwaltungsoperationen auszuführen. Die Lese- und Schreibanforderungen können die Daten, eine logische Adresse und/oder eine physische Adresse einschließen. Der Controller 208 kann bestimmen, welche Flash-Speichervorrichtung der einen oder den mehreren Flash-Speichervorrichtungen 220 zum Speichern der Daten dient. Der Controller 208 speichert die Daten in einer oder mehreren Flash-Speichervorrichtungen 220 so, dass der Controller 208 die Daten später einer logischen Adresse zuordnen kann, die einer physischen Adresse der Flash-Speichervorrichtung 220 zugeordnet ist. Der Controller 208 kann dann die Master-L2P-Tabelle 222 nach dem Speichern der Daten aktualisieren. Da die Master-L2P-Tabelle 222 alle Lese-, Schreib- und Löschdaten von der Flash-Speichervorrichtung 220 verfolgt und protokolliert, kann die Master-L2P-Tabelle 222 recht groß sein, was zu mehr Zeitaufwand für das Durchlaufen der Master-L2P-Tabelle 222 führen kann.
  • Um die Zeit, die zum Durchsuchen der Master-L2P-Tabelle 222 benötigt wird, zu verkürzen, weist der Controller 208 einen L2P-Cache 224 und einen ausstehenden aktualisierten Operation-L2P-Cache (OUO) 226 auf, der im internen RAM 218 des Controllers 208 gespeichert ist. Der L2P-Cache 224 und der OUO-Cache 226 protokollieren und speichern die zuletzt gelesenen oder geschriebenen Daten in der Flash-Speichervorrichtung 220 zwischen. Da der interne RAM 218 eine begrenzte Größe aufweist, können der L2P-Cache 224 und der OUO-Cache 226 komprimiert werden, um weitere Informationen zu protokollieren. Das Komprimieren des L2P-Cache 224 und des OUO-Cache 226 ermöglicht es, dass die Caches größer werden, was zu verbesserten Trefferquoten führt. Eine komprimierte L2P-Tabelle verdichtet eine oder mehrere logische Adressen oder physische Adressen zu einem Cache-Eintrag in der Tabelle. So kann beispielsweise ein Cache-Eintrag aktuelle logische Adressen halten, die gelesen wurden, zusammen mit zukünftigen logischen Adressen, die gelesen werden können, wie sequentielle logische Adressen.
  • Tabelle 1 veranschaulicht ein Beispiel für einen komprimierten L2P-Cache 224. Tabelle 1
    Eintragsnummer Erste logische Adresse Erste physische Adresse Anzahl der gültigen gleichzeitigen Einträge Version
    1 5 1000 50
    2 200 1050 14
    3 110 1070 3
    4 500 100 100
    ... ... ... ...
    9
  • Der exemplarisch komprimierte L2P-Cache 224 aus Tabelle 1 weist eine Spalte mit der Eintragsnummer, eine Spalte mit der ersten logischen Adresse eines Bereichs, eine Spalte mit der ersten physischen Adresse eines Bereichs, eine Spalte mit der Anzahl gleichzeitiger Einträge und eine Spalte mit dem Versionsindikator auf. Physische Adressen sind den FMUs von Speicherblöcken zugeordnet. Die Anzahl der gleichzeitigen Einträge ist die Anzahl der im jeweiligen Cache-Eintrag protokollierten logischen Adressen und physischen Adressen. So werden beispielsweise im ersten Cache-Eintrag mit einer Eintragsnummer von 1 die logischen Adressen 5-55 und die physischen Adressen 1000-1050 protokolliert. Wenn Daten, die einer logischen Adresse oder einer in einem Cache-Eintrag protokollierten physischen Adresse entsprechen, verschoben werden, kann der Versionsindikator dieses Cache-Eintrags erhöht werden. Ein oder mehrere Einträge können dem komprimierten L2P-Cache 224 oder dem OUO-Cache 226 als Reaktion auf das Verschieben der Daten hinzugefügt werden. Der OUO-Cache 226 kann wie der exemplarisch komprimierte L2P-Cache 224 aus Tabelle 1 konfiguriert werden.
  • In einer Ausführungsform protokolliert der L2P-Cache 224 die zuletzt gelesenen oder geschriebenen Daten in der Flash-Speichervorrichtung 220, während der OUO-Cache 226 alle Aktualisierungen oder Änderungen an Einträgen im L2P-Cache 224 protokolliert, beispielsweise wenn der Controller 208 Daten verschiebt. Durch die Verwendung des L2P-Cache 224 und des OUO-Cache 226 können kürzlich gelesene und geschriebene Daten im L2P-Cache 224 und im OUO-Cache 226 schnell durchsucht werden, ohne dass die Master-L2P-Tabelle 222 durchsucht werden muss, was den gesamten Zeitaufwand für die Suche nach einer physischen Adresse von Daten reduziert. Die im L2P-Cache 224 und im OUO-Cache 226 protokollierten Einträge und Informationen können in die Master-L2P-Tabelle 222 geschrieben oder geleert werden, wenn Verwaltungsoperationen durchgeführt werden. Der L2P-Cache 224 und der OUO-Cache 226 können dann gelöscht werden, um neue Einträge zu protokollieren. Verwaltungsoperationen werden regelmäßig durchgeführt, da Aktualisierungen der Master L2P-Tabelle 222 eine lange Latenzzeit aufweisen können und eine niedrigere Priorität aufweisen können als Host-Operationen.
  • In einigen Ausführungsformen liest oder schreibt der Controller 208 Daten auf eine oder mehrere Flash-Speichervorrichtungen 220 in FMUs. In einigen Speichervorrichtungen kann das Umschreiben einer einzelnen FMU von Daten auf die eine oder die mehreren Flash-Speichervorrichtungen 220 das Schreiben der FMU auf einen neuen physischen Standort, das Aktualisieren (z. B. durch eine Flash-Übersetzungsschicht) einer Zuordnung zwischen der logischen Adresse und dem neuen physischen Standort der FMU und das Markieren der alten FMU als veraltet einschließen. Die Master-L2P-Tabelle 222, der L2P-Cache 224 und/oder der OUO-Cache 226 können aktualisiert werden, um die Änderungen beim Umschreiben von FMUs zu protokollieren.
  • Die Hostvorrichtung 204 weist einen optionalen Host-L2P-Cache 228 auf. Die Hostvorrichtung 204 kann optional kürzlich gelesene oder geschriebene Daten auf die Speichervorrichtung 206 im L2P-Cache 228 des Hosts protokollieren. Die Hostvorrichtung 204 kann optional den L2P-Cache 228 des Hosts durchlaufen oder durchsuchen und die physische Adresse von Daten mit einem Lese- oder Schreibbefehl senden. Wenn die von der Hostvorrichtung 204 aus dem L2P-Cache 228 des Hosts gesendete physische Adresse kohärent ist, kann der Controller 208 diese physische Adresse verwenden und muss nicht die Master-L2P-Tabelle 222 oder den L2P-Cache 224 durchsuchen. Der OUO-Cache 226 kann alle Aktualisierungen oder Änderungen an Einträgen im L2P-Cache 228 des Hosts protokollieren.
  • 3A veranschaulicht ein Verfahren 300 zum Verschieben von Daten während Host-Direktleseoperationen gemäß einer Ausführungsform. 3B veranschaulicht ein herkömmliches Verfahren 350 zum Verschieben von Daten während Host-Direktleseoperationen zu Vergleichszwecken. 3A kann mit dem Speichersystem 100 verwendet werden, das eine Hostvorrichtung 104 und eine Speichervorrichtung 106 aus 1 aufweist. 3A kann ferner mit dem Speichersystem 200 verwendet werden, das eine Hostvorrichtung 204 und eine Speichervorrichtung 206 aus 2 aufweist. Der L2P-Cache des Controllers kann der L2P-Cache 224 und/oder der OUO-Cache 226 aus 2 sein.
  • In Operation 302 empfängt ein Controller einer Speichervorrichtung eine Leseanforderung von einer Hostvorrichtung und übersetzt eine logische Adresse, die den zu lesenden Daten zugeordnet ist, in eine physische Adresse. Die Speichervorrichtung kann einen L2P-Cache des Controllers verwenden, um die logische Adresse in die physische Adresse zu übersetzen. In Operation 304 wird bei Bedarf ein Cache-Eintrag in den L2P-Cache des Controllers entsprechend der physischen Adresse der Daten aktualisiert. Bei jedem Lesen von Daten kann es erforderlich sein, den Cache-Eintrag zu aktualisieren. So kann beispielsweise der Cache-Eintrag aktualisiert werden, um zu reflektieren, wann die Daten zuletzt gelesen wurden. Der L2P-Cache des Controllers kann ferner aktualisiert werden, wenn Daten an eine andere physische Adresse verschoben wurden (d. h. an eine oder mehrere FMUs in einem neuen Speicherblock verschoben wurden). In Operation 306 wird die FMU entsprechend der physischen Adresse der Daten gelesen. Der L2P-Cache des Controllers kann verwendet werden, um den Standort der FMU der Daten zu bestimmen.
  • In Operation 308 bestimmt der Controller, ob die Verwaltungsoperationen priorisiert werden. Host-Operationen, wie Leseanforderungen, werden über den Verwaltungsoperationen priorisiert. So werden Controller-Verwaltungsoperationen, wie die Verschiebung von Daten, zwischen mehreren Lesevorgängen verschachtelt, sodass Host-Operationen zuerst abgeschlossen werden. Controller-Verwaltungsoperationen können im Laufe der Zeit im Hintergrund ausgeführt werden, um die Host-Latenz nicht zu reduzieren. Wenn Verwaltungsoperationen nicht priorisiert sind, geht das Verfahren 300 zurück zu Operation 302, um mit dem Ausführen von Host-Operationen fortzufahren. Wenn Verwaltungsoperationen priorisiert werden, fährt das Verfahren 300 mit Operation 310 fort, um mit dem Verschieben von Daten zu beginnen.
  • In Operation 310 liest der Controller die nächsten FMUs für die Verschiebung. Die nächsten FMUs für die Verschiebung sind FMUs, die derzeit für die Programmierung zur Verfügung stehen (d. h. leer oder gelöscht). In Operation 312 verschiebt der Controller die Daten, indem er die Daten in die nächsten in Operation 310 gelesenen FMUs schreibt. Das Verschieben von Daten von einem Speicherblock in einen anderen löscht nicht die Daten im ursprünglichen Speicherblock, sondern kopiert lediglich die Daten in einen neuen Speicherblock.
  • In Operation 314 wird als Reaktion auf das Verschieben der Daten eine Bewegungsoperation in den L2P-Cache des Controllers eingefügt. Die Bewegungsoperation kann das Erhöhen oder Verringern eines Versionsindikators für Cache-Einträge im L2P-Cache des Controllers aufweisen. Das Einfügen der Bewegungsoperation in den L2P-Cache des Controllers aktualisiert den L2P-Cache des Controllers, um zu zeigen, dass die den Daten zugeordnete logische Adresse mit einer neuen physischen Adresse verknüpft wurde, die den verschobenen FMUs entspricht, die die Daten speichern. Das Einfügen der Bewegungsoperationen in den L2P-Cache des Controllers fügt einen oder mehrere neue Cache-Einträge in den L2P-Cache des Controllers hinzu, ohne die bereits im L2P-Cache des Controllers befindlichen Cache-Einträge ungültig zu machen. So bleiben beispielsweise die Cache-Einträge im L2P-Cache des Controllers, die der physischen Adresse zugeordnet sind, die den alten oder bereits verschobenen FMUs entspricht, gültig. Somit hält der L2P-Cache des Controllers mehrere Kopien oder Positionen der verschobenen Daten in verschiedenen Cache-Einträgen und eine Angabe der Version des Cache-Eintrags. In einer Ausführungsform wird die Bewegungsoperation in den L2P-Cache 224 aus 2 eingefügt. In einer anderen Ausführungsform wird die Bewegungsoperation in den OUO-Cache 226 aus 2 eingefügt. In noch einer anderen Ausführungsform wird die Bewegungsoperation in den L2P-Cache 224 und den OUO-Cache 226 aus 2 eingefügt.
  • Die in den L2P-Cache des Controllers eingefügte Bewegungsoperation aktualisiert den L2P-Cache des Controllers, um die neue physische Adresse wiederzugeben, die an der logischen Adresse der Daten protokolliert wurde, ohne die Daten ungültig zu machen. Somit können entweder die alten Cache-Einträge, die den bereits verschobenen FMUs entsprechen, oder die neuen Cache-Einträge, die als Reaktion auf das Verschieben der Daten hinzugefügt wurden, beim Empfangen einer Leseanforderung gelesen werden. So kann beispielsweise in Operation 306 der Controller den L2P-Cache des Controllers nach der den Daten zugeordneten logischen Adresse durchsuchen. Der Controller kann entweder die alten Cache-Einträge lesen, die den bereits verschobenen FMUs entsprechen, oder den neuen Cache-Eintrag, der als Reaktion auf das Verschieben der Daten hinzugefügt wurde, da beide Cache-Einträge an der logischen Adresse der Daten protokolliert werden. Somit kann der Controller die Daten entweder von den bereits verschobenen FMUs oder den verschobenen FMUs lesen, je nachdem, welcher Cache-Eintrag, der an der logischen Adresse der Daten protokolliert wurde, zuerst gelesen wird. Des Weiteren braucht der Controller keine OUO-Tabelle mit Verschiebungseinträgen durchsuchen, da der ursprüngliche Cache-Eintrag im L2P-Cache des Controllers weiterhin gültig ist. Daher kann der Read-Overhead des Prozessors reduziert werden.
  • Das herkömmliche Verfahren 350 weist mindestens eine zusätzliche Operation auf, die das Verfahren 300 nicht aufweist. Nachdem eine Bewegungsoperation in einen L2P-Cache eingefügt wurde, um den L2P-Cache zu aktualisieren und zu zeigen, dass die verschobenen Daten mit einer neuen physischen Adresse verknüpft wurden, fährt das herkömmliche Verfahren 350 mit Operation 352 fort. In Operation 352 macht der Controller einen Cache-Eintrag im L2P-Cache ungültig, welcher der bereits verschobenen physischen Adresse entspricht, die den Daten zugeordnet ist. Durch das Ungültigmachen des Cache-Eintrags kann der Cache-Eintrag bei der Suche im L2P-Cache nicht mehr vom Controller gelesen werden. Daher kann es erforderlich sein, dass der Controller eine OUO-Tabelle liest, um den Verschiebungseintrag der Daten zu finden, da der den Daten entsprechende Cache-Eintrag im L2P-Cache ungültig gemacht worden ist. Darüber hinaus, wenn der L2P-Cache ein komprimierter L2P-Cache ist, wird der gesamte komprimierte Cache-Eintrag ungültig gemacht.
  • 4 veranschaulicht ein Flussdiagramm eines Verfahrens 400 zum Aktualisieren eines L2P-Cache eines Controllers einer Speichervorrichtung, wenn der Controller Daten gemäß einer Ausführungsform verschiebt. Das Verfahren 400 kann in Kombination mit dem Verfahren 300 verwendet werden. Das Verfahren 400 kann mit dem Speichersystem 100 aus 1 verwendet werden, das eine Hostvorrichtung 104 und eine Speichervorrichtung 106 aufweist. Das Verfahren 400 kann ferner mit dem Speichersystem 200 aus 2 verwendet werden, das eine Hostvorrichtung 204 und eine Speichervorrichtung 206 aufweist.
  • In Operation 402 des Verfahrens 400 werden Daten, die in einem ersten Speicherblock gespeichert sind, der einer ersten physischen Adresse zugeordnet ist, von einem Controller, wie dem Controller 108 aus 1 oder dem Controller 208 aus 2, in einen zweiten Speicherblock verschoben und mit einer zweiten physischen Adresse verknüpft. Die erste physische Adresse wird in einem ersten Cache-Eintrag in einem komprimierten L2P-Cache protokolliert, der in einem Controller gespeichert ist, wie dem L2P-Cache 224 und/oder dem OUO-Cache 226 aus 2. Die erste physische Adresse ist einer oder mehreren FMUs im ersten Speicherblock zugeordnet und die zweite physische Adresse ist einer oder mehreren FMUs im zweiten Speicherblock zugeordnet. Das Verschieben der Daten von einem ersten Speicherblock zu einem zweiten Speicherblock löscht nicht die im ersten Speicherblock gespeicherten Daten oder macht diese nicht ungültig. Stattdessen werden die Daten sowohl im ersten Speicherblock als auch im zweiten Speicherblock gespeichert, bis der erste Speicherblock gelöscht wird. Daten werden oft in neue Speicherblöcke verschoben, um die Speicherblöcke vor dem Verschieben auf das Löschen vorzubereiten, da die Speicherblöcke in Blockeinheiten und nicht durch FMUs gelöscht werden.
  • In Operation 404 wird ein Versionsindikator des ersten Cache-Eintrags in der komprimierten logischen zu physischen Tabelle erhöht, ohne den ersten Cache-Eintrag ungültig zu machen. Der Versionsindikator zeigt an, dass der Cache-Eintrag derzeit zumindest teilweise veraltete Informationen speichert und dass eine neuere Version der Informationen im L2P-Cache verfügbar sein kann.
  • In Operation 406 werden ein oder mehrere aktualisierte Cache-Einträge zu dem L2P-Cache hinzugefügt, wenn die Daten zu der zweiten physischen Adresse verschoben werden. Der eine oder die mehreren aktualisierten Cache-Einträge werden hinzugefügt, ohne den ersten Cache-Eintrag ungültig zu machen. Der eine oder die mehreren aktualisierten Cache-Einträge können einem L2P-Cache des Controllers hinzugefügt werden, wie dem L2P-Cache 224 aus 2, und/oder einer ausstehenden aktualisierten L2P-Tabelle, wie dem OUO-Cache 226 aus 2. Die Anzahl der aktualisierten Cache-Einträge, die dem L2P-Cache hinzugefügt werden, ist abhängig von der Anzahl der im ersten Cache-Eintrag protokollierten Einträge. Wenn beispielsweise die erste physische Adresse in die Mitte des physischen Adressbereichs des ersten Cache-Eintrags fällt, können die Informationen des ersten Cache-Eintrags in drei neue Cache-Einträge aufgeteilt werden, wie im Folgenden in Bezug auf Tabelle 2 beschrieben wird.
  • In Operation 408 empfängt der Controller eine Anforderung zum Lesen der verschobenen Daten von einer Hostvorrichtung. Die Hostvorrichtung kann eine den Daten zugeordnete logische Adresse mit der Anforderung und/oder eine den Daten zugeordnete physische Adresse an die Speichervorrichtung senden. Zusätzlich kann der Controller eine Schreibanforderung senden, die im Verfahren 400 auf die gleiche Weise verarbeitet wird.
  • In Operation 410 durchsucht der Controller den L2P-Cache, um zu bestimmen, wo sich die Daten befinden. Der Controller kann den L2P-Cache nach der logischen Adresse durchsuchen, die den Daten zugeordnet ist. Da die Daten verschoben wurden, kann die den Daten zugeordnete logische Adresse in mehreren Cache-Einträgen des L2P-Cache protokolliert werden. Somit kann jeder Cache-Eintrag, der der logischen Adresse entspricht, die den Daten zugeordnet ist, die der Controller zuerst liest, zum Bestimmen der Position der Daten verwendet werden, unabhängig von dem Versionsindikator des Cache-Eintrags.
  • In Operation 412 liest der Controller die Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock. Der Controller kann den ersten Speicherblock oder den zweiten Speicherblock lesen, je nachdem, welcher Cache-Eintrag des L2P-Cache gelesen oder zuerst in Operation 410 gefunden wurde. Wenn der Controller beispielsweise den ersten Cache-Eintrag liest, der der ersten physischen Adresse der Daten entspricht, kann der Controller die Daten im ersten Speicherblock lesen. Wenn der Controller den einen oder die mehreren aktualisierten Cache-Einträge liest, die der zweiten physischen Adresse der Daten entsprechen, kann der Controller die Daten im zweiten Speicherblock lesen.
  • Ein Beispiel ist unter Verwendung von Tabelle 2 beschrieben, um das Implementieren des Verfahrens 400 zu veranschaulichen. Tabelle 2 ist ein komprimierter L2P-Cache, der in einem Controller gespeichert ist, wie der L2P-Cache 224 in 2. In dem im Folgenden beschriebenen Beispiel wird davon ausgegangen, dass Daten, die der logischen Adresse 10 entsprechen, zu FMUS verschoben werden, die der physischen Adresse 1100 entsprechen. Tabelle 2
    Eintragsnummer Erste logische Adresse Erste physische Adresse Anzahl der gültigen gleichzeitigen Einträge Version
    1 5 1000 50 1
    2 200 1050 14
    ... ... ... ...
    g 5 1000 4
    n+1 10 1100 1
    n+2 11 1006 44
  • Wie in Tabelle 2 gezeigt, wird die logische Adresse 10 im ersten Cache-Eintrag (Eintrag Nummer 1) protokolliert. Wenn die Daten, die der logischen Adresse 10 entsprechen, verschoben werden, wird der Versionsindikator des ersten Cache-Eintrags erhöht, wie in den Operationen 402 und 404 des Verfahrens 400 beschrieben. Drei neue aktualisierte Cache-Einträge werden dann in Operation 406 des Verfahrens 400 dem komprimierten L2P-Cache mit den Eintragsnummern n, n+1 und n+2 hinzugefügt. Der erste aktualisierte Cache-Eintrag (Eintragsnummer n) protokolliert die logischen Adressen 5-9 zu den physischen Adressen 1000-1004, wie die Anzahl der gültigen gleichzeitigen Einträge zeigt. Der zweite aktualisierte Cache-Eintrag (Eintragsnummer n+1) protokolliert die logische Adresse 10 an die neue verschobene physische Adresse 1100. Der dritte aktualisierte Cache-Eintrag (Eintragsnummer n+2) protokolliert die verbleibende logische Adresse des ersten Cache-Eintrags (Eintragsnummer 1). Der dritte aktualisierte Cache-Eintrag (Eintragsnummer n+2) protokolliert die logischen Adressen 11-50 an die physischen Adressen 1006-1050. In einer Ausführungsform werden die aktualisierten Cache-Einträge zu einer ausstehenden L2P-Tabelle der Aktualisierungsoperation hinzugefügt, wie dem OUO-Cache 226 in 2. In einer anderen Ausführungsform werden die aktualisierten Cache-Einträge sowohl einem L2P-Cache, wie dem L2P-Cache 224, als auch einer ausstehenden L2P-Tabelle der Aktualisierungsoperation, wie dem OUO-Cache 226, hinzugefügt.
  • Die aktuellste Version der Daten, die der logischen Adresse 10 entsprechen, wird nun auf FMUs eines Speicherblocks verschoben, der der physischen Adresse 1100 zugeordnet ist. Die Daten werden jedoch weiterhin in einem Speicherblock gespeichert, der der physischen Adresse 1005 zugeordnet ist, obwohl dies möglicherweise nicht die aktuellste Version der Daten ist. Wenn der Controller somit eine Anforderung zum Lesen von Daten empfängt, die der logischen Adresse 10 zugeordnet sind (Operation 408 des Verfahrens 400), kann er die Tabelle 2 nach der logischen Adresse 10 durchsuchen und entweder den ersten Cache-Eintrag (Eintragsnummer 1) oder den zweiten aktualisierten Cache-Eintrag (Eintragsnummer n+1) lesen, um zu ermitteln, wo sich die Daten befinden (Operation 410 des Verfahrens 400). Nach Operation 412 des Verfahrens 400 kann der Controller dann die Daten entweder vom Verschiebungsspeicherblock, der der physischen Adresse 1100 zugeordnet ist, oder vom vorab verschobenen Speicherblock, der der physischen Adresse 1005 zugeordnet ist, lesen.
  • Der Versionsindikator in dem ersten Cache-Eintrag (Eintragsnummer 1) signalisiert dem Controller lediglich, dass mindestens ein Teil der im ersten Cache-Eintrag protokollierten Informationen veraltet ist oder nicht die aktuellste verfügbare Version ist. Obwohl die Informationen, die der logischen Adresse 10 und der physischen Adresse 1005 im ersten Cache-Eintrag entsprechen, nicht die aktuellste Version sind, sind die verbleibenden Informationen, die im ersten Cache-Eintrag protokolliert werden, die aktuellsten (z. B. Informationen, die den logischen Adressen 5-9 und 11-50 zugeordnet sind). Wenn der Controller bereit ist, den der ersten physischen Adresse zugeordneten Speicherblock zu löschen, kann der Versionsindikator des ersten Cache-Eintrags (Eintragsnummer 1) herabgesetzt werden. Der Versionsindikator kann auf 0 herabgesetzt werden. Das Herabsetzen des Versionsindikators des ersten Cache-Eintrags kann den Cache-Eintrag ungültig machen oder aus dem L2P-Cache entfernen.
  • 5 veranschaulicht ein Flussdiagramm eines Verfahrens 500 zum Verwenden eines komprimierten L2P-Cache, der in einem Controller gespeichert ist, um Speicherblöcke zum Löschen gemäß einer Ausführungsform zu planen. Das Verfahren 500 kann in Kombination mit dem Verfahren 300 und/oder dem Verfahren 400 verwendet werden. So kann beispielsweise das Verfahren 500 nach dem Verschieben von Daten in Operation 402 des Verfahrens 400 verwendet werden. Des Weiteren kann das Verfahren 500 mit dem Speichersystem 100 aus 1 verwendet werden, das eine Hostvorrichtung 104 und eine Speichervorrichtung 106 aufweist. Das Verfahren 500 kann ferner mit dem Speichersystem 200 aus 2 verwendet werden, das eine Hostvorrichtung 204 und eine Speichervorrichtung 206 aufweist. Das Verfahren 500 kann mit einem Controller einer Speichervorrichtung implementiert werden, die eine komprimierte L2P-Tabelle oder einen Cache speichert, der den Speicherort von Daten an FMUs von Speicherblöcken protokolliert, wie den L2P-Cache 224 und/oder den OUO-Cache 226 aus 2.
  • In Operation 502 wird ein Array eines Gültigkeitszählers durch einen Gültigkeitszähler sortiert. Ein Gültigkeitszähler ist eine Anzahl von gültigen FMUs in einem Speicherblock. Wenn Daten, die in FMUs in einem ersten Speicherblock gespeichert sind, in einen zweiten Speicherblock verschoben wurden, können die FMUs im ersten Speicherblock, die die Daten speichern, nach der Verschiebung als ungültig gekennzeichnet sein. Die Kennzeichnung von FMUs als ungültig zeigt an, dass die FMUs zum Löschen bereit sind. Da das Löschen von Daten jedoch in Blockeinheiten durchgeführt wird, können die als ungültig gekennzeichneten FMUs erst gelöscht werden, wenn der Speicherblock mit den ungültigen FMUs bereit zum Löschen ist.
  • In Operation 504 werden die Speicherblöcke durch Gültigkeitszähler in Buckets oder Einheiten in ein Array von Gültigkeitszählern gruppiert. Wenn beispielsweise ein Speicherblock aus 32 FMUs besteht, werden die Speicherblöcke basierend auf dem Gültigkeitszähler jedes Speicherblocks in 32 Buckets gruppiert.
  • In Operation 506 werden einer oder mehrere der Speicherblöcke aus den Buckets priorisiert und in der Reihenfolge der Priorität zum Löschen eingeplant. Das Planen eines Speicherblocks zum Löschen kann das Herabsetzen eines Versionsindikators für einen Cache-Eintrag im komprimierten L2P-Cache einschließen. Blöcke mit hoher Priorität sind Zeitpläne zum Löschen über Blöcken mit niedriger Priorität. Die Reihenfolge der Prioritäten ist in den Operationen 508, 510 und 512 beschrieben.
  • In Operation 508 werden Buckets mit einem niedrigen Gültigkeitszähler über Buckets mit einem hohen Gültigkeitszähler priorisiert. Somit ist der Bucket mit dem niedrigsten Gültigkeitszähler oder der niedrigsten Anzahl gültiger FMUs der Bucket mit der höchsten Priorität zum Löschen.
  • In Operation 510 werden innerhalb jedes Buckets die Speicherblöcke, die nicht mit Daten im komprimierten L2P-Cache protokolliert wurden, über Speicherblöcke priorisiert, die mit Daten im komprimierten L2P-Cache protokolliert wurden. Somit werden innerhalb des Buckets mit der höchsten Priorität und dem niedrigsten Gültigkeitszähler Speicherblöcke, die nicht im L2P-Cache protokolliert wurden, über Speicherblöcke, die im L2P-Cache protokolliert wurden, priorisiert.
  • In Operation 512 werden innerhalb jedes Buckets die Speicherblöcke, die nicht kürzlich im komprimierten L2P-Cache gelesen wurden, über die Speicherblöcke priorisiert, die kürzlich im komprimierten L2P-Cache gelesen wurden. Somit werden innerhalb des Buckets mit der höchsten Priorität und dem niedrigsten Gültigkeitszähler, nachdem die Speicherblöcke, die nicht im L2P-Cache protokolliert wurden, zum Löschen eingeplant sind, die Speicherblöcke, die im L2P-Cache protokolliert wurden, aber nicht kürzlich gelesen wurden, als nächstes eingeplant. Speicherblöcke in einem Bucket, die kürzlich im L2P-Cache gelesen wurden, weisen die niedrigste Priorität zum Löschen auf. Der Versionsindikator von Cache-Einträgen im L2P-Cache kann verwendet werden, um zu ermitteln, wann ein Speicherblock zuletzt gelesen wurde. Wenn beispielsweise ein Versionsindikator eines Cache-Eintrags anzeigt, dass der Cache-Eintrag einige veraltete Informationen speichert, können die diesem Cache-Eintrag entsprechenden Speicherblöcke über Speicherblöcken, die aktuellen Cache-Einträgen entsprechen, priorisiert werden.
  • 6 veranschaulicht ein Flussdiagramm eines Verfahrens 600 zum Aktualisieren einer anstehenden Aktualisierungsoperation des L2P-Cache eines Controllers einer Speichervorrichtung gemäß einer Ausführungsform. Das Verfahren 600 kann in Kombination mit dem Verfahren 300, dem Verfahren 400 und/oder dem Verfahren 500 verwendet werden. Das Verfahren 600 kann mit dem Speichersystem 100 aus 1 verwendet werden, das eine Hostvorrichtung 104 und eine Speichervorrichtung 106 aufweist. Das Verfahren 600 kann ferner mit dem Speichersystem 200 aus 2 verwendet werden, das eine Hostvorrichtung 204 und eine Speichervorrichtung 206 aufweist. Das Verfahren 600 kann mit einem Controller eines Speichersystems verwendet werden, das eine ausstehende Aktualisierungsoperation der L2P-Tabelle oder einen Cache speichert, der Aktualisierungen an einer Host-L2P-Tabelle protokolliert, wie den OUO-Cache 226 aus 2.
  • In Operation 602 aktualisiert der Controller der Speichervorrichtung den OUO-Cache als Reaktion auf einen Bereich einer Host-L2P-Tabelle, der aktualisiert wird. Eine Host-L2P-Tabelle, wie der Host-L2P-Cache 228 aus 2, ist ein Hostspeicher-basierter Cache, der in einer Hostvorrichtung gespeichert ist. Die Host-L2P-Tabelle kann aus Cache-Bereichen bestehen, wobei jeder Cache-Bereich einen Versionsindikator für den Bereich und eine Vielzahl von Cache-Einträgen aufweist. Die Cache-Einträge innerhalb jedes Cache-Bereichs können eine logische Adresse an eine physische Adresse protokollieren. Eine einzelne Verwaltungsoperation, die einen einzelnen Cache-Eintrag ändert, kann erfordern, dass das System ganze Cache-Bereiche der Host-L2P-Tabelle ungültig macht und später aktualisiert. Die Hostvorrichtung kann den Cache-Bereich erst dann verwenden, wenn er vollständig aktualisiert ist. Somit ändert sich beim Verschieben von Daten die physische Adresse, die einer logischen Adresse der verschobenen Daten entspricht, und die Aktualisierung kann im OUO-Cache protokolliert werden, der im Controller der Speichervorrichtung gespeichert ist, während der entsprechende Bereich im Host-L2P aktualisiert wird. Der Controller kann alle Cache-Einträge des zu aktualisierenden Bereichs in den OUO-Cache protokollieren. Der Controller kann auch nur die aktualisierten Cache-Einträge innerhalb des Bereichs protokollieren, der in den OUO-Cache aktualisiert wird. Der Controller kann den OUO-Cache nach dem Verschieben der Daten aktualisieren. In einer Ausführungsform empfängt der Controller von der Hostvorrichtung einen Befehl zum Aktualisieren des OUO-Cache. Der OUO-Cache kann auch ein Versionsindikator für die Cache-Einträge aufweisen.
  • In Operation 604 empfängt der Controller einen Befehl zum Lesen von Daten. Der Befehl kann auch ein Schreibbefehl sein, wobei das Verfahren 600 in diesem Fall auf die gleiche Weise verfahren würde. Wenn eine Hostvorrichtung einen Befehl zum Lesen oder Schreiben von Daten sendet, kann die Hostvorrichtung optional die physische Adresse und die den Daten zugeordnete logische Adresse einschließen, wie sie in der Host-L2P-Tabelle gespeichert sind.
  • In Operation 606 bestimmt der Controller, ob mit dem Lesebefehl eine aktuelle physische Adresse der Daten gesendet wurde. Die Hostvorrichtung kann eine physische Adresse, die den Daten zugeordnet ist, mit dem Lesebefehl an die Speichervorrichtung senden, beispielsweise durch Senden des Cache-Bereichs der Host-L2P-Tabelle, der der logischen Adresse der Daten an die physische Adresse entspricht, an die Speichervorrichtung. Wenn jedoch der Cache-Bereich gerade aktualisiert wird, sind die Informationen in dem Cache Bereich möglicherweise nicht aktuell. In einer Ausführungsform werden während der Aktualisierung keine Cache-Einträge in der Host-L2P-Tabelle ungültig gemacht. Ein Cache-Bereich der gerade aktualisierten L2P-Host-Tabelle kann durch den Controller mit einigen veralteten Informationen empfangen werden. Der Controller liest einen Versionsindikator des Cache-Bereichs, um zu ermitteln, ob die in den Cache-Einträgen des Cache-Bereichs gespeicherten Informationen veraltet sind.
  • Wenn der Versionsindikator anzeigt, dass der Cache-Bereich aktuell ist und somit die mit dem Befehl empfangene physische Adresse aktuell ist, fährt das Verfahren 600 mit Operation 608 fort. In Operation 608 liest der Controller die Daten von dem Ort, welcher der aktuellen physischen Adresse entspricht, die mit dem Befehl empfangen wurde. Der Controller kann die Daten lesen, ohne nach dem Speicherort der Daten in einem L2P-Cache des Controllers oder einer im Flash-Speicher gespeicherten Master-L2P-Tabelle suchen zu müssen.
  • Wenn der Befehl mit einer veralteten physischen Adresse gesendet wurde oder ohne eine physische Adresse gesendet wurde, fährt das Verfahren 600 mit Operation 610 fort. In Operation 610 liest der Controller einen Teil der Host-L2P-Tabelle, der den Daten zugeordnet ist, und einen Teil der ausstehenden Aktualisierungsoperation des L2P-Cache, der den Daten zugeordnet ist, um einen Speicherort der Daten zu bestimmen.
  • Da sich nur einige Cache-Einträge in einem Cache-Bereich geändert oder aktualisiert haben können, sind andere Cache-Einträge weiterhin aktuell, und einige in dem Cache-Bereich protokollierte Informationen sind aktuell. Somit kann der Controller den Cache-Bereich der mit dem Befehl gesendeten Host-L2P-Tabelle lesen, um den Speicherort der in Cache-Einträgen gespeicherten Daten zu bestimmen, die den aktuellen physischen Adressen entsprechen. Der Controller liest dann den OUO-Cache, um den Speicherort der Daten zu bestimmen, die den physischen Adressen entsprechen, die in dem Cache-Bereich aktualisiert werden. Somit kann der Controller eine veraltete Version des Cache-Bereichs und eine aktualisierte Version im OUO-Cache lesen, um den Speicherort der Daten zu bestimmen.
  • Indem Cache-Einträge in L2P-Caches von Controllern beim Verschieben von Daten nicht ungültig gemacht werden, können Kohärenzprobleme im Cache reduziert oder beseitigt und die Gesamt-Leseleistung verbessert werden. Das Speichern mehrerer Kopien von Daten oder Informationen in den L2P-Caches des Controllers reduziert den Verarbeitungsaufwand für Datenverschiebungsaktivitäten und ermöglicht einfachere, nicht eingreifende Verfahren zum Aktualisieren der L2P-Caches des Controllers, die implementiert werden müssen. Zusätzlich kann die Lebensdauer von Speicherblöcken erhöht werden, da Speicherblöcke basierend auf dem Versionsindikator des L2P-Cache zum Löschen ausgewählt werden können.
  • In einer Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung mit einer Vielzahl von Speicherblöcken das Verschieben von in einem ersten Speicherblock gespeicherten Daten in einen zweiten Speicherblock, das Empfangen einer Anforderung zum Lesen der Daten, das Lesen einer logischen in eine physische Tabelle, um zu bestimmen, in welchem Speicherblock aus der Vielzahl von Speicherblöcken die Daten gespeichert sind, und das Lesen der Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock auf. Ein Controller der Speichervorrichtung ist in der Lage, den ersten Speicherblock und den zweiten Speicherblock nach dem Verschieben der Daten zu lesen.
  • Die logisch-physische Tabelle kann in dem Controller gespeichert werden. Die logisch-physische Tabelle kann komprimiert werden. Das Verfahren kann ferner das Aktualisieren der logisch-physischen Tabelle als Reaktion auf das Verschieben der im ersten Speicherblock gespeicherten Daten in den zweiten Speicherblock aufweisen. Das Aktualisieren der logisch-physischen Tabelle kann das Erhöhen eines Versionsindikators für einen ersten Cache-Eintrag in der logisch-physischen Tabelle aufweisen. Eine erste physische Adresse, die dem ersten Speicherblock zugeordnet ist, kann im ersten Cache-Eintrag der Daten protokolliert werden. Das Aktualisieren der logisch-physischen Tabelle kann das Hinzufügen eines oder mehrerer Cache-Einträge zu der logisch-physischen Tabelle aufweisen. Der eine oder die mehreren Cache-Einträge können eine zweite physische Adresse, die dem zweiten Speicherblock zugeordnet ist, in den Daten protokollieren.
  • In einer anderen Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung das Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, zu einem zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, auf. Die erste physische Adresse wird in einem ersten Cache-Eintrag in einer komprimierten logisch-physischen Tabelle protokolliert. Das Verfahren weist ferner das Erhöhen eines Versionsindikators des ersten Cache-Eintrags in der komprimierten logisch-physischen Tabelle, das Hinzufügen eines oder mehrerer aktualisierter Cache-Einträge zu der komprimierten logisch-physischen Tabelle als Reaktion auf das Verschieben der Daten zu der zweiten physischen Adresse, das Durchsuchen der komprimierten logisch-physischen Tabelle, um zu bestimmen, wo sich die Daten befinden, das Lesen des ersten Cache-Eintrags vor dem Lesen der einen oder der mehreren aktualisierten Cache-Einträge und das Lesen der Daten von der ersten physischen Adresse auf.
  • Das Verfahren kann ferner das Planen des zu löschenden ersten Speicherblocks und das Herabsetzen des Versionsindikators des ersten Cache-Eintrags in der komprimierten logisch-physischen Tabelle als Reaktion auf das Planen des zu löschenden ersten Speicherblocks aufweisen. Der erste Cache-Eintrag in der komprimierten logisch-physischen Tabelle kann so lange gültig bleiben, bis der Versionsindikator herabgesetzt wird. Die komprimierte logisch-physische Tabelle kann in einem Controller der Speichervorrichtung gespeichert werden. Die komprimierte logisch-physische Tabelle kann als Reaktion auf das Empfangen eines Befehls zum Lesen oder Schreiben von Daten durchsucht werden. Der eine oder die mehreren aktualisierten Cache-Einträge können einen zweiten Cache-Eintrag aufweisen, der der Verschiebung der Daten in den zweiten Speicherblock entspricht. Der erste Cache-Eintrag und der zweite Cache-Eintrag können beide gültige Cache-Einträge in der komprimierten logisch-physischen Tabelle sein. Der Versionsindikator des ersten Cache-Eintrags kann anzeigen, dass die im ersten Cache-Eintrag protokollierten Informationen eine veraltete Version der im zweiten Cache-Eintrag protokollierten Informationen sind.
  • In einer Ausführungsform weist eine Speichervorrichtung eine Vielzahl von Speicherblöcken auf. Jeder Speicherblock der Vielzahl von Speicherblöcken weist Flash-Speichereinheiten auf. Die Speichervorrichtung weist ferner einen Controller auf, der mit der Vielzahl von Speicherblöcken gekoppelt ist. Der Controller ist konfiguriert, um eine komprimierte logisch-physische Tabelle zu speichern. Die komprimierte logisch-physische Tabelle protokolliert den Speicherort der Daten zu einem oder mehreren der Vielzahl von Speicherblöcken. Der Controller ist ferner konfiguriert, um ein Array von Gültigkeitszählern anhand von Gültigkeitszählern zu sortieren. Der Gültigkeitszähler ist eine Anzahl von gültigen Flash-Speichereinheiten in einem Speicherblock. Der Controller ist ferner konfiguriert, um einen oder mehrere Speicherblöcke aus der Vielzahl von zu löschenden Speicherblöcken zu priorisieren. Speicherblöcke mit einem niedrigen Gültigkeitszähler werden über Speicherblöcke mit einem hohen Gültigkeitszähler priorisiert. Speicherblöcke, die nicht mit Daten in der komprimierten logisch-physischen Tabelle protokolliert werden, werden über Speicherblöcke priorisiert, die mit Daten in der komprimierten logisch-physischen Tabelle protokolliert werden. Der Controller ist ferner konfiguriert, um einen oder mehrere Speicherblöcke aus der Vielzahl von zu löschenden Speicherblöcken in der Reihenfolge der Priorität zu planen.
  • Speicherblöcke, die nicht vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden, können über Speicherblöcke priorisiert werden, die vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden. Speicherblöcke mit einem niedrigen Gültigkeitszähler können über Speicherblöcke priorisiert werden, die nicht mit Daten in der komprimierten logisch-physischen Tabelle protokolliert wurden. Speicherblöcke, die nicht mit Daten in der komprimierten logisch-physischen Tabelle protokolliert wurden, können über Speicherblöcke priorisiert werden, die nicht vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden. Der Controller kann ferner so konfiguriert werden, dass er Speicherblöcke anhand des Gültigkeitszählers gruppiert, bevor er den einen oder die mehreren Speicherblöcke aus der Vielzahl der zu löschenden Speicherblöcke priorisiert. Der Controller kann ferner so konfiguriert werden, dass er eine ausstehende Aktualisierung der Operationstabelle speichert, wobei die ausstehende Aktualisierung der Operationstabelle Aktualisierungen, die an der komprimierten logisch-physischen Tabelle vorgenommen wurden, protokolliert.
  • Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.

Claims (20)

  1. Verfahren zum Betreiben einer Speichervorrichtung mit einer Vielzahl von Speicherblöcken, aufweisend: Verschieben von Daten, die in einem ersten Speicherblock gespeichert sind, in einen zweiten Speicherblock; Empfangen einer Anforderung zum Lesen der Daten; Lesen einer logisch-physischen Tabelle, um zu ermitteln, in welchem Speicherblock der Vielzahl von Speicherblöcken die Daten gespeichert sind; und Lesen der Daten entweder aus dem ersten Speicherblock oder dem zweiten Speicherblock, wobei ein Controller der Speichervorrichtung in der Lage ist, den ersten Speicherblock und den zweiten Speicherblock nach dem Verschieben der Daten zu lesen.
  2. Verfahren gemäß Anspruch 1, wobei die logisch-physische Tabelle in dem Controller gespeichert ist.
  3. Verfahren gemäß Anspruch 2, wobei die logisch-physische Tabelle komprimiert ist.
  4. Verfahren gemäß Anspruch 1, ferner aufweisend: Aktualisieren der logisch-physischen Tabelle als Reaktion auf das Verschieben der im ersten Speicherblock gespeicherten Daten in den zweiten Speicherblock.
  5. Verfahren gemäß Anspruch 4, wobei das Aktualisieren der logisch-physischen Tabelle das Erhöhen eines Versionsindikators eines ersten Cache-Eintrags in der logisch-physischen Tabelle aufweist, wobei eine dem ersten Speicherblock zugeordnete erste physische Adresse im ersten Cache-Eintrag zu den Daten protokolliert wird.
  6. Verfahren gemäß Anspruch 4, wobei das Aktualisieren der logisch-physischen Tabelle das Hinzufügen eines oder mehrerer Cache-Einträge zu der logisch-physischen Tabelle aufweist, wobei der eine oder die mehreren Cache-Einträge eine zweite physische Adresse, die dem zweiten Speicherblock zugeordnet ist, zu den Daten protokollieren.
  7. Verfahren zum Betreiben einer Speichervorrichtung, aufweisend: Verschieben von Daten von einem ersten Speicherblock, der einer ersten physischen Adresse zugeordnet ist, in einen zweiten Speicherblock, der einer zweiten physischen Adresse zugeordnet ist, wobei die erste physische Adresse in einem ersten Cache-Eintrag in einer komprimierten logisch-physischen Tabelle protokolliert wird; Erhöhen eines Versionsindikators des ersten Cache-Eintrags in der komprimierten logisch-physischen Tabelle; Hinzufügen eines oder mehrerer aktualisierter Cache-Einträge zu der komprimierten logisch-physischen Tabelle als Reaktion auf das Verschieben der Daten zur zweiten physischen Adresse; Durchsuchen der komprimierten logisch-physischen Tabelle, um zu ermitteln, wo sich die Daten befinden; Lesen des ersten Cache-Eintrags vor dem Lesen des einen oder der mehreren aktualisierten Cache-Einträge; und Lesen der Daten von der ersten physischen Adresse.
  8. Verfahren gemäß Anspruch 7, ferner aufweisend: Planen des ersten zu löschenden Speicherblocks; und Herabsetzen des Versionsindikators des ersten Cache-Eintrags in der komprimierten logisch-physischen Tabelle als Reaktion auf das Planen des zu löschenden ersten Speicherblocks.
  9. Verfahren gemäß Anspruch 8, wobei der erste Cache-Eintrag in der komprimierten logisch-physischen Tabelle gültig bleibt, bis der Versionsindikator herabgesetzt wird.
  10. Verfahren gemäß Anspruch 7, wobei die komprimierte logisch-physische Tabelle in einem Controller der Speichervorrichtung gespeichert ist.
  11. Verfahren gemäß Anspruch 7, wobei die komprimierte logisch-physische Tabelle als Reaktion auf das Empfangen eines Befehls zum Lesen oder Schreiben von Daten durchsucht wird.
  12. Verfahren gemäß Anspruch 7, wobei der eine oder die mehreren aktualisierten Cache-Einträge einen zweiten Cache-Eintrag aufweisen, der der Verschiebung der Daten in den zweiten Speicherblock entspricht.
  13. Verfahren gemäß Anspruch 12, wobei der erste Cache-Eintrag und der zweite Cache-Eintrag beide gültige Cache-Einträge in der komprimierten logisch-physischen Tabelle sind.
  14. Verfahren gemäß Anspruch 13, wobei der Versionsindikator des ersten Cache-Eintrags anzeigt, dass die im ersten Cache-Eintrag protokollierten Informationen eine veraltete Version der im zweiten Cache-Eintrag protokollierten Informationen sind.
  15. Speichervorrichtung, aufweisend: eine Vielzahl von Speicherblöcken, wobei jeder Speicherblock der Vielzahl von Speicherblöcken Flash-Speichereinheiten aufweist; und einen Controller, der mit der Vielzahl von Speicherblöcken gekoppelt ist, wobei der Controller konfiguriert ist zum: Speichern einer komprimierten logisch-physischen Tabelle, wobei die komprimierte logisch-physische Tabelle den Speicherort von Daten zu einem oder mehreren der Vielzahl von Speicherblöcken protokolliert; Sortieren eines Gültigkeitszähler-Arrays durch einen Gültigkeitszähler, wobei der Gültigkeitszähler eine Anzahl von gültigen Flash-Speichereinheiten in einem Speicherblock ist; Priorisieren eines oder mehrerer Speicherblöcke aus der Vielzahl der zu löschenden Speicherblöcke, wobei Speicherblöcke mit einem niedrigen Gültigkeitszähler über Speicherblöcke mit einem hohen Gültigkeitszähler priorisiert werden und wobei Speicherblöcke, die nicht zu Daten in der komprimierten logisch-physischen Tabelle protokolliert werden, über Speicherblöcke priorisiert werden, die zu Daten in der komprimierten logisch-physischen Tabelle protokolliert werden; und Planen eines oder mehrerer Speicherblöcke aus der Vielzahl der zu löschenden Speicherblöcke in der Reihenfolge der Priorität.
  16. Speichervorrichtung gemäß Anspruch 15, wobei Speicherblöcke, die nicht vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden, über Speicherblöcke priorisiert werden, die vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden.
  17. Speichervorrichtung gemäß Anspruch 16, wobei Speicherblöcke mit einem niedrigen Gültigkeitszähler über Speicherblöcken priorisiert werden, die nicht mit Daten in der komprimierten logische-physischen Tabelle protokolliert sind.
  18. Speichervorrichtung gemäß Anspruch 17, wobei Speicherblöcke, die nicht mit Daten in der komprimierten logisch-physischen Tabelle protokolliert werden, über Speicherblöcken priorisiert werden, die nicht vor kurzem in der komprimierten logisch-physischen Tabelle gelesen wurden.
  19. Speichervorrichtung gemäß Anspruch 15, wobei der Controller ferner so konfiguriert ist, dass er Speicherblöcke anhand des Gültigkeitszählers gruppiert, bevor er den einen oder die mehreren Speicherblöcke aus der Vielzahl der zu löschenden Speicherblöcke priorisiert.
  20. Speichervorrichtung gemäß Anspruch 15, wobei der Controller ferner so konfiguriert ist, dass er eine ausstehende Aktualisierung der Operationstabelle speichert, wobei die ausstehende Aktualisierung der Operationstabelle Aktualisierungen, die an der komprimierten logisch-physischen Tabelle vorgenommen wurden, protokolliert.
DE102019133167.6A 2019-03-25 2019-12-05 Optimierte Handhabung mehrerer Kopien im Speichermanagment Pending DE102019133167A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/363,935 2019-03-25
US16/363,935 US11061598B2 (en) 2019-03-25 2019-03-25 Optimized handling of multiple copies in storage management

Publications (1)

Publication Number Publication Date
DE102019133167A1 true DE102019133167A1 (de) 2020-10-01

Family

ID=72605706

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019133167.6A Pending DE102019133167A1 (de) 2019-03-25 2019-12-05 Optimierte Handhabung mehrerer Kopien im Speichermanagment

Country Status (3)

Country Link
US (1) US11061598B2 (de)
CN (1) CN111737160A (de)
DE (1) DE102019133167A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630592B2 (en) * 2020-11-12 2023-04-18 Western Digital Technologies, Inc. Data storage device database management architecture
CN113190468B (zh) * 2021-04-21 2022-11-25 山东英信计算机技术有限公司 一种l2p表压缩方法、装置、设备及可读存储介质
US20230418482A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Storage device pool management based on storage device logical to physical (l2p) table information

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914577A (en) * 1987-07-16 1990-04-03 Icon International, Inc. Dynamic memory management system and method
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5822781A (en) * 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5900016A (en) * 1997-04-02 1999-05-04 Opti Inc. System for using a cache memory with a write-back architecture
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
JP4188744B2 (ja) * 2003-04-08 2008-11-26 株式会社ルネサステクノロジ メモリカード
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
JP4961693B2 (ja) * 2005-07-29 2012-06-27 ソニー株式会社 コンピュータシステム
US8122216B2 (en) * 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
CN101118783A (zh) * 2006-09-07 2008-02-06 晶天电子(深圳)有限公司 带有闪存坏块控制系统的电子数据闪存卡
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
JP4967680B2 (ja) * 2007-01-23 2012-07-04 ソニー株式会社 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8219781B2 (en) * 2008-11-06 2012-07-10 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
CN101833519B (zh) * 2009-03-12 2012-09-05 安凯(广州)微电子技术有限公司 一种减少存储技术设备中地址映射表常驻内存的方法
US8612666B2 (en) * 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
CN102043727B (zh) * 2009-10-10 2014-04-02 成都市华为赛门铁克科技有限公司 恢复固态硬盘映射表的方法及其装置
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US20120173795A1 (en) * 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
GB2496798B (en) * 2010-07-27 2016-10-12 Ibm Logical to physical address mapping in storage systems comprising solid state memory devices
US20120089765A1 (en) * 2010-10-07 2012-04-12 Huang Shih-Chia Method for performing automatic boundary alignment and related non-volatile memory device
US9075528B2 (en) * 2011-11-17 2015-07-07 Jade Quantum Technologies, Inc High-efficiency virtual disk management system
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
US10019353B2 (en) * 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
FI125308B (en) * 2012-07-05 2015-08-31 Blancco Oy Ltd Device, arrangement, method, and computer program for erasing data stored in mass storage
US9268682B2 (en) * 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9489296B1 (en) * 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
DE112013006590T5 (de) * 2013-02-05 2016-01-21 Arm Limited Handhabung von Speicherzugriffsvorgängen in einer Datenverarbeitungsvorrichtung
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9170938B1 (en) * 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
JP5950286B2 (ja) * 2014-05-29 2016-07-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アドレス変換テーブルを書き込む装置及び方法
JP6166476B2 (ja) * 2014-07-09 2017-07-19 株式会社日立製作所 メモリモジュールおよび情報処理システム
US20160210241A1 (en) * 2015-01-21 2016-07-21 HGST Netherlands B.V. Reducing a size of a logical to physical data address translation table
CN105988724B (zh) * 2015-02-12 2019-02-26 华为技术有限公司 多副本写入存储设备的方法及存储设备
JP6441171B2 (ja) * 2015-06-12 2018-12-19 東芝メモリ株式会社 メモリシステム
US10095423B2 (en) * 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
US10402323B2 (en) * 2015-10-28 2019-09-03 Nvidia Corporation Organizing memory to optimize memory accesses of compressed data
US20170177497A1 (en) * 2015-12-21 2017-06-22 Qualcomm Incorporated Compressed caching of a logical-to-physical address table for nand-type flash memory
CN108536612B (zh) * 2017-03-03 2021-12-21 西部数据技术公司 确定用于非易失性存储器中的地址映射的控制状态
CN107562644B (zh) * 2017-08-11 2021-02-09 记忆科技(深圳)有限公司 一种固态硬盘映射表的压缩方法
CN109213690A (zh) * 2018-09-21 2019-01-15 浪潮电子信息产业股份有限公司 一种l2p表的重建方法及相关装置

Also Published As

Publication number Publication date
US11061598B2 (en) 2021-07-13
US20200310669A1 (en) 2020-10-01
CN111737160A (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
DE102017104125B4 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102019133167A1 (de) Optimierte Handhabung mehrerer Kopien im Speichermanagment
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102016001066A1 (de) Zuordnung der logischen Blockadresse für Festplattenlaufwerke
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE102021114458A1 (de) Befehlsentleerung unter verwendung des host-speicherpuffers
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US