Optimisations Mémoire dans la Méthodologie AAA pour Code Embarqué sur Architectures Parallèles RAULET Mickaël 18 mai 2006 Mitsubishi ITE - Equipe Software Radio IETR/INSA - Groupe Image INRIA – Groupe AOSTE
Conclusions perspectives Plan Introduction Objectifs Problématique SynDEx Minimisation mémoire Applications Conclusions perspectives
Introduction : Objectifs Développement d’une méthodologie de prototypage rapide pour architectures complexes Diminution du temps de développement pour le portage sur une cible multi-composants (PC, DSP et/ou FPGA) Développement d’applications dans le domaine de l’embarqué (téléphonie mobile, décodeurs de salons) Réalisation de démonstrateurs
Introduction : Problématique Prototypage rapide d’applications de traitement du signal et images pour systèmes embarqués temps réel sur architectures distribuées hétérogènes Méthodologies pour passer rapidement (automatiquement) d’une description de haut niveau de l’application à une implantation exécutable Méthodologie AAA (Adéquation Algorithme Architecture)
Introduction : Problématique Prototypage rapide d’applications de traitement du signal et images pour systèmes embarqués temps réel sur architectures distribuées hétérogènes Applications fortement orientées données
Introduction : Problématique Prototypage rapide d’applications de traitement du signal et images pour systèmes embarqués temps réel sur architectures distribuées hétérogènes Minimisation des ressources et exécution “suffisamment” rapide
Introduction : Problématique Prototypage rapide d’applications de traitement du signal et images pour systèmes embarqués temps réel sur architectures distribuées hétérogènes Distribution/ordonnancement des traitements
Introduction : Problématique Prototypage rapide d’applications de traitement du signal et images pour systèmes embarqués temps réel sur architectures distribuées hétérogènes Mise en oeuvre conjointe de composants cible variés Travaux essentiellement sur cibles multi-composants
Introduction : Problématique Systèmes multi-composants Systèmes embarqués Limitation mémoire Traitement du signal, télécommunications et vidéo Consommation mémoire importante Nécessité d’une optimisation mémoire Nécessité d’une méthodologie adaptée
SynDEx : Synchronized Distributed Executives SynDEx : Présentation SynDEx : Synchronized Distributed Executives Logiciel de CAO niveau système pour applications distribuées temps réel et embarquées INRIA Rocquencourt projet AOSTE (Y. Sorel) Fonctionnalités Partitionnement/ordonnancement automatiques d’une application sur une architecture cible Algorithme glouton basée sur une minimisation de la latence (optimisation orientée vitesse) Génération d’un exécutif distribué indépendant de la cible
SynDEx : Caractéristiques Approche globale Modèle unifié de graphes Algorithme : parallélisme potentiel Architecture : parallélisme disponible Implantations : transformations de graphes Adéquation Choix d’une implantation optimisée But Génération automatique d’exécutifs taillés sur mesure aux applications, basés sur un ordonnancement hors-ligne des calculs et des communications
SynDEx : Caractéristiques Graphe Temporel root FIFOs DSP1 Graphe d’Architecture Graphe d’ Algorithme Adéquation Opéra-tions Opéra-tions - Niveaux hiérarchiques - Conditionnement - Répétition www.syndex.org
SynDEx : Caractéristiques Exécutif supporte : l’exécution de l’algorithme sur l’architecture l’ordonnancement, les communications et les synchronisations Taillé sur mesure : Minimisation du surcoût spatial et temporel Implantation optimisée (latence) Sans inter-blocage, garantie ordre total du graphe d’algorithme Basé sur macro-code Indépendant du processeur Supportant des architectures hétérogènes, portabilité Basé sur des bibliothèques génériques dépendantes des processeurs (DSP, PC, FPGA…) des communicateurs (SAM=FIFO, RAM)
Conclusions perspectives Plan Introduction SynDEx Présentation Caractéristiques Chaîne de développement Minimisation mémoire Applications Conclusions perspectives
SynDEx : Chaîne de développement Prototypage rapide et domaine d’applications Adéquation Algorithme Architecture Télécommunication UMTS MC-CDMA Vidéo LAR MPEG4 Plate-formes Sundance Pentek Composant DSP FPGA Exécutifs Génériques Bibliothèques Exécutifs Spécifiques
SynDEx : Chaîne de développement Exemple de topologie : Sundance FPGA1 (Virtex) SDBa SDBb CP0 CP1 CP2 CP3 PALtoYUV (BT829) VID_IN DSP2 (TMS320C6416) PCI YUVtoPAL (BT864a) VID_OUT DSP3 (TMS320C6414) PC (Pentium) PCI (BUS_PCI ) Bus_6 (CP) Bus_3 (SDB) IN (VID_IN) OUT (VID_OUT) Bus_1 (SDB) Embedded Motherboard: SMT320 SMT361 SMT319 SMT358 Personal Computer Module DSP Module FPGA Framegrabber Plusieurs types de processeurs et de communicateurs
SynDEx : Chaîne de développement Arborescence des bibliothèques Génération de code Dépendant de Dépendant de Générique l’architecture l’application SynDEx.m4x ApplicationName.m4x Dépendant du Dépendant du Type de processeur Type de media C62x.m4x C64x.m4x Pentium.m4x Fpga.m4x SDB.m4x ( C 6 2x , C64x , Fpga ) CP.m4x 62x BUS_PCI_RAM.m4x ( Pentium , C62x BUS_PCI_SAM.m4x ( TCP.m4x ( Bifo.m4x (C62x, Fpga Bifo_DMA.m4x (C62x,
SynDEx : Chaîne de développement Développements de nombreuses bibliothèques Vérification fonctionnelle Ajout de fonction d’affichage de l’image directement sous SynDEx Display générique Webcam Vérification et exploration architecturale TCP facilitant la vérification fonctionnelle de l’application séparation de codeur-décodeur possibilité de décrire des architectures complexes (multi-PC) plateformes de test et de vérification
Plan Introduction SynDEx Minimisation mémoire Applications Objectifs Principes d’allocation Mono-composant Multi-composants Applications Conclusions perspectives
Minimisation mémoire : Objectifs Algorithme Architecture Adéquation Génération de Code Minimisation des allocations de buffers
Minimisation mémoire : Principes d’allocation allocD allocD allocD allocD Une allocation (buffer) allouée pour chaque sortie
Minimisation mémoire : Mono-composant Ram D/P ESPACE MEMOIRE RAM données données communiquées locales programmes opr1 o1 all.D_o1o2 all.D_o2o3 all.D_o3o4 all.Po1 all.Po2 all.Po4 all.Po3 all.Dlo1 all.Dl2 all.Dlo4 all.Dlo3 all.Po1 all.Po2 all.Po4 all.Po3 all.Dlo1 all.Dlo2 all.Dlo4 all.Dlo3 o2 o3 all.D_o3o4 o4
Minimisation mémoire : Mono-composant Coloriage de graphe Approche classique minimisation des buffers (« registre ») Tf Td Durée d ’allocation du registre Légende a c b d e f Graphe d’intervalles Tri par ordre croissant des dates de début b a c e d f Graphe d ’intervalles 3 couleurs = 3 buffers Méthode gloutonne Minimum de couleur Buffers de même type et de même taille
Minimisation mémoire : Mono-composant Autre Méthode mono-composant Minimisation « tétris » Basée également sur la durée de vie des buffers Basée uniquement sur des buffers de même type Minimum 6 couleurs = 6 registres
Conclusions perspectives Plan Introduction SynDEx Minimisation mémoire Objectifs Principes d’allocation Mono-composant Multi-composants Applications Conclusions perspectives
Minimisation mémoire : Multi-composants Considération des buffers communiqués inter-processeurs Diminution accrue de l’espace mémoire Durée de vie des buffers communiqués liée au modèle de synchronisation de SynDEx
Minimisation mémoire : Multi-composants Distribution/ordonnancement processeur1 processeur2 Opr1 RAM D/P Com1a SAM Com2a RAM D/P Opr2 allocP allocDl allocD in out calc1 calc2 send receive in calc1 out calc2
Minimisation mémoire : Multi-composants processeur1 processeur2 Opr1 RAM D/P Comr1a SAM Comr2a RAM D/P Opr2 in_ini in_end out_ini out_end loop endloop all.Pin all.Dlin all.Pcalc all.Dlcalc all.Pout all.Dlout in all.Din/calc all.Dcalc/out send receive calc out
Minimisation mémoire : Multi-composants Schéma de principe dans SynDEx processeur1 in send Pre-E Pre-F Suc-E Suc-F Opr1 RAM D/P Comr1a loop loop Durée de vie du buffer sur un cycle Suc-E Pre-E s_empty in in send Pre-E Pre-F Suc-E Suc-F s_full Pre-F Suc-F Pas de réutilisation possible des buffers communiqués inter-processeurs send endloop endloop
Minimisation mémoire : Multi-composants processeur1 in1 send loop endloop Calcul Opr1 RAM D/P Comr1a loop loop Durée de vie du buffer minimale Pre-F Suc-F Suc-E Pre-E s_empty in1 s_full Pre-F Suc-F Pre-E Suc-E send Calcul Communications bloquantes Modèle SynDEx endloop endloop
Minimisation mémoire : Multi-composants processeur1 in1 send loop endloop Calcul2 Calcul1 Opr1 RAM D/P Comr1a loop loop Pre-F Suc-F Suc-E Pre-E s_empty Durée de vie du buffer = adéquation in1 s_full Pre-F Suc-F Pre-E Suc-E send Calcul Communications comme sur le graphe temporel endloop endloop
Minimisation mémoire : Multi-composants Solution : Modifications du modèle SynDEx Sans changement de l’ordre total Avec prise en compte des temps de communications Sans changement de la latence Optimisations de la mémoire avec un gain important
Minimisation mémoire : Multi-composants Principe de la réutilisation
Minimisation mémoire : Conclusion Minimisation mémoire mono-composant efficace Minimisation « registre » Minimisation « tétris » Minimisation mémoire multi-composants Prise en compte des buffers communiqués inter-processeurs Optimisation supplémentaire de la génération de code Opérations implicites générant des « recopies » de buffers à buffers : Explode – implode Conditionnement Retard ou mémoire
Conclusions perspectives Plan Introduction SynDEx Minimisation mémoire Applications UMTS MPEG-4 LAR Conclusions perspectives
Applications : UMTS FDD Troisième génération de téléphone portable Caractéristiques Débits maximum 2 Mbits/sec Temps réel 10ms par trame 1 trame = 15 slots
Applications : UMTS (Tx) init trame par trame trame slot par slot init slot
Applications : UMTS Minimisation UMTS Portage sur un C6203 à 512 ko de RAM Automatique Mieux que manuellement Gain de 7 Très proche d’un gain attendu de 7.5 Minimisation de toutes les recopies Diminution du temps Modulation Démodulation SynDEx 1 435 348 2 185 612 Registre 792 460 920 596 Tétris 727 128 808 140 Tétris multi-composant 274 220 376 284 Gain maximum 7
Norme composée de sous-parties Norme complexe (boîte à outils) Applications : MPEG-4 Successeur de MPEG-2 Norme composée de sous-parties Partie 2 = Vidéo Norme complexe (boîte à outils) Scène composée d’objets Images de synthèse Images naturelles …
Application : Décodeur MPEG-4 Décodeur images I (Intra) existant : Description bas niveau Granularité fine 3 niveaux d’abstraction de description Niveau image haut niveau Image I, P et B Niveau macrobloc niveau intermédiaire 16 * 16 pixels Niveau bloc bas niveau 6 blocs dans un macrobloc 4 blocs de luminance 2 blocs de chrominance granularité
Application : Décodeur MPEG-4 Description gros grain Description niveau Image Images I Images P Images B Base des descriptions plus détaillées Description niveau intermédiaire Description bas niveau Séquence Vidéo Image B Image I Affichage Image Image P granularité
Application : Décodeur MPEG-4 Description gros grain Récupération de l’image dans le flux affichage Choix du type de décodage d’image Vop_coding_type = 0 Vop_coding_type = 1 Vop_coding_type = 4 Image I Image B Image P Mémorisation image Mémorisation pour images P (compensation de mvt)
Application : Décodeur MPEG-4 Description gros grain Description de haut niveau Gros grain Résultats sur DSP (C6416 à 400 MHz) Extension de ces résultats sur DSP à 1GHz Temps moyen avec communications QCIF : 5 ms CIF : 12 ms 640*480 : 30 ms - multi-DSP pas intéressant objectif : temps réel pour de grandes tailles d’images si temps réel à 400 Mhz, 1GHz OK
Application : Décodeur MPEG-4 Description grain fin Décodeur bas niveau grain fin Granularité du décodeur : VLC inverse (VLC = codage à longueur variable) Scan inverse (scan = balayage) DCT inverse (DCT = transformée discrète en cosinus) … Possibilité de parallélisme Basée sur Description haut niveau Description images I bas niveau Description à l’intérieur d’un bloc
Application : Décodeur MPEG-4 Description grain fin Schéma hiérachiques : Séquence Vidéo Image P Image I Description haut niveau Macrobloc I MB INTRA I VLC inverse MB Blocs Luminance I Bloc Cb I Bloc Cr I X1 I X2 I X3 I X4 I XCb I XCr I Description Images I bas niveau Macrobloc P MB non codé Blocs Luminance non codés Bloc Cb Non codé Bloc Cr MB Codé MB INTER MB INTERQ MB INTER4V Interpolation MB P Bloc Cb P Bloc Cr P X1P X2 P X3 P X4 P XCb P XCr P cbp Xn = 0 cbp Xn = 1 MB INTRA P MB INTRAQ P Description Images P bas niveau Niveau macrobloc Niveau bloc MB et bloc et complexité hiérarchie et conditionnement Description à l’intérieur d’un bloc
Application : Décodeur MPEG-4 Description grain fin Complexité SynDEx du décodeur bas niveau Nombre d’opérations proportionnel au nombre de macroblocs taille de la vidéo(1) nombre d'opérations 1 MB 493 5 MB 2 385 10 MB 4 720 20 MB 9 390 50 MB 23 400 99 MB 32 273 (1) en nombre de macroblocs MB Temps pour générer l’exécutif (QCIF > 12 h !) Longueur de l’exécutif Nombre d’opérations DSP : > 5 MB pas ok Description intermédiaire niveau macrobloc
Application : Décodeur MPEG-4 Description gros grain Décodeur MPEG-4 sur 2 processeurs : description de haut niveau (352*288) Gain de 54 recopies Minimisation mémoire : Gain de 1,6 (Granularité de l’application trop forte) Decodeur MPEG4 processeur 1 processeur 2 SynDEx 253 452 3 323 292 Registre 3 020 000 Tétris multi-composants 152 076 2 030 000 Gain maximum 1,6
Application : Décodeur MPEG-4 Description gros grain Haut niveau taille 80*64 haut niveau sans optimisation Tétris 436 316 409 392 gain : 1,07 Niveau intermédiaire taille 80*64 niveau intermédiaire sans optimisation Tétris 3 350 224 291 416 gain : 11 taille 176*144 niveau intermédiaire sans optimisation Tétris 40 480 416 780 276 gain : 52 Bas niveau taille 80*64 bas niveau sans optimisation Tétris 7 876 428 768 012 gain : 10
Méthode développé au sein du laboratoire Image Méthode basée contenu Applications : LAR Méthode développé au sein du laboratoire Image Méthode basée contenu Méthode hiérarchique Images fixes Fort taux de compression
Application : CODEC LAR
Application : CODEC LAR Slice
Application : CODEC LAR Codec LAR sur 2 Processeurs Div_pic = 1 117 opérations 352*288 CODEC LAR processeur 1 processeur 2 SynDEx sans optimisation 2 514 000 1 926 000 optimisation 1 1 788 000 1 686 000 Tétris multi-composants 931 000 874 000 Gain 3 2,1 Codec LAR sur 2 processeurs Div_pic = 2 239 opérations 352*288 CODEC LAR processeur 1 processeur 2 SynDEx sans optimisation 2 980 000 2 342 000 Registre 1 959 000 1 759 000 Tétris multi-composants 777 000 785 000 Gain 3,9 3
Conclusions perspectives Plan Introduction SynDEx Minimisation mémoire Applications Conclusions perspectives
Conclusions perspectives : Optimisation mémoire Génération de code automatique embarquée Post-traitement mémoire efficace Codage dans l’outil SynDEx Temps de minimisation efficace pour trouver la solution Perspectives Mise en place de la cache Travaux de F. Urban Mise en place des algorithmes génétiques Minimisation multi-critères
Conclusions perspectives : Optimisation mémoire Algorithme Architecture Adéquation Mise en place d’une heuristique multi-critère : Algorithme Génétique Génération de Code
Conclusions perspectives : Applications Diversité des applications Complexité des applications Niveau de granularité différent Perspectives Intégration d’un décodeur MPEG4-AVC dans un terminal (projet Mobim@ge) Extension du LAR (LAR vidéo) Extension de la méthodologie AAA pour des systèmes multi-couches (G. Roquier) Alliant vidéo et télécommunications
Application : Décodeur MPEG-4 Minimisation mémoire Utiliser intelligemment les mémoires suivant l’application Traitement sur des données en mémoire interne : Plus rapide qu’avec des données en mémoire externe Pour le décodeur MPEG-4 : Objectif : placement mémoire optimal sur les DSP Buffers touchant au flux mémoire interne Buffers image mémoire externe : temps de décodage LOAD, STORE faire des calcul avec l’alu du CPU en mémoire externe très lent Décodeur -> 370 Ko donnée mémoire interne < 1Mo Utilisation du QDMA (accélération des transferts mémoires)
Application : Décodeur MPEG-4 Minimisation mémoire Utilisation du QDMA pour le décodeur : Transferts mémoires externe-interne et externe-externe Mémorisation de l’image, recopie dans les buffers de sortie de l’image Isolement d’un macrobloc dans une image Stockage d’un bloc dans l’image Transfert du bloc 8x8 de l’image dans le bloc Bloc 8x8 Image Image Bloc 8x8 Transfert du bloc 8x8 dans l’image Mémoire Interne-interne memcpy() 3x plus rapide Rapatriement données en mémoire interne pour l’interpolation