L1 Cache(一级缓存)是CPU第一层高速缓存 , 分为数据缓存和指令缓存 。 内置的L1高速缓存的容量和结构对CPU的性能影响较大 , 不过高速缓冲存储器均由静态RAM组成 , 结构较复杂 , 在CPU管芯面积不能太大的情况下 , L1级高速缓存的容量不可能做得太大 。 一般服务器CPU的L1缓存的容量通常在32—256KB 。
L2 Cache(二级缓存)是CPU的第二层高速缓存 , 分内部和外部两种芯片 。 内部的芯片二级缓存运行速度与主频相同 , 而外部的二级缓存则只有主频的一半 。 L2高速缓存容量也会影响CPU的性能 , 原则是越大越好 , 现在家庭用CPU容量最大的是4MB , 而服务器和工作站上用CPU的L2高速缓存更高达2MB—4MB , 有的高达8MB或者19MB 。
L3 Cache(三级缓存) , 分为两种 , 早期的是外置 , 现在的都是内置的 。 而它的实际作用即是 , L3缓存的应用可以进一步降低内存延迟 , 同时提升大数据量计算时处理器的性能 。 降低内存延迟和提升大数据量计算能力对游戏都很有帮助 。 而在服务器领域增加L3缓存在性能方面仍然有显著的提升 。 比方具有较大L3缓存的配置利用物理内存会更有效 , 故它比较慢的磁盘I/O子系统可以处理更多的数据请求 。 具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度 。
其实最早的L3缓存被应用在AMD发布的K6-III处理器上 , 当时的L3缓存受限于制造工艺 , 并没有被集成进芯片内部 , 而是集成在主板上 。 在只能够和系统总线频率同步的L3缓存同主内存其实差不了多少 。 后来使用L3缓存的是英特尔为服务器市场所推出的Itanium处理器 。 接着就是P4EE和至强MP 。 Intel还打算推出一款9MB L3缓存的Itanium2处理器 , 和以后24MB L3缓存的双核心Itanium2处理器 。
但基本上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所造成的冲突 , 提高了处理器效能 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
