《《存储系统结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《存储系统结构》PPT课件.ppt(136页珍藏版)》请在三一办公上搜索。
1、第三章 存储系统,3.1 存储器概述3.2 随机读写存储器3.3 只读存储器和闪速存储器3.4 高速存储器3.5 cache存储器3.6 虚拟存储器 3.7 存储保护,3.1 存储器概述 3.1.1 存储器分类,存储器是计算机系统中的记忆设备,用来存放程序和数据。构成存储器的存储介质,目前主要采用半导体器件和磁性材料。存储器中最小的存储单位就是一个双稳态半导体电路或一个CMOS晶体管或磁性材料的存储元,它可存储一个二进制代码。由若干个存储元组成一个存储单元,然后再由许多存储单元组成一个存储器。根据存储材料的性能及使用方法不同,存储器有各种不同的分类方法:,按存储介质分 半导体存储器:用半导体器
2、件组成的存储器。磁表面存储器:用磁性材料做成的存储器。按存储方式分 随机存储器:任何存储单元的内容都能被随 机存取,且存取时间和存储单 元的物理位置无关。顺序存储器:只能按某种顺序来存取,存取 时间和存储单元的物理位置 有关。,按存储器的读写功能分 只读存储器(ROM):存储的内容是固定不变的,只能读出而不能写入的半导体存储器。随机读写存储器(RAM):既能读出又能写入的 半导体存储器。按信息的可保存性分 非永久记忆的存储器:断电后信息即消失的 存储器。永久记忆性存储器:断电后仍能保存信息的 存储器。按在计算机系统中的作用分 根据存储器在计算机系统中所起的作用,可分为主存储器、辅助存储器、高速
3、缓冲存储器、控制存储器等。,3.1.2 存储器的分级结构,为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,目前通常采用多级存储器体系结构,即使用高速缓冲存储器、主存储器和外存储器。,图3.1 存储器系统的分级结构,外存储器,主存储器,高速缓冲存储器,3.1.3 主存储器的技术指标,主存储器的性能指标主要是:存储容量 存取时间 存储周期 存储器带宽 字存储单元即存放一个机器字的存储单元,相应的地址称为字地址。一个机器字可以包含数个字节,所以一个存储单元也可包含数个能够单独编址的字节地址。下面列出主存储器的主要几项技术指标:,表3.2 主存储器的主要几项技术指标,3.2 随机读写存储器
4、3.2.1 SRAM存储器 1.基本存储元,基本存储元是组成存储器的基础和核心,它用来存储一位二进制信息0或1。下图一个是六管SRAM存储元的电路结构示意图。它是由两个CMOS反相器交叉耦合而成的触发器,一个存储元存储一位二进制代码。这种电路有两个稳定的状态,并且A,B两点的电位总是互为相反的,因此它能表示一位二进制的1和0。下面我们来分析说明该存储元的读写操作实现过程。,2.SRAM存储器的组成,图示3.3为SRAM存储器的结构框图。,其内部组成结构是:存储体:存储单元的集合,通常用X选择线(行线)和Y选择线(列线)的交叉来选择所需要的单元。地址译码器:将用二进制代码表示的地址转换成输出端的
5、高电位,用来驱动相应的读写电路,以便选择所要访问的存储单元。地址译码有两种方式。单译码:适用于小容量存储器,一个地址译码器 双译码:适用于大容量存储器,X向和Y向两个译码器。,图示说明了一个采用双译码结构的存储单元矩阵的译码过程,驱动器:双译码结构中,在译码器输出后加驱动器,驱动挂在各条X方向选择线上的所有存储元电路。I/O电路:处于数据总线和被选用的单元之间,控制被选中的单元读出或写入,放大信息。片选:在地址选择时,首先要选片,只有当片选信号有效时,此片所连的地址线才有效。输出驱动电路:为了扩展存储器的容量,常需要将几个芯片的数据线并联使用;另外存储器的读出数据或写入数据都放在双向的数据总线
6、上。这就用到三态输出缓冲器。,3.SRAM存储器芯片实例,在了解了SRAM的内部组成结构后,下面我们通过实际中的存储器芯片来加以具体说明。下图是2114存储器芯片(1K4)的逻辑结构方框图。注意:由于读操作与写操作是分时进行的,读时不写,写时不读,因此,输入三态门与输出三态门是互锁的,数据总线上的信息不致于造成混乱。,4.存储器与CPU连接,CPU对存储器进行读/写操作,首先由地址总线给出地址信号,然后要发出读操 作或写操作的控制信号,最后在数据总线上进行信息交流,要完成地址线的连接、数据线的连接和控制线的连接。存储器芯片的容量是有限的,为了满足实际存储器的容量要求,需要对存储器进行扩展。主要
7、方法有:位扩展法 字扩展法 字位同时扩展法,位扩展法:只加大字长,而存储器的字数与存储器芯片字数一致,对片子没有选片要求使用。下图为8K1的RAM存储器芯片,组成8K8位的存储器连接结构图。,字扩展法:仅在字向扩充,而位数不变。需由片选信号来区分各片地址。下图是用16K8位的芯片采用字扩展法组成64K8位的存储器存储器连接结构图。字位同时扩展法:一个存储器的容量假定为MN位,若使用Lk 位的芯片(LM,kN),需要在字向和位向同时进行扩展。此时共需要(M/L(N/k)个存储器芯片。,5.存储器的读、写周期,在与CPU连接时,CPU的控制信号与存储器的读、写周期之间的配合问题是非常重要的。读周期
8、:读周期与读出时间是两个不同的概念。读出时间是从给出有效地址到外部数据总线上稳定地出现所读出的数据信息所经历的时间。读周期时间则是存储片进行两次连续读操作时所必须间隔的时间,它总是大于或等于读出时间。写周期:要实现写操作,要求片选CS和写命令WE信号都为低,并且CS信号与WE信号相“与”的宽度至少应为tW。,图3.8 2114的读写周期时序图,3.2.2 DRAM存储器1四管动态存储元,四管的动态存储电路是将六管静态存储元电路中的负载管T3,T4去掉而成的。它和六管静态存储元电路的区别:写操作:写数据靠T1,T2管栅极电容的存储作用,在一定时间内可保留所写入的信息。读操作:先给出预充信号,使两
9、个预冲电容达到电源电压。字选择线使T5,T6管导通时,存储的信息通过A,B端向位线输出。刷新操作:为防止存储的信息电荷泄漏而丢失信息,由外界按一定规律不断给栅极进行充电,补足栅极的信息电荷。,2.单管动态存储元,单管动态存储元电路由一个管子T1和一个电容C构成。写入:字选择线为“1”,T1管导通,写入信息由位线(数据线)存入电容C中;读出:字选择线为“1”,存储在电容C上的电荷,通过T1输出到数据线上,通过读出放大器即可得到存储信息。,单管存储元电路和四管存储元电路对比,3.DRAM存储芯片实例,DRAM存储器芯片的结构大体与SRAM存储器芯片相似,由存储体与外围电路构成。但它集成度要高,外围
10、电路更复杂。下图是16K1位的DRAM存储器2116芯片的引脚图和内部逻辑结构示意图和其读写时序图。,图3.11 16K1位DRAM芯片,4.DRAM的刷新,动态MOS存储器采用“读出”方式进行刷新。从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍为止,这一段时间间隔叫刷新周期。常用的刷新方式有三种:集中式 分散式 异步式,集中式刷新:在整个刷新间隔内,前一段时间重复进行读/写周期或维持周期,等到需要进行刷新操作时,便暂停读/写或维持周期,而逐行刷新整个存储器,它适用于高速存储器。下图为刷新方式图。分散式刷新:把一个存储系统周期tc分为两半,周期前半段时间tm用来读/写操作或维持信
11、息,周期后半段时间tr作为刷新操作时间。这样,每经过128个系统周期时间,整个存储器便全部刷新一遍。异步式刷新:是前两种方式的结合。即对每一行在2ms之内相隔平均间隔刷新一次。,图3.14(a)集中刷新方式,图3.14(b)分散刷新方式,5.DRAM存储器控制电路,DRAM存储器的刷新需要有硬件电路的支持,包括刷新计数器、刷新/访存裁决、刷新控制逻辑等。这些控制线路形成DRAM控制器,它将CPU的信号变换成适合DRAM片子的信号。(1)地址多路开关:刷新时需要提供刷新地址,由多路开关进行选择。(2)刷新定时器:定时电路用来提供刷新请求。(3)刷新地址计数器:只用RAS信号的刷新操作,需要提供刷
12、新地址计数器。(4)仲裁电路:对同时产生的来自CPU的访问存储器的请求和来自刷新定时器的刷新请求的优先权进行裁定。(5)定时发生器:提供行地址选通信号RAS、列地址选通信号CAS和写信号WE.,3.2.3 主存储器组成实例,本节以DRAM控制器W4006AF为例,说明80386中主存储器的构成方法。下面是采用W4006AF构成的80386主存储器简图,具体框图参看教材:P87页(1)W4006AF的外特性 可以控制两个存储体交叉访问;可以对256KB16MB的DRAM片子进行访问;最多可控制128个DRAM片子;采用CAS在RAS之前的刷新方式。,图3.17 采用W4006AF构成的80386
13、主存储器,(2)主存储器组成 上图右半部所示为80386主存储器的基本构成,有4 个存储模块,每个模块存储容量为1M32位。在用W4006AF控制器构成存储器时,几乎不需要外加电路,直接把W4006AF同CPU和DRAM双方进行连接即可。要对主存容量进行扩充,只需扩充DRAM芯片数量或更换存储容量更大的DRAM芯片即可。,3.2.4 高性能的主存储器1.EDRAM芯片,EDRAM芯片又称增强型DRAM芯片,它是在DRAM 芯片上集成了一个SRAM实现的小容量高速缓冲存储器,从而使DRAM芯片的性能得到显著改进。以SRAM保存一行内容的办法,对成块传送非常有利。如果连续的地址高11位相同,意味着
14、属于同一行地址,那么连续变动的9位列地址就会使SRAM中相应位组连续读出,这称为猝发式读取。EDRAM的这种结构还带来另外两个优点:在SRAM读出期间可同时对DRAM阵列进行刷新。芯片内的数据输出路径与输入路径是分开的,允许在写操作完成的同时来启动同一行的读操作。,2.EDRAM内存条,一片EDRAM的容量为1M4位,8片这样的芯片可组成1M32位的存储模块。8个芯片共用片选信号Sel、行选通信号RAS、刷新信号Ref和地址输入信号A0A10。当某模块被选中,此模块的8个EDRAM芯片同时动作,8个4位数据端口D3D0同时与32位数据总线交换数据,完成一次32位字的存取。上述存储模块本身具有高
15、速成块存取能力,这种模块内存储字完全顺序排放,以猝发式存取来完成高速成块存取的方式,在当代微型机中获得了广泛应用。,3.主存物理地址的存储空间分布,下面以奔腾PC机主存为例,说明主存物理地址的存储空间概念。奔腾PC机主存物理地址存储空间分布情况如下图。最大可访问主存空间为256MB,实际只安装了16MB的DRAM。存储空间分成基本内存、保留内存、扩展内存几部分。,3.3 只读存储器和闪速存储器3.3.1 只读存储器(ROM),1.ROM的分类只读存储器简称ROM,它只能读出,不能写入。它的最大优点是具有不易失性。根据编程方式不同,ROM通常分为三类:掩模式ROM:又称 mask ROM 一次编
16、程ROM:又称 PROM 多次编程ROM:又称 EPROM,EEPROM,掩模式ROM:数据在芯片制造过程中就已经被确定。其特点是可靠性和集成度高,价格便宜,但不能重写。一次编程ROM:用户可自行改变产品中某些存储元可以根据用户需要编程只能一次性改写。多次编程ROM:可以用紫外光照射或电擦除原来的数据,然后再重新写入新的数据可以多次改写ROM中的内容。,2.光擦可编程只读存储器(EPROM)(1)基本存储元电路P沟道EPROM的基本电路结构示意图如下。它与普通P沟道增强型MOS电路相似,在N型基片上生长了两个高浓度的P型区,通过欧姆接触,分别引出源极(S)和漏极(D)。在S极和D极之间,有一个
17、由多晶硅做的栅极,但它是浮空的,被绝缘物SiO2所包围。当管子制造好时,硅栅上没有电荷,所以源极和漏极之间是不导电的。,当把EPROM管子用于存储矩阵时,一个基本存储元电路如下图所示,这种电路所组成的存储矩阵输出为“1”,当写入“0”时,在D和S极之间加上25V高压,另外加上编程脉冲,所选中的单元在这个电压作用下,D和S之间被瞬间击穿,于是有电子通过绝缘层注入到硅栅。当高压去除后,因为硅栅被绝缘层包围,故注入的电子无处泄露,硅栅变负,于是就形成了导电沟道,从而使EPROM存储元导通,输出为“0”。由这种EPROM做成的片子封装上方有一个石英玻璃窗口。当用紫外线照射窗口时,所有电路中的浮空晶栅上
18、的电荷会形成光电流泄漏走,使电路恢复道起始状态。输出变为“1”。,(2)EPROM实例(2716的内部结构图),图3.24主存储器组成与CPU的连接逻辑图,3.3.2 闪速存储器,闪速存储器是一种高密度、非易失性的读/写半导体存储器,它突破了传统的存储器体系,改善了现有存储器的特性。其特点:固有的非遗失性 廉价的高密度 可直接执行 固态性能 下图是28F256A闪存芯片的逻辑方框图。除了指令寄存器在内的控制和定时逻辑,其余部分与一般半导体存储器的结构相似。其中VCC(+5V)是对器件供电,VPP(+12V)是擦除/编程供电的电源。,1.闪速存储器的工作原理,闪速存储器是在EPROM功能基础上增
19、加了电路的电擦除和重新编程能力。闪存28F256A引入一个指令寄存器来实现这种功能。其作用是:(1)保证TTL电平的控制信号输入;(2)在擦除和编程过程中稳定供电;(3)最大限度的与EPROM兼容。当VPP引脚不加高电压时,它只是一个只读存储器;当VPP引脚加高电压时,则通过指令寄存器可以实现存储器内容的变更;当VPP=VPPL时,指令寄存器的内容为读指令,使28F256A成为只读存储器,称为写保护。,2.闪速存储器的工作模式,读操作:片选信号CE是供电控制端,输出允许信号OE用于控制数据从输出引脚的输出。只有这两个信号同时有效时,才能实现数据输出。输出禁止操作:当输出允许控制端OE处于高电平
20、时,28F256A被禁止输出,输出引脚置于高阻状态。等待操作:当片选信号CE处于逻辑高电平时,等待操作抑制了28F256A的大部分电路,减少器件功耗。写操作:当VPP为高电压时,通过指令寄存器实现器件的擦除和编程。当CE=0且WE=0时,通过写周期对指令寄存器进行写入。,表3.4 28F256A工作模式,3.闪速存储器与CPU的连接,CPU与闪速存储器进行连接的逻辑框图如下中间部分是接口电路。地址总线和控制总线由CPU发向存储器和接口逻辑,数据总线为双向总线。地址总线的宽度决定了存储器的存储容量,数据总线的宽度决定了存储器的字长。,3.4 高速存储器,由于CPU和主存储器是用不同的材料制成的,
21、因而它们在速度上是不匹配的,CPU运算速度很高,存储器的访问速度比较低。为了提高CPU的工作效率,加速CPU与存储器之间的数据传输,通常有以下几种方式来实现:1.采用更高速性能的存储器,加长存储器 的字长。2.采用并行操作的双端口存储器。3.在CPU和主存之间使用高速缓冲存储器 cache。4.在每个存储器周期中存取几个字。,3.4.1 双端口存储器,1.双端口存储器的逻辑结构双端口存储器是指同一个存储器具有两组相互独立的读写控制线路,是一种高速工作的存储器。下图是2K16位双端口存储器IDT7133的逻辑功能方框图。它提供了两个相互独立的端口,即左端口右端口。它们分别具有各自的地址线、数据线
22、和控制线,可以对存储器中任何位置上的数据进行独立的存取操作。,2.无冲突读写控制当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制和输出驱动控制。,3.有冲突的读写控制 当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特设置了BUSY标志。由片上的判断逻辑决定对哪个端口优先进行读写操作,而暂时关闭另一个被延迟的端口。1.CE判断:如果地址匹配且在CE之前有效,片上的控制逻辑在CEL和CER之间进行判断来选择端口。2.地址有效判断:如果CE在地址匹配之前变低,片上的控制逻辑在左
23、、右地址间进行判断来选择端口。,3.4.2 多模块交叉存储器1.存储器的模块化组织,一个由若干个模块组成的主存储器是线性编址的。这些地址在各模块有两种安排方式:一种是顺序方式,一种是交叉方式。顺序方式:某个模块进行存取时,其他模块不工作,某一模块出现故障时,其他模块可以照常工作,通过增添模块来扩充存储器容量比较方便。但各模块串行工作,存储器的带宽受到了限制。,交叉方式:地址码的低位字段经过译码选择不同的模块,而高位字段指向相应模块内的存储字。连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的。对连续字的成块传送可实现多模块流水式并行存取,大大提高存储器的带宽。,2.多模块交叉存储器
24、的基本结构,四模块交叉存储器结构框图如下图:每个模块各自以等同的方式与CPU传送信息。CPU同时访问四个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递。这是一种并行存储器结构。,下面做定量分析:我们认为模块字长等于数据总线宽度,模块存取一个字的存储周期为T,总线传送周期为,存储器的交叉模块数为m,为了实现流水线方式存取,应当满足 T=m(m=T/称为交叉存取度)交叉存储器要求其模块数必须大于或等于m,以保证启动某模块后经m时间再次启动该模块时,它的上次存取操作已经完成。这样,连续读取m 个字所需的时间为t1=T+(m-1)而顺序方式存储器连续读取m个字所需时间为t2=mT。交叉存储
25、器的带宽确实大大提高了。,3.4.3 相联存储器,1.相联存储器的基本原理 前面介绍的存储器都是按地址访问的存储器,而相联存储器是按内容访问的存储器。相联存储器是指其中任一存储项内容作为地址来存取的存储器。选用来寻址存储器的子段叫做关键字。存放在相联存储器中的项可以看成具有KEY,DATA这样的格式。其中KEY是地址,DATA是被读写信息。相联存储器的基本原理是把存储单元所存内容的某一部分作为检索项(即关键字项),去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。,表3.7 存放在存储器中的一张表格,物理地址 n n+1 n+2,2.相联存储器的组成 相联存储器由存储体、
26、检索寄存器、屏蔽寄存器、符合寄存器、比较线路、代码寄存器、控制线路等组成,结构框图如下图。检索寄存器:用来存放检索字,其位数和相联存储器的存储单元位数相等。屏蔽寄存器:用来存放屏蔽码,其位数和检索寄存位数相同。符合寄存器:用来存放按检索项内容检索存储体中与之符合的单元地址,其位数等于相联存储器的存储单元位数,每一位对应一个存储单元,位的序数即为相联存储器的单元地址。,比较线路:把检索项和从存储体中读出的所有单元内容的相应位进行比较,如果有某个存储单元和检索项符合,就把符合寄存器的相应位置“1”,表示该字已被检索。代码寄存器:用来存放存储体中读出的代码,或者存放向存储体中写入的代码。存储体:由高
27、速半导体存储器构成,以求快速存取。在计算机系统中,相联存储器主要用于虚拟存储器中存放分段表、页表和快表;在高速缓冲存储器中,相联存储器作为存放cache的行地址之用。这是因为,在这两种应用中,都需要快速查找。,3.5 cache存储器3.5.1 cache基本原理1.cache的功能,cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。,2.cache的基本原理,CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干定
28、长字组成的。当CPU读取主存中一个字时,便发出此字的内存地址到cache和主存。此时cache控制逻辑依据地址判断此字当前是否在 cache中:若是,此字立即传送给CPU;若非,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。由始终管理着cache使用情况的硬件逻辑电路来实现LRU替换算法。,3.cache的命中率,增加cache的目的,就是在性能上使主存的平均读出时间尽可能接近cache的读出时间。因此,cache的命中率应接近于1。由于程序访问的局部性,这是可能的。在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存
29、完成存取的总次数,h定义为命中率,则有,若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache/主存系统的平均访问时间ta为:ta=htc+(1-h)tm(3.5)设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则有:,为提高访问效率,命中率h越接近1越好,r值以510为宜,不宜太大。命中率h与程序的行为、cache的容量、组织方式、块的大小有关。,3.5.2 主存与cache的地址映射,cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。地址映射即是应用某种方法把主存地址定位到cac
30、he中。址映射方式有三种:全相联映射方式 直接映射方式 组相联映射方式,1.全相联映射方式,主存中一个块的地址与块的内容一起存于cache的行中,其中块地址存于cache行的标记部分中。这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。全相联映射的示意图如下图:,全相联映射的cache组织,2.直接相联映射方式,这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。cache的行号i和主存的块号j有如下函数关系:i=j mod m(m为cache中的总行数)直接映射方式的示
31、意图如下:直接相连映射方式的优点是硬件简单,成本低。缺点是每个主存块只有一个固定的行位置可存放,容易产生冲突。因此适合大容量cache采用。,直接相联映射的cache组织,3.组相联映射方式,这种方式是前两种方式的折衷方案。它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪 一行是灵活的,即有如下函数关系:muv 组号qj mod u 组相联映射的示意图如下:组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。,3.5.3 替换策略,cache工作原理要求它尽量保存最新数据,必然要产生替换。对直接映
32、射的cache来说,只要把此特定位置上的原主存块换出cache即可。对全相联和组相联cache来说,就要从允许存放新主存块的若干特定行中选取一行换出。cache的三种常用替换算法:最不经常使用(LFU)算法 近期最少使用(LRU)算法 随机替换,最不经常使用(LFU)算法 LFU算法将一段时间内被访问次数最少的那行数据换出。每行设置一个计数器。从0开始计数,每访问一次,被访行的计数器增1。当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。,近期最少使用(LRU)算法 LRU算法将近期内长久未被
33、访问过的行换出。每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出。这种算法保护了刚拷贝到cache中的新数据行,有较高的命中率。随机替换随机替换策略从特定的行位置中随机地选取一行换出。在硬件上容易实现,且速度也比前两种策略快。缺点是降低了命中率和cache工作效率。,3.5.4 cache的写操作策略,cache的内容只是主存部分内容的拷贝,它应当与主存内容保持一致。当CPU对cache进行写操作时更改了cache的内容,所以需要更改的数据回写到相应主存中。cache内容的回写方式可选用如下几种写操作策略:(1)写回法:当CP
34、U写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存。这种方法减少了访问主存的次数,但是存在不一致性的隐患。实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。,(2)全写法 当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。当写cache未命中时,直接向主存进行写入。cache中每行无需设置一个修改位以及相应的判断逻辑。缺点是降低了cache的功效。(3)写一次法 基于写回法并结合全写法的写策略,写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存
35、。这样使其它使用该块数据的能即时进行标识或作废处理,以便于维护系统全部cache的一致性。,3.5.5 奔腾PC机的cache,奔腾PC机采用两级cache结构。安装在主板上的2级cache(L2)采用2路组相联映射方式,集成在CPU内的1级cache(L1)也采用2路组相联映射方式,L1又是L2的子集,从而使L1未命中处理时间大大缩短。CPU中的L1分设成各8KB的指令cache和数据cache,有利于CPU高速执行程序。数据cache采用2路组相联结构,采用LRU替换算法,一组两行共用一个LRU二进制位。数据cache的工作方式受CPU控制寄存器CR0中CD和NW位组合状态控制。,CPU与
36、外部数据交换时,存储器读写总线周期主要有两类:一类是256位猝发式传送,用于L1的行填入和行写出,一次完成整行的填入或写出。另一类是不经L1的64位传送,此时cache仅为高电平,称为非超高速缓存式传送。L2级cache采用的是写回法,L1级数据cache采用的是写一次法。为了维护cache的一致性,L1和L2均采用MESI协议,即要求每个cache行有两个状态位,用以描述该行当前是处于修改态、专有态、共享态或者无效态中的哪种状态,从而决定对它的读/写操作行为。总之,L2级cache的内容是主存的子集,而L1级cache又是L2级cache的子集。L2负责整个系统的cache/主存一致性,L1
37、负责响应L2,与L2一起维护L1/L2两个cache的一致性,保证三级存储系统的一致性。,3.6 虚拟存储器 3.6.1 虚拟存储器的基本概念,1.什么是虚拟存储器 虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器。它借助于磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用。虚拟存储器指的是主存外存层次。它以透明的方式给用户提供了一个比实际主存空间大得多的程序地址空间。此时程序的逻辑地址称为虚拟地址(虚地址)。,注意:物理地址由CPU地址引脚送出,用于访问主存的地址。虚拟地址由编译程序生成的,是程序的逻辑地址,其地址空间的大小受到辅助存储器容量的限制。主存外存
38、层次所用的地址变换映射方法和替换策略与cache主存层次所用的方法和策略是相同的,即都基于程序局部性原理。它们遵循的原则是:,把程序中最近常用的部分驻留在高速的存 储器中。一旦这部分变得不常用了,把它们送回到 低速的存储器中。这种换入换出是由硬件或操作系统完成的,对用户是透明的。力图使存储系统的性能接近高速存储器,价格接近低速存储器。两种存储系统的主要区别在于:在虚拟存储器中未命中的性能损失要远大于cache系统中未命中的损失。,2.主存-外存层次的基本信息传送单位主存-外存层次的基本信息传送单位可采用几种不同的方案:段、页或段页。段是按照程序的逻辑结构划分成的多个相对独立部分,作为独立的逻辑
39、单位。优点是段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享;某些类型的段具有动态可变长度,允许自由调度以便有效利用主存空间。缺点是因为段的长度各不相同,起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下许多空余的零碎存储空间,造成浪费。,页是主存物理空间中划分出来的等长的固定区域。优点是页面的起点和终点地址是固定的,方便造页表,新页调入主存也很容易掌握,比段式空间浪费小。缺点是处理、保护和共享都不及段式来得方便。段页式管理采用分段和分页结合的方法。程序按模块分段,段内再分页,进入主存以页为基本信息传送单位,用段表和页表进行两级定位管理。,3.6.2 页式虚拟存储器,页
40、式虚拟存储系统中,虚拟空间分成页,称为逻辑页;主存空间也分成同样大小的页,称为物理页。虚存地址分为两个字段:高字段为逻辑页号,低字段为页内行地址。实存地址也分两个字段:高字段为物理页号,低字段为页内行地址。页表中每一个虚存逻辑页号有一个表目,表目内容包含该逻辑页所在的主存页面地址(物理页号),用它作为实存地址的高字段,与虚存地址的页内行地址字段相拼接,产生完整的实主存地址,据此来访问主存。页式管理的地址变换如图,页式虚拟存储器结构,为了避免页表已保存或已调入主存储器时对主存访问次数的增多,把页表的最活跃部分存放在高速存储器中组成快表。快表与慢表实现内部地址变换的方式如下图。快表由硬件组成,比页
41、表小得多,查表时,由逻辑页号同时去查快表和慢表,当在快表中有此逻辑页号时,就能很快地找到对应的物理页号送入实主存地址寄存器,从而做到虽采用虚拟存储器但访主存速度几乎没有下降。,3.6.3 段式虚拟存储器,在段式虚拟存储系统中,段是按照程序的逻辑结构划分的,各个段的长度因程序而异。虚拟地址由段号和段内地址组成,为了把虚拟地址变换成实主存地址,需要一个段表。段表也是一个段,可以存在外存中,但一般是驻留在主存中虚存地址的段表形式以及虚存地址向实存地址的变换过程如下图所示。,段式虚拟存储器地址变换,段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。它把程序按逻辑单位分段以后,再把每段分成固定大小
42、的页。程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护,兼备页式和段式的优点。缺点是在映象过程中需要多次查表。,3.6.4 段页式虚拟存储器,在段页式虚拟存储系统中,每道程序是通过一个段表和一组页表来进行定位的。段表中的每个表目对应一个段,每个表目有一个指向该段的页表起始地址及该段的控制保护信息。由页表指明该段各页在主存中的位置以及是否已装入、已修改等状态信息。如果有多个用户在机器上运行,多道程序的每一道需要一个基号,由它指明该道程序的段表起始地址。虚拟地址格式如下:,3.6.5 替换算法,虚拟存储器中的页面替换策略和cache中的行替换策略有很多相似之处,但有三点显著不同:(
43、1)缺页至少要涉及一次磁盘存取,读取所缺的页,缺页使系统蒙受的损失要比cache未命中大得多。(2)页面替换是由操作系统软件实现的。(3)页面替换的选择余地很大,属于一个进程的页面都可替换。,虚拟存储器中的替换策略一般采用LRU算法、LFU算法、FIFO算法,或将两种算法结合起来使用。对于将被替换出去的页面,假如该页调入主存后没有被修改,就不必进行处理,否则就把该页重新写入外存,以保证外存中数据的正确性。为此,在页表的每一行应设置一修改位。,3.6.6 虚拟存储器实例,1.奔腾PC机的虚地址模式 奔腾PC的存储管理部件MMU包括分段部件SU和分页部件PU两部份,可允许SU,PU单独工作或同时工
44、作。分段不分页模式:虚拟地址由一个16位的段参照和一个32位的偏移组成。分段部件SU将二维的分段虚拟地址转换成一维的32位线性地址。优点是无需访问页目录和页表,地址转换速度快。对段提供的一些保护定义可以一直贯通到段的单个字节级。,分段分页模式:在分段基础上增加分页存储管理的模式。即将SU部件转换后的32位线性地址看成由页目录、页表、页内偏移三个字段组成,再由PU部件完成两级页表的查找,将其转换成32位物理地址。兼顾了分段和分页两种方式的优点。不分段分页模式:这种模式下SU不工作,只是分页部件PU工作。程序也不提供段参照,寄存器提供的32位地址被看成是由页目录、页表、页内偏移三个字段组成。由PU
45、完成虚拟地址到物理地址的转换。这种模式减少了虚拟空间,但能提供保护机制,比分段模式具有更大的灵活性。,2.保护模式的分页地址转换奔腾机4MB分页方式地址转换如下图。页面(页框)大小为4MB的分页方使用单级页表,只进行一次主存访问,地址转换过程加快了。在此方式下,32位线性地址分为高10位的页面和低22位的页内偏移两个字段。页表项的I位指示页面大小,P位为出现位,A位为访问过位,D位为修改过位。RW位用于读/写控制,US位用于用户/监督控制,PCD位用于页cache禁止的控制,PWT位用于页全写法的控制。,奔腾4MB分页方式地址变换,3.7 存储保护,当多个用户共享主存时,就有多个用户和系统软件
46、存于主存中,为使系统能正常工作,应防止由于一个用户程序出错而破坏其他用户的程序和系统软件,还要防止一个用户程序不合法地访问不是分配给它的主存区域。为此,系统应提供存储保护。通常采用的方式是:1 存储区域保护 2 访问方式保护,3.7.1 存储区域保护,对于不是虚拟存储器的主存系统可采用界限寄存器方式。由系统软件经特权指令设置上、下界寄存器,为每个程序划定存储区域,禁止越界访问。界限寄存器方式只适用于每个用户占用一个或几个连续的主存区域。那么,在虚拟存储系统中,由于一个用户程序的各页离散地分布于主存中,通常采用页表保护、段表保护和键式保护方法。,1.页表保护和段表保护,每个程序的段表和页表本身都
47、有自己的保护功能。每个程序的虚页号是固定的,经过虚地址向实地址变换后的实存页号也就固定了。那么不论虚地址如何出错,也只能影响到相对的几个主存页面。不会侵犯其他程序空间。段表和页表的保护功能相同,但段表中除包括段表起点外,还包括段长。段表保护方式如下图所示。,2.键保护方式,这种方法是为主存的每一页配一个键,称为存储键,每个用户的实存页面的键都相同。为了打开这个锁,必须有钥匙,称为访问键。访问键赋予每道程序,并保存在该道程序的状态寄存器中。当数据要写入主存的某一页时,访问键要与存储键相比较。若两键相符,则允许访问该页,否则拒绝访问。键保护方式演示如下图。,3.环保护方式,环保护方式可以做到对正在
48、执行的程序本身的核心部分或关键部分进行保护。它是按系统程序和用户程序的重要性及对整个系统的正常运行的影响程度进行分层,每一层叫做一个环。在现行程序运行前由操作系统定好程序各页的环号,并置入页表中。然后把该道程序的开始环号送入CPU的现行环号寄存器。程序可以访问任何外层空间;访问内层空间则需由操作系统的环控例行程序判断这个向内访问是否合法。环保护方式演示如下图。,3.7.2 访问方式保护,对主存信息的使用可以有三种方式:读、写和执行。相应的访问方式保护就有R、W、E三种方式形成的逻辑组合。这些访问方式保护通常作为程序状态寄存器的保护位,并且和区域保护结合起来实现。表3.11访问方式保护的逻辑组合
49、,本 章 小 结,对存储器的要求是容量大、速度快、成本低。为了解决了这三方面的矛盾,计算机采用多级存储体系结构,即cache、主存和外存。CPU能直接访问内存(cache、主存),但不能直接访问外存。存储器的技术指标有存储容量、存取时间、存储周期、存储器带宽。广泛使用的SRAM和DRAM都是半导体随机读写存储器,前者速度比后者快,但集成度不如后者高。二者的优点是体积小,可靠性高,价格低廉,缺点是断电后不能保存信息。,只读存储器和闪速存储器正好弥补了SRAM和DRAM的缺点,即使断电也仍然保存原先写入的数据。特别是闪速存储器能提供高性能、低功耗、高可靠性以及瞬时启动能力,因而有可能使现有的存储器
50、体系结构发生重大变化。双端口存储器和多模块交叉存储器属于并行存储器。前者采用空间并行技术,后者采用时间并行技术。相联存储器不是按地址而是按内容访问的存储器,在cache中用来存放行地址表,在虚拟存储器中用来存放段表、页表和快表。在这两种应用中,都需要快速查找。,cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要的硬件技术,并且发展为多级cache体系,指令cache与数据cache分设体系。要求cache的命中率接近于1。主存与cache的地址映射有全相联、直接、组相联 三种方式。其中组相联方式是前二者的折衷,适度兼顾了二者的优点又尽量避免其缺点,从灵活性、命