Wednesday, September 24, 2008

When clock speeds stop increasing

I look forward to the day when clock speeds stop going up.

When the day comes, I'll be able to buy a computer and keep using it for five, ten, maybe even twenty years. The last several computer purchases that I have made were driven not by any problems with my current machine, but by the fact that new software keeps needing faster and faster computers. Once the computers stop getting faster, the speed requirements from software should stop going up.

Most developers will not be moving to an arbitrary-number-of-threads model. They may use a few threads for things like doing something asynchronously or keeping the UI responsive. This means that doubling the number of cores in a chip won't help most applications past 4 or 8 cores.

Right now, the constantly increasing clock speeds help to hide terrible code. If something is too slow on today's computers, don't worry about it. It'll run fine on the computers that will be out in 18 months. Once the clock speeds stop increasing, developers will need to start caring about efficiency again. The quality of a piece of code might start mattering more than the time to market. We'll finally get software that is focused on performing its core function well instead of on adding every last bell and whistle that the marketing department can think up while implementing all of them poorly.

Open Source software will catch up to proprietary software. The only way for proprietary vendors to stay ahead of Open Source software is to write new code faster than the Open Source community does. One common way of writing code faster is to worry less about its quality and efficiency. Once the proprietary authors need to worry about efficiency, they won't be able to turn out crap as fast as they do now.

4 comments:

slacy said...

Dude, have you been watching clock speeds recently? They're not going up today. Search around, and you'll find that in 2003, a Pentium 4 at 3.2GHz was released -- that was nearly 5 years ago, and today, the fastest GHz Intel chip you can buy is just about 3.2GHz (Quad core QX9770 or similar).

So, I assert that clock speeds haven't gone up at all in the last 5 years. All we've gotten is more cores and better parallelism in chip.

In the past, we would see about a doubling in clock speeds every 12-18 months. If that trend had continued past 2003, we would be at somewhere between 25 and 100 GHz.

slacy said...

Oh, and by the way, clock speed are not equal to "useful work performed per cycle". Or in other words, a 3.2GHz machine today can do more work per second (and use less power) than a 3.2GHz machine from 5 years ago, even when you only think about a single core.

Oh, and by the way, since we're stuck at about 3.2GHz, your assertion of "most developers will not be moving to a threaded model" will have to change. We're at (nearly) 8 cores per chip today, and in 5 more years, that will likely be upwards of 64 cores per chip, possibly much higher if we double every 12 months. Development practices will be forced to change if they want to take advantage of such a system (as we're seeing with the PS3 and friends -- that have a radically different development methodology than prior systems).

Remember: Moore's law states that the number of transistors per chip will continue to increase at an exponential rate (doubling in 12-18 months) *forever*, although he did state that he thought there would be some end to it someday, but isn't able to surmise when that will be.

Brett Morgan said...

As noted above clocks stopped stepping up about five years ago. Secondly, how is the stop of increasing clock related to software bloat?

Or more importantly how is the flat lining of the growth curve going to improve the design of open source software?

The most amusing one to me is your statement about us programmers not using more cores. Given the fact I'm part of the crew chasing down how to utilise 500+ cores, I'm just... in awe.

A bloke in Europe said...

this looks more like a wish than the suggestion that it will happen ;)