• Aucun résultat trouvé

1.7 Structure de la thèse

2.1.3 L’avènement des processeurs manycore

Créés afin de concurrencer les processeurs graphiques, les processeurs manycore sont l’évolution naturelle des processeurs multicœurs. Ils comportent de plusieurs dizaines à plusieurs centaines de cœurs de calcul reliés par des réseaux sur puce à faible latence. Ces cœurs sont cependant plus performants que ceux d’un processeur graphique, ce qui leur permet d’exécuter des calculs plus complexes.

Nous décrivons plus bas deux exemples de tels processeurs : le Xeon Phi d’Intel et le MPPA Manycore de Kalray, qui joue un rôle majeur dans cette thèse.

L’Intel Xeon Phi

Figure 2.1 – Le processeur manycore Intel Xeon Phi

La gamme Xeon Phi [74] du fondeur américain Intel se compose de processeurs manycore comptant entre 60 et 70 cœurs par puce. Ces processeurs sont généralement utilisés en tant qu’accélérateur au côté d’un processeur central classique. Ainsi, le superordinateur chinois Tianhe-2, qui a tenu la tête du TOP500 [117] de 2013 à 2015, utilise des coprocesseurs Xeon Phi.

Ces processeurs consomment en général moins qu’un processeur graphique, mais com- portent en contrepartie moins de cœurs. Développer des applications sur ces processeurs est aussi moins complexe, puisqu’Intel fournit une suite logicielle complète et supporte les modèles de programmation standards pour architectures à mémoire partagée et architec- tures à mémoire distribuée. Par conséquent toute application s’exécutant sur un processeur central Intel peut également s’exécuter sur un Xeon Phi sans modification de code. Un travail d’optimisation des performances reste toutefois nécessaire.

La soixantaine de cœurs que comporte un Xeon Phi peuvent exécuter simultanément jusqu’à quatre threads et disposent d’une unité de calcul vectorielle de 512 bits. Ils sont connectés à un réseau d’interconnexion en anneau, qui transfère les données entre les cœurs,

2. Évolutions matérielles et modèles de programmation

Réseau d’interconnexion

en anneau

Cœur Cœur Cœur

Cœur Cœur Cœur Cœur Cœur Cœur Cœur Contrôleur PCIe Contrôleur DDR Figure 2.2 – L’architecture du processeur Xeon Phi

la mémoire embarquée — pouvant atteindre plusieurs centaines de Go — et le processeur hôte. Ce processeur peut consommer jusqu’à plus de 200 W. La figure 2.2 exhibe ainsi de façon schématique l’architecture des processeurs Xeon Phi.

Le MPPA Manycore de Kalray

Le processeur MPPA Manycore, conçu par la société française Kalray, expose un fort parallélisme grâce à ses 256 cœurs. Ce processeur, dont la première version a été mise sur le marché en 2013, se différencie par sa relativement faible consommation énergétique, qui s’élève à environ 10 W. De par ses caractéristiques, ce processeur est principalement destiné à des usages hautes performances et/ou embarqués.

Les 256 cœurs de calcul du MPPA sont répartis dans seize clusters de calcul, qui com- muniquent les uns aux autres à travers deux réseaux sur puce toriques, le premier étant dédié aux transferts de données avec une forte bande passante, le second, aux communica- tions avec une faible latence. Quatre clusters supplémentaires, situés en périphérie de la puce, gèrent deux à deux les interfaces d’entrées/sorties. Deux de ces clusters sont ainsi consacrés aux interfaces PCI-Express, par exemple pour communiquer avec un processeur hôte, et DDR, afin d’accéder à une mémoire globale attachée, tandis que les deux autres sont dédiés aux interfaces réseau Ethernet et Interlaken [113], cette dernière permettant de connecter efficacement plusieurs processeurs MPPA entre eux. La figure 2.3 schématise ainsi l’agencement spatial global de cette puce.

Chaque cluster de calcul comporte seize cœurs, plus un dix-septième, nommé System

Core ou Resource Manager selon les cas. Celui-ci exécute un système d’exploitation basique

fournissant une interface pour les communications avec le réseau sur puce, ainsi que pour la gestion des processus sur les différents cœurs. Ces cœurs sont caractérisés par leur architecture VLIW (« Very Long Instruction Word »), qui leur permet d’exécuter plusieurs instructions simultanément.

2.1. Des architectures innovantes

Cluster

de calcul de calculCluster de calculCluster de calculCluster

Cluster

de calcul de calculCluster de calculCluster de calculCluster

Cluster

de calcul de calculCluster de calculCluster de calculCluster

Cluster

de calcul de calculCluster de calculCluster de calculCluster

Cluster d’E/S Clu ster d’E/S Clu ster d’E/S Cluster d’E/S Machine hôte Mémoire attachée (3 Go) PCI-E 16 Go/s DDR 13 Go/s

Figure 2.3 – Le processeur MPPA-256

Chaque cluster de calcul dispose d’une mémoire locale d’une capacité de 2 Mo, partagée entre les seize cœurs. Cette mémoire sert également pour le système d’exploitation du dix-septième cœur, le Resource Manager, ainsi que pour le code binaire des applications, réduisant de fait la capacité disponible pour les données. Le diagramme de la figure 2.4 résume l’architecture d’un cluster de calcul.

Un cluster de calcul s’apparente donc à une architecture à mémoire partagée, tandis qu’à l’échelle de la puce entière, chaque cluster correspond à un nœud d’un système distribué. Enfin, la puce MPPA peut s’utiliser comme accélérateur matériel d’un processeur central, formant ainsi un système hétérogène.

Le processeur MPPA en est aujourd’hui à sa deuxième génération, nom de code « Bostan ». Cette génération est disponible depuis le début 2016 et apporte des gains de performance substantiels par rapport à la première génération, « Andey ». Par exemple, la fréquence d’horloge augmente et passe de 400 MHz à 600 MHz.

Afin de développer des applications sur cette puce, Kalray fournit une suite logicielle appelée MPPA AccessCore, fondée sur l’environnement de développement Eclipse [50] et sur le compilateur GCC [109]. De nouvelles fonctionnalités apparaissent régulièrement dans cette suite logicielle, afin d’améliorer la compatibilité avec les modèles de programmation supportés, ainsi que les performances globales.

Le processeur MPPA de Kalray joue un rôle majeur dans cette thèse : c’est sur cette plateforme complexe que seront portées et exécutées plusieurs applications de traitement d’images, pour en tester les capacités.

2. Évolutions matérielles et modèles de programmation Mémoire partagée (2 MB) Cœur système Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Debug support

unit

Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Cœur de

calcul Cœur decalcul

Interface NoC

Interface NoC

Figure 2.4 – Un des seize clusters de calcul du MPPA-256