logo资料库

计算机系统试卷.pdf

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
装 订 线 内 不 要 答 题 北京大学信息科学技术学院考试试卷 考试科目:计算机系统导论 姓名: 学号: 考试时间: 2016 年 11 月 07 日 小班教师: 总分 题号 一 二 三 四 五 分数 阅卷人 1、考生进入考场后,按照监考老师安排隔位就座,将学生证放在桌面上。 无学生证者不能参加考试;迟到超过 15 分钟不得入场。在考试开始 30 分钟后 方可交卷出场。 2、除必要的文具和主考教师允许的工具书、参考书、计算器以外,其它 所有物品(包括空白纸张、手机、或有存储、编程、查询功能的电子用品等) 不得带入座位,已经带入考场的必须放在监考人员指定的位置。 北京大学考场纪律 以下以下为答题纸,共 页 3、考试使用的试题、答卷、草稿纸由监考人员统一发放,考试结束时收 回,一律不准带出考场。若有试题印制问题请向监考教师提出,不得向其他考 生询问。提前答完试卷,应举手示意请监考人员收卷后方可离开;交卷后不得 在考场内逗留或在附近高声交谈。未交卷擅自离开考场,不得重新进入考场答 卷。考试结束时间到,考生立即停止答卷,在座位上等待监考人员收卷清点后, 方可离场。 4、考生要严格遵守考场规则,在规定时间内独立完成答卷。不准交头接 耳,不准偷看、夹带、抄袭或者有意让他人抄袭答题内容,不准接传答案或者 试卷等。凡有违纪作弊者,一经发现,当场取消其考试资格,并根据《北京大 学本科考试工作与学术规范条例》及相关规定严肃处理。 5、考生须确认自己填写的个人信息真实、准确,并承担信息填写错误带 来的一切责任与后果。 学的学术声誉。 以下为试题和答题纸,共 12 页。 学校倡议所有考生以北京大学学生的荣誉与诚信答卷,共同维护北京大 1
得分 第一题 单项选择题和填空题(每小题 1 分,共 20 分) 注:选择题的回答填写在下表中,填空题的回答填写在题目提供的空格中。 1 题号 回答 题号 11 回答 2 12 3 13 7 17 / 8 18 / 9 19 / 4 14 5 15 / 6 16 / 10 20 / addq $1, %rdi cmpq $8, %rdi ja .L2 jmp *.L4(, %rdi, 8) .L4: 2 .quad .L9 .quad .L5 .quad .L6 .quad .L7 .quad .L2 D. shl $1,%ax B. jc NEXT C. inc %bx 1. 在下列指令中,其执行会影响条件码中的 CF 位的是: A. jmp NEXT 2. 下列关于比较指令 CMP 说法中,正确的是: A. 专用于有符号数比较 C. 专用于串比较 3. 在如下代码段的跳转指令中,目的地址是: 400020: 74 F0 400022: 5d je ________ pop %rbp B. 专用于无符号数比较 D. 不区分比较的对象是有符号数还是无符号数 B. 400012 A. 400010 4. 对于如下的 C 语言中的条件转移指令,它所对应的汇编代码中至少包含几条条 件转移指令:if (a > 0 && a != 1 || a < 0 && a != -1) b=a; C. 400110 D. 400112 D. 5 条 C. 4 条 B. 3 条 A. 2 条 5. 将 AX 清零,下列指令错误的是: A. sub %ax, %ax C. test %ax, %ax 6. 在如下 switch 语句对应的跳转表中,哪些标号没有出现在分支中? B. xor %ax, %ax D. and $0, %ax
.quad.L7 .quad .L8 .quad .L2 C. 0, 7 .quad .L5 D. 2, 4 A. 3, 6 7. 已知短整型数组 S 的起始地址和下标 i 分别存放在寄存器%rdx 和%rcx,将 B. -1, 4 &S[i]存放在寄存器%rax 中所对应的汇编代码是: A. leaq (%rdx, %rcx, 1), %rax B. movw (%rdx, %rcx, 2), %rax C. leaq (%rdx, %rcx, 2), %rax D. movw (%rdx, %rcx, 1), %rax 8. 下面对指令系统的描述中,错误的是: A. CISC 指令系统中的指令数目较多,有些指令的执行周期很长;而 RISC 指令 系统中通常指令数目较少,指令的执行周期都较短。 B. CISC 指令系统中的指令编码长度不固定;RISC 指令系统中的指令编码长度固 定,这样使得 CISC 机器可以获得了更短的代码长度。 C. CISC 指令系统支持多种寻址方式,RISC 指令系统支持的寻址方式较少。 D. CISC 机器中的寄存器数目较少,函数参数必须通过栈来进行传递;RISC 机器 中的寄存器数目较多,只需要通过寄存器来传递参数,避免了不必要的存储访问。 9. 下面对流水线技术的描述,正确的是: A. 流水线技术不仅能够提高执行指令的吞吐率,还能减少单条指令的执行时间。 B. 不断加深流水线级数,总能获得性能上的提升。 C. 流水级划分应尽量均衡,吞吐率会受到最慢的流水级影响。 D. 指令间的数据相关可能会引发流水线停顿,但总是可以通过调度指令来解决。 10. 对应下述组合电路的正确 HCL 表达式为: A. Bool eq = ( a or b ) and ( !a or !b ) B. Bool eq = ( a and b) or ( !a and !b ) C. Bool eq = ( a or !b ) and ( !a or b ) D. Bool eq = ( a and !b ) or ( !a and b ) 3
11. 流水线数据通路中的转移预测策略为总是预测跳转。如果转移预测错误,需要 恢复流水线,并从正确的目标地址开始取值。其中,用来判断转移预测是否正 确的信号是_①_和_②__,用来获得正确的目标地址的信号是_③_。 A.① M_icode ② M_Bch ③ M_valA B.① W_icode ② M_Bch ③ M_valA C.① W_icode ② M_Bch ③ W_valM D.① M_icode ② M_Bch ③ W_valM 12. 若处理器实现了三级流水线,每一级流水线实际需要的运行时间分别为 1ns、 2ns 和 3ns,则此处理器不停顿地执行完毕 10 条指令需要的时间为: A. 21 ns B. 12 ns C. 24 ns D. 36 ns 13. 以下关于存储结构的讨论,那个是正确的: A. 增加额外一级存储,数据存取的延时一定不会下降 B. 增加存储的容量,数据存取的延时一定不会下降 C. 增加额外一级存储,数据存取的延时一定不会增加 D. 以上选项都不正确 4
14. 关于局部性(locality)的描述,不正确的是: A. 循环通常具有很好的时间局部性 B. 循环通常具有很好的空间局部性 C. 数组通常具有很好的时间局部性 D. 数组通常具有很好的空间局部性 15. 假定编译器规定 int 和 short 型长度分别为 32 位和 16 位,执行下列语句: unsigned short x = 65530; unsigned int y = x; 得到 y 的机器数为___________。(用 16 进制表示,勿省略前导的 0) 16. 一个 C 语言程序在一台 32 位机器上运行。程序中定义了三个变量 x、y 和 z, 其中 x 和 z 为 int 型,y 为 short 型。当 x=127,y=-9 时,执行赋值语句 z=x+y 后,z 的值是__________(用 16 进制表示,勿省略前导的 0) 17. 若按 IEEE 浮点标准的单精度浮点数(符号位 1 位,阶码字段 exp 占据 8 位, 小数字段 frac 占据 23 位)表示-8.25,结果是__________(用 16 进制 表示) 18. 若我们采用基于 IEEE 浮点格式的浮点数表示方法,阶码字段 exp 占据 k 位, 小数字段 frac 占据 n 位,则最大的非规格的正数是__________(结果用含 有 n,k 的表达式表示) 19. 如果直接映射高速缓存大小是 32KB,并且块(block)大小为 32 字节,那 么它每组(set)有 行(line)。 20. 如果二路组相联高速缓存大小是 8KB,并且块(block)大小为 32 字节,那 么它每路(way)有 行(line)。 5
得分 第二题(20 分) 1.在 64 位机器上,判断下列等式是否恒成立 /* random_int()函数返回一个随机的 int 类型值 */ int x = random_int(); int y = random_int(); int z = random_int(); unsigned ux = (unsigned)x; long lx = (long)x; /* long 为 64 位 */ long ly = (long)y; double dx = (double)x; double dy = (double)y; double dz = (double)z; Expression (x >= 0) || (3*x < 0) (x >= 0) || (x < ux) ((x >> 1) << 1) <= x Always True? Y N Y N Y N Y N Y N Y N Y N Y N ((x-y)<<3) + (x>>1) - y == 8*x - 9*y + x/2 (x - y > 0) == ((y+~x+1)>>31 == 1) dx + dy == (double) (y+x) dx + dy + dz == dz + dy + dx (int)((lx+ly)>>1) == ((x&y) + ((x^y)>>1)) 2. 假设 C 语言中新定义了一种数据类型 T,该类型为 12-bit 长的浮点数,此浮 点数遵循 IEEE 浮点数格式,其字段划分如下: 符号位(s):1-bit;阶码字段(exp):6-bit;小数字段(frac):5-bit。 1) 若将该格式下能表示的所有正规格数从小到大依次排列,则 相邻两数之间差值的最小值为_________,最大值为_________ 2) 现定义了如下变量: T a = -15.875; T b = (1<<28) + (1<<24) + (1<<22); T c = a*b; 请写出各变量的二进制表示: 二进制表示 变量 a b c 6
得分 第三题(20 分) (1) 观察下面C语言函数和它相应的X86-64汇编代码 int foo(int x, int i) { switch(i) { case 1: x -= 10; case 2: x *= 8; break; case 3: x += 5; case 5: x /= 2; break; case 0: x &= 1; default: x += i; } return x; } 00000000004004a8 : 4004a8: mov %edi,%edx 4004aa: cmp $0x5,%esi 4004ad: ja 4004d4 4004af: mov %esi,%eax 4004b1: jmpq *0x400690(,%rax,8) 4004b8: sub $0xa,%edx 4004bb: shl $0x3,%edx 4004be: jmp 4004d6 4004c0: add $0x5,%edx 4004c3: mov %edx,%eax 4004c5: shr $0x1f,%eax 4004c8: lea (%rdx,%rax,1),%eax 4004cb: mov %eax,%edx 4004cd: sar %edx 4004cf: jmp 4004d6 4004d1: and $0x1,%edx 4004d4: add %esi,%edx 4004d6: mov %edx,%eax 4004d8: retq 调用gdb命令x/kg $rsp 将会检查从rsp中的地址开始的k个8字节字,请填写下 面gdb命令的输出(每空一分)。 >(gdb) x/6g 0x400690 7
0x400690: 0x__________________ 0x__________________ 0x4006a0: 0x__________________ 0x__________________ 0x4006b0: 0x__________________ 0x__________________ (2) 右边的汇编代码是由左边程序中的 m 函数编译而成。回答如下问题。 typedef struct _list { struct _list* next; int value; } list; int m(list* p) { int r = 100; while (__○1 __) { r = __○2 __; p = __○3 __; } if (p != 0) r = __○4 __; return r; } m: .L14: .L4: .L3: .L6: testq %rdi, %rdi je .L6 movq (%rdi), %rdx movl $100, %eax testq %rdx, %rdx jne .L4 jmp .L3 movq (%rdi), %rdx testq %rdx, %rdx je .L3 movl 8(%rdx), %r8d __○5 __ 8(%rdi), %r8d __○5 __ %r8d, %eax movq (%rdx), %rdi testq %rdi, %rdi jne .L14 ret __○5 __ 8(%rdi), %eax ret movl $100, %eax ret 已知访存延迟 1 个指令周期。不访存的时候 addl 延迟 4 个指令周期,imull 延 迟 8 个指令周期,其他指令延迟 1 个指令周期。指令访存时延迟的执行周期为不 访存的时候延迟的指令周期和访存延迟的周期之和。函数 m 中的循环在处理链表 p 的时候 CPE 为 4 个指令周期。○5 处的指令为 movl, addl, imull 中的一个。请 填写○1 -○5 处的代码。 ○1 ○2 ○3 ○4 ○5 8
分享到:
收藏