前面是把cache作为一个整体来考虑的,现在要分类分析了.
在以往的观念中,l1cache是集成在cpu中的,被称为片内cache.在l1中还分数据cache(i-cache)与指令cache(d-cache).它们分别用来存放数据与执行这些数据的指令,而且两个cache可以同时被cpu访问,减少了争用cache所造成的冲突,提高了处理器效能.
在p4处理器中使用了一种先进的一级指令cache——动态跟踪缓存.它直接与执行单元及动态跟踪引擎相连,通过动态跟踪引擎可以很快地找到所执行的指令,并且将指令的顺序存储在追踪缓存里,这样就减少了主执行循环的解码周期,提高了处理器的运算效率.以前的l2cache没集成在cpu中,而在主板上或与cpu集成在同一块电路板上,因此也被称为片外cache.但从pⅲ开始,由于工艺的提高l2cache被集成在cpu内核中,以相同于主频的速度工作,结束了l2cache与cpu大差距分频的历史,使l2cache与l1cache在性能上平等,得到更高的传输速度.l2cache只存储数据,因此不分数据cache与指令cache.在cpu核心不变化的情况下,增加l2cache的容量能使性能提升,同一核心的cpu高低端之分往往也是在l2cache上做手脚,可见l2cache的重要性.现在cpu的l1cache与l2cache惟一区别在于读取顺序.
3.读取命中率
cpu在cache中找到有用的数据被称为命中,当cache中没有cpu所需的数据时(这时称为未命中),cpu才访问内存.
从理论上讲,在一颗拥有2级cache的cpu中,读取l1cache的命中率为80%.也就是说cpu从l1cache中找到的有用数据占数据总量的80%,剩下的20%从l2cache读取.由于不能准确预测将要执行的数据,读取l2的命中率也在80%左右(从l2读到有用的数据占总数据的16%).那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了.在一些高端领域的cpu(像intel的itanium)中,我们常听到l3cache,它是为读取l2cache后未命中的数据设计的—种cache,在拥有l3cache的cpu中,只有约5%的数据需要从内存中调用,这进一步提高了cpu的效率.
为了保证cpu访问时有较高的命中率,cache中的内容应该按一定的算法替换.一种较常用的算法是“最近最少使用算法”(lru算法),它是将最近一段时间内最少被访问过的行淘汰出局.因此需要为每行设置一个计数器,lru算法是把命中行的计数器清零,其他各行计数器加1.当需要替换时淘汰行计数器计数值最大的数据行出局.这是一种高效.科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出cache,提高cache的利用率.
缓存技术的发展
总之,在传输速度有较大差异的设备间都可以利用cache作为匹配来调节差距,或者说是这些设备的传输通道.在显示系统.硬盘与光驱,以及网络通讯中,都需要使用cache技术.但cache均由静态ram组成,结构复杂,成本不菲,使用现有工艺在有限的面积内不可能做得很大,不过,这也正是技术前进的源动力,有需要才有进步!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-417684/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-417684/
本文详细介绍了高速缓存(cache)的基本原理及其在CPU中的应用。包括缓存的分类、读取机制、命中率等关键概念,并探讨了不同级别的缓存如何协同工作以提高CPU效率。
2561

被折叠的 条评论
为什么被折叠?



