ARM naming convention has never been developer or user-friendly and it will not be a surprise if you get confused or could not tell the difference between how ARM7 and ARMv7 relate. What?? Are they different? Yes they are…. follow along to understand.

Though confusing at first glance, there is a clear strategy behind the naming of ARM products. And once you become aware of that, things become quite easy to visualize in mind. The easiest way to understand this is to realize the fact that there are 2 kinds of naming:

  1. Naming the ISA (Instruction Set Architecture)
  2. Naming the (actual physical processor) core - which implements the ISA

Naming the ARM ISA (Instruction Set Architecture)

When we say ARM architecture, we actually mean the instruction set architecture (ISA). And the good news is that the naming of ARM ISA is pretty straightforward : ARMv{number}. Notice the ‘v’. This has been named like this since ARMv1 in 1985 till ARMv8 as in 2020.

Now, based on a particular instruction set, we develop an actual physical core (or virtual in case of hypervisors). These are the cores that go and sit on your phones, tablets or servers.

Naming the ARM cores

ARM used to name its cores like ARM1, ARM2, ARM3, …., ARM11. This was followed from 1985 till 2002. These are in fact families, and each family may contain one or more ARM cores. For example, ARM600 belongs to the ARM6 family.

However, beginning 2005, ARM changed its naming scheme and introduced the Cortex-A, Cortex-R and Cortex-M families. These are named like : Cortex-{letter}{number}. And all the future cores are planned to be named like this.

And that’s it !!!

This is the naming convention followed by ARM . Now there can be multiple permutations and combinations added to the above naming schemes in order to specify the finer details.

Permutations and Combinations

Now, while naming an actual core within a family, some extra suffixes might be added. For example, ‘T’ indicates that Thumb instructions are supported, ‘F’ indicates a hardware floating point support, etc. Similarly, they may add numbers to indicate variants or revisions.

And since ARM architecture (remember by architecture we always mean Instruction Set Architecture (ISA)) is a for-sale thing, it can even be licensed to 3rd parties, e.g. Qualcomm, Apple. In such cases, these companies may design and manufacture their own cores and hence can give their own catchy names. But whatever it is, from a system developer perspective, it always boils down to the ISA implemented by the core. e.g. iPhone 5S contains the ARM core called as “Apple A7” and it implements ARMv8-A instruction set.

Conclusion

  1. There are 2 kinds of naming - naming the instruction set architecture (ISA) and naming the processor core.
  2. ARM ISA naming scheme still remains the same as ARMv{number}.
  3. Modern ARM core naming convention follows the Cortex-{letter}{number} scheme.
  4. From developer point-of-view, whatever be the name of the core, you should only worry about - “What is the instruction set implemented by it?”. The name of the core doesn’t matter, whether it’s called “flying buffalo”, it’s only needed to track and obtain the corresponding data sheet.
  5. Once you know the ISA implemented, use it for referring opcodes and relevant architecture details. And use the processor core name to obtain the processor datasheet.