DE102020106971A1 - Datenschreibverwaltung im nichtflüchtigen speicher - Google Patents

Datenschreibverwaltung im nichtflüchtigen speicher Download PDF

Info

Publication number
DE102020106971A1
DE102020106971A1 DE102020106971.5A DE102020106971A DE102020106971A1 DE 102020106971 A1 DE102020106971 A1 DE 102020106971A1 DE 102020106971 A DE102020106971 A DE 102020106971A DE 102020106971 A1 DE102020106971 A1 DE 102020106971A1
Authority
DE
Germany
Prior art keywords
namespace
data
identifier
storage
open
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
DE102020106971.5A
Other languages
English (en)
Inventor
Eran Sharon
Shay Benisty
Ariel Navon
Judah Gamliel Hahn
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 DE102020106971A1 publication Critical patent/DE102020106971A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

Hierin werden eine Einrichtung, ein System und ein Verfahren zur Verwaltung offener Blöcke für nichtflüchtige Speichervorrichtungen offenbart, die eine verbesserte Leistung für namensraumbasierte Host-Anwendungen bereitstellen. Die Namensraumkennung wird angewendet, um die offenen Blöcke zu bestimmen, in die Daten von Speicherungsbefehlen geleitet werden sollen. Ein Vorteil der offenbarten Technik ist eine geringere Anzahl von De-Fragmentierungsoperationen und eine effizientere Speicherbereinigung. Ein weiterer Vorteil ist die Möglichkeit, private Zuweisungen von physischem Speicher zu sichern, ohne dass eine Partition zugewiesen oder eine Hardware-Isolierung implementiert werden muss.

