DE112020000183T5 - Speicherungsklassenspeicherzugriff - Google Patents

Speicherungsklassenspeicherzugriff Download PDF

Info

Publication number
DE112020000183T5
DE112020000183T5 DE112020000183.0T DE112020000183T DE112020000183T5 DE 112020000183 T5 DE112020000183 T5 DE 112020000183T5 DE 112020000183 T DE112020000183 T DE 112020000183T DE 112020000183 T5 DE112020000183 T5 DE 112020000183T5
Authority
DE
Germany
Prior art keywords
data
scm
read
device interface
block
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
DE112020000183.0T
Other languages
English (en)
Inventor
Adam Manzanares
Cyril Guyot
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.)
Sandisk Technologies Inc NDGesD Staates Us
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112020000183T5 publication Critical patent/DE112020000183T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Eine Schreibanforderung wird empfangen, um byteadressierbare Daten zu schreiben, die einem ersten Eintrag einer Vielzahl von Einträgen in einer Seitentabelle entsprechen, und die byteadressierbaren Daten werden in einen Puffer eines Host-Speichers geschrieben. Eine Leseanforderung wird empfangen, um byteadressierbare Daten zu lesen, die einem zweiten Eintrag der Vielzahl von Einträgen in der Seitentabelle entsprechen, und ein Lesebefehl wird unter Verwendung einer Speichervorrichtungsschnittstelle an eine Vorrichtung gesendet, um die byteadressierbaren Daten aus einem Speicherungsklassenspeicher (SCM) der Vorrichtung zu lesen. Gemäß einem anderen Gesichtspunkt verwendet eine Steuerschaltungsanordnung der Vorrichtung eine Blockvorrichtungsschnittstelle zum Empfangen von Befehlen von einem Host, um Daten in Blöcken aus dem SCM zu lesen und in diesen zu schreiben. Die Steuerschaltungsanordnung verwendet auch eine Speichervorrichtungsschnittstelle zum Empfangen von Lesebefehlen von dem Host, um byteadressierbare Daten aus dem SCM zu lesen.

Description

  • HINTERGRUND
  • In jüngster Zeit wurde der Speicherungsklassenspeicher (SCM) als nichtflüchtige Speicherungsoption entwickelt, die fähig ist, eine feine Granularität eines Datenzugriffs (d. h. byteadressierbar oder Cache-Zeilen-Größe) bereitzustellen. Außerdem stellen SCMs in der Regel eine kürzere Datenzugriffslatenz bereit als herkömmliche nichtflüchtige Speicherungsvorrichtungen, wie ein Festkörperlaufwerk (SSD) unter Verwendung eines Flash-Speichers oder ein Festplattenlaufwerk (HDD) unter Verwendung einer rotierenden Magnetplatte. SCM kann zum Beispiel Speicher, wie einen Magnetic Resistance Random Access Memory (MRAM), einen Phase Change Memory (PCM) und einen Resistive RAM (RRAM), einschließen.
  • Obwohl SCM einen byteadressierbaren Zugriff auf Daten (d. h. in Einheiten, die kleiner als eine Seitengröße oder eine Blockgröße sind) ermöglichen kann, kann die Zeit zum Schreiben von Daten in den SCM viel länger sein als die Zeit zum Lesen von Daten aus dem SCM. Dies hat die Übernahme von SCM als eine erschwinglichere und leistungseffizientere Alternative zu Speichern, die herkömmlich für Host-Speicher verwendet werden, wie Dynamic Random Access Memory (DRAM) oder Static Random Access Memory (SRAM), verlangsamt.
  • Figurenliste
  • Die Merkmale und Vorteile der Ausführungsformen der vorliegenden Offenbarung werden aus der nachstehenden detaillierten Beschreibung in Verbindung mit den Zeichnungen deutlicher hervorgehen. Die Zeichnungen und die damit verbundenen Beschreibungen sind bereitgestellt, um Ausführungsformen der Offenbarung zu veranschaulichen, und nicht um den Schutzumfang der Patentansprüche einzuschränken.
    • 1 ist ein Blockdiagramm einer Beispielumgebung, einschließlich eines Hosts und einer Vorrichtung, einschließlich eines Speicherungsklassenspeichers (SCM), gemäß einer oder mehreren Ausführungsformen.
    • 2 ist ein Blockdiagramm, das das Handhaben von Leseanforderungen und Schreibanforderungen gemäß einer oder mehreren Ausführungsformen zeigt.
    • 3 ist ein Beispiel einer Seitentabelle gemäß einer oder mehreren Ausführungsformen.
    • 4 ist ein Statusdiagramm für einen Seitentabelleneintrag gemäß einer oder mehreren Ausführungsformen.
    • 5 ist ein Flussdiagramm für einen Seitentabellenerstellungsprozess gemäß einer oder mehreren Ausführungsformen.
    • 6 ist ein Flussdiagramm für einen Schreibanforderungsprozess gemäß einer oder mehreren Ausführungsformen.
    • 7 ist ein Flussdiagramm für einen Leseanforderungsprozess für byteadressierbare Daten gemäß einer oder mehreren Ausführungsformen.
    • 8 ist ein Flussdiagramm für einen Entleerungsprozess von einem Host-Speicher zu einem SCM gemäß einer oder mehreren Ausführungsformen.
    • 9 ist ein Flussdiagramm für einen Mehrfachschnittstellenprozess für eine Vorrichtung, einschließlich eines SCM, gemäß einer oder mehreren Ausführungsformen.
    • 10 ist ein Flussdiagramm für einen Blockschreibprozess für eine Vorrichtung, einschließlich eines SCM, gemäß einer oder mehreren Ausführungsformen.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden detaillierten Beschreibung werden zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der vorliegenden Offenbarung bereitzustellen. Jedoch wird für den Durchschnittsfachmann offensichtlich sein, dass die verschiedenen offenbarten Ausführungsformen ohne einige dieser spezifischen Details umgesetzt werden können. In anderen Fällen wurden gut bekannte Strukturen und Techniken nicht im Detail gezeigt, um zu vermeiden, dass die verschiedenen Ausführungsformen unnötig verkompliziert werden.
  • Beispielsystemumgebungen
  • 1 ist ein Blockdiagramm einer Beispielumgebung, einschließlich eines Hosts 101 und einer Vorrichtung 111, gemäß einer oder mehreren Ausführungsformen. Der Host 101 kommuniziert mit der Vorrichtung 111, um Daten von der Vorrichtung 111 abzurufen und darin zu speichern. Wie weiter unten beschrieben, kann die Vorrichtung 111 als Speichervorrichtung und/oder als Speicherungsvorrichtung für den Host 101 über entsprechende Vorrichtungsschnittstellen dienen. Der Host 101 und die Vorrichtung 111 können separate Vorrichtungen sein oder können zusammen als Teil einer einzelnen elektronischen Vorrichtung, wie zum Beispiel eines Servers, einer Rechenvorrichtung, einer eingebetteten Vorrichtung, eines Desktops, eines Laptop- oder Notebook-Computers oder einer anderen Art von elektronischer Vorrichtung, wie eines Tablets, eines Smartphones, einer Netzwerkmedienwiedergabeeinheit, einer tragbaren Medienwiedergabeeinheit, eines Fernsehers, einer Digitalkamera oder eines digitalen Videorekorders (DVR), untergebracht sein. In anderen Implementierungen kann der Host 101 ein Client-Computer oder eine Speicherungssteuerung sein, und die Vorrichtung 111 kann ein Speicher-/Speicherungsserver oder Speicher-/Speicherungsknoten in einem Netzwerk, wie in einem Cloud-Speicherungsnetzwerk oder Datenzentrum, sein. Wie hierin verwendet, kann sich ein Host auf eine Vorrichtung beziehen, die fähig ist, Befehle an eine Vorrichtung auszugeben, um Daten zu speichern oder Daten abzurufen. In dieser Hinsicht kann der Host 101 eine andere Speicherungsvorrichtung, wie eine intelligente Datenspeicherungsvorrichtung, die fähig ist, Anwendungen auszuführen und mit anderen Speicher-/Speicherungsvorrichtungen zu kommunizieren, einschließen.
  • Wie in 1 gezeigt, schließt die Vorrichtung 111 einen Speicherungsklassenspeicher (SCM) 120 ein, der eine nichtflüchtige Speicherung von Daten bereitstellt, auf die auf einer Byte-Ebene (d. h. auf einer Cache-Zeilen-Größe) zugegriffen werden kann, die kleiner als eine Seitengröße oder eine Blockgröße ist. Der SCM 120 kann zum Beispiel Chalcogenide RAM (C-RAM), Phase Change Memory (PCM), Programmable Metallization Cell RAM (PMC-RAM oder PMCm), Ovonic Unified Memory (OUM), Resistive RAM (RRAM), Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), Fast NAND und/oder 3D-XPoint-Speicher einschließen. Solche SCMs stellen ein schnelleres Lesen und Schreiben von Daten bereit als herkömmliche nichtflüchtige Speicherung, wie Flash-Speicher oder eine rotierende Magnetplatte. In manchen Implementierungen kann die Vorrichtung 111 zusätzlich zu dem SCM 120 auch andere Arten von nichtflüchtiger Speicherung einschließen, wie eine rotierende Magnetplatte oder einen Flash-Speicher.
  • Obwohl der SCM ein schnelleres Lesen und Schreiben von Daten bereitstellen kann als herkömmliche Formen von nichtflüchtiger Speicherung, benötigt der SCM allgemein länger zum Schreiben von Daten als zum Lesen von Daten. Dies kann insbesondere in Fällen deutlich werden, in denen eine Adressdereferenzierung im SCM verwendet wird, wie zum Verschleißausgleich. Wie oben erwähnt, kann die längere Schreiblatenz von SCMs die Verwendung von SCM als Ersatz für flüchtigen lokalen Speicher, wie Dynamic Random Access Memory (DRAM) or Static Random Access Memory (SRAM), die teurer sind und mehr Strom verbrauchen, vermeiden. Gemäß einem Gesichtspunkt der vorliegenden Offenbarung wird ein Basisadressregister (BAR) durch die Vorrichtung 111 dem Host 101 verfügbar gemacht, sodass Lesebefehle für byteadressierbare Daten (z. B. für Cache-Zeilen oder weniger als eine Seitengröße oder Blockgröße) unter Verwendung einer Speichervorrichtungsschnittstelle gesendet werden können, während Schreibbefehle von dem Host 101 unter Verwendung einer Blockvorrichtungsschnittstelle zum Schreiben von Daten in größere Datenblöcke gesendet werden. Wie unten detaillierter erörtert, können Daten, die in den SCM 120 geschrieben werden sollen, in einem Puffer 107 eines Speichers 106 des Hosts 101 aggregiert oder modifiziert werden, bevor sie in den SCM 120 entleert werden. Der Host 101 kann dann einen Schreibbefehl zum Schreiben des aggregierten oder modifizierten Datenblocks in den SCM 120 senden. Diese Anordnung reduziert die Latenz zum Lesen und Schreiben von Daten in den SCM 120, sodass der SCM 120 zum Speichern von byteadressierbaren Daten verwendet werden kann, die ansonsten in dem Speicher 106 gespeichert würden.
  • In dem Beispiel von 1 schließt der Host 101 eine Prozessorschaltungsanordnung 102 zum Ausführen von computerausführbaren Anweisungen, wie ein Betriebssystem (OS) des Hosts 101, ein. Die Prozessorschaltungsanordnung 102 kann eine Schaltungsanordnung, wie einen oder mehrere Prozessoren zum Ausführen von Anweisungen, einschließen und kann zum Beispiel eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), eine Mikrosteuerung, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), festverdrahtete Logik, eine analoge Schaltungsanordnung und/oder eine Kombination davon einschließen. In manchen Implementierungen kann die Prozessorschaltungsanordnung 102 ein System auf einem Chip (SoC) einschließen. In dieser Hinsicht zeigt das Beispiel von 1 eine Speicherverwaltungseinheit (MMU) 104 als Teil der Prozessorschaltungsanordnung 102 oder in demselben Gehäuse wie die Prozessorschaltungsanordnung 102 eingeschlossen. Der Fachmann wird erkennen, dass die Prozessorschaltungsanordnung 102, der Speicher 106 und/oder eine Vorrichtungsschnittstelle 108 in manchen Implementierungen zu einer einzigen Komponente oder einem einzigen Gehäuse kombiniert werden können. Andere Implementierungen schließen möglicherweise keine MMU ein. Wie hierin verwendet, kann eine MMU als Prozessorschaltungsanordnung betrachtet werden.
  • In dem Beispiel von 1 kann die Prozessorschaltungsanordnung 102 über die MMU 104 auf den Speicher 106 zugreifen, um Anweisungen, wie Anweisungen zum Ausführen einer Blockvorrichtungsschnittstelle oder einer Speichervorrichtungsschnittstelle, die verwendet wird, um Daten von der Vorrichtung 111 zu lesen oder Daten in diese zu schreiben, auszuführen. In dieser Hinsicht und wie unten detaillierter erörtert, kann der Puffer 107 des Speichers 106 byteadressierbare Daten für Schreibanforderungen speichern, die aggregiert oder gepuffert werden, um eine Blockgröße für den SCM 120 zu erreichen.
  • Der Speicher 106 dient als ein Hauptspeicher für den Host 101 und kann zum Beispiel einen flüchtigen RAM, wie DRAM oder SRAM, einen nichtflüchtigen RAM oder einen anderen Festkörperspeicher einschließen. Während sich die Beschreibung hierin auf Festkörperspeicher allgemein bezieht, versteht es sich, dass Festkörperspeicher eine oder mehrere verschiedene Arten von Speichervorrichtungen, wie integrierte Flash-Schaltungen, C-RAM, PC-RAM oder PRAM, Programmable Metallization Cell RAM (PMC-RAM oder PMCm), OUM, RRAM, NAND-Speicher (z. B. einstufigen Zellen-Speicher (SLC-Speicher), mehrstufigen Zellen-Speicher (MLC-Speicher) (d. h. eine oder mehrere Stufen) oder eine beliebige Kombination davon), NOR-Speicher, EEPROM, FeRAM, MRAM, andere diskrete nichtflüchtige Speicherchips (NVM-Chips) oder eine beliebige Kombination davon aufweisen kann. In manchen Implementierungen kann sich der Speicher 106 außerhalb des Hosts 101 befinden, aber als ein Hauptspeicher für den Host 101 verwendet werden.
  • Die Prozessorschaltungsanordnung 102 verwendet auch den MMU 104, um über die Vorrichtungsschnittstelle 108 auf den SCM 120 der Vorrichtung 111 zuzugreifen. In manchen Implementierungen kann die MMU 104 auf eine Seitentabelle zugreifen, die virtuelle Adressen, die von der Prozessorschaltungsanordnung 102 verwendet werden, in physische Adressen (z. B. Byte-Adressen) übersetzt, die einen Ort angeben, an dem Daten für die virtuellen Adressen in dem Speicher 106 oder dem SCM 120 gespeichert oder daraus abgerufen werden sollen. In dieser Hinsicht kann die MMU 104 die Orte für byteadressierbare Daten verfolgen. Zusätzlich kann die MMU 104 eine Speichervorrichtungsschnittstelle (z. B. eine Speichervorrichtungsschnittstelle 10 in 2) zum Zugreifen auf byteadressierbare Daten ausführen.
  • Die Vorrichtungsschnittstelle 108 ermöglicht es dem Host 101, mit der Vorrichtung 111 über einen Bus oder eine Verbindung 110 zu kommunizieren. In manchen Implementierungen kann die Vorrichtungsschnittstelle 108 mit der Host-Schnittstelle 118 der Vorrichtung 111 über den Bus oder die Verbindung 110 unter Verwendung eines Standards, wie Peripheral Component Interconnect express (PCle), Ethernet oder Fibre Channel, kommunizieren. Wie unten detaillierter erörtert, kann der Bus oder die Verbindung 110 einen Bus oder eine Verbindung einschließen, die Befehle sowohl für byteadressierbare Daten mit einer Speichervorrichtungsschnittstelle als auch für blockadressierbare Daten mit einer Blockvorrichtungsschnittstelle ermöglichen kann. In anderen Ausführungsformen können der Host 101 und die Vorrichtung 111 über zwei oder mehr Busse oder Verbindungen kommunizieren, die jeweils eine Speichervorrichtungsschnittstelle, eine Blockvorrichtungsschnittstelle oder beides bereitstellen.
  • In dieser Hinsicht verwendet die Prozessorschaltungsanordnung 102 eine Vielzahl von logischen Schnittstellen zum Lesen von Daten von und Schreiben von Daten in den SCM 120 der Vorrichtung 111. Zum Schreiben von Daten und Lesen blockadressierbarer Daten verbindet sich der Host 101 mit der Vorrichtung 111 unter Verwendung einer Blockvorrichtung oder einer Speicherungsvorrichtungsschnittstelle, wie zum Beispiel Non-Volatile Memory express (NVMe), der zum Beispiel durch einen OS-Treiber implementiert werden kann, der durch die Prozessorschaltungsanordnung 102 ausgeführt wird. Zum Lesen byteadressierbarer Daten verbindet sich der Host 101 mit der Vorrichtung 111 unter Verwendung einer Speichervorrichtungsschnittstelle, wie einer PCIe-Basisadressregister-Schnittstelle (PCIe-BAR-Schnittstelle), Gen-Z, Open Coherent Accelerator Processor Interface (OpenCAPI) oder Cache Coherent Interconnect for Accelerators (CCIX), die von der Prozessorschaltungsanordnung 102 ausgeführt werden kann. In manchen Implementierungen kann die Speichervorrichtungsschnittstelle durch die MMU 104 oder durch eine andere Schaltungsanordnung der Prozessorschaltungsanordnung 102, wie einen Hardwarebeschleuniger, implementiert werden.
  • Wie in 1 gezeigt, schließt die Vorrichtung 111 die Host-Schnittstelle 118, eine Steuerschaltungsanordnung 112, einen Speicher 116 und den SCM 120 ein. Die Host-Schnittstelle 118 ermöglicht es der Vorrichtung 111, mit der Vorrichtungsschnittstelle 108 des Hosts 101 über den Bus oder die Verbindung 110 zu kommunizieren. Die Host-Schnittstelle 118 kann in manchen Implementierungen mit der Vorrichtungsschnittstelle 108 des Hosts 101 unter Verwendung eines Standards, wie PCle, Ethernet oder Fibre Channel, kommunizieren.
  • Zusätzlich verwendet die Steuerschaltungsanordnung 112 eine Vielzahl von logischen Schnittstellen zum Empfangen und Durchführen von Lese- und Schreibbefehlen von dem Host 101, um auf Daten in dem SCM 120 zuzugreifen. Zum Lesen und Schreiben blockadressierbarer Daten verbindet sich die Steuerschaltungsanordnung 112 mit dem Host 101 unter Verwendung einer Blockvorrichtungsschnittstelle, die zum Beispiel eine NVMe-Schnittstelle einschließen kann. Zum Lesen byteadressierbarer Daten verbindet sich die Steuerschaltungsanordnung 112 mit dem Host 101 unter Verwendung einer Speichervorrichtungsschnittstelle. Die Speichervorrichtungsschnittstelle kann zum Beispiel eine PCIe-BAR-Schnittstelle, Gen-Z, OpenCAPI oder CCIX einschließen.
  • Die Steuerschaltungsanordnung 112 kann eine Schaltungsanordnung, wie einen oder mehrere Prozessoren zum Ausführen von Anweisungen, einschließen und kann zum Beispiel eine CPU, eine GPU, eine Mikrosteuerung, einen DSP, eine ASIC, eine FPGA, festverdrahtete Logik, eine analoge Schaltungsanordnung und/oder eine Kombination davon einschließen. In manchen Implementierungen kann die Steuerschaltungsanordnung 112 eine SoC einschließen, sodass eine oder beide der Host-Schnittstelle 118 und des Speichers 116 in einem einzigen Chip mit der Steuerschaltungsanordnung 112 kombiniert werden können. Wie bei der oben erörterten Prozessorschaltungsanordnung 102 des Hosts 101 kann die Steuerschaltungsanordnung 112 der Vorrichtung 111 in manchen Implementierungen separate Komponenten, wie separate Hardwarebeschleuniger zum Implementieren einer Speichervorrichtungsschnittstelle und einer Blockvorrichtungsschnittstelle, einschließen.
  • Der Speicher 116 der Vorrichtung 111 kann zum Beispiel einen flüchtigen RAM, wie DRAM, einen nichtflüchtigen RAM oder einen anderen Festkörperspeicher einschließen. Die Steuerschaltungsanordnung 112 kann auf den Speicher 116 zugreifen, um Anweisungen auszuführen, wie eine Firmware der Vorrichtung 111, die Anweisungen zum Implementieren der Speichervorrichtungsschnittstelle und der Blockvorrichtungsschnittstelle einschließen kann. Zusätzlich kann die Steuerschaltungsanordnung 112 für Daten, die verwendet werden, während eine Firmware der Vorrichtung 111 ausgeführt wird, Daten, die in den SCM 120 geschrieben werden sollen, und/oder Daten, die aus dem SCM 120 gelesen wurden, auf den Speicher 116 zugreifen.
  • Der Fachmann wird erkennen, dass andere Implementierungen mehr oder weniger als die in 1 gezeigten Elemente einschließen können und dass die hierin erörterten Prozesse in anderen Umgebungen implementiert werden können. Zum Beispiel schließen andere Umgebungen möglicherweise keine MMU in dem Host 101 ein, können eine separate MMU oder einen separaten Hardwarebeschleuniger zum Implementieren einer Speichervorrichtungsschnittstelle einschließen oder können eine andere Anzahl von SCMs oder andere Arten von nichtflüchtiger Speicherung in der Vorrichtung 111 zusätzlich zu dem SCM 120 einschließen.
  • 2 ist ein Beispielblockdiagramm, das das Handhaben von Leseanforderungen und Schreibanforderungen durch den Host 101 und die Vorrichtung 111 gemäß einer oder mehreren Ausführungsformen zeigt. Wie in 2 gezeigt, empfängt eine Speichervorrichtungsschnittstelle 10 eine Leseanforderung A und eine Schreibanforderung B, während eine Blockvorrichtungsschnittstelle 12 eine Leseanforderung C und eine Schreibanforderung D empfängt. Die Lese- und Schreibanforderungen können von Anwendungen stammen, die von der Prozessorschaltungsanordnung 102 ausgeführt werden. In dem Beispiel von 2 ist die Speichervorrichtungsschnittstelle 10 durch die MMU 104 der Prozessorschaltungsanordnung 102 implementiert, und die Blockvorrichtungsschnittstelle 12 ist durch einen OS-Treiber des Hosts 101 implementiert, der durch die Prozessorschaltungsanordnung 102 ausgeführt wird.
  • Die Schreibanforderung B wird zunächst durch die Speichervorrichtungsschnittstelle 10 empfangen, wird jedoch von der Speichervorrichtungsschnittstelle 10 zu der Blockvorrichtungsschnittstelle 12 umgeleitet, da die Speichervorrichtungsschnittstelle 10 nur zum Handhaben von Leseanforderungen für byteadressierbare Daten verwendet wird anstatt von Schreibanforderungen. In manchen Implementierungen übergibt die MMU 104 die Steuerung der Schreibanforderung an ein OS des Hosts 101, da eine Speicherzuordnung zu dem SCM 120 als Nur-Lesen gekennzeichnet ist. Wie oben erwähnt, führt der SCM 120 allgemein Lesebefehle schneller durch als Schreibbefehle. In der vorliegenden Offenbarung kann der SCM 120 als ein lokaler Speicher oder ein partieller DRAM-Ersatz für den Host 101 für Leseanforderungen dienen, während Schreibanforderungen in dem Speicher 106 des Hosts 101 durchgeführt werden. Dies ermöglicht normalerweise einen kleiner bemessenen lokalen Speicher an dem Host 101, was den Stromverbrauch und die Kosten des Gesamtsystems, einschließlich des Hosts 101 und der Vorrichtung 111, reduzieren kann.
  • Wie hierin verwendet, beziehen sich Lese- und Schreibanforderungen auf Datenzugriffe auf Byte-Ebene (d. h. byteadressierbare Daten), wie Cache-Zeilen-Anforderungen, die von Anwendungen vorgenommen werden, die von der Prozessorschaltungsanordnung 102 des Hosts 101 ausgeführt werden. Andererseits beziehen sich Lese- und Schreibbefehle auf Befehle, die von dem Host 101 an die Vorrichtung 111 gesendet werden, um entweder auf einer Byte-Ebene im Falle von Lesebefehlen von der Speichervorrichtungsschnittstelle 10 oder auf einer Block-Ebene (d. h. Seite oder blockadressierbare Daten) von der Blockvorrichtungsschnittstelle 12 auf Daten zuzugreifen. Eine Seitengröße oder Blockgröße kann einer Dateneinheit in einem virtuellen Speicher entsprechen, der von einem OS des Hosts 101 verwaltet wird. Daten, auf die in der Vorrichtung 111 durch die Blockvorrichtungsschnittstellen 12 und 22 in 2 zugegriffen wird, werden in Einheiten dieser Seiten- oder Blockgröße gelesen und geschrieben. Manche Beispiele für eine Block- oder Seitengröße können 512 Bytes, 4 KB, 8 KB, 2 MB oder 4 MB einschließen. Dagegen ermöglichen byteadressierbare Daten, auf welche die Speichervorrichtungsschnittstellen 10 und 20 in 2 zugreifen, das Lesen von Daten in Einheiten eines Bytes, einschließlich des Lesens eines einzigen Bytes von Daten aus dem SCM 120 der Vorrichtung 111.
  • Wie in 2 gezeigt, wird die Leseanforderung A für byteadressierbare Daten A von der Speichervorrichtungsschnittstelle 10 als Lesebefehl A neu paketiert, der an die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 gesendet wird, um byteadressierbare Daten A aus dem SCM 120 abzurufen. Die Speichervorrichtungsschnittstelle 20 an der Vorrichtung 111 empfängt den Lesebefehl A und verwendet ein optionales Logisch-zu-physisch-Abbildungsmodul 24 zum Identifizieren einer physischen Adresse in dem SCM 120, der die byteadressierbaren Daten A speichert. In anderen Implementierungen kann das Logisch-zu-physisch-Abbildungsmodul 24 weggelassen werden, wie in Implementierungen, in denen der SCM 120 keine Adressdereferenzierung für Speichertechniken, wie Verschleißausgleich, verwendet, um das Schreiben gleichmäßiger über den SCM 120 zu verteilen. In solchen Implementierungen kann die Speichervorrichtungsschnittstelle 20, die von der Steuerschaltungsanordnung 112 in 1 ausgeführt werden kann, den Lesevorgang A in dem SCM 120 durchführen. Beim Durchführen des Lesevorgangs A werden die byteadressierbaren Daten A an die Speichervorrichtungsschnittstelle 20 zurückgegeben und können in einem Puffer, wie einem Puffer in dem Speicher 116 der Vorrichtung 111 in 1, temporär gespeichert werden, bevor sie an die Speichervorrichtungsschnittstelle 10 des Hosts 101 zurückgegeben werden, um den Lesebefehl A abzuschließen.
  • Die Speichervorrichtungsschnittstelle 20, die von der Steuerschaltungsanordnung 112 der Vorrichtung 111 ausgeführt wird, ist eingerichtet, um nur Lesebefehle für byteadressierbare Daten zu empfangen und durchzuführen. Die Durchführung von Schreibbefehlen, die durch die Speichervorrichtungsschnittstelle 20 empfangen werden, kann blockiert werden oder einen Fehler an der Vorrichtung 111 auslösen. Solche Fehler können an den Host 101 zurückgemeldet werden oder nicht.
  • In dem Beispiel von 2 wird die Schreibanforderung B durch die Speichervorrichtungsschnittstelle 10 des Hosts 101 empfangen. In manchen Fällen kann die Schreibanforderung B eine Anforderung zum Speichern byteadressierbarer Daten, wie Daten aus einem Cache-Entleerungsbefehl zum Entleeren einer oder mehrerer Cache-Zeilen aus einem Cache oder Caches der Prozessorschaltungsanordnung 102 des Hosts 101 (z. B. aus einem L1-/L2-/L3-Cache), einschließen. In anderen Fällen kann die Schreibanforderung B eine Anforderung zum Speichern von block- oder seitenadressierbaren Daten, wie Daten von einer Anwendung, die von der Prozessorschaltungsanordnung 102 ausgeführt wird, einschließen. Die Speichervorrichtungsschnittstelle 10 identifiziert die Schreibanforderung B als Schreibanforderung und leitet als Reaktion die Schreibanforderung B an die Sperrvorrichtungsschnittstelle 12 um. In manchen Implementierungen können Schreibanforderungen, die durch die Speichervorrichtungsschnittstelle 10 empfangen werden, einen Fehlerbehandler auslösen, der es dem OS des Hosts 101 über die Blockvorrichtungsschnittstelle 12 ermöglicht, die Schreibanforderung zu behandeln.
  • In dem Fall, in dem die Schreibanforderung B byteadressierbare Daten speichern soll, verwendet die Blockvorrichtungsschnittstelle 12 den Puffer 107, um einen oder mehrere Abschnitte des Datenblocks, einschließlich der byteadressierbaren Daten, die in den SCM 120 geschrieben werden sollen, zu aggregieren oder zu modifizieren. Die Blockvorrichtungsschnittstelle 12 sendet einen Lesebefehl für den Datenblock, einschließlich der byteadressierbaren Daten, die in die Vorrichtung 111 geschrieben werden sollen. Die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 empfängt den Lesebefehl für den Block und führt einen Lesevorgang auf dem SCM 120 durch und gibt den Leseblock, einschließlich der byteadressierbaren Daten, an die Blockvorrichtungsschnittstelle 12 des Hosts 101 zurück. Die Blockvorrichtungsschnittstelle 12 puffert den gelesenen Datenblock in dem Puffer 107 und modifiziert einen oder mehrere byteadressierbare Abschnitte des gepufferten Blocks für die Schreibanforderung B. In manchen Fällen können auch zusätzliche Schreibanforderungen für byteadressierbare Daten, die in dem gepufferten Block eingeschlossen sind, durchgeführt werden, während der Block in dem Puffer 107 gespeichert wird.
  • Die Blockvorrichtung 12 sendet dann einen Schreibbefehl für den modifizierten Block, der die byteadressierbaren Daten einschließt, um die Daten für die Schreibanforderung aus dem Puffer 107 in den SCM 120 zu entleeren. In manchen Fällen kann der Schreibbefehl zusätzliche Blöcke einschließen, die modifiziert oder geschrieben wurden, wie Daten für die Schreibanforderung D. Die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 empfängt den Schreibbefehl und verwendet das optionale Logisch-zu-physisch-Abbildungsmodul 24, um eine oder mehrere physische Adressen in dem SCM 120 zu identifizieren, der einen oder mehrere Blöcke speichert, die Daten B und D für Schreibanforderungen B und D einschließen. Wie oben erwähnt, kann das Logisch-zu-physisch-Abbildungsmodul 24 in anderen Implementierungen weggelassen werden, wie wenn der SCM 120 keine Adressdereferenzierung verwendet. In solchen Implementierungen kann die Blockvorrichtungsschnittstelle 22, die von der Steuerschaltungsanordnung 112 in 1 ausgeführt werden kann, eine oder mehrere Adressen in dem SCM 120 zum Durchführen der Schreibvorgänge B und D identifizieren. Beim Durchführen der Schreibvorgänge B und D speichert die Blockvorrichtungsschnittstelle 22 einen oder mehrere Datenblöcke, einschließlich der Daten B und Daten D in dem SCM 120. Zusätzlich kann die Blockvorrichtungsschnittstelle 22 Byte-Adressen, die von der Speichervorrichtungsschnittstelle 20 für Daten verwendet werden, die in dem einen oder den mehreren Datenblöcken eingeschlossen sind, mit den Orten aktualisieren, an denen die Daten in den SCM 120 geschrieben wurden.
  • Eine oder mehrere Schreibabschlussangaben werden nach Abschließen der Schreibvorgänge an die Blockvorrichtungsschnittstelle 22 zurückgegeben. Die Blockvorrichtungsschnittstelle 22 kann eine Schreibabschlussangabe an die Blockvorrichtungsschnittstelle 12 des Hosts 101 weiterleiten oder senden, um anzugeben, dass der Schreibbefehl oder die Schreibbefehle abgeschlossen wurden, und kann auch die neuen byteadressierbaren physischen Adressen für Daten, die in den Schreibvorgängen gespeichert sind, zusätzlich zu blockadressierbaren Orten für die Daten bereitstellen. In anderen Implementierungen kann die Speichervorrichtungsschnittstelle 20 stattdessen die aktualisierten byteadressierbaren physischen Adressen an die Speichervorrichtungsschnittstelle 10 des Hosts 101 bereitstellen.
  • Die Leseanforderung C wird ebenfalls durch die Blockvorrichtungsschnittstelle 12 des Hosts 101 empfangen. Die für die Leseanforderung C abzurufenden Daten sind seiten- oder blockweise adressiert und es handelt sich nicht um eine Anforderung byteadressierbarer Daten, wie bei der oben erörterten Leseanforderung A. Die Blockvorrichtungsschnittstelle 12 paketiert die Anforderung als Lesebefehl C neu und sendet den Lesebefehl C an die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111. Die Blockvorrichtungsschnittstelle 22 führt ihrerseits den Lesebefehl C durch, indem sie das optionale Logisch-zu-physisch-Abbildungsmodul 24 verwendet, das eine physische Adresse zum Lesen der blockadressierbaren Daten C aus dem SCM 120 bereitstellt. Die blockadressierbaren Daten C werden aus dem SCM 120 gelesen und an die Blockvorrichtungsschnittstelle 22 zurückgegeben, welche die Daten an die Blockvorrichtungsschnittstelle 12 des Hosts 101 weiterleitet, um den Befehl abzuschließen. In manchen Fällen können Daten C in einem Speicher der Vorrichtung 111, wie dem Speicher 116, gepuffert werden, bevor die Daten an den Host 101 gesendet werden.
  • Wie der Fachmann erkennt, können andere Implementierungen andere Komponenten oder Module einschließen als die, die in dem Beispiel von 2 gezeigt sind. Zum Beispiel schließen andere Implementierungen möglicherweise kein Logisch-zu-physisch-Abbildungsmodul 24 ein, sodass die Speichervorrichtungsschnittstelle 20 und die Blockvorrichtungsschnittstelle 22 auf den SCM 120 zugreifen, ohne ein Logisch-zu-physisch-Abbildungsmodul zu verwenden.
  • Beispiele für Seitentabellen
  • 3 ist ein Beispiel einer Seitentabelle 16 gemäß einer oder mehreren Ausführungsformen. Die Seitentabelle 16 kann zum Beispiel durch die Prozessorschaltungsanordnung 102 des Hosts 101 erstellt werden, welche die Speichervorrichtungsschnittstelle 10 in 2 ausführt. In manchen Implementierungen kann die Prozessorschaltungsanordnung 102 mehrere Seitentabellen verwalten, wie diejenigen zum Abbilden virtueller Adressen für byteadressierbare Daten und auch zum Abbilden virtueller Adressen für blockadressierbare Daten. Zusätzlich versteht der Fachmann, dass die Seitentabelle 16 andere Informationen als in dem Beispiel von 3 gezeigt einschließen kann, wie zum Beispiel Statistikinformationen. Die Seitentabelle 16 kann zum Beispiel in dem Speicher 106 des Hosts 101 oder in einem Speicher der MMU 104 oder einem anderen Speicher der Prozessorschaltungsanordnung 102 gespeichert sein.
  • Wie in 3 gezeigt, werden virtuelle Adressen verschiedenen Daten zugewiesen, auf die durch die Prozessorschaltungsanordnung 102 zugegriffen wird, und die Seitentabelle 16 gibt einen Zugriffstyp für die Daten und eine physische Adresse, an der die Daten entweder in dem Speicher 106 oder dem SCM 120 der Vorrichtung 111 gespeichert sind, an. Zum Beispiel werden byteadressierbare Daten für die virtuellen Adressen A und C in der Seitentabelle 16 in dem SCM 120 an den physischen Adressen SCM 1 bzw. SCM 2 gespeichert. Die Daten für die virtuellen Adressen A und C sind auch in der Seitentabelle 16 als Nur-Lese-Zugriff aufweisend angegeben. In dieser Hinsicht kann die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 in manchen Implementierungen ein Nur-Lese-Basisadressregister (Nur-Lese-BAR) der Speichervorrichtungsschnittstelle 10 des Hosts 101 verfügbar machen. Der Zugriff auf die in der Seitentabelle 16 dargestellten byteadressierbaren Daten erfolgt zunächst schreibgeschützt und bleibt solange schreibgeschützt, bis die Daten geschrieben oder anderweitig modifiziert werden.
  • In manchen Implementierungen kann die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 einen Abschnitt des BAR als einen lesbaren und beschreibbaren Adressbereich verfügbar machen, der auf einen Speicher der Vorrichtung 111, wie den Speicher 116 in 1, abgebildet wird. In solchen Implementierungen kann der Abschnitt des BAR, der auf den SCM 120 abgebildet wird, schreibgeschützt bleiben, während der dem Host 101 verfügbar gemachte Abschnitt des BAR, der auf den Speicher 116 abgebildet wird, byteadressierbare Schreib- und Lesevorgänge über die Speichervorrichtungsschnittstelle 10 des Hosts 101 ermöglichen kann. Dieser Lese-/Schreibabschnitt des BAR, der auf den Speicher 116 abgebildet wird, kann zum Beispiel einen batteriegestützten oder stromausfallsicheren flüchtigen DRAM oder einen Abschnitt davon einschließen, um eine nichtflüchtige Speicherung oder einen nichtflüchtigen Speicher effektiv bereitzustellen. Zum Beispiel kann der Lese-/Schreibabschnitt des BAR, der auf den Speicher 116 abgebildet wird, vor Datenverlust aufgrund einer Stromunterbrechung mit einem Kondensator oder einer Batterie geschützt werden, die es der Steuerschaltungsanordnung 112 ermöglichen kann, Daten von dem BAR-abgebildeten Abschnitt des Speichers 116 nach einem Stromverlust an der Vorrichtung 111 zu dem SCM 120 zu übertragen.
  • In dem Beispiel von 3 werden nach einem Empfangen einer Schreibanforderung für in der Seitentabelle 16 dargestellte Daten, wie für die virtuellen Adressen B und D, die Daten für die Schreibanforderung in dem Puffer 107 des Speichers 106 gespeichert. Dies ist in dem Beispiel von 3 angegeben, wo der zulässige Zugriff für virtuelle Adressen B und D Lesen/Schreiben ist und die diese Daten speichernden physischen Adressen als Sp. 1 und Sp. 2 in dem Speicher 106 angegeben sind. Die Speichervorrichtungsschnittstelle 10 in 2 kann die Seitentabelle 16 aktualisieren, nachdem byteadressierbare Daten, die in den Seiten oder Blöcken eingeschlossen sind, die den virtuellen Adressen B und D entsprechen, in dem Puffer 107 des Speichers 106 neu geschrieben oder modifiziert wurden. Falls erforderlich, können byteadressierbare Daten, die in den gepufferten Seiten oder Blöcken eingeschlossen sind, durch dieselbe Anwendung, die eine ursprüngliche Schreibanforderung für die Daten ausgegeben hat, oder durch eine andere Anwendung in dem Puffer 107 modifiziert oder aus dem Puffer 107 gelesen werden. Wie unten unter Bezugnahme auf 4 detaillierter erörtert, bleibt der Status solcher Daten Lesen/Schreiben, bis die Daten aus dem Puffer 107 in den SCM 120 entleert werden.
  • 4 ist ein Statusdiagramm für einen Seitentabelleneintrag in der Seitentabelle 16 von 3, wie einen Eintrag für eine der virtuellen Adressen A, B, C oder D gemäß einer oder mehreren Ausführungsformen. Wie in 4 gezeigt, beginnt der Eintrag in einem Anfangsstatus mit Nur-Lese-Zugriff für eine physische Adresse in dem SCM 120. Die physische Adresse kann einer Adresse eines BAR entsprechen, das von der Vorrichtung 111 an die Speichervorrichtungsschnittstelle 10 des Hosts 101 bereitgestellt wird. Dies ermöglicht es der Speichervorrichtungsschnittstelle 10, direkt auf die Adresse in dem SCM 120 zuzugreifen, um Daten zu lesen, ohne ein OS des Hosts 101 zu verwenden.
  • Der Eintrag geht in den zweiten Status über, nachdem eine Schreibanforderung für die durch den Eintrag dargestellten Daten empfangen wurde. Wie oben erörtert, kann die Schreibanforderung von der Speichervorrichtungsschnittstelle 10 und/oder der Blockvorrichtungsschnittstelle 12 als Softwareereignis gehandhabt werden. Dies ermöglicht normalerweise mehr Flexibilität bei der Gestaltung und Implementierung der Host-seitigen Pufferung als Hardwarelösungen, die ausschließlich auf der MMU 104 beruhen können.
  • Im zweiten Status wurde ein Block oder eine Seite, der/die die Daten für die Schreibanforderung einschließt, durch die Blockvorrichtungsschnittstelle 12 des Hosts 101 abgerufen und in dem Puffer 107 des Speichers 106 in dem Host 101 gespeichert. Die vorherige oder veraltete Version des Blocks kann in dem SCM 120 bleiben, aber der modifizierte Block oder die modifizierte Seite in dem Puffer 107 ist die aktuelle oder gültige Version der Daten für die virtuelle Adresse. Die Speichervorrichtungsschnittstelle 10 oder die Blockvorrichtungsschnittstelle 12 aktualisiert auch die Seitentabelle 16, um den Zugriff auf Lesen/Schreiben zu ändern und um die virtuelle Adresse für den Eintrag auf die physische Adresse abzubilden, wo die Daten in den Puffer 107 des Speichers 106 geschrieben wurden.
  • In manchen Implementierungen kann die Speichervorrichtungsschnittstelle 10 oder die Blockvorrichtungsschnittstelle 12 identifizieren, dass keine vorherigen Schreibvorgänge in den Block oder die Seite stattgefunden haben oder dass die Schreibanforderung der erste Schreibvorgang in den Block oder die Seite ist. In solchen Implementierungen können die Daten, die für den Block oder die Seite geschrieben werden sollen, in dem Puffer 107 gespeichert werden, ohne zuerst den Block oder die Seite von der Vorrichtung 111 abzurufen. Die Schreibanforderung wird dann an dem gepufferten Block oder der gepufferten Seite durchgeführt.
  • Während sich der Eintrag in dem zweiten Status befindet, kann der Block oder die Seite für den in dem Speicher 106 gespeicherten Eintrag durch dieselbe Anwendung, welche die Schreibanforderung ausgegeben hat, oder durch eine andere Anwendung modifiziert oder überschrieben werden. Daten, die dem Eintrag entsprechen, wie byteadressierbare Daten innerhalb des gepufferten Blocks oder der gepufferten Seite, können auch von der physischen Adresse in dem Speicher 106 gelesen werden, während sich der Eintrag in dem zweiten Status befindet. Die Speichervorrichtungsschnittstelle 10 kann sich als Reaktion auf Lese- und Schreibanforderungen auf den Eintrag in der Seitentabelle 16 beziehen, um die byteadressierbaren Daten zu modifizieren oder zu lesen, die der virtuellen Adresse entsprechen, die in dem Speicher 106 gespeichert ist. Das temporäre Speichern der Daten in dem Speicher 106 kann normalerweise einen schnelleren Schreibvorgang ermöglichen, als dies durch Schreiben der Daten in den SCM 120 möglich wäre. In dieser Hinsicht kann das Puffern der modifizierten byteadressierbaren Daten in dem Speicher 106 vorteilhaft sein, wenn die gepufferten Daten bald wiederverwendet werden, da sie auch schnell aus dem Speicher 106 gelesen werden können. Daten, die in dem Speicher 106 gepuffert sind, können auch schneller gelesen werden als Daten, die aus dem SCM 120 gelesen werden. Dies kann besonders vorteilhaft für Cache-Zeilen sein, die oft bald nach einem anfänglichen Schreiben gelesen oder modifiziert werden.
  • Zusätzlich ist die Aggregation oder Modifikation von Daten in dem Speicher 106 und das Verwenden einer separaten Blockvorrichtungsschnittstelle zum Entleeren eines aggregierten oder modifizierten Blocks von Daten in einem Schreibvorgang effizienter als das Vornehmen zahlreicher kleinerer Schreibvorgänge in dem SCM 120, dessen Schreiblatenz größer als seine Leselatenz ist. Die vorstehende Verwendung sowohl einer Blockvorrichtungsschnittstelle als auch einer Speichervorrichtungsschnittstelle mit der Seitentabelle 16 und das Puffern geschriebener Daten in dem Puffer 107 kann auch eine effizientere Anordnung bereitstellen als das Umschalten des Zugriffs eines BAR des SCM 120 von Nur-Lesen auf Lesen/Schreiben oder das Umschalten oder temporäre Modifizieren einer einzelnen Schnittstelle des SCM 120, um byteadressierte und blockadressierte Daten aufzunehmen. Ein Verschieben von Schreibvorgängen in den SCM 120 kann die Leistung des Systems, einschließlich des Hosts 101 und der Vorrichtung 111, verbessern, indem den Schreibvorgängen ermöglicht wird, schneller in dem Speicher 106 des Hosts 101 zu erfolgen, und indem die aggregierten oder modifizierten Blöcke zu einem späteren Zeitpunkt in den SCM 120 geschrieben werden, wenn die Schreiblatenz in den SCM 120 weniger kritisch für von der Prozessorschaltungsanordnung 102 ausgeführte Prozesse oder Threads ist, die möglicherweise warten müssen, bis die Daten geschrieben wurden, bevor die Ausführung fortgesetzt wird.
  • Nachdem die Daten für den Eintrag durch die Blockvorrichtungsschnittstelle 12 modifiziert oder in einen oder mehrere Blöcke aggregiert wurden, werden die Daten für den Eintrag durch die Blockvorrichtungsschnittstelle 12 über die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 aus dem Puffer 107 in den SCM 120 entleert oder ausgelagert. Die Blockvorrichtungsschnittstelle 12 des Hosts 101 aktualisiert den Eintrag, sodass der Zugriff auf die virtuelle Adresse nicht verfügbar oder gesperrt ist, während die Daten in den SCM 120 entleert werden. In manchen Implementierungen kann das Angeben in der Seitentabelle, dass die virtuelle Adresse nicht verfügbar ist, ein Entfernen oder Löschen eines Eintrags für die virtuelle Adresse oder ein Kennzeichnen des nicht verfügbaren oder veralteten Eintrags einschließen. Dies kann die Konsistenz der Daten sicherstellen, sodass verschiedene Anwendungen Daten in dem Speicher 106 nicht modifizieren, bevor der Zugriff auf die entleerten Daten in dem SCM 120 auf Nur-Lesen zurückgesetzt wird, was zum Lesen einer alten oder veralteten Version der Daten führen könnte. Die Verwendung des Speichers 106 zum temporären Puffern von Schreibanforderungen stellt eine asynchrone Speicherung von Daten bereit, wobei das Schreiben der Daten in den SCM 120 verzögert wird, um die Systemleistung in Bezug auf Eingabe-/Ausgabevorgänge pro Sekunde (IOPS) zu verbessern, während die vorstehende Verwendung von Zugriffsberechtigungen in der Seitentabelle 16 ermöglicht, dass die Daten konsistent bleiben.
  • Wie in 4 gezeigt, kehrt der Eintrag in den ersten Status des Nur-Lese-Zugriffs in dem SCM 120 zurück, nachdem der Entleerungs- oder Auslagerungsvorgang abgeschlossen ist. In manchen Implementierungen gibt die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 eine Befehlsabschlussangabe an die Blockvorrichtungsschnittstelle 12 des Hosts 101 zurück, um den Abschluss des Entleerungsbefehls anzugeben. Wie oben unter Bezugnahme auf 2 erörtert, kann die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 mit den byteadressierbaren Adressen für in den SCM 120 geschriebene Daten für einen Schreibvorgang aktualisieren. Die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 kann dann die Speichervorrichtungsschnittstelle 10 des Hosts 101 mit den neuen byteadressierbaren Adressen für die entleerten Daten aktualisieren, sodass die Speichervorrichtungsschnittstelle 10 die Einträge in der Seitentabelle mit den neuen Adressen für die entleerten Daten in dem SCM 120 aktualisieren kann. In anderen Implementierungen kann die Blockvorrichtungsschnittstelle 12 des Hosts 101 aktualisierte byteadressierbare Adressen von der Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 empfangen, welche die Blockvorrichtungsschnittstelle 12 zum Aktualisieren der Seitentabelle verwenden kann.
  • Beispielprozesse
  • 5 ist ein Flussdiagramm für einen Seitentabellenerstellungsprozess gemäß einer oder mehreren Ausführungsformen. Der Prozess von 5 kann zum Beispiel durch die Prozessorschaltungsanordnung 102 des Hosts 101, der die Speichervorrichtungsschnittstelle 10 ausführt, durchgeführt werden.
  • In Block 502 greift die Speichervorrichtungsschnittstelle 10 auf das BAR des SCM 120 zu. In manchen Implementierungen kann die Steuerschaltungsanordnung 112 der Vorrichtung 111, welche die Speichervorrichtungsschnittstelle 20 ausführt, der Speichervorrichtungsschnittstelle 10 des Hosts 101 ein Nur-Lese-BAR des SCM 120 verfügbar machen. Dies ermöglicht, dass die Speichervorrichtungsschnittstelle 10 Größen- und Datentypinformationen für den SCM 120 aufweist, um virtuelle Adressen des Hosts 101 auf physische Adressen des SCM 120 abzubilden, und einen direkten Speicherzugriff des SCM 120 durch den Host 101 für Lesevorgänge ermöglicht. Zusätzlich kann die Vorrichtung 111 in manchen Implementierungen auch einen Lese-/Schreibabschnitt des BAR verfügbar machen, der auf den Speicher 116 abgebildet wird.
  • In Block 504 erstellt die Speichervorrichtungsschnittstelle 10 eine Seitentabelle, die eine Vielzahl von Einträgen einschließt, die Speicherorten in dem SCM 120 entsprechen. Genauer entsprechen die Einträge in der Seitentabelle dem verfügbar gemachten BAR der Vorrichtung 111. Die Seitentabelle kann Einträge für verschiedene virtuelle Adressen und die abgebildeten physischen Adressen in dem SCM 120 einschließen. In dieser Hinsicht kann die erstellte Seitentabelle Einträge für virtuelle Adressen oder Seiten einschließen, die es der Speichervorrichtung 10 ermöglichen, einen physischen Ort in dem SCM 120 der Vorrichtung 111 für byteadressierbare Daten zu bestimmen, die kleiner als eine Seiten- oder Blockgröße sind. Die erstellte Seitentabelle kann auch eine Angabe des zulässigen Zugriffs für die physische Adresse einschließen, wie in dem Fall der Seitentabelle 16, die oben unter Bezugnahme auf 3 erörtert wurde.
  • In Block 506 setzt die Speichervorrichtungsschnittstelle 10 die Vielzahl von Einträgen in der Seitentabelle auf Nur-Lesen. Wie oben erörtert, können Daten viel schneller aus dem SCM 120 gelesen werden, als Daten derselben Größe in den SCM 120 geschrieben werden können. Der byteadressierbare Zugriff auf den SCM 120 ist daher auf Nur-Lese-Zugriff beschränkt. Wie unten unter Bezugnahme auf 6 detaillierter erörtert, werden Schreibvorgänge in den SCM 120 von der Blockvorrichtungsschnittstelle 12 des Hosts 101 gehandhabt, sodass Daten effizienter in den SCM 120 in Einheiten einer Blockgröße (z. B. 512 Bytes, 4 KB, 8 KB, 2 MB oder 4 MB) geschrieben werden, anstatt zahlreicherer Schreibvorgänge, die kleiner als eine Blockgröße sind, wie für ein einzelnes Byte von Daten. Zusätzlich kann das Verschieben von Schreibvorgängen in den SCM 120 die Leistung des Systems, einschließlich des Hosts 101 und der Vorrichtung 111, verbessern, indem den Schreibvorgängen ermöglicht wird, schneller in dem Speicher 106 des Hosts 101 zu erfolgen, und die aggregierten oder modifizierten Daten zu einem späteren Zeitpunkt in den SCM 120 geschrieben werden, wenn die Auswirkung der Schreiblatenz des SCM 120 die Ausführung eines Prozesses oder Threads nicht verzögert.
  • 6 ist ein Flussdiagramm für einen Schreibanforderungsprozess gemäß einer oder mehreren Ausführungsformen. Der Prozess von 6 kann zum Beispiel durch die Prozessorschaltungsanordnung 102 des Hosts 101 durchgeführt werden, welche die Speichervorrichtungsschnittstelle 10 und die Blockvorrichtungsschnittstelle 12 ausführt.
  • In Block 602 empfängt die Speichervorrichtungsschnittstelle 10 oder die Blockvorrichtungsschnittstelle 12 eine Schreibanforderung zum Schreiben von Daten, die einem Eintrag in einer Seitentabelle (z. B. der Seitentabelle 16 in 3) entsprechen. Die Schreibanforderung kann zum Beispiel von einer Anwendung stammen, die von der Prozessorschaltungsanordnung 102 ausgeführt wird. Die Schreibanforderung ist für Daten kleiner als eine Seiten- oder Blockgröße und daher byteadressierbar. In solchen Fällen kann die Schreibanforderung aus dem Entleeren oder Auslagern eines Cache der Prozessorschaltungsanordnung 102 resultieren. Zum Beispiel können in einem L1-, L2- oder L3-Cache der Prozessorschaltungsanordnung 102 eine oder mehrere Cache-Zeilen entleert oder ausgelagert werden.
  • In Block 604 werden Daten für die Schreibanforderung unter Verwendung der Blockvorrichtungsschnittstelle 12 in den Puffer 107 des Speichers 106 der Vorrichtung 111 geschrieben. Wie oben erörtert, kann die Schreibanforderung zum Speichern byteadressierbarer Daten durch die Blockvorrichtungsschnittstelle 12 des Hosts 101 nach Umleitung von der Speichervorrichtungsschnittstelle 10 oder von einem anderen Modul, wie von einem Abschnitt eines OS des Hosts 101, empfangen werden. Zum Beispiel kann die Schreibanforderung in Fällen, in denen die Schreibanforderung anfänglich durch die Speichervorrichtungsschnittstelle 10 empfangen wird, einen Fehlerbehandler auslösen, der die Schreibanforderung zu der Blockvorrichtungsschnittstelle 12 umleitet. Wie oben unter Bezugnahme auf 2 erörtert, kann die Blockvorrichtungsschnittstelle 12 auch Schreibanforderungen für blockadressierbare Daten empfangen.
  • Die byteadressierbaren Daten, die in den Puffer 107 für die Schreibanforderung geschrieben werden, die in Block 602 empfangen wird, können in Einheiten einer Seiten- oder Blockgröße aggregiert werden, oder eine aktuelle Version des Blocks oder der Seite, welcher/welche die byteadressierbaren Daten einschließt, kann aus der Vorrichtung 111 gelesen und in dem Puffer 107 zum Durchführen der Schreibanforderung gespeichert werden. Wie oben erwähnt, dauern Schreibvorgänge in dem SCM 120 viel länger als Lesevorgänge für eine gegebene Datenmenge. Das Durchführen von Schreibanforderungen in dem Puffer 107 kann dazu führen, dass weniger Gesamtschreibvorgänge in den SCM 120 durchgeführt werden und dass die kleineren Zwischenschreibvorgänge schneller in dem Speicher 106 abgeschlossen werden, um die Effizienz und Leistung des Hosts 101 und der Vorrichtung 111 zu verbessern. Schreibanforderungen für Daten, die bereits in Einheiten einer Block- oder Seitengröße sind, können in manchen Implementierungen auch in dem Speicher 106 gepuffert werden, um die Leistung von Schreibvorgängen durch Reduzieren der Latenz des Durchführens der Schreibvorgänge zu verbessern. Wie oben erwähnt, kann es der schnellere Abschluss von Schreibanforderungen Prozessen und Threads ermöglichen, die Ausführung fortzusetzen, anstatt darauf zu warten, dass Daten in den SCM 120 geschrieben werden. In anderen Ausführungsformen können stattdessen blockadressierbare Daten in den SCM 120 geschrieben werden, ohne das Schreiben solcher Daten in den SCM 120 unter Verwendung des Speichers 106 zu verschieben. Eine solche Anordnung kann in Fällen bevorzugt werden, in denen die Größe des Speichers 106 begrenzt ist.
  • In Block 606 ändert die Blockvorrichtungsschnittstelle 12 den Eintrag für die virtuelle Adresse in der Seitentabelle von Nur-Lese-Zugriff auf sowohl Lese- als auch Schreibzugriff. Die Blockvorrichtungsschnittstelle 12 ändert auch den Eintrag für die erste virtuelle Adresse, um auf einen Ort oder eine physische Adresse in dem Speicher 106 zu zeigen, wo Daten für die erste virtuelle Adresse geschrieben wurden. Wie oben unter Bezugnahme auf das Seitentabelleneintrags-statusdiagramm von 4 erörtert, können die in dem Speicher 106 gepufferten Daten in den Speicher 106 geschrieben und daraus gelesen werden, bis sie in seitengroßen oder blockgroßen Einheiten aus dem Speicher 106 in den SCM 120 entleert oder ausgelagert werden. Die Modifikation und das Entleeren von Daten aus dem Speicher 106 wird unten unter Bezugnahme auf den Prozess von 8 detaillierter erörtert.
  • 7 ist ein Flussdiagramm für einen Leseanforderungsprozess für byteadressierbare Daten gemäß einer oder mehreren Ausführungsformen. Der Prozess von 7 kann zum Beispiel durch die Prozessorschaltungsanordnung 102 des Hosts 101, welche die Speichervorrichtungsschnittstelle 10 ausführt, durchgeführt werden.
  • In Block 702 wird eine Leseanforderung durch die Speichervorrichtungsschnittstelle 10 an dem Host 101 empfangen, um byteadressierbare Daten zu lesen, die einem Eintrag in einer Seitentabelle (z. B. der Seitentabelle 16 in 3) entsprechen. Die Leseanforderung kann zum Beispiel von einer Anwendung stammen, die von der Prozessorschaltungsanordnung 102 ausgeführt wird. Die Leseanforderung kann für Daten kleiner als eine Seiten- oder Blockgröße sein und ist daher byteadressierbar. In manchen Fällen kann die Leseanforderung aus einem Prozess oder Thread resultieren, der von der Prozessorschaltungsanordnung 102 ausgeführt wird, um Daten in einen Cache der Prozessorschaltungsanordnung 102 zu laden.
  • In Block 704 verwendet die Speichervorrichtungsschnittstelle 10 eine Seitentabelle, um zu bestimmen, ob sich die angeforderten Daten in dem Speicher 106 befinden. Wenn ja, liest die Speichervorrichtungsschnittstelle 10 die Daten in Block 706 aus dem Speicher 106. Wird dagegen bestimmt, dass sich die angeforderten byteadressierbaren Daten in dem SCM 120 befinden, sendet die Speichervorrichtungsschnittstelle 10 in Block 708 eine Leseanforderung an die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111, um direkt auf die angeforderten Daten von dem SCM 120 zuzugreifen. Im Gegensatz zu dem Datenzugriff, der von der Blockvorrichtungsschnittstelle 12 des Hosts 101 durchgeführt wird, erfordern die Leseanforderungen, die von der Speichervorrichtungsschnittstelle 10 des Hosts 101 durchgeführt werden, möglicherweise keine Verwendung des OS des Hosts 101.
  • Wie oben erörtert, kann es durch Zulassen eines Nur-Lese-Zugriffs auf ein BAR des SCM 120 in der Regel möglich sein, den relativ schnellen Lesezugriff des SCM 120 für byteadressierbare Daten vorteilhaft zu nutzen, ohne dass der größere Leistungsnachteil des Schreibens von byteadressierbaren Daten in den SCM 120 auftritt. Dies kann einen kleineren Hauptspeicher, der von dem Host 101 verwendet wird, (z. B. Speicher 106) oder Speicherungsplatzeinsparungen für den Hauptspeicher des Hosts, der innerhalb oder außerhalb des Hosts 101 sein kann, ermöglichen. Wie oben erwähnt, kann der Speicher 106 in manchen Implementierungen einen DRAM oder SRAM einschließen, der einen schnelleren Lese- und Schreibzugriff als der SCM 120 bereitstellen kann, aber mehr kostet und mehr Leistung für eine gegebene Datenspeicherungsmenge verbraucht.
  • 8 ist ein Flussdiagramm für einen Entleerungsprozess von einem lokalen Speicher zu einem SCM gemäß einer oder mehreren Ausführungsformen. Der Prozess von 8 kann zum Beispiel durch die Prozessorschaltungsanordnung 102 durchgeführt werden, welche die Blockvorrichtungsschnittstelle 12 ausführt.
  • In Block 802 empfängt die Blockvorrichtungsschnittstelle 12 eine Schreibanforderung, byteadressierbare Daten zu schreiben, die einem Eintrag in einer Seitentabelle entsprechen. Die zu schreibenden byteadressierbaren Daten können Daten innerhalb einer Seite oder eines Blocks einschließen, die/der durch den Seitentabelleneintrag dargestellt wird. Solche Schreibdaten können zum Beispiel von Prozessen oder Threads stammen, die von der Prozessorschaltungsanordnung 102 ausgeführt werden, die geänderte Cache-Zeilen aus einem Cache der Prozessorschaltungsanordnung 102 entleeren oder auslagern können.
  • In Block 804 liest die Blockvorrichtungsschnittstelle 12 einen Datenblock aus dem SCM 120 für den Block oder die Seite von Daten, die durch den Seitentabelleneintrag dargestellt werden. Der Block oder die Seite wird in dem Puffer 107 des Speichers 106 gespeichert. Zusätzlich aktualisiert die Blockvorrichtungsschnittstelle 12 die Seitentabelle, um anzugeben, dass ein Eintrag oder eine virtuelle Adresse für den gepufferten Block oder die gepufferte Seite Lese-/Schreibzugriff aufweist und dass sich die Daten für den Eintrag an einer physischen Adresse in dem Speicher 106 befinden.
  • In Block 806 modifiziert die Blockvorrichtungsschnittstelle 12 die byteadressierbaren Daten für die Schreibanforderung, indem sie die Daten in den Block oder die Seite schreibt, der/die in dem Puffer 107 gepuffert ist. Wie oben erwähnt, können zusätzliche Schreibanforderungen und Leseanforderungen auch an denselben byteadressierbaren Daten oder an anderen byteadressierbaren Abschnitten des gepufferten Blocks oder der gepufferten Seite durchgeführt werden, während der Block oder die Seite in dem Speicher 106 gespeichert wird.
  • In Block 808 gibt die Blockvorrichtungsschnittstelle 12 in der Seitentabelle an, dass die Daten für den gepufferten Block oder die gepufferte Seite zum Lesen und Schreiben von Daten in Vorbereitung auf das Entleeren des modifizierten Blocks in den SCM 120 nicht verfügbar sind. Wie oben in Bezug auf das Statusdiagramm von 4 angemerkt, kann das Angeben, dass Daten für den Eintrag oder die virtuelle Adresse in der Seitentabelle nicht verfügbar sind, dazu beitragen, die Konsistenz der Daten sicherzustellen, indem die Daten nicht gelesen oder geschrieben werden dürfen, während sie in den SCM 120 entleert werden.
  • In Block 810 sendet die Blockvorrichtungsschnittstelle 12 einen Schreibbefehl an die Vorrichtung 111, um den modifizierten Datenblock aus dem Puffer 107 in den SCM 120 zu entleeren oder auszulagern. In manchen Implementierungen kann die Blockvorrichtungsschnittstelle 12 warten, bis eine Schwellenwertanzahl von Blöcken in dem Puffer 107 aggregiert wurde, oder sie kann eine vorbestimmte Zeit warten, ohne dass Zugriffe auf die Daten in einem Block erfolgen, bevor der modifizierte Block oder die modifizierten Blöcke über die Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 in den SCM 120 entleert werden. In anderen Fällen kann die Blockvorrichtungsschnittstelle 12 einen aggregierten Datenblock als Reaktion auf das Erreichen des Datenwerts eines Blocks in dem Puffer 107 entleeren, wie wenn neue Schreibdaten in dem Puffer 107 für eine Seite oder einen Block gesammelt werden, die/der zuvor nicht in der Vorrichtung 111 gespeichert wurde. In noch anderen Implementierungen kann das Entleeren eines Blocks oder von Blöcken von Daten aus dem Puffer 107 von einer verbleibenden Speicherungskapazität des Puffers 107 abhängen. Zum Beispiel kann die Blockvorrichtungsschnittstelle 12 als Reaktion auf das Erreichen von 80 % der Speicherungskapazität des Puffers 107 einen oder mehrere Datenblöcke aus dem Puffer 107 entleeren.
  • In Block 812 setzt die Blockvorrichtungsschnittstelle 12 den Eintrag für den modifizierten Datenblock in der Seitentabelle als Reaktion auf den Abschluss des Entleerungsvorgangs auf Nur-Lesen. Dies entspricht dem Zurückkehren in den ersten Status von dem dritten Status in dem Beispielstatusdiagramm von 4. Der Nur-Lese-Zugriff kann einem Nur-Lese-BAR des SCM 120 entsprechen, der von der Speichervorrichtungsschnittstelle 10 verwendet wird. Der Abschluss des Entleerungsvorgangs kann durch die Blockvorrichtungsschnittstelle 12 basierend auf dem Empfang einer Befehlsabschlussangabe von der Blockvorrichtungsschnittstelle 22 der Vorrichtung 111 bestimmt werden.
  • In Block 814 aktualisiert die Blockvorrichtungsschnittstelle 12 oder die Speichervorrichtungsschnittstelle 10 den Eintrag für den entleerten Datenblock in der Seitentabelle, um auf einen Ort in dem SCM 120 zu zeigen, an dem der Block entleert wurde. In dieser Hinsicht kann die neue physische Adresse der Daten in dem SCM 120 durch die Blockvorrichtungsschnittstelle 12 als Teil der Entleerungsbefehlsabschlussangabe empfangen werden oder kann alternativ durch die Speichervorrichtungsschnittstelle 10 über einen Aktualisierungsprozess der Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 empfangen werden.
  • 9 ist ein Flussdiagramm für einen Mehrfachschnittstellenprozess einer Vorrichtung, einschließlich des SCM, gemäß einer oder mehreren Ausführungsformen. Der Prozess von 9 kann zum Beispiel von der Steuerschaltungsanordnung 112 der Vorrichtung 111 durchgeführt werden.
  • In Block 902 verwendet die Steuerschaltungsanordnung 112 die Blockvorrichtungsschnittstelle 22 zum Empfangen von Schreibbefehlen von dem Host 101, um Daten in Blöcken in den SCM 120 zu schreiben. Wie oben erörtert, wird die Blockvorrichtungsschnittstelle 22 auch verwendet, um blockadressierbare Daten aus dem SCM 120 zu lesen.
  • Zusätzlich verwendet die Steuerschaltungsanordnung 112 die Speichervorrichtungsschnittstelle 20 in Block 904 zum Empfangen von Lesebefehlen von dem Host 101, um byteadressierbare Daten aus dem SCM 120 zu lesen. Die Verwendung von zwei Schnittstellen an der Vorrichtung 111 ermöglicht, dass der SCM 120 von dem Host 101 als Hauptspeicher zum Lesen byteadressierbarer Daten und als nichtflüchtige Speicherung für Datenblöcke verwendet wird.
  • In Block 906 macht die Speichervorrichtungsschnittstelle 20 dem Host 101 einen Nur-Lese-BAR für den SCM 120 verfügbar. Wie oben erwähnt, kann das verfügbar gemachte BAR für die Vorrichtung 111 auch einen Lese-/Schreibabschnitt einschließen, der sich in dem Speicher 116 der Vorrichtung 111 befindet. Das BAR kann zum Beispiel über einen PCIe-Bus oder eine PCIe-Verbindung verfügbar gemacht werden, der/die Befehle für byteadressierbare Daten unter Verwendung einer Speichervorrichtungsschnittstelle ermöglicht und auch Befehle für blockadressierbare Daten unter Verwendung einer Blockvorrichtungsschnittstelle, wie zum Beispiel NVMe, ermöglicht. Die Verwendung eines BAR kann es der Prozessorschaltungsanordnung 102 an dem Host 101 ermöglichen, eine Seitentabelle zu erstellen und zu aktualisieren, die virtuelle Adressen, die von Anwendungen verwendet werden, die von der Prozessorschaltungsanordnung 102 ausgeführt werden, auf physische Adressen in dem SCM 120 abbildet.
  • 10 ist ein Flussdiagramm für einen Vorrichtungsblockschreibprozess gemäß einer oder mehreren Ausführungsformen. Der Prozess von 10 kann zum Beispiel von der Steuerschaltungsanordnung 112 der Vorrichtung 111 durchgeführt werden.
  • In Block 1002 von 10 empfängt die Steuerschaltungsanordnung 112 der Vorrichtung 111 einen Schreibbefehl von dem Host 101 über die Blockvorrichtungsschnittstelle 22, um einen oder mehrere Datenblöcke in den SCM 120 zu schreiben. In manchen Implementierungen kann die Steuerschaltungsanordnung 112 ein Logisch-zu-physisch-Abbildungsmodul verwenden, um einen Ort zum Schreiben des einen oder der mehreren Blöcke für den Schreibbefehl in einem Schreibvorgang zu bestimmen, der an den SCM 120 gesendet wird. In anderen Implementierungen verwendet die Steuerschaltungsanordnung 112 möglicherweise kein solches Logisch-zu-physisch-Abbildungsmodul.
  • Nach dem Empfangen einer Bestätigung des Abschlusses des Schreibvorgangs in dem SCM 120 aktualisiert die Steuerschaltungsanordnung 112 die Speichervorrichtungsschnittstelle 20 in Block 1004 mit den physischen Adressen für die geschriebenen Daten. In manchen Implementierungen werden die aktualisierten Adressen über die Speichervorrichtungsschnittstelle 20 der Vorrichtung 111 mit dem Host 101 geteilt, sodass die Speichervorrichtungsschnittstelle 10 an dem Host 101 eine Seitentabelle aktualisieren kann.
  • Wie oben erörtert, kann die Verwendung eines SCM zum Lesen von byteadressierbaren Daten und Schreiben in den SCM in Blöcken ermöglichen, dass der SCM mindestens einen Teil des Hauptspeichers eines Hosts ersetzt, während die Auswirkungen der größeren Schreiblatenz des SCM reduziert werden. Zusätzlich kann die Verwendung des Hauptspeichers des Hosts zum temporären Puffern byteadressierbarer Daten, die modifiziert wurden, und Aktualisieren einer Seitentabelle für die gepufferten Daten dazu beitragen, sicherzustellen, dass eine alte oder veraltete Version der Daten nicht aus dem SCM gelesen wird.
  • Weitere Ausführungsformen
  • Für den Durchschnittsfachmann ist ersichtlich, dass die verschiedenen veranschaulichenden Logikblöcke, Module und Prozesse, die in Verbindung mit den hierin offenbarten Beispielen beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Des Weiteren können die vorhergehenden Prozesse auf einem computerlesbaren Medium ausgeführt sein, das einen Prozessor oder eine Steuerschaltungsanordnung veranlasst, bestimmte Funktionen durchzuführen oder auszuführen.
  • Um diese Austauschbarkeit von Hardware und Software klar zu veranschaulichen, wurden oben verschiedene veranschaulichende Komponenten, Blöcke und Module im Allgemeinen hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Der Durchschnittsfachmann kann die beschriebene Funktionalität für jede spezielle Anwendung auf unterschiedliche Weise implementieren, aber solche Implementierungsentscheidungen sollten nicht so interpretiert werden, dass sie eine Abweichung vom Schutzumfang der vorliegenden Offenbarung bewirken.
  • Die verschiedenen veranschaulichenden Logikblöcke, Einheiten, Module, Prozessorschaltungsanordnungen und Stuerschaltungsanordnungen, die in Verbindung mit den hierin offenbarten Beispielen beschrieben werden, können mit einem Universalprozessor, einem DSP, einer ASIC, einer FPGA oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gatter- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Durchführen der hierin beschriebenen Funktionen gestaltet sind, implementiert oder durchgeführt werden. Ein Universalprozessor kann ein Mikroprozessor sein, jedoch kann die Schaltungsanordnung alternativ jeder herkömmliche Prozessor, jede herkömmliche Steuerung, Mikrosteuerung oder jede herkömmliche Zustandsmaschine sein. Ein Prozessor oder eine Steuerschaltungsanordnung kann auch als eine Kombination von Rechenvorrichtungen, z. B. eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein SoC, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere solche Konfiguration implementiert sein.
  • Die Aktivitäten eines Verfahrens oder eines Prozesses, die in Verbindung mit den hierin offenbarten Beispielen beschrieben werden, können direkt in Hardware, in einem Softwaremodul, das von einem Prozessor oder einer Steuerschaltungsanordnung ausgeführt wird, oder in einer Kombination aus den zweien ausgeführt sein. Die Schritte des Verfahrens oder Algorithmus können auch in einer von den in den Beispielen bereitgestellten Schritten abweichenden Reihenfolge durchgeführt werden. Ein Softwaremodul kann sich in einem RAM-Speicher, Flash-Speicher, ROM-Speicher, EPROM-Speicher, EEPROM-Speicher, Registern, auf einer Festplatte, einem Wechselmedium, einem optischen Medium oder jeder anderen Form von Speicherungsmedium befinden, die in der Technik bekannt sind. Ein beispielhaftes Speicherungsmedium ist mit dem Prozessor oder der Steuerschaltungsanordnung verbunden, sodass die Schaltungsanordnung Informationen von dem Speicherungsmedium lesen und darauf schreiben kann. Alternativ dazu kann das Speicherungsmedium integraler Bestandteil des Prozessors oder der Steuerschaltungsanordnung sein. Die Schaltungsanordnung und das Speicherungsmedium können sich in einer ASIC oder einem SoC befinden.
  • Die vorstehende Beschreibung der offenbarten Ausführungsbeispiele wird bereitgestellt, um es einem Durchschnittsfachmann zu ermöglichen, die Ausführungsformen in der vorliegenden Offenbarung herzustellen oder zu verwenden. Verschiedene Modifikationen an diesen Beispielen werden dem Durchschnittsfachmann ohne Weiteres ersichtlich sein, und die hierin offenbarten Prinzipien können auf andere Beispiele angewandt werden, ohne von dem Geist oder Schutzumfang der vorliegenden Offenbarung abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend zu betrachten. Außerdem sollte die Verwendung von Formulierungen in der Form von „mindestens eines von A und B“ in den folgenden Ansprüchen als „nur A, nur B oder sowohl A als auch B“ verstanden werden.

Claims (20)

  1. Verfahren zum Verbinden mit einer Vorrichtung, die einen Speicherungsklassenspeicher (SCM) einschließt, wobei das Verfahren aufweist: Erstellen einer Seitentabelle, die eine Vielzahl von Einträgen einschließt, die Speicherorten in dem SCM der Vorrichtung entsprechen; Setzen der Vielzahl von Einträgen auf Nur-Lesen in der Seitentabelle; Empfangen einer Schreibanforderung zum Schreiben byteadressierbarer Daten, die einem ersten Eintrag der Vielzahl von Einträgen entsprechen; Schreiben der byteadressierbaren Daten für die Schreibanforderung in einen Puffer eines Speichers eines Hosts; Empfangen einer Leseanforderung zum Lesen byteadressierbarer Daten, die einem zweiten Eintrag der Vielzahl von Einträgen entsprechen; und Senden eines Lesebefehls an die Vorrichtung, um die byteadressierbaren Daten für die Leseanforderung unter Verwendung einer Speichervorrichtungsschnittstelle zu lesen.
  2. Verfahren gemäß Anspruch 1, weiterhin aufweisend ein Ändern des ersten Eintrags, um Lese- und Schreibzugriff anzugeben und um auf einen Ort in dem lokalen Speicher des Hosts zu zeigen, an dem die byteadressierbaren Daten für die Schreibanforderung geschrieben wurden.
  3. Verfahren gemäß Anspruch 1, weiterhin aufweisend: Lesen eines Datenblocks für den ersten Eintrag aus dem SCM; Speichern des gelesenen Datenblocks in dem Puffer des lokalen Speichers; Modifizieren des Datenblocks in dem Puffer, um die Schreibanforderung durchzuführen; und Senden eines Schreibbefehls an die Vorrichtung unter Verwendung einer Blockvorrichtungsschnittstelle, um den modifizierten Datenblock aus dem Puffer des Speichers des Hosts in den SCM zu entleeren.
  4. Verfahren gemäß Anspruch 3, weiterhin aufweisend: Angeben, dass Daten für den ersten Eintrag in der Seitentabelle zum Schreiben von Daten in Vorbereitung auf das Entleeren des modifizierten Datenblocks in den SCM nicht verfügbar sind; Setzen des ersten Eintrags auf Nur-Lesen in der Seitentabelle als Reaktion auf den Abschluss des Entleerens des modifizierten Datenblocks in den SCM und Aktualisieren des ersten Eintrags in der Seitentabelle, um auf einen Ort in dem SCM zu zeigen, an dem der modifizierte Datenblock entleert wurde.
  5. Verfahren gemäß Anspruch 1, weiterhin aufweisend ein Umleiten der Schreibanforderung von der Speichervorrichtungsschnittstelle zu einer Blockvorrichtungsschnittstelle zur Durchführung der Schreibanforderung.
  6. Verfahren gemäß Anspruch 1, wobei die Speichervorrichtungsschnittstelle auf ein Basisadressregister (BAR) des SCM zugreift, um Daten aus dem SCM zu lesen.
  7. Verfahren gemäß Anspruch 1, wobei die Schreibanforderung in dem Puffer des Speichers unter Verwendung eines Betriebssystems (OS) durchgeführt wird und der Lesebefehl an die Vorrichtung unter Verwendung der Speichervorrichtungsschnittstelle ohne Verwendung des OS gesendet wird.
  8. Verfahren gemäß Anspruch 1, weiterhin aufweisend ein Kommunizieren mit der Vorrichtung unter Verwendung von Peripheral Component Interconnect express (PCle) über die Speichervorrichtungsschnittstelle und eine Blockvorrichtungsschnittstelle.
  9. Vorrichtung, aufweisend: einen Speicherungsklassenspeicher (SCM) zum Speichern von Daten und eine Steuerschaltlogik, die eingerichtet ist zum: Verwenden einer Blockvorrichtungsschnittstelle zum Empfangen von Schreibbefehlen von einem Host, um Daten in Blöcken in den SCM zu schreiben, und zum Empfangen von Lesebefehlen von dem Host, um Daten in Blöcken aus dem SCM zu lesen; und Verwenden einer Speichervorrichtungsschnittstelle zum Empfangen von Lesebefehlen vom Host, um byteadressierbare Daten aus dem SCM zu lesen.
  10. Vorrichtung gemäß Anspruch 9, wobei die Steuerschaltungsanordnung weiterhin eingerichtet ist, um dem Host ein Basisadressregister (BAR) der Vorrichtung über die Speichervorrichtungsschnittstelle verfügbar zu machen.
  11. Vorrichtung gemäß Anspruch 9, wobei die Steuerschaltungsanordnung weiterhin eingerichtet ist zum: Empfangen eines Schreibbefehls vom Host über die Blockvorrichtungsschnittstelle, um einen Datenblock in den SCM zu schreiben; und Aktualisieren von Adressen, die von der Speichervorrichtungsschnittstelle für byteadressierbare Daten verwendet werden, die in dem in den SCM geschriebenen Datenblock eingeschlossen sind.
  12. Vorrichtung gemäß Anspruch 9, wobei die Steuerschaltungsanordnung weiterhin eingerichtet ist, um die Durchführung eines über die Speichervorrichtungsschnittstelle empfangenen Schreibbefehls zu sperren.
  13. Vorrichtung gemäß Anspruch 9, wobei die Steuerschaltungsanordnung weiterhin eingerichtet ist, um mit dem Host unter Verwendung von Peripheral Component Interconnect express (PCle) über die Speichervorrichtungsschnittstelle und die Blockvorrichtungsschnittstelle zu kommunizieren.
  14. Host, aufweisend: einen Speicher zum Speichern von Daten und eine Prozessorschaltungsanordnung, die eingerichtet ist zum: Empfangen einer Schreibanforderung zum Schreiben von Daten, die einem ersten Eintrag einer Vielzahl von Einträgen in einer Seitentabelle entsprechen; Schreiben von Daten für die Schreibanforderung in einen Puffer des lokalen Speichers; Empfangen einer Leseanforderung zum Lesen von Daten, die einem zweiten Eintrag der Vielzahl von Einträgen in der Seitentabelle entsprechen; und Senden eines Lesebefehls an eine Vorrichtung unter Verwendung einer Speichervorrichtungsschnittstelle, um die Daten für die Leseanforderung aus einem Speicherungsklassenspeicher (SCM) der Vorrichtung zu lesen.
  15. Host gemäß Anspruch 14, wobei die Prozessorschaltungsanordnung weiterhin eingerichtet ist, um den ersten Eintrag in der Seitentabelle zu ändern, um Lese- und Schreibzugriff anzugeben und um auf einen Ort in dem Speicher zu zeigen, an dem Daten für die Schreibanforderung geschrieben wurden.
  16. Host gemäß Anspruch 14, wobei die Prozessorschaltungsanordnung weiterhin eingerichtet ist zum: Lesen eines Datenblocks für den ersten Eintrag aus dem SCM; Speichern des gelesenen Datenblocks in dem Puffer des Speichers; Modifizieren des Datenblocks in dem Puffer, um die Schreibanforderung durchzuführen; und Senden eines Schreibbefehls an die Vorrichtung unter Verwendung einer Blockvorrichtungsschnittstelle, um den modifizierten Datenblock aus dem Puffer des Speichers in den SCM zu entleeren.
  17. Host gemäß Anspruch 14, wobei die Prozessorschaltungsanordnung weiterhin eingerichtet ist zum: Angeben, dass der erste Eintrag in der Seitentabelle nicht zum Schreiben von Daten verfügbar ist, als Reaktion auf ein Vorbereiten, den modifizierten Datenblock in den SCM zu entleeren; Setzen des ersten Eintrags auf Nur-Lesen in der Seitentabelle als Reaktion auf den Abschluss des Entleerens des modifizierten Datenblocks in den SCM und Aktualisieren des ersten Eintrags in der Seitentabelle, um auf einen Ort in dem SCM zu zeigen, an dem der modifizierte Datenblock entleert wurde.
  18. Host gemäß Anspruch 14, wobei die Prozessorschaltungsanordnung weiterhin eingerichtet ist, um die Schreibanforderung von der Speichervorrichtungsschnittstelle zu einer Blockvorrichtungsschnittstelle zur Durchführung der Schreibanforderung umzuleiten.
  19. Host gemäß Anspruch 14, wobei die Speichervorrichtungsschnittstelle auf ein Basisadressregister (BAR) des SCM zugreift, um Daten aus dem SCM zu lesen.
  20. Host gemäß Anspruch 14, wobei die Prozessorschaltungsanordnung weiterhin eingerichtet ist zum: Durchführen der Schreibanforderung in dem Puffer des lokalen Speichers unter Verwendung eines Betriebssystems (OS) des Hosts und Senden des Lesebefehls an die Vorrichtung unter Verwendung der Speichervorrichtungsschnittstelle ohne Verwendung des OS.
