什么是 BTAC 方案?


该方案采用了一个更大的缓存,称为分支目标地址缓存 (BTAC),用于加速对分支目标的访问,如图所示。BTAC 包含一组当前使用的分支地址和分支目标地址,并且可以相对快速地访问。

当实际指令获取地址是分支地址,并且 BTAC 中存在等效条目时,分支目标地址将与分支指令在同一周期内获取。然后,此 BTA 用于在下一周期访问分支目标指令。

分支目标地址缓存 (BTAC) 包含分支目标地址 (BTA)。这些 BTA 与获取分支指令同时从 BTAC 读取。

通过这种方式,分支目标指令 (BTI) 可以立即在分支指令之后获取,即无需任何空闲周期。此外,BTAC 方案甚至有可能实现零周期分支。使用零周期分支,第一个目标指令可以在最后一个顺序指令(在分支之前)之后立即获取,而无需任何延迟。

对于零周期分支,必须与分支之前的指令一起访问分支目标地址 (BTA)。然后,BTAC 必须包含分支地址 (BA) 之前的指令获取地址,而不是分支地址 (BA)。对于具有 4 字节指令的标量处理器,这将是地址 BA – 4。

BTAC 方案由 Lee 和 Smith(1984 年)提出,并被称为分支目标缓冲区设计。该方案已在一些最近的处理器中实现,如表所示。BTAC 条目的数量从 32 到 4K 不等。

使用 BTAC 方案的处理器示例

处理器BTAC 条目数BTAC 的实现
基于 ES/9000 520 的处理器 (1992p)4k2 路关联
奔腾 (1994)256全关联
MC 68060 (1993)2564 路关联
PA 8000 (1995)32全关联
PowerPC 604 (1994)64全关联
PowerPC 620 (1995)256全关联

BTAC 方案的实现存在一些差异,尤其是在以下方面:

  • BTAC 是实现为 2 路、4 路还是全关联缓存。

  • 如何初始化 BTAC。

  • 是否为所有最近的分支保留 BTAC 中的条目,或者仅为最近获取的分支保留条目(在后一种情况下,BTAC 方案还执行隐式动态预测)。

  • 如果 BTAC 中没有空间容纳新条目,如何选择要覆盖的条目。

  • 如果处理器使用预测位,它们是包含在 BTAC 中还是单独的 BHT 中。

更新于: 2021-07-23

347 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告