Systèmes sur puce

I/ Architectures

1) Babbage

a) Préhistoire

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.

b) Textile

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).

2) Ménabréa

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 Lovelaceversion moderne
usine (mill ou moulin)ALU
magasin (store)registre (mémoire)
cartes perforéesregistre d'instruction
transport des donnéesbus

3) Aiken

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.

4) Goldstine

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 :

  1. CA (Central Arithmetic) correspondant à l'ALU
  2. CC (Central Control) est l'unité de contrôle
  3. M (memory) est l'ensemble des registres du processeur
  4. I (input) est le lecteur de cartes ou équivalent
  5. O (output) est l'imprimante ou équivalent
  6. R (slow memoRy) est la mémoire de masse

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.

II/ Microprocesseurs

1) Intel

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 :

2) Zilog

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.

3) Acorn

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,

  1. Le contenu de PC est envoyé sur le bus d'adresse,
  2. l'instruction à exécuter est lue sur le bus de données,
  3. l'instruction est placée dans le registre d'instruction,
  4. l'instruction est décodée par le décodeur d'instruction,
  5. la logique de contrôle configure l'ALU selon l'opération à effectuer,
  6. l'octet à accumuler est lu en mémoire en plaçant le contenu de IX ou IY,
  7. l'ALU effectue l'accumulation (addition par exemple),
  8. le contenu de IY est placé sur le bus d'adresse,
  9. le résultat de l'accumulation est écrit en mémoire par le bus de données.

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.

4) Autres processeurs

Le CPU n'est pas le seul processeur présent sur un ordinateur. On peut y trouver également

III/ Microcontrôleurs

1) Texas Instruments

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.

2) Microchip

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.

3) Systèmes sur puce

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.

4) Exemples

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).