用于通过重新映射地址空间来提供连续可寻址存储器区域的方法和设备与流程

文档序号:15739341发布日期:2018-10-23 22:01阅读:230来源:国知局
用于通过重新映射地址空间来提供连续可寻址存储器区域的方法和设备与流程

一般来说,本公开涉及计算机开发领域,并且更具体来说,涉及通过重新映射地址空间来提供连续可寻址存储器区域。



背景技术:

计算机系统可包括耦合到一个或多个存储器装置的一个或多个中央处理单元(CPU)。CPU可包括用于执行操作系统的处理器,该操作系统利用耦合到CPU的存储器装置。操作系统可执行与存储器装置有关的各种操作,诸如分配存储器装置的存储器区域、从存储器装置读取以及写入到存储器装置。

附图说明

图1示出根据某些实施例的计算机系统的组件的框图。

图2示出根据某些实施例用于在无需重定位数据的情况下提供连续可寻址存储器区域的示例流程。

图3示出根据某些实施例在处理要改变数据区域的位置的命令之前的存储器装置的示例状态。

图4示出根据某些实施例在已经处理要改变数据区域的位置的命令之后的存储器装置的示例状态。

图5示出根据某些实施例用于发布要改变数据区域的位置的命令的示例流程。

图6示出根据某些实施例用于处理要改变数据区域的位置的命令的示例流程。

各种附图中的类似附图标记和标志指示类似元件。

具体实施方式

尽管附图描绘了特定计算机系统,但是各种实施例的概念可适用于任何合适的集成电路和其它逻辑装置。可在其中使用本公开的教导的装置的示例包括桌上型计算机系统、服务器计算机系统、存储系统、手持式装置、平板计算机、其它薄笔记本计算机、片上系统(SOC)装置和嵌入式应用。手持式装置的一些示例包括蜂窝电话、互联网协议装置、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行下文教导的功能和操作的任何其它系统。

图1示出根据某些实施例的计算机系统100的组件的框图。系统100包括耦合到外部输入/输出(I/O)控制器104和多个存储器装置106的中央处理单元(CPU)102。在操作期间,可在存储器装置106和CPU 102之间传递数据。在各种实施例中,可通过由处理器108执行的操作系统或其它软件来管理涉及存储器装置106的特定数据操作。

存储器装置106可向操作系统暴露它的存储器的外部可寻址地址空间。操作系统使用该地址空间来与存储器装置一起执行存储器操作(例如,读取和写入)。例如,当标识与要发送给存储器装置106的命令关联的数据区域时,操作系统可通过外部可寻址地址空间中的数据区域的至少一个地址(例如,起始地址和/或结束地址)来引用数据区域。存储器装置106还具有物理地址空间。在各种实施例中,不向操作系统暴露物理地址空间。物理地址空间包括直接应用于存储器(例如,通过操纵提供给存储器的信号的电压以便与地址匹配)以便从存储器读取数据或将数据写入到存储器的地址。在各种实施例中,为了允许操作系统与存储器交互,将外部可寻址地址空间中的地址转换为存储器装置106内的物理地址空间中的地址。

随着时间的过去,由于在存储器装置处执行各种存储器操作,所以存储器装置的存储器可变得碎片化。存储器的碎片化导致外部可寻址地址空间中的存储器的最大连续可寻址范围的减少。

在各种实施例中,操作系统可接收用于分配大于外部可寻址地址空间中的最大可用连续可寻址存储器区域的连续可寻址存储器区域的请求。在此类情况下,操作系统可以能够通过向存储器装置106发布一系列读取和写入命令以便将数据从期望区域移出到外部可寻址地址空间中的另一个区域来管理为请求创建连续可寻址存储器区域。此类命令将导致在存储器内数据的物理移动。尽管该方法可允许操作系统在外部可寻址地址空间中释放连续可寻址存储器区域,但是数据的物理移动可花费不期望地大量时间,特别是在必须移动大量数据以便获得请求的连续可寻址存储器区域时。

本公开的各种实施例允许修改在存储器装置106的外部可寻址地址空间和存储器装置的物理存储器空间之间的映射,以便在无需物理移动存储在存储器装置的存储器中的数据的情况下,增加外部可寻址地址空间的最大连续可寻址存储器区域的大小。各种此类实施例可提供技术优势,包括例如时间量的减少、通信带宽以及释放请求的连续可寻址存储器区域所需的功率。

CPU 102包括处理器108,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC)或用于执行代码(即,软件指令)的其它装置。在描绘的实施例中,处理器108包括两个处理元件(在描绘的实施例中为核114A和114B),其可包括不对称处理元件或对称处理元件。然而,处理器可包括可以是对称或不对称的任何数量的处理元件。

在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括线程单元、线程槽、线程、过程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的状态(诸如执行状态或体系结构状态)的任何其它元件。换句话说,在一个实施例中,处理元件是指能够与诸如软件线程、操作系统、应用或其它代码的代码独立相关联的任何硬件。物理处理器(或处理器插口)典型地是指潜在地包括任何数量的其它处理元件(诸如核或硬件线程)的集成电路。

核114可以指位于集成电路上能够维持独立体系结构状态的逻辑,其中每个独立维持的体系结构状态与至少一些专用执行资源相关联。硬件线程可以指位于集成电路上的能够维持独立体系结构状态的任何逻辑,其中独立维持的体系结构状态共享对执行资源的访问。如可以看到的,当某些资源被共享并且其它资源专用于体系结构状态时,硬件线程和核的命名法之间的线重叠。然而,经常,由操作系统将核和硬件线程视为是单独逻辑处理器,其中操作系统能够在每个逻辑处理器上单独地调度操作。

在各种实施例中,处理元件还可包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处置硬件、寄存器或用于促进处理元件的操作的其它硬件。

I/O控制器110是包括用于在CPU 102和I/O装置之间传递数据的逻辑的集成I/O控制器,其可以指能够向电子系统(诸如CPU 102)传递数据和/或从电子系统(诸如CPU 102)接收数据的任何合适的装置。例如,I/O装置可以是:诸如图形加速器或音频控制器的音频/视频(A/V)装置控制器;诸如闪速存储器装置、磁存储盘或光存储盘控制器的数据存储装置控制器;无线收发器;网络处理器;网络接口控制器;或诸如监视器、打印机、鼠标、键盘或扫描仪的另一输入装置的控制器;或其它合适的装置。在特定实施例中,I/O装置可包括通过I/O控制器110耦合到CPU 102的存储器装置106。

I/O装置可使用诸如外围组件互连(PCI)、PCI高速(PCIe)、通用串行总线(USB)、串行附连SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、IEEE 802.3、IEEE 802.11或其它当前或未来的信令协议的任何合适的信令协议与CPU 102的I/O控制器110进行通信。在各种实施例中,耦合到I/O控制器的I/O装置可位于芯片外(即,不在与CPU 102相同的芯片上),或可集成在与CPU 102相同的芯片上。

CPU存储器控制器112是包括要控制进出存储器装置106的数据流的逻辑的集成存储器控制器。CPU存储器控制器112可包括可操作以便从存储器装置106读取、写入到存储器装置106、或请求来自存储器装置106的其它操作(诸如如本文中描述的存储器区域位置改变)的逻辑。在各种实施例中,CPU存储器控制器112可从核114和/或I/O控制器110接收写入请求,并且可将在这些请求中指定的数据提供给存储器装置106以便存储在其中。CPU存储器控制器112还可从存储器装置106读取数据,并将读取的数据提供给I/O控制器110或核114。在操作期间,CPU存储器控制器112可发布包括存储器装置106的一个或多个地址(例如,行和/或列地址)的命令以便从存储器读取数据或将数据写入到存储器(或执行其它操作)。由此类命令中的CPU存储器控制器112使用的地址是存储器装置106的外部可寻址地址空间中的地址。在一些实施例中,存储器控制器112可在与CPU 102相同的管芯或集成电路中实现,而在其它实施例中,存储器控制器112可在与CPU 102的管芯或集成电路不同的管芯或集成电路中实现。

CPU 102还可通过外部I/O控制器104耦合到一个或多个其它I/O装置。在特定实施例中,外部I/O控制器104可将存储器装置106耦合到CPU 102。外部I/O控制器104可包括要管理一个或多个CPU 102和I/O装置之间的数据流的逻辑。在特定实施例中,外部I/O控制器104连同CPU 102一起位于母板上。外部I/O控制器104可使用点对点或其它接口与CPU 102的组件交换信息。

存储器装置106可存储任何合适的数据,诸如由处理器108使用以提供计算机系统100的功能性的数据。例如,可将与执行的程序相关联的数据或由核114访问的文件存储在存储器装置106中。因此,存储器装置106可包括存储由核114使用或执行的数据和/或指令序列的系统存储器。在各种实施例中,存储器装置106可存储即使在移除对存储器装置106的供电之后仍保持存储的永久数据(例如,用户的文件)。存储器装置106可专用于CPU 102,或可与计算机系统100的其它装置(例如,另一个CPU或其它装置)共享。

在各种实施例中,存储器装置106可包括存储器的各种区域,其各自位于连续存储器地址的集合处。如果地址指向存储器的下一个可寻址部分,那么它可与另一个地址连续,其中存储器的一部分可以是任何合适的大小,诸如单个单元、字节、字、页、块等。位于连续存储器地址的集合处的存储器区域可称为连续可寻址存储器区域。如果将连续可寻址存储器区域分配给特定实体,那么将通过连续地址集合内的地址(从起始地址到结束地址)引用的每个存储器部分分配给那个实体。可响应于对例如名称空间(例如,指派给驱动器字母的存储分区)、块转换表实存块(arena)、在操作系统上运行的程序的存储器空间、或其它存储器分区的请求而分配连续可寻址存储器区域。

在描绘的实施例中,存储器装置106A包括包含多个存储器模块122A-D的存储器116(存储器装置可包括任何合适数量的存储器模块122)、存储器装置控制器118和地址转换引擎120。存储器模块122包括各自可操作以便存储一个或多个位的多个存储器单元。存储器模块122的单元可以按任何合适的方式布置,诸如按列和行或按三维结构。单元可逻辑地分组为库(bank)、块、页(其中页是块的子集)、帧、字节或其它合适的群组。

存储器模块122可包括非易失性存储器和/或易失性存储器。非易失性存储器是不需要功率来维持由介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可包括以下任何一项或其组合:固体存储器(诸如平面或3D NAND闪速存储器或NOR闪速存储器),3D XPoint存储器,利用硫系化合物相变材料(例如,硫系化合物玻璃)的存储器装置,字节可寻址非易失性存储器装置,铁电存储器,硅-氧化物-氮化物-氧化物-硅(SONOS)存储器,聚合物存储器(例如,铁电聚合物存储器),铁电晶体管随机存取存储器(Fe-TRAM)奥氏存储器,纳米线存储器,电可擦可编程只读存储器(EEPROM),其它各种类型的非易失性随机存取存储器(RAM),以及磁存储存储器。在一些实施例中,3D XPoint存储器可包括无晶体管可堆叠交叉点体系结构,其中存储器单元位于字线和位线的交点处且可单独寻址,并且其中位存储基于体积电阻(bulk resistance)的变化。在特定实施例中,具有非易失性存储器的存储器模块122可遵守由电子器件工程联合委员会(JEDEC)公布的一个或多个标准,诸如JESD218、JESD219、JESD220-1、JESD223B、JESD223-1、或其它合适的标准(在本文中引用的JEDEC标准可在www.jedec.org获得)。

易失性存储器是需要功率来维持由介质存储的数据的状态的存储介质。易失性存储器的示例可包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。在存储器模块122中可使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,存储器模块122的DRAM遵守由JEDEC公布的标准,诸如双倍数据速率(DDR)SDRAM的JESD79F、DDR2 SDRAM的JESD79-2F、DDR3 SDRAM的JESD79-3F或DDR4 SDRAM的JESD79-4A(这些标准可在www.jedec.org获得)。此类标准(及类似标准)可称为基于DDR的标准,并且实现此类标准的存储器装置106的通信接口可称为基于DDR的接口。

存储器装置106可具有任何合适的形状因子。在特定实施例中,存储器装置106具有双列直插式存储器模块(DIMM)形状因子。DIMM可包括安装在电路板上的多个存储器模块122,其在所述电路板的每侧上包括电接触(即,引脚)。在各种示例中,存储器装置106可具有任何合适数量的引脚,诸如288、260、244、240、204、200或其它合适数量的引脚。在各种实施例中,存储器装置106可插入到电路板(例如,母板)上的DIMM槽中,所述电路板还包括用于CPU 102的插口。在特定实施例中,存储器装置106是非易失性DIMM(NV-DIMM),其中存储器模块122包括非易失性存储器,并且装置具有DIMM形状因子。

在特定实施例中,存储器装置106包括非易失性存储器(例如,闪速存储器、3D XPoint存储器),并且包括与DDR标准(诸如上文列出的那些标准中的任何标准)兼容的通信接口。因此,在一个示例中,CPU 102可与此类存储器装置通信,就像存储器装置包括DDR4兼容SDRAM模块一样。即,CPU存储器控制器112将使用相同的格式来与存储器装置传递命令和数据,如它将利用包括SDRAM的DDR4兼容存储器装置一样。在特定实施例中,可将存储器装置106插入到实现DDR接口的DIMM槽中。

在各种实施例中,存储器装置106可包括任何合适类型的存储器,并且不限于特定速度或技术的存储器。存储器装置106可包括要使用任何合适的通信协议(诸如基于DDR的协议、外围组件互连(PCI)、PCI高速(PCIe)、通用串行总线(USB)、串行附连SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、系统管理总线(SMBus)或其它合适的协议)与CPU存储器控制器112或I/O控制器110通信的任何合适的接口。在特定实施例中,存储器装置106可包括各自使用单独的协议与CPU存储器控制器112和/或I/O控制器110通信的多个通信接口。

存储器装置控制器118可包括要从CPU 102(例如,从存储器控制器112或I/O控制器110)接收请求、引发相对于存储器116执行请求并将与请求相关联的数据提供给CPU 102(例如,从存储器控制器112或I/O控制器110)的逻辑。控制器118还可操作以便检测和/或校正在存储器操作期间遇到的错误。在实施例中,控制器118还跟踪已经写入到特定单元(或单元的逻辑分组)的次数以便执行磨损均衡和/或以便检测单元何时接近于它们可以可靠地被写入到的估计次数。在各种实施例中,控制器118还可监测存储器装置106的各种特性(诸如温度或电压),并将相关联的统计报告给CPU 102。控制器118可在与存储器116的一个或多个管芯或电路相同或不同的管芯或电路中实现。

在各种实施例中,存储器装置106还包括地址转换引擎120。在各种实施例中,地址转换引擎120可包括在存储器装置控制器118内(例如,集成在与存储器装置控制器118相同的芯片上),或者可与存储器装置控制器118分离。地址转换引擎120包括要存储和更新存储器116的外部可寻址地址空间与物理地址空间之间的映射的逻辑。地址转换引擎120包括多个映射条目,所述多个映射条目各自将外部可寻址地址空间中的一个或多个地址映射到物理地址空间中的一个或多个地址。地址转换引擎120可包括用于存储映射条目的任何合适的存储器类型以及用于改变存储在映射条目中的值(例如,响应于来自存储器装置控制器118的请求)并从映射条目读取值(例如,以便将值提供给存储器装置控制器118以在存储器操作中使用)的任何合适的逻辑。将结合图3和图4进一步详细解释映射条目。

在各种实施例中,地址转换引擎120还用于通过不允许将坏的单元(或单元的逻辑分组)的物理地址映射到外部可寻址地址空间来防止使用坏的存储器单元(或单元的逻辑分组)。在各种实施例中,地址转换引擎120(连同存储器装置控制器118一起)还可通过对地址转换引擎120的映射的管理来提供磨损均衡。

在一些实施例中,系统100的所有或一些元件驻留在(或耦合到)相同电路板(例如,母板)上。在各种实施例中,元件之间的任何合适分区可以存在。例如,在CPU 102中描绘的元件可位于单个管芯或封装上(即,芯片上),或者CPU 102的任何元件可位于芯片外。

系统100的组件可以按任何合适的方式耦合在一起。例如,总线可将任何组件耦合在一起。总线可包括任何已知的互连,诸如多点总线、网格互连、环形互连、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议体系结构、差分总线以及射电收发器逻辑(GTL)总线。在各种实施例中,集成I/O子系统包括系统100的各种组件(诸如核114、一个或多个CPU存储器控制器112、I/O控制器110、集成I/O装置、直接存储器接入(DMA)逻辑(未示出)等)之间的点对点复用逻辑。

尽管没有描绘,但是系统100可利用电池和/或电源插座连接器和相关联的系统来接收功率。

图2示出根据某些实施例用于在无需重定位数据的情况下提供连续可寻址存储器区域的示例流程200。流程200描绘可由操作系统202、CPU存储器控制器112、存储器装置控制器118和地址转换引擎120执行的示例操作。流程中示出的元件只是示例,并且在其它实施例中,其它元件可执行描绘的操作(例如,I/O控制器110可执行CPU存储器控制器112的操作)。

在204,操作系统标识对连续可寻址存储器区域的请求。可以采用任何合适的方式生成请求。例如,可从由操作系统正运行的用户应用接收请求,或者可响应于检测到对连续可寻址存储器区域的需求(或预期未来需求)通过操作系统生成请求(例如,用户可经由操作系统请求数据分区)。在各种实施例中,请求可用于新的数据区域或用于现有区域大小的增加。请求可指示连续可寻址存储器区域的特定大小(例如,字节的数量)。在一些实施例中,请求可指示外部可寻址地址空间的地址(或以其它方式包括允许导出该地址的信息),在所述外部可寻址地址空间的地址处,连续可寻址存储器区域要开始和/或结束(例如,如果请求要扩展已经分配给名称空间、应用或其它元件的现有连续可寻址存储器区域的话)。

在206,操作系统确定使用外部可寻址地址空间的碎片整理以便分配请求的连续可寻址存储器区域。即,操作系统可确定外部可寻址地址空间不包括未使用并且足够大以便适应请求的连续可寻址存储器区域。然后,操作系统可选择外部可寻址地址空间的一个或多个区域来在外部可寻址地址空间内移动,以便为请求释放连续可寻址存储器区域。

在208,操作系统生成位置改变命令,并将命令发送给CPU存储器控制器112。位置改变命令可以指要发送给存储器装置106的、请求外部可寻址地址空间的区域(或多个区域)到外部可寻址地址空间的不同区域(或多个不同区域)的移动的命令。在各种实施例中,在外部可寻址地址空间内区域的移动可以指修改可由操作系统用来访问数据区域的(在外部可寻址地址空间中的)一个或多个地址的集合。因此,在外部可寻址地址空间内的数据区域的移动之前,可由操作系统使用第一地址集合来访问数据区域,并且在移动之后,由操作系统使用第二地址集合(不同于第一地址集合)来访问相同的数据区域。在各种实施例中,关于位置改变命令是否导致在存储器116内数据区域被物理移动(在一些实施例中这可包括维持源区域以便最终覆写)或存储器装置106是否执行将外部可寻址地址空间的一部分重新映射到物理地址空间(在没有移动存储在存储器中的底层数据的情况下)以便允许操作系统使用不同的地址集合来引用数据区域,操作系统可以是不可知的。位置改变命令可包括任何合适的信息,诸如要被移动的区域的起始地址、要被移动的区域的结束地址、要被重新映射的区域的大小(其与该区域正被移动到的新区域的大小相同)、区域正被移动到的新区域的起始地址、区域正被移动到的新区域的结束地址、促进区域位置改变的任何其它标识符、或其任何合适的组合。

在各种实施例中,操作系统或其用户可以不知道位置改变命令将触发外部可寻址地址空间和物理地址空间之间的重新映射(例如,操作系统或其用户可以以为要把在位置改变命令中标识的数据区域从存储器116的位置物理移动到存储器116的不同位置)。在另一个实施例中,操作系统可以知道位置改变命令将触发外部可寻址地址空间和物理地址空间之间的重新映射。

在各种实施例中,可通过(可以是或者可以不是操作系统的一部分的)软件驱动器生成位置改变命令,所述软件驱动器配置成将从调用驱动器的操作系统的一部分接收的通用命令(例如,要移动数据的命令)转换为与存储器装置106兼容的一个或多个命令(例如,包括由存储器装置106预期的参数的命令)。

在210,从CPU存储器控制器112发送位置改变命令到存储器装置控制器118。在一个实施例中,可通过与发送到存储器装置106的其它命令(例如,读取、写入、刷新)相同的接口发送位置改变命令。例如,基于DDR的接口的命令集合可扩展以便包括位置改变命令。在另一个实施例中,可通过与用于发送其它命令的接口(基于DDR的接口)不同的接口(例如,SMBus)发送位置改变命令。

在接收到位置改变命令之后,存储器装置控制器118确定地址转换引擎的哪些映射条目被位置改变命令影响,并且在212还确定被影响的条目的新映射值(本文中统称为“地址重新映射信息”)。在214,将地址重新映射信息发送给地址转换引擎120,所述地址转换引擎120在216实现对映射条目的改变。在218,地址转换引擎120提供地址重新映射完成的指示(在其它实施例中,存储器装置控制器118可假设,在预定时间周期已经过去之后或者如果在预定时间周期之后没有错误被接收到,那么操作成功完成)。在220,存储器装置控制器可将位置改变命令已经完成的指示提供给CPU存储器控制器112(备选地,CPU存储器控制器112可假设,在预定时间周期已经过去之后或者如果在预定时间周期之后没有错误被接收到,那么命令成功完成)。在222,CPU存储器控制器112可将已经执行位置改变命令的指示提供给操作系统202(备选地,操作系统202可假设,在预定时间周期已经过去之后或者如果在预定时间周期之后没有错误被接收到,那么命令成功完成)。

图2中描述的流程只是可在特定实施例中发生的操作和通信的代表。在其它实施例中,可执行附加操作,或者可在系统100的组件之中发送附加通信。本公开的各种实施例预期用于实现在本文中描述的功能的任何合适的信令机制。在合适的情况下,图2中示出的一些操作可重复、组合、修改或删除。备选地,在不偏离特定实施例的范围的情况下,可采用任何合适的顺序执行操作。

图3示出根据某些实施例在接收到位置改变命令之前的存储器装置106的示例状态。在描绘的实施例中,为了解释的目的,外部可寻址地址空间302和物理地址空间306包括在存储器装置106内,并且可以但是不一定对应于存储器装置106内的物理构造(例如,可经由诸如存储器116和存储器装置控制器118的存储器装置的其它元件来实现这些地址空间)。

在描绘的实施例中,存储器装置106包括外部接口304,所述外部接口304可表示任何合适的存储器通信接口,诸如上文描述的任何通信接口。通过外部接口304将外部可寻址地址空间302暴露给通过外部接口304耦合到存储器装置106的装置(例如,CPU存储器控制器112和/或I/O控制器)。如所描绘的,外部可寻址地址空间302包括两个分配的存储器区域A1和A2。A1从(外部可寻址地址空间302的)存储器地址a跨越到存储器地址b,并且A2从存储器地址c跨越到存储器地址d。因此,外部可寻址地址空间302中可用的最大连续可寻址存储器区域是从存储器地址d到存储器地址e的区域。

经由地址转换引擎120的一个或多个映射条目308A将外部可寻址地址空间的存储器区域A1映射到物理地址空间306的存储器区域A1。类似地,经由地址转换引擎的一个或多个条目308B将外部可寻址地址空间的存储器区域A2映射到物理地址空间306的存储器区域A2。在描绘的实施例中,物理地址空间306的存储器区域A1从物理存储器地址a1跨越到物理存储器地址b1,而存储器区域A2从物理存储器地址c1跨越到物理存储器地址d1。

映射条目308包括外部可寻址地址空间302中的地址的指示310和物理地址空间306中的对应地址的指示312。例如,映射条目308A包括存储器地址a的指示310A和存储器地址a1的指示312A,而映射条目308B包括存储器地址c的指示310B和存储器地址c1的指示312B。可以采用任何合适的方式表达存储器地址的指示,诸如绝对存储器地址或相对存储器地址(例如,相对于在另一个映射条目308中指示的绝对存储器地址或其它绝对存储器地址的偏移)。在各种实施例中,可显式存储或者可基于阵列或其它数据结构内的映射条目308的位置推断映射条目的地址的指示。例如,阵列的第一元素可对应于物理地址空间306的第一物理地址,并且可存储外部可寻址地址空间302中的对应地址的指示,阵列的第二元素可对应于第二物理地址(其可以是下一个最大物理地址或下一页、块或存储器单元的其它逻辑聚合的物理地址),并且可存储外部可寻址地址空间302中的对应地址的指示,依此类推。

正如上面提到的,外部可寻址地址空间302的区域和物理地址306的区域之间的映射可存储在一个或多个映射条目308中。在特定实施例中,地址转换引擎120包括固定数量的映射条目308。在此类实施例中,可为每个物理地址、为每个存储器页的第一物理地址、为每个存储器块的第一物理地址或为存储器的每个不同逻辑分组的第一物理地址创建映射条目。作为一个示例,可将存储器116划分成多个页(例如,各为4千字节),并且每个页可以具有带有该页的起始的物理地址的指示312和外部可寻址地址空间302中的对应地址的指示310的相关联映射条目308。在此类实施例中,将通过等于存储器区域中的页数的数量的映射条目来提供针对存储器区域的映射。类似地,如果映射条目308对应于另一个逻辑分组,那么可通过等于存储器区域中的特定逻辑分组的单位数的数量的映射条目来提供针对存储器区域的映射。

在另一个实施例中,地址转换引擎120包括动态数量的映射条目308。例如,为了存储区域之间的映射,可创建一个映射条目以便映射这些区域的起始地址(例如,如由映射条目308a所描绘),并且可创建另一个映射条目以便映射区域的结束地址(例如,附加映射条目可将存储器地址b映射到存储器地址b1)。在备选实施例中,可连同指示区域的长度的存储值一起使用映射区域的起始或结束的单个映射条目。在此类实施例中,可基于起始或结束地址的映射条目以及指示目标地址所定位在的区域中位置(相对于起始或结束地址)的偏移来动态地演算数据区域内的地址的地址映射。因此,在一些实施例中,只将会为每个分配的存储器区域创建一个或两个映射条目。尽管已经提供了各种示例,但是地址转换引擎120可包括以任何合适的方式将外部可寻址地址空间302映射到物理地址空间306的任何合适数量的映射条目。

如之前所描述,外部可寻址地址空间302中的最大未分配连续可寻址存储器区域从地址d跨越到地址e。如果操作系统标识要分配大于e-d的连续可寻址存储器区域的请求,那么操作系统可发布位置改变命令以便适应请求(假设有足够的未分配存储器可用于满足请求)。作为示例,命令可指导存储器装置106在外部可寻址地址空间内移动区域A2以便在区域A1的结束处开始。

图4示出根据某些实施例在已经处理位置改变命令之后的存储器装置106的示例状态。在各种实施例中,外部可寻址地址空间302内的移动可通过改变包括对要移动的外部可寻址地址空间的区域内的地址(即,从c到d)的指示的每个映射条目308和标识新区域内的地址(即,从b+1到b+1+d-c)的每个映射条目308中的映射来实现。为简单起见,只描绘单个映射条目的重新映射。即,在重新映射之后,映射条目308B的地址的指示310B现在指地址b+1而不是地址c。在各种实施例中,可采用类似方式更新其它映射条目以便实现整个A2区域和由A2区域取代的区域的重新映射。在各种实施例中,由被移动的区域取代的(一个或多个)区域可在外部可寻址地址空间302内移动到之前由被移动的区域占用的区域。

在描绘的实施例中,存储器区域A2现在可经由外部可寻址地址空间302使用地址b+1至b+1+d-c来寻址,尽管底层数据(A2 DATA)的物理位置还没有改变,如由物理地址空间306中没有变化而证明的。在外部可寻址地址空间302内的区域A2的移动之后,最大未分配连续可寻址存储器区域是e - (b+1+d-c),即,从A2的结束到外部可寻址地址空间302的结束的区域。因此,现在可满足上文引入的大于e-d的连续可寻址存储器区域的请求分配的假设请求。

图5示出根据某些实施例用于发布一系列改变位置命令的示例流程500。该流程可由任何合适的硬件和/或软件执行,诸如由处理器108执行的操作系统或有权访问存储器装置116的外部可寻址地址空间的其它应用。在502,标识对连续可寻址存储器区域的请求。在504,确定外部可寻址地址空间中是否有足够大以满足请求的连续可寻址区域可用。如果存在这样的区域,那么在516分配请求的区域。如果不存在这样的区域,那么在506确定可用于分配的存储器的量是否小于请求中的连续区域的大小。在特定实施例中,可将外部可寻址地址空间中的存储器的未分配区域的大小加在一起,并将所得总和与请求的连续区域的大小进行比较。如果可用存储器小于请求的大小,那么在508拒绝请求。

如果可用存储器大于请求的大小,那么在510标识一个或多个数据区域以用于重新映射。可采用任何合适的方式标识此类区域。例如,在一个实施例中,标识的区域包括应当在外部可寻址地址空间内移动的每个数据区域,以便使各种分配的区域彼此连续,从而使外部可寻址地址空间中的未分配连续可寻址存储器区域的大小最大化。在另一个实施例中,选择标识的区域,使得要移动最少数量的区域,以便提供请求的连续可寻址存储器区域。在其它实施例中,可使用其它方法来标识区域。

在512,对于在510标识的区域发布位置改变命令,从而导致那个存储器区域的重新映射。在514,确定是否要在外部可寻址地址空间内移动至少一个附加区域。如果是,那么在512发布另一个位置改变命令。如果否,那么在516根据请求分配连续可寻址存储器区域。

在合适的情况下,图5中示出的一些操作可重复、组合、修改或删除,并且可向流程增加附加操作。作为一个示例,在某些实施例中,单个位置改变命令可指定要被移动的多个区域(和相关联的参数),并且因此,可将所有标识的区域包括在发送给存储器装置106的单个位置改变命令中。另外,在不偏离特定实施例的范围的情况下,可以采用任何合适的顺序执行操作。

图6示出根据某些实施例用于处理改变外部可寻址地址空间内的数据位置的命令的示例流程600。流程600的各种操作可通过存储器装置106的任何合适的逻辑来执行,诸如存储器装置控制器118和/或地址转换引擎120。

在602,接收位置改变命令。在604,标识受位置改变命令影响的映射条目。在606,通过例如改变外部可寻址地址空间302的地址的指示310或物理地址空间306的对应地址的指示312来修改地址转换引擎120的映射条目。在608,确定是否要更新附加映射条目。如果是,那么在606更新另一个映射条目。如果否,那么发送(例如,向CPU 102)位置改变命令成功完成的指示。

在合适的情况下,图6中示出的一些操作可重复、组合、修改或删除,并且可向流程增加附加操作。另外,在不偏离特定实施例的范围的情况下,可以采用任何合适的顺序执行操作。

设计可经历从创建到仿真到制造的各种阶段。表示设计的数据可以采用多种方式表示设计。首先,如在仿真中有用的,可使用硬件描述语言(HDL)或另一种功能描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,在某个阶段,大多数设计达到表示硬件模型中的各种装置的物理放置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定对于要产生集成电路的掩模在不同掩模层上存在或缺少各种特征的数据。在一些实现中,可以采用诸如图形数据系统II(GDS II)、开放布线图系统互换标准(OASIS)或类似格式的数据库文件格式存储此类数据。

在一些实现中,基于软件的硬件模型和HDL以及其它功能描述语言对象可包括寄存器传递语言(RTL)文件和其它示例。此类对象可以是机器可解析的,以使得设计工具可接受HDL对象(或模型),为了描述的硬件的属性解析HDL对象,并从对象确定物理电路和/或片上布局。设计工具的输出可用于制造物理装置。例如,设计工具可从HDL对象确定各种硬件和/或固件元件的配置,诸如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、织构拓扑、连同将被实行以便实现在HDL对象中建模的系统的其它属性。设计工具可包括用于确定片上系统(SoC)和其它硬件装置的拓扑和织构配置的工具。在一些实例中,可使用HDL对象作为用于开发可通过制造设备用来制造描述的硬件的模型和设计文件的基础。实际上,可提供HDL对象本身以作为制造系统软件的输入,从而产生描述的硬件。

在设计的任何表示中,可将数据存储在任何形式的机器可读介质中。存储器或诸如盘的磁或光存储设备可以是要存储经由光或电波传送的信息的机器可读介质,所述光或电波被调制或以其它方式生成以便传送此类信息。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传输而言,制作了新副本。因此,通信提供商或网络提供商可在有形、机器可读介质上至少临时地存储实施本公开的实施例的技术的物品,诸如编码到载波中的信息。

如本文中所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括诸如微控制器的硬件,所述硬件与用于存储适于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,提到模块是指特定配置成识别和/或执行要保留在非暂时性介质上的代码的硬件。此外,在另一个实施例中,模块的使用是指包括代码的非暂时性介质,该代码特别适于由微控制器执行以便执行预定操作。并且如可推断的,在又一个实施例中,术语“模块”(在这个示例中)可以指微控制器和非暂时性介质的组合。通常,示出为分开的模块边界普遍变化且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时潜在地保留一些独立硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器或其它硬件(诸如可编程逻辑装置)的硬件。

“逻辑”(例如,如可用于实现各种组件,诸如处理器108、I/O控制器110、CPU存储器控制器112、存储器装置控制器118、地址转换引擎120、存储器模块122、外部接口304、或系统100的其它组件或如在本申请中对逻辑的其它提及中发现的其它组件)可以指用于执行一个或多个功能的硬件、固件、软件和/或其每个的组合。在各种实施例中,逻辑可包括可操作以便执行软件指令的微处理器或其它处理元件、诸如专用集成电路(ASIC)的离散逻辑、诸如现场可编程门阵列(FPGA)的程序化逻辑装置、包含指令的存储器装置、逻辑装置的组合(例如,如将在印刷电路板上找到的一样)或其它合适的硬件和/或软件。逻辑可包括一个或多个门或其它电路组件。在一些实施例中,逻辑还可全部作为软件实施。软件可作为在非暂时性计算机可读存储介质上记录的软件包、代码、指令、指令集和/或数据实施。固件可作为在存储器装置中硬编码(例如,非易失性)的代码、指令或指令集和/或数据实施。

在一个实施例中,短语“用于”或“配置成”的使用是指布置、合并、制造、要约销售、导入和/或设计设备、硬件、逻辑或元件以便执行指定或确定的任务。在这个示例中,如果设备或其元件设计成、经过耦合和/或经过互连以执行指定任务,那么不正在操作的该设备或其元件仍“配置成”执行所述指定任务。作为纯说明性示例,逻辑门可在操作期间提供0或1。但是,“配置成”对时钟提供启用信号的逻辑门不包括可提供1或0的每个潜在逻辑门。而是,该逻辑门是以在操作期间1或0输出要启用时钟的某个方式耦合的逻辑门。再次注意,术语“配置成”的使用不需要操作,而是集中在设备、硬件和/或元件的潜伏状态上,其中在潜伏状态中,设备、硬件和/或元件设计成在设备、硬件和/或元件正在操作时执行特定任务。

此外,在一个实施例中,短语“能够”和/或“可操作以便”的使用是指以使得能够以指定方式使用设备、逻辑、硬件和/或元件的方式设计的某个设备、逻辑、硬件和/或元件。如上文所注意,在一个实施例中,“用于”、“能够”和/或“可操作以便”的使用是指设备、逻辑、硬件和/或元件的潜伏状态,其中设备、逻辑、硬件和/或元件不正在操作,但是以使得能够以指定方式使用设备的方式设计。

如本文中所使用,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑等级、逻辑值或逻辑的值的使用又称为1和0,其简单地表示二进制逻辑状态。例如,1是指高逻辑等级,并且0是指低逻辑等级。在一个实施例中,诸如晶体管或闪速单元的存储单元可以能够保持单个逻辑的值或多个逻辑的值。但是,已经使用计算机系统中的值的其它表示。例如,十进制数字10还可以表示为1010的二进制值和十六进制字母A。因此,值包括能够保留在计算机系统中的信息的任何表示。

此外,可通过值或值的部分来表示状态。作为示例,诸如逻辑1的第一值可表示默认或初始状态,而诸如逻辑0的第二值可表示非默认状态。另外,在一个实施例中,术语‘重置’和‘设置’分别指默认和更新值或状态。例如,默认值潜在地包括高逻辑值(即重置),而更新值潜在地包括低逻辑值,即设置。注意,可利用值的任何组合来表示任何数量的状态。

上文阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或传送)由诸如计算机或电子系统的机器可读取的形式的信息的任何机制。例如,非暂时性机器可访问介质包括:随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器装置;电存储装置;光存储装置;声存储装置;用于保留从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等等,其要与可从其中接收信息的非暂时性介质有所区别。

用于将逻辑进行编程以便执行本公开的实施例的指令可存储在诸如DRAM、高速缓存、闪速存储器或其它存储设备的系统中的存储器内。此外,可经由网络或通过其它计算机可读介质分发指令。因此,机器可读介质可包括用于存储或传送以可由机器(例如,计算机)读取的形式的信息的任何机制,但不限于软盘、光盘、致密盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或在通过互联网经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)传送信息中使用的有形、机器可读存储设备。因此,计算机可读介质包括适合用于存储或传送以可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。

各种实施例可提供一种设备、系统、基于硬件和/或软件的逻辑、或非暂时性机器可读介质(包括用于表示结构的信息,在制造时要配置成)包括存储器装置控制器,所述存储器装置控制器要:接收包括存储在存储器中的数据区域的标识和要改变数据区域的位置的请求的命令;以及请求多个条目的至少一个条目的修改,所述多个条目要将存储器的外部可寻址地址空间映射到存储器的物理地址空间,所述至少一个条目的修改要在无需在存储器内移动数据区域的情况下,改变外部可寻址地址空间和物理地址空间之间的数据区域的映射。

在至少一个示例中,要通过经由外部可寻址地址空间寻址存储器的操作系统来生成命令。在至少一个示例中,数据区域的标识包括外部可寻址地址空间的一个或多个地址。在至少一个示例中,数据区域的标识包括数据区域的长度。在至少一个示例中,命令还包括数据区域的位置应该改变到的外部可寻址地址空间内的位置的标识。在至少一个示例中,设备还包括存储器。在至少一个示例中,设备还要包括要维持将存储器的外部可寻址地址空间映射到存储器的物理地址空间的多个条目和响应于来自存储器装置控制器的请求而修改多个条目中的至少一个条目的地址转换引擎。在至少一个示例中,设备具有双列直插式存储器模块(DIMM)形状因子。在至少一个示例中,设备要通过基于双倍数据速率(DDR)的接口与中央处理单元对接。在至少一个示例中,所述多个条目中的条目要在存储器的外部可寻址地址空间到存储器的物理地址空间之间映射存储器的数据页。

各种实施例可提供一种方法,所述方法包括:接收包括存储在存储器中的数据区域的标识和改变数据区域的位置的请求的命令;以及请求多个条目中的至少一个条目的修改,所述多个条目要将存储器的外部可寻址地址空间映射到存储器的物理地址空间,所述至少一个条目的修改要在无需在存储器内移动数据区域的情况下,改变在外部可寻址地址空间和物理地址空间之间的数据区域的映射。

在至少一个示例中,要通过经由外部可寻址地址空间寻址存储器的操作系统来生成命令。在至少一个示例中,数据区域的标识包括外部可寻址地址空间的一个或多个地址。在至少一个示例中,数据区域的标识包括数据区域的长度。在至少一个示例中,命令还包括数据区域的位置应当改变到的外部可寻址地址空间内的位置的标识。在至少一个示例中,该方法还包括:维持将存储器的外部可寻址地址空间映射到存储器的物理地址空间的多个条目;以及响应于来自存储器装置控制器的请求,修改所述多个条目中的至少一个条目。在至少一个示例中,所述多个条目中的条目要在存储器的外部可寻址地址空间到存储器的物理地址空间之间映射存储器的数据页。在至少一个示例中,该方法还包括:标识在外部可寻址地址空间内分配特定大小的存储器区域的请求;确定外部可寻址地址空间中的最大可用连续可寻址存储器区域小于该特定大小;以及响应于要分配该特定大小的存储器区域的请求,生成命令。在至少一个示例中,命令标识要在外部可寻址地址空间内移动的多个存储器区域。在至少一个示例中,该方法还包括通过基于双倍数据速率(DDR)的接口与中央处理单元对接。在至少一个示例中,该方法还包括通过与接收包括数据区域的标识的命令所通过的通信接口不同的通信接口来接收读取命令。

各种实施例可提供一种系统,该系统包括要由处理器执行的操作系统、包括存储器的存储器装置以及存储器装置控制器,所述存储器装置控制器要:从操作系统接收命令,该命令包括存储在存储器中的数据区域的标识和要改变数据区域的位置的请求;以及请求多个条目中的至少一个条目的修改,所述多个条目要将存储器的外部可寻址地址空间映射到存储器的物理地址空间,所述至少一个条目的修改要在无需在存储器内移动数据区域的情况下,改变在外部可寻址地址空间和物理地址空间之间的数据区域的映射。

在至少一个示例中,其中操作系统要:标识在外部可寻址地址空间内分配特定大小的存储器区域的请求;确定外部可寻址地址空间中的最大可用连续可寻址存储器区域小于该特定大小;以及响应于分配该特定大小的存储器区域的请求,生成命令。在至少一个示例中,数据区域的标识包括外部可寻址地址空间的一个或多个地址。在至少一个示例中,数据区域的标识包括数据区域的长度。在至少一个示例中,命令还包括数据区域的位置应当改变到的外部可寻址地址空间内的位置的标识。

各种实施例可提供一种设备,该设备包括:用于接收包括存储在存储器中的数据区域的标识和要改变数据区域的位置的请求的命令的部件;以及用于请求多个条目中的至少一个条目的修改的部件,所述多个条目要将存储器的外部可寻址地址空间映射到存储器的物理地址空间,所述至少一个条目的修改要在无需在存储器内移动数据区域的情况下,改变在外部可寻址地址空间和物理地址空间之间的数据区域的映射。

在至少一个示例中,要通过经由外部可寻址地址空间寻址存储器的操作系统来生成命令。在至少一个示例中,数据区域的标识包括外部可寻址地址空间的一个或多个地址。在至少一个示例中,数据区域的标识包括数据区域的长度。在至少一个示例中,命令还包括数据区域的位置应当改变到的外部可寻址地址空间内的位置的标识。

遍及本说明书提到的“一个实施例”或“实施例”表示,结合该实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。因此,遍及本说明书中各种地方中的短语“在一个实施例中”或“在实施例中”的出现不一定全部指相同实施例。此外,可在一个或多个实施例中以任何合适的方式组合该特定特征、结构或特性。

在以上说明书中,参考特定示意性实施例已经给出了详细描述。但是,将显而易见,在不偏离如随附权利要求中阐述的本公开的更广泛的精神和范围的情况下,可对其进行各种修改和改变。因此,说明书和附图视为以说明性意义而不是限制性意义。此外,上文使用实施例和其它示意性语言不一定指相同实施例或相同示例,而是可以指不同且独特的实施例以及潜在相同的实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1