高速缓冲存储器cache中cache块的替换处理方法和装置制造方法

文档序号:6493386阅读:177来源:国知局
高速缓冲存储器cache中cache块的替换处理方法和装置制造方法
【专利摘要】本发明实施例提供的高速缓冲存储器cache中cache块的替换处理方法和装置,通过为除了L1?cache之外的cache中各cacheline增加一个标志位来指示其内的数据是否存在于上级cache中,尽可能减少上级cache中含有的cache?line在本级cache被替换出去的情况,进而减少了上级cache的cache?line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
【专利说明】高速缓冲存储器cache中cache块的替换处理方法和装置
【技术领域】
[0001]本发明实施例涉及数据存储技术,尤其涉及一种高速缓冲存储器cache中cache块的替换处理方法和装置。
【背景技术】
[0002]高速缓冲存储器(cache)最早是由Wilkes于1951年为了弥补处理器与存储器之间的速度差异而提出的,是存储系统中最重要的部分。现有技术中cache —般采用层级结构,图1为现有技术中cache层级结构示意图,如图1所示采用了 LI cache、L2 cache和L3 cache三个层次的cache结构,其访问速度依次递减,容量依次递增。LI cache对于L2cache而言是上级cache, L2 cache对于L3 cache而言是上级cache。若上级cache中的所有数据在本级cache中都存在,那么这种cache的组织方式为包括式(inclusive)。若数据最多可以在两个cache其中之一,不可以同时存在于两个cache,这种cache组织方式为排他式(exclusive)。现有技术的处理器大多采用inclusive的cache组织方式。
[0003]cache根据局部性原理,只存储部分经常使用的数据供处理器运算。那么必然有些数据不存储在cache中,当访问这部分数据时,会发生未命中(cache miss),反之称为cache命中(cache hit)。cache的性能和cache命中率紧密相连,cache命中率越高,存储访问需要的时间越少,cache的性能越高;反之,cache性能就越低。如果当前访问的数据不在cache中即cache miss,可能造成对现有的cache按照cache块(cache line, 一般指cache读写的最小单位)的大小进行替换,即将当前此cache line中的数据在此cache中作废,并填入新的数据。
[0004]在采用inclusive方式组织的cache中,由于各级cache只根据本级cache被访问的情况进行统计,可能造成低级cache的使用情况并不真实,进而导致低效的替换策略,影响存储器的访问性能。例如L2 cache在进行cache line替换时,可能把一个在LI cache中频繁命中的cache line替换掉;由于inclusive的组织方式,会将LI cache中对应的cache line也替换出去,这样将影响存储器的访问性能。

【发明内容】

[0005]本发明实施例提供一种高速缓冲存储器cache中cache块的替换处理方法和装直,以提闻cache的命中率。
[0006]本发明实施例一方面提供一种高速缓冲存储器cache中cache块的替换处理方法,包括:
[0007]在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换;所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。[0008]在上述实施例中还包括:若所述本级cache内多个待替换的cache块中包括没有存储数据的cache块,则优先选择没有存储数据的cache块作为目标cache块进行替换。
[0009]在上述实施例中还包括:在进行cache初始化时,将各cache块的标志位设置为复位状态;
[0010]或,
[0011]cache块内的数据被删除后,将所述cache块的标志位设置为复位状态;
[0012]或,
[0013]所述上级cache中一 cache块内的数据被替换后,若所述本级cache仅存在一个上级cache,或者存在多个上级cache、且其他上级cache内不包括被替换的数据,则将被替换的cache块在所述本级cache中对应的cache块的标志位设置为复位状态;
[0014]或,
[0015]所述上级cache中一 cache块内的数据被替换后,若所述本级cache存在多个上级cache、且其他上级cache内包括被替换的数据,则维持所述本级cache中对应的cache块的标志位为置位状态;
[0016]或
[0017]所述上级cache中一 cache块内的数据被替换后,将替换后的所述cache块在所述本级cache中所对应的cache块的标志位设置为置位状态。
[0018]在上述实施例中还包括:若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态;
[0019]或
[0020]若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理;
[0021]或
[0022]在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态;
[0023]或,
[0024]在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理。
[0025]在上述实施例中,所述本级cache中的各cache块均各自设置有一个标志位,或具有不同索引的多个cache块共用一个标志位。
[0026]在上述实施例中,各所述cache块与对应的标志位存储在同一阵列中,或存储不同阵列中。
[0027]本发明实施例另方面提供一种高速缓冲存储器cache中cache块的替换处理装置,该装置包括:[0028]接收模块,用于接收数据访问请求;
[0029]处理模块,用于在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换;所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。
[0030]本发明实施例提供的高速缓冲存储器cache中cache块的替换处理方法和装置,通过为除了 LI cache之外的cache中各cache line增加一个标志位来指示其内的数据是否存在于上级cache中,尽可能减少上级cache中含有的cacheline在本级cache被替换出去的情况,进而减少了上级cache的cache line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
【专利附图】

【附图说明】
[0031]图1为现有技术中cache层级结构示意图;
[0032]图2为本发明实施例中cache内部结构示意图;
[0033]图3为本发明实施例cache块的替换处理方法流程图;
[0034]图4为本发明实施例单个上级cache对应本级cache的结构示意图;
[0035]图5为本发明实施例多个上级cache对应本级cache的结构示意图;
[0036]图6为本发明实施例cache中cache块的替换处理装置结构示意图。
【具体实施方式】
[0037]如图1示出的cache层级结构中既可以采用exclusive方式,也可以采用inclusive方式,以下各实施例针对inclusive方式即上级cache中的所有数据在本级cache中都存在的存储方式介绍本发明的技术方案。
[0038]为了更加清楚的了解本发明的技术方案,首先介绍一下cache内部结构,图2为本发明实施例中cache内部结构示意图,如图2所示,cache普遍采用组相联的组织方式。一般cache分为若干组,每组包括若干个cache line (即cache块),如果每组有η个cacheline,则称之为η路组相联。内存(memory)中的指定数据可以相应地放到cache中的指定组中的任意一个cache line中。图2为两路组相联的cache结构。首先地址(address)分为cache tag (标签)、cache index (索引)和offset (偏移量)三个字段:offset表示一个 cache line 内的地址,例如 16Byte 的 cache line,可以用 4-bit 的 offset 表不;cacheindex用来索引cache的Data Array和Tag Array内的一个组(因为组相联中,一个指定的地址只能映射到一个组);cache tag 一般是地址的高部分,用来判断组内的多个cacheline (图2中为wayO和wayl)是否命中或者不命中(hit/miss)。I路组相联称为直接映射。cache只有一组,称为全相联映射。直接映射的情况下,cache进行替换时,由于必须也只能对其中一个指定的cache line进行替换,并无备选cache line进行选择。因此本发明各实施例适应于非直接映射的情况下,即cache index所指向的一组cache内至少存在两个待替换的cacheline。
[0039]本发明实施例针对在inclusive的cache组织方式中,有可能将频繁使用的cacheline替换出去的缺陷,对替换算法进行优化,以提高存储器访问效率。具体地,本发明实施例中为如图1中除了 LI cache之外的其他cache的(例如L2 cache和L3 cache)各cacheline增加一个标志位例如upper,upper用于表示该cache line中的数据是否存在于本级cache对应的上级cache中。标志位至少包括两个状态即复位状态和置位状态,其中,置位状态表示该cache line中的数据是存在于本级cache对应的上级cache中,复位状态表示该cache line中的数据是不存在于本级cache对应的上级cache中。例如,L2 cache中的一个cache line内存储有数据Μ,若该cache line对应的标志位为置位状态例如upper位为“1”,则说明LI cache中也存储有数据M ;若该cache line对应的标志位为复位状态例如upper位为“O”,则说明LI cache中不存储有数据M。本发明实施例可以根据标志位的状态在L2 cache中多个待替换的cache line中选择合适的cache line,以避免LI cache中频繁使用的cache line被替换出去。
[0040]图3为本发明实施例cache块的替换处理方法流程图,如图3所示,该方法包括:
[0041]步骤100、接收数据访问请求;
[0042]步骤101、在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换。
[0043]在接收到数据访问请求后,根据cache的层级结构进行逐步查询。首先查找LIcache,具体地根据请求地址中的cache index查找LI cache中与cacheindex对应的一组cache line,查看该组cache line内的各cache line内存储的数据对应的tag是否与地址中包括的cache tag—致,若一致,则命中,若不一致,则未命中。若LI cache命中,则数据访问成功;若LI cache未命中,则继续依序查找L2 cache和L3 cache, L2 cache和L3cache的查找方式与Llcache —致,此处不再赘述。若均未命中,贝U查找memory直至命中。根据要求,若某一级的cache未命中,贝U要触发替换流程,即在该级cache中与cacheindex对应的cache line组内多个待替换的待替换中选择一个cache line进行替换,即要应用所要查找的数据替换原来存储的数据。
[0044]本发明实施例中,在LI cache未命中,继续对例如L2 cache进行数据访问的过程中,若仍然未命中,贝1J需要对L2 cache进行替换处理。首先查看cacheindex对应的cacheline组内各cache line的标志位的状态,若存在标志位为复位状态的cache line,则说明该cache line内的数据不存在于LI cache中,即便该cache line内的数据被替换出去,LI cache内存储所有的数据仍然全部存储在L2 cache内,那么选择其作为替换目标不会导致LI cache的替换,因此本发明实施例在标志位为复位状态的cache line中选择一目标cache line进行替换。可以理解的是,若L2 cache中所选择替换的cache line的标志位为置位状态,贝1J说明该cache line中的数据也存在于LI cache中,当将该cache line中的数据替换出去后,根据inclusive组织方式的要求,Llcache中对应的cacheline也要进行替换,其内部存储的数据将被删除,若该数据在LI cache频繁命中,则如此替换不利于数据查找的效率。
[0045]本发明实施例提供的cache块的替换处理方法中,通过为除了 LI cache之外的cache中各cache line增加一个标志位来指示其内的数据是否存在于上级cache中,尽可能减少上级cache中含有的cache line在本级cache被替换出去的情况,进而减少了上级cache的cache line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
[0046]在上述方法实施例中,若LI cache和L2 cache均未命中,贝U在L2 cache中按照上述方法选择一个目标cache line进行替换的过程中,若发现L2 cache中多个待替换的cache line中包括没有存储数据的cache line,则优先选择该没有存储数据的cache line作为目标cache line进行替换。一个cache line中当前没有存储数据的原因有很多,例如初始化后所有的cache line中均没有存储数据。即本实施例中选择目标cache line时,优先选择没有存储任何数据的cache line,若均存储有数据,则可以按照上述方法实施例提供的选择方法进行选择。
[0047]在上述方法实施例中,若LI cache和L2 cache均未命中,贝U在L2 cache中按照上述方法选择一个目标cache line进行替换的过程中,若发现L2 cache中多个待替换的cache line的标志位均为置位状态,则可以按照预设算法例如现有技术普遍采用的算法来选择一个目标cache line进行替换。由于替换后的数据在LI cache中不存在,因此在替换后可以将该目标cache line的标志位设置为复位状态。
[0048]图4为本发明实施例单个上级cache对应本级cache的结构示意图,图5为本发明实施例多个上级cache对应本级cache的结构示意图。图4中包括一个本级cache和单个对应的上级cache,采用inclusive的组织方式,例如只有一个LI cache对应一个L2cache ο图5中包括一个本级cache和对应的多个上级cache,采用inclusive的组织方式,例如多核系统中的多个L2 cache对应一个L3 cache。为本级cache的每个cache line增加一个标志位upper,表示对应cache line是否有数据存在于上级cache中。upper位的初始化、复位和置位操作如下:
[0049]初始化:在进行cache初始化时,cache中的所有的cache line均无效,将cacheline的标志位设置为复位状态。
[0050]upper置位(有效):当有数据从本级cache写入到任意一个上级cache,将本级cache中相应的cache line的upper置位。对于图5,如果写入到其中一个上级cache中的数据,本就存在于其他的上级cache中,那么upper原本就是有效的,此时置位并不影响。如果多个上级cache之间是exclusive的组织方式(例如,大多数的LI data cache和LIinstruction cache),那么写入到其中一个上级cache中的数据,必然不存在于其他的上级cache中,那么upper从无效变为有效。
[0051]另外,上级cache中一 cache块内的数据被替换后,将替换后的cache块在本级cache中所对应的cache line的upper置位。
[0052]upper 复位(无效):
[0053]对于图4,按照引起upper复位的原因分为cache line的无效和cache line的替换两种:当cache (非Llcache)进行cache line的无效操作即删除cacheline内的数据时,对应的cache line的upper需要复位。当有数据从上级cache中替换出来,将被替换的cache line在本级相应的cache line的upper复位。数据从上级cache中替换出来有两种情况:一种是由上级cache的cache miss引发的;一种是由于本级cache中所有的upper均有效时进行替换引起的。
[0054]对于图5,按照引起upper复位的原因分为cache line的无效和cache line的替换两种:当cache (非LI cache)进行cache line的无效操作即删除cacheline内的数据时,对应的cache line的upper需要复位。cache line的替换分为两种情况:第一种是由上级cache的cache miss引发的替换,第二种是由于本级cache中所有的upper均有效时进行替换引起的。第二种情况可以立即将upper复位。第一种情况需要进一步的分析:
[0055]如果多个上级cache之间采用的是exclusive的组织方式,那么当上级cache进行替换的时候,其他上级cache内不包括被替换的数据,此时可以立即将被替换的cacheline在本级cache对应的cache line的upper复位。
[0056]如果多个上级cache之间采用的是inclusive的组织方式,一个上级cache进行替换时,先查询其他的上级cache是否含有该被替换的数据(目录一致性可以查看目录,总线一致性协议可以通过向其他上级cache发送总线请求来完成判断),如果其他上级cache中只要有一个含有该数据,那么upper位不复位,仍然保持置位状态(即有效),否则将被替换的cache line在本级cache对应的cache line的upper复位。
[0057]在上述方法实施例中,cache line和对应的标志位upper可以存储在同一阵列,当然也可以存储在不同阵列的。cache中的各cache line可以均各自设置有一个upper位。或具有不同索引的多个cache line共用一个upper位,也就是说为了节省upper所占用的存储资源,可以将本级cache的不同的索引对应的多个cache line采用一个upper表示,只要其中有一个cache line满足如上upper置位的条件,此upper位就置位;否则,upper位无效。
[0058]另外,本级cache与上级cache之间的通信可以通过多对一的联接结构,也可以通过总线,也可以通过crossbar等结构,本发明实施例并不作限定。
[0059]以下结合一个实际的例子对本发明实施例的方法进行介绍。在对图1所示的cache进行A数据访问时,请求地址中cache index指向LI cache中的一组cache line,其中包括两个cache line (cache Iinel和cache line2)(本实施例以两个为例进行说明,并不局限于此),cache Iinel存储有数据B, cache line2存储有数据C。由于访问的数据A在LI cache未命中,则继续访问L2 cache。cache index指向L2 cache中的一组cacheline,其中包括三个 cache line (cacheline3、cache line4 和 cache line5)(本实施例以三个为例进行说明,并不局限于此),假设cache line3存储有数据C,对应的upper位为I ;cache line4存储有数据D,对应的upper位为O ;cache line5存储有数据E,对应的upper位为O。按照本发明实施例提供的方法,此时选择cache line5作为目标cacheline进行替换(此处假设L3 cache命中)即用数据A替换数据E,此时cacheline5对应的upper位为O0
[0060]再进行LI cache的替换时,若选择cache line2进行替换即用数据A替换数据C,则将LI cache中被替换的cache line2(存储有数据C)在L2 cache中对应的cache line3的upper位设置为O。同时,LI cache中替换后的cacheline2(存储有数据A)在L2 cache中对应的cache line5的upper位设置为I。
[0061]再进行LI cache的替换时,若选择cache Iinel进行替换即用数据A替换数据B,则将LI cache中被替换的cache Iinel (存储有数据B)在L2 cache中对应的cache line(存储有数据B,在另一个cache line组中)的upper位设置为O。同时,LI cache中替换后的cache Iinel (存储有数据A)在L2 cache中对应的cache line5的upper位设置为I。或者还可以进行简化处理,即应用数据A替换L2 cache中对应的cache line5时,由于L2cache未命中,LI cache必然也未命中,因此可以先直接将L2 cache中对应的cache line5的upper位设置为1,然后再对用数据A替换LI cache中cache Iinel的数据B。此简化处理流程同样适用于L2 cache未命中、且cache index指向L2 cache中的各cache line的upper位均设置为I等其他情形。
[0062]在上述实施例中,假设cache Iinel存储有数据B ;cache line2存储有数据C ;cache line3存储有数据A,对应的upper位为O ;ache line4存储有数据B,对应的upper位为I ;cache Iine5存储有数据C,对应的upper位为I。请求访问数据A的过程中,LIcache未命中,但L2 cache命中,此时要进行Llcache的替换,若选择cache Iinel进行替换,则需要将cache line4的upper位置为O,并将cache line3的upper位置为I。本发明实施例提供的cache块的替换处理方法中,通过为除了 LI cache之外的cache中各cacheline增加一个标志位来指示其内的数据是否存在于上级cache中,并在进行cache line替换过程中,尽可能选择标志位处于复位状态的cache line,以减少上级cache中含有的cache line在本级cache被替换出去的情况,进而减少了上级cache的cache line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
[0063]图6为本发明实施例cache中cache块的替换处理装置结构示意图,如图6所示,该装置包括接收模块61和处理模块62,其中,接收模块61用于接收数据访问请求。处理模块62用于在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换;所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。
[0064]本发明实施例提供的处理装置,通过为除了 LI cache之外的cache中各cacheline增加一个标志位来指示其内的数据是否存在于上级cache中,并在进行cache line替换过程中,尽可能选择标志位处于复位状态的cache line,以减少上级cache中含有的cache line在本级cache被替换出去的情况,进而减少了上级cache的cache line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
[0065]上述装置实施例中,处理模块62还用于,若所述本级cache内多个待替换的cache块中包括没有存储数据的cache块,则优先选择没有存储数据的cache块作为目标cache块进行替换。
[0066]处理模块62还用于:在进行cache初始化时,将各cache块的标志位设置为复位状态;或,cache块内的数据被删除后,将所述cache块的标志位设置为复位状态;或,所述上级cache中一 cache块内的数据被替换后,若所述本级cache仅存在一个上级cache,或者存在多个上级cache、且其他上级cache内不包括被替换的数据,则将被替换的cache块在所述本级cache中对应的cache块的标志位设置为复位状态;或,所述上级cache中一cache块内的数据被替换后,若所述本级cache存在多个上级cache、且其他上级cache内包括被替换的数据,则维持所述本级cache中对应的cache块的标志位为置位状态;或,所述上级cache中一 cache块内的数据被替换后,将替换后的所述cache块在所述本级cache中所对应的cache块的标志位设置为置位状态。[0067]处理模块62还用于,若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态;或若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理;或在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态;或,在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理。
[0068]本发明实施例还提供一种cache中cache块的替换处理装置,包括一处理器,该处理器用于完成以下功能:在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换。其中,所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。
[0069]处理器完成的功能还可以包括若所述本级cache内多个待替换的cache块中包括没有存储数据的cache块,则优先选择没有存储数据的cache块作为目标cache块进行替换。
[0070]还有,在进行cache初始化时,将各cache块的标志位设置为复位状态;或,cache块内的数据被删除后,将所述cache块的标志位设置为复位状态;或,所述上级cache中一cache块内的数据被替换后,若所述本级cache仅存在一个上级cache,或者存在多个上级cache、且其他上级cache内不包括被替换的数据,则将被替换的cache块在所述本级cache中对应的cache块的标志位设置为复位状态;或,所述上级cache中一 cache块内的数据被替换后,若所述本级cache存在多个上级cache、且其他上级cache内包括被替换的数据,则维持所述本级cache中对应的cache块的标志位为置位状态;或,所述上级cache中一cache块内的数据被替换后,将替换后的所述cache块在所述本级cache中所对应的cache块的标志位设置为置位状态。
[0071]还有,若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,将所述目标cache块的标志位设置为复位状态。
[0072]本发明实施例提供的处理装置,通过为除了 LI cache之外的cache中各cacheline增加一个标志位来指示其内的数据是否存在于上级cache中,并在进行cache line替换过程中,尽可能选择标志位处于复位状态的cache line,以减少上级cache中含有的cache line在本级cache被替换出去的情况,进而减少了上级cache的cache line被替换造成的开销;而且还能够提高cache的命中率,减少存储器访问时延。
[0073]在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0074]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0075]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0076]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory, RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0077]本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0078]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种高速缓冲存储器cache中cache块的替换处理方法,其特征在于,包括: 在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换;所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 若所述本级cache内多个待替换的cache块中包括没有存储数据的cache块,则优先选择没有存储数据的cache块作为目标cache块进行替换。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 在进行cache初始化时,将各cache块的标志位设置为复位状态; 或, cache块内的数据被删除后,将所述cache块的标志位设置为复位状态; 或, 所述上级cache中一 cache块内的数据被替换后,若所述本级cache仅存在一个上级cache,或者存在多个上级cache、且其他上级cache内不包括被替换的数据,则将被替换的cache块在所述本级cache中对应的cache块的标志位设置为复位状态; 或, 所述上级cache中一 cache块内的 数据被替换后,若所述本级cache存在多个上级cache、且其他上级cache内包括被替换的数据,则维持所述本级cache中对应的cache块的标志位为置位状态; 或 所述上级cache中一 cache块内的数据被替换后,将替换后的所述cache块在所述本级cache中所对应的cache块的标志位设置为置位状态。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态; 或 若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理; 或 在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态; 或, 在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理。
5.根据权利要求1至4任一所述的方法,其特征在于,所述本级cache中的各cache块均各自设置有一个标志位,或具有不同索引的多个cache块共用一个标志位。
6.根据权利要求1至4任一所述的方法,其特征在于,各所述cache块与对应的标志位存储在同一阵列中,或存储不同阵列中。
7.一种高速缓冲存储器cache中cache块的替换处理装置,其特征在于,包括: 接收模块,用于接收数据访问请求; 处理模块,用于在根据接收到的数据访问请求对本级cache进行数据访问的过程中,若未命中、且在所述本级cache内多个待替换的cache块中存在标志位为复位状态的cache块,则在所述标志位为复位状态的cache块中选择一目标cache块进行替换;所述标志位包括复位状态和置位状态,所述标志位用于表示所述cache块中的数据是否存在于所述本级cache对应的上级cache中,所述置位状态表示存在,所述复位状态表示不存在。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于: 若所述本级cache内多个待替换的cache块中包括没有存储数据的cache块,则优先选择没有存储数据的cache块作为目标cache块进行替换。
9.根据权利要求7所述的装置,其特征在于,所述处理模块还用于: 在进行cache初始化时,将各cache块的标志位设置为复位状态;或, cache块内的数据被删除后,将所述cache块的标志位设置为复位状态;或, 所述上级cache中一 cache块内的 数据被替换后,若所述本级cache仅存在一个上级cache,或者存在多个上级cache、且其他上级cache内不包括被替换的数据,则将被替换的cache块在所述本级cache中对应的cache块的标志位设置为复位状态;或, 所述上级cache中一 cache块内的数据被替换后,若所述本级cache存在多个上级cache、且其他上级cache内包括被替换的数据,则维持所述本级cache中对应的cache块的标志位为置位状态;或 所述上级cache中一 cache块内的数据被替换后,将替换后的所述cache块在所述本级cache中所对应的cache块的标志位设置为置位状态。
10.根据权利要求7所述的装置,其特征在于,所述处理模块还用于: 若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态; 或 若在本级cache内多个待替换的cache块的标志位均为置位状态,则按照预设算法选择一个目标cache块进行替换,并在进行完替换后,直接将所述目标cache块的标志位设置为置位状态;再进行上级cache的cache块的替换处理; 或 在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,将所述目标cache块的标志位设置为复位状态;并在上级cache进行完cache块的替换处理后,再将所述目标cache块的标志位设置为置位状态;或,在所述标志位为复位状态的cache块中选择一目标cache块进行替换完成后,直接将所述目标cache块的标志位设置 为置位状态;再进行上级cache的cache块的替换处理。
【文档编号】G06F12/08GK103885890SQ201210562433
【公开日】2014年6月25日 申请日期:2012年12月21日 优先权日:2012年12月21日
【发明者】刘月吉, 张立新, 侯锐, 李晔 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1