[发明专利]一种寄存器的优化分配方法在审
| 申请号: | 202010300389.7 | 申请日: | 2020-04-16 |
| 公开(公告)号: | CN113535375A | 公开(公告)日: | 2021-10-22 |
| 发明(设计)人: | 刘贵山;吴春光;赵鹏辉;刘;张彬 | 申请(专利权)人: | 中标软件有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 北京汇智英财专利代理事务所(普通合伙) 11301 | 代理人: | 何晖 |
| 地址: | 200030 上海市徐汇*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 寄存器 优化 分配 方法 | ||
本发明涉及一种寄存器分配算法的优化方法,包括:活跃区域分割法;优先给冲突图中度数较小的变量分配寄存器的方法;变量出栈时,优先分配全局数组中与相邻变量(已经分配了寄存器)不冲突的寄存器的方法。本发明通过多种优化方法分配寄存器,使寄存器的分配更高效,能有效减少溢出量,提升程序的性能。
技术领域
本发明涉及计算机软件资源优化分配技术领域,具体涉及一种寄存器的优化分配方法。
背景技术
寄存器是CPU中一种数量相对较少的高速存储装置。和普通的存储器相比,有限的大小以及相对较快的存储速度使得寄存器成为绝大多数机器体系结构中的临界资源。因此寄存器分配作为编译器后端的一个环节,就需要编译程序对其进行有效的配置。寄存器分配是指编译器将程序中出现的值指派给处理器有限物理寄存器的过程。寄存器分配算法在编译优化中具有重要的地位。现代体系结构处理器都含有多级存储体,而且存储体的速度与容量成反比关系。在所有的存储体中,寄存器是运行速度最快、容量最少的存储体,因此合理分配的寄存器资源,能够减少寄存器压力,降低关键变量的访存开销,提升程序的性能。
寄存器分配决定了哪些变量(变量、临时变量、常量)在程序执行的过程中需要被装入寄存器。在RISC体系结构中,除去数据传送外的绝大多数操作都在寄存器中进行,而在现代CISC结构的执行中,寄存器到寄存器的操作也比相应的内存存取操作要快,正是由于这些原因,寄存器分配就显得尤为重要。
寄存器分配的目标是通过合理的分配方法从而减少寄存器的溢出。即使是再好的优化算法,有限数目的寄存器也会导致必不可少的溢出,那么优化的关键就在于如何最大限度的减少溢出的代价。通过启发式信息确立每个活跃变量的溢出代价,当需要溢出的时候,就优先溢出那些代价值小的变量,同时尽量把寄存器分配给那些代价值高的变量。这样就能使寄存器分配的总体代价尽可能缩小。
寄存器分配是编译器中一个历久弥新的问题,因为它是编译器在输出汇编代码前必须经历的阶段。寄存器分配算法的好坏,关系着生成代码的性能,大小。为了追求极致性能,很多编译器都在寄存器分配上做了很多文章,不惜引入非常复杂的算法,好的寄存器分配能够提高程序执行速度超过250%。
对于寄存器的优化,目前寄存器分配算法有chaitin-briggs图着色算法、Poletto和Sarkar提出的线性扫描算法(linear scan),Goodwin和Wilken最早提出的对寄存器分配问题的整数线性规划算法(integer linear programming),chow等人提出的基于优先级的寄存器分配算法,Nickerson提出的复合寄存器分配算法等。关于寄存器分配算法,gcc支持CB(chaitin-briggs图着色算法)与priority(基于优先级的寄存器分配算法),默认使用CB。
发明内容
为了进一步优化寄存器的分配方法,提升程序的性能,本发明提供了一种寄存器的优化分配方法,包括如下步骤:
步骤S1:为第一个变量分配寄存器,并将所分配的寄存器添加到一个全局数组中;
步骤S2:为第二变量分配寄存器,若第二个变量与第一个变量不冲突,则优先分配当前全局数组中的寄存器,若第二个变量与第一个变量冲突,则为第二个变量另外分配一个寄存器,并将新分配的寄存器添加到全局数组中;
步骤S3:重复步骤S1-步骤S2,为每一个变量分配寄存器,并且,在为每一个变量分配寄存器时,回溯当前所有已分配过寄存器的变量,仅在其与当前所有分配过寄存器的变量均冲突时,再为其分配新的寄存器,最后,将未分配到寄存器的变量溢出到内存中。
其中,所述步骤S1-步骤S3中,在迭代为每个变量分配寄存器时,优先分配全局数组中与相邻变量不冲突的寄存器。
其中,所述步骤S1-步骤S3中,在迭代为每个变量分配寄存器时,优先给冲突图中较小的变量分配寄存器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中标软件有限公司,未经中标软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010300389.7/2.html,转载请声明来源钻瓜专利网。





