算术管道和指令管道详细指南

2021年4月29日18:19:45 发表评论 979 次浏览

1.算术管道

算术流水线将算术问题分成各种子问题, 以便在各种流水线段中执行。它用于浮点运算, 乘法和各种其他计算。图中显示了用于浮点加法的过程或流程图算术管线。

算术管道和指令管道1

使用算术管道进行浮点加法运算:

在这种情况下, 将执行以下子操作:

  1. 比较指数。
  2. 对齐尾数。
  3. 加上或减去尾数。
  4. 归一化结果

首先比较两个指数, 然后选择两个指数中较大的一个作为结果指数。然后, 指数的差异决定了我们必须将较小的指数向右移动多少次。然后, 在移动指数后, 两个尾数都对齐。最后, 将两个数字相加, 然后在最后一个片段中对结果进行归一化。

例子:

让我们考虑两个数字,

X=0.3214*10^3 and Y=0.4500*10^2

说明:

首先将两个指数相减得到3-2 = 1。因此3成为结果的指数, 较小的指数向右移动1次, 得出

Y=0.0450*10^3

最后将两个数字相加产生

Z=0.3664*10^3

由于结果已经标准化, 结果保持不变。

2.指令流水线:

这样, 可以通过重叠指令周期的获取, 解码和执行阶段来执行指令流。此类技术用于增加计算机系统的吞吐量。指令流水线从内存中读取指令, 而其他指令正在流水线的其他段中执行。因此, 我们可以同时执行多个指令。如果将指令周期划分为等长的段, 则流水线效率更高。

在最一般的情况下, 计算机需要按照以下步骤顺序处理每条指令:

  1. 从内存(FI)提取指令
  2. 解码指令(DA)
  3. 计算有效地址
  4. 从内存(FO)提取操作数
  5. 执行指令(EX)
  6. 将结果存储在正确的位置

指令流水线的流程图如下所示。

算术管道和指令管道2

让我们来看一个指令流水线的例子。

例子:

算术管道和指令管道3

在这里, 指令是在段1的第一个时钟周期获取的。

现在在下一个时钟周期对其进行解码, 然后获取操作数, 最后执行指令。我们可以看到, 这里获取和解码阶段由于流水线而重叠。在对第一条指令进行解码时, 流水线将提取下一条指令。

在第三条指令的情况下, 我们看到这是一条分支指令。在这里, 当它被解码时, 同时提取第4条指令。但是由于它是一条分支指令, 因此在解码时可能指向其他指令。因此, 第四条指令将一直保持到执行分支指令为止。当它执行后, 第四条指令被复制回去, 其他阶段照常继续。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: