it-swarm.dev

¿Se puede ejecutar un sistema operativo de 32 bits en un procesador de 64 bits?

¿Cuál es la diferencia entre el sistema operativo de 32 bits y el sistema operativo de 64 bits? ¿Se puede ejecutar un sistema operativo de 32 bits en un procesador de 64 bits?

23
Prabhu

Su pregunta es específica de la arquitectura. x64 es esencialmente una extensión de la arquitectura x86. Es compatible con un espacio de direcciones de 64 bits. Proporciona nuevas instrucciones y nuevos registros.

Puede ejecutar Windows x86 de 32 bits en una máquina x64. Tenga en cuenta que no puede hacer esto en los sistemas Itanium de 64 bits.

32
Mehrdad Afshari

Un procesador de 64 bits puede ejecutar sistemas operativos tanto de 32 como de 64 (al menos una lata de 64 bits). Un procesador de 32 bits puede ejecutar solo 32 de forma nativa.

La diferencia es principalmente sobre el tamaño de un puntero/referencia. En las máquinas de 64 bits, puede hacer referencia a una dirección en un rango de direcciones de 64 bits (lo que le proporciona 2 ^ 64 bytes de memoria). En 32 bits solo puede direccionar 2 ^ 32 bytes (= 4 GB). Ahora, si nos fijamos en las computadoras actuales, es obvio por qué el mundo se está moviendo a 64 bits: 32 bits ya no pueden abordar fácilmente todos los RAM.

En x64 (AMD/Intel) tiene beneficios adicionales de 64 bits. La CPU tiene más registros y por lo tanto permite un código más eficiente.

En otras arquitecturas, las diferencias entre 64 y 32 bits son menos obvias. Por ejemplo, la Nintendo 64 (¿recuerdas eso?) Era una máquina de 64 bits, pero la mayor parte de su código era de 32 bits. Entonces, en ese caso, 64 bits sirvieron más como truco de marketing.

14
Lemmy

La respuesta actualmente aceptada es generalmente correcta pero no específicamente. Realmente no hay una sola cosa llamada "CPU de 32 bits" o "CPU de 64 bits", es una descripción que se refiere a solo una pequeña parte de la arquitectura de la CPU. En particular, hace referencia al número de líneas de selección de direcciones entre la CPU y la memoria, es decir, el espacio de direcciones disponible para operaciones de memoria.

En los días de antaño, cuando la CPU, cuando la gente solía sentarse y tejer (enrollar) los cables entre un procesador y la memoria, habría tenido que usar 32 o (teóricamente, porque no existía en ese momento) 64 cables entre la CPU y el controlador de memoria que se utilizarían para especificar a qué dirección de memoria desea acceder. Por ejemplo, digamos que tenemos una arquitectura de memoria de 2 bits: el envío 00 seleccionaría la dirección 0, 01 seleccionaría la dirección 1, 10 seleccionaría la dirección 2 y 11 seleccionaría la dirección 3. Este bit 2 nos da 2 ^ 2 bytes de RAM (4 bytes).

Si toma una CPU de 32 bits y agrega 32 cables más entre la CPU y el controlador de memoria para que sea mágicamente capaz de soportar más memoria, ahora tiene una "CPU de 64 bits" que puede funcionar con 32 bits. Código o código de 64 bits. ¿Qué significa esto y cómo sucede esto? Bueno, tomemos nuestra CPU de 2 bits de la parte anterior de esta respuesta y agreguemos otro cable, convirtiéndolo en una CPU de 3 bits, llevándonos de 4 bytes a 2 ^ 3 u 8 bytes de RAM.

Se ejecutará el código "2-byte" existente, estableciendo los valores de los últimos 2 cables como se indicó anteriormente (00-11). Transferiremos la conexión adicional para que sea cero de manera predeterminada, de modo que cuando se ejecuta el código de 2 bytes, cuando selecciona 00, selecciona 000 y cuando selecciona 11 realmente selecciona 011. Fácil.

Ahora, un programador desea escribir un código de 3 bytes "nativo" y escribe su software para aprovechar el espacio de direcciones extra. Le dice a la CPU que sabe lo que está haciendo y que tomará el control manual de los nuevos cables adicionales. Su software conoce los cables adicionales y envía correctamente 000-111, lo que le da acceso completo al rango de memoria compatible con esta nueva arquitectura de CPU.

Pero no es así como tiene que suceder. De hecho, eso es normalmente no cómo suceden las cosas. Cuando se introdujeron por primera vez las CPU de 64 bits (y hubo muchas), todas fueron con arquitecturas/diseños completamente nuevos. No solo conectaron 32 cables adicionales y dijeron "aquí tienes, esta es una CPU de 64 bits que puedes usar en modo de 32 bits o de 64 bits", sino que dijeron "Esta es nuestra nueva CPU y solo requiere programación en este lenguaje de máquina completamente nuevo, se comporta de esta manera completamente nueva, resuelve bazillones de problemas diferentes de manera mucho más elegante que las antiguas CPU de 32 bits x86/i386, y es una arquitectura nativa de 64 bits. . "

Esa fue la historia del Intel Itanium, ahora conocido como el "Itanic" por la forma en que se hundió. Se suponía que iba a anunciar en la nueva era de 64 bits, y era algo para contemplar. Instrucciones de longitud variable, cachés enormes, espacio de direcciones de 64 bits, toneladas de registros, súper emocionantes, súper geniales y muy difíciles de convencer a todos para que vuelvan a compilar o reescribir 20 años de código heredado. Esto fue cuando AMD e Intel estaban compitiendo, y AMD tuvo la brillante idea de decir "olvidemos todo esto 'solucionamos todos los problemas del mundo' negocios y solo agregue 32 cables más al i386 y hagamos una compatibilidad de 32 bits. bit CPU "y la arquitectura de CPU x86_64 nació.

De hecho, si observa los nombres y las fuentes del núcleo para los principales sistemas operativos (Linux, Windows, BSD, etc.), los encontrará llenos de referencias a las CPU AMD64 y la arquitectura AMD64. AMD ideó una estrategia ganadora para lograr que todos se cambien al mundo de 64 bits y al mismo tiempo conserven la compatibilidad con las aplicaciones de 32 bits, de manera que un sistema operativo de 32 bits pueda ejecutarse en hardware de 64 bits o incluso aplicaciones de 32 bits. podría ejecutarse en un sistema operativo de 64 bits en hardware de 64 bits. Intel siguió a la suite más temprano que tarde con su arquitectura "Intel EM64T" (que era básicamente idéntica a AMD64) y x86_64 ganó mientras que el Itanic y otros como MIPS64 y ALPHA64 ya no se veían en el mercado de computadoras/servidores.

tl; el dr AMD64 aka x86_64 CPU está diseñado para ser compatible con el núcleo y el código de 32 y 64 bits, pero la mayoría de las CPU de 64 bits son decididamente no Compatible con versiones anteriores de la misma manera. Una CPU de 32 bits puede acceder a un máximo de 4GiB de memoria, mientras que una CPU de 64 bits puede acceder a un impresionante 16 EiBs (16 × 1024 ^ 6 bytes, o 4 mil millones veces más memoria que 4GiB).

3
Mahmoud Al-Qudsi