2.1 Chaînage des opérations
L’architecture actuelle ne permet pas de chaîner les calculs (exemple : 3 + 4 + 5). Pour pouvoir le faire, il y a plusieurs possibilités…
Question 2: Lesquelles ?
2.2 L’accumulateur
Nous allons doter notre processeur d’un registre interne sur 8 bits, que nous appellerons accumulateur. Toutes les opérations arithmétiques à deux opérandes s’effectueront entre l’accumulateur et une donnée en RAM. Plus précisément : pour effectuer “3 + 4” et stocker le résultat en RAM, le processeur effectuera les instructions suivantes :
- chargement de 3 dans l’accumulateur
- addition de l’accumulateur avec un opérande en RAM (“4”)
- stockage du contenu de l’accumulateur en RAM
Pour effectuer “3 + 4 + 5” :
- chargement de 3 dans l’accumulateur
- addition de l’accumulateur avec un opérande en RAM (“4”)
- addition de l’accumulateur avec un opérande en RAM (“5”)
- stockage du contenu de l’accumulateur en RAM
On ajoute donc deux instructions à notre processeur :
- load : chargement de l’accumulateur à partir de la RAM
- store : stockage du contenu de l’accumulateur dans la RAM
Parallèlement, les instructions d’addition et de soustraction n’ont plus besoin que d’un seul opérande - le deuxième opérande est dans l’accumulateur.
De plus, tant qu’on y est, nous allons ajouter trois instructions de manipulation de bits : AND, OR et XOR (cf. le tableau 1.1), qui comme l’addition, opèrent sur le contenu de l’accumulateur et un opérande en RAM.
Le nouveau jeu d’instruction devient donc :
| code (binaire 8 bits) | instruction | effet |
| 00000001 | XOR | Effectue un XOR bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur |
| 00000010 | AND | Effectue un ET bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur |
| 00000011 | OR | Effectue un OU bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur |
| 00000100 | addition | Additionne le contenu de l’accumulateur à une donnée en RAM; le résultat est stocké dans l’accumulateur |
| 00000110 | soustraction | Soustrait du contenu de l’accumulateur une donnée en RAM; le résultat est stocké dans l’accumulateur |
| 00001010 | load | Charge dans l’accumulateur une donnée en RAM |
| 00001011 | store | Stocke le contenu de l’accumulateur en RAM |
Question 3: Quel est l’impact de ces spécifications sur la façon de stocker le programme en RAM ?
Question 4: Concevoir la nouvelle architecture du processeur. Quels sont les avantages en terme de vitesse par rapport à l’architecture précédente ?