This repo contains experiments to study performance of gem5 against a real hardware. The experiments are based on gem5art framework.
- gem5-configs: contains gem5 configs for skylake micro-architecture.
- system/core.py: contains the below CPU classes.
- UnCalibCPU: configured based on the documentation available for the micro-architecture.
- CalibCPU: considering the absence of certain features in gem5, for example, gem5 doesn't support micro-op fusion and micro-op cache, this configuration offsets those difficiencies by improving some other parameters.
- MaxCPU: models a CPU with maximum pipeline widths, minimum pipeline and instruction latencies.
- system/caches.py: configuration based on classic cache model.
- system/system.py: connects core and memory together to form a system.
run.py
: script to pass parameters to the system.
- system/core.py: contains the below CPU classes.
- results: contains the experiment's results.
launch_experiment.py
: script to launch the experiments.
We are using microbenchmarks for validating the performance and this tutorial explains how to setup experiements with these benchmarks. We are using intel's PCM to measure the hardware counter values, this repo explains how to use PCM for these benchmarks.
These are primary references for skylake micro-architecture.
- Intel® 64 and IA-32 Architectures Optimization Reference Manual
- The microarchitecture of Intel and AMD CPUs
- Skylake (client) - Microarchitectures - Intel
These are for configuring a micro-architecture in gem5