Architecture Matérielle
Modèle de Von Neuman
John von Neumann a élaboré en juin 1945 la description d’un modèle d’ordinateur dans lequel une unité de stockage unique sert à conserver les instructions et les données de calcul.
Elle se décompose en 4 parties distinctes :
- L’unité arithmétique et logique (UAL ou ALU en anglais).
Son rôle est d’effectuer les opérations. - L’unité de contrôle (UC ou CU).
Son rôle est de séquencer les opérations. - La mémoire.
Elle contient d’une part les instructions actuelles et futures que l’UAL devra effectuer, et d’autres part les données qu’elle devra manipuler. - Les dispositifs Entrée/Sortie
Ils permettent de communiquer avec l’extérieur.
De nos jours, tous les ordinateurs utilisent encore cette architecture
Principaux composants d'un PC actuel
![]() | Le processeur (CPU) C’est le cœur du PC. Il contient tous les éléments du modèle de von Neumann, et c’est lui qui réalise tous les calculs effectués par l’ordinateur. |
![]() | La mémoire vive (RAM) C’est une mémoire chère mais rapide, dans laquelle on va stocker des données qui ne doivent pas rester longtemps en mémoire. |
![]() | Le disque dur (HDD, SSD) C’est la mémoire principale du PC, principale dans le sens où c’est ici que la plupart des données sont stockées. Celles auxquelles le processeur accède rarement, mais qui ont une durée de vie élevée. |
![]() | La carte mère (MB) Le composant central, il fait le lien entre tous les composants du PC. |
Le langage machine : Assembleur
D'après pixees.fr
Concrètement, un processeur ne sait réaliser que des opérations très simples.
Pour lui donner des instructions, on ne peut utiliser un langage dit de « haut niveau » comme Python : Il ne les comprendrait pas. En réalité, ces langages de programmations agissent comme intermédiaires entre nous, qui voulons réaliser des opérations compliquées, et le processeur, qui ne comprend que des instructions basiques.
Les langages de haut niveau traduisent donc les programmes que nous écrivons en un autre langage appelé Assembleur. C’est ce langage qui sera compris par le processeur, qui exécutera alors les instructions demandées.
Voici quelques exemples d'instructions écrites en Assembleur :
| LDR R1,78 | Place la valeur stockée à l'adresse mémoire 78 dans le registre R1. |
| STR R3,125 | Place la valeur stockée dans le registre R3 en mémoire vive à l'adresse 125. |
| ADD R1,R0,#128 | Additionne le nombre 128 (une valeur immédiate est identifiée grâce au symbole #) et la valeur stockée dans le registre R0. Place le résultat dans le registre R1. |
| MOV R0,R3 | Place la valeur stockée dans le registre R3 dans le registre R0. |
| B 45 | Structure de rupture de séquence : la prochaine instruction à exécuter se situe en mémoire vive à l'adresse 45. |
| CMP R0,#23 | Compare la valeur stockée dans le resgitre R0 et le nombre 23. Cette instruction CMP doit précéder une instruction de branchement conditionnelle : BEQ, BNE, BGT, BLT (voir ci-dessous). |
| CMP R0,#23 BEQ 78 | La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le registre R0 est égale à 23. |
| CMP R0,#23 BNE 78 | La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le resgitre R0 n'est pas égale à 23. |
| CMP R0,#23 BGT 78 | La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le resgitre R0 est plus grande que 23. |
| HALT | Arrête l'exécution du programme. |
Exemple de programme rédigé en assembleur :
1. MOV R0,#4
2. STR R0,30
3. MOV R0,#8
4. STR R0,75
5. LDR R0,30
6. CMP R0,#10
7. BNE else
8. MOV R0,#9
9. STR R0,75
10. B endif
11. else :
12. LDR R0,30
13. ADD R0,R0,#1
14. STR R0,30
15. endif :
16. MOV R0,#6
17. STR R0,23
18. HALT
lignes 1 à 4 : On définit deux variables, une à l'adresse 30 qui vaut 4 et une à l'adresse 75 qui vaut 8. Appelons les x et y par simplicité de lecture.
lignes 5 et 6 : On compare x à 10.
Si x différent de 10 : On va à l'instruction appelée "else", ligne 12:
lignes 12 à 14 : On ajoute 1 à x et on met à jour x avec le résultat de l'addition.
Puis on continue normalement, ligne 16.
Sinon, on continue à la ligne d'en dessous:
lignes 8 et 9 : On change la valeur de y : y vaut maintenant 9.
lignes 10 : On passe ensuite à l'instruction appelée "endif", ligne 16.
lignes 16 à 18 : On crée une nouvelle variable, z, qui vaut 6 à l'adresse 23.





