DE102022102980A1 - Operationsstechniken der datenverlagerung - Google Patents

Operationsstechniken der datenverlagerung Download PDF

Info

Publication number
DE102022102980A1
DE102022102980A1 DE102022102980.8A DE102022102980A DE102022102980A1 DE 102022102980 A1 DE102022102980 A1 DE 102022102980A1 DE 102022102980 A DE102022102980 A DE 102022102980A DE 102022102980 A1 DE102022102980 A1 DE 102022102980A1
Authority
DE
Germany
Prior art keywords
procedure
data
memory cells
block
data relocation
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
DE102022102980.8A
Other languages
English (en)
Inventor
Paolo Papa
Luigi Esposito
Massimo Iaculo
Guiseppe D'Eliseo
Alberto Sassara
Carminantonio Manganelli
Salvatore Del Prete
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102022102980A1 publication Critical patent/DE102022102980A1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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/7211Wear leveling

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)

Abstract

Es werden Verfahren, Systeme und Vorrichtungen für Datenverlagerungsoperationstechniken beschrieben. Ein Speichersystem kann Blöcke von Speicherzellen beispielsweise innerhalb einer nichtflüchtigen Speichervorrichtung des Speichersystems enthalten. Das Speichersystem kann einen Befehl zum Ausführen einer Datenverlagerungsoperation identifizieren, die mit einem Block von Speicherzellen verbunden ist, und kann zwischen einer ersten Prozedur und einer zweiten Prozedur zum Ausführen der Datenverlagerungsoperation wählen. Das Speichersystem kann zwischen der ersten Prozedur und der zweiten Prozedur basierend darauf auswählen, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Schwellenwert erfüllen. Zum Beispiel kann das Speichersystem die erste Prozedur auswählen, wenn der eine oder die mehreren Parameter den Schwellenwert erfüllen, und die zweite Prozedur auswählen, wenn der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen. Das Speichersystem kann die Datenverlagerungsoperation unter Verwendung der ausgewählten Prozedur ausführen.

Description

  • REFERENZ QUERVERWEIS
  • Die vorliegende Patentanmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung Nr. 63/150,901 von Papa et al. mit dem Titel „DATA RELOCATION OPERATION TECHNIQUES“, eingereicht am 18. Februar 2021, die auf den Rechtsnachfolger hiervon übertragen wurde.
  • TECHNISCHER BEREICH
  • Das Folgende bezieht sich im Allgemeinen auf ein oder mehrere Systeme für den Speicher und insbesondere auf Operationstechniken zur Datenverlagerung.
  • HINTERGRUND
  • Speichervorrichtungen werden häufig verwendet, um Informationen in verschiedenen elektronischen Vorrichtungen wie Computer, drahtlosen Kommunikationsvorrichtungen, Kameras, digitalen Displays und dergleichen zu speichern. Informationen werden gespeichert, indem Speicherzellen in einer Speichervorrichtung in verschiedene Zustände programmiert werden. Zum Beispiel können binäre Speicherzellen auf einen von zwei unterstützten Zuständen programmiert werden, oft entsprechend einer Logik 1 oder einer Logik 0. In einigen Beispielen kann eine einzelne Speicherzelle mehr als zwei mögliche Zustände unterstützen, von denen jeder von der Speicherzelle gespeichert werden kann. Um auf von einer Speichervorrichtung gespeicherte Informationen zuzugreifen, kann eine Komponente den Zustand einer oder mehrerer Speicherzellen innerhalb der Speichervorrichtung lesen oder erkennen. Um Informationen zu speichern, kann eine Komponente eine oder mehrere Speicherzellen innerhalb der Speichervorrichtung in die entsprechenden Zustände schreiben oder programmieren.
  • Es gibt verschiedene Arten von Speichervorrichtungen, darunter magnetische Festplatten, Direktzugriffsspeicher (random access memory - RAM), Nur-Lese-Speicher (read-only memory - ROM), dynamischer RAM (dynamic random-access memory - DRAM), synchroner dynamischer RAM (synchronous dynamic random-access memory - SDRAM), ferroelektrischer RAM (ferroelectric RAM - FeRAM), magnetoresistiver RAM (magnetoresistive random-access memory - MRAM), resistiver RAM (RRAM), Flash-Speicher, Phasenwechsel-Speicher (phase change memory - PCM), dreidimensionaler XPoint-Speicher (3D cross point - 3D XPoint), Nicht-Oder (not-or - NOR)- und Nicht-Und (not-and - NAND)-Speichervorrichtungen und andere. Speichervorrichtungen können flüchtig oder nichtflüchtig sein. Flüchtige Speicherzellen (z. B. DRAM-Zellen) können im Laufe der Zeit ihre programmierten Zustände verlieren, es sei denn, sie werden regelmäßig von einer externen Stromquelle aufgefrischt. Nichtflüchtige Speicherzellen (z. B. NAND-Speicherzellen) können ihren programmierten Zustand über einen längeren Zeitraum beibehalten, selbst wenn keine externe Stromquelle vorhanden ist.
  • Figurenliste
    • 1 veranschaulicht ein Beispiel eines Systems, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt.
    • 2 veranschaulicht ein Beispiel eines Datenschema, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt.
    • 3 veranschaulicht ein Beispiel eines Prozessablaufs, der die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen
    • 4 zeigt ein Blockdiagramm eines Speichersystems, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt.
    • 5 zeigt ein Flussdiagramm, das ein Verfahren oder mehrere Verfahren veranschaulicht, die die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützen.
  • DETAILLIERTE BESCHREIBUNG
  • Speichervorrichtungen eines Speichersystems können Daten an einer entsprechenden physischen Adresse speichern, wobei eine physische Adresse einen physischen Standort einer entsprechenden Speicherzelle innerhalb einer Speichervorrichtung identifizieren kann. Der physische Standort der Daten innerhalb der Speichervorrichtung kann sich im Laufe der Zeit ändern, da die Speichervorrichtung das Schreiben zusätzlicher Daten einschließt, Wartungsarbeiten von der Speichervorrichtung ausgeführt werden (z. B. Garbage-Collection-Operationen), oder aus einer Reihe anderer Gründe. Ein mit dem Speichersystem gekoppeltes Hostsystem kann Daten referenzieren (z. B. wenn es Lese-, Schreib- oder andere Befehle in Verbindung mit den Daten ausgibt), indem es logische Adressen (z. B. logische Blockadressen (logical block addresses - LBAs), virtuelle Adressen, Systemadressen oder andere logische Adressen) verwendet und die Speichervorrichtung kann eine Zuordnung zwischen den logischen Adressen, die den Daten zugeordnet sind, und den physikalischen Adressen der Speicherzellen, an denen die Daten gespeichert sind, erzeugen und aufrechterhalten, was die Änderung der physikalischen Adressen durch die Speichervorrichtung im Laufe der Zeit unterstützen kann.
  • Das Speichersystem kann eine Datenverlagerung (z. B. eine Garbage-Collect-Operation, eine dynamische Wear-Leveling-Operation, eine Zuverlässigkeitsverlagerungsoperation, eine protokollspezifische Faltungsoperation, eine Flush-Operation, eine Post-Reflow-Verlagerungsoperation oder eine andere Datenverlagerung) ausführen, um den Speicherplatz des Speichersystems freizugeben, zu konsolidieren oder zu verlagern. In einigen Beispielen kann eine Datenverlagerung mit einem Block von Speicherzellen des Speichersystems verbunden sein. Als Reaktion auf einen Befehl zum Ausführen des Datenverlagerungsoperation kann das Speichersystem beispielsweise gültige Seiten (d. h. Seiten, die gültige Daten enthalten) des Speicherzellenblocks finden und die gültigen Seiten in einen neuen Speicherzellenblock schreiben. Darüber hinaus kann das Speichersystem eine Zuordnung zwischen logischen Adressen aktualisieren, die mit den gültigen Seiten verbunden sind, und physischen Adressen von Speicherzellen des neuen Blocks, in dem die gültigen Seiten gespeichert sind. In einigen Fällen kann der Block der Speicherzellen, der mit der Datenverlagerung verbunden ist, jedoch eine relativ große Anzahl gültiger Seiten enthalten (z. B. sind etwa 80 Prozent der Seiten des Blocks der Speicherzellen gültige Seiten oder ein anderer Prozentsatz der Seiten des Blocks von Speicherzellen sind gültige Seiten). Einige Prozeduren zum Ausführung der Datenverlagerung können die Latenz und den Stromverbrauch des Speichersystems erhöhen, da die große Anzahl gültiger Seiten gefunden und die Zuordnung für jede gültige Seite aktualisiert wird, die in den neuen Block von Speicherzellen geschrieben wird. Daher können Techniken zur Verbesserung der Prozeduren zur Ausführung von Datenverlagerungsoperationen erwünscht sein.
  • In diesem Dokument werden Techniken, Systeme und Vorrichtungen beschrieben, um die Leistung der Datenverlagerungsoperation zu erhöhen, indem verschiedene Prozeduren zur Ausführung der Datenverlagerungsoperation auf der Grundlage oder als Reaktion auf einen oder mehrere Parameter ausgewählt werden, die mit der Datenverlagerungsoperation verbunden sind. Beispielsweise kann ein Speichersystem einen Befehl identifizieren, um eine Datenverlagerung auszuführen, die einem Block von Speicherzellen zugeordnet ist. Als Reaktion auf das Identifizieren des Befehls kann das Speichersystem basierend darauf oder als Reaktion darauf, ob ein oder mehrere Parameter, die der Datenverlagerungsoperation zugeordnet sind, einen Schwellenwert erfüllen, zwischen einer spärlichen Datenverlagerungsprozedur und einer dichten Datenverlagerungsprozedur auswählen. Zum Beispiel kann das Speichersystem die Dichte-Daten-Prozedur auswählen, wenn der eine oder die mehreren Parameter den Schwellenwert erfüllen (z. B. wenn ein Schwellenwertprozentsatz von Seiten des Blocks von Speicherzellen gültige Seiten sind) und kann die Spärliche-Daten-Prozedur auswählen, wenn der eine oder mehreren Parameter den Schwellenwert nicht erfüllen. Das Speichersystem kann die Datenverlagerungsoperation unter Verwendung der ausgewählten Prozedur ausführen. In einigen Beispielen kann die Dichte-Daten-Prozedur Prozesse enthalten, um gültige Seiten und ungültige Seiten des Blocks von Speicherzellen in einen neuen Block von Speicherzellen zu schreiben, ohne eine Zuordnung zu aktualisieren, die Beziehungen zwischen logischen Adressen und physikalischen Adressen anzeigt. Solche Prozesse können die Latenzzeit, die mit dem Auffinden gültiger Seiten des Blocks von Speicherzellen und dem Aktualisieren der Zuordnung verbunden ist, eliminieren oder reduzieren und dadurch die Latenzzeit zum Ausführen der Datenverlagerungsoperation reduzieren. In einigen Fällen kann die Dichte-Daten-Prozedur, wie hierin beschrieben, die Latenzzeit und den Energieverbrauch reduzieren und die Speichersystemleistung erhöhen, die mit der Ausführung von Datenverlagerungsoperationen verbunden ist.
  • Merkmale der Offenbarung werden zunächst im Zusammenhang mit Systemen unter Bezugnahme auf FIG. Ibeschrieben. Merkmale der Offenbarung werden im Zusammenhang mit einem Datenschema und einem Prozessablauf beschrieben, wie er unter Bezugnahme auf die 2 und 3 beschrieben ist. Diese und andere Merkmale der Offenbarung werden weiter veranschaulicht und beschrieben unter Bezugnahme auf ein Gerätediagramm und ein Flussdiagramm, die sich auf Datenverlagerungsoperationstechniken beziehen, wie unter Bezugnahme auf 4 und 5.
  • 1 veranschaulicht ein Beispiel eines Systems 100, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt. Das System 100 enthält ein Hostsystem 105, das mit einem Speichersystem 110 gekoppelt ist.
  • Ein Speichersystem 110 kann ein beliebiges Vorrichtung oder eine Sammlung von Vorrichtungen sein oder enthalten, wobei die Vorrichtung oder die Sammlung von Vorrichtungen mindestens ein Speicherarray enthält. Ein Speichersystem 110 kann eine Universal Flash Storage (UFS)-Vorrichtung, eine eingebettete Multi-Media-Controller (embedded multi-media controller - eMMC)-Vorrichtung, eine Flash-Vorrichtung, eine Universal Serial Bus (USB)- Flash-Vorrichtung, eine SD-Karte (Secure Digital - SD), ein Solid-State-Laufwerk (solid-state drive - SSD), eine Festplatte (hard disk drive - HDD), ein Dual in-Line-Memorymodul (DIMM), ein Small Outline DIMM (SO-DINIM) oder ein nichtflüchtiges DIMM (non-volatile DIMM - NVDIMM) sein oder enthalten, neben anderen Möglichkeiten.
  • Das System 100 kann in einer Computervorrichtung wie einem Desktop-Computer, einem Laptop-Computer, einem Netzwerkserver, einer mobilen Vorrichtung, einem Fahrzeug (z. B. Flugzeug, Drohne, Zug, Auto oder einem anderen Transportmittel), einer Internet of Things (IoT)-fähigen Vorrichtung , einem eingebetteten Computer (z. B. in einem Fahrzeug, einer Industrieanlage oder einer vernetzten kommerziellen Vorrichtung) oder einer anderen Computervorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung enthält, enthalten sein.
  • Das System 100 kann ein Hostsystem 105 enthalten, das mit dem Speichersystem 110 gekoppelt sein kann. In einigen Beispielen kann diese Kopplung eine Schnittstelle mit einem Hostsystem-Controller 106 enthalten, der ein Beispiel für eine Steuerkomponente sein kann, die so konfiguriert ist, dass sie das Hostsystem 105 veranlasst, verschiedene Operationen gemäß den hier beschriebenen Beispielen auszuführen. Das Hostsystem 105 kann ein oder mehrere Vorrichtungen enthalten und kann in einigen Fällen einen Prozessor-Chipsatz und einen vom Prozessor-Chipsatz ausgeführten Softwarestapel enthalten. Zum Beispiel kann das Hostsystem 105 eine Anwendung enthalten, die für die Kommunikation mit dem Speichersystem 110 oder einer darin befindlichen Vorrichtung konfiguriert ist. Der Prozessor-Chipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches (z. B. einen lokalen oder im Hostsystem 105 enthaltenen Speicher), einen Speicher-Controller (z. B. NVDIMM-Controller) und einen Speicherprotokoll-Controller (z. B. Peripheral Component Interconnect Express (PCIe)- Controller), einen Serial Advanced Technology Attachment (SATA)- Controller enthalten. Das Hostsystem 105 kann das Speichersystem 110 zum Beispiel dazu verwenden, Daten in das Speichersystem 110 zu schreiben und Daten aus dem Speichersystem 110 zu lesen. Obwohl ein Speichersystem 110 in 1 gezeigt wird, kann das Hostsystem 105 mit einer beliebigen Anzahl von Speichersystemen 110 gekoppelt werden.
  • Das Hostsystem 105 kann über mindestens eine physische Host-Schnittstelle mit dem Speichersystem 110 verbunden sein. Das Hostsystem 105 und das Speichersystem 110 können in einigen Fällen so konfiguriert sein, dass sie über eine physische Host-Schnittstelle unter Verwendung eines zugehörigen Protokolls kommunizieren (z. B. um Steuer-, Adress-, Daten- und andere Signale zwischen dem Speichersystem 110 und dem Hostsystem 105 auszutauschen oder anderweitig zu kommunizieren). Beispiele für eine physische Host-Schnittstelle können, ohne darauf beschränkt zu sein, eine SATA-Schnittstelle, eine UFS-Schnittstelle, eine eMMC-Schnittstelle, eine PCIe-Schnittstelle, eine USB-Schnittstelle, eine Fibre-Channel-Schnittstelle, eine SCSI-Schnittstelle (Small Computer System Interface), eine SAS-Schnittstelle (Serial Attached SCSI), eine DDR-Schnittstelle (Double Data Rate), eine DIMM-Schnittstelle (z. B. DIMM-Sockelschnittstelle, die DDR unterstützt), eine ONFI-Schnittstelle (Open NAND Flash Interface) und eine LPDDR-Schnittstelle (Low Power Double Data Rate) enthalten. In einigen Beispielen können eine oder mehrere solcher Schnittstellen in einem Hostsystem-Controller 106 des Hostsystems 105 und einem Speichersystem-Controller 115 des Speichersystems 110 enthalten sein oder auf andere Weise unterstützt werden. In einigen Beispielen kann das Hostsystem 105 mit dem Speichersystem 110 (z. B. kann der Hostsystem-Controller 106 mit dem Speichersystem-Controller 115 gekoppelt sein) über eine entsprechende physikalische Host-Schnittstelle für jede im Speichersystem 110 enthaltene Speichervorrichtung 130 oder über eine entsprechende physikalische Host-Schnittstelle für jeden im Speichersystem 110 enthaltenen Art von Speichervorrichtung 130 gekoppelt sein.
  • Das Speichersystem 110 kann einen Speichersystem-Controller 115 und ein oder mehrere Speichervorrichtungen 130 enthalten. Eine Speichervorrichtung 130 kann ein oder mehrere Speicherarrays eines beliebigen Typs von Speicherzellen enthalten (z. B. nichtflüchtige Speicherzellen, flüchtige Speicherzellen oder eine beliebige Kombination davon). Obwohl zwei Speichervorrichtungen 130-a und 130-b in dem Beispiel von 1 gezeigt werden, kann das Speichersystem 110 eine beliebige Anzahl von Speichervorrichtungen 130 enthalten. Ferner können, wenn das Speichersystem 110 mehr als eine Speichervorrichtung 130 enthält, verschiedene Speichervorrichtungen 130 innerhalb des Speichersystems 110 die gleichen oder unterschiedliche Typen von Speicherzellen enthalten.
  • Der Speichersystem-Controller 115 kann mit dem Hostsystem 105 gekoppelt sein und mit diesem kommunizieren (z. B. über die physikalische Host-Schnittstelle) und kann ein Beispiel für eine Steuerkomponente sein, die so konfiguriert ist, dass sie das Speichersystem 110 veranlasst, verschiedene Operationen gemäß den hier beschriebenen Beispielen auszuführen. Der Speichersystem-Controller 115 kann auch mit Speichervorrichtungen 130 gekoppelt sein und mit diesen kommunizieren, um Operationen wie das Lesen von Daten, das Schreiben von Daten, das Löschen von Daten oder das Auffrischen von Daten in einer Speichervorrichtung 130 - neben anderen solchen Operationen - auszuführen, die allgemein als Zugriffsoperationen bezeichnet werden können. In einigen Fällen kann der Speichersystemcontroller 115 Befehle vom Hostsystem 105 empfangen und mit einer oder mehreren Speichervorrichtungen 130 kommunizieren, um solche Befehle auszuführen (z. B. an Speicherarrays innerhalb der einen oder der mehreren Speichervorrichtungen 130). Zum Beispiel kann der Speichersystem-Controller 115 Befehle oder Operationen vom Hostsystem 105 empfangen und die Befehle oder Operationen in Anweisungen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speichervorrichtungen 130 zu erreichen. In einigen Fällen kann der Speichersystem-Controller 115 Daten mit dem Hostsystem 105 und mit einer oder mehreren Speichervorrichtungen 130 austauschen (z. B. als Reaktion auf Befehle vom Hostsystem 105 oder in anderer Weise in Verbindung mit diesen). Zum Beispiel kann der Speichersystem-Controller 115 Antworten (z. B. Datenpakete oder andere Signale), die mit den Speichervorrichtungen 130 verbunden sind, in entsprechende Signale für das Hostsystem 105 umwandeln.
  • Der Speichersystem-Controller 115 kann für andere Operationen im Zusammenhang mit den Speichervorrichtungen 130 konfiguriert werden. Zum Beispiel kann der Speichersystem-Controller 115 Operationen wie Wear-Levelling-Operationen, Garbage-Collection-Operationen, Fehlerkontrolloperationen wie Fehlererkennungsoperationen oder Fehlerkorrekturoperationen, Verschlüsselungsoperationen, Caching-Operationen, Medienverwaltungsoperationen, Hintergrundauffrischung, Zustandsüberwachung und Adressübersetzungen zwischen logischen Adressen (z. B. logischen Blockadressen (logical block addresses - LBAs)), die Befehlen vom Hostsystem 105 zugeordnet sind, und physischen Adressen (z. B. physischen Blockadressen), die Speicherzellen innerhalb der Speichervorrichtungen 130 zugeordnet sind, ausführen oder verwalten.
  • Der Speichersystem-Controller 115 kann Hardware wie eine oder mehrere integrierte Schaltungen oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination daraus enthalten. Die Hardware kann Schaltungen mit dedizierter (z. B. hartcodierter) Logik enthalten, um die hier dem Speichersystem-Controller 115 zugeschriebenen Operationen auszuführen. Der Speichersystem-Controller 115 kann ein Mikrocontroller, eine spezielle Logikschaltung (z. B. ein Field Programmable Gate Array (FPGA), eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC), ein digitaler Signalprozessor (digital signal processor - DSP)) oder eine andere geeignete Prozessor- oder Verarbeitungsschaltung sein oder enthalten.
  • Der Speichersystem-Controller 115 kann auch einen lokalen Speicher 120 enthalten. In einigen Fällen kann der lokale Speicher 120 einen Nur-Lese-Speicher (ROM) oder einen anderen Speicher enthalten, der den vom Speichersystem-Controller 115 ausführbaren Operationsscode (z. B. ausführbare Anweisungen) speichern kann, um Funktionen auszuführen, die dem Speichersystem-Controller 115 hierin zugewiesen werden. In einigen Fällen kann der lokale Speicher 120 zusätzlich oder alternativ auch statischen Direktzugriffsspeicher (static random access memory - SRAM) oder anderen Speicher enthalten, der vom Speichersystem-Controller 115 für interne Speicherungen oder Berechnungen verwendet werden kann, z. B. im Zusammenhang mit den hier dem Speichersystem-Controller 115 zugeschriebenen Funktionen. Zusätzlich oder alternativ kann der lokale Speicher 120 als Cache für den Speichersystem-Controller 115 dienen. Zum Beispiel können Daten in dem lokalen Speicher 120 gespeichert werden, wenn sie von einer Speichervorrichtung 130 gelesen oder in sie geschrieben werden, und die Daten können innerhalb des lokalen Speichers 120 zum nachfolgenden Abrufen oder Manipulieren (z. B. Aktualisieren) durch das Host-System 105 verfügbar sein (z. B. mit reduzierter Latenz relativ zu einer Speichervorrichtung 130) gemäß einer Cache-Richtlinie.
  • Obwohl das Beispiel des Speichersystems 110 in 1 mit dem enthaltenen Speichersystem-Controller 115 veranschaulicht ist, kann ein Speichersystem 110 in einigen Fällen keinen Speichersystem-Controller 115 enthalten. Zum Beispiel kann das Speichersystem 110 zusätzlich oder alternativ auf einen externen Controller (z. B. implementiert durch das Hostsystem 105) oder einen oder mehrere lokale Controller 135 zurückgreifen, die jeweils innenliegend in den Speichervorrichtungen 130 sein können, um die hierin dem Speichersystem-Controller 115 zugeschriebenen Funktionen auszuführen.Im Allgemeinen können eine oder mehrere Funktionen, die hierin dem Speichersystem-Controller 115 zugeschrieben werden, in einigen Fällen stattdessen von dem Hostsystem 105, einem lokalen Controller 135 oder einer beliebigen Kombination davon ausgeführt werden. In einigen Fällen kann eine Speichervorrichtung 130, das zumindest teilweise von einem Speichersystemcontroller 115 verwaltet wird, als verwaltete Speichervorrichtung bezeichnet werden. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (managed NAND - MNAND).
  • Eine Speichervorrichtung 130 kann ein oder mehrere Arrays nichtflüchtiger Speicherzellen enthalten. Zum Beispiel kann eine Speichervorrichtung 130 einen NAND-(z. B. NAND-Flash-)Speicher, ROM, Phasenänderungsspeicher (PCM), selbstwählenden Speicher, andere auf Chalkogenid basierende Speicher, ferroelektrischen Direktzugriffsspeicher (RAM) (FeRAM), Magnetzünder-RAM (MRAM), NOR (z. B. NOR Flash) Speicher, Spin Transfer Torque (STT)-MRAM, Conductive Bridging RAM (CBRAM), resistiver Direktzugriffsspeicher (RRAM), Oxid-basierter RRAM (OxRAM), elektrisch löschbarer programmierbarer ROM (EEPROM) oder eine beliebige Kombination davon, enthalten. Zusätzlich oder alternativ kann eine Speichervorrichtung 130 ein oder mehrere Arrays von flüchtigen Speicherzellen enthalten. Zum Beispiel kann eine Speichervorrichtung 130 RAM-Speicherzellen enthalten, wie beispielsweise dynamische RAM-(DRAM)-Speicherzellen und synchrone DRAM-(SDRAM)-Speicherzellen.
  • In einigen Beispielen kann eine Speichervorrichtung 130 einen lokalen Controller 135 enthalten (z. B. auf einem gleichen Chip oder innerhalb eines gleichen Pakets), der Operationen auf einer oder mehreren Speicherzellen der jeweiligen Speichervorrichtung 130 ausführen kann. Ein lokaler Controller 135 kann in Verbindung mit einem Speichersystem-Controller 115 betrieben werden oder eine oder mehrere Funktionen ausführen, die dem Speichersystem-Controller 115 zugewiesen sind. Zum Beispiel kann, wie in 1 veranschaulicht, eine Speichervorrichtung 130-a einen lokalen Controller 135-a enthalten und eine Speichervorrichtung 130-b einen lokalen Controller 135-b enthalten.
  • In einigen Fällen kann eine Speichervorrichtung 130 eine NAND-Vorrichtung (z. B. eine NAND-Flash-Vorrichtung) sein oder enthalten. Eine Speichervorrichtung 130 kann ein Speicherchip 160 sein oder enthalten. In einigen Fällen kann die Speichervorrichtung 130 beispielsweise ein Paket sein, das einen oder mehreren Chips 160 enthält. Ein Chip 160 kann in einigen Beispielen ein aus einem Wafer geschnittenes Stück eines Halbleiters in Elektronikqualität sein (z. B. ein aus einem Siliziumwafer geschnittener Siliziumchip). Jeder Chip 160 kann eine oder mehrere Ebenen 165 enthalten, und jede Ebene 165 kann einen entsprechenden Satz von Blöcken 170 enthalten, wobei jeder Block 170 einen entsprechenden Satz von Seiten 175 enthalten kann, und jede Seite 175 kann einen Satz von Speicherzellen enthalten.
  • In einigen Fällen kann eine NAND-Speichervorrichtung 130 Speicherzellen enthalten, die so konfiguriert sind, dass sie jeweils ein Bit an Informationen speichern, was als Single-Level-Zellen (SLCs) bezeichnet werden kann. Zusätzlich oder alternativ kann eine NAND-Speichervorrichtung 130 Speicherzellen enthalten, die so konfiguriert sind, dass sie jeweils mehrere Bits an Informationen speichern, die als Multi-Level-Zellen (MLC) bezeichnet werden, wenn sie so konfiguriert sind, dass sie jeweils zwei Bits an Informationen speichern, als Tri-Level-Zellen (TLC), wenn sie so konfiguriert sind, dass sie jeweils drei Bits an Informationen speichern, als Quad-Level-Zellen (QLC), wenn sie so konfiguriert sind, dass sie jeweils vier Bits an Informationen speichern, oder allgemeiner als Multi-Level-Speicherzellen. Multi-Level-Speicherzellen können im Vergleich zu SLC-Speicherzellen eine höhere Speicherdichte bereitstellen, können aber in einigen Fällen engere Lese- oder Schreibspannen oder eine höhere Komplexität der unterstützenden Schaltungen mit sich bringen.
  • In einigen Fällen können sich die Ebenen 165 auf Gruppen von Blöcken 170 beziehen, und in einigen Fällen können gleichzeitige Operationen in verschiedenen Ebenen 165 stattfinden. So können beispielsweise gleichzeitige Operationen an Speicherzellen in verschiedenen Blöcken 170 ausgeführt werden, solange sich die verschiedenen Blöcke 170 in verschiedenen Ebenen 165 befinden. In einigen Fällen kann die Ausführung gleichzeitiger Operationen in verschiedenen Ebenen 165 einer oder mehreren Einschränkungen unterliegen, wie z. B. der Ausführung identischer Operationen an Speicherzellen innerhalb verschiedener Seiten 175, die dieselbe Seitenadresse in ihren jeweiligen Ebenen 165 haben (z. B. in Bezug auf die Befehlsdekodierung, die Schaltung zur Dekodierung der Seitenadresse oder andere Schaltungen, die über die Ebenen 165 hinweg gemeinsam genutzt werden).
  • In einigen Fällen kann ein Block 170 Speicherzellen enthalten, die in Zeilen (Seiten 175) und Spalten (z. B. Zeichenfolgen, nicht gezeigt) organisiert sind. Zum Beispiel können Speicherzellen in einer gleichen Seite 175 eine gemeinsame Wortleitung teilen (z. B. gekoppelt sein), und Speicherzellen in einer gleichen Kette können eine gemeinsame Ziffernleitung teilen (z. B. gekoppelt sein) (auf die alternativ Bezug genommen werden kann) als Bitleitung).
  • In einigen Beispielen kann ein Satz von einem oder mehreren Blöcken 170 als ein virtueller Block bezeichnet werden. Jeder Block 170 des Satzes von Blöcken 170 des virtuellen Blocks kann eine Anzahl von Seiten 175 enthalten. Eine Seitenzeile des virtuellen Blocks kann sich auf eine einzelne Reihe von Seiten 175 des virtuellen Blocks beziehen. Zum Beispiel kann eine Seitenzeile, die der ersten Zeile des virtuellen Blocks entspricht, die erste Seite 175 jedes Blocks 170 des Satzes von Blöcken 170 enthalten. Ein dynamischer Block kann sich auf eine Untermenge von Seitenzeilen des virtuellen Blocks beziehen.
  • Bei einigen NAND-Architekturen können Speicherzellen auf einer ersten Granularitätsebene (z. B. auf der Seitenebene der Granularität) gelesen und programmiert (z. B. geschrieben) werden, aber auf einer zweiten Granularitätsebene (z. B. auf der Blockebene der Granularität) gelöscht werden. Das heißt, eine Seite 175 kann die kleinste Einheit des Speichers (z. B. ein Satz von Speicherzellen) sein, die unabhängig programmiert oder gelesen werden kann (z. B. gleichzeitig programmiert oder gelesen als Teil einer einzelnen Programm- oder Leseoperation), und ein Block 170 kann die kleinste Einheit des Speichers (z. B. ein Satz von Speicherzellen) sein, die unabhängig gelöscht werden kann (z. B. gleichzeitig gelöscht als Teil einer einzelnen Löschoperation). Ferner können in einigen Fällen NAND-Speicherzellen gelöscht werden, bevor sie mit neuen Daten überschrieben werden können. So kann beispielsweise eine benutzte Seite 175 in manchen Fällen erst dann aktualisiert werden, wenn der gesamte Block 170, der die Seite 175 enthält, gelöscht worden ist.
  • Um einige Daten innerhalb eines Blocks 170 zu aktualisieren, während andere Daten innerhalb des Blocks 170 beibehalten werden, kann die Speichervorrichtung 130 in einigen Fällen die zu speichernden Daten in einen neuen Block 170 kopieren und die aktualisierten Daten auf eine oder mehrere verbleibende Seiten 175 des neuen Blocks 170 schreiben. Die Speichervorrichtung 130 (z. B. der lokale Controller 135) oder der Speichersystemcontroller 115 können die Daten, die im alten Block 170 verbleiben, als ungültig oder veraltet markieren oder anderweitig kennzeichnen und können eine logisch-zu-physisch-(logical-to-physical - L2P)-Zuordnungstabelle aktualisieren, um die logische Adresse (z. B. LBA) der Daten dem neuen gültigen Block 170 statt dem alten ungültigen Block 170 zuzuordnen. In einigen Fällen kann ein solches Kopieren und Neuzuordnen beispielsweise aufgrund von Latenz- oder Abnutzungserwägungen anstelle des Löschens und Neuschreibens des gesamten alten Blocks 170 erfolgen. In einigen Fällen können eine oder mehrere Kopien einer L2P-Zuordnungstabelle in den Speicherzellen der Speichervorrichtung 130 (z. B. in einem oder mehreren Blöcken 170 oder Ebenen 165) zur Verwendung (z. B. zum Referenzieren und Aktualisieren) durch den lokalen Controller 135 oder Speichersystemcontroller 115 gespeichert werden.
  • In einigen Fällen können L2P-Zuordnungstabellen verwaltet werden und Daten können auf der Granularitätsebene der Seite als gültig oder ungültig markiert werden, und eine Seite 175 kann gültige Daten, ungültige Daten oder keine Daten enthalten. Ungültige Daten können Daten sein, die aufgrund einer neueren oder aktualisierten Version der Daten, die auf einer anderen Seite 175 der Speichervorrichtung 130 gespeichert sind, veraltet sind. Ungültige Daten wurden möglicherweise zuvor auf die ungültige Seite 175 programmiert, sind jedoch möglicherweise nicht mehr mit einer gültigen logischen Adresse verbunden, wie etwa einer logischen Adresse, auf die durch das Hostsystem 105 verwiesen wird. Gültige Daten können die neueste Version solcher Daten sein, die auf der Speichervorrichtung 130 gespeichert sind. Eine Seite 175, die keine Daten enthält, kann eine Seite 175 sein, auf die noch nie geschrieben wurde oder die gelöscht wurde.
  • In einigen Fällen kann ein Speichersystemcontroller 115 oder ein lokaler Controller 135 Operationen (z. B. als Teil eines oder mehrerer Medienverwaltungsalgorithmen) für eine Speichervorrichtung 130 ausführen, wie beispielsweise Wear Leveling, Hintergrundaktualisierung, Garbage Collection, Scrub, Block Scans, Gesundheitsüberwachung oder andere, oder eine Kombination davon. Zum Beispiel kann ein Block 170 in einer Speichervorrichtung 130 einige Seiten 175 mit gültigen Daten und einige Seiten 175 mit ungültigen Daten aufweisen. Um ein Warten, bis alle Seiten 175 im Block 170 ungültige Daten enthalten, um den Block 170 zu löschen und wiederzuverwenden, zu vermeiden, kann ein als „Garbage Collection“ bezeichneter Algorithmus aufgerufen werden, damit der Block 170 gelöscht und als freier Block für nachfolgende Schreiboperationen freigegeben werden kann. Die Garbage Collection kann sich auf einen Satz von Medienverwaltungsoperationen beziehen, die zum Beispiel das Auswählen eines Blocks 170 mit gültigen und ungültigen Daten, das Auswählen von Seiten 175 in dem Block 170, die gültige Daten enthalten, das Kopieren der gültigen Daten von den ausgewählten Seiten 175 auf neu Adressen (z. B. freie Seiten 175 in einem anderen Block 170), das Markieren der Daten in den zuvor ausgewählten Seiten 175 als ungültig und Löschen des ausgewählten Blocks 170 enthalten. Als Ergebnis kann die Anzahl der gelöschten Blöcke 170 erhöht werden, so dass mehr Blöcke 170 verfügbar sind, um nachfolgende Daten zu speichern (z. B. Daten, die nachfolgend vom Hostsystem 105 empfangen werden).
  • Der Speichersystemcontroller 115 oder der lokale Controller 135 können einen Befehl zum Ausführen einer Datenverlagerungsoperation identifizieren, der ein Beispiel für eine oder mehrere Medienverwaltungsoperationen, Wear-Levelling-Operationen, Garbage-Collection-Operationen, Faltungsoperationen oder eine beliebige Kombination davon sein kann, wie hier beschrieben. In einigen Beispielen kann die Datenverlagerungsoperation einem virtuellen Block zugeordnet sein. Einige Prozeduren zur Ausführung der Datenverlagerung können die Aktualisierung einer Zuordnung zwischen logischen Adressen, die mit den gültigen Seiten 175 des virtuellen Blocks verbunden sind, und physischen Adressen von Speicherzellen eines neuen virtuellen Blocks enthalten, in dem die gültigen Seiten 175 gespeichert sind. In einigen Fällen kann der virtuelle Block jedoch eine relativ große Anzahl von Seiten 175 enthalten. Ferner kann ein relativ großer Prozentsatz der Seiten 175 gültige Seiten 175 sein. Solche Prozeduren zum Ausführen der Datenverlagerungsoperation können die Latenz und den Stromverbrauch des Systems 100 aufgrund der Aktualisierung der Zuordnung für jede gültige Seite 175 erhöhen.
  • Um die Latenz und den Energieverbrauch im Zusammenhang mit der Ausführung von Datenverlagerungsoperationen zu reduzieren, kann die Speichersystemsteuerung 115 oder die lokale Steuerung 135 eine Prozedur aus einer oder mehreren Prozeduren zum Ausführen einer Datenverlagerungsoperation basierend auf oder als Reaktion auf einen oder Parameter auswählen, die der Datenverlagerungsoperation zugeordnet sind. Zum Beispiel kann der Speichersystemcontroller 115 oder der lokale Controller 135 einen Befehl identifizieren, um eine Datenverlagerungsoperation auszuführen, die einem dynamischen Block zugeordnet ist. Als Reaktion auf das Identifizieren des Befehls kann das Speichersystemcontroller 115 oder der lokale Controller 135 basierend darauf oder als Reaktion darauf, ob ein oder mehrere Parameter, die der Datenverlagerungsoperation zugeordnet sind, einen Schwellenwert erfüllen, zwischen einer spärlichen Datenverlagerungsprozedur und einer dichten Datenverlagerungsprozedur auswählen. Zum Beispiel kann der Speichersystemcontroller 115 oder der lokale Controller 135 die Dichte-Daten-Prozedur auswählen, wenn der eine oder die mehreren Parameter den Schwellenwert erfüllen (z. B. wenn ein Schwellenwertprozentsatz von Seiten des Blocks von Speicherzellen gültige Seiten sind) und kann die Spärliche-Daten-Prozedur auswählen, wenn der eine oder mehreren Parameter den Schwellenwert nicht erfüllen. Der Speichersystemcontroller 115 oder der lokale Controller 135 können die Datenverlagerungsoperation unter Verwendung der ausgewählten Prozedur ausführen. In einigen Beispielen kann die Dichte-Daten-Prozedur Prozesse enthalten, um gültige Seiten und ungültige Seiten des Blocks von Speicherzellen in einen neuen Block von Speicherzellen zu schreiben, ohne die Zuordnung zu aktualisieren, wodurch die mit der Aktualisierung der Zuordnung verbundene Latenz eliminiert oder reduziert wird. Außerdem können der Speichersystemcontroller 115 und der lokale Controller 135 durch Auswählen zwischen der Dichte-Daten-Verlagerungsprozedur und der Spärliche-Daten-Verlagerungsprozedur auf einer dynamischen Blockebene die Datenverlagerungsoperationsleistung auf der virtuellen Blockebene erhöhen.
  • Das System 100 kann eine beliebige Anzahl nicht-vorübergehender, computerlesbarer Medien enthalten, die Datenverlagerungsoperationstechniken unterstützen. Zum Beispiel können das Hostsystem 105, der Speichersystemcontroller 115 oder eine Speichervorrichtung 130 ein oder mehrere nicht-vorübergehende computerlesbare Medien zum Speichern von Anweisungen (z. B. Firmware) zum Ausführen der hierin dem Host zugeschriebenen Funktionen enthalten oder auf andere Weise darauf zugreifen System 105, Speichersystemcontroller 115 oder Speichervorrichtung 130. Zum Beispiel können solche Anweisungen, wenn sie durch das Hostsystem 105 (z. B. durch den Hostsystemcontroller 106), durch den Speichersystemcontroller 115 oder durch eine Speichervorrichtung 130 (z. B. durch einen lokalen Controller 135) ausgeführt werden, die Host-System 105, Speichersystem-Controller 115 oder Speichervorrichtung 130, um eine oder mehrere zugehörige Funktionen, wie hierin beschrieben, auszuführen.
  • In einigen Fällen kann ein Speichersystem 110 einen Speichersystemcontroller 115 verwenden, um ein verwaltetes Speichersystem bereitzustellen, das beispielsweise ein oder mehrere Speicherarrays und zugehörige Schaltkreise in Kombination mit einem lokalen (z. B. On-Chip oder In-Paket) Controller (z. B. lokaler Controller 135). Ein Beispiel für ein verwaltetes Speichersystem ist ein MNAND-System.
  • 2 veranschaulicht ein Beispiel eines Datenschemas 200, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt. Das Datenschema 200 kann durch Komponenten eines Systems 100 implementiert werden, wie unter Bezugnahme auf 1 beschrieben. Zum Beispiel kann das Datenschema 200 durch eine Speichervorrichtung eines Speichersystems, wie etwa eine Speichervorrichtung 130, und einen Controller eines Speichersystems oder einer Speichervorrichtung (oder beides) wie etwa einen Speichersystem-Controller 115 oder eine lokale Steuerung 135 implementiert werden, wie unter Bezugnahme auf 1 beschrieben. In einigen Beispielen kann das Datenschema 200 eine logische Darstellung und Organisation von Speicherzellen sein, die von dem Controller verwendet werden, um Datenverlagerungsoperationen auszuführen, wie hierin beschrieben.
  • Das Datenschema 200 bildet einen virtuellen Block 205 ab. Der virtuelle Block 205 kann eine logische Gruppierung von einem oder mehreren Blöcken 210 sein, wobei jeder Block 210 ein Beispiel für einen Block 170 sein kann, wie unter Bezugnahme auf 1 beschrieben. Zum Beispiel kann der Controller einen Block 210-a, einen Block 210-b und einen Block 210-c gruppieren und kann sich auf die Gruppe als einen virtuellen Block 205 beziehen. Der Controller kann dem virtuellen Block 205 einen Index zuweisen, den der Controller verwenden kann, um den virtuellen Block 205 zu lokalisieren und auf Speicherzellen des virtuellen Blocks 205 zuzugreifen. Zur Veranschaulichung stellt 2 den virtuellen Block 205 so dar, dass er drei Blöcke 210 enthält, jedoch können die hierin offenbarten Prinzipien angepasst und angewendet werden, damit der virtuelle Block 205 eine beliebige Anzahl von Blöcken 210 beinhaltet.
  • Jeder der Blöcke 210-a, 210-b und 210-c kann eine Anzahl von Seiten 220 enthalten, die Beispiele von Seiten 175 sein können, wie unter Bezugnahme auf 1 beschrieben. Eine Seitenzeile des virtuellen Blocks 205 kann sich auf eine einzelne Reihe von Seiten 220 des virtuellen Blocks 205 beziehen. Zum Beispiel kann eine Seitenzeile, die der obersten Zeile des virtuellen Blocks 205 entspricht, die oberste Seite 220 des Blocks 210-a, des Blocks 210-b und des Blocks 210-c enthalten. Ein dynamischer Block 215 kann sich auf eine logische Gruppierung von Seitenzeilen des virtuellen Blocks 205 beziehen. Zum Beispiel kann ein dynamischer Block 215-a die ersten vier Seitenzeilen des virtuellen Blocks 205 enthalten; ein dynamischer Block 215-b kann die nächsten vier Seitenzeilen des virtuellen Blocks 205 enthalten; und ein dynamischer Block 215-c kann die letzten vier Seitenzeilen des virtuellen Blocks 205 enthalten. In einigen Beispielen kann eine Anzahl von Seitenzeilen, die in einem jeweiligen dynamischen Block 215 enthalten sind, vorkonfiguriert sein. In einigen anderen Beispielen kann der Controller die Anzahl von Seitenzeilen konfigurieren, die in einem jeweiligen dynamischen Block 215 enthalten sind. Der Controller kann jedem dynamischen Block 215 einen Index zuweisen, den der Controller verwenden kann, um einen jeweiligen dynamischen Block 215 zu lokalisieren und auf Speicherzellen des jeweiligen dynamischen Blocks 215 zuzugreifen.
  • Der Controller kann eine erste Zuordnung erzeugen, verwalten und speichern, die Indizes der dynamischen Blöcke 215 entsprechenden virtuellen Blöcken 205 zuordnet. Zum Beispiel kann ein Eintrag der ersten Zuordnung, die den dynamischen Block 215-a auf den virtuellen Block 205 abbildet, einen ersten Index, der dem dynamischen Block 215-a zugeordnet ist, einen zweiten Index, der dem virtuellen Block 205 zugeordnet ist, und einen Offset von dem dynamischen Block 215-a innerhalb des virtuellen Blocks 205 enthalten. Dementsprechend kann der Controller durch Lesen des Eintrags der ersten Zuordnung den virtuellen Block 205 bestimmen, in dem sich der dynamische Block 215-a befindet, sowie die Position des dynamischen Blocks 215-a innerhalb des virtuellen Blocks 205. In einigen Beispielen kann die erste Zuordnung als dynamische Blockarraytabelle bezeichnet werden.
  • Der Controller kann eine zweite Zuordnung erzeugen, verwalten und speichern, die Beziehungen zwischen logischen Adressen und entsprechenden physikalischen Adressen anzeigt. Zum Beispiel kann ein Eintrag der zweiten Zuordnung eine logische Adresse einer Seite 220 einer entsprechenden physischen Adresse der Seite 220 zuordnen. Dementsprechend kann der Controller durch Lesen des Eintrags der zweiten Zuordnung die physikalische Adresse einer Seite 220 bestimmen. In einigen Beispielen kann die zweite Zuordnung ein Beispiel für eine physikalische Zeigertabelle (physical pointer table - PPT) sein, die logische Adressen (z. B. LBAs) entsprechenden physikalische Adressen einer nichtflüchtigen Speichervorrichtung (z. B. einer Speichervorrichtung 130, einer NAND-Vorrichtung, oder einer anderen nichtflüchtigen Speichervorrichtung) zuordnet, die mit dem Controller gekoppelt ist. In einigen Fällen kann die zweite Zuordnung ein Beispiel für eine L2P-Zuordnungstabelle sein. In einigen Beispielen kann der Controller zum Aktualisieren der zweiten Zuordnung (z. B. wenn Daten, die in einer Seite 220 enthalten sind, auf eine andere Seite 220 geschrieben werden) mindestens einen Teil der zweiten Zuordnung, die einen zu aktualisierenden Eintrag enthält, in eine flüchtige Speichervorrichtung des Speichersystems (z. B. einen lokalen Speicher 120, eine Speichervorrichtung 130 mit flüchtigen Speicherzellen) laden, den Eintrag aktualisieren und den Teil der zweiten Zuordnung auf eine nichtflüchtige Speichervorrichtung des Speichersystems (z. B. eine Speichervorrichtung 130 mit nichtflüchtigen Speicherzellen) entladen.
  • Der Controller kann einen Befehl zum Ausführen einer Datenverlagerungsoperation identifizieren, die einem dynamischen Block 215 zugeordnet ist, und kann zwischen einer Dichte-Daten-Verlagerungsprozedur und einer Spärliche-Daten-Verlagerungsprozedur wählen, um die Datenverlagerungsoperation auszuführen. Um die Datenverlagerungsoperation unter Verwendung der Dichte-Datenverlagerungsoperation auszuführen, kann der Controller die im zugeordneten dynamischen Block 215 gespeicherten Daten lesen und die Daten in einen zweiten dynamischen Block 215 (z. B. eines anderen virtuellen Blocks 205) schreiben. Wenn beispielsweise die Datenverlagerungsoperation mit dem dynamischen Block 215-a verbunden ist, kann der Controller die in jeder der Seiten 220 gespeicherten Daten lesen, die in dem dynamischen Block 215-a enthalten sind, und kann die Daten auf die Seiten 220 des zweiten dynamischen Blocks 215 schreiben. In einigen Beispielen kann der dynamische Block 215-a eine oder mehrere Seiten 220 enthalten, die gültige Daten enthalten, und eine oder mehrere Seiten 220 enthalten, die ungültige Daten enthalten. Hier kann der Controller sowohl die Seiten 220 mit gültigen Daten als auch die Seiten 220 mit ungültigen Daten lesen und kann sowohl die gültigen Daten als auch die ungültigen Daten in den zweiten dynamischen Block 215 schreiben. In einigen Beispielen kann der Controller die aus dem dynamischen Block 215-a gelesenen Daten in derselben Reihenfolge in den zweiten dynamischen Block 215 schreiben, in der die Daten in den dynamischen Block 215-a geschrieben wurden. Mit anderen Worten kann das Ausführen der Datenverlagerungsoperation unter Verwendung der Dichte-Daten-Verlagerungsprozedur das Kopieren des dynamischen Blocks 215-a in den zweiten dynamischen Block 215 enthalten.
  • Um die Datenverlagerungsoperation unter Verwendung der Dichte-Daten-Prozedur auszuführen, kann der Controller außerdem die erste Zuordnung aktualisieren, um einen aktualisierten Standort des zugeordneten dynamischen Blocks 215 anzuzeigen, und kann davon absehen, die zweite Zuordnung zu aktualisieren. Zum Beispiel kann der Controller einen Eintrag der ersten Zuordnung aktualisieren, die dem dynamischen Block 215-a zugeordnet ist. Um den Eintrag der ersten Zuordnung zu aktualisieren, kann der Controller den zweiten Index des Eintrags aktualisieren, um einen virtuellen Block 205 anzuzeigen, der dem zweiten dynamischen Block 215 zugeordnet ist, und kann den Offset aktualisieren, um einen Standort des dynamischen Blocks 215-a innerhalb des virtuellen Blocks 205 anzuzeigen. Da der zweite dynamische Block 215 eine Kopie des dynamischen Blocks 215-a ist (z. B. ändert der dynamische Block 215-a Positionen), kann der Controller davon absehen, die zweite Zuordnung zu aktualisieren. Stattdessen kann der Controller anschließend die aktualisierte erste Zuordnung verwenden (z. B. in Verbindung mit der nicht aktualisierten zweiten Zuordnung), um die physikalische Adresse einer Seite 220 des zweiten dynamischen Blocks 215 zu bestimmen.
  • Um die Datenverlagerungsoperation unter Verwendung der Spärliche-Daten-Verlagerungsprozedur auszuführen, kann der Controller alternativ Seiten 220 eines dynamischen Blocks 215 bestimmen, der der Datenverlagerungsprozedur zugeordnet ist, die gültige Daten enthalten, und kann die Seiten, die gültige Daten enthalten, in einen zweiten dynamischen Block 215 schreiben (z. B. eines anderen virtuellen Blocks 205). Wenn beispielsweise die Datenverlagerungsoperation dem dynamischen Block 215-b zugeordnet ist, kann der Controller bestimmen, welche Seiten 220, die in dem dynamischen Block 215-b enthalten sind, gültige Daten enthalten und kann Seiten 220 mit gültigen Daten in den zweiten dynamischen Block 215 schreiben. Außerdem wird die zweite Zuordnung aktualisiert, um die logischen Adressen der Seiten 220, die in den zweiten dynamischen Block 215 geschrieben wurden, den entsprechenden physikalischen Adressen des zweiten dynamischen Blocks 215 zuzuordnen.
  • Die Dichte-Daten-Verlagerungsprozedur kann die mit der Ausführung einer Datenverlagerungsoperation verbundene Latenzzeit im Vergleich zur Verwendung der Spärliche-Daten-Verlagerungsprozedur reduzieren. Zum Beispiel kann eine erste Latenz, die mit der Ausführung der Datenverlagerungsoperation mithilfe der Dichte-Daten-Verlagerungsprozedur verbunden ist, mithilfe der folgenden Gleichung geschätzt (z. B. berechnet) werden: L 1 = C I ( t D L + t D F )
    Figure DE102022102980A1_0001
    wobei L1 die erste Latenz ist, C1 eine Anzahl von Seiten 220 ist, die in einen zweiten dynamischen Block 215 kopiert werden (z. B. die Anzahl von Seiten 220, die in dem dynamischen Block 215-a enthalten sind), tDL eine Zeitdauer zum Laden der aus einem dynamischen Block 215 gelesenen Daten in eine flüchtige Speichervorrichtung ist, und tDF eine Zeitdauer zum Löschen der Daten aus der flüchtigen Speichervorrichtung ist. Außerdem kann eine zweite Latenz, die mit der Ausführung der Datenverlagerungsoperation mithilfe der Spärliche-Daten-Verlagerungsprozedur verbunden ist, mithilfe der folgenden Gleichung geschätzt (z. B. berechnet) werden: L 2 = T [ t T L + M ( t T S + t D L ) + t T U + t T F ] + C s t d t D F
    Figure DE102022102980A1_0002
    wobei L2 die zweite Latenz ist, T eine Anzahl von Teilen der zweiten Zuordnung ist, die von der flüchtigen Speichervorrichtung geladen/entladen werden sollen, tTL eine Zeitdauer ist, um einen Teil der zweiten Zuordnung zu laden, M eine durchschnittliche Anzahl logischer Adressen ist, die mit gültigen Seiten pro Teil der zweiten Zuordnung verbunden sind, tTS eine Zeitdauer zum Auffinden eines Teils der zweiten Zuordnung ist, tDL eine Zeitdauer zum Laden der aus einem dynamischen Block 215 gelesenen Daten in die flüchtige Speichervorrichtung ist, tTU eine Zeitdauer zum Aktualisieren eines Teils der zweiten Zuordnung ist, die in die flüchtige Speichervorrichtung geladen wurde, tTF eine Zeitdauer zum Entladen eines Teils der zweiten Zuordnung ist, c", eine Anzahl von Seiten 220 ist, die in einen zweiten dynamischen Block 215 kopiert werden (z. B. die Anzahl von Seiten 220, die in dem dynamischen Block 215-b enthalten sind, die gültige Daten enthalten), und tDF eine Zeitdauer zum Löschen der Daten aus der flüchtigen Speichervorrichtung ist.
  • Wenn die Werte von T und M zunehmen, erhöht sich die zweite Latenzzeit, die mit der Spärliche-Daten-Verlagerungsprozedur verbunden ist, relativ zu der ersten Latenzzeit, die mit der Dichte-Daten-Verlagerungsprozedur verbunden ist. Außerdem kann der Wert von Cstd im Allgemeinen kleiner sein als der Wert von C1. Wenn jedoch der Wert von Cstd ansteigt, erhöht sich die zweite Latenz relativ zur ersten Latenz, da der Wert von CI relativ statisch bleiben kann. Dementsprechend kann, wenn eine Anzahl von Seiten eines dynamischen Blocks 215, die gültige Daten enthalten, zunimmt, die Dichte-Daten-Verlagerungsprozedur relativ zu der Spärliche-Daten-Verlagerungsprozedur zunehmend schneller werden. Als Beispiel kann eine Defragmentierungsoperation, die auf einer B16C-NAND-Vorrichtung unter Verwendung der Dichte-Daten-Verlagerungsprozedur ausgeführt wird, ungefähr 2,5-mal schneller sein als unter Verwendung der Spärliche-Daten-Verlagerungsprozedur. Dementsprechend kann die Verwendung der Dichte-Daten-Verlagerungsprozedur die Latenzzeit reduzieren, die mit der Ausführung von Datenverlagerungsoperationen verbunden ist.
  • In einigen Beispielen kann die Datenverlagerungsoperation mit dem virtuellen Block 205 verbunden sein. Hier kann der Controller unabhängig eine Prozedur auswählen, um die Datenverlagerungsoperation für jeden dynamischen Block 215 des virtuellen Blocks 205 auszuführen. Zum Beispiel kann der Controller die Dichte-Daten-Verlagerungsprozedur auswählen, um die Datenverlagerungsoperation an dem dynamischen Block 215-a und den dynamischen Block 215-c auszuführen, und die Spärliche-Daten-Verlagerungsprozedur, um die Datenverlagerungsoperation an dem dynamischen Block 215-b auszuführen. Der Controller kann die entsprechende Prozedur auswählen, um die Datenverlagerungsoperation an einem jeweiligen dynamischen Block 215 basierend darauf oder als Reaktion darauf auszuführen, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation für den jeweiligen dynamischen Block 215 verbunden sind, einen oder mehrere zugehörige Schwellenwerte erfüllen. Auf diese Weise kann der Controller einen einheitlichen Datenverlagerungsansatz implementieren, der Prozeduren auswählt, um Datenverlagerungsoperationen pro dynamischem Block auszuführen.
  • 3 veranschaulicht ein Beispiel eines Prozessablaufs 300, der die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt. Der Prozessablauf 300 kann durch Komponenten eines Speichersystems ausgeführt werden, wie beispielsweise das unter Bezugnahme auf 1 beschriebene Speichersystem 110. Zum Beispiel kann der Prozessablauf 300 von einem Controller eines Speichersystems oder einer Speichervorrichtung (oder beiden) ausgeführt werden, wie beispielsweise einem Speichersystemcontroller 115 oder einem lokalen Controller 135, wie unter Bezugnahme auf 1 beschrieben. Der Prozessablauf 300 kann einen Prozess zum Auswählen einer Prozedur zum Ausführen einer Datenverlagerungsoperation und zum Ausführen der Datenverlagerungsoperation unter Verwendung der ausgewählten Prozedur darstellen, die unter anderem implementiert werden kann, um Latenz und Stromverbrauch zu reduzieren und die Systemleistung zu erhöhen. Aspekte des Prozessablaufs 300 können neben anderen Komponenten durch einen Controller implementiert werden. Zusätzlich oder alternativ können Aspekte des Ablaufprozesses 300 als Anweisungen implementiert werden, die in einem Speicher gespeichert sind (z. B. Firmware, die in einem mit dem Speichersystem 135 gekoppelten Speicher gespeichert ist). Zum Beispiel können die Anweisungen, wenn sie von einem Controller (z. B. einer Speichersystemsteuerung 115, einer lokalen Steuerung 135) ausgeführt werden, den Controller veranlassen, die Operationen des Prozessablaufs 300 auszuführen.
  • In der folgenden Beschreibung des Prozessablaufs 300 können die Operationen in unterschiedlichen Reihenfolgen oder zu unterschiedlichen Zeiten ausgeführt werden. Einige Operationen können auch aus dem Prozessablauf 300 weggelassen werden und andere Vorgänge können dem Prozessablauf 300 hinzugefügt werden.
  • Bei 305 kann ein Befehl zum Ausführen einer Datenverlagerungsoperation identifiziert werden. Zum Beispiel kann der Controller einen Befehl zum Ausführen der Datenverlagerungsoperation identifizieren, wobei die Datenverlagerungsoperation mit einem dynamischen Block (z. B. einem dynamischen Block 215) einer mit dem Controller gekoppelten Speichervorrichtung (z. B. einer nichtflüchtigen Speichervorrichtung einschließlich nichtflüchtiger Speicherzellen) verbunden ist. Um den Befehl zu identifizieren, kann der Controller in einigen Beispielen den Befehl von einem Hostsystem empfangen, das mit dem Controller gekoppelt ist. In einigen anderen Beispielen kann der Controller zum Identifizieren des Befehls die Datenverlagerungsoperation einleiten.
  • Bei 310 können ein oder mehrere Parameter, die der Datenverlagerungsoperation zugeordnet sind, dahingehend bewertet werden, ob der eine oder die mehreren Parameter einen oder mehrere zugeordnete Schwellenwerte erfüllen. Beispiele des einen oder der mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, können einen Prozentsatz von Seiten des dynamischen Blocks, die gültige Daten enthalten, eine mit der Datenverlagerungsoperation verbundene Latenzzeit, eine Art der Datenverlagerungsoperation, einen Zustand des mit dem Controller gekoppelten Hostsystems, eine Anzahl von Seiten des dynamischen Blocks, die gültige Daten enthalten, oder eine beliebige Kombination davon enthalten.
  • Der Controller kann bestimmen, ob der eine oder die mehreren Parameter einen oder mehrere zugehörige Schwellenwerte erfüllen. Zum Beispiel kann der Controller bestimmen, ob ein Prozentsatz der Seiten des dynamischen Blocks, der gültige Daten enthält, einen Schwellenwert für den Prozentsatz gültiger Seiten erfüllt (z. B. 80 Prozent der Seiten des dynamischen Blocks sind gültige Seiten oder einen anderen Schwellenwert für den Prozentsatz gültiger Seiten), ob eine mit der Datenverlagerungsoperation verbundene Latenzzeit eine Schwellenlatenzzeit erfüllt (z. B. ob eine mit dem Ausführen der Datenverlagerungsoperation unter Verwendung einer Spärliche-Daten-Verlagerungsprozedur verbundene Latenzzeit eine Schwellenlatenzzeit erfüllt, ob eine mit der Ausführung der Datenverlagerungsoperation unter Verwendung der Dichte-Daten-Verlagerungsprozedur eine Schwellenlatenzzeit erfüllt), ob die Art der Datenverlagerung eine bestimmte Art von Datenverlagerungsoperation ist (z. B. ob die Art einer Vordergrundoperation, einer Hintergrundoperation oder einer anderen Art von Operation entspricht), ob sich ein Hostsystem im Ruhezustand befindet, ob eine Anzahl von Seiten des dynamischen Blocks, die gültige Daten enthalten, einen Schwellenwert für eine gültige Seitenanzahl erfüllt oder eine Kombination davon.
  • Der Controller kann einen Zähler führen, um zu bestimmen, ob der Prozentsatz von Seiten des dynamischen Blocks, der gültige Daten enthält, den Schwellenwert für den Prozentsatz gültiger Seiten erfüllt, oder ob die Anzahl von Seiten des dynamischen Blocks, der gültige Daten enthält, den Schwellenwert für die Anzahl gültiger Seiten erfüllt, oder beides. Zum Beispiel kann der Controller einen Zähler erzeugen, verwalten und speichern, der eine Anzahl von Seiten des dynamischen Blocks verfolgt, die gültige Daten enthalten. Der Controller kann die vom Zähler angezeigte Anzahl von Seiten, die gültige Daten enthalten, mit einer Gesamtanzahl von Seiten des dynamischen Blocks vergleichen, um den Prozentsatz der Seiten des dynamischen Blocks zu berechnen, die gültige Daten enthalten. Der Controller kann dann den berechneten Prozentsatz mit dem Schwellenwert für den gültigen Seitenprozentsatz vergleichen, um zu bestimmen, ob der berechnete Prozentsatz den Schwellenwert für den gültigen Seitenprozentsatz erfüllt. Zusätzlich oder alternativ kann der Controller die Anzahl von Seiten des dynamischen Blocks, die gültige Daten enthalten, die durch den Zähler angezeigt werden, mit der Schwellenanzahl gültiger Seiten vergleichen, um zu bestimmen, ob die Anzahl von Seiten des dynamischen Blocks, die gültige Daten enthalten, die Schwellenanzahl gültiger Seiten erfüllt. In einigen Beispielen kann der Zähler als dynamischer Zähler gültiger Seiten bezeichnet werden.
  • Wenn der Controller bei 310 bestimmt, dass der eine oder die mehreren Parameter den zugeordneten einen oder die mehreren Schwellenwerte erfüllen, kann der Controller 315 und 320 wie folgt ausführen. Wenn der Controller zum Beispiel bestimmt, dass der Prozentsatz der Seiten des dynamischen Blocks, der gültige Daten enthält, größer (z. B. oder gleich) dem Schwellenwert für den Prozentsatz gültiger Seiten ist, wird das Ausführen der Datenverlagerungsoperation unter Verwendung einer Spärliche-Daten-Verlagerungsprozedur eine Latenzschwelle nicht erfüllen, die Datenverlagerungsoperation ist mit einer Vordergrundoperation verbunden, das Hostsystem befindet sich in einem anderen Zustand als einem Ruhezustand, die Anzahl der Seiten des dynamischen Blocks, die gültige Daten enthalten, ist größer (z. B. oder gleich) der Schwellenanzahl gültiger Seiten oder einer Kombination davon, kann der Controller 315 und 320 wie folgt ausführen.
  • Bei 315 kann die Dichte-Daten-Verlagerungsprozedur ausgewählt werden. Zum Beispiel kann der Controller die Dichte-Daten-Verlagerungsprozedur auswählen, um die Datenverlagerungsoperation basierend auf oder als Reaktion auf das Bestimmen, ob (z. B. das Bestimmen, dass) der eine oder die mehreren Parameter den zugeordneten einen oder die mehreren Schwellenwerte erfüllen, auszuführen.
  • Bei 320 kann die Datenverlagerungsoperation unter Verwendung der Dichte-Daten-Verlagerungsprozedur ausgeführt werden, wie unter Bezugnahme auf 2 beschrieben. Um beispielsweise die Datenverlagerungsoperation unter Verwendung der Dichte-Daten-Verlagerungsprozedur auszuführen, kann der Controller Daten lesen, die in dem dynamischen Block gespeichert sind, der der Datenverlagerungsoperation zugeordnet ist, und die aus dem dynamischen Block gelesenen Daten in einen zweiten dynamischen Block schreiben. In einigen Beispielen kann der dynamische Block sowohl gültige Seiten als auch ungültige Seiten enthalten. Hier kann der Controller sowohl gültige Daten der gültigen Seiten als auch ungültige Daten der ungültigen Seiten in den zweiten dynamischen Block schreiben.
  • Wenn der Controller bei 310 bestimmt, dass der eine oder die mehreren Parameter den zugeordneten einen oder die mehreren Schwellenwerte nicht erfüllen, kann der Controller 325 und 330 wie folgt ausführen. Wenn der Controller zum Beispiel bestimmt, dass der Prozentsatz der Seiten des dynamischen Blocks, der gültige Daten enthält, geringer (z. B. oder gleich) dem Schwellenwert für den Prozentsatz gültiger Seiten ist, wird das Ausführen der Datenverlagerungsoperation unter Verwendung einer Spärliche-Daten-Verlagerungsprozedur eine Latenzschwelle erfüllen, die Datenverlagerungsoperation ist mit einer Hintergrundoperation verbunden, das Hostsystem befindet sich in einem Ruhezustand, die Anzahl der Seiten des dynamischen Blocks, die gültige Daten enthalten, ist geringer (z. B. oder gleich) der Schwellenanzahl gültiger Seiten oder einer Kombination davon, kann der Controller 325 und 330 wie folgt ausführen.
  • Bei 325 kann die Spärliche-Daten-Verlagerungsprozedur ausgewählt werden. Zum Beispiel kann der Controller die Spärliche-Daten-Verlagerungsprozedur auswählen, um die Datenverlagerungsoperation basierend auf oder als Reaktion auf das Bestimmen, ob (z. B. das Bestimmen, dass) der eine oder die mehreren Parameter den zugeordneten einen oder die mehreren Schwellenwerte nicht erfüllen, auszuführen.
  • Bei 330 kann die Datenverlagerungsoperation unter Verwendung der Spärliche-Datenverlagerungsprozedur ausgeführt werden, wie unter Bezugnahme auf 2 beschrieben. Um beispielsweise die Datenverlagerungsoperation unter Verwendung der Spärliche-Daten-Verlagerungsprozedur auszuführen, kann der Controller Seiten des dynamischen Blocks, die gültige Daten enthalten, in einen zweiten dynamischen Block schreiben. Hier kann der Controller davon absehen, Seiten des dynamischen Blocks, die ungültige Daten enthalten, in den zweiten dynamischen Block zu schreiben. Zusätzlich kann der Controller eine Zuordnung aktualisieren, die Beziehungen zwischen logischen Adressen und physikalischen Adressen anzeigt (z. B. eine PPT, eine L2P-Tabelle oder eine andere logisch-zuphysisch-Zuordnung), um logische Adressen, die mit den in den zweiten dynamischen Block geschriebenen Seiten verknüpft sind, entsprechenden physischen Adressen des zweiten dynamischen Blocks zuzuordnen.
  • 4 zeigt ein Blockdiagramm 400 eines Speichersystems 420, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt. Das Speichersystem 420 kann ein Beispiel von Aspekten eines Speichersystems sein, wie es unter Bezugnahme auf die 1 bis 3beschrieben wurde. Das Speichersystem 420 oder verschiedene Komponenten davon können ein Beispiel für Mittel zum Ausführen verschiedener Aspekte von Datenverlagerungsoperationstechniken, wie hierin beschrieben, sein. Zum Beispiel kann das Speichersystem 420 eine Befehlskomponente 425, eine Auswahlkomponente 430, eine Datenverlagerungskomponente 435, eine Parameterkomponente 440, eine Zuordnungskomponente 445 oder eine beliebige Kombination davon enthalten. Jede dieser Komponenten kann direkt oder indirekt miteinander kommunizieren (z. B. über einen oder mehrere Busse).
  • Die Befehlskomponente 425 kann als ein Mittel zum Identifizieren eines Befehls zum Ausführen einer Datenverlagerungsoperation, die einem Block von Speicherzellen des Speichersystems zugeordnet ist, konfiguriert sein oder diese anderweitig unterstützen. Die Auswahlkomponente 430 kann als Mittel zum Auswählen zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zur Ausführung der Datenverlagerungsoperation konfiguriert sein oder anderweitig unterstützen, basierend zumindest teilweise darauf, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind einen Schwellenwert erfüllen. Die Datenverlagerungskomponente 435 kann als Mittel zum Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise basierend auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur konfiguriert sein oder auf andere Weise unterstützen.
  • In einigen Beispielen kann die Parameterkomponente 440 als Mittel zum Bestimmen, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, konfiguriert sein oder diese anderweitig unterstützen. In einigen Beispielen kann die Auswahlkomponente 430 als Mittel zur Auswahl der ersten Prozedur konfiguriert sein oder diese anderweitig unterstützen, zumindest teilweise basierend auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen. In einigen Beispielen kann die Datenverlagerungskomponente 435 als Mittel zur Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur konfiguriert sein oder diese anderweitig unterstützen, zumindest teilweise basierend auf der Auswahl der ersten Prozedur.
  • In einigen Beispielen kann die Datenverlagerungskomponente 435 zum Unterstützen der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur zum Lesen von Daten, die in dem Block von Speicherzellen gespeichert sind, konfiguriert sein oder diese anderweitig unterstützen. In einigen Beispielen kann die Datenverlagerungskomponente 435 zur Unterstützung der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur als Mittel zum Schreiben der aus dem Block von Speicherzellen gelesenen Daten in einen zweiten Block von Speicherzellen konfiguriert sein oder diese anderweitig unterstützen.
  • In einigen Beispielen kann der Block von Speicherzellen eine oder mehrere Seiten enthalten, die gültigen Daten zugeordnet sind, und eine oder mehrere Seiten, die ungültigen Daten zugeordnet sind, und die Datenverlagerungskomponente 435 kann als Mittel zum Schreiben der einen oder mehreren Seiten, die gültigen Daten zugeordnet sind, und der einen oder mehreren Seiten, die ungültigen Daten zugeordnet sind, in den zweiten Block von Speicherzellen zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur konfiguriert sein oder diese anderweitig unterstützen.
  • In einigen Beispielen kann die Zuordnungskomponente 445 als Mittel zum Aktualisieren eines ersten Eintrags einer Zuordnung konfiguriert sein oder diese anderweitig unterstützen, die Indizes, die Blöcken von Speicherzellen zugeordnet sind, Gruppen von Blöcken von Speicherzellen zuordnet, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, wobei der aktualisierte erste Eintrag einen ersten Index, der dem zweiten Block von Speicherzellen zugeordnet ist, einen zweiten Index, der einer ersten Gruppe von Blöcken von Speicherzellen zugeordnet ist, die den zweiten Block von Speicherzellen enthält, und einen Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen enthält.
  • In einigen Beispielen kann die Zuordnungskomponente 445 als Mittel zum Unterlassen einer Aktualisierung einer Zuordnung, die Beziehungen zwischen logischen Adressen und physischen Adressen angibt, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, konfiguriert sein oder diese anderweitig unterstützen.
  • In einigen Beispielen kann die Parameterkomponente 440 zur Unterstützung der Bestimmung, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, als Mittel zur Aufrechterhaltung eines Zählers konfiguriert werden, der mit dem Block von Speicherzellen verbunden ist und eine Anzahl von Seiten des Blocks von Speicherzellen verfolgt, die mit gültigen Daten verbunden sind, oder diese anderweitig unterstützen. In einigen Beispielen kann die Parameterkomponente 440 zur Unterstützung der Bestimmung konfiguriert sein, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, als Mittel zur Bestimmung, ob die Anzahl der Seiten des Blocks von Speicherzellen, die gültigen Daten zugeordnet sind, eine Schwellenwertanzahl von Seiten, die gültigen Daten zugeordnet sind, erfüllt, oder diese anderweitig unterstützen.
  • In einigen Beispielen kann die Parameterkomponente 440 als Mittel zum Bestimmen, ob der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen, konfiguriert sein oder diese anderweitig unterstützen. In einigen Beispielen kann die Auswahlkomponente 430 als Mittel zur Auswahl der zweiten Prozedur konfiguriert sein oder diese anderweitig unterstützen, zumindest teilweise basierend auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen. In einigen Beispielen kann die Datenverlagerungskomponente 435 als Mittel zur Ausführung der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur konfiguriert sein oder diese anderweitig unterstützen, zumindest teilweise basierend auf der Auswahl der zweiten Prozedur.
  • In einigen Beispielen kann die Datenverlagerungskomponente 435 zur Unterstützung der Ausführung der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur als Mittel zum Schreiben von Seiten des Blocks von Speicherzellen, die mit gültigen Daten verbunden sind, in einen zweiten Block von Speicherzellen konfiguriert sein oder diese anderweitig unterstützen. In einigen Beispielen kann die Zuordnungskomponente 445 zur Unterstützung der Ausführung der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur als Mittel zum Aktualisieren einer Zuordnung konfiguriert sein oder diese anderweitig unterstützen, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, um logische Adressen, die mit den in den zweiten Block von Speicherzellen geschriebenen Seiten verbunden sind, entsprechenden physischen Adressen des zweiten Blocks von Speicherzellen zuzuordnen.
  • In einigen Beispielen kann die Befehlskomponente 425 als Mittel zum Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von einem mit dem Speichersystem gekoppelten Hostsystem konfiguriert sein oder dieses anderweitig unterstützen, wobei das Identifizieren des Befehls zum Ausführen der Datenverlagerungsoperation zumindest teilweise auf dem Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von dem Hostsystem basiert.
  • In einigen Beispielen kann die Datenverlagerungskomponente 435 als Mittel zur Einleitung der Datenverlagerungsoperation durch das Speichersystem konfiguriert sein oder diese anderweitig unterstützen, wobei die Identifizierung des Befehls zur Ausführung der Datenverlagerungsoperation zumindest teilweise auf der Einleitung der Datenverlagerungsoperation beruht.
  • In einigen Beispielen enthalten der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Prozentsatz von Seiten des Blocks von Speicherzellen, die gültige Daten enthalten, eine Latenz, die mit der Datenverlagerungsoperation verbunden ist, eine Art der Datenverlagerungsoperation, einen Zustand eines Hostsystems, das mit dem Speichersystem verbunden ist, oder irgendeine Kombination davon.
  • In einigen Beispielen enthält eine nichtflüchtige Speichervorrichtung des Speichersystems den Block von Speicherzellen.
  • 5 zeigt ein Flussdiagramm, das ein Verfahren 500 veranschaulicht, das die Datenverlagerungsoperationstechniken gemäß den hier offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 500 können durch ein Speichersystem oder seine Komponenten, wie hier beschrieben, implementiert werden. Zum Beispiel können die Operationen des Verfahrens 500 durch ein Speichersystem ausgeführt werden, wie unter Bezugnahme auf die 1 bis 4beschrieben. In einigen Beispielen kann ein Speichersystem einen Satz von Befehlen ausführen, um die Funktionselemente der Vorrichtung zu steuern und die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann das Speichersystem Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • Bei 505 kann das Verfahren das Identifizieren eines Befehls zum Ausführen einer Datenverlagerungsoperation enthalten, die einem Block von Speicherzellen des Speichersystems zugeordnet ist. Die Operationen von 505 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 505 von einer Befehlskomponente 425 ausgeführt werden, wie unter Bezugnahme auf 4.
  • Bei 510 kann das Verfahren das Auswählen zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zum Ausführen der Datenverlagerungsoperation enthalten, zumindest teilweise basierend darauf, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Schwellenwert erfüllen. Die Operationen von 510 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 510 von einer Auswahlkomponente 430 ausgeführt werden, wie unter Bezugnahme auf 4 beschrieben.
  • Bei 515 kann das Verfahren das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise basierend auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur enthalten. Die Operationen von 515 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 515 von einer Datenverlagerungskomponente 435 ausgeführt werden, wie unter Bezugnahme auf 4 beschrieben.
  • In einigen Beispielen kann ein hierin beschriebenes Gerät ein oder mehrere Verfahren ausführen, wie etwa das Verfahren 500. Das Gerät kann Merkmale, Schaltungen, Logik, Mittel oder Anweisungen (z. B. ein nicht-vorübergehendes computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausgeführt werden können) zum Identifizieren eines Befehls zum Ausführen einer Datenverlagerungsoperation, die einem Block von Speicherzellen des Speichersystems zugeordnet ist, Auswählen zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zur Ausführung der Datenverlagerungsoperation basierend zumindest teilweise darauf, ob ein oder mehrere Parameter, die der Datenverlagerungsoperation zugeordnet sind, einen Schwellenwert erfüllen, und Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur basierend zumindest teilweise auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur enthalten.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Bestimmen enthalten, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, wobei das Auswählen zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen der ersten Prozedur zumindest teilweise basierend auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen, enthält, und wobei das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur zumindest teilweise basierend auf bei der Auswahl der ersten Prozedur enthält.
  • In einigen Beispielen des Verfahrens 500 und des hierin beschriebenen Geräts kann das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Lesen von Daten, die in dem Block von Speicherzellen gespeichert sind, und Schreiben der Daten, die aus dem Block von Speicherzellen gelesen wurden, in einen zweiten Block von Speicherzellen.
  • In einigen Beispielen des hierin beschriebenen Verfahrens 500 und des hierin beschriebenen Geräts kann der Block von Speicherzellen eine oder mehrere Seiten enthalten, die gültigen Daten zugeordnet sind, und eine oder mehrere Seiten, die ungültigen Daten zugeordnet sind, und das Verfahren, die Geräte und das nicht-vorübergehende computerlesbare Medium können weitere Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Schreiben der einen oder mehreren Seiten, die gültigen Daten zugeordnet sind, und der einen oder mehreren Seiten, die ungültigen Daten zugeordnet sind, in den zweiten Block von Speicherzellen enthalten, die zumindest teilweise auf der Ausführung der Datenverlagerung unter Verwendung des ersten Verfahrens basieren.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Aktualisieren eines ersten Eintrags einer Zuordnung enthalten, die Indizes, die Blöcken von Speicherzellen zugeordnet sind, Gruppen von Blöcken von Speicherzellen zuordnet, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, wobei der aktualisierte erste Eintrag einen ersten Index, der dem zweiten Block von Speicherzellen zugeordnet ist, einen zweiten Index, der einer ersten Gruppe von Blöcken von Speicherzellen zugeordnet ist, die den zweiten Block von Speicherzellen enthält, und einen Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen enthält.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Unterlassen der Aktualisierung einer Zuordnung enthalten, die Beziehungen zwischen logischen Adressen und physischen Adressen zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung des ersten Verfahrens anzeigen.
  • In einigen Beispielen des Verfahrens 500 und des hierin beschriebenen Geräts kann das Bestimmen, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Aufrechterhalten eines Zählers enthalten, der dem Block von Speicherzellen zugeordnet ist, der eine Anzahl von Seiten des Blocks von Speicherzellen verfolgt, die mit gültigen Daten verbunden sein können, und das Bestimmen, ob die Anzahl von Seiten des Blocks von Speicherzellen, die mit gültigen Daten verbunden sein können, eine Schwellenanzahl von Seiten, die mit gültigen Daten verbunden sind, erfüllt.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Bestimmen enthalten, ob der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen, wobei das Auswählen zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen der zweiten Prozedur zumindest teilweise basierend auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen, enthält, und wobei das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur zumindest teilweise basierend auf bei der Auswahl der zweiten Prozedur enthält.
  • In einigen Beispielen des hier beschriebenen Verfahrens 500 und des hierin beschriebenen Geräts kann die Ausführung der Datenverlagerung unter Verwendung der zweiten Prozedur Operationen, Merkmale, Schaltkreise, Logik, Mittel oder Anweisungen zum Schreiben von Seiten des Blocks von Speicherzellen, die mit gültigen Daten verbunden sein können, in einen zweiten Block von Speicherzellen und zum Aktualisieren einer Zuordnung, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, um logische Adressen, die mit den in den zweiten Block von Speicherzellen geschriebenen Seiten verbunden sind, entsprechenden physischen Adressen des zweiten Blocks von Speicherzellen zuzuordnen, enthalten.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von einem mit dem Speichersystem gekoppelten Hostsystem enthalten, wobei das Identifizieren des Befehls zum Ausführen der Datenverlagerungsoperation zumindest teilweise auf dem Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von dem Hostsystem basieren kann.
  • Einige Beispiele des Verfahrens 500 und des hierin beschriebenen Geräts können ferner Operationen, Merkmale, Schaltungen, Logik, Mittel oder Anweisungen zum Initiieren der Datenverlagerungsoperation durch das Speichersystem enthalten, wobei das Identifizieren des Befehls zum Ausführen der Datenverlagerungsoperation zumindest teilweise auf dem Initiieren der Datenverlagerungsoperation basieren kann.
  • In einigen Beispielen des Verfahrens 500 und des hierin beschriebenen Geräts enthalten der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Prozentsatz von Seiten des Blocks von Speicherzellen, die gültige Daten enthalten, eine Latenz, die mit der Datenverlagerungsoperation verbunden ist, eine Art der Datenverlagerungsoperation, einen Zustand eines Hostsystems, das mit dem Speichersystem verbunden ist, oder irgendeine Kombination davon.
  • In einigen Beispielen des hier beschriebenen Verfahrens 500 und des hierin beschriebenen Geräts enthält eine nichtflüchtige Speichervorrichtung des Speichersystems den Block von Speicherzellen.
  • Es sollte beachtet werden, dass die oben beschriebenen Verfahren mögliche Implementierungen beschreiben und dass die Operationen und die Schritte neu angeordnet oder anderweitig modifiziert werden können und dass andere Implementierungen möglich sind. Darüber hinaus können Teile von zwei oder mehr der Verfahren kombiniert werden.
  • Ein Gerät wird beschrieben. Das Gerät kann ein Speichersystem und einen mit dem Speichersystem gekoppelten Controller enthalten, der das Gerät dazu veranlasst: einen Befehl zur Ausführung einer Datenverlagerungsoperation, die einem Block von Speicherzellen des Speichersystems zugeordnet ist, zu identifizieren, zwischen einer ersten Prozedur zur Ausführung der Datenverlagerungsoperation und einer zweiten Prozedur zur Ausführung der Datenverlagerungsoperation zumindest teilweise auf der Grundlage auszuwählen, ob ein oder mehrere Parameter, die der Datenverlagerungsoperation zugeordnet sind, einen Schwellenwert erfüllen, und die Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise auf der Grundlage der Identifizierung des Befehls und der Auswahl zwischen der ersten Prozedur und der zweiten Prozedur auszuführen.
  • In einigen Beispielen des Geräts kann der Controller ferner so konfiguriert sein, dass er das Gerät veranlasst, zu bestimmen, ob der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, den Schwellenwert erfüllen, wobei die Auswahl zwischen der ersten Prozedur und der zweiten Prozedur die Auswahl der ersten Prozedur zumindest teilweise auf der Grundlage des Bestimmens enthält, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen, und die Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur die Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur zumindest teilweise auf der Grundlage der Auswahl der ersten Prozedur enthält.
  • In einigen Beispielen des Geräts kann der Controller, um die Datenverlagerungsoperation unter Verwendung der ersten Prozedur auszuführen, ferner konfiguriert sein, um das Gerät zu veranlassen, Daten zu lesen, die in dem Block von Speicherzellen gespeichert sind, und die Daten, die aus dem Block von Speicherzellen gelesen wurden, in einen zweiten Block von Speicherzellen zu schreiben.
  • In einigen Beispielen des Geräts enthält der Block von Speicherzellen eine oder mehrere Seiten, die gültigen Daten zugeordnet sind, und eine oder mehrere Seiten, die ungültigen Daten zugeordnet sind, und der Controller kann ferner so konfiguriert sein, dass er das Gerät veranlasst, die eine oder mehreren Seiten, die gültigen Daten zugeordnet sind, und die eine oder mehreren Seiten, die ungültigen Daten zugeordnet sind, in den zweiten Block von Speicherzellen zu schreiben, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  • In einigen Beispielen des Geräts kann der Controller ferner so konfiguriert sein, dass er das Gerät veranlasst, einen ersten Eintrag einer Zuordnung zu aktualisieren, die Indizes, die Blöcken von Speicherzellen zugeordnet sind, Gruppen von Blöcken von Speicherzellen zuordnet, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, wobei der aktualisierte erste Eintrag einen ersten Index, der dem zweiten Block von Speicherzellen zugeordnet ist, einen zweiten Index, der einer ersten Gruppe von Blöcken von Speicherzellen zugeordnet ist, die den zweiten Block von Speicherzellen enthält, und einen Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen enthält.
  • In einigen Beispielen der Vorrichtung kann der Controller ferner konfiguriert sein, um zu bewirken, dass die Vorrichtung davon absieht, eine Zuordnung zu aktualisieren, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  • In einigen Beispielen des Geräts kann der Controller, um zu bestimmen, ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, ferner so konfiguriert sein, dass er das Gerät veranlasst, einen dem Block von Speicherzellen zugeordneten Zähler aufrechtzuerhalten, der eine Anzahl von Seiten des Blocks von Speicherzellen verfolgt, die gültigen Daten zugeordnet werden können, und zu bestimmen, ob die Anzahl von Seiten des Blocks von Speicherzellen, die gültigen Daten zugeordnet werden können, eine Schwellenanzahl von Seiten erfüllt, die gültigen Daten zugeordnet sind.
  • In einigen Beispielen des Geräts kann der Controller ferner so konfiguriert sein, dass er das Gerät veranlasst, zu bestimmen, ob der eine oder die mehreren Parameter, den Schwellenwert nicht erfüllen, wobei die Auswahl zwischen der ersten Prozedur und der zweiten Prozedur die Auswahl der zweiten Prozedur zumindest teilweise auf der Grundlage des Bestimmens enthält, dass der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen, und die Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur die Ausführung der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur zumindest teilweise auf der Grundlage der Auswahl der zweiten Prozedur enthält.
  • In einigen Beispielen des Geräts kann der Controller, um die Datenverlagerungsoperation unter Verwendung der zweiten Prozedur durchzuführen, ferner so konfiguriert sein, dass er das Gerät veranlasst, Seiten des Blocks von Speicherzellen, die mit gültigen Daten verbunden sein können, in einen zweiten Block von Speicherzellen zu schreiben und eine Zuordnung zu aktualisieren, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, um logische Adressen, die mit den in den zweiten Block von Speicherzellen geschriebenen Seiten verbunden sind, entsprechenden physischen Adressen des zweiten Blocks von Speicherzellen zuzuordnen.
  • In einigen Beispielen des Geräts kann der Controller ferner so konfiguriert sein, dass er das Gerät veranlasst, den Befehl zur Ausführung der Datenverlagerungsoperation von einem mit dem Speichersystem gekoppelten Hostsystem zu empfangen, wobei die Identifizierung des Befehls zur Ausführung der Datenverlagerungsoperation zumindest teilweise auf dem Empfang des Befehls zur Ausführung der Datenverlagerungsoperation von dem Hostsystem basieren kann.
  • In einigen Beispielen des Geräts kann der Controller ferner so konfiguriert sein, dass er das Gerät veranlasst, durch das Speichersystem die Datenverlagerungsoperation zu initiieren, wobei die Identifizierung des Befehls zur Ausführung der Datenverlagerungsoperation zumindest zum Teil auf der Initiierung der Datenverlagerungsoperation basieren kann.
  • In einigen Beispielen des Geräts enthalten der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Prozentsatz von Seiten des Blocks von Speicherzellen, die gültige Daten enthalten, eine Latenz, die mit der Datenverlagerungsoperation verbunden ist, eine Art der Datenverlagerungsoperation, einen Zustand eines Hostsystems, das mit dem Speichersystem verbunden ist, oder irgendeine Kombination davon.
  • In einigen Beispielen des Geräts enthält eine nichtflüchtige Speichervorrichtung des Speichersystems den Block von Speicherzellen.
  • Die hier beschriebenen Informationen und Signale können mit einer Vielzahl unterschiedlicher Technologien und Techniken dargestellt werden. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in der obigen Beschreibung Bezug genommen wird, durch Spannungen, Ströme, elektromagnetische Wellen, magnetische Felder oder Partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. In einigen Zeichnungen können Signale als ein einziges Signal dargestellt werden; das Signal kann jedoch einen Bus von Signalen darstellen, wobei der Bus eine Vielzahl von Bitbreiten aufweisen kann.
  • Die Begriffe „elektronische Kommunikation“, „leitender Kontakt“, „verbunden“ und „gekoppelt“ können sich auf eine Beziehung zwischen Komponenten beziehen, die den Fluss von Signalen zwischen den Komponenten unterstützt. Komponenten gelten als elektronisch miteinander kommunizierend (oder in leitendem Kontakt miteinander oder verbunden oder gekoppelt), wenn es einen leitenden Pfad zwischen den Komponenten gibt, der jederzeit den Signalfluss zwischen den Komponenten unterstützen kann. Zu jedem beliebigen Zeitpunkt kann der leitende Pfad zwischen Komponenten, die in elektronischer Kommunikation miteinander stehen (oder in leitendem Kontakt mit ihnen stehen oder mit ihnen verbunden oder gekoppelt sind), ein offener oder ein geschlossener Stromkreis sein, je nach dem Betrieb der Vorrichtung, das die angeschlossenen Komponenten umfasst. Der leitende Pfad zwischen den angeschlossenen Komponenten kann ein direkter leitender Pfad zwischen den Komponenten sein oder der leitende Pfad zwischen den angeschlossenen Komponenten kann ein indirekter leitender Pfad sein, der Zwischenkomponenten wie Schalter, Transistoren oder andere Komponenten enthalten kann. In einigen Beispielen kann der Signalfluss zwischen den angeschlossenen Komponenten zeitweise unterbrochen werden, z. B. durch ein oder mehrere Zwischenkomponenten wie Schalter oder Transistoren.
  • Der Begriff „Kopplung“ bezieht sich auf einen Zustand, in dem von einem offenen Stromkreis zwischen Komponenten, in dem Signale derzeit nicht über einen leitenden Pfad zwischen den Komponenten übertragen werden können, zu einem geschlossenen Stromkreis zwischen Komponenten übergegangen wird, in dem Signale über den leitenden Pfad zwischen Komponenten übertragen werden können. Wenn eine Komponente, wie. ein Controller, andere Komponenten miteinander koppelt, löst die Komponente eine Veränderung aus, die es ermöglicht, dass Signale zwischen den anderen Komponenten über einen leitenden Pfad fließen, der vorher keinen Signalfluss zuließ.
  • Der Begriff „isoliert“ bezieht sich auf eine Beziehung zwischen Komponenten, in der derzeit keine Signale zwischen den Komponenten fließen können. Komponenten sind voneinander isoliert, wenn ein offener Stromkreis zwischen ihnen besteht. Zum Beispiel werden zwei Komponenten, die durch einen Schalter getrennt sind, der zwischen den Komponenten positioniert ist, voneinander getrennt, wenn der Schalter geöffnet ist. Wenn ein Controller zwei Komponenten isoliert, bewirkt der Controller eine Änderung, die verhindert, dass Signale zwischen den Komponenten über einen leitenden Pfad fließen, der zuvor den Fluss von Signalen ermöglichte.
  • Die Begriffe „sofern“, „wenn“, „basierend auf“ oder „zumindest zum Teil basierend auf“ können austauschbar verwendet werden. In einigen Beispielen können, wenn die Begriffe „sofern“, „wenn“, „basierend auf“ oder „zumindest zum Teil basierend auf“ zur Beschreibung einer bedingten Operation, eines bedingten Prozesses oder einer Verbindung zwischen Teilen eines Prozesses verwendet werden, die Begriffe austauschbar sein.
  • Der Begriff „als Reaktion auf“ kann sich darauf beziehen, dass ein Zustand oder eine Operation zumindest teilweise, wenn nicht sogar vollständig, als Folge eines vorhergehenden Zustands oder einer vorhergehenden Operation auftritt. Zum Beispiel kann ein erster Zustand oder eine erste Operation ausgeführt werden und ein zweiter Zustand oder eine zweite Operation kann zumindest teilweise als Folge des Auftretens des vorherigen Zustands oder der vorherigen Operation auftreten (entweder direkt nach oder nach einem oder mehreren anderen Zwischenzuständen oder -operationen, die nach dem ersten Zustand oder der ersten Operation auftreten).
  • Darüber hinaus können sich die Begriffe „direkt als Reaktion auf“ oder „in direkter Reaktion auf“ auf einen Zustand oder eine Operation beziehen, der/die als direkte Folge eines vorherigen Zustands oder einer vorherigen Operation auftritt. In einigen Beispielen kann ein erster Zustand oder eine erste Operation ausgeführt werden und der zweite Zustand oder die zweite Operation kann direkt als Folge des Auftretens des vorherigen Zustands oder der vorherigen Operation auftreten, unabhängig davon, ob andere Zustände oder Operationen auftreten. In einigen Beispielen kann ein erster Zustand oder eine Operation ausgeführt werden und der zweite Zustand oder die zweite Operation kann direkt als Folge des Auftretens des vorherigen Zustands oder der vorherigen Operation auftreten, so dass keine anderen Zwischenzustände oder -operationen zwischen dem früheren Zustand oder der früheren Operation und dem zweiten Zustand oder der zweiten Operation auftreten oder eine begrenzte Anzahl von einem oder mehreren Zwischenschritten oder -operationen zwischen dem früheren Zustand oder der früheren Operation und dem zweiten Zustand oder der zweiten Operation auftreten. Jede Bedingung oder Operation, die hierin als „basierend auf“, "mindestens teilweise auf‟ oder „als Reaktion auf eines anderen Schrittes, einer Aktion, eines Ereignisses oder einer Bedingung ausgeführt beschrieben wird, kann zusätzlich oder alternativ (z. B. in einem alternativen Beispiel)) „in direkter Reaktion auf oder „unmittelbar als Reaktion auf einer solchen anderen Bedingung oder Aktion ausgeführt werden, sofern nicht anders angegeben.
  • Die hier erörterten Vorrichtungen, einschließlich eines Speicherarrays, können auf einem Halbleitersubstrat, wie Silizium, Germanium, einer Silizium-Germanium-Legierung, Galliumarsenid, Galliumnitrid usw., gebildet werden. In einigen Beispielen ist das Substrat ein Halbleiter-Wafer. In einigen anderen Beispielen kann das Substrat ein Silizium-auf-Isolator (silicon-on-insulator - SOI)-Substrat sein, wie z. B. Silizium-auf-Glas (silicon-on-glass - SOG) oder Silizium-auf-Saphir (silicon-on-sapphire - SOP), oder epitaktische Schichten aus Halbleitermaterialien auf einem anderen Substrat. Die Leitfähigkeit des Substrats oder von Teilbereichen des Substrats kann durch Dotierung mit verschiedenen chemischen Stoffen wie Phosphor, Bor oder Arsen gesteuert werden. Das Dotieren kann während der anfänglichen Bildung oder des anfänglichen Wachstums des Substrats durch Ionenimplantation oder durch irgendein anderes Dotiermittel ausgeführt werden.
  • Eine Schaltkomponente oder ein Transistor, die hier erörtert werden, können einen Feldeffekttransistor (field-effect transistor - FET) darstellen und eine Vorrichtung mit drei Anschlüssen enthalten, die eine Source, einen Drain und ein Gate enthält. Die Anschlüsse können durch leitfähige Materialien, z. B. Metalle, mit anderen elektronischen Elementen verbunden sein. Source und Drain können leitend sein und können einen stark dotierten, z. B. entarteten Halbleiterbereich enthalten. Source und Drain können durch einen leicht dotierten Halbleiterbereich oder Kanal getrennt sein. Wenn der Kanal vom n-Typ ist (d. h., die meisten Ladungsträger sind Elektronen), kann der FET als n-Typ-FET bezeichnet werden. Ist der Kanal vom p-Typ (d. h., die meisten Ladungsträger sind Löcher), kann der FET als p-Typ-FET bezeichnet werden. Der Kanal kann durch ein isolierendes Gate-Oxid abgedeckt sein. Die Kanalleitfähigkeit kann durch Anlegen einer Spannung an das Gate gesteuert werden. Zum Beispiel kann das Anlegen einer positiven Spannung oder einer negativen Spannung an einen n-Typ-FET bzw. einen p-Typ-FET dazu führen, dass der Kanal leitend wird. Ein Transistor kann „eingeschaltet“ oder „aktiviert“ sein, wenn eine Spannung, die größer oder gleich der Schwellenspannung des Transistors ist, an das Gate des Transistors angelegt wird. Der Transistor kann „ausgeschaltet“ oder „deaktiviert“ sein, wenn eine Spannung, die kleiner als die Schwellenspannung des Transistors ist, an das Transistor-Gate angelegt wird.
  • Die hierin enthaltene Beschreibung beschreibt in Verbindung mit den beigefügten Zeichnungen Beispielkonfigurationen und stellt nicht alle Beispiele dar, die implementiert werden können oder in den Anwendungsbereich der Ansprüche fallen. Der hier verwendete Begriff „beispielhaft“ bedeutet „als Beispiel, Variante oder Illustration dienend“ und nicht „bevorzugt“ oder „vorteilhaft gegenüber anderen Beispielen“. Die detaillierte Beschreibung enthält spezifische Details zur Bereitstellung eines Verständnisses der beschriebenen Techniken. Diese Techniken können jedoch auch ohne diese spezifischen Details angewandt werden. In einigen Fällen werden bekannte Strukturen und Vorrichtungen in Form von Blockdiagrammen dargestellt, um die Konzepte der beschriebenen Beispiele nicht zu verschleiern.
  • In den beigefügten Figuren können ähnliche Komponenten oder Merkmale das gleiche Referenzkennzeichen haben. Darüber hinaus können verschiedene Komponenten derselben Art dadurch unterschieden werden, dass der Referenzbezeichnung ein Bindestrich und eine zweite Bezeichnung folgt, die die ähnlichen Komponenten voneinander unterscheidet. Wird in der Beschreibung nur das erste Referenzkennzeichen verwendet, so gilt die Beschreibung für jede der gleichartigen Komponenten mit demselben ersten Referenzkennzeichen, unabhängig vom zweiten Referenzkennzeichen.
  • Die hier beschriebenen Funktionen können in Hardware, in Software, die von einem Prozessor ausgeführt wird, in Firmware oder in einer Kombination davon implementiert werden. Wenn die Funktionen in Software implementiert sind, die von einem Prozessor ausgeführt wird, können sie auf einem computerlesbaren Medium gespeichert oder über dieses übermittelt werden, und zwar in Form von einer oder mehreren Anweisungen oder Codes. Andere Beispiele und Implementierungen fallen in den Anwendungsbereich der Offenbarung und der beigefügten Ansprüche. Aufgrund der Beschaffenheit von Software können die oben beschriebenen Funktionen beispielsweise mit Hilfe von Software, die von einem Prozessor ausgeführt wird, Hardware, Firmware, Festverdrahtung oder Kombinationen aus diesen implementiert werden. Merkmale, die Funktionen implementieren, können auch physisch an verschiedenen Positionen angeordnet sein, einschließlich einer Verteilung, so dass Teile von Funktionen an verschiedenen physischen Orten implementiert sind.
  • Zum Beispiel können die verschiedenen illustrativen Blöcke und Komponenten, die im Zusammenhang mit der vorliegenden Offenbarung beschrieben werden, mit einem Allzweckprozessor, einem DSP, einem ASIC, einem FPGA oder einer anderen programmierbaren Logikvorrichtung, diskreter Gatter- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon implementiert oder ausgeführt werden, um die hier beschriebenen Funktionen auszuführen. Ein Universalprozessor kann ein Mikroprozessor sein, alternativ kann der Prozessor auch ein beliebiger Prozessor, Controller, Mikrocontroller oder eine Zustandsmaschine sein. Ein Prozessor kann als eine Kombination von Rechenvorrichtungen implementiert sein (z. B. eine Kombination aus einem DSP und einem Mikroprozessor, mehrere Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration).
  • Wie hierin verwendet, einschließlich in den Ansprüchen, bedeutet „oder“ in einer Liste von Elementen (z. B. in einer Liste von Elementen, der ein Satz wie „mindestens eines von“ oder „eines oder mehrere von“ vorangestellt ist) eine enthaltende Liste, so dass z. B. eine Liste von mindestens einem von A, B oder C A oder B oder C oder AB oder AC oder BC oder ABC (d. h. A und B und C) bedeutet. Außerdem soll der hier verwendete Ausdruck „basierend auf“ nicht als Verweis auf einen geschlossenen Satz von Zuständen ausgelegt werden. Zum Beispiel kann ein beispielhafter Schritt, der als „basierend auf Zustand A“ beschrieben wird, sowohl auf einem Zustand A als auch auf einem Zustand B basieren, ohne dass dies vom Anwendungsbereich der vorliegenden Offenbarung abweicht. Mit anderen Worten: Der hier verwendete Ausdruck „basierend auf“ ist in gleicher Weise auszulegen wie der Ausdruck „zumindest zum Teil basierend auf“.
  • Computer-lesbare Medien enthalten sowohl nicht-vorübergehende Computerspeichermedien als auch Kommunikationsmedien einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zum anderen erleichtern. Ein nicht-vorübergehendes Speichermedium kann jedes verfügbare Medium sein, auf das ein Allzweck- oder Spezialcomputer zugreifen kann. Als Beispiel und nicht einschränkend können nicht-vorübergehende computerlesbare Medien RAM, ROM, elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), Compact Disk (CD) ROM oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere enthalten magnetische Speichervorrichtungen oder jedes andere nicht-vorübergehende Medium, das verwendet werden kann, um gewünschte Programmcodemittel in Form von Anweisungen oder Datenstrukturen zu tragen oder zu speichern und auf das von einem Allzweck- oder Spezialcomputer oder von einem Allzweck- oder Spezialprozessor zugegriffen werden kann. Außerdem wird jede Verbindung ordnungsgemäß als ein computerlesbares Medium bezeichnet. Zum Beispiel sind, wenn die Software von einer Website, einem Server oder einer anderen externen Quelle unter Verwendung eines Koaxialkabels, eines Glasfaserkabels, Twisted-Pair, einer digitalen Teilnehmerleitung (digital subscriber line - DSL) oder drahtloser Technologien wie Infrarot, Radio und Mikrowelle übermittelt wird, das Koaxialkabel, Glasfaserkabel, Twisted-Pair, DSL oder drahtlose Technologien wie Infrarot, Radio und Mikrowelle in der Definition von Medium enthalten. Die hier verwendeten Datenträger enthalten CD, Laserdisc, optische Disc, Digital Versatile Disc (DVD), Disketten und Blu-Ray-Discs, wobei Disketten Daten normalerweise magnetisch wiedergeben, während Discs Daten optisch mit Lasern wiedergeben. Kombinationen der oben genannten Möglichkeiten sind ebenso im Umfang der computerlesbaren Medien enthalten.
  • Die vorliegende Beschreibung soll den Fachmann in die Lage versetzen, die Offenbarung herzustellen oder zu verwenden. Verschiedene Modifikationen der Offenbarung werden dem Fachmann offensichtlich sein, und die hierin definierten allgemeinen Prinzipien können auf andere Variationen angewandt werden, ohne vom Umfang der Offenbarung abzuweichen. Daher ist die Offenbarung nicht auf die hier beschriebenen Beispiele und Ausführungsformen beschränkt, sondern hat den weitestgehenden Anwendungsbereich, der mit den hier offenbarten Prinzipien und neuen Merkmalen vereinbar ist.
  • 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/150901 [0001]

Claims (25)

  1. Gerät, umfassend: ein Speichersystem (110); und einen Controller (115), der mit dem Speichersystem ,(110)gekoppelt ist und so betreibbar ist, dass er das Gerät zu Folgendem veranlasst: Identifizieren (205, 505) eines Befehls zum Ausführen einer Datenverlagerungsoperation, die mit einem Block von Speicherzellen (170) des Speichersystems (110) verbunden ist, Auswählen (510) zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zum Ausführen der Datenverlagerungsoperation, zumindest teilweise basierend darauf, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Schwellenwert erfüllen; und Ausführen (320, 330, 515) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise basierend auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur.
  2. Gerät nach Anspruch 1, wobei der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Bestimmen (310), ob der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, den Schwellenwert erfüllen, wobei: das Auswählen zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen (315) der ersten Prozedur basierend zumindest teilweise auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen, umfasst; und das Ausführen (320) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur basierend zumindest teilweise auf der Auswahl der ersten Prozedur umfasst.
  3. Gerät nach Anspruch 2, wobei, um die Datenverlagerungsoperation unter Verwendung der ersten Prozedur auszuführen (320), der Controller (115) ferner dazu konfiguriert ist, das Gerät zu Folgendem zu veranlassen: Lesen von im Block (170) von Speicherzellen gespeicherten Daten; und Schreiben der aus dem Block (170) von Speicherzellen gelesenen Daten in einen zweiten Block von Speicherzellen.
  4. Gerät nach Anspruch 3, wobei: der Block (170) von Speicherzellen eine oder mehrere Seiten (175) umfasst, die mit gültigen Daten verbunden sind, und eine oder mehrere Seiten, die mit den ungültigen Daten verbunden sind; und der Controller (115) ferner konfiguriert ist, um zu veranlassen, dass das Gerät die eine oder mehreren Seiten (175), die den gültigen Daten verbunden sind, und die eine oder mehreren Seiten (175), die mit ungültigen Daten verbunden sind, in den zweiten Block von Speicherzellen zu schreiben, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  5. Gerät nach einem der vorhergehenden Ansprüche 3 oder 4, wobei der Controller ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Aktualisieren eines ersten Eintrags einer Zuordnung, die Indizes, die Blöcken von Speicherzellen zugeordnet sind, Gruppen von Blöcken von Speicherzellen zuordnet, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, wobei der aktualisierte erste Eintrag einen ersten Index, der dem zweiten Block von Speicherzellen zugeordnet ist, einen zweiten Index, der einer ersten Gruppe von Blöcken von Speicherzellen zugeordnet ist, die den zweiten Block von Speicherzellen umfasst, und einen Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen umfasst.
  6. Gerät nach einem der vorhergehenden Ansprüche 2 bis 5, wobei der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Absehen vom Aktualisieren einer Zuordnung, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  7. Gerät nach einem der vorhergehenden Ansprüche 2 bis 6, wobei, um zu bestimmen (310), ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Aufrechterhalten eines dem Blocks (170) von Speicherzellen zugeordneten Zählers, der eine Anzahl von Seiten des Blocks von Speicherzellen verfolgt, die mit gültigen Daten verbunden sind; und Bestimmen, ob die Anzahl von Seiten des Blocks von Speicherzellen, die mit gültigen Daten verbunden sind, eine Schwellenanzahl von Seiten erfüllt, die mit gültigen Daten verbunden sind.
  8. Gerät nach einem der vorhergehenden Ansprüche, wobei der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Bestimmen (310), ob der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen, wobei: das Auswählen (325) zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen der zweiten Prozedur basierend zumindest teilweise auf dem Bestimmen umfasst, dass der eine oder die mehreren Parameter den Schwellenwert nicht erfüllen; und das Ausführen (330) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der zweiten Prozedur basierend zumindest teilweise auf der Auswahl der zweiten Prozedur umfasst.
  9. Gerät nach Anspruch 8, wobei, um die Datenverlagerungsoperation unter Verwendung der zweiten Prozedur auszuführen (330), der Controller (115) ferner dazu konfiguriert ist, das Gerät zu Folgendem zu veranlassen: Schreiben von Seiten (175) des Blocks (170) von Speicherzellen, die gültigen Daten zugeordnet sind, in einen zweiten Block von Speicherzellen; und Aktualisieren einer Zuordnung, die Beziehungen zwischen logischen Adressen und physikalischen Adressen anzeigt, um logische Adressen, die den in den zweiten Block von Speicherzellen geschriebenen Seiten (175) zugeordnet sind, auf entsprechende physikalische Adressen des zweiten Blocks von Speicherzellen abzubilden.
  10. Gerät nach einem der vorhergehenden Ansprüche, wobei der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von einem Hostsystem, das mit dem Speichersystem (110) gekoppelt ist, wobei das Identifizieren des Befehls zum Ausführen der Datenverlagerungsoperation zumindest teilweise auf dem Empfangen des Befehls zum Ausführen der Datenverlagerungsoperation von dem Hostsystem basiert.
  11. Gerät nach einem der vorhergehenden Ansprüche, wobei der Controller (115) ferner so konfiguriert ist, dass er das Gerät zu Folgendem veranlasst: Initiieren der Datenverlagerungsoperation durch das Speichersystem (110), wobei das Identifizieren des Befehls zum Ausführen der Datenverlagerungsoperation zumindest teilweise auf dem Initiieren der Datenverlagerungsoperation basiert.
  12. Gerät nach einem der vorhergehenden Ansprüche, wobei der eine oder die mehreren Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Prozentsatz von Seiten (175) des Blocks (170) von Speicherzellen, die gültige Daten umfassen, eine Latenz, die mit der Datenverlagerungsoperation verbunden ist, eine Art der Datenverlagerungsoperation, einen Zustand eines Hostsystems, das mit dem Speichersystem (110) verbunden ist, oder irgendeine Kombination davon umfassen.
  13. Gerät nach einem der vorhergehenden Ansprüche, wobei eine nichtflüchtige Speichervorrichtung des Speichersystems (110) den Block (170) von Speicherzellen umfasst.
  14. Nicht-vorübergehendes computerlesbares Medium, das einen Code speichert, der Anweisungen umfasst, die, wenn sie von einem Prozessor einer elektronischen Vorrichtung ausgeführt werden, die elektronische Vorrichtung zu Folgendem veranlassen: Identifizieren (305) eines Befehls zum Ausführen einer Datenverlagerungsoperation, die einem Block von Speicherzellen eines Speichersystems (110) zugeordnet ist, Auswählen zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zum Ausführen der Datenverlagerungsoperation, zumindest teilweise basierend darauf, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Schwellenwert erfüllen; und Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise basierend auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur.
  15. Nichttransitorisches computerlesbares Medium nach Anspruch 14, wobei die Anweisungen, wenn sie von dem Prozessor der elektronischen Vorrichtung ausgeführt werden, die elektronische Vorrichtung ferner zu Folgendem veranlassen: Bestimmen (310), ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, wobei: das Auswählen (510) zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen (315) der ersten Prozedur basierend zumindest teilweise auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen, umfasst; und das Ausführen (320) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur basierend zumindest teilweise auf der Auswahl der ersten Prozedur umfasst.
  16. Nichtflüchtiges computerlesbares Medium nach Anspruch 15, wobei, um die Datenverlagerungsoperation unter Verwendung der ersten Prozedur auszuführen (320), die Anweisungen, wenn sie durch den Prozessor der elektronischen Vorrichtung ausgeführt werden, die elektronische Vorrichtung ferner zu Folgendem veranlassen: Lesen von im Block (170) von Speicherzellen gespeicherten Daten; und Schreiben der aus dem Block (170) von Speicherzellen gelesenen Daten in einen zweiten Block von Speicherzellen.
  17. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 16, wobei: der Block (170) von Speicherzellen eine oder mehrere Seiten (175) umfasst, die mit gültigen Daten verbunden sind, und eine oder mehrere Seiten (175), die mit den ungültigen Daten verbunden sind; und die Anweisungen, wenn sie durch den Prozessor der elektronischen Vorrichtung ausgeführt werden, die elektronische Vorrichtung ferner veranlassen, die eine oder mehreren Seiten (175), die mit gültigen Daten verbunden sind, und die eine oder mehreren Seiten (175), die mit ungültigen Daten verbunden sind, in den zweiten Block von Speicherzellen zu schreiben, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  18. Nichttransitorisches computerlesbares Medium nach einem der vorhergehenden Ansprüche 16 oder 17, wobei die Anweisungen, wenn sie von dem Prozessor der elektronischen Vorrichtung ausgeführt werden, die elektronische Vorrichtung ferner dazu veranlassen: einen ersten Eintrag einer Zuordnung zu aktualisieren, die Indizes, die Blöcken von Speicherzellen zugeordnet sind, Gruppen von Blöcken von Speicherzellen zuordnet, zumindest teilweise auf der Grundlage der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur, wobei der aktualisierte erste Eintrag einen ersten Index, der dem zweiten Block von Speicherzellen zugeordnet ist, einen zweiten Index, der einer ersten Gruppe von Blöcken von Speicherzellen zugeordnet ist, die den zweiten Block von Speicherzellen umfassen, und einen Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen umfassen.
  19. Nichtflüchtiges computerlesbares Medium nach einem der vorhergehenden Ansprüche 15 bis 18, wobei die Anweisungen, wenn sie durch den Prozessor der elektronischen Vorrichtung ausgeführt werden, ferner bewirken, dass die elektronische Vorrichtung: davon absieht, eine Zuordnung zu aktualisieren, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, zumindest teilweise basierend auf dem Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  20. Verfahren, das von einem Speichersystem (110) ausgeführt wird, umfassend: Identifizieren (505) eines Befehls zum Ausführen einer Datenverlagerungsoperation, die einem Block von Speicherzellen des Speichersystems (110) zugeordnet ist, Auswählen (510) zwischen einer ersten Prozedur zum Ausführen der Datenverlagerungsoperation und einer zweiten Prozedur zum Ausführen der Datenverlagerungsoperation, zumindest teilweise basierend darauf, ob ein oder mehrere Parameter, die mit der Datenverlagerungsoperation verbunden sind, einen Schwellenwert erfüllen, und Ausführen (320, 330, 515) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur zumindest teilweise basierend auf dem Identifizieren des Befehls und Auswählen zwischen der ersten Prozedur und der zweiten Prozedur.
  21. Verfahren nach Anspruch 20, ferner Folgendes umfassend: Bestimmen (310), ob der eine oder die mehreren Parameter den Schwellenwert erfüllen, wobei: das Auswählen zwischen der ersten Prozedur und der zweiten Prozedur das Auswählen (315) der ersten Prozedur basierend zumindest teilweise auf dem Bestimmen, dass der eine oder die mehreren Parameter den Schwellenwert erfüllen, umfasst; und das Ausführen (320) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur oder der zweiten Prozedur das Ausführen der Datenverlagerungsoperation unter Verwendung der ersten Prozedur basierend zumindest teilweise auf der Auswahl der ersten Prozedur umfasst.
  22. Verfahren nach Anspruch 21, wobei das Ausführen (320) der Datenverlagerungsoperation unter Verwendung der ersten Prozedur Folgendes umfasst: Lesen von im Block von Speicherzellen gespeicherten Daten; und Schreiben der aus dem Block von Speicherzellen gelesenen Daten in einen zweiten Block von Speicherzellen.
  23. Verfahren nach Anspruch 22, wobei der Block (170) von Speicherzellen eine oder mehrere Seiten (175) umfasst, die mit gültigen Daten verbunden sind, und eine oder mehrere Seiten (175), die mit ungültigen Daten verbunden sind, das Verfahren Folgendes umfassend: Schreiben der einen oder mehreren Seiten (175), die mit gültigen Daten verbunden sind, und der eine oder mehreren Seiten (175), die mit ungültigen Daten verbunden sind, in den zweiten Block von Speicherzellen, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
  24. Verfahren nach einem der vorhergehenden Ansprüche 22 oder 23, ferner Folgendes umfassend: Aktualisieren eines ersten Eintrags einer Zuordnung, die Indizes, die mit Speicherzellenblöcken verbunden sind, Gruppen von Speicherzellenblöcken zuordnet, die zumindest teilweise auf der Ausführung der Datenverlagerungsoperation mit dem ersten Prozedur basieren, wobei der aktualisierte erste Eintrag einen ersten Index enthält, der mit dem zweiten Block von Speicherzellen verbunden ist, einen zweiten Index, der mit einer ersten Gruppe von Speicherzellen verbunden ist, die den zweiten Block von Speicherzellen umfasst, und ein Offset des zweiten Blocks von Speicherzellen innerhalb der ersten Gruppe von Blöcken von Speicherzellen.
  25. Verfahren nach einem der vorhergehenden Ansprüche 21 bis 24, ferner Folgendes umfassend: Absehen vom Aktualisieren einer Zuordnung, die Beziehungen zwischen logischen Adressen und physischen Adressen anzeigt, zumindest teilweise basierend auf der Ausführung der Datenverlagerungsoperation unter Verwendung der ersten Prozedur.
DE102022102980.8A 2021-02-18 2022-02-09 Operationsstechniken der datenverlagerung Pending DE102022102980A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163150901P 2021-02-18 2021-02-18
US63/150,901 2021-02-18
US17/580,296 US11907556B2 (en) 2021-02-18 2022-01-20 Data relocation operation techniques
US17/580,296 2022-01-20

Publications (1)

Publication Number Publication Date
DE102022102980A1 true DE102022102980A1 (de) 2022-08-18

Family

ID=82610778

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022102980.8A Pending DE102022102980A1 (de) 2021-02-18 2022-02-09 Operationsstechniken der datenverlagerung

Country Status (4)

Country Link
US (1) US11907556B2 (de)
KR (1) KR20220118313A (de)
CN (1) CN114968085A (de)
DE (1) DE102022102980A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615858B2 (en) * 2021-06-08 2023-03-28 Micron Technology, Inc. Media management operations based on health characteristics of memory cells
US11894060B2 (en) * 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8407449B1 (en) * 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
JP5722685B2 (ja) * 2011-04-12 2015-05-27 株式会社日立製作所 半導体装置、不揮発性メモリ装置の制御方法
JP2013174975A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステムとそのデータ書き込み方法
US8892815B2 (en) * 2012-09-13 2014-11-18 Sandisk Technologies Inc. Optimized fragmented block compaction with a bitmap
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
CN111562880A (zh) * 2019-02-14 2020-08-21 英韧科技(上海)有限公司 一种数据存储装置、系统及数据写入方法
US11126360B2 (en) * 2019-10-22 2021-09-21 International Business Machines Corporation Dynamically adjusting block mode pool sizes

Also Published As

Publication number Publication date
US20220261153A1 (en) 2022-08-18
US11907556B2 (en) 2024-02-20
CN114968085A (zh) 2022-08-30
KR20220118313A (ko) 2022-08-25

Similar Documents

Publication Publication Date Title
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102022102980A1 (de) Operationsstechniken der datenverlagerung
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102022119340A1 (de) Auslösen einer auffrischung für einen nichtflüchtigen speicher
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102022102388A1 (de) Topologiebasierte zurückziehung in einem speichersystem
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE102022102434A1 (de) Flüchtiges Register zum Erkennen eines Stromverlusts

Legal Events

Date Code Title Description
R012 Request for examination validly filed