Recuento de registros de CPU y tiempo de acceso [cerrado]

1

Se ha sugerido que una de las razones por las que las CPU RISC típicas se detienen en 32 registros enteros arquitectónicos, a pesar de que una instrucción de 32 bits tiene suficientes bits de repuesto para especificar 64, es que un banco de registros más grande requiere más tiempo para acceder, lo que velocidad de reloj de impacto.

Sin embargo, las CPU modernas suelen tener incluso más de 64 registros enteros físicos, que utilizan el cambio de nombre del registro para asignar arquitectónico a físico.

¿Esto significa que la tecnología de proceso finalmente hizo que los circuitos fueran lo suficientemente rápidos para que se pueda acceder rápidamente a un gran banco de registros? ¿O hay una razón por la que los registros físicos no afectan tanto el tiempo de acceso como los registros arquitectónicos?

    
pregunta rwallace

2 respuestas

3

A menos que proporcione el enlace quién lo ha sugerido y por qué, hay un campo enorme para adivinar y especular. No conozco la respuesta correcta a su pregunta y creo que puede ser simplemente histórica.

Considera lo siguiente:

  1. La afirmación que citó es en realidad cierta; el conjunto de RAM más grande (y los registros están organizados como SRAM) requirió circuitos de decodificación más grandes, por lo que más registros llevan a más retrasos y, por lo tanto, los diseñadores de la CPU RISC deberían reducir la velocidad del reloj para un funcionamiento confiable de la CPU;
  2. Mire este artículo , página 8. RISC con 32 registros Contra los 16 registros de CISC fue de todos modos el gran avance en la computación. Puede ser que la cantidad de registros haya sufrido el mismo mito de la declaración de RAM de 640 KB de Bill Gates, y que se haya considerado (y tal vez aún) que 32 registros son suficientes;
  3. La discusión sobre tener muchos registros en el núcleo es similar al tener una gran cantidad de caché. Se realizó una importante investigación sobre el tamaño de la memoria caché, y (que yo sepa) se demostró que los tamaños de memoria caché más grandes pueden afectar negativamente al rendimiento. Así lo mismo con los registros; para la aplicación de software de administración de datos y matemática de propósito general, 32 registros (32 enteros más 32 puntos flotantes) pueden ser suficientes (mi opinión personal);
  4. Sería lógico concentrarse en aumentar la velocidad de acceso a la RAM principal en lugar de aumentar el conjunto de registros. Puede aumentar el número de registros a 1024, con un aumento significativo en el costo de silicio, pero puede aumentar fácilmente la RAM externa de 256 MB a 16 GB con una fracción de ese costo.

Como conclusión, la arquitectura de la CPU depende del propósito para el que está diseñada, las tareas que realizará y el tipo de operaciones que realizará; tamaño de la RAM inmediata requerida (registros), tamaño de toda la RAM requerida, etc. Y, por supuesto, el costo de la CPU y su lógica de soporte.

Actualizar:

  

pero nunca menciona el hecho de que 32 registros no es suficiente

Suficiente o insuficiente espacio de registro es una cuestión subjetiva; algunas personas consideran que los registros de 12 * 16 bits son suficientes cuando la aplicación puede acceder a 64 KB de RAM. Mucha gente codifica en lenguaje de alto nivel en estos días, por lo tanto, no se preocupa por el conjunto de registros, el compilador se encarga de la conversión en ejecutable.

  

Las CPU tienen en realidad al menos 80 y, a veces, más de 100 registros físicos

Nombrar nuevos registros dentro del lenguaje ensamblador (en otras palabras, dar un código que ejecute el acceso directo a esos registros) requiere una estandarización. Puede ser que alguien se atreva a actualizar 32 registros accesibles directamente en 64, 128 o 256 registros, y luego tratar de promover nuevos estándares en las masas. Probablemente no sea económicamente viable en este momento.

  

Entonces, ¿por qué el motivo por el que se adhiere a 32 registros de arquitectura?

¿Quizás por razones de compatibilidad? Imagine que libera una CPU que admite 512 registros direccionables directamente, y los desarrolladores comenzarán a programarlo (utilizando ensamblador o mediante compilador). El código de bajo nivel resultante no será fácilmente transportable a sistemas con un conjunto de 32 registros.

  

implica gastar muchos recursos en el cambio de nombre de registro

Renombrar no se trata solo de usar registros adicionales disponibles; esta técnica tiene más que ver con el paralelismo y el rendimiento obtenido con ella, incluido el código disponible actualmente (y ya ensamblado) para el conjunto de 32 registros .

    
respondido por el Anonymous
0

De acuerdo, según alguien en la lista de discusión RISC-V, la diferencia entre los registros arquitectónicos y físicos no tiene que ver con el costo, es que la estrategia de programación de instrucciones es todo o nada. A menos que se comprometa con VLIW / EPIC, los registros físicos serán diferentes a los arquitectónicos, por lo que mover la cuenta del registro arquitectónico más cerca del conteo físico no logra nada.

enlace

    
respondido por el rwallace

Lea otras preguntas en las etiquetas