Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Les microprocesseurs, leur histoire et leur avenir
Deux articles des Communications of the ACM (CACM)
Article mis en ligne le 14 mai 2012
dernière modification le 4 février 2014

par Laurent Bloch
logo imprimer
Licence : CC by-nd

À un an d’intervalle, les Communications of the ACM (CACM)
ont publié deux articles qui, à eux deux, offrent une synthèse très
complète des progrès passés et attendus de l’industrie des
microprocesseurs et des procédés qui les ont permis : en mai 2011
(vol. 54 n°5), The Future of
Microprocessors
,
par Shekhar Borkar d’Intel et Andrew A. Chien de l’Université de
Californie à San Diego, dressait un panorama des voies d’amélioration
des performances des microprocesseurs, celles qui ont été empruntées
par le passé et celles qui seront praticables à l’avenir, puisque ce
ne seront pas forcément les mêmes ; en avril 2012 (vol. 55 n° 4), CPU
DB : Recording Microprocessor
History
,
par Andrew Danowitz, Kyle Kelley, James Mao, John P. Stevenson et Mark
Horowitz, tous du VLSI Research Group de l’Université Stanford,
décrit la constitution d’une base de données publique et
ouverte
qui recueille les données
architecturales les plus détaillées possibles sur 790 microprocesseurs
construits au cours des 40 dernières années par 17 industriels [1],
et expose les premiers résultats obtenus par l’analyse de ces
données. Ces approches éclairent d’un jour nouveau la loi de Moore,
qui est une loi empirique, en cela qu’ils en recherchent les variables
explicatives et qu’ils proposent des modèles dont ils déduisent la
part de l’évolution globale qui est expliquée par chacune de ces
variables.

 Les améliorations de performance « classiques »

Shekhar Borkar et Andrew A. Chien identifient trois domaines
principaux qui ont permis à ce jour l’amélioration des
microprocesseurs :

  • L’accélération de la commutation des transistors par la
    réduction de leur taille : tous les deux ans depuis 40 ans, la taille
    des transistors a diminué de 30%, ce qui a réduit leur surface de 50%,
    en d’autres termes doublé la densité du circuit. Cette réduction de
    la taille du circuit accroît les performances de 40%. Afin de maintenir
    un champ électrique constant, la tension est réduite de 30%, ce
    qui diminue l’énergie consommée de 65%, et la puissance de 50%.
    Chaque génération (deux ans) produit donc des processeurs 40%
    plus rapides, pour un budget énergétique équivalent.
  • Le perfectionnement de la micro-architecture par des techniques
    telles que :
    • le pipeline, qui consiste à décomposer les instructions en opérations
      plus élémentaires, ce qui permet de commencer à exécuter une
      instruction avant que les précédentes ne soient terminées [2] ;
    • l’architecture super-scalaire, qui consiste à multiplier les unités
      d’exécutions pour les opérations les plus fréquentes, ce qui permet un
      certain parallélisme ;
    • l’exécution spéculative et l’exécution « dans le désordre » (out
      of order)
      , qui consistent à exécuter des instructions « à l’avance »,
      alors que l’on n’est pas sûr qu’elles vont être utiles, mais qui
      procurent des gains de temps d’exécution significatifs si la prédiction
      est judicieuse.
  • L’organisation de la mémoire-cache : le mot cache, curieux
    retour au français d’un emprunt anglais, suggère ici l’idée de cacher
    dans un coin (techniquement parlant, dans une zone de mémoire petite
    mais à accès très rapide) pour l’avoir sous la main une chose que l’on
    ne veut pas avoir à aller chercher à la cave ou au grenier (i.e., dans
    la mémoire centrale, vaste mais à accès lent par rapport à la vitesse
    du processeur), pour gagner du temps. Cette technique s’est développée
    parce que, si la capacité de la mémoire centrale a évolué parallèlement
    à la puissance des processeurs, sa vitesse a progressé moins vite. Si
    au début des années 1990 le temps d’accès à une position de mémoire se
    mesurait en dizaines de cycles de processeurs, vingt ans plus tard
    c’est en centaines de cycles : il a fallu trouver des procédés pour
    éviter que cette discordance croissante ne réduise à néant les bénéfices
    obtenus pas l’accélération des processeurs.

La technique du cache procure des augmentations de performances très
spectaculaires, bien qu’aucun modèle général satisfaisant de son
fonctionnement n’ait pu être proposé à ce jour. Une variante en est le
TLB (Translation Lookaside
Buffer
)
,
qui conserve « sous la main » les résultats les plus récents de
traductions d’adresses virtuelles en adresses réelles, ce qui permet
avec un très faible volume de données d’obtenir des accélérations
spectaculaires [3].

 Gisements d’amélioration en voie d’épuisement

Les voies classiques d’améliorations que nous venons de survoler
continueront à être exploitées, mais depuis quelques années elles sont
de moins en moins fructueuses, ne serait que parce qu’elles ont
atteint certaines limites. Ainsi, la réduction de la taille des
transistors approche de limites physiques : la géométrie des
processeurs annoncés récemment (2012) repose sur des motifs de 22
nanomètres, c’est-à-dire que l’épaisseur du diélectrique des
transistors est de quelques dizaines d’atomes. On ne pourra pas
descendre beaucoup plus bas. De toute façon, après plus de trente ans
de progrès exponentiels, la courbe des gains de performances en
fonction de la taille des transistors a commencé à s’infléchir depuis
cinq ou six ans. Par exemple, la tension d’alimentation diminue avec
la taille des circuits, mais la diminution de la tension de seuil de
commutation du transistor augmente le taux de fuite (le courant qui
« passe » quand le transistor est dans l’état « non passant »), ce qui
oblige à maintenir un seuil de tension de commutation moins bas, et
ainsi à limiter le gain de performance espéré.

Mais le principal obtsacle auxquels les concepteurs de circuits se
heurtent aujourd’hui est la consommation électrique : alors que
pendant les trente premières années du microprocesseur on ne
s’en souciait guère, c’est devenu une préoccupation essentielle, et pas
uniquement pour des raisons écologiques. Que l’on songe au fait qu’une
compagnie comme Google soit amenée à investir des centaines de
millions de dollars dans l’énergie photovoltaïque et à installer ses
fermes de serveurs au pied des centrales pour réduire la facture
énergétique. Avec l’augmentation de la densité des composants et
la réduction de la taille des machines, la dissipation calorique devient
un problème crucial pour les datacenters, nouveaux noms des centres
de calcul.

C’est en partie, mais pas seulement, pour des raisons de consommation
électrique que le nombre d’étages des pipelines a commencé à diminuer.
Le processeur Intel Pentium 4, par exemple, introduit en 2000, avait une
géométrie de 65 nm et un pipeline de 31 étages, ce qui lui permettait
d’afficher une fréquence d’horloge de 3,8 GHz. Cette fréquence élevée
était en partie un élément de marketing, destiné à impressionner le public,
parce que le gain marginal procuré par le dernier étage du pipeline est
faible. Aujourd’hui les fréquences n’augmentent plus guère et on est revenu
à des pipelines plus raisonnables, 16 étages pour l’architecture Nehalem
à la base des processeurs Core i7 sortis en 2008.

 Nouvelles orientations du progrès

Les processeurs les plus récents ont plus de deux milliards de
transistors sur deux ou trois centimètres carrés : c’est plus qu’il
n’en faut pour implanter toute la logique nécessaire, alors on fait
des processeurs multi-cœurs, c’est-à-dire en fait des
multi-processeurs (chaque cœur est un processeur simple), avec huit
cœurs ou plus sur un même chip. Même ainsi, il reste plein de
transistors disponibles : on les utilise pour installer de la mémoire,
dont le temps d’accès sera ainsi excellent. On peut aussi embarquer à
bord des fonctions qui étaient auparavant affectées à des composants
séparés : décodage vidéo, cryptographie, réseau...

Mais la recherche s’oriente vers une utilisation plus subtile de cet
énorme stock de transistors disponibles. Puisque qu’ils sont en
abondance, et qu’en outre les utiliser tous ensemble à leur fréquence
maximum entraînerait une consommation électrique et une dissipation
thermique intolérables (l’extrapolation des tendances actuelles
donnerait 500 W par centimètre carré en 2018), l’idée est, plutôt que
de multiplier les cœurs généralistes identiques les uns aux autres,
d’en mettre moins, qui seront associés à de la mémoire, moins
consommatrice d’énergie, et aussi d’implanter des cœurs spécialisés
pour certains traitements, qui ne serviront peut-être pas souvent,
mais qui donneront de bons résultats quand on en aura besoin.

D’autres possibilités sont explorées : mieux organiser les accès à la
mémoire de façon à placer les données le plus près possible des
circuits qui doivent y accéder, hiérarchiser les lignes de communication
(bus) entre les groupes de cœurs et optimiser le placement des tâches
sur les cœurs en fonction des accès aux données, voire utiliser une
partie du budget de transistors pour des circuits logiques
programmables

(Field-programmable Gate Array, FPGA), c’est à dire du matériel
modifiable à la volée par l’utilisateur, ce qui existe déjà, mais avec
des performances inférieures à celles des microprocesseurs actuels.

 Décomposition en facteurs de la loi de Moore

La base de données publique et ouverte
du VLSI Research Group de l’Université Stanford présente l’intérêt
intrinsèque de regrouper toutes sortes de données techniques sur un
grand nombre de microprocesseurs (on notera que Wikipédia en
anglais est aussi une source très riche, et complémentaire, sur le
même sujet) ; en outre, les auteurs de l’article ont profité de cet ensemble
de données riches et normalisées pour se livrer à des analyses
statistiques destinées à éclairer l’évolution des processeurs depuis
quarante ans. Il est à noter que les lecteurs sont invités à contribuer
à l’enrichissement de la base de données, qu’ils peuvent la télécharger
intégralement pour leur usage personnel, et que les auteurs donnent
le texte des procédures R qu’ils ont utilisées pour leurs analyses, ce
qui facilitera grandement le travail de celui qui voudrait produire ses
propres analyses.

La plupart des processeurs modernes peuvent adapter leur fréquence
d’horloge et leur tension d’alimentation à la tâche qu’ils effectuent à
un instant donné, ce qui complique l’étude de l’évolution de ces
variables au fil des améliorations de la technologie.

Afin de pouvoir comparer raisonnablement les performances de
processeurs de conception et de réalisation technique très
différentes, à cause principalement des progrès des procédés de
fabrication, nos auteurs ont dû mettre au point une méthodologie de
normalisation de la technologie
. Pour ce faire ils ont cherché à
estimer le facteur d’échelle procuré par la technologie à la
performance.

Il leur fallait définir une métrique pour la performance : ils se sont
appuyés surtout sur les résultats de la suite de benchmark SPEC 2006,
et pour les processeurs trop anciens, sur les versions antérieures de
SPEC (1989, 1992, 1995 et 2000). Pour établir des abaques de passage
d’une métrique à une autre ils se sont appuyés sur l’existence de processeurs
pour lesquels étaient disponibles des résultats dans deux échelles
successives.

Pour estimer la performance que procurerait un processeur ancien s’il
était réalisé selon une technologie plus moderne, le facteur fréquence
d’horloge est certes déterminant, mais il doit être pondéré par le
temps d’accès à la mémoire, qui a progressé beaucoup moins
rapidement. Pour calculer une puissance putative, les auteurs
supposent que les constructeurs augmentent la taille de la mémoire
cache "on-chip" afin de maintenir constant le taux de défauts de
cache, c’est-à-dire la proportion des tentatives d’accès aux données
qui ne sont pas satisfaites par le cache, et qui nécessitent un accès
réel à la mémoire centrale, avec la mise en attente qui en résulte
pour le processus concerné. Ils en déduisent la loi empirique selon
laquelle la taille du cache doit croître comme le carré de la
fréquence d’horloge.

Pour imputer une fréquence d’horloge putative à un processeur ancien
s’il était réalisé selon une technologie plus moderne, il faut aussi
connaître l’évolution des délais induits par les portes logiques et par
les fils de liaison. Ces données sont heureusement sensiblement les
mêmes pour tous les types de portes, et fréquemment disponibles,
ce qui a permis aux auteurs d’établir une formule d’extrapolation.

Le rythme d’introduction de nouveaux procédés de fabrication,
permettant une nouvelle géométrie des circuits, est de deux à
trois ans, avec une certaine accélération dans la dernière décennie.
Chaque génération divise la taille des transistors par √2.

Au cours des 25 ans écoulés depuis l’Intel 80386, la taille des transistors
a été réduite selon un facteur 4 000 ; or le nombre de transistors
par processeur a été multiplié par 16 000 : l’explication est
l’augmentation de la surface des processeurs, 103 mm²
pour le 80386, 296 mm² pour l’Intel Core i7 par exemple.

Si le seul facteur d’augmentation de la fréquence était la taille des
transistors, les processeurs actuels tourneraient à 500 MHz, au
lieu de 3 GHz et plus : un autre facteur est l’augmentation du
nombre d’étages des pipelines, c’est-à-dire que chaque opération
est décomposée en un plus grand nombre de micro-opérations.
Le 80386 avait un pipeline à deux étages (une étape "Fetch",
une étape "Execute"), 31 étages pour le Pentium IV, et un
retour vers des valeurs plus raisonnables avec 16 étages pour
le Core i7.

Si la puissance électrique avait crû comme la fréquence,
le facteur aurait été plus important. Entre le 80386 (1986)
et le Pentium 4 (2000), la taille des transistors a été divisée
par 16, la tension d’alimentation divisée par 4, la fréquence
d’horloge multipliée par 200. On aurait pu s’attendre à une
multiplication de la puissance électrique nécessaire par
16 × 200 ⁄ 4² = 200. Or le facteur observé
est seulement 32. Cette économie est essentiellement procurée
par des optimisations de l’architecture, notamment dans
la propagation des signaux d’horloge.

 Conclusion : amélioration continue dans tous les compartiments

Depuis 2005, l’évolution est commandée par la recherche d’économie
d’énergie, notamment par l’implantation sur un même chip de plusieurs
cœurs, c’est-à-dire des processeurs élémentaires, ce qui autorise du
traitement parallèle sur un seul chip. Mais néanmoins la performance
unitaire des cœurs continue à augmenter, même indépendamment des
apports de l’accroissement de la fréquence et de la taille du cache :
ces gains proviennent de perfectionnements architecturaux tels que
l’implantation sur le chip des contrôleurs d’accès à la mémoire et la
multiplication des unités d’exécution (architecture super-scalaire).
Il est toutefois difficile d’isoler ces progrès dûs au matériel de ceux dûs
aux progrès des compilateurs, dont dépendent les résultats des
benchmarks SPEC.

La base de données CPU DB permet désormais de quantifier les
progrès incroyables réalisés en quarante ans par l’industrie des
microprocesseurs, et offre les moyens d’en analyser les évolutions
et les tendances par des méthodes scientifiques.

Notes :

[1AMD,
Intel, Broadcom, Centaur, Cypress, DEC, Fujitsu, HAL, HP, IBM, MIPS,
Cyrix, Hitachi, MOS, Motorola, NexGen, ROSS, Sun, WDC, Zilog, SGI

[2Pour une
description du mécanisme de pipeline, le lecteur peut télécharger
(gratuitement) mon livre de système et en consulter le chapitre
9 relatif aux évolutions de l’architecture des processeurs.

[3Le lecteur peu familier de ces notions peut
télécharger (gratuitement) mon livre de système et en consulter
le chapitre 4 relatif à la mémoire.

Forum
Répondre à cet article


pucePlan du site puceContact puceMentions légales puceEspace rédacteurs puce

RSS

2004-2017 © Site WWW de Laurent Bloch - Tous droits réservés
Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.86.17