2009-10-04 15 views
9

Quelles instructions x86-64 sont utilisées pour activer/désactiver d'autres cœurs/processeurs et comment commencer à y exécuter du code?Processeurs d'assemblage et multicœurs

Y at-il une documentation quelque part sur la façon dont cela est fait par le système d'exploitation?

+1

Dupe de http://stackoverflow.com/questions/980999 – Rom

+2

Vous pouvez voir comment Linux soulève plusieurs cœurs. http://lxr.linux.no/#linux+v2.6.31/arch/x86/kernel/smpboot.c –

+1

@Rom - Pas un dupe. Cette question concerne les instructions atomiques. Celui-ci semble concerner l'interface matérielle impliquée avec les cœurs d'amorçage, c'est-à-dire concernant un noyau. – asveikau

Répondre

0

Assez pénible d'avoir un x86 en marche ... ce n'est pas tellement dans les noyaux comme dans le système APIC. Vous avez besoin de regarder dans les docs pour votre chipset, a tendance à être caché à peu près malheureusement.

Vous devrez absolument être au niveau du noyau. Regarder Linux semble être une bonne idée.

-1

Il existe probablement de la documentation d'Intel/AMD sur les registres spécifiques à un modèle que vous pouvez définir pour effectuer des tâches spécifiques de ce type. Je ne suis pas sûr si vous y avez accès à moins que vous n'écriviez quelque chose qui se trouve au niveau du noyau ...

2

En supposant que vous parlez la mise en œuvre d'un noyau ....

Ma compréhension est qu'il est en grande partie basée sur ce document:

Si ma mémoire est bonne (sans jeu de mots), pour détecter le support multiprocesseur, vous scannez certaines plages de mémoire pour un ensemble magique d'octets que le firmware a mis en place pour vous. De là, vous pouvez parcourir les structures qui décrivent les processeurs, et vous pouvez parler au contrôleur APIC de la configuration des interruptions sur diverses CPU, etc.