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 :
- Mémoire centrale,
- Unité centrale (processeur, mico-processeur),
- Périphériques,
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 :
- sa taille (\(8\), \(16\), \(32\) ou \(64\) bits selon l’architecture),
- son adresse (un numéro qui permet d’accéder directement à son contenu).
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.
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 :
- son temps d’accès (délai moyen pour obtenir une donnée, exprimé en nanosecondes),
- sa bande passante (débit global des échanges).
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.
- Bus de données : transporte le contenu échangé (valeurs, instructions).
- Bus d’adresses : indique la case mémoire ou le périphérique visé (lecture/écriture).
- Bus de contrôle : véhicule les signaux de commande (lecture, écriture, horloge, validation).
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.
FETCH → DECODE → EXECUTE
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 :
- Registres (mémoires internes très rapides) :
- PC (Program Counter / Compteur Ordinal) : contient l’adresse de la prochaine instruction.
- RI (Registre Instruction) : contient l’instruction courante.
- RAD (Registre d’Adresse) : indique quelle case mémoire est concernée.
- RDO (Registre de Données) : sert à échanger les données entre la mémoire et le processeur.
- Registres généraux : servent aux calculs et manipulations de données.
- UAL (Unité Arithmétique et Logique) : effectue les opérations arithmétiques (addition, soustraction, etc.) et logiques (comparaison, test, etc.).
- UC (Unité de Commande) : pilote le déroulement des instructions. Elle comprend notamment le décodeur (qui identifie l’instruction) et le séquenceur (qui envoie les micro-commandes nécessaires).
Ces trois parties communiquent entre elles grâce à des bus internes, qui transportent les adresses, les données et les signaux de commande.
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.
- Entrée : clavier, souris, micro, capteurs, scanner…
- Sortie : écran, imprimante, haut-parleur, vidéoprojecteur…
- Entrée/Sortie : disque dur, clé USB, écran tactile, carte réseau…
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.
- Pipeline : les étapes fetch, decode, execute sont traitées en parallèle, comme une chaîne de montage. Pendant qu’une instruction est exécutée, la suivante est déjà en cours de décodage.
- Superscalaire :
le processeur possède plusieurs unités d’exécution (plusieurs UAL), ce qui permet de traiter
plusieurs instructions en même temps. On parle de parallélisme au niveau des instructions.
Processeur superscalaire - Multicœurs : un seul processeur regroupe plusieurs cœurs physiques, chacun capable d’exécuter son propre flux d’instructions (thread).
Exemple : un processeur quad-core peut exécuter jusqu’à quatre instructions simultanément.Il existe deux organisations fréquentes de la mémoire cache L2 : indépendante (une par cœur) ou partagée (commune à plusieurs cœurs).
Processeur multicœur à mémoire L2 indépendante
Processeur multicœur à mémoire L2 partagée - Parallélisation : certaines tâches (comme le traitement d’images ou la simulation numérique) sont découpées en sous-tâches réparties sur plusieurs cœurs ou plusieurs processeurs, ce qui accélère fortement le calcul.
- Processeurs spécialisés :
pour soulager le CPU, des processeurs secondaires assurent certaines fonctions :
- GPU (processeur graphique) : très efficace pour les calculs massivement parallèles.
- TPU (processeur pour intelligence artificielle) : optimisé pour les réseaux de neurones.
- Contrôleurs d’E/S : gèrent directement la communication avec certains périphériques, libérant le processeur central.
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 :
- Haut niveau (Python) :
c = a + b - Assemblage :
ADD R3, R1, R2 - Langage machine :
000 0011 0100(suite de bits)
7.4. Dérouler l’exécution d’une séquence d’instructions
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.
Pseudo-code : A ← mem[10] // 5 B ← mem[11] // 7 C ← A + B // 12 mem[12] ← C
Langage machine (jeu d’instructions simplifié) :
LOAD A: ACC ← mem[A] (charger en accumulateur)ADD B: ACC ← ACC + mem[B]STORE C: mem[C] ← ACC
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) :
- PC = 0 — FETCH : RI ←
LOAD 10→ EXECUTE : ACC ← mem[10] = 5 - PC = 1 — FETCH : RI ←
ADD 11→ EXECUTE : ACC ← 5 + mem[11] = 5 + 7 = 12 - 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
- Donner les rôles de la mémoire, du processeur et des bus.
- Pourquoi la RAM est-elle dite volatile ?
- Donner le rôle du registre PC et du registre RI.
- Expliquer simplement l’intérêt du pipeline.
- Citer un périphérique d’entrée, un de sortie et un mixte.
-
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
- Combien d’instructions au maximum ce processeur peut-il exécuter simultanément ?
- Que signifie la différence entre la fréquence de base (2,4 GHz) et la fréquence turbo (4,2 GHz) ?
- À quoi sert la mémoire cache L3 de 8 Mo ?
- Quelle est la différence entre la RAM et le SSD ?
- Convertir 512 Go en octets (1 Go = 230 octets).
- À quoi sert la carte graphique intégrée ? Donne un exemple de tâche où elle peut être utile.