二级缓存容量
计算机学术语
所谓处理器缓存,通常指的是二级高速缓存,或外部高速缓存。即高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic RAM)之间的规模较小的但速度很高的存储器,通常由SRAM(静态随机存储器)组成。
基本介
缓存定义
CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
设计思想
处理器缓存的基本思想是用少量的SRAM作为CPU与DRAM存储系统之间的缓冲区,即Cache系统。80486以及更高档微处理器的一个显著特点是处理器芯片内集成了SRAM作为Cache,由于这些Cache装在芯片内,因此称为片内Cache。486芯片内Cache的容量通常为8K。高档芯片如Pentium为16KB,Power PC可达32KB。Pentium微处理器进一步改进片内Cache,采用数据和双通道Cache技术,相对而言,片内Cache的容量不大,但是非常灵活、方便,极大地提高了微处理器的性能。片内Cache也称为一级Cache。由于486,586等高档处理器的时钟频率很高,一旦出现一级Cache未命中的情况,性能将明显恶化。在这种情况下采用的办法是在处理器芯片之外再加Cache,称为二级Cache。二级Cache实际上是CPU和主存之间的真正缓冲。由于系统板上的响应时间远低于CPU的速度,如果没有二级Cache就不可能达到486,586等高档处理器的理想速度。二级Cache的容量通常应比一级Cache大一个数量级以上。在系统设置中,常要求用户确定二级Cache是否安装及尺寸大小等。二级Cache的大小一般为128KB、256KB或512KB。在486以上档次的微机中,普遍采用256KB或512KB同步Cache。所谓同步是指Cache和CPU采用了相同的时钟周期,以相同的速度同步工作。相对于异步Cache,性能可提高30%以上。
工作原理
缓存的工作原理是当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的重要性。
CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
缓存算法
为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近的一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。
缓存容量
CPU尽可能地让用过的指令放在手边,当CPU需要指令的时候,它首先在它的一级缓存中查找,一级缓存就是存放用过的指令的地方。在PIII或赛扬II中,一级缓存的大小为32K,与CPU同速。如果CPU在一级缓存中找不到它所需的指令,就发生通常称为缓存遗漏(cache miss)的现象。 当CPU在一级缓存中发现缓存遗漏的时候,就会转到二级缓存中查找所需的指令。PIII的二级缓存大小为256K,与CPU核心速度相同,赛扬II中的二级缓存大小为128K。当二级缓存中出现缓存遗漏时,计算机就转向系统内存。系统内存的频率一般为100MHz,PC133的速度是133MHz。 在果在这些地方都找不到所需指令,计算机就只好向硬盘提出读取请求了。如果所需指令连硬盘上都找不到,就只好说明你根本没有操作系统,也就是说系统根本不能运行了。在这里,硬盘是计算机中最慢的部分了。更多更快的内存,就是为了把所需指令全都放在一、二级缓存和系统内存中。这样,当计算机向硬盘请求指令的时候,一次可以获得许多,性能大大提高。这同时也避免了反复读取硬盘,造成硬盘负荷沉重。
重要作用
性能影响
现代桌面级PC的CPU二级缓存容量大多数在64KB到2MB之间。因为CPU二级缓存容量对CPU性能有不小的影响,所以低端CPU和中高端CPU在物理结构上的差异主要就是二级缓存容量的大小。那么二级缓存容量为什么如此重要?它对CPU性能有什么样的影响呢?
CPU二级缓存作为一级缓存的“后备仓库”,用于为一级缓存存储更多的数据,减少CPU直接访问内存 的次数。理论上,CPU访问并调用缓存的数据所占的比重越大,则CPU访问并调用内存的数据所占的比重就越小,那么因访问内存而耽误的时间 就越少。所以缓存的容量越大,CPU的实际效率也就越高,性能就越强。
逻辑差异
实际上,Intel和AMD处理器一级缓存逻辑结构设计上有所不同,所以二级缓存对CPU性能的影响也不尽相同。因为CPU读取的 数据(包括指令)中有80%的数据来自一级缓存,所以一级缓存逻辑结构决定了CPU二级缓存容量对CPU性能的影响。Intel的Pentium 4及Celeron系列处理器的一级数据缓存被称为“数据代码指令追踪(读写)缓存”;AMD的Athlon 64/Athlon XP/Sempron/Duron系列处理器 的一级数据缓存叫作“实数据读写缓存”。
但是在“数据代码指令追踪缓存”架构的CPU中,一级数据缓存并不存储这些最先用到的数据(“1、2……449、450”),而是将这些数据存储到二级缓存中,一级数据缓存仅仅存储这些数据在二级缓存中的起止地址(又称为:指令代码)。例如,数据“1、2……449、450” 顺序存储在二级缓存中,数据“1”所在地址为“00001F”,数据“450” 所在地址为“00451F”,实际上一级数据缓存只需要存储“00001F”和“00451F”这两个地址就可以了,而不需要存储大量的数据。
分类
AMD
Athlon 64 X2 CPU的核心主要有Manchester和Toledo两种,他们的二级缓存都是CPU内部两个内核具有互相独立的二级缓存,其中,Manchester核心为每核心512KB,而Toledo核心为每核心1MB。处理器内部的两个内核之间的缓存数据同步是依靠CPU内置的System Request Interface(系统请求接口,SRI)控制,传输在CPU内部即可实现。这样一来,不但CPU资源占用很小,而且不必占用内存总线资源,数据延迟也比Intel的Smithfield核心和Presler核心大为减少,协作效率明显胜过这两种核心。不过,由于这种方式仍然是两个内核的缓存相互独立,从架构上来看也明显不如以Yonah核心为代表的Intel的共享缓存技术Smart Cache。
Intel
Intel的双核心CPU主要有Pentium D、Pentium EE、Core Duo三种,其中Pentium D、Pentium EE的二级缓存方式完全相同。Pentium D和Pentium EE的二级缓存都是CPU内部两个内核具有互相独立的二级缓存,其中,8xx系列的Smithfield核心CPU为每核心1MB,而9xx系列的Presler核心CPU为每核心2MB。这种CPU内部的两个内核之间的缓存数据同步是依靠位于主板北桥芯片上的仲裁单元通过前端总线在两个核心之间传输来实现的,所以其数据延迟问题比较严重,性能并不尽如人意。
Core Duo使用的核心为Yonah,它的二级缓存则是两个核心共享2MB的二级缓存,共享式的二级缓存配合Intel的“Smart cache”共享缓存技术,实现了真正意义上的缓存数据同步,大幅度降低了数据延迟,减少了对前端总线的占用,性能表现不错,是双核心处理器上最先进的二级缓存架构。今后Intel的双核心处理器的二级缓存都会采用这种两个内核共享二级缓存的“Smart cache”共享缓存技术。
重要意义
工作原则
缓存工作的原则,就是“引用的局部性”,这可以分为时间局部性和空间局部性。空间局部性是指CPU在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据;时间局部性是指当某个数据被访问过一次之后,过不了多久时间就会被再一次访问。对于应用程序而言,不管是指令流还是数据流都会出现引用的局部性现象。
举个简单的例子,比如在播放DVD影片的时候,DVD数据由一系列字节组成,这个时候CPU会依次从头处理到尾地调用DVD数据,如果CPU这次读取DVD数据为1分30秒,那么下次读取的时候就会从1分31秒开始,因此这种情况下有序排列的数据都是依次被读入CPU进行处理。从数据上来看,对于Word一类的应用程序通常都有着较好的空间局部性。用户在使用中不会一次打开7、8个文档,不讳在其中某一个文档中打上几个词就换一个。大多数用户都是打开一两个文档,然后就是长时间对它们进行处理而不会做其他事情。这样在内存中的数据都会集中在一个区域中,也就可以被CPU集中处理。
代码设计
从程序代码上来考虑,设计者通常也会尽量避免出现程序的跳跃和分支,让CPU可以不中断地处理大块连续数据。游戏、模拟和多媒体处理程序通常都是这方面的代表,以小段代码连续处理大块数据。不过在办公运用程序中,情况就不一样了。改动字体,改变格式,保存文档,都需要程序代码不同部分起作用,而用到的指令通常都不会在一个连续的区域中。于是CPU就不得不在内存中不断跳来跳去寻找需要的代码。这也就意味着对于办公程序而言,需要较大的缓存来读入大多数经常使用的代码,把它们放在一个连续的区域中。如果缓存不够,就需要缓存中的数据,而如果缓存足够大的话,所有的代码都可以放入,也就可以获得最高的效率。同理,高端的数据应用以及游戏应用则需要更高容量的缓存。
制作工艺
二级缓存很重要,简单的理解就是:二级缓存(即L2)的大小是衡量CPU性能的一个重要指标。L2太小,即使处理器速度很快,那也无法把数据即时传入进行处理,将会制约处理器的整体性能。 CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、256KB、512KB、1MB、2MB等。一级缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键。二级缓存容量的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部晶体管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高。
二级缓存
缓存与命中
总所周知,处理器在缓存中找到需要的数据称为“命中”,只有当缓存中没有处理器所需的数据时(此时称为未命中),处理器才会对内存进行访问。鉴于处理器大都具有一级缓存和二级缓存。打个比方,比如在一颗拥有二级缓存的处理器中,处理器读取一级缓存的命中率为80%,这说明处理器在一级缓存中能够找到的所需要的数据占所需数据总量的80%,另外剩下的20%处理器将会从二级缓存中去寻找,剩下的这20%数据是不可能从二级缓存中全部找到的,也会出现“未命中”,所以我们在此假定二级缓存的“命中率”也同样为80%,找到剩余20%所需数据中的80%,那么还有总数据量的4%没有被命中,此时处理器就不得不从内存中去调用这剩下的4%。
性能
介于从处理器内部到一级缓存、二级缓存最后到内存的所需时间会越来越慢,所以缓存的命中率和主频在理论上也会影响到缓存的性能表现,但实际使用中,纯理论的情况会出现吗?下面就通过测试来检验一下。
在《Quake4》的测试中,主频共同提升到3.2G之后,512KB与1MB的性能差距从原有的23%下降到了20%。2MB与4MB的性能差距则有微弱的提升,从原有的8%提高到了9%。512KB与6MB的性能差距则没有变化,主频从2.66G提高到3.2G之后,两者的性能差距依旧保持在相同的59%上。
在《半条命2》的测试中,512KB与1MB的性能差距从原有的23%提高到了25%。2MB与4MB的性能差距则有提升,从原有的25%提高到了28%。512KB与6MB的性能差距提升相对明显,性能差距从2.66G主频下的102%提高到了3.2G下的120%,有18%的提高。
在《英雄连》的测试中,提升频率之后的512KB二级缓存和1MB二级缓存的性能差距为40%,略高于在2.66G主频下的37%。而2MB与4MB的性能差距则从原有的14%提高到了16%。512KB与6MB的性能差距从原有的123%提高到了131%,可见在《英雄连》这种对处理器非常敏感的游戏中,主频越高,越能更好的发挥出大二级缓存的优势。
通过上面的测试我们可以大致了解到,随着主频的提高,在大多数情况下,不同容量的二级缓存在性能上确实会有更大的性能差距。但是与主频的提升并不成正比,在原有的基数比例下,当主频同步提升20%的情况下,游戏中大致会出现8%左右的缓存性能增长,最高时也仅仅达到18%(《半条命2》中)。
主频
一部分人都会有主频越高,缓存“命中”率越大的认识,因为主频的提高,自然会提高高速缓存与主缓存的存取时间,也有的会拿{Cache“命中”率=(平均存取时间-主存存取时间)/(高速缓存存取时间-主存存取时间)}这个公式来换算,但是这样的计算结果显然是没有任何实际意义。因为当今缓存的“命中”率中都会采取极为高效、科学的算法来提高缓存的效率。在这种学术问题上永远都会存在争议,在这个问题上也没有必要较真儿,作为消费者和玩家只需要知道,主频的提高确实会提高缓存性能就可以了。
技术应用
新的45nm工艺的使得Intel公司的工程师能够在处理器核心内部放入更多的电子管。在此之前65nm双核心Conroe E4XXX处理器共享二级缓存的容量为2M,而新款45nmWolfdale E7XXX处理器却可以拥有3M的二级缓存,45nm E8XXX集成了6M的二级缓存。 45nm处理器除了二级缓存容量相比上代65nm产品高出50%以外,缓存的相联度也有大幅度提升,拥有3MBL2缓存的Core 2 Duo E7000系列采用12-way,相对于采用8-way设计的E4000增加了一级;拥有6MB L2 cache的E8000则采用24-way相联度设计,这就相当于在容量提升50%的同时位宽也同比提升。
容量影响
CPU性能
假设有一个运算任务,要从“1”一直递加到“999999”。在传统的“实数据读写缓存”架构下,这一系列数据中最先用到的数据(如“1、2……449、450”)将存储在CPU一级数据缓存中,更多的数据(如“451、452……899999、900000”)存储在CPU二级缓存中,其余的数据(如“900001、999002……999998、999999”)暂存在内存中,CPU将按照一级数据缓存、二级缓存和内存的顺序读取这些数据。
一级缓存的存储方式
但是由于其一级数据缓存不存储数据,数据存储在二级缓存中,因此对二级缓存容量的依赖非常大,所以CPU需要更大的二级缓存容量才能发挥出应有的性能。在实际应用中,CPU处理的数据中大多数都是0KB~128KB大小的数据,128KB~256KB的数据约有10%,256KB~512KB的数据有5%,512KB~1MB的数据仅有3%左右。所以对于这种CPU来说,二级缓存容量从0KB增加到256KB对CPU性能的提高几乎是直线性的;增加到512KB对CPU性能的提高稍微小一些;从512KB增加到1MB,普通用户就很难体会到CPU性能有提高了。正因为如此,大家能感受到Pentium 4 C(512KB二级缓存)与Celeron(128KB二级缓存)的性能差异,却很难感受到Pentium 4C(512KB二级缓存)与Pentium 4 E(1MB二级缓存)的性能差异了。
例如,同为2.8GHz主频的Celeron D(256KB二级缓存)和Pentium 4 E(1MB二级缓存)运算104万位的耗时分别为56秒和48秒 ,除去外频(前者为133MHz,后者为200MHz)的差异和超线程技术的影响,两者的性能差距只有10%左右,对于普通用户而言这样的性能差距 是微不足道的;只有对CPU运算性能要求“苛刻”的玩家来说更大的二级缓存容量才是必须的。
相对的,由于AMD的Athlon 64/Athlon XP/Sempron/Duron系列产品的一级数据缓存直接存储数据,而且128KB的容量在大多数情况下就 可以承担CPU所急需的数据,所以其二级缓存对CPU性能的影响并没有那么大。这也就解释了为什么主频外频相同的Athlon XP(256KB或512KB二级缓存)和Duron(64KB二级缓存)虽然二级缓存容量差异巨大,但实际性能差距不大的原因。而且Athlon 64/Sempron 系列CPU在内存控制器、流水线长度、频率、总线架构和扩展指令集等诸多方面与以前的产品都有差异,因此在性能上受二级缓存容量的影响就 更小了。综上所述,在CPU性能方面,并非只从二级缓存容量上作对比就可以得到准确的答案,实际上还要考虑到缓存的总体设计结构、一级数 据缓存容量等因素。虽然从总体上来讲,二级缓存容量越大越好,但是并不是二级缓存容量提高一倍就能使CPU性能提升一倍。因此对于一般家 庭用户来说,电脑主要是用来上网、欣赏音乐和电影以及文字处理,二级缓存为256KB的Celeron D或Sempron已经足够了。只有对3D游戏、办公软件和多媒体编辑性能要求较高的用户才需要更大二级缓存的CPU。
服务器
用来存放那些被CPU频繁使用的数据,以便使CPU不必依赖于速度较慢的DRAM(动态随机存储器)。L2高速缓存一直都属于速度极快而价格也相当昂贵的一类内存,称为SRAM(静态RAM),SRAM(Static RAM)是静态存储器的英文缩写。由于SRAM采用了与制作CPU相同的半导体工艺,因此与动态存储器DRAM比较,SRAM的存取速度快,但体积较大,价格很高。
PC及其服务器系统的发展趋势之一是CPU主频越做越高,系统架构越做越先进,而主存DRAM的结构和存取时间改进较慢。因此,缓存(Cache)技术愈显重要,在PC系统中Cache越做越大。广大用户已把Cache做为评价和选购PC系统的一个重要指标。
最新修订时间:2024-05-21 14:13
目录
概述
基本介
参考资料