计算机组成原理考研大题.docx
《计算机组成原理考研大题.docx》由会员分享,可在线阅读,更多相关《计算机组成原理考研大题.docx(28页珍藏版)》请在冰豆网上搜索。
计算机组成原理考研大题
43.(8分)某计算机的CPU主频为500MHz,CPI为5(即执行每条指令平均需5个时钟周期)。
假定某外设的数据传输率为0.5MB/s,采用中断方式与主机进行数据传送,以32位为传输单位,对应的中断服务程序包含18条指令,中断服务的其他开销相当于2条指
令的执行时间。
请回答下列问题,要求给出计算过程。
(1)在中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?
(2)当该外设的数据传输率达到5MB/s时,改用DMA方式传送数据。
假定每次DMA传送块大小为5000B,且DMA预处理和后处理的总开销为500个时钟周期,则CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?
(假设DMA与CPU之间没有访存冲
突)
43.解答:
(1)按题意,外设每秒传送0.5MB,中断时每次传送4B。
中断方式下,CPU每次用于数据传送的时钟周期为5×18+5×2=100。
为达到外设0.5MB/s的数据传输率,外设每秒申请的中断次数为0.5MB/4B=125000。
1s内用于中断的开销为100×125000=12500000=12.5M个时钟周期。
CPU用于外设I/O的时间占整个CPU时间的百分比为12.5M/500M=2.5%。
(2)当外设数据传输率提高到5MB/s时,改用DMA方式传送,每次DMA传送5000B,
1s内需产生的DMA次数为5MB/5000B=1000。
CPU用于DMA处理的总开销为1000×500=500000=0.5M个时钟周期。
CPU用于外设I/O的时间占整个CPU时间的百分比为0.5M/500M=0.1%。
【评分说明】
如果考生只给出正确的计算结果,未给出计算过程,每个给2分。
44.(13分)某计算机字长为16位,采用16位定长指令字结构,部分数据通路结构如图A-2所示,图中所有控制信号为1时表示有效、为0时表示无效。
例如,控制信号MDRinE为1表示允许数据从DB打入MDR,MDRin为1表示允许数据从内总线打入MDR。
假设
MAR的输出一直处于使能状态。
加法指令“ADD(R1),R0”的功能为(R0)+((R1))→(R1),即将R0中的数据与R1的内容所指主存单元的数据相加,并将结果送入R1的内容所指主存单元中保存。
图A-2
表A-1给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号,
请按表中描述方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。
........
表A-1
时钟
功能
有效控制信号
C1
MAR←(PC)
PCout,MARin
C2
MDR←M(MDR)
PC←(PC)+1
MemR,MDRinE,PC+1
C3
IR←(MDR)
MDRout,IRin
C4
指令译码
无
44.解答:
题干已给出取值和译码阶段每个节拍的功能和有效控制信号,我们应以弄清楚取指阶段
中数据通路的信息流动作为突破口,读懂每个节拍的功能和有效控制信号。
然后应用到解题
思路中,包括划分执行步骤、确定完成的功能、需要的控制信号。
先分析题干中提供的示例(本部分解题时不做要求):
取指令的功能是根据PC的内容所指主存地址,取出指令代码,经过MDR,最终送至IR。
这部分和后面的指令执行阶段的取操作数、存运算结果的方法是相通的。
C1:
(PC)→MAR
在读写存储器前,必须先将地址(这里为(PC))送至MAR。
C2:
M(MAR)→MDR,(PC)+1→PC
读写的数据必须经过MDR,指令取出后PC自增1。
C3:
(MDR)→IR
然后将读到MDR中指令代码送至IR进行后续操作。
指令“ADD(R1),R0”的操作数一个在主存中,一个在寄存器中,运算结果在主存中。
根据指令功能,要读出R1的内容所指的主存单元,必须先将R1的内容送至MAR,即(R1)→
MAR。
而读出的数据必须经过MDR,即M(MAR)→MDR。
因此,将R1的内容所指主存单元的数据读出到MDR的节拍安排如下:
C5:
(R1)→MAR
C6:
M(MAR)→MDR
ALU一端是寄存器A,MDR或R0中必须有一个先写入A中,如MDR。
C7:
(MDR)→A
然后执行加法操作,并将结果送入寄存器AC。
C8:
(A)+(R0)→AC
之后将加法结果写回到R1的内容所指主存单元,注意MAR中的内容没有改变。
C9:
(AC)→MDR
C10:
(MDR)→M(MAR)
有效控制信号的安排并不难,只需看数据是流入还是流出,如流入寄存器X就是Xin,流出寄存器X就是Xout。
还需注意其他特殊控制信号,如PC+1、Add等。
于是得到参考答案如下:
时钟
功能
有效控制信号
C5
MAR←(R1)
R1out,MARin
C6
MDR←M(MAR)
MemR,MDRinE
C7
A←(MDR)
MDRout,Ain
C8
AC←(A)+(R0)
R0out,Add,ACin
C9
MDR←(AC)
ACout,MDRin
C10
M(MAR)←(MDR)
MDRoutE,MemW
本题答案不唯一,如果在C6执行M(MAR)→MDR的同时,完成(R0)→A(即选择将(R0)写入A),并不会发生总线冲突,这种方案可节省1个节拍,见下表。
时钟
功能
有效控制信号
C5
MAR←(R1)
R1out,MARin
C6
MDR←M(MAR),A←(R0)
MemR,MDRinE,R0out,Ain
C7
AC←(MDR)+(A)
MDRout,Add,ACin
C8
MDR←(AC)
ACout,MDRin
C9
M(MAR)←(MDR)
MDRoutE,MemW
43.(11分)某计算机字长为16位,主存地址空间大小为128KB,按字编址。
采用单字长指令格式,指令各字段定义如图B-4所示。
转移指令采用相对寻址方式,相对偏移量用补码表示,寻址方式定义见表B-1。
151211650
OP
Ms
Rs
Md
Rd
源操作数目的操作数图B-4
表B-1
Ms/Md
寻址方式
助记符
含义
000B
寄存器直接
Rn
操作数=(Rn)
001B
寄存器间接
(Rn)
操作数=((Rn))
010B
寄存器间接、自增
(Rn)+
操作数=((Rn)),(Rn)+1→Rn
011B
相对
D(Rn)
转移目标地址=(PC)+(Rn)
注:
(X)表示存储器地址X或寄存器X的内容。
请回答下列问题:
(1)该指令系统最多可有多少条指令?
该计算机最多有多少个通用寄存器?
存储器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需要多少位?
(2)转移指令的目标地址范围是多少?
(3)若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语言为“add(R4),(R5)+”(逗号前为源操作数,逗号后为
目的操作数)对应的机器码是什么(用十六进制表示)?
该指令执行后,哪些寄存器和存储
单元中的内容会改变?
改变后的内容是什么?
43.解答:
(1)操作码占4位,则该指令系统最多可有24=16条指令;操作数占6位,寻址方式占3位,于是寄存器编号占3位,则该机最多有23=8个通用寄存器;主存容量为128KB,按字编址,计算机字长为16位,划分为128KB/2B=216个存储单元,故MDR和MAR至少各需16位。
(2)PC和Rn可表示的地址范围均为0~216-1,而主存地址空间为216,故转移指令的目标地址范围为0000H~FFFFH(0~216-1)。
(3)汇编语句“add(R4),(R5)+”,对应的机器码为0010001100010101B=2315H。
该指令执行后,寄存器R5和存储单元5678H的内容会改变。
执行后,R5的内容从5678H
变成5679H。
存储单元5678H中的内容变成该加法指令计算的结果5678H+1234H=68ACH。
44.(12分)某计算机的主存地址空间大小为256MB,按字节编址。
指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方
式。
现有两个功能相同的程序A和B,其伪代码如下:
程序A:
inta[256][256]
intsum_array1()
{inti,j,sum=0;for(i=0;i<256;i++)for(j=0;j<256;j++)sum+=a[i][j];returnsum;
程序B:
inta[256][256]
intsum_array2()
{inti,j,sum=0;for(j=0;j<256;j++)for(i=0;i<256;i++)sum+=a[i][j];returnsum;
假定int类型数据用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。
请回答下列问题,要求说明理由或给出计算过程。
(1)若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多
少?
(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache
行号从0开始)?
(3)程序A和B的数据访问命中率各是多少?
哪个程序的执行时间更短?
44.解答:
(1)每个Cache行对应一个标记项,如下图所示。
不考虑用于Cache一致性维护和替换算法的控制位。
地址总长度为28位(228=256M),块内地址6位(26=64),Cache块号3位(23=8),故Tag的位数为28-6-3=19位,还需使用一个有效位,故题中数据Cache行的结构如下图所示。
数据Cache共有8行,因此数据Cache的总容量为8×(64+20/8)B=532B。
(2)数组a在主存的存放位置及其与Cache之间的映射关系如下图所示。
数组按行优先方式存放,首地址为320,数组元素占4个字节。
a[0][31]所在的主存块对应的Cache行号为(320+31×4)/64=6;a[1][1]所在的主存块对应的Cache行号为(320+256×4
+1×4)/64%8=5。
【另解】由
(1)可知主存和Cache的地址格式如下图所示。
278650
标记
块号
块内地址
主存地址
8650
块号
块内地址
Cache地址
数组按行优先方式存放,首地址320,数组元素占4个字节。
a[0][31]的地址为320+31×4=1
10111100B,故其对应的Cache行号为110B=6;a[1][1]的地址为320+256×4+1×4=1348=101
01000100B,故其对应的Cache行号为101B=5。
(3)数组a的大小为256×256×4B=218B,占用218/64=212个主存块,按行优先存放,程
序A逐行访问数组a,共需访问的次数为216次,未命中次数为212次(即每个字块的第一个数未命中),因此程序A的命中率为(216-212)/216×100%=93.75%。
【另解】数组a按行存放,程序A按行存取。
每个字块中存放16个int型数据,除访
问的第一个不命中,随后的15个全都命中,访问全部字块都符合这一规律,且数组大小为字块大小的整数倍,故程序A的命中率为15/16=93.75%。
程序B逐列访问数组a,Cache总容量为64B×8=512B,数组a一行的大小为1KB,正好是Cache容量的2倍,可知不同行的同一列数组元素使用的是同一个Cache单元,故逐列访问每个数据时,都会将之前的字块置换出,也即每次访问都不会命中,命中率为0。
由于从Cache读数据比从主存读数据快很多,所以程序A的执行比程序B快得多。
43.(11分)假定在一个8位字长的计算机中运行如下C程序段:
unsignedintx=134;unsignedinty=246;intm=x;intn=y;
unsignedintz1=x-y;unsignedintz2=x+y;intk1=m-n;intk2=m+n;
若编译器编译时将8个8位寄存器R1~R8分别分配给变量x、y、m、n、z1、z2、k1
和k2。
请回答下列问题。
(提示:
带符号整数用补码表示。
)
(1)执行上述程序段后,寄存器R1、R5和R6的内容分别是什么(用十六进制表示)?
(2)执行上述程序段后,变量m和k1的值分别是多少(用十进制表示)?
(3)上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一个加法器辅助电路实现?
简述理由。
(4)计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?
上述程序段中,
哪些带符号整数运算语句的执行结果会发生溢出?
43.解答:
(1)134=128+6=10000110B,所以x的机器数为10000110B,故R1的内容为86H。
246=255-9=11110110B,所以y的机器数为11110110B。
x-y:
10000110+0000
1010=(0)10010000,括弧中为加法器的进位,故R5的内容为90H。
x+y:
10000110+11110110=
(1)01111100,括弧中为加法器的进位,故R6的内容为7CH。
(2)m的机器数与x的机器数相同,皆为86H=10000110B,解释为带符号整数m(用补码表示)时,其值为-1111010B=-122。
m-n的机器数与x-y的机器数相同,皆为90H=10010000B,解释为带符号整数k1(用补码表示)时,其值为-1110000B=-112。
(3)能。
n位加法器实现的是模2n无符号整数加法运算。
对于无符号整数a和b,a+b可以直接用加法器实现,而a-b可用a加b的补数实现,即a-b=a+[-b]补(mod2n),所以n
位无符号整数加/减运算都可在n位加法器中实现。
由于带符号整数用补码表示,补码加/减运算公式为:
[a+b]补=[a]补+[b]补(mod2n),[a-b]补
=[a]补+[-b]补(mod2n),所以n位带符号整数加/减运算都可在n位加法器中实现。
(4)带符号整数加/减运算的溢出判断规则为:
若加法器的两个输入端(加法)的符号
相同,且不同于输出端(和)的符号,则结果溢出,或加法器完成加法操作时,若次高位的
进位和最高位的进位不同,则结果溢出。
最后一条语句执行时会发生溢出。
因为10000110+11110110=
(1)01111100,括弧中为加
法器的进位,根据上述溢出判断规则,可知结果溢出。
44.(12分)某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为16MB,主存(物理)地址空间大小为1MB,页面大小为4KB;Cache采用直接映射方式,共8行;主存与Cache之间交换的块大小为32B。
系统运行到某一时刻时,页表的部分内容和Cache的部分内容分别如题44-a图、题44-b图所示,图中页框号及标记字段的内容为十六进制形式。
虚页号有效位页框号行号有效位标记
1
06
0
1
2
3
4
5
6
7
1
020
1
04
0
—
1
15
1
01D
1
02
1
105
0
—
1
064
1
2B
1
14D
0
—
0
—
1
32
1
27A
0
1
2
3
4
5
6
7
题44-a图页表的部分内容题44-b图Cache的部分内容
请回答下列问题。
(1)虚拟地址共有几位,哪几位表示虚页号?
物理地址共有几位,哪几位表示页框号(物理页号)?
(2)使用物理地址访问Cache时,物理地址应划分成哪几个字段?
要求说明每个字段的
位数及在物理地址中的位置。
(3)虚拟地址001C60H所在的页面是否在主存中?
若在主存中,则该虚拟地址对应的物理地址是什么?
访问该地址时是否Cache命中?
要求说明理由。
(4)假定为该机配置一个4路组相联的TLB共可存放8个页表项,若其当前内容(十六进制)如题44-c图所示,则此时虚拟地址024BACH所在的页面是否存在主存中?
要求说明理由。
44.解答:
(1)虚拟地址为24位,其中高12位为虚页号。
物理地址为20位,其中高8位为物理页号。
(2)20位物理地址中,最低5位为块内地址,中间3位为Cache行号,高12位为标志。
(3)在主存中。
虚拟地址001C60H=000000000001110001100000B,故虚页号为000000000001B,查看000000000001B=001H处的页表项,由于对应的有效位为1,故虚拟地
址001C60H所在的页面在主存中。
页表001H处的页框号(物理页号)为04H=00000100B,与页内偏移110001100000B拼接成物理地址:
00000100110001100000B=04C60H。
对于物理地址00000100110001100000B,所在主存块只能映射到Cache的第3行(即第011B行);由于该行的有效位=1,标记(值为105H)≠04CH(物理地址高12位),故访
问该地址时Cache不命中。
(4)虚拟地址024BACH=000000100100101110101100B,故虚页号为000000100100B;
由于TLB只有8/4=2个组,故虚页号中高11位为TLB标记,最低1位为TLB组号,它们的值分别为00000010010B(即012H)和0B,因此,该虚拟地址所对应物理页面只可能映射到TLB的第0组。
由于组0中存在有效位=1、标记=012H的项,所以访问TLB命中,即虚拟地址024BACH
所在的页面在主存中。
43.假定某计算机的CPU主频为80MHz,CPI为4,平均每条指令访存1.5次,主存与Cache之间交换的块大小为16B,Cache的命中率为99%,存储器总线宽带为32位。
请
回答下列问题。
1)该计算机的MIPS数是多少?
平均每秒Cache缺失的次数是多少?
在不考虑DMA
传送的情况下,主存带宽至少达到多少才能满足CPU的访存要求?
2)假定在Cache缺失的情况下访问主存时,存在0.0005%的缺页率,则CPU平均每秒产生多少次缺页异常?
若页面大小为4KB,每次缺页都需要访问磁盘,访问磁盘时DMA传送采用周期挪用方式,磁盘I/O接口的数据缓冲寄存器为32位,则磁盘I/O接口平均每秒发出的DMA请求次数至少是多少?
3)CPU和DMA控制器同时要求使用存储器总线时,哪个优先级更高?
为什么?
4)为了提高性能,主存采用4体低位交叉存储模式,工作时每1/4个存储周期启动一
个体。
若每个体的存储周期为50ns,则该主存能提供的最大带宽是多少?
43.解答:
(1)平均每秒CPU执行的指令数为:
80M/4=20M,故MIPS数为20;(1分)
平均每条指令访存1.5次,故平均每秒Cache缺失的次数=20M×1.5×(1-99%)=300k;(1
分)
当Cache缺失时,CPU访问主存,主存与Cache之间以块为传送单位,此时,主存带宽为16B×300k/s=4.8MB/s。
在不考虑DMA传输的情况下,主存带宽至少达到4.8MB/s才
能满足CPU的访存要求。
(2分)
(2)题中假定在Cache缺失的情况下访问主存,平均每秒产生缺页中断300000×0.0005%=1.5次。
因为存储器总线宽度为32位,所以每传送32位数据,磁盘控制器发出一次DMA请求,故平均每秒磁盘DMA请求的次数至少为1.5×4KB/4B=1.5K=1536。
(2分)(3)CPU和DMA控制器同时要求使用存储器总线时,DMA请求优先级更高;(1分)
因为DMA请求得不到及时响应,I/O传输数据可能会丢失。
(1分)
(4)4体交叉存储模式能提供的最大带宽为4×4B/50ns=320MB/s。
(2分)
44.某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。
题44表给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,
(x)表示寄存器x或存储单元x的内容。
表指令系统中部分指令格式
名称
指令的汇编格式
指令功能
加法指令
ADDRs,Rd
(Rs)+(Rd)->Rd
算术/逻辑左移
SHLRd
2*(Rd)->Rd
算术右移