Description

  • HINTERGRUND
  • Herkömmlicherweise sendet eine Host-Vorrichtung Speicherungsbefehle mit Hilfe eines Blockprotokolls an eine Speicherungsvorrichtung. Der Speicherungsbefehl identifiziert einen Datenblock auf den Speicherungsmedien mit Hilfe einer logischen Blockadresse (LBA) eindeutig. In bestimmten Blockspeicherungsprotokollen, können Hosts und Anwendungen, die auf dem Host ausgeführt werden, nun optional sowohl eine LBA- als auch eine Partitionskennung zum eindeutigen Identifizieren eines Datenblocks auf den Speicherungsmedien verwenden.
  • Die Speicherungsvorrichtung erkennt die Partitionskennung als eine eindeutige Kennung für eine logische Partition der Speicherungsmedien.
  • In der Branche wird eine logische Partition als logische Einheitsnummer (LUN) (mit einer LUN als Partitionskennung) oder als Namensraum (mit einer Namensraumkennung (NSID) als Partitionskennung) bezeichnet. Logische Einheitsnummer und Namensraum können hierin austauschbar verwendet werden. LUN und Namensraumkennung können hierin austauschbar verwendet werden.
  • Bestimmte Speicherungsvorrichtungen nutzen die NSID in den Speicherungsbefehlen, um Daten auf den Speicherungsmedien für Speicherungsbefehle mit derselben NSID physisch zu gruppieren. Workloads für Anwendungen, die einen Namensraum verwenden, können jedoch ähnliche Charakteristiken aufweisen wie Workloads für Anwendungen, die einen anderen Namensraum verwenden. Wenn eine Beziehung zwischen den beiden Namensräumen besteht, darf der Host diese Beziehung nicht an die Speicherungsvorrichtung kommunizieren. Da sich die Speicherungsvorrichtung einer Beziehung zwischen zwei Datensätzen für verschiedene Namensräume nicht bewusst ist, kann die Speicherungsvorrichtung die Daten für die jeweiligen Namensräume auf suboptimale Weise physisch platzieren.
  • In einer Solid-State-Speicherungsvorrichtung erfolgt die physische Platzierung von Daten, wenn bestimmt wird, welcher offene Speicherblock für die Speicherung neuer Schreibdaten verwendet werden soll. Beim Öffnen von Speicherblöcken zum Speichern von Daten öffnen herkömmliche nichtflüchtige Speichersysteme einen Speicherblock aus einer freien Blockliste. Es wäre wünschenswert, dass eine Speicherungsvorrichtung, wie eine nichtflüchtige Speicherspeicherungsvorrichtung, eine Beziehung zwischen den Namensräumen bestimmt und diese Beziehung bei der Auswahl eines offenen Speicherblocks für die Speicherung von Daten ausnutzt, um die Betriebsleistung zu erhöhen und Verschleißausgleichsoperationen auf dem nichtflüchtigen Speicher zu reduzieren.
  • KURZDARSTELLUNG
  • Diese Offenbarung bezieht sich auf eine Einrichtung, ein System und ein Verfahren, die sich auf die Schreibverwaltung eines nichtflüchtigen Speichers bezieht, der auf Beziehungen zwischen Namensräumen basiert, die den geschriebenen Daten zugeordnet sind. Die hierin offenbarte Einrichtung weist einen nichtflüchtigen Speicher mit einer Vielzahl von offenen Löschblöcken auf. Diese Einrichtung weist ferner eine Speicherungssteuerung auf, die so konfiguriert ist, dass sie die offenen Löschblöcke gleichzeitig verwaltet. Die Speicherungssteuerung ist ferner so konfiguriert, dass sie eine Beziehung zwischen einem ersten Namensraum und einem zweiten Namensraum basierend auf einer Vielzahl von Workload-Attributen für den ersten Namensraum und den zweiten Namensraum bestimmt. Schließlich ist die Speicherungssteuerung so konfiguriert, dass sie Daten, die dem zweiten Namensraum zugeordnet sind, im offenen Löschblock speichert, der Daten speichert, die dem ersten Namensraum basierend auf der Beziehung zugeordnet sind.
  • Das hierin offenbarte System weist ein nichtflüchtiges Speicherarray auf, das eine Vielzahl von Dies aufweist. Dieses System weist ferner eine Vielzahl von offenen logischen Löschblöcken auf, wobei jeder der offenen logischen Löschblöcke einen physischen Löschblock von jedem der Dies des nichtflüchtigen Speicherarrays aufweist. Dieses System weist auch eine Schreibdaten-Pipeline auf, die so konfiguriert ist, dass sie Schreibbefehle von einer Vielzahl von Hosts empfängt, wobei jeder der Schreibbefehle eine Namensraumkennung aufweist. Dieses System weist ferner einen Workload-Analysator auf, der so konfiguriert ist, dass er bestimmt, dass sich ein erster Namensraum für einen ersten Host auf einen zweiten Namensraum für einen zweiten Host bezieht, und zwar basierend auf Workload-Attributen für die Schreibbefehle von dem ersten Host und basierend auf den Workload-Attributen für die Schreibbefehle von dem zweiten Host. Dieses System schließt einen Manager für offene Löschblöcke ein, der so konfiguriert ist, dass zwei oder mehr von den offenen logischen Löschblöcken für den Empfang von Schreibdaten unterhalten werden. Schließlich weist dieses System einen Datenzuweiser auf, der so konfiguriert ist, dass der Manager für offene Löschblöcke basierend auf einer impliziten Beziehung die Daten der Schreibbefehle mit der ersten Namensraumkennung in einen gemeinsamen von zwei oder mehr der offenen logischen Löschblöcke als die Schreibbefehle mit einer zweiten Namensraumkennung gruppiert.
  • Das hierin offenbarte Verfahren weist das Empfangen von Speicherungsbefehlen auf, wobei jeder der Speicherungsbefehle eine Namensraumkennung aufweist. Dieses Verfahren weist ferner das Überwachen der Speicherungsbefehle für Daten auf, die mindestens einer der Namensraumkennungen zugeordnet sind, bis ein Überwachungsschwellenwert erreicht ist. Das Verfahren schließt das Bestimmen einer Gemeinsamkeit zwischen den Speicherungsbefehlen ein, die einer ersten Namensraumkennung für einen ersten Namensraum zugeordnet sind, und den Speicherungsbefehlen, die einer zweiten Namensraumkennung für einen zweiten Namensraum zugeordnet sind. Schließlich weist dieses Verfahren das Gruppieren von Daten, die der ersten Namensraumkennung zugeordnet sind, und von Daten, die der zweiten Namensraumkennung zugeordnet sind, in einem gemeinsamen offenen Löschblock basierend auf der Gemeinsamkeit auf.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung leicht zu identifizieren, nehmen die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur Bezug, in der dieses Element zum ersten Mal eingeführt wird.
    • 1 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Systems 100 für die Datenschreibverwaltung veranschaulicht.
    • 2 ist ein schematisches Blockdiagramm, das eine weitere Ausführungsform eines Systems 200 für die Datenschreibverwaltung veranschaulicht.
    • 3 ist ein schematisches Blockdiagramm, das eine Ausführungsform einer NAND-Kette 300 veranschaulicht.
    • 4 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Speicherarrays 400 veranschaulicht.
    • 5 veranschaulicht eine Speicherungsvorrichtung 500 gemäß einer Ausführungsform.
    • 6 veranschaulicht ein System 600 gemäß einer Ausführungsform.
    • 7 veranschaulicht ein System 700 gemäß einer Ausführungsform.
    • 8 veranschaulicht einen Workload-Analysator 800 gemäß einer Ausführungsform.
    • 9 veranschaulicht einen Datenzuweiser 714 gemäß einer Ausführungsform.
    • 10 veranschaulicht ein NVM-Subsystem 1000 gemäß einer Ausführungsform.
    • 11 veranschaulicht eine NVMe-Standzeitgruppe 1100 gemäß einer Ausführungsform.
    • 12 veranschaulicht ein NVMe mit zwei Steuerungen und geteiltem Namensraum 1200 gemäß einer Ausführungsform.
    • 13 veranschaulicht eine beispielhafte Ausführungsform 1300 gemäß einer Ausführungsform.
    • 14 veranschaulicht ein Verfahren 1400 gemäß einer Ausführungsform.
    • 15 veranschaulicht ein Verfahren 1500 gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Hierin werden eine Einrichtung, ein System und ein Verfahren zur Verwaltung offener Blöcke für nichtflüchtige Speichervorrichtungen offenbart, die eine verbesserte Leistung für namensraumbasierte Host-Anwendungen bereitstellen.
  • Eine Namensraumkennung (auch als Namensraum-ID oder Namensraumorientierung bezeichnet) wird verwendet, um die offenen Blöcke zu bestimmen, an die Daten von Speicherungsbefehlen geleitet werden sollen. Die Namensraumkennung wird als ein von der Host-Vorrichtung bereitgestellter Hinweis verwendet, um die Daten zu kategorisieren, zu organisieren und einer bestimmten Host-Anwendung zuzuordnen. Es können auch andere Parameter verwendet werden, um die Daten zu einem offenen Block zu leiten. Die nichtflüchtige Speichervorrichtung unterhält eine Liste von Namensraumkennungen, die die von jedem offenen Block verwendeten Namensräume repräsentieren. Ein Vorteil der offenbarten Technik ist eine geringere Anzahl von De-Fragmentierungsoperationen und eine effizientere Speicherbereinigung.
  • Spezifische Ausführungsformen und Beispiele, die hierin beschrieben werden, können sich auf Implementierungen in einer Solid-State-Vorrichtung/einem Solid-State-Drive beziehen. Im Allgemeinen sind die offenbarten Techniken in jeder Speicherungsvorrichtung anwendbar, die einen nichtflüchtigen Speicher einschließt.
  • In einer Ausführungsform entspricht eine maximale Anzahl offener Blöcke, die von einer nichtflüchtigen Speichervorrichtung unterstützt werden, einer maximalen Anzahl unterstützter Namensraum-IDs. In dieser Implementierung kann jeder offene Block eindeutig einer dedizierten Namensraumkennung zugeordnet werden. In einer anderen Ausführungsform kann die nichtflüchtige Speichervorrichtung private Namensräume und geteilte Namensräume implementieren. Private Namensräume teilen sich nicht denselben offenen Block, während geteilte Namensräume dieselben offenen Blöcke mit Daten aus anderen Namensräumen teilen können.
  • In einer weiteren Ausführungsform wird die Temperatur (auch als Zugriffsfrequenz der Daten im Lauf der Zeit bezeichnet) eines Namensraumes bestimmt. Wenn die Host-Vorrichtung häufig auf den Namensraum zugreift, wird der Namensraum als heißer Namensraum klassifiziert. Andernfalls wird er als kalter Namensraum klassifiziert. Diese Klassifizierung kann bei der Zuweisung eines Namensraums mit einem offenen Block verwendet werden. Im Allgemeinen kann das Verfahren heißen Namensräumen ermöglichen, denselben Block zu teilen, während es die Vermischung von heißen und kalten Namensräumen in einem bestimmten offenen Block minimiert oder ausschließt.
  • In einigen Ausführungsformen können mehrere Host-Vorrichtungen (hierin auch als Hosts bezeichnet) oder Host-Anwendungen einen geteilten Speicherplatz verwenden, und jedem Host kann ein separater Namensraum zugewiesen werden. In einigen Ausführungsformen können andere Namensräume für Daten verwendet werden, die in sequentieller Reihenfolge geschrieben werden, als die Namensräume, die für Daten verwendet werden, die in einer zufälligen Auswahl von logischen Blockadressen (LBAs) geschrieben werden.
  • Einige Ausführungsformen können Daten während der regelmäßigen Schreibvorgänge und der Speicherbereinigungs-Schreibvorgänge (GC-Schreibvorgänge), die auch als Wartungsbetriebs-Schreibvorgänge bezeichnet werden, unterschiedlich gruppieren. Beziehungen oder Assoziationen zwischen Namensräumen können bei Schreibbefehlen, Lesebefehlen oder bei beiden bestimmt werden. Workload-Attribute können priorisiert werden, wobei einige Attribute die Namensraumgruppierung innerhalb offener Blöcke vor anderen bestimmen.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100 mit nichtflüchtiger (nichtflüchtigen) Speichervorrichtung(en) 118, das gemäß einer Ausführungsform der beanspruchten Lösung konfiguriert ist. Ein nichtflüchtiges Speichersystem 102 einer Rechenvorrichtung 104 kann einen Prozessor 106, einen flüchtigen Speicher 108 und eine Kommunikationsschnittstelle 110 aufweisen. Der Prozessor 106 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Rechenvorrichtung 104 eine virtuelle Maschine sein, die in einem Host arbeitet), einen oder mehrere Prozessorkerne oder dergleichen aufweisen. Die Kommunikationsschnittstelle 110 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu konfiguriert sind, die Rechenvorrichtung 104 und/oder die Speicherungssteuerung 126 kommunikativ mit einem Kommunikationsnetzwerk 114, wie einem Internetprotokoll-Netzwerk (IP-Netzwerk), einem Speicherbereichsnetzwerk (SAN), einem drahtlosen Netzwerk, einem drahtgebundenen Netzwerk oder dergleichen, zu koppeln.
  • Die nichtflüchtige(n) Speichervorrichtung(en) 118 kann (können) in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten bezogen auf die Rechenvorrichtung 104 angeordnet sein. In einer Ausführungsform weist (weisen) die nichtflüchtige(n) Speichervorrichtung(en) 118 ein oder mehrere nichtflüchtige Speicherelemente 122 auf, wie Halbleiterchips, Speicher-Dies oder Gehäuse oder andere Vorrichtungen mit integrierter Schaltung, die auf einer oder mehreren gedruckten Leiterplatten, Lagergehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind. Beispielsweise kann (können) die nichtflüchtige(n) Speichervorrichtung(en) 118 eine oder mehrere Karten für ein direktes Inline-Speichermodul (DIMM), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, ein Solid-State-Drive (SSD) oder eine andere Festplattenvorrichtung aufweisen und/oder kann einen anderen Speicher- und/oder Speicherungsformfaktor haben, die dem Fachmann bekannt sind. Die nichtflüchtige(n) Speichervorrichtung(en) 118 kann (können) in einer Hauptplatine der Rechenvorrichtung 104 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Rechenvorrichtung 104 installiert sein, auf einer anderen Rechenvorrichtung 104 und/oder einem dedizierten Speichergerät auf dem Netzwerk 114 installiert sein, mit der Rechenvorrichtung 104 über einen externen Bus (z. B. eine externe Festplatte) in Kommunikation sein oder dergleichen.
  • Die nichtflüchtige(n) Speichervorrichtung(en) 118 kann (können) in einer Ausführungsform auf einem Speicherbus eines Prozessors 106 (z. B. auf demselben Speicherbus wie der flüchtige Speicher 108, auf einem anderen Speicherbus als der flüchtige Speicher 108, anstelle des flüchtigen Speichers 108 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann (können) die nichtflüchtige(n) Speichervorrichtung(en) 118 auf einem peripheren Bus der Rechenvorrichtung 104, wie einem Peripheral Component Interconnect Express-Bus (PCI Express oder PCIe-Bus), einem Serial Advanced Technology Attachment-Bus (SATA-Bus), einem Parallel Advanced Technology Attachment-Bus (PATA-Bus), einem Small Computer System Interface-Bus (SCSI-Bus), einem FireWire-Bus, einer Fibre Channel-Verbindung, einem Universal Serial Bus (USB), einem PCle Advanced Switching-Bus (PCIe-AS-Bus) oder dergleichen, angeordnet sein. In einer anderen Ausführungsform kann (können) die nichtflüchtige(n) Speichervorrichtung(en) 118 auf einem Datennetzwerk 114, wie einem Ethernet-Netzwerk, einem InfiniBand-Netzwerk, SCSI-RDMA über ein Netzwerk 114, einem Speicherbereichsnetzwerk (SAN), einem lokalen Netzwerk (LAN) einem Weitverkehrsnetzwerk WAN), wie dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk 114 oder dergleichen, angeordnet sein.
  • Die Rechenvorrichtung 104 kann ferner ein nichtflüchtiges, computerlesbares Speicherungsmedium 112 aufweisen. Das computerlesbare Speicherungsmedium 112 kann ausführbare Anweisungen aufweisen, die konfiguriert sind, um zu bewirken, dass die Rechenvorrichtung 104 (z. B. Prozessor 111) Schritte eines oder mehrerer der hierin offenbarten Verfahren ausführt.
  • Gemäß verschiedener Ausführungsformen kann eine Steuerung 126 des nichtflüchtigen Speichers eine oder mehrere nichtflüchtige Speichervorrichtungen 118 und/oder nichtflüchtige Speicherelemente 122 verwalten. Die nichtflüchtige(n) Speichervorrichtung(en) 118 kann (können) Aufzeichnungs-, Speicher- und/oder Speicherungsvorrichtungen aufweisen, wie Festkörperspeicherungsvorrichtung(en) und/oder Halbleiterspeicherungsvorrichtung(en), die als eine Vielzahl von adressierbaren Speicherorten angeordnet und/oder darin partitioniert sind. Wie hierin verwendet, bezieht sich ein Speicherort auf jede physische Einheit eines Speichers (z. B. jede Menge an physischen Speichermedien auf einer nichtflüchtigen Speichervorrichtung(en) 118). Speichereinheiten können unter anderem Folgendes einschließen: Seiten, Speicherabschnitte, Blöcke, Datenblöcke, Löschblöcke, Sektoren, Sammlungen oder Sätze von physischen Speicherorten (z. B. logische Seiten, logische Blöcke, logische Löschblöcke) oder dergleichen.
  • Ein Vorrichtungstreiber und/oder die Speicherungssteuerung 126 können in bestimmten Ausführungsformen einen logischen Adressraum 134 für den (die) Speicherungs-Client(s) 116 bereitstellen. Wie hierin verwendet, bezieht sich ein logischer Adressraum 134 auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum 134 kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Wie hierin verwendet, bezieht sich eine logische Adresse auf jeden Identifikator zum Referenzieren einer Speicherressource (z. B. Daten), einschließlich, ohne jedoch darauf beschränkt zu sein: eine logische Blockadresse (LBA), eine Zylinder/Kopf/Sektor-Adresse (CHS-Adresse), einen Dateinamen, einen Objektidentifikator, einen global eindeutigen Identifikator (GUID), einen Hash-Code, eine Signatur, einen Indexeintrag, einen Bereich, einen Umfang oder dergleichen.
  • Ein Vorrichtungstreiber für die nichtflüchtige(n) Speichervorrichtung(en) 118 kann Metadaten 136, wie eine Logisch-zu-Physisch-Adressabbildungsstruktur, unterhalten, um logische Adressen des logischen Adressraums 134 in Speicherorten auf der (den) nichtflüchtigen Speichervorrichtung(en) 118 abzubilden. Ein Vorrichtungstreiber kann dazu konfiguriert sein, Speicherdienste für einen oder mehrere Speicherungs-Clients 116 bereitzustellen. Der (die) Speicherungs-Client(s) 116 kann (können) einen lokalen Speicherungs-Client(s) 116, der (die) auf der Rechenvorrichtung 104 arbeitet (arbeiten), und/oder einen Remote-Speicherungs-Client(s) 116, auf den (die) über das Netzwerk 114 und/oder die Kommunikationsschnittstelle 110 zugegriffen werden kann, einschließen. Der (die) Speicherungs-Client(s) 116 kann (können) einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Benutzerebenenprozesse, Anwendungen und dergleichen.
  • Ein Vorrichtungstreiber kann kommunikativ mit einer oder mehreren nichtflüchtigen Speichervorrichtungen 118 gekoppelt sein. Die eine oder mehreren nichtflüchtigen Speichervorrichtungen 118 können unterschiedliche Typen von nichtflüchtigen Speichervorrichtungen einschließen, einschließlich jedoch nicht beschränkt auf: Festkörperspeicherungsvorrichtungen, Halbleiterspeicherungsvorrichtungen, SAN-Speicherressourcen oder dergleichen. Die eine oder mehreren nichtflüchtigen Speichervorrichtungen 118 können einen oder mehrere von einer entsprechenden Speicherungssteuerung 126 und/oder nichtflüchtige Speichermedien 120 aufweisen. Ein Vorrichtungstreiber kann Zugriff auf die eine oder mehreren nichtflüchtigen Speichervorrichtungen 118 über eine herkömmliche Block-E/A-Schnittstelle 132 bereitstellen.
  • In einer Ausführungsform verwendet eine Benutzeranwendung wie eine Softwareanwendung, die auf oder in Verbindung mit dem/den Speicherungs-Client(s) 116 arbeitet, das nichtflüchtige Speichersystem 102. Der (die) Speicherungs-Client(s) 116 verwaltet (verwalten) Dateien und Daten und nutzt (nutzen) die Funktionen und Merkmale der Speicherungssteuerung 126 und der zugehörigen nichtflüchtigen Speichermedien 120. Repräsentative Beispiele für Speicherungs-Clients schließen einen Server, ein Dateisystem, ein Betriebssystem, ein Datenbankmanagementsystem („DBMS“), einen Volume-Manager und dergleichen ein, sind aber nicht beschränkt darauf. In einer Ausführungsform greift (greifen) der (die) Speicherungs-Client(s) 116 über eine herkömmliche Block-E/A-Schnittstelle 132 auf die eine oder die mehreren nichtflüchtige(n) Speichervorrichtung(en) 118 zu.
  • Bestimmte herkömmliche Blockspeicherungsvorrichtungen unterteilen die Speicherungsmedien in Volumes oder Partitionen. Jedes Volume oder jede Partition kann eine Vielzahl von Sektoren einschließen. Ein oder mehrere Sektoren sind in einem Block (auch als Datenblock bezeichnet) organisiert. In bestimmten Speicherungssystemen, wie z. B. denen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Block oder Cluster stellt die kleinste physikalische Menge an Speicherplatz auf den Speicherungsmedien dar, die von der Speicherungssteuerung 126 verwaltet wird. Eine Blockspeicherungsvorrichtung kann n Blöcke, die für die Benutzerdatenspeicherung auf den nichtflüchtigen Speichermedien 120 zur Verfügung stehen, einer logischen Blockadresse, die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeicherungsvorrichtungen können die logischen Blockadressen zwischen 0 und n pro Volume oder Partition liegen. In herkömmlichen Blockspeicherungsvorrichtungen wird eine logische Blockadresse direkt auf einen bestimmten logischen Block abgebildet.
  • Ein Vorrichtungstreiber kann dem (den) Speicherungs-Client(s) 116 einen logischen Adressraum 134 über eine oder mehrere Schnittstellen präsentieren. Wie vorstehend erörtert, kann der logische Adressraum 134 eine Vielzahl von logischen Adressen aufweisen, von denen jede jeweiligen Speicherorten in der einen oder mehreren nichtflüchtigen Speichervorrichtungen 118 entspricht. Ein Vorrichtungstreiber kann Metadaten 136 verwalten, die Beliebig-zu-Beliebig-Zuordnungen zwischen logischen Adressen und Speicherorten oder dergleichen aufweisen.
  • Ein Vorrichtungstreiber kann ferner eine Schnittstelle einer nichtflüchtigen Speichervorrichtung 138, die zum Übertragen von Daten, Befehlen und/oder Anforderungen zu den einen oder mehreren nichtflüchtigen Speichervorrichtungen 118 über einen Bus 124 konfiguriert ist, aufweisen, was unter anderem Folgendes einschließen kann: einen Speicherbus eines Prozessors 106, einen Peripheral Component Interconnect Express-Bus (PCI Express oder PCIe-Bus), einen seriellen Advanced Technology Attachment-Bus (ATA-Bus), einen parallelen ATA-Bus, ein Small Computer System Interface (SCSI), FireWire, Fibre Channel, einen Universal Serial Bus (USB), einen PCle Advanced Switching-Bus (PCIe-AS-Bus), ein Netzwerk 114, Infiniband, SCSI-RDMA, nichtflüchtigen Speicher-Express (NVMe) oder dergleichen. Die Schnittstelle einer nichtflüchtigen Speichervorrichtung 138 kann mit der einen oder mehreren nichtflüchtigen Speichervorrichtungen 118 unter Verwendung von Eingabe-Ausgabe-Steuerbefehlen (IO-CTL), IO-CTL-Befehlserweiterung(en), direktem Remote-Speicherzugriff oder dergleichen kommunizieren.
  • Die Kommunikationsschnittstelle 110 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu konfiguriert sind, die Rechenvorrichtung 104 und/oder die Speicherungssteuerung 126 kommunikativ mit einem Netzwerk 114 und/oder mit einem oder mehreren entfernten, netzwerkzugänglichen Speicherungs-Clients 116 zu koppeln. Der (die) Speicherungs-Client(s) 116 kann (können) (einen) lokalen Speicherungs-Client(s) 116, der (die) auf der Rechenvorrichtung 104 arbeitet (arbeiten), und/oder (einen) Remote-Speicherungs-Client(s) 116, auf den (die) über das Netzwerk 114 und/oder die Kommunikationsschnittstelle 110 zugegriffen werden kann, einschließen. Die Speicherungssteuerung 126 ist Teil von und/oder in Kommunikation mit einer oder mehreren nichtflüchtigen Speichervorrichtungen 118. Wenngleich 1 eine einzelne nichtflüchtige Speichervorrichtung(en) 118 darstellt, ist die Offenbarung nicht darauf beschränkt und kann angepasst werden, um eine beliebige Anzahl von nichtflüchtigen Speichervorrichtungen 118 zu implementieren.
  • Die nichtflüchtige Speichervorrichtung 118 kann ein oder mehrere Elemente 122 von nichtflüchtigen Speichermedien 120 aufweisen, die einschließen können, ohne jedoch darauf beschränkt zu sein: ReRAM, Memristorspeicher, programmierbarer Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierte Nanokristallspeicher, Siliziumoxid-basierter Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszellen (PMC), leitungsüberbrückendes RAM (CBRAM), magnetoresistives RAM (MRAM), magnetische Speicherungsmedien (z. B. Festplatte, Band), optische Speicherungsmedien oder dergleichen. Das eine oder mehrere nichtflüchtige Speicherelement(e) 122 der nichtflüchtigen Speichermedien 120 weist (weisen) in bestimmten Ausführungsformen Storage Class Memory (SCM) auf.
  • Während Legacy-Technologien, wie etwa NAND-Flash, block- und/oder seitenadressierbar sein können, ist Speicherklassenspeicher in einer Ausführungsform byteadressierbar. In weiteren Ausführungsformen kann Speicherklassenspeicher schneller sein und/oder eine längere Lebensdauer (z. B. Standzeit) als NAND-Flash aufweisen; kann geringere Kosten verursachen, weniger Leistung verwenden und/oder eine höhere Speicherdichte als DRAM aufweisen; oder einen oder mehrere andere Vorteile oder Verbesserungen im Vergleich zu anderen Technologien bieten. Zum Beispiel kann der Speicherklassenspeicher ein oder mehrere nichtflüchtige Speicherelemente 122 aus ReRAM, Memristorspeicher, programmierbarem Metallisierungszellenspeicher, Phasenänderungsspeicher, Nano-RAM, drahtbasiertem Nanokristallspeicher, Siliziumoxid-basiertem Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, SONOS-Speicher, PMC-Speicher, CBRAM, MRAM und/oder Variationen davon aufweisen.
  • Während die nichtflüchtigen Speichermedien 120 hierin als „Speichermedien“ bezeichnet werden, können die nichtflüchtigen Speichermedien 120 in verschiedenen Ausführungsformen allgemeiner ein oder mehrere nichtflüchtige Aufzeichnungsmedien aufweisen, die in der Lage sind, Daten aufzuzeichnen, die als nichtflüchtiges Speichermedium, nichtflüchtiges Speicherungsmedium oder dergleichen bezeichnet werden können. Weiterhin kann (können) die nichtflüchtige(n) Speichervorrichtung(en) 118 in verschiedenen Ausführungsformen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speichervorrichtung, eine nichtflüchtige Speicherungsvorrichtung oder dergleichen aufweisen.
  • Die nichtflüchtigen Speichermedien 120 können ein oder mehrere nichtflüchtige Speicherelemente 122 aufweisen, die Chips, Pakete, Ebenen, Dies oder dergleichen einschließen können, ohne jedoch darauf beschränkt zu sein. Eine Speicherungssteuerung 126 kann dazu konfiguriert sein, Datenvorgänge auf den nichtflüchtigen Speichermedien 120 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrosteuerung oder dergleichen aufweisen. In einigen Ausführungsformen ist die Speicherungssteuerung 126 dazu konfiguriert, Daten auf den nichtflüchtigen Speichermedien 120 zu speichern und/oder Daten davon zu lesen, Daten zu/von der (den) nichtflüchtigen Speichervorrichtung(en) 118 zu übertragen und so weiter.
  • Die Speicherungssteuerung 126 kann kommunikativ mit den nichtflüchtigen Speichermedien 120 über einen Bus 128 gekoppelt sein. Der Bus 128 kann einen Bus zum Kommunizieren von Daten zu/von dem (den) nichtflüchtigen Speicherelement(en) 122 aufweisen. Der Bus 128 kann in einer Ausführungsform ferner einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen zu dem (den) nichtflüchtigen Speicherelement(en) 122 aufweisen. In einigen Ausführungsformen kann der Bus 128 das (die) nichtflüchtige(n) Speicherelement(e) 122 kommunikativ parallel an die Speicherungssteuerung 126 koppeln. Dieser parallele Zugriff kann ermöglichen, dass das (die) nichtflüchtige(n) Speicherelement(e) 122 als eine Gruppe verwaltet wird (werden), wodurch ein logisches Speicherelement 130 gebildet wird. Das logische Speicherelement 130 kann in entsprechende logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherbereiche (z. B. logische Datenblöcke, logische Blöcke, logische Löschblöcke) unterteilt sein. Die logischen Speichereinheiten können gebildet werden, indem physische Speichereinheiten von jedem der nichtflüchtigen Speicherelemente 122 logisch kombiniert werden.
  • In einigen Ausführungsformen kann die Speicherungssteuerung 126 so konfiguriert werden, dass sie Daten auf einem oder mehreren asymmetrischen, einmal beschreibbaren Medien, wie z. B. nichtflüchtigen Speichermedien 120, speichert. Wie hierin verwendet, bezieht sich ein „einmal beschreibbares“ Speicherungsmedium auf ein Speicherungsmedium, das jedes Mal neu initialisiert (z. B. gelöscht) wird, wenn neue Daten darauf geschrieben oder programmiert werden. Wie hierin verwendet, bezieht sich ein „asymmetrisches“ Speicherungsmedium auf ein Speicherungsmedium mit unterschiedlichen Latenzen für unterschiedliche Speicherungsoperationen. Viele Typen von nichtflüchtigen Speichermedien 120 sind asymmetrisch; Beispielsweise kann ein Lesevorgang viel schneller als ein Schreib-/Programmiervorgang sein, und ein Schreib-/Programmiervorgang kann viel schneller als ein Löschvorgang sein (z. B. kann das Lesen der Medien Hunderte Male schneller als Löschen und zehn Mal schneller als die Programmierung der Medien sein).
  • Die nichtflüchtigen Speichermedien 120 können in Speicherbereiche partitioniert werden, die als eine Gruppe (z. B. Löschblöcke) gelöscht werden können, um unter anderem die asymmetrischen Eigenschaften der Medien zu berücksichtigen. Somit kann das Modifizieren eines einzelnen Datensektors oder Datenblocks an Ort und Stelle das Löschen des gesamten Löschblocks, der die Daten aufweist, und das Neuschreiben der modifizierten Daten in den Löschblock zusammen mit den ursprünglichen, unveränderten Daten erfordern. Dies kann zu einer ineffizienten „Schreiberweiterung“ führen, was eine Überbeanspruchung der nichtflüchtigen Speichermedien 120 bewirken kann.
  • Daher kann in einigen Ausführungsformen die Speicherungssteuerung 126 so konfiguriert sein, dass sie Daten deplatziert schreibt. Wie hierin verwendet, nimmt das „deplatzierte“ Schreiben von Daten auf das Schreiben von Daten auf einen oder mehrere andere physische Speicherorte anstatt des Überschreibens der Daten „am Ort“ (z. B. Überschreiben der Daten am ursprünglichen physischen Standort) Bezug. Das deplatzierte Ändern von Daten kann Schreibverstärkung vermeiden, da die mit den zu ändernden Daten auf dem Löschblock existierenden validen Daten nicht gelöscht und umgeschrieben werden müssen. Darüber hinaus kann das deplatzierte Schreiben von Daten Löschen von den Auswirkungen bestimmter Speicherungsoperationen auf die Latenz entfernen.
  • Die Speicherungssteuerung 126 kann in einer Vielzahl von Löschblöcken von Wortleitungen innerhalb eines oder mehrerer nichtflüchtiger Speicherelemente 122 in bestimmten Ausführungsformen unter Verwendung von Adressen der Wortleitungen organisiert sein, so dass die Wortleitungen logisch in einer monoton aufsteigenden Folge organisiert sind (z. B. Dekodieren und/oder Übersetzen von Adressen für Wortleitungen in eine monoton aufsteigende Folge oder dergleichen). In einer weiteren Ausführungsform können Wortleitungen eines Löschblocks innerhalb eines nichtflüchtigen Speicherelements 122 physisch in einer monoton ansteigenden Sequenz von Wortleitungsadressen angeordnet sein, wobei nacheinander adressierte Wortleitungen auch physisch aneinander angrenzen (z. B. WL0, WL1, WL2, ... WLN).
  • Die Speicherungssteuerung 126 kann einen Vorrichtungstreiber, der auf der Rechenvorrichtung 104 ausgeführt wird, aufweisen und/oder mit diesem in Verbindung sein. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen (Block-E/A-Schnittstelle 132 und/oder andere) Speicherdienste für den (die) Speicherungs-Client(s) 116 bereitstellen. In einigen Ausführungsformen stellt ein Vorrichtungstreiber eine Block-E/A-Schnittstelle 132 der Rechenvorrichtung 104 bereit, über die Speicherungs-Client(s) 116 E/A-Operationen auf Blockebene durchführen.
  • Ein Vorrichtungstreiber kann ferner eine Schnittstelle einer nichtflüchtigen Speichervorrichtung 138 aufweisen, die so konfiguriert ist, um, wie vorstehend beschrieben, Daten, Befehle und/oder Abfragen über einen Bus 124 zu der Speicherungssteuerung 126 zu übertragen.
  • 2 veranschaulicht eine Ausführungsform eines nichtflüchtigen Speicherungssystems 200, das einen oder mehrere Speicher-Dies 202 oder Chips einschließen kann. Der (die) Speicher-Die(s) 202 schließt (schließen) in einigen Ausführungsformen ein nichtflüchtiges Speicherarray 204 (zweidimensional oder dreidimensional) aus Speicherzellen, Die-Steuerung 206, Lese-/Schreibschaltungen A 220 und Lese-/Schreibschaltungen B 222 ein. In einer Ausführungsform ist der Zugriff auf das nichtflüchtige Speicherarray 204 durch die verschiedenen peripheren Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Arrays implementiert, sodass die Dichten von Zugriffsleitungen und Schaltlogik auf jeder Seite um die Hälfte reduziert sind. Die Lese-/Schreibschaltungen A 220 und Lese-/Schreibschaltungen B 222 schließen in einer weiteren Ausführungsform mehrere Leseverstärker 228 ein, die ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird.
  • Das nichtflüchtige Speicherarray 204 ist in verschiedenen Ausführungsformen über Wortleitungen über Zeilendecoder A 216 und Zeilendecoder B 218 und über Bitleitungen über Spaltendecoder A 224 und Spaltendecoder B 226 adressierbar. In einigen Ausführungsformen ist eine Speicherungssteuerung 126 im gleichen Speichersystem 200 (z. B. einer entfernbaren Speicherkarte oder einem Paket) wie das eine oder die mehreren Speicher-Dies 202 eingeschlossen. Befehle und Daten werden zwischen der Host-Vorrichtung 230 und der Speicherungssteuerung 126 über Leitungen 214 und zwischen der Steuerung und dem einen oder den mehreren Speicher-Dies 202 über Leitungen 212 übertragen. Eine Implementierung kann mehrere Speicher-Dies 202 einschließen.
  • Die Die-Steuerung 206, in einer Ausführung, arbeitet mit den Lese-/Schreibschaltungen A 220 und den Lese-/Schreibschaltungen B 222 zusammen, um Speicherungs-/Speicheroperationen auf dem nichtflüchtigen Speicherarray 204 durchzuführen. Die Die-Steuerung 206 schließt in bestimmten Ausführungsformen einen Spannungstreiber 232, eine Zustandsmaschine 208 und einen On-Chip-Adressdecodierer 210 ein. In einer Ausführungsform weist die Zustandsmaschine 208 mindestens einen Abschnitt des Spannungstreibers 232 auf. In einer anderen Ausführungsform weist die Speicherungssteuerung 126 mindestens einen Abschnitt des Spannungstreibers 232 auf.
  • Der Spannungstreiber 232 ist in einer Ausführung so konfiguriert, dass er eine Spannung an eine oder mehrere Komponenten des Speicherarrays liefert. Die Größe der Spannung und ob der zugeführte Spannungspegel steigt oder sinkt, hängt davon ab, welche Speicherungsoperation die Die-Steuerung 206 implementiert. An einem Punkt während einer Operation kann der vom Spannungstreiber 232 bereitgestellte Spannungspegel ein Analogsignal aufweisen, das von der Masse- oder Nullspannung oder einem Pegel, der im Wesentlichen nahe Null liegt, auf einen gewünschten Spannungspegel ansteigt, der von den an den Spannungstreiber 232 gekoppelten Komponenten benötigt wird, um die gewünschte Operation zu implementieren. Wenn die an eine an den Spannungstreiber 232 gekoppelte Komponente angelegte Spannung ansteigt, wird die Zeitspanne, in der sich der Spannungspegel ändert, hierin als Laden, Vorladen oder Hochfahren bezeichnet.
  • An einem anderen Punkt während einer Operation kann der vom Spannungstreiber 232 bereitgestellte Spannungspegel ein Analogsignal aufweisen, das so konfiguriert ist, dass es einen Spannungspegel unterhält, der von den an den Spannungstreiber 232 gekoppelten Komponenten für eine bestimmte Phase der Implementierung einer gewünschten Operation benötigt wird. Da die an eine an den Spannungstreiber 232 gekoppelte Komponente angelegte Spannung im Wesentlichen auf dem gewünschten Spannungsniveau bleibt, wird die Zeitspanne hierin als stationärer oder stabiler Zustand bezeichnet.
  • An einem anderen Punkt während einer Operation kann der vom Spannungstreiber 232 bereitgestellte Spannungspegel ein Analogsignal aufweisen, das von einem gewünschten Spannungspegel auf einen niedrigeren Spannungspegel, einen Massepegel oder eine Nullspannung oder einen Pegel, der für eine gewünschte Operation im Wesentlichen nahe bei null liegt, absinkt. Da die an eine an den Spannungstreiber 232 gekoppelte Komponente angelegte Spannung abnimmt, wird die Periode, in der sich der Spannungspegel ändert, hierin als Entladen, Nachladen oder Herunterfahren bezeichnet.
  • Die Zustandsmaschine 208 stellt in einer Ausführungsform eine Steuerung von Speicherungs- und/oder Speicheroperationen auf Chip-Ebene bereit. Der On-Chip-Adressdecoder 210 bietet eine Adressschnittstelle zur Konvertierung zwischen der vom Host oder einer Speichersteuerung verwendeten Adresse und der vom Zeilendecoder A 216, Zeilendecoder B 218, Spaltendecoder A 224a und Spaltendecoder B 226 verwendeten Hardware-Adresse. Die Zustandsmaschine 208 schließt eine Logik zum Aktivieren und Steuern des Spannungstreibers 232 und andere Logik ein, die mit Schaltungen in elektrischer Kommunikation mit dem Spannungstreiber 232 gekoppelt ist.
  • In einer Ausführungsform kann eine oder eine beliebige Kombination aus Die-Steuerung 206, Spannungstreiber 232, On-Chip-Adressdecoder 210, Zustandsmaschine 208, Zeilendecoder A 216, Zeilendecoder B 218, Spaltendecoder A 224, Spaltendecoder B 226, Lese-/Schreibschaltungen A 220, Lese-/Schreibschaltungen B 222 und/oder Speicherungssteuerung 126 als eine oder mehrere Verwaltungsschaltungen bezeichnet werden.
  • 3 stellt eine Ausführungsform einer NAND-Kette 300, die eine Vielzahl von Speicherungszellen aufweist, dar. Die in 3 dargestellte NAND-Kette 300 schließt in einigen Ausführungsformen vier Transistoren (Transistor 302, Transistor 304, Transistor 306 und Transistor 308) ein, die in Reihe geschaltet und zwischen einem ersten Auswahltransistor 310 und einem zweiten Auswahltransistor 312 angeordnet sind. In einigen Ausführungsformen enthalten der Transistor 302, der Transistor 304, der Transistor 306 und der Transistor 308 jeweils ein Steuergate mit einer Charge-Trap-Schicht 330. Steuergate 322, Steuergate 324, Steuergate 326 und Steuergate 328 sind in einer Ausführung mit einer Wortleitung verbunden oder weisen einen Abschnitt davon auf. In einer weiteren Ausführungsform sind Transistor 302, Transistor 304, Transistor 306 und Transistor 308 Speicherungszellen, Speicherelemente oder dergleichen, die auch als Speicherzellen bezeichnet werden. In einigen Ausführungsformen kann eine einzelne Speicherungszelle mehrere Transistoren einschließen.
  • Der erste Auswahltransistor 310 steuert/verbindet in einigen Ausführungsformen die NAND-Kette 300 über ein Drain-Auswahl-Gate / Auswahl-Gate-Drain (SGD) mit einer Bitleitung 314. Der zweite Auswahltransistor 312 steuert/verbindet in bestimmten Ausführungsformen die NAND-Kette 300 über ein Source-Auswahl-Gate/Auswahl-Gate-Source (SGS) mit einer Source-Leitung 316. Der erste Auswahltransistor 310 wird in einer weiteren Ausführungsform durch Anlegen einer Spannung an ein entsprechendes Auswahl-Gate 318 gesteuert. Der zweite Auswahltransistor 312 wird in einigen Ausführungsformen durch Anlegen einer Spannung an das entsprechende Auswahl-Gate 320 gesteuert.
  • Wie in 3 gezeigt, ist die Source-Leitung 316 in einer Ausführungsform mit den Sources jedes Transistors/jeder Speicherungszelle in der NAND-Kette 300 verbunden. Die NAND-Kette 300 kann in einigen Ausführungsformen einige Speicherungszellen, die programmiert wurden und einige Speicherungszellen, die nicht programmiert wurden, einschließen.
  • 4 ist ein Schaltplan, der ein Speicherarray 400 darstellt, das eine Vielzahl von NAND-Ketten aufweist. Eine Architektur für ein Speicherarray mit einer NAND-Struktur kann eine beträchtliche Anzahl von NAND-Ketten einschließen. 4 veranschaulicht beispielsweise ein Speicherarray 400, das die NAND-Kette 402, NAND-Kette 404, NAND-Kette 406 und NAND-Kette 408 einschließt. In der dargestellten Ausführungsform schließt jede NAND-Kette Drain-Auswahltransistoren (Auswahltransistor 410, Auswahltransistor 412, Auswahltransistor 414 und Auswahltransistor 416), Source-Auswahltransistoren (Auswahltransistor 418, Auswahltransistor 420, Auswahltransistor 422, Auswahltransistor 424) und Speicherungszellen (426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454 und 456) ein. Bei den Speicherungszellen kann es sich um Transistoren handeln, die eine Charge-Trap-Schicht 458 enthalten. Während der Einfachheit halber vier Speicherelemente pro NAND-Kette veranschaulicht werden, können einige NAND-Ketten eine beliebige Anzahl von Speicherelementen einschließen, z. B. zweiunddreißig, vierundsechzig oder dergleichen Speicherelemente/Speicherungszellen.
  • NAND-Kette 402, NAND-Kette 404, NAND-Kette 406 und NAND-Kette 408 sind in einer Ausführungsform über den Source-Auswahltransistor 418, den Auswahltransistor 420, den Auswahltransistor 422 bzw. den Auswahltransistor 424 mit einer Source-Leitung 460 verbunden. Eine Source-Auswahlleitung SGS kann zur Steuerung der Source-seitigen Auswahltransistoren 418, 434, 450, 466 verwendet werden. Die verschiedenen NAND-Ketten sind in einer Ausführung entsprechend über den Drain-Auswahltransistor 410, den Auswahltransistor 412, den Auswahltransistor 414 und den Auswahltransistor 416 mit der Bitleitung 462, der Bitleitung 464, der Bitleitung 466 und der Bitleitung 468 verbunden, wie in der Abbildung gezeigt. Die Drain-Auswahltransistoren können durch eine Drain-Auswahlleitung SGD gesteuert werden. In einigen Ausführungsformen müssen die Auswahlleitungen nicht notwendigerweise unter den NAN D-Ketten gemeinsam sein; das heißt, unterschiedliche Auswahlleitungen können für verschiedene NAND-Ketten vorgesehen sein.
  • Wie vorstehend beschrieben, weist jede Wortleitung WL0-WLn eine oder mehrere Speicherungszellen auf. In der dargestellten Ausführungsform weisen die Bitleitung 462, Bitleitung 464, Bitleitung 466 und Bitleitung 468 sowie die jeweilige NAND-Kette 402, NAND-Kette 404, NAND-Kette 406 und NAND-Kette 408 jeweils die Spalten des Speicherarrays 400, des Speicherblocks, des physischen Löschblocks 470 oder dergleichen auf. Diese Spalten können auch als Kanäle bezeichnet werden. Die Wortleitungen WL0-WLn weisen in einigen Ausführungsformen die Zeilen des Speicherarrays 400, des Speicherblocks, des physischen Löschblocks 470 oder dergleichen auf. Jede Wortleitung WL0-WLn verbindet in einigen Ausführungsformen die Steuergates jeder Speicherungszelle in einer Zeile. Alternativ kann die Steuergate-Funktionalität durch die Wortleitungen WL0-WLn selbst bereitgestellt werden. In einigen Ausführungsformen kann eine Wortleitung WL0-WLn Dutzende, Hunderte, Tausende, Millionen von Speicherungszellen einschließen.
  • In einer Ausführungsform ist jede Speicherungszelle so konfiguriert, dass sie Daten speichert. Beispielsweise kann, wenn ein digitales Datenbit gespeichert wird, der Bereich möglicher Schwellenspannungen („VTH“) jeder Speicherungszelle in zwei Bereiche unterteilt werden, denen logische Daten „1“ und „0“ zugewiesen sind. Wie hierin verwendet, nimmt die Schwellenwertspannung auf die Größe der an das Gate einer Speicherungszelle angelegten Spannung Bezug, die ausreicht, um die Speicherungszelle zu aktivieren. In Ausführungsformen, in denen die Speicherungszelle ein NAND-Transistor ist, ist die Schwellenwertspannung eine ausreichende Spannung, die an einen Gate-Anschluss des Transistors angelegt wird und den Transistor veranlasst, Strom zwischen seinem Source-Anschluss und seinem Drain-Anschluss zu leiten. In einem Beispiel eines Flash-Speichers vom NAND-Typ kann die VTH negativ sein, nachdem die Speicherungszellen gelöscht wurden, und als logische „1“ definiert sein. In einer Ausführungsform ist die VTH nach einer Programmoperation positiv und als logische „0“ definiert.
  • Wenn die VTH negativ ist und ein Lesevorgang versucht wird, werden in einigen Ausführungsformen die Speicherungszellen eingeschaltet, um anzuzeigen, dass eine logische „1“ gespeichert wird. Wenn die VTH positiv ist und ein Lesevorgang versucht wird, wird in einer weiteren Ausführungsform eine Speicherungszelle nicht eingeschaltet, was anzeigt, dass Logik „0“ gespeichert ist. Jede Speicherungszelle kann auch mehrere Informationspegel speichern, wie zum Beispiel, mehrere Bits digitaler Daten. In einer solchen Ausführungsform wird der Bereich des VTH-Werts in die Anzahl von Datenebenen unterteilt. Wenn beispielsweise vier Informationspegel in jeder Speicherungszelle gespeichert werden können, werden vier VTH-Bereiche den Datenwerten „11“, „10“, „01“ und „00“ zugewiesen.
  • In einem Beispiel eines Speichers vom NAND-Typ kann die VTH nach einem Löschvorgang negativ und als „11“ definiert sein. Positive VTH-Werte können für die Zustände „10“, „01“ und „00“ verwendet werden. In einer Ausführungsform hängt die spezifische Beziehung zwischen den in die Speicherungszellen programmierten Daten und den Schwellenwertspannungsbereichen der Speicherzellen von dem für die Speicherzellen verwendeten Datenkodierungsschema ab.
  • Die Speicherungssteuerung 126 von 1 kann in einer Vielzahl von physischen Löschblöcken 470 von Wortleitungen innerhalb eines oder mehrerer nichtflüchtiger Speicherelemente 122 in bestimmten Ausführungsformen unter Verwendung von Adressen der Wortleitungen organisiert sein, so dass die Wortleitungen logisch in einer monoton aufsteigenden Folge organisiert sind (z. B. Dekodieren und/oder Übersetzen von Adressen für Wortleitungen in eine monoton aufsteigende Folge oder dergleichen). Hierin werden die Speicherkettenkomponenten angegeben, die einen physischen Löschblock 470 aufweisen können. In einer weiteren Ausführungsform können Wortleitungen des physikalischen Löschblocks 470 physisch in einer monoton ansteigenden Folge von Wortleitungsadressen angeordnet sein, wobei nacheinander adressierte Wortleitungen auch physisch aneinander angrenzen (z. B. WL0, WL1, WL2, ... WLN).
  • 5 veranschaulicht eine Speicherungsvorrichtung 500 gemäß einer Ausführungsform. In der veranschaulichten Ausführungsform ist die Speicherungsvorrichtung 500 in logische Löschblöcke (LEBs) organisiert, wie durch den logischen Löschblock 0 502 und den logischen Löschblock n 504 gezeigt wird. Diese LEBs schließen mehrere physische Löschblöcke (PEBs) ein, veranschaulicht durch den physischen Löschblock 0 506, den physischen Löschblock n 508, den physischen Löschblock 0 510, den physischen Löschblock n 512, den physischen Löschblock 0 514 und den physischen Löschblock n 516. Diese befinden sich in separaten Speicher-Dies, gezeigt als Die 0 518, Die 1 520 und Die n 522. Der Fachmann kennt die Beziehung und die Unterschiede zwischen einem physischen Löschblock und einem logischen Löschblock und kann auf den einen oder den anderen oder auf beide Bezug nehmen, indem er die Kurzhandversion des Löschblocks verwendet. Der Fachmann versteht aus dem Kontext der Referenz zu einem Löschblock, ob es sich um einen physischen oder logischen Löschblock handelt. Die Konzepte und Techniken, die in der Technik verwendet und in den Ansprüchen angegeben werden, können gleichermaßen auf physische Löschblöcke oder logische Löschblöcke angewandt werden.
  • Ein logischer Löschblock wie der logische Löschblock 0 502 ist ferner in mehrere logische Seiten (logische Seite 524) unterteilt, die wiederum mehrere physische Seiten einschließen, wie die physische Seite 0 526, die physische Seite n 528, die physische Seite 0 530, die physische Seite n 532, die physische Seite 0 534 und die physische Seite n 536. Physische Seiten können mehrere Pakete einschließen, die in Fehlerkorrekturcode-Blöcken (ECC-Blöcken) gruppiert werden können.
  • Wie hierin verwendet, nimmt der Begriff „Löschblock“ im Großen und Ganzen auf einen logischen oder physischen Löschblock Bezug. In einer Ausführungsform stellt ein physischer Löschblock die kleinste Speichereinheit innerhalb eines bestimmten Dies dar, die zu einem bestimmten Zeitpunkt gelöscht werden kann (z. B. aufgrund der Verdrahtung von Speicherungszellen auf dem Die). In einer Ausführungsform stellen logische Löschblöcke den kleinsten Block dar, der von einer Speicherungssteuerung als Reaktion auf den Empfang eines Löschbefehls gelöscht werden kann. Wenn die Speicherungssteuerung in einer solchen Ausführungsform einen Löschbefehl erhält, der einen bestimmten logischen Löschblock spezifiziert, kann die Speicherungssteuerung jeden physischen Löschblock innerhalb des Blocks gleichzeitig löschen. Es wird darauf hingewiesen, dass physische Löschblöcke innerhalb eines bestimmten logischen Löschblocks (z. B. physischer Löschblock 0 506 und physischer Löschblock 0 510 innerhalb des logischen Löschblocks 0 502) als zusammenhängend innerhalb eines physischen Adressraums betrachtet werden können, auch wenn sie sich in getrennten Dies befinden. Somit kann der Begriff „zusammenhängend“ nicht nur auf Daten anwendbar sein, die innerhalb desselben physischen Mediums gespeichert sind, sondern auch auf Daten, die auf getrennten Medien gespeichert sind.
  • In einer Ausführungsform stellt eine physische Seite den kleinsten Speicherblock innerhalb eines gegebenen Dies dar, der zu einem gegebenen Zeitpunkt beschrieben werden kann. In einer Ausführungsform ist eine logische Seite der kleinste beschreibbare Speicherblock, der von der Speicherungssteuerung unterstützt wird. (In einer Ausführungsform kann die Speicherungssteuerung einen Puffer einschließen, der so konfiguriert ist, dass er bis zu einer logischen Seite Daten speichern kann; nach dem Füllen des Puffers kann die Speicherungssteuerung den Inhalt des Puffers gleichzeitig auf eine einzige logische Seite schreiben.) In einigen Fällen kann die Aufteilung einer logischen Seite auf mehrere Dies zu schnelleren Zugriffszeiten für einen Datensatz führen, wenn auf mehrere Dies parallel zugegriffen wird.
  • In einigen Ausführungsformen kann ein Treiber Metadaten 136 (wie in 1 gezeigt) mit einem oder mehreren der Speicherblöcke (logische Löschblöcke, physische Löschblöcke, logische Seiten und/oder physische Seiten) verbinden. Wie hierin verwendet, nimmt der Begriff „Metadaten“ auf Systemdaten Bezug, die zur Erleichterung des Betriebs der Festkörperspeicherungsvorrichtung 500 verwendet werden können; Metadaten stehen z. B. im Gegensatz zu Daten, die von einer Anwendung produziert werden (d. h. „Anwendungsdaten“) oder Formen von Daten, die von einem Betriebssystem als „Benutzerdaten“ betrachtet werden würden. Beispielsweise kann ein logischer Löschblock in einer Ausführungsform Metadaten einschließen, die ohne Einschränkung Nutzungsstatistiken (z. B. die Anzahl der an diesem Block durchgeführten Programm-Löschzyklen), Zustandsstatistiken (z. B. ein Wert, der angibt, wie oft beschädigte Daten aus diesem Block gelesen wurden), Sicherheits- oder Zugriffskontrollparameter, Sequenzinformationen (z. B. ein Sequenzindikator), ein Kennzeichen für persistente Metadaten (z. B. eines, das die Aufnahme in eine atomare Speicheroperation anzeigt), eine Transaktionskennung oder dergleichen angeben. In einigen Ausführungsformen schließt ein logischer Löschblock Metadaten ein, die die logischen Adressen identifizieren, für die er Daten speichert, sowie die jeweilige Anzahl der gespeicherten Datenpakete für jeden logischen Block oder Sektor innerhalb eines logischen Adressraums 134.
  • Ein logischer Adressraum repräsentiert die Organisation von Daten, wie sie von übergeordneten Prozessen wie Anwendungen und Betriebssystemen wahrgenommen wird. In einer Ausführungsform stellt ein physischer Adressraum die Organisation von Daten auf den physischen Medien dar. Dies wird in 6 näher gezeigt.
  • In einer Ausführungsform kann der Dateikopf innerhalb eines Datenpakets Paket-Metadaten einschließen, wie z. B. ein oder mehrere LBAs, die den enthaltenen Daten, der Paketgröße, Verknüpfungen zu anderen Paketen, Fehlerkorrektur-Prüfsummen usw. zugeordnet sind. In verschiedenen Ausführungsformen kann ein Treiber diese Informationen zusammen mit anderen Formen von Metadaten verwenden, um den Betrieb der Speicherungsvorrichtung 500 zu verwalten. Der Treiber könnte diese Informationen beispielsweise dazu verwenden, die Durchführung von Lese- und Schreibvorgängen zu erleichtern, die Speicherungsvorrichtung 500 in einen früheren Zustand zurückzuversetzen (einschließlich z. B. der Rekonstruktion verschiedener vom Treiber verwendeter Datenstrukturen und/oder der Wiedergabe einer Sequenz von Speicheroperationen, die auf der Speicherungsvorrichtung 500 durchgeführt wurden), usw. Verschiedene Formen dieser Metadaten können zur Schätzung der Zugriffsfrequenzstatistik verwendet werden.
  • 6 veranschaulicht eine Beziehung zwischen einem logischen Adressraum 134 und einem physischen Adressraum 602 auf dem Speicherarray. Der logische Adressraum 134 ist in einer Ausführungsform in logische Adressen unterteilt, die den jeweiligen Datenblöcken entsprechen. In einigen Ausführungsformen sind die logischen Adressen LBAs (in anderen Ausführungsformen können die logischen Adressen einer anderen Form von logischen Bezeichnern entsprechen). In einer Ausführungsform ist ein Namensraum ein Bereich von zusammenhängenden eindeutigen und monoton ansteigenden logischen Blockadressen.
  • In einer Ausführungsform können Datenblöcke die kleinste Datenmenge darstellen, die einer gegebenen logischen Adresse zugeordnet ist. Datenblöcke können ferner in Sektoren unterteilt werden. Zum Beispiel kann ein Sektor 512 Bytes groß sein und ein Datenblock kann 8 Sektoren einschließen und 4 KB groß sein. Datenblöcke sind Raummengen, die dem physischen Adressraum 602 zugeordnet sind und dort Daten speichern. Die LBAs stellen die Datenblöcke im logischen Adressraum 134 dar.
  • Der logische Adressraum 134 ist ferner in Namensräume unterteilt. Ein Namensraum ist eine logische Unterteilung des logischen Adressraums 134. Ein Namensraum kann auch austauschbar als logische Partition oder logische Einheitsnummer (LUN) bezeichnet werden. In einer Ausführungsform ist ein Namensraum ein Bereich von zusammenhängenden und monoton ansteigenden logischen Blockadressen. Jeder Namensraum einer Vielzahl von Namensräumen, die im logischen Adressraum 134 repräsentiert sind, weist einen Satz von logischen Blockadressen (LBA) auf. 6 veranschaulicht als Beispiel eine Aufteilung des logischen Adressraums 134 in drei Namensräume (Namensraum 604, Namensraum 606, Namensraum 608). Die logischen Blockadressen der einzelnen Namensräume sind zwischen den Namensräumen nicht eindeutig. Jeder Namensraum weist z. B. LBA0, LBA1, LB2, usw. auf. Um einen Namensraum LBA in einen LBA im logischen Adressraum 134 zu übersetzen, wird jeder Namensraum durch eine Namensraumkennung (NSID, z. B. NSID 610, NSID 612, NSID 614) eindeutig identifiziert.
  • Eine Namensraumkennung (NSID), wie sie hierin verwendet wird, weist jede Angabe auf, die einen Namensraum in Bezug auf andere Namensräume innerhalb desselben logischen Adressraums eindeutig identifiziert. Beispielsweise kann eine Namensraumkennung eine Dateikennung und/oder einen Offset aus einem Dateisystem-Namensraum, eine logische Einheitsnummer (LUN), eine LUN-ID und einen Offset aus einem LUN-Namensraum, einen LBA oder einen LBA-Bereich aus einem Speicher-Namensraum, eine oder mehrere virtuelle Speicheradressen aus einem virtuellen Speicher-Namensraum, eine flüchtige Speicheradresse aus einem flüchtigen Speicher-Namensraum der Host-Vorrichtung, einen Objektbezeichner, eine Netzwerkadresse, eine GUID, UUID, eine BAR-Adresse oder ein Adressbereich aus einem BAR-Namensraum, einen anderen logischen Bezeichner oder dergleichen einschließen. In einer weiteren Ausführungsform kann eine Namensraumkennung eine Bezeichnung oder einen Namen für einen Namensraum aufweisen, wie z. B. ein Verzeichnis, einen Dateipfad, eine Vorrichtungskennung oder dergleichen. In einer anderen Ausführungsform kann eine Namensraumkennung eine physische Adresse oder einen Speicherort für Daten aufweisen.
  • Unter Bezugnahme auf 6 wird einer Vielzahl von Host-Vorrichtungen (Host 616, Host 618 und Host 620) mindestens ein durch eine entsprechende NSID (z. B. NSID 610, NSID 612, NSID 614) bezeichneter Namensraum zugewiesen. Die Hosts weisen den LBAs Schreibbefehle (und die zugehörigen Daten) innerhalb des ihnen zugewiesenen Namensraums zu. Die LBAs des Namensraums reichen von LBA0 bis LBAn, in einem Beispiel. (6 veranschaulicht, dass jeder Namensraum die gleiche Größe hat, andere Ausführungsformen haben jedoch unterschiedlich große Namensräume). In diesem Beispiel wird dem Host 616 der Namensraum 604 zugeteilt/zugewiesen, der durch NSID 610 identifiziert wird. Host 618 wird der Namensraum 606 zugeteilt/zugewiesen, der durch NSID 612 identifiziert wird. Schließlich wird Host 620 der Namensraum 608 zugeteilt/zugewiesen, der durch NSID 614 identifiziert wird.
  • Die Speicherungssteuerung 126 verwaltet, wo die Host-Daten im physischen Speicher gespeichert werden. Insbesondere übersetzt die Speicherungssteuerung 126 logische Kennungen im logischen Adressraum 134 in physische Adressen im physischen Adressraum 602 oder ordnet sie einander zu. In der in 6 veranschaulichten Ausführungsform übersetzt die Speicherungssteuerung 126 eine logische Kennung, die eine NSID und ein LBA einschließt, in eine physische Adresse für das LBA auf den Speicherungsmedien. Die Speicherungssteuerung 126 kann eine Tabelle oder eine andere Datenstruktur entwickeln, die die NSID und LBA der vom Host verwendeten Daten mit einer physischen Adresse innerhalb des physischen Adressraums 602 verknüpft.
  • Der physische Adressraum 602 ist in einer Ausführungsform in physische Adressen unterteilt, die der Anordnung der Daten auf den physischen Aufzeichnungsmedien entsprechen. In den hierin beschriebenen Ausführungsformen sind die physischen Aufzeichnungsmedien asymmetrische, einmal beschreibbare Medien, wie z. B. nichtflüchtige Speichermedien 120. Die Speicherungssteuerung 126 verwaltet die nichtflüchtigen Speichermedien 120 so, dass bestimmte Herausforderungen von asymmetrischen, einmal beschreibbaren Medien überwunden werden können. Eine Technik, die von den nichtflüchtigen Speichermedien 120 verwendet wird, besteht darin, einen Satz offener Löschblöcke 624 zu unterhalten, die für den Empfang von Daten, die Schreibbefehlen zugeordnet sind, vorbereitet sind.
  • Ein offener Löschblock ist ein Löschblock (logisch oder physisch), der zur Aufnahme von Datenblöcken vorbereitet ist. Normalerweise puffert die Speicherungssteuerung 126 Datenblöcke, bis eine ganze Seite (logisch oder physisch) von Datenblöcken bereit ist, in das nichtflüchtige Speicherarray geschrieben zu werden. Die Speicherungssteuerung 126 schreibt dann diese gepufferten Datenblöcke parallel, indem sie eine ganze Seite (normalerweise eine logische Seite) auf einmal schreibt. Die Speicherungssteuerung 126 kann einen Pointer zur nächsten physischen Adresse für eine nachfolgende logische Seite unterhalten. Da die Speicherungssteuerung 126 über Informationen darüber verfügt, wie Datenblöcke in einer logischen Seite organisiert sind, kann die Speicherungssteuerung 126 eine physische Adresse für jeden logischen Block bestimmen. Im Allgemeinen werden Datenblöcke zum Löschen von Blöcken in einer vorgegebenen Reihenfolge geschrieben, um eine hohe Leistung und Zuverlässigkeit unter Verwendung der nichtflüchtigen Speichermedien 120 zu gewährleisten. Wenn Datenblöcke geschrieben werden, nimmt der verfügbare Platz innerhalb des Löschblocks für neue Datenblöcke ab. Schließlich füllt sich der Löschblock und der Löschblock wird geschlossen.
  • Ein geschlossener Löschblock ist ein Löschblock, der voll von Datenblöcken ist und keinen physischen Platz mehr für Datenblöcke hat. Ein Löschblock schließt bestimmte Metadaten ein, um die Verwaltung des Löschungsblocks zu erleichtern. Neben anderen Daten können die Metadaten Zeitangaben darüber identifizieren, wann der Löschblock zuletzt gelöscht wurde, wann der Löschblock zum ersten Mal beschrieben wurde, wie oft ein Löschblock gelöscht wurde und dergleichen. In bestimmten Ausführungsformen können diese Metadaten auch Daten anzeigen, die für die Durchführung von Wartungsarbeiten am Löschblock nützlich sind. In bestimmten Ausführungsformen können die Metadaten angeben, wie viele Datenblöcke im Löschblock gültige Daten enthalten, also Daten, die seit dem letzten Schreiben nicht geändert wurden. Die Speicherungssteuerung 126 bereitet die Metadaten vor und kann die Metadaten mit dem Löschblock z. B. in einem Dateikopf speichern. In bestimmten Ausführungsformen wird der Löschblock, sobald die Metadaten gespeichert sind, als geschlossener Löschblock betrachtet, auch wenn der Löschblock nicht mit Datenblöcken gefüllt war. Sobald ein Löschblock zu einem geschlossenen Löschblock wird, werden keine Datenblöcke mehr in den geschlossenen Löschblock geschrieben, in einer Ausführungsform.
  • 6 veranschaulicht einen Satz geschlossener Löschblöcke 622 (CEB0-CEBn), einen Satz offener Löschblöcke 624 (OEB0-OEB2) und einen Satz freier Löschblöcke 626 (FEB0, FEB1). Die freien Löschblöcke 626 sind Löschblöcke, die durch die Speicherungssteuerung 126 gelöscht wurden und keine Daten mehr enthalten. Neue Original-Löschblöcke, die noch nicht beschrieben wurden, sind ebenfalls freie Löschblöcke 626.
  • In einer Ausführungsform kann der Inhalt von Datenblöcken als Pakete innerhalb von logischen Löschblöcken gespeichert werden.
  • In einer Ausführungsform kann der physische Adressraum 602 als eine Protokollstruktur organisiert sein, in der Schreiboperationen nur an einem oder mehreren Anhängepunkten durchgeführt werden können, wie z. B. an Stellen innerhalb der offenen Löschblöcke 624.
  • In der veranschaulichten Ausführungsform dürfen Daten nur in offenen Löschblöcken 624 gespeichert werden. Die Speicherungssteuerung 126 kann zwei oder mehr offene Löschblöcke 624 gleichzeitig verwalten. Wenn zu einem bestimmten Zeitpunkt mehr als ein offener Löschblock geöffnet ist, kann die Speicherungssteuerung 126 mehrere Schreibbefehle gleichzeitig verarbeiten. Die Auswirkungen auf die Latenz während eines Schreibvorgangs in einem offenen Löschblock können durch die Durchführung anderer Schreibvorgänge auf andere offene Löschblöcke gemildert werden. Die Anzahl der offenen Löschblöcke 624, die eine Speicherungssteuerung 126 verwaltet, kann durch die Menge des flüchtigen Speichers, der der Speicherungssteuerung 126 zur Verfügung steht, begrenzt werden. Die Speicherungssteuerung 126 kann offene Löschblöcke 624 mit Hilfe von Pointern (P1, P2, P3) verfolgen. In der veranschaulichten Ausführungsform sind drei Pointer gezeigt, die drei entsprechende offene Löschblöcke 624 bezeichnen. Verschiedene Implementierungen können jedoch mehr oder weniger als drei Punkte und mehr oder weniger als drei entsprechende offene Löschblöcke 624 einschließen.
  • In einigen Ausführungsformen kann ein offener Löschblock für das Speichern von Daten bestimmt sein, die mit einer einzigen Namensraumkennung gekennzeichnet sind. Solche Daten können einem privaten Namensraum zugeordnet werden und müssen unter Umständen physisch und logisch von anderen Daten getrennt gespeichert werden. Dies wird im Hinblick auf 12 und 13 näher besprochen. In anderen Ausführungsformen können Daten in jeden offenen Löschblock geschrieben werden, aber es kann von Vorteil sein, Daten für zwei oder mehr Namensräume in einem bestimmten offenen Löschblock zu gruppieren. In einigen Fällen kann eine Schwellenwertanzahl von Seiten 628 (logische Seiten) als freier Speicher in jedem der offenen Löschblöcke 624 reserviert werden, so dass einige freie Löschblöcke 626 geöffnet werden müssen, selbst wenn in den derzeit offenen Löschblöcken 624 noch Platz vorhanden ist.
  • 7 veranschaulicht ein System 700 gemäß einer Ausführungsform. Dieses System weist die für die hierin offenbarte Lösung erforderliche Funktionalität auf und schließt ein Netzwerk 114, nichtflüchtige Speichervorrichtung(en) 118, eine Speicherungssteuerung 126, ein oder mehrere Hosts (Host 616, Host 618 und Host 620), eine Schreibdaten-Pipeline 702, eine Lesedaten-Pipeline 704, einen Workload-Analysator 706, einen Manager für offene Löschblöcke 708, Speicherungsbefehle 710, mindestens einen offenen Löschblocks 712 und einen Datenzuweiser 714 ein. 7 nimmt auf Elemente von 1, wie Zahlen, die auf ähnliche Elemente Bezug nehmen, Bezug. Die Speicherungssteuerung 126 schließt die Schreibdaten-Pipeline 702, die Lesedaten-Pipeline 704, den Workload-Analysator 706, den Manager für offene Löschblöcke 708 und den Datenzuweiser 714 ein.
  • In einer Ausführungsform sind Host 616, Host 618 und Host 620 Rechenvorrichtungen (z. B. Laptops, Desktops, Smartphones, Tablets, Digitalkameras). In einer anderen Ausführungsform sind die Hosts virtuelle Maschinen, die auf einer Rechenvorrichtung 104 betrieben werden.
  • Die Speicherungssteuerung 126 schließt eine Schreibdaten-Pipeline 702 zum Schreiben von Daten (sowohl System- als auch Benutzerdaten) in den Solid-State-Speicher (z. B. nichtflüchtige Speichermedien 120) und eine Lesedaten-Pipeline 704 zum Abrufen von Daten (System- und/oder Benutzerdaten), die auf dem Solid-State-Speicher gespeichert sind (z. B. nichtflüchtige Speichermedien 120), ein.
  • Die Schreibdaten-Pipeline 702 kann einen Paketierer einschließen, der Daten (auch als Datensegment bezeichnet) empfängt, die in den Solid-State-Speicher geschrieben werden sollen, und ein oder mehrere Datenpakete in der Größe des Solid-State-Speichers erstellt. Jedes Datenpaket kann einen Dateikopf und Daten aus dem Datensegment einschließen. Die Schreibdaten-Pipeline 702 kann einen ECC-Generator einschließen, der vor dem Schreiben der Datenpakete in den Solid-State-Speicher einen oder mehrere ECC-Blöcke für ein oder mehrere vom Paketierer empfangene Datenpakete erzeugt. Die Lesedaten-Pipeline 704 kann einen ECC-Decoder einschließen, der einen oder mehrere ECC-Blöcke, die aus dem Solid-State-Speicher abgerufen wurden, in ein oder mehrere Datenpakete konvertiert und etwaige Fehler in den dekodierten Daten korrigiert und/oder identifiziert. Die Lesedaten-Pipeline 704 kann einen Entpaketierer einschließen, der dekodierte Daten (die auch fehlerkorrigiert werden können) vom ECC-Decoder empfängt und das eine oder mehrere Datenpakete in Daten (Benutzer- oder Systemdaten) umwandelt, die zur Bedienung eines Lesebefehls verwendet werden können.
  • Der Workload-Analysator 706 verfolgt oder überwacht die Speicherungsbefehle 710, die vom nichtflüchtigen Speichersystem 102 empfangen werden, um Informationen über die Workloads zu bestimmen, die das nichtflüchtige Speichersystem 102 verarbeitet. Speicherungsbefehle, wie sie hierin verwendet werden, weisen Lesebefehle, Schreibbefehle, Wartungsbefehle, Diagnosebefehle, Testmodusbefehle und alle anderen Befehle auf, die ein Speicherungssteuerung 126 empfangen kann. Eine „Workload“, wie sie hierin verwendet wird, ist die Anzahl und Art der Speicherungsbefehle 710, die vom nichtflüchtigen Speichersystem 102 empfangen und/oder bedient werden, sowie das Resultat oder die Ergebnisse der Bedienung dieser Speicherungsbefehle 710. Die Workload kann auch jegliche Statistik über die Speicherungsbefehle 710 einschließen. In einer Ausführungsform unterhält der Workload-Analysator 706 Statistiken über die Speicherungsbefehle 710, einschließlich, aber nicht beschränkt auf, wie viele Lesebefehle über einen bestimmten Zeitraum empfangen wurden, wie viele Schreibbefehle über einen bestimmten Zeitraum empfangen wurden, wie sich die Anzahl der empfangenen Lesebefehle zur Anzahl der empfangenen Schreibbefehle verhält, wie viele Fehler in den zur Erfüllung der Lesebefehle abgerufenen Daten gefunden wurden, wie viele korrigierbare Fehler in den zur Erfüllung der Lesebefehle abgerufenen Daten gefunden wurden, wie viele Schreibbefehle erfolgreich waren, wie viele Schreibbefehle fehlgeschlagen sind und dergleichen.
  • Während der Workload-Analysator 706 die Speicherungsbefehle 710 (auch als Eingabe-IO-Transaktionen bezeichnet) überwacht, verfolgt der Workload-Analysator 706 Workload-Attribute, die die Workloads definieren, beschreiben oder kennzeichnen. Wie hierin verwendet, ist ein „Workload-Attribut“ jede Qualität, jede Charakteristik, jedes Attribut, jedes Merkmal, jedes Verhalten, jede Eigenheit oder jede Eigenschaft über eine Workload. Ein Workload-Attribut kann explizit identifiziert und definiert werden, z. B. durch einen Speicherungs-Client. Alternativ kann ein Workload-Attribut impliziert werden, das basierend auf anderen Informationen abgeleitet werden kann. Beispiele für Workload-Attribute werden in Bezug auf 9 beschrieben.
  • In einer Ausführungsform verfolgt der Workload-Analysator 706 Workload-Attribute darüber, wie sich die Workloads auf die in den Speicherungsbefehlen 710 referenzierten Namensräume beziehen. In einer weiteren Ausführungsform verwendet der Workload-Analysator 706 die in den Speicherungsbefehlen 710 eingeschlossene Namensraumkennung, um zu verfolgen, wie sich Namensräume mit einem ersten Satz von Workload-Attributen auf Namensräumen mit anderen Workload-Attributen, insbesondere ähnlichen Workload-Attributen, beziehen.
  • In einer Ausführungsform überprüft oder analysiert der Workload-Analysator 706 die Workload-Attribute und bestimmt Muster, Ähnlichkeiten, Beziehungen und/oder Gemeinsamkeiten zwischen Namensräumen, die auf den Workload-Attributen basieren. In bestimmten Ausführungsformen werden diese Muster, Ähnlichkeiten, Beziehungen und/oder Gemeinsamkeiten als Hinweise bezeichnet und können zur Optimierung der Leistung der nichtflüchtigen Speichervorrichtung(en) 118 verwendet werden. In bestimmten Ausführungsformen bestimmt oder leitet der Workload-Analysator 706 eine Beziehung zwischen zwei Namensräumen basierend auf Workload-Attributen für jeden Namensraum ab. Eine Beziehung ist jede Verbindung oder Assoziation zwischen den Workload-Attributen eines ersten Namensraums in Bezug auf einen zweiten Namensraum. In bestimmten Ausführungsformen ist die Beziehung explizit und wird basierend auf einer Überprüfung der Workload-Attribute festgelegt. In anderen Ausführungsformen ist die Beziehung implizit und wird basierend auf einer Überprüfung der Workload-Attribute abgeleitet.
  • Der offene Löschblock-Manager 708 verwaltet, welche Löschblöcke offene Löschblöcke, welche geschlossene Löschblöcke und welche freie Löschblöcke sind. Der Manager für offene Löschblöcke 708 verfolgt die physische Adresse innerhalb jedes offenen Löschblocks 712, wo eine nachfolgende Seite (physisch oder logisch) in diesen bestimmten offenen Löschblock (z. B. P1, P2, P3) geschrieben werden kann, und rückt die Pointer (P1, P2, P3) vor, wenn Daten in offene Löschblöcke geschrieben werden. Der Manager für offene Löschblöcke 708 bestimmt, wann die offenen Löschblöcke voll werden, schließt offene Löschblöcke, um geschlossene Löschblöcke zu bilden, wandelt freie Löschblöcke in offene Löschblöcke um und koordiniert sich mit anderen Komponenten der Speicherungssteuerung 126, um sicherzustellen, dass genügend freie Löschblöcke zur Verfügung stehen.
  • Der Datenzuweiser 714 koordiniert sich mit dem Workload-Analysator 706 und dem Manager für offene Löschblöcke 708, um einen optimalen physischen Speicherort für das Schreiben von Daten auf die nichtflüchtigen Speichermedien 120 zu bestimmen. In einer Ausführungsform weist der Datenzuweiser 714 den Manager für offene Löschblöcke 708 an, wo Schreibdaten innerhalb der aktuellen offenen Löschblöcke gespeichert werden sollen. In einer bestimmten Ausführungsform weist der Datenzuweiser 714 den Manager für offene Löschblöcke 708 an, Schreibdaten für einen ersten Namensraum zusammen mit Schreibdaten für einen zweiten Namensraum zusammen im gleichen offenen Löschblock zu speichern. Auf diese Weise nutzt die Speicherungssteuerung 126 eine Beziehung zwischen dem ersten und dem zweiten Namensraum aufgrund ihrer Workload-Attribute. Durch Gruppieren von Schreibdaten für zwei Namensräume im gleichen offenen Löschblock nutzt die Speicherungssteuerung 126 die Beziehung, um zu optimieren, wo die Schreibdaten auf den nichtflüchtigen Speichermedien 120 gespeichert werden.
  • In bestimmten Ausführungsformen bestimmt der Datenzuweiser 714 basierend auf einem mit den Schreibdaten empfangenen ersten Namensraumbezeichner, dass die Schreibdaten zu einem ersten Namensraum gehören, und bestimmt basierend auf einem mit anderen Schreibdaten empfangenen zweiten Namensraumbezeichner, dass die Schreibdaten zu einem zweiten Namensraum gehören.
  • In einigen Ausführungsformen verfolgt der Workload-Analysator 706 die Namensraumkennung für jeden Namensraum, der den in jedem offenen Löschblock 712 gespeicherten Daten zugeordnet ist, und gleicht die Namensraumkennungen ab, um kürzlich empfangene Schreibdaten einem offenen Löschblock zuzuordnen, der Daten für einen Namensraum speichert, der eine Beziehung zu dem Namensraum der kürzlich empfangenen Schreibdaten hat.
  • 8 veranschaulicht einen Workload-Analysator 800 im Detail gemäß einer Ausführungsform. Der Workload-Analysator 800 weist einen Monitor 802, einen Komparator 804, einen Tracker 806, einen Satz von Workload-Attributen 808 und eine Namensraum-Beziehungstabelle 810 auf. Der Monitor 802 koordiniert sich mit der Schreibdaten-Pipeline 702 und der Lesedaten-Pipeline 704, um Speicherungsbefehle zu identifizieren, zu zählen und zu verfolgen, die von der Speicherungssteuerung 126 empfangen und gewartet werden. Insbesondere überwacht der Monitor 802 in einer Ausführungsform Speicherungsbefehle, die einen oder mehrere Namensräume referenzieren, indem er die in jedem Speicherungsbefehl verwendete Namensraumkennung identifiziert.
  • In bestimmten Ausführungsformen überwacht der Monitor 802 alle Speicherungsbefehle, die von der Speicherungssteuerung 126 bedient werden.
  • In einer anderen Ausführungsform überwacht der Monitor 802 Speicherungsbefehle, bis ein Überwachungsschwellenwert erreicht ist. Der Überwachungsschwellenwert kann eine Zahl sein, die ein Vorrichtungshersteller als eine ausreichende Anzahl von Speicherungsbefehlen bestimmt hat, die vor einer Analyse zu überprüfen ist, um Beziehungen zwischen Namensräumen und ihren jeweiligen Workload-Attributen abzuleiten. Der Überwachungsschwellenwert kann z. B. bei tausend Speicherungsbefehlen liegen. Alternativ kann der Überwachungsschwellenwert durch einen benutzerdefinierten Parameter und/oder durch einen von einem Speicherungs-Client bereitgestellten Parameter festgelegt werden. In einer anderen Ausführungsform kann der Überwachungsschwellenwert ein Zeitraum sein, den ein Vorrichtungshersteller bestimmt hat, der eine ausreichende Anzahl von Speicherungsbefehlen zur Überprüfung bereitstellt, bevor eine Analyse durchgeführt wird, um Beziehungen zwischen den Namensräumen und ihren jeweiligen Workload-Attributen abzuleiten. Der Überwachungsschwellenwert kann zum Beispiel fünfzehn Minuten betragen.
  • Der Fachmann erkennt, dass der Monitor 802 Lese-, Schreib- und Wartungsbefehle überwachen kann. Unter der Voraussetzung, dass der Speicherungsbefehl einen Indikator für einen Namensraum wie z. B. eine Namensraumkennung einschließt, kann der Monitor 802 möglicherweise eine Beziehung zwischen zwei oder mehr Namensräumen basierend auf dem Speicherungsbefehl bestimmen. Natürlich kann bei bestimmten Workload-Attributen ein Typ von Speicherungsbefehl bei der Bestimmung einer Beziehung hilfreicher sein als ein anderer Typ. Beispielsweise können Lesebefehle für zwei verschiedene Namensräume mit der gleichen Zugriffsfrequenz eher auf eine auf der Zugriffsfrequenz basierende Beziehung hindeuten als Schreibbefehle für die gleichen beiden Namensräume.
  • Der Tracker 806 merkt sich, welche Namensräume der Workload-Analysator 800 zuvor überprüft hat. Insbesondere kann der Tracker 806 eine mit jedem Speicherungsbefehl bereitgestellte Namensraumkennung verfolgen, um zu bestimmen, welche Namensräume referenziert werden. Insbesondere kann der Tracker 806 jede Namensraumkennung verfolgen, die Daten zugeordnet ist, die in jedem einer Reihe von offenen Löschblöcken gespeichert sind, die im Folgenden näher beschrieben werden. In bestimmten Ausführungsformen arbeitet der Tracker 806 mit dem Datenzuweiser zusammen, um eine Tabelle oder einen anderen Datenspeicher zu unterhalten und zu identifizieren, welche Namensräume (unter Verwendung ihrer Namensraumkennungen) in welchen offenen Löschblöcken Daten haben. Diese Tabelle stellt dar, welche Namensräume Daten in welchen offenen Löschblöcken haben, die Tabelle wird in Bezug auf 9 näher beschrieben und ist in 9 als Korrelationstabelle 908 identifiziert.
  • Der Workload-Analysator 800 schließt einen Komparator 804 ein, der so konfiguriert ist, dass er die vom Tracker 806 gesammelten Informationen und Workload-Attribute überprüft und Beziehungen zwischen Namensräumen mit gespeicherten Daten in derzeit geöffneten Löschblöcken basierend auf Workload-Attributen ableitet oder bestimmt, die für die diesen Namensräumen zugeordneten Workloads erfasst wurden. Der Workload-Analysator 800 verfolgt und unterscheidet Namensräume anhand ihrer Namensraumkennungen. Beispielsweise bestimmt der Komparator 804 in einer Ausführungsform, dass Namensraum a und Namensraum b ähnliche Aktualisierungsfrequenzen oder ähnliche Zugriffsfrequenzen haben. In diesem Beispiel kann die Zugriffsfrequenz für Daten, die dem Namensraum a zugeordnet sind, eintausend der letzten zehntausend Speicherungsbefehle und die Zugriffsfrequenz für Daten, die dem Namensraum b zugeordnet sind, 1500 der letzten zehntausend Speicherungsbefehle betragen. Der Komparator 804 schließt eine Logik ein, die bestimmt, dass diese beiden Workload-Attribute nahe genug sind, um eine Beziehung oder Gemeinsamkeit zwischen dem Namensraum a und dem Namensraum b abzuleiten. In einer Ausführungsform ist diese abgeleitete oder implizierte Beziehung zwischen diesen Namensräumen ein Hinweis oder eine Vorhersage, dass eine beobachtete Beziehung, Ähnlichkeit oder Gemeinsamkeit zwischen den beiden Namensräumen weiterhin bestehen wird, so dass das Platzieren von Daten für beide auf demselben offenen Löschblock für das nichtflüchtige Speichersystem 102 vorteilhaft ist.
  • In ähnlicher Weise kann der Komparator 804 bestimmen, dass Namensraum e und Namensraum f eine ähnliche zufällige Verwendung von LBAs für die Schreib- und/oder Lesebefehle haben. Basierend auf diesen Beziehungen kann der Komparator 804 eine Namensraum-Beziehungstabelle 810 aktualisieren, um eine Workload-Attribut-Beziehung zwischen Namensräumen (z. B. Namensraum a und Namensraum b; Namensraum e und Namensraum f) widerzuspiegeln.
  • In einer Ausführungsform schließt der Workload-Analysator 800 einen Satz von Workload-Attributen 808 ein, die zum Identifizieren von Beziehungen zwischen Namensräumen verwendet werden. 8 listet einige Beispiel-Workload-Attribute 808 auf, einschließlich, aber nicht beschränkt auf die Aktualisierungs-/Zugriffsfrequenz, unabhängig davon, ob auf die Daten, auf die im Speicherungsbefehl zugegriffen wird, gemäß sequentiell aufsteigender, sequentiell absteigender oder zufällig identifizierter LBAs, LBA-Referenz-Clustering oder anderer ähnlicher Attribute zugegriffen wird. In einigen Ausführungsformen kann der Tracker 806 eine Rangfolge dieser Workload-Attribute basierend darauf erstellen, welche davon bei der Leistungsoptimierung für bestimmte Anwendungen am meisten sind.
  • In der dargestellten Ausführungsform kann die Namensraum-Beziehungstabelle 810 eine Auflistung aller Workload-Attribute 808 einschließen, die der Workload-Analysator 800 verfolgt. Die Namensraum-Beziehungstabelle 810 kann offene Steckplätze für Workload-Attribute 808 einschließen, die noch keine identifizierte Beziehung zwischen anderen Namensräumen in den offenen Löschblöcken haben. Der Workload-Analysator 800 arbeitet mit dem Datenzuweiser 714 zusammen, um die Namensraum-Beziehungstabelle 810 zu überprüfen, zu überarbeiten und zu aktualisieren, während sich offene Löschblöcke füllen und geschlossen werden und freie Löschblöcke als offene Löschblöcke eingetragen werden.
  • In bestimmten Ausführungsformen kann der Komparator 804 zusätzlich zum Bestimmen einer Beziehung zwischen zwei oder mehreren Namensräumen und zum Verwalten der Beziehung in der Namensraumbeziehungstabelle 810 jeder Beziehung in der Tabelle ein Konfidenzniveau zuweisen. Ein Konfidenzniveau ist eine Bewertung, die angibt, mit welcher Genauigkeit der Komparator 804 erwartet, dass die identifizierte Beziehung genau ist. In einer Ausführungsform ist das Konfidenzniveau ein Wert zwischen o und 1 oder 0 und 100, wenn es als Prozentsatz präsentiert wird. In dem in 8 veranschaulichten Beispiel kann das Konfidenzniveau für die Beziehung von Namensraum a und Namensraum b 88 % und das Konfidenzniveau für die Beziehung von Namensraum e und Namensraum f 55 % betragen. Die Beziehung zwischen dem Namensraum e und dem Namensraum f kann 55 % oder weniger betragen, weil die Ableitung einer Beziehung, die auf einem Verhalten basiert, das sich auf den Zufall bezieht, wahrscheinlich weniger genau sein kann.
  • In einer Ausführungsform arbeitet der Workload-Analysator 800 mit Speicherungsbefehlen, die in Echtzeit empfangen werden. Alternativ kann der Workload-Analysator 800 Speicherungsbefehle protokollieren und später analysieren, wenn dies nur minimale Auswirkungen auf die Leistung des nichtflüchtigen Speichersystems hat. In einer anderen Ausführungsform arbeitet der Workload-Analysator 800, wenn die nichtflüchtige Speichervorrichtung 118 Wartungsarbeiten wie Speicherbereinigung durchführt.
  • In einer Ausführungsform arbeitet der Workload-Analysator 800 periodisch oder als Reaktion auf eine Anforderung von der Speicherungssteuerung 126, um die Beziehungen zwischen den Namensräumen zu überprüfen, zu überarbeiten und zu aktualisieren. In einer Ausführungsform kann der Workload-Analysator 800 zusätzliche Speicherungsbefehle überwachen und bestimmen, ob die aufgezeichneten Beziehungen noch die aktuellen Workloads repräsentieren, die den darauf bezogenen Namensräumen zugeordnet sind. In einer Ausführungsform kann der Workload-Analysator 800 nach der Überwachung zusätzlicher Speicherungsbefehle die Konfidenzniveaus (entweder nach oben oder nach unten) modifizieren, da die zusätzliche Überwachung die zuvor definierte Beziehung unterstützt oder verschlechtert.
  • 9 veranschaulicht einen Datenzuweiser 900 gemäß einer Ausführungsform. Der Datenzuweiser 900 weist einen Zuweiser 902, Zuweisungseinschränkungen 904, Zuweisungskriterien 906 und eine Korrelationstabelle 908 auf. Der Datenzuweiser 900 ist so konfiguriert, dass er einen Manager für offene Löschblöcke (oder einen anderen physischen Platzierungsmanager für nichtflüchtige Speichermedien 120) anweist, Daten von Schreibbefehlen mit einer ersten Namensraumkennung in einen gemeinsamen von zwei oder mehr der offenen logischen Löschblöcke als Schreibbefehle mit einer zweiten Namensraumkennung zu gruppieren, und zwar basierend auf einer Beziehung zwischen den Namensräumen. In einer Ausführungsform ist die Beziehung zwischen den Namensräumen eine implizite Beziehung.
  • Der Zuweiser 902 bestimmt, wo die Schreibdaten auf die offenen Löschblöcke verteilt werden. In bestimmten Ausführungsformen identifiziert der Zuweiser 902 die logische Seite, auf der die Daten gespeichert werden sollen. Der Zuweiser 902 kann mit dem Komparator 804 zusammenarbeiten, um zu bestimmen, auf welchen offenen Löschblock die Schreibdaten gerichtet werden sollen. Der Zuweiser 902 kann anhand der Korrelationstabelle 908 verfolgen, welche Namensräume (unter Verwendung der NSID) Daten in jedem der offenen Löschblöcke (OEB) haben.
  • Im veranschaulichten Beispiel listet OEB 0 die NSID a und NSID b. OEB 1 listet NSID e und NSID f und NSID g. OEB 2 listet NSID c. Wie vom Workload-Analysator 800 angegeben, haben NSID a und NSID b ein Aktualisierungs-/Zugriffsfrequenzbeziehung und wurden daher im gleichen offenen Löschblock, OEB0, gespeichert. In ähnlicher Weise haben NSID e und NSID f eine zufällige LBA-Zugriffsbeziehung und wurden daher in demselben offenen Löschblock OEB1 gespeichert.
  • Normalerweise arbeitet der Datenzuweiser 900 mit Schreibdaten, während die Schreibdaten an die Speicherungsvorrichtung gesendet werden. Der Datenzuweiser untersucht den Schreibbefehl, identifiziert den Namensraum anhand der mit dem Schreibbefehl bereitgestellten Namensraumkennung und kontaktiert den Komparator 804, um zu bestimmen, ob die Namensraumkennung eine in der Namensraumbeziehungstabelle 810 definierte Beziehung hat. Wenn dies der Fall ist, versucht der Datenzuweiser 900, die Daten des Schreibbefehls in einen offenen Löschblock zu leiten, der Namensräume (z. B. Namensraumkennungen) einschließt, die in derselben Beziehung zum Namensraum (z. B. Namensraumkennung) des Schreibbefehls stehen. 9 veranschaulicht ein Beispiel für den Zuweiser 902, der die Daten der Namensräume e, f und g im offenen Löschblock OEB1 gruppiert.
  • In bestimmten Ausführungsformen bestimmt der Zuweiser 902, welcher offene Löschblock für das Schreiben von Daten basierend auf bestimmten Zuweisungseinschränkungen 904 und/oder Zuweisungskriterien 906 zu verwenden ist.
  • Eine Zuweisungseinschränkung 904 ist eine Einschränkung, die beschränkt, wo Schreibdaten auf den nichtflüchtigen Speichermedien 120 gespeichert werden können. Eine Zuweisungseinschränkung kann durch einen Industriestandard, durch den Vorrichtungshersteller, durch die Logik der Speicherungssteuerung 126, durch einen Host, der die Speicherungsvorrichtung verwendet, oder dergleichen definiert werden. In einer Ausführungsform werden die Zuweisungseinschränkungen 904 verwendet, um einen Standard wie den NVMe-Standard zu implementieren. Insbesondere kann eine Zuweisungseinschränkung zur Definition von Standzeitgruppen verwendet werden. Bestimmte Zuweisungseinschränkungen 904 müssen befolgt werden, um einem Standard zu entsprechen, andere Zuweisungseinschränkungen 904 können optional eingehalten werden, sogar um sich für den Standard zu qualifizieren. Beispiele für Zuweisungseinschränkungen 904 schließen ein privates Namensraumkennzeichen, ein geteiltes Namensraumkennzeichen, eine Servicequalität und dergleichen ein, sind aber nicht beschränkt darauf.
  • Die Zuweisungseinschränkungen 904 können Parameter wie z.B. ein privates Namensraumkennzeichen 910 oder ein geteiltes Namensraumkennzeichen 912 einschließen. Die Zuweisungseinschränkungen 904 können von einem Host mit einem Schreibbefehl eingeschlossen oder aufgrund des Kontexts des Schreibbefehls zugewiesen werden (z. B. können bestimmte Namensräume auf einem Typ angegeben werden, der einen privaten oder einen geteilten Namensraum angibt. Daten, die für einen privaten Namensraum, wie Namensraum C 916, gekennzeichnet sind, dürfen einen Namensraum nicht mit Daten teilen, die nicht für den gleichen privaten Namensraum gekennzeichnet sind. Daten, die verschiedenen Namensraumkennungen zugeordnet sind, können in einigen Ausführungsformen gruppiert werden, vorausgesetzt, dass jeder identifizierte Namensraum ein geteiltes Namensraumkennzeichen 912 aufweist, wie die Daten, die in den abgebildeten Namensräumen, Namensraum A und Namensraum B, gespeichert sind. In anderen Ausführungsformen kann es erforderlich oder bevorzugt sein, dass solche Daten einen Namensraum geteilt nutzen, anstatt einfach nur erlaubt zu sein. Natürlich kann in bestimmten Ausführungsformen die Fähigkeit von Namensräumen, denselben nichtflüchtigen Speicher 120 zu teilen, das Standardverhalten sein und ein geteiltes Namensraumkennzeichen ist möglicherweise nicht erforderlich oder festgelegt.
  • Wie erklärt, kann der Zuweiser 902 mit dem Komparator 804 zusammenarbeiten, um zu bestimmen, auf welchen offenen Löschblock die Schreibdaten gerichtet werden sollen. Die Bestimmung kann jedoch durch eine Zuweisungseinschränkung außer Kraft gesetzt oder negiert werden. Beispielsweise hat der Komparator 804 bestimmt, dass Namensraum c und Namensraum d eine Zugriffsfrequenzbeziehung haben, siehe 8. Normalerweise würde der Komparator 804 den Zuweiser 902 anweisen, Daten für Namensraum c und Namensraum d zusammen in einem offenen Löschblock zu speichern. Namensraum c hat jedoch eine Einschränkung bei der Zuweisung von privaten Namensraumkennzeichen. Namensraum d hat kein privates Namensraumkennzeichen, das mit dem privaten Namensraumkennzeichen des Namensraums c übereinstimmt, und daher kann der Zuweiser 902 Daten für Namensraum c nicht auf denselben offenen Löschblock wie Namensraum d legen.
  • In einem solchen Beispiel können Daten für Namensraum d auf einem anderen Löschblock gespeichert werden, z. B. kann OEB 3 (nicht gezeigt) nach dem Schließen von OEB1 geöffnet werden. In diesem Beispiel wurde Namensraum d aufgrund der Zuweisungseinschränkung nicht in dem offenen Löschblock gespeichert, der einer Beziehung zu einem bereits gespeicherten Namensraum (OEB2, Namensraum c) entsprach. Diese Situation ist eine suboptimale Zuweisung. In bestimmten Ausführungsformen kann der Zuweiser 902 Daten, die für Namensraum d in einem separaten Löschblock gespeichert sind, mit einem suboptimalen Zuweisungskennzeichen versehen. Suboptimale Zuweisungskennzeichen können eine Art von Zuweisungseinschränkung sein und können von der Speicherungssteuerung 126 verwendet werden, um Datenblöcke optimaler zu gruppieren, wenn die Speicherungssteuerung 126 Wartungsvorgänge wie z. B. Speicherbereinigung durchführt.
  • OEB 0 veranschaulicht ein Beispiel, bei dem der Zuweiser 902 nur Daten mit der gleichen Zuweisungseinschränkung zusammen im gleichen offenen Löschblock speichert. In OEB0 ist die Zuweisungseinschränkung das geteilte Namensraumkennzeichen.
  • In einer Ausführungsform kann die Bestimmung, auf welchen offenen Löschblock der Zuweiser 902 die Schreibdaten leiten soll, basierend auf einem oder mehreren Zuweisungskriterien überarbeitet oder außer Kraft gesetzt werden. Wie hierin verwendet, ist ein Zuweisungskriterium jede Bedingung, Optimierung, jeder Parameter, jede Einschränkung oder Anforderung, wie oder wo Schreibdaten unter einem Satz offener Löschblöcke zugeordnet werden können. Ein Beispiel für ein Zuteilungskriterium kann der Zustand des offenen Löschblocks sein. In bestimmten Ausführungsformen können die Zuweisungskriterien den Zuweiser 902 dazu verpflichten, neue Schreibdaten in den offenen Löschblock im besten Zustand zu speichern, auch wenn der Komparator 804 einen anderen offenen Löschblock für die Daten basierend auf einem Workload-Attribut identifiziert hat, das von Daten aus den beiden Namensräumen geteilt wird. Ein weiteres Beispiel für ein Zuweisungskriterium kann eine Mindestanforderung an den Zuweisungsraum sein. Beispielsweise kann die Mindestanforderung an den Zuweisungsraum erfordern, dass ein offener Löschblock, der noch keine Daten für den Namensraum der aktuellen Schreibdaten gespeichert hat und mindestens zwei freie logische Seiten verfügbar hat, Schreibdaten aufnimmt, bevor der offene Löschblock gefüllt wird. Diese Mindestanforderung an den Zuweisungsraum kann vorhanden sein, um zu verhindern, dass der Zuweiser 902 Schreibdaten basierend auf einer Gemeinsamkeit zwischen den Namensräumen an einen bestimmten offenen Löschblock weiterleitet, so dass weniger als zwei logische Seiten mit Daten auf dem offenen Löschblock gespeichert werden. Um sicherzustellen, dass die Vorteile der Gruppierung von Schreibdaten basierend auf abgeleiteten oder impliziten Namensraumbeziehungen realisiert werden, kann eine Mindestanforderung an den Zuweisungsraum implementiert werden. Weniger als zwei logische Datenseiten sind möglicherweise nicht ausreichend.
  • In einer anderen Ausführungsform kann die Speicherungssteuerung 126 so konfiguriert sein, dass sie die Mindestanforderung an den Zuweisungsraum unterstützt, indem sie eine Schwellenwertanzahl von Seiten im offenen Löschblock reserviert, sobald Schreibdaten für zwei Namensräume mit einer impliziten Beziehung demselben offenen Löschblock zugewiesen wurden. Auf diese Weise können auch mehr Schreibdaten aus dem einen oder anderen Namensraum auf demselben offenen Löschblock gespeichert werden und so den Leistungsvorteil der Gruppierung der Schreibdaten basierend auf einer abgeleiteten Beziehung zwischen den Namensräumen nutzen.
  • 10 zeigt ein NVM-Subsystem 1000 gemäß einer Ausführungsform. Das NVM-Subsystem 1000 enthält eine einzelne NVMe-Steuerung 1002 und einen einzelnen PCI-Express-Port 1012. Die Steuerung in dieser Figur unterstützt zwei Namensräume (Namensraum A 1008 und Namensraum B 1010) mit den Bezeichnungen NSA und NS B. Jedem Steuerung-Namensraum ist eine Namensraum-ID (Namensraum-ID 1 1004 bzw. Namensraum-ID 2 1006) mit den Bezeichnungen NSID 1 und NSID 2 zugeordnet. Die Namensraum-ID 1 1004 und die Namensraum-ID 2 1006 werden von der Steuerung verwendet, um einen bestimmten Namensraum zu referenzieren. In diesem Beispiel ist Namensraum-ID 1 1004 mit dem Namensraum A 1008 und Namensraum-ID 2 1006 dem Namensraum B 1010 zugeordnet.
  • Die Namensraum-ID wird vom Host verwendet, um eine logische Partitionierung der Vorrichtung zu erreichen. Ein oder mehrere Namensräume können von einer Anwendung A verwendet werden, während andere Namensräume von Anwendung B verwendet werden können.
  • Beim Öffnen von Speicherblöcken zum Speichern von Daten öffnen herkömmliche nichtflüchtige Speichersysteme einen Speicherblock aus einer Liste freier Blöcke innerhalb des Speichersystems, der der geringsten Anzahl von Programm-/Löschzyklen zugeordnet ist. Wenn man mehr Daten erhält, wird es den offenen Blöcken im System zugeordnet, wobei die Temperatur der Daten berücksichtigt wird.
  • In früheren nichtflüchtigen Speichersystemen untersucht ein Speicherverwaltungsmodul in einem nichtflüchtigen Speichersystem vor dem Speichern von Daten die Daten, um zu bestimmen, ob die Daten häufig oder nur selten aktualisiert werden. Diese Charakteristik der Daten wird auch als „Zugriffsfrequenztemperatur“ der Daten bezeichnet -wobei sich „heiße Daten“ auf Daten bezieht, die häufig aktualisiert werden, im Gegensatz zu „kalten Daten“ - ein Begriff, der für Daten steht, die nicht häufig aktualisiert werden. Nachdem bestimmt wurde, wie häufig die Daten aktualisiert werden, schreibt das Speicherverwaltungsmodul die Daten in den entsprechenden offenen Block - und trennt dabei heiße und kalte Daten. Ein weiterer Parameter, der in Betracht gezogen werden kann, ist die sequentielle LBA-Adressierung der Daten. Bei dieser Entscheidung werden jedoch weder die Namensraum-ID noch die Nummer der logischen Einheit betrachtet.
  • 11 veranschaulicht eine NVMe-Standzeitgruppe 1100 gemäß einer Ausführungsform. Die nächste Version des NVMe-Standards (Version 1.4) führt das NVMe-Standzeitgruppenmerkmal ein, wie in 11 veranschaulicht. In diesem Beispiel enthält NVM-Satz A 1106 neben dem nicht zugewiesenen Raum auch NS A1 1112, NS A2 1114 und NS A3 1116. NVM-Satz B 1108 enthält NS B1 1118, NS B2 1120 und nicht zugewiesenen Raum. NVM-Satz C 1110 enthält NS C1 1122 und nicht zugewiesenen Raum.
  • In diesem Beispiel werden die Standzeit des NVM-Satzes A 1106 und des NVM-Satzes B 1108 gemeinsam als Teil der Standzeitgruppe Y 1102 verwaltet, während die Standzeit des NVM-Satzes C 1110 nur innerhalb des NVM-Satzes C 1110 verwaltet wird, da dieser als einziger NVM-Satz Teil der Standzeitgruppe Z 1104 ist. Dieses Merkmal zwingt die Speicherungsvorrichtung dazu, dedizierte offene Blöcke für jede Standzeitgruppe zu implementieren.
  • Die Option „Standzeitgruppen“ ist jedoch ein optionales Merkmal, das ausschließlich auf Unternehmens- und Einstiegsanwendungen ausgerichtet ist. Des Weiteren können innerhalb einer bestimmten Standzeitgruppe Speicherungsvorrichtungen, die die beanspruchte Lösung implementieren, die Namensraum-ID nutzen, um Schreibdaten auf Speicherungsvorrichtungen zu gruppieren, die NVMe-Standzeitgruppen unterstützen.
  • 12 zeigt ein NVMe mit zwei Steuerungen und geteiltem Namensraum 1200 gemäß einer Ausführungsform. In einer Ausführungsform entspricht die maximale Anzahl offener Blöcke, die von der Speicherungsvorrichtung unterstützt werden, der maximalen Anzahl unterstützter Namensraum-IDs. In dieser Implementierung kann jeder offene Block eindeutig einer dedizierten Namensraum-ID zugeordnet werden. In einer anderen Ausführungsform kann eine Speicherungsvorrichtung anders auf einen privaten und einen geteilten Namensraum Bezug nehmen. Zum Beispiel teilen sich private Namensräume nicht denselben offenen Block, während geteilte Namensräume dieselben offenen Blöcke teilen können.
  • In einer weiteren Ausführungsform wird die Temperatur eines Namensraumes bestimmt. Wenn auf den Namensraum häufig vom Host zugegriffen wird, wird der Namensraum als heißer Namensraum klassifiziert. Andernfalls würde der Namensraum als kalter Namensraum klassifiziert werden. Diese Klassifizierung könnte bei der Zuweisung eines Namensraums mit einem offenen Block verwendet werden. Im Allgemeinen würden Ausführungsformen der beanspruchten Lösung es heißen Namensräumen ermöglichen, denselben Block zu teilen, während die Mischung von heißen und kalten Namensräumen in einem bestimmten offenen Block minimiert wird.
  • Eine andere Ausführungsform kann sich mehr auf Automobilanwendungen beziehen, wenn geteilte Namensräume verwendet werden. In einer Ausführungsform ist ein geteilter Namensraum ein Namensraum, der gleichzeitig an zwei oder mehr Steuerungen in einem NVM-Subsystem angeschlossen sein kann. Ein Host kann anhand des Wertes des Bereichs Namensraum-Multipfad-E/A und Fähigkeiten zum Teilen von Namensräumen in der Datenstruktur Namensraum identifizieren bestimmen, ob ein Namensraum ein privater Namensraum ist oder ein geteilter Namensraum sein kann.
  • 12 zeigt ein Multifunktions-NVM-Subsystem mit einem einzigen PCI-Express-Port 1212, der zwei Steuerungen enthält, NVMe-Steuerung 1202 und NVMe-Steuerung 1204. NVMe-Steuerung 1202 ist PCI-Funktion 0 und NVMe-Steuerung 1204 PCI-Funktion 1 zugeordnet. Jede Steuerung unterstützt einen einzelnen privaten Namensraum (Namensraum A 1214 bzw. Namensraum C 1216) und den Zugriff auf den geteilten Namensraum B 1218. Die Namensraum-ID muss in allen Steuerungen, die Zugriff auf einen bestimmten geteilten Namensraum haben, gleich sein. In diesem Beispiel verwenden beide Steuerungen Namensraum-ID 2 1208 für den Zugriff auf den geteilten Namensraum B. Namensraum-ID 1 1206 wird für den Zugriff auf den privaten Namensraum A 1214 und Namensraum-ID 3 1210 für den Zugriff auf Namensraum C 1216 verwendet.
  • In der veranschaulichten Systemausführungsform können den offenen Blöcken Schreibdaten nur basierend auf Namensraum-ID, Namensraum-ID + Host-ID oder Namensraum-ID + Metadaten zur Workload-Auswertung zugewiesen werden. Dies führt zu weniger TRIM- oder De-Fragmentierungsoperationen. Darüber hinaus kann sich dies in effizienteren Speicherbereinigungsoperationen ausdrücken.
  • 13 veranschaulicht eine beispielhafte Ausführungsform 1300 der hierin offenbarten Lösung. Eine Anwendung für das offenbarte Verfahren, das System und die Einrichtung ist als Teil eines elektronischen Systems für selbstfahrende Fahrzeuge. Ein solches System kann ein autonomes Antriebssystem 1302, ein Infotainment-System 1304 und einen geteilten nichtflüchtigen Speicher 1306 einschließen.
  • Das autonome Antriebssystem 1302 kann sich auf eine Steuerung stützen, die mit einer sicheren proprietären Software 1308 programmiert ist, die auf bestimmte sichere Protokolle zugreifen kann, die im privaten Namensraum A 1310 gespeichert sind. Schreibbefehle für Daten im privaten Namensraum A 1310 können ein privates Namensraumkennzeichen 1312 einschließen, das angibt, dass die diesem Namensraum zugeordneten Daten diesen Namensraum nicht mit anderen Daten teilen dürfen. Zusätzliche Zuweisungseinschränkungen können darauf hinweisen, dass diese Daten in einem eigenen separaten Löschblock 1314 gespeichert werden müssen, so dass keine anderen Host-Steuerungen oder Anwendungen darauf zugreifen können. Diese Vorsichtsmaßnahme kann entscheidend sein, um die Sicherheit und Integrität der autonomen Fahrfähigkeiten zu erhalten.
  • Das Infotainment-System 1304 kann Navigationsanwendungen, sowohl als eingebaute Navigation 1316 als auch als Nachrüstungs-Navigationsanwendung 1318, ein Pannenhilfesignal 1320, eine Steuerung für das Soundsystem 1322, andere Mediensteuerungen wie z. B. Videosteuerungen, Synchronisierungsfähigkeiten mit mobilen Vorrichtungen und andere Benutzeranwendungen einschließen. Jede Anwendung kann Daten in einem dedizierten Namensraum speichern oder darauf zugreifen oder einen Namensraum teilen. Beispielsweise können sowohl die eingebaute Navigation 1316 als auch eine Nachrüstungs-Navigationsanwendung 1318 auf eine Kartendatenbank zugreifen, die im geteilten Namensraum B 1324 gespeichert ist, der einem geteilten Namensraumkennzeichen 1326 zugeordnet sein kann. Das Pannenhilfesignal 1320 und das Soundsystem 1322 können Namensraum D 1328 bzw. Namensraum C 1330 nutzen. Diese beiden Namensräume können sich beide auf einem gemeinsamen offenen Löschblock 1332 befinden.
  • 14 veranschaulicht ein Verfahren 1400 gemäß einer Ausführungsform. In Schritt 1402 empfängt das Verfahren 1400 Speicherungsbefehle, wobei jeder der Speicherungsbefehle eine Namensraumkennung aufweist. In Schritt 1404 überwacht das Verfahren 1400 die Speicherungsbefehle auf Daten, die mindestens einer der Namensraumkennungen zugeordnet sind, bis ein Überwachungsschwellenwert erreicht ist.
  • In Schritt 1406 bestimmt Verfahren 1400 eine Gemeinsamkeit zwischen den Speicherungsbefehlen, die einer ersten Namensraumkennung für einen ersten Namensraum zugeordnet sind, und den Speicherungsbefehlen, die einer zweiten Namensraumkennung für einen zweiten Namensraum zugeordnet sind. In Schritt 1408 gruppiert das Verfahren 1400 Daten, die der ersten Namensraumkennung zugeordnet sind, und Daten, die der zweiten Namensraumkennung zugeordnet sind, in einem gemeinsamen offenen Löschblock basierend auf der Gemeinsamkeit.
  • 15 veranschaulicht ein Verfahren 1500 gemäß einer Ausführungsform. Sie stellt ein Beispiel für ein Verfahren dar, das für die namensraumorientierte Verwaltung offener Blöcke verwendet werden kann. Der Fluss beginnt zu Beginn 1502 mit dem Empfang von Schreibdaten, die spezifischen NSID- und LBA-Daten zugeordnet sind. Als nächstes scannt die Speicherungsvorrichtung in Schritt 1504 die Kontexte der offenen Blöcke, um festzustellen, ob diese NSID bereits von einem der offenen Blöcke verwendet wurde (Entscheidungsschritt 1506). Wenn sie verwendet wurde, werden die Daten an den offenen Block gesendet, der bereits über diese NSID verfügt (Schritt 1508).
  • Wenn es keine offenen Blöcke gibt, die diese NSID verwenden, bestimmt die Speicherungsvorrichtung im Entscheidungsschritt 1510, ob die Anzahl der derzeit offenen Blöcke die Grenze für die maximale Anzahl von offenen Blöcken erreicht hat. Wenn nicht, öffnet die Speicherungsvorrichtung einen neuen Block (Schritt 1512), schreibt die Daten und aktualisiert eine Korrelationstabelle 908 mit der Ankunfts-NSID. Wenn es nicht möglich ist, einen neuen Block zu öffnen, werden in Schritt 1514 die Daten an einen der bereits geöffneten Blöcke gesendet und die Korrelationstabelle 908 entsprechend aktualisiert (Schritt 1516).
  • Die Auswahl kann auch basierend auf anderen Parametern erfolgen. Beispielsweise kann der offene Block, der die Mindestanzahl von Namensraum-IDs enthält, verwendet werden. Der älteste offene Block (höchste Programmlöschzahl) kann verwendet werden. Der offene Block, der die maximale Datenmenge enthält, kann verwendet werden. Andere Kriterien können in Betracht gezogen werden, wie z. B. die Temperatur und die sequentielle LBA-Adressierung der Daten.
  • Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung-[Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben]-wird hierin verwendet, um sich auf die Struktur zu beziehen (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt, wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Ein „Kreditverteilungsschaltkreis, der konfiguriert ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über einen Schaltkreis zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist kein Netzteil daran angeschlossen). Somit nimmt ein Element, das als „konfiguriert zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches Bezug, wie eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
  • Der Ausdruck „konfiguriert zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „konfiguriert zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
  • Das Rezitieren in den beiliegenden Ansprüchen, dass eine Struktur „konfiguriert“ ist zum Ausführen einer oder mehrerer Aufgaben, ist ausdrücklich dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement nicht geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] enthalten, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
  • Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.”
  • Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festgelegten Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen“. Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
  • Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register Bezug zu nehmen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
  • Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.
  • Nach der detaillierten Beschreibung der veranschaulichenden Ausführungsformen wird deutlich, dass Modifikationen und Variationen möglich sind, ohne dass vom beanspruchten Erfindungsumfang abgewichen werden muss.

Claims (20)

  1. Einrichtung, aufweisend: ein nichtflüchtiger Speicher, der eine Vielzahl von offenen Löschblöcken aufweist; und eine Steuerung, die konfiguriert ist, um: die offenen Löschblöcke gleichzeitig zu verwalten; eine Beziehung zwischen einem ersten Namensraum und einem zweiten Namensraum basierend auf Workload-Attributen für den ersten Namensraum und Workload-Attributen für den zweiten Namensraum zu bestimmen; und Daten, die dem zweiten Namensraum zugeordnet sind, in einem offenen Löschblock zu speichern, der Daten, die dem ersten Namensraum zugeordnet sind, basierend auf der Beziehung, speichert.
  2. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie eine Namensraumkennung für jeden Namensraum verfolgt, der Daten zugeordnet ist, die in jedem der offenen Löschblöcke gespeichert sind, und Daten des zweiten Namensraums in Reaktion auf eine zweite Namensraumkennung für Daten des zweiten Namensraums, die mit einer ersten Namensraumkennung für Daten des ersten Namensraums übereinstimmen, zu dem offenen Löschblock speichert, und die Beziehung die erste Namensraumkennung und die zweite Namensraumkennung zuordnet.
  3. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie eine Schwellenwertanzahl von Speicherungsbefehlen überwacht, um die Beziehung zu bestimmen, und wobei die Speicherungssteuerung ferner so konfiguriert ist, dass sie die Workload-Attribute des ersten Namensraums und des zweiten Namensraums basierend auf den überwachten Speicherungsbefehlen vergleicht.
  4. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie Daten des zweiten Namensraums in einem separaten Löschblock speichert, der keine Daten des ersten Namensraums als Reaktion auf eine Zuweisungseinschränkung speichert, die einem von dem ersten und dem zweiten Namensraum zugeordnet ist.
  5. Einrichtung gemäß Anspruch 4, wobei die Zuweisungseinschränkung ein privates Namensraumkennzeichen aufweist, das einem von dem ersten Namensraum und dem zweiten Namensraum zugeordnet ist.
  6. Einrichtung gemäß Anspruch 5, wobei die Zuweisungseinschränkung ein geteiltes Namensraumkennzeichen aufweist, das einem von dem ersten Namensraum und dem zweiten Namensraum zugeordnet ist, und wobei die Speicherungssteuerung so konfiguriert ist, dass sie nur Daten in dem ersten Namensraum speichert, der die Zuweisungseinschränkung hat, die das geteilte Namensraumkennzeichen ist.
  7. Einrichtung gemäß Anspruch 4, wobei die Speicherungssteuerung so konfiguriert ist, dass sie Daten des zweiten Namensraums in dem separaten Löschblock mit einer suboptimalen Zuweisungskennung markiert, wobei die Speicherungssteuerung so konfiguriert ist, dass sie die suboptimale Zuweisungskennung für nachfolgende Wartungsoperationen an den Daten des zweiten Namensraums verwendet.
  8. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie den offenen Löschblock aus einem Satz von offenen Löschblöcken basierend auf einem Zuweisungskriterium auswählt.
  9. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie eine Schwellenwertanzahl von Seiten im offenen Löschblock für nachfolgende Schreibdaten reserviert, die dem zweiten Namensraum zugeordnet sind.
  10. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie die Beziehung zwischen dem ersten Namensraum und dem zweiten Namensraum basierend auf Speicherungsbefehlen, die nach der Definition der Beziehung überwacht werden, revidiert.
  11. Einrichtung gemäß Anspruch 1, wobei die Speicherungssteuerung so konfiguriert ist, dass sie der Beziehung ein Konfidenzniveau zuweist, und wobei die Beziehung eine implizierte Beziehung aufweist, die von der Speicherungssteuerung basierend auf den Workload-Attributen für den ersten Namensraum und den Workload-Attributen für den zweiten Namensraum abgeleitet wird.
  12. System, aufweisend: ein nichtflüchtiges Speicherarray, das eine Vielzahl von Dies aufweist; eine Vielzahl von offenen logischen Löschblöcken, wobei jeder der offenen logischen Löschblöcke einen physischen Löschblock von jedem der Dies des nichtflüchtigen Speicherarrays aufweist; eine Schreibdaten-Pipeline, die so konfiguriert ist, dass sie Schreibbefehle von einer Vielzahl von Hosts empfängt, wobei jeder der Schreibbefehle eine Namensraumkennung aufweist; einen Workload-Analysator, der so konfiguriert ist, dass er bestimmt, dass sich ein erster Namensraum für einen ersten Host auf einen zweiten Namensraum für einen zweiten Host bezieht, und zwar basierend auf Workload-Attributen für Schreibbefehle von dem ersten Host und basierend auf den Workload-Attributen für Schreibbefehle von dem zweiten Host; einen Manager für offene Löschblöcke, der so konfiguriert ist, dass zwei oder mehr von den offenen logischen Löschblöcken für den Empfang von Schreibdaten unterhalten werden; und einen Datenzuweiser, der so konfiguriert ist, dass der Manager für offene Löschblöcke basierend auf einer impliziten Beziehung die Daten der Schreibbefehle mit der ersten Namensraumkennung in einen gemeinsamen von zwei oder mehr der offenen logischen Löschblöcke als die Schreibbefehle mit einer zweiten Namensraumkennung gruppiert.
  13. System gemäß Anspruch 12, wobei der Workload-Analysator so konfiguriert ist, dass er die Namensraumkennung für jeden Namensraum verfolgt, der Daten zugeordnet ist, die in jedem der offenen logischen Löschblöcke gespeichert sind, und dass er Daten des zweiten Namensraums in Reaktion auf die zweite Namensraumkennung für Daten des zweiten Namensraums, die mit der ersten Namensraumkennung für Daten des ersten Namensraums übereinstimmen, in dem offenen logischen Löschblock speichert.
  14. System gemäß Anspruch 12, wobei der Workload-Analysator so konfiguriert ist, dass er eine Schwellenwertanzahl von Speicherungsbefehlen überwacht, um zu bestimmen, dass sich der erste Namensraum auf den zweiten Namensraum bezieht, und ferner so konfiguriert ist, dass er die Workload-Attribute zwischen dem ersten Namensraum und dem zweiten Namensraum basierend auf den überwachten Speicherungsbefehle vergleicht.
  15. System gemäß Anspruch 12, wobei der Datenzuweiser so konfiguriert ist, dass er eine oder mehrere Zuweisungseinschränkungen überprüft, die dem ersten Namensraum und dem zweiten Namensraum zugeordnet sind, und ferner so konfiguriert ist, dass er als Reaktion auf eine oder mehrere der Zuweisungseinschränkungen Daten des zweiten Namensraums in einem separaten Löschblock speichert, der keine Daten des ersten Namensraums speichert.
  16. System gemäß Anspruch 15, wobei die Zuweisungseinschränkung ein privates Namensraumkennzeichen aufweist, das einem von dem ersten Namensraum und dem zweiten Namensraum zugeordnet ist.
  17. System gemäß Anspruch 15, wobei die Zuweisungseinschränkung ein geteiltes Namensraumkennzeichen aufweist, das einem von dem ersten Namensraum oder dem zweiten Namensraum zugeordnet ist, und wobei der Datenzuweiser so konfiguriert ist, dass er nur Daten in dem ersten Namensraum speichert, der ein Zuweisungskriterium hat, das das geteilte Namensraumkennzeichen ist.
  18. Verfahren, aufweisend: Empfangen von Speicherungsbefehlen, wobei jeder der Speicherungsbefehle eine Namensraumkennung aufweist; Überwachen der Speicherungsbefehle, die mindestens einer der Namensraumkennungen zugeordnet sind, bis ein Überwachungsschwellenwert erreicht ist; Bestimmen einer Gemeinsamkeit zwischen den Speicherungsbefehlen, die einer ersten Namensraumkennung für einen ersten Namensraum zugeordnet sind, und den Speicherungsbefehlen, die einer zweiten Namensraumkennung für einen zweiten Namensraum zugeordnet sind; und Gruppieren von Schreibdaten, die der ersten Namensraumkennung zugeordnet sind, und von Schreibdaten, die der zweiten Namensraumkennung zugeordnet sind, in einem gemeinsamen offenen Löschblock basierend auf der Gemeinsamkeit.
  19. Verfahren gemäß Anspruch 18, wobei die Gemeinsamkeit eine im Wesentlichen ähnliche Zugriffsfrequenz aufweist.
  20. Verfahren gemäß Anspruch 18, wobei das Gruppieren von Schreibdaten nur Schreibdaten gruppiert, die der ersten Namensraumkennung und der zweiten Namensraumkennung zugeordnet sind, als Reaktion auf den ersten Namensraum und den zweiten Namensraum, der ein geteiltes Namensraumkennzeichen aufweist.
DE102020106971.5A 2019-06-27 2020-03-13 Datenschreibverwaltung im nichtflüchtigen speicher Pending DE102020106971A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/454,885 2019-06-27
US16/454,885 US11068165B2 (en) 2019-06-27 2019-06-27 Non-volatile memory data write management

Publications (1)

Publication Number Publication Date
DE102020106971A1 true DE102020106971A1 (de) 2020-12-31

Family

ID=73747514

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020106971.5A Pending DE102020106971A1 (de) 2019-06-27 2020-03-13 Datenschreibverwaltung im nichtflüchtigen speicher

Country Status (3)

Country Link
US (1) US11068165B2 (de)
JP (1) JP7089830B2 (de)
DE (1) DE102020106971A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11726869B2 (en) 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11281392B2 (en) * 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11838222B2 (en) 2019-12-21 2023-12-05 Western Digital Technologies, Inc. In-line data identification on network
US11297010B2 (en) * 2019-12-23 2022-04-05 Western Digital Technologies, Inc. In-line data operations for storage systems
EP3869742B1 (de) * 2020-02-20 2023-06-07 Nxp B.V. Netzwerkknoten
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11422931B2 (en) * 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11734093B2 (en) * 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement
KR20220039404A (ko) * 2020-09-22 2022-03-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11836095B2 (en) * 2021-05-27 2023-12-05 EMC IP Holding Company LLC Forwarding incoming IO to SCM namespaces
JP2023001573A (ja) 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
US11556274B1 (en) 2021-09-01 2023-01-17 Western Digital Technologies, Inc. Endurance groups ECC allocation
US11640267B2 (en) 2021-09-09 2023-05-02 Western Digital Technologies, Inc. Method and system for maintenance allocation between NVM groups
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948026B2 (en) 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6614695B2 (en) 2001-08-24 2003-09-02 Micron Technology, Inc. Non-volatile memory with block erase
US7269823B2 (en) 2001-11-29 2007-09-11 Microsoft Corporation System and method for identifying namespaces
WO2003054694A2 (en) 2001-12-18 2003-07-03 Becomm Corporation Method and system for attribute management in a namespace
JP2003280979A (ja) 2002-03-20 2003-10-03 Toshiba Corp 情報記憶装置
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7567974B2 (en) 2004-09-09 2009-07-28 Microsoft Corporation Method, system, and apparatus for configuring a data protection system
US8782047B2 (en) 2009-10-30 2014-07-15 Hitachi Data Systems Corporation Fixed content storage within a partitioned content platform using namespaces
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US8862590B2 (en) 2007-06-29 2014-10-14 Microsoft Corporation Flexible namespace prioritization
US8738621B2 (en) * 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8635399B2 (en) 2011-10-18 2014-01-21 Stec, Inc. Reducing a number of close operations on open blocks in a flash memory
JP5550741B1 (ja) 2012-09-25 2014-07-16 株式会社東芝 ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法
US9466383B2 (en) 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US10380026B2 (en) 2014-09-04 2019-08-13 Sandisk Technologies Llc Generalized storage virtualization interface
US10102118B2 (en) * 2014-10-30 2018-10-16 Toshiba Memory Corporation Memory system and non-transitory computer readable recording medium
US9977734B2 (en) 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US11036533B2 (en) * 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
JP6444917B2 (ja) * 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP6448570B2 (ja) 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
KR102567224B1 (ko) 2016-07-25 2023-08-16 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10860508B2 (en) * 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
CN108959108B (zh) 2017-05-26 2021-08-24 上海宝存信息科技有限公司 固态硬盘访问方法以及使用该方法的装置
US11288180B2 (en) * 2018-01-19 2022-03-29 Micron Technology, Inc. Management of storage resources allocated from non-volatile memory devices to users
US10558376B2 (en) * 2018-06-28 2020-02-11 Western Digital Technologies, Inc. Storage system and method for namespace reservation in a multi-queue single-controller environment
US11544000B2 (en) * 2018-08-08 2023-01-03 Marvell Asia Pte Ltd. Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services
US10866740B2 (en) * 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory

Also Published As

Publication number Publication date
JP7089830B2 (ja) 2022-06-23
JP2021006984A (ja) 2021-01-21
US11068165B2 (en) 2021-07-20
US20200409559A1 (en) 2020-12-31

Similar Documents

Publication Publication Date Title
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
US9519575B2 (en) Conditional iteration for a non-volatile device
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018105651A1 (de) Änderung von Speicherparametern
DE102018123961A1 (de) Gruppen-leseaktualisierung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE