ARM - Advanced RISC
Machines
RISC- Reduce Instruction Set
Computers
ARM Design Philosophy
 ARM Core uses a RISC
architecture
 ARM licenses its cores out and
other companies make
processors based on its cores
and
 ARM processor core based
microcontrollers
 Von Neumann architecture.
ARM Design Philosophy
Reduce power consumption
High code density
Price sensitive
Reduce the area of the die taken up
by the embedded processor
 Incorporated hardware debug
technology (ICE)
ARM processor core based
microcontrollers
 Key component of many 32 bit
embedded systems and Portable
Consumer devices
 ARM1 prototype in 1985
 One of the ARMs most successful
cores is the ARM7TDMI,provides high
code density and low power
consumption.
 Latest ARM core is ARM9TDMI
ARM7TDMI
 T Thumb 16 bit compressed instruction
set
 D  on chip Debug request
 M  enhanced Multiplier(yields 64 bit
result)
 I  Embedded ICE hardware to give on-chip
breakpoint and watchpoint support
ICE  in circuit emulator for debugging
ARM Architecture Versions
 Version 1
 26 bit addressing, no multiply or coprocessor
 Version 2
 Includes 32 bit result multiply co-processor
 Version 3
 32 bit addressing
 Version 4
 Add signed, unsigned half word and signed byte
load and store instructions
 Version 4T
 16 bit Thumb compressed form of instruction is
introduced
ARM Architecture Versions
cont..
 Version 5T
 Superset of 4T adding new instruction
 Version 5TE
 Add signal processing extension
 Examples
ARM6: v3
ARM7: v3, ARM7TDMI:V4T
StrongARM: v4
ARM 9E-S:v5TE
ARM9TDMI
The RISC Design Philosophy
 RISC is characterized by limited number of
instructions
 A complex instruction is obtained as a
sequence of simple instructions.
 So, in RISC processor, software is complex but
the processor architecture is simple.
 Large number of registers are required.
 Pipelined instruction execution.
 Ex : ARM, ATMEL AVR, MIPS, Power PC etc
The CISC Design Philosophy
 CISC is characterized by large
instruction set.
 The aim of designing CISC processors
is to reduce software complexity by
increasing the complexity of
processor architecture.
 Very small number of registers are
available.
 Ex : Intel X86 family, Motorola 68000
series.
RISC 4 major design rules
1. Instructions
. Reduced Number of Instructions
. Execute in a single cycle
. The compiler synthesizes
complicated operations
. Each instruction is a fixed length
2. Pipelines
 The processing of instructions is
broken down into smaller units that
can be executed in parallel by
pipelines
 Pipeline advances by one step on
each cycle for maximum throughput
3. Registers
 Have a large general purpose
register set
 Any register can contain either data
or address
 CISC has dedicated registers for
specific purposes.
4. Load Store Architecture
 Separate load and store instructions
transfers data between the register
bank and external memory
ARM Architecture
 Based on RISC architecture with
enhancements to meet requirements
of embedded applications
o
o
o
o
o
o
A large uniform register file
Load/store architecture
Uniform and fixed length instructions
32 bit processor
Good speed/power consumption ratio
High code density
Load-store architecture
 Instruction set will only process (add,
subtract and so on) values which are in
registers and place the results into a
register
 The operations which apply to memory
state are
the ones which copy memory values into
registers(load instructions)
or copy register values into memory
(store
instructions)
Load-Store Architecture
cont
ARM instructions fall into one of the
following categories
1. Data processing instructions(use and
change only register values)
2. Data transfer instructions(load and
store instructions)
3. Control flow instructions[branch
instructions, branch and link
instructions(similar to interrupt) or
supervisor calls
Instruction set for Embedded
Systems
 Variable cycle execution for certain
instructions
 Inline barrel shifter leading to more
complex instructions
 Thumb 16 bit instructions
 Conditional execution
 Enhanced Instructions
Enhancements to Basic RISC Features
 Control over ALU and shifter for every
data processing operations to maximize
their usage
 Auto-increment and auto-decrement
addressing modes to optimize program
loops
 Multiple Load/Store data elements to
maximize throughput
 Conditional execution of instruction to
maximize throughput
Overview: Core Data Path
 Data items are placed in register file
 No data processing instructions directly
manipulate data in memory
 Instructions typically use two source
registers and single result or destination
register
 A Barrel shifter on the data path can preprocess data before it enters ALU
 Increment/Decrement logic can update
register content for sequential access
independent of ALU
Multiply and
Accumulate
Registers
 General purpose registers hold either data
or address
 All registers are of 32 bits
 In user mode 16 data registers and 2
status registers are visible
 Data registers: r0 to r15
 Three registers r13, r14 and r15 perform
special functions
 r13: stack pointer
 r14: link register (where return address is
stored whenever a subroutine is called)
 r15: program counter
Registers contd..
 Depending upon context r13 and r14
can also be used as GPR
 Any instruction which use r0 can as
well be used with any other GPR(r1r13)
 In addition, there are two status
registers
o CPSR: Current Program Status Register
o SPSR: Saved Program Status Register
Program Status Registers
31
28 27
N Z C V
23
16 15
U
f
24
d
s
Condition code flags
 N = Negative result
from ALU
 Z = Zero result from
ALU
 C = ALU operation
Carried out
 V = ALU operation
oVerflowed
e
x
I F T
mode
c
 Interrupt Disable bits.
 I = 1: Disables the IRQ.
 F = 1: Disables the FIQ.
 T Bit
 Architecture xT only
 T = 0: Processor in ARM
state
 T = 1: Processor in
Thumb state
 Mode bits
 Specify the processor
mode
Processor modes
 Processor modes determine
 Which registers are active and
 Access rights to CPSR register itself
 Each processor mode is either
 Privileged: full read-write access to the
CPSR
 Non-privileged: only read access to the
control field of the CPSR but read-write
access to the condition flags
Processor modes contd..
 ARM has seven modes
 Privileged: abort, fast interrupt request,
interrupt request, supervisor, system
and undefined
 Non-privileged: user
 User mode is used for program and
applications
Privileged modes
 Abort: when there is a failed attempt
to access memory
 Fast Interrupt Request (FIQ) &
interrupt request: correspond to
interrupt levels available on ARM
 Supervisor mode: state after reset
and generally the mode in which OS
kernel executes
Privileged modes contd..
 System mode: special version of user
mode that allows full read-write
access of CPSR
 Undefined: When processor
encounters an undefined instruction
Banked Registers
 Register file contains in all 37
registers
 20 registers are hidden from program at
different times. These registers are
called banked registers
 Banked registers are available only
when the processor is in a particular
mode
 Processor modes (other than system mode)
have a set of associated banked registers
that are subset of 16 registers
 Maps one-to-one onto a user mode register
Register Banking
Current Visible
Current Visible
Registers
Registers
User Mode
User
CPSR
copied
into
SPSR
r0
r1r0
r2r1
r3r2
r4r3
r5r4
r6r5
r7r6
r8r7
r9r8
r10r9
r10
r11
r11
r12
r12
r13 (sp)
r13(lr)
(sp)
r14
r14(pc)
(lr)
r15
r15 (pc)
cpsr
spsr
cpsr
User Registers replaced by
banked registers
Banked out
Banked out
Registers
Registers
Abort
FIQ
FIQ
IRQ
r8
r8
r9
r9
r10
r10
r11
r11
r12
r12
r13 (sp) r13r13
(sp)
(sp)
r13 (sp)
r14 (lr) r14r14
(lr)
(lr)
r14 (lr)
spsr
spsr
spsr
IRQ
SVC
r13
r13
r14
r14
(sp)
(sp)
(lr)
(lr)
spsr
spsr
SVC
Undef Undef
Abort
r13
(sp)(sp)
r13 (sp)
(sp) r13 r13
r14
(lr)(lr)
r14 (lr)
(lr) r14 r14
spsr
spsr
spsr
spsr
SPSR
 Each privileged mode (except system
mode) has associated with it a SPSR
(Stored Program Status Register)
 This SPSR is used to save the state of
CPSR (Current Program Status
Register) when the privileged mode
is entered in order that the user state
can be fully restored when the user
process is resumed
Mode changing
 Mode changes by writing directly to
CPSR or by hardware when the
processor responds to exception (any
condition that needs to halt the
normal sequential execution of
instructions) or interrupt
 To return to user mode a special
return instruction is used that
instructs the core to restore the
original CPSR and banked registers