预先布置数据以提交到非易失性存储器的制造方法

文档序号:6498578阅读:119来源:国知局
预先布置数据以提交到非易失性存储器的制造方法
【专利摘要】一种装置,包括混合存储器模块,并且所述混合存储器模块包括易失性存储器和非易失性存储器。数据在易失性存储器中被预先布置。当预先布置数据的大小达到阈值时,在单个写入操作中,所述数据按照预先布置的被提交到非易失性存储器。
【专利说明】预先布置数据以提交到非易失性存储器

【背景技术】
[0001]存储数据或指令的任何设备需要存储器,并且有两种广泛类型的存储器:易失性存储器和非易失性存储器。易失性存储器在它失去电力或电力未被周期性地充电时失去其所存储的数据。然而,非易失性存储器在没有连续或周期性电力供应的情形下保存信息。
[0002]随机访问存储器(“RAM”)是一种类型的易失性存储器。只要RAM的期望单元的地址已知,RAM可以被以任何次序访问。动态随机访问存储器(“DRAM”)是一种类型的RAM。电容器被用于在DRAM中存储存储器的位,并且电容器可以被周期性地充电以维持高电子状态。因为DRAM电路小且便宜,其可以被用作用于计算机系统的存储器。
[0003]闪存是一种类型的非易失性存储器,并且闪存可以在页面中被访问页面。例如,闪存的页面可以在一个操作或一个“突闪”中被擦除。与对DRAM的访问相比,对闪存的访问是相对慢的。如此,闪存可以被用作用于计算机系统的长期或持续存储器。

【专利附图】

【附图说明】
[0004]为了详细描述各种示例,现在将参考附图,其中:
图1图示了依据至少一个图示的示例的用于预先布置数据以提交到非易失性存储器的系统;
图2图示了依据至少一个图示的示例的预先布置数据以提交到非易失性存储器的方法;
图3图示了依据至少一个图示的示例的用于预先布置数据以提交到非易失性存储器的装置;以及
图4图示了依据至少一个图示的示例的用于预先布置数据以提交到非易失性存储器的非临时性计算机可读介质。

【具体实施方式】
[0005]通过在易失性存储器中预先布置将被提交到非易失性存储器(诸如,闪存)的数据,时间和空间可以被高效使用。特别地,通过把许多小的写入请求组合到相对少的大的写入操作中,非易失性存储器的速度、性能和吞吐量可以被改进。把元数据放置在闪存的每个页面的可预知位置中也改进非易失性存储器的速度、性能和吞吐量。效率上的增加比用于预先布置数据的任何时间和空间重要的多。
[0006]图1图示了包括可以包括易失性存储器106和非易失性存储器108的混合存储器模块104的系统100。图1的系统100依据至少一些示例在易失性存储器106预先布置数据以便在非易失性存储器108中存储。系统100还可以包括处理器102,其可以被称为中央处理单元(“CPU”)。处理器102可以被实现为一个或多个CPU芯片,并且可以执行指令、代码、和计算机程序。在至少一个示例中,处理器102可以被耦合到混合存储器模块104。
[0007]混合存储器模块104可以被耦合到存储器控制器110,其可以包括电路逻辑以通过调度对存储器的读取和写入来管理数据流。在至少一个示例中,存储器控制器110可以与处理器102或混合存储器模块104集成在一起。如此,存储器控制器110或处理器102可以在易失性存储器106中预先布置数据,并且把预先布置的数据提交到非易失性存储器108。
[0008]在至少一个示例中,混合存储器模块104中的总存储器的一半可以被实现为易失性存储器106,并且一半可以被实现为非易失性存储器108。在各种其它示例中,易失性存储器106与非易失性存储器108之比可以是除了相等之外的量。
[0009]在易失性存储器106 (诸如,DRAM)中,每个字节可以被单独地寻址,并且数据可以被以任何次序访问。然而,在非易失性存储器108中,数据在页面中被访问。即,为了读取数据的字节,所述字节位于其中的数据的页面应被加载。相似地,为了写入数据的字节,所述字节应被写入其中的数据的页面应被加载。如此,在一个写入操作中一起写入非易失性存储器108的页面是经济的。特别地,对页面的访问数量可以被减少,从而导致时间被节约以及非易失性存储器108的输入/输出损耗被减少。此外,在至少一个示例中,程序或操作系统可以仅与易失性存储器兼容,并且因此可以试图寻址非易失性存储器中的单独字节。在这种情形下,数据的预先布置可以通过考虑到非易失性存储器108的字节可寻址性的假象而帮助非易失性存储器108与这种程序或操作系统兼容。
[0010]易失性存储器106可以充当用于非易失性存储器108的分级区域。即,数据可以在非易失性存储器108中以相同布置或次序被存储之前在易失性存储器106中被预先布置(或排序)。在至少一个示例中,在易失性存储器106中被预先布置的数据包括写入数据和元数据。写入数据可以包括与写入请求相关联的数据。元数据可以包括写入数据的地址映射。例如,地址映射可以包括逻辑地址到物理地址的映射。当数据被请求时,它可以按逻辑地址请求。元数据可以被查阅以确定与请求中的逻辑地址相关联的物理地址,并且所请求的数据可以从所述物理地址被获取。元数据可以被邻接地(即,在一组顺序的地址中)存储,并且写入数据也可以被邻接地(在一组分离的顺序地址中)存储。在至少一个示例中,这些邻接的数据块的大小可以基于非易失性存储器108的页面大小。例如,非易失性存储器108的页面大小可以是64千字节。如此,元数据和写入数据可以在其相应的邻接块中在易失性存储器106中被积聚,直到达到组合数据的64千字节的阈值。因为元数据可以比写入数据小,所以64千字节中的4千字节可以包括元数据,而64千字节中的60千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0011]在另一个示例中,非易失性存储器108的页面大小可以是128千字节。如此,元数据和写入数据可以被积聚在易失性存储器106中,直到达到组合数据的128千字节的阈值。因为元数据可以比写入数据小,所以128千字节中的8千字节可以包括元数据,而128千字节中的120千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0012]在至少一个示例中,在易失性存储器106中,元数据块被存储在写入数据块之前(在较低编号的地址处)。如此,当组合数据被提交到非易失性存储器108时,元数据将出现在非易失性存储器108的每个页面的开始处(在较低编号的地址处)。在另一个示例中,元数据被放置在写入数据之后。如此,元数据将出现在非易失性存储器108的每个页面的末尾。
[0013]一旦阈值量的数据已被积聚并且预先布置在易失性存储器106中,所述数据可以按照预先布置的被提交到非易失性存储器108。数据可以在单个写入操作中被提交。在至少一个示例中,阈值是可变的。即,触发到非易失性存储器的存储的所积聚的数据量不是恒定的。更确切地,它基于进一步的数据是否会导致预先布置的数据的大小超过非易失性存储器的页面大小而改变。例如,写入请求可以被以它们被接收的次序预先布置;如此,与尚未被预先布置的数据相关联的最旧的写入请求下一个用于预先布置。如果下一个写入请求与会导致预先布置的数据超过非易失性存储器108的例如64千字节的页面大小的数据相关联,则已经被预先布置的数据被提交到非易失性存储器108,并且与下一个写入请求相关联的数据被用作将被提交到非易失性存储器108的下一个页面的第一积聚。在至少一些示例中,以这种方式,非易失性存储器108的页面大小可以接近或等于(但不超过)预先布置的数据的大小。
[0014]在至少一个示例中,用于预先布置数据需要的易失性存储器的量基于写入请求按其被接收的速率以及数据可以按其被提交到非易失性存储器的速度而被计算。例如,如果平均4千字节的数据被存储在易失性存储器106中以用于每个写入请求,则在已知写入请求的频率的情形下,在一段时间上应被存储的存储器的总量可以被计算。此外,如果数据慢于那个频率被提交,则所需缓冲器空间的量可以被计算。缓冲器空间的这个量可以被划分成等于非易失性存储器的页面大小的区域,并且这些区域可以被用作圆形队列。即,一旦区域已被提交到非易失性存储器,则那个区域可以被放置在队列的末尾,并且当所述区域到达队列前面时可以被盖写。在至少一个示例中,把数据的区域提交到非易失性存储器108可以被与在队列中预先布置下一个区域同时地执行。
[0015]在至少一个示例中,混合存储器模块104还可以包括电力传感器。电力传感器可以包括逻辑,该逻辑检测即将来临或发生的电力故障,并且因此触发易失性存储器106到非易失性存储器108的备份或触发检查以确保非易失性存储器108已经正在备份或已经备份易失性存储器106。例如,电力传感器可以被耦合到电力供应或充电电容器,该充电电容器被耦合到混合存储器模块104。如果所供应的电力落在阈值以下,则备份可以被触发。以这种方式,易失性存储器106中的数据可以在电力故障期间被保护。
[0016]在至少一个示例中,混合存储器模块104和易失性存储器106可以充当缓存。例如,在请求还尚未被提交到非易失性存储器108的数据情形下,易失性存储器106可以被访问以获取所请求的数据。以这种方式,数据的清单可以被维护,其中数据被标记为陈旧的或非陈旧的,非常像缓存。
[0017]图2图示了在202开始并且在208结束的预先布置数据以提交到非易失性存储器的方法200。在204,数据可以在非易失性存储器108中以相同布置或次序被存储之前在易失性存储器106中被预先布置(或排序)。在至少一个示例中,在易失性存储器106中被预先布置的数据包括写入数据和元数据。写入数据可以包括与写入请求相关联的数据。元数据可以包括写入数据的地址映射。例如,地址映射可以包括逻辑地址到物理地址的映射。当数据被请求时,它可以按逻辑地址请求。元数据可以被查阅以确定与请求中的逻辑地址相关联的物理地址,并且所请求的数据可以从所述物理地址被获取。元数据可以被邻接地(即,在一组顺序的地址中)存储,并且写入数据也可以被邻接地(在一组分离的顺序地址中)存储。在至少一个示例中,这些邻接的数据块的大小可以基于非易失性存储器108的页面大小。例如,非易失性存储器108的页面大小可以是64千字节。如此,元数据和写入数据可以在其相应的邻接块中在易失性存储器106中被积聚,直到达到组合数据的64千字节的阈值。因为元数据可以比写入数据小,所以64千字节中的4千字节可以包括元数据,而64千字节中的60千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0018]在另一个示例中,非易失性存储器108的页面大小可以是128千字节。如此,元数据和写入数据可以被积聚在易失性存储器106中,直到达到组合数据的128千字节的阈值。因为元数据可以比写入数据小,所以128千字节中的8千字节可以包括元数据,而128千字节中的120千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0019]在至少一个示例中,在易失性存储器106中,元数据块被存储在写入数据块之前(在较低编号的地址处)。如此,当组合数据被提交到非易失性存储器108时,元数据将出现在非易失性存储器108的每个页面的开始处(在较低编号的地址处)。在另一个示例中,元数据被放置在写入数据之后。如此,元数据将出现在非易失性存储器108的每个页面的末尾。
[0020]在206,数据可以按照预先布置的被提交到非易失性存储器108。数据可以在单个写入操作中被提交。在至少一个示例中,阈值是可变的。即,触发到非易失性存储器的存储的所积聚的数据量不是恒定的。更确切地,它基于进一步的数据是否会导致预先布置的数据的大小超过非易失性存储器的页面大小而改变。例如,写入请求可以被以它们被接收的次序预先布置;如此,与尚未被预先布置的数据相关联的最旧的写入请求下一个用于预先布置。如果下一个写入请求与导致预先布置的数据超过非易失性存储器108的例如64千字节的页面大小的数据相关联,则已经被预先布置的数据被提交到非易失性存储器108,并且与下一个写入请求相关联的数据被用作将被提交到非易失性存储器108的下一个页面的第一积聚。在至少一些示例中,以这种方式,非易失性存储器108的页面大小可以接近或等于(但不超过)预先布置的数据的大小。
[0021]在至少一个示例中,用于预先布置数据需要的易失性存储器的量基于写入请求按其被接收的速率以及数据可以按其被提交到非易失性存储器的速度而被计算。例如,如果平均4千字节的数据被存储在易失性存储器106中以用于每个写入请求,则在已知写入请求的频率的情形下,在一段时间上应被存储的存储器的总量可以被计算。此外,如果数据慢于那个频率被提交,则所需缓冲器空间的量可以被计算。缓冲器空间的这个量可以被划分成等于非易失性存储器的页面大小的区域,并且这些区域可以被用作圆形队列。即,一旦区域已被提交到非易失性存储器,则那个区域可以被放置在队列的末尾,并且当所述区域到达队列前面时可以被盖写。在至少一个示例中,把数据的区域提交到非易失性存储器108可以被与在队列中预先布置下一个区域同时地执行。
[0022]图3图示了依据至少一个图示的示例的用于预先布置数据以提交到闪存108的装置300。在至少一个示例中,所述装置300可以包括混合双列直插存储器模块(“DIMM”)304。混合DI丽304可以包括DRAM 306和闪存308。如此,DRAM 306和闪存308 二者可以在相同的DIMM 304上被提供,并且由相同的存储器控制器控制。DRAM 306可以是易失性存储器,因为数据的每个位可以被存储在电容器内,所述电容器被周期性地供电以保存所述位。使用一个或多个晶体管存储位的闪存308可以是非易失性存储器。在各种示例中,其它类型的易失性存储器和非易失性存储器被使用。在至少一个示例中,总DIMM存储器的一半可以被实现为DRAM 306,并且一半可以被实现为闪存308。在各种其它示例中,DRAM 306与闪存308之比可以是除了相等之外的量。混合DMM 304可以在没有来自适配硬件协助的情形下安装在电子设备的DIMM槽中。
[0023]在DRAM 306中,每个字节可以被单独地寻址。然而,在闪存308中,数据在页面中被访问。即,为了读取数据的字节,所述字节位于其中的数据的页面应被加载。相似地,为了写入数据的字节,所述字节应被写入其中的数据的页面应被加载。如此,在一个写入操作中一起写入闪存308的整个页面是经济的。特别地,对页面的访问数量可以被减少,从而导致闪存308的输入/输出损耗被减少。此外,在至少一个示例中,程序或操作系统可以仅与DRAM 306兼容,并且因此试图寻址闪存308中的单独字节。在这种情形下,数据的预先布置可以通过考虑到闪存308的字节可寻址性的假象而帮助闪存308与这种程序或操作系统兼容。
[0024]DRAM 306可以充当用于闪存308的分级区域。即,数据可以在闪存308中以相同布置或次序被存储之前在DRAM 306中被预先布置(或排序)。在至少一个示例中,在DRAM306中被预先布置的数据包括写入数据和元数据。写入数据可以包括与写入请求相关联的数据。元数据可以包括写入数据的地址映射。例如,地址映射可以包括逻辑地址到物理地址的映射。当数据被请求时,它可以按逻辑地址请求。元数据可以被查阅以确定与请求中的逻辑地址相关联的物理地址,并且所请求的数据可以从所述物理地址被获取。元数据可以被邻接地(即,在一组顺序的地址中)存储,并且写入数据也可以被邻接地(在一组分离的顺序地址中)存储。在至少一个示例中,这些邻接的数据块的大小可以基于闪存308的页面大小。例如,闪存308的页面大小可以是64千字节。如此,元数据和写入数据可以在其相应的邻接块中在DRAM 306中被积聚,直到达到组合数据的64千字节的阈值。因为元数据可以比写入数据小,所以64千字节中的4千字节可以包括元数据,而64千字节中的60千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0025]在另一个示例中,闪存308的页面大小可以是128千字节。如此,元数据和写入数据可以被积聚在DRAM 306中,直到达到组合数据的128千字节的阈值。因为元数据可以比写入数据小,所以128千字节中的8千字节可以包括元数据,而128千字节中的120千字节可以包括写入数据。在各种示例中,其它的比可以发生。
[0026]在至少一个示例中,在DRAM 306中,元数据块被存储在写入数据块之前(在较低编号的地址处)。如此,当组合数据被提交到闪存308时,元数据将出现在闪存308的每个页面的开始处(在较低编号的地址处)。在另一个示例中,元数据被放置在写入数据之后。如此,元数据将出现在闪存308的每个页面的末尾。
[0027]—旦阈值量的数据已被积聚并且预先布置在DRAM 306中,所述数据可以按照预先布置的被提交到闪存308。数据可以在单个写入操作中被提交。在至少一个示例中,阈值是可变的。即,触发到闪存308的存储的所积聚的数据量不是恒定的。更确切地,它基于进一步的数据是否会导致预先布置的数据的大小超过闪存308的页面大小而改变。例如,写入请求可以被以它们被接收的次序预先布置;如此,与尚未被预先布置的数据相关联的最旧的写入请求下一个用于预先布置。如果下一个写入请求与会导致预先布置的数据超过闪存308的例如64千字节的页面大小的数据相关联,则已经被预先布置的数据被提交到闪存308,并且与下一个写入请求相关联的数据被用作将被提交到闪存308的下一个页面的第一积聚。在至少一些示例中,以这种方式,闪存308的页面大小可以接近或等于(但不超过)预先布置的数据的大小。
[0028]在至少一个示例中,用于预先布置数据需要的DRAM 306的量基于写入请求按其被接收的速率以及数据可以按其被提交到闪存308的速度而被计算。例如,如果平均4千字节的数据被存储在DRAM 306中以用于每个写入请求,则在已知写入请求的频率的情形下,在一段时间上应被存储的存储器的总量可以被计算。此外,如果数据慢于那个频率被提交,则所需缓冲器空间的量可以被计算。缓冲器空间的这个量可以被划分成等于闪存308的页面大小的区域,并且这些区域可以被用作圆形队列。即,一旦区域已被提交到闪存308,则那个区域可以被放置在队列的末尾,并且当所述区域到达队列前面时可以被盖写。在至少一个示例中,把数据的区域提交到闪存308可以被与在队列中预先布置下一个区域同时地执行。
[0029]以上所描述的系统可以被实现在任何特定的机器或计算机上,所述特定的机器或计算机具有足够的处理能力、存储器资源和吞吐能力以处理被放置在计算机上的必要工作负载。图4图示了适合于实现在此公开的一个或多个示例的特定计算机系统480。计算机系统480包括与包括存储器488的存储器设备通信的硬件处理器482 (其可以被称为中央处理器单元或CPU),以及输入/输出(1/0)490设备。处理器可以被实现为一个或多个CPU
-H-* I I
心/T O
[0030]在各种实施例中,存储器488包括非临时性存储设备,诸如,易失性存储器(例如,RAM)、非易失性存储器(例如,闪存、硬盘驱动器、⑶ROM等)、或其组合。存储器488包括由处理器482执行的计算机可读软件484。在此描述的动作中的一个或多个在软件484的执行期间由处理器482执行。
[0031]以上的讨论意图图示本发明的原理和各种实施例。一旦以上的公开被完全地认识至IJ,众多的变化和修改对于本领域的技术人员将变得显然。旨在接下来的权利要求被解释成包含所有这种变化和修改。
【权利要求】
1.一种装置,包括: 混合存储器模块,包括: 易失性存储器;以及 非易失性存储器; 其中,数据在易失性存储器中被预先布置,并且当预先布置数据的大小达到阈值时,在单个写入操作中,所述数据按照预先布置的被提交到非易失性存储器。
2.如权利要求1所述的装置,其中所述阈值是可变阈值,其包括使得进一步的数据会导致预先布置数据的大小超过非易失性存储器的页面大小的量。
3.如权利要求2所述的装置,其中进一步的数据包括作为尚未被预先布置的最旧写入请求的部分被接收的写入数据。
4.如权利要求1所述的装置,其中在易失性存储器中被预先布置的数据包括写入数据和元数据;并且所述元数据包括所述写入数据的地址映射。
5.如权利要求4所述的装置,其中写入数据被存储到非易失性存储器的页面中;所述元数据被存储到所述页面中;并且所述元数据被邻接地存储在非易失性存储器中。
6.如权利要求1所述的装置,其中用于预先布置所述数据需要的易失性存储器的量基于写入请求按其被接收的速率以及数据能够按其被提交到非易失性存储器的速度而被计笪
ο
7.如权利要求6所述的装置,其中所需要的易失性存储器的量被划分成区域,每个区域是所述非易失性存储器的页面大小的大小;并且所述区域被用作圆形队列。
8.一种方法,包括: 在易失性存储器中预先布置数据; 当预先布置数据的大小达到阈值时,在单个写入操作中,把所述数据按照预先布置的提交到非易失性存储器。
9.如权利要求8所述的方法,其中所述阈值是可变阈值,其包括使得进一步的数据会导致预先布置数据的大小超过非易失性存储器的页面大小的量。
10.如权利要求9所述的方法,其中进一步的数据包括作为尚未被预先布置的最旧写入请求的部分被接收的写入数据。
11.如权利要求8所述的方法,其中在易失性存储器中被预先布置的数据包括写入数据和元数据;并且所述元数据包括所述写入数据的地址映射。
12.如权利要求11所述的方法,进一步包括:把写入数据存储到非易失性数据的页面中;把所述元数据存储到所述页面中;并且把所述元数据邻接地存储在非易失性存储器中。
13.如权利要求8所述的方法,进一步包括:基于写入请求按其被接收的速率以及数据能够按其被提交到非易失性存储器的速度计算用于预先布置所述数据需要的易失性存储器的量。
14.如权利要求13所述的方法,进一步包括:把所需要的易失性存储器的量划分成区域,每个区域是所述非易失性存储器的页面大小的大小;并且把所述区域用作圆形队列。
15.—种系统,包括: 混合双列直插存储器模块(“DIMM”)包括: 动态随机访问存储器(“DRAM”);以及 闪存; 其中,数据在DRAM中被预先布置,并且当预先布置数据的大小达到阈值时,在单个写入操作中,所述数据按照预先布置的被提交到所述闪存。
【文档编号】G06F12/00GK104246719SQ201280072856
【公开日】2014年12月24日 申请日期:2012年5月1日 优先权日:2012年5月1日
【发明者】G. 卡彭特 D., K. 王 P., C. 哈洛韦尔 W., M. 贝卢萨 C. 申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1