PDede: Partitioned, Deduplicated, Delta Branch Target Buffer
摘要: 本篇文章设计了一个新的BTB组织形式,将地址划分为Region,Page,Offset三部分,然后三部分使用不同的表进行存储,从而减小分支目标重复存储的几率。最终ipc提升14.4%,BTB缺失的概率减少54.7%(这性能…)
现象
- BTB中存在一些重复的目标,浪费了空间
- 跳转的分支占所有分支的超过一半,甚至有些超过三分之二
- Region,Page,Offset三部分有不同的空间和时间局部性,并且有许多分支目标使用同样的Region和Page
- 超过60%的target在同一个Page内
方法
如图为该论文设计的结构,大致分为BTBM,Region BTB, Page BTB三部分
当搜索分支目标时,将首先搜索BTBM,然后使用Page-BTB Pointer
和Region-BTB Pointer
来搜索其他两个BTB,最后将Region, Page, Offset三部分拼接得到最终结果。
根据前面的发现60%的分支目标在同一个page内,因此BTBM中有一个Delta-Bit
位,如果Delta-Bit
为1,则分支目标在同一个Page内,直接使用Offset和当前PC拼接便可得到分支目标
此外如果假设有连续的两个序列,并且两个序列的跳转目标都相同,那么当遇到第一个指令序列时,可以将Offset存入Next Target Offset
寄存器中,如果BTBM搜索下一个序列遇到Miss,则直接使用Next Target Offset
拼接得到Target。为了判断是否存在两个序列跳转目标相同,需要添加Next Target Bit
位
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment