Mic*_*uff 4 intel branch-prediction
分支预测逻辑有多"粘性"?如果从指令缓存中删除代码,统计数据是否保持不变?
换句话说,如果代码很复杂或者没有批量处理,那么分支预测是否会有所帮助?
让我们假设商品英特尔服务器硬件比2011年更新.
分支预测器的确切工作方式因处理器而异.但几乎所有非平凡的分支预测器都需要程序中分支的历史才能运行.
此历史记录记录在分支历史记录缓冲区中.
它们有多种口味.最常研究的两个是:
现代处理器将有多个缓冲区用于不同目的.在所有情况下,缓冲区的大小都是有限的.因此,当他们用完房间时,需要逐出某些东西.
英特尔和AMD都没有提供有关其分支预测器的详细信息.但据信,两家公司目前的处理器可以追踪数千个分支及其历史.
回到这一点,分支预测变量使用的数据只要保留在历史缓冲区中就会"坚持".因此,如果代码很小并且表现良好足以不超出缓冲区,则预测变量的性能最佳.
请注意,指令和uop缓存虽然独立于分支预测器,但会表现出相同的效果.因此,在尝试构建测试用例和基准以研究其行为时,可能难以挑出分支预测器.
所以这是性能中的另一个案例,其中具有局部性具有优势.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |