• Aucun résultat trouvé

Performances applications multiprocesseur

Dans le document Bi-Cortex-M3 (Page 54-57)

Target System

5.2 Performances applications multiprocesseur

Comme expliqué dans l’introduction, l’efficacité d’utilisation des ressources offertes par le système dépends surtout du logiciel et de son implémentation. La Figure 34 tirée d’un cite reconnu de matériel informatique montre bien cette dépendance. Une application est testée sur un processeur à 6 cœurs en activant les cœurs l’un après l’autre et en effectuant un benchmark. La même application est exécutée mais à gauche elle n’est pas du tout optimisée pour utiliser plusieurs cœurs alors qu’à droite elle est au contraire parfaitement optimisée pour utiliser au maximum les ressources du système. A gauche les performances stagnent tandis qu’à droite chaque cœur ajouté fournit le même gain absolu.

Figure 34 : Optimisation du software

Voici un bref aperçu des gains constatés avec l’application de calcul des décimales de π.

En mesurant le temps nécessaire à obtenir la table des 508 premières décimales avec un puis deux processeurs utilisés, une idée du gain obtenu et de l’overhead de parallélisation ajouté peut être extrapolée. Si le temps l’avait permis, l’horloge temps réel interne du processeur 1 aurait pu fournir des valeurs très exactes de la durée de chacune des tâches. Un simple chronomètre suffit toutefois à constater le gain obtenu.

Pour compléter la tâche avec un seul processeur actif, une moyenne de 11,5 secondes a été mesurée. La même tâche avec les deux processeurs actifs requiert une moyenne de 6 secondes. En réalisant la mesure sur une valeur plus grande de décimales de π, il est possible de diminuer l’erreur de mesure. En modifiant la

Le gain constaté est donc bien une multiplication par 2 des performances. L’overhead peut être quantifié à à peut près 0.25 s (6 – (11.5/2)), ce qui est minime en comparaison avec le temps de traitement effectif. Certaines fois, rendre une application parallélisable demande tellement d’overhead que tout le gain que pourrait apporter la parallélisation disparaît à cause de l’ajout de code. Un exemple très parlant de ce cas de figure est visible en Figure 35. Le passage de 1 à 2 cœurs apporte un léger gain mais tout cœur supplémentaire entraine une baisse des performances dues à soit à l’overhead soit aux switching contexts.

Figure 35 : Overhead trop important

Ce gain quasi idéal de 2 était prévisible dès le départ vu la très forte indépendance des tâches des deux processeurs. Dans la plus part des applications, les échanges et la synchronisation entre les processeurs sont beaucoup plus forts. Les gains en général constatés sont alors plutôt de 1,5 à 1,6 pour l’ajout d’un second cœur, avec un gain décroissant pour chaque cœur supplémentaire. Voici un exemple qui illustre le cas le plus courrant (Figure 36) :

Figure 36 : Cas de gain le plus courant

6 6 Co C on nc cl lu us s io i on ns s e e t t p pe e r r sp s pe e c c ti t iv v e e s s

Le développement matériel de la carte n’a pas posé de difficultés majeures. Un excellent choix pour l’architecture mémoire du système ainsi qu’un modèle de processeur utilisé offrant des périphériques et des contrôleurs efficaces et entièrement configurables ont largement contribué à la facilité de conception du système. Il est intéressant de noter que le gestionnaire d’alimentation a été largement surdimensionné (800mA) au vu des 150mA de consommation maximale observée. Les périphériques USB ainsi que l’utilisation de l’horloge temps réel n’ont pas été testés et pourraient faire l’objet de développements futurs.

La compréhension des mécanismes complexes cachés par un IDE configuré et fonctionnel a permis d’acquérir une bonne expérience du cross-developpement et du remote debugging. L’aide initiale apportée par le projet NTRT a permis d’appréhender les bases de ces techniques. La configuration d’OpenOCD et de GDB est l’étape fondamentale pour constituer une toolchain fonctionnelle.

La présence de 2 processeurs sur le système force l’utilisation de deux instances d’Eclipse. OpenOCD est capable de gérér une chaine JTAG sérialisée mais GDB et Eclipse ne sont pas en mesure de debugger deux application simultanément, c’est pourquoi la chaine JTAG est restée en parallèle. La question de la simplification de debuggage d’un système multi processeur est donc restée sans réponse. Mais la méthode utilisée dans le cadre de ce travail de diplôme a tout de même permis de développer quelques applications basiques.

Le développement de l’application de calcul des décimales de π a dirigé la réflexion sur l’aspect logiciel de la programmation parallèle et de ses contraintes et limites. Développer cet algorithme a montré combien il est fondamental de passer par une étape d’étude, de schématisation et de planification des interactions entre les deux processeurs pour arriver à obtenir un gain de performances appréciable. Bien que la programmation séquentielle exige aussi ces études préalables elles sont d’autant plus importantes dans la conception d’une application parallèle. Le type d’application à développer conditionne complètement les parties qui sont parralélisables.

L’objectif le plus intéressant de ce travail de diplôme, le portage de l’OS Rtems n’a malheuresement pas pu être mené à terme. La difficulté d’installer un environnement de développement stable et fonctionnel, la complexité de ses outils automatiques de compilation et sa structure, qui en schématique parait claire mais qui dans la réalité est quasiment différente pour chaque processeur, ont empêché d’avancer assez vite pour terminer le portage. Le SuperCore est en grande partie porté bien qu’il n’ait pas pu être testé. Avec du temps supplémentaire et une meilleure connaissance des systèmes de type UNIX la réalisation de cet objectif pourrait être atteinte. Le portage de microOS laissé en option n’a pas été abordé car des portages fonctionnels sont déjà utilisables et il semblait peu utile de refaire ce travail.

Ce travail de diplôme très enthousiasmant et vraiment en phase avec les nouvelles technologies aura sans aucun doute permis de d’acquérir de l’expérience dans un domaine en pleine émergence.

Sion, le 12 Juillet 2010 Christian Castellaro

Dans le document Bi-Cortex-M3 (Page 54-57)

Documents relatifs