Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru.

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Spécification et qualité du logiciel
Introduction à l’Algorithmique
Test Intégré pour Convertisseurs Analogique/Numérique
Test de logiciels synchrones avec la PLC
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Langages objet Définitions Traduction des méthodes en C++
UML - Présentation.
Objectif de l’exposé.
Introduction : Compilation et Traduction
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Introduction : Compilation et Traduction
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Parallélisme Synchrone
Algèbre de Boole et les Boucles
Analyse lexicale Généralités Expressions rationnelles Automates finis
La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.
Algorithmique et Programmation
[photo d'un système] Schéma ordonnancement XML Évaluation Code C Modélisation Solution GÉNÉRATEUR AUTOMATIQUE DE CODE pour OUTIL DE MODÉLISATION-IMPLANTATION.
Sections sélectionnées du Chapitre 11
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Module 51 Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches) Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches)
Présentation Structures de Données et TDA
Présentation du mémoire
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 8 Structure de contrôle.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
CSI 1502 Principes fondamentaux de conception de logiciels
Instructions de contrôle
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
P. Van Roy, LINF LINF1251: Sémantique Formelle Peter Van Roy Département d’Ingénierie Informatique, UCL
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Qu’est-ce qu’un système d’exploitation ?
IA IPR Académie de Rennes L’algorithmique une nouveauté ? Regard sur les programmes et les ressources ; quelques pistes.
Informatique 1. Les applications de l’informatique
Équations Logiques État Physique État Électrique État Logique L
Paradigmes des Langages de Programmation
Programmation Système et Réseau (sous Linux)
Algorithmes Parallèles et Systèmes Réparties
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Packages et Types De la Spécification Formelle A l'implémentation Ada.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
Programmation dynamique
INTRODUCTION.
Advanced Boolean Equation Language
GESTION ET TRAITEMENT DES ERREURS
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Créer des packages.
Optimisation de requêtes
Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Concepts intermédiaires de VHDL
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
« Validation Formelle de Systèmes Interactifs »
Initiation à la conception des systèmes d'informations
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Introduction et Généralités sur l’Algorithmique
2.4 Le langage SFC - Un langage de description de systèmes séquentiels
Optimisation pour la Conception de Systèmes Embarqués
Esterel et SCADE, de la recherche à l’industrie 3. Urgences scientifiques posées par l’industrie Gérard Berry Collège de France Chaire Algorithmes, machines.
Esterel de A à Z 5. Boucles et réincarnation en Esterel
Transcription de la présentation:

Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru

Sommaire Généralités Le simulateur Esterel v3 et le format LC L’approche CNET Le compilateur Synopsis Une nouvelle approche (la mienne)

Historique 1984 – L. Cosserat, first SOS rules, simulateur v – G. Gonthier, better SOS rules, state encoding, simulateur v3, format LC 1991 – G. Berry, compilation en circuits 1995 – sémantique constructive 1999 – Le compilateur Synopsys – méthodes classiques de compilation (S. Edwards) 1999 – Le compilateur CNET – simplification statique de la sémantique v3 (V. Bertin, E. Closse, D. Weil, etc.) 2002 – J. Potop – combinaison de techniques en circuits et de méthodes classiques de compilation

Généralités Langages séquentiels traditionnels(e.g. C) –flot d’exécution, compteur de programme Parallélisme et synchronisation –plusieurs threads d’exécution –points d’attente, ordonnancement Synchronie –réaction à l’absence (décision de déblocage par analyse du code pas encore exécuté)

Généralités Parallélisme et synchronisation –ordonnancement dynamique statique –notion de programme acyclique –limite la classe de programmes corrects Synchronie –comment décider l’absence d’un signal? dynamiquement – fonctions de potentiel appelées a l’exécution statiquement – acyclicité => pas besoin de fonctions de potentiel

Généralités Sémantique d’Esterel: –règles SOS –fonctions de potentiel pour déterminer l’absence d’un signal Versions: –v3 – fonctions de potentiel simples –v5 – sémantique naturelle en circuits, propagation d’informations dans du code pas encore exécuté

Solutions implémentées Simulateur Esterel v3: –ordonnancement dynamique, avec files –fonctions de potentiel Nouvelles approches: –ordonnancement statique code acyclique réincarnation –pas de calculs dynamiques de potentiels

Le simulateur Esterel v3 Ordonnancement dynamique utilisant 2 files: –file de threads bloqués attendent la stabilisation d’un signal –file de threads non-bloqués qui attendent d’être exécutés –quand la file d’exécution est vide on appelle des fonctions de potentiel qui débloquent des threads.

Le simulateur Esterel v3 Format intermédiaire pour accélérer la simulation: IC/LC IC=intermediate code LC=fully linked IC

Le format IC – syntaxe Elements de structure: –les points d’arrêt –la hiérarchisation des points d’arrêt (arbre de reconstruction) Le graphe de flot de contrôle, greffé sur l’arbre de reconstruction

Le format IC – exemple 1 RETURN WATCH DOG PAUSE start S TF 0: Return: 0 1: Pause: (2) 1 2: Emit: [1] (3) 3: Pause: (0) 2 4: Watchdog: {5} 5: Present: [0] (0,4) module ex: input S ; output O ; abort pause ; emit O ; pause when S ; end module O

Le format IC – exemple 2 module ex2: output O1,O2,O3 ; signal S in emit O1 ; present S then emit O2 end pause ; || emit S ; pause end signal ; emit O3 end module RETURN PAUSE start PARALLEL FORK S FT O1 S O2 O3

Le format IC – exemple 3 PAUSE start module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module PARALLEL FORK O RETURN T

Le format IC – exemple 4 RETURN PAUSE start module ex4: output O ; loop signal S in present S then emit O end ; pause ; emit S end signal end loop end module S FT S O reset S

Le compilateur CNET Identifie les points d’attente ou des threads peuvent être bloqués (instructions pause et tests). Ordonne statiquement les points d’attente Exécution = parcours de la liste des points d’attente Problème: caractériser les programmes acceptés par le compilateur

CNET: format intermediaire specifique module ex: input S ; abort pause ; emit O ; pause when S end module ROOT WATCH DOG PAUSE start S TF O

ROOT WATCH DOG PAUSE start S TF O nothing ?S ROOT +off PauseOff -PauseOn PauseOn emit O on CNET: format intermediaire specifique

CNET: ordonnancement statique nothing ?S ROOT +off PauseOff PauseOn nothing ?S ROOT +off PauseOff -PauseOn PauseOn emit O on emit O on +off -PauseOn

CNET: interleaving encodage de parallel PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 module ex2: output O1,O2,O3 ; signal S in emit O1 ; present S then emit O2 end pause ; || emit S ; pause end signal ; emit O3 end module

CNET: interleaving encodage de parallel PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 nothing ?S ROOT POn emit O3 on count=2 emit O1 emit O2 emit S count-- count==0 on +on POn -POn

nothing ?S ROOT POn emit O3 on count=2 emit O1 emit O2 emit S count-- count==0 on +on POn -POn nothing ?S ROOT count==0 count=2 emit O1 emit S emit O2 count-- emit O3 +on on nothingcount-- on +on -POn POn on POn CNET: interleaving encodage de parallel

CNET: réincarnation PAUSE start PARALLEL FORK O RETURN T module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module

CNET: réincarnation nothing ROOT on exit=0 exit=2 PAUSE start PARALLEL FORK O RETURN T nothing emit O exit==2 on +on POn on

nothing ROOT on exit=0 exit=2 PAUSE start PARALLEL FORK O RETURN T nothing emit O exit==2 on +on POn on CNET: réincarnation

nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on emit O POn CNET: réincarnation

nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on emit O POn emit O on POn CNET: réincarnation

CNET: signal local RETURN PAUSE start S FT S O reset S module ex4: output O ; loop signal S in present S then emit O end ; pause ; emit S end signal end loop end module

RETURN PAUSE start S FT S O reset S nothing ?S ROOT -POn on emit O reset S +on POn on emit S on CNET: signal local

ROOT on +on POn -POn nothing ?S ROOT -POn on emit O reset S +on POn on emit S on nothingemit S reset S ?S emit O CNET: signal local

Le compilateur CNET Optimisations du graphe: effacement d’arcs et de nœuds Encodage d’état pas optimisé par rapport a LC – en général très redondant Parcours linéaire des points d’attente a chaque instant Réencodage bas-niveau des traps qui restreint la classe de programmes représentables

Le compilateur Synopsys Exploite la hiérarchie du programme avec des algorithmes d’ordonnancement statique classiques Génère un code bien structuré basé sur de la propagation de contrôle – structures de données distribuées localement dans le corps du programme. Représentation intermédiaire hiérarchique: graphe de flot de contrôle concurrent (CCFG), avec encodage d’état implicite Problème: caractériser les programmes acceptés par le compilateur

Le compilateur Synopsys Thread = composante séquentielle a un niveau donne du CCFG Chaque thread a 2 entrées de contrôle (start et resume) et une sortie de contrôle Chaque thread a une variable qui définit l’état local courant et une variable dans laquelle on calcule l’état pour l’instant suivant

Le compilateur Synopsys ROOT WATCH DOG PAUSE start S TF O Exemple 1- un seul thread S P2 P1 O startresume P1P2 inactive 0 T

Le compilateur Synopsys Exemple 1- Greedy scheduling S P2 P1 O startresume P1P2 inactive T state_next=inactive ; if(start){ state_next=P1 ; } if(resume){ if(state!=0){ if(!S){ switch(state){ case P1: O=1 ; state_next = P2 ; break ; case P2: break ; }}}} 0

Le compilateur Synopsys Exemple 2- parallélisme, 3 threads PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 O1 O2 P1 S 00 S P2 O3 0 1 F

Le compilateur Synopsys Exemple 2- Ordonnancement Greedy après édition de liens O1 O2 P1 S 00 S P2 O3 0 1 F

Le compilateur Synopsys Exemple 3 (réincarnation) PAUSE start PARALLEL FORK O RETURN T module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module

Le compilateur Synopsys Exemple 3 (réincarnation) PAUSE start PARALLEL FORK O RETURN T P1 2 O P2 2 1

Le compilateur Synopsys Exemple 3 (réincarnation) P1 2 O P2 2 1 P1 O P2 P1 2 O P2 2 1

Le compilateur Synopsys Encodage performant (état et contrôle) Structure figée, optimisations difficiles

Nouvelle technique Nouveau format intermédiaire GRC –proche du circuit pour la modélisation du flot de contrôle (sémantique constructive) –optimisations a ce niveau (similaire au compilateur CNET) –proche du compilateur Synopsys pour la représentation de l’état Traduction GRC-C mixte: planification statique/simulation constructive

Le format GRC = LC simplifié Représentation de l’état –arbre de sélection LC, séparé du flot de contrôle Flot de contrôle –expansion des nœuds LC en opérations instantanées (fork, test, switch, synchronize, appel d’action) –sémantique constructive –réincarnation

Le format GRC ROOT PAUSE S TF O Arbre de sélection # # boot WATCH DOG start

Le format GRC Flot de contrôle # # boot ROOT PAUSE S TF O WATCH DOG start #(0) #(2) S exit 1enter 2enter 3 exit 4 exit 3emit O exit 2exit T F enter 4

Génération de code Encodage d’état – hiérarchique, bitwise # # boot bit 0: vie du programme (0=>programme terminé) bit 1: choix entre premier instant(0) et les autres(1), si bit0=1 bit 2: choix entre les instructions pause, si bit1=1 state=110 => programme actif, pas premier instant, première pause active state=100 => état initial, premier instant d’exécution 01 01

Génération de code Encodage d’état (exemple fictif) # # boot bit 0: vie du programme (0=>programme terminé) bit 1: choix entre premier instant(0) et les autres(1), si bit0=1 bit 2 et 3: choix entre les instructions pause, si bit1=1 state=1101 => programme actif, pas premier instant, deuxième pause active state=1000 => état initial, premier instant d’exécution

Génération de code Encodage d’état, conséquences #(0) #(2) S exit 1enter 2enter 3 exit 4 exit 3enter 4 exit 2exit T F bit1 bit2 S state=110 state=111 state= T F emit O

Génération de code Ordonnancement if(state&010b) { bool aux=false ; if(S) { aux=true ; } else { if(state&001b) { aux=true ; } else { O_emit() ; state=111b ; } if(aux) { state=000b ; } } else { state=110b ; } bit1 bit2 S state=110 state=111 state= T F emit O

Second exemple: PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 # || boot

Second exemple: PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 # || boot

Le format GRC Sémantique des nœuds: circuits constructifs Traitement de programmes cycliques causaux par simulation constructive du circuit correspondant au cycle present(S) T F GO S S F T

Le format GRC Types de nœuds: expr T F routine #(n) n1n1 n2n2 nknk … ||(n) K 0 [0 ] K i [0] … … … INACTIVE[0] K 0 [n] K i [n] INACTIVE[n] K0K0 KiKi … Tick Call Test GO SIG Switch Sync

Le format GRC Optimisations – effacement d’arcs et de nœuds: –constructive sweep –analyse statique sur la representation de l’etat Encodage performant d’état et du contrôle

Implémentation: Déjà fait: –génération et optimisations de spécifications GRC –générateur de code C pour spécifications acycliques très simples En chantier: –Nouvelles optimisations du format intermédiaire –Un meilleur générateur de code en cas acyclique –L’extension par simulation constructive aux spécifications cycliques