CN111095223A - 通过存储器总线实现主动持久存储器的方法和系统 - Google Patents
通过存储器总线实现主动持久存储器的方法和系统 Download PDFInfo
- Publication number
- CN111095223A CN111095223A CN201880057785.2A CN201880057785A CN111095223A CN 111095223 A CN111095223 A CN 111095223A CN 201880057785 A CN201880057785 A CN 201880057785A CN 111095223 A CN111095223 A CN 111095223A
- Authority
- CN
- China
- Prior art keywords
- command
- volatile memory
- memory
- data
- address
- 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
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/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
- 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/0608—Saving storage space on storage systems
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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
- G06F3/0641—De-duplication techniques
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种便于主动持久存储器的实施例。在操作期间,所述系统经由存储器总线通过存储设备的非易失性存储器接收操作所述非易失性存储器上的数据的命令,其中所述存储器总线连接至易失性存储器。所述系统通过所述非易失性存储器的控制器执行所述命令。
Description
技术领域
本公开通常涉及数据存储领域。更具体地,本公开涉及通过存储器总线实现主动持久存储的方法和系统。
背景技术
互联网和电子商务的涌现继续创造大量的数字内容。已经创建了各种存储系统来访问和存储这些数字内容。在传统存储系统的服务器中,中央处理器(CPU)可以通过存储器总线连接到易失性存储器(如动态随机存取存储器(DRAM)),双直插式存储器模块(DIMM)),并可进一步通过其他协议连接到非易失性存储器(例如外围存储设备、固态驱动器和NAND闪存存储器)。例如,CPU可以使用外围组件高速互连(Peripheral ComponentInterconnect express,PCIe)或非易失性存储器快速(Non-Volatile Memory express,NVMe)协议连接到例如NAND固态驱动器(SSD)的PCle设备。CPU也可以使用串行高级技术附件(SATA)协议连接到硬盘驱动器(HDD)。易失性存储器(例如DRAM)可称为“内部存储器”,通常涉及高性能和低容量,而非易失性存储器(例如SSD/HDD)可以被称为“外部存储器”,通常涉及高容量但性能低于DRAM。
存储级存储器(SCM)是一种混合外部存储器/内部存储器,两者都连接到主板的存储器插槽(像传统的DRAM)并提供持久存储(如传统SSD/HDD非易失性存储,其中数据在断电的情况下保留)。将SCM直接映射到系统地址空间可以为应用程序提供统一的存储器I/O接口,并且可以允许应用程序在没有重大变化的情况下采用SCM。然而,访问地址空间中的持久内存可能会带来一些挑战。涉及移动、复制、扫描或操作数据块的操作可能会导致高速缓存污染,由此有用的数据可能会被这些操作清除。这可能导致效率下降(例如,性能下降)。此外,由于持久内存通常比DRAM具有更高的容量,因此使用持久存储时,高速缓存污染问题可能会带来更重大的挑战。此外,由于持久存储通常比DRAM慢,操作(例如,操作大块数据)可能会占用更多的CPU周期。因此,虽然SCM具有外部存储器和内部存储器的双重优点,但存在一些可能降低系统效率的挑战。
发明内容
一个便于主动持久存储器的实施例。在操作过程中,系统通过经由存储器总线的存储设备的非易失性存储器接收命令来操作所述非易失性存储器上的数据,其中,所述存储器总线连接至所述非易失性存储器。所述系统通过非易失性存储器的控制器执行所述命令。
在一些实施例中,由控制器接收所述命令。系统通过控制器接收已执行命令状态的请求。系统由控制器根据命令是否已完成生成对状态请求的响应。
在一些实施例中,由中央处理单元接收状态请求。由控制器执行命令,使得中央处理器继续执行不涉及操作非易失性存储器上的数据的操作。
在一些实施例中,操作非易失性存储器上数据的命令表示如下中的一个或多个:将数据从源地址复制到目的地址的命令;用第一值填充非易失性存储器区域的命令;扫描非易失性存储器的区域以获取第二值的命令,并响应于确定偏移,返回所述偏移;以及为非易失性存储器的某个区域的每个字添加或减去第三值的命令。
在一些实施例中,操作非易失性存储器上数据的命令包括如下中的一个或多个:识别该命令的操作代码;和特定于命令的参数。
在一些实施例中,参数包括如下中的一个或多个:源地址;目的地址;起始地址;结束地址;要操作的数据长度;以及与命令相关联的值。
在一些实施例中,源地址是与要操作的数据相关联的逻辑块地址,目的地址是非易失性存储器的物理块地址。
附图说明
图1A示出了与本申请的实施例一致的便于主动持久存储器的示例性环境。
图1B示出了在现有技术中存储数据的示例性环境。
图1C示出了与本申请的实施例一致的便于主动持久存储器的示例性环境。
图2示出了与本申请的实施例一致的复杂存储器操作命令的示例表。
图3示出了现有技术中执行复杂存储器操作命令的示例性方法的流程图。
图4示出了与本申请的实施例一致的执行复杂存储器操作命令的示例性方法的流程图。
图5示出了与本申请的实施例一致的便于主动持久存储的示例性计算机系统。
图6示出了与本申请的实施例一致的便于持久存储的示例性装置。
在附图中,相同参考数字表示相同的附图元素。
具体实施例
提供以下描述是为了使本领域的任何技术人员能够制作和使用本实施例,并且下面的描述是在特定应用及其要求的背景下而提供。对于本领域的技术人员来说,对公开的实施例的各种修改将是显而易见的,在不背离本公开的精神和范围的情况下,此处定义的一般原则可以应用于其他实施例和应用。因此,此处描述的实施例并不限于所示出的实施例,而是与这里所公开的原则和特征相一致的最大范围。
概述
本文描述的实施例通过将复杂存储器操作(其中目前需要CPU参与)经由存储器总线卸载至主动和非易失性的存储器执行来解决提高存储级存储器效率的问题。系统将复杂的存储器操作卸载到“主动持久存储器”的控制器,这允许CPU继续执行其他操作,并提高存储级存储器的效率。
存储级存储器(SCM)是一种混合外部存储器/内部存储器,其访问速度接近内部存储器(例如易失性存储器),容量接近外部存储器(例如非易失性存储器)。应用程序可以在“持久存储器”模式将SCM直接映射到系统地址空间,这可以为应用程序提供统一的存储器I/O接口,允许应用程序在没有重大变化的情况下采用SCM。然而,访问地址空间中的持久存储器可能会带来一些挑战。涉及移动、复制、扫描或操作大块数据的复杂操作可能会导致高速缓存污染,从而有用的数据可能会被这些操作清除。这可能导致效率下降(例如,性能下降)。此外,由于持久存储器通常比DRAM具有更高的容量,因此使用持久存储时,高速缓存污染问题可能会带来更重大的挑战。此外,由于持久存储器通常比DRAM慢,这些复杂操作的性能(例如,操作大块数据)可能会占用更多的CPU周期,这也会降低系统的效率。
本文描述的实施例通过将复杂存储器操作的执行卸载到存储级存储器的控制器来解决这些挑战。易失性存储器(例如DRAM DIMM)传统上被认为是只能处理来自CPU的简单、低级别的读/写命令的“非智能和被动”设备。这是因为DRAM DIMM主要是具有一些外围电路的大量单元阵列。复杂、高级操作,例如“从地址A复制4MB到地址B”或“从某个内存区域中的每64位字中减去X”必须由CPU处理。
相比而言,SCM包括DIMM上控制器来管理非易失性介质。该控制器通常负责如损耗均衡、错误处理和后台/反应刷新操作以及带有固件的芯片上(SoC)嵌入式系统的任务。该控制器允许基于SCM的持久存储器作为“智能和主动”设备运行,该设备可以无需CPU参与而处理复杂的、更高级别的存储器操作。因此,在本文描述的实施例中,主动持久存储器不仅可以提供简单的读/写指令,还可以处理当前需要CPU参与的更复杂的存储器操作。通过消除CPU参与操作数据和处理更复杂的存储器操作,系统可以减少高速缓存污染和所需的CPU周期数。这可以提高效率和性能。
因此,本文描述的实施例提供了提高存储系统效率的系统,该系统,其中改进是基本技术。提高的效率可以包括通过减少高速缓存污染和CPU占有率来提高延迟性能,例如I/O任务的完成。该系统提供对降低延迟和提高系统整体效率的技术问题的技术解决方案(例如,卸载通常需要CPU参与的复杂存储器操作到存储级存储器的控制器)。
术语“存储服务器”是指可以包括多个驱动器和多个存储器模块的服务器。
术语“存储级存储器”或“SCM”是一种混合外部存储器/内部存储器,其可以提供接近内部存储器(例如,易失性存储器)的访问速度和接近外部存储器(例如,非易失性存储器)的容量。应用程序可以以“持久存储器”模式将SCM直接映射到系统地址空间,这可以为应用程序提供统一的存储器I/O接口,允许应用程序在没有重大变化的情况下采用SCM。应用程序也可以在“块设备”模式使用块I/O接口(如非易失性存储器快速(NVMe)协议)访问SCM。
术语“主动持久内部存储器”或“主动持久外部存储器”指的是一种设备,如本文所述,它包括具有控制器或控制器模块的非易失性存储器。在本文描述的实施例中,主动持久存储器是一种存储级存储器。
术语“易失性存储器”是指可移除电源后可快速丢失数据的计算机存储器,如DRAM。易失性存储器通常在物理上位于接近处理器的位置,并通过存储器总线访问处理器。
“非易失性存储器”是指长期持久的计算机存储器,其即使电源循环或电源移除后仍可以保留数据。非易失性存储器通常位于SSD或其他外围组件中,并通过串行总线协议访问。然而,在本文描述的实施例中,非易失性存储器是通过存储器总线访问的存储级存储器或主动持久存储器。
术语“控制器模块”和“控制器”是指位于SCM或主动持久存储设备上的模块。在本文描述的实施例中,控制器处理由CPU卸载到SCM的复杂存储器操作。
示例性系统
图1A示出了根据本申请的实施例的便于主动持久存储器的示例环境100。环境100可以包括与用户104相关联的计算设备102。例如,计算设备102可以包括平板电脑、手机、电子阅读器、笔记本电脑、台式电脑或任何其他计算设备。计算设备102可以通过网络110与服务器112、114和116进行通信,这些服务器可以是分布式存储系统的一部分。服务器112-116可以包括存储服务器,其中可以包括通过存储器总线连接到易失性存储器和非易失性存储器的CPU。非易失性存储器是一种主动持久存储器,其可以是包括兼有改进的内部存储器(例如,具有接近访问易失性存储器的访问速度)和改进的外部存储器(例如,具有接近标准非易失性存储器容量的存储容量)的特征的存储级存储器。
例如,服务器116可以包括CPU 120,所述CPU 120通过存储器总线142连接到易失性存储器(DRAM)122,CPU 120还通过存储器总线扩展144连接到非易失性存储器(主动持久存储器)124。CPU 120也可以通过串行高级技术附件(SATA)协议146连接到硬盘驱动器/固态硬盘驱动器(HDD/SDD)132,并且通过外围组件高速互连(PCle)协议148连接到NAND SSD134。服务器116描述了通过存储器总线(例如,通过存储器总线扩展144的主动持久存储器124)便于主动持久存储器的系统。在下面相关的图3中描述现有技术中的常用数据流程,并且在下面的图3中描述了与本申请实施例一致的示例性数据流程。
现有技术中的示例性环境与示例性实施例
图1B示出了现有技术中用于存储数据的示例性环境160。环境160可以包括CPU150,CPU 150可以连接到易失性存储器(DRAM)152。CPU 150也可以通过SATA协议176连接到HDD/SDD 162,并通过PCIe协议178连接到NAND SSD 164。
图1C示出了根据本公开的实施例的便于主动持久存储器的示例性环境180。环境180类似于图1A中的服务器116,并在如下方面不同于图1B中的现有技术环境160:环境180包括通过存储器总线扩展144连接的主动持久存储器124。因此,CPU 120可以将涉及在主动持久存储器124上操作数据的任何复杂存储器操作命令的执行卸载到主动持久存储器124的控制器125。控制器125可以是软件或固件或用于嵌入主动持久存储器124的非易失性存储器中的模块的其他电路相关指令。
因此,本文描述的实施例包括通过存储器总线扩展连接到CPU的主动持久存储器(即非易失性存储器)。这允许CPU将任何复杂的存储器操作卸载到主动持久存储器(的控制器)。本文描述的主动持久存储器是一种具有改善存储器和内部存储器的双重优势的存储级存储器。通过存储器总线将存储级存储器直接连接至CPU,环境180可以提供比环境160更高的效率和性能(例如,更低的延迟)。
复杂存储器操作命令的示例表
图2示出了与本申请实施例一致的复杂存储器操作命令的示例表200。表200包括具有CMOC 202,操作代码(OPCODE)204,描述(DESCRIPTION)206,和参数(PARAMETERS)208的条目。参数208可以包括一个或多个:源地址(“src_add”);目的地址(“Dest_add”);开始地址(“star_add”);结束地址(“end_add”);长度(“length”);和变量值(“var_value”)。参数可以基于命令的类型表示或包含在命令中。例如,在“添加”操作中,参数可以包括以从start_add到end_add的存储器区域中的64位字的每个中减去的变量值X。另一个例子,在“存储器复制”操作中,参数可以包括src_add、dest_add和length。
存储器复制212CMOC可以包含操作代码“MemCopy”,并且可以将一数据块从源地址复制到目的地址。存储器填充214CMOC可以包含操作代码“MemFill”,并且可以用值填充存储器区域。扫描216CMOC可以包含操作代码“MemScan”,并且可以扫描存储器区域以获得给定值,并在找到时返回偏移量。加/减218CMOC可以包括操作代码“Add/Sub”,并且,对于存储区域中的每个字,加上或减去给定值(例如,如参数所示)。
现有技术中执行CMOC的方法
图3给出了现有技术中执行复杂存储器操作命令的方法300的流程图。在操作过程中,系统通过中央处理单元(CPU)接收复杂存储器操作命令(CMOC)来操作存储设备的非易失性存储器上的数据(操作302)。例如,CMOC可以是存储器复制命令,其参数包括源地址(SA),目的地址(DA),和长度。CPU设置第一指针指向源地址,设置第二指针指向目的地址,并将剩余值设置为长度(操作304)。如果剩余值大于零(判断306),CPU:设置第二指针的值作为第一指针的值(例如,复制数据);增加第一指针和第二指针;并减少剩余值(操作308)。操作返回到判断306。
如果剩余值不大于零(判断306),则操作返回。在图3,一组操作数据操作340(即操作304、306和308)由CPU执行。
在示例性环境中执行CMOC的方法
图4示出了与本申请实施例一致的执行复杂存储器操作命令的方法400的流程图。在操作过程中,系统通过CPU接收复杂存储器操作命令(CMOC)来操作存储设备的非易失性存储器上的数据(操作402)。例如,CMOC可以是存储器复制命令,其参数包括源地址(SA)、目的地址(DA)和长度。该系统通过CPU经由存储器总线向非易失性存储器(“主动持久存储器”)传送复杂存储器操作命令来操作非易失性存储器上的数据(操作404)。例如,CMOC可以是存储器复制,具有操作代码“MemCopy,”和包括“{SA,DA,length}”的参数。因此,CPU将复杂存储器操作命令的执行卸载到主动持久存储器。也就是说,系统通过非易失性存储器的控制器(即主动持久存储器的控制器)执行复杂存储器操作命令(操作412),其中执行命令不是由CPU执行的。控制器可以执行一组操作数据操作440(类似于之前由CPU执行的操作304、306和308,如图3所示)。同时,控制器执行操作数据操作440(即,执行复杂存储器操作命令),CPU执行不涉及操作非易失性存储器上的数据的操作(操作406)。
随后,CPU可以轮询主动持久存储器,以获得复杂存储器操作命令完成的状态。例如,响应于生成命令状态的请求或轮询,CPU接收命令的状态(操作408)。从控制器的角度来看,系统通过控制器接收已执行命令状态的请求(操作414)。系统基于命令是否已完成并通过控制器生成状态请求的响应(操作416)。
示例性计算机系统和装置
图5示出了与本申请实施例一致的便于主动持久存储器的示例性计算机系统500。计算机系统500包括处理器502、易失性存储器504、非易失性存储器506和存储设备508。计算机系统500可以是客户-服务机器。易失性存储器504可以包括,例如,RAM,作为管理存储器,并可用于存储一个或更多个存储器池。非易失性存储器506可以包括通过存储器总线访问的主动持久存储器。此外,计算机系统500可以连接到显示设备510、键盘512和定点设备514。存储设备508可以存储操作系统516、内容处理系统518和数据530。
内容处理系统518可以包含指令,当由计算机系统500执行时,这些指令会使得计算机系统500执行本公开中描述的方法和/或流程。具体而言,内容处理系统518可以包括接收和发送数据包的指令,包括命令、参数、命令状态的请求,以及对状态请求的响应。内容处理系统518可以进一步包括经由存储器总线并通过存储设备的非易失性存储器接收操作非易失性存储器上数据的命令的指令,其中,存储器总线连接到易失性存储器(通信模块520)。内容处理系统518可以包括通过非易失性存储器的控制器来执行命令的指令(命令执行模块522和参数处理模块528)。
内容处理系统518还可以包括通过控制器接收命令(通信模块520)的指令和通过控制器接收对已执行命令状态的请求(通信模块520和状态轮询模块524)的指令。内容处理系统518可以包括由控制器基于命令是否已完成生成的对状态请求的响应的指令(状态确定模块526)。
内容处理系统518还可以包括从中央处理单元(通信模块520和状态轮询模块524)接收状态请求的指令。内容处理系统518可以包括由控制器执行命令的指令,所述指令使得中央处理器继续执行不涉及操作非易失性存储器上的数据的操作(命令执行模块522和参数处理模块528)。
数据530可以包括任何需要作为输入的数据,或者通过本公开描述的方法和/或流程生成的作为输出的数据。具体来说,数据530可以至少存储:要写入、读取、存储或访问的数据;处理或存储的数据;编码或解码的数据;加密或压缩的数据;解密或解压缩的数据;命令;命令的状态;状态请求;对状态请求的响应;将数据从源地址复制到目的地址的命令;用第一值填充非易失性存储器的区域的命令;扫描非易失性存储器的区域以获取第二值的命令,并响应于确定的偏移量,返回偏移量;对非易失性存储器的区域中的每个字中增加或从非易失性存储器的区域中的每个字中减少第三值的命令;标识命令的操作代码;参数;命令特有的参数;源地址;目的地址;起始地址;结束地址;长度;与命令相关联的值;逻辑块地址;和物理块地址。
图6示出了与本申请实施例一致的便于主动持久存储器的示例性装置600。装置600可以包含多个可以通过有线、无线、量子光或电子通信信道相互通信的单元和装置。装置600可以使用一个或更多个集成电路来实现,并且可以包括比图6所示更少或更多的单元或装置。此外,装置600可以被集成到计算机系统中,或者作为能够与其他计算机系统和/或设备通信的独立设备来实现。具体而言,装置600可以包含单元602-610,它们执行类似于图5的计算机系统500的模块520-528的功能或操作,包括:通信单元602;命令执行单元604;状态轮询单元606;状态确定单元608;和参数处理单元610。
此外,装置600可以是非易失性存储器(如图1C中的主动持久存储器124),它包括控制器,该控制器被配置为:通过存储器总线接收命令来操作非易失性存储器上的数据,其中所述存储器总线连接至易失性存储器;和执行所述命令,其中执行该命令不是由中央处理单元所执行的。所述控制器可以进一步被配置为:接收已执行命令状态的请求;并根据命令是否已完成生成对状态请求的响应。
在本文详细描述中所描述的数据结构和代码通常存储在计算机可读的存储介质上,其可以是任何可以存储代码和/或数据以供计算机系统使用的设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁盘驱动器、磁的和光存储设备例如光盘、磁带、CD(光盘)、DVD(数字多功能光盘或数字视频光盘)或其它在已知或以后开发的能够存储现计算机可读介质的介质。
在本文详细描述部分描述的方法和流程可以以代码和/或数据的形式体现,这些代码和/或数据可以如上所述的存储在计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储在计算机可读的存储介质中的方法和流程。
进一步的,上述方法和流程可以包含在硬件模块中。例如,硬件模块可以包括但不限于,专用集成电路(ASIC)的芯片,现场可编程门阵列(FPGA),和其它现在已知或以后开发的可编程逻辑器件。当所述硬件模块被激活时,该硬件模块执行包含在硬件模块中的方法和流程。
本文所描述的上述实施例仅用于说明和描述。其不打算详尽无遗,也不打算将此处描述的实施例限制在所公开的形式中。因此,对本领域技术人员而言许多修改和改变是显而易见的。此外,上述公开并非为了限制此处描述的实施例。本文描述的实施例的范围由所附权利要求限定。
Claims (20)
1.一种便于主动持久存储器的计算机实现方法,该方法包括:
经由存储器总线通过存储设备的非易失性存储器接收操作所述非易失性存储器上数据的命令,其中所述存储器总线连接到易失性存储器;和
由所述非易失性存储器的控制器执行所述命令。
2.如权利要求1所述的方法,其中所述命令由所述控制器接收,并且所述方法进一步包括:
通过控制器接收已执行命令状态的请求;和
基于所述命令是否已完成并通过控制器生成状态请求的响应。
3.如权利要求2所述的方法,其中从中央处理单元接收对状态的请求,以及
其中,由控制器执行所述命令,使中央处理单元继续执行不涉及操作非易失性存储器上的数据的操作。
4.如权利要求1所述的方法,其中,操作非易失性存储器上数据的命令表示以下中的一个或更多个:
将数据从源地址复制到目的地址的命令;
用第一值填充非易失性存储器区域的命令;
扫描非易失性存储器的区域以获取第二值的命令,以及,响应于确定偏移量,返回所述偏移量;和
对非易失性存储器的区域的每个字添加或从非易失性存储器的区域的每个字减去第三值的命令。
5.如权利要求1所述的方法,其中,操作非易失性存储器上数据的命令包括以下中的一个或更多个:
用于标识该命令的操作代码;
以及特定于该命令的参数。
6.如权利要求5所述的方法,其中所述参数包括以下中的一个或更多个:
源地址;
目的地址;
起始地址;
结尾地址;
要操作的数据的长度;以及
与命令相关联的值。
7.如权利要求6所述的方法,其中源地址是与要操作的数据相关联的逻辑块地址,以及
其中,目的地址是非易失性存储器的物理块地址。
8.一种便于主动持久存储器的计算机系统,该系统包括:
处理器;和
存储器,所述存储器与所述处理器连接并存储有指令,当所述指令由处理器执行时,会使得处理器执行包括如下的方法:
经由存储器总线通过计算机系统的非易失性存储器接收操作所述非易失性存储器上数据的命令,其中所述存储器总线连接到易失性存储器;和
由所述非易失性存储器的控制器执行所述命令。
9.如权利要求8所述的计算机系统,其中所述命令由所述控制器接收,并且所述方法进一步包括:
通过控制器接收已执行命令状态的请求;和
基于所述命令是否已完成并通过控制器生成状态请求的响应。
10.如权利要求9所述的计算机系统,其中从中央处理单元接收对状态的请求,以及
其中,由控制器执行所述命令,使中央处理单元继续执行不涉及操作非易失性存储器上的数据的操作。
11.根据权利要求8所述的计算机系统,其中,操作非易失性存储器上数据的命令表示以下中的一个或更多个:
将数据从源地址复制到目的地址的命令;
用第一值填充非易失性存储器区域的命令;
扫描非易失性存储器的区域以获取第二值的命令,以及,响应于确定偏移量,返回所述偏移量;和
对非易失性存储器的区域的每个字添加或从非易失性存储器的区域的每个字减去第三值的命令。
12.根据权利要求8所述的计算机系统,其中,操作非易失性存储器上数据的命令包括以下中的一个或更多个:
用于标识该命令的操作代码;
以及特定于该命令的参数。
13.根据权利要求12所述的计算机系统,其中所述参数包括以下中的一个或更多个:
源地址;
目的地址;
起始地址;
结尾地址;
要操作的数据的长度;以及
与命令相关联的值。
14.根据权利要求13所述的计算机系统,其中源地址是与要操作的数据相关联的逻辑块地址,以及
其中,目的地址是非易失性存储器的物理块地址。
15.一种非易失性存储器,包括:
控制器,所述控制器被配置为通过存储器总线接收用于操作非易失性存储器上数据的命令,其中所述存储器总线连接到易失性存储器;以及
其中,所述控制器进一步被配置为执行所述命令。
16.根据权利要求15所述的非易失性存储器,其中所述控制器进一步被配置为:
接收对已执行命令状态的请求;和
基于所述命令是否已完成生成状态请求的响应。
17.根据权利要求16所述的非易失性存储器,其中从中央处理单元接收对状态的请求,以及
其中,由控制器执行所述命令,使中央处理单元继续执行不涉及操作非易失性存储器上的数据的操作。
18.根据权利要求15所述的非易失性存储器,其中,操作非易失性存储器上数据的命令表示以下中的一个或更多个:
将数据从源地址复制到目的地址的命令;
用第一值填充非易失性存储器的区域的命令;
扫描非易失性存储器的区域以获取第二值的命令,以及,响应于确定偏移量,返回所述偏移量;和
对非易失性存储器的区域的每个字添加或从非易失性存储器的区域的每个字减去第三值的命令。
19.根据权利要求15所述的非易失性存储器,其特征在于,操作非易失性存储器上数据的命令包括以下中的一个或更多个:
用于标识该命令的操作代码;以及
特定于该命令的参数。
20.根据权利要求19所述的非易失性存储器,其中,所述参数包括以下中的一个或更多个:
源地址;
目的地址;
起始地址;
结尾地址;
要操作的数据的长度;以及
与命令相关联的值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/696,027 | 2017-09-05 | ||
US15/696,027 US20190073132A1 (en) | 2017-09-05 | 2017-09-05 | Method and system for active persistent storage via a memory bus |
PCT/US2018/040102 WO2019050613A1 (en) | 2017-09-05 | 2018-06-28 | METHOD AND SYSTEM FOR ACTIVE PERSISTENT STORAGE THROUGH A MEMORY BUS |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111095223A true CN111095223A (zh) | 2020-05-01 |
Family
ID=65517393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880057785.2A Pending CN111095223A (zh) | 2017-09-05 | 2018-06-28 | 通过存储器总线实现主动持久存储器的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190073132A1 (zh) |
CN (1) | CN111095223A (zh) |
WO (1) | WO2019050613A1 (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436087B2 (en) * | 2017-05-31 | 2022-09-06 | Everspin Technologies, Inc. | Systems and methods for implementing and managing persistent memory |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US10430105B2 (en) | 2017-09-13 | 2019-10-01 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10452267B2 (en) | 2017-09-13 | 2019-10-22 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10579276B2 (en) | 2017-09-13 | 2020-03-03 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10534549B2 (en) | 2017-09-19 | 2020-01-14 | Robin Systems, Inc. | Maintaining consistency among copies of a logical storage volume in a distributed storage system |
US10423344B2 (en) | 2017-09-19 | 2019-09-24 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10452308B2 (en) * | 2017-12-19 | 2019-10-22 | Robin Systems, Inc. | Encoding tags for metadata entries in a storage system |
US10430292B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Snapshot deletion in a distributed storage system |
US10430110B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Implementing a hybrid storage node in a distributed storage system |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US10579364B2 (en) | 2018-01-12 | 2020-03-03 | Robin Systems, Inc. | Upgrading bundled applications in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10620871B1 (en) | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
US11079958B2 (en) * | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11108638B1 (en) * | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140237157A1 (en) * | 2011-02-08 | 2014-08-21 | Diablo Technologies Inc. | System and method for providing an address cache for memory map learning |
CN105808452A (zh) * | 2014-12-29 | 2016-07-27 | 北京兆易创新科技股份有限公司 | 微控制单元mcu的数据分级处理方法和系统 |
US20160232103A1 (en) * | 2013-09-26 | 2016-08-11 | Mark A. Schmisseur | Block storage apertures to persistent memory |
CN106708424A (zh) * | 2015-11-13 | 2017-05-24 | 三星电子株式会社 | 对用户数据执行选择性底层暴露映射的设备和方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487264B2 (en) * | 2002-06-11 | 2009-02-03 | Pandya Ashish A | High performance IP processor |
US7565454B2 (en) * | 2003-07-18 | 2009-07-21 | Microsoft Corporation | State migration in multiple NIC RDMA enabled devices |
US9390035B2 (en) * | 2009-12-21 | 2016-07-12 | Sanmina-Sci Corporation | Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures |
US8725934B2 (en) * | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
US9208071B2 (en) * | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US8880815B2 (en) * | 2012-02-20 | 2014-11-04 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low access time indirect memory accesses |
US9911487B2 (en) * | 2015-05-19 | 2018-03-06 | EMC IP Holding Company LLC | Method and system for storing and recovering data from flash memory |
US20160350002A1 (en) * | 2015-05-29 | 2016-12-01 | Intel Corporation | Memory device specific self refresh entry and exit |
US9965441B2 (en) * | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
US10389839B2 (en) * | 2016-06-01 | 2019-08-20 | Intel Corporation | Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node |
-
2017
- 2017-09-05 US US15/696,027 patent/US20190073132A1/en not_active Abandoned
-
2018
- 2018-06-28 WO PCT/US2018/040102 patent/WO2019050613A1/en active Application Filing
- 2018-06-28 CN CN201880057785.2A patent/CN111095223A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140237157A1 (en) * | 2011-02-08 | 2014-08-21 | Diablo Technologies Inc. | System and method for providing an address cache for memory map learning |
US20160232103A1 (en) * | 2013-09-26 | 2016-08-11 | Mark A. Schmisseur | Block storage apertures to persistent memory |
CN105808452A (zh) * | 2014-12-29 | 2016-07-27 | 北京兆易创新科技股份有限公司 | 微控制单元mcu的数据分级处理方法和系统 |
CN106708424A (zh) * | 2015-11-13 | 2017-05-24 | 三星电子株式会社 | 对用户数据执行选择性底层暴露映射的设备和方法 |
Non-Patent Citations (2)
Title |
---|
李敏;: "串行铁电存储器FM25256应用技术" * |
陈祥;肖侬;刘芳;: "新型非易失存储I/O栈综述" * |
Also Published As
Publication number | Publication date |
---|---|
US20190073132A1 (en) | 2019-03-07 |
WO2019050613A1 (en) | 2019-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111095223A (zh) | 通过存储器总线实现主动持久存储器的方法和系统 | |
US8239613B2 (en) | Hybrid memory device | |
US10509670B2 (en) | Data storage device and operating method thereof | |
CN110832590A (zh) | 在基于相变存储器的存储设备中减轻写入放大的方法和系统 | |
US10528393B2 (en) | Data storage device with weighting to control command selection and operating method thereof | |
US20210278998A1 (en) | Architecture and design of a storage device controller for hyperscale infrastructure | |
US9396108B2 (en) | Data storage device capable of efficiently using a working memory device | |
US10678443B2 (en) | Method and system for high-density converged storage via memory bus | |
US10719462B2 (en) | Technologies for computational storage via offload kernel extensions | |
US11036640B2 (en) | Controller, operating method thereof, and memory system including the same | |
KR20150074550A (ko) | 데이터 저장 장치 및 그것을 포함하는 데이터 처리 시스템 | |
US20180113629A1 (en) | Storage system and method of operating the same | |
US20190205059A1 (en) | Data storage apparatus and operating method thereof | |
US10922000B2 (en) | Controller, operating method thereof, and memory system including the same | |
US20190354483A1 (en) | Controller and memory system including the same | |
KR20190019543A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20210026767A1 (en) | Controller, memory system, and operating methods thereof | |
US9652172B2 (en) | Data storage device performing merging process on groups of memory blocks and operation method thereof | |
US20210026764A1 (en) | Controller and memory system including the same | |
US20210397558A1 (en) | Storage device and operating method thereof | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof | |
US10860334B2 (en) | System and method for centralized boot storage in an access switch shared by multiple servers | |
US20200250082A1 (en) | Controller, memory system, and operating method thereof | |
KR20190102998A (ko) | 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법 | |
US11476874B1 (en) | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
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 |