第二章练习题参考解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章
2.13 在一台单流水线多操作部件的处理机上执行下面的程序,每条指令的取指令、指令译码需要一个时钟周期,MOVE、ADD和MUL操作分别需要2个、3个和4个时钟周期,每个操作都在第一个时钟周期从通用存放器中读操作数,在最后一个时钟周期把运算结果写到通用存放器中。

k: MOVE R1,R0 ;R1← (R0)
k+1: MUL R0,R2,R1 ;R0← (R2)×(R1)
k+2: ADD R0,R2,R3 ;R0← (R2)+(R3)
(1)就程序本身而言,可能有哪几种数据相关?
(2)在程序实际执行过程中,哪几种数据相关会引起流水线停顿?
(3)画出指令执行过程的流水线时空图,并计算完成这3条指令共需要多少个时钟周期?
解:〔1〕就程序本身而言,可能有三种数据相关。

假设3条指令顺序流动,那么k指令对R1存放器的写与k+1指令对R1存放器的读形成的“先写后读〞相关。

假设3条指令异步流动,那么k指令对R0存放器的读与k+1指令对R0存放器的写形成的“先读后写〞相关,k+2指令对R0存放器的写与k+1指令对R0存放器的写形成的“写—写〞相关。

〔2〕在程序实际执行过程中,二种数据相关会引起流水线停顿。

一是“先写后读〞相关,k指令对R1的写在程序执行开始后的第四个时钟;k+1指令对R1的读对指令本身是第三个时钟,但k+1指令比k指令晚一个时钟进入流水线,那么在程序执行开始后的第四个时钟要读R1。

不能在同一时钟周期内读写同一存放器,因此k+1指令应推迟一个时钟进入流水线,产生了流水线停顿。

二是“写—写〞相关,k+1指令对R0的写对指令本身是第六个时钟,而要求该指令进入流水线应在程序执行开始后的第三个时钟,所以对R0的写是在程序执行开始后的第八个时钟。

k+2指令对R0的写对指令本身是第五个时钟,而k+2指令比k+1指令晚一个时钟进入流水线,那么在程序执行开始后的第四个时钟,所以对R0的写是在程序执行开始后的第八个时钟。

不能在同一时钟周期内写写同一存放器,因此k+2指令应推迟一个时钟进入流水线,产生了流水线停顿。

另外,可分析“先读后写〞相关不会产生流水线的停顿。

〔3〕由题意可认位该指令流水线由六个功能段取指、译码、取数、运一、运二和存数等组成,那么程序指令执行过程的流水线时空图如下列图所示。

假设3条指令顺序流动,共需要9
存数
运二
运一
取数
译码
取指
0 1 2 3 4 5 6 7 8 9
2.23 有一条5个功能段的线性动态多功能流水线如下图,其中1→2→3→5功能段组成加法流水线,1→4→5功能段组成乘法流水线,设每个功能段的延迟时间均相等为△t 。

用这条流水线计算F=4
1()i
i i a b =+∏,画出流水线时空图,并计算流水线的实际吞吐率、加速比和效率。

解:由于该流水线为动态双功能流水线,计算要求先加后乘,因此应先设置加法功能,连续计算出〔a 1+b 1〕、〔a 2+b 2〕、〔a 3+b 3〕、〔a 4+b 4〕四个加法后;再设置乘法功能,而且按[(a 1+b 1)×(a 2+b 2)]×[(a 3+b 3)×(a 4+b 4)]顺序做3个乘法。

因此可画出该流水线的时空图如下图,图中
A=a 1+b 1,B=a 2+b 2,C=a 3+b 3,D=a 4+b 4。

由时空图可以看出,在总共12个△t 的时间内输出7个结果,所以有: TP = n/Tn = 7/12△t
而当用串行方法完成操作时,需要四次加法和三次乘法,完成一次加法需要4△t ,完成一次乘法需要3△t ,完成该运算总共需要时间为:
T 0 = 4×4△t+3×3△t = 25△t 所以 S = T 0
E = 有效时空区面积/全部时空区面积
= (4×4△t+3×3△t)/(5×12△t) = 0.42
2.24 有一条3个功能段的流水线如下列图所示,每个功能段的延迟时间均为△t ,但是,功能段S 2的输出要返回到它自己的输入端循环执行一次。

输出
△t △t △t
〔1〕如果每隔一个△
t 向流水线连续输入任务,这条流水线会发生什么问题?
〔2〕求这条流水线能够正常工作的实际吞吐率、加速比和效率。

a 1
b 1 a 2 b 2 a 3 b 3 a 4 b 4 A B C D A ·B C ·D 时间
〔3〕可用什么方法来提高流水线的吞吐率,画出改良后的流水线结构。

解:〔1〕每个任务在段S 2要反应循环一次,执行时间为2Δt ,其它各段的执行时间为Δ
t ,因此应按瓶颈段的执行时间2Δt 流入任务,才不会发生冲突现象,否那么会发生流水线的阻塞。

〔2〕假设连续输入n 个任务,那么流水线的实际吞吐率、加速比和效率分别为: TP = n/〔4Δt +2〔n –1〕Δt 〕= n/2〔n + 1〕Δt →1/2Δt
S = 4n Δt/〔4Δt +2〔n –1〕Δt 〕= 2n/〔n + 1〕→2
E = 4n Δt/3〔4Δt +2〔n –1〕Δt 〕= 2n/3〔n + 1〕→2/3
〔3〕为提高流水线的吞吐率,可重复设置段S 2,并使两个段S 2串连在一起,从而消除瓶
颈段S 2,而且各段执行时间相等为Δt ,流水线的段数为4。

流水线的结构如下列图所示。

△t △t △t △t
2.25 在一个5段的流水线处理机上需经9△t 才能完成一个任务,其预约表为:
〔1〕写出流水线的初始冲突向量。


2〕画出流水线任务调度的状态有向图。

〔3〕求出流水线的最优调度策略及最小平均延迟时间和流水线的最大吞吐率。

〔4〕按最优调度策略连续输入8个任务时,流水线的实际吞吐率是多少?
解:〔1〕根据初始冲突向量的构成方法,对预约表各行中打“×〞的拍数求出差值,除去重复的后聚集在一起,即得到延迟禁止表为F ={1,5,6,8}。

由F 可得到初始冲突向量为:
C =〔10110001〕
〔2〕根据后继冲突向量的递推规那么C j = SHR 〔k 〕〔C i 〕∨C 0那么可得出所有的后继状态,具体有:
C 0四个后继状态:C 1 =SHR 〔2〕〔C 0〕∨C 0 C 2 =SHR 〔3〕〔C 0〕∨C 0C 3 =SHR 〔4〕〔C 0〕∨C 0C 4 =SHR 〔7〕〔C 0〕∨C 0 = 10110001=C 0C 1二个后继状态:C 5 =SHR 〔2〕〔C 1〕∨C 0 = 10111111 C 6 =SHR 〔7〕〔C 1〕∨C 0 = 10110001=C 0C 2二个后继状态:C 7 =SHR 〔4〕〔C 2〕∨C 0 = 10111011=C 3C 8 =SHR 〔7〕〔C 2〕∨C 0 = 10110001=C 0
C 3二个后继状态:C 9 =SHR 〔3〕〔C 3〕∨C 0 = 10110111=C 2
C 10=SHR 〔7〕〔C 3〕∨C 0 = 10110001=C 0
C 5一个后继状态:C 11=SHR 〔7〕〔C 5〕∨C 0 = 10110001=C 0
由后继状态和引起状态转移的时间间隔可得到状态有向图如上图所示。

〔3〕由状态转移有向图可得到无冲突的任务调度策略及其平均延迟时间,如下表所示。

调度策略平均延迟时间特别地,从C0出发的[3,〔4,3〕]也是一个〔2,2,7〕〔2+2+7〕△t/3 = 3.67△t 任务调度策略,除第一条有向弧外,第二、三条〔2,7〕〔2+7〕△t/2 = 4.5△t 有向组成一个环路,该调度策略为〔4,3〕。

从表〔3,4,7〕〔3+4+7〕△t/3 = 4.67△t 中可以得到平均延迟时间最小的调度策略为〔4,〔3,7〕〔3+7〕△t/2 = 5△t 3〕,该调度策略那么为最优调度策略,相应的最小
〔4,3,7〕〔4+3+7〕△t/3 = 4.67△t 平均延迟时间为3.5△t,所以流水线的最大吞吐〔4,7〕〔4+7〕△t/2 = 5.5△t 率为:
〔7〕 7△t TP max = 1/〔3.5△t△t
3,〔4,3〕〔4+3〕△t/2 = 3.5△t
〔4〕按最优调度策略[3,〔4,3〕]连续输入8个任务时,流水线的实际吞吐率为:
TP = 8/[〔3 + 4 + 3 + 4 + 3 + 4 + 3 + 9〕△t] = 0.24/△t。

相关文档
最新文档