7.e.Q
28-11-2005, 14:05
Hi Leute,
aufgrund des Tipps eines Kollegen hier benutze ich die folgende Funktion dazu, den TSC der CPU auszulesen:
static inline unsigned long long TSCRead(void)
{
unsigned long long xHilf;
__asm__ volatile( "rdtsc" : "=A" (xHilf) );
return xHilf;
}
Ich möchte nun gerne wissen, wie ich diesen Wert in Mikrosekunden Laufzeit umrechnen kann. Bisher mache ich das folgendermaßen (Pseudocode):
wert1 = TSCRead();
sleep(1); // Sekunde warten
wert2 = TSCRead();
diff = wert2 - wert1;
usec = diff / 1000000;
So weiß ich dann, um wieviele Zähler der TSC pro Mikrosekunde hochgezählt wird. Aber das Messen per sleep(1) nimmt halt eine Sekunde in Anspruch. Steht der Wert von TSC Zählern pro Mikrosekunde nicht vielleicht schon irgendwo im System?
EDIT: Okay, da es sich dabei ja um den Taktzähler handelt, erhöht sich der TSC in einer Mikrosekunde ziemlich genau um die Anzahl MHz der CPU. Logisch.
Jetzt weitere Fragen:
1. wie erhalte ich die genaue CPU Frequenz?
2. wie verhält es sich mit der Funktion auf HT/SMP Systemen?
Danke
Gruß,
Hendrik
aufgrund des Tipps eines Kollegen hier benutze ich die folgende Funktion dazu, den TSC der CPU auszulesen:
static inline unsigned long long TSCRead(void)
{
unsigned long long xHilf;
__asm__ volatile( "rdtsc" : "=A" (xHilf) );
return xHilf;
}
Ich möchte nun gerne wissen, wie ich diesen Wert in Mikrosekunden Laufzeit umrechnen kann. Bisher mache ich das folgendermaßen (Pseudocode):
wert1 = TSCRead();
sleep(1); // Sekunde warten
wert2 = TSCRead();
diff = wert2 - wert1;
usec = diff / 1000000;
So weiß ich dann, um wieviele Zähler der TSC pro Mikrosekunde hochgezählt wird. Aber das Messen per sleep(1) nimmt halt eine Sekunde in Anspruch. Steht der Wert von TSC Zählern pro Mikrosekunde nicht vielleicht schon irgendwo im System?
EDIT: Okay, da es sich dabei ja um den Taktzähler handelt, erhöht sich der TSC in einer Mikrosekunde ziemlich genau um die Anzahl MHz der CPU. Logisch.
Jetzt weitere Fragen:
1. wie erhalte ich die genaue CPU Frequenz?
2. wie verhält es sich mit der Funktion auf HT/SMP Systemen?
Danke
Gruß,
Hendrik