Articles

Quest-ce que laccumulateur?

Meilleure réponse

Un accumulateur est un objet qui gardera de façon incrémentielle les sommes, les décomptes nécessaires au calcul efficace des moyennes, de lécart type, des minutes , max etc ,. plutôt que davoir à recalculer à chaque fois.

Réponse

Permettez-moi daffiner légèrement votre question: Quelle est la différence entre une architecture de jeu dinstructions daccumulateur et une architecture de jeu dinstructions de registre à usage général?

Ceux-ci représentent deux points dans lespace de conception pour les jeux dinstructions. Considérez ce quune instruction CPU doit faire. Pour linstant, considérez simplement les instructions de de calcul . Au minimum, il doit fournir les informations suivantes:

  • Quels calculs effectuer (ajouter, soustraire, déplacer, comparer)
  • Sur quelles valeurs effectuer le calcul ( les entrées du calcul)
  • Où mettre le résultat (la sortie du calcul)

Par exemple, si jai écrit linstruction de programme de haut niveau X = Y + Z, vous devez dire au processeur de récupérer les valeurs contenues dans Y et Z, les ajouter et écrire le résultat dans X.

Dans une architecture daccumulateurs, la plupart les instructions de calcul opèrent sur un registre spécial appelé laccumulateur. Par conséquent, la plupart des opérations ont laccumulateur comme argument implicite de linstruction. Laccumulateur fournit une entrée à linstruction, reçoit la sortie de linstruction, ou les deux. Pour exécuter X = Y + Z sur une machine à accumulateur, la séquence dinstructions ressemblerait à peu près à ceci:

  • Charger Y dans laccumulateur
  • Ajouter Z à laccumulateur
  • Stocker laccumulateur à X

Si javais une expression plus complexe, telle que « I = J + K + L + M + N + O « , la séquence pourrait ressembler à ceci:

  • Charger J dans laccumulateur
  • Ajouter K à laccumulateur
  • Ajouter L au accumulateur
  • Ajouter M à laccumulateur
  • Ajouter N à laccumulateur
  • Ajouter O à laccumulateur
  • Stocker laccumulateur à I

Comme la plupart des opérations impliquent laccumulateur, vous navez pas besoin de dédier de bits dopcode pour le spécifier. Comme je lai déjà mentionné, laccumulateur est implicite . De plus, dans la machine elle-même, laccumulateur pourrait être intégré directement dans lunité arithmétique elle-même, ce qui simplifie le matériel.

Dans une architecture de registre à usage général, calculer linstruction s prennent plusieurs arguments pour spécifier les registres à partir desquels lire les valeurs. Cela les rend plus flexibles. Mais la flexibilité a un coût: vous avez besoin de plus de bits dopcode pour spécifier sur quels registres opérer, et vous devez fournir des chemins pour tous ces registres vers lunité arithmétique.

Pour les exemples dexpressions ci-dessus , le code finit par ne pas être très différent:

  • Charger Y dans le registre R0
  • Charger Z dans le registre R1
  • Ajouter R0 à R1, en mettant le résultat dans R2
  • Stocker R2 sur X

Les machines de registre à usage général commencent à montrer un avantage lorsque vous pouvez conserver des valeurs dans des registres à travers de nombreuses opérations. Par exemple, supposons que je veuille exécuter ce programme un peu plus compliqué:

X = A + B

Y = A - B

Dans une machine à accumulateur, je devrais recharger A et B pour les deux opérations. Dans une machine à usage général, je ne chargerais A et B quune seule fois.

Dans les machines de registre à usage général, il existe également plusieurs variétés: (Cette liste nest pas exhaustive; aussi, certaines architectures mélangent ces concepts. )

  • Register-Memory: un opérande provient dun registre et un opérande de la mémoire.
  • Register-Register, 2-address: les deux opérandes proviennent de registres, mais le résultat doit écraser lune des entrées.
  • Register-Register, 3-address: les deux opérandes proviennent de registres, et le résultat peut aller dans son propre registre.

Le processeur x86, par exemple, est une machine Register-Memory qui offre également des instructions Register-Register à 2 adresses. La plupart des machines RISC sont des machines de registre-registre à 3 adresses, avec des instructions de chargement / stockage séparées. Les deux sont des machines de registre à usage général.

Comparez-les au 6502 , qui est une machine à accumulateur. La plupart des arithmétiques (addition, soustraction, rotation et décalage) opèrent sur le registre A. Les deux autres registres, X et Y, ne prennent en charge que lincrémentation, la décrémentation et la comparaison; ils « sont principalement utilisés pour indexer la mémoire et les compteurs de boucles.

Un troisième type darchitecture que vous navez pas mentionné est l architecture de pile . Une architecture de pile est similaire à une architecture daccumulateur en ce que tout le calcul est concentré sur un seul point. La différence est quune architecture de pile lit toujours ses arguments à partir dune pile et place toujours ses résultats sur la pile.Les entrées et les sorties dune instruction de calcul sont implicites. Dautres instructions doivent ensuite gérer le transfert des valeurs et les extraire de la pile.

Vous ne trouvez pas beaucoup darchitectures de pile dans les puces réelles. Mais elles sont populaires dans les interpréteurs (bytecode Java, par exemple , ou FORTH) et dans certaines calculatrices telles que les calculatrices HP basées sur RPN.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *