用以存取异质存储器组件的存储器虚拟化

文档序号:1174196 发布日期:2020-09-18 浏览:9次 >En<

阅读说明:本技术 用以存取异质存储器组件的存储器虚拟化 (Memory virtualization to access heterogeneous memory components ) 是由 A·拉伊 P·R·玛哈拉纳 G·阿南德 于 2019-01-18 设计创作,主要内容包括:本发明涉及一种计算系统,其具有:至少一个总线;多个不同存储器组件;及处理装置,其通过所述至少一个总线与所述多个存储器组件可操作地耦合。所述不同存储器组件包含具有不同存储器存取速度的第一存储器及第二存储器。所述计算系统进一步包含存储器虚拟器,所述存储器虚拟器可操作地:存储由所述处理装置用于存取存储器的第一地址与用于存取所述第一存储器及所述第二存储器的第二地址之间的地址映射;监测所述第一存储器及第二存储器的使用;基于所述使用调整所述地址映射以改进所述处理装置在涉及所述第一存储器及所述第二存储器的存储器存取时的速度;及根据对所述地址映射的调整交换所述第一存储器及所述第二存储器中的数据内容。(The invention relates to a computing system, comprising: at least one bus; a plurality of different memory components; and a processing device operably coupled with the plurality of memory components through the at least one bus. The different memory components include a first memory and a second memory having different memory access speeds. The computing system further includes a memory virtualizer operable to: storing an address map between a first address used by the processing device to access memory and a second address used to access the first memory and the second memory; monitoring usage of the first and second memories; adjusting the address mapping based on the usage to improve a speed of the processing device when memory accesses involving the first memory and the second memory; and swapping data content in the first memory and the second memory according to the adjustment to the address mapping.)

用以存取异质存储器组件的存储器虚拟化

相关申请案

本申请案主张于2018年8月3日申请且标题为“用以存取异质存储器组件的存储器虚拟化(Memory Virtualization for Accessing Heterogeneous Memory Components)”的序列号为16/054,719的美国专利申请案及于2018年2月5日申请且标题为“用于两层存储器系统的存储器虚拟化(Memory Virtualization for Two Tier Memory Systems)”的序列号为62/626,491的临时美国专利申请案的申请日期的权益,所述申请案的全部揭示内容特此以引用的方式并入本文中。

本申请案涉及于2018年7月11日申请且标题为“用以加速存储器存取的预测分页(Predictive Paging to Accelerate Memory Access)”的序列号为16/032,331的美国专利申请案及于2018年7月13日申请且标题为“存储器系统中的隔离性能域(IsolatedPerformance Domains in a Memory System)”的序列号为16/035,469的美国专利申请案,所述申请案的全部揭示内容特此以引用的方式并入本文中。

技术领域

本文中揭示的至少一些实施例大体上涉及存储器系统,且更特定来说(但非限制地)涉及用以存取异质存储器组件的存储器虚拟化。

背景技术

存储器子系统可为存储器模块,例如双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,例如固态硬盘(SSD)或硬盘驱动(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的且需要电力来维持经存储数据。一些存储器集成电路是非易失性的且甚至在未被供电时仍可保留经存储数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。一般来说,主机系统可利用存储器子系统来将数据存储于存储器组件处及从存储器组件检索数据。

例如,计算机可包含主机系统及附接到主机系统的一或多个存储器子系统。主机系统可具有与一或多个存储器子系统通信以存储及/或检索数据及指令的中央处理单元(CPU)。用于计算机的指令可包含操作系统、装置驱动程序及应用程序。操作系统管理计算机中的资源且为应用程序提供常见服务,例如存储器分配及资源的分时。装置驱动程序操作或控制计算机中的特定类型的装置;且操作系统使用装置驱动程序来提供由所述类型的装置提供的资源及/或服务。计算机系统的中央处理单元(CPU)可运行操作系统及装置驱动程序以将服务及/或资源提供到应用程序。中央处理单元(CPU)可运行使用服务及/或资源的应用程序。例如,实施一类型的计算机系统应用程序的应用程序可指示中央处理单元(CPU)将数据存储于存储器子系统的存储器组件中及从存储器组件检索数据。

计算机系统的操作系统可允许应用程序使用虚拟存储器地址来将数据存储于计算机系统的一或多个存储器子系统的存储器组件中或从计算机系统的一或多个存储器子系统的存储器组件检索数据。操作系统将连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的虚拟地址映射到物理地址。操作系统使用存储器子系统的物理地址实施虚拟地址处指定的存储器存取。

虚拟地址空间可被划分为页。可将虚拟存储器页映射到存储器子系统中的物理存储器页。操作系统可使用分页技术以经由存储器模块中的存储器页存取存储装置中的存储器页。在不同时间例子,存储器模块中的相同存储器页可用作存取存储装置中的不同存储器页或计算机系统中的另一存储装置的代理。

计算机系统可包含用于建立或布建虚拟机的超管理器(或虚拟机监测器)。虚拟机是使用计算机系统中可用的资源及服务虚拟地实施的计算装置。超管理器将虚拟机呈现给操作系统,宛如虚拟机的组件是专用物理组件一样。客户操作系统在虚拟机中运行以依与运行于计算机系统中的主机操作系统类似的方式管理虚拟机中可用的资源及服务。超管理器允许多个虚拟机共享计算机系统的资源且允许虚拟机在计算机上基本上彼此独立地操作。

具体实施方式

本发明的至少一些方面涉及一种可改进具有异质存储器组件的计算机系统中的存储器存取性能的存储器虚拟化技术。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插存储器模块(NVDIMM)等。存储器子系统的另一实例是经由***互连(例如,输入/输出总线、存储局域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态硬盘(SSD)、快闪驱动、通用串行总线(USB)快闪驱动及硬盘驱动(HDD)。在一些实施例中,存储器子系统是提供存储器功能及存储功能两者的混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供待存储于存储器子系统处的数据且可请求待从存储器子系统检索的数据。

存储器子系统可具有在不同方面中提供不同优点的不同类型的存储器组件。例如,存储器模块可具有用于快速存取的易失性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(处理器),处理装置117经配置以执行存储于本地存储器119中的指令。在所说明实例中,控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程的指令。在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已被说明为包含控制器115,但在本发明的另一实施例中,存储器子系统110可不包含控制器115,且可代替性地依赖于外部控制(例如,其由外部主机、或由与存储器子系统分离的处理器或控制器提供)。

一般来说,控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成用于实现对存储器组件109A到109N的所要存取的指令或适当命令。控制器115可负责与存储器组件109A到109N相关联的其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及逻辑块地址与物理块地址之间的地址转译。控制器115可进一步包含用于经由物理主机接口与主机系统120通信的主机接口电路系统。主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器组件109A到109N的命令指令,以及将与存储器组件109A到109N相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)及可从控制器115接收地址且解码所述地址以存取存储器组件109A到109N的地址电路系统(例如,行解码器及列解码器)。

计算系统100包含主机系统120中的存储器虚拟器113,存储器虚拟器113可通过从运行于处理装置118中的应用程序屏蔽存储器组件109A到109N的差异而虚拟化对存储器组件109A到109N的存储器存取。在一些实施例中,主机系统120中的控制器116及/或处理装置118包含存储器虚拟器113的至少一部分。例如,控制器116及/或处理装置118可包含实施存储器虚拟器113的逻辑电路系统。例如,主机系统120的处理装置118(处理器)可经配置以执行存储于存储器中的指令而执行本文中描述的存储器虚拟器113的操作。在一些实施例中,存储器虚拟器113是主机系统120的操作系统、装置驱动程序或应用程序的部分。任选地,存储器虚拟器113可部分或完全实施于存储器子系统110的控制器115中。

存储器虚拟器113提供使用一组虚拟化存储器地址来存取存储器组件109A到109N。一些虚拟化存储器地址用于存取一种类型的存储器组件(例如,较快但易失性的存储器109A);且一些虚拟化存储器地址用于存取另一类型的存储器组件(例如,非易失性但较慢的存储器109N)。然而,虚拟化存储器地址群组与不同类型的存储器组件109A到109N之间不存在预定关联。存储器虚拟器113可动态地调整虚拟化存储器地址与不同类型的存储器组件109A到109N之间的映射,以充分利用由不同类型的存储器组件提供的不同优点。例如,可训练预测模型以预测即将使用的虚拟存储器的热页(hot page)及在一时段内将不使用的虚拟存储器的冷页(cold page)。基于预测,存储器虚拟器113自动调整映射且指示存储器子系统110的控制器115将热页交换到较快存储器(例如,109)且将冷页交换到较慢存储器(例如,109N)。可在不利用存储器子系统110与主机系统120之间的连接上的通信带宽的情况下通过存储器子系统110内的控制器115执行页交换。在映射调整及页交换之后,用于预测存储器使用的存储器子系统110的存储器存取性能得以改进。存储器虚拟器113从应用程序屏蔽存储器的差异。因此,运行于处理装置118中的应用程序可进行存储器存取请求,宛如存储器组件109A到109N是具有相同特性的统一虚拟存储器投票一样。存储器虚拟器113动态地调整存储器组件109A到109N中的数据分布以利用由不同类型的存储器组件109A到109N提供的优点。下文描述关于存储器虚拟器113的操作的另外细节。

在一个实例中,中央处理单元(CPU)可存取提供于连接到CPU的一或多个存储器子系统中的两组存储器。例如,一组存储器可比另一组存储器慢;且中央处理单元(CPU)使用存储器虚拟器113以使用分页技术来经由较快存储器组存取较慢存储器组。在一些例子中,一组存储器无法由CPU直接寻址且其耦合到可由CPU直接寻址的另一组存储器;且中央处理单元(CPU)使用存储器虚拟器113来以类似于使用分页技术的方式存取无法经由可直接寻址的存储器组直接寻址的一组存储器。

例如,当正在存取的虚拟存储器页当前在较慢存储器组中但不在较快存储器组中时,可从较快存储器组分配页以服务较慢存储器组中的所述页;且存储器虚拟器113将从较慢存储器组提取所述页的数据且将其存储于较快存储器组中的经分配页中的经提取页的数据,使得可在后续操作中经由存取较快存储器组中的经分配页而进行对虚拟存储器的所述页的数据存取。在一些例子中,交换页比简单地从较慢存储器存取经请求数据元素花费的时间长。因此,首先使经请求数据元素服务于请求者,同时执行页交换以加速对热页中的数据元素的后续存取。使用此方法,总体性能可比保持对数据元素的请求直到完成页交换更佳。

此外,存储器虚拟器113可接收与较慢存储器组中的页的使用相关的信息且训练自学习预测引擎以基于此类信息预测页的使用。例如,可使用监督式机器学习技术以使用信息训练人工神经网络,以通过减小预测与页的实际使用之间的误差而预测较慢存储器组中的页的使用。在训练人工神经网络之后,预测引擎可使用当前信息来预测接下来的待使用页。此外,可以连续方式执行训练、预测及来自预测后实际使用的用于进一步训练的反馈,以将人工神经网络的预测模型调适到存储器页的最新使用模式。

响应于基于经训练人工神经网络及当前信息进行的即将使用较慢存储器组中的页的存储器使用预测,存储器虚拟器113可指示控制器115主动将数据页从较慢存储器组交换到较快存储器组,使得当需要处理时,数据页已在较快存储器组中,所述布置改进数据页的数据存取速度。

可针对后续实际页使用测量预测的准确度;且预测及后续实际页使用可用于进一步训练或调整人工神经网络以跟踪存储器页的最新使用模式。

替代地或组合地,可用基于策略的预测规则取代或扩充基于机器学习的预测。例如,存储驻留代码(例如,在较低地址中)的页可在可能时维持在较快存储器组中以减少频繁使用页的交换。例如,当正在存取作为巨型页的一部分的页时,可将所述巨型页加载到较快存储器组中。例如,可至少部分使用启发式规则来基于以下指示(例如是循序地还是随机地存取页、数据存取是处于稳态模式还是处于丛发模式及/或页之间的逻辑关系(及不同大小的页))进行预测。

可在于2018年7月11日申请且标题为“用以加速存储器存取的预测分页(Predictive Paging to Accelerate Memory Access)”的序列号为16/032,331的美国专利申请案中找到关于预测技术的一些细节及实例。

图2展示根据本文中揭示的至少一些实施例的计算系统,其具有不同存储器层及运行用以虚拟化存储器的指令。

图2的计算系统包含主机系统120、经由存储器总线203连接到主机系统120的存储器模块205,及经由***互连207连接到主机系统120的存储装置209。存储装置209及存储器模块205是图1中说明的存储器子系统110的实例。

主机系统120具有处理装置118,处理装置118可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有存储器管理单元213及高速缓存211。存储器管理单元213及/或高速缓存211的至少一部分可任选地集成于处理装置118的相同集成电路封装内。

图2中说明的存储器模块205具有多种类型的存储器(例如,221及223)。例如,A型存储器221比B型存储器223快。

存储器总线203通常以比***互连207更快的速度操作。例如,存储器总线203可为双倍数据速率总线;且***互连207可为快速***组件互连(PCIe)总线、串行高级技术附接(SATA)总线、通用串行总线(USB)总线及/或存储局域网络。可依比存取存储装置209中的B型存储器223快的速度存取存储器模块205中的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,B型存储器223可依低于一单独存储器模块(例如,205)中的A型存储器221的速度存取。

类似地,在多个存储装置(例如,205)耦合到***互连207的可能配置中,存储装置(例如,209)的一者具有B型存储器223,且存储装置的另一者具有C型存储器225,C型存储器225可依低于单独存储装置(例如,209)中的B型存储器221的速度存取。

处理装置118及/或MMU 213经由指令(例如,操作系统及/或一或多个装置驱动程序)配置以使用分页技术及/或存储器映射接口经由计算机系统中的存储器的一部分存取计算机系统中的存储器的另一部分。

例如,存储器模块205的B型存储器223可经由存储器模块205(或另一存储器模块)的A型存储器221存取。

例如,存储装置209的B型存储器223可经由存储器模块205的A型存储器221及/或经由存储器模块205的B型存储器223存取。

例如,存储装置209的C型存储器225可经由存储器模块205的A型存储器221、经由存储器模块205的B型存储器223及/或经由存储装置209(或另一存储装置)的B型存储器223存取。

例如,在一些例子中,相同存储器模块205(或不同存储器模块)中的A型存储器221及B型存储器223可通过处理装置118的存储器管理单元213经由存储器总线203直接地且单独地寻址。然而,由于B型存储器223比A型存储器221慢,所以期望经由A型存储器221存取存储器类型B 223。

在其它例子中,存储器模块205的B型存储器223仅可通过寻址存储器模块205的A型存储器221而存取(例如,归因于存储器总线203的地址部分的大小限制)。

控制器X 227可提供于存储器模块205中以管理存储器模块205内的A型存储器221与B型存储器223之间的数据传送,特别是在存储器模块205的B型存储器223无法使用存储器总线203直接寻址时。

在一个变体中,存储器模块205的存储器(例如,221及223)可在存储器模块205内个别地具有相同性能;然而,存储器管理单元213及/或处理装置118限制于经由存储器223经由存储器221存取(例如,归因于存储器总线203的地址部分的大小限制)。因此,存储器223看似比存储器221到处理装置118更慢。

一般来说,存储器子系统(例如,205及209)可包含例如存储器(例如,221、...、223、...、225)的媒体。存储器(例如,221、...、223、...、225)可包含易失性存储器、非易失性存储器(NVM)及/或此类存储器的组合。在一些实施例中,计算机系统包含至少一个存储器子系统,即存储装置209。存储装置209的实例是固态硬盘(SSD)。在一些实施例中,计算机系统包含至少一个存储器子系统,即配置为存储器模块205的混合存储器/存储系统。处理装置118可将数据写入到存储器子系统(例如,205及209)中的每一者且直接地或间接地从存储器子系统(例如,205及209)读取数据。

图2的计算系统可用于实施桌面计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。处理装置118可从存储器子系统(例如,205及209)读取数据或将数据写入到存储器子系统(例如,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)可负责与存储器(例如,221、...、223、...、225)相关联的操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及逻辑块地址与物理块地址之间的地址转译。控制器(例如,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可执行一或多个操作系统以提供服务,包含加速存储器存取,其中使用分页技术及/或存储器映射接口经由计算机系统中的存储器的一部分存取计算机系统中的存储器的另一部分,如下文进一步论述。

存储器虚拟器113可实施于存储器模块205的装置驱动程序中以虚拟化存储器模块205中的存储器221、...、223。或者,存储器虚拟器113可实施于存储器装置209的装置驱动程序中以虚拟化存储装置209中的存储器223、...、225。

在一些例子中,存储器模块205的装置驱动程序不仅虚拟化存储器模块205中的存储器221、...、223,而且虚拟化耦合到存储器总线203的类似存储器模块。因此,由存储器虚拟器113控制的页交换可跨两个存储器模块(例如,205与另一存储器模块)之间的存储器总线203。

在一些例子中,存储装置209的装置驱动程序不仅虚拟化存储装置209中的存储器223、...、225,而且虚拟化到***互连207的类似存储装置。因此,由存储器虚拟器113控制的页交换可跨两个存储装置(例如,209与另一存储装置)之间的***互连209。

在另一替代例中,存储器虚拟器113可实施于存储器模块205及存储装置209的组合的装置驱动程序中以虚拟化存储器模块205及存储装置209中的存储器221、...、223、...、225。因此,由存储器虚拟器113控制的页交换可跨***互连209及存储器模块205与存储装置209之间的存储器总线(203)。

在一些例子中,存储器虚拟器113可实施于主机系统120的操作系统及/或主机系统120的超管理器中。

图3展示具有经配置以虚拟化经由超管理器245进行的存储器存取的装置驱动程序247的系统。例如,可在图1或2的计算机系统中实施图3的系统。

图3的系统包含可在图1或2的计算机系统的处理装置118中运行的主机操作系统241。主机操作系统241包含使用存储器子系统(例如存储器模块205及/或存储装置209)的存储器(例如,221、...、223、...、225)提供存储器服务的一或多个装置驱动(例如,247)。

主机操作系统241包含布建虚拟机249的超管理器245。虚拟机249具有经由主机操作系统241使用图1或2的计算系统的硬件提供的资源及服务实施的虚拟硬件。例如,超管理器245可使用存储器子系统(例如存储器模块205及/或存储装置209)的存储器(例如,221、...、223、...、225)的一部分布建虚拟存储器作为虚拟机249的部分。

虚拟机249允许客户操作系统243以如同操作系统243在具有与虚拟机中所布建相同或类似的硬件组的物理计算机器上运行的方式将资源及/或服务提供到运行于客户操作系统243上的应用程序(例如,251、...、253)。超管理器245管理虚拟机中所布建的虚拟硬件与由主机操作系统241管理的计算系统中的硬件服务之间的映射。

图3说明其中通过超管理器245布建虚拟机249的例子。一般来说,超管理器245可布建可运行相同客户操作系统243或不同客户操作系统(例如,243)的多个虚拟机(例如,249)。可指派不同用户及/或应用程序集以使用不同虚拟机。

在一些例子中,主机操作系统241专用于提供用于布建虚拟机的服务且不运行其它应用程序。或者,主机操作系统241可提供额外服务以支持其它应用程序,例如应用程序(例如,251、...、253)。

装置驱动程序247可经配置以预测较慢存储器的页的使用,且在实际请求所述页以供虚拟机249使用之前使用存储器虚拟器113来将所述页换入到较快存储器中。所述预测通过在使用页的请求之前将数据页从较慢存储器加载及/或传送的较快存储器而减少使用所述页的请求与所述页在较快存储器中可用之间的时间,此加速页的数据存取。

例如,较慢存储器可为存储器模块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)中的拥塞。例如,可执行预测交换-提取以在存储器模块205中的控制器227的控制下,响应于来自装置驱动程序247及/或存储器管理单元(MMU)213的一或多个命令、请求或指令而将数据从存储器模块205中的较慢存储器223复制到存储器模块205中的较快存储器221。例如,可执行预提取以在存储装置209中的控制器229的控制下,响应于来自装置驱动程序247及/或存储器管理单元(MMU)213的一或多个命令、请求或指令而将数据从存储装置209中的较慢存储器225复制到存储装置209中的较快存储器223。

在一个实施例中,超管理器245不仅请求装置驱动程序247存取存储器子系统(例如,存储器模块205或存储装置209)中的存储器(例如,221、...、223、...或225),而且对装置驱动程序247提供信息,所述信息可用于预测存储器(例如,221、...、223、...或225)中的哪些页可能在后续时段中使用及存储器(例如,存储器(例如,221、...、223、...或225)中的哪些页不太可能在后续时段中使用。由超管理器245提供且由装置驱动程序247用来进行预测的信息的实例包含:在先前时段中使用的页的序列、将页从较慢存储器加载到较快存储器的请求的例子、页的内容属性、页的所有权属性、页的用户或应用程序的识别、是否在虚拟机及/或用户帐户中以循序模式存取页的指示、页存取是否处于稳态的指示、所使用的页是否与巨型页相关联的指示等。

可能使用的页可被称为热页;且不太可能使用的页可被称为冷页。在后续时段中使用页的可能性可称为页温度。装置驱动程序247使用由超管理器245提供的信息来预测页温度、调整一或多个存储器子系统中的页的位置以优化存储器(例如,221、...、223、...或225)中的页的分布且加速数据存取。

在一些例子中,装置驱动程序247使用具有自学习能力的硬件预测引擎来进行页温度的预测。

图4展示耦合到装置驱动程序247以通过虚拟化改进存储器存取的预测引擎265。例如,图4的预测引擎265可结合图3的主机操作系统241及图2的存储器子系统(例如,205及209)使用。

图4中的超管理器245耦合到转译后备缓冲器(TLB)267,转译后备缓冲器(TLB)267定义由超管理器245布建到虚拟机(例如,249)的虚拟存储器页与存储器(例如,271或273)中的页之间的映射。

处理装置118存取地址261处的存储器271的页可比存取地址263处的存储器273的页快。期望且在一些例子中要求经由较快存储器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时,存储器虚拟器113可将数据260卸除回到较慢存储器273,以保存在较快存储器271中使用数据260时对数据260作出的改变。

超管理器245将信息提供到装置驱动程序247及/或自学习预测引擎265以在预测引擎265中训练预测模型269。此信息可包含页存取历史、用户的识别、使用页的过程及/或虚拟机及页的属性,例如位置、时间、所有权、使用模式、页当中的逻辑关系(例如,一起用于表示对象的页的识别)、页中所含的数据类型(例如,操作系统、应用程序、软件工具、系统数据、用户数据)及/或页的其它元数据。

例如,可使用人工神经网络或另一机器学习模型来构建预测模型269。可使用监督式机器学习技术来预测较慢存储器273中的页温度且最小化页的预测温度及经量测温度,如在超管理器245中观察到的页的实际使用中所指示。在一些例子中,页在时间例子的温度与待使用所述页的最近后续时间例子成反比。小于阈值的使用时间间隙对应于极热温度且因此表示将页提取到较快存储器271的提升的需要或优先级。大于另一阈值的使用时间间隙对应于极冷温度且因此表示从较快存储器271卸除页且在较快存储器271中为其它热页腾出空间的机会。

此外,可基于关于页使用的正在进行的信息及实际使用页的识别来持续训练预测模型269。预测后的实际使用提供关于预测准确度的反馈;且可持续训练预测模型269以基于最近使用时段最小化预测误差。

当预测引擎265识别当前不在较快存储器271中的热页及当前在较快存储器271中的冷页时,装置驱动程序247将热页的数据260加载到较快存储器271中以预期使用数据260,及/或将冷页的数据260卸除到较慢存储器273中以在较快存储器271中为热页腾出空间。

任选地或组合地,预测引擎265使用启发式规则来协助预测数据定位。启发式规则可基于应用程序或虚拟机是循序地还是随机地存取数据页、应用程序或虚拟机是以稳态模式还是丛发模式存取数据页、应用程序或虚拟机是通过小页还是巨型页存取数据页等。

在一些例子中,预测引擎265识别后续时段的最频繁使用页;且作为响应,存储器虚拟器113指示控制器228将预测最频繁使用的页交换到较快存储器271,同时允许从较慢存储器273存取预测不太频繁使用的剩余页。

图4说明通过由超管理器245提供的信息训练自学习预测引擎265。一般来说,主机操作系统241中的软件工具可用于提供关于页使用历史的信息及/或页信息以在具有或不具有超管理器245的情况下训练自学习预测引擎265。例如,可在运行多个应用程序但不具有超管理器245且不提供虚拟机(例如,249)的操作系统中使用预测数据提取技术。

优选地,可使用与处理装置118及/或控制器(例如,213、227、229、228)分离的硬件电路系统实施预测引擎265。例如,专用集成电路(ASIC)或场可编程门阵列(FPGA)可用于实施预测引擎265。

或者,预测引擎265可实施为处理装置118或耦合到处理装置118的处理器的一部分。

在一些例子中,在存储器子系统的控制器228(例如存储器模块205的控制器227或存储装置209的控制器229)中实施预测引擎265。

图5展示用于虚拟化存储器存取的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,图5的方法至少部分由图1或2的存储器虚拟器113执行。尽管以特定序列或顺序展示,然除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,且所说明过程可依不同顺序执行,且一些过程可并行执行。另外,在各个实施例中,可省略一或多个过程。因此,并非每个实施例都需要全部过程。其它过程流程是可能的。

例如,可在图1或2的计算系统中运用图3的主机操作系统241及图4的自学习预测引擎265来实施图5的方法。例如,存储器虚拟器113可至少部分经由图4的自学习预测引擎265及图3的主机操作系统241来实施。

在框301,计算系统(例如,如图1或2中所说明)提供具有不同存储器存取速度的第一存储器(例如,109A、221或271)及第二存储器(例如,109N、223或273)。

例如,第一存储器是较快但易失性的(例如,其使用DRAM实施);且第二存储器是非易失性但较慢的(例如,其使用快闪存储器或交叉点非易失性存储器实施)。

在一些例子中,第一存储器及第二存储器可在计算系统中及/或在总线(例如,存储器总线203)上各别地存取。然而,管理第一存储器及第二存储器的差异以充分利用由第一存储器及第二存储器提供的不同优点对于个别应用程序(例如,图3中的251...、253)及/或个别虚拟机(例如,图3中的249)而言可为一项挑战。因此,可在计算系统中提供存储器虚拟器113以虚拟化第一存储器及第二存储器且从应用程序(例如,图3中的251...、253)及/或虚拟机(例如,图3中的249)屏蔽第一存储器及第二存储器的不同特性。例如,存储器虚拟器113可实施为具有第一存储器(例如,221)及第二存储器(例如,223)的存储器模块205的装置驱动程序,且因此针对应用程序(例如,图3中的251...、253)及/或虚拟机(例如,图3中的249)的当前使用模式自动优化第一存储器(例如,221)及第二存储器(例如,223)的使用。

在框303,存储器虚拟器113存储由处理装置用于存取存储器的第一地址与用于存取第一存储器及第二存储器的第二地址之间的地址映射。

例如,地址映射可存储于主机系统120的高速缓存211或第一存储器的专用/保留部分中。地址映射可存储于转译后备缓冲器(TLB)(267)中。例如,地址映射定义由应用程序/虚拟机用于寻址存储器模块205中的存储器位置的虚拟存储器地址与在存储器总线203上传输到存储器模块205的逻辑存储器地址之间的关系。或者,地址映射定义存储器模块205的逻辑存储器地址与存储器模块205中的物理存储器地址之间的关系。

在框305,存储器虚拟器113监测第一存储器及第二存储器的使用。

例如,可在具有第一存储器(例如,221)及第二存储器(例如,223)的存储器模块(例如,205)的装置驱动程序247中实施存储器虚拟器113。因此,经由存储器虚拟器113进行第一存储器及第二存储器的使用。过去使用及/或当前使用可用于预测在后续时段中的未来使用。存储器虚拟器113可自动调整第一存储器及第二存储器内的数据分布以充分利用由第一存储器及第二存储器提供的不同优点。

在框307,存储器虚拟器113基于使用调整地址映射以改进涉及第一存储器及第二存储器的存储器存取的速度。

在框309,存储器虚拟器113根据对地址映射的调整交换第一存储器及第二存储器中的数据内容。

例如,第一存储器(例如,109A、221或271)比第二存储器(例如,109N、223或273)快。基于在后续时段中将使用数据页的频繁程度预测数据页的温度。较热页具有将在后续时段中比冷页更频繁使用的数据。存储器虚拟器113指示存储器模块205的控制器227交换、调整或改变存储位置,使得将较热数据页存储于较快存储器(例如,109A、221或271)中,且将较冷数据页存储于较慢存储器中(例如,109N、223或273)中。存储器虚拟器113调整地址映射使得从应用程序及/或虚拟机屏蔽使用第一存储器及第二存储器的改变。

在一些实施方案中,处理装置118可至少针对计算系统中所处理的存储器存取请求的一部分经由总线(例如,203)存取第二存储器(例如,109N、223或273)而不存取第一存储器(例如,109A、221或271)。例如,在第一存储器(例如,109A、221或271)中进行对较热页的频繁存取;且在第二存储器(例如,109N、223或273)中进行对较冷页的不频繁存取。当考虑数据交换的性能成本时,将较冷页从较慢存储器交换到较快存储器仅伺服一些不频繁的存取请求而可能无法改进总体性能。因此,存储器虚拟器113可避免较冷页到较快存储器的此交换且直接由较慢存储器服务对较冷页的数据存取。在其它实施方案中,第一存储器(例如,109A、221或271)可用作用于存取第二存储器(例如,109N、223或273)的高速缓存或网关。

优选地,第一存储器及第二存储器安置于相同存储器模块(例如,205)中且共享到总线(例如,203)的共同物理主机接口。因此,可在不使用存储器总线(例如,203)的通信带宽的情况下在存储器模块(例如,205)内执行对存储器模块(例如,205)内的数据存储位置的调整。优选地,存储器模块(例如,205)具有比用于内部数据交换的存储器总线(例如,203)宽的通信带宽。

任选地,存储器模块(例如,205)可实施为包含控制器227的双列直插存储器模块(DIMM)。控制器227可至少部分实施存储器虚拟器113。例如,响应于来自主机系统120的指令,控制器执行内部数据交换以在不同类型的存储器(221、...、223)中重新定位数据。存储器虚拟器113可包含存储器模块(例如,205)的装置驱动程序247,其中装置驱动程序247在主机系统120的处理装置118中运行。或者,存储器虚拟器113可运用硬件及/或固件完全实施于控制器227中。

例如,存储器虚拟器113可确定在后续时段中对第一存储器的部分中的数据内容的存取不如第二存储器的部分频繁。响应于存取当前在第二存储器(例如,109N、223或273)中的存储器位置的请求,存储器虚拟器113指示控制器(例如,227或228)在第一存储器(例如,109A、221或271)的一部分与第二存储器(例如,109N、223或273)的一部分之间交换数据内容。因此,通过存取第二存储器中的存储器位置的请求触发交换。控制器(例如,227或228)可在启动在第一存储器之部分与第二存储器的部分之间交换数据内容的内部操作之前服务请求,使得主机系统120可在数据交换完成之前获得对存取请求的响应。

存储器虚拟器113经配置以执行地址转译以虚拟化存储器存取。例如,在接收到待由主机系统120的处理装置118进行的存储器存取请求的地址之后,存储器虚拟器113基于地址映射将地址转换为经转换地址(例如,使用转译后备缓冲器267);存储器虚拟器113根据经转换地址在存储器总线203上进行存储器存取请求。

在一些实施方案中,第一存储器(例如,109A、221或271)可用作用于在第二存储器无法在存储器总线(203)上直接寻址时存取一存储器模块(205)中的第二存储器(例如,109N、223或273)的高速缓存或网关。或者,第一存储器及第二存储器可在经由相同存储器总线203耦合到中央处理单元的各别存储器模块中。或者,第一存储器及第二存储器可在经由各别通信通道耦合到中央处理单元的各别存储器系统中。

在一些实施方案中,处理装置118与存储器子系统之间的通信通道包含计算机网络,例如局域网络、无线局域网络、无线个人局域网络、蜂窝通信网路、宽带高速始终连接的无线通信连接(例如,当前或下一代移动网络链路);且处理装置118及存储器子系统可经配置以使用类似于NVMe协议中的数据存储管理及使用命令的数据存储管理及使用命令来彼此通信。

存储器子系统一般可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元及涂覆于硬磁盘上的磁性材料。非易失性存储媒体可在未消耗电力的情况下维持存储于其中的数据/信息。存储器单元可使用各种存储器/存储技术实施,例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管的存储器组件,所述存储器组件中的每一者具有在一起堆叠为一列的存储器单元及选择器。存储器组件列经由两层垂直线敷设(lay of wires)连接,其中一层敷设在存储器组件列上方且另一层敷设在存储器组件列下方。可在两个层中的每一者上的一条线的交叉点处个别地选择每一存储器组件。交叉点存储器装置是快速的且非易失性的,且可用作用于处理及存储的统一存储器集区。

存储器子系统(例如,205或209)的控制器(例如,228、227或229)可运行固件以响应于来自处理装置118的通信而执行操作。固件一般为提供对工程计算装置的控制、监测及数据操纵的一类型的计算机程序。

涉及控制器228的操作的一些实施例可使用由控制器228执行的计算机指令(例如控制器228的固件)来实施。在一些例子中,硬件电路可用于实施至少一些功能。固件最初可存储于非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM及/或处理器内高速缓存中以由控制器228执行。

非暂时性计算机存储媒体可用于存储存储器子系统(例如,209或205)的固件的指令及/或一般来说操作系统(例如,241、243)以及特定来说装置驱动程序247及超管理器245的指令。当通过控制器228及/或处理装置118执行指令时,指令引起控制器228及/或处理装置118执行上文论述的方法。

图6说明计算机系统600的实例机器,可在计算机系统600内执行用于引起所述机器执行本文中论述的方法论的任一或多者的指令集。在一些实施例中,计算机系统600可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120),或其可用于执行存储器虚拟器113的操作(例如,以执行指令而执行对应于关于图1到5描述的存储器虚拟器113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内部网络、外部网络及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器,或在云端计算基础设施或环境中作为服务器或客户端机器。

机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指定待由所述机器采取的动作的指令集(循序地或以其它方式)的任何机器。此外,虽然说明单个机器,但术语“机器”也应被视为包含个别地或联合地执行一(或多个)指令集以执行本文中论述的方法论的任一或多者的任何机器集合。

实例计算机系统600包含经由总线630(其可包含多个总线)彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)等)及数据存储系统618。

处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、极长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施一指令集组合的处理器。处理装置602还可为一或多个专用处理装置,例如专用集成电路(ASIC)、场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置602经配置以执行用于执行本文中论述的操作及步骤的指令626。计算机系统600可进一步包含网络接口装置608以经由网络620通信。

数据存储系统618可包含机器可读存储媒体624(也被称为计算机可读媒体),一或多个指令626集或体现本文中描述的方法论或功能的任一或多者的软件存储于机器可读存储媒体624上。指令626还可在其通过计算机系统600执行期间完全或至少部分驻留在主存储器604及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。

在一个实施例中,指令626包含用于实施对应于存储器虚拟器113(例如,关于图1到5描述的存储器虚拟器113)的功能性的指令。虽然机器可读存储媒体624在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应被视为包含能够存储或编码指令集以由机器执行且引起机器执行本发明的方法论的任一或多者的任何媒体。因此,术语“机器可读存储媒体”应被视为包含(但不限于)固态存储器、光学媒体及磁性媒体。

已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前文详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员使用以最有效地将其工作实质传达给所属领域的其它技术人员的方式。在此且一般来说,算法被认为是导致所要结果的自我一致操作序列。操作是需要物理操纵物理量的操作。通常但非必要,这些量采取能够被存储、组合、比较及以其它方式操纵的电信号或磁信号的形式。主要出于常用的原因,已证实将这些信号称为位、值、组件、符号、字符、项、数字或类似物有时是方便的。

然而,应记住,全部这些及类似术语应与适当物理量相关联且仅为应用于这些量的方便标签。本发明可涉及计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的动作及过程。

本发明还涉及一种用于执行本文中的操作的设备。此设备可专门建构用于所欲目的,或其可包含通过存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。

本文中呈现的算法及显示器并非固有地与任何特定计算机或其它设备相关。各种通用系统可搭配根据本文中的教示的程序使用,或可证实建构更专业设备以执行方法是方便的。多种这些系统的结构将如下文描述中所陈述那样出现。另外,未参考任何特定程序设计语言描述本发明。将明白,可使用多种程序设计语言来实施如本文中描述的本发明的教示。

本发明可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本发明的程序。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。

在本描述中,各种功能及操作被描述为由计算机指令执行或引起以简化描述。然而,所属领域的技术人员将认识到,此类表达意味着功能因通过一或多个控制器或处理器(例如微处理器)执行计算机指令而产生。替代地或组合地,可使用具有或不具有软件指令的专用电路系统(例如使用专用集成电路(ASIC)或场可编程门阵列(FPGA))来实施功能及操作。可使用不具有软件指令的硬接线电路系统或结合软件指令来实施实施例。因此,技术既不限于硬件电路系统及软件的任何特定组合也不限于通过数据处理系统执行的指令的任何特定来源。

在前述说明书中,已参考本发明的特定实例实施例描述本发明的实施例。将显而易见的是,可在不脱离如下文权利要求书中所陈述的本发明的实施例的更广泛精神及范围的情况下对本发明的实施例进行各种修改。因此,本说明书及图式应被视为说明性意义而非限制性意义。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于在多租户容器平台上运行应用程序的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!