Le niveau de la logique numérique traite une porte comme une fonction : des bits en entrée, un bit en sortie. Ce niveau ouvre la porte et trouve la pièce qui fait le travail. Chaque porte, chaque bascule, chaque bit de cache d’une puce moderne est construit à partir d’un seul type de composant, utilisé d’une seule façon : le transistor, employé comme interrupteur qu’une tension ouvre et ferme. Ce chapitre examine cet interrupteur — ce qu’il fait, comment on en est arrivé là, et combien on peut désormais en placer sur une puce.
Un interrupteur commandé par une tension
Un interrupteur ordinaire a deux bornes et un levier. Levier baissé, les deux bornes sont reliées et le courant passe ; levier levé, elles sont séparées. Un transistor, c’est la même chose, avec le levier remplacé par une troisième borne : la tension sur cette borne décide si les deux autres sont reliées.
Les transistors de toutes les puces modernes sont des MOSFET (metal–oxide–semiconductor field-effect transistors, transistors à effet de champ métal-oxyde-semiconducteur). Leurs trois bornes sont :
| Borne | Rôle |
|---|---|
| grille | l’entrée de commande — le « levier » |
| source | une extrémité de l’interrupteur |
| drain | l’autre extrémité |
La grille est séparée du reste du transistor par une fine couche isolante, si bien que presque aucun courant n’y entre. La tension de grille agit à distance, par un champ électrique, et ouvre ou ferme un canal conducteur entre la source et le drain. Comment un MOSFET commute — pourquoi un champ peut rendre conductrice une mince tranche de silicium — est le sujet du niveau de la physique. Ici, seul son comportement nous intéresse.
Ce comportement fait du transistor un composant idéal pour la logique numérique, pour trois raisons :
- Il est commandé par une tension, et sa sortie est une tension. La sortie d’un interrupteur peut attaquer directement les grilles des suivants, donc on peut enchaîner les interrupteurs en circuits de profondeur quelconque.
- L’entrée de commande ne consomme presque aucun courant une fois chargée. Un signal peut commander de nombreuses autres portes.
- Il restaure les niveaux. Un 1 un peu faible sur la grille ferme quand même complètement l’interrupteur, et la sortie est tirée jusqu’à l’alimentation ou jusqu’à la masse. Le bruit ne s’accumule pas de porte en porte — la propriété sur laquelle s’appuyait le chapitre sur les portes quand il disait que chaque porte ressort des niveaux propres.
Deux sortes d’interrupteurs : nMOS et pMOS
Les MOSFET existent en deux types complémentaires, qui se comportent comme l’image l’un de l’autre dans un miroir :
| Type | Tension de grille qui le ferme | Bon pour tirer la sortie… | Symbole dans les schémas logiques |
|---|---|---|---|
| nMOS | haute (un 1 logique) | vers la masse (0) | grille simple |
| pMOS | basse (un 0 logique) | vers l’alimentation (1) | grille avec une bulle d’inversion |
On peut voir un transistor nMOS comme un interrupteur qui se ferme quand sa grille vaut 1, et un transistor pMOS comme un interrupteur qui se ferme quand sa grille vaut 0. La bulle du symbole pMOS est la même bulle d’inversion que sur une porte NAND : « actif à l’état bas ».
La deuxième colonne compte autant que la première. Un transistor nMOS transmet un 0 franc mais un 1 dégradé ; un transistor pMOS transmet un 1 franc mais un 0 dégradé. C’est pourquoi les vraies portes utilisent des transistors nMOS pour relier la sortie à la masse et des transistors pMOS pour la relier à l’alimentation, jamais l’inverse. Utiliser les deux types ensemble, chacun dans son sens fort, c’est le CMOS — MOS complémentaire —, et c’est le sujet du chapitre suivant.
Placez un transistor pMOS entre l’alimentation et la sortie, un transistor nMOS entre la sortie et la masse, et reliez les deux grilles à l’entrée :
| Entrée | pMOS (vers l’alimentation) | nMOS (vers la masse) | Sortie |
|---|---|---|---|
| 0 | fermé | ouvert | reliée à l’alimentation : 1 |
| 1 | ouvert | fermé | reliée à la masse : 0 |
Deux transistors, et la sortie est toujours l’inverse de l’entrée : une porte NOT. Dans chacun des deux états, un interrupteur est ouvert, donc il n’y a jamais de chemin direct de l’alimentation à la masse, et la porte ne consomme du courant que pendant qu’elle commute. Ce seul fait explique pourquoi le CMOS l’a emporté.
Relais, tubes à vide et transistors bipolaires
Le transistor est le quatrième type d’interrupteur avec lequel on a construit des ordinateurs. Chacun a remplacé le précédent parce qu’il était plus petit, plus rapide, plus fiable et consommait moins.
| Interrupteur | Époque | Commandé par | Point faible |
|---|---|---|---|
| Relais | années 1930–1940 | un courant dans un électroaimant, qui déplace un contact métallique | lent (millisecondes), usure mécanique |
| Tube à vide | années 1940–1950 | la tension sur une grille placée entre une cathode chaude et une anode | chaud, gourmand en énergie, filaments qui grillent |
| Transistor bipolaire (BJT) | années 1950–1980 | un petit courant dans la base | consomme du courant même au repos |
| MOSFET | années 1970 à aujourd’hui | la tension sur une grille isolée | — |
Le Z3 de Konrad Zuse (1941) calculait avec des relais. L’ENIAC (1945) utilisait environ 18 000 tubes à vide et devait être réparé sans cesse, car les tubes tombaient régulièrement en panne. Le transistor a été inventé aux Bell Labs en 1947, et le MOSFET, aux Bell Labs également, en 1959. Le circuit intégré — plusieurs transistors fabriqués ensemble sur un même morceau de semiconducteur et câblés sur place — est apparu en 1958–1959, grâce à Jack Kilby chez Texas Instruments et à Robert Noyce chez Fairchild.
La figure de Tanenbaum sur les portes utilise un transistor bipolaire, dont les trois bornes sont le collecteur, la base et l’émetteur, avec une résistance qui tire la sortie vers l’alimentation. Un courant dans la base le rend passant. C’est ainsi que fonctionnaient les familles logiques TTL et ECL des années 1960 à 1980, et le livre note que le MOS « a largement pris le dessus ». Aujourd’hui, la conquête est totale : tous les processeurs, toutes les mémoires et toutes les puces flash sont en CMOS. Les transistors bipolaires survivent dans les circuits analogiques et radio, où leur gain en courant est utile. La conception à résistance a un coût sur lequel le livre ne s’attarde pas : quand le transistor est passant, un courant traverse la résistance en permanence, si bien que la porte consomme de l’énergie rien qu’en maintenant un 0. Avec des milliards de portes, c’est inabordable ; le CMOS, qui remplace la résistance par un second transistor, ne le fait pas.
Des portes à partir d’interrupteurs
Deux interrupteurs en série ne conduisent que si les deux sont fermés : c’est AND. Deux interrupteurs en parallèle conduisent si l’un ou l’autre est fermé : c’est OR. Tout le reste en découle. Avec des transistors nMOS reliant la sortie à la masse :
- En série, la sortie n’est tirée à 0 que lorsque les deux entrées valent 1. Sinon, elle reste haute. C’est NAND.
- En parallèle, la sortie est tirée à 0 dès qu’une des entrées vaut 1. C’est NOR.
Voilà pourquoi NAND et NOR, et non AND et OR, sont les portes naturelles : un transistor qui tire la sortie vers le bas inverse par nature. Une porte AND est un NAND suivi d’un inverseur.
Voici les trois portes que Tanenbaum construit avec des transistors — NOT, NAND et NOR —, avec les autres, au niveau logique :
À essayer : Cliquez sur un interrupteur d’entrée du circuit (ou sur son bouton au-dessus) pour le basculer — les portes et la table de vérité suivent.
| A | B | NOT A | A AND B | A OR B | A XOR B | A NAND B | A NOR B | A XNOR B |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
Every basic gate fed by the same two switches. Toggle A and B and watch the truth table follow. NAND and NOR are universal: every other gate can be built from either one.
Unit-delay model: every gate takes one step to react. With auto off, toggle switches and press step to watch the change travel gate by gate.
Tanenbaum compte deux transistors pour un NAND ou un NOR et trois pour un AND ou un OR, parce que dans ses circuits bipolaires, le pull-up (le tirage vers le haut) est une résistance. En CMOS, la résistance devient un réseau de transistors pMOS, et les chiffres doublent : un NAND ou un NOR à 2 entrées demande 4 transistors, et AND ou OR en demandent 6. Le chapitre suivant les construit un par un.
Tensions et vitesses, hier et aujourd’hui
Le livre donne deux chiffres qui ont vieilli. Il dit que les puces CMOS fonctionnent « aux environs de +1,5 volt ». Les tensions d’alimentation n’ont cessé de baisser depuis : les cœurs des processeurs actuels fonctionnent en général autour de 1 volt ou moins, et la tension change en permanence à mesure que la puce adapte sa vitesse à la charge. Une tension plus basse signifie moins d’énergie par commutation, comme le calculera le chapitre suivant.
Le livre dit aussi qu’un transistor commute en « une nanoseconde ou moins », et ailleurs que les délais de porte vont de « quelques centaines de picosecondes à quelques nanosecondes ». C’était généreux, même en 2013. Un processeur cadencé à 3 GHz a un cycle de 333 picosecondes, et un étage de pipeline doit faire tenir une douzaine de niveaux de portes ou plus dans ce cycle : chaque porte doit donc commuter en quelques dizaines de picosecondes au plus. En une nanoseconde, un cœur moderne parcourt aujourd’hui trois cycles d’horloge et peut achever plusieurs instructions.
La loi de Moore
En 1965, Gordon Moore, alors chez Fairchild, remarqua que le nombre de composants sur la puce la plus rentable doublait chaque année, et prédit que cela continuerait pendant une décennie. En 1975, il révisa ce rythme à un doublement tous les deux ans. L’observation est devenue la loi de Moore.
Tanenbaum écrit que la loi de Moore « est souvent formulée » comme un doublement tous les 18 mois. C’est souvent le cas, mais ce n’est pas ce qu’a dit Moore : le chiffre de 18 mois est généralement attribué à David House, d’Intel, et il portait sur les performances, qui ont augmenté plus vite que le nombre de transistors parce que les transistors devenaient aussi plus rapides. On peut vérifier quel rythme les puces ont réellement suivi :
| Puce | Année | Transistors |
|---|---|---|
| Intel 4004 | 1971 | environ 2 300 |
| Apple M2 Ultra | 2023 | 134 milliards (chiffre d’Apple) |
134 × 10⁹ / 2 300 ≈ 5,8 × 10⁷, soit 2 à la puissance 25,8. En 52 ans, le nombre de transistors a donc doublé 25,8 fois : une fois tous les 2,02 ans. Le rythme de deux ans de Moore colle presque parfaitement. Un doublement tous les 18 mois aurait donné 34,7 doublements, soit environ 60 000 milliards de transistors sur une puce — plus de 450 fois ce qu’on a obtenu. Les « 60 pour cent d’augmentation par an » du livre correspondent au rythme de 18 mois (2^(12/18) ≈ 1,59) ; le rythme de deux ans donne 41 pour cent par an (√2 ≈ 1,41).
Deux précautions sur cette comparaison. D’abord, le M2 Ultra n’est pas un seul morceau de silicium : ce sont deux puces M2 Max réunies dans un même boîtier par la liaison UltraFusion d’Apple. Les puces sont de plus en plus assemblées à partir de plusieurs dies, comme l’explique le chapitre du sable aux puces, et c’est l’un des moyens par lesquels l’industrie prolonge la courbe. Ensuite, la loi de Moore n’a jamais été une loi physique. C’est une observation économique sur la vitesse à laquelle l’industrie parvient à réduire la taille des transistors tout en faisant baisser le coût par transistor, et elle ralentit : le coût par transistor a beaucoup moins baissé lors des dernières générations de procédés qu’autrefois.
Ce qui s’est arrêté plus tôt, c’est la loi d’échelle de Dennard (Dennard scaling), la règle selon laquelle, quand les transistors rétrécissent, leur tension et leur courant diminuent avec eux, si bien que la puissance par unité de surface reste constante. Elle a cessé de s’appliquer au milieu des années 2000, quand les tensions n’ont plus pu baisser beaucoup sans que les transistors laissent fuir trop de courant à l’état bloqué. Depuis, les fréquences d’horloge sont restées à peu près stables, à quelques gigahertz, et les transistors supplémentaires sont allés à la place dans davantage de cœurs, des caches plus grands, des GPU et des unités spécialisées — l’histoire du chapitre Multicœurs du niveau de la microarchitecture. Le chapitre Les limites du niveau de la physique explique pourquoi les fuites augmentent quand les composants rétrécissent.
À quoi servent 134 milliards d’interrupteurs
Sur le M2 Ultra sur lequel ce chapitre a été écrit, sysctl indique 24 cœurs de CPU et system_profiler un GPU de 60 cœurs. Une grande partie des 134 milliards de transistors n’est pas de la logique du tout, mais de la mémoire. Chaque bit de cache SRAM est une cellule de six transistors : deux inverseurs rebouclés l’un sur l’autre qui retiennent le bit — le verrou du chapitre sur les bascules, au niveau des transistors — plus deux interrupteurs d’accès. sysctl montre quatre groupes de quatre cœurs performance partageant chacun 16 Mio de cache L2, et deux groupes de cœurs efficacité avec 4 Mio chacun : 72 Mio de L2. À 8 388 608 bits par Mio et six transistors par bit, cela fait 72 × 8 388 608 × 6 ≈ 3,6 milliards de transistors dans les seules cellules de données du L2, sans compter les étiquettes, le contrôle, les caches L1 et les mémoires du GPU. Le reste, ce sont les cœurs de calcul du GPU, le moteur neuronal, les encodeurs multimédias, les contrôleurs mémoire et les cœurs de CPU eux-mêmes.
Tout cela, c’est le même interrupteur, répété. La porte du haut de cette page et le 134 milliardième transistor du M2 Ultra diffèrent par la taille et la vitesse, mais pas par ce qu’ils font.
À retenir
- Un transistor est un interrupteur dont la tension de grille relie ou sépare sa source et son drain. La grille ne consomme presque aucun courant, et la sortie d’un interrupteur peut en commander d’autres, si bien que les interrupteurs s’enchaînent en circuits de n’importe quelle taille.
- Le nMOS conduit quand sa grille vaut 1 et transmet un 0 franc ; le pMOS conduit quand sa grille vaut 0 et transmet un 1 franc. Utiliser les deux, chacun dans son sens fort, c’est le CMOS.
- On a construit des ordinateurs avec des relais, des tubes à vide, des transistors bipolaires et aujourd’hui des MOSFET. Les portes bipolaires à résistance du livre gaspillaient de l’énergie pour maintenir un 0 ; le CMOS, non.
- Des interrupteurs en série font un AND, en parallèle un OR ; tirer la sortie vers le bas inverse, donc NAND et NOR viennent naturellement. En CMOS, ils demandent 4 transistors, pas les 2 du livre.
- Les chiffres de Tanenbaum sont datés : les alimentations sont désormais autour de 1 V ou moins, pas 1,5 V, et les portes commutent en quelques dizaines de picosecondes, pas en une nanoseconde.
- La loi de Moore, c’est un doublement tous les deux ans, pas tous les 18 mois : du 4004 (environ 2 300 transistors, 1971) au M2 Ultra (134 milliards, 2023), on compte 25,8 doublements en 52 ans. La loi d’échelle de Dennard a pris fin au milieu des années 2000, ce qui explique que les fréquences d’horloge aient cessé de monter.