Synthèse portable pour micro-architectures à grain fin Application aux ...

Catherine Dezan a reçu son diplôme d'ingénieur de l'Enst-Bretagne en 1989 et a soutenue une ... Maître de Conférences en Informatique à L'UBO depuis 1994,.
408KB taille 2 téléchargements 101 vues
Synthèse portable pour micro-architectures à grain fin Application aux turbo décodeurs et nano-fabriques Catherine Dezan, Erwan Fabiani, Christophe Gouyen, Loïc Lagadec, Bernard Pottier, Caaliph Andriamisaina et Alix Poungou Architectures & Systèmes, LESTER, FRE 2734 Département informatique UFR Sciences et Techniques Université de Bretagne Occidentale BP 809, 20 av Le Gorgeu 29285 Brest Cedex [email protected]

RÉSUMÉ. Toutes les architectures reconfigurables se ressemblent. Pour faciliter leur intégration logicielle, l’atelier Madeo les représente dans un modèle commun utilisé par des outils de CAO génériques. L’implantation d’outils et langages de haut niveau s’appuie sur une couche de synthèse comportementale et structurelle ouverte capable de produire des opérateurs hautement optimisés. La flexibilité est illustrée par les investigations précoces qui peuvent aussi être menées sur des nano-fabriques. L’efficacité de la synthèse est quant à elle montrée sur des éléments de circuits stratégiques dans les communications : les turbo décodeurs en blocs.

Reconfigurable architectures are similar. To ease their sofware integration, the Madeo framework proposes a common model used by generic CAD tools. The development of high level tools can rely on an open synthesis layer with behavioural and structural aspects. The capability for fast integration of technologies is shown of the case of early investigations on nano-fabrics, while the efficiency of the synthesis is demonstrated on parts of a turbo decoder known to be critical in communications.

ABSTRACT.

MOTS-CLÉS :

Architectures reconfigurable, synthèse, portabilité, turbo codes, nanotechnologies

KEYWORDS:

Reconfigurable architectures, synthesis, portability, turbo codes, nanotechnologies

Technique et science informatiques– 7/2006. SYMPA

2

Technique et science informatiques– 7/2006. SYMPA

1. Introduction Les architectures reconfigurables ont vocation à être programmables au même titre que les processeurs. Programmable veut dire qu’un ou plusieurs langages permettent d’exprimer ce que la machine doit faire, que l’on décrive un comportement souhaité ou que l’on décrive des actions matérielles à exécuter. Dans la première catégorie, le langage est généralement lié à un modèle de calcul : algorithmes structurés, modulaires, programmation logique et déclarative, objets, programmation concurrente, flots de données. . . L’implantation de ces langages requiert un effort qui peut être important, mais qui est en général unique ou peu fréquent : réalisation d’une machine virtuelle ou d’un compilateur. La seconde catégorie décrit explicitement des opérations à réaliser sur une architecture ou des outils de synthèse. L’exemple le plus évident est celui du langage C créé en conformité avec une machine à registres (1974) pour combler une lacune dans la programmation des systèmes d’exploitation. Un autre exemple non moins évident est celui des langages de description matérielle créés pour manoeuvrer les librairies technologiques, les opérateurs et la synthèse avec la plus grande flexibilité et sûreté. Les argumentations en faveur des langages comportementaux pointent du doigt les conséquences de l’usage de langages de description, qui supportent effectivement bien l’exécution, mais handicapent la stratégie d’optimisation des algorithmes. Dans la conception matérielle, cet écart de besoins se remarque par exemple dans le domaine du traitement du signal et de l’image, où la conception algorithmique est fréquemment traitée par calcul formel, alors que les implémentations logicielles et matérielles impliquent des choix souvent dépourvus de support (dimensionnement des opérandes, optimisation des expressions). L’histoire des circuits reconfigurables a maintenant une vingtaine d’années. Le logiciel pour ces circuits est une longue succession de mutations dans lesquelles on a trouvé des outils de synthèse logique de niveau booléen, des outils de synthèse ou de dessin de haut niveau, des langages de description matérielle évoluant progressivement vers plus d’abstraction, et la prise en charge par des outils de programmation conventionnels plus ou moins amendés. En ce qui concerne les architectures reconfigurables, la dimension comportementale a été soulignée par plusieurs projets. Un exemple extrême est SCORE (Caspi et al., 2000), qui se focalise sur le comportement général du programme en ignorant, ou minimisant, les détails de la mise en œuvre. Le projet Madeo prend en charge la synthèse et l’usage du matériel en relation étroite avec la programmation objet. Ce projet a démarré en 1995 en s’appuyant sur un environnement de développement Smalltalk-80 (Goldberg et al., 1983), dont la maturité promettait de faciliter des mises en œuvre a priori lourdes en restreignant au maximum la dépendance technologique. Le choix de ce langage en tant que langage cible s’imposait pour une seconde raison qui est sa capacité à s’auto-décrire, capacité qu’il était tentant d’étendre au champ des architectures reconfigurables. La vision était de permettre la description et l’intégration dans le langage de ressources de calcul nou-

Synthèse portable avec M ADEO

3

velles, à la fois flexibles et efficaces : opérateurs arithmétiques spécifiques, opérateurs graphiques, manœuvre de capteurs, circuits de calcul intensif. . . Cet article présente d’abord l’ossature du projet dans la section 2. Deux points forts en sont le niveau symbolique et objet des spécifications et le haut niveau de portabilité permettant la prise en charge rapide de technologies nouvelles, qui sont respectivement détaillés dans les sections 3 et 4. Le premier point est illustré en section 5 par la synthèse d’éléments de circuits de turbo décodeurs en blocs, et le second en section 6 par la prise en charge d’un modèle technologique intermédiaire associant micro et nano architectures. Les turbo codes sont une solution permettant de minimiser le taux d’erreur lors des communications. Ils ont une importance critique pour les débits de transmission haute vitesse ou sans fil. Les algorithmes de décodeurs en blocs tirent parti des propriétés des corps de Galois. Nous montrons que le support arithmétique nécessaire s’implante naturellement dans le langage hôte, que la programmation des algorithmes élémentaires s’effectue de manière simple et que la synthèse des circuits reconfigurables peut être complètement automatique et produire des implémentations FPGA plus efficaces que celles obtenues avec des approches traditionnelles. La ressource physique abstraite ciblée par Madeo est une micro-architecture qu’il s’agit de caractériser pour une architecture d’application, puis d’exploiter en liaison ou non avec l’environnement hôte. Les ressources physiques sont typiquement des plateformes reconfigurables de grain varié : FPGA ou chemins de données. Ici nous montrons la capacité évolutive des outils en présentant la prise en charge de nanofabriques (Moritz et al., 2004). Il s’agit de technologies considérées comme plausibles à moyen terme, mais pour lesquelles les indicateurs de performance n’existent pas. Dans ce cas Madeo permet d’effectuer la synthèse physique de tâches de grain moyen en récoltant des informations sur la densité effective de l’intégration, les fréquences de fonctionnement, ou la résistance aux fautes.

2. Structure de la plateforme Madeo 2.1. Environnement de développement Smalltalk est un langage objet non typé, symbolique, et principalement applicatif. Toute entité du système a un statut d’objet, compilateur, éditeur, noyau d’exécution inclus. Si la première version de Smalltalk-80 s’exécutait en code natif (bytecodes micro-programmés), il est actuellement diffusé sous forme de machine virtuelle portable. Le seul mécanisme d’exécution que le programmeur perçoit est l’expédition de message. Un message est un symbole associé à une sémantique. La réception d’un message par un objet provoque une recherche dans la chaine d’héritage des classes, et l’exécution d’une méthode (fonction), dont le résultat est rendu en réponse.

4

Technique et science informatiques– 7/2006. SYMPA

Les opérations numériques reflétant ordinairement les capacités matérielles du processeur ont également le statut de message, permettant des extensions arithmétiques aux classes numériques de base. Au delà d’une syntaxe un peu particulière qui permet de casser les noms des procédures, le langage utilise un mécanisme d’édition dynamique des liens qui le différencie des langages impératifs ou objet les plus usités. Alors que l’édition statique consiste à calculer le saut à effectuer pour appeler une procédure lors de la compilation, Smalltalk retarde cette opération jusqu’au moment de l’exécution. Pour fixer les idées :                           



représente une méthode agissant sur un paramètre . Le code incrémente le paramètre, le passe au carré, et retourne cette valeur. L’exemple montre qu’aucune contrainte n’est posée sur le paramètre. On demande seulement à celui-ci de savoir réagir correctement au message +, puis cette somme étant effectuée, qu’elle sache exécuter un message squared (notation unaire de type postfixe). Cette contrainte est satisfaite pour toutes les classes numériques (héritant de Number) : entiers, flottants, rationnels, nombre à virgule fixe, complexes, ... mais pourra aussi être respectée par de nouvelles classes créées pour une application particulière, sans qu’il soit besoin de recompiler la méthode décrite. On disjoint ainsi complètement les données et le code en laissant le couplage s’effectuer au moment de l’exécution sur la seule base des symboles utilisés par le programme. Le résultat est une très forte réutilisabilité du code et une grande latitude à faire évoluer les données en jouant sur les classes, existantes ou nouvelles, et sur le polymorphisme, c’est à dire la capacité à traiter uniformément des objets de classes différentes (voir section 3). Pour Madeo, cela amène la première possibilité d’opérer des transformations de synthèse logique et physique vers des architectures différentes, à grain fin, mais aussi hétérogènes ou radicalement nouvelles comme cela est montré pour les nanofabriques en section 6. Cela permet aussi au programmeur de faire évoluer les classes des données face à un algorithme fixe, afin de régler un circuit en termes de coût matériel ou de performances. Le cas des turbo codes en est une bonne illustration puisque les classes supportant les corps de Galois sont générées par calcul et que des algorithmes tels que le calcul de syndrome sont réutilisables avec une grande latitude sur ces classes, en y incluant des tests sur des opérandes entiers.

2.2. Synthèse logique et synthèse physique portables Le flot Madeo est basé sur deux couches (présentées figure 1) : 1) la modélisation de la micro-architecture, associée aux fonctions de synthèse physique : placement, routage, floor-planning, édition, et dessin structuré.

Synthèse portable avec M ADEO

Programmation de haut niveau

5

Générateurs de code

Description de circuits structurés

Interface (API) programmable: dessin et synthèse

Couches

Programmation de fonctions, FSM, Ensemble de définition

Synthèse logique hiérarchique

2

Description de l’architecture concrète

Modèle architectural et outils physiques

1

Production des configurations

0

3

base de données

Figure 1. Flot final de la chaîne Madeo, avec en bas la production des bitstream permettant la programmation effective du circuit cible, à droite les mécanismes de stockage de composants en base de données, en haut les interfaces possibles avec des langages de haut niveau. La chaîne est totalement ouverte.

Le rôle de la modélisation est de permettre la description de l’organisation d’un circuit cible en termes de primitives matérielles et de fonctions de routage. Cette description repose sur un modèle abstrait permettant la représentation de réplications et de hiérarchies que l’on trouve dans les circuits reconfigurables. Le modèle abstrait est ouvert, et permet de prendre en charge des ressources matérielles nouvelles : opérateurs ou fonctions d’acquisitions, par exemple. Les algorithmes de synthèse physique opèrent sur l’architecture concrète qu’ils découvrent en utilisant le modèle abstrait. Il s’agit d’une sorte d’interprétation dont l’intérêt est de produire une prise en charge portable, en y incluant des cibles hétérogènes. 2) le second étage dispose donc des fonctions d’implantation et du modèle physique. Son rôle est d’effectuer la synthèse logique, dans le cas d’architectures à grain fin, et la synthèse numérique dans le cas d’architecture à gros grain. La synthèse logique est actuellement menée à partir de méthodes Smalltalk-80, bien que les principes suivis puissent s’appliquer à quantité d’autres modes d’expression. Elle repose sur la prise en charge simultanée de la définition des données à traiter, et de l’algorithme à développer sur le matériel. Les données sont des ensembles d’objets que l’on peut désigner par le terme de contexte de compilation, qui remplace les directives de typage traditionnelles. Le typage est produit par inférence automatique dans le graphe d’appel qui est traduit en systèmes de tables pré-calculées.

6

Technique et science informatiques– 7/2006. SYMPA

Les contextes de compilation peuvent se calculer par du code Smalltalk. La méthode décrite (2.1) pourrait ainsi être synthétisée en association au contexte suivant :                                 

           

Les fonctions implantées dans cette couche permettent la production de réseaux de composants combinatoires ou séquentiels pour la couche sous-jacente. Les couches 1+2 fournissent donc un interface permettant la production d’objets empilant la spécification logicielle (code et contextes), les réseaux de tables, les représentations logiques et physiques dépendantes d’une architecture. Ces composants sont archivés dans une base de données multi-architectures.

2.3. Dessin structuré et intégration aux compilateurs Les primitives générées ne suffisent en général pas pour une application. Il faut pouvoir les assembler en formant des architectures (couche 3, figure 1). Ce résultat peut être obtenu par des programmes qui effectuent des arrangements physiques des composants élémentaires, puis construisent les chemins de données entre ces composants. La programmation utilise du code Smalltalk traditionnel manipulant les interfaces des deux couches basses pour synthétiser, extraire les caractéristiques géométriques, répliquer et router les signaux. Le second cadre d’usage consiste à laisser un compilateur produire ou utiliser les composants élémentaires et les relier. Madeo supporte ces deux types d’opérations avec des niveaux de maturité variables, en préservant la caractéristique de portabilité (Fabiani et al., 2003). La programmation de générateurs physiques est couramment pratiquée pour les opérateurs arithmétiques et les réseaux de calcul. L’intégration dans des compilateurs (bloc supérieur de la figure 1) est une nouveauté abordée de manière coopérative (voir section 3.5).

2.4. Reconfigurabilité et couplage langage/architecture La production de logique combinatoire à haut niveau est indispensable pour tirer complètement parti de la flexibilité du reconfigurable. Le choix de Smalltalk a ainsi été motivé par la capacité à produire des mécanismes d’exécution matérielle qui reflètent la capacité d’expression du langage. A contrario, les langages typés, liés à des ensembles d’opérateurs fixes peuvent difficilement intégrer des fonctions nouvelles au rang des opérateurs standards. La section 3 décrit la structure originale du synthétiseur logique de Madeo, dont il existe une description plus approfondie dans (Lagadec et al., 2003). Sa lecture n’est pas indispensable à la compréhension générale de l’article. La section 4 décrit comment on peut abstraire l’organisation du circuit en regard des fonctions de manipulation physique.

Synthèse portable avec M ADEO

7

3. Flot de compilation Le compilateur Smalltalk produit un arbre syntaxique dont les nœuds sont des objets représentant des messages, des affectations, des blocs, des séquences. Cet arbre est analysé pour construire un graphe acyclique sans variable temporaire (DAG). Des optimisations de compilation conventionnelles sont menées sur le DAG : suppression de code mort, factorisations, propagations de constantes et évaluations statiques. Le contexte de compilation est défini comme étant une spécification de type complète pour chacun des paramètres de la méthode et le receveur. Cette spécification est progressivement propagée dans le DAG. Chaque nœud disposant d’une spécification complète de typage est compilé récursivement et hiérarchiquement, sauf si sa complexité apparaît assez simple pour les outils logiques. Dans ce cas on construit une table en appliquant le message qu’il représente à tous les n-uplets de son contexte. Le résultat de cette passe est un graphe hiérarchique portant des tables représentant exactement tous les comportements possibles de la méthode sur son contexte courant. Plusieurs optimisations sont alors menées pour simplifier les tâches d’optimisation logique, par exemple : 1) fusion des tables sur les chemins unaires, suppression du code constant. 2) suppression des valeurs produites et inutilisées, et backtracking. Dans le cas des branchements conditionnels les conditions vraies ou fausses sont répercutées sur les blocs conditionnés pour réduire leur logique. Le résultat est un graphe de tables réduit, qui reste exécutable par simple parcours, qui peut être implanté dans des mémoires centralisées ou distribuées, et dont on peut dériver des programmes de simulation à haut niveau de parallélisme potentiel. Lorsqu’il s’agit de produire des circuits sur FPGA, on construit des PLAs équivalents aux tables que l’on passe à des outils d’optimisation logique. Ces aspects sont décrits en section 3.4. Mais il est d’abord nécessaire d’expliquer l’effet attendu par cette chasse aux valeurs inutiles.

3.1. Convergence et applicabilité de la méthode La section 5.2 montre que des circuits de taille significative peuvent être synthétisés de manière très efficace. Il y a cependant une condition d’utilisation forte qui restreint le grain des calculs à des amplitudes allant de 26 à 28 valeurs par paramètre. Au delà de ce seuil, l’optimisation logique ne peut plus être menée efficacement. Le processus de synthèse converge. En effet, chaque nœud du graphe réalise au pire une bijection de son contexte vers l’ensemble de ses résultats. De manière générale la quantité de valeurs manipulées décroît à chaque nœud, car une fonction combinatoire ne peut pas produire plus de résultats qu’elle ne dispose de n-uplets dans son entrée. La stratégie algorithmique gagnante consiste alors à faire apparaître le plus tôt possible

8

Technique et science informatiques– 7/2006. SYMPA

des tables synthétisables dans le DAG, en surface, ou en profondeur dans les méthodes appelées. La maîtrise de la structuration hiérarchique du graphe de calcul est une clé de la qualité de la solution produite. Trois cas sont à considérer : – blocage de l’examen hiérarchique : cas où le programmeur souhaite en verrouiller des noeuds en vue d’une synthèse monolithique. Pour cela, les méthodes placées dans une catégorie de méthodes dédiée sont traitées de façon atomique. – contrôle en profondeur : blocage paramétrique de la profondeur maximale lors de la descente hiérarchique. Un intérêt direct est d’assurer une terminaison contrôlée d’un traitement récursif (par exemple une recherche dichotomique), ou de calibrer à priori la complexité des nœuds. – par sélection manuelle : une fois le DAG produit, et avant qu’il ne subisse une quelconque modification, le programmeur étiquète interactivement chaque nœud pour forcer ou non sa tabulation. Les tables de calcul comportent des intervalles de valeurs contiguës, des ensembles creux ou polymorphes. Le taux de remplissage des contextes peut être associé à la notion de valeurs prises effectivement sur un chemin de données. Ce taux varie selon les applications, et la complexité des expressions mises en œuvre. Pour en donner un exemple, deux opérandes x et y d’une multiplication z = x ∗ y, définis dans un intervalle I = [0, 2n ] vont générer des valeurs dans J = [0, 22n ] Pour une valeur prise par les opérandes au delà de I, l’encodage binaire classique de cette dernière entraine l’extension de l’intervalle I et donc aussi de J à considérer ([0, 22n+1 ] et [0, 22n+2 ]). L’intervalle J a alors une amplitude 4 fois supérieure dont 3/4 des valeurs possibles sont pratiquement inutilisés.

3.2. Aspects spécifiques de la synthèse logique pour les FPGAs Les FPGAs permettent de construire des circuits très spécialisés et de profiter des creux générés lors de l’optimisation logique par deux techniques : la synthèse et la resynthèse. Ces opérations sont actuellement menées par des logiciels externes à Madeo1 . La synthèse consiste à produire un code booléen unique pour chaque n-uplet d’un contexte, avec une signature booléenne pour le résultat. La construction d’un PLA (Programmable Logic Array) à partir de cette table binaire va fournir une implantation logique après minimisation et partitionnement. Les résultats expérimentaux montrent que la suppression de valeurs peut complexifier l’expression logique, et causer des sérieux désagréments pour les temps de synthèse (figure 2 (a)). 1. On citera SIS (Sentovich et al., 1992) et ses évolutions telles que MVSIS (Gao et al., 2001), ou une adaptation tirant parti de partitionnements intermédiaires PPart (Lemarchand, 1999).

Synthèse portable avec M ADEO

150

nombre de cellules

150

nombre de cellules

9

100

100

50

50

0

50

100

150

200

250

0

50

100

nombre d’entrees manquantes

150

200

250

nombre de DC

Figure 2. A gauche, nombre de cellules logiques produites par synthèse (a) et à droite, par resynthèse (b) pour un même problème de multiplication 24 × 24 avec un nombre de jeu d’opérandes aléatoires croissant.

Une autre solution est d’observer que si on dispose d’une expression logique simple pour des intervalles pleins, on peut demander à l’optimisation logique de partir de cette solution existante en effectuant le retrait des n-uplets sous forme de don’t care (Lin et al., 1991). On procède alors à une resynthèse. Les résultats expérimentaux présentés en (b) figure 2 montrent une décroissance systématique de la logique générée avec cette technique. La lecture de la table 1 montre d’autre part un second avantage qui est la maîtrise des temps de calcul bien plus courts et bien plus prédictibles.

temps de synthèse (s) nombre de noeuds (LUT-4) synthèse temps de resynthèse (s) nombre de noeuds (LUT-4) resynthèse

moyenne 286 132,323 10 76,4077

gain

27 1.73

maximum 9485 154 198 88

gain

47 1.75

Tableau 1. Comparatif des temps d’exécution et de la qualité des résultats pour une série de synthèses, puis des resynthèses équivalentes sur des contextes de plus en plus petits. La synthèse initiale complète précédant les resynthèses a duré 10.7s en produisant 90 cellules LUT-4 (mvsis, puis sis). En conclusion, lorsque cela est possible il y a toujours avantage à procéder par retraits sur une solution existante, le contrôle des flux de valeurs étant garanti par le strict usage des tables dans le circuit synthétisé. La comparaison avec des outils classiques est difficile à mener car ceux-ci s’appuient sur des règles sémantiques restreintes à des opérateurs classiques, alors que Madeo peut profiter de constats menés à la compila-

10

Technique et science informatiques– 7/2006. SYMPA

tion, en s’affranchissant de l’usage de macros ou d’opérateurs. La section 5 montre l’efficacité de ce positionnement par rapport à une approche purement architecturale.

3.3. Synthèse de machines d’états Les machines d’états sont produites en utilisant la même technique que les circuits combinatoires. On peut assimiler ces machines à une méthode opérant sur des variables externes qu’elles lisent et écrivent. En plus du contexte de compilation il est nécessaire de disposer de la valeur initiale de l’état. Le logiciel de synthèse observe l’évolution de l’état. Si celui-ci évolue vers une nouvelle valeur, on accumule cette valeur dans un ensemble. Le produit cartésien des états par le contexte de compilation des stimuli forme le contexte de compilation de l’automate. La sortie est le produit des états suivants et de la production de la machine (Llopis et al., 1996). Après synthèse les registres nécessaires à la conservation de l’état sont insérés entre l’état suivant et l’état courant qui forment une boucle.

3.4. Représentations numériques, codage La représentation numérique des objets n’est pas un choix neutre en regard de l’efficacité cherchée. Pour ne citer que quelques possibilités, en voici trois : – encodage ordinal : chaque objet d’une collection apparaissant sur un arc est représenté par son numéro d’ordre, ce qui garantit à la fois l’unicité et la minimalité du chemin de données, avec l’obligation d’une implantation de couches interfaces assurant l’échange entre objet et index en entrée et en sortie. Si l’ordre d’indexation est quelconque, la complexité des circuits générés peut l’être également, entrainant des résultats décevants. – encodage par typage : lorsqu’un type est associé à un arc du graphe, ce type peut se voir attribuer des fonctions d’encodage et de décodage programmables. Cette technique donne le contrôle de la représentation numérique et permet de borner la complexité des opérateurs, peut-être au détriment de la dimension des chemins de données. Elle est utilisée pour les corps de Galois pour obtenir une représentation numérique que l’on sait ’bonne’ (voir section 5.2). – encodage par valeur : il utilise la classe de l’objet pour décider de la représentation numérique, par exemple représentation en base deux des entiers naturels. On rappelle que le conditionnement technologique d’un PLA s’effectue en utilisant des outils externes à la plateforme (SIS, MVSIS, PPart) en ciblant une technologie logique LUT-n.

Synthèse portable avec M ADEO

11

3.5. Intégration dans les langages et définition de la séquentialité La construction de chaînes de synthèse de haut niveau, portables sur le reconfigurable, est facilitée par l’archivage de composants en base de données et par des formats d’échange standards. Plusieurs expérimentations ont été menées dans cette direction : – BSS, outil de synthèse d’architecture orienté vers les traitements intensifs en signal et image : interface XML spécifiant des réseaux flots de données associés à un automate de contrôle (Diguet et al., 2000). – PIPs, outil de transformation de programme investigué en vue de la production d’accélérateurs vectoriels : production d’un automate associé à un cœur de boucles, décrit en Smalltalk-80 à partir du compilateur source (Ancourt et al., 1996). – RT-Builder, outil méthodologique appuyé sur le langage synchrone Signal(Le Guernic et al., 1991) : partitionnement du graphe flot en segments combinatoires synthétisés par Madeo, et reconstruction par insertion des retards, puis synthèse physique. – un modèle de programmation concurrente s’appuyant sur des processus Smalltalk communiquant par canaux bloquant. Madeo ne décide pas de l’emplacement des registres dans le circuit ou de les déplacer. Cette gestion des registres peut être faite en amont de la spécification haut-niveau, et en aval sous forme de retiming du circuit obtenu. La prise en compte des registres définit l’organisation des calculs, éventuellement en liaison avec un modèle de programmation particulier. Elle peut assurer un parallélisme de flot entre différentes zones du circuit et limiter les chemins critiques, par exemple pour un pipeline ou un circuit systolique. Elle permet, d’autre part, de mémoriser des variables d’état.

4. La synthèse physique 4.1. Modèle micro-architectural abstrait et modèles concrets Les micro-architectures des circuits reconfigurables sont décrites sur un modèle objet, que l’on qualifie d’abstrait, et qui autorise la description de niveaux hiérarchiques, de réplications de motifs et de capacité à router des signaux, ou des bus. Les éléments de calcul logiques ou numériques sont implantés dans ce modèle et on leur associe une sémantique (logique, numérique, mémoire, . . . ). Cette description est le modèle concret d’un composant reconfigurable, qui sera développé pour permettre les opérations de synthèse physique. La première étape de la prise en charge d’une nouvelle architecture consiste à rechercher ses primitives architecturales significatives : nœuds de calculs, mémoires, registres, canaux de communication, points de connexion programmables, aiguillages. Ces composants sont caractérisés sur la base de classes paramétriques disponibles.

12

Technique et science informatiques– 7/2006. SYMPA

En second lieu, les mécanismes de structuration sont utilisés pour bâtir le modèle concret. Les pavages permettent de décrire des matrices régulières d’éléments, les agglomérats permettent de regrouper logiquement des éléments au sein d’un même conteneur (par exemple un CLB, constitué de plusieurs LUTs). Chacune des entités est nommée pour autoriser des référencements ultérieurs, directs ou accompagnés d’un adressage géométrique. Ces deux mécanismes, couplés au lien systématique contenu → contenant, permettent de définir des adressages relatifs (la cellule à ma gauche), semi relatif (la cellule le plus à gauche sur ma ligne) ou absolu (la cellule 1@5). Le routage s’appuie sur ces mécanismes. La description des architectures peut être menée interactivement ou réalisée via un langage parenthésé, dont les mots clés permettent de décrire les primitives, les objets composés, et les connexions entre ressources. Ce langage supporte la notion de variable, pour pouvoir décrire des familles d’architecture paramétriques où la largeur des canaux de routage, la taille de la matrice, peuvent être modifiées en prospection architecturale. Cette caractéristique est très intéressante car en utilisant la généricité des outils de bas niveau, il est possible d’observer le comportement conjoint architecture-algorithme face à un benchmark en faisant évoluer l’un ou l’autre pour chercher une solution optimale. Les micro-architectures ne sont donc pas nécessairement un constat, mais peuvent être calculées.

4.2. Outils et algorithmes pour la synthèse physique La couche de synthèse physique doit construire une allocation de ressources de calcul et de routage à partir d’un réseau de composants conformes à l’architecture. Cette allocation (un circuit) peut participer à un système avec un statut de processus, présente des caractéristiques géométriques et physiques que l’on loge dans le composant, et présente l’intérêt pratique de permettre la construction d’une configuration, généralement appelée “bitstream”. Alternativement à la construction complète d’un composant, il est bien sûr possible d’extraire une configuration physique ou semiphysique de la base de données existante pour obtenir la fonction cherchée. Les algorithmes pour la synthèse physique implantés dans Madeo sont majoritairement empruntés à la littérature sur les FPGAs (Betz et al., 1999), le problème traité ici étant la construction d’outils ayant un niveau d’abstraction supérieur, opérant sur les architectures concrètes au travers de son modèle abstrait. Le placement-routage Le placeur routeur prend en entrée une liste de portes logiques LUT-n et applique une stratégie de type PATHFINDER (McMurchie et al., 1995) en arbitrant entre les différents signaux à router lors d’un conflit sur une ressource. Le routage point à point d’un signal repose sur l’algorithme de routage en labyrinthe proposé par Lee (Lee, 1961). Lors de la phase de description d’architecture (section 2.3), il est possible de paramétrer le coût d’allocation des différentes ressources pour en optimiser l’utilisation.

Synthèse portable avec M ADEO

13

La fonction générique calculant le coût de placement fournit un estimateur variable en fonction de la longueur des connexions vers les cellules environnantes. Ce coût est calculé à chaque phase du recuit simulé et est utilisé par le placeur. L’éditeur de circuit L’éditeur régulier permet la réplication programmée d’éléments de circuit. Ces programmes sont des entrelacements de synthèses physiques élémentaires, d’extractions de caractéristiques géométriques, de commandes de réplications et de routages de canaux. Ici encore les programmes sont portables, avec les contraintes de l’espace disponible sur un FPGA. Les opérateurs et les circuits réguliers sont construits de cette manière. La figure 3 montre la disposition de l’algorithme de tri linéaire pour le calcul de fiabilité d’un turbo décodeur, conditionné en serpentin sur une surface carrée par un petit programme Smalltalk d’environ une page. Le floorplanning Cet outil est basé sur l’algorithme TCG (Lin et al., 2001) qui représente les dispositions géométriques comme un assemblage de rectangles et une liste de contraintes sur leur position relative. Quatre opérations de base peuvent être appliquées sur un composant : la rotation, l’échange de position entre deux modules, l’inversion de la relation entre deux modules, et la translation. Ces différentes opérations sont utilisées dans un recuit simulé dont la fonction de coût intègre la boite englobante globale de l’agencement, le dépassement d’une boite englobante fixée comme contrainte et le coût d’interconnexion entre les modules. La pénalité appliquée sur la boite englobante augmente avec la décroissance de la température. La boite englobante par défaut (contrainte initiale) est celle de l’agencement par défaut avant optimisation, mise à l’échelle selon un facteur de 0.8. L’algorithme n’étant pas déterministe, le résultat obtenu n’est pas forcément optimal. Les composants manipulables pouvant être hiérarchiques, le floorplanner traite les composants de niveau le plus bas en premier lieu. Ceci implique de recalculer la boite englobante de chaque module à tous les niveaux du floorplan. Production des configurations et environnement matériel Après construction d’un circuit, il devient possible d’extraire l’état des points de configuration que l’on ordonnera dans un bitstream. En se basant sur les informations de nommage des différentes ressources introduites au moment de la description d’architecture (section 4.1), il est possible d’extraire une forme textuelle intermédiaire qui doit être reconditionnée en fonction du protocole de chargement du circuit. Plusieurs FPGA ont été modélisés partiellement ou complètement. Dans le cas du xc6200 et du FPGA basse consommation de G. Varghese(Varghese et al., 1999) la production complète des bitstreams était possible. Le banc de test actuel est un Virtex 1000 dont la configuration n’est pas publique, et qui est programmé en recopiant la description des circuits vers un outil d’interfaçage nommé JBit (Guccione et al., 1998) qui permet de générer des configurations qui sont ensuite téléchargées vers une carte PCI sur laquelle les tests sont effectués.

14

Technique et science informatiques– 7/2006. SYMPA

Figure 3. Calcul de la recherche du symbole le moins fiable d’un turbo décodeur BCH(128,120,4) placé-routé sur un modèle Virtex 1 (version cascadée de la section 5.1). L’entrée est en haut à gauche, la sortie au centre, à droite.

5. Synthèse logique : étude de circuits turbo décodeurs Cette section concerne une étude de cas sur le turbo décodeur qui a été déjà développé à l’ENSTBr en utilisant des méthodes classiques de conception (approche utilisant SystemC de CoCEntric (Piriou et al., 2004)). Deux parties de l’algorithme du turbo décodeur sont ici reprises en utilisant la plateforme Madeo (Andriamisaina et al., 2005) : la recherche des symboles les moins fiables et le calcul des syndromes. Après avoir donné les conditions de l’étude menée, nous dressons un bilan comparatif afin de mieux quantifier l’apport de la plateforme de synthèse Madeo pour ce type d’application. Les codes correcteurs d’erreurs (codage de canal) sont des solutions permettant d’améliorer la qualité des communications numériques. Le principe du codage canal est d’introduire de la redondance dans la séquence d’informations binaires dans le but de corriger les erreurs de transmissions à la réception. Les turbo codes sont une famille de codes correcteurs d’erreurs construits par concaténation de codes élémentaires (Berrou et al., 1993). Ils sont le résultat de deux innovations majeures : la concaténation de deux codes pour le codage et le décodage itératif. Le processus itératif proposé par R. Pyndiah en 1994 (Pyndiah et al., 1994) consiste à effectuer un décodage des lignes suivi d’un décodage des colonnes à l’aide d’un décodeur élémentaire EPSP (Entrées Pondérées et Sorties Pondérées) (voir figures 4 et 5). Le décodage itératif fournit de bonnes performances avec un faible niveau de complexité. Actuel-

Synthèse portable avec M ADEO

15

lement, ces codes sont considérés comme étant les plus efficaces pour le codage avec des gains de 2 à 4 dB par rapport aux codes correcteurs d’erreurs classiques. Reconstruction de la matrice

Matrice reçue Décodage des colonnes (demi−itération)

Décodage des lignes (demi−itération)

Décodage des colonnes (demi−itération)

Reconstruction de la matrice

Figure 4. Processus itératif de décodage. α

− R’k

Décodage d’une ligne(ou d’une colonne) de la matrice

Rk

Fk + +

Wk

*

+

R’k+

Dk

Délai

Figure 5. Décodeur élémentaire avec Rk information reçue du canal, Rk0 information venant de la demi-itération précédente, Wk information extrinsèque, Rk0+ information envoyée à la demi-itération suivante, Dk le mot décidé, α paramètre de pondération du décodeur propre à chaque demi-itération.

A chaque demi-itération, le décodeur exploite le décodage de l’itération précédente et il délivre en sortie l’apport du décodage courant. Chaque demi-itération se déroule comme l’indique la figure 5. Ce décodeur dispose de deux entrées et de deux sorties. La première entrée reçoit le mot d’information Rk0 du décodage précédent. Lors de la première demi-itération, cette information est égale au mot reçu du canal. Le décodeur effectue le décodage EPSP des lignes ou des colonnes du mot et délivre en sortie le nouveau mot Rk0+ tandis que la deuxième sortie délivre une copie du mot Rk . Lors de la dernière demi-itération, c’est la décision sur le mot Dk qui est retenue. L’algorithme de décodage du code élémentaire BCH (128,120,4) suit les premières étapes suivantes : 1) Réception du mot Rk0 2) Recherche des 5 symboles les moins fiables pour les 128 symboles du mot reçu, à partir des fiabilités de chaque symbole. 3) Construction des vecteurs de test P 0 0 j 4) Calcul du syndrome du 1er vecteur de test : S1 = r0 (α) = 127 j=0 rj ∗ α où rj représente un bit du vecteur de test et αj est un élément du corps de Galois GF (128). Le syndrome permet de détecter une erreur éventuelle dans le vecteur de test considéré. Il est de valeur nulle si et seulement si le mot reçu est un mot de code. Par conséquent, un syndrome non nul indique une erreur de transmission. P 5) Calcul des syndromes pour les 15 autres vecteurs de test : Si = S1 ⊕ j pos −

16

Technique et science informatiques– 7/2006. SYMPA

M F (j) où pos-MF(j) est la position du ou des bits inversés dans chaque vecteur de test. Les étapes suivantes de l’algorithme sont : la correction des 16 vecteurs de test, le calcul des métriques, la sélection du mot décidé et des mots concurrents, le calcul de la nouvelle fiabilité pour chaque symbole du mot décidé, le calcul de l’information extrinsèque et l’addition avec le mot reçu du canal.

5.1. Programmation d’éléments de turbo décodage Dans le cadre de l’étude du turbo décodeur, on s’intéresse à la recherche des 5 symboles les moins fiables (étape 2) et au calcul des syndromes (étapes 4 et 5). Pour la modélisation des différents calculs, on travaille directement au niveau des équations de l’algorithme de décodage en manipulant les données de manière abstraite. Cela implique la définition d’une arithmétique spécifique notamment pour le calcul du syndrome. Modélisation de la recherche des 5 symboles les moins fiables Cet algorithme correspond à la recherche des 5 symboles qui ont les plus petites fiabilités parmi les 128 symboles que l’on reçoit en entrées. On récupère les valeurs ainsi que les positions des fiabilités dans le vecteur des 128 symboles. La recherche du minimum se base sur un découpage hiérarchique effectuant la comparaison élémentaire de deux fiabilités en précisant leur position. Chaque fiabilité correspond à 4 des 5 bits d’un symbole. La position de la fiabilité minimale pouvant varier de la place 0 à 127. 0

1

2

127

3

0

1

2

127

3

fiabililité

fiabililité .........

position

.........

position

comparaison élémentaire (a)

comparaison élémentaire

(b)

Figure 6. Recherche des symboles les moins fiables et de leurs positions dans la version en cascade (a) et la version en arbre (b). On propose dans ce paragraphe deux organisations hiérarchiques basées sur ces comparaisons élémentaires : organisation en arbre ou en cascade illustrées en figure 6. Ces deux versions diffèrent essentiellement sur deux aspects : la dynamique des données et la latence du circuit. Dans l’organisation en arbre tous les noeuds connectés directement aux entrées ont la même dynamique de valeurs notamment pour les positions des valeurs (cette position pouvant être codée sur 1 bit en sortie du bloc

Synthèse portable avec M ADEO

0

...

n−1

motRecu

n

...

2n−1

motRecu

...

0

motRecu

motRecu

.........

motRecu

n−1

motRecu

...

2n−1

motRecu

motRecu

+

+

motRecu

.........

+

motRecu

............

+

n

17

+

+

+

+

(a)

(b)

+

Figure 7. Modélisation en cascade(a) ou en arbre du calcul du syndrome(b).

élémentaire de comparaison) alors que dans la version en cascade le codage de cette valeur de sortie varie au fil de la progression dans la cascade. La latence du circuit alors atteinte dans le cas de la cascade est proportionnelle au nombre de comparaisons élémentaires alors que dans la version en arbre elle varie en fonction de sa hauteur. Pour trouver les 5 éléments les moins fiables, on réplique 5 instances des circuits précédents. La première instance calcule le premier élément le moins fiable avec sa position. La seconde prend en entrée à la position du moins fiable trouvé précédemment la valeur maximale, ce qui permet de trouver le deuxième élément le moins fiable ainsi de suite pour trouver le troisième, quatrième et cinquième élément le moins fiable. Une version synchrone séquentielle de la recherche du ou des moins fiables peut aussi être envisagée. En effet, la cellule de comparaison élémentaire peut être utilisée en version synchrone avec un rebouclage sur une des entrées pour effectuer le calcul du moins fiable au fur et à mesure que les symboles arrivent de manière séquentielle. Pour calculer 5 moins fiables, le mieux est de redéfinir une cellule de base pouvant définir les 5 dernières fiabilités minimales à partir des minimaux des itérations précédentes et de la fiabilité du symbole courant. Modélisation du calcul des syndromes Le calcul des syndromes utilise des éléments du corps de Galois pouvant être directement modélisés avec Madeo en utilisant un typage spécifique. Le calcul se fait sur une trame de 128 bits représentés par les éléments rj0 , combinés aux éléments du corps de Galois représentés par αj par l’équation ci-dessous. Cette équation correspond donc à l’addition d’éléments du corps GF (128). La valeur de rj0 définit un filtre permettant de considérer ou non l’élément de GF (128) qui lui est associé dans la somme.

S1 =

127 X j=0

rj0 ∗ αj =

n−1 X j=0

rj0 ∗ αj +

2n−1 X j=n

rj0 ∗ αj + · · · +

127 X j=128−n

rj0 ∗ αj

18

Technique et science informatiques– 7/2006. SYMPA

Cette équation a été découpée en utilisant des éléments de base de taille variable pouvant prendre en compte l’addition de 2(n = 2), 4(n = 4) ou 8(n = 8) éléments du corps de Galois. Le calcul global du syndrome peut être effectué comme pour celui de la recherche des moins fiables en considérant une organisation en cascade d’éléments de type motRecu ou une organisation en arbre (les additions se faisant dans le corps de Galois). Ces deux organisations utilisant n éléments sont illustrées dans la figure 7. Le circuit permet de calculer non seulement le premier syndrome mais aussi tous les autres syndromes, car ceux-ci s’obtiennent par permutation des bits de signe représentés par rj0 . Arithmétique dans le corps de Galois Le calcul du syndrome utilise une arithmétique dans le corps de Galois GF (128) (l’opérateur + de la figure 7 ). Cette nouvelle arithmétique mise en place dans Madeo, a été construite de manière générique pour tous les corps de type GF (2n ). Il existe cependant d’autres propositions d’implémentation (Paar et al., 1997). Dans les corps finis du type GF(2n ), les éléments peuvent être représentés par des polynômes de degré n − 1 dont les coefficients appartiennent au corps GF(2) (réprésentant l’ensemble des entiers naturels modulo 2). On peut associer à ces éléments des valeurs binaires correspondant aux coefficients du polynôme associé. Ceci correspond à l’encodage par typage pour Madeo mais tout autre encodage pourrait être utilisé. On montre dans la section 5.2 l’influence du choix du codage sur la synthèse. Pour ces corps, on définit : – l’opération + comme un ou-exclusif des valeurs du codage binaire associées aux éléments du corps. – l’opération ∗ dans le corps de Galois s’effectue en réalisant la division euclidienne par un polynôme générateur, cependant il est classique d’effectuer ces opérations en utilisant des tables de logarithmes. La modélisation adoptée utilise des tables de logarithmes construites automatiquement en fonction du polynome générateur considéré pour le corps.

5.2. Synthèse et résultats avec Madeo Pour la synthèse de la recherche du symbole le moins fiable et celle du calcul du syndrome, les critères retenus ont été la granularité de la cellule de base à synthétiser par SIS, l’organisation algorithmique du problème et l’encodage des valeurs notamment pour des valeurs non entières comme dans le cas du syndrome. L’impact de ces métriques est évalué en donnant la complexité du circuit en nombre de LUTs. Les résultats obtenus dans cette étude sont donnés pour une architecture cible constante dont l’élément de base est une LUT à 4 entrées(LUT-4). Les optimisations de haut niveau sur le graphe initial de calcul ont été systématiquement appliquées avant

Synthèse portable avec M ADEO

19

d’effectuer la synthèse. La recherche du moins fiable Une seule cellule de base a été retenue pour cette étude, basée sur une décomposition hiérarchique comprenant un comparateur de fiabilité rendant le minimum de deux fiabilités et un multiplexeur récupérant la position du minimum. La cellule de base a une complexité maximale de 38 LUTs se répartissant en 31 LUTs pour la comparaison de deux fiabilités, 7 pour le multiplexeur. En utilisant les techniques de re-synthèse de la section 3.2, cette complexité peut être légèrement diminuée à 31 LUTs pour les cellules ayant une dynamique minimale pour le codage de la position (premier étage de la version en arbre ou première cellule de la version cascadée). Ce qui donne la complexité suivante pour les deux versions : – pour une organisation en cascade, on a 31 + 126 ∗ 38 = 4819 LUTs – pour une organisation en arbre, on a 31 ∗ 64 + 38 ∗ 63 = 4378 LUTs Ces résultats montrent que le gain est limité en utilisant la dynamique de données. La complexité des éléments associés aux éléments de base varie relativement peu, le seul élément fluctuant dans ce cas est le multiplexeur dont la complexité varie de 1 à 7 LUTs. Pour la décomposition en arbre, l’utilisation dégradée de ces multiplexeurs peut réduire sensiblement l’occupation de la surface à savoir 31 pour le premier étage, 33 pour le deuxième, puis 34, 35, 36 et 37 (soit globalement 31 ∗ 64 + 33 ∗ 32 + 34 ∗ 16 + 35 ∗ 8 + 36 ∗ 4 + 37 = 4045). Pour la version en cascade, la dynamique des données étant plus irrégulière, les dégradations progressives et prédictibles en complexité du multiplexeur ne sont pas observées. Synthèse du syndrome Dans le cas du syndrome, la granularité de la cellule de base motRecu est prise en compte (variation du paramètre n de la figure 6). Le tableau 2 donne l’impact de la granularité sur la complexité finale du circuit. La complexité en nombre de LUTs du tableau 2 correspond à une organisation algorithmique cascadée. La complexité minimale est trouvée pour une granularité de l’élément de base égale à 4 bits ce qui peut s’expliquer par la granularité choisie pour le FPGA cible (LUT-4). Granularité de la cellule de base nb LUTs

2 bits

4 bits

8 bits

16 bits

424

217

502

725

Tableau 2. Résultats des différents découpages en fonction du grain des éléments de base motRecu,pour une organisaton en cascade. Le tableau 3 montre l’impact de l’encodage des éléments du corps de Galois et de l’organisation algorithmique. Si l’on change l’encodage de ces éléments, encodage

20

Technique et science informatiques– 7/2006. SYMPA

Organisation algorithmique en cascade en arbre

encodage par typage 217 393

indexation (encodage ordinal) 217 1876

Tableau 3. Impact de l’encodage des valeurs sur la complexité du circuit en LUT(cas cellule de base 4 bits). ordinal au lieu de l’encodage par typage correspondant à celui de la section 5.1, on obtient des solutions plus coûteuses en surface. L’organisation en cascade donne un résultat plus intéressant en surface car tous les opérateurs + profitent des simplifications effectuées au niveau de la cellule motRecu, ce qui n’est pas le cas dans la version en arbre. Comparaison avec les résultats de SystemC Les résultats obtenus ont été comparés avec les résultats issus de la modélisation faite en SystemC à l’ENSTBr (Piriou et al., 2004). L’approche SystemC repose sur une description RTL de l’algorithme de décodage. Par exemple, pour le calcul du syndrome sont utilisés une mémoire de coefficients correspondant aux éléments du corps de Galois et des additionneurs à base de ou-exclusifs. La synthèse est ensuite effectuée avec SystemC Compiler de Synopsys (S YNOPSYS 2002) ciblant des FPGAs de même granularité que Madeo. Madeo effectue une synthèse à partir des équations abstraites proposant des variations architecturales (variations sur l’organisation hiérarchique). Les expressions utilisant des constantes entières ou non comme celles du corps de Galois sont simplifiées avant d’être synthétisées.

Syndrome Recherche du moins fiable

Madeo 217LUTs 4045LUTs (version combinatoire)

SystemC ∼580LUTs 5 × 127 comparaisons(4 bits) 4 × 127 décalages de 2 registres composés de 5 × 7 et 5 × 4 bascules

Tableau 4. Comparaison des complexités des circuits obtenus par Madeo et SystemC . Pour le calcul de syndrome un traitement parallèle des mots reçus a été effectué avec Madeo et SystemeC permettant ainsi leur comparaison. Cependant, pour la recherche des 5 symboles les moins fiables, la version SystemC utilise un traitement complètement séquentiel alors que l’approche Madeo reste combinatoire. Une solution séquentielle avec Madeo reste à étudier afin de raffiner la comparaison. Un circuit placé-routé avec les outils physiques de Madeo (version combinatoire et cascadée de la recherche des moins fiables) est donné dans la figure 3.

Synthèse portable avec M ADEO

21

Pour le calcul du syndrome, Madeo permet de réduire la surface du circuit d’environ 50%. Cette solution est aussi meilleure en performance puisque le chemin critique utilise uniquement 31 additions dans GF(128) après simplification des expressions et qu’aucune mémoire n’est ici utile. Pour la recherche des symboles les moins fiables, le circuit est plus rapide mais plus étendu en surface car il est totalement combinatoire. La réduction de complexité obtenue avec Madeo est due essentiellement à ses optimisations de haut niveau qui permettent de supprimer les termes constants utilisés dans le code et à la prise en compte de la dynamique des chemins de données. Le cadre Madeo offre aussi l’avantage d’être générique, les deux exemples pouvant être réutilisés dans un autre contexte de turbo decodeur. Une implémentation complète d’un turbo décodeur BCH(128, 120, 4) avec Madeo est actuellement à l’étude.

6. Synthèse physique : investigations précoces pour les nano-fabriques Les composants nanoélectroniques ne seront considérés comme des solutions intéressantes que s’ils atteignent et surpassent les technologies actuelles pour un ensemble de critères tels que le coût final d’une application par rapport au marché visé, le temps nécessaire pour produire une application, la facilité d’intégration logicielle, la réutilisabilité des composants, les performances, la consommation et la surface utilisée. Madeo peut être utilisé comme outils d’investigation vers les nanotechnologies (Poungou et al., 2005, Fabiani et al., 2004). L’intérêt de ces investigations est de permettre le dessin d’architectures de traitement précoces, de manière à pouvoir confirmer ou infirmer une idée élaborée dans le cadre d’un laboratoire technologique, en terme d’équilibres de ressources logiques ou de connexions, en terme de performance ou de résistance aux défauts. Cette section présente l’approche de modélisation en cours de développement au contact de chercheurs travaillant sur les nanofabriques. Le développement de dispositifs nanotechnologiques nécessite des modèles d’architectures capables de répondre aux contraintes imposées. Tout laisse à penser que le meilleur usage de ces nouvelles technologies sera réalisé avec un modèle discret, proche de celui des circuits reconfigurables, avec une topologie simple, régulière et tolérante aux fautes : – Les procédés de fabrication : l’auto-assemblage (V.Zhirnov et al., 2001) est la piste privilégiée : les entités moléculaires sont chargées de s’organiser entre elles. Compte tenu des contraintes de ce type d’assemblage, le modèle architectural ne peut être qu’une interconnexion régulière de composants de faible granularité. – Les défauts de fabrication : une architecture régulière à grain fin redondante est la seule possibilité pour maîtriser le taux d’erreur important : après construction il faut détecter les cellules déficientes, et relier cette connaissance à des outils de programmation adaptables qui évitent l’usage des zones déficientes. – Le modèle de programmation : étant donné que le procédé d’auto-assemblage ne peut générer que des structures simples, il faut reporter la complexité matérielle actuelle dans le logiciel, c’est à dire émuler le comportement d’une machine complexe

22

Technique et science informatiques– 7/2006. SYMPA

sur une immensité de composants simples. C’est dans ce cadre qu’ont été définies les nanofabriques qui désignent une organisation régulière de circuits comportant des éléments logiques réalisés en utilisant une nanotechnologie.

6.1. La prise en charge des nanofabriques André Dehon (DeHon, 2001) et Seth Goldstein (Goldstein et al., 2001) ont proposé des architectures de nanofabriques, définies comme un réseau bidimensionnel de composants appelés clusters qui contiennent des blocs logiques (nanoblocs). Le nanobloc est l’unité de base configurable que l’on peut rapprocher d’un bloc logique (CLB) de FPGA, même si la reconfiguration d’un tel dispositif reste un problème ouvert et non résolu. Un nanobloc regroupe des fonctions booléennes élémentaires composées sous forme de structure de type PLA pour élever le grain logique. Physiquement, le nanobloc comporte deux réseaux de fils orthogonaux disposés sur deux plans distincts. Un transistor moléculaire liant les deux plans est disposé à chaque croisement de fils pour implanter des fonctionnalités logiques. L’analogie entre la modélisation de nanofabriques et la modélisation d’architectures reconfigurables paraît naturelle : dans les deux cas, il s’agit d’architectures régulières, organisées hiérarchiquement en matrices de blocs identiques.

Figure 8. Illustration des outils sur une architecture de nanofabrique, focalisée sur 2 nanoblocs configurés pour mettre en oeuvre un additionneur 2-bits. Les points noirs ou blancs symbolisent respectivement un nano-transistor PFET ou NFET.

Synthèse portable avec M ADEO

23

Plusieurs modèles de nanofabriques et de clusters ont été modélisés avec Madeo, ce qui permet d’ores et déjà de mettre en œuvre des applications sur ces architectures prospectives. Par exemple la figure 8 montre une copie d’écran d’un cluster de nanofabrique modélisé, configuré pour réaliser un additionneur 2-bits. L’exploration architecturale permet notamment de définir et d’évaluer la combinaison de différentes dimensions pour les clusters (en nombre de nanoblocs) et pour les nanofabriques (en nombre de clusters). Le temps de modélisation d’une telle architecture est très réduit puisqu’il est possible de répliquer un motif, en exploitant la régularité du modèle. Par exemple, la modélisation de cette nanofabrique est réalisable en moins d’une demijournée pour un concepteur qui maîtrise la grammaire de définition d’architectures.

6.2. Contraintes nouvelle pour la programmation de nanofabriques De nouvelles contraintes de programmation apparaissent avec les nanotechnologies. En prenant comme cadre une nanofabrique sur laquelle on veut mettre en oeuvre un graphe d’opérations, on peut prévoir différentes évolutions évoquées ci-après. 1) Gestion des défauts : même si les nanoblocs sont dotés de mécanismes redondants pour maximiser la fiabilité du calcul, la phase de programmation doit permettre d’isoler des zones défectueuses au niveau nanobloc ou plus probablement au niveau cluster, en invalidant ces ressources pour la phase de placement-routage. Par construction, nos outils savent s’adapter à des architectures dégradées. 2) Routage : dans le modèle de nanofabrique les nanoblocs sont utilisés pour l’implémentation de la logique mais aussi pour le routage interne du cluster. Cela a évidemment une implication forte sur le processus de placement-routage. Il serait possible dans un premier temps de reprendre le modèle LUT pour considérer qu’une seule sortie est calculée dans un nanobloc, les autres sorties étant disponibles pour le routage. Dans un second temps, il faudra être capable de permettre l’implémentation de plusieurs fonctions logiques dans un seul nanobloc tout en garantissant une solution de routage. 3) Configuration de la structure interne des nanoblocs et partitionnement : la nature des nanoblocs implique qu’il n’est pas possible de garantir que toutes les fonctions logiques théoriquement implémentables le soient réellement. En effet les interférences produites au niveau de chaque connexion entre les deux couches de fils induisent des perturbations. Le problème de configuration interne d’un nanobloc ne se résume donc pas à coder une fonction logique sous forme de somme de produits : il faut aussi trouver un placement des connexions qui soit valide (Moritz et al., 2004). Différentes alternatives sont envisagées pour trouver un tel placement. - la simulation : la simulation physique consiste à modéliser les phénomènes physiques interagissant au sein d’un nanobloc pour vérifier que son comportement est conforme à la logique codée. Dans ce cadre, un outil de placement interne pour nanobloc peut opérer par recuit simulé, la fonction de coût étant issue du simulateur.

24

Technique et science informatiques– 7/2006. SYMPA

- un ensemble de contraintes : pour ce qui est des travaux les plus avancés, le placement interne d’un nanobloc est déterminé manuellement puis vérifié par simulation. S’il n’existe pas encore de contraintes de placement précisément énoncées, l’une des règles de base semble être d’éloigner autant que faire se peut les points de connexion actifs les uns des autres. Lorsque de telles règles et contraintes auront été formellement énoncées, des algorithmes génériques de placement de type constructif pourront entrer en action. - le pré-calcul : si la complexité des nanoblocs le permet, une possibilité est de prévoir le pré-calcul de toutes les fonctions implémentables pour un nanobloc donné, par la simulation exhaustive de toutes les configurations possibles. Le placement interne d’un nanobloc consisterait alors uniquement à identifier une fonctionnalité en bibliothèque et à suivre le patron pré-déterminé. Dans ce cadre, l’un des enjeux de l’exploration architecturale est de déterminer une borne à la taille des clusters rendant réaliste un tel pré-calcul. Le placement interne des nanoblocs influe aussi sur l’étape amont de partitionnement des calculs, qui vise à attribuer un ensemble de fonctions logiques à chaque nanobloc alloué. Une vérification conjointe de la faisabilité physique de l’implémentation des ensembles de fonctions sur un nanobloc est nécessaire. Celle-ci peut être faite selon deux approches : (1) une vérification à chaque fois qu’un ensemble de fonctions est défini pour un nanobloc ; (2) une vérification après-coup de tous les ensembles de fonctions définis, pouvant entraîner une remise en cause totale ou partielle (par recuit simulé par exemple) du partitionnement.

7. Conclusion Les progrès technologiques sont très rapides et ne laissent souvent pas la possibilité d’établir sainement les architectures logicielles les plus rationnelles. Concernant le reconfigurable, l’impression dominante reste l’immaturité des outils et des concepts. L’expérience de Madeo a montré que l’on obtient une alternative efficace aux HDLs en déplaçant quelques frontières dans l’ossature logicielle, et surtout en ouvrant systématiquement les modèles pour permettre les nécessaires interactions en programmation, compilation et système. Cette approche est viable techniquement et scientifiquement du point de vue des concepteurs technologiques, y compris en prenant en charge l’évolution du grain fin vers les chemins de données. L’approche générique objet apporte la portabilité aux concepteurs d’outils de compilation pour les futurs System-on-chips intégrant des unités reconfigurables. L’ouverture des outils de synthèse est également importante pour la prospection et l’évaluation architecturale pour les nanotechnologies en émergence. Madeo est déjà une solution effective dans ce domaine et propose des mécanismes de migration du reconfigurable vers ces nouvelles technologies. Un autre aspect décrit par cet article est la flexibilité accrue dans la spécification et l’usage des arithmétiques. Les opérateurs utilisés dans les langages ont longtemps

Synthèse portable avec M ADEO

25

été considérés comme un point d’appui fondamental, qu’il s’agisse de l’ALU d’un processeur, ou qu’il s’agisse d’opérateurs optimisés dans une chaîne de synthèse matérielle. Le reconfigurable donne plus de lattitude, et une chaîne de compilation qui lève le bridage artificiel sur les opérateurs peut être à la fois plus efficace pour la productivité et pour l’efficacité des traitements. Plusieurs développements menés sur les corps de Galois, dont les modules de turbo-décodeurs, ont montré que l’optimisation des expressions prévaut sur l’optimisation locale des opérateurs. Le langage objet Smalltalk-80 utilisé dans Madeo n’est plus une nouveauté, mais reste une référence par rapport à des approches de conception objet en vogue. Dans le futur, nous voudrions améliorer le statut des composants synthétisés par rapport aux concepts du langage (classes, méthodes, messages), mais aussi réfléchir au rôle de la concurrence implicite (parallélisme applicatif) ou explicite, et à l’intégration dans une machine virtuelle. Un pas dans cette direction, a été le développement d’un atelier assurant la synthèse d’applications pour un capteur de vision CMOS (IVP), à partir de code Smalltalk-80 typé statiquement (Fabregat et al., 1999). Remerciements Les travaux présentés dans cet article bénéficient des soutiens financiers émanant du projet national RNTL OSGAR et du projet PRIR VALMADEO soutenu par la région Bretagne.

8. Bibliographie Ancourt C., Coelho F., Creusillet B., Keryell R., « How to Add a New Phase in PIPS : the Case of Dead Code Elimination », 6th Workshop on Compilers for Parallel Computers, CPC’96, décembre, 1996. Andriamisaina C., Dezan C., Jego C., Pottier B., « Synthèse abstraite d’éléments de turbodécodeurs en bloc pour circuits reconfigurables », SympA’2005 (GDR ARP), avril, 2005. Berrou C., Glavieux A., Thitimajshima P., « Near Shannon limit error-correcting coding and decoding : turbo codes », IEEE Int. Conf. Communications, vol. 2, p. 1064-1070, mai, 1993. Betz V., Rose J., Marquardt A., Architecture and CAD for Deep-Submicron FPGAs, Kluwer Academic Publishers, Norwell, MA, USA, 1999. Caspi E., Chu M., Huang R., Yeh J., Wawrzynek J., DeHon A., « Stream Computations Organized for Reconfigurable Execution (SCORE) », FPL, p. 605-614, 2000. DeHon A., « Array-based Architecture for Molecular Electronics », First Workshop on NonSilicon Computation, février, 2001. Diguet J. P., Chillet D., Sentieys O., « A Framework for High Level Estimations of Signal Processing VLSI Implementations », Journal of VLSI Signal Processing Systems, vol. 25, n◦ 3, p. 261-284, juillet, 2000. Fabiani E., Gouyen C., Pottier B., « Intermediate level components for reconfigurable platforms », Synthesis, Architectures and Modeling of Systems (SAMOS 3), vol. 3133, SpringerVerlag, Samos, Grece, 2003.

26

Technique et science informatiques– 7/2006. SYMPA

Fabiani E., Lagadec L., Pottier B., Poungou A., Yazdani S., « Abstract execution mechanisms in a synthesis framework », in , N. Carter, , S. Goldstein (eds), Workshop on Non-Silicon Computations (NSC3), (conjoint avec ISCA 2004, ACM et IEEE), juin, 2004. Fabregat G., Leon G., Le Berre O., Pottier B., « Embedded system modeling and synthesis in OO environments. A smart-sensor case study », CASES’99, octobre, 1999. Gao M., Jiang J.-H., Jiang Y., Li Y., Sinha S., Brayton R., « MVSIS », International Workshop on Logic Synthesis, juin, 2001. Goldberg A., Robson D., Smalltalk-80 : the language and its implementation, Addison-Wesley Longman Publishing, 1983. Goldstein S. C., Budiu M., « Nanofabrics : Spatial Computing Using Molecular Electronics », 28th International Symposium on Computer Architecture, p. 178-191, 2001. Guccione D. L. S., Sundararajan P., « JBits : A Java-based Interface for Reconfigurable Computing », 2nd Annual Military and Aerospace Applications of Programmable Devices and Technologies Conference (MAPLD), 1998. Lagadec L., Pottier B., Villellas-Guillen O., « An LUT-Based high level synthesis framework for reconfigurable architectures », Domain-Specific Processors : Systems, Architectures, Modeling, and Simulation, Marcel Dekker, p. 19-39, novembre, 2003. Le Guernic P., Gautier T., Le Borgne M., Maire C. L., « Programming Real-Time Applications with SIGNAL », Proceedings of the IEEE, vol. 79, n◦ 9, p. 1321-1336, septembre, 1991. Lee C. Y., « An Algorithm for Path Connections and its Applications », IEEE Transactions on Electronic Computers, vol. 10, p. 346-365, 1961. Lemarchand L., « Parallel Performance Directed Technology Mapping for FPGA », IEEE Southwest Symposium on Mixed-Signal Design, Tucson, USA, 1999. Lin B., Whitcomb S., Newton A., « Symbolic don’t care and equivalence in high level synthesis », Logic and architecture synthesis, Elsevier, 1991. Lin J. M., Chang Y. M., « TCG : A Transitive Closure Graph-Based Representation for NonSlicing Floorplans », 2001 Design Automation Conference (DAC-01), juin, 2001. Llopis J.-L., Pottier B., « Smalltalk blocks revisited, a logic generator for FPGAs », Field programmable Custom Computing Machine (FCCM’96), IEEE press, Napa, CA, 1996. McMurchie L., Ebeling C., « PathFinder : A Negotiation-Based Performances-Driven Router for FPGAs », International Symposium on Field Programmable Gate Arrays, p. 111-117, février, 1995. Moritz C. A., Wang T., « Latching on the Wire and Pipelining in Nanoscale Designs », Workshop on Non-Silicon Computation (NSC-3), juin, 2004. Paar C., Rosner M., « Comparison of Arithmetic Architectures for Reed-Solomon Decoders in Reconfigurable Hardware », FCCM, Los Alamitos, CA, p. 219-225, 1997. Piriou E., Jego C., Adde P., Jézéquel M., « System level design using SystemC : a case study of block turbo decoder », XIX Conference on Design of Circuits and Integrated Systems, novembre, 2004. Poungou A., Fabiani E., Lagadec L., Pottier B., « Du reconfigurable aux nano-fabriques : composants nano-électroniques et outils de modélisation », SympA’2005 (GDR ARP), avril, 2005. Pyndiah R., Glavieux A., Picart A., Jacq S., « Near optimum decoding of product codes », IEEE GLOBECOM’94, novembre, 1994.

Synthèse portable avec M ADEO

27

Sentovich E. M., Singh K. J., Lavagno L., Moon C., Murgai R., Saldanha A., Savoj H., Stephan P. R., Brayton R. K., Sangiovanni-Vincentelli A., SIS : A System for Sequential Circuit Synthesis, Rapport Technique n◦ UCB/ERL M92/41, DEECS, Berkeley, mai, 1992. S YNOPSYS, Describing Synthesizable RTL in SystemC. 2002. Varghese G., Zhang H., Rabaey J., « The design of a low energy FPGA », ISLPED ’99 : 1999 international symposium on Low power electronics and design, p. 188-193, 1999. V.Zhirnov V., Herr D. J., « New Frontiers : Self-Assembly and Nanoelectronics », IEEE Computer, vol. 34, n◦ 1, p. 34-43, janvier, 2001.

Catherine Dezan a reçu son diplôme d’ingénieur de l’Enst-Bretagne en 1989 et a soutenue une thèse en Informatique en 1993. Maître de Conférences en Informatique à L’UBO depuis 1994, ses axes de recherches concernent principalement les méthodologies de conception d’applications sur circuits reconfigurables. Erwan Fabiani a soutenu sa thèse en Décembre 2001 sur l’implémentation automatique de réseaux réguliers sur circuits reconfigurables à l’IRISA. Maître de conférences depuis 2002, ses travaux portent principalement sur les architectures régulières et la modélisation par processus communiquants. Christophe Gouyen a un DESS en informatique obtenu en Juin 2002 à l’UBO en informatique. Il a travaille sur le projet RNTL OSGAR en tant qu’ingénieur de recherche en 2003-2005. Loïc Lagadec a soutenu sa thèse en Décembre 2000 sur l’abstraction, modélisation et outils de CAO pour les architectures reconfigurables dans l’équipe Architectures et Systèmes. Maître de conférences depuis 2002 à l’UBO, il contribue aux diverses extensions de la plateforme Madeo pour les aspects SOC et nanotechnologies. Bernard Pottier est maître de conférences (HDR) en informatique à l’Université de Bretagne Occidentale (Brest) et dirige l’équipe Architectures et Systèmes, FRE CNRS avec le LESTER depuis Janvier 2005. Ses recherches portent principalement sur la concurrence dans les architectures reconfigurables, et sur les outils de haut niveau pour la synthèse (projets ArMen et Madeo, projet RNTL Osgar, projet Morpheus). Une autre activité de recherche est l’application des langages objets en CAO, et l’efficacité de leur exécution. Caaliph Andriamisaina a reçu son diplôme d’ingénieur en électronique à l’Ecole Polytechnique d’Antsiranana en 2003. Il a effectué un DEA en Sciences et Technologies des télécommunications à l’UBO en 2004 . Depuis 2005, il est doctorant à l’Université de Bretagne Sud au sein du Laboratoire d’Electronique et des Systèmes TEmps Réels (LESTER) Alix Poungou est titulaire d’un DEA STT option signaux et circuit, obtenu en 2003 à UBO. Il prépare un doctorat sur les nanotechnologies et les architectures reconfigurables dans l’équipe A&S.

ANNEXE POUR LE SERVICE FABRICATION A FOURNIR PAR LES AUTEURS AVEC UN EXEMPLAIRE PAPIER DE LEUR ARTICLE ET LE COPYRIGHT SIGNE PAR COURRIER LE FICHIER PDF CORRESPONDANT SERA ENVOYE PAR E-MAIL

1. A RTICLE POUR LA REVUE : Technique et science informatiques– 7/2006. SYMPA 2. AUTEURS : Catherine Dezan, Erwan Fabiani, Christophe Gouyen, Loïc Lagadec, Bernard Pottier, Caaliph Andriamisaina et Alix Poungou 3. T ITRE DE L’ ARTICLE : Synthèse portable pour micro-architectures à grain fin Application aux turbo décodeurs et nano-fabriques 4. T ITRE ABRÉGÉ POUR LE HAUT DE Synthèse portable avec M ADEO

PAGE MOINS DE

40 SIGNES :

5. DATE DE CETTE VERSION : 22 mars 2006 6. C OORDONNÉES

DES AUTEURS

:

– adresse postale : Architectures & Systèmes, LESTER, FRE 2734 Département informatique UFR Sciences et Techniques Université de Bretagne Occidentale BP 809, 20 av Le Gorgeu 29285 Brest Cedex [email protected] – téléphone : 02 98 01 62 17 – télécopie : 02 98 01 62 16 – e-mail : [email protected] 7. L OGICIEL UTILISÉ POUR LA PRÉPARATION DE CET ARTICLE :          LATEX, avec le fichier de style , version 1.2 du 03/03/2005. 8. F ORMULAIRE DE COPYRIGHT : Retourner le formulaire de copyright signé par les auteurs, téléchargé sur :      

         

S ERVICE ÉDITORIAL – H ERMES -L AVOISIER 14 rue de Provigny, F-94236 Cachan cedex Tél : 01-47-40-67-67 E-mail : [email protected] Serveur web : http://www.revuesonline.com