website: Add 20.1 release post

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Change-Id: Ia57c1aef37065f173f9b64ddeb411ecba0aaf52e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5-website/+/35376
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>
Tested-by: Bobby R. Bruce <bbruce@ucdavis.edu>
diff --git a/_posts/2020-09-30-gem5-20-1.md b/_posts/2020-09-30-gem5-20-1.md
new file mode 100644
index 0000000..3f98eea
--- /dev/null
+++ b/_posts/2020-09-30-gem5-20-1.md
@@ -0,0 +1,237 @@
+---
+layout: post
+title:  "gem5-20.1 Released!"
+author: Jason Lowe-Power
+date:   2020-10-01
+categories: project
+---
+
+[gem5-20.1](https://gem5.googlesource.com/public/gem5/+/refs/heads/stable) has been released!
+The **[stable](https://gem5.googlesource.com/public/gem5/+/refs/heads/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](https://gem5.atlassian.net/), over 650  commits (a 25% increase from the 20.0 release), and 58 unique contributors (a 100% increase!).
+
+[Below](#changelog), 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](https://gem5.googlesource.com/public/gem5/+/stable/RELEASE-NOTES.md).
+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](https://sfconservancy.org/news/2020/jun/23/gitbranchname/), [GitHub](https://github.com/github/renaming), 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](https://www.washingtonpost.com/opinions/2020/06/12/tech-industry-has-an-ugly-master-slave-problem/) 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](https://gem5.atlassian.net/browse/GEM5-9) and a simple "decoder ring" is shown below in the changelog.
+
+### Code of conduct
+
+The gem5 project now has an official [Code of Conduct](https://gem5.googlesource.com/public/gem5/+/refs/heads/stable/CODE-OF-CONDUCT.md) 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](https://gem5.googlesource.com/public/gem5/+/refs/heads/stable/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](http://jenkins.gem5.org/) (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](http://www.gem5.org/2020/05/27/memory-controller.html) or Wendy's talks on YouTube: [Talk on new interface and NVM](https://www.youtube.com/watch?v=t2PRoZPwwpk) and the [talk on LPDDR5](https://www.youtube.com/watch?v=ttJ9_I_Avyc)
+
+* **[PYTHON API CHANGE]**: The DRAM models are now *DRAM interfaces* which is a child of the *memory controller*. Example change shown below.
+  * The DRAM is split into a memory controller and a DRAM interface
+  * `SimpleMemory` is no longer a drop-in replacement for a DRAM-based memory controller.
+* LPDDR5 model added
+* NVM model added
+* New memory controller model that can use both NVM and DRAM
+
+Code from gem5-20.0
+
+```python
+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.
+
+```python
+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](http://www.gem5.org/2020/05/27/heterogarnet.html) and [Srikant's talk on YouTube](https://www.youtube.com/watch?v=AH9r44r2lHA).
+
+* **[USER-FACING CHANGE]**: The network type options are now "simple" and "garnet" instead of "garnet2.0". (If "garnet2.0" is used, you will get a warning until gem5-20.2)
+* Added models for clock domain crossings and serialization/deserialization (SERDES)
+
+#### Transactional memory support: Contributed by *Timothy Hayes*
+
+You can find details on the [Jira issue](https://gem5.atlassian.net/browse/GEM5-587)
+
+* gem5 now supports Arm TME (transactional memory extensions)
+* Transactional memory is only implemented in the `MESI_Three_Level_HTM` Ruby protocol, and it is only implemented in Ruby.
+* This implements a checkpointing mechanism for the architectural state and buffering of speculative memory updates.
+* IBM POWER and x86 HTM extensions have *not* been implemented.
+
+#### Other new features
+
+* External simulator integrations
+  * Added support for DRAMSim3
+  * Added back support for DRAMSim2
+* Armv8-A Self Hosted Debug extension added
+* KVM support for Armv8 hosts without GICv2 hardware
+* Implemented Secure EL2 for ARMv8
+
+### Removed features
+
+* Dropped support for mercurial version control
+
+### New supported platforms
+
+* GCC up to 10.2 is now supported. Minimum GCC is now 5.0.
+* Clang up to version 9. Minimum Clang is now 3.9.
+
+### Platforms no longer support
+
+* **[USER-FACING CHANGE]**: Python 2 is officially deprecated. We will drop support for Python 2 in the next release. In this release you will get a warning if you're using Python 2.
+* **[USER-FACING CHANGE]**: We have dropped support for GCC 4.X
+* **[USER-FACING CHANGE]**: We have dropped support for Scons 2.x (Note: this is the default in Ubuntu 16.04. Use pip to install a newer scons.)
+
+See <http://www.gem5.org/documentation/general_docs/building> for gem5's current dependencies.
+
+### Other changes
+
+#### Deprecating "master" and "slave"
+
+* **[API CHANGE]**: The names "master" and "slave" have been deprecated
+  * Special thanks to Lakin Smith, Shivani Parekh, Eden Avivi, and Emily Brickey.
+  * Below is a guide to most of the name changes.
+  * The goal was to replace problematic language with more descriptive and precise terms.
+* There may be some bugs introduced with this change as there were many places in the Python configurations which relied on "duck typing".
+* This change is mostly backwards compatible and warning will be issued until at least gem5-20.2.
+
+```
+MasterPort -> RequestorPort
+SlavePort -> ReceiverPort
+
+xbar.slave -> xbar.cpu_side
+xbar.master -> xbar.mem_side
+
+MasterId -> RequestorId
+```
+
+#### Testing improvements
+
+* We now have Jenkins server (<http://jenkins.gem5.org/>) running nightly and other large tests. Special thanks to Mike Upton for setting this up!
+  * Nightly tests run the "long" regression tests (many tests added).
+  * Compiler tests run gem5 build for many targets and all compilers once a week.
+* Updated CI tester (kokoro) to use a more up-to-date environment.
+* Improved the testing infrastructure.
+  * Almost all testing resources now available in [gem5-resources repository](https://gem5.googlesource.com/public/gem5-resources/).
+  * Generally cleaned up the `tests/` directory in mainline gem5.
+  * Many general testlib improvements.
+
+#### More changes
+
+* **[PYTHON API CHANGE]**: m5.stats.dump() root argument renamed to roots to reflect the fact that it now takes a list of SimObjects
+* **[USER-FACING CHANGE]**: Checkpoint compatibility may be broken by the following changes
+  * <https://gem5-review.googlesource.com/c/public/gem5/+/25145>
+  * <https://gem5-review.googlesource.com/c/public/gem5/+/31874>
+* **[API CHANGE]** Changed `setCPU` to `setThreadContext` in Interrupts
+* Added a `Compressor` namespace.
+* **[API CHANGE]** The `Callback` class was removed and replaced with C++ lambdas.
+* Many objects' stats have been updated to the "new" stats style.
+* Many more objects have had their APIs formalized. See <http://www.gem5.org/documentation/general_docs/gem5-apis>