高速缓存器元数据的存储的制作方法

文档序号:6357829阅读:155来源:国知局
专利名称:高速缓存器元数据的存储的制作方法
技术领域
本发明涉及操作系统,更具体地说,涉及操作系统中的高速缓存存储器(cache memory)设备。
背景技术
计算机中高速缓存器(cache)的使用减少了访问存储器的时间,提高了设备的整体速度。通常,高速缓存器是作为设备的临时存储区域使用的存储器区域,访问它的时间比访问它所高速缓存的设备的时间更短。处理器频繁访问的数据在被初次访问后即保持在高速缓存器中,以后可以通过访问所述高速缓存器来获取同一数据。
两种类型的高速缓存(caching)被普遍使用,即存储器高速缓存(memory caching)和磁盘高速缓存(disk caching)。存储器高速缓存器,有时候也称为超高速缓存(cache store),一般是高速存储器设备,比如静态随机访问存储器(SRAM)。因为大多数程序重复访问同样的数据或者指令,所以存储器高速缓存是非常有效的。
磁盘高速缓存依据与存储器高速缓存同样的原理工作,但是它使用象动态随机访问存储器(DRAM)这样的常规存储器设备。最近被访问的磁盘数据存储在磁盘高速缓存器中。当程序需要访问该磁盘数据时,磁盘高速缓存器首先被检查,以查看数据是否在磁盘高速缓存器中。磁盘高速缓存可以大大提高应用程序的性能,因为访问RAM(随机访问存储器)中一个字节的数据可以比访问磁盘上的一个字节快成千上万倍。
SRAM和DRAM都是易失的。因此,在使用易失存储器作为高速缓存存储器的系统中,当系统电源切断时,存储在高速缓存存储器中的数据会丢失。于是,一些现有设备可能有备用电池,通过不让设备断电,来“模拟”非易失高速缓存器的行为。然而,模拟的高速缓存器的使用增加成本,降低设备的可靠性,从而使其对用户没有吸引力。
在其它设备中,数据从高速缓存器被移至非易失存储设备,以在系统关机或者电源故障期间保存高速缓存器数据。然而,为了使用已经存储在非易失存储设备上的数据,需要保存高速缓存器状态或者元数据(meta-data)。如果没有保存该状态,则系统仍需要重新初始化高速缓存器,因为目前高速缓存器中的数据状态是未知的。
虽然在较小的高速缓存器(几十兆字节)中初始化时间不长,但是初始化千兆字节(Gigabyte)范围的高速缓存器的时间可能持续得比一般个人计算机(PC)的一个使用期还长。


以下将参照附图,详细描述本发明,图中相同的标号表示同一元件,其中图1是根据本发明的一个实施例的示例性系统;图2是根据本发明的一个实施例的示例性存储器布局;和图3示出了根据本发明的一个实施例的示例性存储方法。
具体实施例方式
为使本发明能被彻底理解,下面的介绍给出了具体细节。例如,为了不至于在次要细节方面混淆本发明,方框图中示出了某些电路。然而,本领域的技术人员将会理解,没有这些具体细节也可以实施本发明。
如本文所公开的,“高速缓存器”指临时存储区域,可以是存储器高速缓存器,或者是磁盘高速缓存器。术语“系统启动”既指首次打开电源时对计算机的初始化(称为冷启动),又指重启计算机时对计算机的初始化(称为热启动)。术语“计算机可读介质”包括但并不仅限于便携式的或者固定式的存储设备、光学存储设备和任意其它的能够存储计算机指令和/或数据的存储器设备。术语“计算机指令”是软件或者固件,包括可以被读取和/或执行以完成某些任务的数据、代码和应用程序。
通常,将非易失存储介质作为非易失数据高速缓存器使用。在本发明的一个实施例中,高速缓存器状态元数据存储在非易失存储介质的分区部分中。通过将此元数据存储在非易失存储介质中,电源故障或者正常的系统关机期间,高速缓存器状态可以被保存。
图1示出了实现本发明原理的系统100的示例性实施例。系统100包括通过总线130耦合至主存储器120的处理器110。主存储器120可以包括随机访问存储器(RAM),并耦合至存储器控制中枢(memory controlhub)140。存储器控制中枢140还被耦合至总线130、非易失存储高速缓存器设备150和大容量存储设备160。大容量存储设备160可以是硬盘驱动器、软盘驱动器、光盘(CD)驱动器、闪存(Flash memory)(NAND和NOR型,每个单元包括多个比特)、铁电性RAM(FRAM)、或者聚合体FRAM(PFRAM)或者任意其它的现有的或者未来的用于存储大量信息的存储器设备。存储器控制中枢140控制主存储器120、非易失存储高速缓存器设备150和大容量存储设备160的运行。最后,许多输入/输出设备170,例如键盘、鼠标和/或显示器,可以耦合至总线130。
虽然图中示出的系统100是具有单处理器的系统,但是本发明也可以用多处理器实现,其中增加的处理器也被耦合至总线130。这种情况下,各个增加的处理器共享非易失存储高速缓存器设备150和主存储器120,以将数据和/或指令写入其中,并从其中读取数据和/或指令。而且,图中非易失存储高速缓存器设备150在大容量存储器160之外。然而,非易失存储高速缓存器设备150可以在系统中的任意非易失介质内部实施。例如,在一个实施例中,非易失存储高速缓存器设备150可以是大容量存储设备160的一部分。以下将接着描述本发明。
因为从大容量存储设备160中检索数据可能缓慢,所以可以通过将近期从大容量存储设备160访问的数据存储在象非易失存储高速缓存器设备150这样的非易失存储介质中,来实现高速缓存。下次需要数据时,可以在非易失存储高速缓存器设备150中得到该数据,由此避免了费时的在大容量存储设备160中搜索和取回。非易失存储高速缓存器设备150还可以用于写入。具体地说,数据可以高速写入非易失存储高速缓存器设备150中,然后被存储,直到所述数据在例如空闲机器周期或者大容量存储子系统的空闲周期期间被写入大容量存储设备中。
图2示出了非易失存储介质200的示例性布局,该介质包括第一部分210和第二部分220。在第一部分210中,具有相应错误校正码(ECC)的数据可以存储在具有相应块地址(block address)0、1、2、3……n的高速缓存行(cache line)“A”、“B”、“C”、“D”……“x”中。在第二部分220中,具有相应ECC的高速缓存行“A”、“B”、“C”、“D”……“x”的元数据可以分别存储在块地址“n+1”、“n+2”……“n+m”中。这里,ECC用于恢复存储在相应块地址中的元数据。而且,虽然图中示出的非易失存储介质200有512字节的存储器行(memeryline),但是高速缓存行的大小可以根据系统100的需要而改变。
图3示出了根据本发明的数据存储和访问方法300的示例性实施例。参照图3,非易失存储介质被分区(方框310)。在一个实施例中,所述分区是逻辑上的。使用所述非易失存储介质作为高速缓存存储器设备,图1中的存储器控制中枢140使高速缓存器数据存储在第一分区部分,例如图2中的第一部分210中;并使高速缓存器数据的元数据存储在第二分区部分,例如第二部分220中(方框320)。在一个实施例中,如图2所示,元数据被分区到压缩的(packed)元数据块中。结果,第二部分的每一行(line)可以包含几个高速缓存行的信息。
然后,如果第一部分中的一行高速缓存器数据改变,则高速缓存器数据和元数据被更新(方框330和340)。新数据被存储时,和/或现有行的所存储的数据被替换或者被解除分配以提供空间给新的行的数据时,一行高速缓存器数据可能改变。这里,任意高速缓存算法可用来更新数据和元数据。在一个实施例中,对于系统电源故障,高速缓存器数据和元数据被原子地(atomically)更新。这种原子更新的使用确保了不会有由电源故障引起的在高速缓存器数据和元数据的保持中的竞争条件(race-condition),由此确保了数据完整性的保持。
通过在非易失介质上存储元数据和数据,高速缓存器状态及其对应的数据在系统启动时可以被访问,从而大大减少了初始化高速缓存器的时间。随着高速缓存器容量的增加,例如千兆字节范围,这一点尤为有用。
因此,当需要知道高速缓存器状态时,例如当检测到系统启动时,为了确定高速缓存器状态,可以访问非易失存储介质的分区部分,来读取元数据条目。如果元数据被存储为压缩的元数据块,则非易失存储介质的分区部分的一行或一块将包含几个高速缓存行的元数据信息。因此,在一个操作中可以读取多个元数据条目。在另一个实施例中,当诸如处理器之类的主机发出数据请求时,存储元数据的非易失存储介质的分区部分可以被查询。
通常,系统操作的初始化更快将使用户受益。这可以发生在至少三个方面。首先,当打开计算机,或者用户运行新的程序时,应尽快开始操作。第二,当程序错误或者崩溃发生时,计算机应尽快重启。类似地,计算机运行过程中出现一系列问题时,有些用户可能希望简单地重启计算机,来避免处理和识别问题的来源。
一般的高速缓存器设备是易失的,必须在下次系统启动过程中重建。然而,根据本发明的存储和访问方法,则排除了这种需要和在系统启动过程中重建高速缓存器所必需的时间。通过将元数据存储在非易失存储介质的分区部分上,在下次系统启动时可以正确地确定高速缓存器状态。这使得预热高速缓存器或者将高速缓存器完全填满数据的全部好处成为可能,因为用户数据和程序代码自先前的使用期起已经存储在更快的高速缓存器中。结果,下次系统启动/开机时的系统性能提高了。
将元数据附加在每个高速缓存行上或者存储在易失系统存储器中的同时,将元数据分区到独立的阵列中,这样在成本和性能方面有几点优势。一个优点在于,分区允许将元数据存储进压缩的元数据块中以更有效地访问元数据,因为这样可以在同一操作中得到几个高速缓存行的信息,而不用向每一个高速缓存行发出专门的请求。另一优点在于,元数据的标准阵列布局可以简化布局和设备逻辑设计,降低存储器设备的总成本。而且,通过使用通过软件/固件编程而被逻辑分区以用作高速缓存器设备的大容量存储设备,可以简单而容易地实现本发明。通过减少必需的专门存储器设备设计的数量,这还降低了成本,改善了开发时间。
最后,虽然本发明是参照高速缓存存储器设备来讨论的,但是本发明的启示可以用于其它存储数据和状态数据的存储器设备。因此,前述的实施例仅仅是示例性的,不应视为是限制本发明。该启示容易被应用于其它类型的装置。本发明的介绍意在举例说明,并不是限制权利要求的范围。许多替换、修改和改变对本领域的技术人员而言是清楚的。
权利要求
1.一种方法,包括将非易失存储介质分区;将数据存储在所述非易失存储介质的第一分区部分中;和将对应于存储在所述非易失存储介质的所述第一分区部分中的数据的元数据存储在所述非易失存储介质的第二分区部分中。
2.如权利要求1所述的方法,其中将所述元数据存储为压缩的元数据块。
3.如权利要求1所述的方法,其中所述分区是逻辑上的。
4.如权利要求1所述的方法,其中将高速缓存器数据存储在所述第一分区部分中。
5.如权利要求4所述的方法,还包括当所述第一分区部分中的一行高速缓存器数据变化时,原子地更新所述数据和元数据。
6.如权利要求1所述的方法,还包括分配大容量存储设备的一部分作为所述非易失存储介质。
7.一种非易失存储器,包括用于存储数据的第一部分;和从所述第一部分分区而来的第二部分,所述第二部分用于存储存储在所述第一部分中的所述数据的元数据。
8.如权利要求7所述的存储器,其中所述第二部分用于将所述元数据存储为压缩的元数据块。
9.如权利要求7所述的存储器,其中所述第一部分和所述第二部分的所述分区是逻辑上的。
10.如权利要求7所述的存储器,其中所述非易失存储器是大容量存储设备的一部分。
11.如权利要求10所述的存储器,其中所述大容量存储设备是磁盘驱动器、闪存、铁电性随机访问存储器或者聚合体铁电性随机访问存储器的其中一种。
12.如权利要求7所述的存储器,其中所述非易失存储器是高速缓存存储器。
13.一种系统,包括具有第一部分和从所述第一部分分区而来的第二部分的非易失存储介质;和用于使所述第一部分存储数据,并使所述第二部分存储存储在所述第一部分中的所述数据的元数据的存储器控制中枢。
14.如权利要求13所述的系统,其中第二部分用于将所述元数据存储为压缩的元数据块。
15.如权利要求13所述的系统,其中所述分区是逻辑上的。
16.如权利要求15所述的系统,还包括大容量存储设备,其中所述大容量存储设备的一部分是所述非易失存储介质。
17.如权利要求13所述的系统,其中所述非易失存储介质是高速缓存存储器。
18.一种方法,包括将非易失存储介质分区;将高速缓存器数据存储在所述非易失存储介质的第一分区部分中;将对应于所述高速缓存器数据的元数据存储在所述非易失存储介质的第二分区部分中;和访问所述第二分区部分,来判断系统启动过程中所述高速缓存器数据的状态。
19.如权利要求18所述的方法,其中在所述第二分区部分中将所述元数据存储为压缩的元数据块。
20.如权利要求18所述的方法,其中所述分区是逻辑上的。
21.如权利要求18所述的方法,还包括当所述第一分区部分中的一行高速缓存器数据变化时,原子地更新所述数据和元数据。
22.一种加载于计算机可读介质中的程序,包括用于将非易失存储介质逻辑分区的第一组计算机指令;用于将数据存储在所述非易失存储介质的第一分区部分中的第二组计算机指令;和用于将所述数据的元数据存储在所述非易失存储介质的第二分区部分中的第三组计算机指令。
23.如权利要求22所述的程序,其中所述第二组计算机指令包括用于将所述元数据存储为压缩的元数据块的计算机指令。
24.如权利要求22所述的程序,其中所述第二组计算机指令包括用于将高速缓存器数据作为所述数据存储在所述第一分区部分中的计算机指令。
25.如权利要求24所述的程序,还包括用于当所述第一分区部分中的一行高速缓存器数据变化时,原子地更新所述数据和元数据的计算机指令。
26.如权利要求24所述的程序,还包括用于访问所述第二分区部分的一行,来读取所述第一分区部分中的高速缓存器数据的元数据的计算机指令。
27.一种加载于计算机可读介质中的程序,包括用于将非易失存储介质逻辑分区的第一组计算机指令;用于将高速缓存器数据存储在非易失存储介质的第一分区部分中的第二组计算机指令;和用于将存储在所述第一分区部分中的所述高速缓存器数据的元数据存储在所述非易失存储介质的第二分区部分中的第三组计算机指令;和用于访问所述第二分区部分,来判断所述高速缓存器数据状态的第四组计算机指令。
28.如权利要求27所述的程序,其中所述第三组计算机指令包括用于将所述元数据存储为压缩的元数据块的计算机指令。
29.如权利要求27所述的程序,还包括用于当所述第一分区部分中的一行高速缓存器数据变化时,原子地更新所述高速缓存器数据和元数据的计算机指令。
30.如权利要求27所述的程序,还包括用于分配大容量存储设备的一部分作为所述非易失存储介质的计算机指令。
31.一种系统启动,包括访问非易失高速缓存存储器的第一分区部分,来读取存储在所述非易失高速缓存存储器的第二分区部分中的高速缓存器数据的元数据;和根据所读取的元数据判断所述高速缓存器数据的状态,为系统启动而初始化所述非易失高速缓存存储器。
32.如权利要求31所述的系统启动,其中在所述第一分区部分中将所述元数据存储为压缩的元数据块。
33.如权利要求31所述的系统启动,其中所述非易失高速缓存存储器逻辑上分区为所述第一和第二分区部分。
34.如权利要求31所述的系统启动,还包括分配大容量存储设备的一部分作为所述非易失高速缓存存储器。
35.如权利要求34所述的系统启动,其中所述大容量存储设备是磁盘驱动器、闪存、铁电性随机访问存储器或者聚合体铁电性随机访问存储器的其中一种。
全文摘要
本发明公开了一种减少系统初始化时间的装置和方法,在一个实施例中,本发明将高速缓存存储器中的数据的元数据存储在非易失存储介质的分区部分中。这样就允许在一次操作中读取多个元数据条目,因此提高了系统性能。
文档编号G06F12/08GK1543605SQ02810691
公开日2004年11月3日 申请日期2002年6月20日 优先权日2001年6月29日
发明者小罗伯特·罗耶, 克努特·格里姆斯鲁德, 理查德·库尔森, 库尔森, 格里姆斯鲁德, 小罗伯特 罗耶 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1