Scarab
Scarab is a cycle accurate simulator for state-of-the-art, high performance,
multicore chips. Scarab's goal is to be highly accurate, while also being
fast and easy to work with.
Simulator Features:
- Accurate: Scarab is detailed cycle accurate uArchitecture model
- Fast: 600 KIPS trace-driven, 100 KIPS exec-driven
- SimPoint Support: Checkpoints, Fast-Forward, Marker Instructions
- Execute-at-Fetch: Easier support for oracle features, faster development of new features
What Code Can Scarab Run?
- Single-threaded x86_64 programs that can be run on Intel's PIN
Scarab uArchitecture:
- All typical pipeline stages and out-of-order structures (Fetch, Decode, Rename, Retire, ROB, R/S, and more...)
- Multicore
- Wrong path simulation
- Cache Hierarchy (Private L1, Private MLC, Private/Shared LLC)
- Ramulator Memory Simulator (DDR3/4, LPDDR3/4, GDDR5, HBM, WideIO/2, and more...)
- Interface to McPat and CACTI for system level power/energy modeling
- Support for DVFS
- Latest Branch Predictors and Data Prefetchers (TAGE-SC-L, Stride, Stream, 2dc, GHB, Markov, and more...)
Code Limitations
- 32-bit binaries not supported (work in progress)
- Performance of System Code not modeled
- No cooperative multithreaded code
uArch Limitations
- No SMT
- No real OS virtual to physical address translation
- Shared bus interconnect only (ring, mesh, and others are in progress.)
Scarab was created in collaboration with HPS and SAFARI. This project was sponsored by Intel Labs.
License & Copyright
Please see the LICENSE for more information.
Getting Started
- System requirements and software prerequisites.
- Compiling Scarab.
- Setting up and running auto-verification on Scarab.
- Running a single program on Scarab.
- Running multiple jobs locally or on a batch system. (coming soon!)
- Viewing batch job status and results. (coming soon!)
- Simulating dynamorio memtraces
- Solutions to common Scarab problems.
Contributing to Scarab
Found a bug? File a bug report.
Request a new feature? File a feature request.
Have code you would like to commit? Create a pull request.
Other Resources
1) Auto-generated software documentation can be found here.
- Please run this command in this directory to auto-generate documentation files.
make -C docs