Cours Architectures Avancées 2ème Partie
Cours Architectures Avancées 2ème Partie
Cours Architectures Avancées 2ème Partie
Parmi les CPU (IP) les plus utiliss dans les c 32 bits, on trouve
les curs de la socit ARM (Advanced Risc Machine), qui
grce son cur Cortex sest impos comme le leaders des
fournisseurs de curs 32 bits pour les applications embarqus
(75% du march 32 bits)
Chapitre 3 : Architecture
des Processeurs ARM et Cortex
1. Introduction aux Processeurs embarqus
2. Evolution des architectures des curs ARM
10
Jazelle
Jazelle DBX (Direct Bytecode eXecution)
est une technique permettant dexcuter
directement du Bytecode Java dans les
architectures ARM comme un troisime
tat dexcution (et jeu dexcution), en
parallle lARM existant et au mode
Thumb. Le support de cet tat est signal
par le J de larchitecture ARMv5TEJ
11
Thumb-2
La technologie Thumb-2 tend le jeu dinstructions
limit 16 bits de Thumb par des instructions 32 bits
additionnelles afin de donner plus de largesse au jeu
dinstruction. Il en rsulte un jeu dinstructions de
largeur variable.
Thumb-2 a pour vision datteindre une densit de code
proche de Thumb tout en conservant des performance
similaires au jeu dinstructions ARM en mmoire 32 bits.
Thumb-2 est :
25% plus performant que le Thumb-1
26% plus dense que le code ARM standard
13
Floating-point (VFP)
La technologie VFP (Vector Floatting Point : virgule
flottante vectoriel) est une extension de coprocesseur
de type FPU dans les architectures ARM. Il fournit le
calcul des formats de virgule flottante simple et double
prcision bas prix et de virgule flottante en double
prcision remplissant la norme ANSI/IEEE std 754-1985.
VFP fournit des calculs en virgule flottante permettant
daccomplir un vaste spectre dapplications et de
besoins tels que les PDAs, les smartphones, la
compression et dcompression de voix, des graphiques
en trois dimensions ou encore de laudio numrique, des
boitiers multimdias et des applications automobiles. 15
17
Les processeurs de la famille ARM sont tous conus autour dun cur de
processeur standard de type RISC. Ce cur de processeur a t conu de
manire obtenir des implmentation matrielles simples et efficaces,
autorisant ainsi des performances importantes avec de faibles
consommations lectriques.
Les processeurs ARM tant des processeurs RISC, ils sont donc caractriss
par :
Dans cette version, les 6 bits de fort poids du PC sont utiliss pour stocker
ltat du processeur; en consquence, ladressage est limit 26 bits.
19
25
27
28
29
Chapitre 3 : Architecture
des Processeurs ARM et Cortex
1. Evolution des Processeurs embarqus
2. Evolution des architectures des curs ARM
3. Processeur ARM7TDMI : Architecture et
langage assembleur
4. Architecture Cortex-M3
30
31
Incrmenteur
dadresse
BUS dincrmentation
Registre dadresse
CPSR
Banque de Registres
BIGEND
MCLK
nWAIT
Logique de contrle
R4
R1
R5
LR
R3
PC
Multiplieur
32x8
ISYNC
nIRQ
nFIQ
nRESET
ABORT
nTRANS
Dcodage dinstruction
nMREQ
SEQ
LOCK
nM[4:0]
BUS B
Barrel
shifter
nRW
MAS[1:0]
N Z C V Q I F T M4M3M2M1M0
SP
R2
BUS A
Datapath
R0
BUS UAL
nOPC
nCPI
CPA
CPB
Unit Arithmtique
et logique 32 bits
Registre dcriture
Registre de lecture
Registre instruction
34
Le Pipeline dinstructions
La famille ARM7 utilise un pipeline 3 tages pour augmenter la
vitesse du flot dinstructions dans le microprocesseur.
38
39
30
29
28
27
26
Code condition
25
24
23
22
21
Code opration
20
19
18
17
1
6
1
5
1
4
Rn
1
3
1
2
11
10
Rd
Deuxime oprande
31
30
29
28
Code condition
27
26
25
24
Code opration
23
22
21
20
19
18
17
1
6
1
5
1
4
1
3
1
2
11
10
Excution dinstructions
Exemple de programme simple
Considrons le programme suivant qui ralise une addition de
deux valeurs situes en mmoire. Le mot mmoire situ
ladresse contenue dans R0 est additionn au mot mmoire
situ ladresse contenue dans R2, et le rsultat est rang en
mmoire ladresse contenue dans R4.
LDR R1, [R0] @ rcupration du premier mot
LDR R3, [R2] @ et du second mot
ADD R5, R3, R1 @ addition des valeurs
STR R5, [R4] @ et rangement du rsultat
41
E5901000
LDR
R3, [R2]
E5923000
ADD R5, R3, R1
E0835001
STR
R5, [R4]
E5845000
Excution du programme
Considrons que le programme est implant en mmoire ladresse 0x2000,
et que le PC est charg avec cette adresse. Supposons aussi que :
R0 contient 0x3000, R2 contient 0x3004 et R4 contient 0x300C
Le mot mmoire ladresse 0x3000 est 10, et le mot mmoire ladresse
0x3004 est 2
42
0x2000
Bus dadresses A[31..0]
Banque de Registres
BUS UAL
Incrmenteur
dadresse
R0
R4
R1
R5
R2
BUS dincrmentation
RA. : 0x2000
Mmoire
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
CPSR
SP
LR
PC 0x2004
R3
Multiplieur
32x8
BUS B
BUS A
Registre
dcalage
Dcodage dinstruction
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
Registre de lecture
43
0x2004
Bus dadresses A[31..0]
Banque de Registres
BUS UAL
R0
R4
R1
R5
R2
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
CPSR
SP
LR
PC 0x2008
R3
Multiplieur
32x8
Registre
dcalage
Dcodage dinstruction
LDR R1,[R0]
BUS B
BUS A
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x2004
Mmoire
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
Registre de lecture
44
0x2008
Bus dadresses A[31..0]
Banque de Registres
R0 0x3000
0x3000
R1
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R1, [R0]
R4
R5
SP
R2
CPSR
LR
PC
R3
x200C
Multiplieur
32x8
#0
0
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x2008
Mmoire
0x3000
Dcodage dinstruction
LDR R3,[R2]
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
Registre de lecture
45
0x3000
Bus dadresses A[31..0]
Banque de Registres
R0 0x3000
BUS UAL
R1
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R1, [R0]
R4
R5
SP
R2
CPSR
LR
PC
R3
x200C
Dcodage dinstruction
LDR R3,[R2]
BUS B
Registre
dcalage
#0
Multiplieur
32x8
BUS A
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x3000
Mmoire
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
46
0x3000
Bus dadresses A[31..0]
Banque de Registres
BUS UAL
R0
0x3000
R4
R1
0xA
R5
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R1, [R0]
SP
R2
CPSR
LR
PC
R3
x200C
Dcodage dinstruction
LDR R3,[R2]
0xA
Registre
dcalage
#0
Multiplieur
32x8
BUS A
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x3000
Mmoire
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
0x200C
Bus dadresses A[31..0]
Banque de Registres
0x3004
R0
0x3004
R4
R1
0xA
R5
R2
0x3004
R3
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R3, [R2]
SP
CPSR
LR
PC
x2010
#0
#0
Multiplieur
32x8
0x3004
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x200C
Mmoire
Dcodage dinstruction
ADD R5, R3, R1
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
Registre de lecture
48
0x3004
Bus dadresses A[31..0]
Banque de Registres
BUS UAL
R0
0x3004
R4
R1
0xA
R5
R2
0x3004
R3
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R3, [R2]
SP
CPSR
LR
PC
x2010
BUS
#0 B
Multiplieur
32x8
BUS A
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x3004
Mmoire
Dcodage dinstruction
ADD R5, R3, R1
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
49
Banque de Registres
0x02
R0
0x3004
R4
R1
0xA
R5
R2
0x3004
R3
0x2
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
LDR R3, [R2]
SP
CPSR
LR
PC
x2010
BUS
#0 B
Multiplieur
32x8
BUS A
Incrmenteur
dadresse
BUS dincrmentation
Registre dAdresse
Mmoire
Dcodage dinstruction
ADD R5, R3, R1
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
0x2010
Bus dadresses A[31..0]
Banque de Registres
0x0C
R0
0x3004
R1
0xA
R2
0x3004
R3
0x02
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
ADD R5, R3, R1
R4
r5: 0xC
SP
CPSR
LR
PC
x2014
0xA
#0
Multiplieur
32x8
Dcodage dinstruction
STR R5, [R4]
0x02
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x2010
Mmoire
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
RI : Inst. X
Bus de donnes D[31..0]
0x.
51
0x2014
Bus dadresses A[31..0]
Banque de Registres
0x300C
R0
0x3004
0x300C
R4
R1
0xA
r5: 0xC
SP
R2
0x3004
R3
0x02
0x300C 0x (??)
0x3008 0x(??)
0x3000 0xA (10)
Logique de contrle
STR R5, [R4]
CPSR
LR
PC
x2018
Dcodage dinstruction
Inst. X
#0
#0
Multiplieur
32x8
0x300C
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x2014
Mmoire
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst.x)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
Registre dcriture
RI : Inst. Y
Bus de donnes D[31..0]
0x.
52
0x300C
Bus dadresses A[31..0]
Banque de Registres
BUS UAL
R0
0x3004
0x300C
R4
R1
0xA
r5: 0xC
SP
R2
0x3004
R3
0x02
0x300C 0xC
0x3008 0x(??)
0x3004 0x2
0x3000 0xA (10)
Logique de contrle
STR R5, [R4]
CPSR
LR
PC
x2018
0x0C
#0
Multiplieur
32x8
BUS A
Incrmenteur
dadresse
BUS dincrmentation
RA : 0x300C
Mmoire
Dcodage dinstruction
Inst. X
Registre
dcalage
0x2018
0x2014
0x2010
0x200C
0x2008
0x2004
0x2000
0x(inst. Z)
0x(Inst. Y)
0x(Inst. X)
0xE5845000
0xE0835001
0xE5923000
0xE5901000
Unit Arithmtique
et logique 32 bits
RI : Inst. Y
Bus de donnes D[31..0]
0x0C
53
Organisation de la mmoire
et des entres/sorties
Organisation de la mmoire
Lespace mmoire dun processeur ARM est constitu de 232 octets.
Le bus dadresse est utilis par le processeur pour dialoguer avec la
mmoire. Cela concerne aussi bien laccs aux instructions que
laccs aux donnes en lecture et criture.
Le bus de donnes donne, lui, accs trois registres : deux pour
lchange de donnes, un pour les instructions.
Les entres/sorties
Le mode de gestion des entres/sorties sur les processeurs ARM consiste
utiliser des portions de lespace dadressage pour dialoguer avec les
priphriques. On parle de mappage mmoire (memory mapping)
la mise en uvre de ce systme est relativement complexe. Par
exemple, les zones mappes sur les entres/sorties ne doivent pas tre
56
places en cache
Types de donnes
Les types de donnes manipulables par les processeurs ARM sont :
Word : donne code sur 32 bits, soit 4 octets. Il doit imprativement tre aligns sur
une adresse divisible par 4. un mot mmoire est donc rang dans les octets dadresses
A, A+1, A+2 et A+3 avec A divisible par 4.
Halfword : est une donne code sur 16 bits, soit 2 octets. Il doit tre align sur une
adresse paire
Byte : est une donne code sur 8 bits. Il peut tre rang nimporte o en mmoire.
Little-endian ou big-endian
Big-endian : les bits de plus fort poids du mot sont stocks ladresse la plus basse
Little-endian : les bits de plus faible poids sont stocks ladresse la plus basse
Cest par le biais dun signal externe BIGEND que la slection se fait :
1 big-endian, 0 little-endian.
Les accs non aligns : les accs aux mots doivent tre aligns sur des adresses divisibles
par 4, et les accs des demi-mots doivent tre aligns sur des adresses paires. Lorsque ce
nest pas le cas, on dit que laccs est non align. En rgle gnrale, le rsultat dun accs
mmoire non align est non prvisible.
57
Organisation du banc de
registres
37 registres organiss en bancs associs aux modes.
17 registres sont visibles :
13 registres de donnes gnriques (r0 - r12).
Le registre spcifique r13 est rserv comme pointeur de pile
et il est propre chaque mode. Il s'appelle aussi SP.
Le registre spcifique r14 est aussi le registre de retour de
sous programme LR (Link Register). Il vite l'empilage du PC
et est propre chaque mode.
Le registre spcifique r15 est aussi le compteur ordinal PC.
Le registre de statut CPSR (Current Program Status
Register) contient des informations sur l'tat du processeur.
Modes privilgis
Modes dexception
User
System
Supervisor
Abort
Undefined
interrupt
Fast
interrupt
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R7
R7
R7
R7
R7
R7
R7
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
R15
R15
R15
R15
R15
R15
R15
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
59
Registre dtat
31
30
29
28
27
26
25
Code condition
Rserv
M4
M3
M2
M1
M0
Bits de contrle
Registre dtat
Bits de contrle
Ces bits peuvent tre modifis de deux manires :
Lorsquune exception se produit
Par une modification explicite par programme . Ceci nest possible que
lorsque le processeur est en mode privilgi
La significations de ces diffrents bits est la suivante :
I et F : permettent de dsactiver les interruptions IRQ et FIQ
respectivement . Il faut, pour cela mettre le bit correspondant 1
T : indique le jeu dinstructions utilis par le processeur. Lorsquil est
gal 0, le jeu dinstruction utilis est le thumb
M(Mode) : M[4..0] permettent de dterminer le mode de
fonctionnement du processeur.
61
Le Barrel Shifter
LARM7 ne dispose pas,
dinstruction de
dcalages et de rotations
de bits.
A la place, il dispose dun
Barrel Shifter
permettant deffectuer
des dcalages et des
rotations au sein dautres
instructions.
62
64
Les exceptions
Une exception est un vnement provoqu
par une condition exceptionnelle lors de
l'excution de l'instruction courante :
Adresse mmoire invalide
Instruction non autorise ou invalide
Division par zro (faite par un coprocesseur)
Les interruptions
Une demande d'interruption peut tre
dclenche par un vnement associ
un composant matriel :
dbut/fin d'entre/sortie d'un priphrique
chance de temps termine
Vecteur dexceptions /
interruptions
Le vecteur dexceptions /
interruptions contient gnralement
les adresses des fonctions
permettant de traiter de manire
approprie les diffrents
vnements.
Ces fonctions sont appeles
gestionnaires dexceptions ou
68
Excution conditionnelle
Toutes les instructions (ou presque) possde des formes dexcution conditionnelle.
Cela signifie que leur excution aura lieu si les bits de code excution sont
positionns de faon satisfaisante ; dans le cas contraire excution dun NOP
69
extension
Signification
Bits de condition
0000
EQ
EQual : gal
0001
NE
0010
CS/HS
0011
CC/LO
0100
MI
Minus/negative : ngatif
0101
PL
0110
VS
0111
VC
1000
HI
C.Z
1001
LS
C.Z
1010
GE
N.V+N.V
1011
LT
NV
1100
GT
Z.N.V + N.V
1101
LE
Z+NV
1110
AL
1111
70
Instructions de branchement
Branchement classique simple : B (Branch)
B {<condition>} <adresse_cible>
Appel de sous-programme : BL (Branch with link)
BL {<condition>}
<adresse_cible> ; met jour le registre R14 link
register
Versions basculant en mode Thumb : BX (Branch AND eXchange) et
BLX (Branch with Link AND eXchange)
Exemple :
BL
subroutine
CMP r1, #5
MOVEQ r1, #0 ; si r1=5 alors r1=0
subroutine
.
MOV pc,lr ; retour aprs appel de procdure
71
75
78
79
Les instructions de
chargement/rangement
Exemple 1
81
Les instructions de
chargement/rangement
Exemple 2
82
Les instructions de
chargement/rangement
Remarque 1 :
Lors du chargement dun byte non sign dans un
registre, les 24 bits de forts poids sont mis 0
83
Les instructions de
chargement/rangement
Remarque 2
Lorsquun mot est non align (adresse non divisible par quatre), cest
le mot qui contient cette adresse qui est charg dans le registre.
Cependant, le mot subit une rotation pour que le byte correspondant
ladresse utilise devienne le byte le moins significatif.
84
Les instructions de
chargement/rangement
Remarque 3 : Lorsquun mot est stock en mmoire
une adresse non divisible par quatre, les deux derniers
bits de ladresse sont mis 0 et le mot est stock avec
cette adresse.
85
87
Les instructions de
chargement/rangement
Transferts de halfwords (16bits) et de
bytres signs
Remarque 1 : lors dun chargement dun
halfword ou dun byte sign de la mmoire, le
signe est tendu pour donner un mot de 32bits
de mme valeur
88
Les instructions de
chargement/rangement
LDRSB R1, [R2,#6]
Les instructions de
chargement/rangement
Exemple simple : enregistrement du contenu des
registres R0, R3, R4 ladresse mmoire pointe par
R1. Les registres sont stocks dans lordre croissant
des adresses.
91
Les instructions de
chargement/rangement
Les registres sont dposs en mmoire dans lordre
croissant des adresses, de R0 R15, quel que soit
leur ordre dans la liste de linstruction.
Ils sont repris de la mmoire (LDM) dans lordre
inverse, de R15 R0
Par habitude, les registres sont crits dans lordre
croissant dans la liste de linstruction.
Ladresse pointe par Rn doit tre une adresse de
mot, divisible par quatre. Ce pointeur peut tre fixe ou
mis jour aprs les transferts grce au symbole ! .
STMIA R1, { RO, R3, R4 } ; R1 nest pas modifi
STMIA R1 ! , { RO, R3, R4 } ; R1 := R1 + 12 (3 registres de 4
bytes)
92
Les instructions de
chargement/rangement
Quatre manires de disposer les
registres en mmoire :
Dpt en mmoire avec une adresse
montante ou avec une adresse
descendante.
Pointeur sur le dernier lment dpos ou la
premire place libre.
Pour chaque disposition, il existe un LDM et
un STM.
93
Les instructions de
chargement/rangement
Exemples
94
Les instructions de
chargement/rangement
95
Instructions diverses
Instructions diverses
98
Instructions diverses
LDR (LoaD Register)
Il ne faut pas confondre cette pseudo-instruction avec linstruction
ARM ponyme. Elle sera remplace la compilation par une
instruction ARM.
Elle a pour objectif de charger dans un registre une valeur
impossible charger par un MOV ou un MVN, ou pour charger dans
un registre une adresse dune tiquette.
Syntaxe : LDR {<cond>} <Rd>, [<valeur> / <etiquette>]
Remarque : si le LDR est utilis pour charger une valeur acceptable pour un MOV ou
un MVN, cest linstruction correspondante qui est utilise en remplacement du LDR.
Dans le cas contraire, la valeur est range en mmoire et la pseudo instruction LDR
est remplace par une instruction LDR qui chargera cette valeur depuis la mmoire.
De la mme manire, si LDR est utilise pour charger ladresse dune tiquette, cette
adresse sera range en mmoire et la pseudo instruction LDR sera remplace par une
instruction LDR chargeant cette valeur dans le registre destinataire.
Les valeurs ranges en mmoire sont considres comme des constantes, et elles
sont places dans une zone mmoire appele le pool des constantes. Ce pool ne
doit pas tre loign de plus de 4 Ko de tout appel LDR. Dans le cas contraire, une
erreur de compilation sera signale.
99
Instructions diverses
Directives de compilation
Les directives de compilation indiquent au compilateur comment
traiter efficacement le code assembleur
ALIGN : cette directive impose au compilateur daligner ce qui suit sur une
frontire de mot
DCB (.byte) : permet dallouer un ou plusieurs octets en mmoire et de dfinir
leur valeur initial
DCW(.hword) : permet dallouer un ou plusieurs demi-mots de 16 bits en
mmoire et de dfinir leur valeur initial
DCD (.int) : permet dallouer un ou plusieurs mots de 32 bits en mmoire et de
dfinir leur valeur initial
EQU (.equ) : la directive EQU (.equ) permet dassocier une expression un
symbole
Syntaxe ARM : <label> EQU <expression>
_ .fill : permet deffectuer une rservation mmoire avec initialisation ventuelle
Syntaxe : {<label>} .fill <repeat>{, <size>{, <value}}
o <label> reprsente ltiquette associe la dfinition
o <repeat> est le nombre doccurrence rserver en mmoire
o <size> est la taille dune occurrence. Par dfaut, la taille est 1 octet. La taille maximale est
de 8 octets
o <value> est la valeur dinitialisation de chaque occurrence
100
Chapitre 3 : Architecture
des Processeurs ARM et Cortex
1.
2.
3.
4.
101
Architecture Cortex-M3
1. Introduction
Introduction
Processeur 32 bits
Il se base sur un pipeline 3 tages (Fetch, decode, et Execute)
Possde une architecture Havard
Espace dadressage du Cortex-M3 est unique et peut atteindre la
taille de 4 GO
Il intgre un nombre de composant interne de dbogage qui
permettent de fixer des points darrt (breakpoints) et
dobservation (watchpoints) et ainsi que le suivi des instructions
(instruction trace)
Lune des particularit du Cortex-M3 est son jeu dinstruction
Thumb-2. Pour le Cortex-M3, le jeu dinstruction thumb 16 bits a
t gard, mais le jeu dinstruction ARM 32 bits a t
compltement abandonn au profit dun nouveau jeu
dinstructions Thumb 32 bits. Lensemble ainsi obtenu des
instructions 16 et 32 bits est appel Thumb-2
102
Architecture Cortex-M3
1. Introduction
Architecture Cortex-M3
1. Introduction
A part lamlioration des performances, une partie importante
de ce nouveau jeu dinstructions Thumb-2 a t spcialement
conue pour tre la cible des compilateurs
En plus des instructions ont t introduites pour permettre :
Des divisions matrielles (SDIV et UDIV) qui ncessitent de 2 3
cycles dhorloge
Des multiplications 32 bits qui se droulent en un cycle
dhorloge
104
105
106
Architecture Cortex-M3
1. Introduction
107
Architecture Cortex-M3
1. Introduction
En plus du noyau, le Cortex-M3 comporte quelques priphriques :
Un contrleur dinterruption NVIC (Nested Vector Interrupt Controller)
supportant une entre non masquable (NMI : Non Masquable Interrupt), 14
source dinterruptions internes gres par le noyau et les priphriques du
Cortex-M3 et jusqu 240 sources dinterruptions externes (le nombre est
personnalis pour chaque constructeur)
Un systme de dbogage qui permet de placer des points darrt
Breakpoints et dobservation Watchpoints matriels, ainsi que le traage
des instructions
Une unit de protection mmoires (MPU : Memory Protection Unit) qui
permet de dterminer des droits daccs des applications des zones mmoires
dfinies. Cette unit est optionnelle et nest pas disponible dans tous les
processeurs Cortex-M3.
Un Bus de matrice (AHP BusMatrix : Advanced High Performance Bus)
permettant de multiplexer les bus code et donnes vers 3 bus de sorties (I-Code,
D-Code et System). Il permet aussi dassurer lalignement des donnes ainsi
que le Bit-Banding .
108
Architecture Cortex-M3
2. Les modes opratoires
Interruption
Fin Handler
Interruption
Fin Handler
109
Architecture Cortex-M3
2. Les modes opratoires
Le Cortex-M3 peut attribu aux applications, en fonction de
ltat du bit I du regitre de contrle (control [I]) deux niveaux
de privilge :
Niveau Privileged si control [I] = 0 : dans ce mode le
programme en cours peut utiliser toutes les instructions et peut
accder toutes les ressources du processeur. Cest le niveau par
dfaut aprs un reset.
Niveau Unprivileged si control [I] = 1 : une application ayant
ce niveau a un certain nombre de limites : elle ne peut accder le
Timer System (SysTick), au contrleur dinterruptions (NVIC) ni
aux registres de contrle du systme. Elle ne peut utiliser un
certain nombre dinstructions (MSR, MRS et CPS). En plus si le
Cortex-M3 intgre un MPU, laccs certaines zones mmoires
peut tre interdit ces applications
Ces niveaux de privilge offrent plus de scurit et de robustesse.
En effet, quand un programme UnPrivileged se trompe, il sera
dans limpossibilit de modifier les registres et les zones mmoires
protgs. Ceci est utilis par les OS embarqus pour protger les110
Architecture Cortex-M3
2. Les modes opratoires
Quand le Cortex-M3 est en mode Handler, les codes excuts ont toujours le niveau
Privileged , indpendamment de la valeur du bit I du registre de contrle.
Quand le Cortex-M3 est en mode Thread, les codes excuts peuvent avoir le niveau
Privileged ou Unprivileged, en fonction de la valeur du bit I du registre de
contrle.
Control [I] = 1
Non autoris
Excution dun
programme
autre quun ISR
111
Architecture Cortex-M3
2. Les modes opratoires
Pour les transitions entre ces combinaisons,
ils doivent respecter les rgles suivantes :
1.
2.
3.
4.
Privileged/Handler Mode
Control[I]=1
4
Control[I]=0
2
2
Interruption
Retour dInt
2
Retour dInt
Interruption
Control[I]=1
UnPrivileged/
Thread Mode
Privileged/
Thread Mode
Non autoris3
112
Architecture Cortex-M3
3. les Registres
3. Les registres
Le noyau du Cortex-M3 contient un ensemble de registres diviss en deux groupes :
R14 : il sagit du registre de lien (LR : Link register) qui permet de stocker ladresse de retour
quand une fonction ou routine est appele.
R15 : il sagit du registre compteur programme (ou Program Counter) qui indique ladresse de la
prochaine instruction excuter par le processeur.
113
Architecture Cortex-M3
3. les Registres
Les registres spciaux :
PSRs (Program Status Registers) : Registres de statut du
programme qui sont au nombre de 3 :
ASPR (Application PSR) : registre dtat relatif lexcution du
programme
ISPR (Interrupt PSR) : registre dtat relatif linterruption en cours
ESPR ( Execution PSR) : registre dtat qui donne des informations sur
linstruction en cours (mode thumb ou ARM et si elle est atomique) .
Ces trois registres 32 bits peuvent tre accds sparment ou bien tre
superpos pour construire un registre unique de 32 bits : xPSR
114
Architecture Cortex-M3
3. les Registres
Chaque champ de ce registre donne une information selon le tableau suivant :
Cham
p
description
ICI/IT
T
Except
ion
numbr
115
Architecture Cortex-M3
3. les Registres
116
Architecture Cortex-M3
Les Registres du CortexM3
3. les Registres
117
Architecture Cortex-M3
4. Organisation de la Mmoire
Le noyau Cortex-M3 ayant une architecture Harvard, il possde deux bus : un bus code
pour rcuprer les instructions et un bus data pour rcuprer les donnes.
Les bus possdent chacun 32 lignes dadresses, par consquent le noyau Cortex-M3 est
capable daccder un espace dadressage total de 2 32 octets = 4 GO
Les 32 lignes dadresse (ainsi que les registres) permettent daccder une mmoire
avec des mots (taille dune case de la mmoire) de 32 bits, soit 4 octets.
Puisque lunit dadressage est toujours loctet, chaque mot de la mmoire (32 bits = 4
octets) occupe 4 adresses : le 1er mot de la mmoire (mot0) occupe ladresse 0, le 2 me
mot (mot1) occupe ladresse 4, etc, (fig a)
Mme si physiquement laccs une mmoire ne se fait que par mot (32bits), on peut
identifier chaque octet (fig b)
31
0
Adresse
0xFFFFFFFC
Fig a
Mot 2
0x00000008
Mot 1
0x00000004
mot 0
0x00000000
Fig b
31
24
23
0xFFFFFFF
F
0xFFFFFFF
E
0xFFFFFFF
D
0xFFFFFFF
C
0x000000
07
0x000000
06
0x0000000
5
0x000000
04 118
0x000000
0x000000
0x0000000
0x000000
15
8
7
0
Cortex-M3
4. Organisation de la Mmoire
Bus Matrix du Cortex-M3
119
Cortex-M3
4. Organisation de la Mmoire
Internal Peripheral Bus : cest un bus interne au processeur Cortex-M3 et permet au noyau
daccder aux registres des priphriques internes (NVIC, Systick, Debug, etc ). Ces registres
occupent une zone mmoire de 1 MO (0xE0000000 0xE0100000).
120
Cortex M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement
Unit16_t u;
15
8
7 0
Espace
perdu
Unit32_t a;
Unit8_t
x,y,z;
23
16
a
X
Y
122
Caractristiques du Cortex M3
5. Fonctionnalits intgrs du Bus Matrix : Bitbanding &Data Alignement
On voit bien, quune partie de la mmoire est perdu. Ce gaspillage nest pas permis dans des
systmes embarqus ou la taille disponible de la mmoire est limite.
Cest pourquoi le Cortex-M3 est quip dun Bus Matrix qui est capable de grer laccs
aux donnes de manire non alignes.
bi 31 ......
t 24
23
16
Unit16_t u;
Unit32_t a;
Unit8_t
x,y,z;
15
8
7 0
a
X
Espace
gagn
On voit bien que les donnes sont mises lune aprs lautre sans se proccuper de les placer
au dbut dune case mmoire.
Laccs est transparent pour le programmeur (ainsi quau noyau CM3), cest le Bus Matrix
qui soccupe de lire la case (ou les cases) et dextraire la donne ou linstruction demande.
123
Caractristiques du Cortex M3
5. Fonctionnalits intgrs du Bus Matrix : Bitbanding &Data Alignement
The Bit-Banding
Il sagit dune technique permettant de lire ltat dun bit ou de modifier sa valeur
en une seule instruction.
En effet, la faon conventionnelle pour modifier la valeur dun bit i dune variable
ou dune case mmoire x passe par 3 instructions. Lexemple suivant montre
comment mettre 1 un bit i :
x
bi
Reg
OR 2
2i 0
b2
b1
b0
bi
1- Lire x :
X Reg
1
b2
0
b1
0
b0
0
3
1
b2
b1
b0
3- Ecriture dans x :
Reg x
124
Architecture Cortex-M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement
Ces lectures et modification de bits sont frquentes dans les systmes embarqus et
surtout temps rel ; ou les tats des tches et des smaphores sont reprsents par des
bits.
Pour pallier ce problme et excuter ces instructions dune faon atomique (sans
interruption), lide tait soit dutiliser un smaphore pour protger la partie du code
ou bien la dsactivation des interruptions avant lexcution des instructions. Dans les
deux cas, la solution est pnalisante en terme de performance du systme.
Laccs un bit ne se fait pas directement, mais se fait par accs une case mmoire
alias de 32bits : lcriture dune valeur (0 ou 1) dans cette case mmoire provoque
directement lcriture de la mme valeur dans le bit correspondant.
125
Architecture Cortex-M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement
Lensemble des cases mmoires alias correspondant aux bits dune zone Bit-Band Region
est appel zone Bit-Band Alias . On trouve ainsi deux zones de 32 MO chacune (1MO*32)
Les deux zones Bit-Band Region et Bit-Band Alias du Cortex-M3 sont disponibles dans les
zones RAM et Peripheral.
126
Architecture Cortex-M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement
127
Architecture Cortex-M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement
Ainsi, cette relation peut tre gnralise comme suit :
Le bit i (0 <= i <= 31) de la case mmoire occupant ladresse Bit-Band_Offset
(0 <= Bit-Band _Offset <= 0xFFFC) peut tre accd travers le mot de la zone
Bit-Band alias ayant ladresse Alias_Offset :
Alias_Offset = Bit-Band_Offset*32 +i*4
Peripheral
Bit-Band Base
address
0x2000 0000
0x4000 0000
0x2200 0000
0x4200 0000
128
Architecture Cortex-M3
6. Organisation dun programme en mmoire & squence de dmarrage
129
Architecture Cortex-M3
6. Organisation dun programme en mmoire & squence de dmarrage
Le premier mot plac loffset 0 est occup par ladresse de la pile (Main
Stack). Le reste des premiers 1024 octets sont occups par les adresses des
ISRs : Table des vecteurs dinterruptions.
Lespace suivant la table des vecteurs dinterruptions est utilis par les codes
des ISRs : le code de lISR1 (dclench par un reset) est plac directement
ladresse 1024.
Ensuite vient les programme tournant en arrire plan tel que le Main
Enfin, est place la mmoire pile (Main Stack). Contrairement aux codes,
ladresse de dbut dune pile correspond son adresse suprieure. La taille
de la pile tant fix par le programmeur avant la compilation.
Etant donn que lors de la compilation, les tailles des codes et de la pile sont
connues, le compilateur va initialiser le mot 0 avec ladresse de la pile
@Mstack et la table avec les adresses correspondantes des ISRs.
130
Architecture Cortex-M3
6. Organisation dun programme en mmoire & squence de dmarrage
Une fois le processeur est mis sous tension (reset), il :
1. Rcupre le contenu de ladresse offset 0 (@Mstack) et le place dans le
registre R13 qui sert de pointeur sur la pile.
2. Rcupre le contenu de ladresse offset 4, qui correspond ladresse de
lISR1 (@ISR1 = 1024), et la place dans le registre R15=PC (Program
Counter) PC = 1024
3. Commence excuter le Handler plac ladresse 1024 (ISR1 = Reset) et
qui correspond un code de boot (de dmarrage) fourni par la socit
ARM et qui permet dinitialiser les registres systme et de faire la fin un
saut vers ladresse @Main.
A ce point, la squence de dmarrage est finie et cest le programme utilisateur
(Main) qui va prendre la main pour configurer lhorloge, les interruptions,
etc
131
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
7. Gestion des interruption par le NVIC
La gestion des interruption pour les processeurs Cortex-M3, est assure par le contrleur
dinterruption NVIC (Nested Vector Interrupt Controller). Le NVIC est troitement
coupl au noyau du processeur et intgre lui-mme un Timer Systme : Systick.
132
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
Num
ro
Type
dexception
Niveau de
priorit
Description
Reset
-3 (maximum,
fig)
NMI
-2 (fig)
Hard Fault
-1 (fig)
MemManageFa
ult
0
(paramtrable)
Bus Fault
1
( paramtrable)
Usage Fault
2
(paramtrable)
7-10
Rserv
Pas utilise
11
SVCall
3
(paramtrable)
12
DebugMonitor
4
(paramtrable)
13
Rserv
Pas utilise
14
PendSV
134
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
NMI
Hard fault
MemManageFault
Usage Fault
0x1C
0x2B
0x2C
SVCall
0x30
Debug Monitor
0x34
Rserv
0x38
PendSV
0x3C
STSTICK
0x40
IRQ0
135
Cortex-M3
7. La gestion des interruptions par le NVIC
Parmi les spcificits du NVIC, on cite :
Une rponse rapide grce larchitecture matrielle
du NVIC dune part et lutilisation du jeu dinstruction
thumb-2 qui permet dinterrompre lexcution des
instructions multi cycles (load et store)
Un temps de rponse (latence) dterministe grce
lutilisation de plusieurs niveaux de priorit. Ceci
permet de supporter les applications temps rel.
Il est conu pour tre programm entirement en
langage C sans tre oblig de passer par des
instructions ou fonctions crites en assembleur.
136
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
137
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
Il est noter que si au cours du traitement dune interruption,
une autre interruption de priorit suprieure est dclenche,
alors les mmes tapes sont refaites. Cet enchanement
dinterruptions peut avoir lieu plusieurs fois, do lappellation
nested (en cascade)
138
Cortex-M3
7. La gestion des interruptions par le NVIC
Tail Chaining
Contrairement dautres processeurs qui retournent au programme principal
aprs le traitement dune interruption avant de traiter linterruption de priorit
infrieure ; ce qui fait perdre normment de temps. Cortex utilise une mthode
appele : Tail Chaining qui permet un temps de rponse plus court : la fin du
traitement dune interruption, il teste si entre temps une (des) interruption(s) de
priorit infrieure sest (se sont) produites. Si cest le cas, il commence
directement par rcuprer ladresse de la routine relative linterruption sans
retourner au programme principal ; ceci dure juste 6 cycles.
140
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
La prise en compte dune interruption de priorit infrieure
peut avoir lieu non seulement au cours du traitement de
linterruption en cours, mais galement lors de la restauration
des valeurs des registres depuis la pile (POP). Dans ce cas,
Cortex arrte immdiatement lopration POP et rcupre
ladresse de la routine excuter
141
142
Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
Late Arrival
Cortex utilise une autre technique appele Late Arrival qui permet de
servir plus rapidement les interruptions de plus haute priorit. Au
moment du dclenchement dune interruption i, Cortex commence
lopration dempilement (PUSH) et puis et avant de traiter la routine
relative linterruption i, il teste si dautres interruptions de priorit
suprieure ont eu lieu. Si cest le cas, il commence par traiter la routine
de linterruption de plus haute priorit. Ainsi une priorit de haute
priorit peut tre servie en premier mme si elle arrive avec un certain
retard (jusqu 12 cycles) aprs une autre.
143
144
Architecture Cortex-M3
8. Instructions Cortex-M3
8. Instructions Cortex-M3
8.1 Thumb-2 Instruction Set Architecture
Larchitecture dun jeu dinstruction (ISA Instruction Set Architecture) dun
processeur dfinit la taille (ou les tailles) des instructions ainsi que les formats
possibles (la division de linstruction en champs) et les valeurs binaires que peut
prendre chaque champ et leurs significations.
00110
001
0000101
0
Opcode
ADD
Oprande
1&2
Registre R1
Oprande
3
Valeur
145
Architecture Cortex-M3
8. Instructions Cortex-M3
Pour contourner ces limites, des instructions 32 bits ont t introduites. Linstruction :
ADD R8, R3, #200 ; (R8 R3 + 200)
Permet dutiliser tous les registres, deux registres diffrents comme source et destination
et enfin une valeur immdiate sur 12 bit. Le format de linstruction est comme suit :
31 28
27 26
25
24 21
20
19 16
15 12
11 0
COND
00
0100
0011
1000
110010000
Oprande 1
Registre
destination
Oprande 2
R3
R8
Valeur
Major
Opcode
Minor
Opcode
ADD
Architecture Cortex-M3
8. Instructions Cortex-M3
Pour les autres champs :
COND : permet de spcifier une condition (qui porte sur les indicateurs dtats fournis dans le
registre xPSR) qui, si elle est vrifie, autorise le processeur effectuer laddition (pour lexemple
trait prcdemment). Sinon le processeur va passer linstruction suivante sans excuter
daddition.
S (Set Flag Status) : Cest un bit qui indique si linstruction doit mettre jour ou non le registre
dtats. Au niveau de la syntaxe il faut ajouter un S linstruction :
ADDS : le processeur effectue une addition et ensuite met jour le registre dtats.
ADD : Le processeur effectue lopration daddition sans modifier le contenu du registre dtat.
Le fait dutiliser des instructions 16 et 32 bits conjointement nest pas nouveau pour les
processeurs ARM. Mais, pour les anciennes architectures (v4, v5) il tait indispensable de
basculer dun mode 16 bits un mode 32 bits et vice-versa par soft (une instruction de
commutation). Ceci cause une baisse des performances du processeur.
Pour larchitecture V7 (Cortex), les instructions ARM 32 bits ont t dlaisses, de nouvelles
instructions Thumb 32 bits ont t introduites. Ces instructions ont t choisis de telle sorte que
le processeur , en analysant les 16 premiers bits, reconnaisse automatiquement sil sagit dune
instruction 16 ou 32 bits. Ainsi, le processeur nest plus oblig de basculer dun mode un
autre.
Lensemble des instructions 16 bits Thumb et 32 bits Thumb forment : le jeu dinstruction
Thumb-2.
147
Architecture Cortex-M3
8. Instructions Cortex-M3
8.2 Instructions Assembleur Cortex-M
Cest le compilateur qui doit ensuite dcider : si linstruction peut tre code
sur 16 bits alors il va choisir le format 16 bits, sinon il va devoir utiliser un
format 32 bits.
Architecture Cortex-M3
8. Instructions Cortex-M3
Le processeur Cortex ayant une architecture RISC, toutes les oprations de
traitements portent sur des registres ou des valeurs immdiates. Uniquement
les oprations de transfert peuvent accder la mmoire.
Instructions de transfert
Instructions
Description
Rd valeur
MOV Rd, Rn
Rd Rn
Push Rs
Pop rd
Architecture Cortex-M3
8. Instructions Cortex-M3
Instructions Arithmtiques
Instructions
Description
ADD
Addition
ADC
Addition with
Carry
Exemples
ADD Rd, Rn, Rm
Rd Rn + Rm
Rd Rd + Rn
Rd Rd + valeur
Rd Rn + Rm + Carry
Rd Rd + valeur + carry
Rd Rn - Rm
Rd Rn - valeur
SUB
Soustraction
MUL
Multiplication 16
bits (rsultat sur
32bits)
Rd Rd*Rn
Rd Rn*Rm
UMULL
Multiplication
32bits non sign
(rsultat 64 bits)
SMULL
Mme chose que MULL, mais pour une multiplication signe (S : signed)
150
Architecture Cortex-M3
8. Instructions Cortex-M3
Instructions Logiques
Instructi
on
AND
Description
ET logique bit
bit
Exemples
AND Rd, Rd, Rm
Rd Rd ET Rm
Rd Rd ET valeur
Rd Rn ET Rm
ORR
OU logique bit
bit
Mme exemples
EOR
Mmes exemples
BIC
Rd Rd ET (Rm)
Rd Rn ET (
valeur)
tant linverse bit
bit
151
Architecture Cortex-M3
8. Instructions Cortex-M3
Instructions conditionnelles & registre dtat
Une grande partie des instructions prsentes peuvent tre excutes dune faon
conditionnelles. Dans ce cas, la syntaxe de linstruction devient :
Operation [COND] operand1 , operand2, [operand3] // [optional]
lopration nest excute que si la condition COND est vrifie. La condition COND est relative au
rsultat de linstruction prcdente (si elle positionne les indicateurs dtats).
3
1
3
0
2
9
2
8
2
7
26
26:2
5
2
4
23:2
0
19:1
6
15:1
0
9 8 7 6 5 4:
0
Bits du registre
dtat
Ces bits sont mis jour aprs lexcution de chaque instruction en fonction du rsultat obtenu
instruction
ADDS*,
SUBS* ,
MULS*
CMP A, B
Rsultats
=0
Z=1
Dpasse 32 bits
C=1
<0
N=1
>0
N=0
A< B
N=1
A>B
N=0
Architecture Cortex-M3
8. Instructions Cortex-M3
Les conditions COND 16 sont disponibles :
COND
Signification
Bits dtat
EQ
EQual : gal
NE
CS/HS
CC/LO
MI
Minus/negative : ngatif
PL
VS
VC
HI
C.Z
LS
C.Z
GE
N.V+N.V
LT
NV
GT
Z.N.V + N.V
LE
Z+NV
AL
Architecture Cortex-M3
8. Instructions Cortex-M3
Exemple dutilisation des instructions conditionnelles
Code C
Code Assembleur
If (x == 0)
CMP R0, #0
x = y +1
{
}
else
{
y=x+1
}
154
Architecture Cortex-M3
8. Instructions Cortex-M3
Instructions de saut
Ces instructions permettent de faire un saut vers une adresse, ou bien vers une
fonction. Le saut peut tre inconditionnel ou bien conditionnel.
Instruct
ion
Description
Branch : faire un saut vers une adresse (un label ou tiquette dans un programme
BL
Branch with Link : faire un saut et sauvegarder ladresse de retour dans le registre
LR (R14). Cette instruction est utilise pour faire appel une fonction
B[COND]
Tumb-2 offre galement une instruction qui combine le saut et la comparaison pour
gagner en nombre dinstructions et en vitesse dexcution :
Instruction
Description
CBZ
Compare & Branch if Zero : faire une comparaison et faire un saut si gale 0
CBNZ
Compare & Branch if Not Zero : faire une comparaison et faire un saut si diffrent
de 0
155
Architecture Cortex-M3
8. Instructions Cortex-M3
Code C
Coe Assembleur
i = 10;
While (i !=0 )
{
func1 ( );
}
Bouclefin : ..
156
Chapitre 5 : Multiprocesseurs,
multi-coeurs et processeurs spcialiss
1. Introduction aux architectures parallles
2. Architectures Multiprocesseurs
3. Architectures multi-curs
Dfinition
Architecture des caches
Cohrence des caches
Dfinition
Les processeurs graphiques
Comparaison GPU/CPU
157
158
159
160
161
162
163
164
165
166
167
168
169
170
Chapitre 5 : Multiprocesseurs,
multi-coeurs et processeurs spcialiss
1. Introduction aux architectures parallles
2. Architectures Multiprocesseurs
3. Architectures multi-curs
Dfinition
Architecture des caches
Cohrence des caches
Dfinition
Les processeurs graphiques
Comparaison GPU/CPU
171
Architecture Multiprocesseurs
Modle mmoire partage
172
Architecture Multiprocesseurs
Modle mmoire partage
173
Architecture Multiprocesseurs
Modle mmoire partage
174
Architecture Multiprocesseurs
Modle mmoire partage
175
Architecture Multiprocesseurs
Modle mmoire partage
176
Architecture Multiprocesseurs
Modle mmoire partage
177
Architecture Multiprocesseurs
Modle mmoire partage
178
Architecture Multiprocesseurs
Modle mmoire partage
179
Architecture Multiprocesseurs
Modle mmoire distribue
180
Architecture Multiprocesseurs
Modle mmoire distribue
181
Architecture Multiprocesseurs
Modle mmoire distribue
182
Architecture Multiprocesseurs
Modle mmoire distribue
183
Chapitre 5 : Multiprocesseurs,
multi-coeurs et processeurs spcialiss
1. Introduction aux architectures parallles
2. Architectures Multiprocesseurs
3. Architectures multi-curs
Dfinition
Architecture des caches
Cohrence des caches
Dfinition
Les processeurs graphiques
Comparaison GPU/CPU
184