0
\$\begingroup\$

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.

\$\endgroup\$
2
  • \$\begingroup\$ This sounds like a hobby project. If so, focus on the capabilities you need for what you're doing, and the quality of support and documentation. Beagleboard and Raspberry Pi are good platforms for hobby work. If I were doing this professional, I would still focus on capabilities, and then look at manufacturers: quality of support and documentation, how long the chip will be in production, and budget. Ideally pick a chip family that has design wins and millions in production. Raw performance is a minor concern if you can't source the part you designed for. \$\endgroup\$
    – jbarlow
    Commented Sep 19, 2014 at 20:56
  • \$\begingroup\$ @jbarlow this isn't a hobby project, and I agree with all you have said, I just want more info to balance a decision once I find a part that has all the important things you said. It's very easy to find a TI or Freescale chip with all the capabilities one needs, and long time support, even budget and be the same, so sometimes the difference is just the architecture, and I can't find much info out there about all the flavors of ARM and how they compare to each other... \$\endgroup\$
    – mFeinstein
    Commented Sep 20, 2014 at 21:52

1 Answer 1

4
\$\begingroup\$

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:

  • Cortex-A - "Application Processor, probably running Linux, Android, ...
  • Cortex-R - "Real-Time" (RT) embedded processor, probably with an RT operating system
  • Cortex-M - embedded microcontroller, probably no operating system

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:

  • Cortex-M0 (ARMv6-M ISA) is the lowest performance ISA, and is typically quite low-clock at 24MHz-60MHz
  • Cortex-M3 (ARMv7-M ISA) is the midrange, with a better performance ISA, and typically clocks from 60MHz-120MHz
  • Cortex-M4 (ARMv7-M ISA) is the high-end, with an even better ISA, supporting some DSP-like instructions, and optionally a single precision hardware Floating Point Unit, and typically clocks at 72MHz-200MHz

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:

  • Open Source toolchain available on multiple platforms; I use OS X and Linux, others use Windows
  • DIY-able parts, easily available, at affordable prices
  • Source code available for peripheral drivers
  • Technical support, preferably via forums
  • Affordable, available, development boards, with usable schematic and PCB
  • Application notes using the peripherals for application areas of relevance to me
  • Stable and mature

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.

\$\endgroup\$
3
  • \$\begingroup\$ That's a pretty good answer... in my case I have a ARM9 competing with a ARM Cortex-A8, the ARM9 will be cheaper and smaller, but I wanted to know how much performance will I be losing with the choice for ARM9, and even if i was a bad choice given it's an outdated architecture...but honestly, for my purpose it will be more than fine I think, it was more for the knowledge and for future projects... \$\endgroup\$
    – mFeinstein
    Commented Sep 20, 2014 at 22:13
  • \$\begingroup\$ @mFeinstein - you can probably find an ARM-defined DMIPS/MHz figure for an ARM9, and hence compare with Cortex-A8 DMIPS figures if it became important. The question was interesting because I had written some notes already, mostly about Cortex-M, for a future blog. So I only needed a bit to get the other Cortex-Xs. I have heard (but not followed up) that some old ARMs will 'drop-off' Debian's maintenance list. Beaglebone Black's Cortex-A8 seems safer than ARM9. \$\endgroup\$
    – gbulmer
    Commented Sep 20, 2014 at 22:31
  • \$\begingroup\$ Usually the one who lacks more information is Cortex-R, and what makes it Real Time that the other don't, but that I already found in a different question. I just felt that you mentioned all the Cortex-M but didn't said a thing about the M0+, is it just the same? \$\endgroup\$
    – mFeinstein
    Commented Sep 21, 2014 at 23:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.