01Fondamentaux

L’unique idée qui sépare chaque ordinateur que tu as jamais utilisé de cette machine grande comme une pièce qu’il fallait recâbler physiquement, à la main, chaque fois que quelqu’un voulait qu’elle résolve un problème différent.

Chapitre
1 of 9
Lecture
20 min

Chapitre 1 est gratuit. Pour continuer avec les chapitres 2–9, sign in or create an account and unlock Fondamentaux for $24.99.

Learn

Un ordinateur qu’il fallait recâbler pour qu’il change d’avis

L’ENIAC, construit entre 1943 et 1945 à l’université de Pennsylvanie pour calculer des tables de trajectoire d’artillerie en temps de guerre, fut le premier ordinateur à grande échelle capable de fonctionner à vitesse électronique, sans pièces mécaniques pour le ralentir. Selon les normes de tout ce qui l’avait précédé, c’était extraordinaire. Selon la norme que ce chapitre est sur le point de présenter, il lui manquait encore quelque chose de fondamental.

L’ENIAC n’avait aucun moyen de stocker un programme en mémoire. Pour lui faire résoudre un problème différent, des techniciens le reconfiguraient physiquement, en connectant des câbles de brassage entre les composants et en réglant à la main des centaines d’interrupteurs, une disposition physique précise par calcul. Le récit du Computer History Museum sur la machine est direct quant au coût de cette opération : « Concevoir la bonne configuration pour chaque nouveau problème, puis connecter les câbles et régler les interrupteurs, prenait de nombreux jours. »

Lis cette phrase attentivement, car elle résume tout le chapitre en une ligne. Changer ce que calculait l’ENIAC n’était pas une décision logicielle prise en quelques minutes, c’était un projet physique de recâblage se mesurant en jours, mené par des gens qui devaient penser tout le calcul comme un schéma de câblage littéral avant de toucher le moindre câble.

Computer History Museum, ENIAC, https://www.computerhistory.org/revolution/birth-of-the-computer/4/78.

Explore

L’idée qui a rendu le recâblage inutile, pour toujours

La solution qui a rendu obsolète la reprogrammation à la ENIAC s’appelle le concept de programme enregistré : au lieu de représenter un programme comme une disposition physique de câbles, le représenter comme des données (le même type de données binaires que la machine stocke et manipule déjà) et conserver ces données dans la propre mémoire de l’ordinateur, juste à côté des nombres ou du texte sur lesquels le programme doit travailler.

Une fois que les instructions ne sont plus que des données en mémoire, « changer le programme » cesse d’être une tâche matérielle et devient une tâche de chargement de données : on charge des valeurs binaires différentes en mémoire, et l’ordinateur exécute un programme différent, dans le temps qu’il faut pour lire cette mémoire plutôt que dans le temps qu’il faut pour recâbler une salle entière d’équipements. Cette seule idée explique pourquoi un ordinateur moderne peut faire tourner un traitement de texte le matin et un jeu vidéo l’après-midi sans que personne ne touche à son câblage interne.

Cela vaut la peine de s’arrêter sur l’étrangeté réelle de cette idée, car l’habitude en a usé le caractère insolite. Un programme stocké sous forme de données peut, en principe, être examiné, copié, modifié (voire se modifier lui-même) en utilisant exactement les mêmes opérations que l’ordinateur emploie déjà pour examiner, copier et modifier toute autre donnée. Instructions et données ne sont pas deux choses différentes pour un ordinateur à programme enregistré, ce sont la même chose, distinguées seulement par la façon dont le processeur les interprète à un instant donné.

Vérification rapide

Pourquoi le concept de programme enregistré a-t-il éliminé le processus de reprogrammation de plusieurs jours qu’exigeait l’ENIAC ?

Learn

Un cycle, tournant en continu, c’est fondamentalement ce qu’est un ordinateur

L’architecture construite autour du concept de programme enregistré (aujourd’hui appelée architecture von Neumann, du nom du mathématicien John von Neumann, qui l’a décrite dans un rapport influent de 1945) organise un ordinateur en un petit nombre de parties coopérant entre elles : une unité centrale de traitement contenant une unité de contrôle et une unité arithmétique et logique, une mémoire partagée entre instructions et données, et des mécanismes d’entrée/sortie reliant la machine au monde extérieur.

Ce que ces parties font réellement, encore et encore, s’appelle le cycle de récupération-décodage-exécution. Récupération : l’unité de contrôle lit la prochaine instruction en mémoire, à l’adresse contenue dans un registre appelé compteur de programme. Décodage : l’unité de contrôle interprète le motif binaire de cette instruction pour déterminer quelle opération elle spécifie. Exécution : l’unité arithmétique et logique effectue cette opération, et le résultat est réenregistré en mémoire ou envoyé en sortie.

Puis le cycle se répète, en continu, tant que l’ordinateur fonctionne, ce qui est une description réellement complète de ce qui se passe, au niveau le plus bas, à l’intérieur de littéralement tout ordinateur à usage général construit sur cette architecture, d’un mainframe des années 1950 à l’appareil sur lequel ce cours est lu. Tout ce que fait un ordinateur de plus compliqué est ce cycle, exécuté un nombre énorme de fois, sur des instructions et des données qui ont elles-mêmes été produites par des exécutions antérieures de ce même cycle.

Von Neumann architecture and the fetch-decode-execute cycle, https://diveintosystems.org/book/C5-Arch/von.html.

Le cycle de récupération-décodage-exécution

Récupération
L’unité de contrôle lit la prochaine instruction en mémoire
Décoder
L’unité de contrôle interprète quelle opération spécifie l’instruction
Exécuter
L’unité arithmétique et logique effectue l’opération
Enregistrer / sortie
Le résultat est écrit en mémoire ou envoyé en sortie

Ce cycle se répète en continu, c’est le fonctionnement complet d’un ordinateur d’architecture von Neumann, décrit à son niveau le plus bas.

https://diveintosystems.org/book/C5-Arch/von.html.

Vérification rapide

Dans le cycle de récupération-décodage-exécution, qu’est-ce qui détermine à quelle adresse mémoire l’unité de contrôle récupère la prochaine instruction ?

Real world

Pourquoi tout se réduit à deux chiffres

Le binaire (un système numérique n’utilisant que 0 et 1) n’est pas un choix arbitraire fait par commodité. Il correspond directement aux deux états électriques stables qu’un circuit numérique peut distinguer de façon fiable : une tension qui se lit comme « allumé » ou « éteint », « haut » ou « bas ». Un ordinateur conçu pour distinguer de façon fiable dix niveaux de tension différents pour un système décimal serait bien plus sensible au bruit électrique qu’un ordinateur conçu pour n’en distinguer que deux, ce qui est la raison pratique et physique pour laquelle le binaire s’est imposé comme la représentation qu’utilise en interne presque tout ordinateur numérique.

Comme les instructions et les données sont finalement stockées sous forme de motifs binaires dans la même mémoire, le concept de programme enregistré sur lequel ce chapitre s’est ouvert devient concret : une séquence de 0 et de 1 en mémoire peut représenter le nombre 12, la lettre « A », ou une instruction disant au processeur d’additionner deux registres, et l’interprétation qui s’applique dépend entièrement de la façon dont le programme en cours d’exécution traite cet emplacement mémoire précis, et non de quoi que ce soit d’intrinsèque aux bits eux-mêmes.

Explique-le

Lu par ATLAS

Un camarade de classe dit : « L’ENIAC et un ordinateur portable moderne sont fondamentalement le même genre de machine, juste plus rapide. » En t’appuyant sur ce chapitre, explique ce qui ne va pas dans cette comparaison.

Écris-le comme tu l’expliquerais à quelqu’un de la classe en dessous. Pas de note et pas de limite de tentatives.

Scénario de mission

Retracer ce que fait réellement un programme simple, cycle par cycle

Tu encadres un nouveau stagiaire en ingénierie qui vient d’apprendre à écrire du code mais n’a jamais réfléchi à ce qui se passe en dessous. Il te demande d’expliquer, concrètement, ce que « fait l’ordinateur » pendant qu’un programme simple s’exécute.

Tu décides de lui expliquer directement une courte séquence d’instructions à l’aide du cycle de récupération-décodage-exécution, plutôt que de le décrire seulement de façon abstraite.

Les décisions sont définitives. Tu ne pourras pas en changer une une fois prise, refais la mission si tu veux tenter un autre chemin.

  1. Décision 01

    Le stagiaire demande si l’ordinateur « comprend » d’une certaine façon tout le programme d’un coup, comme une personne qui lit du code.

    Comment réponds-tu, en t’appuyant sur ce chapitre ?

Chapitre terminé

Ce que tu comprends maintenant

  • Tu peux expliquer le concept de programme enregistré et pourquoi représenter les instructions comme des données en mémoire a éliminé le besoin de recâblage physique à la ENIAC.
  • Tu peux décrire les composants de l’architecture von Neumann et parcourir étape par étape le cycle de récupération-décodage-exécution.
  • Tu peux expliquer pourquoi la représentation binaire correspond naturellement aux deux états électriques stables d’un circuit numérique.
  • Tu peux décrire pourquoi l’ENIAC nécessitait des jours de reconfiguration physique pour exécuter un programme différent, en t’appuyant sur le récit même du Computer History Museum.
  • Tu peux retracer une séquence d’instructions simple à travers le cycle de récupération-décodage-exécution et expliquer pourquoi un ordinateur n’a aucune compréhension « holistique » d’un programme à un instant donné.
Fondamentaux sommaire

Continue au-delà de l’horizon

Tu as terminé le premier chapitre gratuit. Débloque le reste de Fondamentaux pour $24.99.

$24.99Paiement unique · Accès à vie

Le paiement est géré par Shopify sur la boutique Mach 9, donc aucune donnée de carte n’atteint ce site.