Passer au contenu

MAJC multiplie les processeurs sur une seule puce

MAJC, la nouvelle architecture de processeur conçue par Sun, accélère la vitesse d’exploitation des programmes multimédias. Elle comporte plusieurs processeurs sur le même circuit.

Avec l’architecture MAJC (Micro Architecture for Java Computing), Sun a réalisé un véritable tour de force : proposer une architecture à la fois simple (donc évolutive en nombre de circuits sur la puce et en fréquence) et très efficace. Avec un compilateur et un langage adapté, en l’occurrence Java, l’architecture MAJC exploite des programmes à quatre types de parallélisme, en utilisant toutes les techniques habituellement réparties dans différents types de processeurs. Avec des performances, théoriques, quinze à vingt fois supérieures à celles d’un processeur classique. Pour obtenir ce résultat, le circuit intègre plusieurs processeurs identiques mais indépendants. Comme sur un système multiprocesseur, on multiplie les performances par le nombre de processeurs en utilisant un système d’exploitation approprié. Aujourd’hui, la puce MAJC 5200 contient deux processeurs indépendants. Avec l’augmentation de la densité des circuits, de futures versions en contiendront quatre.Outre ce système multiprocesseur, le deuxième type de parallélisme est issu d’une exploitation de type VLIW (Very Long Instruction Word) : quatre instructions indépendantes sont exécutées à chaque cycle. Comme sur les autres processeurs VLIW, il est rarement possible d’occuper les quatre unités fonctionnelles. En réponse, Sun a réduit, autant que possible, les goulets d’étranglement habituels. Si les unités sont identiques, chacune dispose d’un jeu de registres privé (pouvant contenir indifféremment des entiers, des nombres en virgule flottante, etc. ). Ces caractéristiques simplifient le travail du compilateur et permettent un taux de remplissage moyen de 2,5.

Le cache réduit les accès mémoire

Grâce au jeu d’instructions, il est possible d’extraire un troisième type de parallélisme, particulièrement adapté aux applications multimédias. Dans les traitements graphiques ou sonores, il est en effet fréquent qu’une même opération doive être appliquée simultanément à plusieurs entiers consécutifs, représentant, par exemple, un ensemble de pixels. MAJC dispose d’instructions de type SIMD (Single Instruction Multiple Data) capables d’appliquer une même opération à 8 octets consécutifs contenus dans un même registre 64 bits. D’autres mécanismes optimisent encore les performances. Par exemple, les instructions longues (qui durent plusieurs cycles) sont non bloquantes : d’autres instructions peuvent être exécutées en attendant leur résultat. Ceci est vrai y compris pour les opérations de durée indéterminée comme les accès mémoire : le processeur ne se met en attente du résultat que lorsqu’on cherche effectivement à l’utiliser et non dès l’instruction de lecture. Enfin, un système d’exécution spéculative (exécuter ou non une instruction en fonction du contenu d’un registre) et de préchargement du cache permet de réduire le nombre d’instructions de branchement et leur temps d’exécution (pour lire une nouvelle séquence d’instructions qui n’est pas dans le cache) lorsqu’elles s’avèrent nécessaires.La quatrième technique d’extraction de parallélisme, le vertical multithreading, est spécifique à MAJC. Le problème consiste à occuper le processeur en cas de défaut de cache, c’est-à-dire lorsqu’on attend une valeur contenue en mémoire. Pour un processeur rapide les accès mémoire se révèlent parfois près de 100 fois plus lents que l’exécution d’une instruction proprement dite. Durant ce temps, les processeurs classiques sont bloqués, en attente de données. MAJC, lui, exécute une autre portion de programme, ce qu’en termes de programmation on appelle un thread ou un processus. Mais cette solution est concevable uniquement parce que le passage d’un thread à un autre (la commutation de contexte) est très rapide. En effet, MAJC conserve en mémoire, dans un banc étendu de registre, les contextes associés à quatre processus complets. Une fois les threads chargés, le passage de l’un à l’autre est donc pratiquement invisible pour le programme.

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


Christophe Grosjean