一. 论述题(共8题,64分)
1. (论述题, 8分) 8K x 8位DRAM芯片组成32K x 16位存储器,试问:
(1) 数据寄存器多少位置?地址寄存器多少位置?
(2) 需要多少芯片?如何组织?
(3)需要多少条地址线?选择译码信号需要多少片?
(4)画出这个存储器和CPU连接图。需要标记MREQ和读写信号。
答案:
(1)数据寄存器16位,地址寄存器15位(32位)K —2^15);
(2)共需8片芯片,2片组成8片K*16位,共4组;
(3)A12~A共有13条地址线,A13、A142根地址线作为片作为译码信号
图中MREQ不需要连接到2-4译码器也需要标记
2. (论述题, 8分) 用户虚拟地址空间为512页,页长为2页KB,主存物理为64KB。如果虚页0、1、2、3已转入主存4、7、8、10页,已知用户程序有10页长。 请问:
(1)物理地址和虚拟地址的格式。
(2)虚地址01883和4BCD(十六进制)对应的物理地址是多少?
答案:
(1)地址空间分配
页长2KB—2^页面地址11位
物理地址空间:64KB/2KB=32页—2^5, 页面地址5位,页面地址11位,地址代码16位
虚地址空间: 512页—2^9.页面地址9位,页面地址11位。共20个地址码
(2)地址对应
页表中反映了当前的内存状态 为4、7、8、10
虚地址01883H=0000 0001 1000 1000 0011B,页号为3,查表已转入主存页10,
因此,物理地址中的页面号为10,页面地址与虚拟地址相同,
所以物理地址是:101 0000 1000 0011B=5083H
虚地址4BCDH=0100 1011 1100 1101 B,页面号为9,查表,发现该页未被调入到主存中, 因此,如果没有物理地址,缺页就会中断。
3. (论述题, 8分) 主存容量为512K字,CACHE容量为2K块长为16个字。
(1)在直接映射下设计主存地址格式。
(2)在直接映射下,字地址为01234H的单元调入Cache,地址标记。
(3)直接映射的优缺点。
(4)主存格式在全相联映射下。
(5)4路组相联映射下,主存格式。
答案:
(1)512主存容量K字,地址位数19(512K=2^19);块长16字,位数4(16=2^4)
Cache容量2K字,共有2K/16=128块(128=2^7)行地址可用7位表示
标记位数为19-7-4=8
设计主存地址格式为直接映射
标记 | 行地址 | 块内地址 |
---|---|---|
8 | 7 | 4 |
(2)直接映射,
字地址为01234H= 000 0001 0010 0011 0100,前8位0000010为标记,即02H。
(3)直接映射的优点是硬件简单,成本低。 缺点是每个主存块只能转入Cache如果Cache容量小,内存块频繁调出Cache的情况。
(4)主存地址格式为全相联映射
标记 | 块内地址 |
---|---|
15 | 4 |
(5)Cache容量2K字,共有2K/16=128元,4路组相连,128/4=32组(32=2^5)组地址可用5位表示标记位数为19-5-4=在组相联映射模式下,设计主存地址格式为
标记 | 行地址 | 块内地址 |
---|---|---|
10 | 5 | 4 |
4. (论述题, 8分) 在微程序控制器中,微命令采用水平格式,微命令编码法采用字段直接编码法。共有20个微操作控制信号,形成3个相互排斥的微命令组,每组包括5、7、8个微命令。已知的外部条件有两个,微指令下的地址字段直接给出后续的微指令地址,微指令字长20个。
(1)微指令按水平微指令格式设计。
(2)画出微程序控制器原理框图。
(3)计算和控制存储容量
答案:
(1)微指令按水平微指令格式设计。
控制字段和判别测试字段采用编码表示法,
控制字段的长度为:3 3 4 = 10
测试字段的长度为:2
下址字段长度为20-10-2 = 8
控制字段:10位 ,测试字段:2位,下址字段:8位
操作控制字段 | 条件测试 | 下地址 |
---|---|---|
3位 3位 4位 | 2位 | 8位 |
b19 b9 b7 b0
(2)画出微程序控制器原理框图。
(3)计算和控制存储容量:20KB
解析:(1)
第一个微命令互斥类包括5个微命令和一个NOP共6个微命令,需要3位二进制编码;
第二个微命令互斥类包括7个微命令和一个NOP共8个微命令,需要3位二进制编码;
第三个微命令互斥类包括8个微命令和一个NOP共9个微命令,需要4位二进制编码;
因此,计算机微指令中的操作控制字段需要3 3 4=二进制编码10位。
如果采用直接控制方法,操作控制字段的位数等于微命令的位数20位,外部条件2位,对应2位。因此,操作控制字段=20 2=22位。
(2)假设微指令字长为20位,只能直接编码字段,其中下地址字段的位数=20-10-2=8位,编码格式如下图所示。
(3)以下地址字段为10位,微指令字长为20位,必须控制存储器的最大容量 = 2^10x20 = 1024×20 = 20480位 =20KB。
5. (论述题, 8分)设置机有5级中断:L0、L1、L2、L3、L中断响应的优先顺序为:L0到L4,L0最高,L1次之 ,L4最低要求将中断处理顺序改为L1、L3、L0、L4、L2,试问:
(1)下表中各级中断处理程序的各中断级屏蔽值如何设置?(每级对应一位,该位为“0”表示允许,该位为“1”表示中断屏蔽)
(2)如果5级中断同时发出中断请求,则按更改后的顺序绘制进入各级中断处理程序的过程示意图。并描述处理过程。
答案:
(1)L0:11010 L1:01000 L2:11111 L3:01010 L4:11011
表中:设置屏蔽位=1.表示屏蔽;屏蔽位置;=表示中断开放。
th>中断处理屏蔽位 | |||||
---|---|---|---|---|---|
中断处理程序 | L0级 | L1级 | L2级 | L3级 | L4级 |
L0中断处理程序 | 1 | 0 | 1 | 0 | 1 |
L1中断处理程序 | 1 | 1 | 1 | 1 | 1 |
L2中断处理程序 | 0 | 0 | 1 | 0 | 0 |
L3中断处理程序 | 1 | 0 | 1 | 1 | 1 |
L4中断处理程序 | 0 | 0 | 1 | 0 | 1 |
(2)若这5级中断同时发出中断请求,按优先次序先调用L0,L0屏蔽了本级和低级中断请求,而L1的中断请求未屏蔽,则L1发生中断嵌套响应;L1中断时,不允许任何中断,服务完毕后,退回到L0的中断服务程序,这时,允许L3的中断嵌套响应;L3服务完毕后,返回L0中断服务程序;L0服务完毕后,按照顺序应处理L2,进入L2的处理程序,L2被L4中断,执行L4级中断服务程序;L4执行完毕,执行L2的处理程序。
6. (论述题, 8分) 若变址寄存器R的内容为1000H,指令中的形式地址为2000H,地址1000H中的内容为2000H,地址2000H中的内容为3000H,地址3000H中的内容为4000H,地址4000H中的内容为5000H,则变址寻址方式下访问到的操作数是多少?请画图回答问题。
答案:变址寻址方式下访问到的操作数是4000H
解析:
变址寻址方式下有效地址EA=(R)+A=1000H+2000H=3000H,操作数S=(3000H)=4000H。所谓寻址,指的是寻找操作数的地址或下一条将要执行的指令地址。每台计算机的指令系统都有自身的一套寻址方式,不同计算机的寻址方式的名称和含义也不同。变址寻址就是把变址寄存器的内容与指令中给出的形式地址A相加,形成操作数有效地址,即EA=(变址寄存器)+A。操作数S与地址码和变址寄存器的关系为S = (变址寄存器) + A。
则变址寻址方式下,变址寻址的有效地址为3000H,访问到的操作数4000H。
7. (论述题, 8分) 指令流水线有取指(IF)、译码(ID)、执行(EX)、写回 (WB)四个过程,共有10条指令连续输入此流水线。
(1)画出指令周期流程图
(2)画出非流水线时空图
(3)画出流水线时空图
(4)假设时钟周期为100ns,求流水线的实际吞吐率(单位时间里执行完毕的指令数)。
答案:
(1)画出指令周期流程图
指令周期包括4个子过程,流程图如下。
(2)非流水CPU时空图
(3)流水CPU时空图
(4)方法一:假设时钟周期为100ns,求流水线的实际吞吐率(单位时间里执行完毕的指令数)。由上图所示,如果10条指令进入流水线的时空图,在13个时钟周期结束时,CPU执行完10条指令,1 s=10^9 ns,故实际吞吐率为:10/(100ns×13) ≈ 7.7×10^6条指令/秒
方法二:第一条指令输出结果需要4个周期,其他指令仅需要一个时钟,
故实际的吞吐率为10/[(4+9)x100ns]=7.7x10^6条/秒
8. (论述题, 8分) 今有4级流水线,分别完成取指、指令译码并取数、运算、送结果四步操作。假设完成各步操作的时间依次为100ns、100ns、80ns、50ns。请问:
① 流水线的操作周期应设计为多少?
② 若相邻两条指令发生数据相关,硬件上不采取措施,那么第2条指令要推迟多少时间进行?
③ 如果再硬件设计上加以改进,至少需推迟多少时间?
④ 求流水线的实际吞吐量(单位时间内执行完毕的指令条数)
⑤ 求流水线的加速比。(非流水时间/流水时间)
答案:
(1) 流水线的操作周期应设计为100ns
(2) 第2条指令要推迟 200ns 时间进行
(3) 至少需推迟 100ns 时间
(4)求流水线的实际吞吐量 8.33x10^6 条/秒(单位时间内执行完毕的指令条数)
(5)求流水线的加速比 4.17。(非流水时间/流水时间)
解析:
吞吐率:指单位时间内指令执行的个数。
加速比:指非流水线处理器与流水线处理器执行同一段程序所花的时间之比。
指令并行度:处理器能够在同一时间里并行执行的指令条数。 从流水线的吞吐率看,当流水线执行的指令数远远大于它的级数时,流水线的吞吐率约等于流水线时钟周期τ的倒数。因此吞吐率的大小与流水线的级数关系不大,主要取决于流水线的时钟周期t,t越小吞吐率就越大。也就是说,一条指令的执行不论其需要经历多少个阶段,从统计学角度上看它的执行时间仅为τ,这也是设计流水线处理器的意义所在。
(1)流水线的操作周期 t 应按四步操作中最长时间来考虑, 所以 t = 100 ns。
(2)遇到数据相关时,可停顿下一条指令的执行,直到前面指令的结果已经产生,因此至少需要延迟2个时钟周期为200ns。
(3)如采用专用通路技术,应保证取数之前结果已计算出来;因此,至少需要延迟1个时钟周期为 100ns 。
(4)流水线实际吞吐量
(5)流水线加速比
二. 计算题(共7题,36分)
9. (计算题, 5分)求十进制数-17的原码表示,反码表示,补码表示和移码表示(用二进制表示,并设最高位为符号位,真值为7位)。
答案:
-17的原码为10010001;
-17的反码为11101110;
-17补码为11101111。
-17移码 01101111
解析:用八位二进制表示,最高位表示符号位,1为负,0为正。
补码为其绝对值的原码取反加1,17原码为00010001,取反加1为11101110+1=11101111。
移码为补码首位取反,其余位不变。
10. (计算题, 6分) 已知x=1011,y=-1000,用变形补码计算x+y,x-y 并指出是否溢出。
答案:x+y=+0011,无溢出;
x-y 结果正溢出。
解析:x=1011为正,y=-1000为负;0为正,1为负。
正数原码=反码=补码=1011,负数补码=原码取反(0111)+1=1000
双符号位相同无溢出;双符号位不同则溢出;
双符号位为01,结果为正数,正溢出(上溢);
双符号位为10,结果为负数,负溢出(下溢)。
[x]补=00 1011,[y]补=11 1000,[-y]补=00 1000
[x]补 001011
+[y]补 111000
[x+y]补 1000011
双符号位相同为0,结果无溢出,x+y=+0011
[x]补 001011
+[-y]补 001000
[x-y]补 010011
双符号位不同为01(正溢出—上溢),结果正溢出。
11. (计算题, 5分) 设x=+9,y=-7,用带求补器的补码阵列乘法器计算X×Y。
答案:[ X·Y]补 = 1111000001= -63;X×Y= -63
解析:
[x]补=0 1001,[y]补=1 1001;乘积符号位运算 0⊕1=1 (异或运算:相同为0,不同为1);
尾数部分算前求补器输出|x|=1001,|y|=0111;
1001
x 0111
1001
1001
1001
+0000
0111111
乘积符号为1,算后补码输出00111111,|x|·|y|= 100111111
注意:算后求补输出:算后求补器输出为[ X·Y]补=1111000001=-2^8+2^7+2^6+1=-256+128+64+1=-63
二进制数真值|x|·|y|= 100111111=2^5+2^4+2^3+2^2+2^1+2^0 =- 63
十进制数乘法验证x·y= 9 x (-7) = - 63
12. (计算题, 5分) CPU执行一段程序时,cache完成存取的次数为3800次,主存完成存取的次数为200次,已知cache存取周期为50ns,主存为250ns,求cache / 主存系统的效率和平均访问时间。
答案:
cache / 主存系统的效率:83.3%
平均访问时间:60ns
解析:
命中率H=Ne/(NC+Nm)=3800/(3800+200)=0.95
主存慢于cache的倍率:r=tm/tc=250ns/50ns=5
访问效率:e=1/[r+(1-r)·H]=1/[5+(1-5)×0.95]=83.3%
平均访问时间:ta=tc/e=50ns/0.833=60ns
13. (计算题, 5分) 用一台50MHz处理机执行标准测试程序,它包含的混合指令数和相应所需的平均时钟周期数如表所示,求有效CPI、MIPS速率、处理机程序执行时间tcpu.
答案:
有效CPI:1.55(周期/指令)
MIPS速率:32.26(百万条指令/秒)
处理机程序执行时间tcpu:3.1 ms = 3100 us
解析:10^6 表示 10的6次方 :1秒 = 10^6 微秒
(1)方法一:
CPI = 执行某段程序所需的CPU时钟周期数 / 程序包含的指令条数
= (45000x1+32000x2+15000x2+8000x2)/(45000+32000+15000+8000)
= 1.55(周期/指令)
方法二:有效CP1为:1×0.45+2×0.32+2×0.15+2×0.08=1.55 CP1
(2)方法一:MIPS = f /(CPI x 10^6)
=(50 x 10^6)/(1.55 x 10^6)
= 32.26(百万条指令/秒)
方法二:M1PS速率为:1/1.55×50=32.26 M1PS
(3)Tcpu = 执行某段程序所需的CPU时钟周期数 / CPU时钟频率( f )
= (45000 x 1+ 32000 x 2 + 15000 x 2 + 8000 x 2) /(50x10^6)
= (1.55 x 10^5) / (50×10^6)
= 0.0031 (s)
= 3.1 ms = 3100 us
14. (计算题, 5分) 将下列十进制数表示为IEEE754标准的32位规格化数 27/64 -27/64
答案:
27/64 规格化数:00111110110110000000000000000000 ,16进制:3ED80000 H
- 27/64 规格化数:10111110110110000000000000000000 ,16进制:BED80000 H
解析:数符S(1位)+ 阶码E(8位)+ 尾数M(23位)
一个规格化的32位浮点数x的真值表示为 x=(-1)^S×(1.M)×2^(E-127),即e=E-127。
(1)将十进制数27/64表示成IEEE754标准的32位浮点规格化数。
因为27=11011 B,1/64 = 2^(-6);
所以27/64 = 0.011011 B = 1.1011 * 2^(-2);
所以e = -2,则 E=e + 127=125用二进制数表示为 E=01111101;
所以32位浮点规格化表示中,由 27/64 =1.1011可得数符S=0(数值为正),阶码E=125,尾数M=1011
尾数M为1011 000 0000 0000 0000 0000;
即32位浮点规格化数为S(1)+E(8)+M(23) = 0011 1110 1101 1000 0000 0000 0000 0000;
为方便阅读,转换成16进制显示为 3ED80000 H。
(2)将十进制数-27/64表示成IEEE754标准的32位浮点规格化数。
因为27=11011 B,1/64 = 2^(-6);
所以27/64 = 0.011011 B = 1.1011 * 2^(-2);
所以e = -2,则 E=e + 127=125用二进制数表示为 E=01111101;
所以32位浮点规格化表示中,由 -27/64 =1.1011可得数符S=1(数值为负),阶码E=125,尾数M=1011
尾数M为1011 000 0000 0000 0000 0000;
即32位浮点规格化数为S(1)+E(8)+M(23) = 1011 1110 1101 1000 0000 0000 0000 0000;
为方便阅读,转换成16进制显示为 BED80000 H。
15. (计算题, 5分) 某IEEE754标准的32位规格化数为BED80000H,求真值。
答案:真值 为 -27/64
解析:
BED80000H = 10111110110110000000000000000000
= 1011 1110 1101 1000 0000 0000 0000 0000
因为 数符S(1位)+ 阶码E(8位)+ 尾数M(23位)
所以 S = 1(负),E = 01111101,M=1011
由 e = E - 127 = 125 - 127 = -2
所以 真值 = 1.1011 * 2^(-2) = 0.011011 B
因为 11011B = 27,0.000000 = 10^(-6),
所以 2^(-6) = 1/64
所以 真值 = -27/64