缓冲/存储技术
本文主要是关于二极缓存的介绍,并阐述了二级缓存是否损坏的查看方法,并探讨了二级缓存对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所造成的冲突,提高了处理器效能。
可以通过CPU-Z进行查看:
百度搜索CPU-Z,并进行下载安装;
运行已安装的软件,在界面上就能看到二级缓存信息:
如果在默认频率下仍然频繁死机,就很可能是这款处理器的二级缓存有缺陷,才造成无法稳定运行的。面对这种情况,除了更换处理器之外,还有一种解决方案就是在BIOS当中屏蔽CPU的二级缓存。操作方法比较简单,在开机时按住“Delete”即可进入BIOS界面。利用键盘上的方向键进行操作,并找到“CPU Level 2 Cache”选项(如图),将后面的参数从“Enabled”修改为“Disabled”。保存退出后重启电脑,电脑就可以稳定运行了。不过需要注意的是,由于将二级缓存关闭后会大幅度降低处理器的性能表现,所以系统的性能会受到很大的影响。不过即便是如此,酷睿处理器凭借强大的一级缓存,其性能也明显优于同频的奔腾处理器。
由于目前的新主板基本都没有禁用二级缓存的BIOS设计了,所以上述方法对于现在的新主板来说不再适用。在条件允许的情况下,最好还是不要购买ES版处理器。因为此类处理器本来就是工程样品,所以难免可能有各种各样的隐性问题。即便是图便宜要选购ES版处理器,也最好选择同城卖家,并要求对方提供与散装正式版处理器相同的保修服务。而如果对方拒绝提供保修,或者并不答应白纸黑字写下保修条款,那么所要购买的ES版处理器就很可能有猫腻。
现代桌面级PC的CPU二级缓存容量大多数在64KB到2MB之间。因为CPU二级缓存容量对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”一直递加到“999999”。在传统的“实数据读写缓存”架构下,这一系列数据中最先用到的数据(如 “1、2……449、450”)将存储在CPU一级数据缓存中,更多的数据(如“451、452……899999、900000”)存储在CPU二级缓存中,其余的数 据(如“900001、999002……999998、999999”)暂存在内存中,CPU将按照一级数据缓存、二级缓存和内存的顺序读取这些数据。
[#img_367743_no_1_Black#]
传统的一级数据缓存的存储方式
但是在“数据代码指令追踪缓存”架构的CPU中,一级数据缓存并不存储这些最先用到的数据(“1、2……449、450”),而是将这些 数据存储到二级缓存中,一级数据缓存仅仅存储这些数据在二级缓存中的起止地址(又称为:指令代码)。例如,数据“1、2……449、450” 顺序存储在二级缓存中,数据“1”所在地址为“00001F”,数据“450” 所在地址为“00451F”,实际上一级数据缓存只需要存储“00001F”和“00451F”这两个地址就可以了,而不需要存储大量的数据。
[#img_367747_no_1_Black#]
“数据代码指令追踪缓存”架构的一级数据缓存的存储方式
但是由于其一级数据缓存不存储数据,数据存储在二级缓存中,因此对二级缓存容量的依赖非常大,所以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 4 C(512KB二级缓存)与Pentium 4 E(1MB二级缓存)的性能差异了。
[#img_367748_no_1_Black#]
CPU处理数据大小的概率分布图
例如,同为2.8GHz主频的Celeron D(256KB二级缓存)和Pentium 4 E(1MB二级缓存)运算super π 104万位的耗时分别为56秒和48秒 ,除去外频(前者为133MHz,后者为200MHz)的差异和超线程技术的影响,两者的性能差距只有10%左右,对于普通用户而言这样的性能差距 是微不足道的;只有对CPU运算性能要求“苛刻”的玩家来说更大的二级缓存容量才是必须的。
[#img_367749_no_1_Black#]
Celeron D
[#img_367750_no_1_Black#]
Pentium 4 E
相对的,由于AMD的Athlon 64/Athlon XP/Sempron/Duron系列产品的一级数据缓存直接存储数据,而且128KB的容量在大多数情况下就 可以承担CPU所急需的数据,所以其二级缓存对CPU性能的影响并没有那么大。这也就解释了为什么主频和外频相同的Athlon XP(256KB或512KB二级缓存)和Duron(64KB二级缓存)虽然二级缓存容量差异巨大,但实际性能差距不大的原因。而且Athlon 64/Sempron 系列CPU在内存控制器、流水线长度、频率、总线架构和扩展指令集等诸多方面与以前的产品都有差异,因此在性能上受二级缓存容量的影响就 更小了。
[#img_367751_no_1_Black#]
Sempron
[#img_367752_no_1_Black#]
Athlon 64
综上所述,在CPU性能方面,并非只从二级缓存容量上作对比就可以得到准确的答案,实际上还要考虑到缓存的总体设计结构、一级数 据缓存容量等因素。虽然从总体上来讲,二级缓存容量越大越好,但是并不是二级缓存容量提高一倍就能使CPU性能提升一倍。因此对于一般家 庭用户来说,电脑主要是用来上网、欣赏音乐和电影以及文字处理,二级缓存为256KB的Celeron D或Sempron已经足够了。只有对3D游戏、办公软件和多媒体编辑性能要求较高的用户才需要更大二级缓存的CPU。
关于二级缓存的介绍就到这了,希望本文能让你对二级缓存有更全面的认识,如有不足之处欢迎指正。
全部0条评论
快来发表一下你的评论吧 !