CN112384890B - 预测性分页以加速存储器存取 - Google Patents

预测性分页以加速存储器存取 Download PDF

Info

Publication number
CN112384890B
CN112384890B CN201980046028.XA CN201980046028A CN112384890B CN 112384890 B CN112384890 B CN 112384890B CN 201980046028 A CN201980046028 A CN 201980046028A CN 112384890 B CN112384890 B CN 112384890B
Authority
CN
China
Prior art keywords
memory
pages
page
computing system
prediction
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
Application number
CN201980046028.XA
Other languages
English (en)
Other versions
CN112384890A (zh
Inventor
A·拉伊
S·米塔尔
G·阿南德
P·玛哈拉纳
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
Priority claimed from US16/032,331 external-priority patent/US10877892B2/en
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112384890A publication Critical patent/CN112384890A/zh
Application granted granted Critical
Publication of CN112384890B publication Critical patent/CN112384890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

一种计算系统,其包含具有存储器组件的第一存储器和第二存储器。所述计算系统进一步包含处理装置,所述处理装置可操作地与所述存储器组件耦合,以:在预测引擎中接收所述第二存储器中的页面的使用历史;基于所述使用历史训练预测模型;由所述预测引擎使用所述预测模型来预测在后续时间段内使用所述页面的可能性;以及响应于由所述预测引擎预测的所述可能性,由控制器将所述第二存储器中的页面中的数据复制到所述第一存储器。

Description

预测性分页以加速存储器存取
相关申请
本申请主张于2018年7月11日提交的题为“预测性分页以加速存储器存取(Predictive Paging to Accelerate Memory Access)”第16/032,331号美国专利申请的优先权益,其全部公开内容通过引用并入本文。
技术领域
本文公开的至少一些实施例总体上涉及存储器系统,并且更具体地,但不限于预测性分页以加速计算系统中的存储器存取。
背景技术
存储器子系统可为存储器模块,诸如双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,诸如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件例如可为非易失性存储器组件和易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的并且需要电源来维持所存储的数据。一些存储器集成电路是非易失性的,即使在未通电时也可保留所存储的数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)等。易失性存储器的实例包含动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。通常,主机系统可利用存储器子系统将数据存储在存储器组件处并从存储器组件检索数据。
例如,计算机可包含主机系统和附接到主机系统的一或多个存储器子系统。主机系统可具有与一或多个存储器子系统通信以存储和/或检索数据和指令的中央处理单元(CPU)。计算机的指令可包含操作系统、装置驱动程序和应用程序。操作系统管理计算机中的资源并为应用程序提供公用应用服务,诸如资源的存储器分配和时间共享。装置驱动程序操作或控制计算机中的特定类型的装置;操作系统使用装置驱动程序来提供由装置类型提供的资源和/或服务。计算机系统的中央处理单元(CPU)可运行操作系统和装置驱动程序以向应用程序提供服务和/或资源。中央处理单元(CPU)可运行使用服务和/或资源的应用程序。例如,实现一种类型的计算机系统应用程序的应用程序可指示中央处理单元(CPU)将数据存储在存储器子系统的存储器组件中并从存储器组件检索数据。
计算机系统的操作系统可允许应用程序使用存储器的虚拟地址以将数据存储在计算机系统的一或多个存储器子系统的存储器组件中或从其检索数据。操作系统将虚拟地址映射到连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的物理地址。操作系统使用存储器子系统的物理地址来实现在虚拟地址处指定的存储器存取。
虚拟地址空间可划分为页面。虚拟存储器页面可映射到存储器子系统中的物理存储器页面。操作系统可使用分页技术以经由存储器模块中的存储器页面存取存储装置中的存储器页面。在不同的时刻,存储器模块中的同一存储器页面可用作代理以存取存储器装置或计算机系统中的另一存储器装置中的不同存储器页面。
计算机系统可包含管理程序(或虚拟机监视器)以创建或布建虚拟机。虚拟机是使用计算机系统中可用的资源和服务虚拟地实施的计算装置。管理程序将虚拟机呈现给操作系统,就好像虚拟机的组件是专用物理组件一样。客户操作系统以类似于在计算机系统中运行的主机操作系统的方式在虚拟机中运行,以管理虚拟机中可用的资源和服务。管理程序允许多个虚拟机共享计算机系统的资源,并允许虚拟机基本上彼此独立地在计算机上操作。
附图说明
在附图的图中通过实例而非限制的方式示出了实施例,其中相同的附图标记表示相似的元件。
图1示出了根据本公开的一些实施例的具有存储器子系统的实例计算系统。
图2示出了根据本文公开的至少一些实施例的具有不同类型的存储器并运行指令以加速存储器存取的计算系统。
图3示出了具有经配置以加速经由管理程序进行的存储器存取的装置驱动程序的系统。
图4示出了耦合到装置驱动程序以加速经由管理程序进行的存储器存取的预测引擎。
图5至6示出了加速存储器存取的方法。
图7是可在其中操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的至少一些方面涉及可加速具有一或多个存储器子系统的计算机系统中的存储器存取的预测性分页技术。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM)、非易失性双列直插存储器模块(NVDIMM)等。存储器子系统的另一实例是经由外围互连(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器和硬盘驱动器(HDD)。在一些实施例中,存储器子系统是提供存储器功能和存储功能两者的混合存储器/存储子系统。通常,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供将存储在存储器子系统处的数据,并且可请求将从存储器子系统检索的数据。
传统的系统可使用诸如硬盘驱动器的存储装置作为通过诸如DRAM的存储器模块存取的虚拟存储器。当应用程序存取硬盘驱动器上的虚拟存储器页面时,操作系统可将页面从硬盘驱动器加载到DRAM并将虚拟存储器页面重新映射到DRAM。存取DRAM中的数据比存取硬盘驱动器中的数据更快。因此,在虚拟存储器页面被重新映射到DRAM之后,应用程序可以以改进的性能存取虚拟存储器页面中的数据。然而,当虚拟存储器页面从硬盘驱动器重新映射到DRAM时,存储器存取性能不是最佳的。
本公开的至少一些方面通过预测虚拟存储器页面的使用来解决上述和其它缺陷。预测模型可使用监督机器学习技术进行自训练。可使用在先前时间段期间的实际使用历史针对后续时间段执行训练。预测模型预测在后续时间段内可能使用的热页面和不太可能使用的冷页面。热页面可从较慢存储器重新映射到较快存储器,从而在使用该页面时,该页面已在较快存储器中。可以消除重新映射页面的等待时间。冷页面可从较快存储器重新映射到较慢存储器,以便在较快存储器中为另一热页面腾出空间。因此,可通过虚拟存储器页面的预测加载和卸载来加速总体存储器存取。
图1示出了根据本公开的一些实施例的具有存储器子系统110的实例计算系统100。存储器子系统110可包含介质,诸如存储器组件109A至109N。存储器组件109A至109N可为易失性存储器组件、非易失性存储器组件或其组合。在一些实施例中,存储器子系统110是存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。通常,计算环境可包含使用存储器子系统110的主机系统120。例如,主机系统120可将数据写入存储器子系统110并从存储器子系统110读取数据。
主机系统120可为诸如台式计算机、膝上型计算机、网络服务器、移动装置的计算装置,或者包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线的还是无线的,包含诸如电、光、磁等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接SCSI(SAS)、双倍数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用NVM高速(NVMe)接口,以在存储器子系统110通过PCIe接口与主机系统120耦合时存取存储器组件109A至109N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1示出了作为实例的存储器子系统110。通常,主机系统120可经由同一通信连接、多个独立通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统120包含处理装置118和控制器116。例如,主机系统120的处理装置118可为微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些实例中,控制器116可被称为存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器116控制在主机系统120与存储器子系统110之间耦合的总线上的通信。
通常,控制器116可将命令或请求发送到存储器子系统110以用于对存储器组件109A至109N的所需存取。控制器116还可包含接口电路以与存储器子系统110通信。接口电路可将从存储器子系统110接收的响应转换为用于主机系统120的信息。
主机系统120的控制器116可与存储器子系统110的控制器115通信以执行操作,诸如在存储器组件109A至109N处读取数据、写入数据或擦除数据和其它此类操作。在一些实例中,控制器116集成在处理装置118的同一封装内。在其它实例中,控制器116与处理装置118的封装分离。控制器116和/或处理装置118可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器、高速缓冲存储器或其组合。控制器116和/或处理装置118可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
存储器组件109A至109N可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含负与(NAND)型快闪存储器。存储器组件109A至109N中的每一个可包含存储器单元的一或多个阵列,诸如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储主机系统120所使用的一或多个数据位(例如,数据块)。尽管描述了诸如NAND型快闪存储器的非易失性存储器组件,但是存储器组件109A至109N可基于诸如易失性存储器的任何其它类型的存储器。在一些实施例中,存储器组件109A至109N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、负或(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、结合忆阻器技术的存储器和非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格数据存取阵列来基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行现场写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,可将存储器组件109A至109N的存储器单元分组成存储器页面或数据块,其可指用于存储数据的存储器组件的单元。
存储器子系统110的控制器115可与存储器组件109A至109N通信以执行操作,诸如在存储器组件109A至109N处读取数据、写入数据或擦除数据和其它此类操作(例如,响应于控制器116在命令总线上调度的命令)。控制器115可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。控制器115可为微控制器、专用逻辑电路(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器115可包含处理装置117(处理器),其经配置以执行存储在本地存储器119中的指令。在所示的实例中,控制器115的本地存储器119包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程的指令。在一些实施例中,本地存储器119可包含存储存储器指针、获取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然图1中的实例存储器子系统110被示为包含控制器115,但在本公开的另一实施例中,存储器子系统110可不包含控制器115,而是可依赖于外部控制(例如,由外部主机提供,或者由与存储器子系统分离的处理器或控制器提供)。
通常,控制器115可从主机系统120接收命令或操作,并且可将该命令或操作转换为指令或适当命令以实现对存储器组件109A至109N的所需存取。控制器115可负责其它操作,诸如损耗均衡操作、垃圾收集操作、误差检测和误差校正码(ECC)操作、加密操作、高速缓存操作以及与存储器组件109A至109N相关联的逻辑块地址与物理块地址之间的地址转换。控制器115可进一步包含主机接口电路,以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收的命令转换为命令指令以存取存储器组件109A至109N,并将与存储器组件109A至109N相关联的响应转换为用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可从控制器115接收地址并解码地址以存取存储器组件109A至109N。
计算系统100包含预测加速器113,其在主机系统120中,可执行较快存储器(例如,109A)与较慢存储器(例如,109N)之间的虚拟存储器页面的预测性加载和/或卸载。在一些实施例中,主机系统120中的控制器116和/或处理装置118包含预测加速器113的至少一部分。例如,控制器116和/或处理装置118可包含实施预测加速器113的逻辑电路。例如,主机系统120的处理装置118(处理器)可经配置以执行存储在存储器中的指令,用于执行本文描述的预测加速器113的操作。在一些实施例中,预测加速器113是主机系统120的操作系统、装置驱动程序或应用程序的一部分。
预测加速器113可在预测即将使用的虚拟存储器的热页面和在一段时间内将不使用的虚拟存储器的冷页面时执行预测模型的自适应训练。预测加速器113使用在一段时间内映射到存储器组件109A至109N的虚拟存储器页面的实际使用历史来执行训练。来自该模型的预测用于在请求热页面之前将热页面从较慢存储器(例如,109N)重新映射到较快存储器(例如,109A)。预测的冷页面可从较快存储器(例如,109A)重新映射到较慢存储器(例如,109N)以便为热页腾出空间。该预测消除和/或减少用于将所请求的页面从较慢存储器(例如,109N)重新映射到较快存储器(例如,109A)以加速存储器存取的等待时间。下文描述关于预测加速器113的操作的进一步细节。
在一个实例中,中央处理单元(CPU)可存取在连接到CPU的一或多个存储器子系统中提供的两组存储器。例如,一组存储器可能比另一组存储器慢;并且中央处理单元(CPU)可经配置以使用分页技术经由较快存储器组存取较慢存储器组。例如,一组存储器不能由CPU直接寻址,并且耦合到可由CPU直接寻址的另一组存储器;并且中央处理单元(CPU)可经配置以以类似于使用分页技术的方式经由可直接寻址的存储器组存取不可直接寻址的存储器组。
当前正在存取的虚拟存储器页面位于较慢存储器组中而不是较快存储器组中时,可从较快存储器组分配页面为较慢存储器组中的页面提供服务;并且装置驱动程序用于从较慢存储器组中获取页面的数据,将获取的数据页面存储在较快存储器组中的分配页面中,使得可经由存取较快存储器组中的分配页面完成对虚拟存储器的页面的数据存取。
此外,装置驱动程序可接收与较慢存储器组中的页面的使用相关的信息,并且训练自学习预测引擎以基于此类信息预测页面的使用。例如,监督机器学习技术可用于使用该信息来训练人工神经网络,以通过减少预测与页面的实际使用之间的误差来预测较慢存储器组中的页面的使用。在训练人工神经网络之后,预测引擎可使用当前信息来预测要使用的下一页面。此外,可以以连续的方式执行训练、预测和来自用于进一步训练的预测之后的实际使用的反馈,以使人工神经网络的预测模型适应存储器页面的最新使用模式。
响应于该引擎基于训练后的人工神经网络和当前信息预测将很快使用较慢存储器组中的页面,装置驱动程序可从较慢存储器组中预取数据页面,并将所获取的数据存储在较快存储器组中的分配页面中,从而当需要处理时,该数据页面已在较快存储器组中,这样布置提高了数据页面的数据存取速度。
可根据随后的实际页面使用来衡量预测的准确性;并且该预测和随后的实际页面使用可用于进一步训练或调整人工神经网络以跟踪存储器页面的最新使用模式。
替代地或组合地,基于机器学习的预测可用基于策略的预测规则替换或增强。例如,在可能的情况下,可将存储常驻代码(例如,在较低地址中)的页面维持在较快存储器组中以减少频繁使用的页面的交换。例如,当存取作为大页面的一部分的页面时,可将大页面加载到较快存储器组中。例如,基于诸如是顺序地还是随机地访问页面、数据访问是在稳态模式还是在突发模式,和/或页面(和不同大小的页面)之间的逻辑关系的指示,可至少部分地使用启发式规则来进行预测。
图2示出了根据本文公开的至少一些实施例的具有不同类型的存储器并运行指令以加速存储器存取的计算系统。
图2的计算系统包含主机系统120、经由存储器总线203连接到主机系统120的存储器模块205,以及经由外围互连207连接到主机系统120的存储装置209。存储装置209和存储器模块205是图1所示的存储器子系统110的实例。
主机系统120具有处理装置118,其可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有存储器管理单元213和高速缓冲存储器211。存储器管理单元213和/或高速缓冲存储器211的至少一部分可任选地集成在处理装置118的同一集成电路封装内。
图2所示的存储器模块205具有多种类型的存储器(例如,221和223)。例如,A型存储器221比B型存储器223快。
存储器总线203通常以比外围互连207更快的速度操作。例如,存储器总线203可为双倍数据速率总线;并且外围互连207可为外围组件互连高速(PCIe)总线、串行高级技术附件(SATA)总线、通用串行总线(USB)总线和/或存储区域网络。存储模块205中的B型存储器223的存取速度可比存取存储装置209中的B型存储器223快。
图2所示的存储装置209具有多种类型的存储器(例如,223和225)。例如,B型存储器223比C型存储器225快。
通常,多个存储器模块(例如,205)可耦合到存储器总线203;并且多个存储装置(例如,209)可耦合到外围互连207。在一些实例中,外围互连207和存储装置(例如,209)是任选的,并且可不存在于计算系统中。在其它实例中,存储器总线203和存储器模块(例如,205)是任选的,并且可不存在于计算系统中。
在可能的配置中,当多个存储器模块(例如,205)耦合到存储器总线203时,存储器模块(例如,205)中的一个具有A型存储器221;并且另一存储器模块具有B型存储器223,其可以以低于独立存储器模块(例如,205)中的A型存储器221的速度存取。
类似地,在可能的配置中,当多个存储装置(例如,205)耦合到外围互连207时,存储装置(例如,209)中的一个具有B型存储器223,并且存储装置中的另一个具有C型存储器225,其可以以低于独立存储装置(例如,209)中的B型存储器221的速度存取。
处理装置118和/或MMU 213经配置以经由指令(例如,操作系统和/或一或多个装置驱动程序)使用分页技术和/或存储器映射接口经由计算机系统中的存储器的另一部分存取计算机系统中的存储器的一部分。
例如,可经由存储器模块205(或另一存储器模块)的A型存储器221来存取存储器模块205的B型存储器223。
例如,可经由存储器模块205的A型存储器221和/或经由存储器模块205的B型存储器223来存取存储装置209的B型存储器223。
例如,可经由存储模块205的A型存储器221、经由存储模块205的B型存储器223,和/或经由存储装置209(或另一存储装置)的B型存储器223来存取存储装置209的C型存储器225。
例如,在一些实例中,同一存储器模块205(或不同的存储器模块)中的A型存储器221和B型存储器223可由处理装置118的存储器管理单元213通过存储器总线203直接且单独地寻址。然而,由于B型存储器223比A型存储器221慢,因此希望经由A型存储器221存取B型存储器223。
在其它实例中,仅可通过寻址存储器模块205的A型存储器221来存取存储器模块205的B型存储器223(例如,由于存储器总线203的地址部分中的大小限制)。
控制器X 227可设置在存储器模块205中,以管理存储器模块205内的A型存储器221与B型存储器223之间的数据传送,尤其是当存储器模块205的B型存储器223不能使用存储器总线203直接寻址时。
在一个变型中,存储器模块205的存储器(例如,221和223)可在存储器模块205内单独地具有相同的性能;然而,存储器管理单元213和/或处理装置118被限制为经由存储器223经由存储器221存取(例如,由于存储器总线203的地址部分中的大小限制)。因此,对于处理装置118,存储器223看起来比存储器221慢。
通常,存储器子系统(例如,205和209)可包含诸如存储器(例如,221,…,223,…,225)的介质。存储器(例如,221,…,223,…,225)可包含易失性存储器、非易失性存储器(NVM)和/或其组合。在一些实施例中,计算机系统包含作为存储装置209的至少一个存储器子系统。存储装置209的实例是固态驱动器(SSD)。在一些实施例中,计算机系统包含至少一个存储器子系统,其经配置为存储器模块205的混合存储器/存储系统。处理装置118可将数据写入存储器子系统(例如,205和209)的每一个,并且直接或间接地从存储器子系统(例如,205和209)读取数据。
图2的计算系统可用于实施台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。处理装置118可从存储器子系统(例如,205和209)读取数据或向其写入数据。
处理装置118可经由一或多个物理接口(例如,203、207)耦合到存储器子系统(例如,209)。
如本文所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线的还是无线的,包含诸如电、光、磁等连接。
物理主机接口的实例包括但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)等。
物理主机接口可用于在处理装置118与存储器子系统(例如,209)之间传输数据。当存储器子系统209经由PCIe接口与外围互连207耦合时,该计算机系统还可利用NVM高速(NVMe)接口来存取存储器(例如,223,…,225)。物理主机接口可提供用于在存储器子系统(例如,209)与处理装置118之间传递控制、地址、数据和其它信号的接口。
通常,存储器子系统(例如,205和209)包含印刷电路板,其连接一组提供存储器(例如,221,…,223,…,225)的存储器装置,诸如存储器集成电路。存储器子系统(例如,205和209)上的存储器(例如,221,…,223,…,225)可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任意组合。
非易失性存储器装置的实例包含负和(NAND)型快闪存储器或负或(NOR)型快闪存储器。存储器集成电路可包含一或多个存储器单元阵列,诸如单级单元(SLC)、多级单元(MLC)、三级单元(TLC)、四级单元(QLC)等。在一些实施方案中,特定存储器装置可包含存储器单元的SLC部分和MLC(或TLC或QLC)部分两者。存储器单元中的每一个可存储由主机系统120使用的一或多个数据位。尽管描述了诸如NAND型快闪存储器的非易失性存储器装置,但存储器集成电路可基于诸如易失性存储器的任何其它类型的存储器。在一些实施方案中,存储器(例如,221,…,223,…,225)可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、负或(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)和/或非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格数据存取阵列来基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行现场写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,可将存储器装置的存储器单元分组成存储器页面或数据块,其可指用于存储数据的存储器装置的单元。
存储器子系统(例如,205或209)可具有控制器(例如,227或229),其与存储器(例如,221,…,223,…,225)通信以响应于来自处理装置118和/或存储器管理单元(MMU)213的请求、命令或指令而执行操作,诸如读取数据、写入数据或擦除存储器(例如,221,…,223,…,225)中的数据和其它此类操作。控制器(例如,227或229)可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。控制器(例如,227或229)可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器(例如,227或229)可包含经配置以执行存储在本地存储器中的指令的一或多个处理器(处理装置)。
控制器(例如,227或229)的本地存储器可包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统(例如,205或209)的操作(包含处理存储器子系统(例如,205或209)与处理装置118/MMU 213之间的通信,以及下文更详细描述的其它功能)的各种过程、操作、逻辑流程和例程的指令。控制器(例如,227或229)的本地存储器219可包含用于存储微代码的只读存储器(ROM)和/或存储例如存储器指针、获取数据等的存储器寄存器。
虽然图2中的实例存储器子系统(例如,205和209)被示为包含控制器(例如,227和229),但在本公开的另一实施例中,存储器子系统(例如,205或209)可不包含控制器(例如,227或229),而是可依赖于外部控制(例如,由MMU 213提供,或者由与存储器子系统(例如,205或209)分离的处理器或控制器提供)。
通常,控制器(例如,227或229)可根据用于通信信道(例如,203或207)的标准通信协议从处理装置118或MMU 213接收命令、请求或指令,并且可遵照标准协议将命令、请求或指令转换为存储器子系统(例如,205或209)内的详细指令或适当的命令,以实现对存储器(例如,221,…,223,…,225)的所需存取。例如,控制器(例如,227或229)可负责诸如损耗均衡操作、垃圾收集操作、误差检测和误差校正码(ECC)操作、加密操作、高速缓存操作以及与存储器(例如,221,…,223,…,225)相关联的逻辑块地址与物理块地址之间的地址转换等操作。控制器(例如,227或229)还可包含主机接口电路,以经由物理主机接口与处理装置118通信。主机接口电路可将从处理装置118接收的命令转换为用以存取存储器装置(例如,221,…,223,…,225)以及将与存储器装置(例如,221,…,223,…,225)相关联的响应转换为用于处理装置118的信息的命令指令。
存储器子系统(例如,205或209)还可包含未示出的额外电路或组件。在一些实施方案中,存储器子系统(例如,205或209)可包含高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可从控制器(例如,227或229)或MMU 213接收地址的并对地址进行解码以存取存储器(例如,221,…,223,…,225)。
在一个实例中,外围互连207或存储器总线203具有一或多个连接器,以向存储器子系统(例如,209或205)供电和/或经由预定协议与存储器子系统(例如,209或205)通信;并且存储器子系统(例如,209或205)具有一或多个连接器以接收来自处理装置118的电源、数据和命令。例如,外围互连207上的连接器与存储器子系统(例如,209)上的连接器之间的连接可利用PCIe总线或SATA总线。
通常,处理装置118可执行一或多个操作系统以提供服务,包含加速存储器存取,其中使用分页技术和/或存储器映射接口经由计算机系统中的存储器的另一部分存取计算机系统中的存储器的一部分,如下文进一步讨论的。
图3示出了具有经配置以加速经由管理程序245进行的存储器存取的装置驱动程序247的系统。例如,可在图1或2的计算机系统中实施图3的系统。
图3的系统包括主机操作系统241,其可在图1或2的计算机系统的处理装置118中运行。主机操作系统241包含一或多个装置驱动程序(例如,247),其使用存储器子系统(诸如存储器模块205和/或存储装置209)的存储器(例如,221,…,223,…,225)提供存储器服务。
主机操作系统241包含提供虚拟机249的管理程序245。虚拟机249具有使用图1或2的计算系统的硬件经由主机操作系统241提供的资源和服务实现的虚拟硬件。例如,管理程序245可使用存储器子系统(诸如存储器模块205和/或存储装置209)的存储器(例如,221,…,223,…,225)的一部分提供虚拟存储器作为虚拟机249的一部分。
虚拟机249允许客户操作系统243向运行在客户操作系统243中的应用程序(例如,251,…,253)提供资源和/或服务,其方式如同在物理计算机上运行的操作系统243,该物理计算机具有与虚拟机中的配置相同或相似的硬件集。管理程序245管理在虚拟机中提供的虚拟硬件和由主机操作系统241管理的计算系统中的硬件的服务之间的映射。
图3示出了其中由管理程序245提供虚拟机249的实例。通常,管理程序245可布建多个虚拟机(例如,249),这些虚拟机可运行同一客户操作系统243或不同的客户操作系统(例如,243)。可以分配不同组的用户和/或应用程序以使用不同的虚拟机。
在一些实例中,主机操作系统241专用于提供用于布建虚拟机的服务,而不运行其它应用程序。替代地,主机操作系统241可提供额外服务来支持其它应用程序,诸如应用程序(例如,251,…,253)。
装置驱动程序247可经配置以预测较慢存储器的页面使用,并在虚拟机249实际请求使用该页面之前将该页面加载到较快存储器中。预测通过在请求使用页面之前将数据页面从较慢存储器加载和/或传送到较快存储器来减少请求使用页面与较快存储器中的页面的可用性之间的时间,从而加速了页面的数据存取。
例如,较慢存储器可为存储器模块205中的存储器223,而较快存储器是同一存储器模块205(或连接到与存储器模块205相同的存储器总线203的另一存储器模块)中的存储器221。
例如,较慢存储器可为存储装置209中的存储器223;较快存储器可为存储器模块205中的同一类型的存储器223,或存储器模块205中的存储器221。
例如,较慢存储器可为存储装置209中的存储器225;较快存储器可为同一存储装置209或连接到外围互连207的另一存储装置中的存储器223,或存储器模块205中的存储器(例如,223或221)。
优选地,数据的预测预取在同一存储器子系统内执行,诸如在同一存储器模块205或同一存储装置209内,以避免或减少连接到处理装置118(诸如存储器总线203和/或外围互连207)的通信信道中的拥塞。例如,响应于来自装置驱动程序247和/或存储器管理单元(MMU)213的一或多个命令、请求或指令,在存储器模块205中的控制器227的控制下,可执行预取以将数据从存储器模块205中的较慢存储器223复制到存储器模块205中的较快存储器221。例如,响应于来自装置驱动程序247和/或存储器管理单元(MMU)213的一或多个命令、请求或指令,在存储装置209中的控制器229的控制下,可执行预取以将数据从存储装置209中的较慢存储器225复制到存储装置209中的较快存储器223。
在一个实施例中,管理程序245不仅请求装置驱动程序247存取存储器子系统(例如,存储器模块205或存储装置209)中的存储器(例如,221,…,223,…,或225),而且还向装置驱动程序247提供可用于对存储器(例如,221,…,223,…,或225)中的哪些页面可能在后续时间段内使用,并且存储器(例如,存储器(例如,221,…,223,…,或225)中的哪些页面不可能在后续时间段内使用进行预测的信息。
例如,可能被使用的页面可被称为热页面;而不太可能使用的页面可被称为冷页面。在后续时间段内使用页面的可能性可被称为页面的温度。装置驱动程序247使用由管理程序245提供的信息来预测页面的温度,将冷页面从较快存储器移动到较慢存储器,并将热页面从较慢存储器移动到较快存储器,以优化页面在存储器(例如,221,…,223,…,或225)中的分布并加速数据存取。
由管理程序245提供并由装置驱动程序247用来进行预测的信息的实例包含:在先前时间段中使用的页面序列,将页面从较慢存储器加载到较快存储器的请求的实例,页面的内容属性,页面的所有权属性,页面的用户或应用程序的标识,关于在虚拟机中和/或在用户帐户中是否以顺序方式存取页面的指示,关于页面存取是否处于稳定状态的指示,关于所使用的页面是否与大页面相关联的指示等。
在一些实例中,装置驱动程序247使用具有自学习能力的硬件预测引擎来进行页面温度的预测。
图4示出了预测引擎265,其耦合到装置驱动程序247以加速经由管理程序269进行的存储器存取。例如,图4的预测引擎265可与图3的主机操作系统241和图2的存储器子系统(例如,205和209)一起使用。
图4中的管理程序245耦合到转换后备缓冲器(TLB)267,其定义由管理程序布建给虚拟机(例如,249)的虚拟存储器的页面与存储器(例如,271或273)中的页面之间的映射。
处理装置118可比在地址263处的存储器273的页面更快地存取在地址261处的存储器271的页面。期望并且在一些实例中需要经由较快存储器271的页面服务于较慢存储器273的页面的数据260。
当虚拟机249正在存取在较慢存储器273中但不在较快存储器271中的数据260时,管理程序245请求装置驱动程序247将数据260从较慢存储器273加载到较快存储器271。装置驱动程序247与控制器228(例如,存储器模块205的控制器227、存储装置229的控制器229,和/或存储器管理单元(MMU)213)通信以将数据260加载到较快存储器271。一旦数据260在较快存储器271中,管理程序245就可更新转换后备缓冲器(TLB)267,以允许将页面的虚拟地址转换为较快存储器271的地址261,从而可在较快存储器271中读取和/或修改数据260。
当不使用数据260时,可将数据260卸载回较慢存储器273,以保存在较快存储器271中对数据260进行使用时对数据260的更改。
管理程序245将信息提供给装置驱动程序247和/或自学习预测引擎265,以在预测引擎265中训练预测模型269。此类信息可包含页面存取历史、使用页面的用户、程序和/或虚拟机的标识,以及页面的属性,诸如位置、时间、所有权、使用模式、页面之间的逻辑关系(例如,一起用于表示对象的页面的标识)、页面中包含的数据类型(例如,操作系统、应用程序、软件工具、系统数据、用户数据),和/或页面的其它元数据。
例如,可使用人工神经网络或另一机器学习模型来构建预测模型269。监督机器学习技术可用于预测较慢存储器273中的页面的温度,并且最小化页面的预测温度和测量温度,如在管理程序245中观察到的页面的实际使用中所指示的。在一些实例中,页面在一个时刻的温度与页面将被使用的最近的后续时刻成反比。小于阈值的使用时间间隙对应于非常热的温度,因此表示将页面获取到较快存储器271的需求或优先级提高。大于另一阈值的使用时间间隙对应于非常冷的温度,因此表示从较快存储器271卸载页面的机会并在较快存储器271中为其它热页面腾出空间。
此外,可基于关于页面使用的持续信息和实际使用的页面的标识来连续地训练预测模型269。预测之后的实际使用提供关于预测准确性的反馈;并且可连续地训练预测模型269,以基于最近的使用时间段最小化预测误差。
当预测引擎265识别出当前不在较快存储器271中的热页面和/或当前在较快存储器271中的冷页面时,装置驱动程序247预期数据260的使用将热页面的数据260加载到较快存储器271中,和/或将冷页面的数据260卸载到较慢存储器273中,以在较快存储器271中为热页面腾出空间。
任选地或组合地,预测引擎265使用启发式规则来帮助预测数据定位。启发式规则可基于应用程序或虚拟机是顺序地还是随机地存取数据页面、应用程序或虚拟机是以稳态模式还是以突发模式存取数据页面、应用程序或虚拟机是通过小页面还是大页面存取数据页面等。
图4示出了通过管理程序245提供的信息对自学习预测引擎265的训练。通常,主机操作系统241中的软件工具可用于提供关于页面使用历史的信息和/或页面信息,以在有或没有管理程序245的情况下训练自学习预测引擎265。例如,预测数据获取技术可用于运行多个应用程序但不具有管理程序245且不提供虚拟机(例如,249)的操作系统。
优选地,可使用与处理装置118和/或控制器(例如,213、227、229、228)分离的硬件电路来实施预测引擎265。例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA)可用于实施预测引擎265。
替代地,预测引擎265可实施为处理装置118或耦合到处理装置118的处理器的一部分。
在一些实例中,预测引擎265实施于存储器子系统的控制器228中,诸如存储器模块205的控制器227或存储装置209的控制器229。
图5至6示出了加速存储器存取的方法。图5或6的方法可由处理逻辑执行,其可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图5或6的方法至少部分地由图1或2的预测加速器113执行。尽管以特定的顺序或次序示出,但是除非另有说明,否则可修改过程的次序。因此,所示的实施例应当仅被理解为实例,并且可以以不同次序执行所示的过程且可并行执行一些过程。另外,可在各种实施例中省略一或多个过程。因此,并非在每一实施例中都需要所有过程。其它过程流程也是可能的。
例如,可在具有图3的主机操作系统241和图4的自学习预测引擎265的图1或2的计算系统中实施图5或6的方法。例如,可至少部分地经由图4的自学习预测引擎265和图3的主机操作系统241来实施预测加速器113。
在图5中的框281,预测加速器113接收计算系统(例如,如图2所示)中的较慢存储器273的页面的使用历史。
在框283,预测加速器113接收与计算系统中的页面和活动相关的信息。
在框285,预测加速器113训练285预测引擎265的预测模型269,以使用所接收的信息预测使用历史。
在框287,预测加速器113使用当前信息预测在后续时间段内使用的较慢存储器273中的页面的可能性/温度。
在框289,预测加速器113将可能使用的热页面从较慢存储器加载到较快存储器271,并将不太可能使用的冷页面从较快存储器271卸载回较慢存储器273。
在框291,预测加速器113接收后续时间段内页面的实际使用。
在框293,预测加速器113进一步训练预测模型269以减小预测的可能性/温度与实际使用之间的差异。
例如,基于在导致特定时间段的时间段中页面的实际使用、所使用页面的属性,和/或可指示页面使用模式的计算系统中的活动信息,可预测某一特定时间段内使用的页面的可能性/温度。
特定时间段中的实际使用提供反馈以校正预测,并可用于进一步训练自学习预测引擎265的预测模型269。此外,鉴于在特定时间段期间变得可用的其它信息,诸如在特定时间段中实际使用的页面的属性,和/或在特定时间段期间计算系统中的活动信息,特定时间段中的实际使用为在特定时间段之后的时间段进行的预测提供基础。
在一些实例中,在没有关于计算系统中的活动的进一步信息的情况下,基于紧接在前的时间段中的使用历史和使用页面的属性进行预测。任选地,关于计算系统中的活动的进一步信息也用于预测模型269中。
在图6中的框301,计算系统提供第一存储器(例如,271)和第二存储器(例如,273)。
在框303,计算系统中的预测引擎265接收第二存储器(例如,273)中的页面的使用历史。
在框306,预测引擎265基于使用历史训练预测模型269。
在框307,预测引擎265使用预测模型269预测在后续时间段内使用页面的可能性。
在框309,预测引擎265致使控制器(例如,213、227和/或229)响应于由预测引擎预测的可能性,将第二存储器(例如,273)中的页面中的数据复制到第一存储器(例如,271)。
例如,计算系统具有第一存储器271和第二存储器272、预测引擎265和控制器228。预测引擎265接收第二存储器273中的页面的使用历史,基于使用历史训练预测模型269,并使用预测模型269预测在后续时间段内使用页面的可能性。响应于预测引擎265所预测的可能性,控制器228将第二存储器273中的热页面中的数据(例如,260)复制/加载到第一存储器271,和/或将冷页面中的数据260从第一存储器271保存/卸载到第二存储器273。
例如,管理程序245可生成在预测引擎265中用以预测可能性的信息;并且经配置以操作第二存储器273的装置驱动程序247从管理程序245接收信息,并使用预测引擎265中的信息来预测可能性。装置驱动程序247可向控制器228提供指令/请求/命令,以致使控制器228在第一存储器271与第二存储器273之间移动数据。
例如,第一存储器271和第二存储器273可在同一存储器模块205中,该存储器模块205经由存储器总线203连接到计算系统的处理装置118。
在一些实例中,第一存储器271比第二存储器273快。在其它实例中,第一存储器271和第二存储器273是同一类型,因此在存储器模块205内具有相同速度。
例如,存储器模块205具有过大的存储器容量,使得第二存储器273不能由处理装置118在存储器总线203上直接寻址。第一存储器271是存储器模块205的可在存储器总线203上直接寻址的存储器容量的一部分。因此,第一存储器271为处理装置118和/或存储器管理单元(MMU)213提供窗口以存取存储器模块205的第二存储器273。
例如,第一存储器271是易失性动态随机存取存储器(DRAM),而第二存储器273是非易失性交叉点存储器(例如,3D XPoint存储器)。第二存储器273为第一存储器271提供存储功能,该第一存储器271是存储器总线203上的计算机系统的主存储器的一部分。第二存储器273虚拟地扩展存储器模块205中的第一存储器271(例如,DRAM)的容量,并允许即使在通电的情况下也存储存储器模块205中的数据。
任选地,预测引擎265经由现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实施。
在一些实例中,当基于存储器模块205上可用的页面使用信息进行预测时,预测引擎265可在存储器模块205上和/或经由控制器227实施。任选地,预测引擎265可被实施为处理装置118或芯片组的一部分,或者被实施为耦合到处理装置118的单独装置;并且装置驱动程序247、管理程序245和/或操作系统(例如,241或243)可提供额外信息以提高引擎265的预测能力。
例如,可使用监督机器学习技术来训练预测模型269。
例如,预测模型269可包含人工神经网络和/或启发式规则。
在另一实例中,第一存储器271和第二存储器273在分离的存储器模块(例如,205)中,这些存储器模块经由同一存储器总线203连接到处理装置118。
在又一实例中,第一存储器271和第二存储器273在分离的存储器子系统(例如,205和209)中,这些存储器子系统经由分离的和不同类型的通信信道(例如,203和207)连接到处理装置118。
在一些实施方案中,处理装置118与存储器子系统之间的通信信道包含计算机网络,诸如局域网、无线局域网、无线个域网、蜂窝通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);并且处理装置118和存储器子系统可经配置以使用与NVMe协议中类似的数据存储管理和使用命令来彼此通信。
存储器子系统通常可具有非易失性存储介质。非易失性存储介质的实例包含形成在集成电路中的存储器单元和涂覆在硬盘上的磁性材料。非易失性存储介质可保持存储在其中的数据/信息而不消耗功率。可使用各种存储器/存储技术来实施存储器单元,诸如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储和存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,无晶体管存储器元件中的每一个具有堆叠在一起作为列的存储器单元和选择器。存储器元件列经由两个垂直布线层连接,其中一个布线层在存储器元件列上方而另一布线层在存储器元件列下方。可在两个层中的每一个上的一个导线的交叉点处分别选择每一存储器元件。交叉点存储装置是快速且非易失性的,并且可用作用于处理和存储的统一存储器池。
存储器子系统(例如,205或209)的控制器(例如,228、227或229)可运行固件以响应于来自处理装置118的通信执行操作。固件通常是提供工程计算装置的控制、监视和数据操作的一种计算机程序。
可使用由控制器228(诸如控制器228的固件)执行的计算机指令来实施涉及控制器228的操作的一些实施例。在一些实例中,硬件电路可用于实现至少一些功能。固件最初可存储在非易失性存储介质或另一非易失性装置中,并加载到易失性DRAM和/或处理器内高速缓冲存储器中以供控制器228执行。
非暂时性计算机存储介质通常可用于存储存储器子系统(例如,209或205)的固件的指令和/或操作系统(例如,241、243)的指令,特别是装置驱动程序247和管理程序245的指令。当由控制器228和/或处理装置118执行指令时,指令致使控制器228和/或处理装置118执行上述方法。
图7示出了计算机系统600的实例机器,在其中可执行用于致使机器执行本文所讨论的方法中的任何一或多个的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行预测加速器113的操作(例如,执行指令以执行对应于参考图1至6所述的预测加速器113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份运行,可作为对等(或分布式)网络环境中的对等机器,也可作为云计算基础架构或环境中的服务器或客户端机器运行。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者能够执行指定该机器要采取的动作的一组指令(顺序或其它方式)的任何机器。此外,尽管示出了单个机器,但术语“机器”还应当被理解为包含单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一或多个的机器的任何集合。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),以及数据存储系统618,它们经由总线630(其可包含多条总线)彼此通信。
处理装置602表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实施其它指令集的处理器,或者实施指令集组合的处理器。处理装置602还可为一或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602经配置以执行用于执行本文所讨论的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以通过网络620进行通信。
数据存储系统618可包含机器可读存储介质624(也被称为计算机可读介质),在其上存储体现本文描述的方法或功能中的任何一或多个的一或多组指令626或软件。指令626还可完全地或至少部分地驻留在主存储器604内和/或处理装置602内,在其由计算机系统600执行期间,主存储器604和处理装置602也构成机器可读存储介质。机器可读存储介质624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含实施对应于预测加速器113(例如,参考图1至6描述的预测加速器113)的功能的指令。虽然机器可读存储介质624在实例实施例中被示为单个介质,但术语“机器可读存储介质”应被认为包含存储一或多组指令的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码由机器执行的一组指令并且致使机器执行本公开的方法中的任何一或多个的任何介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光介质和磁介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前面的详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员通常使用的,从而最有效地将它们的工作实质传递到其它领域的技术人员。本文的算法通常是指得到期望结果的操作的自相容序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采用能够被存储、组合、比较以及以其它方式被操纵的电或磁信号的形式。有时主要是为了公共使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字、或者类似名称,经证实这是方便的。
然而,应当记住,所有这些和类似的术语要与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。本公开可涉及计算机系统或类似的电子计算设备的动作和过程,其操纵计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成计算机系统存储器或寄存器或其它这样的信息存储系统内类似地表示为物理量的其它数据。
本公开还涉及用于执行本文的操作的设备。该设备可为预期目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,诸如但不限于,包含软盘、光盘、CD-ROM和磁光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、或适合于存储电子指令的任何类型的介质,其中每一个都耦合到计算机系统总线。
本文呈现的算法和显示并不固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者其可证明构造更专用的设备以执行该方法是方便的。多种这些系统的结构从下文描述将是显而易见的。另外,未参考任何特定编程语言来描述本公开。应当理解,可使用各种编程语言来实施如本文描述的本公开的教示。
本公开可被提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读介质,指令可用于对计算机系统(或其它电子装置)编程以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、快闪存储器组件等。
在该描述中,各种功能和操作被描述为由计算机指令执行或引起以简化描述。然而,本领域技术人员将认识到,此类表达意味着这些功能是由诸如微处理器的一或多个控制器或处理器执行计算机指令而产生的。替代地或组合地,可使用具有或不具有软件指令(诸如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA))的专用电路来实施功能和操作。可使用不具有软件指令或与软件指令组合的硬连线电路来实施实施例。因此,技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。显然,可在不脱离如在所附权利要求中阐述的本公开的实施例的更宽的精神和范围的情况下对其进行各种修改。因此,说明书和附图被认为是说明性的而非限制性的。

Claims (20)

1.一种计算系统,其包括:
具有第一存储器和第二存储器的多个存储器组件;
处理装置,其可操作地与所述多个存储器组件耦合,以:
在预测引擎中接收所述第二存储器中的多个页面的存取历史;
由管理程序在所述预测引擎中,接收与所述多个页面的使用相关联的信息,与所述使用相关联的所述信息包括在所述第二存储器中存取的页面的属性,其中由所述管理程序基于所述管理程序对所述多个页面的所述使用来确定与所述使用相关联的所述信息;
基于所述存取历史以及与所述使用相关联的所述信息训练预测模型;
由所述预测引擎使用所述预测模型来预测在后续时间段内使用所述页面的可能性;以及
响应于由所述预测引擎预测的所述可能性,由控制器将所述第二存储器中的页面中的数据复制到所述第一存储器。
2.根据权利要求1所述的计算系统,其中与所述使用相关联的所述信息包括至少两个页面之间的逻辑关系。
3.根据权利要求1所述的计算系统,其进一步包括从所述管理程序接收与所述多个页面的所述使用相关联的所述信息并向所述预测引擎提供所述信息的装置驱动程序;
其中所述信息包括以下中的至少一个:
将页面从所述第二存储器加载到所述第一存储器的请求实例;
从所述第二存储器向所述第一存储器加载的所述页面的内容属性;
从所述第二存储器向所述第一存储器加载的所述页面的所有权属性;
从所述第二存储器加载到所述第一存储器的所述页面的用户标识;
从所述第二存储器加载到所述第一存储器的标识应用程序;
在虚拟机中以顺序方式存取的页面的标识;
在用户账户中以顺序方式存取的页面的标识;以及
处于稳定状态的页面存取的标识。
4.根据权利要求3所述的计算系统,其中所述装置驱动程序控制所述控制器以将所述数据从所述第二存储器复制到所述第一存储器。
5.根据权利要求1所述的计算系统,其中所述第一存储器和所述第二存储器在同一存储器模块中,所述存储器模块经由存储器总线耦合到中央处理单元。
6.根据权利要求5所述的计算系统,其中所述第二存储器不能由所述中央处理单元在所述存储器总线上直接寻址;且所述第一存储器可在所述存储器总线上直接寻址。
7.根据权利要求5所述的计算系统,其中所述第一存储器是易失性动态随机存取存储器,且所述第二存储器是非易失性交叉点存储器。
8.根据权利要求7所述的计算系统,其中所述预测引擎是以下中的一个:
现场可编程门阵列FPGA;以及
专用集成电路ASIC。
9.根据权利要求1所述的计算系统,其中所述第一存储器和所述第二存储器是在经由同一存储器总线耦合到中央处理单元的分离的存储器模块中。
10.根据权利要求1所述的计算系统,其中所述第一存储器和所述第二存储器是在经由分离的通信信道耦合到中央处理单元的分离的存储器系统中。
11.一种用于存储器操作的方法,其包括:
使用具有第一存储器和第二存储器的计算系统的第二存储器中的多个页面的存取历史来训练预测引擎的预测模型;
由管理程序使用与所述多个页面的所述使用相关联的信息来训练所述预测模型,与所述使用相关联的所述信息包括在所述第二存储器中存取的页面的元数据,其中由所述管理程序基于在所述管理程序中观察到的所述多个页面的所述使用来生成所述信息;
使用所述预测模型来预测在所述预测之后的后续时间段内使用所述页面的可能性;以及
响应于由所述预测引擎预测的所述可能性,将所述第二存储器中的页面中的数据复制到所述第一存储器。
12.根据权利要求11所述的方法,其中使用监督机器学习技术来执行所述训练。
13.根据权利要求12所述的方法,其中所述预测模型包括人工神经网络。
14.根据权利要求12所述的方法,其中所述存取历史是针对紧接在所述预测之前的时间段。
15.根据权利要求11所述的方法,其进一步包括:
经由所述计算系统中的装置驱动程序操作包含所述第二存储器的存储器系统;
由所述管理程序布建所述第二存储器作为所述计算系统中的虚拟存储器;
从所述管理程序接收与所述多个页面的所述使用相关联的所述信息;以及
将所述信息应用于所述预测模型以预测所述可能性。
16.根据权利要求15所述的方法,其进一步包括:
接收在所述后续时间段内的页面使用;以及
进一步训练所述预测模型,其中所述进一步训练减小在所述后续时间段内接收的页面使用与由所述可能性指示的预测页面使用之间的差异。
17.根据权利要求16所述的方法,其中所述存储器系统是经由存储器总线耦合到中央处理单元的模块;且所述第一存储器和所述第二存储器在所述存储器总线中;以及
其中所述第一存储器是在所述存储器总线上可直接寻址的动态随机存取存储器。
18.根据权利要求17所述的方法,所述第二存储器是不能在所述存储器总线上直接寻址的交叉点非易失性存储器。
19.一种非暂时性计算机存储介质,其存储指令,当由具有第一存储器和第二存储器以及控制器的计算系统执行所述指令时,所述指令使得所述计算系统执行一种方法,所述方法包括:
使用所述计算系统的所述第二存储器中的多个页面的存取历史来训练预测引擎的预测模型;
使用与管理程序对所述多个页面的所述使用相关联的信息来训练所述预测模型,与所述使用相关联的所述信息包括指示所述多个页面中包含的数据类型的信息,所述信息由所述管理程序确定;
使用所述预测模型预测在所述预测之后的后续时间段中使用所述第二存储器中的页面的可能性;以及
响应于所述可能性高于阈值,将所述第二存储器中的所述页面中的数据复制到所述第一存储器。
20.根据权利要求19所述的非暂时性计算机存储介质,其中所述方法进一步包括:
接收在所述后续时间段中的页面使用;
进一步训练所述预测模型以减小在所述后续时间段内接收的页面使用与由所述可能性指示的预测页面使用之间的差异;
在所述进一步训练之后,使用所述预测模型来预测所述第二存储器中的进一步页面在进一步的后续时间段中被使用的可能性;以及
响应于由所述预测引擎预测的所述进一步页面的所述可能性低于单独阈值,将数据从所述第一存储器复制到所述第二存储器中的所述进一步页面。
CN201980046028.XA 2018-07-11 2019-07-02 预测性分页以加速存储器存取 Active CN112384890B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/032,331 US10877892B2 (en) 2018-07-11 2018-07-11 Predictive paging to accelerate memory access
US16/032,331 2018-07-11
PCT/US2019/040413 WO2020014053A1 (en) 2018-07-11 2019-07-02 Predictive paging to accelerate memory access

Publications (2)

Publication Number Publication Date
CN112384890A CN112384890A (zh) 2021-02-19
CN112384890B true CN112384890B (zh) 2024-06-25

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727150A (en) * 1995-05-05 1998-03-10 Silicon Graphics, Inc. Apparatus and method for page migration in a non-uniform memory access (NUMA) system
US9910618B1 (en) * 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727150A (en) * 1995-05-05 1998-03-10 Silicon Graphics, Inc. Apparatus and method for page migration in a non-uniform memory access (NUMA) system
US9910618B1 (en) * 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system

Similar Documents

Publication Publication Date Title
US11669260B2 (en) Predictive data orchestration in multi-tier memory systems
US11573901B2 (en) Predictive paging to accelerate memory access
CN111684417B (zh) 用以存取异质存储器组件的存储器虚拟化
CN112470113B (zh) 存储器系统中的隔离性能域
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
US11561845B2 (en) Memory access communications through message passing interface implemented in memory systems
KR20200108358A (ko) 데이터 스트림 분리를 통한 메모리 시스템에서의 데이터 액세스 가속화
US20200356306A1 (en) Dynamic Data Placement for Collision Avoidance among Concurrent Write Streams
CN114631076A (zh) 加载命令的生存时间
CN112384890B (zh) 预测性分页以加速存储器存取
US11734071B2 (en) Memory sub-system tier allocation

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant