定分支是失败时,说明预测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。
(2)预测分支成功:当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。
(3)延迟分支:主要思想是从逻辑上“延长”分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽构成。不管分支是否成功,都要按顺序执行延迟槽中的指令。
3种方法的共同特点:它们对分支的处理方法在程序的执行过程中始终是不变的。它们要么总是预测分支成功,要么总是预测分支失败。
3.8 简述延迟分支方法中的三种调度策略的优缺点。 调度策略 从前调度 从目标处调度 对调度的要求 分支必须不依赖于被调度的指令 对流水线性能改善的影响 总是可以有效提高流水线性能 如果分支转移失败,必须保证被调度的指令对程分支转移成功时,可以提高流水线性能。序的执行没有影响,可能需要复制被调度指令 但由于复制指令,可能加大程序空间 如果分支转移成功,必须保证被调度的指令对程分支转移失败时,可以提高流水线性能 序的执行没有影响 从失败处调度
3.9列举出下面循环中的所有相关,包括输出相关、反相关、真相关。 for (i=2; i<100; i=i+1) a[i]=b[i]+a[i] ;/* s1 */ c[i+1]=a[i]+d[i] ; /* s2 */ a[i-1]=2*b[i] ; /* s3 */
b[i+1]=2*b[i] ;/* s4 */
解:展开循环两次:
a[i] = b[i] + a[i] ; /* s1 */ c[i+1] = a[i] + d[i] ; /* s2 */ a[i-1] = 2 * b[i] ; /* s3 */ b[i+1] = 2 * b[i] ; /* 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] ; /* s3 ‘*/ b[i+2] = 2 * b[i+1] ; /* s4 ‘*/ 输出相关:无 反相关:无 真相关: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」,适合流
word文档 可自由复制编辑
水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。
3.11 可采用哪些方法来提高向量处理机的性能? 答:可采用多种方法:
(1) 设置多个功能部件,使它们并行工作; (2) 采用链接技术,加快一串向量指令的执行; (3) 采用循环开采技术,加快循环的处理; (4) 采用多处理机系统,进一步提高性能。 3.12 有一指令流水线如下所示
入 1 2 3 4 出 50ns 50ns 100ns 200ns
(1) 求连续输入10条指令,该流水线的实际吞吐率和效率; (2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。对于你所给
出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?
解:(1)
Tpipeline???ti?(n?1)?tmaxi?1m?(50?50?100?200)?9?200 ?2200(ns)TP?nTpipeline?1(ns?1)
2204005??45.45% 4113?E?TP???ti?1mim?TP?(2)瓶颈在3、4段。
è?150ns250ns3_150ns3_250ns4_150ns4_450ns? 变成八级流水线(细分)
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% 817word文档 可自由复制编辑
? 重复设置
4-1 3-1 1 2 3-2 段 4_4 4_3 4_2 4_1 3_2 3_1 2 2114324-2 4-3 4-4 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 850ns TP?nTpipeline?185(ns?1)
E?400?10?10?58.82%
850?8173.13有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流
到第4段。如果每段经过一次所需要的时间都是?t,问:
(1) 当在流水线的输入端连续地每?t时间输入任务时,该流水线会发生什么情况? (2) 此流水线的最大吞吐率为多少?如果每2?t输入一个任务,连续处理10个任务
时的实际吞吐率和效率是多少? (3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个任务时,其
吞吐率提高多少?
解:(1)会发生流水线阻塞情况。
word文档 可自由复制编辑
第1个任务 第2个任务 第3个任务 第4个任务 S1 S2 S1 S3 S2 S1 S3 stall stall S4 S3 S2 S1 S3 stall stall S4 S3 S2 S3 stall S4 S3 S3 S4
(2)
段 4 2 6 7 3 4 5 8 9 10 3 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 2 5 1 2 3 4 6 7 8 9 10 时间 1 1 2 3 4 5 6 7 8 9 10 23 ? t 112?tTpipeline?23?tTPmax?Tp?nTpipeline?1023?t
?E?TP?5?t?50?54.35I2 段 4 3_2 3_1 2 1 12 1 12Δt 24 3 4 56 63_17 88 9 10 10 9 9 3_2 Δt Δt 1 2 3 4 5 6 7 8 9 10 428 1 1 3 3 3 6 6 5 5 7 7 9 7 10 4 Δt 时间 2 4 5 8 10 Δt 14 ?t (3)重复设置部件
TP?nTpipeline?10?5
14??t7??t5107?t23?t吞吐率提高倍数==1.64
3.14 有一条静态多功能流水线由5段组成,加法用1、43、4、5段,乘法用1、2、5段,第
(Ai?Bi)3段的时间为2△t,其余各段的时间均为△t,而且流水线的输出可以直接返回输入端或 i?1暂存于相应的流水寄存器中。现要在该流水线上计算 ,画出其时空图,并计算其吞吐率、加速比和效率。
? 1 △t 加法 2△t △t △t 2 △t 3 乘法 4 5 word文档 可自由复制编辑