用于将文件的数据存储在存储块中的高速缓存方法及系统的制作方法

文档序号:6561038阅读:170来源:国知局
专利名称:用于将文件的数据存储在存储块中的高速缓存方法及系统的制作方法
技术领域
本发明涉及一种提供大容量存储文件的服务器系统的高速缓冲存储器,尤其涉及一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法和高速缓存系统。
背景技术
随着多媒体流传输服务的增加,实时提供大容量存储文件的服务器要求将文件高效载入存储器。这种载入起到确定服务器性能的主要因素的作用。具体说来,本质上要求增加网络负载的多媒体服务减少服务器的处理时间,从而减少由于大量的网络负载引起的延迟。为此,将流传输的一部分文件载入存储器,并且载入的数据继续保存,从而可减少从文件存储器读取文件所需的时间。这种存储器称为高速缓冲存储器。
图1示出在传统流传输服务器中的高速缓存系统的结构。在图1中,高速缓存系统30包括高速缓冲存储器10、文件数据读取器11、高速缓存管理模块12和存储器分配模块20。存储器分配模块20从系统的存储器分配构成高速缓存的存储器,并将关于分配的存储器的存取信息提供给高速缓存管理模块12。
如果从应用15请求数据,则高速缓存管理模块12识别请求的数据是否存储在高速缓冲存储器10中。如果请求的数据存储在高速缓冲存储器10中,则高速缓存管理模块12复制所述数据,并将复制的数据提供给应用15。如果请求的数据没有存储在高速缓冲存储器10中,则高速缓存管理模块12从文件数据读取器11读取所述数据,将所述数据存储在高速缓冲存储器10中,并将所述数据提供给应用15。
高速缓冲存储器10除了具有从文件数据读取器11读取的数据之外,还具有关于分配的存储器的存取信息,以及关于哪些文件数据被存储和文件数据的哪部分被存储的信息。高速缓冲存储器10顺序存储从高速缓存管理模块12提供的数据,如果从应用15请求的数据存在于先前存储的数据中,则高速缓冲存储器10将相应数据提供给应用15。文件数据读取器11从文件存储器50读取数据,并将所述读取的数据提供给高速缓存管理模块12。
现在将描述从文件存储器50读取数据的情况。首先,存储器分配模块20产生可用存储器,并将产生的存储器提供给高速缓冲存储器10(图1中的a)。然后,应用15请求特定文件的数据(b)。在这种情况下,文件数据读取器11从文件存储器50读取期望的数据,随后将所读取的数据提供给高速缓存管理模块12(c)。高速缓存管理模块12将读取的高速缓存数据提供给高速缓冲存储器10(d),并将所述数据发送到应用15(f)。
在从高速缓冲存储器10读取请求的数据的情况下,应用15最初请求高速缓存管理模块12提供特定文件的数据,以便读取存储在高速缓冲存储器中的数据(b)。高速缓存管理模块12从高速缓冲存储器读取请求的数据(e)。将读取的数据提供给应用15。
因此,由于在不必经过文件存储器50和文件数据读取器11的情况下,通过高速缓存管理模块12和高速缓冲存储器10来读取高速缓存的数据,所以读取速度快于从文件存储器50读取数据的情况。
图2示出文件存储在传统高速缓冲存储器中的状态。参考块61表示高速缓存数据之间的存储器状态。如果要将文件1高速缓存,则如参考块62所示,数据顺序存储在高速缓冲存储器中。如果要将文件2高速缓存,则删除文件1的内容,并将文件2的数据存储在所述存储器中。因此,如参考块63所示,只有文件2存在于高速缓冲存储器中。随后,如果要以随机存取模式将存储在存储器中的另一文件高速缓存,则如参考块64所示,从高速缓存删除现有文件2的数据,并存储新文件数据。
这样,传统高速缓存系统存在几个问题。即,如果高速缓存随机地存取文件或者多个应用各请求文件的不同部分,则必须删除现有的高速缓存数据并以新数据加载高速缓存。此外,由于将高速缓存内不是存储器指针的数据发送到应用,因此其性能会恶化。而且,在多个应用存取高速缓存的情况下,会在没有备份的情况下擦掉使用中的存储器。

发明内容
本发明的示例性实施例克服上述缺点和以上没有描述的其它缺点。此外,本发明没有必要克服上述缺点,本发明示例性实施例可以不克服任何上述问题。
本发明的一方面在于提供一种允许随机存取多个文件的高效大容量存储高速缓存系统。
本发明的另一方面在于提供一种高速缓存方法,其中,每块的存储器更新和存取不影响其它块,并且基于文件的位置信息进行高效的数据索引。
本发明的其它特点和方面将在下面的描述中部分地阐述,对于研究以下内容的本领域普通技术人员部分地变得清楚,或者通过本发明的实践得知。
本发明提供一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法,该方法包括从应用接收对于第一文件的第一数据的请求命令;检索存储第一数据的存储块;设置表示存储第一数据的所述存储块的访问信息,从而应用访问第一数据;将存储在所述存储块中的第一数据发送到应用;重新设置存储第一数据的所述存储块的访问信息。
本发明的另一方面在于提供一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存系统,该系统包括高速缓冲存储模块,用于以每个存储块存储从文件读取的数据;块分配模块,用于分配高速缓冲存储模块的存储块以存储数据;高速缓存管理模块,用于从高速缓冲存储模块检索存储从应用请求的第一文件的第一数据的存储块,并将存储在检索到的存储块中的第一数据发送到应用;其中,存储第一数据的存储块包括访问信息,所述访问信息包括请求第一数据但是没有完成第一数据的传输的应用的数量。


通过下面结合附图进行的详细描述,本发明的上述和其它特点和方面将会变得更加清楚,其中图1是示出在传统流传输服务器中的高速缓存系统的结构的示图;图2是示出文件存储在传统高速缓冲存储器中的状态的示图;图3是示出根据本发明示例性实施例的高速缓存系统的结构的示图;图4是示出根据本发明示例性实施例的高速缓存之前和之后的存储器的结构的示图;图5是示出根据本发明示例性实施例的FILEINFO和BLOCK的结构的示图;图6是示出根据本发明示例性实施例在存在多余存储块的情况下将数据分配到高速缓存的过程的示图;图7是示出根据本发明示例性实施例在不存在多余存储块的情况下将数据分配到高速缓存的过程的示图;以及图8是示出根据本发明一示例性实施例在高速缓存系统中分配和发送数据的过程的流程图。
具体实施例方式
将参照附图详细地描述本发明的特定示例性实施例。通过参照将参照附图详细描述的示例性实施例,本发明的各个方面和特点以及实现所述方面和特点的方法将变得清楚。然而,本领域的普通技术人员将了解,本发明并不受限于这里提供的对示例性实施例的描述。进一步说,以高度的抽象来描述这里限定的内容以提供对本发明全面而清楚的理解。在本发明的下面描述中,即使在不同的附图中,相同的附图标号也用于相同的部件。
以下,将参照示出框图和流程图的附图来描述根据本发明示例性实施例的用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法和高速缓存系统。本领域的普通技术人员将理解可通过计算机程序指令来实现流程图中的每个框,或者流程图中的框的组合。可将这些计算机程序指令提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以生产设备,从而通过计算机或其它可编程数字处理设备的处理器执行的指令创建用于实现在流程图的一个框或多个框中指定的功能的手段。
这些计算机程序指令也可被存储在可指导计算机或者其它可编程数据处理设备以特定方式工作的计算机可用或计算机可读存储器中,以便存储在计算机可用或计算机可读存储器中的指令生产包括实现在一个流程图方框或多个流程图方框中指定的功能的指令手段的产品。计算机程序指令也可被载入计算机或其它可编程数据处理设备以使得一系列操作步骤在计算机或其它可编程设备上被执行以产生计算机执行的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在一个流程图方框或多个流程图方框中指定的功能的步骤。
每个流程图方框可表示模块、代码段或代码部分,其包括一个或多个用于实现指定的逻辑功能的可执行指令。还应注意到,在一些可选的实现中,在方框中提到的功能会不按照它们被描述的顺序发生。例如,顺序示出的两个方框实际上可以基本同时地执行,或者所述方框有时候以相反的顺序执行,这取决于涉及的功能。
图3示出根据本发明示例性实施例的高速缓存系统的结构。在本发明的所述示例性实施例中,这里使用的术语“单元”,即,“模块”或“表”优选地指示但并不受限于执行特定任务的诸如现场可编程门阵列(FPGA)或专用集成电路的软件或硬件部件。可方便地将模块配置为驻留在可寻址存储介质上,或者可将其配置为在一个或多个处理器上执行。因此,作为示例,模块可包括诸如软件部件、面向对象的软件部件、类部件和任务部件的部件、过程、函数、属性、进程、子程序、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。可将在部件和模块中提供的功能组合成较少的部件和模块,或者将其进一步分为另外的部件和模块。
参照图3,根据本发明一示例性实施例的高速缓存系统包括块分配模块220、块列表210、高速缓存管理模块130、高速缓冲存储模块140和文件数据读取器120。
块分配模块220从系统的存储器分配构成高速缓存的存储块,并将所述存储块的指针提供给高速缓存管理模块130。
块列表210保存存储块的指针。此时,可保存先入先出(FIFO)的数据结构以高效地管理存储块。如果已经根据应用150的请求产生或使用存储块,则将相应存储块的指针链接到块列表的最后位置。如果不再分配用于存储新数据的存储块,则首先检索块列表的头,以搜索可用存储块,检索到的存储块出栈并用于存储新数据。
如果存在高速缓存的数据,则高速缓存管理模块130从高速缓冲存储模块140检索存储数据的存储块,并将检索到的存储块提供给应用150。相反,如果不存在高速缓存的数据,则高速缓存管理模块130从块分配模块220和块列表210检索存储块的指针,并复制文件数据。然后,高速缓存管理模块130将所述数据传递到应用150,从而可将所述数据存储在高速缓冲存储模块140中。
高速缓冲存储模块140管理作为列表的映射(map),所述映射存储将被高速缓存的文件的数据。每个映射管理存储文件数据的存储块的指针值。映射构成基于文件中数据的位置值的关键字。
文件数据读取器120从诸如磁盘的文件存储器110读取数据,并将所读取的数据提供给高速缓存管理模块130。
图4是示出根据本发明示例性实施例的高速缓存之前和之后的存储器的结构的示图。高速缓冲存储模块141的存储器包括具有固定大小的存储块。由于这些存储块反映存储数据之前存储器的状态,所以没有数据存储在存储块中。因此,可随时将数据存储在存储块中。如果应用请求多个提供数据的文件,则顺序分配存储块,而不考虑数据在文件中的位置和文件的类型,从而将数据顺序存储在存储块中。如参考块142所示,文件1和文件2存储在存储块中,并标记与所述文件相应的位置、索引1和索引2。将文件存储在存储块中,而不考虑文件名称和文件内的位置顺序。每个文件的结构管理分配给相应文件的存储块。索引信息示出存储块内的数据在文件内位于何处。
构成存储块的结构如下。所述结构包括将被存储在存储块中的数据、所述数据的大小、访问次数、文件映射和文件映射关键字。
typedef struct_BLOCK{unsigned char* Data[SIZE_OF_BLOCK];
int DataSize;
int RefCount;
void* FileMap;
int FileMapKey;
}BLOCK;
在组成结构的元素中,Data存储文件的数据以用于高速缓存,DataSize表示存储在Data排列中的真实文件数据的大小。如果存储块为相同的统一大小,则DataSize可表示将被存储在Data中的文件的数据的大小会小于块的大小。RefCount表示使用存储块的应用的数量。如果存在使用存储块的应用,则不删除相应存储块的内容。FileMap表示管理存储块的映射的参数。FileMapKey表示在Map参数中为存储块编索引的关键字。
为每个文件管理存储块的文件结构如下typedef struct_FILEINFO;
{intFileIndex;
void* FileMap;
}FILEINFO;
FileIndex表示文件标识信息,FileMap表示保留存储块的映射的参数。
图5示出根据本发明示例性实施例的FILEINFO和BLOCK的结构。
参考块311和312表示组成文件映射列表的FILEINFO。文件映射管理将高速缓存的文件的数据。
所述文件映射列表包括FILEINFO结构,其包括文件索引和文件映射。当另外提供将被高速缓存的文件时,将FILEINFO结构添加到文件映射列表中。文件映射可包括成对的关键字和数值,其中,关键字表示指示将被存储的数据在文件内的位置的索引,数值表示存储块的指针。文件映射表示哪个存储块存储与文件的哪个部分相应的数据。
块指针中的数字表示块被分配的顺序。块被分配的顺序不同于存储在映射中的块的位置。参照图5,根据块在文件内的位置顺序列出所述块。应注意,在文件1的情况下(311),顺序分配块2、块1、块4和块5。
图6示出根据本发明示例性实施例在存在多余存储块的情况下将数据分配到高速缓存的过程。由于存在多余存储块,所以如果应用请求特定文件,则分配与该特定文件相应的存储块。整个过程如下如果应用150请求特定文件的数据,则高速缓存管理模块130确定从应用150请求的文件的数据是否存储在高速缓冲存储模块140中。如果从应用150请求的文件的数据没有存储在高速缓冲存储模块140中,则在S102,高速缓存管理模块130从块分配模块220接收用于分配存储块的指针信息。
在S103,文件数据读取器120从文件存储器读取期望的数据并将读取的数据复制到存储块。在S104,将所述存储块的指针连同表示已经将特定文件的特定部分存储在相应存储块中的信息添加到块列表210。此时,可将所述存储块的指针添加到块列表210的最后位置,从而,可将第一个分配的存储块首先转换为可用存储块。如果没有存储请求的文件的存储空间,则可将第一个首先分配的存储块转换为可用存储块。随后将参照图7来描述这一过程。
在S105,高速缓存管理模块130将存储块的指针存储在匹配请求的文件的文件映射中。然后,高速缓存管理模块130可通过相应文件映射的信息来检索所述存储块。高速缓存管理模块130将所述存储块的指针发送到请求数据的应用150。在将存储块的指针发送到应用150之前,高速缓存管理模块130将RefCount的值加1。一旦应用150结束对存储块的使用,则高速缓存管理模块130将RefCount的值减1。这样,高速缓存管理模块130可通过检查访问次数(RefCount的值)来识别当前存储块是否处于使用中。因此,即使在没有可用的存储块被提供的情况下,也可防止使用中的存储块被删除。
图7示出根据本发明示例性实施例在不存在多余存储块的情况下将数据分配到高速缓存的过程。如果不存在多余存储块,则要求先前分配的存储块将数据分配到高速缓存。因此,假设存储块以FIFO方式彼此链接,则可重新分配第一个分配的存储块,即,存在于存储块列表的头中的存储块。此时,如果访问次数不是0,则意味着存在使用相应存储块的应用。因此,如果访问次数不是0,则通过检查紧邻存储块列表的头的存储块来进行存储块的重新分配。整个过程如下如果应用150在S111请求特定文件的数据,则在S112,高速缓存管理模块130从块列表210检索可被分配的存储块。高速缓存管理模块130首先检索块列表210的头。此时,如果访问次数RefCount不是0,则意味着另一应用使用该存储块。因此,不能分配新数据。可另外将曾经检索到的块的指针存储在列表的最后位置,从而在重新分配的检索期间,可将所述指针放置在最后的顺序。
在S113,从高速缓冲存储模块140删除通过步骤S112检索到的指针。这是为了防止高速缓冲存储模块存取相应块,因为先前数据不再存储在高速缓冲存储模块中。在S114,从文件读取期望的数据并随后将其复制到检索到的存储块中。在S115,将所述存储块的指针存储在匹配请求的文件的文件映射中。高速缓存管理模块130将存储数据的存储块的指针发送到应用150。此时,高速缓存管理模块130将存储块的访问次数的值加1。如果应用150结束对存储块的使用,则高速缓存管理模块130将访问次数的值减1。
如果从应用150请求的数据存储在高速缓冲存储模块140中,则高速缓存管理模块130直接从高速缓冲存储模块140读取数据,而不需要分配存储块或从文件读取数据。在这种情况下,可减少读取数据所需的时间。此时,在数据发送到应用150之前,高速缓存管理模块130将对存储相应数据的存储块的访问次数的值加1。在数据发送到应用150之后,高速缓存管理模块130将访问次数的值减1。
此外,如果多个应用请求存取多个文件,则高速缓存管理模块130管理每个文件的存储块,并将结束使用(例如,当访问次数是0的情况)的存储块转换为可用存储块。这适用于大容量存储文件服务器或流传输服务器将文件提供给多个应用的情况。
图8是示出根据本发明示例性实施例在高速缓存系统中分配和发送数据的过程的流程图。
在S200,从应用接收到请求数据的命令或信号。检查请求的数据是否存储在存储块中(S210)。检查文件映射中相应位置的数据是否从相应文件的列表分配到了存储块。如果没有数据存在,则需要执行将数据存储在存储块中的步骤S220到S248。为了分配新块,检查是否存在空存储块(S220)。如果不存在空存储块,则执行步骤S232到S236,在分配的存储块中检索未处于使用中的存储块。
如果不存在空存储块,则从块列表的第一位置检索具有相当于0的访问次数的存储块(S232)。如果某存储块的访问次数是0,则表示所述存储块没有被其它应用使用。因此,从文件读取新请求的数据并将其分配到所述存储块。从块列表删除检索到的存储块(S234)。也从高速缓冲存储模块删除检索到的存储块(S236)。由于存储了新数据,所以必须从块列表和高速缓冲存储模块删除所述存储块。具体说来,也将关于在所述检索到的存储块中先前存储的数据的信息从文件映射中删除。根据上述步骤来分配存储块。
同时,如果在步骤S220存在空存储块或者通过步骤S232到S236分配了存储块,则从文件读取数据,并将所述数据复制到分配的存储块(S244)。将关于存储在存储块中的数据的信息添加到块列表(S246)。关于数据的信息包括相应数据在文件中占用的位置信息。将存储块的指针存储在用于请求的文件的文件映射中(S248)。这是为了如果以后请求所述数据,则通过文件的文件映射来检索所述存储块。
如果在步骤S210请求的数据存储在存储块中,或者如果通过步骤S220到S248分配了新块,从而将数据存储在新块中,则将存储数据的存储块的访问次数加1(S252)。这是为了防止在数据发送期间将其它数据存储在所述存储块中。将存储在存储块中的数据发送到应用(S254)。如果数据发送完成,则将存储数据的存储块的访问次数减1(S256)。
如上所述,根据本发明示例性实施例,由于形成了存储块并且提供了每个文件的映射,所以可将多个文件存储在一高速缓存系统中,并且应用可随机存取文件。
此外,由于提供了索引功能,所以可实现快速数据检索。此外,当应用使用高速缓存系统时,可通过指示访问次数来保护高速缓冲存储器。
尽管为了示例性目的描述了本发明示例性实施例,但是本领域的普通技术人员将理解在不脱离如所附权利要求公开的本发明的范围和精神的情况下,各种修改、添加和替换是可行的。
权利要求
1.一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法,该方法包括a)从应用接收对于第一文件的第一数据的请求命令;b)检索存储第一数据的存储块;c)设置指示应用是否访问存储第一数据的所述存储块的访问信息;d)将存储在所述存储块中的第一数据发送到应用;以及e)重新设置存储第一数据的所述存储块的访问信息。
2.如权利要求1所述的高速缓存方法,其中,通过应用的请求来顺序分配存储块以形成块列表,通过块列表将存储块彼此链接。
3.如权利要求1所述的高速缓存方法,其中,存储块的访问信息指示请求所述存储块的数据的应用的数量,并且在将所述数据发送到应用之后,改变访问信息。
4.如权利要求1所述的高速缓存方法,其中,操作b)包括从文件列表检索包括关于第一文件的信息的文件映射。
5.如权利要求4所述的高速缓存方法,其中,文件映射包括与第一文件的数据以及存储所述第一文件的数据的存储块的位置有关的信息。
6.如权利要求1所述的高速缓存方法,其中,如果在步骤b)中第一数据没有存储在存储块中,则所述高速缓存方法还包括分配空存储块;从第一文件读取第一数据,并将读取的数据复制到分配的存储块;将关于存储在所述存储块中的第一数据的信息添加到块列表,所述块列表使存储块彼此链接;以及将与第一文件中的第一数据和存储块的位置有关的信息添加到包括关于所述文件的信息的文件映射。
7.如权利要求6所述的高速缓存方法,其中,将第一文件存储在诸如磁盘的文件记忆存储中。
8.如权利要求6所述的高速缓存方法,其中,在分配空存储块之前,所述高速缓存方法还包括从块列表检索没有由其它应用访问的存储块;从块列表删除检索到的存储块;以及从文件映射删除关于存储在检索到的存储块中的第二文件的第二数据的信息。
9.如权利要求8所述的高速缓存方法,其中,第二文件的第二数据表示没有由其它应用访问的在所述存储块中先前存储的数据。
10.如权利要求8所述的高速缓存方法,其中,检查RefCount值以确定所述存储块是否由其它应用访问,所述RefCount值指示其它应用访问每个存储块的次数。
11.如权利要求10所述的高速缓存方法,其中,在操作d)之前将RefCount值加1。
12.如权利要求11所述的高速缓存方法,其中,在操作d)之后将RefCount值减1。
13.一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存系统,该高速缓存系统包括高速缓冲存储模块,用于向每个存储块存储从文件读取的数据;块分配模块,用于分配高速缓冲存储模块的存储块以存储数据;以及高速缓存管理模块,用于从高速缓冲存储模块检索存储从应用请求的第一文件的第一数据的存储块,并将存储在检索到的存储块中的第一数据发送到应用;其中,存储第一数据的存储块包括访问信息,所述访问信息包括请求第一数据但是没有完成第一数据的传输的应用的数量。
14.如权利要求13所述的高速缓存系统,其中,通过应用的请求来顺序分配存储块以形成块列表,通过块列表将存储块彼此链接。
15.如权利要求13所述的高速缓存系统,其中,存储块的访问信息指示请求所述存储块的数据的应用的数量,并且在将所述数据发送到应用之后,由高速缓存管理模块来改变访问信息。
16.如权利要求13所述的高速缓存系统,其中,高速缓存管理模块从文件列表检索包括关于第一文件的信息的文件映射。
17.如权利要求16所述的高速缓存系统,其中,文件映射包括与第一文件的数据以及存储所述第一文件的数据的存储块的位置有关的信息。
18.如权利要求13所述的高速缓存系统,还包括文件数据读取器,其从文件读取第一文件的第一数据;其中,如果文件数据没有存储在存储块中,则向高速缓存管理模块分配空存储块,块分配模块将由文件数据读取器读取的第一数据复制到分配的存储块,将关于存储在所述存储块中的第一数据的信息添加到块列表,所述块列表使存储块彼此链接,并且将与第一文件中的第一数据和存储块的位置有关的信息添加到包括关于所述文件的信息的文件映射。
19.如权利要求18所述的高速缓存系统,其中,如果没有空存储块存在于高速缓冲存储模块中,则块分配模块从块列表检索没有由其它应用访问的存储块,从块列表删除检索到的存储块,并且从文件映射删除关于存储在检索到的存储块中的第二文件的第二数据的信息。
20.如权利要求19所述的高速缓存系统,其中,第二文件的第二数据表示没有由其它应用访问的在所述存储块中先前存储的数据。
全文摘要
公开一种用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法和高速缓存系统。所述用于将文件的数据存储在从高速缓冲存储器划分的存储块中的高速缓存方法包括从应用接收对于第一文件的第一数据的请求命令;检索存储第一数据的存储块;设置指示应用访问存储第一数据的所述存储块的访问信息;将存储在所述存储块中的第一数据发送到应用;以及重新设置存储第一数据的所述存储块的访问信息。
文档编号G06F17/30GK1920796SQ20061011508
公开日2007年2月28日 申请日期2006年8月23日 优先权日2005年8月24日
发明者郑敏宇, 姜春云, 郭起源 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1