国家高技术研究发展计划(2007AA01Z110) 作品数:7 被引量:30 H指数:4 相关作者: 武成岗 张兆庆 李玉祥 施慧 陈莉 更多>> 相关机构: 中国科学院 中国科学院研究生院 中国科学技术大学 更多>> 发文基金: 国家高技术研究发展计划 国家重点基础研究发展计划 国家自然科学基金 更多>> 相关领域: 自动化与计算机技术 更多>>
面向向量化的局部数据重组 被引量:10 2009年 目前,利用微处理器的多媒体扩展对非多媒体程序的向量化已成为提高程序性能的一个重要手段.然而,和多媒体程序相比,非多媒体程序存在大量的非连续和非对齐的数据引用方式,严重影响程序的向量化发掘和向量化性能.提出一种新的向量化方法—基于局部数据重组的向量化技术(.通过改变局部数据的布局,将循环中不连续的数据引用变为连续的数据引用,进而完成对循环的向量化;并对数据引用作对齐分析和对齐优化,从而提高程序的向量化性能.以SPEC CPU2000浮点测试集为例,该方法不仅可以向量化对于ICC编译器无法向量化的程序,而且对这些程序都有很好的性能提升,在当前的测试环境下某些程序性能最高可提高241.6%. 李玉祥 施慧 陈莉关键词:向量化 数据重组 SIMD 提高堆数据局部性的动态池分配技术 被引量:4 2011年 动态内存分配在现代程序中被广泛使用.通用的内存分配器通常关注于降低运行时开销和内存利用率,而在发掘所分配对象之间的特性方面有所欠缺.文中展示了一个低开销的动态优化技术"动态池分配".它在运行时构造存储形状图,从中发掘动态分配对象之间的亲缘性,把具有亲缘性的对象聚集到一段内存区域(称为内存池)里,改善了它们的数据布局.作者在实际机器上实现了动态池分配原型系统,并在GCC--O3编译的一些大量使用堆数据的SPEC 2000和2006程序上进行了测试.原型系统在两台实际机器上获得了13.1%和11.8%的平均加速比,对一些程序的加速高达82.2%.此外,作者还研究了CPU的高速缓存大小对池分配效果的影响. 王振江 武成岗 张兆庆关键词:动态优化 指导cache静态划分的程序性能profiling优化技术 被引量:3 2012年 对于共享cache的多核处理器,如何管理好各个核对cache的利用,对于充分发挥多核处理器性能是很关键的问题.目前采用的cache替换方法程序间会出现性能干扰,cache静态划分技术则是通过为同时运行的程序分配不同的空间来解决性能干扰问题.为了给程序分配合适大小的cache空间,需要对程序进行性能profiling,即事先多遍运行收集程序在各种cache容量下的性能数据,这种性能profiling方法开销巨大,影响实用.为了解决性能profiling需要多遍运行程序的问题,提出了只需单遍运行的程序性能profiling优化技术.该技术利用在线的phase分析技术识别程序的运行阶段,避免对相同阶段的重复profiling;同时分析程序各phase的性能同cache容量变化的关系趋势,对于性能不敏感的容量变化则不进行profiling,降低开销.在程序运行结束后通过程序各phase在cache各种容量下的性能来估计程序在各容量下的整体性能,以指导cache静态划分.实验表明,该技术的开销仅为7%,而该方法指导的cache划分比未划分时有8%的性能改进,同多遍运行的程序性能profiling指导的cache划分性能相比仅有1%的下降. 贾耀仓 武成岗 张兆庆关键词:多核 CACHE划分 一种基于反馈信息的地址寄存器提升方法 2009年 在MIPS,ALPHA,SPARC和PowerPC等体系结构中,对全局变量和静态变量的访问一般采用间接寻址的方式.由于变量地址和变量值不在同一数据段,使得数据访问的局部性不好.这样,每次访问变量地址会导致大量冗余的数据cache不命中访存操作.此外,这种寻址方式会产生两条连续的有数据依赖的操作,降低了程序的指令级并行性.提出了基于反馈信息的地址寄存器提升算法(address register promotion based on feedbacks,ARPF).该算法减少了对全局变量地址和静态变量地址的冗余访问,提高了程序的ILP(instruction level parallelism),同时避免了由于寄存器压力增加导致性能下降.在龙芯编译器①上实现了该算法.实验表明ARPF对SPEC CPU2000INT所有测试用例有1%~6%的性能提升. 张超 吕方 王蕾 冯晓兵关键词:指令级并行 动态二进制翻译中数据预取优化研究 被引量:1 2009年 动态优化是动态二进制翻译研究中一个十分重要的课题,数据预取优化能提高现代处理器体系结构应用程序性能。基于超级块(Superblock)的动态数据预取优化采用软件插桩方式收集应用程序的load访存延迟信息并构造Superblock;然后根据延迟信息以及Superblock数据流分析得出的寄存器定值引用关系,对延迟load指令进行预取优化。通过在龙芯D igitalBridge动态二进制翻译系统上实验验证,数据预取优化可以提高翻译后SPEC2000浮点测试程序代码的平均性能3.3%,开销远小于0.5%。 罗琼程 吴强关键词:数据预取 二进制翻译 动态优化 超级块 二进制翻译中解析多目标分支语句的图匹配方法 被引量:6 2008年 二进制翻译技术现已成为实现软件移植的重要手段.在二进制翻译系统中,如何有效地挖掘程序的代码并对其进行高效翻译是影响系统性能的关键,而二进制代码中间接跳转语句的存在,使得静态时难以得到它的跳转目标,影响了代码的发掘率和最终的翻译效果.在通常的应用程序中,间接跳转指令经常用来实现多目标分支语义,分支目标存放在跳转表中.提出了一种解析多目标分支语句及其跳转表的方法,能够挖掘出间接跳转的目标,进而对其进行有效翻译并提高二进制翻译系统的性能.该方法提出使用语义图来对预期语义进行刻画和表达.语义图能够对考察的指令序列进行语义提取,识别出与预期语义相匹配的指令流,还可以应对编译器在不同优化选项下生成的指令,并能有效滤除不相关指令带来的干扰.实验结果表明,对于SPEC CINT2000中的部分测试用例,代码翻译的覆盖率可以提高9.85%~22.13%,相应带来的性能提升可达到8.30%~17.71%,而使用的算法时间复杂度仅为O(1). 陈龙 武成岗 谢海斌 崔慧敏 张兆庆关键词:二进制翻译 语义图 图匹配 面向非多媒体程序的SIMD向量化算法的研究及改进 被引量:6 2009年 利用微处理器的多媒体扩展对非多媒体程序的向量化已成为提高程序性能的一个重要手段,然而目前几乎所有的商业编译器对非多媒体程序的向量化的结果,都无法说明其编译器有效的向量能力.本文通过分析典型的非多媒体程序--SPECCPU2000浮点程序,归纳出非多媒体程序的SIMD向量化特征,并依此提出局部数据重组的向量化方法、针对外层循环的向量化方法、部分语句SLP的向量化方法几种新的向量化方法和相关的向量化优化技术.通过对比Intel编译器对SPECCPU2000的向量化性能测试,可以发现本文提出的改进方法有效的提高了程序的向量化. 李玉祥 施慧 陈莉关键词:向量化 数据重组 SIMD