首页> 外文学位 >Reducing register pressure using linear scheduling.
【24h】

Reducing register pressure using linear scheduling.

机译:使用线性调度降低寄存器压力。

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

摘要

With the increasing growth of the speed disparity between a processor and the memory subsystem, it is imperative to optimize software to maximize its register usage to fully utilize the computational power of a processor. The two major problems associated with register usage software optimization are the allocation and the assignment of hardware registers to software values, both of which are NP-complete in general. The assignment problems consists of associating values with specific registers. The allocation problem determines the minimum number of registers needed to store a collection of values. In this thesis we address the compiler problem of generating sofware for loop nests with optimial register usage.;We propose the use of linear scheduling to address the register allocation problem of minimizing the register requriements of loop nests. Linear scheduling is a method of reorganizing the sequence of iterations of a loop nest into a series of hyperplanes defined by a vector parameter Π. We demonstrate that the live ranges of the subscripted variables used inside loop nests change with each different hyperplane scheduling of the original loop nest. Different live ranges results in different register requirements. Our experimental results indicate that an optimal linear schedule uses 36% fewer register than a schedule that uses the most registers on average. By concentrating on hyperplane loop nest transformations, we are able to reduce the register allocation analysis from O(n2) to O( n log n), where n is the number of variables used by the loop nest.;We address the code generation issues associated with linear scheduling. One drawback of linear scheduling is that certain hyperplane loop nests have more overhead than traditional loop nests. This overhead is the manifested in the form of upper and lower loop boundaries that are no longer constant. Furthermore, the array subscripts expressions for the variables accessed within the loop nest may become more complex since the index variables of the loop iterations have changed and certain loop iterations may depend on more than one index variable. To mitigate this overhead, we utilize both partial and complete unrolling. For certain loop nests, we show that complete loop unrolling may yield a smaller executable than partial loop unrolling.;We propose early constant value splitting to improve register usage. For most RISC processors, it is necessary to split large values before they can be loaded into registers unless the compiler dedicates one hardware register to index constant values stored within a reserved segment of memory. Certain compilers delay this value splitting until the code generation phase. Using gcc, we demonstrate that by preforming value splitting early, we may eliminate architecture specific value splitting passes. We identify conditions when value splitting may generate worse code and therefore should be avoided. This work improves upon the naïve split-everywhere pass implemented by a number of gcc backends.
机译:随着处理器和内存子系统之间速度差异的增加,必须优化软件以最大化其寄存器使用率,以充分利用处理器的计算能力。与寄存器使用软件优化相关的两个主要问题是硬件寄存器到软件值的分配和分配,两者通常都是NP完全的。分配问题包括将值与特定寄存器相关联。分配问题确定了存储值集合所需的最小寄存器数。在本文中,我们解决了使用最优寄存器使用情况为循环嵌套生成软件的编译器问题。我们提出了使用线性调度来解决寄存器分配问题,以最大程度地减少循环嵌套的寄存器需求。线性调度是一种将循环嵌套的迭代序列重新组织为由矢量参数defined定义的一系列超平面的方法。我们证明了在循环嵌套中使用的下标变量的有效范围会随着原始循环嵌套的每个不同的超平面调度而变化。不同的有效范围会导致不同的寄存器要求。我们的实验结果表明,最佳的线性计划所使用的寄存器比平均使用最多寄存器的计划少36%。通过专注于超平面循环嵌套转换,我们可以将寄存器分配分析从O(n2)减少到O(n log n),其中n是循环嵌套使用的变量数。;我们解决了代码生成问题与线性计划相关联。线性调度的一个缺点是某些超平面循环嵌套比传统的循环嵌套有更多的开销。该开销以不再恒定的上,下循环边界的形式体现。此外,由于循环迭代的索引变量已更改,并且某些循环迭代可能依赖于多个索引变量,因此在循环嵌套中访问的变量的数组下标表达式可能会变得更加复杂。为了减轻这种开销,我们同时利用了部分和完全展开功能。对于某些循环嵌套,我们证明与部分循环展开相比,完整的循环展开可能会产生较小的可执行文件。;我们建议尽早进行常量值拆分以提高寄存器的使用率。对于大多数RISC处理器,除非将编译器指定一个硬件寄存器专用于索引存储在内存的保留段中的常量值,否则在将大值加载到寄存器之前,有必要对其进行拆分。某些编译器将此值拆分延迟到代码生成阶段。使用gcc,我们证明了通过尽早执行价值拆分,我们可以消除特定于体系结构的价值拆分过程。我们确定值拆分可能会产生更差代码的条件,因此应避免使用。这项工作改进了由多个gcc后端实现的天真拆分。

著录项

  • 作者

    Philippidis, Cesar James.;

  • 作者单位

    Santa Clara University.;

  • 授予单位 Santa Clara University.;
  • 学科 Engineering Computer.
  • 学位 Ph.D.
  • 年度 2011
  • 页码 125 p.
  • 总页数 125
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号