Boomerang(回旋镖): a Metadata-Free Architecture for Control Flow Delivery
-
摘要:
- 问题:现在服务器的工作负载的具有大量的指令,占用更深的分层软件堆栈,整个堆栈的活动指令工作集很容易到MB,已经容易导致指令cache缺失率增加,从而导致前端停顿增加,另一方面这种大规模的指令工作集中的大量的分支也会使得BTB缺失,而导致流水线刷新。之前的解决方法都需要专用的元数据结构,因此需要大量的额外存储,同时更加复杂
- 论文的目的:希望减少或者不使用之前技术需要的元数据成本,来实现高性能的控制流交付(delivery)
- 论文的工作:
- 解释了基于分支预测器的定向预取有效的原因
- 提出了Boomerang,一种可提供高性能控制流交付的无元数据的结构。通过利用基于分支预测器的定向预取器,发现并且预填充I-cache块和BTB的缺失表项。在这种结构中,识别和填充BTB缺失表项不需要额外的硬件开销
- 实验表明:Boomerang的性能和最新的控制流交付策略基本匹配,同时不需要后者如此多的元数据开销和复杂性
-
介绍:
- 降低I-cache和BTB缺失率的方法:硬件预取
- I-cache的预取器主要通过依靠时序,记录和重播长序列指令,来达到降低缺失率,但是为了覆盖更多的指令,这些技术需要非常多的元数据来存储和索引这些记录的序列
- BTB方面,基于空间和时间局部性的预取器通过采用两级的BTB来解决一级BTB太小的问题,但是第二级的BTB仍旧需要超过100KB的存储开销
- 同时解决BTB和I-cache:Confluence技术,由于I-cache块携带着
- 降低I-cache和BTB缺失率的方法:硬件预取