Board logo

标题: 二级缓存问题(专帖) [打印本页]

作者: tudou    时间: 2006-7-3 08:52     标题: 二级缓存问题(专帖)

对于CPU二级缓存(L2 Cache)的作用,想必大家都多多少少有一定了解,即使不完全明白其中道理,至少也可以从Pentium 4和Celeron的差价判断出其重要性—256KB二级缓存的Celeron D 2.4GHz比512KB二级缓存的Pentium 4 2.4C便宜近一半。如果这时候有人说Windows XP操作系统并没有充分利用CPU的二级缓存,你会怎么想?这简直就是在浪费用户的投资嘛!

事实上,有一种广为流传的说法是Windows XP没有对CPU进行优化,理由就是它默认状态下并没有打开CPU的二级缓存。如果你打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Session Manager\Memory Management”,在其中可以看到一个名为“SecondLevelDataCache”的项,它的默认值为“0”。再明显不过了,“SecondLevelDataCache”就是二级数据缓存的意思,既然被设置为“0”,那就是关闭了二级缓存。

正是基于以上论断,才出现了优化二级缓存的技巧,也就是把“SecondLevelDataCache”的值设置为CPU的二级缓存容量(单位KB)。在众多的优化软件中也包含了优化CPU二级缓存的设置,例如“超级兔子魔法设置”、“Windows优化大师”和PcMedik等。这样的优化到底有多大的效果呢?还是让事实说话比较好,请看我们进行的对比测试。

从测试结果来看,修改“SecondLevel DataCache”的值对测试结果没有任何影响,这是为什么呢?事实上,在微软的知识库文章(http://support.microsoft.com/default.aspx?scid=kb;en-us;183063)中可以看到,从Windows NT4开始,“SecondLevelData Cache”的默认设置就已经是“0”了。这篇文章指出,当“SecondLevelDataCache”为“0”时,系统会尝试通过硬件抽象层(Hardware Abstraction Layer,HAL)获取二级缓存容量,即便是硬件抽象层无法获取二级缓存容量,系统也默认设定二级缓存为256KB,而不是完全关闭二级缓存。在另外一篇Windows 2000的知识库文章中(http://support.microsoft.com/default.aspx?scid=kb;en-us;228766)中,明确地告诉用户,一些第三方资料宣称修改“SecondLevelDataCache”可以优化系统性能,这是不正确的。Windows XP与Windows NT4/2000都是NT内核,因此在设计上具有一定的继承性,虽然这两篇知识库文章并不是直接针对Windows XP提出的,但可以看到这个问题由来已久,Windows NT系列操作系统在最初就已经把这个问题考虑周全了。

从实际测试的结果和微软知识库文章的解释可以得出结论,所谓的Windows系统没有对CPU进行优化的说法是错误的,虽然手动修改“SecondLevelDataCache”也没有带来什么负面影响,但这种“优化”绝对是多此一举。

测试平台:


CPU Pentium 4 2.8E
主板 微星865PE Neo2
内存 Kingston DDR400(256MB×2)
硬盘 Maxtor Plus 9 120GB(SATA)
显卡 ELSA影雷者FX534DV
操作系统 Windows XP Pro+SP1

SecondLevelDataCache Super Pi 209万位测试


0 110秒
1024 110秒
512 110秒
256 110秒
128 110秒
64 110秒
32 110秒
16 110秒
8 110秒
作者: wangjiawei    时间: 2006-9-22 17:41

学习了!
谢谢楼主!
作者: sgb349    时间: 2006-9-29 14:10

我发现我开了之后,反而慢了
作者: rock269    时间: 2006-10-1 20:51

谣言听多了,假的也会变成真的了
作者: 网虫    时间: 2006-10-4 14:47

就好像固定网卡IP一样,手动指定后可快速定位……定位之后,和自动获取的没有任何性能区别……但区别在于获取之前……
作者: 雪地龙    时间: 2006-10-7 00:23

好哎,这才是真实的嘛




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn./) Powered by Discuz! 7.2