卓顶精文2019年东南大学计算机专业考研真题 联系客服

发布时间 : 星期六 文章卓顶精文2019年东南大学计算机专业考研真题更新完毕开始阅读95697b98854769eae009581b6bd97f192379bf1e

指令格式中,格式1指令功能为:Rd←(Rd) OP1 (Rs) 或 Rd←(Rd) OP1 [(Rs)],Rs、Rd表示寄存器,(Ry)表示寄存器Ry的内容,[x]表示存储单元x的内容,OP1=000、001、010分别表示加法、算术左移、算术右移操作,移位位数放在Rs中。格式2指令为双字长指令,OP2=1000、1001、1010分别表示赋值、取数、存数操作,Rs/Rd表示源或目的寄存器,Imme/Address表示立即数或存储单元结构。

CPU结构中,数据通路为单总线结构,R0~R3为通用寄存器(编号为0~3),寄存器间的数据传送操作和ALU运算操作均需一个时钟周期,访存操作采用同步控制方式、需2个时钟周期,请回答下列问题:

1) 若(IR)=A8H,写出该指令的操作、源操作数寻址方式 2) 某C语言语句为“y=y*8”,若变量y的存储单元地址为23H,写出实现该语句功能的指

令串。(通用寄存器可任意使用)

3) CPU取指并译码后,若IR中指令为:R3←(R3)+[(R2)],则该指令执行阶段至少需要几

个时钟周期?(可以用文字或微操作步序列描述)

答案:(若是发现答案中有错的或者不确定的最好跟其他同学多讨论讨论~) 1-10 B A D B D C B D C B 11-20 C A C A C A D B A D 21-30 B C D D B C C B A A 31-40 B C D C A C D B D B 41.

42.

(1)互斥、循环等待、占有并等待(请求和保持)、非抢占(不剥夺) (2)Need=Max-Allocation Max Allocation Need A B C D A B C D A B C D P0 6 0 1 2 4 0 0 1 2 0 1 1 P1 1 7 5 0 1 1 0 0 0 6 5 0 P2 2 3 5 6 1 0 5 4 1 3 0 2 P3 1 6 5 3 0 6 3 3 1 0 2 0 (3)不是安全状态,因为找不到安全序列,也就是找不到某种进程推进顺序,使得每个进程都可顺序地完成。 43.

Semaphore empty = n, full = -m, mutex = 1;

44.

装填因子0.6,关键字个数6个,则散列表长度为6/0.6=10,地址为0~9 8%7=1,19%7=5,12%7=5,17%7=3,13%7=6,20%7=6 散列表为: 0 1 2 3 4 5 6 7 8 8 17 19 12 13 20 ASLsucc=(1+1+2+1+2+3)/6=10/6=5/3 ASLunsucc=(1+2+1+2+1+5+4)/7=16/7 45.

9

char function(char a[],int n) { int count = 0; int mainSub = 0; char mainElement = a[0]; count++; for (int i=1;in/2) return mainElement; else return '\\0'; }

46.

(1)Cache地址为:组号13位、组内块号2位、块内地址5位。则Cache有2的13次方个组=8192个组。

主存地址为:区号14位、区内块号13位、块内地址5位。Cache行由目录表项和数据区两部分,目录表项位数为:14+2(LRU位)+1(标记位)+1(写回法脏位)=18位。 数据区为32*8位=256位。则Cache行大小至少有18+256=274位。

(2)0000 0000 0100 0110 0011 0000 0101 0000,则10 0011 0000 010为命中组号,Cache行标记字段的值为0000 0000 0100 01

(3)A[i]+=A[i+1]等价于A[i]=A[i]+A[i+1],则一次循环需要访问主存三次。

for(i=0;i<512;i+=2)可得循环次数为512/2=256次,则该程序段共访存256*3=768次。由sizeof(int)=4,可得存储一个int型数据需要4B。由一个Cache块大小为32B,可得一个Cache块可以存放32/4=8个int型数据。int A[512]定义了512个int型数据,则存储A[512]共需要512/8=64个Cache块。则命中率为1-64/768=704/768=91.7%。 47.

(1)A8H=1010 1000,1010对应为OP2的存数操作,Rs/Rd=10,则源操作数的寻址方式为寄存器寻址。

(2)y=y*8,思路:先将y所在单元存入R0,将R0左移3位,再将R0放入y所在单元 1001 00 00 ;取数操作

0010 0011 ;地址23H,这两步相当于R0←[23H] 1000 01 00 ;赋值操作

0000 0011 ;3,这两步相当于R1←03H

001 0 00 01 ;R0算术左移(R1)位,相当于R0<<(R1) 1010 00 00 ;存数操作

0010 0011 ;地址23H,这两步相当于[23H]←(R0) (3)

R2→MAR,1→Read 1T R3→Y, M(MAR)→MDR 2T MDR→ALU,ADD→ALU,ALU→Z 1T Z→R3,1→End 1T 总共需要5个时钟周期