The Processor: Datapath & Control

the limitation of single-cycle design

Imagine paying every employee the same daily wage no matter how long their task takes, and setting that wage by the slowest task in the building. People doing two-minute jobs get paid as if they worked all day. That is the core flaw of a single-cycle processor: the clock period is fixed at the length of the slowest instruction, and every instruction — fast or slow — is charged that same long cycle.

Here is why, concretely. In a single-cycle design each instruction must complete within one clock tick, so the tick has to be long enough for the worst critical path through the datapath. That worst path is typically a load: fetch + register read + ALU address calculation + data-memory access + register write-back, perhaps 8 units of delay. An arithmetic instruction that needs only fetch + register read + ALU + write-back (say 6 units) and a branch (maybe 5 units) are both stretched to the same 8-unit cycle. The faster instructions gain nothing from being faster.

Two further costs make it worse. First, each hardware unit can be used only once per cycle, so the single-cycle design cannot reuse, for example, the same adder for both PC + 4 and a branch target — it needs separate adders, wasting hardware. Second, no instruction can ever beat the worst-case time, so even a program made entirely of quick adds runs at load speed. The fix is to stop charging everyone the worst-case wage: break execution into smaller steps (multi-cycle), letting simple instructions finish in fewer steps, and later overlap those steps across instructions (pipelining). The single-cycle's limitation is precisely the motivation for everything that follows.

If load = 8 ns, add = 6 ns, branch = 5 ns, the single-cycle clock must be 8 ns. A program that is 50% adds and 50% branches could in principle average about 5.5 ns per instruction, but on the single-cycle machine every instruction takes the full 8 ns — roughly a third of the time wasted.

Every instruction pays the worst-case (load) cycle time, so simple instructions waste most of their cycle.

The fix is NOT just a faster clock — you cannot shorten the cycle below the worst critical path without breaking the load. The real fix is restructuring (multi-cycle, then pipelining) so different instructions take different amounts of work.

Also called
single-cycle bottleneckworst-case clock problem單週期瓶頸