In 2014, I hear a lot of programming languages touted for their concurrency
features. Concurrency is said to be crucial for performance gains.
In making this statement, many people point back to a 2005 article called The
Free Lunch Is Over: A Fundamental Turn Toward Concurrency in
Software. The basic
argument is that it's getting harder to increase the clock speed of
processors, but we can still put more cores on a chip, and that to get
performance gains, software will need to be written to take advantage of
Some key quotes:
We're used to seeing 500MHz CPUs give way to 1GHz CPUs give way to
2GHz CPUs, and so on. Today we're in the 3GHz range on mainstream
The key question is: When will it end? After all, Moore's Law predicts
exponential growth, and clearly exponential growth can't continue
forever before we reach hard physical limits; light isn't getting any
faster. The growth must eventually slow down and even end.
… It has become harder and harder to exploit higher clock speeds due
to not just one but several physical issues, notably heat (too much of
it and too hard to dissipate), power consumption (too high), and
current leakage problems.
… Intel's and most processor vendors' future lies elsewhere as chip
companies aggressively pursue the same new multicore directions.
…Multicore is about running two or more actual CPUs on one chip.
This article's predictions seem to have held up, but I don't understand why. I
have only very vague ideas about how hardware works.
My oversimplified view is "it's getting harder to pack more processing power
into the same space" (because of issues with heat, power consumption, etc). I
would expect the conclusion to be "therefore, we'll have to have bigger
computers or run our programs on multiple computers." (And indeed, distributed
cloud computing is a thing we're hearing more about.)
But part of the solution seems to be multi-core architectures. Unless computers
grow in size (which they haven't), this just seems to be another way of saying
"pack more pocessing power into the same space".
Why doesn't "add more cores" face the same physical limitations as "make the
Please explain in the simplest terms you can. 🙂