2013-01-10 10 views

Odpowiedz

7

Chcesz przeczytać lokalnego APIC, który można przeczytać w „objętości 2a”:

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

Każdy procesor ma odpowiedni lokalny apic, w każdym lokalnym APIC istnieje rejestr apic ID , któremu przypisuje się unikalną wartość w czasie inicjalizacji systemu.

Początkowy rdzeń, który jest dostępny online, nazywa się procesorem ładowania początkowym (BSP) i może to być dowolny fizyczny rdzeń matrycy. Więcej informacji znajduje się w "tomie 3a", gdzie omawia proces wyboru procesora ładowania początkowego.

Oto fragment vol3a:

8.4.1 BSP AP Procesory

Protokół inicjowania topnienia definiuje dwie klasy procesorów: procesor ładujący (BSP) i procesory aplikacji (APs). Po włączeniu lub RESET systemu MP, sprzęt systemowy dynamicznie wybiera jeden z procesorów na magistrali systemowej jako BSP. Pozostałe procesory są oznaczone jako AP.

W ramach mechanizmu wyboru BSP flaga BSP jest ustawiana w IA32_APIC_BASE MSR (patrz Rysunek 10-5) BSP, wskazując, że jest to BSP. Ta flaga jest wyczyszczona dla wszystkich innych procesorów.

BSP wykonuje kod pasków startowych systemu BIOS, aby skonfigurować środowisko APIC, konfiguruje struktury danych w całym systemie oraz uruchamia i inicjalizuje punkty dostępowe. Po zainicjowaniu BSP i AP, BSP rozpoczyna wykonywanie kodu inicjalizacji systemu operacyjnego.

1

To zależy od architektury samego procesora. Tak naprawdę nie ma standardu. Na przykład rdzeń PS3 ma 9 rdzeni jeden, który zestawia zadania z innymi 8. W tym przypadku można pomyśleć o nim w kategoriach tej jednej podstawowej instrukcji przetwarzania przed drugą 8. Jeśli chodzi o inne procesory, jest to trudniejsze do rozpoznania. Rozsądnie byłoby założyć, że bootloader wysyła swoje instrukcje do zestawu rdzeni, w którym punkcie, które bramki logiczne przypisują instrukcje do rdzeni, robią to w dowolny sposób, jaki zawsze mają. W większości przypadków wiem, że tak naprawdę nie ma różnicy między planowaniem zadań podczas uruchamiania i w dowolnym innym czasie. Najprostszy sprzęt do planowania zadań wybierze pierwszy dostępny rdzeń, który zwykle jest tym, który rdzeń jest uważany za "pierwszy" przez maszynę. Ale tak jak powtarzam, różne maszyny robią to inaczej, więc sugerowałbym dowiedzieć się, jakiego rdzenia używasz i sprawdzać, co on robi. Powodzenia.

+0

Dziękuję za info. Powiedziałeś, że "jakikolwiek rdzeń jest uważany za" pierwszy "przez maszynę" - czy istnieje sposób na sprawdzenie bieżącego core/cpuid za pomocą niektórych kodów asm? Tak, że mogę uruchomić ten kod asm wiele razy i dowiedzieć się wszystkich coreids/cpuids? Mam core 2 duo .. Moim celem jest dowiedzieć się cpuid wszystkich rdzeni w nim na poziomie bootloadera .. Jak mogę to zrobić? –

+1

hmmm ... z wyglądu rzeczy cpuid może ci tylko powiedzieć o samym procesorze, a nie o rdzeniach.Aby dowiedzieć się, który rdzeń wewnątrz procesora jesteś w trakcie wykonywania polecenia brzmi jak prawdziwe wyzwanie. To jest link do stron danych rdzenia, którego używasz. To jest miejsce, aby zacząć szukać takich informacji: http://www.intel.com/design/core2duo/documentation.htm – usumoio

0

Każdy procesor ma własną lokalną APIC powiązanego z lokalnym ID APIC, ten może być odczytywane z lokalnego rejestru APIC (ten sam podać inny identyfikator na każdy procesor)

Powiązane problemy