使用NVRAM进行存储器管理的系统、方法和设备转让专利

申请号 : CN200580025828.1

文献号 : CN101014929B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 戴维·波泰格

申请人 : 美国联合包裹服务公司

摘要 :

披露了一种用于提高计算设备的分离的存储器中的数据完整性和数据存储效率的系统和方法。具体地说,本发明引入了两种类型存储器,即NVRAM和闪存的组合作为存储文件数据的永久存储器。通过将数据文件的最后数据部分不断地缓存到NVRAM中,它避免了闪存中对单独位的任何扇区擦除。这样的方法提高了闪存的数据存储效率和寿命预期。本发明几乎在所有计算设备中都有非常广泛的应用,包括任何PC(桌面型或膝上型)和服务器计算机。它演示了在采用WindowsTM CE操作系统的便携电子设备中的特别有利的性能。

权利要求 :

1.一种计算设备中的存储器管理方法,所述方法包括以下步骤:在计算设备中接收文件数据;

处理所述文件数据,以确定所述文件数据是由一个或多个数据块以及最后数据部分构成的,所述一个或多个数据块中的每一个都具有预定的块尺寸,所述最后数据部分具有比所述预定的块尺寸小的尺寸;

将所述一个或多个数据块写入第一存储器中,所述第一存储器被配置为存储具有所述预定块尺寸的数据块;以及在将所述最后数据部分传送到所述第一存储器之前,将所述最后数据部分缓存到第二存储器中,所述缓存所述最后数据部分的步骤包括以下步骤:(A)分配所述第二存储器的一部分作为文件缓冲区,所述文件缓冲区被配置为存储文件数据;

(B)将所述最后数据部分的数据字节写入所述文件缓冲区,直到所述文件缓冲区中的数据被确定为具有所述预定的块尺寸;以及(C)响应于所述确定所述文件缓冲区中的所述数据具有所述预定的块尺寸,在继续步骤(B)之前将所述数据从所述文件缓冲区移到所述第一存储器。

2.根据权利要求1所述的方法,还包括以下步骤:生成用于所述文件数据的非文件数据;以及

将所述非文件数据存储在所述第二存储器中。

3.根据权利要求2所述的方法,其中,所述非文件数据包括文件分配表。

4.根据权利要求1所述的方法,其中所述第一存储器是闪存。

5.根据权利要求2所述的方法,其中所述第二存储器是非易失随机存取存储器。

6.一种计算设备中的存储器管理方法,包括以下步骤:(A)在计算设备中接收文件数据输入;

(B)处理所述文件数据输入,以将所述文件数据输入分割成一个或多个数据块和最后数据部分,所述一个或多个数据块中的每一个都包含阈值数量的数据字节,所述最后数据部分包括低于所述阈值数量的数据字节;

(C)将所述一个或多个数据块写入第一存储器中,所述第一存储器被配置为存储具有所述阈值数量的数据字节的数据块;

(D)按字节将所述最后数据部分写入第二存储器中,直到所述第二存储器被确定为包括等于所述阈值数量的文件数据字节;

(E)响应于确定了所述第二存储器包括等于所述阈值数量的文件数据字节,在继续步骤(D)之前将所述文件数据字节从所述第二存储器移到所述第一存储器。

7.根据权利要求6所述的方法,还包括以下步骤:生成用于所述文件数据输入的非文件数据;以及将所述非文件数据存储在所述第二存储器中。

8.根据权利要求7所述的方法,其中,所述非文件数据包括文件分配表。

9.根据权利要求6所述的方法,其中所述第一存储器是块存取存储器。

10.根据权利要求9所述的方法,其中所述第一存储器是闪存。

11.根据权利要求6所述的方法,其中所述第二存储器是非易失随机存取存储器。

12.根据权利要求10所述的方法,其中所述数据字节的阈值数量是可配置的。

13.一种存储器管理系统,包括:

处理器,被配置为接收和处理包括多个数据块和最后数据部分的文件数据,其中所述数据块具有预定的块尺寸,所述最后数据部分具有比所述预定的块尺寸小的尺寸;

存储器,至少包括:

(I)第一存储器,被配置为存储所述多个数据块;和(II)第二存储器,包括用于在所述最后数据部分被写入第一存储器之前存储所述最后数据部分的文件缓冲区,其中所述最后数据部分通过以下步骤被缓存到所述第二存储器中:(A)分配所述第二存储器的一部分作为文件缓冲区,所述文件缓冲区被配置为存储文件数据;

(B)将所述最后数据部分的数据字节写入所述文件缓冲区,直到所述文件缓冲区中的数据被确定为具有所述预定的块尺寸;以及(C)响应于所述确定所述文件缓冲区中的所述数据具有所述预定的块尺寸,在继续步骤(B)之前将所述数据从所述文件缓冲区移到所述第一存储器;以及由所述处理器执行的数据管理器,其中,所述数据管理器被配置为在所述第一存储器中分配用于存储所述多个数据块的空间,以及在所述第二存储器中指定用于缓存所述最后数据部分的空间。

14.根据权利要求13所述的系统,其中所述第一存储器是块存取存储器。

15.根据权利要求13所述的系统,其中所述第一存储器是闪存。

16.根据权利要求13所述的系统,其中所述第二存储器是非易失随机存取存储器。

17.根据权利要求13所述的系统,还包括用于向用户显示所述数据的输出接口。

18.根据权利要求13所述的系统,还包括用于接收所述数据的输入接口。

19.根据权利要求13所述的系统,还包括用于经由通信网络传送所述数据的接口。

20.根据权利要求13所述的系统,其中所述数据管理器还被配置为生成用于所述数据的文件分配表,并将所述文件分配表存储在所述第二存储器中。

21.一种手持设备,包括:

数据输入装置;

数据输出装置;和

计算装置,被配置为经由通信网络与所述数据输入装置、所述输出装置和数据源进行通信,所述计算装置包括:用于数据处理的处理器,

存储器,至少包括非易失随机存取存储器和块存取存储器,数据管理器,当由所述处理器执行时包括以下步骤:(A)从文件数据输入识别一个或多个数据块和最后数据部分,所述一个或多个数据块中的每一个都具有一个阈值块尺寸,所述最后数据部分具有比所述阈值块尺寸小的尺寸;

(B)将所述一个或多个数据块存储到所述块存取存储器中;

(C)按字节将所述最后数据部分写入所述非易失随机存取存储器中,直到所述非易失随机存取存储器被确定为包括所述阈值块尺寸的文件数据;

(D)响应于确定了所述非易失随机存取存储器被确定为包括所述阈值块尺寸的文件数据,在继续步骤(C)之前将所述文件数据从所述非易失随机存取存储器移到所述块存取存储器。

22.根据权利要求21所述的手持设备,其中所述块存取存储器是闪存。

23.根据权利要求21所述的手持设备,其中所述阈值块尺寸是可配置的。

说明书 :

技术领域

本发明总地涉及存储器存储拓扑领域,更具体地说,涉及用于改善计算设备的分离的存储器中的数据完整性和数据存储效率的系统和方法。它在采用WindowsTM CE操作系统的手持计算设备中产生特别好的存储器性能。

背景技术

有多种形式的存储器服务于多种目的。典型地,单个电子计算设备包括几个等级(tier)的不同存储器。存储器设计中的这样的等级思想有助于使由强大的CPU快速方便地访问的数据存储最大化,同时使存储成本最小化。
具体到手持计算设备,它们中的很多都包括两种存储器,即随机存取存储器(RAM或DRAM)和可编程永久存储器。通常,在RAM中加载、执行和运行软件应用程序。RAM也被用来接收用户的数据输入并将应用程序的输出或结果显示给用户。接收数据和显示结果的任务在RAM中通常都是很快完成的,以允许用户自由地输入数据,而没有将数据存储在更长久的存储器中的延迟。可用的RAM的数量通常决定了设备的感知速度。然而,大多数RAM配置的速度必须和丢失数据或结果的风险相互平衡。也就是说,RAM有时被称为易失存储器,因为它需要不停地提供电能来保持它的数据。这样一来,如果电源供应停止,那么RAM中的数据就会丢失。
大多数类型的永久存储器是非易失的;即,即使没有电源,永久存储器也能保留数据。大多数永久存储器是可编程的,因此适于存储软件应用,并且还是可擦除的,使得存储器可以被重新编程。通常,选定的数据可被有目的地存储在永久存储器中,以供随后使用。例如,用户可能将十个快速数据条目存储到RAM中,然后再将这些数据条目存储在永久存储器中。
在使用中,很多便携式电子设备都容易受到环境外力、电子故障、电源丢失和/或其他灾难事件的影响,这些事件可能会自动地突然擦除RAM的内容。一旦存储在RAM中的输入数据丢失,它就不可能恢复出来存储到永久存储器中。因此,需要一种非易失存储器来快速接收和存储数据,即使在设备因灾难事件发生彻底故障时也是如此,以提供数据的长期存储。
当前,块存取闪存被认为是在便携式计算设备中实施的改进的非易失存储器。作为一种类型的EEPROM,这种闪存提供了非易失、低功率、低成本、高密度的用于可编程代码和数据的存储器件。这些特性使得闪存成为用于嵌入式系统的最佳的非易失存储器件。然而,当闪存实施在计算设备中时也有很多不好的特性。
一个问题是擦除扇区。与RAM或ROM器件不同,闪存器件(例如NAND闪存)的各个位只可以在一个方向上被编程,在不进行擦除操作的情况下不能被重新编程。闪存的擦除操作要求一大片段的位,即一个擦除扇区被同时“闪烁”或擦除。这样的一个擦除扇区一般是64KB,但是也可以从512字节到512KB,根据闪存的类型以及它如何连线到系统中来决定。此外,擦除操作相当慢,一般约为半秒钟,而单个字节通常可在十微秒内被编程。
闪存的这种扇区擦除特性也使得难以保持数据完整性。当使用RAM或传统的盘进行存储时,实际任何尺寸的数据都可以被写入和重新写入同一位置,而不需要任何特殊的处理。由于闪存不能重写数据的单独的位,因此全部数据必须在一开始被写入或重新写入闪存的未用区域中。随后必须对原始数据进行跟踪,以便为了扇区擦除而释放存储器中的空间。当在闪存器件中进行数据写和重写操作时,控制软件必须在操作的每个状态保护数据,以确保原始数据和新数据在发生中断时保持有效。中断可能是由几种常见的情况引起的,例如由于电池不足造成的意外掉电或者用户的关机请求。
闪存必须考虑的另一个方面是有限的寿命预期。对于任何给定的闪存器件而言,在某一特定的擦除扇区变为不可靠或者受损之前可对其执行的擦除操作的总数是有限的。闪存器件的寿命从10,000个写擦除周期到1,000,000个周期之间分布,大多数额定约为100,000。当擦除扇区达到它的额定上限时,它可能要用更长的时间来完成某些操作,甚至开始出现故障。
为了克服上述问题,提供了一些专门类型的软件来管理闪存。在当前市场中,一个例子被称为闪存介质管理器。为了使闪存器件的生命期最大化,介质管理器引入了被称为磨损持平的过程,它由以下操作构成:保证以相同的频率使用闪盘中的所有擦除扇区。另一个被称为垃圾回收的过程被部署来收回被丢弃的数据占用的空间。该过程选择具有多半被丢弃的数据的擦除扇区,将该擦除扇区中的有效数据拷贝到空闲扇区中,并且擦除先前有效的擦除扇区,使它成为新的空闲扇区。然而,将任一个上述专门软件包括进来都需要在闪存中分配额外开销的空间,该空间用于存储标识/记录闪存状态的数据,维护用于跟踪所存储数据的位置和状态的文件分配表,以及预留空闲空间用于垃圾回收。这样的额外开销不仅使用于数据存储的实际空间减少,而且导致闪存的速度下降。
因此,需要一种克服闪存的缺陷,又提供快速数据存储的非易失存储器。正在出现的非易失随机存取存储器(NVRAM)看上去满足这种需要。NVRAM是特殊的一类RAM,当计算机关闭时或者出现电源故障时,它保留数据。与计算机的只读存储器(ROM)类似,NVRAM由计算机内的电池来供电。当电源打开时,NVRAM就象其他RAM一样工作。当电源关闭时,NVRAM从电池取用足够的电能来保留它的数据。在嵌入式系统中,NVRAM是相当普遍的。但是,NVRAM因为电池问题要比其他RAM贵很多。另外,NVRAM通常没有其他RAM特别是DRAM那么密集。因此,它的应用一般限于几百字节的系统关键信息的存储,这些信息不能以更好的方式存储。

