La respuesta más corta es que contiene un único valor dentro de la CPU para la aritmética o la referencia a la memoria. El lenguaje de máquina base de todos los procesadores puede ejecutar instrucciones en los registros o en la memoria. Algunos procesadores limitan las instrucciones en la memoria a cargar y almacenar con todo lo demás que se hace en los registros.
En general, un registro tiende a ser un conjunto de bits (normalmente el tamaño de ahorro como la palabra de la CPU) que se encuentra en las conexiones internas a la ALU (realiza todas las operaciones sobre los valores) o la unidad de carga / almacenamiento (nombre y función varía, pero será responsable de la interacción de la CPU con la memoria). Esta colocación requiere que los registros operen en el orden de la velocidad de la CPU. Algunos pueden tardar unos cuantos ciclos en responder ya que el pipeline evita la sobrecarga, mientras que otros necesitan operar en una fracción de ciclo para leer y escribir en la misma operación (el clásico acumulador).
Las primeras CPU solían tener usos especiales para cada registro. El acumulador se conectaría a la ALU como entrada y salida. Los contadores tendrían un incremento especial y estarían conectados a la lógica de comparación. Los punteros de memoria estarían conectados directamente a la gestión de la memoria y tendrían una simple adición disponible. A medida que el espacio del silicio se volvió más disponible y el rendimiento crítico, tener un banco de registros más generales en un bus que pudiera hacer cualquier conexión se convirtió en la preferencia.
Los registros también son clave para el rendimiento. Cuantas más operaciones pueda hacer sin referencia a la memoria, su código se ejecutará más rápido. Las referencias a la memoria tienden a causar pausas mientras se espera que el valor sea devuelto o escrito. En los años 90 hubo un gran debate sobre el uso de silicio para la caché o los registros. En ejemplos sencillos, añadir registros era más rápido que añadir 5-10 veces la caché. Sin embargo, cuando los bancos de registros alcanzaron un gran éxito, el precio de un cambio de contexto era enorme y los compiladores no estaban optimizando bien para ello. SPARC incluso tenía un anillo de registros para tratar de evitar este problema con resultados mixtos.
Los registros se han vuelto complejos y potentes, pero siguen siendo el mismo soporte básico de un solo valor que siempre han sido. Mira de nuevo algunos de los libros de programación más antiguos y las explicaciones son muy claras. Yo recomendaría «Programming the 6502» de Rodnay Zaks. Es fácil de seguir y está bien escrito a pesar de ser para una arquitectura muerta.