使用主机存储器缓冲器的存储器叠加的制作方法

文档序号:29572878发布日期:2022-04-09 04:29阅读:87来源:国知局
使用主机存储器缓冲器的存储器叠加的制作方法

1.本公开的实施例大体上涉及存储器子系统,且更明确来说,涉及使用主机存储器缓冲器的存储器叠加。


背景技术:

2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统来将数据存储在存储器装置处及从所述存储器装置检索数据。
附图说明
3.从下文给出的详细描述及从本公开的各个实施例的附图将更加完全地理解本公开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
4.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
5.图2说明根据本公开的一些实施例的使用主机存储器缓冲器的存储器叠加。
6.图3是根据本公开的一些实施例的用于使用主机存储器缓冲器执行存储器叠加的实例方法的流程图。
7.图4是根据本公开的一些实施例的用于使用主机存储器缓冲器执行存储器叠加的另一实例方法的流程图。
8.5a到c说明根据本公开的一些实施例的使用主机存储器缓冲器在存储器子系统处进行的存储器叠加。
9.图6是本公开的实施例可操作于其中的实例计算机系统的框图。
具体实施方式
10.本公开的方面涉及用于使用主机系统存储器缓冲器进行存储器叠加的系统及方法。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(在下文也称为“存储器装置”)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
11.存储器子系统可包含每一者与不同存储器延时相关联的多个存储器装置。存储器存取延时是指服务于对存储在存储器装置处的数据或代码的请求所经过的时间量。在一些常规系统中,存储器子系统控制器可将存储于展现高存取延时的存储器装置(称为高延时存储器装置)处的第一代码区段复制到与较低存取延时相关联的存储器装置(称为低延时存储器装置)。举例来说,低延时存储器装置可为动态随机存取存储器(dram)装置,且高延时存储器装置可为非易失性存储器装置(例如快闪存储器装置)。存储器子系统控制器可执行驻留于低延时存储器装置上的第一代码区段。在一些例子中,第一代码区段可包含对存储于高延时存储器装置处的第二代码区段的引用(即跳转指令)。存储器子系统控制器可从
低延时存储器装置移除第一代码区段且将第二代码区段从高延时装置复制到低延时装置。接着,存储器子系统控制器可执行驻留于低延时存储器装置上的第二代码区段。此技术称为存储器叠加(memory overlay/memory overlaying)。
12.存储器叠加可用于减小整体存储器子系统延时。举例来说,在包含dram装置的存储器子系统中,存储器子系统控制器可将存储于非易失性存储器装置(例如nand快闪存储器装置)处的代码区段叠加到dram装置。然而,一些存储器子系统不包含dram装置且代替地仅包含静态ram(sram)装置或紧耦合存储器(tcm)装置。sram装置及/或tcm装置的存储容量可显著小于非易失性存储器装置的存储容量。因此,可在给定时间将存储于高延时存储器装置处的仅一小部分代码复制到低延时存储器装置。存储器子系统控制器执行大量的复制操作来在存储器子系统操作期间将代码从高延时存储器装置复制到低延时存储器装置。由于大量的复制操作及与高延时存储器装置相关联的高延时,整体存储器子系统延时的减小最好是最小的。
13.本公开的方面通过具有在存储器子系统操作期间使用主机系统的存储器缓冲器(在本文中称为主机存储器缓冲器)来促进存储器叠加的存储器子系统来解决上述及其它缺点。主机存储器缓冲器可为与低于高延时存储器装置(例如非易失性存储器装置)的延时相关联的存储器装置的部分。举例来说,主机存储器缓冲器可驻留于主机系统的dram装置上。
14.例如非易失性存储器装置的高延时存储器装置可存储多个叠加区段,每一叠加区段包含在存储器子系统操作期间将执行的一或多个代码区段。每一代码区段可包含由存储器子系统控制器执行的一组一或多个可执行指令。在存储器子系统初始化期间,存储器子系统控制器可将存储于高延时存储器装置处的叠加区段的至少一部分复制到主机存储器缓冲器。响应于确定特定代码区段将由存储器子系统控制器执行,存储器子系统控制器可识别包含特定代码区段的第一叠加区段并确定第一叠加区段是否存在于主机存储器缓冲器中。响应于确定第一叠加区段存在于主机存储器缓冲器中,存储器子系统控制器可将第一叠加区段复制到驻留于存储器子系统的低延时存储器装置(例如sram装置、tcm装置等)上的缓冲器(称为存储器子系统缓冲器)。存储器子系统控制器可从存储器子系统缓冲器执行包含于第一叠加区段中的特定代码区段。存储器子系统控制器可确定另一代码区段将由存储器子系统控制器执行。响应于确定包含代码区段的第二叠加区段存在于主机存储器缓冲器中,存储器子系统控制器可从存储器子系统缓冲器移除第一叠加区段且将第二叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。接着,存储器子系统控制器可从存储器子系统缓冲器执行包含于第二叠加区段中的代码区段。
15.本公开的优点包含(但不限于)存储器子系统的整体系统延时减小及整体存储器子系统性能增加。存储于高延时存储器装置(例如非易失性存储器装置)处的叠加区段在存储器子系统初始化期间复制到低延时存储器装置(例如dram装置)的主机存储器缓冲器。在存储器子系统操作期间,存储器子系统控制器可将叠加区段从主机存储器缓冲器(而非高延时存储器装置)复制到存储器子系统缓冲器。通过从主机存储器缓冲器(而非高延时存储器装置)复制数据,高延时存储器装置与存储器子系统缓冲器之间的复制操作的数目显著减小,借此减小整体系统延时并增加整体系统性能。此外,由于主机存储器缓冲器驻留于低延时存储器装置(例如dram存储器装置)上,可存取存储于主机存储器缓冲器处的数据且可
比从高延时存储器装置复制到存储器子系统缓冲器的数据更快地将其复制到存储器子系统缓冲器,借此进一步减小整体系统延时并增加整体系统性能。
16.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如存储器装置140)、一或多个非易失性存储器装置(例如存储器装置130)或此类装置的组合。
17.存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小形dimm(so-dimm)及各种类型的非易失性双列直插式存储器模块(nvdimm)。
18.计算系统100可为例如桌面计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如飞机、无人机、火车、汽车或其它运输工具)、物联网(iot)启用装置、嵌入式计算机(例如,包含于运载工具、工业设备或联网商用装置中的嵌入式计算机)或包含存储器及处理装置的此类计算装置的计算装置。
19.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中使用,“耦合到”或“与

耦合”一般指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中介组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等的连接。
20.主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如nvdimm控制器)及存储协议控制器(例如pcie控制器、sata控制器)。主机系统120使用存储器子系统110(例如)将数据写入到存储器子系统110及从存储器子系统110读取数据。
21.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、双倍数据速率(ddr)存储器总线、小计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双倍数据率(ddr)的dimm套接字接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1将存储器子系统110说明为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接及/或通信连接的组合来存取多个存储器子系统。
22.存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如存储器装置140)可为(但不限于)随机存取存储器(ram),例如动态随机存取存储器(dram)及同步动态随机存取存储器(sdram)。
23.非易失性存储器装置(例如存储器装置130)的一些实例包含与非(nand)型快闪存储器及原位写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可基于体电阻变化连同可堆叠交叉栅格化数据存取阵列而执行位存储。另外,与许多
基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在未预先擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)及三维nand(3d nand)。
24.存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元(例如单电平单元(slc))每单元可存储一个位。其它类型的存储器单元(例如多电平单元(mlc)、三电平单元(tlc)及四电平单元(qlc))每单元可存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分及mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可经分组为页,其可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如nand),页可经分组以形成块。
25.尽管描述了例如非易失性存储器单元及nand类型快闪存储器的3d交叉点阵列(例如2d nand、3d nand)的非易失性存储器装置,但存储器装置130可为基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选择存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器、电可擦除可编程只读存储器(eeprom)。
26.存储器子系统控制器115(或简称控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。硬件可包含具有用于执行本文中描述的操作的专用(即,硬编码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。
27.存储器子系统控制器115可包含经配置以执行存储在本地存储器119中的指令的处理器117(例如处理装置)。在说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流及例程的指令的嵌入式存储器。
28.在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(rom)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可代替地依赖于外部控制(例如,由外部主机提供、或由与存储器子系统分离的处理器或控制器提供)。
29.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正代码(ecc)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑地址(例如逻辑块地址(lba)、命名空间)与物理地址(例如物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含经由物理主机接口与主机系统120通信的主机接口电路系统。所述主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器装置130的命令指令,
且还将与存储器装置130相关联的响应转换成用于主机系统120的信息。
30.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如dram)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且对所述地址进行解码以存取存储器装置130。
31.在一些实施例中,存储器装置130包含本地媒体控制器135,其连同存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如存储器子系统控制器115)可外部地管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与同一存储器装置封装内用于媒体管理的本地控制器(例如本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
32.在一些实施例中,主机系统120的驱动器可分配主机系统存储器的可由存储器子系统控制器115存取的一或多个部分(在本文中称为主机存储器缓冲器)。主机存储器缓冲器可存储与存储器子系统110的操作相关联的数据或代码。举例来说,逻辑到物理地址表(即l2p表)可经存储于主机系统120的主机存储器缓冲器的第一部分处。存储器子系统控制器115可存取存储于主机存储器缓冲器处的l2p表以将存储于存储器装置130、140处的一部分数据的逻辑地址转译成物理地址。在一些实施例中,主机存储器缓冲器的一或多个部分可存储从存储器装置130、140复制的可执行代码区段。在此类实施例中,主机存储器缓冲器可用于在存储器子系统110操作期间促进存储器叠加。主机存储器缓冲器可与低于与存储器装置130、140相关联的延时的延时相关联。举例来说,主机存储器缓冲器可为dram装置的一部分,且存储器装置130可为非易失性存储器装置。在一些实施例中,主机存储器缓冲器可存储l2p表及从存储器装置130、140复制的可执行代码区段。在其它或类似实施例中,主机存储器缓冲器可存储从存储器装置130、140复制的可执行代码区段,而无需存储l2p表。
33.在一些实施例中,存储器子系统110可包含存储器子系统缓冲器。在一些例子中,存储器子系统缓冲器可与低于与主机存储器缓冲器相关联的延时及与存储器装置130、140相关联的延时的延时相关联。举例来说,存储器子系统缓冲器可为紧耦合存储器(tcm)装置或静态随机存取存储器(sram)装置的部分,主机存储器缓冲器可为dram装置的部分,且存储器装置130可为非易失性存储器装置。在一些实施例中,存储器子系统缓冲器可为本地存储器119的一部分。在其它或类似实施例中,存储器装置130可为第一存储器装置,且存储器子系统缓冲器可为第二存储器装置(例如存储器装置140)的部分。
34.存储器子系统110包含使用主机系统120的主机存储器缓冲器促进存储器叠加的主机存储器缓冲器叠加组件113(在本文中称为hmb叠加组件113)。在一些实施例中,存储器子系统控制器115包含hmb叠加组件113的至少一部分。举例来说,存储器子系统控制器115可包含经配置以执行存储于本地存储器119中的指令以用于执行本文中描述的操作的处理器117(处理装置)。在一些实施例中,hmb叠加组件113是主机系统110、应用程序或操作系统的部分。
35.hmb叠加组件113可促进存储器子系统缓冲器中的代码区段叠加。在一些实施例中,存储器装置130可存储多个代码区段,其中每一代码区段包含于叠加区段中。每一代码区段可包含由存储器子系统110的固件执行的一组可执行指令。在存储器子系统110初始化
期间,hmb叠加组件113可将存储于存储器装置130处的叠加区段的至少一部分复制到主机存储器缓冲器。响应于存储器子系统控制器115确定将执行特定代码区段,hmb叠加组件113可识别存储器装置130的包含所述特定代码区段的第一叠加区段并确定第一叠加区段是否存在于主机存储器缓冲器中。响应于确定第一叠加区段存在于主机存储器缓冲器中,hmb叠加组件113可将第一叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。存储器子系统控制器115可从存储器子系统缓冲器执行包含于第一叠加区段中的特定代码区段。存储器子系统控制器115可确定将执行另一代码区段。响应于确定包含代码区段的第二叠加区段存在于主机存储器缓冲器中,hmb叠加组件113可从存储器子系统缓冲器移除第一叠加区段且将第二叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。接着,存储器子系统控制器115可从存储器子系统缓冲器执行包含于第二叠加区段中的代码区段。下面描述关于hmb叠加组件113的操作的更多细节。
36.在一些实施例中,可在存储器子系统110初始化期间将包含与执行hmb叠加组件113相关联的代码的叠加区段复制到存储器子系统缓冲器。举例来说,根据本文中描述的实施例,可将与执行hmb叠加组件113相关联的叠加区段从存储器装置130复制到存储器子系统缓冲器或将其从主机存储器缓冲器复制到存储器子系统缓冲器。在一些实施例中,与执行hmb叠加组件113相关联的叠加区段在存储器子系统110操作期间可保持于存储器子系统缓冲器中且在存储器叠加执行期间不从存储器子系统缓冲器移除。
37.图2说明根据本公开的一些实施例的使用主机存储器缓冲器210的存储器叠加。如先前描述,存储器装置130、140可为存储一或多个叠加区段212的非易失性存储器装置。每一叠加区段212可包含一组可执行指令。在存储器子系统110初始化期间,hmb叠加组件113可将一或多个叠加区段(例如叠加区段1到n)复制到主机存储器缓冲器210。如先前描述,主机存储器缓冲器210可驻留于展现比存储器装置130、140更低的延时的存储器装置上。举例来说,主机存储器缓冲器210可驻留于dram存储器装置上。在存储器子系统110操作期间,存储器子系统控制器可确定将执行存储于存储器装置130、140处的特定代码区段。在一些实施例中,存储器子系统控制器115可确定响应于从存储器子系统110的固件接收请求将执行特定代码区段。hmb叠加组件113可识别存储器装置130的包含所请求的代码区段的叠加区段212且确定经识别叠加区段212是否存在于主机存储器缓冲器210中。响应于确定叠加区段212存在于主机存储器缓冲器210中,hmb叠加组件113可将叠加区段从主机存储器缓冲器210复制到存储器子系统缓冲器220。如先前论述,存储器子系统器缓冲器220可驻留于与比主机存储器缓冲器210及存储器装置130、140更低的延时相关联的存储器装置上。举例来说,存储器子系统缓冲器220可驻留于tcm存储器装置或sram存储器装置上。
38.在说明性实例中,存储器子系统控制器115可确定将执行包含于叠加区段1中的特定代码区段。响应于确定特定代码区段包含于叠加区段1中,hmb叠加组件113可确定叠加区段1是否存在于主机存储器缓冲器210中。响应于确定叠加区段1存在于主机存储器缓冲器210中,hmb叠加组件113可将叠加区段从主机存储器缓冲器210复制到存储器子系统缓冲器220。存储器子系统控制器115可从存储器子系统缓冲器220执行叠加区段1的代码区段。存储器子系统控制器115可确定将执行包含于叠加区段2中的另一代码区段。举例来说,叠加区段1的代码区段的一部分可包含用于执行叠加区段2的代码区段的一部分的指令(即跳转指令)。响应于确定叠加区段2存在于主机存储器缓冲器210中,hmb叠加组件113可确定存储
器子系统缓冲器220上空间是否可用于叠加区段2的复制。响应于确定存储器子系统缓冲器220上空间不可用于叠加区段2的复制,hmb叠加组件113可从存储器子系统缓冲器220移除叠加区段1。接着,hmb叠加组件113可将叠加区段2复制到存储器子系统缓冲器220。
39.图3是根据本公开的一些实施例的使用主机存储器缓冲器执行存储器叠加的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法300由图1的hmb叠加组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
40.在操作310,处理装置将两个或更多个叠加区段从存储器子系统的非易失性存储器装置复制到驻留于与存储器子系统通信的主机系统的第一易失性存储器装置上的第一存储器缓冲器(即主机存储器缓冲器)。每一叠加区段可包含存储于存储器装置处的代码区段。每一第二代码可包含一组可执行指令,如先前描述。图5a到5c说明根据本公开的一些实施例的使用主机存储器缓冲器210在存储器子系统110处进行的存储器叠加。如图5a中说明,存储器装置130可为非易失性存储器装置。在一些实施例中,图3的处理装置可包含hmb叠加组件113。hmb叠加组件113可指派存储于存储器装置130处的将包含于特定叠加区段212中的代码区段。
41.在一些实施例中,hmb叠加组件113可基于包含于特定代码区段中的指令在存储器子系统110操作期间(例如,由存储器子系统110的固件等)执行的频率来指派将包含于叠加区段212中的代码区段。在一些实施例中,hmb叠加组件113可基于在存储器子系统110操作期间执行的包含于特定代码区段中的实例指令的估计数目来确定执行频率。举例来说,hmb叠加组件113可基于与类似于或相关于一组特定指令的另一组指令相关联的经测量执行频率来确定所述一组特定指令的执行频率。在其它或类似实施例中,hmb叠加组件113可基于所述一组指令的经测量执行频率来确定执行频率。举例来说,hmb叠加组件113可在存储器子系统110操作期间测量一组指令的执行频率。hmb叠加组件113可将经测量执行频率存储于非易失性存储器(例如存储器130)中。在存储器子系统110初始化(通电)期间,hmb叠加组件113可基于与非易失性存储器中所存储的一组特定指令相关联的先前经测量执行频率来确定所述一组特定指令的执行频率。在其它或类似实施例中,一组特定指令的执行频率可由所述一组特定指令的程序员或开发者提供。
42.在一些实施例中,hmb叠加组件113可识别存储于存储器装置130处的第一代码区段及第二代码区段。包含于第一代码区段中的指令可与第一执行频率相关联,且第二代码区段可与第二执行频率相关联。hmb叠加组件113可将第一执行频率与第二执行频率进行比较。响应于确定第一执行频率低于第二执行频率,hmb叠加组件113可确定在存储器子系统110操作期间与第一代码区段相关联的指令执行频率低于与第二代码区段相关联的指令。因而,hmb叠加组件113可在第一叠加区段212中包含第一代码区段及在第二叠加区段212中包含第二代码区段。
43.在一些实施例中,存储器装置130可存储包含对存储器子系统110或主机系统120
的性能或操作关键的指令(例如,与用于频繁执行的命令的处理程序相关联的数据)的代码区段。hmb叠加组件113可识别包含关键指令的代码区段且将此类代码区段一起包含于叠加区段212中。在一些实施例中,hmb叠加组件113可基于由代码区段的程序员或开发者提供的指示来确定指令是否为关键指令。在其它或类似实施例中,hmb叠加组件113可基于已知关键指令与存储器装置130处存储的代码区段中所包含的指令之间的相似度或关系来确定指令是关键指令。响应于确定存储器装置130处存储的代码区段包含关键指令,hmb叠加组件113可在特定叠加区段212中包含所述代码区段。
44.在一些实施例中,hmb叠加组件可在叠加区段212中包含包含引用叠加区段212的其它指令的指令的代码区段。hmb叠加组件113可识别存储于存储器装置130处的第一代码区段及第二代码区段。hmb叠加组件113可确定包含于第一代码区段中的指令是否包含对包含于第二代码区段中的指令的引用。响应于确定包含于第一代码区段中的指令包含对包含于第二代码区段中的指令的引用,hmb叠加组件113可在单个叠加区段212中包含第一代码区段及第二代码区段。响应于确定第一代码区段不包含引用第二代码区段中的指令的指令,hmb叠加组件113可在第一叠加区段212中包含第一代码区段及在第二叠加区段212中包含第二代码区段。
45.hmb叠加组件113可分配主机存储器缓冲器210的一或多个部分以用于一或多个叠加区段212的复制。在一些实施例中,hmb叠加组件113可将请求传输到主机系统120以为存储器装置130的叠加区段212分配主机存储器缓冲器210的一或多个部分。在其它或类似实施例中,hmb叠加组件113可分配主机存储器缓冲器210的部分,而无需传输请求到主机系统120。hmb叠加组件可为叠加区段212分配主机存储器缓冲器210的特定数目个部分及/或特定空间量。在一些实施例中,hmb叠加组件113可在传输到主机系统120的请求中包含特定数目个部分及/或特定空间量。响应于从hmb叠加组件113接收到请求,主机系统120的驱动器可根据所述请求识别主机存储器缓冲器210的一或多个可用部分及为叠加区段分配主机存储器缓冲器210的一或多个可用部分。主机系统120的驱动器可传输为叠加区段212保留的主机存储器缓冲器210的一或多个部分的指示。在一些实施例中,所述指示可包含主机存储器缓冲器210的经保留部分中所包含的空间量。在其它或类似实施例中,所述指示可包含主机存储器缓冲器210的每一经分配部分的存储器地址。
46.如关于图2描述,hmb叠加组件113可将两个或更多个叠加区段212复制到主机存储器缓冲器210。如图5a中说明,主机存储器缓冲器210可驻留于易失性存储器装置中,例如易失性存储器装置510。在一些实施例中,hmb叠加组件113可在存储器子系统110初始化期间复制两个或更多个叠加区段212。在一些实施例中,hmb叠加组件113可将叠加区段212复制到主机存储器缓冲器210的经保留部分。hmb叠加组件113可基于主机存储器缓冲器210的可用部分的大小确定要复制到主机存储器缓冲器210的叠加区段212的数目。在一些实施例中,主机存储器缓冲器210的可用部分的大小可小于存储器装置130的叠加区段212的总大小或总数目。在此类实施例中,hmb叠加组件113可将叠加区段212复制到主机存储器缓冲器210的可用部分直到主机存储器缓冲器210不再可用于复制(即,主机存储器缓冲器210不包含可用部分)。结果,hmb叠加组件113不会将所有叠加区段212复制到主机存储器缓冲器202。举例来说,如关于图5a说明,hmb叠加组件113将叠加区段1、叠加区段2及叠加区段3中的每一者复制到主机存储器缓冲器210直到主机存储器缓冲器210不再可用于复制(即,在
主机存储器缓冲器210的任何经分配部分中没有额外空间可用)。结果,hmb叠加组件113不会将存储于存储器装置130的额外叠加区段212(例如叠加区段n)复制到主机存储器缓冲器210。
47.在一些实施例中,hmb叠加组件113可维持经配置以跟踪包含于叠加区段212中的代码区段及存在于主机存储器缓冲器210中的叠加区段212的叠加数据结构。举例来说,叠加数据结构可包含用于存储器装置130的每一叠加区段212的条目。每一条目可包含用于包含于叠加区段212中的每一代码区段的一或多个存储器地址。响应于从存储器装置130复制叠加区段212,hmb叠加组件113可更新叠加区段212的条目以指示在主机存储器缓冲器210处复制叠加区段212。在一些实施例中,叠加数据结构条目可进一步包含主机存储器缓冲器210的包含经复制叠加区段212的部分的指示。在其它或类似实施例中,hmb叠加组件113可根据其它实施方案跟踪存在于主机存储器缓冲器210中的叠加区段212。
48.返回参考图3,在操作320,处理装置可将两个或更多个叠加区段中的第一叠加区段从第一存储器缓冲器复制到驻留于存储器子系统的第二易失性存储器装置上的第二存储器缓冲器。在一些实施例中,第二易失性存储器装置可为本地存储器装置,例如本地存储器119。在其它或类似实施例中,第二存储器装置可为存储器子系统110的存储器装置(例如存储器装置140),如图5a中说明。驻留于第二易失性存储器装置上的第二存储器缓冲器可为存储器子系统缓冲器220
49.在一些实施例中,hmb叠加组件113可响应于确定将执行第一叠加区段212的第一代码区段而将第一叠加区段复制到图5a的存储器子系统缓冲器220。hmb叠加组件113可识别存储器装置130的包含第一代码区段的第一叠加区段212。在一些实施例中,hmb叠加组件113可使用叠加区段识别函数识别存储器装置130、140的包含第一代码区段的第一叠加区段212。举例来说,hmb叠加组件113可将与第一代码区段相关联的一或多个指令的存储器地址作为参数值提供给叠加区段识别函数。hmb叠加组件113可接收一或多个指令经包含于第一叠加区段212中的指示作为叠加区段识别函数的输出。在其它或类似实施例中,图2的hmb叠加组件113可使用叠加数据结构识别存储器装置130的包含第一代码区段的第一叠加区段212。举例来说,hmb叠加组件113可将与第一代码区段相关联的存储器装置地址同叠加数据结构的条目的一或多个存储器装置地址进行比较。响应于确定第一代码区段的存储器装置地址对应于第一叠加区段212的叠加数据结构的条目的存储器装置地址,hmb叠加组件113可确定第一代码区段包含于第一叠加区段212中。
50.响应于确定第一代码区段包含于第一叠加区段212中,hmb叠加组件113可确定第一叠加区段212是否存在于主机存储器缓冲器210中。在一些实施例中,hmb叠加组件113可使用叠加数据结构确定第一叠加区段212是否存在于主机存储器缓冲器210中。举例来说,hmb叠加组件113可基于第一叠加区段212的叠加数据结构条目确定第一叠加区段212是否存在于主机存储器缓冲器210中。响应于确定第一叠加区段212存在于主机存储器缓冲器210中,hmb叠加组件113可将第一叠加区段复制到存储器子系统缓冲器220。根据本文中描述的实施例,响应于确定第一叠加区段212不存在于主机存储器缓冲器210中,hmb叠加组件113可将第一叠加区段从存储器装置130、140复制到主机存储器缓冲器210。在操作230,处理装置可执行驻留于存储器子系统缓冲器220中的叠加区段中所包含的第一组可执行指令。
51.在操作340,处理装置可将两个或更多个叠加区段中的第二叠加区段从第一存储器缓冲器(即主机存储器缓冲器210)复制到第二存储器缓冲器(即存储器子系统缓冲器220)。在一些实施例中,根据先前描述的实施例,hmb叠加组件113可响应于确定将执行第二叠加区段212的第二代码区段而将第二叠加区段复制到图5a的存储器子系统缓冲器220。hmb叠加组件113可确定第二叠加区段212是否驻留于主机存储器缓冲器210上。响应于确定第二叠加区段212驻留于主机存储器缓冲器210中,hmb叠加组件可确定在存储器子系统缓冲器220上空间是否可用于复制第二叠加区段212。在一些实施例中,hmb叠加组件可确定存储器子系统缓冲器220的空间不可用于第二叠加区段212的复制。举例来说,hmb叠加组件113可确定存储器子系统缓冲器220的空间不可用于叠加区段2的复制,这是因为叠加区段1驻留于存储器子系统缓冲器220中。如图5b中说明,hmb叠加组件113可从存储器子系统缓冲器220移除或擦除叠加区段2且随后将叠加区段2从主机存储器缓冲器210复制到存储器子系统缓冲器220。在操作350,根据先前描述的实施例,处理装置可执行驻留于第二存储器缓冲器中的第二组可执行指令。
52.图4是根据本公开的一些实施例的使用主机存储器缓冲器执行存储器叠加的另一实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法400由图1的hmb叠加组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
53.在操作410,处理装置可确定第一组可执行指令包含于两个或更多个叠加区段中的第一叠加区段中。根据先前描述的实施例,处理装置(例如hmb叠加组件113)可确定第一组可执行指令包含于第一叠加区段中。
54.在操作420,处理装置可确定第一叠加区段不存在于存储器子系统上的第一易失性存储器装置(即存储器子系统缓冲器220)上。在一些实施例中,处理装置(例如hmb叠加组件113)可使用叠加数据结构确定第一叠加区段212不存在于第一易失性存储器装置140上,如先前描述。举例来说,hmb叠加组件113可识别对应于第一叠加区段212的叠加数据结构的条目。hmb叠加组件113可确定与第一叠加区段212相关联的经识别条目的存储器地址是否对应于存储器子系统缓冲器220的存储器地址。响应于确定存储器地址不对应于存储器子系统缓冲器220的存储器地址,hmb叠加组件113可确定第一叠加区段212不存在于第一易失性装置140上。
55.在一些实施例中,响应于确定第一叠加区段212不存在于第一易失性装置140上,hmb叠加组件113可确定第一叠加区段212是否存在于主机系统120的第二易失性存储器装置510上(即,在主机存储器缓冲器210中)。hmb叠加组件113可确定与第一叠加区段212相关联的经识别叠加数据结构条目的存储器地址是否对应于主机存储器缓冲器210的存储器地址。响应于确定存储器地址不对应于主机存储器缓冲器210的存储器地址,hmb叠加组件113可确定第一叠加区段212不驻留于易失性存储器装置510上。
56.根据先前描述的实施例,响应于确定第一叠加区段不驻留于易失性存储器装置
510上,hmb叠加组件113可将第一叠加区段212从非易失性存储器装置130复制到主机存储器缓冲器210。根据先前描述的实施例,图5a的hmb叠加组件113可将第一叠加区段212从非易失性存储器装置130复制到主机存储器缓冲器210的可用部分。在一些实施例中,主机存储器缓冲器210不包含可用于第一叠加区段212的复制的任何部分。在此类实施例中,hmb叠加组件113可识别存在于主机存储器缓冲器210中的候选叠加区段212以从主机存储器缓冲器210移除或擦除。在一些实施例中,hmb叠加组件113可基于包含于候选叠加区段212中的代码区段的指令被存储器子系统控制器114执行的频率而识别要移除的候选叠加区段212。响应于从主机存储器缓冲器210移除或擦除候选叠加区段212,hmb叠加组件113可将第一叠加区段212复制到主机存储器缓冲器210的可用部分。
57.在说明性实例中,存储器子系统控制器115可确定将执行包含于叠加区段n中的代码区段。响应于确定叠加区段n不存在于主机存储器缓冲器210中,hmb叠加组件113可确定主机存储器缓冲器210的一部分是否可用于叠加区段n的复制。响应于确定主机存储器缓冲器210不包含可用部分,hmb叠加组件113可识别将从主机存储器缓冲器210移除或擦除的候选叠加区段212(例如叠加区段3)。如关于图5c说明,hmb叠加组件113可从主机存储器缓冲器210移除或擦除叠加区段3并将叠加区段n复制到主机存储器缓冲器210的最新可用部分。
58.返回参考图4,在操作430,处理装置可经由主机接口将第一叠加区段从主机系统的第二易失性存储器装置的第二存储器缓冲器(例如主机存储器缓冲器210)复制到第一易失性存储器装置(例如,复制到存储器子系统缓冲器220)。在一些实施例中,主机接口可为外围组件互连高速(pcie)接口。hmb叠加组件113可将第一叠加区段212从主机存储器缓冲器210复制到存储器子系统缓冲器220的可用部分。如图5c中说明,hmb叠加组件113可响应于确定存储器子系统缓冲器220的一部分可用而将叠加区段n从主机存储器缓冲器210复制到存储器子系统缓冲器220。在其它或类似实施例中,存储器子系统缓冲器220不包含可用于复制叠加区段212的部分。在此类实施例中,根据先前描述的实施例,hmb叠加组件113可移除或擦除存在于存储器子系统缓冲器220中的叠加区段212且将包含所请求的代码区段的叠加区段212从主机存储器缓冲器210复制到存储器子系统缓冲器220。如图5c中说明,响应于接收到存取叠加n的请求,hmb叠加组件113可确定存储器子系统缓冲器220是否可用于叠加n的复制。响应于确定存储器子系统缓冲器330不可用于叠加n的复制,hmb叠加组件113可从存储器子系统缓冲器220移除或擦除叠加区段1且将叠加区段n从主机存储器缓冲器210复制到存储器子系统缓冲器220。返回参考图4,在操作440,根据先前描述的实施例,处理装置可执行包含于第一叠加区段中的第一组可执行指令。
59.图6说明用于致使机器执行本文中论述的方法论中的任一或多者的一组指令可在其内执行的计算机系统600的实例机器。在一些实施例中,计算机系统600可对应于主机系统(例如图1的主机系统120),所述主机系统包含、经耦合到或利用存储器子系统(例如图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的hmb叠加组件113的操作)。在替代实施例中,机器可经连接(例如联网)到lan、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器,或在云端计算基础设施或环境中作为服务器或客户端机器。
60.机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、
网络设备、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定将由机器采取的动作的一组指令的任何机器。此外,虽然说明了单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法论中的任一或多者的机器的任何集合。
61.实例计算机系统600包含处理装置602、主存储器604(例如只读存储器(rom)、快闪存储器、动态随机存取存储器(dram)(例如同步dram(sdram)或rdram等))、静态存储器606(例如快闪存储器、静态随机存取存储器(sram)等)及数据存储系统618,它们经由总线630彼此通信。
62.处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的一处理器或实施指令集组合的多个处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或类似物。处理装置602经配置以执行用于执行本文中论述的操作及步骤的指令426。计算机系统600可进一步包含网络接口装置608以经过网络620通信。
63.数据存储系统618可包含其上存储体现本文中描述的方法论或功能中的任一或多者的一或多组指令626或软件的机器可读存储媒体624(也称为计算机可读媒体)。指令626在其由计算机系统600执行期间也可完全或至少部分驻留于主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
64.在一个实施例中,指令626包含用于实施对应于hmb叠加组件(例如图1的hmb叠加组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应理解为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应理解为包含能够存储或编码由机器执行的一组指令且致使机器执行本公开的方法论中的任一或多者的任何媒体。术语“机器可读存储媒体”应相应地理解为包含(但不限于)固态存储器、光学媒体及磁性媒体。
65.已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用以向所属领域的其他技术人员最有效地传达其工作实质的方式。算法在本文且通常被认为是导致所期望结果的自相一致的操作序列。操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较及以其它方式操纵的电或磁性信号的形式。已证明,主要由于通用的原因,有时将这些信号称为位、值、元素、符号、字符、项、数字或类似物是方便的。
66.然而,应记住,全部这些及类似术语与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵或变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
67.本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而被特别构造,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。
此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、cd-rom及磁光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适于存储电子指令的任何类型的媒体,每一者都耦合到计算机系统总线。
68.本文呈现的算法及显示器并不固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或可证明构造更专门的设备来执行方法是方便的。多种这些系统的结构将如下文描述中陈述那样出现。另外,本公开并非是参考任何特定编程语言描述。应了解,多种编程语言可用于实施本文中所描述的本公开的教示。
69.本公开可经提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于存储呈可由机器(例如计算机)读取的形式的信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
70.在前述说明书中,已参考本公开的特定实例实施例描述了其实施例。明显的是,在不背离随附权利要求书中所陈述的本公开的实施例的更宽精神及范围的情况下,可对其做出各种修改。说明书及图式应相应地以说明性意义而非限制性意义来看待。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1