Réalisation électronique d’une machine programmable manipulant des représentations numériques
CentraleSupélec
2026-08-11
Architecture des ordinateurs
ou plutôt
Réalisation électronique d’une machine programmable manipulant des représentations numériques
Philosophie du cours
Introduire les concepts sous-jacents à n’importe quelle architecture sans être un cours sur une architecture spécifique (ARM, Intel, MIPS, ..)
Abstraction progressive allant du bit à une architecture exécutant un jeu vidéo
Au programme
Intervention STMicro (Sébastien Ferroussat) 3h30: Architectures ARM
Site web : https://jeremyfix.github.io/Architecture/
Evaluation
Examen écrit 2h
Space Invaders (1978)
Une valeur, quelle que soit sa nature, doit être représentée en binaire :
Bonne représentation ?



Système Egyptien, un symbole par puissance de 10: \(1527\)
Système Mésopotamiens en base 60 :
\(1527 = (20 + 5) \times 60^1 + (20 + 7) \times 60^0\)
\(99 = 1 \times 4^3 + 2 \times 4^2 + 0 \times 4^1 + 3 \times 4^0\)
En base 10 : \[34 = 3 \times 10^1 + 4 \times 10^0\]
En base p : \[(a_{k-1}a_{k-2}\cdots a_{1}a_{0})_p = \sum_{i=0}^{k-1} a_i p^i\]
avec \(\forall i, a_i \in [0, p-1], a_{k-1} \neq 0\)
Comment passer de la représentation base p à la valeur en base 10 ? \[(a_{k-1}a_{k-2}\cdots a_{1}a_{0})_p = \sum_{i=0}^{k-1} a_i p^i\]
Comment passer de la valeur \(n\) en base 10 à la représentation en base p ? \[\sum_{i=0}^{k-1} a_i p^i = a_0 + p \times (\sum_{0}^{k-2} a_{i+1} p^i)\]
⇒ division euclidienne par \(p\)
\[\sum_{i=0}^{k-1} a_i p^i = a_0 + p \times (\sum_{0}^{k-2} a_{i+1} p^i)\]
Méthode des divisions successives :
| Division | Quotient | Reste |
|---|---|---|
| 39 ÷ 2 | 19 | 1 |
| 19 ÷ 2 | 9 | 1 |
| 9 ÷ 2 | 4 | 1 |
| 4 ÷ 2 | 2 | 0 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
Vérification :
| Puissance de 2 | \(2^5 = 32\) | \(2^4 = 16\) | \(2^3= 8\) | \(2^2=4\) | \(2^1 = 2\) | \(2^0 = 1\) |
|---|---|---|---|---|---|---|
| \(39_{10}\) | 1 | 0 | 0 | 1 | 1 | 1 |
16 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Division par 16 :
| Division | Quotient | Reste |
|---|---|---|
| 39 ÷ 16 | 2 | 7 |
| 2 ÷ 16 | 0 | 2 |
Ou, à partir de la représentation binaire : \[39_{10} = (\overbrace{0010}^{2}\quad\overbrace{0111}^{7})\]
Autres exemples :
\[421 = \overbrace{0100}^{4} \overbrace{0010}^{2} \overbrace{0001}^{1}\]
| valeur | représentation binaire | représentation de Gray |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
| 5 | 101 | 111 |
| 6 | 110 | 101 |
| 7 | 111 | 100 |
Exemple : 001 + 011
Demi-additionneur : \[(a,b) \rightarrow (retenue, reste)\]
| \(a\) | \(b\) | Retenue | Reste | |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | |
| 0 | 1 | 0 | 1 | |
| 1 | 0 | 0 | 1 | |
| 1 | 1 | 1 | 0 |
Additionneur complet : \[(a, b, r) \rightarrow (retenue, reste)\]
| \(a\) | \(b\) | \(r\) | Retenue | Reste |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 1 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
Soustraction :
Multiplication :
Division :
Entiers négatifs ?!
| \(n\) | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|---|
| \(x\) | \(000_{2K}\) | \(001_{2K}\) | \(010_{2K}\) | \(011_{2K}\) | \(100_{2K}\) | \(101_{2K}\) | \(110_{2K}\) | \(111_{2K}\) |
| \(n\) | -3 | -2 | -1 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|
| \(x\) | \(111_{2s}\) | \(110_{2s}\) | \(101_{2s}\) | \(100_{2s}\) ou \(000_{2s}\) | \(001_{2s}\) | \(010_{2s}\) | \(011_{2s}\) |
\[a +_{UB} b = 0 \Rightarrow b = \bar{a} + 1\]
car \(\bar{a} + a = 11\cdots 1\)
| \(n\) | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|---|
| 1C | (011) | 100 | 101 | 110 | 111 ou 000 | 001 | 010 | 011 |
| 2C | 100 | 101 | 110 | 111 | 000 | 001 | 010 | 011 |
Mais :
\[x = \pm m \times p^{e}, m \in [0, p[, e \in \mathbb{Z}\]
| signe S (1 bit) | exposant E (\(n_e\) bits) | mantisse M (\(n_m\) bits) |
|---|
M code uniquement la partie fractionnaire, premier bit implicite (\(0\) pour les dénormalisées ou \(1\) pour les normalisées).
E en excess-K (plutôt que complément à \(2\)) permet de comparer deux nombres comme des entiers par comparaison bit à bit en partant des bits de poids fort : le signe à gauche, l’exposant en excess-K puis la mantisse.
Plusieurs conventions : binary-16, binary-32, binary-64
Arrondis : \((0.9 / 3) \times 3 \neq 0.9\)
Représentation sur 16 bits, \([-65504, \cdots -2^{-24}, \pm 0, 2^{-24}, \cdots, 65504] \cup \{\pm \infty, NaN\}\)
| Signe | Exposant | Mantisse | Valeur représentée | Note |
|---|---|---|---|---|
| 0 | 00000 | \(0 \cdots 0\) | +0 | |
| 1 | 00000 | \(0 \cdots 0\) | -0 | |
| s | 00000 | \(0\cdots 01\) | \((-1)^s 2^{-14} (2^{-10}) = (-1)^s 2^{-24}\) | Plus petit dénormalisé |
| s | 00000 | \(0\cdots 10\) | \((-1)^s 2^{-14} (2^{-9}) = (-1)^s 2^{-23}\) | Second plus petit |
| s | 00000 | \(1\cdots 11\) | \((-1)^s 2^{-14} (\sum_{1}^{n_m} (2^{-i}))=(-1)^s (2^{-14} - 2^{-24})\) | Plus grand dénormalisé |
| s | 00001 | \(0\cdots 00\) | \((-1)^s 2^{1-15} = (-1)^s 2^{-14}\) | Plus petit normalisé |
| s | 11110 | \(1\cdots 11\) | \((-1)^s 2^{30-15} (1+\sum_{1}^{n_m} 2^{-i}) = (-1)^s (2^{16} - 2^{5})\) | Plus grand normalisé |
| s | 11111 | \(0\cdots 00\) | \((-1)^s \infty\) | |
| x | 11111 | \(\neq 0\) | NaN (sNan ou qNan) | Exception, e.g 0/0, .. |
Caractères “spéciaux” : \t, \n \r, ..
Example en python : la variable \(c\) représente t’elle un caractère ? ord: \(char \mapsto int\), chr: \(int \mapsto char\)
Norme trop spécifique à l’américain \(\rightarrow\) Multiplicité des normes ISO-8859-x sur 8 bits \(\rightarrow\) Norme UTF-8
Quelle est la valeur de \((626F6E6A6F757221)_{16}\) ?
Un bit (0, 1) va être représenté physiquement par un niveau de tension
Par une valeur ? Par des domaines contigus ? Séparés par des marges ?

Des marges différentes en entrée et en sortie.
Il nous faut un composant avec une VTC (Votlage Transfer Characteristics) non linéaire

Bascule en quelques dizaines de nanosecondes.
On fait comment ??
On peut construire les portes AND, OR, NOT à partir de NAND.
La porte NAND est dite universelle.

Exemple d’une porte ET à 4 entrées.
⇒ Spécification fonctionnelle


⇒ Spécification fonctionnelle


⇒ Spécification fonctionnelle


Quel est le problème ? Example du multiplexeur.

Supprimer ce changement transitoire.



⇒ Read Only Memory (ROM)
UAL
Table de vérité :
| \(a_i\) | \(b_i\) | \(s_i\) | \(r\) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Circuit :
Table de vérité :
| \(a_i\) | \(b_i\) | \(r_i\) | \(s_i\) | \(r_{i+1}\) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Circuit :
Pour réaliser un circuit de logique combinatoire
Circuits logique combinatoire

Produced with quarto