解:展开循环两次:
a[i] = b[i] + a[i] c[i+1] = a[i] + d[i] a[i-1] = 2 * b[i] b[i+1] = 2 * b[i]
; /* s1 */ ; /* s2 */ ; /* s3 */ ; /* s4 */
a[i+1] = b[i+1] + a[i+1] ; /* s1’ */ c[i+2] = a[i+1] + d[i+1] ; /* s2 ‘*/ a[i] = 2 * b[i+1] b[i+2] = 2 * b[i+1]
输出相关:无 反相关:无 真相关:S1&S2
由于循环引入的相关:S4&S4’(真相关)、S1’&S4(真相关)、S3’&S4(真相关)、S1&S3’(输出相关、反相关)、S2&S3’(反相关)。
3.10 简述三种向量处理方式,它们对向量处理机的结构要求有何不同? 答 (1)横向处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。 (2)纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。 (3)纵横处理方式:把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。
3.12 有一指令流水线如下所示
入 1 2 3 4 出 50ns 50ns 100ns 200ns ; /* s3 ‘*/ ; /* s4 ‘*/
(1) 求连续输入10条指令,该流水线的实际吞吐率和效率;
(2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。
对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1)
Tpipeline???ti?(n?1)?tmaxi?1m?(50?50?100?200)?9?200 ?2200(ns)TP?nTpipeline?1220(ns?1)
E?TP???ti?1mim?TP?4005??45.45% 411(2)瓶颈在3、4段。 ? 变成八级流水线(细分)
è?150ns250ns3_150ns3_250ns4_150ns4_450ns3?
Tpipeline???ti?(n?1)?tmaxi?1m?50?8?9?50?850(ns)TP?nTpipelinem
?185(ns?1)
E?TP???tii?1m?TP?40010??58.82% 817? 重复设置部件
TP?nTpipeline?185(ns?1)
E?400?10850?8?1017?58.82%
段 4_4 4_3 4_2 4_1 3_2 3_1 2 211432 768 109 8 57 6 3 4 1 109 5 时间 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10
3.14 能流水线法用1、3、1、2、5
1 2 3-2 3-1 4-1 4-2 4-3 4-4 850ns 有一条静态多功由5段组成,加4、5段,乘法用段,第3段的时
间为2△t,其余各段的时间均为△t,而且流水线的输出可以直接返回输入端或
i?1暂存于相应的流水寄存器中。现要在该流水线上计算 ,画出其时
?(A?B)ii4 1 △t 加法 2△t △t △t 2 △t 3 乘法 4 5 空图,并计算其吞吐率、加速比和效率。
解:首先,应选择适合于流水线工作的算法。对于本题,应先计算A1+B1、A2+B2、A3+B3和A4+B4;再计算(A1+B1) ×(A2+B2)和(A3+B3) ×(A4+B4);然后求总的结果。
段 5 4 3 2 1 A B C D A×B C×D A×B×C×D A=A1+B1 B=A2+B2 C=A3+B3 D=A4+B4 输0 1 2 3 入4 5 6 7 8 9 A1 A2 A3 A4 B1 B2 B3 B4 10 11 12 13 14 15 16 17 18 A×B A C B D C×D 时间 其次,画出完成该计算的时空图,如图所示,图中阴影部分表示该段在工作。
由图可见,它在18个△t时间中,给出了7个结果。所以吞吐率为:
TP?7 18?t如果不用流水线,由于一次求积需3△t,一次求和需5△t,则产生上述7个结果共需(4×5+3×3)△t =29△t。所以加速比为:
2 9 ? t
S?18?t?1.61该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得: 4 ? 5 ? 3 ? 3 ? 0 .3 22 E ?
3.15 动态多功能流水线由6个功能段组成,如下图:
S1 S2 S3 乘法 加法 S4 S5 S6 5?18
其中,S1、S4、S5、S6组成乘法流水线,S1、S2、S3、S6组成加法流水线,
各个功能段时间均为50ns,假设该流水线的输出结果可以直接返回输入端,而且设置有足够的缓冲寄存器,若以最快的方式用该流水计算:?xiyizi
i?15(1) 画出时空图;
(2) 计算实际的吞吐率、加速比和效率。
解:机器一共要做10次乘法,4次加法。 3.16 在MIPS流水线上运行如下代码序列:
LOOP: LW R1,0(R2) DADDIU R1,R1,#1 SW R1, 0(R2) DADDIU R2,R2,#4 DSUB R4,R3,R2 BNEZ R4,LOOP
其中:R3的初值是R2+396。假设:在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件“定向”。问:
(1) 在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列
执行的流水线时空图。假设采用排空流水线的策略处理分支指令,且