CN115048042A - 启用针对持久性存储器的存储器存取事务 - Google Patents
启用针对持久性存储器的存储器存取事务 Download PDFInfo
- Publication number
- CN115048042A CN115048042A CN202210216295.0A CN202210216295A CN115048042A CN 115048042 A CN115048042 A CN 115048042A CN 202210216295 A CN202210216295 A CN 202210216295A CN 115048042 A CN115048042 A CN 115048042A
- Authority
- CN
- China
- Prior art keywords
- memory
- host
- host data
- data items
- memory access
- 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
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
- 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
-
- 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
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
由存储器子***的处理装置从主机***接收用以起始存储器存取事务的第一请求。从所述主机***接收一或多个主机数据项。将所述一或多个主机数据项存储在驻存于所述存储器子***的易失性存储器装置上的存储器缓冲器中。响应于起始用以提交所述存储器存取事务的一或多个操作,将所述一或多个主机数据项从所述存储器缓冲器中转移到持久性存储器装置中。
Description
技术领域
本公开的实施例大体上涉及存储器子***,且更具体地说涉及启用针对持久性存储器的存储器存取事务。
背景技术
存储器子***可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机***可利用存储器子***以在存储器装置处存储数据且从存储器装置检索数据。
发明内容
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1示出了根据本公开的一些实施例的包含存储器子***的示例计算***。
图2A为根据本公开的一些实施例的用于使用持久性存储器缓冲器在存储器子***的持久性存储器区处存储主机数据的示例方法的流程图。
图2B为根据本公开的一些实施例的用于使用持久性存储器缓冲器在存储器子***的持久性存储器区处存储主机数据的另一示例方法的流程图。
图3A-3C示出了根据本公开的一些实施例的使用持久性存储器缓冲器在持久性存储器区处存储主机数据的实例。
图4为根据本公开的一些实施例的用于通过主机***在存储器子***的持久性存储器区处存储主机数据的示例方法的流程图。
图5为根据本公开的一些实施例的用于通过主机***在存储器子***的持久性存储器区处存储主机数据的示例方法的流程图。
图6为其中可操作本公开的实施例的示例计算机***的框图。
具体实施方式
本公开的各方面涉及启用针对持久性存储器的存储器存取事务。存储器子***可为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机***可利用包含一或多个存储器组件的存储器子***,所述一或多个存储器组件例如存储数据的存储器装置。主机***可提供将要存储在存储器子***处的数据并且可请求将要从存储器子***检索的数据。
存储器子***可利用一或多个存储器装置(包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合)来存储由主机***提供的数据。在一些实施例中,非易失性存储器装置可由与非(NAND)类型快闪存储器装置提供。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每一裸片可由一或多个平面组成。平面可分组成逻辑单元(LUN)。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由物理块集合组成。每一块由页集合组成。“块”在本文中将指代连续或不连续的存储器页的集合。“块”的实例为“可擦除块”,其为存储器的最小可擦除单元,而“页”为存储器的最小可写入单元。每个页包含存储器信元集合。存储器信元为存储信息的电子电路。
数据操作可由存储器子***执行。数据操作可为主机起始的操作。例如,主机***可起始存储器子***上的数据操作(例如,写入、读取、擦除等)。主机***可将存取请求(例如,写入命令、读取命令)发送到存储器子***,以便将数据存储在存储器子***处的存储器装置上,且从存储器子***上的存储器装置读取数据。存储器子***处的控制器可从主机***接收存取请求,且可根据所述请求执行操作以在存储器装置处存取和/或写入主机数据。如由主机请求指定的待读取或写入的数据在下文中被称为“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、命名空间),其为主机***与主机数据相关联的位置。逻辑地址信息(例如,LBA、名字空间)可为主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的期限)、有效位图(其LBA或逻辑传送单元包含有效数据)等。
可启用存储器子***以促进将主机数据存储到存储器子***的持久性存储器。持久性存储器是指存储器装置或存储器装置的一部分(例如,本文中的持久性存储器区),所述存储器装置或存储器装置的一部分存储数据,以使得即使在创建或最后修改数据项的进程结束之后也可存取所述数据。持久性存储器装置和/或区可指非易失性存储器装置或受电源保护的易失性存储器装置(例如,受电源保护的动态随机存取存储器(DRAM))。主机***可经由例如***组件互连高速(PCIe)总线耦合到存储器子***,且可通过经由PCIe总线将指令传输到存储器子***控制器以在持久性存储器的地址处写入主机数据来在持久性存储器处存储主机数据。
尽管存储器子***可为主机***提供对持久性存储器装置和/或区的存取权,但主机***和存储器子***可能会占用大量资源以便管理将主机数据存储到持久性存储器。例如,对于一些存储器子***,存储在持久性存储器处的主机数据的可缓存性和/或一致性对于利用持久性存储器的主机***来说涉及大量复杂性。因此,在主机***处运行的进程的开发人员可开发自定义进程以使得主机***能够管理将主机数据存储到持久性存储器。此类进程可涉及大量写入操作和/或高速缓存刷新操作,以在主机***和/或存储器子***发生电力故障或***崩溃的情况下记录对主机***处的主机数据的每次修改。这种大量写入和/或刷新操作可能会占用大量***资源和存储器子***的一或多个存储器装置处的大量宝贵空间,从而引起总体***效率降低和总体***延迟变长。因此,这些示例性缺点限制了作为可利用面向事务的持久性存储器的解决方案的广泛行业采用。
本公开的各方面通过具有启用针对持久性存储器的存储器存取事务的存储器子***来解决以上和其它缺陷。存储器子***可包含易失性存储器装置和持久性存储器装置和/或持久性存储器区(本文中统称为持久性存储器)。在一些实施例中,易失性存储器装置可包含经配置以在主机数据写入到持久性存储器之前存储主机数据的存储器缓冲器。持久性存储器是指非易失性存储器装置或受电源保护的易失性存储器装置,或此类装置的一部分。在一些实施例中,存储器子***可经由计算高速链路(CXL)接口耦合到主机***。在此类实施例中,存储器子***可为经配置以支持CXL协议的CXL***。在额外或替代实施例中,存储器缓冲器可驻存于持久性存储器区中和/或存储器子***的另一非易失性存储器装置处。
主机***可向存储器子***传输用以起始存储器存取事务以在存储器子***的持久性存储器处存储主机数据的请求。存储器存取事务是指待在存储器子***处执行以在持久性存储器的地址范围处存储主机数据的一组操作。在一些实施例中,所述请求可包含地址范围的指示和/或待存储在持久性存储器处用于存储器存取事务的主机数据量的指示。响应于从主机***接收到请求,存储器子***控制器可获得存储器存取事务的事务标识符。在一些实施例中,存储器子***控制器可使用事务标识符来跟踪相应事务的状态,如下文所描述。在一些实施例中,存储器子***控制器可向主机***传输事务标识符的指示。
在请求之后,主机***可向存储器子***传输一或多个主机数据项(即,主机数据的一或多个部分)以存储在持久性存储器的地址范围中的特定地址处。响应于接收到一或多个主机数据项,存储器子***控制器可将主机数据项存储在存储器子***的易失性存储器装置处的存储器缓冲器中。在一些实施例中,存储器子***控制器可存储与主机数据项相关联的地址范围中的特定地址的指示和/或存储器存取事务的事务标识符的指示。
响应于确定存储器存取事务的每一主机数据项已传输到存储器子***控制器,主机***可向存储器子***传输用以提交存储器存取事务的另一请求。出于本公开的目的,提交存储器存取事务是指完成在持久性存储器的地址范围处存储主机数据项集合的过程。响应于接收到用以提交存储器存取事务的请求,存储器子***控制器可将与存储器存取事务相关联的主机数据项从存储器缓冲器中转移到持久性存储器中,且在一些实施例中,可向主机***传输成功地提交存储器存取事务的通知。存储器子***控制器可经配置以即使在存储器子***和/或主机***处发生电力损耗或***崩溃的情况下也能完成将主机数据项转移到持久性存储器中。
在额外或替代实施例中,存储器子***控制器可在存储器缓冲器处存储与每一主机数据项相关联的初始状态。数据项的初始状态可包含在主机***于传输用以提交存储器存取转变的请求前更新数据项之前的数据项的副本。存储器子***控制器可(例如,响应于来自主机***的请求或通知)使用存储在存储器缓冲器处的数据项的初始状态将更新后的数据项恢复到初始状态。主机***可向存储器子***控制器传输用以提交存储器存取事务的请求,如上文所指示。响应于接收到用以提交存储器存取事务的请求,存储器子***控制器可丢弃与每一主机数据项相关联的所存储的初始状态。
本公开的优点包含但不限于使存储器子***处的持久性存储器面临在主机***处运行的进程,其中主机***的资源消耗最小。通过将存储器缓冲器维持在存储器子***的易失性存储器装置处,存储器子***控制器能够执行由连接存储器子***与主机***的CXL接口启用的CXL协议,这增加了存储在持久性存储器处的主机数据的可缓存性和/或一致性。因此,不在主机***处运行代价大的进程以使得主机数据能够存储到持久性存储器,从而减少主机***和/或存储器子***对代价大的***资源的消耗。通过减少主机***和/或存储器子***的资源消耗,可提高总体***效率并缩短总体***延迟。
图1示出了根据本公开的一些实施例的包含存储器子***110的示例计算***100。存储器子***110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置130)、一或多个非易失性存储器装置(例如,存储器装置140)或此类装置的组合。在一些实施例中,存储器子***110可进一步包含持久性存储器(PM)装置150。根据本文所提供的实施例的持久性存储器是指存储器装置或存储器装置的一部分(即,持久性存储器区),所述存储器装置或存储器装置的一部分存储数据项,以使得即使在创建或最后修改数据项的进程结束之后也可存取所述数据。在一些实施例中,持久性存储器装置150可为非易失性存储器装置。在其它或类似实施例中,持久性存储器装置150可为受电源保护的易失性存储器装置(例如,受电源保护的动态随机存取存储器(DRAM)装置)。在一些实施例中,存储器子***110可不包含持久性存储器装置150,且替代地,存储器装置130和/或存储器装置140可包含一或多个持久性存储器区。根据本文所描述的实施例,持久性存储器区是指存储器装置的支持持久性存储器存储的一部分。例如,在一些实施例中,存储器装置140可为易失性存储器装置而不是非易失性存储器装置,且存储器装置140的至少一部分可为受电源保护的易失性存储器。
存储器子***110可为存储装置、存储器模块,或存储装置和存储器模块的组合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算***100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、载具(例如,飞机、无人机、火车、汽车或其它运输工具)、启用物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算***100可包含耦合到一或多个存储器子***110的主机***120。在一些实施例中,主机***120耦合到不同类型的多个存储器子***110。图1示出了耦合到一个存储器子***110的主机***120的一个实例。如本文中所使用,“耦合到”或“与……耦合”通常是指组件之间的连接,所述连接可为间接通信连接或直接通信连接(例如,不具有中间组件),不管有线还是无线的,包含例如电气、光学、磁性等的连接。
主机***120可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,NVDIMM控制器),和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机***120使用存储器子***110,例如以将数据写入存储器子***110且从存储器子***110读取数据。
主机***120可经由物理主机接口耦合到存储器子***110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、***组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机***接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机***120与存储器子***110之间传输数据。当存储器子***110通过物理主机接口(例如,PCIe总线)与主机***120耦合时,主机***120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子***110与主机***120之间传送控制、地址、数据和其它信号的接口。图1示出了存储器子***110作为实例。一般来说,主机***120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子***。
在一些实施例中,主机***120可经由计算高速链路(CXL)接口耦合到存储器子***110。在此类实施例中,存储器子***110可为经配置以支持CXL协议的CXL***。CXL接口是指可支持可在PCIe之上运行的数个协议的接口,所述协议包含CXL.io协议、CXL.mem协议和CXL.cache协议。CXL.io协议为类PCIe协议,可被视为能够划分受管理存储器的“增强型”PCIe协议。CXL接口可用于起始、连接、装置发现和枚举、寄存器存取,且可为I/O装置提供接口。CXL.mem协议可实现使用存储器语义(例如,加载和存储命令)对附接装置的存储器的主机存取。根据本文中所描述的实施例,这种方法可支持易失性存储器架构和持久性存储器架构两者。CXL.cache协议可限定主机装置相互作用以使用请求和响应方法实现具有低时延的主机存储器的高效高速缓存。流量可通过CXL.io协议运行,且CXL.mem和CXL.cache协议可共享共同链路层和事务层。因此,可经由PCIe物理层对CXL协议进行多路复用和传送。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器信元的交叉点阵列。非易失性存储器信元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器信元的情况下对非易失性存储器信元进行编程。NAND型快闪存储器包含例如二维NAND(2DNAND)和三维NAND(3DNAND)。
存储器装置130中的每一者可包含一或多个存储器信元阵列。一种类型的存储器信元,例如,单层级信元(SLC)每信元可存储一个位。其它类型的存储器信元,例如多层信元(MLC)、三层信元(TLC)、四层信元(QLC)和五层信元(PLC),每信元可存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器信元阵列,例如SLC、MLC、TLC、QLC、PLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器信元的SLC部分,以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器信元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
尽管描述了非易失性存储器组件,例如非易失性存储器信元的3D交叉点阵列和NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,或电可擦除可编程只读存储器(EEPROM)。
存储器子***控制器115(为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子***控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲器存储器或其组合。硬件可包含具有用以执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路***。存储器子***控制器115可为微控制器、专用逻辑电路***(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子***控制器115可包含处理装置,其包含经配置以执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子***控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子***110的操作(包含处理存储器子***110与主机***120之间的通信)的各种进程、操作、逻辑流程以及例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1中的示例存储器子***110已示出为包含存储器子***控制器115,但在本公开的另一实施例中,存储器子***110不包含存储器子***控制器115,并且可替代地依赖于(例如,由外部主机或由与存储器子***分离的处理器或控制器提供的)外部控制。
一般来说,存储器子***控制器115可从主机***120接收命令或操作,并且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子***控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)和物理地址(例如,物理块地址)之间的地址翻译。存储器子***控制器115可进一步包含主机接口电路***,以经由物理主机接口与主机***120通信。主机接口电路***可将从主机***接收到的命令转换成命令指令以存取存储器装置130,并且将与存储器装置130相关联的响应转换成用于主机***120的信息。
存储器子***110还可包含未说明的额外电路***或组件。在一些实施例中,存储器子***110可包含高速缓存器或缓冲器(例如,DRAM)和地址电路***(例如,行解码器和列解码器),其可从存储器子***控制器115接收地址且对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子***控制器115操作以对存储器装置130的一或多个存储器信元执行操作。外部控制器(例如,存储器子***控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子***110为受管理存储器装置,其为具有在裸片上的控制逻辑(例如,本地控制器132)和用于同一存储器装置封装内的媒体管理的控制器(例如,存储器子***控制器115)的原始存储器装置130。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器子***110包含PM管理器组件113,其可用于在存储器子***110的持久性存储器(例如,持久性存储器装置150)处存储主机数据。如上文所描述,主机数据是指主机***120的由存储器子***控制器115接收以存储在存储器子***110的存储器装置处的数据。在一些实施例中,主机数据可包含与主机***120上运行的进行相关联的数据。在一些实施例中,存储器子***控制器115包含PM管理器组件113的至少一部分。例如,存储器子***控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,PM管理器组件113为主机***110、应用程序或操作***的一部分。
在一些实施例中,PM管理器组件113可经配置以从主机***120接收用以起始存储器存取事务的请求。存储器存取事务是指待(例如,由PM管理器组件113)在存储器子***115处执行以将主机数据存储在持久性存储器装置150的特定地址范围处的一组操作。在一些实施例中,PM管理器组件113可接收主机数据项集合中的主机数据项且可将接收到的主机数据项存储在驻存于存储器装置上的存储器缓冲器137中。在一些实施例中,存储器缓冲器137可驻存于存储器子***110处的易失性存储器装置上,例如存储器装置130。在其它或类似实施例中,存储器缓冲器137可驻存于非易失性存储器装置上,例如存储器装置140。在又其它或类似实施例中,缓冲器137可驻存于存储器子***控制器115的本地存储器上,(例如本地存储器119)。PM管理器组件113可从主机***120接收用以将存储器存取事务提交给持久性存储器装置的第二请求。出于本公开的目的,提交存储器存取事务是指完成用以在持久性存储器装置150处存储主机数据项集合的过程。响应于从主机***120接收到第二请求,PM管理器组件113可将所述主机数据项集合从存储器缓冲器137中转移到持久性存储器装置150中。本文提供了关于在持久性存储器装置150处存储主机数据的另外细节。
图2A为根据本公开的一些实施例的用于使用持久性存储器缓冲器在存储器子***的持久性存储器区处存储主机数据的示例方法200的流程图。可通过处理逻辑执行方法200,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法200是通过图1的PM管理器组件113来执行的。在其它或类似实施例中,方法200的一或多个操作由存储器子***控制器的另一组件执行。虽然以特定顺序或次序示出,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作210处,处理逻辑可从主机***接收用以起始存储器存取事务的第一请求。如上文所描述,存储器存取事务是指用以在存储器子***的持久性存储器(例如,持久性存储器装置150或存储器装置130的持久性存储器区或存储器装置140)处存储一或多个主机数据项的过程。应注意,尽管本公开的实施例描述了在持久性存储器装置150处存储主机数据项,但这些实施例还适用于在存储器子***110处的持久性存储器区处存储主机数据项。
图3A示出了根据本公开的实施例的在存储器子***110的持久性存储器区处存储主机数据的实例。如图3A所示,存储器子***110可包含持久性存储器310。持久性存储器310可对应于持久性存储器装置150和/或持久性存储器区,如先前所描述。存储器子***还可包含缓冲器137,如上文所描述。
在一些实施例中,来自主机***120的请求可包含持久性存储器装置150的虚拟地址范围的指示,用于存储器存取事务的一或多个主机数据项将要存储在所述虚拟地址范围处。请求可进一步包含用于存储器存取事务的将要存储在持久性存储器装置150的虚拟地址范围处的主机数据的量的指示。例如,请求可包含将要存储在持久性存储器装置150的虚拟地址范围处的数个字的指示。在其它或类似实施例中,请求可包含用于存储器存取事务的将要存储在持久性存储器装置150处的主机数据的量的指示以及持久性存储器装置150处的主机数据的初始虚地址。处理逻辑可基于初始虚拟地址和用于存储器存取事务的主机数据的量的指示而确定存储器存取事务的虚拟地址范围。
响应于接收到所述请求,处理逻辑可确定驻存于存储器子***110的易失性存储器装置上的缓冲器处是否存在用以在主机数据转移到持久性存储器装置150之前存储用于存储器存取事务的主机数据的足够可用空间。在一些实施例中,驻存于易失性存储器装置上的缓冲器可对应于缓冲器137。响应于确定缓冲器137处不存在足够可用空间,处理逻辑可向主机***120传输指示无法在存储器子***110处完成存储器存取事务的消息。
在一些实施例中,处理逻辑可获得持久性存储器装置150的映射到第一请求中所包含的虚拟地址范围的物理地址范围。例如,处理逻辑可在存储器子***控制器115的本地存储器(例如,本地存储器119)处存取数据结构,所述数据结构包含用于持久性存储器装置150的虚拟地址到物理地址映射。在一些实施例中,数据结构可为虚拟(或逻辑)到物理地址表(例如,V2P表或L2P表)。在一些实施例中,处理逻辑可检索虚拟地址范围中的每一虚拟地址到持久性存储器装置150处的相应物理地址的映射,并将检索到的映射存储在本地存储器119的缓冲器处。
在一些实施例中,响应于接收到用以起始存储器存取事务的第一请求,处理逻辑可例如在本地存储器119处存储与存储器存取事务相关联的事务标识符。事务标识符可为对应于第一请求的特定存储器存取事务的唯一标识符。在一些实施例中,处理逻辑可存储主机***120或耦合到存储器子***110的另一主机***起始的多个存储器存取事务的多个事务标识符。在一些实施例中,来自主机***120的第一请求可包含与存储器存取事务相关联的事务标识符的指示。因此,处理逻辑可从第一请求中提取事务标识符,并例如在本地存储器119处存储所提取的事务标识符。在其它或类似实施例中,处理逻辑可响应于从主机***120接收到第一请求而生成事务标识符,并例如在本地存储器119处存储所生成的事务标识符。响应于生成事务标识符,处理逻辑可向主机***120传输事务标识符的指示。
在又其它或类似实施例中,存储器子***控制器115的存储器空间(例如,本地存储器119)可存储事务标识符数据结构,例如图3A所示的数据结构312。事务标识符数据结构312可包含用于可用于存储器子***110处的存储器存取事务的有限事务标识符集合中的每一者的条目。数据结构的每一条目可包含:字段314,其包含相应事务标识符的指示;以及额外字段316,其包含事务标识符是否可用于所请求的存储器存取事务的指示。例如,额外字段316可包含指示相应事务标识符是否可用的标志。在另一实例中,用于不可用的事务标识符的额外字段316可包含持久性存储器装置150的当前映射到不可用的事务标识符的地址(例如,虚拟地址或物理地址)范围。用于可用事务标识符的额外字段316可为空,从而指示事务标识符可用。处理逻辑可存取数据结构以检索第一请求的存储器存取事务的可用事务标识符,并且可响应于标识可用事务标识符而更新用于事务标识符的条目以指示事务标识符不可用。例如,处理逻辑可更新条目的标志以指示事务标识符不可用。在另一实例中,处理逻辑可将存储器地址(例如,虚拟地址或物理地址)范围的指示添加到条目以指示事务标识符不可用。如图3A所示,处理逻辑可更新与事务标识符“0”相关联的条目以指示与事务标识符相关联的存储器地址(例如,“0X000-0X005”)范围。与事务标识符“1”相关联的条目不包含存储器地址范围的指示,且因此指示事务标识符可用。在一些实施例中,处理逻辑可例如在本地存储器119处存储检索到的事务标识符。响应于检索事务标识符,处理逻辑可向主机***120传输事务标识符的指示。
用以起始存储器存取事务的第一请求可包含事务标识符,如上文所描述。在一些实施例中,第一请求中所包含的事务标识符可为在向存储器子***110传输第一请求之前由主机***120生成的事务标识符(被称为主机事务标识符)。在此类实施例中,根据上文所描述的实施例,处理逻辑可响应于从主机***12接收到第一请求而获得存储器存取事务的额外事务标识符(被称为存储器子***事务标识符)。例如,处理逻辑可生成存储器子***事务标识符或可从存储器子***事务标识符检索存储器子***事务标识符,如本文所描述。处理逻辑可向主机***120传输所获得的存储器子***事务标识符的指示,如上文所描述。在一些实施例中,处理逻辑还可生成主机事务标识符与存储器子***事务标识符之间的映射并在存储器子***控制器15的存储器(例如,本地存储器119)处存储所述映射。应注意,在一些实施例中,参考如本文所提供的事务标识符可指主机事务标识符或存储器子***事务标识符。
在操作212处,处理逻辑可从主机***接收一或多个主机数据项。在一些实施例中,处理逻辑可接收用以将一或多个主机数据项写入到持久性存储器装置150的在先前所描述的虚拟地址范围内的特定虚拟地址的指令。处理逻辑可例如使用第一请求中所包含的虚拟地址到本地存储器119处所存储的相应物理地址的映射,来确定持久性存储器装置150的映射到特定虚拟地址的物理地址,如上文所描述。在其它或类似实施例中,根据本文所提供的实施例,处理逻辑可使用本地存储器119处所存储的V2P表或L2P表来确定持久性存储器装置150的物理地址。
在操作214处,处理逻辑可将一或多个主机数据项存储在驻存于存储器子***110的易失性存储器装置上的存储器缓冲器137中。在一些实施例中,处理逻辑可将映射到一或多个主机数据项的虚拟地址的物理地址的指示与一或多个主机数据项一起存储在存储器缓冲器137中。在其它或类似实施例中,处理逻辑可将与第一请求的存储器存取事务相关联的事务标识符的指示与一或多个主机数据项一起存储在存储器缓冲器137中。在又其它或类似实施例中,处理逻辑可在事务标识符数据结构处更新用于事务标识符的条目,以包含存储器缓冲器137中所存储的一或多个主机数据项的地址的指示。如图3A所示,处理逻辑可将主机数据项编程到存储器缓冲器137。在一些实施例中,处理逻辑可更新用于事务标识符的条目以包含所存储的主机数据项的地址(例如,物理地址)(例如,0X000-0X003)的指示。
在一些实施例中,从主机***120接收到的一或多个主机数据项可包含存储器存取事务的主机事务标识符的指示。在此类实施例中,处理逻辑可确定存储器存取事务的(例如,来自本地存储器119处所存储的映射的)存储器子***事务标识符并将存储器子***存储器存取事务标识符的指示存储在存储器子***110处,如上文所描述。
在一些实施例中,处理逻辑可接收用以在持久性存储器装置150的特定虚拟地址处存储一或多个第一主机数据项的第一指令,如上文所描述。处理逻辑可在缓冲器137处存储一或多个第一主机数据项、持久性存储器装置150的所获得的物理地址和/或存储器存取事务的事务标识符,如上文所描述。在一些实施例中,处理逻辑可接收用以在持久性存储器装置150的相同虚拟地址处存储一或多个第二主机数据项的第二指令。响应于接收到用以存储一或多个第二主机数据项的第二指令,处理逻辑可将一或多个第一主机数据项和一或多个第一主机数据项的所获得的物理地址替换为一或多个第二数据项和/或一或多个第二主机数据项的所获得的物理地址。例如,处理逻辑可从缓冲器137擦除第一主机数据项、所述主机数据项的所获得的物理地址和/或事务标识符,并在缓冲器137的相同部分或不同部分处存储第二主机数据项、一或多个第二主机数据项的物理地址和/或事务标识符。
在其它或类似实施例中,处理逻辑可将一或多个第二主机数据项编程到持久性存储器310,且可在缓冲器137处保存一或多个第一主机数据项。在此类实施例中,第一主机数据项可对应于与虚拟地址相关联的主机数据的初始状态,且第二主机数据项可对应于与虚拟地址相关联的主机数据的更新后状态。在一些实施例中,处理逻辑可从主机***120接收用以将与虚拟地址相关联的主机数据恢复到初始状态的请求。在此类实施例中,处理逻辑可从缓冲器137获得第一主机数据项,且可在持久性存储器310处将第二主机数据项替换为第一主机数据项。
在一些实施例中,在接收到来自主机***120的第一请求之后,处理逻辑可从主机***120接收用以将主机数据项存储在持久性存储器装置150处的多个指令。在一些实施例中,在接收到来自主机***120的第一请求之后或在从主机***120接收到用以存储主机数据项的一或多个初始指令之后的阈值时间段内,处理逻辑不会接收将要存储在持久性存储器装置150处的主机数据项。在此类实施例中,处理逻辑可向主机***120传输指示第一请求的存储器存取事务终止的通知。在一些实施例中,处理逻辑可从缓冲器137去除与存储器存取事务相关联的主机数据项。例如,处理逻辑可标识与存储器存取事务的事务标识符相关联的每一主机数据项并从缓冲器137擦除每一已标识主机数据项。在一些实施例中,处理逻辑可基于与相应数据项一起存储在缓冲器137处的事务标识符而确定相应数据项是否对应于存储器存取事务。在其它或类似实施例中,处理逻辑可(例如,在本地存储器119或存储器装置130处)存取数据结构,所述数据结构包含缓冲器137的每一地址与用于相应地址处所存储的主机数据的事务标识符的指示之间的映射。在又其它或类似实施例中,处理逻辑可(例如,在本地存储器119处)存取事务标识符数据结构,且可基于数据结构的条目而确定包含用于存储器存取事务的主机数据项的缓冲器137的一或多个地址。
在一些实施例中,响应于去除与存储器存取事务相关联的主机数据项,处理逻辑还可修改事务标识符数据结构的对应于存储器存取事务的事务标识符的条目以指示事务标识符可用于未来的存储器存取事务。例如,处理装置可设定条目的标志以指示事务标识符可用或可从条目去除用于存储器存取事务的主机数据的地址范围的指示。
在一些实施例中,处理逻辑可从主机***120接收用以存储超出来自主机***120的第一请求中针对存储器存取事务指示的主机数据量的主机数据项的指令。例如,第一请求可指示针对存储器存取事务的主机数据量对应于存储器的约100个总字。在一些实施例中,在处理逻辑接收第一请求之后,处理逻辑可接收用以存储超过第一请求中所指示的存储器的100个总字的主机数据量的一或多个指令。在其它或类似实施例中,处理逻辑可接收用以存储超过存储器的字(例如,存储器的字线、存储器页、块等)的主机数据项的指令。在这些实施例中,处理逻辑可向主机***120传输指示第一请求的存储器存取事务终止的指示,且在一些实施例中,所述处理逻辑可从缓冲器137去除与存储器存取事务相关联的主机数据项,如上文所描述。在一些实施例中,处理逻辑还可更新事务标识符数据结构,如上文所描述。
在一些实施例中,响应于接收到待存储于持久性存储器装置150处的一或多个主机数据项,处理逻辑可从主机***120接收用以终止存储器存取事务的指令。在此类实施例中,处理逻辑可从缓冲器137去除与存储器存取事务相关联的主机数据项,如上文所描述。在一些实施例中,处理逻辑还可更新事务标识符数据结构,如上文所描述。
在操作216处,处理逻辑可起始用以提交存储器存取事务的一或多个操作。在一些实施例中,处理逻辑可响应于来自主机***120的用以提交存储器存取事务的请求而起始一或多个操作。如上文所描述,出于本说明书的目的,提交存储器存取事务是指完成用以在持久性存储器装置150处存储主机数据项的存储器存取事务。在一些实施例中,第二请求可包含存储器存取事务的事务标识符的指示。如上文所描述,在一些实施例中,缓冲器137可存储与多个事务标识符相关联的主机数据项。因此,根据先前所描述的实施例,处理逻辑可在缓冲器137处标识与第二请求的事务标识符相关联的主机数据项。如图3B所示,缓冲器137可存储与事务标识符“0”相关联的一或多个第一数据项和与事务标识符“1”相关联的一或多个额外数据项。在一些实施例中,处理逻辑可在缓冲器137处标识与事务标识符“0”相关联的第一数据项。
在一些实施例中,第二请求可包含主机事务标识符和存储器存取事务的存储器子***事务标识符的指示。处理逻辑可确定第二请求中所包含的存储器子***事务标识符是否对应于与处理逻辑先前获得的且传输到主机***120的存储器存取事务相关联的存储器子***事务标识符。例如,处理逻辑可将第二请求的存储器子***事务标识符与针对第二请求的主机事务标识符生成的映射的存储器子***事务标识符进行比较。响应于确定第二请求的存储器子***事务标识符对应于先前获得的存储器子***事务标识符,方法200可继续进行操作218,如本文所描述。响应于确定第二请求的存储器子***事务标识符不对应于先前获得的存储器子***事务标识符,处理逻辑可向主机***120传输指示第二请求的主机事务标识符不对应于第二请求中所包含的存储器子***事务标识符的通知。
在操作218处,处理逻辑可将一或多个主机数据项从存储器缓冲器中转移到持久性存储器装置150中。在一些实施例中,处理逻辑可在缓冲器137处转移与第二请求的事务标识符相关联的主机数据项,如本文所描述。处理逻辑可通过将一或多个主机数据项复制到与持久性存储器装置150相关联的队列而转移所述一或多个主机数据项。用于持久性存储器装置150的本地控制器可按主机数据项复制到队列的次序将队列的每一主机数据项存储到持久性存储器装置150。在一些实施例中,持久性存储器装置150的队列可为由存储器子***110的本地备用电力支持的存储器的一部分。例如,存储器子***110的本地备用电力可为电力存储装置(例如,电池),其经配置以存储足够电力以使得用于持久性存储器装置150的本地控制器可在存储器子***110的电力故障之后成功地在持久性存储器装置150处存储复制到队列的所有数据项。处理逻辑还可从缓冲器137擦除与存储器存取事务相关联的一或多个主机数据项。
在一些实施例中,响应于将一或多个主机数据项复制到与持久性存储器装置150相关联的队列,处理逻辑可向主机***120传输指示完成存储器存取事务的通知。在一些实施例中,处理逻辑还可更新事务标识符数据结构312以指示与存储器存取事务相关联的事务标识符可用,如先前所描述。如图3C所示,处理逻辑可将第一数据项从缓冲器137转移(例如,复制)到持久性存储器310,如上文所描述。在一些实施例中,处理逻辑可响应于确定第一数据项转移到持久性存储器310中而从缓冲器137去除(例如,擦除)第一数据项。处理逻辑可另外或替代地更新事务标识符数据结构312以指示与第一数据项相关联的事务标识符“0”可用。
如上文所描述,在额外或替代实施例中,主机***120可传输与虚拟地址相关联的第一主机数据项,且随后可传输与虚拟地址相关联的第二主机数据项。第一主机数据项可表示与虚拟地址相关联的主机数据的初始状态,且第二主机数据项可表示主机数据的更新后状态,如上文所描述。当接收到第一主机数据项时,处理逻辑可将第一主机数据项存储到缓冲器137和持久性存储器310。当接收到第二主机数据项时,处理逻辑可用第二主机数据项替换持久性存储器310处的第一主机数据项。因此,持久性存储器310可存储主机数据的更新后状态。处理逻辑可在缓冲器137处保存第一主机数据项(例如,主机数据的初始状态)。在一些实施例中,处理逻辑可接收用以将主机数据恢复到初始状态的请求。因此,处理逻辑可用缓冲器137处的第一主机数据项替换持久性存储器310处的第二主机数据项(例如,通过将第一主机数据项从缓冲器137复制到持久性存储器310的与虚拟地址相关联的区)。当接收到用以提交与虚拟地址相关联的主机数据的请求时,处理逻辑可从缓冲器137去除(例如,擦除)第一主机数据项。
图2B为根据本公开的一些实施例的用于使用持久性存储器缓冲器在存储器子***的持久性存储器区处存储主机数据的示例方法250的流程图。可通过处理逻辑执行方法250,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法250是通过图1的PM管理器组件113来执行的。在其它或类似实施例中,方法250的一或多个操作由存储器子***控制器的另一组件执行。虽然以特定顺序或次序示出,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作252处,根据先前所描述的实施例,处理逻辑可从主机***(例如,主机***120)接收用以起始存储器存取事务的请求。在操作254处,处理逻辑可任选地起始与存储器存取事务相关联的计时器。在一些实施例中,计时器可为在计时器起始之后倒计时到特定时间段的倒计时器。响应于倒计时器的对应于特定时间段的值,倒计时器可向处理逻辑传输指示与倒计时器相关联的时间段已到期的通知。在操作256处,处理逻辑可确定是否起始写入操作。在一些实施例中,可响应于接收到用以将存储器存取事务的一或多个主机数据项写入到持久性存储器(例如,持久性存储器装置150)的命令而起始写入操作。处理逻辑可通过确定从主机***120接收到的任何写入命令是否包含与存储器存取事务相关联的事务标识符的指示而确定是否已接收到用以写入存储器存取事务的主机数据项的命令。响应于处理逻辑确定已接收到写入命令,方法250可继续进行到操作258。在操作258处,根据先前所描述的实施例,处理逻辑可将写入命令的一或多个主机数据项存储在驻存于存储器子***的易失性存储器装置(例如,存储器缓冲器137)上的存储器缓冲器中。在一些实施例中,处理逻辑可在处理逻辑在存储器缓冲器137处存储一或多个主机数据项之后起始操作254的计时器。
响应于处理逻辑确定未起始写入操作,方法250可继续进行到操作260。在操作260处,处理逻辑可确定是否起始事务中止操作。在一些实施例中,可响应于从主机***120接收到的事务中止命令而起始事务中止操作。事务中止命令可使得处理逻辑终止存储器存取事务并从缓冲器127和/或持久性存储器装置150去除与存储器存取事务相关联的每一数据项。响应于处理逻辑确定已从主机***120接收到事务中止命令,方法250可继续进行到操作262。在操作262处,处理逻辑可关闭存储器子***110处的存储器存取事务。在一些实施例中,处理逻辑可通过丢弃(例如,擦除)来自存储器缓冲器137的一或多个主机数据项来关闭存储器存取事务。在一些实施例中,根据上文所描述的实施例,处理逻辑可进一步更新事务标识符数据结构以指示存储器存取事务的事务标识符可供使用。
响应于处理逻辑确定未起始事务中止操作,方法250可继续进行到操作264。在操作264处,处理逻辑可确定是否已从主机***120接收到事务提交命令。事务提交命令可使得处理逻辑将存储器存取事务的主机数据项提交到持久性存储器装置150,如上文所描述。响应于处理逻辑确定已接收到事务提交命令,方法250可继续进行到操作266。在操作266处,根据先前所描述的实施例,处理逻辑可将与存储器存取事务相关联的一或多个主机数据项从存储器缓冲器中转移到持久性存储器装置中。根据先前所描述的实施例,响应于将存储器存取事务的一或多个主机数据项转移到持久性存储器装置150中,处理逻辑可关闭存储器存取事务。
响应于处理逻辑确定未起始事务提交操作,方法250可继续进行到操作268。在操作268处,处理逻辑可通过操作254的先前设定的计时器检测是否已发生存储器存取事务超时。在一些实施例中,处理逻辑可通过确定先前设定的计时器已到期检测存储器存取事务超时。响应于处理逻辑检测已发生存储器存取事务超时,方法250可继续进行到操作270。在操作270处,根据先前所描述的实施例,处理逻辑可关闭存储器存取事务。在一些实施例中,处理逻辑还可向主机***120传输指示已关闭存储器存取事务的通知。响应于处理逻辑确定存储器存取事务超时未相对于操作268发生,方法可返回到操作256。如先前所描述,处理逻辑可根据操作254任选地起始与存储器存取事务相关联的计时器。如果处理逻辑未利用计时器来确定是否关闭存储器存取事务,如关于方法250的操作268和/或操作270所描述。替代地,处理逻辑可保持存储器存取事务在存储器子***110处进行,直到处理逻辑接收到事务中止命令或事务提交命令为止,如关于方法250的操作260和264所描述。
图4为根据本公开的一些实施例的用于通过主机***在存储器子***的持久性存储器区处存储主机数据的示例方法400的流程图。可通过处理逻辑执行方法400,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由处理装置在图1的主机***120处执行。虽然以特定顺序或次序示出,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作410处,处理逻辑可向存储器子***(例如,存储器子***110)传输用以起始存储器存取事务的第一请求。在一些实施例中,处理逻辑可对应于用于主机***120的用户空间中的进程的线程或可运行所述线程。进程可与当进程于主机***120上运行时由处理逻辑使用或生成的主机数据项集合相关联。在一些实施例中,处理逻辑可标识主机数据项集合中的待存储于存储器子***110的持久性存储器装置150处的一或多个主机数据项。响应于标识所述一或多个主机数据项,处理逻辑可执行用以阻止在主机***120处执行在主机***120处存取所标识的一或多个主机数据项的操作的指令。处理逻辑可响应于执行用以阻止在主机***120处执行所述操作的指令而向存储器子***110传输第一请求。
在一些实施例中,第一请求可包含持久性存储器装置150的虚拟地址范围的指示,存储器存取事务的一或多个主机数据项将要存储在所述虚拟地址范围处。在其它或类似实施例中,第一请求可包含存储器存取事务的将要存储在持久性存储器装置150处的主机数据量的指示。在其它或类似实施例中,第一请求可包含存储器存取事务的主机数据量的指示和持久性存储器装置150的虚拟地址范围中的第一虚拟地址的指示。
在操作412处,在一些实施例中,处理逻辑可任选地接收与存储器存取事务相关联的事务标识符的指示。如上文所描述,存储器子***110的PM管理器组件113可响应于接收到用以起始存储器存取事务的第一请求而生成或获得事务标识符,并且可向主机***120传输事务标识符的指示。响应于接收到事务标识符的指示,处理逻辑可在主机***120的存储器缓冲器处存储所述指示。在其它或类似实施例中,处理逻辑不从存储器子***110接收事务标识符,且替代地可生成存储器存取事务的事务标识符。在此类实施例中,处理逻辑可在传输到存储器子***110的第一请求中包含事务标识符。
在操作414处,处理逻辑可将一或多个主机数据项中的主机数据项传输到存储器子***110以存储在持久性存储器装置处。在一些实施例中,处理逻辑可针对存储器子***110的PM管理器组件113生成用以将主机数据项存储在持久性存储器装置150的特定虚拟地址处的指令。如上文所描述,特定虚拟地址可包含于第一请求中所包含的虚拟地址范围中。处理逻辑可将包含主机数据项和特定虚拟地址的指令传输到存储器子***110。在一些实施例中,所述指令可进一步包含存储器存取事务的事务标识符的指示。
在操作416处,处理逻辑可确定存储器存取事务的每一主机数据项是否已传输到存储器子***。处理逻辑可通过确定用以将一或多个主机数据项中的每一者存储到持久性存储器装置150的指令是否已传输到存储器装置110来确定每一主机数据项是否已传输到存储器子***。响应于处理逻辑确定存储器存取事务的每一主机数据项已传输到存储器子***,方法400可继续进行到操作418。响应于处理逻辑确定存储器存取事务的每一主机数据项未传输到存储器子***,方法400可返回到操作414。在操作418处,处理逻辑可向存储器子***传输用以提交存储器存取事务的第二请求。第二请求可包含存储器存取事务的事务标识符的指示,如本文所描述。在操作420处,处理逻辑可从存储器子***接收指示完成存储器存取事务的消息。
在一些实施例中,处理逻辑可检测与进程相关联的一或多个主机数据项已在其中主机数据项已传输到存储器子***的时间段(例如,在执行与块414相关联的操作的时间段时或附近)与其中用以提交存储器存取事务的请求已传输的时间段(例如,在执行与块416相关联的操作的时间段时或附近)之间进行了更新。在此类实施例中,处理逻辑可向存储器子***110传输更新后主机数据项,并且可(例如,经由传输到存储器子***110的通知和/或请求)向存储器子***110指示更新后主机数据项与和初始主机数据项相同的虚拟地址相关联。根据先前所描述的实施例,PM管理器113可在缓冲器137和/或持久性存储器310处存储已更新主机数据项。
图5为根据本公开的一些实施例的用于在存储器子***的持久性存储器区处存储主机数据的示例方法500的流程图。可通过处理逻辑执行方法500,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500是通过图1的PM管理器组件113来执行的。在其它或类似实施例中,方法500的一或多个操作由存储器子***控制器110的另一组件执行。虽然以特定顺序或次序示出,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在块510处,处理逻辑获得与由主机***起始的存储器存取事务相关联的标识符。处理逻辑(例如,PM管理器113)可获得存储器存取事务标识符,如上文所描述。在块512处,处理逻辑将一或多个主机数据项存储在驻存于存储器子***的第一存储器装置上的存储器缓冲器中。一或多个主机数据项可与存储器存取事务标识符相关联,如上文所描述。在块514处,处理逻辑接收用以将与存储器存取事务标识符相关联的数据项提交给持久性存储器的请求,如上文所描述。在块518处,处理逻辑将一或多个主机数据项的至少一部分从存储器缓冲器中转移到持久性存储器中。
图6示出了计算机***600的示例机器,所述示例机器内可执行用于使得所述机器执行本文所论述的方法中的任何一或多种方法的指令集。在一些实施例中,计算机***600可对应于主机***(例如,图1的主机***120),所述主机***包含、耦合到或利用存储器子***(例如,图1的存储器子***110),或可用于执行控制器的操作(例如,以执行操作***,从而执行对应于图1的PM管理器组件113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以执行本文中所论述的方法中的任何一或多种方法。
示例计算机***600包含经由总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储***618。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602经配置以执行指令626,以用于执行本文中所论述的操作和步骤。计算机***600可进一步包含通过网络620通信的网络接口装置608。
数据存储***618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多种的软件。指令626还可在其由计算机***600执行期间完全或至少部分地驻存于主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储***618,和/或主存储器604可对应于图1的存储器子***110。
在一个实施例中,指令626包含用以实施对应于电压格仓边界组件(例如,图1的PM管理器组件113)的功能性的指令。尽管在示例实施例中机器可读存储媒体624展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可指计算机***或类似电子计算装置的操纵计算机***的寄存器和存储器内的表示为物理(电子)量的数据并将所述数据变换为计算机***的存储器或寄存器或其它此类信息存储***内的类似地表示为物理量的其它数据的动作和过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机***总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用***可与根据本文中的教示的程序一起使用,或可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些***的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机***(或其它电子装置)以执行根据本公开的进程的指令的机器可读媒体。机器可读媒体包含用于存储呈机器(例如,计算机)可读形式的信息的任何机制。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (20)
1.一种方法,其包括:
由存储器子***的处理装置从主机***接收用以起始存储器存取事务的第一请求;
从所述主机***接收一或多个主机数据项;
将所述一或多个主机数据项存储在驻存于所述存储器子***的易失性存储器装置上的存储器缓冲器中;以及
响应于起始用以提交所述存储器存取事务的一或多个操作,将所述一或多个主机数据项从所述存储器缓冲器中转移到持久性存储器装置中。
2.根据权利要求1所述的方法,其进一步包括:
向所述主机***传输成功地提交所述存储器存取事务的通知。
3.根据权利要求1所述的方法,其进一步包括:
从所述主机***接收用以提交所述存储器存取事务的第二请求,其中用以提交所述存储器存取的所述一或多个操作是响应于接收到所述第二请求而起始的。
4.根据权利要求1所述的方法,其进一步包括:
响应于在提交所述存储器存取事务之前从所述主机***接收到用以中止所述存储器存取事务的第三请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
5.根据权利要求1所述的方法,其进一步包括:
响应于未能在预定义时间段内从所述主机***接收到用以提交所述存储器存取事务的第四请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
6.根据权利要求1所述的方法,其中在所述第一请求处参考所述存储器存取事务的事务标识符。
7.根据权利要求6所述的方法,其进一步包括:
生成所述存储器存取事务的所述事务标识符;以及
向所述主机***传输所述事务标识符的指示。
8.根据权利要求1所述的方法,其中所述持久性存储器装置为非易失性存储器装置或受电源保护的易失性存储器装置。
9.一种存储器子***,其包括:
包括存储器缓冲器的第一存储器装置;
第二存储器装置,其中所述第二存储器装置的一或多个部分包括持久性存储器;以及
耦合到所述第一存储器装置和所述第二存储器装置的处理装置,所述处理装置用以执行包括以下各项的操作:
获得由主机***起始的存储器存取事务的存储器存取事务标识符;
将一或多个主机数据项存储在驻存于所述存储器子***的第一存储器装置上的存储器缓冲器中,其中所述一或多个主机数据项与所述存储器存取事务标识符相关联;以及
从所述主机***接收用以将与所述存储器存取事务标识符相关联的所述一或多个主机数据项提交给所述持久性存储器的请求,从而将所述一或多个主机数据项的至少一部分从所述存储器缓冲器中转移到所述持久性存储器中。
10.根据权利要求9所述的存储器子***,其中所述操作进一步包括:
从所述主机***接收用以将与所述存储器存取事务标识符相关联的一或多个额外主机数据项存储到所述持久性存储器的请求,其中所述一或多个主机数据项对应于与所述主机***相关联的主机数据的初始状态且所述一或多个主机数据项对应于所述主机数据的更新后状态;以及
将所述一或多个主机数据项存储到所述持久性存储器。
11.根据权利要求10所述的存储器子***,其中所述操作进一步包括:
从所述主机***接收用以将所述主机数据恢复到所述初始状态的请求;以及
将所述一或多个主机数据项从所述存储器缓冲器复制到存储所述一或多个额外数据项的所述持久性存储器的区。
12.根据权利要求9所述的存储器子***,其中所述操作进一步包括:
响应于在提交所述存储器存取事务之前从所述主机***接收到用以中止所述存储器存取事务的请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
13.根据权利要求9所述的存储器子***,其中所述操作进一步包括:
响应于未能在预定义时间段内从所述主机***接收到用以提交所述存储器存取事务的请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
14.根据权利要求9所述的存储器子***,其中获得与所述存储器存取事务相关联的所述标识符包括:
生成所述存储器存取事务标识符;以及
向所述主机***传输所述事务标识符的指示。
15.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时使得所述处理装置执行包括以下各项的操作:
从主机***接收用以起始存储器存取事务的第一请求;
从所述主机***接收一或多个主机数据项;
将所述一或多个主机数据项存储在驻存于易失性存储器装置上的存储器缓冲器中;以及
响应于起始用以提交所述存储器存取事务的一或多个操作,将所述一或多个主机数据项从所述存储器缓冲器中转移到持久性存储器装置中。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
向所述主机***传输成功地提交所述存储器存取事务的通知。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
从所述主机***接收用以提交所述存储器存取事务的第二请求,其中用以提交所述存储器存取的所述一或多个操作是响应于接收到所述第二请求而起始的。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
响应于在提交所述存储器存取事务之前从所述主机***接收到用以中止所述存储器存取事务的第三请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
19.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
响应于未能在预定义时间段内从所述主机***接收到用以提交所述存储器存取事务的第四请求,丢弃存储在所述存储器缓冲器中的所述一或多个主机数据项。
20.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述持久性存储器装置为非易失性存储器装置或受电源保护的易失性存储器装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163158120P | 2021-03-08 | 2021-03-08 | |
US63/158,120 | 2021-03-08 | ||
US17/677,535 US20220283735A1 (en) | 2021-03-08 | 2022-02-22 | Enabling memory access transactions for persistent memory |
US17/677,535 | 2022-02-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048042A true CN115048042A (zh) | 2022-09-13 |
Family
ID=83117075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210216295.0A Pending CN115048042A (zh) | 2021-03-08 | 2022-03-07 | 启用针对持久性存储器的存储器存取事务 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220283735A1 (zh) |
CN (1) | CN115048042A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2578600B (en) * | 2018-10-31 | 2021-10-13 | Advanced Risc Mach Ltd | Memory transaction request management |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817421B2 (en) * | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US9456035B2 (en) * | 2013-05-03 | 2016-09-27 | International Business Machines Corporation | Storing related data in a dispersed storage network |
US10025845B1 (en) * | 2015-12-08 | 2018-07-17 | Gravic, Inc. | Method of logging non-durable attributes of an uncompleted transaction so as to make such attributes durable |
KR20200005229A (ko) * | 2018-07-06 | 2020-01-15 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR102541897B1 (ko) * | 2018-08-27 | 2023-06-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
-
2022
- 2022-02-22 US US17/677,535 patent/US20220283735A1/en active Pending
- 2022-03-07 CN CN202210216295.0A patent/CN115048042A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220283735A1 (en) | 2022-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693768B2 (en) | Power loss data protection in a memory sub-system | |
US20220300195A1 (en) | Supporting multiple active regions in memory devices | |
CN113010449A (zh) | 存储器子***中命令的有效处理 | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN115048043A (zh) | 基于整合存储器区描述数据的操作 | |
CN114942893A (zh) | 物理存储器位置的反转刷新 | |
US11693593B2 (en) | Versioning data stored on memory device | |
US20220283735A1 (en) | Enabling memory access transactions for persistent memory | |
US20210191852A1 (en) | Data block switching at a memory sub-system | |
US20240069758A1 (en) | Shared memory snapshots | |
US11971816B2 (en) | Host system notification based on entry miss | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
US11704247B2 (en) | Enhanced duplicate write data tracking for cache memory | |
US11726669B2 (en) | Coherency locking schemes | |
US11797198B2 (en) | Memory instruction for memory tiers | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
US11922011B2 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
US11221949B2 (en) | Multi state purgatory for media management for a memory subsystem | |
US20230066106A1 (en) | Memory sub-system tier allocation | |
CN113064548A (zh) | 存储器子***中的逻辑到物理页转译中的相干性问题解决方案 | |
CN115729858A (zh) | 存储器中用于数据分享的散列操作 | |
CN115774886A (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 |