Architettura degli
ARM
by Giuseppe Ranieri
Un po’ di storia dell’ ARM …



Nato da un progetto dell’ Acorn iniziato nel 1983 dopo il
grande successo del BBC Micro rilasciato nel 1982
Siccome l’Acorn era una azienda non comparabile alle
aziende americane cercò di sviluppare un processore
che soddisfacesse i requisiti interni dell’azienda e che
avesse un basso costo di produzione da questo progetto
nacque l’ARM1 usato solo per scopi interni
Nel 1987 venne lanciato commercialmente la prima
piattaforma ARM Archimedes in versione ARM2 8mhz
… Un po’ di storia dell’ ARM




La VLSI Technology Inc compagnia partner della
Acorn nello sviluppo dell’ARM convince una fetta
di mercato ad utilizzare questo tipo di processori
a basso costo
1989 esce l’ARM3 versione potenziata dell’
ARM2 integrando 4kbit di cache e un frequenza
di clock di 25mhz
Nel 1990 nasce la ARM Ltd composta da Acorn
VLSI e Apple
…..
Perchè l’ARM è cosi diffuso?
E’ uno dei processori con più licenze di
sviluppo esistente
 E’ usato in cellulari palmari per le sue
performance e bassi consumi
 Ha estensioni interessanti come Jazelle

Dati sull’ARM
ARM:
 32-bit RISC-processor core (istruzioni a 32-bit )
 37 registri di interi a 32-bit (16 )
 Pipeline (ARM7: 3 stadi)
 Cache (a seconda dell’implementazione)
 Von Neuman-type bus structure (ARM7), Harvard
(ARM9)
 Tipi di dato 8 / 16 / 32 -bit
 7 modi di operare (usr, fiq, irq, svc, abt, sys, und)
 Struttura semplice -> buon rapporto fra velocità /
consumo
CISC e RISC: breve confronto

C.I.S.C. : Complex Instruction Set Computing
in voga quando c’era bassa disponibilità di memoria
 facilità nel debugging dell’assembler
 istruzioni di alta complessità
 basso numero di registri


R.I.S.C. : Reduced Instruction Set Computing

più semplice scalabilità della frequenza
 istruzioni implementate in modo efficiente
 alto numero di registri
 maggiore efficienza
Instructions set supportati
Sono due più varie estensioni:
 ARM
 Thumb
 Altre estensioni (es: Jazelle)
Thumb Instruction set
È un sottoinsieme delle istruzioni ARM
ricodificato
 È composto da istruzioni di 16 bit(invece di
32)
 Non contiene alcune istruzioni per gestire
le eccezioni

Tipi di Dato
byte
 halfword.(allineati a 2byte.)
 word (allineati a 4byte.)

Registri
L’ARM ha un set di 37 registri
 31 per usi generali
 6 registri di stato
In ogni istante sono visibili sempre 15
registri di tipo generale e uno o 2 registri di
stato
Registri
I primi 7 registri (R0-R7) sono unbanked
(puntano sempre alle stesse locazioni
fisiche)
 I successivi registri da R8 a R14 sono
banked (a seconda della modalità puntano
a locazioni fisiche diverse)

Registri
Registri generici
I primi 4 registri R0 – R3 sono
normalmente usati per il passaggio di
parametri
 Normalmente registri da R4 a R8 , R10 e
R11 sono utilizzati per le variabili locali
 R12 è un registro speciale usato dai linker
può essere anche usato per tenere valori
temporanei

Load e Store
Esistono 2 set di istruzioni load e store:
 uno
che serve per caricare parole da 32 bit o
byte senza segno
 un altro che serve per caricare “mezzeparole”
da 16 bit con e senza segno o byte
Load e Store: tipi di indirizzamento
In entrambi i tipi di istruzioni il modo di
indirizzamento è formato da due parti:

il Base Register

l’offset
L’offset può essere di tipo

Immediato

Registro

Registro Scalato
Load e Store: Offset
L’offset precedentemente calcolato può
essere utilizzato in tre modi differenti:
 Offset
 Pre-Index
 Post-Index
Load e Store: Formato Istruzione
Load e Store: Esempi
Registri di stato

CPSR (SPSR)

current program status register
n: 1 se il risultato dell’operazione è positivo 0 se negativo
z: 1 se il risultato è 0, 0 altrimenti
c: In un addizione 1 se cè un unsigned overflow 0 altrimenti
In una sottrazione 0 se cè unsigned underflow 1 altrimenti
nello operazioni che fanno shift è settato come l’ultimo bit shiftato
v: 1 se cè un signed overflow /signed underflow o altrimenti
q: utilizzato per l’overflow delle istruzioni DSP
Registri di stato: Control Bit
I, F, T, M[4:0] sono i bit di controllo
 I e F servono per abilitare disabilitare gli
interrupt
 T serve per passare dal set di istruzioni
ARM a set di istruzioni Thumb
 M[4:0] determinano la modalità di stato del
processore
Modalità del Processore
Modalità del Processore
Questa è la tabella dei
set di registri attivi nei vari
modalità del processore
Modalità del Processore
Sono le seguenti:

User (usr)


FIC (fic}



implementa la memoria virtuale e la protezione della memoria
System (sys}


modalitá privilegiata per la gestione degli interrupt
Supervisor (svc)
 modalità privilegiata per l'esecuzione del Sistema Operativo
Abort (abt)


modalità privilegiata per gestione di flussi dato ad alta velocitá
IRQ (irq)


modalità standard di esecuzione del processo
modalità privilegiata per l'esecuzione dei task del S.O.
und

serve per il supporto all’ emulazione software dei coprocessori
Cos’ è Jazelle
Una tecnologia per l’esecuzione del
bytecode direttamente via hardware
Jazelle continua
Ha i seguenti caratteristiche:
 è una semplice modifica al codice della JVM e non ne
incrementa le dimensioni
 ha una resa di basso consumo dell’oltre 87% in meno di
una pura emulazione anche rispetto alla JIT
 aumenta le prestazioni del codice java di oltre 95%
 è implementata via hardware in soli 12mila transistor
 è supportata dall’ ultima versione del core ARM v11
 supporta in hardware 140 istruzioni java le restanti 94 le
emula con routine ARM
Jazelle Architecture
La modalità Jazelle
è stato aggiunto un bit al CSPR register
il bit J:

24
J
è 1 quando ci si trova in modalità di esecuzione java
La modalità Jazelle
Per poter entrare in modalità Jazelle è stata
introdotta una nuova istruzione: BXJ.
Indica il P.C. java da cui partire
o continuare che verrà settato nel registro
R15 del processore in modalità Jazelle
Uso dei registri in Modalità Jazelle

R0-R3


R4


uso libero/ Java return adress
R13


riservati alla JVM
R12,R14


Puntatore a Java Constant Pool
R9-R11


Puntatore alle variabili Java
R8


Java Stack Pointer
R7


puntatore agli Software Handler
R6


puntatore a this
R5


gestione dello stack delle espressioni java
Machine stack pointer
R15

Java P.C.
Eccezioni
Esistono vari tipi di eccezioni supportate dall’ ARM
(in ordine di priorità):
1. Reset
2. Data Abort
3. FIQ
4. IRQ
5. Prefetch Abort
6. Undefined instruction
SWI
Set di Istruzioni
Questo è lo schema
riassuntivo dei
formati delle
istruzioni ARM
Conditional Field
Come avete visto prima quasi tutte le
istruzioni sono condizionali ovvero iniziano
con un campo “cond” che definisce se
quella istruzione verrà eseguita o no a
seconda dei vari bit di stato del registro
CPRS
Conditional Field
Formato di una istruzione condizionale
Questo è il set di tutti gli
opcode di condizione
Branching
Il Branching ovvero il controllo del flusso del
programma viene fatto con l’ ausilio di
alcune speciali istruzioni e del campo
Cond:
 B,BL Branch, Branch and Link
 BLX Branch with Link and Exchange
 BX Branch and Exchange Instruction Set
Branching: Esempi
Branching: chiamata e ritorno
Branching: if then else
Branching: Loop
Bibliografia

Jumping with Jazelle
(http://www.fawcette.com/javapro/2002_06/magazine/columns/javatogo/default.aspx)

ARM Architecture Reference Manual (http://www.arm.com)
ARM architecture
Jazelle™ Technology (http://www.arm.com)
The ARM11 Microarchitecture (http://www.arm.com)

ARM Architecture Instruction Set Extensions



(http://www.convergencepromotions.com/ARM/catalog_04/395.htm)

Procedure Call Standard for the ARM® Architecture
(http://www.arm.com)