ARM PROCESSORS FAMILY INTRODUZIONE ALL`ISA ARM

1
ARM PROCESSORS FAMILY
‰
‰
‰
‰
‰
INTRODUZIONE ALL’ISA ARM
PIPELINES UTILIZZATE DAI PROCESSORI ARM
ARM PROCESSOR CORES
ARM CPU CORES
EMBEDDED ARM-BASED SYSTEMS
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
2
INTRODUZIONE ALL'ISA ARM
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
PROCESSORI ARM
3
• I processori della famiglia ARM sono largamente i più diffusi per sistemi
integrati di tipo embedded (telefonia cellulare, sistemi wireless, PDA,
ecc)
• L’ISA è principalmente di tipo RISC con qualche concessione al CISC
che non pregiudica l’efficienza della pipeline
• Vedremo che una delle pipelines utilizzate è pressochè identica a quella
del MIPS
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
4
PROCESSORI ARM
EVOLUZIONE DELLA SPECIE
•Il primo processore ARM (Advanced RISC Machine) fu sviluppato a
Cambridge presso la Acorn Computers Limited (successivamente ARM
Limited), fra l’Ottobre 1983 e l’Aprile 1985, sulla base degli studi di
Patterson e Ditzel che portarono alla realizzazione del primo processore
RISC, il Berkeley RISC I.
•L’architettura originale basata su 3 stadi di pipeline e’ rimasta
sostanzialmente invariata fino alla versione 7 compresa (1995).
•Per ottenere un incremento si prestazioni nelle versioni 8 e 9 si e’ passati
ad una pipeline a 5 stadi (simile a quella del MIPS).
•Per un ulteriore incremento di prestazioni si è passati a pipeline più
complesse a 6 stadi e + stadi versioni 10 e 11.
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
5
REGISTRI INTERNI
ƒ USER
MODE
15 GPRs, PC, CPSR
(current
program
status register)
ƒ SYSTEM
MODES
Gli altri 16 registri del
file register più altri 5
status registers sono
usati per le modalità
di
funzionamento
speciali (gestione di
interrupts e chiamate
dal SO)
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r13
r14
r15 (PC)
CPSR
user mode
Utilizzabili in
user mode
Utilizzabili in
system modes
r8_fiq
r9_fiq
r10_fiq
r11_fiq
r12_fiq
r13_fiq
r14_fiq
r13_irq
r14_irq
r13_abt
r14_abt
r13_svc
r14_svc
SPSR_und
SPSR_abt SPSR_irq
SPSR_fiq SPSR_svc
fiq
mode
svc
mode
abort
mode
irq
mode
Architetture dei Sistemi Embedded 2005/06
undefined
mode
S.M. Carta
ARM ISA
6
FORMATO DEL CPSR
• N (Negative), Z (Zero), C (Carry), V (oVerflow)
• mode – control processor mode
• T – control instruction set
– T = 1 – istruzioni 16-bit Thumb
– T = 0 – instruzioni 32-bit ARM standard
• I F – interrupt enables
31
28 27
NZCV
8 7 6 5 4
unused
Architetture dei Sistemi Embedded 2005/06
r13_und
r14_und
IF T
0
mode
S.M. Carta
ARM ISA
7
ECCEZIONI
•
•
I processori ARM supportano un vasta varietà di eccezioni (interrupts, traps e
chiamate da SO)
Gestione delle eccezioni
– Lo stato corrente viene salvato copiando il PC su r14_exc e il CPSR su
SPSR_exc (exc indica il tipo di eccezione, che può essere fiq, svc, abort, irq,
undefined)
– La modalità operativa del processore passa da user mode all’appropriato
exception mode
– Il valore del PC viene forzato ad un valore compreso tra 0016 e 1C16,
corrispondente alla specifica tipologia di eccezione
– L’istruzione corrispondente alla locazione alla quale viene forzato il PC di
solito contiene un branch alla routine di exception handling; l’exception
handler utilizza r13_exc, che è normalmente inizializzato per puntare ad uno
stack in memoria utilizzato per salvare il contenuto di registri
– Al ritorno dall’eccezione viene ripristinata la modalità user
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
8
ORGANIZZAZIONE DELLA MEMORIA
• Array lineare di bytes
numerati da 0 a 232 – 1
• Tipi di dato
– bytes (8 bits)
– half-words (16 bits) – allineati
su 4 byte 2-byte boundaries
(con byte iniziale di indirizzo
pari)
– words (32 bits) – allineati su 4byte (con byte iniziale di
indirizzo multiplo di 4)
Architetture dei Sistemi Embedded 2005/06
Si può selezionare la modalità
big endian o little endian
(quella dell’esempio)
bit 31
bit 0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
6
5
4
2
1
0
word16
half-word14 half-word12
7
3
word8
byte6 half-word4
byte
address
byte3 byte2 byte1 byte0
S.M. Carta
ARM ISA
9
INSTRUCTION SET (1)
ƒ Architettura Load-store
– Gli operandi sono sempre contenuti nei GPRs
– Le uniche istruzioni che coinvolgono la memoria sono quelle di
load/store
ƒ Tipologie di Istruzioni
– Data Processing – utilizzano e modificano il contenuto dei registri
– Data Transfer – copiano il contenuto di locazioni di memoria in registri
(load) o copiano il contenuto di registri in locazioni della memoria
(store)
– Control Flow
• branch
• branch-and-link – salva l’indirizzo di ritorno in modo da ripristinare la corretta
sequenza d’esecuzione
• Chiamate del sistema operativo (interrupt software)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
10
INSTRUCTION SET (2)
•
•
•
•
Istruzioni di data processing a 3 operandi
Esecuzione condizionale di ciascuna istruzione
Istruzioni di load/store multiplo di registri
Capacità di eseguire un’operazione di shift e una operazione di tipo
ALU tramite singola istruzione eseguibile in singolo ciclo (troughput)
• Possibilità di ampliare l’Instruction Set Open utilizzando le operazioni
del coprocessore
• Modalità di funzionamento Thumb che consente una rappresentazione
compressa su 16 bit delle istruzioni
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
11
ISTRUZIONI DI DATA PROCESSING (1)
• Classificazione delle istruzioni di data processing
–
–
–
–
Operazioni Aritmetiche
Operazioni logiche bit a bit
Operazioni di spostamento dati fra registri
Operazioni di comparazione
• Operandi: a 32-bit
• Tre tipologie di operandi:
– Contenuto di registri
– Il secondo operando può essere una costante (immediate)
– Un operando proveniente da un registro può essere shiftato
• Risultato a 32-bit salvato in un registro
– Le operazioni di long multiply fanno eccezione, infatti producono risultati a 64bit
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
12
ISTRUZIONI DI DATA PROCESSING (2)
Arithmetic Operations
Bit-wise Logical Operations
ADD r0, r1, r2
r0 := r1 + r2
AND r0, r1, r2 r0 := r1 and r2
ADC r0, r1, r2
r0 := r1 + r2 + C
ORR r0, r1, r2
r0 := r1 or r2
SUB r0, r1, r2
r0 := r1 - r2
EOR r0, r1, r2
r0 := r1 xor r2
SBC r0, r1, r2
r0 := r1 - r2 + C - 1
BIC r0, r1, r2
r0 := r1 and (not) r2
RSB r0, r1, r2
r0 := r2 – r1
RSC r0, r1, r2
r0 := r2 – r1 + C - 1
Register Movement
Comparison Operations
MOV r0, r2
r0 := r2
CMP r1, r2
set cc on r1 - r2
MVN r0, r2
r0 := not r2
CMN r1, r2
set cc on r1 + r2
TST r1, r2
set cc on r1 and r2
TEQ r1, r2
set cc on r1 xor r2
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
13
ISTRUZIONI DI DATA PROCESSING (3)
• Operandi immediati: è possibile rappresentare valori da 0 a
232 – 1, ma non tutti i valori:
immediate = (0->255) x 22n, 0 <= n <= 12
ADD r3, r3, #3
r3 := r3 + 3
AND r8, r7, #&ff
r8 := r7[7:0],
& indica valore esadecimale
• Shift di uno degli operandi
– E’ possibile shiftare il secondo operando prima che sia combinato
con il primo
ADD r3, r2, r1, LSL #3 r3 := r2 + 8 x r1
ADD r5, r5, r3, LSL r2
r5 := r5 + 2r2 x r3
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
14
ISTRUZIONI DI DATA PROCESSING (4)
ISTRUZIONI DI SHIFT
31
•
•
•
•
•
LSL – Logical Shift Left
LSR – Logical Shift Right
ASR – Arithmetic Shift Right
ROR – Rotate Right
RRX – Rotate Right Extended
by 1 place
0
31
00000
00000
LSL #5
31
LSR #5
0
31
0
1
00000 0
11111 1
ASR #5, positive operand
31
0
0
ASR #5, negative operand
0
31
0
C
C
ROR #5
Architetture dei Sistemi Embedded 2005/06
C
RRX
S.M. Carta
ARM ISA
15
ISTRUZIONI DI DATA PROCESSING (5)
BIT DI CONDIZIONE DEL CPSR
• Ciascuna Istruzione di Data Processing (DPI) può settare i bit di
condizione (N, Z, V, and C) del CPSR
– Per tutte le DPI eccetto la comparazione dev’essere fatta una richiesta specifica
– A livello assembly questo viene implementato agiungendo una S al nome
dell’istruzione
– Esempio (r3-r2 := r1-r0 + r3-r2) addizione a 64 bit fra i regs r1-r0 e r3-r2
ADDS r2, r2, r0
ADC r3, r3, r1
; sommo le 2 word meno significative, il carry viene
scritto su C e tiene conto del riporto
; sommo le 2 word più significative con l’eventuale riporto
• Le operazioni aritmetiche settano tutti i flag (N, Z, C, and V)
• Le operazioni logiche e di spostamento dati settano N e Z
– I valori di V e C vengono preservati
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
16
ISTRUZIONI DI DATA PROCESSING (6)
MOLTIPLICAZIONI
• Esempio (Multiply, Multiply-Accumulate)
MUL r4, r3, r2
r4 := [r3 x r2]<31:0>
MLA r4, r3, r2, r1
r4 := [r3 x r2 + r1]
<31:0>
• NB
– Vengono scritti sul registro destinazione i 32 bit meno significativi, gli
altri bit vengono ignorati
– Non è supportato che il secondo operando sia un immediato
– Il registro destinazione non può coincidere con il primo registro sorgente
– Se l’istruzione è di tipo `S`, il bit V viene preservato e il bit C diviene
privo di significato
• Moltiplicazione per una costante: viene implementata spesso
tramite add e shift
esempio (r0 = r0 * 35)
– ADD r0, r0, r0, LSL #2
RSB r0, r0, r0, LSL #3
Architetture dei Sistemi Embedded 2005/06
; r0’ = r0 x 5
; r0’’ = 7 x r0’
S.M. Carta
ARM ISA
17
ISTRUZIONI DI DATA TRANSFER (1)
• Istruzioni di Load e Store di registri singoli
– trasferimento di un dato (byte, half-word, word) tra un registro e la
memoria
• Istruzioni di Load e Store di registri multipli
– rende possibile il trasfermento di grandi quantità di dati
– utilizzate per la chiamata ed il ritorno da funzione, per salvare/ripristinare
lo stato dei registri, e per copiare blocchi di dati
• Istruzioni di swap di registri singoli
– rende possibile lo scambio del contenuto di un registro con il contenuto di
una locazione di memoria
– usato per implementare semafori
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
18
ISTRUZIONI DI DATA TRANSFER (2)
LOAD E STORE DI SINGOLO REGISTRO
Indirizzamento Register-indirect
Indirizzamento Base+offset
(offset fino a 4Kbytes)
LDR r0, [r1, #4] r0 := mem32[r1 +4]
LDR r0, [r1]
r0 := mem32[r1]
STR r0, [r1]
mem32[r1] := r0
LDRB r0, [r1]
r0 := mem8[r1]
Indirizzamento Auto-indexing
LDR r0, [r1, #4]! r0 := mem32[r1 + 4]
r1 := r1 + 4
Indirizzamento Post-indexed
LDR r0, [r1], #4
r0 := mem32[r1]
r1 := r1 + 4
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
19
ISTRUZIONI DI DATA TRANSFER (3)
UTILIZZO DELL’INDIRIZZAMENTO POST-INDEXED
COPY:
LDR r1, TABLE1
LDR r2, TABLE2
LOOP:
LDR r0, [r1]
STR r0, [r2]
ADD r1, r1, #4
ADD r2, r2, #4
...
TABLE1: ...
TABLE2:…
; r1 punta a TABLE1
; r2 punta a TABLE2
COPY:
LDR r1, TABLE1
LDR r2, TABLE2
LOOP:
LDR r0, [r1], #4
STR r0, [r2], #4
...
TABLE1: ...
TABLE2:…
Architetture dei Sistemi Embedded 2005/06
; r1 punta a TABLE1
; r2 punta a TABLE2
S.M. Carta
ARM ISA
20
ISTRUZIONI DI DATA TRANSFER (4)
TRASFERIMENTO MULTIPLO DI DATI REGISTRI -MEMORIA
LDMIA r1, {r0, r2, r5}
LDMIB r1, {r0, r2, r5}
r0 := mem32[r1]
r2 := mem32[r1 + 4]
r5 := mem32[r1 + 8]
r0 := mem32[r1 + 4]
r2 := mem32[r1 + 8]
r5 := mem32[r1 + 12]
ƒtutti I registri sono copiati tramite una singola
istruzione
ƒl’ordine dei registri non ha importanza
ƒincludendo r15 nella lista dei registri causa
una modifica del flusso di esecuzione
LDMDA r1, {r0, r2, r5} r0 := mem32[r1]
r2 := mem32[r1 - 4]
r5 := mem32[r1 - 8]
LDMDB r1, {r0, r2, r5}
r0 := mem32[r1 - 4]
r2 := mem32[r1 - 8]
r5 := mem32[r1 - 12]
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
21
ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (1)
Branch
B
BAL
BEQ
BNE
BPL
BMI
BCC
BLO
BCS
BHS
BVC
BVS
BGT
BGE
Interpretation
Unconditional
Always
Equal
Not equal
Plus
Minus
Carry clear
Lower
Carry set
Higher or same
Overflow clear
Overflow set
Greater than
Greater or equal
BLT
BLE
Less than
Less or equal
BHI
BLS
Higher
Lower or same
Normal uses
Always take this branch
Always take this branch
Comparison equal or zero result
Comparison not equal or non-zero result
Result positive or zero
Result minus or negative
Arithmetic operation did not give carry-out
Unsigned comparison gave lower
Arithmetic operation gave carry-out
Unsigned comparison gave higher or same
Signed integer operation; no overflow occurred
Signed integer operation; overflow occurred
Signed integer comparison gave greater than
Signed integer comparison gave greater or
equal
Signed integer comparison gave less than
Signed integer comparison gave less than or
equal
Unsigned comparison gave higher
Unsigned comparison gave lower or same
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
22
ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (2)
ESECUZIONE CONDIZIONALE DELLE ISTRUZIONI
• L’esecuzione condizionale è usata per evitare l’utilizzo di istruzioni di
salto nel caso si debba eventualmente evitare l’esecuzione di un
limitato numero di istruzioni
• Esempio
Senza l’esecuzione condizionale
CMP r0, #5
BEQ BYPASS
ADD r1, r1, r0
SUB r1, r1, r2
BYPASS: ...
;
; if (r0!=5) {
; r1:=r1+r0-r2
;}
Con l’esecuzione condizionale
CMP r0, #5
;
ADDNE r1, r1, r0 ;
SUBNE r1, r1, r2 ;
...
Note: add 2 –letter condition after the 3-letter opcode
Architetture dei Sistemi Embedded 2005/06
; if ((a==b) && (c==d)) e++;
CMP r0, r1
CMPEQ r2, r3
ADDEQ r4, r4, #1
S.M. Carta
ARM ISA
23
ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (3)
ISTRUZIONI DI BRANCH AND LINK
•
Branch to subroutine (r14 è utilizzato come link register)
BL SUBR ; branch to SUBR
..
; return here
SUBR:
..
; SUBR entry point
MOV pc, r14 ; return
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
24
ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (4)
INTERRUPT SOFTWARE
• Il supervisore è un programma che opera ad un livello
privilegiato – può fare delle cose che un programma a livello
utente non può fare direttamente
– Esempio: mandare in outptut del testo ad un display
• ARM ISA include SWI (SoftWare Interrupt)
; output r0[7:0]
SWI SWI_WriteC
; return from a user program back to monitor
SWI SWI_Exit
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
25
INSTRUCTION SET COMPLETO (1)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
26
INSTRUCTION SET COMPLETO (2)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
27
INSTRUCTION SET COMPLETO (3)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM ISA
28
INSTRUCTION SET COMPLETO (4)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
29
PIPELINES UTILIZZATE
DAI PROCESSORI ARM
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
30
control
A[31:0]
• Register file –
address register
– 2 porte in lettura, 1 porta in scrittura +
1 porta in lettura e 1 in scrittura
riservate per r15 (PC)
• Barrel shifter – esegue lo shift o il
rotate di un operando di un numero
di bit a scelta
• ALU – esegue le operazioni logiche
ed aritmetiche
• Memory address register +
incrementer
• Memory data registers
• Instruction decoder e logica di
controllo associata
P
C
incrementer
PC
register
bank
instruction
decode
A
L
U
b
u
s
multiply
register
A
&
control
B
b
u
s
barrel
shifter
b
u
s
ALU
data out register
data in register
D[31:0]
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
31
• Fetch
– L’istruzione viene prelevata dalla memoria e caricata nella
pipeline
• Decode
– L’istruzione viene decodificata e I segnali di controllo del
datapath vengono settati per il ciclo successivo. In questo
ciclo l’istruzione utilizza la logica di decodifica ma non il
datapath
• Execute
– L’istruzione utilizza il datapath: vengono gli operandi dal file
register, uno degli operandi viene eventualmente shiftato, la
ALU calcola il risultato che viene scritto (write back) sul file
register
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
ESECUZIONI DELLE ISTRUZIONI SINGOLO CICLO
fetch
sub r2,r3,r6
decode
execute add
fetch
decode
fetch
cmp r2,#3
1
2
Architetture dei Sistemi Embedded 2005/06
3
add r0,r1,#5
execute sub
decode execute cmp
time
S.M. Carta
32
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
ESECUZIONI DELLE ISTRUZIONI DI ACCESSO
ALLA MEMORIA
1
fetch ADD decode
fetch STR
2
3
LA LOGICA DI DECODIFICA GENERA SEMPRE
I SEGNALI DI CONTROLLO UTILIZZATI DAL
DATAPATH NEL CICLO SUCCESSIVO
execute
decode
calc. addr. data xfer
fetch ADD
4
decode
execute
fetch ADD
5
decode
execute
fetch ADD decode
instruction
execute
time
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
ESECUZIONI DELLE ISTRUZIONI DI ACCESSO
MULTIPLO ALLA MEMORIA
ldmia
r0,{r2,r3}
33
fetch decode ex ld r2 ex ld r3
sub r2,r3,r6
fetch
Instruzione ritardata
Lo stadio di decode blocca
L’avanzamento delle istruzioni
nella pipeline finchè LDMIA
non ha terminato
decode ex sub
fetch decodeex cmp
cmp r2,#3
time
Il fetch della SUB avviene al ciclo standard, ma
l’istruzione non viene decodificata finchè
LDMIA non è terminata
Architetture dei Sistemi Embedded 2005/06
34
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
ESECUZIONI DI SALTO
35
La decisione sulla destinazione del salto non può essere presa
fino alla fase di execute
bne foo
fetch decode ex bne ex bne ex bne
sub
r2,r3,r6
2 cicli vengono persi solo se il salto
viene effettuato (Predict Branch
Not Taken)
fetch decode
fetch decode ex add
foo add
r0,r1,r2
time
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
36
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
DATA PROCESSING INSTRUCTION DATAPATH ACTIVITY
¾Reg-Reg
¾Rd = Rn op Rm
¾r15 = AR + 4
AR = AR + 4
¾Reg-Imm
address register
address register
increment
Rd
¾Rd = Rn op Imm
¾r15 = AR + 4
AR = AR + 4
PC
Rn
registers
increment
Rd
Rm
PC
Rn
mult
registers
mult
as ins.
as ins.
as instruction
as instruction
[7:0]
data out
data in
i. pipe
(a) register – register operations
Architetture dei Sistemi Embedded 2005/06
data out
data in
i. pipe
(b) register – immediate operations
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
STR (store register) DATAPATH ACTIVITY
37
¾Compute address
¾AR = Rn op Disp
¾r15 = AR + 4
address register
address register
increment
¾Store data
increment
PC
¾AR = R15
¾mem[AR] = Rd<x:y>
¾If autoindexing
=>
Rn = Rn +/- 4
Rn
registers
PC
registers
mult
mult
Rn
shifter
lsl #0
= A / A +B/
Rd
= A +B/ A -B
A -B
[11:0]
data out
data in
i. pipe
(a) 1st cycle – compute address
byte?
data in
i. pipe
(b) 2nd cycle – store data & auto-index
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 3 STADI (ARM 1 - 7)
38
PRIMI DUE CICLI DI ESECUZIONE DI UN’ISTRUZ DI SALTO
¾Compute target
address
address register
address register
¾AR = r15 + Disp,lsl #2
increment
increment
¾Save return address
(if required)
R14
PC
¾r14 = r15
¾AR = AR + 4
registers
PC
registers
mult
mult
shifter
lsl #2
Il terzo ciclo viene utilizzato
per correggere il valore di
r14. In caso contrario
punterebbe a PC+8 anzichè
a PC+4, avendo continuato
a fare fetch dopo il fetch
del branch
=A
= A+B
[23:0]
data out
data in
i. pipe
(a) 1st cycle – compute branch target
Architetture dei Sistemi Embedded 2005/06
data out
data in
i. pipe
(b) 2nd cycle – save return address
S.M. Carta
39
ARM PIPELINES
ISTRUZIONI THUMB
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
40
ARM PIPELINES
ARM 7 THUMB MANAGEMENT
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
41
ARM PIPELINES
INCREMENTO DELLE PRESTAZIONI
Diminuzione del periodo di clock
Riduzione del CPI
Reimplementazione delle istruzioni a piu’ cicli
Riduzione degli stalli della pipeline
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM PIPELINES
PIPELINE A 5 STADI
pc
(ARM 8,9, strongARM) next
• Architettura di Harvard
• La pipeline e’ simile a quella MIPS,
le differenza riguardano:
– PC contenuto nel file dei registri, il che
implica 2 porte in scrittura e 3 in lettura,
al posto di 1 e 2
– Barrel shifter
– Moltiplicatore
– Modulo per la gestione di pre e post
indirizzamento autoincrementante che
consenta il load e store di piu’ dati nella
stessa istruzione
42
+4
I-cache
fetch
pc + 4
pc+8
I decode
instruction
decode
r15
register read
LDM/
STM postindex
+4
immediate
fields
mul
shift
pre-index
reg
shift
ALU
execute
forwarding
paths
mux
B, BL
MOV pc
SUBS pc
byte repl.
load/store
address
buffer/
data
D-cache
rot/sgn ex
LDR pc
register write
Architetture dei Sistemi Embedded 2005/06
write-back
S.M. Carta
ARM PIPELINES
PIPELINE A 5 STADI next
pc
+4
(ARM 8,9, strongARM)
ƒ Fetch
ƒ Decode
• L’istruzione viene decodificata
• Vengono letti i 3 operandi
ƒ Execute
• Un operando viene shiftato e la
ALU genera il risultato, oppure
• Viene calcolato un indirizzo
ƒ Buffer/data (Memory)
B, BL
MOV pc
• Accesso alla memoria dati
SUBS pc
(load, store)
ƒ Write-back
• Scrivo il risultato sul reg file
43
I-cache
fetch
pc + 4
pc+8
I decode
instruction
decode
r15
register read
LDM/
STM postindex
+4
immediate
fields
mul
shift
pre-index
reg
shift
ALU
execute
forwarding
paths
mux
byte repl.
load/store
address
D-cache
buffer/
data
rot/sgn ex
LDR pc
register write
Architetture dei Sistemi Embedded 2005/06
write-back
S.M. Carta
ARM PIPELINES
44
CONFRONTO FRA LE 2 PIPELINES
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
45
ARM PIPELINES
CONFRONTO FRA LE 2 PIPELINES
• L’architettura a 3 stadi esegue in sequenza la decompressione delle
istruzioni thumb e quindi la decodifica. Nella pipeline a 5 stadi non c’è
tempo sufficiente, e la decodifica dei 2 tipi di istruzioni avviene in
parallelo
• Lo stadio di memory della pipeline a 5 stadi non ha uno stadio equivalente
nell’altra pipe, poichè l’accesso in memoria viene eseguito con un ciclo di
execute addizionale che provoca uno svuotamento della pipeline.
• L’incremento di prestazioni richiesto al sottosistema di memoria e’
notevole
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
46
ARM PIPELINES
PIPELINE A 6 STADI (ARM10)
• Consente frequenze di clock ancora piu’ elevate (50%)
• Ottimizzazione degli stadi di fetch, memory ed execute, duplicazione
dello stadio di decode
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
47
ARM CORES
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
48
ARM CORES
TIPOLOGIE DI SISTEMI VLSI CHIP e COREs
Un sistema VLSI, puo’ essere commercializzato in 3 diverse
forme
– Chip
– Core Hardware (Silicon IP)
– Core Software (Soft IP)
• Nello sviluppo di System on Chip è indispensabile avvalersi
di moduli IP (cores) sviluppati da terzi
• I processori e le CPU della famiglia ARM sono sempre
commercializzati sotto forma di cores (a parte lo
strongARM)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
49
ARM PROCESSOR CORES
ARM7TDMI
• E’ attualmente il core ARM piu’ diffuso. E’ lo standard de-facto per
applicazioni di telefonia mobile digitale
• Viene commercializzata sotto forma di macrocella customizzata per la
tecnologia richiesta dall’acquirente
• Supporta il subset di istruzioni a 16 bit THUMB, on-chip debug,
EmbeddedICE hardware, moltiplicazione a 64 bit
• E’ stato fabbricato in numerose tecnologie CMOS diverse, con frequenze
di clock fino a 100 MHz (66 typ) e alimentazioni fino a 0.9 V (3.3 typ)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
50
ARM PROCESSOR CORES
ARM7TDMI
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
51
ARM PROCESSOR CORES
ARM7TDMI
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
52
ARM PROCESSOR CORES
ARM7TDMI-S
• E’ la versione soft-IP dell’ARM7TDMI, viene commercializzata come
progetto verilog o VHDL e il porting sulla tecnologia target viene
eseguito dall’acquirente tramite sintesi
• Il processo di sintesi prevede la possibilta’ di introdurre modifiche
architetturali quali l’omissione del modulo embeddedICE e/o la
sostituzione del moltiplicatore a 64 bit con uno a 32 bit, con una
conseguente riduzione della funzionalita’ ma anche di dimensioni e
consumi
• La versione completa e’ il 50% piu’ estesa e consuma il 50% in piu’
rispetto alla versione hard a parita’ di tecnologia
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
53
ARM PROCESSOR CORES
ARM9TDMI
• E’ il core ARM per applicazioni che richiedano prestazioni tanto elevate
da non poter essere soddisfatte dall’architettura 7
• Viene commercializzata sotto forma di macrocella customizzata per la
tecnologia richiesta dall’acquirente
• Ha le stesse funzionalita dell’ARM7TDMI, con la pipeline del processore
che passa da 3 a 5 stadi e un embeddedICE hardware piu’ evoluto
• E’ stato fabbricato in tecnologie CMOS a 0.35, 0.25 e 0.18 micron, con
alimentazioni fino da 3.3 a 1.2 V
• Necessita di 2 cache separate (istruzioni e dati) per poter sfruttare la
propria potenza elaborativa
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
54
ARM PROCESSOR CORES
ARM9TDMI
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
55
ARM PROCESSOR CORES
ARM9TDMI-S
• E’ la versione soft-IP dell’ARM9TDMI, viene commercializzata come
progetto verilog o VHDL e il porting sulla tecnologia target viene
eseguito dall’acquirente tramite sintesi
• Implementa una versione piu’ estesa dell’instruction set rispetto alla
versione hard, con l’inclusione di istruzioni per il signal processing
• E’ il 30% piu’ estesa rispetto alla versione hard a parita’ di tecnologia
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
56
ARM CPU CORES
CORES PIU’ EVOLUTI
• Oltre a core che includono semplicemente il processore la ARM
commercializza anche core che includono i moduli che spesso è
indispensabile integrare sul chip: memorie Cache, Memory Management
Units (MMU) ed (eventualmente) bus controllers per la gestione di
periferiche di I/O
• Tali moduli per poter raggiungere il massimo delle prestazioni potenziali
del sistema devono essere fortemente ottimizzati per il processore ospite.
Ha quindi senso per una società che intenda realizzare un System on Chip
lasciare al fornitore del processore l’onere di sviluppare anche questi
moduli
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
57
ARM CPU CORES
ARM710T
• Core hardware commercializzato dalla ARM limited
• Il core comprende i seguenti moduli
– Pipeline a 3 stadi + circuiteria di debug e embeddedICE (ARM7TDMI)
– Un cache unificata per i dati e le istruzioni di 8Kbyte di tipo 4-way associative, write
back
– MMU
– Coprocessore
– Controller per il bus delle periferiche di I/O (AMBA)
• Ne esistono altre 2 versioni con caratteristiche simili (ARM720T e
ARM740T)
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
58
ARM CPU CORES
ARM710T
53
N/A
11.7
240
0-59
Architetture dei Sistemi Embedded 2005/06
220
S.M. Carta
59
ARM CPU CORES
strongARM
• CPU stand-alone sviluppata dalla Arm limited e da Digital Equipment
Corporation. La versione attualmente in commercio, la SA-110, è prodotta
da Intel, che ha acquisito la Digital nel 1998
• Il chip comprende i seguenti moduli
– Pipeline a 5 stadi con register forwarding
– Esecuzione in singolo ciclo di tutte le istruzioni a parte la moltiplicazione a 64 bit e i
trasferimenti multipli di registri
– Un cache per le istruzioni di 16Kbyte di tipo 32-way associative
– Un cache per i dati di 16Kbyte di tipo 32-way associative, write back
– MMU con gestione di TLB separata per istruzioni e dati
• Tra i processori aventi lo stesso livello di prestazioni, dimensioni e
consumi a parità di tecnologia sono fra i più ridotti
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
60
ARM CPU CORES
strongARM
16 Kbytes
16 Kbytes
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM CPU CORES
61
StrongARM
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
62
ARM CPU CORES
ARM940T
• Core hardware commercializzato dalla ARM limited
• Il core comprende i seguenti moduli
–
–
–
–
–
–
Pipeline a 5 stadi + circuiteria di debug e embeddedICE (ARM9TDMI)
Un cache per le istruzioni di 16Kbyte di tipo 16-way associative
Un cache per i dati di 16Kbyte di tipo 16-way associative, write back
MMU unificata per dati e istruzioni
Interfaccia per la gestione di un coprocessore esterno
Controller per il bus delle periferiche di I/O (AMBA)
• Ne esiste un’altra versione con caratteristiche simili, l’ARM920T, che
supporta WindowsCE
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
63
ARM CPU CORES
ARM940T
16 Kbytes
16 Kbytes
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
ARM CPU CORES
64
ARM940T
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
65
EMBEDDED ARM-BASED SYSTEMS
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
66
EMBEDDED ARM-BASED SYSTEMS
OneC VWS22100 GSM chip
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
67
EMBEDDED ARM-BASED SYSTEMS
Typical GSM handset architecture
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
68
EMBEDDED ARM-BASED SYSTEMS
ERICSSON - BLUETOOTH BASEBAND CONTROLLER
Architetture dei Sistemi Embedded 2005/06
S.M. Carta
69
EMBEDDED ARM-BASED SYSTEMS
BLUETOOTH SYSTEM
Architetture dei Sistemi Embedded 2005/06
S.M. Carta