计算方法以及具有持久性存储器的设备与流程

文档序号:11450152阅读:232来源:国知局
计算方法以及具有持久性存储器的设备与流程

相关申请

本申请要求于2014年12月11日提交的题为“computingmethodandapparatuswithpersistentmemory(计算方法以及具有持久性存储器的设备)”的美国专利申请14/567,662的优先权。

本公开的多个实施例涉及计算领域,并且特别是涉及一种计算方法以及具有持久性存储器的设备。



背景技术:

本文所提供的背景描述是为了一般地呈现本公开的上下文的目的。除非本文另外指出,否则本节中所描述的材料对于本申请的权利要求书而言并非现有技术,并且不因为包括在本节中而被承认是现有技术。

易失性存储器(例如,静态随机存取存储器(sram)、动态随机存取存储器(dram)等)在等待时间和带宽方面通常都比持久存储装置(例如,磁盘、闪存等)快多个数量级。然而,易失性存储器可能以更高的成本/位实现,并且因此与持久性存储器相比以更有限的容量实现。鉴于易失性存储器相对于持久性存储器的这些局限性和优势,计算系统通常将易失性存储器和持久性存储器组织成分层架构。在这样的架构中,易失性存储器可以与计算装置的中央处理单元(cpu)(例如,经由存储器总线)直接耦合,并且因此可以由cpu的指令直接访问。另一方面,持久性存储装置可以通过输入/输出(i/o)控制器(例如,小型计算机系统接口(scsi)、串行高级技术附件(sata)、外围组件互连(pci)-express等)与cpu耦合。其结果是,易失性存储器可能在cpu的地址域中,但持久性存储装置可能位于cpu的i/o控制器的地址域中。这样的配置可能需要操作系统来分别将易失性存储器和持久存储装置作为不同的易失性域和存储域进行管理。这可能导致某些低效率和额外的进程,例如,当将数据项从持久性存储器加载到易失性存储器以供cpu访问时。

附图说明

图1描绘了根据本公开的各个实施例的具有持久性存储器的说明性计算系统,所述持久性存储器具有被动态地分配为易失性类型存储器或持久性类型存储器的区域。

图2展示了根据本公开的各个实施例的用于将持久性存储器的区域动态地分配为易失性类型存储器的示例系统。

图3示出了根据本公开的各个实施例的具有动态分配的持久性/易失性存储器页的示例存储器配置。

图4示出了根据本公开的各个实施例的用于将持久性存储器的区域动态地分配为持久性类型存储器和易失性类型存储器的示例进程流程。

图5是根据本公开的各个实施例的示例计算装置的示意图。

图6展示了具有被配置成用于实践与上述过程相关联的操作中的全部操作或所选操作的指令的示例非瞬态计算机可读存储介质。

具体实施方式

本文描述了与具有持久性存储器相关联的方法、计算机可读介质、以及计算装置。在以下详细描述中,参考形成其一部分并且通过可实践的说明实施例示出的附图,其中,相同的标号指示相同的部件。应当理解,可以在不脱离本公开的范围的情况下利用其他实施例并且可以进行结构或逻辑上的改变。因此,下面的详细说明不应被认为具有限制意义,并且实施例的范围由所附权利要求书及其等效物限定。

可以采用对理解要求保护的主题最有帮助的方式来将各种操作依次描述为多个分立动作或操作。然而,描述的顺序不应被解释为暗示这些操作一定是顺序相关的。具体地,可以不按所呈现的顺序来执行这些操作。可以按与所描述的实施例不同的顺序来执行所描述的操作。可以执行各种附加的操作和/或可以在附加实施例中省略所描述的操作。

为了本公开的目的,短语“a和/或b”是指(a)、(b)或(a和b)。为了本公开的目的,短语“a、b和/或c”是指(a)、(b)、(c)、(a和b)、(a和c)、(b和c),或(a、b和c)。本说明可能使用短语“在实施例中(inanembodiment)”或“在多个实施例中(inembodiments)”,这些短语可以各自是指相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例使用的术语“包括(comprising)”、“包括(including)”、“具有(having)”等是同义的。

图1描绘了根据本公开的各个实施例的具有持久性存储器的计算系统100的说明性部分,其中,所述持久性存储器的多个区域可以被动态地分配为易失性类型存储器或持久性类型存储器。计算系统100可以包括中央处理单元(cpu)102。如所描绘的,计算系统100可以具有2级存储器(2lm)配置,然而在不脱离本公开的范围的情况下可以利用其他存储器配置。2lm配置可以包括用软件透明的近存储器高速缓存(nearmemorycache)104表示的第一级存储器以及用持久性存储器106表示的第二级存储器(其在这样的配置中还可称作主存储器)。

如本文所使用的,持久性存储器可以指具有传统易失性存储器(例如,动态随机存取存储器(dram))和常规持久性存储装置(例如,磁盘)的特性的介质。像易失性存储器一样,持久性存储器可以是可字节寻址的,利用常规持久性存储装置,这是不可能的。此外,持久性存储器可以能够实现比常规存储装置更接近易失性存储器的数据读取和写入速度。然而,与常规持久性存储装置一样,存储在持久性存储器中的数据可以是持久性的或非易失性的。如本文所使用的,持久性和非易失性可以被视为同义词,除非上下文另有明确指示。如此,虽然持久性存储器的底层介质可以是持久性的,但除了持久性数据之外,持久性存储器也可用于代替易失性存储器来存储易失性数据。易失性数据的示例可以包括但不限于:关于计算系统100的操作状态的数据。易失性数据如此命名,是因为它是在计算系统100的复位或关闭(断电)时可能丢失的数据。在另一方面,持久性数据可以指代即使在计算系统100可被复位或关闭(断电)时也可能需要保留的数据。持久性存储器106可以利用存储器技术形成,所述存储器技术包括但不限于:相变存储器(pcm)、忆阻器、自旋转移转矩随机存取存储器(stt-ram)等。

持久性存储器106可以经由存储器总线(未示出)与cpu102耦合。其结果是,持久性存储器106可以是cpu102可寻址物理地址空间的一部分。因为持久性存储器106可以是cpu102可寻址物理地址空间的一部分,所以可以由硬件平台(例如,基本输入/输出系统(bios))将所有持久性存储器106指定为能够存储由易失性区域108和持续区域110描绘的易失性数据和持久性数据两者。在多个实施例中,区域可以指代多个存储器页。虽然易失性区域108和持久性区域110可以被描绘为持久性存储器106的不相交区域,但是应当理解,这仅仅是为了说明的目的,并且在一些实施例中,易失性区域108可以包括与持久性区域110的持久性类型存储器页一起散布的易失性类型存储器页。

将所有持久性存储器106指定为能够存储易失性数据和持久性数据两者可以使得计算系统100的由cpu102操作的系统软件(例如,图2的系统软件202)能够接收并服务来自可由cpu102执行的一个或多个应用或进程的易失性和持久性存储器分配请求。响应于这样的分配请求,系统软件可以将持久性存储器106的多个存储器页或区域动态地分配为易失性类型存储器页或区域、或持久性类型存储器页或区域。如此,系统软件可以能够动态地增加或缩小cpu102可用的易失性类型存储器页。如本文所使用的,易失性类型存储器页可以指代响应于易失性存储器分配请求而分配的或者为这样的分配请求而保留的持久性存储器106的存储器页,而持久性类型存储器页可以指代响应于持久性存储器分配请求而分配的或者为这样的分配请求而保留的持久性存储器的存储器页。

这样的动态分配请求可以由系统软件通过系统软件生成的元数据进行服务。元数据可以包括存储器类型指示符,所述存储器类型指示符可以将持久性存储器106的所分配的每个存储器页标识为易失性类型页或持久性类型页。所述元数据还可以使得持久性类型存储器页能够动态转换成易失性类型存储器页,反之亦然。可以实现这种动态转换,而不需要将数据从持久性类型页物理地复制到易失性类型页,反之亦然。在一些实施例中,可以仅通过将元数据的存储器类型指示符从一种存储器类型改变为另一种存储器类型来实现这样的动态转换。

使持久性类型存储器页能够动态转换为易失性类型存储器页(反之亦然)可以使得能够通过将数据从常规持久性存储装置复制到常规易失性存储器以使数据可由cpu102访问或反之以释放易失性存储器或使易失性数据持久而降低所消耗的功率。此外,因为可以减少对数据的复制,所以可以相应地减少对存储器中每个位置的写操作的次数。由于对某些类型的存储器介质可承受的写操作的次数的物理限制,这种写操作减少可以增加底层存储器介质的寿命。这样的配置的另一优点是,因为易失性类型存储器和持久性类型存储器共存在相同的底层介质上、并且可以从一种类型动态地转换为另一种类型,所述可以对易失性类型存储器页和持久性类型存储器页使用单个加密方案。

在多个实施例中,因为持久性类型存储器位于cpu102的可寻址物理地址空间中,所述cpu102可以直接访问持久性类型存储器页内的数据,而不需要经过i/o控制器访问持久性类型存储器页。如此,正在由cpu102执行的应用或进程可以无需利用os的存储堆栈(例如,块驱动器和/或文件系统)来访问持久性类型页,并且可以能够直接访问持久性类型页。为了实现这一点,在一些实施例中,例如,用于持久性存储器106的物理地址可以被加载到应用的页表中,以使cpu102能够直接访问持久性类型存储器页。这将在下文参考图2和3以更多细节进行讨论。

