So clock speeds haven't advanced much, but multi-core technology has. But there appears to be very few programs that exploit it (a spellchecker won't operate 4 times faster on a quad-core, for example).
So are there any gurus here exploiting this technology and what programs do take advantage of it (or is parallel programming mainly academic at the moment).
Single threaded performance is indeed plateauing. While it used to improve 100% every 1.5 years, now we're seeing 30%, and soon improvements will be negligible. The real paradigm shift will happen when the power wall starts prompting chip producers to actually
decrease single threaded performance. This is bound to happen eventually because large out of order superscalar cores are not the most effective use of transistors or power.
Anyway, programmers hate parallel programming because it's wrought with challenges. Deadlock can occur when when there are circular dependencies which block threads from making forward progress (it happens all the time during development). Race conditions may occur when correct program behavior depends on the order in which threads execute (again, happens all the time). Even worse, these problems are hard to find because once you multithread an application execution becomes essentially non-deterministic. So far there are no adequate technologies that can address these problems.
There's been some nice recent trends, however, in parallel programming. OpenCL allows you to do parallel programming on the CPU or GPU in a way that will automatically scale in the future as hardware manufacturers add more cores. Grand Central Dispatch also automatically scales to use the correct number of threads for the system it is running on, and it makes parallel programming easier to do (compared to say pthreads) by enhancing the C programming language.
I'm very excited to start using Grand Central Dispatch on iOS, because I really expect future ARM designs to really pack on more cores rather than increasing single core performance much. The iPad 2 is of course dual core, and we can expect the next iPad to be 4 core (at least, if it wants to be competitive in that respect).