※ 引述《Myt33 ()》之銘言:
: 最近又在研究MMCSS的參數設定,目前調整到的設置,感覺音場有比原廠設定還要大一點@@
: https://www.dropbox.com/s/99tqvirjyyi3aip/MMCSS%E8%AA%BF%E6%95%B4.rar?dl=0
: 裡面有2個reg檔,點擊執行即可,其中有包含了還原到win7原廠設定的reg檔
: 我自已的OS是Windows 7 64bit,播放器是foobar2000 v1.3.6,
: foobar裡面設定MMCSS類別是吃「playback」,
: 我的電腦開啟foobar2000時OS的time resolution是1ms
: 不知這套設置是否套用在每台電腦都會有一樣的效果~分享給有空的版友試試看@@
好久不見的話題,一年多前因為MMCSS的調整而一路找到了好多可以調整
的地方,都是跟即時播放的優先權與系統的時間精度有關,現在既然原PO
又浮出了這串,又剛好是週末,就乾脆整理一下自己的心得吧,當作備份也好.
1.MMCSS
本串的主角,一年多以前就已經被介紹過,所以功能敘述就跳過吧.
以結論來說,我還是維持一年多前在推文提到的方向,低延遲 高優先序,
其中Clock Rate當初引起一番討論,最初我以為數值代表的是Scheduling
相關的頻率,後來根據國外論壇的討論猜測是單位時間長度...數值越低
Scheduling調整的頻率就越高,而以聽感來說,我覺得數值調低之後比較接
近我希望出現的效果,所以目前還是延續把它調低的方向.
以下是reg內各項的設定值,XXXX(OOOO)是十六進位值(十進位值)的意思.
Clock Rate: 1388(5000) or 5(5) 預設值是(10000)
Priority: 8(8) 範圍是1~8,其中8表示最高優先權
Scheduling Category: High
SFIO Priority: High
2.HPET
這指的是高精度事件計時器(High Precision Event Timer),
之前應該也有文章介紹過,若要使用,建議還要搭配
bcdedit /set useplatformclock true指令,讓HPET成為OS跟
CPU統一的時間源.
參考資料: http://ppt.cc/W3ra
使用方法:
在bios開啟HPET後,進系統,
CMD 輸入
bcdedit /set useplatformclock true
要關閉的話,
CMD輸入
bcdedit /deletevalue useplatformclock
不過要注意的是,vista之後才有支援這設定.
若要確認是否有成功啟用,可下載WinTimerTester
http://ppt.cc/838l
解壓縮執行後,確認QueryPerformanceFrequency是不是14.3Mhz的近似值.
是的話就沒錯了
3.IRQ Priority
這是很早就在網路上流傳的tweak,在OS內針對重要元件的IRQ通道提高優先權,
應用在CAT的話,就是將系統計時器 系統時鐘等時間元件以及音效輸出裝置的
優先權拉高.一般來說IRQ 0和8分別是系統計時器和系統時鐘,是非常建議調整
的元件,剩下的音效輸出裝置以及我個人額外調整的數值資料處理器(NDP/numberic
data processor)及AHCI controller就需要自己從裝置管理員裡確認IRQ通道編
號再調整了.
使用方法:
先進入裝置管理員(電腦-內容-裝置管理員),在檢視內選擇資源-依類型or連線,
點開IRQ(插斷要求),會有系統裝置的IRQ編號列表,確認0與8是計時器與時鐘再
找到音效裝置(USB輸出可以找對應的USB controller)的編號.之後進入regedit
編輯,其中要修改的機碼位置在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
點開後,windows預設應該是空的,右鍵-新增-DWORD,輸入名稱為 IRQ#Priority,
其中的#就是IRQ編號,例如系統時鐘是IRQ(8),就是 IRQ8Priority,再把值設成
1即可.之後的IRQ(0)及音效裝置同樣都是這樣做,例如我的情況就是
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl]
"IRQ0Priority"=dword:00000001
"IRQ8Priority"=dword:00000001
"IRQ13Priority"=dword:00000001
"IRQ16Priority"=dword:00000001
"IRQ-2Priority"=dword:00000001
最後離開regedit並重開機即可.
4.Time Resolution
這是OS內,時間的最小刻度或是事件觸發的最小間隔.Windows預設是15.6ms,
即一秒有64次的插斷判定,實際可接受的上限是0.5ms,即一秒2000次的插斷
判定.理論上更低的time resolution可以達到更低的整體延遲,更接近realtime
傳輸,但更頻繁的插斷也會增加耗電量以及消耗較多的系統資源.
工具包,解壓縮後執行bat批次檔,選擇三種模式之一,會自動安裝成系統服務,
之後可由批次檔啟動或自行由services.msc啟動.須注意的是,服務需要由
SetTimerResolutionService.exe啟動,而批次檔運作機制是在資料夾內複製
指定模式的SetTimerResolutionService.exe,並設成服務啟動路徑,所以安裝
後不能刪除資料夾,不然會找不到指定檔案以致服務無法啟動.
http://www.mediafire.com/?nt8c638949yc0t2
原始出處,有一些基本說明
http://forums.guru3d.com/showthread.php?t=376458
臨時性調整工具,關掉就恢復,但聽感差異似乎不如上述方案明顯
http://www.lucashale.com/timer-resolution/
MS偵測time resolution的官方工具程式,不信任第三方程式的數據可以改用這個,
但須在MS-dos(CMD)裡執行方能正常看到結果
http://technet.microsoft.com/en-us/sysinternals/bb897568.aspx