Skip to content

spp prefetcher

功能:

  1. 压缩历史(第一个看到和历史相关的工作)。
  2. 实现的是物理地址的预取,貌似还实现了超过页边界的预取。
  3. 利用置信度来节流。
  4. 没有用到 pc 等额外的信息。

投机深度

对于不同的 workload,不同的预取器要设计不同的投机深度。不能将投机深度拓展至无限大的原因是,到了某一个时间点,因为程序段的不同内存访问模式,到了某一个时间点,投机产生的指令流会和实际的指令流产生偏移,这时候投机深度的增加只会浪费内存的带宽并产生污染。

复杂地址访问模式

如果地址的访问模式很长,即使呈现出了 delta 差值的特征,存储这些也需要空间浪费。

前瞻或者对于路径的记录,有助于发出下一个的预取请求。

所谓的 lookahead 的模式和值预测其实很像,这种 lookahead 往往在查找到数据的时候还能递归往下。这种递可能会形成一个死循环,因此在设计的时候,会定死一个预取器的投机深度。但是对于不同的 workload,投机深度应该更深才好。

还是物理地址预取的问题,当一个地址模式即使映射到了不同的物理页,也不应该重新学习。

设计

链式的可信度相乘机制,递归的往下,并乘出置信度,再决定是不是递归向下。

可能是因为记录了 delta 路径的信息,到了新的物理页面的时候,这部分可以拿过来。

特点

  1. 递归:跟 CDP 一样在表上递归。
  2. 跨物理页:在 GHR 上记录跨页的信息。进入到新的页能学习到旧的模式,避免重新学习。
  3. 动态流量控制和基于MSHR的流量控制。

问题

真的能很好的学习乱序吗?多预取器的情况下怎么区别地址模式。