Early on in each release, we like to provide the community with a roadmap of what is being developed for the next gem5 release. This is a community-based document, and it is a summary of what different developers are currently work on. If you have something that you’re working on that you are planning to contribute before the gem5-21.1 release, we’d love to include it here!
To contribute to the roadmap you can following the steps below:
- Create a issue or an epic on our issue tracker. If the contribution is large with many different individual contributions, it would be best to create an epic to group all of the separate issues together.
- Mark the issue as “Fix version 21.1” and assign yourself as the “Assignee”.
- Update this roadmap document by downloading the website source and creating a changeset on gerrit.
Roadmap for 21.1
We’re planning to release gem5-21.1 during July (about 4 months after the gem5-21.0 release). Below are the main features we’re currently planning on including in 21.1.
Wouldn’t it be cool if using gem5 was like walking into Microcenter and choosing components? The goal of this project is to make this happen!
We will create a library of components and “known-good” configurations. With the components, you can choose components like different cache systems (e.g., private L1, shared L2), different CPUs, and different RAMs to plug into a “board” to create a system.
Alternatively, you can choose to use one of our prebuilt systems as a baseline. These prebuilt systems will be benchmarked/tested and the data will be publically available on the gem5-resources webpage: http://resources.gem5.org/.
For the components, the goal is that they are always composable. In other words, any memory can be connected to any cache system which can be connected to any CPU. And, hopefully, this will work for any ISA, etc.
We’re working on the details now and will have a proposal on gerrit in the next few weeks. If you have feedback feel free to let us know on gem5-dev mailing list, the Jira issue, or the gerrit changesets when they are posted.
In gem5-21.0, we implemented a python-based API for accessing stats. However, this was not enabled by default. In 21.1, we are expecting this API to be improved and more features added. Let us know what you would like to see from a new stats interface in the Jira issue or on the mailing list!
We have been working to revamp the gem5-SST integration for a couple of releases now. We started by creating a documented stable API, which still has a few unresolved issues. We expect that by 21.1 we will have a proof-of-concept where gem5 can be used as a component in SST.
POWER support in gem5 has languished over the years. However, there has been significant effort in a fork of gem5 to update to the latest POWER features and improve the support.
There are currently many changes on gerrit: E.g., https://gem5-review.googlesource.com/c/public/gem5/+/40948 working to merge these two. We would appreciate reviews and feedback on these changes especially if POWER support is important to you!
Currently, gem5 also only supports GPU runs in SE mode, not FS mode. As part of the next release, we plan on releasing FS mode support for gem5 GPU models.
Currently gem5’s SE mode GPU support is for ROCm 1.6 and Carrizo-class GPUs, which is fairly old now. To help address this, we are planning on releasing support for ROCm 4.0 in the next version of gem5. Moreover, we will also include support for Vega-class GPUs, which are more modern.
Other things we’re working on
Below are some other things that we have either started to work on or would like to do, but are either smaller or on the back burner. If anyone is interested in contributing, picking up one of these issues could be a great way!
- Improving the multi-level TLB models
- No current active development, but significant interest from many different users/developers
- Pydoc documentation
- RISC-V PMP support
- Upgrade the replacement policies API to support state-of-the-art replacement policies
- Enable GTesting of SimObjects (key part) and add as many unit tests as possible
- (Respective chain)[https://gem5-review.googlesource.com/c/public/gem5/+/44109/3]
- If the key changes of the GTesting issue are merged, revamp probes
- Finally, add a gem5 namespace. The change itself does not necessarily need to be over by the next version, but it would be great to have a decision and the very few first steps taken by then.