上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx

上传人:b****6 文档编号:19239535 上传时间:2023-01-04 格式:DOCX 页数:24 大小:252.42KB
下载 相关 举报
上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx_第1页
第1页 / 共24页
上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx_第2页
第2页 / 共24页
上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx_第3页
第3页 / 共24页
上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx_第4页
第4页 / 共24页
上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx

《上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。

上海交通大学 计算机组成原理考研辅导讲稿8Word格式文档下载.docx

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)

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

执行时的情况:

LDF0,0(R1)1

stall2

ADDDF4,F0,F23

stall4

stall5

SD0(R1),F46

SUBIR1,R1,87

BNEZR1,loop8

stall9

指令调度后:

LDF0,0(R1)

stall

ADDDF4,F0,F2

SUBIR1,R1,8

BNEZR1,loop

SD8(R1),F4

执行时间减少到6个时钟周期。

将上述程序展开3次之后

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个周期。

LDF6,-8,0(R1)

LDF10,-16(R1)

LDF14,-24(R1)

ADDDF8,F6,F2

ADDDF12,F10,F2

ADDDF16,F14,F2

SD0(R1),F4

SD-8(R1),F8

SD-16(R1),F12

SUBIR1,R1,#32

SD8(R1),F16

调度后,执行时间为14个周期,平均每个迭代3.5个周期。

指令流水处理中的相关性:

(1)数据相关。

如果满足以下两个条件,则称指令j与指令i是数据相关的:

A.指令i产生的结果被指令j使用;

B.指令j与指令k数据相关,而指令k与指令i数据相关。

上述程序简单展开的结果是:

SUBIR1,R1,#8

LDF6,0(R1)

SD0(R1),F8

LDF10,0(R1)

SD0(R1),F12

LDF14,0(R1)

SD0(R1),F16

这里,相关性都来自减法指令。

它使得指令只能顺序执行,而且指令数量多。

(2)名字相关。

名字相关发生在当两条指令使用相同的寄存器或存储单元(称为名字)时。

但是在指令之间不存在涉及该名字的数据流。

在指令i及其后的指令j之间存在两种名字相关性。

A.反相关。

当指令j写一个寄存器,而指令i读这个寄存器时发生反相关。

反相关对应于WAR险象,这种险象的检测使得反相关指令对保持其原有的顺序。

B.输出相关。

输出相关发生于指令i和指令j写相同寄存器或存储器单元时。

指令的顺序必须保持。

输出相关对应于WAW险象,可通过检测手段发现。

解决名字相关的方法:

寄存器更名(Registerrename)。

例如对于上述循环的例子,如果不进行寄存器重新命名,其名字相关的情况如下所示:

LDF0,-8(R1)

SD-8(R1),F4

LDF0,-16(R1)

SD-16(R1),F4

LDF0,-24(R1)

SD-24(R1),F4

这些名字相关迫使指令序列只能按序执行。

在经过了寄存器重新命名之后,名字相关就被消除,而只剩下数据相关。

LDF6,-8(R1)

SD-24(R1),F16

(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指令由整数部件执行(无流水功能),加法和减法都由加法部件执行,乘法和除法运算操作由相应的部件执行。

指令状态表

指令状态

指令

启动

读操作数

执行完成

写结果

1

2

3

4

5

6

8

功能部件状态表

部件

功能部件状态

名称

Busy

Op

Fi

Fj

Fk

Qj

Qk

Rj

Rk

Integer

Yes

Load

F2

R3

No

Mult1

Mult

F0

F4

Mult2

Add

Sub

F8

F6

Divide

Div

F10

寄存器结果状态表

F4

F6

F12

F30

假定加法部件的执行需要2个时钟周期,乘法需要10个周期,除法需要40个周期。

在MULTD和DIVD写结果时的记分牌情况如下所示。

9

19

20

11

12

21

60

61

13

14

16

22

功能

状态

部件名

寄存器状态表

2.Tomasulo调度法

特点:

寄存器更名——消除名字相关

分布式保存站——并行调度消除调度瓶颈

写回控制——写写相关时最后一条指令写入

命令队列——使取指令与启动执行退耦

指令序列及其执行状态如下(假定执行周期数与上述相同):

15

56

57

10

各保存站情况如下:

Vj

Vk

Add1

SUB

Mem[34+Regs[R21]]

Load2

Add2

ADD

Add3

MULT

Regs[F4]

DIV

Mem[34+Regs[R2]]

各浮点寄存器状态如下表:

三、分支预测

静态:

永远不转移,永远转移,后向转移(准确率40%~65%)(i486)

动态:

1位,2位,多位(1级,2级)

建立一个记录转移状态的cache

1位动态:

根据上次转移情况预测下次,准确率77%~79%(Alpha)

2位动态:

根据上两次转移情况预测下次,准确率78%~89%(奔腾)

2级预测:

根据多次转移情况选择预测状态,准确率93%(P6)

分支目标缓存:

快速形成分支目标地址或者目标指令。

图中:

目标缓存——分支目标地址

预测PC——分支指令地址标记

预测状态位——预测状态的编码

四、多重指令启动

目标:

在一个时钟周期内能够启动多条指令。

方法:

动态多重指令启动(超标量,超流水),静态多重指令启动(VLIW)。

退耦结构:

将数据装载操作和数据运算并行进行,并采用load/store缓存,使得访存操作与运算操作之间存在一个弹性关系。

表8-4(假设可同时启动一条浮点指令和一条整型指令)

迭代编号

启动周期

执行周期

写回周期

LDF0,0(R1)

-

BNEZR1,LOOP

时空图表示:

超长指令字:

指令中包含多个部件的操作

访存部件1

访存部件2

浮点部件1

浮点部件2

整型/转移

LDF18,-32(R1)

LDF22,-40(R1)

LDF26,-48(R1)

ADDDF20,F18,F2

ADDDF24,F22,F2

ADDDF28,F26,F2

SD-32(R1),F20

SD-40(R1),F24

SUBIR1,R1,#56

SD+8(R1),F28

执行时间为9个周期,平均每个迭代1.28个周期。

五、指令级并行性的进一步开发

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)

程序浪费一个存储器操作节拍,转移不发生时将发生一个数据相关停顿,因为转移指令后的第二条LW指令与上一条指令是相关的。

用条件访存指令LWC,程序改为:

LWCR8,20(R10),R10ADDR6,R3,R7

5.推测执行——将指令的执行与指令结果的写回退耦,允许指令预执行。

指令的提交:

结果写回

提交方式:

有序提交(可实现精确中断),无序提交(需进行相关性检测)

重排序缓存:

保存指令执行完成后但尚未提交的结果。

9,10

第三节向量流水技术

一、向量指令和数据的编码表示

向量指令:

以向量数据为操作数的指令。

向量操作数:

包含n个数据元素的有序集合,n称为向量的长度。

在FORTRAN扩展语言中,向量元素子集的表示:

初始下标:

终止下标:

下标增量

e1:

e2:

e3

e2

*

*:

向量数据的压缩和展开

自定义类型的数据

标志符

数据

图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

又如:

读写相关

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.向量归约操作

递归折叠法:

思考题:

画出本例的流水线的时空图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1