DE112020004591T5 - L2P-Übersetzungstechniken in begrenzten RAM-Systemen - Google Patents

L2P-Übersetzungstechniken in begrenzten RAM-Systemen Download PDF

Info

Publication number
DE112020004591T5
DE112020004591T5 DE112020004591.9T DE112020004591T DE112020004591T5 DE 112020004591 T5 DE112020004591 T5 DE 112020004591T5 DE 112020004591 T DE112020004591 T DE 112020004591T DE 112020004591 T5 DE112020004591 T5 DE 112020004591T5
Authority
DE
Germany
Prior art keywords
cache
records
mapping information
record
memory
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
DE112020004591.9T
Other languages
English (en)
Inventor
Xiangang Luo
Qing Liang
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 DE112020004591T5 publication Critical patent/DE112020004591T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Hierin werden Vorrichtungen und Techniken zum effizienteren Ausführen einer Zufalls-Schreiboperation für eine Speichervorrichtung offenbart. In einem Beispiel kann ein Verfahren zum Betreiben einer Flash-Speichervorrichtung das Empfangen einer Schreibanforderung an einer Flash-Speichervorrichtung von einem Host einschließen, wobei die Schreibanforderung eine erste logische Blockadresse und Schreibdaten einschließt, das Speichern der Schreibdaten an einem Ort der Flash-Speichervorrichtung, der eine erste physikalische Adresse hat, das Betreiben der Flash-Speichervorrichtung in einem ersten Modus, wenn eine Menge von Schreibdaten, die mit der Schreibanforderung verbunden sind, über einem Schwellenwert liegt, das Betreiben der Flash-Speichervorrichtung in einem zweiten Modus, wenn eine Schreibdatenmenge unter dem Schwellenwert liegt, und das Vergleichen der Menge der Schreibdaten mit dem Schwellenwert.

Description

  • VORRANGIGE ANWENDUNG
  • Diese Anmeldung beansprucht den Vorteil der US-Anmeldung mit der Seriennummer 16/586,519, eingereicht am 27. September 2019, die hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.
  • TECHNISCHES GEBIET
  • Beispiele der Offenbarung beziehen sich allgemein auf Speichersysteme und insbesondere auf Techniken zum Implementieren eines Übersetzungscachespeichers für Ereignisse mit wahlfreiem Speicherzugriff.
  • STAND DER TECHNIK
  • Speichervorrichtungen werden typischerweise als interne Halbleiter-, integrierte Schaltungen in Computern oder anderen elektronischen Vorrichtungen bereitgestellt. Es gibt viele verschiedene Arten von Speicher, darunter flüchtige und nichtflüchtige Speicher. Speichervorrichtungen können häufig als Speicher mit wahlfreiem Zugriff (RAM) strukturiert sein.
  • Flüchtiger Speicher kann Leistung benötigen, um Daten beizubehalten, und schließt unter anderem Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM) und synchronen dynamischen Direktzugriffsspeicher (SDRAM) ein. Nichtflüchtiger Speicher kann persistente Daten bereitstellen, indem er gespeicherte Daten aufbewahrt, wenn er nicht mit Leistung versorgt wird, und kann unter anderem NAND-Flash-Speicher, NOR-Flash-Speicher, Nurlesespeicher (ROM), elektrisch löschbaren programmierbaren ROM (EEPROM), löschbaren programmierbaren ROM (EPROM) und widerstandsvariablen Speicher wie Phasenwechsel-Direktzugriffsspeicher (PCRAM), resistiven Direktzugriffsspeicher (RRAM) und magnetoresistiven Direktzugriffsspeicher (MRAM), 3DXPoint™ beinhalten.
  • Speicher werden als flüchtige und nichtflüchtige Datenspeicher für eine Vielzahl elektronischer Anwendungen genutzt, z. B. für Personal Computer, tragbare Speichersticks, Digitalkameras, Mobiltelefone, tragbare Musikabspielgeräte wie MP3-Player, Filmabspielgeräte und andere elektronische Geräte. Speicherzellen können in Arrays angeordnet werden, wobei die Arrays in Speichervorrichtungen verwendet werden.
  • Viele elektronische Vorrichtungen schließen mehrere Hauptkomponenten ein: einen Host-Prozessor (z. B. eine zentrale Verarbeitungseinheit (CPU) oder einen anderen Hauptprozessor); Hauptspeicher (z. B. ein oder mehrere flüchtige oder nichtflüchtige Speichergeräte, wie z. B. dynamisches RAM (DRAM), mobiles oder stromsparendes synchrones DRAM mit doppelter Datenrate (DDR SDRAM) usw.); und ein Speichergerät (z. B. ein nichtflüchtiges Speichergerät (NVM), wie etwa ein Flash-Speicher, ein Nur-Lese-Speicher (ROM), eine SSD, eine MMC oder eine andere Speicherkartenstruktur oder -anordnung oder eine Kombination aus flüchtigen und nichtflüchtigen flüchtiger Speicher usw.). In bestimmten Beispielen können elektronische Vorrichtungen eine Benutzerschnittstelle (z. B. eine Anzeige, einen Berührungsbildschirm, eine Tastatur, eine oder mehrere Tasten usw.), eine Grafikverarbeitungseinheit (GPU), eine Energieverwaltungsschaltung, einen Basisbandprozessor oder einen oder mehr Transceiver-Schaltungen usw. einschließen.
  • Der Arbeitsspeicher oder das Speichersystem einer elektronischen Vorrichtungen kann eine Reihe von Leistungsmetriken beeinflussen, die einen Benutzer davon abbringen können, eine elektronische Vorrichtung gegenüber der elektronischen Vorrichtung eines Konkurrenten zu wählen. Verzögerungen beim Speichern und Abrufen von Daten sind zwei solche Metriken. Herkömmliche Flash-Speichersysteme wie etwa für mobile Systeme haben begrenzten RAM und können nur einen Teil der L2P-Tabelle im RAM halten. Wenn sich der falsche Teil der L2P-Tabelle nicht im RAM befindet, tritt eine Leistungsverzögerung auf, um den Zugriff auf den richtigen Teil der L2P-Tabelle aus dem Flash-Speicher zu ermöglichen. Bei zufälligen Schreibereignissen kann jede geschriebene Systemeinheit von Daten (z. B. typischerweise 4K) einen Zugriff auf den Flash-Speicher erfordern, um die richtige physikalische Adresse des Flash-Systems zu lokalisieren.
  • Figurenliste
  • In den Zeichnungen, die nicht unbedingt maßstabsgetreu sind, können gleiche Ziffern ähnliche Bauteile in verschiedenen Ansichten beschreiben. Gleiche Ziffern mit unterschiedlichen Buchstabensuffixen können verschiedene Instanzen ähnlicher Komponenten darstellen. Die Zeichnungen veranschaulichen im Allgemeinen beispielhaft, aber nicht als Einschränkung, verschiedene Ausführungsformen, die im vorliegenden Dokument erörtert werden.
    • 1 veranschaulicht ein Beispiel für eine Umgebung, die eine Hostvorrichtung und eine Speichervorrichtung einschließt, die dazu konfiguriert sind, über eine NAND-Kommunikationsschnittstelle zu kommunizieren.
    • 2 veranschaulicht allgemein ein Flussdiagramm eines beispielhaften Verfahrens zum Betreiben einer Speichervorrichtung oder Speichervorrichtung gemäß dem vorliegenden Gegenstand.
    • 3 veranschaulicht allgemein ein Flussdiagramm eines beispielhaften Verfahrens zum Verarbeiten des Zufallsspeichers, wie oben mit Bezug auf das Flussdiagramm von 2 oder das System von 1. erörtert.
    • 4 veranschaulicht allgemein und ein Flussdiagramm eines beispielhaften Verfahrens zum Verarbeiten einer Leseanforderung gemäß dem vorliegenden Gegenstand und in Bezug auf das Flussdiagramm von 2 oder das System von 1.
    • 5 veranschaulicht ein Blockdiagramm einer beispielhaften Maschine, auf der eine oder mehrere der hierin erörterten Techniken (z. B. Methodologien) ausgeführt werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Speichersysteme, wie beispielsweise, aber nicht ausschließlich, NAND-Speichervorrichtungen und -systeme, schließen in der Regel eine Flash-Übergangsschicht (FTL) ein, um logische Adressen, die von einer Host-Vorrichtung zur Verwaltung von Daten verwendet werden, oft als logische Blockadressen (LBAs) bezeichnet, in entsprechende physikalische Speicheradressen (PAs) zu übersetzen, die oft als physikalische Blockadressen (PBAs) des Speichersystems bezeichnet werden. Die FTL kann zum Beispiel eine Logisch-zu-Physisch(L2P)-Mappingtabelle (L2P-Tabelle) verwenden, die LBAs mit PBAs korreliert, um die Übersetzung durchzuführen. Mobile Speichervorrichtungen haben typischerweise einen Cachespeicher mit eingeschränkter Größe und daher fehlt es ihnen oft an Speicherplatz, um eine ganze Mapping-Tabelle zu speichern. Daher können Teile der Mappingtabelle(n) bei Bedarf aus dem Flash-Speicher abgerufen werden, was zu einer Verschlechterung der zufälligen Leseleistung führen kann.
  • Übersetzungstabellen werden im Allgemeinen in einen internen Speicher des Controllers geladen. Wenn die Tabellengröße größer ist als der interne Speicher (z. B. im Direktzugriffsspeicher (RAM), wie etwa dynamischer RAM (DRAM) oder statischer RAM (SRAM) des Controllers, wird ein Teil der Tabelle in den internen Speicher geladen und der Rest der Tabelle wird in einem anderen Speicher gespeichert (z. B. NAND-Flash-Array-Elemente). Wenn sich eine Übersetzungsanforderung (z. B. eine Zuordnung von logisch zu physikalisch (L2P)) nicht im internen Speicher befindet, ersetzt der Controller den internen Speicherabschnitt der Tabelle durch den entsprechenden Abschnitt aus einem anderen Speicher. Dieser Prozess kann Latenzen erhöhen, wenn Operationen wie das Lesen oder Schreiben auf die Speichervorrichtung ausgeführt werden. Obwohl ein erhöhter interner Speicher diese Vorkommnisse reduzieren kann, geht dies mit Herstellungs- und Energiekosten einher, die für eine gegebene Anwendung nicht akzeptabel sein können.
  • Um das Problem des Auslagerns von Teilen der Übersetzungstabellen in und aus dem internen Speicher anzugehen, können die Übersetzungstabellen an einen Host (mit vermutlich größeren Speicherressourcen als die Speichervorrichtung) geliefert werden, wodurch der Host angeben kann, auf welche physikalische Adresse eine bestimmte Operation Anwendung findet. Dies wird hierin als vom Host zwischengespeichertes L2P-Mapping bezeichnet, obwohl es in manchen Zusammenhängen auch als Host Performance Booster (HPB), Unified Memory Extension (UME) oder Host Memory Buffer (HMB) bezeichnet werden kann. Bei diesen Anordnungen ist der Controller letztlich dafür verantwortlich, die Übersetzungstabellen zu pflegen und den Host mit Änderungen an den Übersetzungstabellen zu aktualisieren, aber der Host kann dem Controller zusammen mit dem traditionellen Befehl und der logischen Adresse die zu bearbeitenden physikalischen Adressen liefern. Da die physische Adresse vom Host bereitgestellt wird, kann der Controller vermeiden, auf die Übersetzungstabellen zu verweisen, wenn er eine Operation durchführt, wodurch die Effizienz gesteigert oder die Latenzzeit verringert wird, wenn die Operation durchgeführt wird. Die physikalische Adresse kann in eine Nutzlast eingekapselt werden (z. B. Nutzlast der physikalischen Adresse).
  • Bei bestimmten Implementierungen einer Speichervorrichtung, wie etwa, aber nicht beschränkt auf, eine Flash-Speichervorrichtung können Verbesserungen der Arbeitslastleistung beim zufälligen Schreiben erheblich zur Gesamtsystemleistung beitragen. Beispielsweise muss bei solchen Speichervorrichtungen, die einen L2P-Tabellen-Cachespeicher verwenden, möglicherweise für jede zufällige Schreiboperation auf den Flash-Speicher zugegriffen werden, nicht nur um den Flash-Speicher mit Schreibdaten zu programmieren, sondern auch um den korrekten Teil der L2P-Tabelle in dem L2P-Tabellen-Cachespeicher zu haben um mit dem PA der Schreiboperation zu aktualisieren. Die Erfinder der vorliegenden Erfindung haben Techniken erkannt, die das Aktualisieren des L2P-Tabellen-Cachespeichers für einen angemessenen Teil von zufälligen Schreiboperationen begrenzen oder puffern können. Das Begrenzen oder Puffern der L2P-Tabellenaktualisierungen während Perioden starker Speicherzugriffsoperationen kann die Systemeffizienz während dieser Perioden grundlegend verbessern. Die Techniken eliminieren nicht das Aktualisieren der vollständigen L2P-Tabelle in der Flash-Speichervorrichtung, aber solche Operationen können verzögert werden. Eine solche Verzögerung kann ermöglichen, dass die Aktualisierungsoperationen während Perioden geringerer Nachfrage nach Speicherzugriffsoperationen auftreten und daher die Benutzererfahrung des Systems einschließlich der Speichervorrichtung verbessern.
  • Speichervorrichtungen beinhalten einzelne Speicherchips, die beispielsweise einen Speicherbereich beinhalten können, der ein oder mehrere Speicherarrays aus Speicherzellen umfasst, die eine (oder mehrere) ausgewählte Speichertechnologien implementieren. Ein solcher Speicherchip beinhaltet häufig einen unterstützenden Schaltkreis für den Betrieb des Speicherarrays bzw. der Speicherarrays. Andere Beispiele, die manchmal allgemein als „verwaltete Speichervorrichtungen“ bezeichnet werden, beinhalten Baugruppen mit einem oder mehreren Speicherchips, denen eine Controller-Funktionalität zugeordnet ist, die dazu konfiguriert ist, den Betrieb des einen oder der mehreren Speicherchips zu steuern. Eine solche Controller-Funktionalität kann die Interoperabilität mit einer externen Vorrichtung, wie z. B. einer „Host“-Vorrichtung, wie hierin später erläutert, vereinfachen. In solchen verwalteten Speichervorrichtungen kann die Controller-Funktionalität auf einem oder mehreren Chips, die auch ein Speicherarray enthalten, oder auf einem separaten Chip implementiert sein. In anderen Speichersystemen können eine oder mehrere Speichervorrichtungen mit Controller-Funktionalität kombiniert werden, um ein Solid-State-Drive(SSD)-Speichervolumen zu bilden. Der Begriff „Speichersystem“ wird hier so verwendet, dass er einen oder mehrere Speicherchips und jegliche Controller-Funktionalität für einen solchen Speicherchip, sofern vorhanden, einschließt; und schließt somit einzelne Speichervorrichtungen, verwaltete Speichervorrichtungen und SSDs ein.
  • Ausführungsformen der vorliegenden Offenbarung werden am Beispiel von verwalteten Speichervorrichtungen beschrieben, die NAND-Flash-Speicherzellen implementieren und als „verwaltete NAND“-Vorrichtungen bezeichnet werden. Diese Beispiele schränken jedoch den Umfang der Offenbarung nicht ein, die in anderen Formen von Speichervorrichtungen und/oder mit anderen Formen von Speichertechnologie implementiert werden kann.
  • Sowohl auf Halbleiter-Speicherarrays der NOR- als auch der NAND-Flash-Architektur wird über Decoder zugegriffen, die bestimmte Speicherzellen durch Auswahl der mit ihren Gates verbundenen Wortleitung aktivieren. In einem Halbleiter-Speicherarray der NOR-Architektur legen die ausgewählten Speicherzellen nach ihrer Aktivierung ihre Datenwerte auf Bitleitungen ab, wodurch je nach dem Zustand, in dem eine bestimmte Zelle programmiert ist, unterschiedliche Ströme fließen. In einem Halbleiter-Speicherarray der NAND-Architektur wird eine hohe Vorspannung an eine drain-seitige Auswahlgate-Leitung (drain-side select gate - SGD) angelegt. Wortleitungen, die mit den Gates der nicht ausgewählten Speicherzellen jeder Gruppe verbunden sind, werden mit einer bestimmten Durchgangsspannung (z. B. Vpass) angetrieben, um die nicht ausgewählten Speicherzellen jeder Gruppe als Durchgangstransistoren zu betreiben (z. B. um Strom in einer Weise durchzulassen, die nicht durch ihre gespeicherten Datenwerte eingeschränkt ist). Der Strom fließt dann von der Source-Leitung zur Bit-Leitung durch jede in Reihe geschaltete Gruppe, die nur durch die ausgewählten Speicherzellen jeder Gruppe begrenzt ist, und legt die stromkodierten Datenwerte der ausgewählten Speicherzellen auf die Bit-Leitungen.
  • Jede Flash-Speicherzelle in einem Halbleiter-Speicherarray der NOR- oder NAND-Architektur kann einzeln oder gemeinsam auf einen oder eine Reihe von programmierten Zuständen programmiert werden. Zum Beispiel kann eine Einzel-Level-Zelle (SLC) einen von zwei programmierten Zuständen darstellen (z.B. 1 oder 0), was einem Datenbit entspricht. Flash-Speicherzellen können auch mehr als zwei programmierte Zustände darstellen, was die Herstellung von Speichern mit höherer Dichte ermöglicht, ohne die Anzahl der Speicherzellen zu erhöhen, da jede Zelle mehr als eine Binärziffer (z. B. mehr als ein Bit) darstellen kann. Solche Zellen können als Multi-State-Speicherzellen, Multi-Ziffer-Zellen oder Multi-Level-Zellen (multi-level cells - MLCs) bezeichnet werden. In bestimmten Beispielen kann sich MLC auf eine Speicherzelle beziehen, die zwei Datenbits pro Zelle speichern kann (z. B. einen von vier programmierten Zuständen), eine Dreifach-Level-Zelle (TLC) kann sich auf eine Speicherzelle beziehen, die drei Datenbits pro Zelle speichern kann (z. B. einen von acht programmierten Zuständen), und eine Quad-Level-Zelle (quad-level cell - QLC) kann vier Datenbits pro Zelle speichern. MLC wird hierin in einem breiteren Kontext verwendet und bezieht sich auf jede Speicherzelle, die mehr als ein Datenbit pro Zelle speichern können (d. h. mehr als zwei programmierte Zustände darstellen können).
  • Verwaltete Speichervorrichtungen können gemäß anerkannter Industriestandards dazu konfiguriert und betrieben werden. Verwaltete NAND-Vorrichtungen können z. B. (als nicht einschränkende Beispiele) eine Universal Flash Storage (UFS™)-Vorrichtung oder eine eingebettete MMC-Vorrichtung (eMMC™) usw. sein. Bei den oben genannten Beispielen können UFS-Vorrichtungen in Übereinstimmung mit den Normen des Joint Electron Device Engineering Council (JEDEC) konfiguriert werden (z. B. JEDEC-Norm JESD223D mit dem Titel „JEDEC UFS Flash Storage 3.0“ und/oder Aktualisierungen oder Folgeversionen dieser Norm. Ebenso können identifizierte eMMC-Vorrichtungen gemäß dem JEDEC-Standard JESD84-A51 mit dem Titel „JEDEC eMMC Standard 5.1“ und/oder Aktualisierungen oder nachfolgende Versionen dieses Standards konfiguriert sein. Verwaltete NAND-Vorrichtungen können als Primär- oder Zusatzspeicher in verschiedenen Formen elektronischer Vorrichtungen verwendet werden und werden üblicherweise in mobilen Vorrichtungen eingesetzt.
  • Ein SSD kann unter anderem als Hauptspeichervorrichtung eines Computers verwendet werden und hat Vorteile gegenüber herkömmlichen Festplatten mit beweglichen Teilen, z. B. in Bezug auf Leistung, Größe, Gewicht, Robustheit, Betriebstemperaturbereich und Stromverbrauch. Zum Beispiel können SSDs eine geringere Suchzeit, Latenzzeit oder andere Verzögerungen aufweisen, die mit Magnetplattenlaufwerken (z. B. elektromechanischen Laufwerken usw.) verbunden sind. SSDs verwenden nichtflüchtige Speicherzellen, wie etwa Flash-Speicherzellen, um interne Batterieversorgungsanforderungen zu vermeiden und das Laufwerk so vielseitiger und kompakter zu machen.
  • Sowohl SSDs als auch verwaltete Speichervorrichtungen können eine Reihe von Speichervorrichtungen beinhalten, einschließlich einer Reihe von Chips oder logischen Einheiten (z. B. logische Einheitsnummern oder LUNs), und können einen oder mehrere Prozessoren oder andere Controller beinhalten, die erforderlichen logische Funktionen zum Betrieb der Speichervorrichtungen oder als Schnittstelle zu externen Systemen ausführen. Solche SSDs und verwaltete Speichervorrichtungen können einen oder mehrere Flash-Speicherchips beinhalten, einschließlich einer Reihe von Speicherarrays und darauf befindlichen peripheren Schaltkreisen. Die Flash-Speicherarrays können eine Anzahl von Blöcken von Speicherzellen beinhalten, die in einer Anzahl von physischen Seiten organisiert sind. In einigen Beispielen können die SSDs auch DRAM oder SRAM (oder andere Formen von Speicherchips oder andere Speicherstrukturen) beinhalten. In ähnlicher Weise können verwaltete NAND-Vorrichtungen ein oder mehrere Arrays mit flüchtigem und/oder nichtflüchtigem Speicher beinhalten, die vom NAND-Speicherarray getrennt sind und sich entweder innerhalb eines Controllers befinden oder von diesem getrennt sind. Sowohl SSDs als auch verwaltete NAND-Vorrichtungen können Befehle von einem Host in Verbindung mit Speicheroperationen empfangen, wie z. B. Lese- oder Schreiboperationen zur Übertragung von Daten (z. B. Benutzerdaten und zugehörige Integritätsdaten, wie Fehlerdaten und Adressdaten usw.) zwischen den Speichervorrichtungen und dem Host oder Löschoperationen zum Löschen von Daten aus den Speichervorrichtungen.
  • 1 veranschaulicht ein Beispiel für eine Umgebung 100, die einen Host 105 und eine Speichervorrichtung 110 beinhaltet, die dazu konfiguriert sind, über eine Kommunikationsschnittstelle zu kommunizieren. Der Host 105 oder die Speichervorrichtung 110 können in einer Reihe von Produkten 150 beinhaltet sein, wie z. B. IoT-Vorrichtungen (z. B. ein Kühlschrank oder ein anderes Gerät, ein Sensor, ein Motor oder ein Aktuator, eine mobile Kommunikationsvorrichtung, ein Auto, eine Drohne usw.), um die Verarbeitung, Kommunikation oder Steuerung des Produkts 150 zu unterstützen.
  • Die Speichervorrichtung 110 beinhaltet einen Speichercontroller 115 und ein Speicherarray 120, das z. B. einen oder mehrere einzelne Speicherchips (z. B. einen Stapel von dreidimensionalen 3D-NAND-Chips) enthält. Bei der Halbleiterspeichertechnologie mit 3D-Architektur werden vertikale Strukturen gestapelt, wodurch sich die Anzahl der Ebenen, der physischen Seiten und damit die Dichte einer Speichervorrichtung (z. B. einer Speichereinrichtung) erhöht. In einem Beispiel kann die Speichervorrichtung 110 eine diskrete Speichervorrichtung sein. In bestimmten Beispielen können ein oder mehrere Speicherchips des Speicherarrays 120 eine erste vollständige L2P-Tabelle 161 zum Abbilden von logischen Blockadressen (LBAs) des Hosts mit physikalischen Adressen (PAs) des Flash-Speichers einschließen. In bestimmten Beispielen kann die Tabelle die physische Adresse speichern und durch die logische Blockadresse indiziert werden, um Speicherplatz zu sparen.
  • Eine oder mehrere Kommunikationsschnittstellen 111 können zur Datenübertragung zwischen der Speichervorrichtung 110 und einer oder mehreren anderen Komponenten des Hosts 105 verwendet werden, wie z. B. eine Serial Advanced Technology Attachment (SATA)-Schnittstelle, eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle, eine Universal Serial Bus (USB)-Schnittstelle, eine UFS-Schnittstelle, eine eMMC™-Schnittstelle oder eine oder mehrere andere Anschlüsse oder Schnittstellen. Der Host 105 könnte ein Hostsystem, eine elektronische Vorrichtung, einen Prozessor, einen Speicherkartenleser oder eine oder mehrere andere elektronische Vorrichtungen außerhalb der Speichervorrichtung 110 beinhalten. In einigen Beispielen kann der Host 105 eine Maschine sein, die einen Teil oder alle der Komponenten aufweist, die unter Bezugnahme auf die Maschine 500 von 5 erörtert wurden. Daten können zwischen der Speichervorrichtung 110 und anderen Komponenten über einen Eingabe/Ausgabe-Bus (E/A) übertragen werden, der einen oder mehrere Zwischenspeicher für die vorübergehende Speicherung der Daten während der Übertragung (z. B. vor dem Lesen oder Schreiben von/zu einem Speicherfeld) einschließen kann.
  • Der Speichercontroller 115 könnte Anweisungen von dem Host 105 empfangen und mit dem Speicherarray kommunizieren, um z. B. Daten an (z. B. schreiben oder löschen) oder von (z. B. lesen) einer oder mehreren Speicherzellen, Ebenen, Unterblöcken, Blöcken oder Seiten des Speicherarrays zu übertragen. Der Speichercontroller 115 kann unter anderem Schaltungen oder Firmware einschließen, einschließlich einer oder mehrerer Komponenten oder integrierter Schaltungen. Zum Beispiel könnte der Speichercontroller 115 eine oder mehrere Speichercontroller-Einheiten, -schaltungen, -Schaltkreise oder -komponenten beinhalten, die dazu konfiguriert sind, den Zugriff über das Speicherarray 120 zu steuern und eine Übersetzungsschicht zwischen dem Host 105 und der Speichervorrichtung 110 bereitzustellen. Der Speichercontroller 115 kann eine oder mehrere E/A-Schaltungen (und entsprechende Latches), Caches, Leitungen oder Schnittstellen einschließen, um Daten zu oder von dem Speicherarray 120 zu übertragen. Der Speichercontroller 115 kann einen Speichermanager 125 und einen Array-Controller 135 beinhalten.
  • Der Array-Controller 135 könnte unter anderem Schaltkreise oder Komponenten beinhalten, die dazu konfiguriert sind, Speicheroperationen zu steuern, die mit dem Schreiben von Daten in, dem Lesen von Daten aus oder dem Löschen einer oder mehrerer Speicherzellen der mit dem Speichercontroller 115 gekoppelten Speichervorrichtung 110 verbunden sind. Die Speicheroperationen könnten z. B. auf Host-Befehlen basieren, die von dem Host 105 empfangen werden, oder intern vom Speicherverwalter 125 erzeugt werden (z. B. in Verbindung mit Verschleißausgleich, Fehlererkennung oder -korrektur usw.).
  • Der Array-Controller 135 kann eine Fehlerkorrekturcode-Komponente 140 (error correction code - ECC) beinhalten, die unter anderem eine ECC-Engine beinhalten kann oder einen anderen Schaltkreis, der dazu konfiguriert ist, Fehler zu erkennen oder zu korrigieren, die mit dem Schreiben von Daten in oder dem Lesen von Daten aus einer oder mehreren Speicherzellen der mit dem Speichercontroller 115 gekoppelten Speichervorrichtung 110 verbunden sind. Die ECC-Komponente 140 kann zum Beispiel eine Bitfehlerrate (BER) erkennen oder berechnen, die mit dem Durchführen einer Anzahl von Speicheroperationen verbunden ist. Die BER kann Bitfehlern entsprechen, die in Latches eines E/A-Busses auftreten, internen Fehlern des Speichercontrollers 115, Fehlern, die in einem oder mehreren der NAND-Arrays auftreten, oder einer oder mehreren der Multi-Level-Zelle(n) (MLC) der Speichervorrichtung 110. Der Speichercontroller 115 kann so konfiguriert werden, dass er aktiv Fehler erkennt und behebt (z. B. Bitfehler, Betriebsfehler, Absturzbedingungen, Stillstand, Aufhängen usw.), die mit verschiedenen Operationen oder der Speicherung von Daten verbunden sind, wobei die Integrität der zwischen dem Host 105 und der Speichervorrichtung 110 übertragenen Daten oder die Integrität der gespeicherten Daten (z. B., Verwendung von redundantem RAID-Speicher usw.) beibehalten wird und fehlerhafte Speicherressourcen (z. B. Speicherzellen, Speicherfelder, Seiten, Blöcke usw.) entfernen werden können (z. B. ausgemustert), um künftige Fehler zu vermeiden. Der Array-Controller 135 kann erfasste BER-Informationen zum Speichern und Verfolgen an den Speichermanager 125 übertragen. Der Speichercontroller 115 kann eine (nicht gezeigte) Befehlswarteschlange einschließen, die von einem Host empfangene Speicherbefehle verfolgt. Befehle in der Warteschlange können von dem Speichercontroller 115 in einer First-In-First-Out(FIFO)-Weise, einer Stapel-Weise, außerhalb der Reihenfolge, gemäß der Priorität oder in irgendeiner anderen geeigneten Reihenfolge ausgeführt werden.
  • Die beschriebene Speichervorrichtung 110 kann optional eine Kryptografieschaltung 160 in Verbindung mit dem Speicherarray 120 einschließen. In bestimmten Beispielen kann die Kryptografieschaltung 160 eine Verschlüsselungsschaltung, eine Entschlüsselungsschaltung oder eine Kombination davon einschließen. In einigen Implementierungen kann der Speichercontroller 115 der Speichervorrichtung 110 eine Steuerschaltung einschließen, die konfiguriert ist, um die Funktionen der Kryptografieschaltung 160 zu implementieren. In anderen Implementierungen kann die Kryptografieschaltung 160 eine unabhängige Steuerschaltung zum Implementieren der beschriebenen Funktionalität einschliessen. In noch anderen Implementierungen kann die Steuerschaltung zwischen der Kryptografieschaltung 160 und dem Speichercontroller 115 aufgeteilt werden, um die beschriebenen Funktionen der Kryptografieschaltung 160 zu implementieren. In dem dargestellten Beispiel bildet der Array-Controller 135 einen Teil des Speichercontrollers 115 und die Kryptografieschaltung 160 bildet einen Teil des Array-Controllers. In anderen Implementierungen kann die Kryptografieschaltung 160 extern und/oder außerhalb des Array-Controllers 135 sein. Beispielsweise kann die Kryptografieschaltung 160 (oder einzelne Komponenten davon) eine unabhängige Komponente sein, die mit einer oder mehreren Komponenten in der Umgebung 100 gekoppelt ist. Unabhängig von ihrer physischen Lage dienen die Strukturen, die die zusätzliche Funktionalität der Kryptografieschaltung 160 bereitstellen, dazu, die vom Host 105 bereitgestellten physischen Adressen zu überprüfen, um einen fehlerhaften oder böswilligen Zugriff auf die Speichervorrichtung zu verhindern und dem Host die Möglichkeit zu geben, die Informationen der host-residenten Mapping-Tabelle zu aktualisieren, um die Mapping-Informationen mit den Mapping-Informationen der Speichervorrichtung während des host-residenten FTL-Betriebs der Umgebung 100 abzugleichen.
  • Der Speicherverwalter 125 könnte unter anderem einen Schaltkreis oder Firmware beinhalten, z. B. eine Anzahl Komponenten oder integrierte Schaltungen, die mit verschiedenen Speicherverwaltungsfunktionen verbunden sind. Zum Zweck der vorliegenden Beschreibung werden beispielhafte Speicheroperationen und Verwaltungsfunktionen im Zusammenhang mit NAND-Speicher beschrieben. Fachleute werden erkennen, dass andere Formen von nichtflüchtigen Speichern analoge Speicheroperationen oder Verwaltungsfunktionen aufweisen können. Solche NAND-Verwaltungsfunktionen beinhalten Verschleißausgleich, (z.B. Garbage Collection oder Wiederherstellung), Fehlererkennung (z.B. BER-Übewachung) oder Fehlerkorrektur, Blockabschaltung oder eine oder mehrere andere Speicherverwaltungsfunktionen. Der Speicherverwalter 125 könnte Host-Befehle (z. B. von einem Host empfangene Befehle) in Vorrichtungsbefehle (z. B. Befehle, die mit dem Betrieb eines Speicherarrays, usw., verbunden sind) analysieren oder formatieren oder Vorrichtungsbefehle (z. B. zur Ausführung verschiedener Speicherverwaltungsfunktionen) für den Array-Controller 135 oder eine oder mehrere andere Komponenten der Speichervorrichtung 110 erzeugen.
  • Der Speicherverwalter 125 könnte einen Satz von Verwaltungstabellen beinhalten, die dazu konfiguriert sind, verschiedene Informationen zu verwalten, die mit einer oder mehreren Komponenten der Speichervorrichtung 110 verbunden sind (z. B. verschiedene Informationen, die mit einem Speicherarray oder einer oder mehreren mit dem Speichercontroller 115 gekoppelten Speicherzellen verbunden sind). Zum Beispiel könnten die Verwaltungstabellen Informationen über das Blockalter, die Blocklöschzählung, die Fehlerhistorie, Informationen zu Fehlerparametern, Zeitüberschreitungswert für das Zurücksetzen des Hosts, Latenzzeiten für Speicherbefehle oder eine oder mehrere Fehlerzählungen (z. B. eine Schreiboperationsfehlerzählung, eine Lesebitfehlerzählung, eine Leseoperationsfehlerzählung, eine Löschfehlerzählung usw.) für einen oder mehrere Blöcke von Speicherzellen beinhalten, die mit dem Speichercontroller 115 gekoppelt sind. In bestimmten Beispielen kann der Bitfehler als unkorrigierbarer Bitfehler bezeichnet werden, wenn die Anzahl der erkannten Fehler für eine oder mehrere der Fehlerzählungen (z. B. ein Fehlerparameter) über einem Schwellenwert liegt (z. B. einem zulässigen Fehlerschwellenwert). Die Verwaltungstabellen könnten unter anderem eine Zählung der korrigierbaren oder unkorrigierbaren Bitfehler verwalten.
  • In bestimmten Beispielen kann der Speichercontroller 115 einen Tabellen-Cachespeicher 130 zum Speichern eines Teils der FTL-Tabelle 161 einschließen, die auf dem Chip des Speicherarrays gespeichert ist. In bestimmten Beispielen ist der Speicher des Tabellen-Cachespeichers 130 schneller als der Speicher des Speicherarrays 120 und kann helfen, schneller auf Speicherzugriffsanforderungen des Hosts zu reagieren. In bestimmten Beispielen kann der Speichercontroller 115 einen Zufalls-Cachespeicher 131 einschließen. Der Betrieb des Zufalls-Cachespeichers wird unten erörtert, jedoch kann der Zufalls-Cachespeicher in bestimmten Beispielen, insbesondere beim Bedienen von Schreibanforderungen, Zuordnungsinformationen von Schreibanforderungen speichern, die eine relativ kleine Menge von nicht sequentiellen Schreibdaten aufweisen. Der Cachespeicher ermöglicht einen sehr effizienten Betrieb, insbesondere in Systemen, in denen der Host eine FTL-Tabelle verwaltet. In solchen Systemen beseitigt der Zufalls-Cachespeicher die Notwendigkeit, den FTL-Tabellen-Cachespeicher durch Mapping-Informationen zu ersetzen, die jeder LBA jeder nicht sequentiellen Schreiboperation zugeordnet sind. Beispielsweise erforderte ohne den Zufalls-Cachespeicher jede Schreiboperation, der jeder Schreibanforderung mit einer kleinen Menge an Schreibdaten zugeordnet ist, im Allgemeinen, dass der FTL-Tabellen-Cachespeicher 130 mit einem anderen Abschnitt der FTL-Tabelle 161 aktualisiert wird, die in dem Speicherarray 120 gespeichert ist. Bei vielen zufälligen Schreibanforderungen kann das Zugreifen auf die FTL-Tabelle 161 für jede Anforderung erheblich dazu beitragen, die Leistung der Speichervorrichtung zu verringern.
  • Das Speicherarray 120 könnte vielfältige Speicherzellen beinhalten, die z. B. in einer Reihe von Vorrichtungen, Ebenen, Unterblöcken, Blöcken oder Seiten angeordnet sind. Zum Beispiel könnte eine 48 GB TLC NAND Speichervorrichtung 18.592 Bytes Daten pro Seite (16.384 + 2208 Bytes), 1536 Seiten pro Block, 548 Blöcke pro Ebene und 4 oder mehr Ebenen pro Vorrichtung beinhalten. In einem anderen Beispiel könnte eine 32-GB-MLC-Vorrichtung (die zwei Datenbits pro Zelle (d. h. 4 programmierbare Zustände) speichert) 18.592 Bytes (B) Daten pro Seite (16.384 + 2208 Bytes), 1024 Seiten pro Block, 548 Blöcke pro Ebene und 4 Ebenen pro Vorrichtung beinhalten, jedoch mit der halben erforderlichen Schreibzeit und den doppelten Programm-/Löschzyklen (P/E) wie eine entsprechende TLC-Vorrichtung. Andere Beispiele könnten andere Zahlen oder Anordnungen beinhalten. In einigen Beispielen kann eine Speichervorrichtung oder ein Teil davon selektiv im SLC-Modus oder in einem gewünschten MLC-Modus (wie TLC, QLC usw.) betrieben werden.
  • Im Betrieb werden Daten typischerweise seitenweise in die Speichervorrichtung 110 geschrieben oder aus ihr gelesen und blockweise gelöscht. Eine oder mehrere Speicheroperationen (z. B. Lesen, Schreiben, Löschen usw.) könnten jedoch je nach Wunsch an größeren oder kleineren Gruppen von Speicherzellen ausgeführt werden. Die Datenübertragungsgröße einer Speichervorrichtung 110 wird typischerweise als Seite bezeichnet, während die Datenübertragungsgröße eines Hosts typischerweise als Sektor oder Block bezeichnet wird.
  • Unterschiedliche Typen von Speicherzellen oder Speicherarrays 120 könnten unterschiedliche Seitengrößen vorsehen oder unterschiedliche Mengen an zugehörigen Metadaten erfordern. Zum Beispiel können verschiedene Typen von Speichervorrichtungen unterschiedliche Bitfehlerraten aufweisen, was zu unterschiedlichen Mengen an Metadaten führen könnte, die erforderlich sind, um die Integrität der Datenseite zu gewährleisten (z. B. kann eine Speichervorrichtung mit einer höheren Bitfehlerrate mehr Bytes an Fehlerkorrekturcode-Daten erfordern als eine Speichervorrichtung mit einer niedrigeren Bitfehlerrate). In einem Beispiel kann eine MLC-NAND-Flash-Vorrichtung eine höhere Bitfehlerrate haben als eine entsprechende Einzel-Level-Zellen (SLC)-NAND-Flash-Vorrichtung. Daher kann die MLC-Vorrichtung mehr Metadatenbytes für Fehlerdaten erfordern als die entsprechende SLC-Vorrichtung.
  • 2 veranschaulicht allgemein ein Flussdiagramm eines beispielhaften Verfahrens zum Betreiben einer Speichervorrichtung oder Speichervorrichtung gemäß dem vorliegenden Gegenstand wie z. B. das beispielhafte System von 1. Bei 201 können Mapping-Informationen der Speichervorrichtung optional einem Host bereitgestellt werden. In einigen Beispielen können die Mapping-Informationen es dem Host ermöglichen, zumindest anfangs zu bestimmen, wo Daten auf dem Speicher der Speichervorrichtung gespeichert sind. In bestimmten Beispielen können Teile der Mapping-Informationen, wie z. B. die physikalischen Adressen des Speichers der Speichervorrichtung, verschlüsselt werden, um zu verhindern, dass böswillige Informationen auf der Speichervorrichtung gespeichert werden. Bei 203 können Speicherzugriffsanforderungen an der Speichervorrichtung empfangen werden. In bestimmten Beispielen kann die Speicheranforderung eine LBA des Hosts, eine PA der Speichervorrichtung, Schreibdaten oder eine Kombination davon einschließen. Bei 205 kann der Speichercontroller der Speichervorrichtung bestimmen, ob die Speicherzugriffsanforderung eine Lesezugriffsanforderung oder eine Schreibzugriffsanforderung sein kann. In bestimmten Beispielen kann eine solche Bestimmung durch Überprüfung eines Operationscodes der Anfrage erfolgen. Wenn bestimmt wird, dass eine Anforderung eine Leseanforderung ist, kann der Speichercontroller bei 207 die Lesezugriffsanforderung verarbeiten. In bestimmten Beispielen kann die Lesezugriffsanforderung gemäß dem Flussdiagramm von 4 verarbeitet werden. Wenn bestimmt wird, dass eine Anforderung eine Schreibzugriffsanforderung ist, kann der Speichercontroller bei 211 die Schreibdaten in das Speicherarray der Speichervorrichtung schreiben. In bestimmten Beispielen kann das Schreiben der Schreibdaten in das Speicherarray das Bestimmen einer physikalischen Adresse einer Stelle des Speicherarrays einschließen, an der die Schreibdaten zu programmieren sind.
  • Bei 213 können die LBA der Anforderung und die PA, die mit dem Programmieren der Schreibdaten in dem Speicherarray verbunden sind, in dem Zufalls-Cachespeicher werden. Wenn in bestimmten Beispielen die dem Schreibzugriffsbefehl zugeordnete Menge an Schreibdaten größer als ein vorbestimmter Schwellenwert ist, können die der Schreibzugriffsanforderung und der nachfolgenden Programmieroperation zugeordneten Zuordnungsinformationen verarbeitet und im Tabellen-Cachespeicher oder der vollständigen L2P-Tabelle des Speicherarrays gemäß herkömmlicher Verfahren gespeichert werden. Als solches kann der Speichercontroller die Menge an Schreibdaten mit dem vorbestimmten Schwellenwert vergleichen und die LBA und PA in dem Zufalls- Cachespeicher bei 213 zwischenspeichern, wenn die Menge an Schreibdaten kleiner als der vorbestimmte Schwellenwert ist.
  • Da die Größe des Cachespeichers sowohl für den Tabellen-Cachespeicher als auch für den Zufalls-Cachespeicher begrenzt ist, kann bei 215 eine Bestimmung, ob der Zufalls-Cachespeicher voll ist, beispielsweise durch den Speichercontroller bewertet werden. Wenn der Zufalls-Cachespeicher nicht voll ist, können Mapping-Informationen für eine zusätzliche Schreibzugriffsanforderung im Zufalls-Cachespeicher gespeichert werden und der Ablauf kann mit dem Warten auf und Verarbeiten einer nächsten Speicherzugriffsanforderung von dem Host bei 203 fortfahren. Wenn der Zufalls-Cachespeicher voll ist, wird der Zufalls-Cachespeicher bei 217 geleert. Das Leeren des Zufalls-Cachespeichers kann dazu führen, dass der Zufalls-Cachespeicher keine Mapping-Informationen enthält und bereit ist, Mapping-Informationen zu akzeptieren, die nachfolgenden Schreibzugriffsanforderungen von dem Host zugeordnet sind. Außerdem kann das Leeren des Zufalls-Cachespeichers das Speichern der Mapping-Informationen des Zufalls-Cachespeichers im Tabellen-Cachespeicher, in der L2P-Tabelle im Speicherarray oder in einer Kombination aus dem Tabellen-Cachespeicher und der L2P-Tabelle einschließen. In bestimmten Beispielen kann das Leeren oder Verarbeiten des Zufalls-Cachespeichers gemäß dem Flussdiagramm von 3 ausgeführt werden.
  • 3 veranschaulicht allgemein ein Flussdiagramm eines beispielhaften Verfahrens 307 zum Verarbeiten des Zufalls-Cachespeichers, wie oben mit Bezug auf das Flussdiagramm von 2 oder das System von 1 erörtert. Bei 321 kann auf den ältesten Datensatz des Zufalls-Cachespeicher zugegriffen werden. In bestimmten Beispielen kann der Zufalls-Cachespeicher eine feste Länge haben und kann wie eine Liste gefüllt werden, wobei jeder neue Datensatz an das Ende des Cachesspeichers/der Liste angehängt werden kann. Als solches kann der älteste Datensatz der erste Datensatz der Liste/des Cachespeichers sein und kann einen vorbestimmten Ort haben. Es versteht sich, dass andere Verfahren zum Erstellen eines Cachesspeichers und zum Speichern von Datensätzen möglich sind, sodass der älteste Datensatz identifiziert und darauf zugegriffen werden kann, und solche Verfahren weichen nicht vom Umfang des vorliegenden Gegenstands ab. Bei 323 kann die LBA des ältesten Datensatzes ausgewertet oder mit den LBAs des Tabellen-Cachespeichers verglichen werden. Wenn die LBA des ältesten Datensatzes nicht mit einer LBA des Tabellen-Cachespeichers übereinstimmt, kann bei 325 der Teil der L2P-Tabelle im Tabellen-Cachespeicher ersetzt werden, indem zuerst der Tabellen-Cachespeicher in der L2P-Tabelle des Speicherarrays gespeichert wird und dann die Datensätze des Tabellen-Cachespeichers durch einen anderen Teil der L2P-Tabelle des Speicherarrays ersetzt werden. Der Verfahrensablauf kann zu 323 zurückkehren, um zu verifizieren, dass die LBA des ältesten Datensatzes mit einer LBA des Tabellen-Cachespeichers übereinstimmt.
  • Wenn die LBA des ältesten Datensatzes des Zufalls-Cachespeichers mit einer LBA des Tabellen-Cachespeichers übereinstimmt, kann bei 327 die PA der entsprechenden LBA des Tabellen-Cachespeichers mit der PA des ältesten Datensatzes des Zufalls-Cachespeichers aktualisiert werden. In bestimmten Beispielen kann der älteste Datensatz des Zufalls-Cachespeichers beim Aktualisieren des entsprechenden Datensatzes des Tabellen-Cachespeichers aufgezeichnet, markiert oder anderweitig als ungültig angezeigt werden.
  • Bei 329 wird der Zufalls-Cachespeicher ausgewertet, um festzustellen, ob Datensätze im Zufalls-Cachespeicher verbleiben. Wenn der älteste Datensatz des Zufalls-Cachespeichers, der bei 321 aus dem Zufalls-Cachespeicher abgerufen wird, der letzte Datensatz im Zufalls-Cachespeicher ist, wird der Zufalls-Cachespeicher bei 331 ausgewertet, um zu bestimmen, ob gültige Datensätze im Zufalls-Cachespeicher verbleiben. Wenn keine gültigen Aufzeichnungen im Zufalls-Cachespeicher verbleiben, wird bei 333 der Tabellen-Cachespeicher in der vollständigen L2P-Tabelle im Speicherarray gespeichert. Wenn bei 331 weitere gültige Aufzeichnungen im Zufalls-Cachespeicher verbleiben, kehrt das Verfahren bei 321 zum Abrufen der ältesten der Aufzeichnungen zurück.
  • Unter erneuter Bezugnahme auf die Auswertung bei 329 wird, wenn der zuletzt aus dem Zufalls-Cachespeicher abgerufene Datensatz nicht der letzte Datensatz in dem Zufalls-Cachespeicher ist, bei 335 der nächste Datensatz in dem Zufalls-Cachespeicher abgerufen. Die abgerufene Datensatz-ID wird dann ausgewertet, um zu bestimmen, ob die LBA des abgerufenen Datensatzes mit der LBA des Tabellen-Cachespeichers bei 337 übereinstimmt. Wenn die LBA des abgerufenen Datensatzes mit einer LBA des Tabellen-Cachespeichers übereinstimmt, wird der Tabellen-Cachespeicher bei 327 mit der PA des abgerufenen Datensatzes aktualisiert. Wenn die LBA des abgerufenen Datensatzes nicht mit einer LBA des Tabellen-Cachespeichers übereinstimmt, wird der abgerufene Datensatz vorerst ignoriert und der nächste Datensatz wird bei 329 abgerufen.
  • Im Allgemeinen identifiziert das Verfahren 317 zur Verarbeitung des Zufalls-Cachespeichers die LBAs im Zufalls-Cachespeicher, die entsprechende LBAs im Tabellen-Cachespeicher haben, aktualisiert die PAs des Tabellen-Cachespeichers entsprechend und speichert den Tabellen-Cachespeicher in der vollständigen L2P-Tabelle im Speicherfeld. Wenn ein Datensatz im Zufalls-Cachespeicher verbleibt, wird ein Datensatz abgerufen, der Tabellen-Cachespeicher wird durch einen Teil der vollständigen L2P-Tabelle ersetzt, der der LBA des abgerufenen Datensatzes entspricht, und das Verfahren 317 wird wiederholt. Bei dem Verfahren 316 zum Verarbeiten des Zufalls-Cachespeichers ist der Zufalls-Cachespeicher leer von gültigen Aufzeichnungen und bereit, Hochgeschwindigkeitsschreiben von relativ kleinen Mengen von Zufallsschreibdaten in das Speicherarray zu ermöglichen.
  • 4 veranschaulicht allgemein und ein Flussdiagramm eines beispielhaften Verfahrens 407 zum Verarbeiten einer Leseanforderung gemäß dem vorliegenden Gegenstand und in Bezug auf das Flussdiagramm von 2 oder das System von 1. Bei 441 werden Leseinformationen der Leseanforderung ausgewertet, um zu bestimmen, ob die LBA der Leseanforderung einer LBA des Zufalls-Cachespeichers entspricht. Wenn dies der Fall ist, werden bei 443 die gelesenen Daten aus dem Speicherarray unter Verwendung des PA des entsprechenden Datensatzes des Zufalls-Cachespeichers abgetastet und an den Host übertragen. Wenn bei 441 die LBA der Leseanforderung nicht mit einer LBA des Zufalls-Cachespeichers übereinstimmt, werden bei 445 Leseinformationen der Leseanforderung ausgewertet, um zu bestimmen, ob die LBA der Leseanforderung einer LBA des Tabellen-Cachespeichers entspricht. Wenn die LBA der Leseanforderung mit einer LBA des Tabellen-Cachespeichers übereinstimmt, werden bei 447 die gelesenen Daten vom Speicherarray unter Verwendung des PA des entsprechenden Datensatzes des Tabellen-Cachespeichers abgetastet und an den Host übertragen.
  • Wenn bei 445 die LBA der Leseanforderung nicht mit einer LBA des Tabellen-Cachespeichers übereinstimmt, wird bei 449 der Tabellen-Cachespeicher in der vollständigen L2P-Tabelle im Speicherarray gespeichert und durch einen neuen Teil der L2P-Tabelle ersetzt, der der LBA der Leseanforderung entspricht. Die Verfahrenssteuerung kehrt dann zur Auswertung der Leseanforderungsinformationen zurück, um festzustellen, ob die LBA der Leseanforderung mit einer LBA des Tabellen-Cachespeichers bei 445 übereinstimmt.
  • 5 veranschaulicht ein Blockdiagramm einer beispielhaften Maschine 500, auf der eine oder mehrere der hierin erörterten Techniken (z. B. Methodologien) ausgeführt werden können. In alternativen Ausführungsformen kann die Maschine 500 als eigenständige Vorrichtung arbeiten oder mit anderen Maschinen verbunden (z. B. vernetzt) sein. In einem vernetzten Einsatz kann die Maschine 500 in der Funktion eines Server-Rechners, einer Client-Maschine oder beider in einer Server-Client-Netzwerkumgebung betrieben werden. In einem Beispiel kann die Maschine 500 als Peer-Maschine in einer Peer-to-Peer (P2P) (oder einer anderen verteilten) Netzwerkumgebung fungieren. Die Maschine 500 kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein persönlicher digitaler Assistent (PDA), ein Mobiltelefon, eine Web-Appliance, eine IoT-Vorrichtung, ein Automobilsystem oder eine beliebige Maschine sein, die in der Lage ist, Anweisungen (sequenziell oder anderweitig) auszuführen, die von dieser Maschine auszuführende Aktionen spezifizieren. Ferner ist zwar nur eine einzelne Maschine veranschaulicht, aber der Begriff „Maschine“ soll auch eine beliebige Sammlung von Maschinen beinhalten, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine oder mehrere der hierin erörterten Methoden auszuführen, wie z. B. Cloud Computing, Software as a Service (SaaS), andere Computer-Cluster-Konfigurationen.
  • Beispiele, wie hierin beschrieben, können Logik, Komponenten, Vorrichtungen, Pakete oder Mechanismen beinhalten oder von diesen betrieben werden. Ein Schaltkreis ist eine Sammlung (z. B. ein Satz) von Schaltungen, die in greifbaren Einheiten implementiert sind und Hardware beinhalten (z. B. einfache Schaltungen, Gates, Logik, usw.). Die Zugehörigkeit zu einem Schaltkreis kann im Laufe der Zeit und der zugrundeliegenden Hardwarevariabilität flexibel sein. Schaltungen beinhalten Elemente, die allein oder in Kombination bestimmte Aufgaben ausführen können, wenn sie in Betrieb sind. In einem Beispiel kann die Hardware des Schaltkreises unveränderlich so ausgelegt sein, dass sie eine bestimmte Operation ausführt (z. B. fest verdrahtet). In einem Beispiel kann die Hardware des Schaltkreises variabel verbundene physische Komponenten beinhalten (z. B. Ausführungseinheiten, Transistoren, einfache Schaltungen usw.), die ein computerlesbares Medium beinhalten, das physisch modifiziert ist (z. B. magnetisch, elektrisch, bewegliche Platzierung von Teilchen mit invarianter Masse usw.), um Anweisungen für die spezifische Operation zu kodieren. Durch das Verbinden der physischen Komponenten werden die zugrunde liegenden elektrischen Eigenschaften einer Hardwarekomponente verändert, zum Beispiel von einem Isolator zu einem Leiter oder umgekehrt. Die Anweisungen ermöglichen es der beteiligten Hardware (z. B. den Ausführungseinheiten oder einem Lademechanismus), über die variablen Verbindungen Bestandteile des Schaltkreises in Hardware zu erzeugen, um Teile der spezifischen Aufgaben im Betrieb auszuführen. Dementsprechend ist das computerlesbare Medium kommunikativ mit den anderen Komponenten des Schaltkreises gekoppelt, wenn die Vorrichtung in Betrieb ist. In einem Beispiel kann jede der physischen Komponenten in mehr als einem Element von mehr als einem Schaltkreis verwendet werden. Zum Beispiel können im Betrieb Ausführungseinheiten in einer ersten Schaltung eines ersten Schaltkreises zu einem bestimmten Zeitpunkt verwendet und von einer zweiten Schaltung in der ersten Schaltung oder von einer dritten Schaltung in einer zweiten Schaltung zu einem anderen Zeitpunkt wiederverwendet werden.
  • Die Maschine (z. B. das Computersystem) 500 (z. B. der Host 105, die Speichervorrichtung 110 usw.) kann eine Verarbeitungsvorrichtung 502 (z. B. einen Hardware-Prozessor, eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU), einen Hardware-Prozessorkern oder eine beliebige Kombination davon, wie z. B. einen Speicher-Controller der Speichervorrichtung 110 usw.), einen Hauptspeicher 504 (z. B., Festwertspeicher (ROM), Flash-Speicher, dynamischer Direktzugriffsspeicher (DRAM) wie synchroner DRAM (SDRAM) oder Rambus-DRAM (RDRAM) usw.), einen statischen Speicher 506 (z. B. Flash-Speicher, statischer Direktzugriffsspeicher (SRAM) usw.) und ein Datenspeichersystem 518 einschließen, von denen einige oder alle über eine Zwischenverbindung (z. B. einen Bus) 530 miteinander kommunizieren können.
  • Die Verarbeitungsvorrichtung 502 kann eine oder mehrere Allzweckverarbeitungsvorrichtungen darstellen, wie etwa einen Mikroprozessor, eine Zentralverarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein Mikroprozessor für die Berechnung eines komplexen Anweisungssatzes (complex instruction set computing - CISC), ein Mikroprozessor für die Berechnung eines verringerten Anweisungssatzes (reduced instruction set computing - RISC), ein Mikroprozessor für sehr lange Anweisungswörter (very long instruction word - VLIW) oder ein Prozessor, der andere Anweisungssätze umsetzt, oder Prozessoren sein, die eine Kombination von Anweisungssätzen umsetzen. Die Verarbeitungsvorrichtung 502 kann außerdem eine oder mehrere Spezialverarbeitungsvorrichtungen sein, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein Prozessor für digitale Signale (digital signal processor - DSP), ein Netzwerkprozessor oder dergleichen. Die Verarbeitungsvorrichtung 502 kann dazu konfiguriert sein, Anweisungen 526 zum Durchführen der in dieser Schrift erörterten Operationen und Schritte auszuführen. Das Computersystem 500 kann ferner eine Netzwerkschnittstellenvorrichtung 508 beinhalten, um über ein Netzwerk 520 zu kommunizieren.
  • Das Datenspeichersystem 518 kann ein maschinenlesbares Speichermedium 524 (auch als ein computerlesbares Medium bekannt) beinhalten, auf dem ein oder mehrere Anweisungssätze 526 oder Software gespeichert sind, die eine oder mehrere der in dieser Schrift beschriebenen Vorgehensweisen oder Funktionen verkörpert. Die Anweisungen 526 können sich während ihrer Ausführung durch das Computersystem 500 außerdem vollständig oder mindestens teilweise in dem Hauptspeicher 504 oder in der Verarbeitungseinheit 502 befinden, wobei der Hauptspeicher 504 und die Verarbeitungseinheit 502 ebenfalls maschinenlesbare Medien bilden. Das maschinenlesbare Speichermedium 524, das Datenspeichersystem 518 oder der Hauptspeicher 504 können der Speichervorrichtung 110 aus 1 entsprechen.
  • In einer Implementierung umfassen die Anweisungen 526 Anweisungen zum Implementieren einer Funktionalität, die dem Bereitstellen effizienter Zufallsschreiboperationen entspricht, die oben mit Bezug auf 2, 3 und 4 erörtert wurden. Während das maschinenlesbare Speichermedium 524 in einer beispielhaften Implementierung als ein einzelnes Medium gezeigt ist, sollte der Begriff „maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien einschließt, die einen oder mehrere Anweisungssätze speichern. Der Begriff „maschinenlesbares Medium“ ist außerdem so zu verstehen, dass er ein beliebiges Medium beinhaltet, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern oder zu kodieren und welche die Maschine veranlassen, eine oder mehrere der Vorgehensweisen der vorliegenden Offenbarung durchzuführen. Der Begriff „maschinenlesbares Medium“ ist dementsprechend so zu verstehen, dass er, ohne darauf beschränkt zu sein, Festkörperspeicher und optische Medien und magnetische Medien beinhaltet. In einem Beispiel umfasst ein maschinenlesbares Massenmedium ein maschinenlesbares Medium mit einer Vielzahl an Partikeln, die eine unveränderliche (z. B. ruhende) Masse haben. Dementsprechend handelt es sich bei maschinenlesbaren Massenmedien nicht um transitorische Propagierungssignale. Spezifische Beispiele für maschinenlesbare Massenspeicher beinhalten: nichtflüchtige Speicher wie Halbleiterspeichervorrichtungen (z. B. elektrisch programmierbare Nur-Lese-Speicher (Electrically Programmable Read-Only Memory - EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory - EEPROM)) und Flash-Speicher-Vorrichtungen; Magnetplatten wie interne Festplatten und Wechselplatten; magneto-optische Platten sowie CD-ROM- und DVD-ROM-Platten.
  • Die Maschine 500 kann ferner eine Anzeigeeinheit, eine alphanumerische Eingabevorrichtung (z. B. eine Tastatur) und eine Benutzerschnittstellen(user interface - UI)-Navigationsvorrichtung (z. B. eine Maus) beinhalten. In einem Beispiel können die eine oder mehreren Anzeigeeinheiten, die Eingabevorrichtung und die UI-Navigationsvorrichtung ein Touchscreen-Display sein. Das Gerät kann eine Vorrichtung zur Signalerzeugung (z. B. einen Lautsprecher) oder einen oder mehrere Sensoren, wie z. B. einen GPS-Sensor (Global Positioning System), einen Kompass, einen Beschleunigungsmesser oder einen oder mehrere andere Sensoren einschließen. Die Maschine 500 kann einen Ausgangs-Controller einschließen, wie etwa eine serielle (z. B. Universal Serial Bus (USB), parallele oder andere verdrahtete oder drahtlose (z. B. Infrarot (IR), Nahfeldkommunikation (NFC) usw.) Verbindung, um ein oder mehrere Peripheriegeräte (z. B. einen Drucker, ein Kartenlesegerät usw.) zu kommunizieren oder zu steuern.
  • Die Anweisungen 526 (z. B. Software, Programme, ein Betriebssystem (OS) usw.) oder andere Daten, die auf der Datenspeichereinrichtung 518 gespeichert sind, können vom Hauptspeicher 504 zur Verwendung durch die Verarbeitungseinrichtung 502 abgerufen werden. Der Hauptspeicher 504 (z. B. DRAM) ist typischerweise schnell, aber flüchtig und somit ein anderer Speichertyp als die Datenspeichervorrichtung 518 (z. B. ein SSD), die für die langfristige Speicherung geeignet ist, einschließlich im „ausgeschalteten“ Zustand. Die Anweisungen 526 oder Daten, die von einem Benutzer oder der Maschine 500 verwendet werden, werden typischerweise in den Hauptspeicher 504 zur Verwendung durch die Verarbeitungsvorrichtung 502 geladen. Wenn der Hauptspeicher 504 gefüllt ist, kann virtueller Speicherplatz aus der Datenspeichervorrichtung 518 zugewiesen werden, um den Hauptspeicher 504 zu ergänzen; da die Datenspeichervorrichtung 518 jedoch typischerweise langsamer ist als der Hauptspeicher 504 und die Schreibgeschwindigkeiten typischerweise mindestens doppelt so langsam sind wie die Lesegeschwindigkeiten, kann die Verwendung von virtuellem Speicher die Benutzererfahrung aufgrund der Latenzzeit der Speichervorrichtung (im Gegensatz zum Hauptspeicher 504, z. B. DRAM) stark beeinträchtigen. Außerdem könnte die Verwendung der Datenspeichervorrichtung 518 als virtueller Speicher die Lebensdauer der Datenspeichervorrichtung 518 erheblich verkürzen.
  • Im Gegensatz zum virtuellen Speicher wird bei der Komprimierung des virtuellen Speichers (z. B. bei der Linux™-Kernel-Funktion „ZRAM“) ein Teil des Speichers als komprimierter Blockspeicher verwendet, um Seitenverwaltung auf die Datenspeichervorrichtung 518 zu vermeiden. Die Seitenverwaltung erfolgt in dem komprimierten Block, bis es notwendig ist, diese Daten auf die Datenspeichervorrichtung 518 zu schreiben. Die Komprimierung des virtuellen Hauptspeichers erhöht die nutzbare Größe des Speichers 504 und verringert gleichzeitig den Verschleiß der Datenspeichervorrichtung 518.
  • Speichervorrichtungen, die für mobile elektronische Vorrichtungen oder mobile Speicher optimiert sind, beinhalten traditionell MMC-Festkörperspeicher-Vorrichtungen (z. B. micro Secure Digital (microSD™)-Karten usw.). MMC-Vorrichtungen beinhalten eine Reihe von parallelen Schnittstellen (z. B. eine 8-Bit-Parallelschnittstelle) mit einem Host (z.B.einer Hostvorrichtung) und sind häufig herausnehmbare und von dem Host getrennte Komponenten. Im Gegensatz dazu sind eMMC™-Vorrichtungen auf einer Leiterplatte befestigt und werden als Bestandteil des Hosts betrachtet, wobei sie Lesegeschwindigkeiten erreichen, die mit seriellen ATA™ (Serial AT (Advanced Technology) Attachment oder SATA) basierten SSD-Vorrichtungen konkurrieren. Die Nachfrage nach der Leistung mobiler Vorrichtungen nimmt jedoch weiter zu, wie z. B. um virtuelle oder Augmented-Reality-Vorrichtungen in vollem Umfang zu ermöglichen, immer schnellere Netzwerke zu nutzen und dergleichen. Als Reaktion auf diese Nachfrage sind die Speichergeräte von parallelen zu seriellen Kommunikationsschnittstellen übergegangen. Universal Flash Storage (UFS)-Vorrichtungen, die Controller und Firmware beinhalten, kommunizieren mit einem Host über eine serielle Schnittstelle mit Niederspannungs-Differenzialsignalisierung (low-voltage differential signaling - LVDS) und dedizierten Lese-/Schreibpfaden, was zu höheren Lese/Schreibgeschwindigkeiten führt.
  • Die Anweisungen 524 können ferner über ein Netzwerk 520 unter Verwendung eines Übermittlungsmediums über die Netzwerkschnittstellenvorrichtung 508 kommuniziert oder empfangen werden, wobei jeder einer Anzahl von Übertragungsprotokollen (z. B. Frame Relay, Internetprotokoll (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP) usw.) verwendet wird. Beispielhafte Kommunikationsnetzwerke können ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), ein Paketdatennetzwerk (z. B. das Internet), Mobiltelefonnetzwerke (z. B. zellulare Netzwerke), Plain Old Telephone (POTS) Netzwerke und drahtlose Datennetzwerke (z. B. Institute of Electrical and Electronics Engineers (IEEE) 802.11-Normenfamilie, bekannt als Wi-Fi®, IEEE 802.16-Normenfamilie, bekannt als WiMax®), IEEE 802.15.4-Normenfamilie, Peer-to-Peer-Netzwerke (P2P) und andere beinhalten. In einem Beispiel kann die NetzwerkSchnittstellenvorrichtung 508 eine oder mehrere physische Buchsen (z. B. Ethernet-, Koaxial- oder Telefonbuchsen) oder eine oder mehrere Antennen beinhalten, um eine Verbindung mit dem Netzwerk 520 herzustellen. In einem Beispiel kann die NetzwerkSchnittstellenvorrichtung 508 eine Vielzahl Antennen beinhalten, um drahtlos zu kommunizieren, wobei mindestens eine der Techniken SIMO (Single-Input Multiple-Output), MIMO (Multiple-Input Multiple-Output) oder MISO (Multiple-Input Single-Output) verwendet wird. Der Begriff „Übermittlungsmedium“ betrachtet jegliche immaterielle Medien, die in der Lage sind, Anweisungen zur Ausführung durch die Maschine 500 zu speichern, zu kodieren oder zu transportieren, und beinhaltet digitale oder analoge Kommunikationssignale oder andere immaterielle Medien zur Erleichterung der Übermittlung einer solchen Software.
  • ZUSÄTZLICHE HINWEISE UND BEISPIELE
  • Beispiel 1 ist ein Speichersystem, umfassend: ein Speicherarray, das so konfiguriert ist, dass es indizierte Mapping-Informationen in mehreren Datensätzen speichert, die durch eine logische Blockadresse eines Hosts indiziert sind, wobei einzelne Datensätze der mehreren Datensätze so konfiguriert sind, dass sie eine physikalische Adresse des Speicherarrays enthalten; einen ersten Cachespeicher, der so konfiguriert ist, dass er einen ersten zusammenhängenden Teil der indizierten Mapping-Informationen speichert; und einen zweiten Cachespeicher, der so konfiguriert ist, dass er ein Vielfaches von Datensätzen nicht-indizierter Mapping-Informationen des Speicherarrays speichert, wobei einzelne Datensätze der mehreren Datensätze nicht-indizierter Mapping-Informationen so konfiguriert sind, dass sie eine Host-Adresse und eine entsprechende physikalische Adresse des Speicherarrays einschließen.
  • In Beispiel 2 schließt der Gegenstand von Beispiel 1 einen Controller ein, der so konfiguriert ist, dass er: eine Menge von Schreibdaten mit einem Schwellenwert vergleicht, wobei die Schreibdaten einer jeweiligen Schreibanforderung des Hosts zugeordnet sind; das Speichersystem in einem ersten Modus betreibt, um eine Schreiboperation durchzuführen, wenn die Menge der Schreibdaten einen Schwellenwert überschreitet; und das Speichersystem in einem zweiten Modus betreibt, um die Schreiboperation durchzuführen, wenn die Menge der Schreibdaten den Schwellenwert nicht überschreitet.
  • In Beispiel 3 schließt der Gegenstand von Beispiel 2 ein, wobei während des zweiten Modus der Controller konfiguriert ist, um: die Schreibdaten in das Speicherarray an einer ersten physikalischen Adresse zu schreiben; die erste physikalische Adresse in einem ersten Datensatz der nicht indizierten Abbildungsinformation des zweiten Cachespeichers zu speichern; und eine erste logische Blockadresse des Hosts in dem ersten Datensatz zu speichern, um einen ersten gültigen Datensatz bereitzustellen, wobei die erste logische Blockadresse von dem Host mit der jeweiligen Schreibanforderung empfangen wird.
  • In Beispiel 4 schließt der Gegenstand von Beispiel 3 ein, wobei während des zweiten Modus der Controller so konfiguriert ist, dass sie feststellt, ob der zweite Cachespeicher voll von gültigen Datensätzen ist; und dass sie den zweiten Cachespeicher von gültigen Datensätzen in Reaktion darauf leert, dass der Controller feststellt, dass der zweite Cachespeicher voll ist.
  • In Beispiel 5 schließt der Gegenstand von Beispiel 4 ein, wobei als Reaktion auf die Feststellung, dass der zweite Cachespeicher voll ist, der Controller konfiguriert ist, um: einen zweiten gültigen Datensatz des zweiten Cachespeichers abzurufen; und festzustellen, ob eine logische Blockadresse des zweiten gültigen Datensatzes mit einem Datensatz des ersten Cachespeichers verbunden ist.
  • In Beispiel 6 schließt der Gegenstand von Beispiel 5 ein, wobei, wenn die logische Blockadresse des zweiten gültigen Datensatzes mit dem Datensatz des ersten Cachespeichers assoziiert ist, der Controller konfiguriert ist, um: die physikalische Adresse des zweiten gültigen Datensatzes in dem Datensatz des ersten Cachespeichers zu speichern; und anzuzeigen, dass der zweite gültige Datensatz des zweiten Cachespeichers ein ungültiger Datensatz ist, um einen zweiten Datensatz bereitzustellen.
  • In Beispiel 7 schließt der Gegenstand der Beispiele 5-6 ein, wobei, wenn die logische Blockadresse des zweiten gültigen Datensatzes keinem Datensatz des ersten Cachespeichers zugeordnet ist, der Controller konfiguriert ist, um: den ersten zusammenhängenden Teil der indizierten Abbildungsinformationen des ersten Cachespeichers durch einen zweiten zusammenhängenden Teil der indizierten Abbildungsinformationen aus dem Speicherarray zu ersetzen, wobei der zweite zusammenhängende Teil der indizierten Abbildungsinformationen einen Datensatz einschließt, der der logischen Blockadresse des zweiten gültigen Datensatzes des zweiten Cachespeichers zugeordnet ist.
  • In Beispiel 8 schließt der Gegenstand der Beispiele 5-7 ein, dass der zweite gültige Datensatz des zweiten Cachesspeichers ein ältester gültiger Datensatz des zweiten Cachesspeichers ist.
  • In Beispiel 9 schließt der Gegenstand der Beispiele 2-8 ein, wobei während des ersten Modus der Controller konfiguriert ist, um: Schreiben der Schreibdaten in das Speicherarray an einer ersten physikalischen Adresse; Aktualisieren eines ersten Datensatzes des ersten zusammenhängenden Abschnitts der indizierten Mapping-Informationen des ersten Cachespeichers, wenn der erste Datensatz mit einer ersten logischen Blockadresse assoziiert ist, wobei die erste logische Blockadresse von dem Host mit der jeweiligen Schreibanforderung empfangen wird; und wenn der erste zusammenhängende Teil der indizierten Mapping-Informationen des ersten Cachespeichers keinen der ersten logischen Blockadresse zugeordneten Datensatz enthält, Ersetzen des ersten zusammenhängenden Teils der indizierten Mapping-Informationen des ersten Cachespeichers durch einen zweiten zusammenhängenden Teil der indizierten Mapping-Informationen aus dem Speicherarray, wobei der zweite zusammenhängende Teil der indizierten Mapping-Informationen einen der logischen Blockadresse der jeweiligen Schreibanforderung zugeordneten ersten Datensatz enthält; und Aktualisieren des ersten Datensatzes des zweiten zusammenhängenden Teils der indizierten Mapping-Informationen des ersten Cachespeichers mit der ersten physikalischen Adresse.
  • Beispiel 10 ist ein Verfahren, umfassend: Empfangen mehrerer Schreibanforderungen von einem Host an einer Speichervorrichtung, wobei die Schreibanforderungen eine entsprechende logische Blockadresse und Schreibdaten einschließen; Speichern der Schreibdaten über jeweilige Schreibanforderungen an einem Ort der Speichervorrichtung mit jeweiligen physikalischen Adressen; Betreiben der Speichervorrichtung in einem ersten Modus, wenn eine Menge von Schreibdaten, die einer ersten Schreibanforderung zugeordnet sind, über einem Schwellenwert liegt; Betreiben der Speichervorrichtung in einem zweiten Modus, wenn eine Menge von Schreibdaten, die einer zweiten Schreibanforderung zugeordnet sind, unter dem Schwellenwert liegt; und Vergleichen der Schreibdatenmenge mit dem Schwellenwert.
  • In Beispiel 11 schließt der Gegenstand von Beispiel 10 ein, Auffüllen eines ersten Cachespeicher mit einem ersten zusammenhängenden Teil indizierter Mapping-Informationen, die von einer Mapping-Tabelle indizierter Mapping-Informationen empfangen werden, die in der Speichervorrichtung gespeichert sind, wobei die Mapping-Tabelle Datensätze physischer Adressen der Speichervorrichtung einschließt, die durch eine aus einer Vielzahl logischer Blockadressen des Hosts indiziert sind.
  • In Beispiel 12 schließt der Gegenstand von Beispiel 11 ein, wobei das Betreiben der Speichervorrichtung in einem zweiten Modus das Speichern der jeweiligen logischen Blockadresse und der jeweiligen physikalischen Adresse in einem ersten Datensatz einer Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen eines zweiten Cachespeichers einschließt, um einen ersten gültigen Datensatz der Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen des zweiten Cachespeichers bereitzustellen.
  • In Beispiel 13 schließt der Gegenstand von Beispiel 12 ein, wobei das Betreiben der Speichervorrichtung in einem zweiten Modus das Bestimmen einschließt, wann die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  • In Beispiel 14 schließt der Gegenstand von Beispiel 13 ein, Spülen der Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers von gültigen Datensätzen, als Reaktion auf die Feststellung, dass die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  • In Beispiel 15 schließt der Gegenstand der Beispiele 13-14 ein, wobei Spülen der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers das wiederholte Abrufen und Verarbeiten eines zweiten gültigen Datensatzes aus der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers einschließt, bis keine gültigen Datensätze in der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers verbleiben.
  • In Beispiel 16 schließt der Gegenstand von Beispiel 15 ein, wobei die Verarbeitung des zweiten gültigen Datensatzes einschließt: Bestimmen, ob eine logische Adresse des zweiten gültigen Datensatzes einer logischen Adresse des ersten zusammenhängenden Teils entspricht.
  • Beispiel 17 ist ein maschinenlesbares Medium, das, wenn es von einer Maschine ausgeführt wird, die Maschine veranlasst, Operationen auszuführen, die Folgendes umfassen: Empfangen einer Schreibanforderung an einer Flash-Speichervorrichtung von einem Host, wobei die Schreibanforderung eine erste logische Blockadresse und Schreibdaten einschließt; Speichern der Schreibdaten an einer Stelle der Flash-Speichervorrichtung mit einer ersten physikalischen Adresse; Betreiben der Flash-Speichervorrichtung in einem ersten Modus, wenn eine mit der Schreibanforderung verbundene Schreibdatenmenge über einem Schwellenwert liegt; Betreiben der Flash-Speichervorrichtung in einem zweiten Modus, wenn eine Schreibdatenmenge unter dem Schwellenwert liegt; und Vergleichen der Schreibdatenmenge mit dem Schwellenwert.
  • In Beispiel 18 schließt der Gegenstand von Beispiel 17 ein, wobei die Operationen einschließen, Auffüllen eines ersten Cachespeicher mit einem ersten zusammenhängenden Teil indizierter Mapping-Informationen, die von einer Mapping-Tabelle indizierter Mapping-Informationen empfangen werden, die in der Speichervorrichtung gespeichert sind, wobei die Mapping-Tabelle Datensätze physischer Adressen der Speichervorrichtung einschließt, die durch eine aus einer Vielzahl logischer Blockadressen des Hosts indiziert sind.
  • In Beispiel 19 schließt der Gegenstand von Beispiel 18 ein, wobei das Betreiben der Flash-Speichervorrichtung in einem zweiten Modus das Speichern der ersten logischen Blockadresse und der ersten physikalischen Adresse in einem ersten Datensatz einer Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen eines zweiten Cachespeichers einschließt, um einen ersten gültigen Datensatz der Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen des zweiten Cachespeichers bereitzustellen.
  • In Beispiel 20 schließt der Gegenstand von Beispiel 19 ein, wobei das Betreiben der Flash-Speichervorrichtung in einem zweiten Modus das Bestimmen einschließt, wann die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  • In Beispiel 21 schließt der Gegenstand von Beispiel 20 ein, wobei die Operationen einschließen, Spülen der Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers von gültigen Datensätzen, als Reaktion auf die Feststellung, dass die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  • In Beispiel 22 schließt der Gegenstand des Beispiels 21 ein, wobei das Spülen der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers das wiederholte Abrufen und Verarbeiten eines zweiten gültigen Datensatzes aus der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers einschließt, bis keine gültigen Datensätze in der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers verbleiben.
  • In Beispiel 23 schließt der Gegenstand von Beispiel 22 ein, wobei die Verarbeitung des zweiten gültigen Datensatzes einschließt: Bestimmen, ob eine logische Adresse des zweiten gültigen Datensatzes einer logischen Adresse des ersten zusammenhängenden Teils entspricht.
  • Die obige detaillierte Beschreibung beinhaltet Verweise auf die beigefügten Zeichnungen, die einen Teil der detaillierten Beschreibung bilden. Die Zeichnungen veranschaulichen bestimmte Ausführungsformen, in denen die Erfindung angewendet werden kann. Diese Ausführungsformen werden hierin auch als „Beispiele“ bezeichnet. Solche Beispiele könnten zusätzliche Elemente zu den gezeigten oder beschriebenen beinhalten. Die Erfinder halten jedoch auch Beispiele für denkbar, in denen nur die gezeigten oder beschriebenen Elemente vorgesehen sind. Darüber hinaus ziehen die Erfinder auch Beispiele in Betracht, bei denen eine beliebige Kombination oder Permutation der gezeigten oder beschriebenen Elemente (oder eines oder mehrerer Aspekte davon) verwendet wird, entweder in Bezug auf ein bestimmtes Beispiel (oder einen oder mehrere Aspekte davon) oder in Bezug auf andere hierin gezeigte oder beschriebene Beispiele (oder einen oder mehrere Aspekte davon).
  • In diesem Dokument werden die Begriffe „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen oder mehr als einen einzuschließen, unabhängig von anderen Instanzen oder Verwendungen von „mindestens einem“ oder „einem oder mehreren“.
  • In diesem Dokument wird der Begriff „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ beinhalten kann, sofern nicht anders angegeben. In den beigefügten Ansprüchen werden die Ausdrücke „beinhaltend“ und „in welchen“ als einfache Entsprechungen der jeweiligen Begriffe „umfassend“ und „wobei“ verwendet. Auch in den folgenden Ansprüchen sind die Begriffe „einschließlich“ und „umfassend“ offen. Ein System, eine Vorrichtung, ein Gegenstand oder ein Prozess, das Elemente beinhaltet, die zusätzlich zu den nach einem solchen Begriff in einem Anspruch aufgeführten Elementen enthalten sind, fällt dennoch in den Geltungsbereich des Anspruchs. Darüber hinaus werden in den folgenden Ansprüchen die Begriffe „erster“, „zweiter“ und „dritter“ etc. lediglich als Bezeichnungen verwendet und sollen keine numerischen Anforderungen an ihre Gegenstände stellen.
  • In verschiedenen Beispielen könnten die hierin beschriebenen Komponenten, Controller, Prozessoren, Einheiten, Engines oder Tabellen unter anderem einen physischen Schaltkreis oder eine auf einer physischen Vorrichtung gespeicherte Firmware beinhalten. Wie hierin verwendet, bedeutet „Prozessor“ jede Art von Rechenschaltung, wie z. B., aber nicht beschränkt auf einen Mikroprozessor, einen Mikrocontroller, einen Grafikprozessor, einen digitalen Signalprozessor (digital signal processor - DSP) oder jede andere Art von Prozessor oder Verarbeitungsschaltung, einschließlich einer Gruppe von Prozessoren oder Multi-Core-Vorrichtungen.
  • Das Betreiben einer Speicherzelle, wie es hierin verwendet wird, beinhaltet das Lesen, Beschreiben oder Löschen der Speicherzelle. DieOperation, eine Speicherzelle in einen bestimmten Zustand zu versetzen, wird hierin als „Programmierung“ bezeichnet und könnte sowohl das Schreiben in die Speicherzelle als auch das Löschen aus der Speicherzelle beinhalten (z. B. kann die Speicherzelle in einen gelöschten Zustand programmiert werden).
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung ist ein Speichercontroller (z. B. ein Prozessor, Controller, Firmware usw.), der sich innerhalb oder außerhalb einer Speichervorrichtung befindet, in der Lage, eine Menge von Verschleißzyklen oder einen Verschleißzustand (z. B. Aufzeichnen von Verschleißzyklen, Zählen von Operationen der Speichervorrichtung, wenn sie auftreten, Verfolgen der von ihr ausgelösten Operationen der Speichervorrichtung, Auswerten der einem Verschleißzustand entsprechenden Merkmale der Speichervorrichtung, usw.) zu bestimmen (z. B. auszuwählen, einzustellen, anzupassen, zu berechnen, zu ändern, zu löschen, zu kommunizieren, anzupassen, abzuleiten, zu definieren, zu nutzen, zu modifizieren, anzuwenden usw.)
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung kann eine Speicherzugriffsvorrichtung dazu konfiguriert sein, der Speichervorrichtung bei jeder Speicheroperation Verschleißzyklusinformationen zu liefern. Der Schaltkreis der Speichervorrichtung (z. B. die Steuerlogik) kann so programmiert sein, dass er die Leistungsänderungen der Speichervorrichtung entsprechend der Verschleißzyklusinformation kompensiert. Die Speichervorrichtung kann die Informationen über den Verschleißzyklus empfangen und einen oder mehrere Betriebsparameter (z. B. einen Wert, eine Charakteristik) in Abhängigkeit von den Informationen über den Verschleißzyklus bestimmen.
  • Die hierin beschriebenen Verfahrensbeispiele können zumindest teilweise maschinen-, vorrichtungs- oder computerimplementiert sein. Einige Beispiele können ein computerlesbares Medium, ein vorrichtungslesbares Medium oder ein maschinenlesbares Medium beinhalten, das mit Anweisungen kodiert ist, die betreibbar sind, um eine elektronische Vorrichtung so zu konfigurieren, dass sie Verfahren ausführt, wie sie in den obigen Beispielen beschrieben sind. Eine Implementierung solcher Verfahren kann einen Code beinhalten, wie z. B. Mikrocode, Assemblersprachcode, übergeordneten Sprachcode oder dergleichen. Ein solcher Code kann computerlesbare Anweisungen zum Ausführen verschiedener Verfahren beinhalten. Der Code kann Teile von Computerprogrammprodukten bilden. Ferner kann der Code auf einem oder mehreren flüchtigen oder nichtflüchtigen materiellen, computerlesbaren Medien gespeichert werden, beispielsweise während der Ausführung oder zu anderen Zeiten. Beispiele für diese greifbaren computerlesbaren Medien können Festplatten, austauschbare Magnetplatten, austauschbare optische Platten (z. B. Compact Discs und digitale Videodisks), Magnetkassetten, Speicherkarten oder -sticks, RAMs (Random Access Memories), ROMs (Read Only Memories), Solid-State-Laufwerke (SSDs), Universelle Flash-Speicher (UFS)-Vorrichtung, eingebettete MMC (eMMC)-Vorrichtung und dergleichen beinhalten, sind aber nicht darauf beschränkt.
  • Die obige Beschreibung soll nur veranschaulichen und ist nicht einschränkend. Zum Beispiel können die oben beschriebenen Beispiele (oder ein oder mehrere Aspekte davon) in Kombination miteinander verwendet werden. Andere Ausführungsformen können verwendet werden, wie z. B. von einem Fachmann, der die obige Beschreibung gelesen hat. Sie wird unter der Voraussetzung eingereicht, dass sie nicht zum Auslegen oder Einschränken des Umfangs oder der Bedeutung der Ansprüche verwendet wird. Zudem können in der obigen detaillierten Beschreibung verschiedene Merkmale zur Straffung der Offenbarung zusammengefasst werden. Dies sollte nicht als beabsichtigt interpretiert werden, dass ein nicht beanspruchtes offenbartes Merkmal für jeden der Ansprüche wesentlich ist. Vielmehr liegt der erfinderische Gegenstand, wie die nachfolgenden Ansprüche zeigen, in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Somit werden die folgenden Ansprüche hiermit in die detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als separate Ausführungsform steht, und es wird in Betracht gezogen, dass solche Ausführungsformen in verschiedenen Kombinationen oder Permutationen miteinander kombiniert werden können. Der Umfang der Erfindung sollte unter Bezugnahme auf die beigefügten Ansprüche bestimmt werden, zusammen mit dem vollen Umfang der Äquivalente, zu denen solche Ansprüche berechtigt sind.

Claims (23)

  1. Speichersystem, umfassend: ein Speicherarray, das dazu konfiguriert ist, indizierte Mapping-Informationen in mehreren Datensätzen zu speichern, die durch eine logische Blockadresse eines Hosts indiziert sind, wobei einzelne Datensätze der mehreren Datensätze so konfiguriert sind, dass sie eine physikalische Adresse des Speicherarrays halten; einen ersten Cachespeicher, der dazu konfiguriert ist, einen ersten zusammenhängenden Teil der indizierten Mapping-Informationen zu speichern; und einen zweiten Cachespeicher, der so konfiguriert ist, dass er ein Vielfaches von Datensätzen nicht-indizierter Mapping-Informationen des Speicherarrays speichert, wobei einzelne Datensätze der mehreren Datensätze nicht-indizierter Mapping-Informationen so konfiguriert sind, dass sie eine Host-Adresse und eine entsprechende physikalische Adresse des Speicherarrays einschließen.
  2. Speichersystem nach Anspruch 1, das einen Controller einschließt, der konfiguriert ist zum: Vergleichen einer Menge von Schreibdaten mit einem Schwellenwert, wobei die Schreibdaten einer jeweiligen Schreibanforderung des Hosts zugeordnet sind; Betreiben des Speichersystems in einem ersten Modus, um eine Schreiboperation durchzuführen, wenn die Menge der Schreibdaten einen Schwellenwert überschreitet; und Betreiben des Speichersystems in einem zweiten Modus, um die Schreiboperation durchzuführen, wenn die Menge der Schreibdaten den Schwellenwert nicht überschreitet.
  3. Speichersystem nach Anspruch 2, wobei während des zweiten Modus der Controller konfiguriert ist zum: Schreiben der Schreibdaten in das Speicherarray an einer ersten physikalischen Adresse; Speichern der ersten physikalischen Adresse in einem ersten Datensatz der nicht indizierten Abbildungsinformationen des zweiten Cachespeichers; und Speichern einer ersten logischen Blockadresse des Hosts im ersten Datensatz, um einen ersten gültigen Datensatz bereitzustellen, wobei die erste logische Blockadresse vom Host mit der jeweiligen Schreibanforderung empfangen wird.
  4. Speichersystem nach Anspruch 3, wobei der Controller während des zweiten Modus so konfiguriert ist, dass er bestimmt, ob der zweite Cachespeicher mit gültigen Datensätzen gefüllt ist; und zum Leeren des zweiten Cachespeichers von gültigen Datensätzen als Reaktion darauf, dass der Controller feststellt, dass der zweite Cachespeicher gefüllt ist.
  5. Speichersystem nach Anspruch 4, wobei als Reaktion auf das Bestimmen, dass der zweite Cachespeicher gefüllt ist, der Controller konfiguriert ist zum: Abrufen eines zweiten gültigen Datensatzes des zweiten Cachespeichers; und Bestimmen, ob eine logische Blockadresse des zweiten gültigen Datensatzes einem Datensatz des ersten Cachespeichers zugeordnet ist.
  6. Speichersystem nach Anspruch 5, wobei, wenn die logische Blockadresse des zweiten gültigen Datensatzes mit dem Datensatz des ersten Cachespeichers verknüpft ist, der Controller konfiguriert ist zum: Speichern der physikalischen Adresse des zweiten gültigen Datensatzes im Datensatz des ersten Cachespeichers; und Angeben, dass der zweite gültige Datensatz des zweiten Cachespeichers ein ungültiger Datensatz ist, um einen zweiten Datensatz bereitzustellen.
  7. Speichersystem nach Anspruch 5, wobei, wenn die logische Blockadresse des zweiten gültigen Datensatzes keinem Datensatz des ersten Cachespeichers zugeordnet ist, der Controller konfiguriert ist zum: Ersetzen des ersten zusammenhängenden Teils der indizierten Mapping-Informationen des ersten Cachespeichers durch einen zweiten zusammenhängenden Teil der indizierten Mapping-Informationen aus dem Speicherarray, wobei der zweite zusammenhängende Teil der indizierten Mapping-Informationen einen Datensatz einschließt, der mit der logischen Blockadresse des zweiten gültigen Datensatzes des zweiten Cachespeichers verbunden ist.
  8. Speichersystem nach Anspruch 5, wobei der zweite gültige Datensatz des zweiten Cachespeichers ein ältester gültiger Datensatz des zweiten Cachespeichers ist.
  9. Speichersystem nach Anspruch 2, wobei während des ersten Modus der Controller konfiguriert ist zum: Schreiben der Schreibdaten in das Speicherarray an einer ersten physikalischen Adresse; Aktualisieren eines ersten Datensatzes des ersten zusammenhängenden Abschnitts der indizierten Mapping-Informationen des ersten Cachespeichers, wenn der erste Datensatz einer ersten logischen Blockadresse zugeordnet ist, wobei die erste logische Blockadresse von dem Host mit der jeweiligen Schreibanforderung empfangen wird; und wenn der erste zusammenhängende Abschnitt der indizierten Mapping-Informationen des ersten Cachespeichers keinen Datensatz enthält, der der ersten logischen Blockadresse zugeordnet ist, Ersetzen des ersten zusammenhängenden Teils der indizierten Mapping-Informationen des ersten Cachespeichers durch einen zweiten zusammenhängenden Teil der indizierten Mapping-Informationen aus dem Speicherarray, wobei der zweite zusammenhängende Teil der indizierten Mapping-Informationen einen ersten Datensatz einschließt, der der logischen Blockadresse der jeweiligen Schreibanfrage zugeordnet ist; und Aktualisieren des ersten Datensatzes des zweiten zusammenhängenden Teils der indizierten Mapping-Informationen des ersten Cachespeichers mit der ersten physikalischen Adresse.
  10. Verfahren, Folgendes umfassend: Empfangen mehrerer Schreibanforderungen von einem Host an einer Speichervorrichtung, wobei die Schreibanforderungen eine entsprechende logische Blockadresse und Schreibdaten einschließen; Speichern der Schreibdaten über jeweilige Schreibanforderungen an einem Ort der Speichervorrichtung mit jeweiligen physikalischen Adressen; Betreiben der Speichervorrichtung in einem ersten Modus, wenn eine Menge von Schreibdaten, die einer ersten Schreibanforderung zugeordnet sind, über einem Schwellenwert liegt; Betreiben der Speichervorrichtung in einem zweiten Modus, wenn eine Menge von Schreibdaten, die einer zweiten Schreibanforderung zugeordnet sind, unter dem Schwellenwert liegt; und Vergleichen der Menge an Schreibdaten mit dem Schwellenwert.
  11. Verfahren nach Anspruch 10 einschließend Auffüllen eines ersten Cachespeichers mit einem ersten zusammenhängenden Teil indizierter Mapping-Informationen, die von einer Mapping-Tabelle indizierter Mapping-Informationen empfangen werden, die in der Speichervorrichtung gespeichert sind, wobei die Mapping-Tabelle Datensätze physischer Adressen der Speichervorrichtung einschließt, die durch eine aus einer Vielzahl logischer Blockadressen des Hosts indiziert sind.
  12. Verfahren nach Anspruch 11, wobei das Betreiben der Speichervorrichtung in einem zweiten Modus das Speichern der jeweiligen logischen Blockadresse und der jeweiligen physikalischen Adresse in einem ersten Datensatz einer Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen eines zweiten Cachespeichers einschließt, um einen ersten gültigen Datensatz der Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen des zweiten Cachespeichers bereitzustellen.
  13. Verfahren nach Anspruch 12 ein, wobei das Betreiben der Speichervorrichtung in einem zweiten Modus das Bestimmen einschließt, wann die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  14. Verfahren nach Anspruch 13, einschließend Spülen der Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers von gültigen Datensätzen, als Reaktion auf das Bestimmen, dass die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  15. Verfahren nach Anspruch 13, wobei Spülen der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers das wiederholte Abrufen und Verarbeiten eines zweiten gültigen Datensatzes aus der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers einschließt, bis keine gültigen Datensätze in der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers verbleiben.
  16. Verfahren nach Anspruch 15, wobei das Verarbeiten des zweiten gültigen Datensatzes einschließt: Bestimmen, ob eine logische Adresse des zweiten gültigen Datensatzes einer logischen Adresse des ersten zusammenhängenden Abschnitts entspricht.
  17. Ein maschinenlesbares Medium, das, wenn es von einer Maschine ausgeführt wird, bewirkt, dass die Maschine Operationen durchführt, die Folgendes umfassen: Empfangen einer Schreibanforderung an einer Flash-Speichervorrichtung von einem Host, wobei die Schreibanforderung eine erste logische Blockadresse und Schreibdaten einschließt; Speichern der Schreibdaten an einer Stelle der Flash-Speichervorrichtung mit einer ersten physikalischen Adresse; Betreiben der Flash-Speichervorrichtung in einem ersten Modus, wenn eine Menge von Schreibdaten, die der Schreibanforderung zugeordnet sind, über einem Schwellenwert liegt; Betreiben der Flash-Speichervorrichtung in einem zweiten Modus, wenn eine Menge von Schreibdaten unter dem Schwellenwert liegt; und Vergleichen der Menge an Schreibdaten mit dem Schwellenwert.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei die Operationen Auffüllen eines ersten Cachespeicher mit einem ersten zusammenhängenden Teil indizierter Mapping-Informationen einschließen, die von einer Mapping-Tabelle indizierter Mapping-Informationen empfangen werden, die in der Speichervorrichtung gespeichert sind, wobei die Mapping-Tabelle Datensätze physischer Adressen der Speichervorrichtung einschließt, die durch eine aus einer Vielzahl logischer Blockadressen des Hosts indiziert sind.
  19. Maschinenlesbares Medium nach Anspruch 18, wobei das Betreiben der Flash-Speichervorrichtung in einem zweiten Modus das Speichern der ersten logischen Blockadresse und der ersten physikalischen Adresse in einem ersten Datensatz einer Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen eines zweiten Cachespeichers einschließt, um einen ersten gültigen Datensatz der Vielzahl von Datensätzen von nicht indizierten Mapping-Informationen des zweiten Cachespeichers bereitzustellen.
  20. Maschinenlesbares Medium nach Anspruch 19, wobei das Betreiben der Flash-Speichervorrichtung in einem zweiten Modus das Bestimmen einschließt, wann die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  21. Maschinenlesbares Medium nach Anspruch 20, wobei die Operationen Spülen der Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers von gültigen Datensätzen einschließen, als Reaktion auf die Feststellung, dass die Vielzahl von Datensätzen der nicht indizierten Mapping-Informationen des zweiten Cachespeichers voll von gültigen Datensätzen sind.
  22. Maschinenlesbares Medium nach Anspruch 21, wobei das Spülen der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers das wiederholte Abrufen und Verarbeiten eines zweiten gültigen Datensatzes aus der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers einschließt, bis keine gültigen Datensätze in der Vielzahl von Datensätzen mit nicht indizierten Mapping-Informationen des zweiten Cachespeichers verbleiben.
  23. Maschinenlesbares Medium nach Anspruch 22, wobei das Verarbeiten des zweiten gültigen Datensatzes einschließt: Bestimmen, ob eine logische Adresse des zweiten gültigen Datensatzes einer logischen Adresse des ersten zusammenhängenden Teils entspricht.
DE112020004591.9T 2019-09-27 2020-09-24 L2P-Übersetzungstechniken in begrenzten RAM-Systemen Pending DE112020004591T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/586,519 2019-09-27
US16/586,519 US11487653B2 (en) 2019-09-27 2019-09-27 L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches
PCT/US2020/052480 WO2021061973A1 (en) 2019-09-27 2020-09-24 Logical-to-physical translation techniques in limited ram systems

Publications (1)

Publication Number Publication Date
DE112020004591T5 true DE112020004591T5 (de) 2022-06-09

Family

ID=72896068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004591.9T Pending DE112020004591T5 (de) 2019-09-27 2020-09-24 L2P-Übersetzungstechniken in begrenzten RAM-Systemen

Country Status (4)

Country Link
US (2) US11487653B2 (de)
CN (1) CN114761931A (de)
DE (1) DE112020004591T5 (de)
WO (1) WO2021061973A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3072476A1 (fr) * 2017-10-13 2019-04-19 Proton World International N.V. Unite logique de memoire pour memoire flash
US11487653B2 (en) 2019-09-27 2022-11-01 Micron Technology, Inc. L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches
US11169744B2 (en) * 2020-03-31 2021-11-09 Western Digital Technologies, Inc. Boosting reads of chunks of data
KR20220006913A (ko) * 2020-07-09 2022-01-18 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
KR20240009065A (ko) * 2022-07-13 2024-01-22 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11995349B2 (en) * 2022-10-04 2024-05-28 Silicon Motion, Inc. Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding
US11994985B2 (en) * 2022-10-04 2024-05-28 Silicon Motion, Inc. Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding
CN117012267B (zh) * 2023-06-30 2024-03-19 珠海妙存科技有限公司 对ufs所写入数据的验证方法、控制器及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493660A (en) 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
KR101226600B1 (ko) 2011-03-09 2013-01-28 주식회사 이에프텍 메모리 시스템 및 그의 메모리 맵핑 방법
US20140304453A1 (en) * 2013-04-08 2014-10-09 The Hong Kong Polytechnic University Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
KR102447471B1 (ko) 2015-06-24 2022-09-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
US10565123B2 (en) * 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
KR20190087217A (ko) 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20200004119A (ko) * 2018-07-03 2020-01-13 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US11487653B2 (en) 2019-09-27 2022-11-01 Micron Technology, Inc. L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches

Also Published As

Publication number Publication date
US20230031365A1 (en) 2023-02-02
US20210096984A1 (en) 2021-04-01
US11487653B2 (en) 2022-11-01
WO2021061973A1 (en) 2021-04-01
US11899574B2 (en) 2024-02-13
CN114761931A (zh) 2022-07-15

Similar Documents

Publication Publication Date Title
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE102017113439A1 (de) Abbildungstabellen für Speichervorrichtungen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
CN112445716B (zh) Nand存储的重映射技术
US11809311B2 (en) Host-based flash memory maintenance techniques
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
CN112445718B (zh) 大文件完整性技术
US11989557B2 (en) Large data read techniques
CN111352864B (zh) 快闪存储器持久性高速缓存技术
CN112673357B (zh) 主机驻留式转换层有效性检查
DE112019007666T5 (de) Schreibpuffersteuerung in einem verwalteten Speichersystem
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE112017004916T5 (de) Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse
DE102020115970B3 (de) Befehlsoptimierung durch intelligente schwellwertdetektion
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen
DE112021000474T5 (de) Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache
DE102019133027A1 (de) Datenspeichersysteme und -verfahren für selbstadaptive chipfreigabeeinrichtungszeit

Legal Events

Date Code Title Description
R012 Request for examination validly filed