论文部分内容阅读
随着技术和工艺的发展,处理器和存储系统的性能不匹配问题日益严重,已成为阻碍计算系统性能发挥的瓶颈。为了弥补二者问的性能差距,现代芯片中普遍引入了Cache,以期缓解这一问题。但是Cache性能的发挥依赖于对程序的计算和数据合理安排。如何有效的组织和利用内存中的数据、缓解访存性能瓶颈成为改善系统性能的重要研究方向。
循环占据了程序的主要执行时间,是访存优化的重点。本文综合考虑循环优化与局部性优化,进一步发掘传统循环优化的深度优化空间,并根据龙芯编译器的现有框架进行改良和扩展。主要的贡献如下:
1)探讨了一种新的基于数据重用的循环合并策略。使用数据重用这一局部性特征来指导循环合并,以数据的时间重用性保证合并的收益性;同时采用运行时检查策略将阻碍循环合并的可能别名检查推迟到运行时来完成,获取了更多的合并机会。
2)对循环不变式外提进行了推广,提出了有分支结构的循环不变计算外提的概念和方法,减少循环内的冗余计算和访存。
3)提出了访存亲密性的简化定义及分析算法,给出了访存亲密性的基本性质,并在此基础上提出了基于访存亲密性的数据重组框架。在亲密性指导下,针对多个数组,多个多维指针合并这两种重组模式对数据布局进行变换,有效地改善数据空间重用性。将上述方法应用于现有编译系统中,对于具有较为明显的数据重用和较高访存亲密度的Spec CPU2000/2006的部分测试例子,其性能加速最多达到55.7%。