注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

cache、内存、虚拟内存的异同  

2014-09-25 11:46:58|  分类: 学习录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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未命中时的损失

 

  评论这张
 
阅读(209)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017