lunes, 12 de mayo de 2008

cUmUlAdores


En un 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 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 (shift), 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 (pero más 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 CPUs 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 pudede 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.

En la común arquitectura de microprocesadores x86, se pueden usar una diversidad de registros como acumuladores para las operaciones artiméticas-lógicas (como EAX, EBX, ECX, etc.), pero para la multiplicación y división, se usa de una manera implícita el registro EAX (o alguno de sus subcomponentes (AX ó AL), en conjunto con el registro EDX y sus subcomponentes.

No hay comentarios: