Re: [Gems-users] IPC and Ruby cycles


Date: Wed, 28 Mar 2007 14:56:37 -0500
From: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [Gems-users] IPC and Ruby cycles
Thanks a lot Dan! That explains it. But what I still can't understand is, why would Opal reports such a high IPC for most of processors: P0 1.6, P1 3.96, P2 3.97, P3 0.62? I thought even with out-of-order pipelined CPU the maximum theoretical instruction throughput should be 1 instruction per cycle. Also, if I run multiprogrammed benchmarks (mix of SPEC benchmarks) in the system, say 4 programs for 4-core CMP, would one processor run one program or would there be switching? Thanks again for your comments.

Lei
----- Original Message ----- From: "Dan Gibson" <degibson@xxxxxxxx>
To: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, March 28, 2007 2:22 PM
Subject: Re: [Gems-users] IPC and Ruby cycles


Opal's sim-step command executes N instructions on processor 0, then stops execution. The other processors are allowed to execute as many instructions as they can in the same duration. I don't think there is a way to force all processors to execute the same number of instructions.

If you'd like to run for a certain number of *cycles*, you can run Opal for some absurdly large number of instructions and then explicitly break the simulation at some RUBY_CYCLE count. See SIMICS_break_simulation() for details in the Simics Reference Manual.

Regards,
Dan

Lei Yang wrote:
Thanks Dan! I'm not using Opal now, as I got confused at the way IPC is calculated. I'm pasting a question I asked before on the list. Unfortunately it was not answered at that time. I simulated a four core CMP system with both Opal and Ruby. I found in results.opal the runtime stats for processor [0],[1],[2],[3]. But as can be seen from below, how come only processor [0] executed 100 million instructions specified by "opal0.sim-step 100000000", but processor [1] and [2] have more total number of instructions than what I've specified ? Is there a way in Opal to let the simulator run for a certain number of cycles, instead of instructions (like "cc N" and "c N" in simics)?
 [0] *** Runtime statistics:
[0]   number of continue calls                            100000003
[0]   Instruction per cycle:                             1.55227
[0]   Total Elapsed Time:                                36060 sec 0 usec
[0] Total Retirement Time: 1522 sec 670804 usec
[0]   Approximate cycle per sec:                         1786.52
[0]   Approximate instructions per sec:                  2773.15
[0]   This processor's Simics overhead (retire/elapsed):   4.22%
[0]   Average number of instructions per continue          1.00
[1] *** Runtime statistics:
[1]   Total number of instructions                        255117523
[1]   Total number of cycles                               64421882
[1]   number of continue calls                            255117523
[1]   Instruction per cycle:                             3.96011
[1]   Total Elapsed Time:                                36060 sec 0 usec
[1] Total Retirement Time: 3740 sec 262608 usec
[1]   Approximate cycle per sec:                         1786.52
[1]   Approximate instructions per sec:                  7074.79
[1]   This processor's Simics overhead (retire/elapsed):  10.37%
[1]   Average number of instructions per continue          1.00
[2] *** Runtime statistics:
[2]   Total number of instructions                        256142056
[2]   Total number of cycles                               64421882
[2]   number of continue calls                            256142056
[2]   Instruction per cycle:                             3.97601
[2]   Total Elapsed Time:                                36060 sec 0 usec
[2] Total Retirement Time: 3713 sec 458821 usec
[2]   Approximate cycle per sec:                         1786.52
[2]   Approximate instructions per sec:                  7103.2
[2]   This processor's Simics overhead (retire/elapsed):  10.30%
[2]   Average number of instructions per continue          1.00
[3] *** Runtime statistics:
[3]   Total number of instructions                         40012500
[3]   Total number of cycles                               64421882
[3]   number of continue calls                             40012500
[3]   Instruction per cycle:                             0.621101
[3]   Total Elapsed Time:                                36060 sec 0 usec
[3] Total Retirement Time: 600 sec 825168 usec
[3]   Approximate cycle per sec:                         1786.52
[3]   Approximate instructions per sec:                  1109.61
[3]   This processor's Simics overhead (retire/elapsed):   1.67%
[3]   Average number of instructions per continue          1.0

    ----- Original Message -----
    *From:* Dan Gibson <mailto:degibson@xxxxxxxx>
    *To:* Lei Yang <mailto:lya755@xxxxxxxxxxxxxxxxxxxx> ; Gems Users
    <mailto:gems-users@xxxxxxxxxxx>
    *Sent:* Wednesday, March 28, 2007 8:42 AM
    *Subject:* Re: [Gems-users] IPC and Ruby cycles

    If you're using Opal, then Opal will calculate its IPC for you.
    If you're not using Opal, then the IPC is a meaningless measure,
    since Simics is an extremely idealized in-order processor model.

    If IPC is a metric that you absolutely MUST know, change
    SIMICS_RUBY_MULTIPLIER to 1 and double all your ruby latencies (to
    achieve an approximately identical timing). Then use RUBY_CYCLES
    to calculate IPC.

    Regards,
    Dan

    Lei Yang wrote:
    Dear list,
     I noticed that with SIMICS_RUBY_MULTIPLIER set to 2, the
    Ruby_cycles shown in Ruby stats is always half of the cycle count
    shown by simics. When calculating the IPC, which cycle count
    should I use, Ruby_cycles or the cycle count of Simics? I'm quite
    curious why there is a SIMICS_RUBY_MULTIPLIER parameter and
    what's its purpose. As always, thanks a lot for your comments!
     Lei
    ------------------------------------------------------------------------

    _______________________________________________
    Gems-users mailing list
    Gems-users@xxxxxxxxxxx
    https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/"; to your search.




--
http://www.cs.wisc.edu/~gibson [esc]:wq!




[← Prev in Thread] Current Thread [Next in Thread→]