期刊文献+

3种提高软件流水有效性的算法:比较和结合 被引量:2

Three Algorithms for Improving the Effectiveness of Software Pipelining: Comparison and Combination
在线阅读 下载PDF
导出
摘要 软件流水是开发循环程序指令级并行性的技术,它通过并行执行连续的多个循环体来加快循环的执行速度.在软件流水中,循环体的重叠增加了寄存器需求,导致寄存器压力增大,当目标处理机所提供的寄存器不足时,软件流水可能失败.在Itanium处理机上评估了NAS和SPEC2000基准程序中的软件流水循环的寄存器需求,发现静态寄存器不足是造成软件流水失败的主要原因,提出了3种增加软件流水个数、提高软件流水有效性的算法:限制循环展开因子的算法(registersensitiveunrolling,简称RSU)、堆栈寄存器分配算法(stackedregisterallocation,简称SRA)以及变量类型转换的算法(variabletypeconversion,简称VTC).RSU根据静态寄存器需求确定一个合理的展开因子,增加了软件流水的成功率;SRA和VTC分别使用空闲的堆栈寄存器和旋转寄存器来充当静态寄存器,提高了寄存器的利用率.在面向Itanium处理器的开放源码编译器ORC(openresearchcompiler)上实现了这3种算法,通过NAS程序的测试比较了这3种算法的有效性,同时对它们的结合应用进行了研究和实验. Software pipelining is a loop scheduling technique that extracts instruction level parallelism by overlapping the execution of several consecutive iterations. One of its drawbacks is the high register requirements, which may lead to software pipelining failure due to insufficient static general registers in Itanium. This paper evaluates the register requirements of software-pipelined loops and presents three new methods for software pipelining loops that require more static general registers than those available in Itanium processor. They reduce register pressure by either reducing instructions in the loop body or allocating stacked non-rotating registers or rotating register in register stack to serve as static registers. These methods are better than the existing techniques in that they further improve performance gain from software pipelining by increasing software-pipelined loops. These methods have been implemented in open research compiler (ORC) targeted for Itanium processor, and they perform well on loops of the programs in NAS Benchmarks. For some benchmarks, the performance is improved by more than 21%.
出处 《软件学报》 EI CSCD 北大核心 2005年第10期1822-1832,共11页 Journal of Software
基金 国家自然科学基金~~
关键词 软件流水 静态变量 静态寄存 ITANIUM 循环展开 寄存器分配 software pipelining static variant static register Itanium loop unrolling register allocation
作者简介 李文龙(1977-),男,辽宁鞍山人,博士,研究员,主要研究领域为计算机体系结构,指令级并行算法.Corresponding author: Phn: +86-10-62773730, E-mail: liwenlong00@mails.tsinghua.edu.cn, http://www.tsinghua.edu.cn 陈或(1981-),男,博士生,主要研究领域为指令级并行算法. 林海波(1978-),男,博士,主要研究领域为计算机系统结构,指令级并行算法和多线程. 汤志忠(1946-),男,教授,博士生导师,主要研究领域为计算机系统结构,指令级并行算法,并行编译技术.
  • 相关文献

参考文献14

  • 1Allen VH, Jones RB, Lee RM, Allan SJ. Software pipelining. ACM Computing Surveys, 1995,27(3):367-432.
  • 2Huff RA. Lifetime-Sensitive modulo scheduling. In: Budd TA, ed. Proc. of the ACM SIGPLAN'93 Conf. on Programming Language Design and Implementation. New York: ACM Press, 1993. 258-267.
  • 3Dehnert JC, Towle RA. Compiling for the Cydra 5. Journal of Supercomputing, 1993,7(1-2):181-228.
  • 4Dulong C, Krishnaiyer R, Kulkarni D, Lavery D, Li W, Ng J, Sehr D. An overview of the Intel IA-64 compiler. Intel Technology Journal, 1999.
  • 5Rau BR, Lee M, Tirumalai PP, Schlansker MS. Register allocation for software pipelined loops. In: Allen R, ed. Proc. of the ACM SIGPLAN'92 Conf. on Programming Language Design and Implementation. New York: ACM Press, 1992. 283-299.
  • 6Dehnert JC, Hsu PY, Bratt JP. Overlapped loop support in the Cydra 5. In: Hennessy J, ed. Proc. of the 3rd Int'l Conf. on Architectural Support for Programming Languages and System. New York: ACM Press, 1989.26-38.
  • 7Intel Corporation. Intel ItaniumTM Architecture Software Developer's Manual. Volume 1: Application Architecture. Intel Corp.,2001.
  • 8Roy J, Sun C, Wu CY. Tutorial: Open research compiler for Itanium processor family (IPF). In: Proc. of the 34th Annual Int'l Symp. on Microarchitecture. New York: ACM Press, 2001.
  • 9Intel Corporation. Intel ItaniumTM Architecture Software Developer's Manual. Volume 3: Instruction Set Reference. Intel Corp,2001.
  • 10Mangione SW, Abraham SG, Davidson ES. Register requirements of pipelined processors. In: Kennedy K, Polychronopoulos CD,ed. Proc of Int'l Conf. on Supercomputing. New York: ACM Press, 1992.260-271.

同被引文献7

引证文献2

二级引证文献5

相关作者

内容加载中请稍等...

相关机构

内容加载中请稍等...

相关主题

内容加载中请稍等...

浏览历史

内容加载中请稍等...
;
使用帮助 返回顶部