配色: 字号:
存储器体系结构
2022-09-10 | 阅:  转:  |  分享 
  
第6章存储器体系结构随着计算机和微电子技术的发展,存储器无论是器件还是体系结构都发生了很大的变化。本章首先介绍存储器的基本概念、半导体
存储器的分类与性能指标、SRMA和DRAM存储器工作原理、典型RAM和ROM芯片的特性与工作方式、主存扩展、外部存储器的工作原理与
性能指标。然后,介绍存储器的层次结构、性能参数,多体并行存储器、磁盘阵列、高速缓冲存储器Cache与虚拟存储器的构成及管理方式。
重点是SRMA和DRAM存储器工作原理、主存扩展、磁盘工作原理、存储器层次结构、高速缓冲存储器Cache与虚拟存储器的构成及管理方
式。第6章存储器体系结构6.1存储器概述6.2随机存取存储器RAM6.3只读存储器ROM6.4存储器与CPU
的连接6.6存储器的层次结构与系统组成6.7高速缓冲存储器Cache6.8虚拟存储器6.9存储器保护措施6.1存
储器概述6.1.1存储器分类在计算机中,存储器是用来存储程序和数据的部件。按照与CPU的连接与工作方式,分为内存储器和外存储器
。内存储器也称为主存储器,简称为主存,用来存放正在执行的程序和正被处理的数据。外存储器用来存放暂不执行和不被处理的数据。如今,无
论是主存储器还是外存储器,按其工作原理与工作方式已有多种类型。1.主存储器主存储器按照读写方式分为随机存取存储器和只读存储器。
1)随机存取存储器RAM随机存取存储器RAM(Randomaccessmemory)是在计算机工作时,其中的内容可以随时读
取或者写入,用来存储正在执行的程序和被处理的数据。按其电路形式,随机存取存储器可分为双极型和MOS型。双极型存取速度快,功耗大,
集成度小,一般用作容量较小的高速缓冲存储器。MOS型功耗小,集成度高,常用作主存储器。按照结构和制作工艺的不同,随机存取存储器又
可分为静态存储器(SRAM)和动态存储器(DRAM)。2)只读存储器ROM只读存储器ROM(Readonlymemory)
是其中的内容事先写入,计算机工作时只能读出使用,而不能写入。常用来存放常数、固定程序、字符转换代码、汉字字库以及图形符号等。只读
存储器按照制作工艺可分为:固定只读存储器(ROM)可写入只读存储器(PROM)可改写只读存储器(
EPROM)电擦除只读存储器(E2PROM)FLASH快闪存储器。上述存储器是一种并行存取存储器。此外还有串行存取
存储器,比如电耦合器件(CCD)和磁泡存储器等,目前在计算机中不多使用。2.外存储器外存储器用来存储CPU暂不执行和不被处理
的数据,常用的有磁表面存储器和光存储器。磁表面存储器主要指磁盘。光存储器主要是指光盘。6.1.2存储器的主要性能指标1.容量
容量是存储器可存储二进制信息的量,最小存储单位是位。但在一般使用中常以8位为一组,构成一个存储单元,称为字节(Byte),用B表
示,常以字节为单位编址。因此,字节(Byte)成为存储器容量的基本单位,常用KB、MB、GB和TB表示。存储器容量由地址的位数决定
,若有n位地址,地址范围为2n,例如:1KB=210B=1024B1MB=220B=1024KB=1048576B1GB
=230B=1024MB=1073741824B1TB=240B=1024GB=1099511627776B有时
,也用字节×8表示存储器的位容量,例如640KB的位容量为640×1024×8。2.存取时间存取时间是从启动一次存储器读/写
操作到完成该操作所用的时间。也就是从CPU发读/写命令开始,到数据取出或将数据写入指定单元所用的时间。目前高速存储器的存取时间一般
小于20ns,中速存取时间约为60~100ns,低速存取时间则在100ns以上。3.存储周期存取周期是指CPU启动一次完整
的存储器操作所需用的时间,通常略大于存取时间,即从发送地址开始到读/写操作结束,其单位也是ns。图6.1随机存储器结构框图4
.可靠性可靠性是指存储的数据不被丢失,它反映的是存储器对温度、电磁场等环境因素变化的抵抗能力,常用无故障时间表示。5.性能
价格比存储器的性能包括以上几个方面,但是成本也占很大的比重。因此,常以性能价格比来表示,即高性能,低价格。图6.1随机存储
器结构框图6.1.3存储器的组成一个完整的主存储器如图6.1所示,包括地址译码器、存储器阵列、读写控制逻辑电路及输入/输出缓
冲器。在过去的计算机中,有的主存储器设有地址寄存器。1.存储体存储体是存储器中所有存储单元的集合,所有单元按一定的方式排列。一
种是顺序排列,也称为线性排列;另一种是排成二维阵列,也称为存储器矩阵。每个单元有唯一的地址,可存储1位或多位二进制数。例如,SR
AM2114有10条地址线和4条数据线,存储单元数为210(1024),每个单元有4位,容量为1024×4位。在构成字节(Byt
e)单元时,需2块并联使用。图6.2单译码方式2.地址译码器地址译码器用来对输入的地址进行译码,以选择指定的存储器单元。
对于N个存储单元需要n条地址线,它们之间的关系为N=2n。译码方式与存储器的结构有关,主要有两种,即单译码与复合译码方式。1)单
译码方式单译码方式也称为线性译码或字译码方式,逻辑电路如图6.2所示。每一个字的所有位排成一行,由行地址译码选择。当某一行选中时
,各位经各自的数据线同时读出或者写入。例如地址线A3~A0输入0101时,行选择线X5为高电平,第5单元选中。因为仅有一个方向的地
址译码,因此称为单译码方式。图6.3复合译码方式2)复合译码方式复合译码方式是由纵横交叉的行选择线和列选择线配合选择某一
存储单元,逻辑电路如图6.3所示。由于有两个方向的地址译码,即X方向和Y方向,因此也称为双译码方式。存储器工作时,低位地址送行地
址译码器,选择阵列中的某一行,高位地址送列地址译码器,选择阵列中的某一列,交叉处为选中单元。例如设地址线A7~A0输入为00011
010时,X10行、Y1列选中。从以上两种译码方式可以看出,当存储容量为64个单元时,单译码方式需要64条选择线,而复合译码只需
8+8=16条选择线。因此在一般使用中,单译码方式多用于小容量存储器;当存储容量较大时,多采用复合译码方式。另外,在由多块存储器
芯片构成存储器时,还需由高位地址经译码产生一个选择某一芯片的片选信号,如图6.1所示。3.控制逻辑电路控制逻辑电路接收来自
CPU的时钟与读/写信号,按地址控制存储器的读/写操作。4.输入/输出缓冲器在一般存储器的数据输入/输出端均设有三态双向缓冲
器,用以控制数据的输出,或者把数据线上的数据写入到主存的指定单元中。5.读写过程1)存储器写操作存储器写入时首先将地址送地
址总线,经译码选中某一存储单元。同时写入数据经数据总线送三态输入缓冲器;当写信号有效时,在内部控制逻辑电路的控制下,将外部数据线上
的数据写入到所选中的存储单元中。2)存储器读操作存储器读出时首先将地址送地址总线,经译码选中某一存储单元。当读信号有效时,所选
中单元中的数据读出,经三态输出缓冲器送到外部数据总线上。图6.4MOS型六管存储电路6.2随机存取存储器RAM在计算机中
,随机存取存储器RAM常用半导体器件构成的,分为双极型和MOS型。若按单元电路,又可分为静态存储器(SRAM)和动态存储器(DRA
M)。6.2.1基本存储单元1.MOS型六管静态存储器MOS型六管静态存储器是在MOS型触发器的基础上增添了两个门控制管而
构成的,如图6.4所示。MOS管T1~T4构成双稳态触发器,其中T1、T2为控制管,T3、T4为负载管。当A点为高电平,B点为低
电平表示存1;反之,存0。在构成存储器时增加了4个门控管T5、T6、T7、T8。当X选择线为高电平时,T5、T6管通导,表示该单元
被选中,A点和B点分别与内部数据线D和D(也称位线)接通。T7、T8用来控制内部数据线与外部数据线的连接。当Y选择线也是高电平时,
T7、T8管通导,内部数据线与外部数据线接通。这时,该单元的数据可以读出或者写入。读出时,X与Y选择线为高电平,T5、T6、T7
、T8管通导,A点与D接通,B点与D接通,且与外部数据线接通。若原存1,A点为高电平,数据线D为高电平,B点和D为低电平。二者分别
通过T7、T8管输出到外部数据线,即读出1。相反,A点为低电平,D为低电平,B点和D为高电平;分别通过T7,T8管输出,即读出0。
图6.5MOS型四管动态存储电路写入时,首先将数据送到外部数据线上。若该单元被选中,X与Y选择线为高电平,T5、T6、T7、
T8管均通导,外部数据线上的数据就分别通过T7、T5管和T8、T6管送到触发器的A点与B点。若写入1,A点为高电平,T2通导,B点
为低电平,T1截止。写入结束,状态保持。若写入0,状态相反,A点为低电平,B点为高电平。2.MOS型四管动态存储器在六管静态
存储电路中,T1、T2管的通导与截止是靠负载管T3、T4来维持的。由于MOS管的栅电容与栅漏电阻比较大,栅电容可暂存一定数量的电荷
,维持MOS管通导片刻。为了简化电路,提高集成度,可把负载管T3、T4取掉,这样就构成了四管动态存储器,如图6.5所示。其中T9、
T10为预充电管。写入时,X、Y选择线为高电平,T5、T6、T7、T8管通,外部数据线上的数据分别通过T7、T8管送数据线D和D
,再通过T5、T6管送到A点和B点。写入1时,A点高电平,电容C2充电,T2通;B点低电平,C1不充电,T1截止。写入结束,1状
态依靠C2上的电荷维持。为了使数据长期保持,需隔一定时间给C2充电,即刷新或称再生。读出时,由于栅电容的电荷很少,需预充电。即
发预充电信号,T9、T10管通,对内部数据线D和D充电。若原存1,C2充电,T2管通导,C1不充电,T1管截止。D数据线上的高电平
经T6、T2管放掉,D数据线上的高电平保持,然后经T7、T8管输出到外部数据线上。若原存0,正好相反,D数据输出低电平,D数据线输
出高电平。写入0时,与之相反,C1充电,T1通导,A点为低电平,C2不充电,T2截上,B点为高平。读出时补充了栅电容上的电荷,
因此读出也是动态存储器刷新的过程。3.单管动态存储电路单管动态存储器是由一只MOS型晶体管和一个电容CS组成,如图6.6所示
,数据信息记录在电容CS上。实际上CS是一个只有栅极和源极的MOS管。MOS管T1的源极接电容CS;栅极接字线W,作为门控制管;漏
极接数据线D,也就是位线,再经读出放大器输出。电容CS上有电荷时,表示存1;无电荷时,存0。平时字线W为低电平,T1不通,电容CS
上的电荷不能放掉,信息保存。写入时,字线W加正脉冲,T1管导通,如果写入1,数据线D上为高电平,通过T1管向CS充电;如果写入0
,则数据线D是低电平,CS上的电荷通过T1释放。读出时,先对数据线预充电。然后字线W加正脉冲,T1导通。如果原存1,CS上有电
荷,数据线D的高电平维持,经读出放大器输出高电平;如果原存0,CS上没有电荷,数据线D上的电平被拉低,经读出放大器输出低电平。由
于电容CS上的电荷会泄漏,因此需要定时刷新,时间间隔一般不超过2ms。此外,还有三管及其它形式的动态存储器,这里不再一一介绍。
1.Intel2114的结构与特点Intel2114是一种1K×4位的静态存储器,内部结构与引脚如图3.7所示。A9~A0
是地址线,CS是片选信号,WE是写允许信号。当WE端输入低电平时表示写入,当WE输入高电平时表示读出。D3~D0为数据输入/输入端
,Vcc为电源端,GND为地。6.2.2随机存取存储器举例在构成存储器时,一般以字节为单位。而存储器芯片有1位片、4位片和8
位片等。这样,若采用1位片或4位片,就需要多片联合,构成8位芯片组。若要构成大容量的存储器,常需要多个芯片组联合使用。若直接采用8
位芯片,比如Intel2186、6264、62256,则比较方便。下面仅介绍2114、6264和62256的组成特点和联接方法。
存储器的内部数据线通过I/O控制电路和三态门与外部数据线连接。片选信号CS和写允许信号WE一起经与门控制输入/输出三态门。当C
S为低电平时,芯片选中。这时若WE为低电平,表示写入,输入端三态门通导,数据写入;若WE为高电平,输出端三态门通导,数据读出送外部
数据线。Intel2114单片容量为1K×4位,共有4096个六管静态存储单元,排列成64×64的方阵。地址线有10条A9~A
0,其中A8~A3用于行译码,选择64行中的某一行,A9、A2、A1、A0用于列译码。在列选择线中,4列为一组,即一个存储单元有4
位。列地址共4位,经译码选择16列中的某一列。2.Intel6264的组成特点1)芯片与逻辑符号6264是一种8K×8的
随机存取存储器芯片,有28个引脚,采用双列直插式封装,使用单一+5V电源,其引脚分布如图6.8所示。2)引脚功能A12~A0:地
址线,输入,13位,寻址8KB。D7~D0:数据线,双向,8位,传送数据。CE:片选信号,输入,低电平有效。WE:写允许信号
,输入,低电平有效。OE:读允许信号,输入,低电平有效。VCC:+5V电源。GND:地。N.C:引脚未用。表3.16
264工作方式CEWEOE方式功能000禁止不允许同时为低电平010读出读出数据001写入写入数据011选通选通,输出
高阻态1××未选通不工作3)工作方式6264的工作方式如表3.1所示。2)引脚功能A14~A0:地址线15位,输入,寻址32K
B。D7~D0:数据线8位,双向,传送数据。CE:片选信号,输入,低电平有效。OE:输出允许,输入,低电平有效。R/W:读/
写控制信号,输入,低电平,数据写入;高电平,数据读出。3.Intel51256的组成特点1)芯片与逻辑符号Intel
51256是容量为32K×8的随机存取存储器芯片,有28条引脚线,采用双列直插式封装,使用单一+5V电源,引脚分布如图6.9所示
,工作方式如表6.2所示。除了上述各类存储器之外,现在又出现了双口存储器和先进先出存储器。其中双口存储器是在一般存储器的基础上
增设了一路访问地址和读写控制电路,可同时连接两个CPU,供两个CPU分时读/写。在构成多处理机系统时可用于暂存或交换数据,比如ID
T7132/7142就是其中的一种。它是一种2K×8的高速双口SRAM,有48个引脚,采用两种封装,即双列直插式和四边平插结构。所
有引脚分为左右两组,用于与两个CPU连接。先进先出存储器FIFO也有两个口,一个用于输入,一个用于输出。比如AM7205A,是一
种以2K×9的SRAM为核心的CMOS先进先出存储器,用于存放队列数据,或者在CPU的控制器中作为指令队列存储器。6.3只读
存储器ROM6.3.1固定只读存储器ROM固定只读存储器采用掩模工艺制成,因此也称为掩模式只读存储器,其中的数据是由厂家生产
时写入。只读存储器实质上是一种单向通导的开关矩阵,可由二极管构成,也可由MOS管或双极型晶体管构成。1.字译码二极管只读存储器
由二极管构成的只读存储器如图6.12(a)所示。图中共有4个存储单元,每个单元4位,采用字译码方式。其中有些位有二极管,有些位没
有二极管。若有二极管的位表示存1,则没有二极管的位表示存0。这样,该只读存储器所存的数据如图6.12(b)所示。若设地址A1A0=
10,X2输出高电平,表示选中字2。这样,第3,1,0列的二极管通导,数据线D3,D1,D0输出高电平,D2仍输出低电平,读出D3
~D0=1011。2.复合译码MOS型只读存储器复合译码只读存储器如图6.13所示,有行列选择线。图中是由MOS管构成的10
24×1的存储器。有10条地址线,其中A4~A0送行地址译码器X,经译码选择32行中的某一行;A9~A5送列地址译码器Y,经译码选
译32列中的某一列。图6.13复合译码MOS管只读存储器T31~T0为列控制门。当某一行和某一列选中,其交叉处为选中单元,所
存数据经反相器输出。若有MOS管的位表示存1,则没有MOS管的位表示存0。6.3.2可编程只读存储器PROM可编程只读存储
器是厂方生产出来时所存信息为全0或全1,用户可一次性写入。其构成方式有多种,小容量的可由多发射极晶体管构成,如图6.14所示,采用
字译码方式。对于大容量,多采用复合译码方式。其单元电路可由二极管或MOS型三极管构成。若用二极管或多发射极晶体管构成,是在发射极与
位线之间通过熔丝连接。若用MOS型三极管构成,是在漏极与地线之间通过熔丝连接。图6.14多发射极晶体管PROM写入时,根据写
入的数据,有选择地通一大电流,将某些单元电路中的熔丝烧断。比如写入0的单元熔丝烧断,那么写入1的单元熔丝保留。在写入过程中,一般使
用专门的写入器,由写入数据控制,即编程。读出时,熔丝烧断的单元无电流输出,熔丝保留的单元有电流输出,即读出0或1。由于熔丝在烧断
以后不能再恢复,因此称为一次性写入只读存储器。6.3.3可改写只读存储器EPROM可改写只读存储器是指其中的内容可以擦除重写
。基本单元电路如图6.15(a)所示,称为浮空栅雪崩注入式MOS电路,简称为FAMOS。图6.15可改写EPROM可改写只读
存储器与MOS型电路相似,是在N型基片上生成两个高浓度的P型区,通过欧姆接触分别引出源极S和漏极D。在源极和漏极之间有一个多晶硅栅
极浮空在SiO2绝缘层中,与四周无直接的电气联接。多晶硅栅下面是约1000埃的SiO2,上面有一层约1μm的SiO2复盖层。这种电
路以浮空栅极是否带电来表示存1或者0。浮空栅极带电后(比如负电荷),就在其下面的源极和漏极之间感应出正的导电沟道,使MOS管通导
,表示存入1或0。若浮空栅极不带电,则不能形成导电沟道,MOS管不通导,即存入0或者1。在构成存储单元时,需配以MOS管作为地
址选择与读/写控制,如图6.15(b)所示。写入时,首先地址选中,T2管通,要写入的数据加在T3管的栅极。写入1时,T3管栅极加
一高电平,T3管通导,VC与VD之间加25V的高电压。当编程脉冲到来时T4管通导,于是源漏极之间被瞬时击穿,发生雪崩效应,能量大的
电子穿过绝缘层注入浮空栅极中。编程脉冲结束,T4管截止,高电压断开,注入到浮空栅极中的电子被绝缘层包围而被保存下来,即写入了1;若
写入0,则T3管栅极加低电平,T3管不通,浮空栅MOS管不发生雪崩效应,不会有电子注入到浮空栅中。改写时,用紫外线照射芯片上面的
窗口,浮空栅极中的电子获得能量而泄漏掉。然后,可重新写入。编程写入脉冲宽度约50ms。写入后,需用金属薄片将芯片上的窗口盖住,以免
受到光照。6.3.4电察除与Flash快闪只读存储器1.电察除只读存储器E2PROM电擦除只读存储器是通过一定的电压(或
电流)擦除其中存储的数据,然后重新写入。优点是能在线改写,断电后信息保存。工作原理与EPROM类似,也是通过浮空栅极中的电荷表示
存入的二进制数据。区别是在E2PROM存储器的漏极上面增加了一个隧道二极管,从而生成两个浮空栅如图6.16所示。这样,可在外层
栅极与漏极之间施加不同极性的电压,决定电荷进入内层浮空栅,还是让电荷从内层浮空栅中逸出。即写入或者擦除。P基片n+n+场氧化物第一
级多晶硅(浮空栅)第二级多晶硅(浮空栅)+VG+VD隧道氧化物门氧化物。E2PROM的编程与擦除电流很小,可用普通电源供电,而且
可按字节进行。编程/擦除的时间大约为10ms。2.快闪存储器FlashmemoryFlash存储器简称为闪存,是近年来发展
很快的一种新型半导体存储器。它与E2PROM类似,也是一种电擦写型ROM。与E2PROM的主要区别是E2PROM按字节擦写;闪存是
按块擦写,速度快。从结构上来看,Flash芯片可分为串行传输和并行传输两大类型。其中串行传输节约空间和成本,但存储容量较小,速度慢
;并行Flash存储容量大,速度快,存取时间约为65~170ns。6.3.5只读存储器举例以上介绍了各类只读存储器的工作原
理,常用的主要是可改写只读存储器EPROM、电擦除只读存储器E2PROM与Flash快闪存储器。1.Intel2764的组成
与特点Intel2764是一种8K×8的紫外线擦除可改写只读存储器,采用HMOS工艺制成,读取时间为200ns。它有28个引脚
,采用双列直插式封装,引脚如图6.17所示。其中包括8K×8存储器阵列、X地址译码器、Y地址译码器、I/O控制门电路、输出缓冲器及
片选和编程逻辑电路。数据线8位,地址线13位。芯片没有选中时,降低功率使用,最大工作电流75mA,最大静止电流为35mA,编程负脉
中宽度为50ms,正常工作时使用单一+5V电源,工作方式如表6.3所示。表6.32764工作方式选择CEOEPGMVPPVCC
输入/输出方式001+5V+5V输出读出1××+5V+5V高阻态静止等待01负脉冲+21V+5V输入编程001+21V+5V输出程
序校验1(×)××(1)+21V+5V高阻态编程禁止6.18Intel27512芯片2.Intel27512的组成特
点27512是一种64K×8的紫外线擦除可改写只读存储器,采用新型固件强化结构,高集成度,性能价格比高,速度快,单字节数据读取时
间小于250ns。它有28个引脚,采用双列直插式封装,引脚分布如图6.18所示。27512引脚分布如图6.18所示。数据线8位,
地址线16位,单一+5V电源,最大工作电流为100mA,最大静止电流为40mA。在27512中第1引脚是地址线A15,编程电压输
入端Vpp与OE合用一个引脚,PGM与CE合用一个引脚。3.Intel2864的组成与特点Intel2864是一种8K
×8的电擦除可编程只读存储器,有28个引脚,采用双列直插式封装,引脚分布如图6.19所示。Intel2864数据线8位,地址线
13位,单一+5V电源,最大工作电流为160mA,最大静止电流为60mA,单字节数据读取时间小于250ns。内部设有页缓冲器,可
按字节写入,也可以按页写入,写入一个字节之前,自动擦除,而不需要专门的擦除操作,速度快,引脚与6264完全兼容,工作方式如表6.4
所示。4.Intel28256的组成与特点Intel28256是一种32K×8的电擦除可编程只读存储器,有28个引脚,采
用双列直插式结构,其引脚分布如图6.20所示。数据线8位,地址线15位,使用单一+5V电源。使用时,它与62256的引脚完全兼容;
修改时,需在WE端输入+21V的电压。而28256A只需TTL信号电压和+5V电源电压即可修改。表6.42864工作方式选择C
EOEWEI/O7~I/O0方式1××高阻态维持001DOUT读出01负脉冲DIN写入001DOUT查询5.Flash快闪存储
器AT29C010A的组成与特点AT29C010A是一种并行、仅用+5V在线擦写和单一+5V供电的闪存芯片。片内有1Mbit(1
28K×8)的存储空间,分成1024个区,每区128个字节,以区为单位进行编程。AT29C010A的快速读取时间为70ns,快速
分区编程周期为10ms,功耗低,工作电流50mA,CMOS维持电流100μA,其引脚如图6.21所示。内部有2个8KB的可锁定自
举模块,用来存储系统的自举程序和参数表。数据线8位,地址线17位,寻址范围1Mbit。其中高位地址线A16~A7提供1024个分区
地址,低位地址A6~A0提供每个分区内128个字节单元地址。其工作方式与E2PROM相同,按字节读出。编程写入时,按区进行。如果
某一区有一个数据需要改写,则该区中的所有数据必须重新写入。6.4存储器与CPU的连接在计算机中存储器的容量通常比芯片本身容量
大得多,且以字节为单位,这就需要多芯片组合使用,即存在位扩展和容量扩展。6.4.1位扩展位扩展是用多块存储器芯片拼成存储单元为
一个字节或字长的存储体。主要是将多个存储器芯片的地址线、片选信号线、读/写信号线分别连接在一起,再与CPU的相应信号线连接。数据线
按位排列,并行连接到CPU的数据线上。例如使用Intel2114构成1024×8位的存储器时,需将两块2114并联起来使用,一
块存储高4位数据,另一块存储低4位数据,其示意如图6.22所示。其中地址线A9~A0连接到片内地址线上,A10用作片选信号。与C
PU的连接如图6.23所示,每两块2114重叠使用,片选信号CS并连在一起,由高位地址线选或译码产生,这里使用的是线选法;WE接C
PU的读/写控制端6.4.2.容量扩展容量扩展是指扩展存储器单元,在有的书中称为字扩展。这种扩展是将各芯片上的地址线、数据
线、读/写控制线分别并联到CPU的相关信号线上。由于是多片并联,需要增加片选信号。6.4.2.容量扩展图6.24所示是用8K
×8位的2764组成32KB的EPROM存储器。各芯片的数据线与CPU数据线连接,地址线连接到CPU地址线A12~A0上。片选信号
由高位地址A14、A13经2-4译码器产生,地址空间为0000H~7FFFH。6.4.3.片选信号一个存储体通常由多个存储器芯
片组成,片内地址由CPU低位地址确定,芯片信号由高位地址确定。片选信号的产生与存储器的构成有关,常有三种方式。1.线选法线选法
是用CPU高位地址线直接作为片选信号,连接到各芯片或芯片组的片选信号输入端CS上。例如图6.23所示,使用地址线A10作为片选信
号。线选法的优点是线路简单;缺点是把地址空间分成相互隔离的区域,不能充分利用地址空间,因此仅适用于容量较小的系统中。2.译码法
译码法是用存储器芯片地址以外的高位地址经译码产生片选信号。例如图6.24所示是用2-4译码器对地址A14、A13译码,产生片选信
号;由于仅使用了部分高位地址参与译码,因此也称为部分译码法。如果使用全部高位地址参与译码,以寻址全部存储器空间,称为全译码法。其
优点是寻址范围大,地址连续,不产生因高位地址不确定而产生的地址重叠现象。3.混合片选法这种方法是把上述线选法与部分译码法结合起
来,一部分高位地址用于线选法寻址,另一部分用于译码。具体连接这里不再赘述。6.5辅助存储器6.5.1磁盘存储器1.磁表面
存储器原理磁表面存储器是利用载体上不足1微米的磁介质的两种不同剩磁状态(方向)表示二进制数的1和0。磁表面存储器的读/写过程是通
过磁头和运动着的磁表面来实现的,其示意如图6.25所示。磁头是由铁磁性材料制成,上面绕有读/写线圈,安置在贴近磁层的位置。磁头上
有一条很窄的狭缝,称为磁头隙或者前隙,面向磁层。若给磁头线圈通以一定方向的脉冲电流,磁头中产生磁场,磁力线通过载体磁层构成闭合回路
,于是磁层表面被磁化。如果载体相对于磁头匀速运动,就会随着写入信号产生一个一个小的磁化区域L,这就是写入过程。脉冲电流的方向不同
,小磁化区域的方向也不同,这样就写入了1或者0。读出时,磁层与磁头相对运动,磁化区域掠过磁头隙时,磁力线穿过磁头,使线圈中的磁通
量发生变化,于是在线圈中产生感应电势,其极性与磁通变化的方向相反。对感应信号放大,整流,选通,即得到所要求的读出信号1或0。2.
磁记录方式记录方式又称为编码方式,目前,基于通信技术中的编码理论,记录方式很多,下面仅举例介绍几种基本方式。1)不编码方式
不编码方式是直接使不同极性的电流脉冲通过磁头线圈来记录二进制数据。其中有归零制(RZ)、不归零制(NRZ)和逢1翻转的不归零制(N
RZ1),也称为不归零1制。不编码方式的电流波形如图6.26所示。(1)归零制RZ归零制是用正、负两个不同极性的电流脉冲通过磁
头线圈,在磁层上形成两个方向不同的磁化区域,分别表示1或者0。在两个相邻数位之间,线圈中没有电流通过,所以称为归零制。这种记录方式
密度低。(2)不归零制NRZ不归零制是在写入1时,线圈中通以正方向的电流,写入0时通以负方向的电流,不写入时电流保持,即不归零。
这样,只有相邻两位数据不同时,写电流的方向改变,磁化方向随之改变。若相邻两位数据相同,写电流的方向不改变,磁化方向也不改变。(3
)逢1翻转不归零制NRZ1逢1翻转不归零制(即不归零1制)是在写入1时,写电流的方向改变,磁化方向也随之改变;写入0时,写电流的方
向不改变,磁化方向不变。显然,记录同样的数据序列,不归零制磁化状态改变的次数要比归零制少,不归零1制更少,因此记录数据的密度相对
大一些。2)按位编码方式按位编码方式有调频制、改进调频制和调相制。(1)调频制FM调频制是在数据中插入时钟信号,迭加后按
逢1翻转不归零制进行写入。若写入1,记录成“11”;若写入0,记录成“10”。也就是说,用“11”表示1,“10”表示0。调频制记
录方式如图6.27所示。调频制记录方式如图6.27所示,在数据位的中心是数据信号,在数据位的起始边沿插入1个时钟信号,形成记录序
列,再按逢1翻转不归零制记录。这样当写入的数据为1时,既有数据脉冲,又有时钟脉冲;当数据为0时,只有时钟脉冲。因此数据为1时写电流
的方向改变两次,为0时仅改变一次,故而称为调频制。(2)改进调频制改进调频制是在连续写入两个或两个以上的0时,写电流才在时钟脉
冲的前边沿改变方向,而不在每一个时钟脉冲的前边沿都改变方向。由图6.27可以看出,在写入1时,写电流的方向改变,在连续写入两个0时
,写电流的方向改变。因而,可提高磁表面的记录密度,常用在高密度磁盘存储器中。(3)调相制PM调相制写入1时,写电流的方向由负变
为正;当写入0时,写电流的方向由正变为负,相位相差180度,所以称为调相制,也称为相位编码方式(PE)。数据序列与写电流方向如图6
.28所示,这种调制方式多使用于磁带机。3.磁盘存储器的组成磁盘存储器主要指硬盘,是构成计算机系统的主要外部存储器,由磁头、
盘片、驱动器和读/写控制电路组成,如图6.29所示。它是在硬质盘片上涂敷磁性材料,用来记录二进制数据。磁盘存储器根据磁头和盘片,
可分为固定磁头硬磁盘、活动磁头固定盘片硬磁盘以及活动磁头可换盘片硬磁盘等多种类型。按照盘片可分为单盘片和多盘片组合式。在多盘片组合
式中有2片、6片、8片、12片等。盘片直径有14英寸、10.8英寸、5.25英寸、3.5英寸、2.5英寸、1.8英寸和1.3英寸等
。存储容量有10GB、40GB、80GB、120GB、200GB等。磁头固定在一个磁头小车上,由脉冲信号控制,前后平动。典型产品
是温彻斯特技术的温氏盘,它把磁头、盘片、磁头小车以及主轴等封装成一个整体。盘片多以每分钟3600转或7200转的速度旋转,高速磁
盘可达到每分钟10000或者15000转。盘片旋转时,浮在盘片上的磁头在其下面划出一个圆,称为磁道,数据记录在磁道上。盘面上全部磁
道从外向里编号。每个磁道分成若干段,每段称为一个扇段,所有同一区域的扇段构成扇形,因此扇段也称为扇区。通常,一个扇区的容量为512
B。磁盘在旋转时,各磁头下面的磁道构成一个柱面。记录数据时,当某一盘片的一条磁道记录满后,不是移动磁头,而是把剩余数据记录到同一柱
面的其它盘片上。因此硬盘地址是:柱面号、盘面号和扇区号。在构成计算机系统时,硬盘通过专门的接口与主机连接。目前,常见的有IDE
、EIDE、UltraDMA和SCSI接口等。3.磁盘存储器的主要性能指标除了尺寸和结构之外,衡量磁盘性能的主要技术指标有以下6
个。1)记录密度磁盘记录密度分为三种,即道密度、位密度和面密度。道密度是沿半径方向每英寸的磁道数,位密度是沿着磁道每英寸存储的
二进制数据的位数,面密度是每平方英寸存储的二进制数的位数。显然:面密度=道密度×位密度过去,硬盘的道密度多在1257r/i之
上,位密度多在23980b/i之上,面密度在100Mb/i2之上。现在,面密度已经达到10~20Gb/i2。自20世纪90年代
以来,磁盘的面密度每经过1.5年翻一番。2)存储容量磁盘在出厂时已经格式化,即对盘面划分磁道,每条磁道划分为若干个扇区,每一
个扇区划分为地址区和数据区,并把扇区的物理地址登记到地址区。硬盘的地址为柱面、磁头号和扇区号。早期每个扇区记录512个字节的数据。
因此:硬盘容量=柱面数×磁头数×(扇区数/道)×512B现在,每一个扇区记录的字节数远不止512个字节,已有1KB、2KB、4
KB和8KB等多种字节数。【例6.1】已知Quantum的LSP540AT硬盘机有1120个柱面、16个磁头,每道59个扇区,
试求总的容量。解:在硬盘中,柱面数对应的是每面的磁道数,磁头数对应的是盘面数,若设每个扇区记录512个字节,则总容量=1120
×16×59×512B=541327360B≈54MB目前,硬盘的容量已经达到几百GB,大型硬盘已达几TB以上。上述方式是
在每一条磁道上记录相同的数据位,显然内道数据信息密度大,外道密度小。目前已有改进,即把盘面上的若干条相邻磁道分为一组,称为分带记录
。每一个记录带内的各条磁道有相同的扇区数,各分带之间的磁道扇区数不同。这样,从整体上提高了磁盘的记录密度。3)平均寻道时间平
均寻道时间是指磁头定位到所要寻找的磁道上时所用的时间,常以磁头沿半径方向运动一半所用的时间来表示。过去一般在8.5ms,现在可缩短
到4.2ms。4)旋转延迟时间旋转延迟时间是指磁头在某一磁道上定位到所要找的扇区所用的时间,常以磁头沿周长运动1/2周所用的时
间来表示。4)旋转延迟时间显然,旋转延迟时间与驱动电动机的转速有关,例如目前常用的7200r/min磁盘机,旋转延迟时间为4.
17ms。对于转速为10000r/min和15000r/min的磁盘机,旋转延迟时间仅为3ms和2ms。5)传输时间传输时
间是指数据传输所用的时间,不仅与电动机的转速、数据长度有关,而且与磁盘接口电路有关,常以数据传输速率来表示,如100MBps、20
0MBps等。6)控制延迟时间控制延迟时间是指磁盘控制器从收到读/写磁盘命令到启动磁头移动所用的时间,主要由磁盘接口电路决定。
显然,访问磁盘数据的时间是寻道时间、旋转延迟时间、控制延迟时间和传输时间之和。【例6.2】设有一个磁盘,平均寻道时间为5ms,
数据传输速率为10MBps,控制开销为2ms,电动机转速为7200r/min,求读/写一个512字节的扇区所用的时间。解:根据题
意,平均寻道时间为5ms,传送512字节数据的传输时间为512/10=51.2?s,旋转延迟时间为60/7200×0.5=4.
17ms,控制延迟时间为2ms,于是读/写一个512字节的扇区所用的时间为:5ms+51.2?s+4.17ms+2ms=11
.22ms6.5.2光盘存储器1.概述光信息存储是利用激光的单色性和相干性,使数据通过调制激光聚焦到记录介质上,使介质的光
照微区发生物理或化学变化,实现记录。读出时,利用低功率的激光扫描数据轨道(亦称为光道),再对反射光检测,解调,以获取所需要的数据。
一般光盘盘片是用聚碳酸酯材料构成,表面覆以光敏材料,作为记录介质。盘片直径为120mm,厚度为1.2mm,中心有一个直径15mm
的主轴孔。与磁盘相比,光盘存储密度大,寿命长,数据位价格低,且不用固定在驱动器中,容易更换。目前,光盘的道密度在600~700道
/mm以上,位密度在103bit/mm以上,面密度超过108bit/cm2,数据传送速率达到每秒几~几十MB,寿命一般在10年以上
。2.常见光盘分类自美国ECD公司与IBM公司联合研制成第一张光盘以来,光盘存储器已经进入到第四代。仅从使用的角度来看,光盘可
分为以下几种:(1)只读存储光盘(CD-ROM、CD、VCD、LD):是一种一次成型的光盘,由一种称作母盘的原盘压制而成。可以反
复读而不能再写,一般存储容量在650MB~760MB左右。比如市面上的视频录像盘,数据音响唱盘等。由于CD-ROM是由厂商制作,因
此在刻录之后常镀以保护膜。一方面增强表面反射能力,另一方面起一定的保护作用。(2)一次写入光盘(WORM):是用光盘刻录机制作,
每次刻录一张。若一次没有刻满,可以追加续刻。写入后可以反复读出,不能再写,一般容量为650MB。(3)可擦重写光盘(REWrit
e):可将记录的数据擦除,然后重写。擦除和写入分别由两束激光分两次完成。MO光盘、PD光盘、CD-RW光盘均属此类。(4)直接重
写光盘(OverWrite):是用一束激光一次完成擦除和写入。对于可擦重写光盘,根据存储介质的工作机理分为相变型光盘和磁光型光盘。
如今,按照制作标准又出现了一种DVD光盘。它的外观及尺寸与CD盘片相同,直径120mm,厚度为1.2mm,分单面单层、单面双层、
双面单层、双面双层,单个盘片容量可达4.7GB~17.7GB。DVD盘以其大容量在计算机中的应用越来越多。2.光盘存储器工作原
理光盘存储器是利用激光的单色性和相干性,使数据通过调制激光聚焦到记录介质上,使介质的光照微区(直径一般小于1μm)发生物理和化学
变化,其分子排列方式改变,形成凹坑,其深度约0.12μm、宽度约为0.5~0.6μm,以此记录二进制数据。数据的写入与读出是通过
能将激光束汇聚成直径为亚微米(μm)圆斑的光学镜头来完成。其工作过程是从半导体激光器发射激光束,通过物镜聚焦到光盘的盘面上。写入
时,根据写入的是1或0,使其分子排列方式改变。比如写1的位置形成凹坑,写0的位置没有凹坑。读出时,盘面上凹坑边沿和平面对激光构成
不同的反射角,反射到探测器上的信号也就不同,从而判断存储的是1还是0,即获得读出信号。同时,还要检测聚焦,跟踪误差信号,以便调节物
镜控制系统,使物镜聚焦光点正确地落在盘面上光道的中央。其示意如图6.30所示。3.光盘存储器的组成如今,光盘控制器与光盘
驱动器制作成一个整体,合称光盘驱动器,简称光驱,又叫CD-ROM驱动器,用于读取光盘上的数据。光盘存储器由光盘驱动器、光盘控制器
及接口电路组成。光盘驱动器包括激光发射器、聚焦控制、定位控制、电机与调速控制、写擦除与读出控制等部件。在光盘控制器中包括数据输入缓
冲器、记录格式转换器、编码器、读出格式转换器及数据输出缓种器等。光盘的外形呈圆形,表面分为光道,每道分为若干个扇区,每个扇区又划
分为帧,每帧24个字节;一个扇区由98帧共2352个字节组成。与磁道不同的是光道不是同心圆,而是一条螺旋线,密度大,相邻光道之间的
中心距大约1.6μm。若按光盘的尺寸与容量,大致分为三种。即大容量光盘,直径为14吋,存储容量达10GB以上;中容量光盘,直径为
8吋或12吋,存储容量为700MB~2GB;小容量光盘,直径为2~5.25吋,存储容量为几十~几百MB。光盘数据传输率,约为每
秒几~几十MB。3.光盘驱动器光盘驱动器的功能部件如图6.31所示,主要由激光发射器、聚焦控制、定位控制、电机与调速控制、
写擦除与读出控制部件组成。激光发射器发射激光束,照射盘面,进行刻录或者读操作。聚焦控制部件主要由聚焦镜头和伺服控制器组成,对激
光束聚焦,控制光束落在盘面上。定位控制部件也称为道跟踪伺服器,用于跟踪光道。速度控制器也称为CLV伺服器,用于电机调速控制。CD
-ROM的光道是一条螺旋线,盘片沿激光束以恒定线速度(CLV)旋转。在CD-ROM标准中,线速度为1.2m/s,电机的转度为500
~2000r/min。数据写入时进行编码调制,读出时解调。同时进行错误检测和校正处理,通过光盘控制器来完成。4.可擦写光盘
目前,可擦写光盘主要是磁光型,由记录介质的材料决定。在写入时,激光束聚焦在盘面上的薄膜上,被照射点退磁,同时由电磁线圈形成的外磁场
反向磁化被照射点,形成磁化反差,而记录信息。读出时是利用Kerr效应检测记录单元的磁化方向,实现数据信息的读出。对于相变型光盘是利
用记录介质的两个稳定的互逆相结构实现擦写。写入时,用短脉冲激光束聚焦在光道上,改变信息点的光学特性,使反射率高的晶相变为反射率低的
非晶相。读出时,利用反射率的差别分辨1或0。擦除时,利用长而不太强的激光照射信息点,使之恢复结晶相结构。6.6存储器的层次结构
与系统组成6.6.1存储器的层次结构存储器是计算机的主要部件之一,对计算机的性能有着直接的影响,其容量、速度和价格是设计存
储器时所要考虑的三个要素。随着计算机的迅速发展,存储器技术也在迅速发展。但是CPU速度的提高很快,而存储器速度的提高就要慢一些。为
了满足CPU存储信息的需求,故在构成存储器系统时多采用层次结构。1.存储器访问中的局部性原理人们在对计算机的工作状况进行了长期
全面分析研究后发现,计算机在运行的过程中80%~90%的时间是在执行10%~20%的程序代码,即遵从一种局部性原理。这种局部性原
理主要表现为两个方面。图6.32多层存储器结构这种局部性原理主要表现为两个方面:(1)时间局部性:如果一个存储项被访问,则
该存储项可能很快再次被访问。(2)空间局部性:如果一个存储项被访问,则该项及其相邻项可能很快一起被访问。形成这种局部性的原因在
于程序的顺序执行和所包含的循环程序。循环程序使某一存储单元被访问之后可能很快再被访问,顺序执行使其相邻单元可能被一起访问。2.
存储器的层次结构为了满足CPU对高速大容量存储器的需求,又不过高地增加成本,因此,无论巨型机、大型机、中小型还是微型计算机,都采
用层次化的存储器体系结构,如图6.32所示。在存储器的层次结构:寄存器一般与CPU制作在一起,速度与CPU一致,但数量有限,
暂存临时性的数据。高速缓冲存储器(Cache)一般是用双极型器件构成的,容量小,界于CPU和主存储器之间,且速度与CPU匹配,用
来存放那些10%~20%的常用程序或数据。主存储器一般由MOS型半导体构成,速度慢,容量较大,与CPU直接连接,存放正在运行的程
序和被处理的数据。外存储器设在主机的外面,由非易失性存储器构成,速度慢,但是容量很大,有时也称为海量存储器,存储暂不执行的程序或
不被处理的数据,相当于一个大仓库。图6.33存储器层次关系6.6.2基本概念与性能参数1.基本概念在CPU工作时,首
先从Cache中读取指令或数据。如果能从Cache中获得指令或数据,称访问Cache命中(hit);如果未能获得,称为未命中或者失
效(miss),这时需要访问主存,从主存中获取指令或数据,同时还要将读取的指令或数据传送到上层的Cache中。同样,若在主存中未能
获取指令或数据,则称访问主存失效或未命中,这时再去访问外存。一般情况下,上层存储的信息是下层存储器中存储信息的一个子集,或者说是下
层的映像。在Cache与主存之间传送信息,常以块为单位;在主存与外存之间传送信息,常以段或者页为单位。为了说明各层之间的关系和基本
概念,下面以图6.33为例予以说明。在图6.33中Mi(i=1,2,…,n)表示采用不同技术或介质构成的存储器。靠近CPU的M
1速度快,容量小,位价格高;远离CPU的Mn速度慢,容量大,位价格低。若以Si、Ci、Ti分别表示存储器Mi的容量、位价格和访问时
间,则:Si<Si+1Ci>Ci+1Ti<Ti+1合理的存储器系统对CPU来说是一个整体,它有接近最高层M1的速度,有接近最低
层Mn的位价格,能保证CPU及时得到所需要的数据。根据这一要求及访问存储器时的局部性原理,在构成多层次的存储器系统和对其管理时可依
照以下两条原则。(1)根据时间局部性,Mi级存储器一般只存放Mi+1级中近期使用过的数据块或页。(2)根据空间局部性,在从Mi
+1级存储器读取一个字并送往Mi级时,一般把该字所在的块或页整体送往Mi级,以提高CPU访问Mi级时的命中率。2.性能参数衡
量多层次存储器系统的常用参数有4个,即命中率、等效访问时间、平均位价格和访问效率,分别用H、T、C和e表示。1)命中率HCPU
访问存储器时总是先访问上层,当在上层访问不到所需数据时再去访问下层,一般还要把从下层取得的数据传送到上层。通常把CPU在Mi级访问
成功的概率称为该级的命中率,用H来表示,一般用模拟的方法来确定,即执行一组有代表性的程序(也称为测试程序),分别统计出访问成功的次
数N1和不成功的次数N2,则命中率为:若用F表示失效率或未命中率,则F=1?H。2)等效访问时间T等效访问时间也称为访问周期
。以主存—辅存构成的二级存储器系统为例,用T1表示访问M1成功时所用的时间(即一个读/写周期),Tm表示访问失效时所用的时间。而失
效时间不仅仅是访问M2所用的时间T2,因为访问失效时要从M2中读出一个数据块(或页)送入M1,再从M1中读出所需要的字,因此Tm应
当包括这一过程的全部时间。这样,主存—辅存构成的二级存储器系统的等效访问时间为:T=HT1+(1?H)Tm(6.1)当命中率
H近似于1时,等效访问时间近似于T1。由于在上一层存储器中访问的命中率一般都很高,因此为了简单起见,人们常用访问M2的时间T2来代
替Tm,这样T=HT1+(1?H)T2(6.2)3)平均位价格C对于二级存储器系统,若用C1和S1表示M1的位价格和容量,
C2和S2表示M2的位价格和容量,则平均位价格为:(6.3)4)访问效率e对于上述二级存储器,访问效率可表示如下:(6.4
)可以看出,访问效率反映的是存储器的整体速度与较快的那个存储器的速度的接近程度,主要与上一级的访问命中率和两级存储器的访问时间之
比有关。【例6.3】设某台计算机的存储系统是由高速缓冲存储器Cache与主存构成的二级存储器系统,其中Cache的存取周期T1
=50ns,主存的存取周期T2=400ns,访问Cache的命中率为98%。试问该存储器系统的等效访存时间T是多少?访问效率是多少
?解:已知T1=50ns,T2=400ns,命中率H=0.98,使用简单算式得T=HT1+(1?H)T2=0.98×50+(1
?0.98)×400=57nse=T1/T=50/57≈0.8776.6.2多体并行存储器为了使存储器的速度能够适应CP
U的需求,人们在存储器的体系结构方面做了很多工作,从而形成了不同的体系结构。目前,主要的结构类型有以下4种。(1)单体单字存储器
是早期的一种结构形式,所有存储单元构成一个存储体,一个地址对应一个字(或字节),字的位数与数据线的宽度相同。每访问一次,可读/写
一个字(或字节)。(2)单体多字存储器是单体单字存储器的改进结构,其中数据线的宽度是存储器单元字(或字节)长的整倍数。每访问一
次,可同时读/写多个字(或字节),从而提高了访问存储器的速度。这种方式支持人们常说的猝发传送方式。(3)多体单字交叉存储器是由
多个存储体构成的,每个存储体中的字(字节)长与数据线相同,每访问一次,仅读/写一个字(或字节)。数据存储的方式有两种,一种是把数据
按存储体连续存放,即连续数据存放在同一存储体中;另一种是把连续数据交叉存放在各个存储体中。对于多个存储体,可按照流水线的方式启动,
有利于提高存储器的整体速度,支持多处理机系统。(4)多体多字交叉存储器也是由多个存储体构成的,但是数据线是每一个存储体字(或字
节)长的整倍数,每访问一次,可同时读/写多个字(或字节)。对于多个存储体也可按照流水线的方式启动,有利于提高存储器的整体速度,支持
猝发传送方式,支持多处理机系统。下面着重介绍多体交叉存储器的结构形式。1.高位地址交叉多体存储器高位地址交叉多体存储器的逻辑结
构如图6.34所示,由多个存储体构成。每个存储体内部地址连续,设有n位,容量为2n。若存储器的总体地址有m位,其高位地址经译码器译
码,选择某一个存储体。存储体的个数最多有2m?n个,通过对m?n位的高位地址译码选择。对于单处理机来说,多个存储体构成一个大的存
储器。而对于多个处理机来说,多个存储体为各机共享,通过分配不同的高位地址来访问不同的存储体。这样,多个处理机使用不同的高位地址,可
对不同的存储体同时并行操作。若高位地址相同,则会发生访问存储器冲突。这种高位交叉存储器适用于共享存储器的多处理机系统。2.低位地
址交叉多体存储器低位地址交叉多体存储器的逻辑结构如图6.35所示,用低位地址译码选择不同的存储体,而把高位地址用于存储体内部寻址
。若存储器的总体地址有m位,低位地址有n位,则可连接2n个存储体,体内地址空间为2m?n。采用低位地址交叉将连续的地址依次分配在
不同的存储体中,而在每一个存储体中的地址相间。这样当数据总线是存储器字(或字节)长的整倍数时,可实现多字(或字节)并行读/写,即猝
发传送。对于单处理机,可以实现字、双倍字和多倍字(或字节、双字节和多字节)访问,也可以构成流水线工作方式。作为多处理机系统的共享存
储器,支持流水线访问方式,有利于提高整体访存速度。若设存储器的字存取周期为t0,由k个子周期?组成,即t0=k?。如果使用k个
存储体交叉存储,再按时间?依次启动k个存储体,则构成流水线存取方式,其示意如图6.36所示。其中横轴t表示时间,纵轴W表示所访问
的存储体,k=4。显然,在访问存储器不冲突的情况下3?之后每隔时间?就可以读/写一个字。连续读/写k个字所需要的时间为t0+(
k?1)?;如果顺序读/写,则所需要的时间为kt0。显然,在不发生访问冲突时按流水线访问,其带宽是单体存储器的k倍。6.6.3
磁盘阵列1.磁盘阵列的概念在外部辅助存储器中,磁盘阵列已经成为许多大型计算机必备的外存设备。磁盘阵列全称为廉价冗余磁盘阵列(
Redundantarraysofinexpensivedisk,RAID),是由多台低成本的小型磁盘构成的同步化的阵列,
数据展开存放在多台磁盘上,既可以提高数据传输的带宽,又可以利用冗余技术提高可靠性,类似于存储器多体交叉存储,而且容量大,数据传输速
率高,便于维护。磁盘阵列由多个磁盘驱动器构成,在逻辑上连接成统一整体。对于主机来说是透明的,它由磁盘阵列控制器把数据分布存储到各
个磁盘上,其结构框图如图6.37所示。其中,控制处理器由微处理器构成,负责接收和分析主机的操作命令,调度和管理磁盘阵列通路,控制操
作命令的执行。数据通路在控制处理器的控制下,实现数据的分配、集中、缓冲、校验和通道重构等操作。主机接口用于主机与磁盘阵列的连接
、通信、控制和数据传送。磁盘接口用来与磁盘驱动器连接,控制各单一磁盘同步工作和数据传送。磁盘接口一般采用国际化的工业标准,如SCS
I等,以便于扩充连接。在磁盘阵列中,各驱动器主轴的旋转有同步与异步之分。同步旋转时,数据按位或者字节分布在各个磁盘上。异步旋转时
,数据常以块或文件为单位存储在单一磁盘上。同步磁盘阵列控制比较复杂,异步磁盘阵列相对简单一些。2.磁盘阵列的组织形式1987
年,美国加州大学伯克利分校的D.A.Patterson等人首先提出了RAID的概念,分为5级,如图6.38所示。除RAID-1之
外,其余磁盘阵列都采用数据交叉存储方式,数据分布在多个磁盘上,增添校验,以提高数据存储的可靠性。图6.38磁盘阵列数据信息存储
示意图2.磁盘阵列的组织形式1)RAID-1镜像磁盘冗余阵列这种阵列把每一个数据块重复写入镜像磁盘中,以提高磁盘的可靠性。这
种磁盘阵列的冗余度为100%,使磁盘的容量减少一半,形式简单,成本较高。2)RAID-2采用海明码纠错的冗余磁盘阵列这种阵列把数
据按位交叉写入多个磁盘中,并对多个磁盘进行按位纠错检查。它对数据的读/写涉及各个磁盘,比镜像磁盘阵列冗余度小,小文件的传送速率会受
到影响,比较适合于大文件的存储。3)RAID-3采用奇/偶校验的冗余磁盘阵列这种阵列把数据按位交叉存储到多个磁盘上,用一个磁盘
作为奇偶校验盘,进行奇/偶校验。这种阵列的冗余度小,由于数据顺序交叉存储,适合于大量数据的顺序存储。4)RAID-4独立传送磁盘
阵列一这种阵列把数据按块交叉存储到多个磁盘上,用一个磁盘作为奇偶校验盘,进行奇/偶校验。在数据不冲突的情况下,多个磁盘可以并行读
/写数据,适合于小块数据的存储。5)RAID-5独立传送磁盘阵列二这是另一种独立传送的磁盘阵列,采用数据块交叉存储和分布冗余校
验,数据和校验位分布在各个磁盘上,没有专门的奇偶校验盘。因此,也称为分布式奇偶校验独立磁盘阵列。这种结构冗余度低,支持数据并行读/
写,适合于小数据块的存储。总而言之,上述RAID-2将各个数据位交叉存储在多个磁盘中,海明校验码也按位交叉存储在多个磁盘中;R
AID-3将各个数据位交叉存储在多个磁盘中,奇/偶校验位依次存储在另一个磁盘中;RAID-4将数据按数据块交叉存储在多个磁盘上,
奇/偶校验码依次存储在另一个磁盘中。其中,位交叉磁盘阵列属于同步旋转阵列,适合于大数据块的存储;块交叉存储阵列一般为异步旋转阵列,
适合于小数据块的存储。近年来磁盘阵列结构与应用又有许多改进和发展,比如出现了RAID-6,带两种分布式奇偶校验的独立磁盘结构;R
AID-7,优化的高速数据传送磁盘结构;RAID-10,高可靠性与高效磁盘结构;RAID-53,高效数据传送磁盘结构。等等,这里不
再一一介绍。图6.39Cache示意图6.7高速缓冲存储器Cache6.7.1Cache的基本概念高速缓冲存储器
Cache是界于CPU和主存之间的一个子系统,如图6.39所示,具有与CPU相匹配的存取速度,用来存放频繁使用的程序和数据。CPU
访问主存时首先访问Cache,如果在Cache中找不到所需要的数据,再去访问主存。如果大部分数据能在Cache中找到,有效地提高访
问存储器的速度。Cache的容量一般较小,例如1KB~1MB,主要存放访存局部性原理中所述的10%~20%的频繁使用的程序或数据
。当在Cache中找不到所需要的数据(即失效)时再去访问主存,并把主存中找到的数据送到Cache中。反过来,若Cache中的数据
被修改,也要修改主存中的相应单元,以保证Cache与主存的一致性。因此,Cache中的数据实际上是主存中的数据的一个子集。Cach
e与主存之间的数据传送是以块为单位。数据块的大小视不同的机器而定,一般为4~128B。访问Cache的时间一般是访问主存时间的1
/4~1/10,命中率一般在90%以上。在访问Cache失效(即不命中)时,访问主存,并把从主存中读出的数据块传送到Cache中
。这时,如果Cache中有空白区域,则直接写入;如果Cache已经写满,则要置换暂时不用的数据块。至于置换哪一块,有多种方法,即置
换策略。如今,在许多CPU中设有一级或者二级Cache,这样,与CPU外部(即主机板上)的Cache结合,可构成二级或者三级C
ache系统。本节仅以二级Cache为例,介绍Cache的组成原理与性能。6.7.2Cache的组成与工作原理1.Cac
he的组成Cache被分成大小相等的块,称为字块,主存也被分成相同大小的块。这样,主存地址可分成块地址(也称为块号)和块内地址,
Cache的地址也分成块地址和块内地址。由于块的大小相同,因此块内地址相同,但是块号不一定相同。因此,需要在二者之间建立映像,以说
明Cache中的某一块对应的是主存中的哪一块。Cache的组成原理如图6.40所示,其中,主存—Cache地址映像与变换机制用来
确定主存块是否在Cache中。如果在Cache中,表示命中;如果不在Cache中,表示未命中,于是访问主存。图6.40Cac
he的组成原理2.Cache工作过程CPU访问主存时输出地址,Cache控制器接收后将其高位(即块号)送给地址映像与变换机制
,确定是否命中。如果命中,从中获取相应Cache的块号送到Cache地址寄存器的高位,同时将主存地址中的块内地址送入Cache地
址寄存器的低位,然后访问Cache,读取所需要的数据。如果未命中,则访问主存,按块读出所需要的数据,写入Cache。在写入Cac
he时,如果Cache中有空白存储区(块),直接写入;如果Cache已经装满,则置换其中的某一块。置换时应按照一定的策略,例如,先
进先出、最近最少使用等。如果对Cache写操作,则写入的数据也要写入主存的相应块中,以保证Cache与主存的一致性。至于什么时候
写入主存,有两种方式,一种是立即写回,另一种是置换时写回。6.7.3地址映像与变换地址映像是将主存地址映射到Cache的地
址中。Cache的容量小,其地址的位数也少;而主存空间大,其地址位数多。因此,Cache中的一块可以与主存中的若干块对应。不同的C
ache结构有不同的映像方式,主要有直接映像、全相联映像和组相联映像。1.直接映像与变换直接映像是把主存划分成与Cache大小相
同的区,每一区划分成与Cache中的字块大小相同的块,如图6.41所示。每一区中的第0块映射到Cache中的第0块,第1块映射到C
ache中的第1块……显然,Cache中的块号与主存各区中的块号是一致的。因此,只要能够标识Cache中的数据块属于哪一个区就可
以了。图6.41直接映像示意图n-1图6.42直接映像地址变换逻辑为了标识Cache中的块属于哪一个区,需要建立一个直
接映像目录表,也称为块表,用来存放与Cache中的块对应的主存块的高位地址(区号)。直接映像地址变换逻辑如图6.42所示,其中目录
表的序号与主存块号一致,也用n表示。地址变换时,首先根据主存的块号对目录表进行读操作,并与主存地址中的区号比较。如果相等,说明命
中,把主存的块地址和块内地址送入Cache地址寄存器,访问Cache,对Cache单元进行读/写操作。在未命中的情况下,访问主存
,从主存中读出一个数据块,写入Cache,同时把读出的数据块的区号写入目录表中的相应单元。如果Cache已经装满,则按照置换策略置
换某一块。在对Cache进行写操作时,必须按照区号写入相应的主存单元,以保持Cache与主存的一致性。写入的时间,可立即写回,或者
在置换时写回。直接映像结构简单,地址变换速度快,因此在早期的计算机中得到广泛应用。但是由于它的映像关系固定,块冲突率比较高。在把
从主存中读出的数据写入Cache时,即使有其它空白存储块,也不能使用,因此利用率不高。2.全相联映像与变换全相联映像是主存不
再分区,其中的每一块可以映射到Cache的任意块,其示意图如图6.43所示。这样,除了Cache的块内地址与主存的块内地址相同外,
块号各不相同。因此需要建立一个全相联目录表,用来存放Cache块号和对应的主存块号。全相联映像地址变换逻辑如图6.44所示,其中
m是目录表序号,与主存地址中的块号一致,每个单元存放主存块号和与之相对应的Cache块号。在地址变换时,首先根据主存块号读目录表。
如果有相应Cache块号,读出,与主存块内地址一起送入Cache地址寄存器中,访问Cache。如果没有,则访问主存,读主存数据块,
并写入Cache,且把二者的块号写入全相联目录表中。图6.44全相联映像地址变换逻辑在图6.44所示全相联映像地址变换逻辑中
,直接使用主存块号作为全相联目录表序号。由于主存块地址位很长,因此全相联目录表会很大,甚至无法实现。为此,可在目录表中仅存放已经存
入Cache的主存数据块的块号和相应的Cache中的块号。这样,目录表的单元数仅与Cache中的块数相同。在查表时,按内容访问,对
目录表中各个单元同时进行比较,这样结构简单,速度快。而且只有在Cache装满后才会出现写入冲突。3.组相联映像与变换组相联映像
是在直接映像的基础上对Cache和主存中的块分组,每组中的块数相同。映像方式是组间直接映像,组内全相联映像,如图6.45所示。这样
既包含了直接映像方式的结构简单与变换速度快的优点,又较好地解决了块冲突率高的缺点。1)组相联映像地址变换组相联映像地址变换如图
6.46所示,主存地址分成4段,包括区号、组号、组内块号、和块内地址。Cache地址分成3段,包括组号、组内块号和块内地址,其中组
号和块内地址与主存的组号和块内地址一致。图6.46组相联映像地址变换逻辑组相联映像地址变换如图6.46所示组相联目录表的序号
按照组号排列,每一个单元中存放主存块映像到Cache中的组内块号及该块在主存中的区号和组内块号。在地址变换时,首先根据主存地址中
的组号查表,取出其中存放的区号和组内块号,与主存地址中的区号和组内块号比较。目录表序号与组号一致,用m表示,k表示组内块号的位数。
这样,表中一个组号对应的单元中存放2k个组内块号,在查表时要一一比较。为了提高速度,采用按内容同时比较法。如果命中,将该单元中
存放的Cache组内块号和主存地址中的组号一起送入Cache地址寄存器中,访问Cache。如果未命中,则访问主存,读出所需要的数据
块,并将其置换到Cache中,同时修改目录表。如果是在命中情况下的写操作,则要适时地将数据写入主存的相应单元中,以保持Cache
与主存的一致性。上述方法是组间直接映像、组内全相联映像。也可采用组间全相联映像、组内直接映像法。图6.47组相联映像快速地址
变换逻辑2)组相联映像快速地址变换组相联映像快速地址变换是把主存中多个数据块的区号和组内块号存放在目录表的同一单元中,这里假设
有4对区号和组内块号,如图6.47所示。在地址变换时,把目录表中同一单元中的多个区号和组内块号取出,与主存地址中的区号和组内地址
进行比较。当某一对区号和组内块号比较相等时,从目录表中取出相应的组内块号送到Cache地址寄存器中。如果图中的4个区号和组内块号都
不相等,经“与”门输出块失效信号。由于同时与4个区号和组内块号比较,因此查表速度快。4.N路相联映像与变换N路相联映像与变换是
把Cache分成多个体,或称为多路,把主存分成若干个区,在许多书中称为页,其容量与Cache的大小相同。这样,具有相同区内地址的主
存块单元可以映像到若干个体的相应单元中。因此,使用N路映像方式可以使命中率成倍提高。但是,体数太多将导致结构复杂,成本上升。因此
一般使用2体或者4体。6.7.4Cache置换策略与主存更新1.Cache置换策略一般而言,Cache的命中率可达到9
0%以上。但是,命中率不可能达到100%。这样在未命中的情况下,就需要访问主存,并把读出的数据块写入Cache。但是,如果Cach
e已经装满,就要把原有的数据块换掉。置换哪一个块?这就涉及置换策略。主要有三种,即随机法、先进先出法和最近最少使用法。1)随机法
随机法(Random)是设置一个随机数发生器,在遇到Cache中的数据块需要置换时,由随机数发生器给出一个随机数,以确定置换哪一
个块单元。这种方法比较简单,易于实现,但是没有体现出Cache中的局部性原理,不利于提高Cache的命中率,因此已不再使用。2)
先进先出法FIFO先进先出法FIFO(Firstinfirstout)置换策略是置换最先进入Cache的数据块。这种方法是
用队列表示进入Cache中的数据块的顺序,置换时找出最先进入的一个予以置换。与随机法类似,也没有很好地体现出Cache中的局部性原
理,已很少使用。3)最近最少使用法最近最少使用法LRU(Leastrecentlyused)也称为最久未使用法,是置换Ca
che中最近不常使用的数据项。这样,保留了Cache中最近经常使用的数据块,有利于提高Cache的命中率,目前普遍使用的是这一种方
法。图6.48寄存器堆栈法2.LRU的实现方法LRU的实现方法有多种,常用的是寄存器堆栈法和计数法,另外还有一种比较对法
。1)寄存器堆栈法寄存器堆栈法是设置一个与Cache中数据块数相等的寄存器堆栈,用来压入Cache中的块号,如图6.48所示
。当数据写入Cache时,将Cache块号压入栈顶,并且检查堆栈中是否已有该块号。如果有,将其删除。Cache装满后再有数据块写
入时,置换栈底中的块号所指示的数据块。同时,该块的块号压入栈顶。显然,栈顶指示的是最近常使用的数据块,栈底指示的是最近一直没有使
用过的数据块。2)计数法计数法是为Cache中的每一个数据块设置一个由寄存器构成的标记。标记中包含若干位计数器,各计数器按一定
的周期自动计数。当某一Cache块被访问时,相应的计数器清0。这样,最近未被访问的Cache块的计数值一定大。置换时,选取计数值最
大的块予以置换。3)比较对法比较对法是让各Cache块成对组合,用一个触发器的状态表示该比较对内两块被访问时间的远近,再经门电
路找到LRU块。例如,有A、B、C三块,组合对为AB、AC和BC。用三个触发器的状态TAB、TAC、TBC分别表示各对中数据块被访
问的顺序,TAB为1表示块A比块B最近被访问过,其余类推。这样,最近未被访问的数据块可表示为:这样,通过“与”门和触发器可以构成
实现上述功能的比较电路,确定哪一块被置换。这种方式中,触发器和“与”门随Cache中数据块数的增加而增加。当数据块很多时电路复杂
,常用在组内数据块数较少的Cache中。3.主存更新策略为保持Cache与主存的一致性,在对Cache中的块写入时应同时写入主
存的相应单元。但是在什么时候写入,也存在一个主存写入策略,或称为算法。目前,用得比较多的是“写贯穿”和“置换时写回”法。1)写贯
穿也称为“写直达”,是在将数据写入Cache时,一起写入主存的相应单元中。这样,Cache与主存始终保持一致。2)置换时写回“
置换时写回”法是在Cache中的数据块被置换时写回到主存中去。显然,这种方法使Cache中数据块可能在一定的时期内与主存中的相应单
元不一致。但是不影响访问Cache命中时的读操作。如果写Cache时未命中,存在写主存时是否将该数据取出送往Cache的问题。这也
有两种方法。(1)不按写分配法。是在写入Cache未命中时,只写入主存而不写入Cache。(2)按写分配法。是在写入Cache
未命中时写入主存,同时把写入主存的数据块也调入Cache中。一般,单处理机的Cache多采用“置换时写回”法。在共享主存的多处理
机系统中多采用“写贯穿”法。此外还有“播写法”和“写作废法”,主要用在多处理机系统中。4.Cache结构举例在80486微处理
器的内部设有8KB高速缓冲存储器,称为一级Cache;在外部还可配置一个高速缓冲存储器,称为二级Cache。图6.498048
6内部Cache空间分配1)片内Cache片内Cache共有8KB,采用4路组相联映像方式,由程序和数据共用。字块排列成行,一
个字块有16B,写入时采用“写贯穿”法,替换策略为最近最少使用算法LRU。8KB的分配如图6.49所示,分为4个体,每个体2KB,
每个字块16B(4个32位字)。图6.5080486内部Cache结构内部Cache的结构如图6.50所示,8KB空间分成4
路,每一路128个由16B组成的字块(即行)。在每一行中存放有来自主存的21位地址标志,以及LRU指针和行有效信息。图中的阴
影框表示一个完整的字块信息。对Cache寻址时,使用32位的物理地址。其中,中间7位称为索引字段,也就是子块号,寻址128个子块中
的某一个。低4位用来确定一个字块中的某个字节。高21位作为标记字段(区号),用来与Cache中的标记比较。若相等,且有效标志位标志
该字块有效,则表示要寻址的数据块在Cache中,即命中。若不相等,或者有效标志位标志该字块无效,表示未找到,于是再去访问主存,找到
后除了送CPU之外还要按LRU原则置换到Cache中,并设置相应的有效标志位。图6.50中有效/LRU模块有128项,每一项对应
4路中相应的4个字块。在每一项中,高3位是最近最少使用的LRU指针,以指示最近最少使用的字块;低4位是有效标志位,分别表示4个字块
是否有效。为了与主存保持一致,片内Cache采用了两种措施。一种是在Cache字块被修改时,采用“写贯穿”法,同时写入主存的相应
单元中。另一种是设置一个专门的监视逻辑电路,监视片外主存的写入操作,当有其它主设备对片外主存进行写入操作时,由监视逻辑电路产生Ca
che作废周期,向内部Cache输入地址(双向地址),使片内相应的字块(行)无效。2)片外二级Cache在80486微处理器的
外部还可配置更大的二级Cache。二级Cache一般要比内部Cache的容量大一个数量级。在实际应用中,常配置64KB或128KB
,还可使用专门的485TurboCache。485TurboCache是专为80486微处理器设计的Cache模块,包括
两个Cache体、两个标记RAM、一个状态RAM和一个控制逻辑电路。每个Cache体有8K或16K个字(32)位,填充写入时每次4
个字,即16字节。485TurboCache可以简单地连接成64KB/128KB,也可以连接成256KB/512KB。8048
6二级Cache示意图如图6.51所示。图6.5180486二级Cache示意图在80486微处理器中设有专门的控制寄存器(
CR3),设置内部/外部Cache的工作方式。在对内部一级Cache字块写入时,采用“写贯穿”法,同时写入主存。而外部二级Cach
e既可以采用“写贯穿”法,也可以采用“置换时写回”法。6.7.5Cache性能分析1.一体化Cache与分离Cache1
)一体化Cache一体化Cache是指程序与数据共用一个Cache。在早期的计算机中,常把程序和数据存储在同一存储器中,高速缓冲
存储器往往只有一个,这从电路设计上还是从存储管理上来看,都要相对简单一些。由于结构简单,易于管理,因此一体化Cache在一些大型
多处理机系统中也有使用。2)分离Cache分离Cache是指程序和数据高速缓冲存储器分别独立设置。如今,许多CPU在设计时就把
存储器分为数据存储器和程序存储器,因此相应的Cache也就分为程序Cache和数据Cache。这种方式虽然在结构上复杂了一些,但是
有利于提高访问存储器的速度,有利于提高Cache的命中率。为了简化设计,一般对于数据Cache要提供读/写操作。而程序Cache
,不需要改写操作,也不存在置换时写回主存的要求。2.Cache性能分析如今,Cache对计算机的工作速度影响很大,因此在设计时
应使它有良好的性能。目前,人们考虑的主要性能有访存平均时间(速度)、Cache加速比、Cache命中率(或未命中率,也称为失效率)
等。1)访存平均时间在6.6.2节已经知道,二级存储器系统的等效访问时间可表示为T=HT1+(1?H)Tm,对于由Cache和
主存构成的二级存储器系统也是这样。若用Tc表示访问Cache命中时所用的时间,Hc表示Cache的命中率,Tm表示访问Cache失
效时访问主存的时间,则访存平均时间为:T=HcTc+(1?Hc)Tm2)Cache加速比Cache加速比是指不用Cache
时访问主存储器所用时间与使用Cache之后的平均访存时间之比,可以表示如下:(6.5)图6.52Cache加速比则SP=
由上式可以看出,加速比Sp是Hc和Tc与Tm之比的函数。设Tm/Tc为10时,加速比Sp与命中率Hc之间的关系如图6.52所示,
通过提高命中率可提高加速比。【例6.4】根据例6.3计算使用Cache以后,加速比是多少?解:根据例6.3分析可知使用Cac
he后的等效访问时间:T=HT1+(1?H)T2=0.98×50+(1?0.98)×400=57ns访问主存时间:Tm=T2=
400ns(1)与Cache容量的关系当采用LRU置换策略时,Cache命中率与容量S之间的关系如图6.53所示。当Cache
容量增大时,命中率Hc提高;当Cache容量增大到一定程度时,命中率Hc增大的速率减小,理想最大值为1。在一般情况下,其曲线可用关
系式Hc=1?1/来表示。图6.53命中率与Cache容量的关系3)Cache命中率Cache命中率是指访问Cache
时命中的次数与总的访存次数之比,而未命中率=1?命中率。其中,命中率与Cache的容量、块的大小、地址映像方式、置换策略等多种因素
有关。这里主要说明命中率与Cache容量、块的大小,以及组相联中的组数之间的关系。图6.54命中率与块大小的关系(2)与块
大小的关系对于一个给定容量的Cache,当块很小时命中率Hc不会很高,因为访问存储器的空间局部性没有得到很好的利用。随着块的大小
增大,调入块的相邻数据增多,命中率Hc提高。但是,块增大,块数减少,数据的时间局部性受到影响。当块的大小增大到一定程度时,命中率H
c还会下降。因此,二者之间有一个平衡点,在该点附近命中效果最好,如图6.54所示。(3)与组数的关系在组相联映像方式中,Cac
he命中率Hc与组数也有直接的关系。由于组间是直接映像,组内是全相联映像,若组数增加,会使每组中主存数据块映射到Cache中的块数
减小,组内命中率下降。反之,组数减少,组内数据块数增加,有利于提高组内命中率,但是电路结构复杂。3.共享主存多处理机系统中Cac
he的一致性对于共享主存的多处理机系统,绝大多数的处理机都有自己的高速缓冲存储器Cache,且与主存连接,构成二级存储器系统,如
图6.55所示。设在各处理机中的Cache称为局部Cache。在这种系统中,每一个处理机的局部Cache都存在与共享主存保持一致性
的问题。在图6.55中,若某一个处理机修改了自己的Cache和主存中的数据,则对其它处理机的Cache如何处理?解决的方法有多种
。(1)建立一个目录表,用来记录在某一Cache中的数据块同时还保存在哪些处理机的Cache中。当某处理机修改自己局部Cache
中的数据时,同时将修改的数据传送到其它处理机局部Cache的相应块中,这种方式称为“播写法”。还有一种方法是向存有该数据块副本的其
它处理机的Cache发送一个信息,作废其数据块,这种方式称为“作废法”。目录表可以建立在主存中,称为中心目录表或者集中式目录表;
也可以建立在各处理机中,称为分布式目录表。(2)使主存中为各处理机所共享的数据信息不能进入各处理机的Cache中。(3)采用
共享Cache,使各处理机所共享的数据进入共享Cache。这种结构要求Cache容量大,管理方法比较复杂。但是有些CPU内置Cac
he,不支持共享Cache结构。图6.56虚拟存储器空间6.8虚拟存储器6.8.1基本概念1.什么是虚拟存储器为
了满足CPU对大容量存储器的需求,在设计CPU芯片时使用了大量的地址线,比如40位、64位、128位等。而这往往显得不足。而在指令
中又有不同的寻址方式,可提供更大主存寻址空间,比如基址寻址、基址加变址寻址等。这就需要借助于外存构筑一个更大的存储空间。而在实际使
用时,仍按主存地址访问,这就是虚拟存储器的思想。例如,地址线为64位,那么寻址范围为264,而在构成实际主存时往往小于这个范围,如
230=1GB。那么,其余部分就由外存来实现,其示意图如图6.56所示。虚拟存储器是对物理主存的扩展,由软件来实现。这样,从程
序员的角度来看,存储空间扩大了。这一扩大的空间称为逻辑(或虚拟)存储空间,其地址称为逻辑(或虚拟)地址。这就使存储系统具有相当大的
存储空间和接近于主存的访问速度。2.虚拟存储器的访问过程当用虚拟地址访问存储器时,系统将其映射成主存的实际物理地址。如果虚拟地
址对应的存储单元在物理主存中,则直接访问,称为命中;如果不在,即未命中,则要将该存储单元连同附近单元中的数据从外存调入主存,然后再
访问主存单元。对虚拟存储器系统的管理方法有多种,例如,段式管理、页式管理和段页式管理。主存与外存之间常以“段”或“页”为单位交换数
据。当需要把外存中的数据调入主存时,若主存中没有足够的空间,则需要置换其中暂时不用的段或者页,置换策略常采用最久未使用LRU法。
虚拟地址到主存实地址的映像方式一般采用全相联映像,页面(或段)更新时采用“置换时写回”法。3.主要参数衡量虚拟存储器性能的主
要参数有命中率和主存空间利用率。1)命中率在虚拟存储器系统中,实际主存空间比程序可访问空间小得多。在访问主存时,若从实际物理主
存中找到所需要的单元,即命中;若找不到,未命中或者失效。因此,与Cache相同,也有一个命中率的概念,就是访问主存单元成功的次数与
访问存储器总次数之比。2)主存空间利用率对于一个虚拟存储器来说,实际的物理主存空间很小。但是对于一个程序来说,在运行的过程中往
往只使用实际主存的一部分。这样,主存空间的利用率大致可定义为被程序使用的活跃部分的空间与主存总空间之比。4.主要特性从不同的
角度来看,虚拟存储器有不同的特性。仅对照Cache,有以下主要的特点。(1)虚拟存储器是按照指令的最大寻址范围配置的硕大存储空间
,其速度接近于实际的物理主存。(2)Cache是由硬件来构成,而虚拟存储器是在操作系统中由软件来实现的,管理方式有段管理、页管理
或段页式管理,以“段”或“页”为调度或置换单位,映像方式采用全相联映像方式,替换策略采用最久未使用法LRU,更新采用“置换时写回”
法。(3)Cache对系统程序员是透明的;而虚拟存储器中的页管理对系统程序员不透明,而对用户透明;在段页式管理中,段对用户可以透
明,也可以不透明。(4)在虚拟存储器系统中,外存除了以可编址的形式成为主存的下层存储器外,还可以文件的形式使用。6.8.2
虚拟存储器的管理方式目前,虚拟存储器的管理方式主要有三种,即段式管理、页式管理和段页式管理。1.段式管理段式管理是一种模块化
的存储器管理方式。它给每一个用户的程序模块分配一个段,该程序模块在该段中运行,按段内地址访问其中的单元。这种方式有利于模块化管理,
段的大小可根据实际需要而确定,可以放大或者缩小。在实际使用中,一个大的程序可由多个在逻辑上相对独立的模块组成。这些模块可以是子程
序、过程或函数,也可以是向量、数组、表、树、可变长度的字符串或者它们的集合。程序员可根据这些模块的相对独立性和它们的实际长度为其分
配存储空间。这种把主存空间按段进行分配和管理方式称为段式管理。在段式管理中,每一个程序模块被分配到物理主存的某一段中。为了寻址
,特设定一个表格来记录每一个程序模块的信息,这个表称为段表。段表中每一行记录一个用户程序的段号(或程序名)、在主存中的起始地址和段
长等,如图6.57所示。图6.57段式管理虚拟存储器地址映像其中,段号(或程序名)表示用户程序的逻辑段地址;段起始地址是该程
序段在物理主存中的起始地址;段长用于防止访问时越界;装入位表示该段是否装入主存,1表示装入,0表示未装入;访问方式说明只读或者读/
写,用于段保护;另有其它标志,用于说明段的属性,例如,访问权限、修改标志等。其中访问权限说明该段的级别,以确定某程序是否有权访问该
段;修改标志表示该段是否被修改过,若没有被修改过,被置换时不必写回外存;若被修改过,则在被置换时必须写回外存。在虚拟存储器中,用
户的程序模块或数据也是以段的方式存储的。当需要运行某一程序时,首先根据用户程序名或段号查找段表。若该程序段已经装入物理主存中,取出
表中的段起始地址,与逻辑地址中的段内地址结合,构成物理主存中的地址;若要执行的用户程序不在物理主存中,则需要从外存中调入主存,同时
把逻辑段号、段长和在物理主存中的段起始地址写入段表。在图6.57中显示的仅是一个段表,以此构成的段式管理是一级段管理系统。对于
一级管理系统,用户程序的逻辑地址分为两个部分,高位是段号,低位是段内地址,也称为偏移量。地址变换时,只要根据用户程序逻辑地址的高位
(即段号)查表,得到实际段起始地址,再与逻辑地址中的段内地址结合,即得到实际的物理地址。但是对于一个大的存储器系统,段可能很多,可
以实施二级段管理,如图6.58所示。图6.58二级段式管理地址变换用户程序的逻辑地址分为三个部分,即基号、段号和段内地址。其
中基号对应的是用户程序名,根据基号在段表基址表中查找段表起始地址,如图6.58中的A0所示。然后根据段号在以A0为起始地址的段表中
查找,以确定所需要的段是否在物理主存中(由装入位决定)。如果在,则取出其中的“段起始地址”,与逻辑地址中的段内地址相加,形成物理主
存地址;如果不在,则要从外存中装入。2.页式管理页式管理是把虚拟存储器和物理主存都划分成大小固定且相等的“页”,其大小一般为4
KB~1GB。在地址映像中,所有虚拟页都可以装入物理主存的任何页位置。逻辑地址由虚拟页号和页内地址组成,实际的物理地址也由页号和页
内地址组成。在任何时刻,一个虚拟地址都对应一个实际地址,这个实际地址可能在物理主存中,也可能不在。这种把存储空间划分成页并按页管理
的方式称为页式管理。在地址映像中,物理主存中的页可以与虚拟存储器中的任何一页构成映像,即全相联映像,如图6.59所示。图6.59
页式管理虚拟存储器地址映像在页式管理中,页表也可分为两级。一级页表仅有一个,也称为页表基址表,一般由寄存器组构成,存放所有二级
页表的起始地址。二级页表有若干个,每个页表中有若干个单元,分别存放若干个页的起始地址、装入位、访问方式、以及修改标志等信息,如图6
.60所示。图6.60页式管理地址变换在地址映像时,首先根据逻辑地址中的基号,即用户程序名,查找页表基址表,找到页表起始地址
,如图中的P0所示。然后根据逻辑地址中的页号在以P0为起始地址的页表中查找页起始地址。如果该页已经装入,取出相应物理主存中的页起始
地址,与逻辑地址中的页内地址结合,构成主存物理实地址;如果没有装入,即未命中,则要从外存置换到主存中。3.段页式管理段页式管理
是把存储器空间按逻辑模块分段,每段又分成若干个页,访问存储器时需经段表和若干个页表来进行。这种方式集中了段式管理和页式管理的优点。
按照段式管理易于实现程序段和数据段的保护,按照页式管理易于实现页置换。采用段页式管理,段的大小必须是页的整倍数,且段起始地址必须是
页起始地址。目前,采用段页式管理的计算机很多,例如,早期的IBM370,后来的80486及Pentium等。段页式地址映像如图
6.61所示,其中段表中有三项,标记三个页表的起始地址和页表长度。每个页表中存放对应于主存中所在段的页起始地址。同样,段表和页表中
还有一些其它的信息,例如装入位、访问方式、权限和修改标志等。这样,只要把段表和段内页表结合起来,就可以找到逻辑地址中某段某页在主存
中对应的页。图6.61段页式管理虚拟存储器地址映像段页式管理地址变换如图6.62所示,包括一个段表基址表(由寄存器组成)、若
干个段表和大量的页表。逻辑地址中的基号对应于用户程序名,用来在段表基址表中查找段表的起始地址,如图中的A0所示;然后再在以A0为起
始地址的段表中按照逻辑地址中的段号查找页表起始地址,如图中的P0所示;再在以P0为起始地址的页表中按照逻辑地址中的页号查找页表。图
6.62段页式管理地址变换若该页已经装入主存,则取出对应物理主存中的页起始地址,与逻辑地址中的页内地址相结合,构成物理主存的
实地址;若所需要的页没有装入主存,则从外部虚拟存储器中调入主存,并修改相应的段表和页表。(6.6)4.段页式管理性能分析1)
存储器空间利用率目前的操作系统一般都支持段页式管理,而在段页式管理中页面的大小对于存储器的效率有很大影响。其中的主要因素是页内的
剩余空间和页表的开销。如果页面太大,页内的剩余空间就会大,这样将降低存储器空间的利用率;如果页面太小,则页表就会很多,将占据大量的
存储器空间。因此,需要在二者之间取得一个平衡值。假设页面的大小用Sp字表示,段的大小用Ss字表示,存储器空间的利用率用?表示。在
一般情况下,Ss>>Sp,这样最后一页的剩余空间平均为Sp/2字。页表的大小约为Ss/Sp行,且设每行都是一个字,则每段存储器空
间的开销为:(6.7)(6.8)(6.9)存储器空间的利用率为:最佳页面大小是利用率最高时的页面大小,也就是开销S最小时的页
面大小。在式(6.6)中,将S对Sp求导,则得:当dS/dSp=0时,可得S的最小值。这时的最佳存储器空间利用率为:【例6.5】
设某计算机的虚拟存储器采用段页式管理,每段2GB,每页4KB,以段为单位试计算存储器额外开销(包含剩余页面)、段空间利用率以及最佳
页容量。解:设段容量用Sm表示,页容量用Sp表示,页表容量用Spt表示,每个页表项分别占4个字节。则Spt=Sm/Sp×4B
=231/212×4B=221B总开销为S=Spt+Sp/2=(221+211)B=(211+2)KB=2050KB主存空间
利用率μ=Sm/(Sm+Spt+Sp/2)=231/(231+221+211)=99.90%(Sp)opt==216B图6.
63命中率与页面的关系2)命中率与页面的关系页面的大小对页面的命中率有很大的影响,但是分析起来比较复杂,它取决于程序访问主
存时的地址流及物理主存的空间。当Sp由小增大时,命中率H增大;当Sp大到一定的值时再增大,命中率反而减小,如图6.63所示。图中表
示的是不同主存空间和不同段大小情况下的H随Sp变化的曲线。由于页面命中率对主存的效率有很大的影响,因此是一项重要的技术指标。图6
.64快速目录表变换6.8.3虚拟地址快速变换法1.快速目录表法根据访存局部性原理,在程序执行时有一些指令或数据是频
繁使用的。因此,把这些指令或数据所在的虚拟段页号及相应物理主存中的实页号集中起来,构成一个按内容访问的目录表。该表所需的存储器空间
较小,由高速器件构成,是一种快速目录表。在按虚拟逻辑地址访存时,同时在快速目录表中查找。若有该目录项,取出相应的实页号与逻辑地址中
的页内地址结合,构成物理主存的实地址,如图6.64所示。这种按内容访问的方式也称为相联访问。在这种方式中,如果从快速目录表中找
不到相符合的基号、段号或页号,则说明没有该项,于是需要启动前面提到的段页查找过程。快速目录表一般很小,速度快,查找容易。因此,如果
查到,速度提高;如果没有查到,对系统地址变换的速度影响不大。2.快表与慢表法如果在上述快速目录表中未查到所需要的目录项,就要去
查找段表或页表。快表与慢表法是让上述快速目录表的查找与段页查找同时进行。如果在快速目录表中找到,取出实页号,不再进行段页查找;如果
没有找到,段页查找继续进行,不影响段页查找的速度。图6.65快表与慢表变换法快速目录表简称为快表,也称为地址转换旁视缓冲器
,用TLB(Translationlookasidebuffer)表示。这样,前面介绍的段表和页表就称为慢表。快表与慢表法的地
址变换过程如图6.65所示。虚拟逻辑地址中的基号、段号和页号同时送往快表和慢表,同时启动两个表的查找过程。6.8.4置换策
略若经地址变换后,处理机不能从物理主存中获得所需要的指令或数据,要从外存空间调入指令或数据,通常以页为单位,亦称为页置换。与Ca
che相同,页置换也涉及置换策略,或称为置换算法,有随机法、先进先出法FIFO、最久未使用法LRU和最优置换法OPT。其中随机法、
FIFO和LRU与Cache中介绍的基本思想一致,仅在实现的方法上略有不同。1.随机法随机法是用软件或者硬件的方法产生一个随机
数,以指示物理主存中的某一页作为置换对象。其方法简单,易于实现,但是没有考虑数据进入物理主存的“历史”,没有考虑被置换的数据项是否
经常使用,也没有遵循访存的局部性原理。因此,命中率低,已不使用。2.先进先出法先进先出法FIFO是在页表或页目录表中对每一页设置
一个计数器,每个计数器在每次置换操作时自动加1计数。置换时取计数值最大的一个,予以置换。这种方法考虑到数据的使用“历史”,但是没有
考虑数据是否经常使用,因此使用较少。3.最久未使用法最久未使用法LRU是置换最久没有使用的一页。这种方法考虑到了数据的使用“
历史”,也考虑了访存的局部性原理,因此是一种比较理想的置换策略。它在页目录表或者页表中为每一页设置一个计数器,定时计数。当某页被访
问后,相应的计数器清0。这样,最久没有使用的页的计数值一定最大,以该页作为置换对象。4.最优置换法LRU法考虑了数据使用的“历
史”和访存局部性原理,但是没有考虑到被置换的页在未来一段时间是否还会使用。最优置换法OPT选择的是下一段时间内最久不被访问的页作为
置换对象。这种方法要先运行一遍程序,得到访存的全部虚页号序列,称为虚页地址流,然后才能确定哪一页未来一段时间不被访问,因此,是一种
较为理想的替换算法。【例3.6】设有一个循环程序分为1~5个虚页,程序执行时访问存储器的虚页地址流为2,3,2,1,5,
2,4,5,3,2,5,2,操作系统能分配给该程序的实页只有3个,试画出使用FIFO、LRU和OPT三种置换算法对3
个实页的使用与置换过程,并计算各自访问主存的命中率。解:分别使用FIFO、LRU和OPT算法对主存3个实页的使用与置换过程如图6
.66所示,其中,右上角有“”号的为被替换的对象。计算命中率如下:图6.66三种置换策略比较HFIFO=3/12=0.25
HLRU=5/12=0.417HOPT=6/12=0.56.8.5虚拟存储器管理举例为了获取较大的存储空间和较高的访存速度
,各类计算机都采用了许多新的技术或者措施。这里以80486微处理器为例,说明其虚拟存储器的管理方式。80486有32位地址线,物
理存储器空间为232=4GB;内部采用段页式管理,可实现64TB虚拟存储器的映像管理。另外设有8KB片内Cache,与外部结合可构
成二级Cache结构。为了保证数据的安全,在段页管理中采用了4级保护措施。工作方式有实地址方式、保护方式和平台管理方式。实地址方
式是在开机或复位时自动进入的。在这种方式下,80486与8086有着相同的存储器管理方式,段寄存器左移4位与偏移量相加构成20位的物理地址,最大寻址范围为1MB。保护方式是把存储器空间分成段和页,通过段页映像实现64TB的虚拟存储空间的管理。而平台管理方式是80486最简单的一种存储器管理方式,它使所有段都能映像到整个物理存储器空间上,段的偏移量既可以代码区为基准,也可以数据区为基准。下面主要介绍保护方式下的段页式管理。1.分段管理在80486微处理器中设有6个16位段寄存器,用来实现存储器空间的分段管理。通过描述符提供段起始基址(简称为段基址)和相关的属性,包括段长度、访问方式、修改标志及特权级别等。不同的系统程序、用户程序和I/O处理程序有不同的描述符,不同类型的描述符集中在一起构成不同的描述符表,其中最主要的是全局描述符表和局部描述符表,如图6.67所示。它们通过段寄存器中选择符的TI标志来选择。当TI=0时,选择全局描述符表;当TI=1时,选择局部描述符表。RPL表示特权级别,有0~3级。根据段寄存器中的选择符可选择描述符表中的某一项,取出其中的段基址和虚拟地址中的段偏移量相加,即可生成线性地址,如图6.68所示。图6.67全局描述符表和局部描述符表如果页变换被禁止或者未设页变换,线性地址就是主存储器的物理地址;如果分页没有被禁止,则还需经过页变换才能生成32位的物理地址。图6.68段变换过程如果页变换被禁止或者未设页变换,线性地址就是主存储器的物理地址;如果分页没有被禁止,则还需经过页变换才能生成32位的物理地址。2.分页管理在80486微处理器中,把4GB的物理存储器空间按照4KB为一页,分成1048576个页,通过内部寄存器和两级页表进行管理。从0开始,每一组连续相邻的1024个页为一个低级管理单位。每一页有一个起始地址(低12位全为0),1024个页的起始地址集中存放,构成一个页表,其中每一项称为一个页表项。每个页表项占4个字节,整个页表占4KB空间,由10位地址与之映像。在低级管理单元的上面是高级管理单位,对1024个低级管理单位实施管理。每一个页表有一个起始地址(高20位,低12位全为0),1024个页表地址集中排列存放,构成页目录表,其中每一项称为一个页目录项。每一个页目录项占4个字节,整个页目录表占4KB空间,由10位地址与之映像。图6.69页目录表、页表及转换过程页目录表的高20位基地址由内部控制寄存器CR3提供,页目录表、页表及其转换过程如图6.69所示。图6.70段页式管理转换过程3.段页式管理分段管理是把逻辑地址转换成线性地址,分页管理是把线性地址转换成物理地址,二者结合起来,可实现由虚拟逻辑地址到物理地址的全部转换过程,如图6.70所示。首先,根据选择符从段描述符表中取出描述符,将其中的段基址与偏移量相加,求出线性地址。然后将线性地址按照二级页表变换,取出页基址,再与页内偏移量相加,即可求出物理地址。其中,控制寄存器CR3提供页目录表的起始地址。4.转换旁视缓冲存储器在80486微处理器的分页部件中还有一个被称为转换旁视缓冲存储器(TLB)的高速缓冲存储器,用来存放最近经常使用的页表项。绝大多数分页变换都可以通过转换旁视缓冲存储器进行,从而提高了页转换的速度。5.置换策略经段页式管理变换后,若访问物理主存没有命中,要把外存中的虚拟页置换到物理主存中。80486采用最久未使用LRU策略。通过在页表项中设置修改标志位,确定该页是否被修改过。如果没有被修改,置换前不写回外存;如果被修改过,置换前应先写回外存。6.9存储器保护措施在多用户的情况下,虚拟存储空间由多个用户共同使用。为了安全,必须采取保护措施。保护方式涉及两个方面,即存储区域的保护和访问方式的保护。早期,对非虚拟存储器系统常采用界限寄存器的方式予以限制,即设置存储时的上下界,禁止越界存储和访问。对于虚拟存储器,用户程序映像到物理主存中不再是连续空间,因此仅使用界限值的方式难以满足要求。1.保护方式目前,对虚拟存储常用的保护方法有映像表保护法、关键字保护法和环保护法。这些方法既能实现存储区域保护,又能提供访问方式保护。1)映像表保护法映像表保护法是在段式和段页式管理中利用映像表的映像关系来限制用户程序访问的地址空间,用户程序不能访问映像表中找不到的主存页面。例如,段表中的每一个表项都设有“段长”,当访问越界时将产生越界中断。另外,在段表、页表中还可设置权限和访问方式,以此限定各进程对共享数据区的使用。2)关键字保护法关键字保护法由操作系统按当时物理主存的使用情况给每一页分配一个关键字,称为存储键。存储键相当于一把锁,当进程访问某页时首先访问存储键,以检查是否可以访问该页,即实现保护功能。例如,在IBM370机中采用的就是关键字保护法,它的存储键有4位,分别赋给已调入主存的16个进程。图6.71环保护法分层示意图3)环保护法环保护法是将系统程序和用户程序按访问权分层管理,如图6.71所示。内层权限最高,属于系统程序层(简称系统层),向外权限逐层降低,属于用户程序层(简称用户层)。程序中各页的环号由操作系统分配,并置入页表。内层的程序可以访问外层的数据,外层的程序可以调用内层的程序,但是不能访问内层的数据,以防止由于用户程序出错而破坏系统数据。图6.7280486微处理器保护措施2.举例上一节介绍的80486采用的是段页式管理,且在段寄存器、段描述符和页表项中设有多种标志位,例如权限、访问方式、段长、用户/管理员标志位、类型等,以实现上述保护方式。1)段寄存器段寄存器如图6.72(a)所示,除了提供选择符之外,还设有特权标志RPL,共2位,可标识4级特权。只有高一级的需求能够访问低一级的段,即通过特权级来实施段保护。2)段描述符段描述符如图6.72(b)所示,除了提供32位的段基址之外还提供20位段界限和若干标志位,例如,G是粒度标志位,表示段界限是以字节为单位还是以页为单位;D是字长标志位,表示字长是32位还是16位;DPL是特权标志位,表示4个优先级,实现段保护;AVL由系统软件使用;TYPE是类型位,说明描述符的类型。3)页目录项与页表项格式页目录项与页表项格式如图6.72(c)所示,除了高20位是页起始地址之外,也设有若干个标志位,例如,D是修改标志位,表示该页是否被修改过;A是被访问位,表示该页是否正在被访问;PCD用于Cache禁止控制;PWT表示Cache写贯穿方式;U/S是用户/管理员程序标志位,表示用户/管理员可以使用;R/W表示该页可读或者可写;P是存在位,表示页或者页表是否在主存储器中;AVAIL留给系统设计人员使用。从以上分析可以看出,80486微处理器在存储器系统的管理中采用了多种保护方式。
献花(0)
+1
(本文系太好学原创)