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 条指令被同时提取。但由于它是一条分支指令,它在解码时可能会指向其他一些指令。因此,第四条指令被保持,直到分支指令被执行。当它被执行时,第四条指令被复制回来,其他阶段照常继续。