Multi-core, multi-OS confusion

It is increasingly common for embedded designs to be implemented using multiple cores. At Mentor Graphics we are keen to support our customers by providing software and services to help them with such endeavors. We also espouse the idea of using multiple operating systems in such designs. I recently presented a Web seminar on this topic [a recording is available as an archive] and I have written a few articles.

As a result of one such piece, I was taken to task by one of our competitors, who accused me of over-complicating the matter. This revealed a complete lack of understanding of what multi-core/multi-OS is all about …

First off, I am a great fan of simplicity. If there is a simple way to do something, it is my belief that this is almost always the best way to do it. For example, if you can successfully implement a system using a single processor, then that is exactly how you should go about it. By “successfully implement”, I mean achieve all the design goals; functionality and time to market are obvious, but increasingly power consumption is a critical issue.

Using a full spec RTOS, like Nucleus, which, apart from being a kernel, has a very wide range of middleware, like networking, very sophisticated systems may be realized. As such an RTOS has a modest memory footprint, memory may be minimized, which helps with power consumption. A true RTOS is also very efficient, so CPU power [or clock frequency] may be reduced, which can help with power consumption tremendously. Incidentally, both these factors reduce bill of materials costs too, which is an added bonus.

But sometimes this is not enough and a more complex solution is the only way to reach the required functionality and power consumption goals. Utilizing multiple CPUs – cores on a chip or chips on a board – is one way to provide the additional processing power to achieve the required functionality. A big benefit of multiple cores is that their total power consumption is likely to be much less than that of a single CPU running at a higher frequency.

Having decided to use multiple cores, there are some design optimizations that become possible. The choice of each CPU can be considered separately and be based upon the required functionality of each core. So multiple processor architectures may be used. Exactly the same approach may be applied to operating system selection; it may be ideal to deploy a true RTOS on some cores and something like Linux or Android on others. An RTOS is ideal where hard real time performance is required, but Linux could be perfect for the user interface, for example.

To be clear: there is no suggestion that multiple cores should be used in order to accommodate multiple operating systems. Multi-OS is a consequence of multi-core.

Post Author

Posted November 2nd, 2009, by

Post Tags

, , , , ,

Post Comments


About The Colin Walls Blog

This blog is a discussion of embedded software matters - news, comment, technical issues and ideas, along with other passing thoughts about anything that happens to be on my mind. The Colin Walls Blog

@colin_walls tweets

Follow colin_walls


6 comments on this post | ↓ Add Your Own

Commented on 8 November 2009 at 12:12
By ircguru

Nice Post, btw do you know any good usenet archives and or mailing list archives site for unix / linux / bsd

Commented on 9 November 2009 at 10:36
By Colin Walls

Sorry ircguru, I am not a frequent user of such resources, so I have no recommendations to make.

Commented on 9 November 2009 at 18:30
By m.k

Dear Colin
In complex embedded systems like Automotive Entertainment systems, heterogenous multi-cores (multi CPUs) are often the only soulution to meet the requirements. but as this become more complex to fill the gap with the consumer devices, it becomes more defficult for a system designer to use more cpu cores (multi core cpu for example), as this will more than double the software development effort (when using multiple RTOS).
are there any RTOS that support multi-cores processor?

Commented on 10 November 2009 at 12:54
By Colin Walls


You could simply implement the same RTOS [like Nucleus] on each core, if that meets your design goals. There are OSes where you can have one copy running tasks on several CPUs, but they are quite complex.

Commented on 25 December 2009 at 10:04
By stojmir

I want to quote your post in my blog. It can?
And you et an account on Twitter?

Commented on 25 December 2009 at 11:09
By Colin Walls

You may quote me. I am colin_walls on Twitter.

Add Your Comment