高速缓存cache地址映射方法以及相关设备技术

技术编号:21298536 阅读:21 留言:0更新日期:2019-06-12 07:40
本申请公开了高速缓存cache地址映射方法以及相关设备,该方法包括:获取二进制文件,二进制文件包括第一热点代码段;获取第二热点代码段的对齐信息;第二热点代码段为已加载到所述cache的热点代码段;对齐信息包括第二热点代码段加载到所述cache后,第二热点代码段所占用的最后一个cache组的组号;根据对齐信息,对第一热点代码段进行偏移操作,使得第一热点代码段映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。实施本发明专利技术实施例,能够在不增加物理硬件开销的前提下解决N路组相联结构中cache冲突失效问题,提高cache命中率。

Cache address mapping method and related devices

This application discloses a cache address mapping method and related devices, which includes: acquiring binary files, binary files including the first hot code segment; acquiring alignment information of the second hot code segment; the second hot code segment is the hot code segment loaded into the cache; alignment information includes the second hot code segment loaded into the cache, and the second hot spot after the second hot code segment is loaded into the cache. The group number of the last cache group occupied by the point code segment; according to alignment information, the first hotspot code segment is offset so that the first hotspot code segment maps to the group number continuous cache group in the cache, and the group number continuous cache group is adjacent to the last cache group. The embodiment of the present invention can solve the problem of cache collision failure in the N-way group interconnected structure without increasing the physical hardware overhead and improve the cache hit rate.

【技术实现步骤摘要】
高速缓存cache地址映射方法以及相关设备
本申请涉及高速缓存
,尤其涉及高速缓存cache地址映射方法以及相关设备。
技术介绍
高速缓存(cache)是用于计算机处理器(CentralProcessingUnit,CPU)和主存储器(mainmemory)之间高速数据交换的存储器,容量比较小但读写速度比主存储器高得多,接近于CPU的处理速度。Cache是按照缓存行(cacheline)形式组织的,Cache的功能是用来存放那些近期需要在CPU运行的指令或数据。当CPU要访问主存储器(简称主存)的时候,如果所需的数据或者指令位于cacheline中,称之为缓存命中(cachehit),这种情况下,CPU直接获取所需的数据或者指令,而不需要访问主存储器,从而提高了访问速度;如果所需的数据或者指令没有位于cacheline中,称之缓存失效(cachemiss),这种情况下,CPU需要再去从外部的主存储器加载数据或指令到cache中来,且如果此时cacheline已被占据,还要对cacheline中的数据或指令进行替换,这会导致明显的性能下降。通常高速缓存失效的原因通常有三种:强制性失效(compulsorymiss),容量实效(capacitymiss)和冲突失效(conflictmiss)。其中,冲突失效是由于多个地址映射到相同的cache单元中而引起的访问冲突。目前主流的cache硬件架构都采用N路组相联(N-waySetAssociative)结构,N路组相联cache被分为若干个缓存组(cacheset),每个缓存组包含N个cacheline,也称为N路。N个主存储器中的数据块地址可以映射到cache的同一个缓存组,并且在该缓存组中可以映射到任意一路(way)。N路组相联(N-waySetAssociative)结构可以在一定程度上缓解冲突失效引起的cachemiss问题。然而,如果CPU中并发运行的程序较多、负载较大,那么仍然会存在缓存路数不够导致访问冲突的现象,受限于处理器物理硬件的延时、功耗和成本等因素,cache的容量和路数很难有大幅提升,所以目前主流的cache硬件架构仍然存在多个数据块同时争抢同一组cacheline的cache访问冲突的问题,影响整个计算机系统的性能。
技术实现思路
为了解决现有技术的缺陷,本专利技术实施例提供了高速缓存cache地址映射方法以及相关设备,能够在不增加物理硬件开销的前提下解决N路组相联结构中cache冲突失效问题,提高cache命中率。第一方面,本专利技术实施例提供了一种cache地址映射方法,所述cache包括多个cache组,所述方法包括:获取二进制文件,所述二进制文件包括第一热点代码段;其中,所述第一热点代码段包括一个热点函数,或者,所述第一热点代码段包括多个归并的热点函数;获取第二热点代码段的对齐信息;其中,所述第二热点代码段为已加载到所述cache的热点代码段;所述对齐信息包括所述第二热点代码段加载到所述cache后,所述第二热点代码段所占用的最后一个cache组的组号;根据所述对齐信息,对所述第一热点代码段进行偏移操作,使得所述第一热点代码段映射到所述cache中地址连续的cache组,并且所述地址连续的cache组与所述最后一个cache组相邻。其中,二进制文件通常包括数据段(datasegment)和代码段(codesegment)等,codesegment具有代码部分(codesetion),codesetion例如为某些具体的函数代码。在很多应用场景中,一组程序或共享库必须要运行在同一个处理核上争抢同一个cache组,我们把程序或共享库的二进制文件中经常性地运行在CPU中的函数代码称为热点函数,这些热点函数或共享库在程序运行中占用CPU时间较长、执行次数较多,会被经常访问,所以需要经常性地缓存在cache中。本专利技术实施例中,为了实现减少cache冲突,可首先将这些需要经常性地缓存在cache中的热点函数识别出来,作为一个特殊的段,我们将这个特殊的段称为热点代码段(hotsetion),相应的,二进制文件中除热点代码段外的段可称为非热点代码段。如果程序源码中只有一个热点函数,程序源码编译为二进制文件后该热点函数就是二进制文件的热点代码段;如果程序源码中有多个热点函数,那么程序源码编译时需要将所述多个热点函数归并为热点代码段。这些热点函数均具有相同的标识,该标识用于实现将所述多个热点函数归并为热点代码段。将多个热点函数归并为热点代码段是对热点函数的代码地址进行重定位操作,经过重定位操作,使得该多个热点函数在该二进制文件内地址连续。其中,本专利技术实施例中所述相邻是指两个cache组的组号互相紧接,最后一个cache组相邻的cache组即为最后一个cache组的下一个cache组。例如,一个cache组组号为128,那么其相邻的cache组(下一个cache组)为组号129的cache组。具体的,本专利技术实施例提出了一种加载器,该加载器具有全局变量性质的对齐信息,所述对齐信息记录了前一个被加载的热点代码段所占用的最后一个cache组的组号。操作系统当前需要运行程序或共享库时,通过该加载器,就可以获得前一个已加载的热点代码段的对齐信息。本专利技术实施例中,通过偏移操作的手段,将当前需要加载的热点代码段映射到前一个已加载的热点代码段所占据的最后一个cache组的下一个cache组,使得不同二进制文件的热点代码段对应的的缓存行索引(cachelineindex)连续。经过偏移操作后,热点代码段之间的间隙将不超过一个cache组。这样,可以更充分地利用Cache空间,优化一组若干相关联的程序,同时也为其它程序腾出更多可用空间,从而能够最大程度地避免cache冲突失效的出现。基于第一方面,在可能的实施例中,所述根据所述对齐信息,对所述第一热点代码段进行偏移操作,包括:根据所述对齐信息,对所述第一热点代码段的存储地址进行偏移操作,使得所述第一热点代码段的存储地址映射到所述cache中地址连续的cache组,并且所述地址连续的cache组与所述最后一个cache组相邻;其中,所述存储地址包括虚拟地址或物理地址。基于第一方面,在可能的实施例中,所述cache类型为虚拟索引物理标签VIPT架构;所述cache的映射方式包括将所述虚拟地址映射至所述cache的cache组;根据所述对齐信息,对所述第一热点代码段进行偏移操作包括:根据所述对齐信息,对所述第一热点代码段的虚拟地址进行偏移操作,使得所述第一热点代码段的虚拟地址映射到连续的cache组,并且所述连续的cache组紧跟所述最后一个cache组。基于第一方面,在可能的实施例中,根据所述对齐信息,对所述第一热点代码段的虚拟地址进行偏移操作,包括:获取所述第一热点代码段的虚拟地址;根据所述对齐信息确定所述最后一个cache组相邻的cache组;根据所述相邻的cache组和所述第一热点代码段的虚拟地址得到所述偏移操作的偏移量;根据所述偏移操作的偏移量对所述第一热点代码段的虚拟地址进行偏移操作。在可能实施例中,可以根据所述对齐信息,对当前需要加载的二进制文件的虚拟地址进行偏移操作,也就是说,无论是热点代码段的虚拟本文档来自技高网
...

【技术保护点】
1.一种高速缓存cache地址映射方法,其特征在于,所述cache包括多个cache组,所述方法包括:获取二进制文件,所述二进制文件包括第一热点代码段;其中,所述第一热点代码段包括一个热点函数,或者,所述第一热点代码段包括多个归并的热点函数;获取第二热点代码段的对齐信息;其中,所述第二热点代码段为已加载到所述cache的热点代码段;所述对齐信息包括所述第二热点代码段加载到所述cache后,所述第二热点代码段所占用的最后一个cache组的组号;根据所述对齐信息,对所述第一热点代码段进行偏移操作,使得所述第一热点代码段映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。

【技术特征摘要】
1.一种高速缓存cache地址映射方法,其特征在于,所述cache包括多个cache组,所述方法包括:获取二进制文件,所述二进制文件包括第一热点代码段;其中,所述第一热点代码段包括一个热点函数,或者,所述第一热点代码段包括多个归并的热点函数;获取第二热点代码段的对齐信息;其中,所述第二热点代码段为已加载到所述cache的热点代码段;所述对齐信息包括所述第二热点代码段加载到所述cache后,所述第二热点代码段所占用的最后一个cache组的组号;根据所述对齐信息,对所述第一热点代码段进行偏移操作,使得所述第一热点代码段映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。2.根据权利要求1所述的方法,其特征在于,所述根据所述对齐信息,对所述第一热点代码段进行偏移操作,包括:根据所述对齐信息,对所述第一热点代码段的存储地址进行偏移操作,使得所述第一热点代码段的所述存储地址映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻;其中,所述存储地址包括虚拟地址或物理地址。3.根据权利要求2所述的方法,其特征在于,所述cache的映射方式包括将所述虚拟地址映射至所述cache的cache组;所述根据所述对齐信息,对所述第一热点代码段进行偏移操作包括:根据所述对齐信息,对所述第一热点代码段的虚拟地址进行偏移操作,使得所述第一热点代码段的虚拟地址映射到组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。4.根据权利要求3所述的方法,其特征在于,根据所述对齐信息,对所述第一热点代码段的虚拟地址进行偏移操作,包括:获取所述第一热点代码段的虚拟地址;根据所述对齐信息确定所述最后一个cache组相邻的cache组;根据所述相邻的cache组和所述第一热点代码段的虚拟地址得到所述偏移操作的偏移量;根据所述偏移操作的偏移量对所述第一热点代码段的虚拟地址进行偏移操作。5.根据权利要求1至4任一项所述的方法,其特征在于,所述第一热点代码段包括多个归并的热点函数;所述多个归并的热点函数在所述第一热点代码段中地址连续,每个热点函数均具有相同的标识,所述标识用于实现将所述多个热点函数归并为所述第一热点代码段。6.根据权利要求2所述的方法,其特征在于,所述cache的映射方式包括将所述物理地址映射至所述cache的cache组;所述根据所述对齐信息,对所述第一热点代码段进行偏移操作包括:根据所述对齐信息,对所述第一热点代码段的虚拟地址的第一页内偏移pageoffset进行偏移操作以及对所述第一热点代码段所在的物理页进行物理页分配操作,以得到所分配的物理页和所述第一热点代码段的物理地址;将存在于所述物理页中的所述第一热点代码段的所述物理地址映射到组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。7.根据权利要求6所述的方法,其特征在于,根据所述对齐信息,对所述第一热点代码段的虚拟地址的第一页内偏移pageoffset进行偏移操作,以及对所述第一热点代码段所在的物理页进行物理页分配操作,得到所分配的物理页和所述第一热点代码段的物理地址,包括:根据所述最后一个cache组相邻的cache组和所述第一热点代码段的虚拟地址的第一pageoffset,得到所述偏移操作的偏移量;根据所述偏移量对所述第一热点代码段的虚拟地址的第一pageoffset进行偏移操作,得到所述第一热点代码段的虚拟地址的第二pageoffset;根据所述最后一个cache组相邻的cache组,获得所述第一热点代码段所涉及页面的着色位colorindex;根据所述colorindex获得所分配的物理页;根据所述所分配的物理页对应的物理页号PFN和所述第二pageoffset,得到所述第一热点代码段的物理地址。8.根据权利要求7所述的方法,其特征在于,根据所述colorindex获得所分配的物理页,包括:根据所述colorindex,从物理页分配器随机获取特定数量的连续物理页;从所述特定数量的连续物理页中选取符合所述colorindex的物理页,作为所述所分配的物理页。9.根据权利要求8所述的方法,其特征在于,所述特定数量等于所述所分配的物理页的页数与页面颜色数量之和减1;其中,所述页面颜色数量由所述colorindex的位数确定。10.根据权利要求1至9任一项所述的方法,其特征在于,所述方法还包括:根据第二热点代码段的虚拟地址范围确定所述第二热点代码段占用的cache组的个数;根据所述第二热点代码段占用的cache组的个数,和第三热点代码段加载到所述cache后所占用的最后一个cache组,确定所述第二热点代码段加载到所述cache后所占用的最后一个cache组,将该最后一个cache组的组号更新到所述对齐信息;其中,所述第三热点代码段为在加载所述第二热点代码段之前已加载到所述cache的热点代码段。11.一种设备,其特征在于,包括:获取模块,用于获取二进制文件,所述二进制文件包括第一热点代码段;其中,所述第一热点代码段包括一个热点函数,或者,所述第一热点代码段包括多个归并的热点函数;加载器模块,用于获取第二热点代码段的对齐信息;其中,所述第二热点代码段为已加载到所述cache的热点代码段;所述对齐信息包括所述第二热点代码段加载到所述cache后,所述第二热点代码段所占用的最后一个cache组的组号;所述cache包括多个cache组;偏移模块,用于根据所述对齐信息,对所述第一热点代码段进行偏移操作,使得所述第一热点代码段映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻。12.根据权利要求11所述的设备,其特征在于,所述偏移模块用于根据所述对齐信息,对所述第一热点代码段进行偏移操作,包括:所述偏移模块用于根据所述对齐信息,对所述第一热点代码段的存储地址进行偏移操作,使得所述第一热点代码段的所述存储地址映射到所述cache中组号连续的cache组,并且所述组号连续的cache组与所述最后一个cache组相邻;其中,所述存储地址包括虚拟地址或物理地址。13.根据权利要求12所述的设备,其特征在于,所述cache的映射方式包括将所述虚拟地址映射至所述cache的cache组;所述偏移模块用于根据所述对齐信息,对所述第一热点代码段进行偏移操作,...

【专利技术属性】
技术研发人员:吕研冬曾建江
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1