计算机组成原理课后题答案解析清华大学出版秦磊华吴非·· 下载本文

第一章 系统给概论 习 题 一 1.l 解释下列名词

摩尔定律:对集成电路上可容纳的晶体管数目、性能和价格等发展趋势的预测,其主要内容是:成集电路上可容纳的晶体管数量每18个月翻一番,性能将提高一倍,而其价格将降低一半。

主存: 计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取。

控制器:计算机的指挥中心,它使计算机各部件自动协调地工作。

时钟周期:时钟周期是时钟频率的倒数,也称为节拍周期或T周期,是处理操作最基本的时间单位。

多核处理器:多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。 字长:运算器一次运算处理的二进制位数。 存储容量: 存储器中可存二进制信息的总量。 CPI:指执行每条指令所需要的平均时钟周期数。

MIPS:用每秒钟执行完成的指令数量作为衡量计算机性能的一个指标,该指标以每秒钟完成的百万指令数作为单位。

CPU时间:计算某个任务时CPU实际消耗的时间,也即CPU真正花费在某程序上的时间。 计算机系统的层次结构:计算机系统的层次结构由多级构成,一般分成5级,由低到高分别是:微程序设计级,机器语言级,操作系统级,汇编语言级,高级语言级。

基准测试程序:把应用程序中使用频度最高的那那些核心程序作为评价计算机性能的标准程序。

软/硬件功能的等价性:从逻辑功能的角度来看,硬件和软件在完成某项功能上是相同的,

称为软/硬件功能是等价的,如浮点运算既可以由软件实现,也可以由专门的硬件实现。 固件:是一种软件的固化,其目的是为了加快软件的执行速度。

可靠性:可靠性是指系统或产品在规定的条件和规定的时间内,完成规定功能的能力。产

品可靠性定义的要素是三个“规定”:“规定条件”、“规定时间”和“规定功能”。 MTTF:平均无故障时间,指系统自使用以来到第一次出故障的时间间隔的期望值。 MTTR:系统的平均修复时间。

MTBF:平均故障间隔时间,指相邻两次故障之间的平均工作时间。

可用性:指系统在任意时刻可使用的概率,可根据MTTF、MTTR和MTBF等指标计算处

系统的可用性。

1.2 什么是计算机系统的硬件和软件?为什么说计算机系统的硬件和软件在逻辑功能上是

等价的?

答:计算机硬件系统是指构成计算机系统的电子线路和电子元件等物理设备的总称。硬件是构成计算机的物质基础,是计算机系统的核心。计算机的硬件系统包含运算器、控制器、存储器、输入设备和输出设备等五大部件。

计算机软件是计算机中全部程序的集合。软件按其功能分成应用软件和系统软件两大类。

计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软件的扩充得以实现的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度来看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。

1.3 冯·诺依曼型计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部

件组成?各起什么作用?

答:冯诺依曼型计算机的基本思想是存储程序和程序控制,其中的“存储程序”是指将解题的步骤编写成程序,然后把存储存放到计算机的内存中,而“程序控制”是指控制器读出存放在存储器中的程序并根据该程序控制全机协调工作以完成程序的功能。

根据冯诺依曼型计算机的基本思想,计算机的硬件应该由运算器、控制器、存储器、输入/输出设备和总线组成。

各部件的作用:

运算器:对数据进行运算的部件。 存储器:存放程序和数据。

控制器:根据指令的功能控制构成计算机的各大功能部件协调工作,共同完成指令的功能。

输入设备:将外部信息输送到主机内部的设备。

输出设备:能将计算机内部的信息以不同并且相应的形式反馈给人们的设备。

总线:连接两个或多个设备(部件)的公共信息通路。

1.4 什么是计算机字长?它取决于什么?计算机字长统一了哪些部件的长度? 答:计算机的字长一般指一次参与运算数据的基本长度,用二进制数位的长度来衡量。

它取决于运算器一次运算处理的二进制位数。它是计算机的重要性能指标。常用的计算机字长有8位、16位、32位及64位。

一般与计算机内部寄存器、加法器、数据总线的位数以及存储器字长等长,因此,字长直接影响硬件的代价。

1.5 计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用? 答:计算机系统分成五级层次结构,第1级为微程序设计级、第2级为机器语言级、第3级为操作系统级、第4级为汇编语言级、第5级为高级语言级。

各层次的作用:

微程序级:为机器指令级提供机器指令的解释指行功能。

机器指令级:是软件系统和硬件系统的界面,一条机器指令的功能由微程序机器级的一段微型程序的功能实现。

操作系统级:调度计算机中的软件和硬件资源。

汇编语言级:它将用户编写的接近人类语言的程序,翻译成能在机器上运行的目标程序。

高级语言级:完全面向用户,是用户关心的目标,可执行各种用途的程序。

1.6 计算机内部有哪两股信息在流动?它们彼此有什么关系?

答:计算机中有两股信息在流动:一股是控制信息,即操作命令,它分散流向各个部件;一股是数据信息,它受控制信息的控制,从一个部件流向另一个部件,在流动的过程被相应的部件加工处理。

1.7 为什么说计算机系统的软件与硬件可以互相转化?

答:计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软件的扩充得以实现的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度来看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。

由于这样的等价性,所以可以说计算机系统的软件与硬件是可以互相转化的。 1.8 什么叫软件系统?它包含哪些内容?

答:一台计算机中全部程序的集合,统称为这台计算机的软件系统。软件按其功能分成应用软件和系统软件两大类。

应用软件是用户为解决某种应用问题而编制的一些程序。

系统软件用于对计算机系统的管理、调度、监视和服务等功能,常将系统软件分为以下六类:操作系统,言处理程序,标准程序库,服务性程序,数据库管理系统和算机网络软件。

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/(CPI1?106) = 600?106/(3.2?106)=187.5 CPI2= 2*0.4+ 0.2*(2+3+4)= 2.6 MIPS2= f/(CPI1?106) = 800?106/(2.6?106)=307.7

1.12 若某程序编译后生成的目标代码由A、B、C、D四类指令组成,它们在程序中所占比例分别为40%、20%、15%、25%。已知A、B、C、D四类指令的CPI分别为1、2、2、2。现需要对程序进行编译优化,优化后的程序中A类指令条数减少了一半,而其它指令数量未发生变化。假设运行该程序的计算机CPU主频为500MHZ。完成下列各题: 1)优化前后程序的CPI各为多少?

2)优化前后程序的MIPS各为多少?

3)通过上面的计算结果你能得出什么结论? 解:1)优化前:CPI=

?(CPIi?i?1nICi) = 1? 0.4 + 2? 0.2 + 2? 0.15 + 2? 0.25 IC= 1.6

优化后:A、B、C、D四类指令在程序中所占比例分别为1/4、1/4、3/16、5/16,

CPI=

?(CPIi?i?1nICi) = 1? 1/4 + 2? 1/4 + 2? 3/16 + 2? 5/16 IC= 1.75

时钟频率2)根据 公式MIPS =CPI ? 106得

优化前:MIPS = (500?106)/(1.6?106) = 312.5 优化后:MIPS = (500?106)/(1.75?106) = 285.7

3)优化后,A类指令条数减少,造成计算机的CPI增加,MIPS减少。这样的优化虽然减少了A类指令条数,却降低了程序的执行速度。

第二章 数据表示方法 习 题 二

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)为什么计算机中采用补码表示带符号的整数?

答:采用补码运算具有如下两个特征:

(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,表示出错,再由余数的

值来确定哪一位出错,从而加以纠正。具体的纠错原理如下:

(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;

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)?65 b)3.1415927 c)64000

8解:

a) 首先分别将整数和分数部分转换成二进制数:

5?6=-110.101 8移动小数点,使其变成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 于是得到:

S=0, e = 1,E= 1+01111111 =10000000,M = 10010010000111111011010 最后得到32位浮点数的二进制存储格式为:

0100 0000 0100 1001 0000 1111 1101 1010=(40490FDA)16

c) 首先将6400转换成二进制数: 64000=1100100000000

移动小数点,使其变成1.M的形式 1100100000000=1.100100000000×212 于是得到:

S=0, e = 12,E= 1100+01111111 =10001011,M = 1001 最后得到32位浮点数的二进制存储格式为:

0100 0101 1100 1000 0000 0000 0000 0000=(45C80000) 16

2.10 求与IEEE754 32位浮点数43940000H对应的十进制数。 解:

43940000H=(0100 0011 1001 0100 0000 0000 0000 0000)2 S=0,E=(10000111)2-127=8,M=1.00101 所以表示数为100101000,对应的十进制数为296。

2.11 求32位 IEEE754 浮点数能表示的最大数和最小数。

解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大)

31 30 23 22 0 SE M (1) 最大数的二进制表示:

0 11111110 11111111111111111111111 即 2127(2-2-23) (2) 最小数的二进制表示:

1 11111110 11111111111111111111111 即 - 2127(2-2-23)

2.12 设有两个正浮点数:N1=2m×M1,N2=2n×M2。

(1)若m>n,是否有N1>N2?

(2)若M1和M2是规格化的数,上述结论是否正确? 解:(1)不一定。

例如,N1=23×0.001,N2=22×0.01,此时m>n,却有N1=N2。 再如,N1=23×0.001,N2=22×0.1,此时m>n,却有N1<N2。 (2)正确。

因为浮点数规格化,要求尾数的最高位为非0数码,即当尾数的值不为零时,其绝对值应大于或等于(1/2)10。

那么M1和M2都必须是0.1× × … ×的形式。这时,若m>n,则一定有N1>N2。

2.13 设二进制浮点数的阶码为3位,尾数是7位。用模2补码写出它们所能表示的最大正数、最小正数、最大负数和最小负数,并将它们转换成十进制数。 解:

补码

真值

最大正数: 011;0.111111, 23×(1-2-6) 最小正数: 101;0.000001, 23×2-6 最大负数: 101;1.111111, -23×2-6 最小负数: 011;1.000000, -23×(1-2-6)

2.14 将下列十进制数表示成浮点规格化数,阶码4位,尾数10位,各含1位符号,阶码

和尾数均用补码表示。

(1)57/128 (2) —69/128

解:(1)57/128=(0.0111001)2,记x=0.0111001,则[x]原=[x]反=[x]补=0.0111001, 规格化:[x]补=0.111001*2-1

阶码的原码为:1001,因此补码为:1111 尾数为:0111001000

表示成浮点规格化数:1111 0111001000

(2)-69/128=(-0.1000101)2,记x=-0.1000101,则[x]原=1.1000101,[x]反=1.0111010,[x]补=1.0111011,

无需规格化,阶码为0000,尾数为1011101100 表示成浮点规格化数:0000 1011101100

2.15 设有效信息为01011011,分别写出奇校验码和偶校验码。如果接收方收到的有效信息为01011010,说明如何发现错误。 解:奇偶校验位分别为:0和1, 奇校验码:010110110 偶校验码:010110111

如果采用奇校验,则发送方发出的奇校验码x=010110110(前8位是有效信息位,最后一位是校验位),

如果接收方收到的x=010110100 (只有1位出错,最后一个0是校验位),

接收方按奇校验方式根据01011010计算得到的验位C’=1 ,与从信息中读到得校验码的取值不同,表明传送的信息发生了错误。 如果采用偶校验,利用相似的方法可以发现错误。

2.16由 6 个字符的 7 位 ASCII 编码排列,再加上水平和垂直偶校验位构成如表2.23的行列结构(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位)

表2.23 ASCII码交叉校验

字符 3

7 位 ASCII 码

0 X1 X2 0

0 0

1 1

0 0 0

1 0 1 1 0

1 X3 1 1 X8 1 1

HP 0 1 0 1 0 1 X12

Y1 1 0 + X4 1

Y2 0 1 X5 X6 1 D =

1 0

0 X7 1

1 1

0 X9 1

1

1 X10 1 X11

VP 0 0

则 X1 X2 X3 X4 处的比特分别为 _1110_; X5 X6 X7 X8 处的比特分别为 _1000_; X9 X10 X11 X12 处的比特分别为 _1011_; Y1 和 Y2 处的字符分别为 __I__ 和 __7__。

解答思路:利用交叉奇/偶校验原理来确定各个X值,再查询ASCII码表获知 Y1 和 Y2是什么字符。

2.17 设8位有效信息为01101ll0,试写出它的海明校验码。给出过程,说明分组检测方式,

并给出指误字及其逻辑表达式。如果接收方收到的有效信息变成01101111,说明如何定位错误并纠正错误。

解:被检验位有8位,设检验位有r位

因为:8+r<=2r -1 r=4;

设四位分别为P1,P2,P3,P4 海明码为:P1P20P3110P41110 P1:3,5,7,9,11 P2:3,6,7,10,11 P3:5,6,7,12 P4:9,10,11,12 所以 P1=1,P2=1 P3=0 P4=1 海明码为:110011011110 指错位G1:1,3,5,7,9,11 G2:2,3,6,7,10,11 G3:4,5,6,7,12 G4:8,9,10,11,12 G1=0,G2=0,G3=0,G4=0 图略。

2.18 设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环校验码。若接收方收到的数据信息x’=1101,说明如何定位错误并纠正错误。

M(x)?X31001000011??1111?解:作模二除法:

G(x)11011101所以循环码为:1001011。 若接收到的数据信息x’=1101,

1101011011?1000?,所以是第2位出错,将第2位

G(x)1101的1改为0即可。

第三章 运算方法和运算器 习 题 三

3.1解释下列名词

变形形补码:即用两个二进制位来表示数据的符号位,其余与补码相同。 溢出:运算结果超出数据类型所能表示数据范围的现象称为溢出。

阵列乘法:采用类似手工乘法运算的方法,用大量与门产生手工乘法中的各乘积项,同时将大量一位全加器按照手工乘法算式中需要进行加运算的各相关项的排列方式组成加法器阵列。

恢复余数除法:比较被除数(余数)与除数的大小是用减法实现的。对原码除法而言,由于操作数以绝对值的形式参与运算,因此,相减结果为正(余数的符号位为0)说明够减,商上1;相减结果为负(余数的符号位为1)说明不够减,商上0。

由于除法通过减法实现,当商上1时,可将比较数据大小时的减法操作与除法操作中的减法操作合并,即商上1后继续后面的除法操作。商上0时表明不够减,但因比较操作

时已经实施了一次减法,因此,需要对执行比较操作后的结果加上除数,既将余数还原成比较操作前的数值,这种方法就称为恢复余数法。

不恢复余数除法:又称加减交替法,是对恢复余数法的改进。不恢复余数法的特点是不够减时不再恢复余数,而根据余数的符号作相应处理就可继续往下运算,因此运算步数固定,控制简单,提高了运算速度。

阵列除法:类似于阵列乘法器的思想,为了加快除法的执行速度,也可以采用阵列除法器来实现除法。为简化运算及阵列除法器的结构,对参加运算的数据进行适当的处理,使其以正数的形式参加运算。

行波进位:多位进位之间存在高位进位的产生依赖低位进位的一种进位方式。 并行进位:高、低进位之间不存在具有依存关系,而是同时计算的进位方式。

算术移位:分为算术左移和算术右移。其中算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0,当符号位发生改变时表明发生了溢出。算术右移时,符号位保持不变,其余各位依次右移,最右边一位移出,将符号位拷贝到左边空出的位,一次移位相当于除2。 逻辑移位:逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补\。 逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。

对阶:使阶码相等的过程,对阶的时一般采取小的阶码向大阶码看齐的方式。

规格化:就是使浮点数的运算结果中,将尾数从非规格化数变成规格化数的过程。根据尾数形式的不同,规格化可分为左移规格化和右移规格化。

3.2回答下列问题:

1)为什么采用并行进位能提高加法器的运算速度?

答:由于并行进位电路能很快产生各位的进位信号,使得加法器的速度大大提高。 2)如何判断浮点数运算结果是否发生溢出?

答:由于溢出与数据的表示范围有关,而浮点数的阶码影响到其数据表示的范围,因此,浮点数的溢出是通过接码的是否溢出为判断标志。对于采用双符号位的阶码而言,当双符号位不同时表示浮点数发生溢出,否则则未发生溢出。

3)如何判断浮点数运算结果是否为规格化数?如果不是规格化数,如何进行规格化?

答:当尾数采用补码表示时,若运算结果不是11.0××…×或00.1××…×的形式时,结果就不是规格化数。则应进行相应的规格化处理:

?当尾数符号为01或10时,需要向右规格化,且只需将尾数右移一位,同时将结果的阶码值加1。

?当尾数运算结果为11.1××…×或00.0××…×时需要左移规格化,而且左移次数不固定,与运算结果的形式有关。

左规的方法是尾数连同符号位一起左移位、和的阶码减1,直到尾数部分出现11.0或00.1的形式为止。

4)为什么阵列除法器中能用CAS的进位/借位控制端作为上商的控制信号?

答:阵列除法器利用不恢复余数的除法,当商上1的时候,会产生进位,当商上0时,不产生进位,进位信号与上商信号是相同的,所以可以用CAS的进位/借位控制作为上商的控制信号。

5)移位运算和乘法及除法运算有何关系? 答:移位运算是乘除法中的基本运算。

3.3 已知x和y,用变形补码计算x+y,并判断结果是否溢出。

(1) x=0.11010,y=0.101110 (2) x=0.11101,y=-0.10100 (3) x=-0.10111,y=-0.11000 解:(1)[x+y]补=01.100010,溢出。 (2)[x+y]补=00.01001,未溢出。 (3)[x+y]补=10.10001,溢出。

3.4 已知x和y,用变形补码计算x-y,并判断结果是否溢出。 (1) x=0.11011,y=0.11101 (2) x=0.10111,y=0.11110 (3) x=-0.11111,y=-0.11001 解:(1)[x-y]补=11.11110,未溢出。 (2)[x-y]补=11.11001,未溢出。 (1)[x-y]补=11.11001,未溢出。

3.5 设移码用6位表示(包含2位符号位),求[x ? y]移 (1)x = -6 , y = -3 (2)x=7 , y =11 (3)x=-3 , y =-12

解:(1)[x]移=001010,[y]移= 001101 [-y]移=110011 [Y]补= 111101 [X]移 + [y]移=010111,

[X]移 + [Y]补= 001010+111101 =000111 根据移码加法公式[x + y]移=[X]移 + [Y]补= 000111

[-Y]补= 000011

根据移码加法公式及溢出判断规则,双符号位为00,结果为负,未溢出。 根据移码的减法公式:

[x-y]移 = [x]移 + [-y]补 = 001010 + 000011 = 001101

根据移码溢出判断规则,双符号位为00,结果为负,未溢出。

(2)[x]移=110111, [y]补= 001011 [-y]补=110101

根据移码加法公式[x + y]移=[X]移 + [Y]补= 010111+ 001011 = 100010

(根据教材中说明的当以译码和补码两种数据表示进行运算时,要将移码第一符号位表示为0)

根据移码溢出判断规则,双符号位为10,结果为正,且发生溢出。

根据移码的减法公式:

[x-y]移 = [x]移 + [-y]补 = 010111+ 110101 = 001100

根据移码溢出判断规则,双符号位为00,结果为负,未溢出。

(3)略,请参照本题前两小题的思路和方法求解即可

3.6用原码一位乘法计算x×y=? (1) x=-0.11111,y=0.11101 (2) x=-0.11010,y=-0.01011 解:(1)

部分积 乘数(y) 判断位 说明

00.00000 yf.11101 P0=0 +00.11111

00.11111

→00.01111 1 yf.1110 +00.00000 00.01111

→00.00111 11 yf.111 +00.11111 01.00110

→00.10011 011 yf.11 +00.11111 01.10010

→00.11001 0011 y.1

+00.11111

01.11000 →00.11100

00011 |x|·|y|

由于 Pf=xf?yf=0?1=1

右移一位,得P1

右移一位,得P2

右移一位,得P3

右移一位,得P4

yf 右移一位,得P5=

所以 x·y = ?0.1110000011 (2)

部分积

乘数(y) 判断位 ↑

00.00000 yf. 01011 +00.11010 00.11010

→00.01101 0 yf.0101 +00.11010 01.00111

→00.10011 10 yf.010 +00.00000 00.10011

→00.01001 110 yf.01 +00.11010 01.00011

说明

P0=0 右移一位,得P1

右移一位,得P2

右移一位,得P3

→00.10001 1110 y.0

00.10001 →00.01000

+00.00000

右移一位,得P4

11110 yf 右移一位,得P5=|x|·|y|

由于 Pf=xf?yf=1?1=0 所以 x·y = 0.0100011110

3.7用补码一位乘法计算x×y=? (1) x=0.10110,y=-0.00011 (2) x=-0.011010,y=-0.011101 解:(1)

[x]补=0.10110, [-x]补=1.01010, [y]补=1.11101

部分积 乘数 ynyn+1 说明 ??

00.00000 1.111010 yn+1=0

+11.01010 yn+1yn=01,加[-x]

11.01010

→ 11.10101 0 1.11101 右移一位,得P1 +00.10110 yn+1yn=10,加[x]补 00.01011 →00.00101 10 1.1110 右移一位,得P2

+11.01010 yn+1yn=01,加[-x]补 11.01111

→11.10111 110 1.111 右移一位,得P3

+00.00000 yn+1yn=11,加0

11.10111

→11.11011 1110 1.11 右移一位,得P4

+00.00000 yn+1yn=11,加0 11.11011

→11.11101 11110 1.1 +00.00000

右移一位,得P5

yn+1yn=11,加0

11.11101 11110 最后一步数据不移位

所以 [x·y]补=1.1110111110

(2) [x]补=1.100110, [-x]补=0.011010, [y]补=1.100011

部分积 乘数 ynyn+1 说明 ??

00.000000 1.1000110 yn+1=0

+00.011010 yn+1yn=01,加[-x]补

00.011010 →00.001101

0 1.100011 右移一位,得P1

yn+1yn=11,加0

+00.000000

00.001101 →00.000110 10 1.10001 右移一位,得P2 +11.100110 yn+1yn=10,加[x]补

11.101100

→11.110110 010 1.1000 右移一位,得P3 +00.000000 yn+1yn=00,加0

11.110110

→11.111011 0010 1.100 右移一位,得P4

+00.000000 yn+1yn=00,加0 11.111011

1.10 右移一位,得P5 yn+1yn=01,加[-x]补

→11.111101 10010

+00.011010

00.010111

→00.001011 110010 1.1 右移一位,得P6

+00.000000

yn+1yn=00,加0 最后一步数据不移位

00.001011 110010

所以 [x·y]补=0.001011110010

3.8用原码不恢复余数法和补码不恢复余数法计算x÷y =? (1) x=0.10101,y=0.11011 (2) x=-0.10101,y=0.11011 解:(1)[y]补=0.11011,[-y]补=1.00101

源码不恢复余数法:

被除数/余数 商寄存器 上商位 说明

00.10101 +[-y]补 11.00101 (x-y)比较 11.11010 0 r0<0,商上0 ← 11.10100 0 左移一位

+1 余数为负,加y比较 00.11011 00.01111 1 r1>0,商上1 ← 00.11110 0.1 左移一位

+[-y]补 11.00101 余数为正,减y比较

1 00.00011 1 r2>0,商上1 ← 00.00110 0.11 左移一位

+[-y]补 11.00101 余数为正,减y比较

0 11.01011 0 r3<0,商上0 ← 11.10110 0.110 左移一位

+ 00.11011 余数为负,加y比较 1 00.00001 0.1101 1 r4>0,商上1,左移一位

← 00.00010

余数为正,减y比较 r5<0,商上0,只移商

+[-y]补 11.00101

11.00111

0.11010

[x]原÷[y]原=[Q]原=0.11010,余数[r]原=1.00111-101。

补码不恢复余数法:

[y]补=0.11011,[-y]补=1.00101

被除数/余数 商 上商位 00.10101 +[-y]补 11.00101 11.11010 0 ← 11.10100 0 +[y]衬 00.11011 00.01111 1 ← 00.11110 0.1 +[-y]补 11.00101 00.00011 1 ← 00.00110 0.11 +[-y]补 11.00101 11.01011 0 ← 11.10110 0.110 +[y]衬 00.11011 00.10001 1

说明 被除数与除数同号,减除数比较 余数r0与除数异号,商上0

左移一位,商从上商位移入商寄存器 加除数比较

余数r1与除数同号,商上1 左移一位 减除数

余数r2与除数同号,商上1 左移一位 减除数比较

余r3与除数异号,商上0 左移一位 加除数比较

余r4与除数同号,商上1

← 11.10110 0.1101 +[-y]补 11.00101 11.11011 0.11010

左移一位 减除数比较

余r3与除数异号,商上0

故[x÷y]衬= 0.11010,余数[r]补=1.0000011011 因未除尽,商为正,因此商不需要校正。

商为正,余数与被除数异号,则应将余数加上除数进行修正才能获得正确的余数,为: (1.11011+0.11011)*0.00001=0.0000010110

(2)[y]补=0.11011,[-y]补=1.00101 源码不恢复余数法:

被除数/余数 商寄存器 上商位 说明 00.10101 +[-y]补 11.00101 (x-y)比较 11.11010 0 r0<0,商上0

← 11.10100 0 左移一位

+ 00.11011 余数为负,加y比较 00.01111 1 r1>0,商上1 ← 00.11110 0.1 左移一位

+[-y]补 11.00101 余数为正,减y比较

1 00.00011 1 r2>0,商上1 ← 00.00110 0.11 左移一位

+[-y]补 11.00101 余数为正,减y比较

0 11.01011 0 r3<0,商上0 ← 11.10110 0.110 左移一位

+ 00.11011 余数为负,加y比较 1 00.00001 0.1101 1 r4>0,商上1,左移一位

← 00.00010

余数为正,减y比较 r5<0,商上0,只移商

+[-y]补 11.00101

11.00111

0.11010

[x]原÷[y]原=[Q]原=-0.11010,余数[r]原=1.00111-101。

补码不恢复余数法:

[y]补=1.01011,[y]补=0.11011,[-y]补=1.00101

被除数/余数 商 上商位 说明 11.01011

+[y]补 00.11011 被除数与除数异号,加除数比较 00.00110 1 余数r0与除数同号,商上1

← 00.01100 1 左移一位,商从上商位移入商寄存器 +[-y]补 11.00101 减除数比较

11.10001 0 余数r1与除数异号,商上0

← 11.00010 1.0 左移一位 +[y]补 00.11011 加除数

11.11101 0 余数r2与除数异号,商上0

← 11.11010 1.00 左移一位 +[y]补 00.11011 加除数比较

00.10101 1 余r3与除数异号,商上1

← 00.01010 1.001 左移一位 +[-y]补 11.00101 减除数比较

11.01111 0 余r4与除数同号,商上0

← 11.10110 1.0010

+[y]补 00.11011 1 00.10001 1.00101

故[x÷y]衬= 1.00101,余数[r]补=0.0000010001

因未除尽,商为负,因此商需要校正。[x÷y]衬=1.00101+0.00001=1.00110 商为负,余数与被除数同号,余数不需要处理。

3.9设数的阶码为3位,尾数为6位(不包括符号位)按机器补码浮点运算步骤,完成[x+y]补

左移一位 加除数比较

余r3与除数同号,商上1

(1) x=2011×0.100100,y=2010×(-0.011010) (2) x=2-101×(-0.100010),y=2-100×(-0.010110)

解:1、(a)对阶 [x]补=00011 00100100 [y]补=00010 11100110

阶差 △E=Ex-Ey=00001,阶差为1 将[y]补尾数右移一位得到00011 11110011

(b)相加 [x]补+[y]补=00011 00010111,尾数相加为00010111

(c)结果规格化 由于尾数符号位跟最高有效位相同,需要左规:

规格化结果为:[x]补+[y]补=00010 00101110

(d)不需舍入,无溢出

则:[x]补+[y]补=00010 00101110

2、(a)对阶 [x]补=11011 11011101 [y]补=11100 11101010

阶差 △E=Ey-Ex=00001,阶差为1 将[x]补尾数右移一位得到11100 11101111

(b)相加 [x]补+[y]补=11100 11011001,尾数相加为11011001 (c)结果规格化 由于尾数符号位跟最高有效位不相同,不需要左规:

(d)不需舍入,无溢出

3.10采用IEEE754单精度浮点数格式计算 (1)0.625+(-12.25)

(2) 0.625 – (- 12.25)

解:(1)0.625=(0.101)2=(0 01111110 01000000000000000000000)2

-12.25=(1 10000010 10001000000000000000000)2

对阶 01111110-10000010=-00000100 尾数计算

将0.625的尾数右移4位,计算得到: 0.000101+(-1.100010)=-1.011101

则0.625+(-12.25)=(1 10000010 01110100000000000000000)2

=(C13A0000)16

(2)0.625=(0.101)2=(0 01111110 01000000000000000000000)2

-12.25=(1 10000010 10001000000000000000000)2

对阶 01111110-10000010=-00000100 尾数计算

将0.625的尾数右移4位,计算得到: 0.000101-(-1.100010)=1.100111

则0.625+(-12.25)=(0 10000010 10011100000000000000000)2

=(414E0000)16

3.11 用“与或非”门设计一个4位并行进位的加法器。 解:C1=Y1+X1C0= Y1?X1C0

C2=Y2+X2C1 = Y2 + X2Y1 + X2X1C0 = Y2 ? X2Y1 ? X2X1C0 C3=Y3+X3C2 = Y3+ X3Y2 + X3X2Y1+ X3X2X1C0= Y3? X3Y2 ? X3X2Y1? X3X2X1C0 C4=Y4+X4C3 = Y4+ X4Y3+ X4X3Y2 + X4X3X2Y1+ X4X3X2X1C0 =Y4? X4Y3? X4X3Y2 ? X4X3X2Y1? X4X3X2X1C0 电路图略

3.12 利用上题结果,设计一个4位运算器。运算器中包括加法器、两个寄存器、输入选择和输出控制电路。要求输入选择电路能接收选择总线或寄存器中的数据,能对两个寄存器中的数以原码和补码两种形式送入加法器,并能对加法器的输出进行直接传送、左移一位和右移一位传送,然 后以将结果送寄存器或总线。

本题略

第四章 存储系统 习 题 四

4.l 解释下列名词:

存储单元:保存数据的基本内存单元。根据保存内容的大小,一般可分位存储单元,字存储

单元等。存储单元一般应具有存储数据和读写数据的功能,每个单元有一个地址,并按地址访问。

存取时间:又称为存储器的访问时间,是指启动一次存储器的操作(读或写分别对应存与取) 到该操作完成所经历的时间。

存取周期:连续启动两次访问操作之间的最短时间间隔。

存储器带宽:单位时间内存储器所能传输的信息量,常用的单位包括位/秒或字节/秒。 静态存储器:存储体以静态MOS存储元为基本单元组成的存储器称为静态存储器。 动态存储器:存储体以动态存储元为基本单元组成的存储器称为动态存储器。

刷新:动态存储单元中,为使所存信息能长期保存,在电容电荷泄露完之前定时地补充电荷 的过程。

猝发式读:只需给出块的起始地址,然后对固定块长度的数据一个接一个地读出的快速存储器读

方式。即一块数据的读出只需要给出一个地址的数据读取方式。

多模块交叉存储器:由多个存储容量相同,读写速度相同或相近的多个存储模块构成容量更

大的存储器,其中每个存储模块具有各自独立的地址寄存器、地址译码器、驱动电路和读写控制电路,根据存储模块的组织方式不同,又可分为低位交叉和高位交叉两种组织方式。。

高速缓冲存储器:为缓解快速的CPU与慢速主存之间的速度差异,在CPU和主存之间插

入的一至多级速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高。

双端口存储器:指同一个存储器具有两组相互独立端口的存储器,每个端口有各自独立的数 据端口、地址端口以及读/写控制端口、片选端口等,每个端口可独立进行 读写操作。

相联存储器:是一种按内容访问的存储器(Content Addressable Memory:CAM),用于提

高查找信息的速度。在计算机系统中,相联存储器主要用于虚拟存储器中存放段表、页表和快表以及高速缓冲存储器中的查找。

时间局部性:指当程序访问一个存储位置时,有很大的可能性程序会在不久的将来再次访问 同一位置,程序的循环结构和过程调用就很好地体现了时间局部性。 地址映射:指把主存地址空间映射到Cache的地址空间,即把存放在主存中的程序或数据按

照某种规则装入到Cache,并建立两者之间地址的对应关系。

组相联映射:地址映射时,主存数据块只能映射到索引字段所指向的Cache特定组(其中的

行可任选);地址变换时,需查找的范围也只是索引字段所指向的特定Cache

组的所有行。

直接映射:地址映射时,主存数据块只能映射到索引字段所指向的Cache行中保存;地址

换时,需查找的范围也只涉及索引字段所指向的特定Cache行。

全相联映射:主存地址不划分索引字段,因此地址映射时,主存数据块可以映射到Cache 的任意行中;地址变换时,需查找所有的Cache行。

命中率:指CPU访问存储系统时,命中Cache的次数占总访问次数的比铝。设NC为某程

序运行期间命中Cache的次数,Nm为从主存中访问信息的次数,则 命中率(hit ratio)H定义为:

地址复用:可以从不同的角度来理解该概念。第一种方式是指CPU的地址线在一次存储访问过程中多次使用,每次作为访问地址的不同部分使用;另一种是指地址线在一次存储访问的不同阶段分别作为地址线和数据线使用,即地址总线在存储访问的不同时间段表现出不同的功能。

字扩展:用多位满足一定要求的存储芯片构成容量更大的存储器。 位扩展:用多片存储芯片构成位数更多的存储器。

虚拟存储器:是一种解决主存容量不足的存储管理机制,处于存储系统层次结构中“主存-辅

存”存储层次。在这种机制下,通过增加部分软件(如操作系统)和必要的硬件(如地址映射与转换机构、缺页中断结构等),使辅存和主存构成一个有机的整体,就像一个单一的、可供CPU直接访问的大容量主存,程序员使用比主存空间大的逻辑地址空间编程序,作业运行时,主需要将作业当前执行的部分调入内存,而其余部分仍然存放在磁盘中,从而减少对主存的消耗。

