[Nexus 4 Original Android Development] bla_laber:
Perhaps some words to undervolting of the CPU and GPU:

Since both the CPU and GPU are CMOS Chips consisting of transistors handling digitial signals, the voltages which we adjust is the supply voltage which is needed for working transistors in the device. The possible max. frequency, consumed electrical power and produced thermal power are depending on this value and are increasing with higher voltage.

So why is it even possible to undervolt?

First answer are variations in the fabrication process. Since the chips are fabricated on wafer level with wafers with a diameter of 10 inch an more, not every chip equals the others of the several hundred chips on the wafers. Over the surface, slight variations are possible and thus, parameters of single transistors can and will vary. This is of course not good but can not be avoided. This behavior gets simulated on computers before fabricating to be sure to full fill the needed specs even in the worst case. This is also reason why there is something like CPU binning like nominal, fast, faster, etc. This just means how exact the fabrication was.

What doas this fabrication related stuff mean in real life and why do we want to undervolt but desktop pc users want to overclock?

Manufacturers of chips will choose the necessary voltage per frequency in a way, that all devices will work - independent of their "quality" due to fabrication. Because they are relying on the worst case and most chips are better (better means: sticking closer to the planned layout. not faster or cooler or something else), users can usually reduce the voltages of a certain amount and the chip will still work. This will save electrical power (and decreases thermal power) but has no influence to the working speed since the frequency stays the same. But why? The switching time between digital low and high strongly depends on the set voltage. The higher the voltage, the shorter the switching time. Now it is easy to imagine: if the switching time is slower as necessary for the set frequency, the digital signals low and high won't be reached and thus, digital information can not pass through the transistors. The digital logic is corrupted and finally, the software crashes. To avoid this the frequency has to be reduced or the voltage can be increased (and this exactly what pc-overclockers are doing to reach higher frequencies). As you can see, for a higher frequency a higher voltage is necessary like visible in the voltage table in francos app. If we now want to overclock, higher voltages as nominal are needed. We can go faster, but will run hotter. Because of that, extreme overclocker need liquid nitrogen at around -200°C to cool their chips down. otherwise they will burn.

In conclusion:

lower Voltage means cooler temps, better battery and also slower switching times. If we go the deep, software crashes, but no hardware defects should occur.

Higher voltage means higher temps, high battery drain and fast switching time for high max. frequencies. If we go to high, strong electrial fields in the chip can damage single transistors and thus the whole device will be malfunctioning! So be carefull! Without cooling or thermal throttling the device can get too hot and will be damaged too.

I hope you learned something =)