尽管在此描述的是2lm配置,但是应当理解,也可以使用其他存储器配置。例如,在其他实施例中,计算系统100可以包括单级存储器(1lm)配置,所述配置可以包括可用于存储易失性数据的作为主存储器的不同易失性存储器(例如,dram)以及可用于存储持久性数据的持久性存储器106。然而,如上所述,因为持久性存储器106还可以用于存储易失性数据,所以系统软件可以被配置为用于在接收到不能由易失性存储器进行服务的易失性存储器分配请求的情况下将持久性存储器106的一部分分配为易失性类型存储器。如此,持久性存储器106可以充当主存储器的溢出(overflow)。在又其他实施例中,计算系统100可以仅包括持久性存储器106,而没有任何易失性存储器或近存储器高速缓存。

图2展示了根据本公开的各个实施例的具有持久性存储器的示例系统200。所述系统可以包括由一个或多个处理器(例如,图1的cpu102或图5的(多个)处理器502)执行的多个应用或进程(例如应用1和2)。应用1和2可以分别利用存储器页表1和2(以下简称为页表)来访问存储在持久性存储器模块212上的数据。页表1和2可以提供应用1和2的逻辑存储器与存储在持久性存储器模块212中的数据的物理存储器地址之间的映射。例如,页表1和2可以由系统软件202进行管理。在实施例中,系统软件202可以是os或虚拟机监视器(vmm)的一部分。系统软件202可以进而与文件系统204通信地耦合,以利用文件系统204访问持久性类型分配区域210和页表1和2来管理页表1和2。

系统软件202可以被配置为用于从应用1和2接收易失性和持久性存储器分配请求。响应于存储器分配请求,系统软件202可以将持久性存储器模块212的存储器页动态地分配为易失性类型存储器页或持久性类型存储器页。如此,系统软件可以能够动态地增加或缩减所述一个或多个应用可用的易失性类型存储器的量。

如以上参考图1所讨论的,这样的动态分配可以由系统软件202通过由系统软件202生成的元数据进行服务。元数据可以包括存储器类型指示符,所述存储器类型指示符可以将持久性存储器模块212的所分配的每个存储器页标识为易失性类型页或持久性类型页。所述元数据还可以使得持久性类型存储器页能够动态转换成易失性类型存储器页,反之亦然。在一些实施例中,可以仅通过将元数据的存储器类型指示符从一种存储器类型改变为另一种存储器类型来实现这样的动态转换。

在一些实施例中,系统软件202可以被配置为用于至少将持久性存储器模块212的存储器页的一个子集初始化为持久性类型存储器页以及将持久性存储器模块212的存储器页的一个子集初始化为易失性类型存储器页。在其他实施例中,系统软件202可以被配置为用于将持久性存储器模块212的所有可用存储器页初始化为持久性存储器页,并且可以响应于易失性存储器分配请求而通过将持久性类型存储器页转换为易失性类型存储器页来将持久性存储器模块的存储器页动态地分配为易失性类型存储器页。此外,系统软件202可以被配置为用于响应于复位过程或关闭过程而释放易失性类型存储器页以用于重新分配,以复制常规易失性存储器(例如,dram)的易失性。

文件系统204可以提供持久性类型分配区域210对应用1和2的访问。应当理解,文件系统204仅仅意在表示一种用于以传统方式访问持久性类型分配区域210的机制。文件系统204可以表示任何传统持久性存储管理类型。

应用1可以被配置为用于基于分配是易失性还是持久性的以两种不同的方式访问持久性类型存储器模块212。例如,被配置为利用两种不同的访问方法(一种访问方法用于易失性类型存储器(例如,dram)并且另一种访问方法用于持久性存储装置(例如,磁盘))的传统应用可以利用这样的配置。然而,因为系统200包括持久性存储器模块212,所以这种单一介质类型可以包含易失性类型分配和持久性类型分配两者。如此,无论应用1所使用的访问方法如何,对易失性数据和持久性数据两者的访问可以通向持久性存储器模块212。例如,如所描绘的,应用1可以经由页表1访问持久性存储器模块212的易失性类型分配区域208,并且可以经由系统软件202和文件系统204访问持久性类型分配区域210。为了实现这一点,系统软件202可以配置有暴露于应用1的多个传统应用编程接口(api),以使得应用1能够在系统200中正常运作,而无需更新或调整用于系统200的应用1的底层代码。

除了上面讨论的传统api之外,系统软件202还可以将可被配置为进一步优化这些应用的性能的附加api’暴露于应用。例如,系统软件202可以暴露包括动态存储器转换请求类型的存储抽象,以允许多个应用将多个易失性类型页动态地转换为持久性类型页,并且反之亦然。附加api’还可以使应用能够将多个持久性类型页加载到页表中以供所述应用直接访问。这样的配置由应用2描绘出。如所描绘的,应用2能够经由页表2访问易失性类型分配区域208和持久性类型分配区域210。这可以通过利用附加api’将多个持久性类型存储器页加载到页表2中来实现。参考图3描绘了这样的页表。

此外,在一些实施例中,诸如应用1或2的应用可以被配置为用于利用易失性存储器分配原语(例如,“malloc_ip”),所述易失性存储器分配原语在某些方面可以与malloc相似。应当理解,malloc_ip仅用于说明性目的,并且这样的易失性存储器分配原语可以通过任何其他名称调用。通过调用malloc_ip,所述应用可以使系统软件202向所述应用分配易失性类型存储器页,并且向系统软件202指示所述应用可以旨在稍后保存易失性类型分配内所包含的数据而不是释放它。在将数据写入易失性类型分配之后,所述应用可以请求使数据变为持久性,例如通过调用对系统软件202的调用来将易失性类型分配内所包含的数据转换为持久性类型分配,连同文件的名称/路径以保存数据。代替将数据复制到指定的文件/对象,系统软件202可以简单地将易失性类型存储器页转换为持久性类型存储器页,如本文别处所讨论的,以及将经转换的存储器页与文件/对象名称相关联。作为示例,以上所讨论的配置可以用于支持可将文件从网络直接下载到持久性类型分配区域210的操作。

图3示出了根据本公开的各个实施例的具有动态分配的持久性和易失性存储器页的示例存储器访问配置300。如所描绘的,存储器配置300可以包括描绘由应用(例如,图2的应用1或2)使用的多个连续存储器页的逻辑存储器302。页表304可以使逻辑存储器302的存储器页与物理存储器306的物理存储器位置相关。可替代地,物理存储器306的物理存储器位置可以称为物理存储器帧。如本文所使用的,物理存储器306可以指代多个持久性存储器模块(例如,图1的持久性存储器106或图2的多个持久性存储器模块212)。如所描绘的,页表304可以加载有描述这些单独页的元数据。例如,如所描绘的,页表304可以包括包含‘v’或‘p’的一列,‘v’可以将对应的存储器位置指定为易失性类型存储器页,‘p’可以将对应的存储器位置指定为持久性类型存储器页。此外,关于单独页的分配类型的元数据可以被存储在物理存储器306的保留位置(例如,v/p元数据308)中。在装置引导过程期间或在装置关闭过程期间,系统软件(例如,图2的系统软件202)可以访问所述保留位置。例如,被分配为易失性类型存储器页的存储器页可以在关闭过程期间被释放以便重新分配,而被分配为持久性的存储器页可能需要维持。虽然v/p元数据308被描绘为聚合到单个位置中,但是应当理解,v/p元数据308可以被划分成两个或更多个元数据。例如,引用易失性类型存储器页的易失性元数据和引用持久性类型存储器页的持久性元数据可以被维持在多个分开的元数据位置中。在另一示例中,易失性/持久性元数据可以通过物理存储器位置进行分布,使得每个物理存储器位置可以具有其中包含的元数据,所述元数据将其中存储的数据描述为易失性类型数据或持久性类型数据。应当理解,本公开考虑到v/p元数据308的任何格式和/或位置。

图4展示了根据本公开的各个实施例的用于由计算装置动态地分配持久性存储器的示例性进程流程400。进程流程400可以由例如设置在计算装置上的图2的系统软件202来执行。进程流程400可以在框402处开始,在所述框中可以由计算装置的系统软件从在计算装置上执行的一个或多个应用或进程接收存储器分配请求。在一些实施例中,这样的存储器分配请求可以由一个或多个应用程序编程接口(api)接收,api通过系统软件暴露于所述一个或多个应用程序或进程。

在框404处,系统软件可以判定分配请求是用于持久性类型分配还是用于易失性类型分配。在确定分配请求用于持久性类型分配的多个实施例中,进程可以进行到框406。在确定分配请求是易失性类型分配的多个实施例中,进程可以进行到框418。

在框406处,可以判定未分配的持久性类型存储器是否可用。如果未分配的持久性类型存储器是可用的,则所述进程可以进行到框414,在所述框中可以分配所述未分配的持久性类型存储器(例如,通过更新文件系统的文件分配表)以满足存储器分配请求,此后,所述进程可以在框416处结束。然而,如果未分配的持久性类型存储器是不可用的,则所述进程可以从框406进行到框408。

在框408处,可以判定未分配的易失性类型存储器是否可用。如果未分配的易失性类型存储器是可用的,则所述进程可以进行到框412,在所述框中未分配的易失性类型存储器可以被转换为持久性类型存储器。然而,如果未分配的易失性类型存储器是不可用的,则所述进程可以从框408进行到框410。在框410处,系统软件可以释放易失性类型存储器。这可以通过例如通过将可能不再使用的易失性类型存储器解除分配来实现。例如,如果易失性类型存储器所分配给的应用或进程不再活动,则可以发生这样的情况。一旦易失性类型存储器已经被释放,进程就可以进行到框412。在框412处,可以将所释放的易失性类型存储器转换成持久性类型存储器以使持久性类型存储器可用于满足分配请求。如以上所讨论的,这可以通过操控与所释放的易失性类型存储器相关联的元数据来实现。

一旦持久性类型存储器可用于满足存储器分配请求,就可以分配持久性类型存储器(例如,通过更新文件系统的文件分配表)。一旦已经满足了分配请求,所述进程可以进行到框416,在所述框中进程可以结束。

返回到框404,如果存储器分配请求是用于易失性类型存储器的分配,则所述进程可以进行到框418。在框418处,可以判定未分配的易失性类型存储器是否可用。如果未分配的易失性类型存储器是可用的,则所述进程可以进行到框424,在所述框中可以分配所述未分配的易失性类型存储器以满足存储器分配请求(例如,通过更新与做出存储器分配请求的应用或进程相关联的页表),此后,所述进程可以在框416处结束。然而,如果未分配的易失性类型存储器是不可用的,则所述进程可以从框418进行到框420。

在框420处,可以判定未分配的持久性类型存储器是否可用。如果未分配的持久性类型存储器是可用的,则所述进程可以进行到框422,在所述框中未分配的持久性类型存储器可以被转换为易失性类型存储器,这能够以与本文别处描述的相类似的方式来实现。然而,如果未分配的持久性类型存储器是不可用的,则所述进程可以从框420进行到框410。在框410处,系统软件可以释放易失性类型存储器。这可以通过例如通过将可能不再使用的易失性类型存储器解除分配来实现。例如,如果易失性类型存储器所分配给的应用或进程不再活动,则可以发生这样的情况。一旦易失性类型存储器已经被释放,进程就可以进行到框424。一旦持久性类型存储器可用于满足存储器分配请求,就可以分配持久性类型存储器(例如,通过更新文件系统的文件分配表)。一旦已经满足了分配请求,所述进程可以进行到框416,在所述框中进程可以结束。

现在参考图5,其中展示了根据各个实施例的具有持久性存储器的示例计算装置。如所示的,计算装置500可以包括一个或多个处理器或处理器核502和持久性存储器506。在多个实施例中,多个处理器核502可以被布置在一个裸片上。为了本申请(包括权利要求书)的目的,术语“处理器”和“处理器核”可以被认为是同义的,除非上下文另外明确要求。计算装置500还可以包括易失性存储器(例如dram)和/或(多个)大容量存储装置(例如,磁盘、硬盘驱动器、cd盘只读存储器(cd-rom)等)、输入/输出(i/o)装置508(例如相机、显示装置、键盘、光标控制、陀螺仪、加速度计等)、以及多个通信接口510(例如网络接口卡、调制解调器等)。在多个实施例中,显示装置可以是触摸屏敏感的,并且可以包括显示屏、一个或多个处理器、存储介质以及多个通信元件。进一步地,显示设备可以被可拆卸地对接到具有键盘的基础平台或从其解除对接。所述元件可以经由可表示一个或多个总线的系统总线512相互耦合。在多个总线的情况下,它们可以通过一个或多个总线桥接器(未示出)桥接。在多个实施例中,持久性存储器506可以经由存储器总线与(多个)处理器502耦合。

这些元件各自可以执行本领域已知的其常规功能。持久性存储器506可以用于存储多个编程指令的可操作和持久的副本,所述编程指令实现早前所述的操作,例如但不限于与图2的系统软件202相关联的操作。持久性存储器506可以用于存储实现其他应用的编程指令的可操作和持久的副本。总的来说,这些指令被表示为计算逻辑522。各个操作可以通过(多个)处理器502所支持的汇编指令或可以编译成这样的指令的高级语言(诸如c语言)来实现。

编程指令的副本可以在工厂中或在现场通过(例如)分发介质(未示出)(如压缩盘(cd))或者通过通信接口510(从分发服务器(未示出))被放置到持久性存储器506中。也就是说,可以采用具有系统软件202的实施方式的一个或多个分发介质来将这些组件分发至各种计算装置。

这些元件510-512的数量、能力和/或容量可以根据示例计算装置500的预期用途而变化,例如示例计算机500是智能电话、平板电脑、超级本、膝上型计算机、台式机、还是服务器。否则,这些元件510-512的构成是已知的,并因此将不进行进一步描述。

图6展示了具有被配置成用于实践与上述过程相关联的操作中的全部操作或所选操作的指令的示例非瞬态计算机可读存储介质。如所展示的,非瞬态计算机可读存储介质602可以包括许多编程指令604。编程指令604可以被配置成用于响应于编程指令的执行而使得装置(例如,计算装置500)能够执行参考图1-4所描述的进程的一个或多个操作。在多个替代性实施例中,反而可以将编程指令604布置在多个非瞬态计算机可读存储介质602上。在另外的其他实施例中,编程指令604能够以瞬态计算机可读信号进行编码。

返回参考图5,对于一个实施例,多个处理器502中的至少一者可以与具有计算逻辑522的存储器一起封装(代替存储在持久性存储器506上),所述计算逻辑被配置为执行参考图1-4所描述的进程的一个或多个操作。对于一个实施例,处理器502中的至少一者可以与具有被配置成用于实践参考图1-4所描述的方法的方面的计算逻辑522的存储器一起封装以形成系统级封装(sip)。对于一个实施例,处理器502中的至少一者可以与具有被配置成用于执行参考图1-4所描述的进程的一个或多个操作的计算逻辑522的存储器集成在同一裸片上。对于一个实施例,处理器502中的至少一个可以与具有被配置成用于参考图1-4所描述的进程的一个或多个操作的计算逻辑522的存储器一起封装以形成片上系统(soc)。这样的soc可以用于任何适合的计算装置中。

虽然已经为了描述的目的本文展示和描述了某些示例,可以在不脱离本公开的范围的情况下用适合于实现相同目的的各种各样的替代和/或等效实施例或实现来代替所示出和描述的实施例。本申请旨在覆盖本文所讨论的实施例的任何修改或变化。因此,显然意图是,本文所描述的实施例仅由权利要求书来限定。

当公开陈述“一个(a)”或“第一(afirst)”要素或其等效物时,这样的公开包括一个或多个这样的要素,既不要求也不排除两个或更多这样的要素。此外,所标识的元件的顺序指示符(例如,第一、第二或第三)用于在元件之间进行区分,并且不指示或暗示要求的或限定的数量的这样的元件,其也不指示这样的元件的特定位置或顺序,除非另外特别声明。

本公开的多个实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件要素的实施例的形式。在各个实施例中,软件可以包括但不限于:固件、驻留软件、微代码等。此外,本公开可以采用可从计算机可用或计算机可读介质访问的计算机程序产品的形式,计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用或与其结合的程序代码。如本文所使用的,模块可以指代软件模块、硬件模块、或任何数量的软件模块或硬件模块、或其组合。

如本文所使用的,术语模块包括可在硬件组件或装置中实现的逻辑、可在处理器上运行或正在运行的软件或固件、或者多个处理器的组合。模块可以是通过共享或传递数据而集成的不同且独立的组件,或者模块可以是单个模块的子组件、或者是分散在在若干个模块之间的。组件可以是在单个计算节点上运行的,或实现的,或在多个并行地、并发、按顺序运行(或组合)的计算节点之间分布的进程,如参考图形中的流程图更全面地描述的。

为了本说明书的目的,计算机可使用或者计算机可读介质可以是包含、存储、传达、传播或传输由指令执行系统、设备或装置使用或者与其结合使用的程序的任何装置。介质可以是电子、磁、光、电磁、红外线或半导体系统(或设备或装置)或传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(ram)、只读存储器(rom)、刚性磁盘以及光盘。当前光盘的示例包括cd盘只读存储器(cd-rom)、cd盘读/写(cd-r/w)和dvd。

示例

一些非限制性示例如下:

示例1可以包括一种用于计算的设备,所述设备包括:一个或多个处理器;多个持久性存储器模块,所述多个持久性存储器模块与所述一个或多个处理器耦合;以及系统软件,所述系统软件由一个或多个处理器操作以用于:从由所述一个或多个处理器执行的一个或多个应用接收易失性存储器分配请求和持久性存储器分配请求;以及动态地分配所述持久性存储器模块的存储器页:响应于所述易失性存储器分配请求而分配为易失性类型存储器页;并且响应于所述持久性存储器分配请求而分配为持久性类型存储器页。

示例2可以包括如示例1所述的主题,其中,动态地分配存储器页进一步包括:生成与所述分配的存储器页中的每一个相关联的持久性类型元数据,其中,所述元数据包括存储器类型指示符,所述存储器类型指示符将与所述元数据相关联的所述相应存储器页标识为易失性类型或持久性类型。

示例3可以包括如示例2所述的主题,其中,所述系统软件包括动态存储器转换请求类型,所述动态存储器转换请求类型用于使得所述系统软件能够:接收用于将存储器页或多个存储器页的每个存储器页从一种存储器页类型改变成另一种存储器页类型的转换请求;以及响应于所述转换请求而将所述存储器页从所述一种存储器页类型转换成所述另一种存储器页类型。

示例4可以包括如示例3所述的主题,其中,所述一种存储器页类型和所述另一种存储器页类型不重复地选自由以下各项组成的组:持久性类型和易失性类型。

示例5可以包括如示例3所述的主题,其中,将所述存储器页从所述一种存储器页类型转换成所述另一种存储器页类型涉及改变分别与所述分配的存储器页相关联的所述元数据的所述类型指示符。

示例6可以包括如示例2-5中任一项所述的主题,其中,所述系统软件进一步用于:接收用于使一个或多个持久性类型存储器页可用于所述一个或多个处理器的页加载请求;以及响应于所述页加载请求而将与所述页加载请求相关联的页表更新为包括所述一个或多个持久性类型存储器页。

示例7可以包括如示例2-6中任一项所述的主题,其中,所述系统软件进一步用于:至少将所述多个持久性存储器模块的所述存储器页的子集初始化为持久性类型存储器页,并且其中,将所述持久性存储器模块的存储器页动态地分配为易失性类型存储器页涉及将持久性类型存储器页转换成易失性类型存储器页。

示例8可以包括如示例2-7中任一项所述的主题,其中,所述系统软件进一步用于:响应于所述设备的复位过程或关闭过程,释放易失性类型存储器页以进行重新分配。

示例9可以包括如示例1-8中任一项所述的主题,其中,所述系统软件是所述设备的操作系统(os)或虚拟机监视器(vmm)的一部分。

示例10可以包括如示例1-9中任一项所述的主题,其中,所述多个持久性存储器模块经由存储器总线与所述一个或多个处理器耦合。

示例11可以包括一种计算方法,所述计算方法包括:由所述计算装置的系统软件从所述计算装置的一个或多个应用接收易失性存储器分配请求和持久性存储器分配请求;以及由所述系统软件动态地分配多个持久性存储器模块的存储器页:响应于所述易失性存储器分配请求而分配为易失性类型存储器页;并且响应于所述持久性存储器分配请求而分配为持久性类型存储器页。

示例12可以包括如示例11所述的主题,其中,动态地分配存储器页进一步包括:生成与所述分配的存储器页中的每一个相关联的元数据,其中,所述元数据包括存储器类型指示符,所述存储器类型指示符将与所述元数据相关联的所述相应存储器页标识为易失性类型或持久性类型。

示例13可以包括如示例12所述的主题,进一步包括:由所述系统软件接收用于将所分配的存储器页从一种存储器页类型改变成另一种存储器页类型的转换请求;以及响应于所述转换请求而由所述系统软件将所述分配的存储器页从所述一种存储器页类型转换成所述另一种存储器页类型,其中,所述一种存储器页类型和所述另一种存储器页类型不重复地选自由以下各项组成的组:持久性类型和易失性类型。

示例14可以包括如示例13所述的主题,其中,将所述存储器页从所述一种存储器页类型转换成所述另一种存储器页类型涉及改变分别与所述分配的存储器页相关联的所述元数据的所述类型指示符。

示例15可以包括如示例11-14中任一项所述的主题,进一步包括:由所述系统软件接收用于使一个或多个持久性类型存储器页可用于所述一个或多个处理器的页加载请求;以及响应于所述页加载请求而由所述系统软件将与所述页加载请求相关联的页表更新为包括所述一个或多个持久性类型存储器页。

示例16可以包括如示例11-15中任一项所述的主题,进一步包括:由所述系统软件至少将所述多个持久性存储器模块的所述存储器页的子集初始化为持久性类型存储器页,并且其中,将所述持久性存储器模块的存储器页动态地分配为易失性类型存储器页涉及将持久性类型存储器页转换成易失性类型存储器页。

示例17可以包括如示例11-16中任一项所述的主题,进一步包括:响应于所述设备的复位过程或关闭过程,由所述系统软件释放易失性类型存储器页以进行重新分配。

