考试科目名称 计算机组织与系统结构 (A卷) 2010——2011学年第1学期 教师袁春风/杨若瑜考试方式:闭卷 系(专业)计算机科学与技术 年级2009 班级 学号 姓名 成绩
题号 分数 得分 一 二 三 四 五 一、选择题(每小题2分,共36分) 1. -1022的32位补码用十六进制表示为( D )。 A. 0000 03FEH B. 0000 FC02H
C. FFFF 03FEH D. FFFF FC02H
2. 假定变量f的数据类型为float,f=-4.093e3,则变量f的机器数表示为( B )。
A. 457FD000H B. C57F D000HC. C5FF D000H D. C67FE800H
3. 某8位计算机中,假定带符号整数变量x和y的机器数用补码表示,[x]补=F5H,[y]补=7EH,则x–y
的值及其相应的溢出标志OF分别是( D )。 A. 115、0B. 119、0 4. 考虑以下C语言代码:
short si= –8196; int i=si;
执行上述程序段后,i的机器数表示为( D )。 A. 0000 9FFCHB. 0000DFFCHC.FFFF 9FFCH
D. FFFF DFFCH
C. 115、1D. 119、1
5. 以下几种存储结构中,采用相联存取方式访问信息的是( C )。
A.堆栈B.直接映射cacheC.分支历史记录表D.主存页表
6. 假定用若干个16K×8位的存储器芯片组成一个64K×8位的存储器,按字节编址,芯片内各单元交
叉编址,则地址BFFFH所在的芯片的最小地址为(D)。 A. 0000HB. 0001HC. 0002HD. 0003H
7. 假定主存地址位数为32位,按字节编址,主存和cache之间采用全相联映射方式,主存块大小为一
个字,每字32位,采用回写(Write Back)方式和随机替换策略,则能存放32K字数据的cache的总容量至少应有多少位?( D) A. 1536K
B. 1568K
C. 2016K
D. 2048K
8. 某计算机按字节编址,采用小端方式存储信息。其中,某指令的一个操作数为16位,该操作数采
用基址寻址方式,指令中形式地址(用补码表示)为FF00H,当前基址寄存器的内容为C000 0000H,则该操作数的LSB存放的地址是( A )。
A. BFFF FF00H B.BFFF FF01HC.C000 FF00HD. C000 FF01H
9. 通常将在部件之间进行数据传送的指令称为传送指令。以下有关各类传送指令功能的叙述中,错误
的是( D)。
A. 出/入栈指令(push/pop)完成CPU和栈顶之间的数据传送 B. 访存指令(load/store)完成CPU和存储单元之间的数据传送 C. I/O指令(in/out)完成CPU和I / O端口之间的数据传送 D. 寄存器传送指令(move)完成CPU和寄存器之间的数据传送
10. 执行完当前指令后,PC中存放的是后继指令的地址,因此PC的位数和( C )的位数相同。 A. 指令寄存器 B. 程序状态字寄存器C. 主存地址寄存器 D. 指令译码器 11. 下列有关指令和微指令之间关系的描述中,正确的是( B )。
A.一条指令的功能通过执行一条微指令来实现 B.一条指令的功能通过执行一个微程序来实现 C.一条微指令的功能通过执行一条指令来实现 D.一条微指令的功能通过执行一个微程序来实现
12. 以下给出的事件中, 无需异常处理程序进行处理的是( D )。
A.除数为0 B. 地址越界C.缺页故障
D. cache缺失
13. 以下给定的情况中,可能不会引起指令流水线阻塞的是( A )。
A.跳转指令执行B. TLB缺失C. 结果溢出D. cache缺失
14. 假定一个同步总线的工作频率为33MHz,总线中有32位数据线,每个总线时钟传输一次数据,则
该总线的最大数据传输率为( B)。 A. 66MB/s
B.132MB/s
C.528MB/s
D. 1056MB/s
15. 在计数器定时查询方式下,若每次计数都从0开始,则(A)。
A. 设备号小的设备优先级高 C. 每个设备的优先级均等
B. 设备号大的设备优先级高 D.每个设备的优先级随机变化
16. 假定计算机系统中连接主存和磁盘的I/O总线的带宽是68.8MB/s,磁盘的最大数据传输率是
5MB/s。如果允许磁盘输入/输出占用100%的总线和主存带宽,那么总线上可同时接入的磁盘个数最多是(A)。 A. 13 B. 14
C. 15
D. 16
17. 以下给出的部件中,不包含在外设控制接口电路中的是( A )。 A.标志寄存器
B. 数据缓存器
C. 命令(控制)寄存器D. 状态寄存器
18. 以下有关CPU响应外部中断请求的叙述中,错误的是(A )。
A. 每条指令结束后,CPU都会转到“中断响应”周期进行中断响应处理 B. 在”中断响应”周期,CPU先将中断允许触发器清0,以使CPU关中断 C. 在”中断响应”周期,CPU把后继指令地址作为返回地址保存在固定地方 D. 在”中断响应”周期,CPU把取得的中断服务程序的入口地址送PC
得分 二、简单解释以下英文术语的含义。(每个2分,共10分)
1. CPI (略) 2. ALU (略) 3. RISC (略) 4. RAID (略) 5. VLIW (略) 得分 三、分析设计题(共38分,答案写在答题纸上)
1. (8分)假设某计算机按字节编址,L1 datacache的数据区大小为128B,采用直接映射方式,主存和cache交换的块的大小为16B,cache初始为空。以下是对矩阵进行转置的程序段:
typedef { int }
若sizeof(int)=4,数组dst从地址0000C000H开始存放,数组src从地址0000C040H开始存放。仿照col=0,row=0栏目中的形式填写表1,说明数组元素src[row][col]和dst[row][col]各自映射到cache哪一行,其访问是命中(hit)还是缺失(miss)。
表1 题1中的src数组和dst数组
int array[4][4];
array src)
void transpose(array dst,
i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
dst[j][i] = src[i][j];
row=0 col=0 0/miss src数组 col=1 col=2 col=3 col=0 dst数组 col=1 col=2 col=3
row=1 row=2 row=3 【分析解答】 从程序来看,数组访问过程如下:
src[0] [0]、dst[0] [0]、src[0] [1]、dst[1] [0]、src[0] [2]、dst[2] [0]、src[0] [3]、dst[3] [0] src[1] [0]、dst[0] [1]、src[1] [1]、dst[1] [1]、src[1] [2]、dst[2] [1]、src[1] [3]、dst[3] [1] src[2] [0]、dst[0] [2]、src[2] [1]、dst[1] [2]、src[2] [2]、dst[2] [2]、src[2] [3]、dst[3] [2] src[3] [0]、dst[0] [3]、src[3] [1]、dst[1] [3]、src[3] [2]、dst[2] [3]、src[3] [3]、dst[3] [3]
因为块大小为16B,每个数组元素有4个字节,所以4个数组元素占一个主存块,因此每次总是调入4个数组元素到cache的一行。
当数据区容量为128B时,L1 data cache中共有8行。数组元素dst[0][i]、dst[1][i] 、dst[2][i]、dst[3][i]、src[0][i]、src[1][i]、src[2][i]、src[3][i] (i=0~3) 分别映射到cache第0、1、2、3、4、5、6、7行。因此,不会发生数组元素的替换。每次总是第一个数组元素不命中,后面三个数组元素都命中。如下表所示。
表1 题1中的src数组和dst数组的命中情况
row=0 row=1 row=2 row=3 col=0 4/miss 5/miss 6/miss 7/miss src数组 col=1 4/hit 5/hit 6/hit 7/hit col=2 4/hit 5/hit 6/hit 7/hit col=3 4/hit 5/hit 6/hit 7/hit col=0 0/miss 1/miss 2/miss 3/miss dst数组 col=1 0/hit 1/hit 2/hit 3/hit col=2 0/hit 1/hit 2/hit 3/hit col=3 0/hit 1/hit 2/hit 3/hit 2.(20分)某高级语言源程序实现“找到save数组中第一个不等于k的元素”功能,其核心循环语句如下:“while (save[i] == k ) { i += 1;} ”。若对其编译时,编译器将i和k分别分配在寄存器$s3和$s5中,数组save的基址存放在$s6中,则生成的MIPS汇编代码段如下。
loop: sll $t1, $s3, 2
add $t1, $t1, $s6
#R[$t1]←R[$s3]<<2,即R[$t1]=i×4
#R[$t1]←R[$t1]+R[$s6],即R[$t1]=Address of save[i]
lw$t0, 0($t1) #R[$t0]←M[R[$t1]+0],即R[$t0]=save[i] bne$t0, $s5, exit #if R[$t0]≠R[$s5] then goto exit addi $s3, $s3, 1 j loop
exit:
假设从loop处开始的指令存放在内存80000处,则上述循环对应的MIPS机器码如图1所示。
# R[$s3]←R[$s3]+1,即i=i+1 #goto loop
80000
6位 0 5位 0 5位 19 5位 9 5位 2 6位 0
80004 80008 80012 80016 80020 80024
0 35 5 8 2 …… 9 9 8 19 22 8 21 21 20000 9 0 0 2 1 32 图1 题2中的MIPS机器码
根据上述叙述,回答下列问题,要求说明理由或给出计算过程。 .............(1)数组save每个元素占几个字节? (2)MIPS中有多少个通用寄存器? (3)addi指令的操作码是多少?
(4)标号exit的值是多少?如何根据bne指令计算得到?
(5)标号loop的值是多少?如何根据jump指令计算出得到?MIPS中跳转指令的跳转范围是多少? (6)假定如图2所示的单周期数据通路和如图3所示的多周期数据通路中各主要功能单元的操作时间为:存储器─200ps;ALU和加法器─100ps;寄存器堆读或写─50ps。在不考虑多路选择器、控制单元、PC、扩展器和线路等延迟的情况下,单周期和多周期处理器的时钟周期最小各为多少?若上述程序段共循环执行10次,则在单周期数据通路和多周期数据通路中执行各需要多少时间?
图2 单周期数据通路 图3多周期数据通路
(7)若采用转发技术,并控制寄存器堆在前半周期写数据在后半周期读数据,则哪些指令之间的数据相关能够被消除,哪些指令之间的数据相关不能被消除?假定在如图4所示的采用“转发+阻塞”技术的流水线处理器中执行上述程序,同时对分支冒险采用“一位动态预测”(初始预测为转移)方式,条件检测和分支目标地址的修改都在“执行(Ex)”阶段进行,jump指令在“译码(ID)”阶段进行跳转目标地址修改,则执行10次循环所用的时间为多少?这种情况下,流水线处理器的执行速度大约各是单周期处理器和多周期处理器的多少倍? 【分析解答】
(1)Save数组的每个元素占4个字节。因为每次循环取数组元素时,其下标地址都要乘以4。 (2)MIPS中有32个通用寄存器,因为寄存器的编号是5位。
(3)“addi”指令的操作码是001000B,因为其OP字段为8,相当于6位二进制编码001000。 (4)标号exit的值是80024,其含义是循环结束时跳出循环后执行的首条指令的地址。它由当前分支指令(条件转移指令)的地址80012加上4得到下条指令的地址,然后再加上相对位移量2×4得到,即80012+4+2×4=80024。
(5)标号loop的值为80000,是循环入口处首条指令的地址,由跳转指令j的32位地址80020的高4位(0000B),与指令中给出的低26位(20000)拼接成30位地址,然后再在低位添两个0(相当于×4)得到,即20000×4=80000。因为跳转指令的地址与其跳转到的目标指令地址的高4位一样,所以,如果将4GB的主存空间分割成16个256MB的子空间,那么跳转到的目标指令总是和跳转指令在
相关推荐: