CN112835815B - 具有高速缓冲存储器的存储器子系统的预提取 - Google Patents
具有高速缓冲存储器的存储器子系统的预提取 Download PDFInfo
- Publication number
- CN112835815B CN112835815B CN202011322780.3A CN202011322780A CN112835815B CN 112835815 B CN112835815 B CN 112835815B CN 202011322780 A CN202011322780 A CN 202011322780A CN 112835815 B CN112835815 B CN 112835815B
- Authority
- CN
- China
- Prior art keywords
- memory
- memory subsystem
- command
- prefetch operation
- data
- 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.)
- Active
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/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Human Computer Interaction (AREA)
Abstract
本申请涉及具有高速缓冲存储器的存储器子系统的预提取。本文中所描述的各种实施例提供对存储器子系统的预提取操作,此可在所述存储器子系统随后处理来自主机系统的读取命令时有助于避免高速缓冲未命中。
Description
技术领域
本公开的实施例大体来说涉及存储器子系统,且更具体来说,涉及将数据预提取到存储器子系统的高速缓冲存储器。
背景技术
存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。通常,主机系统可利用存储器子系统来将数据存储在存储器组件处并从存储器组件检索数据。
发明内容
在一个方面中,本申请案提供一种存储器子系统,其包括:一组存储器装置;高速缓冲存储器;及处理装置,其以操作方式耦合到所述组存储器装置,经配置以执行包括以下的操作:从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从所述存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述高速缓冲存储器,而无需结合所述预提取操作向所述主机系统发送响应,所述存储器子系统命令与非确定性存储器协议相关联;确定是否执行所述预提取操作;及响应于确定将执行所述预提取操作,通过从对应于所述给定存储器地址的所述组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
在另一方面中,本申请案进一步提供一种方法,其包括:从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从所述存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述高速缓冲存储器,而无需结合所述预提取操作向所述主机系统发送响应,所述存储器子系统命令与非确定性存储器协议相关联;确定是否执行所述预提取操作;及响应于确定将执行所述预提取操作,通过从对应于所述给定存储器地址的所述组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
在另一方面中,本申请案进一步提供一种包括指令的非暂时性计算机可读存储媒体,所述指令在由存储器子系统的处理装置执行时致使所述处理装置执行包括以下的操作:从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从所述存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述存储器子系统的高速缓冲存储器,而无需结合所述预提取操作向所述主机系统发送响应,所述存储器子系统命令与非确定性存储器协议相关联;响应于接收到所述存储器子系统命令,通过从对应于所述给定存储器地址的所述存储器子系统的一组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
在另一方面中,本申请案进一步提供一种方法,其包括:通过软件应用程序生成执行预提取操作的请求,所述预提取操作从存储器子系统的给定存储器地址读取目标数据,并将所述目标数据存储到所述存储器子系统的高速缓冲存储器,而无需所述存储器子系统结合所述预提取操作向主机系统发送响应;及将用以基于所述请求执行所述预提取操作的存储器子系统命令从所述主机系统发送到所述存储器子系统,所述存储器子系统命令与非确定性存储器协议相关联。
附图说明
从下面给出的详细描述且从本发明的各种实施例的附图将更全面理解本公开。然而,不应将图式用于将本公开限制于特定实施例,而仅为了解释及理解。
图1根据本公开的一些实施例说明包含存储器子系统的实例性计算环境。
图2到4为根据本公开的一些实施例说明主机系统请求对存储器子系统执行预提取操作的实例存储器协议的图。
图5及8为根据本公开的一些实施例的用于对存储器子系统的预提取操作的实例方法的流程图。
图9A及9B提供说明在其中执行用于对存储器子系统的预提取操作的方法的一些实施例的上下文中的计算环境的组件之间的交互的交互图。
图10为其中本公开的实施例可操作的实例计算机系统的框图。
具体实施方式
本公开的方面是针对将数据预提取到存储器子系统的高速缓冲存储器。存储器子系统可为存储装置、存储器模块或存储装置及存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个存储器装置的存储器子系统。主机系统可提供将存储在存储器子系统处的数据,且可请求从存储器子系统检索数据。
假定对高速缓冲存储器的存取操作(例如,读取或写入操作)可比对存储器子系统的存储器装置执行得快,那么传统的存储器子系统可使用内部高速缓冲存储器来加速存储器子系统的某些操作(例如,处理来自主机系统的读取请求)。通常,当包含读取高速缓冲存储器的常规存储器子系统接收到对目标数据的读取请求(例如,经由从主机系统接收的存储器子系统读取命令)时,存储器子系统首先尝试从读取高速缓冲存储器提供目标数据。如果目标数据已存储在高速缓冲存储器中,那么此可被称为“高速缓冲命中”,且存储器子系统可为主机系统提供来自高速缓冲存储器的目标数据。然而,如果目标数据尚未存储在高速缓冲存储器中(例如,由于先前操作),那么此可被称为“高速缓冲未命中”,并且存储器子系统可通过从存储器装置读取目标数据、将目标数据存储到高速缓冲存储器(例如,将目标数据复制到高速缓冲存储器中)以及然后从高速缓冲存储器提供目标数据来做出响应。因此,高速缓冲未命中通常会导致存储器子系统比在响应于所请求操作(例如,所请求的读取操作)在存储器子系统上发生高速缓冲命中时较慢执行。
本公开的方面通过以下操作来解决上述及其它缺陷:使存储器子系统(例如,非易失性双列直插式存储器模块(NVDIMM)装置)通过主机系统的请求执行预提取操作,所述预提取操作将数据从给定存储器地址(由请求指定)的数据读取(例如,预提取)到存储器子系统的高速缓冲存储器。对于一些实施例,预提取操作由存储器子系统执行,而无需存储器子系统将响应(例如,反馈)结合所请求预提取操作发送回到请求主机系统。例如,根据一些实施例,在存储器子系统执行预提取操作之后,存储器子系统抑制向主机系统发送关于是否接收到预提取操作请求的响应、关于是否成功执行预提取操作的响应,或包含由预提取操作从给定存储器地址读取的数据的响应。替代地,对于一些实施例,在存储器子系统执行预提取操作之后,存储器子系统可发送简单的响应,例如,所述响应确认接收到预提取操作,指示预提取操作完成,或包括特定于预提取操作的信息(例如,主机系统或请求预提取操作的软件可使用的信息)。根据各种实施例,预提取操作可用于在主机系统请求对同一给定存储器执行读取操作之前(例如,在之前)用来自给定存储器地址的数据预加载高速缓冲存储器,从而帮助避免在随后由存储器子系统执行请求的读取操作时出现高速缓冲未命中。这可至少相对于对存储器子系统执行读取操作加快存储器子系统的执行(如果并非如此,那么也加快对存储器子系统执行的其它操作)。
为请求对存储器子系统执行预提取操作(如本文中所描述),主机系统可发送存储器协议(例如,非确定性存储器协议,例如非易失性双列直插式存储器模块-P(NVDIMM-P)存储器协议)的存储器子系统命令,所述存储器子系统命令促进请求对存储器子系统执行预提取操作。例如,存储器子系统命令可包含与请求关于给定存储器地址的预提取操作特定相关联的命令。例如,存储器子系统命令可包含:在命令(CMD)信号线上发送PREFETCH+SRCADDR;及在数据(DQ)信号线上发送指示将从源存储器地址(SRCADDR)预提取的数据量(例如,数据长度、行数等)的值。替代地,存储器子系统命令可包含请求将数据写入到受监视以请求预提取操作的特定目的存储器地址的命令,其中数据包含将借以执行预提取操作的给定存储器地址。例如,存储器子系统命令可包含:在命令(CMD)信号线上发送XWRITE+DESTADDR(例如,NVDIMM-P XWRITE命令),其中DESTADDR包含特定目的存储器地址;及在数据(DQ)信号线上发送数据,所述数据包括将借以执行预提取操作的源存储器地址,且进一步包含指示将从源存储器地址预提取(例如,开始)的数据量(例如,数据长度、行数等)的值。从主机系统发送到存储器子系统的存储器子系统命令可由在主机系统上执行的软件应用程序(例如,在用户空间中)、在主机系统上执行的操作系统或主机系统的硬件组件生成。
本文中公开可将数据预提取到存储器子系统的高速缓冲存储器的系统的一些实例,如本文中所描述。
图1根据本公开的一些实施例说明包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类组合。
存储器子系统110可为存储装置、存储器模块或存储装置及存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)及非易失性双列直插式存储器模块(NVDIMM)。计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它交通工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网商用装置中的计算机),或包含存储器及处理装置的此类计算装置。
计算系统100可包含主机系统120,所述主机系统耦合到一或多个存储器子系统110。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”通常是指组件之间的连接,所述连接可为间接通信连接或直接通信连接(例如,无需中间组件),无论有线还是无线的,包含例如电、光学、磁性等连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个内核、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器)及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120例如使用存储器子系统110将数据写入到存储器子系统110,且从存储器子系统110读取数据。
主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行先进技术附件(SATA)接口、快速外围组件互连(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接字接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用高速NVM(NVMe)接口存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。
存储器装置可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置的一些实例(例如,存储器装置130)包含“与非”(NAND)类型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格化数据存取阵列基于体电阻的改变执行位存储。此外,与许多基于快闪存储器的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下编程非易失性存储器单元。
尽管描述非易失性存储器组件(例如3D交叉点类型及NAND类型快闪存储器),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、“或非”(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)及非易失性存储器单元的交叉点阵列。
一种类型的存储器单元,例如,单级单元(SLC)可每单元存储一个位。其它类型的存储器单元(例如多级单元(MLC)、三级单元(TLC)及四级单元(QLC))可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,诸如SLC、MLC、TLC、QLC或此类的任一组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分或QLC部分。此外,存储器装置130的存储器单元可经分组为页,所述页可指代用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),可将页分组以形成块。
存储器子系统控制器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执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与用于媒体管理的本地控制器(例如,本地控制器135)一起组合在同一存储器装置封装内的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
主机系统120包含软件125,所述软件使用预提取操作,所述预提取操作实现或致使在主机系统处生成对将由存储器子系统110执行预提取操作的请求。软件125可包含预提取预测器或作为预提取预测器操作,所述预提取预测器可在从操作系统获得一或多个提示后请求预请求操作。软件125可表示在主机系统120上运行的用户空间软件应用程序或操作系统(或形成其一部分)。例如,软件125可实施为主机系统120的软件层,其可为操作系统的一部分,或由主机系统120用于与存储器子系统110交互(例如,介接)的驱动程序。根据各种实施例,在存储器子系统110上,预提取操作将从存储器子系统110的给定存储器地址(例如,对应于存储器装置130、140中的一者上的位置)读取目标数据,并且将所述目标数据存储到存储器子系统110的高速缓冲存储器114,而无需存储器子系统110结合预提取操作向主机系统120发送响应(例如,在RSP_n信号线上没有NVDIMM-P响应,且在数据(DQ)信号线上没有返回的数据)。替代地,对于一些实施例,在存储器子系统110执行预提取操作之后,存储器子系统110可向主机系统120发送简单的响应,例如,所述响应确认接收到预提取操作,指示预提取操作完成,或包括特定于预提取操作的信息。基于请求(由软件125生成),主机系统120可向存储器子系统110发送用以执行所请求的预提取操作的存储器子系统命令,其中存储器子系统命令与非确定性存储器协议(例如NVDIMM-P存储器协议)相关联。对于一些实施例,存储器子系统命令包含存储器子系统预提取命令,根据存储器协议(例如,非确定性存储器协议),所述命令与请求对存储器子系统执行预提取操作特别相关联。替代地,对于一些实施例,存储器子系统命令包含对与请求对存储器子系统110的预提取操作相关联(例如,监视)的存储器子系统110的指定存储器地址的存储器子系统写入命令(例如,现有非确定性存储器协议的存储器子系统写入命令,例如NVDIMM-P XWRITE命令)。
在生成对预提取操作的请求之后的某一时间,软件125可生成对存储器子系统的同一给定存储器地址执行读取操作的请求,并且基于所述读取请求,主机系统120可向存储器子系统110发送用以执行所请求的读取操作的存储器子系统命令。最终,主机系统120从存储器子系统110接收响应于存储器子系统读取命令来自给定存储器地址的目标数据。根据一些实施例,如果存储器子系统110接收用于请求预提取操作的存储器子系统命令与存储器子系统读取命令之间的时间足以让存储器子系统110在处理存储器子系统读取命令之前完成预提取操作的执行,那么存储器子系统读取命令所请求的目标数据将在存储器子系统处理存储器子系统读取命令时已存储(例如,加载)到高速缓冲存储器114中(通过预提取操作)。因此,当存储器子系统110处理存储器子系统读取命令时,将产生高速缓冲命中,并且存储器子系统110将避免由高速缓冲未命中所致的执行减速(此原本将在预提取操作在存储器子系统读取命令之前尚未被请求且完成的情况下发生)。
主机系统120包含具有预提取操作特征的软件编译器127,其可生成软件125,并且致使软件125包含用于请求对存储器子系统110执行预提取操作的一或多个指令。例如,在生成软件125的指令期间,软件编译器127可检测软件125的编程/编码中的状况,并通过优化针对软件125生成的指令以包含用于请求执行预提取操作的一或多个指令,对所述状况做出响应。
存储器子系统110包含用于在执行存储器子系统110的操作(例如读取操作或写入操作)期间高速缓冲数据的高速缓冲存储器114。高速缓冲存储器114可包含存在于存储器子系统110的前端的高速缓冲存储器,而存储器装置130、140可存在于存储器子系统110的后端处。通常,高速缓冲存储器114的存取性能比存储器子系统110的存储器装置(例如,130、140)中的一或多个更快。
存储器子系统110包含预提取操作执行器113,所述执行器实现或促进根据各种实施例对存储器子系统110上的存储器执行预提取操作。在一些实施例中,存储器子系统控制器115包含预提取操作执行器113的至少一部分。例如,存储器子系统控制器115可包含处理器117(处理装置),所述处理器经配置以执行存储在本地存储器119中的指令以执行本文中所描述的操作。在一些实施例中,预提取操作子系统113为主机系统120、应用程序或操作系统的一部分。
根据各种实施例,预提取操作执行器113从主机系统120接收用以执行预提取操作的存储器子系统命令,所述预提取操作从存储器子系统的给定存储器地址读取目标数据并将目标数据存储到高速缓冲存储器。可对存储器子系统110执行预提取操作,而无需存储器子系统110结合预提取操作将响应发送回主机系统120。存储器子系统命令可与非确定性存储器协议相关联,且如此可根据非确定性存储器协议(例如NVDIMM-P存储器协议)从主机系统120接收。
如本文中所描述,对于一些实施例,存储器子系统命令包含存储器子系统预提取命令,所述存储器子系统预提取命令与请求对存储器子系统执行预提取操作特别相关联。例如,存储器子系统命令可包含命令识别符(非确定性存储器协议),所述命令识别符与执行预提取操作特别相关联,且存储器子系统命令还可进一步包含与命令相关的数据(例如,元数据),所述命令相关数据包含从中预提取操作将为读取数据的给定存储器地址。与命令相关的数据可进一步包含指示将从存储器子系统110的给定存储器地址读取(例如,从其开始)并存储到高速缓冲存储器114的数据量(例如,长度或行数)的值。
替代地,对于一些实施例,存储器子系统命令包含对与请求对存储器子系统110的预提取操作相关联(例如,监视)的存储器子系统110的指定存储器地址的存储器子系统写入命令。例如,存储器子系统命令可包含与写入命令相关联的非确定性存储器协议的命令识别符,其中存储器子系统命令进一步包含包括给定存储器地址的命令相关数据,且存储器子系统命令指示存储器子系统110将命令相关数据写入到所指定存储器地址(与执行预提取操作相关联)。与命令相关的数据可进一步包含指示将从存储器子系统110的给定存储器地址读取(例如,开始)并存储到高速缓冲存储器114的数据量的值。根据一些实施例,预提取操作执行器113监视存储器子系统110的指定存储器地址,以确定当将新的命令相关数据存储到指定的存储器地址时且当检测到新的命令相关数据时,预提取操作执行器113可基于所述新的命令相关数据执行预提取操作。以此方式使用存储器子系统写入命令表示用于实施用于请求预提取操作的存储器子系统命令的基于告示的方法。通过使用存储器子系统写入命令,各种实施例可使用现有存储器协议(例如,现有的非确定性存储器协议)的写入命令(例如,XWRITE或PWRITE),而无需扩展存储器协议以包含用于预提取操作的新命令。
响应于接收到用以执行预提取操作的存储器子系统命令,预提取操作执行器113可决定是否执行预提取操作。例如,确定是否执行预提取操作可包括确定高速缓冲存储器114是否已存储来自给定存储器地址的有效/当前数据。
作为另一实例,在存储器子系统110接收到存储器子系统命令之后,预提取操作执行器113可为预提取操作指派优先级,其中确定是否执行预提取操作包括确定指派给另一待定操作(例如,待定非预提取操作)的另一优先级是否低于指派给预提取操作的优先级级别。另一操作可为在存储器子系统110接收到用以请求预提取操作的存储器子系统命令之前或之后所请求的一个操作(例如,经由来自主机系统120的存储器子系统命令)。在确定其它待定操作的其它优先级级别不高于预提取操作的优先级级别(例如,其它待定操作的优先级级别低于或等于预提取操作的优先级)的情况下,预提取操作执行器113可确定将执行预提取操作。然而,如果确定其它待定操作的其它优先级级别高于预提取操作的优先级级别(例如,高优先级读取操作处于待定状态),则预提取操作执行器113可确定将不执行预提取操作(至少在确定时)。预提取操作执行例113可确定是例如周期性地执行预提取操作,还是执行预提取操作直到预提取操作被取消(例如,响应于其它待定操作是对同一给定存储器地址的读取操作)。对于一些实施例,通过耦合到存储器子系统110的高速缓冲存储器114的高速缓冲存储器控制器促进预提取操作(及其它操作)的指派。此外,对操作的优先级级别指派可是根据提供给存储器子系统110的用户定义配置(例如,指示预提取操作将被指派最高优先级级别的用户偏好)。
响应于确定将执行预提取操作,预提取操作执行器113可通过从对应于给定存储器地址的存储器装置130、140中的至少一个上的位置读取目标数据并然后将目标数据存储到高速缓冲存储器114来执行预提取操作。如此做,预提取操作可用目标数据预加载高速缓冲存储器114,此将有助于避免在存储器子系统110接收到并处理从同一给定存储器地址请求数据的后续存储器子系统读取命令时出现高速缓冲未命中。对于一些实施例,预提取操作执行例113实现或致使存储器子系统110的高速缓冲存储器控制器(未展示)从存储器子系统110的给定存储器地址读取目标数据,并将目标数据存储到高速缓冲存储器114(例如,在高速缓冲存储器114上的适当位置处)。
关于预提取操作执行器113、软件编译器127及软件125的操作的更多细节在下文进行描述。
图2到4为根据本公开的一些实施例说明主机系统请求对存储器子系统执行预提取操作的实例存储器协议的图。图2根据实例NVDIMM-P存储器协议200说明实例存储器子系统命令,通过所述NVDIMM-P存储器协议,主机系统(例如,120)请求存储器子系统(例如,110)对存储器子系统执行预提取操作。如所展示,所请求的预提取操作涉及源存储器地址(SRCADDR)、与所请求的预提取取操作相对应的命令编码(例如,命令识别符)(PREFETCH)以及用于执行预提取操作的命令相关数据(DATA FOR PRE-FETCH)。通过主机系统将以下各项发送到存储器子系统来请求预提取操作:在命令(CMD)信号线上的与预提取操作相对应的命令编码(PREFETCH)及SRCADDR;及在数据(DQ)信号线上的DATA FOR PRE-FETCH。在命令编码(PREFETCH)及SRCADDR在命令(CMD)信号线上发送后的确定性延迟之后,可在数据(DQ)信号线上发送DATA FOR PRE-FETCH。经由CMD及DQ信号线发送PREFETCH、SRCADDR及DATA FORPRE-FETCH表示根据实例NVDIMM-P存储器协议200发送用以请求预提取操作的实例存储器子系统命令。SRCADDR对应于存储器子系统的存储器装置(例如,130、140)上的位置,预提取操作从所述位置读取数据,然后预提取操作将所述数据存储在存储器子系统的高速缓冲存储器上。DATA FOR PRE-FETCH可包含预提取操作使用的数据,例如指示将从SRCADDR读取(例如,从SRCADDR开始)的数据量(例如,数据长度、行数等)。
图3根据实例NVDIMM-P存储器协议300说明实例存储器子系统命令,通过所述实例NVDIMM-P存储器协议,主机系统(例如,120)请求存储器子系统(例如,110)对存储器子系统执行预提取操作。类似于图2,所请求的预提取操作涉及在命令(CMD)信号线上的源存储器地址(SRCADDR)、在命令(CMD)信号线上的与所请求的预提取取操作相对应的命令编码(例如,命令识别符)(PREFETCH)以及在数据(DQ)信号线上的用于执行预提取操作的命令相关数据(DATA FOR PRE-FETCH)。
如在图3中所示出,在数据(DQ)信号线上发送DATA FOR PRE-FETCH之后的某一时间(例如,可变延迟),主机系统(例如,120)将存储器子系统读取命令(READ)发送到命令(CMD)信号线上的存储器子系统。同样如所展示,存储器子系统读取命令(READ)与和存储器子系统读取预提取命令(PRE-FETCH)一起发送的相同的SRCADDR一起发送。在非确定性延迟之后,存储器子系统用在RSP_n信号线上的信号305对存储器子系统读取命令(READ)做出响应,所述信号向主机系统指示存储器子系统读取命令(READ)所请求的数据已准备好从存储器子系统发送到主机系统。响应于信号305,主机系统向存储器子系统发送存储器子系统发送命令(SEND),存储器子系统通过在确定性延迟后在数据(DQ)信号线上将来自高速缓冲存储器的数据(READ DATA FROM CACHE)发送回到主机系统来对所述存储器子系统发送命令做出响应。根据各种实施例,如果发送DATA FOR PRE-FETCH与发送存储器子系统读取命令(READ)之间的可变延迟足以使存储器子系统完成预提取操作,那么在存储器子系统处理存储器子系统读取命令(READ)时,由存储器子系统读取命令(READ)所请求的目标数据将已被存储(例如,被加载)到高速缓冲存储器中(通过预提取操作)。因此,当存储器子系统处理存储器子系统读取命令(READ)时,将产生高速缓冲命中,并且存储器子系统将避免由高速缓冲未命中所致的执行减速(此原本将在预提取操作在存储器子系统读取命令之前尚未被请求且完成的情况下发生)。
图4根据实例NVDIMM-P存储器协议400说明实例存储器子系统命令,通过所述NVDIMM-P存储器协议,主机系统(例如,120)通过存储器子系统命令请求存储器子系统(例如,110)对存储器子系统执行预提取操作。与图2及3相比,图4说明使用用以写入(例如,XWRITE或PWRITE命令)的存储器子系统命令来促进对预提取操作的请求。特定来说,请求预提取操作涉及与写入操作相对应的命令编码(例如,命令识别符)(WRITE)、目的存储器地址(DESTADDR)及用于执行预提取操作的命令相关数据(DATA FOR PRE-FETCH)。通过主机系统将以下各项发送到存储器子系统来请求预提取操作:在命令(CMD)信号线上的与写入操作相对应的命令编码(WRITE)及DESTADDR;及在数据(DQ)信号线上的DATA FOR PRE-FETCH。在命令编码(WRITE)及DESTADDR在命令(CMD)信号线上发送后的确定性延迟之后,可在数据(DQ)信号线上发送DATA FOR PRE-FETCH。根据实例NVDIMM-P存储器协议400,经由CMD及DQ信号线发送WRITE、DESTADDR及DATA FOR PRE-FETCH表示发送实例存储器子系统写入命令,以请求预提取操作。DESTADDR对应于相关联于(例如,保留用于)执行本文中所描述的预提取操作的存储器子系统的存储器装置(例如,130、140)上的位置。对于一些实施例,存储器子系统监视与DESTADDR相对应的位置,以确定新的命令相关数据是否已被存储在(写入到)位置,并且响应于检测新的命令相关数据的存储,存储器子系统根据新的命令相关数据执行预提取操作。通过以此方式使用存储器子系统写入命令,可相对于存储器子系统现有存储器协议(例如,现有的非确定性存储器协议,例如NVDIMM-P存储器协议)实施各种实施例的预提取操作,而无需扩展或修改现有存储器协议(例如,添加新的命令以请求预提取操作)。
如在图4中所展示,主机系统(例如,120)将具有DESTADDR的存储器子系统写入命令(WRITE)在命令(CMD)信号线上发送到的存储器子系统。在命令编码(WRITE)及DESTADDR在命令(CMD)信号线上发送后的确定性延迟之后,可在数据(DQ)信号线上发送DATA FORPRE-FETCH。例如,DATA FOR PRE-FETCH可包含预提取操作将从中读取(例如,预提取)数据的源存储器地址(对应于存储器子系统的存储器装置上的位置)。如本文中所描述,预提取操作将把此读取数据存储到(例如,将此数据加载到)存储器子系统的高速缓冲存储器。DATA FOR PRE-FETCH还可包含指示待从源存储器地址读取(例如,开始)的数据量(例如,数据长度、行数等)的值。在发送DATA FOR PRE-FETCH之后出现非确定性延迟之后,存储器子系统用RSP_n信号线上的信号405对存储器子系统写入命令(WRITE)做出响应,所述信号线指示主机系统将DATA FOR PRE-FETCH成功地写入到DESTADDR。随后,存储器子系统将检测存储到DESTADDR的新命令相关数据(DATA FOR PRE-FETCH),并相应地执行(或尝试执行)预提取操作。
虽然未在图4中说明,但最终(例如,在可变延迟之后),主机系统可发送存储器子系统读取命令,类似于关于图3所说明。根据各种实施例,如果发送DATA FOR PRE-FETCH与发送存储器子系统读取命令之间的可变延迟足以使存储器子系统完成预提取操作,那么在存储器子系统处理存储器子系统读取命令时,由存储器子系统读取命令所请求的目标数据将已被存储(例如,被加载)到高速缓冲存储器中(通过预提取操作)。因此,当存储器子系统处理存储器子系统读取命令时,将产生高速缓冲命中,并且存储器子系统将避免由高速缓冲未命中所致的执行减速(此可在预提取操作在存储器子系统读取命令之前尚未被请求的情况下发生)。
图5及8为根据本公开的一些实施例的用于对存储器子系统的预提取操作的实例方法的流程图。方法500、600、700及800可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500、600由图1的存储器子系统控制器115基于预提取操作执行器113执行。另外或替代地,对于一些实施例,方法500、600至少部分地由主机系统120执行。在一些实施例中,方法700、800由主机系统120基于软件125执行。另外或替代地,对于一些实施例,方法700、800至少部分由图1的存储器子系统控制器115执行。尽管以特定的顺序或次序展示,但除非另有规定,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中需要所有过程。其它过程流程也是可能的。
现在参考图5的方法500,在操作502处,(例如,存储器子系统控制器115的)处理装置从主机系统(例如,120)接收用以执行预提取操作的存储器子系统命令,所述预提取操作自存储器子系统的给定存储器地址读取目标数据,并将目标数据存储到高速缓冲存储器(例如,114),而无需结合预提取操作向主机系统发送响应(例如,在RSP_n信号线上没有NVDIMM-P响应,且在数据(DQ)信号线上没有返回的数据)。替代地,对于一些实施例,预提取操作致使存储器子系统从存储器子系统的给定存储器地址读取目标数据,将目标数据存储到高速缓冲存储器(例如,114)且(然后)发送简单的响应(例如,通过RSP_n信号线上的NVDIMM-P响应而非数据(DQ)信号线上的返回数据确认接收到所述预提取操作)。存储器子系统命令可为与非确定性存储器协议相关联的命令。
对于一些实施例,存储器子系统命令包括非确定性存储器协议的命令识别符,所述非确定性存储器协议与执行预提取操作特别相关联。存储器子系统命令可包含包括给定存储器地址的命令相关数据,所述命令相关数据可进一步包含指示从存储器子系统的给定存储器地址读取(例如,开始)并存储到高速缓冲存储器的数据量的值。
另外,对于一些实施例,存储器子系统命令包括与写入命令相关联的非确定性存储器协议的命令识别符。存储器子系统命令可包含命令相关数据,所述命令相关数据包括给定存储器地址,且可进一步包括指示将从存储器子系统的给定存储器地址读取(例如,开始)并存储到高速缓冲存储器的数据量的值。
对于一些实施例,存储器子系统命令指示存储器子系统将命令相关数据写入与执行预提取操作相关联的(存储器子系统的)指定存储器地址。因此,对于一些实施例,接收用以执行预提取操作的存储器子系统命令包括监视存储器子系统的指定存储器地址以获得新的命令相关数据。可响应于检测到新的命令相关数据已被存储在指定的存储器地址处而执行操作504及506。
在操作504处,(例如,存储器子系统控制器115的)处理装置确定是否执行预提取操作。例如,确定是否执行预提取操作可包括确定高速缓冲存储器(例如,114)是否已存储来自给定存储器地址的有效/当前数据。作为另一实例,确定是否执行预提取操作可包括确定指派给另一待定操作的另一优先级级别(例如,待定的非提取操作)是否低于指派给预提取操作的优先级级别。
响应于确定将执行预提取操作(在操作504处),在操作506处,(例如,存储器子系统控制器115的)处理装置通过从一组存储器装置上(例如,在存储器装置130、140上)对应于给定存储器地址的位置读取目标数据并将目标数据存储到高速缓冲存储器来执行或致使执行预提取操作。对于一些实施例,处理装置通过存储器子系统(例如,110)的高速缓冲存储器控制器致使执行或致使执行预提取操作。例如,高速缓冲存储器控制器可从所述组存储器装置(例如,130、140)上的位置读取目标数据,且然后将目标数据存储到高速缓冲存储器(例如,114上的适当位置(例如,与给定存储器地址相关联的位置)。
现在参考图6的方法600,操作602类似于如关于图5所描述的方法500的操作502。在操作604处,(例如,存储器子系统控制器115的)处理装置在操作602处从主机系统(例如,120)接收存储器子系统命令之后,为预提取操作指派第一优先级级别。可根据例如存储器子系统(例如,110)的配置(例如,用户偏好或服务质量(QoS)设置数据)为预提取操作指派第一优先级级别,所述配置可将优先级级别映射到操作类型(例如,与读取操作相比,为预提取操作指派最高优先级或最低优先级)。
在操作606处,(例如,存储器子系统控制器115的)处理装置基于在操作604处指派给预提取操作的第一优先级级别确定是否执行预提取操作。对于一些实施例,处理装置通过以下操作做出此确定:确定待定操作(例如,待定非预提取操作)的第二优先级级别是否高于预提取操作的第一优先级级别,并响应于确定待定操作的第二优先级级别不高于(例如,低于或等于)在操作604处指派给预提取操作的第一优先级级别而确定将执行预提取操作。替代地,处理装置可响应于确定第二优先级级别高于第一优先级级别而推迟执行预提取操作。待定的操作可包含在由操作602处接收到的存储器子系统命令所请求的预提取操作之后所请求(例如,经由来自主机系统120的存储器子系统命令)的操作。
对于一些实施例,操作608类似于如关于图5所描述的方法500的操作506。
在操作610时,(例如,存储器子系统控制器115的)处理装置从主机系统(例如,120)接收用以对存储器子系统的给定存储器地址(操作602的同一给定存储器地址)执行读取操作的存储器子系统命令。对于一些实施例,操作606包含确定在接收到用以执行预提取操作的存储器子系统命令之后但在执行预提取操作之前是否接收到用以执行读取操作的存储器子系统命令。响应于确定在接收到用以执行预提取操作的存储器子系统命令之后但在执行预提取操作之前接收到用以执行读取操作的存储器子系统命令,处理装置可确定将不执行操作,并处理用以执行读取操作的存储器子系统命令。预提取操作可被取消(在已在处理中的情况下被抢占)有助于处理用以执行读取操作的存储器子系统命令。
在操作612处,(例如,存储器子系统控制器115的)处理装置通过向主机系统(例如,120)提供来自高速缓冲存储器(例如,114)的目标数据来处理用以执行读取操作的存储器子系统命令(在操作610处接收)的读取操作。如果在读取操作处理之前成功地执行了预提取操作,那么可处理读取操作,而不会遇到高速缓冲未命中(鉴于预提取操作在处理读取操作之前存储目标数据)。
现在参考图7的方法700,在操作702时,(例如,主机系统120的)处理装置在耦合到存储器子系统(例如,110)的主机系统(例如,120)上执行软件应用程序(例如,125)。对于各种实施例,软件应用程序包括用于生成对预提取操作的请求的指令集。例如,软件应用程序可由软件编译器(例如,127)生成,所述软件编译器可致使软件应用程序包含指令集。
在操作704处,(例如,主机系统120的)处理装置通过软件应用程序(例如,125)生成执行预提取操作的请求,所述预提取操作从存储器子系统的给定存储器地址读取目标数据,并将目标数据存储到存储器子系统的高速缓冲存储器(例如,114),而无需存储器子系统(例如,110)结合预提取操作发送响应到主机系统与(例如,在RSP_n信号线上没有NVDIMM-P响应,且在数据(DQ)信号线上没有返回的数据)。如本文中所指示,替代地,预提取操作可致使存储器子系统(例如,110)结合预提取操作发送简单的响应(例如,通过RSP_n信号线上的NVDIMM-P响应而非数据(DQ)信号线上未的返回数据来确认接收到预提取操作)。
在操作706处,(例如,主机系统120的)处理装置基于在操作704处生成的请求将用以执行预提取操作的存储器子系统命令从主机系统(例如,120)发送到存储器子系统(例如,110)。如本文中所描述,存储器子系统命令可与非确定性存储器协议(例如,NVDIMM-P存储器协议)相关联,且如此,存储器子系统命令可根据非确定性存储器协议从主机系统(例如,120)发送到存储器子系统(例如,110)。
现在参考图8的方法800,操作802、804、806分别类似于如关于图7所描述的方法700的操作702、704、706。在操作808处,(例如,主机系统120的)处理装置通过软件应用程序(例如,125)生成对存储器子系统(例如,110)的给定存储器地址执行读取操作的第二请求。
在操作810处,(例如,主机系统120的)处理装置基于在操作808处生成的第二请求将用以执行读取操作的存储器子系统命令从主机系统(例如,120)发送到存储器子系统(例如,110)。对于一些实施例,用以执行读取操作的存储器子系统命令包括现有存储器协议(例如,现有的非确定性存储器协议,例如NVDIMM-P存储器协议)的写入命令。
在操作812处,(例如,主机系统120的)处理装置响应于在操作810处发送的存储器子系统命令接收来自存储器子系统(例如,110)的目标数据。对于一些实施例,根据非确定性存储器协议(例如,NVDIMM-P存储器协议)从存储器子系统(例如,110)接收目标数据。对于一些实施例,从存储器子系统(例如,110)接收的目标数据是由存储器子系统从存储器子系统的高速缓冲存储器(例如,114)提供,其中由于预提取操作(由在操作806处发送的存储器子系统命令所请求)存储在高速缓冲存储器中的目标数据由存储器子系统(例如,110)成功地执行。另外,对于一些实施例,根据非确定性存储器协议(例如,NVDIMM存储器协议)从存储器子系统(例如,110)接收目标数据。例如,(例如,主机系统120的)处理装置可从存储器子系统接收给定响应(例如,RSP_n信号线上的响应),所述给定回应指示目标数据准备好从存储器子系统读取。做为回应,(例如,主机系统120的)处理装置可将用以执行发送操作的存储器子系统命令从主机系统(例如,120)发送到存储器子系统(例如,110)。响应于用以执行发送操作的存储器子系统命令,(例如,主机系统120的)处理装置可从存储器子系统(例如,110)接收目标数据,其中存储器子系统从高速缓冲存储器(例如,114)提供目标数据。如本文中所描述,由于存储器子系统(例如,110)成功地执行预提取操作(由在操作806处发送的存储器子系统命令所请求),目标数据可存储在高速缓冲存储器中。
图9A及9B提供说明在其中执行用于对存储器子系统的预提取操作的方法的一些实施例的上下文中的计算环境100的组件之间的交互的交互图。方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑,微码,装置的硬件,集成电路等),软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,所述方法由主机系统(例如,120)、存储器子系统控制器(例如,115)、存储器装置(例如,130、140)、高速缓冲存储器(例如,114)或其某一组合执行。尽管操作以特定的顺序或次序展示,但除非另有说明,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中需要所有过程。在图9中所说明的实例的上下文中,主机系统可包含主机系统120,存储器子系统控制器可包含存储器子系统控制器115,存储器装置可包含存储器装置130或140,且高速缓冲存储器可包含高速缓冲存储器114。
如在图9A中所展示,在操作902处,主机系统120在主机系统120上执行软件应用程序(例如,125)。在操作904处,主机系统120由软件应用程序(由操作902执行)生成执行预提取操作的请求,所述预提取操作从存储器子系统110的给定存储器地址读取目标数据,并将目标数据存储到高速缓冲存储器114,而无需存储器子系统110结合预提取操作向主机系统发送响应。在操作906处,主机系统120基于在操作904处生成的请求向存储器子系统110发送用以执行预提取操作的存储器子系统命令。
在操作920处,存储器子系统控制器115从主机系统120接收用以执行预提取操作的存储器子系统命令。响应于所接收存储器子系统命令,在操作922处,存储器子系统控制器115确定是否执行预提取操作。响应于确定将执行预提取操作(在操作922处),在操作924处,存储器子系统控制器115通过从对应于给定存储器地址的存储器装置130、140中的至少一个上的位置读取目标数据并将目标数据存储到高速缓冲存储器114来执行或预提取操作。在操作940处,至少一个存储器装置促进通过操作924从位置(对应于给定存储器地址)读取目标数据。另外,在操作950处,高速缓冲存储器114促进通过操作924将目标数据存储在高速缓冲存储器114上。
最终,在操作908处,主机系统120通过软件应用程序(由操作902执行)生成对存储器子系统110的给定存储器地址执行读取操作的请求。在操作910处,主机系统120基于在操作908处生成的请求向存储器子系统110发送用以执行读取操作的存储器子系统命令。
在操作926处,存储器子系统控制器115接收用以对存储器子系统的给定存储器地址(操作904的同一给定存储器地址)执行读取操作的存储器子系统命令。现在参考图9B,在操作928处,存储器子系统控制器115通过向主机系统120提供来自高速缓冲存储器114的目标数据来处理读取操作,其中目标数据由于操作924而被存储在高速缓冲存储器114上。在操作912处,主机系统120响应于在操作910处发送的存储器子系统命令而接收来自存储器子系统110的目标数据。
图10呈计算机系统1000形式的实例性机器,在计算机系统内可执行用于致使机器执行本文中所论述的方法中的任何一或多个的指令集。在一些实施例中,计算机系统1000可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到,或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的软件125的操作)。在替代实施例中,所述机器可连接(例如,联网)到局域网(LAN)、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份运行,作为对等(或分布式)网络环境中的对等机器运行,或作为云计算基础设施或环境中的服务器或客户端机器运行。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或网桥,或能够执行规定由所述机器进行的动作的指令集(按顺序或其它方式)的任何机器。此外,虽然说明单个机器,但术语“机器”还应被视为包含单独或联合执行一(或多个)指令集以执行本文所论述的方法中的任何一或多个的任何机器集合。
实例计算机系统1000包含经由总线1030彼此通信的处理装置1002、主存储器1004(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus公司DRAM(RDRAM)等,静态存储器1006(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储装置1018。
处理装置1002表示一或多个通用处理装置,例如微处理器、中央处理单元,等等。更具体地,处理装置1002可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集组合的处理器。处理装置1002还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器,等等。处理装置1002经配置以执行用于执行本文中所论述的操作及步骤的指令1026。计算机系统1000可进一步包含网络接口装置1008以经由网络1020进行通信。
数据存储装置1018可包含机器可读存储媒体1024(也被称作为计算机可读媒体),其上存储体现本文中所描述的方法或功能中的任何一或多个的一或多个集合的指令1026或软件。指令1026还可在计算机系统1000执行所述指令期间完全或至少部分地驻留在主存储器1004内及/或处理装置1002内,主存储器1004和处理装置1002也构成机器可读存储媒体。机器可读存储媒体1024、数据存储装置1018及/或主存储器1004可对应于图1的存储器子系统110。
在一个实施例中,指令1026包含用以实施与如本文中所描述对存储器子系统的预提取操作相对应的功能的指令(例如,图1的软件125)。虽然机器可读存储媒体1024在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被视为包含能够存储或编码指令集以供机器执行且致使机器执行本公开的方法中的任何一或多个的任何媒体。因此,术语“机器可读存储媒体”应被视为包含(但不限于)固态存储器、光学媒体及磁媒体。
已在计算机存储器内的算法及数据位的操作的符号表示的形式来呈现前面的详细描述的一些部分。这些算法描述及表示为由所属数据处理领域的技术人员用于以向所属领域的其它技术人员传达其工作的本质的方式。算法此处且通常被认为导致所要结果的自洽操作序列。操作为需要物理操纵物理量的操作。通常,但非必需地,这些量可采取能够存储,组合,比较或以其它方式操纵的电或磁信号的形式。将这些信号称作位、值、元素、符号、字符、项、数字等等有时已证明是便利的(主要出于共用的原因)。
然而,应记住,所有这些术语及类似术语均与适当的物理量相关联,且仅作为应用于这些量的方便标签。本公开可是指计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本公开还涉及用于执行本文中操作的设备。此设备可为特定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘,只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡,或适用于存储电子指令的任何类型的媒体,每一者都耦合到计算机系统总线。
本文中所呈现的算法及显示并不与任何特定计算机或其它设备内在地相关。根据本文中的教示,各种通用系统可与程序一起使用,或可证明构造更专用的装置以执行所述方法为方便的。各种这些系统的结构将如下文描述中所述。另外,不参考任何特定编程语言描述本公开。应理解,可使用各种编程语言来实施如本文所描述的本公开的教示。
本公开可经提供作为计算机程序产品或软件,其可包含机器可读媒体,具有存储于其上的指令,所述指令可用于对计算机系统(或其它电子装置)进行编程以根据本公开执行处理。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁性磁盘存储媒体、光存储媒体、快闪存储器组件等。
在上述说明书中,本公开的实施例已参考其特定实例实施例进行描述。显而易见的是,在不脱离所附权利要求书中所阐明的本公开的实施例的更广泛的精神及范围的情况下,可对其进行各种修改。因此,说明书及图式应考虑说明性而非限制性。
Claims (20)
1.一种存储器子系统,其包括:
一组存储器装置;
高速缓冲存储器;及
处理装置,其以操作方式耦合到所述组存储器装置,经配置以执行包括以下的操作:
从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从所述存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述高速缓冲存储器,而无需结合所述预提取操作经由响应信号线向所述主机系统发送响应信号以及经由数据信号线向所述主机系统发送数据,所述响应信号线和所述数据信号线中的每一者耦合在所述存储器子系统和所述主机系统之间,所述响应信号线与所述数据信号线分开,所述存储器子系统命令与非确定性存储器协议相关联;
确定是否执行所述预提取操作;及
响应于确定将执行所述预提取操作,通过从对应于所述给定存储器地址的所述组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
2.根据权利要求1所述的存储器子系统,其中所述存储器子系统命令包括所述非确定性存储器协议的命令识别符,所述命令识别符与执行所述预提取操作特别相关联,所述存储器子系统命令进一步包括命令相关数据,所述命令相关数据包括所述给定存储器地址。
3.根据权利要求2所述的存储器子系统,其中所述命令相关数据进一步包括指示将从所述存储器子系统的所述给定存储器地址开始读取并被存储到所述高速缓冲存储器的数据量的值。
4.根据权利要求1所述的存储器子系统,其中所述存储器子系统命令包括与写入命令相关联的所述非确定性存储器协议的命令识别符,所述存储器子系统命令进一步包括命令相关数据,所述命令相关数据包括所述给定存储器地址,所述存储器子系统命令指示所述存储器子系统将所述命令相关数据写入到与所述预提取操作相关联的所述存储器子系统的指定存储器地址。
5.根据权利要求4所述的存储器子系统,其中所述接收用以执行所述预提取操作的所述存储器子系统命令包括:
监视所述存储器子系统的所述指定存储器地址以获得新的命令相关数据,响应于检测到所述新的命令相关数据已被存储在所述指定存储器地址处而执行所述确定是否执行所述预提取操作以及所述执行所述预提取操作。
6.根据权利要求4所述的存储器子系统,其中所述命令相关数据进一步包括指示将从所述存储器子系统的所述给定存储器地址开始读取并被存储到所述高速缓冲存储器的数据量的值。
7.根据权利要求1所述的存储器子系统,其中所述操作进一步包括:
在从所述主机系统接收所述存储器子系统命令之后,为所述预提取操作指派第一优先级级别,所述确定是否执行所述预提取操作包括:
确定待定非预提取操作的第二优先级级别是否高于所述预提取操作的所述第一优先级级别;及
响应于确定所述第二优先级级别不高于所述第一优先级级别而确定将执行所述预提取操作。
8.根据权利要求7所述的存储器子系统,其中所述待定非预提取操作是在所述预提取操作后请求。
9.根据权利要求7所述的存储器子系统,其中所述为所述预提取操作指派所述第一优先级级别包括根据用户偏好数据或所述存储器子系统可存取的服务质量设置数据中的至少一个为所述预提取操作指派所述第一优先级级别。
10.根据权利要求1所述的存储器子系统,其中所述操作进一步包括:
在从所述主机系统接收所述存储器子系统命令之后,为所述预提取操作指派第一优先级级别,所述确定是否执行所述预提取操作包括:
确定待定非预提取操作的第二优先级级别是否低于所述预提取操作的所述第一优先级级别;及
响应于确定所述第二优先级级别高于所述第一优先级级别而推迟执行所述预提取操作。
11.根据权利要求1所述的存储器子系统,其中所述操作进一步包括:
在所述执行所述预提取操作之后:
从所述主机系统接收用以相对于所述存储器子系统的所述给定存储器地址执行读取操作的第二存储器子系统命令;及
通过向所述主机系统提供来自所述高速缓冲存储器的所述目标数据来处理所述读取操作。
12.根据权利要求1所述的存储器子系统,其中所述操作进一步包括:
从所述主机系统接收用以从所述存储器子系统的所述给定存储器地址执行读取操作的第二存储器子系统命令,所述确定是否执行所述预提取操作包括:
确定是否在所述接收用以执行所述预提取操作的所述存储器子系统命令之后但在所述执行所述预提取操作之前接收所述第二存储器子系统命令;及
响应于确定在所述接收用以执行所述预提取操作的所述存储器子系统命令之后但在所述执行所述预提取操作之前接收所述第二存储器子系统命令:
确定将不执行所述预提取操作;及
处理所述读取操作。
13.根据权利要求1所述的存储器子系统,其中所述非确定性存储器协议包括非易失性双列直插式存储器模块-P NVDIMM-P存储器协议。
14.一种方法,其包括:
从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述存储器子系统的高速缓冲存储器,而无需结合所述预提取操作经由响应信号线向所述主机系统发送响应信号以及经由数据信号线向所述主机系统发送数据,所述响应信号线和所述数据信号线中的每一者耦合在所述存储器子系统和所述主机系统之间,所述响应信号线与所述数据信号线分开,所述存储器子系统命令与非确定性存储器协议相关联;
确定是否执行所述预提取操作;及
响应于确定将执行所述预提取操作,通过从对应于所述给定存储器地址的所述存储器子系统的一组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
15.根据权利要求14所述的方法,其中所述存储器子系统命令包括所述非确定性存储器协议的命令识别符,所述命令识别符与执行所述预提取操作特别相关联,所述存储器子系统命令进一步包括命令相关数据,所述命令相关数据包括所述给定存储器地址。
16.根据权利要求14所述的方法,其中所述存储器子系统命令包括与写入命令相关联的所述非确定性存储器协议的命令识别符,所述存储器子系统命令进一步包括命令相关数据,所述命令相关数据包括所述给定存储器地址,所述存储器子系统命令指示所述存储器子系统将所述命令相关数据写入到与所述预提取操作相关联的所述存储器子系统的指定存储器地址。
17.根据权利要求16所述的方法,其中所述接收用以执行所述预提取操作的所述存储器子系统命令包括:
监视所述存储器子系统的所述指定存储器地址以获得新的命令相关数据,响应于检测到所述新的命令相关数据已被存储在所述指定存储器地址处而执行所述确定是否执行所述预提取操作以及所述执行所述预提取操作。
18.根据权利要求16所述的方法,其中所述命令相关数据进一步包括指示将从所述存储器子系统的所述给定存储器地址开始读取并被存储到所述高速缓冲存储器的数据量的值。
19.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由存储器子系统的处理装置执行时致使所述处理装置执行包括以下的操作:
从主机系统接收用以执行预提取操作的存储器子系统命令,所述预提取操作从所述存储器子系统的给定存储器地址读取目标数据并将所述目标数据存储到所述存储器子系统的高速缓冲存储器,而无需结合所述预提取操作经由响应信号线向所述主机系统发送响应信号以及经由数据信号线向所述主机系统发送数据,所述响应信号线和所述数据信号线中的每一者耦合在所述存储器子系统和所述主机系统之间,所述响应信号线与所述数据信号线分开,所述存储器子系统命令与非确定性存储器协议相关联;及
响应于接收到所述存储器子系统命令,通过从对应于所述给定存储器地址的所述存储器子系统的一组存储器装置上的位置读取所述目标数据,并将所述目标数据存储到所述高速缓冲存储器,来执行预提取操作。
20.一种方法,其包括:
通过软件应用程序生成执行预提取操作的请求,所述预提取操作从存储器子系统的给定存储器地址读取目标数据,并将所述目标数据存储到所述存储器子系统的高速缓冲存储器,而无需所述存储器子系统结合所述预提取操作经由响应信号线向主机系统发送响应信号以及经由数据信号线向所述主机系统发送数据,所述响应信号线和所述数据信号线中的每一者耦合在所述存储器子系统和所述主机系统之间,所述响应信号线与所述数据信号线分开;及
将用以基于所述请求执行所述预提取操作的存储器子系统命令从所述主机系统发送到所述存储器子系统,所述存储器子系统命令与非确定性存储器协议相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/694,605 | 2019-11-25 | ||
US16/694,605 US11210225B2 (en) | 2019-11-25 | 2019-11-25 | Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835815A CN112835815A (zh) | 2021-05-25 |
CN112835815B true CN112835815B (zh) | 2022-08-05 |
Family
ID=75923311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011322780.3A Active CN112835815B (zh) | 2019-11-25 | 2020-11-23 | 具有高速缓冲存储器的存储器子系统的预提取 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11210225B2 (zh) |
CN (1) | CN112835815B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210225B2 (en) | 2019-11-25 | 2021-12-28 | Micron Technology, Inc. | Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961631A (en) * | 1997-07-16 | 1999-10-05 | Arm Limited | Data processing apparatus and method for pre-fetching an instruction in to an instruction cache |
US6993630B1 (en) * | 2002-09-26 | 2006-01-31 | Unisys Corporation | Data pre-fetch system and method for a cache memory |
CN107851064A (zh) * | 2015-07-23 | 2018-03-27 | 高通股份有限公司 | 高速缓冲存储器系统中的地址转换和数据预取 |
CN110442304A (zh) * | 2018-05-04 | 2019-11-12 | 美光科技公司 | 用以执行连续读取操作的设备和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895474B2 (en) * | 2002-04-29 | 2005-05-17 | Micron Technology, Inc. | Synchronous DRAM with selectable internal prefetch size |
US6983356B2 (en) * | 2002-12-19 | 2006-01-03 | Intel Corporation | High performance memory device-state aware chipset prefetcher |
US7277991B2 (en) * | 2004-04-12 | 2007-10-02 | International Business Machines Corporation | Method, system, and program for prefetching data into cache |
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US9223705B2 (en) * | 2013-04-01 | 2015-12-29 | Advanced Micro Devices, Inc. | Cache access arbitration for prefetch requests |
US9367467B2 (en) * | 2014-08-22 | 2016-06-14 | Nvidia Corporation | System and method for managing cache replacements |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10346321B2 (en) * | 2017-05-04 | 2019-07-09 | Dell Products L.P. | Method to trigger NVDIMM save from remote management interface |
CN109254794A (zh) * | 2017-06-29 | 2019-01-22 | Nvxl技术股份有限公司 | 数据软件系统辅助 |
US11016669B2 (en) * | 2018-05-01 | 2021-05-25 | Qualcomm Incorporated | Persistent write data for energy-backed memory |
US11210225B2 (en) | 2019-11-25 | 2021-12-28 | Micron Technology, Inc. | Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host |
-
2019
- 2019-11-25 US US16/694,605 patent/US11210225B2/en active Active
-
2020
- 2020-11-23 CN CN202011322780.3A patent/CN112835815B/zh active Active
-
2021
- 2021-11-16 US US17/527,811 patent/US12007898B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961631A (en) * | 1997-07-16 | 1999-10-05 | Arm Limited | Data processing apparatus and method for pre-fetching an instruction in to an instruction cache |
US6993630B1 (en) * | 2002-09-26 | 2006-01-31 | Unisys Corporation | Data pre-fetch system and method for a cache memory |
CN107851064A (zh) * | 2015-07-23 | 2018-03-27 | 高通股份有限公司 | 高速缓冲存储器系统中的地址转换和数据预取 |
CN110442304A (zh) * | 2018-05-04 | 2019-11-12 | 美光科技公司 | 用以执行连续读取操作的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220075727A1 (en) | 2022-03-10 |
CN112835815A (zh) | 2021-05-25 |
US11210225B2 (en) | 2021-12-28 |
US20210157733A1 (en) | 2021-05-27 |
US12007898B2 (en) | 2024-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112384890B (zh) | 预测性分页以加速存储器存取 | |
US20220300431A1 (en) | Storing a logical-to-physical mapping in nand memory | |
US11669265B2 (en) | Memory sub-system-bounded memory function | |
CN115080458A (zh) | 在存储器子系统中高速缓存逻辑到物理映射信息 | |
US20210157736A1 (en) | Dynamic access granularity in a cache media | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113934666B (zh) | 数据接口桥的预取 | |
CN112835815B (zh) | 具有高速缓冲存储器的存储器子系统的预提取 | |
US11698756B2 (en) | Cache-based memory read commands | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
US20220308993A1 (en) | Host system notification based on entry miss | |
US11797198B2 (en) | Memory instruction for memory tiers | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
CN115639951A (zh) | 在存储器子系统中实施自动速率控制 | |
US11886348B2 (en) | Interleaved cache prefetching | |
US11734071B2 (en) | Memory sub-system tier allocation | |
US12026395B2 (en) | Operation based on consolidated memory region description data | |
US20210405876A1 (en) | Storing data based on a probability of a data graph | |
US20220291860A1 (en) | Operation based on consolidated memory region description data |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |