In processor circles, they're calling it the end of Moore's law: Clock speed is out and multicore is in. But like any transitional moment in technology, the rise of multicores has led to what I call the earthworm effect, that is, a rapid burst forward and then a lull as the rest of the worm catches up.
Many of you probably see the same thing on your commute to work.
In the case of multicores, the rest of the worm is the software industry, which is still trying to reorient itself to a multithreaded universe in which a single application has to deal effectively with data coming in and going out along several paths at once. It's not an easy thing to do, but since multicore technology is now several years old, you'd think the developer community would have come up with something by now. What gives?
Part of the problem, no doubt, is lack of guidance on the part of the chip developers. Intel has made good with the release of the new Multicore Software Development Kit for Java, which includes tools for analyzing and debugging parallel programs in simulated multicore environments. Developers now have a way to determine if there are any concurrency or synchronization issues between various threads that could cause an application to hit the bricks in a working environment. This kind of thing would have been handy at the outset of the multicore era, but it's better late than never.
But will this be enough? The most encouraging sign has been the adoption of multicore support among a variety of OS and browser platforms. I don't pretend to know all the intricacies of data exchange between applications and their underlying support programs, but it seems to me that if the OS doesn't do multicore, then the app will have trouble as well.
Apple is the latest platform vendor to join the club, adding what it calls Grand Central Dispatch to the Snow Leapard version of Mac OS X. It is essentially a task distribution module that removes the responsibility of handling multiple threads from the application. The system is said to both improve performance and lessen power consumption because the job can be handled much more efficiently on the OS level. It bears noting, however that Microsoft has already incorporated much the same thing in Vista and is expected to further the technology in Windows 7.
When it comes to browsers multicore support is enabled through a process called multi-process browsing. The idea is to allow each viewed page or tab to reside in a separate process, upping the performance capabilities of the browser by enabling multiple processes to be run simultaneously. It also provides an extra measure of security by putting a wall between processes that may have malicious code and those that don't. Both Google Chrome and IE 8 have multi-process browsing capability already, while FireFox is looking to add it early next year.
All of this will have a positive effect on multicore development itself, which is poised to break beyond the 4x level and into 8x and 16x territory very soon. But since a computer is like a, well, a machine, all parts have to run in sync if we are to see the performance gains as promised. New hardware is great, but not if the new software can't handle it.