查看: 33656|回复: 88

[教程] 另一种修改dsdt实现自动降频的方法

[复制链接]
发表于 2011-9-29 11:50 | 显示全部楼层 |阅读模式 |IP属地海南
快御云安全
本帖最后由 tmacyunn 于 2011-10-6 15:02 编辑

看到最近关于自动降频的询问,这里说一下我的理解和方法。

首先,实现自动降频非常必须。自动降频后机器的温度可以维持在一个比较低的水平。自动降频的实现可以通过修改dsdt 或者 直接引用变色龙的特性 和 smbios的设置来实现。下面说下2种方法:

方法一:,可以利用变色龙RC5的新特性来实现,只需要勾选:

  1. GenerateCStates=Yes  
  2. 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文件。看图说话吧:
1.png

利用AIDA64的acpi tool 保存SSDT Tables
2.png

把有SSDT字样的文件全部保存下来
3.png

得到一个bin文件
4.png

利用acpi patcher 的转换功能转换文件为dsl
5.png

利用acpi patcher 的转换功能转换文件为dsl
6.png

转换完成
7.png

在输出目录可以的到一个dsl文件
8.png

这是我的全部的SSDT文件,cpu的不同文件数量也是不同,在提取的时候最好加序列辨别。其中的_SATAxxx文件可以不用管。
9.png

用文本工具打开提取好的dsl文件,找出有用信息。

第二部分,修改dsdt。
       使用DSDT Editor(搜索下载)进行编辑。主要需要用到这几项的信息:
      
_CST: C States
_PCT: Performence control obbject
_PSS: Performance Supported States
_PPC: Performance Present Capabilities method

他们可以在刚才提取的SSDT里面找到,对应这CPU0,CPU1等等加入到:
  1. Scope (_PR)
  2.     {
  3.         Processor (CPUx, 0x00, 0x00001010, 0x06)
  4.         {
  5.                //在此处加入对应的x的信息
  6.         }
  7.            
复制代码
举例:
   在
DefinitionBlock ("SSDT_Cpu0Ist.aml", "SSDT", 1, "PmRef", "Cpu0Ist", 0x00003000)

下面可以看到一个_PSD Method,你需要将它复制到对应Cpu0下面
前:

  1. Method (_PSD, 0, NotSerialized)
  2.         {
  3.             If (And (CFGD, 0x01000000))
  4.             {
  5.                 If (And (PDC0, 0x0800))
  6.                 {
  7.                     Return (Package (0x01)
  8.                     {
  9.                         Package (0x05)
  10.                         {
  11.                             0x05,
  12.                             0x00,
  13.                             0x00,
  14.                             0xFE,
  15.                             0x02
  16.                         }
  17.                     })
  18.                 }

  19.                 Return (Package (0x01)
  20.                 {
  21.                     Package (0x05)
  22.                     {
  23.                         0x05,
  24.                         0x00,
  25.                         0x00,
  26.                         0xFC,
  27.                         0x02
  28.                     }
  29.                 })
  30.             }

  31.             Return (Package (0x01)
  32.             {
  33.                 Package (0x05)
  34.                 {
  35.                     0x05,
  36.                     0x00,
  37.                     0x00,
  38.                     0xFC,
  39.                     0x01
  40.                 }
  41.             })
  42.         }
复制代码
后:

  1. Scope (_PR)
  2.     {
  3.         Processor (CPU0, 0x00, 0x00001010, 0x06)
  4.         {
  5.            
  6.       Method (_PSD, 0, NotSerialized)
  7.         {
  8.             If (And (CFGD, 0x01000000))
  9.             {
  10.                 If (And (PDC0, 0x0800))
  11.                 {
  12.                     Return (Package (0x01)
  13.                     {
  14.                         Package (0x05)
  15.                         {
  16.                             0x05,
  17.                             0x00,
  18.                             0x00,
  19.                             0xFE,
  20.                             0x02
  21.                         }
  22.                     })
  23.                 }

  24.                 Return (Package (0x01)
  25.                 {
  26.                     Package (0x05)
  27.                     {
  28.                         0x05,
  29.                         0x00,
  30.                         0x00,
  31.                         0xFC,
  32.                         0x02
  33.                     }
  34.                 })
  35.             }

  36.             Return (Package (0x01)
  37.             {
  38.                 Package (0x05)
  39.                 {
  40.                     0x05,
  41.                     0x00,
  42.                     0x00,
  43.                     0xFC,
  44.                     0x01
  45.                 }
  46.             })
  47.          }
  48.       }
  49.   }
  50.         }
复制代码
这样就加入了一个_PSD在CPU0处。下面接着可以打开对应的Cpu1Ist,也可以得到相似的内容如下;
前:

  1.         Method (_PSD, 0, NotSerialized)
  2.         {
  3.             If (And (PDC1, 0x0800))
  4.             {
  5.                 Return (Package (0x01)
  6.                 {
  7.                     Package (0x05)
  8.                     {
  9.                         0x05,
  10.                         0x00,
  11.                         0x00,
  12.                         0xFE,
  13.                         0x02
  14.                     }
  15.                 })
  16.             }

  17.             Return (Package (0x01)
  18.             {
  19.                 Package (0x05)
  20.                 {
  21.                     0x05,
  22.                     0x00,
  23.                     0x00,
  24.                     0xFC,
  25.                     0x02
  26.                 }
  27.             })
  28.         }
复制代码
后:
  1.       
  2. Scope (_PR)
  3.     {
  4.         Processor (CPU1, 0x01, 0x00001010, 0x06)
  5.         {
  6.       Method (_PSD, 0, NotSerialized)
  7.         {
  8.             If (And (PDC1, 0x0800))
  9.             {
  10.                 Return (Package (0x01)
  11.                 {
  12.                     Package (0x05)
  13.                     {
  14.                         0x05,
  15.                         0x00,
  16.                         0x00,
  17.                         0xFE,
  18.                         0x02
  19.                     }
  20.                 })
  21.             }

  22.             Return (Package (0x01)
  23.             {
  24.                 Package (0x05)
  25.                 {
  26.                     0x05,
  27.                     0x00,
  28.                     0x00,
  29.                     0xFC,
  30.                     0x02
  31.                 }
  32.             })
  33.         }
  34.       }
  35.   }
复制代码
剩下的部分只要对应着加入就可以。

第三部分,smbios的修改和对应的机型配置文件
       详细见:直通车

最后给出的部分的机型可以自动降频而不用修改机型配置文件的型号:
  1. * MacPro3,1
  2. * Macmini3,1
  3. * MacBookPro5,5
  4. * MacBookPro5,4
  5. * MacBookPro5,3
  6. * MacBookPro5,2
  7. * MacBookPro5,1
  8. * MacBook6,1
  9. * MacBook5,1
  10. * iMac9,1
  11. * iMac10,1
复制代码
用法查看好上述机型使用的cpu和你的是否接近,同一个代号的也可以。

评分

8

查看全部评分

发表于 2011-9-29 12:18 | 显示全部楼层 |IP属地广东
也可以直接适用ssdt文件= =而不用整合到dsdt里面去~

点评

没钱平分了 前排支持下吧  发表于 2011-9-29 23:01
可以的,把得出的ssdt编译成AML的形式放到/,再分别命名。勾选变色龙的设置选项即可。  发表于 2011-9-29 12:27

评分

1

查看全部评分

回复

使用道具 举报

发表于 2011-9-29 12:22 | 显示全部楼层 |IP属地山东
支持技术贴啊
辛苦了
回复

使用道具 举报

发表于 2011-9-29 12:29 | 显示全部楼层 |IP属地湖南
我是把提取的SSDT文件.BIN直接改名为.AML再用dsdt editor检查是否有错误。再直接加序号使用。

点评

一开始就是用这个种方法,不过ssdt里面的内容并不是都是必须的,所以有人就把需要用的加入到dsdt里面的  发表于 2011-9-29 13:15
回复

使用道具 举报

发表于 2011-9-29 14:02 | 显示全部楼层 |IP属地山东
请教一个问题,我通过AID 64提取的ssdt表只有一个,没有你所说的提取这么多的dsl文件.那dsdt里面对应的cpu0~cpu4该如何对应呢?
回复

使用道具 举报

发表于 2011-9-29 14:08 | 显示全部楼层 |IP属地上海
果然我的T7800cpu不能通过变色龙降频!楼主这方法肯定能成功!MBP3.1相关参数我找到了!
回复

使用道具 举报

发表于 2011-9-29 14:16 | 显示全部楼层 |IP属地广东
不错,mark一下,感谢
回复

使用道具 举报

 楼主| 发表于 2011-9-29 14:18 | 显示全部楼层 |IP属地海南
潇麟 发表于 2011-9-29 14:02
请教一个问题,我通过AID 64提取的ssdt表只有一个,没有你所说的提取这么多的dsl文件.那dsdt里面对应的cpu0~c ...

你的cpu型号?
回复

使用道具 举报

发表于 2011-9-29 14:40 | 显示全部楼层 |IP属地湖北
zlxdike 发表于 2011-9-29 12:18
也可以直接适用ssdt文件= =而不用整合到dsdt里面去~

这个可以,同上。

不会DSDT的合适用这个法。
回复

使用道具 举报

发表于 2011-9-29 14:51 | 显示全部楼层 |IP属地山东
tmacyunn 发表于 2011-9-29 14:18
你的cpu型号?

我的CPU是i3  2100 主板是H61 S2V B3 1.0
回复

使用道具 举报

发表于 2011-9-29 14:52 | 显示全部楼层 |IP属地山东
lunjen2009 发表于 2011-9-29 14:40
这个可以,同上。

不会DSDT的合适用这个法。

但是我感觉对于不会dsdt的来说直接用ssdt也不是个好方法,因为提取bin文件转换的SSDT.aml文件原始的会有很多错误.不会修改dsdt的.更会加重其负担.

点评

确实,对新手来说这是个大坑  发表于 2011-9-29 17:41
回复

使用道具 举报

 楼主| 发表于 2011-9-29 14:59 | 显示全部楼层 |IP属地海南
潇麟 发表于 2011-9-29 14:51
我的CPU是i3  2100 主板是H61 S2V B3 1.0

这个方法不一定适合i系列的cpu。
回复

使用道具 举报

发表于 2011-9-29 15:00 | 显示全部楼层 |IP属地山东
tmacyunn 发表于 2011-9-29 14:18
你的cpu型号?

无标题.png
回复

使用道具 举报

发表于 2011-9-29 15:02 | 显示全部楼层 |IP属地山东
本帖最后由 潇麟 于 2011-9-29 15:52 编辑
tmacyunn 发表于 2011-9-29 14:59
这个方法不一定适合i系列的cpu。


但是如果我按照你的方法来的话.貌似只能在Cpu0那部分添加一个_PSD Method.那其余剩下的cpu 1 cpu2 cpu3 cpu4 不可能会使用相同的代码吧?这样的话,只添加这里.貌似不行吧?但是我的dsdt里面有cpu0~cpu7这八个部分.

点评

同楼上 i系列bios开启自动有spped降频  发表于 2011-10-5 21:30
i系列的cpu只要选对机型(cpu与真mac相同)就可以实现自动降频。我的是i3-530 用的机型为 imac11,2  发表于 2011-9-30 06:01
回复

使用道具 举报

 楼主| 发表于 2011-9-29 15:23 | 显示全部楼层 |IP属地海南
你可以去看SSDT里面其他部分的信息,包含有 cpu 1 cpu2 cpu3 cpu4 之类的关键字的。
回复

使用道具 举报

发表于 2011-9-29 15:38 | 显示全部楼层 |IP属地北京
难道Mac下没有SSDT提取软件???我只有Mac系统。。。
回复

使用道具 举报

发表于 2011-9-29 15:46 | 显示全部楼层 |IP属地山东
本帖最后由 潇麟 于 2011-9-29 15:53 编辑
tmacyunn 发表于 2011-9-29 15:23
你可以去看SSDT里面其他部分的信息,包含有 cpu 1 cpu2 cpu3 cpu4 之类的关键字的。


恩.SSDT里面的cpu0~cpu3这些有的.你的意思是不是说.将cpu0~cpu3下的_PSD部分的method分别复制到dsdt里面的CPU0~CPU3部分是把?对应起来?但是 我的dsdt里面 有 cpu0~cpu7这几个部分 。貌似对应不起来 。有几个复制几个 ?
回复

使用道具 举报

发表于 2011-9-29 16:08 | 显示全部楼层 |IP属地香港
“这个在snow leopard下没什么影响,但是升级到lion后,有的T系列的CPU的朋友的CState并没有开启,或者说遭到了破坏,CPU温度较之前升高了几度。”

lz你说对了 我用变色龙的方法开启降频 就会多五个降频档数 但会导致cstate无法开启
回复

使用道具 举报

 楼主| 发表于 2011-9-29 17:34 | 显示全部楼层 |IP属地海南
CosmosX 发表于 2011-9-29 15:38
难道Mac下没有SSDT提取软件???我只有Mac系统。。。

Mac下是有,就是那个dsdt se的软件,前提是你在进系统前把你的之前的dsdt删除,然后用那个软件获取了再重启放入dsdt。(切忌在没有dsdt的时候不要点睡眠之类,以免电脑挂掉)
回复

使用道具 举报

 楼主| 发表于 2011-9-29 17:36 | 显示全部楼层 |IP属地海南
潇麟 发表于 2011-9-29 15:46
恩.SSDT里面的cpu0~cpu3这些有的.你的意思是不是说.将cpu0~cpu3下的_PSD部分的method分别复制到dsdt里面 ...

除了_PSD,还应加入其他的,
_CST: C States
_PCT: Performence control obbject
_PSS: Performance Supported States
_PPC:

这几个。可以的话上传下的ssdt文件和dsdt文件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋手机版联系我们

Copyright © 2005-2024 PCBeta. All rights reserved.

Powered by Discuz!  CDN加速及安全服务由「快御」提供

请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。

远景在线 ( 苏ICP备17027154号 )|远景论坛 |Win11论坛 |Win10论坛 |Win8论坛 |Win7论坛 |WP论坛 |Office论坛

GMT+8, 2024-12-22 11:33

快速回复 返回顶部 返回列表