论文部分内容阅读
计算单元与存储单元分离的冯诺依曼架构,使数据必须经过搬运才能被CPU处理。传统的顺序预取和Stride预取技术起到了将处理器随后要用到的数据提前取到片上Cache的作用。但是,对于基于指针操作的应用,由于处理器很难对指针的内容进行准确预测,因此传统预取方法不能满足链表、图等指针追逐特点比较明显的应用程序的数据预取需求。 为了对处理器中指针追逐的访存模式进行优化,本文提出了ILAMP(InstructionLabel Assisted Memory Prefetching)技术,一种基于指令标签提示的预取机制。该机制是在指令集架构中添加新的访存指令(LD_ PCHS),该指令在处理器译码阶段产生加载指针的访存标签(PCHS_FLAG),在Cache缺失的情况下,一直传递到内存控制器。当加载的指针返回到内存控制器时,内存控制器中的预取器逻辑可以根据标签提示,提取该指针、进行虚实地址转换后发出预取请求。当依赖于指针访存的新请求进入内存控制器时,就可以直接命中,从而省去了访问DRAM存储器的延迟开销。 本文主要贡献有三点: 1)提出并实现了可产生标签的访存指令,对访存内容进行区分; 2)设计并实现了集成了虚实地址转换部件的内存控制器,从而支持内存侧虚拟地址预取。 3)专门的预取缓冲器,用于暂存指针预取结果,避免了对Cache的污染;并进行了优化设计。 实验结果表明,本文提出的ILAMP技术与激进的Stride预取方案相比,ILAMP预取技术降低LLC读请求的平均访问延迟在9个测试程序中的平均值为15%,最高到19%;Olden测试集的预取准确性的平均值高于77%,图计算应用程序的预取准确度达到96%以上。对于设计的开销,ILAMP技术消耗存储器带宽在6%到10%之间,硬件的存储开销约为1KB。