The gem5 simulator is an open source discrete-event computer architecture simulator[1]. It combines system-level and microarchitectural simulation, allowing users to analyze and test a multiplicity of hardware configurations, architectures, and software environments, without access or development of any hardware.
Developer(s) | Community contributors |
---|---|
Initial release | August 2011 |
Stable release | v24.0.0.1
/ August 8, 2024 |
Written in | C++, Python |
Operating system | Linux, Unix-like |
License | BSD 3-Clause |
Website | www |
The simulator is capable of simulating modern operating system running on a simulator system and supports a variety of instruction set architectures (ISAs), including x86, ARM, RISC-V. gem5 comes with a library of pre-made components that conform to a modular design methodology allowing researchers to conduct experiments on a wide systems with relative ease. As such gem5 is used to in research tasks as diverse as processor design, the development of memory subsystems, and application performance optimization. In addition to research, gem5 serves as an important education tool, enabling educators to demonstrate to the impact computer architecture design decisions can have on computer system performance.
History
editThe gem5 simulator was born out of the merger of m5 (a detailed CPU simulator) and GEMS simulator (a detailed memory system simulator) in 2011.[2]
Features and Capabilities
edit- Multi-level Simulation: gem5 supports both system-level and detailed microarchitectural simulation.
- Flexible Processor and System Modeling: gem5 can model a wide range of processor architectures, including x86, ARM, RISC-V, SPARC, and MIPS.
- Configurable Memory Hierarchies: gem5 allows users to define custom cache and memory configurations for exploring different system setups.
- Support for Full-System and Syscall Emulation: gem5 enables simulation of full-system software stacks, including OS and application code, or simplified syscall emulation for faster performance.
- Modular Design: gem5 is highly modular, enabling researchers to plug in different models for CPUs, caches, interconnects, and other system components.
- Extensive Library of Models: gem5 includes detailed models for CPUs (timing, atomic, in-order, and out-of-order), memory, interconnects, and peripheral devices.
- Scalable Multi-core Simulation: gem5 supports single-core to complex multicore and multi-threaded architectures.
- Scripting and Automation with Python: gem5 allows users to configure and control simulations using Python scripts, facilitating complex experiment setups via Python.
References
edit- ^ Lowe-Power J, Ahmad AM, Akram A, Alian M, Amslinger R, Andreozzi M, Armejach A, Asmussen N, Beckmann B, Bharadwaj S, Black G, Bloom G, Bruce BR, et al. (2020). "The gem5 simulator: Version 20.0+". arXiv:2007.03152.
- ^ Binkert, Nathan; Sardashti, Somayeh; Sen, Rathijit; Sewell, Korey; Shoaib, Muhammad; Vaish, Nilay; Hill, Mark D.; Wood, David A.; Beckmann, Bradford; Black, Gabriel; Reinhardt, Steven K. (2011-08-31). "The gem5 simulator". ACM SIGARCH Computer Architecture News. 39 (2): 1–7. doi:10.1145/2024716.2024718. S2CID 195349294.