Sous-sections
Mots clés : synthèse d'architecture,
CAO, ASIC .
Participants : David Cachera,
Steven Derrien, Anne-Claire Guillou, Patrice Quinton, Fabien
Quilleré, Sanjay Rajopadhye, Tanguy Risset.
Résumé :
Notre effort est concentré sur le développement du
logiciel MMAlpha (voir section 5.2) pour (1) la
synthèse d'architectures régulières - notamment
systoliques - et (2) la génération de code séquentiel
ou parallèle à l'aide de transformations interactives. Le
langage Alpha est la base de ce logiciel. Il autorise à la
fois l'expression d'un algorithme parallèle régulier, et la
description d'une architecture synchrone qui en supporte
l'exécution.
Nos recherches en 2000 ont porté sur les aspects
suivants :
- la mise en place d'une chaîne de compilation Alpha
FPGA ;
- la génération d'interfaces entre un système matériel
généré par le système MMAlpha et le système
(logiciel) qui contrÔlera ce matériel ;
- l'étude de méthodes de pavage et de retiming
appliquées aux co-processeurs
FPGA ;
- l'étude du pavage oblique optimal d'espaces d'itération
à deux dimensions ;
- l'utilisation de MMAlpha en temps que
plate-forme de prototypage rapide pour différents
algorithmes ;
- l'étude de méthodes pour déterminer automatiquement la
largeur du chemin de données dans une
architecture ;
- la compilation d'Alpha sur une machine à usage général
en optimisant la taille mémoire utilisée, et la génération
du code impératif associé ;
- l'intégration de méthodes formelles pour la
démonstration de propriétés de systèmes Alpha ;
- l'étude algorithmique du problème du chemin
algébrique.
- Le problème de la génération d'interfaces passe par la
définition d'une architecture matérielle générique, afin de
pouvoir ensuite automatiser la production
d'interfaces [24].
- L'application des méthodes de pavage aux
FPGA consiste en la détermination du
meilleur compromis entre taille de la mémoire locale et
parallélisme, sous contraintes de bande passante. Une
solution analytique a été donnée [17,16], et donne lieu à une validation
expérimentale sur carte SPYDER-X2. D'autre part,
l'utilisation de techniques de retiming permet
d'aller vers un parallélisme à grain fin des processeurs
produits par MMAlpha [34].
- L'étude du pavage oblique a pour but de minimiser le
temps d'exécution total d'une machine parallèle à mémoire
distribuée. Si les dépendances sont uniformes, et si l'on
se restreint à des tuiles dont l'un des bords est parallèle
à un bord du domaine considéré, il est possible de formuler
une solution analytique par résolution d'un problème
d'optimisation discrète non linéaire. Sur certaines classes
de problèmes (comme par exemple l'alignement de séquences),
le pavage oblique optimal donne une accélération
quasi-linéaire sur IBM-SP2, ce qui semble être un nouveau
résultat [27].
- Le flot de synthèse de MMAlpha a été
validé par des exemples d'applications de « taille réelle
». À partir d'une description Matlab de l'application, un
code Alpha est généré puis raffiné jusqu'à une description
architecturale en VHDL synthétisable, qui peut ensuite être
simulée. Les exemples traités ont été un filtre adaptatif
(DLMS) et un algorithme de rétropropagation dynamique (avec
application aux réseaux de neurones) [20,19]. Ce travail a été réalisé en
collaboration avec l'Université du Québec à
Trois-Rivières.
- La détermination de la largeur du chemin de données
passe par une traduction d'un programme Alpha vers une
forme abstraite (exprimée également en Alpha) qui consiste
en un système d'équations sur les tailles des mots codant
chaque variable. Dans certains cas, il est possible de
résoudre ces équations par un appel au solveur de
Mathematica, ou par utilisation de l'algèbre ( max,
plus). la détermination de certaines largeurs doit
faire appel à l'utilisateur, en particulier lorsque
celles-ci sont liées à des propriétés intrinsèques de
l'algorithme (convergence par exemple). L'implémentation de
ces méthodes dans l'environnement MMAlpha
est en cours, via l'enrichissement du système de typage de
Alpha.
- La compilation de systèmes Alpha sous forme de nids de
boucles impératifs avec optimisation de la mémoire utilisée
a fait l'objet d'une implémentation dans le module CodeGen,
qui génère du code C. Ce module a été mis sous licence
GNU et intégré dans la suite
MMAlpha.
- Le flot de dérivation MMAlpha qui part
d'une spécification de très haut niveau pour arriver à une
description architecturale garantit théoriquement la
correction de l'architecture finale. Ceci est dû au fait
que les transformations utilisées conservent la sémantique
des systèmes. Cependant, il est parfois nécessaire de
valider certaines transformations (qui ne préservent pas
intégralement la sémantique), ou de vérifier certaines
propriétés non triviales de spécifications complexes. Dans
ce but, nous avons défini et implémenté un ensemble de
méthodes de vérification formelle qui font appel à la fois
à MMAlpha et au démonstrateur de théorèmes
PVS [28].
- La visite de B. Sinha (ISI) a été l'occasion d'étudier
l'expression de programmes non affines en Alpha (tris, FFT,
etc.).
Les travaux futurs à court terme concernent les points
suivants :
- l'expression au niveau matériel de systèmes avec
ordonnancement multidimensionnel ;
- la génération de VHDL et de code
impératif pour des programmes Alpha structurés ;
- la poursuite de la définition et de l'implémentation de
méthodes de preuve formelle pour des programmes Alpha
structurés ;
- l'implémentation dans MMAlpha des
-polyèdres ;
- l'intégration des outils vers les
FPGA : interfaçage et optimisation
globale (combinaison des optimisations liées au pavage et
au retiming) ;
- l'étude de l'interaction entre estimation du routage et
retiming (dans le cadre des FPGA).