《计算机组成原理》习题答案 (秦磊华)
第一章 系统给概论 习 题 一
1.l 解释下列名词
摩尔定律:对集成电路上可容纳的晶体管数目、性能和价格等发展趋势的预测,其主要
内容是:成集电路上可容纳的晶体管数量每 18 个月翻一番,性能将提高一倍,而其价格
将降低一半。
主存: 计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机
存取。
控制器:计算机的指挥中心,它使计算机各部件自动协调地工作。
时钟周期:时钟周期是时钟频率的倒数,也称为节拍周期或 T 周期,是处理操作最基本的时
间单位。
多核处理器:多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。
字长:运算器一次运算处理的二进制位数。
存储容量: 存储器中可存二进制信息的总量。
CPI:指执行每条指令所需要的平均时钟周期数。
MIPS:用每秒钟执行完成的指令数量作为衡量计算机性能的一个指标,该指标以每秒钟完成
的百万指令数作为单位。
CPU 时间:计算某个任务时 CPU 实际消耗的时间,也即 CPU 真正花费在某程序上的时间。
计算机系统的层次结构:计算机系统的层次结构由多级构成,一般分成 5 级,由低到高分别
是:微程序设计级,机器语言级,操作系统级,汇编语言级,高级语言级。
基准测试程序:把应用程序中使用频度最高的那那些核心程序作为评价计算机性能的标准程
序。
软/硬件功能的等价性:从逻辑功能的角度来看,硬件和软件在完成某项功能上是相同的,
称为软/硬件功能是等价的,如浮点运算既可以由软件实现,也可以由专门的硬件实现。
固件:是一种软件的固化,其目的是为了加快软件的执行速度。
可靠性:可靠性是指系统或产品在规定的条件和规定的时间内,完成规定功能的能力。产
品可靠性定义的要素是三个“规定”:“规定条件”、“规定时间”和“规定功能”。
MTTF:平均无故障时间,指系统自使用以来到第一次出故障的时间间隔的期望值。
MTTR:系统的平均修复时间。
MTBF:平均故障间隔时间,指相邻两次故障之间的平均工作时间。
可用性:指系统在任意时刻可使用的概率,可根据 MTTF、MTTR 和 MTBF 等指标计算处系统的
可用性。
1.2 什么是计算机系统的硬件和软件?为什么说计算机系统的硬件和软件在逻辑功能上是
等价的?
答:计算机硬件系统是指构成计算机系统的电子线路和电子元件等物理设备的总称。硬件是
构成计算机的物质基础,是计算机系统的核心。计算机的硬件系统包含运算器、控制器、存
储器、输入设备和输出设备等五大部件。
计算机软件是计算机中全部程序的集合。软件按其功能分成应用软件和系统软件两大
类。
计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软
件的扩充得以实现的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度
来看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。
1.3 冯·诺依曼型计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部
第 1 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
件组成?各起什么作用?
答:冯诺依曼型计算机的基本思想是存储程序和程序控制,其中的“存储程序”是指将解题
的步骤编写成程序,然后把存储存放到计算机的内存中,而“程序控制”是指控制器读出存
放在存储器中的程序并根据该程序控制全机协调工作以完成程序的功能。
根据冯诺依曼型计算机的基本思想,计算机的硬件应该由运算器、控制器、存储器、输
入/输出设备和总线组成。
各部件的作用:
运算器:对数据进行运算的部件。
存储器:存放程序和数据。
控制器:根据指令的功能控制构成计算机的各大功能部件协调工作,共同完成指令的功
能。
输入设备:将外部信息输送到主机内部的设备。
输出设备:能将计算机内部的信息以不同并且相应的形式反馈给人们的设备。
总线:连接两个或多个设备(部件)的公共信息通路。
1.4 什么是计算机字长?它取决于什么?计算机字长统一了哪些部件的长度?
答:计算机的字长一般指一次参与运算数据的基本长度,用二进制数位的长度来衡量。
它取决于运算器一次运算处理的二进制位数。它是计算机的重要性能指标。常用的计算
机字长有 8 位、16 位、32 位及 64 位。
一般与计算机内部寄存器、加法器、数据总线的位数以及存储器字长等长,因此,字长
直接影响硬件的代价。
1.5 计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用?
答:计算机系统分成五级层次结构,第 1 级为微程序设计级、第 2 级为机器语言级、第 3
级为操作系统级、第 4 级为汇编语言级、第 5 级为高级语言级。
各层次的作用:
微程序级:为机器指令级提供机器指令的解释指行功能。
机器指令级:是软件系统和硬件系统的界面,一条机器指令的功能由微程序机器级的一
段微型程序的功能实现。
操作系统级:调度计算机中的软件和硬件资源。
汇编语言级:它将用户编写的接近人类语言的程序,翻译成能在机器上运行的目标程序。
高级语言级:完全面向用户,是用户关心的目标,可执行各种用途的程序。
1.6 计算机内部有哪两股信息在流动?它们彼此有什么关系?
答:计算机中有两股信息在流动:一股是控制信息,即操作命令,它分散流向各个部件;一
股是数据信息,它受控制信息的控制,从一个部件流向另一个部件,在流动的过程被相应的
部件加工处理。
1.7 为什么说计算机系统的软件与硬件可以互相转化?
答:计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软
件的扩充得以实现的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度来
看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。
由于这样的等价性,所以可以说计算机系统的软件与硬件是可以互相转化的。
1.8 什么叫软件系统?它包含哪些内容?
第 2 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
答:一台计算机中全部程序的集合,统称为这台计算机的软件系统。软件按其功能分成应用
软件和系统软件两大类。
应用软件是用户为解决某种应用问题而编制的一些程序。
系统软件用于对计算机系统的管理、调度、监视和服务等功能,常将系统软件分为以
下六类:操作系统,言处理程序,标准程序库,服务性程序,数据库管理系统和算机网络软件。
1.9 说明高级语言、汇编语言和机器语言三者之间的差别和联系。
答:机器语言是直接用二进制代码指令表达的计算机语言,是一种面向机器的编程语言,属
于低级语言。
汇编语言是用助记符号来表示计算机指令的语言,也是低级的语言。
高级语言是一类接近于人类自然语言和数学语言的程序设计语言的统称,分为面向过程
的语言和面向对象的语言。
它们都是计算机的编程语言,并且是计算机编程语言发展的三个阶段。三者各自的特点:
使用机器语言编写的程序,占用内存少、执行效率高。缺点:编程工作量大,容易出错;
依赖具体的计算机体系,因而程序的通用性、移植性都很差。
使用汇编语言编写计算机程序,能够根据特定的应用对代码做最佳的优化,提高运行速
度;能够最大限度地发挥硬件的功能。但是编写的代码非常难懂,不好维护;开发效率很低,
时间长且单调。
高级语言的优点是:编程相对简单、直观、易理解、不容易出错;编写的计算机程序通
用性好,具有较好的移植性。
1.10 什么是系统的可靠性?衡量系统可靠性的指标有哪些?如何提高系统的可靠性?
答:系统的可靠性是指系统在规定的条件和规定的时间内,完成规定功能的能力。
衡量系统可靠性的指标有三个:平均无故障时间、平均故障间隔时间和可用性。
提高系统可靠性的常用方法包括避错和容错。前者即避免错误的出现,从而提高系统的
平均无故障时间;后者容许错误的出现,但采取有效的方法来防止其造成的不利影响。
1.11 假定某计算机 1 和计算机 2 以不同的方式实现了相同的指令集,该指令集中共有 A、B、
C、D 四类指令,它们在程序中所占比例分别为 40%、20%、20%、20%,机器 1 和机器 2 的时
钟周期为 600MHZ 和 800MHZ,各类指令在两机器上的 CPI 如表 1.5 所示,求两机器的 MIPS
各为多少?
表 1.5 两台计算机不同指令的 CPI
CPI1
CPI2
A
2
2
B
3
2
C
4
3
D
5
4
解:CPI1= 2*0.4+ 0.2*(3+4+5)= 3.2 MIPS1= f/(CPI1106) = 600106/(3.2106)=187.5
CPI2= 2*0.4+ 0.2*(2+3+4)= 2.6 MIPS2= f/(CPI1106) = 800106/(2.6106)=307.7
1.12 若某程序编译后生成的目标代码由 A、B、C、D 四类指令组成,它们在程序中所占比例
分别为 40%、20%、15%、25%。已知 A、B、C、D 四类指令的 CPI 分别为 1、2、2、2。现需要
对程序进行编译优化,优化后的程序中 A 类指令条数减少了一半,而其它指令数量未发生变
化。假设运行该程序的计算机 CPU 主频为 500MHZ。完成下列各题:
第 3 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
1)优化前后程序的 CPI 各为多少?
2)优化前后程序的 MIPS 各为多少?
3)通过上面的计算结果你能得出什么结论?
解:1)优化前:CPI=
= 1 0.4 + 2 0.2 + 2 0.15 + 2 0.25
= 1.6
优化后:A、B、C、D 四类指令在程序中所占比例分别为 1/4、1/4、3/16、5/16,
CPI=
= 1 1/4 + 2 1/4 + 2 3/16 + 2 5/16
= 1.75
2)根据 公式 MIPS =
得
优化前:MIPS = (500106)/(1.6106) = 312.5
优化后:MIPS = (500106)/(1.75106) = 285.7
3)优化后,A 类指令条数减少,造成计算机的 CPI 增加,MIPS 减少。这样的优化虽然减少
了 A 类指令条数,却降低了程序的执行速度。
1.1 各代计算机是以什么作为基本元件设计制造的?
1.2 计算机的应用可体现在哪几个方面?
1.3 计算机硬件系统由哪几大部件组成?各部件的主要功能是什么?
1.4 系统软件和应用软件的异同点是什么?
1.5 计算机系统可分为哪几个层次?层次之间有何关系?(试举例说明)
1.6 什么是计算机硬件和软件?为什么说往往硬件和软件在逻辑功能上是等价的?
1.7 主存储器中存放着大量信息,怎样从中取出指定的信息?
1.8 运算器能实现哪些基本运算?
1.9 控制器产生控制信号由哪些因素决定?
1.10 解释下列术语:
位 字节 字 双字 字长 存储单元
地址 ALU CPU 主机 外设 固件
第 4 页 共 70 页
niiiICICCPI1)(niiiICICCPI1)(6CPI 10时钟频率
《计算机组成原理》习题答案 (秦磊华)
第二章 数据表示方法 习 题 二
2.1 解释下列名词
真值:正号和负号分别用“+”和“-”表示,数据位保持二进制值不变的数据表示方法。
数值数据:计算机所支持的一种数据类型,用于科学计算,常见的数值数据类型包括小数、
整数、浮点数数等。
非数值数据:计算机所支持的一种数据类型,一般用来表示符号或文字等没有数值值的数据。
机器数:数据在机器中的表示形式,是正负符号数码化后的二进制数据。
变形补码:用两个二进制位来表示数字的符号位,其余与补码相同。即“00”表示正,“11”
表示负。
规格化:将非规格化的数处理成规格化数的过程。规格化数规定尾数用纯小数表示,且真值
表示时小数点后第一位不为 0(以机器数表示时对小数点后第一位的规定与具体的机器数的
形式有关)。
机器零:计算机保存数字的位有限,所能表示最小的数也有范围,其中有一个范围之中
的数据无法精确表示,当实际的数据处在这个无法精确表示的数据范围时计算机就将
该数作为机器零来处理,因此,计算机中的机器零其实对应的不是一个固定的数,而
是一个数据表示范围。
BCD 码:用 4 位二进制数来表示 1 位十进制数中的 0~9 这 10 个数码,即二进制表示的十
进制数。
汉字内码:计算机内部存储、处理加工和传输汉字时所用的由 0 和 1 符号组成的代码。
码距:一组编码中对应位上数字位不同的最小个数。
奇偶校验:通过检测校验码中 1 的个数的奇/偶性是否改变来判断数据是否出错的一种数据
校验方法。
海明校验:是一种基于多重奇校验且具有检测与纠正错误的校验方法。其基本原理是将有效
信息按某种规律分成若干组,每组安排一个校验位进行奇偶测试,就能提供多位检错信息,
以指出最大可能是哪位出错,从而将其纠正。
循环冗余校验:是数据通信领域中最常用的一种具有检测与纠正错误能力差错校验码,基利
用生成多项式并基于模 2 运算建立编码规则。
检错:检测被传送的信息中是否发生差错。
纠错:纠正信息在传送或存储过程中所发生的错误。
2.2 回答下列问题
1)为什么计算机中采用二进制?
答:因为二进制具有运算简单和表示简单的优点,除此之外还有可靠和容易实现等特点。
具体来说,是因为:
(1)技术实现简单,计算机是由逻辑电路组成,逻辑电话通常只有两个状态,开关
的接通与断开,这两种状态正好可以用“1”和“0”表示。
(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利
于简化计算机内部结构,提高运算速度。
(3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好
与逻辑代数中的“真”和“假”相吻合。
(4)易于进行转换,二进制与十进制数易于互相转换。
2)为什么计算机中采用补码表示带符号的整数?
第 5 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
答:采用补码运算具有如下两个特征:
(1)因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即
如果是补码表示的数,不管是加减法都直接用加法运算即可实现。
(2)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
这样的运算有两个好处:
(a)使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的
结构,提高运算速度;(减法运算可以用加法运算表示出来。)
(b)加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中
运算器的线路设计。
3)浮点数的表示范围和精确度分别由什么决定?字长一定时浮点数的表示范围与精确度之间
有和关系?
答:浮点数的表示范围由阶码的位数决定,精确度由尾数的位数决定。
当机器字长一定时,分给阶码的位数越多,尾数占用的位数就越少,则数的表示范围越
大。而尾数占用的位数减少,必然会减少数的有效数位,即影响数的精度。
4)汉字输入码、机内码和字型码在汉字处理过程中各有何作用?
答:汉字输入码、机内码和字型码,分别用于汉字的输入、汉字在计算机内的处理以及汉字
的显示和打印。
具体来说,计算机要对汉字信息进行处理,首先要将汉字转换成计算机可以识别的二进
制形式并输入到计算机,这是由汉字输入码完成的;汉字输入到计算机后,还需要转换成内
码才能被计算机处理,显然,汉字内码也应该是二进制形式。如果需要显示和打印汉字,还
要将汉字的内码转换成字形码。
5)在机内码中如何区分两个 ASCII 码字符和一个汉字?
答:将一个汉字看成是两个扩展 ASCII 码,使表示 GB2312 汉字的两个字节的最高位都为 1,
而每个 ASCII 码字符中每个字节的最高位为 0。这样就能区别一个机内码到底对应一个汉字
还是两个西文字符。
6)“8421 码就是二进制数”。这种说法对吗?为什么?
答:这种说法是不对的。8421 码是一种最简单的有权码,它选取 4 位二进制数的前 10 个代
码 0000~1001 分别对应表示十进制数的 10 个数码。若按权求和,和数就等于该代码所对应
的十进制数。
8421 码是一种编码方式,用于十进位制与二进制数之间的转换。
而二进制数是用 0 和 1 两个数码来表示的数。二者是不同的概念,不能等同。
7)如何识别浮点数的正负?浮点数能表示的数值范围和数值的精确度取决于什么?
答:当采用一般浮点数格式表示浮点数时,阶码和尾数都各包含一位符号位。浮点数的正负
由尾数的的符号位决定。当采用 IEEE754 格式时,通过数符就能判断出浮点数的正负。
浮点数能表示的数值范围和数值的精确度,分别取决于阶码的位数和尾数的位数。
8)简述 CRC 的纠错原理。
答:发送部件将某信息的 CRC 码传送至接收部件,接收部件收到 CRC 码后,仍用约定的生成
多项式 G(x)去除,若余数为 0,表示传送正确;若余数不为 0,表示出错,再由余数的值来
第 6 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
确定哪一位出错,从而加以纠正。具体的纠错原理如下:
(1)不论错误出现在哪一位,均要通过将出错位循环左移到最左边的一位上时被纠正;
(2)不为零余数的具有循环特性。即在余数后面补一个零除以生成多项目式,将得到
下一个余数,继续在新余数基础上补零除以生成多项式,继续该操作,余数最后能循环到最开
始的余数。
(3)CRC 就是利用不为零余数的循环特性,在循环计算余数的同时,将收到的 CRC 编码
同步移动,当余数循环到等于最左边位出错对应的余数时,表明已将出错的位移到 CRC 码的
最左边,对出错位进行纠错。
(4)继续进行余数的循环计算,并同步移动 CRC 编码,当余数又回到最开始的值时,纠
错后的 CRC 码又回到了最开始的位置。至此,完成 CRC 的纠错任务。
2.3 写出下列各数的原码、反码和补码。
0, 一 0, 0.10101, 一 0.10101, 0.11111, 一 0.11111, -0.10000, 0.10000
解:
x=0,则[+0]原 = 0.00…0 , [+0 ]反= 0.00…0,[+0]补 =0.00…0;
x=-0,则[-0]原 = 1.00…0,[-0]反 = 1.11…l,[-0]补 = 0.00…0;
x=0.10101,则[x]原 =0.10101,[x]反 =0.10101,[x]补 =0.10101;
x=一 0.10101,则[x]原 =1.10101,[x]反 =1.01010,[x]补 =1.01011;
x=0.11111,则[x]原 =0.11111,[x]反 =0.00000,[x]补 =0.00001;
x=一 0.11111,则[x]原 =1.11111,[x]反 =1.00000,[x]补 =1.00001;
x=-0.10000,则[x]原 =1.10000,[x]反 =1.01111,[x]补 =1.10000;
x=0.10000,则[x]原 =0.10000,[x]反 =0.10000,[x]补 =0.10000。
2.4 已知数的补码表示形式,求数的真值。
[x]补=0.10010, [x]补=1.10010, [x]补=1.11111,
[x]补=1.00000, [x]补=0.10001, [x]补=1.00001,
解:
[x]补=0.10010,则[x]原=0.10010,x=0.10010;
[x]补=1.10010,则[x]原=1.01101,x=-0.01101;
[x]补=1.11111,则[x]原=1.00000,x=-0;
[x]补=1.00000,则[x]原=1.11111,x=-0.11111;
[x]补=0.10001,则[x]原=0.10001,x=0.10001;
[x]补=1.00001,则[x]原=1.11110,x=-0.11110。
2.5 已知 x=0.10110,y=—0.01010,求:
[x/2]补, [x/4]补, [y/2]补, [2y]补
解: [x]原=0.10110=[x]反=[x]补,
所以[x/2]补=0.010110,[x/4]补=0.0010110;
[y]原=1.01010,[y]反=1.10101,[y]补=1.10110,
所以[y/2]补=1.110110,[2y]补=1.0110。
2.6 C 语言中允许无符号数和有符号整数之间的转换, 下面是一段 C 语言代码:
Int x =-1;
Unsigned u=2147483648;
第 7 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
Printf (“x=%u=%d\n”,x,x);
Printf (“u=%u=%d\n”,u,u);
给出在 32 位计算机中上述程序段的输出结果并分析原因.
解:x=4294967295=-1;u=2147483648=-2147483648
原因:x 是 int 型,在计算机中以补码形式存在。%u 以无符号输出,%d 输出真值,所以
x=4294967295=-1。
u=231 是一个无符号数,无溢出,由于首位为 1
%u 符号输出第一位为非符号位,所以是 2147483648
%d 第一位为符号位,所以是负数,取反加 1 还是 231 所以是-2147483648。
2.7 分析下列几种情况下所能表示的数据范围分别是多少
1)16 位无符号数;
2)16 位原码定点小数;
3)16 位补码定点小数;
4) 16 位补码定点整数;
解:
1)16 位无符号数:0 ~ 1111 1111 1111 1111,即 0 ~ 216-1=65535
2)16 位原码定点小数:1.111 1111 1111 1111 ~ 0.111 1111 1111 1111,即 -(1-2-15)~ 1-2-15
3)16 位补码定点小数:1.000 0000 0000 0000 ~ 0.111 1111 1111 1111,即 -1 ~ 1-2-15
4) 16 位补码定点整数:1000 0000 0000 0000 ~ 0111 1111 1111 1111,即 -215 ~ 215-1
2.8 用补码表示 8 位二进制整数,最高位用一位表示符号(即形如 x0x1x2x3x4x5x6x7)时,模应
为多少?
解:因为 8 位二进制数补码的表示范围为:-128~127 一共有 256 个数,所以模为 256。
2.9 用 IEEE754 32 位浮点数标准表示十进制数
a)
b)3.1415927 c)64000
解:
a) 首先分别将整数和分数部分转换成二进制数:
=-110.101
移动小数点,使其变成 1.M 的形式:
-110.101=-1.10101*22
于是得到:
S=0, e = 2,E= 10+01111111 = 10000001,M = 10101
最后得到 32 位浮点数的二进制存储格式为:
1100 0000 1101 0100 0000 0000 0000 0000=(C0D40000) 16
b) 首先分别将整数和分数部分转换成二进制数:
3.1415927=11.00100100001111110110101
移动小数点,使其变成 1.M 的形式
11.00100100001111110110101=1.100100100001111110110101×2
第 8 页 共 70 页
856856