一种管理高速缓存的方法及存储装置制造方法

文档序号:6526294阅读:151来源:国知局
一种管理高速缓存的方法及存储装置制造方法
【专利摘要】本发明实施例公开了管理高速缓存的方法及装置,其中所述方法应用于存储装置中,所述存储装置包括高速缓存,所述方法包括:所述存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据;当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列;所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。本发明实施例,可有效将高速缓存中的顺序流数据快速进行淘汰,保证高速缓存的高效利用率。
【专利说明】一种管理高速缓存的方法及存储装置
【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种管理高速缓存的方法及存储装置。
【背景技术】
[0002]高速缓存是存在于主存(比如,硬盘)与CPU之间的一级存储器,由静态存储芯片(Static RAM, SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。局部性原理是高速缓存的理论基础。局部性原理分为时间局部性和空间局部性。其中,时间局部性是指:如果数据在时间点TO被访问,那么从TO开始的一段时间内,该数据被再次访问的可能性会比TO时刻之前高。空间局部性是指:如果数据在时间点TO被访问,那么从TO开始的一段时间内,该数据周围的其他数据被访问的可能性比TO时刻高。
[0003]因为局部性原理的存在,使得人们可以根据访问历史记录来预测未来的输入输出访问情况,进而将那些硬盘中预计相对会被频繁访问的数据提升到性能较高的存储介质中,再周期性地将数据同步回低速设备(比如硬盘中),从而提升整个系统的性能。
[0004]目前,存储装置可通过轮转算法(CLOCK算法)对高速缓存中的数据进行管理,在CLOCK算法中,将高速缓存中的数据从逻辑上组织在一个环状数据结构中,并配有一个指针,称为CLOCK指针。CLOCK指针按照一定的速率,按照顺时针或者逆时针方向循环遍历所述环状数据结构中的高速缓存中的数据。同时,高速缓存中的每个数据有一个状态属性参数 recency,
[0005]当数据被访问时,其recency取值I,当CLOCK指针旋转到一个数据,当所述数据的recency取值为I时,将所述数据的recency修改为O,所述数据的recency取值为O时,将所述数据从所述高速缓存中淘汰。
[0006]上述现有技术提供了一种对高速缓存中的数据进行管理的方法,但是,该现有技术中以CLOCK指针旋转的频率决定数据在高速缓存中的保存时间,当被访问的数据为顺序流(顺序流包括两个或两个以上在硬盘中地址连续的数据)中的数据时,顺序流的数据会很快占满整个缓存,从而浪费高速缓存的空间,造成高速缓存的利用效率较低。

【发明内容】

[0007]本发明实施例提供一种管理高速缓存的方法及存储装置,可有效将高速缓存中的顺序流数据快速进行淘汰,保证高速缓存的高效利用率。
[0008]本发明第一方面提供一种管理高速缓存的方法,所述方法应用于存储装置中,所述存储装置包括高速缓存,所述方法包括:
[0009]所述存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据;
[0010]当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列;
[0011]所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。[0012]结合第一方面,在第一种可行的实施方式中,所述方法还可包括:
[0013]当所述存储装置确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。
[0014]结合第一方面,在第二种可行的实施方式中,所述方法还可包括:
[0015]当所述存储装置确定目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。
[0016]结合第一方面的第一种可行的实施方式,在第三种可行的实施方式中,所述方法还可包括:
[0017]当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,从所述高速缓存中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0018]结合第一方面的第二种可行的实施方式,在第四种可行的实施方式中,所述方法还可包括:
[0019]当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0020]本发明第二方面提供一种存储装置,包括高速缓存,所述存储装置还包括:
[0021]判定模块,用于确定保存在所述高速缓存中的目标数据是否为顺序流中的数据;
[0022]第一处理模块,用于当所述判定模块确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列,并根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
[0023]结合第二方面,在第一种可行的实施方式中,所述存储装置还可包括:
[0024]第二处理模块,用于当所述判定模块确定目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。
[0025]结合第二方面,在第二种可行的实施方式中,所述存储装置还可包括:
[0026]第三处理模块,用于当所述判定模块确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。
[0027]结合第二方面的第一种可行的实施方式,在第三种可行的实施方式中,所述第二处理模块,还用于当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,则从所述高速缓存中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0028]结合第二方面的第二种可行的实施方式,在第四种可行的实施方式中,所述第三处理模块,还用于当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0029]由上可见,在本发明的一些可行的实施方式中,所述存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据;当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列;所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。由此,本发明实施例通过数据淘汰队列管理顺序流中的目标数据的淘汰,可有效将高速缓存中属于顺序流的目标数据进行淘汰,保证高速缓存的高效利用率。
【专利附图】

