I am taking some deep interest lately in the ARM architecture and there are many flavors of ARM out there….ARM7, ARM9, ARM11, ARM Cortex-A, ARM Cortex-M and etc.
Are there any benchmarks of all the cores so I can have a general view of the performance and benefits of each core? Choosing the right core usually comes with a price and evaluating which core is best for a particular need can be kinda tricky.
Best Answer
Differentiating between different ARM cores seems to have been 'maximally confusing'. So they have tried to address that.
ARM's modern processor cores are all called "Cortex"
There are still ARM7 Instruction Set Architectures (ISAs), but their aim seems to be to create a simpler, easier to understand set of names for products which implement parts of the architecture. Products called ARM11 etc. are 'historical'. ARM seem to intend them to be moved to the Cortex branding and features.
The basic product names are:
The products are aimed at different markets, have significantly different clock speeds and performance, and different levels of support for an operating system.
Cortex-A [ARMv7-A ISA] is a 'proper' modern computer CPU. It supports operating systems, like Linux, which use virtual memory, and is typically a System-on-Chip (SoC) with external memory. It comes in multi-core versions. It is used in laptops, tablets, etc.
Cortex-R [ARMv7-R ISA] is higher performance than Cortex-M, less than Cortex-A, intended for embedded systems. The examples ARM give are "automotive safety" and "wireless baseband". They list manufacturers like Infineon, Toshiba, Fujitsu, TI, LSI (I think Broadcom have closed the group doing this stuff). Not stuff I am familiar with.
Cortex-M [ARMv7-M ISA or ARMv6-M ISA] only implements simple operating system support, for example base+limit registers to protect one process from another. It is comes is 3 major variants, which have different performance at the same clock speed, and different power needs.
So at the first level, it should be relatively clear which product family is relevant.
At a finer level of resolution, each variant has specific features which are intended to differentiate them, and make it easier to identify the right candidates. Each variant within a family often runs in significantly different clock speed range.
For example Cortex-M there are three main variants embedded within MCUs:
So, if you know approximately what you want to do, it might be straightforward to identify the CPU.
Two products, using the same core at the same clock speed will likely have very similar performance. It may vary because the licensee might implement slightly different instruction caching mechanisms.
Some of the manufacturers have benchmarks comparing products from 'vendor a, B and C', but they don't seem to compete on like-for-like CPU performance much. Comparison is more likely 32-bit vs 16 or 8-bit, peripheral capabilities (which are not ARMs IP), or power.
Edit: ARM quote performance of most cores in DMIPS/MHz (Dhrystone MIPS/Mhz) for comparison.
There are a lot of ARM licensees, manufacturing competing products by adding their own Flash, SRAM, and peripherals. Hence you will also need to identify the memory and peripheral requirements to identify candidate parts and manufacturers.
Manufacturers tend to focus on different market areas, and within those differentiate products by specialised peripherals.
I am interested in small autonomous vehicles and robots. Some of my designs are Open Source, aimed at makers, which effects my priorities. My selection criteria are:
I am assuming peripheral documentation and datasheets are published and easily available.
There are a large choice of adequate CPUs. Their performance isn't a significant decision criteria. Peripherals make more difference to my choice.
ARM encourage some software portability between manufacturers competing products through their CMSIS standard, which defines a somewhat portable 'Hardware Abstraction Layer' (HAL) API for a few common peripherals.