摘要: 本篇文章设计了一个新的BTB组织形式,将地址划分为Region,Page,Offset三部分,然后三部分使用不同的表进行存储,从而减小分支目标重复存储的几率。最终ipc提升14.4%,BTB缺失的概率减少54.7%(这性能…)

现象

  1. BTB中存在一些重复的目标,浪费了空间
  2. 跳转的分支占所有分支的超过一半,甚至有些超过三分之二
  3. Region,Page,Offset三部分有不同的空间和时间局部性,并且有许多分支目标使用同样的Region和Page
  4. 超过60%的target在同一个Page内

    方法


    如图为该论文设计的结构,大致分为BTBM,Region BTB, Page BTB三部分

当搜索分支目标时,将首先搜索BTBM,然后使用Page-BTB PointerRegion-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