当前位置: 首页 > >

[计算机硬件及网络]计算机组成原理_4

发布时间:

第三章 存储系统
3.1 3.2 3.3 3.4 3.5 3.6 3.7 存储器概述 随机读写存储器 只读存储器和闪速存储器 高速存储器 cache存储器 虚拟存储器 存储保护

3.1 存储器概述 3.1.1 存储器分类
存储器是计算机系统中的记忆设备,用 来存放程序和数据。构成存储器的存储介质, 目前主要采用半导体器件和磁性材料。存储 器中最小的存储单位就是一个双稳态半导体 电路或一个CMOS晶体管或磁性材料的存储 元,它可存储一个二进制代码。由若干个存 储元组成一个存储单元,然后再由许多存储 单元组成一个存储器。 根据存储材料的性能及使用方法不同, 存储器有各种不同的分类方法:

★ 按存储介质分 半导体存储器:用半导体器件组成的存储器。 磁表面存储器:用磁性材料做成的存储器。 ★ 按存储方式分 随机存储器:任何存储单元的内容都能被随 机存取,且存取时间和存储单 元的物理位置无关。 顺序存储器:只能按某种顺序来存取,存取 时间和存储单元的物理位置 有关。

★ 按存储器的读写功能分 只读存储器(ROM):存储的内容是固定不变的, 只能读出而不能写入的半导体存储器。 随机读写存储器(RAM):既能读出又能写入的 半导体存储器。 ★ 按信息的可保存性分 非永久记忆的存储器:断电后信息即消失的 存储器。 永久记忆性存储器:断电后仍能保存信息的 存储器。 ★ 按在计算机系统中的作用分 根据存储器在计算机系统中所起的作用,可 分为主存储器、辅助存储器、高速缓冲存储器、 控制存储器等。

3.1.2 存储器的分级结构
为了解决对存储器要求容量大,速度快, 成本低三者之间的矛盾,目前通常采用多级 存储器体系结构,即使用高速缓冲存储器、 主存储器和外存储器。
名 称 高速缓冲 存储器 主存储器 简称 Cache 主存 用 途 特 点 高速存取指令和数据 存放计算机运行期间 的大量程序和数据 存放系统程序和大型 数据文件及数据库 存取速度快, 但存储容量小 存取速度较快, 存储容量不大 存储容量大, 位成本低

外存储器

外存

CPU 内部寄存器

主存储器 外存储器

高速缓冲存储器 cache 主存 磁 盘 cache 磁盘 磁带 光盘

图3.1 存储器系统的分级结构

3.1.3 主存储器的技术指标
主存储器的性能指标主要是: ? 存储容量 ? 存取时间 ? 存储周期 ? 存储器带宽 字存储单元即存放一个机器字的存储单元, 相应的地址称为字地址。一个机器字可以包含 数个字节,所以一个存储单元也可包含数个能 够单独编址的字节地址。 下面列出主存储器的主要几项技术指标:

指标
存储 容量 存取 时间 存储 周期 存储器 带宽





表 现
存储空间的 大小 主存的速度 主存的速度 数据传输速 率技术指标

单 位
字数, 字节数 ns ns 位/秒, 字节/秒

在一个存储器中可以 容纳的存储单元总数 启动到完成一次存储 器操作所经历的时间 连续启动两次操作所 需间隔的最小时间 单位时间里存储器所 存取的信息量,

表3.2 主存储器的主要几项技术指标

3.2 随机读写存储器 3.2.1 SRAM存储器 1. 基本存储元
基本存储元是组成存储器的基础和核心, 它用来存储一位二进制信息0或1。下图一个是 六管SRAM存储元的电路结构示意图。 它是由两个MOS反相器交叉耦合而成的触 发器,一个存储元存储一位二进制代码。这种 电路有两个稳定的状态,并且A,B两点的电位 总是互为相反的,因此它能表示一位二进制的1 和0。下面我们来分析说明该存储元的读写操作 实现过程。

图3.2 六管静态存储元电路工作过程演示

2. SRAM存储器的组成
图示3.3为SRAM存储器的结构框图。

其内部组成结构是: 存储体:存储单元的集合,通常用X选择线 (行线)和Y选择线(列线)的交叉来选择所需要的 单元。 地址译码器:将用二进制代码表示的地址转 换成输出端的高电位,用来驱动相应的读写电 路,以便选择所要访问的存储单元。地址译码 有两种方式。 单译码:适用于小容量存储器,一个地址译 码器 双译码:适用于大容量存储器,X向和Y向两 个译码器。

图示说明了一个采用双译码结构的存储单元矩阵的译码过程

驱动器: 双译码结构中,在译码器输出后加 驱动器,驱动挂在各条X方向选择线上的所有 存储元电路。 I/O电路:处于数据总线和被选用的单元之 间,控制被选中的单元读出或写入,放大信息。 片选: 在地址选择时,首先要选片,只有当片 选信号有效时,此片所连的地址线才有效。 输出驱动电路: 为了扩展存储器的容量,常 需要将几个芯片的数据线并联使用;另外存储 器的读出数据或写入数据都放在双向的数据总 线上。这就用到三态输出缓冲器。

3. SRAM存储器芯片实例 在了解了SRAM的内部组成结构后,下 面我们通过实际中的存储器芯片来加以具体 说明。下图是2114存储器芯片(1K×4)的逻辑 结构方框图。

注意:由于读操作与写操作是分时进行
的,读时不写,写时不读,因此,输入三态 门与输出三态门是互锁的,数据总线上的信 息不致于造成混乱。

4. 存储器与CPU连接
CPU对存储器进行读/写操作,首先由地址 总线给出地址信号,然后要发出读操 作或写 操作的控制信号,最后在数据总线上进行信息 交流,要完成地址线的连接、数据线的连接和 控制线的连接。 存储器芯片的容量是有限的,为了满足实 际存储器的容量要求,需要对存储器进行扩展。 主要方法有: ★ 位扩展法 ★ 字扩展法 ★ 字位同时扩展法

★ 位扩展法: 只加大字长,而存储器的字数与存储器 芯片字数一致,对片子没有选片要求使用。下 图为8K×1的RAM存储器芯片,组成8K×8位 的存储器连接结构图。

★ 字扩展法: 仅在字向扩充,而位数不变。需由片选 信号来区分各片地址。下图是用16K×8位的 芯片采用字扩展法组成64K×8位的存储器存 储器连接结构图。 ★ 字位同时扩展法: 一个存储器的容量假定为M×N位,若使用 L×k 位的芯片(L<M,k<N),需要在字向和 位向同时进行扩展。此时共需要(M/L×(N/k) 个存储器芯片。

5. 存储器的读、写周期 在与CPU连接时,CPU的控制信号与存储器 的读、写周期之间的配合问题是非常重要的。 读周期: 读周期与读出时间是两个不同的概 念。读出时间是从给出有效地址到外部数据总 线上稳定地出现所读出的数据信息所经历的时 间。读周期时间则是存储片进行两次连续读操 作时所必须间隔的时间,它总是大于或等于读 出时间。 写周期: 要实现写操作,要求片选CS和写命 令WE信号都为低,并且CS信号与WE信号相 “与”的宽度至少应为tW。

图3.8 2114的读写周期时序图

3.2.2 DRAM存储器 1.四管动态存储元 四管的动态存储电路是将六管静态存储元电 路中的负载管T3,T4去掉而成的。它和六管静 态存储元电路的区别: 写操作: 写数据靠T1,T2管栅极电容的存储作 用,在一定时间内可保留所写入的信息。 读操作: 先给出预充信号,使两个预冲电容达 到电源电压。字选择线使T5,T6管导通时,存 储的信息通过A,B 刷新操作: 为防止存储的信息电荷泄漏而丢失 信息,由外界按一定规律不断给栅极进行充电, 补足栅极的信息电荷。

2.
单管动态存储元电路由一个管子T1和一 个电容C构成。 写入:字选择线为“1”,T1管导通,写 入信息由位线(数据线)存入电容C中; 读出:字选择线为“1”,存储在电容C 上的电荷,通过T1输出到数据线上,通过读 出放大器即可得到存储信息。

单管存储元电路和四管存储元电路对比
名称 优 点 四管存储 外围电路比较简 元电路 单,刷新时不需 要另加外部逻辑 单管存储 元件数量少,集 元电路 成度高 缺 点 管子多,占用的芯 片面积大 需要有高鉴别能力 的读出放大器配合 工作,外围电路比 较复杂

3. DRAM DRAM存储器芯片的结构大体与SRAM 存储器芯片相似,由存储体与外围电路构成。 但它集成度要高,外围电路更复杂。下图是 16K×1位的DRAM存储器2116芯片的引脚图 和内部逻辑结构示意图和其读写时序图。

A6 A5 A4 A3 A2 A1 A0 GND

1

16

DRAM 2116

7

8

Vcc WR RAS CAS Din Dout NC NC

DRAM 2116封装引脚

图3.11

16K*1位DRAM芯片

RAS CAS

tCYC tRAS tCAS

DRAM读周期

地址 WR Dout

行地址

列地址

tRCH tRCS tCAC tDOH
读数据有效

tCYC— 读周期时间 tRAS— RAS脉冲宽度 tCAS— CAS脉冲宽度 tRCS— 读命令建立时间 tRCH— 读命令保持时间 tDOH— 数据输出保持时间

tRAC

RAS CAS

tCYC tRAS tCAS

DRAM写周期
tCYC— tWCH— tWP— tCWL— tDS— tDH—
写周期时间 写命令保持时间 写命令脉冲宽度

地址

行地址

列地址

tCWL

写命令开始到CAS 无效的时间 写入数据建立时间 写入数据保持时间

WR
tDS

tWCH tWP tDH

Din

写入有效数据

4. DRAM的刷新
动态MOS存储器采用“读出”方式进行 刷新。从上一次对整个存储器刷新结束到下 一次对整个存储器全部刷新一遍为止,这一 段时间间隔叫刷新周期。 常用的刷新方式有三种: 集中式 分散式 异步式

集中式刷新:在整个刷新间隔内,前一段 时间重复进行读/写周期或维持周期,等到需 要进行刷新操作时,便暂停读/写或维持周期, 而逐行刷新整个存储器,它适用于高速存储 器。下图为刷新方式图。 分散式刷新:把一个存储系统周期tc分为两 半,周期前半段时间tm用来读/写操作或维持 信息,周期后半段时间tr作为刷新操作时间。 这样,每经过128个系统周期时间,整个存储 器便全部刷新一遍。 异步式刷新:是前两种方式的结合。即对 每一行在2ms之内相隔*均间隔刷新一次。

图3.14(a) 集中刷新方式

图3.14(b)

分散刷新方式

5. DRAM
DRAM存储器的刷新需要有硬件电路的支持,包 括刷新计数器、刷新/访存裁决、刷新控制逻辑等。 这些控制线路形成DRAM控制器,它将CPU的信号变 换成适合DRAM片子的信号。 (1)地址多路开关:刷新时需要提供刷新地址,由 多路开关进行选择。 (2)刷新定时器: 定时电路用来提供刷新请求。 (3)刷新地址计数器:只用RAS信号的刷新操作, 需要提供刷新地址计数器。 (4)仲裁电路:对同时产生的来自CPU的访问存储 器的请求和来自刷新定时器的刷新请求的优先权进 行裁定。 (5)定时发生器:提供行地址选通信号RAS、列地 址选通信号CAS和写信号WE.

3.2.3 主存储器组成实例
本节以DRAM控制器W4006AF为例,说 明80386中主存储器的构成方法。 下面是采用W4006AF构成的80386主存 储器简图,具体框图参看教材:P87页 (1)W4006AF的外特性 ① 可以控制两个存储体交叉访问; ② 可以对256KB—16MB的DRAM片子进 行访问; ③ 最多可控制128个DRAM片子; ④ 采用CAS在RAS之前的刷新方式。

图3.17

采用W4006AF构成的80386主存储器

(2) 上图右半部所示为80386主存储器的基 本构成,有4 个存储模块,每个模块存储容量 为1M×32位。在用W4006AF控制器构成存 储器时,几乎不需要外加电路,直接把 W4006AF同CPU和DRAM双方进行连接即 可。 要对主存容量进行扩充,只需扩充 DRAM芯片数量或更换存储容量更大的 DRAM芯片即可。

3.2.4 高性能的主存储器 1. EDRAM芯片
EDRAM芯片又称增强型DRAM芯片,它是在DRAM 芯片上集成了一个SRAM实现的小容量高速缓冲存 储器,从而使DRAM芯片的性能得到显著改进。 以SRAM保存一行内容的办法,对成块传送非 常有利。如果连续的地址高11位相同,意味着属 于同一行地址,那么连续变动的9位列地址就会使 SRAM中相应位组连续读出,这称为猝发式读取。 EDRAM的这种结构还带来另外两个优点: ●在SRAM读出期间可同时对DRAM阵列进行刷新。 ●芯片内的数据输出路径与输入路径是分开的, 允许在写操作完成的同时来启动同一行的读操作。

2. EDRAM内存条 一片EDRAM的容量为1M×4位,8片这样 的芯片可组成1M×32位的存储模块。 8个芯片共用片选信号Sel、行选通信号 RAS、刷新信号Ref和地址输入信号A0—A10。 当某模块被选中,此模块的8个EDRAM芯片同 时动作,8个4位数据端口D3~D0同时与32位 数据总线交换数据,完成一次32位字的存取。 上述存储模块本身具有高速成块存取能力, 这种模块内存储字完全顺序排放,以猝发式存 取来完成高速成块存取的方式,在当代微型机 中获得了广泛应用。

3. 主存物理地址的存储空间分布
下面以奔腾PC机主存为例,说明主存物 理地址的存储空间概念。 奔腾PC机主存物理 地址存储空间分布情况如下图。 最大可访问主存空间为256MB,实际只 安装了16MB的DRAM。 存储空间分成基本内存、保留内存、扩

3.3 只读存储器和闪速存储器 3.3.1 只读存储器 (ROM) 1. ROM的分类 只读存储器简称ROM,它只能读出, 不能写入。它的最大优点是具有不易失性。 根据编程方式不同,ROM通常分为三 类: 掩模式ROM: 又称 mask ROM 一次编程ROM: 又称 PROM 多次编程ROM: 又称 EPROM,EEPROM

掩模式ROM:数据在芯片制造过程中就已 经被确定。其特点是可靠性和集成度高,价 格便宜,但不能重写。 一次编程ROM:用户可自行改变产品中某 些存储元可以根据用户需要编程只能一次性 改写。 多次编程ROM:可以用紫外光照射或电擦 除原来的数据,然后再重新写入新的数据可 以多次改写ROM中的内容。

2. 光擦可编程只读存储器(EPROM) (1) 基本存储元电路 P沟道EPROM的基本电路结构示意图如下。 它与普通P沟道增强型MOS电路相似,在N型 基片上生长了两个高浓度的P型区,通过欧姆 接触,分别引出源极(S)和漏极(D)。在S极和D 极之间,有一个由多晶硅做的栅极,但它是浮 空的,被绝缘物SiO2所包围。当管子制造好时, 硅栅上没有电荷,所以源极和漏极之间是不导 电的。

当把EPROM管子用于存储矩阵时,一个基本 存储元电路如下图所示,这种电路所组成的存储 矩阵输出为“1”,当写入“0”时,在D和S极之 间加上25V高压,另外加上编程脉冲,所选中的 单元在这个电压作用下,D和S之间被瞬间击穿, 于是有电子通过绝缘层注入到硅栅。当高压去除 后,因为硅栅被绝缘层包围,故注入的电子无处 泄露,硅栅变负,于是就形成了导电沟道,从而 使EPROM存储元导通,输出为“0”。 由这种EPROM做成的片子封装上方有一个石 英玻璃窗口。当用紫外线照射窗口时,所有电路 中的浮空晶栅上的电荷会形成光电流泄漏走,使 电路恢复道起始状态。输出变为“1”。

(2) EPROM实例 (2716的内部结构图)

【例3】 CPU的地址总线16根(A15—A0,A0为 低位),双向数据总线8根(D7—D0),控制总线中 与主存有关的信号有MREQ(允许访存, 低电*有 效),R/W(高电*为读命令,低电*为写命令)。主 存地址空间分配如下:0—8191为系统程序区,由 只读存储芯片组成;8192—32767为用户程序区; 最后(最大地址)2K地址空间为系统程序工作区。上 述地址为十进制,按字节编址。现有如下存储器 芯片:EPROM:8K×8位(控制端仅有CS);SRAM: 16K×1位,2K×8位,4K×8位,8K×8位.请从上 述芯片中选择适当芯片设计该计算机主存储器, 画出主存储器逻辑框图,注意画出选片逻辑(可选 用门电路及3∶8译码器74LS138)与CPU 的连接, 说明选哪些存储器芯片,选多少片。

【解】 主存地址空间分布如图所示。

根据给定条件,选用EPROM:8K×8位 芯片1片。SRAM:8K×8位芯片3片,2K×8 位芯片1片。3-8译码器仅用Y0,Y1,Y2, Y3和Y7输出端,且对最后的2K×8位芯片还 需加门电路译码。主存储器的组成与CPU连 接逻辑图如下图所示。

图3.24 主存储器组成与CPU的连接逻辑图

3.3.2 闪速存储器 闪速存储器是一种高密度、非易失性的 读/写半导体存储器,它突破了传统的存储器 体系,改善了现有存储器的特性。 其特点: 固有的非遗失性 廉价的高密度 可直接执行 固态性能 下图是28F256A闪存芯片的逻辑方框图。 除了指令寄存器在内的控制和定时逻辑,其余 部分与一般半导体存储器的结构相似。 其中VCC(+5V)是对器件供电,VPP(+12V)是 擦除/编程供电的电源。

1. 闪速存储器的工作原理
闪速存储器是在EPROM功能基础上增加了 电路的电擦除和重新编程能力。 闪存28F256A引入一个指令寄存器来实现这 种功能。其作用是: (1) 保证TTL电*的控制信号输入; (2) 在擦除和编程过程中稳定供电; (3) 最大限度的与EPROM兼容。 当VPP引脚不加高电压时,它只是一个只读 存储器;当VPP引脚加高电压时,则通过指令寄 存器可以实现存储器内容的变更;当VPP=VPPL时, 指令寄存器的内容为读指令,使28F256A成为只 读存储器,称为写保护。

2. 读操作: 片选信号CE是供电控制端,输出允 许信号OE用于控制数据从输出引脚的输出。只 有这两个信号同时有效时,才能实现数据输出。 输出禁止操作: 当输出允许控制端OE处于高 电*时,28F256A被禁止输出,输出引脚置于 等待操作: 当片选信号CE处于逻辑高电*时 ,等待操作抑制了28F256A的大部分电路,减 少器件功耗。 写操作: 当VPP为高电压时,通过指令寄存器 实现器件的擦除和编程 。当CE=0且WE=0时, 通过写周期对指令寄存器进行写入。

表3.4 28F256A

工作模式

VPP

A0 A9 CE OE WE DQ0~DQ7

VPPL A0 A9 0 只 读 读 输出禁止 VPPL × × 0 VPPL × × 1 等待

0 1 ×

1 1 ×

数据输出 三态输出 三态输出

读 读 输出禁止 写 备用 写

VPPH VPPH VPPH VPPH

A0 × × A0

A9 × × A9

0 0 1 0

0 1 × 1

1 1 × 0

数据输出 三态输出 三态输出 数据输入

3. 闪速存储器与CPU的连接
CPU与闪速存储器进行连接的逻辑框图如


中间部分是接口电路。地址总线和控制 总线由CPU发向存储器和接口逻辑,数据总 线为双向总线。 地址总线的宽度决定了存储器的存储容 量,数据总线的宽度决定了存储器的字长。

3.4 高速存储器
由于CPU和主存储器是用不同的材料制成 的,因而它们在速度上是不匹配的,CPU运算 速度很高,存储器的访问速度比较低。为了提 高CPU的工作效率,加速CPU与存储器之间的 数据传输,通常有以下几种方式来实现: 1. 采用更高速性能的存储器,加长存储器 的字长。 2. 采用并行操作的双端口存储器。 3. 在CPU和主存之间使用高速缓冲存储器 cache。 4. 在每个存储器周期中存取几个字。

3.4.1 双端口存储器
1. 双端口存储器的逻辑结构 双端口存储器是指同一个存储器具有两组 相互独立的读写控制线路,是一种高速工作的 存储器。 下图是2K×16位双端口存储器IDT7133的逻 辑功能方框图。它提供了两个相互独立的端口 ,即左端口右端口。它们分别具有各自的地址 线、数据线和控制线,可以对存储器中任何位 置上的数据进行独立的存取操作。

2. 无冲突读写控制 当两个端口的地址不相同时,在两个端 口上进行读写操作,一定不会发生冲突。当 任一端口被选中驱动时,就可对整个存储器 进行存取,每一个端口都有自己的片选控制 和输出驱动控制。

3. 有冲突的读写控制
当两个端口同时存取存储器同一存储单元 时,便发生读写冲突。为解决此问题,特设置 了BUSY标志。由片上的判断逻辑决定对哪个 端口优先进行读写操作,而暂时关闭另一个被 延迟的端口。

1.CE判断: 如果地址匹配且在CE之前有效, 片上的控制逻辑在CEL和CER之间进行判断来
2.地址有效判断: 如果CE在地址匹配之前变 低,片上的控制逻辑在左、右地址间进行判断 来选择端口。

3.4.2 多模块交叉存储器 1. 存储器的模块化组织
一个由若干个模块组成的主存储器是线性 编址的。这些地址在各模块有两种安排方式: 一种是顺序方式,一种是交叉方式。 顺序方式:某个模块进行存取时,其他模块不 工作,某一模块出现故障时,其他模块可以照 常工作,通过增添模块来扩充存储器容量比较 方便。但各模块串行工作,存储器的带宽受到 了限制。

交叉方式:地址码的低位字段经过译码选择 不同的模块,而高位字段指向相应模块内的 存储字。连续地址分布在相邻的不同模块内, 同一个模块内的地址都是不连续的。对连续 字的成块传送可实现多模块流水式并行存取, 大大提高存储器的带宽。

2. 多模块交叉存储器的基本结构 四模块交叉存储器结构框图如下图:

每个模块各自以等同的方式与CPU传送 信息。CPU同时访问四个模块,由存储器控 制部件控制它们分时使用数据总线进行信息

下面做定量分析:我们认为模块字长等于 数据总线宽度,模块存取一个字的存储周期为T, 总线传送周期为τ,存储器的交叉模块数为m, 为了实现流水线方式存取,应当满足 T = mτ (m=T/τ称为交叉存取度) 交叉存储器要求其模块数必须大于或等于 m,以保证启动某模块后经mτ时间再次启动该 模块时,它的上次存取操作已经完成。这样, 连续读取m 个字所需的时间为 t1=T+(m-1)τ 而顺序方式存储器连续读取m个字所需时间 为t2=mT。交叉存储器的带宽确实大大提高了。

【例4】设存储器容量为32字,字长64位,模块数 m=4,分别用顺序方式和交叉方式组织。存储周期 T=200ns,数据总线宽度为64位,总线传送周期 τ=50ns。问顺序存储器和交叉存储器的带宽各是多 少? 【解】 顺序存储器和交叉存储器连续读出m=4个字的信 息总量都是:q=64位×4=256位 顺序存储器和交叉存储器连续读出4个字所需的 时间分别是: t2=mT=4×200ns=800ns=8×10-7s; t1=T+(m-1)=200ns+3×50ns=350ns=35×10-7s 顺序存储器和交叉存储器的带宽分别是: W2=q/t2=256÷(8×10-7)=32×107[位/s]; W1=q/t1=256÷(35×10-7)=73×107[位/s]

3.4.3 相联存储器 1. 相联存储器的基本原理 前面介绍的存储器都是按地址访问的存储 器,而相联存储器是按内容访问的存储器。相 联存储器是指其中任一存储项内容作为地址来 存取的存储器。选用来寻址存储器的子段叫做 关键字。存放在相联存储器中的项可以看成具 有KEY,DATA这样的格式。其中KEY是地址, DATA是被读写信息。 相联存储器的基本原理是把存储单元所存 内容的某一部分作为检索项(即关键字项),去检 索该存储器,并将存储器中与该检索项符合的 存储单元内容进行读出或写入。

表3.7 存放在存储器中的一张表格 物理地址

学号 011

姓名 张明

出生年月 成绩 1980.1.1 80

n n+1 n+2

012 013

周进 王芳

1981.2.2 1982.3.3

81 82

2. 相联存储器的组成 相联存储器由存储体、检索寄存器、屏蔽 寄存器、符合寄存器、比较线路、代码寄存器 、控制线路等组成,结构框图如下图。 检索寄存器:用来存放检索字,其位数和相 屏蔽寄存器:用来存放屏蔽码,其位数和检 索寄存位数相同。 符合寄存器:用来存放按检索项内容检索存 储体中与之符合的单元地址,其位数等于相联 存储器的存储单元位数,每一位对应一个存储 单元,位的序数即为相联存储器的单元地址。

比较线路:把检索项和从存储体中读出的所 有单元内容的相应位进行比较,如果有某个存 储单元和检索项符合,就把符合寄存器的相应 位置“1”,表示该字已被检索 代码寄存器:用来存放存储体中读出的代码 ,或者存放向存储体中写入的代码。 存储体:由高速半导体存储器构成,以求快 在计算机系统中,相联存储器主要用于 虚拟存储器中存放分段表、页表和快表;在高 速缓冲存储器中,相联存储器作为存放cache 的行地址之用。这是因为,在这两种应用中, 都需要快速查找。

3.5 cache存储器 3.5.1 cache基本原理 1. cache的功能
cache是介于CPU和主存之间的小容量存 储器,存取速度比主存快。它能高速地向 CPU提供指令和数据,加快程序的执行速度 。它是为了解决CPU和主存之间速度不匹配 而采用的一项重要技术 。

2. cache的基本原理
CPU与cache之间的数据交换是以字为单位 ,而cache与主存之间的数据交换是以块为单 位。一个块由若干定长字组成的。当CPU读取 主存中一个字时,便发出此字的内存地址到 cache和主存。此时cache控制逻辑依据地址判 断此字当前是否在 cache中:若是,此字立即 传送给CPU;若非,则用主存读周期把此字从 主存读出送到CPU,与此同时,把含有这个字 的整个数据块从主存读出送到cache中。由始 终管理着cache使用情况的硬件逻辑电路来实 现LRU替换算法。

3. cache 增加cache的目的,就是在性能上使主存 的*均读出时间尽可能接*cache的读出时间 。因此,cache的命中率应接*于1。由于程序 访问的局部性 ,这是可能的。在一个程序执 行期间,设Nc表示cache完成存取的总次数, Nm表示主存完成存取的总次数,h定义为命中 率,则有

若tc表示命中时的cache访问时间,tm表示未 命中时的主存访问时间,1-h表示未命中率, 则cache/主存系统的*均访问时间ta为: ta=htc+(1-h)tm (3.5) 设r=tm/tc表示主存慢于cache的倍率,e表示 访问效率,则有:

为提高访问效率,命中率h越接*1越好,r值 以5~10为宜,不宜太大。命中率h与程序的行 为、cache的容量、组织方式、块的大小有关。

【例5】CPU执行一段程序时,cache完成存取 的次数为1900次,主存完成存取的次数为100 次,已知cache存取周期为50ns,主存存取周期 为250ns,求cache/主存系统的效率和*均访问
【解】 h = Nc/(Nc+Nm)=1900/(1900+100)=0.95 r = tm/tc=250ns/50ns=5 e = 1/(r+(1-r)h)=1/(5+(1-5)×0.95)=83.3% ta = tc/e=50ns/0.833=60ns

3.5.2 主存与cache的地址映射
cache的容量很小,它保存的内容只是主 存内容的一个子集,且cache与主存的数据交 换是以块为单位。 地址映射即是应用某种方法把主存地址 定位到cache中。 址映射方式有三种: 全相联映射方式 直接映射方式 组相联映射方式

1. 主存中一个块的地址与块的内容一起存于 cache的行中,其中块地址存于cache行的标记 部分中。 这种方法可使主存的一个块直接拷贝到 cache中的任意一行上,非常灵活。 它的主要缺点是比较器电路难于设计和实 现,因此只适合于小容量cache采用。 全相联映射的示意图如下图:

全相联映射的cache组织

2. 直接相联映射方式 这也是一种多对一的映射关系,但一个主 存块只能拷贝到cache的一个特定行位置上去。 cache的行号i和主存的块号j有如下函数关 系: i=j mod m (m为cache中的总行数 )
直接映射方式的示意图如下: 直接相连映射方式的优点是硬件简单,成 本低。缺点是每个主存块只有一个固定的行位 置可存放,容易产生冲突。因此适合大容量 cache采用。

直接相联映射的cache组织

3. 组相联映射方式
这种方式是前两种方式的折衷方案。它 将cache分成u组,每组v行,主存块存放到哪 个组是固定的,至于存到该组哪 一行是灵活 的,即有如下函数关系: m=u×v 组号 q=j mod u 组相联映射的示意图如下: 组相联映射方式中的每组行数v一般取 值较小,这种规模的v路比较器容易设计和 实现。而块在组中的排放又有一定的灵活性, 冲突减少。

3.5.3 替换策略
cache工作原理要求它尽量保存最新数据, 必然要产生替换。 对直接映射的cache来说,只要把此特定 位置上的原主存块换出cache即可。 对全相联和组相联cache来说, 就要从 允许存放新主存块的若干特定行中选取一行 换出。cache的三种常用替换算法: ★ 最不经常使用(LFU)算法 ★ *期最少使用(LRU) ★ 随机替换

★ 最不经常使用(LFU) LFU算法将一段时间内被访问次数最少的 那行数据换出。每行设置一个计数器。从0开 始计数,每访问一次, 被访行的计数器增1。 当需要替换时,将计数值最小的行换出,同 时将这些行的计数器都清零。 这种算法将计数周期限定在对这些特定 行两次替换之间的间隔时间内,不能严格反

★ *期最少使用(LRU) LRU算法将*期内长久未被访问过的行换 出。每行也设置一个计数器,cache每命中一次 ,命中行计数器清零,其它各行计数器增1。当 需要替换时,将计数值最大的行换出。 这种算法保护了刚拷贝到cache中的新数据 行,有较高的命中率。 ★ 随机替换 随机替换策略从特定的行位置中随机地选 取一行换出。在硬件上容易实现,且速度也比 前两种策略快。 缺点是降低了命中率和cache工作效率。

3.5.4 cache的写操作策略 cache的内容只是主存部分内容的拷贝,它 应当与主存内容保持一致。当CPU对cache进行 写操作时更改了cache的内容,所以需要更改的 数据回写到相应主存中。cache内容的回写方式 可选用如下几种写操作策略: (1) 写回法:当CPU写cache命中时,只修改 cache的内容,而不立即写入主存;只有当此行 被换出时才写回主存。这种方法减少了访问主 存的次数,但是存在不一致性的隐患。 实现这种方法时,每个cache行必须配置一 个修改位,以反映此行是否被CPU修改过。

(2) 全写法 当写cache命中时,cache与主存同时发生 写修改,因而较好地维护了cache与主存的内容 的一致性。 当写cache未命中时,直接向主存进行写入 。cache中每行无需设置一个修改位以及相应的 判断逻辑。缺点是降低了cache的功效。 (3) 写一次法 基于写回法并结合全写法的写策略,写命 中与写未命中的处理方法与写回法基本相同, 只是第一次写命中时要同时写入主存。这样使 其它使用该块数据的能即时进行标识或作废处 理,以便于维护系统全部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与外部数据交换时,存储器读写总线周期主要 有两类: 一类是256位猝发式传送,用于L1的行填入和行写 出,一次完成整行的填入或写出。 另一类是不经L1的64位传送 ,此时cache仅为高 电*,称为非超高速缓存式传送。 L2级cache采用的是写回法,L1级数据cache采用的 是写一次法。为了维护cache的一致性,L1和L2均采用 MESI协议,即要求每个cache行有两个状态位,用以描 述该行当前是处于修改态、专有态、共享态或者无效 态中的哪种状态,从而决定对它的读/写操作行为。 总之,L2级cache的内容是主存的子集,而L1级 cache又是L2级cache的子集。L2负责整个系统的cache/ 主存一致性,L1负责响应L2,与L2一起维护L1/L2两 个cache的一致性,保证三级存储系统的一致性。

3.6 虚拟存储器 3.6.1 虚拟存储器的基本概念 1. 什么是虚拟存储器 虚拟存储器只是一个容量非常大的存储 器的逻辑模型,不是任何实际的物理存储器。 它借助于磁盘等辅助存储器来扩大主存容量 ,使之为更大或更多的程序所使用。 虚拟存储器指的是主存~外存层次。它 以透明的方式给用户提供了一个比实际主存 空间大得多的程序地址空间。此时程序的逻 辑地址称为虚拟地址(虚地址)。

注意:
物理地址由CPU地址引脚送出,用于访问 主存的地址。 虚拟地址由编译程序生成的,是程序的逻 辑地址,其地址空间的大小受到辅助存储器容 量的限制。 主存~外存层次所用的地址变换映射方法 和替换策略与cache~主存层次所用的方法和 策略是相同的,即都基于程序局部性原理。它 们遵循的原则是:

① 把程序中最*常用的部分驻留在高速的存 储器中。 ② 一旦这部分变得不常用了,把它们送回到 低速的存储器中。 ③ 这种换入换出是由硬件或操作系统完成的 ,对用户是透明的。 ④ 力图使存储系统的性能接*高速存储器, 价格接*低速存储器。 两种存储系统的主要区别在于: 在虚拟存储器中未命中的性能损失要远大 于cache系统中未命中的损失。

2. 主存主存-外存层次的基本信息传送单位可采 用几种不同的方案:段、页或段页 ★ 段是按照程序的逻辑结构划分成的多个相 对独立部分,作为独立的逻辑单位。 优点是段的逻辑独立性使它易于编译、管 理、修改和保护,也便于多道程序共享;某些 类型的段具有动态可变长度,允许自由调度以 便有效利用主存空间。 缺点是因为段的长度各不相同,起点和终 点不定,给主存空间分配带来麻烦,而且容易 在段间留下许多空余的零碎存储空间,造成浪 费。

★ 页是主存物理空间中划分出来的等长的固 定区域。 优点是页面的起点和终点地址是固定的 ,方便造页表,新页调入主存也很容易掌握 ,比段式空间浪费小。 缺点是处理、保护和共享都不及段式来 得方便。 ★ 段页式管理采用分段和分页结合的方法。 程序按模块分段,段内再分页,进入主 存以页为基本信息传送单位,用段表和页表 进行两级定位管理。

3.6.2 页式虚拟存储器 页式虚拟存储系统中,虚拟空间分成页,称 为逻辑页;主存空间也分成同样大小的页,称为 物理页。 虚存地址分为两个字段:高字段为逻辑页号 ,低字段为页内行地址。 实存地址也分两个字段:高字段为物理页号 ,低字段为页内行地址。 页表中每一个虚存逻辑页号有一个表目,表 目内容包含该逻辑页所在的主存页面地址(物理页 号),用它作为实存地址的高字段,与虚存地址的 页内行地址字段相拼接,产生完整的实主存地址 ,据此来访问主存。页式管理的地址变换如图

页式虚拟存储器结构

为了避免页表已保存或已调入主存储器 时对主存访问次数的增多,把页表的最活跃 部分存放在高速存储器中组成快表。快表与 慢表实现内部地址变换的方式如下图。 快表由硬件组成,比页表小得多,查表 时,由逻辑页号同时去查快表和慢表,当在 快表中有此逻辑页号时,就能很快地找到对 应的物理页号送入实主存地址寄存器,从而 做到虽采用虚拟存储器但访主存速度几乎没 有下降。

3.6.3 段式虚拟存储器
在段式虚拟存储系统中,段是按照程序 的逻辑结构划分的,各个段的长度因程序而 异。 虚拟地址由段号和段内地址组成,为了 把虚拟地址变换成实主存地址,需要一个段 表。段表也是一个段,可以存在外存中,但 一般是驻留在主存中 虚存地址的段表形式以及虚存地址向实 存地址的变换过程如下图所示。

长度

程序分段(外存) 段0 段1 段2 段3 段4 图3.44 段式虚拟存储器段表 段表(主存) 段号 段起址 装入位 段长 0 1000 1 1k 1 0 2 6120 1 3k 3 9192 1 1k 4 2024 1 2k

主存 段0 段4

1k 2k 3k 1k 2k

地址 1000 2023 2024 4071

未用 6120

段2 段3
未用 9191 9192 10215

段式虚拟存储器地址变换

3.6.4 段页式虚拟存储器
段页式虚拟存储器是段式虚拟存储器和 页式虚拟存储器的结合。 它把程序按逻辑单位分段以后,再把每 段分成固定大小的页。 程序对主存的调入调出是按页面进行的 ,但它又可以按段实现共享和保护,兼备页 式和段式的优点。 缺点是在映象过程中需要多次查表。

在段页式虚拟存储系统中,每道程序是通 过一个段表和一组页表来进行定位的。段表中 的每个表目对应一个段,每个表目有一个指向 该段的页表起始地址及该段的控制保护信息。 由页表指明该段各页在主存中的位置以及是否 已装入、已修改等状态信息。 如果有多个用户在机器上运行,多道程序 的每一道需要一个基号,由它指明该道程序的 段表起始地址。 虚拟地址格式如下:
基号 段号 页号 页内地址

【例6】 假设有三道程序(用户标志号为A, B,C),其基址寄存器内容分别为SA,SB, SC ,逻辑地址到物理地址的变换过程如下图 所示。在主存中,每道程序都有一张段表, A程序有4段,C程序有3段。每段应有一张页 表,段表的每行就表示相应页表的起始位置, 而页表内的每行即为相应的物理页号。请说 明虚实地址变换过程。

【解】 ① 根据基号C执行SC加1 (段号)操作,得到段 表相应行地址,其内容为页表的起始地址b。 ② 执行b+2 (页号),得到物理页号的地址, 其内容即为物理页10。 ③ 物理页号与页内地址拼接即得物理地址。 如计算机只有一个基址寄存器,基号可不要, 多道程序切换时,操作系统修改基址寄存器内 容。 可以看出,段页式虚拟存储系统由虚拟地址 向主存地址的变换至少需要查两次表。

3.6.5 替换算法
虚拟存储器中的页面替换策略和cache中 的行替换策略有很多相似之处,但有三点显 著不同: (1) 缺页至少要涉及一次磁盘存取,读取所 缺的页,缺页使系统蒙受的损失要比cache未 命中大得多。 (2) 页面替换是由操作系统软件实现的。 (3) 页面替换的选择余地很大,属于一个进 程的页面都可替换。

虚拟存储器中的替换策略一般采用LRU 算法、LFU算法、FIFO算法,或将两种算法 结合起来使用。 对于将被替换出去的页面,假如该页调 入主存后没有被修改,就不必进行处理,否 则就把该页重新写入外存,以保证外存中数 据的正确性。为此,在页表的每一行应设置 一修改位。

3.6.6 虚拟存储器实例
1. 奔腾PC机的虚地址模式 奔腾PC的存储管理部件MMU包括分段部件 SU和分页部件PU两部份,可允许SU,PU单独 工作或同时工作。 分段不分页模式: 虚拟地址由一个16位的 段参照和一个32位的偏移组成。分段部件SU 将二维的分段虚拟地址转换成一维的32位线性 地址。优点是无需访问页目录和页表,地址转 换速度快。对段提供的一些保护定义可以一直

分段分页模式:在分段基础上增加分页存储
管理的模式。即将SU部件转换后的32位线性 地址看成由页目录、页表、页内偏移三个字段 组成,再由PU部件完成两级页表的查找,将 其转换成32位物理地址。兼顾了分段和分页两

不分段分页模式:这种模式下SU不工作,
只是分页部件PU工作。程序也不提供段参照 ,寄存器提供的32位地址被看成是由页目录、 页表、页内偏移三个字段组成。由PU完成虚 拟地址到物理地址的转换。这种模式减少了虚 拟空间,但能提供保护机制,比分段模式具有

2. 保护模式的分页地址转换 奔腾机4MB分页方式地址转换如下图。 页面(页框)大小为4MB的分页方使用单级页 表,只进行一次主存访问,地址转换过程加 快了。在此方式下,32位线性地址分为高10 位的页面和低22位的页内偏移两个字段 。 页表项的I位指示页面大小,P位为出现 位,A位为访问过位,D位为修改过位。RW 位用于读/写控制,US位用于用户/监督控制 ,PCD位用于页cache禁止的控制,PWT位用 于页全写法的控制。

奔腾4MB分页方式地址变换

3.7 存储保护
当多个用户共享主存时,就有多个用户 和系统软件存于主存中,为使系统能正常工 作,应防止由于一个用户程序出错而破坏其 他用户的程序和系统软件,还要防止一个用 户程序不合法地访问不是分配给它的主存区 域。为此,系统应提供存储保护。通常采用 的方式是: 1 存储区域保护 2 访问方式保护

3.7.1 存储区域保护 对于不是虚拟存储器的主存系统可采用 界限寄存器方式。由系统软件经特权指令设 置上、下界寄存器,为每个程序划定存储区 域,禁止越界访问。界限寄存器方式只适用 于每个用户占用一个或几个连续的主存区域。 那么,在虚拟存储系统中,由于一个用 户程序的各页离散地分布于主存中,通常采 用页表保护、段表保护和键式保护方法。

1. 页表保护和段表保护 每个程序的段表和页表本身都有自己的 保护功能。每个程序的虚页号是固定的,经 过虚地址向实地址变换后的实存页号也就固 定了。那么不论虚地址如何出错,也只能影 响到相对的几个主存页面。不会侵犯其他程 序空间。段表和页表的保护功能相同,但段 表中除包括段表起点外,还包括段长。 段表保护方式如下图所示。

2. 键保护方式 这种方法是为主存的每一页配一个键, 称为存储键,每个用户的实存页面的键都相 同。为了打开这个锁,必须有钥匙,称为访问 键。访问键赋予每道程序,并保存在该道程 序的状态寄存器中。当数据要写入主存的某 一页时,访问键要与存储键相比较。若两键 相符,则允许访问该页,否则拒绝访问。 键保护方式演示如下图。

3. 环保护方式 环保护方式可以做到对正在执行的程序本 身的核心部分或关键部分进行保护。它是按系 统程序和用户程序的重要性及对整个系统的正 常运行的影响程度进行分层,每一层叫做一个 环。在现行程序运行前由操作系统定好程序各 页的环号,并置入页表中。然后把该道程序的 开始环号送入CPU的现行环号寄存器。程序可 以访问任何外层空间;访问内层空间则需由操 作系统的环控例行程序判断这个向内访问是否 合法。 环保护方式演示如下图。

3.7.2 访问方式保护 对主存信息的使用可以有三种方式:读、 写和执行。相应的访问方式保护就有R、W、 E三种方式形成的逻辑组合。这些访问方式保 护通常作为程序状态寄存器的保护位,并且 和区域保护结合起来实现。 表3.11 访问方式保护的逻 辑组合 逻辑组合 含义 逻辑组合 含义
R+W+E
R+W+E

不允许任何访问
可进行任何访问

(R+E)· W
(R+E)· W R· (W+E) R· (W+E)

只能写访问 不准写访问
只能读访问 不准读访问

(R+W)· E 只能读写,不可执行 (R+W)· E 只能执行,不可读写

本章小结
对存储器的要求是容量大、速度快、成本 低。为了解决了这三方面的矛盾,计算机采用 多级存储体系结构,即cache、主存和外存。 CPU能直接访问内存(cache、主存),但不能直 接访问外存。 存储器的技术指标有存储容量、存取时间、 广泛使用的SRAM和DRAM都是半导体随 机读写存储器,前者速度比后者快, 但集成度 不如后者高。二者的优点是体积小,可靠性高, 价格低廉,缺点是断电后不能保存信息。

只读存储器和闪速存储器正好弥补了 SRAM和DRAM的缺点,即使断电也仍然保 存原先写入的数据。特别是闪速存储器能提 供高性能、低功耗、高可靠性以及瞬时启动 能力,因而有可能使现有的存储器体系结构 发生重大变化。 双端口存储器和多模块交叉存储器属于 并行存储器。前者采用空间并行技术,后者 采用时间并行技术。 相联存储器不是按地址而是按内容访问 的存储器,在cache中用来存放行地址表,在 虚拟存储器中用来存放段表、页表和快表。 在这两种应用中,都需要快速查找。

cache是一种高速缓冲存储器,是为了解 决CPU和主存之间速度不匹配而采用的一项 重要的硬件技术,并且发展为多级cache体系, 指令cache cache分设体系 。要求 cache的命中率接*于1。 主存与cache的地址映射有全相联、直接、 组相联 三种方式。其中组相联方式是前二者 的折衷,适度兼顾了二者的优点又尽量避免 其缺点,从灵活性、命中率、硬件投资来说 较为理想,因而得到了普遍采用。

虚拟存储器指的是主存-外存层次,它给 用户提供了一个比实际主存空间大得多的虚 拟地址空间。因此虚拟存储器只是一个容量 非常大的存储器的逻辑模型,不是任何实际 的物理存储器。 按照主存-外存层次的信息传送单位不同, 虚拟存储器有页式、段式、段页式三类。当 多个用户共享主存时,系统应提供存储保护。 通常采用的方法是存储区域保护和访问方式 保护,并用硬件来实现。有些机器中提供特 权指令来实现某种保护。

作业: 第三章: 作业:3、6、8、 9、10、11、12 练*:1、2、4、5、7、 15、16




友情链接: