Paper: Multicore and Multi-OS

Travel has it's disadvantages (30 hours door to door Ottawa to Singapore in an old United 747 for example). But it also has it's advantages: here I find myself at the airport with free wireless and a couple of hours to kill. I should really go through my inbox, but scanning the web for interesting papers and blog articles is a much more fun way to spend this time :).

Which is how I ran into a paper talking about Multicore and Multi-OS as a pattern in embedded systems that is gaining a lot of attention and is clearly increasing in importance. (Registration required)



The paper is from my Dan Driscoll and Stephen Olsen from Mentor Graphics and there is a lot of good stuff in this. They talk about SMP and AMP from the hardware perspective (SMP when you have multiple cores of the same architecture, AMP when the core-architecture is different), Wind River typically talks about SMP and AMP from an OS perspective as we have more of a software focus. Different backgrounds, but something to keep in mind when you read up about these topics.

The article is well written and it talks about how expensive it can be to set up a multi-OS environment. I refer to this as AMP, with AMP from the software sense. You need expertise from an OS as well as from an processor architecture perspective. I spend a lot of time talking about this as well to customers and my opinion is that this time could be much better spent developing differentiating content.

They also talk about a hypervisor, but only from the perspective of core virtualization: running multiple different virtual machines on a single core. This certainly is one of the important usages of a hypervisor. However, the technology behind the hypervisor can make the multi-OS configuration a lot easier as well.

I usually talk about the fact that there are three distinct resources to virtualize: Cores, Memory and Devices. A Hypervisor typically virtualizes all three.

The Wind River Hypervisor can be configured to only virtualize Memory and Devices, to distinguish this we refer to this configuration of the virtualization layer as 'the Supervisor'. The Supervisor is very useful to make the configuration of multiple OSes on a single multicore chip easy with native performance. You can see this an Supervised AMP configuration, with AMP in the software sense (once more).

Now, while we are talking about the complexity of setting up the AMP configuration and how the hypervisor can assist in making that easier; a requirement for this to be true is that the hypervisor is available for the particular processor architecture and that it is well integrated with the operating systems of choice. My choice in operating systems differ from the authors of the article naturally, but that is besides the point. 

The problem with not having the operating systems pre-integrated is that you simply shift the problem. Instead of integrating the OS to the hardware, you are now integrating the OS to the hypervisor or debug tools.

This is one of the reasons that Wind River is so well positioned in the embedded world, as we have the embedded hypervisor, we have the operating systems and the development tools and excellent relationships with all the silicon vendors.

Have a look at the article and let me know what you think.