Open64编译器的x86软件流水研究与实现

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:zphym
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
针对循环进行优化一直是编译器优化方法中性能提升的主要来源之一,软件流水技术就是其中一个比较著名和成熟的循环指令调度技术。软件流水技术的主要思想是将多个连续的迭代持续交叠地执行,直到所有迭代执行完毕。其过程包括构建数据依赖图、计算最小初始化间隔、模调度、循环寄存器文件分配和代码生成五个步骤。它可以充分挖掘指令级并行性(Instruction LevelParallelism),从而充分利用硬件资源,提高循环执行效率。   Open64编译器是由SGI(Silicon Graphics)开发的一款开源可重定向编译器,它包含面向x86、MIPS、IA64等多种体系结构的后端,软件流水是其一种重要的优化方法。对于IA64体系结构的安腾处理器,Open64编译器后端就包含了这项技术。由于x86体系结构缺乏循环寄存器文件、断言执行等硬件特征,目前最新的Open64编译器5.0版本中,面向x86体系结构的后端并不包含软件流水技术的实现。   本文的主要工作就是为Open64编译器面向x86体系结构的后端添加软件流水方法。首先,筛选出不利于软件流水的循环,对于过小的循环和非规则循环(如包含if语句的for循环和while循环),直接将其循环展开优化或交给Open64编译器后端进行EBO(Extended Block Optimizer)优化。然后,对其他的循环进行预处理,主要包括消除假依赖简化数据依赖图、代码移动减少循环体代码等工作,使得循环体更适合做软件流水优化。最后,再进行软件流水过程,本文补充的工作主要包括:对于循环寄存器文件的缺乏,重写了寄存器分配算法达到使用通用寄存器的目的,并添加了模变量扩展模块来保证执行的正确性;对于寄存器的匮乏,利用x86体系结构的多个64位寄存器和它的乱序执行机制,为软件流水添加寄存器溢出模块;对于断言执行机制的缺乏,利用x86体系结构的静态分支预测算法并重写了代码生成算法,使之能够产生面向x86体系结构的多尾声流水代码。整个软件流水方法实现以后,在GSL(GNU ScientificLibrary)测试用例上,实验结果反映出平均获得了9%的性能提升。
其他文献
随着计算机和网络技术的迅猛发展,通过计算机网络的信息交换变得前所未有的简单高效。传统模式的数据管理模式已经被时代的发展淘汰,特别是跨地域、规模较大的企业,这种的纸
云存储是云计算体系中的重要组成部分。它通过将存储资源重新整合,很大程度地提升了存储资源的利用效率,减少维护所需的人力资源,进而降低数据存储的成本。它的按需购买模式和可
在网络技术快速发展的今天,网络视频数据的产生、传输和存储的要求也越来越高。同时,视频监控的使用范围逐渐深入到人们生活的各个方面,大数据量高清视频成为安全生活的必不
随着传感器技术、无线通信技术和嵌入式技术的发展,无线传感器网络在医疗监护、环境监测、空间探索和军事侦察等领域均得到了广泛的应用。孤立的传感器网络在应用中存在着诸
随着企业规模的扩大、业务的发展,数据库服务器本身的磁盘空间已经无法满足日益增长的业务需求,而由于服务器硬件故障造成宕机,进而引发的业务中断,更成为IT管理者们的噩梦。因此
频繁项挖掘算法在网络监控领域具有广泛的应用。利用频繁项挖掘算法识别网络中的大流量,可以实时检测网络中的异常及拥塞情况、辅助服务商流量计费等。但是,随着骨干网络链路带
随着社会经济的发展,尤其是“智能交通”和“平安城市”等相关项目的相继实施,安防领域迎来了前所未有的发展机遇。虽然当前摄像头遍布大街小巷,各种视频数据泛滥,但是当需要调取
随着无纸化办公的普及,目前各级政府机关、学校、医院、企事业单位的许多机密信息都是存储在计算机中,这极大的方便了相关机构工作和业务的开展,提高了工作效率,节省了人力物力。
在21世纪的今天,日益成熟的网络已经成为了人们生活中不可或缺的重要组成部分,而随之而来的是信息安全问题。怎样保证重要信息在网络环境中的安全传输成为信息安全领域研究的一
目前,网络通信与人们的日常生产、生活联系日趋紧密,然而它在给人们带来便利的同时,通信的安全问题也凸显出来,这个问题的解决很大程度上需要有好的安全协议来对其进行保障。