Archive

Archive for December, 2008

The Push and Pull of Multicore

December 18th, 2008

Have you ever heard a software developer say ‘What I really need on my next project is a multicore platform to program..’? No, I didn’t think so. As we all probably know, the shift to multicore is driven by silicon platform vendors recognizing that such architectures are the only way they can meet end product performance and power consumption requirements. Enough has been written on that topic, and I don’t need to re-state the rationale behind this trend here. The marketing books tell you that for rapid adoption of a new product there needs to be a ‘pull’ from the end users into the market that is satisfied by a product which has a ‘push’ behind from what will become the dominant vendors in that new market. Clearly, in the transition to multicore, silicon vendors are already providing an almighty ‘push’ into the market. What interests me is seeking out and categorizing the market ‘pull’…

These days I spend a lot of time thinking about the software side of the evolution to multicore- mainly because of my work with the Multicore Association’s working group on Multicore Programming Practices (MPP), but also because of customer interactions concerning CriticalBlue products. So what can we say about market ‘pull’ in this domain? As far as end users are concerned, the consumers of multicore silicon platforms are systems companies and, more specifically, the software developers within those companies. I tend to categorize the multicore markets into three sectors, namely Server, Desktop and Embedded.

Coming from the chip design end of the market, I am most familiar with the embedded space; although I have recently been looking at the other two markets to see what can be learned. In particular, I am interested in how software development is changing with the widespread adoption of multicore platforms. In the server market, the most significant impact has been the massive growth of virtualization techniques and technologies, to the extent that some analysts even predict that the number of x86 based servers will drop in years to come. Why? The appeal is simple I think. Virtualization allows users to make more efficient and more flexible use of the platforms they have with – wait for it – no change to the software applications they are running. The server market also has the characterization of being mainly transaction based, ie. the application run time is not the most important factor, so any application performance overhead added by virtualization is not a big deal. In the desktop world, there is a lot of noise around tools and methodologies, but in equal measure there is also a lot of noise about how little of the actual multicore performance is being utilized by software running on desktops. Game applications and Adobe Photoshop are examples of a handful of consumer volume, compute intensive applications that could benefit from multiple processors; the majority of things we do on desktop platforms do not. Consequently, the widespread adoption of multicore platforms has not yet had a significant impact on the vast majority of software developers.

But what of the embedded market? This market is the newest to be touched by the multicore trend. Yes I know multicore isn’t new in embedded, but shared memory multicore is, and it is in this configuration that multicore architectures can, if they so desire, be exploited directly by software developers. Another observation is that moving from server, through desktop and into embedded means that software applications become more and more compute intensive and therefore need to run closer and closer to the actual hardware platform. In other words the performance implications of using different methods of exploiting multicore come into sharp focus.

Right now we are just beginning to see the reaction of the deeply embedded software developer to the multicore revolution. What we can learn by looking at the server and desktop markets is that software developers will not make a mad dash to multithreaded programming if there is an alternative that allows them to stick with what they have while meeting their performance/cost/power goals. This shouldn’t be a surprise. In the server market they found virtualization; in desktop they found that most applications run just fine and wouldn’t necessarily benefit from being multithreaded.

In the embedded market it may be too early to be certain what will happen. What we can say is that there are a lot of shared memory multicore platforms being put together, and there is a lot of interest in multithreading software techniques. It is also likely that application performance/power considerations will force the adoption of low overhead multicore software approaches.

However, as I have analyzed the differences and similarities between the way software developers have approached multicore in the three sectors, one observation about the server/desktop market jumps out at me and may serve as an important indicator how what will happen in embedded. And it is the software developer saying ‘I want the system benefits of multicore with the absolute minimum amount of change to my software and my development environment’. In the new world of multicore software development, that’s the real market ‘pull’. Ignore it at your peril.

David