论文部分内容阅读
数据预取技术是缓解存储墙问题的一个非常有效的方法,对多核系统也同样如此。现有的预取机制很多是通过识别缺失地址流的模式和相关性进行操作。空间相关和时间相关预取分别通过识别程序访存的空间规律和时间规律来预测程序未来的访存行为。时间相关不能预测冷缺失,空间相关预取不能预测基于指针的依赖关系,而指针在程序中非常常见。因此,本文试图结合空间相关和时间相关预取以提升数据预取的性能。本文首先总结了现有数据预取方法的优缺点,并分析了访存缺失地址序列的空间和时间相关性,然后提出了时空结合的数据预取机制。该机制对全局历史缓冲区的结构进行了修改和扩展,并新增了局部增量缓冲区结构,以便对空间局部性较强的访存行为优先使用空间相关进行预取;反之,对空间局部性较差的访存行为使用时间相关进行预取。因此,该机制不仅可捕获局部范围内有空间规律的访存模式,同时还能捕获全局范围内空间跨度较大的重复访存模式。本文提出的预取机制还能适应于片上多处理器。在多核系统上由于多个线程经常使用相近的数据集和指令,同时线程会在不同核上进行迁移,导致了不同核的缺失地址之间通常会存在一定的空间和时间相关性。为了能同时利用片上多处理器中多个核之间的相关性,本文对前述机制在多核上加以完善,引入了核间相互协作因素,首先寻找核内缺失地址的相关性,在核内探索不到的情况下再寻找与其它核的缺失地址之间的相关性,因此可以利用其它核的访存行为来预测本核可能即将发生的访存行为。本文以SESC模拟器为测试环境,实验结果表明,本文提出的数据预取机制可显著提高系统的性能。单核情况下,该机制可使SPEC2000浮点基准测试程序的平均性能提高26%。多核情况下,该机制可使SPLASH2的平均性能提高12.6%。与扩展应用在多核上的C/DC预取相比较,性能提高了3.8%。