CPU Clock Speed vs Real Performance

cpu

If a CPU clock speed is 1 GHz, which basically triggers a clock signal every 1 ns, but I wonder what's the 'real' travelling time of a signal in a full ALU/register/cache/memory computation cycle?

As far as I know electronic signal travels roughly at light speed 3x10^8 m/s, so it travels 0.3 m in 1 ns. Given the size of a typical CPU, is it the reason why CPU clock is not increasing much along with computing power?

Best Answer

The traveling time is just one tiny factor in determining the maximum clock speed of a CPU. Other factors include:

  1. How much power can be delivered to the CPU? CMOS circuits have an increasing power requirement as their clock frequency goes up because it takes a certain amount of power to flip a circuit on or off and the higher the clock frequency, the more often you are doing that.

  2. How much heat can the CPU dissipate? See 1 for why heat increases with frequency.

  3. How long does it take to switch a signal from definite 0 to a definite 1? The signal can't start propagating until the source is able to produce it.

  4. How long is the path and how many switches do we want to be able to accommodate in a single clock cycle. You can get the clock very high by having only a single switch and a short path, but that makes the circuit design very complicated and large. You may want to allow three or four circuits to process data between the start and end of a single clock operation, and that means more time for transitions and propagation is needed between clock cycles.

  5. How long does it take the received signal to stabilize and to be reliably detected or latched by the next input? You can make this faster by tying inputs to each output, but that also makes the design complex. Say one output feeds ten inputs. Do you connect all ten inputs to the output? But then it will take a long time to drive all those inputs. Or do you fan it out through a gate? But then your propagation distance is longer and you need to wait for that gate to switch before the output even starts getting delivered to the next inputs.

Related Question