计算机系统结构考试计算题.docx
《计算机系统结构考试计算题.docx》由会员分享,可在线阅读,更多相关《计算机系统结构考试计算题.docx(20页珍藏版)》请在冰豆网上搜索。
计算机系统结构考试计算题
有一指令流水线如下所示
50ns50ns100ns200ns
(1)求连续输入10条指令,该流水线的实际吞吐率和效率;
(2)该流水线的瓶颈”在哪一段请采取两种不同的措施消除此瓶颈”对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少
解:
(1)
Tpipeline
m
ti(n1)tmax
i1
(5050100200)9200
2200(ns)
ti
TP丄
TPpipeline')
4005
TP45.45%
411
(2)瓶颈在3、4段。
变成八级流水线(细分)
出
4_4—
50ns
m
Tpipelineti(n1)tmax
i1
508950
850(ns)
m
ti
i140010
ETP一TP58.82%
m817
重复设置部件
TPnTpipe-
E4°°1085081017呢82%
需要的时间都是t,问:
(1)当在流水线的输入端连续地每t时间输入任务时,该流水线会发生什么情况
(2)此流水线的最大吞吐率为多少如果每2t输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少
(3)当每段时间不变时,如何提高该流水线的吞吐率仍连续处理10个任务时,其吞吐率提高多少
解:
(1)会发生流水线阻塞情况
第1个任务
S1
S2
S3
S3
S4
第2个任务
S1
S2
stall
S3
S3
S4
第3个任务
S1
stall
S2
stall
S3
S3
S4
第4个任务
S1
stall
S2
stall
S3
S3
S4
□
Q
3
4
5
□
Q
8
1|
1
|2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
[10|10
时间
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
3
2
1
23t
ETP5t45°9254.35%
(3)重复设置部件
段丄
4
1
2
3
4
5
6
7
8
9
回
3_2
2
2
4
4
6
6
8
8
10
10
:
3_1
1
1
3
3
5
5
7
7
9
9
2
1
2
3
4
5
6
7
8
9
10
-
1
1|
1|
2
3
4
5
6
7
8
9
10
:
时间
——;——►
14t
有一条静态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、
2、5段,第3段的时间为2△t,其余各段的时间均t,而且流水线的输出可以直接返回输入端或
4
(AiBi)
,画出其时
暂存于相应的流水寄存器中。
现要在该流水线上计算空图,并计算其吞吐率、加速比和效率。
解:
首先,应选择适合于流水线工作的算法。
对于本题,应先计算Ai+B、
A2+B2、A3+B3和A4+B4;再计算(Al+Bl)x(A2+B2)和(A+B3)x(A4+B4);然后求总的结果。
其次,画出完成该计算的时空图,如图所示,图中阴影部分表示该段在工作。
如果不用流水线,由于一次求积需3^t,一次求和需5At,则产生上述7
个结果共需(4X5+3X3△t=29^t。
所以加速比为:
该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得:
动态多功能流水线由6个功能段组成,如下图:
其中,S1、S4、S5S6组成乘法流水线,S1、S2、S3S6组成加法流水线,
各个功能段时间均为50ns,假设该流水线的输出结果可以直接返回输入端,而
5
且设置有足够的缓冲寄存器,若以最快的方式用该流水计算:
XiyjZi
i1
(1)画出时空图;
(2)计算实际的吞吐率、加速比和效率。
解:
机器一共要做10次乘法,4次加法。
⑴
42.42V
在MIPS流水线上运行如下代码序列:
LOOPLW
R1,
0(R2)
DADDIU
R1,
R1,#1
SW
R1,
0(R2)
DADDIU
R2,
R2,#4
DSUB
R4,
R3,R2
BNEZ
R4,
LOOP
其中:
R3的初值是R2+39&
假设
:
在整个代码序列的运行过程中,所有
的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件定向”问:
(1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时空图。
假设采用排空流水线的策略处理分支指令,且所有的存储器访问都命中Cache那么执行上述循环需要多少个时钟周期
(2)假设该流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。
假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都命中Cache那么执行上述循环需要多少个时钟周期
(3)假设该流水线有正常的定向路径和一个单周期延迟分支,请对该循环中的指令进行调度,你可以重新组织指令的顺序,也可以修改指令的操作数,但是注意不能增加指令的条数。
请画出该指令序列执行的流水线时空图,并计算执行上述循环所需要的时钟周期数。
解:
寄存器读写可以定向,无其他旁路硬件支持。
排空流水线。
指令
1
234
56
7
8
9
1011
12
131415
16
17
1819202122
LW
IFID
EXM
WB
DADDIU
IF
SS
IDEX
M
WB
SW
IFS
S
ID
EX
MWB
DADDIU
IF
ID
EXM
WB
DSUB
IF
SS
ID
EXMWB
BNEZ
IF
SSID
EX
M
WB
LW
IF
S
S
IFIDEXMWB
-第i
次迭代(
i=0..
98)
开始周期:
1+
(iX17)
总的时钟周期数:
(98X17)+18=1684
有正常定向路径,预测分支失败。
指令
1
23
45
6
7
8
9
1011
113
1415
LW
IFID
EX
M
WB
DADDIU
IF
ID
S
EX
M
WB
SW
IF
S
ID
EX
M
WB
DADDIU
IF
ID
EX
M
WB
DSUB
IF
ID
EX
M
WB
BNEZ
IF
ID
EX
MWB
LW
IF
missmissIF
IDEX
MWB
第i次迭代(i=0..98)开始周期:
1+(iX10)
总的时钟周期数:
(98X10)+11=991
有正常定向路径。
单周期延迟分支。
LOOP:
LWR1,0(R2)
DADDIUR2,R2,#4
DADDIUR1,R1,#1
DSUBR4,R3,R2
BNEZR4,LOOP
SWR1,-4(R2)
第i次迭代(i=0..98)开始周期:
1+(iX6)
总的时钟周期数:
(98X6)+10=598
DADDIU
IFID
EX
M
WB
DADDIU
IF
ID
EX
M
WB
DSUB
IF
ID
EX
M
WB
BNEZ
IF
ID
EX
M
WB
SW
IF
ID
EX
M
WB
LW
IF
ID
EX
MWB
LW
IFIDEXMWB
假设各种分支指令数占所有指令数的百分比如下:
条件分支
20%(其中的60%是分支成功的)1
跳转和调用「
5%
现有一条段数为4的流水线,无条件分支在第二个时钟周期结束时就被解析出来,而条件分支要到第三个时钟周期结束时才能够被解析出来。
第一个流水段
是完全独立于指令类型的,即所有类型的指令都必须经过第一个流水段的处理。
请问在没有任何控制相关的情况下,该流水线相对于存在上述控制相关情况下的加速比是多少
解:
没有控制相关时流水线的平均CP-1
存在控制相关时:
由于无条件分支在第二个时钟周期结束时就被解析出来,而条件分支
要到第3个时钟周期结束时才能被解析出来。
所以:
(1)若使用排空流水线的策略,则对于条件分支,有两个额外的stall,对无条件分支,有一个额外的stall:
CPI=1+20%*2+5%*1=加速比S=CPI/1=
(2)若使用预测分支成功策略,则对于不成功的条件分支,有两个额外的
stall,对无条件分支和成功的条件分支,有一个额外的stall1:
CPI=1+20%*(60%*1+40%*2)+5%*1=加速比S=CPI/1=
(3)若使用预测分支失败策略,则对于成功的条件分支,有两个额外的stall;
对无条件分支,有一个额外的stall;对不成功的条件分支,其目标地址已经由
PC值给出,不必等待,所以无延迟:
CPI=1+20%*(60%*2+40%*0)+5%*1=
加速比S=CPI/1=
假设对指令Cache的访问占全部访问的75%;而对数据Cache的访问占全部访问的25%。
Cache的命中时间为1个时钟周期,失效开销为50个时钟周期,在混合Cache中一次load或store操作访问Cache的命中时间都要增加一个时钟周期,32KB的指令Cache的失效率为%,32KB的数据Cache的失效率为%,64KB的混合Cache的失效率为%。
又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。
试问指令Cache和数据Cache容量均为32KB的分离Cache和容量为64KB的混合Cache相比,哪种Cache的失效率更低两种情况下平均访存时间各是多少
解:
(1)根据题意,约75%的访存为取指令。
因此,分离Cache的总体失效率为:
(75%x%)+(25%x%)=%;容量为128KB的混合Cache的失效率略低一些,只有%。
(2)平均访存时间公式可以分为指令访问和数据访问两部分:
平均访存时间二指令所占的百分比X(读命中时间+读失效率X失效开销)
+数据所占的百分比X(数据命中时间+数据失效率X失效
开销)
所以,两种结构的平均访存时间分别为:
分离Cache的平均访存时间=75%X(1+%X50)+25%X(1+%X50)=(75%X)+(25%X)=
混合Cache的平均访存时间=75%X(1+%X50)+25%X(1+1+%X50)=(75%X)+(25%X)=
因此,尽管分离Cache的实际失效率比混合Cache的高,但其平均访存时间反而较低。
分离Cache提供了两个端口,消除了结构相关。
给定以下的假设,试计算直接映象Cache和两路组相联Cache的平均访问时间以及CPU的性能。
由计算结果能得出什么结论
(1)理想Cache情况下的CPI为,时钟周期为2ns,平均每条指令访存次;
(2)两者Cache容量均为64KB,块大小都是32字节;
(3)组相联Cache中的多路选择器使CPU的时钟周期增加了10%;
(4)这两种Cache的失效开销都是80ns;
(5)命中时间为1个时钟周期;
(6)64KB直接映象Cache的失效率为%,64KB两路组相联Cache的失效率为%。
解:
平均访问时间二命中时间+失效率X失效开销
平均访问时间1-路=+%*80=
平均访问时间2-路=*(1+10%)+%*80=
两路组相联的平均访问时间比较低
CPUme=(CPU执行+存储等待周期)*时钟周期
CPUtime=IC(CPI执行+总失效次数/指令总数*失效开销)*时钟周期
=IC((CPI执行*时钟周期)+(每条指令的访存次数*失效率*失效开销*时钟周期))
CPUtime1-way=IC*2+**80)=
CPUtime2-way=IC*2+**80)=
直接映象cache的访问速度比两路组相联cache要快倍,而两路组相联Cache的平均性能比直接映象cache要高倍。
因此这里选择两路组相联。
假设一台计算机具有以下特性:
(1)95%的访存在Cache中命中;
(2)块大小为两个字,且失效时整个块被调入;
(3)CPU发出访存请求的速率为109字/s;
(4)25%的访存为写访问;
(5)存储器的最大流量为109字/s(包括读和写);
(6)主存每次只能读或写一个字;
(7)在任何时候,Cache中有30%的块被修改过;
(8)写失效时,Cache采用按写分配法。
现欲给该计算机增添一台外设,为此首先想知道主存的频带已用了多少。
试对于以下两种情况计算主存频带的平均使用比例。
(1)写直达Cache;
(2)写回法Cacha
解:
采用按写分配
(1)写直达cache访问命中,有两种情况:
读命中,不访问主存;写命中,更新cache和主存,访问主存一次。
访问失效,有两种情况:
读失效,将主存中的块调入cache中,访问主存两次;写失效,将要写的块调入cache,访问主存两次,再将修改的数据写入cache和主存,访问主存一次,共三次。
上述分析如下表所示。
访问命中
访问类型
频率
访存次数
Y
读
95%*75%=%
0
Y
写
95%*25%=%
1
N
读
5%*75%=%
2
N
写
5%*25%=%
3
一次访存请求最后真正的平均访存次数=%*0)+%*1)+%*2)+%*3戶
已用带宽=x109/109=%
(2)写回法cache访问命中,有两种情况:
读命中,不访问主存;
写命中,不访问主存。
采用写回法,只有当修改的cache块被换
出时,才写入主存;
访问失效,有一个块将被换出,这也有两种情况:
如果被替换的块没有修改过,将主存中的块调入cache块中,访问主存
两次;
如果被替换的块修改过,则首先将修改的块写入主存,需要访问主存两次;然后将主存中的块调入cache块中,需要访问主存两次,共四次访问主存。
访问命中
块为脏
频率
访存次数
Y
N
95%*70%=%
0
Y
Y
95%*30%=%
0
N
N
5%*70%=%
2
N
Y
5%*30%=%
4
所以:
一次访存请求最后真正的平均访存次数=%*0+%*0+%*2+%*4=
已用带宽=乂109/109=13%
在伪相联中,假设在直接映象位置没有发现匹配,而在另一个位置才找到数据(伪命中)时,不对这两个位置的数据进行交换。
这时只需要1个额外的周期。
假设失效开销为50个时钟周期,2KB直接映象Cache的失效率为%,2路组相联的失效率为%;128KB直接映象Cache的失效率为%,2路组相联的失效率为%。
(1)推导出平均访存时间的公式。
(2)利用
(1)中得到的公式,对于2KBCache和128KBCache计算伪相
联的平均访存时间。
解:
不管作了何种改进,失效开销相同。
不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:
失效率伪相联二失效
率2路。
伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。
命中时间伪相联=命中时间1路+伪命中率伪相联x1
交换或不交换内容,伪相联的命中率都是由于在第一次失效时,将地址取反,再在第二次查找带来的。
因此伪命中率伪相联=命中率2路一命中率1路=(1一失效率2路)一(1一失效率1路)
=失效率1路一失效率2路。
交换内容需要增加伪相联的额外开销。
平均访存时间伪相联=命中时间1路+(失效率1路一失效率2路)X1
+失效率2路X失效开销1路
将题设中的数据带入计算,得到:
平均访存时间2Kb=1+*50)=
平均访存时间128Kb=1+*50)=
显然是128KB的伪相联Cache要快一些。
假设采用理想存储器系统时的基本CPI是,主存延迟是40个时钟周期;传输速率为4字节/时钟周期,且Cache中50%的块是修改过的。
每个块中有32字节,20%的指令是数据传送指令。
并假设没有写缓存,在TLB失效的情况下需要
20时钟周期,TLB不会降低Cache命中率。
CPU产生指令地址或Cache失效时产生的地址有%没有在TLB中找到。
(1)在理想TLB情况下,计算均采用写回法16KB直接映象统一Cache16KB
两路组相联统一Cache和32KB直接映象统一Cache机器的实际CPI
(2)在实际TLB情况下,用
(1)的结果,计算均采用写回法16KB直接映象统
一Cache16KB两路组相联统一Cache和32KB直接映象统一Cache机器的实际CPI;
其中假设16KB直接映象统一Cache16KB两路组相联统一Cache和32KB直接映象统一Cache的失效率分别为%、%和%;25%的访存为写访问。
解:
CPI=CPI执行+存储停顿周期数/指令数存储停顿由下列原因引起:
从主存中取指令
load和store指令访问数据由TLB引起
存储停顿周期数取指令停顿丄数据访问停顿+TLB停顿
=十指令数指令数指令数
(1)对于理想TLB,TLB失效开销为0。
而对于统一Cache,R指令=R数据P指令=主存延迟十传输一个块需要使用的时间=40+32/4=48(拍)
若为读失效,P数据=主存延迟十传输一个块需要使用的时间=40+324=
48(拍)
若为写失效,且块是干净的,P数据=主存延迟十传输一个块需要使用的时间=40+32/4=48
(拍)
若为写失效,且块是脏的,P数据=主存延迟十传输两个块需要使用的时间=40+64/4=56
(拍)
CPI=+[RP+(RP*20%)+0]
指令访存全是读,而数据传输指令Load或Store指令,
f数据*P数据=读百分比*(f数据*P数据)十写百分比*(f数据*P干净数据*其对应的百分比
十f数据*P脏数据*其对应的百分比)
(2)
=20%*(75%X48+25%*(50%*48+50%*(48+16)))=50(拍)代入上述公式计算出结果为:
配置
失效率
CPI
16KB直接统一映象
16KB两路统一映象
32KB直接统一映象
TLB停顿(存储访问次数指令数(指令数
TLB访问
存储访问次数
)TLB失效率
TLB失效开销
将f数据(数据访问指令频率),Rt和Pt(分别是TLB的失效率和失效开销),R3和Pw(分别是Cache的失效率和写回的频率)代入公式得:
TLB停顿/指令数={[1+f数据]*[Rc(1+Fk)]}RtFt
其中,1+f数据:
每条指令的访问内存次数;R=(1+Rw):
每次内存访问需要的TLB访问次数。
由条件得:
TLB停顿/指令数={[1+20%]*[Rc(1+25%)]}%X20
配置
失效率
理想TLB的CPI
16KB直接统一映象
16KB两路统一映象
32KB直接统一映象
一个具有32台处理机的系统,对远程存储器访问时间是2000ns。
除了通信以外,假设计算中的访问均命中局部存储器。
当发出一个远程请求时,本地处理机挂起。
处理机的时钟周期时间是10ns,假设指令基本的CPI为(设所有访存均命中Cach®。
对于下述两种情况:
(1)没有远程访问;
(2)%的指令需要远程访问。
试冋前者比后者快多少
解:
已知远程访问率p=%,远程访问时间t=2000ns,时钟周期T=10ns
远程访问开销C=t/T=2000ns/10ns=200(时钟周期数)
有%远程访问的机器的实际CP2为:
CP2=CP1+pXC=+%x200=
只有局部访问的机器的基本CPI=
CP2/CPIi==2(倍)
因此,没有远程访问状态下的机器速度是有%远程访问的机器速度的2倍。