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

📅  最后修改于: 2021-06-28 14:19:41             🧑  作者: 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条指令。但是由于它是一条分支指令,因此在解码时可能指向其他指令。因此,第四条指令将一直保持到执行分支指令为止。当它执行后,第四条指令将被复制回去,其他阶段将照常继续。