CN113973502B - 一种高速缓存冲撞处理方法及装置 - Google Patents

一种高速缓存冲撞处理方法及装置 Download PDF

Info

Publication number
CN113973502B
CN113973502B CN202080001161.6A CN202080001161A CN113973502B CN 113973502 B CN113973502 B CN 113973502B CN 202080001161 A CN202080001161 A CN 202080001161A CN 113973502 B CN113973502 B CN 113973502B
Authority
CN
China
Prior art keywords
cache
virtual address
cache line
memory
collision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202080001161.6A
Other languages
English (en)
Other versions
CN113973502A (zh
Inventor
李鹏
张幂
林伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN113973502A publication Critical patent/CN113973502A/zh
Application granted granted Critical
Publication of CN113973502B publication Critical patent/CN113973502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例公开了一种高速缓存冲撞处理方法及装置,涉及芯片技术领域。该方法可以包括:获取高速缓存的冲撞信息;根据冲撞信息在多个第一缓存行中确定满足预设条件的第二缓存行;该第二缓存行为发生高速缓存冲撞频率较高的缓存行;将第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至高速缓存中的第三缓存行在内存中对应的第二虚拟地址;该第三缓存行为发生高速缓存冲撞频率较低的缓存行。这样,可以减少高速缓存冲撞引起的高速缓存缺失,优化CPU的前端性能,从而获得实际运行场景下CPU的良好性能和功耗收益。

Description

一种高速缓存冲撞处理方法及装置
技术领域
本申请涉及芯片技术领域,尤其涉及一种高速缓存冲撞处理方法及装置。
背景技术
移动设备领域特别是智能手机近年来飞速发展,智能手机上运行的应用程序日益多样。中央处理器(central processing unit,CPU)作为智能手机的核心处理器,用户对其性能的要求自然也水涨船高。一般来说,衡量CPU的性能有两种场景。一种是通过测试软件跑分,另一种是实际运行场景。
CPU的性能通常分为前端性能和后端性能。其中,层1指令高速缓存(layer 1instruction Cache,L1 ICache)缺失是影响CPU前端性能的一个因素。在通过测试软件跑分场景,CPU前端性能受限几率是5%左右,L1 ICache缺失几率为0.18%左右;L1 ICache缺失在CPU前端性能受限的因素中占比较低。在实际运行场景,CPU前端性能受限几率在5%左右,L1 ICache缺失几率为5%左右;L1 ICache缺失是CPU前端性能受限的重要因素。由于当前业界主要通过测试软件跑分来衡量CPU性能;而在测试软件跑分场景,L1 ICache缺失对CPU性能的影响不大;故而业界研究重点在优化CPU后端性能,对L1 ICache缺失并未重视;因此,实际运行场景下CPU的前端性能受限问题并未得到很好的解决。
发明内容
本申请实施例提供一种高速缓存冲撞处理方法及装置,通过减少高速缓存冲撞引起的高速缓存缺失来优化CPU的前端性能。
为达到上述目的,本申请的实施例采用如下技术方案。
第一方面,本申请提供了一种高速缓存冲撞处理方法及装置。
在一种可能的设计中,该方法可以包括:获取高速缓存的冲撞信息;该冲撞信息包括高速缓存中发生冲撞的多个第一缓存行以及多个第一缓存行中每个第一缓存行发生冲撞的次数;根据冲撞信息在多个第一缓存行中确定满足预设条件的第二缓存行;将第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至高速缓存中的第三缓存行在内存中对应的第二虚拟地址。其中,第三缓存行与第二缓存行不同,第二虚拟地址与第一虚拟地址不同;预设条件包括如下至少一项:发生冲撞的次数大于或等于第一阈值;或者,发生冲撞的次数最多的前N名,N>0。
在该方法中,将发生高速缓存冲撞频率较高的存储对象重定位,降低了高速缓存冲撞的发生几率,减少了高速缓存冲撞缺失,可以有效的提高CPU的前端性能。
在一种可能的设计中,将第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至高速缓存中的第三缓存行在内存中对应的第二虚拟地址包括:获取第一虚拟地址在第一可执行文件中对应的第一位置;获取第一位置对应的第一代码段;生成第二可执行文件,以将第一代码段链接至第二虚拟地址在第二可执行文件中对应的第二位置。
在该方法中,通过在编译过程重新链接代码段至目标位置的方法,实现对发生高速缓存冲撞频率较高的存储对象重定位。
在一种可能的设计中,第一代码段为一个函数。也就是说,在重新链接过程中,函数为一个整体,重定位的粒度为一个函数。
在一种可能的设计中,第三缓存行满足如下至少一项条件:发生冲撞的次数小于第二阈值,第二阈值小于或者等于第一阈值;发生冲撞的次数最少的M名,M>0。
在该实现方式中,第三缓存行为根据冲撞信息确定的,发生高速缓存冲撞频率较低的缓存行。
在一种可能的设计中,获取高速缓存的冲撞信息包括:获取第一时间段内处理器访问的一个或多个虚拟地址的流信息;从流信息中获取该一个或多个虚拟地址中每个虚拟地址对应的高速缓存中的第四缓存行;根据第四缓存行确定冲撞信息。
在一种可能的设计中,根据第四缓存行确定冲撞信息包括:确定第四缓存行在第一时间段内被处理器访问的次数;根据第四缓存行在第一时间段内被处理器访问的次数确定冲撞信息。
在一种可能的设计中,高速缓存包括如下至少一项:层1指令高速缓存,层1数据高速缓存,层2高速缓存,或层3高速缓存。
相应的,本申请还提供了一种高速缓存冲撞处理装置,该装置可以实现第一方面所述的高速缓存冲撞处理方法。该装置可以通过软件、硬件、或者通过硬件执行相应的软件实现上述方法。
在一种可能的设计中,该装置可以包括:信息获取模块、信息处理模块和重定位模块。其中,信息获取模块用于获取高速缓存的冲撞信息;该冲撞信息包括高速缓存中发生冲撞的多个第一缓存行以及多个第一缓存行中每个第一缓存行发生冲撞的次数;信息处理模块用于根据冲撞信息在多个第一缓存行中确定满足预设条件的第二缓存行;其中,预设条件包括如下至少一项:发生冲撞的次数大于或等于第一阈值;或者,发生冲撞的次数最多的前N名,N>0;重定位模块,用于将第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至高速缓存中的第三缓存行在内存中对应的第二虚拟地址;其中,第三缓存行与第二缓存行不同,第二虚拟地址与第一虚拟地址不同。
在一种可能的设计中,重定位模块将第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至高速缓存中的第三缓存行在内存中对应的第二虚拟地址具体包括:获取第一虚拟地址在第一可执行文件中对应的第一位置;获取第一位置对应的第一代码段;生成第二可执行文件,以将第一代码段链接至第二虚拟地址在第二可执行文件中对应的第二位置。
在一种可能的设计中,第一代码段为一个函数。
在一种可能的设计中,第三缓存行满足如下至少一项条件:发生冲撞的次数小于第二阈值,第二阈值小于或者等于第一阈值;发生冲撞的次数最少的M名,M>0。
在一种可能的设计中,信息获取模块获取高速缓存的冲撞信息具体包括:获取第一时间段内处理器访问的一个或多个虚拟地址的流信息;从流信息中获取一个或多个虚拟地址中每个虚拟地址对应的高速缓存中的第四缓存行;根据第四缓存行确定冲撞信息。
在一种可能的设计中,信息获取模块根据第四缓存行确定冲撞信息具体包括:确定第四缓存行在第一时间段内被处理器访问的次数;根据第四缓存行在第一时间段内被处理器访问的次数确定冲撞信息。
在一种可能的设计中,高速缓存包括如下至少一项:层1指令高速缓存,层1数据高速缓存,层2高速缓存,或层3高速缓存。
第二方面,本申请实施例提供一种设备,该设备可以实现第一方面所述的高速缓存冲撞处理方法,比如,该设备可以是终端设备。在一种可能的设计中,该设备可以包括处理器和高速缓存。该处理器被配置为支持该设备执行上述第一方面方法中相应的功能。高速缓存用于与处理器耦合,其保存该设备必要的程序指令和数据。
第三方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在设备上运行时,使得设备执行如上述任一方面及其可能的设计方式所述的高速缓存冲撞处理方法。
第四方面,本申请实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如上述任一方面及其可能的设计方式所述的高速缓存冲撞处理方法。
第五方面,本申请实施例还提供一种芯片系统,该芯片系统中包括处理器,还可以包括存储器,所述存储器包括高速缓存,用于实现上述任一方面及其可能的设计方式所述的高速缓存冲撞处理方法。
上述提供的任一种装置或设备或计算机可读存储介质或计算机程序产品或芯片系统均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文提供的对应的方法中对应方案的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的技术方案所适用的一种设备的示意图;
图2为本申请实施例提供的技术方案所适用的一种CPU存储系统;
图3为一种高速缓存和内存问组相连方式的示意图;
图4为本申请实施例提供的一种高速缓存冲撞处理方法的示意图一;
图5为本申请实施例提供的一种高速缓存冲撞处理方法的示意图二;
图6为本申请实施例提供的一种高速缓存冲撞处理方法的应用场景示意图一;
图7为本申请实施例提供的一种高速缓存冲撞处理方法的应用场景示意图二;
图8A为本申请实施例提供的一种高速缓存冲撞处理方法的应用场景示意图三;
图8B为本申请实施例提供的一种高速缓存冲撞处理方法的应用场景示意图四;
图8C为本申请实施例提供的一种高速缓存冲撞处理方法的应用场景示意图五;
图9为本申请实施例提供的一种高速缓存冲撞处理方法的示意图三;
图10为本申请实施例提供的一种高速缓存冲撞处理方法的示意图四;
图11为本申请实施例提供的一种装置的结构示意图。
具体实施方式
本文中的术语“多个”是指两个或两个以上。本文中的术语“第一”和“第二”是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一缓存行和第二缓存行仅仅是为了区分不同的缓存行,并不对其先后顺序进行限定。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
下面结合附图对本申请实施例提供的高速缓存冲撞处理方法及装置进行详细描述。
本申请提供的技术方案可以应用于包括处理器、高速缓存和内存的各种硬件设备,例如手机、移动终端、个人计算机(personal computer,PC)、服务器、笔记本电脑、平板电脑、车载电脑、智能摄像头、智能手表、嵌入式设备等。本申请实施例对该硬件设备的具体形式不做特殊限制。
示例性的,图1为本申请实施例提供的一种设备100的结构示意图。设备100包括至少一个处理器110,通信线路120,存储器130,高速缓存140以及至少一个通信接口150。
可以理解的是,本发明实施例示意的结构并不构成对设备100的具体限定。在本申请另一些实施例中,设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
设备100可以是一个通用设备或者是一个专用设备。在具体实现中,设备100可以是车载设备、台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图1中类似结构的设备。本申请实施例不限定设备100的类型。应注意,图1所示的设备100的结构仅用于举例,并非用于限制本申请的技术方案。本领域的技术人员应当明白,在具体实现过程中,设备100还可以是其他的形式,也可以包括其他部件。
其中,处理器110可以包括通用CPU,微处理器,协处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。在具体实现中,作为一种实施例,处理器110可以包括一个或多个CPU,例如图1中的CPU0和CPU1。在具体实现中,作为一种实施例,设备100可以包括多个处理器,例如图1中的处理器110和处理器111。这些处理器中的每一个可以是一个单核(single-CPU)处理器(即CPU包括一个CPU核),也可以是一个多核(multi-CPU)处理器(即CPU包括多个CPU核)。需要说明的是,本申请实施例以CPU作为处理器为例进行说明,在实际应用中,本申请实施例提供的高速缓存冲撞处理方法也适用于其他类型的处理器。
通信线路120可包括一通路,在上述组件之间传送信息。
通信接口150,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
在具体实现中,作为一种实施例,设备100还可以包括输出设备160和输入设备170。输出设备160和处理器110通信,可以以多种方式来显示信息。例如,输出设备160可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备170和处理器110通信,可以以多种方式接收用户的输入。例如,输入设备170可以是鼠标、键盘、触摸屏设备或传感设备等。
存储器130可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器130可以是独立于处理器110存在,通过通信线路120与处理器110相连接。在一种示例中,存储器130可以包括内存(运行和加载数据)和本地磁盘(永久存储);其中,内存可以是动态随机存取存储器(dynamic random access memory,DRAM)。
其中,存储器130可以用于存储指令和数据,包括用于执行本申请方案的指令。该指令由处理器110来控制执行。处理器110用于执行存储器130中存储的指令,从而实现本申请下述实施例提供的高速缓存冲撞处理方法。可选的,本申请实施例中的指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
高速缓存140是位于处理器110和存储器130之间的高速存储器;其容量比存储器130小,但是与处理器110的交换速度快。高速缓存140可以用于保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从高速缓存140中直接调用。高速缓存140保存的指令或数据是存储器130中的一小部分,但这一小部分指令或数据是短时间内处理器110即将访问的;当处理器110调用指令或数据时,可避开存储器130直接从高速缓存140中调用,从而加快读取速度。在一种示例中,高速缓存140可以与处理器110集成在同一个芯片中。
请继续参考图2,其示出了一种CPU存储系统。如图2,高速缓存位于CPU和内存之间,可以分为多级。比如,高速缓存可以分为L1、L2和L3三级。L1高速缓存保存取自L2高速缓存的部分存储对象,L2高速缓存保存取自L3高速缓存的部分存储对象,L3高速缓存保存取自内存的部分存储对象。其中,L1高速缓存分为指令高速缓存和数据高速缓存;指令高速缓存用于保存应用程序代码的指令部分,数据高速缓存用于保存应用程序代码的数据部分。CPU要访问存储对象时,先在L1高速缓存中寻找;如果该存储对象在L1高速缓存中没有缓存,则在L2高速缓存中寻找;如果该存储对象在L2高速缓存中没有缓存,则继续在L3高速缓存中寻找;如果该存储对象在L3高速缓存中也没有缓存,则访问内存,寻找该存储对象。
由于高速缓存的存储空间比内存存储空间小的多,高速缓存只能缓存内存中的一小部分存储对象。CPU要访问的存储对象在高速缓存中不一定有缓存。CPU要访问的存储对象在高速缓存中有缓存,称为高速缓存命中;CPU要访问的存储对象在高速缓存中没有缓存,称为高速缓存缺失。命中的几率越大,就越能避免从内存中重复存取,减少CPU的等待时间,提升CPU的性能,也提高了系统效率。本申请实施例提供的高速缓存冲撞处理方法,可以减少高速缓存缺失的发生,从而优化CPU的性能。
内存与高速缓存的地址映射方式包括直接相连方式、组相连方式等。本申请实施例以组连接方式为例进行说明,可以理解的,本申请实施例提供的高速缓存冲撞处理方法,同样适用于直接连接方式。
图3为一种组相连方式的示例。请参考图3,高速缓存包括P个组,每个组包括Q个缓存行(图3中以Q=4为例);其中,P>1,Q>1;缓存行为高速缓存的最小缓存单位。示例性的,图3中高速缓存存储空间为64KB,4路组相连(即每组有4个缓存行,Q=4),每个缓存行的存储空间为64B,64KB/4/64B=256,即该高速缓存包括256个组(P=256)。这样,内存中每64B存储对象可以缓存至一个缓存行(图3中每64B作为一个内存单元),64KB的高速缓存中可以存储1024(256x4)个内存单元的存储对象。
在组相连方式中,一个内存单元的存储对象可以缓存至高速缓存中对应的一个组的任意一个缓存行;也就是说,一个内存单元对应的高速缓存组是固定的,其对应的组内的缓存行是不固定的。示例性的,图3中内存单元1、内存单元(P+1)、内存单元(2P+1)、内存单元(3P+1)和内存单元(4P+1)都对应高速缓存的组1,内存单元1、内存单元(P+1)、内存单元(2P+1)、内存单元(3P+1)和内存单元(4P+1)的存储对象都可以缓存至高速缓存的组1;而内存单元1、内存单元(P+1)、内存单元(2P+1)、内存单元(3P+1)和内存单元(4P+1)中的存储对象分别缓存至组1中的哪个缓存行是不固定的。
由于内存的存储空间远远大于高速缓存的存储空间,共享一个高速缓存组的内存单元个数大于一个高速缓存组中缓存行的个数。示例性的,图3中,至少5个内存单元共享一个高速缓存组,而一个高速缓存组仅包括4个缓存行。CPU要访问的存储对象可能并未在高速缓存中缓存。比如,高速缓存组1中缓存的是内存单元1、内存单元(P+1)、内存单元(2P+1)和内存单元(3P+1)中的存储对象;而CPU要访问的是内存单元(4P+1)的存储对象。
如果CPU要访问的存储对象未在高速缓存中缓存,就会使用CPU要访问的存储对象(比如,内存单元(4P+1)的存储对象)替换一个原来缓存在该组中的存储对象(比如,内存单元1的存储对象)。其中,可以采用常规技术中的任意一种替换策略,确定替换高速缓存组中的哪一个缓存行。比如,替换策略可以包括:最不经常使用(least frequently used,LFU)算法,近期最少使用(least recently used,LRU)算法,随机替换算法。
不同的内存单元在对应的高速缓存组内发生替换,即发生了高速缓存冲撞;高速缓存冲撞产生的缺失,称为高速缓存冲撞缺失。在实际运行场景(比如游戏场景),应用程序自身热点较为分散,并且指令的虚拟地址跳转范围较大;从而会在特定的高速缓存组出现高概率的高速缓存冲撞,产生较多的高速缓存冲撞缺失。
本申请实施例提供一种高速缓存冲撞处理方法,可以有效的降低高速缓存冲撞,减少高速缓存冲撞缺失,优化CPU性能。执行该高速缓存冲撞处理方法的可以为上述包括CPU、高速缓存和内存的硬件设备或者装置;该装置可以是芯片或者芯片系统;也可以是一种计算机可读存储介质;也可以是一种计算机程序产品;本申请实施例对此不进行限定。
需要说明的是,本申请实施例以L1指令高速缓存为例进行说明,可以理解的,本申请实施例提供的高速缓存冲撞处理方法,同样适用于L1数据高速缓存、L2高速缓存或L3高速缓存。
本申请实施例提供一种高速缓存冲撞处理方法,可以应用于图1所示的设备。如图4所示,该方法可以包括:
S401、获取高速缓存的冲撞信息。
冲撞信息包括高速缓存中发生冲撞的多个第一缓存行以及多个第一缓存行中每个第一缓存行发生冲撞的次数。
在一种实现方式中,如图5所示,获取高速缓存的冲撞信息的方法可以包括:
S4011、获取第一时间段内CPU访问的一个或多个虚拟地址的流信息。
获取第一时间段内的流信息。其中,第一时间段可以是设定的时间段,比如5分钟。流信息即CPU访问内存的一个或多个虚拟地址的流信息。示例性的,设备上运行一个实时游戏,在实时游戏运行期间,抓取5分钟内的虚拟地址流信息,通常虚拟地址是64位的。示例性的,流信息包括如图6的(a)所示的信息。
S4012、从流信息中获取每个虚拟地址对应的第四缓存行。
根据内存的虚拟地址与高速缓存的缓存行之间的映射规则,可以通过虚拟地址获取到其对应的缓存行。根据流信息中每个虚拟地址可以获取到对应的第四缓存行。
在一种实现方式中,SIndex表示高速缓存组标识,STag为缓存行在组内的标识。CPU发出一个虚拟地址请求后,虚拟地址的低位地址和SIndex匹配,虚拟地址的高位地址和内存管理单元中的页表匹配以获取到物理地址,然后使用物理地址作为STag(或者STag的一部分)和STag匹配;这样,就通过CPU访问的虚拟地址获取到其对应的缓存行。
示例性的,根据图6的(a)中的虚拟地址可以获取到图6的(b)所示的多个缓存行的SIndex和STag。比如,图6的(a)中流信息的第一条虚拟地址为6057828a5b7e02231e0a290,根据该虚拟地址获取到对应的第四缓存行的SIndex为223,STag为1e0a290(图6的(b)中第一条)。
S4013、根据第四缓存行确定冲撞信息。
统计多个第四缓存行中每个第四缓存行在第一时间段内被CPU访问的次数。根据每个第四缓存行在第一时间段内被CPU访问的次数,确定高速缓存中发生冲撞的多个第一缓存行以及多个第一缓存行中每个第一缓存行发生冲撞的次数。在一种实现方式中,如果确定一个高速缓存组中STag不同的缓存行被CPU访问的次数大于该高速缓存组中缓存行的个数,则确定该高速缓存组内发生了高速缓存冲撞。结合替换策略可以确定高速缓存组内发生高速缓存冲撞的缓存行。这样,就可以确定发生冲撞的多个第一缓存行以及多个第一缓存行中每个第一缓存行发生冲撞的次数。示例性的,第一时间段内的冲撞信息统计结果如图7的(a)所示。图7的(a)中横坐标为SIndex,纵坐标为高速缓存组发生冲撞的次数。
S402、根据冲撞信息在多个第一缓存行中确定满足预设条件的第二缓存行。
根据冲撞信息获取发生高速缓存冲撞频率较高的缓存行。在一种实现方式中,根据冲撞信息在多个第一缓存行中确定满足预设条件的第二缓存行。其中,预设条件包括:发生冲撞的次数大于或等于第一阈值;或者,发生冲撞的次数最多的前N名,其中,N>0。
示例性的,将第一缓存行以组为单位,按照高速缓存组发生冲撞的次数从多到少的顺序进行排序,统计排名靠前的多个组发生冲撞的信息。比如,发生冲撞的次数最多的5个高速缓存组的统计信息如图7的(b)所示。根据图7的(b)所示的统计信息确定发生冲撞次数最多的N(比如N=5)个第二缓存行为(SIndex-237,STag-0x1df2151),(SIndex-237,STag-0x1e0a2a6),(SIndex-237,STag-0x1e0a2b2),(S-Index237,STag-0x1e0a296),(SIndex-237,STag-0x1df214b)。
S403、将每个第二缓存行在内存中对应的第一虚拟地址中的存储对象,从第一虚拟地址重定位至第二虚拟地址。
由于缓存行和内存中的虚拟地址存在映射关系;可以根据缓存行和内存中的虚拟地址的映射关系,获取第二缓存行对应的第一虚拟地址。将第一虚拟地址中的存储对象,从该第一虚拟地址重定位至第二虚拟地址(在第一时间段内,该第二虚拟地址对应的第三缓存行发生冲撞的次数较少),则可以降低高速缓存冲撞发生几率,减少高速缓存冲撞缺失。其中,第二虚拟地址与第一虚拟地址不同,第三缓存行与第二缓存行不同。
在一种实现方式中,第三缓存行可以是:发生冲撞的次数小于第二阈值的缓存行,其中,第二阈值小于或者等于第一阈值;或者,发生冲撞的次数最少的M名缓存行,M>0;或者,留空的缓存行;或者,附加缓存行。
示例性的,请参考图8A,以第二缓存行为(SIndex-237,STag-0x1df2151)为例。缓存行h的SIndex为237,STag为0x1df2151,缓存行h在内存中对应的内存单元为内存单元i,内存单元i的虚拟地址为第一虚拟地址。内存单元i中的存储对象为可执行文件a.so中的8条指令,该8条指令在可执行文件中的偏移地址为3c8dd0-3c8dec,即3c8dd0-3c8dec为可执行文件中的第一位置。可执行文件a.so中的8条指令对应的代码段为函数func2()的一段代码段。
将源文件a.c重新编译,生成新的可执行文件a.so,在新的可执行文件中,该8条指令位于新的可执行文件中的第二位置,比如4e8dd0-4e8dec。如图8B所示,在原来的可执行文件中,函数的排列顺序为func1()->func2()->func3();重新编译后,在新的可执行文件中,函数的排列顺序为func1()->func3()->...->func2()。函数func2()在可执行文件中的位置发生了变化,重定位至第二位置。该第二位置对应内存单元j,内存单元j的虚拟地址为第二虚拟地址;该第二虚拟地址对应第三缓存行(比如,SIndex-170,STag-0x3e97213)。如图8C,该第三缓存行(SIndex-170,STag-0x3e97213)为发生冲撞的次数最少的缓存行。这样,CPU要访问的存储对象从高速缓存冲撞频率较高的第二缓存行重定位至高速缓存冲撞频率较低的第三缓存行,有效的降低了发生高速缓存冲撞的几率,减少了高速缓存冲撞缺失。
在一种实现方式中,如图9所示,将第一虚拟地址中的存储对象从第一虚拟地址重定位至第二虚拟地址的方法可以包括:
S4031、获取第一虚拟地址在可执行文件中对应的第一位置。
第一虚拟地址中存储的指令流为可执行文件中的一段指令流,该段指令流对应了一段代码段。示例性的,一个缓存行的存储空间为64B,其对应的虚拟地址中存储的指令流包含8条指令,该8条指令对应一段代码段。
在一种实现方式中,可以根据保存了进程的内存映射关系的映射文件来确定指令在可执行文件中的位置。其中,该进程为获取第一时间段内的流信息时运行的进程。示例性的,映射文件包括可执行文件在该进程中的起始地址信息,代码段在该可执行文件中的起始地址信息。
根据公式:va_trace-map_base+s_base=offset,可以获取指令在可执行文件中的相对位置。其中,va_trace为虚拟地址,map_base为可执行文件在进程中的起始地址,s_base为代码段在该可执行文件中的起始地址,offset为指令在可执行文件中的相对位置。
根据指令在可执行文件中的相对位置,则可以确定第一虚拟地址中的存储对象在可执行文件中的第一位置。示例性的,图8A中offset为3c8dd0,可以确定指令流中第一条指令的位置为3c8dd0,进而确定指令流在a.so中的第一位置为3c8dd0-3c8dec。
S4032、获取第一位置对应的第一代码段。
在一种实现方式中,解析可执行文件的第一位置的存储对象,获取对应的第一代码段。示例性的,请参考图8A,可执行文件的3c8dd0-3c8dec处的指令流对应的第一代码段为函数func2()中的一段。
S4033、编译生成新的可执行文件;在编译过程中,将第一代码段链接至第二虚拟地址在新的可执行文件中对应的第二位置。
示例性的,重新编译源文件a.c,生成新的可执行文件a.so。
在一种实现方式中,如图10所示,将源文件编译生成可执行文件的过程可以包括:编译器将源文件生成目标文件的编译阶段,以及链接器将目标文件生成可执行文件的链接阶段。在编译阶段,为每个函数分配独立的段,段是链接阶段的最小处理单元。在链接阶段,将多个输入目标文件合成一个可执行二进制文件。示例性的,链接阶段可以包括:扫描所有的输入目标文件,并且获得各个输入目标文件的各个段的长度和位置,并且将输入目标文件中的符号表中所有的符号定义和符号引用收集起来,统一放到一个全局符号表中。链接器获得了所有输入目标文件的各个段长度,并且将所有输入目标文件的所有段进行合并,计算出输出文件中各个段合并后的长度和位置。然后,链接器使用上述收集到的所有信息进行符号解析,生成可执行文件。
在一种实现方式中,可以在上述编译生成新的可执行文件的过程中,将第一代码段链接至第二虚拟地址在新的可执行文件中对应的第二位置。
示例性的,请参考图8A,为了降低高速缓存冲撞发生的几率,将CPU访问几率较高的存储对象移动至第三缓存行。示例性的,第三缓存行为发生冲撞的次数最少的缓存行(比如,SIndex-170,STag-0x3e97213)。根据缓存行和内存中的虚拟地址的映射关系,确定第三缓存行对应的内存单元的地址为第二虚拟地址。
进一步的,根据公式:va_trace-map_base+s_base=offset,可以确定第二虚拟地址在新的可执行文件中对应的第二位置(比如,4e1dd0-4e1dec)。
在链接阶段,将代码段(比如,函数func2())链接至该第二位置。这样,第一代码段对应的指令流重定位至内存中的第二虚拟地址;相应的,该指令流缓存至第三缓存行。
需要说明的是,在一种实现方式中,请参考图8A,在编译过程中,以函数为粒度,将第一代码段所在函数整体重定位至新的位置。在另一种实现方式中,也可以将第一代码段重定位至新的位置。具体的实现方式不影响本申请实施例的实现效果,本申请实施例对此并不进行限制。
本申请实施例提供的高速缓存冲撞处理方法,通过在编译过程重新链接代码段至目标位置的方法,将发生高速缓存冲撞频率较高的存储对象重定位至发生高速缓存冲撞频率较低的缓存行。降低了高速缓存冲撞的发生几率,减少了高速缓存冲撞缺失,可以有效的提高CPU的前端性能。
示例性的,表1为一种实时游戏运行时,采用本申请实施例提供的高速缓存冲撞处理方法前后,系统芯片各项性能指标的数据。
表1
实时游戏 优化前 优化后 收益
L1高速缓存缺失 8.28% 3.96%
CPU前端性能受限 38.62% 28.23%
运行时间(us) 9466.09 8997.98 4.95%
平均帧率 58.48 59.02
抖动率 2.92 2.49
流畅度 8.28% 8.28%
平均功耗/帧 50.87 49.48 2.73%
整机电流(mA) 782.98 768.50 1.85%
系统芯片+内存的电流(mA) 626.38 612.38 2.24%
可以看出,采用本申请实施例提供的高速缓存冲撞处理方法后,实时游戏整体性能(比如帧率、流畅度、抖动率等)均有提升;系统功耗明显降低,系统芯片能效收益明显。
上述主要对本申请实施例提供的方案进行了介绍。可以理解的是,上述设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该可以理解,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对高速缓存冲撞处理装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以采用对应各个功能划分各个功能模块为例进行说明。
图11是本申请实施例提供的装置500的逻辑结构示意图,装置500可以是进行高速缓存冲撞处理的设备,能够实现本申请实施例提供的高速缓存冲撞处理方法。装置500可以是硬件结构、软件模块、或硬件结构加软件模块。如图11所示,装置500包括信息获取模块501、信息处理模块502和重定位模块503。其中,信息获取模块501可以用于执行图4中的S401,和/或执行本申请中描述的其他步骤。信息处理模块502可以用于执行图4中的S402,和/或执行本申请中描述的其他步骤。重定位模块503可以用于执行图4中的S403,和/或执行本申请中描述的其他步骤。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能单元的功能描述,在此不再赘述。
本领域普通技术人员可知,上述方法中的全部或部分步骤可以通过程序指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质如ROM、RAM和光盘等。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质可以包括存储器。
上述提供的任一种装置中相关内容的解释及有益效果均可参考上文提供的对应的方法实施例,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

1.一种高速缓存冲撞处理方法,其特征在于,包括:
获取高速缓存的冲撞信息;所述冲撞信息包括所述高速缓存中发生冲撞的多个第一缓存行以及所述多个第一缓存行中每个第一缓存行发生冲撞的次数;
根据所述冲撞信息在所述多个第一缓存行中确定满足预设条件的第二缓存行;
所述预设条件包括如下至少一项:发生冲撞的次数大于或等于第一阈值;或者,发生冲撞的次数最多的前N名,其中,N>0;
将所述第二缓存行在内存中对应的第一虚拟地址中的存储对象,从所述第一虚拟地址重定位至所述高速缓存中的第三缓存行在内存中对应的第二虚拟地址;所述第三缓存行与所述第二缓存行不同,所述第二虚拟地址与所述第一虚拟地址不同。
2.根据权利要求1所述的方法,其特征在于,所述将所述第二缓存行在内存中对应的第一虚拟地址中的存储对象,从所述第一虚拟地址重定位至所述高速缓存中的第三缓存行在内存中对应的第二虚拟地址包括:
获取所述第一虚拟地址在第一可执行文件中对应的第一位置;
获取所述第一位置对应的第一代码段;
生成第二可执行文件,以将所述第一代码段链接至所述第二虚拟地址在所述第二可执行文件中对应的第二位置。
3.根据权利要求2所述的方法,其特征在于,所述第一代码段为一个函数。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述第三缓存行满足如下至少一项条件:
发生冲撞的次数小于第二阈值;其中,所述第二阈值小于或者等于所述第一阈值;
发生冲撞的次数最少的M名,M>0。
5.根据权利要求1-3任意一项所述的方法,其特征在于,所述获取高速缓存的冲撞信息包括:
获取第一时间段内处理器访问的一个或多个虚拟地址的流信息;
从所述流信息中获取所述一个或多个虚拟地址中每个虚拟地址对应的所述高速缓存中的第四缓存行;
根据所述第四缓存行确定所述冲撞信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第四缓存行确定所述冲撞信息包括:
确定所述第四缓存行在所述第一时间段内被处理器访问的次数;
根据所述次数确定所述冲撞信息。
7.根据权利要求1-3任意一项所述的方法,其特征在于,所述高速缓存包括如下至少一项:
层1指令高速缓存,层1数据高速缓存,层2高速缓存,或层3高速缓存。
8.一种高速缓存冲撞处理装置,其特征在于,包括:
信息获取模块,用于获取高速缓存的冲撞信息;所述冲撞信息包括所述高速缓存中发生冲撞的多个第一缓存行以及所述多个第一缓存行中每个第一缓存行发生冲撞的次数;
信息处理模块,用于根据所述冲撞信息在所述多个第一缓存行中确定满足预设条件的第二缓存行;
所述预设条件包括如下至少一项:发生冲撞的次数大于或等于第一阈值;或者,发生冲撞的次数最多的前N名,其中,N>0;
重定位模块,用于将所述第二缓存行在内存中对应的第一虚拟地址中的存储对象,从所述第一虚拟地址重定位至所述高速缓存中的第三缓存行在内存中对应的第二虚拟地址;所述第三缓存行与所述第二缓存行不同,所述第二虚拟地址与所述第一虚拟地址不同。
9.根据权利要求8所述的装置,其特征在于,所述重定位模块将所述第二缓存行在内存中对应的第一虚拟地址中的存储对象,从所述第一虚拟地址重定位至所述高速缓存中的第三缓存行在内存中对应的第二虚拟地址具体包括:
获取所述第一虚拟地址在第一可执行文件中对应的第一位置;
获取所述第一位置对应的第一代码段;
生成第二可执行文件,以将所述第一代码段链接至所述第二虚拟地址在所述第二可执行文件中对应的第二位置。
10.根据权利要求9所述的装置,其特征在于,所述第一代码段为一个函数。
11.根据权利要求8-10任意一项所述的装置,其特征在于,所述第三缓存行满足如下至少一项条件:
发生冲撞的次数小于第二阈值;其中,所述第二阈值小于或者等于所述第一阈值;
发生冲撞的次数最少的M名,M>0。
12.根据权利要求8-10任意一项所述的装置,其特征在于,所述信息获取模块获取高速缓存的冲撞信息具体包括:
获取第一时间段内处理器访问的一个或多个虚拟地址的流信息;
从所述流信息中获取所述一个或多个虚拟地址中每个虚拟地址对应的所述高速缓存中的第四缓存行;
根据所述第四缓存行确定所述冲撞信息。
13.根据权利要求12所述的装置,其特征在于,所述信息获取模块根据所述第四缓存行确定所述冲撞信息具体包括:
确定所述第四缓存行在所述第一时间段内被处理器访问的次数;
根据所述次数确定所述冲撞信息。
14.根据权利要求8-10任意一项所述的装置,其特征在于,所述高速缓存包括如下至少一项:
层1指令高速缓存,层1数据高速缓存,层2高速缓存,或层3高速缓存。
15.一种装置,其特征在于,所述装置包括:处理器和高速缓存;所述处理器用于执行如权利要求1-7任意一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令在设备上运行时,使得所述设备执行如权利要求1-7任意一项所述的方法。
CN202080001161.6A 2020-05-25 2020-05-25 一种高速缓存冲撞处理方法及装置 Active CN113973502B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/092167 WO2021237424A1 (zh) 2020-05-25 2020-05-25 一种高速缓存冲撞处理方法及装置

Publications (2)

Publication Number Publication Date
CN113973502A CN113973502A (zh) 2022-01-25
CN113973502B true CN113973502B (zh) 2023-11-17

Family

ID=78745118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080001161.6A Active CN113973502B (zh) 2020-05-25 2020-05-25 一种高速缓存冲撞处理方法及装置

Country Status (2)

Country Link
CN (1) CN113973502B (zh)
WO (1) WO2021237424A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092493A (zh) * 2017-05-26 2017-08-25 郑州云海信息技术有限公司 一种调整服务器系统性能与功耗的bios选项的系统及方法
CN107479860A (zh) * 2016-06-07 2017-12-15 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
CN109684235A (zh) * 2018-12-27 2019-04-26 长沙理工大学 一种计算机系统应用高速缓存的方法、装置及设备
CN110716887A (zh) * 2019-09-11 2020-01-21 无锡江南计算技术研究所 一种支持写暗示的硬件高速缓存数据装入方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213695B (zh) * 2017-06-30 2023-07-21 伊姆西Ip控股有限责任公司 缓存管理方法、存储系统以及计算机程序产品
US10528483B2 (en) * 2017-10-23 2020-01-07 Advanced Micro Devices, Inc. Hybrid lower-level cache inclusion policy for cache hierarchy having at least three caching levels

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479860A (zh) * 2016-06-07 2017-12-15 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
CN107092493A (zh) * 2017-05-26 2017-08-25 郑州云海信息技术有限公司 一种调整服务器系统性能与功耗的bios选项的系统及方法
CN109684235A (zh) * 2018-12-27 2019-04-26 长沙理工大学 一种计算机系统应用高速缓存的方法、装置及设备
CN110716887A (zh) * 2019-09-11 2020-01-21 无锡江南计算技术研究所 一种支持写暗示的硬件高速缓存数据装入方法

Also Published As

Publication number Publication date
CN113973502A (zh) 2022-01-25
WO2021237424A1 (zh) 2021-12-02

Similar Documents

Publication Publication Date Title
Kim et al. Exploring the Design Space of Page Management for {Multi-Tiered} Memory Systems
US11960726B2 (en) Method and apparatus for SSD storage access
JP6009589B2 (ja) マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法
US10684832B2 (en) Code placement using a dynamic call graph
US20060010449A1 (en) Method and system for guiding scheduling decisions in clusters of computers using dynamic job profiling
US7836254B2 (en) Cache injection using speculation
US11275721B2 (en) Adaptive table placement in NUMA architectures
CN104809179A (zh) 访问哈希表的装置和方法
US11853223B2 (en) Caching streams of memory requests
US20140229683A1 (en) Self-disabling working set cache
JP2020500368A (ja) データプリフェッチング方法、装置、およびシステム
Wu et al. Joint management of CPU and NVDIMM for breaking down the great memory wall
Wen et al. Software hint-driven data management for hybrid memory in mobile systems
CN113973502B (zh) 一种高速缓存冲撞处理方法及装置
CN101859282B (zh) 基于双重跟踪的虚拟化平台的磁盘页面换入的方法
US10379827B2 (en) Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
US8806461B2 (en) Using memory usage to pinpoint sub-optimal code for gaming systems
Huang et al. Minimizing energy consumption of embedded systems via optimal code layout
US9514047B2 (en) Apparatus and method to dynamically expand associativity of a cache memory
Xi et al. CARIC-DA: Core affinity with a range index for cache-conscious data access in a multicore environment
CN105718223A (zh) 管理工作负载存储器分配的方法和设备
Zhao et al. Improving Cache Management with Redundant RDDs Eviction in Spark.
Liu et al. Planaria: Pattern Directed Cross-page Composite Prefetcher
Basak Benchmarking, Performance Analysis, and Domain-Specific Architectures for Graph Processing Applications
Ghaeb Enhancing cache performance based on improved average access time

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant