CN112835814A - 基于高速缓存的存储器读取命令 - Google Patents

基于高速缓存的存储器读取命令 Download PDF

Info

Publication number
CN112835814A
CN112835814A CN202011329752.4A CN202011329752A CN112835814A CN 112835814 A CN112835814 A CN 112835814A CN 202011329752 A CN202011329752 A CN 202011329752A CN 112835814 A CN112835814 A CN 112835814A
Authority
CN
China
Prior art keywords
memory
cache
subsystem
given
memory subsystem
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
Application number
CN202011329752.4A
Other languages
English (en)
Inventor
D·巴维什
P·A·拉弗拉塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112835814A publication Critical patent/CN112835814A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system

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)

Abstract

本申请涉及基于高速缓存的存储器读取命令。本文所描述的各种实施例涉及选择性地将例如根据非易失性双列直插式存储器模块‑P NVDIMM‑P存储器协议的推测性读取SREAD命令等基于高速缓存的读取命令发送到存储器子系统。

Description

基于高速缓存的存储器读取命令
技术领域
本公开的实施例大体上涉及存储器子系统,且更确切地说涉及基于高速缓存的读取命令。
背景技术
存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。
发明内容
根据本申请的一方面,提供一种系统。所述系统包括:处理装置;以及硬件存储器控制器,其用于处理由所述处理装置生成的存储器请求,所述硬件存储器控制器包括:存储器装置,其用以存储与发送到耦合到所述硬件存储器控制器的存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及执行操作的逻辑,所述操作包括:接收从所述存储器子系统的给定存储器地址读取数据的存储器请求;以及响应于接收到所述存储器请求:确定所述给定存储器地址是否当前被存储在所述存储器装置上;以及基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置上而将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
根据本申请的另一方面,提供一种硬件存储器控制器。所述硬件存储器控制器包括:硬件接口,其用于接收由处理装置生成的存储器请求;存储器装置,其用以存储与发送到耦合到所述硬件存储器控制器的存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及执行操作的逻辑,所述操作包括:通过所述硬件接口接收从所述存储器子系统的给定存储器地址读取数据的存储器请求;以及响应于接收到所述存储器请求:确定所述给定存储器地址是否当前被存储在所述存储器装置中;以及基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置中而将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
根据本申请的又一方面,提供一种方法。所述方法包括:在硬件存储器控制器处接收从耦合到所述硬件存储器控制器的存储器子系统的给定存储器地址读取数据的存储器请求,所述硬件存储器控制器包括存储器装置,所述存储器装置用以存储与发送到所述存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及响应于接收到所述存储器请求:由所述硬件存储器控制器确定所述给定存储器地址是否当前被存储在所述存储器装置上;以及基于所述确定所述给定存储器地址是否当前被存储于所述存储器装置中而由所述硬件存储器控制器将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,附图不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1示出根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2到4是根据本公开的一些实施例用于选择性地将基于高速缓存的读取命令发送到存储器子系统的实例方法的流程图。
图5A到5C提供交互图,其示出在其中执行一种用于选择性地将基于高速缓存的读取命令从主机系统发送到存储器子系统的方法的一些实施方案的上下文中计算环境的组件之间的交互。
图6是可在其中操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的方面是针对选择性地将基于高速缓存的读取命令发送到存储器子系统,例如使用非确定性存储器协议(例如,非易失性双列直插式存储器模块-P(NVDIMM-P)存储器协议)的存储器子系统。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个存储器组件的存储器子系统。主机系统可以提供数据以存储在存储器子系统处并且可以请求从存储器子系统检索数据。
例如NVDIMM-P存储器协议等一些非确定性存储器协议允许主机系统向存储器子系统发送不同类型的存储器子系统读取命令,所述存储器子系统读取命令可取决于情形在确定性时间长度或非确定性时间长度内发送数据(回到主机系统)。举例来说,在主机系统(充当主装置或起始器装置)和存储器子系统(充当从装置或目标装置)经由NVDIMM-P接口耦合的情况下,主机系统可针对指定存储器地址处的数据使用常规读取(XREAD)命令,或可针对指定存储器地址处的数据使用推测性读取命令(SREAD)命令。利用XREAD命令,存储器子系统可采取非确定性时间长度从指定存储器地址提取数据,且接着向主机系统发送(例如,在RSP_n信号线上)所述数据准备好发送到主机系统的指示。相比而言,利用SREAD命令,主机系统可请求从存储器子系统的高速缓存读取指定存储器地址处的数据,且响应于SREAD命令,存储器子系统可向主机系统发送(例如,作为元数据)SREAD在确定性时间长度之后导致高速缓存命中还是高速缓存未命中(也称为“SREAD命中”和“SREAD未命中”)的指示。如果由SREAD命令发生高速缓存命中(SREAD命中),则随高速缓存命中/未命中指示符传回所请求的数据(例如,在DQ信号线上)。然而,如果由SREAD命令发生高速缓存未命中(SREAD未命中),则在存储器子系统发送已发生高速缓存未命中的指示(例如,作为元数据)之后,存储器子系统可从指定存储器地址提取数据,且向主机系统发送(例如,在RSP_n信号线上)数据准备好发送到主机系统的指示。
相应地,在最佳案例情境中,利用SREAD命令,存储器子系统可在高速缓存命中发生的确定性时间长度内向主机系统提供数据,这可好于由XREAD命令采取的非确定性时间长度。然而,在高速缓存未命中发生的情况下,SREAD命令可能产生存储器子系统的额外成本(例如,损失),因为存储器子系统必须用高速缓存未命中来响应于主机系统(而XREAD不需要这样做),且此响应占据了数据总线。相比而言,因为XREAD命令不执行此额外步骤(指示高速缓存命中/未命中),所以XREAD命令可向主机系统提供何时数据将忙于读取响应的数据的保证。如此,响应于SREAD命令的高速缓存/SREAD未命中可表示存储器子系统原本已使用数据总线实际上将数据发送到主机系统(例如,使用XREAD命令)的机会成本。
本公开的方面通过以下操作解决上述和其它缺陷:基于从主机系统发送到存储器子系统的过去存储器子系统命令的历史选择性地将基于高速缓存的读取存储器子系统命令(例如SREAD命令)从主机系统发送(例如,发布)到存储器子系统。对于一些实施例,从主机系统发送到存储器子系统的过去存储器子系统命令的历史用于确定发送基于高速缓存的存储器子系统读取命令是否将可能产生高速缓存未命中(例如,SREAD未命中),这可使得存储器子系统在确定性时间长度(“确定性时间”)而非非确定性时间长度(“非确定性时间”)内提供读取命令所请求的数据。
举例来说,根据其中主机系统充当NVDIMM-P起始器且存储器子系统充当NVDIMM-P目标的一些实施例,主机系统包含用于存储一或多个标签的内容可寻址存储器(CAM),每一标签识别与先前从主机系统发送到存储器子系统的NVDIMM-P存储器子系统命令相关联的存储器地址。举例来说,存储在CAM上的标签可表示先前从主机系统发送到存储器子系统且原本可能致使存储在存储器地址处的数据当前被存储在存储器子系统的高速缓存中的存储器子系统命令(例如,XREAD命令)所参考的存储器地址。CAM可存储每一标签的时戳(例如,计算标签的寿命),且还可存储用于跟踪每一标签的有效位和脏位的数据。对于一些实施例,当主机系统希望根据NVDIMM-P存储器协议向存储器子系统发送读取命令时,主机系统使用CAM(例如,确切地说,存储在其上的所述一或多个标签)来确定主机系统是否应将NVDIMM-P基于高速缓存的读取命令(例如,SREAD命令)发送到存储器子系统以执行所述读取命令而非某一其它NVDIMM-P读取命令(例如,XREAD命令)。以此方式,主机系统可在命令的高速缓存命中(例如,SREAD命中)的概率为高时发送NVDIMM-P基于高速缓存的读取命令(例如,SREAD命令),且在高速缓存命中的概率不高时发送某一其它NVDIMM-P读取命令(例如,XREAD命令)。
通常,相比于使用非基于高速缓存的读取命令,基于高速缓存的读取命令(例如,SREAD)的高速缓存命中(例如,SREAD命中)可产生存储器子系统的较好性能,而基于高速缓存的读取命令的高速缓存未命中(例如,SREAD未命中)可产生存储器子系统的较差性能。相应地,相比于用于将基于高速缓存的读取命令发送到存储器子系统的传统方法/技术,如本文所描述的选择性地发送基于高速缓存的读取命令可改进存储器子系统的总体性能(例如,读取性能)。
如本文中所使用,基于高速缓存的存储器子系统读取命令可包含当所请求的数据存储在存储器子系统的高速缓存(例如,读取高速缓存)上时致使存储器子系统在确定性时间长度内发回所请求的数据(例如,发送所请求的数据准备好被读取的指示)的存储器子系统读取命令。基于高速缓存的存储器子系统读取命令可在所请求的数据当前不存储在高速缓存上的情况下使得存储器子系统发送高速缓存未命中响应。在发送高速缓存未命中响应之后,存储器子系统可在非确定性(例如,任意)时间长度内稍后发送所请求的数据(例如,发送所请求的数据准备好被读取的指示)。在所述非确定性时间长度期间,存储器子系统可从存储器子系统的存储器装置将所请求的数据提取到存储器子系统的高速缓存(例如,读取高速缓存)。基于高速缓存的存储器子系统读取命令的实例可包含(但不限于)根据NVDIMM-P存储器协议的SREAD命令。
如本文中所使用,非基于高速缓存的存储器子系统读取命令可包含致使存储器子系统在非确定性(例如,任意)时间长度内发回所请求的数据(例如,发送所请求的数据准备好被读取的指示)的存储器子系统读取命令。在所述非确定性时间长度期间,存储器子系统可从存储器子系统的存储器装置将所请求的数据提取到存储器子系统的高速缓存(例如,读取高速缓存)。基于高速缓存的存储器子系统读取命令的实例可包含(但不限于)根据NVDIMM-P存储器协议的XREAD命令。
尽管本文中相对于基于从主机系统发送到存储器子系统的过去存储器子系统命令的历史选择性地发送基于高速缓存的读取存储器子系统命令来描述各种实施例,但一些实施例使用替代的或额外方法来确定来自给定存储器地址的数据当前被存储在存储器子系统的高速缓存上的概率,且基于所述概率选择性地发送基于高速缓存的读取存储器子系统命令。举例来说,主机系统可感知存储器子系统如何跟踪或管理存储器子系统的高速缓存内的数据,且基于此感知执行高速缓存中的数据内容的主机侧跟踪。举例来说,在存储器子系统使用计数器或标签存储方法(利用最近最少使用(least recently used,LRU)策略)跟踪高速缓存数据内容的情况下,主机系统可使用相同跟踪方法来确定所请求的数据被存储在存储器子系统的高速缓存中的概率。
本文公开可选择性地将基于高速缓存的读取命令发送到存储器子系统的系统的一些实例,如本文所描述。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含介质,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类介质的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储装置(UFS)驱动器以及硬盘驱动器(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)、双列直插式存储器模块(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可包含处理器(处理装置)117,其被配置成执行存储在本地存储器119中的指令。在所示出的实例中,存储器子系统控制器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)装置。
存储器子系统110包含高速缓存114,其用于在执行存储器子系统110的操作(例如读取操作或写入操作)期间高速缓存数据。高速缓存114可包含存在于存储器子系统110的前端处的高速缓存,而存储器装置130、140可存在于存储器子系统110的后端处。通常,高速缓存114具有比存储器子系统110的存储器装置(例如,130、140)中的一或多个更快的存取性能。
主机系统120包含选择性发送实施本文中所描述的一些实施方案的至少一部分的基于高速缓存的读取命令的硬件存储器控制器125。根据一些实施例,硬件存储器控制器125处理由主机系统120的处理装置生成的(例如,当处理装置执行软件应用时)例如读取或写入请求等存储器请求。如所展示,硬件存储器控制器125包含存储器地址跟踪存储器装置126、基于高速缓存的读取命令选择逻辑127和读取时延调整逻辑128。硬件存储器控制器125可例如耦合到主机系统120的处理装置(例如,中央处理单元(CPU))。举例来说,硬件存储器控制器125可表示北桥芯片或芯片组,其可促进主机系统120的处理装置和存储器子系统110之间的交互。
存储器地址跟踪存储器装置126由硬件存储器控制器125使用以存储与发送到存储器子系统110的一或多个先前存储器子系统命令(例如,读取命令或写入命令)相关联的一或多个存储器地址,所述存储器子系统110耦合到主机系统120。取决于实施例,先前子系统命令中的一个可以是已知导致与存储器地址相关联的数据被存储在(例如,提取到)存储器子系统110的高速缓存(例如,高速缓存114)中的存储器子系统命令(例如,读取、写入或某一其它命令)。如本文所描述,当硬件存储器控制器125将基于高速缓存的存储器子系统读取命令发送到存储器子系统110时,数据在高速缓存上的此存储可导致高速缓存命中。对于一些实施例,硬件存储器控制器125致使存储器地址跟踪存储器装置126存储与由硬件存储器控制器125发送到存储器子系统110的(例如,每一)存储器子系统读取命令相关联的存储器地址。此外,对于一些实施例,存储器地址与时戳一起存储在存储器地址跟踪存储器装置126上,所述时戳可表示与存储器地址相关联的存储器子系统命令从硬件存储器控制器125发布到存储器子系统110的发布时间。根据一些实施例,存储在存储器地址跟踪存储器装置126上的存储器地址指示存储在存储器子系统110上在所述存储器地址处的数据可能被存储在存储器子系统110的高速缓存114(例如,读取高速缓存)上,这继而指示如果基于高速缓存的存储器子系统读取命令(例如,根据NVDIMM-P存储器协议的SREAD命令)从硬件存储器控制器125发送到存储器子系统110,则将可能产生高速缓存命中。对于一些实施例,存储器地址跟踪存储器装置126包含CAM,这可实现单个时钟循环内其所存储数据内容的搜索。对于一些实施例,存储器地址跟踪存储器装置126将每一相应存储器地址作为标签存储在存储器地址跟踪存储器装置126上,其中所述标签可用于识别相应存储器地址。举例来说,基于相应存储器地址的至少一部分生成相应存储器地址的标签(例如,标签包含64位存储器地址的前部或尾部)。尽管硬件存储器控制器125展示为包含存储器地址跟踪存储器装置126,但对于一些实施例,存储器地址跟踪存储器装置126可在硬件存储器控制器125外部。
基于高速缓存的读取命令选择逻辑127可致使硬件存储器控制器125(或以其它方式使硬件存储器控制器125能够)确定何时硬件存储器控制器125接收从存储器子系统110的给定存储器地址读取数据的存储器请求。所述存储器请求可以是从处理装置(例如,CPU)发送到硬件存储器控制器125的存储器请求。此外,存储器请求可由主机系统120的处理装置生成。举例来说,正由处理装置执行的软件应用或操作系统可致使生成所述存储器请求。尽管未图示,但硬件存储器控制器125可包含用于接收针对存储器地址的存储器请求(例如,读取或写入数据)的硬件接口。
响应于接收到读取数据的存储器请求,基于高速缓存的读取命令选择逻辑127可致使硬件存储器控制器125(或以其它方式使硬件存储器控制器125能够)确定给定存储器地址是否当前存储于存储器地址跟踪存储器装置126中。如本文所描述,存储器地址跟踪存储器装置126可包含CAM,其可实现存储器地址跟踪存储器装置126的数据内容的快速搜索(例如,在单个时钟循环内)。
基于高速缓存的读取命令选择逻辑127可致使硬件存储器控制器125(或以其它方式使硬件存储器控制器125能够)基于确定给定存储器地址是否当前存储于存储器地址跟踪存储器装置126中而将针对给定存储器地址的基于高速缓存的存储器子系统命令(例如,根据NVDIMM-P存储器协议的SREAD命令)发送到存储器子系统。举例来说,硬件存储器控制器125可响应于确定给定存储器地址当前存储在存储器地址跟踪存储器装置126上而向存储器子系统110发送针对给定存储器地址的基于高速缓存的存储器子系统命令。
或者,对于一些实施例,响应于确定给定存储器地址当前存储于存储器地址跟踪存储器装置126中,硬件存储器控制器125可:确定可由硬件存储器控制器125存取的当前时间;从存储器地址跟踪存储器装置126存取与给定存储器地址相关联而存储的时戳(例如,发布时戳);以及基于当前时间、所述时戳和存储器子系统110的平均读取时延时间,确定是否存在来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率。最终,硬件存储器控制器125可响应于确定存在来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率而向存储器子系统110发送针对所述给定存储器地址的基于高速缓存的存储器子系统命令(例如,根据NVDIMM-P存储器协议的SREAD命令)。举例来说,对于一些实施例,当当前时间大于时戳与平均读取时延时间的总和时,存在来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率。当前时间大于时戳与平均读取时延时间的总和可指示,与存储在存储器地址跟踪存储器装置126上的给定存储器地址相关联的先前存储器子系统命令(例如,根据NVDIMM-P存储器协议的先前XREAD或SREAD命令)和从存储器子系统110读取数据的最近接收的存储器请求之间已经过去足够的时间以使得由于先前存储器子系统命令(例如,先前XREAD或SREAD命令)导致存在与给定存储器地址相关联的数据当前被存储在高速缓存114中的概率(例如,高概率)。相应地,对于一些实施例,硬件存储器控制器125响应于确定当前时间大于时戳与平均读取时延时间的总和而发送针对给定存储器地址的基于高速缓存的存储器子系统命令。
当前时间可表示例如读取数据的存储器请求由硬件存储器控制器125接收的时间。取决于实施例,当前时间可由硬件存储器控制器125外部的实体提供,例如由主机系统120的另一组件维持和提供的时间。平均读取时延时间可表示供存储器子系统110将来自存储器子系统110的存储器装置(例如,130、140)的数据复制到高速缓存114的所估计平均响应时间。平均读取时延时间可存储在硬件存储器控制器125上或硬件存储器控制器125外部的存储器装置上。取决于实施例,平均读取时延时间可表示当前硬件存储器控制器125已知的所估计平均响应时间。如本文所描述,平均读取时延时间可由硬件存储器控制器125经由读取时延调整逻辑128随时间调整(例如,调适或更新)。
在另一例项中,基于高速缓存的读取命令选择逻辑127可致使硬件存储器控制器125(或以其它方式使硬件存储器控制器125能够)基于确定给定存储器地址是否当前被存储于存储器地址跟踪存储器装置126中而将针对给定存储器地址的非基于高速缓存的存储器子系统命令(例如,根据NVDIMM-P存储器协议的XREAD命令)发送到存储器子系统。确切地说,硬件存储器控制器125可响应于确定给定存储器地址当前不存储于存储器地址跟踪存储器装置126中而将针对给定存储器地址的非基于高速缓存的存储器子系统命令发送到存储器子系统。
或者,对于一些实施例,响应于确定给定存储器地址当前存储于存储器地址跟踪存储器装置126中,硬件存储器控制器125可:确定可由硬件存储器控制器125存取的当前时间;从存储器地址跟踪存储器装置126存取与给定存储器地址相关联而存储的时戳(例如,发布时戳);以及基于当前时间、所述时戳和存储器子系统110的平均读取时延时间,确定是否存在来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率。最终,硬件存储器控制器125可响应于确定不存在来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率而向存储器子系统110发送针对所述给定存储器地址的非基于高速缓存的存储器子系统命令(例如,XREAD命令)。举例来说,对于一些实施例,当当前时间小于或等于时戳与平均读取时延时间的总和时,来自给定存储器地址的数据当前被存储在存储器子系统110的高速缓存114上的概率极小或不存在。当前时间小于或等于时戳于平均读取时延时间的总和可指示,与存储在存储器地址跟踪存储器装置126上的给定存储器地址相关联的先前存储器子系统命令(例如,读取命令)和从存储器子系统110读取数据的最近接收的存储器请求之间尚未过去足够的时间以使得由于先前存储器子系统命令导致与给定存储器地址相关联的数据当前被存储在高速缓存114中。相应地,对于一些实施例,硬件存储器控制器125响应于确定当前时间小于或等于时戳与平均读取时延时间的总和而发送针对给定存储器地址的非基于高速缓存的存储器子系统命令。
对于一些实施例,响应于硬件存储器控制器125将针对给定存储器地址的非基于高速缓存的存储器子系统读取命令(例如,XREAD命令)发送到存储器子系统110,硬件存储器控制器125可将给定存储器地址存储(例如,更新)在存储器地址跟踪存储器装置126上。如果给定存储器地址已经存储在存储器地址跟踪存储器装置126上,则可用关于何时非基于高速缓存的存储器子系统读取命令从硬件存储器控制器125发送到存储器子系统110的时戳来更新给定存储器地址上的时戳。如本文所描述,存储在存储器地址跟踪存储器装置126上的存储器地址指示,存储在存储器子系统110上在存储器地址处的数据可能存储在存储器子系统110的高速缓存114(例如,读取高速缓存)上(例如,作为针对所述给定存储器地址发送的先前存储器子系统读取命令的结果)。相应地,鉴于非基于高速缓存的存储器子系统读取命令从硬件存储器控制器125发送到存储器子系统110,存在存储在存储器子系统110上在存储器地址处的数据可能存储在存储器子系统110的高速缓存114(例如,读取高速缓存)上的较高概率。
读取时延调整逻辑128可致使硬件存储器控制器125或以其它方式使硬件存储器控制器125能够在硬件存储器控制器125将基于高速缓存的存储器子系统读取命令发送到存储器子系统110时基于来自存储器子系统110的响应调整(例如,更新)平均读取时延时间。确切地说,硬件存储器控制器125可:确定是否响应于将基于高速缓存的存储器子系统命令(例如,根据NVDIMM-P存储器协议的SREAD命令)发送到存储器子系统110而从存储器子系统110接收到高速缓存未命中响应(例如,指示SREAD未命中);以及基于确定接收到高速缓存未命中响应来调整平均读取时延时间。举例来说,高速缓存未命中响应可包含高速缓存“未命中”代码,其可根据NVDIMM-P存储器协议经由元数据信号线从存储器子系统110发送到主机系统120。或者,存储器子系统110可响应于将基于高速缓存的存储器子系统命令(例如,SREAD命令)发送到存储器子系统110而发送高速缓存命中响应。对于一些实施例,基于高速缓存的存储器子系统读取命令包含根据NVDIMM-P存储器协议的SREAD命令,且高速缓存命中响应可包含指示数据准备好由主机系统120(经由硬件存储器控制器125)从存储器子系统110读取的RSP_n信号线上的响应。取决于实施例,平均读取时延时间的调整可基于(例如,根据):存储器子系统110从存储器装置(例如,130、140)将数据提取到存储器子系统110的高速缓存114的平均时间概率(例如,概率曲线);预定时间量的递增或递减;或其某一组合。所述调整可表示关于存储器子系统110花费多长时间从存储器装置(例如,130、140)将数据提取到存储器子系统110的高速缓存114的硬件存储器控制器125的期望的调整。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。
下文描述关于硬件存储器控制器125的操作的另外的细节。
图2到4是根据本公开的一些实施例用于选择性地将基于高速缓存的读取命令发送到存储器子系统的实例方法的流程图。方法200、300、400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200、300、400由如相对于图1所描述的主机系统120的硬件存储器控制器125执行。另外或替代地,对于一些实施例,方法200、300、400至少部分由图1的存储器子系统控制器115执行。虽然以特定序列或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每一实施例中需要全部过程。其它过程流程也是可能的。
现参看图2的方法200,在操作202处,主机系统(例如,120)的硬件存储器控制器(例如,125)接收从存储器子系统(例如,110)的给定存储器地址读取数据的存储器请求。响应于操作202处接收的存储器请求,在操作204处,硬件存储器控制器(例如,125)确定给定存储器地址是否当前被存储在硬件存储器控制器的存储器装置(例如,126)上。如果在决策点206处给定存储器地址当前被存储在存储器装置上,则方法200进行到操作208;否则,方法200进行到操作224。
在操作208处,硬件存储器控制器(例如,125)确定硬件存储器控制器已知或可存取的当前时间。在操作210处,硬件存储器控制器(例如,125)存取与给定存储器地址(由操作204确定为存储于存储器装置中)相关联而存储在存储器装置(例如,126)上的时戳(例如,发布时戳)。在决策点212处,如果由操作208确定的当前时间大于由操作210存取的时戳与平均读取时延时间(如硬件存储器控制器125当前已知)的总和,则方法200进行到操作214;否则,方法200进行到操作224。
在操作214处,硬件存储器控制器(例如,125)将针对给定存储器地址的基于高速缓存的存储器子系统读取命令(例如,根据NVDIMM-P存储器协议的SREAD命令)发送到存储器子系统(例如,110)。以此方式,方法200基于从硬件存储器控制器(例如,125)发送到存储器子系统(例如,110)的先前存储器子系统命令(例如,先前存储器子系统读取命令)选择性地将基于高速缓存的存储器子系统读取命令发送到存储器子系统(例如,110)。
在操作216处,硬件存储器控制器(例如,125)确定是否响应于由操作214发送的基于高速缓存的存储器子系统命令而从存储器子系统(例如,110)接收到高速缓存未命中响应。如果在决策点218处,从存储器子系统(例如,110)接收到高速缓存未命中响应,则方法200进行到操作220;否则,方法200进行到操作222。
在操作220处,硬件存储器控制器(例如,125)调整平均读取时延时间,这可允许硬件存储器控制器较好地估计存储器子系统(例如,110)花费多长时间从存储器装置(例如,130、140)将数据提取到存储器子系统(例如,110)的高速缓存(例如,114)。在操作222处,硬件存储器控制器(例如,125)保持平均读取时延时间不变。
在操作224处,硬件存储器控制器(例如,125)将针对给定存储器地址的非基于高速缓存的存储器子系统读取命令(例如,根据NVDIMM-P存储器协议的XREAD命令)发送到存储器子系统(例如,110)。对于一些实施例,响应于硬件存储器控制器(例如,125)发送非基于高速缓存的存储器子系统读取命令,给定存储器地址可存储在存储器装置(例如,126)上,这可指示存储器子系统(例如,110)上在给定存储器地址处的数据已从存储器子系统的存储器装置(例如,130、140)提取到存储器子系统的高速缓存(例如,114)的概率。
现参看图3的方法300,在操作302处,主机系统(例如,120)的硬件存储器控制器(例如,125)接收从存储器子系统(例如,110)的给定存储器地址读取数据的存储器请求。在操作304处,硬件存储器控制器(例如,125)确定给定存储器地址是否当前被存储在硬件存储器控制器的存储器装置(例如,126)上。
在操作306处,硬件存储器控制器(例如,125)基于操作304的确定将针对给定存储器地址的基于高速缓存的存储器子系统读取命令发送到存储器子系统(例如,110)。对于一些实施例,操作306包含响应于在操作304处确定给定存储器地址当前存储在存储器装置(例如,126)上而向存储器子系统(例如,110)发送针对给定存储器地址的基于高速缓存的存储器子系统命令(例如,根据NVDIMM-P存储器协议的SREAD命令)。
此外,对于一些实施例,操作306包含响应于确定给定存储器地址当前存储于存储器装置(例如,126)中而进行以下操作:确定可由硬件存储器控制器(例如,125)存取的当前时间;从存储器装置(例如,126)存取与给定存储器地址相关联而存储的时戳;基于当前时间、时戳和存储器子系统(例如,110)的平均读取时延时间确定是否存在来自给定存储器地址的数据当前被存储在存储器子系统(例如,110)的高速缓存(例如,114)上的概率;以及响应于确定存在来自给定存储器地址的数据当前被存储在存储器子系统(例如,110)的高速缓存(例如,114)上的概率而向存储器子系统(例如,110)发送针对给定存储器地址的基于高速缓存的存储器子系统命令。
现参看图4的方法400,操作402和404类似于上文关于图3所描述的方法300的操作302和304。响应于给定存储器地址当前被存储在存储器装置(例如,126)上,方法400进行到操作406;否则,方法400进行到操作418。
在操作406处,硬件存储器控制器(例如,125)确定硬件存储器控制器可存取的当前时间。在操作408处,硬件存储器控制器(例如,125)存取与给定存储器地址相关联而存储在存储器装置(例如,126)上的时戳。在操作410处,硬件存储器控制器(例如,125)基于当前时间、时戳和存储器子系统110的平均读取时延时间确定是否存在来自(存储器子系统110的)给定存储器地址的数据当前被存储在存储器子系统(例如,110)的高速缓存(例如,114)上的概率。对于一些实施例,当当前时间(由操作406确定)大于时戳(由操作408存取)与平均读取时延时间的总和时,操作410确定存在来自给定存储器地址的数据当前被存储在存储器子系统(例如,110)的高速缓存(例如,114)上的概率。如本文所描述,当前时间大于时戳与平均读取时延时间的总和可指示,与存储在存储器子系统(例如,110)的存储器装置(例如,126)上的给定存储器地址相关联的先前存储器子系统命令(例如,根据NVDIMM-P存储器协议的先前XREAD或SREAD命令)和从存储器子系统(例如,110)读取数据的最近接收的存储器请求之间已经过去足够的时间以使得由于先前存储器子系统命令(例如,先前XREAD或SREAD命令)导致存在与给定存储器地址相关联的数据当前被存储在高速缓存(例如,114)中的概率(例如,高概率)。或者,当当前时间(由操作406确定)小于或等于时戳(由操作408存取)与平均读取时延时间的总和时,操作410可确定不存在来自给定存储器地址的数据当前被存储在存储器子系统(例如,110)的高速缓存(例如,114)上的概率。响应于存在概率(来自给定存储器地址的数据当前被存储在高速缓存114上),方法400进行到操作412;否则,方法400进行到操作418。
在操作412处,硬件存储器控制器(例如,125)将针对给定存储器地址的基于高速缓存的存储器子系统读取命令(例如,根据NVDIMM-P存储器协议的SREAD命令)发送到存储器子系统(例如,110)。在操作414处,硬件存储器控制器(例如,125)确定是否响应于由操作412发送的基于高速缓存的存储器子系统读取命令而接收到高速缓存未命中响应。如本文所描述,高速缓存未命中响应可包含高速缓存“未命中”代码,其可根据NVDIMM-P存储器协议经由元数据信号线从存储器子系统(例如,110)发送到主机系统(例如,120)。如本文中还描述,代替于高速缓存未命中响应,存储器子系统(例如,110)可响应于由操作412发送到存储器子系统(例如,110)的基于高速缓存的存储器子系统命令(例如,SREAD命令)而发送高速缓存命中响应。对于一些实施例,基于高速缓存的存储器子系统读取命令包含根据NVDIMM-P存储器协议的SREAD命令,且高速缓存命中响应可包含指示数据准备好由主机系统(例如,120)从存储器子系统(例如,110)读取的RSP_n信号线上的响应。
尽管未图示,响应于确定(在操作414处)未接收到高速缓存未命中响应,硬件存储器控制器(例如,125)可保持存储器子系统(例如,110)的平均读取时延时间不变。
然而,响应于确定(在操作414处)接收到高速缓存未命中响应,在操作416处,硬件存储器控制器(例如,125)调整存储器子系统110的平均读取时延时间。如本文所描述,对平均读取时延时间的调整可表示关于存储器子系统(例如,110)花费多长时间从存储器装置(例如,130、140)将数据提取到存储器子系统110的高速缓存(例如,114)的硬件存储器控制器(例如,125)的期望的调整。取决于实施例,平均读取时延时间的调整可基于(例如,根据):存储器子系统(例如,110)从存储器装置(例如,130、140)将数据提取到存储器子系统(例如,110)的高速缓存(例如,114)的平均时间概率(例如,概率曲线);预定时间量的递增或递减;或其某一组合。
在操作418处,硬件存储器控制器(例如,125)将针对给定存储器地址的非基于高速缓存的存储器子系统读取命令(例如,根据NVDIMM-P存储器协议的XREAD命令)发送到存储器子系统(例如,110)。响应于硬件存储器控制器(例如,125)发送非基于高速缓存的存储器子系统读取命令,在操作420处,硬件存储器控制器(例如,125)用给定存储器地址更新存储器装置(例如,126)。对于一些实施例,操作420包含硬件存储器控制器(例如,125)致使将给定存储器地址存储在存储器装置(例如,126)上,这可指示存储器子系统(例如,110)上在给定存储器地址处的数据已从存储器子系统的存储器装置(例如,130、140)提取到存储器子系统的高速缓存(例如,114)的概率。
图5A到5C提供交互图,其示出在其中执行一种用于选择性地将基于高速缓存的读取命令从主机系统发送到存储器子系统的方法的一些实施方案的上下文中计算环境100的组件之间的交互。所述方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,所述方法由主机系统(例如,120)的硬件存储器控制器(例如,125)、存储器子系统控制器(例如,115)、存储器装置(例如,130、140)、高速缓存(例如,114)或其某一组合执行。虽然所述操作以特定序列或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每一实施例中需要全部过程。在图5A到5C中示出的实例的上下文中,硬件存储器控制器可包含硬件存储器控制器125,存储器子系统控制器可包含存储器子系统控制器115,存储器装置可包含存储器装置130或140,且高速缓存可包含高速缓存114。
如图5A所示,在操作502处,硬件存储器控制器125接收从给定存储器地址读取数据的存储器请求(例如,从主机系统120的处理装置)。在操作504处,硬件存储器控制器125确定给定存储器地址是否当前被存储在硬件存储器控制器125的存储器装置(例如,126)上。响应于给定存储器地址当前被存储在存储器装置(例如,126)上,在操作506处,硬件存储器控制器125确定当前时间。在操作508处,硬件存储器控制器125存取与给定存储器地址相关联而存储在存储器装置(例如,126)上的时戳。
在操作510处,硬件存储器控制器125基于当前时间(由操作506确定)、时戳(由操作508存取)和存储器子系统110的平均读取时延时间确定是否存在来自给定存储器地址的数据被存储在存储器子系统110的高速缓存114上的概率。响应于存在来自给定存储器地址的数据被存储在存储器子系统110的高速缓存114上的概率,方法进行到图5B的操作520。
现参看图5B,在操作520处,硬件存储器控制器125将针对给定存储器地址的基于高速缓存的存储器子系统读取命令发送到存储器子系统110。在操作530处,存储器子系统110的存储器子系统控制器115接收针对所述给定存储器地址的基于高速缓存的存储器子系统读取命令。在操作532处,存储器子系统控制器115处理针对给定存储器地址的基于高速缓存的存储器子系统读取命令。在操作534处,存储器子系统控制器115确定请求数据是否存储在高速缓存114中。在操作560处,高速缓存114促进检查针对给定存储器地址的所存储数据。响应于确定所请求数据存储在高速缓存114上,所述方法进行到操作540。响应于确定所请求数据不存储于高速缓存114上,所述方法进行到操作536。
在操作536处,存储器子系统控制器115将高速缓存未命中响应发送到主机系统120的硬件存储器控制器125。在操作538处,存储器子系统控制器115从存储器装置(例如,130、140)将数据提取到高速缓存114。在操作550处,存储器装置(例如,130、140)促进从对应于给定存储器地址的位置读取数据,且在操作562处,高速缓存114促进数据的存储。
在操作540处,存储器子系统控制器115将所请求数据从高速缓存114提供到主机系统120的硬件存储器控制器125。在操作564处,高速缓存114向存储器子系统控制器115提供所存储数据。对于一些实施例,操作540包含存储器子系统控制器115向硬件存储器控制器125发送响应以指示所请求数据准备好发送到主机系统120,以及响应于硬件存储器控制器125发送发送信号而将所请求数据发送到主机系统120。
在操作522处,硬件存储器控制器125从存储器子系统控制器115接收高速缓存未命中响应。在操作524处,硬件存储器控制器125从存储器子系统控制器115接收数据。在操作526处,硬件存储器控制器125确定是否响应于基于高速缓存的存储器子系统读取命令而接收到高速缓存未命中响应。响应于接收到高速缓存未命中响应,在操作528处,硬件存储器控制器125调整存储器子系统110的平均读取时延时间。
响应于确定(在操作504处)给定存储器地址当前不存储在存储器装置(例如,126)上,所述方法进行到图5C的操作570。响应于确定(在操作510处)不存在来自给定存储器地址的数据被存储在存储器子系统110的高速缓存114上的概率,所述方法进行到图5C的操作570。
现参看图5C,在操作570处,硬件存储器控制器125将针对给定存储器地址的基于高速缓存的存储器子系统读取命令发送到存储器子系统110。在操作572处,硬件存储器控制器125用给定存储器地址更新存储器装置(例如,126)(因为由操作570发送的非基于高速缓存的存储器子系统命令现表示先前存储器子系统命令)。
在操作580处,存储器子系统控制器115接收针对给定存储器地址的非基于高速缓存的存储器子系统读取命令。在操作582处,存储器子系统控制器115处理针对给定存储器地址的非基于高速缓存的存储器子系统读取命令。在操作584处,存储器子系统控制器115从存储器装置(例如,130、140)将数据提取到高速缓存114。在操作552处,存储器装置(例如,130、140)促进从对应于给定存储器地址的位置读取数据,且在操作566处,高速缓存114促进数据的存储。
在操作586处,存储器子系统控制器115将所请求数据从高速缓存114提供到主机系统120的硬件存储器控制器125。在操作568处,高速缓存114向存储器子系统控制器115提供所存储数据。在操作574处,硬件存储器控制器125最终从存储器子系统110接收请求数据。
图6示出呈计算机系统600的形式的实例机器,在其内可执行指令集以致使所述机器执行本文中论述的方法中的任何一或多个。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,以执行操作系统来执行对应于软件的操作)。在替代实施例中,机器可连接(例如,联网)到局域网(LAN)、内联网、外联网和/或因特网中的其它机器。所述机器可作为对等(或分布式)网络环境中的对等机器,或作为云计算基础设施或环境中的服务器或客户端机器,在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(循序地或以其它方式)执行指定由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器单独地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等动态随机存取存储器(DRAM))、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储装置618,其经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置602可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行用于执行本文中所论述的操作和步骤的指令626。计算机系统600可以进一步包含网络接口装置608以在网络620上通信。
数据存储装置618可包含机器可读存储介质624(也被称为计算机可读介质),其上存储一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多个的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储介质。机器可读存储介质624、数据存储装置618和/或主存储器604可以对应于图1的存储器子系统110。
在一个实施例中,指令626包含用以实施如本文所描述的关于选择性地将基于高速缓存的读取命令发送到存储器子系统的功能性的指令。尽管在实例实施例中将机器可读存储介质624展示为单个介质,但术语“机器可读存储介质”应被认为包含存储所述一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何介质。因此,应认为术语“机器可读存储介质”包含但不限于固态存储器、光学介质以及磁性介质。
已关于对计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望的结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。这些量通常(但未必)呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、要素、符号、字符、项、数字或类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便的标签。本公开可以涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构造用以执行所述方法的更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读介质。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。将显而易见,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

