论文部分内容阅读
在过去的几十年间,处理器主频与内存访问速度间的差距的日益增大,使得许多程序的性能瓶颈集中在内存访问,体系结构中引入了多级高速缓存的结构(cache)来解决内存访问的瓶颈,程序中内存访问是否有良好的局部性是能否充分发挥cache作用的关键。数据变换通过改变数据的内存布局改进cache的空间局部性,是一种重要的局部性优化技术。结构体成为很多现代应用程序中重要的数据结构,并且带有更多的动态特性,结构体的域成员的布局优化,对于改进这类程序的性能是非常重要的。域成员的局部优化的主要困难是如何在全程序范围内,进行有效的访问模式的分析和优化方案的选择。
本文分析了现有的多数算法中,直接把域亲和关系对应到布局优化方案所带来的问题。提出了不确定的域亲和组获取算法、多候选的优化方案筛选算法,并结合量化的收益模型,在不明显增加复杂度的情况下,找到了更好的优化方案。在Pathscale编译平台上实现了该框架,对于SPEC CPU2000和SPEC CPU2006的4个程序的实验结果表明,本算法能找到更好的优化方案,获得很好的性能加速。
本文还探索了关联结构体的数据布局优化的问题,给出了初步的解决方案,并取得了明显的性能。