例如Northwood核心的一级缓存为8KB 12KμOps , 就表示其一级数据缓存为8KB , 一级追踪缓存为12KμOps;而Prescott核心的一级缓存为16KB 12KμOps , 就表示其一级数据缓存为16KB , 一级追踪缓存为12KμOps 。 在这里12KμOps绝对不等于12KB , 单位都不同 , 一个是μOps , 一个是Byte(字节) , 而且二者的运行机制完全不同 。 所以那些把Intel的CPU一级缓存简单相加 , 例如把Northwood核心说成是20KB一级缓存 , 把Prescott核心说成是28KB一级缓存 , 并且据此认为Intel处理器的一级缓存容量远远低于AMD处理器128KB的一级缓存容量的看法是完全错误的 , 二者不具有可比性 。 在架构有一定区别的CPU对比中,很多缓存已经难以找到对应的东西,即使类似名称的缓存在设计思路和功能定义上也有区别了 , 此时不能用简单的算术加法来进行对比;而在架构极为近似的CPU对比中 , 分别对比各种功能缓存大小才有一定的意义 。
CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器 , 它的容量比内存小但交换速度快 。 在缓存中的数据是内存中的一小部分 , 但这一小部分是短时间内CPU即将访问的 , 当CPU调用大量数据时 , 就可避开内存直接从缓存中调用 , 从而加快读取速度 。 由此可见 , 在CPU中加入缓存是一种高效的解决方案 , 这样整个内存储器(缓存 内存)就变成了既有缓存的高速度 , 又有内存的大容量的存储系统了 。 缓存对CPU的性能影响很大 , 主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的 。
缓存的工作原理是当CPU要读取一个数据时 , 首先从缓存中查找 , 如果找到就立即读取并送给CPU处理;如果没有找到 , 就用相对慢的速度从内存中读取并送给CPU处理 , 同时把这个数据所在的数据块调入缓存中 , 可以使得以后对整块数据的读取都从缓存中进行 , 不必再调用内存 。
正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右) , 也就是说CPU下一次要读取的数据90%都在缓存中 , 只有大约10%需要从内存读取 。 这大大节省了CPU直接读取内存的时间 , 也使CPU读取数据时基本无需等待 。 总的来说 , CPU读取数据的顺序是先缓存后内存 。
最早先的CPU缓存是个整体的 , 而且容量很低 , 英特尔公司从Pentium时代开始把缓存进行了分类 。 当时集成在CPU内核中的缓存已不足以满足CPU的需求 , 而制造工艺上的限制又不能大幅度提高缓存的容量 。 因此出现了集成在与CPU同一块电路板上或主板上的缓存 , 此时就把 CPU内核集成的缓存称为一级缓存 , 而外部的称为二级缓存 。 一级缓存中还分数据缓存(Data Cache , D-Cache)和指令缓存(Instruction Cache , I-Cache) 。 二者分别用来存放数据和执行这些数据的指令 , 而且两者可以同时被CPU访问 , 减少了争用Cache所造成的冲突 , 提高了处理器效能 。 英特尔公司在推出Pentium 4处理器时 , 用新增的一种一级追踪缓存替代指令缓存 , 容量为12KμOps , 表示能存储12K条微指令 。
随着CPU制造工艺的发展 , 二级缓存也能轻易的集成在CPU内核中 , 容量也在逐年提升 。 现在再用集成在CPU内部与否来定义一、二级缓存 , 已不确切 。 而且随着二级缓存被集成入CPU内核中 , 以往二级缓存与CPU大差距分频的情况也被改变 , 此时其以相同于主频的速度工作 , 可以为CPU提供更高的传输速度 。
二级缓存是CPU性能表现的关键之一 , 在CPU核心不变化的情况下 , 增加二级缓存容量能使性能大幅度提高 。 而同一核心的CPU高低端之分往往也是在二级缓存上有差异 , 由此可见二级缓存对于CPU的重要性 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
