【计算机组成原理·考研】虚拟存储器

本文详细阐述了虚拟存储器的基本概念,包括其工作原理、虚实地址转换、页式和段式虚拟存储器的区别与优缺点,以及与Cache的比较。重点介绍了页式虚拟存储器的页表结构、TLB优化和多级存储系统中的访问流程。
摘要由CSDN通过智能技术生成

1.基本概念

  • 虚拟存储器由主存+辅存组成,二者在硬件+系统软件的管理下协调工作。
  • 虚拟存储器对应用程序员是透明的。
  • 虚拟存储器具有主存的速度、辅存的容量。
  • 虚拟存储器将主存和辅存的地址空间进行统一编址,从而形成一个庞大的地址空间。用户可以在此基础上自由编程,而无需关心物理地址、主存容量等其他问题。
  • 虚拟存储器同样采用与Cache类似的技术,将被经常访问到的辅存内容的副本临时存放到主存中。
  • 采用全相联映射的地址映射方式,以降低主存缺页访问辅存带来的巨大开销。
  • 采用回写法来处理数据一致性的问题。
  • 地址映射工作由操作系统完成,当然也要辅以一些硬件的支持,如TLB、地址映射系统等。

2.名词解释

虚地址/逻辑地址

  • 用户编程所允许涉及的地址,其对应的地址空间为虚拟空间或程序空间。
  • 虚地址 = 虚拟页号 + 页内字地址。

实地址/物理地址

  • 实际的主存单元地址,其对应的地址空间为主存地址空间或实地址空间。
  • 实地址 = 主存页号 + 页内字地址。

image.png

3.基本访问流程

4.分类

4.1 页式虚拟存储器

4.1.1 概述
  • 页式虚拟存储器以页为操作单位,即虚拟空间与主存空间均被划分成了多个同样大小的页。
  • 主存的页称为实页、页框;虚存的页称为虚页。
  • 虚拟地址 = 虚页号 + 页内地址。
4.1.2 说明
4.1.2.1 页表/慢表
4.1.2.1.1 说明
  • 页表是一张存放在主存中的虚页号与实页号的对照表,一般长久驻留在主存(内存)中。
  • 用于完成虚地址到实地址的转换工作。

image.png
有效位/装入位:若为1,则表示该虚拟页已由辅存调入主存;若为0,则表示该项没有被调入主存(可视为空项)。
脏位/修改位:表示页面是否被修改过(回写法的回写策略凭证)。
引用位/使用位:表示被访问了多少次,与替换策略进行配置,以便在主存满的时候换出合适的页。

4.1.2.1.2 地址变换过程

image.png

Ps
页面若很小,则虚拟存储器中包含的页面就会过多,使得页表的体积过大,导致页表占据的存储空间过大,操作速度反而变慢。
页面若很大,则主存中存放的页面较少,导致页面调度频率较高,换页次数增加,操作速度因此降低。

4.1.2.1.3 优缺点

优点:页长度固定,页表结构简单,调入方便。
缺点:

  • 程序不一样是页大小的整数倍,因此调入的最后一页可能会有冗余而浪费。
  • 页不是逻辑上独立的实体,因而处理、保护、共享均不及段式虚拟存储器。
4.1.2.2 快表(TLB)

4.1.2.2.1 背景

由前面可知,在采用虚拟存储机制后,访存时会先去主存访问一次页表,然后再去访问主存才能拿到数据(如果命中,不命中的情况同样不言而喻),因此,访问的次数相较于未采用虚拟存储机制增加了。
依据程序局部性原理,在一段时间内总是经常访问某些页时,如果将这些页放到Cache组成的快表中时,那访存效率会得到明显提高。

4.1.2.2.2 特点
  • 快表通常采用全相联或组相联的映射方式。
  • 地址转换时,首先查找快表,若命中,则无需访问主存中的页表(慢表)。
  • TLB项 = TLB标记字段 + 页表表项内容。
  • 快表采用高速相联存储器,其速度来源于硬件本身,而不是查找算法带来的速度上的优势。


在全相联方式的下,TLB标记就该表项对应的虚页号;在组相联的方式下,TLB则是虚页号的高位部分(低位部分用于选择TLB组的组索引)。

4.1.2.3 具有TLB和Cache的多级存储系统

image.png
在一个具有Cache和TLB的虚拟系统中,CPU的一次访存操作可能涉及TLB、页表、Cache、主存和磁盘的访问。
image.png
这期间,可能会出现下面TLB、Page、Cache组合的若干种缺失情况:

序号TLBPageCache说明访存情况
1hithithitTLB命中则Page一定命中,
信息在主存中,
也在Cache中无需访存主存
2hithitmissTLB命中则Page一定命中,
信息在主存中,
不在Cache中
访问一次主存
3misshithitTLB缺失但Page可能命中,
信息在主存中,
也在Cache中访问一次主存
4misshitmissTLB缺失但Page可能命中,
信息在主存中,
不在Cache中访问两次主存
5missmissmissTLB缺失则Page可能缺失,
信息不在主存中,
也一定不在Cache中访问一次主存+访问辅存+缺页处理

Cache缺失由硬件完成。
缺页处理由软件完成(操作系统通过缺页异常处理程序实现)。
TLB缺失即可用硬件也可用软件来处理。

4.2 段式虚拟存储器

4.2.1 概述
  • 段是按程序的逻辑结构划分的,各个段的长度长短不一。
  • 虚拟地址 = 段号 + 段内地址。
  • 段表是程序中的逻辑段和在主存中的存放位置的对照表,虚地址到实地址的变换就是通过段表来实现的。
4.2.2 地址变换过程

image.png

4.2.3 优缺点
优点
  1. 段的分界与程序分界对应,具有逻辑独立性。
  2. 易于编译、管理、修改、保护,便于多道程序的共享。
缺点

段长度可变,从而使得分配空间不方便,因而容易在段间留下碎片。

4.3 段页式虚拟存储器

4.3.1 概述
  • 把程序按逻辑结构分段,每段划分为固定大小的页。主存空间划分为大小固定的页。
  • 程序对主存页的调入调出仍以页为单位。
  • 每个程序对应一个段表,每个段对应一个页表。
  • 段的长度是页的长度的整数倍,段的起点必须是某一页的整数倍。
  • 虚地址 = 段号 + 段内页号 + 页内地址。
4.3.2 优缺点
优点

兼具页式和段式存储器的优点,可以按段实现共享和保护。

缺点

在地址变换过程中,需要查两次表,系统开销较大。

5.虚拟存储器与Cache的比较

5.1 共同点

项目虚拟存储器Cache
最终目标提高系统性能,都有容量、速度、价格的梯度
数据块都把块作为基本传送单位(虚拟存储器的块更大些)
包含内容都有地址映射、替换算法、更新策略等内容
思想均依据程序的局部性原理,将活跃的数据放在相对高速的部件中

5.2 区别

项目虚拟存储器Cache
解决的问题解决主存容量小的问题解决系统速度不匹配的问题
实现方式由操作系统和硬件共同实现由硬件实现
透明性对系统程序员不透明,对应用程序员透明对所有程序员透明
不命中后果主存的速度约为辅存的速度的100倍以上,不命中时的系统性能影响更大CPU的速度约为Cache的10倍,不命中时对系统性能影响更小
不命中时只能先由辅存调入主存,再与CPU进行通信不命中时,主存能直接和CPU进行通信
  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程旧事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值