通过缓存写数据的方法和缓存系统及装置的制作方法

文档序号:6610150阅读:158来源:国知局
专利名称:通过缓存写数据的方法和缓存系统及装置的制作方法
技术领域
本发明涉及存储技术,特别涉及一种通过缓存写数据的方法、一种缓存系统和一种缓存装置。
背景技术
现有技术中,通常通过缓存(Cache)来访问存储介质,以减少对存储介质的访问次数,从而提高应用程序的运行效率。
具体来说,在某个系统中,应用主机/服务器中的应用程序先将例如各种指令等数据写到缓存中,然后在刷新时刻到来时,例如目标存储介质比较空闲或数据急需处理等情况发生,由该系统中实现刷新功能的刷新控制单元将缓存中存储的数据刷新到目标存储介质中。其中,缓存也可称为中间存储介质,其读写速度通常要远高于目标存储介质。
假设应用程序先将多个输入/输出(I/O)指令在缓存中存储,实现I/O指令的聚合,然后同时将在缓存中存储的多个I/O指令刷新到目标存储介质中,即对于多个I/O指令,只访问一次目标存储介质,就可以实现I/O指令的并发,从而提高了多个I/O指令的执行效率。
实际应用中,通常将缓存中的空间划分为多个大小相等的块,即缓存块。每个缓存块中存储着头数据,头数据中通常包括该缓存块与目标存储区域的对应关系、表示该缓存块中是否有待刷新数据的标记的标志位。其中,目标存储区域是指目标存储介质中存储空间。
图1为现有通过缓存写数据的示意图。如图1所示,缓存中的每个小方块分别表示一个缓存块,目标存储介质中的每个小方块分别表示一个目标存储区域。应用程序先将数据写入到缓存中的对应缓存块内,该数据可称为待刷新数据,即如图1所示的缓存中的深色小方块内,并由系统中的刷新控制单元将被写入待刷新数据的对应缓存块的标志位设置为表示有待刷新数据的标记;然后在刷新时刻到来时,根据缓存块与目标存储区域的对应关系,由刷新控制单元将标志位为表示有待刷新数据的标记的缓存块中的待刷新数据刷新到对应目标存储区域内,即如图1所示的目标存储介质中的深色小方块内,并将该缓存块对应的标志位设置为表示没有待刷新数据的标记。
虽然缓存中的各缓存块大小是相等的,但是,通常情况下,写入到缓存中的数据量大小却不一定是相等的。对于缓存块来说,只要其接收数据并存储,其对应的标志位均会被设置为表示有待刷新数据的标记,但其接收到的数据可能不足以占满该缓存块的所有存储空间。这样,通常会产生将缓存块中的无效数据刷新到目标存储介质中的情况。
图2a为现有通过缓存写数据的过程中将无效数据刷新到目标存储区域的示意图。如图2a所示,应用程序将需要写入到目标存储区域的数据先写入到缓存中的对应缓存块内,但该数据的数据量大小小于缓存块的大小,其中,当前写入到缓存块内的数据如图2a中缓存块内的深色部分所示,该缓存块中之前已存储的数据如图2a中缓存块内的浅色部分所示。对于当前对目标存储介质的写操作来说,该缓存块中上次刷新后保留的数据为无效数据,即非待刷新数据。然而,在刷新时刻到来时,刷新控制单元会将该缓存块中的所有数据均刷新到对应的目标存储区域内,从而使得缓存块中的无效数据会覆盖部分不需要写入数据的目标存储区域内的有效数据,有效数据被覆盖的部分目标存储区域如图2a中目标存储区域内深色部分所示,从而使得应用程序当前向目标存储介质写入数据的过程中,出现对目标存储介质的误操作,进而可能会产生应用程序运行错误、运行在目标存储介质上的系统紊乱、目标存储介质上的有效数据丢失等故障隐患。
为了解决上述问题,现有技术中存在以下方案在应用程序将数据量大小小于缓存块大小的待刷新数据写入到缓存块之后,刷新控制单元将目标存储介质中,与该缓存块中未写入待刷新数据的部分对应的数据读回到该缓存块中,将目标存储介质中与缓存块中无效数据位置对应的数据读回到缓存块的过程参见图2b,然后将该缓存块对应的标志位设置为表示有待刷新数据的标记;在刷新时刻到来时,刷新控制单元再将该缓存块中的所有数据均刷新到对应的目标存储区域内。
这样,实际上是将缓存块中的无效数据先替换为目标存储介质中可能该被无效数据覆盖的数据,然后再进行刷新,从而能够避免对目标存储区域的误操作。
但是,上述方案存在以下问题在缓存块标志位被设置为表示有待刷新数据的标记后,系统中的刷新控制单元才向实用应用程序的用户进行响应,表示对缓存的写操作成功。而上述方案中,刷新控制单元将目标存储介质中的数据读回到缓存块之后,才将缓存块中的标志位设置为表示有待刷新数据的标记,即无法立即对用户进行响应。
而且,在应用程序将数据量大小小于缓存块大小的待刷新数据写入到缓存块之后,刷新控制单元并不一定立即将目标存储介质中相应的数据读回,而是可能等到系统空闲时在读回。这样,就使得用户通过应用程序将待刷新数据写入到缓存块中之后,可能长时间无法得到表示写入成功的响应,从而使得用户误认为写入未成功而重新发起写入操作,增加了不必要的操作且增加了系统负担。
上述方案中,还有可能由于系统长时间繁忙,使得刷新控制单元丢失了其需要从目标存储介质中读回的数据的位置信息,从而在系统恢复空闲后,刷新控制单元无法从目标存储介质中读回对应的数据,因而仍然可能会将无效数据刷新到目标存储介质中,造成对目标存储介质的误操作。
由于上述方案的响应速度慢且无法完全避免对目标存储介质的误操作,使得部分用户不得不放弃通过缓存写数据的优势,而是利用应用程序将待刷新数据直接写入到目标存储介质。
可见,现有通过缓存向目标存储介质写数据的方案,在数据无法占满缓存块的情况下,会对目标存储区域进行误操作,从而产生各种故障隐患。而且,由于数据大小通常无法与缓存块大小匹配,因此,对目标存储介质的误操作发生的概率非常大。

发明内容
有鉴于此,本发明提供了一种通过缓存写数据的方法、一种缓存系统和一种缓存装置,能够在降低对目标存储区域的误操作发生概率的同时,提高响应速度。
本发明提供的一种通过缓存写数据的方法,包括将缓存中的一个缓存块划分为至少两个逻辑区域,一个逻辑区域对应一个目标存储区域,每个逻辑区域对应设置一个信息位,用于标记该逻辑区域中是否有待刷新数据;将待刷新数据缓存到对应信息位为表示没有待刷新数据标记的逻辑区域内,并将该逻辑区域对应的信息位设置为表示有待刷新数据的标记;将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记。
所述将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域之前,该方法进一步包括从目标存储区域中,读取与信息位为表示没有待刷新数据的标记的逻辑区域对应的数据,并写入到该逻辑区域内;所述将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域为将缓存块中的数据刷新到对应的目标存储区域。
逻辑区域与目标存储区域的对应关系、以及所述逻辑区域对应的信息位设置在缓存块的头数据中。
每个所述信息位为预设位图中的一位,一个所述位图对应一个缓存块。
各逻辑区域大小相等。所述对逻辑区域的划分是按照目标存储区域的预设最小读写单位进行的。
本发明提供的一种缓存系统,包括缓存装置和刷新控制单元,耦合于应用主机/服务器以及目标存储介质之间,所述缓存装置由缓存块构成,所述缓存装置的缓存块中包括划分的逻辑区域,一个逻辑区域对应外部目标存储介质中的一个目标存储区域,且一个逻辑区域对应一个信息位,用于标记该逻辑区域中是否有待刷新数据;当对应信息位为表示没有待刷新数据的逻辑区域中写入了待刷新数据,所述刷新控制单元将该逻辑区域对应的信息位设置为表示有待刷新数据的标记;所述刷新控制单元将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到外部对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记。
所述刷新控制单元在执行所述刷新之前,进一步从外部目标存储区域中,读取与对应信息位为表示没有待刷新数据的标记的逻辑区域所对应的数据,并写入到该逻辑区域内;所述刷新控制单元是通过将所述缓存块中的数据刷新到外部对应的目标存储区域,而将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到外部对应的目标存储区域的。
所述缓存块中进一步包括头数据存储空间,用于存储头数据;逻辑区域与目标存储区域的对应关系、以及所述逻辑区域对应的信息位设置在缓存块的头数据中。
每个所述信息位为预设位图中的一位。
各逻辑区域大小相等。所述逻辑区域的大小为对应目标存储区域的预设最小读写单位。
本发明提供的一种缓存装置,该装置耦合于应用主机/服务器与目标存储介质之间,包括该装置包括缓存块,
缓存块中包括划分的逻辑区域,一个逻辑区域对应外部的一个目标存储区域,且一个逻辑区域对应一个信息位,用于标记该逻辑区域中是否有待刷新数据。
各逻辑区域大小相等。所述逻辑区域的大小为对应目标存储区域的预设最小读写单位。
本发明还提供了一种通过缓存写数据的方法,用于通过缓存将数据写入目标存储介质,该方法包括对于一次写入操作,以逻辑区域作为最小的单元对写入数据进行缓存,并记录逻辑区域的使用情况;其中所述的逻辑区域属于缓存块,而一个缓存块至少包括两个逻辑区域;在需要将缓存中存放的数据写入目标存储介质时,根据前述该缓存块的逻辑区域的使用情况,以缓存块为最小的操作单元将数据从缓存中写入目标存储介质。
在数据从缓存中写入目标存储介质之前,对于当前写入操作未占用的逻辑区域,从目标存储介质读取进行回读操作以确保不会破坏目标存储介质的已经存储的数据。
由上述技术方案可见,本发明将缓存块划分为多个逻辑区域,并为每个逻辑区域设置对应的信息位,用于标记该逻辑区域中是否有待刷新数据;将待刷新数据写入到逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而能够提高响应速度;在刷新时,只将缓存块中对应信息位为表示有待刷新数据的标记逻辑区域内的数据,即待刷新数据刷新到目标存储区域,而不会将缓存块中对应信息位为表示没有待刷新数据的标记逻辑区域内的数据,即不会将非待刷新数据写入到目标存储区域内,降低了对目标存储介质的误操作的发生概率,进而减少了例如应用程序运行错误、运行在目标存储介质上的系统紊乱、目标存储介质上的有效数据丢失等故障隐患。
而且,刷新待刷新数据仍可按照已有方式,先将目标存储介质中对应位置的数据读回到未写入待刷新数据的逻辑区域内,再将缓存块中的所有数据刷新到目标存储介质中。基于上述方式,如果写入到缓存块的数据未占满该缓存块的所有空间且系统长时间繁忙,在系统回复到空闲之后,可根据逻辑区域对应信息位的标记从目标存储区域中准确地读回对应位置的数据,替换对应的无效数据,并将缓存块中对应信息位为表示有待刷新数据的标记逻辑区域内的数据和其他逻辑区域内的从目标存储区域读回的数据,即待刷新数据和替换了非待刷新数据的目标存储区域中的数据刷新到目标存储区域。
缓存块中每个逻辑区域对应的信息位、预设的逻辑区域与目标存储区域的对应关系,设置在该缓存块的头数据中。这样,对于一个缓存块中的多个逻辑区域,只需要一个头数据,而不是每个逻辑区域均对应一个头数据,在对缓存块进一步划分的同时,没有增加大量的头数据,节省了缓存块内的空间。
而且,逻辑区域大小可以为目标存储区域的预设最小读写单位,这种情况下,保证每次写入缓存中的数据能够占满逻辑区域,从而不会由于写入缓存的数据未占满逻辑区域而造成对目标存储介质的误操作,完全避免了在通过缓存向目标存储介质写数据的过程中对目标存储介质的误操作。


图1为现有通过缓存写数据的示意图。
图2a为现有通过缓存写数据的过程中将无效数据刷新到目标存储区域的示意图。
图2b为现有通过缓存写数据的过程中将目标存储介质中与缓存块中无效数据位置对应的数据读回到缓存块的示意图。
图3为本发明实施例中缓存块中逻辑区域与信息位的示意图。
图4为本发明实施例中通过缓存写数据的方法流程示意图。
图5为本发明实施例中缓存装置的结构示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例中,将缓存中的缓存块划分为多个逻辑区域,并为每个逻辑区域分别设置一个信息位,表示该逻辑区域是否为有待刷新数据,并在应用程序将需要写入到目标存储区域的待刷新数据写入到缓存块内之后,将该数据占用的逻辑区域所对应的信息位设置为表示有待刷新数据的标记。
本实施例中,一个缓存块中的所有逻辑区域对应的信息位可以表示为一个位图。
图3为本发明实施例中缓存块中逻辑区域与信息位的示意图。如图3所示,以所有逻辑区域对应的信息位表示为位图为例,缓存块中划分的逻辑区域如缓存块中的小方块所示,位图中如每个小方块所示的每一位,分别对应缓存块中的一个逻辑区域;如果一个逻辑区域中存储了待刷新数据,即如图3所示的缓存块中的深色小方块,则位图中对应的位则会变为表示有待刷新数据的标记,即如图3所示的位图中的深色小方块。
这样,只要待刷新数据写入到了缓存块中的逻辑区域内,则位图中与该逻辑区域对应的位即会被设置为表示有待刷新数据的标记,从而不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,提高了响应速度。而且,即便写入到缓存块的数据未占满该缓存块的所有空间,且系统长时间繁忙,在系统回复到空闲之后,可根据位图中每一位的标记从目标存储介质中准确地读回对应位置的数据,替换对应的无效数据,并在刷新时刻到来时,将缓存块中设置为表示有待刷新数据的标记的位所对应的逻辑区域内的数据和其他逻辑区域内的从目标存储介质读回的数据,刷新到目标存储区域内,从而不会将缓存块中该数据未占用的空间内的无效数据,即对应位设置为表示没有待刷新数据的标记的逻辑区域内的数据,刷新到目标存储区域。
图4为本发明实施例中通过缓存写数据的方法流程示意图。如图4所示,本实施例中通过缓存写数据的方法包括以下步骤步骤401,将缓存中的一个缓存块划分为至少两个逻辑区域,一个逻辑区域对应一个目标存储区域,并为每个逻辑区域设置对应的一个信息位,用于标记该逻辑区域中是否有待刷新数据。
本步骤中,可以为缓存中的每个缓存块分别设置一个位图,位图中的每一位作为该缓存块中的每个逻辑区域对应的信息位,并将位图设置在该缓存块的头数据中;逻辑空间与目标存储区域的对应关系也可以设置在对应缓存块的头数据中;如果缓存块中包括头数据,则对于一个缓存块中的多个逻辑区域,只需要一个头数据,而不是每个逻辑区域均对应一个头数据,在对缓存块进一步划分的同时,没有增加大量的头数据,节省了缓存块内的空间。
步骤402,将待刷新数据缓存到对应信息位为表示没有待刷新数据的标记的逻辑区域内,并同时将该逻辑区域对应的信息位设置为表示有待刷新数据的标记。
步骤403,将对应信息位为表示有待刷新数据的标记的逻辑区域内的数据刷新到对应的目标存储区域,并将对应的信息位设置为表示没有待刷新数据的标记。
本步骤中刷新待刷新数据的过程可以按照已有方式来实现,例如,在刷新之前,先从目标存储区域中,读取与信息位为表示没有待刷新数据的标记的逻辑区域对应的数据,并写入到信息位为表示没有待刷新数据的标记的对应的逻辑区域内,以替换这些逻辑区域内的无效数据;然后再将缓存块中的数据刷新到对应的目标存储区域中,即将对应信息位为表示有待刷新数据的标记的逻辑区域内的数据刷新到对应的目标存储区域,从而实现了将对应信息位为表示有待刷新数据的标记的逻辑区域内的数据刷新到对应的目标存储区域,并将对应的信息位设置为表示没有待刷新数据的标记;同时,还将对应信息位为表示没有待刷新数据的标记的逻辑区域内的数据,即从对应目标存储区域读回的数据刷新到对应的目标存储区域,但并不改变这些逻辑区域对应的信息位。
其中,较佳地,可以任意的系统空闲时刻执行从目标存储区域读回数据的操作过程,在刷新时刻到来时执行刷新的操作过程;也可以在刷新时刻到来时再执行从目标存储区域读回数据的操作过程,并继续执行刷新的操作过程。
至此,本流程结束。
也就是说,对于一次写入操作,以逻辑区域作为最小的单元对写入数据进行缓存,并记录逻辑区域的使用情况;其中,逻辑区域属于缓存块,而一个缓存块至少包括两个逻辑区域;在需要将缓存中存放的数据写入目标存储介质时,根据前述该缓存块的逻辑区域的使用情况,以缓存块为最小的操作单元将数据从缓存中写入目标存储介质。
而且,在数据从缓存中写入目标存储介质之前,对于当前写入操作未占用的逻辑区域,还可以从目标存储介质读取进行回读操作,以确保不会破坏目标存储介质的已经存储的数据。
实际应用中,在步骤403之后,还可以返回步骤402,继续通过缓存向目标存储介质写数据。
由上述流程可见,本实施例在应用程序将待刷新数据写入到缓存块内的对应逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,从而不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而能够提高响应速度;在刷新时,只将缓存块中对应信息位为表示有待刷新数据的标记逻辑区域内的数据,即待刷新数据刷新到目标存储区域,而不会将缓存块中对应信息位为表示没有待刷新数据的标记逻辑区域内的数据,即不会将非待刷新数据写入到目标存储区域内,从而不会在通过缓存向目标存储介质写数据的过程中,将其他无效数据刷新到目标存储区域内。
刷新待刷新数据仍可按照已有方式,先将目标存储介质中对应位置的数据读回到未写入待刷新数据的逻辑区域内,再将缓存块中的所有数据刷新到目标存储介质中。基于上述方式,如果写入到缓存块的数据未占满该缓存块的所有空间且系统长时间繁忙,在系统回复到空闲之后,可根据逻辑区域对应信息位的标记从目标存储区域中准确地读回对应位置的数据,替换对应的无效数据,并在刷新时刻到来时,将对应信息位为表示有待刷新数据的标记的逻辑区域内的数据刷新到目标存储区域和其他逻辑区域内的从目标存储区域读回的数据,即将待刷新数据和替换了非待刷新数据的目标存储区域中的数据刷新到目标存储区域。
由于逻辑空间的大小小于缓存块的大小,数据未占满逻辑空间的概率小于未占满缓存块的概率,从而减少了对目标存储介质的误操作的发生概率,进而减少了例如应用程序运行错误、运行在目标存储介质上的系统紊乱、目标存储介质上的有效数据丢失等故障隐患。
本实施例中,逻辑区域可以大小相等,也可以不全相同。
其中,对于逻辑区域大小相等的情况,只需按照现有设置缓存块与目标存储区域的对应关系的方式,设置逻辑区域与目标存储区域的对应关系即可;而对于逻辑区域大小不全相同的情况,则在设置的逻辑区域与目标存储区域的对应关系中,还应包括每个逻辑区域的大小、对应目标存储区域的大小等相关信息。
不论划分的逻辑区域大小相同还是不同,逻辑区域越小,待刷新数据占满逻辑区域的概率越大,对目标存储介质的误操作的发生概率越小。
本实施例中,虽然逻辑空间的大小小于缓存块的大小,数据未占满逻辑空间的概率小于未占满缓存块的概率,从而能够降低对目标存储介质的误操作的发生概率,但是,在数据未占满逻辑空间的情况下,仍然存在对目标存储介质误操作的可能。
因此,较佳地,逻辑区域大小等于目标存储区域的预设最小读写单位。这样,可以保证每次写入缓存中的数据能够占满逻辑区域,从而不会由于写入缓存的数据未占满逻辑区域而造成对目标存储介质的误操作,完全避免了在通过缓存向目标存储介质写数据的过程中对目标存储介质的误操作。
以上是对本发明实施例中通过缓存写数据的方法的详细说明,下面,对本发明实施例中的缓存装置进行说明。
图5为本发明实施例中缓存装置的结构示意图。如图5所示,本实施例中的缓存装置耦合于应用主机/服务器与目标存储介质之间,包括缓存块1~缓存块n,其中,n为大于等于2的正整数。
缓存中的每个缓存块包括划分的逻辑区域1~逻辑区域m,m为大于等于2的正整数,且每个逻辑区域对应一个信息位,表示该逻辑区域是否为有待刷新数据。
在缓存装置所在系统中的应用程序将待刷新数据缓存到对应缓存块中,对应信息位为表示没有待刷新数据的标记的逻辑区域内的同时,该系统中的刷新控制单元将对应的信息位设置为表示有待刷新数据的标记。
缓存装置所在系统中的刷新控制单元,将对应信息位为表示有待刷新数据的标记的逻辑区域内的待刷新数据,刷新到对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记。
实际应用中,刷新控制单元可以先读取目标存储区域中,与对应缓存块中的信息位为表示没有待刷新数据的标记的逻辑区域对应的数据,并写入到对应缓存块中信息位为表示没有待刷新数据的标记的对应的逻辑区域内;然后在刷新时刻到来时,根据预设逻辑区域与目标存储介质中目标存储区域的对应关系、以及逻辑区域对应的信息位,该系统中的刷新控制单元将对应信息位为表示有待刷新数据的标记的逻辑区域内的待刷新数据,刷新到对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记;同时,还将对应信息位为表示没有待刷新数据的标记的逻辑区域内的数据,即从对应目标存储区域读回的数据刷新到对应的目标存储区域,但并不改变这些逻辑区域对应的信息位。
较佳地,刷新控制单元在任意的系统空闲时刻执行上述操作;刷新控制也可以在刷新时刻到来时再执行上述操作,即在刷新时刻到来时先从目标存储空间中读回相应的数据再刷新。
也就是说,对于缓存装置来说如果缓存块i中对应信息位为表示没有待刷新数据的标记的逻辑区域被写入并存储了待刷新数据,则与该逻辑区域对应信息位变为表示有待刷新数据的标记。其中,i大于等于1且小于等于n。
如果缓存块i中对应信息位为表示有待刷新数据的标记的逻辑区域存储的数据,根据预设的逻辑区域与目标存储区域的对应关系被刷新到外部目标存储区域,则与该逻辑区域对应的信息位变为表示没有待刷新数据的标记。
实际应用中,如果缓存块中包括头数据,则信息位、以及预设的逻辑区域与目标存储区域的对应关系,可以设置在该缓存块的头数据中。这样,对于一个缓存块中的多个逻辑区域,只需要一个头数据,而不是每个逻辑区域均对应一个头数据,在对缓存块进一步划分的同时,没有增加大量的头数据,节省了缓存块内的空间。
如图5所示,本实施例中,缓存块i中进一步包括头数据存储空间i,用于存储缓存块i的头数据。其中,每个缓存块中存储的头数据中包括所有逻辑区域对应的信息位、预设的逻辑区域与目标存储区域的对应关系。
由上述装置可见,在应用程序将需要写入到目标存储区域的数据写入到缓存块内的对应逻辑区域之后,该逻辑区域所对应的信息位即变为表示有待刷新数据的标记。
这样,在应用程序将待刷新数据写入到缓存块内的对应逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,从而使得系统不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而能够提高响应速度;如果写入到缓存块的数据未占满该缓存块的所有空间且系统长时间繁忙,在系统回复到空闲之后,即可根据逻辑区域对应信息位的标记从目标存储区域中准确地读回对应位置的数据,替换对应的无效数据,而且保证刷新到目标存储介质中的数据只包括缓存块中对应信息位为表示有待刷新数据的标记的逻辑区域内的数据、以及从该目标存储介质中对应位置读回的数据,从而保证了无效数据则不会被刷新到目标存储区域内。
由于逻辑空间的大小小于缓存块的大小,数据未占满逻辑空间的概率小于未占满缓存块的概率,从而减少了对目标存储介质的误操作的发生概率,进而减少了例如应用程序运行错误、运行在目标存储介质上的系统紊乱、目标存储介质上的有效数据丢失等故障隐患。
上述装置中,一个缓存块中的至少两个逻辑区域可以大小相等,也可以不全相同。
较佳地,一个缓存块中的逻辑区域的大小为对应目标存储区域的预设最小读写单位。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种通过缓存写数据的方法,其特征在于,包括将缓存中的一个缓存块划分为至少两个逻辑区域,一个逻辑区域对应一个目标存储区域,每个逻辑区域对应设置一个信息位,用于标记该逻辑区域中是否有待刷新数据;将待刷新数据缓存到对应信息位为表示没有待刷新数据标记的逻辑区域内,并将该逻辑区域对应的信息位设置为表示有待刷新数据的标记;将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记。
2.如权利要求1所述的方法,其特征在于,所述将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域之前,该方法进一步包括从目标存储区域中,读取与信息位为表示没有待刷新数据的标记的逻辑区域对应的数据,并写入到该逻辑区域内;所述将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到对应的目标存储区域为将缓存块中的数据刷新到对应的目标存储区域。
3.如权利要求1或2所述的方法,其特征在于,逻辑区域与目标存储区域的对应关系、以及所述逻辑区域对应的信息位设置在缓存块的头数据中。
4.如权利要求1或2所述的方法,其特征在于,每个所述信息位为预设位图中的一位,一个所述位图对应一个缓存块。
5.如权利要求1或2所述的方法,其特征在于,各逻辑区域大小相等。
6.如权利要求5所述的方法,其特征在于,所述对逻辑区域的划分是按照目标存储区域的预设最小读写单位进行的。
7.一种缓存系统,包括缓存装置和刷新控制单元,耦合于应用主机/服务器以及目标存储介质之间,所述缓存装置由缓存块构成,其特征在于,所述缓存装置的缓存块中包括划分的逻辑区域,一个逻辑区域对应外部目标存储介质中的一个目标存储区域,且一个逻辑区域对应一个信息位,用于标记该逻辑区域中是否有待刷新数据;当对应信息位为表示没有待刷新数据的逻辑区域中写入了待刷新数据,所述刷新控制单元将该逻辑区域对应的信息位设置为表示有待刷新数据的标记;所述刷新控制单元将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到外部对应的目标存储区域,并将该逻辑区域对应的信息位设置为表示没有待刷新数据的标记。
8.如权利要求7所述的系统,其特征在于,所述刷新控制单元在执行所述刷新之前,进一步从外部目标存储区域中,读取与对应信息位为表示没有待刷新数据的标记的逻辑区域所对应的数据,并写入到该逻辑区域内;所述刷新控制单元是通过将所述缓存块中的数据刷新到外部对应的目标存储区域,而将对应信息位为表示有待刷新数据标记的逻辑区域内的待刷新数据刷新到外部对应的目标存储区域的。
9.如权利要求7或8所述的系统,其特征在于,所述缓存块中进一步包括头数据存储空间,用于存储头数据;逻辑区域与目标存储区域的对应关系、以及所述逻辑区域对应的信息位设置在缓存块的头数据中。
10.如权利要求7或8所述的系统,其特征在于,每个所述信息位为预设位图中的一位。
11.如权利要求7或8所述的系统,其特征在于,各逻辑区域大小相等。
12.如权利要求11所述的系统,其特征在于,所述逻辑区域的大小为外部对应目标存储区域的预设最小读写单位。
13.一种缓存装置,该装置耦合于应用主机/服务器与目标存储介质之间,包括缓存块,其特征在于,缓存块中包括划分的逻辑区域,一个逻辑区域对应外部的一个目标存储区域,且一个逻辑区域对应一个信息位,用于标记该逻辑区域中是否有待刷新数据。
14.如权利要求13所述的装置,其特征在于,各逻辑区域大小相等。
15.如权利要求14所述的装置,其特征在于,所述逻辑区域的大小为对应目标存储区域的预设最小读写单位。
16.一种通过缓存写数据的方法,用于通过缓存将数据写入目标存储介质,其特征在于,包括对于一次写入操作,以逻辑区域作为最小的单元对写入数据进行缓存,并记录逻辑区域的使用情况;其中所述的逻辑区域属于缓存块,而一个缓存块至少包括两个逻辑区域;在需要将缓存中存放的数据写入目标存储介质时,根据前述该缓存块的逻辑区域的使用情况,以缓存块为最小的操作单元将数据从缓存中写入目标存储介质。
17.如权利要求16所述的方法,其特征在于,在数据从缓存中写入目标存储介质之前,对于当前写入操作未占用的逻辑区域,从目标存储介质读取进行回读操作以确保不会破坏目标存储介质的已经存储的数据。
全文摘要
本发明公开了一种通过缓存写数据的方法和一种缓存系统及装置。本发明将缓存块划分为多个逻辑区域,并为每个逻辑区域设置对应的信息位,用于标记该逻辑区域中是否有待刷新数据;将待刷新数据写入到逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而提高响应速度;在刷新时,只将缓存块中对应信息位为表示有待刷新数据的标记逻辑区域内的待刷新数据刷新到目标存储区域,不会将非待刷新数据写入到目标存储区域内,从而不会将无效数据写入到目标存储区域内,降低了对目标存储介质的误操作的发生概率。
文档编号G06F12/08GK101093466SQ20071012018
公开日2007年12月26日 申请日期2007年8月10日 优先权日2007年8月10日
发明者李至哲, 薛国良 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1