存储系统

Download Report

Transcript 存储系统

第三章
存储系统
1
§3.1
存储系统概述
一、存储器分类
1、按存储介质分类
示例
存储特征
半导体存储器
内存、Flash
易失性
磁性材料存储器
光介质存储器
磁盘、磁带
光盘
非易失性
2、按存取方式及功能分类
顺序存取
存储器(SAM)
记录块
随机存取
直接存取
存储器(RAM) 存储器(DAM)
编址单位
存储字
记录块
操作方式
存、取
可变(与访问地 固定(与访问 可变(与访问地
存取时间
址关系较大)
地址无关)
址关系较小)
只读存储器
(ROM)
同RAM/DAM
取
同RAM/DAM
2
3、按在计算机中的作用分类
主存储器
(MM)
直接与CPU交换
作用
信息的MEM
存储介质 MOS型半导体
存取方式 DRAM和ROM
辅助存储器
(AM)
主存的后援
MEM
磁/光介质
SAM/DAM
高速缓冲存储器
(Cache)
CPU-主存间的缓
冲MEM
MOS型半导体
SRAM
控制存储器
(CM)
CPU内部存放微
程序的MEM
MOS型半导体
ROM
3
二、存储器的主要性能指标
*容量(S):能存储的二进制信息总量,常以字节(B)为单位
*速度(B):常用存取时间或存取周期、带宽表示
存取时间(TA)—指MEM从收到命令到完成操作所需时间
存取周期(TM)—指连续访存的最小间隔时间,TM=TA+T恢复
地址和命令有效
MEM响应
TA
数据有效
地址和命令有效
MEM恢复
TM
MEM响应
TA
数据有效
MEM恢复
TM
带宽(BM)—指单位时间内MEM最多可读写的二进制位数,
常以bps为单位,BM=W/TM,W为数据宽度/次
*价格:常用总价格C或每位价格c表示,c=C/S
4
三、层次结构存储系统
1、层次结构的引入
*用户需求的矛盾:需求—大容量、高速度、低价格
矛盾—
?
?
*程序访问局部性规律:
程序执行时,访问指令和数据所呈现的相对簇聚特性
时间局部性—被访问过的信息,可能很快被再次访问
空间局部性—被访问信息的相邻信息,可能很快被访问
示例:for (i=0;i<n;i++) S=S+A[i];
*用户需求矛盾的解决方案:
近期常用数据—放在“前方”MEM(快而小)中
近期不用数据—放在“后方”MEM(慢而大)中
∑=高速度、大容量、低价格
5
2、层次结构的存储系统
(1)层次存储系统组成
*思想:①用多种类型MEM构成前方-后方的层次结构
SM1<<SM2<<…<<SMn
寄存器
CPU
M1
M2
教材勘误
BM1>>BM2>>…>>BMn
…
Mn
存储系统
②前方MEM中信息为后方MEM中信息的副本
③各层MEM之间信息传递是“透明”的
6
(2)常见的存储系统层次结构
围绕主存的层次结构一般为“Cache-主存-辅存”
Cache
主存
辅存
三种MEM构成的两个存储层次
*“Cache-主存”存储层次:
目标—解决主存速度问题(Cache的速度,主存的容量)
辅助硬件
CPU
主存
地址
Cache
主存
*“主存-辅存”存储层次:
目标—解决主存容量问题(主存的速度,辅存的容量)
辅助软硬件
CPU
主存
地址
主存
辅存
7
(3)层次存储系统的工作方式
*程序执行需求:准备执行的指令和数据存放在主存中;
按程序的逻辑顺序执行
*存储系统工作方式:
存储层次+面向软件管理(虚拟存储器)
产生硬件异常
存储管理
不成功
部件MMU
OS相关软件
成功
主存
地址
Cache辅 不命中
助硬件
主
Cache
CPU
程序
地址
地
址
存
命
中主存 地
址
Cache
主存
辅
存
地
址
辅存
8
§3.2
半导体RAM
(易失型)
半导体ROM
(永久型)
半导体存储器基础
双极型RAM(TTL、ECL)
MOS型RAM
静态RAM(SRAM)
动态RAM(DRAM)
MROM
PROM
EPROM
EEPROM(E2PROM)
FLASH
*静态RAM—用触发器存储信息,长时间不访问及信息读出后
信息值(状态)保持不变;
*动态RAM—用电容存储信息,长时间不访问及信息读出后信
息值(状态)被破坏,需及时恢复信息值(称为刷新及再生)
9
一、静态RAM(Static RAM,SRAM)
1、SRAM存储元的组成原理
*6管MOS静态存储元工作原理:
写入—①在W线上加正脉冲(时
字选择线W
VCC
长为写入延迟)→T5和T6导通;
D
D
②若写“0”,使D=V地、
T3
T4
D=V中→T2截止→T1导通;若写
T5 A
B
T6
“1”,使T1截止→T2导通
T1
T2
6管MOS型静态存储元电路
保持—使W=V地→T5和T6截止
→T1、T2状态保持不变
读出—①在W线上加正脉冲;②使D=D=V中→D或D产生压降
(“0”导致D电压下降)→差动放大器可检测出所存信息,T1、T2状
态保持不变(非破坏性读)
10
2、SRAM芯片的组成原理
(1)存储芯片基本组成
由存储阵列、地址译码器、I/O电路、控制电路等组成
0
1
译 … 驱
动
码
器 63 器
…
…
A11
X
A6
A7
64×64
存储阵列
…
数据D
输出驱动器
I/O电路
控制电路
Y译码器
片选CS
读/写WE
…
…
A0 A1 A5
*存储阵列:内部存储单元有一维和二维两种组织方式
正方形阵列
(信号延迟最小)
决定
地址译码方式
11
*地址译码器:有一维、二维两种译码方式
2×2M/2=2M/2+1根
译码器输出线数—2M根
常见译码方式—二维译码方式
存储元
存储元
…
…
…
驱
动
器
……
译
码
器
……
…
A11
X
A6
→同一列存储元共用位选择线
存储元
数据D
输出驱动器
I/O
电路
D
存储元
D
D
D
……
Y译码器
读 写
A0
…
A5
*驱动器:①X译码器输出需驱动同一行各存储元的字选线
├→设置驱动器增加驱动能力
②I/O电路输出需驱动总线信号
12
*I/O电路:根据内部读/写信号,检测/控制D及D线
D
差分读出放大器
写放大器
驱动器
数据D
读
存储元
(所选)
D
写
*片选与控制电路:
片选—MEM常由多个芯片组成,MEM读/写常针对某个芯片
A7
A6~A0
CS
0#芯片
(地址范围0~127)
CS
1#芯片
(地址范围128~255)
WE
D
控制电路—根据片选CS及WE信号
生成内部读/写信号
11
CS
&
写
WE
&
读
13
(2)存储器芯片相关参数与结构组织
*芯片相关参数:
存储阵列容量— 阵列容量=存储字数×存储字长
数据引脚数量— 引脚组织成双向时,引脚数=存储字长
引脚组织成单向时,引脚数=2*存储字长
地址引脚数量— 引脚数=log2存储字数,即
引脚数=log2(阵列容量/存储字长)
练习1—某SRAM芯片容量为4Kbit,数据引脚(双向)为8根,
地址引脚为多少根?若数据引脚改为32根,地址引脚为多少根?
练习2—某SRAM芯片数据引脚(单向)为8根、地址引脚亦为8
根,芯片存储容量为多少个字节?
14
11
*SRAM芯片结构组织: --以Intel 2114 SRAM芯片为例
参数—容量=1K×4b,数据引脚=4根(双向),地址引脚=10根
结构—①正方形存储阵列(64×64);②4套I/O电路;
③二维译码(log264=6、log2[64/4]=4)
A3
存储元
…
存储元
D
…
D
……
……
存储元
存储元
D D
D
I/O电路
…
…
…
D3
64行×64列
存储元
D D
存储元
…
D0
…
存储元
D
……
存储元
…
…
……
…
A8
行 Y0
译
码
器
Y63
I/O电路
写
&
CS
读
&
……
Y0
Y15
列译码器
A2 A1 A0 A9
WE
15
13
3、SRAM芯片的读写时序
*读周期时序: (存储器对外部信号的时序要求)
tA
tRC
tRC --CPU读周期时间
tA --CPU访问时间(读出时间)
tCO —SRAM读出时间
地址
WE
CS
tCO
I/O1~4
tCX
tOTD
数据出
tCX —SRAM存取时间
(CS有效→数据引脚输出稳定)
tOTD—SRAM恢复时间
(CS无效→数据引脚高阻)
SRAM—CS有效时开始读操作、CS无效时结束读操作
由地址信号或由操作命令获得
地址信号已稳定
CPU已读得数据
操作者— 先发地址信号、后发操作命令 tCO-tCX≥线路延迟
(tA-tCO≥tOTD、tRC-tA≥tOTD-Δ)
16
13
*写周期时序:
tWC
地址
WE
tAW
tWR
tW
CS
I/O1~4
tDH
tDW
数据入
tWC─CPU写周期时间
tW ─CPU写入时间
tWR—CPU写恢复时间
tAW—SRAM地址写入时间
tDW—SRAM数据写入时间
tDH—SRAM数据保持时间(关闭写)
SRAM—CS有效时开始写操作、CS无效时结束写操作
地址信号已稳定
操作者— 先发地址、后发命令
(tAW≥地址译码时长)
SRAM已完成数据写入
tW≥tDW
WE无效后数据保持≥tDH
17
二、动态存储器(Dynamic RAM,DRAM)
◇动态RAM目标:降低功耗、节约成本
1、动态RAM存储元工作原理
*3管MOS式动态存储元工作原理:
ED
Φ
预充电CD
读选择
&
字选
择线
写选择
读选择线
T1
T3
CS
&
T4
T2
写选择线
写数据线WD 读数据线RD
写入—①所写数据加到WD上
②打开T3→对CS充电/放电
保持—断开T3→CS保存信息(无放
电回路、会缓慢泄漏)
需定时对CS刷新←┘
读出—①在Φ上加正脉冲→对CD
预充电,②打开T2→读RD
上电压变化(非破坏性读)
刷新—先读出数据、再写入所读数据
18
10
*单管MOS式动态存储元工作原理:
写入—①所写数据加到D上
②打开T1→对CS充电/放电
保持—断开T1→信息存储在CS中(无放
电回路、会缓慢泄漏)
字选择线X
CS
T1
CD
数据线D
读出—①在D上加正脉冲→对CD预充电
②打开T1→读D上电压变化(破坏性读)
←CS被充电
③立即用所读数据对CS重新写入
←称为再生
刷新—步骤同读操作
*单管MOS式存储元与3管MOS式存储元的区别:
相同—均需定时(如2ms~3.3ms内)对各存储元刷新
不同—只需1个MOS管、1根数据线,读后需立即再生
19
2、DRAM芯片的组成原理
(1)3管MOS式DRAM芯片的组成
*基本结构:与SRAM类似,①设置刷新放大器、预充电电路;
②传送数据不采用差分方式;③增加刷新控制机构
X
A11
……
64×64
&
&
读 写
I/O电路
…
…
…
D
…
A6
译
码
器
&
&
……
WD
RD
刷新放大器
WD
CD
RD
CD
……
控制电路
Y译码器
CS WE REF
A5
…
A0
*芯片操作:读、写、刷新(新增)
20
18
11
*存储元刷新的实现:
使用刷新操作→要求所刷新存储元和I/O电路断开
列译码器输出全部无效
如何提高刷新的效率?
同一行中所有存储单元同时刷新!
称为行刷新
每列设置刷新放大器
*支持行刷新方式的芯片引脚组织:
方案①—地址引脚不变,增加REF引脚(刷新时列地址无用)
√方案②—地址引脚减半,设置行选择、列选择引脚
A11~A0
地址
A5~A0
CS
RAS
REF
CAS
WE
WE
方案①--地址引脚不变
行地址
列地址
可代替CS
方案②--地址引脚减半
21
(2)单管MOS式DRAM芯片的组成
可缩小芯片面积
*基本结构:通常采用地址分两次传送方式组织
增设①地址锁存器、时序控制电路,②再生电路
……
X
…
行时钟
……
…
A5’…A0’
D
…
行 A6
地
译
址
码
锁 A 器
存 11
器
64×64
……
读出再生 ……
放大器
D
读出再生
放大器
……
D
RAS
CAS
WE
I/O电路
写时钟
时序控制
电路
Y译码器
列时钟
A5 …
A0
列地址锁存器
*芯片操作:读、写、刷新(行刷新方式[无需列地址])
19
22
(3)DRAM芯片组成示例
*Intel 2116芯片:单管MOS存储元、地址分两次传送
参数—容量=16K×1b;地址引脚=14/2=7根;
数据引脚=2根(单向的DIN/DOUT、共1位宽度)
结构—2个64×128存储阵列,时钟发生器串联
A6’
~
A0’
锁 行 A13
存地
器 址 A12~A7
6:64行
译码器
…
锁 列 A6~A0
存地
器址
行时钟发生器
……
128个读出
再生放大器
7:128列译码器
数据输
入缓冲
DIN
64×128
存储阵列
数据输
出驱动
DOUT
……
6:64行
译码器
RAS
CAS
WE
64×128
存储阵列
列时钟发生器
写时钟发生器
23
*Intel 2164芯片:单管MOS型存储元、地址分两次传送
参数—64K×1b容量,2根数据(单向)、16/2=8根地址引脚
结构—4个128×128存储阵列;2套行、列译码器同时译码
锁行
存地
器址
…
RAS
CAS
WE
锁列
存地
器址
行时钟发生器
1/2行
译码器
128×128
存储阵列
128个读出
再生放大器
1/2列译码器
1/2列译码器
128个读出
再生放大器
128×128
存储阵列
128个读出
再生放大器
128×128
存储阵列
1/2行
译码器
列时钟发生器
4
选
1
I/O
A0’
…
A7’
A6’
128×128
存储阵列
128个读出
再生放大器
电
路
数据输
入缓冲
DIN
数据输
出锁存
DOUT
写时钟发生器
※说明—DRAM芯片默认采用单管MOS、地址引脚减半型芯片!
24
3、DRAM芯片的操作时序
*读周期时序:
tA
地址
行地址
tAH
tCRD
tCRD—CPU读周期时间
tA --CPU访问时间
tAH --地址锁存延迟
列地址
tAH
RAS
CAS
WE
tCAC
tRCL
I/O
tDOH
有效
tRCL –RAS与CAS信号延迟
tRAC—RAS有效至数据输出延迟
tCAC—CAS有效至数据输出延迟
tDOH—数据保持时间
tRAC
DRAM—RAS有效时开始操作、RAS无效时结束操作
先锁存行地址
CPU已读得数据
操作者— RAS先于CAS有效 WE在CAS有
tA-tRCL≥tCAC+线路延迟
(tRCL≥tAH)
效期间无效
25
*刷新周期时序:
与读周期类似,区别在于CAS在整个操作过程中无效
└→行刷新时不需要列地址
tA
地址
行地址
RAS
CAS
tRC
tCRF
tDOH
tCRF—刷新周期时间(同读操作)
tA --刷新读出时间(同读操作)
tDOH—刷新写入时间(同读操作)
tRC —RAS与CAS信号最大间隔
I/O
时钟发生器可检测t>tRC
26
23
4、DRAM芯片的刷新
*刷新周期:同一存储元连续两次刷新的最大间隔
*刷新方法:每个刷新周期内,循环进行所有行的行刷新
(1)DRAM芯片刷新方式
通常有集中式、分散式、异步式三种方式
间隔?
*集中式刷新:将所有行刷新集中在刷新周期的后部
读/写/空闲
刷新
内部序号
1
2
…
n
时长
地址行号
tC
tC
…
tC
tC
tC
X
Y
…
R
0
1 … m-1
n+1 n+2 … n+m
…
tC
tC—芯片的存取周期
m—行刷新的循环次数
n—刷新周期内可访存次数
刷新周期(如2ms)
设tC=0.5us、m=128次,则n=2000/0.5-128=3872次
特点—存在“死区”(不能进行读/写操作的时间段)
27
*分散式刷新:将行刷新分散在每个存取周期中
R/W
地址行号
R/W
X
REF
0 Y
tM
tR
R/W
REF
1
R/W
…
R
R/W
…
REF
m-1 A
B
…
…
tC
R/W
真实刷新
停止刷新
刷新周期
特点—避免了“死区”,增加了存取时间(1倍)
*异步式刷新:将行刷新均匀分布在刷新周期中
地址行号
R/W … R/W REF R/W … R/W REF
X … Y
0
R … S
1
tC
…
tC
15.5μs
tC
tC
…
tC
15.5μs
tC
…
…
R/W … R/W REF
A
B m-1
tC
…
tC
tC
15.5μs
刷新周期(如2ms)
设芯片需刷新128次,则每次刷新间隔2000/128=15.5μs
特点—“死区”可忽略,支持固有的存取周期
→最常用
28
(2)DRAM芯片刷新实现
按约定的刷新方式,由专用电路定时产生行刷新命令
*DRAM芯片的刷新电路:
产生行刷新地址
刷新地址计数器
CPU
③
地址
地址多
路开关
行/列地址
RAS
①
仲裁 ② 定时 CAS
刷新定时器
电路
发生器 WE
读/写
DRAM
芯片
固化了刷新方式
*刷新电路在计算机的位置:
通常独立于DRAM芯片/模块
→DRAM控制器(主存控制器)
29
5、MOS型SRAM与DRAM芯片比较
*DRAM芯片的优点:
①DRAM集成度远高于SRAM;
←常采用单管MOS存储元
②DRAM地址引脚是SRAM的一半;←常采用地址分两次传送方式
③DRAM功耗约为SRAM的1/4;
④DRAM成本远低于SRAM
*DRAM芯片的缺点:
DRAM速度远低于SRAM
←采用单管MOS存储元所致
←使用动态元件(电容)所致
*RAM芯片应用:
SRAM芯片—常用来构成高速度、小容量MEM,如Cache
DRAM芯片—常用来构成大容量MEM,如主存
作业一:P143—4、5、9、10
30
三、只读存储器(Read only Memory,R0M)
*ROM:信息注入MEM后不能再改变,它具有非易失性
通常需随机访问
有时希望可改变信息
*半导体ROM:非易失性的半导体MEM,如EPROM、FLASH等
*ROM芯片组成:与SRAM类似,
区别在于存储元的实现及操作
0
…
…
1、掩膜ROM(Masked ROM, MROM) A5
*特征:用户不可修改信息
A9
*存储元状态:用MOS管的有/无
行
地 1
址
译
码 31
器
VCC
…
…
…
…
…
…
表示 “1”/“0”
*数据读出:字选线加电压时,
位线电压为所选存储元的数据
0
1
D
31
列地址译码器
…
A … A
0
4
选通
31
2、可编程ROM(Programmable ROM, PROM)
*特征:用户可一次性修改信息(电写入)
*存储元状态:用二极管/熔丝的通/断表示“1”/“0”
字选择线X
VCC
字选择线X
VCC
VD
熔丝未断(“1”)
数
据
线
D
D
数
据
线
VD
熔丝已断(“0”)
*数据写入:字线X加电压,若写“0”— VD=V地→熔丝熔断,
若写“1”— VD=V中→熔丝不断
*数据读出:字线X加电压、VD=V中,检测VD变化可读出数据
32
3、可擦除可编程ROM(Erasable PROM, EPROM)
*特征:用户可多次修改信息(电写入、光擦除)
*存储元状态:常用FAMOS的浮栅Gf是/否带电荷表示“1”/“0”
源极S
浮栅Gf
漏极D
源极S
SiO2
P
N基体
P
P
浮栅Gf
D
漏极D
SiO2
----
++++
P
N基体
S
*数据读出:Gf带电荷时→FAMOS导通→VD=0V,否则VD=VCC
*写数据“1”(写入):
VPP=+25V、脉冲宽度约50ms
字选线X
数
据
线
数
据
线
(a)读出时
VPP
D
*写数据“0”(擦除):
字选线X
D
(PN结击穿→部分电子注入浮栅Gf)
VCC
(b)写“1”时
用紫外线照射10~20分钟→整个芯片一起擦除
(Gf上电子获得光子能量→穿过SiO2层→与基体电荷中和)
33
4、电可擦除可编程ROM(Electrically EPROM, E2PROM)
*特征:用户可多次修改信息(电写入、电擦除)
*存储元状态:常用Flotox的浮栅Gf是/否带电荷表示“1”/“0”
S
GC Gf
D
D
SiO2
P
N 基体
P
GC
S
*数据读出:Gf带电荷时→Flotox截止→VD不变,否则VD=0V
*数据写入:写“0”时Gf放电,写“1”时Gf吸收电荷,
写入时先自动进行擦除(擦除精度常为行)
+5V
字选线X
+0V
GC
(b)写“0”(写入)
位
线
+20V
字选线X
+0V
位
线
+20V
D
(a)数据读出
+20V
D
GC
D
+3V
位
线
+20V
字选线X
GC
(c)写“1”(擦除)
34
5、闪速存储器(FLASH)
*特征:用户可多次修改信息(电写入、电擦除)
*存储元状态:与叠栅EPROM类似,但氧化层更薄
S
GC
D
→速度更快
D
SiO2 GC
N
P基体
N
S
*数据读出:与E2PROM相同;
*数据写入与擦除:与E2PROM相同,擦除精度通常为块
+5V
字线X
位
线
(b)写“0”(写入)
0V
字线X
0V
位
线
VS=+12V
D
VS=0V
+6V
D
(a)读出状态
D
VS=0V
位
线
+12V
字线X
(c)写“1”(擦除)
35
§3.3 主存储器
一、主存储器的组成
*主存储器相关参数:
主存容量=主存单元长度×主存单元个数
计算机结构设计时确定的参数
软硬件遵守此约定
(如CPU引脚数量等)
(
主存地址位数 主存单元长度
An-1
A0 bw-1 … b0
…
最
0…00…0
大
主 最
实际配置的主存
大
存
(可降低成本)
地 寻
0…01…1
址
址
0…10…0
空
空
间 间
…
1…11…1
…
…
……
…
……
……
CPU
大小表示:
n位、或2n
)
36
*应用对主存储器的需求:
bx …
… ……
…
主 0…0
存
地
址
空
间 1…1
b0
需求—只读、非易失性
系统程序区(如机器启动时的BIOS)
用户程序区(如机器启动后的OS等)
需求—读写
*主存储器的组成:
①由ROM、RAM芯片组成的特定
存储字长的存储器;
②ROM空间大小固定、RAM空间
大小可选配(≤最大空间)
主存单元长度
(特定值)
ROM
静态程序区
(大小固定)
SRAM
或
DRAM
动态程序区
(大小可选)
CPU按此设置引脚
37
二、主存储器的逻辑设计
存储器容量=
存储字长×存储字数
=存储单元长度×存储单元个数
*存储器容量扩展方法:位扩展法、字扩展法、字位扩展法
*主存逻辑设计:使用ROM、SRAM或DRAM芯片进行容量扩展,
实现主存单元长度和主存单元个数
存储器容量扩展的特例
1、位扩展法
(又称并联扩展)
*目的:扩展存储器的存储字长
*芯片连接特征:
各芯片数据引脚连接不同,其余引脚连接相同
38
例1—用1K×1b SRAM芯片构成1K×4b存储模块
……
A9
A0
1K×1b …… 1K×1b
…
…
…
1K×1b
SRAM
1K×1b
SRAM
1K×1b
SRAM
…
…
1111111111
bit0
…
0000000000
0000000001
…
…
bit3
…
1K×1b
SRAM
D3~D0
WE
CS
……
例2—用1K×1b DRAM芯片构成1K×4b存储模块
…
…
…
1K×1b
DRAM
1K×1b
DRAM
1K×1b
DRAM
…
…
…
…
A4
A0
1K×1b
DRAM
D3~D0
WE
RAS
CAS
39
2、字扩展法
(又称串联扩展)
*目的:扩展存储器的存储字数
例3—用1K×4b SRAM芯片构成2K×4b存储模块
解:①芯片数量— 共需(2K÷1K)×(4b÷4b)=2片
②各芯片地址范围—存储模块地址为log2(2K)=11位,
各芯片片选有效逻辑—0#、1#芯片分别为A10=0、A10=1
b3
b0
…
1K×4b
SRAM(0#)
…
&
1K×4b
SRAM(1#)
…
1K×4b
(1#)
…
1K×4b
(0#)
A10
A9
A0
…
00000000000(000H)
…
…
01111111111(3FFH)
10000000000(400H)
…
…
11111111111(7FFH)
…
&
D3~D0
WE
CS
练习1—用1M×4b SRAM芯片构成4M×4b存储模块
40
A21
A20
CS
B
A
Y0
2:4
译码器
GE
Y3
1M×4(0#)
1M×4(1#)
1M×4(2#)
1M×4(3#)
例4—用1K×4b DRAM芯片构成4K×4b存储模块
解:芯片数量—共需(4K÷1K)×(4b÷4b)=4片
引脚组织—①地址扩展法: 行地址中无A5,行不通!
A5
A4~A0
D3~D0
WE
RAS
CAS
②独立控制法:根据各芯片地址范围及R/W
单元地址,使RASi有效,易实
第1次地址 A11A10A9A8A7A6 A5
第2次地址 A 5 A 4 A 3 A 2 A 1 A 0
A4现!
~A0
1K×4b
DRAM
1K×4b
DRAM
1K×4b
DRAM
1K×4b
DRAM
D3~D0
WE
RAS3~ RAS0
CAS
41
3、字位扩展法
*目的:同时扩展存储器的存储字长和存储字数
例5—用1K×4b SRAM芯片构成2K×8b存储模块
解:①芯片数量— 共需(2K÷1K)×(8b÷4b)=4片
②各芯片地址范围—存储模块地址为log2(2K)=11位
b7 ~ b4 b3 ~ b0
00000000000(000H)
1#
0#
…
01111111111(3FFH) 1K×4b 1K×4b
10000000000(400H)
2#
3#
…
11111111111(7FFH) 1K×4b 1K×4b
③连接图—
A10
A9~A0
D3~D0
D7~D4
CS
&
1K×4b
SRAM(0#)
WE
芯片
0#、1#
2#、3#
片选有效逻辑
A10=0
A10=1
&
1K×4b
SRAM(1#)
1K×4b
SRAM(2#)
1K×4b
SRAM(3#)
42
练习2—用1K×4b SRAM芯片构成4K×8b存储模块
例6—用1K×4b ROM、1K×8b SRAM芯片构成4K×8b存储模
块,其中前1KB空间为只读空间
解:①芯片数量— 共需ROM 2片、SRAM 3片
②各芯片地址范围—模块地址
为12位、芯片为10位
③连接图—
CS
B
A
A11
A10
A9~A0
D3~D0
D7~D4
00 XXXXXXXXXX ROM 1# ROM 0#
01 XXXXXXXXXX
SRAM 1#
SRAM 2#
10 XXXXXXXXXX
SRAM 3#
11 XXXXXXXXXX
GE Y0
2:4
译码器
1K×4b
ROM(0#)
1K×4b
ROM(1#)
1K×8b
SRAM(1#)
1K×8b
SRAM(2#)
1K×8b
SRAM(3#)
WE
43
三、主存储器与CPU的连接
1、CPU与外部的接口
*CPU访问外部的过程:按地址访问
CPU
①地址
①命令
←冯·诺依曼模型要求
主存
②状态
I/O设备
②数据
AB
DB
CB
*CPU与外部的接口:地址、数据、控制/状态4种信号
CPU(早期)
CPU(现代)
AX-1~A0 IO/ M RD WR READY DY-1~D0
AX-1~A0 IO/ M W/R ADS READY DY-1~D0
注:①地址引脚组织—反映最大寻址空间大小、与实际配置空间无关
②空闲状态与读/写状态的表示— 必须用≥2个信号表示
③访问主存或I/O设备时的区分— 常用控制信号IO/ M区分
44
2、主存储器与CPU的连接
*需进行信号及时序的转换:
可表示MEM操作、
I/O操作、无操作
按地址一次性传送
方式设置引脚
…
连接与控制
电路
CPU
可由SRAM或DRAM构成
主存
*SRAM主存与DRAM主存:
D7~D0
A18~A0
WE
CS
A18~A0
SRAM
模块
WE
A8~A0
DRAM
WE
控制器 RAS0
CS CAS1 RAS1 CAS0
D7~D0
A8~A0
D7~D0
A8~A0
WE
RAS
CAS
WE
RAS
CAS
0#
DRAM
模块
1#
DRAM
模块
△简化复杂度→重点讨论SRAM主存与CPU的连接
45
(1)数据线的连接
*要求:主存数据线数=CPU数据引脚数
CPU可直接访问主存
*连接: CPU数据引脚与主存数据线一一对应连接
(2)地址线的连接
*要求:配置的主存地址空间≤CPU的(主存)最大寻址空间
安排在空间低端
*连接:CPU地址引脚低位与主存地址线一一对应连接;
CPU地址引脚高位与主存片选线按一定逻辑连接
…
0 1……1
1 0……0
…
CPU的
(主存)
最大寻
址空间
A19A18 …A0 b7
0 0……0
1 1……1
… b0
512KB
SRAM
512KB
SRAM
D7~D0
配置的
主存地
址空间
D7~D0
WE
8088
CPU
A19
A18~A0
&
主
存
CS
A18~A0
46
(3)命令线的连接
*命令线功能:MEM操作—IO/M为低、RD WR=1
I/O操作—IO/M为高、RD WR=1
无操作 — RD WR=0
*连接: CPU读/写命令线与主存读/写线直接连接;
CPU其余命令线与主存片选线按MEM操作逻辑连接
D7~D0
WR
D7~D0
WE
8088
=1
RD
CPU IO/M
A19
A18~A0
&
&
CS
主
存
A18~A0
(4)片选线的连接
*有效逻辑:CPU对MEM操作、地址在配置主存地址范围内时
47
45
例1—某CPU有16根地址线、8根数据线,命令线有IO/M、RD、
WR;主存配置如右图所示,有2K×8b ROM及
0…0H
4K×4b SRAM芯片可用。⑴需ROM、RAM芯片各
多少块?⑵列出主存中各芯片片选有效逻辑;
⑶画出主存内部组成;⑷画出与CPU的连接图
b7 …
b0
ROM
4K地址
空间
RAM
12K地
址空间
解:⑴芯片数量—ROM=(4K÷2K)×(8b÷8b)=2块,RAM=6块
⑵各芯片的片选有效逻辑—主存地址共14位(A13~A0)
b7 ~ b4 b3 ~ b0
0# ROM
1# ROM
1#
0#
SRAM
SRAM
2#
3#
SRAM
SRAM
5#
4#
SRAM
SRAM
在主存中的地址范围
0K~2K-1
000X XXXXXXXXXX
2K~4K-1
001X XXXXXXXXXX
芯片片选有效逻辑
A13~A11=000
A13~A11=001
4K~8K-1
01XX XXXXXXXXXX
A13~A12=01
8K~12K-1
10XX XXXXXXXXXX
A13~A12=10
12K~16K-1 11XX XXXXXXXXXX
A13~A12=11
48
⑶主存内部连接—
CS
A13
A12
A11
A10~A0
D3~D0
D7~D4
GE
B
A
2:4译码器
Y0
&
&
0#
ROM
1#
ROM
Y1
0#
SRAM
1#
SRAM
Y2
2#
SRAM
3#
SRAM
Y3
4#
SRAM
5#
SRAM
WE
49
⑷主存与CPU的连接—主存空间(16K)放在CPU空间(64K)低端
IO/M
RD
WR
A15
A14
CPU A13
A12
A11
A10~A0
D3~D0
D7~D4
&
=1
CS
&
A13
A12
A11
A10~A0
D3~D0
D7~D4
WE
主
存
练习—16位CPU的主存按字编址、最大空间为2MB,欲配置
512KB主存(前128KB为只读空间),现有64K×8b ROM、64K×16b
SRAM、256K×16b SRAM芯片可用。
请画出主存内部芯片连接图,及主存与CPU的连接图
思考—若主存由DRAM芯片构成,则如何与CPU进行连接?
50
46
47
48
附:计算机中主存容量的可选配实现
(不作课程要求)
①主存控制器支持的主存模块的最大数量固定
└→即内存条 └→即主板上的BANK插槽数
D31~D0
A31~A0
CPU
主
存
控
制
器
RAS0
CAS0
RAS1
CAS1
WE
系
统
管
理
总
线
0# BANK
(主存模块)
1# BANK
SMB
IO/M
RD
WR
A15~A0
(主存模块)
②各主存模块的接口统一、容量可变
└→不同时期流行规格不同,常见168线DIMM
51
③系统启动时,检测内存条的容量、分配内存条的地址范围
硬件支持—内存条均包含SPD芯片,并与SMB连接;
串行的存在检测芯片←┘
└→系统管理总线
检测实现—启动时,BIOS通过SMB读取所有BANK的容量;
地址分配—BIOS按BANK顺序分配各内存条的地址范围
例:(设CPU为16位地址线、8位数据线)
内存条
主存控制器
BANK
插槽 容量 地址引脚 地址空间分配
RAS有效逻辑
CPU地址A15~A14=00
BANK0 16KB
8根
0K~16K-1
BANK1
CPU地址A15~A14=01
BANK2 16KB
8根
16K~32K-1
BANK3
④主存控制器实现内存条选择和信号转换
52
三、提高访存速度的措施
*CPU的访存特征:一次访存常为多个存储单元,
多次访存的地址常为连续的
程序访问局部性
*提高访存速度的方法:减少TM或平均TM、增加W
带宽B=W/TM
按最小长度编址
1、多模块存储器
--多体存储器
*多体MEM编址方式:
M3
12
13
14
15
M2
8
9
10
11
单元地址:
体号
2位
M1
4
5
6
7
M0
0
1
2
3
体内地址
N位
顺序编址(高位交叉)方式
M3
3
7
11
15
M2
2
6
10
14
M1
M0
1
5
9
13
0
4
8
12
体内地址
N位
体号
2位
交叉编址(低位交叉)方式
*多体MEM工作方式:串行方式、并行方式、交叉方式
53
(1)串行工作方式
--适用于顺序编址方式
同一时刻只有一个存储体工作
→W’=w、TM’=TM
*特点:访存性能无任何提高,便于扩展MEM容量
(2)并行工作方式
--适用于交叉编址方式
同一时刻所有存储体可同时工作
→W’=nw、TM’=TM
通过BE3~BE0选择
w
D7~D0
M3 WE
A9~A0
BE3
&
w
D7~D0
M2 WE
A9~A0
BE2
&
w
D7~D0
M1 WE
A9~A0
BE1
&
w
D7~D0
M0 WE
WR
数据(4w)
A11~A2
BE0
体选择
&
A9~A0
*特点:√一次访问多个存储字,×多次访存地址连续
54
*多体并行MEM与CPU的连接:
CPU引脚设置— 数据线数=主存字长×存储体数,
体选择信号表示起始体号及信息长度
A31~A2
BE3~BE0
Intel D31~D0
80486
CPU
起始体号及信息长度
读
写
0000
(体M0)4B
1100
(体M0)2B
4B
0011
(体M2)2B
1110/1101/1011/0111
(体Mi)1B
BE#值(负逻辑)
ADS
M/IO
W/R
连接—信号转换时需作特殊处理
D31~D0
A31~A2
BE3~BE0
Intel
80486
CPU
ADS
M/IO
W/R
A15~A0
主
存
控
制
器
RAS0
CAS0
BE3~BE0
RAS1
CAS1
WE
列地址最低2位为零
0# BANK
1# BANK
55
(3)交叉工作方式
--适用于交叉编址方式
存控部件使各存储体流水工作
→W’=w、TM’=1/nTM
4×BM
A11~A0
w
M0体
WR
M1体
存储器控制部件
w
D7~D0
w
D7~D0
w
D7~D0
w
D7~D0
~ M3 WE
A2 A9~A0
M2 WE
M1 WE
M0 WE
A9~A0
A9~A0
A9~A0
A11
M2体
M3体
TM/2
TM
2TM
访存时自动启动各体
*特点:×一次访问多个存储字,√多次访存地址连续
◇多模块存储器应用:
多体并行MEM应用更广泛,
多体并行MEM+多体交叉MEM效果更佳
56
54
t
2、高性能存储器
(1)EDO DRAM(Extended Data Output DRAM)
*提高性能思路:同时读出并缓冲一行信息,减小平均TM
*实现原理:用SRAM保存上次读操作的一整行信息,当前读操
作的行地址若与上次读操作相同,则直接从SRAM中取出信息
CAS
列地址锁存器
列译码器
512×4b SRAM
CA10~CA2
(最后读出行)
11位比较器
A10~A0
行地址锁存器
RAS
REF
读出放大和写选择
最后读出
行地址锁存器
RA10~RA0
行地址及控制
地址A
数据A
行
译
码
器
I/O控制
和
数据锁存
D3~D0
WE
CE
DRAM阵列
2048×512×4
地址A+1 数据A+1 地址A+3 数据A+3 …
57
(2)SDRAM(Synchronous DRAM)
*提高性能思路:采用同步工作方式,减小TM及平均TM
定时+计数可实现成组传送
操作期间CPU无须等待
*猝发传送(成组传送)模式:
MEM从所接收地址开始,连续读/写多个存储字(内部计数器
产生各存储字地址),减少了多个地址连续的数据传送的平均TM
CLK
地址线
数据线
A1
A2
D1
A3
D2
CLK
地址线
数据线
常规传送 ∑TM=n×(T地址+T数据)
A1
D1
D2
D3
D4
猝发传送 ∑TM=T首址+n×T数据
*实现原理:
①基于CLK进行信号锁存及I/O
58
CLK
CE
WE
RAS
CAS
控制
逻辑
B体
DRAM
(1M×8)
读放和I/O门
工作方式REG
A10~A0
行
译
码
器
成组传送
计数器
刷新计数器
读放和I/O门
行多
路器
②支持成组传送方式
数据输出
缓冲器
D7~D0
列译码器
列地址锁存器
行地址锁存器
A/B体:同
时实现操
作与刷新
行
译
码
器
A体
DRAM
(1M×8)
数据输入
缓冲器
用特殊命令设置
需有CE
猝发长度—由工作方式REG确定
常规传送表示—猝发长度=1的成组传送
操作步骤—a)设置猝发长度、b)首地址及操作命令
与上次相同时无需设置
59
(3)DDR SDRAM(Double Data Rate SDRAM)
*提高性能思路:使用多模块并行技术,减小平均TM
*实现原理:两个存储体同时工作,CLK上升沿和下降沿均I/O
核心CLK
100MHz
存储体
I/O CLK
100MHz
总线CLK
100MHz
I/O
缓冲
W
W
SDRAM
*DDR2 SDRAM:
由4个存储体组成,
与DDR SDRAM原理基本相同
◇多模块MEM为MEM级优化技术
高性能MEM为MEM内优化技术
核心CLK
100MHz
存储体
I/O CLK
100MHz
总线CLK
100MHz
I/O
缓冲
W
W
W
存储体
DDR SDRAM
核心CLK
100MHz
存储体
W
存储体
W
存储体
W
I/O CLK
200MHz
总线CLK
200MHz
I/O
缓冲
W
W
存储体
DDR2 SDRAM
60
3、双端口存储器
--同时支持两个操作
*结构:2套译码+I/O+读写电路,1个存储阵列+判断逻辑电路
D7L~D0L
CSL
WEL
列选择
I/O电路
I/O电路
A3L~A0L
2K×8
SRAM阵列
判断逻辑电路
BUSYL
CSR
WER
行
选
择
……
……
A10L~A4L
行
选
择
列选择
D7R~D0R
A10R~A4R
A3R~A0R
BUSYR
存储元连接—2个独立的行选MOS管、数据线及列选MOS管
*冲突判断:同时对同一存储单元操作时冲突,某个BUSY有效
*应用:Cache目录表等
作业二:P143—7、8、11、12、14
61
§3.4
高速缓冲存储器
一、Cache的基本原理
*Cache的功能:是主存的快速缓冲器
存储阵列 (SRAM)
主存地址
CPU
阵列地址
控制器
数据为主存中数据的拷贝
主存地址 主存
*Cache的性能:
命中率(H)—HC=NC/(NC+NM)
NC、NM为CPU访存操作在Cache、主存中的命中次数
=T
+T
Cache
mem
√平均访问时间—理论TA=HCTCache+(1-HC)Tmem’
实际TA=T命中+(1-HC)T缺失=TCache+(1-HC)Tmem
62
1、Cache的存储空间管理
(1)Cache-主存的信息交换单位
*目标:尽量地减小平均访问时间TA
*减小TA的方法分析:
①提高HC—利用程序访问局部性
相邻信息均在Cache中
②减小TMem—优化∑TMem=n×(TM地址+TM数据)
猝发传送
∑TMem=TM首地址+n×TM数据
*Cache-主存的信息交换单位:字块(又称数据块或块)
确定块大小方法—HC较高时的n,使(∑TMem)/n≈TCache
块大小—通常为8个字左右
63
(2)Cache的存储空间管理
*Cache存储阵列的编址单位:与主存相同(CPU所需,假设为字)
*Cache-主存间的信息交换管理:交换单位为块
①主存与Cache均划分成若干大小相同的块
Cache空间
0
有效位 标记位
01
*i
0
2b-1
…
…
…
…
块0
主存空间
2b-1
…
…
…
…
*
…
…
…
0
块0
0
…
块2c-1
0
…
…
2b-1
2b-1
Cache
地址
c位
Cache块号
b位
块内字号
主存
地址
m位
主存块号
②Cache用标志标识所存放的是哪个主存块
用有效位标识是否空闲(有/无数据)
62
块2m-1
b位
块内字号
64
*Cache信息的组织:
--国内教材讲法
①Cache由存储阵列、目录表组成
有效位
标记位
状态位
有效位
标记位
状态位
…
…
标记位
状态位
第0块
数据块(字0~字2b-1)
…
…
有效位
数据块(字0~字2b-1)
数据块(字0~字2b-1)
第2c-1块
②需进行Cache内字编址 (假设主存按字编址)
Cache
地址
c位
Cache块号
b位
块内字号
操作针对某个块的某个字进行
65
*Cache信息的组织:
--国外教材讲法(较流行)
①Cache是高速缓存行的数组,每行可存放一个数据块
第0行
标记位
状态位
数据块(字0~字2b-1)
有效位
标记位
状态位
数据块(字0~字2b-1)
…
…
…
…
第2c-1行
有效位
有效位
标记位
状态位
数据块(字0~字2b-1)
②需进行Cache内行编址、数据块内字编址
操作只针对某个字进行(当前行中)
Cache
地址
c位
Cache块号
b位
块内字号
Cache行地址
块内字地址
c位
Cache行号
b位
块内字号
两种组织方式比较—功能相同,性能、成本有所不同
66
2、Cache的基本工作原理
*完成访问过程: ①地址变换,②访问数据,③保持一致性
接收CPU的主存地址
查找相关的行
N
命中
Y
访问(R/W)行中数据
写策略
替换算法
映射规则
N
有空闲行i
Y
找出被替换行i
腾空行i中数据
CPU操作=W
Y
数据写回主存
调入目标块(到行i)
缺失处理
通知CPU操作完成
*相关技术:映射规则、替换算法、写策略
*实现要求:全部工作均由硬件完成(对程序员透明)!
67
62
3、Cache的结构与组成
主存
地址
命令
CPU
数据
(字/次)
命令
存储体
(SRAM) Cache
控制器
地址映射及
地址 变换机构
数据(块/次)
System Bus
替换
机构
主存
(DRAM)
MUX
主存地址
命令
*存储体:由SRAM构成,支持猝发传送模式
*地址映射及变换机构:由行标记、比较器等组成
地址映射机构—确定查找哪些行 ←映射规则影响索引位组成
地址变换机构—比较行中标记,获得目标行
命中时:当前行为目标行
←┤
不命中时:由缺失处理产生目标行←┘
68
64
主存地址
标记(i)
有效位 标记位 状态位
0
a
s3
行0
…
1
i
s0
行j
…
b
s1
行2c-1 1
=
≠
比较器
&
索引(j) 块内地址(t)
数据块
…
…
…
…
命中
译码器
≥1
缺失
*替换机构:由行状态、状态更新及行选择部件等组成
操作时—更新相关行的状态
缺失时—比较相关行的状态,选择被替换的行
*控制器:由时序部件、控制信号形成部件等组成
功能—产生Cache工作过程所需的各种时序及控制信号
69
67
二、Cache的相关技术
1、地址映射及变换
*功能目标:某主存块可存放到Cache的哪些行中?
*性能指标:块冲突率(调入块时)、地址变换的速度与成本
└→≠命中率H、但对H有很大影响
(1)直接地址映射及变换
*映射规则:主存块i可映射到Cache的行j=(i mod G)中
Cache空间
行0 标记 数据块
行1
…
行G-1
主存空间
主存块号
块0
标记
Cache行号
主存
…
区0
区号r 区内块号j 块内地址t
地址
块G-1
块0
直接
Cache
…
区1
行号j
块内地址t
地址
块G-1
…
标记组成— 主存区号
块0
…
区M/G-1
查找区域— 一行
块G-1
70
*地址变换:
比较Cache相应行的标记,命中时该行即为目标行
└→与主存地址中区内块号对应
主存块号
主存地址
行0
有效位
0
行j
1
行2c-1
1
&
区号r
标记位
a
…
r
…
b
= 比较器
区内块号j 块内地址t
数据块
…
…
…
…
命中
译码器
缺失
*特征:映射规则—块冲突率最高
地址变换—速度最快、成本最低
71
例1:CPU的最大主存容量为1MB、主存按字节编址,块大小
16B,Cache容量为8KB。采用直接映射方式时,⑴主存地址如何
划分(含参数)?⑵Cache的标记位长度?⑶CPU访存地址为36454H
时,则可能命中的Cache行号?命中时目标行的有效位、标记位?
解:⑴Cache行数=8KB/16B=512行、行号log2512=9位,
主存地址log2(1MB/1B)=20位,其中块内地址为4位
直接映射
20-9-4位=
7位
区号
9位
区内块号
主存地址划分
4位
块内地址
9位
行号
块内地址
Cache地址
⑵Cache的标记位中为主存区号,标记位长度= 7 位
⑶主存地址=( 0011 0110 0100 0101 0100)2,
可能命中的Cache行号=0 0100 0101B=045H,
命中时目标行的有效位=1、标记位=0011 011B=1BH
72
70
(2)全相联地址映射及变换
*映射规则:主存块i可映射到Cache的任意行中
Cache空间
行0 标记
主存空间
块0
数据块
…
…
行j
Cache
地址
…
块i
b位
块内地址t
直接
行号j
块内地址t
标记组成— 主存块号(m位)
查找区域— 所有行
…
行2c-1
m位
主存块号i
主存
地址
块2m-1
*地址变换:比较所有行的标记,命中行即为目标行
主存块号
块内地址
行0
有效位 标记位
行2c-1
…
数据块
有效位 标记位
数据块
…
=
&
≥1
译码器
…
=
&
比较器
译码器
…
命中
比较器
73
70
71
*特征:映射规则—块冲突率最低
地址变换—速度最慢、或成本最高
例2:CPU的(主存)最大寻址空间为1M、主存按字节编址,块
大小16B,Cache容量为8KB。采用全相联映射方式时,⑴主存地
址如何划分(含参数)?⑵Cache的标记位长度?⑶CPU访问36454H
主存单元时,则命中时目标行的有效位、标记位?
解:⑴主存地址log2(1M)=20位,其中块内地址为4位
主存地址划分:
16位
主存块号
4位
块内地址
⑵Cache的标记位中为主存块号,标记位长度=16位
⑶主存地址=( 0011 0110 0100 0101 0100)2,
命中时目标行的有效位=1、标记位=3645H
74
72
(3)组相联地址映射及变换
*映射规则:将Cache的行分组、每个组有n个行,主存块i可
映像到Cache的组j(j=i mod G/n)的任意行中
Cache空间
行0
数据块
…
行n-1
…
块G/n-1
…
行n-1
Cache
地址
块0
主存块号
标记
Cache组号
群号r
群内块号g 块内地址t
直接
组号g
组内行号s
块内地址t
…
主存
地址
群1
…
组G/n-1
群0
块G/n-1
块0
…
行0
块0
…
组0
标记
主存空间
n路组相联
群M/(G/n)-1
块G/n-1
标记组成— 主存群号
查找区域— 组内所有行
75
73
*地址变换:
比较相应组内所有行的标记,命中行即为目标行
└→与主存地址中群内块号对应
主存块号
主存地址
群号r
行0
有效位 标记位
组0
1
组g
组G/n-1
=
&
≥1
…
行n-1
有效位 标记位
数据块
…
p
…
…
…
…
比较器
译码器
…
1
=
&
数据块
…
r
…
…
比较器
译码器
…
…
命中
群内块号g 块内地址t
*特征:映射规则—块冲突率较低
(全相联<x<直接)
地址变换—速度最快、成本较低
71
76
例3:CPU的最大主存容量1MB、主存按字节编址,块大小16B,
Cache容量8KB。采用4路组相联映射方式时,⑴主存地址如何划
分(含参数)?⑵Cache的标记位长度?⑶CPU访存地址为36454H时,
则可能命中的Cache行号?命中时目标行的标记位?
解:⑴主存地址log2(1MB/1B)=20位,其中块内地址4位,
Cache行数=512行、行号=9位,组内行号log24=2位,
20-7-4位=
9位
群号
组相联映射
7位
群内块号
主存地址划分
4位
块内地址
7位
组号
2位
组内行号
块内地址
Cache地址
⑵ Cache的标记位中为群号,标记位长度= 9 位
⑶主存地址=( 0011 0110 0100 0101 0100)2,
可能命中的Cache行号=100 0101**B=114H~117H行
命中时目标行的标记位=0011 0110 0B=06CH
77
75
例4:CPU的最大主存容量16MB、主存按字节编址,块大小
32B,Cache容量为8KB。采用4路组相联映射方式时,⑴主存地址
如何划分(含参数)? ⑵设Cache初态为空,CPU从0#主存单元起
连续读出200B数据(1B/次),此时的Cache命中率? ⑶若Cache速
度是主存的5倍,相对于不使用Cache时,小题⑵中的CPU访存速
度提高多少倍?
解:⑴Cache行数8KB/32B=256行,组号log2(256/4)=6位,
主存地址划分为:
主存
地址
13位
6位
5位
群号
群内块号
块内地址
⑵连续200B数据存放在连续的200/32=7个主存块中,
∵7<26=64,∴7个主存块调入到Cache连续7个组中,
此时的Cache命中率=(200-7)/200=96.5%
⑶访存速度提高=TM/(0.2TM+0.035*TM)≈4.26
78
62
2、替换算法
映射规则有关
*功能目标:侯选区域无空闲行时,如何选择 被替换的块?
*性能指标:对命中率H的影响程度、算法的实现开销
*常见替换算法:
RAND算法—随机确定的块作为被替换块
└→整个Cache需1个随机数发生器 →H是随机的
FIFO算法—最早调入的块作为被替换块 ┌→H是随机的
CNT位数=log2(侯选行数)
更新次序≠访问次序
每行需1个计数器CNT,块调入时 更新各块次序
CNT值最大的块
调入行CNT←0
其余行CNT←CNT+1(饱和运算)
适合组相联映射方式
79
67
LRU算法—近期最少使用的块作为被替换块
访
问
局
部
性
访问行CNT←0
CNT值最大的块 其余行CNT←CNT+1(饱和)
每行需1个计数器CNT,块访问时 更新各块次序
将来≈近期
访问次序=更新次序
(H与CNT位数有关)
H随侯选块数增加而提高
适合组相联映射方式
各块次序:即CNT值,通常用行的状态位表示
有效 标记 状态
第i组
LRU
行0
数据
有效 标记 状态
…
数据
LRU
行n-1
80
例5:全相联Cache容量为4个块、采用LRU替换算法,CPU按
下列块地址流访存时,分别求CPU每个块只访问1次时的命中率,
及每个块连续访问4次时的命中率H
CNT=3、V=0、TAG=*
块地址流
块
状
态
初态
2
11
2
9
7
6
3
9
6
3
块0
3
0 2 1 2 0 2 1 2 2 2 3 2 0 3 1 3 2 3 0 3
块1
3
3
0 11 1 11 2 11 3 11 0 6 1 6 2 6 0 6 1 6
块2
3
3
3
3
0 9 1 9 2 9 3 9 0 9 1 9 2 9
块3
3
3
3
3
3
操作 第1次
状态 2~4次
0 7 1 7 2 7 3 7 3 7 3 7
调入 调入 命中 调入 调入 替换 替换 命中 命中 命中
命中 命中 命中 命中 命中 命中 命中 命中 命中 命中
只访问1次/块时,H=(10*1-6*1)/(10*1)=40%;
连续访问4次/块时,H=(10*4-6*1)/(10*4)=85%
81
3、写策略
--又称更新策略
*功能目标:对于CPU所写的数据,Cache何时写到主存?
*性能指标:对TA的影响程度 [TA=TCache+(1-H)TMem]
*写命中处理方法:写策略通常以此命名
全写法(写穿/写直达)—数据写入Cache,同时写入主存
写回法—数据写入Cache,块被替换时才写入主存块
CPU 操 作
写i
Cache动作
写i
主 存动作
写i(字)
读j
读k
读j
时间
全写法:TA写命中=TMem(字)
写i
读j …
写i
读j … 换i(缺失)
…
读k
读k
写i(块) 读k(块)
写回法:TA写命中=TCache(字)
写一次法—首次写采用全写法,其余次写采用写回法
82
67
时间
*写不命中处理方法:
不按写分配法—数据直接写主存、目标块不调入Cache
TA写不命中=TMem(字)
按写分配法—目标块调入Cache、再采用某命中处理方法
TA写不命中≥TMem(块)+TCache(字)
可能有替换
※读不命中处理方法—先调入目标块、再处理读命中
*写命中/写不命中的匹配方法—
全写法与不按写分配法配对 ←减小不必要开销
写回法与按写分配法配对
写i
写j
CPU 操 作
Cache动作
写i
主 存动作
写i(字) 写j(字)
空
←粒度大小一致
读k
写i
读k
写i
t
写j
读k
写j
读j(块)
读k
t
83
67
*全写法(+不按写分配法)的工作过程:
接收CPU的主存地址
查找相关的行
N
命中
Y
访问(R/W)行中数据
N
读缺失时
CPU操作=写
Y
CPU操作=写
Y
数据写回主存
通知CPU操作完成
N
Y
有空闲行i
N
找出被替换行i
调入目标块(到行i)
84
*写回法(+按写分配法)的工作过程:
接收CPU的主存地址
查找相关的行
N
命中
Y
访问(R/W)行中数据
有空闲行i
Y
N
找出被替换行i
N
行i被修改
Y
块i写回主存
通知CPU操作完成
调入目标块(到行i)
每
行
需
设
置
“
脏
位
”
表
示
状
态
△常见应用—写回法写策略(可降低TA、减少Bus使用频率)
85
83
三、Cache的改进
1、新的Cache结构与技术
TA=T命中+FT失效,F=1-H,T命中=T查表+TCache(字),T失效≈TMem(块)
(1)请求字处理技术
--优化T失效技术
*方案1:尽早重启—
按序调入块内各字,请求字到达时立即送给CPU
CPU
R15#
WAIT
15#
R15# 15#
Cache R00# 00#~14# 15# 16#~31#
主 存
00#~14# 15# 16#~31#
尽早重启方案
R15# 15# R00# 00#~14# R16# 16#~31#
t
15#
00#~14#
16#~31#
请求字优先方案
*方案2:请求字优先— (块很大时才采用)
先调入请求字,并立即送给CPU;再调入块内其它字
86
68
t
(2)多级Cache结构
--优化T命中及T失效技术
*方案:将Cache扩展为多级Cache的层次结构(SL1$<<SL2$)
CPU
Cache
主存
CPU
L1
L2
Cache Cache
主存
*性能分析:
单级Cache—TA=TCache命中+F·TMem,F=1-H
二级Cache—TA=TL1$命中+FL1$·TL2$命中+FL1$·FL2$·TMem
程序测试结果—
①F≈FL1$·FL2$,多级Cache对失效率影响很小
②TL1命中+FL1·TL2命中<TCache命中,多级Cache可减少T命中
87
(3)双独立总线(DIB)结构
--优化T命中及T失效技术
*贯穿式Cache:Cache不命中时才访问主存
*方案:CPU并行访问Cache和主存 →层次结构产生“短路”
└→Cache命中时,通知主存放弃
旁侧式Cache—并行访问时Cache与主存共用同一总线
DIB式Cache—并行访问时Cache与主存使用不同总线
Cache阵列
CPU
控制器
BIU
CPU Bus
Cache阵列
控制器
Cache命中?
DRAM
阵列
Cache阵列
BIU
控制器
I/O
接口
主存
控制器
Look-through式Cache
T命中=TCache (CPU Bus)
T失效>TMem (MEM Bus)
DRAM
阵列
Cache
命中?
CPU
后端总线
BIU
(MEM Bus)前端总线
MEM Bus
MEM Bus
主存
控制器
CPU
I/O
接口
Look-aside式Cache
主存
控制器
DRAM
阵列
I/O
接口
DIB式Cache
×
T命中=TCache(MEM Bus) √ T命中=TCache(CPU Bus)
√
T失效=TMem (MEM Bus) √ T失效=TMem (MEM Bus)
88
68
(4)哈佛结构
--并行存储器技术
*指令流水线需求:同时访问指令和数据
段
写结果WB
执行EX
取操作数OF
译码ID
取指IF
同时访问
I1
I1
I2
I1
I2
I3
I1
I2
I3
I4
I1
I2
I3
I4
I5
I2
I3
I4
I5
拍
*方案:将连接CPU的Cache分为指令Cache与数据Cache
CPU
I-Cache
D-Cache
L2 Cache
主存
哈佛大学提出(以此命名)
作业三:P144—17~21
89
2、Pentium的Cache结构
*CPU参数:32位字长、2路超标量,主存按字节编址、≤4GB
*Cache结构:采用贯穿式 2级Cache, (PⅡ/Ⅲ为DIB结构)
L1级Cache采用哈佛结构,
L2级Cache在CPU外部
(PⅡ起均在CPU内部)
CPU核心
指令缓冲器 REGs、ALU等
256b
32b 32b
L1 I-Cache
L1 D-Cache
(8KB)
(8KB)
64b
64b
总线接口单元BIU
L2 Cache (256KB/512KB)
32b 系统总线
*Cache参数:
容量—L1级各8KB,L2级可选择
块大小—均为32B (即8字)
映射规则—均为2路组相联
替换算法—均为LRU算法
写策略—L1-I$无须写,
L1-D$写一次法,
L2$写回法
90
*Cache组成:
--以L1 D-Cache为例
地址映射—共(8KB/32B)/2=128组,组号为7位
标记组成: 主存地址
组号 标记 状态
a
11
0
b
00
1
数据块
块数据
块数据
标记 状态
c
00
d
10
数据块
块数据
块数据
…
…
块数据
Cache组号 块内地址
…
…
10
行0
LRU位
1
0
5位
…
…
x
标记
7位
…
…
127
20位
1
y
11
行1
块数据
替换算法—每组设置一个LRU位
←每行一位的优化[值互斥]
写策略—每行设置一个脏位、一个有效位
状态=有效位+脏位,0*--无效、10—有效未改、11—有效已改
思考—CPU访存地址为44444FE3H时,上图Cache的动作?
91
75
80
85
§3.5
虚拟存储器
一、虚拟存储器概述
*机器语言程序(简称程序)组成:
程序由多个逻辑上独立的段构成,段长≤限定值;
程序的逻辑地址由段号及段内地址组成
a.dsw
文件头信息
a1 Code Seg
a1 Data Seg
m
0
i
0
i
n
逻辑
地址
…
a2 Code Seg
0
1
段(某代码段)
…
//a2.cpp
void f21()
{ //…
}
void f22()
{ //…
}
…
//a1.cpp
#include a2.h
int i,j;
void f11()
{ //…
}
main()
{ //…
}
a.exe
段 段内
号 地址 程序空间
0
0
段号
定长
段(某数据段)
段内地址
定长
92
*程序执行需求:
①程序预先存放在主存中(设首指令的主存地址=xx)
②CPU用主存地址、按程序逻辑顺序执行程序各指令
指令主存地址=xx+程序逻辑地址
程序空间>主存空间?
应用程序采用程序覆盖技术
来解决
*程序员对计算机系统的希望:
①系统“主存”空间—
程序执行时,“主存”空间≥程序空间
②系统“主存”速度—
接近物理主存的存取速度
操作系统程序采用程序
覆盖技术来解决
93
1、虚拟存储器概念
*定义:程序执行时,地址空间=程序地址空间的“存储器”
程序逻辑地址
虚拟存储器
CPU
*术语:虚拟地址(虚地址)—程序的逻辑地址
物理地址(实地址)—CPU访存时的主存地址
虚拟地址空间—程序逻辑地址构成的空间
*组成:由主存及辅存构成、按程序逻辑地址访问的存储层次
辅助软硬件
CPU
程序逻
辑地址
虚存空间=程序空间所需
主存
程序执行所需
虚拟存储器
辅存
程序存储所需
94
2、虚拟存储器的工作原理
*地址空间种类:
虚存空间
主存空间
程序文件
辅存空间
*工作原理:地址变换、访问实现、一致性保持
虚拟
地址
命令
数据
辅助软硬件
虚存-主存
地址映像及变换
成功时
失败时
虚存-辅存
地址映像及变换
主存存储管理
主存
失败时
系统异常
成功时
辅存
虚拟
存储器
*虚拟存储器实质:是面向程序的存储器模型! ←对OS的支持
即面向程序的主存-辅存层次管理机构!
95
3、虚拟存储器的组织
*虚存(辅存)-主存信息交换单位:程序段或信息页(稍后讨论)
*虚存-主存间管理:有地址变换、有数据交换(变换失败时调页)
映射规则— 全相联方式
←减少冲突概率[辅存特慢]
映射表组织— 索引表方式
映射表组织 表项行数
目录表方式 S主存/S交换
索引表方式 S虚存/S交换
查表行数
所有行
1行
存放位置
主存中
写 策 略—写回法
←减少写次数[辅存特慢]
替换算法—伪LRU算法
←LRU位在主存(映射表)中
*虚存-辅存间管理:有地址变换、无数据交换
地址变换映射表—由文件目录表形成、索引表方式
96
二、虚拟存储器的存储管理
1、虚拟存储器的管理方式
*虚存(辅存)-主存信息交换单位:
有程序段(大小可变)、信息页(大小固定)2种
└→类似于块,页大小为KB级
*虚存空间管理方式: (又称为虚存管理)
①段式管理—
面向程序的虚存管理
以程序段为交换单位的虚存-主存管理方式
②页式管理—
面向硬件的虚存管理
以信息页为交换单位的虚储-主存管理方式
③段页式管理— 面向程序及硬件的虚存管理
以信息页为单位的段式+页式的虚存-主存管理方式
97
63
(1)段式存储管理
*管理方法:虚存空间按程序模块化结构划分成若干程序段,
主存空间以程序段为单位分配给虚存使用
管理表格—段表(行数=程序的段数,行数≤2段号位数)
段长 程序逻辑空间
1K
段0
4K
段1
2K
段2
地址 主存物理空间
0
1K
4K
段0
段2
6K
段表
段号 装入位 段起始地址 段长
0
1
0K
1K
0
4K
1
1
4K
2K
2
*虚-实地址变换方法:一次查表
段表
基址
+
段号 装入位 段首址 段长
0
…
…
…
i
1
xx
…
…
…
段表(主存中)
虚地址
段号
段首址
实地址
段内地址
+
物理地址
98
96
(2)页式存储管理
*管理方法:虚存空间及主存空间按信息页划分成若干逻辑页
和物理页(页框),主存空间以信息页为单位分配给虚存使用
管理表格—页表(行数=程序的逻辑页数,行数≤2逻辑页号位数)
逻辑页号 程序逻辑空间
物理页号 主存物理空间
0
1
2
3
0
1
2
3
4
页表
逻辑页号 装入位 物理页号
1
2
0
1
1
1
2
1
4
3
0
*虚-实地址变换方法:一次查表
页表
基址
+
逻辑页号 装入位
0
…
i
1
…
物理页号
…
xx
…
页表(主存中)
虚地址
逻辑页号
页内地址
实地址 物理页号 页内地址
99
(3)段页式存储管理
*管理方法:虚存空间先分段、再分页,主存空间只分页,主
存空间以页为单位分配给程序用
管理表格—一个段表、一组页表
*虚-实地址变换方法:两次查表
段表
基址
装入位 页表基址
+
…
…
1
yy
…
…
虚地址 段号 逻辑页号 页内地址
…
段表(主存中)
装入位 物理页号
+
…
…
1
xx
…
…
装入位 物理页号
…
…
页表(主存中)
实地址 物理页号 页内地址
100
2、虚拟存储器的种类
通常按虚存管理方式分类
*段式虚拟存储器:
采用段式虚存管理方式
信息交换单位为段,用一个段表管理
特点—便于程序共享与保护,主存利用率不高(碎片)
*页式虚拟存储器:
采用页式虚存管理方式
信息交换单位为页,用一个页表管理
└→S页表>S页时,页表需分为两级
特点—主存利用率较高,不利于程序共享与保护(段边界)
*段页式虚拟存储器: 采用段页式虚存管理方式
信息交换单位为页,用一个段表及一组页表管理
特点—同时具有段式及页式的优点,地址变换需2次查表
101
98
99
三、虚拟存储器的实现
*页式虚拟存储器完成访问过程:
接收CPU的虚存地址
查找虚存-主存管理表
N
已调进
Y
虚存-主存地址变换
访问主存
有空闲页框i
Y
N
查找虚存-辅存管理表
找出被替换页i
页i被改过
Y
N
虚存-辅存地址变换
调进目标页(到页框i)
页i写回虚(辅)存
通知CPU操作完成
*虚拟存储器完成访问的性能: 相对于主存,降低1倍以上!
管理表存放在主存中,地址变换需≥1次访存
102
95
1、虚存-主存地址变换的优化
*优化思路:利用访问局部性,地址变换尽量不访问主存
访问同一页数据←→访问同一表项
*优化方法:CPU中设置小容量缓冲器TLB,存放近期常用管理
表项,地址变换时优先访问TLB
TLB被称为快表
*TLB组成:快表是慢表的子集
行数—几十行 (管理表访问局部性>>程序访问局部性)
管理—组相联/全相联映射、LRU替换算法、写回法写策略
组织—管理信息+慢表项信息
有效 标记 LRU 脏 实页号
0组
…
G/n-1组
行0
(类似于块目录及块数据)
有效 标记 LRU 脏 实页号
…
…
行n-1
103
*地址变换: 并行查 快表及慢表,快表命中时中止查慢表
└──┴→TLB(Translation lookaside Buffer)
虚页号
标记s
TLB组号g 页内地址t
虚地址
=?
=?
…
组g 1 r
…
…
s
… 1 …
m
快表(CPU中)
页表
基址
+
k
中止
查慢表
装入位 实页号
…
1
k
慢表(主存中)
实地址
物理页号
页内地址t
注:①查快表—同时比较组内各行;
②查慢表—(a)CPU中求表项地址,(b)访存取表项内容,(c)比较;
③中止查慢表—中止查慢表的步骤(b)(c),快表命中时不访问主存
104
*TLB组成示例:
ITLB(128行)
L1 I-Cache(32KB、8路)
MEM
160bit
指令预取单元
uCode
ROM
预取Buffer/预译码
BIU
译码器0 译码器1 译码器2 译码器3
1uop
4uop
1uop
1uop
共享的
L2 Cache
uop Buffer(>7行)
4uop
(4MB、16路)
REG分配表RAT
4uop
再定序缓冲器ROB(96项)
4uop
RRF
4uop
256bit
保留站RS(32行)
Port0
64b
ALU
128b 128b
FADD SSE
Port1
ALU 128b 128b
Shift FMUL SSE
Port2
64b
128b
ALU/Br SSE
Port5 Port4 Port3
Store Store Load
Data Addr Addr
128bit
DTLB(256行)
MOB
128bit
L1 D-Cache(32KB、8路)
Core 2双核CPU的内部结构
105
2、页式虚拟存储器工作全过程
辅存地址 磁盘机号 柱面号 磁头号 块号
成功
访问
请求
虚存-辅存地址变换
虚拟地址
逻辑页号
虚存-主存
地址变换 中
止
(查TLB)
成功
失败
失败
CPU核心
系统异常
辅
存
实
块
号
页内地址
虚存-主存
地址变换
(查慢表)
成功
失败
缺
页
异
常
主存
未满
主存地址 物理页号 页内地址
找空
闲页
虚存信息
慢表(虚-主)
当前程序PCB
主存
已满
替换
算法
缺页异常程序
文件目录表
(文件-辅存)
物理页号
主存
被替换页已改
I/O通道
调入页
辅存
106
102
104
主
存
虚-辅映射表
文件内容
访问
完成
CPU
快表TLB
辅
存
3、虚拟存储器的基本组成
*结构:MMU为VM的辅助硬件、OS实现辅助软件功能
程序地址
Cache
缺页异常
CPU
IO
BIU
Core
MMU
主存地址
桥
主存
I/O地址
辅存
注:TLB为MMU的部件
*MMU:实现虚-实地址变换,缺页异常时OS实现变换准备
作业一:P143—4、5、9、10
作业二:P143—7、8、11、12、14
作业三:P144—17~21
作业四:P144—22、24
107
8