一种高速缓存行替换方法、装置及电子设备制造方法及图纸

技术编号:27975255 阅读:11 留言:0更新日期:2021-04-06 14:09
本发明专利技术的实施例公开一种高速缓存行替换方法、装置及电子设备,涉及缓存行管理技术领域,能够避免发生L3优先替换掉在cluster中只有一个副本的缓存行而影响缓存的命中率的问题。所述高速缓存行替换方法,包括:接收二级缓存的牺牲请求;获取三级缓存中与第一缓存行地址对应且具有多个副本的第二缓存行;根据预定选择策略从获取的第二缓存行中选择一个缓存行,作为用于替换第一缓存行的目标缓存行;读取目标缓存行信息,并将第一缓存行数据及状态信息写入到目标缓存行中。本发明专利技术能提高缓存的命中率,从而降低了系统延迟。

【技术实现步骤摘要】
一种高速缓存行替换方法、装置及电子设备
本专利技术涉及缓存行管理
,尤其涉及一种高速缓存行替换方法、装置及电子设备。
技术介绍
因为计算机的内存有限,一般所使用的指令及数据存储于硬盘等外设中,等CPU真正需要使用到该指令或数据时,才会将相应的指令及数据般到内存中。因为CPU一般工作在很高的频率,而内存又工作在相对比较低的频率,所以如果CPU每次等到要使用时才从内存中获取相应数据,那么会严重的阻塞处理器核心core的流水线,使CPU性能下降。为了提高core的流水线效率,一般会在core和内存直接增加多级缓存,用以存放那些经常会被使用到的指令或数据。这样,core访问那些经常被使用的数据时,就不用在访问频率相对比较低的内存,从而提高CPU性能。因为缓存的容量有限,只能存放那些经常会被访问的数据,对于那些相对不经常访问的数据,一般只能存放于内存甚至是硬盘等外设中。因此对于core下发的仿存指令,能否在缓存中命中直接影响着CPU的性能。现有的多级缓存结构中,每个core有一个私有的一级缓存L1(数据缓存和指令缓存),一个私有的二级缓存L2同时存放数据和指令,在同一个cluster中所有core共享一个三级缓存L3。因为每级缓存的容量有限,为了尽量提供各级缓存的命中率,一般在缓存容量满的情况下,采用替换算法将相对不经常被访问的cacheline(缓存行)替换出来存到下级缓存,空出来的位置存放最新从下级缓存读上来的数据。如在L2满的情况下,L2将替换出来的cacheline存到L3中。同样的,如果此时L3相同index的多个way都满了,也会采用基于年龄的替换算法,替换出来一条cacheline。现有技术中,因没有考虑cacheline在cluster中是只有一个副本还是有多个副本,统一采用基于年龄的替换算法,常常发生替换掉在cluster中只有一个副本的cacheline,而保留有多个副本的cacheline,从而降低请求在cluster中的命中率。如果在L3的某个index满的情况下,如果有一条年龄为3,并且为E状态的cachelineA,同时有一条年龄为2,并且为S状态的cachelineB,替换算法会选择替换cachelineA,而保留在cluster中有多个副本的cachelineB,这样当core需要再次访问cachelineA时,因为在整个cluster中miss了,需要进一步访问低速的内存才能取得相应的数据,而访问内存的延迟往往在毫秒级,严重的影响CPU的性能。因此急需一种缓存行替换方案,避免发生L3优先替换掉在cluster中只有一个副本的缓存行,而保留在cluster中有多个副本的缓存行,从而影响缓存的命中率的问题。
技术实现思路
有鉴于此,本专利技术实施例提供一种高速缓存行替换方法、装置及电子设备,能够避免发生L3优先替换掉在cluster中只有一个副本的缓存行,而保留在cluster中有多个副本的缓存行,从而影响缓存的命中率的问题。第一方面,本专利技术实施例提供一种高速缓存行替换方法,用于三级缓存,包括:接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。结合第一方面,在第一方面的第一种可实施方式中,在所述接收二级缓存的牺牲请求之前,还包括:根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;其中,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行,包括:判断所述牺牲请求在标签数据阵列中是否可以命中;若所述牺牲请求在标签数据阵列未命中,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;若所述牺牲请求在标签数据阵列中未命中,且所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行都没有空闲,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;若所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行,则将所述RS状态的缓存行作为所述第二缓存行。结合第一方面,在第一方面的第二种可实施方式中,所述根据预定选择策略从获取的多个所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行,包括:选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。结合第一方面的第一种可实施方式,在第一方面的第三种可实施方式中,在所述判断所述牺牲请求在标签数据阵列中是否可以命中之后,还包括:若所述牺牲请求在标签数据阵列中命中,则将所述第一缓存行的数据及状态信息写入命中缓存行中。结合第一方面的第一种可实施方式,在第一方面的第四种可实施方式中,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲之后,还包括:若所述标签数据阵列中与所述第一缓存行地址对应的缓存行有空闲,则将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。结合第一方面的第一种可实施方式,在第一方面的第五种可实施方式中,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行之后,还包括:若所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态,则继续判断所述第一缓存行的状态是否为RS状态;若所述第一缓存行的状态不为RS状态,则选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;将所述第一缓存行的数据及状态信息写入所述第三缓存行中。结合第一方面的第一种可实施方式,在第一方面的第六种可实施方式中,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。结合第一方面的第六种可实施方式,在第一方面的第七种可实施方式中,在所述标签数据阵列中,以当前缓存地址的19∶6的位置为索引;获取所述索引对应的多路缓存中的标签位;判断获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。结合第一方面的第七种可实施方式,在第一方面的第八种可实施方式中,在将所述第一缓存行数据及状态信息写入到所述目标缓存行中之后,还包括:根据寄存器配置以及所本文档来自技高网
...

【技术保护点】
1.一种高速缓存行替换方法,其特征在于,用于三级缓存,包括:/n接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;/n获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;/n根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;/n读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。/n

【技术特征摘要】
1.一种高速缓存行替换方法,其特征在于,用于三级缓存,包括:
接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。


2.根据权利要求1所述的高速缓存行替换方法,其特征在于,在所述接收二级缓存的牺牲请求之前,还包括:
根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行,包括:
判断所述牺牲请求在标签数据阵列中是否可以命中;
若所述牺牲请求在标签数据阵列未命中,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
若所述牺牲请求在标签数据阵列中未命中,且所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行都没有空闲,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行,则将所述RS状态的缓存行作为所述第二缓存行。


3.根据权利要求1所述的高速缓存行替换方法,其特征在于,所述根据预定选择策略从获取的多个所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行,包括:
选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。


4.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述牺牲请求在标签数据阵列中是否可以命中之后,还包括:
若所述牺牲请求在标签数据阵列中命中,则将所述第一缓存行的数据及状态信息写入命中缓存行中。


5.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行有空闲,则将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。


6.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存中是否存在RS状态的缓存行之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态,则继续判断所述第一缓存行的状态是否为RS状态;
若所述第一缓存行的状态不为RS状态,则选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
将所述第一缓存行的数据及状态信息写入所述第三缓存行中。


7.根据权利要求2所述的高速缓存行替换方法,其特征在于,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。


8.根据权利要求7所述的高速缓存行替换方法,其特征在于,所述判断所述牺牲请求在标签数据阵列中是否可以命中,包括:
在所述标签数据阵列中,以当前缓存地址的19:6的位置为索引;
获取所述索引对应的多路缓存中的标签位;
判断获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;
若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。


9.根据权利要求8所述的高速缓存行替换方法,其特征在于,在将所述第一缓存行数据及状态信息写入到所述目标缓存行中之后,还包括:
根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。


10.根据权利要求1所述的高速缓存行替换方法,其特征在于,在所述接收二级缓存的牺牲请求之后,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行之前,还包括:
将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
接收二级缓存返回的缓存行数据及状态信息。


11.一种高速缓存行替换装置,其特征在于,用于三级缓存,包括:
牺牲请求接收模块,用于接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
...

【专利技术属性】
技术研发人员:姚真平尚铮卢林谢波实
申请(专利权)人:海光信息技术股份有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1