虚拟存储器

五、虚拟存储器

虚拟存储器利用的是程序的局部性原理。对应用程序员透明的。
Cache是为了解决系统速度,虚拟存储器是为了解决主存容量。

CPU使用虚地址的过程:

  • 根据虚地址、实地址的对应关系,判断该虚地址的存储单元是否装入主存中。
  • 若存储单元在主存中,访问该单元;
  • 若不在主存中,从辅存调入主存;
  • 若主存满了,替换调入主存。

1.Cache写策略

因为Cache 中的内容是主存块副本,当对Cache中的内容进行更新时,就需选用写操作策略使Cache 内容和主存内容保持一致。此时分两种情况:

(1)写命中(要被修改的单元在Cache中)

  • 全写法:当CPU 对Cache 写命中时,必须把数据同时写入Cache和主存。当某一块需要替换时,不必把这一块写回主存,用新调入的块直接覆盖即可。实现简单,数据的正确性高,但增加了访存次数。需要写缓冲。

  • 写回法:写回法(write-back)。当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在不一致的隐患。需要设置标志位/脏位。

(2)写不命中

  • 非写分配法:只写入主存,不调块。搭配全写法使用。
  • 写分配法:加载主存中的块到Cache 中,然后更新这个Cache 块。需要设置脏位,搭配写回法使用。

2.页式虚拟存储器(基本单位页,定长)

虚拟空间与主存空间都被划分成同样大小的页。
虚拟地址到物理地址由页表(在主存中)转换。

  • 有效位:表示是否在主存中。
  • 脏位:表示是否修改过。
  • 引用位:配合替换策略使用。

优点:页面的长度固定,页表简单,调入方便。
缺点是,由于程序不可能正好是页面的整数倍,最后一页的零头将无法利用而造成浪费,并且页不是逻辑上独立的实体,所以处理、保护和共享都不及段式虚拟存储器方便。

3.快表(减少页虚拟存储器访存次数)

利用局部性原理,把经常访问的页表项放在快表TLB(在Cache里) 中,相应的页表称为慢表。转换时,先找快表,找不到再找慢表。
快表采用相联存储器(全相联、组相联)器件组成,按照查找内容访问,因此速度更快。但快表只是慢表的副本,无法得到更多的搜索结果。

Cache缺失处理由硬件完成;缺页处理由软件完成;而 TLB缺失既可以用硬件又可以用软件来处理。

4.段式虚拟存储器(基本单位段,不定长)

段是按程序的逻辑结构划分的,各个段的长度因程序而异。

优点是,段的分界与程序的自然分界相对应,因而具有逻辑独立性,使得它易于编译、管理、修改和保护,也便于多道程序的共享。
缺点是因为段长度可变,分配空间不便,容易在段间留下碎片,不好利用,造成浪费。

5.段页式虚拟存储器(基本单位页)

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。
在段页式虚拟存储器中,每个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。
段页式虚拟存储器的优点是,兼具页式和段式虚拟存储器的优点,可以按段实现共享和保护。缺点是在地址变换过程中需要两次查表,系统开销较大。

附:王道课后题笔记

1.一SRAM芯片,容量是1024*8位,除电源和接地端外,引脚最小数目是?
地址10根(地址复用技术减半为5),数据8根,读写2根,片选1根(地址复用技术片选为2根),一共21根。

2.一个四体并行低位交叉存储器,每个模块的容量是64K×32位,存取周期为200ns,总线周期为 50ns,在200ns 内,存储器能向CPU提供128位二进制信息。

3.某存储系统中,主存容量是Cache容量的4096倍,Cache被分为64个块,当主存地址和Cache地址采用直接映像方式时,地址映射表的大小应为(64*13位)。(假设不考虑一致维护和替换算法位。)
地址映射表包含标志位和有效位(脏位)。由于Cache一共64块(64行),所以映射表一共64行。由于采用直接映射方式,主存容量是Cache容量的4096倍,所以标志位有12位(24096=12)。脏位1位。所以,容量为64*(12+1)位。

4.有效容量为128KB的Cache,每块16B,采用8路组相联。字节地址为1234567H的单元调入该Cache,则其Tag应为(048DH)。

5.有一主存-Cache层次的存储器,其主存容量为1MB,Cache容量为16KB,每块有8个字,每字32位,采用直接地址映像方式,若主存地址为35301H,且CPU访问Cache 命中,则在Cache的第(152)(十进制表示)字块中。(Cache起始字块为第0字块)

6.采用指令Cache与数据Cache分离的主要目的是(减少指令流水线资源冲突)。

7.某计算机主存地址空间大小为256MB,按字节编址。虚拟地址空间大小为4GB,采用页式存储管理,页面大小为4KB,TLB(快表)采用全相联映射,有4 个页表项,内容如下表所示。则对虚拟地址03FFF180H进行虚实地址变换的结果是(0153180H)。

虚拟地址空间大小为4GB,采用页式存储管理,页面大小为4KB,页表的行数=4GB/4KB=1024* 1024。也就是说,页表行数一共有20位。
虚拟地址03FFF180H由两部分组成:页表行号+页内地址。则前20位03FFF是页表行号,查TLB命中且有效,对应页框号也就是实际页地址为0153,虚拟地址03FFF180H剩下的部分180为页内地址。因此虚实地址变换结果为0153180H。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值