计算机组成原理课后参考答案 - 副本
第一章 计算机系统概论
1. 2 如何理解计算机系统的层次结构?
答:从计算机系统的层次结构来看,它通常可有五个以上的层次,在每一层次(级)上都能进行程序设计。由下至上可排序为:第一级微程序设计级,微指令由硬件直接执行;第二级传统机器级,用微程序解释机器指令;第三级操作系统级,一般用机器语言程序解释作业控制语句;第四级汇编语言机器级,这一级由汇编程序支持和执行;第五级高级语言机器级,采用高级语言,由各种高级语言编译程序支持和执行。还可以有第六级应用语言机器级,采用各种面向问题的应用语言。
1. 3 说明高级语言、汇编语言和机器语言的差别及联系。
答:机器语言由代码0、1组成,是计算机能直接识别的一种语言。汇编语言是面向机器的语言,它用一些特殊的符号表示指令。高级语言是面向用户的语言,它是一种接近于人们使用习惯的语言,直观、通用,与具体机器无关。
它们之间的联系:汇编语言和高级语言编写的源程序必须通过汇编或编译成机器语言程序才能在机器上运行。
1. 4 如何理解计算机组成和计算机体系结构?
答:计算机体系结构是指程序员所见到的计算机系统的属性,即概念性的结构与功能特性。通常是指用机器语言编程的程序员(也包括汇编语言程序设计者和汇编程序设计者)所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O机理等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的(即程序员不知道的)硬件细节。例如一台机器是否具备乘法指令是一个结构问题,而实现乘法指令采用什么方式是一个组成问题。
1. 9 画出主机框图,分别以存数指令“STA M”和加法指令“ADD M”(M 均为主存地址)为例,在图中按序标出完成该指令(包括取指阶段)的信息流程。假设主存容量为256M ×32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。 答:
(1)存数指令STA M的信息流程为(图略):
取指令:PC →MAR →M →MDR →IR 分析指令:OP (IR )→CU
执行指令:Ad (IR )→MAR →M ,ACC →MDR →M (2)加法指令ADD M的信息流程为(图略):
取指令:PC →MAR →M →MDR →IR 分析指令:OP (IR )→CU
执行指令:Ad (IR )→MAR →M →MDR →X ,ACC →ALU ,同时X →ALU ,
ALU →ACC
(3)由主存容量为256M ×32位得228=256M,故MAR 为28位,MDR 为32位。 因指令字长=存储字长=机器字长,则IR 、ACC 、MQ 、X 均为32位。
第三章 系统总线
3. 1 什么是总线?总线传输有何特点?为了减轻总线的负载,总线上的部件都应具备什么特点? 答:总线是连接各个部件的信息传输线,是各个部件共享的传输介质。
总线上信息传输的特点:某一时刻只允许有一个部件向总线发送信息,但多个部件可以同时以CPU 片内总线为例,在每个需要将信息送至总线的寄存器输出端接三态门,由三态门控从总线上接收相同的信息。
制端控制什么时刻由哪个寄存器输出。当控制端无效时,寄存器和总线之间呈高阻状态。 3. 4 为什么要设置总线判优控制?常见的集中式总线控制有几种,各有何特点,哪种方式响应时间最快,哪种方式对电路最敏感?
答:由于总线上连接着多个部件,而总线传输的特点就是在某一时刻,只允许有一个部件向总线发送信息,如果有两个以上的部件同时向总线发送信息,势必导致信号冲突传输无效,故需用判优来解决。
常见的集中式总线控制有链式查询方式、计数器定时方式和独立请求方式三种。
链式查询方式的特点:只需很少几根线就能按一定优先次序实现总线控制,且容易扩充设备,计数器定时方式特点:计数可以从“0”开始,也可以从中止点开始,初始值还可以由程序独立请求方式特点:响应时间快,优先次序控制灵活,但控制线数量多,总线控制更复杂。 三种控制方式中,独立请求方式响应时间最快,链式查询方式对电路最敏感。
但对电路故障很敏感。
来设置,这就可以方便地改变优先次序,增加系统的灵活性。
3. 6 试比较同步通信和异步通信。
答:同步通信和异步通信的主要区别是前者有公共时钟,总线上的所有设备按统一的时序统一的传输周期进行信息传输,通信双方按约定好的时序联络;后者没有公共时钟,没有固定的传输周期,采用应答方式通信,具体的联络方式有不互锁、半互锁和全互锁三种。不互锁方式通信双方没有相互制约关系;半互锁方式通信双方有简单的制约关系;全互锁方式通信双方有完全的制约关系。其中全互锁通信可靠性最高。 3. 15
在一个32位的总线系统中,总线的时钟频率为66MHz ,假设总线最短传输周期为4个
时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施? 答:总线的最大数据传输率为:
4B/(4×T)=1B×f=66×106Hz ≈63MBps
若想提高数据传输率,可采用以下两种措施:外部数据总线宽度改为64位;时钟频率提高
在异步串行传送系统中,字符格式为:1个起始位、8个数据位、1个校验位、2个终止
到132 MHz。 3. 16
位。若要求每秒传送120个字符,试求传送的波特率和比特率。 答:根据题目给出的字符格式,一个字符包含1+8+1+2=12位
故波特率为120×12=1440bps 比特率为 1440×(8/12)=960bps
第四章 存储器
4. 6 某机字长为32位,其存储容量是64KB ,按字编址其寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。
答:按字编址的寻址范围是16K 。分配情况可参考书P73图4.6a 所示。
4. 11 一个8K ×8位的动态RAM 芯片,其内部结构排列成256×256形式,存取周期为0.1μs 。试问采用集中刷新、分散刷新及异步刷新三种方式的刷新间隔各为多少? 答:(1)集中刷新间隔为:2ms (共20000个存取周期)
4. 14 某8位微型计算机地址码为18位,若使用4K ×4位的RAM 芯片组成模块板结构的存储器,试问:
(1)该机所允许的最大主存空间是多少?
(2)若每个模块板为32K ×8位,共需几个模块板? (3)每个模块板内共有几片RAM 芯片? (4)共有多少片RAM ? (5)CPU 如何选择各模块板? 答:(1)主存容量为218=256KB
(2)共需模块板数为:256/32=8
(3)每个模块板内芯片数为:32×8/(4×4)=16片 (4)共需RAM 芯片数为:8×16=128片
(5)18根地址线分配如下:A 11~A 0作为4K ×4位的RAM 芯片本身的地址线;A 14~A 12作(2)分散刷新间隔为:256个存取周期(但存取周期为0.2μs ),即51.2μs 。
(3)异步刷新间隔为:2ms/256=7.8μs ,即每隔7.8μs 刷新一行,但对每行来说,刷新间隔
仍为2ms 。
为模块板内片选地址,采用3-8译码器共8个输出,每个输出选2片4K ×4位的RAM 芯片;A 17~A 15作为模块板的地址,同样采用3-8译码器,每个输出分别选8个模块板中的任一块。
4. 15 设CPU 共有16根地址线,8根数据线,并用MREQ (低电平有效)作访存控制信号,R /W 作读/写命令信号(高电平为读,低电平为写)。现有这些存储芯片:ROM (2K ×8位,4K ×4位,8K ×8位),RAM (1K ×4位,2K ×8位,4K ×8位)及74138译码器和其他门电路(门电路自定)。试从上述规格中选用合适的芯片,画出CPU 和存储芯片的连接图。要求如下: (1)最小4K 地址为系统程序区,4096~16383地址范围为用户程序区。 (2)指出选用的存储芯片类型及数量。 (3)详细画出片选逻辑。
答:(1)写出对应的二进制地址码。
ROM 区地址范围为(4K ×8位):
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0
1
1
1
1
1
1
1
1
1
1
1
1
因而可选2片4K ×4位的ROM 芯片。 RAM 区地址范围为:
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 1
1 1 0 0 1 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
0 1 0 1 0 1
RAM 容量为12K ×8位,因此可选3片4K ×8位的RAM 芯片。 (2)分配地址线:
A 11 A 0接4K ×4位的ROM 芯片的地址线和4K ×8位的RAM 芯片的地址线。 (3)确定片选信号:
A 14A 13A 12连3-8译码器的C 、B 、A 端,A 15连译码器的G 2A 非使能端,MREQ 连3-8译码
器的G 2B 非使能端,译码器的G 1使能端接+5V电源。译码器的Y 0输出端同时接2片ROM 芯片片选端;Y 1、Y 2、Y 3输出端分别接3片RAM 芯片片选端。
4. 23 设CPU 共有16根地址线,8根数据线,并用M /IO 作为访问存储器或I/O的控制信号(高电平为访存,低电平为访I/O),WR (低电平有效)为写命令,RD (低电平有效)为读命令。设计一个容量为64KB 的采用低位交叉编址的8体并行结构存储器。画出CPU 和存储芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。 答:(1)确定芯片数量:8片8K ×8位的RAM 芯片
(2)写出对应的二进制地址码。
第0片:即0000、0008、0010、„、FFF8H
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 0
0 0
0 0
(4)CPU 和存储芯片的连接图:略
第1片:即0001、0009、0011、„、FFF9H
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 0
0 0
1 1
第2片:即0002、000A 、0012、„、FFFAH
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 0
1 1
0 0
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 0
1 1
1 1
第4片:即0004、000C 、0014、„、FFFCH
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 1
0 0
0 0
第5片:即0005、000D 、0015、„、FFFDH
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 1
0 0
1 1
第6片:即0006、000E 、0016、„、FFFEH
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 1
1 1
0 0
第7片:即0007、000F 、0017、„、FFFFH
A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 1
1 1
1 1
(3)分配地址线
A 15 A 3接8K ×8位的RAM 芯片的地址线。 (3)确定片选信号:
A 2A 1A 0连3-8译码器的C 、B 、A 端,M /IO 通过非门连译码器的G 2A 非和G 2B 非使能端,(4)CPU 和存储芯片的连接图:略
译码器的G 1使能端接+5V电源。
4. 28 设主存容量为256K 字,Cache 容量为2K 字,块长为4。 (1)设计Cache 地址格式,Cache 中可装入多少块数据? (2)在直接映射方式下,设计主存地址格式。 (3)在四路组相联映射方式下,设计主存地址格式。 (4)在全相联映射方式下,设计主存地址格式。
(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。 答:(1)根据Cache 容量为2K 字=211,得Cache 字地址为11位。根据块长为4,且访存地址为字地址,得字块内地址为2位,即b=2,且Cache 共有2048/4=512=29块,即c=9。所以Cache 地址格式为:
标记为18-11=7,故主存地址格式为:
7位
9位
2位
(3)根据四路组相联的条件,一组内有4块,得Cache 共分512/4=128=2q 组,即q=7,主
存字块标记为18-q -b=18-7-2=9位,其地址格式为:
9位
7位
2位
(4
)在全相联映射方式下,主存字块标记为18-b=18-2=16位,其地址格式为:
直接映射:
2位
(5)
2位
全相联映射:
16位
4. 29 假设CPU 执行某段程序时共访问Cache 命中4800次,访问主存200次,已知Cache 的存取周期是30ns ,主存的存取周期是
150ns ,求Cache 的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少?
答:(1)Cache 的命中率为:4800/(4800+200)=96%
4. 30 设主存容量为1MB ,采用直接映射方式的Cache 容量为16KB ,块长为4,每字32位。试问主存地址为ABCDEH 的存储单元在Cache 中的什么位置?
答:根据主存容量为1MB ,得主存地址20位,Cache 容量为16KB=214B ,得Cache 地址14位。因为采用直接映射方式,主存地址的低14位就是映射后的Cache 地址,因而主存地址为ABCDEH 的存储单元在Cache 中的地址为[1**********]110,即3CDEH 。
(2)Cache-主存系统的平均访问时间为:0.96×30+(1-0.96)×150=34.8ns
(3)Cache-主存系统的效率为:e=访问Cache 的时间/平均访问时间=30/34.8=86.2% (4)性能提高为:150/34.8-1=3.31倍
4. 32 设某机主存容量为4MB ,Cache 容量为16KB ,每字块有8个字,每字32位,设计一个四路组相联映射的Cache 组织。 (1)画出主存地址字段中各段的位数
(2)设Cache 的初态为空,CPU 依次从主存第0,1,2,„,89号单元读出90个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?
(3)若Cache 的速度是主存的6倍,试问有Cache 和无Cache 相比,速度约提高多少倍? 答:(1)根据每个字块有8个字,每个字32位,得主存地址字段中字块内地址字段为5位,其中3位为字地址,2位为字节地址。
10位
7位
5位
(2)由于每个字块中有8个字,而且初态
Cache 为空,因此CPU 读第0号单元时,未命中,根据Cache 容量为16KB=214B ,字块大小为25B ,得Cache 共有29块,故c=9。根据四路组根据主存容量4MB=222B ,得主存地址字段中主存字块标记为22-7-5=10位。主存地址字段
相联映射2r =4,得r=2,则q=c-r=9-2=7位。 各段格式为:
必须访问主存,并将该字所在的块调入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接口的功能有:选址、传送命令、传送数据和反映设备状态。
5. 16 在什么条件和什么时间,CPU 可以响应I/O的中断请求?
答:(1)CPU 响应I/O设备提出中断请求的条件是:必须满足CPU 中的允许中断触发器EINT 为“1”;I/O本身有请求又未被屏蔽;经排队后又被选中。
5. 28 CPU对DMA 请求和中断请求的响应时间是否相同?为什么?
答:(1)不相同,响应中断请求是在每条指令执行周期结束的时刻,而响应DMA 请求是在存取周期结束的时刻。
(2)因为中断方式是程序切换,而程序又是由指令组成,所以必须在一条指令执行完毕才能响应中断请求。而且CPU 只有在每条指令执行周期的结束时刻才发出查询信号,以获取中断请求信号,此时若条件满足,便能响应中断请求。DMA 请求是由DMA 接口根据设备的工作状况向CPU 申请占用总线,此时只要总线未被CPU 占用,即可立即响应DMA 请求;若总线正被CPU 占用,则必须等待该存取周期结束时,CPU 才交出总线的使用权。
5. 31 假设某设备向CPU 传送信息的最高频率是40KHz ,而相应的中断处理程序执行时间为40μs ,试问该外设是否可用程序中断方式与主机交换信息,为什么?
答:根据题意,该设备每隔1/40K=25μs 向CPU 传送一次信息,如果采用程序中断方式,需40μs (>25μs )才能处理一次数据,从而造成数据丢失,所以不能用程序中断方式与主机交换信息。
(2)CPU 响应中断的时间一定是在每条指令执行阶段的结束时刻。
(2)I/O接口的基本组成:设备选择电路、命令寄存器和命令译码器、数据缓冲寄存器、设备状态标记触发器。
第六章 计算机的运算方法
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)阶码为移码,尾数为补码。 答:
51128
51128
所对应
=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=(2)A=
9641932
,B= -,B= -964
133217
, 求A+B。 , 求A -B 。
1332
128
答:(1)A==0.001001,B= -= -0.01101,[A]补=0.0010010,[B]补=1.1001100,
1764
[A+B] 补=0.0010010+1.1001100=1.1011110,A+B= -0.0100010= -(2)A=
1932
=0.10011,B= -
17128
= -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 。
93128
(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
∵X S ⊕Y S =1⊕1=0,∴[X ×Y ]原=0. [1**********]1,X ×Y= 0. [1**********]1
∵X S ⊕Y S =1⊕1=0,∴[X ×Y ]原=0. [1**********]1,X ×Y= 0. [1**********]1
[X ×Y ]补=0. [1**********]1,∴X ×Y= 0. [1**********]1
(4)x=0.11011,y= -0.11101,,x*=0.11011,y*=0.11101
∵X S ⊕Y S =0⊕1=1,∴[X ×Y ]原=1. 1100001111,X ×Y= -0. 1100001111
S S 原
补补补∵[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,
∵X S ⊕Y S =0⊕0=0,[X ÷Y ]原=0. 111010,∴X ÷Y=0. 111010,余数R=0.000010×2
∵X S ⊕Y S =0⊕0=0,[X ÷Y ]补=0. 111011,∴X ÷Y=0. 111011,余数R=0.000010×2
6. 22设机器数字长为16位(含1位符号位),若一次移位需1µs ,一次加法需1µs ,试问原码一位乘、补码一位乘、原码加减交替法和补码加减交替法最多各需多少时间? 答:(1)原码一位乘加15次,移位15次,共30µs 。
6. 27假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。 (1) [25×答:X=25×
11161116
(2)原码两位乘加8次,移位8次(最后一次移一位),共16µs 。 (3)补码一位乘加16次,移位15次,共31µs 。 (4)原码加减交替法加16次,移位15次,共31µs 。
(5)补码加减交替法(采用末位恒置“1”法)加15次,移位15次,共30µs 。
]+[ 24×(-
916
) ]
916
=25×0.1011,Y=24×(-) =24×(-0.1001)
假设两数在计算机中以补码表示,并采用双符号位,可表示为 X :00 101 Y :00 100 (1)对阶
[ΔE]补=[EX ]补+[-E Y ]补=00,101+11,100=00,001,即ΔE =1,Y 的阶码小,应使M Y 右移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×
1316
00 101100 11 011100
运算步骤为:
位,E Y 加1,得
第七章 指令系统
7. 6 某指令系统字长为16位,地址码取4位,试提出一种方案,使该指令系统有8条三地址指令、16条二地址指令、100条一地址指令。 答:固定操作码为4位。
7. 7 设指令字长为16位,采用扩展操作码技术,每个操作数的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令?
答:指令字长为16位,每个操作数的地址为6位,固定操作码为4位,最多可定义16条二地址指令。现共定义了13条二地址指令,故剩下3个扩展窗口,最多可安排一地址指令条数为:
7. 8 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M 种,一地址指令有N 种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?
答:(1)若操作码长度固定,则操作码位数为4位,故二地址指令条数为:16-M-N
7.12 画出“SUB @R1”指令对操作数的寻址及减法过程的流程图。设被减数和结果存于ACC 中,@表示间接寻址,R1寄存器的内容为2074H 。 答:流程图如下所示
(2)若操作码位数可变,假设二地址指令有X 种,则:
M=[(16-X )×26-N]×26 ∴X=16-N×2-6-M ×2-12 3×26=192条
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.14 设相对寻址的转移指令占两个字节,第一字节是操作码,第二字节是相对位移量(用补码表示),假设当前转移指令第一字节所在地址为2000H ,且CPU 每取出一个字节便自动完成(PC )+1→PC 的操作。试问当执行“JMP * +8”和“JMP * -9”指令时,转移指令第二字节的内容各为多少?
答:(1)根据汇编语言指令JMP * +8,即要求转移后的目标地址为2000H+08H=2008H,但因为CPU 取出该指令后PC 值已修改为2002H ,故转移指令第二字节的内容应为+6(十进制),写成补码为06H 。
7.16某机主存容量为4M ×16位,且存储字长等于指令字长,若该机指令系统可完成108种操作。操作码位数固定,且具有直接、间接、变址、基址、相对、立即六种寻址方式,试回答以下问题。 (1)画出一地址指令格式并指出各字段的作用; (2)该指令直接寻址的最大范围;
(3)一次间接寻址和多次间接寻址的寻址范围; (4)立即数的范围(十进制表示) (5)相对寻址的位移量(十进制表示)
(6)上述六种寻址方式的指令中哪一种执行时间最短,哪一种最长,为什么?哪一种便于程序浮动,哪一种最适合处理数组问题?
(7)如何修改指令格式,使指令的寻址范围可扩大到4M ?
(8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。 答:(1)一地址指令格式为:
其中OP 7位,M 3位,A 1 6位,A 2 16位,即指令的地址码字段共16+6=22位,则指令的
(2)同理,执行“JMP * -9”指令时,要求转移指令第二字节的内容应为-11(十进制),写成补码为:F5H
其中OP 为操作码字段,共7位,可完成108种操作; M 为寻址方式特征位,共3位,可反映6种寻址方式; (2)直接寻址的最大范围为:26=64
(3)由于存储字长为16位,故一次间址的寻址范围为216。若多次间址,需用存储字的最(4)立即数的范围是-32~+31(有符号数)或0~63(无符号数) (5)相对寻址的位移量为-32~+31
(6)上述六种寻址方式中,因立即数由指令直接给出,故立即寻址的指令执行时间最短。(7
A 形式地址,共16-7-3-6位。
高位来区别是否继续间接寻址,故寻址范围为215。
间接寻址在指令的执行阶段要多次访存,故执行时间最长。
直接寻址范围可扩大到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 占6位,为操作码,可容纳64种操作;I 占1位,为直接/间接寻址方式(I=1为间这种指令格式能直接寻址的存储空间为220=1M。
(2)根据题意,保留(1)格式的OP ,I ,R 字段,增加B 字段,用以指出哪个寄存器为基
址,I=0为直接寻址);R 占5位,为32个通用寄存器编号;A 占20位,为形式地址。
址寄存器。此时基址寻址的特征隐含在OP 中。其指令格式如下:
其中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某机有五个中断源L 0、L 1、L 2、L 3、L 4,按中断响应的优先次序由高向低排序为L 0→L 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.125μs (1)机器周期=0.125μs ×4=0.5μs
(2)平均指令执行时间是1/0.4MIPS=2.5μs (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.125μs ,机器周期为0.125μs ×2=0.25μs ,指令周期为0.25μs ×4=1μs 。
(1)平均指令执行速度为1/1=1MIPS
(2)若CPU 主频不变,机器周期含4个个时钟周期,每条指令平均有4个机器周期,则指令周期为0.125μs ×4×4=2μs ,故平均指令执行速度为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 M (MAR )→MDR MDR →Bus →IR (PC )+1→PC
PC o ,MAR i MAR o ,R/W=R,MDR i MDR o ,IR o +1 PC o ,Ad (IR )o ,+,EAR i EAR o ,MAR i MAR o ,R/W=R,MDR i MDR o ,ACC i
XR o ,Ad (IR )o ,+,EAR i
EAR o ,MAR i
MAR o ,R/W=R,MDR i
MDR o ,X i
ACC o ,X o ,K i = -,LATCH i
LATCH o ,ACC i (2)“LDA * D ”指令的执行流程为: (PC )+Ad(IR)→EAR EAR →Bus →MAR M (MAR )→MDR MDR →Bus →ACC (3)“SUB X ,D ”指令的执行流程为: (XR )+Ad(IR )→EAR EAR →Bus →MAR M (MAR )→MDR MDR →Bus →X
(ACC )-(X )→LATCH LATCH →Bus →ACC
第十章 控制单元的设计
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)取指阶段:
T 0:PC → MAR,1 → R
T 1:M (MAR )→ MDR, (PC )+1 → PC
T 2:MDR → IR, OP(IR ) → ID
(2)由图可知,带返转指令执行阶段需完成将返回地址M+1,存入指令的地址码字段K 所指示的存储单元中,从K+1号单元才是子程序的真正内容,故执行阶段的微操作命令及节拍安
排为:
T 0:Ad (IR )→ MAR, 1 → W
T 1:PC → MDR
T 2:MDR →M(MAR), Ad(IR )+1 → PC
10. 15设控制存储器的容量为512×48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:
试问微指令中的3个字段分别为多少位?
答:已知控制存器有512个单元,故下地址段字段应为9bit 。又已知有4个测试条件,若采用直接表示法,故需4位。这样微命令字段即为48-4-9=35bit。