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条指令。但是由于它是一条分支指令, 因此在解码时可能指向其他指令。因此, 第四条指令将一直保持到执行分支指令为止。当它执行后, 第四条指令被复制回去, 其他阶段照常继续。
推荐阅读
- 检查一个字符串的最大出现字符是否相同
- Python旋转列表的方式
- 用数组的总大小和该元素的频率之差替换每个元素
- Python继承中的方法解析顺序
- 对于给定数组的任何排列,最大化第一个元素的按位与,并保留其余元素
- 如何使用PHP通过HTML表单在JSON文件中附加数据()
- 将给定矩阵转换为排序的螺旋矩阵
- 查找一个N x N网格,其每行和每列的xor相等
- 算法题(满足给定方程的最小正整数X)