Vous êtes sur la page 1sur 184

Chapitre 4 : Architecture

des Processeurs ARM et Cortex


1. Introduction aux Processeurs embarqus
2. Evolution des architectures des curs
ARM
3. Processeur ARM7TDMI : Architecture et
langage assembleur
4. Architecture Cortex-M3

Introduction aux Processeurs Embarqus

Un microcontrleur ou MCU (Microcontroller Circuit Unit)


est un systme informatique entier : (CPU ou Central
Processing Unit, mmoire, bus contrleur dinterruption,
interfaces parallles et sries, Timers, Convertisseurs A/N
et N/A) contenu intgralement dans un circuit intgr
unique

Le CPU dun microcontrleur est gnralement moins


complexe que celui dun systme informatique ordinaire
(microordinateur), consommation lectrique plus faible
(qq miliwatt en fonctionnement et de lordre du microwatt
en veille) et galement moins performant : il supporte
galement une centaine dinstruction et fonctionne des
frquences relativement basse variant de quelques
dizaines de MHz quelques centaines. Ceci permet de
limiter la consommation en nergie du circuit

Ces circuits prix rduits grandes quantits (moins de 1$

Introduction aux Processeurs Embarqus

Mme si les c 8 bits se sont imposs longtemps ; ltendue des


domaines dapplication des c, le besoin croissant en capacit
de traitement et en comportement temps rel ont incit les
concepteurs propos des processeurs 16 bits et
particulirement 32 bits beaucoup plus performants

Les ventes des c 32 bits ont normment progress lors de la


dernire dcennie et sont pass de moins de 1% en 2000 30%
en 2006 pour atteindre les 38% en 2009 et on prvoit que cette
croissance continuera durant les prochaines annes

Figure 1 : Evolution des ventes des c 8, 16 et 32 bits

Introduction aux Processeurs Embarqus

La majorit des fabricants de c optent pour lintgration de


CPU prconu, sous forme dIP Intellectual Property , dans
leurs circuits et lui ajoutent les mmoires et les entres/sorties
ncessaires pour les applications cibles

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

Extensions technologiques des curs ARM : Jazelle,


Thumb, Thumb2, ThumbEE, VFP, NEON, TrustZone
Versions et implmentation des Curs ARM
Performances des curs ARMFamille Cortex

3. Processeur ARM7TDMI : Architecture et


langage assembleur
4. Architecture Cortex-M3
5

Evolution des architectures ARM


La socit ARM a t cre en 1990 par
association de Apple Computer, Acorn Computer
Group et VLSI Technology. Contrairement aux
autres socits travaillant dans le domaine des
semi-conducteurs, ARM ne fabrique pas de
processeurs et les vend directement, mais elle les
conoit et vend directement leur licence sous
forme dIP des partenaires qui les intgrent dans
leur microcontrleurs et processeurs
Aujourdhui, les partenaires dARM vendent
annuellement plus que 2 billions de circuits base
de curs ARM dont larchitecture et le jeu
dinstructions ont volu depuis la premire
6
version ARM-v1 jusqu la version ARM-v7,

Evolution des architectures ARM

Evolution des architectures ARM

Evolution des architectures ARM

Evolution des architectures ARM


Extensions Technologiques des coeurs
ARM
Jazelle
Thumb
Thumb-2
Thumb Execution Environnement (ThumbEE)
Floating-point (VFP)
Advanced SIMD (NEON)
TrustZone

10

Evolution des architectures ARM


Extensions technologiques des curs ARM

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

Evolution des architectures ARM


Extensions technologiques des curs ARM
Thumb
Thumb est un jeu dinstruction 16 bits qui fournit un sousensemble des instructions ARM 32 bits classique et permet
un gain de mmoire important.
Dans le mode Thumb, les instructions 16 bits offrent moins
de possibilits. Seuls les branchements peuvent, par
exemple, tre conditionnels et plusieurs instructions sont
limites laccs dune partie rduite des registre
gnraux. Ces possibilits rduites amliorent la densit
globale dun programme bien que certaines opration
ncessitent plus dinstructions
rduction du temps de chargement du code en mmoire
et augmente la probabilit de rester dans le cache
dinstruction
12
augmentation des performances

Evolution des architectures ARM


Extensions technologiques des curs ARM

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

Evolution des architectures ARM


Extensions technologiques des curs ARM
Thumb Execution Environnement
(ThumbEE)
ThumbEE, galement appel Thumb-2EE ou Jazelle RCT
pour (Runtime Compilation Target : cible de compilation la
vole) apparait pour la premire fois dans le processeur CortexA8. ThumbEE est le quatrime tat du processeur, ajoutant de
petit changement au jeu dinstruction tendue thumb et
thumb-2. Ces changements rendent le jeu dinstruction
particulirement adapt la gnration de code au moment de
lexcution, par la compilation la vole, dans des
environnements dexcution contrls.
ThumbEE est oriente vers les langages de programmation
Limbo, Java, C#, Perl, Python ou Ruby et permet aux
compilateurs la vol de gnrer moins de code de sortie sans
14
affecter les performances.

Evolution des architectures ARM


Extensions technologiques des curs ARM

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

Evolution des architectures ARM


Extensions technologiques des curs ARM

Advanced SIMD (NEON)


Lextension advanced SIMD (galement appel NEON
ou MPE pour Media Processing Engine : moteur de
calcul de mdias) est un SIMD (Single Instruction
Multiple Data), combinant des jeux dinstruction 64 et
128 bits, qui fournissent de lacclration de calcul
standardis pour les applications de mdias, 2D/3D et
de traitement de signal.
NEON peut faire du dcodage MP3 sur un processeur
fonctionnant 10 MHz et peut encoder/dcoder le
codec GSM AMR 13 MHz et permet dacclrer le
dcodage de formats vidos tels que h264 ou Real.
16

Evolution des architectures ARM


Extensions technologiques des curs ARM

Security extensions (TrustZone)


Grce une combinaison de composants logiciels
et de matriel intgr, la technologie TrustZone
fournit la base pour une architecture de systme
hautement protg, avec un minimum dimpact
sur la consommation d'nergie ou la performance
du processeur

17

Evolution des architectures ARM


Caractristiques fondamentales des curs ARM

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 :

Une taille fixe des instructions (32 bits)


Une banque de registres (32 bits) usages gnraux,
Un dcodage des instructions cbl
Une excution pipeline (trois tages pour les ARM7, cinq pour les ARM9, six pour les
ARM10 et huit pour les ARM11)
Un objectif dexcution dun cycle par instruction (CPI = 1)

Le standard ne dfinissant que la structure et le jeu dinstructions du cur de


processeur, chaque industriel est susceptible de complter son processeur
avec des modules matriels spcifiques, fonctions de la destination finale du
processeur.
18

Evolution des architectures ARM


Versions et implmentation des curs ARM
A chaque version du cur de processeur correspond une ou plusieurs
implmentations physiques. On dnombre aujourdhui sept versions
diffrentes du cur.
Version 1 : cette version du cur correspond au processeur ARM1
Version 2 : la version 2 du cur a t implmente par le processeur ARM2.
lARM2 possde 27 registres (dont 16 accessibles simultanment) et quatre
modes de fonctionnement diffrents :
USR (USeR mode) : mode utilisateur. Certaines ressources sont inaccessibles (il
sagit du seul mode de fonctionnement non privilgi)
IRQ (Interrupt ReQuest mode) : mode interruption. Il devient actif lactivation
de lentre IRQ du processeur
FIQ (Fast Interrupt reQuest mode) : mode interruption rapide. Ce mode est actif
lors de la rception dun signal FIQ du processeur.
SVC (Supervisor mode) : mode superviseur. Cest un mode protg, utilis pour
lexcution du systme dexploitation.

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

Evolution des architectures ARM


Versions et implmentation des curs ARM

Version 3 : Dans cette version, la limitation de lespace dadressage 64 Mo


est supprime avec un vritable adressage sur 32 bits et un nouvel ensemble
de registres est ajout pour maintenir les informations concernant ltat du
processeur :
CSPR Current Processor Status Register
SPSR : Stacked Processor Statut Register

Par ailleurs, deux nouveau modes de fonctionnement sont ajouts :


Abort : signal par le gestionnaire de mmoire, utilis pour implmenter des
mcanismes de mmoire virtuelle et/ou de protection mmoire.
Undefined : utilis pour lmulation logicielle de coprocesseur .

Cette version du cur a t mise en uvre dans les processeurs ARM6,


ARM7 et Amulet1.
lARM7 est fonctionnellement identique lARM6, mais fonctionne des
frquences plus leves (>40 MHz), et dispose de quelques amliorations :
cache de 8Ko modifi pour diminuer la consommation, gestion mmoire plus
performant;
20

Evolution des architectures ARM


Versions et implmentation des curs ARM

Version 4 : Cette version reprend les caractristiques de la version 3 en y


incluant des instructions de lecture/criture sur 16 bits. Par ailleurs, certaines
instructions optionnelles sur le curs de la version 3 (oprations de
multiplication tendues, spcialises pour le traitement de signal) sont intgrs
larchitecture. Le pipeline dexcution comprend cinq tages. Enfin, un nouveau
mode de fonctionnement fait son apparition : le mode system, identique au mode
supervision sans utilisation de copies prives des registres.
Ce cur a t implment dans les processeurs ARM8, ARM9 et Strong ARM.
LARM8 reprend les caractristiques de lARM7, hormis la longueur du pipeline
dexcution, la prsence dune unit dexcution spculative, la mise en place dune
politique dcriture retarde pour le cache et limplmentation dune instruction de
multiplication sur 64bits. Ce processeur peut dlivrer une performance de 80 MIPS
80 MHz.
Le StrongARM est une version cache Havard (caches instructions et donnes
spars aliments par des bus spars). Performance : frquence comprise entre 100
et 200 MHz pouvant atteindre 230MIPS
LARM9 est une version volu de lARM8 architecture Havard.
21

Evolution des architectures ARM


Versions et implmentation des curs ARM
Version 5 : Cette version reprend les caractristiques de la version 4 en ajoutant
plusieurs instructions (comptage de zro, point darrt logiciel, ). Il intgre de
surcroit des units dexcutions multiples, et lunit de lecture/ criture devient
parallle. Le pipeline comprend six tages (sept dans la version intelXScale).
Elle est implmente par la gnration ARM10 et intel Xscale.
Les processeurs ARM10 intgrent jusqu 2x32 Ko de cache, et le gestionnaire de
mmoire est totalement compatible avec les systmes dexploitations embarqus les
plus rpandus (Windows CE, Linux). Il peut atteindre la performance de 400 MIPS
la frquence 325MHz
Les processeurs Intel Xscale intgrent des extensions telles que la gestion des
communications sans fils, des priphriques divers. Performances : 624 MHz

Version 6 : cette version amne des amlioration notamment dans le domaine


multimdia par le biais des extensions SIMD. La multiplication des units
dexcution.
Cette version est implmente par la famille ARM11. Ses performances dpassent
les 600MIPS, les frquences de fonctionnement peuvent atteindre le 1GHz.
22

Evolution des architectures ARM


ARM v7 : La famille Cortex
Version v7 : La famille Cortex
Contrairement aux architectures prcdentes, Cortex intgre entre
autre la gestion des interruptions et des exceptions ce qui permet
une plus grande transparence et souplesse au niveau de la
programmation ainsi quun portage de code plus simple.
Les curs de Cortex portent la dsignation Cortex-XN ou X
dsigne le profil auquel appartient le cur et N son degr de
performance qui varie entre 0 (le moins performant) et 9 (le plus
performant).
On distingue 3 profils propres larchitecture ARM-v7 ou Cortex :
Cortex-A
Cortex R
23
Cortex-M

Evolution des architectures ARM


ARM v7 : La famille Cortex
Cortex-A
Destin pour faire tourner des applications complexes telles que les
systmes dexploitation embarqus (symbian, Linux, Windows CE)
ncessitant une puissance de traitement leve et un systme de
gestion de mmoire virtuelle (MMU).
Les processeurs appartenant ce profil peuvent fonctionner avec des
frquences de 2GHz et avec une performance de 2,5DMIPS/MHz 1 et
contiennent des architectures SIMD ainsi que des technologie Jazelle.
On les trouve dans des produits tels que les tlvisions numriques
haute dfinition, les terminaux mobiles,

Dhrystone MIPS : Performance de traitement du processeur en millions


24
dInstructions par seconde obtenue par excution du bechmark Dhrystone
1

Evolution des architectures ARM


ARM v7 : La famille Cortex
Cortex-R
Destin principalement aux applications temps rel contraintes
trs svres et exigeant une haute fiabilit et un temps de rponse
faible.
Les processeurs de ce profil contiennent galement une unit
additionnelle pour le calcul en virgule flottante et sont utiliss
titre dexemple dans les disques durs, les appareils photo
numriques, le domaine de lautomobile (systme de freinage)

25

Evolution des architectures ARM


ARM v7 : La famille Cortex
Cortex-M
Optimis pour les applications ncessitant une basse consommation
dnergie, un cot rduit et un comportement dterministe pour le
traitement des interruptions.
Cest le profil qui est destin tre intgr dans les
microcontrleurs.
Principalement le cur Cortex-M3, lanc en 2004, et qui grce son
cot et sa performance a connu un grand succs et a fait converger la
majorit des constructeurs de microcontrleurs, pour la premire
fois, vers une architecture commune.
Dj 28 socits (dont 6 font partie du top 10) ont opt pour ce cur
(Texas Instruments, ST-Microelectronics, NXP, Atmel, Zilog,
samsung, etc)
26

Evolution des architectures ARM


ARM v7 : La famille Cortex

Performance et domaines dapplications des profils de

27

Evolution des architectures ARM


Performances des architectures ARM

28

Evolution des architectures ARM


Performances des architectures ARM

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

Architecture interne du processeur ARM7TDMI


Codage et excution dinstructions
Les modes opratoires de lARM7TDMI
Organisation de la mmoire et des entres/sorties
Les registres
Les exceptions et les interruptions
Le jeu dinstructions standards de lARM7TDMI

4. Architecture Cortex-M3
30

Vue dune puce utilisant un


ARM7

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

Architecture interne : cur processeur ARM7

Bus dadresses A[31..0]

nOPC
nCPI
CPA
CPB

Unit Arithmtique
et logique 32 bits

Registre dcriture

Registre de lecture

Registre instruction

Bus de donnes D[31..0]


32

Vue simplifie du cur


ARM7TDMI
L'architecture de l'ARM7TDMI est de type
Von Neumann donc il n'y a qu'un bus
pour vhiculer les instructions et les
donnes.
L'ARM dispose de 16 registres visibles sur
lesquels les oprations sont effectues.
Les instructions LOAD/STORE servent
respectivement charger/enregistrer les
donnes de/vers la mmoire.
33

Vue simplifie du cur


ARM7TDMI
La partie oprative (datapath) est
constitue de 2 bus A et B sur lesquels
se font les oprations.
Le flot de calcul est le suivant :
Banc de registres sur A et B => Barrel
shifter sur B => UAL => Banc de
registres
Les oprations sur ce datapath durent

34

Vue simplifie du cur


ARM7TDMI
Exemple
L'excution de l'instruction ADD r0,r1,r2
consiste mettre r1 et r2 sur A et B,
effectuer l'addition dans l'UAL et crire le
rsultat dans r0.
(r0) := (r1) + (r2)
Une opration de dcalage aurait pu avoir
lieu sur r2 dans le mme cycle ADD
r0,r1,r2,LSL#2. Ici r2 est dcal de 2 bits
sur la gauche avant d'tre additionn.
35
(r0) := (r1) + 4 * (r2)

Vue simplifie du cur


ARM7TDMI
Le registre d'adresse fournit les adresses la mmoire.
Les blocs dcompression et dcodage des instructions
servent aux 2 premiers cycles du pipeline alors que le
datapath sert au 3me cycle.
Les registres de Lecture et d'criture des donnes sont
des tampons de donnes avec la mmoire externe pour
les instructions LOAD/STORE.
Le bloc de contrle droite est l'interface avec tous les
signaux de commande externes : contrleur mmoire,
coprocesseurs, interruptions...
36

Le Pipeline dinstructions
La famille ARM7 utilise un pipeline 3 tages pour augmenter la
vitesse du flot dinstructions dans le microprocesseur.

Le PC pointe sur linstruction en cours de lecture (FETCHed) et


non sur linstruction en cours dexcution.
Les instructions sont "pipelines" en 3 cycles d'horloge : FETCH,
DECODE et EXECUTE.
Ainsi le concept RISC (1 instruction par cycle) est respect.
37

Exemple 1 : Pipeline optimal

Il faut 6 cycles pour excuter 6 instructions (CPI


Cycles Per Instruction=1).
Toutes les instructions n'oprent que sur des
registres (1 cycle).

38

Exemple 2 : Pipeline avec


LDR

Le pipeline est rompu cause de linstruction LDR qui


lit une donne en mmoire et la charge dans un
registre.
Il faut 6 cycles pour excuter 4 instructions. CPI = 1,5.
Remarque : Les instructions LOAD et STORE prennent
donc 3 cycles la place de 1.

39

Codage des instructions


Les instructions ARM sont toutes codes sur 32 bits.
31

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

Format gnral dune instruction

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

Dcalage par rapport ladresse courante, cod sur 24 bits

Format des instructions de branchement


40

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

Exemple dexcution dun


programme
Codage du programme
Le code hexadcimal correspondant ces instructions est le suivant :
LDR
R1, [R0]

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

1er Cycle dexcution

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

RI : LDR R1, [R0]


Bus de donnes D[31..0]
0xE5901000

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

2me Cycle dexcution

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

RI : LDR R3, [R2]


Bus de donnes D[31..0]
0xE5923000

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

3me Cycle dexcution

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

RI : ADD R5, R3, R1


Bus de donnes D[31..0]
0xE5923000

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

4me Cycle dexcution

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

Registre de lecture : 0xA

RI : ADD R5, R3, R1


Bus de donnes D[31..0]
0xA

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

5me Cycle dexcution

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

Registre de lecture : 0xA

RI : ADD R5, R3, R1


Bus de donnes D[31..0]
47

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

6me Cycle dexcution

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

RI : STR R5, [R4]


Bus de donnes D[31..0]
0xE5845000

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

7me Cycle dexcution

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

Registre de lecture : 0x2

RI : STR R5, [R4]


Bus de donnes D[31..0]
0x2

49

Bus dadresses A[31..0]

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

8me Cycle dexcution

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

Registre de lecture : 0x2

RI : STR R5, [R4]


Bus de donnes D[31..0]
50

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

9me Cycle dexcution

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

Registre de lecture : 0x2

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

10me Cycle dexcution

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

Registre de lecture : 0x2

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

11me Cycle dexcution

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

Registre dcriture : 0x0C

Registre de lecture : 0x2

RI : Inst. Y
Bus de donnes D[31..0]
0x0C

53

Les modes de lARM7TDMI


Le processeur ARM a plusieurs modes de
fonctionnement diffrencis par des
ressources et des privilges spcifiques :
certaines oprations ne sont autorises que
dans certains modes.
Ces modes simplifient le portage d'un
systme d'exploitation multi-utilisateurs.
Ils participent la protection du code et
des donnes ainsi qu' la gestion d'erreurs.
54

Les modes de lARM7TDMI


Un ARM7TDMI a 7 modes opratoires de base :
User : sans privilge, la plupart des tches sexcutent
FIQ : entre par une interruption de priorit haute (Fast)
IRQ : entre par une interruption de priorit basse
(normale)
Supervisor : entre la rinitialisation et lors dune
interruption logicielle (SWI SoftWare Interrupt)
Abort : utilis pour grer les violations daccs mmoire
Undef : utilis pour grer les instructions non dfinies
(undefined)
System : mode avec privilge utilisant les mmes
registres que le mode User.
55

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.

Le registre SPSR est une copie du CPSR avant de


changer de mode. Ce registre vite l'empilage du
CPSR et est propre chaque mode.
58

Les registres accessibles selon les diffrents modes


de fonctionnement dun processeur ARM

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

Bits de code condition


La signification des diffrents bits de code condition :
N (Negative) : reflte ltat du bit 31 du rsultat de linstruction
Z (Zero) : bit 1 lorsque le rsultat de linstruction est 0
C (Carry) : reprsente la retenue propager
V (oVerflow) : dpassement de capacit. V est positionn 1 si un dpassement se
produit la suite dune opration daddition ou de soustraction, les oprandes tant
considrs comme signs en complment deux
Q: dpassement de capacit ou saturation dans les oprations de traitement du signal
60

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

Oprations possibles avec le


Barrel Shifter

Dcalage logique gauche (LSL)


multiplication par une puissance
de 2 :
C

Dcalage logique droite (LSR) division


par une puissance de0 2 :
C
Dcalage arithmtique droite (ASR)
division par puissance de 2 +
prservation du signe pour le complment
:
C
63

Oprations possibles avec le


Barrel Shifter

La rotation droite (ROR) :


C

La rotation droite tendue (RRX) :


C

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 exceptions sont dtectes par le CPU


puis traites dans le contexte du
programme courant.
65

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

un signal envoy au processeur de


l'extrieur par lintermdiaire dun PIC
(Programmable Interrupt Controler).
66

Traitement des exceptions


et des
interruptions

Lorsquune exception ou une interruption


survient :

le processeur suspend tout dabord l'excution en


cours
sauvegarde ensuite ltat courant (PC, SP, registre
d'tat) dans des registres ddis ou dans une pile
enfin charge le PC une adresse mmoire spcifique
qui dpend de lexception ou de linterruption

Ces adresses sont localises dans une partie de


la mmoire appele le vecteur dexceptions
/interruptions.
67

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

Jeu dinstructions standard


de lARM7

Quatre types dinstructions :

Les instructions de contrle de flux (branchement)


Les instructions de traitement de donnes (arithmtiques et logiques)
Les instructions de manipulation de registres
Les instructions diverses : smaphore, gnration dexception et les instructions
coprocesseurs

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

Positionnement des indicateurs de code condition


Toutes les instructions peuvent modifier les bits de condition du CPSR ; il suffit
pour cela de faire suivre le mnmonique de linstruction par la lettre S :
MOV R0, #0 laisse inchang les bits indicateurs de condition
MOVS R0, #0 met N,C et V 0 et Z 1

69

Jeu dinstructions standard


de lARM7
Code

extension

Signification

Bits de condition

0000

EQ

EQual : gal

0001

NE

Not Equal : diffrent

0010

CS/HS

Carry Set/unsigned Higher or Same : suprieur ou gal non sign

0011

CC/LO

Carry Clear/ unsigned Lower : infrieur non sign

0100

MI

Minus/negative : ngatif

0101

PL

Plus/positive or zero : positif ou nul

0110

VS

oVerflow Set : dbordement

0111

VC

oVerflow Clear : pas de dbordement

1000

HI

Unsigned Higher : suprieur non sign

C.Z

1001

LS

Unsigned Lower or Same : infrieur ou gal non sign

C.Z

1010

GE

Signed Greater than or Equal : suprieur ou gal sign

N.V+N.V

1011

LT

Signed LessThan : infrieur sign

NV

1100

GT

Signed Greater Than : suprieur sign

Z.N.V + N.V

1101

LE

Signed Less than or Equal : infrieur ou gal sign

Z+NV

1110

AL

Always : excution inconditionnelle

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

Instructions de traitement des


donnes
Pas moins de 11 modes dadressage sont utilisables lorsque loprande
<shifter_operand> sera prcis. Ces 11 modes se scindent en trois catgories:
Adressage immdiat : ce mode dadressage permet de prciser une constante
utiliser comme oprande. Syntaxe : #<immediate>
Adressage par registre : Ce mode exploite le contenu dun registre
Syntaxe : <Rm> ; o Rm prcise le registre utiliser
Adressage par registre avec dcalage : ce mode dadressage permet dutiliser
la valeur contenue dans un registre dcale logiquement, arithmtiquement ou
circulairement, gauche ou droite, de 0 31 positions. Le dcalage se fait par
insertion de zro.

<Rm>, LSL #<shift_imm>


/ <Rm>, LSR #<shift_imm>
<Rm>, LSL <Rs>
/ <Rm>, LSR <Rs>
<Rm>, ASR #<shift_imm> ; dcalage arithmtique
<Rm>, ASR <Rs>
<Rm>, ROR #<shift_imm> ; rotation
<Rm>, ROR <Rs>
72

Instructions de traitement des


donnes
Les assignations : MOV (MOVe) et MVN (MoVe Not)
Syntaxe : MOV {<condition>} {S} <Rd>, <shifter_operand>

Les instructions daddition/soustraction : ADD (ADDition),


SUB (SUBstract)
On distingue six oprations diffrentes : ADD pour laddition, ADC pour
laddition avec retenue, SUB pour la soustraction, RSB pour la soustraction
oprandes inverss (on soustrait le second oprande source au premier), SBC
pour la soustraction avec retenue et RSC pour la soustraction avec retenue et
oprandes inverss.
Syntaxe : ADD {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
SUB {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
Avec : <Rd> : registre rsultat, <Rn> : registre contenant le premier oprande
<shifter_operand> : spcifie le second oprande selon le mode dadressage.
73

Instructions de traitement des


donnes
Les instructions logiques : AND, ORR, EOR (Exclusive
OR) et BIC (Bit Clear)
Ces instructions regroupent les quatre instructions suivantes :
ET, OU, OU Exclusif et la remise zro.
Syntaxe :
AND {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
ORR {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
EOR {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
BIC {<condition>} {S} <Rd>, <Rn>, <shifter_operand>
BIC ralise le ET logique bit bit des oprandes avec ngation pralable
du second oprande.
74

Instructions de traitement des


donnes
Les instructions de comparaison : CMP (CoMPare), CMN
(CoMpare Negative), TST (TeST) et TEQ (Test Equivalence)
Les instructions de comparaison ralisent une mise jour des bits
de code condition du CPSR par le biais doprations arithmtiques
(soustraction pour le CMP et addition pour le CMN).
Les instructions de test mettent jour ces mmes bits par le biais
dune opration logique (ET logique pour le TST et OU exclusif
pour le TEQ).
Syntaxe : CMP{<condition>} <Rn>, <shifter_operand>
CMN{<condition>} <Rn>, <shifter_operand>
TST{<condition>}
<Rn>, <shifter_operand>
TEQ{<condition>} {S} <Rn>, <shifter_operand>

75

Instructions de traitement des


donnes
Les instructions de multiplication
Il existe deux catgories de multiplication :
les multiplications normales (sur 32 bits) et
les multiplications longues (sur 64bits).
Les instructions de la premire catgorie tronquent le rsultat pour le
contenir dans un registre. Les instructions de la seconde catgorie utilisent
deux registres.
MUL {<condition>} {S} <Rd>, <Rn>, <Rs>
<Rd> <Rn> *<Rs>
MLA{<condition>} {S} <Rd>, <Rm>, <Rs>, <Rn> ;
<Rd> <Rm> *<Rs> +<Rn>
UMULL {<condition>} {S} <RdLo>, <RdHi>, <Rm>, <Rs>
<RdHi><RdLo> <Rm> *<Rs>; multiplication non signe
Multiplication signe : SMULL (Signed MULtiply Long)
76

Les instructions de chargement/rangement

Dans le cas dun chargement, le contenu de la mmoire situ ladresse


dtermine grce loprande source est rang dans un registre de destination.
Dans le cas dun rangement, le contenu du premier registre est rang en mmoire
ladresse dtermine grce loprande spcifi en deuxime position.

Modes dadressages des instructions de traitement daccs la


mmoire
Laccs la mmoire se fait toujours par le biais dun registre contenant ladresse
mmoire utiliser. Pas moins de neuf mode dadressage sont utilisables pour ces
oprations. Ces neufs modes peuvent tre classs en trois catgories :

Les accs par dplacement simple

Les accs par dplacement pr-index

Les dplacement post-index


Pour chaque catgorie, on dispose dun accs immdiat, dun accs par registre
ou dun accs par registre dcal
77

Les instructions de chargement/rangement


Adressage par dplacement simple
Ce mode permet de prciser un registre utiliser comme adresse. La valeur du registre peut tre
modifie par un dplacement immdiat sur 12bits (dplacement simple) ou par une valeur dans
un second registre (cette dernire pouvant ventuellement faire lobjet dune rotation).
Syntaxe : [<Rn>, #+/-<offset_12> ]
[<Rn>, +/- <Rm>]
[<Rn>, +/- <Rm>, {LSL / LSR / ASR / ROR / RRX} #<shift_imm>]

Adressages avec dplacement pr-index


Les modes dadressages avec dplacement simple peuvent ventuellement tre suivis dun point
dexclamation (!). Dans ce cas la valeur rsultant du calcul et permettant dadresser la mmoire
sera sauvegarde dans le registre dadresse Rn.
Exemple : R0 0x1000, [R0, #0x12]! permet daccder ladresse 0x1012 et R0 0x1012

Adressage avec dplacement post-index


Dans ce cas, le crochet fermant des adressages avec dplacement simple se positionne juste
aprs le registre dadresse Rn. Cela indique que cest la valeur de se registre est utilise pour
accder la mmoire. La valeur rsultant du calcul est utilise pour mettre jour Rn.
Exemple : R0 0x1000 ; [R0], #0x12 permet daccder ladresse 0x1000 et R0 0x1012

78

79

Modes dadressages des


instructions
LDR, STR, LDRB et STRB

Les instructions de chargement/rangement


Les instructions de chargement/rangement simples : LDR
(LoaD Register) et STR (STore Register)
Les instruction LDR et STR manipulent les 32 bits de registre Rd.
Syntaxe :
LDR {<cond>} {B} <Rd>, <adressing_mode>
B indique que le transfert concerne un octet. Loctet est transfr dans loctet
de plus faible poids du registre Rd et les 24 bits de plus fort poids sont 0
STR {<cond>} {B} <Rd>, <adressing_mode>
B indique que le transfert concerne un octet. Loctet transfr en mmoire est
loctet du plus faible poids du registre Rd
80

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

Les instructions de chargement/rangement


Les instructions de chargement /rangement de demi-mot et de chargement signes
Le chargement doit prciser sil seffectue sur la taille demande ou si une
extension de signe doit tre ralise (chargement sign).
LDRH (LoaD Register Halfword)
STRH (STore Register Halfword)
LDRSB (LoaD Register Signed Byte)
LDRSH (LoaD Register Signed Halfword)
Sur les neuf mode dadressage, seuls six sont accessibles. Les accs par
registre dcal ne sont pas admis. Par ailleurs, les accs par dplacement
immdiat utilisent des valeurs codes sur 8bits signs.
Elles peuvent tre excutes de manire conditionnelle.
Exemple : LDREQH
Syntaxe :
LDR {cond} H SH SB <Rd>, <addressing_mode>
STR {cond} H B <Rd>, <addressing_mode>
86

Les instructions de chargement/rangement

Modes dadressages des instructions


LDRH, LDRSH, STRH, LDRSB

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]

Remarque 2 : ces instructions ne permettent pas lutilisation de


dcalage
Remarque 3 : les transferts de bytes ou de halfwords vers les
registres dpendent de la reprsentation signe ou non de la valeur.
lextension du signe aux 32 bits du registre marque la diffrence
89

Les instructions de chargement/rangement

Les instructions de chargement/rangement par bloc :


LDM (LoaD Multiple) , STM (STore Multiple)
Ces instructions permettent de manipuler plusieurs registres simultanment.
Elle sappuient sur un modes dadressages spcifiques :
IA (Increment After) : on procde lincrmentation de ladresse de base aprs lopration de
lecture/criture
IB (Increment Before) : on procde lincrmentation de ladresse de base avant lopration
de lecture/criture
DA (Decrement After) : on procde la dcrmentation de ladresse de base aprs lopration
de lecture/criture
DB (Decrement Before) : on procde la dcrmentation de ladresse de base avant
lopration de lecture/criture

Syntaxe : LDM {<cond>} <addr_mode> <Rn>!, <registers>{^}


STM {<cond>} <addr_mode> <Rn>!, <registers>{^}
{^} utilis unique en mode privilgi, les registres concerns sont ceux de la banque utilisateur et
non courante
90

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

Les instructions de manipulations des registres dtats

MRS {<cond>} <Rd>, <statut_register> ; transfert du


registre dtat (CPSR ou SPSR) dans un registre gnral
MSR {<cond>} <statut_register>_<fields>, <Rm> ;
transfert du contenu dun registre gnral dans un registre
dtat
MSR {<cond>} <statut_register>_<fields>, #<immediate>
<fields> spcifie quel partie du registre doit tre modifie :
all, c (altre les 8bits poids faible) ,x (altre les bits de 8
15), s (altre les bits de 16 23) et f (les bits de 24 31)
96

Instructions diverses

Instructions de smaphores : SWP(SwaP) , SWPB (SwaP Byte)


Deux instructions permettent de grer les accs concurrents en environnement
multiprocesseurs. Ces instructions permettent de raliser des oprations de lecture/criture
mmoire atomique.
SWP : ralise un change entre un mot contenu en mmoire et le contenu dun registre
SWP{<cond>} <Rd>, <Rm>, [<Rn>] ; Rd: registre de destination,
Rm : registre source, Rn : registre contenant ladresse mmoire
SWPB : ralise un change entre un octet contenu en mmoire et le contenu dun
registre (avec extension par zro pour les bits de poids forts)

Instruction dinterruption : SWI (SoftWare Interrupt)


linstruction SWI permet de gnrer une interruption logicielle. Le seul moyen pour un programme
sexcutant en mode utilisateur dinvoquer lexcution de code en mode privilgie.

SWI{<cond>} <immed_24> ; <immed_24> : utilis par la routine dinterruption pour


dterminer le service demand au systme dexploitation.

Instructions dutilisation des coprocesseurs

Instruction dinvocation dune opration (CDP)


Instructions de transfert de blocs de registres entre un coprocesseur et la mmoire (LDC, STC)
Instructions de transfert dinformations entre registres du coprocesseur et du processeur (MRC,97
MCR)

Instructions diverses

Les pseudo instructions ADR (load ADdRess) et LDR (LoaD


Register)
Il sagit d instructions comprises par lassembleur, et remplaces par
celui-ci au moment de la compilation par de vraies instructions ARM7.
Elles permettent dautomatiser des traitements fastidieux concernant le calcul
dadresses, la rservation de valeurs en mmoire , etc.
Les deux pseudo instructions les plus rpandues sont ADR et LDR :
ADR charge dans le registre Rd ladresse correspondant ltiquette
etiquette
Syntaxe : ADR {<cond>} <Rd>, <etiquette>
Exemple :
ADR R2, myData
.
myData .int 53 (.int ou DCD)

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.

Introduction aux Processeurs embarqus


Evolution des architectures des curs ARM
Processeur ARM7TDMI
Architecture Cortex-M3
Introduction
Les modes opratoires
Les registres
Organisation de la mmoire
Fonctionnalits intgres au Bus Matrix : Bit-Banding & Data
Alignement
Organisation dun programme en mmoire & squence de dmarrage
La gestion des interruptions par le NVIC
Instructions Cortex-M3

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

Daprs ARM, il permet doptimiser lutilisation de lespace


mmoire sans dgrader les performances puisquon nest pas
oblig de basculer entre modes de fonctionnement (cas du
thumb-1). Des benchmarks raliss donnent une performance
de 1,2 DMPIS/MHz, cest--dire le Cortex-M3 excute, en
moyenne, une instruction en moins dun cycle dhorloge (1/1.2
= 0,833 cycle).

Performance et densit du code pour diffrents jeux dinstructions


ARM
103

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

2. Les modes opratoires


Une application embarque dploye sur un microcontrleur (ou tout systme
embarque) est constitue dun ensemble de bouts de codes. Ces bouts de codes
peuvent tre :
Excuts suite au dclenchement dune interruption. Dans ce cas on parle de gestionnaire
dinterruption (Interrupt Handler) ou de Routine dInterruption (ISR: Interrupt Service Routine)
Excuts en fonction de lvolution de ltat du systme (code de dmarrage dans main(), tches
utilisateur en arrire plan, etc, )

Ainsi et en fonction du type de code excut, le Cortex-M3 se trouve dans lun


des deux modes de fonctionnement :
Mode Handler : utilis quand le processeur excute des Handlers dinterruptions
Mode Thread ou user : quand le processeur excute des programmes, autres que des
Handlers (programme principal, tche utilisateur). Cest le mode par dfaut aprs un reset .
Mode
Handler
Mode
Thread
Dmarrage

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.

Le tableau suivant rcapitule les combinaisons mode Cortex / niveau de privilge


possibles :
Control [I] = 0

Control [I] = 1

Excution dun ISR

Mode Handler/ Niveau


Privileged

Non autoris

Excution dun
programme
autre quun ISR

Mode Thread/ Niveau


privileged

Mode Thread/ Niveau


Unprivileged

Tableau 1 : Combinaisons possibles mode Cortex/ niveau du privilge du code

111

Architecture Cortex-M3
2. Les modes opratoires
Pour les transitions entre ces combinaisons,
ils doivent respecter les rgles suivantes :
1.

2.

3.

4.

Au dmarrage du systme (aprs reset), le


bit control [I] = 0 et par consquent toutes
les parties code ont le niveau Priviliged
par dfaut. Ainsi on est dans le mode
Thread/ niveau Privileged
A la suite dune interruption, le Cortex-M3
passe directement en mode Handler/niveau
Privileged. A la fin du Handler, il retourne
au mode Thread avec le niveau de privilge
initial (avant Handler)
Un programme ayant le niveau Unprivileged
na pas le droit daccder au registre de
contrl et ne peut en aucun cas changer le
niveau de privilge
Un programme ayant le niveau Privileged
peut changer le niveau de privilge des
codes excuts en mode Thread, en
modifiant ltat du bit de control [I]

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

Transition par hardware


Transition par software

112

Architecture Cortex-M3
3. les Registres

3. Les registres
Le noyau du Cortex-M3 contient un ensemble de registres diviss en deux groupes :

Les registres usage gnral


R0 R12 : 12 registres de 32 bits usage gnral qui peuvent tre utiliss pour lexcution de
nimporte quelle opration (arithmtiques, logiques, transfert)
R13 : il sagit du registre de pile (Stack Register). En effet, tant donn que le Cortex-M3 utilise
deux piles (Pile principale et pile process), il sagit de deux registres matriellement distincts,
mais superposs dont laccs est contrl par le mode opratoire :
MSP (Main Stack Pointer) : registre de pile principal qui est utilis quand des applications ayant le
niveau Privileged sont excutes
PSP (Process Stack Pointer) : registre de pile de processus qui est utilis quand des applications ayant
le niveau Unprivileged sont excutes

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

Negative : un 1 indique que le rsultat de la dernire instruction est


ngatif

Zero : un 1 indique que le rsultat de la dernire instruction est nul

Carry : un 1 indique que le rsultat de la dernire instruction a gnr


une retenue (carry)

Overflow : un 1 indique que le rsultat de la dernire instruction a


dpass la taille prvue

ICI/IT
T
Except
ion
numbr

Interrupt-Continuable Instruction : linstruction en cours ne peut


tre interrompue
Toujours 1 : excution des instructions en mode Thumb
Indique le numro de linterruption que le processeur est entrain de
servir

115

Architecture Cortex-M3
3. les Registres

Registres de masque dinterruption : on distingue 3


registres qui sont :
PRIMASK : Registre de 1 bit qui permet, sil est actif, dinterdire
toutes les interruptions sauf linterruption non masquables (NMI)
et les exceptions dues une erreur matrielle (Hardware Fault).
FAULTMASK : Registre de 1 bit qui permet, sil est actif,
dinterdire toutes les interruptions lexception de linterruption
non masquable (NMI)
BASEPRI : registre de 8 bits dont la valeur indique, si elle est
diffrente de 0, le niveau de priorit des interruptions permises :
uniquement les interruptions ayant un niveau de priorit
strictement suprieur cette valeur sont autorises. Si cette
Registre de Contrle : un
valeur est gale 0, alors toutes les interruptions sont permises.

registre de 2 bits qui indique le


niveau de privilge du code en
cours dexcution ainsi que le
registre de pile utilis

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

En ce qui concerne linterconnexion entre mmoire/priphrique et bus code et data, le


Cortex-M3 intgre une matrice dinterconnexion (AHB Bus Matrix) qui permet de
multiplexer les bus code et data et de dterminer les zones mmoires pouvant tre accdes
par le code (le bus data peut accder la totalit des zones mmoires);
La matrice en plus permet de multiplexer les bus du noyau :
Les bus I-code et D-code sont respectivement la continuit des bus Code et Data du noyau.
Ces bus ne peuvent accder qu la zone infrieure (0x00000000 0x20000000 = 0,5 GO) qui est
destine contenir du code excutable du programme ainsi que les donnes (variables dclares du
programme). Gnralement, les constructeurs placent une mmoire Flash dans cette zone.
System bus peut vhiculer, selon les bits de slection, le bus Code ou Data.
Ce bus peut accder pratiquement la totalit de la zone mmoire suprieure (0x20000000
0xFFFFFFFF = 3,5 G0) qui est subdivise en plusieurs espaces :

Mmoire RAM interne


Zone des priphriques ajouts par le constructeur du microcontrleur (CA/N, Timer, port Ethernet, )
Mmoire RAM externe
Zone de priphriques externes
Enfin, une zone ddie au constructeur pour placer son propre Firmware

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

Plan de la mmoire du cortex-M3

Firmware : code ncessaire agissant trs ba


niveau (Driver) et permettant aux application
dutiliser le Matriel dune faon transparent

Espace utilis pour adresser les priphrique


du Cortex-M3 : Contrleur dIT, Timer System
.

Espace utilis pour adresser les priphriques


ajouts par les constructeurs de microcontrle

Espace utilis pour stocker les donnes relativ


au code

Espace utilis pour stocker le code excutable


On peut galement stocker des donnes
121

Cortex M3
5. Fonctionnalits intgrs du Bus Matrix : Bit-Banding &Data Alignement

5. Fonctionnalits intgres du Bus Matrix : Bit-Banding & Data


Alignement
En plus du multiplexage des bus, le Bus Matriw intgre galement dautres
fonctionnalits : Data Alignement, Bit-Banding

Accs aux donnes non alignes (Unaligned Data Access)


Etant donn que laccs une mmoire ne se fait que par mot (32bits) correspondant une
case mmoire, les donnes stockes devraient tre alignes, c.a.d quune donne doit tre
place dans une case mmoire 32 bits quelque soit sa taille .
bi 31 ......
t 24

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

2- Masquage et modification du bit i


Reg = Reg OR 2i

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.

Avec cette faon, un problme peut se poser : entre la premire instruction et la


deuxime ou bien entre les instructions 2 et 3, un Handler ou une tche pourrait tre
lanc et changer ltat de la variable x. Ceci peut causer la corruption des donnes et
un dysfonctionnement du systme.

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.

Le Cortex-M3 propose deux zones mmoires de 1MO pouvant tre accdes


directement bit par bit : ces zones sont appeles Bit-Band-Region.

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

La correspondance entre un bit de la zone Bit-Band Region et le mot correspondant de la


zone Alias se fait comme suit :
Le bit 0 de la premire case mmoire de la zone Bit-Band Region correspond au 1er mot (mot0) de la
zone Alias (adresse offset = 0), le deuxime bit correspond au 2me mot (adresse offset = 4), le bit 31
correspond au registre 31 (adresse offset = 31*4 = 0x7C)
Le bit 1 de la deuxime case mmoire de la zone Bit-Band Region correspond au mot 32 (adresse offset
= 32*4 = 0x80)

127

Correspondance entre bits de la Bit-Band Region et mots de la zone A

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

Pour avoir ladresse absolue du mot, il suffit dadditionner ladresse de base de la


zone Alias :
Alias_Adresse = Alias_Base + Bit-Band_Offset*32 +i*4

Les adresses de base tant donnes par le tableau suivant :


RAM

Peripheral

Bit-Band Base
address

0x2000 0000

0x4000 0000

Alias Base Adress

0x2200 0000

0x4200 0000

128

Architecture Cortex-M3
6. Organisation dun programme en mmoire & squence de dmarrage

Une fois le programme compil et charg dans la mmoire dun systme


base du Cortex-M3, la mmoire aura la structure suivante :

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

Le fait dintgrer le NVIC au noyau MC3 permet, dune part


damliorer les performances du traitement des interruptions en
acclrant la communication entre le contrleur et le noyau.
Dautre part, les codes dvelopps ainsi que les systmes
dexploitation temps rel peuvent tre facilement ports entre
micro-contrleurs base du processeur Cortex-M3, puisque la
structure des registres du NVIC (et du Systick) ainsi que leurs
adresses sont les mmes pour tous.

Le NVIC peut avoir jusqu 255 entres pour les requtes


dinterruptions :
Une entre NMI (Non Maskable Interrupt) : Cette interruption,
contrairement aux autres, ne peut tre masque par soft. Pour la majorit
des processeur cette entre est reli au chien de garde (watchdog).
Jusqu 14 entres pour les exceptions (interruptions synchrone) gnres
par les composants internes du processeur Cortex-M3 (exemples : UAL suite
Overflow, Bus suite un accs erron, Systick, etc)
Jusqu 240 entres pour des interruptions externes gnres par les133

Architecture Cortex-M3
7. La gestion des interruptions par le NVIC
Num
ro

Type
dexception

Niveau de
priorit

Description

Reset

-3 (maximum,
fig)

Dclenche quand un signal de reset est dtect

NMI

-2 (fig)

Entre dinterruption non masquable


gnralement connecte au WatchDog

Hard Fault

-1 (fig)

Erreur de matriel pour lequel aucune routine na


t prvue

MemManageFa
ult

0
(paramtrable)

Dclenche en cas dune tentative daccs une


zone mmoire non autoris

Bus Fault

1
( paramtrable)

Gnre quand linterface du bus AHB reoit une


erreur

Usage Fault

2
(paramtrable)

Dclenche par une erreur au niveau dun


programme (exemple : division par 0)

7-10

Rserv

Pas utilise

11

SVCall

3
(paramtrable)

Dans le cas dun appel un service systme

12

DebugMonitor

4
(paramtrable)

Dclenche quand un point de break (ou watch)


est atteint ou bien quand le dbogage est activ

13

Rserv

Pas utilise

14

PendSV

Requte de service dexception

134

Architecture Cortex-M3
7. La gestion des interruptions par le NVIC

Quand une exception autorise est dclenche, le CPU


commence par rcuprer ladresse de la routine excuter
partir dun emplacement mmoire spcifique connu davance.
Adresse
Vecteur
Lensemble des adresses des routines
0x00
Adresse de dbut de la pile
relatives aux diffrents sources
principale
dinterruptions forme la table de
0x04
Reset
vecteurs dinterruptions.
0x08

Dans le cas du Cortex-M3, la table0x0C


0x10
de vecteurs dinterruptions commence
0x18 :
partir de ladresse 0 de la zone code

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

Droulement des interruptions

Quand une interruption autorise est dclenche par un


priphrique, le NVIC force le processeur la servir. Il commence
par sauvegarder un certain nombre de registres dans la pile, et
paralllement, il rcupre ladresse de la routine relative
linterruption. Une fois lexcution de la routine est termine, les
contenus des registres sauvegards sont rcuprs partir de la
pile ainsi que ladresse suivante du programme principal

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.

la fin du traitement IRQj, Cortex teste sil ya dautres interruptions en


attente. Si oui, il rcupre ladresse de la routine relative avant de retourner au 139

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

Exemple dinstruction thumb 16 bits

ADD R1, R1, #10


R1 R1 + 10

Mme si ce format prsente un avantage quant la taille, il ne permet dutiliser


que 8 registres du processeur, et uniquement deux oprandes : puisque le registre
R1 joue le rle de source et destination.

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

Dans ce cas, le format est un peu plus complexe :


Le code opratoire est divis sur deux champs : Major Opcode qui dtermine le type de
manipulations excuter (transfert, oprations arithmtiques, oprations logiques, ) et
Minor Opcode qui dtermine lopration mme (ADD Major code 00 et Minor code
0100)
2 oprandes : un registre jusqu 16 et une valeur immdiate sur 12 bits
Un registre destination (jusqu 16 possibles)
146

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

Les instructions ARM possdent la syntaxe suivante:

Exemple : ADD R1, R1, #10 ; ADD R8, R3, #200

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.

Mais il est possible dimposer au compilateur de choisir un format prcis en


utilisant les suffixes W (Wide : 32 bits) et N (Narrow : 16 bits). Dans ce cas le
compilateur va essayer de coder linstruction au format choisi. En cas
dimpossibilit, il gnre une erreur.
ADD.W (coder laddition dur 32 bits)
ADD.N (coder laddition sur 16 bits)
148

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

MOV Rd, #valeur

Rd valeur

MOV Rd, Rn

Rd Rn

LDRB Rd, [Rn, #offset]

Lire un byte de la case mmoire dadresse Rn + offset

LDRH Rd, [Rn, #offset]

Lire 16 bits (Half Word) de la case mmoire dadresse Rn + offset

LDR Rd, [Rn, #offset]

Lire un mot de 32 bits de la case mmoire dadresse Rn + offset

STRB Rd, [Rn, #offset]

Ecrire le byte de poids faible de Rd dans la case mmoire dadresse Rn + offset

LDRH Rd, [Rn, #offset]

Ecrire 16 bits poids faible de Rd dans la case mmoire dadresse Rn + offset

LDR Rd, [Rn, #offset]

Ecrire le contenu de Rd dans la case mmoire dadresse Rn + offset

Push Rs

Transfrer le contenu de Rs vers la case mmoire de la pile (@R13-4)

Pop rd

Transfrer le contenu de la case mmoire de la pile (@R13) vers Rd


149

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

ADD Rd, Rd, Rn

Rd Rd + Rn

ADD Rd, Rd, #valeur

Rd Rd + valeur

ADC Rd, Rn, Rm

Rd Rn + Rm + Carry

ADC Rd, Rd, #valeur

Rd Rd + valeur + carry

SUB Rd, Rn, Rm

Rd Rn - Rm

SUB Rd, Rn, #valeur

Rd Rn - valeur

SUB

Soustraction

MUL

Multiplication 16
bits (rsultat sur
32bits)

MUL Rd, Rd, Rn

Rd Rd*Rn

MUL Rd, Rn, Rm

Rd Rn*Rm

UMULL

Multiplication
32bits non sign
(rsultat 64 bits)

UMULL Rd1, Rd2, Rn,


Rm

{rd1, Rd2} Rn*Rm

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

AND Rd, Rd, #valeur

Rd Rd ET valeur

AND Rd, Rn, Rm

Rd Rn ET Rm

ORR

OU logique bit
bit

Mme exemples

EOR

XOR bit bit

Mmes exemples

BIC

Bits Clear : Mise


zro de bits

BIC Rd, Rd, Rn

Rd Rd ET (Rm)

BIC Rd, Rn, #valeur

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

Bits du registre d tat


modifi

=0

Z=1

Dpasse 32 bits

C=1

<0

N=1

>0

N=0

A< B

N=1

A>B

N=0

* Les instructions 32 bits Thumb-2 ne


mettent pas jour automatiquement
les bits du registre dtat. Il faut
obligatoirement ajouter le suffixe S
(State), sinon les bits ne seront pas
152
mis jour

Architecture Cortex-M3
8. Instructions Cortex-M3
Les conditions COND 16 sont disponibles :
COND

Signification

Bits dtat

EQ

EQual : gal

NE

Not Equal : diffrent

CS/HS

Carry Set/unsigned Higher or Same : suprieur ou gal non sign

CC/LO

Carry Clear/ unsigned Lower : infrieur non sign

MI

Minus/negative : ngatif

PL

Plus/positive or zero : positif ou nul

VS

oVerflow Set : dbordement

VC

oVerflow Clear : pas de dbordement

HI

Unsigned Higher : suprieur non sign

C.Z

LS

Unsigned Lower or Same : infrieur ou gal non sign

C.Z

GE

Signed Greater than or Equal : suprieur ou gal sign

N.V+N.V

LT

Signed LessThan : infrieur sign

NV

GT

Signed Greater Than : suprieur sign

Z.N.V + N.V

LE

Signed Less than or Equal : infrieur ou gal sign

Z+NV

AL

Always : excution inconditionnelle


153

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

ADDEQ R0, R1, #1

{
}
else
{
y=x+1
}

ADDNE R1, R0, #1


En supposant que R0 contient x et R1 y

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]

Branch si COND vraie.

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

Le programme suivant montre lutilisation des instructions de saut. Le


programme permet de faire appel une fonction (10 fois). Un code C est
galement donn :

Code C

Coe Assembleur

i = 10;
While (i !=0 )

MOV R1, #10 ;


// Initialiser R1 avec le nombre dappels (10)
Boucle: CBZ R1, Bouclefin ; // Saut vers Bouclefin (fin itration) si R1 = 0
BL func1 ;
// Faire appel la fonction func1
SUB R1, #1 ;
// R1 R1 - 1
B Boucle
// Faire un saut vers le label Boucle

{
func1 ( );
}

Bouclefin : ..

156

Chapitre 5 : Multiprocesseurs,
multi-coeurs et processeurs spcialiss
1. Introduction aux architectures parallles
2. Architectures Multiprocesseurs

Modles mmoire partage


Modles mmoire distribue

3. Architectures multi-curs

Dfinition
Architecture des caches
Cohrence des caches

4. Processeurs spcialiss & Architectures


hybrides

Dfinition
Les processeurs graphiques
Comparaison GPU/CPU

157

Introduction aux architectures parallles

158

Introduction aux architectures parallles

159

Introduction aux architectures parallles

160

Introduction aux architectures parallles

161

Introduction aux architectures parallles

162

Introduction aux architectures parallles

163

Introduction aux architectures parallles

164

Introduction aux architectures parallles

165

Introduction aux architectures parallles

166

Introduction aux architectures parallles

167

Introduction aux architectures parallles

168

Introduction aux architectures parallles

169

Introduction aux architectures parallles

170

Chapitre 5 : Multiprocesseurs,
multi-coeurs et processeurs spcialiss
1. Introduction aux architectures parallles
2. Architectures Multiprocesseurs

Modles mmoire partage


Modles mmoire distribue

3. Architectures multi-curs

Dfinition
Architecture des caches
Cohrence des caches

4. Processeurs spcialiss & Architectures


hybrides

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

Modles mmoire partage


Modles mmoire distribue

3. Architectures multi-curs

Dfinition
Architecture des caches
Cohrence des caches

4. Processeurs spcialiss & Architectures


hybrides

Dfinition
Les processeurs graphiques
Comparaison GPU/CPU

184