资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
兰州大学信息科学与工程学院从 CPU 内部一级二级三级缓存存储器容量变化来看存储器技术发展黄来君2012/5/6从 CPU 内部一级二级三级缓存存储器容量变化来看存储器技术发展目录:1、简介 2、工作原理3、各级缓存详解 4、技术发展5、总结一、简介CPU 缓存(Cache Memory)位于 CPU 与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内 CPU 即将访问的,当 CPU 调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在 CPU 中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对 CPU 的性能影响很大,主要是因为 CPU 的带宽引起的。缓存是为了解决 CPU 速度和内存速度的速度差异问题。内存中被 CPU 访问最频繁的数据和指令被复制入 CPU 中的缓存,这样CPU 就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU 只要到缓存中去取就行了,而缓存的速度要比内存快很多。 (图一)二、工作原理CPU 缓存(Cache Memory)是位于 CPU 与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决 CPU 运算速度与内存读写速度不匹配的矛盾,因为 CPU 运算速度要比内存读写速度快很多,这样会使 CPU 花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内 CPU 即将访问的,当 CPU 调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在 CPU 中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对 CPU 的性能影响很大,主要是因为 CPU 的数据交换顺序和 CPU 与缓存间的带宽引起的。缓存的工作原理是当 CPU 要读取一个数据时,首先从缓存中查找,找到就立即读取并送给 CPU 处理;没有找到,就用相对慢的速度从内存中读取并送给 CPU 处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使 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 缓存架构中最为重要的部分。 (图二)三、各级缓存详解、一级缓存 cache1一级缓存(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)来替代一级指令缓存,容量为 12KOps,表示能存储 12K 条即 12000 条解码后的微指令。一级追踪缓存与一级指令缓存的运行机制是不相同的,一级指令缓存只是对指令作即时的解码而并不会储存这些指令,而一级追踪缓存同样会将一些指令作解码,这些指令称为微指令(micro-ops) ,而这些微指令能储存在一级追踪缓存之内,无需每一次都作出解码的程序,因此一级追踪缓存能有效地增加在高工作频率下对指令的解码能力,而 Ops 就是 micro-ops,也就是微型操作的意思。它以很高的速度将 ops 提供给处理器核心。Intel NetBurst 微型架构使用执行跟踪缓存,将解码器从执行循环中分离出来。这个跟踪缓存以很高的带宽将 uops提供给核心,从本质上适于充分利用软件中的指令级并行机制。Intel 并没有公布一级追踪缓存的实际容量,只知道一级追踪缓存能储存 12000 条微指令(micro-ops) 。所以,不能简单地用微指令的数目来比较指令缓存的大小。实际上,单核心的 NetBurst 架构 CPU 使用8Kops 的缓存已经基本上够用了,多出的 4kops 可以大大提高缓存命中率。而要使用超线程技术的话,12KOps 就会有些不够用,这就是为什么有时候 Intel 处理器在使用超线程技术时会导致性能下降的重要原因。例如 Northwood 核心的一级缓存为8KB+12KOps,就表示其一级数据缓存为 8KB,一级追踪缓存为 12KOps;而 Prescott 核心的一级缓存为 16KB+12KOps,就表示其一级数据缓存为 16KB,一级追踪缓存为12KOps。在这里 12KOps 绝对不等于 12KB,单位都不同,一个是 Ops,一个是Byte(字节) ,而且二者的运行机制完全不同。所以那些把 Intel 的 CPU 一级缓存简单相加,例如把 Northwood 核心说成是 20KB 一级缓存,把 Prescott 核心说成是 28KB 一级缓存,并且据此认为 Intel 处理器的一级缓存容量远远低于 AMD 处理器 128KB 的一级缓存容量的看法是完全错误的,二者不具有可比性。在架构有一定区别的 CPU 对比中,很多缓存已经难以找到对应的东西,即使类似名称的缓存在设计思路和功能定义上也有区别了,此时不能用简单的算术加法来进行对比;而在架构极为近似的 CPU 对比中,分别对比各种功能缓存大小才有一定的意义。(图三)、二级缓存二级缓存(Level2 cache) ,它是处理器内部的一些缓冲存储器,其作用跟内存一样。上溯到上个世纪 80 年代,由于处理器的运行速度越来越快,慢慢地,处理器需要从内存中读取数据的速度需求就越来越高了。然而内存的速度提升速度却很缓慢,而能高速读写数据的内存价格又非常高昂,不能大量采用。从性能价格比的角度出发,英特尔等处理器设计生产公司想到一个办法,就是用少量的高速内存和大量的低速内存结合使用,共同为处理器提供数据。这样就兼顾了性能和使用成本的最优。而那些高速的内存因为是处于 cpu和内存之间的位置,又是临时存放数据的地方,所以就叫做缓冲存储器了,简称“缓存” 。它的作用就像仓库中临时堆放货物的地方一样,货物从运输车辆上放下时临时堆放在缓存区中,然后再搬到内部存储区中长时间存放。货物在这段区域中存放的时间很短,就是一个临时货场。 最初缓存只有一级,后来处理器速度又提升了,一级缓存不够用了,于是就添加了二级缓存。二级缓存是比一级缓存速度更慢,容量更大的内存,主要就是做一级缓存和内存之间数据临时交换的地方用。为了适应速度更快的处理器 p4ee,已经出现了三级缓存了,它的容量更大,速度相对二级缓存也要慢一些,但是比内存可快多了。 缓存的出现使得 cpu 处理器的运行效率得到了大幅度的提升,这个区域中存放的都是 cpu 频繁要使用的数据,所以缓存越大处理器效率就越高,同时由于缓存的物理结构比内存复杂很多,所以其成本也很高。 大量使用二级缓存带来的结果是处理器运行效率的提升和成本价格的大幅度不等比提升。举个例子,服务器上用的至强处理器和普通的 p4 处理器其内核基本上是一样的,就是二级缓存不同。至强的二级缓存是 2mb16mb,p4 的二级缓存是512kb,于是最便宜的至强也比最贵的 p4 贵,原因就在二级缓存不同。即 l2 cache。由于l1 级高速缓存容量的限制,为了再次提高 cpu 的运算速度,在 cpu 外部放置一高速存储器,即二级缓存。工作主频比较灵活,可与 cpu 同频,也可不同。cpu 在读取数据时,先在 l1中寻找,再从 l2 寻找,然后是内存,在后是外存储器。所以 l2 对系统的影响也不容忽视。最早先的 cpu 缓存是个整体的,而且容量很低,英特尔公司从 pentium 时代开始把缓存进行了分类。当时集成在 cpu 内核中的缓存已不足以满足 cpu 的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与 cpu 同一块电路板上或主板上的缓存,此时就把 cpu 内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(data cache,d-cache)和指令缓存(instruction cache,i-cache) 。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被 cpu 访问,减少了争用cache 所造成的冲突,提高了处理器效能。英特尔公司在推出 pentium 4 处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为 12kops,表示能存储 12k 条微指令。随着cpu 制造工艺的发展,二级缓存也能轻易的集成在 cpu 内核中,容量也在逐年提升。再用集成在 cpu 内部与否来定义一、二级缓存,已不确切。而且随着二级缓存被集成入 cpu 内核中,以往二级缓存与 cpu 大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为 cpu 提供更高的传输速度。二级缓存分类:(一) 插在主板上的二级缓存 (图四)(二) 整合在 CPU 上的二级缓存(图五)(三) “胶水”式的二级缓存(图六)(四
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号