1、计算机组成原理复习讲义考试综述考查目标计算机学科专业基础综合考试涵盖数据机构、计算机组成原理、操作系统和计算机网络等学科专业基础课程。要求考生比较系统地掌握上述专业基础课程的概念、基本原理和方法,能够运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际问题。考试形式和试卷结构一、 试卷满分及考试时间本试卷满分为 150 分,考试时间为 180 分钟二、 答题方式答题方式为闭卷、笔试三、 试卷内容结构数据结构 45 分计算机组成原理 45 分操作系统 35 分计算机网络 25 分四、 试卷题型结构单项选择题 80 分(40 小题,每小题 2 分)综合应用题 70 分计算机组成原理【考查
2、目标】1. 理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。2. 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法。3. 能够运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算、分析,并能对一些基本部件进行简单设计。一、 计算机系统概述(一) 计算机发展历程第一台电子计算机 ENIAC(Electronic Numerical Integrator And Computer)诞生于 1946 年的美国宾夕法尼亚大学。ENIAC 用了 18000 电子管、15
3、00 继电器、重 30 吨、占地 170m3、耗电 140kw、每秒计算 5000 次加法。冯诺依曼(VanNeumann)首次提出存储程序的概念,将数据和程序一起放在存储器中,使得编程更加方便。50 多年来,虽然对冯诺依曼机进行了很多改革,但结构变化不大,仍然称为冯诺依曼机。一般把计算机的发展分为四个阶段:第一代(1946-50s 后期):电子管计算机时代;第二代(50s 中期-60s 后期):晶体管计算机时代;第三代(60s 中期-70s 前期):集成电路计算机时代;第四代(70s 初-):大规模集成电路计算机时代。(二) 计算机系统层次结构1. 计算机硬件的基本组成计算机硬件主要指计算机
4、的实体部分,通常有运算器、控制器、存储器、输入和输出五部分。CPU 是指将运算器和控制器集成到一个电路芯片中。2. 计算机软件的分类计算机软件按照面向对象的不同可分两类:系统软件:用于管理整个计算机系统,合理分配系统资源,确保计算机正常高效地运行,这类软件面向系统。应用软件:是面向用户根据用户的特殊要求编制的应用程序,这类软件通常实现用户的某类要求。3. 计算机的工作过程(1)计算机的工作过程就是执行指令的过程指令由操作码和操作数组成:操作码指明本指令完成的操作地址码指明本指令的操作对象(2)指令的存储指令按照存储器的地址顺序连续的存放在存储器中。(3)指令的读取为了纪录程序的执行过程,需要一
5、个记录读取指令地址的寄存器,称为指令地址寄存器,或者程序计数器。指令的读取就可以根据程序计数器所指出的指令地址来决定读取的指令,由于指令通常按照地址增加的顺序存放,故此,每次读取一条指令之后,程序计数器加一就为读取下一条指令做好准备。(4)执行指令的过程在控制器的控制下,完成以下三个阶段任务:1)取指令阶段按照程序计数器取出指令,程序计数器加一2)指令译码阶段操作码 地址码分析操作码,决定操作内容,并准备操作数3)指令执行阶段执行操作码所指定内容(三) 计算机性能指标1. 吞吐量、响应时间(1) 吞吐量:单位时间内的数据输出数量。(2) 响应时间:从事件开始到事件结束的时间,也称执行时间。2.
6、 CPU 时钟周期、主频、CPI、CPU 执行时间(1) CPU 时钟周期:机器主频的倒数,Tc(2)主频:CPU 工作主时钟的频率,机器主频 Rc(3)CPI:执行一条指令所需要的平均时钟周期(4)CPU 执行时间:TCPU=InCPITCIn 执行程序中指令的总数CPI 执行每条指令所需的平均时钟周期数TC 时钟周期时间的长度3. MIPS、MFLOPS(1)MIPS:MIPS(Million Instructions Per Second) MIPS = In/(Te106)= In/(InCPITc106)= Rc/(CPI106)Te:执行该程序的总时间In:执行该程序的总指令数Rc
7、:时钟周期 Tc 的到数MIPS 只适合评价标量机,不适合评价向量机。标量机执行一条指令,得到一个运行结果。而向量机执行一条指令,可以得到多个运算结果。(2) MFLOPS:MFLOPS(Million Floating Point Operations Per Second)MFLOPS=Ifn/(Te106)Ifn:程序中浮点数的运算次数MFLOPS 测量单位比较适合于衡量向量机的性能。一般而言,同一程序运行在不同的计算机上时往往会执行不同数量的指令数,但所执行的浮点数个数常常是相同的。二、 数据的表示和运算(一) 数制与编码1. 进位计数制及其相互转换1)进位计数制进 位 计 数 制 是
8、 指 按 照 进 位 制 的 方 法 表 示 数 , 不 同 的 数 制 均 涉 及 两 个 基 本 概 念 : 基 数 和权 。基数:进位计数制中所拥有数字的个数。权:每位数字的值等于数字乘以所在位数的相关常数,这个常数就是权。任意一个 R 进制数 X,设整数部分为 n 位,小数部分为 m 位,则 X 可表示为:Xa n-1rn-1 + an-2rn-2 + + a 0r0 + a-1r-1 + a-2r-2 + + a -mr-m(X)r = mniiK12)不同数制间的数据转换 (1)二、八、十六进制数转换成十进制数利用上面讲到的公式:(N)2=Di2 i 、(N)8=Di8 i、 (N
9、)16=Di16 i、进行计算。(2)十进制数转换成二进制数通常要对一个数的整数部分和小数部分分别进行处理,各自得出结果后再合并。 对整数部分,一般采用除 2 取余数法,其规则如下:将十进制数除以 2,所得余数(0 或 1)即为对应二进制数最低位的值。然后对上次所得商除以 2,所得余数即为二进制数次低位的值,如此进行下去,直到商等于 0 为止,最后得的余数是所求二进制数最高位的值。 对小数部分,一般用乘 2 取整数法,其规则如下:将十进制数乘以 2,所得乘积的整数部分即为对应二进制小数最高位的值,然后对所余数的小数部分部分乘以 2,所得乘积的整数部分为次高位的值,如此进行下去,直到乘积的小数部
10、分为 0,或结果已满足所需精度要求为止。(3)二进制数、八进制数和十六进制数之间的转换八进制数和十六进制数是从二进制数演变而来的:由 3 位二进制数组成 1 位八进制数;由 4 位二进制数组成 1 位十六进制数。对于一个兼有整数和小数部分的数以小数点为界,小数点前后的数分别分组进行处理,不足的位数用 0 补足。对 整 数 部 分 将 0 补 在 数 的 左 侧 , 对 小 数 部 分 将 0 补 在 数 的 右 侧 。 这 样 数 值 不 会 发 生 差错 。2. 真值和机器数真值:数据的数值通常以正(+)负(-)号后跟绝对值来表示,称之为“真值” 。 机器数:在计算机中正负号也需要数字化,一
11、般用 0 表示正号,1 表示负号。把符号数字化的数成为机器数。3. BCD 码在计算机中采用 4 位二进制码对每个十进制数位进行编码。4 位二进制码有 16 种不同的组合,从中选出 10 种来表示十进制数位的 09,用 0000,0001,1001 分别表示0,1,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binary coded decima1,简称 BCD)码” 。在 计 算 机 内 部 实 现 BCD 码 算 术 运 算 , 要 对 运 算 结 果 进 行 修 正 , 对 加 法 运 算 的 修 正 规 则 是 :如果两个一位 BCD
12、 码相加之和小于或等于(1001)2,即(9)10,不需要修正;如相加之和大于或等于(1010)2,或者产生进位,要进行加 6 修正,如果有进位,要向高位进位。4. 字符与字符串在计算机中要对字符进行识别和处理,必须通过编码的方法,按照一定的规则将字符用一组二进制数编码表示。字符的编码方式有多种,常见的编码有 ASCII 码、EBCDIC 码等。1)ASCII 码ASCII 码用 7 位二进制表示一个字符,总共 128 个字符元素,包括 10 个十进制数字(0-9) 、52 个英文字母(A-Z 和 a-z) 、34 专用符号和 32 控制符号。2)EBCDIC 码为 Extended Bina
13、ry Coded Decimal Interchange Code 的简称,它采用8 位来表示一个字符。3)字符串的存放向量存储法:字符串存储时,字符串中的所有元素在物理上是邻接的。串表存储法:字符串的每个字符代码后面设置一个链接字,用于指出下一个字符的存储单元的地址。5. 校验码数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。这样,可以通过检测编码的合法性来达到发现错误的目的。合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的。 码距: 码距根据任意两个合法码之间至
14、少有几个二进制位不相同而确定的,仅有一位不同,称其码距为 1。1)奇偶校验码它的实现原理,是使码距由 1 增加到 2。若编码中有 1 位二进制数出错了,即由 1 变成 0,或者由 0 变成 1。这样出错的编码就成为非法编码,就可以知道出现了错误。在原有的编码之上再增加一位校验位,原编码 n 位,形成新的编码为 n+1 位。增加的方法有 2 种:奇校验:增加位的 0 或 1 要保证整个编码中 1 的个数为奇数个。偶校验:增加位的 0 或 1 要保证整个编码中 1 的个数为偶数个。 2)海明校验码它的实现原理,是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错就
15、会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。假设校验位的个数为 r,则它能表示 2r 个信息,用其中的一个信息指出“没有错误” ,其余 2r-1 个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r 个信息能用于纠正被传送数据的位数,也就是说要满足关系:2r=k+r+1 3)CRC 校验码CRC 校验码一般是指 k 位信息之后拼接 r 位校验码。关键问题是如何从 k 位信息方便地得到 r 位校验码,以如何从位 k+r 信息码判断是否出错。将带编码的 k 位有效信息位组表达为多项式:M(x)=Ck-1xk-1+
16、Ck-2xk-2 + + C ixi + C1x + C0式 Ci 中为 0 或 1.若将信息位左移 r 位,则可表示为多项式 M(x).xr。这样就可以空出 r 位,以便拼接r 位校验位。CRC 码是用多项式 M(x).xr 除以生成多项式 G(x)所得的余数作为校验码的。为了得到r 位余数,G(x)必须是 r+1 位。设所得的余数表达式为 R(x),商为 Q(x)。将余数拼接在信息位组左移 r 位空出的 r 位上,就构成了 CRC 码,这个码的可用多项式表达为:M(x)xr+R(x)=Q(x)G(x)+R(x)+R(x)=Q(x)G(x)+R(x)+R(x)=Q(x)G(x)因此,所得 C
17、RC 码可被 G(x)表示的数码除尽。将收到的 CRC 码用约定的生成多项式 G(x)去除,如果无错,余数应为 0,有某一位出错,余数不为 0. (二) 定点数的表示和运算1. 定点数的表示1)无符号数的表示无符号数就是指正整数,机器字长的全部位数均用来表示数值的大小,相当于数的绝对值。对于字长为 n+1 位的无符号数的表示范围为:0-2n+1-12)带符号数的表示带符号数是指在计算机中将数的符号数码化。在计算机中,一般规定二进制的最高位为符号位,最高位为“”表示该数为正,为“”表示该数为负。这种在机器中使用符号位也被数码化的数称为机器数。根据符号位和数值位的编码方法不同,机器数分为原码、补码
18、和反码。(1)原码表示法机器数的最高位为符号位,0 表示正数,1 表示负数,数值跟随其后,并以绝对值形式给出。这是与真值最接近的一种表示形式。原码的定义:01|;10; XX原(2)补码表示法机器数的最高位为符号位,0 表示正数,1 表示负数,其定义如下:0|;20; XX补(3)反码表示法机器数的最高位为符号,0 表示正数,1 表示负数。反码的定义:0;20; Xn反2. 定点数的运算1)定点数的位移运算左移,绝对值扩大;右移,绝对值缩小。算术移位规则符号位不变码制 添补代码正数 0原 0右移添 0补左移添 1负数反 1算术移位和逻辑移位的区别:算术移位:带符号数移位;逻辑移位:无符号数移位
19、;2)原码定点数的加/减运算;对原码表示的两个操作数进行加减运算时,计算机的实际操作是加还是减,不仅取决指令中的操作码,还取决于两个操作数的符号。而且运算结果的符号判断也较复杂。例如,加法指令指示做(A)(B)由于一操作数为负,实际操作是做减法(A)-(+B) ,结果符号与绝对值大的符号相同。同理,在减法指令中指示做(A)(B)实际操作做加法(A)(B) ,结果与被减数符号相同。由于原码加减法比较繁琐,相应地需要由复杂的硬件逻辑才能实现,因此在计算机中很少被采用。3)补码定点数的加/减运算;(1) 加法 整数 A补 + B补= A+B补(mod 2 n+1)小数 A补 + B补= A+B补(m
20、od 2)(2) 减法 整数 A补 - B补= A+(-B)补= A补 + - B补(mod 2 n+1)小数 A补 - B补= A+(-B)补= A补 + - B补(mod 2)无需符号判定,连同符号位一起相加,符号位产生的进位自然丢掉4)定点数的乘/除运算(1)一位乘法原码定点一位乘法 两个原码数相乘,其乘积的符号为相乘两数的异或值,数值两数绝对值之积。设 X原=X0 X1 X2 Xn Y原=Y0 Y1 Y2 YnXY原=X原Y原= (X0Y0)(X1 X2 Xn)(Y1 Y2 Yn)符号表示把符号位和数值邻接起来。 定点补码一位乘法有的机器为方便加减法运算,数据以补码形式存放。乘法直接用
21、补码进行,以减少转换次数。具体规则如下:XY补=X补(Y0 + 0. Y1 Y2 Yn )布斯法“布斯公式”:在乘数 Yn 后添加 Yn+1=0。按照 Yn+1 ,Yn 相邻两位的三种情况,其运算规则如下:(1) Yn+1 ,Yn =0( Yn+1 Yn =00 或 11) ,部分积加 0,右移 1 位;(2) Yn+1 ,Yn =1( Yn+1 Yn =10) ,部分积加X补,右移 1 位;(3) Yn+1 ,Yn =-1( Yn+1 Yn =01) ,部分积加X补,右移 1 位最后一步不移位。(2)两位乘法原码两位乘法,因此实际操作用 Yi-1、Yi、C 三位来控制,运算规则如下Yi-1
22、Yi C 操作0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1+0, 右移 2 位 0C +X, 右移 2 位 0C +X, 右移 2 位 0C +2X,右移 2 位 0C +2X,右移 2 位 0C -X, 右移 2 位 1C -X, 右移 2 位 1C +0, 右移 2 位 1C 补码两位乘法根据前述的布斯算法,将两步合并成一步,即可推导出补码两位乘的公式。Yn-i-1 Yn-i Yn-i+1 Pi+2补0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1+0, 右移 2 位 +X补, 右移 2 位 +X补, 右移 2 位 +2X
23、补,右移 2 位 -2X补,右移 2 位 -X补, 右移 2 位 -X补, 右移 2 位 +0, 右移 2 位 求部分积的次数和右移操作的控制问题。当乘数由 1 位符号位和以 n(奇数)位数据位组成时,求部分积的次数为(1n)2,而且最后一次的右移操作只右移一位。若数值位本身为偶数 n,可采用下述两种方法之一:可在乘数的最后一位补一个 0,乘数的数据位就成为奇数,而且其值不变,求部分积的次数为 1+(n+l)/2,即 n/21,最后一次右移操作也只右移一位。乘数增加一位符号位,使总位数仍为偶数,此时求部分积的次数为 n/2+1,而且最后一次不再执行右移操作。(3)补码除法定点原码一位除法1恢复
24、余数法被除数(余数)减去除数,如果为 0 或者为正值时,上商为 1,不恢复余数;如果结果为负,上商为 0,再将除数加到余数中,恢复余数。余数左移 1 位。2加减交替法当余数为正时,商上 1,求下一位商的办法,余数左移一位,再减去除数;当余数为负时,商上 0,求下一位商的办法,余数左移一位,再加上除数。定点补码一位除法(加减交替法)1如果被除数与除数同号,用被除数减去除数;若两数异号,被除数加上除数。如果所得余数与除数同号商上 1,否则,商上 0,该商为结果的符号位。2求商的数值部分。如果上次商上 1,将除数左移一位后减去除数;如果上次商上0,将余数左移一位后加除数。然后判断本次操作后的余数,如
25、果余数与除数同号商上 1,如果余数与除数异号商上 0。如此重复执行 n-1 次(设数值部分 n 位) 。3 商 的 最 后 一 位 一 般 采 用 恒 置 1 的 办 法 , 并 省 略 了 最 低 +1 的 操 作 。 此 时 最 大 的 误 差 为 2-n。5)溢出概念和判别方法当运算结果超出机器数所能表示的范围时,称为溢出。显然,两个异号数相加或两个同号数相减,其结果是不会溢出的。仅当两个同号数相加或者两个异号数相减时,才有可能发溢出的情况,一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来。判别方法有三种:1当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢
26、出。2当任意符号两数相加时,如果 C=Cf,运算结果正确,其中 C 为数值最高位的进位,Cf 为符号位的进位。如果 CCf ,则为溢出,所以溢出条件=CCf 。3采用双符号 fs2fs1。正数的双符号位为 00,负数的双符号位为 11。符号位参与运算,当结果的两个符号位甲和乙不相同时,为溢出。所以溢出条件= fs2fs1 ,或者溢出条件= fs2fs1 + fs2fs1(三) 浮点数的表示和运算1. 浮点数的表示1)浮点数的表示范围;浮点数是指小数点位置可浮动的数据,通常以下式表示:N=MRE其中,N 为浮点数,M 为尾数,E 为阶码,R 称为“阶的基数(底) ”,而且 R 为一常数,一般为
27、2、8 或 16。在一台计算机中,所有数据的 R 都是相同的,于是不需要在每个数据中表示出来。因此,浮点数的机内表示一般采用以下形式:浮点数的机内表示一般采用以下形式:Ms E M1 位 n+1 位 m 位Ms 是尾数的符号位,设置在最高位上。E 为阶码,有 n+1 位,一般为整数,其中有一位符号位,设置在 E 的最高位上,用来表正阶或负阶。M 为尾数,有 m 位,由 Ms 和 M 组成一个定点小数。Ms=0,表示正号,Ms=1,表示负。为了保证数据精度属数通常用规格化形式表示:当 R2,且尾数值不为 0 时,其绝对值大于或等于(0.5)10。对非规格化浮点数,通过将尾数左移或右移,并修改阶码
28、值使之满足规格化要求。2)IEEE754 标准根据 IEEE 754 国际标准,常用的浮点数有两种格式:(1)单精度浮点数(32 位) ,阶码 8 位,尾数 24 位(内含:位符号位) 。(2)双精度浮点数(64 位) ,阶码 11 位,尾数 53 位(内含:位符号位) 。单精度格式 32 位,阶码为 8 位,尾数为 23 位。另有一位符号位 S,处在最高位。由于 IEEE754 标准约定在小数点左部有一位隐含位,从而实际有效位数为 24 位。这样使得尾数的有效值变为 1.M 。例如,最小为 x1.00,,最大为 x1.11。规格化表示。故小数点左边的位横为 1,可省去。 阶码部分采用移码表示
29、,移码值 127,1 到 254 经移码为-126 到+127。S(1 位)E(8 位) M(23 位) N(共 32 位) 符号位 0 0 0 符号位 0 不等于 0 (-1)S2-126(0.M) 为非规格化数 符号位 1 到 254 之间 - (-1)S2E-127(1.M) 为规格化数 符号位 255 不等于 0 NaN(非数值) 符号位 255 0 无穷大 0 有了精确的表示,无穷大也明确表示。对于绝对值较小的数,可以采用非规格化数表示,减少下溢精度损失。非规格化数的隐含位是 0,不是 1。2. 浮点数的加/减运算加减法执行下述五步完成运算:1) “对阶”操作比较两浮点数阶码的大小,
30、求出其差 E,保留其大值 E,E=max(Ex, Ey)。当 E0时,将阶码小的尾数右移 E 位,并将其阶码加上 E,使两数的阶码值相等。2)尾数加减运算执行对阶之后,两尾数进行加减操作。3)规格化操作规格化的目的是使得尾数部分的绝对值尽可能以最大值的形式出现。4)舍入在执行右规或者对阶时,尾数的低位会被移掉,使数值的精度受到影响,常用“0”舍“1”入法。当移掉的部分最高位为 1 时,在尾数的末尾加 1,如果加 1 后又使得尾数溢出,则要再进行一次右规。5)检查阶码是否溢出阶码溢出表示浮点数溢出。在规格化和舍入时都可能发生溢出,若阶码正常,加/减运算正常结束。若阶码下溢,则设置机器运算结果为机
31、器零,若上溢,则设置溢出标志。(四) 算术逻辑单元 ALU1. 串行加法器和并行加法器1)串行进位加法器并行加法器可以同时对数据的各位进行相加,一般用 n 个全加器来实现 2 个操作数的各位同时向加。其操作数的各位是同时提供的,由于进位是逐位形成,低位运算所产生的进位会影响高位的运算结果。串行进位(也称波形进位)加法器,逻辑电路比较简单,但是最高位的加法运算,一定要等到所有低位的加法完成之后才能进行,低位的进位要逐步的传递到高位,逐级产生进位,因此运算速度比较慢。串行进位加法器2)并行进位加法器为了提高运算速度,减少延迟时间,可以采用并行进位法,也叫提前进位或先行进位。全加器中,输入 Ai 、
32、Bi、Ci-1,输出:Si = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1Ci = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 = Ai Bi + (Ai+Bi)Ci-1进位产生函数:Gi = Ai Bi进位传递函数:Pi = Ai+BiCi = Gi + Pi Ci-1C4 = G4 + P4G3 + P4P3G2 + P4P3P2G1 + P4P3P2P1C0并行进位加法器的运算速度很快,形成最高进位输出的延迟时间很短,但是以增加硬件逻辑线路为代价。对于长字长的加法器,往往将加法器分成若干组,在组内采用
33、并行进位,组间则采用串行进位或并行进位,由此形成多种进位结构。(1)单级先行进位单级先行进位方式将 n 位字长分为若干组,每组内采用并行进位方式,组与组之间册采用串行进位方式。(2)多级先行进位多级先行进位在组内和组间都采用先行进位方式。16 位单级先行进位加法器2. 算术逻辑单元 ALU 的功能和机构ALU 部件是运算器中的主要组成部分,又称为多功能函数发生器,主要用于完成各种算术运算和逻辑运算。ALU 的算术运算部件包含加法器、减法器、乘法器、除法器、增量器(+1) 、减量器(-1) 、BCD 码运算器等组件。ALU 的主要工作是根据 CPU 的指令要求执行各种指定的运算,如加法、减法、乘
34、法、除法、比较、逻辑移位等操作。通用寄存器组是一组存取速度最快的存储器,用于保存参加运算的操作数和中间结果。访问寄存器无需高速缓存,也不需要运行总线周期,因此指令的执行速度很快。几乎所有的指令都要将寄存器指定为一个操作数,有些指令还要求将操作数存放在专用的寄存器中。专用寄存器通常用于表示 CPU 所处于某种系统状态,ALU 中有两个重要的状态寄存器:指令指针寄存器 IP(即程序计数器 PC)和标志寄存器 FLAGS。三、 存储器层次机构(一) 存储器的分类1. 按存储介质分类1)半导体存储器2)磁表面存储器3)磁芯存储器4)光盘存储器2. 按存取方式分类1)随机存储器2)只读存储器3)串行访问
35、存储器3. 按在计算机中的作用分类存储器主存闪速存储器(Flash Memory)辅存缓存(Cache)只读存储器(ROM)静态 RAM动态 RAM随机存储器(RAM)MROMPROMEPROMEEPROM磁盘磁带光盘(二) 存储器的层次化结构存储器有 3 个重要的指标:速度、容量和每位价格,一般来说,速度越快,位价越高;容量越大,位价越低,容量大,速度就越低。上述三者的关系用下图表示:存储系统层次结构主要体现在缓存-主存-辅存这两个存储层次上,如下图所示:寄存器缓存主存磁盘磁带CPU 缓存 主存 辅存(三) 半导体随机存取存储器1. SRAM 存储器的工作原理1)静态存储单元SRAM 静态存
36、储单元的每个存储位需要四到六个晶体管组成。比较典型的是六管存储单元,即一个存储单元存储一位信息“0”或“1” 。静态存储单元保存的信息比较稳定,信息为非破坏性读出,故不需要重写或者刷新操作;另一方面,其结构简单、可靠性高、速度较快,但其占用元件较多,占硅片面积大,且功耗大,所以集成度不高。静态随机存储单元2. DRAM 存储器的工作原理1)动态存储单元常见的动态 RAM 存储单元有三管式和单管式两种,它们的共特点是靠电容存储电荷的原理来寄存信息。若电容上存有足够的电荷表示“” ,电容上无电荷表示“0” 。电容上的电荷一般只能维持 1-2ms,因此即使电源不掉电,电容上的电荷会自动消失。因此,为
37、保证信息的不丢失,必须在 2ms 之内就要对存储单元进行一次恢复操作,这个过程称为再生或者刷新。与静态 RAM 相比,动态 RAM 具有集成度更高、功耗更低等特点,目前被各类计算机广泛使用。三管动态 RAM 基本单元单管动态 RAM 基本单元(四) 只读存储器前面介绍的 DRAM 和 SRAM 均为可任意读写的随机存储器,当掉电时,所存储的内容消失,所以是易失性存储器。只读存储器,即使停电,所存储的内容也不丢失。根据半导体制造工艺的不同,可分为 ROM,PROM,EPROM,E2ROM 和 Flash Memory1. 只读存储器(ROM)掩模式 ROM 由芯片制造商在制造时写入内容,以后只能
38、读而不能再写入。其基本存储原理是以元件的“有无”来表示该存储单元的信息(“1”或“0” ) ,可以用二极管或晶体管作为元件,显而易见,其存储内容是不会改变的。2. 可编程序的只读存储器(PROM)PROM 可由用户根据自己的需要来确定 ROM 中的内容,常见的熔丝式 PROM 是以熔丝的通和断开来表示所存的信息为“1”或“0” 。刚出厂的产品,其熔丝是全部接通的。根据需要断开某些单元的熔丝(写入) 。显而易见,断开后的熔丝是不能再接通了,因而一次性写入的存储器。掉电后不会影响其所存储的内容。3. 可擦可编程序的只读存储器(EPROM)为了能修改 ROM 中的内容,出现了 EPROM。利用浮动栅
39、 MOS 电路保存信息,信息的改写用紫外线照射即可擦除。4. 可电擦可编程序只读存储器(E2PROM)E2PROM 的编程序原理与 EPROM 相同,但擦除原理完全不同,重复改写的次数有限制(因氧化层被磨损) ,一般为 10 万次。其读写操作可按每个位或每个字节进行,类似 SRAM,但每字节的写入周期要几毫秒,比 SRAM 长得多。E2PROM 每个存储单元采则 2 个晶体管。其栅极氧化层比 EPROM 薄,因此具有电擦除功能。 5. 快除读写存储器(Flash Memory) F1ash Memory 是在 EPROM 与 E2PROM 基础上发展起来的,其读写过程和 E2PROM 不同,F
40、1ash Memory 的读写操作一般是以块为单位。(五) 主存储器与 CPU 的连接1 个存储器的芯片的容量是有限的,它在字数或字长方面与实际存储器的要求都有很大差距,所以需要在字向和位向进行扩充才能满足需要。根据存储器所需的存储容量和所提供的芯片的实际容量,可以计算出总的芯片数。一个存储器的容量为 MN 位,若使用LK 位存储器芯片,那么,这个存储器共需要 M/LN/K 存储器芯片。1位扩展位扩展指的是用多个存储器器件对字长进行扩充。位扩展的连接方式是将多片存储器的地址、片选己、读写控制端 R/W 可相应并联,数据端分别引出。2)字扩展 字扩展指的是增加存储器中字的数量。静态存储器进行字扩
41、展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。 3)字位扩展 实际存储器往往需要字向和位向同时扩充。(六) 双口 RAM 和多模块存储器1.双端口存储器双端口存储器是一种具有两个单独的读/写端口及控制电路的存储器,通过增加一个读/写端口,双端口存储器扩展了存储器的的信息交换能力。2.多模块存储器为了解决 CPU 与主存储器之间的速度匹配问题,在高速存储器中,普遍采用并行主存系统。即利用类似存储器扩展(位扩展、字扩展、字位扩展)的方法,将 n 个字长为 W 位的存储器并行连接,构建一个更大的存储器。并行主存有单体多字方式、多体并行方式和多体交叉方式。(七
42、) 高速缓冲存储器(Cache)1. 程序访问的局部性从大量的统计中得到的一个规律是,程序中对于存储空间 90%的访问局限于存储空间的 10%的区域中,而另外 10%的访问则分布在存储空间的其余 90%的区域中。这就是通常说的局部性原理。访存的局部性规律包括两个方面:时间局部性:如果一个存储项被访问,则可能该项会很快被再次访问。 空间局部性:如果一个存储项被访问,则该项及其邻近的项也可能很快被访问。2. Cache 的基本工作原理Cache 通常由两部分组成,块表和快速存储器。其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache 地址映象机构借助查表判定该地址的存储单
43、元是否在 Cache 中,如果在,则 Cache 命中,按 Cache 地址访问 Cache。否则,Cache 不命中,则需要访问主存,并从主存中调入相应数据块到 Cache 中,若 Cache 中已写满,则要按某种算法将 Cache 中的某一块替换出去,并修改有关的地址映象关系。从这个工作原理我们可以看出,它已经涉及到了两个问题。首先是定位、然后是替换的问题。Cache 的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常 Cache 被集成到 CPU 内以提高访问速度。3. Cache 和主存之间的映射方式因为处理机访问都是按主存地址访问的,而 Cache 的空间远小于主
44、存,如何知道这一次的访问内容是不是在 Cache 中,在 Cache 中的哪一个位置呢? 这就需要地址映象,即把主存中的地址映射成 Cache 中的地址。让 Cache 中一个存储块(空间)与主存中若干块相对应,如此,访问一个主存地址时,就可以对应地知道在 cache 中哪一个地址了。地址映象的方法有三种:直接映象、全相联映象和组相联映象。 直接映象就是将主存地址映象到 Cache 中的一个指定地址。任何时候,主存中存储单元的数据只能调入到 Cache 中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去。直接映射全相联映象就是任何主存地址可映象到任何 Cac
45、he 地址的方式。在这种方式下,主存中存储单元的数据可调入到 Cache 中的任意位置。只有在 Cache 中的块全部装满后才会出现块冲突。全相连映射组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象,而组内各块之间则是全相联映象。组相联映射4. Cache 中主存块的替换算法在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个 Cache 块。即替换算法。思想 优点 缺点 随机算法RAND 用软的或硬的随机数产生器产生上层中要被替换的页号 简单、易于实
46、现 没有利用上层存储器使用的“历史信息“,没有反映等程序局部性,命中率低。 先进先出FIFO 选择最早装入上层的页作为被替换的页 实现方便,利用了主存历史的信息 不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象。 近期最少使用法LRU 选择近期最少访问的页作为被替换的页 比较正确反映程序局部性,利用访存的历史信息,命中率较高 实现较复杂 优化替换算法 OPT 将未来近期不用的页换出去 命中率最高,可作为衡量其他替换算法的标准 不现实,只是一种理想算法 5. Cache 写策略对 Cache 的写操作,情况比读操作要复杂一些。由于写入 Cache 时,并没有写入主存,因此就出现 Ca
47、che 和主存数据不一致的情况。 如何处理 Cache 和主存不一致的方法就称为更新策略。更新策略 思想 优点 缺点 写回法 是指在 CPU 执行写操作时,信息只写入 Cache 中,仅当需要替换时,才将改写过的Cache 块先送回主存(写回),然后再调块(设置 dirty 位)有利于省去许多将中间结果写入主存的无谓开销。 需设修改位增加 Cache的复杂性 全写法(写直达法)在写操作时,将数据同时写入 Cache 和主存 实现开销小、简单 为了写中间结果浪费了不少时间 另外,当写不命中时(也就是写 Cache 块时,这块早被人替换出去而在 Cache 中找不到时)是不是要把这块再取回 Cac
48、he 中,有两个解决方法: 不按写分配法,就是直接写到主存里,不再把该地址对应的块调回 Cache 中。 按写分配法,就是写到主存,而且把这一块从主存中调入到 Cache。一般写回法用按写分配法,全写法则采用不按写分配。(八) 虚拟存储器1. 虚拟存储器的基本概念虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间。从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度。虚拟存储器的访问也涉及到虚地址与实地址的映象、替换算法等,这与 Cache 中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位。设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率。虚拟存储器与 Cache 存储器的管理方法有许多相同之处,它们都需要地址映象表和地址变换机构。但是二者也是不同的。虚拟存储器的三种不同管理方式:按存储映象算法,分为段式、页式和段页式等,这些管理方式的基本原理是类似的。2. 页式虚拟存储器页式管理:是把虚拟存储空间和实际空间等分成固定大