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.

Preparing Recommendations

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.

More Blog Posts

About Colin Walls

Colin WallsI have over twenty-five years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, I am a member of the marketing team of the Mentor Graphics Embedded Systems Division, and am based in the UK. Away from work, I have a wide range of interests including photography and trying to point my two daughters in the right direction in life. Visit The Colin Walls Blog

Follow on Twitter

More Posts by Colin Walls

Preparing Recommendations

Comments (↓ Add Your Own)

6 Comments on this Post

Commented on 11:12 AM, Nov 8, 2009
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:36 AM, Nov 9, 2009
By Colin Walls

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

Commented on 5:30 PM, Nov 9, 2009
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 11:54 AM, Nov 10, 2009
By Colin Walls

m.k: 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 9:04 AM, Dec 25, 2009
By stojmir

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

Commented on 10:09 AM, Dec 25, 2009
By Colin Walls

stojmir: You may quote me. I am colin_walls on Twitter.

Add Your Comment

Please complete the following information to comment or sign in.

(Your email will not be published)

Archives

Tags

RSS