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

Contenu supprimé Contenu ajouté
Ligne 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 :appelé l''''accumulateur'''. TouteL'accumulateur instructionmémorise arithmétiqueune vaopérande lireet unle opéranderésultat depuisde cetl'instruction accumulateur,est etautomatiquement ymémorisé écriredans son résultatl'accumulateur. Si l'instruction a besoin demanipule 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, lL'accumulateur est localiséadressé 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écisermême où stockerque le résultat : pas de mode dl'adressage pour le résultatopération. 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 :que l'accumulateur était seul au monde. PourToutes faireles sesopérandes calculs, notre processeur devait stocker une opérande dans l'hors-accumulateur, et aller chercher lesétaient autreslues 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 demanipulent deux opérandes, etce nequi fournissentfait qu'unelles résultatdevaient :lire pensezune auxopérande instructionsdepuis d'addition,la de multiplication, de division, etcRAM. 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.
 
Avec ces seuls modes d'adressages, l'utilisation de tableaux ou de structures devenait un véritable calvaire. Pour améliorer la situation, ces processeurs à accumulateurs ont alors incorporés des '''registres d'Index''', capables de stocker des indices de tableaux, ou des constantes permettant de localiser une donnée dans une structure. Ces registres facilitaient donc les calculs d'adresses mémoire. Au départ, ces processeurs n'utilisaient qu'un seul registre d'Index, accessible et modifiable via des instructions spécialisées. Ce registre d'Index se comportait comme un second accumulateur, spécialisé dans les calculs d'adresses mémoire, adressé implicitement. Les modes d'adressages autorisés restaient les mêmes qu'avec une architecture à accumulateur normale. La seule différence, c'est que le processeur contenait de nouvelles instruction capables de lire ou d'écrire une donnée dans/depuis l'accumulateur, qui utilisaient ce registre d'Index de façon implicite. Mais avec le temps, nos processeurs finirent par incorporer plusieurs de ces registres. Nos instructions de lecture ou d'écriture devaient alors préciser quel registre d'Index utiliser. Le mode d'adressage Indexed Absolute vit le jour. Les autres modes d'adressages, comme le mode d'adressage Base + Index ou indirects à registres étaient plutôt rares à l'époque et étaient difficiles à mettre en œuvre sur ce genre de machines.