2013-01-10 7 views

Antwort

7

Sie wollen den lokalen APIC lesen, die Sie in "Volume 2a" lesen können:

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Jeder Prozessor eine entsprechende lokale APIC hat, in jedem lokalen APIC gibt es ein APIC-ID-Register , dem zur Systeminitialisierungszeit ein eindeutiger Wert zugewiesen wird.

Der erste Kern, der online geht, heißt der Bootstrap-Prozessor (BSP) und kann tatsächlich jeder physische Kern auf dem Chip sein. Weitere Informationen finden Sie in "Volume 3a", wo Sie über den Auswahlprozess des Bootstrap-Prozessors sprechen. Hier

ist ein Auszug aus vol3a:

8.4.1 BSP und AP Processors

Das MP Initialisierung Protokoll definiert zwei Klassen von Prozessoren: der Bootstrap-Prozessor (BSP), und die Anwendungsprozessoren (APs). Nach einem Power-Up oder RESET eines MP-Systems wählt die Systemhardware dynamisch einen der Prozessoren auf dem Systembus als BSP aus. Die verbleibenden Prozessoren werden als APs bezeichnet.

Als Teil des BSP-Auswahlmechanismus wird das BSP-Flag in der IA32_APIC_BASE-MSR (siehe Abbildung 10-5) der BSP gesetzt, was darauf hinweist, dass es sich um die BSP handelt. Dieses Flag wird für alle anderen Prozessoren gelöscht.

Der BSP führt den Boot-Strap-Code des BIOS zur Konfiguration der APIC-Umgebung aus, richtet systemweite Datenstrukturen ein und startet und initialisiert die APs. Wenn die BSP und die APs initialisiert sind, beginnt die BSP mit der Ausführung des Betriebssystem-Initialisierungscodes.

1

Dies hängt von der Architektur des Prozessors ab. Es gibt nicht wirklich einen Standard für so etwas. Zum Beispiel hat der PS3-Kern 9 Kerne, von denen einer Tasks zu den anderen 8 plant. In diesem Fall ist es fair, darüber nachzudenken, dass ein Kern Verarbeitungsanweisungen vor den anderen 8 verarbeitet. Für andere Prozessoren ist dies ein schwieriger zu erkennen. Es wäre vernünftig anzunehmen, dass der Bootloader seine Instruktionen an den Satz von Kernen sendet, an welchem ​​Punkt jedes logische Gatter den Kernen Instruktionen auf jede Art und Weise zuweist, wie sie es immer tun. In den meisten Fällen weiß ich, dass zwischen der Aufgabenplanung beim Booten und zu keiner anderen Zeit ein Unterschied besteht. Die grundlegendste Task-Scheduling-Hardware wählt nur den ersten verfügbaren Kern aus, der normalerweise der Kern ist, der von der Maschine als "erster" betrachtet wird. Aber wie ich immer wieder sage, dass verschiedene Maschinen es anders machen, würde ich vorschlagen, herauszufinden, welchen Kern Sie verwenden und überprüfen, was dieser tut. Viel Glück.

+0

Sie für Ihre Info Dank. Du hast gesagt, "welcher Kern auch immer der" erste "von der Maschine ist - gibt es eine Möglichkeit, den aktuellen Core/CPU mit einigen asm Codes zu finden? So dass ich diesen Asm Code viele Male ausführen kann und alle coreids/cpuids finde? Ich habe Core 2 Duo .. Mein Ziel ist es, herauszufinden, die CPU aller Kerne in Bootloader-Level .. Wie kann ich das tun? –

+1

hmmm ... vom Aussehen der Dinge kann cpuid nur über den Prozessor selbst, nicht die Kerne darin erzählen.Zu wissen, welcher Kern in einem Prozessor, in dem Sie sich befinden, wenn der Befehl ausgeführt wird, klingt wie eine echte Herausforderung. Dies ist eine Verknüpfung zu den Datenseiten des von Ihnen verwendeten Kerns. Dies ist der Ort, um nach Informationen wie diese zu suchen: http://www.intel.com/design/core2duo/documentation.htm – usumoio

0

Jeder Prozessor seinen eigenen lokalen APIC mit nahe stehenden lokalen APIC-ID hat, kann dies eine von den lokalen APIC-Register gelesen werden (das gleiche auf jedem Prozessor unterschiedliche ID geben)