Claims (20)

1.一种系统,其包括:
处理装置;以及
硬件存储器控制器,其用于处理由所述处理装置生成的存储器请求,所述硬件存储器控制器包括:
存储器装置,其用以存储与发送到耦合到所述硬件存储器控制器的存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及
执行操作的逻辑,所述操作包括:
接收从所述存储器子系统的给定存储器地址读取数据的存储器请求;以及
响应于接收到所述存储器请求:
确定所述给定存储器地址是否当前被存储在所述存储器装置上;以及
基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置上而将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
2.根据权利要求1所述的系统,其中所述基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置上而发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令包括:
响应于确定所述给定存储器地址当前被存储在所述存储器装置上而向所述存储器子系统发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令。
3.根据权利要求1所述的系统,其中所述基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置上而发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令包括:
响应于确定所述给定存储器地址当前存储于所述存储器装置中:
确定可由所述硬件存储器控制器存取的当前时间;
从所述存储器装置存取与所述给定存储器地址相关联而存储的时戳;
基于所述当前时间、所述时戳和所述存储器子系统的平均读取时延时间,确定是否存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的高速缓存上的概率;以及
响应于确定存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的所述高速缓存上的所述概率,向所述存储器子系统发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令。
4.根据权利要求3所述的系统,其中所述基于所述当前时间、所述时戳和所述平均读取时延时间确定是否存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的所述高速缓存上的所述概率包括:
确定所述当前时间是否大于所述时戳与所述平均读取时延时间的总和;以及
响应于所述当前时间大于所述和,确定存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的所述高速缓存上的所述概率。
5.根据权利要求3所述的系统,其中所述操作进一步包括:
确定是否响应于所述将所述基于高速缓存的存储器子系统命令发送到所述存储器子系统而从所述存储器子系统接收到高速缓存未命中响应;以及
基于所述确定接收到所述高速缓存未命中响应来调整所述平均读取时延时间。
6.根据权利要求1所述的系统,其中所述基于高速缓存的存储器子系统命令包括根据非易失性双列直插式存储器模块-P NVDIMM-P存储器协议的推测性读取SREAD命令。
7.根据权利要求1所述的系统,其中所述操作进一步包括:
响应于确定所述给定存储器地址当前不存储于所述存储器装置中而将针对所述给定存储器地址的非基于高速缓存的存储器子系统命令发送到所述存储器子系统。
8.根据权利要求7所述的系统,其中所述非基于高速缓存的存储器子系统命令包括根据非易失性双列直插式存储器模块-P NVDIMM-P存储器协议的XREAD命令。
9.根据权利要求7所述的系统,其中所述操作进一步包括:
用所述给定存储器地址更新所述存储器装置。
10.根据权利要求1所述的系统,其中所述操作进一步包括:
其中基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置上而将针对所述给定存储器地址的非基于高速缓存的存储器子系统命令发送到所述存储器子系统包括:
响应于确定所述给定存储器地址当前存储于所述存储器装置中:
确定可由所述硬件存储器控制器存取的当前时间;
从所述存储器装置存取与所述给定存储器地址相关联而存储的时戳;
基于所述当前时间、所述时戳和所述存储器子系统的平均读取时延时间,确定是否存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的高速缓存上的概率;以及
响应于确定不存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的所述高速缓存上的所述概率,向所述存储器子系统发送针对所述给定存储器地址的所述非基于高速缓存的存储器子系统命令。
11.根据权利要求1所述的系统,其中所述存储器装置进一步存储针对存储在所述存储器装置上的所述一或多个存储器地址中的至少一个的时戳。
12.根据权利要求1所述的系统,其中存储在所述存储器装置上的所述一或多个存储器地址的每一相应存储器地址作为标签存储在所述存储器装置上,所述标签识别所述相应存储器地址。
13.根据权利要求12所述的系统,其中所述相应存储器地址的所述标签是基于所述相应存储器地址的至少一部分而生成。
14.根据权利要求1所述的系统,其中所述系统包括主机系统。
15.一种硬件存储器控制器,其包括:
硬件接口,其用于接收由处理装置生成的存储器请求;
存储器装置,其用以存储与发送到耦合到所述硬件存储器控制器的存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及
执行操作的逻辑,所述操作包括:
通过所述硬件接口接收从所述存储器子系统的给定存储器地址读取数据的存储器请求;以及
响应于接收到所述存储器请求:
确定所述给定存储器地址是否当前被存储在所述存储器装置中;以及
基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置中而将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
16.根据权利要求15所述的硬件存储器控制器,其中所述存储器装置包括内容可寻址存储器CAM。
17.一种方法,其包括:
在硬件存储器控制器处接收从耦合到所述硬件存储器控制器的存储器子系统的给定存储器地址读取数据的存储器请求,所述硬件存储器控制器包括存储器装置,所述存储器装置用以存储与发送到所述存储器子系统的一或多个过去存储器子系统命令相关联的一或多个存储器地址;以及
响应于接收到所述存储器请求:
由所述硬件存储器控制器确定所述给定存储器地址是否当前被存储在所述存储器装置上;以及
基于所述确定所述给定存储器地址是否当前被存储于所述存储器装置中而由所述硬件存储器控制器将针对所述给定存储器地址的基于高速缓存的存储器子系统命令发送到所述存储器子系统。
18.根据权利要求17所述的方法,其中所述基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置中而发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令包括:
响应于确定所述给定存储器地址当前存储于所述存储器装置中而将针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令发送到所述存储器子系统。
19.根据权利要求17所述的方法,其中所述基于所述确定所述给定存储器地址是否当前被存储在所述存储器装置中而发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令包括:
响应于确定所述给定存储器地址当前存储于所述存储器装置中:
确定可由所述硬件存储器控制器存取的当前时间;
从所述存储器装置存取与所述给定存储器地址相关联而存储的时戳;
基于所述当前时间、所述时戳和所述存储器子系统的平均读取时延时间,确定是否存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的高速缓存上的概率;以及
响应于确定存在来自所述给定存储器地址的数据当前被存储在所述存储器子系统的所述高速缓存上的所述概率,向所述存储器子系统发送针对所述给定存储器地址的所述基于高速缓存的存储器子系统命令。
20.根据权利要求19所述的方法,其进一步包括:
响应于所述将所述基于高速缓存的存储器子系统命令发送到所述存储器子系统而从所述存储器子系统接收高速缓存未命中响应;以及
基于接收所述高速缓存未命中响应来调整所述平均读取时延时间。
CN202011329752.4A 2019-11-25 2020-11-24 基于高速缓存的存储器读取命令 Pending CN112835814A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/694,105 2019-11-25
US16/694,105 US11262946B2 (en) 2019-11-25 2019-11-25 Cache-based memory read commands

Publications (1)

Publication Number Publication Date
CN112835814A true CN112835814A (zh) 2021-05-25

Family

ID=75923329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011329752.4A Pending CN112835814A (zh) 2019-11-25 2020-11-24 基于高速缓存的存储器读取命令

Country Status (2)

Country Link
US (2) US11262946B2 (zh)
CN (1) CN112835814A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11262946B2 (en) 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004668A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Searchable hot content cache
CN111433753A (zh) * 2017-10-30 2020-07-17 美光科技公司 动态l2p高速缓存

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US9141525B2 (en) * 2011-01-31 2015-09-22 International Business Machines Corporation Adaptive prestaging in a storage controller
JP6027562B2 (ja) * 2014-02-24 2016-11-16 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
JP2016170682A (ja) * 2015-03-13 2016-09-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10452312B2 (en) * 2016-12-30 2019-10-22 Intel Corporation Apparatus, system, and method to determine a demarcation voltage to use to read a non-volatile memory
KR20190057887A (ko) 2017-11-21 2019-05-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10296230B1 (en) * 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US10824526B2 (en) * 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US11086837B2 (en) * 2019-01-15 2021-08-10 EMC IP Holding Company LLC Fast key-value storage for continuous data protection systems
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like
US11262946B2 (en) 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004668A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Searchable hot content cache
CN111433753A (zh) * 2017-10-30 2020-07-17 美光科技公司 动态l2p高速缓存

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄涛;王晶;管雪涛;钟祺;王克义;: "采用分区域管理的软硬件协作高能效末级高速缓存设计", 计算机辅助设计与图形学学报, no. 11 *

Also Published As

Publication number Publication date
US11698756B2 (en) 2023-07-11
US20210157517A1 (en) 2021-05-27
US11262946B2 (en) 2022-03-01
US20220179590A1 (en) 2022-06-09

Similar Documents

Publication Publication Date Title
US11630778B2 (en) Efficient processing of commands in a memory sub-system
US11675705B2 (en) Eviction of a cache line based on a modification of a sector of the cache line
US11829636B2 (en) Cold data identification
US11741013B2 (en) Prefetch buffer of memory sub-system
US11656995B2 (en) Dynamic access granularity in a cache media
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
CN113934666B (zh) 数据接口桥的预取
US11893279B2 (en) Access tracking in memory
US11494306B2 (en) Managing data dependencies in a transfer pipeline of a hybrid dimm
US11698756B2 (en) Cache-based memory read commands
CN112835816B (zh) 存储器子系统及相关硬件存储器控制器和方法
CN112835815B (zh) 具有高速缓冲存储器的存储器子系统的预提取
US11797198B2 (en) Memory instruction for memory tiers

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