spp prefetcher
功能:
- 压缩历史(第一个看到和历史相关的工作)。
- 实现的是物理地址的预取,貌似还实现了超过页边界的预取。
- 利用置信度来节流。
- 没有用到 pc 等额外的信息。
投机深度
对于不同的 workload,不同的预取器要设计不同的投机深度。不能将投机深度拓展至无限大的原因是,到了某一个时间点,因为程序段的不同内存访问模式,到了某一个时间点,投机产生的指令流会和实际的指令流产生偏移,这时候投机深度的增加只会浪费内存的带宽并产生污染。
复杂地址访问模式
如果地址的访问模式很长,即使呈现出了 delta 差值的特征,存储这些也需要空间浪费。
前瞻或者对于路径的记录,有助于发出下一个的预取请求。
所谓的 lookahead 的模式和值预测其实很像,这种 lookahead 往往在查找到数据的时候还能递归往下。这种递可能会形成一个死循环,因此在设计的时候,会定死一个预取器的投机深度。但是对于不同的 workload,投机深度应该更深才好。
还是物理地址预取的问题,当一个地址模式即使映射到了不同的物理页,也不应该重新学习。
设计
链式的可信度相乘机制,递归的往下,并乘出置信度,再决定是不是递归向下。
可能是因为记录了 delta 路径的信息,到了新的物理页面的时候,这部分可以拿过来。
特点
- 递归:跟 CDP 一样在表上递归。
- 跨物理页:在 GHR 上记录跨页的信息。进入到新的页能学习到旧的模式,避免重新学习。
- 动态流量控制和基于MSHR的流量控制。
问题
真的能很好的学习乱序吗?多预取器的情况下怎么区别地址模式。