Acumulador (informática)

Registro en el que se almacenan los resultados aritméticos y lógicos intermedios de una CPU
Calculadora mecánica Walther WSR-16. La fila de ruedas de dígitos en el carro (en la parte delantera) es el acumulador.

En la unidad central de procesamiento (CPU) de una computadora , el acumulador es un registro en el que se almacenan los resultados de la unidad lógica aritmética intermedia .

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 , quizás sólo para volver a leerlo para usarlo en la siguiente operación.

El acceso a la memoria es más lento que el acceso a un registro, como un acumulador, porque la tecnología utilizada para la memoria principal de gran tamaño es más lenta (pero más barata) que la utilizada para un registro. Los primeros sistemas informáticos electrónicos se dividían a menudo en dos grupos: los que tenían acumuladores y los que no los tenían.

Los sistemas informáticos modernos suelen tener varios registros de uso 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, varios procesadores de uso especial todavía utilizan un solo acumulador.

Concepto básico

Las operaciones matemáticas suelen realizarse de forma escalonada, utilizando los resultados de una operación como entrada para la siguiente. Por ejemplo, un cálculo manual de la nómina semanal de un trabajador podría ser algo así:

  1. Busque el número de horas trabajadas en la tarjeta de tiempo del empleado
  2. Busque la tasa de pago de ese empleado en una tabla
  3. Multiplica las horas por la tasa de pago para obtener su salario semanal básico.
  4. multiplicar su salario básico por un porcentaje fijo para tener en cuenta el impuesto sobre la renta
  5. Reste ese número de su salario básico para obtener su salario semanal después de impuestos.
  6. Multiplica ese resultado por otro porcentaje fijo para tener en cuenta los planes de jubilación.
  7. Reste ese número de su salario básico para obtener su salario semanal después de todas las deducciones

Un programa informático que llevara a cabo la misma tarea seguiría la misma secuencia básica de operaciones, aunque los valores que se buscaran se almacenarían todos en la memoria del ordenador. En los primeros ordenadores, el número de horas probablemente se guardaría en una tarjeta perforada y la tasa de pago en alguna otra forma de memoria, tal vez un tambor magnético . Una vez que se completa la multiplicación, el resultado debe colocarse en algún lugar. En una "caja de ritmos", esto probablemente sería volver al tambor, una operación que lleva un tiempo considerable. Luego, la siguiente operación tiene que volver a leer ese valor, lo que introduce otro retraso considerable.

Los acumuladores mejoran drásticamente el rendimiento en sistemas como estos al proporcionar un área de borrador donde los resultados de una operación se pueden pasar a la siguiente con poca o ninguna penalización de rendimiento. En el ejemplo anterior, se calcularía el salario semanal básico y se colocaría en el acumulador, que luego podría usarse inmediatamente para el cálculo del impuesto a las ganancias. Esto elimina una operación de guardado y una de lectura de la secuencia, operaciones que generalmente demoraban entre decenas y cientos de veces más que la multiplicación misma.

Máquinas acumuladoras

Una máquina acumuladora , también llamada máquina de 1 operando o CPU con arquitectura basada en acumuladores , es un tipo de CPU en la que, aunque puede tener varios registros, la CPU almacena principalmente los resultados de los cálculos en un registro especial, normalmente llamado "el acumulador". Casi todas las primeras computadoras [ aclaración necesaria ] eran máquinas acumuladoras y solo las " supercomputadoras " de alto rendimiento tenían múltiples registros. Luego, cuando los sistemas mainframe dieron paso a las microcomputadoras , las arquitecturas de acumuladores volvieron a ser populares, siendo el MOS 6502 un ejemplo notable. Muchos microcontroladores de 8 bits que siguen siendo populares en 2014 , como el PICmicro y el 8051 , son máquinas basadas en acumuladores.[actualizar]

Las CPU modernas suelen ser máquinas de 2 o 3 operandos. Los operandos adicionales especifican cuál de los muchos registros de propósito general (también llamados "acumuladores de propósito general" [1] ) se utilizan como origen y destino de los cálculos. Estas CPU no se consideran "máquinas acumuladoras".

La característica que distingue a un registro como acumulador de una arquitectura informática es que el acumulador (si la arquitectura tuviera uno) se usaría como un operando implícito para 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 en el acumulador, colocando el resultado nuevamente en el acumulador. El acumulador no se identifica en la instrucción por un número de registro; está implícito en la instrucción y no se puede especificar ningún otro registro en la instrucción. Algunas arquitecturas usan un registro particular como acumulador en algunas instrucciones, pero otras instrucciones usan números de registro para la especificación explícita de operandos.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 sumadoras de Gottfried Leibniz y Blaise Pascal como sistemas basados ​​en acumuladores. [2] Percy Ludgate fue el primero en concebir un multiplicador-acumulador (MAC) en su Máquina Analítica de 1909. [3]

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 que pueda recibir un número y añadirlo al que ya está en él, que también sea capaz de borrar su contenido y que pueda almacenar lo que contiene. Llamaremos a este órgano un acumulador. Es bastante convencional en principio en las máquinas de computación pasadas y presentes de los más variados tipos, por ejemplo, multiplicadores de escritorio, contadores estándar de IBM, máquinas de relé más modernas, el ENIAC" (Goldstine y von Neumann, 1946; p. 98 en Bell y Newell 1971).

Algunas de las instrucciones son, por ejemplo (con alguna interpretación moderna):

  • Limpiar el acumulador y agregar el número desde la ubicación de memoria X
  • Borrar el acumulador y restar el número de la ubicación de memoria X
  • Añade el número copiado desde la ubicación de memoria X al contenido del acumulador
  • Restar el número copiado de la ubicación de memoria X del contenido del acumulador
  • Limpiar el acumulador y trasladar el contenido del registro al acumulador

No existe ninguna convención en cuanto a los nombres de las operaciones de registros a acumulador y de acumulador a registros. La tradición (por ejemplo, la computadora hipotética MIX de Donald Knuth (1973) ), por ejemplo, utiliza dos instrucciones llamadas cargar acumulador desde registro/memoria (por ejemplo, "LDA r") y almacenar acumulador en registro/memoria (por ejemplo, "STA r"). El modelo de Knuth también tiene muchas otras instrucciones.

Computadoras basadas en acumuladores notables

Panel frontal de una computadora IBM 701 con luces que muestran el acumulador y otros registros

La configuración de 1945 de ENIAC tenía 20 acumuladores, que podían operar en paralelo. [4] : 46  Cada uno podía almacenar un número de ocho dígitos decimales y sumarle (o restarle) un número que recibiera. [4] : 33  La mayoría de las primeras computadoras "científicas" binarias de IBM, comenzando con el IBM 701 de tubo 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. El IBM 650 , una máquina decimal, tenía un distribuidor de 10 dígitos y dos acumuladores de diez dígitos; el 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.

El PDP-8 de 12 bits fue uno de los primeros miniordenadores en utilizar acumuladores, e inspiró a muchas máquinas posteriores. [5] 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 esta continuación del PDP-8 fue rechazada 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 utilizarse para proporcionar direcciones de desplazamiento, tendiendo hacia una mayor generalidad de uso para los registros. El PDP-11 tenía 8 registros de propósito general, en la línea del System/360 y el PDP-10; la mayoría de las máquinas CISC y RISC posteriores proporcionaban 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 acumuladores individuales. El microcontrolador 8051 tiene dos, un acumulador primario y un acumulador secundario, donde el segundo se utiliza solo para las instrucciones al multiplicar (MUL AB) o dividir (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 descendiente directo del 8008, el 8080 y el 8086 , los modernos y omnipresentes procesadores Intel x86 aún utilizan el acumulador primario EAX y el acumulador secundario EDX para la multiplicación y división de números grandes. Por ejemplo, MUL ECX multiplicará los registros de 32 bits ECX y EAX y dividirá 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). Esto también se admite para multiplicar si no se requiere la mitad superior del resultado. x86 es, por lo tanto, una arquitectura de registros bastante general, a pesar de estar basada en un modelo acumulador. [6] 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.

Referencias

  1. ^ "Descripción general del HC16". Freescale.com. Archivado desde el original el 28 de septiembre de 2007. Consultado el 22 de septiembre de 2008 .
  2. ^ J. Presper Eckert, "Un estudio de los sistemas de memoria de computadoras digitales", IEEE Annals of the History of Computing, 1988, págs. 15-28.
  3. ^ "La viabilidad de la máquina analítica de Ludgate".
  4. ^ ab Haigh, Thomas; Priestley, Mark; Ropefir, Crispin (2016). ENIAC en acción: creación y reconstrucción de la computadora moderna . MIT Press. ISBN 9780262334419.
  5. ^ Programmed Data Processor-1 Manual (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, p. 7: Diagrama de bloques del sistema PDP-1, archivado (PDF) del original el 2022-10-09 , consultado el 2014-07-03
  6. ^ Irvine, Kip R. (2007). Lenguaje ensamblador para computadoras basadas en Intel (5.ª ed.). Pearson Prentice Hall. pp. 633, 622. ISBN 978-0-13-238310-3.
  • Goldstine, Herman H., y von Neumann, John, "Planning and Coding of the Problems for an Electronic Computing Instrument", Rep. 1947, Institute for Advanced Study , Princeton. Reimpreso en las págs. 92-119 en Bell, C. Gordon y Newell, Allen (1971), Computer Structures: Readings and Examples , McGraw-Hill Book Company, Nueva York. ISBN 0-07-004357-4 }. Un verdadero tesoro de descripciones detalladas de máquinas antiguas, incluidas fotografías. 
Obtenido de "https://es.wikipedia.org/w/index.php?title=Acumulador_(informática)&oldid=1203898536"