Controls the "Northbridge Bus Disconnect Bit" to lower your CPUs power level during idle
An idle loop that puts your CPU into STPGNT state if your OS won't
Displays the current CPU temperature in your system tray (optional)
Optional hardware throttling of the CPU when it gets too hot (50%, 10%, shutdown)
Lightweight: only 29K
The Athlon (or Duron) enters a lower power state only when its system bus is
disconnected. However the (VIA-)Northbridge will only disconnect the bus if
its "Bus Disconnect Enable" bit is set and the CPU is in STPGNT state.
VCool allows you to enable this bit so your CPU can relax when there's nothing
to do.
Setting this bit might not be enough on some systems as the idle loop provided
with the OS will not put the CPU into the STPGNT state recognized by the Northbridge.
For those cases VCool includes an internal idle loop that forces the CPU into
the STPGNT mode required by the Northbridge to initiate a bus disconnect.
If you want to read more about how this works follow this link.
Note that the system monitor will report 100% utilization when the idle loop
is active.
That's because it takes away all idle time from the OS idle loop and the OS
calculates the utilization like:
Utilization = 100 % - %age of time spent in OS idle loop.
Also note that disconnecting the system bus to save power might interfere with "realtime" applications like TV or sound capturing - causing dropouts or other oddities.
The temperature readout on 686 chips was a bit low at high temperatures - now it uses a new formula based on inofficial data. The "TempDiv" and "TempSub" registry keys have been removed.
Added and Apply button in the options dialog
The status of the SBMus is now restored after readout to solve problems with ASUS probe. There's also a busy wait option to prevent asus probe from interfering with VCools reading - however so far this seems to work only on W9x and ME as the preemptive scheduling of W2K and NT requires a driver to achieve this - maybe in a later version *g*.
The status of the cool bit and the idle loop are now indicated by small dots on the lower left and right of the icon.
<shift>+LClick (<crtl>+LClick) on the icon toggles the Cool bit (idle loop)
The idle loop get turned off now when the temperature drops below T50 if it was off before T50 was exceeded.
There's now a custom shutdown option that will execute a user definable program when Tshutdown is exceeded.
Download the zipped file (~60K)
If you have trouble downloading try the mirrors: Mirror 1 Mirror 2 (Thanks Andy)The archive contains the executable file ("VCool.exe") and a folder that contains the Documentation, i.e. more or less this website.
Unzip the executable (and the docs if you want them) into a folder of your
choice and double click to execute it.
To make VCool start when you boot Windows simply create a shortcut to VCool.exe
in your startup folder.
You can control the VCool starts by using the Command Line Switches when creating a shortcut or when starting VCool from a command prompt.
NOTE: If installing VCool on Windows 2000 or NT you'll also hat to installe the GiveIO driver.
This driver is required to run VCool on W2K or NT. GiveIO allows user mode
programs to access I/O-ports directly. Quite a few programs make use of this
driver, so it's good idea to check if it isn't already installed before you
continue:
Open a Command Prompt and type: net start giveio
If the driver is already installed Windows will tell you that the service is already started or that you have started it right now, i.e. the driver is installed and there's no need to install it again. However you should make sure that the driver ist started before you attempt to start VCool, either by starting it manuall by using the "net start" command or set its type to autostart.
If the driver is not installed you'll have to download and install the driver.
NOTE: You'll need Admin rights to install a driver.
This archive includes the source code for GiveIO - however all you really need is a file called giveio.sys. Copy this file to your system32 folder (e.g. c:\windows\system32). Actually you can copy it to whatever folder you like but it makes sense to choose the system32 folder.
Now that the driver is in place you'll have to tell W2K (or NT) to use it:
Download InstGiveIO.zip Mirror
Extract and run InstGiveIO.exe. It will promt you for the location of giveio.sys.
Enter the full path - including giveio.sys (e.g. c:\windows\system32\giveio.sys)
and press enter.
A MessageBox will inform you about the success (or failure) of the install.
If it fails it is most likely due to a mis-typed path, insufficient rights or
the fact that giveio is already installed.
If you still have trouble installing GiveIO drop
me an email with the error message you get.
Normally VCool will run as icon in your system tray, unless it it hidden -
in that case you'll have to press the hotkey (default: <ctrl>+<alt>+v)
to make it appear.
Right-clicking on the icon will bring up a pop-up menu:

Here you can quickly enable or disable the internal idle loop
or set and clear the Cool Bit.
If you're not sure what the Cool Bit and the idle loop do click here.
Clicking on exit will obviously terminte VCool and selecting option will bring up the Option Dialog that allows you to customize VCool.

This is where you set up the options for the temperature readout.
VCool will attempt to auto-detect your Sensor Type however you can
override this setting.
Each monitoring chip has 3 temperature inputs. Depending on your board you'll
have to choose which sensor is connected to the CPU and the System
(on my epox its C1 and S2 on most asus boards it C2 and S1).
In the "Fan"-frame you can select which fans are available
on your system - the readouts will appear in the tooltip window that appears
when you hold the cursor over the VCool icon.
You can also select the interval for the temperature readout here.
The SMBus Busy Wait option causes VCool not to relinquish control of
the CPU while waiting for the SMBus. This should prevent programs like ASUS
probe from interfering with the readout on W9x and ME systems at the cost of
a slightly increased CPU usage (MBM, MBProbe and other programs using the "SMBus
Mutex" are safe even without this option).
Throttling allows VCool to reduce the duty cycle of your CPU when it runs too hot. It will also switch on the cool bit and the idle loop when T50 is exceeded.
You can define 3 temperature thresholds at which VCool
will throttle the CPU back to 50%, to 10% or shutdown the system. Enable this
by checking Enable Throttle/Shutdown.
Checking the Make Noise option causes VCool to beep while the CPU temperature
is above T50 - this works even if throttling is disabled.
VCool shuts the system down by calling the ExitWindowsEx API-function.
However on my systems this function requires different parameters for W2k and
W98. That's why there is the Special Poweroff option (W2K requires
this while it must not be enabled for W98 on MY system - YMMV).
Finally the Test Shutdown button will initiate a shutdown with the
selected poweroff option for test purposes. NOTE: A hung driver may prevent
Windows from shutting down properly even when it worked during your tests.
The custom option allows you to define a program that is executed instead of the internal shutdown function.
VCool can either display the CPU temperature as icon or both temperatures
(CPU and System) in a smaller font.
If you have VCool showing only the CPU-temperature you can also select a
font for the digits.
With the Fahrenheit option checked VCool will display the temperature
in the tooltip window in degrees fahrenheit. The temperatures shown as icon
will on change to °F if the "Both" option is selected because
with the larger fonts there isn't enough space for three digits. However the
T50/T10 temperatures will always stay in degrees Celsius.
And last but not least you can select the colors used in the icon via the set
fore/background buttos.
NOTE: Windows doesn't allow every color to show in the system tray - in that
case it'll choose the nearest representation.
Select the way VCool starts/exits and allows you to set the hotkey to hide/show
VCools icon.
You can override these options by using command line switches.
These options allow you to customize the way your PCI bus works
to minimize sound problems.
NOTE: Turning on Master Read Caching and Delay Transaction may bring back the
"Via-Bug".
| /bx | x = 0 or 1 | switches NB Cool Bit off/on |
| /lx | x = 0 or 1 | switches idle loop off/on |
| /hx | x = 0 or 1 | hides/shows the icon |
| /tx | x = 0 or 1 | disable/enable temperature readout |
| /Tx | x = 0 or 1 | disable/enable throttling |
| /px | x = 0 or 1 | special poweroff option off/on |
| /cx | x = 0 or 1 | disable/enable "clear Cool Bit on Exit" |
| /Cxx | xx=01-03 | Select CPUSensor (e.g. /C01 that is 'C' zero one) |
| /Sxx | xx=01-03 | Select SYSSensor (e.g /S03) |
| /Bxx | xx=00-03 | Select Sensor type (0=Auto, 1=SB , 2=ISA, 3=SMB) |
| /fxx | xx=00-99 | Select readout interval |
| /0xx | xx=00-99 | Select shutdown temperature (e.g. /080) |
| /1xx | xx=00-99 | Select T10 temperature (e.g. /180) |
| /5xx | xx=00-99 | Select T50 temperature (e.g. /580) |
Most of these parameters (except for /Bxx) can be used even if one instance of VCool is already running. The running instance will be updated with the new options. However they will not be stored unless you open the Options dialog and click on OK or Apply.
Will enabling software cooling degrade the system's performance?
The answer: Well, it depends...
The temperature readout requires some CPU time every 10 seconds (or whatever
interval you choose) - of course only if it is activated.
On my D800 the whole process takes less than 1 ms so all in all that should
only account for less than 0.1 % even if you read every second.
With an SMBus Sensor things are slightly worse if you have the "busy wait"
option enabled. Since the CPU has to waste its time waiting for the bus operation
to complete this option consumes some more time - typically a few ms. With the
busy wait option disabled you're back to that less than 1 ms figure again.
The idle loop and the Cool Bit are somewhat trickier:
If the CPU is never idle, i.e. there's always a thread that's ready to run,
there should be no loss. However this situation is not that common as one would
think. Most threads have to wait for external events/devices at some point.
This is when the CPU becomes idle and VCool kicks in putting the CPU to rest.
It now takes a bit longer for the thread to resume his work, because the CPU
has to wake up first.
An extreme example would be a disk benchmark that just issues a disk request
and then waits for it to complete. With the cool bit and the idle loop enabled
you'd notice a substancial performance hit because you've just disconnected
the but when it needs to be reconnected again.
However if you use the OSs idle loop you're better off since this loop is usually
smart enough to keep the bus connected when there're outstanding disk requests.
So applications where the CPU doesn't have to wait for external events (e.g.
rendering, cpu benchs) won't take a performance hit. Other applications that
have to idle the CPU because they're waiting for something (e.g. a game waiting
for the graphic card) will suffer a slight performance decrease.
Thus if you want to squeeze the last fps out of your favourite game you may
want to disable the Cool Bit and the idle loop - since the CPU is probably busy
most of the time, the cooling effect is minimal anyway.
To summarize:
| Selected Option | Performance loss |
| Hardware monitoring functions | less than 0.1% if run every second (0.01% if run every 10 seconds) |
| Cool Bit with OS idle | hardly noticable - depending on the application approx. 0-2% |
| Cool Bit with VCool idle loop | depending on the application from none (e.g. cpu bench or number crunching) to ~30% (e.g. disk benchmark) - in most cases probaly less than 5% |
After the first release of VCool some users were reporting system lockups when
they started VCool. I was able to track that down to the "bus disconnect"
thing: Some systems would just freeze if you enabled the NB Cool Bit to have
the system bus disconnected on idle.
This left me puzzled at first however sometimes it pays off not only to read
the docs but also the revisions (thx Randy).
It seems that the K7 has problems with waking up when running at half-frequency
multipliers (7.5, 8.5, etc.).
Amyway here's what I found in the Athlon Revision docs:
14 Processors with Half-Frequency Multipliers May Hang Upon Wake-up from Disconnect
Products Affected: A4, A5, A6, A7, A9
Normal Specified Operation: The processor should reconnect to the system bus upon wake-up after a disconnect while in the C2 and C3 ACPI low-power states.
Non-conformance:The processor uses a special circuit to wake up from a low-power state and reconnect to the system bus when the nominal operating frequency is generated with a half-frequency multiplier. This circuit is rarely observed to glitch when coming out of the C2 and C3 low-power states.
Potential Effect on System: The system will hang.
Suggested Workaround: Do not use the C2 or C3 ACPI states on processors that run at a nominal operating frequency generated with a half-frequency multiplier. This can be accomplished by having the BIOS not declare C2 or C3 support to the operating system in the Fixed ACPI Description Table (FADT).
Resolution Status: Fix planned for a future revision.
Apparently running those half-frequencies may cause the observer lockups. So
if you experience lockups using VCool (or any other cooling method) try changing
your MPY.
I also learned an intersting fact here: Apparently the BIOS can tell the OS
not to use the low power states - that could explain why some ACPI OSs wouldn't
cool properly even with the "Cool Bit" set.
But wait - there's more:
11 PLL Overshoot on Wake-Up from Disconnect Causes Auto-Compensation Circuit to Fail
Products Affected: A4, A5, A6, A7, A9
Normal Specified Operation: The AMD Athlon™ Processor Model 4 PLL should return to the normal operating frequency when reconnecting to the system bus after a disconnect where the PLL was reduced to a lower operating frequency.
Non-conformance: The AMD Athlon Processor Model 4 PLL can exceed the normal operating frequency when reconnecting to the system bus after a disconnect, causing a failure to maintain sufficient system bus I/O drive strength levels in the driver compensation circuit. The compensation circuit attempts to correct the drive strength, but if there is not sufficient time to perform this function, the system bus cannot operate properly.
Potential Effect on System:The system hangs.
Suggested Workaround: The event can be avoided through BIOS manipulation of the reconnect timing using the CLK_CTRL MSR. (See AMD Athlon™ and AMD Duron™ Processor CLK_CTRL MSR Settings, order# 24478, for exact values.)
Resolution Status: Fix planned for a future revision.
Unfortunatly the exact timing info seems to be confidential - I have been unable
to obtain that #24478.
So you'll have to ask your BIOS manufacturer if they've implemented the corrected
reconnect timing using the CLK_CTRL MSR according to the AMD Revision (Doc #23614
and #24478).
If you've resolved both issues and are still getting freezes you're probably out of luck until AMD comes up with another Revision or a new CPU.
Will VCool cause a performance loss?
see here
I'm experiencing crashes or lockups when running VCool
see here
Does VCool disturb sound or video playback/capturing?
It might. Usually these applications have quite some idle time while the involved hardware often requires fast response times to function properly.
If you're getting odd sounds or garbled video it is likely that your hardware (or its drivers) don't get along with a disconnected bus.
In that case you'd have to disable VCools idle loop and clear the NB Cool Bit - you won't get a cooling effect then, but at least you application works.
What setting should I use: Cool Bit, idle loop or both?
The first step is turning on the NB Cool Bit. Depending on your system this may be sufficient to cool your CPU. However some systems also require the idle loop - if you don't get a cooling effect try activating the loop.
On my Win98 system enabling the cool bit is normally enough. However if I "kill" a DosPrompt it loses the ability to idle correctly.The downside of running the idle loop is that it is "dumb" compared to the OS idle loop, i.e. it puts the CPU to sleep whenever it is idle. The OS loop otoh won't initiate a sleep when it knows the CPU is needed any moment (e.g. there are outstanding disk requests).
Also with the VCool Idle loop running the System Monitor will always show 100% utilization - this is normal since VCool is now eating up all idle time cooling your CPU.
My system is always 100% busy with VCool
See above.
I see no cooling effect
1) Make sure your system is idle when VCool is not running: Software coolers will have no effect on busy systems. Use the task manager (W2K) or Wintop (W98) to see if there are any threads eating up time (e.g. SETI@home).
2) Start VCool and set the NB Cool Bit but deactivate the loop. Check again that your system is still idle.
3) Now enable the idle loop. When you check utilization you should see that VCool eats up most of the CPU time now.
If you still don't see any cooling effect VCool doesn't work on your system. Sorry. It would be nice if you could email me your system specs.
PS: Make sure the the temperature display is actually being updated.
What is GiveIO and how do I install it?
My temperature readings are bogus or plain wrong
Try changing the sensor# in the options dialog. For most ASUS/Winbond chips you'll have to swap CPU(1->2) and Sys(2->1) Sensors.
If that doesn't help it is possible that VCool mis-identified your temperature sensors: In the options dialog you can set the appropriate sensor type for your board.
Will VCool support my xxx board ?
Well, the problem is that I don' t have Docs of your xxx board. If you know a source of detailed data (not just the marketing stuff) then let me know and I'll see what I can do.
I have question not answered here
Email me at mpet@bigfoot.de
Fixes and Features added in Version 1.4.2
Fixes and Features added in Version 1.4.1
Fixes and Features added in Version 1.4
Fixes and Features added in Version 1.3
Fixes and Features added in Version 1.2
If don't want the extra features of V1.2 and are a bit short of HD space you can still download the old Version here and save ~10Kbyte.
Known problems in V1.1
Fixes and Features added in 1.1