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 » AMP vs SMPJune 16th, 2015 by Colin Walls
It is becoming common for embedded designs to incorporate more than one CPU – maybe multiple cores on a chip or multiple chips on a board or any combination of these. Indeed, it has been suggested that it will soon be the norm to build systems that way. The use of multiple cores has spawned various technologies and, of course, much terminology and jargon. When new technical terms and acronyms appear, there is inevitable misuse and misunderstanding. This seems to be the case with AMP and SMP, so maybe I can set the record straight … AMP stands for Asymmetric Multi-Processing; SMP means Symmetric Multi-Processing. These terms are not at all transparent. In seeking a means to clarify, I thought I would check Wikipedia and looked up “AMP”. From the disambiguation page, I found the relevant article. Well, I say “relevant”, but it really does not cover the topic as we see it today. It talks about historical uses of multiple CPUs and dismisses it to history. So, I will try to advance definitions: An AMP system:
An SMP system:
Typically, SMP is used when an embedded application simply needs more CPU power to manage its workload, in much the way that multi-core CPUs are used in desktop computers. AMP is most likely to be used when different CPU architectures are optimal for specific activities – like a DSP and an MCU. In an AMP system, there is the opportunity to deploy a different OS on each core – e.g. Nucleus and Android/Linux – as befits the required functionality. 2 Responses to “AMP vs SMP” |
Thanks for this, Colin! I will bookmark this for future reference and to pass on to others. 🙂
In return, would like to contribute an example that I saw recently from an academic project (nothing here to derail their paper submission!). In doing design exploration, hardware-software partitioning to optimize their project’s performance, the subjects opted for an AMP solution with Linux on one processor, and bare metal on the other. (This was on a Xilinx Zynq super-FPGA, with two ARM Cortex-A9 cores.) The rationale was that a function doing heavy calculations could be put on its own CPU, bare metal, to a) save silicon area (resource) with a smaller, less expensive device and b) avoid crowding out other processes if sharing a processor.
That’s a good example Gary.