Acumulador (informática)
# Acumulador (informática)

En una CPU de computadora, el acumulador es un registro en el que son almacenados temporalmente los resultados aritméticos y lógicos intermedios que serán tratados por el circuito operacional de la unidad aritmético-lógica (ALU).

Sin un registro como un acumulador, sería necesario escribir el resultado de cada cálculo, como adición, multiplicación, desplazamiento,etc.... en la memoria principal, quizás justo para ser leída inmediatamente otra vez para su uso en la siguiente operación. El acceso a la memoria principal es significativamente más lento que el acceso a un registro como el acumulador porque la tecnología usada para la memoria principal es más lenta y barata que la usada para un registro interno del CPU.

El ejemplo canónico para el uso del acumulador es cuando se suma una lista de números. El acumulador es puesto inicialmente a cero, entonces cada número es sumado al valor en el acumulador. Solamente cuando se han sumado todos los números, el resultado mantenido en el acumulador es escrito a la memoria principal o a otro, registro no-acumulador del CPU.

Los procesadores modernos generalmente tienen muchos registros, todos o muchos de ellos pueden ser capaces de ser utilizados para los cálculos. En una arquitectura de computadora, la característica que distingue un registro acumulador de uno que no lo sea, es que el acumulador puede ser usado como operando implícito para las instrucciones aritméticas (si la arquitectura fuera a tener alguno).

Por ejemplo, una computadora puede tener una instrucción como:

          Add DireccionDeMemoria

Esta instrucción agregaría el valor leído en la posición de memoria indicada en DireccionDeMemoria al valor del acumulador, poniendo el resultado en el acumulador. El acumulador no es identificado en la instrucción por un número del registro; es implícito en la instrucción y ningún otro registro puede ser especificado en la instrucción. Algunas arquitecturas utilizan un registro particular como acumulador en algunas instrucciones, pero en otras instrucciones usan números de registros como especificación explícita del operando.

## Notables computadores basados en acumulador

El PDP-8, de 12 bits, fue uno de los primeros minicomputadores en usar acumuladores, e inspiró a muchas máquinas posteriores. El PDP-8 tenía solo un acumulador. El HP 2100 y el Data General Nova tenían 2 y 4 acumuladores. El Nova fue creado cuando fue rechazada la continuación del PDP-8 en favor de lo que se convirtió en el PDP-11. El Nova proporcionó cuatro acumuladores, AC0-AC3, aunque AC2 y AC3 también podían ser usados para proporcionar direcciones de desplazamiento (offset), tendiendo hacia el uso más general de los registros. El PDP-11 introdujo lo que generalmente es considerado ser un modelo más elegante y más contemporáneo de registros generales verdaderos, numerados R0-R7 o más, y también adoptados por la mayoría de las máquinas RISC tales como el Power PC. Los microprocesadores Intel 4004 de 4 bits y el Intel 8080 de 8 bits tenía acumuladores simples.

La arquitectura con el conjunto de instrucciones más común hoy en día, el Intel x86 usa el registro EAX de 32 bits (o uno de sus subcomponentes AX o AL, con parte o todo el registro EDX de 32 bits, para la multiplicación de grandes números), pero para otras instrucciones aritméticas EAX es uno de varios registros que puedan ser especificados. Por ejemplo, MUL ECX multiplicará el contenido del registro ECX de 32 bits por el de EAX y repartirá el resultado entre los registros EAX y EDX (para un total de 64 bits, evitando desbordamiento (overflow)). ADD, sin embargo, acepta dos argumentos: ADD ECX, EDX agregará ECX y EDX y pondrá el resultado en ECX, y así mismo para la mayoría de los registros. El x86-64, La variación de 64 bits del x86, se ha generalizado a 16 registros generales, finalmente estando libre del modelo basado en el acumulador original.

