Hi Rohan. It is really good reference. Thanks! Peter On Mon, Oct 3, 2011 at 1:17 AM, rohan puri <rohan.puri15@xxxxxxxxx> wrote: > > > On Mon, Oct 3, 2011 at 6:57 AM, Peter Senna Tschudin <peter.senna@xxxxxxxxx> > wrote: >> >> Dear list members, >> >> I'm following: >> >> http://people.virginia.edu/~chg5w/page3/assets/MeasuringUnix.pdf >> >> And I'm trying to measure executing time of simple operations with RDTSC. >> >> See the code below: >> >> #include <stdio.h> >> #define CPU_THOUSAND_HZ 800000 >> typedef unsigned long long ticks; >> static __inline__ ticks getticks(void) { >> unsigned a, d; >> asm("cpuid"); >> asm volatile("rdtsc" : "=a" (a), "=d" (d)); >> return (((ticks)a) | (((ticks)d) << 32)); >> } >> >> void main() { >> ticks tickBegin, tickEnd; >> tickBegin = getticks(); >> >> // code to time >> >> tickEnd = getticks(); >> double time = (tickEnd-tickBegin)/CPU_THOUSAND_HZ; >> >> printf ("%Le\n", time); >> } >> >> How can the C code detects the correct value for CPU_THOUSAND_HZ? The >> problems I see are: >> - It is needed to collect the information for the CPU that will run >> the process. On Core i7 processors, different cores can run at >> different clock speed at same time. >> - If the clock changes during the execution of process, what should >> it do? When is the best time for collecting the clock speed? >> >> The authors of the paper are not sure about the effects of >> "asm("cpuid");" Does it ensure that the entire process will run on the >> same CPU, and will serialize it avoiding out of order execution by the >> CPU? >> >> Thank you very much! :-) >> >> Peter >> >> >> -- >> Peter Senna Tschudin >> peter.senna@xxxxxxxxx >> gpg id: 48274C36 >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > Hi Peter, > > Excellent reference http://en.wikipedia.org/wiki/Time_Stamp_Counter > > Also, your interpretation is right. There are lots of things which need to > be considered instead of setting CPU_THOUSAND_HZ to any particular value, > some of them are whether its multi-core or single core CPU. On multi-core > its quite difficult to get the correct answers, The problems are mentioned > in the above wiki link. > > Regards, > Rohan Puri > -- Peter Senna Tschudin peter.senna@xxxxxxxxx gpg id: 48274C36 _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies