• Aucun résultat trouvé

L'architecture DART [50] est une architecture recongurable dynamiquement à grain épais avec une fréquence d'exécution de 200 MHz. Elle possède une puissance calcula- toire supérieure à 4 GOPS et exige une puissance d'alimentation de 709 mW dont 100 mW pour la puissance dissipée par les courants de fuite. Nous allons présenter dans ce qui suit les caractéristiques architecturales de DART et son ot de conception.

B.1-1 Présentation Générale de l'architecture

La gure 3-11 présente l'architecture d'un cluster DART. Il intègre 6 DPR (Data Path Recongurable) inter-connectés par un réseau segmenté. Les communications entre ces DPRs peuvent être globales (le cas, par exemple, d'une mémoire qui peut approvision- ner en données des unités fonctionnelles appartenant à diérentes DPR) ou locales (le

cas, par exemple, de l'échange d'un résultat temporaire entre deux unités fonctionnelles appartenant au même DPR).

Figure 3-11  Architecture d'un cluster de DART. Il intègre 6 DPR inter- connectés par un réseau segmenté. Toutes les ressources de calcul du cluster accèdent à une même mémoire de données de 16 Kmots de 16 bits. Le contrôleur de conguration accède à la mémoire de conguration et a pour rôle de séquencer les instructions de conguration.

Chaque DPR (Figure 3-12) est constitué de 2 registres et 4 opérateurs ou UF (2 mul- tiplieurs/additionneurs et 2 UAL) connectés à 4 mémoires locales de données à travers un réseau multi-bus.

Les UFs du cluster DART supportent un fonctionnement de type SWP (Sub Word Parallelism) permettant d'exploiter le parallélisme au niveau des données. La tech- nique SWP (Figure 3-13) consiste à diviser les opérateurs arithmétiques (resp. un mot) de largeur N an de pouvoir exécuter en parallèle p opérations de largeur N/p bits (p≥ 2).

Toutes les ressources de calcul du cluster accèdent à une même mémoire de données. Celle-ci a été dimensionnée à 16 Kmots de 16 bits an d'assurer une certaine auto- nomie au cluster. Le cluster dispose encore de 24 mémoires locales distribuées entre les 6 DPRs. Ces mémoires, d'une capacité de 64 mots de 32 bits chacune, stockent les données manipulées au sein des DPRs. Chacune de ces mémoires est contrôlée par un

Figure 3-12  Architecture du DPR. Chaque DPR est constitué de 4 opérateurs (2 multiplieurs/additionneurs et 2 UAL) connectés à 4 mémoires locales de données à travers un réseau multi-bus. Ces mémoires, d'une capacité de 64 mots de 32 bits chacune, stockent les données manipulées au sein des DPRs. Chacune de ses mémoires est contrôlée par un GA local. Le congurateur détermine, à partir de la donnée de conguration, de quelle façon les UFs sont interconnectées, de quelle mémoire sont issues les données et dans quelle mémoire seront écrits les résultats.

GA (Générateur d'Adresses) local. Tous ces mouvements de données sont programmés statiquement et déterminés au moment de la compilation.

Les contextes de recongurations des DPRs sont réalisés sous la forme de ots d'ins- tructions de conguration (de 52 bits) qui forment le contexte de conguration. Ainsi, la principale tâche du contrôleur de conguration du cluster est de séquencer ces ins- tructions de conguration. En eet, il doit accéder à la mémoire de conguration et spécier, à partir de ces instructions, l'adresse de base et la taille de la donnée de con- guration ainsi que le DPR cible. Il doit aussi spécier quels GAs en sont concernées et leurs congurations des chemins de données ; c'est-à-dire qu'il doit charger leurs mémoires d'instructions.

Au niveau du DPR, le congurateur détermine à partir de la donnée de conguration de quelle façon les UFs sont inter-connectées, de quelle mémoire sont issues les données et dans quelle mémoire seront écrits les résultats.

La exibilité introduite au sein des DPRs autorise la dénition d'un chemin de données en adéquation avec le motif de calcul à exécuter. Deux modes de fonctionnement sont possibles :

Figure 3-13  Opérateurs SWP. La technique SWP consiste à diviser les opéra- teurs arithmétiques (resp. un mot) de largeur N an de pouvoir exécuter en parallèle p opérations de largeur N/p bits (p≥ 2).

 Dans le mode SW, seules les fonctions des UFs et les sources et destination de données sont modiées. Le mode de reconguration logicielle a été conçu an de répondre aux besoins inhérents aux zones de calculs irrégulières (dans lesquelles les motifs de calculs se succèdent sans ordre particulier et de manière non répétitive). Un cycle sut pour modier en mode SW la conguration d'un DPR. Dans ce cas, le modèle de calcul est comparable à celui des DSP VLIW conventionnels. A chaque cycle, les données sont lues et traitées puis les résultats sont rangés en mémoire. Ceci justie la qualication de logicielle de ce mode de reconguration ;

 En mode HW, les chemins reliant les opérateurs sont recongurés. Il faut alors 3 cycles pour recongurer un DPR et 1 cycle pour recongurer le réseau global. Ce mode répond aux besoins des traitements réguliers, tels que les c÷urs de boucles dans lesquels un même motif de calcul est utilisé pendant de longues périodes de temps. La reconguration HW consiste à spécier une conguration par le biais d'un ot d'instructions, puis d'adopter un modèle de calcul de type ot de données dans lequel une structure optimisée du chemin de donnée est gée. Une fois cette conguration spéciée, le contrôleur de conguration du cluster est donc libéré du contrôle des DPRs et n'a plus à accéder à la mémoire de conguration et à décoder de nouvelles instructions de conguration. Les informations de conguration sont alors stockées dans des latchs au sein des DPRs. Avec ce modèle de calcul il ne reste qu'à approvisionner les unités fonctionnelles en données. Le contrôle est ainsi dévolu aux générateurs d'adresses.

Il est aussi possible de privilégier le parallélisme de données en appliquant le concept de SCMD (Single Conguration Multiple Data). Dans ce cas, la même conguration est "exécutée" simultanément dans tous les DPRs concernés. Ce concept est une évolution

du concept SIMD dans lequel plusieurs opérateurs exécutent une même opération sur des jeux de données diérents. Dans le cadre du SCMD, le partage des congurations n'est plus limité aux seuls opérateurs mais est étendu aux DPRs.

B.1-2 Le flot de conception de DART

La chaîne de développement de DART, présentée sur la gure 3-14, est basée sur l'utilisation conjointe d'un front-end permettant la transformation et l'optimisation de code C (Suif [27]), d'un compilateur reciblable (environnement CALIFE [51] : outils CDART et ACG) et de l'outil GDART utilisant les techniques de synthèse de haut niveau issues de l'environnement BSS (Breizh Synthesis System) [52]).

Figure 3-14  Flot de conception de DART. Ce ot utilise un code source qui est tout d'abord manipulé par un front-end SUIF. Celui-ci permet d'optimiser le code à haut niveau et d'extraire le parallélisme de l'application. Une passe de partitionne- ment permet de distinguer les traitements irréguliers, les manipulations de données et les traitements réguliers. Les deux premiers types de code seront traduits en codes binaires par les outils ACG et CDART. Les traitements réguliers sont transformés en congurations de DPRs par le biais de l'outil GDART.

Le front-end SUIF permet d'optimiser le code à haut niveau, de générer un graphe de données et de contrôle (CDFG). Pour ce problème sont développées des passes spé- ciques de déroulage de boucles et d'extraction de c÷urs de boucles. Une passe de partitionnement permet ensuite de distinguer les traitements irréguliers, les manipu- lations de données et les traitements réguliers.

Les traitements irréguliers et les manipulations de données seront traduits en codes binaires via des passes classiques de compilation respectivement dans les outils ACG et CDART, à l'entrée desquels, une description en langage ARMOR de DART est fournie. Ces deux outils sont issus de l'environnement de compilation reciblable CALIFE. Les traitements réguliers sont transformés en congurations de DPRs par le biais de techniques issues de la synthèse comportementale des circuits dédiées : GDART transforme les motifs de calculs en congurations de DPRs ; ce module se base sur l'infrastructure de l'outil de synthèse comportementale BSS pour transformer le code C d'entrée en un graphe ot de données GFD (Graphe de Flot de Données). La tâche de ce module se limite à déterminer la structure du chemin de données qui implémentera au mieux ce GFD et à transformer cette structure en une conguration matérielle des DPRs. Ceci est fait en plusieurs étapes :

 réduction de boucle ; en eet, la principale contrainte lorsqu'il s'agit d'ordonnancer un GFD en vue de l'implémenter sur DART est qu'il est préjudiciable de maintenir des résultats intermédiaires sur plus d'un cycle. En cassant les boucles critiques par permutation d'opérateurs, la réduction de boucle permet de réduire cette latence en un cycle. Les permutations d'opérateurs doivent cependant garantir le maintien de la fonctionnalité du GFD ;

 réduction de la profondeur du graphe ; dans le cadre des boucles imbriquées si le nombre d'itérations de la boucle de plus bas niveau est faible, un pourcentage im- portant du temps d'exécution est consommé par les amorçages successifs des pipe- lines d'exécution. Une passe de parallélisation permet d'optimiser le GFD et d'en réduire la profondeur. L'algorithme est basé sur une fonction de recherche de suites d'addition ou de multiplications exécutées séquentiellement et candidates à la pa- rallélisation. Ces dernières sont évalués suivant des critères de dates d'exécution. A ce stade, les opérations doivent être assignées aux opérateurs et les entrées/sorties doivent être assignés à des mémoires ;

 l'allocation mémoire gère un tableau de correspondance qui associe à chaque variable le numéro de la mémoire qui la stocke ;

 l'assignation des opérateurs a pour but de mettre à jour la table de correspondance et de générer le ot d'instructions permettant de spécier la conguration matérielle

des chemins de données.

B.2 Formulation de la problématique et présentation