Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parDamien Soulie Modifié depuis plus de 10 années
1
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
2
Conclusions perspectives
Plan Introduction Objectifs Problématique SynDEx Minimisation mémoire Applications Conclusions perspectives
3
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
4
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)
5
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
6
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
7
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
8
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
9
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
10
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
11
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
12
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
13
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)
14
Conclusions perspectives
Plan Introduction SynDEx Présentation Caractéristiques Chaîne de développement Minimisation mémoire Applications Conclusions perspectives
15
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
16
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
17
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,
18
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
19
Plan Introduction SynDEx Minimisation mémoire Applications
Objectifs Principes d’allocation Mono-composant Multi-composants Applications Conclusions perspectives
20
Minimisation mémoire : Objectifs
Algorithme Architecture Adéquation Génération de Code Minimisation des allocations de buffers
21
Minimisation mémoire : Principes d’allocation
allocD allocD allocD allocD Une allocation (buffer) allouée pour chaque sortie
22
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
23
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
24
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
25
Conclusions perspectives
Plan Introduction SynDEx Minimisation mémoire Objectifs Principes d’allocation Mono-composant Multi-composants Applications Conclusions perspectives
26
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
27
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
28
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
29
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
30
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
31
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
32
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
33
Minimisation mémoire : Multi-composants
Principe de la réutilisation
34
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
35
Conclusions perspectives
Plan Introduction SynDEx Minimisation mémoire Applications UMTS MPEG-4 LAR Conclusions perspectives
36
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
37
Applications : UMTS (Tx)
init trame par trame trame slot par slot init slot
38
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 Registre Tétris Tétris multi-composant Gain maximum 7
39
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 …
40
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é
41
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é
42
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)
43
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
44
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
45
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
46
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
47
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 Registre Tétris multi-composants Gain maximum 1,6
48
Application : Décodeur MPEG-4 Description gros grain
Haut niveau taille 80*64 haut niveau sans optimisation Tétris gain : 1,07 Niveau intermédiaire taille 80*64 niveau intermédiaire sans optimisation Tétris gain : 11 taille 176*144 niveau intermédiaire sans optimisation Tétris gain : 52 Bas niveau taille 80*64 bas niveau sans optimisation Tétris gain : 10
49
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
50
Application : CODEC LAR
51
Application : CODEC LAR Slice
52
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 optimisation 1 Tétris multi-composants 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 Registre Tétris multi-composants Gain 3,9 3
53
Conclusions perspectives
Plan Introduction SynDEx Minimisation mémoire Applications Conclusions perspectives
54
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
55
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
56
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 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
58
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)
59
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.