
En la unidad central de procesamiento (CPU) de una computadora , el acumulador es un registro en el que se almacenan los resultados de las unidades aritmético-lógicas intermedias .
Sin un registro como un acumulador, sería necesario escribir el resultado de cada cálculo (suma, multiplicación, desplazamiento , etc.) en la memoria caché o principal , tal vez solo para ser leído inmediatamente después para su uso en la siguiente operación. [ 1 ]
El acceso a la memoria principal es más lento que el acceso a un registro como un acumulador, ya que la tecnología utilizada para la memoria principal es más lenta (pero más barata) que la utilizada para un registro. Los primeros sistemas informáticos electrónicos solían dividirse en dos grupos: aquellos con acumuladores y aquellos sin ellos.
Los sistemas informáticos modernos suelen tener varios registros de propósito general que pueden funcionar como acumuladores, y el término ya no es tan común como antes. Sin embargo, para simplificar su diseño, algunos procesadores de propósito específico todavía utilizan un único acumulador.
Concepto básico
Las operaciones matemáticas suelen realizarse paso a paso, utilizando los resultados de una operación como entrada para la siguiente. Por ejemplo, el cálculo manual de la nómina semanal de un trabajador podría ser algo así:
- Consulta el número de horas trabajadas en la tarjeta de registro horario del empleado.
- buscar la tasa de pago de ese empleado en una tabla
- Multiplica las horas por la tarifa de pago para obtener su salario semanal básico.
- multiplicar su salario base por un porcentaje fijo para tener en cuenta el impuesto sobre la renta
- resta esa cantidad de su salario base para obtener su salario semanal después de impuestos.
- Multiplica ese resultado por otro porcentaje fijo para tener en cuenta los planes de jubilación.
- resta esa cantidad de su salario base para obtener su salario semanal después de todas las deducciones.
Un programa informático que realizara la misma tarea seguiría la misma secuencia básica de operaciones, aunque los valores consultados estarían almacenados en la memoria del ordenador. En los primeros ordenadores, el número de horas probablemente se guardaba en una tarjeta perforada y la tarifa de pago en algún otro tipo de memoria, quizás un tambor magnético . Una vez completada la multiplicación, el resultado debe almacenarse en algún lugar. En el caso de un tambor, probablemente se devolvería al tambor, una operación que consume bastante tiempo. A continuación, la siguiente operación tiene que leer ese valor, lo que introduce otro retraso considerable.
Los acumuladores mejoran drásticamente el rendimiento en sistemas como estos, ya que proporcionan un área de almacenamiento temporal donde los resultados de una operación se pueden utilizar en la siguiente con una mínima o nula pérdida de rendimiento. En el ejemplo anterior, el salario semanal básico se calcularía y se almacenaría en el acumulador, que luego podría utilizarse inmediatamente para el cálculo del impuesto sobre la renta. Esto elimina una operación de guardado y una de lectura de la secuencia, operaciones que generalmente tardaban entre decenas y cientos de veces más que la propia multiplicación.
Máquinas acumuladoras
Una máquina acumuladora , también llamada máquina de un operando o CPU con arquitectura basada en acumulador , es un tipo de CPU donde, aunque puede tener varios registros, almacena principalmente los resultados de los cálculos en un registro especial, generalmente llamado "el acumulador". Casi todas las primeras computadoras eran máquinas acumuladoras. Algunas tenían dos acumuladores con nombres distintos, [ a ] algunas tenían más de dos registros llamados acumuladores, referidos por números. [ b ] Luego, con la introducción de los microprocesadores , las arquitecturas de acumulador volvieron a ser populares, siendo el MOS 6502 un ejemplo notable. Muchos microcontroladores de 8 bits que aún son populares en 2014Los microcontroladores como el PICmicro y el 8051 son máquinas basadas en acumuladores.
Las CPU modernas suelen ser máquinas de 2 o 3 operandos. Los operandos adicionales especifican cuál de los numerosos registros de propósito general (también llamados "acumuladores de propósito general" [ 2 ] o "acumuladores" [ 3 ] [ 4 ] ) se utiliza como origen y destino de los cálculos. Estas CPU no se consideran "máquinas de acumuladores".
La característica que distingue a un registro como acumulador de una arquitectura de computadora es que dicho acumulador (si la arquitectura lo incluyera) se usaría como operando implícito para las instrucciones aritméticas . Por ejemplo, una CPU podría tener una instrucción como: que suma el valor leído de la ubicación de memoria memaddress al valor almacenado en el acumulador, guardando el resultado nuevamente en este. El acumulador no se identifica en la instrucción mediante un número de registro; es implícito y no se puede especificar ningún otro registro. Algunas arquitecturas utilizan un registro específico como acumulador en ciertas instrucciones, mientras que otras utilizan números de registro para la especificación explícita del operando.ADD memaddress
Historia del acumulador informático
Cualquier sistema que utilice una única «memoria» para almacenar el resultado de múltiples operaciones puede considerarse un acumulador. J. Presper Eckert se refiere incluso a las primeras máquinas de sumar de Gottfried Leibniz y Blaise Pascal como sistemas basados en acumuladores. [ 5 ] Percy Ludgate fue el primero en concebir un multiplicador-acumulador (MAC) en su Máquina Analítica de 1909. [ 6 ]
La convención histórica dedica un registro al "acumulador", un "órgano aritmético" que literalmente acumula su número durante una secuencia de operaciones aritméticas:
- «La primera parte de nuestro órgano aritmético... debería ser un órgano de almacenamiento paralelo capaz de recibir un número y sumarlo al que ya contiene, que además pueda borrar su contenido y almacenar lo que contiene. Llamaremos a dicho órgano Acumulador. En principio, es un sistema bastante convencional en las máquinas de cálculo pasadas y presentes de los tipos más variados, como las multiplicadoras de escritorio, los contadores estándar de IBM, las máquinas de relés más modernas y la ENIAC» (Goldstine y von Neumann, 1946; pág. 98 en Bell y Newell, 1971).
Por ejemplo, algunas de las instrucciones son (con cierta interpretación moderna):
- Borrar el acumulador y sumar el número de la ubicación de memoria X
- Borrar el acumulador y restar el número de la ubicación de memoria X
- Sumar el número copiado de la ubicación de memoria X al contenido del acumulador.
- Resta el número copiado de la ubicación de memoria X del contenido del acumulador.
- Borrar el acumulador y transferir el contenido del registro al acumulador.
No existe una convención para nombrar las operaciones de registro a acumulador y viceversa. Tradicionalmente ( por ejemplo, en la hipotética computadora MIX de Donald Knuth , 1973 ), se utilizan dos instrucciones: " cargar acumulador desde registro/memoria" ("LDA r") y " almacenar acumulador en registro/memoria" ("STA r"). El modelo de Knuth también incluye muchas otras instrucciones.
Computadoras notables basadas en acumuladores

La configuración de ENIAC de 1945 tenía 20 acumuladores, que podían operar en paralelo. [ 7 ] : 46 Cada uno podía almacenar un número de ocho dígitos decimales y sumarle (o restarle) un número que recibiera. [ 7 ] : 33 La mayoría de las primeras computadoras "científicas" binarias de IBM, comenzando con la IBM 701 de tubos de vacío en 1952, usaban un solo acumulador de 36 bits , junto con un registro multiplicador/cociente separado para manejar operaciones con resultados más largos. La IBM 650 , una máquina decimal, tenía un distribuidor de 10 dígitos y dos acumuladores de diez dígitos; la IBM 7070 , una máquina decimal transistorizada posterior, tenía tres acumuladores. El IBM System/360 y el PDP-6 de Digital Equipment Corporation tenían 16 registros de propósito general, aunque el PDP-6 y su sucesor, el PDP-10 , los llaman acumuladores. La serie GE-600 era una máquina de un solo acumulador, que destacaba por tener ocho potentes registros de direcciones etiquetadas para acceder a un segundo operando.
El PDP-8 de 12 bits fue uno de los primeros miniordenadores en usar acumuladores e inspiró muchas máquinas posteriores. [ 8 ] El PDP-8 tenía un solo acumulador. El HP 2100 y el Data General Nova tenían 2 y 4 acumuladores. El Nova se creó cuando este sucesor del PDP-8 fue rechazado en favor de lo que se convertiría en el PDP-11 . El Nova proporcionaba cuatro acumuladores, AC0-AC3, aunque AC2 y AC3 también podían usarse para proporcionar direcciones de desplazamiento, tendiendo a una mayor generalidad de uso para los registros. El PDP-11 tenía 8 registros de propósito general, en línea con el System/360 y el PDP-10; la mayoría de las máquinas CISC y RISC posteriores proporcionaron múltiples registros de propósito general.
Los primeros microprocesadores de 4 y 8 bits, como el 4004 , el 8008 y muchos otros, solían tener un solo acumulador. El microcontrolador 8051 tiene dos: un acumulador primario y un acumulador secundario. El segundo se utiliza únicamente en las instrucciones de multiplicación (MUL AB) o división (DIV AB); el primero divide el resultado de 16 bits entre los dos acumuladores de 8 bits, mientras que el segundo almacena el cociente en el acumulador primario A y el resto en el acumulador secundario B. Como descendientes directos del 8008, el 8080 y el 8086 , los modernos y omnipresentes procesadores Intel x86 siguen utilizando el acumulador primario EAX y el secundario EDX para la multiplicación y división de números grandes. Por ejemplo, MUL ECX multiplica los registros de 32 bits ECX y EAX y divide el resultado de 64 bits entre EAX y EDX. Sin embargo, MUL y DIV son casos especiales; otras instrucciones aritmético-lógicas (ADD, SUB, CMP, AND, OR, XOR, TEST) pueden especificar cualquiera de los ocho registros EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI como acumulador (es decir, operando izquierdo y destino). La memoria puede usarse como acumulador si se usa un registro o un inmediato como fuente. Esto también es compatible con la multiplicación si no se requiere la mitad superior del resultado. x86 es, por lo tanto, una arquitectura de registro bastante general, a pesar de estar basada en un modelo de acumulador. [ 9 ] La extensión de 64 bits de x86, x86-64 , se ha generalizado aún más a 16 en lugar de 8 registros generales.
Notas explicativas
- ↑ Por ejemplo,
- Acumulador A, Acumulador B
- A (acumulador), MQ (cociente multiplicador)
- A (acumulador), Q (cociente)
- Acumulador superior, acumulador inferior
- ↑ Por ejemplo,
- Acumuladores 1-3 en los procesadores IBM 7070, 7072 y 7074.
Referencias
- ↑ Este artículo se basa en material tomado de Accumulator en el Free On-line Dictionary of Computing antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" de la GFDL , versión 1.3 o posterior.
- ↑ "Descripción general del HC16" . Freescale.com. Archivado del original el 28 de septiembre de 2007. Consultado el 22 de septiembre de 2008 .
- ↑ Manual del Procesador de Datos Programado-6 (PDF) . Digital Equipment Corporation . Agosto de 1964. págs. 20, 22.
- ↑ Libro 1 Programación con el conjunto de instrucciones del PDP-10 (PDF) . Manual de referencia del PDP-10. Digital Equipment Corporation . 1969. pág. 9.
- ↑ J. Presper Eckert, "Un estudio de los sistemas de memoria de computadoras digitales", IEEE Annals of the History of Computing, 1988, pp. 15-28.
- ↑ "La viabilidad de la máquina analítica de Ludgate" .
- 1 2 Haigh, Thomas; Priestley, Mark; Ropefir, Crispin (2016). ENIAC en acción: Creando y rehaciendo la computadora moderna . MIT Press. ISBN 9780262334419.
- ↑ Manual del Procesador de Datos Programado-1 (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, pág. 7: Diagrama de bloques del sistema PDP-1, archivado (PDF) del original el 09/10/2022 , recuperado el 03/07/2014.
- ↑ Irvine, Kip R. (2007). Lenguaje ensamblador para computadoras basadas en Intel (5.ª ed.). Pearson Prentice Hall. págs. 633, 622. ISBN 978-0-13-238310-3.
- Goldstine, Herman H. y von Neumann, John , «Planificación y codificación de los problemas para un instrumento de computación electrónica», Informe de 1947, Instituto de Estudios Avanzados , Princeton. Reimpreso en las págs. 92-119 en Bell, C. Gordon y Newell, Allen (1971), Estructuras informáticas: lecturas y ejemplos , McGraw-Hill Book Company, Nueva York. ISBN 0-07-004357-4}. Un auténtico tesoro de descripciones detalladas de máquinas antiguas, incluyendo fotografías.
- unidad central de procesamiento
- Registros digitales