CPU Cache 内存这三个有什么关系

如题所述

当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。

扩展资料:

即便处理器内部集成的缓存数据交换能力非常强,也仍需要对调取数据做一定的筛选。这是因为随着时间的变化,被访问得最频繁的数据不是一成不变的。

也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据经常是被访问最频繁的。

命中率算法中较常用的“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。

因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。

参考资料来源:中关村在线——告别四大误区 谈缓存对CPU的性能影响

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-18
这种形式比老版本中利用fieldCache来实现正排查找更加高效,更加节省内存。倒排索引将字段内存切分成一个term列表,每个term都对应着一个docid列表,这样一种结构使得查询能够非常快速,因为term对应的docid是现成就有的。但是,利用它来做统计,排序,高亮操作的时候需要通过docid来找到,field的值却变得不那么高效了。之前lucene4.0之前会利用fieldCache在实例启动的时候预先将倒排索引的值load到内存中,问题是,如果文档多会导致预加载耗费大量时间,还会占用宝贵的内存资源。
索引在lucene4.0之后引入了新的机制docValues,可以将这个理解为正排索引,是面向列存储的
第2个回答  2012-07-31
cache的作用是提高cpu的运行速度,由于cpu在向内存提取信息时,有可能内存速度达不到cpu那么快这就是“瓶颈效应”,通过cache计算机先将信息存放在cache中,然后在执行命令时cpu先访问cache再访问内存,cache容量越大,命中越高,则cpu的反应速度也会越快。
第3个回答  推荐于2017-09-03
Cache 用来减少cpu内存的时间。
cache的访问速度要比内存快的多,容量较小,价格贵。
cache暂存内存中的数据, 例如 cpu要访问内存中某个字节10次, 第一次访问的时候,数据从内存搬运到cache,花费较长的时间,后面9次,数据在cache中已有拷贝, 可以直接访问cache,速度快。本回答被提问者采纳
第4个回答  2012-02-20
CPU相当于工厂总流水线 CACHE相当于流水线的原料仓,放不了多少东西,内存相当于工厂放原料的仓库,硬盘相当于原料生产商人,CACHE因为直接在流水线前面,可以很快就拿到材料给流水线用,但是如果流水线的材料不够,用完,找不到了,就要从内存,也就是工厂放原料的仓库找,就会慢点,如果工厂原料仓库还没有,只能找原料生产商人,也就是硬盘,这样就更慢了。电脑中的数据运算就是这么运行的,从硬盘中调入内存,在调入要用的进入CACHE,给CPU使用,当然,速度是CACHE>内存>硬盘
相似回答