DE112020000183T5 - Speicherungsklassenspeicherzugriff - Google Patents
Speicherungsklassenspeicherzugriff Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 122
- 239000000872 buffer Substances 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 5
- 238000011010 flushing procedure Methods 0.000 claims description 5
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 2
- 238000012546 transfer Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 21
- 238000013507 mapping Methods 0.000 description 11
- 208000031339 Split cord malformation Diseases 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004645 scanning capacitance microscopy Methods 0.000 description 4
- 238000013068 supply chain management Methods 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000001465 metallisation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical 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
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 Hosts101 und einer Vorrichtung111 , gemäß einer oder mehreren Ausführungsformen. Der Host101 kommuniziert mit der Vorrichtung111 , um Daten von der Vorrichtung111 abzurufen und darin zu speichern. Wie weiter unten beschrieben, kann die Vorrichtung111 als Speichervorrichtung und/oder als Speicherungsvorrichtung für den Host101 über entsprechende Vorrichtungsschnittstellen dienen. Der Host101 und die Vorrichtung111 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 Host101 ein Client-Computer oder eine Speicherungssteuerung sein, und die Vorrichtung111 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 Host101 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 Vorrichtung111 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 SCM120 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 Vorrichtung111 zusätzlich zu dem SCM120 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 Host101 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 Host101 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 SCM120 geschrieben werden sollen, in einem Puffer107 eines Speichers106 des Hosts101 aggregiert oder modifiziert werden, bevor sie in den SCM120 entleert werden. Der Host101 kann dann einen Schreibbefehl zum Schreiben des aggregierten oder modifizierten Datenblocks in den SCM120 senden. Diese Anordnung reduziert die Latenz zum Lesen und Schreiben von Daten in den SCM120 , sodass der SCM120 zum Speichern von byteadressierbaren Daten verwendet werden kann, die ansonsten in dem Speicher106 gespeichert würden. - In dem Beispiel von
1 schließt der Host101 eine Prozessorschaltungsanordnung102 zum Ausführen von computerausführbaren Anweisungen, wie ein Betriebssystem (OS) des Hosts101 , ein. Die Prozessorschaltungsanordnung102 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 Prozessorschaltungsanordnung102 ein System auf einem Chip (SoC) einschließen. In dieser Hinsicht zeigt das Beispiel von1 eine Speicherverwaltungseinheit (MMU)104 als Teil der Prozessorschaltungsanordnung102 oder in demselben Gehäuse wie die Prozessorschaltungsanordnung102 eingeschlossen. Der Fachmann wird erkennen, dass die Prozessorschaltungsanordnung102 , der Speicher106 und/oder eine Vorrichtungsschnittstelle108 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 Prozessorschaltungsanordnung102 über die MMU104 auf den Speicher106 zugreifen, um Anweisungen, wie Anweisungen zum Ausführen einer Blockvorrichtungsschnittstelle oder einer Speichervorrichtungsschnittstelle, die verwendet wird, um Daten von der Vorrichtung111 zu lesen oder Daten in diese zu schreiben, auszuführen. In dieser Hinsicht und wie unten detaillierter erörtert, kann der Puffer107 des Speichers106 byteadressierbare Daten für Schreibanforderungen speichern, die aggregiert oder gepuffert werden, um eine Blockgröße für den SCM120 zu erreichen. - Der Speicher
106 dient als ein Hauptspeicher für den Host101 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 Speicher106 außerhalb des Hosts101 befinden, aber als ein Hauptspeicher für den Host101 verwendet werden. - Die Prozessorschaltungsanordnung
102 verwendet auch den MMU104 , um über die Vorrichtungsschnittstelle108 auf den SCM120 der Vorrichtung111 zuzugreifen. In manchen Implementierungen kann die MMU104 auf eine Seitentabelle zugreifen, die virtuelle Adressen, die von der Prozessorschaltungsanordnung102 verwendet werden, in physische Adressen (z. B. Byte-Adressen) übersetzt, die einen Ort angeben, an dem Daten für die virtuellen Adressen in dem Speicher106 oder dem SCM120 gespeichert oder daraus abgerufen werden sollen. In dieser Hinsicht kann die MMU104 die Orte für byteadressierbare Daten verfolgen. Zusätzlich kann die MMU104 eine Speichervorrichtungsschnittstelle (z. B. eine Speichervorrichtungsschnittstelle10 in2 ) zum Zugreifen auf byteadressierbare Daten ausführen. - Die Vorrichtungsschnittstelle
108 ermöglicht es dem Host101 , mit der Vorrichtung111 über einen Bus oder eine Verbindung110 zu kommunizieren. In manchen Implementierungen kann die Vorrichtungsschnittstelle108 mit der Host-Schnittstelle118 der Vorrichtung111 über den Bus oder die Verbindung110 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 Verbindung110 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 Host101 und die Vorrichtung111 ü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 SCM120 der Vorrichtung111 . Zum Schreiben von Daten und Lesen blockadressierbarer Daten verbindet sich der Host101 mit der Vorrichtung111 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 Prozessorschaltungsanordnung102 ausgeführt wird. Zum Lesen byteadressierbarer Daten verbindet sich der Host101 mit der Vorrichtung111 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 Prozessorschaltungsanordnung102 ausgeführt werden kann. In manchen Implementierungen kann die Speichervorrichtungsschnittstelle durch die MMU104 oder durch eine andere Schaltungsanordnung der Prozessorschaltungsanordnung102 , wie einen Hardwarebeschleuniger, implementiert werden. - Wie in
1 gezeigt, schließt die Vorrichtung111 die Host-Schnittstelle118 , eine Steuerschaltungsanordnung112 , einen Speicher116 und den SCM120 ein. Die Host-Schnittstelle118 ermöglicht es der Vorrichtung111 , mit der Vorrichtungsschnittstelle108 des Hosts101 über den Bus oder die Verbindung110 zu kommunizieren. Die Host-Schnittstelle118 kann in manchen Implementierungen mit der Vorrichtungsschnittstelle108 des Hosts101 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 Host101 , um auf Daten in dem SCM120 zuzugreifen. Zum Lesen und Schreiben blockadressierbarer Daten verbindet sich die Steuerschaltungsanordnung112 mit dem Host101 unter Verwendung einer Blockvorrichtungsschnittstelle, die zum Beispiel eine NVMe-Schnittstelle einschließen kann. Zum Lesen byteadressierbarer Daten verbindet sich die Steuerschaltungsanordnung112 mit dem Host101 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 Steuerschaltungsanordnung112 eine SoC einschließen, sodass eine oder beide der Host-Schnittstelle118 und des Speichers116 in einem einzigen Chip mit der Steuerschaltungsanordnung112 kombiniert werden können. Wie bei der oben erörterten Prozessorschaltungsanordnung102 des Hosts101 kann die Steuerschaltungsanordnung112 der Vorrichtung111 in manchen Implementierungen separate Komponenten, wie separate Hardwarebeschleuniger zum Implementieren einer Speichervorrichtungsschnittstelle und einer Blockvorrichtungsschnittstelle, einschließen. - Der Speicher
116 der Vorrichtung111 kann zum Beispiel einen flüchtigen RAM, wie DRAM, einen nichtflüchtigen RAM oder einen anderen Festkörperspeicher einschließen. Die Steuerschaltungsanordnung112 kann auf den Speicher116 zugreifen, um Anweisungen auszuführen, wie eine Firmware der Vorrichtung111 , die Anweisungen zum Implementieren der Speichervorrichtungsschnittstelle und der Blockvorrichtungsschnittstelle einschließen kann. Zusätzlich kann die Steuerschaltungsanordnung112 für Daten, die verwendet werden, während eine Firmware der Vorrichtung111 ausgeführt wird, Daten, die in den SCM120 geschrieben werden sollen, und/oder Daten, die aus dem SCM120 gelesen wurden, auf den Speicher116 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 Host101 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 Vorrichtung111 zusätzlich zu dem SCM120 einschließen. -
2 ist ein Beispielblockdiagramm, das das Handhaben von Leseanforderungen und Schreibanforderungen durch den Host101 und die Vorrichtung111 gemäß einer oder mehreren Ausführungsformen zeigt. Wie in2 gezeigt, empfängt eine Speichervorrichtungsschnittstelle10 eine Leseanforderung A und eine Schreibanforderung B, während eine Blockvorrichtungsschnittstelle12 eine Leseanforderung C und eine Schreibanforderung D empfängt. Die Lese- und Schreibanforderungen können von Anwendungen stammen, die von der Prozessorschaltungsanordnung102 ausgeführt werden. In dem Beispiel von2 ist die Speichervorrichtungsschnittstelle10 durch die MMU104 der Prozessorschaltungsanordnung102 implementiert, und die Blockvorrichtungsschnittstelle12 ist durch einen OS-Treiber des Hosts101 implementiert, der durch die Prozessorschaltungsanordnung102 ausgeführt wird. - Die Schreibanforderung B wird zunächst durch die Speichervorrichtungsschnittstelle
10 empfangen, wird jedoch von der Speichervorrichtungsschnittstelle10 zu der Blockvorrichtungsschnittstelle12 umgeleitet, da die Speichervorrichtungsschnittstelle10 nur zum Handhaben von Leseanforderungen für byteadressierbare Daten verwendet wird anstatt von Schreibanforderungen. In manchen Implementierungen übergibt die MMU104 die Steuerung der Schreibanforderung an ein OS des Hosts101 , da eine Speicherzuordnung zu dem SCM120 als Nur-Lesen gekennzeichnet ist. Wie oben erwähnt, führt der SCM120 allgemein Lesebefehle schneller durch als Schreibbefehle. In der vorliegenden Offenbarung kann der SCM120 als ein lokaler Speicher oder ein partieller DRAM-Ersatz für den Host101 für Leseanforderungen dienen, während Schreibanforderungen in dem Speicher106 des Hosts101 durchgeführt werden. Dies ermöglicht normalerweise einen kleiner bemessenen lokalen Speicher an dem Host101 , was den Stromverbrauch und die Kosten des Gesamtsystems, einschließlich des Hosts101 und der Vorrichtung111 , 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 Hosts101 ausgeführt werden. Andererseits beziehen sich Lese- und Schreibbefehle auf Befehle, die von dem Host101 an die Vorrichtung111 gesendet werden, um entweder auf einer Byte-Ebene im Falle von Lesebefehlen von der Speichervorrichtungsschnittstelle10 oder auf einer Block-Ebene (d. h. Seite oder blockadressierbare Daten) von der Blockvorrichtungsschnittstelle12 auf Daten zuzugreifen. Eine Seitengröße oder Blockgröße kann einer Dateneinheit in einem virtuellen Speicher entsprechen, der von einem OS des Hosts101 verwaltet wird. Daten, auf die in der Vorrichtung111 durch die Blockvorrichtungsschnittstellen12 und22 in2 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 Speichervorrichtungsschnittstellen10 und20 in2 zugreifen, das Lesen von Daten in Einheiten eines Bytes, einschließlich des Lesens eines einzigen Bytes von Daten aus dem SCM120 der Vorrichtung111 . - Wie in
2 gezeigt, wird die Leseanforderung A für byteadressierbare Daten A von der Speichervorrichtungsschnittstelle10 als Lesebefehl A neu paketiert, der an die Speichervorrichtungsschnittstelle20 der Vorrichtung111 gesendet wird, um byteadressierbare Daten A aus dem SCM120 abzurufen. Die Speichervorrichtungsschnittstelle20 an der Vorrichtung111 empfängt den Lesebefehl A und verwendet ein optionales Logisch-zu-physisch-Abbildungsmodul 24 zum Identifizieren einer physischen Adresse in dem SCM120 , der die byteadressierbaren Daten A speichert. In anderen Implementierungen kann das Logisch-zu-physisch-Abbildungsmodul 24 weggelassen werden, wie in Implementierungen, in denen der SCM120 keine Adressdereferenzierung für Speichertechniken, wie Verschleißausgleich, verwendet, um das Schreiben gleichmäßiger über den SCM120 zu verteilen. In solchen Implementierungen kann die Speichervorrichtungsschnittstelle20 , die von der Steuerschaltungsanordnung112 in1 ausgeführt werden kann, den Lesevorgang A in dem SCM120 durchführen. Beim Durchführen des Lesevorgangs A werden die byteadressierbaren Daten A an die Speichervorrichtungsschnittstelle20 zurückgegeben und können in einem Puffer, wie einem Puffer in dem Speicher116 der Vorrichtung111 in1 , temporär gespeichert werden, bevor sie an die Speichervorrichtungsschnittstelle10 des Hosts101 zurückgegeben werden, um den Lesebefehl A abzuschließen. - Die Speichervorrichtungsschnittstelle
20 , die von der Steuerschaltungsanordnung112 der Vorrichtung111 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 Speichervorrichtungsschnittstelle20 empfangen werden, kann blockiert werden oder einen Fehler an der Vorrichtung111 auslösen. Solche Fehler können an den Host101 zurückgemeldet werden oder nicht. - In dem Beispiel von
2 wird die Schreibanforderung B durch die Speichervorrichtungsschnittstelle10 des Hosts101 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 Prozessorschaltungsanordnung102 des Hosts101 (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 Prozessorschaltungsanordnung102 ausgeführt wird, einschließen. Die Speichervorrichtungsschnittstelle10 identifiziert die Schreibanforderung B als Schreibanforderung und leitet als Reaktion die Schreibanforderung B an die Sperrvorrichtungsschnittstelle12 um. In manchen Implementierungen können Schreibanforderungen, die durch die Speichervorrichtungsschnittstelle10 empfangen werden, einen Fehlerbehandler auslösen, der es dem OS des Hosts101 über die Blockvorrichtungsschnittstelle12 ermöglicht, die Schreibanforderung zu behandeln. - In dem Fall, in dem die Schreibanforderung B byteadressierbare Daten speichern soll, verwendet die Blockvorrichtungsschnittstelle
12 den Puffer107 , um einen oder mehrere Abschnitte des Datenblocks, einschließlich der byteadressierbaren Daten, die in den SCM120 geschrieben werden sollen, zu aggregieren oder zu modifizieren. Die Blockvorrichtungsschnittstelle12 sendet einen Lesebefehl für den Datenblock, einschließlich der byteadressierbaren Daten, die in die Vorrichtung111 geschrieben werden sollen. Die Blockvorrichtungsschnittstelle22 der Vorrichtung111 empfängt den Lesebefehl für den Block und führt einen Lesevorgang auf dem SCM120 durch und gibt den Leseblock, einschließlich der byteadressierbaren Daten, an die Blockvorrichtungsschnittstelle12 des Hosts101 zurück. Die Blockvorrichtungsschnittstelle12 puffert den gelesenen Datenblock in dem Puffer107 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 Puffer107 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 Puffer107 in den SCM120 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 Blockvorrichtungsschnittstelle22 der Vorrichtung111 empfängt den Schreibbefehl und verwendet das optionale Logisch-zu-physisch-Abbildungsmodul 24, um eine oder mehrere physische Adressen in dem SCM120 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 SCM120 keine Adressdereferenzierung verwendet. In solchen Implementierungen kann die Blockvorrichtungsschnittstelle22 , die von der Steuerschaltungsanordnung112 in1 ausgeführt werden kann, eine oder mehrere Adressen in dem SCM120 zum Durchführen der Schreibvorgänge B und D identifizieren. Beim Durchführen der Schreibvorgänge B und D speichert die Blockvorrichtungsschnittstelle22 einen oder mehrere Datenblöcke, einschließlich der Daten B und Daten D in dem SCM120 . Zusätzlich kann die Blockvorrichtungsschnittstelle22 Byte-Adressen, die von der Speichervorrichtungsschnittstelle20 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 SCM120 geschrieben wurden. - Eine oder mehrere Schreibabschlussangaben werden nach Abschließen der Schreibvorgänge an die Blockvorrichtungsschnittstelle
22 zurückgegeben. Die Blockvorrichtungsschnittstelle22 kann eine Schreibabschlussangabe an die Blockvorrichtungsschnittstelle12 des Hosts101 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 Speichervorrichtungsschnittstelle20 stattdessen die aktualisierten byteadressierbaren physischen Adressen an die Speichervorrichtungsschnittstelle10 des Hosts101 bereitstellen. - Die Leseanforderung C wird ebenfalls durch die Blockvorrichtungsschnittstelle
12 des Hosts101 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 Blockvorrichtungsschnittstelle12 paketiert die Anforderung als Lesebefehl C neu und sendet den Lesebefehl C an die Blockvorrichtungsschnittstelle22 der Vorrichtung111 . Die Blockvorrichtungsschnittstelle22 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 SCM120 bereitstellt. Die blockadressierbaren Daten C werden aus dem SCM120 gelesen und an die Blockvorrichtungsschnittstelle22 zurückgegeben, welche die Daten an die Blockvorrichtungsschnittstelle12 des Hosts101 weiterleitet, um den Befehl abzuschließen. In manchen Fällen können Daten C in einem Speicher der Vorrichtung111 , wie dem Speicher116 , gepuffert werden, bevor die Daten an den Host101 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 Speichervorrichtungsschnittstelle20 und die Blockvorrichtungsschnittstelle22 auf den SCM120 zugreifen, ohne ein Logisch-zu-physisch-Abbildungsmodul zu verwenden. - Beispiele für Seitentabellen
-
3 ist ein Beispiel einer Seitentabelle16 gemäß einer oder mehreren Ausführungsformen. Die Seitentabelle16 kann zum Beispiel durch die Prozessorschaltungsanordnung102 des Hosts101 erstellt werden, welche die Speichervorrichtungsschnittstelle10 in2 ausführt. In manchen Implementierungen kann die Prozessorschaltungsanordnung102 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 Seitentabelle16 andere Informationen als in dem Beispiel von3 gezeigt einschließen kann, wie zum Beispiel Statistikinformationen. Die Seitentabelle16 kann zum Beispiel in dem Speicher106 des Hosts101 oder in einem Speicher der MMU104 oder einem anderen Speicher der Prozessorschaltungsanordnung102 gespeichert sein. - Wie in
3 gezeigt, werden virtuelle Adressen verschiedenen Daten zugewiesen, auf die durch die Prozessorschaltungsanordnung102 zugegriffen wird, und die Seitentabelle16 gibt einen Zugriffstyp für die Daten und eine physische Adresse, an der die Daten entweder in dem Speicher106 oder dem SCM120 der Vorrichtung111 gespeichert sind, an. Zum Beispiel werden byteadressierbare Daten für die virtuellen Adressen A und C in der Seitentabelle16 in dem SCM120 an den physischen Adressen SCM 1 bzw. SCM 2 gespeichert. Die Daten für die virtuellen Adressen A und C sind auch in der Seitentabelle16 als Nur-Lese-Zugriff aufweisend angegeben. In dieser Hinsicht kann die Speichervorrichtungsschnittstelle20 der Vorrichtung111 in manchen Implementierungen ein Nur-Lese-Basisadressregister (Nur-Lese-BAR) der Speichervorrichtungsschnittstelle10 des Hosts101 verfügbar machen. Der Zugriff auf die in der Seitentabelle16 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 Vorrichtung111 einen Abschnitt des BAR als einen lesbaren und beschreibbaren Adressbereich verfügbar machen, der auf einen Speicher der Vorrichtung111 , wie den Speicher116 in1 , abgebildet wird. In solchen Implementierungen kann der Abschnitt des BAR, der auf den SCM120 abgebildet wird, schreibgeschützt bleiben, während der dem Host101 verfügbar gemachte Abschnitt des BAR, der auf den Speicher116 abgebildet wird, byteadressierbare Schreib- und Lesevorgänge über die Speichervorrichtungsschnittstelle10 des Hosts101 ermöglichen kann. Dieser Lese-/Schreibabschnitt des BAR, der auf den Speicher116 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 Speicher116 abgebildet wird, vor Datenverlust aufgrund einer Stromunterbrechung mit einem Kondensator oder einer Batterie geschützt werden, die es der Steuerschaltungsanordnung112 ermöglichen kann, Daten von dem BAR-abgebildeten Abschnitt des Speichers116 nach einem Stromverlust an der Vorrichtung111 zu dem SCM120 zu übertragen. - In dem Beispiel von
3 werden nach einem Empfangen einer Schreibanforderung für in der Seitentabelle16 dargestellte Daten, wie für die virtuellen Adressen B und D, die Daten für die Schreibanforderung in dem Puffer107 des Speichers106 gespeichert. Dies ist in dem Beispiel von3 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 Speicher106 angegeben sind. Die Speichervorrichtungsschnittstelle10 in2 kann die Seitentabelle16 aktualisieren, nachdem byteadressierbare Daten, die in den Seiten oder Blöcken eingeschlossen sind, die den virtuellen Adressen B und D entsprechen, in dem Puffer107 des Speichers106 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 Puffer107 modifiziert oder aus dem Puffer107 gelesen werden. Wie unten unter Bezugnahme auf4 detaillierter erörtert, bleibt der Status solcher Daten Lesen/Schreiben, bis die Daten aus dem Puffer107 in den SCM120 entleert werden. -
4 ist ein Statusdiagramm für einen Seitentabelleneintrag in der Seitentabelle16 von3 , wie einen Eintrag für eine der virtuellen Adressen A, B, C oder D gemäß einer oder mehreren Ausführungsformen. Wie in4 gezeigt, beginnt der Eintrag in einem Anfangsstatus mit Nur-Lese-Zugriff für eine physische Adresse in dem SCM120 . Die physische Adresse kann einer Adresse eines BAR entsprechen, das von der Vorrichtung111 an die Speichervorrichtungsschnittstelle10 des Hosts101 bereitgestellt wird. Dies ermöglicht es der Speichervorrichtungsschnittstelle10 , direkt auf die Adresse in dem SCM120 zuzugreifen, um Daten zu lesen, ohne ein OS des Hosts101 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 Blockvorrichtungsschnittstelle12 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 MMU104 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 Hosts101 abgerufen und in dem Puffer107 des Speichers106 in dem Host101 gespeichert. Die vorherige oder veraltete Version des Blocks kann in dem SCM120 bleiben, aber der modifizierte Block oder die modifizierte Seite in dem Puffer107 ist die aktuelle oder gültige Version der Daten für die virtuelle Adresse. Die Speichervorrichtungsschnittstelle10 oder die Blockvorrichtungsschnittstelle12 aktualisiert auch die Seitentabelle16 , 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 Puffer107 des Speichers106 geschrieben wurden. - In manchen Implementierungen kann die Speichervorrichtungsschnittstelle
10 oder die Blockvorrichtungsschnittstelle12 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 Puffer107 gespeichert werden, ohne zuerst den Block oder die Seite von der Vorrichtung111 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 Speicher106 gelesen werden, während sich der Eintrag in dem zweiten Status befindet. Die Speichervorrichtungsschnittstelle10 kann sich als Reaktion auf Lese- und Schreibanforderungen auf den Eintrag in der Seitentabelle16 beziehen, um die byteadressierbaren Daten zu modifizieren oder zu lesen, die der virtuellen Adresse entsprechen, die in dem Speicher106 gespeichert ist. Das temporäre Speichern der Daten in dem Speicher106 kann normalerweise einen schnelleren Schreibvorgang ermöglichen, als dies durch Schreiben der Daten in den SCM120 möglich wäre. In dieser Hinsicht kann das Puffern der modifizierten byteadressierbaren Daten in dem Speicher106 vorteilhaft sein, wenn die gepufferten Daten bald wiederverwendet werden, da sie auch schnell aus dem Speicher106 gelesen werden können. Daten, die in dem Speicher106 gepuffert sind, können auch schneller gelesen werden als Daten, die aus dem SCM120 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 SCM120 , dessen Schreiblatenz größer als seine Leselatenz ist. Die vorstehende Verwendung sowohl einer Blockvorrichtungsschnittstelle als auch einer Speichervorrichtungsschnittstelle mit der Seitentabelle16 und das Puffern geschriebener Daten in dem Puffer107 kann auch eine effizientere Anordnung bereitstellen als das Umschalten des Zugriffs eines BAR des SCM120 von Nur-Lesen auf Lesen/Schreiben oder das Umschalten oder temporäre Modifizieren einer einzelnen Schnittstelle des SCM120 , um byteadressierte und blockadressierte Daten aufzunehmen. Ein Verschieben von Schreibvorgängen in den SCM120 kann die Leistung des Systems, einschließlich des Hosts101 und der Vorrichtung111 , verbessern, indem den Schreibvorgängen ermöglicht wird, schneller in dem Speicher106 des Hosts101 zu erfolgen, und indem die aggregierten oder modifizierten Blöcke zu einem späteren Zeitpunkt in den SCM120 geschrieben werden, wenn die Schreiblatenz in den SCM120 weniger kritisch für von der Prozessorschaltungsanordnung102 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 Blockvorrichtungsschnittstelle12 über die Blockvorrichtungsschnittstelle22 der Vorrichtung111 aus dem Puffer107 in den SCM120 entleert oder ausgelagert. Die Blockvorrichtungsschnittstelle12 des Hosts101 aktualisiert den Eintrag, sodass der Zugriff auf die virtuelle Adresse nicht verfügbar oder gesperrt ist, während die Daten in den SCM120 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 Speicher106 nicht modifizieren, bevor der Zugriff auf die entleerten Daten in dem SCM120 auf Nur-Lesen zurückgesetzt wird, was zum Lesen einer alten oder veralteten Version der Daten führen könnte. Die Verwendung des Speichers106 zum temporären Puffern von Schreibanforderungen stellt eine asynchrone Speicherung von Daten bereit, wobei das Schreiben der Daten in den SCM120 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 Seitentabelle16 ermöglicht, dass die Daten konsistent bleiben. - Wie in
4 gezeigt, kehrt der Eintrag in den ersten Status des Nur-Lese-Zugriffs in dem SCM120 zurück, nachdem der Entleerungs- oder Auslagerungsvorgang abgeschlossen ist. In manchen Implementierungen gibt die Blockvorrichtungsschnittstelle22 der Vorrichtung111 eine Befehlsabschlussangabe an die Blockvorrichtungsschnittstelle12 des Hosts101 zurück, um den Abschluss des Entleerungsbefehls anzugeben. Wie oben unter Bezugnahme auf2 erörtert, kann die Blockvorrichtungsschnittstelle22 der Vorrichtung111 die Speichervorrichtungsschnittstelle20 der Vorrichtung111 mit den byteadressierbaren Adressen für in den SCM120 geschriebene Daten für einen Schreibvorgang aktualisieren. Die Speichervorrichtungsschnittstelle20 der Vorrichtung111 kann dann die Speichervorrichtungsschnittstelle10 des Hosts101 mit den neuen byteadressierbaren Adressen für die entleerten Daten aktualisieren, sodass die Speichervorrichtungsschnittstelle10 die Einträge in der Seitentabelle mit den neuen Adressen für die entleerten Daten in dem SCM120 aktualisieren kann. In anderen Implementierungen kann die Blockvorrichtungsschnittstelle12 des Hosts101 aktualisierte byteadressierbare Adressen von der Blockvorrichtungsschnittstelle22 der Vorrichtung111 empfangen, welche die Blockvorrichtungsschnittstelle12 zum Aktualisieren der Seitentabelle verwenden kann. - Beispielprozesse
-
5 ist ein Flussdiagramm für einen Seitentabellenerstellungsprozess gemäß einer oder mehreren Ausführungsformen. Der Prozess von5 kann zum Beispiel durch die Prozessorschaltungsanordnung102 des Hosts101 , der die Speichervorrichtungsschnittstelle10 ausführt, durchgeführt werden. - In Block
502 greift die Speichervorrichtungsschnittstelle10 auf das BAR des SCM120 zu. In manchen Implementierungen kann die Steuerschaltungsanordnung112 der Vorrichtung111 , welche die Speichervorrichtungsschnittstelle20 ausführt, der Speichervorrichtungsschnittstelle10 des Hosts101 ein Nur-Lese-BAR des SCM120 verfügbar machen. Dies ermöglicht, dass die Speichervorrichtungsschnittstelle10 Größen- und Datentypinformationen für den SCM120 aufweist, um virtuelle Adressen des Hosts101 auf physische Adressen des SCM120 abzubilden, und einen direkten Speicherzugriff des SCM120 durch den Host101 für Lesevorgänge ermöglicht. Zusätzlich kann die Vorrichtung111 in manchen Implementierungen auch einen Lese-/Schreibabschnitt des BAR verfügbar machen, der auf den Speicher116 abgebildet wird. - In Block
504 erstellt die Speichervorrichtungsschnittstelle10 eine Seitentabelle, die eine Vielzahl von Einträgen einschließt, die Speicherorten in dem SCM120 entsprechen. Genauer entsprechen die Einträge in der Seitentabelle dem verfügbar gemachten BAR der Vorrichtung111 . Die Seitentabelle kann Einträge für verschiedene virtuelle Adressen und die abgebildeten physischen Adressen in dem SCM120 einschließen. In dieser Hinsicht kann die erstellte Seitentabelle Einträge für virtuelle Adressen oder Seiten einschließen, die es der Speichervorrichtung10 ermöglichen, einen physischen Ort in dem SCM120 der Vorrichtung111 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 Seitentabelle16 , die oben unter Bezugnahme auf3 erörtert wurde. - In Block
506 setzt die Speichervorrichtungsschnittstelle10 die Vielzahl von Einträgen in der Seitentabelle auf Nur-Lesen. Wie oben erörtert, können Daten viel schneller aus dem SCM120 gelesen werden, als Daten derselben Größe in den SCM120 geschrieben werden können. Der byteadressierbare Zugriff auf den SCM120 ist daher auf Nur-Lese-Zugriff beschränkt. Wie unten unter Bezugnahme auf6 detaillierter erörtert, werden Schreibvorgänge in den SCM120 von der Blockvorrichtungsschnittstelle12 des Hosts101 gehandhabt, sodass Daten effizienter in den SCM120 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 SCM120 die Leistung des Systems, einschließlich des Hosts101 und der Vorrichtung111 , verbessern, indem den Schreibvorgängen ermöglicht wird, schneller in dem Speicher106 des Hosts101 zu erfolgen, und die aggregierten oder modifizierten Daten zu einem späteren Zeitpunkt in den SCM120 geschrieben werden, wenn die Auswirkung der Schreiblatenz des SCM120 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 von6 kann zum Beispiel durch die Prozessorschaltungsanordnung102 des Hosts101 durchgeführt werden, welche die Speichervorrichtungsschnittstelle10 und die Blockvorrichtungsschnittstelle12 ausführt. - In Block
602 empfängt die Speichervorrichtungsschnittstelle10 oder die Blockvorrichtungsschnittstelle12 eine Schreibanforderung zum Schreiben von Daten, die einem Eintrag in einer Seitentabelle (z. B. der Seitentabelle16 in3 ) entsprechen. Die Schreibanforderung kann zum Beispiel von einer Anwendung stammen, die von der Prozessorschaltungsanordnung102 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 Prozessorschaltungsanordnung102 resultieren. Zum Beispiel können in einem L1-, L2- oder L3-Cache der Prozessorschaltungsanordnung102 eine oder mehrere Cache-Zeilen entleert oder ausgelagert werden. - In Block
604 werden Daten für die Schreibanforderung unter Verwendung der Blockvorrichtungsschnittstelle12 in den Puffer107 des Speichers106 der Vorrichtung111 geschrieben. Wie oben erörtert, kann die Schreibanforderung zum Speichern byteadressierbarer Daten durch die Blockvorrichtungsschnittstelle12 des Hosts101 nach Umleitung von der Speichervorrichtungsschnittstelle10 oder von einem anderen Modul, wie von einem Abschnitt eines OS des Hosts101 , empfangen werden. Zum Beispiel kann die Schreibanforderung in Fällen, in denen die Schreibanforderung anfänglich durch die Speichervorrichtungsschnittstelle10 empfangen wird, einen Fehlerbehandler auslösen, der die Schreibanforderung zu der Blockvorrichtungsschnittstelle12 umleitet. Wie oben unter Bezugnahme auf2 erörtert, kann die Blockvorrichtungsschnittstelle12 auch Schreibanforderungen für blockadressierbare Daten empfangen. - Die byteadressierbaren Daten, die in den Puffer
107 für die Schreibanforderung geschrieben werden, die in Block602 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 Vorrichtung111 gelesen und in dem Puffer107 zum Durchführen der Schreibanforderung gespeichert werden. Wie oben erwähnt, dauern Schreibvorgänge in dem SCM120 viel länger als Lesevorgänge für eine gegebene Datenmenge. Das Durchführen von Schreibanforderungen in dem Puffer107 kann dazu führen, dass weniger Gesamtschreibvorgänge in den SCM120 durchgeführt werden und dass die kleineren Zwischenschreibvorgänge schneller in dem Speicher106 abgeschlossen werden, um die Effizienz und Leistung des Hosts101 und der Vorrichtung111 zu verbessern. Schreibanforderungen für Daten, die bereits in Einheiten einer Block- oder Seitengröße sind, können in manchen Implementierungen auch in dem Speicher106 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 SCM120 geschrieben werden. In anderen Ausführungsformen können stattdessen blockadressierbare Daten in den SCM120 geschrieben werden, ohne das Schreiben solcher Daten in den SCM120 unter Verwendung des Speichers106 zu verschieben. Eine solche Anordnung kann in Fällen bevorzugt werden, in denen die Größe des Speichers106 begrenzt ist. - In Block
606 ändert die Blockvorrichtungsschnittstelle12 den Eintrag für die virtuelle Adresse in der Seitentabelle von Nur-Lese-Zugriff auf sowohl Lese- als auch Schreibzugriff. Die Blockvorrichtungsschnittstelle12 ändert auch den Eintrag für die erste virtuelle Adresse, um auf einen Ort oder eine physische Adresse in dem Speicher106 zu zeigen, wo Daten für die erste virtuelle Adresse geschrieben wurden. Wie oben unter Bezugnahme auf das Seitentabelleneintrags-statusdiagramm von4 erörtert, können die in dem Speicher106 gepufferten Daten in den Speicher106 geschrieben und daraus gelesen werden, bis sie in seitengroßen oder blockgroßen Einheiten aus dem Speicher106 in den SCM120 entleert oder ausgelagert werden. Die Modifikation und das Entleeren von Daten aus dem Speicher106 wird unten unter Bezugnahme auf den Prozess von8 detaillierter erörtert. -
7 ist ein Flussdiagramm für einen Leseanforderungsprozess für byteadressierbare Daten gemäß einer oder mehreren Ausführungsformen. Der Prozess von7 kann zum Beispiel durch die Prozessorschaltungsanordnung102 des Hosts101 , welche die Speichervorrichtungsschnittstelle10 ausführt, durchgeführt werden. - In Block
702 wird eine Leseanforderung durch die Speichervorrichtungsschnittstelle10 an dem Host101 empfangen, um byteadressierbare Daten zu lesen, die einem Eintrag in einer Seitentabelle (z. B. der Seitentabelle16 in3 ) entsprechen. Die Leseanforderung kann zum Beispiel von einer Anwendung stammen, die von der Prozessorschaltungsanordnung102 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 Prozessorschaltungsanordnung102 ausgeführt wird, um Daten in einen Cache der Prozessorschaltungsanordnung102 zu laden. - In Block
704 verwendet die Speichervorrichtungsschnittstelle10 eine Seitentabelle, um zu bestimmen, ob sich die angeforderten Daten in dem Speicher106 befinden. Wenn ja, liest die Speichervorrichtungsschnittstelle10 die Daten in Block706 aus dem Speicher106 . Wird dagegen bestimmt, dass sich die angeforderten byteadressierbaren Daten in dem SCM120 befinden, sendet die Speichervorrichtungsschnittstelle10 in Block708 eine Leseanforderung an die Speichervorrichtungsschnittstelle20 der Vorrichtung111 , um direkt auf die angeforderten Daten von dem SCM120 zuzugreifen. Im Gegensatz zu dem Datenzugriff, der von der Blockvorrichtungsschnittstelle12 des Hosts101 durchgeführt wird, erfordern die Leseanforderungen, die von der Speichervorrichtungsschnittstelle10 des Hosts101 durchgeführt werden, möglicherweise keine Verwendung des OS des Hosts101 . - 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 SCM120 für byteadressierbare Daten vorteilhaft zu nutzen, ohne dass der größere Leistungsnachteil des Schreibens von byteadressierbaren Daten in den SCM120 auftritt. Dies kann einen kleineren Hauptspeicher, der von dem Host101 verwendet wird, (z. B. Speicher106 ) oder Speicherungsplatzeinsparungen für den Hauptspeicher des Hosts, der innerhalb oder außerhalb des Hosts101 sein kann, ermöglichen. Wie oben erwähnt, kann der Speicher106 in manchen Implementierungen einen DRAM oder SRAM einschließen, der einen schnelleren Lese- und Schreibzugriff als der SCM120 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 von8 kann zum Beispiel durch die Prozessorschaltungsanordnung102 durchgeführt werden, welche die Blockvorrichtungsschnittstelle12 ausführt. - In Block
802 empfängt die Blockvorrichtungsschnittstelle12 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 Prozessorschaltungsanordnung102 ausgeführt werden, die geänderte Cache-Zeilen aus einem Cache der Prozessorschaltungsanordnung102 entleeren oder auslagern können. - In Block
804 liest die Blockvorrichtungsschnittstelle12 einen Datenblock aus dem SCM120 für den Block oder die Seite von Daten, die durch den Seitentabelleneintrag dargestellt werden. Der Block oder die Seite wird in dem Puffer107 des Speichers106 gespeichert. Zusätzlich aktualisiert die Blockvorrichtungsschnittstelle12 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 Speicher106 befinden. - In Block
806 modifiziert die Blockvorrichtungsschnittstelle12 die byteadressierbaren Daten für die Schreibanforderung, indem sie die Daten in den Block oder die Seite schreibt, der/die in dem Puffer107 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 Speicher106 gespeichert wird. - In Block
808 gibt die Blockvorrichtungsschnittstelle12 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 SCM120 nicht verfügbar sind. Wie oben in Bezug auf das Statusdiagramm von4 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 SCM120 entleert werden. - In Block
810 sendet die Blockvorrichtungsschnittstelle12 einen Schreibbefehl an die Vorrichtung111 , um den modifizierten Datenblock aus dem Puffer107 in den SCM120 zu entleeren oder auszulagern. In manchen Implementierungen kann die Blockvorrichtungsschnittstelle12 warten, bis eine Schwellenwertanzahl von Blöcken in dem Puffer107 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 Blockvorrichtungsschnittstelle22 der Vorrichtung111 in den SCM120 entleert werden. In anderen Fällen kann die Blockvorrichtungsschnittstelle12 einen aggregierten Datenblock als Reaktion auf das Erreichen des Datenwerts eines Blocks in dem Puffer107 entleeren, wie wenn neue Schreibdaten in dem Puffer107 für eine Seite oder einen Block gesammelt werden, die/der zuvor nicht in der Vorrichtung111 gespeichert wurde. In noch anderen Implementierungen kann das Entleeren eines Blocks oder von Blöcken von Daten aus dem Puffer107 von einer verbleibenden Speicherungskapazität des Puffers107 abhängen. Zum Beispiel kann die Blockvorrichtungsschnittstelle12 als Reaktion auf das Erreichen von 80 % der Speicherungskapazität des Puffers107 einen oder mehrere Datenblöcke aus dem Puffer107 entleeren. - In Block
812 setzt die Blockvorrichtungsschnittstelle12 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 von4 . Der Nur-Lese-Zugriff kann einem Nur-Lese-BAR des SCM120 entsprechen, der von der Speichervorrichtungsschnittstelle10 verwendet wird. Der Abschluss des Entleerungsvorgangs kann durch die Blockvorrichtungsschnittstelle12 basierend auf dem Empfang einer Befehlsabschlussangabe von der Blockvorrichtungsschnittstelle22 der Vorrichtung111 bestimmt werden. - In Block
814 aktualisiert die Blockvorrichtungsschnittstelle12 oder die Speichervorrichtungsschnittstelle10 den Eintrag für den entleerten Datenblock in der Seitentabelle, um auf einen Ort in dem SCM120 zu zeigen, an dem der Block entleert wurde. In dieser Hinsicht kann die neue physische Adresse der Daten in dem SCM120 durch die Blockvorrichtungsschnittstelle12 als Teil der Entleerungsbefehlsabschlussangabe empfangen werden oder kann alternativ durch die Speichervorrichtungsschnittstelle10 über einen Aktualisierungsprozess der Speichervorrichtungsschnittstelle20 der Vorrichtung111 empfangen werden. -
9 ist ein Flussdiagramm für einen Mehrfachschnittstellenprozess einer Vorrichtung, einschließlich des SCM, gemäß einer oder mehreren Ausführungsformen. Der Prozess von9 kann zum Beispiel von der Steuerschaltungsanordnung112 der Vorrichtung111 durchgeführt werden. - In Block
902 verwendet die Steuerschaltungsanordnung112 die Blockvorrichtungsschnittstelle22 zum Empfangen von Schreibbefehlen von dem Host101 , um Daten in Blöcken in den SCM120 zu schreiben. Wie oben erörtert, wird die Blockvorrichtungsschnittstelle22 auch verwendet, um blockadressierbare Daten aus dem SCM120 zu lesen. - Zusätzlich verwendet die Steuerschaltungsanordnung
112 die Speichervorrichtungsschnittstelle20 in Block904 zum Empfangen von Lesebefehlen von dem Host101 , um byteadressierbare Daten aus dem SCM120 zu lesen. Die Verwendung von zwei Schnittstellen an der Vorrichtung111 ermöglicht, dass der SCM120 von dem Host101 als Hauptspeicher zum Lesen byteadressierbarer Daten und als nichtflüchtige Speicherung für Datenblöcke verwendet wird. - In Block
906 macht die Speichervorrichtungsschnittstelle20 dem Host101 einen Nur-Lese-BAR für den SCM120 verfügbar. Wie oben erwähnt, kann das verfügbar gemachte BAR für die Vorrichtung111 auch einen Lese-/Schreibabschnitt einschließen, der sich in dem Speicher116 der Vorrichtung111 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 Prozessorschaltungsanordnung102 an dem Host101 ermöglichen, eine Seitentabelle zu erstellen und zu aktualisieren, die virtuelle Adressen, die von Anwendungen verwendet werden, die von der Prozessorschaltungsanordnung102 ausgeführt werden, auf physische Adressen in dem SCM120 abbildet. -
10 ist ein Flussdiagramm für einen Vorrichtungsblockschreibprozess gemäß einer oder mehreren Ausführungsformen. Der Prozess von10 kann zum Beispiel von der Steuerschaltungsanordnung112 der Vorrichtung111 durchgeführt werden. - In Block
1002 von10 empfängt die Steuerschaltungsanordnung112 der Vorrichtung111 einen Schreibbefehl von dem Host101 über die Blockvorrichtungsschnittstelle22 , um einen oder mehrere Datenblöcke in den SCM120 zu schreiben. In manchen Implementierungen kann die Steuerschaltungsanordnung112 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 SCM120 gesendet wird. In anderen Implementierungen verwendet die Steuerschaltungsanordnung112 möglicherweise kein solches Logisch-zu-physisch-Abbildungsmodul. - Nach dem Empfangen einer Bestätigung des Abschlusses des Schreibvorgangs in dem SCM
120 aktualisiert die Steuerschaltungsanordnung112 die Speichervorrichtungsschnittstelle20 in Block1004 mit den physischen Adressen für die geschriebenen Daten. In manchen Implementierungen werden die aktualisierten Adressen über die Speichervorrichtungsschnittstelle20 der Vorrichtung111 mit dem Host101 geteilt, sodass die Speichervorrichtungsschnittstelle10 an dem Host101 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)
- 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.
- 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. - 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. - 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. - Verfahren gemäß
Anspruch 1 , weiterhin aufweisend ein Umleiten der Schreibanforderung von der Speichervorrichtungsschnittstelle zu einer Blockvorrichtungsschnittstelle zur Durchführung der Schreibanforderung. - Verfahren gemäß
Anspruch 1 , wobei die Speichervorrichtungsschnittstelle auf ein Basisadressregister (BAR) des SCM zugreift, um Daten aus dem SCM zu lesen. - 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. - 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. - 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.
- 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. - 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. - Vorrichtung gemäß
Anspruch 9 , wobei die Steuerschaltungsanordnung weiterhin eingerichtet ist, um die Durchführung eines über die Speichervorrichtungsschnittstelle empfangenen Schreibbefehls zu sperren. - 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. - 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.
- 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. - 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. - 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. - 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. - Host gemäß
Anspruch 14 , wobei die Speichervorrichtungsschnittstelle auf ein Basisadressregister (BAR) des SCM zugreift, um Daten aus dem SCM zu lesen. - 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.
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)
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)
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 |
-
2019
- 2019-11-13 US US16/683,095 patent/US11016905B1/en active Active
-
2020
- 2020-06-15 CN CN202080007137.3A patent/CN113243007A/zh active Pending
- 2020-06-15 DE DE112020000183.0T patent/DE112020000183T5/de active Pending
- 2020-06-15 WO PCT/US2020/037713 patent/WO2021096566A1/en active Application Filing
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 |