Articles

¿Qué es un acumulador?

Mejor respuesta

Un acumulador es un objeto que realiza un seguimiento incremental de las sumas, recuentos que son necesarios para el cálculo eficiente de medias, desviación estándar, minutos , max, etc. en lugar de tener que recalcular cada vez.

Respuesta

Permíteme refinar un poco tu pregunta: ¿Cuál es la diferencia entre una arquitectura de conjunto de instrucciones de acumulador y una arquitectura de conjunto de instrucciones de registro de propósito general?

Estos representan dos puntos en el espacio de diseño para conjuntos de instrucciones. Considere lo que debe hacer una instrucción de CPU. Por ahora, solo considere las instrucciones de compute . Como mínimo, debe proporcionar la siguiente información:

  • Qué cálculo realizar (sumar, restar, desplazar, comparar)
  • En qué valores realizar el cálculo ( las entradas al cálculo)
  • Dónde poner el resultado (la salida del cálculo)

Por ejemplo, si escribí la declaración de programa de alto nivel X = Y + Z, necesita decirle al procesador que busque los valores contenidos en Y y Z, los sume y escriba el resultado en X.

En una arquitectura de acumulador, la mayoría Las instrucciones de cálculo operan en un registro especial llamado acumulador. La mayoría de las operaciones, por lo tanto, tienen el acumulador como un argumento implícito para la instrucción. El acumulador proporciona una entrada a la instrucción, recibe la salida de la instrucción o ambos. Para ejecutar X = Y + Z en una máquina basada en acumuladores, la secuencia de instrucciones se vería más o menos así:

  • Cargue Y en el acumulador
  • Agregar Z al acumulador
  • Almacenar el acumulador en X

Si tuviera una expresión más compleja, como «I = J + K + L + M + N + O «, la secuencia podría verse así:

  • Cargue J en el acumulador
  • Agregue K al acumulador
  • Agregue L al acumulador
  • Agregue M al acumulador
  • Agregue N al acumulador
  • Agregue O al acumulador
  • Almacene el acumulador en I

Debido a que la mayoría de las operaciones involucran al acumulador, no es necesario dedicar ningún bit de código de operación para especificarlo. Como mencioné antes, el acumulador es implícita . Además, en la propia máquina, el acumulador podría integrarse directamente en la unidad aritmética, simplificando el hardware.

En una arquitectura de registro de propósito general, la instrucción de cálculo s toman múltiples argumentos para especificar de qué registros leer valores. Esto los hace más flexibles. Pero la flexibilidad tiene un costo: necesita más bits de código de operación para especificar en qué registros operar, y debe proporcionar rutas para todos esos registros a la unidad aritmética.

Para las expresiones de ejemplo anteriores , el código no parece muy diferente:

  • Cargue Y en el registro R0
  • Cargue Z en el registro R1
  • Agregue R0 a R1, poniendo el resultado en R2
  • Almacenar R2 en X

Las máquinas de registro de propósito general comienzan a mostrar una ventaja cuando puede mantener valores en registros en muchas operaciones. Por ejemplo, supongamos que quisiera ejecutar este programa un poco más complicado:

X = A + B

Y = A - B

En una máquina acumuladora, tendría que recargar A y B para ambas operaciones. En una máquina de propósito general, solo cargaría A y B una vez.

Dentro de las máquinas de registro de propósito general, también hay múltiples variedades: (Esta lista no es exhaustiva; además, algunas arquitecturas combinan estos conceptos. )

  • Registro-Memoria: Un operando proviene de un registro y un operando proviene de la memoria.
  • Registro-Registro, 2 direcciones: Ambos operandos provienen de registros, pero el resultado debe sobrescribir una de las entradas.
  • Registro-Registro, 3 direcciones: Ambos operandos provienen de registros, y el resultado puede ir a su propio registro.

El procesador x86, por ejemplo, es una máquina de memoria de registros que también ofrece instrucciones de registro-registro de 2 direcciones. La mayoría de las máquinas RISC son máquinas de registro-registro de 3 direcciones, con instrucciones de carga / almacenamiento separadas. Ambas son máquinas de registro de propósito general.

Compárelas con la 6502 , que es una máquina acumuladora. La mayor parte de la aritmética (suma, resta, rotaciones y desplazamientos) opera en el registro A. Los otros dos registros, X e Y, solo admiten incremento, decremento y comparación; se utilizan principalmente para indexar memoria y contadores de bucles.

Un tercer tipo de arquitectura que no mencionó es la arquitectura de pila . Una arquitectura de pila es similar a una arquitectura de acumulador en que toda la computación se centra en un solo punto. La diferencia es que una arquitectura de pila siempre lee sus argumentos de una pila y siempre pone sus resultados en la pila.Tanto las entradas y las salidas de una instrucción de cálculo están implícitas. Otras instrucciones necesitan administrar la inserción de valores y la extracción de valores de la pila.

No se encuentran muchas arquitecturas de pila en chips reales. Pero son populares en intérpretes (código de bytes Java, por ejemplo , o FORTH), y en ciertas calculadoras como las calculadoras basadas en RPN de HP.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *