pae i686 amd64 linux x86 x86-64

linux - amd64 - i686 pae



Inicie el código x86_64 en x86(32 bits) Linux, ejecutándose en la CPU x86_64 (3)

? ¿Es posible iniciar un código x86_64 en i686 Linux (x86, 32 bits)? Mi CPU es moderna Core 2 y puede ejecutar el código x86_64 de 64 bits en sí, pero el sistema operativo es de 32 bits.

El código para comenzar es matemático puro, y casi no necesita interacción con el sistema operativo.

Quiero medir, qué tan rápido será mi programa en el modo de 64 bits en comparación con el modo de 32 bits. El programa es para resolver un gran problema combinatorio y la ejecución a gran escala es de docenas de horas.

Puedo comenzar el código de 64 bits con qemu, pero no será una ejecución nativa y la velocidad en qemu no estará relacionada con la velocidad real de la CPU.


Hay un simulador de ciclo exacto para x86 / x86_64. Por defecto, emulará el K8 de AMD

PTLsim es un simulador de microprocesador preciso de última generación y una máquina virtual para los conjuntos de instrucciones x86 y x86-64. PTLsim modela un núcleo de procesador completamente fuera de servicio, que ofrece memoria extensa y especulación de ramas con repetición, una microarquitectura en clúster altamente configurable con varios diseños de cola de problemas, una jerarquía de caché completa y subsistema de memoria y hardware de soporte.

Desafortunadamente no puede ejecutar un código x86_64 en 32-bit x86 (cita de las preguntas frecuentes)

Por supuesto, la versión de 32 bits de PTLsim carecerá de soporte x86-64

Pero la velocidad debe correlacionarse con la carrera real y hay mucha información disponible.


No podrá ejecutar programas x86_64 en un kernel de 32 bits sin alguna forma de emulación. (A la inversa, funciona bien, sin emulación).

Para poder ejecutar el código de 64 bits en x86_64, debe ingresar el "modo largo" que requiere que se configuren las tablas de página apropiadas (entre otras cosas). Un kernel de 32 bits no habrá hecho ninguna tabla o mapeo de página de 64 bits. Por lo tanto, el código de espacio de usuario no puede ingresar al modo de 64 bits. Podría ser posible con algo de ayuda del kernel, pero un kernel de 32 bits simplemente no está preparado para ese tipo de cosas.

Y dado que puede ejecutar código de 32 bits con un kernel de 64 bits, no hay una razón real para no usar un kernel de 64 bits estos días, especialmente si tiene algún código que podría beneficiarse del modo de 64 bits (más registros en particular).

¿Por qué no arrancas desde un CD-live de 64 bits? ¿O instale una distribución de 64 bits en un disco o partición por separado?


Use vmware; Funcionará bien ejecutando una máquina virtual de 64 bits en un sistema operativo host de 32 bits siempre que la CPU lo admita.