Professional Documents
Culture Documents
History
Started in 1983 as a project for Acorn
Computers Ltd
The original processor was an advanced
MOS Technology 6502 (an 8-bit
microprocessor designed by MOS
Technology in 1975 considered the least
expensive at the time
History
ARM1
Completed in 1985
ARM2
First “real” production systems
32-bit data bus
26-bit address space
16 32-bit registers (one of these served as the program counter
Only 30000 transistors
Did not have microcode
No cache
Performed better than the 286
4 million instructions per second
ARM3
Consisted of a 4kb cache
History
In the late 1980’s Apple Computer started
working with Acorn and the company
became Advanced RISC Machines
ARM6
Apple used the ARM6-based ARM 610 as the
basis for the Apple Newton PDA
History
ARM6
35000 transistors
ARM7TDMI
Most successful implementation
DEC licensed this design and produced the
StrongARM
StrongARM
233MHz
Drew only 1 watt of power
Took over by Intel in a lawsuit and since then Intel
developed the XScale (found in products such as the
Dell Axim)
History
The following companies all licensed the basic
ARM design for various uses
Motorola
IBM
Texas Instruments
Nintendo
Philips
VLSI
Sharp
Samsung
Uses
Hard-drives
Mobile phones
Routers
Calculators
Toys
Accounts for over 75% of embedded
CPU’s
Introduction to ARM
RISC design
Most of the instructions can be executed in one
clock cycle
Low power consumption (no heat sinks or fans
required)
Easy to program
Allows for pipelining
Thumb
NEON
Jazelle
Registers
16 registers (R0 to R15
R13 – used for stack operations
R14 – used for the link register (used for
storing return addresses in the
construction of sub routines
R15 – the program counter
ARM Assembly
MODE 28 :REM If you have an A310 etc. try MODE 15
DIM mcode% 1024 :REM This line reserves 1024 bytes of memory
REM which start at position mcode%
P%=mcode% :REM P% is a reserved variable which acts as a pointer
REM while assembling the code
REM we wish the code to start at mcode%
[ :REM Note this is the square bracket (to the right
REM of the P key).
REM This tells BASIC to enter the ARM assembler, all
REM commands from now are in ARM assembler.
ADD R0,R1,R2 :REM Our ARM code instruction MOV PC,R14
:REM This instruction copies the value in R14 (link
REM register contains the return address to return to
REM BASIC) into the program counter hence
REM jumping to the next BASIC line after running
REM our ARM code program.
] :REM Leave the ARM code assembler and return to BASIC.
ARM Assembly
INPUT"Enter an integer value "B%
INPUT"Enter another integer value"C%
REM These two lines therefore will give their values to R1 and R2.
A%=USR(mcode%) :REM This line runs the ARM code starting
REM at mcode%
REM (our assembled code) returning the
REM value in R0 to BASIC.
PRINT"The answer is ";A% :REM Print the answer. END
ARM Assembly
MODE28
DIM mcode% 1024
P%=mcode%
[
ADD R0,R1,R2
MOV PC,R14
]
INPUT"Enter an integer value "B%
INPUT"Enter another integer value"C%
A%=USR(mcode%)
PRINT"The answer is ";A%
END
Listing
00008FD8
00008FD8 E0810002 ADD R0,R1,R2
00008FDC 1A0F00E MOV PC,R14
Another Example
Code in C
int gcd(int i, int j) {
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
Another Example
Assembly Code
b test
loop subgt Ri,Ri,Rj
suble Rj,Rj,Ri
test cmp Ri,Rj
bne loop