Discuter:Accumulateur (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Cet article est la traduction de la version anglaise. Neanmoins je pense qu'elle est a plusieurs endroits tres mal formulee. L'utilisation du terme "accumulateur" est typiquement reservee aux jeux d'instructions dit "une adresse". Dans la classification des jeux d'instructions on a : les "0 adresse" (machines à pile), "1 adresse" (machines à accumulateur), "registre - mémoire" (un parametre est un registre, l'autre une adresse memoire), "registre - registre " ou les deux (ou plus) parametres sont des registres et leur pendant "mémoire - mémoire". Dans les 0-adresses on sauve en mémoire avec des instructions type "push" et "pop", dans les dernieres avec "load" et "store". Oui, bon, ok, je ferais un article sur le sujet :-)

Je propose donc plutot qq chose comme :


L'accumulateur dénote typiquement le registre principal (et même parfois unique) du chemin de données des ordinateurs avec un jeu d'instructions à accumulateur. Pour les ordinateurs ayant un jeu d'instruction de ce type l'utilisation du registre accumulateur, est implicite. Par exemple l'instruction « ADD 100 » provoque l'addition du contenu de la mémoire à l'adresse 100 avec le contenu de l'accumulateur. Certaines instructions, dites à zéro adresse, peuvent aussi référencer l'accumulateur, comme par exemple « CLRA » (pour CLeaR Accumulator en anglais) qui le remet à 0.

Néanmoins on rajoute parfois quelques autres registres, tel qu'un registre intérmédiaire pour la multiplication et la division, ou bien un ou plusieurs registres d'index. Le microprocesseur 6502 est par exemple dans cette classe, comme l'IBM 701.

Le nom Accumulateur provient aussi de la façon dont on s'en sert : comme une mémoire rapide destinée à recevoir le résultat d'opérations arithmétiques consécutives, avant d'être probablement sauvé en mémoire centrale (probablement avant sa remise à zéro et le début d'un nouveau calcul). Mais la notion d'accumulateur provient aussi des premiers ordinateurs dont l'additionneur était sériel. Un additioneur seriel est une solution économique car elle nécessite peu de matériel (quelques portes logiques ET et OU) au détriment des performance : l'additionneur est 1 bit seulement, mais il suffit d'y faire appel autant qu'il y a de bits dans l'accumulateur pour obtenir un résultat. Le diagramme temporel correspondant à l'addition 5 + 7 sur un additioneur seriel sera :

  +---+   +---+ 
  | 1 | 0 | 1 |         5
--+   +---+   +-----------

  +---+---+---+ 
  | 1   1   1 |         7
--+           +-----------

          +-------+ 
    0   0 | 1   1 |     résultat 5 + 7
--+---+---+       +-------

  +-+ +-+ +-+ +-+ +-+
  | | | | | | | | | |   horloge
--+ +-+ +-+ +-+ +-+ +-...

Les premiers ordinateurs, comme l'EDSAC (1949) ou l'IBM 701 (1952)sont des machines à accumulateur. Plus près de nous, le PDP-8 (miniordinateur, 1965), et certains microprocesseurs : 6502, 8051, etc. La première machine avec plusieurs registres (8) est le Pegasus construit par Ferranti en 1956.

(+liens, bibliographie, schema pas ascii, etc.)

Stéphane 12 juillet 2005 à 01:13 (CEST)

Au fait, il y a aussi "cumulande" et "cumulateur"... non ce n'est pas sale ;-) Stéphane 12 juillet 2005 à 02:01 (CEST)


Ça me semble nettement plus logique que l'article actuel, qui me semble trop ignorer le fait que la notion d'accumulateur n'existe plus dans les CPU RISC (et déjà les m68k). Je ne connaissais pas le coup de l'additionneur 1 bit appelé répétitivement, intéressant. Marc Mongenet 12 juillet 2005 à 10:48 (CEST)

reference : http://worldcatlibraries.org/wcpa/ow/2ccc4af95b08de8e.html (desole, visiblement en 1958 il n'y avait pas d'ISBN encore ;-)
Je pense que l'accumulateur doit avoir une définition fonctionnelle, et qu'il faut abandonner la notion d'accumulateur unique ou constituant le registre « principal » (ou alors préciser que c'est le registre principal de données).
L'article devrait effectivement parler de l'origine du terme sur les premiers ordinateurs, mais aussi des derniers processeurs à un seul accumulateur, comme le 8080 d'Intel.
Les processeurs suivants ont été conçus autour de plusieurs registres non différenciés servant d'accumulateurs ; c'est le cas notamment du 8086 qui comporte 4 registres de données, chacun d'eux pouvant être utilisé comme accumulateur. Pour ces processeurs plus évolués, il me semble parfaitement logique de parler de processeur à plusieurs accumulateurs. Gemme 12 juillet 2005 à 11:56 (CEST)
D'accord pour preciser que l'accumulateur peut etre l'unique registre dans le chemin de donnee. Il me semble que par exemple pour certaines des premieres machines il etait accompagne d'un second registre dedie a la multiplication/division. D'accord aussi pour, par exemple, faire une table de machine/microprocesseurs en donnant la description du/des accumulateurs disponible. Pas d'accord pour pour abandonner le terme "accumulateur unique" parce qu'a l'origine, c'etait bien le cas. Autrement on dirait "registre X". Vous aurez remarque mon gout pronnonce pour les aspects historiques ;-) Stéphane 12 juillet 2005 à 15:11 (CEST)
Dans le cas du X86, la division utilise le registre DX et tous les autres registres sont susceptibles d'être introduit dans des opérations arithmétiques ou logiques. On a donc bien plusieurs "accumulateurs". Dake 12 juillet 2005 à 17:50 (CEST)
Tu décris une machine avec des registres généraux (= plusieurs accumulateurs). Stéphane 15 juillet 2005 à 02:53 (CEST)

Dans une référence classique du domaine (ISBN 1-55860-372-7) il y a une classification des jeux d'instructions qui me paraît très pertinente : Dans une architecture à pile une opérande est implicitement au sommet de la pile, dans une architecture à accumulateur, une opérande est implicitement l'accumulateur, dans une architecture à registres généraux les opérandes sont explicites. Ça correspond d'ailleurs à la proposition de Stéphane, mais je trouve intéressant d'ajouter la comparaison en termes d'architecture. Marc Mongenet 12 juillet 2005 à 14:29 (CEST)

Précision : cette classification existait avant le hennessy/patterson, on la retrouve dans ISBN 0-07057-302-6 (pp44 et pp70 à 78, c'est a dire ici et la (tout en bas)). Stéphane 14 juillet 2005 à 01:34 (CEST)
Marc, j'ai fais hier soir 5 schemas (tres) inspires de ceux du hennessy/patterson. Je propose de rediger l'article sur les classes de jeux d'instructions, avec inclusion de ces graphiques (note que j'ai rajoute le graphique "memoire-memoire" et que je commence a accumuler (sic) qq references sur des machines de ce type (au moins le CDC Cyber 200 modele 205, et peut etre l'ETA-10). Entoure de l'article registre (informatique), classe de jeu d'instructions et quelques liens vers les (micro)processeurs idoines, cet article sera de bien meilleure facture que sa version US (meme pas dur ;-) ). Stéphane 12 juillet 2005 à 15:11 (CEST)
La faiblesse de la version anglaise vient probablement du fait qu'elle provient d'une source qui tient plus du dictionnaire spécialisé (FOLDOC) que de l'encyclopédie. Elle décrit plus les usages plus ou moins cohérents du mot accumulateur que le véritable concept cohérent qui se tient derrière. Je suis assez incliné à renommer accumulateur (informatique) en architecture à accumulateur ou processeur à accumulateur, voire architecture de processeur à accumulateur, tout en conservant bien sûr une redirection depuis accumulateur (informatique). Marc Mongenet 12 juillet 2005 à 15:34 (CEST)
Cet article avait plus pour but de donner une définition du terme, avec ses déviations historiques, que de faire toute une théorie sur l'architecture matérielle du processeur en question. Un tel redirect me convient toutefois (vers "architecture à accumulateur"). Je suis étonné de voir autant de discussion autour de ce sujet :) Dake 12 juillet 2005 à 17:50 (CEST)
jeu d'instructions <-- en cours de remodelage. Ca vous irait comme ca ? Cet article resterait conci, et plus de choses seraient ajoutées à jeu d'instructions ou il y a certainement plus à dire. Stéphane 13 juillet 2005 à 03:38 (CEST)
Faudra voir la taille que finira par prendre jeu d'instructions et quelle place trouve les informations dans les divers articles. Marc Mongenet 13 juillet 2005 à 03:50 (CEST)
Je ne sais pas si tu as vu que je viens de refaire le debut de jeu d'instructions, et reussi a caser un lien vrs langage machine... Je pense juste documenter chacune des sous-sections comme la premiere, et rajouter un tres court pararagraphe, (une ou deux phrases max) pour caser RISC et CISC qui ont leur place ici (a cause du IS au milieu :-)). Sur ce, merci de la correction de la typo ci dessus, et dodo time ! (NB. Le VAX est memoire-memoire, super, je viens de finir l'article :-) ). Stéphane 13 juillet 2005 à 04:10 (CEST)

[modifier] Additionneur serie

Pour Marc :

Additionneur serie 1 bit.
Additionneur serie 1 bit.
Chronogramme, addition 5 + 7.
Chronogramme, addition 5 + 7.

a rajouter dans additionneur... pas terrible... en particulier le demi-additioneur avec une entree R. De memoire, le demi additioneur fait a + b = s (+ une retenu) et le "full adder" fait a + b + retenu = S (+ retenu)... et puis le =1 et >=1, ..., le gars a du prendre la table et la codee telle quel. Un demi additioneur c'est un XOR et un ET, il faut en mettre 2 de suite pour faire un full-adder... Je suis bon pour dessiner des additionneurs. C'est sans fin ce truc wikipedia la :-) Stéphane 16 juillet 2005 à 03:30 (CEST)

voila, refait et ajouté dans additionneur, completement refait par la meme occasion, et en cours de correction orthographique pas mes petites mains :-) Reste a rajouter les [[]]... demain ! Stéphane 18 juillet 2005 à 03:41 (CEST)