...
首页> 外文期刊>ACM SIGPLAN Notices: A Monthly Publication of the Special Interest Group on Programming Languages >Post-pass periodic register allocation to minimise loop unrolling degree
【24h】

Post-pass periodic register allocation to minimise loop unrolling degree

机译:通过后定期寄存器分配,以最小化循环展开程度

获取原文
获取原文并翻译 | 示例

摘要

This paper solves an open problem regarding loop unrolling after periodic register allocation. Although software pipelining is a powerful technique to extract fine-grain parallelism,it generates reuse circuits spanning multiple loop iterations.These circuits require periodic register allocation, which in turn yield a code generation challenge, generally addressed through:(1)hardware support-rotating register files-deemed too expensive for embedded processors,(2)insertion of register moves with a high risk of reducing the computation throughput-initiation interval (II)-of software pipelining, and(3)post-pass loop unrolling that does not compromise throughput but often leads to unpractical code growth.The latter approach relies on the proof that MAXLIVE registers are sufficient for periodic register allocation(2;3;5);yet the only heuristic to control the amount of post-pass loop unrolling does not achieve this bound and leads to undesired register spills(4;7).We propose a periodic register allocation technique allowing a software-only code generation that does not trade the optimality of the II for compactness of the generated code.Our idea is based on using the remaining registers:calling R-arch the number of architectural registers of the target processor,then the number of remaining registers that can be used for minimising the unrolling degree is equal to R-arch-MAXLIVE.We provide a complete formalisation of the problem and algorithm,followed by extensive experiments. We achieve practical loop unrolling degrees in most cases-with no increase of the II-while state-of-the-art techniques would either induce register spilling,degrade the II or lead to unacceptable code growth.
机译:本文解决了周期性分配寄存器后循环展开的开放性问题。尽管软件流水线技术是一种提取细粒度并行性的强大技术,但它会生成跨越多个循环迭代的重用电路,这些电路需要定期进行寄存器分配,这反过来又会产生代码生成挑战,通常可以通过以下方式解决:(1)硬件支持-旋转寄存器文件-对于嵌入式处理器而言太昂贵了;(2)插入寄存器移动具有降低软件流水线的计算吞吐量-初始化间隔(II)的高风险,以及(3)不会妥协的通过后循环展开吞吐量,但通常会导致不切实际的代码增长。后一种方法依赖于证明MAXLIVE寄存器足以满足周期性寄存器分配的要求(2; 3; 5);但唯一无法控制传递后循环展开数量的启发式方法这种限制会导致不希望的寄存器溢出(4; 7)。我们提出了一种周期性的寄存器分配技术,该技术允许仅软件代码生成而不进行最优运算为了使生成的代码更紧凑,II的有效性。我们的想法基于使用剩余的寄存器:将目标处理器的体系结构寄存器的数量称为R-arch,然后将剩余的寄存器的数量用于最小化展开程度等于R-arch-MAXLIVE。我们提供了问题和算法的完整形式化,随后进行了广泛的实验。在大多数情况下,我们实现了实用的循环展开程度-不增加II,而最新技术可能会导致寄存器溢出,II降级或导致不可接受的代码增长。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号