DE102021117355A1 - SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge - Google Patents

SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge Download PDF

Info

Publication number
DE102021117355A1
DE102021117355A1 DE102021117355.8A DE102021117355A DE102021117355A1 DE 102021117355 A1 DE102021117355 A1 DE 102021117355A1 DE 102021117355 A DE102021117355 A DE 102021117355A DE 102021117355 A1 DE102021117355 A1 DE 102021117355A1
Authority
DE
Germany
Prior art keywords
write data
volatile memory
persistent storage
incoming write
pool
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
DE102021117355.8A
Other languages
English (en)
Inventor
Peng Li
Jawad Khan
Jackson Ellis
Sanjeev Trika
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102021117355A1 publication Critical patent/DE102021117355A1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Ausführungsform einer elektronischen Einrichtung kann ein oder mehrere Substrate und Logik, die mit dem einen oder den mehreren Substraten gekoppelt ist, einschließen, wobei die Logik zum Steuern des Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet, Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer, Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten vorgesehen ist. Andere Ausführungsformen werden offenbart und beansprucht.

Description

  • HINTERGRUND
  • Eine Speicherungsvorrichtung kann eine Vielfalt von Spezifikationen aufweisen, einschließlich Leistungsfähigkeitsspezifikationen, thermischer Spezifikationen und Zuverlässigkeits-/Dauerhaftigkeitsspezifikationen. Leistungsfähigkeitsspezifikationen schließen Kriterien, wie Eingabe/Ausgabe-Operationen pro Sekunde (IOPS), Durchsatz/Bandbreite und Latenz, ein. Zuverlässigkeits-/Dauerhaftigkeitsspezifikationen schließen Kriterien, wie Laufwerksschreibvorgänge pro Tag, Programmier-/Löschzyklen, mittlerer Ausfallabstand und Datenaufbewahrung, ein. Die Stromausfallschreibatomizität auf einer Speicherungsvorrichtung gibt an, dass in Szenarien, in denen ein Stromausfall während der Schreiboperation auftritt, Daten für einen Befehl entweder vollständig geschrieben oder überhaupt nicht geschrieben werden.
  • Figurenliste
  • Das hierin beschriebene Material ist in den beigefügten Figuren beispielhaft und nicht einschränkend veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Veranschaulichung sind Elemente, die in den Figuren veranschaulicht sind, nicht notwendigerweise maßstabsgetreu gezeichnet. Zum Beispiel können die Abmessungen einiger Elemente bezogen auf andere Elementen aus Gründen der Klarheit übertrieben sein. Ferner wurden, wo dies als geeignet angesehen wurde, Bezugszeichen zwischen den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben. In den Figuren gilt:
    • 1 ist ein Blockdiagramm eines Beispiels für ein elektronisches System gemäß einer Ausführungsform;
    • 2 ist ein Blockdiagramm eines Beispiels für eine elektronische Einrichtung gemäß einer Ausführungsform;
    • 3A bis 3C sind Flussdiagramme eines Beispiels für ein Verfahren zum Steuern einer Speicherung gemäß einer Ausführungsform;
    • 4 ist ein Blockdiagramm eines Beispiels für einen nichtflüchtigen Speicherpuffer gemäß einer Ausführungsform;
    • 5 ist ein Flussdiagramm eines Beispiels für einen Host-Schreib-Versand-Fluss gemäß einer Ausführungsform;
    • 6 ist ein Flussdiagramm eines Beispiels für einen NAND-Schreibfluss gemäß einer Ausführungsform;
    • 7A bis 7F sind veranschaulichende Diagramme von Beispielen für ein Host-Schreib-Metadatenelement und seiner entsprechenden NAND-Adressen-Elemente gemäß einer Ausführungsform;
    • 8 ist ein Blockdiagramm eines anderen Beispiels für ein Rechensystem gemäß einer Ausführungsform und
    • 9 ist ein Blockdiagramm eines Beispiels für eine Festkörperlaufwerksvorrichtung (SSD-Vorrichtung) gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Eine oder mehrere Ausführungsformen oder Implementierungen werden nun unter Bezugnahme auf die beigefügten Figuren beschrieben. Wenngleich spezielle Konfigurationen und Anordnungen erörtert werden, versteht es sich, dass dies lediglich veranschaulichenden Zwecken dient. Der Fachmann in dem relevanten Gebiet wird erkennen, dass andere Konfigurationen und Anordnungen eingesetzt werden können, ohne vom Wesen und Schutzumfang der Beschreibung abzuweichen. Für den Fachmann in dem relevanten Gebiet ist ersichtlich, dass hierin beschriebene Techniken und/oder Anordnungen auch in einer Vielfalt von anderen als den hierin beschriebenen Systemen und Anwendungen eingesetzt werden können.
  • Wenngleich die folgende Beschreibung verschiedene Implementierungen darlegt, die in Architekturen, wie System-on-a-Chip-Architekturen (SoC-Architekturen), manifestiert sein können, sind eine Implementierung der hierin beschriebenen Techniken und/oder Anordnungen nicht auf bestimmte Architekturen und/oder Rechensysteme beschränkt und können durch eine beliebige Architektur und/oder ein beliebiges Rechensystem für ähnliche Zwecke implementiert werden. Zum Beispiel können verschiedene Architekturen, die zum Beispiel mehrere Chips und/oder Packages mit integrierter Schaltung (IC) und/oder verschiedene Rechenvorrichtungen und/oder Unterhaltungselektronikvorrichtungen (CE-Vorrichtungen), wie Set-Top-Boxen, Smartphones usw., einsetzen, die hierin beschriebenen Techniken und/oder Anordnungen implementieren. Wenngleich die folgende Beschreibung möglicherweise zahlreiche spezielle Einzelheiten, wie Logikimplementierungen, Typen und Wechselbeziehungen von Systemkomponenten, Logikpartitionierungs-/Integrationsauswahlen usw. darlegt, kann der beanspruchte Gegenstand ferner ohne derartige spezielle Einzelheiten umgesetzt werden. In anderen Fällen ist einiges Material, wie zum Beispiel Steuerstrukturen und vollständige Softwareanweisungssequenzen, möglicherweise nicht ausführlich gezeigt, um das hierin offenbarte Material nicht zu verdecken.
  • Das hierin offenbarte Material kann in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Das hierin offenbarte Material kann auch als auf einem maschinenlesbaren Medium gespeicherte Anweisungen implementiert sein, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Medium kann ein beliebiges Medium und/oder einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. eine Rechenvorrichtung) lesbaren Form einschließen. Zum Beispiel kann ein maschinenlesbares Medium Festwertspeicher (ROM); Direktzugriffsspeicher (RAM); Magnetplattenspeicherungsmedien; optische Speicherungsmedien; Flash-SpeicherVorrichtungen; elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) und anderes einschließen.
  • Bezugnahmen in der Patentschrift auf „eine Implementierung“, „eine beispielhafte Implementierung“ usw. geben an, dass die beschriebene Implementierung ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik einschließen kann, wobei jedoch möglicherweise nicht notwendigerweise jede Ausführungsform das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Charakteristik einschließt. Darüber hinaus beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Implementierung. Wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik in Verbindung mit einer Ausführungsform beschrieben wird, wird außerdem vorgebracht, dass es im Kenntnisbereich eines Fachmanns liegt, ein solches Merkmal, eine solche Struktur oder eine solche Charakteristik in Verbindung mit anderen Implementierungen zu bewirken, unabhängig davon, ob es hierin ausdrücklich beschrieben wird oder nicht.
  • Verschiedene hierin beschriebene Ausführungsformen können eine Speicherkomponente und/oder eine Schnittstelle zu einer Speicherkomponente einschließen. Solche Speicherkomponenten können flüchtigen und/oder nichtflüchtigen (NV) Speicher einschließen. Flüchtiger Speicher kann ein Speicherungsmedium sein, das Leistung zum Beibehalten des Zustands von durch das Medium gespeicherten Daten benötigt. Nicht einschränkende Beispiele für flüchtigen Speicher können verschiedene Typen von Direktzugriffsspeicher (RAM), wie dynamischen RAM (DRAM) oder statischen RAM (SRAM), einschließen. Ein bestimmter Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist synchroner dynamischer RAM (SDRAM). In besonderen Ausführungsformen kann DRAM einer Speicherkomponente einem Standard entsprechen, der durch das Joint Electron Device Engineering Council (JEDEC) veröffentlicht wird, wie ESD79F für Doppeldatenraten-SDRAM (DDR-SDRAM), JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM, JESD79-4A für DDR4-SDRAM, JESD209 für Low Power DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 für LPDDR4 (diese Standards sind unter jedec.org verfügbar). Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden, und Kommunikationsschnittstellen der Speicherungsvorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • NV-Speicher (NVM) kann ein Speicherungsmedium sein, das keine Leistung zum Beibehalten des Zustands von durch das Medium gespeicherten Daten benötigt. In einer Ausführungsform kann die Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie die auf NAND- oder NOR-Technologien basierten, einschließen. Eine Speichervorrichtung kann auch nichtflüchtige Vorrichtungen einer zukünftigen Generation, wie eine dreidimensionale (3D) Kreuzungspunktspeichervorrichtung oder andere Byteadressierbare nichtflüchtige „Write-in-Place“-Speichervorrichtungen, einschließen. In einer Ausführungsform kann die Speichervorrichtung Speichervorrichtungen, die Chalkogenidglas verwenden, NAND-Flash-Speicher mit mehreren Schwellwertebenen, NOR-Flash-Speicher, Phasenwechselspeicher (PCM) mit einer oder mehreren Ebenen, ein resistiver Speicher, Nanodrahtspeicher, RAM mit ferroelektrischem Transistor (FeTRAM), antiferroelektrischer Speicher, magnetoresistiver RAM-Speicher (MRAM-Speicher), der eine Memristor-Technologie beinhaltet, resistiver Speicher, einschließlich der Metalloxidbasis, der Sauerstoffleerstellenbasis und des RAM mit leitfähiger Brücke (CB-RAM) oder MRAM mit Drehmomentübertrag durch spinpolarisierten Strom (STT-MRAM), eine Vorrichtung auf Basis von Spintronikmagnetkontaktspeicher, eine Vorrichtung auf Basis von magnetischem Tunnelkontakt (MTJ), eine Vorrichtung auf Basis von DW (Domain Wall) und SOT (Spin Orbit Transfer), eine thyristorbasierte Speichervorrichtung oder eine Kombination von beliebigen der Vorstehenden oder anderer Speicher sein oder diese einschließen. Die Speichervorrichtung kann sich auf das Die selbst und/oder auf ein gehäustes Speicherprodukt beziehen. In besonderen Ausführungsformen kann eine Speicherkomponente mit nichtflüchtigem Speicher einen oder mehrere vom JEDEC veröffentlichte Standards, wie JESD218, JESD219, JESD220-1, JESD223B, JESD223-1, oder einen anderen geeigneten Standard erfüllen (die hierin genannten JEDEC-Standards sind unter jedec.org verfügbar).
  • Unter Bezugnahme auf 1 kann eine Ausführungsform eines elektronischen Speicherungssystems 10 eine Steuerung 11 einschließen, die kommunikativ mit einer primären persistenten Speicherung 12a mit einem ersten Typ von Medien und einem NVM-Puffer 12b mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet, gekoppelt ist. Zum Beispiel kann der erste Typ von Medien NAND-Medien einschließen, während der zweite Typ von Medien batterie- oder kondensatorgepufferten flüchtigen Speicher (z. B. DRAM, SRAM usw.) oder 3D-Kreuzungspunktspeicher (z. B. INTEL OPTANE-Technologie) einschließen kann. Die Steuerung 11 kann Logik 13 einschließen, um Metadaten für eingehende Schreibdaten in dem NVM-Puffer 12b zu speichern, andere Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung 12a zu speichern und sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten bereitzustellen. Zum Beispiel kann eine angegebene garantierte Stromausfallschreibatomizität nominell bis zu einer angegebenen maximalen Datenübertragungsgröße (MDTS) groß sein. In einigen Ausführungsformen kann die Logik 13 konfiguriert sein, um die Metadaten für die eingehenden Schreibdaten in einem ersten Pool des NVM-Puffers 12b zu speichern und Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des NVM-Puffers 12b zu speichern. Zum Beispiel kann die Logik 13 ferner konfiguriert sein, um zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des NVM-Puffers 12b zu unterhalten und eine verknüpfte Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten in dem zweiten Pool des NVM-Puffers 12b zu erstellen.
  • In einigen Ausführungsformen kann die Logik 13 auch konfiguriert sein, um mehrere Einträge basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung in einer Logisch-zu-physisch-Dereferenzierungstabelle (L2P-Dereferenzierungstabelle) atomar zu aktualisieren, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind. Zum Beispiel kann die Logik 13 optional auch konfiguriert sein, um Aktualisierungen der L2P-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten zu sequenzieren. Im Fall einer Wiederherstellung von einem Stromausfall kann die Logik 13 konfiguriert sein, um die Metadaten in dem NVM-Puffer 12b und die anderen Daten in der primären persistenten Speicherung 12a ohne eine Aktualisierung der L2P-Dereferenzierungstabelle basierend auf einem Indikator im NVM-Puffer (z. B. einem Host-Schreib-Element-Flag) zu verwerfen. In beliebigen der Ausführungsformen hierin können die primäre persistente Speicherung 12a und der NVM-Puffer 12b Teil eines Festkörperlaufwerks (SSD) sein.
  • Ausführungsformen von jedem von der obigen Steuerung 11, der primären persistenten Speicherung 12a, dem NVM-Puffer 12b, der Logik 13 und anderen Systemkomponenten können in Hardware, Software oder einer beliebigen geeigneten Kombination davon implementiert sein. Zum Beispiel können Hardwareimplementierungen konfigurierbare Logik, wie zum Beispiel programmierbare logische Anordnungen (PLAs), feldprogrammierbare Gatteranordnungen (FPGAs), komplexe programmierbare Logikvorrichtungen (CPLDs) oder Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie, wie zum Beispiel einer anwendungsspezifischen integrierten Schaltung (ASIC), einer Technologie mit komplementärem Metalloxidhalbleiter (CMOS) oder Transistor-Transistor-Logik (TTL) oder eine beliebige Kombination davon, einschließen. Ausführungsformen der Steuerung 11 können eine Universalsteuerung, eine Spezialsteuerung, eine Speicherungssteuerung, eine Speichersteuerung, einen Mikrocontroller, einen Universalprozessor, einen Spezialprozessor, eine Zentralprozessoreinheit (CPU), eine Ausführungseinheit usw. einschließen. In einigen Ausführungsformen können sich die primäre persistente Speicherung 12a, der NVM-Puffer 12b, die Logik 13 und/oder ein anderer Systemspeicher in verschiedenen Komponenten, einschließlich der Steuerung 11 (z. B. auf einem selben Die), befinden oder gemeinsam mit diesen angeordnet sein.
  • Alternativ oder zusätzlich können alle oder Abschnitte dieser Komponenten in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium, wie Speicher mit wahlfreiem Zugriff (RAM), Festwertspeicher (ROM), programmierbarem ROM (PROM), Firmware, Flash-Speicher, usw., gespeichert sind, um durch einen Prozessor oder eine Rechenvorrichtung ausgeführt zu werden. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren Programmiersprachen, die auf/für ein Betriebssystem (OS) anwendbar/geeignet sind, geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie der Programmiersprache „C“, oder ähnlicher Programmiersprachen. Zum Beispiel können die persistenten Speicherungsmedien 12a, andere persistente Speicherungsmedien oder anderer Systemspeicher einen Satz von Anweisungen speichern, die, wenn sie durch die Steuerung 11 ausgeführt werden, das System 10 veranlassen, ein(e) oder mehrere Komponenten, Merkmale oder Gesichtspunkte des Systems 10 zu implementieren (z. B. die Logik 13, die Metadaten für die eingehenden Schreibdaten in dem NVM-Puffer 12b speichert, andere Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung 12a speichert, sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten bereitstellt usw.).
  • Nun Bezug nehmend auf 2 kann eine Ausführungsform einer elektronischen Einrichtung 15 ein oder mehrere Substrate 16 und Logik 17, die mit dem einen oder den mehreren Substraten 16 gekoppelt ist, einschließen. Die Logik 17 kann konfiguriert sein, um den Zugriff auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen NVM-Puffer mit einem zweiten Typ von Medien, der sich von dem ersten Typ von Medien unterscheidet, zu steuern, Metadaten für eingehende Schreibdaten in einem NVM-Puffer zu speichern, andere Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung zu speichern und sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten bereitzustellen. Zum Beispiel kann eine angegebene garantierte Stromausfallschreibatomizität nominell bis zu einer angegebenen MDTS groß sein. In einigen Ausführungsformen kann die Logik 17 konfiguriert sein, um die Metadaten für die eingehenden Schreibdaten in einem ersten Pool des NVM-Puffers zu speichern und Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des NVM-Puffers zu speichern. Zum Beispiel kann die Logik 17 ferner konfiguriert sein, um zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des NVM-Puffers zu unterhalten und eine verknüpfte Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des NVM-Puffers zu erstellen.
  • In einigen Ausführungsformen kann die Logik 17 auch konfiguriert sein, um mehrere Einträge basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung in einer L2P-Dereferenzierungstabelle atomar zu aktualisieren, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind. Zum Beispiel kann die Logik 17 optional auch konfiguriert sein, um Aktualisierungen der L2P-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten zu sequenzieren. Im Fall einer Wiederherstellung von einem Stromausfall kann die Logik 17 konfiguriert sein, um die Metadaten im NVM-Puffer und die anderen Daten in der primären persistenten Speicherung ohne eine Aktualisierung der L2P-Dereferenzierungstabelle basierend auf einem Indikator im NVM-Puffer zu verwerfen. In beliebigen der Ausführungsformen hierin können die primäre persistente Speicherung und der NVM-Puffer Teil eines SSD sein.
  • Ausführungsformen der Logik 17 können in einem System, einer Einrichtung, einem Computer, einer Vorrichtung usw., wie den hierin beschriebenen, implementiert werden. Genauer können Hardwareimplementierungen der Logik 17 konfigurierbare Logik, wie zum Beispiel PLAs, FPGAs, CPLDs, oder in Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie, wie zum Beispiel einer ASIC-, CMOS- oder TTL-Technologie, oder eine beliebige Kombination davon einschließen. Alternativ oder zusätzlich kann die Logik 17 in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium, wie RAM, ROM, PROM, Firmware, Flash-Speicher, usw., gespeichert sind, um durch einen Prozessor oder eine Rechenvorrichtung ausgeführt zu werden. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren Programmiersprachen, die auf/für ein OS anwendbar/geeignet sind, geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie der Programmiersprache „C“, oder ähnlicher Programmiersprachen.
  • Zum Beispiel kann die Logik 17 auf einer Halbleitereinrichtung implementiert sein, die das eine oder die mehreren Substrate 16 einschließen kann, wobei die Logik 17 mit dem einen oder den mehreren Substraten 16 gekoppelt ist. In einigen Ausführungsformen kann die Logik 17 zumindest teilweise in einem oder mehreren von konfigurierbarer Logik und Hardwarelogik mit fester Funktionalität auf (einem) Halbleitersubstrat(en) (z. B. Silizium, Saphir, Galliumarsenid usw.) implementiert sein. Zum Beispiel kann die Logik 17 ein Transistor-Array und/oder andere Komponenten einer integrierten Schaltung, die an das/die Substrat(e) 16 gekoppelt sind, mit Transistorkanalregionen, die innerhalb des Substrats/der Substrate 16 angeordnet sind, einschließen. Die Schnittstelle zwischen der Logik 17 und dem/den Substrat(en) 16 kann kein abrupter Kontakt sein. Die Logik 17 kann auch als eine Epitaxieschicht, die auf einem Ausgangs-Wafer des Substrats/der Substrate 16 aufgewachsen ist, einschließend betrachtet werden.
  • Nun Bezug nehmend auf 3A bis 3C kann eine Ausführungsform eines Verfahrens 20 zum Steuern einer Speicherung ein Steuern eines Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen NVM-Puffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet, bei Block 21, Speichern von Metadaten für eingehende Schreibdaten in einem NVM-Puffer bei Block 22, Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung bei Block 23 und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten bei Block 24 einschließen. Zum Beispiel kann eine angegebene garantierte Stromausfallschreibatomizität nominell bis zu einer angegebenen MDTS groß sein. Einige Ausführungsformen des Verfahrens 20 können auch ein Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des NVM-Puffers bei Block 25 und ein Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des NVM-Puffers bei Block 26 einschließen. Das Verfahren 20 kann zum Beispiel ein Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des NVM-Puffers bei Block 27 und ein Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten m zweiten Pool des NVM-Puffers bei Block 28 einschließen.
  • In einigen Ausführungsformen kann das Verfahren 20 optional ferner ein atomares Aktualisieren mehrerer Einträge in einer L2P-Dereferenzierungstabelle basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung bei Block 29, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind, einschließen (z. B. ist es möglicherweise nicht erforderlich, mehrere Einträge in der L2P-Tabelle atomar zu aktualisieren, weil die Daten im 2. Pool des NVM-Puffers gespeichert werden können, der PLI-sicher für die Wiedergabe sein kann). Einige Ausführungsformen des Verfahrens 20 können optional ferner ein Sequenzieren von Aktualisierungen der L2P-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten bei Block 30 (z. B. können die Aktualisierungen in einigen Ausführungsformen alternativ in anderer Reihenfolge sein) und/oder ein Verwerfen der Metadaten im NVM-Puffer und der anderen Daten in der primären persistenten Speicherung ohne eine Aktualisierung der L2P-Dereferenzierungstabelle basierend auf einem Indikator im NVM-Puffer im Fall einer Wiederherstellung von einem Stromausfall bei Block 31 einschließen. In beliebigen der Ausführungsformen hierin können die primäre persistente Speicherung und der NVM-Puffer Teil eines SSD bei Block 32 sein.
  • Ausführungsformen des Verfahrens 20 können in einem System, einer Einrichtung, einem Computer, einer Vorrichtung usw., zum Beispiel den hierin beschriebenen, implementiert werden. Genauer können Hardwareimplementierungen des Verfahrens 20 konfigurierbare Verfahren, wie zum Beispiel PLAs, FPGAs, CPLDs, oder in Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie, wie zum Beispiel einer ASIC-, CMOS- oder TTL-Technologie, oder eine beliebige Kombination davon einschließen. Alternativ oder zusätzlich kann das Verfahren 20 in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert sein, die in einem maschinen- oder computerlesbaren Speichermedium, wie RAM, ROM, PROM, Firmware, Flash-Speicher, usw., gespeichert sind, um durch einen Prozessor oder eine Rechenvorrichtung ausgeführt zu werden. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren Programmiersprachen, die auf/für ein OS anwendbar/geeignet sind, geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie der Programmiersprache „C“, oder ähnlicher Programmiersprachen.
  • Das Verfahren 20 kann zum Beispiel auf einem computerlesbaren Medium implementiert werden. Ausführungsformen oder Abschnitte des Verfahrens 20 können in Firmware, Anwendungen (z. B. durch eine Anwendungsprogrammierungsschnittstelle (API)) oder Treibersoftware, die auf einem Betriebssystem (OS) ausgeführt wird, implementiert sein. Außerdem können Logikanweisungen Assembler-Anweisungen, Anweisungen einer Anweisungssatzarchitektur (ISA-Anweisungen), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Zustandsfestlegungsdaten, Konfigurationsdaten für integrierte Schaltungen, Zustandsinformationen, die elektronische Schaltungen und/oder andere strukturelle Komponenten, die für Hardware (z. B. Host-Prozessor, zentrale Verarbeitungseinheit/CPU, Mikrocontroller usw.) nativ sind, personalisieren, einschließen.
  • Einige Ausführungsformen können vorteilhaft eine Technologie für eine SSDverwaltete Host-Schreib-Atomizität mit einer beliebigen Übertragungslänge bereitstellen. Die Stromausfallschreibatomizität auf einem SSD kann angeben, dass in Szenarien, in denen ein Stromausfall während der Schreiboperation auftritt, Daten für einen Befehl entweder vollständig geschrieben oder überhaupt nicht geschrieben werden. Für die NVMe-Spezifikation (z. B. Version 1.4 vom 10. Juni 2019; www.nmvexpress.org) können verschiedene Parameter (z. B. Fähigkeiten), die durch die NVMe-Vorrichtung an den Host gemeldet werden, Schreibatomizität betreffen. Zum Beispiel kann jeder Namensraum einen oder mehrere der folgenden Parameter angeben: NAWUPF - Schreibvorgänge unterhalb dieser Größe sind garantiert stromausfallatomar; NABO- und NABSPF - Schreibvorgänge, die angegebene Offset-Länge-Paar-Grenzen überschreiten, müssen nicht atomar sein; NAWUN und NABSN - Entsprechungen, die Atomizitätsanforderungen für überlappende Schreibvorgänge in normalen (z. B. Nichtstromausfall-/Laufzeit-)Situationen angeben; AWUPF und AWUN - geben Stromausfall- und normale Atomizität auf einer Steuerungsebene (z. B. über alle Namensräume hinweg) an. Das NABO-Feld wird sowohl für Stromausfall- als auch für „normale“ Atomizität verwendet. Andere Speicherungsprotokolle (z. B. SATA, SAS usw.) weisen jeweilige alternative Mittel zum Angeben der Atomizitätsfähigkeit der Speicherungsvorrichtungen auf.
  • Bei herkömmlichen Speicherungsvorrichtungen werden eingehende Schreibvorgänge üblicherweise in Hochgeschwindigkeits-SRAM-Puffern zur Leistungsfähigkeit gepuffert, und es ist wichtig, diese SRAM-Nutzung zu optimieren, um die Vorrichtungskosten zu kontrollieren. Zum Beispiel kann das Unterstützen einer großen Atomizität (z. B. großer AWUPF-, NAWUPF-, AWUN- und NAWUN-Parameterwerte), während sie für die Leistungsfähigkeit gut sind, untragbar teuer sein. Einige herkömmliche Speicherungsvorrichtungen, die Schreibatomizität mit beliebiger Übertragungslänge unterstützen, können einen großen SRAM-Puffer verwenden, um eingehende Schreibvorgänge vorübergehend zu speichern, bis die vollständigen Daten verfügbar sind. Die Schreibvorgänge werden dann auf die zugrunde liegenden nichtflüchtigen Medien geschrieben. Diese Speicherungsvorrichtungen können auch eine hohe lokale Kapazität erfordern, um die Schreibvorgänge im Falle eines Stromausfalls während des Pufferspeicherbetriebs speichern zu können. Zum Beispiel erfordert das Unterstützen von 128 Kilobyte (KB) Schreibatomizität auf einem SSD-Namensraum, der eine Warteschlangentiefe von 128 unterstützt, zumindest 16 Megabyte (MB) SRAM. Das Erhöhen von Schreibatomizitäts- und Warteschlangentiefenfähigkeiten wirken sich quadratisch zunehmend auf die zugehörigen Kosten aus.
  • Einige andere Ansätze können beinhalten, dass der Host Speicherung und/oder Unterstützung bereitstellt. Bei einem Journaling-Ansatz kann zum Beispiel Atomizität mit beliebiger Übertragungslänge auf der Host-Ebene unterstützt werden. Zum Beispiel schreiben Journaling-Dateisysteme zuerst Host-Daten in ein vorrichtungsinternes Journal. Sobald ein Abschluss empfangen wird, werden die Host-Daten erneut in das endgültige Ziel geschrieben. Der Nachteil dieses Ansatzes ist, dass er die Datenmenge, die in die Vorrichtung geschrieben wird, verdoppelt. Ein anderer Ansatz auf Host-Ebene schließt eine reduzierte Schreibgranularität und Host-Verfolgung ein. Der Host zerlegt die Host-Übertragungslänge in kleinere Blöcke (von z. B. 4 KB) und verfolgt den Abschluss jedes der Blöcke. Die Nachteile dieses Ansatzes sind Software-Overhead (Leistungsfähigkeit und Speicherverbrauch) und Komplexität bei der Verfolgung des Abschlusses pro Block. Ein anderer Ansatz auf Host-Ebene kann Transaktionsunterstützung einschließen. Das SSD kann Schreibtransaktionen unterstützen, die Atomizität über Schreibanforderungen bereitstellen, indem der Host veranlasst wird, anzugeben, welche Schreibvorgänge gebündelt werden sollten. Das SSD kann dann die angegebenen Schreibvorgänge atomar verarbeiten. Zum Beispiel kann das SSD die unvollständig empfangenen Schreibdaten in NAND-Medien platzieren und seine L2P-Dereferenzierungstabelle erst aktualisieren, nachdem die Schreibdaten für die Transaktion vollständig innerhalb des SSD empfangen werden. Dieser Ansatz hat den Nachteil, dass der Host die Transaktionsinformation, die spezielle und komplexe Softwareänderungen erfordert, vollständig vom OS bis hin zu der Anwendung, die die Fähigkeit verwenden möchte, bereitstellen muss. Dieser Ansatz verarbeitet auch keine Laufzeit- (z. B. Nichtstromausfall-/Laufzeit-)Atomizität überlappter Schreibvorgänge.
  • Einige Ausführungsformen können eines oder mehrere der vorhergehenden Probleme überwinden. Einige Ausführungsformen können zum Beispiel einen oder mehrere der folgenden Vorteile bereitstellen: skalierbare und kosteneffektive Technologie mit einer nominell großen garantierten Stromausfallschreibatomizität bis zu einer angegebenen MDTS; keine Host-Ebenen-Schreibverstärkung der Journaling-Techniken; keine Host-seitigen (z. B. Software-)Änderungen zum Verfolgen aufgeteilter Schreibvorgänge; keine Vorrichtung-Host-Protokolländerungen zum Angeben von Transaktionen erforderlich und/oder Atomizitätstechnologie für sowohl Laufzeit- als auch Stromausfallschreibatomizität.
  • Für eine Ausführungsform eines NVMe-kompatiblen NAND-basierten SSD können zum Beispiel Fähigkeits-Flags gesetzt werden, um eine große oder maximale Schreibatomizität und Beschränkungen für keine Grenze anzugeben. Eingehende Schreibdaten, selbst wenn sie nicht vollständig verfügbar sind, können in einer Kombination von SRAM und auf den NAND-Medien platziert werden (z. B., ohne dass der Host Transaktionsinformationen angeben muss). Die L2P-Dereferenzierungstabelle des SSD kann aktualisiert werden, nachdem vollständige Schreibinformationen verfügbar sind. Während der Stromausfallbehandlung können, falls der Host-Schreibvorgang nicht abgeschlossen werden kann (z. B., wenn die Vorrichtung nicht die großen Schreibdaten aufweist), die entsprechenden SRAM-Daten und die Metadateninformationen in den internen Puffern ohne L2P-Aktualisierungen verworfen werden, und der Stromausfallwiederherstellungszeitlogik (PLR-Zeitlogik) kann somit signalisiert werden, die in den NAND-Bändern gespeicherten Teildaten nicht zu verwenden. Danach können alle zugehörigen Ressourcen freigegeben werden. Für eine normale (z. B. Nichtstromausfall-/Laufzeit-) große Schreibatomizität kann das SSD in dieser Ausführungsform die mehreren L2P-Einträge im zweiten Pool des NVM-Puffers aktualisieren, wenn die gesamten Daten des entsprechenden Schreibvorgangs innerhalb des SSD verfügbar sind und sich bereits auf einem NAND befinden. In einigen Ausführungsformen können die L2P-Aktualisierungen für verschiedene große Schreibvorgänge sequenziert (anstatt z. B. gemischt) werden. Vorteilhafterweise können einige Ausführungsformen im Vergleich zu herkömmlichen SSDs viel größere Atomizitätsgrößen bereitstellen, die vielen Arbeitslasten, einschließlich zum Beispiel relationalen Datenbanken, Schlüssel-Wert-Datenbanken (KV-Datenbanken), Journaling-Dateisystemen usw., erhebliche Beschleunigungen bereitstellen können.
  • Unter Bezugnahme auf 4 kann eine Ausführungsform der Verwaltung eines NVM-Puffers 40 ein Bereitstellen eines Host-Schreib-Metadaten-Pools 41 und eines NAND-Adressen-Pools 42 einschließen. Jeder der Pools 41 und 42 kann jeweilige In-Bearbeitung-, Bereit- und Frei-Warteschlangen einschließen. Der NVM-Puffer 40 kann ein relativ kleiner Puffer (z. B. im Vergleich zur Größe eines Puffers, der benötigt wird, um andere eingehende Schreibdaten zu speichern) innerhalb eines SSD sein. In einigen Ausführungsformen kann der interne NVM-Puffer 40 als persistenter flüchtiger Speicher (z. B. batterie- oder kondensatorgepufferter DRAM oder SRAM) implementiert sein. Zum Beispiel kann das SSD eine POWER LOSS IMMINENT-Technologie (PLI-Technologie) mit energiespeichernden Kondensatoren einschließen. Die energiespeichernden Kondensatoren können genug Energie (Leistung) bereitstellen, um in Bearbeitung befindliche Befehle abzuschließen und sicherzustellen, dass Daten in den DRAMs/SRAMs per Commit in den nichtflüchtigen NAND-Medien gespeichert werden. Die Kondensatoren können als Pufferbatterien für den persistenten flüchtigen Speicher fungieren. Alternativ dazu kann der NVM-Puffer 40 unter Verwendung eines 3D-Kreuzungspunktspeichers (z. B. OPTANE-Technologie) implementiert werden.
  • Wie in 4 gezeigt, kann der NVM-Puffer 40 in die zwei Speicher-Pools 41 und 42 getrennt sein. Der Pool 41 kann für die Metadaten der Host-Schreibvorgänge genutzt werden, und der andere Pool 42 kann für die NAND-Adresse(n) der entsprechenden Host-Schreibvorgänge genutzt werden. In einigen Ausführungsformen können die Elemente in jedem Speicher-Pool 41 und 42 drei Zustände (z. B. IN BEARBEITUNG, BEREIT und FREI) aufweisen, und die Elemente können in die entsprechenden Warteschlangen zugeordnet werden.
  • In einigen Ausführungsformen kann ein Host-Schreib-Metadatenelement im Host-Schreib-Metadaten-Pool die folgenden Elemente aufweisen: eine logische Blockadresse für den Start (Start-LBA); eine Übertragungslänge; einen Zustand (IN BEARBEITUNG, BEREIT oder FREI) und einen Zeiger auf ein NAND-Adressen-Element (z. B. zeigt der Zeiger auf den Kopf einer verknüpften Liste von NAND-Adressen-Elementen, die durch diesen Host-Schreibbefehl vorab zugeordnet wurden). Wenn sich ein Host-Schreib-Metadatenelement in der Bereit-Warteschlange befindet, wird das Element erst freigegeben, wenn alle seine NAND-Adressen-Elemente gültige NAND-Adressen aufweisen. In einigen Ausführungsformen kann ein NAND-Adressen-Element im NAND-Adressen-Pool die folgenden Elemente aufweisen: eine NAND-Adresse; eine Start-LBA in dieser NAND-Adresse; einen Zustand (IN BEARBEITUNG, BEREIT oder FREI); einen Zeiger auf das Host-Schreib-Metadatenelement, das dieses NAND-Adressen-Element zugeordnet hat; und einen Zeiger auf das nächste NAND-Adressen-Element, das durch dasselbe Host-Schreib-Metadatenelement zugeordnet wird. Nachdem sich ein NAND-Adressen-Element in der Bereit-Warteschlange befindet, kann das Element nach der Aktualisierung der L2P-Dereferenzierungstabelle freigegeben werden.
  • Ein beispielhafter Host-Schreibfluss kann eine Host-Schreib-Versand-Aufgabe und eine Host-Schreib-Abschlussaufgabe einschließen. Unter Bezugnahme auf 5 kann ein beispielhafter Host-Schreib-Versand-Fluss 50 bei Block 51 beginnen. Der Fluss 50 kann ein Empfangen eines Host-Schreibbefehls bei Block 52, ein Zuordnen eines Elements aus dem Host-Schreib-Metadaten-Pool im NVM-Puffer für den empfangenen Schreibbefehl bei Block 53, ein Zuordnen von Elementen aus dem NAND-Adressen-Pool im NVM-Puffer basierend auf der Anzahl von Sektoren und ein Erstellen einer verknüpften Liste dieser Elemente bei Block 54 einschließen. Der Fluss 50 kann dann ein Aktualisieren des Host-Schreib-Metadatenelements und des NAND-Adressen-Elements/der NAND-Adressen-Elemente bei Block 55, ein Zuordnen eines Übertragungspuffers und Direktspeicherzugriffsdeskriptors (DMA-Deskriptors) für die Host-Schreib-Sektoren bei Block 56 und ein Versenden einer DMA-Übertragung bei Block 57 einschließen. Der Fluss 50 kann dann ein Bestimmen, ob alle Sektoren verarbeitet werden, bei Block 58 und, wenn ja, ein Beenden bei Block 59 einschließen. Wenn bei Block 58 nicht alle Sektoren verarbeitet werden, kann der Fluss 50 zu Block 56 zurückkehren.
  • In einigen Ausführungsformen kann die Host-Schreib-Versand-Aufgabe nur die DMA-Übertragung zwischen dem Host-Speicher und dem SSD-Übertragungspuffer verarbeiten. Wenn die Daten im Übertragungspuffer verfügbar sind, kann eine andere Aufgabe (z. B. eine NAND-Schreib-Aufgabe) die Daten in das NAND-Medium schreiben. Außerdem kann jeder zugeordnete Übertragungspufferschlitz einen Zeiger enthalten, der auf das entsprechende Host-Schreib-Metadatenelement zeigt, sodass, wenn die Daten in die Medien geschrieben werden, die vorab zugeordneten NAND-Adressen-Elemente aktualisiert werden können.
  • In einigen Ausführungsformen kann die Host-Schreib-Abschlussaufgabe den Abschluss jeder DMA-Übertragung überwachen. Wenn der letzte Sektor eines Host-Schreibbefehls in den SSD-Übertragungspuffer geschrieben wurde, kann das SSD den Abschluss des Host-Schreibbefehls bestätigen und den Zustand des Host-Schreib-Metadatenelements auf BEREIT aktualisieren, weil der Übertragungspuffer PLI-sicher sein kann, selbst wenn die Daten möglicherweise noch nicht in die Medien geschrieben wurden.
  • Unter Bezugnahme auf 6 kann eine Ausführungsform eines NAND-Schreibflusses 60 bei Block 61 beginnen. Der Fluss 60 kann ein Initiieren von NAND-Schreibvorgängen bei Block 62, ein Zuordnen von NAND-Seiten bei Block 63, ein Erhalten des Host-Schreib-Metadatenelements dieses Übertragungspufferschlitzes bei Block 64, ein Erhalten des nächsten verfügbaren NAND-Adressen-Elements, das durch das Host-Schreib-Metadatenelement vorab zugeordnet wurde, bei Block 65 und ein Aktualisieren des NAND-Adressen-Elements mit der NAND-Seitenadresse bei Block 66 einschließen. Der Fluss 60 kann dann ein Bestimmen, ob das aktuelle NAND-Adressen-Element das letzte NAND-Adressen-Element ist, bei Block 67 und, wenn nicht, ein Durchführen einer Übertragungspuffer-zu-Medien-Datenübertragung bei Block 68 und ein Beenden bei Block 69 einschließen. Wenn das aktuelle NAND-Adressen-Element das letzte NAND-Adressen-Element bei Block 67 ist, kann der Fluss 60 mit einem Verschieben aller NAND-Adressen-Elemente in der verknüpften Liste in die Bereit-Warteschlange bei Block 70, einem Freigeben des Host-Schreib-Metadatenelements bei Block 71, einem Aktualisieren der L2P-Tabelle bei Block 72 und einem Freigeben des NAND-Adressen-Elements/der NAND-Adressen-Elemente bei Block 73 fortfahren. Der Fluss 60 kann dann mit dem Durchführen einer Übertragungspuffer-zu-Medien-Datenübertragung bei Block 68 und Beenden bei Block 69 fortfahren.
  • Die NAND-Schreib-Aufgabe kann unabhängig und parallel mit anderen Aufgaben, wie der Host-Schreibaufgabe, ausgeführt werden. Solange ausreichend Daten im Übertragungspuffer vorhanden sind, um NAND-Programmoperationen zu versenden, kann die Aufgabe aktiv werden. Während NAND-Schreibvorgängen wird die NAND-Seitenadresse nicht direkt in der L2P-Tabelle aktualisiert. Die NAND-Seitenadressen werden zuerst in dem vorab zugeordneten NAND-Adressen-Element gespeichert. Wenn alle NAND-Adressen-Elemente, die durch dasselbe Host-Schreib-Metadatenelement zugeordnet werden, aktualisiert wurden, kann das Host-Schreib-Metadatenelement freigegeben werden, und die NAND-Seitenadressen werden atomar in der L2P-Tabelle aktualisiert. Die NAND-Adressen-Elemente werden nach der L2P-Aktualisierung freigegeben.
  • Einige Ausführungsformen können ferner eine Kollisionshandhabungstechnologie bereitstellen. Für Host-Lesevorgänge, wenn zum Beispiel die LBAs mit denjenigen in der Bereit-Warteschlange des Host-Schreib-Metadaten-Pools überlappt sind, kann eine Lesekollision detektiert werden. In diesem Fall können dann die entsprechenden ausstehenden Schreibvorgänge im Übertragungspuffer sofort in die Medien geleert werden. Der Host-Lesevorgang wird verarbeitet, nachdem die L2P-Tabelle nach den Medienschreibvorgängen aktualisiert wird. Für Host-Schreibvorgänge können Kollisionen ignoriert werden, weil jeder Schreibvorgang atomar gehandhabt wird und die Anforderung einer Handhabung in der Reihenfolge erfüllt. Wenn zum Beispiel zwei ausstehende Schreibbefehle 4 überlappende Sektoren A, B, C, D aufweisen und Thread-1 Befehl-1 und Thread-2 Befehl-2 handhabt (in zeitlicher Reihenfolge gezeigt),gilt:
    • • Thread-1 plant ein Schreiben von Sektor A mit a1;
    • • Thread-2 plant ein Schreiben der Sektoren A und B mit a2 und b2;
    • • Thread-1 plant ein Schreiben der Sektoren B, C, D mit b1, c1, d1 und
    • • Thread-2 plant ein Schreiben der Sektoren C und D mit c2 und d2.
  • Die L2P-Tabelle wird entweder mit (a1, b1, c1, d1) oder (a2, b2, c2, d2) aktualisiert, indem der Fluss 60 verwendet wird, die beide zulässige Zustände sind.
  • Beispiele für eine Atomizitätsunterstützung mit variabler Übertragungslänge
  • In diesem Fall, dass ein PLI-Ereignis oder eine Host-Verbindung unterbrochen wird, bevor das SSD einen Schreibabschluss bestätigt, befindet sich das Host-Schreib-Metadatenelement im In-Bearbeitung-Zustand. Beim anschließenden Einschalten oder wenn die Host-Verbindung wiederhergestellt wird, kann das SSD den Status des Elements aus dem NVM-Puffer wiederherstellen. Für beliebige Elemente, die sich im IN-BEARBEITUNG-Zustand befinden, gibt das SSD diese und alle ihre zugehörigen NAND-Adressen-Elemente ohne L2P-Aktualisierungen frei. Es wird angemerkt, dass Teildaten dieses Host-Befehls möglicherweise in die Medien geschrieben wurden, aber weil der entsprechende L2P-Eintrag weiterhin auf die vorhergehende Kopie zeigt, keine Daten aus der Perspektive des Hosts in das SSD geschrieben werden.
  • In diesem Fall, dass ein PLI-Ereignis oder eine Host-Verbindung unterbrochen wird, nachdem das SSD einen Schreibabschluss bestätigt, befindet sich das Host-Schreib-Metadatenelement im BEREIT-Zustand. Die zugehörigen NAND-Adressen-Elemente des Host-Schreib-Metadatenelements können jedoch unterschiedliche Zustände aufweisen. Wenn die Host-Verbindung unterbrochen wird, ohne Leistung zu verlieren, kann das SSD zum NAND-Schreibprozess (z. B. in 6 gezeigt) fortfahren und die L2P-Tabelle aktualisieren, nachdem alle Daten dieses Host-Befehls in die Medien geschrieben wurden. Im Fall eines PLI-Ereignisses wurden alle Host-Daten in den Übertragungspuffer übertragen, aber nicht alle Host-Daten wurden in die NAND-Medien geschrieben. Beim anschließenden Einschalten kann das SSD zuerst alle Elemente aus dem NVM-Puffer wiederherstellen. Dann kann das SSD die Daten im Übertragungspuffer, der PLI-sicher ist, wiederherstellen und den NAND-Schreibprozess fortsetzen (z. B. wie in 6 gezeigt). Die L2P-Tabelle wird aktualisiert, sobald alle Daten des Befehls in die Medien geschrieben wurden.
  • Beispiel für einen Betriebsfluss
  • Unter Bezugnahme auf 7A bis 7F veranschaulichen Ausführungsformen eines Host-Schreib-Metadatenelements 75 und entsprechender NAND-Adressen-Elemente 76, 77 ... 78, wie eine Ausführungsform eines SSD einen 128-KB-Host-Schreibvorgang (LBA0-255) atomar handhabt. In diesem Beispiel beträgt die LBA-Sektorgröße 512 Bytes (B), und die Granularität der SSD-Dereferenzierungseinheit (SSD-IU) beträgt 4 KB. Der Speicherbedarf pro Host-Schreib-Metadatenelement und NAND-Adressen-Element beträgt 32 B.
  • Nachdem das SSD den Host-Schreibbefehl empfängt, ordnet das SSD das Host-Schreib-Metadatenelement 75 aus der Frei-Warteschlange des Host-Schreib-Metadaten-Pools zu und initialisiert sie (siehe z. B. 7A). Als Nächstes ordnet das SSD 32 NAND-Adressen-Elemente 76, 77... 78 aus der Frei-Warteschlange des NAND-Adressen-Pools zu. Die NAND-Adressen-Elemente werden als eine verknüpfte Liste initialisiert (siehe z. B. 7B). Nachdem die NAND-Adressen-Elemente initialisiert wurden, aktualisiert das SSD das Host-Schreib-Metadatenelement 75, sodass das Element 75 auf den Kopf der verknüpften Liste zeigt (siehe z. B. 7C). Dann ordnet das SSD Übertragungspufferraum (TBUF-Raum) zu, richtet eine DMA-Übertragung zwischen dem Host und dem TBUF ein und versendet diese. Wenn der letzte Sektor der DMA-Übertragung abgeschlossen ist, ändert das SSD den Zustand des Host-Schreib-Metadatenelements 75 zu BEREIT (siehe z. B. 7D). Solange der letzte Sektor der DMA-Übertragung abgeschlossen wird, bestätigt das SSD dem Host einen Schreibabschluss.
  • Die Daten im TBUF werden in anderer Reihenfolge unter Verwendung einer separaten Kernel-Aufgabe in die NAND-Medien geschrieben, die NAND-Schreibvorgänge ausgibt, solange ausreichend Daten im TBUF akkumuliert sind. Das folgende Beispiel zeigt den aktualisierten Inhalt eines NAND-Adressen-Elements 76, wenn LBA8-15 in die NAND-Medien geschrieben wird (siehe z. B. 7E). Es wird angemerkt, dass die L2P-Tabelle hier nicht aktualisiert wird. Wenn das letzte Element 78 (Tail) in der verknüpften Liste aktualisiert wurde, wird der Zustand aller Elemente dieser verknüpften Liste zu BEREIT geändert (siehe z. B. 7F), die L2P-Tabelle wird aktualisiert und das entsprechende Host-Schreib-Metadatenelement 75 und die NAND-Adressen-Elemente 76, 77 ... 78 können freigegeben werden.
  • Die hierin erörterte Technologie kann in verschiedenen Rechensystemen (z. B. einschließlich einer nicht mobilen Rechenvorrichtung, wie einem Desktop, einer Arbeitsstation, einem Server, einem Rack-System usw., einer mobilen Rechenvorrichtung, wie einem Smartphone, einem Tablet, einem Ultra-Mobile Personal Computer (UMPC), einem Laptop-Computer, einer ULTRABOOK-Rechenvorrichtung, einer Smartwatch, Smartglasses, einem intelligenten Armband usw., und/oder einer Client-/Edge-Vorrichtung, wie einer Internet-der-Dinge-Vorrichtung (IdD-Vorrichtung) (z. B. einem Sensor, einer Kamera usw.)) bereitgestellt werden.
  • Nun Bezug nehmend auf 8 kann eine Ausführungsform eines Rechensystems 100 einen oder mehrere Prozessoren 102-1 bis 102-N einschließen (die hierin allgemein als „Prozessoren 102“ oder „Prozessor 102“ bezeichnet werden). Die Prozessoren 102 können über eine Verschaltung oder einen Bus 104 kommunizieren. Jeder Prozessor 102 kann verschiedene Komponenten einschließen, von denen einige der Klarheit halber nur unter Bezugnahme auf den Prozessor 102-1 erörtert werden. Dementsprechend kann jeder der verbleibenden Prozessoren 102-2 bis 102-N die gleichen oder ähnliche Komponenten einschließen, die unter Bezugnahme auf den Prozessor 102-1 erörtert werden.
  • In einigen Ausführungsformen kann der Prozessor 102-1 einen oder mehrere Prozessorkerne 106-1 bis 106-M (hierin als „Kerne 106“ oder allgemeiner als „Kern 106“ bezeichnet), einen Cache 108 (der in verschiedenen Ausführungsformen ein geteilter Cache oder ein privater Cache sein kann) und/oder einen Router 110 einschließen. Die Prozessorkerne 106 können auf einem einzelnen Chip mit integrierter Schaltung (IC-Chip) implementiert werden. Darüber hinaus kann der Chip einen oder mehrere geteilte und/oder private Caches (wie Cache 108), Busse oder Verschaltungen (wie einen Bus oder eine Verschaltung 112), Logik 170, Speichersteuerungen oder andere Komponenten einschließen.
  • In einigen Ausführungsformen kann der Router 110 verwendet werden, um zwischen verschiedenen Komponenten des Prozessors 102-1 und/oder des Systems 100 zu kommunizieren. Darüber hinaus kann der Prozessor 102-1 mehr als einen Router 110 einschließen. Des Weiteren kann die Mehrzahl von Routern 110 derart in Kommunikation stehen, dass eine Datenweiterleitung zwischen verschiedenen Komponenten innerhalb oder außerhalb des Prozessors 102-1 ermöglicht wird.
  • Der Cache 108 kann Daten (z. B. einschließlich Anweisungen) speichern, die durch eine oder mehrere Komponenten des Prozessors 102-1, wie die Kerne 106, genutzt werden. Zum Beispiel kann der Cache 108 Daten, die in einem Speicher 114 gespeichert sind, für einen schnelleren Zugriff durch die Komponenten des Prozessors 102 lokal zwischenspeichern. Wie in 8 gezeigt, kann sich der Speicher 114 über die Verschaltung 104 in Kommunikation mit den Prozessoren 102 befinden. In einigen Ausführungsformen kann der Cache 108 (der geteilt sein kann) verschiedene Ebenen aufweisen, zum Beispiel kann der Cache 108 ein Mid-Level-Cache und/oder ein Last-Level-Cache (LLC) sein. Außerdem kann jeder der Kerne 106 einen Level-1-Cache (L1-Cache) (116-1) (hierin allgemein als „L1-Cache 116“ bezeichnet) einschließen. Verschiedene Komponenten des Prozessors 102-1 können mit dem Cache 108 direkt, durch einen Bus (z. B. den Bus 112) und/oder eine Speichersteuerung oder einen Hub kommunizieren.
  • Wie in 8 gezeigt, kann der Speicher 114 durch eine Speichersteuerung 120 mit anderen Komponenten des Systems 100 gekoppelt sein. Der Speicher 114 kann flüchtigen Speicher einschließen und kann austauschbar als Hauptspeicher oder Systemspeicher bezeichnet werden. Wenngleich die Speichersteuerung 120 als zwischen der Verschaltung 104 und dem Speicher 114 gekoppelt gezeigt ist, kann sich die Speichersteuerung 120 an einer anderen Stelle in dem System 100 befinden. Zum Beispiel können die Speichersteuerung 120 oder Abschnitte davon in einigen Ausführungsformen innerhalb eines der Prozessoren 102 bereitgestellt sein.
  • Das System 100 kann über eine Netzwerkschnittstelle 128 (die sich z. B. über eine drahtgebundene oder drahtlose Schnittstelle mit einem Computernetzwerk und/oder der Cloud 129 in Kommunikation befindet) mit anderen Vorrichtungen/Systemen/Netzwerken kommunizieren. Zum Beispiel kann die Netzwerkschnittstelle 128 eine Antenne (nicht gezeigt) einschließen, um drahtlos (z. B. über eine 802.1 1-Schnittstelle des Institute of Electrical and Electronics Engineers (IEEE) (einschließlich IEEE 802.1 1a/b/g/n/ac usw.), eine Mobilfunkschnittstelle, 3G, 4G, LTE, BLUETOOTH usw.) mit dem Netzwerk/der Cloud 129 zu kommunizieren.
  • Das System 100 kann auch eine Speicherungsvorrichtung, wie eine SSD-Vorrichtung 130, einschließen, die über SSD-Steuerungs-Logik 125 an die Verschaltung 104 gekoppelt ist. Somit kann die Logik 125 einen Zugriff durch verschiedene Komponenten des Systems 100 auf die SSD-Vorrichtung 130 steuern. Wenngleich die Logik 125 als direkt mit der Verbindung 104 in 8 gekoppelt gezeigt ist, kann die Logik 125 ferner alternativ über einen Speicherungsbus/eine Verschaltung (wie den SATA-Bus (Serial Advanced Technology Attachment-Bus), die Peripheral Component Interconnect-Schnittstelle (PCI-Schnittstelle) (oder PCI EXPRESS-Schnittstelle (PCIe-Schnittstelle)), NVM EXPRESS (NVMe) usw.) mit einer oder mehreren anderen Komponenten des Systems 100 kommunizieren (wobei zum Beispiel der Speicherbus über eine andere Logik, wie eine Busbrücke, einen Chipsatz usw., an die Verschaltung 104 gekoppelt ist) Außerdem kann die Logik 125 in Speichersteuerungslogik (wie die unter Bezugnahme auf 9 erörterte) integriert oder auf derselben Vorrichtung mit integrierter Schaltung (IC-Vorrichtung) in verschiedenen Ausführungsformen (z. B. auf derselben Leiterplattenvorrichtung wie die SSD-Vorrichtung 130 oder in demselben Gehäuse wie die SSD-Vorrichtung 130) bereitgestellt sein.
  • Des Weiteren können die Logik 125 und/oder die SSD-Vorrichtung 130 an einen oder mehrere Sensoren (nicht gezeigt) gekoppelt sein, um Informationen (z. B. in Form von einem oder mehreren Bits oder Signalen) zu empfangen, um den Status des einen oder der mehreren Sensoren oder durch diese detektierte Werte anzugeben. Diese/r Sensor(en) kann/können in der Nähe von Komponenten des Systems 100 (oder anderen hierin erörterten Rechensystemen), einschließlich der Kerne 106, der Verschaltungen 104 oder 112, Komponenten außerhalb des Prozessors 102, der SSD-Vorrichtung 130, eines SSD-Busses, eines SATA-Busses, der Logik 125, der Logik 160, der Logik 170 usw. bereitgestellt sein, um Variationen in verschiedenen Faktoren zu erfassen, die die Leistung/das thermische Verhalten des Systems/der Plattform, wie Temperatur, Betriebsfrequenz, Betriebsspannung, Stromverbrauch und/oder Zwischenkernkommunikationsaktivität usw., beeinflussen.
  • 9 veranschaulicht ein Blockdiagramm verschiedener Komponenten der SSD-Vorrichtung 130 gemäß einer Ausführungsform. Wie in 9 veranschaulicht, kann sich die Logik 160 an verschiedenen Orten, wie innerhalb der SSD-Vorrichtung 130 oder der Steuerung 382 usw., befinden und kann eine ähnliche Technologie, wie in Verbindung mit 8 erörtert, einschließen. Die SSD-Vorrichtung 130 schließt eine Steuerung 382 (die wiederum einen oder mehrere Prozessorkerne oder Prozessoren 384 und Speichersteuerungslogik 386 einschließt), einen Cache 138, einen RAM 388, eine Firmware-Speicherung 390, eine oder mehrere NAND-Vorrichtungen 392-1 bis 392-N (zusammen NAND 392) und einen NVM-Puffer 393 (der z. B. PLI-gesicherten SRAM einschließen kann) ein. Der NVM-Puffer 393 und NAND 392 sind über einen oder mehrere Speicherkanäle oder Busse mit der Speichersteuerungslogik 386 gekoppelt. Außerdem kommuniziert die SSD-Vorrichtung 130 über eine Schnittstelle (wie eine SATA-, SAS-, PCIe-, NVMe-Schnittstelle usw.) mit der Logik 125. Die Prozessoren 384 und/oder die Steuerung 382 können Daten, die in die NAND-Vorrichtungen 392-1 bis 392-N geschrieben oder von diesen gelesen werden, komprimieren/dekomprimieren.
  • Wie in 8 und 9 veranschaulicht, kann die SSD-Vorrichtung 130 die Logik 160 einschließen, die sich im gleichen Gehäuse wie die SSD-Vorrichtung 130 befinden und/oder vollständig auf einer gedruckten Leiterplatte (PCB) der SSD-Vorrichtung 130 integriert sein kann. Das System 100 kann ferner Logik 170 außerhalb der SSD-Vorrichtung 130 einschließen. Eines/einer oder mehrere der Bezug nehmend auf 1-7F erörterten Merkmale/Gesichtspunkte/Vorgänge können durch eine oder mehrere der Komponenten von 8 und/oder 9 durchgeführt werden. Außerdem können eines/einer oder mehrere der Merkmale/Gesichtspunkte/Vorgänge von 1-7F in die Firmware 390 programmiert sein. Außerdem kann die SSD-Steuerungs-Logik 125 auch die Logik 160 einschließen. Vorteilhafterweise kann die Logik 160 Technologie zum Implementieren eines oder mehrerer Gesichtspunkte des Systems 10 (1), der Einrichtung 15 (2), des Verfahrens 20 ( 3A bis 3C), des NVM-Puffers 40 (4), des Flusses 50 (5), des Flusses 60 (6), des Host-Metadatenelements 75 und der NAND-Adressen-Elemente 76, 77 ... 78 (7A bis 7F) und/oder beliebige der hierin erörterten Merkmale einschließen. Zum Beispiel kann die Logik 170 Technologie zum Implementieren der Gesichtspunkte der Host-Vorrichtung/des Computersystems/des Agenten der verschiedenen hierin beschriebenen Ausführungsformen einschließen, während die Logik 160 Technologie zum Implementieren der Gesichtspunkte der Speicherungsvorrichtung der verschiedenen hierin beschriebenen Ausführungsformen einschließen kann. Vorteilhafterweise benötigt die Host-seitige Logik 170 möglicherweise keine speziellen Modifikationen, um mit der Speicherungsvorrichtungslogik 160 zu arbeiten.
  • Insbesondere kann die Logik 160 konfiguriert sein, um Metadaten für eingehende Schreibdaten in dem NVM-Puffer 393 zu speichern, andere Daten für die eingehenden Schreibdaten in dem NAND 392 zu speichern und sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten mit einem nominell großen NAWUPF/NAWAN bis zur angegebenen MDTS bereitzustellen. In einigen Ausführungsformen kann die Logik 160 konfiguriert sein, um die Metadaten für die eingehenden Schreibdaten in einem ersten Pool des NVM-Puffers 393 zu speichern und NAND-Adressen für die eingehenden Schreibdaten in einem zweiten Pool des NVM-Puffers 393 zu speichern. Zum Beispiel kann die Logik 160 ferner konfiguriert sein, um zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des NVM-Puffers 393 zu unterhalten und eine verknüpfte Liste von NAND-Adressen-Elementen für die eingehenden Schreibdaten im zweiten Pool des NVM-Puffers 393 zu erstellen.
  • In einigen Ausführungsformen kann die Logik 160 auch konfiguriert sein, um mehrere Einträge, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von NAND-Adressen-Elementen, in einer L2P-Dereferenzierungstabelle atomar zu aktualisieren, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind. Zum Beispiel kann die Logik 160 auch konfiguriert sein, um Aktualisierungen der L2P-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten zu sequenzieren. Im Fall einer Wiederherstellung von einem Stromausfall kann die Logik 160 konfiguriert sein, um die Metadaten in dem NVM-Puffer 393 und die anderen Daten in dem NAND 392 ohne eine Aktualisierung der L2P-Dereferenzierungstabelle basierend auf einem Host-Schreib-Element-Flag in dem NVM-Puffer 393 zu verwerfen.
  • In anderen Ausführungsformen kann die SSD-Vorrichtung 130 durch jede geeignete(n) Speicherungs-/Speichertechnologie/-medien ersetzt werden. In einigen Ausführungsformen kann die Logik 160 mit einem oder mehreren Substraten (z. B. Silizium, Saphir, Galliumarsenid, einer gedruckten Leiterplatte (PCB) usw.) gekoppelt sein und kann Transistorkanalregionen einschließen, die innerhalb des einen oder der mehreren Substrate positioniert sind. In anderen Ausführungsformen kann die SSD-Vorrichtung 130 zwei oder mehrere Typen von Speicherungsmedien einschließen. Der Großteil der Speicherung kann zum Beispiel NAND sein und kann ferner etwas schnellere, kleinere Granularität aufweisen, auf die zugegriffen werden kann (z. B. byteadressierbarer) NVM, wie INTEL OPTANE-TECHNOLOGIE. Wie in 8 gezeigt, können Merkmale oder Gesichtspunkte der Logik 160 im gesamten System 100 verteilt und/oder gemeinsam mit verschiedenen Komponenten des Systems 100 angeordnet/in diese integriert sein.
  • Der Ausdruck „gekoppelt“ kann hierin verwendet werden, um sich auf einem beliebigen Typ von Beziehung, direkt oder indirekt, zwischen den fraglichen Komponenten zu beziehen, und kann für elektrische, mechanische, fluide, optische, elektromagnetische, elektromechanische oder andere Verbindungen anwendbar sein. Außerdem können die Begriffe „erste/r/s“, „zweite/r/s“ usw. hierin nur zur Erleichterung der Erörterung verwendet werden und tragen keine besondere zeitliche oder chronologische Bedeutung, sofern nicht anders angegeben.
  • Wie in dieser Anmeldung und den Ansprüchen verwendet, kann eine Liste von Elementen, die durch den Ausdruck „eine/r/s oder mehrere von“ verbunden sind, eine beliebige Kombination der aufgelisteten Begriffe bedeuten. Zum Beispiel können die Phrasen „eine/r/s oder mehrere von A, B und C“ und die Phrase „eine/r/s oder mehrere von A, B und C“ beide A; B; C; A und B; A und C; B und C oder A, B und C bedeuten. Verschiedene Komponenten der hierin beschriebenen Systeme können in Software, Firmware und/oder Hardware und/oder einer beliebigen Kombination davon implementiert sein. Zum Beispiel können verschiedene Komponenten der hierin erörterten Systeme oder Vorrichtungen, zumindest teilweise, durch Hardware eines Rechen-SoC, wie es in einem Rechensystem, wie zum Beispiel einem Smartphone, zu finden ist, bereitgestellt werden. Der Fachmann wird erkennen, dass hierin beschriebene Systeme weitere Komponenten einschließen können, die in den entsprechenden Figuren nicht dargestellt wurden. Zum Beispiel können die hierin erörterten Systeme weitere Komponenten, wie Bitstrom-Multiplexer- oder Demultiplexermodule und dergleichen, einschließen, die der Klarheit halber nicht dargestellt wurden.
  • Wenngleich die Implementierung der hierin erörterten beispielhaften Verfahren das Durchführen von allen gezeigten Vorgängen in der veranschaulichten Reihenfolge einschließen kann, ist die vorliegende Offenbarung nicht darauf beschränkt und kann die Implementierung der hierin enthaltenen beispielhaften Verfahren, in verschiedenen Beispielen, nur einen Teilsatz der gezeigten Vorgänge, Vorgänge, die in einer anderen als der veranschaulichten Reihenfolge durchgeführt werden, oder zusätzliche Vorgänge einschließen.
  • Außerdem können ein beliebiger oder beliebige mehrere der hierin erörterten Vorgänge als Reaktion auf Anweisungen, die durch ein oder mehrere Computerprogrammprodukte bereitgestellt werden, durchgeführt werden. Diese Programmprodukte können signaltragende Medien einschließen, die Anweisungen bereitstellen, die, bei Ausführung zum Beispiel durch einen Prozessor, die hierin beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in einer beliebigen Form eines oder mehrerer maschinenlesbarer Medien bereitgestellt werden. Somit kann zum Beispiel ein Prozessor mit einer/einem oder mehreren Grafikverarbeitungseinheit(en) oder Prozessorkern(en) einen oder mehrere der Blöcke der hierin enthaltenen beispielhaften Verfahren als Reaktion auf Programmcode und/oder Anweisungen oder Anweisungssätze, die durch ein oder mehrere maschinenlesbare Medien zu dem Prozessor übertragen werden, durchführen. Im Allgemeinen kann ein maschinenlesbares Medium Software in Form von Programmcode und/oder Anweisungen oder Anweisungssätzen übertragen, die beliebige der hierin beschriebenen Vorrichtungen und/oder Systeme dazu veranlassen können, zumindest Abschnitte der hierin erörterten Vorgänge und/oder beliebige Abschnitte der Vorrichtungen, Systeme oder eines beliebigen Moduls oder einer beliebigen Komponente, wie hierin erörtert, zu implementieren.
  • Wie in einer beliebigen hierin beschriebenen Implementierung verwendet, bezieht sich der Begriff „Modul“ auf eine beliebige Kombination von Software-Logik, Firmware-Logik, Hardware-Logik und/oder von Schaltungsanordnungen, die dazu ausgelegt sind, die hierin beschriebene Funktionalität bereitzustellen. Die Software kann als ein Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen ausgeführt werden, und wie in einer beliebigen hierin beschriebenen Implementierung verwendet, kann „Hardware“ zum Beispiel einzeln oder in beliebiger Kombination hartverdrahtete Schaltungen, programmierbare Schaltungen, Zustandsmaschinenschaltungen, Festfunktionsschaltungen, Ausführungseinheitsschaltungen und/oder Firmware, die Anweisungen speichert, die durch programmierbare Schaltungen ausgeführt werden, umfassen. Die Module können, zusammen oder einzeln, als Schaltungen ausgeführt werden, die einen Teil eines größeren Systems, zum Beispiel einer integrierten Schaltung (IC), eines System-on-Chip (SoC) und dergleichen, bilden.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und dergleichen), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), Digitalsignalprozessoren (DSP), eine feldprogrammierbare Gatteranordnung (FPGA), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und dergleichen einschließen. Beispiele für Softwareelemente können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammierschnittstellen (API), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon einschließen. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie der gewünschten Rechenrate, Leistungsniveaus, Wärmetoleranzen, dem Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen.
  • Ein oder mehrere Gesichtspunkte von zumindest einer Ausführungsform können durch typische Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik in dem Prozessor darstellt, die, wenn sie durch eine Maschine gelesen wird, die Maschine dazu veranlasst, Logik zum Durchführen der hierin beschriebenen Techniken herzustellen. Diese Darstellungen, bekannt als IP-Kerne, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und für verschiedene Kunden oder Herstellungseinrichtungen bereitgestellt werden, um in die Herstellungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Wenngleich bestimmte hierin dargelegte Merkmale Bezug nehmend auf verschiedene Implementierungen beschrieben wurden, soll diese Beschreibung nicht in einem einschränkenden Sinn ausgelegt werden. Somit werden verschiedene Modifikationen der hierin beschriebenen Implementierungen und andere Implementierungen, die dem Fachmann in dem Gebiet, zu dem die vorliegende Offenbarung gehört, ersichtlich sind, als im Wesen und Schutzumfang der vorliegenden Offenbarung liegend betrachtet.
  • Es versteht sich, dass die Ausführungsformen nicht auf die derart beschriebenen Ausführungsformen beschränkt sind, sondern mit einer Modifikation und Änderung umgesetzt werden können, ohne vom Schutzumfang der beigefügten Ansprüche abzuweichen. Zum Beispiel können die vorstehenden Ausführungsformen eine spezifische Kombination von Merkmalen einschließen. Jedoch sind die vorstehenden Ausführungsformen nicht darauf beschränkt und können die vorstehenden Ausführungsformen, in verschiedenen Implementierungen, ein Durchführen von nur einem Teilsatz dieser Merkmale, ein Durchführen einer verschiedenen Reihenfolge dieser Merkmale, ein Durchführen einer verschiedenen Kombination dieser Merkmale und/oder ein Durchführen von zusätzlichen Merkmalen außer den explizit aufgeführten Merkmalen einschließen. Der Schutzumfang der Ausführungsformen ist deshalb Bezug nehmend auf die beigefügten Ansprüche zusammen mit dem vollständigen Schutzumfang von Äquivalenten, die von diesen Ansprüchen abgedeckt werden, zu bestimmen.

Claims (25)

  1. Elektronische Einrichtung, umfassend: ein oder mehrere Substrate und Logik, die an das eine oder die mehreren Substrate gekoppelt ist, wobei die Logik vorgesehen ist zum: Steuern des Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet, Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer, Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten.
  2. Einrichtung nach Anspruch 1, wobei die Logik ferner vorgesehen ist zum: Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des nichtflüchtigen Speicherpuffers und Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des nichtflüchtigen Speicherpuffers.
  3. Einrichtung nach Anspruch 2, wobei die Logik ferner vorgesehen ist zum: Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des nichtflüchtigen Speicherpuffers und Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des nichtflüchtigen Speicherpuffers.
  4. Einrichtung nach Anspruch 3, wobei die Logik ferner vorgesehen ist zum: atomaren Aktualisieren mehrerer Einträge in einer Logisch-zu-physisch-Dereferenzierungstabelle, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind.
  5. Einrichtung nach Anspruch 4, wobei die Logik ferner vorgesehen ist zum: Sequenzieren von Aktualisierungen der Logisch-zu-physisch-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten.
  6. Einrichtung nach einem der Ansprüche 4 bis 5, wobei die Logik ferner vorgesehen ist zum: Verwerfen der Metadaten im nichtflüchtigen Speicherpuffer und der anderen Daten in der primären persistenten Speicherung ohne eine Aktualisierung der Logisch-zu-physisch-Dereferenzierungstabelle basierend auf einem Indikator im NVM-Puffer im Fall einer Wiederherstellung von einem Stromausfall.
  7. Einrichtung nach einem der Ansprüche 1 bis 6, wobei die primäre persistente Speicherung und der nichtflüchtige Speicherpuffer Teil eines Festkörperlaufwerks sind.
  8. Elektronisches Speicherungssystem, umfassend: eine primäre persistente Speicherung mit einem ersten Typ von Medien; einen nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet; und eine Steuerung, die kommunikativ mit der primären persistenten Speicherung und dem nichtflüchtigen Speicherpuffer gekoppelt ist, wobei die Steuerung Logik einschließt zum: Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer, Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten.
  9. System nach Anspruch 8, wobei die Logik ferner vorgesehen ist zum: Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des nichtflüchtigen Speicherpuffers und Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des nichtflüchtigen Speicherpuffers.
  10. System nach Anspruch 9, wobei die Logik ferner vorgesehen ist zum: Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des nichtflüchtigen Speicherpuffers und Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des nichtflüchtigen Speicherpuffers.
  11. System nach Anspruch 10, wobei die Logik ferner vorgesehen ist zum: atomaren Aktualisieren mehrerer Einträge in einer Logisch-zu-physisch-Dereferenzierungstabelle, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind.
  12. System nach Anspruch 11, wobei die Logik ferner vorgesehen ist zum: Sequenzieren von Aktualisierungen der Logisch-zu-physisch-Dereferenzierungstabelle für die eingehenden getrennt von anderen eingehenden Schreibdaten.
  13. Verfahren zum Steuern einer Speicherung, umfassend: Steuern des Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einem nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet; Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer; Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten.
  14. Verfahren nach Anspruch 13, ferner umfassend: Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des nichtflüchtigen Speicherpuffers und Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des nichtflüchtigen Speicherpuffers.
  15. Verfahren nach Anspruch 14, ferner umfassend: Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des nichtflüchtigen Speicherpuffers und Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des nichtflüchtigen Speicherpuffers.
  16. Verfahren nach Anspruch 15, ferner umfassend: atomares Aktualisieren mehrerer Einträge in einer Logisch-zu-physisch-Dereferenzierungstabelle, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind.
  17. Verfahren nach Anspruch 16, ferner umfassend: Verwerfen der Metadaten im nichtflüchtigen Speicherpuffer und der anderen Daten in der primären persistenten Speicherung ohne eine Aktualisierung der Logisch-zu-physisch-Dereferenzierungstabelle basierend auf einem Indikator im NVM-Puffer im Fall einer Wiederherstellung von einem Stromausfall.
  18. Zumindest ein nicht transitorisches ein maschinenlesbares Medium, umfassend eine Vielzahl von Anweisungen, die, als Reaktion auf ihre Ausführung auf einer Rechenvorrichtung, die Rechenvorrichtung veranlassen zum Steuern des Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet; Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer; Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten.
  19. Zumindest ein nicht transitorisches ein maschinenlesbares Medium nach Anspruch 18, umfassend eine Vielzahl von weiteren Anweisungen, die, als Reaktion auf ihre Ausführung auf der Rechenvorrichtung, die Rechenvorrichtung veranlassen zum: Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des nichtflüchtigen Speicherpuffers und Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des nichtflüchtigen Speicherpuffers.
  20. Zumindest ein nicht transitorisches ein maschinenlesbares Medium nach Anspruch 19, umfassend eine Vielzahl von weiteren Anweisungen, die, als Reaktion auf ihre Ausführung auf der Rechenvorrichtung, die Rechenvorrichtung veranlassen zum: Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des nichtflüchtigen Speicherpuffers und Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des nichtflüchtigen Speicherpuffers.
  21. Zumindest ein nicht transitorisches ein maschinenlesbares Medium nach Anspruch 20, umfassend eine Vielzahl von weiteren Anweisungen, die, als Reaktion auf ihre Ausführung auf der Rechenvorrichtung, die Rechenvorrichtung veranlassen zum: atomaren Aktualisieren mehrerer Einträge in einer Logisch-zu-physisch-Dereferenzierungstabelle, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind.
  22. Speicherungssteuerungseinrichtung, umfassend: ein Mittel zum Steuern des Zugriffs auf eine primäre persistente Speicherung mit einem ersten Typ von Medien und einen nichtflüchtigen Speicherpuffer mit einem zweiten Typ von Medien, der sich vom ersten Typ von Medien unterscheidet; ein Mittel zum Speichern von Metadaten für eingehende Schreibdaten im nichtflüchtigen Speicherpuffer; ein Mittel zum Speichern anderer Daten für die eingehenden Schreibdaten in der primären persistenten Speicherung und ein Mittel zum Bereitstellen von sowohl Laufzeit- als auch Stromausfallschreibatomizität für die eingehenden Schreibdaten.
  23. Einrichtung nach Anspruch 22, ferner umfassend: ein Mittel zum Speichern der Metadaten für die eingehenden Schreibdaten in einem ersten Pool des nichtflüchtigen Speicherpuffers und ein Mittel zum Speichern von Adressen einer primären persistenten Speicherung für die eingehenden Schreibdaten in einem zweiten Pool des nichtflüchtigen Speicherpuffers.
  24. Einrichtung nach Anspruch 23, ferner umfassend: ein Mittel zum Unterhalten von zwei oder mehr Warteschlangen für jeden von dem ersten und dem zweiten Pool des nichtflüchtigen Speicherpuffers und ein Mittel zum Erstellen einer verknüpften Liste von Adresselementen einer primären persistenten Speicherung für die eingehenden Schreibdaten im zweiten Pool des nichtflüchtigen Speicherpuffers.
  25. Einrichtung nach Anspruch 24, ferner umfassend: ein Mittel zum atomaren Aktualisieren mehrerer Einträge in einer Logisch-zu-physisch-Dereferenzierungstabelle, basierend auf den Metadaten, die im ersten Pool gespeichert sind, und der verknüpften Liste von Adresselementen einer primären persistenten Speicherung, nachdem vollständige Schreibinformationen für den eingehenden Schreibvorgang verfügbar sind.
DE102021117355.8A 2020-08-06 2021-07-06 SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge Pending DE102021117355A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/987,165 US12019910B2 (en) 2020-08-06 2020-08-06 SSD managed host write atomicity with arbitrary transfer length
US16/987,165 2020-08-06

Publications (1)

Publication Number Publication Date
DE102021117355A1 true DE102021117355A1 (de) 2022-02-10

Family

ID=73228663

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021117355.8A Pending DE102021117355A1 (de) 2020-08-06 2021-07-06 SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge

Country Status (3)

Country Link
US (1) US12019910B2 (de)
CN (1) CN114064515A (de)
DE (1) DE102021117355A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
CN115544542B (zh) * 2022-09-29 2023-05-05 盐城工学院 一种基于忆阻神经网络同步控制的图像加密方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100191896A1 (en) * 2009-01-23 2010-07-29 Magic Technologies, Inc. Solid state drive controller with fast NVRAM buffer and non-volatile tables
EP2598996B1 (de) * 2010-07-28 2019-07-10 SanDisk Technologies LLC Vorrichtung, system und verfahren für bedingte speichervorgänge auf nichtflüchtigen speichern
US20170185354A1 (en) 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device

Also Published As

Publication number Publication date
US12019910B2 (en) 2024-06-25
CN114064515A (zh) 2022-02-18
US20200363997A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102013022712B4 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102018128601A1 (de) Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE102009037984A1 (de) Speichervorrichtung für eine Hierarchische Speicherarchitektur
DE112009004900T5 (de) Vertagen von Speicheroperationen zum Reduzieren von Leselatenz in Speicherfeldern
DE102004038649A1 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE102020132768A1 (de) Rückgängigmachen und erneutes ausführen von weicher post-package-reparatur
DE102021117355A1 (de) SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112017006704T5 (de) Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102019113048A1 (de) Rechen-abladung in blockspeicherung unter verwendung virtueller objekte
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102021122233A1 (de) Beschleuniger-controller-hub
DE102020133261A1 (de) Techniken zum Vorhersagen der Zeit bis zur Bereitschaft für eine Speichervorrichtung
DE102018110704A1 (de) Speicherungsvorrichtung für ein vorausgehendes Verwalten einer Schreibdaten zuzuweisenden physischen Adresse
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102019102884A1 (de) Techniken zum Vorabrufen von Daten zu einem ersten Speicherlevel einer hierarchischen Speicheranordnung