Les processeurs, des transistors aux milliards de transistors
Le processeur est le cœur de l'ordinateur : il lit les instructions d'un programme et les exécute, l'une après l'autre, des milliards de fois par seconde. En cinquante ans, il est passé de 2 300 transistors (Intel 4004, 1971) à plus de 100 milliards, gravés avec des motifs de quelques nanomètres. Cinq planches pour comprendre comment des transistors calculent, comment leur nombre a doublé tous les deux ans, comment le processeur devine la suite d'un programme, pourquoi il s'est divisé en plusieurs cœurs, puis pour programmer un vrai processeur de 1975.
Du tube électronique à la puce
Les premiers ordinateurs, comme l'ENIAC (1945) et ses 17 468 tubes électroniques, occupaient des salles entières et consommaient 150 kilowatts. En 1947, aux laboratoires Bell, John Bardeen, Walter Brattain et William Shockley inventent le transistor, un interrupteur commandé électriquement, bien plus petit et plus fiable qu'un tube. En 1958-1959, Jack Kilby (Texas Instruments) et Robert Noyce (Fairchild) réunissent plusieurs transistors sur une même pastille de silicium : c'est le circuit intégré, ou « puce ». En 1971, Intel loge un processeur complet sur une seule puce, le 4004, conçu par Federico Faggin, Ted Hoff, Stanley Mazor et Masatoshi Shima pour une calculatrice japonaise : c'est le premier microprocesseur commercial.
Les grandes étapes de la technologie (en haut) et quelques processeurs marquants (en bas). Chaque point en bas a transformé un usage : la micro-informatique, les PC, les téléphones, l'intelligence artificielle.
Planche 1
Calculer avec des transistors : l'additionneur
1947 – 1971
Quelques transistors forment une porte logique : ET (vrai si les deux entrées valent 1), OU, OU exclusif (vrai si une seule entrée vaut 1). Cinq portes forment un additionneur complet, qui additionne deux bits et la retenue venue de la droite. En chaînant huit additionneurs, on additionne deux nombres de 8 bits, exactement comme à l'école : colonne par colonne, de droite à gauche, en propageant la retenue. Chaque porte met un petit temps à réagir, le délai de porte ; regardez la retenue se propager.
Les 8 additionneurs complets, bit 7 à gauche et bit 0 à droite. En haut, les bits de A et de B ; en bas, les bits de la somme. Les flèches rouges portent la retenue d'un additionneur au suivant ; un signal s'allume quand il a fini de se calculer. L'horloge compte les délais de porte écoulés.
A + B (décimal / binaire)
—
Délais de porte : chaîne de retenue / anticipation
—
Portes pour 8, 16, 32, 64 bits (chaîne / anticipation)
—
Contrôle : les 65 536 additions de 8 bits par les deux circuits, et leurs portes et délais, recalculés en Python
—
Ce qu'il faut retenir. Avec la retenue en chaîne, le temps de calcul grandit comme le nombre de bits : 17 délais de porte pour 8 bits, 129 pour 64 bits. Les processeurs utilisent donc des additionneurs à anticipation de retenue, qui calculent toutes les retenues en parallèle, par un arbre (ici celui de Kogge et Stone, 1973) : 13 délais seulement pour 64 bits, au prix de trois fois plus de portes. C'est un compromis permanent en conception de processeur : on dépense des transistors pour gagner du temps. Un additionneur complet compte environ 28 transistors en technologie CMOS ; l'additionneur de 8 bits en demande donc environ 224, soit un dixième du 4004.
Planche 2
La loi de Moore : doubler tous les deux ans
1965 – 2026
En 1965, Gordon Moore, futur cofondateur d'Intel, remarque que le nombre de composants sur une puce double chaque année ; en 1975, il corrige : tous les deux ans. Cette « loi », qui est une observation et un objectif que l'industrie s'est donné, a tenu un demi-siècle, grâce à une gravure toujours plus fine. Comparez les trois courbes : le nombre de transistors, la fréquence d'horloge et la finesse de gravure.
Échelle logarithmique : chaque graduation multiplie par 10, et une droite signifie une croissance exponentielle. Pour les transistors, la droite pointillée est la tendance calculée par la méthode des moindres carrés sur les 29 processeurs. Valeurs publiées par les fabricants, fréquences et finesses indicatives.
Processeur de l'année choisie
—
Tendance : durée de doublement
—
Tendance pour l'année choisie / rapport au 4004
—
Contrôle : droite des moindres carrés recalculée par NumPy (numpy.polyfit)
—
Ce qu'il faut retenir. Le nombre de transistors double environ tous les 2,1 ans : en 54 ans, il a été multiplié par près de cent millions. Jusqu'en 2004 environ, la fréquence montait aussi, car des transistors plus petits commutent plus vite et consomment moins (règle de Dennard, 1974). Puis la consommation et la chaleur sont devenues un mur : la fréquence plafonne vers 4 à 6 GHz depuis vingt ans. Les transistors supplémentaires servent désormais à multiplier les cœurs, les mémoires caches et les circuits spécialisés (graphisme, intelligence artificielle). Depuis les années 2010, les noms des procédés (« 3 nm », « 2 nm ») sont des appellations commerciales : aucun motif ne mesure réellement 2 nm. Le 2 nm de TSMC entre en production de masse fin 2025.
Planche 3
Deviner l'avenir : la prédiction de branchement
1981 – aujourd'hui
Un processeur moderne commence une instruction à chaque cycle, bien avant d'avoir fini les précédentes (c'est le pipeline). Mais devant un branchement conditionnel, « si … alors sauter », il ne sait pas encore quelle sera l'instruction suivante. Plutôt que d'attendre, il parie, puis annule le travail s'il s'est trompé, ce qui coûte 15 à 20 cycles sur un processeur actuel. Six stratégies de pari sont essayées ici sur les branchements réellement exécutés par quatre programmes RISC-V, relevés par l'émulateur QEMU.
En haut, l'automate du compteur de 2 bits d'un branchement : deux états « pris », deux états « non pris » ; il faut deux erreurs de suite pour changer d'avis. En bas, la suite des branchements exécutés : vert = bien prédit, rouge = raté.
Taux de bonnes prédictions des six stratégies sur le programme choisi. Les tables comptent 64 compteurs (256 pour gshare, qui mélange l'adresse du branchement et les 8 derniers résultats).
Branchements exécutés / déjà traités
—
Bonnes prédictions (stratégie animée)
—
Cycles perdus (20 par erreur) : stratégie animée / sans prédiction
—
Contrôle : branchements relevés par QEMU 8.2 et taux des 6 stratégies recalculés en Python
—
Ce qu'il faut retenir. Les boucles rendent les branchements très prévisibles : la plupart sont « pris » de nombreuses fois de suite. Le compteur de 2 bits, proposé par James Smith en 1981, ne se laisse pas troubler par la sortie d'une boucle. Le prédicteur gshare de Scott McFarling (1993) tient compte des derniers branchements exécutés, et reconnaît des motifs comme « pris, pris, non pris ». Les processeurs actuels utilisent des prédicteurs bien plus élaborés (TAGE, perceptrons), qui dépassent souvent 95 % de réussite. Cette exécution par anticipation a un revers : les attaques Spectre et Meltdown (2018) ont montré qu'elle pouvait laisser fuiter des secrets.
Planche 4
Plusieurs cœurs et la loi d'Amdahl
2005 – aujourd'hui
Faute de pouvoir augmenter la fréquence, les fabricants placent depuis 2005 plusieurs processeurs complets, les cœurs, sur une même puce : 2, puis 4, 8, et jusqu'à près de 200 dans les serveurs. Les processeurs graphiques (GPU) vont plus loin, avec des milliers de petits cœurs. Mais un programme n'en profite que si son travail peut être découpé. En 1967, Gene Amdahl a montré que la partie qui reste séquentielle limite le gain, quel que soit le nombre de cœurs.
Un travail de 1 200 tâches identiques. La partie séquentielle (en rouge) ne peut s'exécuter que sur un seul cœur ; les autres tâches (en bleu) sont réparties entre les cœurs. Chaque ligne est un cœur, le temps s'écoule vers la droite.
Accélération obtenue selon le nombre de cœurs (échelle logarithmique), pour les cinq parts séquentielles. Les courbes plafonnent à 1 divisé par la part séquentielle : 10 fois au plus pour 10 %.
Durée : 1 cœur / cœurs choisis (en tâches)
—
Accélération obtenue / formule d'Amdahl
—
Efficacité (part utile du temps des cœurs)
—
Contrôle : durées des 50 cas (5 parts × 10 nombres de cœurs) recalculées en Python
—
Ce qu'il faut retenir. Avec 10 % de travail séquentiel, 8 cœurs n'accélèrent que 4,7 fois, et 1 024 cœurs moins de 10 fois. Pour exploiter les processeurs modernes, il faut donc repenser les algorithmes pour les rendre parallèles. Certains calculs s'y prêtent parfaitement : les pixels d'une image, les cellules d'une simulation, et surtout les multiplications de matrices des réseaux de neurones, d'où le succès des GPU et des accélérateurs d'intelligence artificielle. En 1988, John Gustafson a nuancé la loi d'Amdahl : quand on dispose de plus de cœurs, on traite en général des problèmes plus gros, dont la part parallèle grandit.
Planche 5 · signature
Programmer un processeur de 1975 : le MOS 6502
1975 – 2026
Conçu par Chuck Peddle et Bill Mensch chez MOS Technology et vendu 25 dollars en 1975, quand ses concurrents coûtaient plusieurs fois plus cher, le 6502 a fait naître la micro-informatique familiale : Apple II, Commodore 64, Atari, BBC Micro, Oric, console NES. Il ne compte qu'environ 3 500 transistors, trois registres de 8 bits (A, X, Y), un pointeur de pile et un registre d'état. Voici un assembleur et un émulateur du 6502, écrits pour cette page : ils exécutent les 151 instructions officielles, en comptant les cycles d'horloge. Comme sur le site pédagogique easy6502, les octets de $0200 à $05FF s'affichent sur un écran de 32 × 32 pixels.
Le programme
L'écran et les registres
La page zéro (adresses $00 à $3F)
Instructions / cycles d'horloge
—
Durée sur un Apple II (1,023 MHz)
—
Message de l'assembleur ou du processeur
—
Contrôle : registres, cycles et mémoire comparés à l'émulateur py65 ; assembleur comparé à celui de py65 (604 instructions)
—
Ce qu'il faut retenir. Le 6502 n'a ni multiplication (exemple 2), ni calcul sur plus de 8 bits : il faut tout construire avec des additions, des décalages et la retenue C, qui relie un octet au suivant (exemple 3). Sa page zéro, les 256 premiers octets de la mémoire, est accessible plus vite, avec des instructions plus courtes : elle sert de registres supplémentaires (exemples 4 et 5). Chaque instruction prend de 2 à 7 cycles : à 1 MHz, le 6502 exécute environ 300 000 instructions par seconde, quand un cœur de 2026 en exécute plusieurs milliards, avec plusieurs instructions par cycle. Le mode « pas à pas » montre l'effet de chaque instruction ; essayez de changer les couleurs de l'exemple 5 ou les facteurs de l'exemple 2.
Où sont les processeurs aujourd'hui ?
Ordinateurs et serveurs
Les PC et la plupart des serveurs utilisent des processeurs x86 (Intel, AMD), héritiers du 8086 de 1978 ; les Mac sont passés en 2020 à des puces ARM conçues par Apple, et les grands fournisseurs de « nuage » conçoivent aussi leurs propres processeurs ARM.
Téléphones et tablettes
Un téléphone contient un « système sur puce » : plusieurs cœurs ARM, rapides et économes, un processeur graphique, un accélérateur d'intelligence artificielle, le modem et les circuits de l'appareil photo, réunis sur quelques centimètres carrés.
Systèmes embarqués
Les microcontrôleurs, petits processeurs avec leur mémoire, sont de loin les plus nombreux : il s'en vend des dizaines de milliards par an. Une voiture récente en contient des dizaines, une machine à laver, une carte bancaire ou une ampoule connectée au moins un.
GPU et intelligence artificielle
Conçus pour le jeu vidéo à la fin des années 1990, les processeurs graphiques sont devenus l'outil de l'apprentissage profond : leurs milliers de cœurs multiplient des matrices en parallèle. Des accélérateurs spécialisés (TPU de Google, NPU des téléphones) poussent cette logique plus loin.
Supercalculateurs
Les plus puissants réunissent des dizaines de milliers de processeurs et de GPU, et dépassent depuis 2022 le milliard de milliards d'opérations par seconde (exaflops) pour la météo, le climat, la physique ou la biologie.
Une industrie stratégique
La fabrication des puces les plus fines est concentrée chez quelques acteurs : TSMC à Taïwan, Samsung, Intel ; les machines de lithographie par ultraviolet extrême ne sont produites que par le néerlandais ASML. RISC-V, jeu d'instructions libre, permet à chacun de concevoir ses processeurs sans licence.
Frise des jalons
Pour aller plus loin
John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach, Morgan Kaufmann.
Gordon E. Moore, « Cramming more components onto integrated circuits », Electronics, 19 avril 1965.
Gene M. Amdahl, « Validity of the single processor approach to achieving large scale computing capabilities », AFIPS, 1967.
James E. Smith, « A study of branch prediction strategies », ISCA, 1981 ; Scott McFarling, « Combining branch predictors », DEC WRL, 1993.
Brian Bagnall, Commodore: A Company on the Edge, Variant Press (l'histoire du 6502) ; site easy6502 de Nick Morgan.
Les additionneurs de la planche 1 ont été vérifiés en Python sur toutes les additions de 8 bits ; la tendance de la planche 2 a été calculée par NumPy ; les branchements de la planche 3 ont été relevés par l'émulateur QEMU 8.2 en exécutant des programmes RISC-V assemblés par GNU as ; les programmes de la planche 5 ont été exécutés par l'émulateur 6502 py65. Votre navigateur refait tous ces calculs et les compare. Les nombres de transistors sont ceux publiés par les fabricants, les fréquences et finesses de gravure sont indicatives.