Confusión entre el tamaño del registro, el tamaño de la dirección, el tamaño de los datos

3

Empecé a aprender sobre punteros en C ++ y pensé que debería informarme un poco sobre cómo funciona la memoria y cómo se accede a ella. Leí que cuando decimos que un procesador es de 64 bits, tiene un registro de 64 bits y puede acceder a 2 ^ 64 ubicaciones de direcciones. También leí que puede obtener 64/8, por lo que 8 bytes de datos a la vez, pero el bus de datos no es lo mismo que el registro, ¿verdad? ¿Deben ser del mismo tamaño o es el caso normalmente? ¿Y es el tamaño del registro o el tamaño del bus de datos lo que determina a qué nos referimos, como 32/64 bits? ¿También hay una diferencia entre el tamaño del registro y el tamaño de la dirección?

    
pregunta Austin

2 respuestas

-1

Cuando se refiere a 64 bits o a 32 bits, no es necesario que implique ningún ancho de registro o ancho de bus solo. Puede multiplexar un bus de modo que lea 64 bits en dos lecturas o cuatro lecturas, etc. Un diseño de CPU puede ser tan creativo como el ingeniero detrás de los bloques lógicos. Un buen ejemplo es el 8086 con un espacio de direcciones de 20 bits y un bus de datos de 16 bits. El software que escribe en C ++ se ajusta a muchas capas de compilaciones y máquinas de estado de hardware, de manera que se abstrae. En el diseño RISC encontrará que el ancho de los registros y el ancho de la ALU casi siempre tienen el mismo ancho, pero en el diseño CISC no es necesario que sea así.

    
respondido por el Matt
3

El ancho del procesador se definirá por el ancho de los registros internos. La ALU podrá procesar los registros directamente. El ancho del bus de datos y la capacidad de la dirección rara vez definen los bits del procesador.

PS: un compilador de 32 bits y un compilador de 64 bits dan diferentes resultados en una máquina de 64 bits.

    
respondido por el Umar

Lea otras preguntas en las etiquetas