[EVO 4G Android Development] dblock3nine:
I can't explain it too well but I did find this information from vaelek.com

Undervolting

Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Well when the kernel is not using HAVS, it is going to use Static Undervolting. Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. For example, the stock default voltage for the 998mhz setting is 1300mV.If the static voltage table is altered so that the setting for 998mhz is 1275mV ( this is what a Statis Undervolting kernel does ) . Then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV. So basically each frequency is guaranteed to always draw less power than normal ( In this case the CPU will pull 35 LESS mV every time the phone's CPU hits 998mhz ) .

So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the cpu is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand. ( Again these numbers used above are for Netarchy's Kernel. It will vary from dev to dev and kernel to kernel. )

HAVS (Hybrid Adaptive Voltage Scaling)

HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). HAVS dynamically scales the voltage supplied to the CPU at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed. ( Keep in mind these voltages are not the same for all forms of HAVS, so the voltages will vary between devs and which kernel your looking into. This was just an example from Netarchy's More HAVS table )

No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU.Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.

http://vaelek.com/index.php?/topic/701-what-are-the-different-kinds-of-kernels/