资源描述
公司公司徽标徽标第4章 存储系统组织与结构本章结构14.1 存储系统概述存储系统概述24.2 半导体存储器半导体存储器34.3 交叉存储技术交叉存储技术54.5 虚拟存储器虚拟存储器44.4 高速缓冲存储器高速缓冲存储器4.1存储系统概述存储器的组织存储器的分类存储器的分层结构1.存储器的组织从物理上讲,存储器是由具有一定记忆功能的物理器件构成的。从逻辑上讲,存储器可以看成是由一个个存储单元构成的连续的地址空间。如图4-1是存储器的逻辑组织结构图。计算机CPU对存储器的操作主要有两种:一是读,二是写。所谓“读”,是指CPU将某个指定的存储单元的内容从存储器中取出,送入CPU或其它部件中处理;所谓“写”,是指CPU将其它某个部件中的数据写入到指定的存储单元。CPU对存储器的读、写操作统称为CPU访存操作。一般来讲,CPU与存储器之间的物理连接主要包括三组信号线:地址线、数据线和控制线,如图4-2示。WRITEREAD地址线数据线CPUARDR存储器图4-2 CPU与存储器的连接CPU对存储器的读操作过程如下:要访问的存储单元地址ARAR内容送地址总线CPU发出读命令READ存储单元内容读出至数据总线数据总线DRCPU对存储器的写操作过程如下:要访问的存储单元地址AR要写入的数据DRAR内容送地址总线DR内容送数据总线发出写命令WRITEDR中的内容写入存储单元2.存储器的分类存储器的分类按照存储器在计算机中的作用划分,主要包括计算机主存、计算机辅存和高速缓存。主存(Memory)又称为计算机内存,就是冯诺依曼结构中的存储器,用于存储要执行的程序和处理的数据辅存(Storage)又称为计算机外存,在现代冯诺依曼机器中,程序在执行之前是以文件的方式存储在外存中,当要运行某程序时,由操作系统将该程序从外存调入内存中;高速缓存(Cache)是一种小容量、高速度的存储器,目前,在计算机的主板和CPU中均设置了高速缓存,设置高速缓存的目的是利用程序的局部性原理实现计算机的存储层次,提高CPU的访存速度,以匹配CPU和主存之间在速度上的差异。按照存储器所使用的物理存储介质或材料划分,目前主流存储器主要有三种:半导体存储器;磁介质存储器;光存储器。在现代计算机中,半导体存储器主要用作计算机的主存,而磁介质存储器和光存储器则用作计算机辅存。按照存储器的读写功能划分,主要有两种:一是随机存取存储器RAM,可以对存储单元按地址随机存取;二是只读存储器ROM,在正常工作条件下,对单元内容只可读不可写。RAM和ROM均属于半导体存储器,是构成计算机主存的主要存储介质,而其中RAM在计算机中用于存储操作系统的常驻内存部分和用户程序,ROM则用于存储操作系统的内核。用户程序空间操作系统常驻内存操作系统内核RAMROM图4-3 计算机内存分布存储器还有易失性和非易失性之分。所谓易失性是指写入存储器中的内容在通电情况下能够保存,一掉电则全部丢失;非易失性则是指写入存储器中的内容在不通电情况下仍然能够保存。将以上类型的存储器总结如下图4-4所示。计算机存储器主存辅存随机存取存储器RAM只读存储器ROM磁介质存储器:磁盘、磁带等光介质存储器:CD-ROM、读写光盘等图4-4计算机存储器种类知识拓展:Flash MemoryFlashmemory称为闪速存储器(简称闪存),是在EPROM的基础上发展起来的一种新型半导体存储器,于1983年推出,1988年逐渐商品化,进入90年代中后期开始逐步得到广泛应用。从功能特性上讲,它可以归属于ROM,因为它具有非易失性的特点。但从目前计算机的使用上讲,它是作为计算机外部存储器来使用的。3.存储器的分层结构存储器的分层结构用户对计算机存储器的要求:容量大速度快速度快成本低为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,目前通常采用多级存储器体系结构。片级cache主存辅存板级cacheCPU很小容量、最快速小容量、快速正常容量、正常速度大容量、慢速存储器的层次中包括高速缓冲存储器Cache、主存和辅存,其中:Cache是由小容量(通常为几十KB到几十MB)、高速的半导体存储器件构成;主存一般使用动态半导体存储器件构成,在速度上比Cache慢,但容量更大,价格相对更低,现代机器根据应用要求的不同通常将主存配置到几百MB到几十GB甚至更大;辅存又称海量存储器,通常由磁介质存储器构成,其特点是容量大,速度慢,价格最便宜。Cache又可以进一步分为片上Cache和板上Cache。片上Cache是指CPU内部配置的Cache,又称为一级Cache,板上Cache是指计算机主板上配置的Cache,又称为二级Cache。一级Cache比二级Cache的容量更小,但速度更快。在有些机器中,还进一步将指令和数据分开,分别存放在指令缓存和数据缓存中。4.2半导体存储器半导体存储器的种类半导体存储器的组成与工作原理主存储器的设计1.半导体存储器的种类随机存取存储器RAM按构成其单元电路的不同,又分为静态随机存取存储器(简称SRAM)和动态随机存取存储器(简称DRAM)。这两种存储器相比较而言,SRAM速度更快,但片容量小,价格更贵,因此SRAM主要用作计算机的cache,而DRAM则用作计算机主存。只读存储器ROM种类较多,主要包括传统的掩膜式ROM、一次可编程式ROM(PROM)、紫外线可擦除可编程式ROM(UVEPROM)和电可擦除可编程式ROM(EEPROM)。前三种ROM在正常工作条件下只可读不可写,是真正意义上的只读存储器,而EEPROM实际上可读可写,但与RAM相比较,最大的不同是:它们均是非易失性的。掩膜式ROM是一种定制式ROM,生产厂家根据用户的需要专门制作掩膜版,将用户提交的程序或数据固定制作在芯片上。这种芯片的特点是,一旦制作好,芯片中的内容就无法进行修改。因此,这种芯片主要用于用户需大批量生产具有固定功能的ROM的场合使用,如在工业控制、家用电器等中均有应用。一次可编程式PROM(ProgrammableROM)顾名思义是这种存储器可以进行一次写入或编程。PROM出厂时是空片,芯片的内容为全0或全1,用户可以根据自己的需要将编制好的程序或数据一次写入,一旦写入内容就无法再进行修改。PROM相对掩膜式ROM来说,使用更加灵活,用户可以根据自己的需要批量购买,也可以只购买几片。紫外线可擦除可编程式UVEPROM(UVErasableProgrammableROM)是一种可重复改写的ROM,当用户要对芯片中的内容进行修改或重写时,需首先使用紫外线对芯片的擦除窗口进行照射(一般可放置在专门的紫外线光源下照射),经过一段时间后,芯片中的内容全部被擦除,成为空片,然后使用专门的编程器,将新的内容写入芯片中。UVEPROM和编程器例图。擦除窗口电可擦除可编程式EEPROM可以实现在板上直接擦除和改写。由于EEPROM的灵活性使其得到广泛的应用。半导体存储器的种类总结如下图4-8所示。半导体存储器半导体RAM半导体ROM静态RAM动态RAM掩膜式ROM图4-8半导体存储器种类一次可编程式PROM紫外线可擦除可编程式UVEPROM电可擦除可编程式EEPROM2.半导体存储器的组成与工作原理半导体存储器是由一个个位单元电路组成,每个位单元电路存储一位二进制信息。(1)静态RAM的组成及工作原理静态RAM的位单元电路使用由三极管构成的触发器组成,利用触发器的状态存储0、1信息。如图4-9是一个MOS型六管静态RAM单元电路的构成图。如图4-10是一个静态RAM芯片的组成结构图。(2)动态RAM的组成及工作原理动态RAM的位单元电路与静态RAM相比有很大的不同,静态RAM的位单元电路是依靠由三极管构成的触发器的状态来存储0、1信息的,而动态RAM的位单元电路则是依靠三极管上的极电容的电荷的有无来存储0、1信息的。如图4-11是一个单管动态RAM位单元电路。(3)ROM的组成及工作原理图4-12给出了一个掩膜式ROM组成示意图。知识拓展:新型动态存储器知识拓展:新型动态存储器SDRAM和和DDRSDRAM全称为同步动态随机存取存储器(SynchronousDynamicRandomAccessMemory),是一种新型动态存储器。传统的DRAM是异步工作的,CPU向存储器发送地址和控制信号后,需等待存储器进行内部操作(地址译码、读出信号放大、输出缓冲等),从而影响了系统性能。而SDRAM与CPU之间是同步工作的,在进行存储器内部操作的同时,允许CPU做其他的事情,而无需空等待。DDR全称为双倍速率同步动态随机存取存储器,即DDRSDRAM(DoubleDateRateSynchronousDynamicRandomAccessMemory),是一种在SDRAM基础上发展起来的具有双数据速率的新型动态存储器,由三星公司于1996年提出,并得到了一些主要芯片组厂商的支持。SDRAM是在每一个时钟周期的时钟的上升沿进行一次数据传输;而DDR则是在每一个时钟周期内传输两次数据,即分别在时钟的上升沿和下降沿各传输一次数据,因此称为双倍速率同步动态随机存取存储器。DDR2、DDR3、DDR4在同等核心频率下,DDR2的实际工作频率是DDR的两倍。这得益于DDR2内存拥有两倍于标准DDR内存的4BIT预读取能力。换句话说,虽然DDR2和DDR一样,都采用 DDR2内存的频率内存的频率了在时钟的上升延和下降延同时进行数据传输的基本方式,但DDR2拥有两倍于DDR的预读取系统命令数据的能力。DDR3DDR43.主存储器的设计主存储器的设计半导体存储器是构成现代计算机主存储器的主要存储介质,在进行计算机主存储器设计时,主要要考虑以下几方面的因素:存储器芯片的选择,半导体存储器芯片种类繁多,在选择存储器芯片构成机器主存储器时,应根据需要合理选择。CPU与存储器的速度匹配,机器的性能是由多方面的因素决定的,其中CPU访存速度是影响机器性能的关键因素之一,高性能CPU需要高速的存储器相匹配。存储器与CPU的信号连接,主要包括数据信号线、地址信号线和控制信号线的连接等。(1)半导体存储器芯片半导体存储器芯片的性能主要体现在两个方面:一是芯片的容量,二是芯片的存取速度。存储器芯片的容量可以表征为以下形式:容量字数位数其中,字数表示存储器芯片所具有的字单元数,而位数则表示每一个字单元所具有的位单元数。半导体存储器芯片是通过引出脚与外部连接的。引出脚主要包括四类:数据引脚、地址引脚、控制引脚和电源及接地引脚。图4-13(a)、(b)、(c)分别给出的是三种芯片256K位的SRAM、16M位的DRAM和8M位的EPROM的引脚图。引脚功能说明。在有些场合,为突出芯片的引脚功能,也常常给出它们的引脚符号图。静态RAM芯片2114和动态RAM芯片2116的引脚符号图如图4-14所示。(2)半导体存储器读写周期存储器芯片在出厂时,其存取速度就已经确定,厂家在对芯片的有关技术说明中会给出其存取速度的相关技术参数,这一技术参数主要是通过存储器的读写周期(又称为存储周期)来反映的,而读写周期是通过波形图(又称时序图)来体现的。2114的读周期波形图2114的写周期波形图在进行机器硬件系统设计时,一方面要保证逻辑电路设计的正确性,另一方面还要保证时序设计的正确性,两者缺一不可。(3)半导体存储器与CPU的连接在构成计算机主存储器时,还需要根据机器容量的要求和所选用的半导体存储器芯片容量的情况进行综合设计。当单片存储器芯片的容量不能直接满足主存储器容量的要求时,需要选择多片进行容量扩展连接,以构成主存储器模块。下面我们分三种情况介绍存储器的容量扩展连接。(1)位扩展连接设主存储器的容量为MN位,而选用的存储器芯片的容量为Mn位。具体连接方法是:所有芯片的地址线A对应连接在一起;所有芯片的片选信号线CE对应连接在一起;所有芯片的读写WE线对应连接在一起;每个芯片的数据线各自单独引出。【例4.1】使用一种64M4位的存储器芯片构成64M16的主存储器,并与一个16位的CPU连接。解:64M4位的存储器芯片构成64M16的主存储器需要的芯片数为16/44片,并进行位扩展连接,如下图4-18所示。(2)字扩展连接字扩展连接的情况是:设主存储器的容量为MN位,而选用的存储器芯片的容量为mN位。具体连接方法是:所有芯片的地址线A与CPU的低位对应地址线连接在一起;所有芯片的数据线对应连接在一起;所有芯片的读写WE线对应连接在一起;每个芯片的片选信号线CE各自单独引出,并由CPU剩余的部分高位地址线产生。【例4.2】使用一种16M16位的存储器芯片构成64M16的主存储器,并与一个16位的CPU连接。分析:单个16M16位 芯片内有16M个存储单元,16M=224,需要24位二进制地址码片内寻址;每个单元可以存储16位二进制数,与主存的字长一致。而要构造的主存容量为64M16位,要64M个存储单元,因此要用多个16M16位 芯片进行存储单元数的扩展,即字扩展。()解(1)(2)地址空间的划分 A25A24A23A1A0地址(十六进制)0000.0001.0110.1011.110000000000000000000000000000000000000000000000011111111111111111111111110000000000000000000000001111111111111111111111110000000000000000000000001111111111111111111111110000000000000000000000001111111111111111111111110000000H0000001H0FFFFFFH1000000H1FFFFFFH2000000H2FFFFFFH3000000H3FFFFFFH第第1组地组地址址第第2组地组地址址第第3组地组地址址第第4组地组地址址地址译码译码(Decode)将某个特定的编码输入翻译为有效输出的过程存储器译码电路可编程逻辑器件PLD译码器门电路组合译码电路译码电路1 0 10 1 2 3 4 5 6 7(3)与CPU的连接(3)字位扩展连接字位扩展连接的情况是:设主存储器的容量为MN位,而选用的存储器芯片的容量为mn位,其中,M、N分别是m、n的整数倍。在这种情况下,单片存储器芯片的字单元数和字单元的位数均不能满足主存储器的要求。这时,需要进行一种字位扩展连接,使用(M/m)(N/n)个芯片连接起来,连接方法就是将以上两种情况结合起来考虑。4.3交叉存储技术1.交叉存储技术的基本思想2.交叉存储器模块的组织3.交叉存储器的组成1.交叉存储技术的基本思想先来看一个生活中的例子。假设某一产品需要两道生产工序完成,分别是工序1和工序2,且两道工序采用流水作业的方式进行。现在安排两个工人A、B分别做工序1和工序2,其中工人A完成工序1的时间是t,而工人B完成工序2的时间是3t。那么,在这种情况下,流水线将每隔3t的时间生产出一个该产品。现在我们改变一下流水模式,增加2个工作速度与B相同的工人C、D都来做工序2,这样就是工人A一人做工序1,而工人B、C、D三人同时做工序2。在4个工人都满负荷工作的情况下,流水线将每隔t的时间生产出一个该产品。我们可以吸取这一思想,应用到计算机CPU与存储系统的配置上。由于CPU的速度远比存储器的速度快,当采用单CPU和单存储器模块时,CPU每进行一次访存操作,都需要等待存储器的操作,且一个访存周期只能从单个的存储器模块中存取一个字单元。如果我们多配置几个存储器模块,让CPU与多模块的存储器之间采用以上后一种流水模式进行工作,那么,就可以实现一个访存周期能从多个的存储器模块中存取多个字单元。2.交叉存储器模块的组织为了实现CPU在一个访存周期能从多个的存储器模块中存取多个字单元的目标,我们还需要对存储器模块的组织进行合理的配置。假设存储器共有32个字单元,分为4个模块,每个模块有8个字单元。我们考察以下两种编址方式:一是每个模块仍然像传统存储器一样进行线性编址,即模块1的单元地址是07,模块2的单元地址是815,模块3的单元地址是1623,模块4的单元地址是2431;二是采用交叉编址的方式,即模块间的单元地址是连续的,而模块内的单元地址是不连续的。(a)线性方式(b)交叉方式在采用图(a)的线性方式编址的情况下,当CPU要同时访问多个连续的存储单元时,这些单元分布在同一模块的概率是最大的。例如CPU在某一访存周期需向存储器读4个字单元的数据,这4个字单元地址是连续的,那么它们只有可能分布在一个或两个存储模块中。由于对于每个存储模块来说,一个访存周期只能读写一个字单元,因此,采用这种线性编址方式并不能使CPU在一个访存周期存取多个字单元。而采用图(b)的交叉编址方式则不同,当CPU要同时访问多个连续的存储单元时,由于交叉编址的特殊性,使得这些单元会分布在不同模块。例如CPU在某一访存周期需向存储器读4个字单元的数据,这4个字单元地址是连续的,那么它们会分别分布在四个存储模块中。由于每个存储模块均能独立进行读写操作,这就使得CPU在一个访存周期能够同时存取多个字单元。在交叉编址情况下:由于数据总线一次只能容纳一个字单元数据,因此,这多个存储模块必须采取在时间上交错开来的方式与CPU通过数据总线交换数据。理想情况下,若CPU的总线操作速度是存储器的读写速度的n倍,则应配置不少于n个存储模块与CPU相匹配。定量分析:假设每个模块的字单元长度等于数据总线宽度,存储器模块的存储周期为T,CPU的总线传送周期为(即CPU从总线读取一个字单元或向总线写一个字单元的时间为),存储器的交叉模块数为m,为了实现流水线方式存取,应当满足:TmCPU与单模块存储器和采用交叉编址方式的多模块存储器之间的数据存取示意图。(a)单模块存储器(b)多模块交叉存储器从图中可以看出,CPU向单模块存储器存取n个数据所需的总时间为nT,采用的是完全顺序存取方式;而CPU向多模块交叉存储器存取n个数据所需的总时间为T+(n-1),采用的是在时间上交错开来的并行存取方式。3.交叉存储器的组成在多模块交叉存储系统中,为保证每个模块均能够进行独立的读写操作,需为每个存储模块配置独立的读写电路,并由一个存储器控制部件进行顺序控制。如图4-25是一个四模块交叉存储器的组成结构图。4.4高速缓冲存储器Cache实现的基本原理主存与Cache的地址映射替换算法Cache的写策略Cache性能分析Cache举例:Pentium4的Cache组织1.Cache实现的基本原理程序的局部性原理程序的局部性原理:对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,CPU对一个程序指令的访问往往集中在一个较小的存储器逻辑地址空间范围内,也就是说,CPU取指令和取数据的操作具有空间上局部分布的倾向,这种现象就称为程序访问的局部性。Cache的基本思想基于程序的局部性原理,在CPU与主存之间设置一个小容量的高速缓冲存储器Cache,当一个程序调入主存运行时,将该程序当前要执行的指令及其后将执行的一部分指令同时调入Cache中,CPU每次首先从Cache中取指令执行,根据程序的局部性原理,CPU大部分情况下可以在Cache中取到指令(称为命中),只要命中率足够的高,就可以使得CPU访存的速度接近于访Cache的速度。Cache的工作原理Cache工作原理图CPU的访存地址(主存地址)首先通过一个主存-Cache的地址映射机构转换成一个访Cache的地址。如果CPU要访问的这一单元内容已经在Cache中,则本次访Cache命中,于是从Cache中将该单元的内容读出,并送CPU;若CPU要访问的这一单元不在Cache中,则本次访Cache不命中,于是使用CPU的访存地址直接访问主存,从主存中将该单元的内容读出,并送CPU,从而完成了一次CPU的访存操作。在Cache存储器组织中,Cache和主存都按块进行组织,每一个块由若干个字单元组成,且主存的块和Cache的块大小相同。在不命中的情况下,CPU访存结束后,还需将本次所访问的单元所在主存的块的全部单元内容调入Cache中。若当前Cache已满,则需将Cache中的一个旧块替换出来。2.主存与Cache的地址映射CPU每次访存时,给出的是一个主存地址。但在Cache-主存层次中,CPU首先访问的是Cache,并不是主存。为此,需要一种机制将CPU的访主存地址转换成访Cache地址。主存地址与Cache地址之间的转换是与主存块与Cache块之间的映射关系紧密联系的。主要有三种地址映射方式,分别为全相联映射、直接相联映射和组相联映射。全相联映射全相联映射是指主存中任一块都可以映射到Cache中任一块的方式。例如,设Cache共有2C块,主存共有2M块,当主存的某一块j需调进Cache中时,它可以存入Cache的块0、块1、块i、或块2C-1的任意一块上。地址转换过程:全相联映射方式的优点是Cache的空间利用率高,但缺点是相联存储器庞大,比较电路复杂,因此只适合于小容量的Cache之用。直接相联映射直接相联映射方式是指主存的某块j只能映射到满足如下特定关系的Cache块i中:ijmod2C地址转换过程:直接相联映射方式的优点是比较电路最简单,但缺点是Cache块冲突率较高,从而降低了Cache的利用率。组相联映射将Cache分成2u组,每组包含2v块。主存的块与Cache的组之间采用直接相联映射,而与组内的各块则采用全相联映射。也就是说,主存的某块只能映射到Cache的特定组中的任意一块。主存的某块j与Cache的组k之间满足如下关系:kjmod2u地址转换过程:组相联映射法将全相联映射和直接相联映射两种方法的优点很好的结合。其实,全相联映射和直接相联映射可以看成是组相联映射的两个极端情况。若u0,vC,则Cache只包含1组,此即全相联映射方式;若uC,v0,则组内的块数等于1,此即直接相联映射。在实际应用中,相联映射方式每组的块数一般取值较小,典型值为2、4、8、16等,分别称为两路组相联、四路组相联等。这样一方面使得比较器的规模较小,实现较容易;另一方面,Cache每组增加的可映射块数可有效减少冲突,提高Cache访问的命中率。3.替换算法当CPU访Cache发生不命中的情况时,就直接访主存,并同时将所访问单元所在的一个主存块一并调入Cache中。如果此时该主存块在Cache中的所有特定位置已被其它块所占用,则需进行替换,即从特定位置中选择一个老的主存块从Cache中调出,将新的主存块调入Cache。随机法随机法:每次随机选择一个主存块替换出去。这种算法不考虑各块的使用情况,在可替换特定块数少的情况下容易造成将正需使用的块替换出去,从而使Cache的命中率会有所降低。先进先出(先进先出(FIFO)法)法每次将最先调入Cache的主存块替换出去。该算法记录每个块的调入时间,当要发生替换时,从所有可能被替换的主存块中选择一个最先调入Cache的块替换出去。该算法实现较容易,系统开销较小,但并不十分符合主存块在Cache中的使用规律,有可能造成正需使用的块被调出,从而影响Cache的命中率。最不经常使用(最不经常使用(LFU)算法)算法每次将Cache中访问最少的块替换出去。这种算法为每个块设置一个计算器,从0开始计数,每被命中一次计数器增1。当需要替换时,从所有可能被替换的主存块中选择一个计数器值最小的块(最不经常使用)替换出去。这种算法将计数周期限定在对这些特定块两次替换之间的间隔时间内,因而不能严格反映近期块使用的情况。近期最少使用(近期最少使用(LRU)算法)算法每次将近期最少使用的主存块替换出去。该算法在实现时,为每个调入Cache的主存块设置一个计数器,一个块每命中一次,其计数器清零,同时将其它块的计数器增1。当需要替换时,从所有可能被替换的主存块中选择一个计数器值最大的块(该块近期最少使用)替换出去。这种算法符合Cache工作原理,可使Cache具有较高的命中率。4.Cache的写策略的写策略Cache中的内容可以看成是主存的一个子集,即每次总是将主存的部分块的内容调入Cache中。CPU对Cache的读操作是不会影响Cache的内容的,也就不会影响Cache与主存内容的一致性。但写就不一样了,当CPU对Cache的某块进行了一次写操作,但对主存该块的内容却没有同时进行写,则会造成主存和Cache内容的不一致。因此,对Cache的写需要采取某种策略或方法。全写法(write-through)又称写直达法,CPU每次在写Cache命中时,在写Cache的同时,也对相应的主存块进行写入;当写Cache未命中时,则直接写主存。全写法是写Cache和写主存同步进行,其优点是Cache和主存的内容能保持高度的一致性,缺点是Cache对CPU的写操作起不到高速缓存的作用,失去了Cache的功效。统计表明,一般程序中的写操作占到了存储器操作的15左右,对于一些特殊应用的程序,其写操作比例会更高。在这种情况下,采用全写法实现写操作会影响Cache的效率。写回法(write-back)CPU每次在写Cache命中时,只写Cache,暂不写主存,只有当某被写命中的块从Cache中替换出去时才写回主存。这种方法使Cache在CPU的写操作中也同样能发挥高速缓存的作用,但却存在主存与Cache内容不一致的隐患。写回法在实现时,为每个Cache块设置一个标志位,以反映Cache的某块是否被修改过。当某块被替换出去时,根据标志位决定在替换的同时是否进行回写操作。未被修改过的块在替换出去时,无需进行回写,只有被修改过的块在替换出去时,才需进行主存的回写。现在越来越多的机器都采用了二级Cache,在处理写操作时需要考虑的不仅仅是写回主存,还需考虑写回二级Cache。写一次法(writeonetime)是采用了二级Cache的机器中常用的写操作策略。其具体方法是:写命中时的处理方法和写回法基本相同,只是第一次写命中时要同时写入主存和其它二级Cache等。奔腾CPU的片内数据Cache就采用了这一方法。5.Cache性能分析性能分析CPU访存时间的分析设NC表示某一段时间Cache完成存取的总次数,Nm表示这一段时间主存完成存取的总次数,h定义为命中率,则有:再假设TC为Cache存储器的读写周期时间,Tm为主存储器的读写周期时间,则Cache-主存系统的平均访问时间TA为:TAhTC+(1-h)Tm【例4.3】块的大小块的容量大小与命中率的关系是比较复杂的,它取决于不同程序的局部性特征,对所有程序而言,很难确定一个最优的块的大小。通常认为块容量大小在864B之间是比较合适的。Cache的数量随着集成度的提高,现代的CPU在芯片中集成了一个小容量的Cache,与CPU外部的Cache一起构成二级Cache系统,其中,CPU内部的Cache为第1级(L1),CPU外部的Cache为第2级(L2)。一般来讲,L1级的Cache比L2级的Cache容量更小,速度更快。“L1级Cache-L2级Cache-主存”这种层次从工作原理上讲与前述的Cache工作原理是完全相同的,即CPU首先访L1级Cache,若不命中,再访问L2级Cache和主存。近些年来,对Cache系统设计的另一种趋势是采用分立Cache技术,也就是将指令和数据分开,分别存放在指令Cache和数据Cache中。这种分立Cache技术有利于CPU采用流水线方式执行指令。6.Cache举例:举例:Pentium4的的Cache组织组织4.5虚拟存储器虚拟存储器实现的基本原理虚拟存储器的分页式管理虚拟存储器的分段式管理虚拟存储器的段页式管理虚拟存储器的替换策略虚拟存储器举例:Pentium的虚拟存储器组织1.虚拟存储器实现的基本原理虚拟存储器是一种由价格较高、速度较快、容量较小的主存储器和一个价格低廉、速度较慢、容量巨大的辅助存储器组成的存储层次,在系统软件和辅助硬件的管理下就像一个单一的、可直接访问的大容量存储器,以透明方式为用户程序提供一个远大于主存容量的存储空间。虚拟存储器的“主存-辅存”层次的实现原理与前面讲述的“Cache-主存”层次的实现原理很相似。这主要体现在两个方面:一是组织结构相似,在这两种层次中,面向CPU的存储器是由相对来讲小容量高速存储器件构成,而后援存储器则是由相对来讲大容量低速存储器件构成;二是工作原理相似,用户程序事先存放在大容量后援存储器中,当执行程序时,CPU首先访问的是小容量存储器,若命中,则完成本次访问,若不命中,则再到大容量存储器中访问,并同时按一定的规则将大容量存储器中的一部分内容替换小容量存储器中的一部分内容。当然,还有非常重要的一点就是实现虚拟存储器同样基于的是程序的局部性原理,若没有程序访问的局部性,CPU访小容量存储器频频失效,则会大大降低CPU访问存储系统的效率。在实现虚拟存储器管理的机器中,能提供给用户程序运行的是一个比主存大的多的虚拟空间,称为虚存;而真正为用户程序提供实际运行空间的是主存,又称为实存。程序中出现的指令或数据地址是逻辑地址,又称为虚地址;而主存地址是真正的物理地址,又称为实地址。虚拟存储器的工作原理图2.虚拟存储器的分页式管理虚拟存储器的分页式管理在采用分页式管理的机器中,主存和虚存都划分成相同的固定大小的块页,主存的页称为实页,虚存的页称为虚页。实地址和虚地址都由两部分组成,分别为实页号/虚页号和页内偏移地址虚地址到实地址的变换是通过存放在主存中的页表来实现的。页表由一个个页表项组成,每个虚页在页表中占一个页表项,并按虚页号的顺序排列。页表项的内容主要包括该虚页所在主存的实页号和一些控制信息,如:F:装入位。F=1表示该虚页已装入到主存中;F=0表示该虚页还没装入主存。C:修改位。用于表示该页装入主存后是否被修改过。RW:访问方式字段。用于表示该页可以允许以“读-写-执行”方式中的哪些方式访问。页表项的内容是在每个虚页装入主存时填写的。分页式虚拟存储器地址变换在页式虚拟存储器机器中,当CPU访主存“不命中”时,会产生一个“页面失效”故障。在页面失效时,要求把该页由辅存调入主存,因此必须给出该页在辅存的物理地址。辅存一般是按信息块(对磁盘而言为扇区)编址,且一个块的大小通常等于一个页面的大小。对磁盘存储器来说,其物理地址格式如下:将虚地址变换成磁盘的物理地址时,即是把虚页号变换成某个磁盘机上的某个扇区号。为此,需有一个虚页号与辅存物理地址的映象表,该表称为外页表(相对应的前述页表称为内页表)外页表的结构(按虚页号的顺序排列,M为装入位)通常外页表是存在辅存中。当某个程序初始运行时,就把外页表的内容抄录到已建立的内页表的实页号字段中。在进行虚地址到实地址变换时,若出现页面失效,从内页表的实页号字段中取出的正是辅存物理地址。而当该页调入主存后,其实页号字段被真正填入所在主存的实际页号。在页式虚拟存贮器中,每次访存都要增加一个查页表的过程,而页表是存放在主存中的,这就相当于每次多增加了一次访主存的操作。如果这个查页表的操作时间不能缩短,虚拟存贮器是没有实用价值的。因此,如何加快地址变换速度,就成为提高虚拟存贮器速度的另一个关键问题,一种较好的解决办法是采用所谓“快表”的方法。由于程序局部性的特点,对页表内各页表项的使用不是随机的,而是簇聚的,即在某一段时间内,实际上只用到页表中很少的几个页表项。因此,我们可以单独采用快速硬件,实现只含有部分页表项的地址映象变换表,称这种用快速硬件实现的部分页表为转换旁视缓冲器TLB(TranslatimLookasideBuffer),又称快表,而相对地把原来的页表称为慢表。快表比慢表小得多,其内容只是慢表的一个小的副本。使用快慢表结合进行地址变换的过程3.虚拟存储器的分段式管理虚拟存储器的分段式管理分页式管理优点:控制简单,实现起来较为容易;分页式管理缺点:当虚存空间很大时,页表也将非常庞大虚拟存储器按页分配机制并不符合程序存储空间分配的特性虚拟存储器的分段式管理就是按照程序的自然结构进行主存空间分配的,每次总是将一个程序模块完整地调入主存中。在这里,一个程序模块又称为一个段,为其分配的主存空间称为一个块。由于不同的程序模块长度是不同的,因此块长也是可变的。为实现对长度不同的段进行空间分配,操作系统必须对主存空间进行有效的管理,例如,通过建立一些表格来了解主存空间的占用和可用情况。主存占用空间表它的每一项都指出所分配给的一个段名、块所占用区域的基地址和块的长度。主存可用空间表它的每一项指出一个未被占用区的地址和长度当一个程序段需要从辅存调入到主存时,系统首先在主存可用空间表中查找是否有能满足该段空间分配的主存块。若有,则为其分配,并在主存占用空间表中增加一项,填上所调入段的名字、该主存块的基址和块长,而将主存可用空间表中已分配的该块删除。当一个程序段不再需要留在主存时,则要将该段占用的主存块释放,同时在主存可用空间表中增加一项可用块。对于长度不一致的块,有两种广泛使用的分配算法,即首次匹配和最佳匹配法。在分段式虚拟存储器中,虚地址也分为两个部分:段号和段内地址。为实现虚地址到实地址的变换,系统为此专门建立了一个段表。段表由一个个段表项组成,每一个段表项对应调入主存的一个段,段表项的主要内容包括段在主存的起始地址、段长、装入位F和访问控制位RW。分段式虚拟存储器的地址变换4.虚拟存储器的段页式管理虚拟存储器的段页式管理上述的分页式管理与分段式管理结合起来就形成了段页式虚拟存储器系统,它可以兼得二者的优点,即一方面具有分页式简单、不会产生碎片等的优点,另一方面又具有按程序自然段进行空间分配所带来的存储管理和存储保护等方面的优点。在段页式系统中,程序首先按模块分段,然后再对每个段划分固定大小的页。这就使得程序段在主存的调进调出可以按页进行空间分配,同时又可以按段进行管理和保护。为实现段页式管理,系统为每道调入主存运行的程序单独建立一个段表和一组页表。段表的每一项对应一个段,其内容包括该段对应的页表的起始地址及相关控制信息。段表在主存中的起始地址由一个段表基地址寄存器指出。页表用于指明该段各页在主存的分配情况,其内容包括在主存的页号、装入位F和修改位C等。在段页式虚拟存储器中,用户程序的地址由三部分组成:段号、页号和页内偏移。地址变换过程【例4.4】5.虚拟存储器的替换策略虚拟存储器的替换策略虚拟存储器中的替换策略一般采用LRU算法、LFU算法FIFO算法,或将两种算法结合起来使用。【例4.5】
展开阅读全文