根据主存容量4MB=222B,得主存地址字段中主存字块标记为22-7-5=10位。主存地址字段各段格式为:
(2)由于每个字块中有8个字,而且初态Cache为空,因此CPU读第0号单元时,未命中,必须访问主存,并将该字所在的块调入Cache第0组中的任一块内,但接着CPU读1~7号单元时均命中。同理,CPU读第8、16、…、88号单元时均未命中。可见CPU在连续读90字中共有12次未命中,而后7次循环读90个字全部命中(因为总共只有13个块,而Cache共有128组),命中率为:
(90×8-12)/90×8=98.3%
(3)有Cache速度提高:[6t×90×8/(t×(720-12)+6t×12)]-1=4.54
第五章 输入输出系统
5.11 简述I/O接口的功能和基本组成。
答:(1)I/O接口的功能有:选址、传送命令、传送数据和反映设备状态。
(2)I/O接口的基本组成:设备选择电路、命令寄存器和命令译码器、数据缓冲寄存器、设备状态标记触发器。
5.16 在什么条件和什么时间,CPU可以响应I/O的中断请求?
答:(1)CPU响应I/O设备提出中断请求的条件是:必须满足CPU中的允许中断触发器EINT为“1”;I/O本身有请求又未被屏蔽;经排队后又被选中。
(2)CPU响应中断的时间一定是在每条指令执行阶段的结束时刻。
5.28 CPU对DMA请求和中断请求的响应时间是否相同?为什么?
答:(1)不相同,响应中断请求是在每条指令执行周期结束的时刻,而响应DMA请求是在存取周期结束的时刻。
(2)因为中断方式是程序切换,而程序又是由指令组成,所以必须在一条指令执行完毕才能响应中断请求。而且CPU只有在每条指令执行周期的结束时刻才发出查询信号,以获取中断请求信号,此时若条件满足,便能响应中断请求。DMA请求是由DMA接口根据设备的工作状况向CPU申请占用总线,此时只要总线未被CPU占用,即可立即响应DMA请求;若总线正被CPU占用,则必须等待该存取周期结束时,CPU才交出总线的使用权。
5.31
假设某设备向CPU传送信息的最高频率是40KHz,而相应的中断处理程序执行时间为40ms,试问该外设是否可用程序中断方式与主机交换信息,为什么?
答:根据题意,该设备每隔1/40K=25ms向CPU传送一次信息,如果采用程序中断方式,需40ms(>25ms)才能处理一次数据,从而造成数据丢失,所以不能用程序中断方式与主机交换信息。
5.33 试从下面7个方面比较程序查询、程序中断和DMA三种方式的综合性能。
方式
性能
程序查询
程序中断
DMA
数据传送
依赖软件
依赖软件
依赖硬件
传送数据基本单位
字
字
块
并行性
CPU与I/O串行
CPU与I/O并行
传输与主程序串行
CPU与I/O并行
传输与主程序串行
主动性
CPU
设备
设备
传输速度
慢
慢
快
经济性
费用低
介于查询和DMA之间
费用高
应用对象
低速
较低
高速成批传输
6.9
当十六进制数9BH和FFH分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用1位符号位)?
答:(1)9BH对应表示为原码、补码、反码、移码和无符号数时的十进制数分别为:-27、-101、-100、+27、155
(2)FFH对应表示为原码、补码、反码、移码和无符号数时的十进制数分别为:-127、-1、-0、+127、255
6.12设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出 所对应的机器数。要求如下:
(1)阶码和尾数均为原码。
(2)阶码和尾数均为补码。
(3)阶码为移码,尾数为补码。
答:
=0.0110011=0.110011×2-1=0.1100110000×2-0001
(1)阶码和尾数均为原码表示的浮点数为:1 0001;0 1100110000
(2)阶码和尾数均为补码表示的浮点数为:1 1111;0 1100110000
(3)阶码为移码,尾数为补码的浮点数为:0 1111;0 1100110000
6.16设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用1位符号位,答案均用十进制数表示。
(1)无符号数
(2)原码表示的定点小数
(3)补码表示的定点小数
(4)补码表示的定点整数
(5)原码表示的定点整数
(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出正数和负数的表示范围。
(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的范围。
答:(1)无符号数:0~65535
(2)原码表示的定点小数:-32767/32768~+32767/32768
(3)补码表示的定点小数:-1~+32767/32768
(4)原码表示的定点整数:-32767~+32767
(5)补码表示的定点整数:-32768~+32767
(6)浮点数(负数):-231×(1-2-9)~
-2-31×2-9
浮点数(正数):2-31×2-9~231×(1-2-9)
(7)补码表示的浮点规格化负数:-231~
-2-32×(2-1+2-9)
补码表示的浮点规格化正数:2-32×2-1~231×(1-2-9)
6.17设机器数字长为8位(含1位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。
(1)[x]原=0.0011010,算术左移一位:0.0110100,两位:0.1101000;算术右移一位:0.0001101,两位:0.0000110(低位丢1,影响精度)
(2)[x]原=1.1101000,算术左移一位:1.1010000(高位丢1,结果出错),两位:1.0100000(高位丢1,结果出错);算术右移一位:1.1110100,两位:1.1111010
(3)[x]原=1.0011001,算术左移一位:1.0110010,两位:1.1100100;算术右移一位:1.1001100(低位丢1,影响精度),两位:1.1100110
(4)[x]补=0.1010100,算术左移一位:0.0101000(高位丢1,结果出错),两位:0.1010000;算术右移一位:0.0101010,两位:0.0010101
(5)[x]补=1.1101000,算术左移一位:1.1010000,两位:1.0100000;算术右移一位:1.1110100,两位:1.1111010
(6)[x]补=1.0011001,算术左移一位:1.0110010(高位丢0,结果出错),两位:1.1100100(高位丢0,结果出错);算术右移一位:1.1001100(低位丢1,影响精度),两位:1.1100110
(7)[x]反=1.0101111,算术左移一位:1.1011111(高位丢0,结果出错),两位:1.0111111;算术右移一位:1.1010111,两位:1.1101011
(8)[x]反=1.1101000,算术左移一位:1.1010001,两位:1.0100011;算术右移一位:1.1110100(低位丢0,影响精度),两位:1.1111010(低位丢0,影响精度)
(9)[x]反=1.0011001,算术左移一位:1.0110011(高位丢0,结果出错),两位:1.1100111(高位丢0,结果出错);算术右移一位:1.1001100,两位:1.1100110(低位丢0,影响精度)
6.19设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。
(1)A= ,B= - ,求A+B。
(2)A= ,B= - ,求A-B。
答:(1)A= =0.001001,B= - =
-0.01101,[A]补=0.0010010,[B]补=1.1001100,
[A+B] 补=0.0010010+1.1001100=1.1011110,A+B=
-0.0100010= -
(2)A= =0.10011,B= - = -0.0010001
[A]补=0.1001100,[B]补=1.1101111,[-B]补=0.0010001
[A-B] 补=0.1001100+0.0010001=0.1011101,A-B=
0.1011101=
6.20用原码一位乘、两位乘和补码一位乘计算x×y。
(2)x= -0.010111,y= -0.010101
(4)x=0.11011,y= -0.11101
答:(2)x= -0.010111,y=
-0.010101,x*=0.010111,y*=0.010101
① 原码一位乘
部分积
乘数
说明
0.000000
0.010111
010101
部分积初态Z0=0
+X*
0.010111
0.001011
0.000000
101010
部分积和乘数右移1位
+0
0.001011
0.000101
0.010111
110101
部分积和乘数右移1位
+X*
0.011100
0.001110
0.000111
0.010111
011010
001101
部分积和乘数右移1位
+0,直接右移
+ X*
0.011110
0.001111
0.000111
000110
100011
部分积和乘数右移1位
+0,直接右移1位,乘法结束
∵XSÅYS=1Å1=0,∴[X×Y]原=0.000111100011,X×Y=
0.000111100011
②
原码两位乘:[X*]补=0.010111,[-X*]补=1.101001,[2X*]补=0.101110
部分积
乘数
标志位Cj
说明
000.000000
000.010111
010101
0
部分积初态Z0=0,Cj=0
+X*,Cj=0
000.010111
000.000101
000.010111
110101
0
部分积和乘数算术右移2位
+ X*,Cj=0
000.011100
000.000111
000.010111
001101
0
部分积和乘数算术右移2位
+X*,Cj=0
000.011110
0000.000111
100011
0
部分积和乘数算术右移2位
∵XSÅYS=1Å1=0,∴[X×Y]原=0.000111100011,X×Y=
0.000111100011
③
补码一位乘:[X]补=1.101001,[-X]补=0.010111,[Y]补=1.101011
部分积
乘数
附加位
说明
00.000000
00.010111
1101011
0
部分积初态Z0=0
+[-X]补
00.010111
00.001011
00.000101
11.101001
1110101
1111010
1
1
部分积和乘数算术右移1位
+0,直接算术右移1位
+[X]补
11.101110
11.110111
00.010111
0111101
0
部分积和乘数算术右移1位
+[-X]补
00.001110
00.000111
11.101001
0011110
1
部分积和乘数算术右移1位
+[X]补
11.110000
11.111000
00.000111
0001111
0
部分积和乘数算术右移1位
+[-X]补
00.001111
00.000111
1000111
1
部分积和乘数算术右移1位
加0,最后1步不移位,乘法结束
[X×Y]补=0.000111100011,∴X×Y=
0.000111100011
(4)x=0.11011,y= -0.11101,,x*=0.11011,y*=0.11101
① 原码一位乘
部分积
乘数
说明
0.00000
0.11011
11101
部分积初态Z0=0
+X*
0.11011
0.01101
11110
右移1位
0.00110
0.11011
11111
+0,右移1位
+X*
1.00001
0.10000
0.11011
11111
右移1位
+X*
1.01011
0.10101
0.11011
11111
右移1位
+X*
1.10000
0.11000
01111
右移1位,乘法结束
∵XSÅYS=0Å1=1,∴[X×Y]原=1.1100001111,X×Y=
-0.1100001111
②
原码两位乘:[X*]补=0.11011,[-X*]补=1.00101,[2X*]补=1.10110
部分积
乘数
标志位Cj
说明
000.00000
000.11011
011101
0
部分积初态Z0=0,Cj=0
+X*,Cj=0
000.11011
000.00110
111.00101
110111
0
右移2位
[-X*]补,Cj=1
111.01011
111.11010
001.10110
111101
1
右移2位
+2X*,Cj=0
001.10000
000.11000
011110
0
右移1位,乘法结束
∵XSÅYS=0Å1=1,∴[X×Y]原=1.1100001111,X×Y=
-0.1100001111
③
补码一位乘:[X]补=0.11011,[-X]补=1.00101,[Y]补=1.00011
部分积
乘数
附加位
说明
00.00000
11.00101
100011
0
部分积初态Z0=0
+[-X]补
11.00101
11.10010
11.11001
00.11011
110001
011000
1
1
右移1位
+0,直接右移1位
+[X]补
00.10100
00.01010
001100
0
右移1位
00.00101
000110
0
+0,直接右移1位
00.00010
11.00101
100011
0
+0,直接右移1位
+[-X]补
11.00111
10001
最后一步不移位
∵[X×Y]补=11.0011110001,∴X×Y= -0.1100001111
6.21用原码加减交替法和补码加减交替法计算x÷y。
(1)x= 0.100111,y= 0.101011
答:(1)原码加减交替法:X*= 0.100111,Y*=
0.101011,[X*]补=00.100111,[Y*]补=00.101011,[-Y*]补=11.010101
被除数(余数)
商
说明
00.100111
11.010101
0.000000
+[-Y*]补
11.111100
11.111000
00.101011
0
0
余数为负,上商0
左移1位
+[Y*]补
00.100011
01.000110
11.010101
01
01
余数为正,上商1
左移1位
+[-Y*]补
00.011011
00.110110
11.010101
011
011
余数为正,上商1
左移1位
+[-Y*]补
00.001011
00.010110
11.010101
0111
0111
余数为正,上商1
左移1位
+[-Y*]补
11.101011
11.010110
00.101011
01110
01110
余数为负,上商0
左移1位
+[Y*]补
00.000001
00.000010
11.010101
011101
011101
余数为正,上商1
左移1位
+[-Y*]补
11.010111
00.101011
0111010
余数为负,上商0
恢复正余数,+[Y*]补
00.000010
除法结束
∵XSÅYS=0Å0=0,[X÷Y]原=0.111010,∴X÷Y=0.111010,余数R=0.000010×2-6
(2)补码加减交替法:
[X]补=00.100111,[Y]补=00.101011,[-Y]补=11.010101
被除数(余数)
商
说明
00.100111
11.010101
0.000000
同号,+[-Y]补
11.111100
11.111000
00.101011
0
0
余数与除数异号,上商0
左移1位
+[Y]补
00.100011
01.000110
11.010101
01
01
余数与除数同号,上商1
左移1位
+[-Y]补
00.011011
00.110110
11.010101
011
011
余数与除数同号,上商1
左移1位
+[-Y]补
00.001011
00.010110
11.010101
0111
0111
余数与除数同号,上商1
左移1位
+[-Y]补
11.101011
11.010110
00.101011
01110
01110
余数与除数异号,上商0
左移1位
+[Y]补
00.000001
00.000010
011101
0111010
余数与除数同号,上商1
左移1位,末位恒置“1”
∵XSÅYS=0Å0=0,[X÷Y]补=0.111011,∴X÷Y=0.111011,余数R=0.000010×2-6
6.22设机器数字长为16位(含1位符号位),若一次移位需1µs,一次加法需1µs,试问原码一位乘、补码一位乘、原码加减交替法和补码加减交替法最多各需多少时间?
答:(1)原码一位乘加15次,移位15次,共30µs。
(2)原码两位乘加8次,移位8次(最后一次移一位),共16µs。
(3)补码一位乘加16次,移位15次,共31µs。
(4)原码加减交替法加16次,移位15次,共31µs。
(5)补码加减交替法(采用末位恒置“1”法)加15次,移位15次,共30µs。
6.27假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。
(1) [25× ]+[ 24×(- )]
答:X=25× =25×0.1011,Y=24×(-
)=24×(-0.1001)
假设两数在计算机中以补码表示,并采用双符号位,可表示为
X:00
101 00 101100
Y:00
100 11 011100
运算步骤为:
(1)对阶
[ΔE]补=[EX]补+[-EY]补=00,101+11,100=00,001,即ΔE
=1,Y的阶码小,应使MY右移1位,EY加1,得 [Y]浮=00 101 11 101110(0)
(2)尾数求和
00.101100+11.101110(0)=00.011010(0)
(3)规格化处理
结果的符号位00与最高数值位0相同,需左归。尾数左移一位,阶码减1,得
[X+Y]浮=00
100 00.110100
(4)舍入处理
采用0舍1入法处理得尾数为00.110100
(5)判溢出
阶码符号位为00,不溢出,故得最终结果为:
[X+Y]浮=00
100 00.110100=24×
7.6
某指令系统字长为16位,地址码取4位,试提出一种方案,使该指令系统有8条三地址指令、16条二地址指令、100条一地址指令。
答:固定操作码为4位。
8条三地址指令操作码为:0000~0111(剩下1000~1111共8个扩展窗口)
16条二地址指令操作码为:1000 0000~1000 1111
(剩下1001 0000~1111 1111共112个扩展窗口)
100条一地址指令操作码为:10010000 0000~10010000 1111
10010001 0000~10010001 1111
10010010 0000~10010010 1111
10010011 0000~10010011 1111
10010100 0000~10010100 1111
10010101 0000~10010101 1111
10010110 0000~10010110 0011
7.7
设指令字长为16位,采用扩展操作码技术,每个操作数的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令?
答:指令字长为16位,每个操作数的地址为6位,固定操作码为4位,最多可定义16条二地址指令。现共定义了13条二地址指令,故剩下3个扩展窗口,最多可安排一地址指令条数为:
3×26=192条
7.8
某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?
答:(1)若操作码长度固定,则操作码位数为4位,故二地址指令条数为:16-M-N
(2)若操作码位数可变,假设二地址指令有X种,则:
M=[(16-X)×26-N]×26
∴X=16-N×2-6-M×2-12
7.12 画出“SUB
@R1”指令对操作数的寻址及减法过程的流程图。设被减数和结果存于ACC中,@表示间接寻址,R1寄存器的内容为2074H。
答:流程图如下所示
7.14
设相对寻址的转移指令占两个字节,第一字节是操作码,第二字节是相对位移量(用补码表示),假设当前转移指令第一字节所在地址为2000H,且CPU每取出一个字节便自动完成(PC)+1→PC的操作。试问当执行“JMP
* +8”和“JMP * -9”指令时,转移指令第二字节的内容各为多少?
答:(1)根据汇编语言指令JMP *
+8,即要求转移后的目标地址为2000H+08H=2008H,但因为CPU取出该指令后PC值已修改为2002H,故转移指令第二字节的内容应为+6(十进制),写成补码为06H。
(2)同理,执行“JMP * -9”指令时,要求转移指令第二字节的内容应为-11(十进制),写成补码为:F5H
7.16某机主存容量为4M×16位,且存储字长等于指令字长,若该机指令系统可完成108种操作。操作码位数固定,且具有直接、间接、变址、基址、相对、立即六种寻址方式,试回答以下问题。
(1)画出一地址指令格式并指出各字段的作用;
(2)该指令直接寻址的最大范围;
(3)一次间接寻址和多次间接寻址的寻址范围;
(4)立即数的范围(十进制表示)
(5)相对寻址的位移量(十进制表示)
(6)上述六种寻址方式的指令中哪一种执行时间最短,哪一种最长,为什么?哪一种便于程序浮动,哪一种最适合处理数组问题?
(7)如何修改指令格式,使指令的寻址范围可扩大到4M?
(8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。
答:(1)一地址指令格式为:
OP M A
其中OP为操作码字段,共7位,可完成108种操作;
M为寻址方式特征位,共3位,可反映6种寻址方式; A形式地址,共16-7-3-6位。
(2)直接寻址的最大范围为:26=64
(3)由于存储字长为16位,故一次间址的寻址范围为216。若多次间址,需用存储字的最高位来区别是否继续间接寻址,故寻址范围为215。
(4)立即数的范围是-32~+31(有符号数)或0~63(无符号数)
(5)相对寻址的位移量为-32~+31
(6)上述六种寻址方式中,因立即数由指令直接给出,故立即寻址的指令执行时间最短。间接寻址在指令的执行阶段要多次访存,故执行时间最长。
OP M A1
A2
(7)若指令的格式改为双字指令,即
其中OP 7位,M 3位,A1 6位,A2
16位,即指令的地址码字段共16+6=22位,则指令的直接寻址范围可扩大到4M。
(8)为使一条转移指令能转移到主存的任一位置,寻址范围需达到4M,除了采用(7)所示的格式外,还可配置22位的基址寄存器或22位的变址寄存器,使EA=(BR)+A或EA=(IX)
+A,便可访问4M存储空间。还可以通过16位的基址寄存器左移6位再和形式地址相加,也可达到同样的效果。
7.18设某机器共能完成78种操作,若指令字长16位,试问一地址格式的指令地址码可取几位?若想使指令的寻址范围扩大到216,可采用什么办法?举出三种以上不同的例子加以说明。
答:根据78种操作,可求出操作码位数为7位,则单地址格式的指令地址码占16-7=
9位。直接寻址范围为29=512。若想使指令的寻址范围扩大到216,可采用以下三种寻址方法:
(1)若指令字长等于存储字长均为16位,则采用间接寻址可使寻址范围扩大到216,因为间址时(设非多次间址)从存储单元中取出的有效地址为16位。
(2)采用变址寻址,并设变址寄存器RX为16位,则有效地址EA=(RX)+A(形式地址),即可使寻址范围扩大到216。
(3)采用基址寻址,并设基址寄存器RB为16位,则有效地址EA=(RB)+A(形式地址),即可使寻址范围扩大到216。
7.19
CPU内有32个32位的通用寄存器,设计一种能容纳64种操作的指令系统。假设指令字长等于机器字长,试回答以下问题。
(1)如果主存可直接或间接寻址,采用寄存器-存储器型指令,能直接寻址的最大存储空间是多少?画出指令格式并说明各字段的含义。
(2)在满足(1)的前提下,如果采用通用寄存器作基址寄存器,则上述寄存器-存储器型指令的指令格式有何特点?画出指令格式并指出这类指令可访问多大的存储空间?
答:(1)根据题意指令格式如下:
OP I R A
其中OP占6位,为操作码,可容纳64种操作;I占1位,为直接/间接寻址方式(I=1为间址,I=0为直接寻址);R占5位,为32个通用寄存器编号;A占20位,为形式地址。
这种指令格式能直接寻址的存储空间为220=1M。
(2)根据题意,保留(1)格式的OP,I,R字段,增加B字段,用以指出哪个寄存器为基址寄存器。此时基址寻址的特征隐含在OP中。其指令格式如下:
OP I R B A
其中OP占6位,为操作码,对应64种操作;I占1位,为直接/间接寻址方式(I=1为间址,I=0为直接寻址);R占5位,为32个通用寄存器编号;B占5位,为基址寄存器编号;A占15位,为形式地址。
因为通用寄存器32位,用它作基址寄存器后,有效地址EA等于基址寄存器内容加上形式地址,可得32位得有效地址,故寻址范围可达232=4G。
第八章
CPU的结构和功能
8.2什么是指令周期?指令周期是否有一个固定值?为什么?
答:指令周期是CPU每取出并执行一条指令所需的全部时间,也即CPU完成一条指令的时间。由于各种指令操作功能不同,因此各种指令的指令周期是不同的,指令周期的长短主要和指令在执行阶段的访存次数和执行阶段所需要完成的操作有关。
8.8 什么是指令流水?画出指令二级流水和四级流水的示意图,它们中的哪个更能提高处理器速度,为什么?
答:指令流水就是改变各条指令按顺序串行执行的规则,使机器在执行上一条指令的同时,取出下一条指令。其示意图分别如下:
把指令周期划分得更细,使更多的指令在同一时间内执行,更能提高处理器速度,故四级流水比二级流水的处理速度高。
8.11今有四级流水线,分别完成取指(IF)、译码并取数(ID)、执行(EX)、写结果(WR)四个步骤。假设完成各步操作的时间依次为100ns、100ns、70ns、50ns。
(1)流水线的时钟周期应取何值?
(2)若相邻的指令发生数据相关,那么第二条指令安排推迟多少时间才能不发生错误?
(3)若相邻两指令发生数据相关,而不推迟第二条指令的执行,可采取什么措施?
答:(1)流水线的时钟周期应取100ns。
(2)若相邻的指令发生数据相关,需使第二条指令暂停执行,直到前面指令产生结果后,再执行第二条指令,因此至少要延迟两个时钟周期。
(3)若想不推迟第二条指令执行,在硬件技术上可采取旁路技术,即设置直接传送数据的通路。
8.25某机有五个中断源L0、L1、L2、L3、L4,按中断响应的优先次序由高向低排序为L0→L1→L2→L3→L4,现要求中断处理次序改为L1→L4→L2→L0→L3,写出各中断源的屏蔽字。
中断源
屏蔽字
L0 L1 L2 L3 L4
L0
1
0
0
1
0
L1
1
1
1
1
1
L2
1
0
1
1
0
L3
0
0
0
1
0
L4
1
0
1
1
1
第九章
控制单元的功能
9.1设CPU内有这些部件:PC、IR、MAR、MDR、AC、CU。
(1)写出取指周期的全部微操作。
(2)写出减法指令“SUB X”、取数指令“LDA X”、存数指令“STA
X”(X均为主存地址)在执行阶段所需的全部微操作。
(3)当上述指令为间接寻址时,写出执行这些指令所需的全部微操作。
(4)写出无条件转移指令“JMP Y”和结果溢出则转指令“BAO,Y”在执行阶段所需的全部微操作。
答:参考P382例9.1。
9.3什么是指令周期、机器周期和时钟周期?三者有何关系?
答:指令周期是CPU每取出并执行一条指令所需的全部时间,也即CPU完成一条指令的时间。机器周期是所有指令执行过程中的一个基准时间,通常以存取周期作为机器周期。时钟周期是机器主频的倒数,也可称为节拍,它是控制计算机操作的最小单位时间。
一个指令周期包含若干个机器周期,一个机器周期又包含若干个时钟周期,每个指令周期内的机器周期数可以不等,每个机器周期的时钟周期数也可以不等。
9.4能不能说CPU的主频越快,计算机的运行速度就越快?为什么?
答:不能说CPU的主频越快,计算机的运行速度就越快。因为机器的速度不仅与主频有关,还与机器周期中所含的时钟周期数以及指令周期中所含的机器周期数有关。同样主频的机器,由于机器周期所含时钟周期数不同,机器的速度也不同。机器周期中所含时钟周期数少的机器,速度更快。
此外,机器的速度还和其他很多因素有关,如主存的速度、机器是否配有Cache、总线的数据传输率、硬盘的速度以及机器是否采用流水技术等。
9.5设机器A的主频为8MHz,机器周期含4个时钟周期,且该机的平均指令执行速度是0.4MIPS,试求该机的平均指令周期和机器周期。每个指令周期包含几个机器周期?如果机器B的主频为12MHhz,且机器周期也包含4个时钟周期,试问B机的平均指令执行速度为多少MIPS?
答:根据机器A的主频为8MHz,得时钟周期为1/8MHz=0.125ms
(1)机器周期=0.125ms×4=0.5ms
(2)平均指令执行时间是1/0.4MIPS=2.5ms
(3)每个指令周期含2.5/0.5=5个机器周期
(4)B机的平均指令执行速度为0.4×12/8=0.6MIPS
9.6设某计算机的CPU主频为8MHz,每个机器周期平均含2个时钟周期,每条指令平均有4个机器周期,试问该计算机的平均指令执行速度为多少MIPS?若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令平均有4个机器周期,则该机的平均指令执行速度又是多少MIPS?由此可得出什么结论?
答:根据主频为8MHz,得时钟周期为1/8MHz=0.125ms,机器周期为0.125ms×2=0.25ms,指令周期为0.25ms×4=1ms。
(1)平均指令执行速度为1/1=1MIPS
(2)若CPU主频不变,机器周期含4个个时钟周期,每条指令平均有4个机器周期,则指令周期为0.125ms×4×4=2ms,故平均指令执行速度为1/2=0.5MIPS。
(3)可见机器得速度并不完全取决于主频。
9.14已知单总线结构的计算机如图9.5所示,其中M为主存,XR为变址寄存器,EAR为有效地址寄存器,LATCH为锁存器。假设指令地址已存于PC中,画出“LDA * D”(*表示相对寻址,D为相对位移量)和“SUB X,D”(X为变址寄存器XR,D为形式地址)指令的指令周期信息流程图,并列出相应的控制信号序列。
答:(1)两条指令取指周期信息流程为:
PC→Bus→MAR PCo,MARi
M(MAR)→MDR MARo,R/W=R,MDRi
MDR→Bus→IR MDRo,IRo
(PC)+1→PC +1
(2)“LDA * D”指令的执行流程为:
(PC)+Ad(IR)→EAR PCo,Ad(IR)o,+,EARi
EAR→Bus→MAR EARo,MARi
M(MAR)→MDR MARo,R/W=R,MDRi
MDR→Bus→ACC MDRo,ACCi
(3)“SUB X,D”指令的执行流程为:
(XR)+Ad(IR)→EAR XRo,Ad(IR)o,+,EARi
EAR→Bus→MAR EARo,MARi
M(MAR)→MDR MARo,R/W=R,MDRi
MDR→Bus→X MDRo,Xi
(ACC)-(X)→LATCH ACCo,Xo,Ki=
-,LATCHi
LATCH→Bus→ACC LATCHo,ACCi
第十章
控制单元的设计
10.5假设CPU在中断周期用堆栈保存程序断点,且进栈时栈指针减一,出栈时栈指针加一。试写出中断返回指令(中断服务程序的最后一条指令),在取指阶段和执行阶段所需的全部微操作命令及节拍安排。若采用微程序控制,则还需要增加哪些微操作。
答:组合逻辑设计的微操作命令:
取指:
T0:PC → MAR,1 → R
T1:M[MAR] → MDR, PC+1 → PC
T2:MDR → IR, OP[IR] → ID
执行:
T0:SP → MAR, 1 → R
T1:M[MAR] → MDR
T2:MDR → PC, SP+1 → SP
微程序设计的微操作命令:
取指微程序:
T0:PC → MAR, 1 → R
T1:Ad[CMIR] → CMAR
T2:M[MAR] → MDR, PC+1 → PC
T3:Ad[CMDR] → CMAR
T4:MDR → IR, OP[IR] → 微操作形成部件
T5:OP[IR] → CMAR
中断返回微程序:
T0:SP → MAR
T1:Ad[CMDR] → CMAR
T2:M[MAR] → MDR
T3:Ad[CMDR] → CMAR
T4:MDR → PC, SP+1 → SP
T5:Ad[CMDR] → CMAR
10.6已知带返转指令的含义如下图所示,写出机器在完成带返转指令时,取指阶段和执行阶段所需的全部微操作及节拍安排。
答:(1)取指阶段:
T0:PC → MAR,1 → R
T1:M(MAR)→ MDR, (PC)+1 → PC
T2:MDR → IR, OP(IR) → ID
(2)由图可知,带返转指令执行阶段需完成将返回地址M+1,存入指令的地址码字段K所指示的存储单元中,从K+1号单元才是子程序的真正内容,故执行阶段的微操作命令及节拍安排为:
T0:Ad(IR)→ MAR, 1 → W
T1:PC→ MDR
T2:MDR →M(MAR), Ad(IR)+1 → PC
10.15设控制存储器的容量为512×48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:
转移条件 下地址
操作控制
顺序控制
试问微指令中的3个字段分别为多少位?
答:已知控制存器有512个单元,故下地址段字段应为9bit。又已知有4个测试条件,若采用直接表示法,故需4位。这样微命令字段即为48-4-9=35bit。