[原创]你想如windows 那样给你的PM CPU 降低电压吗?那么看这里~是在标准电压基础上降低 不
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
[原创]你想如windows 那样给你的PM CPU 降低电压吗?那么看这里~是在标准电压基础上降低 不
1 如果你不知道我在说什么 ,就不要往下看了
2 如果你不愿意或者不会编译内核 也不要看了
3 如果你不知道自己cpu稳定的工作电压 也不要看了
4 如果你用台机 也不需要降低电压
5 如果你电池很nb 更不需要了~~
6 以上条件 都不满足的可以往下看~~
~~PM 1代和2代~~首先给内核打补丁 补丁文件在附件里面~~~
然后 打开 /linux/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
会看到如下几个结构
static struct cpufreq_frequency_table banias_900[] =
{
OP(600, 844),
OP(800, 988),
OP(900, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Ultra Low Voltage Intel Pentium M processor 1000MHz (Banias) */
static struct cpufreq_frequency_table banias_1000[] =
{
OP(600, 844),
OP(800, 972),
OP(900, 988),
OP(1000, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Low Voltage Intel Pentium M processor 1.10GHz (Banias) */
static struct cpufreq_frequency_table banias_1100[] =
{
OP( 600, 956),
OP( 800, 1020),
OP( 900, 1100),
OP(1000, 1164),
OP(1100, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Low Voltage Intel Pentium M processor 1.20GHz (Banias) */
static struct cpufreq_frequency_table banias_1200[] =
{
OP( 600, 956),
OP( 800, 1004),
OP( 900, 1020),
OP(1000, 1100),
OP(1100, 1164),
OP(1200, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.30GHz (Banias) */
static struct cpufreq_frequency_table banias_1300[] =
{
OP( 600, 956),
OP( 800, 1260),
OP(1000, 1292),
OP(1200, 1356),
OP(1300, 1388),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.40GHz (Banias) */
static struct cpufreq_frequency_table banias_1400[] =
{
OP( 600, 956),
OP( 800, 1180),
OP(1000, 1308),
OP(1200, 1436),
OP(1400, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.50GHz (Banias) */
static struct cpufreq_frequency_table banias_1500[] =
{
OP( 600, 956),
OP( 800, 1116),
OP(1000, 1228),
OP(1200, 1356),
OP(1400, 1452),
OP(1500, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.60GHz (Banias) */
static struct cpufreq_frequency_table banias_1600[] =
{
OP( 600, 956),
OP( 800, 1036),
OP(1000, 1164),
OP(1200, 1276),
OP(1400, 1420),
OP(1600, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.70GHz (Banias) */
static struct cpufreq_frequency_table banias_1700[] =
{
OP( 600, 956),
OP( 800, 1004),
OP(1000, 1116),
OP(1200, 1228),
OP(1400, 1308),
OP(1700, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
#undef OP
/* Dothan processor datasheet 30218903.pdf defines 4 voltages for each
frequency (VID#A through VID#D) - this macro allows us to define all
of these but we only use the VID#C voltages at compile time - this may
need some work if we want to select the voltage profile at runtime. */
#define OP(mhz, mva, mvb, mvc, mvd) \
{ \
.frequency = (mhz) * 1000, \
.index = (((mhz)/100) << 8) | ((mvc - 700) / 16) \
}
/* Intel Pentium M processor 715 / 1.50GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1500[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 988, 988, 988, 988),
OP(1000, 1052, 1052, 1052, 1052),
OP(1200, 1180, 1180, 1180, 1180),
OP(1500, 1212, 1212, 1212, 1212),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 725 / 1.60GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1600[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1068, 1068, 1052, 1052),
OP(1000, 1132, 1132, 1116, 1116),
OP(1200, 1212, 1196, 1180, 1164),
OP(1400, 1276, 1260, 1244, 1228),
OP(1600, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 735 / 1.70GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1700[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1052),
OP(1000, 1116, 1116, 1116, 1100),
OP(1200, 1180, 1180, 1164, 1148),
OP(1400, 1244, 1244, 1228, 1212),
OP(1700, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 745 / 1.80GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1800[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1036),
OP(1000, 1116, 1100, 1100, 1084),
OP(1200, 1164, 1164, 1148, 1132),
OP(1400, 1228, 1212, 1212, 1180),
OP(1600, 1292, 1276, 1260, 1228),
OP(1800, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 755 / 2.00GHz (Dothan) */
static struct cpufreq_frequency_table dothan_2000[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 700, 700, 700, 700),
OP(1000, 700, 700, 700, 700),
OP(1200, 1084, 1084, 1084, 1084),
OP(1400, 1116, 1116, 1116, 1116),
OP(1600, 1148, 1148, 1148, 1148),
OP(1800, 1196, 1196, 1196, 1196),
OP(2000, 1244, 1244, 1244, 1244),
{ .frequency = CPUFREQ_TABLE_END }
};
看到OP 后面的4个数字了吗 不错那就是电压值 前面是cpu的频率 后面的值/100 就是实际的电压值
如果里面没有你的cpu可以跟改一个为你的cpu~~型号 如果觉得变频档次不够可以自己添加 最多
是1个倍频1档次
cpu的稳定电压可以在windows 用rmclock 测试出来~~~电压值可以参考里面的~
然后如一般情况编译次内核 拷贝你的.config 到/usr/src/linux
~~cd /usr/src/linux
make&&make modules_install&&make install
如果安装了fglrx驱动清重新安装一次~~~~
2 如果你不愿意或者不会编译内核 也不要看了
3 如果你不知道自己cpu稳定的工作电压 也不要看了
4 如果你用台机 也不需要降低电压
5 如果你电池很nb 更不需要了~~
6 以上条件 都不满足的可以往下看~~
~~PM 1代和2代~~首先给内核打补丁 补丁文件在附件里面~~~
然后 打开 /linux/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
会看到如下几个结构
static struct cpufreq_frequency_table banias_900[] =
{
OP(600, 844),
OP(800, 988),
OP(900, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Ultra Low Voltage Intel Pentium M processor 1000MHz (Banias) */
static struct cpufreq_frequency_table banias_1000[] =
{
OP(600, 844),
OP(800, 972),
OP(900, 988),
OP(1000, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Low Voltage Intel Pentium M processor 1.10GHz (Banias) */
static struct cpufreq_frequency_table banias_1100[] =
{
OP( 600, 956),
OP( 800, 1020),
OP( 900, 1100),
OP(1000, 1164),
OP(1100, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Low Voltage Intel Pentium M processor 1.20GHz (Banias) */
static struct cpufreq_frequency_table banias_1200[] =
{
OP( 600, 956),
OP( 800, 1004),
OP( 900, 1020),
OP(1000, 1100),
OP(1100, 1164),
OP(1200, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.30GHz (Banias) */
static struct cpufreq_frequency_table banias_1300[] =
{
OP( 600, 956),
OP( 800, 1260),
OP(1000, 1292),
OP(1200, 1356),
OP(1300, 1388),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.40GHz (Banias) */
static struct cpufreq_frequency_table banias_1400[] =
{
OP( 600, 956),
OP( 800, 1180),
OP(1000, 1308),
OP(1200, 1436),
OP(1400, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.50GHz (Banias) */
static struct cpufreq_frequency_table banias_1500[] =
{
OP( 600, 956),
OP( 800, 1116),
OP(1000, 1228),
OP(1200, 1356),
OP(1400, 1452),
OP(1500, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.60GHz (Banias) */
static struct cpufreq_frequency_table banias_1600[] =
{
OP( 600, 956),
OP( 800, 1036),
OP(1000, 1164),
OP(1200, 1276),
OP(1400, 1420),
OP(1600, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 1.70GHz (Banias) */
static struct cpufreq_frequency_table banias_1700[] =
{
OP( 600, 956),
OP( 800, 1004),
OP(1000, 1116),
OP(1200, 1228),
OP(1400, 1308),
OP(1700, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};
#undef OP
/* Dothan processor datasheet 30218903.pdf defines 4 voltages for each
frequency (VID#A through VID#D) - this macro allows us to define all
of these but we only use the VID#C voltages at compile time - this may
need some work if we want to select the voltage profile at runtime. */
#define OP(mhz, mva, mvb, mvc, mvd) \
{ \
.frequency = (mhz) * 1000, \
.index = (((mhz)/100) << 8) | ((mvc - 700) / 16) \
}
/* Intel Pentium M processor 715 / 1.50GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1500[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 988, 988, 988, 988),
OP(1000, 1052, 1052, 1052, 1052),
OP(1200, 1180, 1180, 1180, 1180),
OP(1500, 1212, 1212, 1212, 1212),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 725 / 1.60GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1600[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1068, 1068, 1052, 1052),
OP(1000, 1132, 1132, 1116, 1116),
OP(1200, 1212, 1196, 1180, 1164),
OP(1400, 1276, 1260, 1244, 1228),
OP(1600, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 735 / 1.70GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1700[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1052),
OP(1000, 1116, 1116, 1116, 1100),
OP(1200, 1180, 1180, 1164, 1148),
OP(1400, 1244, 1244, 1228, 1212),
OP(1700, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 745 / 1.80GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1800[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1036),
OP(1000, 1116, 1100, 1100, 1084),
OP(1200, 1164, 1164, 1148, 1132),
OP(1400, 1228, 1212, 1212, 1180),
OP(1600, 1292, 1276, 1260, 1228),
OP(1800, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 755 / 2.00GHz (Dothan) */
static struct cpufreq_frequency_table dothan_2000[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 700, 700, 700, 700),
OP(1000, 700, 700, 700, 700),
OP(1200, 1084, 1084, 1084, 1084),
OP(1400, 1116, 1116, 1116, 1116),
OP(1600, 1148, 1148, 1148, 1148),
OP(1800, 1196, 1196, 1196, 1196),
OP(2000, 1244, 1244, 1244, 1244),
{ .frequency = CPUFREQ_TABLE_END }
};
看到OP 后面的4个数字了吗 不错那就是电压值 前面是cpu的频率 后面的值/100 就是实际的电压值
如果里面没有你的cpu可以跟改一个为你的cpu~~型号 如果觉得变频档次不够可以自己添加 最多
是1个倍频1档次
cpu的稳定电压可以在windows 用rmclock 测试出来~~~电压值可以参考里面的~
然后如一般情况编译次内核 拷贝你的.config 到/usr/src/linux
~~cd /usr/src/linux
make&&make modules_install&&make install
如果安装了fglrx驱动清重新安装一次~~~~
上次由 晶晶守护神 在 2007-12-24 19:02,总共编辑 2 次。
悟以往之不鉴,知来者之可追
识迷途其未远 觉今是而昨非
识迷途其未远 觉今是而昨非
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
编译内核的注意的几点~~
如果希望用cpufreq 则全部加为模块~~
下面的设备不要 选
ACPI Processor P-States driver
选了以后speedstep将失效~~~speedstep是比acpi 更低层的驱动 有更好的性能
选了这个将加载不了speedstep模块 上面的电压更改就没有用了~~~~~~~~
直接 将上面lsmod的模块写进etc/modules里面
如果希望用cpufreq 则全部加为模块~~
下面的设备不要 选
ACPI Processor P-States driver
选了以后speedstep将失效~~~speedstep是比acpi 更低层的驱动 有更好的性能
选了这个将加载不了speedstep模块 上面的电压更改就没有用了~~~~~~~~
直接 将上面lsmod的模块写进etc/modules里面
上次由 晶晶守护神 在 2007-12-24 18:20,总共编辑 3 次。
悟以往之不鉴,知来者之可追
识迷途其未远 觉今是而昨非
识迷途其未远 觉今是而昨非
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
发图
发图发图发图发图
已经增加了我添加的频率
电压应该是有变换的 ~~~不知道怎么看~~
出了手工选择以外自动适应的话 对于 具体的定义可以在 /etc/cpufreq.conf里面 有详细的定义~~
lsmod 里面应该有这几个
cpufreq_powersave 1664 0
cpufreq_stats 4740 0
cpufreq_performance 1984 0
cpufreq_ondemand 7672 0
cpufreq_conservative 6496 1
speedstep_lib 3968 0
speedstep_centrino 6088 0
下载补丁后去掉.bz2扩展名就行了 不要解压~~~没有压缩~~
freq_table 4164 3 cpufreq_stats
已经增加了我添加的频率
电压应该是有变换的 ~~~不知道怎么看~~
出了手工选择以外自动适应的话 对于 具体的定义可以在 /etc/cpufreq.conf里面 有详细的定义~~
lsmod 里面应该有这几个
cpufreq_powersave 1664 0
cpufreq_stats 4740 0
cpufreq_performance 1984 0
cpufreq_ondemand 7672 0
cpufreq_conservative 6496 1
speedstep_lib 3968 0
speedstep_centrino 6088 0
下载补丁后去掉.bz2扩展名就行了 不要解压~~~没有压缩~~
freq_table 4164 3 cpufreq_stats
- 附件
-
- cpufreq-speedstep-dothan-3.patch.bz2
- (3.62 KiB) 已下载 55 次
上次由 晶晶守护神 在 2007-12-24 17:21,总共编辑 2 次。
悟以往之不鉴,知来者之可追
识迷途其未远 觉今是而昨非
识迷途其未远 觉今是而昨非
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09
- shellex
- 帖子: 2180
- 注册时间: 2007-02-18 19:33
- 系统: OSX
- 来自: lyric.im
- 联系:
- shellex
- 帖子: 2180
- 注册时间: 2007-02-18 19:33
- 系统: OSX
- 来自: lyric.im
- 联系:
- 晶晶守护神
- 帖子: 705
- 注册时间: 2007-12-02 14:09