第3章 多层次的存储器

3.1 复习笔记

一、存储器概述

1存储器

(1)定义

存储器是计算机系统中的记忆设备,用来存放程序和数据。

(2)构成

存储器的存储介质主要采用半导体器件和磁性材料。存储器的最小存储单元为存储位元,用来存储一位二进制代码,若干个存储位元组成一个存储单元,然后再由许多存储单元组成一个存储器。

(3)分类

按存储介质分类

a.半导体存储器;

b.磁表面存储器。

按存取方式分类

a.随机存储器(半导体存储器);

b.顺序存储器(磁带存储器);

c.半顺序存储器(磁盘存储器)。

按存取内容分类

a.只读存储器(ROM);

b.随机读写存储器(RAM)。

按断电后的信息状态分类

a.易失性存储器(磁性介质);

b.非易失性存储器(半导体介质)。

按信息存储的机理分类

a.静态读写存储器(SRAM);

b.动态读写存储器(DRAM)。

按在计算机系统中所起的作用分类,可分为内部存储器、外部存储器;又可分为主存储器、高速缓冲存储器、辅助存储器、控制存储器。

2存储器的分级

在计算机系统中,通常采用多级存储器体系结构,如图3-1所示。

图3-1 存储器的分级结构

其中上两层为内存储器,容量相对较小,可以被CPU直接访问,存取速度快;而下两层为外存储器,容量大,但不能被CPU直接访问,需要先调入内部存储器才能被CPU处理。

3主存储器的技术指标

(1)相关定义

存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址称为字地址;

存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址;

按可编址的最小单位将计算机分为按字寻址的计算机和按字节寻址的计算机。

(2)性能指标

存储容量

指一个存储器中可以容纳的存储单元总数。存储容量常用字数或字节数(B)来表示。

存取时间

指一次读操作命令从发出到完成,将数据读出到数据总线上所经历的时间。

存储周期

指连续启动两次读操作所需最小时间间隔。

存储器带宽

单位时间里存储器所存取的信息量,通常以位/秒或字节/秒做度量单位。

二、SRAM存储器

根据信息存储的机理不同,存储器又分为静态读写存储器(SRAM)和动态读写存储器(DRAM)。SRAM的优点是存取速度快,但存储容量不如DRAM大。

1基本的静态存储元阵列

基本的静态存储元阵列如图3-2所示。

图3-2 基本的静态存储元阵列

SRAM的特征是用一个锁存器(触发器)作为存储元。只要直流供电电源一直加在这个记忆电路上,它就无限期地保持记忆的1状态或0状态。如果电源断电,那么存储的数据(1或0)就会丢失。

任何一个SRAM,都有三组信号线与外部通信:

地址线

阵列中有6条,即A0、A1、A2、A3、A4、A5,它指定了存储器的容量是26=64个存储单元。

数据线

本例中有4条,即I/O0,I/O1,I/O2,I/O3,它指定了存储器的字长是4位,因此存储位元的总数是64×4=256。

控制线

R/W(_)线控制线,它指定了对存储器进行读(R/W(_)高电平),还是进行写(R/W(_)低电平),读写操作不会同时发生。

地址译码器输出有64条选择线,称为行线,它的作用是打开每个存储位元的输入与非门。当外部输入数据为1时,锁存器便记忆了1;当外部输入数据为0时,锁存器便记忆了0。

2基本的SRAM逻辑结构

目前的SRAM芯片采用双译码方式,以便组织更大的存储容量。

(1)逻辑结构

存储容量为32K×8位的SRAM逻辑结构图如图3-3所示。

图3-3 32K×8位的SRAM逻辑结构图

(2)工作原理

地址线共15条,其中x方向8条(A0~A7),经行译码输出256行;y方向7条(A8~A14),经列译码输出128列;双向数据线有8条,即I/O0~I/O7,存储阵列为三维结构,即256行×128列×8位。

向SRAM写入时,8个输入缓冲器被打开,而8个输出缓冲器被关闭,因而8条I/O数据线上的数据写入到存储阵列中去。从SRAM读出时,8个输出缓冲器被打开,8个输入缓冲器被关闭,读出的数据送到8条I/O数据线上。

在芯片中,用来控制的片选信号,有效时(低电平),无效时(高电平),存储器进行读操作;无效时(高电平),有效时(低电平),存储器进行写操作。互锁,这样保证了读时不写,写时不读。

3读/写周期波形图

读周期波形如图3-4所示。

图3-4 读周期(高)

写周期波形如图3-5所示。

图3-5 写周期(低)

三、DRAM存储器

1DRAM存储元的记忆原理

动态MOS随机读写存储器DRAM的存储容量极大,通常用作计算机的主存储器。DRAM存储器的存储元是由一个MOS晶体管和电容器组成的记忆电路。

(1)写1到存储元

此时输出缓冲器关闭、刷新缓冲器关闭,输入缓冲器打开(R/W(_)为低),输入数据DIN=1送到存储元位线上,而行选线为高,打开MOS管,于是位线上的高电平给电容器充电,表示存储了1,如图3-6所示。

图3-6 写1到存储元

(2)写0到存储元

此时输出缓冲器和刷新缓冲器关闭,输入缓冲器打开,输入数据DIN=0送到存储元位线上;行选线为高,打开MOS管,于是电容上的电荷通过MOS管和位线放电,表示存储了0,如图3-7所示。

图3-7 写0到存储元

(3)从存储元读出1

输入缓冲器和刷新缓冲器关闭,输出缓冲器/读放打开(R/W(_)为高)。行选线为高,打开MOS管,电容上所存储的1送到位线上,通过输出缓冲器/读出放大器发送到DOUT,即DOUT=1,如图3-8所示。

图3-8 从存储元读出1

(4)刷新存储元的1

先如图3-8读出数据DOUT=1后又经刷新缓冲器送到位线上,再经MOS管写到电容上,如图3-9所示。

图3-9 刷新存储元的1

2DRAM芯片的逻辑结构

(1)管脚图

1M×4位DRAM芯片有两个电源脚、两个地线脚,为了对称,还有一个空脚(NC),它的管脚图如图3-10所示。

图3-10 DRAM管脚图

(2)逻辑结构图

1M×4位DRAM逻辑结构图如图3-11所示。

图3-11 1M×4位DRAM

与SRAM不同的是:

增加了行地址锁存器和列地址锁存器。由于DRAM存储器容量很大,地址线宽度相应要增加,这势必增加芯片地址线的管脚数目。

增加了刷新计数器和相应的控制电路,刷新操作与读/写操作是交替进行的,所以通过2选1多路开关来提供刷新行地址或正常读/写的行地址。

3读/写周期、刷新周期

(1)DRAM的读写周期

DRAM的读写周期波形图如图3-12所示。

图3-12 DRAM的读/写周期波形图

(2)DRAM的刷新周期

DRAM有三种刷新方式,分别为:

集中式刷新

刷新方式为前面的时间一直进行读取操作,后面的时间进行刷新。设刷新64×64的矩阵,刷新一次的时间为0.5us,则刷新完64行需要的时间为64×0.5=32us,说明这32us里不能进行读写操作。

分散式刷新

它扩大了读写周期,若读一次需要时间为0.5us,则一次的读写周期为1us,因为它包含了刷新用的0.5us。

异步式刷新

它将每一行的刷新都分开来,只要在规定的时间完成对每一行的刷新即可,(2ms/64)间隔进行一次刷新,这里的2ms是规定的,因为DRAM要求,至少2ms更新所有行一次。

4高级的DRAM结构

(1)SDRAM(同步DRAM)

在系统时钟的控制下进行读出和写入,CPU无需等待,主要解决速度匹配问题。

(2)RDRAM

由Rambus开发,主要解决存储器带宽问题。

(3)带cache的DRAM

在DRAM的芯片内集成了一个由SRAM组成的cache,有利于猝发式读取。

5存储器容量的扩充

(1)字长位数扩展

给定的芯片字长位数较短,不满足设计要求的存储器字长,此时需要用多个给定芯片扩展字长位数。三组信号线中,地址线和控制线公用而数据线单独分开连接。所需芯片数计算公式为

(2)字存储容量扩展

给定的芯片存储容量较小(字数少),不满足设计要求的总存储容量,此时需要用多片给定芯片来扩展字数。三组信号组中给定芯片的地址总线和数据总线公用,控制总线中R/W(_)公用,使能端EN不能公用,它由地址总线的高位段译码来决定片选信号。所需芯片数如字长位数扩展相同。

6DRAM读/写的正确性校验

DRAM正确性校验的概念示意图如图3-13所示。

图3-13 DRAM正确性校验概念示意图

其中F部分为检验电路,通常有奇偶校验和汉明码校验。

四、只读存储器和闪速存储器

SRAM和DRAM都是随机读写存储器,它们的特点是数据可读可写。

1只读存储器ROM

与随机读/写的RAM不同,ROM称作只读存储器。ROM分掩模ROM和可编程ROM两类,后者又分为一次性编程的PROM和多次编程的EPROM和E2PROM。

(1)掩模ROM

掩模ROM的阵列结构和存储元

掩模ROM实际上是一个存储内容固定的ROM,一旦ROM芯片做成,就不能改变其中的存储内容。一个16×8位的ROM阵列结构示意图如图3-14所示。

图3-14 16×8位ROM阵列结构示意图

掩模ROM的逻辑符号和内部逻辑框图

掩模ROM的逻辑符号如图3-15(a)所示,内部逻辑框图如图3-15(b)所示。

图3-15 掩模ROM逻辑符号和内部逻辑框图

(2)可编程ROM

可编程ROM有PROM、EPROM和E2PROM三种。PROM是一次性编程,后两种可多次编程。

EPROM存储元

EPROM称作光擦除可编程可读存储器,是一种断电后仍能保留数据的计算机存储芯片,即非易失性的。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高的电子器件分别编程,一旦编程完成,EPROM需要用强紫外线照射来擦除。

E2PROM存储元

E2PROM是指带电可擦可编程只读存储器,同样具有非易失性,与EPROM不同的是,E2PROM不需要从计算机中取出即可修改,其可通过高于普通电压的作用来擦除和重编程。

2FLASH存储器(闪速存储器)

(1)概述

它是高密度非易失性的读/写存储器。高密度意味着它具有巨大比特数目的存储容量,非易失性意味着存放的数据在没有电源的情况下可以长期保存。总之,它既有RAM的优点,又有ROM的优点。

(2)FLASH存储器的基本操作

编程操作

读取操作

擦除操作

(3)各种存储器的性能比较

FLASH与各种存储器性能的比较如表3-1所示。

表3-1 各种存储器的性能比较

五、并行存储器

采用并行技术的存储器,可以提高CPU和主存直接的数据传输率。

1双端口存储器

(1)双端口存储器的逻辑结构

双端口存储器的同一个存储器具有两组相互独立的读写控制电路。采用空间并行技术,可以进行并行的独立操作,是一种高速工作的存储器。

双端口存储器IDT7133的逻辑框图如图3-16所示。

图3-16 双端口存储器IDT7133逻辑框图

这是一个存储容量为2K,字长16位的SRAM,它提供了两个相互独立的左右端口。它们分别具有各自的地址线(A0~A10)、数据线(I/O0~I/O15)和控制线(R/W(_),),因而可以对存储器中任何位置上的数据进行独立的存取操作。

(2)无冲突读写控制

无冲突的读/写条件如表3-2所示,表中符号1代表高电平,0为低电平,×为任意,2为高阻态。

表3-2 无冲突读写控制

(3)有冲突的读写控制

左、右端口进行读写操作时的功能判断如表3-3所示。

表3-3 左、右端口读写操作的功能判断

2多模块交叉存储器

(1)存储器的模块化组织

一个由若干个模块组成的主存储器是线性编址的,多体交叉存储器采用时间并行技术。

顺序方式

在常规主存储器设计中,访问地址采用顺序方式,如图3-17所示,其单个模块损坏不影响其他模块,扩容方便,但带宽受到限制。

图3-17 顺序方式

交叉方式

采用交叉方式寻址的存储器模块化组织如图3-18所示,其大大提高了存储器的带宽。

图3-18 交叉方式

(2)顺序方式与交叉方式时间对比

假设模块存取一个字的存储周期为T,总线传送周期为τ,存储器交叉模块数位m,则要存取m个字长为l时,顺序方式所需时间为t1=T×m,而交叉顺序为t2=T+(m-1)×τ;顺序方式带宽为m×l/t1,交叉顺序为n×l/t2

六、cache存储器

1cache基本原理

(1)cache的功能

cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。其原理基于程序运行中具有的空间局部性和时间局部性特征。

CPU与存储器系统的关系如图3-19所示。

图3-19 CPU与存储器系统的关系

cache是由高速的SRAM组成,由于其存取速度比主存快,因此可以加快程序的执行速度。

(2)cache的基本原理

如图3-20所示,当CPU执行访存指令时,就把所要访问的字的地址送到CAM;若此字在cache中,则将此字立即传送给CPU;若不在,则将此字从主存传送到CPU。与此同时,把包含此字的由前后相继的4个字所组成的一行数据送入cache,它替换了原来cache中最近最少使用(LRU)的一行数据。

图3-20 cache原理图

(3)cache的命中率

在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则

设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则

若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache/主存系统的平均访问时间ta=htc+(1-h)tm

2主存与cache的地址映射

(1)全相联映射方式

组成

cache的数据块大小称为行,用Li表示,主存的数据块大小称为块,用Bj表示。行与块是等长的,每个块(行)由k=2w个连续的字组成,字是CPU每次访问存储器时可存取的最小单位。

映射过程

在全相联映射中,将主存中一个块的地址(块号)与块的内容(字)一起存于cache的行中,其中块地址存于cache行的标记部分中。这种带全部块地址一起保存的方法,可使主存的一个块直接拷贝到cache中的任意一行上。如图3-21所示。

图3-21 全相联映射方式示意图

检索过程

CPU访存指令指定了一个内存地址,指令中的块号先与cache中所有行的标记同时进行比较,如果块号命中,则按字地址从cache中读取一个字;如果块号未命中,则按内存地址从主存中读取这个字。在全相联cache中,全部标记用一个相联存储器来实现,全部数据用一个普通RAM来实现。

缺点

全相联方式的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。

(2)直接映射方式

定义

直接映射方式也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。

原理

cache的行号i和主存的块号j有如下函数关系:

i=j mod m

式中,m为cache中的总行数。直接映射方式的示意图如图3-22所示。其中主存数目为2s=28=256,cache行数目为2r=23=8。

图3-22 直接映射的cache组织

检索过程

在直接映射方式中,cache将s位(块地址用s位表示)的块地址分成两部分:r位(行号用r位表示)作为cache的行地址,s-r位作为标记(tag)与块数据一起保存在该行。CPU进行检索时根据行地址和标记来确定要读取的字在cache中还是在主存中。

优缺点

硬件简单,成本低,但在cache中容易发生冲突,较适合于需要大容量cache的场合。

(3)组相联映射方式

概述

组相联映射方式既兼顾了全相联映射的灵活性及高命中率,同时也兼顾了直接映射的简单及低成本优点。

原理

这种方式将cache分成u组,每组v行。主存块存放到哪个组是固定的,至于存到该组的位置是灵活的,即有如下函数关系:

m=u×v

组号q=j mod u

组相联映射的示意图如图3-23所示。其中cache组数为2d=4,标记大小为s-d位。

图3-23 组相联映射的cache组织

检索过程

在组相联映射方式中,当CPU给定一个内存地址访问cache时,首先用块号域的低d位找到cache的相应组,然后将块号域的高s-d位与该组v行中的所有标记同时进行比较,以此来确定要读取的字在cache中还是在主存中。

3替换策略

(1)最不经常使用(LFU)算法

LFU算法认为应将一段时间内被访问次数最少的那行数据换出,其缺点是不能严格反映近期访问情况。

(2)近期最少使用(LRU)算法

LRU算法将近期内长久未被访问过的行换出。这种算法保护了刚拷贝到cache中的新数据行,因而使cache有较高的命中率。

(3)随机替换

随机替换策略只要从特定的行位置中随机地选取一行换出即可,但其容易降低命中率和cache工作效率。

4cache的写操作策略

(1)写回法

要求

当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存;

当CPU写cache未命中时,将包含此字的主存块拷贝到cache中再进行修改。

特点

写回法明显减少了写入主存的次数,真正实现CPU与主存之间的高速缓冲作用,但这种方式会存在不一致性的隐患。

(2)全写法

要求

当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存内容的一致性;

当写cache未命中时,只能直接向主存进行写入。但此时是否将修改过的主存块取到cache,有两种选择方法:

a.WTWA法

取主存块到cache并为它分配一个行位置。

b.WTNWA法

不取主存块到cache。

特点

全写法保证了写cache与写主存的同步进行,但cache对CPU向主存的写操作无高速缓冲功能。

(3)写一次法

写一次法是基于写回法并结合全写法的写策略:写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。

七、虚拟存储器

1虚拟存储器的基本概念

(1)实地址与虚地址

虚地址

用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间。

实地址

计算机物理内存的访问地址称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。

(2)虚存的访问过程

访问过程

a.每次访问虚存时,判断该虚地址所对应的部分是否在实存中;

b.若在实存中,则进行地址转换并用实地址访问主存;

c.若不在实存中,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。

虚地址空间与实地址空间比较

每个程序的虚地址空间既可以远大于也可以远小于实地址空间,不同在于:

a.远大于实地址空间可以提高存储容量;

b.远小于实地址空间可以缩短指令中地址字段的长度。

虚存的优点

虚拟的存储器使得每个程序具有辅存的容量和接近主存的访问速度;

(3)cache与虚存的异同

出发点相同

原理相同

侧重点不同

数据通路不同

透明性不同

未命中时的损失不同

(4)虚存机制要解决的关键问题

调度问题

地址映射问题

替换问题

更新问题

2页式虚拟存储器

(1)页式虚存地址映射

概述

页式虚拟存储系统中,虚地址空间被分成等长大小的页,称为逻辑页;主存空间也被分成同样大小的页,称为物理页。虚地址分为两个字段:高字段为逻辑页号,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页号,低字段为页内地址。通过页表可以把虚地址(逻辑地址)转换成物理地址。

页表的作用

每一个进程都有一个页表,用来存放物理页和逻辑页的对应关系,页式虚拟存储器的地址映射过程如图3-24所示。

图3-24 页式虚拟存储器的地址映射过程

(2)转换后援缓冲器(TLB)

概述

专用于页表缓存的高速存储部件通常称为转换后援缓冲器(TLB),又称为快表。而保存在主存中的完整页表则称为慢表。快表的作用是加快地址变换。

TLB的作用

TLB的地址映射过程如图3-25所示。

图3-25 TLB的地址映射过程

(3)内页表和外页表

用于虚地址与主存物理地址之间的变换表称为内页表。

用于虚地址与辅存地址之间的变换表称为外页表。

3段式虚拟存储器和段页式虚拟存储器

(1)段式虚拟存储器

段是按照程序自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。

段表

每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段:

a.有效位,指明该段是否已经调入实存;

b.段起址,指明在该段已经调入实存的情况下,该段在实存中的首地址;

c.段长,记录该段的实际长度。

段式虚存的地址存储过程

段式虚地址向实存地址的变换过程如图3-26所示。

图3-26 段式虚存的地址映射过程

段式虚存的优点

a.易于编译、管理、修改和保护,也便于多道程序共享;

b.段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。

段式虚存的缺点

a.主存空间分配比较繁琐;

b.容易在段间留下许多碎片,造成存储空间利用率降低;

c.需要额外用加法操作来求物理地址。

(2)段页式虚拟存储器

在段页式虚拟存储系统中,每道程序均通过一个段表和多个页表进行两级再定位。由于在多任务系统中,操作系统会在每个虚地址前加上一个表明该程序在系统中的序号的基号,因此一个虚地址可以看作由四个字段构成,如图3-27所示。

图3-27 构成虚地址的四个字段

段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高。

4虚存的替换算法

当从辅存调页至主存而主存已满时,也需要进行主存页面的替换。虚拟存储器的替换算法与cache的替换算法类似,有FIFO算法、LRU算法、LFU算法等。