ARM Holdings Inc. is a fabless semiconductor company that develops processors, system-on-chips, softwares etc. ARM was founded as Advanced RISC Machines in 1990 as RISC is the main CPU design strategy implemented in its processors.
ARM is the world’s leading provider of RISC based microprocessor solutions and other semiconductor IP’s with more than 85 billion ARM based chips being shipped to date.
Like other microprocessor companies like Intel, Freescale, Hitachi etc., ARM doesn’t manufacture processors or other semiconductor devices but rather licenses the semiconductor cores as Intellectual Property (IP) to other semiconductor companies like ATMEL, Phillips (now NXP), Samsung etc. The important IP’s of ARM include its low power, low cost, high efficient RISC microprocessors, system on chips and other peripherals.
Apart from processors and IP Cores, ARM also provides comprehensive software development tools like Keil and DS-5 for developing complete systems based on ARM microcontrollers and system on chips.
Today, ARM Processors are found in almost any domain like handheld devices, consumer electronics, robotics, automation, etc. Processors developed from ARM IP’s are used in embedded systems like smart TV’s, smart watches, smart phones, tablet computers, etc.
Features of ARM
ARM Processors are based on reduced instruction set computing (RISC) architecture. But based on the requirements of the embedded systems, some amendments to the RISC architecture are made.
ARM Processors follow Load and Store type architecture where the data processing is performed only on the contents of the registers rather than directly on the memory. The instructions for data processing on registers are different from that access the memory.
The instruction set of ARM is uniform and fixed in length. 32-bit ARM Processors have two instruction sets: general 32-bit ARM Instruction Set and 16-bit Thumb Instruction Set.
ARM supports multiple stages of pipeline to speed up the flow of instructions. In a simple three stage pipeline, the instructions follow three stages: fetch, decode and execute.
Some of the general features of ARM are listed here.
- ARM Processors have a good speed of execution to power consumption ratio.
- They have a wide range of clock frequency ranging from 1MHz to few GHz.
- They support direct execution of Java bytecodes using ARM’s Java Jazelle DBX.
- ARM Processors have built in hardware for debugging.
- Supports enhanced instructions for DSP operations.
ARM Processor Family
ARM has several processors that are grouped into number of families based on the processor core they are implemented with. The architecture of ARM processors has continued to evolve with every family. Some of the famous ARM Processor families are ARM7, ARM9, ARM10 and ARM11. The following table shows some of the commonly found ARM Families along with their architectures.
ARM follows the nomenclature shown in the below figure to describe the processor implementations.ARM Nomenclature
The letters or words after “ARM” are used to indicate the features of a processor.
- x – Family or series
- y – Memory Management/Protection Unit
- z – Cache
- T – 16 bit Thumb decoder
- D – JTAG Debugger
- M – Fast Multiplier
- I – Embedded In-circuit Emulator (ICE) Macrocell
- E – Enhanced Instructions for DSP (assumes TDMI)
- J – Jazelle (for accelerated JAVA execution)
- F – Vector Floating-point Unit
- S – Synthesizable Version
Explanation of the features
T – Thumb Instruction Set
ARM Processors support both the 32-bit ARM Instruction Set and 16-bit Thumb Instruction Set. The original 32-bit ARM Instructions consists of 32-bit opcodes which turns out to be a 4-byte binary pattern. 16-bit Thumb Instructions consists of 16-bit opcodes or 2-byte binary pattern to improve the code density.
D – JTAG Debug
JTAG is a serial protocol used by ARM to transfer the debug information between the processor and the test equipment.
M – Fast Multiplier
Older ARM Processors used a small and simple multiplier unit. This multiplier unit required more clock cycles to complete a single multiplication. With the introduction of Fast Multiplier unit, the clock cycles required for multiplication are significantly reduced and modern ARM Processors are capable of calculating a 32-bit product in a single cycle.
I – Embedded ICE Macrocell
ARM Processors have on-chip debug hardware that allows the processor to set breakpoints and watchpoints.
E – Enhanced Instructions
ARM Processors with this mode will support the extended DSP Instruction Set for high performance DSP applications. With these extended DSP instructions, the DSP performance of the ARM Processors can be increased without high clock frequencies.
J – Jazelle
ARM Processors with Jazelle Technology can be used in accelerated execution of Java bytecodes. Jazelle DBX or Direct Bytecode eXecution is used in mobile phones and other consumer devices for high performance Java execution without affecting memory or battery.
F – Vector Floating-point Unit
The Floating Point Architecture in ARM Processors provide execution of floating point arithmetic operations. The Dynamic Range and Precision offered by the Floating Point Architecture in ARM Processors are used in many real time applications in the industrial and automotive areas.
S – Synthesizable
The ARM Processor Core is available as source code. This software core can be compiled into a format that can be easily understood by the EDA Tools. Using the processor source code, it is possible to modify the architecture of the ARM Processor.
An example in ARM7 family of processors is the ARM7TDMI-S architecture based LPC2148 Processor.
ARM Processors can be divided into ARM Classic Processors, ARM Embedded Processors and ARM Application Processors.
ARM Classic processors include ARM7, ARM9 and ARM11 families and ARM7TMDI is still the highest shipping 32-bit processor. ARM7 based processors are still used in many small and simple 32-bit devices.
Even though ARM7 or other classic ARM Processors can be used for small scale embedded systems, newer embedded systems are built using the advanced ARM embedded processors or the Cortex-M processors and Cortex-R Processors.
ARM Cortex-M Processors have a Microcontroller profile while the Cortex-R Processors have a Real time profile.
ARM Cortex-M Processors are energy efficient, simple to implement and are mainly developed for advanced embedded applications. ARM Cortex-M Processors are further divided into several processor cores like Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4 and Cortex-M7.
ARM Cortex-R Series of processors provide solution for real time embedded systems. They provide high reliability, high fault tolerance and real time responses. Cortex-R series of processors are used in systems where high performance is required and timing deadlines are important.
The Cortex-R family includes the processor cores like Cortex-R4, Cortex-R5, Cortex-R7 and Cortex-R8.
ARM Cortex-A Series of processors are the highest performance processors from ARM. They are used in powerful mobile devices, compelling technology products like network devices, consumer appliances, automation systems, automobiles and other embedded systems.
The Cortex-A Processors are again divided into high performance, high efficiency and ultra-high efficiency type processors. Each sub division has several types of processor cores.
Where to begin?
It is advised by many embedded system developers that LPC214X Series is the best processor to begin ARM based application development. In this series of tutorials, we will be dealing with LPC2148 Processor.
It is an ARM7 based processor with ARM7TDMI-S Processor core. It is based on ARMv4 architecture and the significant changes from its previous architecture is the introduction of the 16-bit Thumb instructions.
The development boards and the development toolchain (software) for LPC2148 processors are easily available.
Keil is software development environment for ARM processors. It includes the complete development toolchain like integrated development environment (IDE), compiler, debugger and simulator.