2009-10-25 16 views
10

In modalità reale su x86, quali istruzioni dovrebbero essere utilizzate per eseguire il codice su un processore diverso, in un sistema multiprocessore?Codice in esecuzione su un altro processore (assembly x86)

(Sto scrivendo un codice pre-boot in assembler che ha bisogno di impostare alcuni registri della CPU, e fare questo su ogni CPU del sistema, prima che l'attuale sistema operativo si avvia.)

+1

Puoi persino fare MP in modalità reale? – Draemon

+0

nessun motivo per non farlo. Non c'è nulla di specifico per la modalità MP. –

+1

Sembra un duplicato di http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –

risposta

9

in modo da avere un programma stand-alone (hai detto "pre-boot"), come un bootloader, in esecuzione in modalità reale? E questo è su un PeeCee con il solito BIOS?

In tal caso è in esecuzione una sola CPU. Al fine di spin-up le altre unità CPU di un sistema operativo in genere eseguire quello che viene chiamato l'algoritmo di avvio universale che va in questo modo:

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 

Il BSP è il processore di avvio. Un AP è un processore dell'applicazione. Un IPI è un interrupt tra processori. Per eseguire un IPI, è necessario abilitare l'APIC, un'estensione del controller di interruzione sull'architettura del PC che non è abilitata all'avvio. Ecco perché il codice è preoccupato per quale tipo di versione ICU è in esecuzione. Tutto questo è magia del kernel abbastanza profonda. Potresti provare a guardare Linux, NetBSD o altro codice sorgente * BSD per un esempio, ma non sarà facile da leggere. Se vinci davvero, potresti trovare un piccolo kernel o un programma di test SMP stand-alone da qualche parte.

Per ulteriori informazioni, vedere Intel Multiprocessor Specification.

+0

Grazie , questa è solo l'informazione di cui ho bisogno! Questa dovrebbe essere una sfida ... –

Problemi correlati