Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

exakte Zeitmessungen auf Multiprozessoren

  Alt 29. Sep 2006, 21:44
Hi Leute,

heute musste ich erstaunt feststellen das meine Zeitmessroutinen/Taktanzahlmessungen auf einem Intel Duo Core Laptop total falsche Ergebnisse liefern. Ich hatte mich schon damit abgefunden das zb. meine Pi Berechnungen auf einem Core Duo 2.16Ghz Laptop nur 4 mal schneller sind als auf einem P4 1.5Ghz Rechner. Das heist das mein Laptop nur 4 mal schneller ist und nicht mehr Power hergibt.

Jetzt musste ich aber feststellen das es garnicht an dem ist, sondern das meine Zeitmessungen falsche Ergebnisse liefert. Es scheint nun wohl so zu sein das auf dem Laptop die Berechnungen ca. 12 mal schneller sind, was mich natürlich freut, da ich nun einen Rechner habe der innerhalb der letzten Stunde drastisch schneller geworden ist

Ok. Meine Messroutinen arbeiten mit dem Real Time Counter -> RDTSC. Um dessen Werte in Zeiten umrechnen zu können messe ich mit QueryPerformanceCounter()/Frequency() quasi die Taktfrequenz der CPU aus. RDTSC liefert ja nur die CPU Takte zurück und zb. keine Millisekunden.

Nun, das Ausrechnen dieser Taktfrequenz scheint wohl auf Multiprozessoren nicht ganz trivial zu sein. Besonders weil ja auf Laptops zusätzlich noch das ACPI dazwischen funkt und den Prozessortakt variabel einstellen kann.

Gut, ich weis das man mit GetTickCount() auf der sicheren Seite ist, allerdings ist dessen Auflösung eben nicht berauschend. Ich würde also ungern auf RDTSC verzichten, benötige dann aber auch eine exakte Umrechnung von RDTSC in Zeit.

Hat einer von euch eine Idee, Source oder Hinweise wo ich suchen könnte ?
Und als zweite Frage: kann es sein das das ACPI beide Prozessoren unterschiedlich in der Taktfrequenz drosseln kann ?

Gruß Hagen
  Mit Zitat antworten Zitat