在XP中預設未將CPU L2快取支援打開,為了讓電腦速度更快,以在登錄檔編輯器中,進入「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management」,然後在右窗格中點擊「SecondLevelDataCache」,並將數值改為所用的L2大小即可。這樣做真的能讓系統變快嗎?
Windows並沒有關閉L2快取,也不必特別設定
會出現這個謠言,主要是有人發現Windows登錄檔的機碼中,「SecondLevelDataCache」這個數值預設為「0」,如果按照字面上的意思直接判斷,就是:「L2快取的容量是0」。這怎麼得了?Windows竟然將重要的CPU L2快取關閉了!?難怪第一個發現的人會叫大家趕快修改登錄檔,把L2 Cache的數值設定回來。
不過有時字面上的意義不能全憑自己主觀判斷,還是要聽聽原本的設計者怎麼解釋。根據微軟知識庫「http://support.microsoft.com/kb/183063/zh-tw」的這一篇,有對SecondLevelDataCache做詳細的說明,大意是:Windows系統是從硬體抽象層(HAL)來偵測實際的CPU L2快取大小。換句話說,這顆CPU有多少L2快取,是由CPU來告訴Windows的,它說多少就是多少,這在硬體設計的時候就決定了,根本輪不到讓Windows自作主張。
SecondLevelDataCache的真正用途
那登錄檔裡面的「SecondLevelDataCache」是做來唬人的嗎?也不能這麼說,這是微軟為了以防萬一所做的設計。要是CPU在提供L2快取資訊時發生問題,導致Windows偵測不到正確的大小,那系統就會退而求其次,改為遵循登錄檔裡面的設定,暫時決定要用到多少L2快取。而SecondLevelDataCache的數值為「0」,並非是將L2 Cache容量設為0,而是表示用微軟預設的L2快取大小「256KB」。為什麼預設值是256KB,是因為XP推出的時期,一般CPU最少都是內建256KB的L2快取,所以用這個最小數值比較安全。
▲ 微軟都跳出來講話了,大家加減信一下吧!
理論上來說,Windows自動偵測CPU快取是不會出錯的,所以這個登錄碼算是備而不用,不管設成什麼數值都沒有關係。如果你要求心安,是可以把它改成你CPU真正的L2快取大小,現在CPU的L2 Cache都到2MB、4MB以上了,例如2MB就是將數值設為2048,但是其實真的沒有影響啦!
▲ 可以用CPU-Z(軟體王下載點請點我)這個軟體,來看看CPU上內建多大容量的L2,才去設定DWORD值。
這個登錄碼不能說完全沒有用,當HAL硬體資訊錯誤時,XP還是有機會載入它。不過機率微忽其微,真的到CPU出錯時,恐怕也得換一顆了。因此不用管這個設定,平時XP就已經用到全部L2快取了,並沒有關閉不用。
什麼是L2?
在CPU中,由於與外部裝置間溝通時,速度上差異很大,因此會在兩者之間加入記憶體暫存資料,等到需要時不用再透過匯流排去跟主機板上的記憶體要,而這層記憶體通常稱為快取,由於CPU較為特殊,是整台電腦的運算中心,因此區分為許多階層的快取記憶體,以防資料傳輸中斷影響系統效能。
第一層快取(Level1,簡稱L1)通常內建於CPU核心中,並與CPU相同時脈運作,而第二層快取(L2)通常比L1大很多,有的主機板甚至上頭還有設置快取記憶體(與我們買來插的記憶體不同),就稱為L3了。高容量的L2記憶體並不一定與效能成正比,還是要看CPU設計方式與軟體支援度,因此大部分商人強調的高容量L2,可以當作是一種宣傳手法,還是要看實際上的使用比較準確。
▲ 一個典型的雙核CPU晶圓圖,L2佔的面積頗大,且每個核心各具有一組L2。
一分鐘回顧正確觀念
這個參數不能說完全沒有用,因為XP還是有機會載入它,而且如果設定與實際上L2快取大小不相符的話,也會造成效能流失,不過感不感覺出來,可能就見仁見智了。
(本文出自《密技偷偷報》No.43,原作者:張智傑)
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!