¿Cómo una computadora de 64 bits ejecuta más instrucciones que una computadora de 32 bits?

Parte de la respuesta es que los diseños más nuevos son de 64 bits y los diseños de 32 bits no reciben atención de diseño / los últimos procesos de IC, etc.

La ruta de datos desde la (s) caché (s) en el chip a los núcleos generalmente se hace más amplia en diseños de 64 bits. El tamaño de la caché también suele ser más grande. El objetivo es permitir que cada núcleo funcione a toda velocidad fuera de la memoria caché. Para los programas pequeños que caben en la memoria caché, esto significa que no hay impacto en el rendimiento de instrucciones y datos más grandes una vez que los datos y el código están en la memoria caché.

Los programas grandes pueden hacer un uso efectivo del espacio de direcciones adicional. Eso con frecuencia puede superar estos efectos, especialmente si el código es pequeño y los datos son grandes. Más espacio de direcciones significa algoritmos menos complicados, recolección de basura menos frecuente, etc.

Los diseños más nuevos también tienden a tener más núcleos. Eso está conduciendo a más software que puede usar efectivamente muchos núcleos.

También hay sistemas que comprimen el código en la memoria principal, descomprimiendo las cosas a medida que el código se recupera en la memoria caché de instrucciones. Esta técnica fue bastante efectiva en máquinas VLIW donde las instrucciones de unos pocos miles de bits eran comunes. Obviamente, esto no es posible para arquitecturas x86.

El software de computadora, como probablemente ya sabes, no está escrito en binario. Por lo general, es una variante de un lenguaje simplemente llamado C. Tomaremos la calculadora de Windows como ejemplo.

El software no habla directamente con la CPU, sino con el núcleo, que es básicamente el administrador de la CPU. Digamos que escribe 3,000,000,000 * 500. La calculadora básicamente le dice al núcleo “Aquí está mi problema, haga que la CPU lo resuelva”. El núcleo luego lo envía a la CPU, quien tiene que encontrar la forma más eficiente de hacer el trabajo. .

El entero con signo más alto posible en un registro de 32 bits es 2,147,483,647. Entonces, ahora la CPU tiene que encontrar una manera de dividir ese número en fragmentos solucionables. Termina con múltiples resultados que son de 32 bits o menos. Luego envía todos estos resultados al programa de la calculadora y dice “Aquí, averigua qué significa”.

En una CPU de 64 bits, la ecuación podría manejarse directamente y devolverse como un entero con signo único.

Esta es solo una de las miles de formas en que una CPU de 64 bits puede ser más eficiente.

Además de las cosas que otros ya han dicho …

Las CPU de 64 bits son diseños más nuevos que los de 32 bits. En general, una vez que una CPU ya no es popular, no obtiene mejoras en el diseño. El mismo diseño puede hacerse más pequeño debido a las mejoras tecnológicas en la fabricación de chips, y eso puede permitir aumentar la velocidad del reloj, pero los resultados de una nueva investigación para mejorar la eficiencia del procesamiento generalmente solo se utilizan en el diseño de nuevos chips … que normalmente serán del “tamaño de bits” actualmente popular.

(Hay excepciones para chips extremadamente populares en nichos de mercado. Por ejemplo, la familia Z80 de chips de 8 bits continuó recibiendo mejoras de diseño mucho después de que los chips de 8 bits fueran abandonados para las microcomputadoras, porque continuaron viendo un alto uso en las calculadoras).

Por ejemplo, el único nuevo diseño de chip SPARC de 32 bits desde 1996 ha sido “Leon”, un SPARC de código abierto compatible. Mientras tanto, Sun ha producido siete generaciones de diseños SPARC de 64 bits desde entonces. La historia es similar con otras familias de procesadores: los diseños de procesadores de 32 bits están ahora una o dos décadas detrás del estado del arte.

Las CPU de 64 bits generalmente no ejecutan más instrucciones que las de 32 bits. De hecho, pueden ejecutar menos porque habrá más esperas en los errores de caché de datos. La memoria caché de datos se usa de manera menos eficiente si termina con muchos ceros, lo que lo hará si el programa usa principalmente datos de 32 bits. Dichos programas pueden ejecutarse más lentamente en las CPU de 64 bits.

Sin embargo, como se ha señalado, cada instrucción procesa del 100% al 200% de la cantidad de datos, o incluso más del 200%, ya que la aritmética de 64 bits no necesita desglosarse en varias instrucciones.

Como los registros son más anchos, pueden contener direcciones de memoria más grandes que pueden hacer referencia a mucho más espacio de direcciones físicas y virtuales (16 exabytes frente a 4 gigabytes). En comparación con el rendimiento, esta es la razón más importante por la que las computadoras de propósito general se trasladaron a 64 bits.

Más registros de mayor tamaño permiten manejar más memoria, aumentando así la eficiencia.

Piensa en esto, de esta manera; un problema roto en cinco pedazos

Arquitectura de 32 bits

manejar la primera parte → manejar la segunda parte → manejar la tercera parte → manejar la cuarta parte → manejar la quinta parte → amalgamar partes → devolver la respuesta.

Ahora podemos manejar piezas más grandes, por lo que el mismo problema ahora se divide en tres piezas.

Arquitectura de 64 bits

manejar la primera parte

manejar la segunda parte → Amalgamar partes → devolver respuesta

manejar la tercera parte

Entonces, la arquitectura de 32 bits toma siete pasos y la arquitectura de 64 bits toma tres pasos. ¿Cual es mas rápido?

Esta es, por supuesto, una explicación muy simplificada de lo que sucede, pero es lo suficientemente precisa como para tener una idea.

Espero que haya ayudado.