The purpose of the gem5 components library is to provide gem5 users a standard set of common and useful gem5 components pre-built to add to their experiments. The gem5 components library adopts a modular architecture design with the goal of components being easy to add and remove from designs, and extendable as needed. E.g., any Memory system should be interchangable with any other, and if not a helpful error messages should be raised. Examples of using the gem5 components library can be found in `configs/example/components-library`. Important Disclaimer: This is a pre-alpha release of the gem5 components library. The purpose of this release is to get some community feedback on this new component of gem5. Though some testing has been done, we expect regular fixes and improvements until this is in a stable state. The components library has been formatted with Python Black; typing has been checked with MyPy; and the library has been tested with the scripts in `configs/example/components-libary`. More rigorous tests are to be added in future revisions. More detailed documentation will appear in future revisions. Jira Ticket outlining TODOs and known bugs can be found here: https://gem5.atlassian.net/browse/GEM5-648 Change-Id: I3492ec4a6d8c59ffbae899ce8e87ab4ffb92b976 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47466 Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu> Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu> Tested-by: kokoro <noreply+kokoro@google.com>
1.3 KiB
The gem5 Components Library
IMPORTANT NOTE: This is a Work-In-Process Documentation. This will be expanded and completed in later revisions of the components library.
This is a high-level overview of what this library is.
Philosophy
Like the Zen of Python, the gem5 Components Library has a set of guiding principles. Note, these are note rules, and they are meant to be bent if needed (but maybe not broken).
Components are extensible, not configurable
We prefer extensibility instead of configurability.
Instead of each component taking many different parameters, we have decided to make many different components.
For instance, instead of having one core component which takes a parameter of the type (e.g., in-order or out-of-order), we specify multiple different components, an InOrderCPU and an OutOfOrder CPU.
Components use easy to remember names
We prefer longer and easier to remember names than shorter or jargon names.
Structure of the components library
Boards
Processors
Memories
Cache hierarchies
Contributing to the components library
Code style
- Use Black to format your code.
- Docstring should follow the ReST style and Sphinx