作者投稿和查稿 主编审稿 专家审稿 编委审稿 远程编辑

计算机工程

• 专栏 • 上一篇    下一篇

X86平台上Open64软件流水的设计与实现

刘家兵1,2,徐 云1,2   

  1. (1. 安徽省高性能计算重点实验室,合肥 230027;2. 中国科学技术大学计算机科学与技术学院,合肥 230027)
  • 收稿日期:2012-08-07 出版日期:2013-09-15 发布日期:2013-09-13
  • 作者简介:刘家兵(1989-),男,硕士研究生,主研方向:编译技术,高性能计算;徐 云,教授、博士
  • 基金资助:

    国家自然科学基金资助重点项目“面向重大应用领域的高效能计算优化理论与技术”(61033009)

Design and Implementation of Software Pipelining for Open64 on X86 Platform

LIU Jia-bing 1,2, XU Yun 1,2   

  1. (1. Key Laboratory of High Performance Computing of Anhui Province, Hefei 230027, China; 2. School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China)
  • Received:2012-08-07 Online:2013-09-15 Published:2013-09-13

摘要:

由于缺乏相关硬件功能,Open64编译器的软件流水技术没有面向X86处理器的版本。为此,提出一种适用于X86平台的Open64软件流水实现框架。利用软件实现处理器的部分硬件行为,通过循环过滤方法剔除不适用的循环。针对缺乏循环寄存器文件的问题,设计寄存器分配算法达到使用通用寄存器的目的,并添加模变量扩展模块以保证执行的正确性。实验结果表明,与循环展开方案相比,该框架可使系统平均获得9%的性能提升。

关键词: 软件流水, 编译器, 模调度, 循环优化, 循环寄存器文件, 模变量扩展

Abstract:

Due to lack of some hardware functions, Software Pipelining(SWP) on Open64 can not work on X86 processors. To solve this problem, this paper proposes an Open64 software pipelining framework. This framework can make SWP work well on X86 processors by software implementation of some processor features, by some loop filtering and by rewriting the register allocation code for the lack of circulating register file to achieve the purpose of the use of general purpose registers and adding the modulo variable expansion modulo to ensure the correctness. Experimental results show that this framework can achieve an average of 9% performance improvement.

Key words: Software Pipelining(SWP), compiler, modulo scheduling, loop optimization, circulating register file, modulo variable expansion

中图分类号: