Précédent : Mises en oeuvre distribuées
Remonter : Résultats nouveaux Suivant :
Techniques
d'algèbre MaxPlus pour l'évaluation
Participants : Apostolos Kountouris, Paul Le Guernic,
Jean-Christophe Le Lann, Christophe Wolinski.
Mots clés : Signal, programmation synchrone, conception conjointe matériel/logiciel composant matériel, synthèse de circuits, consommation des circuits .
Cependant, le format de compilation des programmes Signal sous forme de graphes ( GHDC) nous a paru encore plus riche de promesses. Il possède en effet des avantages indéniables que nous avons cherché à exhiber au cours de cette année. Il répond également à la nécessité de comparer l'approche synchrone avec les paradigmes de synthèse comportementale (dite aussi «synthèse de haut niveau») : à partir d'une description fonctionnelle de l'application, on cherche à générer une netlist de niveau RTL et son automate de contrôle. L'incorporation de contraintes réalistes se fait alors de façon naturelle.
Les expérimentations que nous avons menées autour de l'exploitation des résultats du calcul d'horloges se sont révélées très positives [[28],[30]]. Le calcul booléen effectué sur les événements spécifiés permet d'exhiber des propriétés d'exclusion mutuelle d'opérations. Une extension de ce calcul aux relations entre nombres entiers (inégalités) a été présentée. L'étape d'ordonnancement de ces opérations sous contraintes de ressources profite alors de l'efficacité de ce calcul : une même unité fonctionnelle est partagée entre plusieurs opérations. Nous avons ainsi pu réduire le nombre de pas de contrôle d'une application d'environ 50% [[29]]. Nonobstant son utilisation actuelle au seul partage d'unités fonctionnelles, ce même raisonnement sur l'exclusion mutuelle peut s'appliquer au partage d'autres objets : variables dans un programme, segments de code, etc.
Le classement hiérarchique des informations a également permis d'apporter une contribution à l'analyse des faux chemins [[27]]. Cette préoccupation intervient dans de nombreux domaines (test de logiciel, estimation du temps d'exécution au pire cas...). Cette analyse consiste à étudier statiquement l'accessibilité de noeuds destination du graphe à partir d'un noeud source. Dans notre représentation, chaque noeud et arc possédant une horloge, on peut établir l'équation booléenne correspondant à un chemin dans ce graphe et ainsi établir la validité de certains chemins. Convaincus par l'applicabilité de la compilation et la représentation intrinsèques du calcul d'horloges à diverses disciplines centrées sur la conception conjointe matériel/logiciel, nous poursuivons actuellement cette exploration.
Il est parfois possible d'empêcher un tel phénomène, soit par insertion de bascules tranparentes (tranparent latches) à l'entrée des unités fonctionnelles, soit par désactivation de l'horloge maîtresse du circuit à l'entrée de certains registres. Le calcul d'horloges offre certains avantages dans son analyse : chaque signal porte une horloge qui indique son activité. Ceci signifie qu'il est possible de connaître statiquement les signaux utiles à un instant logique donné et d'appliquer leurs horloges comme gardes des dispositifs adéquats. Nous avons donc cherché à montrer que nous possédions dans le calcul d'horloges un outil idéal susceptible d'aider à automatiser cette tâche du concepteur [[33]].
L'insertion de bascules tranparentes, si elle est effectivement appliquée, requiert une grande attention quant au respect de différentes contraintes de conception : le chemin critique du circuit peut ainsi être modifié. La surface augmente également, ce qui limite parfois les effets escomptés en terme de consommation. Une technique prometteuse, qui s'affranchit d'une telle insertion, consiste à étudier et modifier les équations de contrôle du réseau de multiplexeurs. En effet, ces équations spécifient certes l'origine des signaux utiles sur lesquels les unités fonctionnelles vont opérer dans certains états de l'automate, mais induisent également un choix quant à l'origine des signaux inutiles transportés vers les unités fonctionnelles dont l'activité n'est pas nécessaire. Il est donc possible, en revisitant ce choix, de minimiser les basculements inutiles.
Cette interaction contrôle/chemin de données tend à reporter l'optimisation de consommation à des niveaux d'abstraction plus élévés (high level synthesis). Par une représentation adéquate de la spécification fonctionnelle, nous avons donc cherché à incorporer de telles préoccupations dans les transformations représentatives à ce niveau : ordonnancement sous contraintes, allocation des registres et bancs de registres, des communications... Ce travail se poursuit actuellement.