计算机组成原理课后答案(唐朔飞第二版)

更新时间:2024-01-02 00:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 计算机系统概论

1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 解:P3

计算机系统:由计算机硬件系统和软件系统组成的综合体。 计算机硬件:指计算机中的电子线路和物理装置。 计算机软件:计算机运行所需的程序及相关资料。

硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。

5. 冯?诺依曼计算机的特点是什么? 解:冯?诺依曼计算机的特点是:P8

? ? ? ? ? ?

计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成; 指令和数据以同同等地位存放于存储器内,并可以按地址访问; 指令和数据均用二进制表示;

指令由操作码、地址码两大部分组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;

指令在存储器中顺序存放,通常自动顺序取出执行; 机器以运算器为中心(原始冯?诺依曼机)。

7. 解释下列概念:

主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。 解:P9-10

主机:是计算机硬件的主体部分,由CPU和主存储器MM合成为主机。

CPU:中央处理器,是计算机硬件的核心部件,由运算器和控制器组成;(早期的运算器和控制器不在同一芯片上,现在的CPU内除含有运算器和控制器外还集成了CACHE)。

主存:计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成。

存储单元:可存放一个机器字并具有特定存储地址的存储单位。

存储元件:存储一位二进制信息的物理元件,是存储器中最小的存储单位,又叫存储基元或存储元,不能单独存取。

存储字:一个存储单元所存二进制代码的逻辑单位。 存储字长:一个存储单元所存二进制代码的位数。

存储容量:存储器中可存二进制代码的总量;(通常主、辅存容量分开描述)。 机器字长:指CPU一次能处理的二进制数据的位数,通常与CPU的寄存器位数有关。 指令字长:一条指令的二进制代码位数。

8. 解释下列英文缩写的中文含义:

CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS 解:全面的回答应分英文全称、中文名、功能三部分。

CPU:Central Processing Unit,中央处理机(器),是计算机硬件的核心部件,主要由运算器和控制器组成。

PC:Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数

形成下一条指令地址。

IR:Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。 CU:Control Unit,控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。

ALU:Arithmetic Logic Unit,算术逻辑运算单元,为运算器的核心部件,其功能是进行算术、逻辑运算。

ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。

MQ:Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。

X:此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;

MAR:Memory Address Register,存储器地址寄存器,在主存中用来存放欲访问的存储单元的地址。

MDR:Memory Data Register,存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。

I/O:Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送。

MIPS:Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。

9. 画出主机框图,分别以存数指令“STA M”和加法指令“ADD M”(M均为主存地址)为例,在图中按序标出完成该指令(包括取指令阶段)的信息流程(如→①)。假设主存容量为256M*32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。 解:主机框图如P13图1.11所示。

(1)STA M指令:PC→MAR,MAR→MM,MM→MDR,MDR→IR,

OP(IR) →CU,Ad(IR) →MAR,ACC→MDR,MAR→MM,WR

(2)ADD M指令:PC→MAR,MAR→MM,MM→MDR,MDR→IR,

OP(IR) →CU,Ad(IR) →MAR,RD,MM→MDR,MDR→X,ADD,ALU→ACC,ACC→MDR,WR

假设主存容量256M*32位,在指令字长、存储字长、机器字长相等的条件下,ACC、X、IR、MDR寄存器均为32位,PC和MAR寄存器均为28位。

10. 指令和数据都存于存储器中,计算机如何区分它们? 解:计算机区分指令和数据有以下2种方法:

? 通过不同的时间段来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据。

? 通过地址来源区分,由PC提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。

第2章 计算机的发展及应用

1. 通常计算机的更新换代以什么为依据? 答:P22

主要以组成计算机基本电路的元器件为依据,如电子管、晶体管、集成电路等。

2. 举例说明专用计算机和通用计算机的区别。

答:按照计算机的效率、速度、价格和运行的经济性和实用性可以将计算机划分为通用计算机和专用计算机。通用计算机适应性强,但牺牲了效率、速度和经济性,而专用计算机是最有效、最经济和最快的计算机,但适应性很差。例如个人电脑和计算器。

第3章 系统总线

1. 什么是总线?总线传输有何特点?为了减轻总线负载,总线上的部件应具备什么特点? 答:P41.总线是多个部件共享的传输部件。

总线传输的特点是:某一时刻只能有一路信息在总线上传输,即分时使用。 为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。

4. 为什么要设置总线判优控制?常见的集中式总线控制有几种?各有何特点?哪种方式响应时间最快?哪种方式对电路故障最敏感?

答:总线判优控制解决多个部件同时申请总线时的使用权分配问题;

常见的集中式总线控制有三种:链式查询、计数器定时查询、独立请求;

特点:链式查询方式连线简单,易于扩充,对电路故障最敏感;计数器定时查询方式优先级设置较灵活,对故障不敏感,连线及控制过程较复杂;独立请求方式速度最快,但硬件器件用量大,连线多,成本较高。

5. 解释下列概念:总线宽度、总线带宽、总线复用、总线的主设备(或主模块)、总线的从设备(或从模块)、总线的传输周期和总线的通信控制。 答:P46。

总线宽度:通常指数据总线的根数;

总线带宽:总线的数据传输率,指单位时间内总线上传输数据的位数; 总线复用:指同一条信号线可以分时传输不同的信号。

总线的主设备(主模块):指一次总线传输期间,拥有总线控制权的设备(模块); 总线的从设备(从模块):指一次总线传输期间,配合主设备完成数据传输的设备(模块),它只能被动接受主设备发来的命令;

总线的传输周期:指总线完成一次完整而可靠的传输所需时间; 总线的通信控制:指总线传送过程中双方的时间配合方式。

6. 试比较同步通信和异步通信。

答:同步通信:指由统一时钟控制的通信,控制方式简单,灵活性差,当系统中各部件工作速度差异较大时,总线工作效率明显下降。适合于速度差别不大的场合。

异步通信:指没有统一时钟控制的通信,部件间采用应答方式进行联系,控制方式较同步复杂,灵活性高,当系统中各部件工作速度差异较大时,有利于提高总线工作效率。

8. 为什么说半同步通信同时保留了同步通信和异步通信的特点?

答:半同步通信既能像同步通信那样由统一时钟控制,又能像异步通信那样允许传输时间不一致,因此工作效率介于两者之间。

10. 为什么要设置总线标准?你知道目前流行的总线标准有哪些?什么叫plug and play?哪些总线有这一特点?

答:总线标准的设置主要解决不同厂家各类模块化产品的兼容问题;

目前流行的总线标准有:ISA、EISA、PCI等; plug and play:即插即用,EISA、PCI等具有此功能。

11. 画一个具有双向传输功能的总线逻辑图。

答:在总线的两端分别配置三态门,就可以使总线具有双向传输功能。

a0a1anb0b1bna至b

b至a

12. 设数据总线上接有A、B、C、D四个寄存器,要求选用合适的74系列芯片,完成下列逻辑设计:

(1) 设计一个电路,在同一时间实现D→A、D→B和D→C寄存器间的传送; (2) 设计一个电路,实现下列操作:

T0时刻完成D→总线; T1时刻完成总线→A; T2时刻完成A→总线; T3时刻完成总线→B。

解:(1)由T打开三态门将 D寄存器中的内容送至总线bus,由cp脉冲同时将总线上的数据打入到 A、B、C寄存器中。 T和cp的时间关系如图(1)所示。

cp脉冲ABC总线busT三态门Tcp

图(1)

D(2)三态门1受T0+T1控制,以确保T0时刻D→总线,以及T1时刻总线→接收门1→A。三态门2受T2+T3控制,以确保T2时刻A→总线,以及T3时刻总线→接收门2→B。T0、T1、T2、T3波形图如图(2)所示。

图(2)

3.14 设总线的时钟频率为8MHz,一个总线周期等于一个时钟周期。如果一个总线周期中并行传送16位数据,试问总线的带宽是多少?

解;总线宽度 = 16位/8 =2B 总线带宽 = 8MHz×2B =16MB/s

3.15 在一个32位的总线系统中,总线的时钟频率为66MHz,假设总线最短传输周期为4个时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施?

解法1: 总线宽度 =32位/8 =4B 时钟周期 =1/ 66MHz =0.015μs 总线最短传输周期 =0.015μs×4 =0.06μs 总线最大数据传输率 = 4B/0.06μs =66.67MB/s

+5VG1G2AMREQY7A15A14A13A12A0G2BABC74138......Y2Y1Y0...WE...WE.........CSWECPUD0D7RAM0......CSRAM1RAM7......CSR/W

(2)地址空间分配图: RAM0:0000H-1FFFH RAM1:2000H-3FFFH RAM2:4000H-5FFFH RAM3:6000H-7FFFH RAM4:8000H-9FFFH RAM5:A000H-BFFFH RAM6:C000H-DFFFH RAM7:E000H-FFFFH

(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(RAM5)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。假设芯片与译码器本身都是好的,可能的情况有:

1)该片的-CS端与-WE端错连或短路;

2)该片的-CS端与CPU的-MREQ端错连或短路; 3)该片的-CS端与地线错连或短路。

(4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。

17. 写出1100、1101、1110、1111对应的汉明码。 解:有效信息均为n=4位,假设有效信息用b4b3b2b1表示

校验位位数k=3位,(2>=n+k+1)

设校验位分别为c1、c2、c3,则汉明码共4+3=7位,即:c1c2b4c3b3b2b1 校验位在汉明码中分别处于第1、2、4位 c1=b4⊕b3⊕b1 c2=b4⊕b2⊕b1

k

c3=b3⊕b2⊕b1

当有效信息为1100时,c3c2c1=011,汉明码为1110100。 当有效信息为1101时,c3c2c1=100,汉明码为0011101。 当有效信息为1110时,c3c2c1=101,汉明码为1011110。 当有效信息为1111时,c3c2c1=010,汉明码为0110111。

18. 已知收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错?第几位出错?

解:假设接收到的汉明码为:c1’c2’b4’c3’b3’b2’b1’

纠错过程如下:

P1=c1’⊕b4’⊕b3’⊕b1’ P2=c2’⊕b4’⊕b2’⊕b1’ P3=c3’⊕b3’⊕b2’⊕b1’

如果收到的汉明码为1100100,则p3p2p1=011,说明代码有错,第3位(b4’)出错,有效信息为:1100

如果收到的汉明码为1100111,则p3p2p1=111,说明代码有错,第7位(b1’)出错,有效信息为:0110

如果收到的汉明码为1100000,则p3p2p1=110,说明代码有错,第6位(b2’)出错,有效信息为:0010

如果收到的汉明码为1100001,则p3p2p1=001,说明代码有错,第1位(c1’)出错,有效信息为:0001

22. 某机字长16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。

解:若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体交叉存取技术,8体交叉访问时序如下图:

启动存储体0启动存储体1启动存储体2启动存储体3启动存储体4启动存储体5启动存储体6启动存储体7单体访存周期

18. 什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理? 解:程序运行的局部性原理指:在一小段时间内,最近被访问过的程序和数据很可能再次被访问;在空间上,这些被访问的程序和数据往往集中在一小片存储区;在访问顺序上,指令顺序执行比转移执行的可能性大 (大约 5:1 )。存储系统中Cache—主存层次采用了程序访问的局部性原理。

25. Cache做在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处? 答:Cache做在CPU芯片内主要有下面几个好处:

1)可提高外部总线的利用率。因为Cache在CPU芯片内,CPU访问Cache时不必占用外部总线。

2)Cache不占用外部总线就意味着外部总线可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率。

3)可提高存取速度。因为Cache与CPU之间的数据通路大大缩短,故存取速度得以提高。 将指令Cache和数据Cache分开有如下好处:

1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成。 2)指令Cache可用ROM实现,以提高指令存取的可靠性。

3)数据Cache对不同数据类型的支持更为灵活,既可支持整数(例32位),也可支持浮点数据(如64位)。 补充:

Cache结构改进的第三个措施是分级实现,如二级缓存结构,即在片内Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。

30. 一个组相连映射的CACHE由64块组成,每组内包含4块。主存包含4096块,每块由128

字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。 解:cache组数:64/4=16 ,Cache容量为:64*128=2字,cache地址13位

主存共分4096/16=256区,每区16块

主存容量为:4096*128=2字,主存地址19位,地址格式如下: 主存字块标记(8位) 组地址(4位) 字块内地址(7位) 32. 设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映象(即Cache每组内共有4个字块)的Cache组织,要求: (1)画出主存地址字段中各段的位数;

(2)设Cache的初态为空,CPU依次从主存第0、1、2……99号单元读出100个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?

