6 利用流水线提高性能

Download Report

Transcript 6 利用流水线提高性能

§6 利用流水线提高性能
2009
华东师范大学计算机科学技术系
1
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
分支冒险
异常
提高性能
实例:Pentium
4处理器的流水线
华东师范大学计算机科学技术系
2
§6 利用流水线提高性能
6.1 流水线概述
2009
华东师范大学计算机科学技术系
3
6.1 流水线概述
并行处理技术
早期的计算机基于冯·诺伊曼的体系结构,
采用的是串行处理
计算机的各个操作只能串行地完成,任一时
刻只能进行一个操作
2009
华东师范大学计算机科学技术系
4
6.1 流水线概述
一、并行处理技术
并行性:
同时性:指两个以上事件在同一时刻发生
并发性:指两个以上事件在同一时间间隔
内发生
计算机的并行处理技术可贯穿于信息处理
的各个步骤和阶段
2007
分三种形式: 时间并行
空间并行
时间并行+空间并行
华东师范大学计算机科学技术系
5
一、并行处理技术
 时间并行
——时间重叠
让多个处理过程在时间上相互错开,轮流
重叠地使用同一套硬件设备的各个部分,
以赢得处理速度
时间并行性概念的实现方式就是采用流水
处理部件
2007
华东师范大学计算机科学技术系
6
一、并行处理技术
 空间并行
——资源重复
在并行性概念中引入空间因素,以增加
“数
量” 来大幅度提高计算机的处理速度
空间并行技术主要体现在多处理器系统和
多计算机系统
2007
华东师范大学计算机科学技术系
7
一、并行处理技术
 时间并行+空间并行
——时间重叠和资源重复的综合应用
既采用时间并行性又采用空间并行性
例:奔腾CPU采用超标量流水技术,在一
个机器周期中同时执行两条指令
具有时间并行性又具有空间并行性
2007
华东师范大学计算机科学技术系
8
6.1 流水线概述
流水线是一种可将多条指令的执行过程相互重
叠的实现技巧。流水线技术是在计算机上实现
时间并行性,提高处理器速度的一种非常经济
的方法。
二、流水线工作原理概述:
将任务分割为一系列子任务,使各子任务
能在流水线的各个阶段并发地执行,即实现子
任务级的并行操作。
2009
华东师范大学计算机科学技术系
9
二、流水线工作原理概述:
子任务的划分———决定流水线性能的关键因素。
方法:将T任务划分为k个子任务
T = ﹛T1,T2,…Tk﹜
关键:
要求:各子任务划分合理,处理时间相同,避
每个子任务的处理时间一样
免空转
应取多少任务数
子任务任务数的划分取决于:
· 操作的效率
· 所期望的处理速度
10
2009
· 成本价格等
华东师范大学计算机科学技术系
二、流水线工作原理概述:
效率:
子任务并行工作,提高了吞吐率
· 实际上整个任务处理的时间并没有缩短,
而是因为各子任务并行工作,单位时间
内所完成的工作量就大大增加了。流水
线提高了整个系统的吞吐率。
· 子任务划分越细,流水线效率越高,但
2009
硬件代价也越高
华东师范大学计算机科学技术系
11
二、流水线工作原理概述:
1. 线性流水线
各子任务之间有一定的优先关系。若i﹤j,
则必须在Ti完成后,Tj才开始工作,这种线性
优先关系的流水线称为线性流水线。
时钟周期
τi为执行Si所需的时间,τl为缓冲寄存器
的延时
τ=max{τi}+τl=τm+τl
流水线时钟频率为: f=1/τ
2009
华东师范大学计算机科学技术系
12
二、流水线工作原理概述:
2. 流水线加速比
当流水线任务饱满时,任务源源不断地输入
K个时钟周期用于处理第一个任务,流水线正常流动
流水线,不论有多少级过程段,每隔一个时钟
后,剩下的n-1个任务,每个时钟周期就能完成一个。
周期都能输出一个任务
从理论上说,一个具有k级过程段的流水线
处理n个任务需要的时钟周期数为:
Tk=k+(n-1)
而用非流水线的硬件来处理这n个任务,时
间上只能串行进行,则所需时钟周期数为:
TL=n·k
13
2009
华东师范大学计算机科学技术系
流水线所带来的性能提升是通过提高指令的吞吐率来实现
2. 流水线加速比
的,而不是通过减少单条指令的执行时间来实现。
k级过程段的流水线处理n个任务需要的时
钟周期数为:
Tk=k+(n-1)
非流水线的硬件处理所需时钟周期数为:
 流水线加速比
TL=n·k
Ck=TL/Tk= n k /(k+(n-1))k
理论上k级线性流水线可提高k倍速度, 当nk时,
但实际上由于存在结构冒险、数据
Ckk
冒险等,并达不到理想的值。
2009
华东师范大学计算机科学技术系
14
二、流水线工作原理概述:
3. 流水线时空图
为了实现流水,首先把输入的任务(或过
程)分割为一系列子任务,并使各子任务
能在流水线的各个阶段并发地执行
当任务连续不断地输入流水线时,在流水
线的输出端便连续不断地吐出执行结果,
从而实现了子任务级的并行性
2007
华东师范大学计算机科学技术系
15
3. 流水线时空图
设指令执行的流水线过程段:
入
S1
S2
S3
S4
IF
ID
EX
WB
取指
译码
执行
回写
出
• 一条流水线由一系列串联的过程段组成 i)
例:一条指令的执行分为四个子过程段(S
• 各过程段之间设有高速缓冲寄存器,以暂时保存上一
每个子过程段处理时间均为t
过
分析对比:
程段子任务处理的结果
非流水线、流水线、超标量流水线执行5条指令所需
• 在统一的时钟信号控制下,数据从一个过程段流向相
时间
邻
2007
16
华东师范大学计算机科学技术系
的过程段
•3.上一条指令的四个子过程全部被执行完毕后才
流水线时空图
能
 开始下一条指令
非流水线时空图
• 每隔4个机器时钟周期才有一个输出结果
• 执行5条指令所需时间: t45=20t
空间S
I1
WB
I1
EX
I2
I1
ID
I2
I1
I2
IF I1
I2
1
2007
I2
2
3
4
5
6
华东师范大学计算机科学技术系
7
8
时间T
17
• 上一条指令与下一条指令的子过程在时间上可以
3. 流水线时空图
重叠执行
与前者比较:
•• 流水计算机在8个t时间中执行了5条指令
当流水线满载时,每一个时钟周期就可以输出一
 标量流水线时空图
• 个结果
非流水线计算机在8个t时间中仅执行了2条指令
• 执行5条指令所需时间: t4+(5-1)t=8t
空间S
I1
I2
I3
I1
I2
I3
I4
I1
I2
I3
I4
I5
I5
WB
EX
ID
I1
I2
I3
I4
IF I1
I2
I3
I4
I5
1
2007
2
3
4
5
6
华东师范大学计算机科学技术系
I4
I5
I5
7
8
时间T
18
三者比较:
•
所谓超标量流水是指它具有两条以上的指令流水线
3. 流水线时空图
• 非流水线计算机在8个t时间中执行了2条指令
下图中的超标量流水线中,流水线满载时,每一个
•
流水计算机在8个t时间中执行了5条指令
时钟周期可以执行2条指令
超标量流水线时空图
• 超标量流水线计算机在8个t时间中执行了10条指令
执行5条指令所需时间: t4+(5-2)/2=6t
I1
空间S
I7
I9
I1
I4
I5
I6
I7
I8
I9
I2
I4
I6
I8
I10
I1
I3
I5
I7
I9
I2
I4
I6
I8
I10
I1
I3
I5
I7
I9
I2
I4
I6
I8
I10
I1
I3
I5
I7
I9
I2
I4
I6
I8
I10
EX
ID
2007
I5
I2
I3
WB
IF
I3
1
2
3
4
5
6
华东师范大学计算机科学技术系
7
I10
8 时间T19
6.1 流水线概述
三、针对流水线结构的指令集设计
指令流水线——指令级并行(ILP)
利用执行指令所需的操作之间的并行,实
现多条指令重叠执行的一种技术
目前,几乎所有的高性能计算机都采用了
指令流水线
2007
华东师范大学计算机科学技术系
20
三、针对流水线结构的指令集设计
开发方法:
① 依赖于硬件,动态地发现和开发指令级并行,
可将指令流的处理过程划分为取指令、译码、
执行、写回等几个并行处理的过程段
例:Intel的Pentium系列
占市场主导地位
② 依赖于软件技术,在编译阶段静态地发现并
行
例:Intel的Itanium系列
特定应用环境
2007
华东师范大学计算机科学技术系
21
三、针对流水线结构的指令集设计
针对流水线结构的指令集设计:
MIPS指令集就是专为指令执行的流水线化
而设计的
特点:
① 所有的MIPS指令等长
——简化了流水线的取指和译码阶段设计
IA-32指令长度为1-17字节,为适合流水线,
首先将指令转为简单的微操作,送入流水线处
理的实际上是微操作,而不是原始指令。
2007
22
华东师范大学计算机科学技术系
三、针对流水线结构的指令集设计
② MIPS指令格式简单,形式固定
——简化了流水线的译码阶段设计,
同时可减少流水线级数
③ MIPS指令对内存的操作仅允许在存取操作中
——计算有效地址可放在执行阶段进行
④ MIPS指令具有数据规整性,保证存取数据一
次完成
——传输数据可保证在一个流水线级中完成
2007
华东师范大学计算机科学技术系
23
6.1 流水线概述
四、流水线冒险
流水线中的主要问题
· 希望流水线充分发挥作用
关键:不断流
· 但实际情况通常会出现相关冲突,使流水
线发生断流,称为冒险
流水线CPI=理想流水线CPI+结构停顿+数据停顿+控制停顿
主要相关冲突:
2007
资源相关——结构冒险
数据相关——数据冒险
24
华东师范大学计算机科学技术系
控制相关——控制冒险
四、流水线冒险
解决冲突的办法:
五个子过程段:IF:
在时钟T4时:
取指
在不改变程序正确执行的前提下,尽力开发并行度
1. I1指令执行访存操作:读操作数
结构冒险 ID: 指令译码、寄存器堆读取
① 延迟I4指令的执行,停顿一拍后再启动(引入气泡)
I4指令执行访存操作:读指令
EX: 指令执行(ALU)
指多条指令进入流水线后在同一机器时钟周
②若数据、指令放在同一存储器中(单端输出),则
增设一个存储器,将指令和数据分别放在两个存储
MEM:内存访问
期内争用同一个功能部件所发生的冲突
发生资源相关冲突(结构冒险)
器中
WB: 结果写寄存器堆
结构冒险实例:两条指令同时访问内存发生
资源相关冲突
时钟
指令
I1(lw)
I2
I3
I4
2007
I5
1
2
IF
ID
IF
3
4
5
6
7
8
9
EX MEM WB
ID EX MEM WB
IF
ID EX MEM WB
IF
ID EX MEM WB
华东师范大学计算机科学技术系
IF
ID
EX MEM 25WB
四、流水线冒险
2. 数据冒险
在一个程序中,如果必须等前一条指令执
行完毕后,才能执行后一条指令,那么这两条
指令就是数据相关的。
在流水线计算机中,由于多条指令的重叠
处理,当后继指令所需的操作数,刚好是前一
指令的运算结果时,便发生数据相关冲突
——可能存在数据冒险
是否存在相关取决于程序的性质,而一个
给定的相关是否会引起数据冒险则取决于流水
2007
26
线的结构。 华东师范大学计算机科学技术系
解决冲突的办法:
这一数据冒险将严重阻碍流水线,流水线阻塞(产生气泡)
2. 数据冒险
① 通过编译优化,将相关指令和不相关指令恰当混合,
但很难得到令人满意的效果
② 采用定向传送技术(数据定向或数据旁路)
数据相关实例
设置专用定向通路,将运算结果直接作为输入项,供
后继指令直接使用,而不必等待下一时钟周期,以尽
add $t1,$t2,$t3
;($t2)+($t3)→($t1)
量减少延迟时间
sub $t4,$t1,$t5
and $t6,$t1,$t7
时钟
指令
add
sub
and
2007
;($t1)-($t5)→($t4)
;($t1)Λ($t7)→($t6)
1
2
3
4
5
6
IF
ID
EX MEM WB
IF
ID
EX MEM WB
IF
ID
7
8
EX MEM WB
华东师范大学计算机科学技术系
27
2. 数据冒险
例1)两条指令间的数据转发
顺序执行: add $s0,$t0,$t1
sub $t2,$s0,$t3
· 不采取措施,sub指令的ID子过程必须延迟到
第6拍进行
· 采用数据定向传送通道
图6-5
sub指令执行可不断流。当add指令完成EX步
骤,运算结果将通过定向传送通道直接作为
sub指令的操作数。
2007
华东师范大学计算机科学技术系
28
2. 数据冒险
数据定向技术并不能完全解决流水线阻塞问题,
但能尽量减少阻塞时间。
例2)顺序执行: lw $s0,20($t1)
sub $t2,$s0,$t3
即使采用数据定向技术,但由于lw指令得
到$s0的结果要等到第4拍(MEM)结束,而理
想状况sub指令的执行就在第4拍,所以,流水
线仍然不得不阻塞一步。
图6-6
要获知是否发生阻塞,需相应的技术,后
面讨论。
2007
29
华东师范大学计算机科学技术系
2. 数据冒险
例3)重新排列代码以避免流水线阻塞
C语言:
A=B+E
C=B+F
MIPS指令:
内存
I1:
lw
$t1,0($t0)
基址+0
+4
B
+8
$t3,$t1,$t2
+12
$t3,12($t0)
+16
$t4,8($t0)
$t5,$t1,$t4
$t5,16($t0)
华东师范大学计算机科学技术系
F
I2: lw $t2,4($t0)
I3:
I4:
I5:
I6:
2007
I7:
add
sw
lw
add
sw
E
A
C
…
30
I1:
I2:
I3:
I4:
I5:
I6:
I7:
例3)
① 不采取任何措施
需23个周期完成
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
t12
lw
lw
add
sw
lw
add
sw
t14
t16
$t1,0($t0)
$t2,4($t0)
$t3,$t1,$t2
$t3,12($t0)
$t4,8($t0)
$t5,$t1,$t4
$t5,16($t0)
t18
t20
t22
I1 IF ID EX MEM WB
I2
I3
I4
I5
I6
I7
IF ID EX MEM WB
IF
ID EX MEM WB
IF
ID EX MEM WB
IF ID EX MEM WB
IF
ID EX MEM WB
IF
ID EX MEM WB
例3)
② 采取数据定向技术
只需13个周期完成,但
不能完全解决阻塞问题。
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
I1 IF ID EX MEM WB
I2
I3
I4
I5
I6
I7
I1:
I2:
I3:
I4:
I5:
I6:
I7:
t12
IF ID EX MEM WB
IF
ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF
ID EX MEM WB
IF ID EX MEM WB
lw
lw
add
sw
lw
add
sw
t14
$t1,0($t0)
$t2,4($t0)
$t3,$t1,$t2
$t3,12($t0)
$t4,8($t0)
$t5,$t1,$t4
$t5,16($t0)
t16
t18
例3)
③ 对程序重新排序,调整
原指令序列,现只需
11个周期完成,又提前
2个周期。
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
I1 IF ID EX MEM WB
I2
I3
I4
I5
I6
I7
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
I1: lw
I2: lw
I3:lw
I4: add
I5: add
I6: sw
I7: sw
t12
t14
$t1,0($t0)
$t2,4($t0)
$t4,8($t0)
$t3,$t1,$t2
$t5,$t1,$t4
$t3,12($t0)
$t5,16($t0)
t16
t18
2. 数据冒险
由此引出MIPS结构设计的另一特点:
每条MIPS指令最多输出一个结果,并在接
近流水线的末端完成对这个结果的回写。
——按序完成
若每条指令的转发结果多于一个,或采用
较早写回策略的话,实现数据转发将更困难。
2007
华东师范大学计算机科学技术系
34
四、流水线冒险
3. 控制冒险
控制相关冲突是由分支指令(包括中断)
引起的。当执行分支指令时,依据分支条件
产生结果,可能为顺序执行下一条指令;也
可能转移到新的目标地址执行指令,原流水
线前期操作的内容全部作废,从而使流水线
发生断流。
原因:
判断结果在最后阶段才能产生
2007
华东师范大学计算机科学技术系
35
3. 控制冒险
解决冲突的方法:
常用以下分支处理技术:
① 延迟转移法(编译优化)
基本思想是“先执行再转移”,即发
生转移取时并不排空指令流水线,而是让
紧跟在分支指令之后已进入流水线的少数
几条指令继续完成。
如果这些指令是与分支结果无关的有
用指令,那么延迟损失时间片正好得到了
有效的利用。
2007
华东师范大学计算机科学技术系
36
3. 控制冒险
② 增加硬件电路,缩短分支延迟
ⅰ) 默认分支不发生
默认执行顺序指令,分支发生时清除
已执行指令。
ⅱ)将分支判断提前到ID阶段完成,缩短
分支的延迟
2007
华东师范大学计算机科学技术系
37
3. 控制冒险
③ 分支预测法
保存每个分支执行情况的历史记录,根
据近期执行的情况,来预测将来的行为,用
硬件方法来实现分支预测。
一旦预测错误,流水线控制机制必须保
证错误执行的指令失效,重新进入正确的分
支。
MIPS采用延迟分支法,分支指令后的下一条
指令总是被执行,分支则发生在这条指令执
行完后。
——对程序员透明,由汇编器完成
2007
38
华东师范大学计算机科学技术系
四、流水线冒险
小结:
· 流水线增加了同时执行的指令的数目(并行
性),提高了处理器的吞吐率,但并没有减
少单条指令的执行时间或时延;
· 理论上k级线性流水线可提高k倍速度,但较
长的流水线会恶化预测的性能,增加错误预
测的代价;
· 流水线技术对程序员透明;
· 流水线设计者必须解决:结构冒险、数据冒
险和控制冒险问题,以提高计算机的性能。
2007
华东师范大学计算机科学技术系
39
四、流水线冒险
例4)下列指令序列在5级流水线执行中是否会
发生阻塞?通过数据定向技术能否解决冒
险问题?
1. addi $t1,$t0,#1
addi $t2,$t0,#2
addi $t3,$t0,#3
addi $t3,$t0,#4
addi $t5,$t0,#5
程序执行时,数据不会发生冲突冒险,所以
流水线不会阻塞
2007
华东师范大学计算机科学技术系
40
例4)
2. lw $t0,0($t0)
addi $t2,$t0,#2
lw
add
IF
ID EX
IF
MEM
WB
ID EX
MEM
WB
程序执行时,$t0数据产生冲突冒险,流
水线发生阻塞。
即使采用数据定向技术也不能完全解决
阻塞问题,但add指令执行可提前1个时钟周
2007
41
华东师范大学计算机科学技术系
期。
例4)
3. add $t1,$t0,$t0
addi $t2,$t0,#5
addi $t4,$t1,#5
add
IF
ID EX
MEM
WB
addi
IF ID
EX
MEM
WB
addi
IF
ID
EX
MEM
WB
程序执行时,$t1数据相关,流水线有可
能发生阻塞。
采用数据定向技术能完全解决阻塞问题,
2007
42
华东师范大学计算机科学技术系
使流水线不断流。
§6 利用流水线提高性能
6.1 流水线概述
6.2 流水线的数据通路
2009
华东师范大学计算机科学技术系
43
6.2 流水线的数据通路
5级单时钟周期流水线的数据通路
P248图6-9
分析:
一般执行步骤:从左到右
例外(从右到左):
① 写回数据到寄存器堆
② 选择PC的值(后继地址)
2009
华东师范大学计算机科学技术系
引起结构冒险
引起控制冒险
44
6.2 流水线的数据通路
解决方法:
· 将子过程段分为两部分:
例:寄存器堆读(前半周期)和寄存器堆写
(后半周期)
图6-10
· 增加子过程段缓冲寄存器,存储后级需要使
用的数据
图6-11
2007
华东师范大学计算机科学技术系
45
6.2 流水线的数据通路
一、流水线工作原理
例5)lw指令的流水执行过程
1. 取指令
图6-12
① M(PC)→ IF/ID流水线缓冲寄存器(32位)
相当于读出指令送IR
② PC+4 → IF/ID流水线缓冲寄存器(32位)
PC指向下一条指令地址
IF/ID流水线缓冲寄存器共64位
2007
华东师范大学计算机科学技术系
46
例5)
2. 指令译码与读取寄存器堆
图6-12
① 读rs寄存器值→ID/EX流水线缓冲寄存器(32位)
② 读rt寄存器值→ID/EX流水线缓冲寄存器(32位)
③ 指令的16位立即数符号扩展后→ID/EX流水线缓
冲寄存器(32位)
④ IF/ID缓冲寄存器中的PC增值→ID/EX流水线缓冲
寄存器(32位)
ID/EX流水线缓冲寄存器共128位
2007
华东师范大学计算机科学技术系
47
例5)
3. 指令执行或地址计算
图6-13
① ID/EX流水线缓冲寄存器中的rt内容→EX/MEM流
水线缓冲寄存器(32位)
② 有效地址运算结果(或指令操作运算结果)+标
志位→EX/MEM流水线缓冲寄存器(32+1位)
③ PC分支目标地址的计算结果→EX/MEM流水线缓冲
寄存器(32位)
EX/MEM流水线缓冲寄存器共97位
2007
华东师范大学计算机科学技术系
48
例5)
4. 内存访问
图6-14
① 数据存储器读出内容→MEM/WB流水线缓冲寄存器
(32位)
② 指令操作运算结果→MEM/WB流水线缓冲寄存器
(32位)
MEM/WB流水线缓冲寄存器共64位
5. 写回
图6-14
从MEM/WB流水线缓冲寄存器中读出数据写入寄存
器堆。
2007
华东师范大学计算机科学技术系
49
一、流水线工作原理
例6)sw指令的流水执行过程
1. 取指令
同lw指令
图6-12
2. 指令译码与读寄存器堆
图6-12
① 读rs寄存器值→ID/EX流水线缓冲寄存器(32位)
② 读rt寄存器值→ID/EX流水线缓冲寄存器(32位)
③ 指令的16位立即数符号扩展后→ID/EX流水线缓冲
寄存器(32位)
④ IF/ID缓冲寄存器中的PC增值→ID/EX流水线缓冲
2007 寄存器(32位)
50
华东师范大学计算机科学技术系
例6)
3. 指令执行或地址计算
图6-15
① ID/EX流水线缓冲寄存器中的rt内容→EX/MEM流
水线缓冲寄存器(32位)
数据
② 有效地址运算结果(或指令操作运算结果)+标
志位→EX/MEM流水线缓冲寄存器(32+1位)
地址
③ PC分支目标地址的计算结果→EX/MEM流水线缓冲
寄存器(32位)
2007
华东师范大学计算机科学技术系
51
例6)
4. 内存访问
图6-16
读取EX/MEM缓冲器保存的数据和有效地址,
写入数据存储器
① 数据存储器读出内容→MEM/WB流水线缓冲寄存器
(32位)
② 有效地址运算结果(或指令操作运算结果)
→MEM/WB流水线缓冲寄存器(32位)
5. 写回
空操作
2007
图6-16
华东师范大学计算机科学技术系
52
一、流水线工作原理
重要特性:
· 增加流水线缓冲寄存器,保证上一级向下一
级传递信息的正确性;
· 数据通路中的每一个逻辑元件都只能在流水
线的单级中使用,否则将产生结构冒险。
2007
华东师范大学计算机科学技术系
53
一、流水线工作原理
例5 lw指令流水线中的bug:
T5节拍产生回写数据,但写入寄存器堆的
地址此时已发生改变(因已多次取指)。
修改措施:
将IF/ID中的rt内容(包括rd,算术运算指
令需要)逐级通过流水线缓冲器传递并保存,
直至写入寄存器堆时使用
P256图6-17
2007
华东师范大学计算机科学技术系
54
6.2 流水线的数据通路
二、用图形的方式表示流水线
1. 多时钟周期的流水线图
· 图6-19:描述每步所使用的实际资源
· 图6-20:也称流水线时空图,描述每个步
骤的名称
简单但忽略细节
2. 单时钟周期的流水线图
图6-21
描述同一时钟节拍内各条指令使用各个逻辑
部件的情况
2007
华东师范大学计算机科学技术系
55
§6 利用流水线提高性能
6.1 流水线概述
6.2 流水线的数据通路
6.3 流水线中的控制
2009
华东师范大学计算机科学技术系
56
6.3 流水线中的控制
在基于流水线的简单数据通路中加入控制电路
1. 加入所需的操作控制信号
图6-22
说明:
· PC及流水线缓冲寄存器利用流水线时钟信
号打入(每个节拍打入一次),所以不需
要另外的控制信号。
· 6位的指令功能码不必单独保存,同ID/EX
中符号扩展后的立即数的低6位。
57
2009
华东师范大学计算机科学技术系
6.3 流水线中的控制
2. 在每个流水线步骤中设定相应的操作控制信
号
① 取指令:读指令存储器
写PC
写IF/ID
② 指令译码/读取寄存器堆:读寄存器堆
写ID/EX
以上步骤在每个时钟周期内执行,不需设置控
制(不考虑冒险等问题)
2007
华东师范大学计算机科学技术系
58
2. 在每个流水线步骤中设定相应的操作控制信号
③ 指令执行/有效地址计算:
RegDst:选择结果寄存器
ALUOp: 确定ALU操作
ALUSrc:选择第2操作数(rt/或符号扩展
后的立即数)
写EX/MEM
④ 内存访问:
Branch
MemRead
由指令操作码决定
MemWrite
2007
华东师范大学计算机科学技术系
写MEM/WB
59
2. 在每个流水线步骤中设定相应的操作控制信号
⑤ 写回:
MemtoReg:选择写回寄存器堆结果(运算
结果/数据存储器读出内容)
RegWrite:寄存器堆写入信号
操作控制信号设计同P201图5-18
区别:加入流水线子过程段控制信号
流水线T3,T4,T5阶段操作控制信号:图6-25
2007
华东师范大学计算机科学技术系
60
6.3 流水线中的控制
实施方法:
简单的方法是扩展流水线缓冲寄存器内容,
使之包含这些操作控制信号
图6-26
后级使用的操作控制信号要逐级通过流水线缓
冲寄存器传送
带有控制的流水线数据通路
图6-27
IF/ID: 64位
ID/EX: 147位
EX/MEM:107位
MEM/WB:71位
2007
华东师范大学计算机科学技术系
61
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
华东师范大学计算机科学技术系
62
6.4 数据冒险与转发
数据冒险是影响流水线性能的主要障碍
分析下列程序:
sub $2,$1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
sub-and,sub-or,sub-add,sub-sw存在数据相
关性
2009
华东师范大学计算机科学技术系
63
6.4 数据冒险与转发
多时钟周期的流水线图:
·
图6-28
and,or指令由于数据冒险,产生错误结果;
add,sw指令无数据冒险,执行结果正确。
· 增加数据定向技术,sub指令在EX段产生运算
结果直接作为and指令EX段的执行输入,则流
水线不会产生气泡。
2007
华东师范大学计算机科学技术系
64
6.4 数据冒险与转发
· 描述冒险关系
1a: EX/MEM.RegisterRd=ID/EX.RegisterRs
1b: EX/MEM.RegisterRd=ID/EX.RegisterRt
2a: MEM/WB.RegisterRd=ID/EX.RegisterRs
2b: MEM/B.RegisterRd=ID/EX.RegisterRt
2007
华东师范大学计算机科学技术系
65
6.4 数据冒险与转发
相关性检测:
· sub-and是1a类冒险
EX/MEM.RegisterRd=ID/EX.RegisterRs=$2
· sub-or是2b类冒险
MEM/B.RegisterRd=ID/EX.RegisterRt=$2
· sub-add和sub-sw不存在数据冒险
2007
华东师范大学计算机科学技术系
66
6.4 数据冒险与转发
数据转发需受到控制:
① 仅当回写执行时转发:
检测EX、MEM阶段的流水线缓冲寄存器WB域
的RegWrite是否有效。
② 当Rd=$0,MIPS规定操作数必为0
∴ 增加冒险控制条件
将EX/MEM.RegisterRd≠0加入第一种冒险条件
MEM/WB.RegisterRd≠0加入第二种冒险条件
③ 相关性可能来自指令流水线的多个阶段(图
6-29),可在ALU输入端增加MUX和正确的控
制策略
图6-30
2007
华东师范大学计算机科学技术系
67
6.4 数据冒险与转发
检测冒险的条件以及解决冒险的控制信号:
P266图6-30
1.EX冒险:
if(EX/MEM.RegWrite
and(EX/MEM.RegisterRd≠0)
and(EX/MEM.RegisterRd=ID/EX.RegisterRs))ForwardA=10
if(EX/MEM.RegWrite
and(EX/MEM.RegisterRd≠0)
and(EX/MEM.RegisterRd=ID/EX.RegisterRt))ForwardB=10
2007
华东师范大学计算机科学技术系
68
6.4 数据冒险与转发
2.MEM冒险:
if(MEM/WB.RegWrite
and(MEM/WB.RegisterRd≠0)
and(MEM/WB.RegisterRd=ID/EX.RegisterRs))ForwardA=01
if(MEM/WB.RegWrite
and(MEM/WB.RegisterRd≠0)
and(MEM/WB.RegisterRd=ID/EX.RegisterRt))ForwardB=01
MUX控制信号含义
2007
华东师范大学计算机科学技术系
图6-31
69
6.4 数据冒险与转发
3. 复杂的潜在数据冒险
例: add $1,$1,$2
add $1,$1,$3
add $1,$1,$4
…
一系列连续的指令读写同一个寄存器,MEM
阶段中的结果更新,其更新的结果是由MEM步骤
转发得到的,所以修改MEM冒险的控制策略:
if(MEM/WB.RegWrite
and(MEM/WB.RegisterRd≠0)
and(EX/MEM.RegisterRd≠ID/EX.RegisterRs)
and(MEM/WB.RegisterRd=ID/EX.RegisterRs))ForwardA=01
if(MEM/WB.RegWrite
and(MEM/WB.RegisterRd≠0)
and(EX/MEM.RegisterRd≠ID/EX.RegisterRt)
2007
华东师范大学计算机科学技术系
and(MEM/WB.RegisterRd=ID/EX.RegisterRt))ForwardB=01
70
6.4 数据冒险与转发
图6-32:支持数据转发的硬件电路(不具有完
整的数据通路)
图6-33:增加MUX,以选择符号扩展后的立即数
2007
华东师范大学计算机科学技术系
71
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
华东师范大学计算机科学技术系
72
6.5 数据冒险与阻塞
数据定向技术并不能完全解决流水线断流问题,
一旦发生,必须有相应的机制阻塞流水线。
例:图6-34
lw-and 数据相关
lw: 在CC4从内存读出数据,CC5送$2
and: 在CC4需要$2操作数执行,阻塞一拍
因此为解决数据冒险问题,除转发控制外,还
需一个冒险检测单元。
2009
华东师范大学计算机科学技术系
73
6.5 数据冒险与阻塞
冒险检测单元:
在ID阶段检测lw指令,控制条件:
if(ID/EX.MemRead and
((ID/EX.RegisterRd= IF/ID.RegisterRs) or
(ID/EX.RegisterRd = IF/ID.RegisterRt)))
stall the pipeline
lw是唯一一条读数据
存储器指令,因此用
如果条件成立,下条指令(and)将阻塞一个
检测lw的目的寄存器
MemRead判断是否
时钟周期。
与下一条指令的源寄
lw指令。
存器是否相同
若没有采用数据定向机制,则将阻塞二个
时钟周期。
2007
华东师范大学计算机科学技术系
74
6.5 数据冒险与阻塞
阻塞:
ID和IF阶段一起被阻塞(防止预取指令丢失)
方法:
保持PC寄存器和IF/ID流水线缓冲寄存器不变。
读同一条指令
相当于IR不变
阻塞就相当于执行nop指令,通过将9个操作控
制信号清0实现。
图6-35
2007
华东师范大学计算机科学技术系
75
6.5 数据冒险与阻塞
图6-36:加入冒险检测单元和转发单元
lw指令冒险条件满足,冒险检测单元就阻塞并
清除所有的控制字段。
· 保持PC和IF/ID流水线缓冲寄存器不变
写信号PCWrite和IF/IDWrite无效
· 流水线执行nop指令
增加MUX选择0送ID/EX.WB,ID/EX.M,ID/EX.EX
(也可只将RegWrite和MemWrite置0)
2007
华东师范大学计算机科学技术系
76
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
6.6
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
分支冒险
华东师范大学计算机科学技术系
77
6.6 分支冒险
分支冒险也称控制冒险
例:图6-37分支指令对流水线的影响
现象分析:
beq指令决定是否分支发生在MEM阶段
(CC4),当产生比较结果标志后在第4个时
钟周期转移地址送PC。若不加干涉的话,后
续三条指令在程序转移之前已进入流水线执
行。
2009
——发生控制相关错误78
华东师范大学计算机科学技术系
6.6 分支冒险
解决方案:
一、假定分支不发生
默认分支不发生,继续执行顺序的指令流。
若分支发生,则丢弃已执行的指令,转分支目
标地址执行。
效率:设分支不发生的可能性为50%,丢弃指令
的代价很少的话,这种方法可将控制冒
险的代价减半。
2007
华东师范大学计算机科学技术系
79
一、假定分支不发生
丢弃指令的方法:
同前述lw指令,将操作控制信号置0。但所
不同的是:必须将流水线IF、ID、EX阶段的指
令操作控制码都清除掉。前者只需将ID阶段的
操作控制码清0。
2007
华东师范大学计算机科学技术系
80
解决方案:
二、减少分支的延迟
尽可能早的完成分支判断,降低执行分支的
代价。
提前决策需提前完成两个操作:
① 计算分支的目标地址
② 判断分支的跳转条件
2007
华东师范大学计算机科学技术系
81
二、减少分支的延迟
1.计算分支的目标地址
图6-27
在ID阶段已得到PC+4和IF/ID流水线缓冲寄
存器中的指令立即数。
可将分支地址加法器从EX阶段移到ID阶段。
这种设计将使ID阶段的操作:立即数符号
扩展、左移和分支地址加法时间更加紧凑。
2007
华东师范大学计算机科学技术系
82
二、减少分支的延迟
2.判断分支的跳转条件
图6-27
需增加电路,并提供数据旁路,以提早产
生判断结果。
例:要判断是否相等,可在ID阶段将读取的寄
存器值按位异或,产生判断结果。
2007
华东师范大学计算机科学技术系
83
2.判断分支的跳转条件
主要困难:
① 首先完成指令译码,以决定是否要将数据旁路送
给比较电路进行比较判断。数据旁路原由ALU相
关电路负责,这里须在ID阶段另外设计数据旁路
电路。ID阶段工作比较繁重,可能增加流水线子
过程段的时间。
② 由于数据比较工作提前到ID阶段,当指令序列存
在数据冒险时,可能引发流水线停顿。
例:分支指令的前一条指令是ALU指令,且ALU
的运算结果用于分支指令的比较操作,而
ALU指令的EX阶段发生在分支指令的ID阶段
2007
84
华东师范大学计算机科学技术系
之后,流水线断流。
2.判断分支的跳转条件
将分支指令的执行过程提前到ID阶段对流水线
性能还是有一定的改善。在分支跳转时只要清
除取指令的那条指令。
图6-37
为了在IF阶段清除一条指令,加入IF.Flush控
制线,清空IF/ID流水线缓冲寄存器(相当于执
行nop指令)
2007
图6-38
华东师范大学计算机科学技术系
85
6.6 分支冒险
例6)流水线分支
P273
图6-38
beq指令在ID阶段产生分支结果
· PC+4、28→加法器,运算结果72→PC
· $1,$3数据旁路送比较器,相等则IF.Flush信号有
效,清IF/ID流水线缓冲寄存器内容(插入一条nop
指令)
· PC=72,取转移目标地址指令lw
2007
华东师范大学计算机科学技术系
86
6.6 分支冒险
三、动态分支预测
转移预测可在编译阶段静态完成,也可由
硬件在执行阶段动态完成。
简单的分支预测: 假定分支不发生
预测错误,排空流水线
· 对于较深的流水线分支开销大
· 多发射处理器分支开销大
——静态预测
简单的分支技术会对性能造成过多的浪费
华东师范大学计算机科学技术系
2007
87
三、动态分支预测
动态分支预测
在运行时根据运行时的信息,并通过分析
转移的历史表现来进行转移预测。
部件:分支预测缓存(分支历史表)
一个用分支指令地址的低位寻址的
小型存储器,记录了分支最近是否执行。
可有以下两种形式:
·专用Cache,取指时由指令地址访问
·指令Cache的一部分,随指令一起读出
2007
华东师范大学计算机科学技术系
88
三、动态分支预测
策略:上次执行该指令,分支是否发生?
是,转移取
若预测错误,不正确的指令被删除,预
测位取反,返回原处继续执行正确指令。
缺点:即使该指令执行时,分支多次发生,也
有可能有不发生的时候——预测错误
2007
华东师范大学计算机科学技术系
89
三、动态分支预测
例7)循环与预测
设一循环分支执行时,发生9次分支转
移,该分支的预测位(1位)保存在预测缓
存中,问这种分支预测的正确率是多少?
解:
· 第一次预测错误,因上次循环退出时,分支
未发生
·
最后一次预测错误,因循环时分支发生9次
∴ 二次错误预测,8次正确预测,正确率80%
90
华东师范大学计算机科学技术系
2007
三、动态分支预测
1. 预测器技术:
① 1bit预测器:仅考虑局部信息(例7)
② 局部2bit预测器:仅考虑局部信息
2位预测位方案:
图6-39
采用两位计数器,预测正确时递增,错
误时递减,中心点(10)作为判断是否跳转
的分水岭。
这样例7的第一次预测将不会发生错误,
正确率可提高到90%。
2007
华东师范大学计算机科学技术系
91
三、动态分支预测
③ 相关预测器:还考虑其他转移行为的影响
使用分支指令的局部行为特性和最近执
行的分支的全局信息进行预测判断。
④ Tourenament预测器:整体局部自适应预测器
使用多个预测器
例:一个基于全局信息
一个基于局部信息
2007
2005年:使用30K bit的Tounament预测器
例:Power
5、Pentium 4
华东师范大学计算机科学技术系
92
三、动态分支预测
⑤ 锦标赛预测
使用多种分支预测器,并记录它们谁
产生的结果最好。预测时选择某个行为最
好的预测器的预测结果。
选择子可选1位或2位机制。
⑥ 先进的预测器:Alpha 21264中的预测器
复杂分支预测再加上推理和动态执行
共同保证了指令执行的并行化。
2007
华东师范大学计算机科学技术系
93
三、动态分支预测
2. 分支延时
分支延时时间片调度的方法:
图6-40
① 用来自于分支指令前的指令填充
② 用跳转目标指令填充
③ 用顺序指令填充
延迟分支调度的约束:
· 可调度指令的限制(与转移无关指令)
· 编译时对分支发生与否的预测能力
2007
华东师范大学计算机科学技术系
94
三、动态分支预测
MIPS采用延迟分支法,分支指令后的下一
条指令总是被执行,分支则发生在这条指令执
行完后。
因为分支跳转将计算目标地址,需消耗一
个时钟周期,所以采用延迟分支法是一种消除
这种开销的方法。
另一种方法是采用分支目标缓存,记录分
支目标地址或目标指令。
2007
华东师范大学计算机科学技术系
95
6.6 分支冒险
四、比较几种控制方案的性能
使用SPECint2000混合指令程序:
25%取数(1%取字节+24%取字)
10%存数(1%存字节+9%存字)
11%分支(6%beq,5%bne)
2%跳转(1%jal+1%jr)
52%ALU
2007
华东师范大学计算机科学技术系
96
四、比较几种控制方案的性能
1. 单周期处理器执行一条指令的时间
设:· 访存时间:200ps
· ALU操作时间:100ps
· 寄存器读写延时:50ps
单周期数据通路所需时间:
IF+ID+EX+MEM+WB
200+50+100+200+50=600ps
2007
华东师范大学计算机科学技术系
97
四、比较几种控制方案的性能
2. 多周期处理器的CPI
各类指令所需CPU周期数:
· 取数:5
· 存数:4
· 分支:3
· 跳转:3
图5-30
· ALU:4
CPI= ∑(指令数I / 指令数)×CPIi
CPI=0.25×5+0.1×4+0.52×4+0.11×3+0.02×3
= 4.12
时钟周期必须与功能部件最长的时间延时相
2007 同,为200ps.
98
华东师范大学计算机科学技术系
CPI=1.5×25%+1×10%+1×52%+1.25×11%+2×2%=1.17
四、比较几种控制方案的性能
时钟周期为200ps
3. 流水线CPI
设:流水线方式中,一半的lw指令紧跟使用该取数结
果的指令(数据相关);分支错误预测开销为1
个周期;设发生1/4预测错误;跳转指令消耗2个
时钟周期
解:· 无数据相关的lw执行需1个时钟周期,相关的
为2个周期,平均1.5个时钟周期;
· sw和ALU指令1个时钟周期;
· 分支正确预测1个周期,错误预测2个周期,平
均为1.25个周期;
· 跳转指令2个周期
2007
华东师范大学计算机科学技术系
99
四、比较几种控制方案的性能
比较:
· 单周期设计:600ps
· 多周期设计:200×4.12=824ps
· 流水线设计:200×1.17=234ps
最快
分析:
访存消耗了较长的时钟周期,可分解为2个
时钟周期。这样时钟周期就降低为100ps,对
多周期设计和流水线设计都将有性能上的提高。
完整的5级流水线数据通路和控制电路
2007
华东师范大学计算机科学技术系
图6-41
100
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
6.6
6.7
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
分支冒险
异常
华东师范大学计算机科学技术系
101
6.7 异常
异常将引起程序转移
——控制冒险
导致异常的原因:
· 运算溢出
· I/O设备请求
· 用户程序调用操作系统服务
· 使用未定义指令
· 硬件错误
等
2009
华东师范大学计算机科学技术系
102
6.7 异常
例:执行指令add $1,$2,%1发生溢出
操作:
① 清空流水线
· 增加ID.Flush信号,清“0”ID/EX流水线
缓冲寄存器(与原冒险检测有效信号相或)
· 增加EX.Flush信号,清“0”EX/MEM流水线
缓冲寄存器
② 溢出的中断矢量地址8000 0180→PC
PC MUX改为3to1,建立送入8000 0180的
2007
103
华东师范大学计算机科学技术系
通路。
操作:
③ 保留断点
增加EPC寄存器保留被打断指令的地址
④ 记录引起异常的原因
增加Cause寄存器记录异常类型
⑤ 异常响应优先级
增加优先级判断电路,当多个异常同时发生
时,由优先级判断电路决定响应的优先级。
2007
华东师范大学计算机科学技术系
104
6.7 异常
溢出处理的两种方法:
① 保持源寄存器内容不被目的数覆盖。溢出检
测发生在EX阶段,如前述,增加EX.Flush信
号,清“0”EX/MEM流水线寄存器,阻止写入。
② 溢出指令照常执行
消除该条指令,在异常处理程序中重新执行。
带有异常控制的数据通路
2007
华东师范大学计算机科学技术系
P280图6-42
105
在异常处理程序的开
始处要保护现场
6.7 异常
例8)主程序:
40H
44H
48H
4CH
50H
54H
…
2007
sub
and
or
add
slt
lw
异常处理程序:
$11,$2,$4
$12,$2,$5
$13,$2,$6
$1, $2,$1
$15,$6,$7
$16,50($7)
400000040H sw $25,1000($0)
400000044H sw $26,1004($0)
…
发生运算溢出异常
华东师范大学计算机科学技术系
106
6.7 异常
图6-43描述了发生异常的处理过程:
① 清空流水线
在CC7:指令add及以后指令被清除
② 保留断点和状态
50H→EPC
异常状态→Cause
③ 转异常处理入口
40000040H →PC
中断处理较复杂,需软硬件支持,以后章节讨论
2007
107
华东师范大学计算机科学技术系
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
分支冒险
异常
提高性能
华东师范大学计算机科学技术系
108
6.8 提高性能
增加指令级并行(ILP)的策略:
① 增加流水线的级数,重叠更多指令的执行
② 多发射
设计更多的内部电路,使一条流水线
的每级中发射多条指令
在一个流水线阶段可发射多条指令,
使得指令的执行效率能够超过时钟频率,
达到CPI值小于1。
2009
华东师范大学计算机科学技术系
109
② 多发射
例: 时钟频率为6G的四路多发射微处理器峰
值情况下每秒可执行240亿条指令,CPI值高
达0.25。
若为5级流水线,则任何时刻处理器内部
同时存在20条指令。
当今的高端微处理器每周期可发射3~8条指
令,当然由相关引起的冒险代价也更大。
2007
华东师范大学计算机科学技术系
110
② 多发射
多发射方法:
① 静态多发射(决策在编译时做出)
② 动态多发射(决策在运行时由硬件做出)
主要任务:
① 将满足条件的指令打包到发射槽
② 处理数据冒险和控制冒险
2007
华东师范大学计算机科学技术系
111
6.8 提高性能
一、推测
编译器和处理器利用推测技术对要执行的
指令的属性进行“猜测”。
推测并不一定正确,需相应的配套机制:
· 监测推测的正确性
· 回溯机制(推翻错误的推测)
推测可由编译器或处理器完成
2007
华东师范大学计算机科学技术系
112
一、推测
推测恢复方式:
· 软件恢复
编译器插入检查推测精度的额外指令,
并提供一个修复于程序,当错误推测发生
时调用。
· 硬件恢复
处理器将推测结果保留在缓存中,推测
正确时继续使用;推测错误时则清除,并
重新执行正确的指令序列。
2007
113
华东师范大学计算机科学技术系
一、推测
引发的问题:
对某些指令推测执行可能引发原来并不存
在的异常。
例:lw指令由于推测而被执行,当判断是错误
时,实际引用的是非法地址——引发异常
还有一种情况更复杂,lw指令本身就可能
引发异常
2007
华东师范大学计算机科学技术系
114
一、推测
解决方法:
· 编译器推测机制
通过加入特殊的推测支持语句忽略这些
异常,直至有足够信息判断。
· 基于硬件的推测机制
将异常暂时缓存,直至产生推测正确与
否的最终结果。
正确使用推测机制将提升性能,但不慎使用会
2007
115
华东师范大学计算机科学技术系
对性能产生负面影响。
编译器任务:
6.8
提高性能
· 静态分支推测
· 代码调度,以防止或减少冒险
二、静态多发射
利用编译器对指令打包和处理各种冒险情
况。
发射包:同一周期内发射的指令集合,可由编
译器静态生成,或由处理器动态生成。
超长指令字(VLIW):
将发射包可看成多个操作的长指令。
Intel称为显式并行性处理机(EPIC),IA-64
架钩的安腾和安腾II实现了多发射。
2007
华东师范大学计算机科学技术系
116
二、静态多发射
1. 简单的二路发射MIPS处理器
配对规则:
图6-44
· 一条为整数ALU指令或分支指令,另一条为
存取指令;
·
指令寄存器为64位,对齐放置2条指令,整
数ALU指令或分支指令在前;
·
若第2条阻塞,则补充nop指令,保证成对发
射进入流水线
2007
华东师范大学计算机科学技术系
117
1. 简单的二路发射MIPS处理器
不同的静态多发射处理器处理数据和控制冒险
的方法有所不同。
· 完全由编译器去除所有冒险,调度代码并
插入nop指令,完全不需要硬件支持;
· 编译器负责消除程序内部的相关性,由硬
件电路检测数据冒险并插入nop指令。
2007
华东师范大学计算机科学技术系
118
理论上性能可提高2倍,但实际达不到
1.简单的二路发射MIPS处理器
在静态多发射机制中,编译器还需采取更多优化技术。
静态二路发射的数据通路:
图6-45
为避免结构冒险,需增加以下电路:
① 增加冒险检测和阻塞逻辑;
② 增加寄存器堆端口,支持一个时钟周期内为
ALU读两个寄存器,并同时为sw指令读两
个寄存器,还要为ALU操作写一个寄存器和
为lw指令写一个寄存器;
③ 增加计算有效地址的加法器(原ALU已被
ALU操作占用)。
2007
119
华东师范大学计算机科学技术系
二、静态多发射
2. 简单的多发射代码调度
例9)Loop: lw $t0,0($s1)
addu
sw
addi
bne
$t0,$t0,$s2
$t0,0($s1)
$s1,$s1,-4
$s1,$zero,Loop
解:前3条指令具有相关性;后2条指令也具有
相关性。
这段程序的最佳调度方案:
图6-46
第一次循环需4个时钟周期,在这4个周期内
执行了5条指令,CPI为0.8。
不满意
2007
120
华东师范大学计算机科学技术系
理想情况:2.5周期执行5条指令,CPI=0.5
二、静态多发射
3.多发射流水线的循环展开
循环展开:通过展开得到循环体的多个副本,
从而使得原来不在依次循环中的指
令可一起调度。
是一种重要的编译技术。
讨论例9,设循环索引是4的倍数。
展开以后,产生四个循环体的副本,代码
调度方法如图6-47。
2007
华东师范大学计算机科学技术系
121
3.多发射流水线的循环展开
在展开的过程中,编译器引入了一些额外
的寄存器:$t1,$t2,$t3,称为寄存器重命名
寄存器重命名用来消除非真实的数据依赖
关系,以消除潜在的冒险,方便编译器灵活调
度代码。
反依赖关系(名字依赖关系):
由于重用名字(通常是寄存器名)引入的
一种执行秩序,与两个变量使用的同一数值的
真实依赖不同。
如展开例9中的$t0
2007
华东师范大学计算机科学技术系
122
3.多发射流水线的循环展开
性能分析:
四次循环消耗了8个时钟周期,执行了12条指令
∴ CPI=8/14=0.57
结论:
通过循环展开和代码调度,二路发射流水
线得到了二倍的性能改善。
归功于: · 循环展开
· 二路发射机制
代价:
· 增加了代码量
2007
华东师范大学计算机科学技术系
· 使用了4个临时寄存器 123
二、静态多发射
4.Intel IA-64结构
Intel IA-64结构是一个寄存器-寄存器型
的RISC风格的指令集,支持编译器驱动下显式
地开发指令级并行性。
——显式并行指令计算机(EPIC)
类似MIPS-64,主要区别:
① 有更多的寄存器
128个整数寄存器、128个浮点寄存器、
8个用于分支的寄存器和64个1位的谓词寄
2007
124
华东师范大学计算机科学技术系
存器。支持寄存器窗口;
4.Intel IA-64结构
② 按指令包组织指令。指令包格式固定,规定
了指令间的依赖关系;
③ 包括特殊的指令和设计,支持推测和消除分
支。
通过指令组和指令包,达到比通常的VLIW
更高的灵活性。
2007
华东师范大学计算机科学技术系
125
4.Intel IA-64结构
指令组:
一个连续的、相互之间不存在寄存器级数
据依赖关系的指令序列。
指令组内部指令可全并行执行,由编译器
加入停止标记标明各指令组之间的边界。
2007
华东师范大学计算机科学技术系
126
4.Intel IA-64结构
指令包:
将指令编码形成指令包。每个指令包长度
为128位,由一个5位长的模板字段和三个41位
长的指令组成。
模板字段指明了3条指令所需的功能部件类
型:整数ALU、非整数ALU(包括移位和多媒
体操作)、访存部件、浮点功能部件和分支功
能部件。同时还表明了停止标记的位置。
2007
华东师范大学计算机科学技术系
127
4.Intel IA-64结构
提出谓词化,更灵活地开发并行度。
谓词化:
将指令是否执行与谓词相关联,而不是与
某条分支指令相关联的技术。
例:if(p){statement 1}else{statement 2}
通过谓词化,代码被编译为:
(p) statement 1
(~P)statement 2
2007
华东师范大学计算机科学技术系
128
6.8 提高性能
三、动态多发射处理器
动态多发射处理器即超标量处理器
支持多发射机制:
这点与VLIW不同
· 编译器调度
· 硬件支持,保证执行的正确性
动态流水线调度:
例:P290
下一周期执行的指令是动态选择的,选择依据
的条件有冒险、依赖关系和访内时间等。
2007
华东师范大学计算机科学技术系
129
三、动态多发射处理器
动态流水线调度
组成:
P291图6-49
· 取指、译码和指令发射单元
· 功能单元(10个以上)
带有独立的缓冲器,保存操作数和操作控
制信号
· 指令完成单元
是一个重排序缓冲器,在动态和乱序执行
中,保证指令能够顺序完成
同时,也可提供操作数(类似于旁路器)
2007
华东师范大学计算机科学技术系
130
动态流水线调度
工作原理:
① 指令执行所需的操作数能在寄存器堆或指令
完成单元获取时,读取操作数,并连同译
码产生的操作控制信号一起发射至相应功
能单元的缓冲器
② 若不能满足发射条件,则由硬件定位将产生
运算结果的功能单元,一旦完成,结果送
缓冲器
③ 功能部件的缓冲器一旦具备运算条件,则完
成运算——乱序执行。
2007
华东师范大学计算机科学技术系
131
动态流水线调度
④ 指令完成单元依据取指和译码时记录的指令
顺序回写寄存器或内存结果,完成指令的
执行。
——按序完成
现代的高性能微处理器可在一个周期内发射多
条指令(4~6条),但实际由于依赖、冒险、
访存等关系,无法真正发挥。
2007
华东师范大学计算机科学技术系
132
动态流水线调度
编译器:基于软件的并行性开发方法
静态调度,尽量减少指令依赖关系所
造成的不良后果
硬件:
基于流水线和发射机制
动态调度,根据具体执行情况进行调
整,提高并行性
推测:
可由编译器或硬件完成,增加可用的
并行度,但错误的推测更会降低性能
2007
华东师范大学计算机科学技术系
133
§6 利用流水线提高性能
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
2009
流水线概述
流水线的数据通路
流水线中的控制
数据冒险与转发
数据冒险与阻塞
分支冒险
异常
提高性能
实例:Pentium
4处理器的流水线
华东师范大学计算机科学技术系
134
6.9 实例:Pentium 4处理器的流水线
奔腾CPU框图:
2009
华东师范大学计算机科学技术系
135
6.9 实例:Pentium 4处理器的流水线
主要技术:
.超标量流水线,由U、V两条指令流水线构成;
.独立指令Cache和数据Cache,采用2路组相联结构;
.流水浮点运算部件,采用8段子过程结构:
前4段为指令预取(PF)、指令译码(DI)、地址
生成(D2)、取操作数(EX),在U、V流水线中
完成;
后4段为执行1(X1)、执行2(X2)、结果写回寄
存器对(WF)、错误报告(ER),在浮点运算部
件中完成;
.动态转移预测技术
·2007常用指令用阵列逻辑实现,指令执行速度快
136
华东师范大学计算机科学技术系
6.9 实例:Pentium 4处理器的流水线
Pentium 4处理器采用了深流水线设计和多发
射技术,以达到较低的CPI值和较高的主频。
1.Pentium 4处理器的微结构
图6-50
· 指令踪迹缓存:记录初步译码后得到的微
操作
· 指令队列:允许同时存在的微操作为126条
48条load操作、24条store操作
· 7个功能部件
2007
华东师范大学计算机科学技术系
137
6.9 实例:Pentium 4处理器的流水线
2. Pentium 4流水线的指令流
图6-51
取指、译码产生微操作→微操作队列→动
态调度重排序(寄存器重命名) →各功能
操作队列→ 各功能部件执行→指令完成单
元(重排序按序完成)
· Pentium 4采用深流水线(级数为20以上)
· Pentium 系列采用微操作机制,每个时钟
周期最多完成3个微操作;
· 寄存器重命名将8个逻辑寄存器映射到128个
物理寄存器
2007
华东师范大学计算机科学技术系
138
6.9 实例:Pentium 4处理器的流水线
3. Pentium 4的动态执行技术
· 通过预测程序流来调整指令的执行;
· 分析程序的数据流来选择指令执行的最佳
顺序。
实现动态执行的关键是使用一个微操作
队列,以开辟一个较长的指令窗口,以便
允许执行单元能在一个较大的范围内调遣
和执行已译码过的程序指令流。
以无序方式执行指令的微操作,而以有
序方式完成指令功能
2007
139
华东师范大学计算机科学技术系
6.9 实例:Pentium 4处理器的流水线
4. 对流水线性能产生负面影响的主要原因:
· 使用那些不能映射为3条或3条以下微操作的
复杂指令;
· 难于预测的分支,增加错误预测的开销
· 较低的指令局部性,使得踪迹缓存不能有效
工作
· 较长的依赖关系,容易造成流水线的阻塞
· 访存延迟
2007
华东师范大学计算机科学技术系
140
§6 利用流水线提高性能
结论:
各流水线体系结构的时钟速率和CPI
图6-52
越往右上方,性能越高
各流水线体系结构所需的硬件数和指令延时
图6-53
越往右上方,硬件代价越高,指令因多发射增
加了时延
2007
华东师范大学计算机科学技术系
141
§6 利用流水线提高性能
实例:MC88110 CPU
Motorola公司的RISC CPU产品
目标是以较好的性能价格比作为PC和
工作站的通用微处理器
2007
华东师范大学计算机科学技术系
142
用于保存转移目标指令
两个寄存器堆:
组成:
所有这些Cache、寄存器堆、功能部件,在处理器中
实例:
·• 1个控制部件
通用寄存器堆,用于整数和地址指针
通过六条80位宽的内部总线相连接
·• 3个cache:指令cache、数据cache、目标cache(TIC)
扩展寄存器堆,用于浮点数
其中2条源1总线、2条源2总线、2条目标总线
· 12个执行功能部件
① 结构框图
整数
部件(2)
位处理
部件
LOAD/STORE
部件
TLB
2007
浮点加
法部件
通用寄 扩展寄
存器堆 存器堆
tag 数据 cache
监听
(8KB)
乘法
部件
除法
部件
控制
部件
图形
部件(2)
超标量指
令派遣/
转移部件
指令 cache
tag
(8KB)
总线接口
华东师范大学计算机科学技术系
32位地址总线
64位数据总线
TIC
TLB
143
实例
2. 指令流水线
MC 88110是超标量流水CPU,具有2条流
水线,每个机器时钟周期完成2条指令
流水线共分为三段:
· 取指和译码(F&D)段
完成:取指、译码、取操作数
并判是否进入EX段
· 执行(EX)段
· 写回(WB)段
2007
144
华东师范大学计算机科学技术系
设有专用通道
F&D段需要一个时钟周期,完成:
2. 指令流水线
· 从指令cache中取一对指令并译码
· 正常流动情况:
从寄存器堆取出操作数
· 判断是否把指令发射到EX段
I1 F&D1
I2 F&D2
发射
EX1
EX2
I3 F&D3
I4 F&D4
WB1
WB2
• EX段执行的结果在WB
段写回寄存器堆,
WB段只需半个时钟周
期
• 为了解决数据相关冲
突,EX段执行的结果
同时经定向传送电路
提前传送到ALU
前送
发射
EX3
EX4
I5 F&D5
I6 F&D6
WB3
WB4
前送
EX段对于大多数指令只需
发射
一个时钟周期,某些指令
2007
华东师范大学计算机科学技术系
可能多于一个时钟周期
EX5
EX6
WB5
WB6
145
实例
3. 指令动态调度策略
① 策略:按序发射、按序完成
ⅰ指令派遣单元给出地址
从指令Cache中依次取出2条指令(一
对),进入流水线
ⅱ 情况一:正常流动
2007
情况二:这对指令的第一条指令由于资源冲
突或数据相关冲突而阻塞,则这一
对指令均停止发射,等待冲突消除
情况三:若是第一条指令无冲突,而第二条
指令阻塞,则第一条指令正常发射,
第二条指令等待冲突消除,再与新
取的下一条指令重新配对
146
华东师范大学计算机科学技术系
3. 指令动态调度策略
发生相关冲突,采用按序发射、按序完成策略
第一条指令无冲突,而第二条指令阻塞,则第
一条指令正常发射,第二条指令等待冲突消除,
再与新取的下一条指令重新配对
I1 F&D1
I2 F&D2
发射
EX1
WB1
前送
I3 F&D3
EX2
EX3
发射
I4 F&D4
I5 F&D5
2007
WB2
WB3
前送
发射
华东师范大学计算机科学技术系
EX4
EX5
WB4
WB5
147
3. 指令动态调度策略
② 判断能否发射指令的方法——计分牌法
每个寄存器均设一个位向量:
· 指令执行时置“1”,表示该寄存器“忙”
· 结果写回时清零
判断能否发射的条件:
该指令所用寄存器(源、目的)的位向量
均为“0” —— 非忙
否则等待
2007
华东师范大学计算机科学技术系
148
3. 指令动态调度策略
③ 按序完成方法
设置一个FIFO指令执行队列(历史缓冲器)
每当一条指令发射出去,它的副本就被送到
FIFO队尾,队列最多能保存12条指令
只有前面的所有指令执行完,这条指令才
到达队首,当它到达队首并执行完毕后才
离开队列
2007
华东师范大学计算机科学技术系
149
3. 指令动态调度策略
④ 转移处理方法
· 延迟转移法
延迟转移是一个选项(.n),如果采用这个
选项(如:指令bcnd.n),则跟随在转移指
令后的指令将被发射,如果不采用这个选
项,则在转移指令发射之后的转移延迟时
间片内没有任何指令被发射,延迟转移通
过编译程序来调度
· 目标指令cache(TIC)法
TIC是一个32项的全相联cache,每项能
保存转移目标路径的前两条指令
2007
华东师范大学计算机科学技术系
150
3. 指令动态调度策略
例10)
超标量流水线结构模型 :
取指段
译码段
执行段
写回段
存/取部件
IF1
发射
IF2
WB1
ID1
ID2
加1
乘1
加2
乘2
乘3
WB2
策略:按序发射、按序完成,不重新配对
2007
华东师范大学计算机科学技术系
151
I1: LAD R1,A
; M(A) R1
RAW
I2:
ADD R2,R1
;(R2)+(R1) R2
例10)
I3: ADD R3,R4
;(R3)+(R4) R3
WAR,但无相关错
给出执行6条指令序列,流水线各段的推进
I4:
MUL R4,R5
;(R4)(R5) R4
I5: LAD R6,B
; M(b) R6
WAW、RAW
情况。
I6: MUL R6,R7
;(R6)(R7) R6
译码段
执行段
写回段
时钟
RAW
冲突
无相
关错
WAW
RAW
冲突
2007
I1
I2
I2
2
I1
3
I3
I4
I2
I5
I6
I2 I3 I4
I6
按序
完成
I5
I1
4
5
I3 I4
I2
I5
I4 I6
I5
I6
I6
华东师范大学计算机科学技术系
I3
6
7
I4
I5
8
9
I6
152
10
本章重点
2009
♦
流水线原理
♦
流水线数据通路和控制
♦
流水线引发的问题及解决方法
♦
提高流水线性能的技术
华东师范大学计算机科学技术系
153
作业
P298:
6.1
6.47
6.2
6.51
6.4
6.6
2009
华东师范大学计算机科学技术系
154
补充题:
1.有4级流水线分别完成取指、指令译码并取数、
运算、送结果四步操作,假设完成各步操作的时
间依次为100ps,100ps,80ps,50ps。
请问:
(1)流水线的操作周期应设计为多少?
(2)若相邻两条指令发生数据相关,而且在硬件上
不采取措施,那么第二条指令要推迟多少时间
进行。
(3)如果在硬件设计上加以改进,至少需推迟多少
时间?
2009
华东师范大学计算机科学技术系
155
2.超标量流水线结构模型如ppt151图:
现有如下6条指令序列:
I1
I2
I3
I4
I5
I6
LAD
SUB
MUL
ADD
LAD
ADD
R1,B;
R2,R1;
R3,R4;
R4,R5;
R6,A;
R6,R7;
M(B) → R1, M(B)是存储器单元
(R2)-(R1) → R2
(R3)×(R4) → R3
(R4)+(R5) → R4
M(A) → R6, M(A)是存储器单元
(R6)+(R7) →R6
请画出:
(1)按序发射按序完成各段推进情况图
(不重新配对);
(2)按序发射按序完成的流水线时空图。
2009
华东师范大学计算机科学技术系
156