Clock Speed Intel-kompatibler Chips per ASM/C ermitteln?

W

wqretrhtfsdrtz

Guest
Wie kann man per Assembler (meinetwegen auch C, das sollte j

Wie kann man per Assembler (meinetwegen auch C, das sollte ja egal sein) die Taktrate Intel-kompatibler Chips ermitteln? Gibt´s irgendwelche Registerinhalte, aus denen man (zumindest die ungefähre) Taktrate ermitteln kann?

Konkret möchte ich mittels Time Stamp Counter eine Zeit messen - dazu muss ich aber erstmal wissen, wie oft dieser pro Sekunde weitergezählt wird.
 
[quote:9b683c9ed3=*Alisa 1387*]Wie kann man per Assembler (m

Alisa 1387 schrieb:
Wie kann man per Assembler (meinetwegen auch C, das sollte ja egal sein) die Taktrate Intel-kompatibler Chips ermitteln? Gibt´s irgendwelche Registerinhalte, aus denen man (zumindest die ungefähre) Taktrate ermitteln kann?

Konkret möchte ich mittels Time Stamp Counter eine Zeit messen - dazu muss ich aber erstmal wissen, wie oft dieser pro Sekunde weitergezählt wird.

Es gibt keine einfache Möglichkeit die Taktrate zu messen bzw. auszulesen. Im Zeitalter von SpeedStep etc. ist das auch nicht mehr zuverlässig.

Ich habe sowas immer mit der hardware clock gemacht.
Hier mal ein Artikel von gamedev.net über wie das geht.

Kaneda
 
Danke f

Danke für die Info.

Doch der Artikel schreibt über die Hardware Clock:
Find it and use it

Ich habe das Intel Architecture Software Developer´s Manual Volume 2 "Instruction Set Reference" vor mir liegen und konnte keinen Harware-Timer ausmachen. Ist der Timer ausserhalb der CPU irgendwo aufm Mainboard? Kannst du irgendwelche weiterführenden Hinweise dazu geben, wie man das Ding anspricht?

Danke...
 
Ja, w

Ja, würde ich gerne, aber ich bin im Büro und der Code liegt zu Hause. Wenn Du warten kannst poste ich das später. Es basiert aber auf der Win32-API Funktionen QueryPerformanceCounter() und QueryPerformanceFrequency(). Diese wiederrum holen sich die Werte vom Hardware-Timer (IRQ0).

Es sollte aber auch für Linux eine Funktion geben den Wert auszulesen. Das sollte sich aber sicher rausfinden lassen.

Diese Lösung ist eben m.M. nach die einfachste und schnellste wenn man kurze Zeitdistanzen mit hoher Auflösung messen will.
 
Irgendwo aufm Board scheint es standartm

Irgendwo aufm Board scheint es standartmäßig einen Timer mit der Bezeichnung Intel 8254 zu geben. Der wird wohl über Treiber angesprochen. Also kann ich nichtmal nen Timer ohne Treiber ansprechen? Vielleicht sollte ich meinen Fokus auch weiterhin lieber auf Mikrocontroller legen...
 
Über Treiber nur dann wenn ein OS Dich daran hindert wie z.B. Windows, Linux etc.
Falls du z.B. nur mit DOS arbeitest dann wäre das einfacher, dann würde das mit den Assembler IN/OUT Befehlen (und dem wissen welche Ports eben anzusprechen sind) gehen. Aber das ist dann nicht mehr unbedingt meine Stärke. Richtig fit war ich bei Hardware-naher programmierung nur auf dem Amiga. Für den PC-Timer gibt es aber sicher genügend Beispiele z.B. auf programmersheaven.com.

Für welches OS schreibst Du denn etwas ?
 
Unter DOS kann man realtime vergessen. Also am besten gleich

Unter DOS kann man realtime vergessen. Also am besten gleich ne externe Wordclock als Zeitmaß und die verfügbare Performance über das Cycle-Zähl-Register ermitteln.
 


Neueste Beiträge

News

Zurück
Oben