【附图说明】
[0030]图1为本发明的管理高速缓存的方法的一实施例的流程示意图。
[0031]图2为本发明的管理高速缓存的方法的另一实施例的流程示意图。
[0032]图3为本发明的存储装置的一实施例的结构组成示意图。
[0033]图4为本发明的存储装置的另一实施例的结构组成示意图。
[0034]图5为本发明的存储装置的另一实施例的结构组成示意图。
【具体实施方式】
[0035]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0036]图1为本发明的管理高速缓存的方法的一实施例的流程示意图。具体实现中,本发明实施例的管理高速缓存的方法可应用于存储装置中,所述存储装置包括高速缓存。如图1所示,本发明实施例的方法可包括:
[0037]步骤S110,存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据。
[0038]具体实现中,本发明实施例的顺序流可包括两个或两个以上在硬盘等低速设备中地址连续的数据,顺序流的判断方法多种多样,在比不进行赘述。以硬盘为例,比如,比如,当四个被连续访问的数据的逻辑快地址依次递增时,则可认为这四个数据形成一个顺序流,其中四个数据的均为该顺序流中的数据。
[0039]步骤S111,当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列。
[0040]具体实现中,在步骤S111,当将所述目标数据写入所述高速缓存的数据淘汰队列时,若所述顺序流中的其他数据未写入所述数据淘汰队列中,本发明实施例,还可将所述目标数据所属的顺序流中的其他数据也写入所述数据淘汰队列中。并且,顺序流中的数据在所述数据淘汰队列中的排放顺序与所述数据在顺序流中的顺序可一致。
[0041]假设,硬盘中的数据的一个顺序流中的数据的地址分别为:1、2、3、4。当存储装置接收到访问地址为4的数据时,在把地址为4的数据写入高速缓存时,检查硬盘中地址为1、2、3的数据是不是都在高速缓存中,如果都在高速缓存中,这时,可识别出地址4的数据为顺序流中的数据,这样,存储装置可在将地址为4的数据写入高速缓存的数据淘汰队列时,并且,将地址1-3的数据也写入所述数据淘汰队列。
[0042]当然,具体实现中,当将所述目标数据写入所述高速缓存的数据淘汰队列时,所述目标数据所属的顺序流的中的其他数据也可能已经写入了所述数据淘汰队列,则此时,仅将所述目标数据写入所述数据淘汰队列即可。
[0043]步骤S112,所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
[0044]具体实现中,本发明实施例的数据淘汰队列可为先进先出(First In First Out,FIFO)队列,这样在从数据淘汰队列中淘汰数据时,可优先淘汰先进入队列的数据。当然,本发明实施例的数据淘汰队列也可为其他形式的队列,并不限于FIFO。
[0045]由上可见,在本发明上述实施例中,将顺序流的数据的淘汰单独通过数据淘汰队列来完成,可有效将高速缓存中的顺序流数据快速进行淘汰,保证高速缓存的高效利用率。
[0046]图2为本发明的管理高速缓存的方法的另一实施例的流程示意图。如图2所示,其可包括:
[0047]步骤S210,存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据。
[0048]具体实现中,步骤S210与步骤SllO可相同,在此可不进行赘述。
[0049]步骤S211,当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列。
[0050]具体实现中,步骤S211与步骤Slll可相同,在此可不进行赘述。
[0051]具体实现中,将所述目标数据写入所述高速缓存的数据淘汰队列之后,还可将所述目标数据的当前状态属性参数(可简记为iecencyl)取值为第一数值。具体实现中,本发明实施例可通过当前状态属性参数的取值来指示目标数据是否即将被淘汰。比如,当所述目标数据的当前状态属性参数recencyl取值为第一数值(比如,第一数值可为“O”)时,表示所述目标数据是即将从高速缓存中淘汰的数据。
[0052]步骤S212,所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
[0053]具体实现中,步骤S212可与步骤SI 12相同,在此可不进行赘述。
[0054]步骤S221,当所述存储装置确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。
[0055]步骤S222,当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,从所述高速缓存中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0056]步骤S231,当所述存储装置确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。
[0057]步骤S232,当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0058]具体实现中,在步骤S221或步骤S231,本发明实施例可通过轮转指针循环遍历高速缓存中的数据,并根据轮转指针遍历到的目标数据的当前状态属性参数的取值,对高速缓存中的所述目标数据是否需要被淘汰进行相应处理。比如,在步骤S221或步骤S231,可通过CLOCK指针按照预定的速度和预定的方向(比如,顺时针或逆时针)循环遍历所述高速缓存中的数据,当所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。如前所述,当所述目标数据的当前状态属性参数recencyl取值为第一数值(比如,第一数值可为“O”)时,表示所述目标数据是即将从高速缓存中淘汰的数据;而当所述目标数据的当前状态属性参数recencyl的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。具体实现中,当目标数据的当前状态属性参数recencyl的取值大于第一数值(比如,取值为“ I ”),表示在轮转指针下次循环到所述目标数据之前,所述目标数据不会从所述高速缓存中淘汰。
[0059]所述按照预设的递减规则修改所述目标数据的当前状态属性参数的取值中的递减规则可为递减n,其中,η为正整数。本发明实施例,当目标数据的当前状态属性参数recencyl的取值大于第一数值(比如,recencyl的取值可为“ I”或“2”或其他)时,按照预设的递减规则修改所述目标数据的当前状态属性参数recencyl的取值的作用在于,使所述目标数据的当前状态属性参数recencyl随着轮转指针循环的次数的增加,逐渐降低,直至降低为所述第一数值,由此,最终通过步骤S221将所述目标数据写入数据淘汰候补队列中,以便对所述目标数据进行淘汰处理。
[0060]由此可见,本发明实施例的CLOCK指针的作用不再像现有技术那样直接用于淘汰数据,而仅是选择一些即将被淘汰的数据放入淘汰候补队列,由淘汰候补队列根据预定先进先出的规则实施数据的真正淘汰。可有效地对高速缓存的存储阵列的性能进行削峰填谷。
[0061]具体实现中,在步骤S222中,充分考虑了即将被淘汰的数据重新变为热点被访问数据后的处理方案。具体的,在步骤S222,当处于数据淘汰队列或数据淘汰候补队列中的目标数据被访问时,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。由此,可避免变为热点的目标数据被执行淘汰处理。
[0062]其中,步骤S222或步骤S232中按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值,具体可为,将所述目标数据的当前状态属性参数的取值递增η。本发明实施例,将所述目标数据的当前状态属性参数recencyl的取值按照预设的递增规则修改的作用在于,使所述目标数据的当前状态属性参数recencyl随着访问次数的增加,逐渐增加,由此,本发明实施例可使访问频繁的目标数据不会在短时间写入数据淘汰候补队列中,而避免了将热点被访问数据进行淘汰。[0063]具体实现中,在其他的实施例中,本发明的管理高速缓存的方法可仅包括图2中S210-S221-S222的分支;或者,本发明的管理高速缓存的方法也可仅包括图2中的S210-S231-S232 的分支。
[0064]具体实现中,本发明实施例的方法还可包括:通过历史状态属性参数(可简记为:recency2)记录所述当前状态属性参数recencyl的历史最近一次的取值。由此,本发明实施例可通过两个状态属性参数来记录高速缓存中的数据被访问的状态,这样便可记录下数据曾经被访问的变化趋势,比如,假设数据A, TO时刻recencyl取值为I, recency2取值为0,Tl时刻该数据A被再次访问,则recencyl取值变为2,recency2取值将跟随变为I。由TO和Tl时刻的recencyl和recency2的取值的变化便可知,数据A在TO至Tl时刻的访问趋势是次数增多。
[0065]具体实现中,在本发明实施例包括历史状态属性参数recency2和当前状态属性参数recencyl的前提下,本发明实施例的方法还可包括:
[0066]当轮转指针(比如,CLOCK指针)连续扫描所述高速缓存中的X个数据后,所述X个数据中有Y个数据的历史状态属性参数recency2大于当前状态属性参数recencyl,则仓ij建一个冷指针指向所述X个数据的第一个数据;
[0067]其中,所述X和Y为正整数。
[0068]此时,轮转指针可直接移至所述冷指针所指向的位置。
[0069]由此,本发明实施例通过冷指针来改变轮转指针的指示位置,可便于轮转指针跳到不常被访问的数据区域,而直接迅速将这些数据移入淘汰候补队列进行淘汰。这样可提高高速缓存的数据的淘汰速率,提高整个系统的性能。
[0070]具体实现中,本发明实施例的方法还可包括:
[0071]当所述数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量小于第一阈值时,加快所述轮转指针(比如,CLOCK指针)遍历所述高速缓存中的数据的速度;
[0072]当所述数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量大于第二阈值时,将所述轮转指针(比如,CLOCK指针)遍历所述高速缓存中的数据的速度调整为所述预定的速度;
[0073]所述第二阈值大于所述第一阈值。具体实现中,所述第一阈值和所述第二阈值可为绝对的数值,也可是百分比,当采用百分比时,先将百分比乘上高速缓存中的总数量之后,再跟数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量之和进行比较。
[0074]由此,本发明实施例通过控制轮转指针的移动速度,从而保证淘汰候补队列及数据淘汰队列中的相对低价值数据的数据量保持在一个合理的水平,从而可达到有效吸收系统突发的输入输出的效果。相应的,本发明实施例提供了可用于实施本发明的管理高速缓存的方法的存储装置的实施例。
[0075]图3为本发明的存储装置的一实施例的结构组成示意图。如图3所示,其可包括:高速缓存30、判定模块31和第一处理模块32,其中,
[0076]高速缓存30,用于缓存数据;
[0077]判定模块31,用于确定保存在所述高速缓存30中的目标数据是否为顺序流中的数据。
[0078]第一处理模块32,用于当所述判定模块31确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存30的数据淘汰队列,并根据先进先出的原则,对所述高速缓存30中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
[0079]具体实现中,本发明实施例的顺序流可包括两个或两个以上在硬盘等低速设备中地址连续的数据,顺序流的判断方法多种多样,在比不进行赘述。以硬盘为例,比如,当四个被连续访问的数据的逻辑快地址依次递增时,则可认为这四个数据形成一个顺序流,其中四个数据的均为该顺序流中的数据。
[0080]具体实现中,当所述第一处理模块32将所述目标数据写入所述高速缓存30的数据淘汰队列时,若所述顺序流中的其他数据未写入所述数据淘汰队列中,本发明实施例中,所述第一处理模块32还可用于将所述目标数据所属的顺序流中的其他数据也写入所述数据淘汰队列中。并且,所述第一处理模块32将所述顺序流中的数据在所述数据淘汰队列中的排放顺序与所述数据在顺序流中的顺序可一致。
[0081]假设,硬盘中的数据的一个顺序流中的数据的地址分别为:1、2、3、4。当存储装置接收到访问地址为4的数据时,在把地址为4的数据写入高速缓存时,检查硬盘中地址为1、
2、3的数据是不是都在高速缓存中,如果都在高速缓存中,这时,判定模块31可确定地址4的数据为顺序流中的数据,这样,第一处理模块32可在将地址为4的数据写入高速缓存的数据淘汰队列时,将地址1-3的数据也写入所述数据淘汰队列。
[0082]当然,具体实现中,当将所述目标数据写入所述高速缓存的数据淘汰队列时,所述目标数据所属的顺序流的中的其他数据也可能已经写入了所述数据淘汰队列,则此时,仅将所述目标数据写入所述数据淘汰队列即可。
[0083]具体实现中,本发明实施例的数据淘汰队列可为先进先出(First In First Out,FIFO)队列,这样在从数据淘汰队列中淘汰数据时,可优先淘汰先进入队列的数据。当然,本发明实施例的数据淘汰队列也可为其他形式的队列,并不限于FIFO。
[0084]由上可见,在本发明上述实施例中,将顺序流的数据的淘汰单独通过数据淘汰队列来完成,可有效将高速缓存中的顺序流数据快速进行淘汰,保证高速缓存的高效利用率。
[0085]图4为本发明的存储装置的另一实施例的结构组成示意图。如图4所示,其可包括:高速缓存40、判定模块41、第一处理模块42、第二处理模块43以及第三处理模块44,其中:
[0086]所述高速缓存40可与图3中的高速缓存30相同,在此不进行赘述。
[0087]所述判定模块41可与图3中的判定模块31相同,在此不进行赘述。
[0088]所述第一处理模块42可与图3中的第一处理模块32相同,在此不进行赘述。
[0089]具体实现中,本发明实施例的第一处理模块42在将所述目标数据写入所述高速缓存的数据淘汰队列之后,还可将所述目标数据的当前状态属性参数(可简记为:recencyl)取值为第一数值。具体实现中,本发明实施例可通过当前状态属性参数的取值来指示目标数据是否即将被淘汰。比如,当所述目标数据的当前状态属性参数recencyl取值为第一数值(比如,第一数值可为“O”)时,表示所述目标数据是即将从高速缓存中淘汰的数据。
[0090]所述第二处理模块43,用于当所述判定模块41确定目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存40中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理,以及当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,则从所述高速缓存40中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0091]所述第三处理模块44,用于当所述判定模块41确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值,以及当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据给所述存储装置,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
[0092]具体实现中,第二处理模块43或第三处理模块44可用于通过轮转指针循环遍历高速缓存中的数据,并根据轮转指针遍历到的目标数据的当前状态属性参数的取值,对高速缓存中的所述目标数据是否需要被淘汰进行相应处理。比如,第二处理模块43或第三处理模块44,可用于通过CLOCK指针按照预定的速度和预定的方向(比如,顺时针或逆时针)循环遍历所述高速缓存中的数据,当所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。如前所述,当所述目标数据的当前状态属性参数recencyl取值为第一数值(比如,第一数值可为“O”)时,表示所述目标数据是即将从高速缓存中淘汰的数据;而当所述目标数据的当前状态属性参数recencyl的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。具体实现中,当目标数据的当前状态属性参数recencyl的取值大于第一数值(比如,取值为“ 1”),表示在轮转指针下次循环到所述目标数据之前,所述目标数据不会从所述高速缓存中淘汰。
[0093]其中,所述按照预设的递减规则修改所述目标数据的当前状态属性参数的取值中的递减规则可为递减n,其中,η为正整数。本发明实施例,当目标数据的当前状态属性参数recencyl的取值大于第一数值(比如,recencyl的取值可为“ I”或“2”或其他)时,按照预设的递减规则修改所述目标数据的当前状态属性参数recencyl的取值的作用在于,使所述目标数据的当前状态属性参数recencyl随着轮转指针循环的次数的增加,逐渐降低,直至降低为所述第一数值,由此,最终通过步骤S221将所述目标数据写入数据淘汰候补队列中,以便对所述目标数据进行淘汰处理。
[0094]由此可见,本发明实施例的CLOCK指针的作用不再像现有技术那样直接用于淘汰数据,而仅是选择一些即将被淘汰的数据放入淘汰候补队列,由淘汰候补队列根据预定先进先出的规则实施数据的真正淘汰。可有效地对高速缓存的存储阵列的性能进行削峰填谷。
[0095]具体实现中,本发明实施例,充分考虑了即将被淘汰的数据重新变为热点被访问数据后的处理方案。具体的,当处于数据淘汰队列或数据淘汰候补队列中的目标数据被访问时,第二处理模块43可用于将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。由此,可避免变为热点的目标数据被执行淘汰处理。
[0096]其中,按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值,具体可为,将所述目标数据的当前状态属性参数的取值递增η。本发明实施例,将所述目标数据的当前状态属性参数recencyl的取值按照预设的递增规则修改的作用在于,使所述目标数据的当前状态属性参数recencyl随着访问次数的增加,逐渐增加,由此,本发明实施例可使访问频繁的目标数据不会在短时间写入数据淘汰候补队列中,而避免了将热点被访问数据进行淘汰。
[0097]进一步,在其他的一些实施例中,本发明实施例的存储装置还可包括记录模块(未图示)和/或指针管理模块(未图示),其中:
[0098]所述记录模块,用于通过历史状态属性参数recency2记录所述当前状态属性参数recencyl的历史最近一次的取值。由此,本发明实施例可通过两个状态属性参数来记录高速缓存中的数据被访问的状态,这样便可记录下数据曾经被访问的变化趋势,比如,假设数据A,TO时刻recencyl取值为1,recency〗取值为0,Tl时刻该数据A被再次访问,则recencyl取值变为2, recency2取值将跟随变为I。由TO和Tl时刻的recencyl和recency2的取值的变化便可知,数据A在TO至Tl时刻的访问趋势是次数增多。
[0099]所述指针管理模块,用于当轮转指针(比如,CLOCK指针)连续扫描所述高速缓存中的X个数据后,所述X个数据中有Y个数据的历史状态属性参数recency2大于当前状态属性参数recencyl,则仓Il建一个冷指针指向所述X个数据的第一个数据,并将所述轮转指针直接移至所述冷指针所指向的数据, 其中,所述X和Y为正整数。
[0100]由此,本发明实施例通过冷指针来改变轮转指针的指示位置,可便于轮转指针跳到不常被访问的数据区域,而直接迅速将这些数据移入淘汰候补队列进行淘汰。这样可提高高速缓存的数据的淘汰速率,提高整个系统的性能。
[0101]具体实现中,所述指针管理模块还用于当所述数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量小于第一阈值时,加快所述轮转指针(比如,CLOCK指针)遍历所述高速缓存中的数据的速度;当所述数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量大于第二阈值时,将所述轮转指针(比如,CLOCK指针)遍历所述高速缓存中的数据的速度调整为所述预定的速度;所述第二阈值大于所述第一阈值。具体实现中,所述第一阈值和所述第二阈值可为绝对的数值,也可是百分比,当采用百分比时,先将百分比乘上高速缓存中的总数量之后,再跟数据淘汰队列中的数据量加上所述淘汰候补队列中的数据量之和进行比较。
[0102]由此,本发明实施例通过控制轮转指针的移动速度,从而保证淘汰候补队列及数据淘汰队列中的相对低价值数据的数据量保持在一个合理的水平,从而可达到有效吸收系统突发的输入输出的效果。
[0103]以上实施例均是从的管理高速缓存的设备所包含的功能模块的角度对设备的结构组成进行了限定,具体实现中,如图5所示,作为本发明实施例的存储装置的一种硬件结构实施例,本发明的存储装置可包括存储器51和处理器52,其中,存储器51包括高速缓存,除此之外,所述存储器51中还存储有特定的程序代码,处理器52可通过调用存储器51中的所述特定的程序代码,用于执行本发明图1或图2实施例所示的存储装置所执行的流程。[0104] 以上所列举的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种管理高速缓存的方法,其特征在于,所述方法应用于存储装置中,所述存储装置包括高速缓存,所述方法包括: 所述存储装置确定保存在所述高速缓存中的目标数据是否为顺序流中的数据; 当所述存储装置确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列; 所述存储装置根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
2.如权利要求1所述的管理高速缓存的方法,其特征在于,还包括: 当所述存储装置确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。
3.如权利要求1所述的管理高速缓存的方法,其特征在于,还包括: 当所述存储装置确定目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。
4.如权利要求2所述的管理高速缓存的方法,其特征在于,还包括: 当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,从所述高速缓存中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当`前状态属性参数的取值。
5.如权利要求3所述的管理高速缓存的方法,其特征在于,还包括: 当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
6.一种存储装置,包括高速缓存,其特征在于,所述存储装置还包括: 判定模块,用于确定保存在所述高速缓存中的目标数据是否为顺序流中的数据; 第一处理模块,用于当所述判定模块确定所述目标数据为顺序流中的数据时,将所述目标数据写入所述高速缓存的数据淘汰队列,并根据先进先出的原则,对所述高速缓存中写入所述数据淘汰队列中的所述目标数据进行淘汰处理。
7.如权利要求6所述的存储装置,其特征在于,还包括: 第二处理模块,用于当所述判定模块确定目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值为第一数值,则将所述目标数据写入数据淘汰候补队列,并当所述数据淘汰队列为空后,根据先进先出的原则,对所述高速缓存中写入所述数据淘汰候补队列中的所述目标数据进行淘汰处理。
8.如权利要求6所述的存储装置,其特征在于,还包括: 第三处理模块,用于当所述判定模块确定所述目标数据不是顺序流中的数据,且通过轮转指针循环遍历到所述目标数据时,所述目标数据的当前状态属性参数的取值大于第一数值,则按照预设的递减规则修改所述目标数据的当前状态属性参数的取值。
9.如权利要求7所述的存储装置,其特征在于,所述第二处理模块,还用于当所述存储装置接收到请求访问所述目标数据的访问请求时,若所述目标数据在所述数据淘汰队列或所述数据淘汰候补队列中,则从所述高速缓存中获取所述目标数据,将所述目标数据从所述数据淘汰队列中或所述数据淘汰候补队列中删除,并按照与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
10.如权利要求8所述的存储装置,其特征在于,所述第三处理模块,还用于当所述存储装置接收到请求访问所述目标数据的访问请求时,从所述高速缓存中获取所述目标数据,并按照 与所述递减规则反向的递增规则修改所述目标数据的当前状态属性参数的取值。
【文档编号】G06F12/08GK103761052SQ201310740472
【公开日】2014年4月30日 申请日期:2013年12月28日 优先权日:2013年12月28日
【发明者】龚涛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1