问答题
某高级语言源程序中的一个while语句为“while(save[i]==k)i+=1;”,若对其编译时,编译器将i和k分别分配在寄存器$s3和$s5中,数组save的基址存放在$s6中,则生成的MIPS汇编代码段如下:
1 loop: sll $t1, $s3, 2
#R[$t1]←R[$s3]<<2, 即R[$t1]=i×4
2
add $t1, $t1, $s6 #R[$t1]←R[$t1]+R[$s6], 即R[$t1]=Address of
save[i]
3 1w $t0,
0($t1) #R[$t0]←M[R[$t1]+0], 即R[$t0]=save[i]
4 bne $t0, $s5, exit #R[$t0]≠R[$s5] then
goto exit
5 addi $s3, $s3,
1 #R[$s3]←R[$s3]+1, 即i=i+1
6
j loop #goto loop
7 exit:
该五段流水线数据通路中各主要功能单元的操作时间见下表。
各主要功能单元的操作时间
{{B}}各主要功能单元的操作时间{{/B}}
|
| 存储器 |
ALU或加法器 |
寄存器堆读口或写口 |
| 200ps |
150ps |
50ps |
请回答下列问题:
问答题
在不考虑流水段寄存器、多路选择器、控制单元、PC、扩张器和线路等延迟的情况下,五段流水线处理器的最小时钟周期为多少?
【正确答案】因为最复杂的部件(存储器)所用的最长时间为200ns,所以,在不考虑流水段寄存器、多路选择器、控制单元、PC、扩张器和线路等延迟的情况下,五段流水线处理器的最小时钟周期为200ps。
【答案解析】
问答题
请问该程序执行过程中,是否会遇到数据相关冲突?若有,请列出。一般采用何种技术解决该类相关。
【正确答案】会遇到数据相关冲突。
循环体中第1条和第2条、第2条和第3条、第3条和第4条、第5条和第1条指令之间存在数据相关。
一般使用数据旁路技术来解决数据相关。
【答案解析】
问答题
请问该程序执行过程中,是否会遇到控制相关冲突?若有,请列出。一般采用何种技术解决该类相关。
【正确答案】会遇到控制相关冲突。
控制相关冲突是由转移指令引起的。当执行转移指令时,依据转移条件的产生结果,可能顺序执行下一条指令;也可能转移到新的目标地址取指令,从而使流水线发生断流。该程序的“bne $t0,$s5,exit”语句使本程序会遇到控制相关冲突。
一般采用“猜测法”技术,机器先选定转移分支中的一个,按它取指并处理,条件码生成后,如果猜测正确,那么流水线继续进行下去;如果猜测错误,那么之前预取的指令失效。
【答案解析】
问答题
如果采用下图所示的双输入段的加一乘双功能静态流水线,每个功能段经过的时间均为Δt,在加法时按照1→2→3→5链接;乘法时,按照1→4→5链接。流水线的输出可以直接送到其输入端或者输入缓冲器,不计其间的传送延迟,操作数可以连续提供,对向量A=(a1,a2,a3,a4),B=(b1,b2,b3,b4)。
双输入段的加-乘双功能静态流水线
采用上述流水线完成点积:
【正确答案】本题目中的流水线有两种功能:加法和乘法,按照静态流水线的定义,静态流水线只能是一种运算进行完再进行下一种运算,故本题目必须先进行乘法,再进行加法。又题目要求所花的时间最少,故必须让流水线能够充分利用,即让流水线在一段时间内尽可能执行多的指令。为了达到这个目的,计算过程必须具有最好的并行性。因此想到的计算过程如下:
第一步,分别计算各项乘积:c
i=a
i×b
i (i=1,2,3,4)
第二步,将第一步得到的乘积两两相加:d
i=c
i×c
i+1 (i=1,3)
第三步,将第二步得到的和再两两相加:d=d
1+d
3 这样,该计算过程就能充分地将流水线利用起来。下面来计算该过程所需要的时间:
首先第一步,如图1所示。
[*]
图1 步骤一
第一步完成时,所花时间为6Δt。
然后进行第二步,如图2所示。
[*]
图2 步骤二
第二步完成时,所花时间为11Δt。
最后一步,如图3所示。
[*]
图3 步骤三
第三步完成时,所花时间为15Δt。
因此,完成该计算所需要的最少时间为15Δt。
流水线的时空图将上述三个图连接起来即可,如图4所示。
[*]
图4 流水线的时空图
流水线的吞吐率(ThoughPut rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。如果n为任务数,Tk是处理完成n个任务所用的时间,那么流水线的吞吐率为
[*]
流水线的加速比(S:Speedup Ratio):不使用流水线所用的时间与使用流水线所用的时间之比即流水线的加速比。如果顺序执行所用的时间为T
o,使用流水线的时间为T
k,那么加速比为
[*]
【答案解析】