Archive

Archive for the ‘David’ Category

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

Welcome to ‘Common Thread’

October 20th, 2008

Welcome to ‘Common Thread’, CriticalBlue’s blog, which is dedicated to all things multicore and multithreaded, practical and pragmatic. Our multicore journey started several years ago when we developed our Cascade product for extracting instruction level parallelism out of optimized ARM binaries. Since then we’ve expanded our capabilities to help with task level parallelism exploitation and verification of multithreaded code. We also have some new products in the works, which you will hear much about in early 2009. Add to that the fact that we co-chair the Multicore Association’s Multicore Programming Practices (MPP) working group and you can see that we are steeped in all the various aspects of creating and programming multicore and multithreaded architectures.

In the course of our multicore journey we have stuck to our guiding principles of leveraging, as much as possible, existing languages, tools and environments. We’ve listened to man of you on the way and we have learned a lot. The result? We’ve only invented tools that fit into the methodologies that developers already use and where they add value in the process. We are the practical and pragmatic multicore guys!

In this blog and in our community pages you’ll find the team here at CriticalBlue will share our views and experiences on technical and business insight and aspects of multicore and multithreaded market discontinuity. You’ll also find links to educational and opinionated writers who will give their own views; sometime complementary, sometimes not. Overall we hope you’ll find a wealth of useful information. If you have opinions, we’d love to hear them.

- David Stewart, CEO

David