Description
The goal is to understand how two popular tools in the domain of Computer Architecture study – Intel Pin and Linux perf – work, and how they can be used to perform different insightful analyses.
Part A Use the Intel Pin dynamic instrumentation tool to find the instruction mix of some benchmark applications from the SPEC CPU2017 suite that you can find in the CS810_resources repository. Instruction mix refers to the percentage of different classes of instructions: integer arithmetic, floating point arithmetic, loads, stores, unconditional jumps, and conditional branches. You can read more about the benchmarks here.
Part B Use the Linux perf tool to study the phase behavior of some benchmarks from the SPEC CPU2017 suite. Measure the instructions per cycle (IPC), branch prediction accuracy, number of accesses to different caches, hit rates of different caches, number of memory requests, and power consumed by the processor.
Measure these over epochs of 10 milliseconds and plot your measurements as intuitive graphs (use Python matplotlib) that help us visualize the different phases the benchmark goes through. Your submission must also contain a description of the processor that you ran these experiments on.
Include at least the following details: microarchitecture name (like “Intel Kabylake”), microarchitecture details (as far as you understand; you may use wikichip), sizes and latencies of different caches. You may work in teams of 2 members each.
Submit your work on Moodle as a single zip file (__assignment1.zip) that contains your code and a report in pdf format.
Do not include output files as these may be quite large. Your report must contain the plots, your observations of different patterns in the plots, and your inferences based on these observations.