2009-10-25 22 views
10

En modo real en x86, ¿qué instrucciones necesitarían usarse para ejecutar el código en un procesador diferente, en un sistema multiprocesador?Código de ejecución en un procesador diferente (ensamblado x86)

(estoy escribiendo algo de código previa al arranque en ensamblador que necesita para establecer ciertos registros de la CPU, y hacer esto en cada CPU en el sistema, antes de que arranque reales del sistema operativo.)

+1

¿Se puede hacer MP en modo real? – Draemon

+0

no hay razón para no hacerlo. No hay nada específico de modo sobre MP. –

+1

Parece una estafa de http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –

Respuesta

9

para que tenga una programa independiente (dijiste "pre-boot"), como un gestor de arranque, ¿ejecutando en modo real? Y esto es en un PeeCee con el BIOS habitual?

En ese caso, solo tiene una CPU en ejecución. Con el fin de volver a acelerarse las otras unidades de CPU de un sistema operativo normalmente ejecutará lo que se llama el algoritmo de arranque universales que dice así:

BSP sends AP an INIT IPI 
BSP DELAYs (10mSec) 
If (APIC_VERSION is not an 82489DX) { 
    BSP sends AP a STARTUP IPI 
    BSP DELAYs (200μSEC) 
    BSP sends AP a STARTUP IPI 
    BSP DELAYs (200μSEC) 
} 
BSP verifies synchronization with executing AP 

El BSP es el procesador de arranque. Un AP es un procesador de aplicaciones. Un IPI es una interrupción entre procesadores. Para hacer un IPI, necesita activar el APIC, una extensión de controlador de interrupción para la arquitectura de PC que no está habilitada en el arranque. Es por eso que el código está preocupado sobre qué tipo de versión de ICU se está ejecutando. Todo esto es bastante profundo en la magia del kernel. Puede probar Linux, NetBSD u otro código fuente * BSD para ver un ejemplo, pero no será fácil de leer. Si realmente ganas, es posible que encuentres un kernel pequeño o un programa de prueba de SMP independiente en alguna parte.

Para obtener más información, consulte el Intel Multiprocessor Specification.

+0

Gracias ¡Esa es solo la información que necesito! Esto debería ser un desafío ... –

Cuestiones relacionadas