FIG. 26Comment ça marche
Additionneur binaire : suivez les bits et les retenues
Additionner 7 et 9 demande 20 portes ici. La dernière retenue arrive 8 délais de porte après le basculement des interrupteurs.
Cet appareil ne peut pas afficher le modèle 3D. Les étapes de la visite ci-dessous se lisent sous forme de texte.
1 / 20 Deux nombres de 4 bits et cinq LEDLa rangée avant représente deux nombres de 4 bits. A est 0111 (7), B est 1001 (9). Suivez la lumière à travers 20 portes jusqu’à 10000, soit 16. Touchez un interrupteur ou choisissez un autre circuit avec « Circuit ».
Faites glisser pour tourner. Molette ou pincement pour zoomer.
Additionner 7 et 9 avec des interrupteurs
Les portes logiques additionnent des nombres binaires en produisant, pour chaque colonne, un bit de somme et un bit de retenue. Un additionneur complet accepte en plus la retenue de la colonne précédente. Dans un additionneur à propagation de retenue, chaque retenue doit traverser les portes avant que le résultat final se stabilise.
Sur papier, 7 + 9 tient en une ligne : 6 dans la colonne des unités, on retient 1, et le résultat est 16. Un ordinateur n’a pas de papier et ne sait pas ce qu’est un nombre. Il dispose seulement d’interrupteurs, ouverts ou fermés. Comment un tas d’interrupteurs peut-il tirer 16 de 7 et de 9 ?
La carte ci-dessus répond à cette question couche après couche, puis va plus loin. Elle s’ouvre sur un additionneur 4 bits à propagation de retenue : huit interrupteurs de bits sur le bord avant pour deux nombres, A et B, chacun de 0 à 15, vingt portes logiques derrière eux et cinq LED sur le bord arrière pour le résultat. Quand vous basculez un interrupteur, les pistes de cuivre qui portent un 1 s’allument, et la lumière avance à travers les portes à la vitesse que vous réglez avec le curseur « Délai de porte ». Le panneau dans le coin affiche en même temps les entrées et les LED, en binaire et en décimal.
Le curseur « Circuit » remplace la carte par l’un des 15 circuits construits avec le même type de puce à portes : une porte seule, un demi-additionneur, un additionneur complet, des additionneurs 4 bits et 8 bits à propagation de retenue, un additionneur à anticipation de retenue, un additionneur-soustracteur, un comparateur, un multiplexeur, un décodeur 7 segments, un verrou SR, une bascule D, un compteur, une petite UAL et un défi fait de quatre portes NAND. Tous fonctionnent avec la même simulation, ce qui permet de comparer le nombre de portes dont chacun a besoin et le temps qu’il met à se stabiliser.
Écrire les nombres avec deux chiffres
En décimal, chaque colonne vaut dix fois celle qui se trouve à sa droite : unités, dizaines, centaines. Le binaire fonctionne de la même façon, avec deux au lieu de dix. Les colonnes valent 1, 2, 4 et 8, si bien que quatre bits peuvent contenir tout nombre de 0 (0000) à 15 (1111). Sur la carte, l’interrupteur A0 correspond à la colonne des unités et A3 à celle des huit, et les petits nombres imprimés sous chaque interrupteur indiquent sa valeur.
Sept s’écrit 4 + 2 + 1, c’est-à-dire 0111. Neuf s’écrit 8 + 1, c’est-à-dire 1001. Leur somme, 16, demande une cinquième colonne qui vaut 16, et le résultat est donc 10000. Cette cinquième colonne est la LED de retenue, C4. Chaque fois qu’une somme dépasse 15, la LED de retenue est le seul moyen dont dispose la carte pour l’indiquer.
Le binaire convient à l’électronique parce qu’un fil n’a besoin d’être que dans l’un de deux états nettement différents. Un circuit n’a pas à distinguer 3 volts de 3,5 volts, seulement « haut » de « bas », et c’est beaucoup plus facile à faire de façon fiable des milliards de fois par seconde.
Un transistor utilisé en interrupteur
Réglez le curseur « Circuit » sur « Une porte » et choisissez « Fil » sous le modèle. L’interrupteur X relie une LED à l’alimentation par un cavalier, et la LED montre exactement ce que dit l’interrupteur : 1 est allumé, 0 est éteint.
Choisissez maintenant « Transistor ». Le modèle montre un transistor NPN à trois pattes. Un faible courant dans la patte du milieu (la base) laisse passer un courant beaucoup plus fort entre les deux autres (le collecteur et l’émetteur), et la LED s’allume. Supprimez le courant de base et la LED s’éteint. Le transistor est devenu un interrupteur que l’on actionne avec de l’électricité au lieu d’un doigt.
C’est une simplification, et le modèle le dit. Un vrai transistor est un composant analogique : plus de courant de base donne plus de courant de collecteur, sur toute une plage. Les circuits logiques sont conçus pour que le transistor ne passe du temps qu’entièrement bloqué ou entièrement passant, et qu’il traverse la zone intermédiaire le plus vite possible. C’est ce qui permet de le traiter comme un interrupteur.
Des portes faites de paires de transistors
Dès qu’un interrupteur peut en commander un autre, on peut construire des décisions. Les puces actuelles utilisent un type de transistor appelé MOSFET, en deux variantes : les transistors à canal n conduisent quand leur entrée est à l’état haut, ceux à canal p conduisent quand elle est à l’état bas. La logique CMOS les associe pour qu’un réseau puisse tirer la sortie vers l’alimentation et l’autre la tirer vers la masse, et pour toute entrée, un seul des deux réseaux conduit. Une porte au repos ne consomme presque aucun courant. Cette propriété, démontrée par Chih-Tang Sah et Frank Wanlass chez Fairchild en 1963, explique qu’un téléphone puisse contenir des milliards de transistors sans fondre.
Comptez les transistors et les portes cessent de coûter la même chose :
| Porte | Fonction | Transistors CMOS |
|---|---|---|
| NOT | inverse son entrée | 2 |
| NAND | 0 seulement si les deux entrées valent 1 | 4 |
| NOR | 1 seulement si les deux entrées valent 0 | 4 |
| AND | NAND suivi de NOT | 6 |
| OR | NOR suivi de NOT | 6 |
| XOR | 1 si les entrées diffèrent | 12 dans la forme simple utilisée ici |
La surprise est que AND, la porte que tout le monde apprend en premier, coûte plus cher que NAND. En CMOS, les portes naturelles sont les portes inverseuses, parce que le réseau à canal n tire la sortie vers le bas : deux transistors à canal n en série ne la tirent vers le bas que si les deux entrées valent 1, ce qui donne NAND, et deux transistors en parallèle donnent NOR. Pour obtenir AND, on ajoute un inverseur. Activez « Transistors par puce » et chaque puce de la carte affiche son propre nombre ; le banc « Une porte » permet de parcourir les sept types et le fil simple.
NAND a encore une propriété. Avec des portes NAND seules, on peut construire NOT (en reliant les deux entrées ensemble), AND (un NAND et un NOT), OR (en inversant d’abord les deux entrées) et tout le reste. Le dernier circuit de la carte est un défi fondé sur ce principe : quatre portes NAND dont vous choisissez les entrées dans le laboratoire sous les commandes. Si le câblage est correct, la sortie reproduit XOR sur les quatre lignes.
Demi-additionneur : XOR pour la somme, AND pour la retenue
Regardez la table de vérité de XOR. 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, et 1 + 1 = 10 en binaire, c’est-à-dire 0 dans cette colonne et 1 reporté. Le chiffre de droite de chaque résultat correspond exactement à la colonne de XOR. La retenue vaut 1 seulement à la dernière ligne, ce qui est exactement AND.
Un XOR et un AND alimentés par les deux mêmes bits les additionnent donc. Cette paire s’appelle un demi-additionneur. Sur la carte « Demi-additionneur » elle est seule ; sur l’additionneur 4 bits, c’est le premier bloc de chaque bit. Avec A et B tous deux à 1, XOR donne la somme 0 et AND donne la retenue 1.
Additionneur complet : trois bits entrent, deux sortent
Un demi-additionneur suffit pour la colonne des unités, mais chaque autre colonne a trois choses à additionner : un bit de A, un bit de B et la retenue qui vient de la droite. L’additionneur complet s’en charge avec deux demi-additionneurs et une porte OR. Sur la carte, chaque bit utilise ces noms :
- p = A xor B et g = A and B (le premier demi-additionneur)
- S = p xor C et t = p and C (le second demi-additionneur ajoute la retenue entrante C)
- Retenue sortante = g or t
La porte OR ne voit jamais deux 1 en même temps. Si A et B valent tous deux 1, alors p vaut 0 et t ne peut pas valoir 1. Elle ne fait que réunir les deux façons de produire une retenue : la colonne en a produit une elle-même (g), ou la colonne a transmis la retenue qu’elle a reçue (t). Les huit lignes de la table de vérité de l’additionneur complet couvrent tous les cas, et le plus grand, 1 + 1 + 1 = 3, donne une retenue de 1 et une somme de 1.
Cinq portes par bit et quatre bits font les 20 portes de l’additionneur 4 bits. La retenue sortante de chaque additionneur complet est reliée à la retenue entrante du suivant, à sa gauche, comme l’étape « on retient 1 » sur papier. Cette chaîne explique le nom d’additionneur à propagation de retenue. Pendant le calcul, la table de vérité dans le coin marque la ligne utilisée par chaque bit : vous pouvez voir le bit 0 sur 1 1 0 pendant que le bit 3 attend sur 0 1 1.
Pourquoi la retenue est lente
Aucune porte ne répond instantanément. Quand ses entrées changent, la sortie suit un court instant plus tard, ce qu’on appelle le délai de porte ou délai de propagation. Le modèle donne à chaque porte un délai d’exactement une unité, et le curseur étire cette unité de 0,05 à 2,4 secondes pour que vous puissiez l’observer.
Voici 7 + 9, en partant d’une carte à 0 + 0 :
| Délai de porte | Ce qui change |
|---|---|
| 1 | Tous les XOR et AND du premier niveau réagissent aux nouveaux interrupteurs. Le bit 0 (1 + 1) met g à 1. |
| 2 | La retenue entrant dans le bit 1 s’active. Les bits 1, 2 et 3 affichent pour l’instant une somme de 1. |
| 3 à 4 | Le bit 1 ajoute sa retenue : sa somme retombe à 0 et sa retenue sortante s’active. |
| 5 à 6 | Il se passe la même chose dans le bit 2. |
| 7 à 8 | Le bit 3 retombe à 0 et C4 s’allume. Les LED indiquent 10000, soit 16. |
Chaque bit a besoin de deux délais de porte pour transmettre la retenue : un pour le AND qui produit t, un pour le OR qui produit la retenue sortante. Sur quatre bits, la dernière retenue arrive après 8 délais. Le pire cas de la carte 4 bits est de 9 délais, ce qui correspond à 2n + 1 pour n = 4 bits. Activez « Délai sur chaque puce » et chaque puce affiche le délai auquel sa sortie a changé pour la dernière fois ; le long de la chaîne de retenue, les nombres montent : 2, 4, 6, 8.
Observez les LED pendant ces 8 délais et vous verrez des résultats faux. Au délai 6, le panneau peut indiquer 01000, soit 8. Rien n’est en panne : ces LED montrent une somme calculée avant l’arrivée de la retenue. Les circuits réels ont les mêmes courtes sorties fausses, appelées aléas (glitches), et c’est pourquoi un processeur attend un temps fixe, celui du chemin le plus lent, avant de lire la sortie d’un additionneur. La durée de cette attente fait partie de ce qui fixe la fréquence d’horloge. Le « Chronogramme » montre la même chose sous forme de signaux, chaque sortie montant et descendant avant de se stabiliser.
La carte 8 bits montre clairement le coût. C’est le même additionneur complet répété huit fois, 40 portes, et 255 + 1 envoie une retenue à travers chaque bit : les LED se stabilisent après 16 délais de porte, deux fois plus longtemps que 15 + 1 sur la carte 4 bits. Un additionneur à propagation de retenue de 64 bits construit de la même façon demanderait 129 délais de porte dans le pire cas. Pour voir un seul délai à la fois, activez « Un délai à la fois » et appuyez sur « Délai suivant » sous le modèle.
Anticiper les retenues
Les additionneurs rapides n’attendent pas la propagation. Regardez de nouveau l’additionneur complet : une colonne produit une retenue par elle-même quand g = A and B vaut 1, et transmet la retenue qu’elle reçoit quand p = A xor B vaut 1. Ces deux signaux sont prêts après un délai de porte, dans toutes les colonnes à la fois. À partir d’eux, chaque retenue peut s’écrire en entier :
- C1 = g0 + p0 C0
- C2 = g1 + p1 g0 + p1 p0 C0
- C3 = g2 + p2 g1 + p2 p1 g0 + p2 p1 p0 C0
- C4 = g3 + p3 g2 + p3 p2 g1 + p3 p2 p1 g0 + p3 p2 p1 p0 C0
Lisez C2 comme une phrase : il y a une retenue entrant dans le bit 2 si le bit 1 en a produit une, ou si le bit 1 transmet une retenue produite par le bit 0, ou si les bits 1 et 0 transmettent tous deux la retenue entrante. Chaque ligne est une rangée de portes AND suivie d’un seul OR, de sorte que chaque retenue arrive après trois délais de porte, et les sommes un délai plus tard. La carte « Additionneur 4 bits à anticipation » fait cela avec 26 portes. Entrez-y 15 + 1 et elle se stabilise en 4 délais de porte, là où la carte à propagation en demandait 8. Le tableau du panneau montre P, G et la retenue de chaque bit.
Le prix à payer se trouve dans les portes AND. C4 demande déjà un AND à 5 entrées et un OR à 5 entrées, et les termes grossissent à chaque bit ; les additionneurs larges combinent donc les deux idées : de petits blocs d’anticipation de quatre bits, avec un second niveau d’anticipation entre les blocs. Gerald Rosenberger, d’IBM, a déposé un brevet pour un additionneur binaire à anticipation de retenue en 1957. Charles Babbage avait vu le même problème un siècle plus tôt et conçu un mécanisme pour anticiper les retenues dans sa machine analytique. Aujourd’hui, un additionneur 4 bits à « retenue rapide » est une puce de catalogue : Texas Instruments propose toujours le SN74LS283.
Soustraire avec le même additionneur
Les ordinateurs n’ont pas besoin d’un soustracteur séparé. En complément à deux, la manière habituelle de stocker les nombres négatifs, moins B s’écrit « inverser chaque bit de B, puis ajouter 1 ». Donc A − B égale A + (not B) + 1.
La carte « Additionneur-soustracteur » ajoute un XOR par bit devant B. Quand SUB est désactivé, chaque XOR laisse passer son bit de B tel quel ; quand SUB est activé, chaque XOR inverse son bit, et la même ligne SUB alimente la retenue entrante, ce qui apporte le 1 supplémentaire. Essayez 5 − 7. B = 0111 devient 1000, l’additionneur calcule 0101 + 1000 + 1 = 1110, et 1110 lu comme un nombre signé de 4 bits vaut −2. Lu comme un nombre non signé, il vaut 14, ce qui est aussi juste à sa manière : 5 − 7 + 16 = 14. Les mêmes bits veulent dire des choses différentes selon la façon de les lire, et le panneau montre les deux.
Un nombre signé de 4 bits ne va que de −8 à 7, donc certains résultats n’y tiennent pas. La LED verte V de la carte détecte ce cas : c’est un XOR de la retenue entrant dans le bit de poids fort et de la retenue qui en sort, et elle s’allume quand elles diffèrent. 7 + 1 (SUB désactivé) l’allume, car 0111 + 0001 = 1000, qui se lit −8. La rangée de XOR supplémentaire coûte un délai de porte de plus au début, et la porte V un autre à la fin, si bien que le pire cas de cette carte est de 11 délais.
Comparer deux nombres
Comment un circuit décide-t-il que 9 est plus grand que 5 ? Comme vous le feriez avec des nombres écrits : en cherchant le chiffre de plus fort poids où ils diffèrent. La carte « Comparateur » le détermine bit par bit. A > B dans un bit signifie que A vaut 1 et B vaut 0 (un AND avec un inverseur sur B), A < B signifie l’inverse, et le bit est égal quand aucun des deux n’est vrai, ce qui correspond à un NOR des deux.
Elle classe ensuite les bits. A est le plus grand si le bit 3 le dit, ou si le bit 3 est égal et que le bit 2 le dit, ou si les bits 3 et 2 sont égaux et que le bit 1 le dit, et ainsi de suite jusqu’en bas. Cela fait quatre termes AND réunis par un OR, de la même forme que les retenues anticipées. 1001 contre 0101 diffèrent d’abord au bit 3, où A a le 1, et la LED A > B s’allume après 4 délais de porte (le pire cas de cette carte est de 5). La carte utilise 29 portes. Le TI SN74LS85 fait le même travail en un seul boîtier et possède des entrées supplémentaires pour que plusieurs puces puissent comparer des nombres plus longs.
Choisir une entrée et dessiner un chiffre
Deux autres circuits reprennent le même schéma de portes AND rassemblées par un OR.
Un multiplexeur choisit. La carte 4 vers 1 a quatre entrées de données, D0 à D3, et deux bits de sélection. Chaque entrée de données va dans un AND à 3 entrées qui reçoit aussi les bits de sélection (ou leurs inverses) ; pour un réglage donné, un seul AND est donc ouvert, et le OR transmet son bit de données à Y. Sept portes et trois délais de porte. Partout où un seul fil doit porter l’un de plusieurs signaux, du fichier de registres d’un processeur au choix de source d’un téléviseur, il y a un multiplexeur.
Un décodeur dessine. Un afficheur 7 segments a sept LED en forme de barres nommées a à g, et chaque chiffre en allume un ensemble différent : 1 allume b et c, 8 allume les sept. Pour chaque segment, on peut dresser la liste des chiffres qui l’allument et la simplifier en une somme de produits, une poignée de termes AND réunis par un OR. Le décodeur de la carte a été établi ainsi : 4 inverseurs, 28 termes AND partagés et 7 OR, soit 39 portes, trois délais de porte de l’interrupteur au segment. Il dessine aussi les chiffres hexadécimaux A à F, en plus de 0 à 9. Le TI SN74LS47 est la version de catalogue pour 0 à 9.
Des circuits qui mémorisent
Tout ce qui précède oublie. Changez les interrupteurs et la sortie suit ; rien ne dépend de ce qui s’est passé avant. La mémoire demande une boucle.
Le verrou SR est fait de deux portes NOR, chacune renvoyant sa sortie vers l’autre. Quand S et R valent tous deux 0, la boucle conserve ce qu’elle avait, Q = 1 ou Q = 0, et le garde tant que l’alimentation reste en marche. Un 1 sur S force Q à 1, un 1 sur R le force à 0. Mettez Q à 1, coupez de nouveau S, et Q reste à 1. C’est un bit de mémoire fait de huit transistors.
Le verrou a une entrée interdite. Avec S et R tous deux à 1, les deux sorties valent 0, et si vous relâchez ensuite les deux au même instant, les deux portes se font concurrence. Dans le modèle, où les deux portes ont exactement le même délai, la boucle ne se stabilise jamais : les sorties basculent ensemble à chaque délai de porte et le panneau l’indique. Un vrai verrou n’est jamais parfaitement équilibré, donc un côté l’emporte, mais lequel et au bout de combien de temps, on ne peut pas le prévoir. Les ingénieurs appellent cela la métastabilité, et les circuits numériques sont conçus pour qu’elle ne puisse pas se produire en utilisation normale.
Une bascule D supprime le problème en ne prenant les données qu’à un instant précis. La version de la carte est le montage à six NAND utilisé dans la puce 7474. Tant que l’horloge est basse ou haute, D peut changer aussi souvent qu’il veut et Q ne bouge pas. C’est seulement au moment où CLK passe de 0 à 1 que Q prend la valeur de D, et il la garde jusqu’au front montant suivant. Avec 49 152 pas aléatoires de D et de CLK, Q a suivi cette règle à chaque fois.
Compter les impulsions d’horloge
Placez quatre bascules côte à côte, ajoutez un petit circuit qui calcule le nombre actuel plus un, et renvoyez le résultat vers les entrées D des bascules. Chaque impulsion d’horloge charge le nombre suivant. La carte « Compteur 4 bits » fait exactement cela avec 30 portes : 24 NAND dans les quatre bascules et six portes pour l’additionneur. Le bit 0 bascule toujours, le bit 1 bascule quand le bit 0 vaut 1, le bit 2 quand les bits 1 et 0 valent tous deux 1, le bit 3 quand les trois bits inférieurs valent 1.
Appuyez sur « Impulsion d’horloge » et observez l’ordre. Le front d’horloge atteint les quatre bascules en même temps, leurs sorties changent deux délais de porte plus tard, puis les portes « plus un » préparent le nombre suivant bien avant l’impulsion d’après. Comme tous les bits changent sur le même front, on parle de compteur synchrone, comme le TI SN74LS161A. Après 1111, il repart à 0000. Pendant 40 impulsions, il a compté de 0 à 15 puis recommencé sans une erreur.
Une UAL avec les mêmes composants
L’unité arithmétique et logique d’un processeur est le circuit qui fait réellement les calculs. La carte « UAL 4 bits » montre le principe avec 59 portes. Pour chaque bit, elle calcule côte à côte quatre résultats : A + B, A − B, A AND B et A OR B. Deux bits d’opération choisissent ensuite lequel atteint les sorties, par le même type de sélection AND et OR que dans le multiplexeur. L’opération 00 additionne, 01 soustrait (grâce à la rangée de XOR de l’additionneur-soustracteur), 10 est AND et 11 est OR.
Les quatre résultats sont calculés en permanence ; les bits d’opération choisissent seulement celui que vous voyez. Les vraies UAL fonctionnent aussi ainsi, et c’est pourquoi le chemin le plus long de l’UAL, 13 délais de porte ici, est plus long que celui de l’additionneur seul. Essayez 12 AND 10 : 1100 et 1010 n’ont que le bit 3 en commun, donc le résultat est 1000, soit 8.
Combien dure un délai de porte ?
Le modèle compte des délais ; les composants réels les mesurent en nanosecondes. Texas Instruments donne un délai typique de 9 ns pour ses portes NAND SN74HC00 à 4,5 V, de 9 à 10 ns pour l’ancien SN74LS00 et d’environ 5 ns pour le SN74AC00 à 5 V. Un relais est un million de fois plus lent : la fiche technique de l’Omron G5V-1 admet jusqu’à 5 ms pour commuter.
Multipliez cela par le chemin le plus long de la carte. Un additionneur 4 bits à propagation de retenue demande 9 délais ; avec des portes de type 74HC00, il se stabilise donc en 81 ns environ, assez vite pour douze millions d’additions par seconde. Construit avec des relais, le même additionneur demanderait 45 ms. Le laboratoire sous les commandes fait ce calcul pour le circuit qui se trouve sur la carte. Un processeur moderne additionne des nombres de 64 bits des milliards de fois par seconde parce que ses portes sont des milliers de fois plus rapides et que ses additionneurs utilisent l’anticipation, et non parce que la logique serait différente.
Vérifier chaque circuit
Chaque circuit de la carte a été vérifié par rapport à sa table de vérité pour toutes les entrées possibles. L’additionneur 4 bits a donné A + B + C0 pour les 512 combinaisons et s’est stabilisé sur la bonne réponse en 9 délais de porte au plus après chacun des 262 144 passages possibles d’une entrée à une autre. L’additionneur 8 bits a été vérifié pour les 131 072 sommes et 400 000 changements aléatoires. L’additionneur à anticipation s’est stabilisé en 4 délais, l’additionneur-soustracteur en 11, le comparateur en 5, le multiplexeur et le décodeur en 3, et l’UAL en 13 après chacun de ses 1 048 576 changements. Les circuits à mémoire ont été essayés avec des séquences : le verrou avec activation, maintien et réinitialisation, la bascule avec une horloge et des données aléatoires, le compteur avec 40 impulsions.
Vous pouvez en essayer quelques-uns sur la carte :
- 15 + 1 sur l’additionneur à propagation : les quatre retenues se propagent, et les LED indiquent 10000 après 8 délais.
- 15 + 1 sur l’additionneur à anticipation : même résultat après 4 délais.
- 5 + 2 : aucune colonne ne produit de retenue, et le résultat 0111 (7) est prêt après 2 délais.
- 5 − 7 sur l’additionneur-soustracteur : 1110, soit −2.
Différences avec une vraie puce
- Toutes les portes ont le même délai. Dans une vraie logique, un XOR est plus lent qu’un NAND, une porte qui commande beaucoup d’entrées est plus lente que celle qui n’en commande qu’une, et les délais changent avec la température et la tension d’alimentation.
- Chaque fil met 0,85 délai de porte à être traversé, quelle que soit sa longueur. Sur une vraie carte, les pistes courtes sont pratiquement instantanées ; à l’intérieur d’une puce, les longs fils peuvent être plus lents que les portes.
- Les signaux valent parfaitement 0 ou 1. Les vraies tensions montent et descendent en un court laps de temps, et la carte ne tient compte ni du bruit, ni de la chaleur, ni des limites de sortance.
- Une porte par puce. Les vraies puces logiques contiennent quatre NAND ou six inverseurs dans un seul boîtier, et elles ont besoin de broches d’alimentation, de condensateurs de découplage et de résistances de rappel au niveau haut que la carte omet.
- Le transistor du banc est dessiné comme un simple interrupteur bipolaire, alors que les nombres de transistors des puces valent pour le CMOS.
De l’algèbre de Boole aux additionneurs à relais
En 1854, George Boole publie Les Lois de la pensée, une algèbre où les énoncés logiques se combinent par des opérations qui ressemblent à la multiplication et à l’addition, et où les symboles 1 et 0 jouent un rôle particulier. C’était un livre sur le raisonnement, pas sur les machines.
Le lien avec les circuits date de 1937. Claude Shannon, étudiant en master au MIT, écrit la thèse A Symbolic Analysis of Relay and Switching Circuits. Il y montre que des interrupteurs en série et en parallèle suivent les mêmes règles que l’algèbre de Boole, de sorte qu’un circuit peut être conçu et simplifié par l’algèbre plutôt que par tâtonnements. Dans le dernier chapitre, il donne plusieurs exemples de circuits, dont un additionneur pour nombres binaires. Un article tiré de la thèse est publié dans les Transactions of the American Institute of Electrical Engineers en 1938 et reçoit le prix Alfred Noble.
La même année, George Stibitz, scientifique aux Bell Labs, construit un additionneur de démonstration avec des relais. Il l’appelle le Model K, d’après la table de cuisine sur laquelle il l’a monté. Dix ans plus tard, en décembre 1947, John Bardeen et Walter Brattain réalisent le premier transistor fonctionnel aux Bell Labs, dans une équipe dirigée par William Shockley. Les trois hommes se partagent le prix Nobel de physique de 1956 « pour leurs recherches sur les semi-conducteurs et leur découverte de l’effet transistor ».
Des relais aux milliards de transistors
Les premiers grands ordinateurs ont utilisé les interrupteurs disponibles. Le Z3 de Konrad Zuse, en 1941, comptait 2300 relais ; le Harvard Mark 1, achevé en 1944, en comptait 3500, synchronisés par un arbre à cames long de cinquante pieds. Colossus, en service à Bletchley Park depuis le début de 1944, commutait avec 2500 tubes, et l’ENIAC, présenté à l’université de Pennsylvanie en février 1946, demandait 18 000 tubes à vide et remplissait une salle de 30 sur 50 pieds (environ 9 sur 15 mètres). Le TX-0 du MIT, en 1956, a été le premier ordinateur programmable généraliste construit avec des transistors, chacun placé dans une « bouteille » enfichable pour pouvoir être remplacé comme un tube.
Puis les portes sont passées sur le silicium. En 1961, Fairchild annonce l’un des premiers circuits intégrés planaires, une bascule de quatre transistors et cinq résistances. La série 7400 de puces logiques TTL de Texas Instruments, vendue en boîtiers plastique bon marché à partir de 1966, a vite détenu plus de la moitié du marché de la logique, et beaucoup de ses composants, comme le quadruple NAND SN7400, sont encore vendus aujourd’hui. L’Apollo Guidance Computer, qui a volé pour la première fois sur Apollo 7 en 1968, était construit surtout avec un seul type de puce contenant deux portes NOR à 3 entrées, plusieurs milliers par ordinateur.
En 1965, Gordon Moore prédit que le nombre de composants sur une puce doublerait chaque année, puis il révise sa prévision à tous les deux ans. L’Intel 4004 de 1971 place tout un processeur 4 bits sur une seule puce, avec 2300 transistors (la chronologie du Computer History Museum en donne 2250). Le M1 d’Apple, en 2020, en contient 16 milliards, environ sept millions de fois plus, et les GPU Blackwell de NVIDIA, en 2024, en contiennent 208 milliards. Dans tous ces circuits, l’arithmétique est toujours faite par des additionneurs, des multiplexeurs et des bascules comme ceux de cette carte.
Questions
Pourquoi le binaire plutôt que le décimal ?
Un fil n’a besoin d’être que dans l’un de deux états, haut ou bas, et un transistor n’a besoin d’être qu’entièrement passant ou entièrement bloqué. Distinguer deux états est bien plus fiable que d’en distinguer dix, et l’algèbre de Boole décrit exactement les circuits à deux états.
Quelle différence entre demi-additionneur et additionneur complet ?
Un demi-additionneur additionne deux bits et donne une somme et une retenue. Un additionneur complet additionne trois bits (deux chiffres et une retenue entrante). Il est construit avec deux demi-additionneurs et une porte OR.
Pourquoi parler de propagation de retenue ?
Chaque additionneur complet doit attendre la retenue de la colonne de droite avant que sa propre retenue sortante soit définitive. La retenue traverse les bits l’un après l’autre, comme une onde sur l’eau.
Combien de temps prend l’additionneur 4 bits ?
Dans ce modèle, chaque bit ajoute deux délais de porte à la retenue. Le pire cas est de 9 délais de porte, et 7 + 9 se stabilise après 8. Avec des portes de type 74HC00 à 9 ns chacune, cela fait environ 81 ns.
Pourquoi des résultats faux apparaissent-ils brièvement ?
Chaque colonne affiche sa somme dès que ses propres portes ont réagi, avant l’arrivée de la retenue de droite. Ces courtes sorties fausses s’appellent des aléas (glitches). Un processeur attend que le chemin le plus lent soit terminé avant d’utiliser le résultat.
Et si la somme dépasse 15 ?
Quatre bits de somme ne peuvent afficher que 0 à 15. La cinquième LED, C4, contient la retenue sortant du bit de poids fort et vaut 16. Avec elle, la carte peut afficher toute somme jusqu’à 15 + 15 + 1 = 31.
Le même circuit peut-il soustraire ?
Oui. Inversez chaque bit de B et activez la retenue entrante, et l’additionneur calcule A moins B en complément à deux. La carte « Additionneur-soustracteur » le fait avec un XOR par bit, et les processeurs utilisent la même astuce pour qu’un seul additionneur fasse les deux.
Pourquoi NAND est-il universel ?
Toute fonction logique peut être construite avec des portes NAND seules : NOT est un NAND dont les entrées sont reliées, AND est un NAND suivi d’un NOT, et OR est un NAND de deux entrées inversées. NOR a la même propriété. Le défi NAND de la carte demande de réaliser un XOR avec quatre NAND.
Pourquoi AND coûte-t-il plus de transistors ?
En CMOS, les transistors qui tirent la sortie vers la masse sont à canal n, et deux d’entre eux en série ne la tirent vers le bas que si les deux entrées valent 1. Cela donne la fonction inversée, NAND, avec 4 transistors. AND demande un inverseur supplémentaire, ce qui porte le total à 6.
L’anticipation est-elle toujours meilleure ?
Elle est plus rapide, mais elle demande plus de portes, et des portes bien plus larges quand le nombre de bits augmente. La carte à anticipation 4 bits utilise 26 portes contre 20 pour la carte à propagation. Les additionneurs larges utilisent de petits blocs d’anticipation reliés par un second niveau d’anticipation.
Quelle différence entre verrou et bascule ?
Un verrou suit ses entrées chaque fois qu’elles changent (le verrou SR s’active et se réinitialise aussitôt). Une bascule ne change qu’à un front d’horloge, si bien qu’un circuit entier de bascules avance de façon synchronisée, une impulsion d’horloge à la fois.
Combien de transistors faut-il pour l’additionneur 4 bits ?
Comptés en portes CMOS, 168 : huit XOR à 12, huit AND à 6 et quatre OR à 6. La carte UAL en demande 418. L’Intel 4004 en demandait environ 2300 pour tout un processeur.
Vocabulaire
- Bit : un chiffre binaire, 0 ou 1.
- Porte logique : un circuit dont la sortie est une fonction fixe de ses entrées, comme AND, OR, NOT, NAND, NOR ou XOR.
- Table de vérité : la liste de toutes les combinaisons d’entrées et de la sortie qu’elles donnent.
- Transistor : un composant semi-conducteur dans lequel un faible courant ou une faible tension commande un courant plus fort. En logique, il sert d’interrupteur.
- CMOS : logique construite avec des paires de MOSFET à canal n et à canal p, qui ne consomme presque aucun courant au repos.
- Demi-additionneur : un XOR et un AND qui additionnent deux bits.
- Additionneur complet : deux demi-additionneurs et un OR qui additionnent deux bits et une retenue.
- Retenue : le 1 transmis à la colonne suivante quand la somme d’une colonne vaut 2 ou plus.
- Délai de porte : le temps qu’une porte met à changer sa sortie après un changement de ses entrées. On parle aussi de délai de propagation.
- Additionneur à propagation de retenue : des additionneurs complets en chaîne, où chaque retenue alimente la colonne suivante.
- Anticipation de retenue : une méthode plus rapide qui calcule les retenues en parallèle à partir des signaux de génération (g) et de propagation (p).
- Complément à deux : la manière habituelle de stocker les nombres négatifs ; moins B s’obtient en inversant chaque bit de B, puis en ajoutant 1.
- Multiplexeur : un circuit qui transmet à sa sortie l’une de plusieurs entrées, choisie par des bits de sélection.
- Décodeur : un circuit qui transforme un nombre binaire en un signal par sortie, comme les sept segments d’un chiffre.
- Verrou : une boucle de portes qui conserve un bit tant que l’alimentation reste en marche.
- Bascule : un circuit de mémoire qui ne prend son entrée qu’à un front d’horloge.
- UAL : unité arithmétique et logique, la partie d’un processeur qui additionne, soustrait et combine des bits.
Sources
- University of Victoria, CENG 465, Ripple Carry and Carry Lookahead Adders (demi-additionneurs et additionneurs complets, propagation et anticipation de retenue, délais de porte). https://www.ece.uvic.ca/~fayez/courses/ceng465/lab_465/project1/adders.pdf (consulté le 17 octobre 2026)
- Google Patents, US 2,966,305, Gerald B. Rosenberger (IBM), Simultaneous carry adder (déposé le 16 août 1957). https://patents.google.com/patent/US2966305A/en (consulté le 17 octobre 2026)
- Doron Swade, Charles Babbage and Computational Method, The Rutherford Journal 3 (retenue successive dans les machines à différences, retenue anticipée dans la machine analytique). https://www.rutherfordjournal.org/article030106.html (consulté le 17 octobre 2026)
- MIT Libraries, DSpace@MIT, Claude E. Shannon, A symbolic analysis of relay and switching circuits (mémoire de master). https://dspace.mit.edu/handle/1721.1/11173 (consulté le 17 octobre 2026)
- Golomb, Berlekamp, Cover et autres, Claude Elwood Shannon (1916–2001), Notices of the AMS 49(1), 2002 (l’article de 1938 et le prix Alfred Noble), via Stanford ISL. https://isl.stanford.edu/~cover/papers/paper117.pdf (consulté le 17 octobre 2026)
- Computer History Museum, Timeline of Computer History: 1937 (additionneur à relais « Model K » de Stibitz, construit sur sa table de cuisine). https://www.computerhistory.org/timeline/1937/ (consulté le 18 octobre 2026)
- Project Gutenberg, George Boole, An Investigation of the Laws of Thought (1854), texte intégral. https://www.gutenberg.org/ebooks/15114 (consulté le 16 octobre 2026)
- Computer History Museum, 1947: Invention of the Point-Contact Transistor (Bardeen et Brattain, décembre 1947). https://www.computerhistory.org/siliconengine/invention-of-the-point-contact-transistor/ (consulté le 17 octobre 2026)
- The Nobel Prize, The Nobel Prize in Physics 1956. https://www.nobelprize.org/prizes/physics/1956/summary/ (consulté le 16 octobre 2026)
- University of Texas at Austin, J. A. Abraham, conception VLSI, cours 3, Implementing Logic in CMOS (NAND et NOR CMOS, portes composées, multiplexeur à portes de transmission). https://www.cerc.utexas.edu/~jaa/vlsi/lectures/3-2.pdf (consulté le 18 octobre 2026)
- Cornell University, ECE 4740, cours 14, Pass Transistors and Transmission Gates (AND à 6 transistors en CMOS statique, coût de XOR). https://cpb-us-w2.wpmucdn.com/sites.coecis.cornell.edu/dist/4/81/files/2019/06/4740_lecture14-pass-transistors.pdf (consulté le 18 octobre 2026)
- Computer History Museum, The Silicon Engine, 1963: Complementary MOS Circuit Configuration is Invented. https://www.computerhistory.org/siliconengine/complementary-mos-circuit-configuration-is-invented/ (consulté le 18 octobre 2026)
- Computer History Museum, The Silicon Engine, 1963: Standard Logic IC Families Introduced (série TI 7400 à partir de 1966). https://www.computerhistory.org/siliconengine/standard-logic-ic-families-introduced/ (consulté le 18 octobre 2026)
- Computer History Museum, The Silicon Engine, 1960: First Planar Integrated Circuit is Fabricated (bascule Micrologic, mars 1961). https://www.computerhistory.org/siliconengine/first-planar-integrated-circuit-is-fabricated/ (consulté le 18 octobre 2026)
- Computer History Museum, The Silicon Engine, 1965: "Moore's Law" Predicts the Future of Integrated Circuits. https://www.computerhistory.org/siliconengine/moores-law-predicts-the-future-of-integrated-circuits/ (consulté le 18 octobre 2026)
- Computer History Museum, The Silicon Engine, 1971: Microprocessor Integrates CPU Function onto a Single Chip (4004, 2300 transistors). https://www.computerhistory.org/siliconengine/microprocessor-integrates-cpu-function-onto-a-single-chip/ (consulté le 18 octobre 2026)
- Computer History Museum, Timeline of Computer History: 1941 (Z3, 2300 relais), 1944 (Harvard Mark 1, 3500 relais), 1956 (TX-0), 1968 (Apollo Guidance Computer), 1971 (4004, 2250 transistors). https://www.computerhistory.org/timeline/1944/ (consulté le 18 octobre 2026)
- The National Museum of Computing, Colossus (2500 tubes, en fonctionnement en février 1944). https://www.tnmoc.org/colossus (consulté le 18 octobre 2026)
- Penn Engineering, University of Pennsylvania, ENIAC (18 000 tubes à vide, annoncé en février 1946). https://www.seas.upenn.edu/about/history-heritage/eniac/ (consulté le 18 octobre 2026)
- Smithsonian National Air and Space Museum, Integrated Circuit, Dual 3 Input, Apollo Guidance Computer. https://airandspace.si.edu/collection-objects/integrated-circuit-dual-3-input-apollo-guidance-computer/nasm_A20170004000 (consulté le 18 octobre 2026)
- Texas Instruments, SN74HC00 fiche technique (délai de propagation typique de 9 ns à 4,5 V). https://www.ti.com/lit/ds/symlink/sn74hc00.pdf (consulté le 18 octobre 2026)
- Texas Instruments, SN74LS00 fiche technique (délais typiques de 9 ns et 10 ns). https://www.ti.com/lit/ds/symlink/sn74ls00.pdf (consulté le 18 octobre 2026)
- Texas Instruments, SN74AC00 fiche technique (délais typiques de 6 ns et 4,5 ns à 5 V). https://www.ti.com/lit/ds/symlink/sn74ac00.pdf (consulté le 18 octobre 2026)
- Texas Instruments, pages produit de SN74LS283, SN74LS85, SN74LS47, SN74LS161A et SN7400. https://www.ti.com/product/SN74LS283 (consulté le 18 octobre 2026)
- Omron, G5V-1 fiche technique du relais (temps d’actionnement maximal de 5 ms). https://omronfs.omron.com/en_US/ecb/products/pdf/en-g5v_1.pdf (consulté le 18 octobre 2026)
- Apple Newsroom, Apple unleashes M1 (16 milliards de transistors, 10 novembre 2020). https://www.apple.com/newsroom/2020/11/apple-unleashes-m1/ (consulté le 18 octobre 2026)
- NVIDIA Newsroom, NVIDIA Blackwell Platform Arrives to Power a New Era of Computing (208 milliards de transistors, 18 mars 2024). https://nvidianews.nvidia.com/news/nvidia-blackwell-platform-arrives-to-power-a-new-era-of-computing (consulté le 18 octobre 2026)
- Calculs sur cette page: les modèles de portes ont été calculés pour chaque entrée de chaque circuit combinatoire et chaque transition entre deux entrées (par échantillonnage pour l’additionneur 8 bits). Temps de stabilisation maximaux : propagation 4 bits 9, propagation 8 bits 17 selon la longueur du chemin (16 observés), anticipation 4, additionneur-soustracteur 11, comparateur 5, multiplexeur 3, décodeur 3, UAL 13 délais de porte.
Textes et simulations : CC BY-NC-SA 4.0, sauf mention contraire.
Parcours 8 sur 8
De la turbine à la puce




