Introduction to ISA using SimpleScalar
In this
exercise, you will run some Benchmarks to find out the distribution of
instructions they execute. You will use sim-profile simulator
(discussed in the "Introdution to SimpleScalar" webpage) available in the
SimpleScalar toolset for this purpose. In the first part of this lab, you will
use SimpleScalar configured for ALPHA ISA while in
the second part, you will use both ALPHA and
[Note: Results of
simulation may vary over multiple runs and among students in all the labs. This
fact is stated at www.simplescalar.com
. You should see FAQ section at this website. But the results will be consistent
which means
they
will make sense.]
Part
1
It is a
dynamic instruction profiler which means it collects information about
instructions as they are executed by the simulator. Note that it is a functional
simulator and not a detailed timing simulator as sim-outorder.
All the
simulators including sim-profile are available
in the home/simplesim-3.0 directory.
home/simplesim-3.0$./sim-profile
–h
Click benchmarks.tar.gz
to download this file. Unzip and Untar this file in a directory e.g.
/home/benchmark
directory.
The
information on how to execute these benchmarks using sim-safe
is available in the README file which is also
in the home/benchmark directory. Replace sim-safe
with sim-profile and add information using sim-profile
help to fill out the following table
2)
compress:
(SPEC) compresses and decompresses a file in memory.
3)
go:
Artificial intelligence; plays the game of go against itself.
4)
gcc:
(SPEC) limited version of gcc.
Benchmark |
Total # of Instructions |
Load % |
Store % |
Uncond Branch % |
Cond Branch % |
Integer Computation % |
Floating pt Computation % |
anagram.alpha |
|
|
|
|
|
|
|
go.alpha |
|
|
|
|
|
|
|
compress.alpha |
|
|
|
|
|
|
|
gcc.alpha |
|
|
|
|
|
|
|
Now
answer the following questions for each individual benchmark executed above
2)
Is
the benchmark mainly using integer or floating point computations?
3)
What
% of the instructions executed are conditional branches? Given this %, how many
instructions on average does the processor execute between each pair of
conditional branch instructions (do not include the conditional branch
instructions)
Part
2
In this
part, you will compare the
Benchmark |
Total
# of instructions |
Load
% |
Store
% |
Uncond
branch % |
Cond
branch % |
Integer
Compute % |
Floating
compute % |
test-math |
|
|
|
|
|
|
|
test-fmath |
|
|
|
|
|
|
|
test-llong |
|
|
|
|
|
|
|
Test-printf |
|
|
|
|
|
|
|
Now
change configuration to
home/simplesim-3.0$./make
config-pisa
PISA Benchmark |
Total
# of instructions |
Load
% |
Store
% |
Uncond
branch % |
Cond
branch % |
Integer
Compute % |
Floating
compute % |
test-math |
|
|
|
|
|
|
|
test-fmath |
|
|
|
|
|
|
|
test-llong |
|
|
|
|
|
|
|
test-printf |
|
|
|
|
|
|
|