示例18可以包括一种或多种计算机可读介质,所述计算机可读介质具有存储在其上的指令,其中,所述指令响应于由所述计算装置的处理器执行而为所述计算装置提供系统软件,所述系统软件用于:从由所述计算装置执行的一个或多个应用接收易失性存储器分配请求和持久性存储器分配请求;以及动态地分配多个持久性存储器模块的存储器页:响应于所述易失性存储器分配请求而分配为易失性类型存储器页;并且响应于所述持久性存储器分配请求而分配为持久性类型存储器页。

示例19可以包括如示例18所述的主题,其中,动态地分配存储器页进一步包括:生成与所述分配的存储器页中的每一个相关联的元数据,其中,所述元数据包括存储器类型指示符,所述存储器类型指示符将与所述元数据相关联的所述相应存储器页标识为易失性类型或持久性类型。

示例20可以包括如示例19所述的主题,其中,所述系统软件进一步用于:接收用于将所分配的存储器页从一种存储器页类型改变成另一种存储器页类型的转换请求;以及响应于所述转换请求而将所述分配的存储器页从所述一种存储器页类型转换成所述另一种存储器页类型。

示例21可以包括如示例19所述的主题,其中,所述一种存储器页类型和所述另一种存储器页类型不重复地选自由以下各项组成的组:持久性类型和易失性类型。

示例22可以包括如示例20所述的主题,其中,将所述存储器页从所述一种存储器页类型转换成所述另一种存储器页类型涉及改变分别与所述分配的存储器页相关联的所述元数据的所述类型指示符。

示例23可以包括如示例19所述的主题,其中,所述系统软件进一步用于:至少将所述多个持久性存储器模块的所述存储器页的子集初始化为持久性类型存储器页,并且其中,将所述持久性存储器模块的存储器页动态地分配为易失性类型存储器页涉及将持久性类型存储器页转换成易失性类型存储器页。

示例24可以包括如示例18-23中任一项所述的主题,其中,所述系统软件进一步用于:响应于所述设备的复位过程或关闭过程,释放易失性类型存储器页以进行重新分配。

示例25可以包括如示例18-24中任一项所述的主题,其中,所述系统软件是所述设备的操作系统(os)或虚拟机监视器(vmm)的一部分。

示例26可以包括一种用于计算的设备(apparatus),所述设备包括:用于从由所述计算装置的一个或多个应用接收易失性存储器分配请求和持久性存储器分配请求的装置(means);以及用于动态地分配多个持久性存储器模块的存储器页的装置:响应于所述易失性存储器分配请求而分配为易失性类型存储器页;并且响应于所述持久性存储器分配请求而分配为持久性类型存储器页。

示例27可以包括如示例26所述的主题,其中,所述用于动态地分配存储器页的装置进一步包括:用于生成与所述分配的存储器页中的每一个相关联的元数据的装置,其中,所述元数据包括存储器类型指示符,所述存储器类型指示符将与所述元数据相关联的所述相应存储器页标识为易失性类型或持久性类型。

示例28可以包括如示例27所述的主题,进一步包括:用于接收转换请求的装置,所述转换请求用于将所分配的存储器页从一种存储器页类型改变成另一种存储器页类型;以及用于响应于所述转换请求而将所述分配的存储器页从所述一种存储器页类型转换成所述另一种存储器页类型的装置,其中,所述一种存储器页类型和所述另一种存储器页类型不重复地选自由以下各项组成的组:持久性类型和易失性类型。

示例29可以包括如示例28所述的主题,其中,将所述存储器页从所述一种存储器页类型转换成所述另一种存储器页类型涉及改变分别与所述分配的存储器页相关联的所述元数据的所述类型指示符。

示例30可以包括如示例26-29中任一项所述的主题,进一步包括:用于接收页加载请求的装置,所述页加载请求用于使一个或多个持久性类型存储器页可用于所述一个或多个处理器;以及用于响应于所述页加载请求而将与所述页加载请求相关联的页表更新为包括所述一个或多个持久性类型存储器页的装置。

示例31可以包括如示例26-30中任一项所述的主题,进一步包括:用于至少将所述多个持久性存储器模块的所述存储器页的子集初始化为持久性类型存储器页的装置,并且其中,将所述持久性存储器模块的存储器页动态地分配为易失性类型存储器页涉及将持久性类型存储器页转换成易失性类型存储器页。

示例32可以包括如示例26-31中任一项所述的主题,进一步包括:用于响应于所述设备的复位过程或关闭过程而释放易失性类型存储器页以进行重新分配的装置。

尽管本文已经展示和描述了多个具体实施例,但是本领域普通技术人员应当理解,在不脱离本公开的实施例的范围的情况下,各种各样的替代和/或等效实施方式可以代替所示和所描述的具体实施例。本申请旨在覆盖本文所讨论的实施例的任何修改或变化。因此,显然意图是,本公开的实施例仅由权利要求书及其等效物来限定。

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