Deep,
To only invoke ruby for data accesses, do not issue the
"instruction-fetch-mode instruction-fetch-trace" command to Simics.
When Simics calls into ruby, the actual point is in Ruby's commands.C.
commands.C is a wrapper for the rest of Ruby's functionality... from
commands.C, various MakeRequest functions are called in SimicsDriver.C,
SimicsProcessor.C, and Sequencer.C. SimicsDriver and SimicsProcessor are
used to abstract the Simics/Ruby interface -- most folks prefer to
modify Sequencer.C (and higher-level code) for this reason.
One of two things can happen after the Sequencer's MakeRequest()
function is called. IF the request is an L1 hit AND "fast path hits" are
enabled, Simics will NOT be stalled, and no coherence action will take
place. If the access is NOT and L1 hit OR fast path hits are not
enabled, the action taken will then depend on the coherence protocol --
under most cases Simics will be stalled for one or more cycles.
Periodically, Simics will run the Ruby event queue in EventQueue.C.
Various events will unstall Simics when data requests are satisfied.
Regards,
Dan Gibson
Shougata Ghosh wrote:
Hi
I'm completely new to GEMS. I am trying to understand how Simics and
ruby interact with each other so that I can modify ruby according to my
needs. Which functions are used/called by Simics to invoke ruby? Also,
what would be a quick way to set simics to invoke ruby for only
load/store instructions (and not for every instruction fetch)? I guess I
could easily figure out the second part once I find out which functions
are used to invoke ruby.
Your response will be very much appreciated.
Thanks
Deep
_______________________________________________
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.
|