The key concept is that it is the amount of energy that must be consumed in order to do a given amount of work that defines the cost of doing that work. Any system that is not plugged into a wall outlet can only sustain a limited amount of this cost before it has depleted its resources; even a solar powered device must store energy when the Sun is not available to it, in order to survive (and do useful work) until the next time the Sun is available.
All things are not completely equal, and there are often inefficiencies in the use of energy at both the extremely fast and extremely slow ends of the scale. These inefficiencies result in the consumption of more energy than would be required to do the work in a more optimal amount of time. For example at the very fast end of the scale, excessive heat can be dissipated and unless part of the work desired from the device is to behave as a heating element, this heat is wasted and can create the need for even more waste of energy in dissipating that heat without causing undesired side effects. Likewise at the very slow end of the scale, many effects such as nonlinear friction or semiconductor leakage can lead to inefficiencies.
The key concept is that power is merely a measure of the rate of consumption; it is not something that can be consumed, it is not something that one has a supply of, and thus it is something that must be managed for its side effects but not treated as a resource ... because it is not a resource.
Energy may be measured in Watt-hours; one WH is the amount of energy required to do work at an average rate of one watt over a period of one hour.
On the scale of small electronic devices, a more interesting unit is the Joule; one Joule is one watt-second, an average of one watt for one second. For our chips, a Joule is a very large amount of energy; as seen below, we can add two numbers in about 10 picoJoules (pJ); there are ten to the twelfth power pJ in one joule. One joule is enough for us to perform about 100 billion adds.
The resistances and capacitances in question are basically dictated by the semiconductor technology in use. The natural speed of such a system is defined by fundamental time constants that derive from the technology.
Rather than slowing our machines down below their natural speeds, we prefer to run asynchronously and to arrange that our computers simply stop when waiting for stimuli such as data or commands from the outside world or from other computers. The computer is only drawing power when it is actually executing code; when waiting, it is drawing only leakage. The energy required to stop or start one of our computers is negligible, on the order of a handful of inverters changing state; an amount of energy measured in femtoJoules.
Thus we run fast and unfettered when there is work to do and stop on the proverbial dime (or molecule) when we've done it. The result is that we consume precisely as much energy as was required to perform useful work, and consume none while waiting for more. The speed has no cost in energy, and in fact to slow our computer down would consume more energy.
One of our cores has less than 20,000 transistors, many of which are devoted to the memory and to the stacks. Internally, when we add a feature or improve a circuit, we are always seeking to reduce the number of transistors, or to eliminate some capacitance, in the process. Why? Because each of these things cost energy! Every trivial gate, such as an inverter, that changes state costs a certain amount of energy to make that state change!
The more complicated the computer, the more gates must change state per instruction executed. Our computers use about 10 picoJoules to add a pair of numbers, which is on the order of less than 1000 times the energy required for a minimal inverter to change state. Compare this with 300 pJ for a TI MSP430 to perform a fixed point add, or 7000 pJ for IBM's low energy supercomputers to perform a floating point add. If we were all three using the same technology that would imply 30 times the number of devices changing state for TI, and 700 times as many for the IBM floating operation.
Of course, it is easy to throw away the energy advantages given by the simplicity of the underlying computer; for example, inefficient programming methods or inefficient system design are common culprits. Considering the above, a person who is interested in conserving energy will scrupulously avoid writing software that depends on floating point arithmetic, since it requires that many more gates change state to perform an operation than is necessary for fixed point operations. A person who is interested in conserving energy will use a shift and add to multiply a number by three, since multiplication inherently consumes more energy than do operations such as those, in any rational computer.
And then, there are many opportunities to so encumber a system design with glue chips and parasitic resistance, inductance, and capacitance, that all the efforts made in chip and software design are negated by the system as a whole.
As a result, there are no termination resistors in most of our designs. We have a weak pull-down device that may be enabled on each signal pad if needed, but weak means on the order of 50,000 ohms. When we are moving signals at high speeds we don't use these; our input pads look like a couple of picofarads with tens of megohms to the supply rails. In fact, our basic digital and analog input pads load a circuit down less than do any but the very most expensive of oscilloscope probes.\