第9章存储层次 - 同济大学软件学院

Download Report

Transcript 第9章存储层次 - 同济大学软件学院

第九章
存储层次
9.1
存储器的层次结构
9.2
Cache存储器
9.3
虚拟存储器
9.4
基本Cache和虚拟存储器的扩展
9.5
实例:Pentium/Windows个人计算机
上的内存管理
同济大学 软件学院
1
9.1 存储器的层次结构
图9.1
一般的存储器层次
物理内存:由动态RAM组成。
Cache存储器:由静态RAM构成,比DRAM快得多,但也
昂贵的多。Cache是物理内存的部分副本。
虚拟存储器:空间比物理内存大得多的逻辑空间。
2
9.2
Cache存储器
目标:弥补主存速度的不足
9.2.1 相联存储器
◆ 一般存储器
接收一个地址,访问该地址中的数据。
◆ 相联存储器:按内容访问的存储器。
并行搜索所有单元,标记那些与特定数据匹
配的单元,然后连续读出匹配的数据值。
3
1. 相联存储器的内部组织结构
4
2. 读数据
CPU必须给出两个值:
◆ 第一个值:要被匹配的数据值(参数或数据)
◆ 第二个值:哪些位需要检查(屏蔽位或关键位)
如果满足如下的公式,则匹配就会发生
 15 '

'
 (k j  ( D j  M i , j ) )   Vi  1
 j 0

5
例如(参考图9.2):
屏蔽寄存器K 
数据寄存器D 
数 据 位M 
执行
执行
执行
1111
1010
1010
0000
1111
1111
0000
XXXX
1101
XXXX
XXXX
1111
0000
XXXX
0000
XXXX
XXXX
1111
0000
XXXX
0111
XXXX
XXXX
1111
DM
( D  M )'
(k '  ( D  M )'
6
3. 将数据写回相联存储器
CPU把数据送到数据寄存器并发出写信号。相联
存储器检查所有单元的有效位,并找到有效位为0的
一个单元,如果找到,把数据存到这个单元,同时将
有效位设为1。如果没有找到,必须采用替换算法清
除一个单元来保存数据。
7
常见的替换算法
• FIFO
• LRU
• RANDOM
9.2.2 相联映象的Cache存储器
8
64K
8位内存
64K  2
16
9
◆ 作用于数据行或数据块的相联存储器
10
9.2.3 直接映象的Cache存储器
一种利用标准的SRAM、廉价的Cache映射方案。
11
◆ 索引
Cache地址的低位,用来选择Cache的一个特定单元。
◆ 标识
原始地址中不是索引的那些高位。
设M=2m,则当表示为二进制数时,j 实际
上就是i 的低m 位:
i:
j
m位
i:主存地址
j:Cache地址
12
◆ Cache容量: 1K
13
◆ 相对简单的CPU中,块大小为4字节的直接映像Cache
14
9.2.4 组相联映像的cache存储器
15
◆ 考察大小为1k的2路组相联cache
组数
 该cache有1k个数据入口,每个单元2个数据值,因此有512个单元
 用9个地址位选择cache单元,剩下的7位说明标识值
 计数值用来纪录数据什么时候被访问过了
16
◆ 相对简单CPU中具有4字节数据行的2路组相联cache
17
9.2.5 在cache中替换数据
问题的引出:
当cache已满时,又有新数据要调入cache ,需
将哪个数据移出cache。
1. FIFO 先进先出原则
2. LRU 近期最少使用原则
3. 随机策略
18
例:在一个4路组相联cache单元中应用LRU策略
1. Cache单元的当前状态
T D C V T D C V T D C V T D C V
C c 2 1 B b 1 1 A a 0 1 - - - 0
2. CPU访问D
C c
3
1
B b
2
1
A a
1
1
D d
0
1
B b
3
1
A a
2
1
D d
1
1
B b
3
1
A a
0
1
D d
2
1
3. CPU访问E
E e
0
1
4. CPU访问A
E e
1
1
19
9.2.6 写数据到cache

写直达法
每次信息从CPU写入cache单元中时,也要
写回相应的物理内存单元中

回写法
写入cache中的值并不总是被写回物理内
存。仅在数据被移出cache时写回物理内存。
20
处理写失效问题

按写分配法
把单元装入cache,然后使用写直达法或
写回法把数据写到cache

不按写分配法
直接更新物理内存中的值,而不把值写回
Cache。
21
9.2.7 cache的性能
1. 评判性能的标准
◆ 命中率与失效率
Cache命中率:CPU访问Cache时,在Cache中找到
数据的概率。
Cache失效率:CPU访问Cache时,在Cache中找不
到数据的概率。
◆ 平均访问时间
Tm=h Tc + (1-h) Tp
22
表9.1
h
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Tm(单位ns)
60
55
50
45
40
35
30
25
20
15
10
Tc = 10ns
Tp = 60ns
结论:增加命中率
能够减少平均访问
时间
23
2. 如何计算命中率和平均访问时间?
例:CPU访问下列顺序单元:
每一个值的下标是由物理内存地址的低3位来描述的。
A0 B0 C2 A0 D1 B0 E4 F5 A0 C2 D1 B0 G3 C2 H7 I6 A0 B0
现在我们确定在三种不同cache配置下的命中率
和平均访问时间。
假设:
Tc=10ns
Tp=60ns
24
◆ 8字节相联cache
初始化为空,使用FIFO的替换策略。
访问: 18次
命中率:h=0.389
命中:7次
平均访问时间:Tm=40.56ns
25
◆ 直接映射cache
Data
A
B
C
A
D
B
E
F
A
C
D
B
G
C
H
I
A
B
0
A
B
B
A
A
B
B
B
A
A
A
B
B
B
B
B
A
B
D
D
D
D
D
D
D
D
D
D
D
D
D
D
C
C
C
C
C
C
C
C
C
C
C
C
C
C
G
G
G
G
G
G
C1
A2
C
C
C3
H4
E
E5
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
|
|
|
H
H
H
6
7
H
Hit?
命中率:h=0.167
√
√
√
平均访问时间:Tm=50.67ns
26
◆ 8字节的2路组相联cache
Cache使用LRU替换策略。
命中率:h = 0.389
平均访问时间:Tm = 40.56ns
27
考虑这个同样的系统。
有2字节的数据行
组成相关行的数据对;
A和J;B和D;C和G;E和F;I和H
使用相同的替换策略
(相联cache采用FIFO,组相联采用LRU)
相同的访问时间(Tc=10ns,Tp=60ns)
28
Dat
a
A
B
C
A
D
B
E
F
A
C
D
B
G
C
H
I
A
B
A
A
A
A
A
A
A
A
A
A
A
A
A
A
|
|
|
|
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J
H
H
H
H
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
A
A
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
J
J
H
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
B
E
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
D
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
√
√
√
√
√
√
√
C
Hit?
√
√
√
相联cache:命中率h=0.611
√
平均访问时间Tm=29.44ns
29
Data
A
B
C
A
D
B
E
F
A
C
D
B
G
C
H
I
A
B
0
A
B
B
A
B
B
B
B
A
A
B
B
B
B
B
B
A
B
C1
J
D
D
J
D
D
D
D
J
J
D
D
D
D
D
D
J
D
A2
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C3
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
H4
E
E
E
E
E
E
E
E
E
E
E
E
E5
F
F
F
F
F
F
F
F
F
F
F
F
|
|
|
H
H
H
6
7
Hit?
H
√
√
直接映射cache:h=0.389
√
√
√
√
√
Tm=40.56ns
30
9.3 虚拟存储器
交换磁
盘
 存储管理单元
交换文
件
在物理内存和较慢的存储设备间移动数据
 虚拟存储器的主要实现方法:分页和分段
31
9.3.1 分页
页面:在分页技术中,整个逻辑地址空
间被划分为连续的块叫做页面
页面的特点:
1. 每个页尺寸相同
2. 页面不可重叠,每个逻辑地址确切地
属于某个页面
32
3. 一个页面或者包含程序指令或者
包含数据,不能同时包含两者
4. 可能导致内部碎片问题
内部碎片:假设MMU实现的页式
存储器中每个页面大小为4K,一
个4K+1大小的程序需要MMU分
配两个存储器页面,尽管它的第
二个页面只用了4K单元的一个单
元,这就是所谓的内存碎片
33
图9.10 相对简单CPU一种可能的内存配置
它具有64k的逻辑地址空间,16k
的物理内存,页面大小4k
34
分页系统必须解决的问题:
1. 何时将某页移入内存?
2. CPU如何在物理内存找到数据,尤
其逻辑地址和物理地址不一至的情
况下?
3. 当所有页框都装有页面,而CPU需
要访问的数据不在这些页面怎么办?
35
存储管理单元处理上述所有问题
 完成逻辑地址到物理地址的转换
 产生缺页故障,将数据从页面装入到物理
内存
 产生请求页,把新的请求页移入到物理内
存
36
图9.11 存储器层次结构中的MMU配置
37
在处理器需要访问数据,MMU将数
据从逻辑地址装入物理地址的整个处
理过程中,CPU没有访问物理单元的
任何信息
例:指令 LDAC 4324H如何理解?
答案:
1. 把数据从逻辑地址4234H装入累加器
2. 将逻辑单元4234H的数据装入累加器,
此数据实际存储在物理单元3234H中
系统更倾向解释成1
38
页表的概念
MMU用页表来跟踪哪一页存储在哪个帧中
页表的组成(如图9.12):
1. 帧指示域(frame)
2. 有效位(valid)
3. 计数值(count,有些页表不需要)
4. 脏位(dirty)
39
 相对简单CPU的
页表,有16K的
物理内存,页面
大小为4K。
 页表包含了16个
单元,每一单元
对应逻辑地址空
间的一个页面,
它包含一个2bit
的域,表明了该
逻辑页存储在哪
一个页框中
 每一单元还包含
一个有效位
0页,对应于逻辑地
址0000H~1FFFH,
存储在1号页框中,
物理地址为
1000H~1FFFH
图9.12 (a)为页表,(b)为对应的物理内存
40
MMU中逻辑地址到物理地址的转换
 MMU将逻辑地址看作两个部分
页和偏移量
例:考虑LDAC 4234H,MMC如何将逻辑
地址4234H转换成物理地址(如图9.13)
41
 高4位逻辑
地址表明
页号,剩
下的12位
为偏移量
 四个高位
为0100
 页框号11
表明页被
映射到页
框3
 此值与12
位的偏移
量拼接,
生成物理
地址11
0010 0011
0100
图9.13 用页表将逻辑地址转换成物理地址
42
图9.13所示的MMU并没有很好的转换地址 ?
因为从页表中读页框号会有一个延时,
并且由于取出相邻的指令,系统可能连
续的成百上千次的读这一相同的值
变换旁视缓冲器可以解决上述问题(图
9.14),其功能跟页表一样,可产生帧值,
但它更快,这样就提高了性能
43
 注意TLB没
有必要包含
计数位或者
脏位,因为
这些信息仍
然保存在页
表中。
 TLB中的每
一个地址入
口包含在页
表中,但反
过来不成立
图9.14 使用TLB转换逻辑地址到物理地址
44
例:考虑一台含有相对简单CPU,相同内存
配置的计算机。它必须取、翻译和执行下
列程序 (如表9.8)
0000H: LDAC 4234H
0003H: STAC 4235H
0006H: JUMP 1000H
1000-1063H: (100 register instructions)
1064H: JUMP 2000H
2000H-2031H: (50 register instructions)
2032H: JUMP 0100H
0100H-01C7H: (200 register instructions)
01C8H: JUMP 3000H
3000H-3063H: (100 register instructions)
3064H: JUMP 0000H
4234H: 27H(data value)
45
表9.8 使用LRU替换算法的部分页表和TLB值
Page Table
Adress 0000H 0003H 0006H 1000H- 2000H- 0100H- 3000H- 0000H
1064H 2032H 01C8H 3064H
Page FVCD FVCD FVCD FVCD FVCD FVCD FVCD FVCD
0
0110 0110 0110 0110 0120 0110 0110 0110
1
2100 2110 2120 2130 -0-2
3100 3110 3120 3130
3
1100 1120
4
1100 1101 1111 1121 1131 1131 -0-2100
PFV
001
411
---0
---0
PFV
001
411
---0
---0
TLB
PFV
PFV
001
001
411
411
---0
121
---0
---0
PFV
001
411
121
231
PFV
001
411
121
231
PFV
001
311
121
231
PFV
001
311
421
231
46
表9.9使用FIFO替换算法的部分页表和TLB值
Page Table
Adress
0000H
0003H0006H
1000H1064H
2000H2032H
0100H01C8H
3000H3064H
0000H
Page
FVD
FVD
FVD
FVD
FVD
FVD
FVD
010
010
010
010
010
--0-
110
210
210
210
210
--0-
310
310
310
310
010
010
111
210
0
1
2
3
4
110
111
111
111
111
PFV
PFV
PFV
PFV
PFV
PFV
PFV
001
001
001
001
001
301
301
411
411
411
411
411
411
011
---0
---0
121
121
121
121
421
---0
---0
---0
231
231
231
231
47
9.3.1 分段
分段:在分段技术中,程序被划分为几
段,每段为一个自包含的单元
分段的特点:
1. 每个段大小可以变化
2. 分段存在外部碎片问题
48
外部碎片:内存驻留有3个段,另有8K自由
空间。而这8K空间被划分开了,于是不移
动或撤除某个当前载入段的话,大小超过
3K的段已无法装入内存(如图9.16)
图9.16由于分段引起的物理内存外部碎片
49
分段机制中逻辑地址到物理地址的转换
逻辑地址被剖分为段号和偏移量
50
图9.15 分段机制中逻辑地址到物理地址的转换
 段号输入到段表中,如果段已被装入内
存,输出段的起始地址和段大小
 如果段不在物理内存中,就产生一个缺
段,MMU装入新段到内存中
 偏移量与段大小进行比较,如果前者大
于后者,或者相等,说明所访问单元不
在段内,就产生一个错误
 如果偏移量有效,则与段地址的起始值
相加,形成一个正确的物理内存地址
51
分段机制中的一个严重缺陷
在分页机制中,页号送到页表(和TLB)
以产生页框号。该值和偏移量拼接构成物理
地址。而在分段机制中,通过页表或TLB产
生的起始地址要与偏移量相加,此过程消耗
的时间比拼接要多得多
52
带分页的分段
 分页和分段两种机制的结合体
 在内存中不必是一个连续整块
 逻辑地址被划分为三个部分
1. 段号 2. 页号 3. 偏移量
53
图9.17段页式机制中逻辑地址转换为物理地址
54
段页式机制中的优点:
1. 不需要找一个足够大的连续块来装载整
个段,物理内存的段分配相对简单
2. 组成段的页可被放在物理内存的任意位
置 ,减少了外部碎片
3. 不再需要在段表中显式的存储段的大小
4. 当明确产生页框号后,也不再需要加上
偏移量来生成一个值;而是使用更快的
拼接
55
9.3.3 存储器保护
9.4 基本的cache和虚拟内存的扩展
9.4.1 基本cache的扩展
现在大部分计算机中使用的是两级cache :
一个指令cache只存程序指令,一个数据
cache只存数据
56
9.4.2 基本虚拟存储器的扩展
图9.18多级页表层次结构
57
9.5 实例:Pentium/Windows个
人计算机上的内存管理
图9.19 Pentium/Windows NT的内存层次结构
58
9.6 总结
 大部分计算机的存储层次不仅仅包括物理内存,
还包括cache和虚拟内存。Cache存储器是一个介
于CPU和物理存储器间的高速存储器;cache的一
级经常置入CPU芯片内。Cache 存储器可以是统
一起来的,也可以分离成单独的指令cache和数
据cache。Cache的性能很大程度上由命中率和平
均访问时间决定。
 Cache存储器可使用三种映射策略中的一种。相
联映射是最灵活的,但它要求使用相对昂贵的相
联存储器而不是标准的静态RAM。直接映射灵
活性少些,但也便宜些。组相联映射综合了直接
映射的优点以及相联映射的某些灵活性。使用组
性联的存储器使用FIFO、LRU或者是随机替换
策略。
59
 虚拟存储器使用辅存,比如磁盘,来扩展
处理器可用的内存空间。它比给系统加物
理内存要便宜很多,且不会严重降低系统
性能。内存管理单元把处理器发布的虚拟
地址映射为相应的物理地址。
 一个虚拟存储器系统可使用分页或分段机
制。分页系统在物理内存和虚拟内存间交
换固定大小的页框。MMU用页表和TLB来
跟踪哪一个页框对应于每一页面。段式系
统可管理不同尺寸的段。它减少了内部碎
片,但引入了外部碎片。一个系统中结合
这两种方法是可行的,可以用可变数目的
固定长度页来构造可变大小的段。
60