Les babyloniens utilisaient des tablettes en argile pour écrire des chiffres (en base 60) regroupés en tableaux. Il s'agissait de mémoire morte mais il était possible de refaire une tablette en argile pour recommencer l'écriture et mettre à jour les données.
Au début du XIXe siècle, Joseph Jacquard propose d'utiliser une nouvelle forme de mémoire morte (pour les motifs sur les tissus) : des cartes avec des trous (donc en binaire) pour représenter les données.
Dans les années 1830, Charles Babbage (cryptanalyste britannique) a conçu une machine mécanique permettant de calculer et imprimer des tables de fonctions : la machine à différence. Puis il y incorpore les cartes perforées de Jacquard et conçoit la calculatrice programmable (ou ordinateur).
Le général Ménabréa, après avoir rencontré Babbage, décrit en 1842 sa machine analytique dans un mémoire titré notions sur la machine analytique de Monsieur Charles Babbage. Ada Lovelace traduit ce mémoire en anglais, avec l'aide de Babbage, et en profite pour écrire le tout premier programme informatique de l'histoire (calculant les nombres de Bernoulli) :
Ménabréa écrit ceci, à propos de l'architecture de la machine de Babbage (les variables étant stockées comme chiffres empilés en colonnes) :
... parmi les arrangements que
peuvent prendre les diverses pièces de la machine, on en distinguera deux
principaux : 1o la disposition relative aux opérations,
2o la disposition relative aux
variables ; par cette dernière on entend celle qui
indique les colonnes sur lesquelles on doit opérer. Quant
aux opérations mêmes, elles s'éxécutent dans un appareil
spécial désigné sous le nom de moulin ; il est
lui-même composé d'un certain nombre de colonnes semblables
à celles des variables. Lorsque deux nombres doivent être
combinés ensemble, la machine commence par les effacer sur
les colonnes où ils étaient écrits, c'est-à-dire à mettre
zéro
sur chaque disque dans les deux lignes
verticales où les nombres étaient écrits ; puis elle les transporte dans le
moulin. Là, l'appareil étant disposé pour l'opération demandée,
celle-ci s'exécute, et, une fois qu'elle est achevée,
le résultat est lui-même transporté sur la colonne des variables
qui aura été indiquée. Ainsi le moulin est la partie
de la machine qui exécute ; les colonnes des variables
constituent celle où s'écrivent et s'ordonnent les résultats...
l'ensemble des colonnes des variables peut être considéré
comme un magasin de nombres qui y sont accumulés
par le moulin et qui, obéissant aux ordres transmis à
la machine par le moyen des cartons, passent alternativement
du moulin au magasin et du magasin au moulin, pour y
subir les transformations requises par la nature du calcul
à exécuter.
Dans sa traduction anglaise, Ada Lovelace utilise très clairement une analogie industrielle :
That portion of the Analytical Engine here alluded to is called the storehouse. It contains an indefinite number of the columns of discs described by M. Menabrea. ... the Variables ... The origin of this appellation is, that the values on the columns are destined to change, that is to vary, in every conceivable manner...
Le général Ménabréa traduit le mot mill que lui a donné Babbage, par moulin. Mais en anglais ce mot désigne aussi une usine. Lovelace considère donc que les données transitent en permanence entre le magasin (store) et l'usine (mill) 🏬 🚌 🏭. Le mot bus est encore utilisé aujourd'hui pour désigner les branchements entre composants du système.
version Lovelace | version moderne |
---|---|
usine (mill ou moulin) | ALU |
magasin (store) | registre (mémoire) |
cartes perforées | registre d'instruction |
transport des données | bus |
Durant la seconde guerre mondiale, Howard Aiken a construit, en collaboration avec la firme IBM et l'université de Harvard, une machine programmable considérée par beaucoup d'historiens de l'informatique comme le premier ordinateur. Les cartes perforées étaient regroupées en bandes, et il y en avait deux comme chez Ménabréa : l'une pour les instructions, l'autre pour les données. Il y a donc deux bus reliant l'ALU au reste du circuit dans l'architecture de Harvard, l'un vers la mémoire programme, l'autre vers la mémoire de données. Cela permet d'accélérer les calculs puisque la lecture d'une instruction (depuis la mémoire programme) peut se faire en même temps que l'exécution de l'instruction précédente (par l'ALU ; l'exécution d'une instruction ne requérant que le bus des données).
L'architecture de Harvard, préconisée par Babbage il y a presque 200 ans, est donc prédominante dans les systèmes sur puce.
En 1945, dans le cadre du projet EDVAC, Goldstine et Von Neumann publient un rapport (préfigurant celui dans lequel on trouve la première implémentation du tri fusion) titré premier brouillon d'un rapport sur l'EDVAC où ils préconisent d'utiliser la même mémoire pour le programme et les données : toute machine ayant un seul bus partagé entre programme et données (et permettant de mettre le programme en mémoire vive) est dite, par opposition à l'architecture de Harvard, suivre l'architecture de Von Neumann.
Goldstine et Von Neumann divisent l'ordinateur en 6 parties :
Goldstine et Von Neumann conseillent également d'utiliser un registre dit accumulateur dont l'une des entrées de données coïncide avec la sortie. Un exemple d'accumulateur est le compteur programme (PC).
On regroupe l'ensemble des parties contrôle/ALU/registres sous le nom de processeur ou CPU (Central Processing Unit).
L'architecture de Von Neumann a pour principal avantage de permettre de traiter les programmes comme des données (Forth, Lisp...) et pour principal inconvénient de permettre à des programmes de se modifier eux-mêmes, ce qui est à la base des virus.
En 1971, la firme Intel (à l'heure actuelle toujours leader du marché) a réussi à placer tous les composants d'un CPU (ALU, unité de contrôle et registres) dans une seule puce appelée microprocesseur.
Voici l'architecture du 4004 d'Intel :
En utilisant un microprocesseur comme CPU d'un ordinateur, on obtient un micro-ordinateur (à partir des années 1980, un PC comme Personal Computer). La plupart des micro-ordinateurs de la fin des années 1970 étaient basés sur le microprocesseur Z80 dont voici l'architecture :
Le microprocesseur Z80 est un processeur CISC (Complex Instruction Set Processeur) parce qu'il a beaucoup d'instructions ce qui lui permet d'être puissant même cadencé à 1 MHz.
En 1976, MOS Technology commence à produire le microprocesseur 6502 dont les performances semblent a priori moins bonnes que celles de ses concurrents :
Dans un cycle machine du 6502,
Le 6502 a été choisi pour la réalisation de consoles de jeux mais aussi, par les deux Steve pour la réalisation du premier micro-ordinateur Apple.
Le 6502 a moins d'instructions que ses concurrents et son succès a créé la mode du RISC (Reduced Instruction Set Computer).
La société britannique Acorn a également commercialisé des micro-ordinateurs basés sur le 6502. Dans les années 1980, Acorn a mis au point une architecture RISC : le Acorn Risc Machine, abrégé en ARM. C'est une architecture présente sur de nombreux microcontrôleurs.
Le CPU n'est pas le seul processeur présent sur un ordinateur. On peut y trouver également
Dans les années 1970, la firme américaine TI a créé une puce rassemblant plus d'éléments qu'un microprocesseur, et qu'on appelle donc microcontrôleur. Le premier microcontrôleur s'appelait TMS 1000. Outre le CPU, un TMS1000 contient également
Les microcontrôleurs sont utiles pour l'informatique embarquée, et construits en général selon l'architecture de Harvard, et la technologie RISC.
Dans les années 1980, les microcontrôleurs les plus connus étaient des Microchip appelés PIC. Les PIC comprennent de la mémoire flash et de nombreuses entrées-sorties, tant numériques qu'analogiques. Combinés à des senseurs et actuateurs, ils permettent de réaliser des systèmes complets.
Depuis les années 2000, des microcontrôleurs basés en général sur l'architecture ARM, incluent des capteurs et actuateurs. Ce sont des SoC :
Dans un SoC, typiquement, il y a en plus du CPU, de la mémoire et un GPU ou un DSP.
Les microcontrôleurs à base d'ARM se retrouvent, entre autres, sur
Ces dernières peuvent se programmer en µPython.
Voir cet exemple de calculatrice basée sur un STM 32 (l'autre puce est une mémoire flash).