CHiRP 如何预测控制流历史复用以替换 TLB 条目?

CHiRP 用控制流历史预测 L2 TLB 中哪些条目已死,在 870 条轨迹上把缺失率较 LRU 降低 28.21%。

直接答案

CHiRP 预测一条已缓存的地址翻译在被逐出前是否还会被复用,并优先逐出它判断为已死的条目。在 4KB 页、1024 条目、8 路组相联的模拟 L2 TLB 上,它在 870 条轨迹上把每千条指令缺失数平均降低 28.21%,高于 LRU;SRRIP、GHRP 和 SHiP 分别降低 10.36%、9.03% 和 0.88%。

1篇文献引用

本文由 WisPaper 驱动的搜索和论文分析生成。

TLB 的复用粒度比缓存更粗

翻译后备缓冲器(TLB)缓存虚拟地址到物理地址的映射,让大多数内存访问不必走页表遍历。TLB 满时,替换策略要决定丢弃哪条映射。论文指出,这一选择此前很少被研究:已有 TLB 工作大多使用 LRU 或随机替换,或者转而降低缺失代价、扩大 TLB 容量。

作者从为末级缓存设计的预测式替换策略出发。这类策略把预测为已死、即在被逐出前不会再被复用的块视为好的逐出对象。他们把 SRRIP、SHiP 和 GHRP 用于 TLB,发现收益很小。原因在于粒度:许多程序计数器(PC)会映射到同一个 TLB 条目,数量约为映射到同一缓存块的 64 倍,而且每个 PC 究竟带来复用还是逐出,取决于上下文。因此,适用于缓存行的签名并不能自动识别出已死的 TLB 条目。

签名由控制流构成,而不只看 PC

CHiRP 把四个特征组合成一个签名:64 位的 PC 全局路径历史、64 位的条件分支地址历史、64 位的无条件间接分支地址历史,以及右移两位的当前 PC。它把这些分量做异或得到签名,再用 Robert Jenkins 的 64 位混合函数做哈希,并对表大小取模,得到一个预测表的索引。

两个设计选择来自论文中的测量。第一,全局路径历史只移入 PC 的两个低位(第 2、3 位)和两个零位,因为离线训练的 ADALINE 权重分析显示,这两位与 TLB 复用的相关性最强。第二,分支历史记录的是分支 PC,而不是分支结果或分支目标。作者报告,仅用全局 PC 历史时,历史长度超过约 15 后收益不再增加;加入分支路径历史后,CHiRP 能从长于 30 的历史中获益。

计数器学习哪些签名先于逐出出现

每个 TLB 条目携带一个 16 位签名、一位表示是否已死的预测位、一个首次命中位,以及三位 LRU 位置。预测表存放以哈希签名为索引的两位计数器。当某条目未被复用就被逐出时,其签名对应的计数器加一;当条目被复用时,计数器减一。计数器超过阈值就把该条目标记为已死,选择牺牲条目时先挑已死条目,再退回 LRU。

训练被刻意做得稀疏。预测表只在条目首次命中时更新,以及在某组没有已死条目而发生缺失时更新。论文报告,这使预测表访问次数降到全部 TLB 访问的 10.14%,比每次访问都要查表的 SHiP 和 GHRP 少约 90%。选择性命中更新把更新限制在与上次访问不同的 TLB 组的命中上,论文称它通过减缓计数器饱和,进一步把平均 MPKI 降低 5.85%。

相对 LRU 与缓存策略的实测差距

核心比较指标是每千条指令缺失数(MPKI),测试配置为 4KB 页、1024 条目、8 路组相联的 L2 TLB。相对 LRU,CHiRP 平均降低 MPKI 28.21%。SRRIP 为 10.36%,GHRP 为 9.03%,SHiP 仅为 0.88%。这些数字是 870 条由 Qualcomm 提供的轨迹上的平均值,覆盖 SPEC、数据库、加密、科学计算、Web 和大数据等类别,用近似时序的性能模型模拟得到。

MPKI 并不等于加速比。论文还报告,在 150 周期页表遍历延迟下几何平均加速 4.8%,并在 20 至 340 周期的 L2 TLB 缺失代价范围内测量了加速比。比较不同策略的读者应把这两个指标分开看:28.21% 的缺失率降幅和 4.8% 的加速比回答的是不同问题,而加速比取决于所假设的缺失代价。

移位与缩放让较小的表仍能收敛

TLB 中的别名问题比缓存更难控制,因为太多 PC 共享同一个条目。如果计数器频繁改变方向,小表就会失效。CHiRP 的应对方式是在签名各分量的特定位置注入并移位前导零,采用作者归功于 LeCun 和 Hinton 的移位与缩放技术,让不太显著的历史位在学习过程中更不显眼。

论文量化了其中一步:把条件分支路径历史加入签名可降低 MPKI 23.88%,再在路径历史中加入两个前导零后,这一降幅提高到 26.98%。作者称,由此得到的表在条目数比 GHRP 少三倍时仍能收敛。1024 条目配置的存储开销合计 2.775KB 至 8.265KB,取决于计数器数量,其中包括 2KB 签名,以及预测位和首次命中位各 128B。

结果尚未覆盖的范围

所有报告的数字都来自模拟,而非流片芯片。轨迹来自工业界,性能模型是近似时序的,因此 28.21% 的 MPKI 降幅和 4.8% 的加速比是在所述配置下的模型结果。

研究把页大小固定为 4KB。作者明确把混合页大小留待后续工作,并指出当一个条目覆盖 4KB、另一个覆盖 2MB 时,替换不再是纯粹的 Bélády 式问题,而必须权衡逐出不同大小条目的不同代价。他们还指出,用于更大缓存结构的采样方法在 L2 TLB 中不奏效,这正是 CHiRP 改为在 TLB 条目粒度上泛化学习的原因。

关键在于签名设计,而非表的大小

论文中最具决策价值的结论是一个比较,而不是单个数字:在同样的 1024 条目 L2 TLB 上,围绕控制流历史和 TLB 特有比特权重构建的签名,收益远高于直接移植缓存策略。CHiRP 相对 LRU 的平均 MPKI 降幅 28.21%,约为 SRRIP 的 10.36% 的 2.7 倍,也超过 GHRP 的 9.03% 的三倍;而 SHiP 的 0.88% 说明,在缓存中有效的基于 PC 的签名几乎无法迁移过来。

对权衡 TLB 替换方案的设计者来说,这一排序说明杠杆在于签名捕捉哪些特征、以及如何抑制别名,因为 CHiRP 只用一个预测表、且仅在 10.14% 的 TLB 访问中查表就取得了这一结果。作者留下的开放问题是:当逐出代价取决于条目大小时,这一优势在混合页大小下是否仍然成立。

本文引用的文献

1

CHiRP: Control-Flow History Reuse Prediction

在 4KB 页、1024 条目、8 路组相联的模拟 L2 TLB 上,CHiRP 在 870 条轨迹上把每千条指令缺失数平均降低 28.21%,高于 LRU;SRRIP、GHRP 和 SHiP 分别降低 10.36%、9.03% 和 0.88%。