CpuIdle is Copyright (C) 1997-2000 Andreas Goetz.
eMail:
cpuidle@gmx.de
Homepage:
Mirror site:www.cpuidle.de
www.bugcomputer.com/cpuidle
CpuIdle's is also a CPU optimizer. Most CPUs include performance increasing options that are disabled by default. CpuIdle activates them!
Run CpuIdle. If you want to start CpuIdle each time you start Windows open the Options dialog, choose StartUp and check the Start with Windows box.
Under normal circumstances the CPU isn't always active but spends much time waiting for the keyboard, harddisk or CD-ROM. What would be more logical than to turn off the CPU for that period? That's exactly what the HLT machine instruction (Opcode F4) does. Whenever the CPU encounters a HLT instruction the clock is halted and the CPU enters suspend mode until an interrupt, NMI, or reset happens. With the advent of power saving microprocessors like the Cyrix Cx486S the HLT instruction elicits an additional benefit. When "Suspend on HLT" is enabled in the configuration register the processor not only stops on HLT but also enters the power saving suspend mode.
Modern operating systems like Linux execute the HLT instruction in an idle priority thread. This thread is always executed when, as the name implies, the CPU is otherwise idle. Therefore no additional execution time is needed, the CPU will not run slower. This does not hurt performance since the CPU controls the powering-down of specific internal parts by hardware-control, so there's no software intervention needed for explicitly re-enabling a powered-down part (cited from set6x86 readme by Koen Gadeyne).
Unfortunately, Windows 95 does not support HLT. To remove this limitation CpuIdle provides an idle thread executing HLT for Windows 95. Since HLT is a privileged instruction it can only be executed on ring 0 whereas normal Windows programs run on ring 3. CpuIdle uses a virtual device driver (VxD) that can run on ring 0 to execute HLT.
On the test system (K6-200) the temperature as measured below the fan could be lowered by more than 10 degrees centigrade when Windows was idle.
If started without any parameters CpuIdle will consume about 500KB of 32Bit memory (according to Wintop from MS Kernel Toys). The largest part of this memory is used for the nice interface, icons and bitmaps.
For most CPUs further information is displayed, like Write Allocation or Suspend on HLT
If your CPU is not or not correctly identified by CpuIdle, or the displayed clock rate is incorrect, CpuIdle's main function, the cooling of your CPU, is NOT impaired.
The other options are used to enable/ disable the the splash screen and the CPU optimization. It is recommended to always enable CPU optimization since this might increase your application performance (i.e. by enabling the Write Allocation some CPUs provide).
Normally CpuIdle runs on idle priority, meaning it should only execute the HLT command when the CPU (Windows) is otherwise unoccupied. However, due to deficiencies of the Windows scheduler and the properties of the HLT command CpuIdle can on some occasions execute HLT, which takes some time (until next interrupt) although other work is still pending!
The idea is that this behaviour squeezes the last half percent out of CpuIdle, esp. for 3D games.
CpuIdle knows just one parameter, which is -hide. With this parameter CpuIdle is loaded without displaying the taskbar idle icon. The drawback is that if you want to exit or restart CpuIdle you'll first have to kill the program manually since there's no hotkey available to redisplay the icon. The CpuIdle display can also be hidden by selecting "Hide" in the CpuIdle menu.
AMD | CpuIdle will work instantly with AMD Microprocessors K5, K6, K6-2, K6-III and Athlon (K7). All AMD CPUs have built-in "Suspend on HLT" that is always enabled. |
Intel |
Modern Intel P5, P5MMX, PPro, PII (Xeon), PIII (Xeon) and Celeron type processors are supported. With the P5 Intel introduced "Suspend on HLT" for it's CPUs. This features is hardly documented and by default disabled (shame on all BIOS programmers). To my knowledge CpuIdle is the only software that uses this feature. When this feature is enabled additional 1.8 Amperes can be saved. Without enabled AutoHalt (that's how it's called) Intel CPUs will still run cooler with CpuIdle but from the table below you can see that the power (and temperature) savings will be lower than for AMD or Cyrix processors (these values are taken from c't magazine without AutoHalt enabled). Note: AutoHalt means the same like "Suspend on HLT" |
Cyrix | Cyrix M1SC, M1 and M2 have a "Suspend on HLT" feature that has to be enabled by software or via BIOS setup. When run without command line switches that override the default settings CpuIdle enables "Suspend on HLT" by default. With the same procedure it should also work with 486 Cyrix, TI and IBM models. |
Others | CpuIdle will also run on all other x86-compatible CPUs supported by Windows (like the older 486). CpuIdle might not be able to recognise the correct CPU type, but power saving will still be enabled. |
"Suspend on Halt" for Cyrix compatible CPUs:
The following processors should all be supported by CpuIdle if the "Suspend on Halt" (Bit 3 in Configuration Control Register 2 - CCR2) is enabled. CpuIdle enables this feature by default.
Cyrix: Cx486S/S2/D/D2/DX/DX2/DX4 Cx5x86 (M1SC), Cyrix Cx6x86 (M1), Cx6x86MX (M2) IBM: BL486DX/DX2 (Blue Lightning) 5x86, 6x86 TI: TI486DX2,TI486DX4
AMD | K5-166 | K6-166 | K6-200 | K6-233 |
DOS | 5.2A | 3.8A | 5.0A | 7.2A |
NT | 2.8A | 1.7A | 1.8A | 1.9A |
Intel P5 | 166 | MMX-166 | MMX-200 | MMX-233 |
DOS | 5.1A | 3.94A | 4.4A | 5.2A |
NT | 4.2A | 3.25A | 4.2A | 4.9A |
Intel P5/P5MMX |
Intel P II |
AMD K5/K6/K6-2 |
Cyrix M1SC/M1/M2 |
IDT C6 |
|
Write Allocatation* | Yes | Yes | |||
Auto HLT (AHD)* Low Power on AHD* Suspend on HLT* |
Yes Yes (MMX only) |
Yes | Always On |
Yes |
Yes |
No Locking* | Yes | Yes | |||
Weak Ordering* | Yes |
* If a given feature exists on a CPU it will be enabled by default. If you experience problems with this please read the next section on how to disable the features you don't need.
Q: | How can I determine if CpuIdle really works on my computer? |
A: |
Ahh. That is a little bit difficult as this can't be answered by the CpuIdle software. A thermometer placed on your CPU before and after CpuIdle would help. The other way would be to hand-test the temperature of the air blowing from your CPU fan. After running CpuIdle for some minutes it should be definitely cooler than without CpuIdle running (of course only if you don't put heavy CPU load on your PC during that time). On the other hand it is much simpler to tell if CpuIdle doesn't work. It doesn't if...
If you want to know how much difference CpuIdle makes on your system, and you have a mainboard with the LM 78 or compatible sensor which displays system temperature in your BIOS setup, you may want to try Motherboard Monitor, CpuMonitor or Hmonitor. |
Q: | Ok, I believe that CpuIdle works, but is it safe? |
A: | Of course. Linux and other operating systems use the same techniques as CpuIdle to lower power consumption. However a cheap PC with low-quality components could possible be crashed by CpuIdle, as well as by any other application. |
Q: | Does CpuIdle put additional load onto my CPU? |
A: | Read the documentation. No. It just consumes idle time. Measurements with the Winstone benchmark suite have shown that CpuIdle does not decrease the system performance. |
Q: | But my CPU monitor suddenly shows 100% CPU load. How can this be? |
A: | The monitor measures how much idle time it receives, and it won't get any since this time is spent in suspend mode. This does not affect normal applications. |
Q: | When I run CpuIdle I get random reboots every 10 to 60 minutes. Can you help? |
A: | No, I'm sorry. Very few people have reported this. Most of them use VX chipsets. I don't know if this is an incompatibility. It could also be (with VX chipsets slightly out of fashion) that these computers use power supplies with an out of date design which isn't living up to the motherboard's and CPU's current expectations. |
Q: | When I run CpuIdle my fan turns slower and the voltage on the +5V and +12V lines decreases. Doesn't that mean that the CPU is drawing more power? |
A: |
No. Most computer power supplies only compensate higher power demands on the +5V rail, resulting in an increase on the +12V rail when +5V power demand goes up. Koen Gadeyne says in the readme for set6x86: "The CPU draws from the +5V rail, but the CPU fan uses +12V, so when the CPU draws more power (due to CPU load), the CPU cooling fan (which is delivered with the CPU by Cyrix) will run a little faster with higher supply voltages, so the significant power drop when the CPU drops into power-suspend mode might cause a noticeable change in the pitch of the buzzing fan sound!" It depends on the way the switching power supply is designed. The 12V are generated in the same switching transformer as the 5V, and just the 5V is regulated. This means that the 12V voltage will depend on the current flowing by the transformer primary winding. What happens is that when CpuIdle runs, there is less +5V current so the switching power supply sends less current across the transformer primary and therefore the 12V MUST decrease as the feedback regulation loop exist only in the +5V. That's the reason behind the "fan mystery". |
Q: | When I run CpuIdle I hear terrible static noise or buzzing sound through the speakers attached to my soundcard. What's up? |
A: | This problem can probably be pinned on a poorly designed power supply and/ or soundcard. I can't help you with that, sorry. |
Q: | How can I use the command line switches? |
A: | Make a shortcut to the program, right mouse click on the shortcut, go down and click on properties, select the shortcut tab, you can add the switches where it says target. After you have verified that the shortcut works, it is recommended to copy it to your StartUp folder. |
Q: | CpuIdle doesn't recognize my CPU- will it work on my computer? |
A: | Yes. If CpuIdle doesn't recognize your CPU it can't perform any optimization that might increase power saving, but it will still cool your CPU! |
Q: |
CpuIdle says "CPUID instruction not available on this machine". What does this mean? CpuIdle doesn't recognize my CPU- will it work on my computer? |
A: | This means that your CPU either doesn't have the CPUID machine instruction (like 486 CPUs) or that it isn't enabled. On Cyrix CPUs CPUID can be en/disabled. Normally the BIOS should enable CPUID but on some machines it doesn't. If you have a Cyrix CPU and want to enable CPUID you can use tools like set6x86 to do this. Without CPUID CpuIdle will not be able to determine the clock rate of your CPU. However this does NOT influence other CpuIdle functions. |
Q: | When I use DosIdle for DOS sessions, should I need to use CpuIdle when I enter Win95? Will it conflict if I use DosIdle in DOS and CpuIdle in Win95? |
A: |
CpuIdle is designed to HLT under Win95/98. It works under a Windows DOS Box as well, but is inefficient with ill-behaving DOS programs like Norton Commander (with these programs in a DOS window you can usually feel your other Windows programs run slower). DosIdle should work under older MS-DOS versions (MS-DOS up to 6.2), Windows DOS Box and MS-DOS 7.00 and above (if you restart in MS-DOS mode from Win95/98). To have DosIdle enabled all the time, just install it to your Win95/98 Autoexec.bat AND the DOS 6.22 (or below) Autoexec.bat. This way, DosIdle will take care of anything that's DOS related. And it doesn't conflict with CpuIdle! |
Q: | Not all CPU features are enabled on my new PII CPU -- what's up? |
A: | I don't have access to a PII machine and couldn't do any testing but it seems as if some PII CPUs don't support all features. |
For fastest order processing we recommend ordering CpuIdle online. Click here to proceed to KAGI's Secure Online Ordering system.
Note: Both online ordering can only be used for payments in US currency.
If you don't possess a credit card or don't want to use it for ordering on the internet you can also transfer the correct amount to the bank account below or send it via postal service to the address below. In both cases don't forget to include your email address!
For multi-user, site- and world-wide licenses, please contact me directly.
Note: This offer is only valid until a new version of CpuIdle states different terms. I reserve the right to refuse orders not meeting the terms of the latest CpuIdle release.
Address: Bank Account: Andreas Goetz Name: Andreas Goetz Papenkamp 29 Bank: Kreissparkasse Hannover 30539 Hannover BLZ: 250 502 99 GERMANY Account:1100638152If you read the documentation carefully and still have questions you can reach me at cpuidle@gmx.net. Please make sure that you read the Frequently Asked Questions. Most points are already covered there.
Thank You!
Virgil Smith for coding the original VxD. Without him this program would never have been possible.
Thanks!
Marton Balog for his friendship and his enthusiasm in coding DosIdle.
Simon Capwell for the great Control Panel idea and programming.
Daniel Nelson for help in Windows 98 troubleshooting and further proofing of this web page.
Alex van Kaam for is help with the numeric tray icon and MBM.
Kamil Huseyinoglu for is valuable assembler and debugger advice.
Alex van Kaam for our joint efforts.
Geoff Chappel for his hints in comp.os.ms-windows.programmer.vxd.
Muddle who proof-read this document and first aroused my love for the English language.
More thanks to the following authors for their Freeware Delphi components:
Ahto Tanner (TUrlLabel)
Pete Ness (TTrayIcon)
...and all other people who encouraged me in the development of this program with appreciation, suggestions and helpful criticism.