页表(慢表):是一张保存虚拟页号和物理页号(也称实页号)之间对应关系的表格。 页表项:页表的表项,每一个表项由有效位和物理页号两部分构成,用于实现虚拟地址与物

理地址之间的转换。

TLB(快表):又称为转换旁路缓冲器(Translation Look- aside Buffer),为了降低虚拟存储器

地址转换的开销,根据局部性原理,将页表的一部分装入MMU或Cache中,从而减少虚拟地址与物理地址之间转换时访问内存的次数。

LRU:LRU(Least Recently Used)算法是将近期内长久未被访问过的行换出。 LFU:LFU(Least Frequently Used)算法将一段时间内被访次数最少的那行数据换出。 存储保护:为了保证计算机系统能正确运行,当多个用户共享主存时,应防止由于一个用户 程序出错而破坏其他用户的程序和系统软件,以及一个用户程序不合法地访问不

是分配给它的主存区域。

Cache一致性:指保存在cache中的数据与保存在主存相关单元的数据相同。

写回法:当CPU对Cache写命中时,只修改Cache的内容不立即写入主存,只当Cache行被替换时才将Cache中的数据写回主存。

写直达法:也称写贯通法或全写法,其基本思想是当Cache写命中时,同时对Cache和主存

中同一数据块进行修改;当cache写未命中时,直接向主存写入新的信息,但此时是否将修改过的主存块调入Cache,写直达法却有两种选择。一种是将数据调入Cache,称为写分配法WA(Write-Allocate)。另一种是不取主存块到Cache,而是直接写主存,称为非写分配法NWA(No-Write-Allocate)。

边界对齐的数据存放:指半字、字、双字都按它们各自地址所指定的空间进行存储,而不是 随意存放。

大端:存储器的低字节地址单元中存放的是数据的最高字节,高字节地址单元中存放的是数 据的最低字节。

RAID:廉价冗余磁盘阵列RAID(Redundant Array of Inexpensive Disk)或独立冗余磁盘阵

列RAID(Redundant Array of Independent Disk),简称磁盘阵列,它将多块独立的普通磁盘按照一定的方式组织与管理,构成一个大容量、高速度、高容错的存储系统。 寻道时间:将磁头定位到指定磁道上所需的时间。

旋转时间:磁头定位到指定磁道后至指定的记录移到磁头下的时间。

4.2 回答下列问题:

1)计算机系统中采用层次化存储体系结构的目的是什么? 层次化存储体系结构如何构成? 答:采用层次化存储体系的目的包括两方面:其一是解决快速的CPU和慢速的主存之间的速度差异;其二是解决主存容量不够大的问题.

存储系统的分级结构由Cache、主存和辅助存储器三级结构构成。

其理论基础是时间局部性原理和空间局部性原理,Cache—主存存储层次解决了主存速度不快的问题;而主存-辅存存储层次解决了主存容量不足的问题。 2)为什么在存储器芯片中设置片选输入端?

答:由于存储芯片的容量及字长与目标存储器的容量及字长之间可能存在差异,应用存储芯片组织一定容量与字长的存储器时,一般可采用位扩展、字扩展、字位同时扩展等方法来组织。这样就会使用多个存储芯片,从而要设置片选输入端来选择正确的存储芯片来进行操作。 3)动态MOS存储器为什么要刷新?如何刷新?

答:动态存储单元中,信息以电荷形式存储在T1或T2管的栅极电容中。由于电容容量小,所存电荷会在一段时间后逐渐泄漏(一般为ms级),为使所存信息能长期保存,需要在电容电荷泄露完之前定时地补充电荷,这一过程称为刷新。 刷新的方法:

①刷新方式:集中刷新、分散刷新和异步刷新。前者存在CPU死时间;分散刷新由于刷新

次数过多,降低了存储器的速度;异步刷新是前两者的折中。

②刷新按行进行,因此设计刷新电路时需要知道动态存储器的内部行、列结构。 ③刷新地址由刷新地址计数提供。

4)试述多体交叉存储器的设计思想和实现方法。

答:多体交叉存储器由多个存储模块构成,这些模块的容量和存取速度相同,具有各自独立的地址寄存器、地址译码器、驱动电路和读写控制电路。根据对多各模块编址方式的不同,又可分为高位多体交叉和低位多体交叉两种方式。

(1)高位交叉:按存储器地址的高位地址划分模块,同一存储体内的地址是连续的。当多个目标同时访问存储器时(如CPU和DMA设备同时访问存储器),如果访问的地方范围处于不同的存储芯片,则提供并行访问。

(2)低位交叉:按存储器地址的低位地址划分模块,同一存储体内的地址不相邻,相邻地址处在不同存储体中。CPU可同时启动多个存储体,并进行并行访问。 5)为什么说Cache对程序员是透明的?

答:因为在程序员看来,数据是在内存和辅存之间进行交换的,程序员感觉不到中间层cache 的存在。

6)直接映射方式下为什么不需要使用替换算法?

答:因为在直接映射方式中,一个内存块只能固定的映射到cache中的特定行,当有新的主存块调入时, cache特定行中的内容必须调出,因此不需要替换算法去选择替换掉哪一块。 7)为什么要考虑Cache的一致性?

答:正常情况下,cache中的数据是主存数据的副本,当两者不一致时可能导致程序结果不正确,因此,必须考虑并设法保证Cache的一致性。 8)替换算法有哪几种?各有何优缺点?

答:① 先进先出算法(FIFO)

基本思想:按照数据块进入Cache的先后决定替换的顺序,即在需要进行替换时,选择最先

被调入Cache中的块作为替换块。这种方法要求为每块记录它们进入Cache的先

后次序。

优点:FIFO算法系统开销较小。

