Intel Atom : Architecture & Performances Etude de l'architecture Atom Parlons maintenant de l’architecture interne des processeurs Diamondville et Silverthorne. Celle-ci a été conçue de zéro, en partant tout de même de blocs logiques existants. Inutile donc de chercher une quelconque similitude avec le Pentium 4, le Pentium M ou le Core 2 à ce niveau. A première vue lorsqu’on étudie pour la première fois cette architecture, de nombreux choix paraissent déroutants et même incompréhensibles. Pour mieux les comprendre, il faut revenir à la genèse de ces processeurs, car ceux-ci n’ont en réalité jamais été conçus pour intégrer des MID et autres Netbooks. Le projet commence en 2004. A cette époque, il est question de créer une nouvelle architecture simplifiée pour créer des processeurs dotés de plusieurs dizaines de cœurs dans un seul die (morceau de silicium). Ceux-ci sont alors prévus pour 2008. Hélas, le développement de ce nouveau cœur n’a pas suivi les prévisions : les ingénieurs se sont vite retrouvés avec un cœur beaucoup trop gros (47 millions de transistors par coeur, pour rappel) et trop gourmand en énergie (plus de 120 Watts pour un modèle doté de 32 cœurs). Le projet à donc été mis en suspend et le cœur « recyclé » comme processeur low-cost dédié aux PC ultra-mobiles. Bel exemple de reconversion.
L’architecture Atom telle qu’elle est aujourd’hui trahit son passé, et tout d’abord de par son mode de fonctionnement : il s’agit d’une architecture In Order, ou les instructions sont traitées dans l’ordre d’arrivée, sans ré-ordonnancement pour améliorer l’efficacité du pipeline. Pour rappel, la dernier processeur Intel à utiliser du In Order était le Pentium, sorti en 1993. Depuis le Pentium Pro, un moteur de traitement Out-Of-Order (OOO) a été mis en place. C’était d’ailleurs la grande évolution de l’époque : au cœur du processeur, le flot d’instructions n’était plus systématiquement bloqué lorsque les données à traiter n’étaient pas prêtes. Ceci se traduisait par une augmentation de la vitesse de traitement et par quelques étages supplémentaires dans le pipeline. Avec l’Atom, Intel a choisi de supprimer le complexe moteur OOO, probablement pour diminuer au maximum la taille du chip, et donc l’énergie consommée. Jusque là, ce choix radical reste compréhensible. Ce qui l’est beaucoup moins, c’est la taille du pipeline : 16 étages ! D’autant plus étrange qu’une architecture In Order se contente souvent de 5 à 8 étages pour minimiser la perte de temps lorsqu’une pénalité survient. Le cheminement du flot de données est le suivant :
Dans le Front-End (FEC), le flot d'instructions en provenant du cache L1I (32 Ko) passe par les buffers de prefetch avant d'arriver dans l'unité de décodage qui inclut deux décodeurs hardware. Ceux-ci sont capables de décoder deux instructions par cycle d'horloge, que ce soit sur le même thread ou sur deux threads différents. Une fois décodées, ces instructions passent ensuite dans la queue d'instructions du thread (16 entrées max * 2 threads) auxquelles elles appartiennent, afin de parvenir dans l'un des deux "clusters" d'exécutions. Soit le « FP/SIMD execution Cluster » (FPC), soit le « Integer Execution Cluster » (IEC). Les données, quant à elles, sont obtenues du cache de donnée L1 situé dans le « Memory Cluster Execution » (MEC), ou via le cache L2 ou la mémoire par l’intermédiaire du « Bus Interface Cluster » (BIC). Mais revenons quelques instants aux clusters d’exécutions.
Les données fournies par Intel justifient cette organisation :
Ainsi, selon ces chiffres, 96% des instructions (SOP et BOP) seront traitées en une seule opération. D’autres améliorations du même type sont également prévues afin de limiter la dégradation de performance en maximisant l’utilisation du pipeline. La plus évidente est bien sur l’utilisation de l’Hyperthreading qui, en laissant au système d’exploitation la gestion de deux threads, permet de réduire les « bulles » dans le pipeline. Vu l’architecture In Order et à 16 étages utilisées ici, ce type de technologie devrait offrir des gains nettement supérieurs à celui que nous avons pu observer sur Pentium 4. Nous vérifierons cela dans la page suivante.
Dans une architecture In-Order, la disponibilité des données au sein du cœur est capitale. Car si les données ne sont pas disponibles, c’est tout le processeur qui doit attendre leurs disponibilités sans pouvoir rien faire d’autre. D’où l’importance de maintenir l'efficacité des caches la plus haute possible. Commençons par le cache L1. Celui est composé d’un cache d’instructions de 32 Ko et d’un cache de données de 24 Ko. Cette répartition asymétrique est très rare et l’explication que nous allons vous donner concernant cette dissymétrie n’a pas été confirmée par Intel. Toutefois, nous ne voyons pas d’autre explication logique. Pour stocker un bit de mémoire cache, il faut 6 transistors. C’est le cas pour la majorité des caches qui équipent les processeurs du marché. Toutefois, on constate que le taille d’une cellule de cache (pour stocker un bit donc) est de 0.382 µm² contre 0.346 µm² pour le Core 2, par exemple. L’explication se trouve dans la documentation : les cellules de cache L1 des CPU Atom nécessitent 8 transistors au lieu de 6. Cette répartition semble avoir été choisie (encore une fois) dans un souci d’économie d’énergie, car un cache 8T (8 transistors/bit) conserve l’information stockée avec une tension d’alimentation plus faible qu’un cache 6T. On peut donc penser que, lors du design du chip, Intel a tenté de diminuer au maximum la tension d’alimentation et a été limité par les cellules 6T. En conséquence, le remplacement vers des cellules 8T (+20%) a été choisi, mais comme le design était déjà à un stade avancé, la place physique disponible au cœur du die n’a pas pu être augmentée et à du être réduite de 20%, ce qui provoque ce passage de 32 Ko à 24 Ko. CQFD. Côté L2, les choses sont nettement plus simples puisqu’on trouve un cache 8-way de 512 Ko relativement similaire à celui qu’on peut trouver sur un Core 2. Bien entendu, il dispose de technologies d’économie d’énergie et est par exemple capable de ne fonctionne qu’en 2-way sur des applications peu gourmandes, ce qui revient à l'amputer des trois-quarts de sa capacité.
Les processeurs Atom disposent de nombreuses technologies destinées à diminuer au maximum la tension d’alimentation et donc, la consommation électrique. L’exemple du cache L1 cité ci-dessus en est un excellent exemple, mais il y en a d’autres. Ces CPU sont ainsi destinés à être alimenté en 1.05 Volts, mais leur pipeline peut supporter une fréquence maximale de 2.5 GHz sous 1.15 Volts. De même, à 1.25 GHz, une tension de 0.75 Volt est suffisante pour garantir le bon fonctionnement, comme on peut le voir sur ce tableau :
Mieux, les Silverthorne inaugurent un nouveau mode de veille profonde baptisé C6 qui maintient le processeur à un état de veille très profonde. Lors que le CPU est en mode C6, la tension d’alimentation tombe à 0.3 Volt et seul 21 broches du processeur restent actives. L’état du pipeline et les instructions en cours de traitement sont alors stockées dans une petit mémoire cache de 10.5 Ko. A ce stade, le processeur ne consomme plus que quelques mW destinés à alimenter la SRAM et la circuiterie minimale pour "reveiller" le CPU. Mais la véritable prouesse reste le temps mis à « réveiller » un CPU en mode de veille profonde C6 : moins de 100 microsecondes ! Intel indique ainsi qu’en utilisation normale, un Silverthorne peut passer plus de 90% du temps en mode C6, et ce de manière totalement transparente pour l’utilisateur. Dans la pratique, ceci permet donc de faire baisser le TDP d’un processeur spécifié à 2 Watts à moins qu’un Watt. Enfin, l’une des autres nouveautés provient du FSB. Depuis le Pentium Pro, tous les processeurs d’Intel ont adopté le mode de signalisation GTL/AGTL+. En clair, il s’agit de mettre une résistance dite « pull-down » à chaque bout du signal afin d’augmenter le courant qui circule sur le bus. Le signal est donc plus « net » et il devient possible d’augmenter fortement la fréquence tout en conservant l’intégrité des données. En schématisant à la hache, on peut comparer cela aux bouchons qu’on mettait autrefois sur les réseaux BNC. Auparavant, le CMOS classique était de mise, lorsque les fréquences de bus étaient faibles. Avec Silverthorne, Intel a trouvé le moyen de faire fonctionner son processeur en mode GTL ou CMOS, tout en préservant l’intégrité des données. Cette modification entraine un diminution de moitié de la consommation du bus. Il faut toutefois un chipset capable de fonctionner en mode CMOS et, à l’heure actuelle, seul le Poulsbo (US15) en est capable.
|