cpu缓存有什么用 cpu缓存( 二 )


但基本上L3缓存对处理器的性能提高显得不是很重要, 比方配备1MB L3缓存的Xeon MP处理器却仍然不是Opteron的对手, 由此可见前端总线的增加, 要比缓存增加带来更有效的性能提升 。
速缓冲存储器Cache是位于CPU与内存之间的临时存储器, 它的容量比内存小但交换速度快 。
在Cache中的数据是内存中的一小部分, 但这一小部分是短时间内CPU即将访问的, 当CPU调用大量数据时, 就可避开内存直接从Cache中调用, 从而加快读取速度 。 由此可见, 在CPU中加入Cache是一种高效的解决方案, 这样整个内存储器(Cache+内存)就变成了既有Cache的高速度, 又有内存的大容量的存储系统了 。
Cache对CPU的性能影响很大, 主要是因为CPU的数据交换顺序和CPU与Cache间的带宽引起的 。
高速缓存的工作原理
1、读取顺序
CPU要读取一个数据时, 首先从Cache中查找, 如果找到就立即读取并送给CPU处理;如果没有找到, 就用相对慢的速度从内存中读取并送给CPU处理, 同时把这个数据所在的数据块调入Cache中, 可以使得以后对整块数据的读取都从Cache中进行, 不必再调用内存 。
正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右), 也就是说CPU下一次要读取的数据90%都在Cache中, 只有大约10%需要从内存读取 。 这大大节省了CPU直接读取内存的时间, 也使CPU读取数据时基本无需等待 。 总的来说, CPU读取数据的顺序是先Cache后内存 。
2、缓存分类
前面是把Cache作为一个整体来考虑的, 现在要分类分析了 。 Intel从Pentium开始将Cache分开, 通常分为一级高速缓存L1和二级高速缓存L2 。 在以往的观念中, L1 Cache是集成在CPU中的, 被称为片内Cache 。 在L1中还分数据Cache(I-Cache)和指令Cache(D-Cache) 。 它们分别用来存放数据和执行这些数据的指令, 而且两个Cache可以同时被CPU访问, 减少了争用Cache所造成的冲突, 提高了处理器效能 。
在P4处理器中使用了一种先进的一级指令Cache——动态跟踪缓存 。 它直接和执行单元及动态跟踪引擎相连, 通过动态跟踪引擎可以很快地找到所执行的指令, 并且将指令的顺序存储在追踪缓存里, 这样就减少了主执行循环的解码周期, 提高了处理器的运算效率 。
以前的L2 Cache没集成在CPU中, 而在主板上或与CPU集成在同一块电路板上, 因此也被称为片外Cache 。 但从PⅢ开始, 由于工艺的提高L2 Cache被集成在CPU内核中, 以相同于主频的速度工作, 结束了L2 Cache与CPU大差距分频的历史, 使L2 Cache与L1 Cache在性能上平等, 得到更高的传输速度 。 L2Cache只存储数据, 因此不分数据Cache和指令Cache 。 在CPU核心不变化的情况下, 增加L2 Cache的容量能使性能提升, 同一核心的CPU高低端之分往往也是在L2 Cache上做手脚, 可见L2 Cache的重要性 。 现在CPU的L1 Cache与L2 Cache惟一区别在于读取顺序 。
3、读取命中率
CPU在Cache中找到有用的数据被称为命中, 当Cache中没有CPU所需的数据时(这时称为未命中), CPU才访问内存 。 从理论上讲, 在一颗拥有2级Cache的CPU中, 读取L1 Cache的命中率为80% 。 也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%, 剩下的20%从L2 Cache读取 。 由于不能准确预测将要执行的数据, 读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%) 。 那么还有的数据就不得不从内存调用, 但这已经是一个相当小的比例了 。 在一些高端领域的CPU(像Intel的Itanium)中, 我们常听到L3 Cache, 它是为读取L2 Cache后未命中的数据设计的—种Cache, 在拥有L3 Cache的CPU中, 只有约5%的数据需要从内存中调用, 这进一步提高了CPU的效率 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。