DE112020000183.0T 2019-11-13 2020-06-15 Speicherungsklassenspeicherzugriff Pending DE112020000183T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/683,095 US11016905B1 (en) 2019-11-13 2019-11-13 Storage class memory access
US16/683,095 2019-11-13
PCT/US2020/037713 WO2021096566A1 (en) 2019-11-13 2020-06-15 Storage class memory access

Publications (1)

Publication Number Publication Date
DE112020000183T5 true DE112020000183T5 (de) 2021-11-25

Family

ID=75845466

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000183.0T Pending DE112020000183T5 (de) 2019-11-13 2020-06-15 Speicherungsklassenspeicherzugriff

Country Status (4)

Country Link
US (1) US11016905B1 (de)
CN (1) CN113243007A (de)
DE (1) DE112020000183T5 (de)
WO (1) WO2021096566A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115521B (zh) * 2019-06-19 2023-02-07 华为技术有限公司 数据访问方法及装置
US12066939B2 (en) * 2020-10-30 2024-08-20 Intel Corporation Cache line demote infrastructure for multi-processor pipelines
WO2022213736A1 (zh) * 2021-04-08 2022-10-13 华为技术有限公司 一种将数据写入固态硬盘的方法
US11861222B2 (en) * 2021-05-17 2024-01-02 Micron Technology, Inc. Object management in tiered memory systems
JP2023037883A (ja) 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置
CN117008843B (zh) * 2023-09-26 2024-01-19 苏州元脑智能科技有限公司 控制页链表构建装置和电子设备

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4420807A (en) 1981-08-31 1983-12-13 International Business Machines Corporation Selectively holding data in a buffer for defective backing store tracks
CA2014799A1 (en) * 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
US5608876A (en) 1995-05-22 1997-03-04 International Business Machines Corporation Add-in board with enable-disable expansion ROM for PCI bus computers
US6772296B1 (en) * 2000-08-10 2004-08-03 Sun Microsystems, Inc. Method and apparatus facilitating automatic persistence in asymmetric storage
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US7216211B2 (en) 2003-05-22 2007-05-08 Intel Corporation Variable sized flash memory in PCI
US20050229250A1 (en) * 2004-02-26 2005-10-13 Ring Sandra E Methodology, system, computer readable medium, and product providing a security software suite for handling operating system exploitations
TWI285893B (en) 2004-11-12 2007-08-21 Ind Tech Res Inst Hybrid MRAM memory array architecture
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US8595487B2 (en) * 2006-11-01 2013-11-26 Vmware, Inc. Virtualization hardware for device driver isolation
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US7979601B2 (en) 2008-08-05 2011-07-12 Standard Microsystems Corporation External direct memory access of embedded controller memory
US8812805B2 (en) 2008-08-05 2014-08-19 Broadcom Corporation Mixed technology storage device that supports a plurality of storage technologies
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
US8898417B1 (en) 2009-10-20 2014-11-25 Micron Technology, Inc. Block-based storage device with a memory-mapped interface
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US9189385B2 (en) 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
JP5002719B1 (ja) 2011-03-10 2012-08-15 株式会社東芝 情報処理装置、外部記憶装置、ホスト装置、中継装置、制御プログラム及び情報処理装置の制御方法
US20120254582A1 (en) 2011-03-31 2012-10-04 Ashok Raj Techniques and mechanisms for live migration of pages pinned for dma
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US20120317377A1 (en) 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US10324946B2 (en) 2011-06-23 2019-06-18 Salesforce.Com Inc. Methods and systems for caching data shared between organizations in a multi-tenant database system
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20130080687A1 (en) 2011-09-23 2013-03-28 Avalanche Technology, Inc. Solid state disk employing flash and magnetic random access memory (mram)
EP3382556A1 (de) 2011-09-30 2018-10-03 INTEL Corporation Speicherkanal zur unterstützung von nah- und fernspeicherzugriffen
US20130091321A1 (en) 2011-10-11 2013-04-11 Cisco Technology, Inc. Method and apparatus for utilizing nand flash in a memory system hierarchy
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
WO2013101179A1 (en) 2011-12-30 2013-07-04 Intel Corporation Write mechanism for storage class memory
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
CN102662870B (zh) * 2012-03-20 2014-08-13 武汉噢易科技有限公司 基于vfs层拦截读写请求的安卓操作系统保护方法
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
CN102693198B (zh) 2012-05-12 2015-03-25 北京忆恒创源科技有限公司 Dma传输方法及系统
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US8903995B1 (en) 2012-07-19 2014-12-02 Netapp, Inc. Performance impact analysis of network change
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US8724392B1 (en) 2012-11-16 2014-05-13 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9015123B1 (en) 2013-01-16 2015-04-21 Netapp, Inc. Methods and systems for identifying changed data in an expandable storage volume
US9058870B2 (en) 2013-02-08 2015-06-16 Seagate Technology Llc Hash functions used to track variance parameters of resistance-based memory elements
US10482009B1 (en) 2013-03-15 2019-11-19 Google Llc Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US20140351515A1 (en) 2013-05-21 2014-11-27 International Business Machines Corporation Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US9189387B1 (en) 2013-06-24 2015-11-17 Emc Corporation Combined memory and storage tiering
CN104424103B (zh) 2013-08-21 2018-05-29 光宝科技股份有限公司 固态储存装置中高速缓存的管理方法
JP6013998B2 (ja) 2013-09-06 2016-10-25 株式会社東芝 データストレージ装置およびデータ消去方法
US20150302903A1 (en) 2014-04-21 2015-10-22 Qualcomm Incorporated System and method for deep coalescing memory management in a portable computing device
US10235103B2 (en) * 2014-04-24 2019-03-19 Xitore, Inc. Apparatus, system, and method of byte addressable and block addressable storage and retrival of data to and from non-volatile storage memory
CN106133707B (zh) 2014-04-28 2020-03-20 慧与发展有限责任合伙企业 高速缓存管理
US20150363320A1 (en) 2014-06-17 2015-12-17 Lsi Corporation Write back caching of boot disk in a uefi environment
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9645769B2 (en) 2014-10-24 2017-05-09 Western Digital Technologies, Inc. Performance acceleration during shutdown of a data storage device
US9857995B1 (en) 2015-03-09 2018-01-02 Western Digital Technologies, Inc. Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9684467B2 (en) 2015-05-18 2017-06-20 Nimble Storage, Inc. Management of pinned storage in flash based on flash-to-disk capacity ratio
US9904490B2 (en) 2015-06-26 2018-02-27 Toshiba Memory Corporation Solid-state mass storage device and method for persisting volatile data to non-volatile media
CN106372004B (zh) 2015-07-24 2020-08-11 爱思开海力士有限公司 用于ssd控制器的可编程协议独立bar存储器
US9836404B2 (en) 2015-08-14 2017-12-05 Netapp, Inc. Write mirroring to storage class memory devices
US20170147499A1 (en) 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
US20170160987A1 (en) 2015-12-08 2017-06-08 Intel Corporation Multilevel main memory indirection
US10126981B1 (en) 2015-12-14 2018-11-13 Western Digital Technologies, Inc. Tiered storage using storage class memory
US9910773B2 (en) 2016-03-29 2018-03-06 Sandisk Technologies Llc Method and system for compacting data in non-volatile memory
US10318185B2 (en) * 2016-07-01 2019-06-11 Intel Corporation Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive
US10445235B2 (en) 2016-07-29 2019-10-15 Seagate Technology Llc Weighted data striping
JP2018049385A (ja) 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
KR20180061851A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 바이트 액세서블 인터페이스 및 블록 액세서블 인터페이스를 지원하는 스토리지 장치 및 이를 포함하는 전자 시스템
US10860246B2 (en) * 2016-12-21 2020-12-08 Hewlett-Packard Development Company, L.P. Persistent memory updating
US10496544B2 (en) 2016-12-29 2019-12-03 Intel Corporation Aggregated write back in a direct mapped two level memory
US10261913B2 (en) 2017-04-20 2019-04-16 Alibaba Group Holding Limited Persistent memory for key-value storage
US10359954B2 (en) * 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10929309B2 (en) 2017-12-19 2021-02-23 Western Digital Technologies, Inc. Direct host access to storage device memory space
US10496334B2 (en) 2018-05-04 2019-12-03 Western Digital Technologies, Inc. Solid state drive using two-level indirection architecture
US10552332B2 (en) * 2018-05-10 2020-02-04 Alibaba Group Holding Limited Rapid side-channel access to storage devices

Also Published As

Publication number Publication date
US20210141736A1 (en) 2021-05-13
WO2021096566A1 (en) 2021-05-20
CN113243007A (zh) 2021-08-10
US11016905B1 (en) 2021-05-25

Similar Documents

Publication Publication Date Title
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112011105984B4 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE69223287T2 (de) Steuerungsverfahren für eine Computerspeichereinrichtung
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102012216034B4 (de) Direkte Speicheradressierung für Solid-State-Laufwerke
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
US20130091331A1 (en) Methods, apparatus, and articles of manufacture to manage memory
DE102014003668A1 (de) Befehle zum markieren des anfangs und endes eines nicht- transaktionsorientierten codegebiets, das ein zurückschreiben zu einer persistenten ablage erfordert
DE112016004527T5 (de) Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112010004969T5 (de) Hybrides Speicherteilsystem
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102009031125A1 (de) Nand-Fehlerbehandlung

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US