Gene,
I think what you need is to use simics' "magic" instructions in your
benchmarks to stop simulation at just the right time. Simics defines a
special no-op instruction to be "magic" for each target architecture
(e.g., sethi g0 on sparc). One particular magic call causes a break in
the simulation, which can be very useful for setting up checkpoints.
See the simics documentation for more details on magic calls.
First, you'll probably want to take a checkpoint where all of your
benchmark threads are running and through their initialization phase.
That way, you'll only need to run ruby on the phase of the benchmark
that's interesting to you. To do that, put a magic break in the
benchmark code and recompile. Then, in simics, if you enable magic
calls (magic-break-enable) the simulation will stop when the magic call
is executed and you can take a checkpoint of the system at that point.
You'll probably also want to insert a magic call at the end of the
interesting phase of your workload to break the simulation immediately.
Setting up a checkpoint like that is the first step to using the
gen-scripts package, which will certainly save you a lot of time and
effort. Hope this helps,
Kevin
On Mar 15, 2006, at 4:37 PM, Gene Kishinevsky wrote:
Hi all,
We've made some changes to the cache hierarchy and now want to test our
design to see if we've improved cache performance. So far we've only
been running Simics with Ruby loaded. The problem we're having is
stopping the simulation right after the benchmark runs finish. If we
don't catch this moment then the OS threads keep running and polluting
the Ruby stats and it becomes hard to see if any progress has been made
by the time we get back to the machine to check the results.
Is it possible to run Simics with Ruby for a fixed amount of time
steps?
Alternatively, I looked into using Opal, and the gen-scripts seem
really
nice, but I'm not sure how to set up our workloads. We have a Simics
checkpoint saved with all of our data, and we have a script on the
simulated system that runs 4 spec benchmarks at the same time. So far
I've been loading Ruby, then running simulation and manually starting
the benchmarks in terminal of simulated system. How would I go about
setting up the workload to use this checkpoint and then execute the
necessary command in the terminal of the simulated system (to start
executing benchmarks)?
Thank a lot for any tips. They are very much appreciated.
-Gene
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
|