[Gems-users] Stalling Simics from inside Ruby


Date: Tue, 20 Sep 2011 17:16:01 -0400
From: "abhisekpan@xxxxxxxxx" <abhisekpan@xxxxxxxxx>
Subject: [Gems-users] Stalling Simics from inside Ruby
Hi Folks,

I am trying to stall simics from ruby after a specific number of instructions, for example, I would like to stall simics for 100000 cycles after every 10 million instructions seen by ruby.
This is independent of the stall that happens because of cache misses. My question is what can be a feasible way to do this?

We can count the instructions in SimicsDriver.C / SimicsProcessor.C, but, as far as I understand, simply calling the SIMICS_stall() interface would not achieve what we want. As I
understand, for a miss, Simics would be stalled for 2 million cycles anyway, and would be woken up later through a hit-callback when the miss reaches the eventqueue head. So even if
I call the stall function for a definite number of cycles, ruby will wake simics up independently.

I was thinking if we can modify the time for the SIM_time_post_cycle() callback which is called from runRubyEventQueue(). Normally is it set with SIMICS_RUBY_MULTIPLIER cycles and
wakes up the event-queue every SIMICS_RUBY_MULTIPLIER cycles. Can we replace this with 10000 cycles to simulate this special stall?

Or should I add a dummy event to the messagebuffer with a very high wake-up time? I am not yet sure how exactly this can be done.

Please let me know if you have any suggestions! Thank you very much!

--
Abhisek
Live Long and Prosper
[← Prev in Thread] Current Thread [Next in Thread→]
  • [Gems-users] Stalling Simics from inside Ruby, abhisekpan@xxxxxxxxx <=