上海交通大学 计算机组成原理考研辅导讲稿8.docx
- 文档编号:6233950
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:24
- 大小:252.42KB
上海交通大学 计算机组成原理考研辅导讲稿8.docx
《上海交通大学 计算机组成原理考研辅导讲稿8.docx》由会员分享,可在线阅读,更多相关《上海交通大学 计算机组成原理考研辅导讲稿8.docx(24页珍藏版)》请在冰豆网上搜索。
上海交通大学计算机组成原理考研辅导讲稿8
第八章流水技术
第一节流水线工作原理
流水工作方式:
将一个计算任务细分成若干个子任务,每个子任务由专门的部件处理,多个计算任务依次进行并行处理。
一、流水线的分类
操作部件级,指令级,处理器级
单功能,多功能
静态,动态
线性,非线性
标量,向量
二、流水线的性能
1.吞吐率:
单位时间内流水线能处理的任务数量。
对于线性流水线:
∆t=max{t1,…,ti,…,tm}+tl
时空图:
最大吞吐率:
流水线达到不间断流水的稳定状态后可获得的吞吐率。
流水线瓶颈的解决:
对于线性流水线,完成n个任务所需时间为T=m∆t+(n-1)∆t,实际吞吐率为:
2.加速比:
流水方式的工作速度与等效的顺序工作方式时间的比值。
对于线性流水线:
3.使用效率:
工作时间的时空区与流水线中各段总的时空区之比。
退耦流水线
三、流水线的相关处理
三种相关性:
1.资源相关(结构相关)
解决方法:
增加资源
2.数据相关(RAW、WAR、WAW)
解决方法:
停顿、编译检测、旁路相关专用通路
3.控制相关。
解决方法:
提前判断、转移延迟槽等
四、流水线的调度
非线性流水线的调度方法
预约表
表8-1非线性流水线预约表
t1
t2
t3
t4
t5
t6
t7
t8
t9
S1
x
x
S2
x
x
x
S3
x
S4
x
x
S5
x
x
禁止表
F={1,5,6,8}
冲突向量
C=10110001
调度状态转换图
调度方案比较
表8-2各种调度方案的平均间隔拍数
调度策略
平均间隔周期
bc:
(3,4)
3.50
ad:
(2,7)
4.50
ade:
(2,2,7)
3.67
abcb:
(3,4,2,7)
4.25
abc:
(3,4,7)
4.67
acb:
(4,3,7)
4.67
ab:
(3,7)
5.00
ac:
(4,7)
5.50
a:
(7)
7.00
习题:
5,6
第二节标量流水技术
一、基本概念
指令流水线结构:
指令级并行性:
指令序列中的并行性。
基本块
循环级并行性:
循环递归之间的并行性。
例:
for(i=1;i<=1000;i=i+1)
x[i]=x[i]+s;
循环展开后
loop:
LDF0,0(R1);F0=arrayelement
ADDDF4,F0,F2;addscalarinF2
SD0(R1),F4;storeresult
SUBIR1,R1,8;decrementpointer8bytes(perDW)
BNEZR1,loop;branchifR1!
=zero
执行时的情况:
loop:
LDF0,0(R1)1
stall2
ADDDF4,F0,F23
stall4
stall5
SD0(R1),F46
SUBIR1,R1,87
BNEZR1,loop8
stall9
指令调度后:
loop:
LDF0,0(R1)
stall
ADDDF4,F0,F2
SUBIR1,R1,8
BNEZR1,loop
SD8(R1),F4
执行时间减少到6个时钟周期。
将上述程序展开3次之后
loop:
LDF0,0(R1)2
ADDDF4,F0,F23
SD0(R1),F41
LDF6,-8,0(R1)2
ADDDF8,F6,F23
SD-8(R1),F81
LDF10,-16(R1)2
ADDDF12,F10,F23
SD-16(R1),F121
LDF14,-24(R1)2
ADDDF16,F14,F23
SD-24(R1),F161
SUBIR1,R1,#321
BNEZR1,loop2
未调度时,执行时间为27个周期,平均每个迭代6.8个周期。
loop:
LDF0,0(R1)
LDF6,-8,0(R1)
LDF10,-16(R1)
LDF14,-24(R1)
ADDDF4,F0,F2
ADDDF8,F6,F2
ADDDF12,F10,F2
ADDDF16,F14,F2
SD0(R1),F4
SD-8(R1),F8
SD-16(R1),F12
SUBIR1,R1,#32
BNEZR1,loop
SD8(R1),F16
调度后,执行时间为14个周期,平均每个迭代3.5个周期。
指令流水处理中的相关性:
(1)数据相关。
如果满足以下两个条件,则称指令j与指令i是数据相关的:
A.指令i产生的结果被指令j使用;
B.指令j与指令k数据相关,而指令k与指令i数据相关。
上述程序简单展开的结果是:
loop:
LDF0,0(R1)
ADDDF4,F0,F2
SD0(R1),F4
SUBIR1,R1,#8
LDF6,0(R1)
ADDDF8,F6,F2
SD0(R1),F8
SUBIR1,R1,#8
LDF10,0(R1)
ADDDF12,F10,F2
SD0(R1),F12
SUBIR1,R1,#8
LDF14,0(R1)
ADDDF16,F14,F2
SD0(R1),F16
SUBIR1,R1,#8
BNEZR1,loop
这里,相关性都来自减法指令。
它使得指令只能顺序执行,而且指令数量多。
(2)名字相关。
名字相关发生在当两条指令使用相同的寄存器或存储单元(称为名字)时。
但是在指令之间不存在涉及该名字的数据流。
在指令i及其后的指令j之间存在两种名字相关性。
A.反相关。
当指令j写一个寄存器,而指令i读这个寄存器时发生反相关。
反相关对应于WAR险象,这种险象的检测使得反相关指令对保持其原有的顺序。
B.输出相关。
输出相关发生于指令i和指令j写相同寄存器或存储器单元时。
指令的顺序必须保持。
输出相关对应于WAW险象,可通过检测手段发现。
解决名字相关的方法:
寄存器更名(Registerrename)。
例如对于上述循环的例子,如果不进行寄存器重新命名,其名字相关的情况如下所示:
loop:
LDF0,0(R1)
ADDDF4,F0,F2
SD0(R1),F4
LDF0,-8(R1)
ADDDF4,F0,F2
SD-8(R1),F4
LDF0,-16(R1)
ADDDF4,F0,F2
SD-16(R1),F4
LDF0,-24(R1)
ADDDF4,F0,F2
SD-24(R1),F4
SUBIR1,R1,#32
BNEZR1,loop
这些名字相关迫使指令序列只能按序执行。
在经过了寄存器重新命名之后,名字相关就被消除,而只剩下数据相关。
loop:
LDF0,0(R1)
ADDDF4,F0,F2
SD0(R1),F4
LDF6,-8(R1)
ADDDF8,F6,F2
SD-8(R1),F8
LDF10,-16(R1)
ADDDF12,F10,F2
SD-16(R1),F12
LDF14,-24(R1)
ADDDF16,F14,F2
SD-24(R1),F16
SUBIR1,R1,#32
BNEZR1,loop
(3)控制相关。
控制相关决定了转移指令与其它指令之间的执行顺序。
程序中除了开始的第一个基本块之外,其它每条指令都对某些分支指令有控制相关性,通常必须保持这种控制相关性。
控制相关导致两个基本约束:
A.一条与一个分支相关的指令不能移动到这个分支指令之前而使这条指令不受该分支的控制。
B.一条与一个分支不相关的指令不能移动到这个分支之后而使这条指令受到该分支指令的控制。
上例中循环展开时取消了一些控制指令,因而消除了一些控制相关。
两种保持控制相关性的方法:
(1)按序执行;
(2)检测控制或分支险象,保证与分支指令控制相关的指令在分支的方向明确之后才执行,而与分支指令不相关的指令则可以提前或者延迟执行。
控制相关本身不是必须保持不变的本质因素。
必须保持不变的是程序的两个特性:
异常行为和数据流。
例如:
BEQZR2,L1
LWR1,0(R2)
L1:
这里只存在控制相关,不存在数据相关。
习题:
7
二、指令的动态调度
静态调度:
用编译调度
动态调度:
用硬件调度
基本思想:
无序执行——打破指令执行的顺序限制。
有序指令启动:
DIVDF0,F2,F4
ADDDF10,F0,F8
SUBDF12,F8,F14
第三条指令不能提前启动。
无序指令启动的方法:
记分牌方法,Tomasulo法
1.记分牌方法
记分牌的构成:
(1)指令状态表。
(2)功能部件状态表。
(3)寄存器结果状态表。
四个执行阶段:
启动、读操作数、执行、写结果
(1)启动规则:
无结构冲突,没有WAW相关
(2)读操作数规则:
操作数具备——消除RAW相关
(3)写结果规则:
前面指令已读取操作数或者无数据相关——消除WAR相关
例如:
一个具有五个功能部件的CPU,包括一个整数部件(Integer)、两个乘法部件(Mult1,Mult2)、一个加法部件(Add)和一个除法部件(Divide)。
假定以下指令序列:
LDF6,34(R2)
LDF2,45(R3)
MULTDF0,F2,F4
SUBDF8,F6,F2
DIVDF10,F0,F6
ADDDF6,F8,F2
这里LD指令由整数部件执行(无流水功能),加法和减法都由加法部件执行,乘法和除法运算操作由相应的部件执行。
指令状态表
指令状态
指令
启动
读操作数
执行完成
写结果
LDF6,34(R2)
1
2
3
4
LDF2,45(R3)
5
6
7
MULTDF0,F2,F4
6
SUBDF8,F6,F2
7
DIVDF10,F0,F6
8
ADDDF6,F8,F2
功能部件状态表
部件
功能部件状态
名称
Busy
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
Integer
Yes
Load
F2
R3
No
Mult1
Yes
Mult
F0
F2
F4
Integer
No
Yes
Mult2
No
Add
Yes
Sub
F8
F6
F2
Integer
Yes
No
Divide
Yes
Div
F10
F0
F6
Mult1
No
Yes
寄存器结果状态表
F0
F2
F4
F6
F8
F10
F12
…
F30
Mult1
Integer
Sub
Divide
假定加法部件的执行需要2个时钟周期,乘法需要10个周期,除法需要40个周期。
在MULTD和DIVD写结果时的记分牌情况如下所示。
指令状态表
指令状态
指令
启动
读操作数
执行完成
写结果
LDF6,34(R2)
1
2
3
4
LDF2,45(R3)
5
6
7
8
MULTDF0,F2,F4
6
9
19
20
SUBDF8,F6,F2
7
9
11
12
DIVDF10,F0,F6
8
21
60
61
ADDDF6,F8,F2
13
14
16
22
功能部件状态表
功能
部件
状态
部件名
Busy
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
Integer
No
Mult1
Yes
Mult
F0
F2
F4
No
No
Mult2
No
Add
Yes
Add
F6
F8
F2
No
No
Divide
Yes
Div
F10
F0
F6
Mult1
No
Yes
寄存器状态表
F0
F2
F4
F6
F8
F10
F12
…
F30
Mult1
Add
Divide
习题:
12
2.Tomasulo调度法
特点:
寄存器更名——消除名字相关
分布式保存站——并行调度消除调度瓶颈
写回控制——写写相关时最后一条指令写入
命令队列——使取指令与启动执行退耦
例如:
指令序列及其执行状态如下(假定执行周期数与上述相同):
指令状态表
指令状态
指令
启动
执行完成
写结果
LDF6,34(R2)
1
3
4
LDF2,45(R3)
2
4
5
MULTDF0,F2,F4
3
15
16
SUBDF8,F6,F2
4
7
8
DIVDF10,F0,F6
5
56
57
ADDDF6,F8,F2
6
10
11
各保存站情况如下:
保
存
站
部件名
Busy
Op
Vj
Vk
Qj
Qk
Add1
Yes
SUB
Mem[34+Regs[R21]]
Load2
Add2
Yes
ADD
Add1
Load2
Add3
No
Mult1
Yes
MULT
Regs[F4]
Load2
Mult2
Yes
DIV
Mem[34+Regs[R2]]
Mult1
各浮点寄存器状态如下表:
F0
F2
F4
F6
F8
F10
F12
…
F30
Mult1
Load2
Add2
Add1
Mult2
三、分支预测
静态:
永远不转移,永远转移,后向转移(准确率40%~65%)(i486)
动态:
1位,2位,多位(1级,2级)
建立一个记录转移状态的cache
1位动态:
根据上次转移情况预测下次,准确率77%~79%(Alpha)
2位动态:
根据上两次转移情况预测下次,准确率78%~89%(奔腾)
2级预测:
根据多次转移情况选择预测状态,准确率93%(P6)
分支目标缓存:
快速形成分支目标地址或者目标指令。
图中:
目标缓存——分支目标地址
预测PC——分支指令地址标记
预测状态位——预测状态的编码
四、多重指令启动
目标:
在一个时钟周期内能够启动多条指令。
方法:
动态多重指令启动(超标量,超流水),静态多重指令启动(VLIW)。
退耦结构:
将数据装载操作和数据运算并行进行,并采用load/store缓存,使得访存操作与运算操作之间存在一个弹性关系。
表8-4(假设可同时启动一条浮点指令和一条整型指令)
迭代编号
指令
启动周期
执行周期
写回周期
1
LDF0,0(R1)
1
2
4
1
ADDDF4,F0,F2
1
5
8
1
SD0(R1),F4
2
9
-
1
SUBIR1,R1,#8
3
4
5
1
BNEZR1,LOOP
4
5
-
2
LDF0,0(R1)
5
6
8
2
ADDDF4,F0,F2
5
9
12
2
SD0(R1),F4
6
13
-
2
SUBIR1,R1,#8
7
8
9
2
BNEZR1,LOOP
8
9
-
时空图表示:
超长指令字:
指令中包含多个部件的操作
访存部件1
访存部件2
浮点部件1
浮点部件2
整型/转移
LDF0,0(R1)
LDF6,-8(R1)
LDF10,-16(R1)
LDF14,-24(R1)
LDF18,-32(R1)
LDF22,-40(R1)
ADDDF4,F0,F2
ADDDF8,F6,F2
LDF26,-48(R1)
ADDDF12,F10,F2
ADDDF16,F14,F2
ADDDF20,F18,F2
ADDDF24,F22,F2
SD0(R1),F4
SD-8(R1),F8
ADDDF28,F26,F2
SD-16(R1),F12
SD-24(R1),F16
SD-32(R1),F20
SD-40(R1),F24
SUBIR1,R1,#56
SD+8(R1),F28
BNEZR1,LOOP
执行时间为9个周期,平均每个迭代1.28个周期。
习题:
15
五、指令级并行性的进一步开发
1.相关性的检测与消除
采用编译技术消除相关性(见书上例子)
2.软件流水
重新组织循环程序
例:
对于前面的循环例子
3.路径调度技术
将指令调度的范围扩展到跨越转移指令的更大的区域,开发非循环分支程序中的并行性,用于VLIW。
两种步骤:
路径选择,路径压缩
4.条件指令
给指令增加一个条件,以消除转移指令,或使得指令能够跨越转移指令进行调度。
例:
语句
if(A==0){S=T;}
在一般的计算机中转换成
BNEZR1,L
MOVR2,R3
L:
可以用一条条件传输指令,在第三个操作数为零时进行数据传输操作:
CMOVZR2,R3,R1
又如,对于下列双启动的超标量机指令序列:
LWR1,40(R2)ADDR3,R4,R5
ADDR6,R3,R7
BEQZR10,L
LWR8,20(R10)
LWR9,0(R8)
L:
程序浪费一个存储器操作节拍,转移不发生时将发生一个数据相关停顿,因为转移指令后的第二条LW指令与上一条指令是相关的。
用条件访存指令LWC,程序改为:
LWR1,40(R2)ADDR3,R4,R5
LWCR8,20(R10),R10ADDR6,R3,R7
BEQZR10,L
LWR9,0(R8)
5.推测执行——将指令的执行与指令结果的写回退耦,允许指令预执行。
指令的提交:
结果写回
提交方式:
有序提交(可实现精确中断),无序提交(需进行相关性检测)
重排序缓存:
保存指令执行完成后但尚未提交的结果。
习题:
9,10
第三节向量流水技术
一、向量指令和数据的编码表示
向量指令:
以向量数据为操作数的指令。
向量操作数:
包含n个数据元素的有序集合,n称为向量的长度。
在FORTRAN扩展语言中,向量元素子集的表示:
初始下标:
终止下标:
下标增量
e1:
e2:
e3
e1:
e2
*
e1:
*:
e3
向量数据的压缩和展开
自定义类型的数据
标志符
数据
图8-13带标志符数据表示格式
优点:
(1)简化指令系统,
(2)数据类型检查和转换能够用硬件实现。
(3)硬件能自动转换数据转换。
(4)方便了程序调试。
主要问题:
(1)使数据区域占用的存储空间增加。
(2)指令执行速度将减慢。
(3)数据的初始化复杂。
数据描述符:
用于描述复合数据类型。
格式:
例子:
二、向量流水原理
典型的向量机基本系统结构
六种向量指令
(1)向量-向量指令。
例:
ADDVV1,V2,V3
(2)向量-标量指令。
例:
ADDVV1,F2,V3
(3)向量-存储器指令。
例:
LVV1,R1
(4)向量归约指令。
例:
MAXF0,V1
(5)收集-扩展指令。
Gather-Scatter
(6)屏蔽指令。
例:
SENSVF0,V1
例如,计算Y=a*X+Y
LDF0,a;标量a装入F0
LVV1,Rx;装入向量X到V1,Rx为向量X的首址
MULTVV2,F0,V1;向量X与标量a相乘,结果写入V2
LVV3,Ry;装入向量Y,Ry为向量Y的首址
ADDVV4,V2,V3;向量加,结果写入V4
SVRy,V4;存结果向量,SV为向量存指令
地址生成:
向量跨步
三、提高向量处理性能的方法
1.多功能部件的并行操作
(Cray-1的结构)
相关的检测
数据相关:
读读相关
ADDVV4,V1,V2;V4←V1+V2
ANDVV5,V2,V3;V5←V2∧V3
又如:
读写相关
ADDVV4,V1,V2;V4←V1+V2
ANDVV5,V4,V3;V5←V4∧V3
资源冲突
ADDVV3,V1,V2;V3←V1+V2
ADDVV6,V4,V5;V6←V4+V5
2.链接技术。
利用向量指令间存在的写后读(RAW)的数据相关性采用专用通道来加快向量指令序列执行速度。
例如:
ADDVV1,V2,V3;V1←V2+V3
MULTVV4,V1,V5;V4←V1+V5
执行时间:
(1+6+1)+N-1
又如:
LVV3,A;V3←A
ADDVV2,V0,V1;V2←V0+V1
MULTVV4,V2,V3;V4←V2×V3
3.条件语句的处理。
采用屏蔽向量
例如:
do100i=1,64
if(A(i).ne.0)then
A(i)=A(i)-B(i)
endif
100continue
的向量指令为:
LVV1,Ra;将向量A装入V1
LVV2,Rb;将向量B装入V2
LDF0,#0;将浮点数0装入F0
SENSVF0,V1;若V1(i)≠F0,则将VMi置为1
SUBVV1,V1,V2;在屏蔽向量控制下进行减法操作
CVM;将屏蔽向量寄存器置为全"1"
SVRa,V1;将结果存入A
屏蔽向量不能减少执行时间
4.向量归约操作
递归折叠法:
思考题:
画出本例的流水线的时空图
习题:
21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海交通大学 计算机组成原理考研辅导讲稿8 计算机 组成 原理 考研 辅导 讲稿