正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右) , 也就是说CPU下一次要读取的数据90%都在缓存中 , 只有大约10%需要从内存读取 。 这大大节省了CPU直接读取内存的时间 , 也使CPU读取数据时基本无需等待 。 总的来说 , CPU读取数据的顺序是先缓存后内存 。
目前缓存基本上都是采用SRAM存储器 , SRAM是英文Static RAM的缩写 , 它是一种具有静志存取功能的存储器 , 不需要刷新电路即能保存它内部存储的数据 。 不像DRAM内存那样需要刷新电路 , 每隔一段时间 , 固定要对DRAM刷新充电一次 , 否则内部的数据即会消失 , 因此SRAM具有较高的性能 , 但是SRAM也有它的缺点 , 即它的集成度较低 , 相同容量的DRAM内存可以设计为较小的体积 , 但是SRAM却需要很大的体积 , 这也是目前不能将缓存容量做得太大的重要原因 。 它的特点归纳如下:优点是节能、速度快、不必配合内存刷新电路、可提高整体的工作效率 , 缺点是集成度低、相同的容量体积较大、而且价格较高 , 只能少量用于关键性系统以提高效率 。
按照数据读取顺序和与CPU结合的紧密程度 , CPU缓存可以分为一级缓存 , 二级缓存 , 部分高端CPU还具有三级缓存 , 每一级缓存中所储存的全部数据都是下一级缓存的一部分 , 这三种缓存的技术难度和制造成本是相对递减的 , 所以其容量也是相对递增的 。 当CPU要读取一个数据时 , 首先从一级缓存中查找 , 如果没有找到再从二级缓存中查找 , 如果还是没有就从三级缓存或内存中查找 。 一般来说 , 每级缓存的命中率大概都在80%左右 , 也就是说全部数据量的80%都可以在一级缓存中找到 , 只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取 , 由此可见一级缓存是整个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处理器在使用超线程技术时会导致性能下降的重要原因 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
