CN112835816B - 存储器子***及相关硬件存储器控制器和方法 - Google Patents
存储器子***及相关硬件存储器控制器和方法 Download PDFInfo
- Publication number
- CN112835816B CN112835816B CN202011329033.2A CN202011329033A CN112835816B CN 112835816 B CN112835816 B CN 112835816B CN 202011329033 A CN202011329033 A CN 202011329033A CN 112835816 B CN112835816 B CN 112835816B
- Authority
- CN
- China
- Prior art keywords
- memory
- given
- row
- memory device
- 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.)
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及基于行状态预测的读取命令。本文描述的各种实施例实现基于存储器子***的给定存储器装置(例如,基于随机存取存储器RAM的高速缓存)的预测行状态选择性地向存储器子***发送读取命令,诸如根据非易失性双列直插式存储器模块‑P NVDIMM‑P存储器协议的推测读取SREAD命令。
Description
技术领域
本公开的实施例整体涉及存储器子***,并且更具体地,涉及基于预测存储器行状态的读取命令。
背景技术
存储器子***可以包含一或多个存储数据的存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。通常,主机***可以利用存储器子***在存储器组件处存储数据并从存储器组件中检索数据。
发明内容
本申请的一个方面涉及一种***,该***包括:处理装置;以及硬件存储器控制器,该硬件存储器控制器用于处理由处理装置生成的存储器请求,硬件存储器控制器包括:一组本地存储器装置,该组本地存储器装置用于存储硬件存储器控制器基于由硬件存储器控制器处理的一或多个存储器请求而访问存储器子***的给定存储器装置的历史记录,存储器子***被耦合到硬件存储器控制器;以及执行操作的逻辑,该操作包括:访问针对存储器子***的给定存储器装置的配置数据;接收存储器请求,以从存储器子***的给定存储器地址中读取所请求的数据;以及响应于接收到存储器请求:基于配置数据和存储在该组本地存储器装置上的历史记录,预测所请求的数据是否存储在给定存储器装置的开放行上;以及基于对所请求的数据是否存储在给定存储器装置的开放行上的预测,向存储器子***发送针对给定存储器地址的第一类型的存储器子***读取命令。
本申请的另一方面涉及一种硬件存储器控制器,该硬件存储器控制器包括:硬件接口,该硬件接口用于接收由处理装置生成的存储器请求;一组本地存储器装置,该组本地存储器装置用于存储硬件存储器控制器基于由硬件存储器控制器处理的一或多个存储器请求而访问存储器子***的给定存储器装置的历史记录,存储器子***被耦合到硬件存储器控制器;以及执行操作的逻辑,该操作包括:访问针对存储器子***的给定存储器装置的配置数据;接收存储器请求,以从存储器子***的给定存储器地址中读取所请求的数据;以及响应于接收到存储器请求:基于配置数据和存储在该组本地存储器装置上的历史记录,预测所请求的数据是否存储在给定存储器装置的开放行上;以及基于对所请求的数据是否存储在给定存储器装置的开放行上的预测,向存储器子***发送针对给定存储器地址的第一类型的存储器子***读取命令。
本申请的又一方面涉及一种方法,该方法包括:通过硬件存储器控制器访问耦合到硬件存储器控制器的存储器子***的给定存储器装置的配置数据,硬件存储器控制器包括一组本地存储器装置,以存储硬件存储器控制器基于由硬件存储器控制器处理的一或多个存储器请求而访问给定存储器装置的历史记录;在硬件存储器控制器处接收存储器请求,以从存储器子***的给定存储器地址中读取所请求的数据;以及响应于接收到存储器请求:通过硬件存储器控制器,基于配置数据和存储在该组本地存储器装置上的历史记录,预测所请求的数据是否存储在给定存储器装置的开放行上;通过硬件存储器控制器,基于对所请求的数据是否存储在给定存储器装置的开放行上的预测,向存储器子***发送针对给定存储器地址第一类型的存储器子***读取命令;以及通过硬件存储器控制器,基于存储器请求来更新历史记录。
附图说明
通过下面给出的详细描述和通过本公开的各种实施例的附图,可以更充分地理解本公开。然而,不应将附图视为将本公开限制于特定实施例,而仅是为了解释和理解。
图1示出了根据本公开的一些实施例的包含存储器子***的实例性计算环境。
图2示出了根据本公开的一些实施例的主机***的实例性硬件存储器控制器的实例性架构。
图3至4是根据本公开的一些实施例的用于基于存储器子***的存储器装置的预测行状态来选择性地向存储器子***发送读取命令的实例性方法的流程图。
图5A至5C提供了交互图,该交互图示出了在一些实施例的背景下计算环境的组件之间的交互,其中执行了基于存储器子***的存储器装置的预测行状态来选择性地从主机***向存储器子***发送读取命令的方法。
图6是可以在其中操作本公开的实施例的实例性计算机***的框图。
具体实施方式
本公开的各方面涉及基于存储器子***的存储器装置(例如,基于随机存取存储器(RAM)的高速缓存)的预测行状态,向存储器子***(诸如,使用非确定性存储器协议(例如,非易失性双列直插式存储器模块-P(NVDIMM-P)存储器协议)的存储器子***)发送读取命令。存储器子***可以是存储装置、存储器模块,或者是存储装置和存储器模块的混合体。下面结合图1描述存储装置和存储器模块的实例。通常,主机***可以利用包含一或多个存储数据的存储器装置的存储器子***。主机***可以提供要存储在存储器子***中的数据,并且可以请求从存储器子***中检索数据。
一些存储器子***将一或多个随机存取存储器(RAM)装置用于存储器子***上的临时(例如,高速缓存)或长期数据存储。例如,在主机***充当主装置(或发起方装置)且存储器子***充当从装置(或目标装置)的情况下,该存储器子***可以包含(并可以访问)两个或更多个存储器装置,其中至少一个存储器装置是RAM装置(例如,动态随机存取存储器(DRAM)装置)。此RAM装置可以被存储器子***用作高速缓存(例如,读取或写入高速缓存),其可以提供对持久存储在该存储器子***的其他存储器装置上的数据子集的快速数据访问。在RAM装置被用作读取高速缓存(RAM读取高速缓存)的情况下,当存储器子***从主机***接收数据读取请求(例如,存储器子***读取命令)时,所请求的数据可能会或可能不会被存储(例如,可用)在RAM读取高速缓存上。此外,当数据存储在RAM读取高速缓存中时,保存所请求的数据的RAM装置的行可能是开放的或关闭的。当存储器子***接收到基于高速缓存的存储器子***读取命令(诸如,根据NVDIMM-P存储器协议的推测读取(SREAD)命令)时,如果所请求的数据存储在RAM读取高速缓存的开放行中,这会导致(并被视为)高速缓存命中(例如,“SREAD命中”),并且存储器子***可以将所请求的数据快速发送回主机***(例如,在确定性时间长度而不是非确定性时间长度)。另一方面,当存储器子***接收到基于高度缓存的存储器子***读取命令并且所请求的数据存储在RAM读取高速缓存的关闭行上时,这可能会导致(并被视为)高速缓存未命中(例如,“SREAD未命中”),并且存储器子***可以相应地向主机***发送响应,其中所请求的数据未返回到主机***,以指示存储器子***需要更多时间(例如,非确定性时间长度)从存储器子***的另一个存储器装置(例如,比DRAM装置慢的存储器装置)中获取所请求的数据。
特别是对于NVDIMM-P存储器协议,当与RAM读取高速缓存一起使用,在存储器子***的指定存储器地址处对数据进行SREAD可能导致高速缓存未命中(例如,因为数据未存储在RAM读取高速缓存中或未存储在RAM读取高速缓存的开放行中)的情况下,针对指定存储器地址处的数据发送常规读取(XREAD)命令将是有益的。这可能是因为,XREAD命令能够花费非确定性时间长度(“非确定性时间”)从指定的存储器地址中获取数据,然后(例如,在RSP_n信号线上)向主机***发送已准备好将数据发送到主机***的指示,而导致高速缓存未命中的SREAD命令可能会导致存储器子***产生额外成本(例如,惩罚),因为存储器子***必须响应具有高速缓存未命中的主机***(而XREAD不需要这样做),并且此响应占用数据总线。
本公开的各方面通过基于存储器子***的给定存储器装置(例如,RAM读取高速缓存)的预测行状态选择性地从主机***向存储器子***发送(例如,发出)诸如根据NVDIMM-P存储器协议的SREAD命令的读取存储器子***命令来解决上述和其他缺陷。对于一些实施例,主机***(例如,主机***的硬件存储器控制器)使用给定存储器装置的配置数据和由主机***对存储器子***的给定存储器装置访问(例如,访问日志)的历史记录(例如,存储在硬件存储器控制器的跟踪存储器装置上的历史记录)以预测(例如,估计其可能性)存储在存储器子***的给定存储器地址处的数据当前是否存储在给定存储器装置的开放行或关闭行上。对于一些实施例,主机***(例如,主机***的硬件存储器控制器)使用此预测来确定将哪种类型的存储器子***读取命令发送到存储器子***。例如,在给定存储器装置用作存储器子***的高速缓存(例如,RAM读取高速缓存)并且主机***(例如,主机***的硬件存储器控制器)接收存储器请求以从存储器子***的指定存储器地址中读取所请求的数据的情况下,主机***可以:(基于配置数据和存储的历史记录)预测所请求的数据是否存储在存储器子***的给定存储器装置的开放行上;并响应于预测所请求的数据存储在给定存储器装置的开放行上,向存储器子***发送基于高速缓存的存储器子***命令(例如,SREAD命令),或响应于预测所请求的数据未存储在给定存储器装置的开放行上(例如,该行已关闭,或者数据甚至并未存储在给定存储器装置上),向存储器子***发送非基于高速缓存的存储器子***命令(例如,XREAD命令)。
如本文所使用的,给定存储器装置可以包括一或多个存储体,并且每个存储体可以包括用于存储数据的一或多个行。行可以包括存储体的页面。关于存储器装置,只要存在针对该给定行的未完成命令,该存储器装置的控制器通常就可以使该存储器装置的存储体的给定行保持(例如,保留)开放。如果没有对该存储器装置的给定存储体的未完成请求,并且存储器装置处于开放页面模式,则存储器装置的控制器可以将该给定存储体的当前开放行在关闭其之前保持(例如,保留)开放一段可配置的时间段(topen)。然而,如果没有对存储器装置的给定存储体的未完成请求,并且存储器装置处于关闭页面模式,则存储器装置的控制器可以在没有对给定存储体的未完成请求时立即关闭该给定存储器的当前开放行。
通常,与使用非基于高速缓存的读取命令相比,基于高速缓存的读取命令(例如,SREAD)的高速缓存命中(例如,SREAD命中)可以为存储器子***带来更好的性能,而基于高速缓存的读取命令的高速缓存未命中(例如,SREAD未命中)可能导致存储器子***的性能下降。因此,与用于将基于高速缓存的读取命令发送到存储器子***的传统方法/技术相比,如本文所述基于预测所请求的数据是否存储在用作高速缓存(例如,读取高速缓存)的存储器装置(例如,RAM)的开放行上来选择性地发送基于高速缓存的读取命令可以改善存储器子***的整体性能(例如,读取性能)。
如本文所使用的,基于高速缓存的存储器子***读取命令可以包含存储器子***读取命令,当所请求的数据存储在用作存储器子***的高速缓存的存储器装置(“高速缓存存储器装置”)的开放行上时,该存储器子***读取命令使存储器子***在确定性时间长度(“确定性时间”)中发送回所请求的数据(例如,发送所请求的数据准备好被读取的指示)。如果所请求的数据当前未存储在高速缓存存储器装置上或如果其存储在高速缓存存储器装置上的行未开放(即,关闭),则基于高速缓存的存储器子***读取命令可能导致存储器子***发送高速缓存未命中响应。在发送高速缓存未命中响应之后,存储器子***可以在非确定性(例如,任意)时间内发送所请求的数据(例如,发送所请求的数据准备好被读取的指示)。在该非确定性时间期间,存储器子***可以将所请求的数据从该存储器子***的另一存储器装置获取到该存储器子***的高速缓存存储器装置(例如,读取高速缓存)的开放行。基于高速缓存的存储器子***读取命令的实例可以包含但不限于根据NVDIMM-P存储器协议的SREAD命令。
如本文所使用的,非基于高速缓存的存储器子***读取命令可以包含使存储器子***在非确定性(例如,任意)时间内发送回所请求的数据(例如,发送所请求的数据准备好被读取的指示)的存储器子***读取命令。在该非确定性时间期间,存储器子***可以将所请求的数据从该存储器子***的另一存储器装置获取到该存储器子***的高速缓存存储器装置(例如,读取高速缓存)的开放行。基于高速缓存的存储器子***读取命令的实例可以包含但不限于根据NVDIMM-P存储器协议的XREAD命令。
如本文所述,本文公开了可以基于存储器子***的存储器装置的预测行状态选择性地向存储器子***发送读取命令的***的一些实例。
图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 cross-point”)存储器。非易失性存储器的交叉点阵列可以结合可堆叠的交叉网格数据访问阵列,基于体电阻的变化执行位存储。此外,与许多基于闪存的存储器相比,交叉点非易失性存储器可以执行就位写入操作,其中可以对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。
尽管描述了诸如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)操作、加密操作、缓存操作以及逻辑地址(例如,逻辑块地址(LBA),命名空间)和与存储器装置130相关联的物理地址(例如,物理块地址)之间的地址转换。存储器子***控制器115可以进一步包含主机接口电路***,以经由物理主机接口与主机***120进行通信。主机接口电路***可以将从主机***接收到的命令转换为命令指令以访问存储器装置130,以及将与存储器装置130相关联的响应转换为用于主机***120的信息。存储器子***110还可以包含未示出的附加电路***或组件。在一些实施例中,存储器子***110可以包含可以从存储器子***控制器115接收地址并对地址进行解码以访问存储器装置130的高速缓存或缓冲器(例如,DRAM)和地址电路***(例如,行解码器和列解码器)。
在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子***控制器115结合操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子***控制器115)可以从外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是被管理的存储器装置,其是与本地控制器(例如,本地控制器135)组合的原始存储器装置,用于同一存储器装置封装内的媒体管理。被管理的存储器装置的实例是被管理的NAND(MNAND)装置。
存储器子***110包含用于在存储器子***110的操作(诸如读取操作或写入操作)的执行期间对数据进行高速缓存的高速缓存114。高速缓存114可以包含存在于存储器子***110的前端的高速缓存,而存储器装置130、140可以存在于存储器子***110的后端。通常,高速缓存114具有比存储器子***110的一或多个存储器装置(例如,130、140)更快的访问性能。对于各种实施例,高速缓存114包括DRAM装置。此外,对于各种实施例,主机***120的硬件存储器控制器125基于预测所请求的数据是否存储在高速缓存114的开放行上来选择性地向存储器子***110发送基于高速缓存的存储器子***读取命令。
存储器子***110还可以包含未示出的附加电路***或组件。在一些实施例中,存储器子***110可以包含可以从存储器子***控制器115接收地址并对地址进行解码以访问存储器装置130的高速缓存或缓冲器(例如,DRAM)和地址电路***(例如,行解码器和列解码器)。
主机***120包含具有选择性发送读取命令的硬件存储器控制器125,其实现本文描述的一些实施例的至少一部分。根据一些实施例,硬件存储器控制器125处理由主机***120的处理装置生成(例如,当处理装置执行软件应用程序时)的存储器请求,诸如读取或写入请求。硬件存储器控制器125可以包含用于接收由主机***120的处理装置生成的存储器请求的硬件接口。如图所示,硬件存储器控制器125包含一或多个跟踪存储器装置126、存储器地址解码器127以及用于基于预测的行状态逻辑128选择读取命令的逻辑。硬件存储器控制器125可以例如耦合到主机***120的处理装置(例如,中央处理单元(CPU))。例如,硬件存储器控制器125可以表示北桥芯片或芯片组,其可以利于主机***120的处理装置与存储器子***110之间的交互。
作为过去从硬件存储器控制器125发送到存储器子***110存储器子***命令(例如,存储器子***读取命令)的结果,跟踪存储器装置126中的至少一个存储由硬件存储器控制器125对存储器子***110的给定存储器装置的访问的历史记录(例如,访问日志)。通过跟踪存储器装置126,硬件存储器控制器125可以跟踪对给定存储器装置的每个存储体的最后一行的访问。对于图1,给定存储器装置可以包含高速缓存114、存储器装置130或存储器装置140之一。历史记录可以包含一或多个条目,每个条目描述针对给定存储器装置(例如,高速缓存114或存储器装置130、140之一)的给定存储体(由硬件存储器控制器125)访问的最后一行。历史记录中的给定条目可以包含一或多个通道地址位、一或多个秩地址位以及与给定存储器地址的特定存储体相对应的一或多个存储体地址位,并且可以进一步包含与给定存储器地址的特定行相对应的一或多个行地址位。对于一些实施例,历史记录可以包含针对给定存储器装置的每个存储体的条目。硬件存储器控制器125可以基于在主机***120上生成(例如,由主机***120的处理装置生成并且由硬件存储器控制器125接收到)的存储器请求(例如,对于每个读取存储器请求)来生成或更新给定存储体的条目。对于一些实施例,硬件存储器控制器125使用给定存储器装置的配置数据(例如,其中包含地址映射)以将存储器请求的存储器地址翻译为给定存储器装置的存储体和行,并且此信息用于为存储器请求生成或更新历史记录中的条目。
此外,硬件存储器控制器125可以使用至少一个跟踪存储器装置126来存储与发送给耦合到主机***120的存储器子***110的一或多个先前存储器子***命令(例如,读取命令或写入命令)相关联的一或多个存储器地址。取决于实施例,先前子***命令之一可以是已知能得到与存储器地址相关联的数据的存储器子***命令(例如,读取、写入或一些其他命令),该数据被存储在(例如,获取到)存储器子***110的高速缓存(例如,高速缓存114)中。如本文所述,当硬件存储器控制器125向存储器子***110发送基于高速缓存的存储器子***读取命令并且所请求的数据存储在高速缓存114的开放行上时,这种在高速缓存114上的数据存储可以导致高速缓存命中。对于一些实施例,硬件存储器控制器125使至少一个跟踪存储器装置126存储与由硬件存储器控制器125发送到存储器子***110的(例如,每个)存储器子***读取命令相关联的存储器地址。此外,对于一些实施例,利用时间戳将存储器地址存储在至少一个跟踪存储器装置126上,该时间戳可以表示从硬件存储器控制器125发出与该存储器地址相关联的存储器子***命令到存储器子***110的发布时间。根据一些实施例,存储在至少一个跟踪存储器装置126上的存储器地址指示在该存储器地址处存储在存储器子***110上的数据很可能存储在存储器子***110的高速缓存114(例如,读取高速缓存)上,这继而指示,如果从硬件存储器控制器125向存储器子***110发送基于高速缓存的存储器子***读取命令(例如,根据NVDIMM-P存储器协议的SREAD命令),则可以得到高速缓存命中。对于一些实施例,至少一个跟踪存储器装置126包含CAM,该CAM可以实现在单个时钟周期中对其存储的数据内容的搜索。对于一些实施例,至少一个跟踪存储器装置126将每个相应的存储器地址作为标签存储在至少一个跟踪存储器装置126上,其中该标签可用于识别相应的存储器地址。例如,基于相应存储器地址的至少一部分来生成相应存储器地址的标签(例如,标签包含64位存储器地址的前端部分或末端部分)。
尽管硬件存储器控制器125被示出为包含一或多个跟踪存储器装置126,但是对于一些实施例,一或多个跟踪存储器装置126可以在硬件存储器控制器125的外部。
存储器地址解码器127使得能够或者利于将针对由硬件存储器控制器125(例如,从主机***120的处理装置)接收到的存储器请求的给定存储器地址翻译(例如,映射)为给定存储器装置的特定存储体的特定行。对于一些实施例,存储器地址解码器127使用给定存储器装置的配置数据来翻译给定存储器地址。例如,配置数据可以包含给定存储器装置(例如,给定存储器装置的控制器,诸如本地媒体控制器135)所使用的地址映射,以将存储器地址映射到给定存储器装置的特定存储体的特定行。给定存储器装置的地址映射可以指示地址位如何对应于各种形式的数据分割。例如,给定存储器装置的地址映射可以指示以下中的一或多个:存储器地址(例如,在主机***的硬件存储器控制器处接收到的存储器请求中的)的哪一或多个位对应于给定存储器装置的通道地址位;存储器地址的哪一或多个位对应于给定存储器装置的秩地址位;存储器地址的哪一或多个位对应于给定存储器装置的存储体地址位;存储器地址的哪一或多个位对应于给定存储器装置的存储体组地址位;以及存储器地址的哪一或多个位对应于给定存储器装置的行地址位。通过使用地址映射,存储器地址解码器127可以使硬件存储器控制器125能够从给定存储器地址中提取与至少一或多个存储体地址位和一或多个行地址位相对应的位,从而利于将给定存储器地址翻译(例如,映射)到给定存储器装置的特定存储体的特定行。通过使用地址映射,存储器地址解码器127还可以使硬件存储器控制器125能够从给定存储器地址中提取与一或多个通道地址位或一或多个秩地址位相对应的位,这也可以帮助对给定存储器地址的翻译(例如,帮助识别特定存储体)。地址映射可以是存储器地址到给定存储器装置的存储体行的静态映射。
对于一些实施例,预测行状态逻辑128使得能够或利于比较给定存储器装置的相同存储体的指定行以确定它们是相同行还是不同行。根据一些实施例,对于两个存储器请求及其相应的存储器地址,如果从相应的存储器地址中提取的通道地址位、秩地址位和存储体地址位相同,则两个存储器请求是针对相同的存储体。根据一些实施例,如果两个存储器请求是针对相同的存储体并且从相应的存储器地址提取的一或多个行地址位是相同的,则两个存储器请求是针对相同的行。此外,根据一些实施例,如果两个存储器请求是针对相同的存储体,但是从相应的存储器地址提取的行地址位不同,则两个存储器请求是针对不同的行。
用于基于预测的行状态逻辑128选择读取命令的逻辑(以下称为选择逻辑128)使得能够实现或利于针对存储器子***110的给定存储器地址处的所请求数据的存储器子***读取命令(例如,基于高速缓存与非基于高速缓存的存储器子***读取命令)的选择,该选择基于对所请求数据是否存储在给定存储器装置(例如,高速缓存114、存储器装置130,或存储器装置140)的存储体的开放行上的预测。对于一些实施例,选择逻辑128使硬件存储器控制器125通过首先确定或预测所请求的数据是否甚至存储在给定存储器装置上来预测所请求的数据是否存储在给定存储器装置(例如,高速缓存114)的开放行上。可以使用各种方法来执行这种确定或预测,包含例如跟踪(例如,使用跟踪存储器装置126中的至少一个)由主机***120结合过去存储器子***读取命令发送至存储器子***110的存储器地址。
在确定或预测所请求的数据被存储在给定存储器装置上之后,选择逻辑128可以使硬件存储器控制器125基于配置数据和主机***对给定存储器装置的访问历史记录(例如,存储体和行访问日志)来预测所请求的数据是存储在给定存储器装置的开放行还是关闭行上。例如,关于从指定存储器地址读取数据的当前存储器请求(由硬件存储器控制器125处理的),选择逻辑128可以使硬件存储器控制器125首先使用存储器地址解码器127,以利用给定存储器装置的配置数据(例如,地址映射)将指定的存储器地址翻译成给定存储器地址的存储体B的行R0。随后,如果主机***120确定历史记录(例如,存储在跟踪存储器装置126中的至少一个上的存储体和行访问日志)指示主机***120对存储体B的最后访问(例如,由从硬件存储器控制器125发送到存储器子***110的过去存储器子***读取命令引起的访问)涉及存储器B的不同的行(例如,行R1),则选择逻辑128可以使硬件存储器控制器125预测存储体B的行R0关闭。这是因为对于各种实施例,如果没有针对给定存储器装置(例如,常规DRAM装置)的存储体的给定行的未完成命令(例如,请求),但是存在针对给定存储器装置相同存储体的不同行的未完成命令(这种情况有时称为“存储体冲突”),则给定存储器装置的控制器(例如,本地媒体控制器135)可以立即关闭给定行以服务针对该不同行的未完成命令。因此,对于各种实施例,如果存储体B的最后一次访问是不同的行(例如,行R1),则选择逻辑128使硬件存储器控制器125预测给定存储器装置(例如,给定的存储器装置的控制器)必须关闭存储体B的行R0才能打开存储体B的不同的行(例如,R1)。然而,如果存储体B的最后一次访问是同一行R0,则选择逻辑128仍可能使硬件存储器控制器125预测存储体B的行R0继续开放(例如,取决于给定存储器装置的页面模式)。如本文指出,将所请求的数据存储在用作高速缓存(例如,高速缓存114)的给定存储器装置的存储体的关闭行上可能导致关于所请求的数据的高速缓存未命中(例如,SREAD未命中),而将所请求的数据存储在给定存储器装置(例如,高速缓存114)的存储体的开放行上可能导致关于所请求的数据的高速缓存命中(例如,SREAD命中)。
对于一些实施例,其中给定存储器装置(例如,高速缓存114)处于关闭页面模式并且(存储在至少一个跟踪存储器装置126上的)历史记录指示存储体B的最后访问是相同的行R0(或另选地指示不存在对存储体B的最后访问),如果确定(a)由硬件存储器控制器125对存储体B的行R0的最后访问(例如,由从主机***120发送到存储器子***110的过去存储器子***读取命令引起的访问)和(b)与当前存储器请求相关联的当前时间之间的时间小于(c)指示给定存储器装置关闭给定存储器装置的单个存储体的单个行所花费的时间的延迟时间(tdelay_to_close),则选择逻辑128使硬件存储器控制器125预测存储体B的行R0是开放的。对于一些实施例,延迟时间表示在由控制器(例如,本地媒体控制器135)向单个存储体发出最后未完成的命令之后,给定存储器装置的控制器关闭给定存储器装置的单个存储体的单个行所花费的时间(例如,从发出最后未执行的命令到向单个存储体发出预充电以导致单个行关闭之间的时间)。
对于一些实施例,其中给定存储器装置(例如,高速缓存114)处于开放页面模式并且(存储在至少一个跟踪存储器装置126上的)历史记录指示存储体B的最后访问是相同的行R0(或另选地指示不存在对存储体B的最后访问),如果确定(a)由主机***120对存储体B的行R0的最后访问(例如,由从主机***120发送到存储器子***110的过去存储器子***读取命令引起的访问)和(b)与当前存储器请求相关联的当前时间之间的时间小于(c)指示给定存储器装置关闭给定存储器装置的单个存储体的单个行所花费的时间的延迟时间(tdelay_to_close)与指示在没有针对单个存储体的未完成命令之后关闭单个行之前给定存储器装置保持(例如,保留)单个存储体的单个行开放的开放时间(topen)的求和,则选择逻辑128使硬件存储器控制器125预测存储体B的行R0是开放的。取决于实施例,开放时间可以是可配置的(例如,用户可配置的)时间段。
取决于实施例,给定存储器装置的控制器(例如,本地媒体控制器135)可以实施一或多个优化,该优化使控制器重新排序并执行针对给定存储器装置的命令(例如,执行无序的命令)。对于一些实施例,当确定存储器子***命令(例如,存储器子***读取命令)的发出是否会导致给定存储器地址的存储体的行关闭时,选择逻辑128考虑这些一或多个优化。对于一些实施例,这种考虑可以通过选择逻辑128在考虑一或多个优化的同时更新历史记录(例如,存储体和行访问日志)来实现。
对于一些实施例,(由存储器子***110提供的)给定存储器装置的配置数据可以包含指示给定存储器装置的页面模式(例如,开放页面模式或关闭页面模式)的信息。配置数据可以包含给定存储器装置的时序约束信息,诸如给定存储器装置(例如,其控制器)确定其对于给定存储器装置的单个存储体没有更多未完成命令所需要的时间。时序约束信息可使硬件存储器控制器125能够确定延迟时间(tdelay_to_close),该延迟时间为给定存储器装置关闭给定存储器装置的单个存储体的单个行要花费多长的时间。时序约束信息可使硬件存储器控制器125能够确定开放时间(topen),该时间为在没有针对单个存储体的未完成命令之后关闭单个行之前给定存储器装置在开放页面模式保持(例如,保留)单个存储体的单个行开放的时间。取决于实施例,存储器子***110可以将至少一些(如果不是全部的话)配置数据提供给主机***120,作为设置或发现过程的一部分(例如,硬件存储器控制器125利用存储器子***110执行的过程),或作为存储器子***110启动过程的一部分。
下面描述关于硬件存储器控制器125的操作的更多细节。
图2示出了根据本公开的一些实施例的主机***120的硬件存储器控制器125的实例性架构。在图2的实例性架构中,硬件存储器控制器125包含预测逻辑200,该预测逻辑使硬件存储器控制器125预测所请求的数据是存储在存储器子***110的给定存储器装置的开放行还是关闭行上。如图所示,一或多个跟踪存储器装置126存储给定存储器装置的存储体0至B-1的条目,其中每个条目描述与给定存储器装置的特定存储体相关的最后访问的行。硬件存储器控制器125从存储器子***110接收给定存储器装置的控制器的配置数据240。如本文所述,存储器地址解码器127使用配置数据240(例如,配置数据240中包含的地址映射)将接收到的存储器请求的存储器地址翻译为给定存储器装置的特定存储体的特定行以确定该特定行是否与该特定存储体被访问的最后一行不同(或相同)(如存储在至少一个跟踪存储器装置126中的历史记录所述)。
在操作期间,硬件存储器控制器125可以接收存储器请求230。在操作202,预测逻辑200使硬件存储器控制器125确定或预测数据是否存储在存储器子***110的给定存储器装置上。如本文所述,这种确定或预测可以基于存储在至少一个跟踪存储器装置126上的一或多个存储器地址,其中该一或多个存储器地址与从硬件存储器控制器125发送到存储器子***110的存储器子***命令(例如,存储器子***读取命令)相关联。
如果预测/确定是所请求的数据未存储在给定存储器装置上,则在操作214,预测逻辑200使硬件存储器控制器125预测所请求的数据存储在给定存储器装置的存储体的关闭行上。如果预测/确定是所请求的数据存储在给定存储器装置上,则在操作204,预测逻辑200使硬件存储器控制器125确定与所接收的存储器请求230的特定存储器地址相对应的给定存储器地址的特定存储体的特定行是否不同于针对该特定存储体访问的最后一行(即,确定是否存在存储体冲突)。
如果存在存储体冲突,则在操作214,预测逻辑200使硬件存储器控制器125预测所请求的数据存储在给定存储器装置的存储体的关闭行上。如果不存在存储体冲突,则在操作206,预测逻辑200使硬件存储器控制器125将时间tmax设置为延迟时间tdelay_to_close,该延迟时间表示在由控制器(例如,本地媒体控制器135)向单个存储体发出最后未完成的命令之后,给定存储器装置的控制器关闭给定存储器装置的单个存储体的单个行所花费的时间(例如,从发出最后未执行的命令到向单个存储体发出预充电以导致单个行关闭之间的时间)。
在操作208,预测逻辑200使硬件存储器控制器125确定(例如,基于配置数据240)存储器子***110的给定存储器装置是否处于开放页面模式。如果存储器子***110的给定存储器装置处于开放页面模式,则在操作210,预测逻辑200使硬件存储器控制器125将指示在没有针对单个存储体的未完成命令之后在关闭单个行之前存储器装置保持(例如,保留)单个存储体的单个行开放多长时间的开放时间topen添加到时间tmax。在操作210之后,执行操作212。另选地,如果存储器子***110的给定存储器装置未处于开放页面模式,则在操作206之后执行操作212。
在操作212,预测逻辑200使硬件存储器控制器125确定自从当前行的最后访问以来的时间是否大于时间tmax。如果它大于时间tmax,则在操作214,预测逻辑200使硬件存储器控制器125预测所请求的数据被存储在给定存储器装置的存储体的关闭行上。然而,如果它小于或等于时间tmax,则在操作216,预测逻辑200使硬件存储器控制器125预测所请求的数据被存储在给定存储器装置的存储体的开放行上。
图3至4是根据本公开的一些实施例的用于基于存储器子***的存储器装置的预测行状态来选择性地向存储器子***发送读取命令的实例性方法的流程图。方法300、400可以由处理逻辑来执行,该处理逻辑可以包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300、400由主机***120的硬件存储器控制器125执行,如关于图1所描述的。除此之外或另选地,对于一些实施例,方法300、400至少部分地由图1的存储器子***控制器115执行。尽管以特定的顺序或次序显示,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。此外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其他处理流程也是可能的。
现在参考图3的方法300,在操作302,主机***(例如,120)的硬件存储器控制器(例如,125)访问针对存储器子***(例如,110)的给定存储器装置(例如,114、130、140)的配置数据。如本文所述,配置数据可以由存储器子***110提供给硬件存储器控制器(例如,在设置、启动或发现过程期间)。配置数据可以包含但不限于给定存储器装置的地址映射、时间限制、当前页面模式等。
在操作304,硬件存储器控制器(例如,125)接收存储器请求以从存储器子***(例如,110)的给定存储器地址读取所请求的数据。响应于在操作304处所接收的存储器请求,在操作306,硬件存储器控制器(例如,125)基于(在操作302处访问的)配置数据和由硬件存储器控制器基于硬件存储器控制器先前处理的一或多个存储器请求而访问给定存储器装置的历史记录(例如,由于从硬件存储器控制器发送给存储器子***的一或多个存储器子***命令所引起的访问)来预测所请求的数据是否存储在给定存储器装置的开放行上。对于一些实施例,历史记录被存储在存储器子***(例如,110)的一组本地存储器装置(例如,跟踪存储器装置126)上。对于一些实施例,操作306包括基于配置数据和存储在该组本地存储器装置上的历史记录,确定给定存储器装置的给定存储体的给定行是否开放,其中给定存储体的给定行与在操作304所接收的存储器请求的给定存储器地址相关联。特别地,硬件存储器控制器可以响应于确定给定存储器装置的给定存储体的给定行是开放的来确定所请求的数据被存储在给定存储器装置的开放行中,并且可以响应于确定给定存储器装置的给定存储体的给定行未开放来确定所请求的数据未存储在给定存储器装置的开放行上。操作304可以响应于确定存储在历史记录上的条目指示由硬件存储器控制器对给定存储器装置的给定存储体的最后访问涉及给定存储体的另一行,来确定给定存储器装置的给定存储体的给定行是关闭的。
另一方面,响应于确定存储在历史记录上的条目指示由硬件存储器控制器对给定存储器装置的给定存储体的最后访问涉及给定存储体中与给定存储体的给定行相同的行,操作304可以基于给定存储器装置的当前页面模式来确定给定存储器装置的给定存储体的给定行是开放的。硬件存储器控制器(例如,125)可以确定与给定存储器的给定存储体的最后访问相关联的访问时间和与在操作304处接收到的存储器请求相关联的当前时间之间的时间差。如果给定存储器装置处于关闭页面模式,则硬件存储器控制器可以响应于确定该时间差小于指示给定存储器装置用来关闭给定存储器装置的单个存储体的单个行需要花费多长时间的延迟时间(tdelay_to_close),来确定给定存储器装置的给定存储体的给定行是开放的;否则,硬件存储器控制器可以确定给定存储器装置的给定存储体的给定行是关闭的。如果给定存储器装置处于开放页面模式,则硬件存储器控制器可以响应于确定该时间差小于延迟时间(tdelay_to_close)和开放时间(topen)(指示在没有针对单个存储体的未完成命令之后在关闭单个行之前给定存储器装置保持(例如,保留)单个存储体的单个行开放多长时间)之和来确定给定存储器装置的给定存储体的给定行是开放的;否则,硬件存储器控制器可以确定给定存储器装置的给定存储体的给定行是关闭的。
在操作308,基于操作306处的预测,硬件存储器控制器(例如,125)向存储器子***(例如,110)发送针对给定存储器地址的第一类型的存储器子***读取命令。对于一些实施例,操作308包括响应于预测所请求的数据存储在给定存储器装置的开放行上,向存储器子***发送针对给定存储器地址的第一类型的存储器子***读取命令。此外,对于一些实施例,操作308包括响应于预测所请求的数据未存储在给定存储器装置的开放行上,向存储器子***发送针对给定存储器地址的第二类型的存储器子***读取命令。例如,第一类型的存储器子***读取命令可以包含基于高速缓存的存储器子***读取命令(例如,根据NVDIMM-P存储器协议的推测读取(SREAD)命令),而第二类型的存储器子***读取命令可以包含非基于高速缓存的存储器子***读取命令(例如,根据NVDIMM-P存储器协议的XREAD命令)。
现在参考图4的方法400,操作402、404和406类似于以上关于图3描述的方法300的操作302、304和306。响应于操作406预测所请求的数据存储在给定存储器装置的开放行上,方法400前进到操作408;否则,方法400前进到操作410。
在操作408,硬件存储器控制器(例如,125)向存储器子***(例如,110)发送针对给定存储器地址的第一类型的存储器子***读取命令,诸如,基于高速缓存的命令(例如,根据NVDIMM-P存储器协议的SREAD命令)。在操作408之后,方法400前进到操作412。
在操作410,硬件存储器控制器(例如,125)向存储器子***(例如,110)发送针对给定存储器地址的第二类型的存储器子***读取命令,诸如,非基于高速缓存的命令(例如,根据NVDIMM-P存储器协议的XREAD命令)。在操作410之后,方法400前进到操作412。
在操作412,硬件存储器控制器(例如,125)基于在操作404处接收到的存储器请求来更新(硬件存储器控制器基于先前由硬件存储器控制器处理的一或多个存储器请求访问给定存储器装置的)历史记录。对于一些实施例,操作412包括更新历史记录中用于特定存储体的现有(或生成新的)条目(对应于在操作404处接收到的存储器请求的给定存储器地址),以使得该条目指示作为处理在操作404处接收到的存储器请求的结果而被硬件存储器控制器(例如,125)访问的最后一行。
图5A至5C提供了交互图,该交互图示出了在一些实施例的背景下计算环境100的组件之间的交互,其中执行了基于存储器子***的存储器装置的预测行状态来选择性地从主机***向存储器子***发送读取命令的方法。该方法的操作可以由处理逻辑来执行,该处理逻辑可以包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,该方法由主机***(例如,120)的硬件存储器控制器(例如,125)、存储器子***控制器(例如,115)、存储器装置(例如,130、140)、高速缓存(例如,114)或其一些组合执行。尽管以特定的顺序或次序显示了操作,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。此外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。在图5A至5C所示的实例的背景下,硬件存储器控制器可以包含硬件存储器控制器125,存储器子***控制器可以包含存储器子***控制器115,存储器装置可以包含存储器装置130或140,并且高速缓存可以包含高速缓存114。
如图5A所示,在操作502,硬件存储器控制器125访问存储器子***110的高速缓存114的配置数据(例如,包含地址映射、时间约束、页面模式等),该高速缓存可以包括DRAM装置。在操作504,硬件存储器控制器125接收存储器请求(例如,来自主机***120的处理装置的存储器请求)以从存储器子***110的给定存储器地址读取所请求的数据。在操作506,硬件存储器控制器125基于配置数据和由硬件存储器控制器125对高速缓存114的访问历史记录来预测所请求的数据是否存储在高速缓存114的存储体的开放行上。
现在参考图5B,在操作520,响应于预测所请求的数据被存储在高速缓存114的存储体的开放行上,硬件存储器控制器125向存储器子***110发送针对给定存储器地址的基于高速缓存的存储器子***读取命令。在操作530,存储器子***110的存储器子***控制器115接收针对给定存储器地址的基于高速缓存的存储器子***读取命令。在操作532,存储器子***控制器115处理针对给定存储器地址的基于高速缓存的存储器子***读取命令。在操作534,存储器子***控制器115确定所请求的数据是否存储在高速缓存114的存储体的开放行中。在操作560,高速缓存114有利于检查针对高速缓存114上的给定存储器地址的所请求的数据。响应于确定所请求的数据被存储在高速缓存114的存储体的开放行上,该方法前进到操作540。响应于确定所请求的数据未存储在高速缓存114的存储体的开放行上,该方法前进到操作536。
在操作536,存储器子***控制器115向主机***120的硬件存储器控制器125发送高速缓存未命中响应。在操作538,存储器子***控制器115从存储器装置(例如,130、140)获取数据到高速缓存114的存储体的开放行。在操作550,存储器装置(例如,130、140)有利于从对应于给定存储器地址的位置读取数据,并且在操作562,高速缓存114有利于在高速缓存114的存储体的开放行上存储数据。
在操作540,存储器子***控制器115将所请求的数据从高速缓存114的存储体的开放行提供给主机***120的硬件存储器控制器125。在操作564,高速缓存114向存储器子***控制器115提供来自高速缓存114的存储体的开放行的存储数据。对于一些实施例,操作540包含存储器子***控制器115向硬件存储器控制器125发送响应,以指示所请求的数据准备好发送到主机***120,并响应于硬件存储器控制器125发送了发送信号而将所请求的数据发送给主机***120。
在操作522,硬件存储器控制器125从存储器子***控制器115接收高速缓存未命中响应。在操作524,硬件存储器控制器125从存储器子***控制器115接收数据。在操作526,硬件存储器控制器125基于在操作504处接收并由硬件存储器控制器125处理的存储器请求来更新(由硬件存储器控制器125对高速缓存114的访问的)历史记录,以反映基于操作520发送的基于高速缓存的存储器子***读取命令对高速缓存114的存储体的开放行的访问。
现在参考图5C,在操作570,响应于预测所请求的数据未被存储在高速缓存114的存储体的开放行上,硬件存储器控制器125向存储器子***110发送针对给定存储器地址的非基于高速缓存的存储器子***读取命令。在操作572,硬件存储器控制器125基于在操作504处接收并由硬件存储器控制器125处理的存储器请求来更新(由硬件存储器控制器125对高速缓存114的访问的)历史记录,以反映基于操作570发送的非基于高速缓存的存储器子***读取命令对高速缓存114的存储体的开放行的访问。
在操作580,存储器子***控制器115接收针对给定存储器地址的非基于高速缓存的存储器子***读取命令。在操作582,存储器子***控制器115处理针对给定存储器地址的非基于高速缓存的存储器子***读取命令。在操作584,存储器子***控制器115从存储器装置(例如,130、140)获取数据到高速缓存114的存储体的开放行。在操作552,存储器装置(例如,130、140)有利于从对应于给定存储器地址的位置读取数据,并且在操作566,高速缓存114有利于在高速缓存114的存储体的开放行上存储数据。
在操作586,存储器子***控制器115将所请求的数据从高速缓存114的存储体的开放行提供给主机***120的硬件存储器控制器125。在操作568,高速缓存114向存储器子***控制器115提供来自高速缓存114的存储体的开放行的存储数据。在操作574,硬件存储器控制器125最终从存储器子***110接收所请求的数据。
图6示出了采用计算机***600形式的实例性机器,在其中可以执行用于使该机器执行本文讨论的任何一或多个方法的一组指令。在一些实施例中,计算机***600可以对应于主机***(例如,图1的主机***120),该主机***包含、耦合到或利用存储器子***(例如,图1的存储器子***110),或者可以用于执行控制器的操作(例如,执行操作***以执行与软件相对应的操作)。在另选实施例中,该机器可以连接(例如,联网)到局域网(LAN)、内联网、外联网和/或因特网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份运行,可以作为对等(或分布式)网络环境中的对等机器,或者作为云计算集成架构或环境中的服务器或客户端机器。
该机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥或能够执行指定该机器要采取的动作的一组指令(顺序指令或以其他方式)的任何机器。进一步地,虽然示出了单个机器,但是术语“机器”也应被理解为包含机器的任何集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文讨论的任何一或多个方法。
实例性计算机***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或软件。在计算机***600执行指令626的过程中,指令也可以全部或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储介质。机器可读存储介质624、数据存储装置618和/或主存储器604可以对应于图1的存储器子***110。
在一个实施例中,指令626包含用于实现与如本文所述的将读取命令选择性地发送到存储器子***有关的功能的指令。尽管在实例性实施例中将机器可读存储介质624示出为单个介质,但是术语“机器可读存储介质”应被认为包含存储一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”也应被认为包含能够存储或编码一组指令以供机器执行并且使机器执行本公开的任何一或多个方法的任何介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光学介质和磁性介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现了前述详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。这里,算法通常被认为是导致期望结果的自洽操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要出于通用的原因,已经证明有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
然而,应当牢记,所有这些和类似术语均应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可以是指计算机***或类似电子计算装置的动作和过程,该计算机***或类似电子计算装置将表示为计算机***的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机***的存储器或寄存器或其他此类信息存储***内物理量的其他数据。
本公开还涉及用于执行本文中的操作的设备。这种设备可以被专门构造用于预期目的,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以被存储在计算机可读存储介质中,诸如但不限于:任何类型的磁盘,包含软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适于存储电子指令的任何类型的介质,每个介质都耦合到计算机***总线。
本文中给出的算法和显示并非固有地与任何特定计算机或其他设备相关。各种通用***可以根据本文教导与程序一起使用,或者构造更专用的设备以执行方法可能证明是方便的。如以下描述中所阐述的,将出现用于各种这些***的结构。此外,本公开并未参考任何特定编程语言进行描述。应当理解,可以使用各种编程语言来实现对本文所述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,其可以包含其上存储有指令的机器可读介质,该指令可以用于对计算机***(或其他电子装置)进行编程以执行根据本公开的处理。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存存储器组件等。
在前述说明书中,已经参考本公开的特定实例性实施例描述了本公开的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。
Claims (18)
1.一种存储器子***,包括:
处理装置;以及
硬件存储器控制器,所述硬件存储器控制器用于处理由所述处理装置生成的存储器请求,所述硬件存储器控制器包括:
一组本地存储器装置,所述一组本地存储器装置用于存储所述硬件存储器控制器基于由所述硬件存储器控制器处理的一或多个存储器请求而访问所述存储器子***的给定存储器装置的历史记录,所述存储器子***被耦合到所述硬件存储器控制器;以及
执行操作的逻辑,所述操作包括:
访问针对所述存储器子***的所述给定存储器装置的配置数据,所述配置数据包括由所述存储器子***提供给所述硬件存储器控制器的地址映射;
接收存储器请求,以从所述存储器子***的给定存储器地址中读取所请求的数据;以及
响应于接收到所述存储器请求:
基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录,预测所述所请求的数据是否存储在所述给定存储器装置的开放行上,所述预测包括基于所述地址映射将所述给定存储器地址翻译成所述给定存储器装置的给定存储体的给定行;以及
基于对所述所请求的数据存储在所述给定存储器装置的所述开放行上的预测,向所述存储器子***发送针对所述给定存储器地址的第一类型的存储器子***读取命令,
其中所述第一类型的存储器子***读取命令包括根据非易失性双列直插式存储器模块-P NVDIMM-P存储器协议的推测读取SREAD命令。
2.根据权利要求1所述的存储器子***,其中所述给定存储器装置用作所述存储器子***的高速缓存。
3.根据权利要求1所述的存储器子***,其中基于所述对所述所请求的数据是否存储在所述给定存储器装置的所述开放行上的预测,向所述存储器子***发送针对所述给定存储器地址的所述第一类型的存储器子***读取命令包括:
响应于预测所述所请求的数据存储在所述给定存储器装置的所述开放行上,向所述存储器子***发送针对所述给定存储器地址的所述第一类型的存储器子***读取命令。
4.根据权利要求1所述的存储器子***,其中所述操作进一步包括:
响应于预测所述所请求的数据没有存储在所述给定存储器装置的所述开放行上,向所述存储器子***发送针对所述给定存储器地址的第二类型的存储器子***读取命令,其中所述第二类型的存储器子***读取命令包括根据非易失性双列直插式存储器模块-PNVDIMM-P存储器协议的XREAD命令。
5.根据权利要求1所述的存储器子***,其中所述历史记录包括响应于先前处理的针对目标存储器地址的存储器请求而由所述硬件存储器控制器对所述给定存储器装置进行先前访问的条目,所述条目描述了由所述硬件存储器控制器访问的所述给定存储器装置的存储体和行,所述给定存储器装置的所述存储体和所述行与所述目标存储器地址相关联。
6.根据权利要求1所述的存储器子***,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录来预测所述所请求的数据是否存储在所述给定存储器装置的所述开放行上包括:
基于所述配置数据和存储在所述一组本地存储器装置上的历史记录,确定所述给定存储器装置的所述给定存储体的所述给定行是否开放。
7.根据权利要求6所述的存储器子***,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录确定所述给定存储器装置的所述给定存储体的所述给定行是否开放包括:
响应于确定所述给定存储器装置的所述给定存储体的所述给定行是开放的,确定所述所请求的数据被存储在所述给定存储器装置的所述开放行上。
8.根据权利要求6所述的存储器子*** ,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录确定所述给定存储器装置的所述给定存储体的所述给定行是否开放包括:
响应于确定所述给定存储器装置的所述给定存储体的所述给定行未开放,确定所述所请求的数据未被存储在所述给定存储器装置的所述开放行上。
9.根据权利要求6所述的存储器子***,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录确定所述给定存储器装置的所述给定存储体的所述给定行是否开放包括:
基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录,确定存储在所述历史记录上的任何条目是否指示由所述硬件存储器控制器对所述给定存储器装置的所述给定存储体的最后访问涉及所述给定存储体的任何其他行。
10.根据权利要求9所述的存储器子***,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录确定所述给定存储器装置的所述给定存储体的所述给定行是否开放进一步包括:
响应于确定存储在所述历史记录上的条目指示由所述硬件存储器控制器对所述给定存储器装置的所述给定存储体的所述最后访问涉及所述给定存储体的另一行,确定所述给定存储器装置的所述给定存储体的所述给定行是关闭的。
11.根据权利要求9所述的存储器子***,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录确定所述给定存储器装置的所述给定存储体的所述给定行是否开放进一步包括:
响应于确定存储在所述历史记录上的条目指示由所述硬件存储器控制器对所述给定存储器装置的所述给定存储体的所述最后访问涉及所述给定存储体中与所述给定存储体的所述给定行相同的行:
基于存储在所述历史记录上的所述条目,确定与对所述给定存储器装置的所述给定存储体的所述最后访问相关联的访问时间;
确定所述给定存储器装置的页面模式;以及
基于所述给定存储器装置的所述访问时间和所述页面模式,确定所述给定存储器装置的所述给定存储体的所述给定行是否开放。
12.根据权利要求11所述的存储器子***,其中基于所述给定存储器装置的所述访问时间和所述页面模式确定所述给定存储器装置的所述给定存储体的所述给定行是否开放包括:
确定所述访问时间和与所述存储器请求相关联的当前时间之间的时间差;
确定所述时间差是否小于延迟时间,所述延迟时间指示所述给定存储器装置关闭所述给定存储器装置的单个存储体的单个行要花费多长的时间;以及
响应于确定所述页面模式处于关闭页面模式,基于确定所述时间差小于所述延迟时间,确定所述给定存储器装置的所述给定存储体的所述给定行是开放的。
13.根据权利要求11所述的存储器子***,其中基于所述给定存储器装置的所述访问时间和所述页面模式确定所述给定存储器装置的所述给定存储体的所述给定行是否开放包括:
确定所述访问时间和与所述存储器请求相关联的当前时间之间的时间差;
确定所述时间差是否小于延迟时间和开放时间的总和,所述延迟时间指示所述给定存储器装置关闭所述给定存储器装置的单个存储体的单个行要花费多长的时间,并且所述开放时间指示所述给定存储器装置在关闭所述单个行之前保持所述单个存储体的所述单个行开放了多长时间;以及
响应于确定所述页面模式处于开放页面模式,基于确定所述时间差小于所述延迟时间与所述开放时间的总和,确定所述给定存储器装置的所述给定存储体的所述给定行是开放的。
14.根据权利要求1所述的存储器子***,其中所述一组本地存储器装置进一步存储与从所述硬件存储器控制器发送到所述存储器子***的一或多个过去的存储器子***命令相关联的一或多个存储器地址,并且其中对所述所请求的数据是否存储在所述给定存储器装置的所述开放行上的预测进一步基于存储在所述一组本地存储器装置上的所述一或多个存储器地址。
15.根据权利要求14所述的存储器子***,其中基于所述配置数据、存储在所述一组本地存储器装置上的所述历史记录以及存储在所述一组本地存储器装置上的所述一或多个存储器地址来预测所述所请求的数据是否存储在所述给定存储器装置的所述开放行上包括:
基于存储在所述一组本地存储器装置上的所述一或多个存储器地址,预测所述所请求的数据是否存储在所述给定存储器装置上;以及
响应于预测所述所请求的数据存储在所述给定存储器装置上:
基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录,确定所述给定存储器装置的所述给定存储体的所述给定行是否开放;以及
响应于确定所述给定存储器装置的所述给定存储体的所述给定行是开放的,确定所述所请求的数据被存储在所述给定存储器装置的所述开放行上。
16.一种硬件存储器控制器,包括:
硬件接口,所述硬件接口用于接收由处理装置生成的存储器请求;
一组本地存储器装置,所述一组本地存储器装置用于存储所述硬件存储器控制器基于由所述硬件存储器控制器处理的一或多个存储器请求而访问存储器子***的给定存储器装置的历史记录,所述存储器子***被耦合到所述硬件存储器控制器;以及
执行操作的逻辑,所述操作包括:
访问针对所述存储器子***的所述给定存储器装置的配置数据,所述配置数据包括由所述存储器子***提供给所述硬件存储器控制器的地址映射;
接收所述存储器请求,以从所述存储器子***的给定存储器地址中读取所请求的数据;以及
响应于接收到所述存储器请求:
基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录,预测所述所请求的数据是否存储在所述给定存储器装置的开放行上,所述预测包括基于所述地址映射将所述给定存储器地址翻译成所述给定存储器装置的给定存储体的给定行;以及
基于对所述所请求的数据存储在所述给定存储器装置的所述开放行上的所述预测,向所述存储器子***发送针对所述给定存储器地址的第一类型的存储器子***读取命令,
其中所述第一类型的存储器子***读取命令包括根据非易失性双列直插式存储器模块-P NVDIMM-P存储器协议的推测读取SREAD命令。
17.一种用于存储器子***的方法,包括:
通过硬件存储器控制器访问耦合到所述硬件存储器控制器的所述存储器子***的给定存储器装置的配置数据,所述硬件存储器控制器包括一组本地存储器装置,以存储所述硬件存储器控制器基于由所述硬件存储器控制器处理的一或多个存储器请求而访问所述给定存储器装置的历史记录,所述配置数据包括由所述存储器子***提供给所述硬件存储器控制器的地址映射;
在所述硬件存储器控制器处接收存储器请求,以从所述存储器子***的给定存储器地址中读取所请求的数据;以及
响应于接收到所述存储器请求:
通过所述硬件存储器控制器,基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录,预测所述所请求的数据是否存储在所述给定存储器装置的开放行上,所述预测包括基于所述地址映射将所述给定存储器地址翻译成所述给定存储器装置的给定存储体的给定行;
通过所述硬件存储器控制器,基于对所述所请求的数据存储在所述给定存储器装置的所述开放行上的预测,向所述存储器子***发送针对所述给定存储器地址的第一类型的存储器子***读取命令,其中所述第一类型的存储器子***读取命令包括根据非易失性双列直插式存储器模块-P NVDIMM-P存储器协议的推测读取SREAD命令;以及
通过所述硬件存储器控制器,基于所述存储器请求来更新历史记录。
18.根据权利要求17所述的方法,其中基于所述配置数据和存储在所述一组本地存储器装置上的所述历史记录来预测所述所请求的数据是否存储在所述给定存储器装置的所述开放行上包括:
基于所述配置数据和存储在所述一组本地存储器装置上的历史记录,确定所述给定存储器装置的所述给定存储体的所述给定行是否开放。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/694,172 US11157412B2 (en) | 2019-11-25 | 2019-11-25 | Read commands based on row status prediction |
US16/694,172 | 2019-11-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835816A CN112835816A (zh) | 2021-05-25 |
CN112835816B true CN112835816B (zh) | 2022-09-02 |
Family
ID=75923324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011329033.2A Active CN112835816B (zh) | 2019-11-25 | 2020-11-24 | 存储器子***及相关硬件存储器控制器和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11157412B2 (zh) |
CN (1) | CN112835816B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691541B (zh) * | 2022-03-28 | 2024-07-02 | 重庆大学 | 一种基于动态访问的dram-nvm混合内存预测器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947662A (zh) * | 2017-12-20 | 2019-06-28 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8892821B2 (en) * | 2003-12-10 | 2014-11-18 | International Business Machines Corporation | Method and system for thread-based memory speculation in a memory subsystem of a data processing system |
US20090157985A1 (en) * | 2007-12-18 | 2009-06-18 | Arm Limited | Accessing memory arrays |
KR101598828B1 (ko) * | 2008-12-22 | 2016-03-02 | 삼성전자주식회사 | 메모리 장치의 페이지 오픈 시간 조절 방법 및 이를 이용한메모리 시스템 |
US8873329B1 (en) * | 2012-01-17 | 2014-10-28 | Rambus Inc. | Patterned memory page activation |
US8990473B2 (en) * | 2012-10-04 | 2015-03-24 | Applied Micro Circuits Corporation | Managing requests to open and closed banks in a memory system |
US10613764B2 (en) * | 2017-11-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Speculative hint-triggered activation of pages in memory |
US11029879B2 (en) * | 2018-01-29 | 2021-06-08 | Samsung Electronics Co., Ltd | Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel |
-
2019
- 2019-11-25 US US16/694,172 patent/US11157412B2/en active Active
-
2020
- 2020-11-24 CN CN202011329033.2A patent/CN112835816B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947662A (zh) * | 2017-12-20 | 2019-06-28 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210157732A1 (en) | 2021-05-27 |
CN112835816A (zh) | 2021-05-25 |
US11157412B2 (en) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113010449B (zh) | 用于存储器子***中命令的有效处理的方法、***和非暂时性计算机可读存储媒体 | |
US11829636B2 (en) | Cold data identification | |
US20240176547A1 (en) | Access tracking in memory | |
CN113518977A (zh) | 基于高速缓存行的扇区的修改来逐出高速缓存行 | |
US11656995B2 (en) | Dynamic access granularity in a cache media | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113934666B (zh) | 数据接口桥的预取 | |
US11494306B2 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
CN112835816B (zh) | 存储器子***及相关硬件存储器控制器和方法 | |
US11698756B2 (en) | Cache-based memory read commands | |
US20220188231A1 (en) | Low-bit density memory caching of parallel independent threads | |
CN112835815B (zh) | 具有高速缓冲存储器的存储器子***的预提取 | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
CN115639951A (zh) | 在存储器子***中实施自动速率控制 | |
US11379153B2 (en) | Storage traffic pattern detection in memory devices | |
CN114003518A (zh) | 在具有高延迟后备存储的存储器子***中管理存储器命令的处理 | |
US11734071B2 (en) | Memory sub-system tier allocation | |
US11314456B2 (en) | Memory device performance based on storage traffic pattern detection |
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 |