對於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秒