- UID
- 752499
- 最后登录
- 1970-1-1
- 阅读权限
- 50
- 精华
- 主题
- 回帖
- 0
- 积分
- 2227
- PB币
-
- 威望
-
- 贡献
-
- 技术
-
- 活跃
-
|
本帖最后由 tmacyunn 于 2011-10-6 15:02 编辑
看到最近关于自动降频的询问,这里说一下我的理解和方法。
首先,实现自动降频非常必须。自动降频后机器的温度可以维持在一个比较低的水平。自动降频的实现可以通过修改dsdt 或者 直接引用变色龙的特性 和 smbios的设置来实现。下面说下2种方法:
方法一:,可以利用变色龙RC5的新特性来实现,只需要勾选:
- GenerateCStates=Yes
- GeneratePStates=Yes
复制代码 这个方法是比较简单,也为大多数人用,是变色龙直接从bios里面读取,优点是选择后Pstate的档数增多,缺点是Cstate是读取的是universal方法,这个在snow leopard下没什么影响,但是升级到lion后,有的T系列的CPU的朋友的CState并没有开启,或者说遭到了破坏,CPU温度较之前升高了几度。
方法二,修改dsdt,主要是把ssdt里面的有用的信息加入到dsdt里面,让变色龙直接从dsdt读取,这样优点是读取的内容你可以更加清楚是那些,方便自己修改。一定程度上减少了启动时间(貌似不明显)。
下面结合一个修改dsdt的实现自动降频的教程(转自http://www.darwinx86.net/)来讲解:
主要分为Windows下操作和Mac下操作,用到的工具:Everest或者AIDA64,ACPI Pather,dsdt editor。
第一部分:提取你的SSDT table
(关于ssdt是什么,请google),如何提取?最简单的方法是在windows(单mac系统的注意了,需要实体的windows系统)下用Everest或者AIDA64,提取的文件是*.bin,需要用ACPI Patcher转换为对应的*.DSL文件。看图说话吧:
利用AIDA64的acpi tool 保存SSDT Tables
把有SSDT字样的文件全部保存下来
得到一个bin文件
利用acpi patcher 的转换功能转换文件为dsl
利用acpi patcher 的转换功能转换文件为dsl
转换完成
在输出目录可以的到一个dsl文件
这是我的全部的SSDT文件,cpu的不同文件数量也是不同,在提取的时候最好加序列辨别。其中的_SATAxxx文件可以不用管。
用文本工具打开提取好的dsl文件,找出有用信息。
第二部分,修改dsdt。
使用DSDT Editor(搜索下载)进行编辑。主要需要用到这几项的信息:
_CST: C States
_PCT: Performence control obbject
_PSS: Performance Supported States
_PPC: Performance Present Capabilities method
他们可以在刚才提取的SSDT里面找到,对应这CPU0,CPU1等等加入到:- Scope (_PR)
- {
- Processor (CPUx, 0x00, 0x00001010, 0x06)
- {
- //在此处加入对应的x的信息
- }
-
复制代码 举例:
在DefinitionBlock ("SSDT_Cpu0Ist.aml", "SSDT", 1, "PmRef", "Cpu0Ist", 0x00003000)
下面可以看到一个_PSD Method,你需要将它复制到对应Cpu0下面
前:-
- Method (_PSD, 0, NotSerialized)
- {
- If (And (CFGD, 0x01000000))
- {
- If (And (PDC0, 0x0800))
- {
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFE,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x01
- }
- })
- }
复制代码 后:
- Scope (_PR)
- {
- Processor (CPU0, 0x00, 0x00001010, 0x06)
- {
-
- Method (_PSD, 0, NotSerialized)
- {
- If (And (CFGD, 0x01000000))
- {
- If (And (PDC0, 0x0800))
- {
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFE,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x01
- }
- })
- }
- }
- }
- }
复制代码 这样就加入了一个_PSD在CPU0处。下面接着可以打开对应的Cpu1Ist,也可以得到相似的内容如下;
前:
- Method (_PSD, 0, NotSerialized)
- {
- If (And (PDC1, 0x0800))
- {
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFE,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x02
- }
- })
- }
复制代码 后:-
- Scope (_PR)
- {
- Processor (CPU1, 0x01, 0x00001010, 0x06)
- {
- Method (_PSD, 0, NotSerialized)
- {
- If (And (PDC1, 0x0800))
- {
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFE,
- 0x02
- }
- })
- }
- Return (Package (0x01)
- {
- Package (0x05)
- {
- 0x05,
- 0x00,
- 0x00,
- 0xFC,
- 0x02
- }
- })
- }
- }
- }
复制代码 剩下的部分只要对应着加入就可以。
第三部分,smbios的修改和对应的机型配置文件
详细见:直通车
最后给出的部分的机型可以自动降频而不用修改机型配置文件的型号:- * MacPro3,1
- * Macmini3,1
- * MacBookPro5,5
- * MacBookPro5,4
- * MacBookPro5,3
- * MacBookPro5,2
- * MacBookPro5,1
- * MacBook6,1
- * MacBook5,1
- * iMac9,1
- * iMac10,1
复制代码 用法查看好上述机型使用的cpu和你的是否接近,同一个代号的也可以。 |
评分
-
8
查看全部评分
-
|