Thanks Avadh,
I have a quick patch for counting instructions in multi-core.
Files affected are:
---------------------------
+++ b/ptlsim/x86/ptlhwdef.h
@@ -819,6 +819,7 @@ struct Context: public CPUX86State {
W64 insns_at_last_mode_switch;
W64 user_instructions_commited;
W64 kernel_instructions_commited;
+ W64 total_instructions_commited;
W64 exception;
W64 reg_trace;
W64 reg_selfrip;
--------------------------------------
+++ b/ptlsim/core/ooopipe.cpp
@@ -2348,6 +2348,7 @@ int ReorderBufferEntry::commit() {
if likely (uop.eom) {
total_user_insns_committed++;
+ ctx.total_instructions_commited++;
per_context_ooocore_stats_update(threadid,
commit.insns++);
thread.total_insns_committed++;
-----------------------------------
+++ b/ptlsim/sim/ptl-qemu.cpp
@@ -723,11 +723,11 @@ void Context::update_mode_count() {
W64 prev_cycles = cycles_at_last_mode_switch;
W64 prev_insns = insns_at_last_mode_switch;
W64 delta_cycles = sim_cycle -
cycles_at_last_mode_switch;
- W64 delta_insns = total_user_insns_committed -
+ W64 delta_insns =total_instructions_commited -
insns_at_last_mode_switch;
cycles_at_last_mode_switch = sim_cycle;
- insns_at_last_mode_switch = total_user_insns_committed;
+ insns_at_last_mode_switch =total_instructions_commited;
------------------------------------
+++ b/ptlsim/sim/ptlsim.cpp
@@ -720,6 +720,7 @@ CPUX86State* ptl_create_new_context() {
// Create a new CPU context and add it to contexts
array
Context* ctx = new Context();
+ ctx->total_instructions_commited = 0;
ptl_contexts[ctx_counter] = ctx;
ctx_counter++;
-------------------------------------
Let me know, if I am doing something wrong. It seems to work.
--ishwar
---- Original message ----
>Date: Sun, 6 Mar 2011 08:39:11 -0700
>From: avadh patel <[email protected]>
>Subject: Re: [marss86-devel] Ptlstats for Multi-cores
>To: Ishwar Bhati <[email protected]>
>Cc: <[email protected]>
>
> On Fri, Mar 4, 2011 at 1:26 PM, Ishwar Bhati
> <[email protected]> wrote:
>
> Hey, I have couple of questions regarding the
> status of ptlstats.
>
> A)I see this comment line before update_stats
> which used by flush_stats in
> "ptlsim/core/ooocore.cpp"
> /* this assume only one core in each machine, need
> to be fixed. */
> void OutOfOrderMachine::update_stats(PTLsimStats*
> stats) {
>
> Does this mean that, stats collection for
> multi-core are not correct? I know, for sure that
> instructions committed per core calculations
> are wrong, because it uses
> "total_user_insns_committed" in
> update_mode_count() in ptl-qemu.cpp which is a
> global variable. Instead,
> we should be using per core instruction counter
> for this calculations. Are the dcache miss/hit
> stats similarly mixed up?
>
> Here the comment is clearly wrong because we have
> only one Machine in each simulation run and in this
> machine all the Cores are present. So this function
> is called only once at the end when stats are
> flushed.
> But about 'update_mode_count()', that is a bug.
> Instead of 'total_user_insns_committed', it should
> be replaced with per core instruction commit. About
> dcache hit/miss counts, they should be fine because
> they are added only once for 'global' snapshot.
> Thanks for finding this bug.
>
> B)
> There is a "idle" counter/parameter in the
> insns_in_mode stats, what is this for and will
> this be supported in future?
> We want to actually know that for how much time a
> core/thread was in the idle loop doing nothing? If
> it is not supported, can any body give suggestion
> on how to implement
> the idle loop count for some context?
>
> The 'idle' counter was used in old Xen based PTLsim.
> When we switched to QEMU, it was little tricky to
> find time spent in idle loop because of the way QEMU
> works. So in simulation mode we decided to not to
> switch in QEMU mode when we encounter PAUSE
> instruction, instead we pause the core for fix
> amount of cycles (THREAD_PAUSE_CYCLES). In stats,
> you can check 'cycles_in_pause' to find out how many
> cycles a CPU was in PAUSE mode.
> We don't have any implementation of C-States, used
> in modern CPU's for energy efficient idle modes.
> - Avadh
>
> Thanks
> Ishwar
> _______________________________________________
> http://www.marss86.org
> Marss86-Devel mailing list
> [email protected]
> https://www.cs.binghamton.edu/mailman/listinfo/marss86-
devel
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel