CN113243007A - 存储级存储器访问 - Google Patents
存储级存储器访问 Download PDFInfo
- Publication number
- CN113243007A CN113243007A CN202080007137.3A CN202080007137A CN113243007A CN 113243007 A CN113243007 A CN 113243007A CN 202080007137 A CN202080007137 A CN 202080007137A CN 113243007 A CN113243007 A CN 113243007A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- memory
- device interface
- read
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 8
- 238000011010 flushing procedure Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 2
- 208000031339 Split cord malformation Diseases 0.000 description 69
- 238000004645 scanning capacitance microscopy Methods 0.000 description 69
- 238000013068 supply chain management Methods 0.000 description 69
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 21
- 238000013507 mapping Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000010410 layer Substances 0.000 description 2
- 238000001465 metallisation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101150028668 APO1 gene Proteins 0.000 description 1
- 101100152436 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) TAT2 gene Proteins 0.000 description 1
- 101100108340 Solanum commersonii SCM1 gene Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/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
- 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
本发明公开了接收写入请求以写入与页表中的多个条目中的第一条目相对应的字节可寻址数据,并且该字节可寻址数据被写入主机存储器的缓冲器中。接收读取请求以读取与该页表中的该多个条目中的第二条目相对应的字节可寻址数据,并且使用存储器设备接口向设备发送读取命令以从该设备的存储级存储器(SCM)中读取该字节可寻址数据。根据另一方面,该设备的控制电路使用块设备接口从主机接收命令以在该SCM中读取和写入块中的数据。该控制电路还使用存储器设备接口从该主机接收读取命令以从该SCM中读取字节可寻址数据。
Description
背景技术
存储级存储器(SCM)最近已被开发为一种能够提供细粒度的数据访问(即,字节可寻址或高速缓存行尺寸)的非易失性存储选项。此外,相比于传统的非易失性存储设备,诸如使用闪存存储器的固态驱动器(SSD)或使用旋转磁盘的硬盘驱动器(HDD),SCM通常提供更短的数据访问延迟。SCM可包括例如存储器,诸如磁阻随机存取存储器(MRAM)、相变存储器(PCM)和电阻式RAM(RRAM)。
尽管SCM可允许对数据进行字节可寻址访问(即,以小于页尺寸或块尺寸为单位),但向SCM写入数据的时间可能比从SCM中读取数据的时间长得多。这减缓了SCM用作一种更经济和高功效的存储器替代形式,该存储器常规用于主机存储器,诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。
附图说明
通过下文所述的具体实施方式并且结合附图,本公开的实施方案的特征和优势将变得更加显而易见。提供附图和相关联描述是为了说明本公开的实施方案,而不是限制所要求保护的范围。
图1是根据一个或多个实施方案的包括主机和包括存储级存储器(SCM)的设备的示例性环境的框图。
图2是示出根据一个或多个实施方案的读取请求和写入请求的处理的框图。
图3是根据一个或多个实施方案的页表的示例。
图4是根据一个或多个实施方案的页表条目的状态图。
图5是根据一个或多个实施方案的页表创建过程的流程图。
图6是根据一个或多个实施方案的写入请求过程的流程图。
图7是根据一个或多个实施方案的用于字节可寻址数据的读取请求过程的流程图。
图8是根据一个或多个实施方案的用于从主机存储器到SCM的刷新过程的流程图。
图9是根据一个或多个实施方案的用于包括SCM的设备的多接口过程的流程图。
图10是根据一个或多个实施方案的用于包括SCM的设备的块写入过程的流程图。
具体实施方式
在以下具体实施方式中阐述了许多具体细节,以便提供对本公开的彻底理解。然而,对于本领域普通技术人员显而易见的是,可在不具有这些具体细节中的一些细节的情况下实践所公开的各种实施方案。在其他情况下,并未详细示出众所周知的结构和技术以避免不必要地模糊各种实施方案。
示例性***环境
图1是根据一个或多个实施方案的包括主机101和设备111的示例性环境的框图。主机101与设备111通信以从设备111检索数据并将数据存储在设备111中。如下文进一步所述,设备111可经由相应的设备接口用作存储器设备和/或用作主机101的存储设备。主机101和设备111可为单独的设备,或者可作为单个电子设备的一部分容纳在一起,该单个电子设备诸如例如服务器、计算设备、嵌入式设备、台式计算机、膝上型电脑或笔记本电脑,或者是另一种类型的电子设备,诸如平板计算机、智能电话、网络媒体播放器、便携式媒体播放器、电视、数码相机或数码录像机(DVR)。在其他具体实施中,主机101可为客户端计算机或存储控制器,并且设备111可为网络中(诸如云存储网络或数据中心中)的存储器/存储服务器或存储器/存储节点。如本文所用,主机可指能够向设备发出命令以存储数据或检索数据的设备。就这一点而言,主机101可包括能够执行应用程序并与其他存储器/存储设备通信的另一存储设备,诸如智能数据存储设备。
如图1所示,设备111包括存储级存储器(SCM)120,该SCM提供可在小于页尺寸或块尺寸的字节级(即,高速缓存行尺寸)访问的数据的非易失性存储。SCM120可包括,例如,硫族化物RAM(C-RAM)、相变存储器(PCM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向通用存储器(OUM)、电阻式RAM(RRAM)、铁电存储器(FeRAM)、磁阻RAM(MRAM)、快速NAND和/或3D-XPoint存储器。此类SCM提供比常规非易失性存储设备(诸如闪存存储器或旋转磁盘)更快的数据读取和写入。在一些具体实施中,除SCM120之外,设备111还可包括其他类型的非易失性存储设备,诸如旋转磁盘或闪存存储器。
尽管SCM可提供比常规形式的非易失性存储设备更快的数据读取和写入,但SCM写入数据的时间通常比读取数据的时间更长。这在SCM中使用地址间接寻址的情况下(诸如用于损耗均衡)尤其明显。如上所述,SCM的较长写入延迟可防止将SCM用作易失性本地存储器的替代品,诸如更昂贵且更高功耗的动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。根据本公开的一个方面,设备111将基地址寄存器(BAR)暴露给主机101,使得可使用存储器设备接口发送用于字节可寻址数据(例如,用于高速缓存行或小于页尺寸或块尺寸)的读取命令,而使用块设备接口从主机101发送写入命令以将数据写入较大的数据块。如下文更详细地讨论,待写入SCM120中的数据在被刷新到SCM120之前可在主机101的存储器106的缓冲器107中聚合或修改。主机101随后可发送写入命令用于在SCM120中写入所聚合或修改的数据块。这种布置减少了在SCM120中读取和写入数据的延迟,使得SCM120可用于存储原本可存储在存储器106中的字节可寻址数据。
在图1的示例中,主机101包括用于执行计算机可执行指令诸如主机101的操作***(OS)的处理器电路102。处理器电路102可包括诸如用于执行指令的一个或多个处理器的电路,并且可包括,例如,中央处理单元(CPU)、图形处理单元(GPU)、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬连线逻辑、模拟电路和/或它们的组合。在一些具体实施中,处理器电路102可包括片上***(SoC)。就这一点而言,图1的示例示出了存储器管理单元(MMU)104是处理器电路102的一部分或包括在与处理器电路102相同的壳体中。本领域的普通技术人员将理解,在一些具体实施中,处理器电路102、存储器106和/或设备接口108可被组合成单个部件或壳体。其他具体实施可不包括MMU。如本文所用,MMU可被认为是处理器电路。
在图1的示例中,处理器电路102可经由MMU104访问存储器106以执行指令,诸如用于执行用以从设备111读取数据或向设备111写入数据的块设备接口或存储器设备接口的指令。就这一点而言,并且如下文更详细地讨论,存储器106的缓冲器107可存储用于写入请求的字节可寻址数据,该字节可寻址数据被聚合或缓冲以达到SCM120的块尺寸。
存储器106用作主机101的主存储器,并且可包括,例如,易失性RAM(诸如DRAM或SRAM)、非易失性RAM或其他固态存储器。尽管本文中的描述通常是指固态存储器,但应理解,固态存储器可包括各种类型的存储器设备中的一种或多种,诸如闪存集成电路、C-RAM、PC-RAM或PRAM、可编程金属化单元RAM(PMC-RAM或PMCm)、OUM、RRAM、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器(例如,两层或更多层)或它们的任何组合)、NOR存储器、EEPROM、FeRAM、MRAM、其他离散的非易失性存储器(NVM)芯片或它们的任何组合。在一些具体实施中,存储器106可位于主机101的外部,但用作主机101的主存储器。
处理器电路102还使用MMU104经由设备接口108访问设备111的SCM120。在一些具体实施中,MMU104可访问页表,该页表将处理器电路102所使用的虚拟地址转换成物理地址(例如,字节地址),该物理地址指示该虚拟地址的数据将要存储在存储器106或SCM120中或从存储器106或SCM120检索的位置。就这一点而言,MMU104可跟踪字节可寻址数据的位置。此外,MMU104可执行用于访问字节可寻址数据的存储器设备接口(例如,图2中的存储器设备接口10)。
设备接口108允许主机101经由总线或互连器110与设备111进行通信。在一些具体实施中,设备接口108可使用诸如***部件快速互连(PCIe)、以太网或光纤信道之类的标准经由总线或互连器110与设备111的主机接口118进行通信。如下文更详细地讨论,总线或互连器110可包括一种总线或互连器,其能够同时允许通过存储器设备接口执行用于字节可寻址数据的命令和通过块设备接口执行用于块可寻址数据的命令。在其他实施方案中,主机101和设备111可经由两条或更多条总线或互连器进行通信,每条总线或互连器提供存储器设备接口、块设备接口或两者。
就这一点而言,处理器电路102使用多个逻辑接口从设备111的SCM120读取数据并向其写入数据。为了写入数据并读取块可寻址数据,主机101使用块设备接口或存储设备接口(诸如,例如非易失性存储器接口规范(NVMe))与设备111进行接口连接,该NVMe可例如由处理器电路102所执行的OS驱动器来实现。为了读取字节可寻址数据,主机101使用存储器设备接口与设备111进行接口连接,该存储器设备接口诸如可由处理器电路102执行的PCIe基地址寄存器(BAR)接口、Gen-Z、开放相干加速器处理器接口(OpenCAPI)或加速器高速缓存一致性互连(CCIX)。在一些具体实施中,存储器设备接口可由MMU104实现,或者由处理器电路102的其他电路诸如硬件加速器来实现。
如图1所示,设备111包括主机接口118、控制电路112、存储器116和SCM120。主机接口118允许设备111经由总线或互连器110与主机101的设备接口108进行通信。在一些具体实施中,主机接口118可使用诸如PCIe、以太网或光纤信道之类的标准与主机101的设备接口108进行通信。
此外,控制电路112使用多个逻辑接口来接收和执行来自主机101的读取和写入命令,以访问SCM120中的数据。为了读取和写入块可寻址数据,控制电路112使用块设备接口与主机101进行接口连接,该块设备接口可包括例如NVMe接口。为了读取字节可寻址数据,控制电路112使用存储器设备接口与主机101进行接口连接。该存储器设备接口可包括,例如,PCIe BAR接口、Gen-Z、OpenCAPI或CCIX。
控制电路112可包括诸如用于执行指令的一个或多个处理器的电路,并且可包括,例如,CPU、GPU、微控制器、DSP、ASIC、FPGA、硬连线逻辑、模拟电路和/或它们的组合。在一些具体实施中,控制电路112可包括SoC,使得主机接口118和存储器116中的一者或两者可与控制电路112组合在单个芯片中。与上面讨论的主机101的处理器电路102一样,在一些具体实施中,设备111的控制电路112可包括单独部件,诸如用于实现存储器设备接口和块设备接口的单独的硬件加速器。
设备111的存储器116可包括,例如,易失性RAM诸如DRAM、非易失性RAM或其他固态存储器。控制电路112可访问存储器116以执行指令,诸如设备111的固件,该固件可包括用于实现存储器设备接口和块设备接口的指令。此外,控制电路112可访问存储器116以获取在执行设备111的固件时所使用的数据、待写入SCM120中的数据和/或已从SCM120中读取的数据。
本领域的普通技术人员将会知道,其他具体实施可包括比图1中所示的那些元件更多或更少的元件,并且可以在其他环境中实现本文所讨论的过程。例如,其他环境可不包括主机101中的MMU,可包括用于实现存储器设备接口的单独的MMU或硬件加速器,或者可包括设备111中除SCM120之外的不同数量的SCM或不同类型的非易失性存储设备。
图2是示出根据一个或多个实施方案的主机101和设备111对读取请求和写入请求的处理的示例性框图。如图2所示,存储器设备接口10接收读取请求A和写入请求B,而块设备接口12接收读取请求C和写入请求D。该读取和写入请求可来自由处理器电路102执行的应用程序。在图2的示例中,存储器设备接口10由处理器电路102的MMU104实现,并且块设备接口12由处理器电路102执行的主机101的OS驱动器实现。
写入请求B最初由存储器设备接口10接收,但由存储器设备接口10重定向到块设备接口12,因为存储器设备接口10仅用来处理用于字节可寻址数据的读取请求,而不是写入请求。在一些具体实施中,由于映射至SCM120的存储器被标记为只读,MMU104将对写入请求的控制交给主机101的OS。如上所述,SCM120通常执行读取命令比执行写入命令更快。在本公开中,SCM120可用作主机101的本地存储器或部分DRAM替代品以用于读取请求,而写入请求在主机101的存储器106中执行。这通常允许在主机101处使用较小尺寸的本地存储器,可降低包括主机101和设备111的整个***的功耗和成本。
如本文所用,读取和写入请求是指在字节级进行的数据访问(即,字节可寻址数据),诸如由主机101的处理器电路102执行的应用程序进行的高速缓存行请求。另一方面,读取和写入命令是指从主机101发送到设备111以在来自存储器设备接口10的读取命令存在的情况下访问字节级的数据,或者访问来自块设备接口12的块级的数据(即,页可寻址数据或块可寻址数据)的命令。页尺寸或块尺寸可对应于由主机101的OS管理的虚拟存储器中的数据单位。由图2中的块设备接口12和22在设备111中访问的数据以该页尺寸或块尺寸为单位进行读取和写入。块尺寸或页尺寸的一些示例可包括512字节、4KB、8KB、2MB或4MB。相比之下,由图2中的存储器设备接口10和20访问的字节可寻址数据允许以字节为单位读取数据,包括从设备111的SCM120中读取单个字节的数据。
如图2所示,用于字节可寻址数据A的读取请求A由存储器设备接口10重新封装为读取命令A,该读取命令A被发送到设备111的存储器设备接口20以从SCM120检索字节可寻址数据A。设备111处的存储器设备接口20接收读取命令A并使用可选的逻辑到物理映射模块24来识别SCM120中存储字节可寻址数据A的物理地址。在其他具体实施中,逻辑到物理映射模块24可被省略,诸如在SCM120不使用存储器技术的地址间接寻址的具体实施中,所述存储器技术诸如,例如,损耗均衡以在整个SCM120中更均匀地分布写入。在此类具体实施中,可由图1中的控制电路112执行的存储器设备接口20可在SCM120中执行读取操作A。在执行读取操作A时,字节可寻址数据A返回到存储器设备接口20,并且可以在返回到主机101的存储器设备接口10以完成读取命令A之前临时存储在缓冲器中,诸如图1中的设备111的存储器116中的缓冲器。
由设备111的控制电路112执行的存储器设备接口20被配置为仅接收和执行用于字节可寻址数据的读取命令。存储器设备接口20所接收的写入命令的执行可在设备111处被阻止或触发错误。此类错误可能会也可能不会报告回主机101。
在图2的示例中,写入请求B由主机101的存储器设备接口10接收。在一些情况下,写入请求B可包括存储字节可寻址数据的请求,诸如来自高速缓存刷新命令的数据,以从主机101的处理器电路102的一个或多个高速缓存(例如,从L1/L2/L3高速缓存)中刷新一个或多个高速缓存行。在其他情况下,写入请求B可包括存储块可寻址数据或页可寻址数据的请求,诸如来自由处理器电路102执行的应用程序的数据。存储器设备接口10将写入请求B识别为写入请求,并且作为响应,将写入请求B重定向到块设备接口12。在一些具体实施中,由存储器设备接口10接收的写入请求可触发故障处理程序,该故障处理程序允许主机101的OS经由块设备接口12来处理该写入请求。
在写入请求B将存储字节可寻址数据的情况下,块设备接口12使用缓冲器107来聚合或修改包括待写入SCM120的该字节可寻址数据的数据块的一个或多个部分。块设备接口12发送用于数据块的读取命令,该数据块包括待写入设备111的字节可寻址数据。设备111的块设备接口22接收该块的读取命令并对SCM120执行读取操作,并且将包括该字节可寻址数据的读取块返回到主机101的块设备接口12。块设备接口12将所读取的数据块缓冲在缓冲器107中,并且修改所缓冲的块的一个或多个字节可寻址部分以用于写入请求B。在一些情况下,当该块存储在缓冲器107中时,还可以执行用于包括在该所缓冲的块中的字节可寻址数据的附加写入请求。
然后,块设备12发送用于包括该字节可寻址数据的所修改的块的写入命令,以将用于写入请求的数据从缓冲器107刷新到SCM120。在一些情况下,该写入命令可包括已被修改或写入的附加块,诸如用于写入请求D的数据。设备111的块设备接口22接收该写入命令,并且使用可选的逻辑到物理映射模块24来识别SCM120中存储包括用于写入请求B和D的数据B和D的一个或多个块的一个或多个物理地址。如上所述,在其他具体实施中,逻辑到物理映射模块24可被省略,诸如在SCM120不使用地址间接寻址的具体实施中。在此类具体实施中,可由图1中的控制电路112执行的块设备接口22可识别SCM120中用于执行写入操作B和D的一个或多个地址。在执行写入操作B和D时,块设备接口22将包括数据B和数据D的一个或多个数据块存储在SCM120中。此外,块设备接口22可利用已在SCM120中写入数据的位置来更新由存储器设备接口20用于包括在一个或多个数据块中的数据的字节地址。
在完成写入操作之后,一个或多个写入完成指示被返回到块设备接口22。块设备接口22可将写入完成指示转发或发送到主机101的块设备接口12,以指示一个或多个写入命令已完成,并且除了为数据提供块可寻址位置之外,还可为存储在写入操作中的数据提供新的字节可寻址物理地址。在其他具体实施中,存储器设备接口20可以替代地向主机101的存储器设备接口10提供更新的字节可寻址物理地址。
读取请求C也由主机101的块设备接口12接收。用于读取请求C的待检索数据按照页或块的形式寻址,这与用于字节可寻址数据的请求相反,诸如上文所讨论的读取请求A。块设备接口12将该请求重新打包为读取命令C并将读取命令C发送到设备111的块设备接口22。就其本身而言,块设备接口22通过使用可选的逻辑到物理映射模块24来执行读取命令C,该逻辑到物理映射模块提供用于从SCM120读取块可寻址数据C的物理地址。块可寻址数据C从SCM120读取并返回到块设备接口22,该块设备接口将数据传递到主机101的块设备接口12上以完成命令。在一些情况下,在将数据发送到主机101之前,可将数据C缓冲在设备111的存储器诸如存储器116中。
如本领域的普通技术人员将理解的,其他具体实施可包括与图2的示例中所示的那些不同的部件或模块。例如,其他具体实施可不包括逻辑到物理映射模块24,使得存储器设备接口20和块设备接口22在不使用逻辑到物理映射模块的情况下访问SCM120。
页表示例
图3是根据一个或多个实施方案的页表16的示例。页表16可例如由执行图2中的存储器设备接口10的主机101的处理器电路102创建。在一些具体实施中,处理器电路102可维护多个页表,诸如用来映射用于字节可寻址数据的虚拟地址并且还用来映射用于块可寻址数据的虚拟地址的那些页表。此外,本领域的普通技术人员将会理解,页表16可包括除图3的示例中所示之外的其他信息,诸如,例如统计信息。页表16可存储在例如主机101的存储器106中或MMU104的存储器中或处理器电路102的其他存储器中。
如图3所示,虚拟地址被分配给由处理器电路102访问的不同数据,并且页表16指示该数据的访问类型和该数据存储在设备111的存储器106或SCM120中的物理地址。例如,页表16中用于虚拟地址A和C的字节可寻址数据分别存储在SCM120中的物理地址SCM1和SCM2处。虚拟地址A和C的数据也在页表16中被指示为具有只读访问。就这一点而言,在一些具体实施中,设备111的存储器设备接口20可将只读基地址寄存器(BAR)暴露给主机101的存储器设备接口10。页表16中表示的字节可寻址数据的访问最初为只读,并且保持只读,直到数据被写入或以其他方式修改。
在一些具体实施中,设备111的存储器设备接口20可将该BAR的一部分暴露为映射到设备111的存储器(诸如图1中的存储器116)的可读和可写地址范围。在此类具体实施中,映射到SCM120的BAR的该部分可保持只读,而映射到存储器116的暴露给主机101的BAR的该部分可允许经由主机101的存储器设备接口10进行字节可寻址写入和读取。
映射到存储器116的BAR的该读取/写入部分可包括,例如,电池支持的或电源故障安全的易失性DRAM或其部分,以有效地提供非易失性存储设备或非易失性存储器。例如,可使用电容器或电池保护映射到存储器116的BAR的该读取/写入部分免受因电力中断而导致的数据丢失,该电容器或电池可允许控制电路112在设备111处的电源丢失之后将数据从存储器116的该BAR映射部分传输到SCM120。
在图3的示例中,在已经接收到用于页表16中表示的数据(诸如用于虚拟地址B和D)的写入请求之后,用于写入请求的数据被存储在存储器106的缓冲器107中。图3的示例中指示了这一点,其中虚拟地址B和D的允许访问为读取/写入访问,并且存储该数据的物理地址在存储器106中被分别指示为Mem.1和Mem.2。在对应于虚拟地址B和D的页或块中包括的字节可寻址数据已在存储器106的缓冲器107中被重写或修改之后,图2中的存储器设备接口10可更新页表16。如果需要,所缓冲的页或块中包括的字节可寻址数据可由发出用于数据的原始写入请求的相同应用程序或由不同应用程序在缓冲器107中修改或从缓冲器107中读取。如下文参考图4更详细地讨论,此类数据的状态保持读取/写入,直到该数据从缓冲器107刷新到SCM120。
图4是根据一个或多个实施方案的图3的页表16中的页表条目的状态图,诸如用于虚拟地址A、B、C或D中的一者的条目。如图4所示,该条目以对SCM120中的物理地址进行只读访问的初始状态开始。该物理地址可对应于由设备111提供给主机101的存储器设备接口10的BAR的地址。这允许存储器设备接口10直接访问SCM120中的地址以读取数据,而无需使用主机101的OS。
在接收到用于该条目所表示的数据的写入请求之后,该条目移动到第二状态。如上文所讨论的,该写入请求可由存储器设备接口10和/或块设备接口12作为软件事件来处理。与可能完全依赖于MMU104的硬件解决方案相比,这通常允许主机侧缓冲的设计和实现更加灵活。
在第二状态下,包括用于写入请求的数据的块或页已由主机101的块设备接口12检索并存储在主机101中的存储器106的缓冲器107中。块的先前或过时版本可保留在SCM120中,但是缓冲器107中的所修改的块或页是用于虚拟地址的数据的当前或有效版本。存储器设备接口10或块设备接口12还更新页表16以改变对读取/写入的访问,并将用于条目的虚拟地址映射到已在存储器106的缓冲器107中写入数据的物理地址。
在一些具体实施中,存储器设备接口10或块设备接口12可识别先前没有对块或页进行写入,或者该写入请求是对块或页的第一写入。在此类具体实施中,可将用于块或页的待写入数据存储在缓冲器107中,而无需首先从设备111中检索块或页。然后,在所缓冲的块或页上执行该写入请求。
当该条目处于第二状态时,用于存储在存储器106中的条目的块或页可由发出写入请求的相同应用程序或由不同应用程序修改或重写。在该条目处于第二状态时,也可从存储器106中的物理地址读取与该条目相对应的数据,诸如所缓冲的块或页内的字节可寻址数据。存储器设备接口10可响应于修改或读取与存储在存储器106中的虚拟地址相对应的字节可寻址数据的读取和写入请求而指代页表16中的条目。将数据临时存储在存储器106中通常可允许比通过将数据写入SCM120可能实现的写入操作更快的写入操作。就这一点而言,当所缓冲的数据被很快重新使用时,存储器106中所修改的字节可寻址数据的缓冲可能是有利的,因为其也可从存储器106快速读取。缓冲在存储器106中的数据也可比从SCM120读取的数据更快地读取。这对于高速缓存行尤其有益,因为高速缓存行通常在初始写入之后不久被读取或修改。
此外,在一个写入操作中聚合或修改存储器106中的数据并使用单独的块设备接口来刷新所聚合或修改的数据块比在SCM120中进行许多更小的写入操作更有效,SCM120具有比其读取延迟更大的写入延迟。与将SCM120的BAR的访问从只读切换为读取/写入或者切换或暂时修改SCM120的单个接口以适应字节寻址数据和块寻址数据相比,块设备接口和存储器设备接口两者与页表16的上述使用以及写入数据在缓冲器107中的缓冲也可提供更有效的布置。延迟对SCM120的写入可通过以下途径来改善包括主机101和设备111的***的性能,即,允许在主机101的存储器106中更快地进行写入,并在稍后将所聚合或修改的块写入SCM120,此时SCM120的写入延迟对于由处理器电路102正在执行的可能需要等待直到数据在继续执行之前已被写入的过程或线程而言不太关键。
在用于条目的数据已由块设备接口12修改或聚合成一个或多个块之后,该用于条目的数据由块设备接口12经由设备111的块设备接口22从缓冲器107刷新或降级到SCM120。主机101的块设备接口12更新条目,使得当数据正被刷新到SCM120时,对虚拟地址的访问不可用或被阻止。在一些具体实施中,在页表中指示该虚拟地址不可用可包括移除或删除用于虚拟地址的条目或者标记该条目不可用或过时。这可确保数据的一致性,使得不同的应用程序在SCM120中的刷新数据的访问返回到只读之前不修改存储器106中的数据,这可导致读取数据的旧版本或过时版本。使用存储器106来暂时缓冲写入请求提供了数据的异步存储,其中延迟向SCM120的数据写入以改善每秒输入/输出操作(IOPS)方面的***性能,而对页表16中的访问许可的前述使用允许该数据保持一致。
如图4所示,在刷新或降级操作已经完成后,条目返回到SCM120中的只读访问的第一状态。在一些具体实施中,设备111的块设备接口22将命令完成指示返回到主机101的块设备接口12以指示刷新命令的完成。如上文参考图2所讨论的,设备111的块设备接口22可利用写入SCM120中的数据的字节可寻址地址更新设备111的存储器设备接口20以用于写入操作。然后,设备111的存储器设备接口20可利用刷新数据的新的字节可寻址地址更新主机101的存储器设备接口10,使得存储器设备接口10可利用SCM120中的刷新数据的新地址更新页表中的条目。在其他具体实施中,主机101的块设备接口12可从设备111的块设备接口22接收更新的字节可寻址地址,该块设备接口12可用于更新页表。
示例性过程
图5是根据一个或多个实施方案的页表创建过程的流程图。图5的过程可由例如执行存储器设备接口10的主机101的处理器电路102执行。
在块502中,存储器设备接口10访问SCM120的BAR。在一些具体实施中,执行存储器设备接口20的设备111的控制电路112可将SCM120的只读BAR暴露给主机101的存储器设备接口10。这允许存储器设备接口10具有SCM120的尺寸和数据类型信息,以用于将主机101的虚拟地址映射到SCM120的物理地址,并且允许主机101对SCM120进行直接存储器访问以用于读取操作。此外,在一些具体实施中,设备111还可暴露映射到存储器116的BAR的读取/写入部分。
在块504中,存储器设备接口10创建页表,该页表包括与SCM120中的存储器位置相对应的多个条目。更详细地,该页表中的条目对应于设备111的暴露BAR。该页表可包括用于SCM120中的不同虚拟地址和映射的物理地址的条目。就这一点而言,所创建的页表可包括用于虚拟地址或页的条目,该条目允许存储器设备10确定设备111的SCM120中的用于比页尺寸或块尺寸更小的字节可寻址数据的物理位置。所创建的页表还可包括对物理地址的允许访问的指示,如上文参考图3所讨论的页表16的情况。
在块506中,存储器设备接口10将页表中的多个条目设置为只读。如上文所讨论的,从SCM120读取数据比将相同大小的数据写入SCM120快得多。因此,对SCM120的字节可寻址访问被限制为只读访问。如下文参考图6更详细地讨论,对SCM120的写入由主机101的块设备接口12处理,使得数据以块尺寸(例如,512字节、4KB、8KB、2MB或4MB)为单位更有效地写入SCM120,而不是以小于块尺寸为单位更多次的写入,诸如用于单个字节的数据。此外,延迟对SCM120的写入可通过以下途径来改善包括主机101和设备111的***的性能,即,允许在主机101的存储器106中更快地进行写入,并在稍后将聚合或修改的数据写入SCM120,此时对SCM120的写入延迟的影响不会延迟过程或线程的执行。
图6是根据一个或多个实施方案的写入请求过程的流程图。图6的过程可由例如执行存储器设备接口10和块设备接口12的主机101的处理器电路102来执行。
在块602中,存储器设备接口10或块设备接口12接收写入请求以写入与页表(例如,图3中的页表16)中的条目相对应的数据。该写入请求可来自例如由处理器电路102执行的应用程序。该写入请求用于小于页尺寸或块尺寸的数据,因此是字节可寻址的。在此类情况下,该写入请求可源自对处理器电路102的高速缓存的刷新或降级。例如,处理器电路102的L1、L2或L3高速缓存可具有被刷新或降级的一个或多个高速缓存行。
在块604中,使用块设备接口12将用于写入请求的数据写入设备111的存储器106的缓冲器107中。如上文所讨论的,在从存储器设备接口10或从另一模块(诸如从主机101的OS的一部分)重定向之后,存储字节可寻址数据的写入请求可由主机101的块设备接口12接收。例如,在存储器设备接口10初始接收到写入请求的情况下,写入请求可触发将该写入请求重定向到块设备接口12的故障处理程序。如上文参考图2所讨论的,块设备接口12还可接收用于块可寻址数据的写入请求。
在块602中接收的用于写入请求的写入缓冲器107中的字节可寻址数据可被聚合成页尺寸或块尺寸的单位,或者包括字节可寻址数据的块或页的当前版本可从设备111读取并存储在缓冲器107中以执行该写入请求。如上所述,对于给定的数据量,在SCM120中执行写入操作要比执行读取操作花费更长的时间。在缓冲器107中执行写入请求可导致对SCM120执行较少的整体写入,并且导致在存储器106中更快地完成较小的中间写入,以提高主机101和设备111的效率和性能。在一些具体实施中,还可在存储器106中缓冲已经以块尺寸或页尺寸为单位的数据的写入请求,以通过减少执行写入操作的延迟来改善该写入操作的性能。如上所述,更快地完成写入请求可允许过程和线程继续执行而不是等待数据写入SCM120。在其他实施方案中,块可寻址数据可替代地写入SCM120,而不会使用存储器106延迟将此类数据写入SCM120。在存储器106的尺寸受限的情况下,可优选此种布置。
在块606中,块设备接口12将页表中用于虚拟地址的条目从只读访问更改为读取访问和写入访问两者。块设备接口12还更改用于第一虚拟地址的条目以指向存储器106中写入用于该第一虚拟地址的数据的位置或物理地址。如上文参考图4的页表条目状态图所讨论的,缓冲在存储器106中的数据可在存储器106中被写入和读取,直到该数据以页尺寸或块尺寸为单位从存储器106被刷新或降级到SCM120。下文参考图8的过程,更详细地讨论来自存储器106的数据的修改和刷新。
图7是根据一个或多个实施方案的用于字节可寻址数据的读取请求过程的流程图。图7的过程可由例如执行存储器设备接口10的主机101的处理器电路102来执行。
在块702中,由主机101处的存储器设备接口10接收读取请求,以读取与页表(例如,图3中的页表16)中的条目相对应的字节可寻址数据。该读取请求可来自例如由处理器电路102执行的应用程序。该读取请求可用于小于页尺寸或块尺寸的数据,因此是字节可寻址的。在一些情况下,读取请求可源自由处理器电路102执行以将数据加载到处理器电路102的高速缓存中的过程或线程。
在块704中,存储器设备接口10使用页表来确定所请求的数据是否位于存储器106中。如果是,则存储器设备接口10在块706中从存储器106读取数据。另一方面,如果确定所请求的字节可寻址数据位于SCM120中,则块708中的存储器设备接口10向设备111的存储器设备接口20发送读取请求,以直接从SCM120访问所请求的数据。与由主机101的块设备接口12执行的数据访问不同,由主机101的存储器设备接口10执行的读取请求可能不需要使用主机101的OS。
如上文所讨论的,通过允许对SCM120的BAR进行只读访问,通常可以利用SCM120对字节可寻址数据的相对快速的读取访问,而不会引起将字节可寻址数据写入SCM120的更大性能损失。这可以允许主机101使用较小的主存储器(例如,存储器106)或为主机的主存储器节省存储空间,该主存储器可位于主机101的内部或外部。如上所述,在一些具体实施中,存储器106可包括DRAM或SRAM,该DRAM或SRAM可提供比SCM120更快的读取和写入访问,但对于给定的数据存储量而言具有更高的成本和功耗。
图8是根据一个或多个实施方案的用于从本地存储器到SCM的刷新过程的流程图。图8的过程可由例如执行块设备接口12的处理器电路102来执行。
在块802中,块设备接口12接收写入请求以写入与页表中的条目相对应的字节可寻址数据。待写入的字节可寻址数据可包括由页表条目表示的页或块内的数据。此类写入数据可来自例如由处理器电路102执行的过程或线程,该过程或线程可从处理器电路102的高速缓存中刷新或降级脏的高速缓存行。
在块804中,块设备接口12从SCM120读取用于由页表条目表示的数据块或数据页的数据块。该块或页存储在存储器106的缓冲器107中。此外,块设备接口12更新页表以指示用于所缓冲的块或页的条目或虚拟地址具有读取/写入访问,并且用于条目的数据位于存储器106中的物理地址处。
在块806中,块设备接口12通过将数据写入缓冲器107中缓冲的块或页来修改用于写入请求的字节可寻址数据。如上所述,当块或页存储在存储器106中时,还可以对相同的字节可寻址数据或所缓冲的块或页的其他字节可寻址部分执行附加写入请求和读取请求。
在块808中,块设备接口12在页表中指示用于所缓冲的块或页的数据不可用于读取和写入数据,以准备将所修改的块刷新到SCM120。如上文关于图4的状态图所述,指示用于条目或虚拟地址的数据在页表中不可用可通过不允许在数据刷新到SCM120时对其进行读取或写入来帮助确保数据的一致性。
在块810中,块设备接口12向设备111发送写入命令以将所修改的数据块从缓冲器107刷新或降级到SCM120。在一些具体实施中,块设备接口12可等待直到阈值数量的块已聚合在缓冲器107中,或者可在经由设备111的块设备接口22将一个或多个所修改的块刷新到SCM120之前等待预定的时间量而不访问块中的数据。在其他情况下,块设备接口12可响应于在缓冲器107中达到块的数据值而刷新所聚合的数据块,诸如当用于先前未存储在设备111中的页或块的新写入数据被收集在缓冲器107中时。在其他具体实施中,从缓冲器107刷新一个或多个数据块可取决于缓冲器107的剩余存储容量。例如,块设备接口12可响应于达到缓冲器107的存储容量的80%而从缓冲器107刷新一个或多个数据块。
在块812中,块设备接口12响应于刷新操作的完成而在页表中将用于所修改的数据块的条目设置为只读。这对应于在图4的示例性状态图中从第三状态返回到第一状态。只读访问可对应于由存储器设备接口10使用的SCM120的只读BAR。刷新操作的完成可由块设备接口12基于从设备111的块设备接口22接收到命令完成指示来确定。
在块814中,块设备接口12或存储器设备接口10更新页表中用于所刷新的数据块的条目,以指向SCM120中刷新该块的位置。就这一点而言,SCM120中的数据的新物理地址可作为刷新命令完成指示的一部分由块设备接口12接收,或者另选地可经由设备111的存储器设备接口20的更新过程由存储器设备接口10接收。
图9是根据一个或多个实施方案的包括SCM的设备的多接口过程的流程图。图9的过程可由例如设备111的控制电路112来执行。
在块902中,控制电路112使用块设备接口22从主机101接收写入命令以将块中的数据写入SCM120。如上文所讨论的,块设备接口22还用于从SCM120读取块可寻址数据。
此外,控制电路112在块904中使用存储器设备接口20从主机101接收读取命令以从SCM120读取字节可寻址数据。在设备111处使用两个接口允许SCM120被主机101用作读取字节可寻址数据的主存储器以及用作数据块的非易失性存储设备。
在块906中,存储器设备接口20将用于SCM120的只读BAR暴露给主机101。如上所述,设备111的暴露BAR还可包括位于设备111的存储器116中的读取/写入部分。该BAR可经由例如PCIe总线或互连器暴露,该PCIe总线或互连器允许使用存储器设备接口来执行用于字节可寻址数据的命令,并且还允许使用块设备接口(诸如,例如NVMe)来执行用于块可寻址数据的命令。BAR的使用可允许主机101处的处理器电路102创建和更新页表,该页表将由处理器电路102执行的应用程序所使用的虚拟地址映射到SCM120中的物理地址。
图10是根据一个或多个实施方案的设备块写入过程的流程图。图10的过程可由例如设备111的控制电路112来执行。
在图10的块1002中,设备111的控制电路112经由块设备接口22从主机101接收写入命令,以在SCM120中写入一个或多个数据块。在一些具体实施中,控制电路112可使用逻辑到物理映射模块来确定用于在发送到SCM120的写入操作中写入用于写入命令的一个或多个块的位置。在其他具体实施中,控制电路112可不使用此类逻辑到物理映射模块。
在接收到对SCM120中写入操作完成的确认之后,控制电路112在块1004中使用所写入的数据的物理地址来更新存储器设备接口20。在一些具体实施中,更新的地址经由设备111的存储器设备接口20与主机101共享,使得主机101处的存储器设备接口10可更新页表。
如上文所讨论的,使用SCM读取字节可寻址数据并在块中写入SCM可允许该SCM至少替换主机的主存储器中的一些主存储器,同时减少SCM的更大写入延迟的影响。此外,使用主机的主存储器来暂时缓冲已被修改的字节可寻址数据并更新用于所缓冲的数据的页表可有助于确保不会从SCM读取数据的旧版本或过时版本。
其他实施方案
本领域的普通技术人员将会知道,结合本文公开的示例所描述的各种例示性逻辑块、模块和过程可以实现为电子硬件、计算机软件或两者的组合。此外,前述过程可体现在计算机可读介质上,该计算机可读介质使处理器或控制电路执行或实施某些功能。
为了清楚地说明硬件和软件的这种可互换性,上面已经在其功能方面对各种例示性部件、块和模块进行了总体描述。将此功能性实现为硬件还是软件取决于特定应用和施加在整个***的设计约束。本领域的普通技术人员可以针对每个特定应用以不同方式实现所描述的功能,但这种实现决策不应被解释为导致脱离本公开的范围。
结合本文公开的示例所描述的各种例示性逻辑块、单元、模块、处理器电路和控制电路可以用被设计用于执行本文所述功能的通用处理器、DSP、ASIC、FPGA或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件部件或它们的任何组合来实现或执行。通用处理器可以是微处理器,但是在替代方案中,电路可以是任何常规处理器、控制器、微控制器或状态机。处理器或控制电路还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、SoC、结合DSP内核的一个或多个微处理器,或任何其他此类配置。
结合本文公开的示例而描述的方法或过程的活动可直接体现于硬件中、由处理器或控制电路执行的软件模块中或两者的组合中。该方法或算法的步骤也可以以与示例中提供的顺序另选的顺序执行。软件模块可驻留在RAM存储器、闪存存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动介质、光学介质或本领域中已知的任何其他形式的存储介质中。示例性存储介质联接到处理器或控制电路,使得该电路可从该存储介质读取信息和向该存储介质写入信息。在替代方案中,存储介质可以是处理器或控制电路的组成部分。电路和存储介质可驻留在ASIC或SoC中。
提供了本公开的示例性实施方案的上述描述,以使得任何本领域普通技术人员能够制作或使用本公开的实施方案。对这些示例的各种修改对于本领域普通技术人员而言将是显而易见的,并且在不脱离本公开的实质或范围的情况下,本文公开的原理可以应用于其他示例。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。此外,在以下权利要求书中以“A和B中的至少一者”的形式使用的语言应理解为意指“仅A、仅B或A和B两者”。
Claims (20)
1.一种用于与包括存储级存储器(SCM)的设备进行接口连接的方法,所述方法包括:
创建页表,所述页表包括与所述设备的所述SCM中的存储器位置相对应的多个条目;
在所述页表中将所述多个条目设置为只读;
接收写入请求以写入与所述多个条目中的第一条目相对应的字节可寻址数据;
将用于所述写入请求的所述字节可寻址数据写入主机的存储器的缓冲器中;
接收读取请求以读取与所述多个条目中的第二条目相对应的字节可寻址数据;以及
使用存储器设备接口向所述设备发送读取命令以读取用于所述读取请求的所述字节可寻址数据。
2.根据权利要求1所述的方法,还包括更改所述第一条目以指示读取和写入访问,以及指向所述主机的本地存储器中写入用于所述写入请求的所述字节可寻址数据的位置。
3.根据权利要求1所述的方法,还包括:
从所述SCM中读取用于所述第一条目的数据块;
将所读取的数据块存储在所述本地存储器的所述缓冲器中;
修改所述缓冲器中的所述数据块以执行所述写入请求;以及
使用块设备接口向所述设备发送写入命令,以将所修改的数据块从所述主机的所述存储器的所述缓冲器刷新到所述SCM。
4.根据权利要求3所述的方法,还包括:
指示所述页表中的用于所述第一条目的数据不可用于写入数据,以准备将所修改的数据块刷新到所述SCM;
响应于完成将所修改的数据块刷新到所述SCM,在所述页表中将所述第一条目设置为只读;以及
更新所述页表中的所述第一条目以指向所述SCM中刷新所修改的数据块的位置。
5.根据权利要求1所述的方法,还包括将所述写入请求从所述存储器设备接口重定向到块设备接口以执行所述写入请求。
6.根据权利要求1所述的方法,其中所述存储器设备接口访问所述SCM的基地址寄存器(BAR)以从所述SCM中读取数据。
7.根据权利要求1所述的方法,其中使用操作***(OS)在所述存储器的所述缓冲器中执行所述写入请求,并且在不使用所述OS的情况下使用所述存储器设备接口将所述读取命令发送到所述设备。
8.根据权利要求1所述的方法,还包括使用***部件快速互连(PCIe)经由所述存储器设备接口和块设备接口与所述设备进行通信。
9.一种设备,所述设备包括:
存储级存储器(SCM),所述SCM用于存储数据;和
控制电路,所述控制电路被配置为:
使用块设备接口从主机接收写入命令以将块中的数据写入所述SCM,以及从所述主机接收读取命令以从所述SCM中读取块中的数据;以及
使用存储器设备接口从所述主机接收读取命令以从所述SCM中读取字节可寻址数据。
10.根据权利要求9所述的设备,其中所述控制电路还被配置为经由所述存储器设备接口将所述设备的基地址寄存器(BAR)暴露给所述主机。
11.根据权利要求9所述的设备,其中所述控制电路还被配置为:
经由所述块设备接口从所述主机接收写入命令以在所述SCM中写入数据块;以及
更新由所述存储器设备接口用于包括在所述SCM中写入的所述数据块中的字节可寻址数据的地址。
12.根据权利要求9所述的设备,其中所述控制电路还被配置为阻止执行经由所述存储器设备接口接收的写入命令。
13.根据权利要求9所述的设备,其中所述控制电路还被配置为使用***部件快速互连(PCIe)经由所述存储器设备接口和所述块设备接口与所述主机进行通信。
14.一种主机,所述主机包括:
存储器,所述存储器用于存储数据;和
处理器电路,所述处理器电路被配置为:
接收写入请求以写入与页表中的多个条目中的第一条目相对应的数据;
将用于所述写入请求的数据写入本地存储器的缓冲器中;
接收读取请求以读取与所述页表中的所述多个条目中的第二条目相对应的数据;以及
使用存储器设备接口向设备发送读取命令,以从所述设备的存储级存储器(SCM)中读取用于所述读取请求的所述数据。
15.根据权利要求14所述的主机,其中所述处理器电路还被配置为更改所述页表中的所述第一条目以指示读取和写入访问,以及指向所述存储器中写入用于所述写入请求的数据的位置。
16.根据权利要求14所述的主机,其中所述处理器电路还被配置为:
从所述SCM中读取用于所述第一条目的数据块;
将所读取的数据块存储在所述存储器的所述缓冲器中;
修改所述缓冲器中的所述数据块以执行所述写入请求;以及
使用块设备接口向所述设备发送写入命令,以将所修改的数据块从所述存储器的所述缓冲器刷新到所述SCM。
17.根据权利要求14所述的主机,其中所述处理器电路还被配置为:
响应于准备将所修改的数据块刷新到所述SCM,指示所述页表中的所述第一条目不可用于写入数据;
响应于完成将所修改的数据块刷新到所述SCM,在所述页表中将所述第一条目设置为只读;以及
更新所述页表中的所述第一条目以指向所述SCM中刷新所修改的数据块的位置。
18.根据权利要求14所述的主机,其中所述处理器电路还被配置为将所述写入请求从所述存储器设备接口重定向到块设备接口以执行所述写入请求。
19.根据权利要求14所述的主机,其中所述存储器设备接口访问所述SCM的基地址寄存器(BAR)以从所述SCM中读取数据。
20.根据权利要求14所述的主机,其中所述处理器电路还被配置为:
使用所述主机的操作***(OS)在所述本地存储器的所述缓冲器中执行所述写入请求;以及
在不使用所述OS的情况下使用所述存储器设备接口向所述设备发送所述读取命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/683,095 | 2019-11-13 | ||
US16/683,095 US11016905B1 (en) | 2019-11-13 | 2019-11-13 | Storage class memory access |
PCT/US2020/037713 WO2021096566A1 (en) | 2019-11-13 | 2020-06-15 | Storage class memory access |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113243007A true CN113243007A (zh) | 2021-08-10 |
Family
ID=75845466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080007137.3A Pending CN113243007A (zh) | 2019-11-13 | 2020-06-15 | 存储级存储器访问 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11016905B1 (zh) |
CN (1) | CN113243007A (zh) |
DE (1) | DE112020000183T5 (zh) |
WO (1) | WO2021096566A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117008843A (zh) * | 2023-09-26 | 2023-11-07 | 苏州元脑智能科技有限公司 | 控制页链表构建装置和电子设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115521B (zh) * | 2019-06-19 | 2023-02-07 | 华为技术有限公司 | 数据访问方法及装置 |
US20210073129A1 (en) * | 2020-10-30 | 2021-03-11 | Intel Corporation | Cache line demote infrastructure for multi-processor pipelines |
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 | キオクシア株式会社 | 情報処理装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537592A (en) * | 1989-05-08 | 1996-07-16 | Alphatronix | System and method for reading and writing disks formatted for an operating system foreign to the host computer |
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 |
CN102662870A (zh) * | 2012-03-20 | 2012-09-12 | 武汉噢易科技有限公司 | 基于vfs层拦截读写请求的安卓操作***保护方法 |
US20180004438A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive |
US20180150404A1 (en) * | 2016-11-30 | 2018-05-31 | Dong-Gun KIM | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
US20190310796A1 (en) * | 2016-12-21 | 2019-10-10 | Hewlett-Packard Development Company, L.P. | Persistent memory updating |
Family Cites Families (139)
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 |
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 |
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 |
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 |
US20080313364A1 (en) | 2006-12-06 | 2008-12-18 | David Flynn | Apparatus, system, and method for remote direct memory access to a solid-state storage device |
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 |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (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 |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for 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 |
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 |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
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 |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
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 |
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 |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | 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 |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
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 |
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 |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
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 |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture 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 |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection 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) |
CN107391397B (zh) | 2011-09-30 | 2021-07-27 | 英特尔公司 | 支持近存储器和远存储器访问的存储器通道 |
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 |
US9619174B2 (en) | 2011-12-30 | 2017-04-11 | 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 |
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 |
WO2015167435A1 (en) | 2014-04-28 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Cache management |
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 |
US10482038B2 (en) | 2015-07-24 | 2019-11-19 | SK Hynix Inc. | Programmable protocol independent bar memory for SSD controller |
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 |
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 |
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 WO PCT/US2020/037713 patent/WO2021096566A1/en active Application Filing
- 2020-06-15 DE DE112020000183.0T patent/DE112020000183T5/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537592A (en) * | 1989-05-08 | 1996-07-16 | Alphatronix | System and method for reading and writing disks formatted for an operating system foreign to the host computer |
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 |
CN102662870A (zh) * | 2012-03-20 | 2012-09-12 | 武汉噢易科技有限公司 | 基于vfs层拦截读写请求的安卓操作***保护方法 |
US20180004438A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive |
US20180150404A1 (en) * | 2016-11-30 | 2018-05-31 | Dong-Gun KIM | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
US20190310796A1 (en) * | 2016-12-21 | 2019-10-10 | Hewlett-Packard Development Company, L.P. | Persistent memory updating |
Non-Patent Citations (1)
Title |
---|
翟佳;许建卫;谢辉;刘新春;邵宗有;历军;: "面向IO服务器的高性能存储器的实现与优化", 计算机工程与科学, no. 11, 15 November 2009 (2009-11-15), pages 17 - 20 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117008843A (zh) * | 2023-09-26 | 2023-11-07 | 苏州元脑智能科技有限公司 | 控制页链表构建装置和电子设备 |
CN117008843B (zh) * | 2023-09-26 | 2024-01-19 | 苏州元脑智能科技有限公司 | 控制页链表构建装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2021096566A1 (en) | 2021-05-20 |
US20210141736A1 (en) | 2021-05-13 |
DE112020000183T5 (de) | 2021-11-25 |
US11016905B1 (en) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572796B (zh) | 具有异构nvm类型的ssd | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
US11016905B1 (en) | Storage class memory access | |
KR101636634B1 (ko) | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 | |
KR101915073B1 (ko) | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 | |
TWI578156B (zh) | 非依電性隨機存取記憶磁碟 | |
US10496334B2 (en) | Solid state drive using two-level indirection architecture | |
US11580029B2 (en) | Memory system, computing system, and methods thereof for cache invalidation with dummy address space | |
US10180796B2 (en) | Memory system | |
US10191664B2 (en) | Memory system | |
US9977604B2 (en) | Memory system | |
CN110322914A (zh) | 非易失性文件更新介质 | |
US20170109277A1 (en) | Memory system | |
CN110597742A (zh) | 用于具有持久***存储器的计算机***的改进存储模型 | |
US10769062B2 (en) | Fine granularity translation layer for data storage devices | |
US20170109043A1 (en) | Memory system | |
US20170109072A1 (en) | Memory system | |
US11169918B2 (en) | Data access in data storage device including storage class memory | |
JP2023001885A (ja) | 記憶装置及びその動作方法 | |
Ware et al. | Architecting a hardware-managed hybrid DIMM optimized for cost/performance | |
US20240061786A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
US20220229552A1 (en) | Computer system including main memory device having heterogeneous memories, and data management method thereof | |
US9977605B2 (en) | Memory system | |
CN117609105A (zh) | 用于访问存储器页的版本中的数据的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |