2011-07-16 12 views
8

Mam 2 pytania: 1. Czy maszyna może mieć dwa lub więcej procesorów, które różnią się w modelu? 2. Jeśli wezwę instrukcji CPUID, wynik będzie inny, gdy różne procesory ją wykonają? (Jeśli odpowiedź na pytania 1 jest słuszna, jest to oczywiste). Jeśli tak, w jaki sposób mogę uzyskać informacje o wszystkich procesorach za pomocą instrukcji CPUID.Instrukcja procesora na maszynie z wieloma procesorami fizycznymi

+0

+1 w celu zrekompensowania negatywnego wyniku głosowania. ktokolwiek to zajął: czy chcesz wyjaśnić? –

Odpowiedz

5

Do tego trzeba odróżnić „gniazd” i „rdzeni” ponieważ termin „procesor” jest niejednoznaczna.

CPUID podaje informacje na temat bieżącego gniazda , co oznacza gniazdo, w którym znajduje się rdzeń, w którym aktualnie działa bieżący wątek (wątek zawierający kod operacji CPUID).

Różne gniazd może zawierać nieco innego sprzętu, o ile są one zgodne, więc:

Aby uzyskać informacje na temat innego gniazda trzeba upewnić się, że proces zostanie wykonany na gnieździe w pytaniu: Można zamówić systemu operacyjnego, aby uruchomić wątek na określonym gnieździe, ale jest to zależne od systemu operacyjnego. Wyszukiwarka: ustawienie podobieństwa procesora dla wątku w systemie operacyjnym.

CPUID powie Ci wszystko, co musisz wiedzieć o bieżącego gniazda, w tym liczbę „procesorów logicznych”: logiczne Ilość procesor jest równa liczbie rdzeni jeśli rdzenie nie są hyperthreaded, jeśli są hyperthreading, wtedy liczba procesorów logicznych będzie podwójna.

6

Tak i nie. Istnieje wiele systemów, które obsługują wiele procesorów i są bardzo różne. Grający w piłkę gracz ma zarówno gracza opartego na ramieniu, jak i gracza z80 (nie może jednocześnie używać obu). ale nds ma arm9 i arm7 (można używać obu jednocześnie). Omap, który można znaleźć na beagleboard ma ramię i TI dsp (można używać obu jednocześnie). Zakładam, że mówiłeś o systemach x86. Większość komputerów to tylko x86. Twoja mysz i klawiatura oraz podobne rzeczy prawdopodobnie mają 8051 lub inne smaki mikrokontrolerów. Ale nie obchodzi cię to, ponieważ są to tylko urządzenia USB HID lub napędy cdrom lub dyski twarde. Nie możesz naprawdę dostać się do procesora, więc nie ma znaczenia, że ​​się pojawi. Laptopy i wysokiej klasy systemy serwerowe i prawdopodobnie dekstops wkrótce mają drugi procesor lub komputer, ponieważ laptop to prawdopodobnie ramię, znacznie niższa moc, więc x86 może być wyłączony w trybie gotowości, ramię utrzymuje rzeczy przy życiu, po przebudzeniu pojawia się bardzo szybko. Na serwerze drugi system działa jako kuloodporny organ nadzorujący, pilnuje serwera, zapewnia monitorowanie i niektóre zdalne resetowanie oraz inne funkcje. Podobnie nie możesz dostać się do tego procesora, więc nie ma znaczenia, jeśli nie możesz znaleźć w transakcji CPUID. Kolejną jest Twoja karta wideo, setki do tysięcy procesorów graficznych. Możesz uzyskać dostęp do swoich programów, tak jak w omap dsp, ale nie robisz ogólnego przetwarzania, więc znowu CPUID nie musiałby podawać tych informacji.

Tak tak i nie. Twój system komputerowy jako całość, łącznie z urządzeniami peryferyjnymi, ma wiele różnych procesorów, ale przetwarzanie ogólnego przeznaczenia jest zwykle pojedynczym lub wielordzeniowym z tej samej rodziny, zwykle wewnątrz tego samego układu. Tak więc CPUID naprawdę musi dać ci ten rdzeń/rodzinę.

1

Zakładam, że obecność cpuid w twoim pytaniu oznacza kontekst x86/x64.

Płyta główna z wieloma gniazdami (w rzeczywistości bios) zazwyczaj wymaga, aby wszystkie zainstalowane procesory zgłaszały te same informacje o cpuid, które są dokładnie takie same. Sądzę, że możliwe byłoby posiadanie procesorów, które są równe pod względem architektonicznym, ale o różnych częstotliwościach, ale wtedy producent mb musiałby wymienić, które kombinacje działają, a które nie odpowiadają i odpowiadać na niekończące się e-maile o tym, dlaczego to lub to podobno kompatybilne combo nie działa .

+0

Jest to możliwe (widziałem to z Pentium 3 o tej samej prędkości magistrali, różnych prędkościach procesora), ale nie jest to obsługiwane. Linux działał bardzo dziwnie, ponieważ zakładał, że wszystkie procesory miały taką samą prędkość. Nie sądzę, aby system Windows w ogóle działał. –