1
第 5章
存储系统
2
本章主要内容
微型机的存储系统、分类及其特点
半导体存储芯片的外部特性及其与系统
的连接
存储器扩展技术
高速缓存
3
5.1 概 述
内容:
微型机的存储系统
半导体存储器的基本概念
存储器的分类及其特点
两类半导体存储器的主要区别
4
微型机的存储系统
将两个或两个以上速度、容量和价格各不
相同的存储器用硬件、软件或软硬件相结
合的方法组织起来 这样就构成了计
算机的存储系统。
系统的存储速度接近最快的存储器,容量
接近最大的存储器。
5
微型机的存储系统
Cache存储系统
– 解决速度问题
虚拟存储系统
– 解决容量问题
高速缓冲存储器
主存储器
主存储器
磁盘存储器
6
存储器的层次结构
微机拥有不同类型的存储部件
由上至下容量越来越大,但速度越来越慢
寄存器堆
高速缓存
主存储器
联机外存储器
脱机外存储器





量速度
CPU内核
7
两大类 ——内存、外存
内存 ——存放当前运行的程序和数据。
– 特点, 快,容量小,随机存取,CPU可直接访问 。
– 通常由 半导体存储器 构成
– RAM,ROM
外存 ——存放非当前使用的程序和数据。
– 特点, 慢,容量大,顺序存取 /块存取 。 需调入内存后
CPU才能访问 。
– 通常由 磁、光存储器 构成,也可以由半导体存储器构成
– 磁盘、磁带, CD-ROM,DVD-ROM,固态盘
8
半导体存储器
由能够表示二进制数,0”和,1”的、
具有记忆功能的一些半导体器件组成。
如 触发器,MOS管的栅极电容等 。
能存放一位二进制数的器件称为一个
存储元。
若干存储元构成一个存储单元。
9
内存储器的分类
内存储器
随机存取存储器( RAM)
Random Access Memory
只读存储器( ROM)
Read Only Memory
10
随机存取存储器( RAM)
RAM
静态存储器( SRAM)
Static RAM
动态存储器( DRAM)
Dynamic RAM
11
只读存储器( ROM)
只读存储器
掩模 ROM
一次性可写 ROM
EPROM
EEPROM
12
存储器的主要技术指标
存储容量, 存储单元个数 M× 每单元位数 N
存取时间, 从启动读 (写 )操作到操作完成的时间
存取周期, 两次独立的存储器操作所需间隔的最小时间
平均故障间隔时间 MTBF( 可靠性 )
功耗,动态功耗、静态功耗
13
5.2 随机存取存储器
要求掌握:
SRAM与 DRAM的主要特点
几种常用存储器芯片及其与系统的连接
存储器扩展技术
14
一、静态存储器 SRAM
特点:
用双稳态触发器存储信息。
速度快( <5ns),不需刷新,外围电路比较简单,
但集成度低(存储容量小,约 1Mbit/片),功耗大。
在 PC机中,SRAM被广泛地用作高速缓冲存储器
Cache。
对容量为 M*N的 SRAM芯片,其地址线数 =㏒ 2M;
数据线数 =N。反之,若 SRAM芯片的地址线数为 K,
则可以推断其单元数为 2K个。
15
典型 SRAM芯片
CMOS RAM芯片 6264( 8K*8):
主要引脚功能
工作时序
与系统的连接使用
16
SRAM 6264芯片
6264外部引线图
逻辑符号,6264
D7-D0
A12-A0
OE
WE
CS1
CS2
17
6264芯片的主要引线
地址线,A0~ A12
数据线,D0~ D7
输出允许信号,OE
写允许信号,WE
选片信号,CS1,CS2
18
6264的工作过程
读操作
写操作
写操作的工作时序
19
6264芯片与系统的连接
D0~D7
A0
A12
??
?
WE
OE
CS1
CS2
??
?
A0
A12
MEMW
MEMR
译码
电路
高位地
址信号
D0~D7
? ?
?
? ?
?
20
译码电路
将输入的一组二进制编码变换为一个特定
的控制信号,即:
将输入的一组高位地址信号通过变换,产
生一个有效的控制信号,用于 选中 某一个
存储器芯片,从而确定该存储器芯片在内
存中的地址范围。
21
全地址译码
用全部的高位地址信号作为译码信号,使
得存储器芯片的每一个单元都占据一个唯
一的内存地址。
存储器
芯片



低位地址
高位地址



址 片选信号
22
全地址译码例
6264芯片的地址范围,F0000H~F1FFFH
111100000……00 ~ 111100011……11
A19
A18
A17
A16
A15
A14
A13
&
≥ 1
#CS1
A12

A0
D7

D0
高位地址
线全部参
加译码
6264A
12-A0
D7-D0
#OE
#WE
23
部分地址译码
用 部分高位地址 信号(而不是全部)作为
译码信号,使得被选中得存储器芯片占有
几组不同的地址范围。
下例使用高 5位地址作为译码信号,从而使
被选中芯片的每个单元都占有两个地址,
即这两个地址都指向同一个单元。
24
部分地址译码例
同一物理存储器占用两组地址:
F0000H~F1FFFH B0000H~B1FFFH
A18不参与译码
A19
A17
A16
A15
A14
A13
&
≥ 1

6264
CS1
25
应用举例
将 SRAM 6264芯片与系统连接,使其地址范
围为,38000H~39FFFH和 78000H~79FFFH。
选择使用 74LS138译码器构成译码电路
Y0#
G1 Y1#
G2A Y2#
G2 B Y3#
Y4#
A Y5#
B Y6#
C Y7#
片选信号输出
译码允许
信号
地址信

(接到不同的存储体上)
74LS138逻辑图:
26
74LS138的真值表:(注意:输出低电平有效)
可以看出,当译码允许信号有效时,Yi是输入 A,B,C的
函数,即 Y=f(A,B,C)
11111111X X X 其 他 值
011111111 1 1 1 0 0
101111111 1 0 1 0 0
110111111 0 1 1 0 0
111011111 0 0 1 0 0
111101110 1 1 1 0 0
111110110 1 0 1 0 0
111111010 0 1 1 0 0
111111100 0 0 1 0 0
Y7Y6Y5Y4Y3Y2Y1Y0C B AG1 G2A G2B
27
应用举例 (续 ):
D0~D7
A0
A12
??
?
WE
OE
CS1
CS2
??
?
A0
A12
MEMW
MEMR
D0~D7
G1
G2A
G2B
C
B
A
&
&
A19
A14A
13
A17A
16A
15
+5V
Y0
下图中 A18不参与译码,故
6264的地址范围为:
?38000H~39FFFH
?78000H~79FFFH
6
2
6
4
28
二、动态随机存储器 DRAM
特点:
– DRAM是靠 MOS电路中的栅极电容来存储信息的,由
于电容上的电荷会逐渐泄漏,需要定时充电以维持存
储内容不丢失(称为 动态刷新 ),所以动态 RAM需要
设置 刷新 电路,相应外围电路就较为复杂。
– 刷新定时间隔一般为几微秒~几毫秒
– DRAM的特点是集成度高(存储容量大,可达 1Gbit/片
以上),功耗低,但速度慢( 10ns左右),需要刷新。
– DRAM在微机中应用非常广泛,如微机中的内存条(主
存)、显卡上的显示存储器几乎都是用 DRAM制造的。
29
常见 DRAM的种类:
– SDRAM( Synchronous DRAM) ——它在 1个 CPU时钟周
期内可完成数据的访问和刷新,即可与 CPU的时钟同步工作。
SDRAM的工作频率目前最大可达 150MHz,存取时间约为 5~
10ns,最大数据率为 150MB/s,是当前微机中流行的标准内存类
型。
– RDRAM( Rambus DRAM) ——是由 Rambus公司所开发
的高速 DRAM。其最大数据率可达 1.6GB/s。
– DDR DRAM( Double Data Rate DRAM) ——是对
SDRAM的改进,它在时钟的上升沿和下降沿都可以传送数据,其
数据率可达 200-800 MB/s。主要应用在主板和高速显示卡上。
RAM的 3个特性:
1)可读可写,非破坏性读出,写入时覆盖原内容。
2)随机存取,存取任一单元所需的时间相同。
3)易失性(或挥发性)。当断电后,存储器中的内容立
即消失。
30
典型 DRAM芯片 2164A
2164A,64K× 1
采用 行地址 和 列地址 来确定一个单元;
行列地址 分时 传送,
共用一组地址线;
地址线的数量仅
为同等容量 SRAM
芯片的一半。



1
0
0
0
1 0 0 0
列地址
31
主要引线
RAS,行地址选通信号,用于锁存行地址;
CAS,列地址选通信号。
地址总线上先送上行地址,后送上列地址,它
们分别在 RAS和 CAS有效期间被锁存在地址锁存
器中。
DIN,数据输入
DOUT,数据输出
WE=0 数据写入
WE=1 数据读出WE,写允许信号
32
工作原理
三种操作:
– 数据读出
– 数据写入
– 刷新
参见工作时序图(教材 p208---p209)
33
刷新
将存放于每位中的信息读出再照原样写入
原单元的过程 ——刷新
刷新的时序图
34
2164A在系统中的连接
见教材 p210图 5-18
35
三、存储器扩展技术
位扩展 —— 扩展每个存储单元的位数
字扩展 —— 扩展存储单元的个数
字位扩展 —— 二者的综合
用多片存储芯片构成一个需要的内存空间,
它们在整个内存中占据不同的地址范围,任
一时刻仅有一片(或一组)被选中。
36
位扩展
存储器的存储容量等于:
单元数 × 每单元的位数
当构成内存的存储器芯片的字长小于内存
单元的字长时,就要进行位扩展,使每个
单元的字长满足要求。
字节数 字长
37
位扩展例
用 8片 2164A芯片构成 64KB存储器。
2164A,64K x 1,需 8片构成 64K x 8( 64KB)
LS138A8~A19
2164A 2164A 2164A
DB
AB
D0 D1 D7
A0~A7

译码输出
读写
信号
A0~A19
D0~D7
A0~A7 A0~A7
38
位扩展方法:
将每片的地址线、控制线并联,数据线分
别引出。
位扩展特点:
存储器的单元数不变,位数增加。
39
字扩展
地址空间的扩展。芯片每个单元中的字长
满足,但单元数不满足。
扩展原则:
每个芯片的地址线、数据线、控制线并联,
仅片选端分别引出,以实现每个芯片占据
不同的地址范围。
40
字扩展例
用两片 64K× 8位的 SRAM芯片构成容量为
128KB的存储器
41
字位扩展
根据内存容量及芯片容量确定所需存储芯
片数;
进行位扩展以满足字长要求;
进行字扩展以满足容量要求。
若已有存储芯片的容量为 L× K,要构成容
量为 M × N的存储器,需要的芯片数为:
( M / L) ×( N / K)
42
字位扩展例
用 4K× 1位的芯片组成 16KB的存储器。
扩成 4KB —— 8片
再扩成 16KB —— 4*8=32片
地址线需 14根( A0-A13),其中 12根
( A0-A11)用于片内寻址,2根( A12,
A13)用于片选译码。连接图。
注意:以上的例子中所需的地址线数并未从系统整体上考
虑。在实际系统中,总线中的地址线数往往要多于所需的
地址线数,这时除片内寻址的低位地址线 (即片内地址线 )
外,剩余的高位地址线一般都要用于片选译码。
43
8088系统中存储器的连接使用方法
存储器与 8088系统总线的连接的要点是:
– 存储器的地址范围?
根据要求的地址范围可确定用哪几根地址线进行片
选,哪几根地址线做片内寻址以及如何进行片选译
码。
– 系统总线上与存储器有关的信号线有哪些?
熟悉与存储器有关的总线信号和存储芯片引脚的功
能。
– 译码电路的构成(译码器的连接方法)
系统地址空间一般比存储芯片的容量大(即总线中
的地址线数多于存储芯片的地址线数),物理内存
实际只占用系统地址空间的一小块区域。把物理内
存分配到系统地址空间的哪一块区域,取决于如何
进行地址译码。
44
8088系统中存储器连接涉及到的总线信号包括:
– 地址线 A19-A0
– 数据线 D7-D0
– 存储器读信号 MEMR#
– 存储器写信号 MEMW#
需要考虑的存储芯片引脚
– 地址线 An-1-A0:接地址总线的 An-1-A0
– 数据线 D7-D0:接数据总线的 D7-D0
– 片选信号 CS#(CE#) (可能有多根 ):接地址译码器的片
选输出
– 输出允许 OE#(有时也称为读出允许 ),接 MEMR#
– 写入允许 WE#:接 MEMW#
45
*补充,8086的 16位存储器接口
数据总线为 16位,但存储器按字节进行编址
– 用两个 8位的存储体 (BANK)构成 16位
BANK1
奇数地址
BANK0
偶数地址
D15-D0
D7-D0 D15-D8
A19-A0
译码器控制信号
体选信号
和读写控制
如何产生?
如何连接?
46
*8086的 16位存储器接口
读写数据有以下几种情况:
– 读写从偶数地址开始的 16位的数据
– 读写从奇数地址开始的 16位的数据
– 读写从偶数地址开始的 8位的数据
– 读写从奇地址开始的 8位的数据
8086读写 16位数据的特点:
– 读 16位数据时会读两次,每次 8位。
读高字节时 BHE=0,A0=1;
读低字节时 BHE=1,A0=0
每次只使用数据线的一半,D15-D8 或 D7-D0
– 写 16位数据时一次写入。
BHE和 A0同时为 0
同时使用全部数据线 D15~ D0
47
*8086的 16位存储器接口
两种译码方法
– 独立的存储体译码器
每个存储体用一个译码器;
缺点:电路复杂,使用器件多。
– 独立的存储体写选通
译码器共用,但为每个存储体产生独立的写控制信号
– 但无需为每个存储体产生独立的读信号,因为 8086每次仅读
1字节。对于字,8086会连续读 2次。
电路简单,节省器件。
48
1)独立的存储体译码器
D15-D9
D8-D0
高位存储体
(奇数地址 )
低位存储体
(偶数地址 )
A16-A1 A15-A0
A15-A0
D7-D0
D7-D0
64KB× 8片
64KB× 8片
CS#Y0#
Y7#
Y0#
Y7#
C
B
A
A19
A18
A17
C
B
A
A19
A18
A17 CS#
G1
G2A#
G2B#
G1
G2A#
G2B#
OE#
WE#
OE#
WE#
MEMR#
MEMW#
BHE#
A0
Vcc
Vcc






线





MEMW#信号同时有效,但只有一个存储体被选中
读 16位数据
时每个体被
选中几次?
49
2)独立的存储体写选通
D15-D9
D8-D0
高位存储体
(奇数地址 )
低位存储体
(偶数地址 )
A16-A1 A15-A0
A15-A0
D7-D0
D7-D0
64KB× 8片
64KB× 8片
CS#
Y0#
Y7#
C
B
A
A19
A18
A17 CS#
G1
G2A#
G2B#
OE#
WE#
OE#
WE#
MEMR#
BHE#
A0
Vcc
GND
MEMW#
≥1
≥1
每个存储体用不同的读控制信号
读 16位数据
时每个体被
选中几次?
50
5.3 只读存储器( ROM)
掩模 ROM
一次性可写 ROM
可读写 ROM
分 类
EPROM( 紫外线擦除)
EEPROM( 电擦除)
51
一,EPROM
特点:
可多次编程写入;
掉电后内容不丢失;
内容的擦除需用紫外线擦除器。
52
EPROM 2764
8K× 8bit芯片,其引脚与 SRAM 6264完全
兼容
地址信号,A0 ~ A12
数据信号,D0 ~ D7
输出信号,OE
片选信号,CE
编程脉冲输入,PGM
53
2764的工作方式
数据读出
编程写入
擦除
标准编程方式
快速编程方式
编程写入的特点:
每出现一个编程负脉冲就写入一个字节数据
工作方式
54
二,EEPROM( E2PROM )
特点:
可在线编程写入;
掉电后内容不丢失;
电可擦除。
55
典型 E2PROM芯片 98C64A
8K× 8bit芯片
13根地址线( A0 ~ A12)
8位数据线( D0 ~ D7)
输出允许信号( OE)
写允许信号( WE)
选片信号( CE)
状态输出端( READY/BUSY)
56
工作方式
数据读出
编程写入
擦除
字节写入:每一次 BUSY正脉冲写
入一个字节
自动页写入:每一次 BUSY正脉写
入一页( 1~ 32字节)
字节擦除:一次擦除一个字节
片擦除:一次擦除整片
57
E2PROM的应用
可通过编写程序实现对芯片的读写,但
每写入一个字节都需判断 READY/BUSY
端的状态,仅当该端为高电平时才可写
入下一个字节。
58
四、闪速 E2PROM
特点:
通过向内部控制寄存器写入命令的方法来
控制芯片的工作方式,而非用引脚的信号
来控制芯片的工作。
应用
BIOS,便携式闪存硬盘
59
工作方式
数据读出
编程写入
擦 除
读单元内容
读内部状态寄存器内容
读芯片的厂家及器件标记
数据写入,写软件保护
字节擦除,块擦除,片擦除
擦除挂起
60
5.4 高速缓存( Cache)
了解:
Cache的基本概念;
基本工作原理;
命中率;
Cache的分级体系结构
61
1)为什么需要高速缓存?
CPU工作速度与内存工作速度不匹配
– 例如,800MHz的 PIII CPU的一条指令执行时
间约为 1.25ns,而 133MHz的 SDRAM存取时间
为 7.5ns,即 83%的时间 CPU都处于等待状态,
运行效率极低。
解决:
– CPU插入等待周期 ——降低了运行速度;
– 采用高速 RAM——成本太高;
– 在 CPU和 RAM之间插入高速缓存 ——成本上升
不多、但速度可大幅度提高。
62
2)工作原理
基于程序执行的两个特征:
– 程序访问的局部性:过程、循环、子程序。
– 数据存取的局部性:数据相对集中存储。
存储器的访问相对集中的特点使得我们可以
把频繁访问的指令、数据存放在速度非常高
(与 CPU速度相当)的 SRAM——高速缓存
CACHE中。需要时就可以快速地取出。
63
DB
CPU
Cache控制部件
Cache
RAM
AB
① 送主存地址
② 检索 (用主存地址作为关键字,查找
CAM)—前提:每次访问的主存地址
都保留在 CAM内 。
CAM—Content Access
Memory
③ 命中则发出读
Cache命令,从
Cache取数据
④ 不命中则发
出读 RAM命令,
从 RAM取数据
Cache的工作原理图示
64
取指令、数据时先到 CACHE中查找:
– 找到(称为命中) ——直接取出使用;
– 没找到 ——到 RAM中取,并同时存放到
CACHE中,以备下次使用。
只要命中率相当高,就可以大大提高 CPU
的运行效率,减少等待。现代计算机中
CACHE的命中率都在 90%以上。
命中率影响系统的平均存取速度
系统的平均存取速度 ≈
Cache存取速度 × 命中率 +RAM存取速度 × 不命中率
65
例如,RAM的存取时间为 8ns,CACHE的存
取时间为 1ns,CACHE的命中率为 90%。
则存储器整体访问时间由没有 CACHE的
8ns减少为:
1ns× 90% + 8ns× 10% = 1.7ns
速度提高了近 4倍。
在一定的范围内,Cache越大,命中率就越
高,但相应成本也相应提高
Cache与内存的空间比一般为 1?128
66
*Cache系统有三个需要解决的主要问题:
主存 —Cache地址变换
解决,把 Cache与主存都分成大小相同的页 ( 若主存容量为
2n,Cache容量为 2m,页的大小为 2p(即页内地址有 p
位),则主存的页号共有 (n-p)位,Cache页号共有 (m-p)
位) 这样,主存 — Cache地址变换,就是如何把主存页映
射到 Cache页上 ( 即只映射页号 )。
– 全相连映射 ——主存任意页可映射到 Cache的任意页。
这需要有一个很大的页号映射表(共有 2m-p项),放
在 CAM存储器中。昂贵,但冲突小。
– 直接映射 ——主存页号 B与 Cache页号 b满足关系,b=B
mod 2m-p
例如:主存 0,4,8,12,… 页映射到 Cache的 0页,主存 1,5,9、
13,… 映射到 Cache的 1页,依此类推。 不需要页号映射表,但冲突
概率高。
– 组相连映射 ——把页分组,然后结合上面两种方法:
组间直接映射,组内全映射。
67
不命中时如何替换 Cache内容
有以下几种替换算法:
– 随机替换
– 先进先出 FIFO
– 最近最少使用 LRU( Least Recently Used)
– 最久没有使用 LFU( Least Frequently Used)
Cache与主存的一致性
两种常用的更新算法:
– 写穿式 ( WT,Write Through) ——同时更新
– 回写式 ( WB,Write Back) ——仅当替换时才
更新主存
68
*Cache的读写操作
写操作
读操作 贯穿读出式
旁路读出式
写穿式
回写式
69
写穿式( Write Through)
从 CPU发出的写信号送 Cache的同时也写
入主存。
CPU
Cache
主 存
70
回写式( Write Back)
数据一般只写到 Cache,当 Cache中的数据
被再次更新时,才将原来的数据写入主存
相应页,并接受新的数据。
CPU Cache 主 存
更新写入
71
贯穿读出式
CPU Cache 主 存
CPU对主存的所有数据请求都首先送到
Cache,在 Cache中查找。 若 命中,则切
断 CPU对主存的请求,并将数据送出;如
果不命中,则将数据请求传给主存 。
72
旁路读出式
CPU向 Cache和主存同时发出 数据 请求。 如
果命中,则 Cache将数据送给 CPU,并同时
中断 CPU对主存的请求;若不命中,Cache
不做任何动作,由 CPU直接访问主存。
CPU
Cache
主 存
73
3) PC机中的 CACHE
一般有两级 CACHE(有的具有三级)
L1 CACHE——容量一般为 8KB~ 64KB
L2 CACHE——容量一般为 128KB~ 2MB
新型 CPU一般将这两级 CACHE都做在 CPU内核
中。而且运行速度与 CPU内核相同,使 CPU的整体
性能有了极大的提高。
指令 Cache和数据 Cache
各种 CPU的 Cache配置见教材 p229表 5-5。
74
IBM PC/XT的内存空间分配
00000H
9FFFFH
BFFFFH
FFFFFH
RAM区
640KB
保留区 128KB
ROM区 256KB
75
作业
P244
–5.3
–5.5
–5.7
–5.10
–5.11(注意地址范围是 F0000H~F1FFFH)