Passer au contenu

Avec MAJC, Sun va plus loin dans l’utilisation du parallélisme

La nouvelle architecture processeur de Sun entre en production. Sun possédera, avec MAJC, des processeurs optimisés pour le traitement parallèle des programmes

MAJC (pour Microprocessor Architecture for Java Computing, prononcez “madjic”) arrive. La nouvelle architecture processeur de Sun est entrée en phase de tests et sera livrée dès cet été pour implémentation industrielle. Polyvalente, elle pourra équiper des cartes graphiques, mais aussi des PDA ou n’importe quel matériel d’accès à Internet. La première version, MAJC-5200+, gravée par IBM en technologie cuivre à sept couches de 0,18 micron, sera cadencée à 500 MHz et 700 MHz. Mais la course à la fréquence d’horloge ferait parfois oublier que les capacités d’un processeur ne se limitent pas à sa seule vitesse exprimée en mégahertz. Dans MAJC, c’est l’architecture même du processeur qui a été repensée.

Deux processeurs intégrés sur une même puce

“MAJC offre une densité de calcul très élevée, de l’ordre de 1,5 Gflop en double précision, explique Marc Tremblay. Depuis quinze ans, le summum de l’architecture processeur est de paralléliser des applications séquentielles pour en accélérer le traitement. C’est l’une des questions qui a présidé à la conception de MAJC.” Les fabricants savent aujourd’hui placer de plus en plus de transistors sur une puce. Reste maintenant à les utiliser au mieux, à ne pas laisser inoccupée la plus grande partie la majorité du temps. Il s’agit aussi d’intégrer les fonctions auparavant assurées par des composants distincts. MAJC permet de réaliser un composant MPSOC (Multiprocessor System on a Chip) à la fois outil de traitement Java, processeur généraliste, DSP, etc. Afin d’assurer un véritable parallélisme des traitements, le MAJC-5200 intègre deux processeurs sur une même puce. Ils peuvent être utilisés soit pour traiter les différentes alternatives d’un même programme (exécution prédictive), opération administrée par le compilateur, soit pour des tâches réellement différenciées, comme l’exécution de deux machines virtuelles Java indépendantes. “Dans MAJC, ce n’est plus le processeur qui impose par son câblage le type d’exécution, le développeur choisit une stratégie de parallélisation, et la puce s’adapte”, commente Marc Tremblay. Une prochaine implémentation de l’architecture MAJC comportera quatre processeurs sur une seule puce, pour étendre encore les capacités de parallélisation. On atteint d’ailleurs une limite théorique : il est extrêmement difficile à un compilateur d’organiser correctement du code pour un traitement parallèle sur plus de quatre voies sans que les performances du processeur baissent. D’autre part, “la sémantique de Java, langage récent et de haut niveau, est prévue pour le multithread. Avec des langages comme C ou C++, les compilateurs n’offrent pas encore les capacités nécessaires à créer du code hautement parallélisable, et MAJC procédera surtout à du branchement spéculatif, en explorant par anticipation certaines possibilités.”



Chaque processeur est de type Very Large Instruction Word (VLIW). Il charge quatre instructions de 32 bits à chaque cycle soit un mot de 128 bits. Ensuite, le traitement s’effectue dans un pipeline à neuf étages. Les cinq étages intermédiaires (décodage et exécution) sont divisés en quatre canaux indépendants et parallèles. Ce système à quatre canaux d’exécution parallèles permet l’Instruction Level Parallelism (ILP) : l’exécution simultanée de plusieurs instructions.

L’alternative entre registres et unités de traitement

Il faut aussi optimiser l’utilisation des unités fonctionnelles (FU) pour qu’elles soient toujours occupées. Sun a privilégié des FU polyvalentes, aussi bien pour les instructions à exécuter que pour le type de données à traiter. Les registres sont banalisés, ils acceptent tous les types de données. Ils se divisent en registres privés (4×32), propres à une FU et en registres partagés (96) par toutes les unités. Leur répartition et leur nombre peuvent varier en fonction des implémentations. Le débat est ouvert entre architectes sur les registres et des unités de traitement. Une unité ou un registre spécifique (technique utilisée par Intel pour l’IA-64) sont plus rapides, mais restent souvent inactifs, à cause de leur spécificité. Les registres et unités généralistes sont sans doute un peu plus lents, mais si le compilateur et l’ordonnanceur font bien leur travail, ils sont utilisés en permanence. Enfin, le choix de registres et d’unités fonctionnelles généralistes limite le nombre de composants et permet de construire des puces de plus petite taille et peu exigeantes en énergie.Elbrus, IA-64, Crusoe, MAJC, autant d’architectures processeur basées sur le même principe : plutôt que d’augmenter sans cesse le nombre des processeurs, mieux vaut optimiser leur fonctionnement par une meilleure intégration du logiciel au matériel. L’enjeu est simple : l’industrie a besoin de processeurs plus puissants, certes, mais aussi plus discrets. Pour réduire la taille, la consommation, la chaleur dégagée, il faut donner plus d’intelligence au processeur.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


RENAUD BONNET et CHRISTOPHE GROSJEAN