一句话:提出基于指令数据流的访存模式分类方法,揭示现有预取器局限,并用软件预取注入超越先进硬件预取器。
预取是缓解微处理器访存停顿的重要技术,但应用访存行为难以理解,也难以判断某应用能否从特定预取器受益。本文提出一种对应用内存访问模式进行分类的新方法:利用指令数据流信息识别包括偏移与间接访问任意组合在内的多种模式,并将其抽象为预取内核,以刻画重用、步长、引用局部性和复杂地址生成。通过分析这些模式的复杂度与频率,作者可推理预取及时性与关键性,揭示现有预取器的局限;同时能计算多数高缺失指令的下一个地址,并提出软件预取注入方法。摘要报告该方法能够优于当前最先进的硬件预取器。
Prefetching is a well-studied technique for addressing the memory access stall time of contemporary microprocessors. However, despite a large body of related work, the memory access behavior of applications is not well understood, and it remains difficult to predict whether a particular application will benefit from a given prefetcher technique. In this work we propose a novel methodology to classify the memory access patterns of applications, enabling well-informed reasoning about the applicability of a certain prefetcher. Our approach leverages instruction dataflow information to uncover a wide range of access patterns, including arbitrary combinations of offsets and indirection. These combinations or prefetch kernels represent reuse, strides, reference locality, and complex address generation. By determining the complexity and frequency of these access patterns, we enable reasoning about prefetcher timeliness and criticality, exposing the limitations of existing prefetchers today. Moreover, using these kernels, we are able to compute the next address for the majority of top-missing instructions, and we propose a software prefetch injection methodology that is able to outperform state-of-the-art hardware prefetchers.