一、选择题
12.下列选项中,能缩短程序执行时间的措施是( ) 1 提高CPU时钟频率; 2优化数据通过结构;
3对程序进行编译优化
A.仅1和2 B.仅1和3 C.仅2和3 D.1,2,3
13. 假定有4个整数用8位补码分别表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是( )
A. r1 * r2 B. r2 *r3 C. r1 * r4 D. r2 * r4
14.假定变量i,f,d数据类型分别为int, float, double (int用补码表示,float和double用IEEE754单精度和双精度浮点数表示),已知i=785,f=1.5678e3,d=1.5e100,若在32位机器中执行下列关系表达式,则结果为真的是( )
(I) i = = (int)(float)i
(II) f = = (float)(int)f
(III) f = =(float)(double)f
(IV) (d+f)-d = = f
A. 仅I和II B.仅I和III C. 仅II和III D. 仅III和IV
15.假定用若干个2K* 4位芯片组成一个8K* 8位存储器,则0B1FH所在芯片的最小地址是( )
A.0000H B.0600H C.0700H D.0800H
16.下列有关RAM和ROM的叙述中正确的是( )
I RAM是易失性存储器,ROM是非易失性存储器
II RAM和ROM都是采用随机存取方式进行信息访问
III RAM和ROM都可用做Cache
IV RAM和ROM都需要进行刷新
A.仅I和II B.仅II和III
C.仅I,II,III D.仅II,III,IV
17.下列命令组合在一次访存过程中,不可能发生的是( )
A.TLB未命中,Cache未命中,Page未命中
B.TLB未命中,Cache命中,Page命中
C.TLB命中,Cache未命中,Page命中
D.TLB命中,Cache命中,Page未命中
18.下列寄存器中,汇编语言程序员可见的是( )
A.存储器地址寄存器(MAR) B.程序计数器(PC) C.存储区数据寄存器(MDR) D.指令寄存器(IR)
19.下列不会引起指令流水阻塞的是( )
A.数据旁路 B.数据相关 C.条件转移 D.资源冲突
20.下列选项中的英文缩写均为总线标准的是( )
A. PCI、CRT、USB、EISA
B. ISA、CPI、VESA、EISA
C. ISA、SCSI、RAM、MIPS
D. ISA、EISA、PCI、PCI-Express
21、单级中断系统中,中断服务程序执行顺序是( )
I保护现场 II开中断 III关中断 IV保存断点
V中断事件处理 VI恢复现场 VII中断返回
A、I->V->VI->II->VII
B、III->I->V->VII
C、III->IV->V->VI->VII
D、IV->I->V->VI->VII
22、假定一台计算机的显示存储器用DRAM芯片实现,若要求显示分辨率为1600*1200,颜色深度为24位,帧频为85HZ,显示总带宽的50%用来刷新屏幕,则需要的显存总带宽至少约为( )
A.245Mbps B.979Mbps C.1958Mbps D.7834Mbps
二、综合题
43.(11分) 某计算机字长为16位,主存地址空间大小为128KB,按字编址。采用字长指令格式,指令名字段定义如下:
转移指令采用相对寻址方式,相对偏移是用补码表示,寻址方式定义如下:
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)+ (逗号前为源操作符,逗号后为目的操作数)对应的机器码是什么(用十六进制)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么?
44.(12分)某计算机的主存地址空间为256MB,按字节编址,指令Cache和数据cache分离,均有8个Cache行,每个Cache行的大小为64B,数据Cache采用直接映射方式,现有两个功能相同的程序A和B,其伪代码如下所示:
程序A:
int a[256][256];
......
int sum_array1()
{ int i, j, sum = 0;
for (i = 0; i < 256; i++)
for (j= 0; j < 256; j++)
sum += a[i][j];
return sum;
}
程序B:
int a[256][256];
......
int sum_array2()
{
int i, j, sum = 0;
for (j = 0; j < 256; j++)
for (i= 0; i < 256; i++)
sum += a[i][j];
return sum;
}
假定int 类型数据用32位补码表示,程序编译时i, j, sum 均分配在寄存器中,数据a按行优先方式存放,其地址为320(十进制数),请回答下列问题,要求说明理由或给出计算过程。
(1)、若不考虑用于cache一致性维护和替换算法的控制位,则数据Cache的总容量是多少?
(2)、数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?
(3)、程序A和B的数据访问命令中各是多少?那个程序的执行时间更短?