Multicore continues to be a hot topic. Recent Web seminars, that we have run, were well attended, with lots of searching questions. I have discussed the subject here before, looking at the differences between AMP [Asymmetric Multi-Processing] and SMP [Symmetric Multi-Processing], for example. In various recent discussions with colleagues and customers, I have realized that there is more clarification that would be useful.
We have often talked about the idea that multicore and multi-OS go hand-in-hand. Although the idea of using multiple operating systems to realize an application may be facilitated by a multicore design, it is not an inevitable consequence. There is also the question of combining AMP and SMP in a single design …
First the multicore and multi-OS issue. The implementation of an AMP system entails each CPU running its own software, independent of the other processors. Typically they are connected by something like shared memory and communicate using a message passing scheme – maybe using MCAPI. This opens up the opportunity to utilize a different OS on each CPU, selecting according to their specific functional requirements. However, the introduction of such diversity may be quite inappropriate for some designs. For example, a medical instrument may have two CPUs, both of which are performing real time processing, but perhaps only one is considered “patient critical” and requires full certification of the software. They could both be using an RTOS like Nucleus, which addresses the functional requirements. Since the code size is modest and source code is available, certification is reasonably straightforward. Localization of the code that requires certification to one CPU means that only the appropriate code is submitted for certification. Another example might be a point-of-sale terminal. In this case too, a couple of CPUs, both running Nucleus, might make sense. Here, the attraction of the multicore design is the hard segmentation between the “secure” part of the application, which handles the financial transaction, and the other functional components, like UI.
Second, I have been asked whether it is feasible [or likely] to combine both SMP and AMP in a single design. The answer is certainly yes. An AMP system is logically a series of connected “nodes”, linked using MCAPI or suchlike. A node is a logical entity, which might be a single CPU running an OS [or with no OS], but it could equally be a cluster of identical CPUs running a single OS instance, like Nucleus SMP for example.
I guess the bottom line is that there are many possible multicore architectures and almost any combination you can imagine has an application somewhere.