Arm processors are designed by Arm Holdings and licensed to other companies to manufacture. The Cortex series includes the Cortex-A line for application processors and Cortex-M line for microcontrollers. While both processor families are based on the Arm instruction set architecture, there are key differences between Cortex-A and Cortex-M in terms of architecture, intended use cases, performance and features.
Intended Use Cases
The Cortex-A series is intended for high performance application processors like those used in smartphones, tablets and other mobile devices as well as embedded systems. Cortex-A processors typically run complex operating systems like Linux, Android and Windows. They are used when higher processing power and advanced capabilities are required.
The Cortex-M series targets low power microcontrollers for embedded systems. Cortex-M processors are used in products like home appliances, automotive systems, IoT devices, wearables, toys and other gadgets. They excel at real-time responsiveness, low power consumption and low cost. Cortex-M controllers run real-time operating systems or even no operating system.
Cortex-A processors have a Von Neumann architecture with separate instruction and data caches. This allows for high performance by reducing wait times to fetch instructions and data from main memory. Cortex-A CPUs also utilize features like branch prediction, out-of-order execution and speculative execution to further boost performance.
In contrast, Cortex-M processors use a Harvard architecture with separate instruction and data address spaces. This allows instructions and data to be fetched simultaneously for better real-time responsiveness. Cortex-M CPUs are in-order execution only for simpler design and do not use advanced performance features found in Cortex-A.
Cortex-A application processors are designed for maximum performance to handle intensive workloads. Current high-end Cortex-A chips have clock speeds over 3 GHz with multi-core configurations. Cortex-A utilizes SIMD and VFP for parallel processing of multimedia and scientific workloads. Larger caches and MMUs support robust operating systems and applications.
Cortex-M microcontrollers focus on power efficiency for embedded real-time applications. Cortex-M CPUs operate at lower clock speeds from tens to hundreds of MHz. They have no cache, small register sets and simplified pipelines. While less powerful than Cortex-A individually, multiple Cortex-M cores can be grouped for parallel processing tasks.
Cortex-A processors provide features needed for advanced operating systems and applications:
- MMU for virtual memory support
- Larger cache sizes up to several MB
- SIMD and VFP for parallel processing
- Leverages multicore configurations
- Systems level cache coherence for multiprocessing
- Sophisticated power management for optimal performance/watt
Cortex-M microcontrollers offer real-time responsiveness and efficiency:
- NVIC for low latency interrupts
- Bit banding for single bit access
- Memory protection unit for safety critical applications
- Wake up interrupt controller for ultra low power
- Tightly coupled memories for deterministic latency
- DSP extensions on some variants for digital signal processing
Both Cortex-A and Cortex-M CPU cores use the Arm instruction set architecture. However, Cortex-M uses a subset called Thumb-2 with both 16-bit and 32-bit instructions for improved code density. Cortex-A supports the 32-bit A32 instruction set as well as Thumb-2. Advanced SIMD/NEON instructions are also supported on Cortex-A but not Cortex-M.
Licensing and Manufacturing
Arm licenses their Cortex-A and Cortex-M processor IP to semiconductor companies to manufacture actual silicon chips. Companies like Qualcomm, Samsung, Nvidia, Texas Instruments, NXP and STMicroelectronics license and produce Cortex-A processors. Microchip, NXP, STMicroelectronics, Cypress and Infineon are major manufacturers of Cortex-M microcontrollers.
While Arm designs the processor architecture, the manufacturing companies handle the physical chip fabrication and integration with other components into finished chips and microcontrollers. This fabless licensing model has made Arm CPU IP ubiquitous in the electronics industry.
From a software standpoint, both Cortex-A and Cortex-M processors can be programmed using standard Arm development tools like Arm Compiler, DS-5, Keil MDK, IAR EWARM and GCC based toolchains. Higher level languages like C/C++ are commonly used. Cortex-M programming can utilize CMSIS APIs for simplified and consistent access across microcontroller variants.
However, the drastically different use cases lead to differences in programming approach. Cortex-A application processing requires complex operating systems, device drivers, graphical stacks and robust application frameworks. In contrast, Cortex-M microcontroller programming often uses bare metal or RTOS approaches focused on real-time control tasks.
Use Cases Examples
Here are some example uses for Cortex-A and Cortex-M processors:
- Cortex-A – Smartphones, smart TVs, tablets, Chromebooks, laptops, desktops
- Cortex-A – Servers, network equipment, enterprise storage and infrastructure
- Cortex-A – Advanced robotics, drones, autonomous machines
- Cortex-M – Internet of Things devices, wearables, smart home tech
- Cortex-M – Motor control, industrial automation systems, 3D printers
- Cortex-M – Digital cameras, audio gear, vehicle systems
In summary, Cortex-A and Cortex-M have substantial differences in architecture, performance, features and intended use cases. But they share a common Arm instruction set architecture and complement each other across a wide spectrum from microcontrollers to application processors.