blob: 2f2f95cdd21ccef911999678d4de336d032354fd [file] [log] [blame] [view]
---
layout: post
title: "gem5-21.1 Roadmap"
author: Jason Lowe-Power
date: 2021-04-25
categories: project
---
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:
1. Create a issue or an epic on our [issue tracker](https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/). 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.
2. Mark the issue as "Fix version 21.1" and assign yourself as the "Assignee".
3. Update [this roadmap document](https://gem5.googlesource.com/public/gem5-website/+/refs/heads/stable/_posts/2021-04-25-gem5-21-1-roadmap.md) by [downloading the website source](https://gem5.googlesource.com/public/gem5-website/) and creating a changeset [on gerrit](https://gem5.googlesource.com/public/gem5-website/+/refs/heads/stable/README.md).
## 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.
### [gem5 component library](https://gem5.atlassian.net/browse/GEM5-648)
Wouldn't it be cool if using gem5 was like walking into [Microcenter](https://www.microcenter.com/) 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](https://gem5.atlassian.net/browse/GEM5-648), or the gerrit changesets when they are posted.
### [Continue improving python-based stats](https://gem5.atlassian.net/browse/GEM5-644)
In [gem5-21.0]({% post_url 2021-03-19-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](https://gem5.atlassian.net/browse/GEM5-644) or on the mailing list!
### [SST integration](https://gem5.atlassian.net/browse/GEM5-399)
We have been working to revamp the gem5-SST integration for a couple of releases now.
We started by [creating a documented stable API](https://gem5.atlassian.net/browse/GEM5-172), 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.
### [Upstreaming power-gem5](https://gem5.atlassian.net/browse/GEM5-959)
POWER support in gem5 has languished over the years.
However, there has been significant effort in a [fork of gem5](https://github.com/power-gem5/gem5/tree/develop-power) 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!
### GPU updates
#### [Full system GPU](https://gem5.atlassian.net/browse/GEM5-195)
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.
#### [Supporting new runtimes and GPUs](https://gem5.atlassian.net/browse/GEM5-962)
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](https://gem5.atlassian.net/browse/GEM5-790)
- No current active development, but significant interest from many different users/developers
- [Pydoc documentation](https://gem5.atlassian.net/browse/GEM5-647)
- [RISC-V PMP support](https://gem5.atlassian.net/browse/GEM5-917)
- [Upgrade the replacement policies API to support state-of-the-art replacement policies](https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-204)
- [The respective chain does the change and adds SHiP to exemplify](https://gem5-review.googlesource.com/c/public/gem5/+/38118/5)
- [Enable GTesting of SimObjects (key part) and add as many unit tests as possible](https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-4)
- (Respective chain)[https://gem5-review.googlesource.com/c/public/gem5/+/44109/3]
- If the key changes of the GTesting issue are merged, [revamp probes](https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-857)
- [Respective chain](https://gem5-review.googlesource.com/c/public/gem5/+/38706/1)
- 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.
- See <https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-730>