Ordinateur
La machine à programme enregistré
Planche
- 1Baies de tubes à vide
- 2Tube mémoire cathodique : un point par bit
- 3Panneau d'interrupteurs pour entrer les données
- 4Téléimprimeur et ruban perforé
- 5Relais : un interrupteur mû par un électroaimant
- 6Tube à vide : sa grille commande le courant
- 7Transistor : l'interrupteur à semi-conducteur
Anatomie
Un ordinateur est une machine à calculer programmable ; le modèle actuel range son programme dans sa propre mémoire et calcule en binaire avec des interrupteurs ouverts ou fermés. Le premier à exécuter un programme depuis une mémoire électronique fut le « Baby » de Manchester, le 21 juin 1948, et téléphones et portables suivent encore son plan.
Ce que c’est
Un ordinateur exécute un programme, une liste d’instructions, sur des données. Dans l’architecture à programme enregistré décrite ici, le programme loge dans la même mémoire que les nombres qu’il traite : la machine peut donc en charger un nouveau, le modifier ou en écrire un autre sans être reconstruite. Cette idée la distingue des machines programmables antérieures, qui prenaient leurs instructions sur ruban, cartes, fiches ou interrupteurs.
Les ordinateurs actuels travaillent en binaire, avec les seuls chiffres 0 et 1, parce que deux états sont faciles à rendre fiables : un interrupteur est ouvert ou fermé. L’ENIAC et quelques autres machines anciennes comptaient encore en décimal. Pour une société qui reconstruit ses outils, il calcule, pilote des machines comme les pompes ou les réseaux électriques, et achemine des messages.
Comment ça marche
Les nombres binaires. Le binaire est une numération de position comme nos chiffres décimaux, mais chaque rang vaut le double de celui de droite : 1, 2, 4, 8, 16. Treize vaut 8 + 4 + 1 et s’écrit 1101. Huit chiffres binaires, ou bits, couvrent tous les entiers de 0 à 255.
En série, l’ampoule ne s’allume que si l’on presse les deux boutons ; en parallèle, un seul suffit.
Les portes logiques. Deux interrupteurs en série n’allument une lampe que s’ils sont fermés tous les deux : c’est une porte ET. En parallèle, l’un ou l’autre suffit : une porte OU. Un relais dont le contact s’ouvre quand sa bobine est alimentée forme une porte NON, qui change 1 en 0. Le relais obéit à un électroaimant, le tube à vide à la tension de sa grille, le transistor au signal de sa base ou de sa grille. ET, OU et NON suffisent à exprimer n’importe quelle règle reliant des bits d’entrée à des bits de sortie.
Additionner avec des portes. En binaire, 1 + 1 donne 10 : somme 0, retenue 1. Le bit de somme vaut 1 quand une seule des entrées vaut 1, une règle appelée OU exclusif (XOR) ; la retenue ne vaut 1 que si les deux valent 1, ce qui est un ET. Ensemble, elles forment un demi-additionneur. Un additionneur complet reçoit en plus la retenue de la colonne de droite, et huit à la file additionnent deux nombres de 8 bits, colonne par colonne, comme un écolier sur son cahier.
La mémoire. Deux portes NON-OU (un OU suivi d’un NON), dont chaque sortie alimente une entrée de l’autre, forment une bascule : une impulsion sur l’une des entrées libres la met à 1, une impulsion sur l’autre la remet à 0, et elle garde ce bit tant que le courant passe. Manchester stockait ses bits en points chargés sur un tube cathodique, l’EDSAC en impulsions sonores dans des tubes de mercure. Chaque mot, un groupe de bits, porte un numéro, son adresse.
Le cycle. Un registre, le compteur ordinal, contient l’adresse de la prochaine instruction. Le processeur va la chercher, la décode, l’exécute, puis recommence. Une instruction peut ajouter un nombre de la mémoire à l’accumulateur, ranger un résultat, ou sauter ailleurs si une valeur est négative ; ce saut conditionnel permet au programme de boucler et de choisir. Claviers et capteurs font entrer les données ; écrans, imprimantes et moteurs font sortir les résultats.
Comment le construire
Un processeur moderne exige une usine de puces, mais sa logique s’apprend sur une table.
Essayez d’abord chaque interrupteur avec sa LED ; une LED a toujours besoin d’une résistance en série.
Réunir le matériel. Une plaque d’essai sans soudure, deux ou trois piles AA en boîtier (3 à 4,5 V) ou une alimentation USB de 5 V, deux inverseurs bipolaires, deux LED, deux résistances de 330 à 470 ohms et du fil. Chaque LED se monte patte longue (anode) côté inverseur et patte courte (cathode) au 0 V. Écrivez d’abord la table de vérité : pour les entrées A B = 00, 01, 10, 11, la somme vaut 0, 1, 1, 0 et la retenue 0, 0, 0, 1.
Câbler la retenue. Amenez l’alimentation au commun du premier pôle de A, son contact « marche » au commun du premier pôle de B, et ce contact « marche » à une LED par une résistance ; l’autre patte de la LED retourne au 0 V. Elle ne s’allume que pour 11 : c’est un ET.
Câbler la somme. Sur les seconds pôles, reliez le contact « marche » de A au contact « arrêt » de B, et le contact « arrêt » de A au contact « marche » de B. Alimentez le commun de A et menez le commun de B à la seconde LED par une résistance, cathode au 0 V. Elle s’allume quand les inverseurs diffèrent : c’est le XOR. Vérifiez les quatre cas sur la table.
Enchaîner un additionneur plus grand. Un additionneur complet, ce sont deux demi-additionneurs et une porte OU qui réunit leurs retenues. À ce stade, les circuits logiques sont plus commodes : un additionneur de 4 bits demande deux 74HC86 (XOR), deux 74HC08 (ET) et un 74HC32 (OU). Alimentez-les comme l’indique la fiche technique (broche 14 au plus, broche 7 au 0 V, un condensateur de 100 nF entre les deux). Chaque retenue sortante entre dans la colonne suivante et la première retenue entrante va au 0 V ; chaque entrée d’inverseur reçoit une résistance de 10 kilohms vers le 0 V, et chaque LED de sortie une résistance de 1 kilohm.
Faire tourner un ordinateur sur papier. Dessinez huit cases mémoire numérotées, un accumulateur et un compteur ordinal à 0. Écrivez CHARGE 5 dans la case 0, AJOUTE 6 dans la case 1, RANGE 7 dans la case 2, STOP dans la case 3, puis 3 dans la case 5 et 4 dans la case 6. Jouez le processeur : lisez la case que désigne le compteur, exécutez-la, ajoutez un au compteur. La case 7 finit par contenir 7. Codez ensuite chaque instruction sur deux chiffres, l’opération puis l’adresse, avec CHARGE 1, AJOUTE 2, RANGE 3 et STOP 0 : le programme devient 15, 26, 37, 00, des nombres parmi les données.
Sécurité. Piles ou alimentation USB de 5 V seulement, jamais le secteur. Chaque LED a besoin de sa résistance. Une pile ou une batterie externe en court-circuit peut chauffer ses fils au point de brûler. Débranchez l’alimentation avant de recâbler. Une sortie de circuit intégré ne peut pas alimenter la bobine d’un relais : commandez-la par un transistor dimensionné pour son courant, avec une diode à ses bornes, côté marqué d’un anneau (la cathode) vers le plus, pour absorber la surtension à la coupure.
Histoire et évolution
Croquis simplifié de la partie de sa première machine à différences, un septième, que Babbage fit assembler en 1832 ; elle fonctionne toujours.
La machine analytique de Charles Babbage, conçue en 1834, comptait un magasin, un moulin pour le calcul et un programme sur cartes perforées ; elle ne fut jamais construite. Ada Lovelace publia en 1843 une suite d’opérations pour elle. Les tabulatrices électriques à cartes de Herman Hollerith dépouillèrent le recensement américain de 1890.
En 1936, Alan Turing décrivit une machine universelle qui lit ses instructions sur le même ruban que ses données. Konrad Zuse présenta à Berlin son Z3 à relais le 12 mai 1941. Dès février 1944, le Colossus électronique de Tommy Flowers aida à casser le chiffre allemand Lorenz à Bletchley Park ; il resta secret jusqu’aux années 1970. L’ENIAC de J. Presper Eckert et John Mauchly, à Philadelphie, annoncé en 1946, était universel mais se programmait en déplaçant des câbles. Chacun peut se dire le premier, selon qu’on exige l’électronique, l’universalité ou le programme enregistré.
Le rapport de John von Neumann sur l’EDVAC, en 1945, issu d’échanges avec Eckert, Mauchly et d’autres, décrivait une machine gardant programme et données dans une seule mémoire. La première à fonctionner fut le « Baby » de Manchester, de Frederic Williams, Tom Kilburn et Geoff Tootill, le 21 juin 1948. L’EDSAC de Maurice Wilkes, à Cambridge, suivit le 6 mai 1949 et servit bientôt des utilisateurs.
Manchester fit tourner un ordinateur à transistors en novembre 1953. Les circuits intégrés, réalisés pour la première fois en 1958, entrèrent dans les ordinateurs dans les années 1960, et en 1971 le 4004 d’Intel mit tout un processeur sur une seule puce.