Organisation générale d’un processeur
Un microprocesseur est constitué de milliers de circuits élémentaires, qui réalisent chacun une micro-opération logique, ou qui matérialisent une position de mémoire. Le fonctionnement du microprocesseur consiste à combiner ou à déplacer des données stockées dans des positions de mémoire pour obtenir des résultats qui seront stockés dans d’autres positions de mémoire. Ainsi, un groupe de circuits logiques pourra constituer l’opération d’addition, qui consistera à analyser les données contenues dans les positions de mémoire où se trouvent les chiffres des nombres à additionner, à calculer le résultat et à l’écrire dans une autre position de mémoire. Une opération d’addition peut comporter quelques dizaines de circuits logiques (il y a déjà une micro-opération par chiffre binaire), eux-mêmes constitués de portes logiques réalisées en général au moyen de deux transistors. Les processeurs actuels (2012) comportent des centaines de millions de portes logiques, dont la taille est de 32 nm (un nanomètre vaut un milliardième de mètre). (Pour une description plus détaillée du fonctionnement des circuits logiques, vous pouvez télécharger (gratuitement) mon livre de système et en consulter l’annexe B.)
Effectuer une simple opération d’addition consiste donc à combiner les résultats produits par quelques dizaines de circuits élémentaires et stockés dans quelques dizaines de positions de mémoire. Pour obtenir de façon sûre le résultat final exact de l’opération, il faut coordonner correctement le fonctionnement de tous ces circuits. Ainsi par exemple, si un premier circuit calcule un résultat intermédiaire qui sera pris comme donnée d’entrée par un second circuit, le concepteur doit pouvoir être sûr que le premier circuit a vraiment fini son calcul et placé le résultat au bon endroit avant que le second ne commence son propre calcul.
Toutes les opérations sont cadencées par l’horloge
Afin de pouvoir calculer de façon déterministe l’enchaînement correct des opérations élémentaires, elles sont synchronisées ; pour ce faire le processeur dispose d’une horloge centrale réalisée au moyen d’un dispositif à quartz, qui régule un circuit oscillant selon une fréquence extrêmement précise. À chaque fin de période le circuit oscillant émet un signal. La fréquence de ce circuit est de l’ordre de quelques GHz (quelques milliards d’impulsions par seconde).
La sortie du circuit logique correspondant à une micro-opération est couplée à une entrée d’un circuit ET dont l’autre entrée est couplée à l’horloge. À chaque top d’horloge la porte ET délivre un résultat, c’est-à-dire que les données doivent être valides lorsque retentit le top de l’horloge. C’est ainsi que toutes les opérations sont synchronisées. Ce que l’on appelle la fréquence d’un processeur est la fréquence de son horloge. Le temps de cycle est le délai entre deux tops d’horloge. Chaque opération élémentaire doit être effectuée pendant un cycle, ou pendant un nombre de cycles parfaitement déterminé.
De ce qui précède découlent deux conséquences importantes : le signal du circuit oscillant de l’horloge doit être acheminé jusqu’à tous les circuits logiques élémentaires ; le délai qui s’écoule entre l’instant où le premier circuit logique reçoit le signal et l’instant où le dernier circuit le reçoit s’appelle la dérive d’horloge (clock skew). Comme il n’est en général pas possible de savoir si tel circuit est un récepteur précoce ou tardif du signal d’horloge, on soustrait la dérive d’horloge du temps de cycle, afin de ne pas se trouver dans la situation, catastrophique, où un circuit logique utiliserait des données inachevées pour entreprendre son calcul. Plus la dérive d’horloge est grande, moins il reste de temps pour les calculs.
L’horloge consomme 30% de l’énergie totale
Acheminer un signal en chaque point du processeur prend du temps, mais aussi de l’énergie. Les circuits ont une certaine résistance, et sont soumis à la loi d’Ohm. Afin de limiter la dérive d’horloge, le signal est émis dans un circuit en forme de grille qui recouvre l’ensemble du processeur, mais la consommation électrique d’un tel dispositif est importante. En outre, étant donnée la taille des circuits actuels (de l’ordre du milliard de transistors), il faut prévoir des répéteurs d’horloge (clock buffers). De fait, dans un processeur moderne, la fonction d’horloge utilise 30% de la consommation électrique totale, ce qui est considérable, pour ne pas dire excessif, lorsque l’on sait qu’aujourd’hui la consommation électrique est le principal obstacle que s’efforcent de surmonter les concepteurs de circuits.
Dans le numéro de février 2012 de Microprocessor Report un article intitulé Resonant Meshes Topple Clock Trees décrit l’invention des deux fondateurs de la société Cyclos, de nature à bouleverser cet état de fait. Les lignes qui suivent sont librement inspirées de cet article.
Marios Papaefthymiou et Alexander Ishii se sont connus lors de la préparation de leur thèse au MIT au début des années 1990 ; le premier partit pour l’université du Michigan où il entama des recherches sur les circuits d’horloge résonnants, le second travailla chez NEC et dans plusieurs startups de l’industrie des semi-conducteurs. En 2006 ils fondèrent la société Cyclos pour mener un projet de circuits d’horloge résonnants sur la base des recherches de Papaefthymiou. Ce projet vise à réduire de façon radicale la consommation électrique de l’horloge des processeurs ; les premiers résultats laissent espérer une réduction de moitié, soit 15% par rapport à la consommation totale du processeur. Comment est-ce possible ? Voici.
La résonnance pour diminuer la consommation d’énergie
Avec la méthode traditionnelle, le circuit d’horloge consomme la même énergie électrique à chaque émission de signal. Papaefthymiou et Ishii ont imaginé de créer un circuit oscillant résonnant, dont le principe est analogue à celui d’un pendule. Lors de l’oscillation d’un pendule, une certaine quantité d’énergie se transforme alternativement d’énergie cinétique en énergie potentielle. L’énergie cinétique est maximale lorsque le pendule passe par le point le plus bas de sa trajectoire (et alors l’énergie potentielle est nulle), l’énergie potentielle est maximale lorsque le pendule passe par un des points les plus hauts de sa trajectoire (et alors l’énergie cinétique est nulle, comme sa vitesse).
Schéma d’après Microprocessor Report :
De même, dans un circuit résonnant, une certaine quantité d’énergie électrique se transforme alternativement d’énergie cinétique en énergie potentielle, au fur et à mesure qu’une charge électrique se déplace entre un condensateur et une bobine d’induction ; l’énergie est sous forme potentielle quand la tension est maximale aux bornes du condensateur ; l’énergie est sous forme cinétique (ou magnétique) quand le courant est maximum dans la bobine (et la tension nulle aux bornes du condensateur). Ce phénomène se produit dans un circuit électrique à une fréquence de résonnance donnée caractéristique du circuit.
De même que le pendule continue à osciller un certain temps en l’absence de toute impulsion mécanique, mais ce mouvement s’amortit, pour finalement cesser, de même le circuit résonnant émet des signaux qui s’amortissent et finissent par cesser en l’absence d’un apport d’énergie.
Le dispositif inventé et breveté par Papaefthymiou et Ishii réalise un circuit résonnant en utilisant comme condensateur le circuit de distribution du signal lui-même ; il faut ajouter au circuit une ou plusieurs inductances, ce qui peut se faire sur la couche métallique supérieure du composant ; cette conception élimine la nécessité du recours à des répéteurs de signal d’horloge (clock buffers).
Afin de prouver la validité de leur approche, Papaefthymiou et Ishii ont réalisé, en collaboration avec ARM, un circuit expérimental, en technologie de 130 nm, capable de fréquences allant jusqu’à 200 MHz. Le rendement optimal est obtenu à 175 MHz, avec une inductance de 8,5 nH (nano henry) et une capacité de 100 pF (pico farad). À cette fréquence, le circuit résonnant consomme 0,03 mW par MHz, contre 0,25 mW pour le système traditionnel, soit à 175 MHz une économie totale de 38,5 mW, 33% de la consommation totale du système traditionnel.
Sur la base de ces résultats expérimentaux, Cyclos a convaincu AMD d’utiliser sa méthode, ce qui fut fait pour la gamme Piledriver de la marque. Les ingénieurs d’AMD n’ont utilisé qu’une partie de la conception de Cyclos, parce qu’il aurait été trop coûteux de redessiner entièrement le circuit, et ils ont adapté le dessin de la gamme précédente en y insérant une centaine de petits inducteurs. L’économie de consommation obtenue est entre 5 et 10%. Cette technologie est très prometteuse, encore une fois à une époque où la consommation électrique est la cible principale des ingénieurs dans le domaine des semi-conducteurs, et où Google achète des centrales hydro-électriques pour alimenter ses centres de données.
Une autre solution, radicale, existe : les circuits asynchrones, qui n’ont pas besoin d’horloge pour synchroniser leurs opérations ; ils auront de nombreux avantages, quand on saura les faire marcher de façon vraiment opérationnelle !