<?xml version="1.0" encoding="UTF-8"?>
<raweb xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:html="http://www.w3.org/1999/xhtml" id="id2614750" xml:lang="fr" year="2002"><identification id="ostre" isproject="true"><shortname id="id2614751">Ostre</shortname><projectName id="id2614738">Optimisation des Systèmes Temps Réel Embarqués</projectName><theme id="id2588556">1C</theme><team id="uid1"><participants id="id2614791" category="Responsable_scientifique"><person id="id2614797"><firstname id="id2614800">Yves</firstname><lastname id="id2614804">Sorel</lastname><moreinfo id="id2614808">DR Inria</moreinfo></person></participants><participants id="id2614815" category="Assistante_de_projet"><person id="id2614821"><firstname id="id2614824">Martine</firstname><lastname id="id2614828">Verneuille</lastname><moreinfo id="id2614832">SAR Inria</moreinfo></person></participants><participants id="id2640091" category="Ingénieurs_associé_et_experts"><person id="id2640094"><firstname id="id2640097">Christophe</firstname><lastname id="id2640101">Macabiau</lastname><moreinfo id="id2640106">ingénieur associé Inria, jusqu'au
30/08/2002</moreinfo></person><person id="id2640112"><firstname id="id2640116">Frédéric</firstname><lastname id="id2640120">Gager</lastname><moreinfo id="id2640124">ingénieur expert Inria, à partir du 1/11/2002</moreinfo></person><person id="id2640131"><firstname id="id2640134">Julien</firstname><lastname id="id2640138">Forget</lastname><moreinfo id="id2640142">ingénieur expert Inria, à partir du 1/12/2002</moreinfo></person></participants><participants id="id2640151" category="Chercheurs_doctorants"><person id="id2640157"><firstname id="id2640160">Liliana</firstname><lastname id="id2640164">Cucu</lastname><moreinfo id="id2640168">boursière Inria </moreinfo></person><person id="id2640174"><firstname id="id2640177">Nicolas</firstname><lastname id="id2640181">Pernet</lastname><moreinfo id="id2640185">boursier Inria</moreinfo></person><person id="id2640190"><firstname id="id2640194">Hamoudi</firstname><lastname id="id2640198">Kalla</lastname><moreinfo id="id2640202">boursier Inria, co-encadrement <span id="id2640205" align="left" class="smallcap">bip/ostre</span></moreinfo></person><person id="id2640215"><firstname id="id2640218">Linda</firstname><lastname id="id2640222">Kaouane</lastname><moreinfo id="id2640226">co-encadrement <span id="id2640230" align="left" class="smallcap">esiee/ostre</span></moreinfo></person><person id="id2640240"><firstname id="id2640243">Mickaël</firstname><lastname id="id2640247">Raulet</lastname><moreinfo id="id2640251">co-encadrement <span id="id2640255" align="left" class="smallcap">insa/mitsubishi electric ite/ostre</span></moreinfo></person></participants><participants id="id2640266" category="Stagiaires"><person id="id2640271"><firstname id="id2640274">Nicolas</firstname><lastname id="id2640278">Dos Santos</lastname><moreinfo id="id2640282">IUT Vélizy</moreinfo></person><person id="id2640288"><firstname id="id2640291">Julien</firstname><lastname id="id2640295">Forget</lastname><moreinfo id="id2640299">DEA/DESS Université Bordeaux 1</moreinfo></person><person id="id2640306"><firstname id="id2640309">Frédéric</firstname><lastname id="id2640313">Gager</lastname><moreinfo id="id2640317">Ingénieur <span id="id2640321" align="left" class="smallcap">esiee</span> Noisy-Le-Grand</moreinfo></person><person id="id2640332"><firstname id="id2640336">Nicolas</firstname><lastname id="id2640340">Pernet</lastname><moreinfo id="id2640344">DEA Université Paris 6</moreinfo></person></participants><participants id="id2640353" category="Collaborateurs_extérieurs"><person id="id2640357"><firstname id="id2640360">Rémy</firstname><lastname id="id2640364">Kocik</lastname><moreinfo id="id2640368">Professeur assistant <span id="id2640372" align="left" class="smallcap">esiee</span></moreinfo></person><person id="id2640381"><firstname id="id2640384">Thierry</firstname><lastname id="id2640389">Grandpierre</lastname><moreinfo id="id2640393">Professeur assistant <span id="id2640397" align="left" class="smallcap">esiee</span></moreinfo></person><person id="id2640406"><firstname id="id2640409">Christophe</firstname><lastname id="id2640414">Lavarenne</lastname><moreinfo id="id2640418">Ingénieur <span id="id2640422" align="left" class="smallcap">ubic</span></moreinfo></person></participants></team><UR id="id2640434" name="Rocquencourt"/><moreinfo id="id2640440"><p id="id2640441">L'action de recherche OSTRE est issue de la partie du projet SOSSO en charge
des travaux sur la méthodologie adéquation algorithme-architecture pour le
contrôle-commande et le traitement du signal en temps réel.
</p></moreinfo></identification><presentation id="uid3"><bodyTitle id="id2640462">Overall Objectives</bodyTitle><subsection id="uid4"><bodyTitle id="id2640472">Overall Objectives</bodyTitle><p id="id2640476">Nous menons des travaux sur l'optimisation des systèmes distribués temps réel
embarqués selon quatre axes de recherche :
</p><orderedlist id="id2640485"><li id="id2640488"><p id="id2640490">la modélisation de tels systèmes à l'aide de la théorie des graphes et
des ordres partiels,</p></li><li id="id2640498"><p id="id2640500">l'optimisation d'implantations à l'aide :
</p><simplelist id="id2640506"><li id="id2640509"><p id="id2640510">d'algorithmes d'ordonnancement temps réel dans le cas monoprocesseur,</p></li><li id="id2640518"><p id="id2640520">d'heuristiques de distribution et d'ordonnancement temps réel dans le cas
multiprocesseur,</p></li><li id="id2640529"><p id="id2640530">d'heuristiques de minimisation de ressources dans le cas circuit
intégré et multiprocesseur,
</p></li></simplelist></li><li id="id2640540"><p id="id2640542">les techniques de génération automatique de code pour processeur
(exécutif dédié ou configuration d'OS résident) et circuit intégrés
spécifiques (« net-list »),</p></li><li id="id2640553"><p id="id2640555">la tolérance aux fautes.
</p></li></orderedlist><p id="id2640561">Bien que depuis le début notre thématique ait été nourrie à l'INRIA par les
méthodes et applications pour l'automatique étudiées dans le projet SOSSO, nous
avons toujours activement participé aux travaux effectués autour des langages
synchrones. Les nouvelles applications auxquelles nous nous intéressons,
principalement dans le milieu des transports et des télécommunications, nous
amènent à étendre nos axes de recherche vers la tolérance aux fautes et la
conception conjointe (« codesign ») avec partitionnement logiciel/matériel
automatique. Nos modèles ont été étendus ces dernières années pour prendre en
compte d'une part des architectures multiprocesseur hétérogènes et/ou des
circuits intégrés spécifiques conduisant à la notion de multicomposant en vue
de la conception conjointe logiciel/matériel. D'autre part nous cherchons à
prendre en compte, sur les fonctionnalités à implanter, des contraintes de
dépendance, et des contraintes temps réel multiples de cadences (période des
capteurs) et de latences (temps de réponse entre entrée-capteur et
sortie-actionneur ou temps d'exécution d'un ensemble de fonctions
dépendantes). Les contraintes temps réel multiples nous ont conduit à
intensifier nos recherches dans le domaine de l'ordonnancement où les problèmes
que nous cherchons à résoudre sont assez peu étudiés. Les techniques de
génération d'exécutif maintenant bien maîtrisées sont en train d'être étendues
à la génération automatique de code VHDL pour la synthèse de circuits intégrés
spécifiques.
</p><p id="id2640601">Ces travaux de recherche ont conduit d'une part à une méthodologie appelée AAA
pour « adéquation algorithme-architecture » et d'autre part à un logiciel de
CAO niveau système pour le prototypage rapide et l'implantation optimisés de
systèmes distribués temps réel embarqués, appelé SynDEx. Ils évoluent pour
permettre la tolérance aux fautes et la conception conjointe avec
partitionnement logiciel/matériel automatique.
</p><p id="id2640618">Tous ces travaux sont réalisés avec l'objectif de faire le lien entre
l'automatique et l'informatique principalement dans le cadre des langages
synchrones en cherchant à supprimer la rupture entre la phase de
spécification/simulation et celle d'implantation temps réel, ceci afin de
réduire le cycle de développement des applications distribuées temps réel
embarquées.
</p></subsection></presentation><fondements id="uid5"><bodyTitle id="id2640642">Scientific Foundations</bodyTitle><subsection id="uid6"><bodyTitle id="id2640651">Introduction</bodyTitle><participants id="id2640654" category="None"><person id="id2640658"><firstname id="id2640660">Liliana</firstname><lastname id="id2640663">Cucu</lastname></person><person id="id2640666"><firstname id="id2640668">Thierry</firstname><lastname id="id2640671">Grandpierre</lastname></person><person id="id2640675"><firstname id="id2640676">Rémy</firstname><lastname id="id2640679">Kocik</lastname></person><person id="id2640683"><firstname id="id2640685">Christophe</firstname><lastname id="id2640688">Lavarenne</lastname></person><person id="id2640691"><firstname id="id2640693">Yves</firstname><lastname id="id2640696">Sorel</lastname></person></participants><keyword id="id2640700">contrôle</keyword><keyword id="id2640703">commande</keyword><keyword id="id2640705">traitement du signal</keyword><keyword id="id2640708">traitement d'image</keyword><keyword id="id2640711">prototypage
rapide</keyword><keyword id="id2640714">codesign</keyword><keyword id="id2640717">CAO système</keyword><keyword id="id2640720">langages synchrones</keyword><keyword id="id2640723">multiprocesseur</keyword><keyword id="id2640726">parallèle</keyword><keyword id="id2640729">distribution</keyword><keyword id="id2640732">répartition</keyword><keyword id="id2640735">placement</keyword><keyword id="id2640737">temps réel</keyword><keyword id="id2640740">embarqué</keyword><keyword id="id2640743">optimisation</keyword><keyword id="id2640746">ordonnancement</keyword><keyword id="id2640749">exécutif</keyword><keyword id="id2640752">circuit intégré spécifique</keyword><keyword id="id2640756">circuit intégré
reconfigurable</keyword><p id="id2640761">La méthodologie AAA vise le prototypage rapide et l'implantation optimisés
d'applications distribuées temps réel embarquées devant être tolérantes aux
fautes, telles celles rencontrées en contrôle-commande de systèmes complexes
comprenant du traitement du signal et des images. Elle est fondée sur des
modèles de graphes, autant pour spécifier les Algorithmes applicatifs et les
Architectures matérielles distribuées comportant un certain niveau de
redondance, que pour déduire les implantations possibles en termes de
transformations de graphes. L'Adéquation revient à résoudre un problème
d'optimisation consistant à choisir une implantation dont les performances,
déduites des caractéristiques des composants matériels, respectent les
contraintes temps réel et d'embarquabilité, et exploitent la redondance
matérielle pour effectuer de la tolérance aux fautes par redondance
logicielle automatique. Dans le cas du temps réel critique les approches « hors ligne » sont privilégiées, et quand des approches « en ligne » sont
utilisées, le nombre de décisions prises lors de l'exécution est minimisé,
c'est-à-dire uniquement quand elles sont inévitables. Tout cela permet de
générer automatiquement d'une part des exécutifs distribués temps réel à
faible surcoût pour les composants processeurs, et d'autre part des « net-list » pour les composants circuits intégrés spécifiques, supportant
tous ensemble (« codesign ») l'exécution tolérante aux fautes de
l'algorithme sur l'architecture. La méthodologie AAA est concrétisée par un
logiciel de CAO niveau système nommé SynDEx pour le prototypage rapide et
l'implantation optimisés de systèmes distribués temps réel embarqués. Afin de
réduire la rupture entre la phase de spécification/simulation des
automaticiens et la phase d'implantation en temps réel des informaticiens, et
afin de minimiser la durée du cycle de développement des applications
distribuées temps réel embarquées, les liens entre des langages haut niveau
orientés métier et AAA/SynDEx sont étudiés.

</p></subsection><subsection id="uid7"><bodyTitle id="id2640852">Contexte et objectifs</bodyTitle><p id="id2640856">Nos recherches concernent la mise en œuvre efficace de systèmes
électroniques numériques programmables (logiciel) ou non programmables (circuit
intégrés spécifiques) pour des applications de contrôle-commande et de
traitement du signal et des images, soumises à des contraintes temps réel et
d'embarquabilité devant être tolérantes aux fautes, comme on en rencontre dans
les domaines du transport (avionique, automobile), des télécommunications,
etc...<ref id="id2640876" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:ecc91" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/></p><p id="id2640894">Dans ces applications, le système programmé et/ou câblé effectue le « contrôle-commande » <footnote id="id2640901" anchored="yes" place="foot">Néologisme indiquant qu'une machine à états
finie enchaîne des lois de commandes, par la suite on utilisera pour
simplifier le verbe contrôler pour dire que l'on effectue du
contrôle-commande</footnote> de son environnement en produisant, par l'intermédiaire
d'actionneurs (réactions), une commande qu'il calcule à partir de son état
interne et de l'état de l'environnement, acquis par l'intermédiaire de capteurs
(stimuli). C'est en ce sens que l'on parle de <i id="id2640927">systèmes réactifs</i><ref id="id2640933" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:BenBer" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> : la commande est calculée en réaction à chaque stimulus. Une
analyse mathématique du système de commande et de son environnement permet
d'une part de réaliser une spécification fonctionnelle conduisant à
l'algorithme (ou l'ensemble d'algorithmes) qu'il faudra implanter, et d'autre
part de réaliser une spécification de contraintes. En ce qui concerne les
contraintes temps réel, on détermine une borne supérieure sur le délai qui
s'écoule entre deux échantillons sur chaque capteur (cadence ou période), et
une borne supérieure sur la durée du calcul (latence) entre une détection de
variation d'état de l'environnement et la variation induite de la commande. Si
ces bornes ne sont pas respectées l'environnement risque de ne plus pouvoir
être contrôlé, ceci pouvant conduire à des conséquences catastrophiques. Ainsi,
sauf indication contraire, quand nous parlons par la suite de temps réel nous
faisons allusion au « temps réel strict » ou « temps réel dur » par
opposition au « temps réel souple » où il est seulement question d'exécuter
au mieux les applications sans réellement respecter une contrainte temporelle.
En plus de ces contraintes temps réel, l'application est soumise à des
contraintes technologiques d'embarquabilité et de coût, qui incitent à
minimiser les ressources matérielles (architecture) nécessaires à sa
réalisation. Pour satisfaire les contraintes temps réel, et/ou pour rapprocher
les ressources de calcul le plus près possible des capteurs et des actionneurs
afin de limiter le coût du câblage et l'influence des radiations
électromagnétiques, l'architecture est la plupart du temps <i id="id2641008">multicomposant</i>
(parallèle, répartie, distribuée), composée de plusieurs processeurs et
circuits intégrés spécifiques (ASIC<footnote id="id2641016" anchored="yes" place="foot">ASIC : Application Specific
Integrated Circuit</footnote> figé ou FPGA<footnote id="id2641027" anchored="yes" place="foot">FPGA : Field Programmable Gate
Array</footnote> reconfigurable).
</p><p id="id2641038">La complexité des applications visées, au niveau des algorithmes, de
l'architecture matérielle, et des interactions avec l'environnement sous
contraintes temps réel, nécessite des méthodes pour minimiser la durée du cycle
de développement, depuis la conception jusqu'à la mise au point des prototypes
ainsi que des « produits de série » obtenus à partir de ces prototypes,
s'exécutant dans les deux cas en temps réel. Afin d'éviter toute rupture entre
les différentes phases du cycle de développement et pour permettre des
vérifications formelles et des optimisations, notre méthodologie AAA de <i id="id2641053">prototypage rapide et d'implantation optimisés</i> est fondée sur une approche
globale, formalisant l'algorithme, l'architecture et les implantations
possibles, à l'aide de graphes. L'intérêt principal de ce modèle réside dans
sa capacité à spécifier à la fois du <i id="id2641067">parallélisme potentiel</i> dans le cas
de l'algorithme (par exemple schémas-blocs utilisés dans Simulink) et du <i id="id2590599">parallélisme effectif</i> dans le cas de l'architecture (par exemple réseaux de
composants programmables ou de fonctions logiques utilisés dans VHDL
structurel), mais aussi de décrire l'implantation de l'algorithme sur
l'architecture en termes de transformations de graphes (distribution et
ordonnancement des calculs et des communications, synthèse des chemins de
données et de contrôle), en supportant naturellement la notion de conception
conjointe logiciel/matériel ou « codesign ». Ceci permet d'assurer un haut
niveau de « sécurité de conception » grâce à la cohérence des modèles, de
poser plus précisément les problèmes d'optimisation de l'implantation, et enfin
de simplifier et rendre plus efficace la génération automatique de code
(exécutifs distribués temps réel et/ou « net-list »).

</p></subsection><subsection id="uid8"><bodyTitle id="id2590643">Modèle d'algorithme</bodyTitle><p id="id2590647">La spécification fonctionnelle d'une application conduit à un algorithme
obtenu en général par composition de plusieur algorithmes. Par exemple dans
une application de robotique mobile un algorithme de commande de trajectoire
peut utiliser dans sa boucle de rétroaction un algorithme de traitement
d'image effectuant de la vision active et des algorithmes de commande pour
les moteurs électriques. Un algorithme, tel que défini par Turing et Post,
est une séquence (ordre total) finie d'opérations directement exécutable par
une machine à états finie. Cette définition doit être étendue afin de
permettre d'une part la prise en compte du parallélisme effectif des
architectures distribuées, composées de plusieurs machines à états finies
interconnectées, et d'autre part la prise en compte de l'interaction
infiniment répétitive de l'application avec son environnement (systèmes
réactifs). Pour cela notre modèle d'algorithme est un <i id="id2590684">graphe de
dépendances de données conditionné factorisé</i><ref id="id2590694" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:ts97" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> : c'est un
hypergraphe orienté acyclique (DAG) <ref id="id2590712" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:graphTheory2" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>, dont les sommets
sont des <i id="id2590729">opérations</i> partiellement ordonnées <ref id="id2590736" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:pra86" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>
(parallélisme potentiel) par leurs dépendances de données (hyperarcs orientés
pouvant avoir plusieurs extrémités pour une seule origine, « diffusion de
données »). Chaque opération du graphe peut être à son tour décrite par un
sous-graphe permettant une spécification hiérarchique de l'algorithme
jusqu'aux « opérations atomiques » que l'on ne peut spécifier à l'aide d'un
sous-graphe. Des <i id="id2590734">dépendances de conditionnement</i> permettent de choisir,
à chaque réaction (répétition infinie), parmi un ensemble de sous-graphe
alternatifs, celui qui sera exécuté. Le choix s'effectue suivant la valeur de
la dépendance de conditionnement. L'imbrication des conditionnements conduit
à de la hiérarchie dans le graphe d'algorithme. À chaque interaction avec
l'environnement, concrétisée par un ensemble d'événements d'entrée issus des
capteurs, les valeurs des arcs de conditionnement déterminent l'ensemble des
opérations à exécuter pour obtenir les événements de sortie pour les
actionneurs, à partir des valeurs d'entrée acquises par les capteurs. Chaque
capteur produit une suite d'événements et chaque actionneur consomme une
suite d'événements. La notion d'événement est prise au sens large, en effet
la séquence infinie d'événements formant un <i id="id2590802">signal</i> peut être périodique
ou apériodique. Chaque événement a une valeur prise dans un ensemble bien
défini (les entiers ou les réels par exemple). L'algorithme est donc
modélisé par un graphe de dépendances de données infini, mais pour lequel on
peut identifier un motif infiniment répété. Cela permet de réduire le graphe
par factorisation à son motif répété qui est généralement appelé <i id="id2590817">graphe
flot de données</i><ref id="id2590825" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:Dennis75" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. Les événements valués « circulent »
sur les arcs de ce graphe qui sont des signaux formant les flots de
données. Chaque sommet non conditionné produit ses événements sur ses signaux
de sortie dès que tous les événements correspondant à ses signaux d'entrées s
ont arrivés.
De plus, un sous-graphe du graphe d'algorithme peut être répété un nombre
fini de fois et peut contenir, à son tour, un sous-graphe lui aussi répété un
nombre fini de fois correspondant à des « nids de boucles ». L'imbrication
des boucles conduit aussi à de la hiérarchie dans le graphe d'algorithme. Un
sous-graphe répété un nombre fini de fois peut aussi être réduit par
factorisation à son motif répétitif. Les frontières de factorisation sont
matérialisées par des sommets particuliers qui servent à spécifier si la
répétition est infinie ou finie, et dans ce dernier cas quel est le nombre de
répétitions, ainsi qu'à spécifier le début ou la fin d'une factorisation.
Dans le cas d'un sous-graphe factorisé représentant un sous-graphe répété N
fois, le sommet de factorisation <i id="id2590822">Fork</i>, qui a comme entrée un tableau de
N données, va produire sur ses N sorties les N éléments de ce tableau. Chacun
des éléments va être utilisé comme entrée par chacune des répétition finie de
sous-graphes. Inversement, le sommet <i id="id2590887">Join</i> qui a comme entrées les N
éléments obtenus en sorties des N instances de répétition, produit en sortie
le tableau formé de ces N éléments. Un Fork et un Join appartenant à une
même frontière de factorisation correspondent au déroulement spatial d'une
boucle (itération ou répétition temporelle) conduisant à du « parallélisme
potentiel de données » puisque c'est le même graphe d'opérations répété
spatialement qui traite des données différentes. Ce type de parallélisme est
un cas particulier du « parallélisme potentiel d'opérations » ou « parallélisme potentiel de tâches », induit par l'absence de dépendance de
donnée entre opérations, qui est le seul parallélisme potentiel évoqué
jusqu'à présent. On peut faire le même raisonnement pour les frontières de
répétitions infinies. Dans ce cas, pour chaque signal d'entrée il faudra
disposer d'une infinité de capteurs placés en parallèle, de même pour chaque
signal de sortie il faudra disposer d'une infinité d'actionneurs, plutôt que
d'un seul capteur et un seul actionneur, réutilisés infiniment. On comprend
aisément que l'on peut transformer une répétition spatiale en répétition
temporelle, en transformant la répétition spatiale en une itération, ce qui
diminue les ressources nécessaires, et inversement on peut transformer une
itération en une répétition spatiale si les ressources le permettent.
</p><p id="id2590928">Le conditionnement et la factorisation sont les équivalents, en termes de
graphe de dépendances de données, des structures de contrôle respectivement
« If...Then...Else » et « For i=1 to N Do... » que l'on trouve
dans les langages impératifs. Ils ont comme principal avantage de permettre
d'exprimer du parallélisme potentiel.
</p><p id="id2590945">Le graphe de l'algorithme peut être soit directement spécifié comme tel, ou
bien déduit d'une spécification séquentielle ou CSP (Communicating Sequential
Processes de Hoare) par analyse de dépendances, ou encore produit par les
compilateurs des langages synchrones (Esterel, Lustre, Signal, à travers leur
« format commun DC ») <ref id="id2590964" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:Hal93" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> qui présentent l'intérêt de faire
des vérifications formelles en termes d'ordre sur les événements. De manière
plus générale, tout langage de « haut niveau orienté métier » possédant une
sémantique compatible avec celle des langages synchrones, est un candidat
capable de produire lors de sa compilation un graphe de ce type. Par exemple,
le langage AIL (Architecture Implementation Language) défini par les
constructeurs et équipementiers français du domaine de l'automobile, le
langage Scicos orienté vers la spécification d'applications d'automatique, le
langage AVS orienté vers la spécification d'applications de traitement
d'images, sont des langages de ce type.
</p></subsection><subsection id="uid9"><bodyTitle id="id2591013">Modèle d'architecture</bodyTitle><p id="id2591017">Nous distinguons deux types d'architecture, celles que nous appelons <i id="id2591022">multicomposant</i> qui correspondent à l'interconnexion de composants
programmables (processeurs) et de composants non programmables (circuits
intégrés spécifiques), et celles des circuits intégrés spécifiques eux-mêmes.
</p><p id="id2591035">Les modèles les plus classiquement utilisés pour spécifier une architecture
multiprocesseur (multicomposant ne comportant pas de circuit intégré
spécifique) parallèle ou distribuée, sont les PRAM (Parallel Random Access
Machines) et les DRAM (Distributed Random Access Machines)
<ref id="id2591051" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:PRAM3" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. Le premier modèle correspond à un ensemble de processeurs
communicant par mémoire partagée alors que le second correspond à un ensemble
de processeurs à mémoire distribuée communicant par passage de messages. Si
ces modèles sont suffisants pour décrire, sur une architecture homogène, la
distribution et l'ordonnancement des opérations de calcul de l'algorithme,
ils ne permettent pas de prendre en compte des architectures hétérogènes ni
de décrire précisément la distribution et l'ordonnancement des opérations de
communications inter-processeurs qui sont souvent critiques pour les
performances temps réel.
</p><p id="id2591081">Notre modèle d'<i id="id2591084">architecture multicomposant</i> hétérogène <ref id="id2591090" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:THTG" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> est
donc un graphe orienté, dont chaque sommet est une machine à états finie
(machine séquentielle) <ref id="id2591112" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:Automates" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> et chaque arc une connexion
physique entre deux machines à états finies. Il y a cinq types de sommets :
l'<i id="id2591133">opérateur</i> pour séquencer des opérations de calcul (séquenceur
d'instructions), le <i id="id2591140">communicateur</i> pour séquencer des <i id="id2591143">opérations de
communication</i> (canal DMA), le <i id="id2591148">bus/mux/démux</i> avec ou sans <i id="id2591152">arbitre</i> pour sélectionner, diffuser et éventuellement arbitrer des
données, la <i id="id2591159">mémoire</i> pour stocker des données et des programmes. La
mémoire peut aussi être considérée comme une machine séquentielle. Il y a
deux types de sommets mémoire : la mémoire RAM (à accès aléatoire) pour
stocker les données ou programmes locaux à un opérateur, la RAM et la SAM (à
accès séquentiel), toutes deux pour les données communiquées entre opérateurs
ou/et communicateurs. L'arbitre, quand il y en a un dans un
bus/mux/démux/arbitre, est aussi une machine à états finie qui décide de
l'accès aux ressources partagées que sont les mémoires. Les différents
sommets ne peuvent pas être connectés entre eux de n'importe quelle manière,
il est nécessaire de respecter un ensemble de règles. Par exemple deux
opérateurs ne peuvent pas être connectés directement, de même pour deux
communicateurs. Ils peuvent chacun être connecté à une RAM partagée ou à une
SAM pour communiquer, en passant, ou non, par l'intermédiaire de
communicateurs pour assurer le découplage entre calcul et communication.
L'hétérogénéité ne signifie pas seulement que les sommets peuvent avoir
chacun des caractéristiques différentes (par exemple durée d'exécution des
opérations et taille mémoire des données communiquées), mais aussi que
certaines opérations ne peuvent être exécutées que par certains opérateurs,
ce qui permet de décrire aussi bien des composants programmables
(processeurs) que des composants non programmables (ASIC ou FPGA). Un
processeur est décrit par un sous-graphe contenant un seul opérateur, une ou
plusieurs RAM de données et de programme locaux. Un moyen de communication
direct (sans routage) entre deux processeurs, est un sous-graphe contenant au
moins une RAM (données communiquées) et des bus/mux/démux/arbitre, ou bien un
sous-graphe linéaire composé au minimum des sommets (bus/mux/démux/arbitre,
RAM, communicateur, RAM ou SAM, communicateur, RAM, bus/mux/démux/arbitre).
</p><p id="id2591242">Notre modèle d'architecture de circuit intégré spécifique est le modèle
classique RTL (Register Transfer Level, niveau transfert de registres)
<ref id="id2591254" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:RTL" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. C'est un graphe orienté ou chaque sommet est un circuit
combinatoire ou une mémoire, et chaque arc est un transfert de données entre
circuit et mémoire.
</p><p id="id2591278">Afin d'unifier le modèle multicomposant et le modèle de circuit intégré nous
avons étendu le modèle RTL que nous qualifions alors de <i id="id2591286">Macro-RTL</i>. Une
opération du graphe de l'algorithme correspond alors à une <i id="id2591292">macro-instruction</i> (une séquence d'instructions pouvant se réduire à une
seule instruction dans le cas d'un composant non programmable, ou bien un
circuit combinatoire) ; une dépendance de donnée correspond à un <i id="id2591303">macro-registre</i> (des cellules mémoire contiguës ou des conducteurs
interconnectant des circuits combinatoires). Ce modèle encapsule les détails
liés au jeu d'instructions, aux micro-programmes, au pipe-line, au cache, et
lisse ainsi ces caractéristiques de l'architecture, qui seraient sans cela
trop délicates à prendre en compte lors de l'optimisation. Il présente une
complexité réduite adaptée aux algorithmes d'optimisation rapides tout en
permettant des résultats d'optimisation relativement (mais suffisamment)
précis.
</p></subsection><subsection id="uid10"><bodyTitle id="id2591327">Modèle d'implantation</bodyTitle><p id="id2591331">L'<i id="id2591334">implantation</i> d'un algorithme sur une architecture multicomposant est
une <i id="id2591340">distribution</i> et un <i id="id2591344">ordonnancement</i> non seulement des
opérations de l'algorithme sur les opérateurs de l'architecture, mais aussi
des opérations de communication, qui découlent de la première distribution,
sur les communicateurs, les bus/mux/démux/arbitre et les mémoires.
</p><p id="id2591359">La distribution consiste à affecter chaque opération de l'algorithme à un
opérateur capable de l'exécuter. Ceci conduit à une partition de l'ensemble
des opérations de l'algorithme en autant de sous-graphes qu'il y a
d'opérateurs. Ensuite pour chacune de ces opérations il faut ajouter un
sommet <i id="id2591373">alloc</i> d'allocation mémoire programme locale (resp. allocation
mémoire données locales) et affecter ce sommet à une RAM programme (resp. RAM
données locales) connectée à l'opérateur qui exécute l'opération. Enfin, il
faut affecter chaque dépendance de donnée inter-opérateur (c'est-à-dire entre
opérations affectées à des opérateurs différents), à une <i id="id2591390">route</i> reliant
les deux opérateurs (chemin dans le graphe de l'architecture), créer et
insérer, entre les deux opérations de l'algorithme, autant d'opérations de
communication qu'il y a de communicateurs, autant de sommets <i id="id2591402">identité</i>
qu'il y a de sommets bus/mux/démux/arbitre et autant de sommets <i id="id2591409">alloc</i>
d'allocation de mémoires données communiquées, qu'il y a de sommets mémoire
SAM et RAM sur la route, puis les affecter aux sommets correspondant du
graphe de l'architecture. Ceci conduit à une partition de l'ensemble des
sommets de communication, des sommets <i id="id2591423">identité</i> et des sommets <i id="id2591428">alloc</i> respectivement en autant de sous-graphes qu'il y a de commmunicateurs,
de bus/mux/demux et de mémoires. Les sommets <i id="id2591436">alloc</i> permettent de
déterminer la taille des mémoires nécessaires pour l'application.
</p><p id="id2591444">L'ordonnancement consiste à linéariser (rendre total par ajout d'arcs)
l'ordre partiel associé à chaque sous-graphe de l'algorithme formé
d'opérations, d'opérations de communication, de sommets <i id="id2591455">identité</i> et
<i id="id2591459">alloc</i>, affecté à un sommet respectivement opérateur, communicateur,
bus/mux/demux, et mémoires du graphe de l'architecture, car ceux-ci sont des
machines séquentielles.
</p><p id="id2591471">Une implantation est donc le résultat d'une transformation du graphe de
l'algorithme (ajout de nouveaux sommets et de nouveaux arcs) en fonction du
graphe de l'architecture, lui même transformé (détermination de toutes les
routes possibles) <ref id="id2591485" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:THTG" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. L'ensemble de toutes les implantations
possibles, étant donnés un algorithme et une architecture, est formalisé
comme une composition de trois relations binaires : le <i id="id2591509">routage</i>, la <i id="id2591512">distribution</i> et l'<i id="id2591516">ordonnancement</i>, chacune d'elles mettant en
correspondance deux couples de graphes (algorithme, architecture)
<ref id="id2591523" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:THAV" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. On peut aussi la voir comme une loi de composition externe où
un graphe d'algorithme est composé avec (influencé par) un graphe
d'architecture pour donner comme résultat un graphe d'algorithme transformé
(distribué et ordonnancé). Chacune de ces implantations possibles a
des performances (latence, cadence) différentes. Ces performances sont
obtenues par calcul de chemins critiques (pour les latences) et/ou de boucles
critiques (pour les cadences) sur le graphe de l'implantation étiqueté par
les durées d'exécution caractéristiques des opérateurs, des communicateurs,
des bus/mux/démux/arbitre et des mémoires de l'architecture.
</p><p id="id2591555">L'<i id="id2591558">implantation</i> d'un algorithme sur une architecture de circuit intégré
spécifique <ref id="id2591566" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:icsp98" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>
est une transformation des opérations de l'algorithme en circuits combinatoires
formant le <i id="id2591586">chemin de données</i> du circuit, et une transformation des
dépendances de conditionnements et des sommets de factorisation en circuits
combinatoires et mémoires réalisant des circuits séquentiels formant le <i id="id2591597">chemin de contrôle</i> du circuit. Les sommets de factorisation spécifient une
répétition spatiale de sous-graphes. Chaque répétition spatiale peut être
transformée partiellement ou totalement en répétition temporelle si
nécessaire. Les dépendances de données sont transformées en transferts de
données entre circuits. Contrairement à l'implantation sur un
multicomposant, le graphe de l'algorithme n'est pas ici influencé par un
graphe d'architecture, en effet celui-ci n'est pas spécifié. Ainsi le graphe
d'algorithme est transformé directement en un graphe d'implantation qui est
le graphe d'architecture du circuit visé.
</p></subsection><subsection id="uid11"><bodyTitle id="id2591622">Optimisations</bodyTitle><p id="id2591626">La recherche d'une implantation optimisée d'un algorithme sur une
architecture multicomposant ou de circuit intégré spécifique, tenant compte
de contraintes temps-réel et d'embarquabilité, correspond à une adéquation
(« mise en correspondance efficace ») entre cet algorithme et cette
architecture, celle-ci pouvant être le résultat de l'implantation dans le cas
d'un circuit intégré. Nous effectuons actuellement trois types
d'optimisation : l'optimisation de la distribution et de l'ordonnancement
dans le cas d'un multicomposant, l'optimisation de l'implantation dans le cas
d'un circuit intégré, et l'optimisation de l'ordonnancement dans le cas
monoprocesseur. Les deux premiers types d'optimisation utilisent des
heuristiques, car les problèmes traités sont NP-difficiles conduisant à des
solutions approchées, tandis que le troisième type utilise des algorithmes
exacts conduisant à des solutions optimales. Les optimisations
d'implantation se font « hors-ligne », c'est à dire avant l'exécution en
temps réel de l'application. Cette approche est bien adaptée au contexte des
applications temps réel qui doivent être déterministes afin d'assurer une
bonne sécurité de conception, de plus elle conduit à une génération de code
induisant un surcoût inférieur à celui obtenu par des optimisations faites
« en-ligne », c'est à dire pendant l'exécution en temps réel de
l'application.
</p><p id="id2591667">Le problème d'optimisation de la distribution et de l'ordonnancement dans le
cas multicomposant que nous avons formalisé <ref id="id2591677" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:parco93" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/><ref id="id2591693" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:mpcs94" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>, et
dont nous avons automatisé la résolution approchée, se limite au cas de
l'adéquation entre un algorithme et une architecture donnés, y compris dans
leur granularité et leur topologie, sous une contrainte temps réel unique de
cadence égale à la latence et sans préemption d'une opération par une autre
opération. Même ainsi réduit, ce problème est reconnu NP-difficile, et le
nombre d'implantations possibles dans le cas d'une application réaliste rend
prohibitive toute tentative de recherche exhaustive de la solution optimale,
c'est pourquoi on utilise des heuristiques pour trouver des solutions
approchées. De plus, l'objectif de prototypage rapide nous a fait étudier
plus particulièrement des heuristiques « gloutonnes » (sans retour arrière)
qui s'exécutent très rapidement <ref id="id2591743" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:corroyer" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>.
</p><p id="id2591761">Les heuristiques de distribution-ordonnancement que nous développons sont du
type « gloutonnes » et de « list-scheduling » (choix fait par les
fonctions de coût à partir des opérations ordonnançables), améliorées pour
prendre en compte les communications inter-opérateurs qui peuvent avoir lieu
par mémoire partagée ou par passage de messages, l'hétérogénéité des
opérateurs, des communicateurs, des bus/mux/démux/arbitre et des mémoires, et
enfin le conditionnement des opérations. Les communications inter-opérateur
sont distribuées et ordonnancées sur les routes, en tenant compte avec
précision des parties de routes communes, des routes parallèles et des
conflits d'accès aux ressources partagées principalement les séquenceurs des
opérateurs requis par les communicateurs <ref id="id2591798" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:codes99" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. L'optimisation de
l'utilisation des différents types de mémoire (RAM programme ou données et
SAM) est réalisée par ré-allocation statique. En ce qui concerne la
hiérarchie et la répétition finie de sous-graphe de l'algorithme, nous la
traitons en effectuant de la défactorisation partielle sur nos graphes
factorisés (transformation spatiale/temporelle). Pour cela, nous nous basons
sur les travaux effectués sur la parallélisation de nids de boucles dans le
cas des langages impératifs. Enfin, ces heuristiques sont ensuite étendues à
des heuristiques itératives de voisinage local <ref id="id2591828" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:dapsys98" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> qui ne sont
plus « gloutonnes » (avec retour arrière), beaucoup plus lentes mais
donnant des résultats plus précis. Cela consiste à mémoriser les endroits où
l'heuristique gloutonne se trouve en face de choix équivalents, puis à
revenir sur ces choix en explorant toutes les possibilités plutôt que d'en
choisir une au hasard et de continuer comme cela est fait dans les
heuristiques « gloutonnes ».
</p><p id="id2591859">La recherche d'une implantation optimisée d'un algorithme sur une
architecture de circuit intégré spécifique tenant compte de contraintes
temps-réel et d'embarquabilité, est aussi un problème complexe qui est en
général NP-difficile. Elle consiste à appliquer des transformations telles
que celles décrites plus haut en évaluant, à chaque transformation à l'aide
d'une fonction de coût, si les contraintes temps réel et d'embarquabilité
sont respectées. Plus concrètement la fonction de coût calcule la latence du
circuit et sa surface ou le nombre de CLB (fonctions logiques) du FPGA
relativement à une caractérisation en termes de durée et de surface, de
nombre de fonctions logiques des éléments de bibliothèque VHDL synthétisables
selon la technologie du circuit intégré visée. Les heuristiques que nous
développons sont aussi « gloutonnes » afin d'obtenir des résultats
approchés le plus rapidement possible. Nous développons aussi des
heuristiques de type « recuit simulé » fondées sur le même type de fonction
de coût beaucoup plus lentes, mais plus précises.
</p><p id="id2591899">Afin de prendre en compte des contraintes temps réel multiples nous avons
repris les travaux classiques sur l'ordonnancement monoprocesseur pour les
reformuler dans le cadre de notre modèle d'algorithme de graphe conditionné
factorisé, en exprimant la notion de périodicité à l'aide de la factorisation
vue comme une répétition de graphe temporelle (par opposition à spatiale).
Nous avons ainsi pu proposer un algorithme optimal d'ordonnancement
<ref id="id2591917" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:rts2002refer" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> d'un système temps réel sans préemption sur
monoprocesseur avec contraintes multiples de précédences de données entre une
opération productrice et une ou plusieurs opérations réceptrices, de
périodicités chacune appliquée à une opération, et de latences chacune
appliquée à un couple d'opérations. Cet algorithme est optimal dans le sens
ou s'il existe un ordonnancement l'algorithme le trouvera. Pour être plus
précis, comme le graphe sur lequel l'algorithme d'ordonnancement s'applique
est infini, celui-ci s'arrête dès qu'il ne peut plus ordonnancer une
opération, ce qui veut dire dans ce cas que le système n'est pas
ordonnançable.
</p><p id="id2591916">La conception conjointe logiciel/matériel consite à choisir la partie de
l'algorithme qui sera implantée en logiciel c'est-à-dire sur un
multiprocesseur (composants programmables), et celle qui sera implantée en
matériel c'est-à-dire sur un ou plusieurs circuits intégrés spécifiques
(composants non programmables). Ce partitionnement en deux éléments de
partition « le logiciel » et « le matériel » est généralement fait de
façon manuelle. Parce que nous avons un cadre formel unique pour décrire
algorithme, composants matériels programmables et composants matériels non
programmable, il est plus facile de poser un problème d'optimisation pour le
partitionnement, afin que ce dernier puisse s'effectuer de manière
automatique et non plus manuelle. Cela consiste à étudier comment on peut
unifier les fonctions de coût utilisées dans les heuristiques pour les
implantation multicomposant et les heuristiques pour circuits intégrés. Afin
de faire automatiquement le choix du partitionnement nous cherchons des
fonctions de coût qui prennent en compte des critères de type flexibilité,
consommation électrique, etc ...en plus des critères déjà utilisés de
type performances temps réel (latence, cadence) et ressources (nombre de
processeurs et de moyen de communications, surface d'un circuit intégré,
nombre de CLB dans un FPGA).
</p></subsection><subsection id="uid12"><bodyTitle id="id2592006">Génération d'exécutif et de « net-list »</bodyTitle><p id="id2592012">Un <i id="id2592015">exécutif distribué temps réel dédié</i> pour processeur <ref id="id2592023" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:execv4" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>,
comme une « net-list » pour circuit, correspond au codage d'une implantation
particulière d'un algorithme suivant le modèle macro-RTL de l'architecture. La
séquence d'opérations sur chaque opérateur ou chaque communicateur d'une
architecture multicomposant est codée par une séquence de macro-instructions.
Sur un circuit intégré les macro-instructions sont des composants de
bibliothèque VHDL, connectés en pipeline. Le générateur d'exécutifs du
logiciel SynDEx transforme donc le graphe flot de données de l'implantation en
graphe flot de contrôle, codé par un exécutif et/ou des « net-list » en VHDL
structurel.
</p><p id="id2592065">La génération automatique d'exécutifs se fait suivant des règles décrivant la
transformation d'un graphe d'implantation optimisé en un graphe d'exécution.
Pour chaque opérateur (resp. chaque communicateur) on construit un programme
séquentiel formé de la séquence des opérations de calcul (resp. des opérations
de communication) qu'il doit exécuter. Les opérations de communications sont
des « SEND » et des « RECEIVE » de données transmises entre communicateurs
via une SAM (communication par passage de message), ou des « WRITE » et des
« READ » quand les données sont transmises via des RAM (communication par
mémoire partagée). Pour garantir les précédences d'exécution entre les
opérations appartenant à des séquences de calcul et/ou de communication
différentes, et pour garantir l'accès en exclusion mutuelle aux données
partagées par les opérations de ces séquences, on ajoute des opérations de
synchronisation avant et après chaque opération qui lit (resp. écrit) une
donnée écrite (resp. lue) par une opération appartenant à une autre séquence.
Ces opérations de synchronisation utilisent des sémaphores générés
automatiquement. Nous avons montré à l'aide des réseaux de Pétri que ces
sémaphores permettent à l'exécutif de respecter l'ordre partiel du graphe
d'algorithme initial <ref id="id2592105" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:THTG" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>, n'introduisant ainsi pas de dead-lock dans
une itération infinie ou finie donnée ou entre deux itérations infinies ou
finies consécutives.
</p><p id="id2592128">Il y a autant d'exécutifs générés, chacun d'eux correspondant à un fichier
distinct, qu'il y a d'opérateurs dans l'architecture. Chaque fichier d'exécutif
est un code intermédiaire indépendant de l'opérateur, c'est-à-dire du
processeur puiqu'il n'y a qu'un opérateur par processeur, composé d'une liste
d'appels de macros qui seront traduites par un macro-processeur en autant de
programmes dans le langage source préféré (C, ou assembleur par exemple).
Chacun de ces programmes source sera compilé puis chargé dans la mémoire
programme de l'opérateur correspondant. Les définitions de macros qui sont
dépendantes de l'opérateur (du processeur) peuvent être classées en deux
ensembles. Le premier ensemble est un jeu extensible de <i id="id2592160">macros
applicatives</i> réalisant les opérations de l'algorithme. Le second ensemble,
que nous appelons <i id="id2592167">noyau d'exécutif</i>, est un jeu fixe de <i id="id2592171">macros
système</i> qui supportent le chargement initial des mémoires programmes, la
gestion mémoire (allocation statique, copies et fenêtres glissantes de
macro-registres), le séquencement (sauts conditionnels et itérations finies et
infinies), les transferts de données inter-opérateurs (macro-opérations de
communication transférant le contenu de macro-registres), les synchronisations
inter-séquences (assurant l'alternance entre écriture et lectures de chaque
macro-registre partagé entre séquence de calcul et séquences de communication),
et le chronométrage (pour permettre la mesure des caractéristiques des
opérations de l'algorithme et des performances de l'implantation).
</p></subsection><subsection id="uid13"><bodyTitle id="id2592195">Tolérance aux fautes</bodyTitle><p id="id2592198">Dans les applications qui nous concernent si les contraintes temps réel ne
sont pas respectées l'environnement pour lequel on produit une commande ne
peut plus être contrôlé, cela peut avoir des conséquences catastrophiques
telles que la destruction du système de commande lui-même, pouvant conduire
dans certains cas jusqu'à la perte de vies humaines. L'objet de la <i id="id2592216">sécurité de fonctionnement</i> est d'éviter au maximum ces problèmes. Elle se
décline selon deux aspects, d'une part la <i id="id2592224">sécurité de conception</i> du
système de commande lui-même à l'aide de techniques de vérifications
formelles (model-checking, theorem proving), et d'autre part la <i id="id2592234">tolérance aux fautes</i>. Le premier est traité d'une part par les
compilateurs des langages synchrones qui produisent une spécification
d'algorithme vérifiée, et d'autre part par l'implantation optimisée sans « dead-lock » qui garantit les vérifications précédentes. Nous traitons le
second d'une part en demandant à l'utilisateur de spécifier les fautes
matérielles qu'il souhaite tolérer par redondance au niveau de l'architecture
(processeurs, capteurs, actionneurs, réseau), et d'autre part en déduisant de
cette redondance matérielle la redondance d'opérations (redondance
logicielle) nécessaire au niveau de l'algorithme et au niveau de l'exécutif,
afin de garantir que si des fautes surviennent malgré tout lors du
fonctionnement temps réel, le comportement de l'application reste correct
jusqu'à ce que toute la redondance matérielle soit exploitée. Au delà de
cette limite un fonctionnement dégradé, qui doit être impérativement spécifié
dans l'algorithme, sera nécessaire. Concernant la tolérance aux fautes, le
problème de l'identification des fautes elles-mêmes reste très difficile à
traiter.
</p><p id="id2592276">Nous cherchons à étendre les heuristiques d'optimisation de distribution et
d'ordonnancement vues plus haut pour prendre en compte la tolérance aux
fautes. Pour cela, pour l'instant, seules les fautes permanentes sont prises
en compte. Ces fautes sont détectées au moyen de « chien de garde » dont la
durée est calculée en fonction des durées d'exécution des opération de calcul
et de communication. Nous travaillons dans deux directions : la première pour
laquelle nous avons des résultats théoriques solides ne prend en compte que
les fautes des opérateurs (processeurs) du graphe d'architecture, les moyens
de communications étant supposés fiables, la seconde, qui est beaucoup plus
complexe, prend en compte les fautes des opérateurs et des moyens de
communications. Cette deuxième direction est fondée sur un calcul des
distributions-ordonnancements possibles relativement aux différents cas de
fautes acceptés, qui sont ensuite fusionnés en supprimant toutes les
solutions redondantes. Cependant, nous avons encore du travail théorique à
effectuer avant de pouvoir proposer une heuristique fiable. En ce qui
concerne la première direction nous proposons deux types d'heuristiques : le
premier type utilise la redondance spatiale des opérations de calcul et des
opérations de communication dans le cas de moyens de communications
point-à-point <ref id="id2592282" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#cite:icdcs01" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>, la seconde utilise la redondance spatiale des
opérations de calcul et la redondance temporelle des opérations de
communication dans le cas de moyens de communications multi-point.
</p></subsection></fondements><domaine id="uid14"><bodyTitle id="id2590263">Application Domains</bodyTitle><subsection id="uid15"><bodyTitle id="id2590273">Application Domains</bodyTitle><keyword id="id2590276">télécommunications</keyword><keyword id="id2590279">automobile</keyword><keyword id="id2590282">robotique mobile</keyword><keyword id="id2590285">traitement d'image</keyword><keyword id="id2590288">traitement du signal</keyword><p id="id2590292">Les travaux de recherche que nous menons concernent certains laboratoires
académiques utilisateurs de nos résultats sur l'ordonnancement ou de nos
méthodes de prototypage rapide et d'implantation optimisés permettant le « codesign » pour réaliser des applications nouvelles, particulièrement
complexes, que les méthodes traditionnelles ne permettent pas d'envisager
habituellement dans le cadre de la recherche. Ils concernent aussi les
industriels concevant et/ou réalisant des systèmes distribués temps réel
embarqués complexes. On trouve ces derniers principalement dans les domaines
du transport et plus particulièrement de l'automobile dans lequel nous nous
sommes particulièrement impliqués ces dernières années, de la robotique
mobile (AGV Automated Guided Vehicule) et plus particulièrement du CyCab
développé en collaboration avec ROBOSOFT, des télécommunications (nouvelles
normes de téléphone mobile UMTS, compression d'image JPEG2000 ou de vidéo
MPEG4, radio logicielle), du traitement du signal multicapteur (radar,
sonar), ou du traitement d'image (navigation automatique). Dans le cadre de
projets nationaux, européens, ou de contrat spécifiques nous avons des
collaborations avec les principaux industriels de ces domaines. Nos travaux
intéressent aussi les éditeurs de logiciels positionnés sur le créneau des
environnements logiciels d'aide à la conception et à la réalisation
d'applications distribuées temps réel complexes.

</p></subsection></domaine><logiciels id="uid16"><bodyTitle id="id2590344">Software</bodyTitle><subsection id="uid17"><bodyTitle id="id2590353">SynDEx</bodyTitle><participants id="id2590356" category="None"><person id="id2590360"><firstname id="id2590361">Julien</firstname><lastname id="id2590364">Forget</lastname></person><person id="id2590368"><firstname id="id2590370">Thierry</firstname><lastname id="id2590372">Grandpierre</lastname></person><person id="id2590376"><firstname id="id2590378">Christophe</firstname><lastname id="id2590381">Macabiau</lastname></person><person id="id2590385"><firstname id="id2590386">Yves</firstname><lastname id="id2590389">Sorel</lastname></person></participants><keyword id="id2590393">CAO niveau système</keyword><keyword id="id2590395">prototypage rapide</keyword><keyword id="id2590398">implantation</keyword><keyword id="id2590401">heuristique
d'optimisation</keyword><keyword id="id2590404">génération de code processeur</keyword><keyword id="id2590408">génération de VHDL</keyword><p id="id2590412">Le logiciel de CAO niveau système <i id="id2590417">SynDEx</i> concrétise la
méthodologie AAA pour le prototypage rapide et l'implantation optimisés
d'applications temps réel embarquées. Il permet de spécifier l'algorithme
d'application et l'architecture multicomposant, de faire une adéquation
correspondant à une implantation optimisée de l'algorithme sur
l'architecture, dont le résultat est une simulation temporelle de l'exécution
de l'algorithme sur l'architecture. Il génère automatiquement pour chaque
processeur un exécutif temps réel dédié, ou un fichier de configuration pour
un exécutif temps réel résident standard. Les exécutifs dédiés sont produits
à partir de bibliothèques de noyaux d'exécutif extensibles et portables
dépendant des processeurs de l'architecture. Actuellement il supporte les
architectures multiprocesseur à base de stations de travail UNIX, de
processeurs i80x86, de processeurs de traitement du signal TMS320C40,
TMS320C60 et ADSP21060, de microcontrôleurs MPC555, MC68332 et i80C196. Il
permet de faire naturellement de la conception conjointe logiciel/matériel en
connectant à ces processeurs des circuits intégrés spécifiques ASIC ou FPGA
contenant une interface de communication adéquate. SynDEx est utilisé aussi
bien par des universitaires que par des industriels. Il est distribué
gratuitement sur le web à l'url :
<ref id="id2590458" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://syndex.org" location="extern" xmlns:xlink="http://www.w3.org/1999/xlink" xyref="3704299477026">http://syndex.org</ref>.

</p></subsection><subsection id="uid18"><bodyTitle id="id2590482">SynDEx-IC</bodyTitle><participants id="id2590486" category="None"><person id="id2590489"><firstname id="id2590491">Julien</firstname><lastname id="id2590494">Forget</lastname></person><person id="id2590498"><firstname id="id2590499">Thierry</firstname><lastname id="id2590502">Grandpierre</lastname></person><person id="id2590506"><firstname id="id2590508">Linda</firstname><lastname id="id2590510">Kaouane</lastname></person><person id="id2590514"><firstname id="id2590516">Yves</firstname><lastname id="id2590519">Sorel</lastname></person></participants><p id="id2590524">Nous développons, en collaboration avec l'équipe A2SI de l'ESIEE, le logiciel
de CAO de circuit intégrés <i id="id2590531">SynDEx-IC</i>, pour la conception et la
réalisation de composants non programmables de type ASIC ou FPGA. Il permet
de spécifier l'algorithme d'application sous la même forme que dans SynDEx,
et de synthétiser automatiquement le chemin de donnée et le chemin de
contrôle du circuit intégré, conduisant à un programme VHDL structurel
synthétisable. Ce dernier est actuellement utilisé pour générer du code pour
FPGA de la famille Xilinx. Des composants réalisés avec SynDEx-IC peuvent à
leur tour être utilisés dans SynDEx pour spécifier des architectures
multicomposants comportant des composants programmables et non
programmables.
</p><p id="id2590549"><i id="id2590550">Actuellement les deux logiciels sont séparés, mais nous visons à terme
l'intégration de SynDEx-IC dans SynDEx afin d'offir un environnement unique
couvrant l'ensemble du cycle de développement pour le prototypage rapide et
l'implantation optimisés permettant le « codesign » d'applications très
complexes.
</i></p></subsection></logiciels><resultats id="uid19"><bodyTitle id="id2590574">New Results</bodyTitle><subsection id="uid20"><bodyTitle id="id2590582">Modèles d'algorithme, d'architecture et d'implantation</bodyTitle><participants id="id2590587" category="None"><person id="id2590591"><firstname id="id2641930">Liliana</firstname><lastname id="id2641933">Cucu</lastname></person><person id="id2641936"><firstname id="id2641938">Julien</firstname><lastname id="id2641940">Forget</lastname></person><person id="id2641944"><firstname id="id2641946">Frédérique</firstname><lastname id="id2641949">Gager</lastname></person><person id="id2641953"><firstname id="id2641954">Thierry</firstname><lastname id="id2641957">Grandpierre</lastname></person><person id="id2641961"><firstname id="id2641963">Nicolas</firstname><lastname id="id2641966">Pernet</lastname></person><person id="id2641969"><firstname id="id2641971">Yves</firstname><lastname id="id2641974">Sorel</lastname></person></participants><p id="id2641979">Afin de traiter au même niveau les répétitions finies et infinies dans les
graphes d'algorithmes nous avons défini une fonction permettant de décrire
toutes les combinaisons possibles d'arcs de dépendance reliant des opérations
répétitives. Ce nouveau modèle permet ainsi de décrire des algorithmes très
complexes consommant et produisant des données à des rythmes différents. Cela
généralise dans la théorie des graphes le modèle SDF (Synchronous Data Flow)
proposé dans l'environnement logiciel Ptolemy par E. Lee
<ref id="id2641996" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:ptolemy11" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. Nous avons ainsi pu donner un sens précis à la notion
de périodicité associée à chaque opération que l'on retrouve
traditionnellement dans le modèle maintenant classique proposé par Liu et
Layland <ref id="id2642022" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:LiuLayland73" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/> d'un ensemble de tâches temps réel, ces
dernières correspondant à notre notion d'opération (sommet du graphe
d'algorithme). Nous étudions actuellement la possibilité d'introduire dans ce
modèle les nouveaux arc de données sans précédence et de précédence sans
données que nous avons proposés l'année dernière.
</p><p id="id2642052">La notion d'échéance (deadline) du modèle classique n'étant pas suffisante
pour exprimer des contraintes temps réel entre une entrée et une sortie, ce
qui est souvent nécessaire dans les applications industrielles (par exemple
temps s'écoulant entre l'appui sur la pédale de frein et l'arrêt des roues
freinées qui peut entraîner l'exécution d'un ensemble d'opérations réalisant
la commande appropriée), nous avons donné une définition de la contrainte de
latence appliquée à un couple quelconque d'opérations reliées par un chemin
orienté <ref id="id2642068" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="#footcite:rts2002refer" location="biblio" xmlns:xlink="http://www.w3.org/1999/xlink"/>. Les opérations d'un tel couple peuvent
donc, a fortiori, des opérations d'entrée et de sortie. Nous avons établi un
lien entre la notion de chemin orienté dans un graphe d'algorithme et la
notion de contrainte de latence appliquée à un couple d'opérations de ce
graphe. Cela nous a servi dans la recherche des conditions
d'ordonnançabilités que nous avons données par la suite.
</p><p id="id2642097">Nous avons étudiés comment les arcs de données sans précédence pouvaient être
utilisés pour délimiter des sous graphes d'algorithmes n'étant pas temps réel
critique car ils n'imposent plus d'ordre entre les données produites par la
partie critique et consommées par la partie non critique. Nous avons utilisé
ce principes pour spécifier des opérations « boîte noire » pour lesquelles
on ne peut assurer un fonctionnement critique. Les « boîtes noires » ont
été testées dans le cas d'opérations d'entrées associées à des capteurs
à ultrason utilisés dans une application d'arrêt sur obstacle implantée sur
notre CyCab.
</p><p id="id2642126">Nous avons exploité le conditionnement, qui sert à exprimer les différentes
alternatives de sous-graphes possibles relativement à un arc de
conditionnement, dans le cadre de la spécification de machines à état finies
servant à décrire l'enchaînement d'algorithmes de calcul. Du point de vue de
la spécification, pour chaque sommet du graphe d'algorithme toutes les
données d'entrées doivent être présentes pour que le sommet puisse être
exécuté afin de produire ses données de sorties. Cela veut dire que l'on
considère les données d'entrée d'une opération comme toujours présentes,
c'est-à-dire remises à jour à chaque réaction ou répétition infinie du graphe
d'algorithme, et donc les sorties de l'opération sont elles aussi remises à
jour à chaque réaction. Cependant pour un conditionnement dont les différents
sous-graphes alternatifs peuvent produire des sorties différentes, mais où
pour l'instant toutes les sorties sont produites à chaque réaction. Afin
d'avoir une sémantique d'interface cohérente avec les langages synchrones
Esterel et Signal, nous étudions l'introduction de la notion d'« événement
absent », ou plutôt de « non-événement » relativement à un autre signal,
dans notre modèle d'algorithme afin d'exploiter cette propriété lors de
l'implantation pour n'exécuter que ce qu'il est nécessaire d'exécuter. Enfin,
nous avons proposé une traduction bien adaptée à l'implantation sur des
architectures distribuées, dans le sens où elle minimise les communications
interprocesseur, d'un graphe flot de contrôle représentant une machine à état
finie en un graphe de dépendances données conditionné factorisé. Ceci conduit
à un modèle unifié permettant de faire cohabiter des spécifications issues de
langages de description de diagramme d'état (dit aussi de comportement) comme
StateChart, StateFlow de Simulink, ou SyncChart d'Esterel Technology, etc, et
des spécifications issues de langages de description de calculs scientifiques
comme Matlab-Simulink, Scicos, C, etc.
</p><p id="id2642212">Nous avons utilisé les mémoires RAM de données pour la spécification
d'architectures multi-DSP à mémoire partagées. Nous sommes en train d'étudier
comment faire évoluer ce modèle de mémoire afin de mieux prendre en compte
les caractéristiques fines des hiérarchies de mémoire complexes (cache,
mémoires internes et externes, bans multiples) des nouveaux DSP. Nous avons
utilisé les mémoires SAM (Sequential Access Memory) de données pour la
spécification d'architectures à mémoire distribuées utilisant du passage de
message, dans le cas de bus diffusant et non diffusant.
</p><p id="id2642227">Le modèle d'implantation dans le cas multicomposant a évolué pour prendre en
compte les nouvelles fonctionnalités, des modèles d'algorithme et
d'architecture, décrites ci-dessus. Il faut noter que notre modèle
d'implantation est implicitement à mémoire rémanente. En effet, lors de la
tranformation de graphe qui permet de passer du graphe d'algorithme influencé
par le graphe d'architecture, au graphe d'implantation, nous créons autant de
sommets d'allocation qu'il y a de dépendance de données, ces sommets
d'allocation ayant pour rôle lors de l'ultime transformation conduisant à la
génération de code, de créer une variable partagée par le code de l'opération
productrice et le code de l'opération consommatrice. Ainsi cette variable
garde sa valeur tant qu'elle n'est pas modifiée lors d'une écriture par
l'opération productrice. Dans le cas de la synthèse de circuit intégré, nous
avons étendu le modèle d'implantation précédent, qui ne prenait en compte que
l'aspect répétition (nid de boucles), afin qu'il puisse aussi prendre en
compte l'aspect conditionnement. Ceci permet de synthétiser un chemin de
contrôle, maintenant complet, traitant à la fois la répétition et le
conditionnement.
</p></subsection><subsection id="uid21"><bodyTitle id="id2642272">Optimisations</bodyTitle><p id="id2642276">En ce qui concerne l'optimisation de la distribution et de l'ordonnancement
dans le cas multicomposant, nous avons modifié les heuristiques pour prendre
en compte les nouvelles fonctionnalités du modèle d'algorithme et les avons
principalement améliorées pour qu'elles s'exécutent plus rapidement.
</p><p id="id2642292">La plupart de nos efforts ont porté sur l'optimisation de l'ordonnancement
monoprocesseur. Nous avions proposé l'année dernière un algorithme optimal
d'ordonnancement d'un système temps réel sans préemption sur monoprocesseur
avec contraintes multiples de précédences, de périodicités et de latences.
Nous avons donné une condition d'ordonnançabilité, fondée sur une
hyper-période (PPCM de l'ensemble des périodes de toutes les opérations du
graphe d'algorithme), pour un système temps réel sans préemption sur
monoprocesseur avec contraintes multiples de précédences, et de périodicités.
Cela permet d'arrêter l'algorithme d'ordonnancement optimal dès que
l'hyper-période est atteinte. Par ailleurs, nous avons donné une condition
d'ordonnançabilité, fondée sur des relations entre chemins reliant des
couples d'opérations sur lesquels sont définies les latences, pour un système
temps réel sans préemption sur monoprocesseur avec contraintes multiples de
précédences et de latences. Nous travaillons actuellement à donner une
condition d'ordonnançabilité pour un système temps réel sans préemption sur
monoprocesseur avec contraintes multiples de précédences, de périodicités et
de latences, en nous servant du résultat obtenu l'année dernière établissant
une relation entre périodicité et latence. Nous cherchons aussi à étendre le
résultat obtenu pour des périodicités strictes à des périodicités avec « gigue », ce qui est plus réaliste. Nous envisageons d'étudier les
conséquences de l'introduction de la préemption dans ces ordonnancements.

</p></subsection><subsection id="uid22"><bodyTitle id="id2642338">Génération d'exécutif et de « net-list »</bodyTitle><p id="id2642344">Nous avons principalement modifié la génération automatique d'exécutif dédiés
pour prendre en compte les nouvelles fonctionnalités du modèle d'architecture
à savoir les mémoires de données partagées et les bus diffusants. Nous avons
aussi étudié, en collaboration avec le laboratoire COSI de l'ESIEE, la
configuration de systèmes d'exploitation temps réel résidents et libres tels
que RTlinux et RTAI.
</p><p id="id2642361">Nous avons poursuivi les travaux en collaboration avec le laboratoire A2SI de
l'ESIEE pour développer un générateur de « net-list » basé sur du VHDL
structurel dans le cas des circuits reconfigurables FPGA de Xilinx. Le VHDL
produit est utilisé pour synthétiser le code de configuration des FPGA à
l'aide de l'outil de synthèse LeonardoSpectrum de Mentor Graphics.
</p></subsection><subsection id="uid23"><bodyTitle id="id2642385">Tolérance aux fautes</bodyTitle><p id="id2642388">Les travaux en collaboration avec le projet BIP, qui font suite à notre ARC
TOLERE, ont consisté à améliorer l'heuristique proposée les années
précédentes car elle engendrait trop de communications interprocesseur. Cette
heuristique utilise la redondance spatiale des opérations de calcul et des
opérations de communication dans le cas de moyens de communications
point-à-point. Elle est fondée sur la réplication automatique des opérations
du graphe de l'algorithme en fonction des ressources matérielles que l'on
accepte de voir tomber en panne. Elle a été implantée dans SynDEx. Nous
l'avons comparée à la méthode la plus proche existant dans la littérature
mais qui est restreinte, par rapport à la notre, aux architectures
multiprocesseur homogènes. Pour cela nous avons réalisé un générateur
aléatoire de graphes d'algorithme et d'architecture qui nous a permi d'une
part de montrer l'efficacité de notre heuristique, et d'autre part de mesurer
le surcoût dû à la tolérance aux fautes par rapport au cas où on ne la prend
pas en compte.
</p></subsection><subsection id="uid24"><bodyTitle id="id2642438">Logiciel SynDEx</bodyTitle><p id="id2642442">La version 6 du logiciel SynDEx, maintenant programmée en Caml/Tk plutôt que
C<formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML" overflow="scroll" xmlns:xlink="http://www.w3.org/1999/xlink"><msup xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1998/Math/MathML"><mrow xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1998/Math/MathML"/><mrow xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1998/Math/MathML"><mo xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1998/Math/MathML">+</mo><mo xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1998/Math/MathML">+</mo></mrow></msup></math></formula>, offre les nouvelles fonctionnalités de spécification d'algorithme
avec hiérarchie, conditionnement et répétition. Elle a été mise au milieu de
l'année en distribution gratuite sur le web, sous copyright INRIA. Elle est
accompagnée d'un manuel d'utilisation, d'un tutorial, d'un jeu d'exemples
représentatifs, d'une bibliothèque d'opérations de calcul scientifique
inspirée de celle de Simulink, et d'un noyau d'exécutif en C pour station de
travail Unix et Linux. Les nouvelles fonctionnalités conduisant à augmenter
de façon importante la complexité de l'heuristique d'optimisation de la
distribution et de l'ordonnancement, un travail important de réécriture de
cette dernière a dû être fait pour obtenir des performances équivalentes à
celles de la version 5 sur des applications industrielles conséquentes
comprenant plusieurs centaines de sommets pour le graphe d'algorithme et une
quinzaine de sommets pour le graphe de l'architecture. La syntaxe des
fichiers de sauvegarde des applications SynDEx (.sdx) ayant profondément
changé, nous fournissons dans la distribution de SynDEx V6 un traducteur de
V5 en V6. La plupart des applications réalisées avec SynDEx V5, dont
plusieurs applications industrielles, ont été portées avec succès en V6.
SynDEx V6.6 est actuellement téléchargeable à l'url :
<ref id="id2642512" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://syndex.org" location="extern" xmlns:xlink="http://www.w3.org/1999/xlink" xyref="3704299477026">http://syndex.org</ref>.
</p><p id="id2642532">Nous avons implanté dans SynDEx V6 l'algorithme optimal d'ordonnancement sans
préemption avec contraintes multiples de précédences, de périodicités et de
latences, d'un algorithme applicatif sur monoprocesseur.
</p><p id="id2642544">Un noyau d'exécutif pour le processeur de traitement du signal TMS320C60 a
été développé en collaboration avec le laboratoire ARTIST de l'INSA et le
laboratoire des télécommunications de MITSUBISHI ELECTRIC ITE. Ce noyau est
écrit en C plutôt qu'en assembleur comme nous le faisions jusqu'à présent.
Ses performances par rapport à l'assembleur étant bonnes, il pourra donc par
la suite être adapté à tout autre processeur possédant un compilateur C, ce
qui permettra un gain de temps important dans la réalisation de nouveaux
noyaux.

</p></subsection></resultats><contrats id="uid25"><bodyTitle id="id2642565">Contracts and Grants with Industry</bodyTitle><subsection id="uid26"><bodyTitle id="id2642574">ACOTRIS</bodyTitle><participants id="id2642577" category="None"><person id="id2642581"><firstname id="id2642582">Christophe</firstname><lastname id="id2642585">Macabiau</lastname></person><person id="id2642589"><firstname id="id2642591">Yves</firstname><lastname id="id2642594">Sorel</lastname></person></participants><p id="id2642599">Le projet national RNTL ACOTRIS labellisé en 2001 comprend les partenaires
suivants : CEA-LIST, CS-SI, INRIA-ESPRESSO-OSTRE, MBDA, SITIA. Il vise à
proposer un environnement complet de spécifications des fonctionnalités, des
architectures matérielles et des contraintes temps réel à l'aide d'une « extention temps réel embarquée de UML », permettant de faire de la
vérification formelle avec le langage synchrone Signal (projet ESPRESSO de
l'INRIA) et de l'implantation optimisée avec AAA/SynDEx d'applications
distribuées temps réel embarquées. Nous avons terminé cette année
l'application de référence d'appariement d'images en temps réel de MBDA
réalisée avec SynDEX V6 sur une architecture multi-station de travail Unix.
Nous avons participé à l'application de référence marine réalisée par CS-SI
et SITIA. Nous avons participé à la réalisation d'une passerelle entre UML et
Signal. Nous avons participé à la réalisation d'une interface entre Signal V4
et SynDEx V6.

</p></subsection><subsection id="uid27"><bodyTitle id="id2642646">MBDA</bodyTitle><participants id="id2642649" category="None"><person id="id2642652"><firstname id="id2642654">Christophe</firstname><lastname id="id2642657">Macabiau</lastname></person><person id="id2642661"><firstname id="id2642662">Julien</firstname><lastname id="id2642665">Forget</lastname></person><person id="id2642669"><firstname id="id2642671">Yves</firstname><lastname id="id2642674">Sorel</lastname></person></participants><p id="id2642679">L'application de référence d'appariement d'images en temps réel, effectuée
avec MBDA dans le cadre du projet ACOTRIS, nous a conduit à signer un contrat
de collaboration pour l'aide à la conception avec AAA/SynDEx d'une nouvelle
application industrielle de poursuite automatique de cible par traitement
d'image multi-capteur. Cette dernière met en œuvre des algorithmes de
traitement d'image en temps réel particulièrement complexes, utilisant des
filtres de Kalman pour faire de la prédiction, et des modèles de Markov pour
faire de l'estimation de mouvement.

</p></subsection><subsection id="uid28"><bodyTitle id="id2642700">ECLIPSE</bodyTitle><participants id="id2642703" category="None"><person id="id2642707"><firstname id="id2642708">Nicolas</firstname><lastname id="id2642711">Pernet</lastname></person><person id="id2642714"><firstname id="id2642716">Yves</firstname><lastname id="id2642719">Sorel</lastname></person></participants><p id="id2642724">Le projet national RNTL ECLIPSE labellisé en 2002 comprend les partenaires
suivants : CS-SI, INRIA-METALAU-OSTRE, PSA, SAPHIR-CONTROL, SITIA. Il vise à
fournir un environnement logiciel libre de
spécification/simulation/implantation optimisée d'algorithme de
contrôle-commande fondé sur les logiciels libres Scilab/Scicos et SynDEx de
l'INRIA. Nous travaillons avec le projet METALAU sur l'interfaçage entre
Scicos et SynDEx, ce qui nous a conduit à revoir légèrement la sémantique de
AAA/SynDEx sur les aspects rémanence des signaux, afin qu'elle soit cohérente
avec celle de Scicos.

</p></subsection><subsection id="uid29"><bodyTitle id="id2642747">EAST-EEA</bodyTitle><participants id="id2642750" category="None"><person id="id2642754"><firstname id="id2642756">Frédéric</firstname><lastname id="id2642759">Gager</lastname></person><person id="id2642763"><firstname id="id2642764">Yves</firstname><lastname id="id2642767">Sorel</lastname></person></participants><p id="id2642772">Le projet européen ITEA EAST-EEA labellisé en 2001 comprend les partenaires
suivants : AB Volvo (S), AUDI AG (D), BMW AG (D), DaimlerChrysler AG (D),
Centro Ricerche Fiat (I), Opel Powertrain GmbH (D), PSA Peugeot Citroen (F),
Renault (F), Finmek Magneti Marelli Sistemi Elettronici (I), Robert Bosch
GmbH (D), Siemens VDO Automotive AG (D), Siemens VDO Automotive S.A.S. (F),
Valeo (F), ZF Friedrichshafen AG (D), ETAS GmbH (D), Siemens SBS - C-LAB (D),
VECTOR Informatik (D), CEA-LIST (F), IRCCyN (F), INRIA-OSTRE-TICK-VERTECS
(F), Linköping University of Technology (S), LORIA (F), Mälardalen University
(S), Paderborn University - C-LAB (D), Royal Institute of Technology
(S),Technical University of Darmstadt (D). Il fait suite au projet national
AEE qui comprenait les constructeurs et équipementiers Français, l'IRCCyN, le
LORIA et l'INRIA et dont l'objet était les méthodes de conception
d'architectures électroniques embarquée pour l'automobile. Nous avons
principalement participé dans le cadre des lots 2 et 3 à la définition des
exigences pour les applications distribuées temps réel embarquées de
l'automobile, et à la définition d'un langage de description d'architecture
couvrant tout le cycle de développement depuis l'architecture véhicule,
jusqu'à l'architecture opérationnelle, en passant par les architectures
fonctionnelles et matérielles. Ce langage fondé sur le standard UML 2.0
utilise les résultats obtenus dans le projet national AEE, à savoir le
langage d'architecture AIL et le gestionnaire d'échange inter-composant (« middleware ». Nous devrions commencer l'année prochaine à travailler dans le
cadre du lot 3 sur les aspects validation/vérification et sur les aspects
implantation optimisée et génération automatique de code.
</p><p id="id2642812">Nous collaborons avec l'action TICK et l'équipe SPORT du laboratoire I3S de
Sophia Antipolis afin de mieux comprendre les liens qu'il y a entre les
approches flot de contrôle utilisées dans UML 2.0 pour décrire des
comportements, et les approches flot de données utilisées pour décrire des
calculs scientifiques. Dans ce but nous avons réalisé une interface entre le
logiciel graphique de description de diagramme d'état SyncChart et SynDEx.

</p></subsection><subsection id="uid30"><bodyTitle id="id2642835">P2I</bodyTitle><participants id="id2642838" category="None"><person id="id2642842"><firstname id="id2642844">Julien</firstname><lastname id="id2642846">Forget</lastname></person><person id="id2642850"><firstname id="id2642852">Yves</firstname><lastname id="id2642855">Sorel</lastname></person></participants><p id="id2642860">Le projet européen ITEA P2I labellisé en 2002 comprend les partenaires
suivants : ESTEREL TECHNOLOGY (F), NOKIA Corporation (FN), THALES
Communications (F), LIFL (F), INRIA-TICK-OSTRE (F), Tampere University of
Technology (FN), University of Turku (FN). Il fait suite au projet RNRT
PROMPT sur la programmation de SoC (System on Chip) pour les
télécommunication qui s'est terminé en 2001. Il vise à proposer un
environnement complet de spécifications des fonctionnalités, des
architectures matérielles et des contraintes temps réel à l'aide d'une
extention temps réel embarquée de UML, permettant de faire de la vérification
avec les langages synchrones Esterel et Lustre qui cohabitent maintenant dans
le logiciel Esterel Studio, et de l'implantation optimisée avec AAA/SynDEx
d'applications distribuées temps réel embarquées. L'environnement sera testé
sur des applications de télécommunications proposées par les partenaires
industriels THALES-COMMUNICATION et NOKIA. L'environnement pourra à terme
être industrialisé par ESTEREL-TECHNOLOGY.

</p></subsection></contrats><international id="uid31"><bodyTitle id="id2642907">Other Grants and Activities</bodyTitle><subsection id="uid32"><bodyTitle id="id2642916">Actions nationales</bodyTitle><subsection id="uid33"><bodyTitle id="id2642926">Collaborations internes à l'INRIA</bodyTitle><simplelist id="id2642931"><li id="id2642934"><p id="id2642936">BIP : nous continuons les travaux débutés dans l'ARC TOLERE sur les
systèmes distribués temps réel embarqués tolérant aux fautes. Nous avons aussi
des réflexions communes sur les problèmes d'ordonnancement régulé (« feed-back
scheduling »).</p></li><li id="id2642951"><p id="id2642952">ESPRESSO : nous travaillons depuis de nombreuses années avec l'équipe à
l'origine du langage synchrone Signal. Nous avions réalisé il y a quelques
années une interface entre Signal H2 et SynDEx V4. Dans le cadre du projet
RNTL ACOTRIS nous avons repris ces travaux afin d'une part d'être compatible
avec les nouvelles versions de Signal et de SynDEx, et d'autre part
d'approfondir la manière dont peuvent être traités dans AAA/SynDEx des
programmes Signal multi-horloges (exochrones), plus particulièrement en
essayant de comprendre l'impact de la notion d'« événement absent » dans
Signal.</p></li><li id="id2642969"><p id="id2642970">IMARA : SynDEx est utilisé pour programmer et optimiser les applications
s'exécutant en temps réel sur le véhicule électrique urbain CyCab conçu dans le
projet IMARA. Ce véhicule possède une architecture multi-processeur comprenant
de deux à quatre microcontrôleurs MPC555 et un PC embarqué sous Linux,
connectés ensemble par un bus CAN. Nous visons à étendre nos techniques de
programmation et d'optimisation à l'ensemble des véhicules développés chez
IMARA. Pour cela nous participons à l'expérience PREVISU consistant à mettre à
disposition aux visiteurs du site de l'INRIA Rocquencourt une flotte hétérogène
de véhicules semi-autonomes, ainsi qu'aux projets européens CyberCars et
Carsence.</p></li><li id="id2643004"><p id="id2643005">METALAU : nous avons co-encadré une thèse qui s'est terminée l'année
dernière dont une partie du sujet consistait à produire du code temps réel
distribué à partir de Scicos en utilisant AAA/SynDEx. Dans le cadre de cette
thèse une version préliminaire d'une interface entre les deux logiciels
libres de l'INRIA avait été réalisée. Cela nous a permis de participer au
projet RNTL ECLIPSE dont le but est de proposer un environnement sans rupture
de spécification/simulation/implantation fondé sur Scicos et SynDEx,
permettant d'analyser et d'exploiter au niveau de la spécification (appelée
aussi modélisation dans Scicos) les résultats obtenus en temps réel après
implantation temps réel optimisée (SynDEx).</p></li><li id="id2643039"><p id="id2643040">SOSSO : évidemment depuis que notre équipe est séparée du projet SOSSO
nous continuons à collaborer ensemble sur le sujet commun qui nous conduit à
rester dans le même projet pendant de nombreuses années, à savoir, l'étude
des liens entre l'automatique et l'informatique temps réel embarquée. Nous
avons commencé à encadrer une thèse commune dans laquelle il s'agit de faire
de l'ordonnancement adaptatif à travers une loi de commande (ordonnancement
régulé) afin de traiter des problèmes mélangeant « temps réel strict » et
« temps réel souple ». Nous envisageons de tester différentes stratégies
d'ordonnancement adaptatif dans le cas d'applications de commande réalisées
pour le CyCab.</p></li><li id="id2643074"><p id="id2643075">TICK : afin de préparer le projet ITEA P2I nous collaborons depuis un an
en vue de fournir une interface efficace entre Esterel et SynDEx. Pour cela
nous étudions une modification de la sémantique de notre modèle d'algorithme
afin de pouvoir exploiter le résultat d'un nouveau compilateur d'Esterel
fondé sur une structuration des programmes à l'aide de la hiérarchie des
états, semblable à la hiérarchie des horloges de Signal, mettant en évidence
les parties du programme qui sont actives et celles qui ne le sont pas,
plutôt qu'un réseau d'automates mis à plat dans lequel cette information est
perdue, comme c'est le cas pour la compilation de circuit. Ici encore nous
sommes amenés à étudier ce que veut dire la notion d'« événement absent »
du point de vue de AAA/SynDEx.
</p></li></simplelist></subsection><subsection id="uid34"><bodyTitle id="id2643119">Collaborations avec d'autres laboratoires</bodyTitle><simplelist id="id2643123"><li id="id2643126"><p id="id2643128">ESIEE COSI : nous cherchons principalement à analyser et apporter des
solutions pour réduire la rupture qui existe entre la phase
spécification/simulation de l'automaticien et la phase d'implantation à
l'aide d'électronique numérique programmable et non programmable de
l'informaticien et du concepteur de circuit. Pour cela nous étudions la
robustesse d'algorithmes de commande relativement à des stratégies
d'ordonnancement dans la lignée des travaux effectués à l'université de Lund
en Suède.
Nous continuons à travailler sur le simulateur, programmé en Scicos, du CyCab
réalisé les années précédentes. Nous travaillons aussi à réaliser pour le
CyCab des applications d'aide à la conduite à l'aide de capteurs à faibles
coûts. Nous avons réalisé avec SynDEx V6 une application d'arrêt sur obstacle
utilisant des capteurs ultrasons très simples, conçus par le laboratoire
COSI. Nous étudions la possibilité de faire de l'évitement d'obstacles et du
déplacement en train virtuel de CyCabs, en ajoutant aux capteurs ultrason des
caméras à faibles coûts type webcam. L'objectif est de compenser la
rusticité des capteurs par des traitements complexes distribués sur les
MPC555.</p></li><li id="id2643168"><p id="id2643170">ESIEE A2SI : nous collaborons depuis plusieurs années afin d'étendre
AAA/SynDEx à la synthèse de circuit intégrés spécifiques. Une première thèse
a conduit à un modèle d'implantation de circuit intégré à partir de la même
spécification d'algorithme que celle utilisée pour les implantations
multiprocesseur dans AAA/SynDEx. Ce modèle qui était incomplet car il ne
traitait, pour les structures de contrôle, que l'équivalent en flot de
données des boucles, a été étendu dans le cadre d'une seconde thèse, afin de
traiter aussi le conditionnement, équivalent à la structure de contrôle
« If...Then...Else ». Ceci permet de synthétiser complètement le
chemin de contrôle et de données du circuit intégré, dont la fonctionnalité à
été spécifiée sous la forme d'un graphe de dépendances de données conditionné
factorisé. Cette synthèse automatique est dite optimisée car nous cherchons à
l'aide d'heuristiques de trouver le meilleur compromis
surface/latence=cadence à partir d'une caractérisation des opérations de
l'algorithme relativement aux éléments de bibliothèque VHDL structurel
synthétisable, dont nous nous servons pour produire le code « net-list » du
circuit.
</p></li></simplelist></subsection><subsection id="uid35"><bodyTitle id="id2643218">Collaboration avec ROBOSOFT</bodyTitle><participants id="id2643222" category="None"><person id="id2643226"><firstname id="id2643228">Frédéric</firstname><lastname id="id2643231">Gager</lastname></person><person id="id2643234"><firstname id="id2643236">Rémy</firstname><lastname id="id2643239">Kocik</lastname></person><person id="id2643243"><firstname id="id2643244">Yves</firstname><lastname id="id2643247">Sorel</lastname></person></participants><p id="id2643252">Le CyCab est industrialisé par ROBOSOFT avec qui nous avons collaboré les
années précédentes pour réaliser un noyau d'exécutif SynDEx V5 pour le
microcontrôleur MPC555 et le PC embarqué sous Linux communicant par le bus
CAN. Nous avons porté ce noyau ainsi que l'application de conduite manuelle du
CyCab sur SynDEx V6, qui à terme va remplacer SynDEx V5. Chez ROBOSOFT les
nouvelles générations de robots utilisent la même architecture matérielle
extensible en nombre de processeurs utilisant des MPC555, et le PC embarqué
sous Linux et communicant par le CAN. Nous coopérons avec eux afin de répondre
aux besoins des nouvelles applications qui seront développées sur ces robots.
</p></subsection><subsection id="uid36"><bodyTitle id="id2643292">Collaboration avec l'INSA et MITSUBISHI ELECTRIC ITE</bodyTitle><participants id="id2643296" category="None"><person id="id2643300"><firstname id="id2643301">Thierry</firstname><lastname id="id2643304">Grandpierre</lastname></person><person id="id2643308"><firstname id="id2643310">Yves</firstname><lastname id="id2643312">Sorel</lastname></person></participants><p id="id2643318">Nous collaborons depuis plusieurs années avec le laboratoire ARTIST de l'INSA
de Rennes qui a réalisé une interface entre AVS, outil de
spécification/simulation d'algorithmes de traitement d'image, et SynDEx. Dans
le cadre de cette collaboration nous avions réalisé l'année dernière un noyau
d'exécutif pour le processeur de traitement du signal TMS320C60. Ce dernier a
été utilisé pour spécifier et implanter avec AVS/SynDEx des applications de
codage/décodage d'image MPEG4 sur un réseau multi-TMS320C60. MITSUBISHI
ELECTRIC ITE qui utilise le même processeur pour des applications de radio
logicielle (software-radio), participe à ces travaux. Une collaboration
tri-partite s'est établie visant à améliorer AAA/SynDEx pour des applications
de traitement du signal et des images sur des architectures multi-TMS320C60 en
tenant compte des particularités de la gestion de la mémoire de ce type de
processeur. Cela a donné lieu au lancement d'une thèse co-encadrée.
</p><p id="id2643358">Nous avons lancé une nouvelle collaboration avec le laboratoire LCST de l'INSA
sur l'utilisation de SynDEx dans le cas multi-composant, où les composants
programmables sont des TMS320C60 et les composants non programmables sont des
FPGA. Afin que les deux types de composant puissent communiquer le laboratoire
LCST a réalisé une IP capable, à l'intérieur d'un FPGA, de gérer des
communications et des synchronisations suivant le même protocole SynDEx, que
celui utilisé dans les processeurs sous la forme d'un programme réalisant un
exécutif. MITSUBISHI ELECTRIC ITE qui envisage dans le cadre de sa plateforme
de radio logicielle d'intégrer des FPGA, participe à cette collaboration.
</p></subsection></subsection><subsection id="uid37"><bodyTitle id="id2643396">Actions européennes</bodyTitle><subsection id="uid38"><bodyTitle id="id2643406">Réseau d'excellence IST ARTIST</bodyTitle><participants id="id2643410" category="None"><person id="id2643414"><firstname id="id2643416">Yves</firstname><lastname id="id2643418">Sorel</lastname></person></participants><p id="id2643422">Afin de préparer les réseaux d'excellence du 6<sup id="id2643427">e</sup> PCRD une initiative
regroupant la plupart des acteurs académiques et industriels européens du
domaine des systèmes temps réel critiques, nommée ARTIST (Advanced Real-Time
Systems), a été lancée. Elle a principalement consisté à établir dans ce
domaine un état de l'art et un état des besoins à moyen terme (« road-map »)
à la fois pour les cursus d'enseignement et pour les méthodes de conception
industrielles de systèmes temps réel embarqués critiques.

</p></subsection></subsection></international><diffusion id="uid39"><bodyTitle id="id2643453">Dissemination</bodyTitle><subsection id="uid40"><bodyTitle id="id2643461">Animation de la Communauté scientifique</bodyTitle><p id="id2643466">Yves Sorel :
</p><simplelist id="id2643470"><li id="id2643474"><p id="id2643475">est responsable du thème « Adéquation Algorithme
Architecture » du PRC-GDR ISIS (Information Signal Images et viSion),</p></li><li id="id2643485"><p id="id2643487">participe au PRC-GDR ARP (Architecture, Réseaux et système,
Parallélisme),</p></li><li id="id2643495"><p id="id2643496">participe à l'action spécifique SoC du CNRS.
</p></li></simplelist></subsection><subsection id="uid41"><bodyTitle id="id2643508">Enseignement</bodyTitle><p id="id2643512">Yves Sorel assure les cours :
</p><simplelist id="id2643518"><li id="id2643521"><p id="id2643522">« Spécification, vérification et optimisation des
systèmes distribués temps réel embarqués » à l'Ecole d'ingénieurs ESIEE de
Noisy-le-Grand,
</p></li><li id="id2643530"><p id="id2643532">« Adéquation algorithme-architecture » au DEA
« Systèmes électroniques de traitement de l'information » d'Orsay.
</p></li></simplelist></subsection><subsection id="uid42"><bodyTitle id="id2643545">Manifestations</bodyTitle><p id="id2643549">Yves Sorel fait partie du comité scientifique des conférences EUSIPCO, AAA,
GRESTSI, SYMPA, RTS.

</p></subsection></diffusion><biblio id="bibliography" html="bibliography" numero="10" titre="Bibliography"><biblStruct id="cite_rts2002refer" TEIform="biblStruct" default="NO"><analytic id="id2643587" TEIform="analytic"><title id="id2643593" TEIform="title" level="a">Real-time scheduling for systems with precedence, periodicity and latency constraints</title><author id="id2643604" TEIform="author"><persName id="id2643608" TEIform="persName"><foreName id="id2643613" TEIform="foreName" full="yes">L.</foreName><surname id="id2643622" TEIform="surname" full="yes">Cucu</surname></persName><persName id="id2643633" TEIform="persName"><foreName id="id2643638" TEIform="foreName" full="yes">R.</foreName><surname id="id2643648" TEIform="surname" full="yes">Kocik</surname></persName><persName id="id2643658" TEIform="persName"><foreName id="id2643664" TEIform="foreName" full="yes">Y.</foreName><surname id="id2643674" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2643686" TEIform="monogr"><title id="id2643694" TEIform="title" level="m">10th RTS2000 Real-Time Systems Conference, Paris</title><imprint id="id2643703" TEIform="imprint"><dateStruct id="id2643708" TEIform="dateStruct" full="yes"><month id="id2643716" TEIform="month" full="yes">mars</month><year id="id2643726" TEIform="year" full="yes">2002</year></dateStruct></imprint></monogr><note id="id2643740" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2643752" anchored="yes" place="unspecified" type="from">refer</note><note id="id2643764" anchored="yes" place="unspecified" type="userid">cite:rts2002refer</note></biblStruct><biblStruct id="cite_icsp98" TEIform="biblStruct" default="NO"><analytic id="id2643789" TEIform="analytic"><title id="id2643795" TEIform="title" level="a">Optimized Implementation of Real-Time Image Processing Algorithms on Field Programmable Gate Arrays</title><author id="id2643806" TEIform="author"><persName id="id2643810" TEIform="persName"><foreName id="id2643816" TEIform="foreName" full="yes">A.</foreName><surname id="id2643826" TEIform="surname" full="yes">Dias</surname></persName><persName id="id2643836" TEIform="persName"><foreName id="id2643842" TEIform="foreName" full="yes">C.</foreName><surname id="id2643852" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2643862" TEIform="persName"><foreName id="id2643868" TEIform="foreName" full="yes">M.</foreName><surname id="id2643878" TEIform="surname" full="yes">Akil</surname></persName><persName id="id2643888" TEIform="persName"><foreName id="id2643894" TEIform="foreName" full="yes">Y.</foreName><surname id="id2643903" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2643916" TEIform="monogr"><title id="id2643923" TEIform="title" level="m">Fourth International Conference on Signal Processing, Beijing, China</title><imprint id="id2643934" TEIform="imprint"><dateStruct id="id2643938" TEIform="dateStruct" full="yes"><month id="id2643946" TEIform="month" full="yes">octobre</month><year id="id2643956" TEIform="year" full="yes">1998</year></dateStruct></imprint></monogr><note id="id2643970" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2643982" anchored="yes" place="unspecified" type="from">refer</note><note id="id2643994" anchored="yes" place="unspecified" type="userid">cite:icsp98</note></biblStruct><biblStruct id="cite_icdcs01" TEIform="biblStruct" default="NO"><analytic id="id2644020" TEIform="analytic"><title id="id2644027" TEIform="title" level="a">Fault-Tolerant Static Scheduling for Real-Time Distributed Embedded Systems</title><author id="id2644037" TEIform="author"><persName id="id2644041" TEIform="persName"><foreName id="id2644046" TEIform="foreName" full="yes">A.</foreName><surname id="id2644056" TEIform="surname" full="yes">Girault</surname></persName><persName id="id2644066" TEIform="persName"><foreName id="id2644072" TEIform="foreName" full="yes">C.</foreName><surname id="id2644082" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2644092" TEIform="persName"><foreName id="id2644098" TEIform="foreName" full="yes">M.</foreName><surname id="id2644108" TEIform="surname" full="yes">Sighireanu</surname></persName><persName id="id2644118" TEIform="persName"><foreName id="id2644124" TEIform="foreName" full="yes">Y.</foreName><surname id="id2644134" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2644146" TEIform="monogr"><title id="id2644153" TEIform="title" level="m">21st International Conference on Distributed Computing Systems, ICDCS'01, Phoenix, USA</title><imprint id="id2644164" TEIform="imprint"><dateStruct id="id2644168" TEIform="dateStruct" full="yes"><month id="id2644177" TEIform="month" full="yes">April</month><year id="id2644186" TEIform="year" full="yes">2001</year></dateStruct></imprint></monogr><note id="id2644201" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2644213" anchored="yes" place="unspecified" type="from">refer</note><note id="id2644225" anchored="yes" place="unspecified" type="userid">cite:icdcs01</note></biblStruct><biblStruct id="cite_THTG" TEIform="biblStruct" default="NO"><monogr id="id2644250" TEIform="monogr"><title id="id2644256" TEIform="title" level="m">Modélisation d'architectures parallèles hétérogènes pour la génération automatique d'exécutifs distribués temps réel optimisés</title><author id="id2644270" TEIform="author"><persName id="id2644274" TEIform="persName"><foreName id="id2644280" TEIform="foreName" full="yes">T.</foreName><surname id="id2644290" TEIform="surname" full="yes">Grandpierre</surname></persName></author><note id="id2644303" anchored="yes" place="unspecified" type="typdoc">thèse de doctorat</note><imprint id="id2644314" TEIform="imprint"><publisher id="id2644320" TEIform="publisher"><orgName id="id2644327" TEIform="orgName" type="school">Université de Paris Sud</orgName><address id="id2644337" TEIform="address"><addrLine id="id2644342" TEIform="addrLine">Spécialité électronique</addrLine></address></publisher><dateStruct id="id2644352" TEIform="dateStruct" full="yes"><year id="id2644360" TEIform="year" full="yes">30/11/2000</year></dateStruct></imprint></monogr><note id="id2644374" anchored="yes" place="unspecified" type="classification">phdthesis</note><note id="id2644387" anchored="yes" place="unspecified" type="from">refer</note><note id="id2644399" anchored="yes" place="unspecified" type="userid">cite:THTG</note></biblStruct><biblStruct id="cite_execv4" TEIform="biblStruct" default="NO"><monogr id="id2644423" TEIform="monogr"><title id="id2644429" TEIform="title" level="m">Modèle d'exécutif distribué temps réel pour SynDEx</title><author id="id2644439" TEIform="author"><persName id="id2644445" TEIform="persName"><foreName id="id2644451" TEIform="foreName" full="yes">T.</foreName><surname id="id2644460" TEIform="surname" full="yes">Grandpierre</surname></persName><persName id="id2644471" TEIform="persName"><foreName id="id2644477" TEIform="foreName" full="yes">C.</foreName><surname id="id2644486" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2644497" TEIform="persName"><foreName id="id2644502" TEIform="foreName" full="yes">Y.</foreName><surname id="id2644512" TEIform="surname" full="yes">Sorel</surname></persName></author><note id="id2644525" anchored="yes" place="unspecified" type="typdoc">Rapport de Recherche</note><imprint id="id2644537" TEIform="imprint"><biblScope id="id2644543" TEIform="biblScope" type="number">3476</biblScope><publisher id="id2644552" TEIform="publisher"><orgName id="id2644558" TEIform="orgName" type="institution">INRIA</orgName></publisher><dateStruct id="id2644568" TEIform="dateStruct" full="yes"><month id="id2644576" TEIform="month" full="yes">août</month><year id="id2644585" TEIform="year" full="yes">1998</year></dateStruct><ref id="id2644600" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xlink:href="http://www.inria.fr/rrrt/rr-3476.html" location="extern" xmlns:xlink="http://www.w3.org/1999/xlink" xyref="164027139025">http://www.inria.fr/rrrt/rr-3476.html</ref></imprint></monogr><note id="id2644621" anchored="yes" place="unspecified" type="classification">techreport</note><note id="id2644633" anchored="yes" place="unspecified" type="from">refer</note><note id="id2644645" anchored="yes" place="unspecified" type="userid">cite:execv4</note></biblStruct><biblStruct id="cite_codes99" TEIform="biblStruct" default="NO"><analytic id="id2644670" TEIform="analytic"><title id="id2644676" TEIform="title" level="a">Optimized Rapid Prototyping For Real-Time Embedded Heterogeneous Multiprocessors</title><author id="id2644686" TEIform="author"><persName id="id2644690" TEIform="persName"><foreName id="id2644696" TEIform="foreName" full="yes">T.</foreName><surname id="id2644705" TEIform="surname" full="yes">Grandpierre</surname></persName><persName id="id2644716" TEIform="persName"><foreName id="id2644722" TEIform="foreName" full="yes">C.</foreName><surname id="id2644731" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2644742" TEIform="persName"><foreName id="id2644748" TEIform="foreName" full="yes">Y.</foreName><surname id="id2644757" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2644770" TEIform="monogr"><title id="id2644777" TEIform="title" level="m">CODES'99 7th International Workshop on Hardware/Software Co-Design, Rome</title><imprint id="id2644787" TEIform="imprint"><dateStruct id="id2644792" TEIform="dateStruct" full="yes"><month id="id2644800" TEIform="month" full="yes">mai</month><year id="id2644810" TEIform="year" full="yes">1999</year></dateStruct></imprint></monogr><note id="id2644824" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2644836" anchored="yes" place="unspecified" type="from">refer</note><note id="id2644848" anchored="yes" place="unspecified" type="userid">cite:codes99</note></biblStruct><biblStruct id="cite_ecc91" TEIform="biblStruct" default="NO"><analytic id="id2644873" TEIform="analytic"><title id="id2644879" TEIform="title" level="a">The SynDEx Software Environment for Real-Time Distributed Systems, Design and Implementation</title><author id="id2644890" TEIform="author"><persName id="id2644894" TEIform="persName"><foreName id="id2644900" TEIform="foreName" full="yes">C.</foreName><surname id="id2644910" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2644920" TEIform="persName"><foreName id="id2644926" TEIform="foreName" full="yes">O.</foreName><surname id="id2644936" TEIform="surname" full="yes">Seghrouchni</surname></persName><persName id="id2644946" TEIform="persName"><foreName id="id2644952" TEIform="foreName" full="yes">Y.</foreName><surname id="id2644962" TEIform="surname" full="yes">Sorel</surname></persName><persName id="id2644972" TEIform="persName"><foreName id="id2644978" TEIform="foreName" full="yes">M.</foreName><surname id="id2644987" TEIform="surname" full="yes">Sorine</surname></persName></author></analytic><monogr id="id2645000" TEIform="monogr"><title id="id2645007" TEIform="title" level="m">European Control Conf.</title><imprint id="id2645017" TEIform="imprint"><dateStruct id="id2645021" TEIform="dateStruct" full="yes"><month id="id2645030" TEIform="month" full="yes">juillet</month><year id="id2645039" TEIform="year" full="yes">1991</year></dateStruct></imprint></monogr><note id="id2645053" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2645066" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645078" anchored="yes" place="unspecified" type="userid">cite:ecc91</note></biblStruct><biblStruct id="cite_parco93" TEIform="biblStruct" default="NO"><analytic id="id2645103" TEIform="analytic"><title id="id2645110" TEIform="title" level="a">Performance Optimization of Multiprocessor Real-Time Applications by Graph Transformations</title><author id="id2645120" TEIform="author"><persName id="id2645125" TEIform="persName"><foreName id="id2645130" TEIform="foreName" full="yes">C.</foreName><surname id="id2645139" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2645150" TEIform="persName"><foreName id="id2645156" TEIform="foreName" full="yes">Y.</foreName><surname id="id2645165" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2645178" TEIform="monogr"><title id="id2645185" TEIform="title" level="m">Conf. Parallel Computing, Grenoble</title><imprint id="id2645194" TEIform="imprint"><dateStruct id="id2645199" TEIform="dateStruct" full="yes"><month id="id2645207" TEIform="month" full="yes">septembre</month><year id="id2645217" TEIform="year" full="yes">1993</year></dateStruct></imprint></monogr><note id="id2645231" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2645243" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645255" anchored="yes" place="unspecified" type="userid">cite:parco93</note></biblStruct><biblStruct id="cite_ts97" TEIform="biblStruct" default="NO"><analytic id="id2645280" TEIform="analytic"><title id="id2645286" TEIform="title" level="a">Modèle unifié pour la conception conjointe logiciel-matériel</title><author id="id2645298" TEIform="author"><persName id="id2645302" TEIform="persName"><foreName id="id2645308" TEIform="foreName" full="yes">C.</foreName><surname id="id2645318" TEIform="surname" full="yes">Lavarenne</surname></persName><persName id="id2645328" TEIform="persName"><foreName id="id2645334" TEIform="foreName" full="yes">Y.</foreName><surname id="id2645343" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2645356" TEIform="monogr"><title id="id2645363" TEIform="title" level="j">Traitement du Signal</title><imprint id="id2645373" TEIform="imprint"><biblScope id="id2645379" TEIform="biblScope" type="volume">14</biblScope><biblScope id="id2645388" TEIform="biblScope" type="number">6</biblScope><dateStruct id="id2645397" TEIform="dateStruct" full="yes"><year id="id2645404" TEIform="year" full="yes">1997</year></dateStruct></imprint></monogr><note id="id2645419" anchored="yes" place="unspecified" type="classification">article</note><note id="id2645431" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645443" anchored="yes" place="unspecified" type="userid">cite:ts97</note></biblStruct><biblStruct id="cite_mpcs94" TEIform="biblStruct" default="NO"><analytic id="id2645468" TEIform="analytic"><title id="id2645474" TEIform="title" level="a">Massively Parallel Systems with Real Time Constraints, the "Algorithm Architecture Adequation Methodology"</title><author id="id2645486" TEIform="author"><persName id="id2645490" TEIform="persName"><foreName id="id2645496" TEIform="foreName" full="yes">Y.</foreName><surname id="id2645505" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2645518" TEIform="monogr"><title id="id2645525" TEIform="title" level="m">Conf. on Massively Parallel Computing Systems, Ischia, Italy</title><imprint id="id2645535" TEIform="imprint"><dateStruct id="id2645540" TEIform="dateStruct" full="yes"><month id="id2645548" TEIform="month" full="yes">mai</month><year id="id2645558" TEIform="year" full="yes">1994</year></dateStruct></imprint></monogr><note id="id2645572" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2645584" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645596" anchored="yes" place="unspecified" type="userid">cite:mpcs94</note></biblStruct><biblStruct id="cite_dapsys98" TEIform="biblStruct" default="NO"><analytic id="id2645622" TEIform="analytic"><title id="id2645629" TEIform="title" level="a">Formalization and Static Optimization for parallel implementations</title><author id="id2645639" TEIform="author"><persName id="id2645643" TEIform="persName"><foreName id="id2645649" TEIform="foreName" full="yes">A.</foreName><surname id="id2645658" TEIform="surname" full="yes">Vicard</surname></persName><persName id="id2645669" TEIform="persName"><foreName id="id2645675" TEIform="foreName" full="yes">Y.</foreName><surname id="id2645684" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2645697" TEIform="monogr"><title id="id2645704" TEIform="title" level="m">DAPSYS'98 Workshop on Distributed and Parallel Systems</title><imprint id="id2645714" TEIform="imprint"><dateStruct id="id2645718" TEIform="dateStruct" full="yes"><month id="id2645727" TEIform="month" full="yes">septembre</month><year id="id2645736" TEIform="year" full="yes">1998</year></dateStruct></imprint></monogr><note id="id2645751" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2645763" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645775" anchored="yes" place="unspecified" type="userid">cite:dapsys98</note></biblStruct><biblStruct id="cite_THAV" TEIform="biblStruct" default="NO"><monogr id="id2645800" TEIform="monogr"><title id="id2645806" TEIform="title" level="m">Formalisation et optimisation des systèmes informatiques distribués temps réel embarqués</title><author id="id2645818" TEIform="author"><persName id="id2645823" TEIform="persName"><foreName id="id2645829" TEIform="foreName" full="yes">A.</foreName><surname id="id2645838" TEIform="surname" full="yes">Vicard</surname></persName></author><note id="id2645851" anchored="yes" place="unspecified" type="typdoc">thèse de doctorat</note><imprint id="id2645862" TEIform="imprint"><publisher id="id2645868" TEIform="publisher"><orgName id="id2645875" TEIform="orgName" type="school">Université de Paris Nord</orgName><address id="id2645885" TEIform="address"><addrLine id="id2645890" TEIform="addrLine">Spécialité informatique</addrLine></address></publisher><dateStruct id="id2645900" TEIform="dateStruct" full="yes"><year id="id2645908" TEIform="year" full="yes">5/07/1999</year></dateStruct></imprint></monogr><note id="id2645923" anchored="yes" place="unspecified" type="classification">phdthesis</note><note id="id2645935" anchored="yes" place="unspecified" type="from">refer</note><note id="id2645947" anchored="yes" place="unspecified" type="userid">cite:THAV</note></biblStruct><biblStruct id="cite_rts2002" TEIform="biblStruct" default="NO"><analytic id="id2645973" TEIform="analytic"><title id="id2645979" TEIform="title" level="a">Real-time scheduling for systems with precedence, periodicity and latency constraints</title><author id="id2645990" TEIform="author"><persName id="id2645994" TEIform="persName"><foreName id="id2645999" TEIform="foreName" full="yes">L.</foreName><surname id="id2646008" TEIform="surname" full="yes">Cucu</surname></persName><persName id="id2646019" TEIform="persName"><foreName id="id2646025" TEIform="foreName" full="yes">R.</foreName><surname id="id2646034" TEIform="surname" full="yes">Kocik</surname></persName><persName id="id2646045" TEIform="persName"><foreName id="id2646051" TEIform="foreName" full="yes">Y.</foreName><surname id="id2646060" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2646073" TEIform="monogr"><title id="id2646080" TEIform="title" level="m">10th RTS2000 Real-Time Systems Conference, Paris</title><imprint id="id2646090" TEIform="imprint"><dateStruct id="id2646094" TEIform="dateStruct" full="yes"><month id="id2646103" TEIform="month" full="yes">mars</month><year id="id2646112" TEIform="year" full="yes">2002</year></dateStruct></imprint></monogr><note id="id2646127" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2646139" anchored="yes" place="unspecified" type="from">year</note><note id="id2646151" anchored="yes" place="unspecified" type="userid">cite:rts2002</note></biblStruct><biblStruct id="cite_jfaaa2002" TEIform="biblStruct" default="NO"><analytic id="id2646177" TEIform="analytic"><title id="id2646183" TEIform="title" level="a">Un nouveau modèle générique d'architecture hététogène pour la méthodologie AAA</title><author id="id2646195" TEIform="author"><persName id="id2646200" TEIform="persName"><foreName id="id2646205" TEIform="foreName" full="yes">T.</foreName><surname id="id2646214" TEIform="surname" full="yes">Grandpierre</surname></persName><persName id="id2646225" TEIform="persName"><foreName id="id2646230" TEIform="foreName" full="yes">Y.</foreName><surname id="id2646240" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2646253" TEIform="monogr"><title id="id2646260" TEIform="title" level="m">Journées Francophones sur l'Adéquation Algorithme Architecture, Monastir, Tunisia</title><imprint id="id2646272" TEIform="imprint"><dateStruct id="id2646276" TEIform="dateStruct" full="yes"><month id="id2646285" TEIform="month" full="yes">décembre</month><year id="id2646295" TEIform="year" full="yes">2002</year></dateStruct></imprint></monogr><note id="id2646309" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2646321" anchored="yes" place="unspecified" type="from">year</note><note id="id2646333" anchored="yes" place="unspecified" type="userid">cite:jfaaa2002</note></biblStruct><biblStruct id="footcite_graphTheory2" TEIform="biblStruct" default="NO"><monogr id="id2646360" TEIform="monogr"><title id="id2646366" TEIform="title" level="m">A Textbook of Graph Theory</title><author id="id2646375" TEIform="author"><persName id="id2646379" TEIform="persName"><foreName id="id2646385" TEIform="foreName" full="yes">R.</foreName><surname id="id2646395" TEIform="surname" full="yes">Balakrisnan</surname></persName><persName id="id2646405" TEIform="persName"><foreName id="id2646411" TEIform="foreName" full="yes">K.</foreName><surname id="id2646420" TEIform="surname" full="yes">Ranganathan</surname></persName></author><imprint id="id2646432" TEIform="imprint"><publisher id="id2646437" TEIform="publisher"><orgName id="id2646443" TEIform="orgName">Springer</orgName></publisher><dateStruct id="id2646451" TEIform="dateStruct" full="yes"><year id="id2646460" TEIform="year" full="yes">2000</year></dateStruct></imprint></monogr><note id="id2646474" anchored="yes" place="unspecified" type="classification">book</note><note id="id2646486" anchored="yes" place="unspecified" type="from">foot</note><note id="id2646498" anchored="yes" place="unspecified" type="userid">footcite:graphTheory2</note></biblStruct><biblStruct id="footcite_BenBer" TEIform="biblStruct" default="NO"><analytic id="id2646525" TEIform="analytic"><title id="id2646531" TEIform="title" level="a">The Synchronous Approach to Reactive and Real-Time Systems</title><author id="id2646541" TEIform="author"><persName id="id2646545" TEIform="persName"><foreName id="id2646551" TEIform="foreName" full="yes">A.</foreName><surname id="id2646560" TEIform="surname" full="yes">Benveniste</surname></persName><persName id="id2646570" TEIform="persName"><foreName id="id2646576" TEIform="foreName" full="yes">G.</foreName><surname id="id2646586" TEIform="surname" full="yes">Berry</surname></persName></author></analytic><monogr id="id2646598" TEIform="monogr"><title id="id2646606" TEIform="title" level="j">Proceedings of the IEEE</title><imprint id="id2646615" TEIform="imprint"><biblScope id="id2646621" TEIform="biblScope" type="volume">79</biblScope><biblScope id="id2646630" TEIform="biblScope" type="number">9</biblScope><dateStruct id="id2646639" TEIform="dateStruct" full="yes"><month id="id2646647" TEIform="month" full="yes">septembre</month><year id="id2646656" TEIform="year" full="yes">1991</year></dateStruct><biblScope id="id2646668" TEIform="biblScope" type="pages">1270-1282</biblScope></imprint></monogr><note id="id2646680" anchored="yes" place="unspecified" type="classification">article</note><note id="id2646692" anchored="yes" place="unspecified" type="from">foot</note><note id="id2646704" anchored="yes" place="unspecified" type="userid">footcite:BenBer</note></biblStruct><biblStruct id="footcite_ptolemy11" TEIform="biblStruct" default="NO"><monogr id="id2646730" TEIform="monogr"><title id="id2646737" TEIform="title" level="m">Software synthesis from dataflow graphs</title><author id="id2646746" TEIform="author"><persName id="id2646751" TEIform="persName"><foreName id="id2646756" TEIform="foreName" full="yes">S.</foreName><surname id="id2646765" TEIform="surname" full="yes">Bhattacharya</surname></persName><persName id="id2646776" TEIform="persName"><foreName id="id2646782" TEIform="foreName" full="yes">K.</foreName><surname id="id2646791" TEIform="surname" full="yes">Murthy</surname></persName><persName id="id2646802" TEIform="persName"><foreName id="id2646808" TEIform="foreName" full="yes">E.</foreName><surname id="id2646817" TEIform="surname" full="yes">Lee</surname></persName></author><imprint id="id2646829" TEIform="imprint"><publisher id="id2646834" TEIform="publisher"><orgName id="id2646840" TEIform="orgName">Kluwer Academic</orgName></publisher><dateStruct id="id2646848" TEIform="dateStruct" full="yes"><year id="id2646857" TEIform="year" full="yes">1996</year></dateStruct></imprint></monogr><note id="id2646871" anchored="yes" place="unspecified" type="classification">book</note><note id="id2646883" anchored="yes" place="unspecified" type="from">foot</note><note id="id2646895" anchored="yes" place="unspecified" type="userid">footcite:ptolemy11</note></biblStruct><biblStruct id="footcite_rts2002refer" TEIform="biblStruct" default="NO"><analytic id="id2646922" TEIform="analytic"><title id="id2646928" TEIform="title" level="a">Real-time scheduling for systems with precedence, periodicity and latency constraints</title><author id="id2646939" TEIform="author"><persName id="id2646943" TEIform="persName"><foreName id="id2646949" TEIform="foreName" full="yes">L.</foreName><surname id="id2646959" TEIform="surname" full="yes">Cucu</surname></persName><persName id="id2646968" TEIform="persName"><foreName id="id2646974" TEIform="foreName" full="yes">R.</foreName><surname id="id2646983" TEIform="surname" full="yes">Kocik</surname></persName><persName id="id2646994" TEIform="persName"><foreName id="id2647000" TEIform="foreName" full="yes">Y.</foreName><surname id="id2647009" TEIform="surname" full="yes">Sorel</surname></persName></author></analytic><monogr id="id2647022" TEIform="monogr"><title id="id2647029" TEIform="title" level="m">10th RTS2000 Real-Time Systems Conference, Paris</title><imprint id="id2647039" TEIform="imprint"><dateStruct id="id2647043" TEIform="dateStruct" full="yes"><month id="id2647052" TEIform="month" full="yes">mars</month><year id="id2647061" TEIform="year" full="yes">2002</year></dateStruct></imprint></monogr><note id="id2647076" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2647088" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647100" anchored="yes" place="unspecified" type="userid">footcite:rts2002refer</note></biblStruct><biblStruct id="footcite_Dennis75" TEIform="biblStruct" default="NO"><analytic id="id2647126" TEIform="analytic"><title id="id2647132" TEIform="title" level="a">First Version of a Dataflow Procedure Language</title><author id="id2647142" TEIform="author"><persName id="id2647146" TEIform="persName"><foreName id="id2647152" TEIform="foreName" full="yes">J.</foreName><surname id="id2647161" TEIform="surname" full="yes">Dennis</surname></persName></author></analytic><monogr id="id2647174" TEIform="monogr"><title id="id2647181" TEIform="title" level="m">Lecture Notes in Computer Sci.</title><imprint id="id2647190" TEIform="imprint"><biblScope id="id2647196" TEIform="biblScope" type="volume">19</biblScope><publisher id="id2647205" TEIform="publisher"><orgName id="id2647210" TEIform="orgName">Springer-Verlag</orgName></publisher><dateStruct id="id2647218" TEIform="dateStruct" full="yes"><year id="id2647226" TEIform="year" full="yes">1975</year></dateStruct><biblScope id="id2647238" TEIform="biblScope" type="pages">362-376</biblScope></imprint></monogr><note id="id2647250" anchored="yes" place="unspecified" type="classification">incollection</note><note id="id2647262" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647274" anchored="yes" place="unspecified" type="userid">footcite:Dennis75</note></biblStruct><biblStruct id="footcite_Automates" TEIform="biblStruct" default="NO"><monogr id="id2647300" TEIform="monogr"><title id="id2647307" TEIform="title" level="m">Products of automata</title><title id="id2647316" TEIform="title" level="s">EATCS Monographs on Theoretical Computer Science</title><author id="id2647326" TEIform="author"><persName id="id2647331" TEIform="persName"><foreName id="id2647336" TEIform="foreName" full="yes">F.</foreName><surname id="id2647345" TEIform="surname" full="yes">Gecseg</surname></persName></author><imprint id="id2647357" TEIform="imprint"><publisher id="id2647362" TEIform="publisher"><orgName id="id2647368" TEIform="orgName">Springer-Verlag</orgName></publisher><dateStruct id="id2647376" TEIform="dateStruct" full="yes"><year id="id2647385" TEIform="year" full="yes">1986</year></dateStruct></imprint></monogr><note id="id2647399" anchored="yes" place="unspecified" type="classification">book</note><note id="id2647411" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647423" anchored="yes" place="unspecified" type="userid">footcite:Automates</note></biblStruct><biblStruct id="footcite_Hal93" TEIform="biblStruct" default="NO"><monogr id="id2647449" TEIform="monogr"><title id="id2647455" TEIform="title" level="m">Synchronous programming of reactive systems</title><author id="id2647464" TEIform="author"><persName id="id2647470" TEIform="persName"><foreName id="id2647475" TEIform="foreName" full="yes">N.</foreName><surname id="id2647484" TEIform="surname" full="yes">Halbwachs</surname></persName></author><imprint id="id2647496" TEIform="imprint"><publisher id="id2647501" TEIform="publisher"><orgName id="id2647507" TEIform="orgName">Kluwer Academic Publishers, Dordrecht Boston</orgName></publisher><dateStruct id="id2647516" TEIform="dateStruct" full="yes"><year id="id2647524" TEIform="year" full="yes">1993</year></dateStruct></imprint></monogr><note id="id2647538" anchored="yes" place="unspecified" type="classification">book</note><note id="id2647551" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647563" anchored="yes" place="unspecified" type="userid">footcite:Hal93</note></biblStruct><biblStruct id="footcite_corroyer" TEIform="biblStruct" default="NO"><analytic id="id2647588" TEIform="analytic"><title id="id2647594" TEIform="title" level="a">Effectiveness of heuristics and simulated annealing for the scheduling of concurrent task. An empirical comparison</title><author id="id2647605" TEIform="author"><persName id="id2647610" TEIform="persName"><foreName id="id2647615" TEIform="foreName" full="yes">Z.</foreName><surname id="id2647625" TEIform="surname" full="yes">Liu</surname></persName><persName id="id2647635" TEIform="persName"><foreName id="id2647641" TEIform="foreName" full="yes">C.</foreName><surname id="id2647651" TEIform="surname" full="yes">Corroyer</surname></persName></author></analytic><monogr id="id2647663" TEIform="monogr"><title id="id2647671" TEIform="title" level="m">PARLE'93, 5th international PARLE conference, June 14-17, Munich, Germany</title><imprint id="id2647681" TEIform="imprint"><dateStruct id="id2647685" TEIform="dateStruct" full="yes"><month id="id2647694" TEIform="month" full="yes">novembre</month><year id="id2647703" TEIform="year" full="yes">1993</year></dateStruct><biblScope id="id2647715" TEIform="biblScope" type="pages">452-463</biblScope></imprint></monogr><note id="id2647727" anchored="yes" place="unspecified" type="classification">inproceedings</note><note id="id2647739" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647751" anchored="yes" place="unspecified" type="userid">footcite:corroyer</note></biblStruct><biblStruct id="footcite_LiuLayland73" TEIform="biblStruct" default="NO"><analytic id="id2647778" TEIform="analytic"><title id="id2647784" TEIform="title" level="a">Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment</title><author id="id2647795" TEIform="author"><persName id="id2647799" TEIform="persName"><foreName id="id2647805" TEIform="foreName" full="yes">C.</foreName><surname id="id2647814" TEIform="surname" full="yes">Liu</surname></persName><persName id="id2647825" TEIform="persName"><foreName id="id2647830" TEIform="foreName" full="yes">J.</foreName><surname id="id2647839" TEIform="surname" full="yes">Layland</surname></persName></author></analytic><monogr id="id2647852" TEIform="monogr"><title id="id2647859" TEIform="title" level="j">Journal of the ACM</title><imprint id="id2647868" TEIform="imprint"><dateStruct id="id2647873" TEIform="dateStruct" full="yes"><year id="id2647881" TEIform="year" full="yes">1973</year></dateStruct></imprint></monogr><note id="id2647896" anchored="yes" place="unspecified" type="classification">article</note><note id="id2647908" anchored="yes" place="unspecified" type="from">foot</note><note id="id2647920" anchored="yes" place="unspecified" type="userid">footcite:LiuLayland73</note></biblStruct><biblStruct id="footcite_RTL" TEIform="biblStruct" default="NO"><monogr id="id2647946" TEIform="monogr"><title id="id2647952" TEIform="title" level="m">Introduction to VLSI systems</title><author id="id2647962" TEIform="author"><persName id="id2647966" TEIform="persName"><foreName id="id2647971" TEIform="foreName" full="yes">C.</foreName><surname id="id2647980" TEIform="surname" full="yes">Mead</surname></persName><persName id="id2647991" TEIform="persName"><foreName id="id2647997" TEIform="foreName" full="yes">L.</foreName><surname id="id2648006" TEIform="surname" full="yes">Conway</surname></persName></author><imprint id="id2648018" TEIform="imprint"><publisher id="id2648024" TEIform="publisher"><orgName id="id2648029" TEIform="orgName">Addison-Wesley</orgName></publisher><dateStruct id="id2648037" TEIform="dateStruct" full="yes"><year id="id2648046" TEIform="year" full="yes">1980</year></dateStruct></imprint></monogr><note id="id2648060" anchored="yes" place="unspecified" type="classification">book</note><note id="id2648073" anchored="yes" place="unspecified" type="from">foot</note><note id="id2648085" anchored="yes" place="unspecified" type="userid">footcite:RTL</note></biblStruct><biblStruct id="footcite_pra86" TEIform="biblStruct" default="NO"><analytic id="id2648110" TEIform="analytic"><title id="id2648116" TEIform="title" level="a">Modeling concurrency with partial orders</title><author id="id2648125" TEIform="author"><persName id="id2648131" TEIform="persName"><foreName id="id2648136" TEIform="foreName" full="yes">V.</foreName><surname id="id2648145" TEIform="surname" full="yes">Pratt</surname></persName></author></analytic><monogr id="id2648158" TEIform="monogr"><title id="id2648165" TEIform="title" level="j">International Journal of Parallel Programming</title><imprint id="id2648175" TEIform="imprint"><biblScope id="id2648181" TEIform="biblScope" type="volume">15</biblScope><biblScope id="id2648190" TEIform="biblScope" type="number">1</biblScope><dateStruct id="id2648199" TEIform="dateStruct" full="yes"><year id="id2648207" TEIform="year" full="yes">1986</year></dateStruct></imprint></monogr><note id="id2648221" anchored="yes" place="unspecified" type="classification">article</note><note id="id2648233" anchored="yes" place="unspecified" type="from">foot</note><note id="id2648245" anchored="yes" place="unspecified" type="userid">footcite:pra86</note></biblStruct><biblStruct id="footcite_PRAM3" TEIform="biblStruct" default="NO"><monogr id="id2648271" TEIform="monogr"><title id="id2648277" TEIform="title" level="m">Parallel and distributed computing handbook</title><author id="id2648286" TEIform="author"><persName id="id2648291" TEIform="persName"><foreName id="id2648297" TEIform="foreName" full="yes">A.</foreName><surname id="id2648306" TEIform="surname" full="yes">Zomaya</surname></persName></author><imprint id="id2648318" TEIform="imprint"><publisher id="id2648323" TEIform="publisher"><orgName id="id2648329" TEIform="orgName">McGraw-Hill</orgName></publisher><dateStruct id="id2648337" TEIform="dateStruct" full="yes"><year id="id2648345" TEIform="year" full="yes">1996</year></dateStruct></imprint></monogr><note id="id2648360" anchored="yes" place="unspecified" type="classification">book</note><note id="id2648372" anchored="yes" place="unspecified" type="from">foot</note><note id="id2648384" anchored="yes" place="unspecified" type="userid">footcite:PRAM3</note></biblStruct></biblio></raweb>