Vous êtes sur la page 1sur 96

Conception et systèmes embarqués

complexes
Master 2004

Antoine Fraboulet, Tanguy Risset


antoine.fraboulet@insa-lyon.fr, tanguy.risset@ens-lyon.fr
Lab CITI, INSA de Lyon, Lab LIP, ENS de Lyon

- p. 1/134
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs

Processeurs embarqués
embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 2/134
Part de marché

● Processeurs embarqués n Quel est le le microprocesseur le plus vendu ?


Introduction u Réponse classique: "Le Pentium: 92% du marché"
● Part de marché
● Contradiction ?
● Variété des processeurs
n Faux!......
embarqués
u En fait les Pentium ne représentent que 2% des
Architecture des processeurs
microprocesseurs vendus dans le monde.
Différents types de processeurs
embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 3/134
Contradiction ?

● Processeurs embarqués n Alors d’ou vient la position d’Intel (16% du marché des
Introduction
● Part de marché
semi-conducteurs) ?
● Contradiction ?
● Variété des processeurs
n processeurs: 2% du silicium, 30% des revenus
embarqués

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 4/134
Et au sein des processeurs

● Processeurs embarqués n 3 milliards de processeurs 8 bits vendus par an (8051, 6805


Introduction
● Part de marché
etc.)
● Contradiction ?
● Variété des processeurs
n 32 bits (Pentium, Athlon, mais aussi PowerPC, 68000, MIPS,
embarqués
ARM etc.)
Architecture des processeurs

Différents types de processeurs


n La plupart (98%) sont embarqués (3 fois plus d’ARM vendus
embarqués que de Pentium)
Compilation pour processeurs
embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 5/134
Variété des processeurs embarqués

● Processeurs embarqués

Introduction
● Part de marché
● Contradiction ?
● Variété des processeurs
embarqués

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

n Les applications sont plus variées que pour les ordinateurs


n Beaucoup de processeurs embarqués sont des processeurs
de bureau qui n’ont pas percés (MIPS, 68K, SPARC, ARM,
PowerPC)

- p. 6/134
● Processeurs embarqués

Introduction

Architecture des processeurs


● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
Architecture des processeurs
Set Computer
● Exemple: instructions de l’ISA
du Pentium
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 7/134
numérique
Architecture "Von Neuman" ou "Princeton"

● Processeurs embarqués n La mémoire contient les données et les instructions


Introduction
n L’unité centrale (CPU) charge les instructions depuis la
Architecture des processeurs
● Architecture "Von Neuman" mémoire.
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
n Un ensemble de registres aide le CPU:
● CISC: Complex Instruction u Compteur d’instructions (Program counter: PC),
Set Computer
● Exemple: instructions de l’ISA u Registre d’instruction (Instruction register: IR)
du Pentium
● RISC: Reduced Instruction u Pointeur de pile (stack pointer: SP)
Set Computer
● Exemple: instructions de l’ISA u Registres à usage général (Accumulateur: A)
du MIPS
● Le CPU
● Le pipeline RISC: exemple du Memory Proc
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 8/134
numérique
Architecture Harvard

● Processeurs embarqués n Données et instructions dans des mémoires séparées


Introduction
n Autorise deux accès simultanés à la mémoire.
Architecture des processeurs
● Architecture "Von Neuman" n Utilisé pour la plupart des DSP
ou "Princeton"
● Architecture Harvard u meilleure bande passante
● Le jeu d’instruction
● CISC: Complex Instruction u Performances plus prédictibles
Set Computer
● Exemple: instructions de l’ISA
du Pentium Instruction Proc
● RISC: Reduced Instruction
Set Computer Memory
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
Data
● Exemple d’exécution sans
pipeline Memory
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 9/134
numérique
Le jeu d’instruction

● Processeurs embarqués n Le jeu d’instruction (Instruction Set Architecture: ISA) a une


Introduction
importance capitale
Architecture des processeurs u Il détermine les instructions élémentaires exécutées par le
● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard
CPU.
● Le jeu d’instruction u C’est un équilibre entre la complexité matérielle du CPU
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
et la facilité d’exprimer les actions requises
du Pentium u On le représente de manière symbolique (ex: ARM, code
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
sur 32 bits):
du MIPS
● Le CPU
LDR r0,[r8] ; commentaire
● Le pipeline RISC: exemple du
MIPS
lab: ADD r4,r0,r1 ;
● Exemple d’exécution sans
pipeline n Deux classes de jeux d’instructions:
● Exemple d’exécution avec
pipeline u CISC: Complex Instruction Set Computer
● Parallélisme au sein du
processeur u RISC: Reduce Instruction Set Computer
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 10/134
numérique
CISC: Complex Instruction Set Computer

● Processeurs embarqués n Une instruction peut designer plusieurs opérations


Introduction
élémentaires.
Architecture des processeurs
● Architecture "Von Neuman"
Ex: un load, une opération arithmétique et un store,
ou "Princeton"
● Architecture Harvard
Ex: calculer une interpolation linéaire de plusieurs
● Le jeu d’instruction
● CISC: Complex Instruction
valeurs en mémoire.
Set Computer
● Exemple: instructions de l’ISA
n Accélération par des mécanismes matériels complexes
du Pentium
● RISC: Reduced Instruction
Set Computer
n Grandes variation de taille et de temps d’exécution pour les
● Exemple: instructions de l’ISA
du MIPS
instructions
Résulte en un code compact mais complexe à générer.
● Le CPU
● Le pipeline RISC: exemple du
n
MIPS
● Exemple d’exécution sans
pipeline
n Vax, Motorola 68000, Intel x86/Pentium
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 11/134
numérique
Exemple: instructions de l’ISA du Pentium

● Processeurs embarqués JE EIP + displacement


4 4 8
Introduction
JE Condition Displacement

Architecture des processeurs


● Architecture "Von Neuman" Call
ou "Princeton" 8 32
● Architecture Harvard
● Le jeu d’instruction
CALL Offset
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
Mov $EBX, [EDI+displacement]
6 1 1 8 8
du Pentium
● RISC: Reduced Instruction MOV d w r−m postbyte Displacement
Set Computer
● Exemple: instructions de l’ISA
du MIPS Push ESI
● Le CPU 5 3
● Le pipeline RISC: exemple du
MIPS PUSH Reg
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Add $EAX, Immediate
pipeline 4 3 1 32
● Parallélisme au sein du
ADD Reg w Immediate
processeur
● Parallélisme au sein du
processeur
● Mémoire Test $EDX, Immediate
7 1 8 32
Différents types de processeurs
TEST w PostByte Immediate
embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 12/134
numérique
RISC: Reduced Instruction Set Computer

● Processeurs embarqués n Petites instructions simples, toutes de même taille, ayant


Introduction
toutes (presque) le même temps d’exécution
Architecture des processeurs
● Architecture "Von Neuman"
n Pas d’instruction complexe
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
n Accélération en pipelinant l’exécution (entre 3 et 7 étages de
● CISC: Complex Instruction pipeline pour une instruction) ⇒ augmentation de la vitesse
Set Computer
● Exemple: instructions de l’ISA d’horloge
du Pentium
● RISC: Reduced Instruction
Set Computer
n Code plus simple à générer, mais moins compact
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
n Tous les microprocesseurs modernes utilisent ce paradigme:
● Le pipeline RISC: exemple du
MIPS
SPARC, MIPS, ARM, PowerPC, etc.
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 13/134
numérique
Exemple: instructions de l’ISA du MIPS

● Processeurs embarqués I TYPE (Immediate)


5 5
Introduction
op rs rt Immediate

Architecture des processeurs


● Architecture "Von Neuman" J TYPE (Jump)
ou "Princeton" 6 26
● Architecture Harvard
● Le jeu d’instruction op Immediate
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA R TYPE (Register)
du Pentium
● RISC: Reduced Instruction op rs rt rd sa funct
Set Computer

I-Type:
● Exemple: instructions de l’ISA
du MIPS n
● Le CPU
● Le pipeline RISC: exemple du LW rt, offset(base)
MIPS
● Exemple d’exécution sans
pipeline
n J-Type:
● Exemple d’exécution avec
pipeline
JUMP target
R-Type:
● Parallélisme au sein du
processeur n
ADD rd,rt,rs
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 14/134
numérique
Le CPU

● Processeurs embarqués n L’unité de contrôle configure le chemin de donnée suivant


Introduction
l’instruction à exécuter.
Architecture des processeurs
● Architecture "Von Neuman"
n L’exécution d’une instruction est décomposée en plusieurs
ou "Princeton"
● Architecture Harvard phases d’un cycle.
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
Processor Datapath
● Exemple: instructions de l’ISA
du Pentium ALU
● RISC: Reduced Instruction Control unit
Set Computer control/Status
● Exemple: instructions de l’ISA Register File
du MIPS
● Le CPU
● Le pipeline RISC: exemple du PC IR
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du Memory
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 15/134
numérique
Le pipeline RISC: exemple du MIPS

● Processeurs embarqués n Le pipeline dépend de l’architecture, pour le MIPS:


Introduction u Instruction Fetch (IF, Fetch):
Architecture des processeurs
● Architecture "Von Neuman"
charge l’instruction dans l’IR
ou "Princeton" u Instruction Decode (ID, Decode):
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
décode l’instruction et met en place le contrôle du chemin
Set Computer
● Exemple: instructions de l’ISA
de donnée
du Pentium u Execute (Ex): exécute le calcul dans le chemin de
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
donnée.
du MIPS u Memory access (Mem): accède la mémoire
● Le CPU
● Le pipeline RISC: exemple du u Write Back (WB): écrit dans le banc de registre
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 16/134
numérique
Le pipeline RISC: exemple du MIPS

● Processeurs embarqués n Physiquement, l’architecture du processeur est organisée en


Introduction
calculs combinatoires pour chaque étape de pipeline,
Architecture des processeurs
● Architecture "Von Neuman"
séparés par des registres.
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
du Pentium
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 17/134
numérique
Le pipeline RISC: exemple du MIPS

● Processeurs embarqués n Lorsque l’instruction suivante ne peut pas être exécutée tout
Introduction
de suite, cela crée une "bulle".
Architecture des processeurs
● Architecture "Von Neuman"
n Par exemple une addition utilisant un registre qui vient d’être
ou "Princeton"
● Architecture Harvard chargé doit être retardé d’un cycle.
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
du Pentium
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 18/134
numérique
Exemple d’exécution sans pipeline

● Processeurs embarqués n Avant le début de l’exécution de l’instruction à l’adresse 100


Introduction

Architecture des processeurs


Processor Datapath
● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard
ALU
● Le jeu d’instruction
Control unit
● CISC: Complex Instruction control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA
PC IR
du Pentium
● RISC: Reduced Instruction
100 R2 R3
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
Memory
pipeline 100 la R0,500 500 10
● Parallélisme au sein du
processeur
104 add R1,R0,1
● Parallélisme au sein du
processeur
108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 19/134
numérique
cycle 1

● Processeurs embarqués n Chargement de l’instruction


Introduction

Architecture des processeurs Processor Datapath


● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard ALU
● Le jeu d’instruction Control unit
● CISC: Complex Instruction control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA IR
du Pentium PC
● RISC: Reduced Instruction
Set Computer 100 la R0,500 R2 R3
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Memory
pipeline
100 la R0,500 500 10
● Parallélisme au sein du
processeur 104 add R1,R0,1
● Parallélisme au sein du
processeur 108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 20/134
numérique
cycle 2

● Processeurs embarqués n Décodage de l’instruction


Introduction

Architecture des processeurs Processor Datapath


● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard ALU
● Le jeu d’instruction Control unit
● CISC: Complex Instruction control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA IR
du Pentium PC
● RISC: Reduced Instruction
Set Computer 100 la R0,500 R2 R3
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Memory
pipeline
100 la R0,500 500 10
● Parallélisme au sein du
processeur 104 add R1,R0,1
● Parallélisme au sein du
processeur 108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 21/134
numérique
cycle 3

● Processeurs embarqués n Exécution (rien pour load)


Introduction

Architecture des processeurs Processor Datapath


● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard ALU
● Le jeu d’instruction Control unit
● CISC: Complex Instruction control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA IR
du Pentium
PC
● RISC: Reduced Instruction
Set Computer 100 la R0,500 R2 R3
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Memory
pipeline
100 la R0,500 500 10
● Parallélisme au sein du
processeur 104 add R1,R0,1
● Parallélisme au sein du
processeur 108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 22/134
numérique
cycle 4

● Processeurs embarqués n Accès mémoire


Introduction

Architecture des processeurs


Processor Datapath
● Architecture "Von Neuman"
ou "Princeton"
ALU
● Architecture Harvard
● Le jeu d’instruction
Control unit
● CISC: Complex Instruction
control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA PC IR
du Pentium
● RISC: Reduced Instruction
100 la R0,500 R2 R3
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
Memory
pipeline 100 la R0,500 500 10
● Parallélisme au sein du
processeur
104 add R1,R0,1
● Parallélisme au sein du
processeur
108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 23/134
numérique
cycle 5

● Processeurs embarqués n Write Back


Introduction

Processor Datapath
Architecture des processeurs
● Architecture "Von Neuman"
ou "Princeton" ALU
● Architecture Harvard
● Le jeu d’instruction
Control unit
● CISC: Complex Instruction
control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA PC IR
du Pentium 10
● RISC: Reduced Instruction
100 la R0,500 R2 R3
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
Memory
pipeline 100 la R0,500 500 10
● Parallélisme au sein du
processeur
104 add R1,R0,1
● Parallélisme au sein du
108 sw R1,500
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 24/134
numérique
Bilan architecture pipelinée

● Processeurs embarqués n Exécution non pipelinée:


Introduction u 5 cycles pour exécuter une instruction
Architecture des processeurs u ⇒ 15 cycles pour 3 instructions.
● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
du Pentium
● RISC: Reduced Instruction
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 25/134
numérique
Exemple d’exécution avec pipeline

● Processeurs embarqués n Chargement de l’instruction load


Introduction

Architecture des processeurs Processor Datapath


● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard ALU
● Le jeu d’instruction Control unit
● CISC: Complex Instruction control/Status
Set Computer R0 Register File R1
● Exemple: instructions de l’ISA IR
du Pentium PC
● RISC: Reduced Instruction
Set Computer 100 la R0,500 R2 R3
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Memory
pipeline
100 la R0,500 500 10
● Parallélisme au sein du
processeur 104 add R1,R0,1
● Parallélisme au sein du
processeur 108 sw R1,500
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 26/134
numérique
cycle 2

● Processeurs embarqués n Décodage de l’instruction load


Introduction
n et Chargement de Rien (bulle car l’instruction suivante
Architecture des processeurs
● Architecture "Von Neuman" retardée)
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction Processor Datapath
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA ALU
du Pentium Control unit load
● RISC: Reduced Instruction
Set Computer
control/Status
● Exemple: instructions de l’ISA R0 Register File R1
du MIPS PC IR
● Le CPU
● Le pipeline RISC: exemple du 104 R2 R3
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
Memory
processeur
100 la R0,500 500 10
● Mémoire

Différents types de processeurs


104 add R1,R0,1
embarqués
108 sw R1,500
Compilation pour processeurs
embarqués

Exemple de l’appareil photo


- p. 27/134
numérique
cycle 3

● Processeurs embarqués n Exécution de l’instruction load (rien)


Introduction
n Décodage de rien
Architecture des processeurs
● Architecture "Von Neuman" n Chargement de l’instruction add
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
Processor Datapath
Set Computer
● Exemple: instructions de l’ISA
du Pentium
ALU
● RISC: Reduced Instruction Control unit
Set Computer control/Status
● Exemple: instructions de l’ISA R0 Register File R1
du MIPS IR
● Le CPU PC 10
● Le pipeline RISC: exemple du add R1,R0,1
MIPS
104 R2 R3
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur Memory
● Mémoire
100 la R0,500 500 10
Différents types de processeurs 104 add R1,R0,1
embarqués
108 sw R1,500
Compilation pour processeurs
embarqués

Exemple de l’appareil photo


- p. 28/134
numérique
cycle 4

● Processeurs embarqués n Accès mémoire de l’instruction load


Introduction
n Exécution de rien
Architecture des processeurs
● Architecture "Von Neuman" n Décodage de l’instruction add
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
n Chargement de l’instruction store
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA Processor Datapath
du Pentium
● RISC: Reduced Instruction
add
Set Computer ALU
● Exemple: instructions de l’ISA Control unit
du MIPS
control/Status add
● Le CPU
● Le pipeline RISC: exemple du R0 Register File R1
MIPS PC IR
● Exemple d’exécution sans
pipeline 108 sw R1,500 R2 R3
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
load
● Mémoire

Différents types de processeurs


Memory
embarqués 100 la R0,500 500 10

Compilation pour processeurs


104 add R1,R0,1
embarqués
108 sw R1,500
Exemple de l’appareil photo
- p. 29/134
numérique
cycle 5

● Processeurs embarqués n Write Back de l’instruction load


Introduction
n Accès mémoire de rien
Architecture des processeurs
● Architecture "Von Neuman" n Exécution de l’instruction add (bypass)
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
n Décodage de l’instruction store
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA Processor Datapath
du Pentium
● RISC: Reduced Instruction
sw
Set Computer ALU
● Exemple: instructions de l’ISA Control unit
du MIPS
control/Status load
● Le CPU
● Le pipeline RISC: exemple du
R0 Register File R1
MIPS PC IR
● Exemple d’exécution sans 10
pipeline 116 R2 R3
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


Memory
embarqués 100 la R0,500 500 10

Compilation pour processeurs


104 add R1,R0,1
embarqués
108 sw R1,500
Exemple de l’appareil photo
- p. 30/134
numérique
cycle 6

● Processeurs embarqués n Write Back de rien


Introduction
n Accès mémoire de l’instruction add (rien)
Architecture des processeurs
● Architecture "Von Neuman" n Exécution de l’instruction store (rien)
ou "Princeton"
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
Processor Datapath
Set Computer
● Exemple: instructions de l’ISA
ALU
du Pentium add
● RISC: Reduced Instruction Control unit
Set Computer control/Status
● Exemple: instructions de l’ISA R0 Register File R1
du MIPS IR
● Le CPU PC 10
● Le pipeline RISC: exemple du
MIPS
120 R2 R3
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du sw
processeur
● Parallélisme au sein du
processeur Memory
● Mémoire 100 la R0,500 500 10
Différents types de processeurs 104 add R1,R0,1
embarqués
108 sw R1,500
Compilation pour processeurs
embarqués

Exemple de l’appareil photo


- p. 31/134
numérique
cycle 7

● Processeurs embarqués n Write Back de l’instruction add


Introduction
n Accès mémoire de l’instruction store (bypass)
Architecture des processeurs
● Architecture "Von Neuman"
ou "Princeton" Processor Datapath
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction ALU
Set Computer Control unit add
● Exemple: instructions de l’ISA
control/Status
du Pentium
● RISC: Reduced Instruction R0 Register File R1
Set Computer PC IR 11
● Exemple: instructions de l’ISA
10
du MIPS 124 R2 R3
● Le CPU
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
sw
pipeline
● Parallélisme au sein du Memory
processeur
100 la R0,500 500 11
● Parallélisme au sein du
processeur
104 add R1,R0,1
● Mémoire
108 sw R1,500
Différents types de processeurs
embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 32/134
numérique
Bilan architecture non pipelinée

● Processeurs embarqués n Exécution non pipelinée:


Introduction u 5 cycles pour exécuter une instruction
Architecture des processeurs u ⇒ 15 cycles pour 3 instructions.
● Architecture "Von Neuman"
ou "Princeton"
● Architecture Harvard n Exécution pipelinée:
u 5 cycles pour exécuter une instruction
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
u 8 cycles pour 3 instructions.
du Pentium
● RISC: Reduced Instruction u ⇒ sans branchement, une instruction par cycle
u Un branchement (conditionnel ou pas) interrompt le
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU pipeline car il faut attendre de décoder l’adresse de
branchement pour charger l’instruction suivante ⇒
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline quelques cycles d’inactivité (pipeline stall)
● Exemple d’exécution avec
pipeline u Lors d’un branchement, certain ISA autorisent l’utilisation
● Parallélisme au sein du
processeur de ces delai slots: une ou deux instructions après le
● Parallélisme au sein du
processeur branchement sont exécutées, que le branchement soit
● Mémoire

Différents types de processeurs


pris ou pas (comme si elles étaint écrites avant le
embarqués branchement).
Compilation pour processeurs
embarqués

Exemple de l’appareil photo


- p. 33/134
numérique
Parallélisme au sein du processeur

● Processeurs embarqués
Indépendamment du pipeline, Deux paradigmes dominants:
Introduction n Super Scalaire
Architecture des processeurs u Duplication des unités,
● Architecture "Von Neuman"
ou "Princeton" u Répartition au vol des instructions sur les unités
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
disponibles (re-ordonnancement des instructions: out of
Set Computer
● Exemple: instructions de l’ISA
order execution)
du Pentium u Exemple: le PowerPC 970 (4 ALU, 2 FPU)
● RISC: Reduced Instruction
Set Computer u Efficace mais complexifie l’unité de contrôle (problème
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
des interruptions)
n Very Large Instruction Word (VLIW)
● Le pipeline RISC: exemple du
MIPS
● Exemple d’exécution sans
pipeline u Duplication des unités,
● Exemple d’exécution avec
pipeline u L’ordonnancement des instructions est fixé à la
● Parallélisme au sein du
processeur compilation (tout se passe comme si les instructions
● Parallélisme au sein du
processeur pouvait être regroupe sur 64 bits, 128 bits etc.)
● Mémoire
u Inventé par Josh Fisher (Yale) à partir du trace scheduling
Différents types de processeurs
embarqués u Les processeurs VLIW sont tous basés sur les
Compilation pour processeurs
embarqués
architecures RISC, avec entre 4 et 8 unités.
u Exemple: TriMedia (Philips), Itanium IA64 (Intel).
Exemple de l’appareil photo
- p. 34/134
numérique
Parallélisme au sein du processeur

● Processeurs embarqués
Une autre approche possible: instructions SIMD.
Introduction n Modification du data-path pour proposer des opérations
Architecture des processeurs
● Architecture "Von Neuman"
parallèles sur 16 ou 8 bits
ou "Princeton"
● Architecture Harvard n Exemple: Sun Visual Instruction Set, Intel Pentium MMX,
● Le jeu d’instruction
● CISC: Complex Instruction Philips TriMedia
Set Computer
● Exemple: instructions de l’ISA n Gains importants sur certains traitements mais très peu
du Pentium
● RISC: Reduced Instruction
Set Computer
utilisé en pratique (difficile à inférer par le compilateur)
● Exemple: instructions de l’ISA u Librairies écrites en assembleur (programmes non
du MIPS
● Le CPU
● Le pipeline RISC: exemple du
portables)
MIPS u Fonction C représentant les instructions assembleurs
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec
(compiler instrisic)
pipeline u Exemple: instruction ifir8ii R1, R2, R3 du Trimedia:
● Parallélisme au sein du
8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits
processeur
● Parallélisme au sein du
processeur
● Mémoire
* * * *

Différents types de processeurs


+
embarqués

Compilation pour processeurs


embarqués 32 bits

Exemple de l’appareil photo


- p. 35/134
numérique
Mémoire

● Processeurs embarqués n Plusieurs technologies pour les mémoires:


Introduction u Mémoires statiques (SRAM): petites, rapides,
Architecture des processeurs
● Architecture "Von Neuman"
consommatrices, peu denses (chères).
ou "Princeton" u Mémoires dynamiques (DRAM): grandes, lentes, très
● Architecture Harvard
● Le jeu d’instruction
● CISC: Complex Instruction
denses, transactions chères
Set Computer
● Exemple: instructions de l’ISA
n De plus en plus de place On-Chip pour la mémoire (dans ce
du Pentium
● RISC: Reduced Instruction cas elles sont moins efficaces que les chips mémoire).
Set Computer
● Exemple: instructions de l’ISA
du MIPS
n Ne pas oublier que le code aussi réside en mémoire
Tous les systèmes ont des caches pour cacher les temps de
● Le CPU
● Le pipeline RISC: exemple du
n
MIPS
● Exemple d’exécution sans latence lors de l’accès à la mémoire, en général plusieurs
niveaux de caches: hiérarchie mémoire.
pipeline
● Exemple d’exécution avec
pipeline
● Parallélisme au sein du
processeur
● Parallélisme au sein du
processeur
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 36/134
numérique
Principe du Cache

● Processeurs embarqués 0
1
0
Introduction 2
3
Architecture des processeurs
4
● Architecture "Von Neuman"
5
ou "Princeton"
6
● Architecture Harvard
7
● Le jeu d’instruction
0 8
● CISC: Complex Instruction
Set Computer 1 9
● Exemple: instructions de l’ISA 1 cycle 2 10−20 cycles 10
Espace







3 11
Processeur







du Pentium


mémoire







● RISC: Reduced Instruction 4 12







Set Computer 5 13 adressable
● Exemple: instructions de l’ISA 6 14
du MIPS 7 15
● Le CPU
16
● Le pipeline RISC: exemple du
17
MIPS
● Exemple d’exécution sans 18
pipeline Cache de données (SRAM) 19
● Exemple d’exécution avec 20
pipeline 21
● Parallélisme au sein du 22
processeur 23 N−1
● Parallélisme au sein du
processeur
● Mémoire Mémoire principale (DRAM)
Différents types de processeurs
embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 37/134
numérique
Hiérarchie Mémoire

● Processeurs embarqués

Introduction Processeur Processeur


/DSP /DSP
Architecture des processeurs
● Architecture "Von Neuman" ASIC / ASIP
D: cache de données
ou "Princeton" D I D I
● Architecture Harvard
I: cache d’instructions
● Le jeu d’instruction
● CISC: Complex Instruction
Set Computer
● Exemple: instructions de l’ISA
du Pentium Mémoire cache Cache Cache
● RISC: Reduced Instruction de niveau 4
de niveau 3 de niveau 2
Set Computer
● Exemple: instructions de l’ISA
du MIPS
● Le CPU
● Le pipeline RISC: exemple du SOC
MIPS
● Exemple d’exécution sans
pipeline
● Exemple d’exécution avec Bus système externe
pipeline
● Parallélisme au sein du
processeur Bancs de mémoire DRAM
● Parallélisme au sein du
contrôleur
processeur
mémoire
● Mémoire

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


- p. 38/134
numérique
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs

Différents types de processeurs


embarqués
● Différents types de
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960 embarqués
● MIPS, ARM, SuperH et
PowerPC
● Et les autres....
● Micro-contrôleurs
● DSP: Digital Signal
Processing
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 39/134
Différents types de processeurs embarqués

● Processeurs embarqués n Beaucoup de Processeurs à usage général ayant une ou


Introduction
deux générations
Architecture des processeurs
n 4, 8, 16 ou 32 bits (taille des mots)
Différents types de processeurs
embarqués
● Différents types de
n RISC et CISC
processeurs embarqués
● 68000, x86
n DSP: Digital Signal Processor
● SPARC, 29000 et i960
● MIPS, ARM, SuperH et n ASIP: Application Specific Integrated Processor
PowerPC
● Et les autres....
● Micro-contrôleurs
● DSP: Digital Signal
Processing
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 40/134
68000, x86

● Processeurs embarqués n Famille des Motorola 68000


Introduction u Un des plus vieux processeur embarqué (ex Sun, Mac)
Architecture des processeurs u Architecture CISC
Différents types de processeurs u ISA propre et les meilleurs outils de développement,
embarqués
● Différents types de
processeurs embarqués
beaucoup d’utilisateurs
● 68000, x86
● SPARC, 29000 et i960
n Famille des x86
● MIPS, ARM, SuperH et
u Démarre au 8086 (Intel) puis 80286, 386, 486, Pentium, et
PowerPC
● Et les autres....
● Micro-contrôleurs
Athlon (AMD)
● DSP: Digital Signal
u En processeurs embarqués: 5 fois moins que MIPS, ARM
Processing
● Quelques mécanismes
matériels utiles
ou 68000.
● Quelques mots sur la
consommation
u architecture CISC, compatible avec le code du 8086
Compilation pour processeurs u compatibilité mais mauvaises performances
embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 41/134
SPARC, 29000 et i960

● Processeurs embarqués n SPARC


Introduction u Un des premier RISC à avoir été embarqué (pratiquement
Architecture des processeurs
plus aujourd’hui)
Différents types de processeurs u SPARC est une architecture brevetée (soft core,
embarqués
● Différents types de
processeurs embarqués
Intellectuel Property: IP), plusieurs compagnies fabriquent
● 68000, x86
● SPARC, 29000 et i960
des SPARC
● MIPS, ARM, SuperH et
PowerPC
n 29000 (AMD)
● Et les autres....
● Micro-contrôleurs
u Le 29000 a eu beaucoup de succès (imprimante laser
● DSP: Digital Signal
Processing
Apple) grâce à ces 192 registres
● Quelques mécanismes
u AMD a arrêté la production car le développement des
matériels utiles
● Quelques mots sur la
consommation outils coûtait trop cher.
Compilation pour processeurs
embarqués
n i960 (intel)
u Le i960 a été le plus vendu des processeurs embarqués
Exemple de l’appareil photo
numérique
au milieu des années 90 (router réseau et HP Laserjet).
Conclusion

- p. 42/134
MIPS, ARM, SuperH et PowerPC

● Processeurs embarqués n MIPS (microprocessor without interlocked pipeline stages)


Introduction u Originellement pour les stations puissantes (SGI)
Architecture des processeurs u Puis, marché des consoles de jeux (Nitendo N64)
Différents types de processeurs u Famille très étendue: du plus gros (MIPS 20Kc, 64 bit) au
embarqués
● Différents types de
processeurs embarqués
plus petit (SmartMIPS, 32 bit pour carte à puce)
● 68000, x86
● SPARC, 29000 et i960
n ARM (Advanced RISC Machines, ex Acorn)
● MIPS, ARM, SuperH et
PowerPC
u Un des 32 bits embarqués les plus populaires :
● Et les autres....
● Micro-contrôleurs téléphones portables
● DSP: Digital Signal
u Faible consommation
Processing
● Quelques mécanismes
u Le successeur: StrongArm est commercialisé par Intel
matériels utiles
● Quelques mots sur la
consommation sous le nom de XScale
Compilation pour processeurs
embarqués
n SuperH (ou SH: Hitachi) Utilisé dans les stationsxs Sega et
Exemple de l’appareil photo
les PDA
numérique
n PowerPC autant utilisé en embarqué qu’en ordinateur
Conclusion

- p. 43/134
Et les autres....

● Processeurs embarqués n Plus de 100 processeurs embarqués 32 bits sur le marché


Introduction
n Les constructeurs de FPGA proposent des soft-processeurs
Architecture des processeurs
pour configurer les FPGA: Nios (Altera), MicroBlaze (Xilinx)
Différents types de processeurs
embarqués
● Différents types de
n Certain processeurs RISC (Crusoe de Transmetta) peuvent
processeurs embarqués
● 68000, x86
exécuter du code CISC (Intel)
● SPARC, 29000 et i960 u Principe: recompilation du code à l’exécution (runtime
● MIPS, ARM, SuperH et
PowerPC
● Et les autres....
compilation)
● Micro-contrôleurs u Gain obtenus par un mécanisme de cache, d’optimisation
● DSP: Digital Signal
Processing poussée des portion de code répétées (boucle), et grâce
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
au parallélisme de niveau instruction
consommation u Réduction drastique de la consommation pour des
Compilation pour processeurs
embarqués
performances équivalentes
Exemple de l’appareil photo
numérique

Conclusion

- p. 44/134
Micro-contrôleurs

● Processeurs embarqués n Utilisé pour le contrôle embarqué


Introduction u Censeur, contrôleurs simples
Architecture des processeurs u Manipule des événements, quelques données mais en
Différents types de processeurs
embarqués
faible quantité
● Différents types de u Exemple: camescope, disque dur, appareil photo
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960
numérique, machine à laver, four à micro-onde
● MIPS, ARM, SuperH et
PowerPC
n Quelques caractéristiques fréquentes
● Et les autres....
● Micro-contrôleurs
u Périphériques présents sur le circuit (timer, convertisseur
● DSP: Digital Signal
Processing
analogique numérique, interface de communication),
● Quelques mécanismes
matériels utiles
accessible directement grâce aux registres
● Quelques mots sur la
consommation
u Programme et données intégrées au circuit
Compilation pour processeurs u Accès direct du programmeur à de nombreuses broches
du circuit
embarqués

u Instructions spécialisées pour les manipulation de bits.


Exemple de l’appareil photo
numérique

Conclusion

- p. 45/134
DSP: Digital Signal Processing

● Processeurs embarqués n Utilisés pour les applications de traitement du signal


Introduction u Grande quantités de données numérisées, souvent
Architecture des processeurs
organisées en flux
Différents types de processeurs u Filtre numérique sur téléphone, TV numérique,
embarqués
● Différents types de
processeurs embarqués
synthétiseur de sons
● 68000, x86
● SPARC, 29000 et i960
n Relativement proche des GPP, mais quelques
● MIPS, ARM, SuperH et
PowerPC
caractéristiques en plus:
● Et les autres....
● Micro-contrôleurs
u Bande passante élevée (deux bus)
● DSP: Digital Signal
u Instructions dédiées pour les calculs de traitement du
Processing
● Quelques mécanismes
matériels utiles
signal: multiplication accumulation,
● Quelques mots sur la
consommation
u Arithmétique spécifique (mode d’arrondi)
Compilation pour processeurs u Registres dédiés pour certains opérateurs.
u Constructeurs: Texas Instrument, puis Analog Devices,
embarqués

Motorola
Exemple de l’appareil photo
numérique

Conclusion

- p. 46/134
Quelques mécanismes matériels utiles

● Processeurs embarqués n Densité de code:


Introduction u La taille du code est importante pour les codes
Architecture des processeurs
embarqués car elle influe sur la taille de la mémoire
Différents types de processeurs
embarqués
utilisée
● Différents types de u Un programme C compilé pour SPARC prendra deux fois
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960
plus de place en mémoire que le même programme
● MIPS, ARM, SuperH et
PowerPC
compilé pour le 68030.
● Et les autres.... u En général les code RISC sont deux fois moins dense que
● Micro-contrôleurs
● DSP: Digital Signal les codes CISC (ex: instruction TBLS du 68300: table
Processing
● Quelques mécanismes lookup and interpolate)
matériels utiles
● Quelques mots sur la u les options de compilation doivent être utilisée avec
consommation

Compilation pour processeurs


précaution.
embarqués u Le code est quelquefois stocké compressé et
Exemple de l’appareil photo
numérique
decompressé au vol par du matériel spécifique.
Conclusion

- p. 47/134
Quelques mécanismes matériels utiles

● Processeurs embarqués n Manipulations au niveau bit:


Introduction u Utilisé pour les algorithmes de cryptage mais surtout pour
Architecture des processeurs les pilotes de périphériques.
Différents types de processeurs u La plupart des périphériques indiquent leur état au
embarqués
● Différents types de
processeurs embarqués
processeur en mettant un certain bit à 1 dans un certain
● 68000, x86
● SPARC, 29000 et i960
registre.
● MIPS, ARM, SuperH et u Un processeur RISC standard doit rapatrier le mot de 32
PowerPC
● Et les autres....
● Micro-contrôleurs
bit, masquer et tester à 0
● DSP: Digital Signal u L’instruction BTST (bit test) du Motorola 68000 permet de
Processing
● Quelques mécanismes faire tout cela en une instruction
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 48/134
Quelques mécanismes matériels utiles

● Processeurs embarqués n Données non-alignés


Introduction u De nombreux traitements manipulent des données de
Architecture des processeurs
taille non-multiple de 32 (paquets TCP/IP, video streams,
Différents types de processeurs
embarqués
clés d’encryption, 20 bits, 56 bits)
● Différents types de u Les processeurs RISC savent uniquement transférer des
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960
mots (32 bits) alignés (calés sur une adresse multiple de
● MIPS, ARM, SuperH et
PowerPC
32 bits).
● Et les autres.... u La plupart des architectures CISC (68k, x86) peuvent faire
● Micro-contrôleurs
● DSP: Digital Signal des chargements non alignés
Processing
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 49/134
Quelques mécanismes matériels utiles

● Processeurs embarqués n Gestion spécifique du cache


Introduction u Les caches améliorent les performances mais introduisent
Architecture des processeurs
du non-déterminisme.
Différents types de processeurs u Les contraintes spécifiques des systèmes embarqués ont
embarqués
● Différents types de
processeurs embarqués
entraîné des mécanismes particuliers pour les cache
● 68000, x86 u On peut vouloir bloquer le cache (cache locking): forcer
● SPARC, 29000 et i960
● MIPS, ARM, SuperH et
PowerPC
certaines données ou instruction à se charger et rester
● Et les autres....
● Micro-contrôleurs
dans le cache (on parle aussi de mémoire scratch-pad
● DSP: Digital Signal memory ou de software controlled cache).
Processing
● Quelques mécanismes u La plupart des caches utilisent une politique de
matériels utiles
● Quelques mots sur la
consommation
Write-Back: une donnée modifiée dans le cache n’est pas
Compilation pour processeurs
forcément immédiatement recopiée en memoire. Dans le
embarqués
cas de périphériques mappés en mémoire, il est
Exemple de l’appareil photo
numérique
indispensable de recopier immédiatement (politique
Conclusion
write-through)

- p. 50/134
Quelques mots sur la consommation

● Processeurs embarqués n Trois composantes de la consommation d’une porte logique


Introduction
(inverseur)
Architecture des processeurs u Consommation dynamique : Pdyn = C.V 2
CC
Différents types de processeurs
embarqués
(C capacité de la porte)
● Différents types de u Consommation statique : Pstatic = VCC .Ileak
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960
(VCC : tension d’alimentation, Ileak intensité des
● MIPS, ARM, SuperH et courants de fuite)
PowerPC
● Et les autres.... u Consommation de court-circuit Pcs = K.τ.(VCC − 2VT h )3 .
● Micro-contrôleurs
● DSP: Digital Signal (K:constante technologique ; VT h :tension seuil ;
Processing
● Quelques mécanismes τ :temps de montée descente du signal)
matériels utiles
● Quelques mots sur la
consommation
n Aujourd’hui (2004) Pdyn À Pstatic À Pcs
Compilation pour processeurs
embarqués
n Demain (2006) Pdyn ≈ Pstatic À Pcs
Exemple de l’appareil photo
numérique

Conclusion

- p. 51/134
Consommation d’un circuit CMOS

● Processeurs embarqués n Généralisation naïve en prenant en compte une activité


Introduction
moyenne α (nombre moyen de portes commutant)
Architecture des processeurs u Consommation dynamique : Pdyn = C.V 2 .α.f
CC
Différents types de processeurs
embarqués
(f : fréquence du circuit)
● Différents types de u Consommation statique : Pstatic = VCC .Ileak .N.kdesign
processeurs embarqués
● 68000, x86
● SPARC, 29000 et i960
(N: nombre de portes, kdesign constante dépendant
● MIPS, ARM, SuperH et
PowerPC
du design)
● Et les autres....
● Micro-contrôleurs
n Cette modélisation est très imprécise pour un circuit dont le
● DSP: Digital Signal
Processing
comportement n’est pas stationnaire (ex: processeur)
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 52/134
Réduction statique de la consommation

● Processeurs embarqués n Le facteur le plus important est la tension d’alimentation


Introduction
(VCC ) d’abord 3.3 V puis 2.5 V. Les versions récentes de
Architecture des processeurs
Xscale (strong ARM, Intel) et les puces smartCard
Différents types de processeurs
embarqués
fonctionnent a 0.65 V
● Différents types de
processeurs embarqués
n On peut différentier les tensions en fonction du bloc du chip:
● 68000, x86
● SPARC, 29000 et i960 1.5 V pour le processeur, 3.3 pour l’interface du bus et les
● MIPS, ARM, SuperH et
PowerPC
pattes d’entrée/sortie (ex: Strong ARM de Digital)
● Et les autres....
● Micro-contrôleurs n Plus la technologie est intégrée, moins elle consomme
● DSP: Digital Signal
Processing (capacité diminuée).
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
n Fréquence d’horloge peu élevée compensée par le
consommation
parallélisme
Compilation pour processeurs
embarqués n Complexité réduite des différents composants (moins de
Exemple de l’appareil photo
numérique
registres, architectures RISC)
Conclusion

- p. 53/134
Réduction dynamique de la consommation

● Processeurs embarqués n Gestion dynamique de la fréquence d’horloge


Introduction
n Exemple: processeur Crusoe (Transmetta)
Architecture des processeurs
Suppression de l’horloge sur un bloc (Dynamic clock
gating)
Différents types de processeurs
embarqués
● Différents types de
processeurs embarqués
● 68000, x86
n Gestion dynamique de l’alimentation (pas encore réalisé)
● SPARC, 29000 et i960
● MIPS, ARM, SuperH et
PowerPC
● Et les autres....
● Micro-contrôleurs
● DSP: Digital Signal
Processing
● Quelques mécanismes
matériels utiles
● Quelques mots sur la
consommation

Compilation pour processeurs


embarqués

Exemple de l’appareil photo


numérique

Conclusion

- p. 54/134
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


Compilation pour processeurs
embarqués
● Compilation pour processeurs embarqués
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 55/134
Compilation: biblio

● Processeurs embarqués n Dragon book:


Introduction u Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman.
Architecture des processeurs "Compilers: Principles, Techniques and Tools."
Différents types de processeurs
embarqués
Addison-Wesley, 1988.
u La bible, un peu dépassé sur certains sujets, mais
Compilation pour processeurs
embarqués
● Compilation pour processeurs
beaucoup n’ont pas changé depuis.
embarqués
● Compilation: biblio
n Cooper/Torczon:
● Compilation: Principes
généraux
u Keith D. Cooper and Linda Torczon. Engineering a
● Quelques exemples
d’optimisation de compilation Compiler. Morgan-Kaufmann, 2003.
pour processeurs embarqués
● Exemple 1: génération
u récent, survol assez complet.
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 56/134
Compilation: Principes généraux

● Processeurs embarqués n Définition:


Introduction u Un compilateur est un programme qui prend en entrée un
Architecture des processeurs
programme exécutable et produit en sortie un autre
Différents types de processeurs
embarqués
programme exécutable.
Compilation pour processeurs n Les principes fondamentaux de la compilation sont:
u Le compilateur doit conserver le sens du programme
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio compilé
● Compilation: Principes
généraux
u Le compilateur doit améliorer le code
● Quelques exemples
d’optimisation de compilation n Les propriétés importantes d’un compilateur sont:
pour processeurs embarqués
● Exemple 1: génération 1. Code produit efficace (rapidité, mémoire).
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
2. Informations retournées en cas d’erreurs, debboging
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
3. Rapidité de la compilation
GCC
● Un compilateur pour n Pour un système embarqué les points 1 et 3 sont différents
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 57/134
Compilation: Contraintes supplémentaires

● Processeurs embarqués n Définition d’un "bon" compilateur


Introduction u Contraintes temps-réel
Architecture des processeurs n Plutôt résolu par langages dédié (langages synchrone,

Différents types de processeurs


embarqués
e.g. Esterel) et des OS spécialisés que par le
Compilation pour processeurs
compilateur.
embarqués u Consommation
● Compilation pour processeurs
embarqués n Organisation mémoire
● Compilation: biblio
● Compilation: Principes n accès mémoire (cache miss)
généraux
● Quelques exemples n Taille de code
d’optimisation de compilation
pour processeurs embarqués u Performances
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
n Temps de compilation peu critique
dédiés
● Exemple 3: gestion du cache
d’instruction
n Architecture variées: DSP, instructions multi-média etc.
Relation avec le système d’exploitation peu standardisé
● Quelques manipulation avec
GCC n
● Un compilateur pour
l’embarqué: GCC u Actuellement: petit OS ou pas d’OS
Exemple de l’appareil photo u Prochainement: OS léger pour multi-threads
numérique

Conclusion

- p. 58/134
Compilation: Le flot général

● Processeurs embarqués n Le flot complet de compilation est le suivant:


Introduction

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples

La programmation d’un système embarqué nécessite


d’optimisation de compilation
pour processeurs embarqués n
souvent d’écrire explicitement des parties en assembleur
● Exemple 1: génération
d’adresse pour DSP

(pilotes de périphériques et d’accélérateurs matériels).


● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 59/134
Compilation: Le flot détaillé

● Processeurs embarqués n le flot détaillé est le suivant:


Introduction

Architecture des processeurs


Front−End Middle−End Back−End
Différents types de processeurs

Ordonnancement
embarqués

Alloc. Reg.
Scanning

Selection
Parsing

C.S.A
Compilation pour processeurs

Opt1

Opt2

Opt3
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux Infrastructure
● Quelques exemples
d’optimisation de compilation Table des symbols, Arbres de syntaxe abstraite, Graphes, ensembles, IR, ...
pour processeurs embarqués
● Exemple 1: génération
Compilateur
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 60/134
Compilation: Représentation intermédiaires (1)

● Processeurs embarqués n Arbre: Abstract Syntax Tree (AST), Graphe acyclique (DAG)
Introduction
n ex: x × 2 + x × 2 × y
Architecture des processeurs + +
Différents types de processeurs
embarqués
* * * *
Compilation pour processeurs
embarqués
● Compilation pour processeurs
x 2 * y x 2
embarqués
● Compilation: biblio
● Compilation: Principes
généraux x 2
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
DAG
d’adresse pour DSP AST
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 61/134
Compilation: Représentation intermédiaires (2)

● Processeurs embarqués n CDFG: Control and Data-flow graph


Introduction x<−...
y<−...
Architecture des processeurs
x ← ...
Différents types de processeurs
embarqués
y ← ... while (x<100)

Compilation pour processeurs


while (x < 100)
x<−x+1
embarqués
● Compilation pour processeurs
x←x+1 y<−y+1
embarqués
● Compilation: biblio
y ←y+x
● Compilation: Principes
généraux
end
● Quelques exemples
d’optimisation de compilation
n Représentation intermédiaire linéaire (proche de
pour processeurs embarqués
● Exemple 1: génération
l’assembleur). Pour x × 2 + x × 2 × y:
d’adresse pour DSP
● Exemple 2: cas des Registres
t1 ← 2 loadI 2 ⇒ t1
dédiés
● Exemple 3: gestion du cache t2 ← x loadAI $f p, @x ⇒ t2
d’instruction
t3 ← t1 × t 2 mult t 2 , t1 ⇒ t3
● Quelques manipulation avec
GCC t4 ← y loadAI $f p, @y ⇒ t4
● Un compilateur pour
t5 ← t4 × t 3 mult t 4 , t3 ⇒ t5
l’embarqué: GCC
t6 ← t5 + t 3 add t 5 , t3 ⇒ t6
Exemple de l’appareil photo
numérique

Conclusion

- p. 62/134
Compilation: Représentation intermédiaires (3)

● Processeurs embarqués n SSA: static single assignement


Introduction
x0 ← ...
Architecture des processeurs y0 ← ...
if (x0 ≥ 100) goto next
Différents types de processeurs x ← ...
embarqués loop: x1 ← φ(x0 , x2 )
y ← ...
y1 ← φ(y0 , y2 )
while (x < 100)
Compilation pour processeurs x 2 ← x1 + 1
embarqués x ← x+1
y 2 ← y1 + x 2
● Compilation pour processeurs y ← y+x
if (x2 < 100) goto loop
embarqués end
● Compilation: biblio next: x3 ← φ(x0 , x2 )
● Compilation: Principes y3 ← φ(y0 , y2 )
généraux
● Quelques exemples x0<−...
d’optimisation de compilation x<−... y0<−...
pour processeurs embarqués y<−...
● Exemple 1: génération
If (x0>100)
d’adresse pour DSP while (x<100)
● Exemple 2: cas des Registres
dédiés x1= φ (x0,x2)
● Exemple 3: gestion du cache x<−x+1
y<−y+1 y1= φ (y0,y2)
d’instruction
● Quelques manipulation avec x2<−x1+1
y2<−y1+1
GCC
● Un compilateur pour
l’embarqué: GCC x3= φ (x0,x2)
y3= φ (y0,y2)
Exemple de l’appareil photo
numérique

Conclusion

- p. 63/134
Compilation: Le front-end

● Processeurs embarqués n Le front-end d’un compilateur pour code embarqué utilise les
Introduction
mêmes techniques que les compilateurs traditionnels (on
Architecture des processeurs
peut vouloir inclure des partie d’assembleur directement)
Parsing LR(1): Le parseur est généré à partir de la
Différents types de processeurs
embarqués n
Compilation pour processeurs grammaire du langage.
embarqués
● Compilation pour processeurs
embarqués
n Flex et bison: outils GNU
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 64/134
Compilation: Le middle-end

● Processeurs embarqués n Certaines phases d’optimisations sont ajoutées, elles


Introduction
peuvent être très calculatoires
Architecture des processeurs
n Quelques exemples de transformation indépendantes de la
machine:
Différents types de processeurs
embarqués

Compilation pour processeurs u Élimination d’expressions redondantes


embarqués
● Compilation pour processeurs u Élimination de code mort
embarqués
● Compilation: biblio u Propagation de constantes
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 65/134
A Data cache optimisations

Procedure integration
Tail−recursion optimisation
B Scalar replacement of agregates
Sparse conditional constant propagation
Interprocedural constant propagation
Procedure specialization and cloning
Sparse conditional constant propagation

● Processeurs embarqués Global value numbering Constant folding


Local and global copy propagation Algebraic simplifications
Introduction Sparse conditional constant propagation
Dead code elimination
Architecture des processeurs

Différents types de processeurs C Local and global common subexpression elimination Partial redundancy elimination
embarqués Loop invariant code motion

Compilation pour processeurs


embarqués Dead code elimination
Code hoisting
● Compilation pour processeurs
Induction−variable strength reduction
embarqués
Linear function test replacement
● Compilation: biblio
Induction−variable removal
● Compilation: Principes Unnecessary bound checking elimination
généraux Control−flow optimisations
● Quelques exemples
d’optimisation de compilation
In−line expansion
pour processeurs embarqués
Leaf routine optimization
● Exemple 1: génération Shrink wrapping
d’adresse pour DSP Machine idioms
● Exemple 2: cas des Registres Tail merging
dédiés Branch optimization and conditionnal moves
● Exemple 3: gestion du cache Dead code elimination
d’instruction Software−pipelining, loop unrolling, variable expansion
D
● Quelques manipulation avec register renaming and hierachical reduction
GCC Basic block and branch scheduling 1
● Un compilateur pour
Register allocation by graph coloring
l’embarqué: GCC Basic block and branch scheduling 2
Intraprocedural I−cache optimization
Exemple de l’appareil photo Instruction prefretching
numérique Data prefretching
Branch prediction
Conclusion

Interprocedural register allocation


E Aggregation of global references
Interprocedural I−cache optimisation - p. 66/134
Compilation: Le back-end

● Processeurs embarqués n La phase de génération de code est dédiée à l’architecture


Introduction
cible. Les techniques de compilation reciblable sont utilisées
Architecture des processeurs
pour des familles d’architectures.
Les étapes les plus importantes sont
Différents types de processeurs
embarqués n
Compilation pour processeurs u Selection de code
u Allocation de registre
embarqués
● Compilation pour processeurs

u Ordonnancement d’instructions
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 67/134
Exemple de code généré: MIPS

● Processeurs embarqués gcc -S fib.c


Introduction .align 2
.globl main
Architecture des processeurs .ent main
main:
Différents types de processeurs
embarqués .frame $fp,24,$ra
.mask 0xc0000000,-4
Compilation pour processeurs .fmask 0x00000000,0
embarqués int fib (int i) {
subu $sp,$sp,24 # SP<-SP-24 :AR de 24 octet(6 mots)
● Compilation pour processeurs if (i<=1) return(1);
sw $ra,20($sp) # stocke adresse retour SP+20
embarqués else return(fib(i-1)+fib(i-2));
● Compilation: biblio
sw $fp,16($sp) # stocke ARP appelant SP+16
}
● Compilation: Principes move $fp,$sp # ARP <- SP
généraux sw $a0,24($fp) # stocke Arg1 dans la pile (ARP+24)
int main (int argc, char *argv[]) {
● Quelques exemples sw $5,28($fp) # stocke Arg2 dans la pile (ARP+48)
d’optimisation de compilation fib(2);
li $a0,2 # $a0 <- 2 ($a0: Arg1)
pour processeurs embarqués }
jal fib # jump and link fib($ra<-next instr)
● Exemple 1: génération
d’adresse pour DSP move $sp,$fp # SP <- ARP
● Exemple 2: cas des Registres lw $ra,20($sp) # $ra <- adresse retour
dédiés lw $fp,16($sp) # ARP <- ARP appelant
● Exemple 3: gestion du cache
addu $sp,$sp,24 # SP->SP+24
d’instruction
● Quelques manipulation avec j $ra # jump adresse retour
GCC .end main
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 68/134
.file 1 "fib.c"
.text
.align 2
.globl fib
.ent fib
fib:
.frame $fp,40,$ra # vars= 8, regs= 3/0, args= 16, ext
.mask 0xc0010000,-8
.fmask 0x00000000,0
● Processeurs embarqués gcc -S fib.c subu $sp,$sp,40 # SP <- SP-40 :AR de 40 octet (10 mo
Introduction sw $ra,32($sp) # stocke adresse retour SP+32
sw $fp,28($sp) # stocke ARP appelant SP+28
Architecture des processeurs sw $s0,24($sp) # sauvegarde registre $s0
move $fp,$sp # ARP <- SP
Différents types de processeurs
embarqués
sw $a0,40($fp) # stocke Arg1 dans la pile (ARP+40)
lw $v0,40($fp) # charge Arg1 dans $v0
Compilation pour processeurs slt $v0,$v0,2 # $v0 <- 1 si $v0<2 0 sinon
embarqués int fib (int i) { beq $v0,$0,$L2 # branch L2 si $v0==0
● Compilation pour processeurs
if (i<=1) return(1); li $v0,1 # $v0 <- 0x1 ($v0 sera le registre c
embarqués
else return(fib(i-1)+fib(i-2)); sw $v0,16($fp) # stocke le resultat dans la pile
● Compilation: biblio
● Compilation: Principes } j $L1 # saute à L1
généraux $L2:
● Quelques exemples int main (int argc, char *argv[]) { lw $v0,40($fp) # charge Arg1 dans $v0
d’optimisation de compilation fib(2); addu $v0,$v0,-1 # retranche 1
pour processeurs embarqués
} move $a0,$v0 # $a0 <- $v0 ($a0 contient Arg1 pour
● Exemple 1: génération
d’adresse pour DSP
jal fib # jump and link fib ($ra<-next inst
● Exemple 2: cas des Registres move $s0,$v0 # $s0 <- $v0 ($v0: res appel fib)
dédiés lw $v0,40($fp) # charge Arg1 dans $v0
● Exemple 3: gestion du cache
addu $v0,$v0,-2 # retranche 2
d’instruction
● Quelques manipulation avec move $a0,$v0 # $a0 <- $v0 ($a0: contient Arg1 po
GCC jal fib # jump and link fib ($ra<-next inst
● Un compilateur pour addu $s0,$s0,$v0 # $s0 <- $s0+$v0 ($v0: res appel fi
l’embarqué: GCC
sw $s0,16($fp) # stocke le resultat dans la pile
Exemple de l’appareil photo $L1:
numérique lw $v0,16($fp) # $v0 <- resultat
move $sp,$fp # SP <- ARP
Conclusion lw $ra,32($sp) # $ra <- adresse retour
lw $fp,28($sp) # ARP <- ARP appelant
lw $s0,24($sp) # restaure $s0
- p. 69/134
addu $sp,$sp,40 # SP->SP+40
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


Quelques exemples d’optimisation de
embarqués
● Compilation pour processeurs compilation pour processeurs
embarqués
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 70/134
Exemple 1: génération d’adresse pour DSP

● Processeurs embarqués n Les petits DSP possèdent souvent peu de registres et les
Introduction
calculs se font directement entre un registre par défaut REG
Architecture des processeurs
et la mémoire.
Minimiser les accès mémoire augmente beaucoup les
Différents types de processeurs
embarqués n
Compilation pour processeurs performances.
embarqués
● Compilation pour processeurs
embarqués
n Pour cela, les assembleurs sont pourvus d’un registre
● Compilation: biblio
● Compilation: Principes
d’adresse AR et de plusieurs mode d’adressage: adressage
généraux
● Quelques exemples
indirect (REG ← M em[reg1 ]) et indirect indexé
d’optimisation de compilation (REG ← M em[reg1 + const1 ]).
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
n ils possèdent généralement des versions avec
● Exemple 2: cas des Registres
dédiés
auto-incrément (ou auto-décrement) des instructions
● Exemple 3: gestion du cache
d’instruction standard: load, store.
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 71/134
Exemple: addressage avec auto incrément

● Processeurs embarqués n Auto-incrément à chaque load, store le registre d’adresse


Introduction
AR est incrémenté ou décrémenté de 1 (éventuellement
Architecture des processeurs
d’une constante c)
Auto-modify à chaque load, store le registre d’adresse AR
Différents types de processeurs
embarqués n
Compilation pour processeurs est incrémenté ou décrémenté de la valeur d’un registre M R
(modify register)
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
n Exemple de jeu d’instruction (assembleur TMS320C25):
généraux
● Quelques exemples instruction ef f et
d’optimisation de compilation
LDAR AR, val AR ← val //chargement du registre d’adresse AR avec une valeur
pour processeurs embarqués
● Exemple 1: génération LOAD ∗ (AR) REG ← mem(AR) //AR est le registre d’adresse
d’adresse pour DSP
LOAD ∗ (AR)+ REG ← mem(AR); AR ← AR + 4 //version avec auto incrément
● Exemple 2: cas des Registres
dédiés LOAD ∗ (AR)− REG ← mem(AR); AR ← AR − 4 //version avec auto decrement
● Exemple 3: gestion du cache
d’instruction
ST OR ∗ (AR) mem(AR) ← REG //AR est le registre d’adresse
● Quelques manipulation avec ST OR ∗ (AR)+ mem(AR) ← REG; AR ← AR + 4 //version avec auto incrément
GCC
● Un compilateur pour ST OR ∗ (AR)− mem(AR) ← REG; AR ← AR − 4 //version avec auto decrement
l’embarqué: GCC ADD ∗ (AR)+ REG ← REG + mem(AR); AR ← AR + 4 //
Exemple de l’appareil photo etc
numérique

Conclusion

- p. 72/134
Exemple 1: addressage avec auto incrément

● Processeurs embarqués n Avec ce jeu d’instruction, le chargement d’une variable


Introduction
locale d’une procédure se fait en deux instructions:
Architecture des processeurs
LDAR AR, @a
Différents types de processeurs
embarqués
LOAD ∗ (AR)

Mais l’addition de trois variables rangées consécutivement


Compilation pour processeurs
embarqués n
● Compilation pour processeurs
embarqués dans la pile: a + b + c peut se faire en quatre instructions:
● Compilation: biblio
● Compilation: Principes c
généraux
LDAR AR, @a
● Quelques exemples
d’optimisation de compilation LOAD ∗ (AR)+ b
pour processeurs embarqués
ADD ∗ (AR)+
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
ADD ∗ (AR)
a
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 73/134
Optimisation de l’adressage

● Processeurs embarqués n Considérons le code suivant extrait d’une procédure:


Introduction
c = a+b
Architecture des processeurs
f = d+e
Différents types de processeurs a = a+d
embarqués
c = d+a
Compilation pour processeurs b = d+f +a
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
n Le compilateur choisi d’accéder les variables dans un certain
● Compilation: Principes ordre, par exemple celui-ci:
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
abcdef adadacdf ab
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
n Quelle est l’arrangement de ces différentes variables qui
dédiés
● Exemple 3: gestion du cache minimise la taille du code généré (et donc le temps
d’instruction
● Quelques manipulation avec d’exécution)?
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 74/134
Solution

● Processeurs embarqués 2
a f
Introduction

2 1
Architecture des processeurs n On construit un graphe d’accès dont 4
b
Différents types de processeurs
embarqués
les noeuds représentent les 1 e 1

Compilation pour processeurs


variables et les poids sur les arcs 1 1

embarqués
● Compilation pour processeurs
représentent le nombre de fois ou c
2
d
embarqués
● Compilation: biblio
les variables sont accédées
● Compilation: Principes consécutivement dans le code: a
généraux
● Quelques exemples
d’optimisation de compilation
n On cherche un chemin hamiltonien c
pour processeurs embarqués
● Exemple 1: génération dans ce graphe qui maximise le
d
d’adresse pour DSP
● Exemple 2: cas des Registres poids (problème NP-complet).
dédiés
● Exemple 3: gestion du cache
d’instruction
n solution: 10 accès avec la solution a
● Quelques manipulation avec
GCC
suivante: f
● Un compilateur pour
l’embarqué: GCC
e
Exemple de l’appareil photo
numérique

Conclusion

- p. 75/134
Unité de génération d’adresse

● Processeurs embarqués n Pour les DSP plus gros, le problème est plus compliqué
Introduction
n Ils possèdent souvent une unité de génération d’adresse
Architecture des processeurs
hors du data-path (address generation unit, AGU) qui
possède:
Différents types de processeurs
embarqués

Compilation pour processeurs u k registres d’adresse (AR0 ,. . . ,ARk )


u m registres de modification (M R0 ,. . . ,M Rm )
embarqués
● Compilation pour processeurs

u Un décalage cablé borné par une petite constante


embarqués
● Compilation: biblio
● Compilation: Principes
généraux
u ainsi que la possibilité d’entrer une constante pour le
● Quelques exemples
d’optimisation de compilation décalage ou pour modifier les AR ou les M R.
pour processeurs embarqués AR pointer c MR pointer
● Exemple 1: génération
Quelques exemple d’unité de génération d’adresses
d’adresse pour DSP
d (Leupers [?])
● Exemple 2: cas des Registres
dédiés TI C25 Motorola 56xxx ADSP-210x AMS Gepard
● Exemple 3: gestion du cache
d’instruction k 8 4 4 8
● Quelques manipulation avec address modify
+/− m register m 1 4 4 8
GCC register k
● Un compilateur pour file file
r 1 1 0 7
l’embarqué: GCC
effective address
Exemple de l’appareil photo
AGU
numérique

Conclusion

- p. 76/134
Exemple 2: cas des Registres dédiés

● Processeurs embarqués n De nombreux DSP ont des registres dédié dans le data-path
Introduction
qui permettent:
Architecture des processeurs u Un mini-pipeline à l’intérieur du data-path
Différents types de processeurs u De limiter les lectures/ecritures sur le fichier de registre
embarqués
u De réduire la taille du code (les registres sont adressé
Compilation pour processeurs
embarqués
● Compilation pour processeurs
implicitement)
embarqués
● Compilation: biblio
n exemple: le chemin de donnée et le jeu d’instruction associé
● Compilation: Principes
généraux du C25 de Texas Instrument.
● Quelques exemples instruction effet
d’optimisation de compilation MEM
pour processeurs embarqués
lac ACU ← MEM
● Exemple 1: génération addk ACU← ACCU+Constant
d’adresse pour DSP
add ACU← ACCU+MEM
● Exemple 2: cas des Registres TR
dédiés pac ACU ← PR
● Exemple 3: gestion du cache
* apac ACU← ACCU+PR
d’instruction
● Quelques manipulation avec + mpy PR← PR*MEM
GCC
● Un compilateur pour
PR lt TR← MEM
ACU
l’embarqué: GCC sacl MEM← ACU

Exemple de l’appareil photo


spl MEM←PR
numérique

Conclusion

- p. 77/134
Registre dédiés

● Processeurs embarqués n Dans les compilateurs standards, il y a une phase de


Introduction
sélection de code suivie d’une phase d’allocation de
Architecture des processeurs registres
Différents types de processeurs
embarqués
n Il devient difficile de séparer la phase d’allocation de
Compilation pour processeurs registres et la phase de sélection de code.
embarqués
● Compilation pour processeurs
embarqués
n Trouver le meilleur code pour une séquence d’instructions
● Compilation: biblio donnée devient quasiment impossible/
● Compilation: Principes
généraux
● Quelques exemples
n La solution passe par des algorithmes d’optimisation de type
d’optimisation de compilation
pour processeurs embarqués
heuristique ou aléatoire (algorithmes génétique, recuit
● Exemple 1: génération
d’adresse pour DSP
simulé, etc.)
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 78/134
Exemple 3: gestion du cache d’instruction

● Processeurs embarqués n Exemple du ST200: DSP VLIW pour telephone portables


Introduction
n Le cache d’instructions est “direct-mapped”
Architecture des processeurs Memoire
Différents types de processeurs
embarqués Cache

Compilation pour processeurs


embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
n Taille du cache d’instructions: 32K
GCC
● Un compilateur pour
l’embarqué: GCC
n Taille d’une ligne de cache 64 bytes: 512 lignes.
Exemple de l’appareil photo n Coût d’un “cache-miss”: 150 cycles.
numérique

Conclusion
n Pour un placement de code aléatoire les performances
varient avec un rapport de 3!
- p. 79/134
Conflits de cache d’instruction

● Processeurs embarqués Memory


Introduction

Architecture des processeurs


bar {
Différents types de processeurs
embarqués I−Cache foo()
Compilation pour processeurs
embarqués }
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
foo \{
● Exemple 3: gestion du cache \}
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 80/134
Pas de Conflits de cache d’instruction

● Processeurs embarqués Memory


Introduction

Architecture des processeurs


bar {
Différents types de processeurs
embarqués I−Cache foo()
Compilation pour processeurs
embarqués }
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
Gap
● Exemple 3: gestion du cache
d’instruction foo \{
● Quelques manipulation avec
GCC
\}
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 81/134
Optimisation proposée

● Processeurs embarqués n Placement explicite des fonctions en mémoire pour limiter


Introduction
les conflits du cache d’instrution (au moment de l’édition de
Architecture des processeurs
liens)
Ces conflits dépendent du flot d’exécution, on optimise donc
Différents types de processeurs
embarqués n
Compilation pour processeurs pour une trace données:
embarqués
● Compilation pour processeurs
embarqués
n Analyse de la trace: quelles fonctions sont appelées
● Compilation: biblio
● Compilation: Principes
ensembles
généraux
● Quelques exemples
n Déduction d’un placement optimal en mémoire des
d’optimisation de compilation
pour processeurs embarqués
différentes fonctions (pour cette trace là).
● Exemple 1: génération
d’adresse pour DSP n Plusieurs approche existe:
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
Basée sur un graphe d’appel
d’instruction
● Quelques manipulation avec
Basée sur un graphe conflit
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 82/134
Utilisation du graphe d’appel

● Processeurs embarqués n Construction d’un graphe où les


Introduction
sommets sont des fonctions et les
Architecture des processeurs
arêtes les fréquences d’appel.
Deux fonctions souvent appelées
Différents types de processeurs
embarqués n
Compilation pour processeurs doivent avoir une place différente
dans le cache. C’est assuré si on
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio les place cote à cote dans la
● Compilation: Principes
généraux mémoire.
● Quelques exemples
d’optimisation de compilation n L’algorithme est glouton sur le
pour processeurs embarqués
● Exemple 1: génération graphe: il fusionne les sommets
d’adresse pour DSP
● Exemple 2: cas des Registres reliés par l’arête de poids max.
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 83/134
Utilisation du graphe des conflits

● Processeurs embarqués nConstruction d’un graphe (GC) où les sommets sont des
Introduction
fonctions (ou des morceaux de code) et les arêtes sont les
Architecture des processeurs
conflits constatés sur ne trace particulière
n Il y a conflit entre A et B si la trace contient le pattern
Différents types de processeurs
embarqués

Compilation pour processeurs suivant: A . . . B . . . A ou B . . . A . . . B.


embarqués
● Compilation pour processeurs n Exemple:
embarqués
● Compilation: biblio
● Compilation: Principes
ABCBABABABA
généraux
● Quelques exemples
7 conflits entre A et B, 1 conflit entre A et C 1 conflit entre B et
d’optimisation de compilation C
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
⇒ On place en priorité A et B consecutivement en mémoire
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 84/134
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


Quelques manipulation avec GCC
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio
● Compilation: Principes
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 85/134
Un compilateur pour l’embarqué: GCC

● Processeurs embarqués n GCC: Gnu C Compiler ou Gun Compiler Collection


Introduction
n http://gcc.gnu.org/
Architecture des processeurs

Différents types de processeurs


n Outil développé par la communauté mondiale,
embarqués développement rapide.
Compilation pour processeurs
embarqués
n De plus en plus utilisé pour le calcul embarqué car il est
● Compilation pour processeurs
embarqués reciblable.
● Compilation: biblio
● Compilation: Principes n Exemple d’utilisation
généraux
● Quelques exemples u Créer un compilateur pour le Mips sur votre Pentium
d’optimisation de compilation
pour processeurs embarqués u Insérer une routine d’interruption dans votre programme
● Exemple 1: génération
d’adresse pour DSP u Répartir les différentes section de votre code dans
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
différentes mémoire.
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 86/134
compilateur, éditeur de liens, binutils

● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs


embarqués

Compilation pour processeurs


embarqués
● Compilation pour processeurs
embarqués n gcc: ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.tar.gz
● Compilation: biblio
● Compilation: Principes
généraux
n Assembleur, éditeur
● Quelques exemples
d’optimisation de compilation
de lien et utilitaire de manipulation de binaire (objdump, etc..)
pour processeurs embarqués
● Exemple 1: génération
ftp://ftp.gnu.org/gnu/binutils/binutils-2.9.1.tar.gz
d’adresse pour DSP
● Exemple 2: cas des Registres n Run-time library (printf, malloc, etc.): newlib (ou
dédiés
● Exemple 3: gestion du cache glibc)
d’instruction
● Quelques manipulation avec ftp://sourceware.cygnus.com/pub/newlib/newlib-1.8.1.tar
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 87/134
Installation pour le Mips

● Processeurs embarqués n tar zxf gcc-3.3.tar.gz


Introduction
n tar zxfbinutils-2.9.1.tar.gz
Architecture des processeurs
n cd binutils-2.9.1
Différents types de processeurs
embarqués configure
Compilation pour processeurs
embarqués
-target=mipsel
● Compilation pour processeurs make all install
embarqués
● Compilation: biblio
● Compilation: Principes
n Même chose pour gcc
Voir le fichier configure.sub pour les plate-formes cibles
généraux
● Quelques exemples n
possibles
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
n On peut aussi compiler gcc sur une machine pour l’utiliser
dédiés
● Exemple 3: gestion du cache
sur une autre machine (ou il produira du code pour une
d’instruction
● Quelques manipulation avec
troisième machine): GCC est un Cross-compiler
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 88/134
Assembleur dans le code C

● Processeurs embarqués n On peut include directement des instruction assembleur


Introduction
dans le code C: fonction __asm__
Architecture des processeurs
void set_imask_to_6( void )
Différents types de processeurs
embarqués
{
Compilation pour processeurs
printf( "switching to interrupt
embarqués
● Compilation pour processeurs
mask level 6.\n" );
embarqués
● Compilation: biblio
__asm__( " andi #0xf8, sr" );
● Compilation: Principes
généraux
__asm__( " ori #6, sr" );
● Quelques exemples
d’optimisation de compilation
printf( "Interrupt mask level
pour processeurs embarqués
● Exemple 1: génération
is now 6.\n" );
d’adresse pour DSP
● Exemple 2: cas des Registres
}
dédiés
● Exemple 3: gestion du cache n Permet d’écrire des pilotes de périphériques, de contrôler la
gestion des interruptions sans système d’expoitation
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 89/134
Assembleur dans le code C

● Processeurs embarqués n On peut aussi mettre explicitement des variables dans des
Introduction
registres sans connaître l’allocation de registres faite par le
Architecture des processeurs
processeur
Exemple: utilisation de la fonction fsinx du 68881:
Différents types de processeurs
embarqués n
Compilation pour processeurs __asm__("fsinx %1,%0" : "=f" (result) : "f" (angle));
embarqués
● Compilation pour processeurs
embarqués
n %0 et %1 représente le résultat et l’opérande de la fonction
● Compilation: biblio
● Compilation: Principes
qui vont correspondre aux variables result et angle du
généraux
● Quelques exemples
programme C
d’optimisation de compilation
pour processeurs embarqués
n "t" est une directive indiquant à gcc qu’il doit utiliser des
● Exemple 1: génération
d’adresse pour DSP
registres flottants
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 90/134
Contrôler les section du programme

● Processeurs embarqués n Le code contient différentes sections. Par exemple avec


Introduction
GCC
Architecture des processeurs u La section .text contient les instructions du programme
Différents types de processeurs u La section .data contient des données statiques etc.
embarqués

Compilation pour processeurs n Le concepteur de logiciel embarqué veut souvent contrôler


explicitement la répartition des variables globales dans les
embarqués
● Compilation pour processeurs
embarqués
● Compilation: biblio sections (à la compilation): pour distinguer les variables des
● Compilation: Principes
généraux constantes par exemple.
● Quelques exemples
d’optimisation de compilation n Il peut vouloir aussi contrôler la répartition des sections dans
pour processeurs embarqués
● Exemple 1: génération les composants matériels (à l’édition de lien et au
d’adresse pour DSP
● Exemple 2: cas des Registres chargement du programme)
dédiés
● Exemple 3: gestion du cache
d’instruction
n Utilisation de la directive __attibute__
● Quelques manipulation avec
GCC const int put_this_in_rom
● Un compilateur pour
l’embarqué: GCC __attribute__((section("myconst" )));
Exemple de l’appareil photo const int put_this_in_flash
numérique
__attribute__((section("myflash" )));
Conclusion

- p. 91/134
Gestionnaire d’interruption

● Processeurs embarqués n Beaucoup de périphériques dédiés /* code C de gestion de l’interruption */


Introduction
communiquent avec le processeur void isr_C( void ) {
/* ISR: interupt service routine
Architecture des processeurs
par des interruptions faire quelque chose en C */
...
Différents types de processeurs u Problèmes (adresse mémoire }
embarqués

Compilation pour processeurs


invalide), erreur de transmission /* code assembleur utilisé
embarqués
● Compilation pour processeurs
sur le bus dans le code source */
__asm__("
embarqués u Fin de tache pour un accélérateur .global _isr
● Compilation: biblio
● Compilation: Principes
généraux
matériel _isr:
/* Sauvegarde des registres
● Quelques exemples u Détection de données pour un * choisis
d’optimisation de compilation */
pour processeurs embarqués
● Exemple 1: génération
censeurs push r0
push r1
d’adresse pour DSP
● Exemple 2: cas des Registres
n GCC ne peut pas généralement pas ...
dédiés
● Exemple 3: gestion du cache directement compiler un /* appel du gestionnaire */
jsr _isr_C
gestionnaire d’interruption (retour
d’instruction
/* restauration des registre
● Quelques manipulation avec
GCC * et retour
● Un compilateur pour par rte: return from exception) */
l’embarqué: GCC ...
Exemple de l’appareil photo
n on peut contourner ce problème en pop r1

encapsulant la procédure de gestion


numérique pop r0
rte
Conclusion
de l’interruption ");

- p. 92/134
Le LD script

● Processeurs embarqués n L’éditeur de liens assemble les différents fichiers objets


Introduction
résultant de la compilation séparée des différents fichiers.
Architecture des processeurs
n C’est là que sont résolus les appels à des fonctions entre
fichier ou à des fonctions de bibliothèque non fournies par
Différents types de processeurs
embarqués

Compilation pour processeurs l’utilisateur


embarqués
● Compilation pour processeurs
embarqués
n C’est aussi là que sont agencées les différentes sections
● Compilation: biblio
● Compilation: Principes
mémoire dans l’espace d’adressage final
généraux
● Quelques exemples
d’optimisation de compilation
pour processeurs embarqués
● Exemple 1: génération
d’adresse pour DSP
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 93/134
Exemple de LD script

● Processeurs embarqués /* Une list de fichier à inclure (les autres sont


spécifiés par la ligne de commande */
Introduction
INPUT(libc.a libg.a libgcc.a libc.a libgcc.a)
Architecture des processeurs
/* Specification du format de sortie
Différents types de processeurs (binaire :bin}, Intel Hex:
embarqués
n Spécification de fichier de ihex, debug coff-\$target */

librairie
Compilation pour processeurs OUTPUT_FORMAT("coff-sh")
embarqués
● Compilation pour processeurs
embarqués n Spécification du format de /* list of our memory sections */
● Compilation: biblio
● Compilation: Principes sortie MEMORY {
vect : ORIGIN = 0x00000000, LENGTH = 1k
généraux
● Quelques exemples
d’optimisation de compilation
n 5 sections nommées rom : ORIGIN = 0x00000400, LENGTH = 127k
reset: ORIGIN = 0xBFC00000, LENGTH = 0x00000400
pour processeurs embarqués ram : ORIGIN = 0x400000, LENGTH = 128k
● Exemple 1: génération
cache : ORIGIN = 0xfffff000, LENGTH = 4k
d’adresse pour DSP
}
● Exemple 2: cas des Registres
dédiés
● Exemple 3: gestion du cache
d’instruction
● Quelques manipulation avec
GCC
● Un compilateur pour
l’embarqué: GCC

Exemple de l’appareil photo


numérique

Conclusion

- p. 94/134
Exemple de LD script (suite)

● Processeurs embarqués
n Description du placement /* uninitialized data */
Introduction .bss :
de chaque section en SECTIONS {
/* the interrupt
Architecture des processeurs

Différents types de processeurs


mémoire vector table */
{
__bss_start = . ;
.vect :
embarqués
n Création d’un symbole au {
*(.bss)
*(COMMON)
Compilation pour processeurs
embarqués
début de la section (ex: __vect_start = .;
*(.vect);
__bss_end = . ;
} > ram
● Compilation pour processeurs
embarqués
__text_start) et à la fin __vect_end = .;
} > vect
● Compilation: biblio
● Compilation: Principes
(__text_end ) /* initialized data */
.init : AT (__text_end)
/* code and constants */
Placement des parties du
généraux {
● Quelques exemples n .text :
__data_start = .;
code préfixé par la directive
d’optimisation de compilation {
*(.data)
pour processeurs embarqués __text_start = .;
__data_end = .;
.text dans la section rom
● Exemple 1: génération
*(.text)
d’adresse pour DSP } > ram
*(.strings)
de la mémoire.
● Exemple 2: cas des Registres
dédiés __text_end = .;
/* application stack */
● Exemple 3: gestion du cache } > rom
d’instruction
● Quelques manipulation avec
n Éventuellement insertion de .stack :
{
code spécifiquement écrit
GCC .reset : {
__stack_start = .;
● Un compilateur pour ./libhandler.a(.reset)
*(.stack)
l’embarqué: GCC
directement dans la } > reset
__stack_end = .;
Exemple de l’appareil photo
numérique mémoire (.reset) }
} > ram

Conclusion

- p. 95/134
● Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs

Exemple de l’appareil photo numérique


embarqués

Compilation pour processeurs


embarqués
Tiré du cours de Franck Vahid:
Exemple de l’appareil photo
numérique
● Exemple de l’appareil photo
http://www.cs.ucr.edu/content/esd/
numérique
● Le point de vue du concepteur
● Charge-coupled device (CCD)
● Discrete Cosine Transform:
DCT
● Étape de quantization
● Encodage de Huffman
● Contrainte du système
● Spécification fonctionnelle
● Implémentation 1:
Microcontroller seul
● Implémentation 2:
Microcontroller et CCDPP

Conclusion

- p. 96/134

Vous aimerez peut-être aussi