Looking at electronic level (transistors and the like), the power consumption of a circuit can be calculated as follows:
P = 1/2 C V_dd^2 f N + Q_sc V_dd f N + I_leak V_dd
P total power
V_dd supply voltage
f frequency
first term -- the power required to charge and discharge circuit nodes. C node capacitances, N swithching activity, the number of gate output transitions per clock cycle.
second term -- power dissicpation during the output transitions due to current flowing from the supply to ground, short-circuit current. Q_sc the quantity of charge carried by the short-circuit current per transition.
third term -- power disscipation due to leakage current I_leak. Reverse bias current in diodes.
the switching activity 90% of power dissipation
We will look at the techniques to reduce power consumption at 4 levels:
ordering of gate inputs will affect power and delay, the late arriving signals should be placed closer to the output to minimize gate propagation delay. The average power dissipated is dependent on the transition probabilities of the gate inputs and the internal node capacitances.
transistor sizing, larger reduces delay but increases power dissipation. Slowing the gate down without affecting the critical delay path.
path balancing
spurious transition accounts for 10 to 40% of typical switching activitiy
in combinational circuits. Reducing spurious switching activity by
adjusting (balancing) the delay of paths.
factorization
ac + ad + bc + bd = (a+b) (c+d)
common subexpression elimination
kernel extraction (msx reduce switching activity)
Sequential
state transition level
logic gate/flip-flop level
encoding
state encoding for minimal area (and switching activity)
reduce switching activity on datapath, add a line to tell if the value
is true of complement (upon received). 0000 to 1011 but send 0100
instead. Arithmetic with other base (residue encoding)
retiming
reposition flip-flops to minimize the required clock period.
switching acitivity at flip-flop outputs can be significantly less
than the acitivity at the flip-flop inputs. (spurious transitions at the
inputs are filtered out by the clock). retiming can exploited this
fact.
gated clocks
the inaction (of particular units) can be determined, then power reduction
can be obtained by gating the clocks of the units.
power-down alu.
precompute
diable the circuit that does not contribute to the computation result.
C > D comparator
the MSB can be xnor to disable other bits
c = 1 d = 0 the result is 1 (C>D) regardless of other bits
c = 0 d = 1 the result is 0 (C<D)
saving depends on the prob of xnor = 0
behavioural synthesis
mapping a high-level spec. (data-flow/control-flow graph) into a register-transfer
level design
reduce the number of control steps. slower clock can be used for the
same throughput. quadratic reduction in power consumption.
reduce resouces will reduce capacitance that switches.
memory
1 memory access consume power (especially if off-chip)
2 larger memory, greater capacitance
reduce memory access: loop reordering