(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度提高多少倍? 答:

(1)由于容量是按字节表示的,则主存地址字段格式划分如下: 8 7 2 3 2

(2)由于题意中给出的字地址是连续的,故(1)中地址格式的最低2位不参加字的读出操作。当主存读0号字单元时,将主存0号字块(0~7)调入Cache(0组x号块),主存读8号字单元时,将1号块(8~15)调入Cache(1组x号块)…… 主存读96号单元时,将12号块(96~103)调入Cache(12组x号块)。

? 共需调100/8 13次,就把主存中的100个数调入Cache。除读第1遍时CPU需访问主存13次外,以后重复读时不需再访问主存。则在800个读操作中:

19

13

访Cache次数=(100-13)+700=787次 ? 0.98 ? Cache命中率=787/800 98%

(3)设无Cache时访主存需时800T(T为主存周期),加入Cache后需时: (131.167+13)T?T/6+13T?787 144.167T? 5.55倍?则:800T/144.167T

有Cache和无Cache相比,速度提高4.55倍左右。

38. 磁盘组有六片磁盘,每片有两个记录面,存储区域内径22厘米,外径33厘米,道密度

为 40道/厘米,内层密度为400位/厘米,转速2400转/分,问: (1)共有多少存储面可用? (2)共有多少柱面?

(3)盘组总存储容量是多少? (4)数据传输率是多少? 解:

(1)若去掉两个保护面,则共有: 6 × 2 - 2 = 10个存储面可用; (2)有效存储区域

=(33-22)/ 2 = 5.5cm

柱面数 = 40道/cm × 5.5= 220道 =? (3)内层道周长=22 69.08cm 道容量=400位/cm×69.08cm = 3454B

面容量=3454B × 220道 = 759,880B

盘组总容量 = 759,880B × 10面 = 7,598,800B (4)转速 = 2400转 / 60秒 = 40转/秒

数据传输率 = 3454B × 40转/秒 = 138,160 B/S 注意:

1)计算盘组容量时一般应去掉上、下保护面;

的精度选取不同将引起答案不同,一般取两位小数;?2) 盘组总磁道数(=一个盘面上的磁道数)?3)柱面数 4)数据传输率与盘面数无关;

5)数据传输率的单位时间是秒,不是分。

4.39 某磁盘存储器转速为3000转/分,共有4个记录盘面,每毫米5道,每道记录信息12 288字节,最小磁道直径为230mm,共有275道,求: (1)磁盘存储器的存储容量;

(2)最高位密度(最小磁道的位密度)和最低位密度; (3)磁盘数据传输率; (4)平均等待时间。

解: (1)存储容量 = 275道×12 288B/道×4面 = 13 516 800B

(2)最高位密度 = 12 288B/230?≈17B/mm≈136位/mm(向下取整) 最大磁道直径=230mm+275道/5道 × 2= 230mm + 110mm = 340mm 最低位密度 = 12 288B / 340?≈11B/mm≈92位 / mm (向下取整)

(3)磁盘数据传输率= 12 288B × 3000转/分=12 288B × 50转/秒=614 400B/S (4)平均等待时间 = 1/50 / 2 = 10ms

讨论:1、本题给出的道容量单位为字节,因此算出的存储容量单位也是字节,而不是位; 2、由此算出的位密度单位最终应转换成bpm(位/毫米); 3、平均等待时间是磁盘转半圈的时间,与容量无关。

4.41 设有效信息为110,试用生成多项式G(x) =11011将其编成循环冗余校验码。 解:编码过程如下: M(x) =110 n =3

G(x) =11011 k+1 =5 k =4 M(x)·x4 =110 0000

M(x)·x4/G(x) =110 0000/11011=100+1100/11011 R(x) =1100 M(x)·x4+R(x) =110 0000+1100=110 1100 =CRC码 (7,3)码

注:此题的G(x)选得不太好,当最高位和最低位出错时,余数相同,均为0001。此时只能检错,无法纠错

第 五 章

1. I/O有哪些编址方式?各有何特点?

解:常用的I/O编址方式有两种: I/O与内存统一编址和I/O独立编址;

特点: I/O与内存统一编址方式的I/O地址采用与主存单元地址完全一样的格式,I/O设备和主存占用同一个地址空间,CPU可像访问主存一样访问I/O设备,不需要安排专门的I/O指令。

I/O独立编址方式时机器为I/O设备专门安排一套完全不同于主存地址格式的地址编码,此时I/O地址与主存地址是两个独立的空间,CPU需要通过专门的I/O指令来访问I/O地址空间。 讨论:I/O编址方式的意义:

I/O编址方式的选择主要影响到指令系统设计时I/O指令的安排,因此描述其特点时一定要说明此种I/O编址方式对应的I/O指令设置情况。

? I/O与内存统一编址方式将I/O地址看成是存储地址的一部分,占用主存空间;

问题:确切地讲, I/O与内存统一编址的空间为总线空间,I/O所占用的是内存的扩展空间。 I/O独立编址方式有明显的I/O地址标识,? 而I/O与内存统一的编址方式没有; 问题:无论哪种编址方式,I/O地址都是由相应的指令提供的,而地址本身并没有特殊的标识。

2. 简要说明CPU与I/O之间传递信息可采用哪几种联络方式?它们分别用于什么场合? 答: CPU与I/O之间传递信息常采用三种联络方式:直接控制(立即响应)、 同步、异步。 适用场合分别为:

DMA方式基本由硬件实现传送,因此速度最快;

注意:程序中断方式虽然CPU运行效率比程序查询高,但传输速度却比程序查询慢。 (6)程序查询接口硬件结构最简单,因此最经济; 程序中断接口硬件结构稍微复杂一些,因此较经济; DMA控制器硬件结构最复杂,因此成本最高; (7)程序中断方式适用于中、低速设备的I/O交换; 程序查询方式适用于中、低速实时处理过程; DMA方式适用于高速设备的I/O交换; 讨论:

问题1:这里的传送速度指I/O设备与主存间,还是I/O与CPU之间?

答:视具体传送方式而定,程序查询、程序中断为I/O与CPU之间交换,DMA为I/O与主存间交换。

问题2:主动性应以CPU的操作方式看,而不是以I/O的操作方式看。 程序查询方式:以缓冲器容量(块、二进制数字)为单位传送;? ? 程序中断方式:以向量地址中的数据(二进制编码)为单位传送; DMA:传送单位根据数据线的根数而定;?

30. 什么是多重中断?实现多重中断的必要条件是什么?

解:多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行的过程。

实现多重中断的必要条件是:在现行中断服务期间,中断允许触发器为1,即开中断。

第 六 章

2. 已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。 (1)X > 1/8; ?1/2; (2)X X?

(3)1/4 > 1/16

解: (1)若要X > 1/2,只要a1=1,a2~a6不全为0即可(a2 or a3 or a4 1/8,只要a1~a3不全为0即可(a1 or a2 or a3 =1),?or a5 or a6 = 1); (2)若要X a4~a6可任取0或1;

X?(3)若要1/4 > 1/16,只要a1=0,a2可任取0或1; 当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5 or a6=1;若a3=1,则a4~a6可任取0或1; 当a2=1时, a3~a6可任取0或1。

3. 设x为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。)

6.4 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下: 真 值

十进制 二进制 原 码 反 码 补 码

-13/64 -0.00 1101 1.001 1010 1.110 0101 1.110 0110 29/128 0.001 1101 0.001 1101 0.001 1101 0.001 1101 100 110 0100 0,110 0100 0,110 0100 0,110 0100 -87 -101 0111 1,101 0111 1,010 1000 1,010 1001

5. 已知[x]补,求[x]原和x。 [x1]补=1. 1100; [x2]补=1. 1001; [x3]补=0. 1110; [x4]补=1. 0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x的对应关系如下:

6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,

[x]补=[x]原成立。

解: 当x为小数时,若x [x]补=[x]原成立; 若x < 0,则当x= -1/2时, [x]补=[x]原成立。 0,则 [x]补=[x]原成立; 若x?当x为整数时,若x < 0,则当x= -64时, [x]补=[x]原成立。

7. 设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。

解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。 [-x*]补=[-x]补的结论只在x>0时成立。当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补不等于[-x]补。

8. 讨论若[x]补>[y]补,是否有x>y?

解:若[x]补>[y]补,不一定有x>y。 [x]补 > [y]补时 x > y的结论只在 x > 0、y > 0,及 x<0、y<0时成立。当x>0、 y<0时,有x>y,但由于负数补码的符号位为1,则[x]补<[y]补。同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。

注意: 1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此, 当x<0、y<0时,若[x]补>[y]补,必有x>y。 2)补码的符号位和数值位为一体,不可分开分析。 3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。 4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。 5)不考虑不同数字系统间的比较。(如有人分析x、y字长不等时的情况,无意义。)

12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、-27/1024所对应的机器数。要求如下: (1)阶码和尾数均为原码。 (2)阶码和尾数均为补码。

(3)阶码为移码,尾数为补码。 解:据题意画出该浮点数的格式:

阶符1位 阶码4位 数符1位 尾数10位 -1-5

将十进制数转换为二进制:x1= 51/128= 0.0110011B= 2 * 0.110 011B

x2= -27/1024= -0.0000011011B = 2*(-0.11011B)

则以上各数的浮点规格化数为:

(1)[x1]浮=1,0001;0.110 011 000 0 [x2]浮=1,0101;1.110 110 000 0 (2)[x1]浮=1,1111;0.110 011 000 0 [x2]浮=1,1011;1.001 010 000 0

(3)[x1]浮=0,1111;0.110 011 000 0 [x2]浮=0,1011;1.001 010 000 0

13. 浮点数格式同上题,当阶码基值分别取2和16时, (1)说明2和16在浮点数中如何表示。 (2)基值不同对浮点数什么有影响? (3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。 解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。

(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但精度越下降。 (3)r=2时,最大正数的浮点格式为: 0,1111;0.111 111 111 1 其真值为:N+max=215×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.100 000 000 0 其真值为:N+min=2-16×2-1=2-17 r=16时,最大正数的浮点格式为: 0,1111;0.1111 1111 11 其真值为:N+max=1615×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.0001 0000 00 其真值为:N+min=16-16×16-1=16-17

14. 设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么? 解:若要保证数的最大精度,应取阶的基=2。 若要表示±6万间的十进制数,由于32768(215)< 6万 <65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。 故:尾数位数=32-1-1-5=25码 25

15. 什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式? 解:机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。

16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位符号位,答案均用十进制表示。 (1)无符号数;

(2)原码表示的定点小数。 (3)补码表示的定点小数。 (4)补码表示的定点整数。 (5)原码表示的定点整数。

(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出其正数和负数的表示范围。

(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。

解:(1)无符号整数:0 —— 2 - 1,即:0—— 65535;

无符号小数:0 —— 1 - 2 ,即:0 —— 0.99998;

-16

16

位 25(32) 该浮点数格式如

下: 1 5 1 ??按此格式,该浮点数上溢的条件为:阶

(2)原码定点小数:-1 + 2——1 - 2 ,即:-0.99997 —— 0.99997 (3)补码定点小数:- 1——1 - 2 ,即:-1——0.99997 (4)补码定点整数:-2——2 - 1 ,即:-32768——32767 (5)原码定点整数:-2 + 1——2 - 1,即:-32767——32767

(6)据题意画出该浮点数格式,当阶码和尾数均采用原码,非规格化数表示时: 最大负数= 1,11 111;1.000 000 001 ,即 -2?2 最小负数= 0,11 111;1.111 111 111,即 -(1-2)?2 则负数表示范围为:-(1-2)?2—— -2?2 最大正数= 0,11 111;0.111 111 111,即 (1-2)?2 最小正数= 1,11 111;0.000 000 001,即 2?2 则正数表示范围为:2?2

-9

-31

-9

-31-9

31

-9

31

-9

-31

-9

31

-9

-31

15

15

15

15

-15

-15-15

——(1-2)?2

-1

-32

-931

(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则 最大负数=1,00 000;1.011 111 111,即 -2?2 最小负数=0,11 111;1.000 000 000,即 -1?2 则负数表示范围为:-1?2—— -2?2

最大正数=0,11 111;0.111 111 111,即 (1-2)?2 最小正数=1,00 000;0.100 000 000,即 2?2 则正数表示范围为:2?2

-1

-32

-1

-32-9

31

31

-1

-32

31

——(1-2)?2

-931

17. 设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术

右移一位、两位,讨论结果是否正确。

[x1]原=0.001 1010;[y1]补=0.101 0100;[z1]反=1.010 1111; [x2]原=1.110 1000;[y2]补=1.110 1000;[z2]反=1.110 1000; [x3]原=1.001 1001;[y3]补=1.001 1001;[z3]反=1.001 1001。 解:算术左移一位:

[x1]原=0.011 0100;正确

[x2]原=1.101 0000;溢出(丢1)出错 [x3]原=1.011 0010;正确

[y1]补=0.010 1000;溢出(丢1)出错 [y2]补=1.101 0000;正确

[y3]补=1.011 0010;溢出(丢0)出错 [z1]反=1.101 1111;溢出(丢0)出错 [z2]反=1.101 0001;正确

[z3]反=1.011 0011;溢出(丢0)出错 算术左移两位:

[x1]原=0.110 1000;正确

[x2]原=1.010 0000;溢出(丢11)出错 [x3]原=1.110 0100;正确

[y1]补=0.101 0000;溢出(丢10)出错 [y2]补=1.010 0000;正确

[y3]补=1.110 0100;溢出(丢00)出错 [z1]反=1.011 1111;溢出(丢01)出错 [z2]反=1.010 0011;正确

[z3]反=1.110 0111;溢出(丢00)出错

算术右移一位:

[x1]原=0.000 1101;正确 [x2]原=1.011 0100;正确

[x3]原=1.000 1100(1);丢1,产生误差 [y1]补=0.010 1010;正确 [y2]补=1.111 0100;正确

[y3]补=1.100 1100(1);丢1,产生误差 [z1]反=1.101 0111;正确

[z2]反=1.111 0100(0);丢0,产生误差 [z3]反=1.100 1100;正确 算术右移两位:

[x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确

[x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确

[y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确

[z2]反=1.111 1010(00);产生误差

[z3]反=1.110 0110(01);产生误差 18. 试比较逻辑移位和算术移位。

解:逻辑移位和算术移位的区别: 逻辑移位是对逻辑数或无符号数进行的移位,其特点是不论左移还是右移,空出位均补0,移位时不考虑符号位。 算术移位是对带符号数进行的移位操作,其关键规则是移位时符号位保持不变,空出位的补入值与数的正负、移位方向、采用的码制等有关。补码或反码右移时具有符号延伸特性。左移时可能产生溢出错误,右移时可能丢失精度。

19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。

(1)A=9/64, B=-13/32,求A+B。 (2)A=19/32,B=-17/128,求A-B。 (3)A=-3/16,B=9/32,求A+B。 (4)A=-87,B=53,求A-B。 (5)A=115,B=-24,求A+B。

解:(1)A=9/64= 0.001 0010B, B= -13/32= -0.011 0100B [A]补=0.001 0010, [B]补=1.100 1100

[A+B]补= 0.0010010 + 1.1001100 = 1.1011110 ——无溢出 A+B= -0.010 0010B = -17/64

(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B

[A]补=0.100 1100, [B]补=1.110 1111 , [-B]补=0.001 0001

[A-B]补= 0.1001100 + 0.0010001= 0.1011101 ——无溢出 A-B= 0.101 1101B = 93/128B

(3)A= -3/16= -0.001 1000B, B=9/32= 0.010 0100B [A]补=1.110 1000, [B]补= 0.010 0100

[A+B]补= 1.1101000 + 0.0100100 = 0.0001100 —— 无溢出

1? 1 1 . 1 1 0 1 0 0.1 1 0 1 + 0 0 . 1 0 0 0 1 r、y同号,+[-y]补 0 0 . 0 1 0 1 1 1? 0.1 1 0 1 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 真符位的产生:qf = x0 ? y0 = 0 ? 1 = 1 [x?y]补=10.110 11,x?y= -1.001 01 判溢出:qf ? q0 = 1 ? 0 = 1,溢出

注:由于本题中x*>y*,有溢出。除法运算时一般在运算前判断是否x* >y*,如果该条件成立则停止运算,转溢出处理。但此算法本身在溢出情况下仍可正常运行,此时数值位占领小数点左边的1位,商需设双符号位(变形补码),以判溢出。采用这种方法时运算前可不判溢出,直接进行运算,运算完后再判溢出。 (4)x=13/32=(0.011 01)2

y= -27/32=(-0.110 11)2 x*= [x]原= [x]补= x=0. 011 01 [y]原 = 1.110 11 y* = 0.110 11 [-y*]补=1.001 01 [y]补= 1.001 01 [-y]补= 0.110 11 q0 = x0 ? y0 = 0 ? 1 = 1 x*?y*= 0.011 11 [x?y]原=1.011 11

x?y =(-0.011 11)2 = -15/32 r*=0.010 11×2-5

=0.000 000 101 1 原码加减交替除法:

被除数(余数) 商

0 . 0 1 1 0 1 0 . 0 0 0 0 0 + 1 . 0 0 1 0 1 试减,+[-y*]补

1 . 1 0 0 1 0 1? 1 . 0 0 1 0 0 0 . + 0 . 1 1 0 1 1 r<0, +y*

1 . 1 1 1 1 1 1? 1 . 1 1 1 1 0 0.0 + 0 . 1 1 0 1 1 r<0, +y* 0 . 1 1 0 0 1

1? 1 . 1 0 0 1 0 0.0 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 1 1 1 被除数(余数) 商

1? 1 . 0 1 1 1 0 0 . 0 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 0 1 1

1? 1 . 0 0 1 1 0 0.0 1 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 0 1 0 1 1 1? 0.0 1 1 1 1 r>0, 结束 补码加减交替除法:

被除数(余数) 商

0 0 . 0 1 1 0 1 0 . 0 0 0 0 0 + 1 1 . 0 0 1 0 1 试减,x、y异号,+[y]补 1 1 . 1 0 0 1 0

1? 1 1 . 0 0 1 0 0 1 . + 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 1 1 . 1 1 1 1 1

1? 1 1 . 1 1 1 1 0 1.1

+ 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 0 0 . 1 1 0 0 1

1? 0 1 . 1 0 0 1 0 1.1 0

+ 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 1 1 1

被除数(余数) 商

1? 0 1 . 0 1 1 1 0 1 . 1 0 0 + 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 0 1 1

1? 0 1 . 0 0 1 1 0 1.1 0 0 0 + 1 1 . 0 0 1 0 1 r、y异号,+[y]补 0 0 . 0 1 0 1 1 1? 1.1 0 0 0 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 [x?y]补=1.100 01,x?y=(-0.011 11)2 = -15/32

22. 设机器字长为16位(含1位符号位),若一次移位需1μs,一次加法需1 μs,试问原码一位乘、补码一位乘、原码加减交替除法和补码加减交替除法各最多需多少时间? 解:原码一位乘最多需时 1μs×15(加)+ 1μs×15(移位)=30μs 补码一位乘最多需时 1μs×16+1μs×15 = 31μs 原码加减交替除最多需时 1μs×(16+1)+1μs×15=32μs (或33μs) 补码加减交替除最多需时 1μs×(16+1) +1μs×15=32μs (或33μs) (包括最后恢复余数!)

25. 对于尾数为40位的浮点数(不包括符号位在内),若采用不同的机器数表示,试问当尾数左规或右规时,最多移位次数各为多少? 解:对于尾数为40位的浮点数,若采用原码表示,当尾数左规时,最多移位39次;反码表示时情况同原码;若采用补码表示,当尾数左规时,正数最多移位39次,同原码;负数最多移位40次。当尾数右规时,不论采用何种码制,均只需右移1次。

26.按机器补码浮点运算步骤,计算[x±y]补.

(1)x=2 (2)x=2

-011-011101

× 0.101 100,y=2

-010

×(-0.011 100);

-010

×(-0.100 010),y=2×(-0.011 111);

(3)x=2×(-0.100 101),y=2×(-0.001 111)。 解:先将x、y转换成机器数形式: (1)x=2

-011

100

× 0.101 100,y=2

-010

×(-0.011 100)

[x]补=1,101;0.101 100, [y]补=1,110;1.100 100

[Ex]补=1,101, [y]补=1,110, [Mx]补=0.101 100, [My]补=1.100 100 1)对阶:

[?E]补=[Ex]补+[-Ey]补 = 11,101+ 00,010=11,111 < 0,

应Ex向Ey对齐,则:[Ex]补+1=11,101+00,001=11,110 = [Ey]补 [x]补=1,110;0.010 110 2)尾数运算:

[Mx]补+[My]补= 0.010 110 + 11.100 100=11.111010

[Mx]补+[-My]补=0.010 110 + 00.011100= 00.110 010 3)结果规格化:

[x+y]补=11,110;11.111 010 = 11,011;11.010 000 (尾数左规3次,阶码减3) [x-y]补=11,110;00.110 010, 已是规格化数。 4)舍入:无 5)溢出:无 则:x+y=2

(2)x=2

-011

-101

×(-0.110 000) ×0.110 010

010

x-y =2

-010

×(-0.100010),y=2-×(-0.011111)

[x]补=1,101;1.011 110, [y]补=1,110;1.100 001

1) 对阶:过程同(1)的1),则 [x]补=1,110;1.101 111 2)尾数运算:

[Mx]补+[My]补= 11.101111 + 11. 100001 = 11.010000 [Mx]补+[-My]补= 11.101111 + 00.011111 = 00.001110

3)结果规格化:

[x+y]补=11,110;11.010 000,已是规格化数

[x-y]补=11,110;00.001 110 =11,100;00.111000 (尾数左规2次,阶码减2) 4)舍入:无 5)溢出:无 则:x+y=2

(3)x=2×(-0.100 101),y=2×(-0.001 111) [x]补=0,101;1.011 011, [y]补=0,100;1.110 001

1)对阶:

[?E]补=00,101+11,100=00,001 >0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101=[Ex]补 [y]补=0,101;1.111 000(1) 2)尾数运算:

101

100

-010

×(-0.110 000) ×0.111 000

x-y =2

-100

[Mx]补+[My]补= 11.011011+ 11.111000(1)= 11.010011(1) [Mx]补+[-My]补= 11.011011+ 00.000111(1)= 11.100010(1) 2) 结果规格化:

[x+y]补=00,101;11.010 011(1),已是规格化数

[x-y]补=00,101;11.100 010(1)=00,100;11.000 101 (尾数左规1次,阶码减

1)

4)舍入:

[x+y]补=00,101;11.010 011(舍) [x-y]补 不变 5)溢出:无

则:x+y=2×(-0.101 101)

x-y =2×(-0.111 011)

6.27、假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。 (1)[25×(11/16)]+[24×(-9/16)] (2)[2-3×(13/16)]-[2-4×(-5/8)] (3)[23×(13/16)]×[24×(-9/16)] (4)[26×(-11/16)]÷[23×(-15/16)] (5)[23×(-1)] ×[2-2×57/64] (6)[2-6×(-1)]÷[27×(-1/2)] (7)3.3125+6.125 (8)14.75-2.4375

解:设机器数采用阶补尾补形式: (1)x= 25×(11/16)= 2101×0.101100

y= 24×(-9/16)=2100×(-0.100100)则: [x]阶补尾补=00,101;00.101100 [y]阶补尾补=00,100;11.011100 1)对阶:

[?E]补=[Ex]补+[-Ey]补 =00,101+11,100=00,001

[?E]补>0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=00,101;11.101110 2)尾数运算:

[Mx]补+[My]补= 0 0 . 1 0 1 1 0 0

+ 1 1 . 1 0 1 1 1 0 0 0 . 0 1 1 0 1 0 3)结果规格化:左规1位

[x+y]补=00,101;00.011 010 =00,100;00.110 100 4)舍入:不需舍入。 5)溢出:无

则:x+y=2100×(0.110 100) =24×(13/16)

100101

(2)[2-3×(13/16)]-[2-4×(-5/8)] x= 2-3×(13/16)= 2-011×0.110 100 y= 2-4×(-5/8)=2-100×(-0.101000) [x]阶补尾补=11,101;00.110100 [y]阶补尾补=11,100;11.011000 1)对阶:

[?E]补=[Ex]补+[-Ey]补 =11,101+00,100=00,001

[?E]补>0,应Ey向Ex对齐,则:

[Ey]补+1=11,100+00,001=11,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=11,101;11.101100 2)尾数运算:

[Mx]补+[-My]补= 0 0 . 1 1 0 1 0 0

+ 0 0 . 0 1 0 1 0 0 0 1 . 0 0 1 0 0 0 3)结果规格化:右规

[x-y]补=11,101;01.001 000 =11,110;00.100 100 4)舍入:不需舍入。

(3)[23×(13/16)]×[24×(-9/16)] x= 23×(13/16)=2011×(0.110 100) y= 24×(-9/16)=2100×(-0.100 100) [x]阶补尾补=00,011;0.110 100 [y]阶补尾补=00,100;1.011 100 1)阶码相加:

[Ex]补+[Ey]补=00,011+ 00,100

=00,111(无溢出) 2)尾数相乘:

补码两位乘比较法,见下页。 [Mx × My]补=11.100 010(110 000 00) 3)结果规格化:左规1位。

[x×y]补=0,111;1.100 010(110 000 00) =0,110;1.000 101(100 000 0) 2)尾数相乘: (补码两位乘比较法)

部分积 乘数 yn+1 0 0 0 . 0 0 0 0 0 0 1 1 . 0 1 1 1 0 0 0 + 0 0 0 . 0 0 0 0 0 0 +[-0]补 0 0 0 . 0 0 0 0 0 0

