Embedded Software Colin Walls
Colin Walls has over thirty 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, Colin is an embedded software technologist with Mentor … More » Multicore systems: heterogenous architectures – untangling the technology and terminologyFebruary 17th, 2020 by Colin Walls
Multicore continues to be a hot topic, as an ever-increasing number of embedded systems are designed with multiple CPUs – most commonly multiple cores on a chip. One of the challenges with understanding multicore is that the term actually covers a number of architectures and approaches to design. Figuring out the terminology is the first challenge … For many people, the term “multicore” brings to mind the microprocessor chips used in most desktop computers and many tablets etc. These devices contain a number of identical CPU cores, which offer a tremendous amount of computing horsepower and the opportunity to parallelize certain operations. [They are correctly termed “homogeneous multicore”.] Their software architecture is normally Symmetrical Multi-Processing [SMP], which is managed with an appropriate version of the operating system – Windows, Linux or MacOS – a single copy of which runs on all the CPUs. SMP architecture has its uses in the world of embedded systems too, where a lot of computing power needs to be marshaled. Hence, there are SMP versions of a number of real-time operating systems, including Nucleus from Mentor Embedded. The other type of multicore hardware architecture is heterogeneous multicore, where the numerous cores have different architectures. This is particularly interesting to the embedded developer, as different CPU architectures may be particularly well suited to specific applications, enabling the system to be constructed in an optimal fashion. Because the CPU architectures are non-identical, the SMP software architecture is no longer possible and each CPU runs its own operating system [or may not have one at all] – this is termed Asymmetrical Multi-Processing [AMP]. Furthermore, each CPU’s operating system may be different. For example, some CPUs might run an RTOS, like Nucleus, whereas others, which are not required to perform real-time tasks, might run Linux. There are various other facets of multicore design to think about:
With all this complexity, multicore design is very challenging, and I think that there are two areas that come top of the list of headaches for the software developer of a multicore embedded system:
Both these challenges are best addressed by deploying technology from companies with the appropriate specialization, like Mentor Embedded. |