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 PISA configuration. If you want to run other benchmarks, they are available at www.simplescalar.com in the Benchmarks section.
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.
Quick fact about sim-profile simulator
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.
Go to home/simplesim-3.0 directory and type the following to seek help about sim-profile.
Help can also be invoked just by typing simulator name without any arguments.
Go through help. Now use this help information to execute the following four benchmarks available in this tar file.
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
- anagram: a program for finding anagrams for a phrase, based on a dictionary.
- compress: (SPEC) compresses and decompresses a file in memory.
- go: Artificial intelligence; plays the game of go against itself.
- gcc:(SPEC) limited version of gcc.
Now answer the following questions for each individual benchmark executed above
- Is the benchmark memory intensive or computation intensive?
- Is the benchmark mainly using integer or floating point computations?
- 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)
In this part, you will compare the PISA and Alpha ISA by executing the same benchmarks on the two configurations.
Since the configuration from part 1 is still Alpha, execute the following benchmarks available in the home/simplesim-3.0/tests-alpha/bin/ directory using sim-profile and record the results in the following table.
- test-math: performs various math computations mostly in integer and displays their result.
- test-fmath: performs various math functions mostly in integer.
- test-llong: performs computations in long format.
- test-printf: displays various print statements.
Now change configuration to PISA by typing the following three commands in a sequence.
home/simplesim-3.0 $./make clean home/simplesim-3.0 $./make config-pisa home/simplesim-3.0 $./make
To change configuration back to Alpha, execute the same command sequence except that in the second command replace config-pisa by config-alpha.
Now execute the following benchmarks available in the home/simplesim-3.0/tests-pisa/bin/ directory using sim-profile and record the results in the following table.
Now compare the two ISAs using a plot (a Histogram is preferred). Use MATLAB or EXCEL to plot the histogram.
What can you conclude about the two ISAs from the Histogram