Written in 100% Java with the aid of JNA (Java Native Access) for native POSIX syscall implementations, which assures its portability and usability across many Linux machine configurations.
Facilitates interface-based hierarchical object orientation to improve code readability and extensibility.
Provides functional architectural simulation of:
- Program loading for statically-linked MIPS32 ELF executables (both Little Endian and Big Endian are supported);
- Functional execution of common integer and floating-point instructions of MIPS32 ISA;
- Emulation of common POSIX system calls;
- Execution of Pthreads based multithreaded programs.
Provides cycle-accurate microarchitectural simulation of:
- Separate pipeline structures such as the reorder buffer, separate integer and floating point physical register files;
- Explicit register renaming based on the merged architectural and rename register file model;
- Single-threaded superscalar out-of-order execution, multithreaded SMT and CMP execution model;
- Multi-level inclusive cache hierarchy with the directory-based MESI coherence protocol;
- Simple cycle-accurate DRAM controller model;
- Various kinds of static and dynamic branch predictors, checkpointing-based pipeline recovery on branch misprediction.