今天看啥
热点:

  请大家注意一下,这个方法只适合core 2 duo/quad系列,不适合AMD的CPU,也不适合Intel i7系列CPU,i7的CPU可以通过BIOS选项直接开启Speedstep,不需要修改DSDT。

  写在前面

  今日中午闲来无事,于insanelymac看到篇修改DSDT使用原版SpeedStep的文章(原帖链接),遂粗翻一下,抛砖引玉,希望高手们对此方面加以更多关注。

  ※你需要符合你的设备的DSDT

  ※将你的DSDT.aml转换为.dsl格式,可使用iASLMe或其它方式进行双向转换

  ※你的SL能加载上AppleLPC(具体修改方法本坛会员Farx已发帖说明,链接在此),可使用IORegistryExplorer进行查看

  ※需要在SMBIOS.plist内修改你的计算机型号为MacPro3,1或MacPro4,1

  ※需要有手动修改DSDT的经验

  所需工具

  iASLMe

  VoodooPState(包括VoodooPState.kext和PStateChanger)

  注意:此贴涉及内容并不是简单复制粘贴即可,将会根据个人情况对部分内容作出修改,请勿直接套用别人的代码,以免造成问题与损害,文中涉及代码与工具可在本帖附件中下载。

  修改方法

  安装VoodooPState.kext,并确保加载上;

  打开你的DSDT.dsl,找到“Scope (PR)”部分,将会看见如下代码

  {

  Scope (_PR)

  {

  Processor (CPU0, 0x00, 0x00000410, 0x06) {}

  Processor (CPU1, 0x01, 0x00000410, 0x06) {}

  Processor (CPU2, 0x02, 0x00000410, 0x06) {}

  Processor (CPU3, 0x03, 0x00000410, 0x06) {}

  }

  /////// below removed

  复制代码接下来把以下代码置于上述代码后 Scope (_PR.CPU0)

  {

  Method (_PSS, 0, NotSerialized)

  {

  Return (Package (0x0R)

  {

  Package (0x06)

  {

  Zero,

  Zero,

  0x10,

  0x10,

  0xSSSS, //PState 0(CPU最高频率挡)的FID、VID值

  Zero // PState序列0

  },

  Package (0x06)

  {

  Zero,

  Zero,

  0x10,

  0x10,

  0xSSSS, //PState 1的FID、VID值

  One // PState序列1

  },

  Package (0x06)

  {

  Zero,

  Zero,

  0x10,

  0x10,

  0xSSSS, //PState 2的FID、VID值

  0x02 //PState序列2

  }

  })

  }

  Method (_PSD, 0, NotSerialized)

  {

  Return (Package (0x05)

  {

  0x05,

  Zero,

  Zero,

  0xFC,

  0x04

  })

  }

  Method (_CST, 0, NotSerialized)

  {

  Return (Package (0x02)

  {

  One,

  Package (0x04)

  {

  ResourceTemplate ()

  {

  Register (FFixedHW,

  0x01, // Bit Width

  0x02, // Bit Offset

  0x0000000000000000, // Address

  0x01, // Access Size

  )

  },

  One,

  0x9D,

  0x03E8

  }

  })

  }

  }

  Scope (_PR.CPU1)

  {

  Method (_PSS, 0, NotSerialized)

  {

  Return (^^CPU0._PSS ())

  }

  Method (_PSD, 0, NotSerialized)

  {

  Return (^^CPU0._PSD ())

  }

  Method (_CST, 0, NotSerialized)

  {

  Return (Package (0x04)

  {

  0x03,

  Package (0x04)

  {

  ResourceTemplate ()

  {

  Register (FFixedHW,

  0x01, // Bit Width

  0x02, // Bit Offset

  0x0000000000000000, // Address

  ,)

  },

  One,

  Zero,

  0x03E8

  },

  Package (0x04)

  {

  ResourceTemplate ()

  {

  Register (FFixedHW,

  0x08, // Bit Width

  0x00, // Bit Offset

  0x0000000000000414, // Address

  ,)

  },

  0x02,

  One,

  0x01F4

  },

  Package (0x04)

  {

  ResourceTemplate ()

  {

  Register (FFixedHW,

  0x08, // Bit Width

  0x00, // Bit Offset

  0x0000000000000415, // Address

  ,)

  },

  0x03,

  0x55,

  0xFA

  }

  })

  }

  }

  Scope (_PR.CPU2)

  {

  Method (_PSS, 0, NotSerialized)

  {

  Return (^^CPU0._PSS ())

  }

  Method (_PSD, 0, NotSerialized)

  {

  Return (^^CPU0._PSD ())

  }

  Method (_CST, 0, NotSerialized)

  {

  Return (^^CPU1._CST ())

  }

  }

  Scope (_PR.CPU3)

  {

  Method (_PSS, 0, NotSerialized)

  {

  Return (^^CPU0._PSS ())

  }

  Method (_PSD, 0, NotSerialized)

  {

  Return (^^CPU0._PSD ())

  }

  Method (_CST, 0, NotSerialized)

  {

  Return (^^CPU1._CST ())

  }

  }

  复制代码

  说明(对照下图理解):

  若你的CPU为双核,则删除上述代码144行以后部分(CPU2、CPU3部分),4核无需;

  R(上述代码第5行的0x0R)表示你的CPU可使用PState挡数,打开PStateChanger点击PState项,如图所示,此CPU可使用PState挡数为3挡,则R应改为3,若你的CPU为4挡则改为4,依此类推;

  SSSS为该PState挡的FID(倍频)、VID(默认电压)值(不是10进制),如图PState0 FID值为08,VID值为20,则SSSS应为0820;

  0xSSSS下面的Zero、One、0x02等表示该PState挡的序列,如PState0为Zero,PState1为One,PState2为0x02,PState3为0x03 ......依此类推自行修改;

  你的CPU有几挡PState,则有几份如下代码Package (0x06)

  {

  Zero,

  Zero,

  0x10,

  0x10,

  0xSSSS, //FID、VID值

  Zero // PState序列

  },

www.bkjia.comtruehttp://www.bkjia.com/jinghua/jinghua_92532.htmlTechArticle请大家注意一下,这个方法只适合core 2 duo/quad系列,不适合AMD的CPU,也不适合Intel i7系列CPU,i7的CPU可以通过BIOS选项直接开启Speedstep,不需...

相关文章

    暂无相关文章
相关搜索:
相关频道:

帮客评论

视觉看点