cache、内存、虚拟内存

cache、内存、虚拟内存

内存就是RAMRAMROM是相对的,RAM在断掉后保存在里面的信息会消失,而ROM在断电后存储在里面的信息不会消失。RAM分为静态RAM和动态RAM,静态RAMSRAM,是仅次于CPU访问速度的RAML1 cache就是SRAM,一般我们电脑上用的都是动态RAM,即DRAMDRAM的访问速度比SRAM要慢很多,但是体积小,价格便宜。系统里面内存分配说的物理内存大多数也就是DRAM里的情况。

cache就是高速缓存,是为了调和CPU得过快访问速度和内存过慢的速度的一个硬件,现代计算机一般都有三级高速缓存,L1L2L3,访问速度依次递减。因为CPU要从内存中读取数据的时候会很慢,大部分时间会浪费在等待上,所以引入cache,把预计将要读取的数据先存放到cache中,这样CPU就可以先到cache中读取,从而节约了等待时间,如果cache中没有要读取的数据,那么继续往下到内存中读取。前面文章讲到了数据从内存读到cache中的算法。

虚拟内存是为了防止内存不够用,从硬盘上分割出一些空间给内存扩展使用,这样程序就认为运行内存还够用。实际上呢,是把内存中一些不常用的数据或指令放到虚拟内存中,等到使用的时候再存放到内存中,因为内存的读取速度虽然比CPUcache低,但是比硬盘要高很多,从而就加快了程序的运行速度。在内存为4G以上的计算机中,一般这个大小足够用了,虚拟内存就一般无用武之地了。


理解了以上概念,做个总结吧。

CPU首先得到的是虚拟地址,要经过地址翻译成物理地址才能进行数据访问,这个过程要检查TLB(翻译后备缓冲器),如果命中,会得到其物理地址,之后会访问cache,如果cache中有要访问的数据,那么本次访问就结束,如果没有就到内存中寻找,并更新cache;如果TLB不命中,那么那么系统内核会调用缺页异常处理程序去处理,这个过程中会进行页替换等操作,最终取得要访问的数据。

到这可能会有疑问:cache是在CPU之后访问,在内存之前访问的,但是刚刚又说到CPU首先得到的是虚拟地址,要映射成相对应的物理地址之后才进行cache访问,然而虚拟内存是在内存不够用的情况下才调用的,和虚拟内存定义有点不符合啊?注意:在这里不要把虚拟地址和虚拟内存相混淆了,这个图能帮你很好地来说明区别。

cache、内存、虚拟内存的异同 - mihooke - mihooke的博客

那么我们来看下cache和虚拟内存的区别。

(1)侧重点不同:cache主要解决主存与CPU的速度差异问题;而就性能价格比的提高而言,虚存主要是解决存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。

(2)数据通路不同:CPU与cache和主存之间均有直接访问通路,cache不命中时可直接访问主存;而虚存所依赖的辅存与CPU之间不存在直接的数据通路,当主存不命中时只能通过调页解决,CPU最终还是要访问主存。

(3)透明性不同:cache的管理完全由硬件完成,对系统程序员和应用程序员均透明;而虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理的系统程序员不透明,而只对应用程序员透明(段式和段页式管理对应用程序员“半透明”)。

(4)未命中时的损失不同:由于主存的存取时间是cache的存取时间的5~10倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lm_y

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

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

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

打赏作者

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

抵扣说明:

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

余额充值