计算机体系结构中的计算/获取方案是什么?


这种方案是访问分支目标的常用方法。首先,分支目标地址 (BTA) 由流水线或专用加法器计算。因此,获取匹配的分支目标指令 (BTI)。在当前处理器中,这定义了对 I 缓存的访问,而在没有 I 缓存的初始流水线处理器中,则访问内存。

如图所示,位深入到计算/获取方案的细节中。指令获取地址 (IFA) 保存在指令获取地址寄存器 (IFAR) 中,在顺序环境中通常称为程序计数器 (PC)。它可以启动特定程序的执行,IFA 设置为其初始值,称为 IIFA(初始指令获取地址)。

在没有分支的情况下,每次访问后都会递增 IFA 以获取下一个顺序地址。遇到分支时,下一个顺序地址会被计算出的分支目标地址 (BTA) 覆盖,并获取相应的指令缓存 (I 缓存) 条目。

检测到分支时,会计算分支目标地址 (BTA)。在这种情况下,下一个顺序地址会被 BTA 覆盖。因此,BTA 成为下一个指令获取地址 (IFA)。然后在下一个周期,从指令缓存 (I 缓存) 读取相应的分支目标指令 (BTI)。

这种方案应用于早期的标量处理器和一些最近的标量和超标量处理器,包括 Z80000 (1984)、i486 (1989)、MC 68040 (1990)、Sparc CY7C601 (1998)、SuperSparc (1992p)、Power1 (1990)、Power2 (1993)、PowerPC 601 (1993)、603 (1993)、α 21064A (1994)、α 21164 (1995)、R4000 (1992)、R10000 (1996)。

它可以假设一个缓存,其缓存行长度为 16 字节,并且能够在每个周期内提供四个 4 字节指令。它可以假设一个快速缓存,在周期 i 中给定的地址的内容将在下一个周期(即周期 i + 1)提供。此外,它可以假设分支目标指令 (BTI) 对齐,以便第一个目标指令始终位于第一个位置,即图中所示的 I 位置。

计算/获取方案很简单,不需要任何额外的硬件。这是所有早期和一些最近的标量处理器(如 i486 和 R4000)中使用的标准分支目标访问方案。

一些超标量处理器也采用这种简单的方案,例如 SuperSparc、Power1、Power2 和第一个 PowerPC 实现(例如 PowerPC 601 和 PowerPC 603)以及 α 实现 α21064、α 21064A 和 α21164。

这种方法的缺点是 BTA 计算和 BTI 访问的顺序方式。这可能会导致相当大的已获取路径访问惩罚,除非在足够早地检测到分支并执行 BTA 计算时。

更新于: 2021-07-23

244 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告