用于存储修改后数据的装置、系统及方法

文档序号:6554732阅读:134来源:国知局
专利名称:用于存储修改后数据的装置、系统及方法
技术领域
本发明涉及存储修改后数据,并且尤其涉及存储修改后的写命令数据,以将其高速缓存在电池所备用(back up)的存储器的预定部分上,而无需使其所有的存储器都是非易失性的。
背景技术
在应用开始时,使数据和指令从其处理相对很慢的计算机硬盘移动到计算机的主存储器中。计算机的主存储器典型的是由动态随机存取存储器(“DRAM”)组成的,该动态随机存取存储器在某种程度上具有比盘驱动器更快的存取时间,这是因为计算机的中央处理单元(“CPU”)可更快速地到达动态随机存取存储器。然而,为了使计算机的处理速度增加,使用被称为存储器高速缓存(“高速缓存”)的短期存储器。
高速缓存是下述存储器的一部分,所述存储器是由高速静态随机存取存储器(“SRAM”)构成的而不是由计算机主存储器所使用的较慢且较便宜的DRAM构成的。高速缓存的概念基于大多数程序反复存取相同的数据和指令这样的事实。通过将尽可能多的这种信息保持在SRAM中,计算机可避免对较慢的DRAM进行存取。
有些高速缓存内置在计算机的微处理器的体系结构之中。这些内部高速缓存有时被称为1级(level 1)高速缓存。许多最新的计算机还带有有时被称为2级高速缓存的外部高速缓存。2级高速缓存位于CPU与DRAM之间。与L1高速缓存相类似,L2高速缓存是由SRAM组成的,但是它们要大的多。
通过读命令来存取存储器中的将要读取但不修改的数据(“读数据”)。通过写命令来存取存储器中的将要修改的数据(“写数据”)。当处理器必须执行指令或存取数据时,其首先顺便访问其自己的数据寄存器。如果所需数据未存在于那里,那么处理器在计算机中的各个级别的高速缓存中搜寻所需数据。如果在任何高速缓存中均未找到该数据,那么CPU在计算机主存储器中搜寻该数据。如果该数据未存在于那里,那么计算机从硬盘或备用存储系统中检索该数据。
计算机可从作为系统一部分的简单盘驱动器中取出数据,或者可从外部存储服务器中取出数据。该外部存储服务器可以具有独立盘的冗余阵列(RAID),并且可包括两个至数百个驱动器。存储服务器本身可包括许多用作盘高速缓存的存储器。
当CPU到达存储服务器以读数据或写数据、并且该数据处于由DRAM所构成的大的盘高速缓存之中时,其分别被称为“读命中”或“写命中”。如果存储服务器未能发现其目标数据,那么其被称为“未命中”。每次读未命中会引入延迟或者等待时间,这是因为存储服务器不能停止工作,并且在盘或盘阵列中检索数据。当CPU(或服务器)利用盘高速缓存来写出存储服务器上的一个扇区或多个扇区时,该服务器将那些扇区写入到其存储器中,并且在随后某个时间将那些数据降级传送(destage)至盘。存储服务器可将该数据冗余拷贝到位于其本身之内的另一控制器上以提高可用性。事实上,如果存储服务器使其所写入的存储器(例如,电池所备用的存储器)是非易失性的,那么存储服务器可以立即告诉该服务器所述写入已完成,即使数据仍未脱离盘驱动器也是如此。这通常被称为快写入(Fast Write)。
如果在将数据写入到盘或盘阵列之前电源出现故障,那么可能会丢失高速缓存数据。然而,RAM可以由电池或其他辅助电源来备用。由辅助电源所备用的这种RAM或其他存储器在这里被称作电池备用存储器(BBM)。BBM典型地可配置为保持数据高达七十二小时。此时很可能主要电源将被恢复,并且高速缓存将被刷新并且移动到盘或盘阵列。
为了提高与存储服务器相附连的服务器的性能,设计者设法使存储服务器高速缓存尽可能地大。因此,为了避免在电源发生故障的情况下丢失这些较大的高速缓存中的数据,需要较大的电池。存储服务器设计者重视大小以及计算速度,并且在计算机中的空间有限的情况下通常不会选择较大电池。为了提高相同空间量中的电池大小,需要对存储服务器体系结构进行总的重新设计,而这是很昂贵的并且通常是不切实际的。
从前面的讨论可知,很显然的是,本技术领域中的一个改进是提供一种用于将数量增加了的修改后数据存储在电池备用存储器上的装置、系统以及方法。本技术领域中的一个进一步的改进是提供这种装置、系统以及方法而无需增加电池大小或使该增加最小化。本技术领域中的另一个进一步的改进是提供这种装置、系统以及方法而基本上无需改变系统体系结构。在这里公开并请求保护这种装置、系统、以及方法。

