• Aucun résultat trouvé

donc pas de la distance entre la source et la destination contrairement à ce qui se passe géné-ralement sur un réseau statique non complètement connecté. Ceci est un avantage en mode SIMD vu qu’il y a une préservation de la synchronisation.

Il serait intéressant d’adapter le choix du réseau d’interconnexion (parmi les trois cités précédemment) en fonction des besoins de l’application, de la taille de la grille de PEs uti-lisée ainsi que de l’espace disponible sur la puce. Il est à noter que le modèle mppSoC ne se limite pas aux différents types de réseaux proposés (voisinage et mpNoC). Le concepteur peut intégrer le réseau de voisinage de son choix (avec une autre topologie) ainsi qu’un autre réseau d’interconnexion avec le mpNoC (ne figurant pas dans les réseaux listés précédem-ment). Pour ce fait, il doit respecter l’interface requise par mppSoC pour une intégration directe avec le reste de l’architecture. Cette liberté favorise encore la flexibilité du modèle mppSoC.

3.3.3 Aspect programmable

La diversité des algorithmes ainsi que leurs nombreux paramètres laissent au concepteur une grande liberté lors de l’implémentation. L’exploration et la comparaison de différentes

3.3 Analyse du modèle architectural de mppSoC 51

solutions algorithmiques requièrent l’utilisation d’architectures programmables. Donc à la différence des accélérateurs SIMD matériels spécifiques, mppSoC peut être adapté à l’ap-plication tout en gardant son aspect programmable. Cet aspect est garanti par l’utilisation de processeurs programmables dans l’implémentation de l’architecture. MppSoC exécute un programme data parallèle, un modèle de programmation qui convient bien aux appli-cations de TSS. De ce fait, les fonctions de traitement élémentaire (convolution, corrélation, etc.) peuvent maintenant être développées en microcode et non plus en langage de descrip-tion matérielle, tel que VHDL, ce qui réduit drastiquement le coût de développement. Cela permet en outre de faire des évolutions à moindre coût en fonction des évolutions de l’al-gorithme tout le long du développement du système. La programmabilité permet donc de tester de nouveaux algorithmes et ainsi répondre à leur évolution continue.

Les aspects liés à la programmation jouent de plus un rôle majeur dans la définition de l’architecture. En effet, très souvent, la programmation des architectures spécialisées est jugée extrêmement difficile en raison des faiblesses des environnements de programmation, de l’inadaptation du langage, et parfois de l’impossibilité de produire un code faisant un bon usage des originalités de l’architecture. C’est la raison pour laquelle il est indispensable de définir un langage parallèle ou langage adapté au modèle d’exécution de l’architecture conçue, tel est le cas pour mppSoC.

Une des questions prédominantes suite à l’analyse de l’état de l’art est de rendre l’archi-tecture SIMD adaptée à l’application considérée (exprimée à travers la question Q1 po-sée à la fin du chapitre 2). La section 3.3 apporte des éléments de réponse pour pouvoir adapter le système mppSoC aux besoins applicatifs. Dans cette section, nous avons dé-voilé les aspects et les caractéristiques qui peuvent être paramétriques et flexibles dans une architecture SIMD. En effet, mppSoC est conçu comme un système modulaire se basant sur un assemblage de composants. Le concepteur a donc le choix de construire une configuration intégrant les composants dont il a besoin pour exécuter son appli-cation. Une configuration SIMD de base doit contenir une unité de contrôle avec son réseau de PEs. Les réseaux de communications et les périphériques sont les composants auxiliaires à intégrer selon les besoins. Le concepteur doit aussi spécifier les paramètres de son système. Paramétrer le nombre de PEs intégrés ainsi que la taille des mémoires permet de répondre aux exigences de diverses applications avec différentes tailles et complexités. Ceci favorise l’extensibilité du système.

Les réseaux de communication à intégrer dans mppSoC sont relativement flexibles. Le concepteur sélectionne un choix parmi ceux existants. En effet, le réseau de voisinage peut avoir différentes topologies : anneau ou linéaire dans le cas d’un arrangement li-néaire de PEs ; maille, tore ou Xnet dans le cas d’une grille 2D de PEs. Le mpNoC intègre un réseau d’interconnexion qui peut varier ayant un type au choix parmi trois possibles (bus, crossbar ou MIN) selon les besoins et contraintes. Cette flexibilité introduite au niveau des communications augmente les performances du système parallèle.

La programmabilité de mppSoC favorise encore la flexibilité du système et permet d’exécuter différents algorithmes de TSS. Coder l’algorithme dans un langage data pa-rallèle adapté au modèle d’exécution SIMD de mppSoC tire profit des spécificités de l’architecture conçue et accroît son efficacité.

Ayant un aspect paramétrique, relativement flexible ainsi que programmable, mppSoC peut être adapté à divers besoins applicatifs.

À travers tout ce que nous venons de voir, il convient que dans ces travaux, nous sommes entrain de traiter un problème d’adéquation architecture/application/programma-tion. Nous partons d’un programme data parallèle qui tourne bien sur un système mppSoC à architecture SIMD paramétrique, elle même peut être adaptée selon les besoins applicatifs. Certains aspects architecturaux clés de mppSoC seront encore justifiés et validés dans la section suivante.

3.4 Validation du modèle mppSoC

Afin de montrer la pertinence des aspects flexibles et paramétriques de mppSoC, cette section survole quelques algorithmes data parallèles et présente la performance de mppSoC à répondre à leurs besoins. Les algorithmes choisis sont une multiplication de matrices et un algorithme de réduction. Ils jouent un rôle important dans les applications de TSS.

3.4.1 Algorithme de multiplication de matrices parallèle

Dans ce paragraphe, nous étudions le comportement d’un algorithme de multiplications de matrices (MM) carrées d’ordre N sur mppSoC en variant le nombre de PEs, la topologie du réseau de voisinage ainsi que l’arrangement des PEs. Nous voulons calculer C = AxB selon l’équation : cij = N

k=1 aikbkj avec 1 ≤i, j ≤ N (3.1)

Nous procédons alors à une étude théorique puis une étude expérimentale. 3.4.1.1 Étude théorique

Sur une architecture séquentielle, cet algorithme nécessite N multiplications et N addi-tions sur N2éléments ce qui fait un total de 2N3opérations. La complexité séquentielle d’un tel algorithme est alors de l’ordre de o(N3). Vis à vis de la taille mémoire, nous avons besoin d’une mémoire pour stocker trois matrices de taille N2et donc le besoin en mémoire est de o(N2).

Nous allons maintenant comparer les performances de cet algorithme en considérant une exécution parallèle sur P processeurs. Nous assumons que N est divisible par P. Chacun des processeurs doit d’abord disposer des données de départ (des matrices A et B). Donc l’ACU va envoyer 2N2 données vers P processeurs ce qui engendre un coût de communication de l’ordre de o(2PN2). Si les P PEs sont agencés en un réseau linéaire inter-connectés en anneau, alors une manière de parallélisation de l’algorithme de MM est de répartir A en blocs de lignes circulés entre les PEs alors que chacun va avoir une colonne de B et en résultat pourra calculer une colonne de C. La figure 3.8 illustre cette partition. Cette exécution permet de calculer en parallèle toutes les colonnes de C nécessitant N étapes. L’algorithme parallèle est le suivant :

Copier A(idPE) dans Tmp

3.4 Validation du modèle mppSoC 53 PE(P) PE(1) PE(2) Partitionnement et circulation de A Partitionnement statique de B Partitionnement statique de C

FIGURE3.8 – Partitionnement sur un anneau de PEs