Sommaire du Cours
- Introduction – Von Neumann, Harvard
- Représentation des Nombres – Binaire, Hexa, IEEE 754
- Algèbre de Boole – Portes logiques, tables de vérité
- Circuits Combinatoires – Additionneurs, MUX, décodeurs
- Circuits Séquentiels – Bascules, registres, compteurs
- Mémoires – ROM, RAM, SRAM, DRAM
- Chemin de Données & UC
- Exercices Corrigés – 6 exercices types
- QCM Interactif – 10 questions
1. Introduction à l'Architecture des Ordinateurs
L'architecture d'un ordinateur définit l'organisation de ses composants matériels et la manière dont ils interagissent pour exécuter des programmes. Deux modèles historiques dominent : Von Neumann et Harvard.
1.1 Architecture de Von Neumann
Proposée par John von Neumann en 1945, c'est l'architecture de la quasi-totalité des ordinateurs modernes. Ses caractéristiques :
Principes clés – Von Neumann
- Mémoire unique pour les instructions ET les données (programme stocké).
- Bus unique pour le transfert instructions/données → goulot d'étranglement (Von Neumann bottleneck).
- Exécution séquentielle : fetch → decode → execute, cycle par cycle.
- 4 composants : UAL (calculs), Unité de Contrôle (séquencement), Mémoire, Entrées/Sorties.
- Avantage : simplicité, 1 seul espace d'adressage. Inconvénient : lenteur due au bus partagé.
1.2 Architecture Harvard
Utilisée dans les DSP (Digital Signal Processors) et microcontrôleurs (AVR, PIC).
Principes clés – Harvard
- Mémoires séparées : une pour les instructions, une pour les données.
- Bus séparés → accès simultané instructions + données → plus rapide.
- Permet le pipeline efficace : fetch d'instruction en parallèle avec l'accès données.
- Inconvénient : complexité matérielle, deux espaces d'adressage distincts.
| Critère | Von Neumann | Harvard |
|---|---|---|
| Mémoire | Unique (instructions + données) | Séparée (2 bus) |
| Vitesse | Limitée (goulot) | Plus rapide (parallélisme) |
| Complexité | Simple | Plus complexe |
| Usage typique | PC, serveurs (x86, ARM Cortex-A) | DSP, microcontrôleurs (AVR, PIC) |
| Cycle fetch/execute | 1 bus → séquentiel | 2 bus → pipelinable |
2. Représentation des Nombres
Les ordinateurs manipulent exclusivement des bits (0/1). Comprendre les systèmes de numération et la représentation des nombres signés et flottants est fondamental en architecture.
2.1 Bases de numération
Conversions rapides
Binaire → Décimal : $N = \sum b_i \cdot 2^i$. Ex : $1011_2 = 1\cdot8 + 0\cdot4 + 1\cdot2 + 1\cdot1 = 11_{10}$.
Décimal → Binaire : divisions successives par 2, lire les restes de bas en haut.
Binaire → Hexadécimal : grouper par 4 bits (de droite à gauche). $1011\,1100_2 = \text{BC}_{16}$.
Hexadécimal → Binaire : chaque chiffre hexa sur 4 bits. $\text{3F}_{16} = 0011\,1111_2$.
| Décimal | Binaire (8 bits) | Hexadécimal | Octal |
|---|---|---|---|
| 0 | 0000 0000 | 0x00 | 00 |
| 10 | 0000 1010 | 0x0A | 012 |
| 42 | 0010 1010 | 0x2A | 052 |
| 127 | 0111 1111 | 0x7F | 177 |
| 255 | 1111 1111 | 0xFF | 377 |
2.2 Nombres signés – Complément à 2
Le Complément à 2 (standard universel)
Sur $n$ bits, le complément à 2 d'un nombre $A$ est $2^n - A$. Méthode pratique :
- Complémenter tous les bits (inverser 0↔1 = complément à 1).
- Ajouter 1 au résultat.
Plage sur $n$ bits : $[-2^{n-1},\; 2^{n-1}-1]$. Exemple sur 8 bits : $[-128,\;+127]$.
Exemple : $-5$ sur 8 bits → $+5 = 0000\,0101_2$ → complément → $1111\,1010_2$ → $+1$ → $1111\,1011_2$.
Extension de signe : recopier le bit de poids fort (MSB) vers la gauche. $-5$ sur 16 bits : $1111\,1111\,1111\,1011_2$.
2.3 Virgule flottante – IEEE 754 (simple précision, 32 bits)
Format IEEE 754 – 32 bits (float)
Structure : 1 bit signe S | 8 bits exposant E (biaisé de +127) | 23 bits mantisse M (bit implicite 1).
$V = (-1)^S \times (1.M) \times 2^{E-127}$
Cas spéciaux : $E=0, M=0$ → $0$ ; $E=255, M=0$ → $\pm\infty$ ; $E=255, M\neq0$ → NaN.
Exemple : $-6.625_{10}$ → S=1, $6.625=110.101_2=1.10101\times2^2$ → $E=2+127=129=1000\,0001_2$, $M=10101\,00...0$. Résultat : $1\,1000\,0001\,1010\,1000\,...0$.
3. Algèbre de Boole et Portes Logiques
L'algèbre de Boole manipule des variables binaires (0/1) avec 3 opérations fondamentales : ET (·), OU (+), NON (̅). Toute fonction logique peut être exprimée avec ces opérateurs.
3.1 Portes logiques fondamentales
| Porte | Symbole | Équation | Table de vérité | Propriété clé |
|---|---|---|---|---|
| AND | A·B | $S = A \cdot B$ | 1 uniquement si A=1 ET B=1 | $A\cdot0=0$, $A\cdot1=A$, $A\cdot A=A$ |
| OR | A+B | $S = A + B$ | 1 si A=1 OU B=1 (ou les deux) | $A+0=A$, $A+1=1$, $A+A=A$ |
| NOT | Ā | $S = \overline{A}$ | Inverse l'entrée | $\overline{\overline{A}} = A$ |
| NAND | $\overline{A\cdot B}$ | $S = \overline{A \cdot B}$ | 0 uniquement si A=1 ET B=1 | Porte universelle |
| NOR | $\overline{A+B}$ | $S = \overline{A + B}$ | 1 uniquement si A=0 ET B=0 | Porte universelle |
| XOR | A⊕B | $S = A \oplus B = A\overline{B} + \overline{A}B$ | 1 si A ≠ B | $A\oplus0=A$, $A\oplus1=\overline{A}$, $A\oplus A=0$ |
| XNOR | A⊙B | $S = \overline{A \oplus B}$ | 1 si A = B | Comparateur d'égalité |
3.2 Tables de vérité détaillées (2 entrées)
AND
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
OR
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
NAND
| A | B | S |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
3.3 Lois et théorèmes fondamentaux
À connaître par cœur pour l'examen
- Idempotence : $A + A = A$, $A \cdot A = A$
- Complémentarité : $A + \overline{A} = 1$, $A \cdot \overline{A} = 0$
- Commutativité : $A+B = B+A$, $A\cdot B = B\cdot A$
- Associativité : $(A+B)+C = A+(B+C)$
- Distributivité : $A\cdot(B+C) = A\cdot B + A\cdot C$
- Absorption : $A + A\cdot B = A$
- De Morgan : $\overline{A+B} = \overline{A}\cdot\overline{B}$, $\overline{A\cdot B} = \overline{A}+\overline{B}$
- Éléments neutres : $A+0=A$, $A\cdot1=A$
4. Circuits Combinatoires
Un circuit combinatoire est un circuit dont les sorties ne dépendent que des entrées présentes (pas de mémoire, pas de rétroaction).
4.1 Demi-additionneur (Half Adder)
Demi-additionneur – 2 entrées, 2 sorties
Somme $S = A \oplus B$ (XOR) | Retenue $C_{out} = A \cdot B$ (AND)
| A | B | S (Somme) | Cout (Carry) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
4.2 Additionneur complet (Full Adder)
Full Adder – 3 entrées (A, B, Cin), 2 sorties
Somme : $S = A \oplus B \oplus C_{in}$
Retenue sortante : $C_{out} = A\cdot B + C_{in}\cdot(A \oplus B)$
Un additionneur $n$ bits se construit en chaînant $n$ full adders (carry ripple adder). Le temps de propagation est proportionnel à $n$ (délai de propagation de la retenue).
4.3 Multiplexeur (MUX)
MUX $2^n$:1 – $2^n$ entrées de données, $n$ entrées de sélection, 1 sortie
Un multiplexeur sélectionne 1 entrée parmi $2^n$ selon les bits de sélection.
MUX 2:1 : $S = \overline{S_0}\cdot I_0 + S_0\cdot I_1$ (1 bit de sélection $S_0$).
MUX 4:1 : $S = \overline{S_1}\,\overline{S_0}\,I_0 + \overline{S_1}S_0\,I_1 + S_1\overline{S_0}\,I_2 + S_1S_0\,I_3$.
Application : un MUX $2^n$:1 peut implémenter n'importe quelle fonction logique de $n$ variables en connectant les entrées à 0 ou 1 selon la table de vérité.
4.4 Décodeur
Décodeur $n$ vers $2^n$ – $n$ entrées, $2^n$ sorties (une seule active à la fois)
Décodeur 2→4 : avec entrées $A_1,A_0$, sorties $D_0=\overline{A_1}\,\overline{A_0},\; D_1=\overline{A_1}A_0,\; D_2=A_1\overline{A_0},\; D_3=A_1A_0$.
Utilisation : sélection de périphériques (chip select), décodage d'adresses mémoire, implémentation de fonctions logiques (avec une porte OR sur les sorties).
5. Circuits Séquentiels
Contrairement aux circuits combinatoires, les circuits séquentiels possèdent une mémoire : leur sortie dépend des entrées ET de l'état précédent. L'élément de base est la bascule (latch/flip-flop).
5.1 Bascules (Latches & Flip-Flops)
Une bascule est un circuit bistable (2 états stables : 0 et 1) capable de mémoriser 1 bit.
Bascule RS (Reset-Set)
NOR-RS : $S=1$ → $Q=1$ (set). $R=1$ → $Q=0$ (reset). $R=S=0$ → mémorise. $R=S=1$ → interdit (état indéterminé).
Table caractéristique : $Q_{t+1} = S + \overline{R}\cdot Q_t$ (avec $R\cdot S=0$).
Bascule D (Data) – La plus utilisée en pratique
La bascule D recopie l'entrée D sur la sortie Q lors du front d'horloge (rising edge ou falling edge).
Équation : $Q_{t+1} = D$ (après le front d'horloge).
Avantage : élimine le problème RS ($S=R=1$ interdit). 1 seule entrée de données. Utilisée dans les registres et les compteurs synchrones.
Bascule JK – La plus polyvalente
La bascule JK résout le problème de l'état interdit RS : $J=K=1$ → basculement (toggle, $Q_{t+1} = \overline{Q_t}$).
| J | K | $Q_{t+1}$ | Mode |
|---|---|---|---|
| 0 | 0 | $Q_t$ | Mémorisation (hold) |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | $\overline{Q_t}$ | Basculement (toggle) |
5.2 Registres
Registre $n$ bits
Un registre est un ensemble de $n$ bascules D partageant la même horloge. Capacité de stockage = $n$ bits.
Registre à décalage (shift register) : à chaque front d'horloge, les bits sont décalés d'une position ($Q_i$ → $Q_{i+1}$). Utilisé pour la conversion série/parallèle et les multiplications/divisions par $2^n$.
Registre à chargement parallèle : charge $n$ bits simultanément via une entrée Load.
5.3 Compteurs
Compteurs synchrones et asynchrones
Compteur asynchrone (ripple) : chaque bascule est cadencée par la sortie de la précédente. Simple mais lent (délai cumulatif = $n \times t_{pd}$).
Compteur synchrone : toutes les bascules partagent la même horloge. Plus rapide, plus complexe.
Compteur modulo-N : cycle $0 \to 1 \to \dots \to N-1 \to 0$. Avec $k$ bascules, $N \leq 2^k$. Remise à zéro quand le compte atteint $N$ (décodeur + reset).
6. Mémoires
La mémoire stocke instructions et données. Elle est organisée en hiérarchie : plus on s'approche du processeur, plus c'est rapide, petit et cher.
6.1 Typologie des mémoires
| Type | Volatile ? | Lecture/Écriture | Technologie | Usage |
|---|---|---|---|---|
| ROM | Non | Lecture seule | Masque | Boot, firmware |
| PROM | Non | Écriture 1× (programmable) | Fusibles | Prototypage |
| EPROM | Non | Effaçable UV, réinscriptible | UV | Développement |
| EEPROM / Flash | Non | Effaçable électriquement | Électrique | SSD, BIOS, clés USB |
| SRAM | Oui | Lecture + Écriture rapide | 6 transistors/bascules | Cache (L1, L2, L3) |
| DRAM | Oui | Lecture + Écriture + Rafraîchissement | 1 transistor + 1 condensateur | Mémoire principale (RAM) |
6.2 SRAM vs DRAM
Comparaison SRAM / DRAM
- SRAM : 6 transistors par bit, très rapide (~1-10 ns), chère, utilise des bascules → cache processeur.
- DRAM : 1 transistor + 1 condensateur par bit, plus lente (~50-100 ns), bon marché, nécessite un rafraîchissement périodique (toutes les ~64 ms) → RAM principale.
- La DRAM est ~4× plus dense que la SRAM mais ~10× plus lente.
6.3 Hiérarchie mémoire
| Niveau | Type | Taille typique | Latence | Bande passante |
|---|---|---|---|---|
| Registres CPU | Bascules internes | ~100-500 octets | ~1 cycle (0.3 ns) | Très élevée |
| Cache L1 | SRAM | 32-64 Kio | ~4-5 cycles | ~1 To/s |
| Cache L2 | SRAM | 256 Kio – 1 Mio | ~12-20 cycles | ~500 Go/s |
| Cache L3 | SRAM | 4-32 Mio (partagé) | ~40-50 cycles | ~200 Go/s |
| RAM (DDR4/DDR5) | DRAM | 8-64 Gio | ~100-150 ns | ~50 Go/s |
| SSD / Disque dur | Flash / Magnétique | 256 Gio – 2 To | ~100 µs / ~10 ms | ~500 Mo/s – 5 Go/s |
7. Chemin de Données et Unité de Contrôle
Le processeur est composé de deux parties : le chemin de données (qui exécute les opérations) et l'unité de contrôle (qui orchestre le tout).
7.1 Chemin de données (Datapath)
Composants du datapath
- UAL (ALU) : effectue les opérations arithmétiques (+, −, ×) et logiques (AND, OR, XOR, shifts).
- Banc de registres : stocke les opérandes et résultats intermédiaires (ex : 32 registres de 32 bits sur MIPS).
- Bus internes : transportent les données entre registres, UAL et mémoire.
- Registres spécialisés : PC (Program Counter), IR (Instruction Register), MAR (Memory Address Register), MDR (Memory Data Register).
7.2 Unité de Contrôle (Control Unit)
Deux types d'implémentation
UC câblée (hardwired) : logique combinatoire fixe → rapide, mais non modifiable. Utilisée dans les processeurs RISC simples.
UC microprogrammée : séquence de micro-instructions stockée en ROM → flexible mais plus lente. Utilisée dans les processeurs CISC (x86).
7.3 Cycle d'instruction
Fetch → Decode → Execute (cycle von Neumann)
- Fetch (recherche) : l'instruction pointée par PC est chargée depuis la mémoire dans IR. PC ← PC + 1 (ou +4 selon l'architecture).
- Decode (décodage) : l'UC décode l'instruction → identifie le code opération (opcode), les opérandes, et active les signaux de contrôle.
- Execute (exécution) : l'UAL effectue l'opération, lit/écrit les registres ou la mémoire selon l'instruction.
- Write Back : le résultat est écrit dans le registre de destination (pour les instructions de type R sur MIPS).
8. Exercices Corrigés
6 exercices types couvrant l'ensemble du programme. Essaye de résoudre chaque exercice avant de regarder la correction.
Exercice 1 – Conversion de bases
ReprésentationÉnoncé : Convertir les nombres suivants :
- $1101\,0110_2$ en décimal et en hexadécimal.
- $7\text{B}_{16}$ en binaire et en décimal.
- $156_{10}$ en binaire (8 bits) et en hexadécimal.
Exercice 2 – Complément à 2
Nombres signésÉnoncé :
- Représenter $-37$ en complément à 2 sur 8 bits.
- Quelle est la valeur décimale de $1110\,1100_2$ (complément à 2, 8 bits) ?
- Additionner $+25$ et $-37$ en complément à 2 sur 8 bits. Vérifier le résultat en décimal.
Exercice 3 – Table de vérité et équation logique
Algèbre de BooleÉnoncé : Soit la fonction logique $F(A,B,C) = \overline{A}\cdot B + A\cdot\overline{B}\cdot C + A\cdot B\cdot\overline{C}$.
- Établir la table de vérité de $F$.
- Simplifier $F$ par la méthode algébrique.
- Dessiner le logigramme simplifié utilisant uniquement des portes NAND à 2 entrées.
Exercice 4 – Additionneur 4 bits
Circuits combinatoiresÉnoncé : On souhaite additionner $A = 0110_2$ (6) et $B = 0101_2$ (5) avec un additionneur 4 bits à propagation de retenue (ripple carry adder).
- Calculer bit à bit les sommes et retenues intermédiaires ($C_0=0$).
- Donner le résultat final $S_3S_2S_1S_0$ et la retenue finale $C_4$.
- Quel est le temps de propagation si chaque full adder a un délai de 2 ns ?
Exercice 5 – Compteur modulo-6
Circuits séquentielsÉnoncé : Concevoir un compteur synchrone modulo-6 (compte de 0 à 5) à l'aide de bascules D.
- Combien de bascules D sont nécessaires ?
- Donner la table de transition d'état.
- Expliquer le mécanisme de remise à zéro (reset) quand le compteur atteint 6.
Exercice 6 – MUX et implémentation de fonction
Circuits combinatoiresÉnoncé : Implémenter la fonction majorité $F(A,B,C) = AB + AC + BC$ à l'aide d'un multiplexeur 8:1, puis d'un multiplexeur 4:1.
9. QCM d'Entraînement
10 questions pour tester tes connaissances. Clique sur chaque question pour révéler la réponse et l'explication.