Méthodes et outils pour l implantation d algorithmes temps réel sur architecture multi-dsp

Documents pareils
Thème 3 Conception et vérification d architectures de systèmes sur puce

ADÉQUATION ALGORITHME-ARCHITECTURE APPLIQUÉE AUX CIRCUITS RECONFIGURABLES

MAC-TC: programmation d un plate forme DSP-FPGA

Techniques d ordonnancement pour les SoC

Une méthode de conception de systèmes sur puce

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Architecture des ordinateurs

Masses de données. 1. Introduction 2. Problématiques 3. Socle de formation (non présenté) 4. Liens avec Formation INSA

Introduction à la Programmation Parallèle: MPI

Sanity Check. bgcolor mgcolor fgcolor

IRL : Simulation distribuée pour les systèmes embarqués

2015 // des formations. programme. Retrouvez toutes ces informations sur enseirb-matmeca.bordeaux-inp.fr

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Vers du matériel libre

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test


Cours 1 : Qu est-ce que la programmation?

Introduction au langage C

Parallélisme et Répartition

Conception des systèmes répartis

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Conception et Intégration de Systèmes Critiques

1 Mesure de la performance d un système temps réel : la gigue

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Programme de la 1ère année

UE C avancé cours 1: introduction et révisions

Exécutif temps réel Pierre-Yves Duval (cppm)

Temps Réel. Jérôme Pouiller Septembre 2011

UE Programmation Impérative Licence 2ème Année

Simulation de graphes de tâches

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Séminaire RGE REIMS 17 février 2011

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

QUESTION 1 {2 points}

Resolution limit in community detection

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

WEA Un Gérant d'objets Persistants pour des environnements distribués

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Une bibliothèque de templates pour CUDA

Introduction au temps réel

Qualité du logiciel: Méthodes de test

Algorithmique I. Algorithmique I p.1/??

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Initiation. àl algorithmique et à la programmation. en C

Programmation C. Apprendre à développer des programmes simples dans le langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les diagrammes de modélisation

Introduction à la programmation concurrente

Introduction aux systèmes temps réel

Université Libre de Tunis

Le Collège de France crée une chaire pérenne d Informatique, Algorithmes, machines et langages, et nomme le Pr Gérard BERRY titulaire

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Problèmes liés à la concurrence

Optimisation for Cloud Computing and Big Data

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Modélisation multi-agents - Agents réactifs

Apprentissage Automatique

Coopération de modèles de temps

Vérification formelle de la plate-forme Java Card

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Lier Erlang avec d autres langages de programmation

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Exercices INF5171 : série #3 (Automne 2012)

Cours de Génie Logiciel

Implémentation Matérielle des Services d un RTOS sur Circuit Reconfigurable

as Architecture des Systèmes d Information

ACTIVITÉ DE PROGRAMMATION

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Master (filière Réseau) Parcours Recherche: Systèmes Informatiques et Réseaux (RTS)

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Génération de code binaire pour application multimedia : une approche au vol

INGENIERIE DES SYSTEMES INFORMATIQUES - PARCOURS : MOBILITE ET CLOUD COMPUTING

Analyse de sécurité de logiciels système par typage statique

1 Description générale de VISFIELD

GPA770 Microélectronique appliquée Exercices série A

Mémoire de Fin d Etudes

Cours de Master Recherche

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Conception de circuits numériques et architecture des ordinateurs

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programme détaillé BTS INFORMATIQUE DE GESTION DIPLÔME D ETAT. Objectifs de la formation. Les métiers. Durée de la formation

Informatique Générale

Organigramme / Algorigramme Dossier élève 1 SI

Rappels Entrées -Sorties

Quatrième partie IV. Test. Test 15 février / 71

JF SMA'14. A3 - Agent Anytime Anywhere. une plateforme à agents distribués Oct l'expertise middleware.

TP : Gestion d une image au format PGM

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Parcours en deuxième année

Bases de programmation. Cours 5. Structurer les données

Transcription:

Méthodes et outils pour l implantation d algorithmes temps réel sur architecture multi-dsp Thierry Grandpierre (t.grandpierre@esiee.fr) Collaboration ESIEE/INRIA

Plan Contexte & objectifs Modélisation Architecture Algorithme Implantation Optimisation de l'implantation Génération automatique d exécutif Conclusion & perspectives

Contexte Applications : automobile, robotique mobile, télécom, traitement d'images... Algorithmes : contrôle-commande, TSI Réactif : stimulus - opération - réaction Temps Réel : Temps de réaction borné : latence Période des stimuli bornée : cadence Distribué : puissance calcul, modularité, Embarqué : minimisation des ressources

Objectifs Sécurité de conception : sémantique langages synchrones + conservation des propriétés lors de l'implantation Optimisation : latence=cadence, taille archi. Prototypage rapide : réduction du cycle de développement Génération de code de série Méthodologie

INRIA : Méthodologie Adéquation Algorithme Architecture Approche globale Modèle unifié de graphes Algorithme : parallélisme potentiel Architecture : parallélisme disponible Implantation : transformations de graphes Adéquation : choix d implantation optimisée Génération automatique d'exécutifs taillés sur mesure, basés sur ordonnancement hors-ligne des calculs et des communications

Méthodologie AAA et logiciel SynDEx Algorithme graphe de dépendances Utilisateur Contraintes Adéquation Distribution/Ordonnancement Heuristiques Architecture graphe multiprocesseurs hétérogène Prédiction Performances Génération automatique d'exécutif temps réel Synchronized Distributed Executive www.syndex.org

Méthodologie AAA : logiciel SynDEx www.syndex.org

Modèle d'architecture : graphe orienté Sommets (FSM) : Opérateur : exécution séquentielle opns de calcul Communicateur : exéc. séquentielle opns comm. Mémoire avec ou sans arbitre, RAM ou SAM Bus/mux/démux avec ou sans arbitre : Bus/mux/démux : sélect. une mémoire parmi plusieurs Bus/mux/démux/arbitre : arbitre accès à mém. partagée Arcs orientés : transferts de données

Exemple de graphe d'architecture processeur1 Opr1 processeur2 Opr2 processeur3 Opr3 RAM D/P Com1b SAM Com2b RAM D/P RAM D RAM D/P Com1a Com2a Com3a Comm. Passage msg SAM RAM D Comm. mem. partagée RAM D/P processeur4 Opr4

Architecture : capture d'écran SynDEx v6.6.2

Modèle d'algorithme : hyper-graphe orienté Sommet : opération conditionnée ou non Hyper-arc orienté : dépendance de données (ordre partiel d'exéc.) ou dép.de conditionnement Répétition infinie d'un sous-graphe (réactif) Répétition finie d'un sous-graphe (boucle) Factorisation = Graphe flot de données conditionné Issu des Langages Synchrones (via DC), de Scicos, AVS, CamlFlow

Exemple d'algorithme : égaliseur adaptatif filtre adap retard gensig adap coeff filtre sub visu Itération n Filtrea Filtrea Filtrea gensig adap gensig adap gensig adap filtre sub filtre sub filtre sub coeff coeff coeff visu visu visu

Algorithme : capture d'écran SynDEx v6.6.2

Algorithme avec conditionnement : capture d'écran SynDEx v6.6.2 Sous-graphe pour Entrée x = 1 Sous-graphe pour Entrée x = 2 Sous-graphe pour Entrée x = 4

Modèle d'implantation Toutes les implantations possibles décrites par la composition de 3 relations binaires : rout o distrib o ordon (Gal, Gar) (Gal, Gar) Routage : calcul de toutes les routes Distribution : allocation spatiale : Partition des opérations en fonction des opérateurs Partition des arcs inter-partition en fonction des routes Création et allocation : opns de comm., alloc./mém. Ordonnancement : allocation temporelle Partition d'opérations : ordre partiel ordre total

Distribution / Ordonnancement in processeur1 processeur2 RAM RAM Opr1 Com1a Com2a Opr2 D/P SAM D/P calc1 calc2 allocp allocdl allocp allocdl allocd allocd allocd allocd allocp allocdl in send send allocd calc1 calc2 allocd receive receive out allocd allocd allocp allocdl out

Optimisation latence / ressources Adéquation : implantation optimisée = choix d'implantation hors ligne qui minimise latence C est un problème NP-complet : heuristiques Lentes itératives : voisinage local, global Rapides (prototypage) : gloutonne Fonction coût pression d ordonnancement Ordonnancement : sans préemption Meta heuristique pour minimiser les ressources

Optimisation mémoire opr1 o1 o2 o3 o4 Ram D/P all.po1 all.dlo1 all.d_o1o2 all.po2 all.dlo2 all.d_o2o3 all.po3 all.dlo3 all.d_o3o4 all.po4 all.dlo4 Comr1a ESPACE MEMOIRE RAM données données communiquées locales programmes alias.d_o3o4 all.d_o1o2 all.d_o2o3 all.d_o3o4 all.dlo1 all.dl2 all.dlo3 all.dlo4 all.po4 all.po3 all.po2 all.po1

Implantation optimisée : capture d'écran SynDEx v6.6.2

Génération d'exécutifs Exécutif : supporte exéc. de l'algo. sur l'archi.= séquencement, gestion mém., comm., synchro. Taillé sur mesure : Minimise surcoût spatial et temporel Implant. conforme aux optimisations(com., mém.) Sans inter-blocage, garantie ordre partiel graphe algo. Basé sur macro-code Indépendant du processeur, portabilité Basé sur des bibliothèques génériques dépendantes des processeurs (pas de RTOS)

Génération de macro code processeur1 Opr1 in_ini loop Suc-E in Pre-F endloop in_end RAM D/P s_empty s_full in/calc Comr1a loop Suc-F send Pre-E endloop processor_( opr1, type opr1) semaphores_(s_empty, s_full) alloc_(type_in/calc, in/calc..) thread_(comr1a) pre0 (s_empty) loop_ sucf(s_full) send(in/calc) pree(s_empty) endloop_ endthread_ main_ in_ini ini( ( ) spawn_thread(com1ra) loop_ suce(s_empty) in(in/calc) pref(s_full) endloop_ in_end ( ) endmain_ endprocessor_

Compilation du macro code processor_( opr1,.) semaphores_(s_empty ) alloc_(type_in/calc...) thread_(comr1a) pre0 (s_empty) loop_ sucf(s_full) send(in/calc) pree(s_empty) endloop_ endthread_ main_ in_ini ini( ( ) spawn_thread(com1ra) loop_ suce(s_empty) in(in/calc) pref(s_full) endloop_ in_end ( ) endmain_ endprocessor_ BIBLIOTHEQUE GENERIQUE D'EXECUTIF indépendante de l architecture (syndex.m4x) MACRO PROCESSEUR BIBLIOTHEQUE de macros spécifiques à l application (nomappli.m4x) src BIBLIOTHEQUE GENERIQUE D EXECUTIF spécifique à l architecture (Unix.m4x,Tcp.m4x Can.m4x, C6x.m4x) COMPILATEUR BIBLIO. de fonctions spécifiques à l application (fonctions.c ou.o) Executable1 Executable2

Génération d'exécutif : capture d'écran SynDEx v6.6.2

Génération d'exécutif include(syndex.m4x)dnl processor_(u,root, ega2u,syndex v5, 2001) Allocation mémoire Sequence de communication semaphores_( sub_o_empty_l0_root, sub_o_full_l0_root, filt_o_empty_l0, filt_o_full_l0, gensig_o_empty_l0_p, gensig_o_full_l0_p, ) alloc_(float,sub_o) alloc_(float,gensig_o) alloc_(float,wind_o, 9) alloc_(float,coef1_a, 9) alloc_(float,filt_o) thread_(tcp,l0, root, p) loaddnto_(, p) Pre0_(gensig_o_empty_L0_p) Pre0_(filt_o_empty_L0) loop_ Suc1_(gensig_o_full_L0_p) send_(gensig_o, U,root,p) Pre0_(gensig_o_empty_L0_p) Suc1_(filt_o_full_L0) send_(filt_o, U,root,p) Pre0_(filt_o_empty_L0) Suc1_(sub_o_empty_L0_root) recv_(sub_o, U,p,root) Pre0_(sub_o_full_L0_root) endloop_ endthread_ 1/2 synchro Emission reception synchro Sequence de calcul main_ spawn_thread_(l0) gensig() wind(wind_o) coef1(coef1_a) visu() Pre1_(sub_o_empty_L0_root) loop_ Suc0_(gensig_o_empty_L0_p) Opérations gensig(gensig_o) «gensig» Pre1_(gensig_o_full_L0_p) shift_(wind_o, gensig_o) Opérations Suc0_(filt_o_empty_L0) «gdotprod gdotprod(coef1_a, wind_o, filt_o)» Pre1_(filt_o_full_L0) Suc0_(sub_o_full_L0_root) visu(sub_o) Pre1_(sub_o_empty_L0_root) endloop_ visu() wind(wind_o) gensig() wait_endthread_(l0) endmain_ endprocessor_ 2/2

Association macro <==> fnct C # Fonction Reduction nomappli.m4x Hauteur (int) Largeur (int) divert void reduction(int height, unsigned char *im, int width, unsigned short *imreduc); divert(-1) def (`reduction',`ifelse(mgc,loop, `proto_(int?$1, uchar[65536]?$3, int?$2, ushort[16384]!$4) Ccall_(void, `reduction', int $1, uchar *$3, int $2, ushort *$4)')') reduction(cst_h, cst_l, capt_o, reduc1_o) Opération «Reduc1» (macro : reduction ) Image (uchar) Image (ushort) (Ccall et proto : définition dans syndex.m4x et c.m4x) void reduction(int height, unsigned char *im, int width, unsigned short *imreduc) { int i, j, k; for (j = 0;j < height; j++) { for (i = 0;i < width; i++) { k=(j >> 1)*(width >> 1)+(i >> 1); imreduc[k] += im[j*width+i]; } } } fonctions.c

Conclusion Extension de AAA aux circuits reconfigurables : thèses ESIEE : A. Dias (achevée), L. Kaouane (en cours) Développement à l'esiee de la version SynDEx-IC (disponible à la rentrée) Extension aux architectures mixtes FPGA- DSP : Co-design, SoC (Excalibur, Virtex Pro II..) Prochaine thèse ESIEE en septembre

Conclusion Architectures programmables (proc., DSP, µcontlr.) Algorithmes (Graphe flot de données) Architectures reconfigurables Mono composant multi composants Adéquation (heuristiques pour programmable) Adéquation (heuristiques mono-circuit) Adéquation (heuristiques multi-circuits) INRIA Génération d exécutifs distribués ESIEE Génération VHDL synthétisable (thèse L. Kaouane)

Perspectives Algorithmes (Graphe flot de données) Composants programmables Architectures MIXTES Composants reconfigurables (modèle unique) Adéquation mixte (heuristiques pour programmable) (heuristiques pour multi-circuits) (unification des modèles d implantation et des fonctions de coût pour l optimisation) Génération d exécutifs distribués communications Génération VHDL synthétisable