?2 0 0 0 . 0 0 0 0 0 0 0 0 1 1 .0 1 1 1 0 + 1 1 1 . 0 0 1 1 0 0 +[-x]补 1 1 1 . 0 0 1 1 0 0

32. 设机器字长为16位,分别按4、4、4、4和5、5、3、3分组后,

(1)画出按两种分组方案的单重分组并行进位链框图,并比较哪种方案运算速度快。 (2)画出按两种分组方案的双重分组并行进位链框图,并对这两种方案进行比较。 (3)用74181和74182画出单重和双重分组的并行进位链框图。

解:(1)4—4—4—4分组的16位单重分组并行进位链框图见教材286页图6.22。

5—5—3—3分组的16位单重分组并行进位链框图如下:

(2)4—4—4—4分组的16位双重分组并行进位链框图见教材289页图6.26。 5—5—3—3分组的16位双重分组并行进位链框图如下:

5—5—3—3分组的进位时间=2.5ty?3=7.5ty; 4—4—4—4分组的进位时间=2.5ty?3=7.5ty; 可见,两种分组方案最长加法时间相同。

结论:双重分组并行进位的最长进位时间只与组数和级数有关,与组内位数无关。 (3)单重分组16位并行加法器逻辑图如下(正逻辑):

注意: 1)74181芯片正、负逻辑的引脚表示方法;

2)为强调可比性,5-5-3-3分组时不考虑扇入影响;

3)181芯片只有最高、最低两个进位输入/输出端,组内进位无引脚; 4)181为4位片,无法5-5-3-3分组,只能4-4-4-4分组;

5)单重分组跳跃进位只用到181,使用182的一定是双重以上分组跳跃进位; 6)单重分组跳跃进位是并行进位和串行进位技术的结合;双重分组跳跃进位是二级

并行进位技术;特别注意在位数较少时,双重分组跳跃进位可以采用全先行进位技术实现;位数较多时,可采用双重分组跳跃进位和串行进位技术结合实现。

第 七 章

0,RISC 和CISC 差异很大,它们主要有: (1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。 (2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。 (3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。 (4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。 (5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。 (6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。 (7) 用户使用:

RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。 (8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。 1. 零地址指令的操作数来自哪里??各举一例说明。 答:零地址指令的操作数来自ACC,为隐含约定。

在一地址指令中,另一个操作数的地址通常可采用ACC隐含寻址方式获得。

2. 对于二地址指令而言,操作数的物理地址可安排在什么地方?举例说明。

答:对于二地址指令而言,操作数的物理地址可安排在寄存器内、指令中或内存单元内等。 7.6 某指令系统字长为16位,地址码取4位,试提出一种方案,使该指令系统有8条三地址指令、16条二地址指令、100条一地址指令。 解:三地址指令格式如下:

4 4 4 4

OP A1 A2 A3

思路:以三地址指令格式为该指令系统的基本格式。以此格式为基础,采用扩展操作码技术,设计出题 解题意所 要求的地址码结构的指令。 指 令操作码分配方案如下:

4位OP

0000,

??, A1,A2,A3;8条三地址指令 0111, 1000,0000,

??,??, A2,A3;16条二地址指令 1000,1111, 1001,0000,0000,

??,??,??, A3;100条一地址指令 1001,0110,0011, 1001,0110,0100,

??,??,??, 冗余编码

1001,1111,1111, 可用来扩充一、零地址指令条数 1010,

??, 冗余编码

1111, 可用来扩充三、二、一、零地址指令条数

8. 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M条,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种? 解:1)若采用定长操作码时,二地址指令格式如下:

OP(4位) A1(6位) 4A2(6位) 设二地址指令有K种,则:K=2-M-N

当M=1(最小值),N=1(最小值)时,二地址指令最多有:Kmax=16-1-1=14种 3) 若采用变长操作码时,二地址指令格式仍如1)所示,但操作码长度可随地址码的

个数而变。此时,K= 2 -(N/2 + M/2 );

当(N/2 + M/2 )?1时(N/2 + M/2 向上取整),K最大,则二地址指令最多有:

6

12

6

12

4

6

12

Kmax=16-1=15种(只留一种编码作扩展标志用。)

11. 画出先变址再间址及先间址再变址的寻址过程示意图。 解:1)先变址再间址寻址过程简单示意如下: EA=[(IX)+A],IX?(IX)+1

2)先间址再变址寻址过程简单示意如下:EA=(IX)+(A),IX? (IX)+1

16. 某机主存容量为4M?16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答:(1)画出一地址指令格式并指出各字段的作用; (2)该指令直接寻址的最大范围; (3)一次间址和多次间址的寻址范围; (4)立即数的范围(十进制表示); (5)相对寻址的位移量(十进制表示);

(6)上述六种寻址方式的指令哪一种执行时间最短?哪一种最长?为什么?哪一种便于程序浮动?哪一种最适合处理数组问题?

(7)如何修改指令格式,使指令的寻址范围可扩大到4M?

(8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。 解:(1)单字长一地址指令格式:

OP(7位) M(3位) A(6位) OP为操作码字段,共7位,可反映108种操作; M为寻址方式字段,共3位,可反映6种寻址操作; A为地址码字段,共16-7-3=6位。 (2)直接寻址的最大范围为2=64。

(3)由于存储字长为16位,故一次间址的寻址范围为2;若多次间址,需用存储字的最高位来区别是否继续间接寻址,故寻址范围为2。

(4)立即数的范围为-32——31(有符号数),或0——63(无符号数)。 (5)相对寻址的位移量为-32——31。

(6)上述六种寻址方式中,因立即数由指令直接给出,故立即寻址的指令执行时间最短。间接寻址在指令的执行阶段要多次访存(一次间接寻址要两次访存,多次间接寻址要多次访存),故执行时间最长。变址寻址由于变址寄存器的内容由用户给定,而且在程序的执行过程中允许用户修改,而其形式地址始终不变,故变址寻址的指令便于用户编制处理数组问题的程序。相对寻址操作数的有效地址只与当前指令地址相差一定的位移量,与直接寻址相比,更有利于程序浮动。

(7)方案一:为使指令寻址范围可扩大到4M,需要有效地址22位,此时可将单字长一地址指令的格式改为双字长,如下图示:

OP(7位) MOD(3位) A(低16位) 方案二:如果仍采用单字长指令(16位)格式,为使指令寻址范围扩大到4M,可通过段寻址方案实现。安排如下:

硬件设段寄存器DS(16位),用来存放段地址。在完成指令寻址方式所规定的寻址操作后,得有效地址EA(6位),再由硬件自动完成段寻址,最后得22位物理地址。 即:物理地址=(DS)?2 + EA

注:段寻址方式由硬件隐含实现。在编程指定的寻址过程完成、EA产生之后由硬件自动

6

15

16

6

A(高6位) 完成,对用户是透明的。

方案三:在采用单字长指令(16位)格式时,还可通过页面寻址方案使指令寻址范围扩

大到4M。安排如下:

硬件设页面寄存器PR(16位),用来存放页面地址。指令寻址方式中增设页面寻址。当需要使指令寻址范围扩大到4M时,编程选择页面寻址方式,则:EA =(PR)‖A (有效地址=页面地址“拼接”6位形式地址),这样得到22位有效地址。

(8)为使一条转移指令能转移到主存的任一位置,寻址范围须达到4M,除了采用(7) 方案一中的双字长一地址指令的格式外,还可配置22位的基址寄存器或22位的变址寄存器,使EA = (BR) + A (BR为22位的基址寄存器)或EA =(IX)+ A(IX为22位的变址寄存器),便可访问4M存储空间。还可以通过16位的基址寄存器左移6位再和形式地址A相加,也可达到同样的效果。

总之,不论采取何种方式,最终得到的实际地址应是22位。

19. 某CPU内有32个32位的通用寄存器,设计一种能容纳64种操作的指令系统。假设指令字长等于机器字长,试回答以下问题:

(1)如果主存可直接或间接寻址,采用寄存器—存储器型指令,能直接寻址的最大存储空间是多少?画出指令格式并说明各字段的含义。

(2)在满足(1)的前提下,如果采用通用寄存器作基址寄存器,则上述寄存器—存储器型指令的指令格式有何特点?画出指令格式并指出这类指令可访问多大的存储空间? 解:(1)如采用RS型指令,则此指令一定是二地址以上的地址格式,指令格式如下:

OP(6位) R(5位) 65

I(1位) A(20位) 操作码字段OP占6位,因为2>=64;

寄存器编号R占5位,因为2>=32;

间址位I占1位,当I=0,存储器寻址的操作数为直接寻址,当I=1时为间接寻址; 形式地址A占20位,可以直接寻址2字。

(2)如采用基址寻址,则指令格式中应给出基址寄存器号,以指定哪一个通用寄存器用作基址寄存器。指令格式变为: OP(6位) 源R(5位) I(1位) 32

20

X(1位) 目标R(5位) A(14位) 增加寻址特征位X,当X=1时,以目标寄存器R作为基址寄存器进行基址寻址。 基址寻址可访问存储空间为:2字。

6. 某机字长16位,存储器直接寻址空间为128字,变址时的位移量为-64~+63,16个通用寄存器均可作为变址寄存器。采用扩展操作码技术,设计一套指令系统格式,满足下列寻址类型的要求: (1)直接寻址的二地址指令3条; (2)变址寻址的一地址指令6条; (3)寄存器寻址的二地址指令8条; (4)直接寻址的一地址指令12条; (5)零地址指令32条。 试问还有多少种代码未用?若安排寄存器寻址的一地址指令,最多还能容纳多少

条?

解:题意分析: 设指令字长=机器字长,128字的直接寻址空间要求形式地址A为7位,-64~+63的位移量也需7位(6位加1位符号位),16个通用寄存器作变址寄存器需4

位变址寄存器号,则指令格式为: (1)直接寻址的二地址指

令: 2 7 7

(3)寄存器寻址的二地址指令: 8 4 4

(6)若安排寄存器寻址的一地址指令,指令格式应

为: 12 4

操作码编码分配: 0 0 0 1 A1,A2; 3条直接寻址的二地址指令。 1 0 1 1 0

0 0 …… …… IX,A;6条变址寻址的一地址指令。 1 1 1 0 1 1 1 1 1 0 0 0 0 …… …… …… Ri,Rj; 1 1 1 1 0 1 1 1 8条寄存器寻址的二地址指令。 1 1 1 1 1 0 0 0 0 …… …… …… A; 1 1 1 1 1 1 0 1 1 12条直接寻址

的一地址指令。

续: 1 1 1 1 1 1 1 0 0 0 0 0 …… …… …… …… Ri; 1 1 1 1 1 1

1 1 0 1 1 1 30条寄存器寻址的 1 1 1 1 1 1 1 1 1 0 0 0 一地址指令。 …… …… …… …… (利用30个冗余编码) 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 …… …… …… …… …… 32

条0地址 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 指令

不画所设计的指令格式图,只分配指令操作码编码。 ?讨论: 指令格式中安排寻址方式

字段,例: 2 3 4 7 ?

评注:这是一道指令格式设计题,本题已给出了各种指令所需的条数,因此,在根据题意画出各种指令的格式后,剩下的工作就是要为每一条指令分配编码。在采用扩展操作码技术分配指令编码时,扩展的基本方法是在所设计的指令系统中,选定一种操作码位数最少的指令格式作为基本格式,然后在这种基本格式的基础上进行操作码编码的扩展。为便于硬件译码结构的实现,编码分配应尽量做到有序、有规律。特别是扩展标志码的选择,应尽量采用特征较强的编码,象全?1?编码等。另外,应在某类指令的编码全部安排完后,再考虑安排扩展标志码,以避免漏排或重码

等不必要的混乱。

第八章

1、什么是中断

在CPU运行过程中,由于内部或外部某个随机事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,完成后返回原来的程序继续执行。这个过程称为中断。 2. 什么是指令周期?指令周期是否有一个固定值?为什么? 解:指令周期是指取出并执行完一条指令所需的时间。

由于计算机中各种指令执行所需的时间差异很大,因此为了提高CPU运行效率,即使在同步控制的机器中,不同指令的指令周期长度都是不一致的,也就是说指令周期对于不同的指令来说不是一个固定值。

4. 设CPU内有下列部件:PC、IR、SP、AC、MAR、MDR和CU。

(1)画出完成间接寻址的取数指令LDA@X(将主存某地址单元X的内容取至AC中)的数据流(从取指令开始)。

(2)画出中断周期的数据流。

解:CPU中的数据流向与所采用的数据通路结构直接相关,不同的数据通路中的数据流是不一样的。常用的数据通路结构方式有直接连线、单总线、双总线、三总线等形式,目前大多采用总线结构,直接连线方式仅适用于结构特别简单的机器中。

为简单起见,本题采用单总线将题中所给部件连接起来,框图如下:

本文来源:https://www.bwwdw.com/article/9bdx.html

Top