第一章 系统给概论 习 题 一 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
A B C D CPI1 2 3 4 5 CPI2 2 2 3 4
666
解:CPI1= 2*0.4+ 0.2*(3+4+5)= 3.2 MIPS1= f/(CPI1?10) = 600?10/(3.2?10)=187.5
666
CPI2= 2*0.4+ 0.2*(2+3+4)= 2.6 MIPS2= f/(CPI1?10) = 800?10/(2.6?10)=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?10)/(1.6?10) = 312.5
66
优化后:MIPS = (500?10)/(1.75?10) = 285.7
3)优化后,A类指令条数减少,造成计算机的CPI增加,MIPS减少。这样的优化虽然减少了A类指令条数,却降低了程序的执行速度。
66
第二章 数据表示方法 习 题 二
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
S E M (1) 最大数的二进制表示:
0 11111110 11111111111111111111111 即 2(2-2) (2) 最小数的二进制表示:
1 11111110 11111111111111111111111 即 - 2(2-2)
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补码写出它们所能表示的最大正
127
-23
127
-23
数、最小正数、最大负数和最小负数,并将它们转换成十进制数。 解: 补码 真值
3-6
最大正数: 011;0.111111, 2×(1-2)
3-6
最小正数: 101;0.000001, 2×2
3-6
最大负数: 101;1.111111, -2×2
3-6
最小负数: 011;1.000000, -2×(1-2)
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码交叉校验
字符
7 位 ASCII 码
1 X3 1 1 X8
HP 0 1 0 1 0
3 0 X1 X2 0 0 1 Y1 1 0 0 1 0 0 + X4 1 0 1 0 1 Y2 0 1 X5 X6 1 1 D 1 0 0 X7 1 0
= 0 X9 1 1 1 X10 VP 0 0 1 1 1 X11
1 1
1 X12
则 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,的1改为0即可。
1101011011?1000?,所以是第2位出错,将第2位
G(x)1101
第三章 运算方法和运算器 习 题 三
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 [-Y]补= 000011
[X]移 + [y]移=010111,
[X]移 + [Y]补= 001010+111101 =000111
根据移码加法公式[x + y]移=[X]移 + [Y]补= 000111
根据移码加法公式及溢出判断规则,双符号位为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 右移一位,得P1
+00.00000 00.01111
→00.00111 11 yf.111 右移一位,得P2 +00.11111 01.00110
→00.10011 011 yf.11 右移一位,得P3 +00.11111 01.10010
→00.11001 0011 y.1 右移一位,得P4 +00.11111
01.11000
→00.11100 00011 yf 右移一位,得P5=|x|·|y|
由于 Pf=xf?yf=0?1=1 所以 x·y = ?0.1110000011
(2) 部分积 乘数(y) 判断位 说明 ↑
00.00000 yf. 01011 P0=0 +00.11010 00.11010
→00.01101 0 yf.0101 右移一位,得P1
+00.11010 01.00111
→00.10011 10 yf.010 右移一位,得P2 +00.00000 00.10011
→00.01001 110 yf.01 右移一位,得P3 +00.11010 01.00011
→00.10001 1110 y.0 右移一位,得P4 +00.00000
00.10001
→00.01000 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
11.11011
所以 +11.01010 yn+1yn=01,加[-x]补
→ 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.11101 11110 1.1 右移一位,得P5 +00.00000 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
+00.000000 yn+1yn=11,加0
11.110110 11.111011
所以
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.111011 0010 1.100 右移一位,得P4
+00.000000 yn+1yn=00,加0 →11.111101 10010 1.10 右移一位,得P5
+00.011010 yn+1yn=01,加[-x]补
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]补 11.00101 11.00111 0.11010
余数为正,减y比较 r5<0,商上0,只移商
-101
[x]原÷[y]原=[Q]原=0.11010,余数[r]原=1.00111。
补码不恢复余数法:
[y]补=0.11011,[-y]补=1.00101
被除数/余数 商 上商位 说明 00.10101 +[-y]补 11.00101 被除数与除数同号,减除数比较 11.11010 0 余数r0与除数异号,商上0
← 11.10100 0 左移一位,商从上商位移入商寄存器 +[y]衬 00.11011 加除数比较
00.01111 1 余数r1与除数同号,商上1 ← 00.11110 0.1 左移一位 +[-y]补 11.00101 减除数
00.00011 1 余数r2与除数同号,商上1 ← 00.00110 0.11 左移一位 +[-y]补 11.00101 减除数比较
11.01011 0 余r3与除数异号,商上0 ← 11.10110 0.110 左移一位 +[y]衬 00.11011 加除数比较
00.10001 1 余r4与除数同号,商上1
← 11.10110 0.1101 +[-y]补 11.00101 11.11011 0.11010
故[x÷y]衬= 0.11010,余数[r]补=1.0000011011 因未除尽,商为正,因此商不需要校正。
商为正,余数与被除数异号,则应将余数加上除数进行修正才能获得正确的余数,为: (1.11011+0.11011)*0.00001=0.0000010110
左移一位 减除数比较
余r3与除数异号,商上0
(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]补 11.00101 11.00111 0.11010
余数为正,减y比较 r5<0,商上0,只移商
-101
[x]原÷[y]原=[Q]原=-0.11010,余数[r]原=1.00111。
补码不恢复余数法:
[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=2×0.100100,y=2×(-0.011010) (2) x=2
-101
011010
×(-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 则:[x]补+[y]补=00010 00101110 (d)不需舍入,无溢出
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
=(C13A0000)16
则0.625+(-12.25)=(1 10000010 01110100000000000000000)2
(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
=(414E0000)16
则0.625+(-12.25)=(0 10000010 10011100000000000000000)2
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),形成某种剩磁状态,因而记下一位二进制信息。磁层上这个被磁化的小区域,称为磁化单元。随着磁层的运动,读/写线圈中的一串电流脉冲,就会在磁层上形成一串磁化单元。
读出时,某一磁化单元移动到磁头处,在磁层与磁头交链的磁路中磁通发生变化,于是在读/写线圈中感应出不同方向的电流,经读出放大器放大和整形之后,还原出写入的信息。 11)主存与磁盘存储器在工作速度方面为何采用不同的参数指标?后者采用哪几个指标表明其工作速度?为什么?
答:因为两种存储器的存储数据的原理不同,所以不能采用同一种技术指标。磁盘存储器采用平均定位时间(寻道时间+等待时间)和数据传输速率两个指标表明工作速度。
4.3 对于32K字容量的存储器,若按字编址,字长16位。其地址寄存器应是多少位?数据寄存器是多少位?
解:该存储器的寻址空间为:32K*8位/16位=16K字 地址寄存器的位数为:14位
数据寄存器的位数和字长相等为16位
4.4 用4片32K×8位SRAM存储芯片可设计哪几种不同容量和字长的存储器?画出相应设计图并完成与CPU连接。
解:可设计字长为8位,容量为128K的存储器:
。 译 A16 。 码 A15 。 器 。 CPU 10 00 01 11 CS CS CS CS A14 32K×8 32K×8 32K×8 32K×8 WE WE WE WE A0
WE
D0~D7
数据总线
可设计字长为16位,容量为64K的存储器:
译
。 A16 码
。 器 CPU1 0 CS CS A15 CS CS 32K×8 32K×8 32K×8 32K×8 WE WE A1 WE WE
WE
D0~D15
数据总线
....... ....... ....... ....... ....... ....... ....... .......
可设计字长为32位,容量为32K的存储器: 0
CPUCS CS CS 32K×8 CS A16 32K×8 32K×8 32K×8 WE WE WE WE A2
WE
D0~D31
数据总线
4.5 用32K×8位RAM芯片和64K×4位ROM芯片,设计256K×8位存储器。其中,从30000H到3FFFFH地址空间为只读存储区,其它为可读、可写存储区。完成存储器与CPU连接。
解:只读区域的地址空间为:30000H-3FFFFH,为64K,需要64K×4位ROM芯片2 片,需要32K×8位RAM芯片的片数为:256K-64K/32K=6片
设计如下:存储器的0000H-2FFFFH存储空间为RAM芯片,也就是32K×8位RAM芯片6 片,采用字扩展连接。存储空间30000H-3FFFFH使用64K×4位ROM芯片2片,采用位扩展方式连接。
数据线条数为8条:D0-D7。
地址线的条数为18条:A1-A18,其中A18-A16为片选信号的输入端。 设计图如下:
A18 译
A17 ? 码
A16 器
CPU 000 001 010 110或111 011 101 100
CS A15 CS CS CS CS CS CS CS
64K×4 32K×8 32K×8 32K×8 32K×8 32K×8 64K×4 32K×8
ROM RAM RAM RAM RAM RAM ROM RAM
WE A1 WE WE WE WE WE WE
WE
....... ....... D0~D7 ....... ....... ....... ....... ....... ....... ....... .......
数据总线
4.6某计算机字长16位,主存容量128KW,请用16K×8位的静态RAM芯片和32K×16位的ROM芯片,为该机设计一个主存储器。要求18000H~1FFFFH为ROM区,其余为RAM区。画出存储器结构及其与CPU连接的框图。 解:设计如下:通过简单的计算可知:
地址空间00000H-18000H都是RAM区域(共96KW) 地址空间18000H-1FFFFH为ROM区域(共32KW) 故共使用16K×8位的静态RAM芯片12片 使用32K×16位的ROM芯片1片 数据线条数为16条:D0-D15。
地址线的条数为17条:A1-A17,其中A17-A15为片选信号的输入端。 设计图如下:
A17 译
A16 码
A15 器
CPU101 011 100 001 010 000
CS CS CS CS CS A14 CS CS CS CS CS CS CS 16K×8 16K×8 32K×8 16K×8 16K×8 16K×8 16K×8 16K×8 16K×8 16K×8 16K×8 16K×8 RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM WE WE WE WE WE A1 WE WE WE WE WE WE WE WE
D0~D15
数据总线
4.7 假设 CPU 有16根地址线,8根数据线,并用 MREQ作为访存控制信号(低电平有效),用W/R做读/写控制信号(高电平为读,低电平为写),主存地址空间分配如下:
6000H - 67FFH 为系统程序区 6800H - 6BFFH 为用户程序区
现有下列存储芯片:1K*4位RAM,4K*8位RAM,8K*8位RAM,2K*8位ROM,4K*8位ROM,8K*8位ROM及译码器和各种门电路,设计该机的主存系统,并画出CPU与存储器的连接图。 本题略
4.8 用64K×1位的DRAM芯片构成1M×8位的存储器,若采用异步刷新,若每行刷新间隔不超过2ms,则产生刷新信号的间隔是多少时间?若采用集中刷新方式,则存储器刷新一遍最少用多少个读写周期?CPU的死时间为多少?(假定存储器的读写时间为0.5?s)
解:64K×1位的DRAM芯片的排列方式为256行*256列,该存储器中有64K×1位的DRAM芯片128片刷新信号的产生间隔为2ms.
....... ....... ....... ....... ....... ....... ....... ? 110或111 CS 32K×16 ROM .......
将2ms分成256个小段(因为DRAM按行刷新),每个时间段为:7.8125?s,将其中最后0.5?s用于刷新DRAM的一行,即产生刷新信号的时间间隔为7.8125?s.
若采用集中刷新,存储器刷新一遍至少需要256个读写周期,CPU的死时间是256?0.5?s=128?s
则刷新信号的间隔是0.03?s
4.9某动态RAM芯片,容量为64K?1位,除电源线、接地线和刷新线外,该芯片的最小引脚数量是多少?
解:该芯片1位数据线,行选通和列选通各一位,64K的存储器对应16根地址线,在DRAM中,行和列复用,即地址线为8根,故在不考虑电源线的情况下,该DRAM芯片的最小引脚数为1+1+1+8 = 11个。
4.10 有一个具有8个存储体的低位交叉存储器中,如果处理器的访问地址为以下八进制地址值,求该存储器比单体存储器的平均访问速度提高多少?(忽略最初的启动时延)
(1)10018,10028,10038 ,…,11008 (2)10028,10048,10068 ,…,12008 (3)10038,10068,10118 ,…,13008
解:假设改存储体的地址空间从00008开始,并且存储周期为T,故有:
三个访问序列访存空间的大小都为64个存储单元,故在不使用低位交叉存储体的情况下访存耗时都为64T。
(1)该访问序列访存如图所示:
M0 M1 M2 M3 M4 M5 M6 M7 ... 10008 10108 10208 ... 11008 ... 10018 10118 10218 ... ... 10028 10128 10228 ... ... 10038 10138 ... ... ... 10048 10148 ... ... ... 10058 10158 .. ... ... 10068 10168 ... ... ... 10078 10178 ... ... 则访问该段序列所用时间为T+63*T/8 = 71T/8 故速度提升倍数为:(64T*8)/71T=7.2倍 (2)该访问序列访存如图所示:
M0 M1 M2 M3 M4 M5 M6 M7 ... ... 10108 10208 ... 12008 ... ... ... ... ... ... 10028 ... ... ... ... ... ... ... ... ... 10048 ... ... ... ... ... ... .. ... ... 10068 ... ... ... ... ... ... ... ... 则访问该段序列所用时间为3T + 63*2T/8 = 75T/4 故速度提升倍数为:(64T*4)/75T=3.41 (3)该访问序列访存如图所示:
M0 M1 M2 M3 M4 M5 M6 M7
... ... ... ... ... ... ... 10038
... ... ... ... ... 10068 ... ...
... ... 10308 ... ... 13008 10118 ... ... 10418 ... ... 10228 ... ... ... ... ... 10338 ... ... 10148 ... ... 10448 ... ... 10258 ... ... ... ... ... 10368 ... ... 10178 ... ... 10478 ...
则访问该段序列所用时间为4T+ 63*3T/8= 221T/8 故速度提升倍数为:(64T*8)/221T=2.3
4.11 用16K?1位的DRAM芯片构成64K?8位的存储器,设存储器的读写周期为0.5?s,要使CPU在1?s内至少访问存储器一次,问采用哪种刷新方式比较合适?若每行刷新间隔不超过2ms,该方式下刷新信号的间隔是多少?
解:由于要使CPU在1?s内至少访问存储器一次,而存储器的读写周期为0.5?s,故不可采用集中式刷新方式,因为集中是刷新的死时间会超过1?s,从而不可保证CPU在1?s内至少访问存储器一次,故采用异步刷新方式比较合适。
设16K?1位的DRAM芯片采用地址复用后,采用128*128的排列方式,则将2ms分成128个时间段,每段的时间为:2000?s/128=15.625?s,即刷新信号的产生周期为15.625?s
14
4.12设Cache的容量为2块,每块是一个32位字,主存容量是Cache容量的256倍,其中有如表4.11所示数据(地址和数据均采用16进制表示).
表4.11 主存数据分布情况
地址 000000 000008 010004 01FFFC FFFFF8 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460 将主存中这些数据装入到Cache后, Cache各块中的数据内容及相应的标志是什么? (1)全相联映射 (2)直接相联映射 (3)组相联映射 解:(1)全相联映射
全相联映射方式下,主存的一个数据块可映射到Cache的任意行,表中共有5个地址,数据从主存映射到Cache后占用其中的5行,假设就是Cache的前5行,具体分布如下表所示。
Cache行 0 1 2 3 4 标志 00,0000,0000,0000,0000,0000 (000000H) 00,0000,0000,0000,0000,0010(000002H) 00,0000,0100,0000,0000,0001(004001H) 00,0000,0111,1111,1111,1111(007FFFH) 11,1111,1111,1111,1111,1110(03FFFFEH) 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460
(2)直接相联映射
该方式下,主存的一个数据块只能射到Cache的特定行,表中共有5个地址,数据从主存映射到Cache后占用其中的特定的5行。由于一个数据块为32位,即4B,所以,只需要用主存地址的最后2位表示块内偏移地,由于Cache有16K行,所有,去掉最后2位地址后的连续14位就表示主存数据块映射到的Cache行,剩余的8位即为对应的标志.具体分布如下表所示。
Cache行 00 0000 0000 0000(0000行) 00 0000 0000 0010(0002行) 00 0000 0000 0001(0001行) 11 1111 1111 1111(03FFF行) 11 1111 1111 1110(03FFE行) 标志 0000 0000 0000 0000 0000 0001 0000 0001 1111 1111 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460
(3)组相联映射:(假设采用的是四路组相联1)
该方式下,主存的一个数据块只能射到Cache的特定组中的任意行,假定Cache采用四路组相联,则Cache共分为4K组。由于一个数据块为32位,即4B,所以,只需要用主存地址的最后2位表示块内偏移地,由于Cache有4K组,因此,去掉最后2位地址后的连续12位就表示主存数据块映射到的Cache组,剩余的10位即为对应的标志.具体分布如下表所示。
Cache组 0000 0000 0000(000组任意行) 0000 0000 0010(002组任意行) 0000 0000 0001(001组任意行) 1111 1111 1111(0FFF组任意行) 1111 1111 1110(0FFE组任意行) 标志 00 0000 0000 00 0000 0000 00 0000 0100 00 0000 0111 11 1111 1111 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460
4.13 某计算机Cache由64个存储块构成,采用四路组相联映射方式.主存包含4096个存储块,每块由128个字组成.访问地址为字地址. (1)求主存地址和Cache地址各有多少位?
(2)按照题目条件中的映射方式,列出主存地址的划分情况,并标出各部分的位数. 解:(1)主存容量为:4096*128=512KW 故主存地址位数为:19位 Cache容量为:64*128=8KW 故Cache地址位数为:13位
(2)每个组中包含的存储块的个数为:4块 故索引字段(Index)位数为:2位
由于每块由128个字组成.访问地址为字地址,故块内地址的位数为:7位 故标记部分(Tag)的位数为:10位 则主存地址划分情况如下:
12Tag (标记) Index(索引) 块内字地址
10 2 7
4.14 某计算机中主存容量为4MB,Cache容量为16KB,每块包含8个字,每字32位,映射方式采用4路组相联.设Cache的初始状态为空,CPU依次从主存第0,1,2,…,99号单元读出100个字(每次读一个字),并重复此操作10次.替换算法采用LRU. (1)求Cache的命中率
(2)若Cache比主存块10倍,分析采用Cache后存储访问速度提高了多少?
解:(1)0,1,2,…,99号单元共100个字,每块8个字,故100个字被分配在13块内。
Cache中能存放的主存块数为:16KB/8=2K块
因为是四路组相联,故每组中包含的块数为:2K/4=512块
由于Cache的初始状态为空,根据前面的分析,13块数据调入Cache后不会被调出,所有10次访问中,每块第一次访问不命中外,其余访问均可命中,因此10次循环访问共访问内存100*10 =1000次,其中不命中的次数只有13次。 则Cache的命中率为:(1000-13)/1000=98.7%
(2)设访问Cache的访问时间为T(访问一个数据单元所用的时间),则访问主存的访问时间为10T,故有:
使用Cache后访存所用时间为:T2=13*10T+(1000-13)*T=1117T 不使用Cache访问耗时为:T1=10000T
故使用了Cache后速度提高了:10000T/1117T=8.95倍
4.15 假定某数组元素按行优先顺序存放在主存中,则以下两段伪代码A和B中: (1)分析两段代码中对数组访问的时间局部性和空间局部性. (2)分析变量SUM的时间局部性和空间局部性.
(3)分析for循环体对指令访问的时间局部性和空间局部性.
Int sum_array_A(int a[M][N]) { Int i,j,sum=0; For (i=0;i 解:(1)由于数组在内存中按照行优先存放,数据按块从主存映射到Cache中。 而程序A中对数组访问是按行优先方式进行的,故有很好的空间局部性,但由于每个数组元素只使用一次,故不存在时间局部性; 而程序B中对数组访问是按列优先方式进行的,故没有空间局部性,由于每个数组元素只使用一次,故不存在时间局部性; (2)变量SUM是单个变量,因此两段程序对该变量的访问不存在空间局部性,由于变量在循环中被多次使用,故具有两好的时间局部性。 (3)在for循环中对指令访问都很好的体现了时间局部性和空间局部性。 4.16 主存容量为8MB,虚存容量为2GB,分页管理时若页面大小为4KB,求出对应的VPN、VPO、PPN、PPO的位数。 解:虚存所包含的页面数为:2GB/4KB=512K页 故VPN的位数为:19位 由于页面的大小为4KB,故VPO和PPO的位数均为:12位 主存所包含的页面个数为:8MB/4KB=2K 故PPN的位数为:11位 4.17 某页式虚拟存储器共8页,每页1KB,主存容量为4KB,页表如表4.12所示. 表4.12 某页式虚拟存储器的页表 虚页号 实页号 装入位 0 1 2 3 4 5 6 7 3 2 1 2 3 1 0 0 1 1 0 0 1 0 1 0 (1)失效的页有哪几页? (2)虚地址(用十进制数表示)0,3028,1023,2048,4096,8000的实地址分别是多少? 解:(1)失效的页为:2、3、5、7 (2)虚存空间大小为8*1KB= 8KB,故虚地址为13位,其中虚页号为3位 0: 虚页号为:0 所对应的实页号为:3 页内偏移为:0 故其实地址为(二进制表示):0110000000000 ,对应的十进制实地址为: 3*1K+0=3072 3028:(3028)10= (010 1111000100)2 虚页号为:2 所对应的实页号为:1 故其实地址为:(001 1111000100)2= 1988 1023:(000 1111111111) 虚页号为:0 所对应的实页号为:3 故其实地址为:(011 1111111111)2= 3*1K+1023=4095 2048: (010 0000000000)2 虚页号为:2 所对应的实页号为:1 但由于装入位为零,故该页不在虚存中。 页内偏移地址为:0 故其实地址为:1*1K+0=1024 4.18某计算机系统中有一个TLB和L1级数据Cache,存储系统按字节编址,虚拟存储容量为2GB, 主存容量为4MB,页大小为128KB,TLB采用四路组相联方式,共有16个页表项.Cache容量为16KB,每块包含8个字,每字32位,采用四路组相联,块大小为4B,共32行.参照图4.51所描述的页式虚拟存储系统中TLB和Cache命中时详细的存储访问过程,回答下列问题: (1)虚拟地址中哪几位表示虚页号?哪几位表示页内偏移地址?虚页号中哪几位表示TLB标记?哪几位表示TLB索引? (2)物理地址中哪几位表示物理页号?哪几位表示偏移地址? (3)为实现主存与数据Cache之间的组相联映射,对该地址又进行怎样的划分? 解:(1)虚拟存储的页面数为:2GB/128KB=16K,故虚页号的位数为:14位 由于页大小为128KB,故页内偏移地址的位数为17位 所以虚拟地址的高14位表示的是虚页号,低17位表示的是页内偏移地址 TLB采用四路组相联方式,共有16个页表项,所以索引需要2位,故虚拟页号的高12位为TLB标记,低2位为TLB索引 (2)物理内存中包含的页数为:4MB/128KB=32,故物理页号占5位,页内偏移地址的位数为17位 所以物理地址中高5位表示物理页号,低17位表示页内偏移地址 (3)主存容量为4MB,访问该主存需要22根地址线,块大小为32B,故块内字节偏移地址为5位, Cache采用四路组相联,Cache共分成16KB/32B = 512个组,故索引字段需要9位,剩下的22-5-9 = 8位为标记。 则主存地址划分如下: 17 主存组号(标记) 组内块号(索引) 块内地址 8 9 5 4.19某磁盘存储器共有6个记录面,盘面内圈直径为1英寸,外圈直径为5英寸,道密度为50TPI,位密度为 2000BPI,转速为 3000r/min,平均找道时间为 10ms。试问: (l)该存储器的存储容量是多少? (2)平均存取时间是多少? (3)共有多少个圆柱面? (4)数据传输率是多少? (5)如果某文件的长度超过了一个磁道的容量,其超过部分应记录在同一记录面上,还是记录在同一回柱面上? 解:(l)该磁盘存储器6个记录面,最外两个记录面不记录内容,则该磁盘驱动器的总磁道数为:[(5-1)/2]*50TPI*4=400 由于位密度一般指磁盘内圈上的信息记录密度,故每个磁道的存储位数为: 3.14*2000BPI=6280位 则该磁盘存储器的存储容量为:400*6280/8=306KB (2)磁盘转半圈用时:60s*0.5/3000r/min=10ms 平均存取时间是:10ms+10ms=20ms (3)圆柱面的个数为:[(5-1)/2]*50TPI=100 (4)该磁盘的最大数据传输率:3000*6280/(60*8) =38KB/s (5)记录在同一柱面上,这样可以省掉一次寻道时间. 4.20 写入代码为011001,画出RZ,NRZ,PE和FM制记录方式的写电流波形。 解: 0 1 1 0 0 1 RZ NRZ PEFM 第五章 指令系统 习 题 五 5.1解释下列名词 指令 指令系统 操作码 地址码 寻址方式 程序计数器PC 有效地址 地址码扩展 CISC RISC 存储器堆栈 寄存器堆栈 基址寄存器 变址寄存器 解:(1)指令:控制计算机执行某种操作(如加、减、传送、转移等操作)的命令称为指令。 (2)指令系统:一台计算机中所有指令的集合称为该计算机的指令系统。 (3)操作码:指令中用于控制指令操作性质的字段称为操作码。不同功能的指令其操作码编码不同,如可用0001表示加法操作,0010表示减法操作。 (4)地址码:指令中用于定参与指令操作的操作数的地址或偏移量地址的字段。 (5)寻址方式:寻找指令或操作数有效地址的方法。 (6)程序计数器PC:程序计数器是用于存放下一条指令所在单元的地址的寄存器。 (7)有效地址:表示操作数所在主存单元的物理地址。 (8)地址码扩展:将指令的操作码字段向不用的地址码字段扩展,从而在指令长度不变的情况下支持更多的指令。 (9)CISC:CISC是复杂指令系统计算机(ComplexInstructionSetComputer)的简称,这类计算机指令系统复杂,寻址方式种类较多,指令执行效率低。 (10)RISC:RISC是精简指令集计算机(reduced instruction set computer,)的简称,这类计算机指令系统简单,寻址方式种类少,指令执行效率高。 (11)存储器堆栈:以先进后出的方式存储数据,在内存空间开辟堆栈区,该类堆栈容量大,速度慢,栈顶移动而堆栈中的数据不动。 (12)寄存器堆栈:以先进后出的方式存储数据,利用寄存器开辟的堆栈区,该类堆栈容量小,速度块,栈顶不动,出栈和入栈操作设计栈内所有数据的移动。 (13)基址寄存器:基址寻址方式下用于存放基地址的寄存器。 (14)变址寄存器:变址寻址方式下,用于存放变化的地址的寄存器。 5.2 简要回答下列问题 (1)什么叫指令?什么叫指令系统? (2)计算机中为什么要设置多种操作数寻址方式? (3)操作数寻址方式在指令中如何表示? (4)基址寻址和变址寻址的作用是什么?分析它们的异同点. (5)RISC处理器有何特点? (6)比较定长指令与变长指令的优缺点。 (7)指令的地址码与指令中的地址码含义有何不同? 解:(1) 指令是指控制计算机执行某种操作(如加、减、传送、转移等操作)的命令,而一台计算机中所有指令的集合称为该计算机的指令系统。 (2) 这是为了在效率和方便性以及寻址空间大小保持平衡。 用于快速访问的寻址方式:立即数寻址、寄存器寻址等 扩大寻址范围的寻址方式:间接寻址、寄存器间接寻址、基址寻址等 便于程序设计灵活性的寻址方式:变址寻址、相对寻址、直接寻址等 既扩大寻址范围,又由利于指令执行速度提高的寻址方式:寄存器间接寻址 另外,多种复合寻址寻址方式使得寻址更加灵活。 (3)由于不同指令可能采用不同的寻址方式获得操作数,因此,一般情况下,指令的格式会进一步细分出寻址方式字段。下图所示的为包含寻址方式字段的单地址指令结构。 其中,OP为操作码,I为寻址方式特征码。D为形式地址,或称偏移量。寻址过程就是把I和D的不同组合变换成有效地址的过程。I与操作数寻址方式相关。 (4) 基址寻址面向系统,主要用于程序的重定位和扩展寻址空间。变址寻址是面向用户的,主要解决程序循环问题。 两者相同点:在形式上以及计算操作数的有效地址的方法上,变址寻址和基址寻址中是相似的,都是把个寄存器的内容加上指令字中的形式地址而形成操作数有有效地址。 不同点:两者有着不同的用途。首先,在采用了基址寻址的计算机系统中,基址是不变的,程序中的所有地址都是相对于基地址来变化的。而对于变址寻址来说则相反,指令中的地址字段的形式地址给出的是一个存储器地址基准,变址寄存器X中存放的是相对于该基准地址的偏移量。不同的变址寄存器给出的不同的单元。第二,在基址寻址中,偏移量位数较短,而在变址寻址中,偏移量位数足以表示整个存储空间。第三,基址寻址主要是解决程序逻辑空间与存储器物理空间的无关性,而变址寻址主要是为了可以编写出高效访问一片存储空间的程序。 (5) RISC具有如下特点:使用等长指令、寻址方式少且简单、只有取数和存数指令访问存储器、指令数量和指令格式少于、指令功能简单、CPU内部设置了大量的寄存器、控制器多采用硬布线方式、大多数指令可在一个时钟周期内完成、支持指令流水并强调指令流水的优化使用。 (6) 定长指令的优点:定长指令具有结构规整,有利于简化硬件,尤其是指令译码部件的设计。 定长指令的缺点:定长指令平均长度长、容易出现冗余码点和指令不易扩展等不足。 变长指令的优点:变字长指令结构灵活,能充分利用指令中的每一位,所以指令码点冗于少,指令的平均长度短,易于扩展。 变长指令的缺点:变长指令的格式不规整,不同指令的取指时间可能不同,导致控制复杂。 (7) 指令的地址码通常指定参与操作的操作数的地址。指令中的地址码字段的作用随指令类型和寻址方式的不同而不同,它可能作为一个操作数、也可能是操作数的地址(包括操作数所在的主存地址、寄存器编号或外部设备端口地址)、也可能是一个用于计算地址的偏移量。 5.3 根据操作数所在的位置,指出其寻址方式(填空) (1) 操作数在指令中为(A)寻址方式。 (2) 操作数地址(主存)在指令中为(B)寻址方式。 (3) 操作数在寄存器中为(C)寻址方式。 (4) 操作数地址在寄存器中为(D)寻址方式。 解:A:立即数寻址 B:直接寻址 C: 寄存器寻址 D: 寄存器间接寻址 5.4 某计算机字长16位,运算器16位,有16个通用寄存器,8种寻址方式,主存64KW,指令中操作数地址码由寻址方式字段和寄存器号字段组成。试问, (1) 单操作数指令最多有多少条? (2) 双操作数指令最多有多少条? (3) 变址寻址的范围多大? 解:由令中操作数地址码由寻址方式字段和寄存器号字段组成可知:16个通用寄存器,需要4位表示,8种寻址方式需3位表示。 (1)单操作数指令操作码位数16-4-3=9位 OP I D 所以:最多有29=512条。 (2)双操作数的操作码位数:16-2*(4+3)=2位 所以:最多有22=4条 (3)变址寻址,因为寄存器为16位,所以寻址范围为:64K 5.5 假设某计算机的指令长度固定为16位,具有双操作数,单操作数和无操作数三类指令,每个操作数地址规定用6位表示。 (1)现已设计出m条双操作数指令,n条无操作数指令,在此情况下,这台计算机最多可设计出多少条单操作数指令? (2)当双操作数指令取最大数,且在此基础上,单操作数指令条数也取最大值,试计算这3类指令最多可拥有多少条指令? 解:根据题目提交,该指令格式包含两个操作数字段(各6位)和一个操作码字段(4位),单操作数指令通过将指令的OP字段向不用的一个地址码字段扩展,零操作数指令在单操作数指令的基础上继续向另一个不用的地址码字段扩展。在扩展的过程中要注意留出扩展标志。 (1)可通过扩展的方式将操作码向地址码扩展。 则计算机最多有24=16条指令双操作数指令 这里,双操作数指令为m条,此时,操作码字段还有(16-m )种扩展标志,用于表示操作码向一个地址字段扩展。 本题目中已知道无操作数指令为n条,首先要知道,无操作数指令是在一操作数指令的基础上,通过将操作码向最后一个地址字段扩展得到的,加上扩展的过程中用到了y个扩展标志,则n = y? 64 (每种扩展标志下,最后地址字段的6位全部标志无操作数指令),由此,可以得到y = n / 64 所以:单操作数的指有(16-m)*64- n / 64条。 (2)双操作数指令取最大数:24 -1=15条 单操作数指令取最大数:26 -1=63条 无操作数指令最大有:26=64条 5.6设相对寻址的转移指令占三个字节,第一个字节是操作码,第二个字节是相对位移量(补码表示)的低8位,第三个字节是相对位移量(补码表示)的高8位,每当CPU从存储器取一个字节时,便自动完成(PC)+1?PC: (1)若PC当前值为256(十进制),要求转移到290(十进制),则转移指令第二、三字节的机器代码是什么(十六进制)? (2)若PC当前值为128(十进制),要求转移到110(十进制),则转移指令第二、三字节的机器代码又是什么(十六进制)? 解:根据相对寻址有效地址的计算公式 EA=(PC)+ D 可知 D = EA - (PC) 对于相对寻址而言,关键是要求出计算有效地址时PC的当前值。 (1) 根据题意,采用相对寻址指令的地址为256,PC在取指令完成后修改,则取指令完成后PC=256+3=259 (因为指令长度为3个字节) 所以:D = 290-259 =(31)10= 001FH 故:转移转移指令第二字节为:1FH,第三字节为:00H。 (2) 根据题意,采用相对寻址指令的地址为128,PC在取指令完成后修改,则取指令完成后PC=128+3=131 所以:D = 110-131=(-21)10=FFEDH(补码) 故:转移转移指令第二字节为:EBH,第三字节为:FFH。 5.7 某计算机有变址、间接和相对等三种寻址方式,设指令由操作码、寻址方式特征位和地址码三部分组成,且为单字长指令。设当前指令的地址码部分为001AH,正在执行的指令所在地址为1F05H,变址寄存器中的内容为23A0H,已知存储器的部分地址及相关内容如表5.11所示: 表5.11 存储器内容分配 地址 001AH 1F05H 1F1FH 23A0H 23BAH 内容 23A0H 2400H 2500H 2600H 1748H 根据要求完成下列填空: ⑴ 当执行取数指令时,如为变址寻址方式,则取出来的数为_________。 ⑵ 如为间接寻址,取出的数为_________。 ⑶ 当采用相对寻址时,有效地址为_________。 解:(1)当为变址寻址方式时,变址寄存器为23A0H,当前地址码部分为:001AH EA=23A0H+001AH=23BAH 所以读出的数为:1748H (2) 当为间接寻址时,当前地址码部分为:001AH,则有效地址为: EA=[001A]=23A0H 所以读出的数为:2600H (3)当为相对寻址时,当前执行指令的地址为1F05H,则PC=PC+2=1F05H+2=1F07H(指令长度为两个字节) EA=1F07H+001AH=1F21H 没有该地址对应的内容,说明CPU所访问的内容不在主存中。 5.8某计算机的指令格式包括操作码OP、寻址方式特征位I和形式地址D等三个字段,其中OP字段6位,寻址方式特征位字段I为2位,形式地址字段D为8位。I的取值与寻址方式的对应关系为: I=00:直接寻址 I=01:用变址寄存器X1进行变址; I=10:用变址寄存器X2进行变址; I=11:相对寻址. 设(PC)=1234H,(X1)=0037H , (X2)=1122H,以下四条指令均采用上述格式,请确定这些指令的有效地址: (1)4420H (2)2244H (3)1322H (4)3521H 解:(1)4420H=(0100010000100000)B OP 010001 I 00 D 00100000 I=00,变址寻址方式,EA= 20H (2)2244H=0010 0010 0100 0100B OP 001000 I 10 D 01000100 I=10:用变址寄存器X2进行变址 E=(X2)+D=1166H (3)1322H=0001 0011 0010 0010B OP 000100 I 11 D 00100010 I=11:相对寻址 E=(PC)+2+D=1258H (双字节长指令) (4)3521H=0011 0101 0010 0001B OP 001101 I 01 D 00100001 I=01:用变址寄存器X1进行变址 E=(X1)+D=0058H 5.9 某计算机A有60条指令 ,指令的操作码字段固定为6位,从000000-111011,该机器的后续机型B中需要增加32条指令,并与A保持兼容, (1)试采用操作码扩展方法为计算机B设计指令操作码. (2)计算计算机B中操作码的平均长度. 解:(1) 因为计算机B要与计算机A兼容所以计算机A中的指令得保留:所以000000-111011为A的操作码部分。操作码字段的11100-111111的取值将作为扩展标识,将操作码扩展到地址字段,只需要占用地址字段3位即可表示新的32条指令。 (2)由(1)可知,有60条指令的操作码为6位,32条指令的操作码为9位 所以平均长度为:(60*6+32*11)/92=7.74位. 5.10 以下MIPS指令代表什么操作?写出它的MIPS汇编指令格式 0000 0000 1010 1111 1000 0000 0010 0000 解:OP=000000 Funct=100000 rs=00101 则对应的寄存器名称 rs=$a1 rt=01111 则对应的寄存器名称 rt=$t7 rd=10000 则对应的寄存器名称 rd=$ S0 所以,汇编格式为 ADD $S0,$a1,$t7 5.11 假定以下C语句中包含的变量f,g,h,i,j分别存放在寄存器$11---$15中,写出完成C语言语句f=(g+h)*i/j功能的MIPS汇编指令序列,并写出每条MIPS指令的十六进制数. 解:设f对应$11($t3)=01011B g对应$12($t4)=01100B h对应$13($t5)=01101B i对应$14($t6)=01010B i对应$15($t7)=01111B 对应的汇编指令 odd $t3,$t4,$t5 0000,0001,1000,1101,0101,1000,0010,0000 018D5820H mult $t3,$t6 0000,0001,0110,1110,0000,0000,0001,1000 016E0018H MFLO $t3 0000,0000,0000,0000,0101,1000,0001,0010 00005812H div $t3,$t7 0000,0001,0110,1111,0000,0000,0001,1010 016F001AH MFLO $t3 0000,0000,0000,0000,0101,1000,0001,0010 00005812H 第六章 控制器 习 题 六 6.1解释下列名词 指令周期 数据通路 时钟周期 同步控制 异步控制 联合控制 单周期处理器 多周期处理器 微操作 相容性微命令 互斥性微命令 微指令 微程序 微程序控制器 控制存储器 硬布线控制器 6.1. 答: 指令周期:取指令并执行一条指令所需要的时间,一般由若干个机器周期组成,包括从取指令、分析指令到执行完所需的全部时间。 数据通路:数据在功能部件之间传送的路径。 时钟周期:由CPU时钟定义的定长时间间隔,是CPU工作的最小时间单位,也称节拍脉冲或T周期。 同步控制:选取部件中最长的操作时间作为统一的时间间隔标准,使所有部件都在这个时间间隔内启动并完成操作。 异步控制:系统不设立统一的时间间隔标准(基准时钟除外),各部件按各自的时钟工作,分别实现各自的时序控制,时间衔接通过应答通讯方式(又称握手方式)实现。 联合控制:同步控制与异步控制相结合。对大多数节拍数相近的指令,采用同步控制;而对少数节拍数多不固定的指令,采用异步控制。 单周期处理器:所有指令在一个时钟周期内完成的处理器。 多周期处理器:每条指令的执行分成多个阶段,每个时钟周期完成一个阶段的工作。 微操作:执行部件收到微命令后所进行的操作。 相容性微命令:能同时并行执行的微命令。 互斥性微命令:不能并行执行的微操作。 微指令:由微指令产生的一组实现一定微操作功能的微命令的组合。 微程序:实现一条指令功能的若干条微指令的集合。 微程序控制器:采用微程序设计方法设计的控制器。指令执行过程中所需要的所有控制信号以微指令的方式存在在控制存储器中,指令执行时,逐条读出微指令,以产生执行执行过程中所需要的控制信号。 控制存储器:微程序控制器中用于存放解释所有指令微程序的存储器。 硬布线控制器:又称为组合逻辑控制器,指令执行所需要的控制信号直接由逻辑门电路和触发器等构成的电路产生,与微程序控制器相比,具有结构复杂但速度快的特点。 6.2 回答下列问题 1)中央处理器的基本功能是什么?从实现其功能的角度分析,它应由哪些部件组成? 答:五方面的功能: 指令执行顺序的控制。即控制程序中的指令按事先规定的顺序自动地执行,从而保 证程序执行过程中,指令在逻辑上的相互关系不被改变。 指令的操作控制。即产生指令执行过程中所需要的信号,以控制执行部件按指令规定的操作运行。 时间控制,即对每个控制信号进行定时,以便按规定的时间顺序启动各操作。对于任何一条指令而言,如果操作控制信号的时间不正确,则指令的功能也就不能正确实现。 数据加工处理。即对数据进行算术、逻辑运算,或将数据在相关部件之间传送。 异常和中断处理。如处理运算中的异常及处理外部设备的中断服务请求等。 组成:中央处理器主要由控制器和运算器两部分构成。控制器的主要功能包括:取指令、计算下一条指令的地址、对指令译码、产生相应的操作控制信号、控制指令执行的步骤和数据流动的方向。运算器是执行部件,由算术逻辑单元和各种寄存器组成。 2)CPU内部有哪些寄存器?它们的功能分别是什么? 答:(1) 指令寄存器(IR):IR用于保存指令。从主存储器取出的指令存放在IR中,直到新的指令从主存中取出为止。 (2) 程序计数器(PC) :PC保存将要执行的指令地址,故又称指令地址寄存器。CPU取指令时,将PC的内容送到主存地址寄存器,然后修改PC的值形成下一条将要执行的指令地址 (3) 地址寄存器(AR):AR用来保存当前CPU所要访问的主存单元地址,无论CPU是取指令还是存取数据,都必须先将要访问的主存单元地址送AR,直到读/写操作完成。 (4) 通用寄存器组(GR):通用的含义是指寄存器的功能有多种用途,GR可作为ALU的累加器、变址寄存器、地址指针、指令计数器、数据缓冲器,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。 (5) 数据缓冲寄存器(DR) DR作为CPU和主存之间的数据缓冲寄存器用于存放操作数、运算结果或中间结果,以减少访问主存的次数;也可存放从主存中读出的数据,或准备写入主存的数据。 (6) 程序状态字寄存器(PSW) PSW用于保存由算术运算指令、逻辑运算指令、测试结果等建立的各种条件标志。常见的状态信息包括进位标志(C)、溢出标志(V)、结果为负数标志(S)及结果为零标志(Z)等。 3)什么是取指周期?取指周期内应完成哪些操作? 答:取指周期就是从开始取指令到取指令完成所需要的时间。取指周期要完成两方面的操作,一是将PC的值送存储器地址寄存器MAR,并完成储单元去取指令;二是如何形成后续指令地址: ?顺序执行指令时,将PC内容加当前指令所占用的主存单元数(以字节为单位); ?当出现转移时,根据寻址方式、转移条件、转移的目标地址等内容计算得到。 4)指令有几种执行方式?说明各自的特点。 答:指令的执行方式有顺序执行方式、重叠执行方式和流水执行三种方式。 顺序执行方式:是一种串行执行方式,取出一条指令的操作全部结束后才能开始下一条指令的指令周期,这种方式控制简单,程序的执行速度慢。 重叠执行方式:是一种局部并行方式,通常将当前指令的执行阶段与下一条指令的取指阶段重叠进行,这种方式控制较复杂,但可以提高程序的执行速度; 流水执行方式:是一种并行执行方式,它将指令的执行分多个阶段(每个阶段的任务由特定的功能部件完成),一般而言,在该执行方式下,指令间的并行程度比重叠执行方式 要高,控制更为复杂,可以更快地提高程序的执行速度。 5)计算机为什么要设置时序系统?说明指令周期、机器周期、和时钟周期的含义。 答:指令执行过程中的所有操作必须按照一定的次序完成,而且这些操作持续的时间也有严格的限制,因此,在计算机系统中需要设置时序系统,对指令执行过程中的所有控制信号进行时间控制,以保证指令功能的正确实现。 通常将一条指令从取出到执行完成所需要的时间称为指令周期,包括取指周期和执行周期,指令周期通过右若干和机器周期组成,所包含的机器周期的数量随指令功能和寻址方式的不同而不同。 机器周期分成若干个节拍电位时间段,通常以CPU完成一次微操作所需要的时间为基础来定义节拍电位的时间;由CPU时钟定义的定长时间间隔,是CPU工作的最小时间单位,也称节拍脉冲或T周期。 6)组合逻辑控制器与微程序控制器各有什么特点? 答:硬布线控制器又称为组合逻辑控制器,这种控制器中的控制信号直接由各种类型的逻辑门电路和触发器等构成,与微程序控制器相比,具有结构复杂但速度快的特点。 微程序控制器的设计采用了存储技术和程序设计技术,使复杂的控制逻辑得到简化。通过过读出存放在微程序控制器中微指令产生指令执行过程中所需要的控制信号,所以,与硬布线控制器相比,微程序控制器的速度较慢。 7)说明程序与微程序,指令与微指令的异同 答:微程序是多条微指令系列的集合,用于实现指令的功能,属于机器指令级别,对用于的透明性不强,存放在CPU内的控制存储器中;程序则是为了完成某一应用功能所编写的指令(包括机器语言指令或高级语言指令)集合,属于高级语言级别,对用户的透明性好,运行时存放在计算机的主存中。 指令是指挥计算机执行某种功能的命令,是构成程序的基本单位,由操作码和地址字段构成;而微指令则用于微程序控制器中产生指令执行过程中所需要的微命令,是构成微程序的基本单位,由操作控制字段、判别测试字段和下地址字段等组成。 8)微命令有哪几种编码方法?它们是如何实现的? 答:微指令的微命令有三种编码方法,分别是直接表示方法、字段直接译码法和混合控制法。 直接表示法的基本思想是:将微指令操作控制字段的每个二进制位定义为一个微命令,用“1”或“0\表示相应的微命令的“有”或“无”。 字段直接译码法的基本思想是:将微指令格式中的操作控制字段分成若干组,每组中包含若干个互斥性微命令,将相容性的微命令安排在不同组。 混合控制法:将直接表示法与字段直接译码法混合使用,以便在微指令字长、并行性及执行速度和灵活性等方面进行折衷,发挥它们的共同优点。 9)简述微程序控制器和硬布线控制器的设计方法? 答: 微程序控制器设计方法: 1)分析指令执行的数据通路,列出每条指令在所有寻址方式下的执行操作流程和每一步所需要的控制信号; 2)对指令的操作流程进行细化,将每条指令的每个微操作分配到具体的机器周期的各个时间节拍信号上; (3)设计微指令格式、微命令编码方法和程序组织方式; (4)编制每条指令的微程序;并按照所设计的微程序组织方式存放到控存中; (5)对微命令进行同步控制,并送数据通路的相关控制点。 硬布线控制器设计方法: 1)分析指令执行的数据通路,列出每条指令在所有寻址方式下的执行操作流程和每一步所需要的控制信号; 2)对指令的操作流程进行细化,将每条指令的每个微操作分配到具体的机器周期的各个时间节拍信号上,即对操作控制信号进行同步控制。 3)对每一个控制信号进行逻辑综合,得到每个控制信号的逻辑表达式。 4)最后采用逻辑门或PLA或ROM实现逻辑表达式的功能,各控制信号送数据通路的相关控制点。 6.3 微地址转移逻辑表达式如下: μA0 = P2·IR4·T4 μA1 = P2·IR5·T4 μA2 = P3·(C+Z)·T4 其中,μA2—μA0为微地址寄存器相应位,P2和P3为判别标志,C为进位标志,Z为零标志,IR5和IR4为指令寄存器的相应位,T4为时钟周期信号。说明上述逻辑表达式的含义,画出微地址转移逻辑图。 本题略 6.4 已知某机采用微程序控制方式,控存容量为128*32位。微程序可在整个控存中实现转移,控制微程序转移的条件共3个,微指令采用水平型格式,后继微指令地址采用断定方式。请问; (1) 微指令的三个字段分别应为多少位? (2) 画出对应这种微指令格式的微程序控制器逻辑框图。 解答:(1)分别是:控制字段23位;测试字段2位;下址字段7位; (2) 指令寄存器IR 状态条件 OP … 地址转 微命令 微地址 移逻辑 寄存器(μAR) 控制 …… 存储器 微命令 P字段 控制字段 下址字段 寄存器 6.5 某微程序包含5条微指令,每条微指令发出的操作控制信号如表6.25所示,试对这些微指令进行编码,要求微指令的控制字段最短且能保持微指令应有的并行性。 表6.25 微指令及其对应的微操作控制信号 微指令 微操作控制信号 a,c,e,g a,d,f,h,j a,d,e a,b,i a,d,f,j ?I1 ?I2 ?I3 ?I4 ?I5 答:由题可得下表: 微指令 微操作控制信号 a √ √ √ √ √ b c √ d √ √ √ e √ √ f √ √ g √ h √ i j √ √ ?I1 ?I2 ?I3 ?I4 ?I5 √ √ 由微命令的编码方法可知,采用字段直接译码法可以有效缩短微指令的长度,为此,先找出互斥性的微命令。 从表中可以发现两个互斥组(b,c,d) , (e,f,i)(或其它可能存在的互斥组),这两个互斥组采用字段直接译码法,其余的a,g,h,j等四个微命令采用直接表示方。 b c d e f i a ghj 译码器 译码器 2位 2位 P字段 下址字段 ... . 操作控制 顺序控制 6.6某CPU的结构如图6.37所示,其中AC为累加器,条件状态寄存器保存指令执行过程中的状态。a,b,c,d为四个寄存器。图中箭头表示信息传送的方向。完成下列个题: (1)根据CPU的功能和结构标明图中四个寄存器的名称; (2)简述指令LDA X 的数据通路,其中 X为主存地址,指令的功能是将主存X单元的内容送入AC中。 主存储器M a AC c b d +1 ALU 状态寄存器 操作控制器 图6.37 某CPU的结构框图 6.6 答:(1)a:数据缓冲寄存器; b:指令寄存器 c:地址寄存器; d:程序计数器 (2)首先,取指阶段有条数据通路,1.取指令送到指令寄存器:PC→MAR→主存→MDR→IR;2.修改PC为下一条指令做准备:PC→PC+1 其次,执行阶段用到的数据通路是,从主存中取数据并送到寄存器AC中:IR(形式地址部分)→MAR→MEM→MDR→AC 6.7对图6.3所示的单总线CPU,如加法指令中的第二个地址码有寄存器寻址、寄存器间接寻址、存储器间接寻址三种寻址方式,并在指令中用代码表示寻址方式,对应的指令及功能如下: a) ADD R0, R1 ; R[0]? (R[0]) + (R[1]) , 即把寄存器R0的内容和R1的内容相加,结果送送R0保存 b)ADD R0, (R1) : R[0]? (R[0]) +(M[R[1]]) 即把寄存器R0的内容和R1的内容所指主存单元的值相加,结果送R0保存 c) ADD R0, (addr) : R[0]? (R[0]) +(M[addr]) 即把寄存器R0的内容和主存单元addr的值相加,结果送R0保存 分别设计上述三条指令的指令周期流程图,并列出每一步的控制信号。 6.7 答:三种寻址方式下取质周期的操作及其控制信号如表6.3的上半部分所示.下面只给出每种情况下指令执行周期的操作及其控制信号. a) 操作 X ? (R[0]) Z ? ALU R[0] ? (Z) 周期 执行 功能说明 寄存器R0内容送暂存器X ALU执行加法操作,将结果送暂存器Z 暂存器Z的内容送寄存器R0中 控制信号 R0out=Xin=1 R1out=1=ADD=1 Zout = R0in=1 b) 操作 周期 执行 执行 功能说明 将寄存器R1中的内容作为地址送MAR 将主存对应单元的数据送MDR 寄存器R0内容送暂存器X ALU执行加法操作,将结果送暂存器Z 暂存器Z的内容送寄存器R0中 控制信号 MAR? (R[1]) MDR?(MEM) X ? (R[0]) Z ? ALU R[0] ? (Z) R1out=ARin=1 READ=DREin=1 R0out=Xin=1 DRIout=ADD=1 Zout = R0in=1 c) 操作 周期 执行 执行 功能说明 控制信号 MAR? IR(addr) MDR?(MEM) X ? (R[0]) Z ? ALU R[0] ? (Z) 将立即数addr中的内容作为地址送MAR IRout=ARin=1 将主存对应单元的数据送MDR 寄存器R0内容送暂存器X ALU执行加法操作,将结果送暂存器Z 暂存器Z的内容送寄存器R0中 READ=DREin=1 R0out=Xin=1 DRIout=ADD=1 Zout = R0in=1 6.8 用微程序设计图6.15的控制单元 本体参考答案略 只要采用直接编码字段输出图中所有由控制单元输出的控制信号即可) 6.9用微程序设计图6.14所示的单周期处理器的控制单元。 本体参考答案略 只要采用直接编码字段输出图中所有由控制单元输出的控制信号即可) 6.11 假定多周期处理器采用图6.15所示的数据通路和图6.34所示的控制单元。某程序中包含Lw、Sw、R型、J型指令比例分别为20%、10%、60%、10%。求多周期处理器比单周期处理器大约块多少倍。 6.10 答:对于采用图6。15所示的多周期方案而言,LW,SW、R及J型指令的时钟周期数分别为:5、4、4、3。根据CPI公式: CPI=0.2*5 + 0.1*4 + 0.6*4 + 0.1* 3 = 4.1 而单周期的CPI=1 ,但是时钟长度必须取消耗时间最长的指令,也是是LW型指令,预为多周期时间周期的5倍.设多周期的时钟周期时间为t,则多周期比单周期加速的倍数为: N = (5*t)/(4.1*t) = 1.22倍 则多周期处理器是单周期的1.22倍。 第七章 流水线技术 习 题 七 1、 解释下列名词 流水线技术:计算机中的流水线技术是把一个复杂的任务分解为若干个子过程,每个子过程与其它子过程并行运行。由于其运行方式和工业领域中的流水线处理技术十分类似,因此被称为流水线技术。 通过时间:通过时间是指第一条指令从输入流水线到输出流水线所经过的时间