【连载】计算机组成原理 --- 第三章存储系统

本章主要内容:html

(一)存储器的分类程序员

(二)存储器的层次结构算法

(三)半导体随机存取存储器编程

           SRAMDRAM存储器数组

           只读存储器,Flash存储器缓存

(四)主存储器与CPU的链接dom

(五)双口RAM和多模块存储器性能

(六)高速缓冲存储器(Cache编码

           Cache的基本工做原理spa

           Cache和主存之间的映射方式

           Cache中主存块的替换算法

           Cache中写策略

(七)虚拟存储器

           虚拟存储器的基本概念,页式虚拟存储器

           段式虚拟存储器,段页式虚拟存储器,TLB(快表)

3.1存储器的层次结构

3.1.1存储器的分类

根据存储材料的性能及使用方法的不一样,存储器能够有各类不一样的分类方法。

1.按存储介质分

存储介质必须知足两个基本要求:

(1)必须有两个明显区别的状态,分别表示二进制代码0和1;

(2)两个物理状态的改变速度要快,它直接影响存储器的读写速度。

目前使用的存储介质主要是半导体器件、磁存储介质和光存储介质。用半导体器件组成的存储器称为半导体存储器,如计算机主存;用磁性材料作成的存储器称为磁表面存储器,它经过磁头和磁记录介质的相对运动完成读出和写入,如磁盘、磁带;利用激光技术在光存储介质上写入和读出信息的存储器称为光盘存储器,如只读型光盘(CD-ROM、DVD-ROM)、可读写光盘(CD-RW,DVD+RW)、一次性光盘等。

2.按存取方式分

若是任何存储单元的内容都能被随机存取且存取时间和存储单元的物理位置无关,则这种存储器称为随机存储器,如半导体存储器;若是存储单元的内容只能按某种顺序来存取,存取时间与存储单元的物理位置有关,取决于访问存储单元的地址顺序,则这类存储器称为顺序存储器,如磁带存储器。与顺序存储器相比,随机存储器的存取速度快得多,但每一位的价格也要高不少。

3.按存储器的读写功能分

有些半导体存储器中存储的内容是固定不变的,只能读出而不能写入,一般用来存放固定不变的程序、汉字字型库等,在制造芯片时由厂家预先写入,这类半导体存储器称为只读存储器(ROM);既能读出内容又能写入新内容的半导体存储器称为随机读写存储器(RAM),用来存放正在执行的程序和正在访问的数据。

4.按信息的可保存性分

断电后信息就消失的存储器称为非永久记忆存储器,如半导体存储器RAM;断电后仍能保存信息的存储器称为永久记忆存储器,如磁介质存储器、光盘存储器。

5.按在计算机系统中的做用分

根据在计算机系统中所起的做用,存储器可分为主存储器、辅助存储器、高速缓冲存储器、控制存储器等。

3.1.2存储器的性能指标 速度 价格 容量

其中速度包括存取时间,存取时间,主存带宽

3.2 存储器的层次化结构

图3-1体现的是辅存、主存和缓存的三级存储系统结构,通常来讲,“Cache-主存”层次用来弥补主存速度的不足;“主存-辅存”层次用来弥补主存容量的不足

3.3 半导体随机存储器

3.3.1SRAM DRAM存储器

       静态随机存取存储器Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就能够恒常保持[1]。(其利用双稳态触发器)相对之下,动态随机存取存储器(DRAM)里面所储存的数据就须要周期性地更新。然而,当电力供应中止时,SRAM储存的数据仍是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不一样的。

       动态随机存取存储器(Dynamic Random Access Memory,DRAM)是一种半导体内存,主要的做用原理是利用电容内存储电荷的多寡来表明一个二进制比特(bit)是1仍是0(电容上电荷的有无)。因为在现实中电容会有漏电的现象,致使电位差不足而使记忆消失,所以除非电容常常周期性地充电,不然没法确保记忆长存。因为这种须要定时刷新的特性,所以被称为“动态”内存。相对来讲,静态内存(SRAM)只要存入数据后,纵使不刷新也不会丢失记忆。

       SRAM的存取速度快,但集成度低,功耗较大,通常用来组成高速缓冲存储器。

       DRAM具备容易集成,位价低,容量大和功耗低等优势。可是存取速度比SRAM慢,通常用来组成大容量的主存系统。

3.4 主存与CPU的链接

       建议:http://media.njude.com.cn/vclass/Courses/15201A/pdf/ch4_4.pdf

http://www.kaoyan.com/kaoyan/19/330174/

主存储器经过数据总线,地址总线,、和控制总线和CPU链接。

数据总线的位数*工做频率的 = 数据传输率

地址总线的位数决定了可寻址的最大内存空间。

控制总线(读/写)指出总线周期的类型和本次输入、输出操做完成的时刻。

 

 存储容量:指一个存储器中能够容纳的存储单元总数。存储容量越大,能存储的信息就越多。存储容量经常使用字数或字节数(B)来表示,如64K字,512KB,64MB。

    设计存储器时,需先明确所要求的总容量这一技术指标,即字数×位数。字数:便可编址单元数,常简称单元数。

    当计算机字长超过8位时,为了提升存取速度,有的主存既容许按字节编址,也容许按字编址

    而后,须要肯定可供选用的存储器芯片,即什么类型、型号的存储芯片,每片的容量是多少。每片容量一般低于总容量,就须要用若干块芯片组成。相应地,可能存在位数与字数的扩展问题。

 

 

3.4.2主存容量的扩展

      

1.位扩展(数据空间扩展)

   例1:假定使用8K×1位的RAM存储器芯片,那么如何组成8K×8位的存储器?

    解:可采用图3-5所示的位扩展法。也就是用8片1Mb的存储芯片拼接而成。

存储器的字数与存储器芯片字数一致,因此不需加大字长。图中,每一片RAM是8K×1,故其地址线为13条(A0-A12),可知足整个存储体容量的要求。每一片对应于数据的1位(只有1条数据线),故只需将它们分别接到数据总线上的相应位便可。在这种方式中,对片子没有选片要求,就是说片子按已被选中来考虑。若是片子有选片输入端(CS#),可将它们直接接地。在这种链接时,每一条地址总线接有8个负载,每一条数据线接有一个负载。

 

   例2:用2114(1K×4位的SRAM)构成1K×16位的存储器,试画出该存储器的组成逻辑图。

    解:(1)分析2114及存储器

         2114:地址线为10位,数据线为4位(1K×4)

         存储器:地址线为10位,数据线为16位(1K×16)

         因此,要进行位扩展。

       (2)所需2114芯片数目:

           

         因此,用4片2114

       (3)2114组成逻辑图

      四片2114地址线并联后与地址总线相连(即四片2114具备相同的1K地址);四片2114数据线拼接为16位后与数据总线相连。

 

2.字扩展(地址空间扩展)

     若是每片的字数不够,需用若干芯片组成总容量较大的存储器,称为字数扩展。为此将高地址译码产生的若干不一样片选信号,按各芯片在存储空间分配中所占的编址范围,分送各芯片。低位地址线直接送往各芯片,以选择片内的某个单元。而各芯片的数据线,则按位并联于数据总线。

   例1:图3-6示出用16K×8位的芯片采用字扩展法组成64K×8位的存储器链接图。

    解:图中4个芯片的数据端与数据总线D0-D7相连,地址总线低位地址A0-A13与各芯片的14位地址端相连,而两位高位地址A14,A15经译码器和4个片选端相连。

例2:用2114(1K×4位的SRAM)构成4K×4位的存储器,试画出该存储器的组成逻辑图。

     解:(1)分析2114及存储器

          2114:地址线为10位,数据线为4位(1K×4)

          存储器:地址线为12位,数据线为4位(4K×4)

          因此,要进行字扩展。

        (2)所需2114芯片数目:

            

         因此,用4片2114   

00

2114(1K×4)

01

2114(1K×4)

10

2114(1K×4)

11

2114(1K×4)

        (3)2114组成逻辑图(略)

          存储器所需的12根地址总线分两部分:

          低10根地址总线与每片2114的A0~A9直接相连,称片内地址线;高2根地址总线经过2/4译码器产生4个不一样的片选信号,接各芯片的CS#端,称片选地址线。

          4根数据总线直接与每片2114的I/O1~I/O3直接相连。

3.字位同时扩展

     在组织实际的主存储器时,可能既有字扩展又有位扩展。一个存储器的容量假定为M×N位,若使用l× k位的芯片(l<M, k<N),须要在字向和位向同时进行扩展。此时共须要(M/l)×(N/k)个存储器芯片。

   

    例1:设CPU有16根地址线,8根数据线,并用/MREQ做访存控制信号,用/WR做读写控制信号(高为读,低为写)。现有下列芯片:1K*4位RAM,4K*8位RAM,8K*8位RAM,2K*8位ROM,4K*8位ROM,8K*8位ROM及74LS138译码器和各类门电路,要求:

    ① 主存空间分配: 6000H~67FFH为系统程序区; 6800H~6BFFH为用户程序区。

    ②合理选用上述存储芯片,说明各选几片?

    ③详细画出存储芯片的片选逻辑图。

解题过程板书

 

    例2:设 CPU 有 20 根地址线,8 根数据线。并用 IO/M 做访存控制信号。RD 为读命令,WR 为写命令。现有2764 EPROM ( 8K × 8位 ), 外特性以下:

用 138 译码器及其余门电路(门电路自定)画出 CPU和 2764 的链接图。要求地址为 F0000H~FFFFFH , 并

写出每片 2764 的地址范围。

解题过程板书

 

    例3:设CPU的地址总线16根(A15~A0,A0为低位),双向数据总线8根(D7~D0),控制总线中与主存有关的信号有MREQ#(容许访存,低电平有效),R/W#(高电平为读命令,低电平为写命令)。

主存地址空间分配以下:0-8191(13个1)为系统程序区,由只读存储器组成;8192-32767(15个1)为用户程序区;最后(最大地址)2K地址空间为系统程序工做区。上述地址为十进制,按字节编址。现有以下存储器芯片:

EPROM:8K×8位

SRAM:16K×1位,2K×8位,4K×8位,8K×8位

请从上述芯片中选择适当的芯片设计该计算机的主存储器,画出主存储器逻辑框图,注意画出选片逻辑(可选用门电路及3-8译码器74LS138)与CPU的链接,说明选择哪些存储器芯片?选多少片?

解:解题过程板书

主存地址空间分布以下图所示。

0

8191=213-1

8K(EPROM)

1片8K×8位

8192=213

32767=215-1

32K-8K=24K(SRAM)

3片8K×8位

 

30K(空)

 

63488=FFFF-7FF=F800H

65535=216-1

2K(SRAM)

1片2K×8位

图略。

 

3.5 高速缓冲存储器

参考:https://baike.baidu.com/item/%E9%AB%98%E9%80%9F%E7%BC%93%E5%86%B2%E5%AD%98%E5%82%A8%E5%99%A8

http://www.cnblogs.com/freebye/archive/2005/04/08/133699.html

 

高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一块儿构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。


  地址映象规则:

1.全相连映像方式

主存的任意一块能够映象到Cache中的任意一块 

(1) 主存与缓存分红相同大小的数据块。 

(2) 主存的某一数据块能够装入缓存的任意一块空间中。 

  全相联方式的对应关系如图2.3.2所示。若是Cache的块数为Cb,主存的块数为Mb,则映象关系共有Cb×Mb种。

  图2.3.3示出了目录表的格式及地址变换规则。 目录表存放在相关(联)存储器中,其中包括三部分:数据块在主存的块地址、存入缓存后的块地址、及有效位(也称装入位)。因为是全相联方式,所以,目录表的容量应当与缓存的块数相同。 

  举例:某机主存容量为1M,Cache的容量为32KB, 每块的大小为16个字(或字节)。 划出主、缓存的地址格式、 目录表格式及其容量。 
  
  容量:与缓冲块数量相同即211=2048(或32K/16=2048)。  优势:命中率比较高,Cache存储空间利用率高。 
  缺点:访问相关存储器时,每次都要与所有内容比较,速度低,成本高,于是应用少。 

  2.直接相联方式 

  地址映象规则: 主存储器中一块只能映象到Cache的一个特定的块中。 
  (1) 主存与缓存分红相同大小的数据块。 
  (2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分红区,主存中每一区的块数与缓存的总块数相等。 
  (3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。 
  图2.3.4示出了直接相联映象规则。 可见,主存中各区内相同块号的数据块均可以分别调入缓存中块号相同的地址中,但同时只能有一个区的块存入缓存。因为主、缓存块号相同,所以,目录登记时,只记录调入块的区号便可。

  图2.3.5示出了主、 缓冲地址格式、目录表的格式及地址变换规则。主、缓存块号及块内地址两个字段彻底相同。目录表存放在高速小容量存储器中,其中包括二部分:数据块在主存的区号和有效位。目录表的容量与缓存的块数相同。 

  地址变换过程:用主存地址中的块号B去访问目录存储器, 把读出来的区号与主存地址中的区号E进行比较, 比较结果相等,有效位为1,则Cache命中,能够直接用块号及块内地址组成的缓冲地址到缓存中取数;比较结果不相等,有效位为1, 能够进行替换,若是有效位为0,能够直接调入所需块。 
  优势:地址映象方式简单,数据访问时,只需检查区号是否相等便可,于是能够获得比较快的访问速度,硬件设备简单。 
  缺点:替换操做频繁,命中率比较低。 
  举例:上例中,主存容量为1M, Cache的容量为32KB,每块的大小为16个字(或字节)。划出主、缓存的地址格式、目录表格式及其容量。 
   
  容量:与缓冲块数量相同即211=2048(或32K/16=2048)。 

  3.组相联映象方式 

  组相联的映象规则: 
  (1) 主存和Cache按一样大小划分红块。 
  (2) 主存和Cache按一样大小划分红组。 
  (3) 主存容量是缓存容量的整数倍,将主存空间按缓冲区的大小分红区,主存中每一区的组数与缓存的组数相同。 
  (4) 当主存的数据调入缓存时,主存与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内,但组内各块地址之间则能够任意存放,即从主存的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式。 
  图2.3.6示出了组相联的映象关系, 图中缓存共分Cg个组,每组包含有Gb块; 主存是缓存的Me倍,因此共分有Me个区,每一个区有Cg组,每组有Gb块。那么, 主存地址格式中应包含4个字段:区号、区内组号、组内块号和块内地址。 而缓存中包含3个字段:组号、组内块号、块内地址。主存地址与缓存地址的转换有两部分,组地址是按直接映象方式,按地址进行访问,而块地址是采用全相联方式,按内容访问。组相联的地址转换部件也是采用相关存储器实现,见图2.3.7。 
  相关存储器中每一个单元包含有: 主存地址中的区号E与组内块号B,二者结合在一块儿,其对应的字段是缓存块地址b。相关存储器的容量,应与缓存的块数相同。当进行数据访问时,先根据组号,在目录表中找到该组所包含的各块的目录,而后将被访数据的主存区号与组内块号,与本组内各块的目录同时进行比较。若是比较相等,并且有效位为“1”则命中。

   可将其对应的缓存块地址b送到缓存地址寄存器的块地址字段,与组号及块内地址组装即造成缓存地址。若是比较不相等,说明没命中,所访问的数据块尚没有进入缓存,则进行组内替换;若是有效位为0,则说明缓存的该块还没有利用, 或是原来数据做废,可从新调入新块。 
  优势:块的冲突几率比较低,块的利用率大幅度提升,块失效率明显下降。 
  缺点:实现难度和造价要比直接映象方式高。 

  2.3.3 替换策略 

  根据程序局部性规律可知:程序在运行中,老是频繁地使用那些最近被使用过的指令和数据。这就提供了替换策略的理论依据。综合命中率、实现的难易及速度的快慢各类因素,替换策略可有随机法、先进先出法、最近最少使用法等。 
  1.随机法(RAND法) 
  随机法是随机地肯定替换的存储块。设置一个随机数产生器,依据所产生的随机数,肯定替换块。这种方法简单、易于实现,但命中率比较低。 
  2.先进先出法(FIFO法) 
  先进先出法是选择那个最早调入的那个块进行替换。当最早调入并被屡次命中的块,极可能被优先替换,于是不符合局部性规律。这种方法的命中率比随机法好些,但还不知足要求。先进先出方法易于实现,例如Solar-16/65机Cache采用组相联方式,每组4块,每块都设定一个两位的计数器,当某块被装入或被替换时该块的计数器清为0,而同组的其它各块的计数器均加1,当须要替换时就选择计数值最大的块被替换掉。 
  3.最近最少使用法(LRU法) 
  LRU法是依据各块使用的状况, 老是选择那个最近最少使用的块被替换。这种方法比较好地反映了程序局部性规律。 
  实现LRU策略的方法有多种。 下面简单介绍计数器法、寄存器栈法及硬件逻辑比较对法的设计思路。 
  计数器方法:缓存的每一块都设置一个计数器,计数器的操做规则是: 
  (1) 被调入或者被替换的块, 其计数器清“0”,而其它的计数器则加“1”。 
  (2) 当访问命中时,全部块的计数值与命中块的计数值要进行比较,若是计数值小于命中块的计数值,则该块的计数值加“1”;若是块的计数值大于命中块的计数值,则数值不变。最后将命中块的计数器清为0。 
  (3) 须要替换时,则选择计数值最大的块被替换。 
  例如IBM 370/65机的Cache用组相联方式,每组4块,每一块设置一个2位的计数器,其工做状态如表2.3.1。

表2.3.1 计数器法实现LRU策略

主存块地址

块4

块2

块3

块5

块号

计数器

块号

计数器

块号

计数器

块号

计数器

Cache块0

1

10

1

11

1

11

5

00

Cache块1

3

01

3

10

3

00

3

01

Cache块2

4

00

4

01

4

10

4

11

Cache块3

XX

2

00

2

01

2

10

操做

起始状态

调入

命中

替换

  寄存器栈法:设置一个寄存器栈, 其容量为Cache中替换时参与选择的块数。如在组相联方式中,则是同组内的块数。堆栈由栈顶到栈底依次记录主存数据存入缓存的块号,现以一组内4块为例说明其工做状况,如表2.3.2所示,表中1~4为缓存中的一组的4个块号。

表2.3.2 寄存器栈法实现 

缓存操做

初始状态

调入2

命中块4

替换块1

寄存器0

3

2

4

1

寄存器1

4

3

2

4

寄存器2

1

4

3

2

寄存器3

1

1

3

  (1) 当缓存中尚有空闲时,若是不命中,则可直接调入数据块,并将新访问的缓冲块号压入堆栈,位于栈顶。其余栈内各单元依次由顶向下顺压一个单元,直到空闲单元为止。 
  (2) 当缓存已满,若是数据访问命中,则将访问的缓存块号压入堆栈,其余各单元内容由顶向底逐次下压直到被命中块号的原来位置为止。若是访问不命中,说明须要替换,此时栈底单元中的块号便是最久没有被使用的。因此将新访问块号压入堆栈,栈内各单元内容依次下压直到栈底,天然,栈底所指出的块被替换。 
  比较对法:比较对法是用一组硬件的逻辑电路来记录各块使用的时间与次数。 
  假设Cache的每组中有4块, 替换时,是比较4块中那一块是最久没使用的,4块之间两两相比能够有6种比较关系。若是每两块之间的对比关系用一个RS触发器,则须要6个触发器(T12,T13,T14,T23,T24,T34), 设T12=0表示块1比块2最久没使用,T12=1表示块2比块1最久没有被使用。在每次访问命中或者新调入块时,与该块有关的触发器的状态都要进行修改。 按此原理,由6个触发器组成的一组编码状态能够指出应被替换的块。例如,块1被替换的条件是:T12=0,T13=0,T14=0;块2被替换的条件是:T12=1,T23=0,T24=0等等。 

  2.3.4 Cache的一致性问题 

  Cache的内容是主存内容的一部分,是主存的副本,内容应该与主存一致。因为: 
  (1) CPU写Cache,没有当即写主存; 
  (2) I/O处理机或I/O设备写主存。 
  从而形成Cache与主存内容的不一致,如图2.3.8所示。 

  对Cache进行写操做时引发的不一致的解决方法: 
  1.全写法亦称写直达法(WT法-Write through) 
  方法:在对Cache进行写操做的同时,也对主存该内容进行写入。 
  优势:可靠性较高,操做过程比较简单。 
  缺点:写操做速度得不到改善,与写主存的速度相同。

  2.写回法(WB法-Write back) 
  方法:在CPU执行写操做时,只写入Cache,不写入主存。 
  优势:速度较高。 
  缺点:可靠性较差,控制操做比较复杂。 

  2.3.5 Cache性能分析 

  1.Cache系统的加速比 

  存储系统采用Cache技术的主要目的是提升存储器的访问速度,加速比是其重要的性能参数。Cache存储系统的加速比SP(Speedup)为:

  其中:Tm为主存储器的访问周期,Tc为Cache的访问周期,T则为Cache存储系统的等效访问周期,H为命中率。 
  能够看出,加速比的大小与两个因素有关:命中率H及Cache与主存访问周期的比值Tc/Tm,命中率越高加速比越大。图2.3.9示出了加速比与命中率的关系。

  2.Cache的命中率 

影响Cache命中率的因素不少,如Cache的容量,块的大小,映象方式,替换策略以及程序执行中地址流的分布状况等等。通常地说,Cache容量越大则命中率越高, 当容量达到必定程度后,容量的增长命中率的改善并不大;Cache块容量加大,命中率也明显增长,但增长到必定值以后反而出现命中率降低的现象;直接映象法命中率比较低,全相联方式命中率比较高,在组相联方式中,组数分得越多,则命中率降低。 

 

3.6 虚拟存储器

 

主存和联机工做的辅存共同构成了虚拟存储器。对于应用程序员而言,虚拟存储器是透明的,虚拟存储器具备主存的速度和辅存的容量,提升了存储系统的性能价格比。

3.6.1 虚拟存储器的基本概念

       虚拟存储器将主存或辅存的地址控件统一编址,造成一个庞大的地址控件,在这个空间内,用户能够自由编程,而没必要在意实际的主存容量和程序在贮存中实际的存放位置。

       用户编程容许涉及到的地址称为虚地址或者逻辑地址,虚地址对应的存储控件称为虚拟控件或者程序控件,实际的主存单元称为实地址或者物理地址,实地址对应的是主存地址空间,也称为实地址空间。虚地址比实地址要大不少。

       CPU使用虚地址时,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址对应的存储单元是否已装入内存,若是已在内存,则经过地址变换,CPU可直接访问主存指示的内存单元,若是不在内存,则把包含这个字的一页或者一段调入主存后再有CPU访问,若是主存已满,则采用替换算法置换主存中的一页或者一段。

3.6.2 页式虚拟存储器

1、页式虚存地址映射页式虚拟存储系统中,虚地址空间被分红等长大小的页,称为逻辑页;主存空间也被分红一样大小的页,称为物理页。相应地,虚地址分为两个字段:高字段为逻辑页号,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页号,低字段为页内地址。经过页表能够把虚地址(逻辑地址)转换成物理地址。

在大多数系统中,每一个进程对应一个页表。页表中对应每个虚存页面有一个表项,表项的内容包含该虚存页面所在的主存页面的地址(物理页号),以及指示该逻辑页是否已调入主存的有效位。地址变换时,用逻辑页号做为页表内的偏移地址索引页表(将虚页号看做页表数组下标)并找到相应物理页号,用物理页号做为实存地址的高字段,再与虚地址的页内偏移量拼接,就构成完整的物理地址。现代的中央处理机一般有专门的硬件支持地址变换。

2、转换后援缓冲器因为页表一般在主存中,于是即便逻辑页已经在主存中,也至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。为了不对主存访问次数的增多,能够对页表自己实行二级缓存,把页表中的最活跃的部分存放在高速存储器中,组成快表。这个专用于页表缓存的高速存储部件一般称为转换后援缓冲器(TLB)。保存在主存中的完整页表则称为慢表。

3、内页表是虚地址到主存物理地址的变换表,一般称为内页表。与内页表对应的还有外页表,用于虚地址与辅存地址之间的变换。当主存缺页时,调页操做首先要定位辅存,而外页表的结构与辅存的寻址机制密切相关。例如对磁盘而言,辅存地址包括磁盘机号、磁头号、磁道号和扇区号等。

3.6.3 段式虚拟存储器

 段是按照程序的天然分界划分的长度能够动态改变的区域。一般,程序员把子程序、操做数和常数等不一样类型的数据划分到不一样的段中,而且每一个程序能够有多个相同类型的段。在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换经过段表实现。每一个程序设置一个段表,段表的每个表项对应一个段。每一个表项至少包含下面三个字段:

(1)有效位:指明该段是否已经调入实存。

(2)段起址:指明在该段已经调入实存的状况下,该段在实存中的首地址。

(3)段长:记录该段的实际长度。设置段长字段的目的是为了保证访问某段的地址空间时,段内地址不会超出该段长度致使地址越界而破坏其余段。段表自己也是一个段,能够存在辅存中,但通常驻留在主存中。

段式虚拟存储器有许多优势:

段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。

段长能够根据须要动态改变,容许自由调度,以便有效利用主存空间。

段式虚拟存储器也有一些缺点:

由于段的长度不固定,主存空间分配比较麻烦。

容易在段间留下许多外碎片,形成存储空间利用率下降。

因为段长不必定是2的整数次幂,于是不能简单地像分页方式那样用虚地址和实地址的最低若干二进制位做为段内偏移量,并与段号进行直接拼接,必须用加法操做经过段起址与段内偏移量的求和运算求得物理地址。所以,段式存储管理比页式存储管理方式须要更多的硬件支持。

3.6.4 段页式虚拟存储器

段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。实存被等分红页。每一个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操做,但可按段进行编程、保护和共享。它把程序按逻辑单位分段之后,再把每段分红固定大小的页。程序对主存的调入调出是按页面进行的,但它又能够按段实现共享和保护,兼备页式和段式的优势。缺点是在映象过程当中须要屡次查表。在段页式虚拟存储系统中,每道程序是经过一个段表和一组页表来进行定位的。段表中的每一个表目对应一个段,每一个表目有一个指向该段的页表起始地址及该段的控制保护信息。由页表指明该段各页在主存中的位置以及是否已装入、已修改等状态信息。若是有多个用户在机器上运行,多道程序的每一道须要一个基号,由它指明该道程序的段表起始地址。虚拟地址格式以下: 
  基号 段号 页号 页内地址

3.6.4 变换算法

虚拟存储器地址变换基本上有3种形虚拟存储器工做过程式:全联想变换、直接变换和组联想变换任何逻辑空间页面可以变换到物理空间任何页面位置的方式称为全联想变换。每一个逻辑空间页面只能变换到物理空间一个特定页面的方式称为直接变换。组联想变换是指各组之间是直接变换,而组内各页间则是全联想变换。替换规则用来肯定替换主存中哪一部分,以便腾空部分主存,存放来自辅存要调入的那部份内容。常见的替换算法有4种。

随机算法:用软件或硬件随机数产生器肯定替换的页面。

先进先出:先调入主存的页面先替换。

近期最少使用算法(LRU,LeastRecently Used):替换最长时间不用的页面。

最优算法:替换最长时间之后才使用的页面。这是理想化的算法,只能做为衡量其余各类算法优劣的标准。

虚拟存储器的效率是系统性能评价的重要内容,它与主存容量、页面大小、命中率,程序局部性和替换算法等因素有关。