標題:
[分享]WINDOWS資料夾下,有個Prefetch資料夾的作用
[打印本頁]
作者:
sax0936
時間:
2005-12-27 03:19 AM
標題:
[分享]WINDOWS資料夾下,有個Prefetch資料夾的作用
其實早就有Prefetch了
其實我可以這樣講,如果沒有PreFetch,那我們現在的CPU會跑的慢上很多.
大家一定覺得很奇怪,
如果真是這樣,那請問那為什麼Palomino沒有比缺少Hardware prefetch的TB快上很多?
那各位就有所不知了,其實每顆CPU管你裡面有沒有Hardware Prefetch的功能,
每顆現代的CPU早就在享受Prefetch帶來的好處了,只是,不是用"硬體"做的罷了..
什麼是 Prefetch.
prefetch英翻中,直接的意思也就是"預先提取".其實道理再簡單不過了,也就是說要早在CPU需要那筆資料之前,
就下一筆不是"常態"的指令,
先把它從MainMemory(以後就直接說DRAM好了)提取出來,放在離CPU較近的L2 or L1 Cache中.
那大家一定覺得很怪,幹嘛預先就要?不會到時要喔?這樣有差嗎?
沒有Prefetch,效能差很多
不要忘了,到DRAM抓資料回來Cache至少要30個以上CPU cycles.
也就是如果你現在用這筆資料,不得不去DRAM抓的時候,你要在這裡等個30 Cycle,你才能做下去.
再嚴重點.現在的CPU都是超純量的(SuperScalar,就是多管線的意思啦),
如果今天是一顆4-way(4管)的CPU,正好其他3管的指令,都在等你這管的處理後的資料,(這種叫Dependency),
哇,也就在30個CPU cycle內,沒有一條管線可以跑任何一筆資料,完完全全浪費了這顆CPU的功能.
他的設計原本應該是1個cycle能跑四筆指令的,現在變成1個cycle只能跑1/30個指令.
Prefetch的功用
那很明顯的,如果在之前,就先發了load的指令讓資料能預先留在cache裡頭,到時候要用時,就可以直接拿來用了.
不過,這很自然的會增加一些指令,甚至有時會抓進去一大堆 到時候根本沒有屁用的資料,看了便知.
當然這是可以"改良"的.
Software 和 Hardware prefetch的不同
就我所知,Software based的prefetch是必然要用的.也就是程式在寫好,compile之後,他裡面的程式碼早就考慮到prefetch的問題了.
現在的compiler一定都會提供這類的選項,或甚至直接使用.
Compiler很聰明,他會在程式跑到真正需要用到該筆資料之很多行之前,會插入prefetch的指令.
(當然,這些指令不是當初寫程式的人所能知道的).
想想如果沒有Software Prefetch,這真的會是一場災難.因為x86的程式會compile出一大堆Memory指令.
如果每條指令都按步就班,不偷步.那CPU也真的不用SuperScalar了,
就弄一個80386-1000SX好了.
Hardware Prefetch
當然目的是一樣的,但是作法實在太多種了,簡單到最難,一應具全.
他在L2 Cache旁邊,自己加了一個小buffer.
ok,如果是最簡單的,那他會在Cache miss時,同時把Miss的資料和緊接著幾筆的資料一起抓到Buffer中,
也就是如果第二筆資料就是緊接在第一筆之後的話,那他就可以直接從Buffer中拿,不用還要回DRAM拿了.
當然,天下沒有白吃的事.不是所有的資料都是緊接著的.有時候,他可是有間隔的.
可能是隔4,可能是隔8,看他爽不爽.那你笨笨的隔一個抓豈不儘抓些垃圾,給我滾.
也因此,比較好的Prefetch buffer會有一個"預測"的機構,會把每次資料相差的距離大概記錄一下,再決定下一筆資料
要從那個位址抓過來.這樣當然比較準,但是相對難做很多,甚至Latency變大.
對於Hardware的Prefetch的大概就是這樣.
作者:
sax0936
時間:
2005-12-27 03:22 AM
prefetch說明
那是WindowXP系統在開機或你執行程式的時候,會將程式的一部份放
在c:\windows\prefetch的目錄下,當你要執行這些程式的時候,就可以
很快的開啟,大大的加速程式執行。
若你的電腦的記憶體有512MB以上,硬碟空間又夠,不用理會這些檔案
如果很討厭Windows亂加檔案,請在開始=>執行=>regedit
修改
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
\Session Manager\Memory Management\PrefetchParameters
更改EnablePrefetcher這個機碼
0 關閉
1 prefetch應用程式
2 prefetch開機程式
3 prefetch 所有程式
PS.有些應用程式的捷徑會強制prefetch,C:\program files\xxxx.exe" /prefetch:1
作者:
juaxe
時間:
2006-1-5 10:44 AM
太好的知識--有義務推--感謝
作者:
都不懂
時間:
2006-2-18 12:06 PM
感謝大大的指導
有點硬,要慢慢消化
歡迎光臨 網際論壇 (http://centurys.net/)
Powered by Discuz! 2.5