¿Cuáles son las diferencias entre los procesadores de 64 bits y los procesadores de 32 bits en términos de diseño y capacidades (memoria y recursos)?

Velocidad y capacidad. Los tamaños de 32 contra 64 bits generalmente se refieren al tamaño de la dirección y los buses de datos y / o el tamaño de la palabra nativa del propio procesador.

El tamaño de la palabra se refiere al tamaño de datos “natural” o preferido que el procesador puede manipular a la vez. En diseños modernos, esto está relacionado con el tamaño del bus de datos. El tamaño de la palabra es la cantidad que un procesador puede manipular de manera más eficiente. También puede controlar los tamaños de datos nativos, como los de un número entero, largo, etc. Normalmente, cuando un procesador quiere mover datos de la memoria, quiere hacerlo con cantidades de tamaño de palabra.

El tamaño de palabra también puede determinar la organización de la memoria. Muchos procesadores modernos requieren que la memoria se organice en límites de tamaño de palabra incluso para cantidades más pequeñas que el tamaño de palabra. Los procesadores no le permitirán direccionar la memoria directamente no en un límite de palabra y generarán un error.

El tamaño del bus de datos determina cuántos datos puede cargar el procesador de la memoria en un solo movimiento. El tamaño del bus de datos suele ser igual al tamaño de la palabra nativa del procesador, pero esto no es obligatorio. Los procesadores más baratos pueden tener un bus de datos más pequeño que el tamaño de la palabra para reducir el recuento de pines, reducir la complejidad de la placa (se requieren menos trazas), mantener el diseño del procesador más simple, etc. Esto significa que se requieren múltiples movimientos hacia y desde la memoria para cargar una palabra completa de datos. Hay muchos procesadores que hicieron esto, incluidos el 68000 (16/32), 80386SX (16/32) y 8088 (8/16).

Los buses de datos más amplios significan velocidades más rápidas. Se requieren menos ciclos para mover datos hacia y desde la memoria. Un procesador de 32 bits con un bus de datos de 32 bits podría cargar datos dos veces más rápido que un procesador de 32 bits con un bus de datos de 16 bits. Comparativamente, un procesador de 64 bits con un bus de datos de 64 bits es dos veces más rápido que cargar datos que un procesador de 32 bits con un bus de datos de 32 bits.

El tamaño del bus de direcciones determina la cantidad de memoria que el procesador puede abordar. Solía ​​ser que el bus de direcciones era más grande que el tamaño de la palabra (es decir, procesador de 8 bits con bus de direcciones de 16 bits). Esto sigue siendo bastante común en procesadores más pequeños que pueden tener un tamaño de palabra de 32 bits con un bus de direcciones más pequeño. Tenga en cuenta que el bus de direcciones simplemente determina la cantidad total de memoria dirigida. Mover datos hacia y desde la memoria es una función del bus de datos. Al igual que el bus de datos, la cantidad de bits de dirección puede restringirse para mantener la cuenta regresiva de los pines, simplificar el diseño de la placa, etc.

El hecho de que un bus de direcciones pueda tener una cantidad máxima de RAM direccionable no significa que una máquina lo tenga. A pesar de tener un direccionamiento de 64 bits, la mayoría de las computadoras de escritorio solo pueden manejar entre 32 GB y 128 GB de RAM, muy lejos de los 2 ^ 64 que el procesador puede abordar.

En general, un procesador de 64 bits será el doble de rápido que un procesador de 32 bits, en igualdad de condiciones. Simplemente puede procesar y mover datos el doble de rápido.

Los diseños de 32 y 64 bits tienden a ser CPU de escritorio, tableta y teléfono en la actualidad. La arquitectura ARM utilizada en casi todos los teléfonos inteligentes es una arquitectura de 32 bits. Los procesadores de escritorio más grandes y complejos tienden a tener un diseño de 64 bits. También hay diseños de 128 bits. Más comúnmente, su GPU. Las GPU tienen buses de datos masivos de 128-384 bits de ancho para facilitar el movimiento de cantidades masivas de datos en ellos. Dado que las GPU son procesadores paralelos masivos, esto permite que los datos se transmitan muy rápido a elementos de procesador individuales.

En primer lugar, las definiciones. 32 bits y 64 bits es en realidad un poco ambiguo. ¿Qué es exactamente 64 bits y qué no?

Históricamente, el “bitness” ha afectado poco de la cantidad de RAM direccionable. En la parte superior de mi cabeza, no puedo recordar ninguno donde la primera limitación haya sido el ancho de palabra del bus de dirección. Por ejemplo, la mayoría de los procesadores de 8 bits en las computadoras domésticas podrían direccionar no 2 ^ 8 (256) bytes, sino 2 ^ 16 (64kB) de RAM. Los procesadores de 16 bits tampoco estaban limitados a 2 ^ 16, sino que normalmente podían abordar 1-16MB de RAM. Obviamente, lo mismo ocurre con 32 bits: las CPU Intel han sido capaces de abordar al menos 64 GB desde 1995 Pentium Pro, aparte de algunas excepciones insignificantes. Todos los procesadores x86 de 64 bits pueden direccionar la misma cantidad de RAM ya sea que el procesador esté ejecutando un sistema operativo de 32 o 64 bits. Prácticamente todos los procesadores x86 lanzados desde 1995 pueden abordar más de 4 GB de RAM.

Por lo tanto, el bitness generalmente no afecta la cantidad de RAM direccionable.

El bitness afectó la cantidad de datos procesados ​​hasta 1997 más o menos, cuando SIMD se abrió paso en la informática del consumidor y desacopla el bitness de la cantidad de procesamiento realizado. A saber, MMX permitía procesar 64 bits a la vez: 8 bytes, 4x palabras de 16 bits o 2x palabras de 32 bits a la vez. Desde que los tamaños de registro SIMD solo han aumentado y el bitness no ha afectado significativamente la cantidad de procesamiento que se puede hacer por instrucción ejecutada. Para x86, actualmente SSE procesa 128 bits a la vez y AVX 256 o más bits a la vez; no importa si la CPU es de 32 o 64 bits, ambos pueden cargar, almacenar y procesar por igual. Otros procesadores, como ARM y PowerPC tienen una situación análoga. Incluso cuando se utiliza un conjunto de instrucciones genérico, las operaciones de 64 bits son muy raras, el orden de magnitud de una verdadera operación de 64 bits necesaria es como 1/1000. El aumento de rendimiento de esto es demasiado bajo para medir.

Por lo tanto, el bitness no afecta la cantidad de procesamiento realizado por instrucción en procesadores contemporáneos.

¿Qué afecta entonces? Bueno, en diseños contemporáneos, afecta la cantidad de memoria virtual direccionable simultáneamente por proceso. Sin embargo, esto no significa tanto como parece, porque los procesos pueden asignar dinámicamente una porción diferente de memoria física en su espacio de direcciones de memoria virtual. Los procesadores de 64 bits compran conveniencia y llamadas de reasignación menos lentas, porque todo necesariamente se puede asignar a la vez.

La mayoría de las extensiones de 64 bits de procesadores anteriores de 32 bits aprovecharon la oportunidad para modernizar ISA (arquitectura de conjunto de instrucciones) al mismo tiempo. Para x86 y ARM, esto significaba duplicar el tamaño del archivo de registro. Se realizan otros cambios para hacer que los procesadores sean más simples y más eficientes. Juntos, por lo general, proporcionan un aumento del rendimiento del 5% al ​​20% en casos excepcionales. El hecho de que el procesador sea de 32 o 64 bits no tiene ningún efecto práctico en comparación con las mejoras de ISA. De hecho, el código de 64 bits se ejecuta siempre más lento que el código de 32 bits si todas las demás cosas son iguales. Esto se debe a que las direcciones de 64 bits ocupan más espacio y consumen más espacio en memoria y cachés.

Las diferencias de rendimiento entre los procesadores de 32 bits y de 64 bits se reducen a los cambios de ISA y a las opciones de diseño específicas de implementación. Se podrían haber realizado los mismos cambios con los cambios de ISA de 32 bits con exactamente los mismos beneficios. El ancho de registro de uso general de 64 bits no ayuda en nada al rendimiento, dada la amplia disponibilidad de extensiones SIMD.

Lo básico es lo que significa 32 bits y 64 bits.
Cualquier instrucción al procesador es un conjunto secuencial de números y generalmente tiene hasta 32 bits o dígitos binarios.
En los procesadores de 64 bits, el procesador puede recibir dos instrucciones de 32 bits a la vez o puede recibir una instrucción de 64 bits de un sistema operativo de 64 bits que contendría más datos, lo que reduce el tiempo de ejecución y el sistema funciona más rápido
También con memoria direccionable de 64 bits es 2 ^ 64 bytes = 18.4467441 exabytes, mucho más de 2 ^ 32 bytes = 4.2949673 gigabytes