Current and correct CPU clock and asm("cpuid")

rohan puri rohan.puri15 at gmail.com
Mon Oct 3 23:40:34 EDT 2011


On Tue, Oct 4, 2011 at 12:03 AM, Peter Senna Tschudin <peter.senna at gmail.com
> wrote:

> Hi Rohan.
>
> It is really good reference. Thanks!
>
> Peter
>
> On Mon, Oct 3, 2011 at 1:17 AM, rohan puri <rohan.puri15 at gmail.com> wrote:
> >
> >
> > On Mon, Oct 3, 2011 at 6:57 AM, Peter Senna Tschudin <
> peter.senna at gmail.com>
> > 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 at gmail.com
> >> gpg id: 48274C36
> >>
> >> _______________________________________________
> >> Kernelnewbies mailing list
> >> Kernelnewbies at kernelnewbies.org
> >> 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 at gmail.com
> gpg id: 48274C36
>

Welcome :)

Regards,
Rohan Puri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20111004/b824b5ae/attachment.html 


More information about the Kernelnewbies mailing list