2009-10-04 12 views
9

Welche x86-64-Anweisungen werden zum Aktivieren/Deaktivieren anderer Cores/Prozessoren verwendet und wie wird mit der Ausführung von Code für sie begonnen?Assembly- und Multicore-CPUs

Gibt es irgendwo eine Dokumentation darüber, wie dies vom Betriebssystem durchgeführt wird?

+1

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

+2

Sie können wollen, betrachten, wie Linux mehrere Kerne bringt. http://lxr.linux.no/#linux+v2.6.31/arch/x86/kernel/smpboot.c –

+1

@Rom - Nicht ein Betrogener. Diese Frage bezieht sich auf atomare Anweisungen. Dieser scheint sich um die Hardware-Schnittstelle zu handeln, die mit Bootstrapping-Kernen, d. H. Über einen Kernel, verbunden ist. – asveikau

Antwort

0

Ziemlich schmerzhaft, um eine x86 zu bekommen und zu gehen ... es ist nicht so sehr in den Kernen wie im APIC-System. Sie müssen in die Dokumentation für Ihren Chipsatz schauen, ist leider ziemlich versteckt.

Sie müssen definitiv auf der Kernel-Ebene sein. Linux zu sehen klingt nach einer guten Idee.

-1

Es gibt wahrscheinlich Dokumentation von Intel/AMD auf modellspezifischen Registern, die Sie festlegen können, um bestimmte Dinge wie diese zu tun. Ich bin mir nicht sicher, ob Sie Zugriff darauf haben, wenn Sie etwas schreiben, das auf der Kernel-Ebene sitzt ...

2

Sie sprechen Unter der Annahme, über einen Kernel-Implementierung ....

Mein Verständnis ist es weitgehend auf diesem Dokument basiert:

Wenn mich recht erinnere (kein Wortspiel beabsichtigt), um die Unterstützung mehrerer Prozessoren zu erkennen, scannen Sie bestimmte Speicherbereiche nach einem magischen Satz von Bytes, die die Firmware für Sie eingerichtet hat. Von dort können Sie die Strukturen, die die CPUs beschreiben, gehen, und Sie können mit dem APIC-Controller über das Einrichten von Interrupts auf verschiedenen CPUs usw. sprechen.