📜  算术流水线和指令流水线

📅  最后修改于: 2021-09-28 11:06:03             🧑  作者: Mango

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. 将结果存储在适当的位置

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

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

例子:

此处的指令是在第 1 段中的第一个时钟周期提取的。
现在在下一个时钟周期解码,然后取操作数,最后执行指令。我们可以看到,由于流水线,获取和解码阶段在这里重叠。当第一条指令被解码时,下一条指令被流水线取出。

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