1.算术管道:
算术流水线将算术问题分为各种子问题,以便在各种流水线段中执行。它用于浮点运算,乘法和各种其他计算。图中显示了用于浮点加法的过程或流程图算术管道。
使用算术管道进行浮点加法运算:
在这种情况下,将执行以下子操作:
- 比较指数。
- 对齐尾数。
- 加上或减去尾数。
- 归一化结果
首先比较两个指数,然后选择两个指数中较大的一个作为结果指数。然后,指数的差异决定了我们必须将较小的指数向右移动多少次。然后,在指数移动后,两个尾数都对齐。最后,将两个数字相加,然后在最后一个片段中对结果进行归一化。
例子:
让我们考虑两个数字,
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.指令流水线:
在这种情况下,可以通过重叠指令周期的获取,解码和执行阶段来执行指令流。此类技术用于增加计算机系统的吞吐量。指令流水线从内存中读取指令,而其他指令正在流水线的其他段中执行。因此,我们可以同时执行多条指令。如果将指令周期划分为相等持续时间的段,则流水线将更有效。
在最一般的情况下,计算机需要按照以下步骤顺序处理每条指令:
- 从内存(FI)提取指令
- 解码指令(DA)
- 计算有效地址
- 从内存(FO)提取操作数
- 执行指令(EX)
- 将结果存储在正确的位置
指令流水线的流程图如下所示。
让我们来看一个指令流水线的例子。
例子:
在这里,指令是在段1的第一个时钟周期获取的。
现在,在下一个时钟周期对其进行解码,然后获取操作数,最后执行指令。我们可以看到,这里获取和解码阶段由于流水线而重叠。在对第一条指令进行解码时,流水线将提取下一条指令。
在第三条指令的情况下,我们看到这是一条分支指令。在这里,当它被解码时,同时提取第4条指令。但是由于它是一条分支指令,因此在解码时可能指向其他指令。因此,第四条指令将一直保持到执行分支指令为止。当它执行后,第四条指令将被复制回去,其他阶段将照常继续。