在 I-cache 方案中,后继索引是什么?


这是最近引入的一种用于访问分支目标的方案,应用于一些最近发布的处理器,例如 Am29000 超标量、K5 和 UltraSparc。其基本思想是为 I-cache 中的每一行附加一个后继索引,该索引指向要获取的下一行,如图所示。在所有处理器中,每个缓存行可以包含 16 字节的指令。

这意味着在 AM29000 超标量和 UltraSparc 中,一个缓存行包含四个指令,而在与 x86 兼容的 K5 中,则包含可变数量的 CISC 指令。后继索引与同一行的指令并行获取。它指向下一行顺序行,或者如果当前行包含一个被猜测为已执行的分支,则指向包含第一个已执行路径指令的行。

I-cache 包含一个后继索引,该索引指向要获取的下一个指令缓存条目。后继索引指向下一行顺序行,或者在被猜测为已执行的分支的情况下,指向包含第一个已执行路径指令的行。使用这些方案的处理器的示例包括 Am29000 超标量 (1995)、K5 (1995)、UltraSparc (1995)。

UltraSparc 是第一个宣布实现 SPARC V9 ISA 的处理器。它是一个超标量全 64 位设计,其发布率为 4。UltraSparc 包括一个预解码单元。预解码单元的主要任务是部分解码指令并使用 4 位标签相应地标记它们。这些标签与 I-cache 中的每个指令一起存储,并允许快速解码。当指令加载到 I-cache 中时,预解码单元检测分支,确定相应的 BTA,并使用编译器提供的提示位进行预测。

此预测用于初始化每个两个指令(两个位)可用的预测位。预测位根据分支历史记录进行更新。后继索引和预测位保存在一个额外的 2K 缓冲区(称为 Next 字段 RAM)中,每个四个指令一个后继索引。如果预测被执行,则后继索引变为确定的 BTA 的值,否则,下一个顺序地址被视为后继索引。

然后,后继索引用作下一个指令获取地址。因此,对于已执行的预测,后继索引将执行重定向到已执行的路径。UltraSparc 采用 2 位动态预测,历史位放置在 Next 字段 RAM 中。

相反,K5 将所有后继索引初始化为下一个顺序值,并且仅当执行显示实际值不正确时才重写索引。R8000 也采用了后继索引方案。在 R8000 中,下一个顺序地址不存储在 I-cache 的后继索引字段中,而是始终动态计算。

更新于: 2021-07-23

65 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告