5 100101 5 4 2 5 100111 4 101101 2 101111 5 调度方案 2,5 2,2,5 4,5 4 5 最佳的无冲突调度方案为 2,2,5, 2、
S5 S4 S3 S2 1 平均延迟时间 3.5 3 4.5 4 5 1 2 3 1 1 2 2 3 6 2 1 3 2 1 7 2 3 3 2 3 8 3 4 3 4 3 4 5 4 4 5 4 5 4 6 4 5 5 6 5 4 6 5 4 5 6 6 6 5 6 5 6 6 6 1 1 2 2 1 4 1 2 3 2 9 S1 1 3 5 10 11 12 13 14 15 16 17 18 19 20 设每个功能段的时间为△t 流水线的最大吞吐率 Tpmax=1/3△t
流水线的实际吞吐率 Tp=6/20△t≈0.3/△t 流水线的加速比:Sp=6×7△t/20△t≈2. 1 流水线的效率:E=6×10/5*20=3/5=0.6=60%
3.19 解:(1)设A+B的中间结果放在V6中,(A+B)×C的最后结果放在V7中,D+E的中间结果放在V8中,(D+E)×F的最后结果放在V9中。具体实现参考下图:
V0AV1BV6V2CV7向量加向量乘V3DV4EV8V5FV9 通过时间应该为前者((A+B)×C)通过的时间:
T通过= (1+2+1)+(1+3+1) =9(拍)
(2)在做完(A+B)×C之后,作(C+D)×E就不需要通过时间了。
V6←A+B V7←V6×C
V8←D+E
V9←V8×F
T?T通过+(8-1)?8?24(拍)?1200(ns)32TP??26.67MFLOPST
第四章
1. 指令级并行的基本概念。 2. 开发指令级并行常用的方法
3. 超标量、超流水、超长指令字的概念。 4. 超长指令字的实现
5. 循环展开和指令调度的基本方法 部分习题参考答案: 4.3分析:
产生结果指令 浮点计算 浮点计算 使用结果指令 另外的浮点计算 浮点数据存操作(SD) 浮点计算 延迟时钟周期数 3 2 1 0 浮点数据取操作(LD) 浮点数据取操作(LD) 浮点数据存操作(SD) 指令在流水线中执行时需要的延迟:
LOOP: L.D F0,0(R1) (空转) MUL.D F0,F0,F2 L.D F4,0(R2)
(空转) (空转)
ADD.D F0,F0,F4
(空转) (空转)
S.D F0,0(R2) DSUBI R1,R1,#8 DSUBI R2,R2,#8 BNEZ R1,LOOP
(空转)
解:将循环展开两次,进行指令调度,即可以消除延迟,其中增加寄存器F10、F14,对应一次循环中的F0和F4.
代码如下: LOOP: L.D F0,0(R1)
L.D F10,-8(R1) MUL.D F0,F0,F2 MUL.D F10,F10,F2 L.D F4,0(R2) L.D F14,-8(R2) ADD.D F0,F0,F4
ADD.D DSUBI S.D DSUBI BNEZ S.D F10,F10,F14 R1,R1,#16 F0,0(R2) R2,R2,#16 R1,LOOP F10,8(R2)
4.9 解:标量流水处理机的时空图:
执行 1 2 3 4 5 6 7 8 9 10 11 12 分析 1 2 3 4 5 6 7 8 9 10 11 12 取指 1 2 3 4 5 6 7 8 9 10 11 12 14 时间 执行完12条指令需T1=14△t。
超标量流水处理机与超长指令字处理机的时空图:
4 8 12 执行 3 7 11 2 6 10 1 5 9 4 8 12 4 8 12 执行 3 7 11 2 6 10 1 5 9 1 5 9 分析 3 7 11 2 6 10 1 5 9 4 8 12 分析 取指 1 5 9 5 时间 取指 3 7 11 2 6 10 1 5 9 超长指令字处理机时空图 5 时间 超标量处理机时空图
超标量流水处理机中,每一个时钟周期同时启动4条指令。执行完12条指令需T2=5△t,相对于标量流水处理机的加速比为:
T14?tS2?1??2.8
T25?t超长指令字处理机中,每4条指令组成一条长指令,共形成3条长指令。执行完12条指令需T3=5△t,相
对于标量流水处理机的加速比为:
T14?tS3?1??2.8
T35?t超流水处理机的时空图:
4 8 12 7 11 6 10 执行 1 4 3 2 1 4 3 2 5 9 8 12 7 11 分析 6 10 5 9 8 12 取指 3 2 1 7 11 6 10 5 9 4 5 5.75 时间
超流水处理机中,每1/4个时钟周期启动一条指令。执行完12条指令需T4=5.75△t,相对于标量流水处理机的加速比为:
T14?tS4?1??2.435
T45.75?t
补充题
设系统中有多个加法器,不存在加法器的资源冲突,有3条连续指令构成的程序代码段: ADD R1,R2,R4 ADD R2,R1,1 SUB R1,R4,R5 请回答:
(1) 分析代码段中的存在的数据相关;
(2) 采用何种硬件技术可以解决这些数据相关?要求加以说明。 答:
I1 ADD R1,R2,R4 I2 ADD R2,R1,1 I3 SUB R1,R4,R5
真数据相关RAW:I1与I2(R1) 先写后读 名相关WAW:I1与I3(R1) 先写后写 反相关WAR:I1与I2(R2);I2与I3(R1) 先读后写 解决方法:
(1)I1与I2关于R1的RAW相关,可以用定向技术解决。 (2)I1与I3关于R1的WAW相关,I1与I2(R2);I2与I3(R1)的WAR,可以用寄存器换名技术解决。将R2,
R1换名为R2′,R1′. 解决结果:
I1 ADD R1,R2,R4 I2 ADD R2′,R1,1 I3 SUB R1′,R4,R5
第五章
1. 存储器层次结构的概念;采用存储器层次结构的目的;程序局部性在存储器层次结构中的应用。
2. 设置Cache—主存层次、主存—辅存层次的目的;Cache—主存层次、主存—辅存层次实现手段的不同之处。
相关推荐: