流水线与指令重排序
发布时间
阅读量:
阅读量
流水线是一种指令级并行技术。
指令执行步骤
- 指令取值 IF (从内存中读取指令信息)
- 指令译码与操作数字段提取 ID (将指令送入解码单元完成指令解析)
- 指令执行及有效性地址计算 EX (协调CPU、内存及I/O设备之间的数据传输关系)
- 存储器访问 MEM
- 目标域的写入操作 WB
汇编指令无法一次性完成;各个步骤所涉及的硬件可能各有不同;因此可以被采用流水线技术来执行指令。

可以看出,在第2条指令运行的过程中,在第1条指令仅仅完成了数据读取的环节。假设每个步骤所需时间为1毫秒的情况下,则若按顺序运行的话就需要等待总共5毫秒的时间才能完成全部操作。然而通过引入流水线技术之后,则可以在仅等待1毫秒的时间内完成所有操作。
A = B + C 的执行过程
load操作通常用LW指令来执行。将目标操作数B加载到寄存器R1中。加法运算由ADD指令完成。将R1和R2中的数值相加后结果存储于R3寄存器。存储操作通常由SW指令来执行。将目标操作数从寄存器中取出并保存到内存指定地址变量A中。
该ADD指令处用星号标记了一个中断。这表明在此处短暂停滞,原因在于R2中的数据尚未就绪.此延迟导致后续指令需稍作等待.

停顿与重排序
再看复杂一点的情况
a = b + c
d = e + f

从图表中可以看出存在较多的停顿点。为了降低停顿现象的发生,我们需要将LW Re,e和LW Rf,f这两个参数提前放置在图表的上方区域,并且确保它们位于数据系列之前以提高数据展示的清晰度。

明显指令重排序对于提升CPU性能至关重要,并且必须遵守happens-before规则。
全部评论 (0)
还没有任何评论哟~
