Computer Architecture · Architecture Tradeoffs

The Power Wall: Why Frequency Scaling Stopped

How dynamic power depends on voltage and frequency, why Dennard scaling ended when the supply voltage stopped falling, and what replaced clock rate as the source of throughput.

Between the mid-1980s and the mid-2000s, microprocessor clock rates rose by a factor of several hundred, from around ten megahertz to several gigahertz, and each generation of process technology paid for the increase. Then the rise flattened within a couple of product cycles, and every architecture decision since has been shaped by the reason. The reason is arithmetic, not engineering: dynamic power is the product of switched capacitance, the square of the supply voltage, and the clock frequency, and the supply voltage cannot fall forever. With the voltage pinned near a floor, each increment of clock rate costs a proportional increment of power, and the power budget is already spent.

The constraint is worth stating precisely, because the same arithmetic governs caches, core counts, accelerators, and every other budget in a processor design.

Dynamic power is quadratic in voltage and linear in frequency

A CMOS gate dissipates energy only when its output changes. Charging a load capacitance $C$ to the supply voltage $V$ draws $CV$ coulombs and therefore $CV^2$ joules from the supply; half of that is stored in the capacitance and half is burned in the p-channel device on the way up. Discharging burns the stored half in the n-channel device. One full up-and-down cycle therefore costs $CV^2$ from the supply, independent of how slowly it happens.

Multiply by the number of transitions per second and the result is the dynamic power:

$$P_{\text{dyn}} = \alpha , C , V^2 , f$$

where $\alpha$ is the activity factor, the average fraction of gates that switch in a cycle. For a processor, $\alpha$ is set by the workload and the microarchitecture; $C$ is set by the transistor count and the wiring; $V$ and $f$ are design choices.

The asymmetry between the two exponents is the entire story. Doubling the frequency doubles dynamic power. Cutting the supply voltage by 30 percent cuts dynamic power by half at the same frequency. But the supply voltage is not free to cut, because the circuit gets slower as it falls, and how much slower is governed by a threshold that does not scale.

The same expression, read per operation instead of per second, gives the energy cost of a single transition: $E = \alpha C V^2$, with no frequency term at all. Running a fixed amount of work faster does not reduce the energy it takes; it raises the power it takes to finish sooner, and the product of the two is unchanged as long as the voltage stays fixed. Energy and power are separate budgets, and confusing them produces most of the bad conclusions in this area.

Dennard scaling assumed the supply voltage would fall with the feature size

The 1974 paper by Dennard and colleagues described what became the industry’s operating assumption for three decades. Shrink every dimension of a MOSFET by a factor $k$, and the device’s electric fields stay the same if the supply voltage also scales by $k$. Gate capacitance then falls by $k$ and the voltage by $k$, so the energy per switching event falls by $k^3$. Area falls by $k^2$ and delay by $k$, so the frequency rises by $1/k$ and power per unit area comes out unchanged. A chip of the same size holds $1/k^2$ times as many transistors and runs them at $1/k$ times the frequency on the same power budget.

That is why frequency could rise without a thermal penalty. Each node delivered denser transistors and a lower supply voltage at the same time, and the extra transistors went into deeper pipelines and wider superscalar issue, both of which raised the clock or the instructions per clock.

Dennard scaling held while the supply voltage could keep falling. It stopped when it could not.

Threshold voltage sets a floor on the supply

A MOSFET does not switch off abruptly. Below the threshold voltage the drain current falls exponentially with gate voltage, at a rate called the subthreshold swing. In an ideal device at room temperature that swing is about 60 millivolts per decade of current, a limit set by $kT/q$ and not by process quality. Real devices are worse, commonly 70 to 100 millivolts per decade.

The consequence is a squeeze from both sides. To keep leakage current under control, the threshold voltage $V_{th}$ cannot be scaled down in proportion to the supply. To keep the gate overdrive $V_{dd} - V_{th}$ large enough for fast switching, the supply cannot approach the threshold either. Propagation delay in the alpha-power model goes roughly as

$$t_d \propto \frac{C , V_{dd}}{(V_{dd} - V_{th})^{\alpha}}$$

with $\alpha$ between 1 and 2, moving toward the low end as velocity saturation becomes dominant. As $V_{dd}$ falls toward $V_{th}$, the denominator collapses and delay rises faster than linearly. Around the 90 nm and 65 nm nodes the supply settled near 1 V, the threshold near a few tenths of a volt, and neither has moved much since.

The result was that power density began to rise with each generation instead of staying flat. Cooling and packaging improved, but not at the rate the density demanded, and the gap is what ended the practice of spending each node’s density gain on a higher clock.

Static power made it worse. Leakage current flows whenever the device is on the power supply, whether or not it is switching, so $P_{static} = I_{leak} V_{dd}$ adds a term that frequency scaling cannot touch. In high-performance designs leakage grew from a rounding error to a share of the budget comparable to dynamic power. A core that is doing nothing still costs energy, which is why clock gating and power gating became standard rather than optional, as Clock and Power Gating describes.

What replaced frequency as the source of throughput

If the clock cannot rise, the only remaining source of throughput is more work per cycle or more execution units in parallel. Both cost area, and area is bounded by the same power budget, since a bigger chip dissipates more. The standard answer is to trade frequency for parallelism, and the arithmetic explains why that trade is so favourable.

Suppose a core’s frequency is proportional to its supply voltage over the region of interest, a rough first-order model. Halving the frequency allows the supply to halve, so dynamic power per core becomes $0.5 \times 0.5^2 = 0.125$ of the original. Two such cores consume a quarter of the original power and deliver the same aggregate throughput. Four consume half. Eight cores at half frequency consume roughly the original power and deliver four times the throughput, provided the workload divides.

def dyn_power(cap_farads, voltage, freq_hz, activity=0.15):
    return activity * cap_farads * voltage**2 * freq_hz

# One core at nominal voltage and frequency, then the same silicon
# split into eight cores at half frequency with the voltage halved.
base = dyn_power(1e-9, 1.0, 3.0e9)
scaled_core = dyn_power(1e-9, 0.5, 1.5e9)
print(base, 8 * scaled_core)          # near-equal totals
print(8 * 1.5e9 / 3.0e9)              # 4.0x the aggregate clock cycles

The model is optimistic in two ways. Threshold voltage does not halve with the supply, so the delay gain from halving $V_{dd}$ is less than the frequency loss it is paying for, and the real supply floor is around 0.6 to 0.8 V for high-performance logic. Leakage per core does not fall with frequency either, so eight idle-capable cores leak eight times as much as one. The trade is still strongly positive, which is why core counts rose while clock rates stayed between roughly 2 and 5 GHz.

The parallelism has a ceiling. Amdahl’s law bounds the speedup by the serial fraction of the workload, and the fraction that resists parallelisation does not shrink because more cores are available. A workload that is 90 percent parallel tops out at ten times the single-core speed no matter how many cores are added, and at that point the remaining lever is making the serial part itself faster, which is where wide out-of-order execution and larger caches re-enter the picture.

Where the arithmetic stops being a guide

The $CV^2f$ model is a design-time estimate, not a measurement. Three effects break it in practice.

Activity factor is data dependent. A vector unit running dense arithmetic switches far more capacitance per cycle than a branch-heavy scalar loop, so the same core can sit at very different points on its power curve depending on the instruction mix. Power budgets are therefore set by the worst realistic mix, and a chip specified for a synthetic stress test may never reach that number in ordinary code.

Voltage is not uniform across a die. Current through the power delivery network causes resistive drop, so the voltage at a switching gate is below the nominal supply, and the difference varies with the local switching activity. Designers must guarantee timing at the worst-case drop, which means either adding voltage margin that costs quadratic power or accepting a lower frequency.

Temperature feeds back into leakage. Leakage rises with temperature, higher leakage raises power, higher power raises temperature. The loop is stable as long as the cooling solution can remove the heat, but it makes the power of a part a function of its environment rather than a fixed property, which is why Thermal Design Power is a thermal specification rather than a consumption figure.

Below the nominal supply there is another regime worth knowing about. Near-threshold operation, with the supply a few hundred millivolts above the threshold, gives a large reduction in energy per operation because the quadratic term dominates, at the cost of a much slower clock and far greater sensitivity to device variation. It is attractive for throughput-oriented parallel work and poor for anything latency bound, which is the same trade that separates the two kinds of core in Heterogeneous Cores.

None of this makes frequency scaling useless; it makes it expensive. The budget that used to be spent entirely on clock rate is now split between cores, cache, accelerators, and voltage headroom, and every split is a bet about which resource the workload will actually use.

References

  1. Design of Ion-Implanted MOSFETs with Very Small Physical Dimensions — Robert H. Dennard et al., IEEE Journal of Solid-State Circuits, 1974
  2. Computer Architecture: A Quantitative Approach — John L. Hennessy and David A. Patterson, Morgan Kaufmann
  3. The Future of Microprocessors — Shekhar Borkar and Andrew A. Chien, Communications of the ACM, 2011