RESUME
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 S1MD. 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.