gem5-20.1 Released!


gem5-20.1 has been released! The stable branch of the gem5 repo now points to the gem5-20.1 release instead of the gem5-20.0 release. Overall, the 20.1 release was much smoother than the gem5-19 and gem5-20.1 release. I think we’re learning how to do this!

Thank you to everyone that made this release possible! This has been a very productive release with 150 issues, over 650 commits (a 25% increase from the 20.0 release), and 58 unique contributors (a 100% increase!).

Below, I go over the major changes in gem5-20.1 since gem5-20.0, which can also be found in the RELEASE-NOTES.md file. This should cover all of the major changes and user-facing changes. The hope is that after reading the changelog, you can make updates to your local gem5 changes and then things will just work. I’m sure this isn’t going to be that clean, but we can hope.

Leaderboard

First, I want to look at a quick leaderboard of the most prolific contributors for this release. Going forward, I’d like for these leaderboards to be living and automatically updated on the website. If you’re interested in helping out on this, let me know!

Commits

There was a total of 510 commits between the v19.0.0.0 tag and the v20.0.0.0 tag. gem5 v19.0.0.0 was tagged on February 20th, so this release was over 91 days or over 5.5 commits per day! This was quite a breakneck pace!

Having more commits doesn’t necessarily mean that you’ve contributed more. However, being on this list of the top 10 committers does mean that you’ve put a significant amount of your time into gem5. For that, the community thanks you!

  163 Gabe Black
  69  Giacomo Travaglini
  57  Bobby R. Bruce
  45  Hoa Nguyen
  27  Tony Gutierrez
  24  Kyle Roarty
  20  Daniel Carvalho
  19  Emily Brickey
  17  Tiago Mück
  16  Timothy Hayes

Reviewers

Possibly more important than raw commits are the people who take time out of their days to review code. Here are the top 10 reviewers for this commit. Again, thank you for your work! The number of bugs that reviewers find is incredible, and without these people gem5’s code quality would suffer.

While there were 510 commits, there were 642 reviews for an average of 1.25 reviews per change. The way we count reviews isn’t perfect as it misses “re-reviews” and also skips “Maintainer” reviews. However, I would like to see this review ratio to be closer to 2 reviews per changeset in future releases.

    265  Jason Lowe-Power
     91  Andreas Sandberg
     73  Gabe Black
     68  Giacomo Travaglini
     67  Matt Sinclair
     61  Bobby R. Bruce
     55  Nikos Nikoleris
     48  Anthony Gutierrez
     46  Daniel Carvalho
     18  Hoa Nguyen

I want to call special attention to this list as there are a number of people who do more reviewing than writing code. This is incredibly helpful to the community, and we appreciate your contributions even if they aren’t adding code!

Major user-facing changes

In this release, we are making a few large user-facing changes. We hope that these changes will be simple to consume, and they are backwards compatible in most cases.

New default branch name: stable

The default branch for gem5 is now named “stable” instead of “master. “Stable” is a better description of what this branch is, and this name change is in line with changes instituted in the Git project, GitHub, and many others.

Deprecating “master” and “slave”

In this release, we have deprecated most uses of “master” and “slave” in gem5. These are problematic terms which do not encourage diversity and inclusion in the gem5 community. There were over 3000 instances of these words in our codebase!

In a large majority of cases, the new names for classes, variable names, and comments improved code readability and were more precise. In a few cases, we still use the master/slave terminology when the underlying technology which gem5 is modeling uses this terminology.

Details can be found in this Jira issue and a simple “decoder ring” is shown below in the changelog.

Code of conduct

The gem5 project now has an official Code of Conduct in which “we pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.” The code of conduct codifies our standards and enforcement of those standards. If you have any questions on this code of conduct, please email the gem5-dev mailing list. If you would like to report a violation, the point of contact is David Wood or any other PMC member. See the MAINTAINERS file for emails.

Testing

One of our big pushes for this release was to improve our testing infrastructure. We have launched a Jenkins server (big thanks to Mike Upton!) to run our nightly tests and other integration tests. Right now, Jenkins runs the “long” regressions nightly and a suite of compiler tests weekly on the develop branch. We’ve also updated the CI tester (kokoro) to use a more up-to-date environment and generally improved the testing infrastructure.

We’re looking forward to some more scripting of Gerrit soon. If you have ideas on adding more tests, or new things to test, we’d love to hear them!

Changelog

New features in 20.1

New DRAM interface: Contributed by Wendy Elsasser

You can find details about this on the gem5 blog or Wendy’s talks on YouTube: Talk on new interface and NVM and the talk on LPDDR5

Code from gem5-20.0

system.mem_ctrl = DDR3_1600_8x8()
system.mem_ctrl.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.master

Now, you must create a memory controller and add a specific DRAM interface. Code from gem5-20.1.

system.mem_ctrl = MemCtrl()
system.mem_ctrl.dram = DDR3_1600_8x8()
system.mem_ctrl.dram.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.master

One possible gotcha with this change is that the SimpleMemory is like the MemCtrl but does not have a DRAM interface. Thus, SimpleMemory is not a drop-in replacement for the DRAM controllers from gem5-20.0 and before.

Improved on-chip interconnect model, HeteroGarnet: Contributed by Srikant Bharadwaj

You can find details about this on the gem5 blog and Srikant’s talk on YouTube.

Transactional memory support: Contributed by Timothy Hayes

You can find details on the Jira issue

Other new features

Removed features

New supported platforms

Platforms no longer support

See http://www.gem5.org/documentation/general_docs/building for gem5’s current dependencies.

Other changes

Deprecating “master” and “slave”

MasterPort -> RequestorPort
SlavePort -> ReceiverPort

xbar.slave -> xbar.cpu_side
xbar.master -> xbar.mem_side

MasterId -> RequestorId

Testing improvements

More changes