I experimented with Intelís Speedstep under DOS yesterday.
I must say AMDís Cool & Quiet solution is more DOS friendly :)
1.Voltage settings: the VID values are processor specific and not public.
ďThe 16-bit encoding that defines valid operating points is model-specific. Applications and performance tools are not expected to use either IA32_PERF_CTL or IA32_PERF_STATUS and should treat both as reservedĒ
In contrast AMDís VID values are part of the specification (CPU model independent coding scheme) and public.
2. But the main problem is the multicore logic of Speedstep. Transitions to lower performance states are only possible if All cores gets the low p-state values. If only one core gets the lower pstate values in its MSR then the CPU core registers the request to the targeted operating point but the transition wonít occur. Since under DOS only the bootstrap processor is available, you can only set higher p-states than the values configured in the BIOS. (BIOS always sets All cores to the same values).†
In contrast on AMD K8 itís enough to set the MSR on one core and the other core automatically follows the new settings. In case of AMD K10 series the cores can work independently , so the other cores stays in the BIOS defined state, but the bootstrap core can be set freely.
To get to the point I have written a small utility that can adjust Speedstep p-states under DOS (with the above mentioned multicore restrictions). So if you would like to use it with a multicore speedstep capable Intel CPU you should set the multiplier and voltage to minimum in BIOS, in this way you can set all values freely in DOS. I suppose with a single core CPU (Pentium M, Core Solo) this is not required.
Any feedback is welcome.
The software can be downloaded from here (source is included):
Ps: JEMM386 and UMBPCI is OK, but you cannot use this program if EMM386 is loaded.