II existe des instructions data-parallèles dans les processeurs modernes. Ces instructions permettent d'effectuer la même opération sur plusieurs données différentes en parallèle. Présentement il est difficile de programmer des logiciels qui utilisent ces instructions data-parallèles avec les solutions existantes, Nous avons donc exploré l'utilisation d'un langage destiné à la programmation des circuits parallèles comme les FPGA (Field Programmable Gate Array) pour fabriqué un logiciel qui permet d'utiliser ces instructions data-parallèles de manière simple et efficace. Un langage de haut niveau pour la programmation des FPGA. le langage psC- Parallel and Synchronous C- a été choisi, Sa syntaxe proche du C, son paradigme entièrement parallèle et la disponibilité du code source ont justifié ce choix,
II y a plusieurs années, les gens pensaient qu'aujourd'hui l'optimisation ne serait plus aussi importante qu'elle l'était pour eux. Ils disaient que la quantité de mémoire et la puissance de calculs des processeurs ferait en sorte que le gain en temps ne vaudrait pas l'effort de programmation nécessaire pour programmer du code optimisé. Maintenant, nous savons que ce n'est pas le cas. Les processeurs ont certes eu un gain de performance important, mais les tâches qu'ils accomplissent nécessitent de plus en plus de puissance de calculs et de mémoire. Aujourd'hui, une bonne partie de la puissance de calculs s'obtient par l'utilisation des instructions data-parallèles disponibles dans les processeurs modernes. Pour inclure ces instructions data-parallèles dans un logicieL il n'y a pas beaucoup d'alternatives disponibles.
Ce travail a consisté à réaliser un compilateur complet pour machine SIMD. Une nouvelle syntaxe permettant de supporter les instructions data-parallèles a été définie et intégrée à celle du langage psC. L'algorithme de génération de code assembleur pour les instructions data-parallèles de type SSE d'Intel a été implémenté et testé. Finalement, trois applications ont été programmées et les performances de rapidité d'exécution comparées à diverses méthodes classiques de programmation.
Les résultats montrent que les performances obtenu par le langage psC est toujours situé entre celui obtenu par un expert codant en langage assembleur et celui obtenu par les compilateurs C et C++, Ceci correspond à ce qui était désiré.
En conclusion, ce travail de recherche a démontré qu'il était possible d'utiliser un langage HL-HDL (High Level Hardware Description Language) pour générer du code qui bénéficie des instructions data-parallèles. Le gain en performance de F implementation psC est présenté pour tous les cas étudié, et se rapproche de F implementation assembleur qui est le maximum atteignable