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.
- 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
- Single-threaded x86_64 programs that can be run on Intel's PIN
- 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...)
- 32-bit binaries not supported (work in progress)
- Performance of System Code not modeled
- No cooperative multithreaded code
- 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.
Please see the LICENSE for more information.
- 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.
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.
- Auto-generated software documentation can be found here.
- Please run this command in this directory to auto-generate documentation files.
make -C docs