ARM processors support a variety of instruction set architectures (ISAs) that determine the type of instructions the processor can execute. The main ISAs supported by ARM processors include:
ARMv8-A
The ARMv8-A architecture is the latest generation and supports 64-bit processing. It includes the A64 instruction set which supports 64-bit registers and a 64-bit address space. ARMv8-A also supports 32-bit processing through the A32 instruction set for compatibility with older software. Key features of ARMv8-A include:
- 64-bit registers and address space in A64 mode
- Advanced SIMD and floating point instructions
- Hardware virtualization support
- Enhanced security through TrustZone
- Improved power efficiency
ARMv8-A is used in high-end application processors found in smartphones, servers, and other devices needing top performance.
ARMv7-A
ARMv7-A architecture added support for features like the Thumb-2 instruction set, SIMD media instructions, and enhanced floating point capabilities. The ARMv7-A profile is a 32-bit architecture that includes:
- Thumb-2 instruction set with both 16-bit and 32-bit instructions
- Advanced single instruction, multiple data (SIMD) instructions
- VFPv3/v4 floating point unit
- Hardware divide instructions
- TrustZone security extensions
ARMv7-A offers a good balance of performance and power efficiency and is popular in mobile devices like smartphones and tablets.
ARMv6
Introduced in the early 2000s, ARMv6 added support for the Thumb-2 instruction set, which brought 16-bit Thumb instructions up to feature parity with 32-bit ARM instructions. Key features of ARMv6 include:
- Thumb-2 instruction set
- VFPv2 floating point unit
- Media instructions for SIMD processing
- Hardware divide instructions
ARMv6 offers good performance for mid-range embedded devices. It is commonly used in lower cost Android phones and embedded electronics.
ARMv5TE
ARMv5TE added support for the Thumb instruction set, which uses 16-bit instructions instead of 32-bit for improved code density and power efficiency. Main features of ARMv5TE include:
- 16-bit Thumb instruction set
- VFPv2 floating point unit (optional)
- Enhanced DSP instructions
- Saturation arithmetic logic
ARMv5TE offers a good balance of performance, code size, and power for many embedded systems. It has been popular in a wide range of microcontrollers and SoC designs.
ARMv4T
Introduced in the late 90s, ARMv4 was the first ARM architecture to add support for the Thumb 16-bit instruction set. Key attributes include:
- 16-bit Thumb instruction set
- VFP floating point unit (optional)
- Enhanced 16-bit multiply instructions
ARMv4T offers good performance for basic embedded systems while minimizing code size. It has been used in microcontrollers, calculators, and other cost-sensitive devices.
Older ARM Architectures
In ARM’s early history, it developed a series of simpler architectures for basic embedded systems:
- ARMv3 – Added support for unified cache and introduced the ARM9 series of cores.
- ARMv2 – Introduced pipeline processing capabilities for improved performance.
- ARMv1 – The original ARM ISA was a 32-bit RISC architecture focusing on efficiency.
These older architecture versions are rarely used today but were instrumental in establishing ARM’s foothold in the embedded microprocessor market in the 1990s and early 2000s.
Summary of ARM Instruction Set Architectures
In summary, here are some of the key instruction sets supported on ARM processors:
- A64 – 64-bit instruction set used in ARMv8-A architecture
- A32 – 32-bit instruction set in ARMv8-A architecture
- Thumb-2 – Mixed 16-bit and 32-bit instruction set first introduced in ARMv6
- Thumb – Original 16-bit Thumb instruction set in ARMv4T and later
- ARM – Classic 32-bit ARM instruction set in all ARM architectures
The Thumb instruction sets (Thumb-2 and Thumb) are particularly notable because they enable ARM processors to achieve high code density without sacrificing performance. This makes ARM ideal for embedded applications where memory footprint is often constrained.
ARM’s strategy of incrementally building upon prior architectures while maintaining backwards compatibility has been key to its successful evolution over 3+ decades in the embedded processing industry.
ARM Processor Families
In addition to the instruction set architectures, ARM processor cores themselves are grouped into families that target different performance levels and use cases:
- Cortex-A – High performance application processors for smartphones, tablets, servers
- Cortex-R – Real-time processors focused on reliability and safety
- Cortex-M – Microcontroller optimized for embedded applications
- Cortex-A – High efficiency, low power cores for simple IoT devices
Each processor family has cores that implement different ARM instruction sets. For example, Cortex-A processors support ARMv8-A while Cortex-M processors use Thumb-2 code from ARMv6T2 or ARMv7-M architectures.
This allows ARM’s partners to choose a core family and instruction set appropriate for everything from basic embedded devices (Cortex-M + Thumb-2) up to high-performance application processors (Cortex-A + ARMv8-A).
Comparisons Between ARM Instruction Sets
The various ARM instruction sets provide different advantages that suit them to different applications:
- ARMv8-A – Best overall performance and advanced features for high-end processors
- ARMv7-A – Good balance of performance and efficiency for mid-range devices
- Thumb-2 – Optimized for smallest code size while retaining high performance
- Thumb – Very compact code for simplest embedded devices
- ARMv4/5 – Good performance on older process nodes with minimal silicon area
The Thumb instruction sets are notable for achieving much higher code density than regular 32-bit ARM instructions, reducing memory requirements. Here is a typical comparison between Thumb, Thumb-2, and ARM code size:
- Thumb code size: 60% smaller than ARM
- Thumb-2 code size: 25-35% smaller than ARM
Actual code density improvements will vary by application. But Thumb and Thumb-2 instruction sets are a key reason why ARM processors are attractive for embedded systems.
Conclusion
ARM’s success lies in its large ecosystem of compatible processor cores that implement a range of instruction set architectures. The ARMv8-A, ARMv7-A, and Thumb-2 ISAs strike a good balance of high performance and power efficiency for most applications. The Thumb instruction set enables smaller code size where memory is constrained. And older ARM ISAs still power a vast number of existing embedded devices.
ARM will continue enhancing its architectures, doubling down on 64-bit processing and expanding into new markets. But its careful, backwards-compatible evolution gives confidence that today’s ARM software investments will carry forward to next-generation ARM cores and platforms.