看板 Headphone 關於我們 聯絡資訊
先簡單介紹一下標題那兩個東西 HPET是High Precision Event Timer的縮寫 是控制電腦timer的一種硬體 相對PIT(programmable interval timer), RTC(real-time clock)屬於較新的規格 可比RTC更精確同步電腦上各周邊硬體的timing(透過更高的頻率) XP不支援HPET,Vista後都有支援 http://en.wikipedia.org/wiki/HPET DPC Latency是代表各周邊延遲時間 在本版 #17xtUljY 有版友介紹了一下 通常越低越好,數值越高也代表發生爆音機率越高 這一篇介紹了兩個檢測工具 http://www.empro10001.com/troubleshoot-tc.htm DPC Latency Checker和 LatencyMon 可用來觀測和檢查哪個周邊影響延遲比較大 要使用HPET硬體,通常可在一般較新的主版bios上找到選項 開啟或不開啟HPET, HPET 32位元或64位元模式 但只打開bios選項還不夠 想要完全開啟 在OS如windows上還要加上"bcdedit /set useplatformclock true"參數 所以基於BIOS和OS設定 基本上你會得到四種clock模式: TSC+LAPICs Low performance (slow timers + syncing) = 2.76MHz LAPICs low performance (slow timer - no syncing) = 3.5Mhz TSC+HPET medium performance (slow and fast timer + syncing) = 3.8Mhz HPET high performance (fast timer - no syncing) = 14.3MHz 第一個是BIOS關閉HPET或主機版不支援HPET,OS不設置useplatformclock 第二個是BIOS關閉HPET,OS設置useplatformclock true 第三個是BIOS開啟HPET,OS不設置useplatformclock 第四個是BIOS開啟HPET,OS設置useplatformclock,HPET正確開啟後的模式 要確認跑在甚麼模式可以用WinTimerTester檢查 對照QueryPerformanceCounter值 詳細請看這串,上面講的選項都在裡面 http://ppt.cc/W3ra 例如個人的主機版BIOS的HPET預設值是開啟,跑32bit Windows 7 64預設值關閉 所以是跑第三個clock模式 而現在我是跑64位元OS,所以有把BIOS的HPET設為64位元,OS開啟useplatformclock 所以是第四個 而關閉或開啟HPET可能會影響DPC Latency 進而影響遊戲或媒體播放效能 差別例子如: http://ppt.cc/yhrE 會造成這樣的結果 有一說是因為HPET是跑在sytem memory裡 (第四個clock模式) 而TSC模式是跑在CPU的register裡 所以比較快 (第一個clock模式) 來源: http://ppt.cc/Rvd~ 所以結論就是打開跟關閉HPET,或是說上面那四種clock模式 通常是會影響DPC Latency的 只是相關討論爬來爬去發現分成兩派 一派是說打開HPET比較好 (主要讓HPET硬體控制clock,理論上clock精度較高) 一派是說關閉HPET比較好 (主要讓CPU控制clock,效能較高,延遲低) 個人也還在猶豫要設成哪種模式 以上是個人爬了一下相關資料的心得,跟大家分享 不知各位是否有何看法 有錯也請指正,謝謝 追加: 再補充一個東西 跟上面HPET設定是獨立的 這串討論到後面有講到Windows timer resolution http://forums.guru3d.com/showthread.php?t=368604 簡單說就是作業系統timer的最小解析度 若是你最小解析度不夠小 這樣比如說像你音效卡延遲設定設比這個解析度還小都是沒意義的 所以可以說越小越好 這邊有個工具 http://forums.guru3d.com/showthread.php?t=376458 安裝成服務常駐後可以把Windows timer resolution設定成最小值 (Windows 7是0.500ms) 設成開機自動執行服務步驟如下: 我是下載Second version (C# implementation) of system service這版 安裝方法有兩種 方法1: 開cmd,打以下(兩行接成一行) sc.exe create STR binpath= "(解壓路徑)\SetTimerResolutionService.exe" displayname= "Set Timer Resolution Service" obj= LocalSystem start= auto 方法2: 先灌好.Net Framework 4.0 然後打開cmd 先 cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 然後執行 InstallUtil /i (解壓路徑)\SetTimerResolutionService.exe 要移除的話 InstallUtil /u (解壓路徑)\SetTimerResolutionService.exe 再開ClockRes檢查Current timer interval是否為0.500ms http://technet.microsoft.com/en-us/sysinternals/bb897568.aspx 要暫時執行的話可改用Timer Resolution: http://ppt.cc/C-R- 下載1.2版即可, Vista以後也可以用 關閉後會回復原值 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.240.219 ※ 編輯: lhan 來自: 59.127.240.219 (03/24 13:55)
lhan:另外有個fidelizer的工具也不錯 不過會跳視窗所以..bj4(爆 03/24 13:59
louis0407:ClockRes是要安裝還是直接使用?? 按了agree後都是一閃 03/24 14:20
louis0407:就消失 不知怎麼用 03/24 14:20
louis0407:原來要用ms-doc執行才看的到 03/24 14:26
louis0407:查了一下現在是10ms 但是first version要怎麼用? 03/24 14:30
louis0407:執行SetTimerResolutionService.exe之後沒作用 03/24 14:30
lhan:阿抱歉..那個好像只能設成服務 沒辦法直接執行 可以改用這個 03/24 14:41
lhan:http://ppt.cc/C-R- 用1.2版即可 不過關掉好像會復原 03/24 14:41
※ 編輯: lhan 來自: 59.127.240.219 (03/24 14:51)
bluesmaple:看到這篇發現WIN8 PRO預設的Current timer interval 03/24 19:31
bluesmaple:是15.6ms...改成0.5ms聲音清晰很多 WIN7預設好像比較小 03/24 19:33
louis0407:fidelizer我一直在用 剛測試發現聽不出來 一查才發現 03/24 22:26
louis0407:fidelizer已經設好了 看來用不到 又 HPET我之前自己測試 03/24 22:26
louis0407:發現模式三我聽起來音色最自然 都開跟都關我聽起來都怪 03/24 22:27
louis0407:怪得 但之前看討論 都開或著都關似乎比較合乎學理 03/24 22:28
louis0407:只是測了幾次都覺得聽起來怪怪的 03/24 22:28
修正一下SetTimerResolutionService安裝方式 ※ 編輯: lhan 來自: 59.127.240.219 (03/25 00:05)
lhan:其實HPET我也覺得我本來預設值就可以了 是沒差多少 只是看到 03/25 00:26
lhan:看到國外最近討論也滿多的 就順便玩玩看也拿過來分享討論 03/25 00:27
bluesmaple:工具那個網址裡有弄成懶人包可以選擇3種模式安裝 03/25 00:39
bluesmaple:不過後來發現timer會隨著執行的程式有不同的設定值 03/25 00:39
bluesmaple:比如開foobar聽音樂時是1 win內建mplay是10 03/25 00:41
bluesmaple:SetTimerResolutionService的好處是可以固定0.5 03/25 00:41
lhan:沒注意到懶人包..感謝提醒 Cyberdyne那個解壓按兩下就好了 害 03/25 02:28
lhan:我多打一堆XD 話說我還沒玩之前預設值就0.5了 不知道是哪個程 03/25 02:30
lhan:式調過的就是 玩過一輪結果怎麼試最低只剩1.0ms 只好裝外掛XD 03/25 02:32
sneak : 就消失 不知怎麼用 https://muxiv.com 08/18 07:04
sneak : 式調過的就是 玩過一輪 https://daxiv.com 10/05 06:04