Hi All,
I am simulating some splash2 benchmarks by using ruby with simics 2.2.19
(Solaris 10) and to characterize the time spent in synchronization, I
have instrumented the synchronization calls like locks and barrier. I
have binded each thread to a specific processor (one-to-one) and
collecting the time by calling high resolution timer gethrtime(). In
real machine run (having 16 processors) for 16 threads I get around 19%
time spent on synchronization for a program. If I run the same program
in simics without ruby, I also get similar percentage of time spent in
synchronization.
But If I run the same program in simics with ruby, the time spent in
synchronization is much higher (goes around 75% of total). I have
collected the time from both programs and from ruby. Both are getting
almost same percentage number. I am using MESI_SCMP_directory like
protocol having 2 cycles for L1 and 14 cycles for L2 access.
Does anyone have any idea what's going on? What wrong with my setup? I
would really appreciate your reply.
Thanks,
Hemayet
|