发明内容

根据上述内容,本发明试图以合理的成本提供非易失、可靠并且快速的数据存储器件。具体地说,本发明试图在一台计算设备(特别是电子便携设备)中组合使用多种现有的存储器件,例如NVRAM和闪存,以便获得最优的数据存储和部署性能。为此,本发明还试图提供支持所述组合使用的底层机制,该机制将促进不同存储器之间的数据传输,而不危及数据完整性。
根据本发明,以上目的和其他目的还有优点将由用于存储器管理的方法和系统来实现.所述方法包括以下步骤:在计算设备中接收文件数据;处理文件数据,以确定该文件数据是由一个或多个数据块以及最后数据部分组成的,每个数据块都具有预定的块尺寸,而所述最后数据部分具有比所述预定的块尺寸小的尺寸;将数据块写入第一存储器中,该第一存储器被配置为存储具有所述预定块尺寸的数据块;以及在将所述最后数据部分发送到所述第一存储器之前,将该最后数据部分缓存在第二存储器中.在一种优选实施方式中,第二存储器是非易失随机存取存储器,而最后数据部分通过以下步骤来缓存:分配第二存储器的一部分作为存储文件数据的文件缓冲区;将最后数据部分的数据字节写入该文件缓冲区中,直到文件缓冲区包括多于预定块尺寸的数据;以及响应于确定文件缓冲区包括多于预定块尺寸的数据,在继续将最后数据部分的数据字节写入文件缓冲区之前,将数据从文件缓冲区移到第一存储器.
本发明还提供了包括执行上述步骤的可执行指令的计算机可读介质。
根据本发明的另一个方面,提供了一种系统,包括:处理器,被配置为接收和处理数据;至少包括第一存储器和第二存储器的存储器;和由所述处理器执行的数据管理器。数据管理器被配置为在数据内定义多个数据块和一个最后数据部分,每个数据块都具有预定的块尺寸,而最后数据部分具有比所述预定的块尺寸小的尺寸。它还被配置为在第一存储器中分配空间用于存储数据块,并且在第二存储器中指定空间用于缓存最后数据部分。在一种优选实施方式中,通过以下步骤将最后数据部分缓存到第二存储器中:分配第二存储器的一部分作为被配置为存储文件数据的文件缓冲区;将最后数据部分的数据字节写入所述文件缓冲区,直到该文件缓冲区中的数据被确定为具有所述预定的块尺寸;以及响应于确定所述文件缓冲区中的数据具有这样的预定块尺寸,在继续将最后数据部分的数据字节写入文件缓冲区之前,将数据从文件缓冲区移到第一存储器。在优选实施方式中,第一存储器是闪存,而第二存储器是非易失随机存取存储器。
本发明的另一种实施方式具体涉及手持设备,该手持设备包括:数据输入装置;数据输出装置;和计算装置,被配置为经由通信网络与数据输入装置、数据输出装置和数据源进行通信。所述计算装置包括用于数据处理的处理器、包括至少非易失随机存取存储器和块存取存储器的存储器以及数据管理器。数据管理器由处理器执行,完成包括以下步骤的指令:(A)从文件数据输入中识别一个或多个数据块以及最后数据部分,其中每个数据块都具有阈值块尺寸,所述最后数据部分具有比所述阈值块尺寸小的尺寸;(B)将数据块存储到块存取存储器中;(C)按字节将最后数据部分写入非易失随机存取存储器中,直到非易失随机存取存储器被确定为包括阈值块尺寸的文件数据;以及(E)响应于确定了所述非易失随机存取存储器被确定为包括阈值块尺寸的文件数据,在继续步骤(D)之前将文件数据从所述非易失随机存取存储器移到块存取存储器。
在本发明的任一以上方面的其他实施方式中,任何类型的计算机存储器都可以用作第一和第二存储器。在优选实施方式中,第一存储器是非易失存储器,例如闪存或者硬盘驱动器或者CD-ROM驱动器或者其他;第二存储器也是非易失存储器,优选地是NVRAM。

