• Aucun résultat trouvé

Figure 2.15 – Arhitecture du processeur graphique Radeon 7970 de AMD.

contraignantes en termes de gestion des tâches et d’accès mémoires, ce qui leur permet de supporter plus facilement des applications plus variées.

2.3.5 Synthèse des architectures des accélérateurs graphiques

Les processeurs graphiques sont passés d’un modèle paramétrable (Figure 2.10.a), où seuls quelques paramètres pouvaient être modifiés, à un modèle presque totalement pro- grammable où presque toutes les étapes du rendu graphique peuvent être modifiées grâce à des programmes appelés shaders (Figure 2.10.c). Cette évolution est arrivée sur les proces- seurs hautes performances équipant nos ordinateurs, mais aussi dans le monde de l’embar- qué où les processeurs graphiques, qui à l’origine n’occupaient que la fonction d’accélérateur graphique, sont maintenant en passe de devenir des accélérateurs généralistes au même titre que les architectures multi-cœurs.

Cependant, le premier objectif des accélérateurs graphiques est justement d’accélérer le rendu graphique et ceci avec de très bonnes performances, que ce soit en termes de perfor- mances pures, de consommation énergétique ou encore de surface silicium. Pour cela, ces architectures offrent un haut niveau de parallélisme permettant de traiter un grand nombre de données en parallèle. L’ordonnancement des calculs sur les processeurs permet d’utili- ser au maximum leurs ressources tout en masquant les latences mémoires. Il est de plus optimisé pour les traitements réguliers qui suivent les mêmes branchements. L’accélération des applications généralistes est alors contrainte par l’architecture qui est optimisée pour le graphique mais pas pour l’accélération d’applications généralistes, à cause des contraintes dûes aux communications entre threads, de la hiéarchie mémoire et de l’ordonnancement des threads.

2.4 Conclusions

Supporter tous les types d’application au sein d’un même accélérateur nécessite un système suffisamment polyvalent pour permettre l’ajout de processeurs dédiés. Par ailleurs, la variété des applications existantes engendre le besoin de supporter un grand nombre de modèles de programmation.

Les architectures multi-cœurs sont faites pour être multi-usages. Leur support d’un grand nombre de modèles de programmation permet de porter facilement tous les types

36 CHAPITRE 2. ÉTAT DE L’ART

d’applications. La possibilité d’ajouter des accélérateurs dédiés engendre un gain de per- formances ainsi qu’une diminution de la consommation énergétique.

Les processeurs graphiques sont excellents dans le domaine du rendu graphique. De plus, certains d’entre-eux permettent l’accélération d’applications généralistes. Cependant, leur architecture dédiée au graphique contraint le choix des modèles de programmation et de parallélisation pour d’autres types d’applications. Ce type d’architecture permet ainsi d’accélérer efficacement certaines applications généralistes qui correspondent au modèle de parallélisation supporté. Toutefois, les autres applications seront moins efficacement accé- lérées. L’architecture de ces processeurs est très spécifique, à cause de hiérarchie mémoire spécifique, le type de parallélisme proposé, ou encore l’ordonnancement des tâches.

Les processeurs multi-cœurs sont, de par leur conception, davantage polyvalents. Les modèles de programmation supportés sont ici beaucoup plus nombreux. L’ajout d’accélé- rateurs au sein de l’architecture multi-cœurs permet de rendre celle-ci plus performante et efficace énergétiquement tout en gardant une grande polyvalence. En effet, ces architectures sont reconnues pour supporter efficacement les applications multimédia par exemple.

L’architecture utilisée dans les systèmes mobiles doit être polyvalente. En effet, elle doit être capable d’accélérer une importante variété d’applications, mais également de supporter un grand nombre de modèles de programmation, ainsi que de permettre l’ajout d’accélérateurs dédiés afin de limiter la consommation énergétique.

Les architectures multi-cœurs sont conçues dans le but de supporter une plus grande variété d’applications. Le rendu graphique n’est par contre pas supporté par ce type d’ar- chitectures, mais il serait possible grâce à l’ajout d’accélérateurs spécifiques. D’un autre côté, le support de l’accélération des applications géréralistes par les GPU est limité par le manque de flexibilité de leur modèle mémoire. Une architecture multi-cœurs est donc le meilleur choix pour supporter les différents types d’applications qu’un système mobile doit appréhender. Cependant, le support du rendu graphique sur ce type d’architecture est peu étudié. L’objet du chapitre suivant est de proposer une étude du rendu graphique afin de déterminer quels sont les éléments architecturaux nécessaires à son support.

Chapitre 3

Etude d’un pipeline graphique

Sommaire

3.1 Introduction . . . 37 3.2 Description du rendu graphique . . . 38 3.2.1 Partie sommets (Vertex) . . . 39 3.2.2 Partie primitives (Triangle) . . . 41 3.2.3 Partie fragments (Fragment) . . . 44 3.2.4 Partie liée à la mémoire vidéo (Frame Buffer) . . . 45 3.3 Implémentation séquentielle . . . 47 3.3.1 Étude de l’implémentation séquentielle . . . 47 3.3.2 Profilage du pipeline graphique . . . 49 3.4 Implémentation parallèle . . . 52 3.4.1 Découpage de l’application . . . 52 3.4.2 Environnement de simulation . . . 53 3.4.3 Parallélisation du rendu graphique . . . 55 3.4.4 Résultats de profilage . . . 57 3.4.5 Mesures par image . . . 58 3.4.6 Parallélisation au niveau des données . . . 60 3.5 Analyse des besoins d’un pipeline graphique . . . 61 3.6 Vers une adaptation dynamique du pipeline graphique . . . 63

3.1 Introduction

Les processeurs graphiques pour le mobile se démocratisent, offrant des performances de plus en plus importantes. Ils permettent aux systèmes mobiles de supporter des applications 3D très complexes comme par exemple les jeux vidéos.

Le chapitre précédent a montré qu’il existe un grand nombre d’architectures multi- cœurs dans le domaine du mobile. Cependant, le support du rendu graphique sur les ar- chitectures multi-cœurs est peu développé, puisqu’il est difficile d’égaler les performances des processeurs graphiques. Toutefois, les processeurs graphiques ont un impact en termes de consommation énergétique, mais aussi en termes de surface nécessaire sur la puce, celle nécéssaire à un processeur graphique étant importante.

Comme nous l’avons vu lors de l’état de l’art, une autre approche consiste à définir quels sont les besoins nécéssaires au support du rendu graphique sur les architectures multi-cœurs actuelles afin de réduire l’impact en termes de surface et de consommation d’un processeur

38 CHAPITRE 3. ETUDE D’UN PIPELINE GRAPHIQUE

graphique. Cette méthode permet d’avoir un accélérateur davantage générique permettant d’accélérer tous types d’applications, tout en réduisant la quantité d’accélérateurs entraî- nant ainsi une meilleure utilisation des ressources.

Afin d’étudier quels sont les besoins du rendu graphique pour être supporté sur une architecture multi-cœurs, l’étude d’une application de rendu graphique a été effectuée et fait l’object des sections qui suivent. Pour commencer, le rendu graphique est expliqué. Puis, l’implémentation et le profilage d’une application de rendu graphique ont été effectués sur un processeur généraliste afin d’étudier le fonctionnement de l’application. Ensuite, l’implémentation a été parallélisée et implémentée sur une architecture multi-cœurs afin d’utiliser les ressources de calcul disponibles. Cette implémentation a pour but d’étudier le comportement de l’application et ainsi d’affiner les besoins de cette appplication.

Documents relatifs