parlando a livello molto basso, come vengono inizializzati i core?come avviare i processori multicore?
risposta
è possibile controllare tutti i dettagli sanguinosi nello Intel specification. I dettagli cruenti sono nel capitolo 8.1.
Ecco un estratto:
seguito all'accensione o un'affermazione di RESET # perno, ogni processore sul bus di sistema esegui una hardware inizializzazione del processore (nota come hardware reset) e un autotest integrato (BIST) opzionale. [Snip] A questo punto, l'azione intrapresa dipende sulla famiglia di processori:
• famiglia P6 processori Tutti i processori sul bus sistema (compreso un singolo processore in un sistema monoprocessore) eseguire il multiplo processore (MP) protocollo di inizializzazione attraverso il bus APIC . Il processore che è selezionata attraverso questo protocollo come il processore bootstrap (BSP) allora inizia immediatamente esecuzione codice software di inizializzazione nel segmento di codice corrente partire dalla di offset nel registro PEI.
Ci sono diversi modi di avvio multicore soc seconda dell'architettura del sistema - AMP o SMP ecc Uno dei modo semplice per il doppio sistema centrale SMP è che CPU0 inizia a vettore di reset (es 0x00000000 che punta nella memoria flash dove è memorizzato il programma di avvio del monitor). Durante questo tempo altri core sono in WFI (attendere l'interruzione) o lo stato di attesa del boot. CPU0 avvia e imposta la messa a terra per l'avvio della CPU1.
per ulteriori dettagli http://www.linux-arm.org/LinuxBootLoader/SMPBoot
freescale.com/files/32bit/doc/app_note/AN3542.pdf
sarei interessati di sapere anche come il sistema operativo inizialmente (a livello hardware) determina quanti core/pacchetti/processori logici ci sono – PhiS
@PhiS: chiede solo. cercare cpuid ... – Bahbar
@Bahbar CPUID non fornisce tutte le informazioni necessarie se nel sistema è presente più di un pacchetto fisico, poiché si ricevono solo informazioni a livello di pacchetto (quanti core/processori di log all'interno di un pacchetto). – PhiS