高效寄存器分配框架与不规则代码局部性转换技术
高效寄存器分配框架
在现代计算机系统中,寄存器分配是编译器优化的关键环节,它对程序的性能有着重要影响。下面将介绍一种高效的寄存器分配框架及其效果。
寄存器分配原理与策略
在寄存器分配过程中,高寄存器压力区域的处理至关重要。当高寄存器压力区域与候选变量分散且使用稀疏时,相邻的高寄存器压力区域更有可能成功合并,而与较远区域的合并可能因途中遇到足够的使用情况而放弃。该框架的降级算法的核心思想是收集与局部良好候选者相关的溢出成本的全局视图,通过选择在特定路径上不太可能使用的变量,并在战略点插入加载和存储操作,以降低寄存器需求。
框架实现与测试结果
此框架在Silicon Graphics(SGI)的MIPSPRO编译器后端实现。MIPSPRO编译器的代码生成器包含一个名为集成全局局部调度(IGLS)的全局调度框架。在全局寄存器分配(GRA)之前会进行一轮全局和局部调度,为GRA提供局部寄存器需求的估计。该框架在这轮调度之后作为GRA的前端实现,GRA之后还会进行另一轮全局和局部调度。
以下是对Mediabench基准测试套件中几个程序的测试结果,与Briggs风格的分配器进行了对比:
| 程序 | 降级状态 | 静态负载 | 静态存储 | 动态负载 | 动态存储 | 指令计数 | 周期数 |
| — | — | — | — | — | — | — | — |
| adpcm | ON | 170 | 52 | 552257 | 146251 | 10123343 | 5171507 |
| adpcm | OFF | 174 | 59
超级会员免费看
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



