深圳市微迪软件技术有限公司
一.流水线
1. 概念:
处理器按照一系列步骤来执行每一条指令.典型的步骤如下:
1) 从存储器读取指令(fetch).
2) 译码以鉴别它是那一类指令(dec).
3) 从寄存器堆取得所需的操作数(reg).
4) 将操作数进行组合以得到结果或存储器地址(ALU).
5) 如果需要,则访问存储器以存取数据(mem).
6) 将结果写回到寄存器堆(res).
并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步骤往
往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在
前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用.
有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指令结
束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法
且非常有效的途径.
采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤 1 并转向步骤 2
时,下一条指令就开始执行步骤 1.图 1.13 说明了这个过程.从原理上来说,这样的流水
线应该比没有重叠的指令执行快 6 倍,但实际上事情并没有这么好,下面我们将会看到
原因.
1
2
3
指令 时间
图 1.13 流水线的指令执行
2. 流水线中的冒险
要点:后一条指令要用到前一条指令。
在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条
指令的操作数.当这种情形发生时,图 1.13 所示的流水线操作就中断了,因为第一条指
令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生
为止.这是流水线的行为如图 1.14 所示.这是流水线的”写后读”冒险(hazard).
1.
2.
图 1.14 先写后读的流水线冒险
微迪培训中心 嵌入式培训专题
f
e
t
c
h
dec rge alu mem res
f
e
t
c
h
dec rge alu mem res
f
e
t
c
h
dec rge alu mem res
f
e
t
c
h
dec rge alu mem res
评论0
最新资源