Accumulateur (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir accumulateur.

En informatique, un accumulateur est un registre spécial, incorporé dans certaines architectures de processeur, auquel on accède implicitement dans certaines opérations.

Architectures à accumulateur[modifier | modifier le code]

Architecture d'un processeur avec un accumulateur ».

Sur les processeurs disposant d'un accumulateur, tous les résultats d'une instruction manipulant des registres vont être écrit dans cet accumulateur. De la même manière, toute instruction va aller manipuler le contenu de cet accumulateur.

Cet 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.

Bien évidemment, les instructions qui manipulent plusieurs opérandes vont pouvoir aller chercher celle-ci dans la mémoire ou dans d'autres registres. Historiquement, les premières machines à accumulateur ne contenaient pas d'autres registres pour stocker les opérandes des instructions arithmétiques et logiques. De ce fait, le seul registre pouvant stocker des données était l'accumulateur. Une telle architecture est représentée par le schéma sur votre droite.

Par la suite, certaines architecture à accumulateur incorporèrent des registres supplémentaires pour stocker des opérandes. Cela permettait de diminuer le nombre d'accès mémoire lors de la lecture des opérandes des instructions. Mais attention : ces registres ne peuvent servir que d’opérande dans une instruction, et le résultat d'une instruction ira obligatoirement dans l'accumulateur.

Ces architectures sont parfois appelées architectures 1-adresse. Cela vient du fait que la grosse majorité des instructions sont des instructions dyadiques, qui n'ont donc besoin de préciser qu'une seule opérande, l'accumulateur étant adressé implicitement.

Micro-architecture[modifier | modifier le code]

Schéma d'une microarchitecture à accumulateur.

L'accumulateur peut être câblé au sein de l'ALU (arithmetic logical unit), un bloc de calcul qui s'occupe des opérations arithmétiques et logiques simples

Dans d'autres cas, cet accumulateur fait partie intégrante d'un banc de registre, avec les autres registres du processeur.

La manière de faire dépend de l'architecture considérée et de sa complexité.

Exemple de programme[modifier | modifier le code]

Le code assembleur 8051 qui suit travaille avec l'accumulateur :

MOV A,R2 ;stocke R2 dans l'accumulateur
ADD A,R4 ;ajoute la valeur de R4 dans l'accumulateur
MOV R5,A ;stocke la valeur de l'accumulateur dans R5

Un autre exemple classique de l'utilisation d'un accumulateur est l'addition d'une liste de nombres. L'accumulateur est mis à zéro et à chaque itération, une valeur est ajoutée à son contenu. À la fin de la boucle, le résultat peut être copié en mémoire ou déplacé dans un autre registre.

Les accumulateurs de diverses architectures[modifier | modifier le code]

  • Sur l'architecture x86, l'accumulateur est le registre AX (16 bits) ou EAX (32 bits).
  • Dans le cas du 8051, l'accumulateur peut recevoir une valeur de 8 bits. Plus de la moitié des instructions du 8051 utilisent l'accumulateur.
  • Architecture limitée basée sur un seul accumulateur : DEC PDP-8 (6 instructions), PAL-III.

Les accumulateurs sont très utilisés sur les DSP actuels. Ces accumulateurs peuvent stocker un grand nombre de bits. Cela permet de gagner en précision numérique : lors de l'enchainement d'une série d'opération, le fait d'avoir un accumulateur pouvant stocker un grand nombre de bits diminue fortement l'apparition de dépassement d'entiers ou d'arrondis (pour les opérations flottantes).

Liens externes[modifier | modifier le code]