How to choose a processor
As a developer choosing an Arm-based processor, how do you decide which one you need? If you have been using Arm for a while, you probably already have your favorite family. If you are new to Arm, the choice might seem overwhelming. Let’s consider some of the factors that might affect your choice.
Your starting point might depend on whether you are a software engineer or a hardware engineer. Arm processors cover a vast performance spectrum, but there is overlap in the middle ground of high-end Cortex-M, low-end Cortex-A, and Cortex-R. However, the software ecosystems for each family are quite different, and this factor might affect your choice. The overlap between families is partly because partners want to retain their ecosystem investment, but address new applications that require higher performance or push rich IoT devices into smaller energy footprints.
If your primary focus is low-power, energy-efficient applications, or perhaps a battery-powered IoT device, then Cortex-M is probably the right choice. Cortex-M includes a rich ecosystem of real-time operating systems and CMSIS libraries. Trusted Firmware-M provides a secure foundation if you are developing a device with connectivity. It is easy to scale up to more performant devices like Cortex-M7 or Cortex-M55. Cortex-M55 also introduces extensions that can help with machine learning and DSP tasks.
If you need Linux or another rich operating system that requires an MMU, then Cortex-A is the best option. Until the launch of Cortex-R82, Cortex-A was the only option. Cortex-A still scales down to energy-efficient CPUs like Cortex-A5 and Cortex-A32. The Armv8-A architecture is used by partners like Fujitsu in its A64FX supercomputer processor, and Amazon in its Graviton hyperscale platform. You can see that there are plenty of options for high-end devices. The Linux ecosystem has also made Cortex-A processors popular in single board computers, including the Raspberry Pi. Cortex-A processors have the richest instruction sets of the Arm Cortex families. You can learn more in Introducing the Arm architecture.
With the introduction of Cortex-R82, there is now an increased overlap between features in the Cortex-R and Cortex-A families. Indeed, the raw instruction sets for both are similar. Cortex-R82 runs user-mode Arm v8.4 binary files unmodified, if required optional features, like Neon, are present. The main differences between Cortex-A processors and Cortex-R82 are in the memory model. The memory model is where the focus for Cortex-R82 is designed for the needs of developers with hard real-time requirements.