Tuesday, October 26, 2010

QX9650 TDP, power measurement, and the Q9505S in robots.

This is an update to the previous post on the Q9505S (and includes a correction).

When the first 45nm quad-core processor arrived, the 3ghz QX9650 with 12MB cache, it was labeled with a 130 TDP.  TDP, which stands for "Thermal design power", indicates the maximum amount of heat that a cooler would need to dissipate when the processor is under load.  TDP's are known to not be the best estimate of power consumption, in fact they are necessarily overestimates, but I had figured they are a fair estimate for processors with the highest clock speed in their class, i.e. the ones closest to consuming the TDP power.

Measuring the power consumption of the processor in a PC is non-trivial - using a Kill-a-Watt results in measuring the total system power (including power supply overhead).  Even Kill-a-Watts get it quite wrong if the power consumption is changing quickly between different levels - but for measuring constant loads they work fine.  Another way of measuring power consumption, and the one xbitlabs uses, is to wrap the DC power cables that run to the CPU through an ammeter ring, which measures amps, and then measures voltage elsewhere, allowing calculation of watts as amps times volts.  This method adds the inefficiency of the voltage regulator module, or VRM, to the CPU power consumption.  The VRM is responsible for bringing the 12v down to the ~1.1v required by the processors and efficiency can vary from 75%-95% (ASUS has achieved 96%).  It is possible to use multiple motherboards with the same processor and use some statistical techniques to work out what the efficiencies of the different motherboards must be close to, but that has never been tried to my knowledge since it is just too much work.

Another technique for measuring power is to change the voltage of the processor several times, each time measuring the system power consumption.  This can be hairy because over-volting can break the processor, but when it works you end up with several points data at several different voltages.  You can overclock and underclock the processor to different levels as well.  Power consumption will be passive power + dynamic power.  Assuming passive power is pretty low (claimed to have decreased by 10x in Intel's 45nm process), estimating the dynamic power is enough, and dynamic power can be calculated by multiplying multiple factors, two of which are voltage and frequency.  By holding the other factors constant and modifying just voltage and frequency it is possible to calculate the total dynamic power by solving for the missing factor.  System power = Non-CPU power + CPU-power, or s = a + x*y*b, where many s,x,y points (voltage and frequency) can be collected to solve for a and b (ignoring CPU passive power).  I haven't seen this technique used but it should work - it would be interesting to compare it experimentally other techniques to see how close it comes to them.  One nice aspect of this technique is that the only hardware required is a kill-a-watt, as the frequency and voltage can be measured using speedfan or other software tools.

A last technique for measuring power consumption, and the one used in the previous article, is described by Anandtech as: "requires nothing more that the processor's specified TDP and then scales this value based on a given overclocked core frequency and voltage".  This method is particularly terrible when the TDP is inaccurate, and the QX9650 was a special case of an extremely inaccurate TDP, estimated to be about double the actual power consumption.

This makes a corrected theme of the previous post a little less exciting: the power consumption of the 45nm process probably decreased a significant amount but not by half over the lifetime of the process.

Still, the Q9505S is an amazing processor.  While working in the brain engineering lab at Dartmouth we put it in a mobile robot to run speech recognition (Dragon Naturally Speaking), speech production (AT&T Voices) and visual feature extraction (RoboRealm) simultaneously on a small ~15 pound mobile robot called Brainbot.  Each application ran on a different core quite smoothly, while the entire robot got around 1.5 hours of battery life on 200 watt-hours.  That's better life than my old Alienware Pentium 4 laptop when it was new.  Brainbot is now sold for $30k, and the only robot available with more onboard processing power is the WillowGarage PR2, with two PCs built-in, consuming 6x as much power and selling for $400k.  The Q9505S helped Brainbot get close to the PR2's level of performance for less than one-tenth the cost, which makes it a true marvel.

No comments:

Post a Comment