指令流水的定义
一条指令的执行过程可以分成多个阶段,每个阶段功能由相应的功能部件完成。而视各阶段为相应的流水段,则指令的执行过程就构成了一条指令流水线。
顺序执行方式
即只有上一条指令完成后才能进行下一条指令的执行。
若设取指、分析、执行三个阶段的时间都相等,用t表示,顺序执行方式可得:
总耗时T=$n\times 3t=3nt$。
传统的冯诺依曼机就是采用顺序执行方式,该方式又称串行执行方式。
优点:控制简单,硬件代价小。
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。
一次重叠执行方式
总耗时T=$(n-1)\times 2t+3t=(1+2n)t$。
优点:程序的执行时间缩短了1/3,各功能部件的利用率提高。
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂。
二次重叠执行方式
总耗时T=$(n-1)\times t+3t=(2+n)t$。
优点:与顺序执行程序的执行时间缩短了2/3,各功能部件的利用率提高,这是一种理想的指令执行方式。
流水线的表示方法
指令流程图用于分析影响流水线的因素。
时空图用于分析流水线的性能。
流水线的性能指标
吞吐率。吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。
设任务数为n:处理完成n各任务所用的时间为T
则流水线吞吐率(TP)的基本公式为TP=n/T。
加速比。完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
效率。流水线的设备利用率。
一般公式为
$$
E=\frac{n个任务占用k时空区有效面积}{n个任务所用的时间与k个流水段所围成的时空区总面积}
$$
影响流水线的因素
结构相关(资源冲突)
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。
解决方法:
- 后一相关指令暂停一周期
- 资源重复配置: 数据存储器+指令存储器分配到不同的地方。
数据相关(数据冲突)
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。
解决方法:
- 把遇到数据相关的指令及其后序指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”(空操作)两种方法。
- 数据旁路技术。
- 编译优化:通过编译器调整指令顺序来解决数据相关。
控制相关(控制冲突)
当流水线遇到转移指令和其他改变PC指的指令而造成断流时,会引起控制相关。
流水线的多发技术
超标量流水线技术
每个时钟周期内可并发多条独立指令,要配置多个功能部件,且不能调整指令的执行顺序。
通过编译优化技术来把可并行的指令搭配起来。
超流水技术
在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次。同样不能调整指令的执行顺序。
超长指令字
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字。