Objectif. Comprendre l’architecture de von Neumann et expliquer le rôle de chaque composant.

1. Le modèle de von Neumann

Ce modèle repose sur une idée simple mais puissante : programmes et données partagent la même mémoire.
Il comprend trois blocs reliés par des bus :

Schéma simplifié du modèle de von Neumann
Modèle de von Neumann : mémoire, processeur et périphériques reliés par des bus.

2. La mémoire centrale

La mémoire centrale est construite à partir de circuits électroniques élémentaires appelés transistors.
Un transistor peut se trouver dans deux états stables : laisser passer le courant (1) ou le bloquer (0).
Ces deux états sont utilisés pour représenter un bit (binary digit, ou chiffre binaire).

La mémoire sert à stocker aussi bien les programmes que les données.
Ainsi, toute information en mémoire est représentée sous la forme d’une suite de bits, c’est-à-dire une chaîne de 0 et de 1.
La mémoire centrale est organisée en petites cellules appelées mots mémoire, chacune identifiée par une adresse.
Un mot est caractérisé par :

Par convention, on appelle octet (ou byte) une cellule de \(8\) bits. La plupart des machines modernes sont adressées à l’octet : chaque adresse repère un octet, et un mot peut donc occuper plusieurs octets consécutifs.

Un mot mémoire est un contenant accessible par son adresse. La suite de bits (\(0\) ou \(1\)) qui compose le mot représente sa valeur. Les instructions et les données sont codées en mots mémoires. Selon leur taille, elles peuvent occuper un ou plusieurs mots. On appelle capacité de la mémoire le nombre total de mots qu’elle peut stocker.

Exemple : la mémoire représentée ci-dessous contient \(8\) mots de \(16\) bits.

Une mémoire centrale
Une mémoire à 16 bits

Cela correspond à \(8 \times 16 = 128\) bits, soit \(\tfrac{128}{8} = 16\) octets.
Le mot mis en évidence (en rouge) est celui de l’adresse 00000101 (soit \(5\) en base \(10\)).

En plus de sa capacité, une mémoire centrale se caractérise par  :

La mémoire centrale est aussi appelée mémoire vive : elle est volatile et perd son contenu à l’arrêt. On la désigne par l’acronyme RAM (Random Access Memory), ce qui signifie que chaque case peut être atteinte directement par son adresse, en lecture comme en écriture.

3. Les bus de communication

Un bus est un ensemble de lignes qui transportent des signaux binaires (0 ou 1) pour permettre l’échange d’informations entre les composants de l’ordinateur. Chaque ligne peut porter un signal présent (1) ou absent (0).

La largeur du bus (en nombre de lignes) détermine combien de bits peuvent être transférés simultanément. Par exemple, un bus de 32 lignes peut véhiculer 32 bits à la fois.

4. Le processeur (CPU)

Le processeur (CPU, pour Central Processing Unit) est le « cerveau » de la machine.
Il exécute les programmes (instructions machine) stockés en mémoire centrale.
Une instruction ne peut être exécutée que si elle a été chargée en mémoire.

Cycle d’exécution d’une instruction :
FETCHDECODEEXECUTE

1. FETCH : le processeur va chercher l’instruction en mémoire.
2. DECODE : il identifie l’opération à réaliser et les données concernées.
3. EXECUTE : il effectue l’opération (calcul, accès mémoire, commande de périphérique).

Le processeur est composé de trois parties principales, reliées entre elles par des bus internes :

Ces trois parties communiquent entre elles grâce à des bus internes, qui transportent les adresses, les données et les signaux de commande.

Schéma détaillé du processeur
Unité centrale : registres, UAL et UC.

5. Les périphériques

Les périphériques, aussi appelés dispositifs d’Entrée/Sortie (E/S ou I/O), permettent à l’ordinateur d’échanger des informations avec le monde extérieur.
Ils communiquent avec le processeur et la mémoire via les bus.

6. Évolutions modernes

Le modèle de von Neumann reste la base de nos ordinateurs actuels, mais il montre ses limites en termes d’efficacité. Augmenter simplement la fréquence d’horloge a rapidement atteint ses limites : cela entraîne une surchauffe et une consommation excessive. Les concepteurs ont donc développé d’autres techniques pour améliorer les performances tout en maîtrisant l’énergie et les coûts.

Schéma détaillé du processeur
Unité centrale : registres, UAL et UC.

7. Langages de programmation

7.1. Les langages de haut niveau

Un langage de haut niveau (comme Python, Java, C, etc.) permet au programmeur d’écrire des instructions proches du langage humain ou des mathématiques. Ces langages sont indépendants de l’architecture matérielle : le même programme peut être exécuté sur différents ordinateurs, à condition d’être traduit.

Exemple en Python :

a = 5
b = 7
c = a + b
print(c)

Le programmeur écrit a + b sans se soucier de l’adresse mémoire réelle de a et b.

7.2. Le langage d’assemblage

Le langage d’assemblage (ou assembleur) est une traduction plus proche de la machine.
Il utilise des abréviations symboliques appelées mnémoniques.
Chaque type de processeur a son propre assembleur, car il dépend directement de son jeu d’instructions.

Exemple en assembleur (pour un processeur donné) :

MOV R1, #5     ; placer 5 dans le registre R1
MOV R2, #7     ; placer 7 dans le registre R2
ADD R3, R1, R2 ; additionner R1 et R2, stocker le résultat dans R3
STR R3, 12     ; stocker le contenu de R3 en mémoire à l'adresse 12

C’est plus lisible que le binaire, mais reste très lié au matériel.

7.3. Le langage machine

Le langage machine est l’ensemble des instructions codées en binaire que le processeur exécute directement.
Chaque processeur a son propre langage machine.
Écrire un programme en langage machine revient à manipuler des suites de 0 et de 1.

Exemple simplifié :

COP   m    reg1   reg2   champ2
000   0000 xxxx

Cette instruction correspond à une opération élémentaire (ex. addition, chargement en mémoire…).

Ainsi, un même calcul peut s’écrire à trois niveaux :

7.4. Dérouler l’exécution d’une séquence d’instructions

Objectif (langage de haut niveau)
Calculer la somme 5 + 7 et stocker le résultat à une adresse mémoire.

Convention :
Dans un langage de haut niveau, nous manipulons des variables nommées (A, B, C). En réalité, lors de l’exécution, chaque variable est associée à une adresse mémoire précise :

  • La variable A est associée à l’adresse mem[10], où la valeur 5 est stockée.
  • La variable B est associée à l’adresse mem[11], où la valeur 7 est stockée.
  • La variable C est associée à l’adresse mem[12], initialement vide, destinée à contenir le résultat.
Ainsi, les noms A, B et C servent de repères pour nous, programmeurs, tandis que la machine manipule uniquement des adresses numériques (10, 11, 12).

Pseudo-code :
A ← mem[10]   // 5
B ← mem[11]   // 7
C ← A + B     // 12
mem[12] ← C

Langage machine (jeu d’instructions simplifié) :

Programme en mémoire :

Adresse | Contenu (Instruction / Donnée)
----------------------------------------
0       | LOAD  10
1       | ADD   11
2       | STORE 12
10      | 5
11      | 7
12      | ?

Déroulement (FETCH → DECODE → EXECUTE) :

  1. PC = 0 — FETCH : RI ← LOAD 10 → EXECUTE : ACC ← mem[10] = 5
  2. PC = 1 — FETCH : RI ← ADD 11 → EXECUTE : ACC ← 5 + mem[11] = 5 + 7 = 12
  3. PC = 2 — FETCH : RI ← STORE 12 → EXECUTE : mem[12] ← ACC = 12

État final : mem[12] contient 12. L’objectif « 5 + 7 » est atteint.

Rappels : PC = compteur ordinal (adresse de la prochaine instruction) • RI = registre instruction • ACC = accumulateur (registre de travail).

Exercices

  1. Donner les rôles de la mémoire, du processeur et des bus.
  2. Pourquoi la RAM est-elle dite volatile ?
  3. Donner le rôle du registre PC et du registre RI.
  4. Expliquer simplement l’intérêt du pipeline.
  5. Citer un périphérique d’entrée, un de sortie et un mixte.
  6. Lire et interpréter les caractéristiques d’un ordinateur ci-dessous :

    Caractéristiques techniques

    • Processeur : Intel Core i5-1135G7
    • Cœurs : 4
    • Fréquence : 2,4 GHz (Turbo 4,2 GHz)
    • Cache : L3 – 8 Mo
    • Mémoire vive (RAM) : 8 Go DDR4 – 3200 MHz
    • Stockage : SSD NVMe 512 Go
    1. Combien d’instructions au maximum ce processeur peut-il exécuter simultanément ?
    2. Que signifie la différence entre la fréquence de base (2,4 GHz) et la fréquence turbo (4,2 GHz) ?
    3. À quoi sert la mémoire cache L3 de 8 Mo ?
    4. Quelle est la différence entre la RAM et le SSD ?
    5. Convertir 512 Go en octets (1 Go = 230 octets).
    6. À quoi sert la carte graphique intégrée ? Donne un exemple de tâche où elle peut être utile.