This paper proposes a novel way to assist conventional data address translation. The approach, PC-Indexed Data Address Translation (PCAX), uses the PC of a load instruction, and not a data virtual address, to obtain the page table entry (PTE) for the data accessed by a load instruction. PCAX is intended to be used for a small subset of the static loads in a program. We observe that: (i) a small subset of static loads is responsible for most of the misses in a data translation lookaside buffer (DTLB), and (ii) often a dynamic instance of a static load instruction accesses the same PTE as the last dynamic instance, and consider PCAX for this subset. With PCAX the effective miss rate of a conventional DTLB can be cut down by a factor of 2-3X in many cases, and even more in some cases. PCAX is also beneficial in reducing the number of secondary TLB (STLB) misses. Since the tables used for PCAX can be accessed alongside instruction fetch, they can be slow, yet frequently provide a valid PTE even before the data address calculation. This results in a performance improvement, and reduced data address translation energy, in most cases.
翻译:本文提出了一种辅助传统数据地址翻译的新方法。该方法称为PC索引数据地址翻译(PCAX),它利用加载指令的程序计数器(PC)而非数据虚拟地址,来获取加载指令所访问数据的页表项(PTE)。PCAX旨在用于程序中静态加载指令的一个小子集。我们观察到:(i)一小部分静态加载指令导致了数据翻译后备缓冲器(DTLB)中的大部分缺失;(ii)静态加载指令的动态实例通常访问与上一个动态实例相同的PTE,因此考虑对该子集应用PCAX。在许多情况下,使用PCAX可将传统DTLB的有效缺失率降低2-3倍,在某些情况下甚至更多。PCAX还有助于减少二级TLB(STLB)的缺失次数。由于PCAX使用的表可以在指令获取的同时被访问,这些表可以设计得较慢,却仍能在数据地址计算完成前频繁提供有效的PTE。这在大多数情况下带来了性能提升,并降低了数据地址翻译的能耗。