Accumulateur (informatique) - Accumulator (computing)

Calculatrice mécanique Walther WSR-16. La rangée de roues numériques dans le chariot (à l'avant) est l'accumulateur.

Dans un ordinateur l » unité centrale de traitement (CPU), l' accumulateur est un registre dans lequel intermédiaires unité arithmétique et logique les résultats sont stockés.

Sans un registre comme un accumulateur, il serait nécessaire d'écrire le résultat de chaque calcul (addition, multiplication, déplacement , etc.) à la mémoire principale , peut - être seulement à lire retour à nouveau pour une utilisation dans l'opération suivante.

L'accès à la mémoire principale est plus lent que l'accès à un registre comme un accumulateur car la technologie utilisée pour la grande mémoire principale est plus lente (mais moins chère) que celle utilisée pour un registre. Les premiers systèmes informatiques électroniques étaient souvent divisés en deux groupes, ceux avec accumulateurs et ceux sans.

Les systèmes informatiques modernes ont souvent plusieurs registres à usage général qui peuvent fonctionner comme des accumulateurs, et le terme n'est plus aussi courant qu'auparavant. Cependant, pour simplifier leur conception, un certain nombre de processeurs spécialisés utilisent encore un seul accumulateur.

Concept de base

Les opérations mathématiques se déroulent souvent par étapes, en utilisant les résultats d'une opération comme entrée de la suivante. Par exemple, un calcul manuel de la paie hebdomadaire d'un travailleur peut ressembler à ceci :

  1. rechercher le nombre d'heures travaillées sur la carte de pointage du salarié
  2. rechercher le taux de rémunération de cet employé à partir d'une table
  3. multiplier les heures par le taux de rémunération pour obtenir leur salaire hebdomadaire de base
  4. multiplier leur salaire de base par un pourcentage fixe pour tenir compte de l'impôt sur le revenu
  5. soustrayez ce nombre de leur salaire de base pour obtenir leur salaire hebdomadaire après impôt
  6. multiplier ce résultat par un autre pourcentage fixe pour tenir compte des régimes de retraite
  7. soustrayez ce nombre de leur salaire de base pour obtenir leur salaire hebdomadaire après toutes les déductions

Un programme informatique effectuant la même tâche suivrait la même séquence d'opérations de base, bien que les valeurs recherchées soient toutes stockées dans la mémoire de l'ordinateur. Dans les premiers ordinateurs, le nombre d'heures était probablement enregistré sur une carte perforée et le taux de rémunération dans une autre forme de mémoire, peut-être un tambour magnétique . Une fois la multiplication terminée, le résultat doit être placé quelque part. Sur une « boîte à rythmes », ce serait probablement un retour au tambour, une opération qui prend un temps considérable. Et puis la toute prochaine opération doit relire cette valeur, ce qui introduit un autre retard considérable.

Les accumulateurs améliorent considérablement les performances de systèmes comme ceux-ci en fournissant une zone de bloc-notes où les résultats d'une opération peuvent être transmis à la suivante pour peu ou pas de pénalité de performance. Dans l'exemple ci-dessus, le salaire hebdomadaire de base serait calculé et placé dans l'accumulateur, qui pourrait alors être immédiatement utilisé par le calcul de l'impôt sur le revenu. Cela supprime une opération de sauvegarde et une opération de lecture de la séquence, opérations qui prenaient généralement des dizaines à des centaines de fois plus longtemps que la multiplication elle-même.

Machines à accumuler

Une machine à accumulateur , également appelée machine à 1 opérande , ou CPU avec une architecture basée sur un accumulateur , est une sorte de CPU où, bien qu'elle puisse avoir plusieurs registres, la CPU stocke principalement les résultats des calculs dans un registre spécial, généralement appelé "l'accumulateur". Presque tous les premiers ordinateurs étaient des machines à accumulateurs, seuls les « supercalculateurs » hautes performances ayant plusieurs registres. Puis, alors que les systèmes centraux cédaient la place aux micro - ordinateurs , les architectures d'accumulateurs étaient à nouveau populaires, le MOS 6502 étant un exemple notable. De nombreux microcontrôleurs 8 bits qui sont encore populaires en 2014, tels que le PICmicro et le 8051 , sont des machines à accumulateur.

Les processeurs modernes sont généralement des machines à 2 ou 3 opérandes. Les opérandes supplémentaires spécifient lequel des nombreux registres à usage général (également appelés « accumulateurs à usage général ») est utilisé comme source et destination pour les calculs. Ces processeurs ne sont pas considérés comme des « machines à accumulateur ».

La caractéristique qui distingue un registre comme étant l'accumulateur d'une architecture informatique est que l'accumulateur (si l'architecture devait en avoir un) serait utilisé comme opérande implicite pour les instructions arithmétiques . Par exemple, une CPU peut avoir une instruction comme : qui ajoute la valeur lue à partir de l' adresse mémoire de l'emplacement mémoire à la valeur dans l'accumulateur, replaçant le résultat dans l'accumulateur. L'accumulateur n'est pas identifié dans l'instruction par un numéro de registre ; il est implicite dans l'instruction et aucun autre registre ne peut être spécifié dans l'instruction. Certaines architectures utilisent un registre particulier comme accumulateur dans certaines instructions, mais d'autres instructions utilisent des numéros de registre pour une spécification explicite d'opérande. ADD memaddress

Histoire de l'accumulateur informatique

Tout système qui utilise une seule "mémoire" pour stocker le résultat de plusieurs opérations peut être considéré comme un accumulateur. J. Presper Eckert se réfère même aux premières machines à additionner de Gottfried Leibniz et Blaise Pascal comme des systèmes basés sur des accumulateurs. Percy Ludgate a été le premier à concevoir un multiplicateur-accumulateur (MAC) dans sa machine analytique de 1909.

La convention historique consacre un registre à « l'accumulateur », un « organe arithmétique » qui accumule littéralement son nombre au cours d'une séquence d'opérations arithmétiques :

"La première partie de notre organe arithmétique... devrait être un organe de stockage parallèle qui peut recevoir un nombre et l'ajouter à celui qui s'y trouve déjà, qui est également capable d'effacer son contenu et qui peut stocker ce qu'il contient. Nous allons appelons un tel organe un accumulateur. Il est tout à fait conventionnel en principe dans les machines informatiques passées et présentes des types les plus variés, par exemple les multiplicateurs de bureau, les compteurs IBM standard, les machines relais plus modernes, l'ENIAC" (Goldstine et von Neumann, 1946 ; p 98 dans Bell et Newell 1971).

Quelques-unes des instructions sont, par exemple (avec une interprétation moderne) :

  • Effacer l'accumulateur et ajouter le numéro de l'emplacement de mémoire X
  • Effacer l'accumulateur et soustraire le nombre de l'emplacement mémoire X
  • Ajouter le nombre copié de l'emplacement mémoire X au contenu de l'accumulateur
  • Soustraire le nombre copié de l'emplacement mémoire X du contenu de l'accumulateur
  • Effacer l'accumulateur et déplacer le contenu du registre dans l'accumulateur

Il n'existe aucune convention concernant les noms des opérations des registres vers l'accumulateur et de l'accumulateur vers les registres. La tradition (par exemple l' hypothétique ordinateur MIX de Donald Knuth (1973) ), par exemple, utilise deux instructions appelées charger l'accumulateur du registre/mémoire (par exemple "LDA r") et stocker l'accumulateur dans le registre/mémoire (par exemple "STA r"). Le modèle de Knuth contient également de nombreuses autres instructions.

Ordinateurs à accumulateurs notables

Panneau avant d'un ordinateur IBM 701 avec voyants affichant l'accumulateur et d'autres registres

La configuration 1945 d' ENIAC avait 20 accumulateurs, qui pouvaient fonctionner en parallèle. Chacun pourrait stocker un nombre à huit chiffres décimaux et y ajouter (ou soustraire) un nombre qu'il a reçu. La plupart des premiers ordinateurs "scientifiques" binaires d'IBM, à commencer par le tube à vide IBM 701 en 1952, utilisaient un seul accumulateur 36 bits, ainsi qu'un registre multiplicateur/quotient séparé pour gérer les opérations avec des résultats plus longs. L' IBM 650 , une machine décimale, avait un distributeur à 10 chiffres et deux accumulateurs à dix chiffres ; l' IBM 7070 , une machine décimale à transistors plus récente , avait trois accumulateurs. Le système IBM/360 et le PDP-6 de Digital Equipment Corporation disposaient de 16 registres à usage général, bien que le PDP-6 et son successeur, le PDP-10 , les appellent des accumulateurs.

Le PDP-8 12 bits a été l'un des premiers mini-ordinateurs à utiliser des accumulateurs et a inspiré de nombreuses machines ultérieures. Le PDP-8 n'avait qu'un seul accumulateur. Le HP 2100 et le Data General Nova avaient 2 et 4 accumulateurs. Le Nova a été créé lorsque cette suite du PDP-8 a été rejetée en faveur de ce qui allait devenir le PDP-11 . Le Nova a fourni quatre accumulateurs, AC0-AC3, bien que AC2 et AC3 puissent également être utilisés pour fournir des adresses de décalage, tendant vers une plus grande généralité d'utilisation pour les registres. Le PDP-11 avait 8 registres à usage général, sur le modèle du System/360 et du PDP-10 ; la plupart des machines CISC et RISC ultérieures fournissaient plusieurs registres à usage général.

Les premiers microprocesseurs 4 bits et 8 bits tels que les 4004 , 8008 et de nombreux autres, avaient généralement des accumulateurs uniques. Le microcontrôleur 8051 en a deux, un accumulateur primaire et un accumulateur secondaire, le second n'étant utilisé par des instructions que lors de la multiplication (MUL AB) ou de la division (DIV AB) ; le premier partage le résultat 16 bits entre les deux accumulateurs 8 bits, tandis que le second stocke le quotient sur l'accumulateur primaire A et le reste dans l'accumulateur secondaire B. En tant que descendant direct du 8008, du 8080 et du 8086 , les processeurs Intel x86 modernes et omniprésents utilisent toujours l'accumulateur principal EAX et l'accumulateur secondaire EDX pour la multiplication et la division de grands nombres. Par exemple, MUL ECX multipliera les registres 32 bits ECX et EAX et divisera le résultat 64 bits entre EAX et EDX. Cependant, MUL et DIV sont des cas particuliers ; d'autres instructions arithmétiques et logiques (ADD, SUB, CMP, AND, OR, XOR, TEST) peuvent spécifier l'un des huit registres EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI comme accumulateur (c'est-à-dire opérande gauche et destination). Ceci est également pris en charge pour la multiplication si la moitié supérieure du résultat n'est pas requise. x86 est donc une architecture de registres assez générale, bien qu'elle soit basée sur un modèle d'accumulateur. L'extension 64 bits de x86, x86-64 , a été encore généralisée à 16 au lieu de 8 registres généraux.

Les références

  1. ^ "Aperçu du HC16" . Freescale.com. Archivé de l' original le 28 septembre 2007 . Récupéré le 2008-09-22 .
  2. ^ J. Presper Eckert, "Une enquête sur les systèmes de mémoire informatique numérique", IEEE Annals of the History of Computing, 1988, pp. 15-28.
  3. ^ "La faisabilité de la machine analytique de Ludgate" .
  4. ^ un b Haigh, Thomas; Priestley, Marc ; Ropefir, Crispin (2016). ENIAC en action : faire et refaire l'ordinateur moderne . Presse MIT. ISBN 9780262334419.
  5. ^ Manuel du processeur de données programmé-1 (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, p. 7 : Schéma fonctionnel du système PDP-1 , récupéré le 03/07/2014
  6. ^ Irvine, Kip R. (2007). Langage d'assemblage pour les ordinateurs Intel (5e éd.). Pearson Prentice Hall. p. 633, 622. ISBN 978-0-13-238310-3.
  • Goldstine, Herman H., et von Neumann, John, "Planning and Coding of the Problems for an Electronic Computing Instrument", Rep. 1947, Institute for Advanced Study , Princeton. Réimprimé aux pages 92–119 dans Bell, C. Gordon et Newell, Allen (1971), Computer Structures: Readings and Examples , McGraw-Hill Book Company, New York. ISBN  0-07-004357-4 }. Un véritable trésor de descriptions détaillées de machines anciennes avec photos.