附图说明

图1示出了根据本发明一种实施方式的手持计算设备;
图2示出了根据本发明一种实施方式的计算装置的组件;
图3根据本发明的一种实施方式示出了图2所示的计算装置中的存储器的组件;
图4根据本发明的一种实施方式图示了用于存储器管理的数据处理中的数据流;
图5是根据本发明一种实施方式的数据处理和存储器管理的工作流程图。

具体实施方式

下面将参考附图来更加充分地描述本发明,在附图中示出了本发明的一部分但不是全部实施方式。事实上,这些发明可以以很多不同的形式来实施,不应当被理解为限于这里阐述的实施方式;相反,提供这些实施方式是为了使本公开满足适用的法律规定。通篇中相同的标号代表相同的元件。
看图1,根据本发明的一种实施方式示出了手持设备1。这样的手持设备1可以是任何便携计算设备,包括但不限于个人数字助理(PDA)、智能电话(SP)、笔记本电脑、平板计算机和速递信息收集设备(DIAD)。如图1所示,该手持设备1除了图中未示出的其他公知的必要组件外,主要由输入装置12、输出或显示装置14和计算装置20组成。在操作中,该手持设备可以通过用户输入(例如,键盘输入、条形码扫描)从用户10接收数据,或者通过通信网络16从数据源18(例如,电子数据传输)接收数据。数据源18可以是服务器计算机上的任何数据库。例如,在包裹递送的环境中,它可以是递送员的货运数据库或者顾客的数据库,计算装置20可以利用通信网络16上的有线或无线连接来访问以上数据库,而所述通信网络16可以是因特网、LAN或WAN。然后,可以从某个数据库下载货运数据或者包裹信息并捕获到手持设备1中,在该环境下手持设备1可以是DIAD。
图2提供了计算装置20内部的各种组件的框图。它至少包括(1)执行数据管理器24的处理器22,它包括用于存储器管理的编程指令,(2)与输入装置12或者输出装置14交互的接口26,(3)与通信网络16相互通信的网络接口28,和(4)存储器30。存储器30包括至少两种存储器:DRAM 30A和ROM 30B。在本发明的优选配置中,除了常规RAM 30外还采用非易失RAM(NVRAM)32。至于ROM30B,在本发明中一般使用闪存34。
图3是在存储器30中的每个具体类型的存储器中的相应数据存储的详细图示。如图所示,在DRAM 30A、NVRAM 32和闪存34之间存在数据交换。具体地说,闪存34存储文件数据块35。每个数据块被定义为包括预定块尺寸的数据字节。这样的预定块尺寸一般是512字节,但是可以根据闪存34的擦除扇区的具体大小而变。如上所述,擦除扇区一般是64KB,但是可以从512字节一直到512KB。NVRAM 32的一个用途是存储非易失数据31,该数据一般是文件分配表(FAT)31。FAT 31被保存在NVRAM 32中,以跟踪在NVRAM 32和闪存34中存储的文件数据的位置和状态。NVRAM 32也被用于将被称为最后数据部分33的文件数据字节存储在缓冲区Z 37中。DRAM30A包含另一个缓冲区Y 36。缓冲区Y 36和缓冲区Z 37都被配置为包括足够的用于包含一个数据块的存储空间。
在图4中,数据输入40由处理器22接收。与含有缓冲区Y 36的DRAM耦合的处理器22处理数据输入40,以根据数据管理器24的编程指令来确定它应当被存储在哪个存储器。如图4所示,数据输入40最终产生三个数据流:(1)文件数据块35;(2)最后数据部分(文件数据字节)33和(3)非文件数据(FAT)31,它被生成或更新来识别或记录数据输入40的状态。文件数据块35将被直接写入闪存34中,而最后数据部分33和FAT 31将被存储在NVRAM 32中。在将最后数据部分33转移到闪存34之前将其写入NVRAM 32的过程被称为缓存,下面将会更详细地描述。随着附加的数据被继续接收到DRAM30A中,另一个最后数据部分将被写入NVRAM 32中,直到缓冲区Z37被确定为已满,这意味着已被存储在缓冲区Z 37中的文件数据加上附加的数据达到了预定的块尺寸。此时,文件数据块35将从缓冲区Z传送到闪存34中。最后数据部分的剩余部分保留在缓冲区Z中。闪存34的一个完整扇区可被写入,从而避免擦除和重写单独的位。缓存过程的结果就是闪存的写效率和寿命预期都增加了。
在图5中演示了数据管理器24执行的缓存过程的具体流程。数据管理器24开始于步骤50,将含有X字节的文件数据接收到DRAM30A中。无论何时要存储文件数据,它都被发送到DRAM 30A中的缓冲区Y 36,并且处理器22在步骤52确定缓冲区Y 36是否满。换言之,处理器22确定缓冲区Y 36中的数据是否已达到预定义的块尺寸。如果缓冲区Y 36已满,则根据步骤54,文件数据的一个数据块将被直接写入闪存34。同时,如步骤56所示,NVRAM 32中的非文件数据或FAT 31将被相应更新。
在文件数据的剩余数据字节(即,(X-C)字节)上将重复从步骤50开始的相同过程,直到剩余数据被确定为不足以填充缓冲区Y 36。在该情况下,步骤58包括以下指令:剩余文件数据一次一字节地被写入NVRAM的缓冲区Z 37中。具体地说,缓冲区Z 37中的数据字节的计数增加1字节,同时剩余文件数据在计数上减少1字节。在每个字节后,步骤60确定缓冲区Z 37是否已满。如果缓冲区Z 37已满,则处理器在步骤66指示将一个数据块从缓冲区Z 37写到闪存34。一旦数据块从缓冲区Z 37移到闪存34,缓冲区Z 37就被重置为包含零个数据字节。在步骤68中,NVRAM 32中的非文件数据或FAT 31将被相应更新。
移到步骤62,所述过程进行检查以确定最后数据部分是否已被全部转移。如果没有,则过程返回步骤58,将另一个字节写入缓冲区Z。现在,因为最后数据部分在尺寸上已经小于一个块,所以缓冲区Z 37在步骤60处不可能确定为变满。当在步骤62处确定所有的剩余字节都已转移并且X=0时,过程前进到步骤64,在此处它更新NVRAM32中的FAT 31,然后该过程结束。如果就在步骤68的块转移之后,在步骤62确定剩余文件数据的所有数据字节都已被存储在缓冲区Z 37中,那么再一次步骤64将更新NVRAM 32中的FAT 31,以反映NVRAM 32和闪存34中的数据存储,并结束最后数据部分33的缓存过程。
在上述描述和相关附图中给出的教导的帮助下,这些发明所属领域的技术人员将会意识到这里阐述的发明的很多修改方案和其他实施方式。因此,应当理解,所述发明不限于所披露的具体实施方式,多种修改方案和其他实施方式想要被包括在所附权利要求的范围内。虽然这里采用了特定的术语,但是它们仅仅是用于一般性的描述含义,而不是限制目的。