Placement de tâches dynamique et flexible sur processeur multicoeur asymétrique en fonctionnalités

Aujourd’hui, les systèmes d’informations ont plusieurs modes de fonctionnement afin de s’adapter à l’activité de l’utilisateur. Dans le cadre des smartphones, pour certaines applications, la qualité de service et la performance sont prioritaires (ex. jeux, multimédia). Ensuite, lorsque le téléphone est faiblement utilisé, l’efficacité énergétique est prioritaire (ex. vérification de mail, attente d’appel). Cette tendance apparaît aussi dans les objets connectés ’Internet of Things’ (IoT), où le besoin en calcul est important lorsque des données sont à traiter et à envoyer sur internet. Puis, lorsqu’il n’y a pas d’activité, le système doit juste être en attente et consommer le moins possible. Les serveurs deviennent aussi très sensibles à l’énergie consommée, à tel point que les serveurs de calcul à haute performance (HPC) sont maintenant aussi classés par « opérations par watt » dans le green500 [Lis]. Les besoins en ressources deviennent donc de plus en plus hétérogènes. La puissance nominale de calcul est toujours très élevée, mais ce besoin varie dans le temps. Pour que le matériel puisse répondre à ces besoins dynamiques de puissance de calculs et à ces contraintes énergétiques, celui-ci doit pouvoir s’adapter dynamiquement. Dans ce contexte, la thèse étudie l’architecture émergente multi-cœur asymétrique en fonctionnalités (FAMP) (détaillée ci dessous) et propose une solution de placement de tâches dynamique et flexible afin de répondre aux besoins hétérogènes des applications.

Afin de pouvoir répondre aux besoins croissants de puissance de calculs, la technologie a évolué pour permettre de graver de plus en plus de transistors sur une même surface de silicium . Cette évolution impacte également la fréquence d’horloge et la consommation énergétique. Les prédictions montrent aussi une stabilisation du nombre de cœurs. De plus, la densité des transistors est maintenant si importante qu’ils ne peuvent pas tous être utilisés en même temps, pour des raisons de dissipation thermique. Ainsi, ces contraintes tendent à favoriser des plateformes hétérogènes, où seulement les parties du circuit répondant aux besoins de l’application sont activées.

En parallèle de l’évolution de la technologie liée à la gravure, les architectures des processeurs ont évolué. Pour gagner en puissance, les processeurs exploitent le parallélisme d’instructions, le parallélisme des fils d’exécution, de plus, ils se sont aussi spécialisés. Par exemple, le processeur commun s’est décliné en processeurs spécialisés comme le processeur de type vectoriel, processeur de signal numérique (DSP), processeur graphique (GPU), processeur cryptographique, processeur reconfigurable et processeur neuronal. Pour répondre aux besoins hétérogènes et dynamiques des applications, plusieurs processeurs spécialisés sont assemblés dans un système sur puce multi processeur (MPSoC). Cette configuration peut être très efficace et performante mais elle pose encore des défis au niveau logiciel. Pour faciliter la programmation, l’architecture multi-cœur symétrique (SMP) correspond à une duplication de cœurs similaires. Ces architectures sont en constante évolution et le nombre de cœurs dans les processeurs a fortement augmenté ces dernières années. Comme par exemple avec l’architecture Kalray, qui proposent des processeurs contenant 256 cœurs [Kal15]. De plus, pour augmenter l’efficacité énergétique, des techniques matérielles ont été mises en place telles que l’ajustement dynamique de la tension et de la fréquence (DVFS) ou l’allumage des cœurs sur demande. Néanmoins, le paradigme de parallélisme sur multi-cœur a des limites, puisque certaines applications sont difficilement parallélisables. Ainsi pour accélérer ces applications, les cœurs intègrent de plus en plus d’extensions matérielles, telles qu’une FPU, une unité accélérateur vectoriel ’Single Instruction on Multiple Data’ (SIMD) ou encore une unité cryptographique.

Les extensions matérielles intégrées aux cœurs ont l’avantage de pouvoir accélérer certaines parties de code souvent difficilement accélérables sur un multi cœur. Par exemple, le calcul d’une racine carrée sur une donnée à virgule flottante peut être réalisé mille fois plus rapidement avec une extension FPU qu’avec une librairie d’émulation sur un cœur pour données entières. Par contre, ces extensions consomment de la surface et de l’énergie, souvent à cause de leurs bancs de registres dédiés. Par exemple l’extension NEON&VFP de ARM occupe environ 30% de la surface d’un cœur cortex A9. De plus, ces extensions sont spécialisées pour seulement un type de calcul, donc elle ne sont utilisées que sporadiquement. Dans le cadre des architectures SMP, tous les cœurs doivent contenir ces extensions pour respecter la symétrie du jeu d’instructions. Cette contrainte réduit l’efficacité en énergie et en surface du multi-cœur.

Pour améliorer l’efficacité des architectures SMP, un compromis entre les architectures MPSoC et SMP est proposé avec les architectures de type multi cœur asymétrique en performance (PAMP) et multi-cœur asymétrique en fonctionnalités (FAMP). L’architecture PAMP contient des cœurs performants et gourmands en énergie, et des cœurs faible consommation avec le même jeu d’instructions. L’architecture FAMP contient la même base de cœurs, mais certains n’ont pas toutes les extensions matérielles. Contrairement au PAMP, l’architecture FAMP est une architecture émergente qui n’est pas encore dans les processeurs disponibles en production.

L’architecture FAMP est intéressante car elle réduit les coûts des extensions matérielles qui sont généralement dupliquées dans chaque cœur. Dans la figure, ces extensions sont représentées par hw1, hw2. En distribuant les extensions seulement sur certains cœurs, la surface et la consommation énergétique peuvent être optimisées. En effet, en exécutant sur un cœur basique (sans extension) une application qui n’utilise pas les extensions, les autres cœurs avec extensions peuvent être éteints (ou utilisés par d’autres applications). Pour reprendre l’exemple du smartphone cité précédemment, les cœurs avec des extensions seraient activés seulement lors de l’exécution des applications multimédia. Cette architecture permet également une spécialisation plus poussée des extensions, car celle-ci apparait un nombre de fois plus limité.

Néanmoins, l’asymétrie du jeu d’instructions de l’architecture FAMP pose des défis au niveau de son utilisation. Logiquement, une instruction spécialisée pour une extension ne peut être exécutée que sur un processeur avec cette extension. Cette contrainte doit être prise en compte pour exploiter la plateforme de façon efficace.

Hétérogénéité dans les multi-cœurs

L’hétérogénéité dans les multi-cœurs et multiprocesseurs est visible principalement par leur interface de programmation. Plus l’hétérogénéité est forte dans le jeu d’instructions, la mémoire, la représentation des données et plus il est nécessaire de rajouter des couches pour gérer l’hétérogénéité. Ces couches ne sont pas toujours transparentes pour l’utilisateur. Elles peuvent impliquer de la complexité dans la programmation et la gestion de la plateforme. De plus, l’exposition de cette hétérogénéité au programmeur peut impliquer une meilleure utilisation mais elle rend aussi le travail beaucoup plus fastidieux. Et dans certains cas, le fait de laisser la main à l’utilisateur ou à des outils hors ligne ne permet pas d’utiliser les connaissances du contexte en ligne, ce qui n’est pas optimal. Il y a un compromis entre hétérogénéité et homogénéité à trouver.

La première partie examine l’existant des plateformes hétérogènes pour lesquelles le jeu d’instructions n’est pas impacté. Ces plateformes sont appelées Single-ISA. La deuxième partie examine les plateformes qui possèdent des jeux d’instructions différents. Ces plateformes sont appelées Multi-ISA. Enfin le sujet de la thèse est positionné par rapport à ces deux types d’hétérogénéité.

Single-ISA : architecture asymétrique en performance

Les architectures multi-cœur asymétrique en performance (PAMP) sont hétérogènes bien que leur jeu d’instructions reste le même quel que soit le cœur. L’hétérogénéité n’est pas due à différentes fonctionnalités, mais plutôt aux différentes implémentations de ces mêmes fonctionnalités. En effet, par exemple, il n’est pas nécessaire de toujours utiliser un cœur avec un fort parallélisme d’instructions ou une haute fréquence d’horloge si la plupart des instructions sont en attente de données en mémoire. Lorsqu’un processeur contient plusieurs cœurs avec différents niveaux de rendement, le système d’exploitation peut ainsi déplacer les tâches sur les cœurs en fonction des phases de calculs ou des phases de mémoires de chaque tâche. Le papier [DTD03] décrit bien l’apparition des phases dans les applications et l’intérêt d’avoir plusieurs types de cœurs. Ces phases peuvent être exploitées notamment avec du DVFS, mais pour permettre encore plus de gains, il est intéressant d’agir sur les caractéristiques du pipeline du cœur comme l’ordre d’exécution ou le nombre de voies. Les premiers travaux à montrer l’intérêt de ce type de plateforme sont ceux de Kumar et al. [KJT04,KZT05,KTR+04,KFJ+03,KTJ06]. Les avantages de ce type de plateforme ont aussi été montrés avec des applications de l’état de l’art pour plateformes mobiles et serveurs [GS13]. Dans le papier [GRSW04], les auteurs comparent quatre techniques permettant d’optimiser les coûts énergétiques : DVFS, cœurs asymétriques, cœurs de différentes tailles et spéculation de contrôle. Ils concluent que la combinaison des cœurs asymétriques et du DVFS représente l’approche la plus prometteuse pour avoir un multiprocesseur qui peut obtenir à la fois une excellente efficacité en terme de latence et d’excellentes performances de débit.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

1 Introduction
2 État de l’art
2.1 Introduction
2.2 Hétérogénéité dans les multi-cœurs
2.2.1 Single-ISA : architecture asymétrique en performance
2.2.2 Multi-ISA
2.2.3 Positionnement
2.3 Gestion des extensions matérielles
2.3.1 Allumage dynamique des extensions
2.3.2 Différentes implémentations des extensions
2.3.3 Partage des extensions
2.3.4 Distribution non-uniforme des extensions
2.3.5 Positionnement
2.4 Gestion de l’asymétrie pour les architectures FAMP
2.4.1 Approche unifiée
2.4.2 Approche restrictive
2.4.3 Approche hybride
2.4.4 Approche virtualisée
2.4.5 Positionnement
2.5 Conclusion
3 Usage des extensions dans les applications usuelles
3.1 Introduction
3.2 Applications étudiées
3.3 Méthodes d’expérimentations
3.3.1 Méthodes pour étudier l’utilisation de x86 SSE* & AVX
3.3.2 Méthodes pour étudier l’utilisation de armv7 NEON & VFP
3.3.3 Validation des méthodes
3.4 Résultats
3.4.1 Utilisation moyenne globale des extensions
3.4.2 Profils d’utilisation au cours de l’exécution
3.4.3 Discussion
3.5 Perspectives
3.6 Conclusion
4 Gestion de l’extension FPU dans les multi-cores
4.1 Introduction
4.2 Solutions étudiées
4.2.1 Niveau de granularité application
4.2.2 Niveau de granularité ordonnanceur
4.2.3 Niveau de granularité instructions
4.3 Méthodes d’expérimentations
4.4 Résultats
4.4.1 Gestion de la FPU au niveau application
4.4.2 Gestion de la FPU au niveau ordonnanceur
4.4.3 Gestion de la FPU au niveau instructions
4.4.4 Discussion
4.5 Perspectives
4.6 Conclusion
5 Estimateur d’accélération par extension matérielle
5.1 Introduction
5.2 Méthodes d’expérimentations
5.3 Estimation grossière de l’accélération
5.4 Estimation fine de l’accélération
5.4.1 Modèle de l’estimateur
5.4.2 Validation du modèle
5.4.3 Implémentation
5.5 Comparaison des deux modèles
5.6 Perspectives
5.7 Conclusion
6 Conclusion

Lire le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *