“There ain’t no such thing as a free lunch.” R. A. Heinlein, The Moon Is a Harsh Mistress
Herb Sutter has posted :The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software which will appear in Dr. Dobb’s in March 2005 and in a briefer version in C/C++ Users for February 2005.). This is the sort of things I’ve covered under MultiCore
He covers several points: the last 30 years of improved processor performance were via clock speed, execution optimization, and cache. Sequentially written code was able to take advantage of these without change. This was the free lunch. Performance gains in the foreseeable future will be driven by hyperthreading, multicore and cache. Hyperthreading multicore will have nearly no impact on sequentially written code. Code will have to be re-written for Concurrency: parallel, multi-threaded, multi-process. This is really hard and not all problems are inherently parallelizable. The free lunch is gone.
Tim Bray concurrently covered this in Software in the TLP Era and offers some strategies.