流水线技术-标量

一、重叠执行和先行控制

一条指令的执行过程:
(1)取指令:按照指令计数器PC的内容访问主存,取出一条指令送到指令寄存器。
(2)分析指令:对指令的操作码进行译码,按照给定的寻址方式和地址字段形成操作数的地址,并用这个地址读取操作数。
操作数可能在主存中,也可能在通用寄存器中。
(3)执行指令:按照操作码的要求,完成指令规定的功能。

1.1 重叠执行

当有多条指令要在处理机中执行时,可以有以下三种执行方式

(1)顺序执行

取指令k -> 分析指令k -> 执行指令k -> 取指令k+1 -> 分析指令k+1 -> 执行指令k+1 -> ...

执行n条指令所花的时间为

T = ∑ (t取i + t分i + t执行i)

如果取指令、分析指令和执行指令的时间相等,都是t,则

T = 3nt

(2)一次重叠执行方式

把执行第k条指令与取第k+1条指令同时进行,如果取指令、分析指令和执行指令的时间相等,都是t,则执行n条指令所花的时间为

T = (1+2n)t

(3)二次重叠执行方式

把去第k+1条指令提前到与分析第k条指令同时进行,把分析第k+1条指令与执行第k条指令同时进行,如果取指令、分析指令和执行
指令的时间相等,都是t,则执行n条指令所花的时间为

T = (2+n)t

1.2 先行控制

先行控制技术实际上就是缓冲技术和预处理技术。
缓冲技术:在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。
预处理技术:是指预取指令、对指令进行加工以及预取操作数等。

二、流水线的基本概念

把一个重复的过程分解为若干子过程,每个子过程由专门的功能部件来实现,将多个处理过程在时间上错开,
依次通过个功能段,这样,每个子过程就可以与其他子过程并行进行。

2.1 流水线的时空图

如果每个流水段的延迟时间(通过时间)均为Δts,锁定时间为Δtl,则每功能段的处理时间Δti为:

Δti= Δts+Δtl

流水处理机的最高工作频率为:

若每个流水段的延迟时间不等,则最高工作频率为:

2.1 流水技术的特点

⑴ 一条流水线通常由若干个有联系的流水段组成。流水线中的段数也称为 “流水深度”。
⑵ 每个流水段有专门的功能部件对指令进行某种加工。
⑶ 各流水段所需时间应尽量相等,以减少流水线的瓶颈影响。
⑷ 流水线工作阶段可分为建立(填入)、满载和排空三个阶段。 
⑸在理想情况下,当流水线充满后,每隔Δt时间将会有一个结果流出流水线。

2.2 流水线的性能指标

(1)吞吐率

吞吐率TP是指在单位时间内流水线所完成的任务数量或输出结果的数量。

其中n为任务数,Tk是处理完成n个任务所用的时间。

1)各段时间均相等的流水线

对于一条m段线性流水线来说,在连续输入n个任务的理想情况下,第一个任务输入后,经过m个单位时间从输入端
流出,此后的n-1个单位时间中,每个单位时间完成一个任务。在这种情况下,流水线完成n个连续任务所需的总
时间为

Tm=(n+m-1) Δt

完成n个任务的实际吞吐率:

最大吞吐率

最大吞吐率就是流水线满载时的吞吐率,因此实际吞吐率为:

2)各段时间不完全相等的流水线

△t1= △t, △t2= △t, △t3=3 △t, △t4= △t;

一般的,各段时间不等的流水线的实际吞吐率为

则最大吞吐率为

(2)加速比

加速比是指采用流水方式后的工作速度与等效的顺序串行方式的工作速度之比。

对n个求解任务,若用串行方式完成工作需要时间为Tl,用m段流水线完成工作需要时间为Tm,每个功能段
的延迟时间为Δt,则流水线的加速比为:

最大加速比:

若流水线各功能段的延迟时间不等,则加速比为:

(3)效率

效率是指流水线中的各功能段的利用率。

如果各段时间相等

如果各段时间不等

(3)吞吐率、加速比和效率的关系

E=Tp·Δt=Sp/m
效率是实际加速比和最大加速比之比。只有E=1时,才能达到Sp=m
当Δt不变时,效率与吞吐率成正比。所以为提高效率所采用的方法,对提高吞吐率也有好处。

三、流水线的相关与冲突

3.1 一个经典的5段流水线

(1)取指令周期(IF)
(2)指令译码/读寄存器周期(ID)
(3)执行/有效地址计算周期(EX)
(4)存储器访问/分支完成周期(MEM)
(5)写回周期(WB)

3.2 相关

(1)数据相关

对于两条指令i(在前)和j(在后),如果下述条件之一成立,则称指令j与指令i数据相关:
1)指令j使用指令i产生的结果。
2)指令j与指令k数据相关,而指令k又与指令i数据相关。

(2)名相关

名指的是指令所访问的寄存器或存储器单元的名称。
如果两条指令使用相同的名,但是它们之间没有数据流动,则称这两条指令存在名相关。

1)反相关:如果指令j写的名与指令i读的名相同,则称指令i和j发生了反相关,反相关指令之间的
执行顺序是必须严格遵守的,以保证i读的值是正确的。
2)输出相关:如果指令j和指令i写相同的名,则称指令i和j发生了输出相关,输出相关指令的执行
顺序是不能颠倒的,以保证最后的结果是指令j写进去的。

(3)控制相关

控制相关是指由分支指令引起的相关。
一般来说,为了保证程序应有的执行顺序,必须严格按控制相关确定的顺序执行。

3.3 冲突

流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能再指定的时钟周期执行。

流水线冲突有3种类型

(1)结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。
(2)数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。
(3)控制冲突:流水线遇到分支指令和其他会改变PC值得指令所引起的冲突。