[討論] DPC latency 跟 HPET (clock相關)

看板Headphone作者 (lhan)時間11年前 (2013/03/24 12:04), 編輯推噓6(6020)
留言26則, 4人參與, 最新討論串1/1
先簡單介紹一下標題那兩個東西 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)

03/24 13:59, , 1F
另外有個fidelizer的工具也不錯 不過會跳視窗所以..bj4(爆
03/24 13:59, 1F

03/24 14:20, , 2F
ClockRes是要安裝還是直接使用?? 按了agree後都是一閃
03/24 14:20, 2F

03/24 14:20, , 3F
就消失 不知怎麼用
03/24 14:20, 3F

03/24 14:26, , 4F
原來要用ms-doc執行才看的到
03/24 14:26, 4F

03/24 14:30, , 5F
查了一下現在是10ms 但是first version要怎麼用?
03/24 14:30, 5F

03/24 14:30, , 6F
執行SetTimerResolutionService.exe之後沒作用
03/24 14:30, 6F

03/24 14:41, , 7F
阿抱歉..那個好像只能設成服務 沒辦法直接執行 可以改用這個
03/24 14:41, 7F

03/24 14:41, , 8F
http://ppt.cc/C-R- 用1.2版即可 不過關掉好像會復原
03/24 14:41, 8F
※ 編輯: lhan 來自: 59.127.240.219 (03/24 14:51)

03/24 19:31, , 9F
看到這篇發現WIN8 PRO預設的Current timer interval
03/24 19:31, 9F

03/24 19:33, , 10F
是15.6ms...改成0.5ms聲音清晰很多 WIN7預設好像比較小
03/24 19:33, 10F

03/24 22:26, , 11F
fidelizer我一直在用 剛測試發現聽不出來 一查才發現
03/24 22:26, 11F

03/24 22:26, , 12F
fidelizer已經設好了 看來用不到 又 HPET我之前自己測試
03/24 22:26, 12F

03/24 22:27, , 13F
發現模式三我聽起來音色最自然 都開跟都關我聽起來都怪
03/24 22:27, 13F

03/24 22:28, , 14F
怪得 但之前看討論 都開或著都關似乎比較合乎學理
03/24 22:28, 14F

03/24 22:28, , 15F
只是測了幾次都覺得聽起來怪怪的
03/24 22:28, 15F
修正一下SetTimerResolutionService安裝方式 ※ 編輯: lhan 來自: 59.127.240.219 (03/25 00:05)

03/25 00:26, , 16F
其實HPET我也覺得我本來預設值就可以了 是沒差多少 只是看到
03/25 00:26, 16F

03/25 00:27, , 17F
看到國外最近討論也滿多的 就順便玩玩看也拿過來分享討論
03/25 00:27, 17F

03/25 00:39, , 18F
工具那個網址裡有弄成懶人包可以選擇3種模式安裝
03/25 00:39, 18F

03/25 00:39, , 19F
不過後來發現timer會隨著執行的程式有不同的設定值
03/25 00:39, 19F

03/25 00:41, , 20F
比如開foobar聽音樂時是1 win內建mplay是10
03/25 00:41, 20F

03/25 00:41, , 21F
SetTimerResolutionService的好處是可以固定0.5
03/25 00:41, 21F

03/25 02:28, , 22F
沒注意到懶人包..感謝提醒 Cyberdyne那個解壓按兩下就好了 害
03/25 02:28, 22F

03/25 02:30, , 23F
我多打一堆XD 話說我還沒玩之前預設值就0.5了 不知道是哪個程
03/25 02:30, 23F

03/25 02:32, , 24F
式調過的就是 玩過一輪結果怎麼試最低只剩1.0ms 只好裝外掛XD
03/25 02:32, 24F

08/18 07:04, , 25F
就消失 不知怎麼用 https://muxiv.com
08/18 07:04, 25F

10/05 06:04, , 26F
式調過的就是 玩過一輪 https://daxiv.com
10/05 06:04, 26F
文章代碼(AID): #1HJdizjp (Headphone)