缺点:是不考虑程序访问的局部性,可能会把一些需要经常使用的块(如循环程序块)也作 为最早进入Cache的块而替换掉,因此,可能导致Cache的命中率不高。 ② 近期最少使用(LRU)算法

基本思想:将近期内长久未被访问过的行换出。为此,每行设置一个计数器,cache每命中

一次,命中行计数器清零,其它各行计数器增1,因此它是未访问次数计数器。当需要替换时,比较各特定行的计数值,将计数值最大的行换出。

优点:这种算法显然保护了刚调入Cache的新数据,符合cache工作原理,因而使cache有较高

的命中率。LRU算法硬件实现简单 ③ 最不经常使用(LFU)算法

基本思想:将一段时间内被访次数最少的那行数据换出。为此,每行设置一个计数器,新新 调入行的数据从0开始计数,每访问一次被访行的计数器增1。当需要替换时,对

这些特定行的计数值进行比较,将计数值最小的行换出。

缺点:一段期间访问情况不能严格反映近期访问情况。例如特定行中的A、B两行,A行在期

间的前期多次被访问而后期未被访问,但累积计数值很大,B行是前期不常用而后期却正被频繁访问,但可能由于累积计数小于A行而被LFU算法换出了。 ④ 随机替换算法

基本思想:需要进行替换时,从特定的行位置中随机地选取一行进行替换。 优点:硬件实现最容易,而且速度也比前几种策略快。

缺点:随意换出的数据很可能马上又要用,从而降低命中率和cache工作效率。但这个负面

效应随着cache容量增大会减少,模拟研究表明随机替换策略的功效只是稍逊于LFU和LRU。

9)不同RAID级各有哪些技术特点? 答:RAID0具有如下技术特点:

① 无数据冗余、无数据校验功能,因此它不具备数据的容错能力,数据的可靠性不高; ② 从RAID0的数据分布看,其本质上是多磁盘体交叉存储(类似于主存的多体交叉存储),多个磁盘可并行工作,存储系统的访问速度高。 ③ 条带的大小影响RAI0的性能与应用

a)条带大小对数据传输率的影响:小条带可将数据分配到更多的磁盘上,通过更多磁盘的并

行工作可提高存储系统的数据传输率。

b)条带对I/O请求响应速度的影响:在面向事物处理的应用中,可能同时存在上百个I/O请

求。此时,用户对I/O请求的响应时间比较关注。通过选者小而适中的条带,使得一次事务请求所传送的数据刚好集中在一个条带中,就能大大减少每个I/O请求的响应时间。

④ 磁盘利用率高,由于RAID 0中没有冗于数据,所有的磁盘存储空间都可保存工作数据。RAID0主要应用于对访问速度要求高,但对数据的可靠性要求不高的场合。

RAID 1具有如下技术特点:

① 每个磁盘都有一个镜象磁盘,图4.60中备份磁盘i就是磁盘i的备份盘;

② 读请求时,可由包含该数据的两个磁盘中的任一个提供;写请求时,需同时更新两个磁盘中相应的数据块;

③ 当一个磁盘被损坏时,数据仍可从另一磁盘获取。因此具有很高的安全性; ④ 存储系统中磁盘的利用率只有50%; ⑤ 无数据校验功能;

⑥ 对大批读请求来说,RAID 1可以从对应的盘中并行读出。但对于写,其效率并不高。 由于RAID1的读性能优于写性能,因此,RAID1主要应用于对数据的可用性要求高,且读操作所占比重较高的场合。 RAID2具有如下技术特点:

① 条带容量小,按位交叉存储,因此每个I/O请求都会访问到多个磁盘,导致I/O响应速度慢;

② 每个I/O请求都会访问到多个磁盘;对于单个读,所有磁盘同时读取,数据和相应的纠错码被送至控制器,若出现一位错,则由控制器立即识别并纠正。对于单个写,所有数据盘和校验盘都要进行写操作;

③ 采用海明校验,具有纠错和检错功能,数据的可靠性高;但控制复杂; ④ 冗余存放校验位,其数量与使用的数据盘的数量成正比;

⑤ 由于按位存取,在I/O过程中所有磁盘上的磁头在任何时刻都处于同一位置,具有空间并行处理能力,数据传输率高。

受成本的影响,目前RAID2很少被使用。

RAID 3的技术特点与RAID2类似,不同点主要有两方面,其一是采用奇偶校验而不是海明

校验,其二是校验盘只有一个,磁盘的利用率高。 RAID4的技术特点如下:

① 采用大条带区,I/O请求响应速度快,但数据传输率不高; ② 采用奇偶校验技术; ③ 各盘采用独立存取技术; ④ 磁盘利用率高;

⑤ 校验盘成为写访问的瓶颈。 RAID5具有如下技术特点:

① 采用大条带区,I/O请求响应速度快; ② 采用奇偶校验技术; ③ 各盘采用独立存取技术;

④ 校验信息在不同磁盘中循环存放,克服了RAID4中校验盘成为写瓶颈的不足; ⑤ 磁盘利用率高。

可以认为RAID5是对RAID4的改进,对大、小数据的读/写都具有较好的性能,具有比较广泛的应用。

RAID 6采用了按块交叉存放和双磁盘容错技术,相对RAID 5而言,其缺点是在组成中增加了一个磁盘,而且每次写都要进行P和Q两种校验以形成两个奇偶校验块。 10)说明磁表面存储器记录二进制信息的基本原理。

答:磁表面存储器利用磁性材料剩磁的两种磁化方向(S-N或者N-S)来记录信息。 写入信息时,在读/写线圈中通上脉冲电流(电流的方向不同,则写入的信息不同),磁头气隙处的磁场把它下面一小区域的磁层向某一方向磁化(S—N或 N—S),形成某种剩磁状态,因而记下一位二进制信息。磁层上这个被磁化的小区域,称为磁化单元。随着磁层的运