发明内容
已经提出了本发明以响应于技术的现阶段状况,尤其是响应于当前可用存储设备还未完全解决的技术问题和需要。因此,已经提出了本发明,以提供一种用于将修改后数据专门存储在辅助电源所备用的存储器的一部分上的装置、系统以及方法,它们可克服上述现有技术中的许多或所有缺点。
用于存储修改后数据的装置具有包括下述多个模块的逻辑单元,所述多个模块被配置为从功能上执行下述必要步骤从处理器接收读和写命令;将与写命令相关联的数据专门存储在非易失性存储设备以及电池电源所备用的高速缓存的一部分中。
所述实施例中的这些模块包括用于提供备用电的电池电源以及用于对与读和写命令相关联的数据进行存储的存储器模块。在一个实施例中,该存储器模块包括在电源发生故障的情况下由电池电源所备用的一部分以及不会由电池电源备用的一部分。这些模块还包括一数据流模块,用于对流入和流出存储器模块的数据流进行控制。该数据流模块将写入数据或修改后数据专门存储在存储器模块的备用部分中。
在一个实施例中,该装置被配置为将修改后数据写入到存储器高速缓存中。高速缓存驻留在被配置用于对与写命令相关联的数据进行存储的存储器的一部分中,并且由在一个实施例中为电池的辅助电源所备用。存储器的剩余部分不会由电池电源备用。高速缓存包括用于在电源发生故障之后对写命令数据进行刷新的刷新模块。
本发明中的系统可将数据的第二拷贝存储在另一控制器卡中。该系统是由通过高速互连方法而相连的两个相同的卡组成的。还必须将该数据存储在存储器系统的非易失性区域中。如果出现了断电,那么在恢复时,可以从主要拷贝中恢复出该数据,或者如果主要拷贝受到破坏,那么可以从辅助拷贝中恢复出该数据。
本发明中的系统还可存储修改后数据。存储服务器可以具体实现为高速缓存系统,该高速缓存系统包括处理器、存储器模块、数据流模块、以及辅助电源。尤其是,在一个实施例中,该系统包括可操作地连接到处理器的存储器模块。该存储器模块包括被配置用于存储易失性数据的高速缓存。该存储器模块还包括被配置用于存储非易失性数据的非易失性存储设备。该高速缓存包括专用于与写命令相关联的数据的一部分。在一个实施例中,辅助电源是被配置用于在电源发生故障的情况下提供备用电的电池。该电池利用备用电向非易失性存储设备以及专用于与写命令相关联的数据的高速缓存部分供电。数据流模块对处理器与存储器模块之间的数据流进行控制。数据流模块将修改后数据专门存储在存储器模块的备用部分中。该系统还包括用于永久存储修改后数据或写入数据的数据存储单元。
还提供了本发明中的方法用于存储修改后数据。所公开实施例中的方法基本上包括用于实现以上就所述装置和系统的操作而言给出的功能所必需的步骤。在一个实施例中,该方法包括接收一个或多个读命令和写命令。该方法还包括将与写命令相关联的数据存储在非易失性存储设备以及辅助电源所备用的高速缓存存储器的一部分中。该方法进一步包括将与读命令相关联的数据存储在不由电池所备用的高速缓存存储器的一部分中。
在整个说明书中对特征、优点的描述或者类似语句并不意味着利用本发明可以实现的所有特征和优点均应当或确实处于本发明的任何单个实施例中。相反,应该明白的是,涉及该特征和优点的语句是指结合该实施例所描述的特定特征、优点、或特性包含在本发明的至少一个实施例之中。因此,在整个说明书中对该特征和优点的讨论以及类似语句可以但不是必须涉及同一实施例。
此外,在一个或多个实施例中可以以任何适当的方式将本发明的所述特征、优点、以及特性组合在一起。本领域普通技术人员可以知道的是,无需特定实施例的一个或多个特定特征或优点也可实施本发明。在其他情况下,在某些实施例中可知道未存在于本发明所有实施例之中的另外的特点及优点。
从以下说明和所附权利要求中可更完全显而易见地得知本发明的这些特征及优点,或者它们可从如下文所阐述的本发明的实践中得知。


为了很容易理解本发明的优点,通过参考附图中所说明的特定实施例来对上面所简要描述的本发明进行更加详细的描述。应当理解,这些附图仅描述了本发明的典型实施例,并且因此不应将其认为是对本发明范围的限定,通过使用附图而利用附加的特定性和细节对本发明进行描述和说明,其中图1给出了根据本发明的用于存储修改后数据的系统的一个实施例的示意性方框图;图2给出了适于和图1中的系统一起使用的存储器模块装置的示意性方框图;图3给出了适于和图1中的系统一起使用的存储器模块装置的另一实施例的示意性方框图;图4给出了用于说明根据本发明的修改后数据存储方法的一个实施例的示意性流程图;以及图5给出了用于说明可以在图1中的修改后数据存储系统上实现的数据恢复方法的一个实施例的示意性流程图。
具体实施例方式
为了更加特别地强调其实施独立性,已将在说明书中所描述的许多功能单元标记为模块。例如,模块可以作为由包括有定制的VLSI电路或门阵列以及诸如逻辑芯片、晶体管、或其他独立元件这样的成品半导体的硬件电路来实现。模块还可以以诸如现场可编程门阵列、可编程阵列逻辑、可编程序逻辑设备等这样的可编程硬件设备来实现。
模块还可以以由各种类型的处理器所执行的软件来实现。可执行代码的标识模块可以例如包括下述计算机指令的一个或多个物理或逻辑单元,其中所述计算机指令例如可以被组织成为对象、过程、或功能。然而,标识模块的可执行代码不必在物理上位于一起,但是可包括存储在不同位置上的全异指令,当该全异指令在逻辑上结合在一起时,该全异指令构成该模块并且可实现该模块的指定目的。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在不同程序当中的若干不同代码段上且可分布在若干存储器设备上。类似地,在这里可在模块之内对操作数据进行标识及说明,并且该操作数据可以以任何适当的形式实现并且组织在任何适当类型的数据结构之内。可以将该操作数据收集作为单个数据集,或者可以使其分布在包括有不同存储设备这样的不同位置上,并且至少部分地仅作为系统或网络上的电信号而存在。
在整个说明书中对“一个实施例”、“一实施例”的描述或者类似语句是指结合该实施例所描述的特定特征、结构、或特性包含在本发明的至少一个实施例之内。因此,在整个说明书中所出现的短语“在一个实施例中”、“在一实施例中”、以及类似的语句可以但不是必须涉及同一实施例。
所提及的信号承载介质可采用任何这样的形式,该形式可产生信号、可使信号产生、或者可使得在数字处理装置上执行机器可读指令的程序。信号承载介质可以实现为传输线、高密度盘、数字录像盘、磁带、伯努利(Bernoulli)驱动器、磁盘、穿孔卡、闪速存储器、集成电路、或其他数字处理装置存储设备。
此外,在一个或多个实施例中可以以任何适当的方式来组合本发明中的所述特征、结构、以及特性。在下面的说明中,提供了诸如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的示例这样的许多具体细节,以提供对本发明实施例的彻底理解。然而,本领域普通技术人员可以明白的是,无需一个或多个这些具体细节即可实施本发明,或者利用其他方法、部件、材料等也可实施本发明。在其他情况下,为避免使本发明的方面难以理解而未示出或未详细地描述众所周知的结构、材料、或操作。
图1给出了根据本发明的有代表性的修改后数据存储系统100的一个实施例的示意性方框图。该系统100包括具有处理器104的控制器102、微处理器系统102、或另一适当的逻辑设备。处理器104包括数据流模块106和刷新模块108。刷新模块108可操作地连接到存储器模块110,并且被配置用于在电源发生故障之后对存储器模块110的高速缓存部分中的修改后数据进行刷新。
控制器102还包括存储器模块110,该存储器模块110包括有易失性计算机存储器112和非易失性计算机存储器114。在实施例中,非易失性计算机存储器114包括第一非易失性存储设备。在双控制器系统中,每当在第一控制器102中对数据进行修改时,将该数据的拷贝写入到第二控制器(未示出)的非易失性存储器上的第二非易失性存储设备中。因此,非易失性存储设备或冗余数据存储设备包括由双控制器系统中的第二控制器所修改的数据的拷贝。存储器模块可操作地连接到处理器104。存储服务器高速缓存可以驻留在易失性存储器112中,或包括有一部分易失性存储器112。主机120随后请求高速缓存中的来自存储服务器的数据,无需转到盘驱动器116的阵列即可快速地传送或更新数据。如下面更详细地描述的那样,高速缓存存储易失性数据。非易失性存储器或“永久”存储器114存储非易失性数据,并且可以包括盘存储单元116,该盘存储单元116包括但不局限于永久存储设备阵列、计算机上的硬盘、磁带存储设备、光存储设备或磁存储设备等。如上所讨论的,非易失性存储器114还可以包括第一非易失性存储设备,该第一非易失性存储设备包括由双控制器系统中的第二控制器所修改的数据的冗余拷贝。系统100还可以通过计算机网络124而与主机120的阵列相连。主机120可以处于一个或多个位置上,并且可执行下述一个或多个应用,所述应用可将数据存储在系统100上并对其进行检索。系统100还可以是存储区网络(SAN)的一部分。
如下面所更详细讨论的,高速缓存包括专用于存储修改后数据的存储器的一部分。该系统还包括辅助电源122,其用于在主要电源(未显示)发生故障的情况下将备用电专门提供给非易失性存储器114以及专用于存储修改后数据的易失性存储器112的一部分。
数据流模块106可操作地与存储器模块112相连,并且对流入和流出存储器模块110的数据流进行控制。在一个实施例中,数据流模块106便于使数据移动到以及移出盘116,并且还便于使数据移动到以及移出主机120。数据流模块110将修改后数据专门存储到易失性存储器112的高速缓存部分和非易失性存储设备中。数据流模块110还被配置用于当存储器模块失效时或者当在预定时间阈值内未存取数据时,从存储器模块110的高速缓存中移除修改后数据。当填充了预定量的高速缓存时,数据流模块100也从存储器模块110的高速缓存中移除修改后数据。
图2说明了用于描述图1中的存储器模块110的一个实施例的示意性方框图。存储器模块110与辅助电源122一起形成了用于存储修改后数据的装置的一部分。在主要电源发生故障的情况下,辅助电源122将电能提供给存储器模块。在一个实施例中,辅助电源是电池122。在可替换实施例中,辅助电源是一燃料电池。在其他实施例中,用于存储修改后数据的存储器具有其自己的电源并且不需要辅助电源。例如,可以将修改后数据存储在铁制随机存取存储器(FRAM)或磁性随机存取存储器(MRAM)上。本领域普通技术人员应该理解的是,可替换的辅助电源可用于实施本发明的教导。
存储器模块110包括高速缓存113。高速缓存113包括被配置用于存储修改后数据的一部分208。剩余部分204不存储修改后数据。被配置用于存储修改后数据的高速缓存113的这部分被称为写高速缓存208,并且包含有与写命令或写数据相关联的数据。存储器模块110包括第一部分200和第二部分202。第一部分200被配置用于接收来自辅助电源122的电能。第二部分202不与辅助电源122相连。存储器模块的第一部分200包括被配置用于存储未修改数据的高速缓存部分208以及非易失性存储器114。
只有写高速缓存208包含已修改的但仍未写入到盘116中的数据。读高速缓存204不包括任何修改后数据。在一个实施例中,当来自服务器或主机的命令适用于其处于或未处于高速缓存113之中的数据时,读高速缓存是计算机主存储器的一部分。如果是这样并且其用于读数据,那么可对该数据进行快速存取。如果其未处于高速缓存113中,那么从盘116中对其进行检索并且将其置于读高速缓存204之中。因为读数据未被修改,因此通过定义可使更永久的盘116存储设备中已存在有该数据的拷贝。如果在从读高速缓存204中检索出该数据之前主要电源发生故障,那么该数据将不会丢失。然而,如果在将写高速缓存中的更新数据写入到永久存储设备之前发生了电源断电,那么该数据将会丢失。对于存储设备服务器而言这是不可接受的。因为高速缓存是易失性数据的一部分,因此在将其保存之前主要电源故障可能会毁坏数据。
通过正好对包含有修改后数据的高速缓存部分进行备用,相同大小的电池现在在与对整个高速缓存进行备用的电池相同的持续时间内可将电能提供给大小增加了的写高速缓存208。
在一个实施例中,被配置用于存储修改后数据的部分比存储器的大约六十四分之一要大。这部分还被配置用于存储比存储器的大约八分之一要小的数据。在另一实施例中,被配置用于存储修改后数据的这部分介于存储器的大约二十分之一与大约六分之一之间。在一个实施例中,高速缓存113处于存储器的大约二十分之一与大约六分之一之间。如下面所更详细讨论的,存储器是由一系列动态直列式(in line)存储器模块DIMM 300组成的。在八个DIMM 300的存储器配置中,有两个DIMM 300专用于写高速缓存208和非易失性存储器114中的修改后数据。
在一个实施例中,数据流模块106和刷新模块108可以包括可执行代码,这些代码驻留在包含在存储器模块110之中的存储器中。数据流模块110可操作地与存储器模块100相连,并且对流入和流出存储器模块110的数据流进行控制。数据流模块110将修改后数据或写命令专门存储在存储器模块110的第一部分200中。数据流模块106将修改后数据引导到第一部分200或存储器高速缓存113的电池备用部分。数据流模块还将修改后数据引导到非易失性存储设备。在该配置中,将所有修改后数据的拷贝存储在作为控制器的非易失性存储器之一的一部分的非易失性存储设备中。因为辅助电源122保持向这个存储设备114供电,因此在主要电源发生故障期间存储在这里的数据将不会丢失。
数据流模块106被配置用于当所述数据已存储在第一部分200之中长达预定时间阈值之久时,从存储器模块110的第一部分200中移除数据或对数据进行降级传送。因此,当数据长时间位于高速缓存中时,将其写入到盘116中并且将写高速缓存208中的空间释放给其他数据。在一个实施例中,数据流模块106利用最近最少使用算法确定高速缓存中陈旧的数据。一旦已从写高速缓存208中移除了写数据或修改后数据,就不必使其副本数据保持在位于分离的控制器之中的非易失性存储设备中,因此还可从那里移除数据。当与双控制器系统中的第二控制器相关联的修改后数据已被写入到盘中时,一个实施例中的数据流模块从非易失性存储设备中移除数据。
数据流模块106被配置用于当预定量的第一部分200已填满数据时,从存储器模块110的第一部分200中移除数据。数据流模块106还对与修改后数据在任何给定时间所占据的第一部分200的最大数量相关联的值进行存储。实际上,数据流模块106对在任何给定时间存储在专用于修改后数据的高速缓存208、高速缓存的剩余部分204、或者非易失性存储设备之中的数据量的高水位标志(high water mark)进行追踪。当不断地达到高水位标志时,数据流模块106可以对分配给写高速缓存208和非易失性存储器114的存储器的数量进行调节。根据与修改后数据所占据的第一部分200的最大数量相关联的存储值,数据流模块106可对在从第一部分200中移除数据之前进行填充所必需的第一部分200的预定数量进行调节。本领域普通技术人员应该明白的是,在移除数据之前所填充的第一部分200的数量将不会超过辅助电源所备用的存储器的数量。在一个实施例中,根据最近最少使用算法移除数据。
用于接收、修改、并且将修改后数据专门存储在电池备用存储器中的这些及其他装置可被实现用以实践本发明的教导。
图3给出了存储器模块106的一个实施例。在该实施例中,八个DIMM 300用于存储器的第一部分200和第二部分202。有两个DIMM300包括存储器模块的第一部分200;一个DIMM 300用于写高速缓存208,并且一个DIMM 300用于非易失性存储器114。这两个DIMM300与辅助电源122相连并且构成了电池备用存储器。在该配置中,本发明可使其写高速缓存208存储器系统乘以其所有DIMM 300由电池所备用的数据存储系统的四分之一。在一个实施例中,控制器102包括少于八个的DIMM。在另一个实施例中,控制器102包括多于八个的DIMM。在这些可替换实施例中,前两个DIMM可以使用辅助电源,而随后的DIMM不可以。前两个DIMM构成了存储器的第一部分200。该系统可自动调节写高速缓存208、剩余高速缓存204、以及非易失性存储器114的大小以使存储器的大小增减,但并不是使写高速缓存208和非易失性存储器114大于辅助电源所备用的存储器的大小。
通常将下述的示意性流程图框图阐述为逻辑流程图框图。因而,描述顺序以及标记步骤表示所提供的方法的一个实施例。可以想到与所说明的方法的一个或多个步骤、或其一部分是在功能、逻辑、或者效果方面等效的其他步骤和方法。另外,所采用的格式和符号被提供用于对该方法的逻辑步骤进行解释,并且应该理解的是其并不是对该方法的范围进行限制。虽然在流程图框图中采用了各种箭头类型和线条类型,但是应该理解的是它们并不是对相应方法的范围进行限制。实际上,一些箭头或其他连接符可用于仅表示该方法的逻辑流程。例如,箭头表示所描述方法的列举步骤之间的未指定持续时间的一个等待或监控时段。另外,特定方法进行的顺序可以或者可不严格遵循所示相应步骤的顺序。
图4给出了用于说明根据本发明的修改后数据存储方法的一个实施例的示意性流程图框图。在一个实施例中,该方法是通过下述信号承载介质来执行的,所述信号承载介质有形地包含可由数字处理装置执行的机器可读指令的程序以执行用于存储修改后数据的操作。该操作和方法包括接收一个或多个读和写命令。此后将与写命令相关联的数据存储在电池电源所备用的高速缓存存储器的一部分中,并且将其写入到也由电池电源所备用的相配控制器卡的NVS区域中。读命令引起对读高速缓存的搜索,以确定是否已存在该数据。如果不存在,那么从盘中取出该数据并且使其返回到主机并存储在读高速缓存中,从而使得如果再次对其进行存取,那么其在那里。由此,将修改后数据写入到存储器所备用的高速缓存中,但是并不写入未修改数据。
利用从处理器所接收到的主机命令402而开始该方法(400)。此后该方法确定该命令是否用于写数据(404)。如果不是这样,那么该方法确定所请求的数据是否处于读高速缓存、写高速缓存、或者非易失性存储器之中(406)。如果不是这样,则从盘中检索该数据(408)。如果是这样,则仅将该数据提供给主机(450)。此后该方法接收另一主机命令402。
如果主机命令是用于写数据的,那么确定写高速缓存208中是否存在空间(410)。如果不存在足够的空间,那么将写高速缓存208降级传送到盘412,并从非易失性存储设备(NVS)中移除相应数据414。确定所期望的数据是否处于读高速缓存204之中(416)。如果是这样,那么系统检查写高速缓存中是否存在空间。如果没有,那么通过将一个条目降级传送到盘并且释放另一侧上的NVS而释放一个位置(slot)。取消对读高速缓存204中的预先占用空间的分配(422),以允许有更多的空间用于所读取的数据。由此,存储与写命令相关联的数据,包括在不由电池备用的高速缓存的一部分中找到写数据,并且在电池所备用的高速缓存中为该数据分配空间。在该方案中将写数据存储在电池备用高速缓存中,并且释放读高速缓存中的空间或者不由电池备用的高速缓存中的空间或者取消所述空间的分配。
如果用于写数据的命令已在写高速缓存208中了(423),那么对该命令进行索引(424),并且更新写高速缓存208上的写数据(426),并且还更新另一控制器上的NVS并接收一新命令402。如果写数据不在读高速缓存204中或者在写高速缓存中对写高速缓存208空间进行分配(430),那么对该命令进行索引(424),更新写高速缓存208上的写数据(426),还更新另一控制器上的NVS,并且接收新命令402。此后对新命令进行处理。在一个实施例中,直到确定了主机所请求的数据不在高速缓存中之后,才执行用于分配空间的步骤410、412、以及414。
由此,将与写命令相关联的数据存储在电池所备用的高速缓存存储器的一部分中,包括确定是否存在用于存储数据的空间。它还包括对数据进行降级传送并且释放数据所驻留的存储器上的空间。它还包括确定是否正在更新所读取的数据。如果是这样的话,则必须取消对所读数据的分配,并且在电池所备用的区域中形成一新条目。
例如,主机或服务器可能希望读4k数据。对高速缓存204和208这两者进行检查。如果数据不在那里,那么处理器可能必须转到盘116以取得该数据。在实际的实践中,基于高速缓存算法,将所请求的4k数据周围的64k数据部分升级传送(stage)到读高速缓存。如果该数据是读数据,那么不必对其进行更新并且可以在任何时候在使用之后使其无效,这是因为它没有被修改。数据的版本与驻留在盘116上的数据的版本相同。
图5给出了用于说明可以在修改后数据存储系统100上实现的数据恢复方法的一个实施例的示意性流程图框图。通过确定是否存在断电(502)而开始该方法500。周期性地重复该步骤,直到确定存在断电为止。当发生了主要电源故障时,将写高速缓存208置于自刷新模式(504)。
本发明的一个当前实施例中的每个DIMM 300具有自更新模式。处理器可告诉保持修改写数据的每个DIMM 300或保持非易失性存储的每个DIMM 300进入自更新模式。在一个实施例中,将DIMM 300配置成具有位于其本身芯片上的刷新计时器并且刷新其本身。因为这些DIMM 300是电池所备用的,因此可断开子系统的剩余部分的电源,并且这些DIMM 300将保持其存储器中的内容。即使控制器进入睡眠也不会丢失这些DIMM 300上的数据。
当电源恢复时,刷新模块向DIMM 300或保持写数据和非易失性存储的存储器模块的部分发出一命令,并且告诉该存储器部件以从睡眠状态中醒来并开始对其进行存取。现在高速缓存恢复代码开始运行(510),并且检查所有结构,并对所有修改后数据进行降级传送、核实其准确度、并且将数据写入到盘中。就此,盘116是最新的,并且处理结束(512)。
在不脱离本发明的精神或基本特征的情况下,可以其他特定形式实现本发明。所描述的实施例在各个方面都仅被认为是说明性的而并非是限制性的。因此,本发明的范围由随后的权利要求而不是前述说明来表示。在权利要求的等效内容的含义及范围之内进行的所有变化都将包含在其范围之内。
权利要求
1.一种用于存储修改后数据的装置,该装置包括辅助电源,用于在主要电源发生故障的情况下供电;存储器模块,用于存储数据,该存储器模块包括第一部分和第二部分,第一部分被配置用于接收来自辅助电源的电能;数据流模块,可操作地连接到存储器模块,用于对流入和流出存储器模块的数据流进行控制,该数据流模块将修改后数据专门存储在存储器模块的第一部分中。
2.根据权利要求1的装置,其中辅助电源是电池。
3.根据权利要求1的装置,其中存储器模块的第一部分包括用于存储修改后数据的高速缓存存储器。
4.根据权利要求1的装置,其中第一部分包括第一非易失性存储设备。
5.根据权利要求1的装置,其中数据流模块将修改后数据引导到存储器模块的存储器高速缓存中。
6.根据权利要求1的装置,其中数据流模块将修改后数据拷贝到第二非易失性存储设备。
7.根据权利要求1的装置,其中第一部分的大小大于存储器模块的大约六十四分之一。
8.根据权利要求1的装置,其中第一部分的大小小于存储器模块的大约八分之七。
9.根据权利要求1的装置,其中第一部分的大小介于存储器模块的大约二十分之一与大约六分之一之间。
10.根据权利要求1的装置,其中由该装置自动确定第一部分的大小。
11.根据权利要求1的装置,其中数据流模块被配置为当在预定时间阈值之内未对存储器模块的第一部分中的数据进行存取时,从存储器模块的第一部分中移除该数据。
12.根据权利要求1的装置,其中数据流模块被配置为当预定数量的第一部分已填满了数据时,从存储器模块的第一部分中移除数据。
13.根据权利要求12的装置,其中数据流模块对与修改后数据在任何给定时间所占据的第一部分的最大数量相关联的值进行存储。
14.根据权利要求12的装置,其中数据流模块被配置为根据所存储的、与修改后数据所占据的第一部分的最大数量相关联的值,对在从第一部分中移除数据之前进行填充所必需的第一部分的预定数量进行调节。
15.一种用于存储修改后数据的高速缓存,该高速缓存包括存储器的一部分,被配置用于存储修改后数据,所述部分由辅助电源而备用;存储器的一部分,被配置用于存储未修改数据,所述部分不与辅助电源相连;以及刷新模块,用于在主要电源出现故障之后对修改后数据进行刷新。
16.根据权利要求15的高速缓存,其中被配置用于存储修改后数据的这部分的大小大于存储器的大约六十四分之一。
17.根据权利要求15的高速缓存,其中被配置用于存储修改后数据的这部分的大小小于存储器的大约八分之七。
18.根据权利要求15的高速缓存,其中被配置用于存储修改后数据的这部分的大小介于存储器的大约二十分之一与大约六分之一之间。
19.一种用于存储修改后数据的系统,该系统包括处理器;存储器模块,可操作地连接到处理器,该存储器模块包括被配置用于存储易失性数据的高速缓存以及被配置用于存储非易失性数据的非易失性存储设备,该高速缓存包括专用于存储修改后数据的存储器的一部分;辅助电源,用于提供备用电,该辅助电源被配置用于在主要电源发生故障的情况下专门向非易失性存储设备以及专用于存储修改后数据的高速缓存部分供电;数据流模块,可操作地连接到存储器模块,用于对在处理器与存储器模块之间的数据流进行控制,该数据流模块将修改后数据专门存储在高速缓存和非易失性存储设备中;以及盘存储单元。
20.根据权利要求19的系统,进一步包括刷新模块,该刷新模块可操作地连接到存储器模块,用于在电源发生故障之后刷新高速缓存部分中的修改后数据。
21.根据权利要求19的系统,其中数据流模块被配置为当在预定时间阈值之内未对存储器模块的高速缓存中的修改后数据进行存取时,从存储器模块的高速缓存中移除该修改后数据。
22.根据权利要求19的系统,其中数据流模块被配置为当预定数量的高速缓存已被填满时,从存储器模块的高速缓存中移除修改后数据。
23.一种信号承载介质,该信号承载介质有形地包含可由数字处理装置执行的机器可读指令的程序以执行用于存储修改后数据的操作,该操作包括接收一个或多个读和写命令;将与写命令相关联的数据存储在电池电源所备用的非易失性存储设备中;将与写命令相关联的数据存储在电池电源所备用的高速缓存存储器的一部分中;以及将与读命令相关联的数据存储在不由电池电源所备用的高速缓存存储器的一部分中。
24.根据权利要求23的信号承载介质,其中将与写命令相关联的数据存储在电池所备用的高速缓存存储器的一部分中的操作包括确定是否存在空间用以存储该数据。
25.根据权利要求23的信号承载介质,进一步包括将存储器的电池备用部分中的某些数据升级传送到盘存储单元中。
26.根据权利要求25的信号承载介质,进一步包括释放所升级传送的数据所驻留的存储器的电池备用部分上的空间。
27.一种用于存储修改后数据的方法,该方法包括接收读命令和写命令;将与写命令相关联的数据存储在非易失性存储设备中;将与写命令相关联的数据存储在电池所备用的高速缓存存储器的一部分中;以及将与读命令相关联的数据存储在不由电池所备用的高速缓存存储器的一部分中。
28.根据权利要求27的方法,其中将与写命令相关联的数据存储在电池所备用的高速缓存存储器的一部分中的步骤包括确定是否存在空间用以存储该数据。
29.根据权利要求27的方法,其中存储与写命令相关联的数据的步骤包括确定是否取消对下述空间的分配,所述空间与存储在不由电池所备用的高速缓存存储器的一部分上的数据相关联。
30.根据权利要求27的方法,其中存储与写命令相关联的数据的步骤包括在不由电池所备用的高速缓存的一部分中找到所述数据;在电池所备用的高速缓存中为所述数据分配空间;将所述数据存储在电池备用的高速缓存中;并且释放不由电池所备用的其内存在有所述数据的高速缓存中的空间。
31.一种用于存储修改后数据的装置,该装置包括用于接收读指令和写命令的装置;用于将与写命令相关联的数据存储在非易失性存储设备中的装置;用于将与写命令相关联的数据存储在电池所备用的高速缓存存储器的一部分中的装置;以及用于将与读命令相关联的数据存储在不由电池所备用的高速缓存存储器的一部分中的装置。
全文摘要
公开了一种用于存储修改后数据的装置、系统、以及方法。该装置包括用于提供备用电的电池电源。该装置还包括用于存储数据的存储器模块。该存储器模块包括一备用部分和一非备用部分。在电源发生故障的情况下电池电源仅对备用部分进行备用。数据流模块对流入和流出存储器模块的数据流进行控制。数据流模块将修改后数据专门存储在存储器模块的备用部分中。
文档编号G06F1/26GK1821980SQ20061000902
公开日2006年8月23日 申请日期2006年2月16日 优先权日2005年2月17日
发明者迈克尔·托马斯·本哈斯, 马修·约瑟夫·卡洛斯, 卡罗尔·斯帕内尔, 安德鲁·戴尔·沃尔斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1