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


一级缓存(Level 1 Cache)简称L1 Cache, 位于CPU内核的旁边, 是与CPU结合最为紧密的CPU缓存, 也是历史上最早出现的CPU缓存 。 由于一级缓存的技术难度和制造成本最高, 提高容量所带来的技术难度增加和成本增加非常大, 所带来的性能提升却不明显, 性价比很低, 而且现有的一级缓存的命中率已经很高, 所以一级缓存是所有缓存中容量最小的, 比二级缓存要小得多 。
一般来说, 一级缓存可以分为一级数据缓存(Data Cache, D-Cache)和一级指令缓存(Instruction Cache, I-Cache) 。
二者分别用来存放数据以及对执行这些数据的指令进行即时解码, 而且两者可以同时被CPU访问, 减少了争用Cache所造成的冲突, 提高了处理器效能 。 目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量, 例如AMD的Athlon XP就具有64KB的一级数据缓存和64KB的一级指令缓存, 其一级缓存就以64KB 64KB来表示, 其余的CPU的一级缓存表示方法以此类推 。
Intel的采用NetBurst架构的CPU(最典型的就是Pentium 4)的一级缓存有点特殊, 使用了新增加的一种一级追踪缓存(Execution Trace Cache, T-Cache或ETC)来替代一级指令缓存, 容量为12KμOps, 表示能存储12K条即12000条解码后的微指令 。 一级追踪缓存与一级指令缓存的运行机制是不相同的, 一级指令缓存只是对指令作即时的解码而并不会储存这些指令, 而一级追踪缓存同样会将一些指令作解码, 这些指令称为微指令(micro-ops),而这些微指令能储存在一级追踪缓存之内, 无需每一次都作出解码的程序, 因此一级追踪缓存能有效地增加在高工作频率下对指令的解码能力, 而μOps就是micro-ops, 也就是微型操作的意思 。 它以很高的速度将μops提供给处理器核心 。 Intel NetBurst微型架构使用执行跟踪缓存, 将解码器从执行循环中分离出来 。 这个跟踪缓存以很高的带宽将uops提供给核心, 从本质上适于充分利用软件中的指令级并行机制 。 Intel并没有公布一级追踪缓存的实际容量,只知道一级追踪缓存能储存12000条微指令(micro-ops) 。 所以, 我们不能简单地用微指令的数目来比较指令缓存的大小 。 实际上, 单核心的NetBurst架构CPU使用8Kμops的缓存已经基本上够用了, 多出的4kμops可以大大提高缓存命中率 。 而如果要使用超线程技术的话, 12KμOps就会有些不够用, 这就是为什么有时候Intel处理器在使用超线程技术时会导致性能下降的重要原因 。
例如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与缓存间的带宽引起的 。

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