...
【24h】

Register allocation for software pipelined multi-dimensional loops

机译:软件流水线多维循环的寄存器分配

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

摘要

Software pipelining of a multi-dimensional loop is an important optimization that overlaps the execution of successive outermost loop iterations to explore instruction-level parallelism from the entire n-dimensional iteration space. This paper investigates register allocation for software pipelined multi-dimensional loops.For single loop software pipelining, the lifetime instances of a loop variant in successive iterations of the loop form a repetitive pattern. An effective register allocation method is to represent the pattern as a vector of lifetimes (or a vector lifetime using Rau's terminology) and map it to rotating registers. Unfortunately, the software pipelined schedule of a multi-dimensional loop is considerably more complex, and so are the vector lifetimes in it.In this paper, we develop a way to normalize and represent vector lifetimes in multi-dimensional loop software pipelining, which capture their complexity, while exposing their regularity that enables us to develop a simple, yet powerful solution. Our algorithm is based on the development of a metric, called distance, that quantitatively determines the degree of potential overlapping (conflicts) between two vector lifetimes. We show how to calculate and use the distance, conservatively or aggressively, to guide the register allocation of the vector lifetimes under a bin-packing algorithm framework. The classical register allocation for software pipelined single loops is subsumed by our method as a special case.The method has been implemented in the ORC compiler and produced code for the Itanium architecture. We report the effectiveness of our method on 134 loop nests with 348 loop levels. Several strategies for register allocation are compared and analyzed.
机译:多维循环的软件流水线是一项重要的优化,它与连续的最外层循环迭代的执行重叠,以从整个n维迭代空间中探索指令级并行性。本文研究了软件流水线多维循环的寄存器分配。对于单循环软件流水线,循环连续迭代中循环变量的生命周期实例形成重复模式。一种有效的寄存器分配方法是将模式表示为寿命的向量(或使用Rau术语的向量寿命),并将其映射到旋转寄存器。不幸的是,多维循环的软件流水线调度要复杂得多,向量生命周期也是如此。在本文中,我们开发了一种方法来标准化和表示多维循环软件流水线中的向量生命周期,该方法可以捕获它们的复杂性,同时揭示它们的规律性,这使我们能够开发一个简单而强大的解决方案。我们的算法基于称为距离的度量标准的发展,该度量标准地确定了两个向量生命周期之间潜在重叠(冲突)的程度。我们展示了如何在bin-packing算法框架下保守地或积极地计算和使用距离来指导向量生存期的寄存器分配。我们的方法将软件流水线式单循环的经典寄存器分配作为一种特殊情况,该方法已在ORC编译器中实现,并为Itanium体系结构生成了代码。我们在348个循环级别的134个循环嵌套上报告了该方法的有效性。比较和分析了几种寄存器分配策略。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号