DE102022101607A1 - Verwaltung der hostspeicherpufferzuweisung - Google Patents

Verwaltung der hostspeicherpufferzuweisung Download PDF

Info

Publication number
DE102022101607A1
DE102022101607A1 DE102022101607.2A DE102022101607A DE102022101607A1 DE 102022101607 A1 DE102022101607 A1 DE 102022101607A1 DE 102022101607 A DE102022101607 A DE 102022101607A DE 102022101607 A1 DE102022101607 A1 DE 102022101607A1
Authority
DE
Germany
Prior art keywords
memory
controller
storage device
host
allocation
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
DE102022101607.2A
Other languages
English (en)
Inventor
Sridhar Prudvi Raj Gunda
Santhosh Kumar Siripragada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102022101607A1 publication Critical patent/DE102022101607A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

Gesichtspunkte einer Speicherungsvorrichtung einschließlich eines Speichers und einer Steuerung werden bereitgestellt. Der Speicher schließt einen flüchtigen Speicher ein. Die Steuerung kann bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung. Die Steuerung kann auch eine Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher berechnen. Die Steuerung kann auch eine oder mehrere Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs durchführen. Somit kann die Steuerung eine intelligente Handhabung der Hostspeicherpufferzuweisung bereitstellen, wodurch die Leseleistung der Speicherungsvorrichtung verbessert wird.

Description

  • HINTERGRUND
  • Gebiet
  • Diese Offenbarung bezieht sich im Allgemeinen auf elektronische Vorrichtungen und insbesondere auf Speicherungsvorrichtungen.
  • Einleitung
  • Speicherungsvorrichtungen ermöglichen es Benutzern, Daten zu speichern und abzurufen. Beispiele von Speicherungsvorrichtungen schließen Vorrichtungen für nicht-flüchtigen Speicher ein. Ein nicht-flüchtiger Speicher behält Daten im Allgemeinen nach einem Leistungszyklus bei. Ein Beispiel eines nicht-flüchtigen Speichers ist ein Flash-Speicher, der (eine) Anordnung(en) von NAND-Zellen auf einem oder mehreren Chips einschließen kann. Flash-Speicher kann in Festkörpervorrichtungen (SSDs), Secure Digital-Karten (SD-Karten) und dergleichen zu finden sein. In der Regel weist ein nicht-flüchtiges Speichersystem eine Speichersteuerung auf, die den Zugriff eines Hostsystems auf den nicht-flüchtigen Speicher in dem Speichersystem steuert. Das Hostsystem kann ein Computersystem, ein Mobiltelefon, ein Server usw. sein. Das nicht-flüchtige Speichersystem und das Hostsystem können Daten beispielsweise über einen PCIe-Bus (Peripheral Component Interconnect Express) austauschen. NVMe (Nonvolatile Memory Express) ist eine logische Geräteschnittstellenspezifikation zum Zugreifen auf einen nicht-flüchtigen Speicher, der über einen PCIe-Bus angeschlossen ist. NVMe nutzt die Vorteile der Parallelität von Halbleiterspeichern wie z. B. SSDs, ist aber nicht darauf beschränkt.
  • Die Speichersteuerung kann in der Regel eine gewisse Menge an flüchtigem Speicher aufweisen, den sie für eine Vielzahl von Aufgaben verwenden kann. Zum Beispiel kann der flüchtige Speicher verwendet werden, um einen Abschnitt einer Verwaltungstabelle zwischenzuspeichern, die verwendet wird, um zwischen von dem Hostsystem verwendeten logischen Adressen und physischen Adressen in dem nicht-flüchtigen Speicher zu übersetzen. Es ist zu beachten, dass eine vollständige Version der Verwaltungstabelle in dem nicht-flüchtigen Speicher gespeichert sein kann. Ein Vorteil des Zwischenspeicherns der Verwaltungstabelle besteht darin, dass das Speichersystem beim Empfangen einer Lese- oder Schreibanforderung anhand einer viel schnelleren Suche in dem flüchtigen Speicher der Speichersteuerung bestimmen kann, auf welchen Speicherplatz zugegriffen werden muss. Für eine schnelle und konsistente Leistung kann die Organisation der Verwaltungstabelle gewählt werden, um den Rechenaufwand und die Anzahl der erforderlichen Abfragen des flüchtigen Speichers zu minimieren, was jedoch mit einem höheren Bedarf an flüchtigem Speicher einhergeht. Die Speichersteuerung kann den flüchtigen Speicher für andere Zwecke verwenden.
  • Als SSDs zum ersten Mal eingeführt wurden, wurde der dynamische Direktzugriffsspeicher (DRAM) routinemäßig als Cache für SSDs und zur Verbesserung der Laufwerksleistung eingeschlossen. Der DRAM diente als Cache für das Schreiben von Daten auf die SSD und für das Speichern der Abbildungstabellen, die den Speicherort der Daten auf der SSD aufzeichnen, um den Zugriff auf die Daten zu ermöglichen. Seit Jahren wurde es zum Standard, die Möglichkeiten immer weiter auszureizen und eine bessere Leistung von SSDs unter Verwendung von DRAM zu erzielen. Es gab jedoch erhebliche Verbesserungen bei der SSD-Schnittstelle, der NAND-Technologie, den SSD-Steuerungen und der Firmware.
  • In Verbindung mit dem Wunsch, sowohl Leistung als auch Kapazität kosteneffizient zu steigern, kann ein Hostsystem einen Teil seines Hostspeichers für die Verwendung durch die Speichersteuerung zur Verfügung stellen. Beispielsweise ermöglichen einige Versionen des NVMe-Protokolls eine Hostspeicherpuffer-Merkmal (HMB-Merkmal), bei der ein Teil des Hostspeichers für die Verwendung durch die Speichersteuerung zugewiesen wird. Diese Option kann Kosten sparen, da die Speichersteuerung weniger flüchtigen Speicher aufweisen kann. Der HMB, der durch die NVMe 1.2-Spezifikationen ermöglicht wurde, erlaubt SSDs, einen Teil des an den Host oder die Zentraleinheit (CPU) angeschlossenen DRAM über die PCIe-Verbindung zu nutzen, anstatt DRAM zum Unterstützen eines SSD zu benötigen. Die größte Nutzung von Host-DRAM ist die Zwischenspeicherung von Abbildungsinformationen, die oft nur einige Dutzend Megabyte (MB) Puffergröße erfordert.
  • KURZDARSTELLUNG
  • Ein Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher schließt einen flüchtigen Speicher ein. Die Steuerung ist eingerichtet, um zu bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung. Die Steuerung ist auch eingerichtet, um eine Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher zu berechnen. Die Steuerung ist auch eingerichtet, um eine oder mehrere Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs durchzuführen.
  • Ein weiterer Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher schließt einen flüchtigen Speicher ein. Die Steuerung ist eingerichtet, um zu bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung. Die Steuerung ist auch eingerichtet, um eine Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher zu berechnen. Die Steuerung ist auch eingerichtet, um eine oder mehrere Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs durchzuführen. Die Steuerung ist auch eingerichtet, um die Hostspeicherzuweisung an die Hostvorrichtung zurückzugeben.
  • Ein weiterer Gesichtspunkt einer Speicherungsvorrichtung wird hierin offenbart. Die Speicherungsvorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher schließt einen flüchtigen Speicher ein. Die Steuerung ist eingerichtet, um zu bestimmen, ob die Speicherungsvorrichtung HMB-Zuweisung unterstützt. Die Steuerung ist auch eingerichtet, um an eine Hostvorrichtung eine Anforderung für eine HMB-Zuweisung für ein oder mehrere der Steuerung zugeordnete interne Module zu senden, wenn bestimmt wird, dass die Speicherungsvorrichtung die HMB-Zuweisung unterstützt. Die Steuerung ist auch eingerichtet, um von der Hostvorrichtung eine Antwort zu empfangen, die angibt, ob die HMB-Zuweisung erfolgreich ist. Die Steuerung ist auch eingerichtet, um zu bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung. Die Steuerung ist auch eingerichtet, um eine Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher zu berechnen. Die Steuerung ist auch eingerichtet, um eine oder mehrere Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs durchzuführen. Die Steuerung ist auch eingerichtet, um die Hostspeicherzuweisung an die Hostvorrichtung zurückzugeben.
  • Es versteht sich, dass andere Gesichtspunkte der Speicherungsvorrichtung für den Fachmann aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Gesichtspunkte von Einrichtungen und Verfahren zur Veranschaulichung gezeigt und beschrieben werden. Wie zu erkennen ist, können diese Gesichtspunkte in anderen und unterschiedlichen Formen implementiert werden und sind ihre verschiedenen Details in verschiedenen anderen Hinsichten zu einer Modifikation fähig. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Figurenliste
  • Verschiedene Gesichtspunkte der vorliegenden Offenbarung werden nun in der detaillierten Beschreibung beispielhaft und nicht als Einschränkung unter Bezugnahme auf die beigefügten Zeichnungen dargestellt, wobei gilt:
    • 1 ist ein Blockdiagramm, das eine beispielhafte Ausführungsform einer Speicherungsvorrichtung in Kommunikation mit einer Host-Vorrichtung veranschaulicht.
    • 2 ist ein Konzeptdiagramm, das ein Beispiel einer logisch-zu-physisch-Abbildungstabelle in einem nicht-flüchtigen Speicher der Speicherungsvorrichtung von 1 veranschaulicht.
    • 3 ist ein Konzeptdiagramm, das ein Beispiel einer zweidimensionalen Anordnung von Speicherzellen in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 4 ist ein Konzeptdiagramm, das ein Beispiel einer dreidimensionalen Anordnung von Speicherzellen in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 5 ist ein Konzeptdiagramm, das ein Beispiel einer Anordnung von Blöcken in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 6 ist ein grafisches Diagramm, das ein Beispiel eines Spannungsverteilungsdiagramms für Dreifach-Level-Zellen in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 7 ist ein Konzeptdiagramm, das ein Beispiel eines nicht-flüchtigen Speichersystem in der Speicherungsvorrichtung von 1 veranschaulicht, das mit einer Hostvorrichtung kommuniziert.
    • 8 ist ein Flussdiagramm, das einen beispielhaften Prozess für die Speicherbehandlung während der HMB-Zuweisung in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 9 ist ein Flussdiagramm, das einen beispielhaften Prozess für die Freigabe der HMB-Zuweisung in der Speicherungsvorrichtung von 1 veranschaulicht.
    • 10A und 10B sind Konzeptdiagramme, die ein Beispiel für die Speicherbehandlung in der Speicherungsvorrichtung von 1 veranschaulichen.
    • 11 ist ein Flussdiagramm, das einen Prozess für die Handhabung der Hostspeicherpufferzuweisung, wie von der Speicherungsvorrichtung von 1 durchgeführt, veranschaulicht.
    • 12 ist ein Konzeptdiagramm, das ein Beispiel einer Steuerung veranschaulicht, die eine Hostspeicherpufferzuweisung in der Speicherungsvorrichtung von 1 handhabt.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen ist als eine Beschreibung verschiedener beispielhafter Ausführungsformen der vorliegenden Offenbarung zu verstehen und soll nicht die einzigen Ausführungsformen darstellen, in denen die vorliegende Offenbarung praktisch umgesetzt werden kann. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Offenbarung zu ermöglichen. Jedoch wird für Fachleute offensichtlich sein, dass die vorliegende Offenbarung ohne diese spezifischen Details in der Praxis umgesetzt werden kann. In einigen Fällen sind hinlänglich bekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Offenbarung unklar werden. Akronyme und andere beschreibende Terminologie können lediglich der Einfachheit und Klarheit halber verwendet werden und sollen den Schutzumfang der Offenbarung nicht einschränken.
  • Die Wörter „beispielhaft“ und „Beispiel“ werden hierin in der Bedeutung von „als ein Beispiel oder Fall oder zur Veranschaulichung dienend“ verwendet. Jede hierin als „beispielhaft“ beschriebene beispielhafte Ausführungsform ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen beispielhaften Ausführungsformen auszulegen. Gleichermaßen erfordert der Begriff „beispielhafte Ausführungsform“ einer Vorrichtung, eines Verfahrens oder eines Herstellungsartikels nicht, dass alle beispielhaften Ausführungsformen der Offenbarung die beschriebenen Komponenten, Struktur, Merkmale, Funktionalität, Prozesse, Vorteile, Nutzen oder Betriebsmodi einschließen.
  • Unter dem Begriff „gekoppelt“ wird im Rahmen der vorliegenden Erfindung entweder eine direkte Verbindung zwischen zwei Komponenten oder gegebenenfalls eine indirekte Verbindung untereinander durch zwischengeschaltete oder dazwischen liegende Komponenten verstanden. Wenn dagegen eine Komponente als mit einer anderen Komponente „direkt gekoppelt“ bezeichnet wird, sind hingegen keine zwischengeschalteten Elemente vorhanden.
  • In der folgenden detaillierten Beschreibung werden verschiedene Gesichtspunkte einer Speicherungsvorrichtung in Kommunikation mit einer Host-Vorrichtung dargestellt. Diese Gesichtspunkte sind für Flash-Speicherungsvorrichtungen, wie SSDs, USB-Laufwerke (Universal Serial Bus) und SD-Speicherkarten, gut geeignet. Jedoch wird der Fachmann erkennen, dass diese Gesichtspunkte auf alle Typen von Speicherungsvorrichtungen, die zum Speichern von Daten in der Lage sind, ausgedehnt werden können. Entsprechend soll jede Bezugnahme auf eine bestimmte Einrichtung oder ein bestimmtes Verfahren nur die verschiedenen Gesichtspunkte der vorliegenden Offenbarung veranschaulichen, wobei davon ausgegangen wird, dass diese Gesichtspunkte einen weiten Bereich von Anwendungen aufweisen können, ohne vom Schutzumfang und Geist der vorliegenden Offenbarung abzuweichen. Obwohl sich die folgende Beschreibung beispielsweise auf SSDs bezieht, kann die Beschreibung in ähnlicher Weise auch für andere Flash-Speicherungsvorrichtungen gelten.
  • Das HMB-Merkmal nutzt die Fähigkeiten von Direct Memory Access (DMA) von PCle, um SSDs zu ermöglichen, einen Teil des flüchtigen Speichers (z. B. Static Random Access Memory (SRAM)/DRAM) zu nutzen, der an die CPU angeschlossen ist, anstatt dass das SSD seinen eigenen SRAM/DRAM enthalten muss. Der Zugriff auf den Hostspeicher über PCle ist langsamer als der Zugriff auf Onboard-SRAM/ DRAM, aber relativ schneller als das Lesen von Flash (z. B. NAND-Speicher). Der HMB ist nicht als vollwertiger Ersatz für den Onboard-SRAM/- DRAM gedacht, der in den gängigen SSDs verwendet wird. Vielmehr haben alle SSDs, die das HMB-Merkmal verwenden, gezielte Puffergrößen in dem Bereich von einigen zehn MB. Dies kann für das Laufwerk ausreichen, um Abbildungsinformationen für mehrere Dutzend Gigabyte (GB) von Flash zwischenzuspeichern, was für viele Verbraucherarbeitslasten geeignet ist.
  • HMB ist ein hervorgehobenes Merkmal des NVMe-Protokolls, das die Speicherschnittstelle des Standes der Technik für neue Speicherungsvorrichtungen wie SSDs ist. HMB ermöglicht dem zugrunde liegenden Speicher, einen Abschnitt des Hostspeichers zum Zwischenspeichern von Adressabbildungsinformationen und/oder Benutzerdaten zu verwenden, sodass die begrenzte Kapazität des Speichers innerhalb der Speicherungsvorrichtung überwunden werden kann. Diese Technologie eröffnet die Möglichkeit, die E/A-Leistung kostengünstig zu optimieren, indem der umfangreiche Hostspeicher mit einer ressourcenbeschränkten Speicherungsvorrichtung gemeinsam genutzt wird.
  • Obwohl SSD-Steuerungen eine eingerichtete Speichermenge enthalten, ist der eingebaute Speicher möglicherweise nicht ausreichend, damit ein signifikanter Abschnitt der NAND-Abbildungstabellen intern zwischengespeichert werden kann. SSDs, die auf flüchtige Speicherressourcen (z. B. SRAM/DRAM) verzichten, können kostengünstiger sein und eine geringere Größe aufweisen; da jedoch die Speicherungsvorrichtung ressourcenbeschränkt sein kann, sodass sie ihre Abbildungstabellen nur in Flash-Speicher (z. B. NAND) anstelle eines wesentlich schnelleren flüchtigen Speichers speichern kann, kommt es zu einem erheblichen Leistungsverlust. SSDs können Einschränkungen aufgrund von Firmware-Overhead, Komplexität von Algorithmen für den Speicherbetrieb und begrenzten Produktionskosten aufgrund flüchtiger Speicherressourcen (z. B. RAM) oder anderer Hardware-Peripheriegeräte zum Erleichtern bei der Entscheidung über die Lese- und Schreibleistung aufweisen. Das HMB-Merkmal stellt einen Vorteil beim Verbessern der SSD-Leistung bereit, aber nicht in vollem Umfang, da HMB von der Hostseite her begrenzt ist.
  • Die vorliegende Technologie stellt eine Verbesserung der Leseleistung von SSDs für erfolgreiche HMB-zugewiesene Szenarien bereit. Zum Beispiel kann für jede erfolgreiche HMB-Zuweisung die Leseleistung des Hosts verbessert werden. Die vorliegende Technologie erfordert möglicherweise keine zusätzlichen Anforderungen für eine HMB-Zuweisung, um die Wiederverwendung von flüchtigem SSD-Speicher zur Verbesserung der SSD-Leseleistung zu erleichtern. Die vorliegende Technologie ermöglicht auch eine dynamische Konfiguration für die Host-Leseleistung von zufälligen Lesevorgängen, sequenziellen Lesevorgängen oder beides.
  • Die vorliegende Technologie stellt die effektive Wiederverwendung von internem SRAM/DRAM während der HMB-Zuweisung für das Laden zusätzlicher Datensätze (z. B. logische Abbildung eines Datensegments logischer Blockadressen (LBAs) für 32 MB Hostdaten in 32 KB), inverse Speicheradresstabellen (iSATs), Verlagerungsinformationen (z. B. Speicherbereinigung) und anderes bereit. Eine SSD-Steuerung kann an eine Hostvorrichtung eine Anforderung für eine HMB-Zuweisung für eines ihrer internen Module senden, um die SSD-Leseleistung effizient zu verbessern.
  • Die SSD-Steuerung kann eine Anforderung für eine HMB-Zuweisung an eine Hostvorrichtung senden, und basierend auf der Priorität eines jeweiligen internen Moduls kann die SSD-Steuerung entscheiden, wie der zugewiesene HMB für ihre internen Module verwendet werden soll. In einigen Gesichtspunkten kann die vorliegende Technologie erweitert werden, um weitere Verbesserungen einzuschließen, um Schreiboperationen zu adressieren (z. B. zufällig, sequentiell, überlappend), wenn eine Speicherverwaltungseinheit (MMU) für die SRAM/DRAM-Handhabung während der HMB-Zuweisung verschiedener interner Module der SSD-Steuerung implementiert ist. Dies kann zu einer Verbesserung der SSD-Schreibleistung beitragen, wobei eine Reihe von Datenkonsolidierungsanforderungen aufgrund der Schreibhandhabung erforderlich ist. Die vorliegende Technologie kann weiterhin erweitert werden, um adaptive Algorithmen zum Laden von Datensätzen basierend auf Host-Lese- und/oder Schreibmustern und erfolgreichen Zuweisungen von HMB zu adressieren, um das Laden und Freigeben von Datensätzen aus SRAM/DRAM zu reduzieren.
  • 1 zeigt ein beispielhaftes Blockdiagramm 100 einer Speicherungsvorrichtung 102, die mit einer Host-Vorrichtung 104 (auch „Host“) gemäß einer beispielhaften Ausführungsform kommuniziert. Die Hostvorrichtung 104 und die Speicherungsvorrichtung 102 können ein System, wie ein Computersystem (z. B. Server, Desktop, Mobiltelefon/Laptop, Tablet, Smartphone usw.), bilden. Die Komponenten von 1 können physisch zusammen angeordnet sein oder nicht. In dieser Hinsicht kann die Hostvorrichtung 104 entfernt von der Speicherungsvorrichtung 102 angeordnet sein. Wenngleich 1 veranschaulicht, dass die Hostvorrichtung 104 getrennt von der Speicherungsvorrichtung 102 gezeigt ist, kann die Hostvorrichtung 104 in anderen Ausführungsformen vollständig oder teilweise in die Speicherungsvorrichtung 102 integriert sein. Alternativ dazu kann die Hostvorrichtung 104 in ihrer Gesamtheit oder alternativ mit einiger Funktionalität in der Speicherungsvorrichtung 102 über mehrere entfernte Einheiten verteilt sein.
  • Der Fachmann wird erkennen, dass andere beispielhafte Ausführungsformen mehr oder weniger als die in 1 gezeigten Elemente einschließen können und dass die offenbarten Prozesse in anderen Umgebungen implementiert werden können. Zum Beispiel können andere beispielhafte Ausführungsformen eine unterschiedliche Anzahl von Hosts, die mit der Speicherungsvorrichtung 102 kommunizieren, oder mehrere Speicherungsvorrichtungen 102, die mit dem/den Host(s) kommunizieren, einschließen.
  • Die Host-Vorrichtung 104 kann Daten in der Speicherungsvorrichtung 102 speichern und/oder Daten von dieser abrufen. Die Host-Vorrichtung 104 kann eine beliebige Rechenvorrichtung einschließen, einschließlich zum Beispiel eines Computerservers, einer Network Attached Storage-Einheit (NAS-Einheit), eines Desktop-Computers, eines Notebook-Computers (z. B. eines Laptop-Computers), eines Tablet-Computers, einer mobilen Rechenvorrichtung, wie eines Smartphones, eines Fernsehers, einer Kamera, einer Anzeigevorrichtung, eines digitalen Medienwiedergabegeräts, einer Videospielkonsole, einer Videostreaming-Vorrichtung oder dergleichen. Die Host-Vorrichtung 104 kann mindestens einen Prozessor 101 und einen Host-Speicher 103 einschließen. Der mindestens eine Prozessor 101 kann eine beliebige Form von Hardware einschließen, die zum Verarbeiten von Daten in der Lage ist, und kann eine Universalverarbeitungseinheit (wie CPU), eine dedizierte Hardware (wie eine anwendungsspezifische integrierte Schaltung (ASIC)), einen Digitalsignalprozessor (DSP), konfigurierbare Hardware (wie eine feldprogrammierbare Gatteranordnung, (FPGA)) oder eine beliebige andere Form von Verarbeitungseinheit, die durch Softwareanweisungen, Firmware oder dergleichen eingerichtet ist, einschließen. Der Host-Speicher 103 kann durch die Host-Vorrichtung 104 verwendet werden, um durch den Host verarbeitete Daten oder Anweisungen oder von der Speicherungsvorrichtung 102 empfangene Daten zu speichern. In einigen Beispielen kann der Hostspeicher 103 nicht-flüchtigen Speicher, wie magnetische Speicherungsvorrichtungen, optische Speicherungsvorrichtungen, holografische Speicherungsvorrichtungen, Flash-Speicherungsvorrichtungen (z. B. NAND oder NOR), Phasenwechsel-Speicherungsvorrichtungen (PCM-Vorrichtungen), resistive Direktzugriffsspeicher-Vorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Direktzugriffsspeicher-Vorrichtungen (MRAM-Vorrichtungen), ferroelektrische Direktzugriffsspeicher-Vorrichtungen (F-RAM-Vorrichtungen) und einen beliebigen anderen Typ von nicht-flüchtigen Speicherungsvorrichtungen, einschließen. In anderen Beispielen kann der Hostspeicher 103 flüchtigen Speicher, wie Direktzugriffsspeicher (RAM), DRAM, statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen) einschließen. Der Host-Speicher 103 kann auch sowohl nicht-flüchtigen Speicher als auch flüchtigen Speicher, egal ob miteinander integriert oder als diskrete Einheiten, einschließen.
  • Die Hostschnittstelle 106 ist eingerichtet, um die Speicherungsvorrichtung 102 mit der Hostvorrichtung 104 über einen Bus/ein Netzwerk 108 zu verbinden, und kann die Verbindung unter Verwendung von zum Beispiel Ethernet oder WiFi oder einem Bus-Standard, wie Serial Advanced Technology Attachment (SATA), PCIe, Small Computer System Interface (SCSI) oder Serial Attached SCSI (SAS) neben anderen möglichen Kandidaten, herstellen. Alternativ kann die Hostschnittstelle 106 drahtlos sein und kann die Speicherungsvorrichtung 102 mit der Hostvorrichtung 104 unter Verwendung von zum Beispiel einer Mobilfunkkommunikation (z. B. 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 usw.), drahtlosen Verteilungsverfahren durch Zugangspunkte (z. B. IEEE 802.11, WiFi, HiperLAN usw.), Infrarot (IR), Bluetooth, Zigbee oder einer anderen Technologie für ein drahtloses Weitverkehrsnetzwerk (WWAN), ein drahtloses lokales Netzwerk (WLAN), ein drahtloses persönliches Netzwerk (WPAN) oder vergleichbaren Technologien für ein Weitverkehrsnetzwerk, ein lokales Netzwerk und ein persönliches Netzwerk verbinden.
  • Die Speicherungsvorrichtung 102 schließt einen Speicher ein. In der beispielhaften Ausführungsform von 1 kann die Speicherungsvorrichtung 102 beispielsweise einen nicht-flüchtigen Speicher (NVM) 110 zum dauerhaften Speichern der von der Hostvorrichtung 104 empfangenen Daten einschließen. Der NVM 110 kann zum Beispiel integrierte Flash-Schaltungen, NAND-Speicher (z. B. Single-Level-Zellen-Speicher (SLC-Speicher), Multi-Level-Zellen-Speicher (MLC-Speicher), Triple-Level-Zellen-Speicher (TLC-Speicher), Quad-Level-Zellen-Speicher (QLC-Speicher), Penta-Level-Zellen-Speicher (PLC-Speicher) oder eine beliebige Kombination davon) oder NOR-Speicher einschließen. Der NVM 110 kann eine Vielzahl von Speicherorten 112 einschließen, die Systemdaten zum Betreiben der Speicherungsvorrichtung 102 oder Benutzerdaten, die von dem Host zur Speicherung in der Speicherungsvorrichtung 102 empfangen werden, speichern können. Zum Beispiel kann der NVM eine Cross-Point-Architektur, einschließlich einer 2-D-NAND-Anordnung von Speicherorten 112 mit n Zeilen und m Spalten, einschließen, wobei m und n gemäß der Größe des NVM vordefiniert sind. In der beispielhaften Ausführungsform von 1 kann jeder Speicherort 112 ein Chip 114 sein, der mehrere Ebenen einschließt, die jeweils mehrere Blöcke von mehreren Zellen 116 einschließen. Alternativ kann jeder Speicherort 112 eine Ebene sein, die mehrere Blöcke der Zellen 116 einschließt. Die Zellen 116 können zum Beispiel Single-Level-Zellen, Multi-Level-Zellen, Triple-Level-Zellen, Quad-Level-Zellen und/oder Penta-Level-Zellen sein. Andere Beispiele von Speicherorten 112 sind möglich; zum Beispiel kann jeder Speicherort ein Block oder eine Gruppe von Blöcken sein. Jeder Speicherort kann einen oder mehrere Blöcke in einer 3-D-NAND-Anordnung einschließen. Jeder Speicherort 112 kann einen oder mehrere logische Blöcke einschließen, die auf einen oder mehrere physische Blöcke abgebildet werden. Alternativ können der Speicher und jeder Speicherplatz auf andere dem Fachmann bekannte Weise implementiert werden.
  • Die Speicherungsvorrichtung 102 schließt auch einen flüchtigen Speicher 118 ein, der zum Beispiel einen DRAM oder einen statischen Direktzugriffsspeicher (SRAM) einschließen kann. Daten, die in einem flüchtigen Speicher 118 gespeichert sind, können Daten, die aus dem NVM 110 gelesen werden, oder Daten, die in den NVM 110 geschrieben werden sollen, einschließen. In dieser Hinsicht kann der flüchtige Speicher 118 einen Schreibpuffer oder einen Lesepuffer zum temporären Speichern von Daten einschließen. Während 1 den flüchtigen Speicher 118 als von einer Steuerung 123 der Speicherungsvorrichtung 102 entfernt veranschaulicht, kann der flüchtige Speicher 118 in die Steuerung 123 integriert sein.
  • Der Speicher (z. B. der NVM 110) ist eingerichtet, um Daten 119, die von der Host-Vorrichtung 104 empfangen werden, zu speichern. Die Daten 119 können in den Zellen 116 eines beliebigen der Speicherorte 112 gespeichert sein. Als ein Beispiel veranschaulicht 1 die Daten 119, die an verschiedenen Speicherorten 112 gespeichert sind, obwohl die Daten an dem gleichen Speicherort gespeichert sein können. In einem anderen Beispiel können die Speicherorte 112 verschiedene Chips sein und die Daten in einem oder mehreren der verschiedenen Chips gespeichert sein.
  • Alle der Daten 119 können einer logischen Adresse zugeordnet sein. Zum Beispiel kann das NVM 110 eine logisch-zu-physische (LP2) Abbildungstabelle 120 für die Speicherungsvorrichtung 102 speichern, die allen Daten 119 eine logische Adresse zuordnet. Die L2P-Abbildungstabelle 120 speichert die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die von der Hostvorrichtung 104 geschrieben werden, auf physische Adressen in dem NVM 110, wobei der/die Ort(e) angegeben werden, in denen alle der Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 der Speicherungsvorrichtung durchgeführt werden. Die L2P-Abbildungstabelle kann eine Tabelle oder eine andere Datenstruktur sein, die eine Kennung einschließt, wie eine logische Blockadresse (LBA), die jedem Speicherort 112 in dem NVM, in dem Daten gespeichert sind, zugeordnet ist. Während 1 eine einzelne L2P-Abbildungstabelle 120 veranschaulicht, die an einem der Speicherorte 112 von NVM gespeichert ist, um eine unangemessene Verunklarung der Konzepte von 1 zu vermeiden, kann die L2P-Abbildungstabelle 120 tatsächlich mehrere Tabellen einschließen, die an einem oder mehreren Speicherorten von NVM gespeichert sind.
  • 2 ist ein Konzeptdiagramm 200 eines Beispiels einer L2P-Abbildungstabelle 205, die die Abbildung von Daten 202, die von einer Host-Vorrichtung empfangen werden, auf logische Adressen und physische Adressen in dem NVM 110 von 1 veranschaulicht. Die Daten 202 können den Daten 119 in 1 entsprechen, während die L2P-Abbildungstabelle 205 der L2P-Abbildungstabelle 120 in 1 entsprechen kann. In einer beispielhaften Ausführungsform können die Daten 202 in einer oder mehreren Seiten 204 gespeichert sein, z. B. Seiten 1 bis x, wobei x die Gesamtanzahl von Seiten von Daten ist, die in den NVM 110 geschrieben werden. Jede Seite 204 kann einem oder mehreren Einträgen 206 der L2P-Abbildungstabelle 205 zugeordnet sein, die eine LBA 208, eine physische Adresse 210, die den in den NVM geschriebenen Daten zugeordnet ist, und eine Länge 212 der Daten identifizieren. Die LBA 208 kann eine logische Adresse sein, die in einem Schreibbefehl für die von der Host-Vorrichtung empfangenen Daten spezifiziert ist. Die physische Adresse 210 kann den Block und die Verschiebung angeben, bei denen die Daten, die der LBA 208 zugeordnet sind, physisch geschrieben werden. Die Länge 212 kann eine Größe der geschriebenen Daten angeben (z. B. 4 KB oder eine andere Größe).
  • Unter erneuter Bezugnahme auf 1 speichert der flüchtige Speicher 118 außerdem einen Cache 122 für die Speicherungsvorrichtung 102. Der Cache 122 schließt Einträge ein, die die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die durch die Hostvorrichtung 104 angefordert werden, auf physische Adressen in dem NVM 110 zeigen, wobei der/die Ort(e) angegeben werden, in denen die Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 durchgeführt werden. Wenn die Steuerung 123 einen Lesebefehl oder einen Schreibbefehl für die Daten 119 empfängt, prüft die Steuerung den Cache 122 auf die logisch-zu-physisch-Abbildung aller Daten. Wenn eine Abbildung nicht vorhanden ist (es z. B. die erste Anforderung für die Daten ist), greift die Steuerung auf die L2P-Abbildungstabelle 120 zu und speichert die Abbildung in dem Cache 122. Wenn die Steuerung 123 den Lesebefehl oder Schreibbefehl ausführt, greift die Steuerung auf die Abbildung aus dem Cache zu und liest die Daten aus dem NVM 110 an der spezifizierten physischen Adresse oder schreibt sie in diesen. Der Cache kann in Form einer Tabelle oder einer anderen Datenstruktur gespeichert sein, die eine logische Adresse einschließt, die jedem Speicherort 112 in NVM zugeordnet ist, wo Daten gelesen werden.
  • Der NVM 110 schließt den Abtastverstärker 124 und Daten-Latches 126 ein, die mit jedem Speicherort 112 verbunden sind. Zum Beispiel kann der Speicherort 112 ein Block sein, der Zellen 116 auf mehreren Bitleitungen einschließt und der NVM 110 kann einen Abtastverstärker 124 auf jeder Bitleitung einschließen. Darüber hinaus können ein oder mehrere Daten-Latches 126 mit den Bitleitungen und/oder Abtastverstärkern verbunden sein. Bei den Daten-Latches kann es sich zum Beispiel um Schieberegister handeln. Wenn Daten aus den Zellen 116 des Speicherorts 112 gelesen werden, tasten die Abtastverstärker 124 die Daten durch Verstärken der Spannungen auf den Bitleitungen auf einen logischen Pegel (z. B. lesbar als eine „0“ oder eine „1“) ab und die abgetasteten Daten werden in den Daten-Latches 126 gespeichert. Die Steuerung 123 steuert die Übertragung der Daten von den Daten-Latches 126 zu dem flüchtigen Speicher 118 über einen Datenbus, die in dem flüchtigen Speicher 118 gespeichert sind, bis sie an die Hostvorrichtung 104 übertragen werden. Da die Steuerung 123 möglicherweise keinen zusätzlichen Speicher hat, kann sie die Daten so lange halten, bis sie von den Daten-Latches 126 in den flüchtigen Speicher 118 übertragen werden. Wenn Daten in die Zellen 116 des Speicherorts 112 geschrieben werden, speichert die Steuerung 123 die programmierten Daten in den Daten-Latches 126 und werden die Daten anschließend von den Daten-Latches 126 an die Zellen 116 übertragen.
  • Die Speicherungsvorrichtung 102 schließt eine Steuerung 123 ein, die Schaltlogik, wie einen oder mehrere Prozessoren zum Ausführen von Anweisungen einschließt, und kann eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), eine ASIC, eine FPGA, festverdrahtete Logik, analoge Schaltlogik und/oder eine Kombination davon einschließen.
  • Die Steuerung 123 ist eingerichtet, um Daten zu empfangen, die von einer oder mehreren der Zellen 116 der verschiedenen Speicherorte 112 als Reaktion auf einen Lesebefehl übertragen werden. Zum Beispiel kann die Steuerung 123 die Daten 119 lesen, indem sie die Abtastverstärker 124 aktiviert, um die Daten aus den Zellen 116 in Daten-Latches 126 abzutasten, und die Steuerung 123 kann die Daten von den Daten-Latches 126 empfangen. Die Steuerung 123 ist außerdem eingerichtet, um als Reaktion auf einen Schreibbefehl Daten in eine oder mehrere der Zellen 116 zu programmieren. Zum Beispiel kann die Steuerung 123 die Daten 119 schreiben, indem sie Daten an die Daten-Latches 126 sendet, um in die Zellen 116 programmiert zu werden. Die Steuerung 123 ist weiterhin eingerichtet, um beim Lesen oder Schreiben von Daten in die Zellen 116 auf die L2P-Abbildungstabelle 120 in dem NVM 110 zuzugreifen. Zum Beispiel kann die Steuerung 123 logisch-zu-physisch-Adressabbildungen von dem NVM 110 als Reaktion auf Lese- oder Schreibbefehle von der Host-Vorrichtung 104 empfangen, die physischen Adressen identifizieren, die auf die logischen Adressen abgebildet sind, die in den Befehlen identifiziert sind, (z. B. die logischen Adressen in physische Adressen übersetzen) und auf Daten in den Zellen 116, die sich an den abgebildeten physischen Adressen befinden, zugreifen oder diese speichern.
  • Die Steuerung 123 und ihre Komponenten können mit eingebetteter Software implementiert sein, die die verschiedenen Funktionen der in dieser Offenbarung beschriebenen Steuerung durchführt. Alternativ dazu kann Software zum Implementieren jeder der zuvor erwähnten Funktionen und Komponenten in dem NVM 110 oder in einem Speicher außerhalb der Speicherungsvorrichtung 102 oder der Host-Vorrichtung 104 gespeichert sein, und es kann durch die Steuerung 123 zur Ausführung durch den einen oder die mehreren Prozessoren der Steuerung 123 auf sie zugegriffen werden. Alternativ dazu können die Funktionen und Komponenten der Steuerung mit Hardware in der Steuerung 123 implementiert sein, oder sie können unter Verwendung einer Kombination der zuvor erwähnten Hardware und Software implementiert sein.
  • Im Betrieb speichert die Host-Vorrichtung 104 Daten in der Speicherungsvorrichtung 102 durch Senden eines Schreibbefehls an die Speicherungsvorrichtung 102, der eine oder mehrere logische Adressen (z. B. LBAs) sowie eine Länge der zu schreibenden Daten spezifiziert. Die Hostschnittstelle 106 empfängt den Schreibbefehl, und die Steuerung ordnet einen Speicherort 112 in dem NVM 110 der Speicherungsvorrichtung 102 zum Speichern der Daten zu. Die Steuerung 123 speichert die L2P-Abbildung in dem NVM (und dem Cache 122), um eine logische Adresse, die den Daten zugeordnet ist, auf die physische Adresse des Speicherorts 112 abzubilden, der für die Daten zugeordnet ist. Die Steuerung speichert außerdem die Länge der L2P-abgebildeten Daten. Die Steuerung 123 speichert dann die Daten an dem Speicherort 112, indem sie sie an einen oder mehrere Daten-Latches 126 sendet, die mit dem zugeordneten Speicherort verbunden sind, von dem die Daten in die Zellen 116 programmiert werden.
  • Die Hostvorrichtung 104 kann Daten von der Speicherungsvorrichtung 102 abrufen, indem sie einen Lesebefehl, der eine oder mehrere logische Adressen spezifiziert, die den Daten zugeordnet sind, die von der Speicherungsvorrichtung 102 abgerufen werden sollen, sowie eine Länge der zu lesenden Daten sendet. Die Schnittstelle 106 empfängt den Lesebefehl, und die Steuerung 123 greift auf die L2P-Abbildung in dem Cache 122 oder ansonsten in dem NVM zu, um die logischen Adressen, die in dem Lesebefehl spezifiziert sind, in die physischen Adressen zu übersetzen, die den Ort der Daten angeben. Die Steuerung 123 liest dann die angeforderten Daten aus dem durch die physischen Adressen spezifizierten Speicherort 112, indem sie die Daten unter Verwendung der Abtastverstärker 124 abtastet und in Daten-Latches 126 speichert, bis die gelesenen Daten über die Hostschnittstelle 106 an die Hostvorrichtung 104 zurückgegeben werden.
  • 3 veranschaulicht ein Beispiel einer NAND-Speicheranordnung 300 von Zellen 302. Die Zellen 302 können den Zellen 116 im NVM 110 von 1 entsprechen. Mehrere Zellen 302 sind mit Wortleitungen 304 und Bitleitungen 306 gekoppelt. Zum Beispiel kann die Speicheranordnung 300 n Wortleitungen und m Bitleitungen innerhalb eines Blocks eines Chips 114 des NVM 110 einschließen, wobei n und m gemäß der Größe des Blocks vordefiniert sind. Jede Wortleitung und Bitleitung kann jeweils einer Zeilen- und Spaltenadresse zugeordnet sein, welche die Steuerung 123 verwenden kann, um bestimmte Wortleitungen und Bitleitungen auszuwählen (z. B. unter Verwendung eines Zeilen- und Spaltendecoders). Zum Beispiel können die Wortleitungen 0-n jeweils ihrer eigenen Zeilenadresse zugeordnet sein (z. B. kann die Wortleitung 0 der Wortleitungsadresse 0 entsprechen, die Wortleitung 1 kann der Wortleitungsadresse 1 entsprechen usw.), und die Bitleitungen 0-m können jeweils ihrer eigenen Spaltenadresse zugeordnet sein (z. B. kann die Bitleitung 0 der Bitleitungsadresse 0 entsprechen, die Bitleitung 1 kann der Bitleitungsadresse 1 entsprechen usw.). Auswahl-Gate-Source (SGS)-Zellen 308 und Auswahl-Gate-Drain (SGD)-Zellen 310 sind mit den Speicherzellen 302 auf jeder Bitleitung 306 gekoppelt. Die SGS-Zellen 308 und SGD-Zellen 310 verbinden die Speicherzellen 302 mit einer Sourceleitung 312 (z. B. Masse) bzw. Bitleitungen 306. Eine Kette 314 kann eine Gruppe von Zellen 302 (einschließlich SGS- und SGD-Zellen 308, 310) einschließen, die mit einer Bitleitung innerhalb eines Blocks gekoppelt sind, während eine Seite 316 eine Gruppe von Zellen 302 einschließen kann, die mit einer Wortleitung innerhalb des Blocks gekoppelt sind.
  • 4 veranschaulicht ein Beispiel einer dreidimensionalen (3D) NAND-Speicheranordnung 400 von Zellen 422. Die Zellen 422 können den Zellen 116 in dem NVM 110 von 1 entsprechen. Wie in der 2D-Speicheranordnung 300 von 3A können mehrere Zellen 422 mit Wortleitungen 414 und Bitleitungen 416 gekoppelt sein. In der 3D-Speicheranordnung 400 können die Wortleitungen 414 jedoch jeweils mehrere Wortleitungsketten 418 einschließen, und die Bitleitungen 416 können mit jedem der Wortleitungsketten 418 verbunden sein. In ähnlicher Weise können SGS-Zellen und SGD-Zellen (nicht gezeigt) jeweils die Speicherzellen in jeder Wortleitungskette 418 mit der Quellleitung (nicht gezeigt) und den Bitleitungen 416 verbinden. Somit kann die 3D-Speicheranordnung 400 mehr einzeln zugängliche Datenseiten auf jeder Wortleitung 414 (z. B. in Wortleitungsketten 418) speichern als die 2D-Speicheranordnung 300. Während die in 4 veranschaulichte 3D-Speicheranordnung 400 ein Beispiel von zwei Wortleitungsketten 418 für jede Wortleitung 414 einschließt, können die Wortleitungen 414 in anderen Beispielen eine andere Anzahl von Wortleitungsketten einschließen (z. B. vier WL-Strs 0-3). Die Architektur von 3B oder Variationen davon können in 3D-NAND-Implementierungen einschließlich Bit Cost Scalable (BiCS) Flash-Speicher für Speicherungsvorrichtungen mit ultrahoher Dichte verwendet werden.
  • 5 veranschaulicht ein Beispiel einer NAND-Speicheranordnung 500 von Blöcken 502, die mehrere Ketten 504 einschließen. Blöcke 502 können Blöcken eines Chips 114 in dem NVM 110 von 1 entsprechen, und Ketten 504 können jeweils Kette 314 in 3 entsprechen. Wie in der Speicheranordnung 300 von 3 kann jede Kette 504 eine Gruppe von Speicherzellen einschließen, die jeweils mit einer Bitleitung 506 gekoppelt sind und einzeln mit jeweiligen Wortleitungen 508 gekoppelt sind. In ähnlicher Weise kann jede Kette eine SGS-Zelle 510 und eine SGD-Zelle 512 einschließen, welche die Speicherzellen in jeder Kette 504 jeweils mit einer Sourceleitung 514 und einer Bitleitung 506 verbinden.
  • Wenn die Steuerung 123 Daten von einer Seite 316 von Zellen 302 liest oder Daten in diese schreibt (d. h. auf einer Wortleitung 304, 508), kann die Steuerung einen Befehl senden, um eine Lesespannung oder Programmierspannung an die ausgewählte Wortleitung und eine Durchgangsspannung an die anderen Wortleitungen anzulegen. Der gelesene oder programmierte Zustand der Zelle (z. B. eine Logik ,0' oder eine Logik̃ ,1' für SLCs) kann dann basierend auf einer Schwellenspannung der Zellen 302 bestimmt werden. Wenn zum Beispiel während eines SLC-Lesevorgangs die Schwellenspannung einer Zelle 302 kleiner als die Lesespannung ist (d. h. Strom als Reaktion auf die Lesespannung durch die Zelle fließt), kann die Steuerung 123 bestimmen, dass die Zelle eine Logik ,1' speichert, während wenn die Schwellenspannung der Zelle 302 größer als die Lesespannung ist (d. h. kein Strom als Reaktion auf die Lesespannung durch die Zelle fließt), die Steuerung 123 bestimmen kann, dass die Zelle eine Logik ,0' speichert. In ähnlicher Weise kann die Steuerung während eines SLC-Programmiervorgangs eine Logik ,0' speichern, indem sie einen Befehl zum Anlegen der Programmierspannung an die Zelle 302 auf der Wortleitung 304, 508 sendet, bis die Zelle die Schwellenspannung erreicht, und bei einem Löschvorgang kann die Steuerung einen Befehl zum Anlegen einer Löschspannung an den Block 502 einschließlich der Zellen 302 (z. B. an ein Substrat der Zellen wie eine p-Wanne) senden, bis die Zellen wieder unter die Schwellenspannung absinken (zurück zu Logik ,1').
  • Für Zellen, die mehrere Bits speichern (z. B. MLCs, TLCs, QLCs usw.), kann jede Wortleitung 304, 508 mehrere Seiten 316 von Zellen 302 einschließen, und die Steuerung kann in ähnlicher Weise Befehle senden, um Lese- oder Programmierspannungen an die Wortleitungen anzulegen, um den Lese- oder Programmierzustand der Zellen basierend auf einer Schwellenspannung der Zellen zu bestimmen. Zum Beispiel kann im Fall von TLCs jede Wortleitung 304, 508 drei Seiten 316 einschließen, einschließlich einer unteren Seite (LP), einer mittleren Seite (MP) und einer oberen Seite (UP), die jeweils den verschiedenen Bits entsprechen, die in dem TLC gespeichert sind. In einem Beispiel kann beim Programmieren von TLCs zuerst die LP programmiert werden, gefolgt von der MP und dann der UP. Zum Beispiel kann eine Programmierspannung an die Zelle auf der Wortleitung 304, 508 angelegt werden, bis die Zelle eine erste Zwischenschwellenspannung erreicht, die einem niedrigstwertigen Bit (LSB) der Zelle entspricht. Als Nächstes kann die LP gelesen werden, um die erste Zwischenschwellenspannung zu bestimmen, und dann kann eine Programmierspannung an die Zelle auf der Wortleitung angelegt werden, bis die Zelle eine zweite Zwischenschwellenspannung erreicht, die einem nächsten Bit der Zelle (zwischen dem LSB und dem höchstwertigen Bit (MSB)) entspricht. Schließlich kann die MP gelesen werden, um die zweite Zwischenschwellenspannung zu bestimmen, und dann kann eine Programmierspannung an die Zelle auf der Wortleitung angelegt werden, bis die Zelle die endgültige Schwellenspannung erreicht, die dem MSB der Zelle entspricht. Alternativ können in anderen Beispielen die LP, MP und UP zusammen programmiert werden (z.B., in Vollsequenzprogrammierung oder Foggy-Fine-Programmierung), oder die LP und MP können zuerst programmiert werden, gefolgt von der UP (z.B., LM-Foggy-Fine-Programmierung). In ähnlicher Weise kann die Steuerung 123 beim Lesen von TLCs die LP lesen, um festzustellen, ob das LSB eine logische 0 oder 1 in Abhängigkeit von der Schwellenspannung der Zelle speichert, die MP, um festzustellen, ob das nächste Bit eine logische 0 oder 1 in Abhängigkeit von der Schwellenspannung der Zelle speichert, und die UP, um zu bestimmen, ob das letzte Bit eine logische 0 oder 1 in Abhängigkeit von der Schwellenspannung der Zelle speichert.
  • 6 veranschaulicht ein Beispiel eines Spannungsverteilungsdiagramms 600, das verschiedene NAND-Zustände für TLCs (z. B. Zellen 116, 302) veranschaulicht, die drei Datenbits speichern (z. B. Logik 000, 001, usw. bis Logik 111). Die TLCs können einen Löschzustand 602, der logisch ,111' entspricht, und mehrere Programmzustände 604 (z. B. AG), die anderen logischen Werten ,000-110' entsprechen, einschließen. Die Programmzustände 604 können durch unterschiedliche Schwellenspannungen 606 getrennt sein. Anfänglich können sich die Zellen 116, 302 im Löschzustand 602 befinden, z. B. nachdem der Steuerung 123 einen Block 502 einschließlich der Zellen gelöscht hat. Wenn die Steuerung 123 LPs, MPs und UPs wie oben beschrieben programmiert, können die Spannungen der Zellen 116, 302 erhöht werden, bis die Schwellenspannungen 606, die den zu speichernden Logikwerten entsprechen, erreicht sind, woraufhin die Zellen in ihre jeweiligen Programmzustände 604 übergehen. Während 6 acht NAND-Zustände für TLCs veranschaulicht, kann die Anzahl von Zuständen abhängig von der Datenmenge, die in jeder Zelle 116, 302 gespeichert ist, unterschiedlich sein. Zum Beispiel können SLCs zwei Zustände aufweisen (z. B. logisch 0 und logisch 1), MLCs können vier Zustände aufweisen (z. B. logisch 00, 01, 10, 11) und QLCs können sechzehn Zustände aufweisen (z. B. Löschen und A-N).
  • Wenn die Steuerung 123 versucht, Zellen 116, 302 einer ausgewählten Wortleitung 304, 508 in einen der Programmzustände 604 zu programmieren, kann die Steuerung eine inkrementelle Schrittimpulsprogrammierung (ISPP) über eine Anzahl von Programmierschleifen oder ISPP-Zyklen durchführen. Zum Beispiel kann eine Programmierspannung (z. B. eine hohe Spannung) an die ausgewählte Wortleitung 304, 508 angelegt werden, eine Durchgangsspannung (z. B. eine hohe Spannung, die niedriger als die Programmierspannung ist) kann an die anderen Wortleitungen 304, 508 angelegt werden, eine Bitleitungsprogrammierspannung (z. B. eine niedrige Spannung) kann an die Bitleitungen 306, 506 angelegt werden, die mit den ausgewählten Zellen verbunden sind, die auf der ausgewählten Wortleitung programmiert werden, und eine Bitleitungssperrspannung (z. B. eine hohe Spannung) kann an die Bitleitungen 306, 506 angelegt werden, die mit den anderen Zellen verbunden sind, die nicht auf der ausgewählten Wortleitung programmiert werden. Das Anlegen einer hohen Programmierspannung an die ausgewählte Wortleitung und einer niedrigen Spannung an die ausgewählten Bitleitungen ermöglicht es Elektronen, von dem Kanal in die Ladungseinfangschicht dieser ausgewählten Zellen zu tunneln, wodurch bewirkt wird, dass die Schwellenspannung der Zellen ansteigt. Andererseits verhindert das Anlegen einer hohen Spannung an nicht ausgewählte Bitleitungen, dass Elektronen aus dem Kanal in die Ladungseinfangschicht dieser nicht ausgewählten Zellen tunneln, wodurch verhindert wird, dass die Schwellenspannung dieser Zellen ansteigt. Somit können Bitleitungen, die mit Zellen gekoppelt sind, die in niedrigere Zustände programmiert sind, gesperrt werden, um zu verhindern, dass die Schwellenspannung dieser Zellen zunimmt, während andere Zellen in höhere Zustände programmiert sind. Zum Beispiel können bei TLCs zuerst die Bitleitungen von Zellen, die zuerst in den A-Zustand programmiert werden, gesperrt werden, gefolgt von den Bitleitungen verschiedener Zellen, die in den B-Zustand programmiert werden, gefolgt von jenen, die den C-Zustand erreichen, dann den D-Zustand usw., bis die verbleibenden Zellen auf der ausgewählten Wortleitung schließlich den G-Zustand erreichen und alle Zellen auf der ausgewählten Wortleitung programmiert worden sind.
  • Nachdem die Programmierspannung in einer Programmierschleife oder einem ISPP-Zyklus angelegt wurde, kann eine Programmierverifizierungsspannung (z. B. eine niedrige Spannung) an die Wortleitung 304, 508 angelegt werden, um zu bestimmen, ob die Schwellenspannung einer Zelle über eine jeweilige Schwellenspannung hinaus in einen beabsichtigten Programmierzustand angestiegen ist. Wenn keine der Zellen in einen beabsichtigten Programmierzustand übergegangen ist, wird ein anderer Programmierschleifen- oder ISPP-Zyklus durchgeführt, in dem eine höhere Programmierspannung angelegt werden kann, um die Schwellenspannung der Zellen weiter zu erhöhen. Anschließend kann erneut eine Programmierverifizierungsspannung angelegt werden, um zu bestimmen, ob die Schwellenspannung einer Zelle in einen beabsichtigten Programmierzustand übergegangen ist. Der vorstehende Prozess des inkrementellen Erhöhens der Programmierspannung und des Verifizierens des Spannungsschwellenwerts der ausgewählten Zellen kann über eine Anzahl von Programmierschleifen wiederholt werden. Wenn die Zellen in ihre jeweiligen Programmierzustände übergehen und die Gesamtzahl der Programmierschleifen eine vorbestimmte Schleifenzahl nicht überschreitet, kann die Steuerung bestimmen, dass die Zellen in ihre beabsichtigten Programmierzustände eingetreten sind und somit erfolgreich programmiert werden. Anderenfalls, wenn die Gesamtanzahl von Programmierschleifen die vorbestimmte Schleifenzahl überschreitet, bevor die Zellen in ihre jeweiligen Programmierzustände übergehen, kann die Steuerung bestimmen, dass ein Programmierfehler aufgetreten ist.
  • 7 ist ein Blockdiagramm eines beispielhaften nicht-flüchtigen Speichersystems in der Speicherungsvorrichtung von 1, in dem weitere Details einer beispielhaften Ausführungsform einer Speichersteuerung 123 und einer Hostvorrichtung 104 dargestellt sind. In einer beispielhaften Ausführungsform ist das System von 7 ein SSD. Wie hierin verwendet, ist die Speichersteuerung 123 eine Vorrichtung, die auf einer nicht-flüchtigen Speicherungsvorrichtung gespeicherte Daten verwaltet und mit der Hostvorrichtung 104, wie z. B. einem Computer oder einer elektronischen Vorrichtung, kommuniziert. In einigen beispielhaften Ausführungsformen enthält der nicht-flüchtige Speicher 110 Flash-Speicherzellen (z. B. NAND oder NOR), wobei die Speichersteuerung 123 eine Flash-Speichersteuerung sein kann.
  • Die Speichersteuerung 123 kann zusätzlich zu den hierin beschriebenen spezifischen Funktionen verschiedene Funktionen aufweisen. Zum Beispiel kann der Speichercontroller den Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzspeicherzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um den Speichercontroller zu betreiben und andere Merkmale umzusetzen. Wenn die Hostvorrichtung 104 im Betrieb Daten aus dem Speicher lesen oder in den Speicher schreiben muss, kann sie mit der Speichersteuerung 123 kommunizieren. Wenn die Hostvorrichtung 104 eine logische Adresse (LA) bereitstellt, an die Daten gelesen/geschrieben werden sollen, kann die Speichersteuerung 123 die von der Hostvorrichtung 104 empfangene logische Adresse in eine physische Adresse in dem Speicher umwandeln. Bei der logischen Adresse kann es sich um eine LBA und bei der physikalischen Adresse um eine physikalische Blockadresse (PBA) handeln. (Alternativ kann die Hostvorrichtung 104 die physische Adresse bereitstellen). Die Speichersteuerung 123 kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z. B., ohne darauf beschränkt zu sein, einen Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und eine Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, sodass der volle Block gelöscht und wiederverwendet werden kann).
  • Die Speichersteuerung 123 kann eingerichtet sein, um ein Speicherzugriffsprotokoll wie etwa ein NVMe-Protokoll zu implementieren. In einigen beispielhaften Ausführungsformen ist die Speichersteuerung 123 eingerichtet, um eine Erweiterung an ein NVMe-Protokoll zu implementieren, das der Speichersteuerung 123 ermöglicht, eine dynamische Änderung der Größe eines HMB 770 anzufordern. Eine Speichersteuerung 123, die ein NVMe-Protokoll oder eine Erweiterung an ein NVMe-Protokoll implementiert, das der Speichersteuerung 123 ermöglicht, eine dynamische Änderung der Größe des HMB 770 anzufordern, wird hier als NVMe-Speichersteuerung bezeichnet. Ebenso wird eine Hoststeuerung 780, die ein PCI-Protokoll (Peripheral Component Interconnect) oder eine Erweiterung an ein NVMe-Protokoll implementiert, das der Speichersteuerung 123 die Anforderung einer dynamischen Änderung der Größe des HMB 770 gewährt, hierin als NVMe-Hoststeuerung bezeichnet.
  • Ein Abschnitt des Hostspeichers 103 kann für einen HMB 770 verwendet werden. Der HMB 770 kann ein Puffer sein, der von der Hostvorrichtung 104 zur Verwendung durch die Speichersteuerung 123 zugewiesen wird. In einigen beispielhaften Ausführungsformen ist der HMB 770 zur ausschließlichen Verwendung durch die Speichersteuerung 123 bestimmt. Zum Beispiel kann die Speichersteuerung 123 den HMB 770 zum Zwischenspeichern von Daten verwenden. Die Hostvorrichtung 104 kann sicherstellen, dass die Daten in dem HMB 770 gültig sein können, und ist verpflichtet, die Speichersteuerung 123 vor jedem Vorgang zu benachrichtigen, die zu einem Datenverlust führen kann (z. B. Stromausfall, Host benötigt diesen Puffer usw...) in einer beispielhaften Ausführungsform. In einer beispielhaften Ausführungsform erlaubt die Hostvorrichtung 104 der Speichersteuerung 123, diesen Vorgang zu bestätigen, bevor die Daten verloren gehen. In einer beispielhaften Ausführungsform kann die Hostvorrichtung 104 eine anfängliche Zuweisung des HMB 770 an die Speichersteuerung 123 vornehmen, wenn die Speichersteuerung 123 initialisiert wird. In einer beispielhaften Ausführungsform wird die Speichersteuerung 123 mit dem Einschalten der Speicherungsvorrichtung 102 initialisiert. Die anfängliche Zuweisung kann mit NVMe konform sein; die anfängliche Zuweisung von HM B ist jedoch nicht auf NVMe beschränkt.
  • Der HMB 770 kann logisch in Einheiten wie Datenpuffer unterteilt sein. Jeder Datenpuffer kann zum Beispiel 4 KB oder eine andere Größe aufweisen. Der Hauptspeicher 103 kann zum Speichern von HMB-Zeigern verwendet werden. Die HMB-Zeiger können physische Adressen der Puffer in dem Hauptspeicher 103 enthalten. Die HMB-Zeiger können auch einen Größenparameter enthalten, der die Größe eines Puffers angibt.
  • Es ist zu beachten, dass ein Abschnitt des Hostspeichers 103 für Datenpuffer verwendet werden kann, in denen die Hostvorrichtung 104 Hostdaten speichern kann, die in den NVM 110 geschrieben werden sollen, oder um Hostdaten zu speichern, die von dem NVM 110 gelesen wurden.
  • Die Hostvorrichtung 104 weist eine Hoststeuerung 780 auf. Die Hoststeuerung 780, wie der Begriff hierin verwendet wird, ist eine Vorrichtung, die mit der Speichersteuerung 123 kommuniziert, um auf einen nicht-flüchtigen Speicher zuzugreifen, welcher der Steuerung der nicht-flüchtigen Speichersteuerung 123 unterliegt. Die Hoststeuerung 780 kann eingerichtet sein, um Host-Steuerfunktionen eines Speicherzugriffprotokolls einschließlich, aber nicht begrenzt auf NVMe, zu implementieren. Es ist zu beachten, dass die Hoststeuerung 780 eingerichtet sein kann, um Techniken zu implementieren, die Erweiterungen eines Speicherzugriffsprotokolls wie NVMe sein können.
  • Die Hoststeuerung 780 weist einen HMB-Zuweiser 744 auf, der eingerichtet sein kann, um den HMB der Speichersteuerung 123 zuzuweisen und die HMB-Zuweisung für die Speicherungsvorrichtung bis zu bestimmten Leistungszustandsereignissen aufrechtzuerhalten. In einer beispielhaften Ausführungsform ist der HMB-Zuweiser 744 eingerichtet, um eine Zuweisung von HMB 770 basierend auf einer Anforderung für die Speichersteuerung 123 während eines Einschaltzustands der Speicherungsvorrichtung vorzunehmen, und die Hoststeuerung 780 behält die HMB-Zuweisung mit der Speicherungsvorrichtung bei, bis die Speicherungsvorrichtung (regulär oder nicht regulär) ausgeschaltet wird. In dieser Hinsicht kann die HMB-Zuweisung während eines Ausschaltzustands der Speicherungsvorrichtung vollständig freigegeben werden. In einigen Gesichtspunkten kann die Hoststeuerung 780 die HMB-Zuweisung mit der Speicherungsvorrichtung beibehalten, selbst wenn die Speicherungsvorrichtung in einen niedrigen Leistungszustand übergeht (z. B. Leistungszustand 3, Leistungszustand 4).
  • Die Hoststeuerung 780 kann mit der Speichersteuerung 123 über die Schnittstelle 106 (in 1) kommunizieren. Die Speicherungsvorrichtungsschnittstelle 748 kann eine Schnittstelle der physikalischen Schicht (PHY) einschließen, die eine elektrische Schnittstelle mit der Speicherungsvorrichtung 102 und/oder der Schnittstelle 106 bereitstellt. In einer beispielhaften Ausführungsform schließt PHY Hardware ein, die mit PCle konform ist. Jedoch ist PHY nicht auf PCle beschränkt. Die Speicherungsvorrichtungsschnittstelle 748 unterstützt üblicherweise das Übertragen von Daten, Steuersignalen und Taktsignalen über Schnittstelle 106.
  • Der HMB-Zuweiser 744 und die Speicherungsvorrichtungsschnittstelle 748 können in Form einer verpackten funktionalen Hardwareeinheit (z. B. einer elektrischen Schaltung), die zur Verwendung mit anderen Komponenten bestimmt ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der von einer Prozessorschaltung (oder einem oder mehreren Prozessoren), von dem (von denen) üblicherweise eine bestimmte Funktion zugehöriger Funktionen erfüllt wird, ausführbar ist, oder einer eigenständigen Hardware- oder Softwarekomponente, die mit einem größeren System verbunden ist, vorliegen. Zum Beispiel kann der HMB-Zuweiser 744 einen ASIC, ein FPGA, eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen oder umfassen, die in einer prozessorlesbaren Vorrichtung (z. B. Hostspeicher 103) gespeichert ist, um einen oder mehrere Prozessoren zur Durchführung der hierin beschriebenen Funktionen zu programmieren.
  • Die Speichersteuerung 123 kann eine Schnittstelle mit dem NVM 110 bilden. In einer beispielhaften Ausführungsform implementieren die Speichersteuerung 123 und mehrere Speicherchips (zusammen aufweisend die Speicherungsvorrichtung 102) ein SSD, das anstelle eines Festplattenlaufwerks innerhalb eines Hosts, als NAS-Vorrichtung usw. emuliert, ersetzt oder verwendet werden kann. Darüber hinaus muss das SSD nicht als Festplatte verwendet werden.
  • In einigen beispielhaften Ausführungsformen schließt die Speicherungsvorrichtung 102 einen einzelnen Kanal zwischen der Speichersteuerung 123 und dem nicht-flüchtigen Speicher 110 ein, wobei der hierin beschriebene Gegenstand nicht darauf beschränkt ist, einen einzelnen Speicherkanal zu haben. Zum Beispiel können in einigen nicht-flüchtigen Architekturen von Speicherungsvorrichtungen 4, 7, 8 oder mehr Kanäle zwischen der Speichersteuerung 123 und dem Speicherchip vorhanden sein, abhängig von den Fähigkeiten der Speichersteuerung. In jeder der hierin beschriebenen beispielhaften Ausführungsformen kann mehr als ein einziger Kanal zwischen der Speichersteuerung und dem Speicherchip vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal gezeigt ist.
  • Die Speichersteuerung 123 schließt eine Hostschnittstelle 106 ein, welche die elektrische Schnittstelle mit der Hostvorrichtung 104 oder einer Speichersteuerung der nächsten Ebene bereitstellt. Die Hostschnittstelle 106 kann einen PHY einschließen. In einer beispielhaften Ausführungsform schließt die Hostschnittstelle 106 Hardware ein, die mit PCle konform ist. Die Hostschnittstelle 106 ist jedoch nicht auf PCle beschränkt. Die Hostschnittstelle 106 unterstützt üblicherweise den Transfer von Daten, Steuersignalen und Taktsignalen. Die Hostschnittstelle kann eingerichtet sein, um die Kommunikation mit der Hostvorrichtung 104 bereitzustellen.
  • Die Speichersteuerung 123 weist ein HMB-Handhabungsmodul 750 auf. In einigen Gesichtspunkten kann das HMB-Handhabungsmodul 750 als MMU bezeichnet werden. Das HMB-Handhabungsmodul 750 ist eingerichtet, um Anforderungen für eine HMB-Zuweisung 770 zu stellen. Das HMB-Handhabungsmodul 750 kann eingerichtet sein, um eine anfängliche Zuweisung von HMB während der Initialisierung der Speichersteuerung anzufordern. Das HMB-Handhabungsmodul 750 ist eingerichtet, um in einer beispielhaften Ausführungsform während der Laufzeit (z. B. nach dem Initialisieren der Speichersteuerung) eine Anforderung für zusätzliches HMB 770 zu stellen. In einer beispielhaften Ausführungsform wird die HMB-Zuweisung nach einem ordnungsgemäßen oder nicht ordnungsgemäßen Abschalten der Speicherungsvorrichtung freigegeben, woraufhin das HMB-Handhabungsmodul 750 eine weitere Anforderung für eine HMB-Zuweisung stellen kann, wenn die Speicherungsvorrichtung wieder eingeschaltet wird. In einer anderen beispielhaften Ausführungsform kann das HMB-Handhabungsmodul 750 eingerichtet sein, um den zusätzlichen HMB 770 freizugeben, nachdem die Speichersteuerung 123 mit der Verwendung des zusätzlichen HMB 770 fertig ist.
  • Der Hostspeicher 103 kann HMB-Zeiger speichern, die Datenpufferzeiger auf den HMB 770 sind. Zum Beispiel kann jeder HMB-Zeiger auf eine Speichereinheit zeigen. Jede Speichereinheit kann eine Seite sein, wobei die Seitengröße durch die Hostvorrichtung 104 festgelegt wird. In einer beispielhaften Ausführungsform können die HMB-Zeiger Deskriptoren des Hostspeicherpuffers gemäß dem NVMe-Protokoll sein. Die HMB-Zeiger sind jedoch nicht auf das NVMe-Protokoll beschränkt. Die HMB-Zeiger können durch den HMB-Zuweiser 744 in der Hostvorrichtung 104 bereitgestellt werden.
  • In einigen Gesichtspunkten kann das HMB-Handhabungsmodul 750 eine Anforderung für eine HMB-Zuweisung mit einem minimalen und/oder maximalen Bereich stellen. Wenn das HMB-Handhabungsmodul 750 bestimmt, dass die gewährte HMB-Zuweisung einer geringeren als der angeforderten Mindestzuweisung (z. B. einer teilweisen HMB-Zuweisung) entspricht, kann das HMB-Handhabungsmodul 750 die HMB-Zuweisung nicht akzeptieren und anschließend eine neue Anforderung einleiten. Wenn andererseits das HMB-Handhabungsmodul 750 die gewährte HMB-Zuweisung akzeptiert, kann das HMB-Handhabungsmodul 750 keine neue Anforderung zum Ändern einer angeforderten HMB-Zuweisungsgröße initiieren. In anderen Gesichtspunkten kann der Hostspeicher 103 zum Speichern von Protokollseiten verwendet werden, die zum Speichern verschiedener Informationen verwendet werden können, die an die Hostvorrichtung 104 zu melden sind. In einer beispielhaften Ausführungsform wird eine Protokollseite verwendet, um Informationen zum Anfordern einer Änderung der Menge an HMB 770 zu speichern. Eine Protokollseite kann beispielsweise die Anforderung von zusätzlichem HMB enthalten oder einen Abschnitt des HMB 770 zurück an die Hostvorrichtung 104 freigeben.
  • Der HMB 770 kann zum Speichern von Verwaltungstabellen verwendet werden. In einer beispielhaften Ausführungsform schließen die Verwaltungstabellen L2P-Tabellen (logische zu physischen Abbildungen) und P2L-Tabellen (physische zu logischen Abbildungen) ein. Die Speichersteuerung 123 kann die Verwaltungstabellen verwenden, um logische Adressen (LAs) auf physische Adressen (PAs) abzubilden. Solche Verwaltungstabellen können verwendet werden, um LAs direkt auf die PAs abzubilden, oder LAs können auf Zwischen- oder virtuelle Adressen abgebildet werden, die auf PAs abgebildet werden. In einigen beispielhaften Ausführungsformen sind die logischen Adressen logische Blockadressen und die physikalischen Adressen sind physikalische Blockadressen. Andere Variationen sind ebenfalls möglich.
  • Die Verwaltungstabellen können auch verwendet werden, um das Zwischenspeichern von Daten an anderen Orten als in dem nicht-flüchtigen Speicher 110 zu verwalten. In einer beispielhaften Ausführungsform speichert die Speichersteuerung 123 Daten in dem HMB 770 zwischen. Zum Beispiel kann die Speichersteuerung 123 den HMB 770 zum Zwischenspeichern von Daten verwenden, die einigen LAs (oder einem Bereich von LAs) zugeordnet sind. Die Verwaltungstabellen können auch verwendet werden, um das Zwischenspeichern von Daten in dem HMB 770 zu verwalten. In einer beispielhaften Ausführungsform speichert die Speichersteuerung 123 Daten in dem flüchtigen Speicher 118 zwischen. Zum Beispiel kann die Speichersteuerung 123 den flüchtigen Speicher 118 zum Zwischenspeichern von Daten verwenden, die einigen LAs (oder einem Bereich von LAs) zugeordnet sind. Die Verwaltungstabellen können auch verwendet werden, um das Zwischenspeichern von Daten in dem flüchtigen Speicher 118 zu verwalten. Der flüchtige Speicher 118 ist in einer beispielhaften Ausführungsform flüchtiger Speicher (wie flüchtiger Speicher 118 in 1).
  • Die DMA-Logik 753 ist eingerichtet, um die DMA-Übertragung von Daten zwischen dem nicht-flüchtigen Speicher 110 und dem Hostspeicher 103 in der Hostvorrichtung 104 zu steuern. Die DMA-Logik 753 kann einen direkten Speicherzugriff auf den HMB 770 vornehmen. Zum Beispiel kann die DMA-Logik 753 Daten in dem HMB 770 zwischenspeichern. Zum Beispiel kann die DMA-Logik 753 auf Daten aus dem HMB 770 zugreifen und sie in den flüchtigen Speicher 118 (z. B. Zwischenspeicher 122 von 1) übertragen. Die DMA-Logik 753 kann HMB-Zeiger verwenden, um auf den richtigen Standort in dem HMB 770 zuzugreifen.
  • Die Speichersteuerung 123 kann eine Speicherschnittstelle einschließen, welche die Befehlssequenzen an den nicht-flüchtigen Speicher 110 liefert und Statusinformationen von dem nicht-flüchtigen Speicher 110 empfängt. Die Speicherschnittstelle kann eingerichtet sein, um auf nicht-flüchtigen Speicher auf dem nicht-flüchtigen Speicher 110 zuzugreifen. Die Speicherschnittstelle kann eine elektrische Verbindung zu den Leitungen 718 bereitstellen. Die Speicherschnittstelle kann die Zeitsteuerung der Signale über die Leitungen 718 zu dem nicht-flüchtigen Speicher 110 steuern. In einer beispielhaften Ausführungsform kann die Speicherschnittstelle eine DDR-Schnittstelle (Double Data Rate) sein. In einigen beispielhaften Ausführungsformen ist die Speicherschnittstelle eine Flash-Speicherschnittstelle. Jedoch sind die Speicherzellen in dem nicht-flüchtigen Speicher 110 nicht auf Flash-Speicher beschränkt. Somit ist die Speicherschnittstelle nicht auf eine Flash-Speicherschnittstelle beschränkt.
  • Die Komponenten der in 7 dargestellten Speichersteuerung 123 können die Form einer verpackten funktionalen Hardwareeinheit (z. B. einer elektrischen Schaltlogik), die für die Verwendung mit anderen Komponenten ausgelegt ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der von einem (Mikro-)Prozessor oder einer Verarbeitungsschaltlogik (oder einem oder mehreren Prozessoren) ausführbar ist, die normalerweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer eigenständigen Hardware- oder Softwarekomponente, die z. B. eine Schnittstelle zu einem größeren System bildet, annehmen. Zum Beispiel können alle Module oder ein Abschnitt jedes Moduls (einschließlich, aber nicht beschränkt auf das HMB-Handhabungsmodul 750, die DMA-Logik 753, die Hostschnittstelle 106) einen ASIC, ein FPGA, eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder eine Kombination davon einschließen. Alternativ oder zusätzlich können alle Module oder ein Abschnitt jedes Moduls Software einschließen oder umfassen, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen oder mehrere Prozessoren zu programmieren, damit die Speichersteuerung 123 die hierin beschriebenen Funktionen durchführt. Die in 7 dargestellte Architektur ist eine beispielhafte Ausführungsform, die Komponenten der Speichersteuerung 123 (z. B. Zwischenspeicher 122) verwenden kann (oder nicht).
  • Wie in 7 beschrieben, verwendet die Speichersteuerung 123 Speicher, um Abbildungsinformationen für die in NVM 110 gespeicherten Daten zwischenzuspeichern. Die Größe des Speichers in der Speichersteuerung 123 reicht jedoch in der Regel nicht aus, um zu ermöglichen, dass ein wesentlicher Abschnitt von NAND-Abbildungstabellen zwischengespeichert wird. Infolgedessen verwendet die Speicherungsvorrichtung 102 (z. B. die Speichersteuerung 123) das HMB-Merkmal, um Abbildungsinformationen für Dutzende von Gigabyte Flash zwischenzuspeichern, was für viele Verbraucherarbeitslasten ausreichend ist.
  • In einer beispielhaften Ausführungsform sendet die Speichersteuerung 123 eine Anforderung für eine HMB-Zuweisung (z. B. die HMB-Zuweisungsanforderung 730) an die Hostvorrichtung 104. Die HMB-Zuweisung kann angefordert werden, um beliebige interne Module der Speichersteuerung 123 (nicht gezeigt), wie z. B. eine Speicheradresstabelle (SAT), eine inverse SAT (iSAT), exklusive OR (XOR) Paritätsdaten, eine Steuerungsadresstabelle (CAT), eine Verlagerung (RLC) und andere zu bedienen. In einigen Gesichtspunkten kann die HMB-Zuweisungsanforderung 730 eine Anforderung von einem internen Modul einschließen, sodass mehrere HMB-Zuweisungsanforderungen im Namen mehrerer interner Module der Speichersteuerung 123 an die Hostvorrichtung 104 gesendet werden können, wobei sich jede Anforderung auf eines der internen Module bezieht. In anderen Gesichtspunkten kann die HMB-Zuweisungsanforderung 730 eine aggregierte Anforderung von mehreren internen Modulen einschließen, wobei die HMB-Zuweisungsanforderung 730 die angeforderte Größe des HMB 770 für jedes der internen Module angibt. Wenn die Hostvorrichtung 104 eine vollständig angeforderte HMB-Zuweisung gewährt, kann ein Bereich in dem flüchtigen Speicher 118 (z. B. statischer Direktzugriffsspeicher (SRAM)) der Speicherungsvorrichtung 102 für das angeforderte Modul (z. B. SAT, iSAT, XOR, CAT, RLC usw.) nicht verwendet werden.
  • Die vorliegende Offenbarung stellt ein Verfahren zum Verwalten der HMB-Zuweisung zum Verbessern der SSD-Leseleistung bereit. Gemäß der vorliegenden Technologie wird bei erfolgreicher Zuweisung des HMB 770 die zugewiesene HMB-Größe für das jeweilige Modul von der Speichersteuerung 123 bestimmt. Die Zuweisung des flüchtigen Speichers 118 (z. B. SRAM/DRAM) für das entsprechende Modul wird abgerufen, und es wird bestimmt, ob der SRAM/DRAM-Bereich wiederverwendbar ist. Wenn bestimmt wird, dass der Bereich des flüchtigen Speichers 118 wiederverwendbar ist, berechnet die Speichersteuerung 123 die Größe des Bereichs des wiederverwendbaren flüchtigen Speichers 118 und lädt bevorzugte Datensätze (z. B. logische Abbildung eines Datensegments von LBAs für 32 MB Hostdaten in 32 KB) in den Bereich des wiederverwendbaren flüchtigen Speichers 118, um die sequentielle Leseleistung oder die zufällige Leseleistung zu verbessern. Das Laden von Datensätzen kann von der Speichersteuerung 123 basierend auf einem aktuellen Muster von Host-Lesevorgängen entschieden werden, und das Laden kann für eine Anwendung angepasst werden, um die beste Leseleistung zu erhalten. Wenn der zugewiesene HMB-Bereich freigegeben werden soll, kann die Speichersteuerung 123 bestimmen, welche Module den zugewiesenen Bereich in dem HMB 770 verwenden und ob der entsprechende zugewiesene Bereich des flüchtigen Speichers 118 wiederverwendet wird. Wenn die Speichersteuerung 123 eine Freigabe des wiederverwendeten Bereichs des flüchtigen Speichers 118 bestimmt, kann die Speichersteuerung 123 alle Datensätze aus dem Bereich des flüchtigen Speichers 118 entfernen und den zugewiesenen HMB-Bereich 770 zurück an die Hostvorrichtung 104 freigeben. Der Algorithmus zum Laden von Datensätzen wird weiterhin basierend auf den Host-Lese-/Schreibmustern angepasst, um das Laden und Entfernen von Datensätzen aus dem Bereich des flüchtigen Speichers 118 zu reduzieren.
  • Wenn mehrere Module der Speichersteuerung 123 eine gewährte Zuweisung des HMB 770 für ihre internen Operationen verwendet haben (als eine einzige Anforderung und die HMB-Zuweisung wird für die Speicherungsvorrichtung gewährt), kann das HMB-Handhabungsmodul 750 alle Datensegmente der freigegebenen Bereiche des flüchtigen Speichers 118 zu einem logischen Datensegment zusammenfassen und diesen effektiv zum Verbessern der Host-Lesevorgänge nutzen.
  • 8 ist ein Flussdiagramm, das einen beispielhaften Prozess 800 für die Speicherhandhabung während der HMB-Zuweisung in der Speicherungsvorrichtung 102 von 1 veranschaulicht. In 8 kann eine Speichersteuerung 123 basierend darauf handeln, ob ihre Anforderung für eine HMB-Zuweisung von der Hoststeuerung 780 gewährt wird oder nicht. In einigen Gesichtspunkten kann der Prozess 800 während der Initialisierungsphase der Speichersteuerung 123 durchgeführt werden. In anderen Gesichtspunkten kann der Prozess 800 während einer Laufzeitphase durchgeführt werden.
  • Einige der Blöcke können von der Hostvorrichtung 104 (z. B. von der Hoststeuerung 780) durchgeführt werden, während andere von der Speicherungsvorrichtung 102 (z. B. von der Speichersteuerung 123) durchgeführt werden. Die Initialisierungsphase bezieht sich auf das Initialisieren der Speichersteuerung 123. In einer Ausführungsform wird die Initialisierungsphase gemäß einem NVMe-Protokoll durchgeführt. Jedoch ist die Initialisierungsphase nicht auf NVMe beschränkt. Die Initialisierungsphase kann nach einer Leistung auf die Rücksetzung der Speicherungsvorrichtung 102 durchgeführt werden. Die Initialisierungsphase kann verwendet werden, um Werte in Registern wie etwa PCIe-Registern einzurichten.
  • Bei 802 wird bestimmt, ob die Speicherungsvorrichtung 102 die HMB-Zuweisung unterstützt. In einigen Gesichtspunkten kann der Block 802 von der Hostvorrichtung 104 (z. B. von der Hoststeuerung 780) durchgeführt werden. In anderen Gesichtspunkten kann der Block 802 von der Speicherungsvorrichtung 102 (z. B. von der Speichersteuerung 123) durchgeführt werden. Wenn die Speicherungsvorrichtung 102 die HMB-Zuweisung unterstützt, fährt der Prozess 800 mit Block 804 fort. Andernfalls wird der Prozess 800 beendet.
  • Bei 804 fordert die Speichersteuerung 123 von der Hoststeuerung 780 eine bestimmte Menge an Hostspeicher 103 für die Verwendung durch die Speichersteuerung 123 an (z. B. HMB-Zuweisungsanforderung 730). In einer Ausführungsform stellt die Speichersteuerung 123 eine Anforderung in Übereinstimmung mit einer Version des NVMe-Protokolls. In einer Ausführungsform fordert die Speichersteuerung 123 die Zuweisung des HMB 770 gemäß einer Version des NVMe-Protokolls an. Die Speichersteuerung 123 kann eine angeforderte Größe des Hostspeichers 103 angeben, die für die Verwendung durch die Speichersteuerung 123 zugewiesen werden soll. In einigen Gesichtspunkten kann die Speichersteuerung 123 eine angeforderte bevorzugte Größe des HMB 770 angeben. In einigen Gesichtspunkten kann die Speichersteuerung 123 eine Mindestgröße des HMB 770 angeben, die von der Speichersteuerung 123 benötigt wird.
  • Block 804 schließt das Zuweisen durch die Hoststeuerung 780 eines Bereichs des Hostspeichers 103 für die Verwendung durch die Speichersteuerung 123 ein. Block 804 kann von der Hoststeuerung 780 als Reaktion auf die Anforderung der Speichersteuerung 123 in Block 804 durchgeführt werden. In einer Ausführungsform kann die Hoststeuerung 780 eine Deskriptorliste erzeugen, die Zeiger auf den Bereich des Hostspeichers 103 aufweist. In einigen Gesichtspunkten kann die Deskriptorliste Zeiger auf einen oder mehrere Bereiche des HMB 770 einschließen.
  • Bei 806 kann die Speichersteuerung 123 bestimmen, ob die angeforderte HMB-Zuweisung erfolgreich war. Wenn die HMB-Zuweisung erfolgreich war, fährt der Prozess 800 mit Block 808 fort. Andernfalls kann der Prozess 800 beendet werden. Block 806 schließt ein, dass die Hoststeuerung 780 meldet, ob die Zuweisung des Hostspeichers 103 an die Speichersteuerung 123 erfolgreich war. In einigen Gesichtspunkten sendet die Hoststeuerung 780 eine HMB-Zuweisungsantwort (z. B. HMB-Zuweisungsantwort 732 in 7), die angibt, ob die HMB-Zuweisung erfolgreich war. In einer Ausführungsform sendet die Hoststeuerung 780 einen Befehl an die Speichersteuerung 123, um die Zuweisung zu melden. Zum Beispiel kann die Hoststeuerung 780 angeben, welchem internen Modul der Speichersteuerung 123 zumindest ein Abschnitt des HMB 770 zugewiesen wurde. In einem anderen Beispiel kann die Hoststeuerung 780 eine gesamte HMB-Zuweisung angeben, die einer gesamten zugewiesenen Größe des HMB 770 zur Verwendung der Speichersteuerung 123 entspricht.
  • Block 806 kann eine Entscheidung einschließen, basierend darauf, ob die Hoststeuerung 780 die Anforderung der HMB-Zuweisung 730 gewährt. Es kann drei Ergebnisse geben, basierend auf dem Grad, in dem die Hoststeuerung 780 die Anforderung gewährt. Die Hostvorrichtung 104 kann die Anforderung der HMB-Zuweisung 730 vollständig gewähren, was bedeutet, dass die Hoststeuerung 780 die gesamte angeforderte Zuweisungsmenge von HMB 770 bereitstellt. In dieser Hinsicht stellt eine vollständige Gewährung der Anforderung für die HMB-Zuweisung 730 eine erfolgreiche HMB-Zuweisung dar. Die Hoststeuerung 780 kann die Anforderung der HMB-Zuweisung 730 ablehnen, was bedeutet, dass die Hoststeuerung 780 die angeforderte Zuweisung von HMB 770 nicht gewährt. In dieser Hinsicht stellt eine Ablehnung der Anforderung der HMB-Zuweisung 730 eine erfolglose HMB-Zuweisung dar. Die Hoststeuerung 780 kann die Anforderung der HMB-Zuweisung 730 teilweise gewähren, was bedeutet, dass die Hoststeuerung 780 die Zuweisung eines Abschnitts der angeforderten Menge des HMB 770 gewähren kann. In dieser Hinsicht stellt eine teilweise Gewährung der Anforderung der HMB-Zuweisung 730 eine erfolgreiche HMB-Zuweisung dar. Wenn die Hostvorrichtung 104 die Anforderung der HMB-Zuweisung 730 vollständig gewährt, verwendet die Speichersteuerung 123 den zugewiesenen HMB 770 zum Durchführen einer Aufgabe. Zum Beispiel verwendet die Speichersteuerung 123 den zugewiesenen HMB 770 zum Durchführen einer Operation der Speicherungsvorrichtung (z. B. Speicherbereinigung).
  • Bei Block 808 weist die Speichersteuerung 123 einen Bereich des flüchtigen Speichers gemäß dem zugewiesenen HMB aus der gesamten HMB-Zuweisung für ein jeweiliges Modul der Speichersteuerung 123 basierend auf einer entsprechenden Priorität des jeweiligen Moduls zu. In dieser Hinsicht kann die Speichersteuerung 123 entscheiden, wie der zugewiesene HMB des jeweiligen Moduls genutzt werden soll, indem ein Bereich des flüchtigen Speichers zugewiesen wird, um zu bestimmen, ob die SSD-Leseleistung während der HMB-Zuweisung verbessert werden kann. Im Gegensatz dazu war es bei herkömmlichen Ansätzen erforderlich, dass ein SRAM-Bereich in einer Speicherungsvorrichtung, der einem anforderten Modul zugewiesen wurde, als Reaktion auf eine vollständig angeforderte HMB-Zuweisung nicht effektiv genutzt werden konnte. In einigen Gesichtspunkten kann jedes interne Modul der Speichersteuerung 123 eine andere Priorität aufweisen. In einigen Gesichtspunkten kann die Priorität auf einem Typ des internen Moduls basieren. In einigen Gesichtspunkten kann die Priorität auf einer Anzahl von Arbeitslasten basieren, die mit dem internen Modul verarbeitet werden, sodass die Priorität mit zunehmender Anzahl von Arbeitslasten steigt.
  • Bei Block 810 ruft die Speichersteuerung 123 den zugewiesenen Bereich des flüchtigen Speichers 118 für das jeweilige Modul ab. Zum Beispiel kann die Speichersteuerung 123 einen zugewiesenen Bereich des Zwischenspeichers 122 (z. B. SRAM, DRAM) abrufen. Der Bereich in dem flüchtigen Speicher 118 kann einem bestimmten internen Modul der Speichersteuerung 123 zugewiesen werden. Weitere Einzelheiten der Zuweisung des flüchtigen Speichers 118 für die jeweiligen Module werden unter Bezugnahme auf 9A erörtert.
  • Bei 812 bestimmt die Speichersteuerung 123, ob der abgerufene zugewiesene Bereich des flüchtigen Speichers 118 wiederverwendbar ist. Wenn der abgerufene zugewiesene Bereich des flüchtigen Speichers 118 wiederverwendbar ist, fährt der Prozess 800 mit Block 814 fort. Andernfalls kann der Prozess 800 an diesem Punkt beendet werden.
  • In einigen Gesichtspunkten kann, wenn die Hoststeuerung 780 die angeforderte HMB-Zuweisung vollständig gewährt, die Menge des freigegebenen flüchtigen Speichers im Wesentlichen der vollen Menge des von dem internen Modul verwendeten flüchtigen Speichers entsprechen. Wenn zum Beispiel ein internes Modul 500 KB flüchtigen Speicher verwendet und die HMB-Zuweisung angibt, dass dem internen Modul 500 KB Hostspeicher zugewiesen sind, kann die Speichersteuerung 123 bestimmen, dass 500 KB durch die HMB-Zuweisung freigegeben werden können. Die Speichersteuerung 123 kann bestimmen, dass 500 KB zum Durchführen einer oder mehrerer Leseoperationen ausreichen, was die SSD-Leseleistung für das interne Modul verbessern würde, und entscheiden, dass der abgerufene zugewiesene Bereich des flüchtigen Speichers 118 wiederverwendbar ist. In einem anderen Gesichtspunkt, wenn die Hoststeuerung 780 eine Teilmenge der angeforderten HMB-Zuweisung gewährt, kann die Menge des freigegebenen flüchtigen Speichers einem Abschnitt der vollen Menge des von dem internen Modul verwendeten flüchtigen Speichers entsprechen. Wenn zum Beispiel ein internes Modul 50 KB flüchtigen Speicher verwendet und die HMB-Zuweisung angibt, dass dem internen Modul 4 KB Hostspeicher zugewiesen sind, kann die Speichersteuerung 123 bestimmen, dass 4 KB durch die HMB-Zuweisung freigegeben werden können. Die Speichersteuerung 123 kann bestimmen, dass 4 KB zum Durchführen einer oder mehrerer Leseoperationen nicht ausreichen, was die SSD-Leseleistung für das interne Modul verbessern würde, und entscheiden, dass der abgerufene zugewiesene Bereich des flüchtigen Speichers 118 nicht wiederverwendbar ist. In einem anderen Beispiel, wenn ein internes Modul 100 KB flüchtigen Speicher verwendet und die HMB-Zuweisung angibt, dass 90 KB Hostspeicher dem internen Modul zugewiesen sind, kann die Speichersteuerung 123 bestimmen, dass 90 KB durch die HMB-Zuweisung freigegeben werden können. Die Speichersteuerung 123 kann bestimmen, dass 90 KB zum Durchführen einer oder mehrerer Leseoperationen ausreichen, was die SSD-Leseleistung für das interne Modul verbessern würde, und entscheiden, dass der abgerufene zugewiesene Bereich des flüchtigen Speichers 118 wiederverwendbar ist. In einigen Gesichtspunkten kann der Grad, zu dem ein freigegebener Bereich in dem flüchtigen Speicher 118 wiederverwendbar ist, auf einem konfigurierbaren Schwellenwert basieren. Zum Beispiel kann die Speichersteuerung 123 bestimmen, dass der freigegebene Bereich des flüchtigen Speichers wiederverwendbar ist, wenn der freigegebene Bereich den konfigurierbaren Schwellenwert überschreitet. In einigen Gesichtspunkten kann der konfigurierbare Schwellenwert eine erforderliche Menge an Speicher darstellen, um die Leistung einer Operation der Speicherungsvorrichtung zu erleichtern, die einem Speichersteuerungsmodul zugeordnet ist.
  • Bei 814 berechnet die Speichersteuerung 123 die Größe des wiederverwendbaren Bereichs des flüchtigen Speichers 118, wenn der abgerufene zugewiesene Bereich in dem flüchtigen Speicher 118 wiederverwendbar ist. Bei der Berechnung kann es sich um eine detailliertere Berechnung handeln als bei der in Block 812 verwendeten kursorischen Berechnung. Die Berechnung des wiederverwendbaren Bereichs kann verwendet werden, um zu bestimmen, ob ein anschließendes Laden von Abbildungstabellen und/oder Pufferzuweisungen für die Hostvorrichtung 104 durchgeführt werden kann.
  • Bei 816 kann die Speichersteuerung 123 abhängig von der Berechnung des wiederverwendbaren Bereichs eine iSAT-Tabelle und/oder Verlagerungsinformationen laden. Die zum Laden von iSAT/RLC verwendete Menge an flüchtigem Speicher kann bis zu der bei Block 814 berechneten Menge entsprechen.
  • Bei 818 kann die Speichersteuerung 123 abhängig von der Berechnung des wiederverwendbaren Bereichs Datensätze zur Verbesserung der zufälligen Leseleistung laden. Die zum Laden von Datensätzen für die zufällige Leistung verwendete Menge an flüchtigem Speicher kann bis zu der bei Block 814 berechneten Menge entsprechen.
  • Bei 820 kann die Speichersteuerung 123 abhängig von der Berechnung des wiederverwendbaren Bereichs Datensätze zur Verbesserung der sequentiellen Leseleistung laden. Die zum Laden von Datensätzen für die sequentielle Leistung verwendete Menge an flüchtigem Speicher kann bis zu der bei Block 814 berechneten Menge entsprechen.
  • Bei 822 kann die Speichersteuerung 123 abhängig von der Berechnung des wiederverwendbaren Bereichs Datensätze zur Verbesserung der zufälligen und sequenziellen Leseleistung laden. Die zum Laden von Datensätzen für die zufällige und sequentielle Leistung verwendete Menge an flüchtigem Speicher kann bis zu der bei Block 814 berechneten Menge entsprechen.
  • Bei 824 kann die Speichersteuerung 123 abhängig von der Berechnung des wiederverwendbaren Bereichs den wiederverwendbaren Bereich für die Host-Lese- und/oder Schreibpufferung zuweisen. Die zum Zuweisen von flüchtigem Speicher für die Host-Lese-/Schreibpufferung verwendete Menge kann bis zu der bei Block 814 berechneten Menge entsprechen.
  • 9 ist ein Flussdiagramm, das einen beispielhaften Prozess 900 für die Freigabe der HMB-Zuweisung in der Speicherungsvorrichtung 102 von 1 veranschaulicht. Die Speichersteuerung 123 kann wiederverwendbaren flüchtigen Speicher für Verbesserungen der SSD-Lese-/Schreibleistung nutzen und entscheiden, den zugewiesenen HMB an die Hostvorrichtung 104 freizugeben.
  • Bei 902 entscheidet die Speichersteuerung 123, den zugewiesenen HMB an die Hostvorrichtung 104 freizugeben. In einigen Gesichtspunkten kann die Speichersteuerung 123 bestimmen, dass ein entsprechendes internes Modul mit der Verwendung des wiederverwendeten Bereichs in dem flüchtigen Speicher 118 fertig ist, und entscheiden, einen Befehl an die Hostvorrichtung 104 auszugeben, der angibt, dass die Speichersteuerung 123 beabsichtigt, den entsprechenden zugewiesenen HMB freizugeben.
  • Bei 904 kann die Speichersteuerung 123 identifizieren, welche Module die HMB-Zuweisung verwenden. Die Speichersteuerung 123 kann bestimmen, welche Module die HMB-Zuweisung verwenden, indem Informationen aus der HMB-Zuweisungsantwort 632 erhalten werden, die angeben, ob eine angeforderte HMB-Zuweisung für ein entsprechendes internes Modul erfolgreich war. In anderen Gesichtspunkten kann die Speichersteuerung 123 eine Bitmap halten, die angibt, welche internen Module ihre jeweiligen HMB-Zuweisungen verwendet haben.
  • Bei 906 bestimmt die Speichersteuerung 123, ob der Bereich in dem flüchtigen Speicher 118, welcher der HMB-Zuweisung für das jeweilige Modul zugeordnet ist, wiederverwendet wird. Zum Beispiel kann ein durch die HMB-Zuweisung freigegebener Bereich in dem flüchtigen Speicher 118, der als ausreichend für die Wiederverwendung durch die Speichersteuerung 123 bestimmt wird, von der Speichersteuerung 123 in einer Bitmap markiert werden. Wenn bestimmt wird, dass der Bereich in dem flüchtigen Speicher 118 wiederverwendet werden soll, fährt der Prozess 900 mit Block 908 fort. Andernfalls fährt der Prozess 900 mit Block 910 fort.
  • Bei 908 kann die Speichersteuerung 123 alle Datensätze aus dem wiederverwendeten Bereich in dem flüchtigen Speicher 118 entfernen, wenn die Speichersteuerung 123 bestimmt, dass der vorliegende Bereich in dem flüchtigen Speicher 118 wiederverwendet wird. In anderen Gesichtspunkten kann die Speichersteuerung 123 alle Datensätze aus dem Bereich des erweiterten flüchtigen Speichers (z. B. RAM) für Host-Lese- und Schreibpuffer entfernen. Bei 910 gibt die Speichersteuerung 123 den zugewiesenen HMB wieder an die Hostvorrichtung 104 frei.
  • 10A und 10B sind Konzeptdiagramme, die ein Beispiel für die Handhabung von flüchtigem Speicher in der Speicherungsvorrichtung 102 von 1 veranschaulichen. In 10A schließt die Speichersteuerung 123 ein oder mehrere interne Module ein, die eingerichtet sind, um spezifische Operationen der Speicherungsvorrichtung durchzuführen. Zum Beispiel schließt die Speichersteuerung 123 mehrere interne Module, wie SAT, iSAT, XOR, CAT-Steckplätze, komprimierte CAT-Steckplätze, RLC und andere Module (z. B. Modul N-1, Modul N) ein, wobei N eine vordefinierte Anzahl der Module der Speichersteuerung ist. Zum Beispiel kann sich ein SAT auf eine logische zu physische Adressabbildung beziehen. Ein iSAT kann sich auf eine physische zu logische Adressabbildung beziehen. Ein Algorithmus für die Speicherbereinigung kann auch eine physische zu logische Adressabbildung verwenden, um zu ermitteln, welche Speicherblöcke verlagert werden müssen. Die physische zu logische Adressabbildung wird hierin manchmal auch als „Umkehrabbildung“ oder iSAT bezeichnet. In anderen Beispielen ist das XOR oder „exklusive OR“ eine Zuverlässigkeitsverbesserung, welche die Zuverlässigkeit von NAND-Komponenten erhöhen kann. Das XOR-Schema ist nach der booleschen Logikfunktion benannt und ermöglicht einen Austausch von bis zu einem ganzen defekten NAND-Chip in einer Komponente durch XOR-Operationen. Das XOR-Schema kann Schutz vor Chip-Fehlern und extrinsischen UBER-Ereignissen (Uncorrectable Bit Error Rate) bereitstellen, indem ganze oder defekte Abschnitte eines NAND-Chip-Arrays unter Verwendung eines Ersatz-NAND-Chip-Arrays ausgetauscht werden, das mit rekonstruierten Daten über die XOR-Paritätsdatenbits aufgebaut werden kann. Das Hauptziel des XOR-Schemas in einer SSD ist das Reduzieren von katastrophalem Datenverlustausfall und der durchschnittlichen Ausfallrate. Dies wird unter Verwendung der booleschen XOR-Logikfunktion erreicht, wobei A XOR B XOR B = A. Die XOR-Verknüpfung der von dem Host eingehenden Datenpakete erzeugt XOR-Paritätsbits, die später bei Bedarf zum Rekonstruieren der Daten verwendet werden können. Durch die Speicherung des Ergebnisses von A XOR B als Paritätsdaten ermöglicht das Schema die Wiederherstellung von A oder B durch XOR-Verknüpfung der Paritätsdaten mit A (zur Wiederherstellung von B) oder B (zur Wiederherstellung von A).
  • Wie in 10A dargestellt, schließt der flüchtige Speicher 118 zugewiesene Bereiche ein, die den jeweiligen internen Modulen zugeordnet sind. Während der HMB-Zuweisung können diese zugewiesenen Bereiche vollständig oder teilweise freigegeben werden. Zum Beispiel kann dem internen SAT-Modul ein erster Bereich in dem flüchtigen Speicher 118 zugewiesen werden, der einen freigegebenen Bereich 1022 einschließt, dem internen XOR-Modul kann ein zweiter Bereich in dem flüchtigen Speicher 118 zugewiesen werden, der einen freigegebenen Bereich 1024 einschließt, dem internen CAT-Steckplätze-Modul kann ein dritter Bereich in dem flüchtigen Speicher 118 zugewiesen werden, der einen freigegebenen Bereich 1026 einschließt, und einem weiteren internen Modul (z. B. Modul N-1) kann ein vierter Bereich in dem flüchtigen Speicher 118 zugewiesen werden, der einen freigegebenen Bereich 1028 einschließt. Jede der freigegebenen Regionen 1022, 1024, 1026, 1028 kann nicht aneinander angrenzen und zugewiesenen Speicherbereichen des jeweiligen internen Moduls entsprechen. In einigen Gesichtspunkten kann jeder der freigegebenen Bereiche als ein Block freigegebener Speicher bezeichnet werden.
  • In 10B kann die Speichersteuerung 123 bestimmen, dass mehrere Module der Speichersteuerung 123 die Zuweisung des HMB 770 für ihre internen Operationen erhalten haben. Das HMB-Handhabungsmodul 750 der Speichersteuerung 123 kann alle Blöcke des freigegebenen flüchtigen Speichers zu einem logischen Block zusammenfassen und den kombinierten Block des freigegebenen Speichers effektiv zur Verbesserung der Host-Leseleistung nutzen. Zum Beispiel kann das HMB-Handhabungsmodul 750 die freigegebenen Bereiche 1022, 1024, 1026, 1028 zu einem zusammenhängenden logischen Block des verfügbaren flüchtigen Speichers 1030 kombinieren. Die verbleibenden Bereiche des flüchtigen Speichers 118 können reorganisiert werden, um einen logischen Block des verwendeten flüchtigen Speichers 1032 zu bilden.
  • 11 ist ein Flussdiagramm, das einen Prozess 1100 für die Handhabung der Hostspeicherpufferzuweisung, wie von der Speicherungsvorrichtung von 1 durchgeführt, veranschaulicht. Zum Beispiel kann der Prozess 1100 in einer Speicherungsvorrichtung 102 wie der in 1 veranschaulichten ausgeführt werden. Jeder der Schritte im Flussdiagramm kann mit der nachstehend beschriebenen Steuerung (z.B. Steuerung 123), mit einer Komponente oder einem Modul der Steuerung oder mit anderen geeigneten Mitteln gesteuert werden.
  • Wie in Block 1102 dargestellt, kann die Steuerung 123 bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung 114. Zum Beispiel kann, unter Bezugnahme auf 1, 7, 8 und 9, die Steuerung 123 bestimmen, ob die Speicherungsvorrichtung die HMB-Zuweisung unterstützt. Die Steuerung 123 kann auch an eine Hostvorrichtung eine Anforderung für eine HMB-Zuweisung für ein oder mehrere der Steuerung zugeordnete interne Module senden, wenn bestimmt wird, dass die Speicherungsvorrichtung die HMB-Zuweisung unterstützt. Die Steuerung 123 kann von der Hostvorrichtung auch eine Antwort empfangen, die angibt, ob die HMB-Zuweisung erfolgreich ist. Die Steuerung 123 kann auch den wiederverwendbaren Bereich in dem flüchtigen Speicher zuweisen, welcher der Hostspeicherzuweisung für ein internes Modul der Steuerung aus einer gesamten Hostspeicherzuweisung basierend auf einer entsprechenden Priorität des internen Moduls entspricht. Die Steuerung 123 kann auch den zugewiesenen Bereich in dem flüchtigen Speicher für das interne Modul abrufen. Bei der Bestimmung, dass der zumindest eine Abschnitt in dem flüchtigen Speicher wiederverwendbar ist, kann die Steuerung 123 eine erste Speichermenge berechnen, die in dem zumindest einen Abschnitt des flüchtigen Speichers basierend auf der Hostspeicherzuweisung freigegeben wird, und kann eine zweite Speichermenge bestimmen, die zum Durchführen einer Operation der Speicherungsvorrichtung verwendet wird, die einem internen Modul der Steuerung zugeordnet ist, sodass die Steuerung 123 bestimmen kann, dass die erste Speichermenge größer als die zweite Speichermenge ist, um zu schlussfolgern, dass der freigegebene Bereich wiederverwendbar ist.
  • Wie in Block 1104 dargestellt, kann die Steuerung 123 eine Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher berechnen. Wie in Block 1106 dargestellt, kann die Steuerung 123 eine oder mehrere Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs durchführen.
  • Wie in Block 1108 dargestellt, kann die Steuerung 123 die Hostspeicherzuweisung zurück an die Hostvorrichtung 114 freigeben. Die Steuerung 123 kann auch bestimmen, dass ein zugewiesener Bereich des Hostspeichers, welcher der Hostspeicherzuweisung entspricht, freizugeben ist. Die Steuerung 123 kann identifizieren, welche von einem oder mehreren internen Modulen, die der Steuerung zugeordnet sind, den zugewiesenen Bereich des Hostspeichers verwenden, und bestimmen, ob der wiederverwendbare Bereich in dem flüchtigen Speicher, welcher der Hostspeicherzuweisung zugeordnet ist, von einem identifizierten internen Modul wiederverwendet wird. Die Steuerung 123 kann auch einen oder mehrere Datensätze aus dem wiederverwendbaren Bereich des flüchtigen Speichers entfernen, wenn bestimmt wird, dass der wiederverwendbare Bereich in dem flüchtigen Speicher wiederverwendet werden soll.
  • 12 ist ein Konzeptdiagramm 1200, das ein Beispiel für eine Steuerung 1202 veranschaulicht, die eine Hostspeicherpufferzuweisung in der Speicherungsvorrichtung 102 von 1 handhabt. Die Steuerung 1202 ist mit einem Speicher 1204 in einer Speicherungsvorrichtung gekoppelt. Die Steuerung 1202 kann Modul 1206 einschließen. Zum Beispiel kann Steuerung 1202 der Steuerung 123 entsprechen und Speicher 1204 kann dem flüchtigen Speicher 128 der Speicherungsvorrichtung 102 in 1 entsprechen. Das Modul 1206 kann dem HMB-Handhabungsmodul 750 entsprechen. Die Steuerung 1202 ist auch mit einem Host 1210 gekoppelt, der HMB 1212 einschließt. Zum Beispiel kann der Host 1210 der Hostvorrichtung 104 entsprechen und der HMB 1212 kann dem HMB 770 entsprechen. Die Steuerung 1202 kann in Software, Hardware oder einer Kombination aus Hardware und Software implementiert sein. In einer beispielhaften Ausführungsform ist die Steuerung mit mehreren Softwaremodulen implementiert, die auf einem oder mehreren Prozessoren ausgeführt werden, aber wie Fachleute erkennen werden, kann die Steuerung auf unterschiedliche Weise implementiert werden. Der Fachmann wird leicht verstehen, wie die Steuerung am besten basierend auf den bestimmten Konstruktionsparametern des Systems zu implementieren ist.
  • Die Steuerung 1202 kann ein Modul 1206 einschließen, das ein Mittel zum Bestimmen bereitstellen kann, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung mit einer Hostvorrichtung. Zum Beispiel kann das Modul 1206 den vorstehend bei 1102 beschriebenen Prozess durchführen. In einer Konfiguration kann das Modul 1206 Mittel zum Berechnen einer Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher bereitstellen, z. B. wie in Verbindung mit 1104 beschrieben. In einer Konfiguration kann das Modul 1206 Mittel zum Durchführen einer oder mehrerer Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs bereitstellen, z. B. wie in Verbindung mit 1106 beschrieben. Die Steuerung 1202 kann auch ein Mittel zum Freigeben des zugewiesenen Bereichs des Hostspeichers zurück an die Hostvorrichtung bereitstellen, z. B. wie in Verbindung mit 1108 beschrieben.
  • Dementsprechend verbessert die in der vorliegenden Offenbarung beschriebene Steuerung die Lese- und/oder Schreibleistung der Speicherungsvorrichtung durch die effektive Wiederverwendung des internen flüchtigen Speichers während der HMB-Zuweisung. Zum Beispiel kann die Steuerung unter anderem zusätzliche Datensätze (z. B. logische Abbildung von Blöcken logischer Blockadressen von Hostdaten), inverse Speicheradresstabellen, Verlagerungsinformationen (z. B. Speicherbereinigung) und laden. Auf diese Weise kann die Steuerung eine Anforderung an eine Hostvorrichtung für eine HMB-Zuweisung für jedes ihrer internen Module zum effizienten Handhaben senden. Dementsprechend können Verbesserungen der SSD-Lese- und Schreibleistung mit minimalen Änderungen an der Steuerungslogik und/oder der Schnittstelle zu dem internen Speicher und der Hostvorrichtung erreicht werden.
  • Die verschiedenen Gesichtspunkte dieser Offenbarung werden bereitgestellt, um es einem Fachmann zu ermöglichen, die vorliegende Offenbarung praktisch umzusetzen. Verschiedene Modifikationen an beispielhaften Ausführungsformen, die in dieser Offenbarung dargestellt werden, werden für den Fachmann leicht ersichtlich sein, und die hierin offenbarten Konzepte können auf andere magnetische Speicherungsvorrichtungen ausgedehnt werden. Daher sollen die Ansprüche nicht auf die verschiedenen Gesichtspunkte dieser Offenbarung beschränkt sein, sondern es soll ihnen der volle Schutzumfang in Übereinstimmung mit der Formulierung der Ansprüche gewährt werden. Alle strukturellen und funktionalen Äquivalente zu den verschiedenen Komponenten der beispielhaften Ausführungsformen, die in dieser Offenbarung beschrieben sind und die einem Fachmann bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen durch die Ansprüche eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. § 112(f) in den Vereinigten Staaten oder eines analogen Gesetzes oder Rechtsgrundsatzes in einer anderen Region zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs unter Verwendung des Ausdrucks „Schritt für“ erwähnt wird.

Claims (20)

  1. Speicherungsvorrichtung, aufweisend: einen Speicher, der einen flüchtigen Speicher einschließt; und eine Steuerung, die eingerichtet ist zum: Bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung; Berechnen einer Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher; und Durchführen einer oder mehrerer Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs.
  2. Speicherungsvorrichtung nach Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um zu bestimmen, ob die Speicherungsvorrichtung die Zuweisung des Hostspeicherpuffers (HMB) unterstützt.
  3. Speicherungsvorrichtung nach Anspruch 2, wobei die Steuerung weiterhin eingerichtet ist zum: Senden an die Hostvorrichtung einer Anforderung für eine HMB-Zuweisung für ein oder mehrere der Steuerung zugeordnete interne Module, als Reaktion auf das Bestimmen, dass die Speicherungsvorrichtung die HMB-Zuweisung unterstützt; und Empfangen von der Hostvorrichtung einer Antwort, die angibt, ob die HMB-Zuweisung erfolgreich ist.
  4. Speicherungsvorrichtung nach Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist zum: Zuweisen, aus der Hostspeicherzuweisung, des wiederverwendbaren Bereichs in dem flüchtigen Speicher für ein internes Modul der Steuerung, basierend auf einer entsprechenden Priorität des internen Moduls; und Abrufen des zugewiesenen wiederverwendbaren Bereichs in dem flüchtigen Speicher für das interne Modul.
  5. Speicherungsvorrichtung nach Anspruch 1, wobei die Bestimmung, dass der mindestens eine Abschnitt im flüchtigen Speicher wiederverwendbar ist, aufweist: Berechnen einer ersten Speichermenge, die in dem mindestens einen Abschnitt des flüchtigen Speichers freigegeben wird, basierend auf der Hostspeicherzuweisung; Bestimmen einer zweiten Speichermenge, die verwendet wird, um die eine oder die mehreren Operationen der Speicherungsvorrichtung durchzuführen, die einem internen Modul der Steuerung zugeordnet sind; und Bestimmen, dass die erste Speichermenge größer ist als die zweite Speichermenge.
  6. Speicherungsvorrichtung nach Anspruch 1, wobei die Durchführung der einen oder der mehreren Operationen der Speicherungsvorrichtung das Laden einer oder mehrerer von Informationen aus einer inversen Speicheradresstabelle oder Verlagerungsinformationen, die einer Speicherbereinigungsoperation in dem wiederverwendbaren Bereich des flüchtigen Speichers zugeordnet sind, aufweist.
  7. Speicherungsvorrichtung nach Anspruch 1, wobei die Durchführung der einen oder der mehreren Operationen der Speicherungsvorrichtung das Laden einer oder mehrerer Abbildungstabellen in den wiederverwendbaren Bereich des flüchtigen Speichers, der den einen oder den mehreren Operationen der Speicherungsvorrichtung zugeordnet ist, aufweist.
  8. Speicherungsvorrichtung nach Anspruch 7, wobei die eine oder die mehreren Operationen der Speicherungsvorrichtung eine oder mehrere von einer zufälligen Leseoperation, einer sequenziellen Leseoperation, einer zufälligen Schreiboperation, einer sequenziellen Schreiboperation oder einer Verlagerungsoperation umfassen.
  9. Speicherungsvorrichtung nach Anspruch 1, wobei die Durchführung der einen oder mehreren Operationen der Speicherungsvorrichtung das Zuweisen eines oder mehrerer Hostpuffer aufweist, die der einen oder den mehreren Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers zugeordnet sind.
  10. Speicherungsvorrichtung nach Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist zum: Bestimmen, dass ein zugewiesener Bereich eines Hostspeichers, welcher der Hostspeicherzuweisung entspricht, freizugeben ist; Identifizieren eines oder mehrerer interner Module, die der Steuerung zugeordnet sind, die den zugewiesenen Bereich des Hostspeichers verwenden; Bestimmen, ob der wiederverwendbare Bereich in dem flüchtigen Speicher, welcher der Hostspeicherzuweisung zugeordnet ist, von dem einen oder den mehreren identifizierten internen Modulen wiederverwendet wird; Entfernen eines oder mehrerer Datensätze aus dem wiederverwendbaren Bereich des flüchtigen Speichers, wenn bestimmt wird, dass der wiederverwendbare Bereich wiederverwendet wird; und Freigeben des zugewiesenen Bereichs des Hostspeichers an die Hostvorrichtung.
  11. Speicherungsvorrichtung, aufweisend: einen Speicher, der einen flüchtigen Speicher einschließt; und eine Steuerung, die eingerichtet ist zum: Bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, basierend auf einer Hostspeicherzuweisung von einer Hostvorrichtung; Berechnen einer Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher; Durchführen einer oder mehrerer Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die Hostspeicherzuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs; und Freigeben der Hostspeicherzuweisung an die Hostvorrichtung.
  12. Speicherungsvorrichtung nach Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist, um zu bestimmen, ob die Speicherungsvorrichtung die Zuweisung des Hostspeicherpuffers (HMB) unterstützt.
  13. Speicherungsvorrichtung nach Anspruch 12, wobei die Steuerung weiterhin eingerichtet ist zum: Senden an die Hostvorrichtung einer Anforderung für eine HMB-Zuweisung für ein oder mehrere der Steuerung zugeordnete interne Module, als Reaktion auf das Bestimmen, dass die Speicherungsvorrichtung die HMB-Zuweisung unterstützt; und Empfangen von der Hostvorrichtung einer Antwort, die angibt, ob die HMB-Zuweisung erfolgreich ist.
  14. Speicherungsvorrichtung nach Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist zum: Zuweisen, aus der Hostspeicherzuweisung, des wiederverwendbaren Bereichs in dem flüchtigen Speicher für ein internes Modul der Steuerung, basierend auf einer entsprechenden Priorität des internen Moduls; und Abrufen des zugewiesenen wiederverwendbaren Bereichs in dem flüchtigen Speicher für das interne Modul.
  15. Speicherungsvorrichtung nach Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist zum: Bestimmen, dass ein zugewiesener Bereich eines Hostspeichers, welcher der Hostspeicherzuweisung entspricht, freizugeben ist; Identifizieren eines oder mehrerer interner Module, die der Steuerung zugeordnet sind, die den zugewiesenen Bereich des Hostspeichers verwenden; Bestimmen, ob der wiederverwendbare Bereich in dem flüchtigen Speicher, welcher der Hostspeicherzuweisung zugeordnet ist, von dem einen oder den mehreren identifizierten internen Modulen wiederverwendet wird; und Entfernen eines oder mehrerer Datensätze aus dem wiederverwendbaren Bereich des flüchtigen Speichers, wenn bestimmt wird, dass der wiederverwendbare Bereich wiederverwendet wird.
  16. Speicherungsvorrichtung nach Anspruch 11, wobei die Durchführung der einen oder der mehreren Operationen der Speicherungsvorrichtung das Laden einer oder mehrerer Abbildungstabellen in den wiederverwendbaren Bereich des flüchtigen Speichers, der den einen oder den mehreren Operationen der Speicherungsvorrichtung zugeordnet ist, aufweist und wobei die eine oder die mehreren Operationen der Speicherungsvorrichtung eine oder mehrere von einer zufälligen Leseoperation, einer sequentiellen Leseoperation, einer zufälligen Schreiboperation, einer sequentiellen Schreiboperation oder einer Verlagerungsoperation aufweist.
  17. Speicherungsvorrichtung, aufweisend: einen Speicher, der einen flüchtigen Speicher einschließt; und eine Steuerung, die eingerichtet ist zum: Bestimmen, ob die Speicherungsvorrichtung die Zuweisung eines Hostspeicherpuffers (HMB) unterstützt; Senden an eine Hostvorrichtung einer Anforderung für die HMB-Zuweisung für ein oder mehrere der Steuerung zugeordnete interne Module, als Reaktion auf das Bestimmen, dass die Speicherungsvorrichtung die HMB-Zuweisung unterstützt; Empfangen von der Hostvorrichtung einer Antwort, die angibt, ob die HMB-Zuweisung erfolgreich ist; Bestimmen, dass zumindest ein Abschnitt in dem flüchtigen Speicher ein wiederverwendbarer Bereich ist, wenn die HMB-Zuweisung mit der Hostvorrichtung erfolgreich ist; Berechnen einer Größe des wiederverwendbaren Bereichs in dem flüchtigen Speicher; Durchführen einer oder mehrerer Operationen der Speicherungsvorrichtung in dem wiederverwendbaren Bereich des flüchtigen Speichers als Reaktion auf die HMB-Zuweisung basierend auf der berechneten Größe des wiederverwendbaren Bereichs; und Freigeben der HMB-Zuweisung zurück an die Hostvorrichtung.
  18. Speicherungsvorrichtung gemäß Anspruch 17, wobei die Steuerung weiterhin eingerichtet ist zum: Zuweisen, aus der HMB-Zuweisung, des wiederverwendbaren Bereichs in dem flüchtigen Speicher für ein internes Modul der Steuerung, basierend auf einer entsprechenden Priorität des internen Moduls; und Abrufen des zugewiesenen wiederverwendbaren Bereichs in dem flüchtigen Speicher für das interne Modul.
  19. Speicherungsvorrichtung nach Anspruch 17, wobei die Bestimmung, dass der mindestens eine Abschnitt im flüchtigen Speicher wiederverwendbar ist, aufweist: Berechnen einer ersten Speichermenge, die in dem mindestens einen Abschnitt des flüchtigen Speichers freigegeben wird, basierend auf der HMB-Zuweisung; Bestimmen einer zweiten Speichermenge, die verwendet wird, um die eine oder die mehreren Operationen der Speicherungsvorrichtung durchzuführen, die einem internen Modul der Steuerung zugeordnet sind; und Bestimmen, dass die erste Speichermenge größer ist als die zweite Speichermenge.
  20. Speicherungsvorrichtung gemäß Anspruch 17, wobei die Steuerung weiterhin eingerichtet ist zum: Bestimmen, dass ein zugewiesener Bereich eines Hostspeichers, welcher der HMB-Zuweisung entspricht, freizugeben ist; Identifizieren eines oder mehrerer interner Module, die der Steuerung zugeordnet sind, die den zugewiesenen Bereich des Hostspeichers verwenden; Bestimmen, ob der wiederverwendbare Bereich in dem flüchtigen Speicher, welcher der HMB-Zuweisung zugeordnet ist, von dem einen oder den mehreren identifizierten internen Modulen wiederverwendet wird; und Entfernen eines oder mehrerer Datensätze aus dem wiederverwendbaren Bereich des flüchtigen Speichers, wenn bestimmt wird, dass der wiederverwendbare Bereich wiederverwendet wird.
DE102022101607.2A 2021-04-05 2022-01-24 Verwaltung der hostspeicherpufferzuweisung Pending DE102022101607A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/222,565 2021-04-05
US17/222,565 US11403011B1 (en) 2021-04-05 2021-04-05 Host memory buffer allocation management

Publications (1)

Publication Number Publication Date
DE102022101607A1 true DE102022101607A1 (de) 2022-10-06

Family

ID=82652492

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022101607.2A Pending DE102022101607A1 (de) 2021-04-05 2022-01-24 Verwaltung der hostspeicherpufferzuweisung

Country Status (3)

Country Link
US (1) US11403011B1 (de)
CN (1) CN115203086A (de)
DE (1) DE102022101607A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
US11977479B2 (en) * 2022-01-11 2024-05-07 Western Digital Technologies, Inc. Log file system (LFS) invalidation command and operational mode

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720597B2 (en) 2014-01-24 2017-08-01 Nec Corporation Systems and methods for swapping pinned memory buffers
US9880783B2 (en) 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US10528463B2 (en) * 2016-09-28 2020-01-07 Intel Corporation Technologies for combining logical-to-physical address table updates in a single write operation
KR102384759B1 (ko) 2017-11-13 2022-04-11 삼성전자주식회사 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치
US10613778B2 (en) 2018-03-21 2020-04-07 Western Digital Technologies, Inc. Dynamic host memory allocation to a memory controller
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
KR20200046264A (ko) 2018-10-24 2020-05-07 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US11403011B1 (en) 2022-08-02
CN115203086A (zh) 2022-10-18

Similar Documents

Publication Publication Date Title
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102014204716B4 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren für ein Betriebssystem(OS)-Image
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102008033518A1 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE