北大计算机系课件 虚拟内存
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mem disk
cache
reg
pages
frame
分页组织
虚拟 和 物理 地址被划分为同等大小的信息块
页帧(page frames) 页(pages)
北京大学计算机科学技术系 北京大学微处理器研究开发中心
地址映射
V = {0, 1, . . . , n - 1} 虚拟地址空间 M = {0, 1, . . . , m - 1} 物理地址空间
TLB访问时间与Cache访问时间是可比的(但要小一些) (也比主存访问时间要小得多)
北京大学计算机科学技术系
北京大学微处理器研究开发中心
变换旁视缓冲器
• 就像其他的cache, TLB可以是全相联的、组相联的,也可以是 直接映射的
• TLB一般较小,通常即使在高性能机器中也只有128 - 256个表项 。这样就可以实现全相联查找。大多数中等性能的机器使用n路 组相联的组成。
北京大学计算机科学技术系 北京大学微处理器研究开发中心
快表(TLB)
加速地址变换的一种方式是使用一种关于最近使用页表表项的特殊 cache 它有很多名字,但最经常使用的名字是变换旁视缓冲 器(Translation Lookaside Buffer:TLB)或快表!
虚拟地址 物理地址 脏位 访问 有效位 访问方式
VA CPU TLB Lookup miss Translation data hit hit PA Cache miss Main Memory
使用TLB 的地址变换
1/2 t
t
20 t
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页表
访问 权限
PA
+ 物理存 储器地址
实际上,经常采用串联方式
位于物理 存储器的表
北京大学计算机科学技术系
北京大学微处理器研究开发中心
地址映射算法
If V = 1 then 该虚拟地址指示的所需页存放在主存中 else 该虚拟地址指示的所需页存放在第二级存储器中 访问权限 R = 只读, R/W = 读/写, X = 只可执行 If 访问的类别 与 指定的访问权限 不相符, then 保护违例故障(protection_violation_fault) If 没有设置有效位(V)then 缺页(page fault)
北京大学计算机科学技术系
北京大学微处理器研究开发中心
地址映射算法
• 保护故障(Protection Fault)、访问权限违例( access rights violation):向硬件、微码或软件故障处 理机制发出自陷处理请求
• 缺页(Page Fault):所需页没有驻留在物理存储器中 ,也将导致自陷,通常还伴随着上下文切换(context switch)。 • 当从第二级存储中访取页面时,当前进程挂起
- 预测未来访问通常很困难
绝大多数系统只实现了按需调页,而没有实现预测
北京大学计算机科学技术系 北京大学微处理器研究开发中心
虚拟地址 和 Cache
VA CPU Translation hit data PA
miss
Cache
Main Memory
• 需要一次额外的存储访问来将虚拟地址变换成物理地址 • 这使得cache访问的代价非常高,而且这也是我们希望尽可能 快得执行的“最内层循环” • 思考:为什么总是用物理地址来访问cache? 虚拟地址cache 有一个很难对付的问题! • 同义问题(synonym problem):两个不同的虚拟地址可 以映射到同一物理地址 => 两个不同的cache表项包含对 同一物理地址的数据! • 对于更新:必须更新所有具有同一物理地址的cache表项 或者 允许 存储器不一致 • 确定上述情况需要大量的硬件,特别是需要对物理地址标 签进行相联查找以确定是否出现多次命中
存储层次的级别
分段传 输单位
寄存器堆 指令操作数
较高级别 较快
程序/编译器 1-8 字节 Cache控制 8-128字节 操作系统 512-4K字节 用户/操作员 Mbytes
Cache
块(Blocks) 存储器
主存
M Bytes 100ns-1us $0.01~0.001
磁盘
G Bytes 毫秒 10-3~10-4美分
域变得不可利用 • 再分配(Relocation):将程序或数据移动到地址空间中一个新
的区域(可能需要调整所有的指针) 外部碎片(External Fragmentation):数据块之间的剩余空间
内部碎片(Internal Fragmentation):程序大小通常并不是页
面大小的整数倍,最后一个页帧中就会出现“浪费”
计算机组织与系统结构
虚拟存储器
Virtual Memory (第十九讲)
程 旭 易江芳
2011.12.14
北京大学计算机科学技术系 北京大学微处理器研究开发中心
容量 访问时间 成本
CPU寄存器 100s Bytes <10s ns Cache K Bytes 10~100 ns $0.01~0.001/bit
可供选择的方案:
00 用户进程的P0区域 01 用户进程的P1区域 10 系统名字空间
(1) 硬件相联映射: 每个页帧需要一个表项(O(|M|)),而不是每个页一个表项 (O(|N|)) (2) 基于散列表的“软件”方案(反向页表:inverted page table)
页号 偏移量
是否出现 访问权限 页号 物理地址
页表 表项
10 10 10 0 0 访问位
页表表项
最近替换指针 (lrp) 如果需要进行替换,将lrp前移 到下一个页表项(与表的大小取 模)直到发现一个具有0位的页 表项;这就是要替换的目标;在 上述工作的同时,将所有检查过 的页表项的访问位置为0。
北京大学微处理器研究开发中心
一种优化的策略是查找最近既没有被访问,又“不脏”的页
1封信
1部电影wk.baidu.com
美国国会图书 馆 (文字)
美国国会图书 馆 (声音+电影 )
Giga Tera Peta
美国国会图书 馆 (图像)
所有相片
所有磁盘
Exa
所有磁带
北京大学计算机科学技术系
Zetta
现在的所有信息 Yotta
北京大学微处理器研究开发中心
本讲提纲
°重温存储层次和Cache引论
°虚拟存储器
°页表和快表(TLB) °保护 °存储层次对计算机科学其他学科的影响
北京大学计算机科学技术系
/天 (/4年) 2 -10 M/G 0.5 M/G 40 M/G .25 G/T 1 G/T 20 G/T
/一生 60-300 G 15 G 1.2 T 25 T 100 T 1P
43 K 3.6 M 22 M 90 M 1.8 G
北京大学微处理器研究开发中心
一部小说
Kilo Mega
北京大学计算机科学技术系 北京大学微处理器研究开发中心
碎片 (续)
页表碎片(Table Fragmentation):当页表非常大时,就出现了页表碎 片,这是因为虚拟地址空间很大,直接映射页表可能占据很大的存储空间
例如: VAX系统结构
XX 21 页号 9 偏移量
注意: 这意味着页表将需要221表项, 每个表项4字节长,总共8 M字节
北京大学计算机科学技术系
北京大学微处理器研究开发中心
虚拟存储
• 提供一种理想中的非常非常大的存储器 • 许多工作所需存储器的总和大于实际的物理存储器 • 每个工作的地址空间大于实际的物理存储器 • 使得可利用的(快速、昂贵)的物理存储器得以很好地利用 • 简化存储器的管理 (当今,使用虚拟存储技术的主要原因) • 使用存储层次,保持平均访问时间很低 • 至少包括两级存储层次:主存 和 二级存储 • 虚拟地址 程序员使用的地址 • 虚拟地址空间 上述地址的集合 • 存储器地址 物理存储器中存储字的地址,也称为物理地 址或实地址( Real address)
北京大学计算机科学技术系
按需调页 和 预取页面
访取策略(Fetch Policy)
何时将该页换入存 储器? 如果只有在缺页时才将页面调入,那么这种策略就称为“按需调页 (demand paging)”
另外一种选择方案是 预取(prefetching): 预测未来的访问,在实际使用这些页面之前,预先装入 + 减少了页面传输的开销 - 将移出已经在页帧中的页,从而不利于缺页率
页表
相联存储 或 散列查找页号(页号域)
北京大学计算机科学技术系 北京大学微处理器研究开发中心
2级页表
根页表
4 字节 物理地址 256
第二级页表
4 字节 P0 . . . P255 1K 物理地址 物理地址
数据页
D0 . . . 4K
段0
物理地址
段1
. . .
D1023
段
255
在系统虚拟地址空间 分配的 1 M字节 物理存储器中 256K 字节
0 1
已占用 . . .
k-1
北京大学计算机科学技术系
北京大学微处理器研究开发中心
最佳页面大小
• 选择页面大小使得碎片最少
• 页面大 内部碎片变得严重
• 增加页面数量/名字空间 更大的页表 • 一般而论,通常需要增加页面大小,这是因为,
• 随着RAM价格下降,存储器变得更大
• 处理器速度和磁盘速度之间的差距变大 • 编程人员需要越来越大的虚拟地址空间 • 当今,大多数机器的页面大小为4K字节,另外,页面大小有继 续增加的趋势
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页面替换 (续)
非最近使用:
与每个页面相关联的是一个访问标志: 访问标志(reference flag) = 1 如果该页在最近的过去被访问过 = 0 否则 如果需要替换,选择任意一个访问标志为0的页帧替换掉。该页是在最 近的过去没有被访问过的页。 • 非最近使用(NRU)替换策略的实现:
物理地址
北京大学计算机科学技术系
分页组织
物理地址 0 1024 7168 页帧 0 1 7 1K 1K 1K 地址 变换 映射 0 1024 页 0 1
1K 1K
映射单位
物理存储器
31744 地址映射 虚拟地址 页号 31 1K
也是从虚拟存 储器到物理存 储器的传输单 位
虚拟存储器
10 偏移量
页表基址 寄存器 到页表 的索引 V
北京大学计算机科学技术系
北京大学微处理器研究开发中心
虚拟存储系统设计的基本问题
• • • • 从二级存贮器向主存传输信息块的大小 某信息块的访问需要引入存储M,但是M已经装满,那么M中的一些区域就 必须释放,为新的信息块腾出空间 替换策略(replacement policy) M中的哪个区域将安放新的信息块 放置策略(placement policy ) 失效的信息项只有在出现页面失效(fault)时,才从第二级存储器中取出 读取/装入策略(fetch/load policy)
• 例如,VAX 11/780每个进程可以看到 4 G (2 32 字节) 的 虚拟地址空间 • 1/2用于用户区域 • 1/2用于被所有进程共享的系统区域 • 页面大小为 512 字节
北京大学计算机科学技术系 北京大学微处理器研究开发中心
碎片 和 再分配
• 碎片(Fragmentation)是 由于某种原因,存储空间中的一些区
页(Pages)
磁盘 文件(Files) 磁带
磁带
无限 秒 ~分 10-6
较大 较低级别
北京大学计算机科学技术系
北京大学微处理器研究开发中心
存储所有我们已读(写)、 听(说)、看的信息
人类数据类型 /小时 阅读文字(含少量图片) 200 K 以120wpm说 以1KBps说 50Kb/s POTS的视频 200Kb/s VHS质量的视频 4.3Mb/s HDTV/DVD视频
n>m
映射: V M U {0} 地址映射函数 MAP(a) = a‘ 如果在虚拟地址 a 的数据出现在物理地址 a’ ,并且 a‘ 在 M中
= 0 如果在虚拟地址 a 的数据不出现在M中
a
名字空间 V
0
失效信息项故障
缺页处理
处理器
a
地址变换 机制
主存
a'
二级存储
OS 完成这一传输
北京大学微处理器研究开发中心
在用户虚拟地址 空间分配
28
x
2
8
x
2 10
x
2
12
=
2
38
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页替换算法
就像Cache块替换算法一样!
最近最少使用:
•选择出最近最少使用的页面来替换 •需要有关过去访问页面的信息,非常难以实现 (将页表项根据从最近最多访问到最近最少访问的次序排序; 当一个页面被访问时,将它移动到列表的头部;于在列表 尾 部的页表项就是将被替换出的页表项) •性能很好,遵从了局部性原则
cache
reg
pages
frame
分页组织
虚拟 和 物理 地址被划分为同等大小的信息块
页帧(page frames) 页(pages)
北京大学计算机科学技术系 北京大学微处理器研究开发中心
地址映射
V = {0, 1, . . . , n - 1} 虚拟地址空间 M = {0, 1, . . . , m - 1} 物理地址空间
TLB访问时间与Cache访问时间是可比的(但要小一些) (也比主存访问时间要小得多)
北京大学计算机科学技术系
北京大学微处理器研究开发中心
变换旁视缓冲器
• 就像其他的cache, TLB可以是全相联的、组相联的,也可以是 直接映射的
• TLB一般较小,通常即使在高性能机器中也只有128 - 256个表项 。这样就可以实现全相联查找。大多数中等性能的机器使用n路 组相联的组成。
北京大学计算机科学技术系 北京大学微处理器研究开发中心
快表(TLB)
加速地址变换的一种方式是使用一种关于最近使用页表表项的特殊 cache 它有很多名字,但最经常使用的名字是变换旁视缓冲 器(Translation Lookaside Buffer:TLB)或快表!
虚拟地址 物理地址 脏位 访问 有效位 访问方式
VA CPU TLB Lookup miss Translation data hit hit PA Cache miss Main Memory
使用TLB 的地址变换
1/2 t
t
20 t
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页表
访问 权限
PA
+ 物理存 储器地址
实际上,经常采用串联方式
位于物理 存储器的表
北京大学计算机科学技术系
北京大学微处理器研究开发中心
地址映射算法
If V = 1 then 该虚拟地址指示的所需页存放在主存中 else 该虚拟地址指示的所需页存放在第二级存储器中 访问权限 R = 只读, R/W = 读/写, X = 只可执行 If 访问的类别 与 指定的访问权限 不相符, then 保护违例故障(protection_violation_fault) If 没有设置有效位(V)then 缺页(page fault)
北京大学计算机科学技术系
北京大学微处理器研究开发中心
地址映射算法
• 保护故障(Protection Fault)、访问权限违例( access rights violation):向硬件、微码或软件故障处 理机制发出自陷处理请求
• 缺页(Page Fault):所需页没有驻留在物理存储器中 ,也将导致自陷,通常还伴随着上下文切换(context switch)。 • 当从第二级存储中访取页面时,当前进程挂起
- 预测未来访问通常很困难
绝大多数系统只实现了按需调页,而没有实现预测
北京大学计算机科学技术系 北京大学微处理器研究开发中心
虚拟地址 和 Cache
VA CPU Translation hit data PA
miss
Cache
Main Memory
• 需要一次额外的存储访问来将虚拟地址变换成物理地址 • 这使得cache访问的代价非常高,而且这也是我们希望尽可能 快得执行的“最内层循环” • 思考:为什么总是用物理地址来访问cache? 虚拟地址cache 有一个很难对付的问题! • 同义问题(synonym problem):两个不同的虚拟地址可 以映射到同一物理地址 => 两个不同的cache表项包含对 同一物理地址的数据! • 对于更新:必须更新所有具有同一物理地址的cache表项 或者 允许 存储器不一致 • 确定上述情况需要大量的硬件,特别是需要对物理地址标 签进行相联查找以确定是否出现多次命中
存储层次的级别
分段传 输单位
寄存器堆 指令操作数
较高级别 较快
程序/编译器 1-8 字节 Cache控制 8-128字节 操作系统 512-4K字节 用户/操作员 Mbytes
Cache
块(Blocks) 存储器
主存
M Bytes 100ns-1us $0.01~0.001
磁盘
G Bytes 毫秒 10-3~10-4美分
域变得不可利用 • 再分配(Relocation):将程序或数据移动到地址空间中一个新
的区域(可能需要调整所有的指针) 外部碎片(External Fragmentation):数据块之间的剩余空间
内部碎片(Internal Fragmentation):程序大小通常并不是页
面大小的整数倍,最后一个页帧中就会出现“浪费”
计算机组织与系统结构
虚拟存储器
Virtual Memory (第十九讲)
程 旭 易江芳
2011.12.14
北京大学计算机科学技术系 北京大学微处理器研究开发中心
容量 访问时间 成本
CPU寄存器 100s Bytes <10s ns Cache K Bytes 10~100 ns $0.01~0.001/bit
可供选择的方案:
00 用户进程的P0区域 01 用户进程的P1区域 10 系统名字空间
(1) 硬件相联映射: 每个页帧需要一个表项(O(|M|)),而不是每个页一个表项 (O(|N|)) (2) 基于散列表的“软件”方案(反向页表:inverted page table)
页号 偏移量
是否出现 访问权限 页号 物理地址
页表 表项
10 10 10 0 0 访问位
页表表项
最近替换指针 (lrp) 如果需要进行替换,将lrp前移 到下一个页表项(与表的大小取 模)直到发现一个具有0位的页 表项;这就是要替换的目标;在 上述工作的同时,将所有检查过 的页表项的访问位置为0。
北京大学微处理器研究开发中心
一种优化的策略是查找最近既没有被访问,又“不脏”的页
1封信
1部电影wk.baidu.com
美国国会图书 馆 (文字)
美国国会图书 馆 (声音+电影 )
Giga Tera Peta
美国国会图书 馆 (图像)
所有相片
所有磁盘
Exa
所有磁带
北京大学计算机科学技术系
Zetta
现在的所有信息 Yotta
北京大学微处理器研究开发中心
本讲提纲
°重温存储层次和Cache引论
°虚拟存储器
°页表和快表(TLB) °保护 °存储层次对计算机科学其他学科的影响
北京大学计算机科学技术系
/天 (/4年) 2 -10 M/G 0.5 M/G 40 M/G .25 G/T 1 G/T 20 G/T
/一生 60-300 G 15 G 1.2 T 25 T 100 T 1P
43 K 3.6 M 22 M 90 M 1.8 G
北京大学微处理器研究开发中心
一部小说
Kilo Mega
北京大学计算机科学技术系 北京大学微处理器研究开发中心
碎片 (续)
页表碎片(Table Fragmentation):当页表非常大时,就出现了页表碎 片,这是因为虚拟地址空间很大,直接映射页表可能占据很大的存储空间
例如: VAX系统结构
XX 21 页号 9 偏移量
注意: 这意味着页表将需要221表项, 每个表项4字节长,总共8 M字节
北京大学计算机科学技术系
北京大学微处理器研究开发中心
虚拟存储
• 提供一种理想中的非常非常大的存储器 • 许多工作所需存储器的总和大于实际的物理存储器 • 每个工作的地址空间大于实际的物理存储器 • 使得可利用的(快速、昂贵)的物理存储器得以很好地利用 • 简化存储器的管理 (当今,使用虚拟存储技术的主要原因) • 使用存储层次,保持平均访问时间很低 • 至少包括两级存储层次:主存 和 二级存储 • 虚拟地址 程序员使用的地址 • 虚拟地址空间 上述地址的集合 • 存储器地址 物理存储器中存储字的地址,也称为物理地 址或实地址( Real address)
北京大学计算机科学技术系
按需调页 和 预取页面
访取策略(Fetch Policy)
何时将该页换入存 储器? 如果只有在缺页时才将页面调入,那么这种策略就称为“按需调页 (demand paging)”
另外一种选择方案是 预取(prefetching): 预测未来的访问,在实际使用这些页面之前,预先装入 + 减少了页面传输的开销 - 将移出已经在页帧中的页,从而不利于缺页率
页表
相联存储 或 散列查找页号(页号域)
北京大学计算机科学技术系 北京大学微处理器研究开发中心
2级页表
根页表
4 字节 物理地址 256
第二级页表
4 字节 P0 . . . P255 1K 物理地址 物理地址
数据页
D0 . . . 4K
段0
物理地址
段1
. . .
D1023
段
255
在系统虚拟地址空间 分配的 1 M字节 物理存储器中 256K 字节
0 1
已占用 . . .
k-1
北京大学计算机科学技术系
北京大学微处理器研究开发中心
最佳页面大小
• 选择页面大小使得碎片最少
• 页面大 内部碎片变得严重
• 增加页面数量/名字空间 更大的页表 • 一般而论,通常需要增加页面大小,这是因为,
• 随着RAM价格下降,存储器变得更大
• 处理器速度和磁盘速度之间的差距变大 • 编程人员需要越来越大的虚拟地址空间 • 当今,大多数机器的页面大小为4K字节,另外,页面大小有继 续增加的趋势
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页面替换 (续)
非最近使用:
与每个页面相关联的是一个访问标志: 访问标志(reference flag) = 1 如果该页在最近的过去被访问过 = 0 否则 如果需要替换,选择任意一个访问标志为0的页帧替换掉。该页是在最 近的过去没有被访问过的页。 • 非最近使用(NRU)替换策略的实现:
物理地址
北京大学计算机科学技术系
分页组织
物理地址 0 1024 7168 页帧 0 1 7 1K 1K 1K 地址 变换 映射 0 1024 页 0 1
1K 1K
映射单位
物理存储器
31744 地址映射 虚拟地址 页号 31 1K
也是从虚拟存 储器到物理存 储器的传输单 位
虚拟存储器
10 偏移量
页表基址 寄存器 到页表 的索引 V
北京大学计算机科学技术系
北京大学微处理器研究开发中心
虚拟存储系统设计的基本问题
• • • • 从二级存贮器向主存传输信息块的大小 某信息块的访问需要引入存储M,但是M已经装满,那么M中的一些区域就 必须释放,为新的信息块腾出空间 替换策略(replacement policy) M中的哪个区域将安放新的信息块 放置策略(placement policy ) 失效的信息项只有在出现页面失效(fault)时,才从第二级存储器中取出 读取/装入策略(fetch/load policy)
• 例如,VAX 11/780每个进程可以看到 4 G (2 32 字节) 的 虚拟地址空间 • 1/2用于用户区域 • 1/2用于被所有进程共享的系统区域 • 页面大小为 512 字节
北京大学计算机科学技术系 北京大学微处理器研究开发中心
碎片 和 再分配
• 碎片(Fragmentation)是 由于某种原因,存储空间中的一些区
页(Pages)
磁盘 文件(Files) 磁带
磁带
无限 秒 ~分 10-6
较大 较低级别
北京大学计算机科学技术系
北京大学微处理器研究开发中心
存储所有我们已读(写)、 听(说)、看的信息
人类数据类型 /小时 阅读文字(含少量图片) 200 K 以120wpm说 以1KBps说 50Kb/s POTS的视频 200Kb/s VHS质量的视频 4.3Mb/s HDTV/DVD视频
n>m
映射: V M U {0} 地址映射函数 MAP(a) = a‘ 如果在虚拟地址 a 的数据出现在物理地址 a’ ,并且 a‘ 在 M中
= 0 如果在虚拟地址 a 的数据不出现在M中
a
名字空间 V
0
失效信息项故障
缺页处理
处理器
a
地址变换 机制
主存
a'
二级存储
OS 完成这一传输
北京大学微处理器研究开发中心
在用户虚拟地址 空间分配
28
x
2
8
x
2 10
x
2
12
=
2
38
北京大学计算机科学技术系
北京大学微处理器研究开发中心
页替换算法
就像Cache块替换算法一样!
最近最少使用:
•选择出最近最少使用的页面来替换 •需要有关过去访问页面的信息,非常难以实现 (将页表项根据从最近最多访问到最近最少访问的次序排序; 当一个页面被访问时,将它移动到列表的头部;于在列表 尾 部的页表项就是将被替换出的页表项) •性能很好,遵从了局部性原则