2010-08-19 15 views
15

Las variables de registro son una forma bien conocida de obtener acceso rápido (register int i). ¿Pero por qué los registros están en la parte superior de la jerarquía (registros, caché, memoria principal, memoria secundaria)? ¿Cuáles son todas las cosas que hacen que acceder a los registros sea tan rápido?¿Por qué los registros de la CPU son rápidos de acceder?

+4

No entiendo muy bien lo que está preguntando. Los registros están en la parte superior porque están en la parte superior. No hay nada más cerca de la ALU donde se realiza el trabajo. Mantener los datos en un registro significa que no hay gastos generales de transferencia de datos. Por cierto, la palabra clave no hace mucho con los compiladores optimizadores modernos. –

+0

¡Un registro se almacena directamente en la CPU! – NoName

+0

Más información sobre ALU: https: //en.wikipedia.org/wiki/Arithmetic_logic_unit –

Respuesta

9

Los registros son una parte central de la CPU, y gran parte del conjunto de instrucciones de una CPU se diseñará para funcionar contra registros en lugar de ubicaciones de memoria. Acceder al valor de un registro generalmente requerirá muy pocos ciclos de reloj (probablemente solo 1), tan pronto como se acceda a la memoria, las cosas se vuelven más complejas y los controladores de caché/buses de memoria se involucren y la operación tomará considerablemente más tiempo.

1

Los registros son esencialmente memoria interna de la CPU. Por lo tanto, los accesos a los registros son más fáciles y rápidos que cualquier otro tipo de acceso a la memoria.

19

Los registros son circuitos que están literalmente conectados directamente a la ALU, que contiene los circuitos para la aritmética. Cada ciclo de reloj, la unidad de registro del núcleo de la CPU puede alimentar una media docena de variables en los otros circuitos. En realidad, las unidades dentro de la ruta de datos (ALU, etc.) pueden alimentar datos entre sí directamente, a través de la red de omisión , que de alguna manera forma un nivel de jerarquía por encima de los registros, pero aún usan números de registro para dirigirse entre sí. . (La sección de control de una CPU totalmente segmentada mapea dinámicamente las unidades de ruta de datos para registrar números.)

La palabra clave register en C no hace nada útil y no debe usarla. El compilador decide qué variables deben estar en los registros y cuándo.

+2

Los cables (y MUXes) que conectan las unidades de ejecución directamente entre sí se denominan red de reenvío o desvío, ya que elude la latencia de la escritura regresiva en los registros y luego lee desde el archivo de registro. Así es como una instrucción 'add' puede tener latencia 1c, incluso en una CPU segmentada. (Ver el artículo [Wikipedia's Classic RISC pipeline] (https://en.wikipedia.org/wiki/Classic_RISC_pipeline#Solution_A._Bypassing). La idea es la misma incluso en una CPU superescalar fuera de servicio, pero múltiples unidades de ejecución pueden reenviar el uno al otro en paralelo.) –

0

Cada microcontrolador tiene una CPU como se menciona en Bill, que tiene los componentes básicos de ALU, algo de RAM y otras formas de memoria para ayudar en sus operaciones. La RAM es a lo que te refieres como memoria principal.

La ALU maneja todas las operaciones lógicas arthiméticas y para operar en cualquier operando para realizar estos cálculos, carga los operandos en registros, realiza las operaciones en ellos, y luego su programa accede al resultado almacenado en estos registros directamente o indirectamente.

Dado que los registros están más cerca del corazón de la CPU (es decir, el cerebro de su procesador), están más arriba en la cadena y por supuesto las operaciones realizadas directamente en registros toman la menor cantidad de ciclos de reloj.

1

Las memorias más pequeñas son generalmente más rápidas que las más grandes; también pueden requerir menos bits para abordar. Una palabra de instrucción de 32 bits puede contener tres direcciones de registro de cuatro bits y tiene mucho espacio para el código de operación y otras cosas; una dirección de memoria de 32 bits llenaría por completo una palabra de instrucciones sin dejar espacio para nada más. Además, el tiempo requerido para abordar una memoria aumenta a una velocidad más que proporcional al registro del tamaño de la memoria. El acceso a una palabra de un espacio de memoria de 4 gig tardará docenas, sino cientos de veces más que el acceso a uno desde un archivo de registro de 16 palabras.

Una máquina que puede manejar la mayoría de las solicitudes de información desde un pequeño archivo de registro rápido será más rápida que una que utiliza una memoria más lenta para todo.

Cuestiones relacionadas