如何调整处理器总线乘法器
How to Adjust Processor Bus Multiplier
我正在寻找一个控制处理器总线速度乘数的Windows函数,结构,API。换句话说,我试图通过改变乘法器来调整CPU的频率。目前,我正在使用以下函数修改电源方案来调整 CPU 速度。
PowerWriteDCValueIndex(…,…,…,…)
并调整
THROTTLE_MAXIMUM; & THROTTLE_MINIMUM;
但是,这允许我将处理器速度更改为 % 这并不准确。希望我的问题清楚,你可以提供帮助。
谢谢。
操作系统中电源状态的处理由内核驱动程序模块处理,该模块至少特定于特定的 CPU 供应商,有时也特定于 CPU 型号(例如,操作在 64 位 AMD 处理器中完成的方式与在 32 位 AMD 处理器中完成的操作不同。我曾经玩过Linux驱动程序来设置AMD处理器的时钟速度)。
此驱动程序将由"调控器"进程控制,该进程将你已经在使用的配置设置(策略)、CPU 上的当前负载(通常还有一些"负载历史记录",以减少过多的开关)和其他来源(如 CPU 温度、电池剩余电量(如果适用))作为输入。[在移动设备中,CPU 的温度绝对是等式的输入,因为大多数现代 CPU 和 GPU 能够消耗比设备可以耗散的功率多得多,因此如果功率设置长时间保持在高设置上,芯片会过热]
不幸的是,在执行此操作之前,您需要了解比"我想跑这么快"更多的细节。有一些 BIOS 表(ACPI 和/或其他供应商特定的表)定义了在什么频率下使用什么电压,您需要先设置电压,然后在速度上升时设置时钟速度,在速度下降时设置时钟速度然后设置电压。这些表通常不会包含 CPU 可以达到的所有速度,而是包含"全速"、"中速"和"慢速"设置。[并且不同类型的CPU会有多个表,因为BIOS不知道构建系统的人是使用高功率,高速CPU还是低速,低功耗CPU]。
还有一些寄存器需要编程,以确定CPU在切换到新速度之前应该"休眠"多长时间,以使PLL(控制时钟乘法器)稳定下来。这意味着您不想太频繁地切换。
系统还需要知道时钟频率已经改变,以便可以调整任何依赖于CPU速度的处理(例如,在x86上使用RDTSC指令来测量短时间的东西将需要根据新设置调整其时序)。
如果你没有把所有这些事情都做到完美,你就会有一个不稳定的系统(在移动设备中,你甚至可以"炸"芯片——或者用户!
目前尚不清楚您打算做什么,但总的来说,最好将这些事情留给系统中已经存在的州长,而不是试图建立一个更好的系统——几乎所有让这个"更好"的尝试都会失败。
- #定义c-预处理器常量..我做错了什么
- 预处理器:插入结构名称中的前一个行号
- 如何在c++中实现处理器调度模拟器
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C/C++预处理器是否可以检测一些编译器选项
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 在clang++预处理器中确定gcc工具链版本
- 不同/较旧的处理器运行c++代码的方式是否不同
- 用于交叉编译和CMake的预处理器宏的单元测试
- 有没有办法在从编译器获取参数时避免预处理器宏?
- 如何比较两个同名的预处理器宏?
- 从预处理器获取 Windows 版本(C++ Win32)
- 如何摆脱为条件编译定义预处理器宏的需要?
- C 预处理器 - 现有定义的预置路径
- VS2015 预处理器定义与点
- 不带预处理器的调用方法/文件的文件名/行号
- 获取文件数据预处理器宏
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 有没有办法在 c++ 中拥有条件预处理器
- 如何调整处理器总线乘法器