在计算机体系结构中,FX流水线是如何实现的?


FX流水线可以实现为通用单元或专用单元。此外,处理器可以包含单个通用单元或多个通用单元。

单个通用FX单元

所有早期的和一些当前的设计都采用单个通用FX流水线,这是一个单个FX单元,如图所示。这里的“通用”指的是执行处理器所有整数和布尔运算的能力。除了20世纪80年代早期的流水线处理器外,i486、IBM Power1 (RS/6000)、R (4000)、HP 7100、DEC α 21064、PowerPC 601和Power603都具有单个通用FX流水线,因此只有一个FX单元。

所有早期设计和一些当前设计,例如i486,也使用相同的通用FX流水线来执行加载/存储和分支指令。这似乎很自然,因为加载/存储和控制转移指令需要地址计算,这可以使用整数流水线轻松完成。

缺点是所有加载/存储和分支都限制为与整数和布尔运算顺序执行,这大大影响了性能。

多个通用FX单元

通过应用多个FX流水线,即多个流水线FX单元,可以进一步提高性能。关于FX单元的数量,值得参考动态指令分配,这表明所有执行指令中30-40%是整数和布尔运算。因此,为了利用更多并行性,提供多个FX单元似乎是不可避免的。

在这种方法中,必须指出整数除法通常不是流水线的。对于所有处理器,除法都需要相当多的周期(大约10-100个)。

有两种可能的方法来增加FX流水线的数量,第一种方法是使用多个通用流水线,从而为所有支持的整数和布尔指令使用多个通用FX单元。另一种可能性是为不同类别的整数和布尔指令采用多个专用流水线,实现为多个专用FX单元。

专用FX单元

另一种方法是使用一组专用单元,例如简单的FX单元、乘法器/除法器或单独的乘法器和除法器、移位器等等。如图所示,早期的1960 CA(第一个超标量处理器)或一些高端超标量处理器,如PowerPC 604、PowerPC 620或R8000,都是这种方法的例子。

除了早期的1960 CA之外,这些处理器通常包含两个简单的FX单元(提供乘法/除法功能),并使用公共专用乘法器/除法器单元(如PowerPC 604或R8000)或几个单独的乘法器和一个单独的除法器(如MC 88110)来实现多周期整数运算。

更新于:2021年7月20日

239 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告