[发明专利]面向处理器指令cache的低功耗编译方法在审
申请号: | 201910794737.8 | 申请日: | 2019-08-27 |
公开(公告)号: | CN112445480A | 公开(公告)日: | 2021-03-05 |
发明(设计)人: | 尉红梅;吴伟;朱琪;王飞;沈莉;钱宏;肖谦;管茂林 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 处理器 指令 cache 功耗 编译 方法 | ||
本发明公开一种面向处理器指令cache的低功耗编译方法,包括以下步骤:S1、寻找最内层循环;S2、判断寻找到的最内层循环是否可以展开;S3、结合L0 cache计算展开次数:即根据循环体的最大伪指令条数MAX_UNROLLED_INSNS、循环体的最大平均伪指令条MAX_AVERAGE_UNROLLED_INSNS和最大展开次数MAX_UNROLL_TIMES,计算展开次数;S4、根据展开次数实现代码展开;S5、在编译器中端,对循环中语句建立依赖关系图,并把循环中每一条语句设为一个区域;S6、遍历所有区域,检查是否有生产者消费者的依赖关系;S7、根据L0 cache容量大小确定最优分区大小;S8、有选择的进行合并语句;S9、将剩余的每一个分区都生成一个循环树,实现循环剥离。本发明实现了循环优化的精细控制策略,保证L0 cache的高命中率,有效降低取指和译码功耗,以提高性能减少功耗。
技术领域
本发明涉及一种面向处理器指令cache的低功耗编译方法,属于计算机技术领域。
背景技术
通常指令Cache(I-cache)的访问量较数据Cache(D-cache)要大得多,所以I-cache的功耗占据CPU功耗的主要部分。L0 cache是在L1 I-cache与流水间之间增加的指令cache结构,与传统cache相比,主要有以下几点区别:第一,L0 cache存放的是译码后的指令,减少了译码时间,提高了CPU实际效率;第二,L0 cache容量小、面积小,降低了静态功耗;第三,指令流相对于数据流具有更好的空间、时间的局部性,即使容量很小的L0 cache也有相当高的命中率,降低了动态功耗;第四,CPU访问L0 cache时,不需要对组内每一路的标记域及数据域进行比较。因此,用好L0 cache,保证L0 cache的命中率将有效降低整个cache系统的功耗,从而降低整个CPU的功耗。
到目前为止,大部分应用中都存在短循环算法,这种短循环的空间局部性好。但传统的编译器针对循环的编译优化算法往往考虑单一的性能指标,缺少针对指令cache的低功耗编译优化技术,不能高效的利用指令缓存部件。同时,也并未针对L0 cache的硬件结构特征做优化参数的适应性调整,无法有效保证L0 cache的高命中率。
发明内容
本发明的目的是提供一种面向处理器指令cache的低功耗编译方法,该面向处理器指令cache的低功耗编译方法实现了循环优化的精细控制策略,保证L0 cache的高命中率,有效降低取指和译码功耗,以提高性能减少功耗。
为达到上述目的,本发明采用的技术方案是:一种面向处理器指令cache的低功耗编译方法,包括以下步骤:
S1、根据编译器获得的程序语法树结构信息,获取程序的循环体结构信息,在每一个循环体结构信息中寻找到最内层循环;
S2、针对S1中找到的每一个最内层循环,判断是否可以展开,如果不可展开或者空间优化优先的编译要求,则跳转到S5,否则执行下一步;
S3、根据L0 cache的空间容量和处理器单条指令的空间大小计算最内层循环的展开次数,即根据最内层循环体的最大伪指令条数MAX_UNROLLED_INSNS、最内层循环体的最大平均伪指令条MAX_AVERAGE_UNROLLED_INSNS和最内层循环体的最大展开次数MAX_UNROLL_TIMES,计算最内层循环的展开次数,具体如下:
S31、由所面向的L0 cache的结构,确定默认参数值:MAX_UNROLLED_INSNS、MAX_AVERAGE_UNROLLED_INSNS和MAX_UNROLL_TIMES,其中,MAX_AVERAGE_UNROLLED_INSNS=L0cache容量/单条指令空间大小,若编译器获取到的程序编译选项中存在--param max-unroll-times=N(N为整数),则MAX_UNROLL_TIMES=N ,否则MAX_UNROLL_TIMES=8, MAX_UNROLLED_INSNS=MAX_AVERAGE_UNROLLED_INSNS* MAX_UNROLL_TIMES;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910794737.8/2.html,转载请声明来源钻瓜专利网。