Hi Sergio,
Yes, you will need to make a few changes. Here's an example command:
stat-manager format-string "<EXPR:sum{Nodes-execute-Commits_x86}/
sum{Nodes-execute-TB:(User|System):AccountedCycles}>" all
and here's what is different from the UniFlex example in the getting
started guide:
- I replaced the "sys-" prefix with "Nodes-", which is the sum of all
processors in MP simulations.
- I changed "execute-Commits" to "execute-Commits_x86". This change
makes sure we do not count HALT instructions more than once (Simics
sends one per cycle, but real processors go to sleep), only counts one
instruction even for multiple-memory-operation instructions, and does
not count the artificial 'instructions' generated on TLB misses, which
x86 handles in hardware.
- I changed "sys-cycles" to "Nodes-execute-TB:(User|
System):AccountedCycles". The reason sys-cycles is insufficient is
that it only increments once for the whole system. For a single clock
tick on a 4 processor machine, you really have 4 cycles to divide by
in the IPC calculation. This more complicated expression uses the
powerful TimeBreakdown accounting system, which can also tell you
where time is spent in the simulator (see components/Common/
TimeBreakdown.hpp).
Hope this helps. Let me know if you have other questions.
Cheers,
Brian
On Feb 6, 2009, at 6:25 AM, Sergio Tota wrote:
> Hi,
>
> I'm performing some multiprocessor simulations using the CMPFlex-x86
> target (4 processors, 4 threads).
>
> In the Flexus Getting Started Guide there is an example command to
> collect IPC statistics for uniprocessor architectures:
>
> 1 - stat-mamanger format-string "<EXPR:{sys-execute-Commits}/{sys-
> cycles}>" avg
> 2 - stat-manager format ../../reports/ipc_InOrder_uniproc.rpt ".*"
>
> Is there any better way to calculate IPC of a CMPFlex-x86 system?
>
> Thanks!
>
> Sergio
> _______________________________________________
> SimFlex mailing list
> SimFlex at ece.cmu.edu
> https://sos.ece.cmu.edu/mailman/listinfo/simflex
> SimFlex web page: http://www.ece.cmu.edu/~simflex