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.