CN101093466A - 通过缓存写数据的方法和缓存系统及装置 - Google Patents
通过缓存写数据的方法和缓存系统及装置 Download PDFInfo
- Publication number
- CN101093466A CN101093466A CNA2007101201845A CN200710120184A CN101093466A CN 101093466 A CN101093466 A CN 101093466A CN A2007101201845 A CNA2007101201845 A CN A2007101201845A CN 200710120184 A CN200710120184 A CN 200710120184A CN 101093466 A CN101093466 A CN 101093466A
- Authority
- CN
- China
- Prior art keywords
- data
- logic region
- target storage
- refresh
- cache blocks
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种通过缓存写数据的方法和一种缓存系统及装置。本发明将缓存块划分为多个逻辑区域,并为每个逻辑区域设置对应的信息位,用于标记该逻辑区域中是否有待刷新数据;将待刷新数据写入到逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而提高响应速度;在刷新时,只将缓存块中对应信息位为表示有待刷新数据的标记逻辑区域内的待刷新数据刷新到目标存储区域,不会将非待刷新数据写入到目标存储区域内,从而不会将无效数据写入到目标存储区域内,降低了对目标存储介质的误操作的发生概率。
Description
技术领域
本发明涉及存储技术,特别涉及一种通过缓存写数据的方法、一种缓存系统和一种缓存装置。
背景技术
现有技术中,通常通过缓存(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的头数据。其中,每个缓存块中存储的头数据中包括:所有逻辑区域对应的信息位、预设的逻辑区域与目标存储区域的对应关系。
由上述装置可见,在应用程序将需要写入到目标存储区域的数据写入到缓存块内的对应逻辑区域之后,该逻辑区域所对应的信息位即变为表示有待刷新数据的标记。
这样,在应用程序将待刷新数据写入到缓存块内的对应逻辑区域的同时,将该逻辑区域所对应的信息位设置为表示有待刷新数据的标记,从而使得系统不需要等待对应目标存储空间中对应位置的数据被读回即可进行表示写入成功的响应,从而能够提高响应速度;如果写入到缓存块的数据未占满该缓存块的所有空间且系统长时间繁忙,在系统回复到空闲之后,即可根据逻辑区域对应信息位的标记从目标存储区域中准确地读回对应位置的数据,替换对应的无效数据,而且保证刷新到目标存储介质中的数据只包括缓存块中对应信息位为表示有待刷新数据的标记的逻辑区域内的数据、以及从该目标存储介质中对应位置读回的数据,从而保证了无效数据则不会被刷新到目标存储区域内。
由于逻辑空间的大小小于缓存块的大小,数据未占满逻辑空间的概率小于未占满缓存块的概率,从而减少了对目标存储介质的误操作的发生概率,进而减少了例如应用程序运行错误、运行在目标存储介质上的系统紊乱、目标存储介质上的有效数据丢失等故障隐患。
上述装置中,一个缓存块中的至少两个逻辑区域可以大小相等,也可以不全相同。
较佳地,一个缓存块中的逻辑区域的大小为对应目标存储区域的预设最小读写单位。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (17)
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所述的方法,其特征在于,在数据从缓存中写入目标存储介质之前,对于当前写入操作未占用的逻辑区域,从目标存储介质读取进行回读操作以确保不会破坏目标存储介质的已经存储的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101201845A CN100527100C (zh) | 2007-08-10 | 2007-08-10 | 通过缓存写数据的方法和缓存系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101201845A CN100527100C (zh) | 2007-08-10 | 2007-08-10 | 通过缓存写数据的方法和缓存系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101093466A true CN101093466A (zh) | 2007-12-26 |
CN100527100C CN100527100C (zh) | 2009-08-12 |
Family
ID=38991737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101201845A Active CN100527100C (zh) | 2007-08-10 | 2007-08-10 | 通过缓存写数据的方法和缓存系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100527100C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887399A (zh) * | 2010-06-28 | 2010-11-17 | 北京用友政务软件有限公司 | 服务器端无障碍存取高速缓存数据的方法 |
CN102360338A (zh) * | 2011-10-18 | 2012-02-22 | 中联重科股份有限公司 | 搅拌站以及用于该搅拌站的数据存储方法、服务器、系统 |
CN104331962A (zh) * | 2014-10-27 | 2015-02-04 | 厦门博佳琴电子科技有限公司 | 一种置物柜指纹识别系统 |
CN106959819A (zh) * | 2016-01-08 | 2017-07-18 | 广州市动景计算机科技有限公司 | 数据存储方法、装置和系统以及便携式电子设备 |
CN107132996A (zh) * | 2017-04-12 | 2017-09-05 | 杭州宏杉科技股份有限公司 | 基于智能精简配置的存储方法、模块及系统 |
WO2018102968A1 (zh) * | 2016-12-05 | 2018-06-14 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、设备和系统 |
CN110119248A (zh) * | 2016-12-05 | 2019-08-13 | 华为技术有限公司 | 数据读写命令的控制方法、存储设备和系统 |
CN110174991A (zh) * | 2019-05-17 | 2019-08-27 | 广州视源电子科技股份有限公司 | 高亮笔处理方法及装置 |
CN110990302A (zh) * | 2019-11-22 | 2020-04-10 | 北京云宽志业网络技术有限公司 | 数据缓存方法、装置、电子设备及存储介质 |
US10838665B2 (en) | 2016-12-05 | 2020-11-17 | Huawei Technologies Co., Ltd. | Method, device, and system for buffering data for read/write commands in NVME over fabric architecture |
-
2007
- 2007-08-10 CN CNB2007101201845A patent/CN100527100C/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887399A (zh) * | 2010-06-28 | 2010-11-17 | 北京用友政务软件有限公司 | 服务器端无障碍存取高速缓存数据的方法 |
CN102360338A (zh) * | 2011-10-18 | 2012-02-22 | 中联重科股份有限公司 | 搅拌站以及用于该搅拌站的数据存储方法、服务器、系统 |
CN104331962A (zh) * | 2014-10-27 | 2015-02-04 | 厦门博佳琴电子科技有限公司 | 一种置物柜指纹识别系统 |
CN106959819A (zh) * | 2016-01-08 | 2017-07-18 | 广州市动景计算机科技有限公司 | 数据存储方法、装置和系统以及便携式电子设备 |
CN106959819B (zh) * | 2016-01-08 | 2019-12-20 | 广州市动景计算机科技有限公司 | 数据存储方法、装置和系统以及便携式电子设备 |
CN110119248A (zh) * | 2016-12-05 | 2019-08-13 | 华为技术有限公司 | 数据读写命令的控制方法、存储设备和系统 |
WO2018102968A1 (zh) * | 2016-12-05 | 2018-06-14 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、设备和系统 |
US10838665B2 (en) | 2016-12-05 | 2020-11-17 | Huawei Technologies Co., Ltd. | Method, device, and system for buffering data for read/write commands in NVME over fabric architecture |
CN110119248B (zh) * | 2016-12-05 | 2021-10-15 | 华为技术有限公司 | 数据读写命令的控制方法、存储设备和系统 |
US11762581B2 (en) | 2016-12-05 | 2023-09-19 | Huawei Technologies Co., Ltd. | Method, device, and system for controlling data read/write command in NVMe over fabric architecture |
CN107132996A (zh) * | 2017-04-12 | 2017-09-05 | 杭州宏杉科技股份有限公司 | 基于智能精简配置的存储方法、模块及系统 |
CN110174991A (zh) * | 2019-05-17 | 2019-08-27 | 广州视源电子科技股份有限公司 | 高亮笔处理方法及装置 |
CN110174991B (zh) * | 2019-05-17 | 2021-01-22 | 广州视源电子科技股份有限公司 | 高亮笔处理方法及装置 |
CN110990302A (zh) * | 2019-11-22 | 2020-04-10 | 北京云宽志业网络技术有限公司 | 数据缓存方法、装置、电子设备及存储介质 |
CN110990302B (zh) * | 2019-11-22 | 2021-11-02 | 北京云宽志业网络技术有限公司 | 数据缓存方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100527100C (zh) | 2009-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100527100C (zh) | 通过缓存写数据的方法和缓存系统及装置 | |
CN101326494B (zh) | 协调硬件事务和软件事务对存储单元的访问的方法和系统 | |
US9405675B1 (en) | System and method for managing execution of internal commands and host commands in a solid-state memory | |
US5913021A (en) | Memory state recovering apparatus | |
JP2006190402A (ja) | 半導体装置 | |
CN103279428B (zh) | 一种显式的面向流应用的多核Cache一致性主动管理方法 | |
CN101727978A (zh) | 在电可擦和可编程的非易失性存储器中写入和读取数据的方法 | |
CN104951240A (zh) | 一种数据处理方法及处理器 | |
JPH10254772A (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
CN103246613A (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
US4550367A (en) | Data processing system having hierarchical memories | |
CN101123113A (zh) | 同步动态随机访问存储器的访问方法及控制装置 | |
CN101625892B (zh) | 动态随机访问存储器的控制器及用户指令处理方法 | |
CN101901189A (zh) | 更新用户数据的方法以及恢复用户数据的方法 | |
CN100433195C (zh) | 闪存介质数据写入方法 | |
CN115794673B (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
CN101257626A (zh) | 动态随机存储器的存取方法、装置和媒体播放器 | |
CN102016810A (zh) | 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路 | |
JP4041402B2 (ja) | サイクルあたりの多重キャッシュライン無効化をサポートするための方法および装置 | |
CN102023845B (zh) | 一种基于状态机的Cache并发访问管理方法 | |
CN101833519B (zh) | 一种减少存储技术设备中地址映射表常驻内存的方法 | |
CN108519858A (zh) | 存储芯片硬件命中方法 | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
JP2000122929A (ja) | 情報処理装置 | |
CN115390756A (zh) | 一种基于掩码的GPU像素流Cache的读写访问系统及方法 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |