Vous êtes sur une version archivée de lyceum.fr de l'année 2021/2022. Revenir au présent.
Programme Officiel
Contenus Capacités attendues Commentaires
Modèle d'architecture séquentielle (von Neumann) Dérouler l'exécution d'une séquence d'instructions simples du type langage machine. Des activités débranchées sont proposées.
Lien vers le programme complet

Maintenant que nous avons vu quelle était la structure générale d'un ordinateur, nous allons nous intéresser plus précisément au rôle du processeur et de la mémoire(vive), et voir comment peuvent être dictées les instructions à l'unité de contrôle du processeur.

Architecture de Von Neumann Princeton

Communication entre le processeur et la mémoire

La mémoire contient plusieurs milliards de circuits mémoires un bit, qui sont organisés en cases mémoires de huit, seize, trente-deux, soixante-quatre bits. Chaque case a une adresse unique, leur nombre détermine la capacité de la mémoire vive de l'ordinateur.

Le processeur ne possède qu'un très petit nombre de cases mémoires très rapides appelées des registres dont la capacité dépasse rarement quelques dizaines d'octet pour des raisons de coût et de place. Source Wikipedia

Ces registres peuvent stocker des données et des adresses de la mémoire.

Le processeur est composé de transistors assemblés de façon à lui permettre de réaliser un petit nombre d'opérations simples, mais à réaliser ces opérations très rapidement.

Par exemple pour échanger des données avec la mémoire, le processeur utilise deux instructions permettant de:

  • Transférer l'état d'un registre dans une case mémoire: le Stockage (STORE);
  • transférer l'état d'une case mémoire dans un registre: le Chargement(LOAD).

Jeu d'instructions simplifié du processeur

Nous allons étudier un processeur simplifié avec deux registres disposant d'un jeu d'instructions restreints:

  • STX x: stocke l'état du registre X dans la case mémoire d'adresse x.
  • LDX x: charge l'état de la case mémoire d'adresse x dans le registre X.
  • ADD X: additionne le contenu des registres et le stocke dans le registre X.
  • DEC X: décrémente la valeur contenue dans le registre X, c'est à dire soustrait 1.

::: {.appli titre=" Écrire des suites d'instructions pour le processeur "} 1. Supposons que notre mémoire contienne quatre valeurs 2, 3, 5, 7 dans les cases mémoires d'adresse 1, 2, 3, 4. Écrire la suite d'instructions qui permettra d'additionner ces quatre nombres et de stocker le résultat de cette addition dans la case mémoire 5. 2. Écrire une séquence d'instructions qui multiplie par 3 le nombre contenu dans la case mémoire d'adresse 5 et stocke le résultat dans la case mémoire d'adresse 6. :::

Langage machine

Dans les premières machines, les opérations à effectuer étaient écrites sur des bandes perforées qui en défilant indiquaient au processeur la suite d'opérations à réaliser.

DrehorgelLochkarte.jpg
"DrehorgelLochkarte". Licensed under Public Domain via Wikimedia Commons.

Puis cette idée a été abandonnée au profit d'une autre: celle d'enregistrer le programme dans la mémoire avec les données. Il convient alors de stocker les instructions du programme sous forme électrique dans la mémoire, on parle alors de langage machine.

Par exemple, on va utiliser le codage suivant pour les instructions:

instruction codage signification
LDA 0 Charge l'état de la case mémoire donnée en argument dans le registre A.
LDB 1 Charge l'état de la case mémoire donnée en argument dans le registre B.
STA 2 Stocke l'état du registre A dans la case mémoire donnée en argument.
STB 3 Stocke l'état du registre B dans la case mémoire donnée en argument.
ADD 4 Additionne le contenu des registres et le stocke dans le registre donné en argument.
DEC 5 Décrémente la valeur contenue dans le registre donné en argument, c'est à dire soustrait 1.

En ce qui concerne les arguments des instructions:

  • Les cases mémoires sont codées par leur adresse numérique,
  • et les registres A et B sont codés par 0 et 1.

Si on désire additionner le contenu des valeurs contenues dans les cases mémoires 5 et 6, et les stocker dans la case mémoire 7, on réalise la suite d'instructions suivantes:

LDA 5,LDB 6,ADD A,STA 7

soit:

    0 5,1 6,4 0,2 7

Il suffit maintenant d'ajouter au processeur un nouveau registre qui débute à 100, le compteur de programme ou PC (program counter), sur lequel on va stocker le programme à exécuter, et à chaque étape, le processeur :

  • Charge le contenu des cases mémoires d'adresses PC et PC + 1,
  • décode le premier de ces nombres en une instruction (0 devient LDA , 1 LDB , etc.),
  • décode le deuxième de ces nombres comme un argument à l'instruction(p.ex: une adresse mémoire dans le cas des LOAD),
  • exécute l'instruction en question,
  • et ajoute 2 au registre PC pour passer à l'instruction suivante.

::: {.appli titre=" Écrire un programme en langage machine"} 1. Traduire les suites d'instructions des applications de la partie précédente en langage machine. 2. Écrire ces programmes en binaire avec des mots de 4 bits. :::

Vers des instructions plus évoluées

Si on désire réaliser des boucles et des tests, on ajoute trois instructions au processeur qui seront codées ainsi:

instruction codage signification
JMP 6 Fait "sauter"(JUMP) le programme vers une ligne donnée en argument
JMPZ 7 Comme JUMP, mais uniquement si le registre A est 0.
END 8 Termine le programme

Comment écrire une boucle?

xx et yy sont deux entiers positifs par exemple: 5 et 3.

Expliquer ce que fait ce programme et indiquer ce que contiennent les cases mémoires 10 et 11 en fin d'exécution.

adresse valeur signification
... ...
10 x case mémoire
11 y case mémoire
...
100 0 LDA
101 10 case mémoire
102 1 LDB
103 10 case mémoire
104 7 JMPZ
105 112 112
106 5 DEC
107 0 A
108 4 ADD
109 1 B
110 6 JMP
111 104 104
112 3 STB
113 11 case mémoire
114 8 END
...

Comment écrire une instruction conditionnelle?

Pa exemple, on veut vérifier si deux valeurs sont égales:

  • si oui stocker 079, la lettre «O» en ASCII dans la case mémoire 10.
  • si oui stocker 078, la lettre «N» ASCII dans la case mémoire 10.

xx et yy sont deux entiers positifs stockés initialement dans les cases mémoires 10 et 11.

adresse valeur signification
... ...
10 x case mémoire
11 y case mémoire
12 78 case mémoire
13 79 case mémoire
...
100 0 LDA
101 10 x
102 1 LDB
103 11 y
104 7 JMPZ
105 112 112
106 5 DEC
107 0 A
108 5 DEC
109 1 B
110 6 JMP
111 104 104
112 3 STB
113 11 11
114 0 LDA
115 11 11
116 7 JMPZ
117 122 122
118 0 LDA
119 12 78
120 6 JMP
121 124 124
122 0 LDA
123 13 79
124 2 STA
125 10 10
126 8 END