stringtranslate.com

Acumulador (informática)

Calculadora mecánica Walther WSR-16. La fila de ruedas numéricas 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 el caché o en la memoria principal , tal vez solo para leerlo nuevamente y 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 grande es más lenta (pero más barata) que la utilizada para un registro. Los primeros sistemas informáticos electrónicos a menudo se dividían en dos grupos, los que tenían acumuladores y los que no.

Los sistemas informáticos modernos suelen tener múltiples registros de uso general que pueden funcionar como acumuladores, y el término ya no es tan común como lo era antes. Sin embargo, para simplificar su diseño, varios procesadores especiales todavía utilizan un único acumulador.

Concepto basico

Las operaciones matemáticas a menudo se realizan de forma gradual, 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 verse así:

  1. buscar el número de horas trabajadas en la tarjeta de tiempo del empleado
  2. buscar la tasa de pago de ese empleado en una tabla
  3. multiplique las horas por la tarifa salarial para obtener su salario semanal básico
  4. multiplicar su salario básico por un porcentaje fijo para contabilizar 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. multiplique ese resultado por otro porcentaje fijo para contabilizar los planes de jubilación
  7. reste ese número de su salario básico para obtener su pago semanal después de todas las deducciones

Un programa de computadora que realizara la misma tarea seguiría la misma secuencia básica de operaciones, aunque todos los valores buscados estarían almacenados en la memoria de la computadora. En las primeras computadoras, la cantidad de horas probablemente se guardaba 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 enviar a la siguiente con poca o ninguna penalización en el rendimiento. En el ejemplo anterior, el salario semanal básico se calcularía y se colocaría en el acumulador, que luego podría usarse inmediatamente para el cálculo del impuesto sobre la renta. Esto elimina una operación de guardar y una de lectura de la secuencia, operaciones que generalmente tardaban 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 acumulador , es un tipo de CPU donde, aunque puede tener varios registros, la CPU almacena principalmente los resultados de los cálculos en un registro especial, típicamente llamado "el acumulador". Casi todas las primeras computadoras [ se necesita aclaración ] eran máquinas de acumulación y sólo las " supercomputadoras " de alto rendimiento tenían registros múltiples. 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 a partir de 2014 , 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 muchos registros de propósito general (también llamados "acumuladores de propósito general" [1] ) se utilizan como origen y destino para los cálculos. Estas CPU no se consideran "máquinas de acumulación".

La característica que distingue a un registro como acumulador de una arquitectura de computadora es que el acumulador (si la arquitectura tuviera uno) se usaría como operando implícito para instrucciones aritméticas . Por ejemplo, una CPU podría tener una instrucción como: que suma el valor leído desde la dirección mema de la ubicación de la memoria al valor en el acumulador, colocando el resultado nuevamente en el acumulador. El acumulador no está identificado en la instrucción mediante 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 utilizan un registro particular como acumulador en algunas instrucciones, pero otras instrucciones utilizan números de registro para la especificación explícita de operandos.ADD memaddress

Historia del acumulador de computadora.

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 acumulador multiplicador (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 sumarlo al que ya está en él, que también sea capaz de borrar su contenido y que pueda almacenar lo que contiene. A este órgano lo llamamos acumulador. Es bastante convencional en principio en las máquinas informáticas pasadas y presentes de los más variados tipos, por ejemplo, multiplicadores de escritorio, contadores estándar de IBM, máquinas de retransmisión 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):

No existe ninguna convención con respecto a los nombres de las operaciones de registros a acumulador y de acumulador a registros. La tradición (por ejemplo, la hipotética computadora MIX de Donald Knuth (1973) ), por ejemplo, utiliza dos instrucciones llamadas cargar el acumulador desde el registro/memoria (por ejemplo, "LDA r") y almacenar el acumulador en el 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 funcionar en paralelo. [4] : 46  Cada uno podrí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 tubo de vacío IBM 701 en 1952, usaban un único 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.

El PDP-8 de 12 bits fue uno de los primeros miniordenadores en utilizar acumuladores e inspiró 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 . Nova proporcionó cuatro acumuladores, AC0-AC3, aunque AC2 y AC3 también podrían usarse para proporcionar direcciones de compensación, tendiendo hacia una mayor generalidad de uso de los registros. El PDP-11 tenía 8 registros de propósito general, similar al System/360 y PDP-10; la mayoría de las máquinas CISC y RISC posteriores proporcionaron múltiples registros de uso general.

Los primeros microprocesadores de 4 y 8 bits, como el 4004 , el 8008 y muchos otros, normalmente tenían acumuladores únicos. El microcontrolador 8051 tiene dos, un acumulador primario y un acumulador secundario, donde el segundo se usa por instrucciones sólo 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 omnipresentes procesadores Intel x86 modernos todavía 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 ECX y EAX de 32 bits 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 tanto, una arquitectura de registro bastante general, a pesar de estar basada en un modelo de 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.
  3. ^ "La viabilidad de la máquina analítica de Ludgate".
  4. ^ ab Haigh, Thomas; Priestley, Marcos; Ropefir, Crispin (2016). ENIAC en acción: creación y reconstrucción de la computadora moderna . Prensa del MIT. ISBN 9780262334419.
  5. ^ Manual del procesador de datos programado-1 (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, p. 7: Diagrama de bloques del sistema PDP-1, archivado (PDF) del original el 9 de octubre de 2022 , consultado el 3 de julio de 2014
  6. ^ 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.