syscl 发表于 2015-3-18 16:46

利用ssdtPRGen.sh生成适合的处理器的变频配置文件

1. 获取最新的ssdtPRGen.sh        (15.7)curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
2. 打开执行权限chmod +x ~/ssdtPRGen.sh
3.让ssdtPRGen.sh创建运行环境ssdtPRGen.sh -c 2
这样, ssdtPRGen.sh的环境就创建好了。下面, 我们需要为自己创建一份合适的SSDT以实现CPU的变频。也就是, 利用SSDT表, 向系统传递_PSS(Performance Supported States)和_CST(C States)参数。一旦传递成功, 系统日志中便会出现『X86PlatformShim::sendPStates - Success!』。

要向系统传递合适的参数, 就需要了解处理器的『处理器型号』(processor model)、『最大TDP』、『基础频率/最低频率』(base frequency)、『最高频率』(clock frequency)、『睿频最高档』(turbo)、『核心数』、『线程数/逻辑处理器数量』。这些数据, 全部都可以通过http://ark.intel.com获得。


但是, 如果我有一个以上的处理器, 我的处理器模型不在ssdtPRGen.sh的支持列表中, 又或者我对处理器进行了超频, 这时候我该如何生成合适的SSDT?直接运行ssdtPRGen.sh显然不合适了。
1. 先来看一例, 奔腾G3420。这个处理器并不在ssdtPRGen.sh的支持列表内, 如果不生成合适的SSDT, 系统便会让处理器一直处在最高频率运行, 并且有可能会卡顿。
首先获取处理器的一些参数:处理器型号,最大TDP, 基础频率, 最高频率, 睿频最高档, 核心数, 线程数, 分别对应G3420,53,800,2800,2,2。
2. 前往目录『组合键:Command+Shift+G』『~/library/ssdtPRGen/Data/』, 打开Haswell.cfg。可以看到, 有很多CPU的数据, 问题是, G3420应该添加到什么地方。

注意到『gServerHaswellCPUList=』和『gDesktopHaswellCPUList=』这些类似的字样了吗,这代表了不同类型处理器的集合,G3420属于桌面Haswell平台,因此将G3420,53,800,2800,2,2粘贴到『gDesktopHaswellCPUList=』下面任意一行保存即可。
3. 在终端中执行~/ssdtPRGen.sh -c2 -p G3420
就得到了我们要的ssdt.dsl, 从『~/library/ssdtPRGen/』中拷贝出生成的ssdt.aml或者ssdt.dsl贴到对应目录即可。

上述情况只是ssdtPRGen.sh比较一般的使用,现在来看一下ssdtPRGen.sh更详细的应用。
1. 查看ssdtPRGen.sh所能做到的所有事情,终端中输入~/ssdtPRGen.sh -h得到:Usage: ./ssdtPRGen.sh [-abcdfhlmptwx]       -acpi Processor name (example: CPU0, C000)       -bclk frequency (base clock frequency)       -board-id (example: Mac-F60DEB81FF30ACF6)       -cpu type           0 = Sandy Bridge          1 = Ivy Bridge          2 = Haswell          3 = Broadwell       -debug output           0 = no debug injection/debug output          1 = inject debug statements in: ssdt.dsl          2 = show debug output          3 = both       -frequency (clock frequency)       -help info (this)       -lfmode, lowest idle frequency       -logical processors        -model (example: MacPro6,1)       -open the previously generated SSDT       -processor model (example: 'E3-1285L v3')       -show supported board-id and model combinations:         Broadwell         Haswell         Ivy Bridge         Sandy Bridge       -turbo maximum (turbo) frequency:          6300 for Sandy Bridge and Ivy Bridge          8000 for Haswell and Broadwell       -tdp        -workarounds for Ivy Bridge           0 = no workarounds          1 = inject extra (turbo) P-State at the top with maximum (turbo) frequency + 1 MHz          2 = inject extra P-States at the bottom          3 = both       -xcpm mode           0 = XCPM mode disabled          1 = XCPM mode enabled
我们平常sh ~/ssdtPRGen.sh只是这个脚本冰山一角,其实可以调整的部分非常多,甚至,我可以在不修改BIOS设置的情况下,限制处理器的最高频率。
2. 例如,我希望能够生成第2个处理器(CPU1)的SSDT,其详细参数如下:
参数(单位) 数值
处理器 E5-1620 v3
基础频率(MHz) 100
系统默认的SMBIOS Mac-F60DEB81FF30ACF6
处理器类型 Haswell
处理器频率(MHz) 3500
空闲最低频率 1200
线程数量 8
机型 MacPro6,1
处理器型号 E5-1620 v3
睿频最大频率(MHz) 3600
散热设计功耗(Watts)140



我们自然希望开启内核的电源管理模式(仅限IvyBridge、Haswell、Broadwell),也就是 XCPM mode enabled。接下来注入参数,
~/ssdtPRGen.sh -a CPU1 -bclk 100 -b Mac-F60DEB81FF30ACF6 -c 2 -f 3500 -lfm 1200 -l 8 -m MacPro6,1 -p E5-1620\ v3 -turbo 3600 -t 140 -x 1
这样便完成了特定ssdt.dsl以及ssdt.aml的生成了。从『~/library/ssdtPRGen/』中拷贝出生成的ssdt.aml或者ssdt.dsl贴到对应目录即可。

附上最新的ssdtPRGen.sh以及参考资料

**** Hidden Message *****


syscl 发表于 2015-3-18 16:46

本帖最后由 syscl 于 2015-3-22 17:35 编辑

关于其他平台变频文件的生成,我们可以仿照前面的参数进行自定义操作。
下载『User Defined.cfg』,用『文本编辑』打开。可以在『gUserDefinedCPUList=(』中添加处理器的信息。以G1840为例。
『G1840,53,800,2800,2800,2,2,2,100』分别对应着处理器型号,TDP,基础频率(blck),时钟频率,最高睿频,核心数,线程数,平台类型,总线频率。


保存后,粘贴到『~/Library/ssdtPRGen/Data/』下面,并执行如下命令:
~/ssdtPRGen.sh -p G1840

////


针对处理器并非Haswell的,可以将平台类型设置成Sandy Bridge/Ivy Bridge/Haswell/Broadwell。


////





syscl 发表于 2015-3-18 16:46

本帖最后由 syscl 于 2016-4-4 12:58 编辑

修正第一楼一个错误。第一次创建运行环境应该是
~/ssdtPRGen.sh -target 2
切莫漏了『~/』。

////

syscl 发表于 2015-3-18 16:47

本帖最后由 syscl 于 2015-4-5 18:28 编辑

超频参数调整


以G3258为例。十分感谢景友@yelon1988提供的反馈。


将G3258超频至4400 MHz需要填写参数
G3258,53,800,3200,4400,2,2
这意味着默认频率3200 MHz,睿频(超频)至4400 MHz .


效果和填写参数『G3258,53,800,4400,4400,2,2』一样,但是启动日志里不会出现错误:


15/4/2 下午12:25:56.000 kernel: IOPPF: XCPM mode
15/4/2 下午12:25:56.000 kernel: XCPM: P-state table mismatch (error:0x4)
15/4/2 下午12:25:56.000 kernel: X86PlatformShim::sendPStates - pmCPUControl (SETPSTATETABLE) returned 0x4
15/4/2 下午12:25:56.000 kernel: X86PlatformShim::start - Failed to send PStates


而是正确的启动信息:


15/4/4 下午1:39:10.000 kernel: IOPPF: XCPM mode
15/4/4 下午1:39:10.000 kernel: unknownPlatform
15/4/4 下午1:39:10.000 kernel: X86PlatformShim::sendPStates - Success!
15/4/4 下午1:39:10.000 kernel: X86PlatformShim::sendPStates - Success!


////

Vista_Vista 发表于 2015-3-18 16:47

高级技术贴,沙发支持~~~~

gujiangjiang 发表于 2015-3-18 16:47

好帖啊,不错,不过我现在用Clover的自动变频功能,貌似还可以。

syscl 发表于 2015-3-18 16:47

发现分成几块编辑更容易一些。占楼备用

syscl 发表于 2015-3-18 16:48

这么多层,应该够了。

drcc 发表于 2015-3-18 16:57

好好好 ,不过下载的是一个ssdtPRGen.zip文件夹
curl -o ~/Library/ssdtPRGen.zip https://codeload.github.com/Piker-Alpha/ssdtPRGen.sh/zip/master
unzip -qu ~/Library/ssdtPRGen.zip -d ~/Library/
mv ~/Library/ssdtPRGen.sh-master ~/Library/ssdtPRGen
rm ~/Library/ssdtPRGen.zip

syscl 发表于 2015-3-18 17:01

drcc 发表于 2015-3-18 16:57 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
好好好 ,不过下载的是一个ssdtPRGen.zip文件夹
curl -o ~/Library/ssdtPRGen.zip https://codeload.githu ...

我的地址和你的不同。

小小的爱 发表于 2015-3-18 17:02

这个很详细啊!谢谢楼主的分享了!

每日一游 发表于 2015-3-18 17:03

支持了!~

syscl 发表于 2015-3-18 17:05

每日一游 发表于 2015-3-18 17:03 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
支持了!~

谢谢~~~{:9_604:}

syscl 发表于 2015-3-18 17:11

gujiangjiang 发表于 2015-3-18 16:47 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
好帖啊,不错,不过我现在用Clover的自动变频功能,貌似还可以。

但是赛扬和奔腾不行。

你用不用这么快插楼啊,断了楼层。

而且Clover的变频不能自行调整一些参数(例如限制最高频)。也不知道超频之后能不能有更多的档位。

yqd1234 发表于 2015-3-18 17:12

好东西 必须顶

maojinbing 发表于 2015-3-18 17:16

太好了,这么详细

JAMESM5 发表于 2015-3-18 17:31

学习一下

ilh 发表于 2015-3-18 18:36

支持精品文章

cmise 发表于 2015-3-18 18:43

支持楼主分享!!!

vbsjbs 发表于 2015-3-18 18:43

谢楼主的分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 利用ssdtPRGen.sh生成适合的处理器的变频配置文件