the spotted blog

Tuesday, February 20, 2007

A perspective on the Evolution of Computing

It has always been a fight to improve the time/program.

time/program = [ (instructions/program) x (time/instruction) ]
Th CISC drive to reduce instructions, by making each instruction do more work. And making the processors faster so that we use less time for each instruction.

time/program = [ (instructions/program) x (cycles/instruction) x (time/cycle) ]
The realisation that making instructions more complex wasn't really giving the highest performance, the birth of the RISC movement to simplify the instructions yet again and heavier emphasis on compiler design to get the best possible code optimization.

time/program = [ (threads/program) x (instructions/thread) x (cycles/instruction) x (time/cycle) ]
Pipelining, threading and all those things to perform out-of-order execution. Move towards parallelizing. And of course VLSI still offering lesser time/cycle by manufacturing improvements.

time/program = [ (cpus/program) x (threads/cpu) x (instructions/thread) x (cycles/instruction) x (time/cycle) ]
Parallelization taken a step forward with multi-core CPUs with the CPU speed reaching almost its limits with Silicon.

Where do we go now? What's the next variable?