[发明专利]面向处理器指令cache的低功耗编译方法在审
申请号: | 201910794737.8 | 申请日: | 2019-08-27 |
公开(公告)号: | CN112445480A | 公开(公告)日: | 2021-03-05 |
发明(设计)人: | 尉红梅;吴伟;朱琪;王飞;沈莉;钱宏;肖谦;管茂林 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 处理器 指令 cache 功耗 编译 方法 | ||
1.一种面向处理器指令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;
S32、若编译器获取到的程序编译选项中存在--param perf_pow_rate=N(N为整数),则性能功耗平衡因子PERF_POW_RATE=N,否则,性能功耗平衡因子PERF_POW_RATE为0;
S33、若性能功耗平衡因子PERF_POW_RATE = 0,则认为不考虑L0 cache相关低功耗优化,以性能为首要指标,执行原有编译器循环展开优化过程,若性能功耗平衡因子PERF_POW_RATE 1,则将MAX_AVERAGE_UNROLLED_INSNS和MAX_UNROLLED_INSNS分别乘上PERF_POW_RATE得到新的参数值,其他情况下,保留参数默认值;
S34、得到要展开的循环体自身的伪指令条数loop_ninsns和平均伪指令条数loop_av_ninsns,计算得出展开次数nunroll和平均展开次数nunroll_by_av,其中,nunroll =MAX_UNROLLED_INSNS/ loop_ninsns,nunroll_by_av = MAX_AVERAGE_UNROLLED_INSNS /loop_av_ninsns,若展开次数nunroll大于平均展开次数nunroll_by_av,将nunroll设为nunroll_by_av,再比较nunroll和最大展开次数MAX_UNROLL_TIMES,当nunroll大于MAX_UNROLL_TIMES时,将nunroll设为MAX_UNROLL_TIMES;
S4、根据S3中最终获得的展开次数nunroll实现代码展开,即对循环体内的基本块进行复制,当展开次数nunroll为n次时,复制n-1次,展开之后对新的循环体进行指令的合并、冗余删除;
S5、对当前最内层循环中语句建立依赖关系图,并把循环中每一条语句设为一个区域;
S6、遍历S5中标记的所有区域,检查是否有生产者消费者的依赖关系,即变量的赋值和使用是否分离并有前后顺序关系,接着检查依赖关系图是否存在孤立部分;
S7、根据L0 cache容量大小确定最优分区大小,最优分区大小 = L0 cache容量/单条指令空间大小;
S8、有选择的进行合并语句,将相同类型的语句合并为一个分区,满足S6的依赖关系的语句将不予合并,若分区大小超过最优分区大小,则不再合并语句,将其合并进其他分区,若无法合并进其他分区,则合并进当前分区;
S9、将剩余的每一个分区都生成一个循环树结构,实现循环剥离。
2.根据权利要求1所述的面向处理器指令cache的低功耗编译方法,其特征在于:在S2中,如果编译器接收到-Os的编译选项,则表示空间优化优先的编译要求,或者如果循环体所在基本块不可以复制,则不可以展开。
3.根据权利要求2所述的面向处理器指令cache的低功耗编译方法,其特征在于:如果基本块中存在跳转或者是循环出入口,则基本块不可以复制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910794737.8/1.html,转载请声明来源钻瓜专利网。