Pregunta

Registro variables son una manera conocida para obtener un acceso rápido (register int i). Pero ¿por qué son los registros en la parte superior de la jerarquía (registros, caché, memoria de trabajo, memoria secundaria)? ¿Cuáles son todas las cosas que hacen que el acceso a registros tan rápido?

¿Fue útil?

Solución

Los registros son una parte fundamental de la CPU, y gran parte del conjunto de instrucciones de una CPU será adaptado para trabajar en contra de registros en lugar de las posiciones de memoria. Accediendo valor de un registro normalmente se requieren muy pocos ciclos de reloj (probablemente sólo 1), tan pronto como se accede a la memoria, las cosas se ponen controladores más complejos y de caché / buses de memoria se involucran y la operación se va a tomar mucho más tiempo.

Otros consejos

Los registros son circuitos que son, literalmente, cableados directamente a la ALU, que contiene los circuitos para la aritmética. Cada ciclo de reloj, la unidad de registro de la base de la CPU puede alimentar a una media docena o menos variables en los otros circuitos. En realidad, las unidades dentro de la trayectoria de datos (ALU, etc.) pueden alimentar datos entre sí directamente, a través de la red de derivación , que de una manera forma un nivel de jerarquía por encima de los registros - pero todavía utilizan Registro- los números para hacer frente a la otra. (La sección de control de una CPU completamente pipeline mapas dinámicamente camino de datos de unidades para registrar números.)

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

Los registros son esencialmente memoria de la CPU interna. Así accesos a los registros son más fácil y más rápido que cualquier otro tipo de accesos de memoria.

memorias más pequeñas son generalmente más rápido que las más grandes; también pueden requerir un menor número de bits a la dirección. Una palabra de instrucción de 32 bits puede contener tres direcciones de registro de cuatro bits y tienen un montón de espacio para el código de operación y otras cosas; una dirección de memoria de 32 bits podría llenar por completo una palabra de instrucción sin dejar espacio para cualquier otra cosa. Además, el tiempo requerido para hacer frente a una memoria aumenta a una velocidad más que proporcional al logaritmo de la cantidad de memoria. Acceso a una palabra de un espacio de memoria 4 GB se llevará a decenas si no cientos de veces más que el acceso a uno de 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ápido que uno que utiliza una memoria más lenta para todo.

Cada microcontrolador tiene una CPU como se ha mencionado proyecto de ley, que tiene los componentes básicos de la ALU, algo de memoria RAM, así como otras formas de memoria para ayudar con sus operaciones. La memoria RAM es lo que se está haciendo referencia a la memoria principal.

La ALU maneja todas las operaciones lógicas arthimetic y para operar en cualquier operandos para realizar estos cálculos, se carga los operandos en registros, realiza las operaciones sobre estos, y luego que el programa accede el resultado almacenado en estos registros directa o indirectamente .

Desde registros son más cercano al corazón de la CPU (a.k.a el cerebro de su procesador), que son más arriba en la cadena y por supuesto operaciones realizadas directamente en registros toman la menor cantidad de ciclos de reloj.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top