CPUID - generowanie id

0

Witam, miałbym prośbę, a mianowicie piszę program, który pokazuje informację o sprzęcie komputerowym. A mianowicie, w przypadku procesorów AMD sprawa jest ułatwiona, gdyż można to odczytać z CPUID (pobierając ext_family, ext_model i nr socket). Ale w przypadku procesorów INTEL tak już nie da rady. I tu moje pytanie czy w miarę możliwości pomożecie mi uzbierać bazę procesorów INTEL. Wystarczy pobrać program, który link poniżej (jest to program ze strony cpu-world), on generuje informacje i generuje link do strony. Wystarczy że po wygenerowaniu strony wyślecie mi np. na pw link do tej strony. Z góry dzięki. Oczywiście gdy uzbieram wszystko upublicznię plik .inf z danymi.

http://www.cpu-world.com/Download/CPU_identification.html

0

w przypadku procesorów AMD sprawa jest ułatwiona, gdyż można to odczytać z CPUID (pobierając ext_family, ext_model i nr socket). Ale w przypadku procesorów INTEL tak już nie da rady

huh? przecież procki Intela też mają instrukcję CPUID.

o jaką informację ci właściwie chodzi?

nie przyszło ci do głowy poszukać na stronie Intela jakiejś listy procesorów wraz ze sposobem ich identyfikacji?

0

Właśnie szukałem ale nie mogłem znaleźć, po prostu chciałbym zrobić, abym mógł na podstawie danych z CPUID określić jaki socket. Ale są procesory które mają taki sam CPUID.

0

W przypadku procesorów Intela także uzyskasz informacje o ext_family i ext_model. Potrzebna będzie do tego wstawka assemblerowa. Może są jakieś biblioteki do tego, ale ja ich nie znam, więc ci nie podpowiem jakie.

W assemblerze ładujesz do rejestru EAX wartość 1 i po wywołaniu CPUID w rejestrze EAX na bitach 27:20 masz ext_family. Natomiast na bitach 19:16 masz ext_model.
Jeśli chodzi o rodzaj socketu to Intel nie dostarcza takich informacji poprzez CPUID(przynajmiej tak było jak ja tym się zajmowałem). Z pewnością jest jakiś manual opisujący jakie sockety do jakich procków.

0

@MMWW no właśnie tak pobieram, tylko tak jak napisałeś, nigdzie nie mogę znaleźć jak rozróżniać sockety za pomocą CPUID.

Mógłbym zrobić listę za pomocą Processor name (BIOS), tylko że na cpu-world nie do każdego procesora jest przypisane jaka jest nazwa wyświetlana w komputerze.

np. http://www.cpu-world.com/cgi-bin/CPUID.pl?CPUID=48942_80143067

0

"Ręczne" robienie takiego zestawiania cpu - socket odradzam. Sporo czasu na to poświęcisz. Google twym najlepszym przyjacielem jest. Szukaj manuali na stronie Intela lub w sieci. Jak nie znasz angielskiego dobrze to będziesz miał spore kłopoty.

Jeszcze jedne link - może się przyda:

http://sandpile.org/x86/cpuid.htm

0

Powershell: Get-WmiObject -Class Win32_Processor | Select-Object SocketDesignation

WMI bierze tę informację z SMBIOS (która nie musi być w 100% dokładna; u mnie na desktopie pokazuje prawdziwy socket, a na laptopie znajomego jakieś oznaczenie Acera).

1

Potrzebna będzie do tego wstawka assemblerowa

nieee....

#include <iostream>
#include <intrin.h>
using namespace std;

int main()
{
	int cpuInfo[4];
	__cpuid(cpuInfo, 1);
	
	int eax = cpuInfo[0];

	int stepping = eax & 15;
	int model = (eax >> 4) & 15;
	int family = (eax >> 8) & 15;
	int type = (eax >> 12) & 3;
	int ext_model = (eax >> 16) & 15;
	int ext_family = (eax >> 20) & 255;

	cout << "stepping\t" << stepping << endl;
	cout << "model\t\t" << model << endl;
	cout << "family\t\t" << family << endl;
	cout << "type\t\t" << type << endl;
	cout << "exmodel\t\t" << ext_model << endl;
	cout << "exfamily\t" << ext_family << endl;

	return 0;
}

To dla Visuala. Pod MinGW też jest funkcja __cpuid() w <cpuid.h>, ale przyjmuje inne parametry.

Nie wiem jak pod Linuksem.

0

@MMWW na tej stronie co podałeś to właśnie jest tylko jak odróżnić w przypadku procesorów INTEL'a.

@Rev w moim przypadku pokazuje P0 :D

@Azarien no to właśnie tak pobieram, z cpuid.

1 użytkowników online, w tym zalogowanych: 0, gości: 1