一句话:提出 Shotgun,以新型 BTB 组织在低存储开销下实现高效 BTB 导向前端预取,缓解服务器工作负载前端瓶颈。
服务器工作负载因软件栈深、指令工作集大而长期受前端瓶颈困扰;现有 L1-I 与 BTB 预取技术必须在性能和元数据存储开销之间折中。本文提出 Shotgun,一种由新型 BTB 组织驱动的 BTB 导向前端预取器。它通过精确跟踪应用全局控制流(如函数与陷阱入口),并用紧凑的区域编码汇总各代码区域内的局部控制流,从而在 BTB 中维护应用指令足迹的逻辑映射;由于局部控制流空间局部性高,该映射存储开销低。Shotgun 将大部分 BTB 容量用于全局控制流分支及其目标区域的空间编码,实现高效预取。在多种商业工作负载上,以相当于传统 BTB 的存储预算,Shotgun 相比最先进的 BTB 导向前端预取器最高提升 14%。
The front-end bottleneck is a well-established problem in server workloads owing to their deep software stacks and large instruction working sets. Despite years of research into effective L1-I and BTB prefetching, state-of-the-art techniques force a trade-off between performance and metadata storage costs. This work introduces Shotgun, a BTB-directed front-end prefetcher powered by a new BTB organization that maintains a logical map of an application's instruction footprint, which enables high-efficacy prefetching at low storage cost. To map active code regions, Shotgun precisely tracks an application's global control flow (e.g., function and trap routine entry points) and summarizes local control flow within each code region. Because the local control flow enjoys high spatial locality, with most functions comprised of a handful of instruction cache blocks, it lends itself to a compact region-based encoding. Meanwhile, the global control flow is naturally captured by the application's unconditional branch working set (calls, returns, traps). Based on these insights, Shotgun devotes the bulk of its BTB capacity to branches responsible for the global control flow and a spatial encoding of their target regions. By effectively capturing a map of the application's instruction footprint in the BTB, Shotgun enables highly effective BTB-directed prefetching. Using a storage budget equivalent to a conventional BTB, Shotgun outperforms the state-of-the-art BTB-directed front-end prefetcher by up to 14% on a set of varied commercial workloads.