Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   CPUID Test (https://www.delphipraxis.net/32008-cpuid-test.html)

scp 17. Okt 2004 10:23


CPUID Test
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mich mal mit dem Thema beschäftigt und ein kleines Test-Prog mit Source geschrieben. Habe darin alle Informationen kombiniert, die ich finden konnte.
Dabei ist eine Liste von über 100 Prozessoren entstanden, darunter Intel/AMD/Cyrix, aber auch Exoten wie VIA/SiS/UMC/Transmeta.
Der Athlon 64 wird auch erkannt, bei seinen Features gabe ich bis jetzt nur AA64 gefunden, das nur ein Flag für die Erkennung der Architektur darstellt.
Bei AMDs wird der Name direkt aus dem Prozessor ausgelesen, bei den anderen wird der Name aus der Liste mittels Vendor/Family/Model usw. ermittelt. Ausserdem habe ich noch bei allen Intels/AMDs die Code-/Die-Namen oder was auch immer zussamengetragen, die ich finden konnte.

Wers testen/verwenden will kann es gerne tun und eventuelle Fehler melden.

EDIT: Die Namen von Intel P4s und Verwandten Mobiles/Celerons/Xeons werden jetzt über die BrandTable ermittelt.

scp 17. Okt 2004 10:38

Re: CPUID Test
 
So, habe den Fehler mit der Stringlist gefunden und beseitigt. Ist bei mir wohl nicht aufgefallen, weil die im Moment nur bei Intels verwendet wird. :oops:

mirage228 17. Okt 2004 10:55

Re: CPUID Test
 
Hi,

ich habe eine Art Endlosschleife, wenn ich auf GetCPU Info klicke.
Die Schleife, die scheinbar schuld ist, befindet sich in der CPUIDEx.pas in Zeile 829.

mfG
mirage228

P.S.: Wofür ist denn Project1.exe im Source Ordner gut? ;)

Alexander 17. Okt 2004 11:06

Re: CPUID Test
 
Bei mir ist es leider genau so :sad:
Habe es mit einem Intel Pentium (400 Mhz) probiert, nachher probiere ich es auch noch mal mit meinem AMD...

scp 17. Okt 2004 11:08

Re: CPUID Test
 
Endlosschleife dürfte beseitigt sein, hatte ein Inc(i) vergessen.

PS: Projekt1.exe entfernt, die war für nichts gedacht.

scp 17. Okt 2004 14:24

Re: CPUID Test
 
Code noch eine bißchen optimiert, die Flag-Auswertung habe ich jetzt in die CPUIDex.pas ausgelagert.

Mamphil 17. Okt 2004 14:30

Re: CPUID Test
 
Hi!

Warum habe ich manchmal nen 2466,66 MHz-Prozessort und mal einen mit 2500 MHz drin? Laut Rechnung habe ich 2.53B GHz....

Mamphil

Meflin 17. Okt 2004 14:37

Re: CPUID Test
 
bei mir schmälerts von eigentlichen 1700 Mhz auf 1666 Mhz! oder ist das toleranzbereich?

Robert_G 17. Okt 2004 14:40

Re: CPUID Test
 
Zitat:

Zitat von Mamphil
Hi!

Warum habe ich manchmal nen 2466,66 MHz-Prozessort und mal einen mit 2500 MHz drin? Laut Rechnung habe ich 2.53B GHz....

Das ist zumindest bei Intel vollkommen normal. Bei springt er auch mit ca. +-50Mhz um die 3,78.

Dax 17. Okt 2004 14:40

Re: CPUID Test
 
Bei mir funktioniert alles perfekt.
Glückwunsch! :thumb: Alle Infos sind richtig.

scp 17. Okt 2004 14:48

Re: CPUID Test
 
Komischerweise kommt er bei meinem AMD immer genau auf 1400, was bei anderen Tools auch schwankt. Naja die Speed ist auch eher Nebensache, die Funktion habe ich ja nicht verändert, nur übernommen.

Wer von euch hat den Intels? Würde mich besonders interessieren, weil ich da zur Zeit keine Testmöglichkeiten habe. Speziell was Unterscheidung zwischen Celeron/Pentium und die Codenamen angeht bin ich mir nicht so sicher.

PS: AMDler sind natürlich auch gerne als Tester gesehen :-)

Meflin 17. Okt 2004 14:49

Re: CPUID Test
 
ich hab p4 willamette, stimmt perfekt!

Mamphil 17. Okt 2004 14:50

Re: CPUID Test
 
Hi!
Zitat:

Zitat von scp
Wer von euch hat den Intels? Würde mich besonders interessieren, weil ich da zur Zeit keine Testmöglichkeiten habe. Speziell was Unterscheidung zwischen Celeron/Pentium und die Codenamen angeht bin ich mir nicht so sicher.

Bei mir wird - sofern ich mich nicht irre korrekt - angezeigt, dass ich einen Intel Pentium 4 (Northwood) installiert habe.

Mamphil

Robert_G 17. Okt 2004 14:51

Re: CPUID Test
 
Bei mir hat er auch den Presskopf richtig erkannt. :stupid:
Nachtrag:
Zitat:

Zitat von Mamphil
Bei mir wird - sofern ich mich nicht irre korrekt - angezeigt, dass ich einen Intel Pentium 4 (Northwood) installiert habe.

Jupp, 2,53Ghz == P4b Northwood

scp 17. Okt 2004 14:57

Re: CPUID Test
 
Na, das hört sich doch schonmal gut an. Wollte schließlich eine Erkennung, die beiden gerecht wird.

Alexander 17. Okt 2004 14:59

Re: CPUID Test
 
In meinem Notebook habe ich einen Pentium II Mobile. Das stimmt ;-)
Ob die Produktbezeichnung stimmt, keine Ahnung... (Mendocino sagt dein Programm, wird wohl stimmen :P)
Mit meinem AMD kann ich es nachher (wenn er wieder richtig läuft) auch noch mal überprüfen...

fiasko 17. Okt 2004 15:05

Re: CPUID Test
 
Hallo,

hier mal was dein Programm zu meinem Pentium-M sagt:

Zitat:

Instruction TLB: 4MB pages, fully assoc
Data TLB: 4MB pages, 4-way set assoc
VME - Virtual 8086 Mode Enhancements
DE - Debugging Extensions
PSE - Page Size Extensions
TSC - Time Stamp Counter
MSR - Model Specific Registers
MCE - Machine Check Exception
CX8 - COMPXCHG8B Instruction
SEP - Fast System Call
MTRR Memory Type Range Registers
PGE - PTE Global Flag
MCA - Machine Check Architecture
CMOV - Conditional Move and Compare Instructions
FGPAT - Page Attribute Table
MMX - MMX instruction set
FXSR - Fast FP/MMX Streaming SIMD Extensions save/restore
XMM - Streaming SIMD Extensions (SSE) instruction set
SSE2 - SSE2 instruction set
L1d Cache: Size 0KB, Assoc 0, Lines 0, Line Size 0, TLB 8, TLB Assoc 0
L1i Cache: Size 0KB, Assoc 0, Lines 0, Line Size 0, TLB 2, TLB Assoc 0
der Linux Kernel meint:

Zitat:

Zitat von /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 2.00GHz
stepping : 6
cpu MHz : 1993.560
cache size : 64 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe tm2 est
bogomips : 3971.48


auf jedenfall zeigt die Taktratenanzeige immernur den aktuellen Takt an... der schwank bei einem Pentium-M ja andauernd... allerdings erkennt er nirgends die 2GHz. Achja - soll im Label6 der Prozessor stehen? Das bleibt leer...

scp 17. Okt 2004 15:11

Re: CPUID Test
 
Ah, den hatte ich noch nicht in der Liste. Weisst du zufällig den "Codenamen"?
Wie schon gesagt, an der Taktrate werde ich nichts ändern, es sei denn ich finde (zufällig) noch eine andere Funktion dafür.

micsie 17. Okt 2004 15:23

Re: CPUID Test
 
Hallo,

ich habe das Programm auf meinem Notebook getestet, angezeigt wird ein Intel Pentium 4 (Northwood).
Ich habe aber einen Mobile Intel Pentium 4 M 1,80 GHz.

mfg micsie

scp 17. Okt 2004 15:33

Re: CPUID Test
 
Am besten gibts du mal Family/Model/Ext.Family/Ext.Model durch, dann kann ich das zuordnen.
Das geht auch an alle anderen, falls was nicht stimmt.

micsie 17. Okt 2004 15:42

Re: CPUID Test
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Screenshot mit den Daten.
Die Taktrate wird wie beim Pentium automatisch geregelt. Ich bezweifle aber, dass die 1,8 GHz CPU im Modus "minimale Batteriebelastung" immer noch mit 1,2 GHz läuft.

mfg

scp 17. Okt 2004 16:08

Re: CPUID Test
 
Habe ihn jetzt mal eingetragen, weis allerdings nicht, ob es dann einen "normalen" Pentium 4 gibt, der diesselbe Family/Model/Ext.Family-Kennzeichnung hat.

EDIT: Habs rausgefunden und eingetragen: der "normale" hat ne andere Brand-ID.

fiasko 17. Okt 2004 16:42

Re: CPUID Test
 
Zitat:

Zitat von scp
Ah, den hatte ich noch nicht in der Liste. Weisst du zufällig den "Codenamen"?
Wie schon gesagt, an der Taktrate werde ich nichts ändern, es sei denn ich finde (zufällig) noch eine andere Funktion dafür.

Hmm, meinst du Pentium-M 755?

scp 17. Okt 2004 18:13

Re: CPUID Test
 
Nein, ich meinte "Dothan", aber jetzt weiss ichs ja :)
Habe diesen CPU jetzt eingetragen und habe jetzt die richtige BrandTable für P4s eingebaut, die Namen dürften jetzt stimmen.

DaBoss 17. Okt 2004 22:31

Re: CPUID Test
 
Wen es interessiert, hier mal ein paar c sourcen, mit denen sich die CPU frequenz exakt bestimmen lässt...

long __stdcall GetCPUFrequency(void)
{
LARGE_INTEGER ulFreq, ulTicks, ulValue, ulStartCounter, ulEAX_EDX;
QueryPerformanceFrequency(&ulFreq);
QueryPerformanceCounter(&ulTicks);
ulValue.QuadPart = ulTicks.QuadPart + ulFreq.QuadPart;
_asm
{
rdtsc
mov ulEAX_EDX.LowPart, EAX
mov ulEAX_EDX.HighPart, EDX
};
ulStartCounter.QuadPart = ulEAX_EDX.QuadPart;
do
{
QueryPerformanceCounter(&ulTicks);
} while (ulTicks.QuadPart <= ulValue.QuadPart);
_asm
{
rdtsc
mov ulEAX_EDX.LowPart, EAX
mov ulEAX_EDX.HighPart, EDX
};
ulFreq.QuadPart = ulEAX_EDX.QuadPart - ulStartCounter.QuadPart;
return (long) ulFreq.QuadPart / 1000000;
};

Das Original ist von Code-Guru, von wem weiß ich nicht. Hab es ein wenig modifiziert... braucht genau :) 1 sekunde und ermittelt immer die selbe frequenz...

Muetze1 17. Okt 2004 22:35

Re: CPUID Test
 
Moin!

@scp: Dein Tool ermittelt falsche Werte beim Cache:

Zitat:

Zitat von TestCPUIDEx
Instruction TLB: 4K, 2M or 4M pages, fully associative
Data Cache: Sectored, 64 byte cache line, 4 way set associative, 8K
L2 unified cache: No L2 cache
Instruction Trace Cache: 4 way set associative, 12K uOps
L1i Cache: Size 0KB, Assoc 0, Lines 0, Line Size 0, TLB 64, TLB Assoc 0

Zitat:

Zitat von mein Tool
cache information
Instruction TLB: 4-KB, 2-MB or 4-MB pages, fully associative, 64 entries
Data TLB: 4-KB or 4-MB pages, fully associative, 64 entries
1st-level data cache: 8-KB, 4-way set associative, sectored cache, 64-byte line size
No 2nd-level cache or, if processor contains a valid 2nd-level cache, no 3rd-level cache
Trace cache: 12K-uops, 8-way set associative
2nd-level cache: 512-KB, 8-way set associative, sectored cache, 64-byte line size

Cache summary...
8 KB L1 cache
-> 0 KB L1 instruction cache
-> 8 KB L1 data cache
512 KB L2 cache
no L3 cache

Wobei ich glaube, das sich dein Tool vor allem beim 2nd Level Cache an dem fett markierten Eintrag in den Cache Deskriptoren verschluckt...

MfG
Muetze1

tn249 17. Okt 2004 22:41

Re: CPUID Test
 
mein p2 , der mit 266Mhz angegeben ist kommt laut deinem programm nur auf 250Mhz

Luckie 21. Sep 2005 17:33

Re: CPUID Test
 
Wenn ich es so aufrufe:
Delphi-Quellcode:
  sl := TStringList.Create;
  CPUInfo := GetCPUInfo(sl);
Dann lande ich wohl irgendwo in einer Endlosschleife.

Deine Demo geht aber bei mir.

Alles, was ich eigentlich brauche ist:
Delphi-Quellcode:
s := CPUInfo.Brandname + ' ' + CPUInfo.Codename;
Nachtrag: Habe Mist gebaut. :wall: Geht jetzt.

Und die Features in eine StringListe zu stecken finde ich etwas unpraktisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz