CN101014929B - 使用nvram进行存储器管理的系统、方法和设备 - Google Patents

使用nvram进行存储器管理的系统、方法和设备 Download PDF

Info

Publication number
CN101014929B
CN101014929B CN2005800258281A CN200580025828A CN101014929B CN 101014929 B CN101014929 B CN 101014929B CN 2005800258281 A CN2005800258281 A CN 2005800258281A CN 200580025828 A CN200580025828 A CN 200580025828A CN 101014929 B CN101014929 B CN 101014929B
Authority
CN
China
Prior art keywords
data
memory
file
filebuf
final
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2005800258281A
Other languages
English (en)
Other versions
CN101014929A (zh
Inventor
戴维·波泰格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
United Parcel Service of America Inc
United Parcel Service Inc
Original Assignee
United Parcel Service of America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by United Parcel Service of America Inc filed Critical United Parcel Service of America Inc
Publication of CN101014929A publication Critical patent/CN101014929A/zh
Application granted granted Critical
Publication of CN101014929B publication Critical patent/CN101014929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Abstract

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

Description

使用NVRAM进行存储器管理的系统、方法和设备
技术领域
本发明总地涉及存储器存储拓扑领域,更具体地说,涉及用于改善计算设备的分离的存储器中的数据完整性和数据存储效率的系统和方法。它在采用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的缓存过程。
在上述描述和相关附图中给出的教导的帮助下,这些发明所属领域的技术人员将会意识到这里阐述的发明的很多修改方案和其他实施方式。因此,应当理解,所述发明不限于所披露的具体实施方式,多种修改方案和其他实施方式想要被包括在所附权利要求的范围内。虽然这里采用了特定的术语,但是它们仅仅是用于一般性的描述含义,而不是限制目的。

Claims (23)

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所述的手持设备,其中所述阈值块尺寸是可配置的。
CN2005800258281A 2004-07-30 2005-07-12 使用nvram进行存储器管理的系统、方法和设备 Active CN101014929B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/903,020 2004-07-30
US10/903,020 US7562202B2 (en) 2004-07-30 2004-07-30 Systems, methods, computer readable medium and apparatus for memory management using NVRAM
PCT/US2005/024586 WO2006019700A2 (en) 2004-07-30 2005-07-12 Systems, methods, computer readable medium and apparatus for memory management using nvram

Publications (2)

Publication Number Publication Date
CN101014929A CN101014929A (zh) 2007-08-08
CN101014929B true CN101014929B (zh) 2010-05-05

Family

ID=35159742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800258281A Active CN101014929B (zh) 2004-07-30 2005-07-12 使用nvram进行存储器管理的系统、方法和设备

Country Status (9)

Country Link
US (1) US7562202B2 (zh)
EP (1) EP1782176B1 (zh)
JP (1) JP2008508596A (zh)
CN (1) CN101014929B (zh)
AT (1) ATE479934T1 (zh)
CA (1) CA2574756C (zh)
DE (1) DE602005023317D1 (zh)
MX (1) MX2007001185A (zh)
WO (1) WO2006019700A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20060190425A1 (en) * 2005-02-24 2006-08-24 Yuan-Chi Chang Method for merging multiple ranked lists with bounded memory
EP1855453A1 (fr) * 2006-05-11 2007-11-14 Axalto SA Gestion de la consommation d'une carte à puce utilisée dans un dispositif mobile
JP2008033788A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法
US7996680B2 (en) * 2006-09-27 2011-08-09 Hewlett-Packard Development Company, L.P. Secure data log management
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
JP4710056B2 (ja) * 2007-10-04 2011-06-29 Necインフロンティア株式会社 情報処理装置、フラッシュメモリ管理方法およびフラッシュメモリ管理プログラム
JP2009199199A (ja) * 2008-02-20 2009-09-03 Hitachi Ltd ストレージシステム及びそのデータライト方法
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
US7719876B2 (en) 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
US8397016B2 (en) * 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
KR101573047B1 (ko) * 2009-01-23 2015-12-02 삼성전자주식회사 복합 메모리 장치 및 이를 이용한 i/o 처리 방법
US20110167197A1 (en) * 2010-01-05 2011-07-07 Mark Leinwander Nonvolatile Storage with Disparate Memory Types
WO2011096046A1 (ja) 2010-02-02 2011-08-11 株式会社 東芝 ストレージ機能を持つ通信装置
JP5330549B2 (ja) 2010-02-02 2013-10-30 株式会社東芝 ストレージ機能を持つ通信装置
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
CN104115132B (zh) 2011-12-22 2018-02-06 英特尔公司 借助于存储器通道关闭的功率节约
CN102567216B (zh) * 2011-12-29 2015-07-29 北京交控科技有限公司 提高闪存寿命的可靠性存储方法
CN102801768A (zh) * 2012-01-20 2012-11-28 华为技术有限公司 数据处理方法及系统、网络设备
JP5687648B2 (ja) * 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
US8996768B2 (en) * 2012-05-31 2015-03-31 Sandisk Technologies Inc. Method and storage device for assessing execution of trim commands
CN104615546B (zh) * 2015-02-13 2018-04-27 小米科技有限责任公司 文件数据管理方法及装置
US10019331B2 (en) * 2015-06-22 2018-07-10 Sap Se Memory allocation and recovery strategies for byte-addressable non-volatile RAM (NVRAM)
CN105117167B (zh) * 2015-08-10 2019-03-01 北京联想核芯科技有限公司 一种信息处理方法及装置、电子设备
CN105159839B (zh) * 2015-09-28 2018-05-29 北京联想核芯科技有限公司 一种配置方法和装置以及固态硬盘
CN106598473B (zh) * 2015-10-15 2020-09-04 南京中兴新软件有限责任公司 消息持久化方法及装置
CN105426779B (zh) * 2015-11-19 2018-06-05 浪潮(北京)电子信息产业有限公司 一种利用nvram保证文件系统数据安全的方法
RU2661280C2 (ru) * 2015-12-03 2018-07-13 Хуавэй Текнолоджиз Ко., Лтд. Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
US10175891B1 (en) * 2016-03-15 2019-01-08 Pavilion Data Systems, Inc. Minimizing read latency for solid state drives
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11620336B1 (en) * 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11562023B1 (en) * 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11250056B1 (en) * 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
CN107329694B (zh) * 2017-06-22 2021-05-18 苏州奈特力智能科技有限公司 数据存储控制方法、控制装置及存储设备
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
JP2019164712A (ja) * 2018-03-20 2019-09-26 東芝メモリ株式会社 記憶装置、情報処理システム及びプログラム
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
CN109710181A (zh) * 2018-12-11 2019-05-03 成都嘉泰华力科技有限责任公司 一种提高nand flash器件文件存取速度的方法及系统
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
KR20220014212A (ko) * 2020-07-28 2022-02-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189081B1 (en) * 1996-05-24 2001-02-13 Nec Corporation Non-volatile semiconductor storage with memory requirement and availability comparison means and method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571674A (en) * 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5276840A (en) * 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5481701A (en) * 1991-09-13 1996-01-02 Salient Software, Inc. Method and apparatus for performing direct read of compressed data file
US5694570A (en) * 1992-09-23 1997-12-02 International Business Machines Corporation Method and system of buffering data written to direct access storage devices in data processing systems
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5729767A (en) * 1994-10-07 1998-03-17 Dell Usa, L.P. System and method for accessing peripheral devices on a non-functional controller
US6321293B1 (en) * 1995-11-14 2001-11-20 Networks Associates, Inc. Method for caching virtual memory paging and disk input/output requests
EP1095373A2 (en) * 1998-05-15 2001-05-02 Storage Technology Corporation Caching method for data blocks of variable size
US6249841B1 (en) * 1998-12-03 2001-06-19 Ramtron International Corporation Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays
US6651142B1 (en) * 2000-05-05 2003-11-18 Sagent Technology Method and apparatus for processing data using multi-tier caching
US20030120841A1 (en) * 2001-12-21 2003-06-26 Chang Matthew C.T. System and method of data logging
AU2002353406A1 (en) 2002-12-27 2004-07-22 Solid State System Co., Ltd. Nonvolatile memory unit with specific cache
US20040193782A1 (en) * 2003-03-26 2004-09-30 David Bordui Nonvolatile intelligent flash cache memory
US20050050261A1 (en) * 2003-08-27 2005-03-03 Thomas Roehr High density flash memory with high speed cache data interface
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189081B1 (en) * 1996-05-24 2001-02-13 Nec Corporation Non-volatile semiconductor storage with memory requirement and availability comparison means and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
US10191659B2 (en) 2015-11-17 2019-01-29 Phison Electronics Corp. Buffer memory management method, memory control circuit unit and memory storage device

Also Published As

Publication number Publication date
US20060026211A1 (en) 2006-02-02
WO2006019700A2 (en) 2006-02-23
CA2574756C (en) 2013-02-12
EP1782176A2 (en) 2007-05-09
EP1782176B1 (en) 2010-09-01
ATE479934T1 (de) 2010-09-15
JP2008508596A (ja) 2008-03-21
US7562202B2 (en) 2009-07-14
DE602005023317D1 (de) 2010-10-14
WO2006019700A3 (en) 2006-10-12
MX2007001185A (es) 2007-03-21
CN101014929A (zh) 2007-08-08
CA2574756A1 (en) 2006-02-23

Similar Documents

Publication Publication Date Title
CN101014929B (zh) 使用nvram进行存储器管理的系统、方法和设备
CN102782683B (zh) 用于数据库服务器的缓冲池扩展
US20180329633A1 (en) Techniques for controlling recycling of blocks of memory
US8230184B2 (en) Techniques for writing data to different portions of storage devices based on write frequency
CN101416165B (zh) 描述和查询闪存存储的分离区域
CN102648457B (zh) 使用混合存储来延伸ssd生存期
CN1307555C (zh) 数据存储装置
CN100483362C (zh) 非易失性存储系统的内部维护调度请求
US20100077135A1 (en) Memory wear leveling method, system and device
AU2003286967B2 (en) Dual journaling store method and storage medium thereof
CN101925884A (zh) 增加存储器的备用空间以延长存储器的寿命
CN103197899A (zh) 增强基于闪存的存储的寿命和性能
CN103597444A (zh) 按照使用来管理基于闪存的存储上的数据放置
TWI454916B (zh) 儲存單元管理方法、記憶體控制器與記憶體儲存裝置
JP2010541107A (ja) ソリッドステートドライブオプティマイザ
US8161251B2 (en) Heterogeneous storage array optimization through eviction
CN101763309A (zh) 非易失性存储装置、信息记录系统及信息记录方法
US7734863B2 (en) Method for guarantying data storing space using dual journaling
KR100703680B1 (ko) 플래시 파일 시스템
CN114096952A (zh) 调整存储系统中的块池大小
EP2267725A1 (en) Memory device for managing the recovery of a non volatile memory
CN113377296B (zh) 车载终端NAND Flash的存储管理方法和系统、车载终端、车辆
CN1732516B (zh) 双日志存储方法及其存储介质
WO2007066909A1 (en) Method for guarantying data storing space using dual journaling
KR20000041918A (ko) 휴대용단말기에서 대량의 데이타 저장 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant