# The Outer Limits... of Computing

CS 441 Lecture, Dr. Lawlor

Since man's powers are finite, any exponential growth curve has to eventually stop, because it hit some limit.  Here are some limits that computing systems are facing today, that may eventually limit computers' performance.

## Power

Your typical US wall outlet provides 120VAC at 15Amps.  So you can't ever possibly push more than 1800 watts through that outlet, and probably less due to the AC power factor and wire resistance.  Wire losses become significant with long wires (e.g., for a physically large parallel machine) and high amp draw--for example, a 2-ohm extension cord will lose 20 volts (across each conductor!) when pulling 10 amps.  Eventually, you'll need bigger wires just to maintain a usable voltage at the end of the wire.

Most other countries use 240VAC, which works much better over long wires for two reasons: first, at the higher voltage you need fewer amps to reach the same number of watts, and lower amperage decreases the line loss; and second, a higher voltage can more volts to lose!

In practice, a future CPU/CPU/?!PU using about 100 watts won't cause many problems, but a 10kW computer is going to need some serious infrastructure just to get power.

## Heat

The net result of expending electrical power in a computer is computation and heat.  Already, big computer machine rooms have substantial infrastructure for power distribution; this will certainly continue assuming power usage increases.

There are at least four good known ways to transfer heat: conduction (transfer in a solid, like the metal in your heatsink conducts away heat), convection (transfer to the air, like the fins on the heatsink), circulation (transfer to a liquid, like a house boiler), and radiation (transfer to infrared energy).  Each of these transfer mechanisms is more efficient at a higher source temperature, so often a Peltier device (heat pump) is used to increase the apparent source temperature.

Thermodynamics says you can't get rid of heat, but you can pretty easily dump it into the air, the water, the ground, or radiate it into deep space.  Intel actually seriously considered a plumbing hookup for PCs, where you use the PC as a pre-heater for your hot water tank.  Many big machine rooms are moving to liquid cooling at the rack or even CPU level.

## Fabrication

In your garage, you can build circuit boards pretty easily.

But you can't build useful silicon chips--the features on modern chips are so tiny one speck of dust can ruin a chip (a "defect").  Modern silicon foundries really work to keep the "defect rate" low, but in a typical wafer there will still be several defects.  Assuming defects are randomly distributed (though real defect rates are non-random!), the expected number of defects is linear in the chip's area--so big chips are much more likely to contain defective parts than tiny chips.

Parallelism provides a cool workaround for fabrication defects--just turn off the affected parts of the chip, which hurts the performance a bit, but is still worthwhile.  AMD is selling "tri core" CPUs that they actually wanted to make quad core, but lost a core during fabrication.  nVidia is rumored to do the same thing with graphics cards; you once could even "unlock" the defective pixel shader units with a registry key, and take your chances on getting bad pixels in your games.

## Design

Human beings still are intimately involved in designing and building computers, which shows up periodically as errors:
• In the early 1990's some Intel processors computed the wrong answer for floating-point divide; called the FDIV bug.
• In the late 1990's some Intel processors suffered from the "F00F bug", an instruction decode bug that could lock up or reboot the CPU.
• AMD recently had a "TLB bug" involving a race condition between the different levels of their cache.
I don't think design will be a serious limiting factor going forward, because CPU designs are actually getting simpler as they go wider in parallel.

## Software

Curiously, the biggest limit to multicore performance today is software--it'd be a real shame if hardware progress is stopped by the fact that nobody likes writing threaded code!