AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte CPUiD 3.0 - Ein kleines System - Diagnoseprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

CPUiD 3.0 - Ein kleines System - Diagnoseprogramm

Ein Thema von Daniel G · begonnen am 15. Jul 2005 · letzter Beitrag vom 12. Jun 2008
Antwort Antwort
Seite 9 von 16   « Erste     789 1011     Letzte »    
Daniel G
Tach alle zusammen,

ich dachte mir, vielleicht würde euch dieses kleine Programm gefallen.

Was macht es:

"CPUiD 3.0" liefert euch Informationen zu eurem Prozessor, der in eurem System werkelt.
Derzeit werden ~400 Prozessoren erkannt, darunter auch einige Exoten von NSC oder SiS.


Außerdem zeigt euch dieses Programm noch Informationen zu den im System verwendeten Arbeitsspeicher und BIOS an, sowie einige allgemeine Systeminformationen, wie Betriebssystem, Vergangene Zeit seit Windowsstart u.v.m.


Hätte ich das alles alleine geschrieben, wäre ich vermutlich immer noch am Schreiben.

Deshalb vielen Dank an scp, der mir eine aktualisierte Version seiner Unit "CPUIDEx.pas" zu Verfügung gestellt hat.
Außerdem danke ich noch Nico für seine "BIOSHelp" - Unit, die mir als Grundlage für die neuen Features gedient hat.

Neuste Version:
CPUiD 3.0 (~668 kb)
Screenshot (~60 kb)

DBug - Version:
Falls ihr irgendwelche unerklärlichen Exceptions bekommt, solltet ihr die DBug - Version herunterladen und den Report hier anhängen oder mir per E-Mail schicken.
http://www.danielstools.de/downloads...D_3_0_DBug.exe (~756 kb)

____________________________________
************************************
Version 3.0.3
Datum: 26.01.2006
Changes:


(von mir)
* CPUiD ist jetzt bilingual: Deutsch und Englisch. Diese Sprachen können über das Einstellungenmenü verändert werden.
* Zahlreiche Fehler entfernt
+ "CPU - FLAGS" zum Report hinzugefügt


____________________________________
************************************
Version 3.0.1
Datum: 15.01.2006
Changes:


(von mir)
- Schwere Fehler behoben
____________________________________
************************************
Version 3.0.0
Datum: 13.01.2006
Changes:


(von scp)
* Verbessern der Cache - Erkennung


(von mir)
+ SMBIOS implementiert (Vielen Dank an NicoDE für seine Unit)
+ Daten zum Arbeitsspeicher unter Windows werden angezeigt
+ Es ist nicht mehr möglich, den Report als HTML - Datei zu speichern. Stattdessen wird er
als Plaintext gespeichert.
+ Das Logo des Herstellers wird, falls möglich, angezeigt
+ Das Programm verfügt jetzt über eine Toolleiste, die Zugriff auf einige Features bietet
+ Shortcuts
+ "Über..." - Tab hat jetzt eine scrollende Credits - Liste
+ Im "Über..." - Tab wird ein Logo angezeigt.
+ Die Betriebssystemversion wird angezeigt
+ Der Benutzer- und/oder Computername wird angezeigt (soweit verfügbar)
* Verbesserte CPU - Geschwindigkeitsmessung


Tja, wenn euch gerade langweilig ist, könnt ihr ja mal einen dezenten Blick darauf werfen. Ich wäre euch auf jedenfall für jede Art von Feedback dankbar.

so long,
Daniel

[Edit] Schlechtschreibfehler [/Edit]
 
Daniel G
 
#81
  Alt 16. Jan 2006, 14:36
Juchuhh...

Dann kann ich mich endlich um all' die anderen kleinen Details kümmern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#82
  Alt 16. Jan 2006, 14:55
Also bei mir kommt immer noch
Zitat:
---------------------------
CPUiD 3.0
---------------------------
'' ist kein gültiger Integerwert.
---------------------------
OK
---------------------------
Michael
  Mit Zitat antworten Zitat
Basilikum

 
Delphi 7 Professional
 
#83
  Alt 16. Jan 2006, 15:44
Zitat von Daniel G:
Soo... Ich hab' mal deine obige Erweiterung eingebaut, Basilikum. Ich hoffe mal, dass es jetzt keine Probleme mehr mit HT - Prozessoren gibt.
jep... jetzt startet das Tool angenehm schnell (< 1 sec) und die CPU-Frequenz stimmt !
  Mit Zitat antworten Zitat
omata

 
Delphi 7 Enterprise
 
#84
  Alt 16. Jan 2006, 16:00
Ja, jetzt geht es auch bei mir. super!

Habe aber nochwas gefunden:
Auf dem Reiter BIOS, Speicher & RAM und dort Art des Slots: kann ich immer noch editieren.

MfG
Thorsten
  Mit Zitat antworten Zitat
Daniel G
 
#85
  Alt 16. Jan 2006, 16:01
Zitat von Luckie:
Also bei mir kommt immer noch
Zitat:
---------------------------
CPUiD 3.0
---------------------------
'' ist kein gültiger Integerwert.
---------------------------
OK
---------------------------
War ja klar

Sind die anderen Felder auch noch leer?
kannst du mir mal 'nen Screenshot zeigen, damit ich sehen kann, welcher Wert die Ursache sein könnte?


@Basilikum: Danke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#86
  Alt 16. Jan 2006, 16:04
Kommen.
Miniaturansicht angehängter Grafiken
cpuid01_212.png   cpuid02_456.png   cpuid03_852.png  
Michael
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#87
  Alt 16. Jan 2006, 18:02
Da der Rechner von Luckie gesagt hat das '' ist kein gültiger Integerwert ist wollte ich das mal auf meinem Rechner überprüfen und musste feststellen dass das nicht simmt, denn bei mir kommt kein Fehler, also muss "" ein gültiger Integerwert sein.

Keine Fehler gefunden (bis auf das editieren). Ich hätte aber gern noch eine Gesamtsumme des Arbeitsspeichers auf einen Blick.
Matti
  Mit Zitat antworten Zitat
Daniel G
 
#88
  Alt 16. Jan 2006, 20:58
Zitat von turboPASCAL:
Da der Rechner von Luckie gesagt hat das '' ist kein gültiger Integerwert ist wollte ich das mal auf meinem Rechner überprüfen und musste feststellen dass das nicht simmt, denn bei mir kommt kein Fehler, also muss "" ein gültiger Integerwert sein.
Hä?

Zitat von turboPASCAL:
Ich hätte aber gern noch eine Gesamtsumme des Arbeitsspeichers auf einen Blick.
Lässt sich einrichten.

//Edit:
Ähhh.... Das wird doch schon angezeigt. Siehe Anhang, rot eingerahmt.

@Luckie:
Liegt wohl daran, dass der FSB nicht ermittelt werden kann. Ich check das mal...
Miniaturansicht angehängter Grafiken
cpuid_363.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#89
  Alt 16. Jan 2006, 21:34
Zitat von Basilikum:
eigentlich deinem Vorgehen recht nahe, ausser dass ich die CPU während der Schlaufe künstlich beschäftigt halte (damit er nicht plötzlich aus langeweile irgend welche Pausen einlegt und nicht die volle Takt-Zahl gemessen wird)...

das einzige - jedoch unlösbare - Problem ist, dass man die beiden Operationen "RDTCS" und "QPC" nicht atomar durchführen kann... sobald sich ein anderer Thread zwischen diese beiden Operationen schiebt, entstehen Fehler...
Es ist exakt das was ich vorschlug

Unlösbar ist relativ zu sehen. Wichtig sind zwei Dinge:

1.) die beiden Aufrufe RDTSC + PerformanceCounter müssen exakt synchron sein, d.h.

Delphi-Quellcode:

1.)
    C1 := RDTSC;
    C2 := PerformanceCounter;

2.)
    C3 := RDTSC;
    C4 := PerformanceCounter;

3.)
    F := (C3 - C1) / (C4 - C2) * PerformanceFrequency;
die Sourcezeilen 1.) und 2.) müssen exakt identisch sein, gleiche Reihenfolge der Aufrufe und sollten wenn es möglich wäre per CLI/STI geschützt werden.

2.) geht man nun rein statistisch vor so können bei beiden Aufrufen irgendwelche Ereignisse des OS dazwischenfunken exakt zwischen RDTSC und PerfoemanceFrequency. Da wir aber bei Punkt 1.) und 2.) exakt die gleiche Codesequenz benutzen ist bei beiden Sequenzen die Wahrscheinlichkeit für eine Störung exakt gleich. Wenn also bei Sequenz 1.) zb. 50% Wahrscheinlichkeit beträgt so beträgt die Wahrscheinlichkeit -50% das bei 2.) die gleiche Störung auftritt. Somit gleicht sich ein Meßfehler bei 1.) durch den Meßfehleer bei 2.) wieder aus. Der Grund für diese "gleichverteilte" Wahrscheinlichkeiten liegt in der Arbeitsweise unserer Rechner. Sie sind exakt Taktbasiert, sehr periodisch und sehr statistisch gleichverteilt.

Ergo: die resultierende Genauigkeit der Meßmethode ist bei weitem ausreichend wenn man bedenkt das der PerformanceCounter mit 1.6 MHz Auflösung läuft.

Als Meßverzögerung in Sleep(x) reicht 1 Millisekunde aus. Die Dauer dieser Zeitverzögerung hat dabei nur einen sehr unwesentlichen Einfluß auf die erreichte Genauigkeit. D.h. ob man beim Sleep(x) 1 Sekunde wartet oder nur 1 Millisekunde lang wird nur die Meßdauer verändern nicht das Resultat ! Ergo ist es mit dieser Methode nicht nur exakter sondern man kann auch die Meßzeit enorm verkürzen.

Ausreichend dürfte eine Meßdauer von 1 / PerformanceFrequency * 2 sein, da das Abtasttheorem (Nyquist) dies dikiert.

Ich benutze immer folgendes

Delphi-Quellcode:
  Tick := GetTickCount +1;
  while Tick <= GetTickCount do
    Sleep(0);
Dies dauert dann schon 800 mal länger als erforderlich. Das Sleep(0) erzwingt einen Taskswitch und sollte immer vor der Messung an Punkt 1.) und 2.) durchgeführt werden. Das liegt an der Arbeitsweise des Taksshedullers. Wechselt dieser von einem Taks zu einem anderen Task so stellt dieser sicherer das der neue aktive Task eine Mindestausführungszeit bekommt. Diese Ausführungszeit ist weit länger als die Aufrufe des RDTSC und PeformanceCounter ansich benötigen. Ergo, nachdem Sleep(0) in unseren Code zurückkehrt können wir zeimlich sicher sein das die nachfolgenden zwei Sourcezeilchens nicht extern unterbrochen werden. (Außnahmen sind Ring0 und Interrupts, die beide aber wieder hoch periodische Ereignisse sind).

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#90
  Alt 16. Jan 2006, 23:21
Zitat von Daniel G:
Zitat von turboPASCAL:
Ich hätte aber gern noch eine Gesamtsumme des Arbeitsspeichers auf einen Blick.
Lässt sich einrichten.

//Edit:
Ähhh.... Das wird doch schon angezeigt. Siehe Anhang, rot eingerahmt.
Stimmt... ja. Das es nicht unter "RAM" steht hat mich wohl etwas verwirrt
Matti
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 16   « Erste     789 1011     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz