| |
Term Project
|
|
|
The project description can be found here (pdf).
We will be using the MASE simulator, which is part of the
SimpleScalar Toolset. Download
the tarball mase.tar.gz; it should run on any
unix machine, although I've only recently tested it on Linux/x86. Depending
on your distro, you may need to modify library paths in the Makefile or
change #include's or #define's/#ifdef's in other files.
We will be using the Alpha ISA target. In the directory after you unpack
the tarball, do the following:
- make config-alpha
- make sim-mase
- make mase-tests
The first command sets up some sym-links so that the simulator will compile for
the Alpha ISA, and the second one builds the actual simulator. The third one runs
some tests to make sure that the build went correctly; this may take some time.
You should only need to run this test the first time you build the simulator;
after you start making modifications, the tests will likely no longer "pass"
because you will have added stats, changed options, etc. which would make the
simulator output no longer match the expected output for the tests.
You can then use the simulator with the benchmarks/traces below. There are
other simulators available that simulate, for example, only the cache
hierarchy (sim-cache) or only the branch predictor (sim-bpred).
Resources/Docs
Paper on Simplescalar
Paper on MASE
Traces
There are a few programs you can run on the simulator available for
download from here. These are from the
SimpleScalar website.
I've also made ten other traces available, tar'd together here. I used bzip2 on these files as it gives
better compression. Use "tar xvfj <filename> to unpack the
files. When you unpack it, you will get the following traces:
- bc-sqrt.eio (Unix command line calculator - ptrdist)
- crafty-ref.eio (Chess playing program - spec2k)
- dijkstra.eio (Network routing - mibench)
- eon-kajiya-ref.eio (Ray tracer - spec2k)
- g721encode.eio (g721 audio encoding - mibench)
- jpegdecode.eio (jpeg image decoding - mediabench)
- povray-mist.eio (Ray tracer - graphics)
- twolf-ref.eio (Place and route simulator - spec2k)
- vpr-place-ref.eio (FPGA circuit placement - spec2k)
- yacr2-2.eio (VLSI channel router - ptrdist)
The applications come from the following benchmark suites:
See the README file that comes with the benchmarks (little-bench.tar.bz2)
to see how to run the simulator. Replace "sim-safe" with "sim-mase"
or whatever simulator binary you're using.
To run with the traces, use "./sim-mase -max:inst NNN
<other options> <trace filename>, where NNN is the
number of committed instructions to simulate (the max is 100 million, but I would
suggest simulating only a smaller number (like 10M) to keep simulation
times reasonable. <other options> are additional command line options
to change the ROB size, RS size, branch predictor options, cache options, issue width,
etc., etc., etc. You can run "./sim-mase" (no command line options) and it
will give you a dump of all of the command line options and a brief description of each.
After running a benchmark/trace, the simulator will provide all sorts of statistics about
the execution of the program on the simulated processor. Obvious metrics of interest include
the total number of cycles it took, the IPC, various cache and branch predictor miss rates,
etc. You can add your own stats as well (look at mase-opts.c).
That should get you up and running. Happy hacking!
|
|