Re: [讨论] Windows 7 的MMCSS参数设定

楼主: louis0407 (能当个乡民也是一种幸福)   2015-01-10 12:59:29
※ 引述《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
作者: evadodoya (口责口责)   2015-01-10 14:24:00
这一篇请M起来
作者: lowenli (用力生活)   2015-01-10 15:00:00
作者: vpjack (~扬~)   2015-01-10 15:27:00
赞!这篇真够专业的
作者: Myt33   2015-01-10 15:57:00
赞~!! 强大!!铁壳hub2.0上USB孔的IRQ编号是-2~-9,这个要怎么看呢??我是插在hub上的"USB 3"这个孔(0123456共七孔) 不知要选哪个才对@@ (-2~-9)
作者: jakkx (风蓝)   2015-01-10 16:22:00
只能推了…
楼主: louis0407 (能当个乡民也是一种幸福)   2015-01-10 16:25:00
Usb hub用了好几个irq编号?如果是这样 只能一个on off抓到你实际是用哪个了但你得先确定你没找错地方 主机版上可能会有好几个Usb controller但usb hub只会连结其中一个一个controller也只会有一个Irq编号(但可能会和其它装置共用)
作者: Myt33   2015-01-10 16:37:00
我也觉得有点奇怪,可能是插在PCIE的USB扩充卡上的关系@@
作者: barery24 (阿森)   2015-01-10 19:56:00
觉得你可能找错了,建议可先用检视=>装置(依连线)来确认usb dac是接在那个controller上

Links booklink

Contact Us: admin [ a t ] ucptt.com