Conception et systèmes embarqués complexes Master 2004

Antoine Fraboulet, Tanguy Risset [email protected], [email protected] Lab CITI, INSA de Lyon, Lab LIP, ENS de Lyon

- p. 1/134 G Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs embarqués Processeurs embarqués Compilation pour processeurs embarqués

Exemple de l’appareil photo numérique

Conclusion

- p. 2/134 Part de marché

G Processeurs embarqués I Quel est le le microprocesseur le plus vendu ? Introduction N Réponse classique: "Le Pentium: 92% du marché" G Part de marché G Contradiction ? I G Variété des processeurs Faux!...... embarqués N 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 ?

G Processeurs embarqués I Alors d’ou vient la position d’ (16% du marché des Introduction semi-conducteurs) ? G Part de marché G Contradiction ? I G Variété des processeurs 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

G Processeurs embarqués I 3 milliards de processeurs 8 bits vendus par an (8051, 6805 Introduction etc.) G Part de marché G Contradiction ? I G Variété des processeurs 32 bits (Pentium, Athlon, mais aussi PowerPC, 68000, MIPS, embarqués ARM etc.) Architecture des processeurs I La plupart (98%) sont embarqués (3 fois plus d’ARM vendus Différents types de processeurs 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

G Processeurs embarqués

Introduction G Part de marché G Contradiction ? G 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

I Les applications sont plus variées que pour les ordinateurs I Beaucoup de processeurs embarqués sont des processeurs de bureau qui n’ont pas percés (MIPS, 68K, SPARC, ARM, PowerPC)

- p. 6/134 G Processeurs embarqués

Introduction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 7/134 numérique

Conclusion Architecture "Von Neuman" ou "Princeton"

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 8/134 numérique

Conclusion Architecture Harvard

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 9/134 numérique

Conclusion Le jeu d’instruction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 10/134 numérique

Conclusion CISC: Complex Instruction Set Computer

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 11/134 numérique

Conclusion Exemple: instructions de l’ISA du Pentium

G Processeurs embarqués JE EIP + displacement 4 4 8 Introduction JE Condition Displacement

Architecture des processeurs G Architecture "Von Neuman" Call ou "Princeton" 8 32 G Architecture Harvard G Le jeu d’instruction CALL Offset G CISC: Complex Instruction Set Computer Mov $EBX, [EDI+displacement] G Exemple: instructions de l’ISA 6 1 1 8 8 du Pentium G RISC: Reduced Instruction MOV d w r−m postbyte Displacement Set Computer G Exemple: instructions de l’ISA du MIPS Push ESI G Le CPU 5 3 G Le pipeline RISC: exemple du MIPS PUSH Reg G Exemple d’exécution sans pipeline G Exemple d’exécution avec Add $EAX, Immediate pipeline 4 3 1 32 G Parallélisme au sein du ADD Reg w Immediate processeur G Parallélisme au sein du processeur G 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

Conclusion RISC: Reduced Instruction Set Computer

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 13/134 numérique

Conclusion Exemple: instructions de l’ISA du MIPS

G Processeurs embarqués I TYPE (Immediate) 5 5 Introduction op rs rt Immediate

Architecture des processeurs G Architecture "Von Neuman" J TYPE (Jump) ou "Princeton" 6 26 G Architecture Harvard G Le jeu d’instruction op Immediate G CISC: Complex Instruction Set Computer G Exemple: instructions de l’ISA R TYPE (Register) du Pentium G RISC: Reduced Instruction op rs rt rd sa funct Set Computer G Exemple: instructions de l’ISA I du MIPS I-Type: G Le CPU G Le pipeline RISC: exemple du LW rt, offset(base) MIPS G Exemple d’exécution sans I pipeline J-Type: G Exemple d’exécution avec pipeline JUMP target G Parallélisme au sein du I processeur R-Type: G Parallélisme au sein du processeur ADD rd,rt,rs G Mémoire

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 14/134 numérique

Conclusion Le CPU

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 15/134 numérique

Conclusion Le pipeline RISC: exemple du MIPS

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 16/134 numérique

Conclusion Le pipeline RISC: exemple du MIPS

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 17/134 numérique

Conclusion Le pipeline RISC: exemple du MIPS

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 18/134 numérique

Conclusion Exemple d’exécution sans pipeline

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 19/134 numérique

Conclusion cycle 1

G Processeurs embarqués I Chargement de l’instruction Introduction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 20/134 numérique

Conclusion cycle 2

G Processeurs embarqués I Décodage de l’instruction Introduction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 21/134 numérique

Conclusion cycle 3

G Processeurs embarqués I Exécution (rien pour load) Introduction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 22/134 numérique

Conclusion cycle 4

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 23/134 numérique

Conclusion cycle 5

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 24/134 numérique

Conclusion Bilan architecture pipelinée

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 25/134 numérique

Conclusion Exemple d’exécution avec pipeline

G Processeurs embarqués I Chargement de l’instruction load Introduction

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 26/134 numérique

Conclusion cycle 2

G Processeurs embarqués I Décodage de l’instruction load Introduction I et Chargement de Rien (bulle car l’instruction suivante Architecture des processeurs G Architecture "Von Neuman" retardée) ou "Princeton" G Architecture Harvard G Le jeu d’instruction Processor Datapath G CISC: Complex Instruction Set Computer G Exemple: instructions de l’ISA ALU du Pentium Control unit load G RISC: Reduced Instruction control/Status Set Computer G Exemple: instructions de l’ISA R0 Register File R1 du MIPS PC IR G Le CPU G Le pipeline RISC: exemple du 104 R2 R3 MIPS G Exemple d’exécution sans pipeline G Exemple d’exécution avec pipeline G Parallélisme au sein du processeur G Parallélisme au sein du Memory processeur 500 G Mémoire 100 la R0,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. 27/134 numérique

Conclusion cycle 3

G Processeurs embarqués I Exécution de l’instruction load (rien) Introduction I Décodage de rien Architecture des processeurs G Architecture "Von Neuman" I Chargement de l’instruction add ou "Princeton" G Architecture Harvard G Le jeu d’instruction G CISC: Complex Instruction Processor Datapath Set Computer G Exemple: instructions de l’ISA ALU du Pentium G RISC: Reduced Instruction Control unit Set Computer control/Status G Exemple: instructions de l’ISA R0 Register File R1 du MIPS IR G Le CPU PC 10 G Le pipeline RISC: exemple du add R1,R0,1 MIPS 104 R2 R3 G Exemple d’exécution sans pipeline G Exemple d’exécution avec pipeline G Parallélisme au sein du processeur G Parallélisme au sein du processeur Memory G 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

Conclusion cycle 4

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

Exemple de l’appareil photo - p. 29/134 numérique

Conclusion cycle 5

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

Exemple de l’appareil photo - p. 30/134 numérique

Conclusion cycle 6

G Processeurs embarqués I Write Back de rien Introduction I Accès mémoire de l’instruction add (rien) Architecture des processeurs G Architecture "Von Neuman" I Exécution de l’instruction store (rien) ou "Princeton" G Architecture Harvard G Le jeu d’instruction Processor G CISC: Complex Instruction Datapath Set Computer G Exemple: instructions de l’ISA ALU du Pentium add G RISC: Reduced Instruction Control unit Set Computer control/Status G Exemple: instructions de l’ISA R0 Register File R1 du MIPS IR G Le CPU PC 10 G Le pipeline RISC: exemple du 120 R2 R3 MIPS G Exemple d’exécution sans pipeline G Exemple d’exécution avec pipeline G Parallélisme au sein du sw processeur G Parallélisme au sein du processeur Memory G 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

Conclusion cycle 7

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

Conclusion Bilan architecture non pipelinée

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

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 33/134 numérique

Conclusion Parallélisme au sein du processeur

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

Conclusion Parallélisme au sein du processeur

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

Conclusion Mémoire

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 36/134 numérique

Conclusion Principe du Cache

G Processeurs embarqués 0 0 1 Introduction 2 3 Architecture des processeurs 4 G Architecture "Von Neuman" 5 ou "Princeton" G Architecture Harvard 6 G Le jeu d’instruction 7 0 G CISC: Complex Instruction 8 Set Computer 1 9 © ¤ ¢ § ¨ G Exemple: instructions de l’ISA £ ¡ 2 ¦ 10 © ¤ ¢ § ¨ 1£ cycle ¡ 10−20¦ cycles ¥ ¥ ¥ ¥ ¥ Espace © ¤ ¢ § ¨ du Pentium £ ¡ 3 ¦ 11 © ¤ ¢ § ¨ Processeur £ ¡ ¦ G RISC: Reduced Instruction 4 12 mémoire Set Computer 5 13 adressable G Exemple: instructions de l’ISA 6 14 du MIPS 7 G Le CPU 15 16 G Le pipeline RISC: exemple du MIPS 17 G Exemple d’exécution sans 18 pipeline Cache de données (SRAM) 19 G Exemple d’exécution avec 20 pipeline 21 G Parallélisme au sein du 22 processeur 23 N−1 G Parallélisme au sein du processeur G 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

Conclusion Hiérarchie Mémoire

G Processeurs embarqués

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

Différents types de processeurs embarqués

Compilation pour processeurs embarqués

Exemple de l’appareil photo - p. 38/134 numérique

Conclusion G Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs embarqués G Différents types de Différents types de processeurs processeurs embarqués G 68000, x86 G SPARC, 29000 et i960 embarqués G MIPS, ARM, SuperH et PowerPC G Et les autres.... G Micro-contrôleurs G DSP: Digital Signal Processing G Quelques mécanismes matériels utiles G 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

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

Compilation pour processeurs embarqués

Exemple de l’appareil photo numérique

Conclusion

- p. 40/134 68000, x86

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

Exemple de l’appareil photo numérique

Conclusion

- p. 41/134 SPARC, 29000 et i960

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

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

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

Exemple de l’appareil photo les PDA numérique I PowerPC autant utilisé en embarqué qu’en ordinateur Conclusion

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

G Processeurs embarqués I Plus de 100 processeurs embarqués 32 bits sur le marché Introduction I 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 I Certain processeurs RISC (Crusoe de Transmetta) peuvent G Différents types de processeurs embarqués exécuter du code CISC (Intel) G 68000, x86 G SPARC, 29000 et i960 N Principe: recompilation du code à l’exécution (runtime G MIPS, ARM, SuperH et PowerPC compilation) G Et les autres.... G Micro-contrôleurs N Gain obtenus par un mécanisme de cache, d’optimisation G DSP: Digital Signal Processing poussée des portion de code répétées (boucle), et grâce G Quelques mécanismes matériels utiles au parallélisme de niveau instruction G Quelques mots sur la consommation N Réduction drastique de la consommation pour des Compilation pour processeurs performances équivalentes embarqués

Exemple de l’appareil photo numérique

Conclusion

- p. 44/134 Micro-contrôleurs

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

Conclusion

- p. 45/134 DSP: Digital Signal Processing

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

Conclusion

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

G Processeurs embarqués I Densité de code: Introduction N 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 G Différents types de N Un programme C compilé pour SPARC prendra deux fois processeurs embarqués G 68000, x86 plus de place en mémoire que le même programme G SPARC, 29000 et i960 G MIPS, ARM, SuperH et compilé pour le 68030. PowerPC G Et les autres.... N En général les code RISC sont deux fois moins dense que G Micro-contrôleurs G DSP: Digital Signal les codes CISC (ex: instruction TBLS du 68300: table Processing G Quelques mécanismes lookup and interpolate) matériels utiles G Quelques mots sur la N les options de compilation doivent être utilisée avec consommation

Compilation pour processeurs précaution. embarqués N 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

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

G Processeurs embarqués I Données non-alignés Introduction N 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) G Différents types de N Les processeurs RISC savent uniquement transférer des processeurs embarqués G 68000, x86 mots (32 bits) alignés (calés sur une adresse multiple de G SPARC, 29000 et i960 G MIPS, ARM, SuperH et 32 bits). PowerPC G Et les autres.... N La plupart des architectures CISC (68k, x86) peuvent faire G Micro-contrôleurs G DSP: Digital Signal des chargements non alignés Processing G Quelques mécanismes matériels utiles G 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

G Processeurs embarqués I Gestion spécifique du cache Introduction N Les caches améliorent les performances mais introduisent Architecture des processeurs du non-déterminisme. Différents types de processeurs N embarqués Les contraintes spécifiques des systèmes embarqués ont G Différents types de entraîné des mécanismes particuliers pour les cache processeurs embarqués G 68000, x86 N On peut vouloir bloquer le cache (cache locking): forcer G SPARC, 29000 et i960 G MIPS, ARM, SuperH et certaines données ou instruction à se charger et rester PowerPC G Et les autres.... dans le cache (on parle aussi de mémoire scratch-pad G Micro-contrôleurs G DSP: Digital Signal memory ou de software controlled cache). Processing G Quelques mécanismes N La plupart des caches utilisent une politique de matériels utiles G Quelques mots sur la Write-Back: une donnée modifiée dans le cache n’est pas consommation

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

G Processeurs embarqués I Trois composantes de la consommation d’une porte logique Introduction (inverseur) 2 Architecture des processeurs N Consommation dynamique : Pdyn = C.VCC Différents types de processeurs C embarqués ( capacité de la porte) G Différents types de N Consommation statique : Pstatic = VCC .Ileak processeurs embarqués G 68000, x86 (VCC : tension d’alimentation, Ileak intensité des G SPARC, 29000 et i960 G MIPS, ARM, SuperH et courants de fuite) PowerPC 3 G Et les autres.... N Consommation de court-circuit Pcs = K.τ.(VCC − 2VT h) . G Micro-contrôleurs G DSP: Digital Signal (K:constante technologique ; VT h:tension seuil ; Processing G Quelques mécanismes τ:temps de montée descente du signal) matériels utiles G Quelques mots sur la I À À consommation Aujourd’hui (2004) Pdyn Pstatic Pcs

Compilation pour processeurs I Demain (2006) Pdyn ≈ Pstatic À Pcs embarqués

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Généralisation naïve en prenant en compte une activité Introduction moyenne α (nombre moyen de portes commutant) 2 Architecture des processeurs N Consommation dynamique : Pdyn = C.VCC .α.f Différents types de processeurs f embarqués ( : fréquence du circuit) G Différents types de N Consommation statique : Pstatic = VCC .Ileak.N.kdesign processeurs embarqués G 68000, x86 (N: nombre de portes, kdesign constante dépendant G SPARC, 29000 et i960 G MIPS, ARM, SuperH et du design) PowerPC G Et les autres.... I G Micro-contrôleurs Cette modélisation est très imprécise pour un circuit dont le G DSP: Digital Signal Processing comportement n’est pas stationnaire (ex: processeur) G Quelques mécanismes matériels utiles G 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

G Processeurs embarqués I 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 G Différents types de I processeurs embarqués On peut différentier les tensions en fonction du bloc du chip: G 68000, x86 G SPARC, 29000 et i960 1.5 V pour le processeur, 3.3 pour l’interface du bus et les G MIPS, ARM, SuperH et PowerPC pattes d’entrée/sortie (ex: Strong ARM de Digital) G Et les autres.... G Micro-contrôleurs I Plus la technologie est intégrée, moins elle consomme G DSP: Digital Signal Processing (capacité diminuée). G Quelques mécanismes matériels utiles I G Quelques mots sur la Fréquence d’horloge peu élevée compensée par le consommation parallélisme Compilation pour processeurs embarqués I Complexité réduite des différents composants (moins de Exemple de l’appareil photo registres, architectures RISC) numérique

Conclusion

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

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

Compilation pour processeurs embarqués

Exemple de l’appareil photo numérique

Conclusion

- p. 54/134 G Processeurs embarqués

Introduction

Architecture des processeurs

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

Exemple de l’appareil photo numérique

Conclusion

- p. 55/134 Compilation: biblio

G Processeurs embarqués I Dragon book: Introduction N 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. N Compilation pour processeurs La bible, un peu dépassé sur certains sujets, mais embarqués beaucoup n’ont pas changé depuis. G Compilation pour processeurs embarqués I G Compilation: biblio Cooper/Torczon: G Compilation: Principes N généraux Keith D. Cooper and Linda Torczon. Engineering a G Quelques exemples d’optimisation de compilation Compiler. Morgan-Kaufmann, 2003. pour processeurs embarqués N G Exemple 1: génération récent, survol assez complet. d’adresse pour DSP G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Définition: Introduction N 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. I Compilation pour processeurs Les principes fondamentaux de la compilation sont: embarqués N G Compilation pour processeurs Le compilateur doit conserver le sens du programme embarqués G Compilation: biblio compilé G Compilation: Principes N généraux Le compilateur doit améliorer le code G Quelques exemples d’optimisation de compilation I Les propriétés importantes d’un compilateur sont: pour processeurs embarqués G Exemple 1: génération 1. Code produit efficace (rapidité, mémoire). d’adresse pour DSP G Exemple 2: cas des Registres dédiés 2. Informations retournées en cas d’erreurs, debboging G Exemple 3: gestion du cache d’instruction 3. Rapidité de la compilation G Quelques manipulation avec GCC I G Un compilateur pour 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

G Processeurs embarqués I Définition d’un "bon" compilateur Introduction N Contraintes temps-réel Architecture des processeurs I 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 N G Compilation pour processeurs Consommation embarqués I G Compilation: biblio Organisation mémoire G Compilation: Principes I accès mémoire (cache miss) généraux G Quelques exemples I Taille de code d’optimisation de compilation pour processeurs embarqués N Performances G Exemple 1: génération d’adresse pour DSP I G Exemple 2: cas des Registres Temps de compilation peu critique dédiés G Exemple 3: gestion du cache I Architecture variées: DSP, instructions multi-média etc. d’instruction G Quelques manipulation avec I GCC Relation avec le système d’exploitation peu standardisé G Un compilateur pour l’embarqué: GCC N Actuellement: petit OS ou pas d’OS Exemple de l’appareil photo N Prochainement: OS léger pour multi-threads numérique

Conclusion

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

G Processeurs embarqués I Le flot complet de compilation est le suivant: Introduction

Architecture des processeurs

Différents types de processeurs embarqués

Compilation pour processeurs embarqués G Compilation pour processeurs embarqués G Compilation: biblio G Compilation: Principes généraux G Quelques exemples d’optimisation de compilation I pour processeurs embarqués La programmation d’un système embarqué nécessite G Exemple 1: génération d’adresse pour DSP souvent d’écrire explicitement des parties en assembleur G Exemple 2: cas des Registres dédiés (pilotes de périphériques et d’accélérateurs matériels). G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I le flot détaillé est le suivant: Introduction

Architecture des processeurs Front−End Middle−End Back−End Différents types de processeurs embarqués

Compilation pour processeurs Opt2 Opt3 Alloc. Reg. embarqués Scanning Parsing C.S.A Opt1 Selection

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

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Arbre: Abstract Syntax Tree (AST), Graphe acyclique (DAG) Introduction I ex: x × 2 + x × 2 × y Architecture des processeurs + +

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

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I CDFG: Control and Data-flow graph Introduction x<−... y<−... Architecture des processeurs x ← ... Différents types de processeurs y ← ... while (x<100) embarqués

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

Conclusion

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

G Processeurs embarqués I SSA: static single assignement Introduction x0 ← ... Architecture des processeurs y0 ← ... if (x ≥ 100) goto next Différents types de processeurs x ← ... 0 loop: x ← φ(x , x ) embarqués y ← ... 1 0 2 y ← φ(y , y ) while (x < 100) 1 0 2 Compilation pour processeurs x2 ← x1 + 1 embarqués x ← x + 1 y2 ← y1 + x2 G Compilation pour processeurs y ← y + x if (x < 100) goto loop embarqués end 2 ← G Compilation: biblio next: x3 φ(x0, x2) G Compilation: Principes y3 ← φ(y0, y2) généraux G Quelques exemples x0<−... d’optimisation de compilation x<−... y0<−... pour processeurs embarqués y<−... G Exemple 1: génération If (x0>100) d’adresse pour DSP while (x<100) G Exemple 2: cas des Registres dédiés x1=φ (x0,x2) G Exemple 3: gestion du cache x<−x+1 y<−y+1 y1=φ (y0,y2) d’instruction G Quelques manipulation avec x2<−x1+1 y2<−y1+1 GCC G 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

G Processeurs embarqués I 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) Différents types de processeurs I embarqués Parsing LR(1): Le parseur est généré à partir de la

Compilation pour processeurs grammaire du langage. embarqués G Compilation pour processeurs I Flex et bison: outils GNU embarqués G Compilation: biblio G Compilation: Principes généraux G Quelques exemples d’optimisation de compilation pour processeurs embarqués G Exemple 1: génération d’adresse pour DSP G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Certaines phases d’optimisations sont ajoutées, elles Introduction peuvent être très calculatoires Architecture des processeurs I Quelques exemples de transformation indépendantes de la Différents types de processeurs embarqués machine: N Compilation pour processeurs Élimination d’expressions redondantes embarqués G Compilation pour processeurs N Élimination de code mort embarqués G Compilation: biblio N Propagation de constantes G Compilation: Principes généraux G Quelques exemples d’optimisation de compilation pour processeurs embarqués G Exemple 1: génération d’adresse pour DSP G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

- p. 65/134 Scalar replacement of array references 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

G 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 G Compilation pour processeurs Induction−variable strength reduction embarqués Linear function test replacement G Compilation: biblio Induction−variable removal G Compilation: Principes Unnecessary bound checking elimination généraux Control−flow optimisations G Quelques exemples d’optimisation de compilation In−line expansion pour processeurs embarqués Leaf routine optimization G Exemple 1: génération Shrink wrapping d’adresse pour DSP Machine idioms G Exemple 2: cas des Registres Tail merging dédiés Branch optimization and conditionnal moves G Exemple 3: gestion du cache Dead code elimination d’instruction D Software−pipelining, loop unrolling, variable expansion G Quelques manipulation avec register renaming and hierachical reduction GCC Basic block and branch scheduling 1 G 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

G Processeurs embarqués I 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. Différents types de processeurs I embarqués Les étapes les plus importantes sont N Compilation pour processeurs Selection de code embarqués N G Compilation pour processeurs Allocation de registre embarqués N G Compilation: biblio Ordonnancement d’instructions G Compilation: Principes généraux G Quelques exemples d’optimisation de compilation pour processeurs embarqués G Exemple 1: génération d’adresse pour DSP G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G 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 int fib (int i) { embarqués subu $sp,$sp,24 # SP<-SP-24 :AR de 24 octet(6 mots) G if (i<=1) return(1); Compilation pour processeurs sw $ra,20($sp) # stocke adresse retour SP+20 embarqués else return(fib(i-1)+fib(i-2)); sw $fp,16($sp) # stocke ARP appelant SP+16 G Compilation: biblio } G 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[]) { G Quelques exemples sw $5,28($fp) # stocke Arg2 dans la pile (ARP+48) fib(2); d’optimisation de compilation li $a0,2 # $a0 <- 2 ($a0: Arg1) pour processeurs embarqués } jal fib # jump and link fib($ra<-next instr) G Exemple 1: génération d’adresse pour DSP move $sp,$fp # SP <- ARP G Exemple 2: cas des Registres lw $ra,20($sp) # $ra <- adresse retour dédiés lw $fp,16($sp) # ARP <- ARP appelant G Exemple 3: gestion du cache addu $sp,$sp,24 # SP->SP+24 d’instruction G Quelques manipulation avec j $ra # jump adresse retour GCC .end main G 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, extra= 0 .mask 0xc0010000,-8 .fmask 0x00000000,0 G Processeurs embarqués gcc -S fib.c subu $sp,$sp,40 # SP <- SP-40 :AR de 40 octet (10 mots)

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 sw $a0,40($fp) # stocke Arg1 dans la pile (ARP+40) embarqués 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 G Compilation pour processeurs if (i<=1) return(1); li $v0,1 # $v0 <- 0x1 ($v0 sera le registre contenant le res) embarqués else return(fib(i-1)+fib(i-2)); sw $v0,16($fp) # stocke le resultat dans la pile G Compilation: biblio G Compilation: Principes } j $L1 # saute à L1 généraux $L2: G 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 l’appel recursif) G Exemple 1: génération d’adresse pour DSP jal fib # jump and link fib ($ra<-next instr) G 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 G Exemple 3: gestion du cache addu $v0,$v0,-2 # retranche 2 d’instruction G Quelques manipulation avec move $a0,$v0 # $a0 <- $v0 ($a0: contient Arg1 pour l’appel recursif) GCC jal fib # jump and link fib ($ra<-next instr) G Un compilateur pour addu $s0,$s0,$v0 # $s0 <- $s0+$v0 ($v0: res appel fib) 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 j $ra # jump adresse retour .end fib G Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs embarqués Quelques exemples d’optimisation de Compilation pour processeurs embarqués G Compilation pour processeurs compilation pour processeurs embarqués G Compilation: biblio embarqués G Compilation: Principes généraux G Quelques exemples d’optimisation de compilation pour processeurs embarqués G Exemple 1: génération d’adresse pour DSP G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G 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

G Processeurs embarqués I 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. Différents types de processeurs I embarqués Minimiser les accès mémoire augmente beaucoup les

Compilation pour processeurs performances. embarqués G Compilation pour processeurs I Pour cela, les assembleurs sont pourvus d’un registre embarqués G Compilation: biblio d’adresse AR et de plusieurs mode d’adressage: adressage G Compilation: Principes généraux indirect (REG ← Mem[reg1]) et indirect indexé G Quelques exemples d’optimisation de compilation (REG ← Mem[reg1 + const1]). pour processeurs embarqués G Exemple 1: génération I d’adresse pour DSP ils possèdent généralement des versions avec G Exemple 2: cas des Registres dédiés auto-incrément (ou auto-décrement) des instructions G Exemple 3: gestion du cache d’instruction standard: load, store. G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I 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) Différents types de processeurs I embarqués Auto-modify à chaque load, store le registre d’adresse AR

Compilation pour processeurs est incrémenté ou décrémenté de la valeur d’un registre MR embarqués G Compilation pour processeurs (modify register) embarqués G Compilation: biblio I Exemple de jeu d’instruction (assembleur TMS320C25): G Compilation: Principes généraux G Quelques exemples instruction effet d’optimisation de compilation LDAR AR, val AR ← val //chargement du registre d’adresse AR avec une valeur pour processeurs embarqués G 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 G Exemple 2: cas des Registres dédiés LOAD ∗ (AR)− REG ← mem(AR); AR ← AR − 4 //version avec auto decrement G Exemple 3: gestion du cache ST OR ∗ (AR) mem(AR) ← REG //AR est le registre d’adresse d’instruction G Quelques manipulation avec ST OR ∗ (AR)+ mem(AR) ← REG; AR ← AR + 4 //version avec auto incrément GCC G 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

G Processeurs embarqués I 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 LOAD ∗ (AR) embarqués

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

Exemple de l’appareil photo numérique

Conclusion

- p. 73/134 Optimisation de l’adressage

G Processeurs embarqués I 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 G Compilation pour processeurs embarqués I Le compilateur choisi d’accéder les variables dans un certain G Compilation: biblio G Compilation: Principes ordre, par exemple celui-ci: généraux G Quelques exemples d’optimisation de compilation a b c d e f a d a d a c d f a b pour processeurs embarqués G Exemple 1: génération d’adresse pour DSP I G Exemple 2: cas des Registres Quelle est l’arrangement de ces différentes variables qui dédiés G Exemple 3: gestion du cache minimise la taille du code généré (et donc le temps d’instruction G Quelques manipulation avec d’exécution)? GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

- p. 74/134 Solution

G Processeurs embarqués 2 a f

Introduction 2 1 Architecture des processeurs I On construit un graphe d’accès dont b 4 Différents types de processeurs 1 e 1 embarqués les noeuds représentent les 1 1 Compilation pour processeurs variables et les poids sur les arcs embarqués représentent le nombre de fois ou 2 G Compilation pour processeurs c d embarqués G Compilation: biblio les variables sont accédées G Compilation: Principes consécutivement dans le code: a généraux G Quelques exemples I d’optimisation de compilation On cherche un chemin hamiltonien c pour processeurs embarqués G Exemple 1: génération dans ce graphe qui maximise le d’adresse pour DSP d G Exemple 2: cas des Registres poids (problème NP-complet). dédiés G Exemple 3: gestion du cache I solution: 10 accès avec la solution a d’instruction G Quelques manipulation avec suivante: GCC f G 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

G Processeurs embarqués I Pour les DSP plus gros, le problème est plus compliqué Introduction I Ils possèdent souvent une unité de génération d’adresse Architecture des processeurs hors du data-path (address generation unit, AGU) qui Différents types de processeurs embarqués possède: N Compilation pour processeurs k registres d’adresse (AR0,. . . ,ARk) embarqués N G Compilation pour processeurs m registres de modification (MR0,. . . ,MRm) embarqués N G Compilation: biblio Un décalage cablé borné par une petite constante G Compilation: Principes N généraux ainsi que la possibilité d’entrer une constante pour le G Quelques exemples d’optimisation de compilation décalage ou pour modifier les AR ou les MR. pour processeurs embarqués AR pointer c MR pointer G Exemple 1: génération Quelques exemple d’unité de génération d’adresses d’adresse pour DSP d G Exemple 2: cas des Registres (Leupers [?]) dédiés TI C25 Motorola 56xxx ADSP-210x AMS Gepard G Exemple 3: gestion du cache d’instruction k 8 4 4 8 G Quelques manipulation avec modify address +/− GCC register k m register m 1 4 4 8 file G Un compilateur pour file r 1 1 0 7 l’embarqué: GCC effective address AGU Exemple de l’appareil photo numérique

Conclusion

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

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

Conclusion

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

G Processeurs embarqués I 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 I embarqués 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 G Compilation pour processeurs I Trouver le meilleur code pour une séquence d’instructions embarqués G Compilation: biblio donnée devient quasiment impossible/ G Compilation: Principes généraux I G Quelques exemples 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 G Exemple 1: génération d’adresse pour DSP simulé, etc.) G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Exemple du ST200: DSP VLIW pour telephone portables Introduction I Le cache d’instructions est “direct-mapped” Architecture des processeurs Memoire

Différents types de processeurs embarqués Cache

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

- p. 79/134 Conflits de cache d’instruction

G Processeurs embarqués Memory

Introduction

Architecture des processeurs bar { Différents types de processeurs embarqués I−Cache foo()

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

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués Memory

Introduction

Architecture des processeurs bar { Différents types de processeurs embarqués I−Cache foo()

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

Exemple de l’appareil photo numérique

Conclusion

- p. 81/134 Optimisation proposée

G Processeurs embarqués I 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) Différents types de processeurs I embarqués Ces conflits dépendent du flot d’exécution, on optimise donc

Compilation pour processeurs pour une trace données: embarqués G Compilation pour processeurs I Analyse de la trace: quelles fonctions sont appelées embarqués G Compilation: biblio ensembles G Compilation: Principes généraux I G Quelques exemples 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à). G Exemple 1: génération d’adresse pour DSP I Plusieurs approche existe: G Exemple 2: cas des Registres dédiés Basée sur un graphe d’appel G Exemple 3: gestion du cache d’instruction Basée sur un graphe conflit G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Construction d’un graphe où les Introduction sommets sont des fonctions et les Architecture des processeurs arêtes les fréquences d’appel. Différents types de processeurs I embarqués Deux fonctions souvent appelées

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

Exemple de l’appareil photo numérique

Conclusion

- p. 83/134 Utilisation du graphe des conflits

G Processeurs embarqués I Construction 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 Différents types de processeurs I embarqués Il y a conflit entre A et B si la trace contient le pattern

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

Exemple de l’appareil photo numérique

Conclusion

- p. 84/134 G Processeurs embarqués

Introduction

Architecture des processeurs

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

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I GCC: Gnu C Compiler ou Gun Compiler Collection Introduction I http://gcc.gnu.org/ Architecture des processeurs I Outil développé par la communauté mondiale, Différents types de processeurs embarqués développement rapide. Compilation pour processeurs I embarqués De plus en plus utilisé pour le calcul embarqué car il est G Compilation pour processeurs embarqués reciblable. G Compilation: biblio G Compilation: Principes I Exemple d’utilisation généraux G Quelques exemples N Créer un compilateur pour le Mips sur votre Pentium d’optimisation de compilation pour processeurs embarqués N Insérer une routine d’interruption dans votre programme G Exemple 1: génération d’adresse pour DSP N Répartir les différentes section de votre code dans G Exemple 2: cas des Registres dédiés différentes mémoire. G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués

Introduction

Architecture des processeurs

Différents types de processeurs embarqués

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

Exemple de l’appareil photo numérique

Conclusion

- p. 87/134 Installation pour le Mips

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

Exemple de l’appareil photo numérique

Conclusion

- p. 88/134 Assembleur dans le code C

G Processeurs embarqués I 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 mask level 6.\n" ); G Compilation pour processeurs embarqués __asm__( " andi #0xf8, sr" ); G Compilation: biblio G Compilation: Principes __asm__( " ori #6, sr" ); généraux G Quelques exemples printf( "Interrupt mask level d’optimisation de compilation pour processeurs embarqués is now 6.\n" ); G Exemple 1: génération d’adresse pour DSP } G Exemple 2: cas des Registres dédiés I G Exemple 3: gestion du cache Permet d’écrire des pilotes de périphériques, de contrôler la d’instruction G Quelques manipulation avec gestion des interruptions sans système d’expoitation GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

- p. 89/134 Assembleur dans le code C

G Processeurs embarqués I 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 Différents types de processeurs I embarqués Exemple: utilisation de la fonction fsinx du 68881:

Compilation pour processeurs __asm__("fsinx %1,%0" : "=f" (result) : "f" (angle)); embarqués G Compilation pour processeurs I %0 et %1 représente le résultat et l’opérande de la fonction embarqués G Compilation: biblio qui vont correspondre aux variables result et angle du G Compilation: Principes généraux programme C G Quelques exemples d’optimisation de compilation I pour processeurs embarqués "t" est une directive indiquant à gcc qu’il doit utiliser des G Exemple 1: génération d’adresse pour DSP registres flottants G Exemple 2: cas des Registres dédiés G Exemple 3: gestion du cache d’instruction G Quelques manipulation avec GCC G Un compilateur pour l’embarqué: GCC

Exemple de l’appareil photo numérique

Conclusion

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

G Processeurs embarqués I Le code contient différentes sections. Par exemple avec Introduction GCC Architecture des processeurs N La section .text contient les instructions du programme Différents types de processeurs N .data embarqués La section contient des données statiques etc. I Compilation pour processeurs Le concepteur de logiciel embarqué veut souvent contrôler embarqués G Compilation pour processeurs explicitement la répartition des variables globales dans les embarqués G Compilation: biblio sections (à la compilation): pour distinguer les variables des G Compilation: Principes généraux constantes par exemple. G Quelques exemples d’optimisation de compilation I Il peut vouloir aussi contrôler la répartition des sections dans pour processeurs embarqués G Exemple 1: génération les composants matériels (à l’édition de lien et au d’adresse pour DSP G Exemple 2: cas des Registres chargement du programme) dédiés G Exemple 3: gestion du cache I d’instruction Utilisation de la directive __attibute__ G Quelques manipulation avec GCC const int put_this_in_rom G 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

G Processeurs embarqués I Beaucoup de périphériques dédiés /* code C de gestion de l’interruption */ void isr_C( void ) { Introduction communiquent avec le processeur /* ISR: interupt service routine Architecture des processeurs par des interruptions faire quelque chose en C */ ... Différents types de processeurs N } embarqués Problèmes (adresse mémoire

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

- p. 92/134 Le LD script

G Processeurs embarqués I 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 I C’est là que sont résolus les appels à des fonctions entre Différents types de processeurs embarqués fichier ou à des fonctions de bibliothèque non fournies par

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

Exemple de l’appareil photo numérique

Conclusion

- p. 93/134 Exemple de LD script

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

Exemple de l’appareil photo numérique

Conclusion

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

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

Conclusion

- p. 95/134 G Processeurs embarqués

Introduction

Architecture des processeurs

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

Conclusion

- p. 96/134