本发明涉及计算机,尤其涉及一种提高缓存命中率的方法、装置、设备及存储介质。
背景技术:
1、目前,服务器芯片一般为大型数据中心所设计,性能与能效是服务器芯片所关注的最典型指标。尤其是性能的提升与优化,对在服务器芯片上运行高性能计算任务等具有重大意义。缓存(cache)是计算机系统中的一种高速存储器,用于暂时存储从速度较慢的主存中读取的数据,以提高处理器对数据的访问速度。
2、组相联缓存是一种常见的缓存结构,它将缓存的总容量划分为多个组,每个组中包含多个缓存行。每个缓存行可以存储一个数据块(例如一个内存地址的内容)以及一些附加的控制信息(如标签/标记信息、有效位等)。数据块通过地址信息进行选择,放入某个组,但是在组内,在现有的方案中一般均采用随机放入的方式,即如果有空位的时候,则采用随机的方式挑选一个空位进行放入。如果组内没有空位,那么需要选出一个缓存行进行替换,被替换掉的缓存行会重新放入下游的主存内。但是,当前被替换出去的缓存行有可能下一次访问就会被采用,导致下次访问就需要去主存中重新取数据,重新替换某条缓存行,极大地增加访问延迟,降低了缓存命中率,影响服务器芯片的性能。
3、因此,亟需一种提高缓存命中率的方法提高缓存命中率,实现对服务器芯片性能的优化。
技术实现思路
1、本发明的主要目的在于提供了一种提高缓存命中率的方法、装置、设备及存储介质,旨在解决现有技术中如何提高缓存命中率,实现对服务器芯片性能优化的技术问题。
2、为实现上述目的,本发明提供了一种提高缓存命中率的方法,所述方法应用于采用组相联映射关系的cache结构,所述cache结构设有若干组,每一组中含有若干路,每一组内的路包括常规路和预留路两种类型,所述预留路基于先进先出方式保存从所述常规路中替换出的缓存行,所述方法包括以下步骤:
3、在接收到查找请求时,根据所述读写请求确定目标缓存行在所述cache结构中的目标组;
4、若所述目标缓存行不在所述目标组的常规路,则所述目标缓存行在所述目标组的预留路,并判断所述常规路是否存在空位;
5、若所述常规路不存在空位,则基于预设方式选择所述常规路中任一条路作为命中路,将所述预留路中的所述目标缓存行放入所述命中路,并返回所述目标缓存行;
6、根据所述目标缓存行在所述预留路中的位置,将所述命中路对应的原缓存行放入所述预留路。
7、可选地,所述方法还包括:
8、当新的缓存行需要放入所述cache结构中的目标组时,判断所述目标组中的所述常规路是否存在空位;
9、若所述目标组中的所述常规路不存在空位,则基于所述预设方式选择所述常规路中任一条路作为替换路,并将所述新的缓存行放入所述替换路;
10、若所述预留路不存在空位,则基于所述先进先出方式,将所述替换路对应的原缓存行放入所述预留路中的最后一条路;并依次将所述预留路中后一条路对应的原缓存行存入所述后一条路的前一条预留路中,直至将所述预留路中最前一条路对应的原缓存行写回主存。
11、可选地,所述在接收到查找请求时,根据所述读写请求确定目标缓存行在所述cache结构中的目标组的步骤,包括:
12、在接收到查找请求时,对所述查找请求进行解析获得解析结果;
13、根据所述解析结果,判断目标缓存行是否在所述cache结构中;
14、若所述目标缓存行是在所述cache结构中,则确定所述目标缓存行在所述cache结构中的目标组;
15、若所述目标缓存行不在所述cache结构中,则将所述查找请求转发至下一级缓存或者主存。
16、可选地,所述若所述目标缓存行不在所述目标组的常规路,则所述目标缓存行在所述目标组的预留路,并判断所述常规路是否存在空位的步骤之后,还包括:
17、若所述常规路存在空位,则基于预设方式选择所述常规路的空位中任一条路作为命中路;
18、将所述预留路中的所述目标缓存行放入所述命中路,并返回所述目标缓存行。
19、可选地,所述根据所述目标缓存行在所述预留路中的位置,将所述命中路对应的原缓存行放入所述预留路的步骤,包括:
20、若所述目标缓存行存放在所述预留路中的最后一条路,则将所述命中路对应的原缓存行放入所述预留路中的最后一条路;
21、若所述目标缓存行未存放在所述预留路中的最后一条路,则将所述命中路对应的原缓存行放入所述预留路中的最后一条路,并将所述最后一条路对应的原缓存行放入所述最后一条路的前一条预留路。
22、可选地,所述当新的缓存行需要放入所述cache结构中的目标组时,判断所述目标组中的所述常规路是否存在空位的步骤之后,还包括:
23、若所述目标组中的所述常规路存在空位,则基于所述预设方式选择所述常规路的空位中任一条路作为替换路;
24、将所述新的缓存行放入所述替换路。
25、可选地,所述若所述目标组中的所述常规路不存在空位,则基于所述预设方式选择所述常规路中任一条路作为替换路,并将所述新的缓存行放入所述替换路的步骤之后,还包括:
26、若所述预留路存在空位,则将所述替换路对应的原缓存行放入所述预留路中的位置最前的一条空位路。
27、此外,为实现上述目的,本发明还提出一种提高缓存命中率的装置,所述装置包括采用组相联映射关系的cache结构,所述cache结构设有若干组,每一组中含有若干路,每一组内的路包括常规路和预留路两种类型,所述预留路基于先进先出方式保存从所述常规路中替换出的缓存行,所述装置包括:
28、确定模块,用于在接收到查找请求时,根据所述读写请求确定目标缓存行在所述cache结构中的目标组;
29、判断模块,用于若所述目标缓存行不在所述目标组的常规路,则所述目标缓存行在所述目标组的预留路,并判断所述常规路是否存在空位;
30、替换模块,用于若所述常规路不存在空位,则基于预设方式选择所述常规路中任一条路作为命中路,将所述预留路中的所述目标缓存行放入所述命中路,并返回所述目标缓存行;
31、存放模块,用于根据所述目标缓存行在所述预留路中的位置,将所述命中路对应的原缓存行放入所述预留路。
32、此外,为实现上述目的,本发明还提出一种提高缓存命中率的设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的提高缓存命中率的程序,所述提高缓存命中率的程序配置为实现如上文所述的提高缓存命中率的方法的步骤。
33、此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有提高缓存命中率的程序,所述提高缓存命中率的程序被处理器执行时实现如上文所述的提高缓存命中率的方法的步骤。
34、本发明应用于采用组相联映射关系的cache结构,所述cache结构设有若干组,每一组中含有若干路,每一组内的路包括常规路和预留路两种类型,所述预留路基于先进先出方式保存从所述常规路中替换出的缓存行;在接收到查找请求时,根据所述读写请求确定目标缓存行在所述cache结构中的目标组;若所述目标缓存行不在所述目标组的常规路,则所述目标缓存行在所述目标组的预留路,并判断所述常规路是否存在空位;若所述常规路不存在空位,则基于预设方式选择所述常规路中任一条路作为命中路,将所述预留路中的所述目标缓存行放入所述命中路,并返回所述目标缓存行;根据所述目标缓存行在所述预留路中的位置,将所述命中路对应的原缓存行放入所述预留路。相比于现有技术,本发明将原有的组相联映射关系的cache结构中的路结构划分为常规路和预留路两种,预留路基于先进先出方式保存从常规路中替换出的缓存行,可以有效避免误选中在将来仍然会被多次请求的缓存行被直接踢出缓存的情况出现,提高了缓存命中率,进而有效提高了服务器芯片性能。