国家重点基础研究发展计划(2005CB321602) 作品数:17 被引量:33 H指数:3 相关作者: 冯晓兵 张兆庆 吴承勇 李玉祥 施慧 更多>> 相关机构: 中国科学院 中国科学院研究生院 中国科学技术大学 更多>> 发文基金: 国家重点基础研究发展计划 国家高技术研究发展计划 国家自然科学基金 更多>> 相关领域: 自动化与计算机技术 更多>>
一种基于反馈信息的地址寄存器提升方法 2009年 在MIPS,ALPHA,SPARC和PowerPC等体系结构中,对全局变量和静态变量的访问一般采用间接寻址的方式.由于变量地址和变量值不在同一数据段,使得数据访问的局部性不好.这样,每次访问变量地址会导致大量冗余的数据cache不命中访存操作.此外,这种寻址方式会产生两条连续的有数据依赖的操作,降低了程序的指令级并行性.提出了基于反馈信息的地址寄存器提升算法(address register promotion based on feedbacks,ARPF).该算法减少了对全局变量地址和静态变量地址的冗余访问,提高了程序的ILP(instruction level parallelism),同时避免了由于寄存器压力增加导致性能下降.在龙芯编译器①上实现了该算法.实验表明ARPF对SPEC CPU2000INT所有测试用例有1%~6%的性能提升. 张超 吕方 王蕾 冯晓兵关键词:指令级并行 结合的指令调度与寄存器分配技术 被引量:2 2008年 提出了很多结合技术使得指令调度与寄存器分配之间进行一些信息交互,在没有引入过多溢出代码的情况下提高了指令级并行度,从而提高了性能。按照算法的特征分类介绍了几种影响力较大的算法,同时作了简单的评价和效果比较,最后介绍了有关指令调度和寄存器分配结合的一些新方向。 黄磊 冯晓兵关键词:指令调度 寄存器分配 一个支持访存带宽敏感调度的跨执行优化方法 被引量:1 2014年 片外访存带宽是共享存储多核系统的主要性能瓶颈.访存带宽敏感的任务调度可以有效缓解并发程序间的访存竞争,提高系统吞吐率.然而调度策略的实施需要关于程序执行的先验知识,给系统用户增加了额外负担;另一方面,并发程序间的带宽竞争使得运行时收集的程序带宽需求信息不精确,影响了调度效果.在该文中,作者提出了一个低开销、对用户透明的跨执行优化方法解决上述问题.它在运行时识别程序的阶段性(phase)行为,并估算每个phase的独占执行性能;上述信息被存储到数据库中,在程序未来的执行中指导调度,并且信息精度随着程序的多次执行持续增加.上述过程使得带宽敏感调度策略的进行不再需要任何用户信息制导,并且优化了调度效果.作者在基于Intel Xeon处理器的8核系统上实现并评估了该系统,测试结果表明:相对于Linux操作系统(OS)默认的调度策略,该文的方法能平均提高系统吞吐率3.7%,对于某些特定程序组达8.5%. 徐地 武成岗 冯晓兵关键词:进程调度 总线竞争 溢出代码和访存压力敏感的快速机器学习 2007年 基于遗传算法提出了溢出代码和访存压力敏感的机器学习来调试寄存器分配的权值函数。不同于以往采用目标程序的运行时间作为适应值,通过静态分析寄存器分配产生的溢出代码和基本块中的访存压力来构建适应值,以减少学习时间。这些分析被限定在热点函数中,在保证适应值精度的同时进一步加快了学习速度。实验表明,快速学习仅需要考虑热点函数的编译时间,整个CPU2000CINT测试集在5 h内即可学习完毕。大部分CPU2000CINT测试例子的性能得到了提高。其中perlbmk的性能提升最高可达到7.2%。 刘章林 张兆庆关键词:寄存器分配 一种寄存器压力敏感的指令投机调度技术 2009年 投机是指令调度克服指令间控制依赖的一种重要手段.投机一方面可以提高指令级并行带来性能改善,另一方面,它也可能拉长变量活跃区间,增大寄存器压力,导致变量溢出,从而恶化性能.前人的寄存器压力敏感的指令调度的方法,往往当调度区域内活跃变量个数超过阈值时一味保守地调度.考虑到每调度一条指令的收益和代价是不同的,通过具体分析一次投机调度的性能收益和溢出代价来有选择地投机指令,而不是仅仅考虑活跃变量的数目.实验表明,该方法能有效提高程序性能,对SPEC2000的整数例子,比不考虑寄存器压力的投机调度平均性能提高1.44%. 黄磊 冯晓兵 吕方关键词:投机 指令调度 超标量 循环合并敏感的优化内联模型 被引量:3 2007年 内联是编译器中的一种重要的优化手段.传统的编译器中内联模型只考虑函数的执行频率和大小,而没有考虑后面的优化.优化指导的内联模型是以考虑后面的优化为主而进行的内联,但它的缺点是没有考虑函数的执行频率和大小.为了克服以上两者的缺点,提出新的内联模型——循环合并敏感的优化内联模型,既考虑执行频率和函数大小,又考虑后面的优化.实现了考虑循环合并的内联,加入到ORC原有的内联模型中,自适应的建立新的内联模型,并对此模型进行性能调优.通过实验,发现热度这一内联标准在某些情况下不是很有效,并分析了原因,减少一些内联的函数,则会提高性能.实验的结果显示,新的内联模型可以有效地提高编译器的性能,某些SPECCPU2000实例的peak性能有高达6%的性能提升,平均提升1%. 周谦 冯晓兵 张兆庆关键词:编译器 面向非多媒体程序的SIMD向量化算法的研究及改进 被引量:6 2009年 利用微处理器的多媒体扩展对非多媒体程序的向量化已成为提高程序性能的一个重要手段,然而目前几乎所有的商业编译器对非多媒体程序的向量化的结果,都无法说明其编译器有效的向量能力.本文通过分析典型的非多媒体程序--SPECCPU2000浮点程序,归纳出非多媒体程序的SIMD向量化特征,并依此提出局部数据重组的向量化方法、针对外层循环的向量化方法、部分语句SLP的向量化方法几种新的向量化方法和相关的向量化优化技术.通过对比Intel编译器对SPECCPU2000的向量化性能测试,可以发现本文提出的改进方法有效的提高了程序的向量化. 李玉祥 施慧 陈莉关键词:向量化 数据重组 SIMD 基于区域平均执行时间和数据依赖信息的可能并行区域识别 被引量:2 2008年 随着多核处理器逐渐成为处理器发展的新趋势,为了持续提高程序性能,必须并行执行应用程序.传统的自动并行技术能够很好地并行科学计算应用中的规则循环,但对于含有大量函数调用和指针引用的不规则程序,目前还不能有效地对其实施并行.针对这一现状,文中提出了基于区域平均执行时间和数据依赖信息的可能并行区域识别方法来对一些不规则程序实施高效并行,主要贡献如下:(1)自动识别程序中的多种并行性,不仅包括传统并行性分析中的循环迭代间的细粒度并行性,而且也包括传统并行性分析尚不能有效处理的循环体和函数调用点间的粗粒度并行性.对于程序中蕴含的众多并行性,文中基于区域平均执行时间实施收益分析来选择合适的并行区域实施并行;(2)自动识别可能并行区域间数据依赖关系的数量、类型以及导致数据依赖关系的程序变量.基于文中的分析结果,作者使用面向行为的投机并行系统(behavior oriented parallelism)对SPEC2006中的4个测试用例实现了并行化.并行化后的程序在Intel和AMD多核处理器上分别得到了300%和260%的平均性能加速. 张超 王蕾 向晓娅 冯晓兵CMP体系结构上非包含高速缓存的设计及性能分析 被引量:1 2008年 半导体技术的发展使得在芯片上集成数十亿个晶体管成为可能。目前工业界和学术界倾向于采用片上多处理器体系结构(CMP),对于此类结构,芯片性能受片外访存影响较大,因此如何组织片上高速缓存层次结构是一个关键。针对此问题,提出采用非包含高速缓存组织片上最后一级高速缓存,以降低片外访存次数。并通过对Splash2部分测试程序的详细模拟,对CMP上高速缓存层次结构的不同组织方式做了比较。数据显示非包含高速缓存最多可使平均访存时间降低8.3%。同时,指出非包含高速缓存有助于节省片上资源的特性,并给出片上集成三级高速缓存后CMP上高速缓存层次结构的设计建议。 冯昊 吴承勇关键词:高速缓存 片上多处理器 工作集 二进制翻译中解析多目标分支语句的图匹配方法 被引量:6 2008年 二进制翻译技术现已成为实现软件移植的重要手段.在二进制翻译系统中,如何有效地挖掘程序的代码并对其进行高效翻译是影响系统性能的关键,而二进制代码中间接跳转语句的存在,使得静态时难以得到它的跳转目标,影响了代码的发掘率和最终的翻译效果.在通常的应用程序中,间接跳转指令经常用来实现多目标分支语义,分支目标存放在跳转表中.提出了一种解析多目标分支语句及其跳转表的方法,能够挖掘出间接跳转的目标,进而对其进行有效翻译并提高二进制翻译系统的性能.该方法提出使用语义图来对预期语义进行刻画和表达.语义图能够对考察的指令序列进行语义提取,识别出与预期语义相匹配的指令流,还可以应对编译器在不同优化选项下生成的指令,并能有效滤除不相关指令带来的干扰.实验结果表明,对于SPEC CINT2000中的部分测试用例,代码翻译的覆盖率可以提高9.85%~22.13%,相应带来的性能提升可达到8.30%~17.71%,而使用的算法时间复杂度仅为O(1). 陈龙 武成岗 谢海斌 崔慧敏 张兆庆关键词:二进制翻译 语义图 图匹配