一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问 。通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了 。
缓存的技术发展
最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类 。当时集成在CPU内核中的缓存已不足以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量 。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存 。一级缓存中还分数据缓存(DataCache,D-Cache)和指令缓存(InstructionCache,I-Cache) 。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能 。英特尔公司在推出Pentium4处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为12KμOps,表示能存储12K条微指令 。
随着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升 。现在再用集成在CPU内部与否来定义一、二级缓存,已不确切 。而且随着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传输速度 。
二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高 。而同一核心的CPU高低端之分往往也是在二级缓存上有差异,由此可见二级缓存对于CPU的重要性 。
CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存 。从理论上讲,在一颗拥有二级缓存的CPU中,读取一级缓存的命中率为80% 。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取 。由于不能准确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%) 。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了 。目前的较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率 。
为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换 。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局 。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1 。当需要替换时淘汰行计数器计数值最大的数据行出局 。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率 。
CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、256KB、512KB、1MB、2MB、4MB等 。一级缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键 。二级缓存容量的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部晶体管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高 。
现在主流的CPU二级缓存都在2MB左右,其中英特尔公司07年相继推出了台式机用的4MB、6MB二级缓存的高性能CPU,不过价格也是相对比较高的,对于对配置要求不是太高的朋友,一般的2MB二级缓存的双核CPU基本也可以满足日常上网需要了 。
猜你喜欢
- 夏天小孩子温度是多少
- 安全B证是什么?与证书挂靠有什么联系
- 山药排骨汤的功效与作用有哪些
- 钾与水的来自反应现象`
- 西红柿豆腐花汤的功效与作用
- 慈姑的功效与作用是什么?
- 荒漠与沙漠有区别?
- 干粉灭火器与水基灭火器哪个更好用
- 笔尖与纸面的摩擦是什么摩擦
- 拼多多直接免拼是不是要加钱
