¿Están los registros diseñados dentro de la CPU?

Sí, los registros se usan en todas partes (no solo los accesibles desde las instrucciones), son un componente fundamental del diseño de lógica secuencial en casi todas las partes del chip. Existen diferentes diseños para registros según las necesidades. Los registros de alto rendimiento tienen más transistores y ocupan más espacio, y hay registros de menor velocidad que usan menos transistores. Los registros de datos de la CPU son probablemente la variedad de alto rendimiento.

Una sola unidad funcional (trabajo de ALU, multiplicadores, divisiones, etc.) a menudo es demasiado grande para que las señales eléctricas se propaguen completamente a velocidades de reloj modernas (GHz), por lo que estas unidades se dividen en etapas más pequeñas conectadas por registros. Esto se llama tubería. Un registro de 1 bit usa 14 transistores como mínimo, por lo que un diseño en tubería tiene la desventaja de requerir muchos más transistores y área en un chip. Dado que muchas operaciones son de 64 o 128 bits (512 con AVX2 y otros equivalentes SIMD), el tamaño de una unidad aumenta dramáticamente con más etapas de canalización. Esto no importa tanto con la fabricación moderna, pero cuando se crearon las CPU canalizadas, eran muy caras y solo estaban disponibles en estaciones de trabajo especializadas de Unix.

Creo que MIPS fue la primera CPU totalmente conectada que tenía una velocidad de reloj mucho mayor que otros chips de la época. Después de unos años, las CPU de consumo comenzaron a ser totalmente interconectadas, comenzando con el Motorola 68040 y el Intel 486.

Están dentro de la CPU, estrechamente vinculados a la Unidad de lógica aritmética (ALU) para obtener el máximo rendimiento.

El direccionamiento de la memoria también se realiza a través de registros (y la ALU), por lo que no solo contienen valores numéricos “normales”.

La mayoría de las CPU de hoy en día tienen aritmética de números enteros y de coma flotante, por lo que los registros son lo suficientemente anchos como para ajustarse también a dichos valores.

Al programar en un nivel de código de ensamblaje / máquina, usted usa directamente registros para las operaciones.

En, por ejemplo, C, puede decirle al compilador que prefiere que una variable se coloque en un registro, pero no hay garantía para eso.

Cada arquitectura de CPU tiene su propia cantidad de registros. No hay una regla establecida para eso tampoco.

Depende del registro.

La CPU tiene registros internos para su uso …

Los dispositivos periféricos también tienen registros internos para su uso, y proporcionarán acceso a ellos por dirección de memoria si está usando E / S mapeadas en memoria. Algunos periféricos incluso tienen registros de administración de memoria.

En algunos casos, incluso los chips de memoria tienen registros internos, que se utilizan para detectar errores CRC o errores de bus …

Sí. Los números / datos que se operan están en un registro u otro.