• Aucun résultat trouvé

CHAPITRE 3 Démarche de l’ensemble du travail de recherche et organisation générale de la

3.2 Cohérence des articles

Les trois articles inclus dans cette thèse seront présentés ci-après en insistant sur le lien qui existent entre eux et comment ils nous ont permis de répondre aux objectifs fixés. Les contributions de chacun des articles sont aussi énumérées.

3.2.1 Article 1 – Chapitre 4 : « A Novel Application-Specific Instruction-Set Processor Design Approach for Video Processing Acceleration »

Nous avons proposé une nouvelle approche de conception de processeur à usage spécifique qui est basée sur l’accélération de boucle. C’est cette nouvelle approche qui a

fait l’objet de notre premier article de revue [118]. Notre approche tient compte des possibilités de parallélisme au niveau instruction et à haut niveau. Par exemple, nous proposons d’ordonnancer les opérations d’un nid de boucles dans des grappes séquentielles d’instructions. Puis, le nid de boucles est déroulé et les grappes d’instructions sont couplées en tenant compte, bien sûr, des dépendances de données. Notre approche a permis d’obtenir de très bonnes accélérations allant jusqu’à un facteur de 18. Cette approche est itérative et manuelle. Une des difficultés que nous avons rencontré se rapportait à l’absence d’un critère d’arret clair pour décider à quel moment le processus d’itération devrait finir.

3.2.2 Article 2 – Chapitre 5 : « Loop Acceleration Exploration for Application- Specific Instruction-Set Processor Architecture »

Durant la cueillette des résultats présentés dans le premier article, nous avons remarqué qu’après certaines optimisations, les performances avaient tendance à plafonner. Cela nous a poussés à approfondir nos recherches dans le domaine de l’exploration de design d’architectures à usage spécifique, car la question qui se posait était de déterminer pourquoi les performances stagnent au délà d’un certain niveau. Répondre à cette question permet d’anticiper et de déterminer qu’un plafond d’accélération est atteint. En poussant un peu plus notre recherche, nous nous sommes rendus compte que, lorsque le plafond était atteint, nos efforts d’optimisation étaient vains et que les accélérations obtenues étaient nulles ou non significatives, en dépit des efforts et des resources investies. Comme nous l’avons mentionné plus haut, notre approche est itérative et, durant le processus de conception, le concepteur peut ajouter des optimisations pour obtenir de meilleures performances. Malheureusement, notre approche ne tient pas compte des possibilités de parallélisme de la boucle traitée, donc le concepteur pourrait s’évertuer à optimiser une boucle qui ne peut pas ou ne peut plus l’être. Dans la littérature, nous retrouvons de nombreux travaux sur de nouvelles techniques d’exploration architecturale, mais ces dernières, généralement, ne visent pas les boucles et elles se basent sur des métriques élémentaires telles que le temps

d’exécution ou la fréquence d’exécution de segments de code. Ces métriques élémentaires ne donnent aucune indication sur les techniques d’optimisation à appliquer pour améliorer les performances d’un segment de code. Donc, nous avons identifié un besoin pour des métriques orientées boucles qui permettraient de définir les aspects qui limiteront ou favoriseront l’accélération d’une boucle. Ce sont ces métriques qui ont été présentées dans le second article [117]. Ces métriques pourront être utilisées par le concepteur durant le processus d’exploration architecturale. Ces métriques ont déjà un avantage, puisqu’elles permettent, en très peu de temps, de visualiser s’il y a un plafond ou pas. Aussi, et plus important, elles pourront aider le concepteur à cibler le type d’optimisation à effectuer pour que le plafond d’accélération soit élevé. Les métriques sont collectées grâce à un ordonnancement des opérations d’un nid de boucles. Cet ordonnancement est inspiré de celui qui a été proposé dans le premier article [118]. Contrairement au précédent article, l’ordonnancement s’effectue automatiquement et un graphe d’ordonnancement est généré afin de calculer les valeurs des métriques.

3.2.3 Article 3 – Chapitre 6 : « Loop Nest Performance Estimation for Application-Specific Architecture Design »

Le travail résumé dans le second article [117] comprend la première partie de notre contribution en ce qui a trait à l’exploration architecturale de plusieurs types d’architecture à usage spécifique. En effet, comme nous l’avons mentionné auparavant, un plafond est généralement atteint et, comme nous le montrons dans l’article, ce plafond est dû soit aux dépendances de données soit aux contraintes de design de l’architecture ciblée. Les questions auxquelles nous devions répondre sont : 1) quels sont les facteurs causant le plafond d’accélération d’une boucle et limitant ou favorisant cette accélération et 2) quel est le plafond d’accélération en tenant compte des possibilités tant au niveau instruction qu’à haut niveau. Le second article a répondu à ces questions en partie. Dans le premier article, l’approche proposée vise à accélérer une boucle en appliquant des transformations qui font ressortir le parallélisme à exploiter dans des instructions spécialisées. Cependant, cette approche se fait à l’aveuglette, puisqu’aucun indicateur

n’est utilisé pour savoir si une meilleure accélération pourrait être atteinte. Donc, les questions qui se posaient étaient les suivantes : à quel moment devrait-on arrêter les optimisations et a-t-on profité de toutes les possibilités de parallélisme? Aussi, dans la suite de cette recherche doctorale, nous avons tenté d’estimer le temps d’exécution d’un nid de boucles en tenant compte des possibilités de parallélisme, tant au niveau instruction qu’à haut niveau. Cette estimation permet de mesurer l’accélération atteignable selon les contraintes de design associées au type d’architecture ciblée. Durant le processus d’estimation du temps d’exécution, les résultats d’ordonnancement présentés dans le second article sont utilisés afin de calculer les performances en tenant compte des possibilités de parallélisme à bas niveau. Puis, dans une seconde passe d’ordonnancement, les possibilités de parallélisme à haut niveau sont prises en compte pour estimer les performances totales du nid de boucles.