The ARM architecture can be traced back to 1985, but it has not remained static. Instead, it has undergone massive development since the early ARM cores, with each step adding features and functionalities:
ARMv4 and Earlier Versions
These early processors only used the ARM 32-bit instruction set.
ARMv4T
The ARMv4T architecture added the Thumb 16-bit instruction set on top of the ARM 32-bit instruction set. This was the first widely licensed architecture, implemented by the ARM7TDMI and ARM9TDMI processors.
ARMv5TE
The ARMv5TE architecture added support for DSP-type operations, saturation arithmetic, and improvements in ARM and Thumb interoperability. The ARM926EJ-S implemented this architecture.
ARMv6
The ARMv6 introduced several enhancements, including support for unaligned memory access, significant changes to the memory architecture, and multiprocessor support. It also included some support for SIMD operations on byte or half-word operations within 32-bit registers. The ARM1136JF-S implemented this architecture. The ARMv6 architecture also provided several optional extensions, particularly Thumb-2 and security extensions (TrustZone). Thumb-2 extends Thumb with a mixed-length instruction set of 16-bit and 32-bit instructions.
ARMv7-A
The ARMv7-A architecture mandates the Thumb-2 extension and adds advanced SIMD extensions (NEON). Prior to ARMv7, all cores essentially adhered to the same architecture or feature set. To help address the increasing variety of applications, ARM introduced a set of architecture profiles:
-
ARMv7-A provides all the necessary features for operating systems like Linux.
-
ARMv7-R offers predictable real-time high performance.
-
ARMv7-M is targeted at deeply embedded microcontrollers. The M profile was also added to the ARMv6 architecture to enable features of the older architecture. The ARMv6M profile is used by low-cost microprocessors with low power consumption.