« Fonctionnement d'un ordinateur/Les jeux d'instructions » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 3 :
==L'adressage des opérandes==
 
La première classification que nous allons voir est celle basée sur l'adressage des opérandes, et les transferts de données entre mémoire, unité de calcul, et registres. Le critère de distinction entre ces architectures est les modes d'adressage autorisés pour les instructions de calculopérandes. Les accès mémoire et branchements ne sont pas vraiment impliqués dans cette classification. La raison à cela est que les branchements ont des modes d'adressages dédiés, tandis que les accès mémoire ont besoin de beaucoup de modes d'adressage pour faire leur travail. Tel n'est pas le cas des instructions de calculs, qui peuvent utiliser un nombre limité de modes d'adressage sans le moindre problèmes. Certaines architectures ont décidé de limiterlimitent les modes d'adressages pour les calculsopérandes, afin de simplifier le processeur ou le travail du compilateur. D'autres ont décidé d'utiliserutilisent beaucoup de modes d'adressage, dans un souci de flexibilité ou de performances. Bref, voyons comment les différents types d'architectures ontgèrent géré le cas desles modes d'adressages pour les instructions de calculopérandes.
 
La classification que nous allons aborder distingue les jeux d'instructions par leur manière de gérer les opérandes. Dans les grandes lignes, on trouve trois catégories principales : les architectures mémoire-mémoire, les architectures à registres et les architectures FIFO/LIFO. Dans les architectures mémoire-mémoire, celles-ciles opérandes sont lues directement depuis la mémoire RAM, sans intermédiaires. Pour les architectures à registres, le processeur stocke ses opérandes dans des registres. Enfin, les architectures à pile et à file utilisent une mémoire FIFO ou LIFO pour stocker les opérandes. Ces catégories sont souvent subdivisées en sous-catégories. Par exemple, les architectures à accumulateur peuvent être vues comme des architectures à registres particulières, dans lesquelles on trouve un unique registre pour les opérandes. Même chose pour les architectures LOAD-STORE, qui sont une sous-classe d'architectures à registres. Pour résumer, nous allons parler des architectures suivantes : les machines à pile, les machines à file, les architectures à accumulateur, les architectures mémoire-mémoire et les architectures à registres.
 
{|class="wikitable"
Ligne 21 :
| Mémoire FIFO/LIFO. Les opérandes et résultats sont placés dans une mémoire FIFO ou LIFO.
|}
 
Les architectures à registres sont subdivisées en sous-catégories : les architectures LOAD-STORE, les architectures à accimulateurs et les architectures à registre générales. Pour résumer, nous allons parler des architectures suivantes : les machines à pile, les machines à file, les architectures à accumulateur, les architectures mémoire-mémoire et les architectures à registres.
 
===Les architectures mémoire-mémoire===
Ligne 38 ⟶ 40 :
[[File:Isaccumulator.png|vignette|Architecture à accumulateur.]]
 
Les architectures à accumulateur sont des architectures à registres avec un unique registre pour les opérandes. Certains processeurs n'utilisent qu'un seul registre pour les données : l''''accumulateur'''. Toute instruction arithmétique va lire un opérande depuis cet accumulateur, et y écrire son résultat. Si l'instruction a besoin de plusieurs opérandes, les opérandes qui ne sont pas dans l'accumulateur sont lus depuis la mémoire ou dans des registres séparés de l'accumulateur. Dans tous les cas, l'accumulateur est localisé grâce au mode d'adressage implicite. De plus, le résultat des instructions arithmétiques et logiques est stocké dans l'accumulateur, et on n'a pas besoin de préciser où stocker le résultat : pas de mode d'adressage pour le résultat. Par contre, les autres opérandes sont localisées avec d'autres modes d'adressage : absolu pour le cas le plus fréquent, inhérent (à registre) sur certaines architectures, indirect à registre pour d'autres, etc.
 
Historiquement, les premières architectures à accumulateur ne contenaient aucun autre registre : l'accumulateur était seul au monde. Pour faire ses calculs, notre processeur devait stocker une opérande dans l'accumulateur, et aller chercher les autres en mémoire. Sur ces processeurs, les modes d'adressages supportés étaient les modes d'adressages implicite, absolus, et immédiat. Ces architectures sont parfois appelées '''architectures 1-adresse''', pour une raison simple : la majorité des instructions devait lire une opérande depuis la RAM. Il faut dire que la majorité des instructions d'un processeur n'a besoin que de deux opérandes et ne fournissent qu'un résultat : pensez aux instructions d'addition, de multiplication, de division, etc. Pour ces opérations, le résultat ainsi qu'une des opérandes sont stockés dans l'accumulateur, et adressés de façon implicite, seule la seconde opérande étant adressée directement.