PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Bibliothek/Klasse zur CPU Info Bestimmung


Chris Lux
2006-05-14, 18:02:21
Hi,
ich möchte einen portablen Weg finden CPU Infos, wie Featureset und Anzahl physischer und logischer CPUs zu bestimmen. Ich habe folgendes schon gefunden [1]. Das gefällt mir schon sehr gut, doch ist es doch schon recht alt und Sachen wie SSE3 fehlen. Gibt es vielleicht eine OpenSource Lib, die möglicherweise noch gepflegt wird, die dies erledigt?

[1] http://www.codeproject.com/system/camel.asp

Coda
2006-05-17, 11:02:54
Also den Test für SSE3 kannst du mit der Dokumentation von Intel sehr leicht selber hinzufügen.

MadMan2k
2006-05-17, 12:58:26
steht doch alles in /proc/cpuinfo drin?

Chris Lux
2006-05-17, 13:03:14
MadMan2k[/POST]']steht doch alles in /proc/cpuinfo drin?
sorry aber ich hab portabel geschrieben...

generell hab ich mir die intel docs schon angesehen. klar kann ich das selbst machen, aber was ich suchte war ein transparenter weg, um diese features zu detektieren. also wenn neue sachen rauskommen oder der weg ein anderer wird dies festzustellen...

schade, dass es sowas nicht zu geben scheint.

Trap
2006-05-17, 13:06:30
MadMan2k[/POST]']steht doch alles in /proc/cpuinfo drin?
Nicht wenn man bootloader oder OS startup code schreibt ;)

Windows hat das nicht, Solaris auch nicht (BSD keine ahnung)...

Trap
2006-05-17, 13:09:29
Chris Lux[/POST]']also wenn neue sachen rauskommen oder der weg ein anderer wird dies festzustellen...
Der Weg wird sich nie ändern.

Wenn was neues dazukommt muss man den Code sowieso anpassen um es zu nutzen, eine Erkennungslib bringt einem höchstens was wenn man eine Featureliste erzeugen will, wenn man die Features tatsächlich nutzen möchte halte ich eine sowas (Erkennungslib) für völlig unnötig.

Coda
2006-05-17, 13:12:09
Im Prinzip ist das eh nur ein CPUID und danach etwas Bitfummelei. Nix schwieriges.

Portabel geht das eh nur wenn man dafür irgend nen Cross-Platform-Assembler wie NASM benützt.

Trap
2006-05-17, 13:15:30
Semiportabel ist den Code als Konstante ins Programm zu packen und dann einfach aufzurufen, gibt nur Ärger mit data execution protection...

Coda
2006-05-17, 13:45:22
Und mit anderen CPU-Architekturen *g*

Trap
2006-05-17, 13:51:44
Die CPU-Architektur sollte man zu dem Zeitpunkt schon kennen, wenn man herausfinden möchte, welche optionalen Features der Architektur die CPU unterstützt.

Chris Lux
2006-05-17, 14:35:43
der code, den ich oben verlinkt habe soll an sich auch auf dem gcc laufen. nur die QueryPerformanceXX Sachen werden wohl unter Linux nicht gehen. unterscheidet sich der inline assembler vom visual c++ und dem gcc so arg? (hab noch nie mit dem inline assembler gearbeitet...)

Coda
2006-05-17, 18:04:02
Trap[/POST]']Die CPU-Architektur sollte man zu dem Zeitpunkt schon kennen, wenn man herausfinden möchte, welche optionalen Features der Architektur die CPU unterstützt.
Das war schwerzhaft gemeint..

Chris Lux[/POST]']unterscheidet sich der inline assembler vom visual c++ und dem gcc so arg? (hab noch nie mit dem inline assembler gearbeitet...)
Ja. Brutalst.