cpu-architecture - 为什么在多周期数据路径中使用 A 和 B 寄存器?

为什么需要 RegisterFile 的 ReadData1 和 ReadData2 输入的寄存器 A 和 B?难道不能直接使用寄存器文件的 ReadData1 和 ReadData2 输出上的 values 吗?

指令寄存器已经加载了一条指令,所以 IR 的 value 是固定的,这意味着在一条指令中 $rs, $rt, $rd reg 号显然是相同的。因此,寄存器文件的 ReadRegister1 和 ReadRegister2 输入总是有相同的 values。因此,RD1 和 RD2 输出上的 values 是相同的,除非 RegisterFile 中的相应寄存器被覆盖。

这意味着 A 和 B 寄存器仅对于需要在前一个周期覆盖的 $rs 或 $rd 寄存器的 values 的指令是必需的。谁能给我一个这样的指令的例子。

回答1

一般模式是在时钟周期内:在时钟开始时,一些寄存器将 values 馈送到计算逻辑,计算逻辑在时钟结束时将 values 馈送到(相同或其他)寄存器时钟,以便它可以在下一个周期重新开始。

在单周期数据路径中,PC 中的 value 启动周期过程,在周期结束时,PC 寄存器被更新以与另一个 value 重复一个新周期。在此过程中,注册文件既被查阅,也(可能)被更新。您可能会注意到这些 A 和 B 寄存器不存在于单周期数据路径中。

您是正确的,那些 values 在多周期数据路径上执行任何一条指令期间都不会改变。

但是,多周期处理器使用多个周期来执行一条指令(以便它可以加快时钟速度)。为了支持该处理器设计中的连续周期,使用了一些内部寄存器——它们捕获前一个周期的输出,以便下一个周期做一些不同的事情。

多周期数据路径图的问题在于它们没有清楚地说明处理器的哪个部分在什么周期中运行。那些 A 和 B 寄存器用于支持周期边界,因此解码发生在一个周期中,而算术/ALU 发生在另一个周期中。 (如果没有这些寄存器,处理器将不得不在随后的周期中再次执行解码,这会降低时钟速率并破坏多周期数据路径的特性。)

pipeline 数据路径图中的边界更加清晰。搜索“MIPS pipeline 数据路径”。 (请注意,一些 pipeline 数据路径图显示了阶段之间的寄存器,而其他数据路径图只是概述了阶段中的内容而没有显示这些寄存器。)大竖线是寄存器,它们将 pipeline 阶段分开。当然,pipeline 处理器并行执行所有 pipeline 阶段,尽管理论上类似的边界适用于多周期处理器中的周期。请注意,pipeline 数据路径中的 ID/EX pipeline 寄存器用于多周期数据路径中的 A 和 B 寄存器。

相似文章

随机推荐

最新文章