Architecture de l'ordinateur⚓︎
Fiche méthode & révision — Première NSI · Chapitre 18
Fiche compacte pour refaire seul les activités : histoire de l'informatique, mémoires, architecture de Von Neumann, CPU et assembleur.
1. Objectifs⚓︎
À la fin du chapitre, vous devez savoir :
- connaître la hiérarchie des mémoires et l'architecture de Von Neumann ;
- expliquer le rôle du CPU, des bus, de l'horloge ;
- comparer les mémoires (vitesse, volatilité, capacité) ;
- calculer une capacité mémoire (
2^n) ; - traduire entre Python, langage naturel et assembleur ; simuler un programme.
2. Repères historiques⚓︎
Grandes étapes
Machines mécaniques / électromécaniques → tubes à vide (électronique) → programme enregistré → transistor → circuit intégré → microprocesseur → micro-ordinateur → évolution des langages et OS.
L'idée clé : miniaturisation croissante et passage au programme enregistré.
3. Définitions essentielles⚓︎
| Terme | Définition |
|---|---|
| Programme enregistré | Programme stocké en mémoire comme les données. |
| Mémoire volatile / non volatile | Perdue / conservée hors tension. |
| Accès direct | Accès à n'importe quelle case directement. |
| Registre | Mémoire interne au CPU, ultra-rapide. |
| Cache | Mémoire rapide pour données réutilisées. |
| RAM / ROM | Vive (volatile) / morte (non volatile). |
| Stockage secondaire | Disque (HDD/SSD), durable. |
| Processeur / CPU | Unité qui exécute les instructions. |
| UAL / ALU | Unité arithmétique et logique (calculs). |
| Unité de contrôle | Pilote l'exécution des instructions. |
| Bus | Liaison transportant adresses, données ou commandes. |
| Adresse mémoire | Numéro d'une case. |
| Horloge / fréquence | Rythme du CPU (cycles/s). |
| Multicœur | Plusieurs cœurs de calcul. |
| Assembleur | Langage bas niveau (mnémoniques). |
| Mnémonique | Nom d'une instruction (MOV…). |
| Opérande | Donnée d'une instruction. |
| Valeur immédiate | Valeur fixe (notée #). |
| Instruction | Une opération du programme. |
| PC | Compteur de programme (prochaine instruction). |
4. Les mémoires⚓︎
| Mémoire | Emplacement | Rôle | Volatile | Rapidité | Capacité | Coût |
|---|---|---|---|---|---|---|
| Registre | dans le CPU | donnée immédiate | oui | ★★★★★ | minuscule | très élevé |
| Cache L1/L2/L3 | proche / dans CPU | données réutilisées | oui | ★★★★ | petite | élevé |
| RAM | carte mère | programmes en cours | oui | ★★★ | moyenne | moyen |
| ROM | carte mère | programme permanent | non | ★★ | petite | faible |
| HDD / SSD | stockage secondaire | conservation durable | non | ★ | grande | faible/Go |
5. Choisir ou reconnaître une mémoire⚓︎
| Besoin | Mémoire |
|---|---|
| donnée utilisée immédiatement par le CPU | registre |
| donnée souvent réutilisée | cache |
| programme en cours | RAM |
| programme essentiel permanent | ROM |
| conservation durable | stockage secondaire |
6. Lire l'architecture de Von Neumann⚓︎
Méthode
- repérer CPU, mémoire et entrées-sorties ;
- identifier UAL, unité de contrôle et registres ;
- suivre les bus ;
- distinguer adresse, donnée et commande ;
- retenir que programmes et données partagent la mémoire.
7. Les bus⚓︎
| Bus | Transporte |
|---|---|
| Adresses | l'adresse de la case visée |
| Données | une instruction ou une donnée |
| Contrôle | la commande (lecture / écriture) |
8. Calculer une capacité mémoire⚓︎
Méthode
- relever la largeur du bus d'adresses
n; - calculer
2^nadresses ; - relever la taille d'une case ;
- calculer la capacité totale ;
- convertir (octets, Kio…).
Bus de 16 bits, case d'un octet
2^16 = 65 536 adresses → 65 536 octets = 64 Kio (1 Kio = 1024 octets).
Warning
2^16 = 65 536, pas 16² = 256.
9. Lire les caractéristiques du CPU⚓︎
À repérer
fréquence, taille des registres, nombre de cœurs, caches, rôle de l'horloge (cadence les cycles).
Warning
2 GHz = 2 milliards de cycles/seconde — pas forcément 2 milliards d'instructions
(une instruction peut prendre plusieurs cycles).
10. Les instructions (assembleur)⚓︎
| Instruction | Effet | Exemple |
|---|---|---|
MOV Rd, #valeur |
place une valeur dans Rd |
MOV R0, #42 |
MOV Rd, Rs |
copie Rs dans Rd |
MOV R1, R0 |
LDR Rd, adresse |
charge la mémoire dans Rd |
LDR R0, 150 |
STR Rs, adresse |
stocke Rs en mémoire |
STR R0, 150 |
ADD Rd, Rs, #v / Rd, Rs1, Rs2 |
addition | ADD R0, R1, #42 |
SUB ... |
soustraction | SUB R0, R1, #1 |
CMP Rn, valeur/Rm |
compare (drapeaux) | CMP R0, #75 |
B étiquette |
saut inconditionnel | B fin |
BEQ / BNE / BGT |
saut si = / ≠ / > | BEQ egal |
HALT |
arrête le programme | HALT |
11. Traduire l'assembleur en langage naturel⚓︎
Méthode
- identifier le mnémonique ;
- repérer le registre destination ;
- repérer les sources ;
- distinguer valeur immédiate (
#) et adresse ; - décrire l'effet final.
Example
ADD R0, R1, #42 → « place dans R0 la valeur de R1 augmentée de 42 ».
12. Traduire une phrase en assembleur⚓︎
Méthode
- charger / placer les valeurs nécessaires ;
- effectuer l'opération ;
- choisir le registre résultat ;
- stocker en mémoire si demandé ;
- terminer par
HALT(programme complet).
13. Traduire une affectation Python⚓︎
x = 4 devient :
MOV R0, #4 ; placer 4 dans un registre
STR R0, 100 ; stocker à l'adresse choisie pour x
- une adresse mémoire représente l'emplacement choisi pour la variable.
14. Traduire un if / else⚓︎
Étapes
- charger la variable ;
- utiliser
CMP; - choisir le saut conditionnel ;
- écrire le bloc
if; - ajouter un saut vers la fin ;
- placer l'étiquette du
else; - écrire le bloc
else; - placer l'étiquette de fin.
LDR R0, 30 ; charger x
CMP R0, #75 ; comparer
BEQ egal ; si égal -> bloc if
MOV R1, #0 ; bloc else
B fin
egal: MOV R1, #1 ; bloc if
fin: STR R1, 23 ; stocker le résultat
HALT
15. Suivre un programme assembleur⚓︎
Modèle de tableau
| Adresse | Instruction | PC avant | Registres avant | Opération | Registres après | Mémoire modifiée | PC après |
|---|---|---|---|---|---|---|---|
16. Utiliser le simulateur CPU⚓︎
Procédure
- choisir la représentation de la mémoire ;
- saisir le programme ;
- cliquer sur Submit ;
- vérifier les adresses des instructions ;
- lancer Run ;
- observer registres, PC, unité de contrôle, mémoire ;
- ralentir si nécessaire ;
- vérifier la cellule attendue ;
- Reset avant un nouveau test.
17. Programmes expliqués⚓︎
Stocker 42 à l'adresse 150 (avec R0)
MOV R0, #42
STR R0, 150
HALT
R0 = 0. Effet : 42 va dans R0, puis en mémoire[150].
Final : R0 = 42, mémoire[150] = 42.
Stocker 54 à l'adresse 50 (avec R1)
MOV R1, #54
STR R1, 50
HALT
R1 = 54, mémoire[50] = 54.
if / else (adresses 30, 75, 23)
LDR R0, 30 ; x
CMP R0, #75
BEQ egal
MOV R1, #0 ; else
B fin
egal: MOV R1, #1 ; if
fin: STR R1, 23
HALT
x (adresse 30) vaut 75 → R1 = 1, sinon R1 = 0 ; le résultat
est stocké à l'adresse 23.
18. Tableaux de suivi⚓︎
Modèles de tableaux
Mémoire | Technologie | Vitesse | Capacité | Volatilité | |---|---|---|---|
Von Neumann | Composant | Rôle | Reçoit | Envoie | |---|---|---|---|
Assembleur | Instruction | Registres lus | Registre écrit | Mémoire lue/écrite | |---|---|---|---|
Simulation | PC | Instruction | Registres | Mémoire | |---|---|---|---|
19. Erreurs fréquentes⚓︎
| Erreur | Cause / correction |
|---|---|
| Confondre RAM et stockage | RAM volatile / disque durable |
| Croire que la RAM conserve hors tension | elle est volatile |
| Confondre cache et registre | registre dans le CPU |
| Confondre UAL et unité de contrôle | calculs / pilotage |
| Mélanger bus adresses et données | adresse de case / contenu |
Calculer 16² au lieu de 2^16 |
c'est 2^n |
| Confondre adresse et valeur | la case ≠ son contenu |
Oublier # (valeur immédiate) |
#42 = valeur, 42 = adresse |
| Inverser source et destination | MOV Rd, Rs : Rd reçoit |
LDR au lieu de STR |
charger / stocker |
| Comparer sans avoir chargé | LDR avant CMP |
| Oublier le saut de fin d'un if/else | B fin avant le else |
Oublier HALT |
le programme ne s'arrête pas |
| Croire que PC contient une donnée | il pointe l'instruction suivante |
| Pas de Reset avant une simulation | états résiduels faussent le test |
20. Questions-réponses corrigées⚓︎
Vocabulaire⚓︎
1. (N1) Qu'est-ce qu'un registre ?
Une mémoire interne au CPU, ultra-rapide.
2. (N1) Que contient le PC ?
L'adresse de la prochaine instruction.
3. (N2) Différence RAM / ROM ?
RAM volatile ; ROM non volatile.
4. (N2) Que fait l'UAL ?
Les calculs arithmétiques et logiques.
5. (N1) Qu'est-ce qu'une valeur immédiate ?
Une valeur fixe, notée #.
Histoire⚓︎
6. (N1) Qu'a apporté le programme enregistré ?
Stocker le programme en mémoire comme les données.
7. (N2) Qu'a permis le transistor ?
La miniaturisation (remplace les tubes).
8. (N2) Qu'est-ce qu'un circuit intégré ?
De nombreux composants sur une même puce.
9. (N3) Qu'est-ce que le microprocesseur a changé ?
Le CPU sur une seule puce → micro-ordinateurs.
10. (N2) Quelle tendance traverse l'histoire de l'informatique ?
La miniaturisation et l'augmentation des performances.
Mémoires⚓︎
11. (N1) Quelle mémoire est la plus rapide ?
Le registre.
12. (N2) Quelle mémoire conserve un programme permanent ?
La ROM.
13. (N2) Quelle mémoire pour un programme en cours ?
La RAM.
14. (N3) Pourquoi un cache ?
Accélérer l'accès aux données réutilisées.
15. (N2) Le SSD est-il volatile ?
Non.
Von Neumann⚓︎
16. (N1) Citer les trois grands ensembles.
CPU, mémoire, entrées-sorties.
17. (N2) Que partagent programmes et données ?
La même mémoire.
18. (N2) Rôle de l'unité de contrôle ?
Piloter l'exécution des instructions.
19. (N3) Quel bus transporte l'adresse d'une case ?
Le bus d'adresses.
20. (N2) Quel bus indique lecture ou écriture ?
Le bus de contrôle.
Calcul mémoire⚓︎
21. (N1) Combien d'adresses avec un bus de 8 bits ?
2^8 = 256.
22. (N2) Et avec un bus de 16 bits ?
2^16 = 65 536.
23. (N2) Capacité avec 16 bits et case d'1 octet ?
65 536 octets = 64 Kio.
24. (N3) Bus de 10 bits : combien d'adresses ?
2^10 = 1024.
25. (N3) 2 GHz, est-ce 2 milliards d'instructions/s ?
Non : 2 milliards de cycles/s.
Lecture d'assembleur⚓︎
26. (N1) Que fait MOV R0, #5 ?
Place 5 dans R0.
27. (N2) Que fait LDR R0, 150 ?
Charge mémoire[150] dans R0.
28. (N2) Que fait STR R0, 150 ?
Stocke R0 en mémoire[150].
29. (N3) Que fait ADD R0, R1, #3 ?
R0 = R1 + 3.
30. (N2) Que fait BEQ etiq ?
Saute à etiq si égalité.
Traduction⚓︎
31. (N1) Traduire x = 7.
MOV R0, #7 puis STR R0, adresse_x.
32. (N2) Traduire « ajouter 1 à R0 ».
ADD R0, R0, #1.
33. (N2) Quelle instruction avant un saut conditionnel ?
CMP.
34. (N3) Traduire « si x == 0 alors … ».
LDR R0, adr ; CMP R0, #0 ; BEQ ….
35. (N3) Comment terminer un programme complet ?
Par HALT.
Simulation⚓︎
36. (N1) Quel bouton lance le programme ?
Run.
37. (N2) Que faut-il faire avant un nouveau test ?
Reset.
38. (N2) Qu'observe-t-on pendant l'exécution ?
Registres, PC, mémoire, unité de contrôle.
39. (N3) Comment voir chaque étape ?
Ralentir l'exécution.
40. (N3) Comment vérifier le résultat ?
Lire la cellule mémoire attendue.
Correction d'erreurs⚓︎
41. (N1) Oublier # dans MOV R0, 42 : conséquence ?
42 est lu comme une adresse, pas une valeur.
42. (N2) MOV R1, R0 pour mettre R1 dans R0 : erreur ?
La destination est R1 : écrire MOV R0, R1.
43. (N2) CMP sans LDR préalable : erreur ?
On compare un registre non chargé.
44. (N3) Oublier B fin dans un if/else : conséquence ?
Le bloc else s'exécute aussi.
45. (N2) Oublier HALT : conséquence ?
Le CPU continue sur des cases non prévues.
21. Exercices flash corrigés⚓︎
Classer par vitesse : RAM, registre, SSD
registre > RAM > SSD.
Reconnaître le composant qui calcule
L'UAL.
Choisir le bus transportant une adresse
Le bus d'adresses.
Nombre d'adresses pour un bus de 12 bits
2^12 = 4096.
Décrire ADD R0, R1, #42
R0 = R1 + 42.
Écrire une instruction stockant R0 à l'adresse 200
STR R0, 200.
Compléter une condition : sauter si différent
BNE etiquette.
Déterminer R0 après MOV R0, #5 puis ADD R0, R0, #3
R0 = 8.
Trouver la cellule modifiée par STR R1, 50
mémoire[50].
Suivre PC : après une instruction simple, PC ?
Pointe l'instruction suivante.
Corriger MOV R0, 9 (valeur immédiate)
MOV R0, #9.
Traduire y = 3 en assembleur
MOV R0, #3 ; STR R0, adresse_y.
À retenir absolument⚓︎
Mémoires & Von Neumann
- hiérarchie : registre > cache > RAM > ROM > stockage (vitesse ↓, capacité ↑) ;
- volatile : registre, cache, RAM ; non volatile : ROM, HDD/SSD ;
- Von Neumann : CPU (UAL + contrôle + registres) + mémoire + E/S, reliés par les bus ; programmes et données partagent la mémoire.
CPU, bus, capacité
- bus : adresses / données / contrôle ;
- capacité =
2^ncases × taille d'une case (ex. 16 bits → 64 Kio) ; - horloge :
2 GHz= 2 milliards de cycles/s.
Assembleur
MOV(valeur/registre),LDR/STR(mémoire),ADD/SUB,CMP,B/BEQ/BNE/BGT,HALT;- valeur immédiate notée
#; PC = prochaine instruction ; - if/else :
CMP+ saut conditionnel +B fin+ étiquettes ; - simulation : saisir → Submit → Run → observer → Reset.