C14.1 : Architecture von Neumann
Que contient un ordinateur ?
A faire :
Faire la liste des éléments que contient un ordinateur.
Un modèle simplifié : la machine M-10-io
Afin de comprendre de fonctionnement d'un ordinateur, nous allons commencer avec un modèle d'ordinateur minimaliste : la machine M-10-io.
Schéma de principe
Instructions disponibles
Instructions arithmétiques
Ces instructions nécessitent deux opérandes prises en mémoire. Le résultat est placé dans l'accumulateur.
ADD: additionne les deux opérandesSUB: soustrait le deuxième opérande du premierMUL: multiplie les deux opérandesDIV: divise le premier opérande par le deuxième
Exemple :
ADD @1 @2: additionne les contenues des mémoires 1 et 2 et stocke le résultat dans l'accumulateur.
Instructions logiques
Ces instructions nécessitent deux opérandes prises en mémoire.
EQU: teste l'égalité des deux opérandesNEQ: teste la non égalité des deux opérandesLSS: teste si le premier opérande est plus petit (strictement) que le deuxièmeLEQ: teste si le premier opérande est plus petit ou égale au deuxièmeGTR: teste si le premier opérande est plus grand (strictement) que le deuxièmeGEQ: teste si le premier opérande est plus grand ou égale au deuxième
Exemple :
EQU @1 @2: teste si le contenu de la mémoire 1 est égale au contenu de la mémoire 2 et stocke le résultat dans l'accumulateur sous la forme d'un 0 ou d'un 1.
Instructions de transfert mémoire
Ces instructions nécessite un seul opérande.
LOAD @_: transfert la mémoire vers l'accumulateurSTORE @_: transfert de l'accumulateur vers la mémoire
Instructions d'entrée/sortie
Ces instruction permettent d'interagir avec l'utilisateur
READ: lit une valeur au clavier et la stock dans l'accumulateurPRINT: écrit la valeur de l'accumulateur sur l'écran
A faire
Écrire un programme qui :
- - récupère un nombre entré par l'utilisateur ;
- - soustrait 2 à ce nombre ;
- - multiplie le résultat par 4 ;
- - affiche le résultat à l'écran.
Un autre modèle un peu moins simplifié : la machine M999
Le modèle précédent ne permet pas de savoir où est stocké le programme, il est par ailleurs assez limité !
Voici un autre modèle, le M999, qui rend davantage compte de ce qui se passe dans un ordinateur.
Généralités
Principe
Le M999 est constitué des éléments suivants :
- - une mémoire qui contient à la fois les données et le programme ;
- - une unité arithmétique et logique (UAL ou ALU en anglais) en charge de réaliser les opérations comme l'addition, la comparaison, etc ;
- - une unité de commande (ou unité de contrôle UC) qui pilote l'ordinateur ;
- - des dispositifs d’entrée-sortie.
Mémoires et registres
La mémoire est composée de 100 "emplacements" que l'on appelle mots mémoire, pouvant chacun stocker 3 chiffres (ainsi, les mots mémoire peuvent prendre les valeurs de 000 à 999). Chaque mot mémoire est repéré par son adresse mémoire, codée sur 2 chiffres (de 00 à 99).
Cette mémoire va contenir les données et les instructions.
Le M999 dispose de deux registres généraux notés A et B, et d'un registre accumulateur/résultat noté R. Ces registres peuvent chacun stocker un mot mémoire.
Le M999 dispose aussi d'un registre pointeur d'instruction PC contenant l'adresse mémoire de la prochaine instruction à exécuter.
Unité arithmétique et logique
L'unité arithmétique et logique est en charge d'effectuer les calculs. Les opérandes des instructions sont dans les registres A et B. Le résultat est dans le registre R.
Unité de commande
L'unité de commande pilote l'ordinateur.
Son cycle de fonctionnement comporte 3 étapes :
- - elle charge l'instruction depuis la mémoire pointée par PC et incrémente PC ;
- - elle décode l'instruction ;
- - elle exécute l'instruction.
Jeu d'instructions
| c0 | c1 c2 | Mnémonique | Instruction à réaliser |
|---|---|---|---|
| 0 | addr | LDA | Copie le mot mémoire d’adresse addr dans le registre A |
| 1 | addr | LDB | Copie le mot mémoire d’adresse addr dans le registre B |
| 2 | addr | STR | Copie le contenu du registre R dans le mot mémoire d'adresse addr |
| 3 | - - | – | Opérations arithmétiques et logiques |
| 3 | 0 0 | ADD | Ajoute les valeurs des registres A et B, produit le résultat dans R |
| 3 | 0 1 | SUB | Soustrait la valeur du registre B à celle du registre A (c'est à dire A - B), produit le résultat dans R |
| 3 | . . | etc | … |
| 3 | 9 9 | NOP | Ne fait rien |
| 4 | rs rd | MOV | Copie la valeur du registre source rs dans le registre destination rd |
| 5 | addr | JMP | Affecte la valeur addr au registre PC. |
| 6 | addr | JPP | Affecte la valeur addr au registre PC si la valeur du registre R est strictement positive et ne fait rien sinon |
Les registres sont désignés par les valeurs suivantes :
| valeur | registre |
|---|---|
| 0 | A |
| 1 | B |
| 2 | R |
Démarrage (boot) et arrêt du programme
La machine démarre avec la valeur nulle comme pointeur d'instruction PC.
La machine stoppe si le pointeur d'instruction vaut 99. Ainsi, la dernière instruction d'un programme est JMP 99 (soit le code 599).
Entrées/sorties
L'emplacement mémoire d'adresse 99 sert d'entrée et de sortie.
Analyse de quelques programmes
Application 1
Soit l'état suivant de la mémoire :
1) Expliquer pas à pas l'exécution du programme.
2) Que se passe-t-il si on inverse les contenus de @11 et @12.
3) Expliquer en une phrase le rôle de ce programme.
Application 2
Soit l'état suivant de la mémoire :
1) Expliquer pas à pas l'exécution du programme.
2) Expliquer en une phrase le rôle de ce programme.
Écriture d'un programme
Application 3
1) En utilisant les mnémoniques, écrire un programme qui affiche successivement les nombres de 1 à 10.
2) Coder ce programme sur le M999.