I'm going to be writing a gem5-20 paper soon. As part of this paper writing procedure, I wanted to find out all of the big contributions (new features) that had been added since the gem5 release. Like everything in gem5, this was harder than expected!
In this post, I'm describing my methodology for "excavating" gem5's history. This isn't a perfect methodology, so I may miss things. I'll be sending out a list of "major" changes to gem5 in the last 9 years based on this methdology, so please let me know if I've missed anything!
- It may seem like we're overly pedantic about our git commit messages. We're not! It was progressively harder and harder to figure out what the changes were about.
- Important changes don't come with many commits (usually).
- The biggest contributors are people who are making general improvements, not new features
- In fact, this is general. Very few "new features" are added compared to commits!
- No overarching roadmap
- More recently, there are fewer (simple) bug fixes. We've done a good job! The code quality is improving generally!
- General changes
- Ruby has become much less popular
- SE mode has become less popular
- arm has become much more popular
- It's really hard to reverse engineer release notes!
Now, I want to find out what's been changing lately.
This was pretty easy using git's log
command.
For instance, if I wanted to see all of the commits sorted by author since the beginning of this year, I can use the following command.
git shortlog -ne --since=2020-01-01
To see what happened in 2019, we can use a combination of --since
and --until
:
git shortlog -ne --since=2019-01-01 --until=2020-01-01
I quickly found a problem with this method. For some reason, when I checked to see what was committed in 2016, there was nothing!
git shortlog -ne --since=2016-01-01 --until=2017-01-01
Looking closer, in 2017, the "first" commit was made in February. This helped me remember that we transitioned from mercurial to git around that time!
Digging into it a bit more, it looks like when we migrated all of the commits from mercurial to git we only kept the author date, not the commit date. So, if you look at the dates in the gem5 history you'll find that before Feb 2017 the dates are non-linear.
Therefore, for 2017 and further, I'm instead using spans of commits to track what happened that year. I'm using the following commits.
Year | First commit hash |
---|---|
2018 | c64c6c9dd |
2017 | f835378be |
2016 | e67749426 |
2015 | 1ee70e9d8 |
2014 | ba9ec669b |
2013 | a83e74b37 |
2012 | bd23a3719 |
2011-06-01 | f49f384fe |
2011 | 5e25f3171 |
First Ruby | 2f3095014 |
For example, to see all commits in 2016 we can use:
git shortlog -ne e67749426..f835378be
The first step was finding when m5 officially became gem5.
There was a long transition as the GEMS code was merged into the m5 codebase. This started back in May of 2009 with the following commit:
2f3095014 ruby: Import ruby and slicc from GEMS Mon May 11 10:38:43 2009
However, for the sake of arguments, I'm going to pick one commit as the "official" gem5 release. That commit is
f49f384fe scons: rename some things from m5 to gem5
Author: Nathan Binkert <[email protected]>
Date: Thu Jun 2 17:36:18 2011 -0700
This is a nice commit on a nice date because it's almost exactly 9 years ago.
- Gabe Black [email protected]
- Update ABI for guest<->simulator communication
- improvements to m5 (guest<->simulator) utility
- Giacomo Travaglini [email protected]
- Bobby R. Bruce [email protected]
- CI tests and website
- Adrian Herrera [email protected]
- Daniel Carvalho [email protected]
- Nils Asmussen [email protected]
- Baremetal FS RISC-V
- Nikos Nikoleris [email protected]
- Ciro Santilli [email protected]
- Timothy Hayes [email protected]
- Matthew Poremba [email protected]
- Jordi Vaquero [email protected]
- Jason Lowe-Power [email protected]
- Ayaz Akram [email protected]
- Tiago Mück [email protected]
- Yu-hsin Wang [email protected]
- Anouk Van Laer [email protected]
- Earl Ou [email protected]
- Gabor Dozsa [email protected]
- Hsuan Hsu [email protected]
- Tony Gutierrez [email protected]
- Boris Shingarov [email protected]
- Trivikram Reddy [email protected]
- Andreas Sandberg [email protected]
- Andriani Mappoura [email protected]
- Chun-Chen Hsu [email protected]
- Giacomo Gabrielli [email protected]
- Hussein Elnawawy [email protected]
- Joe Gross [email protected]
- Mahyar Samani [email protected]
- Matt Poremba [email protected]
- Michiel Van Tol [email protected]
- Wendy Elsasser [email protected]
- Yuan Yao [email protected]
- jiegec [email protected]
- Gabe Black [email protected]
- SystemC TLM
- Port API updates
- fastmodel support
- Giacomo Travaglini [email protected]
- ARM improvements (GICv3&4, SMMU)
- Daniel Carvalho [email protected]
- Cache compression
- Andreas Sandberg [email protected]
- HDF5
- python3 (beginnings)
- Ciro Santilli [email protected]
- Nikos Nikoleris [email protected]
- Javier Bueno Hedo [email protected]
- predictors and prefetcher improvements
- Brandon Potter [email protected]
- Tiago Mück [email protected]
- ARM+Ruby support
- Adrian Herrera [email protected]
- Bobby R. Bruce [email protected]
- testing improvements
- Andrea Mondelli [email protected]
- Jason Lowe-Power [email protected]
- Chun-Chen Hsu [email protected]
- Pouya Fotouhi [email protected]
- Tuan Ta [email protected]
- Giacomo Gabrielli [email protected]
- Gabor Dozsa [email protected]
- Jairo Balart [email protected]
- Ryan Gambord [email protected]
- IanJiangICT [email protected]
- Jordi Vaquero [email protected]
- Javier Setoain [email protected]
- Alec Roelke [email protected]
- Anouk Van Laer [email protected]
- Hoa Nguyen [email protected]
- Ivan Pizarro [email protected]
- Ayaz Akram [email protected]
- Tommaso Marinelli [email protected]
- Isaac Sánchez Barrera [email protected]
- Jing Qu [email protected]
- Srikant Bharadwaj [email protected]
- Adrià Armejach [email protected]
- Alexandru Dutu [email protected]
- Austin Harris [email protected]
- Bertrand Marquis [email protected]
- David Hashe [email protected]
- Jan-Peter Larsson [email protected]
- Joe Gross [email protected]
- Jui-min Lee [email protected]
- Mahyar Samani [email protected]
- Marc Mari Barcelo [email protected]
- Matthew Poremba [email protected]
- Michiel Van Tol [email protected]
- Mingyuan [email protected]
- Moyang Wang [email protected]
- Sandipan Das [email protected]
- Tony Gutierrez [email protected]
- Anis Peysieux [email protected]
- Avishai Tvila [email protected]
- Bagus Hanindhito [email protected]
- Curtis Dunham [email protected]
- Doğukan Korkmaztürk [email protected]
- Georg Kotheimer [email protected]
- Isaac Richter [email protected]
- John Alsop [email protected]
- Kevin Brodsky [email protected]
- Marjan Fariborz [email protected]
- Matt Sinclair [email protected]
- Matteo Andreozzi [email protected]
- Nicholas Lindsay [email protected]
- Pablo Prieto [email protected]
- Pau Cabre [email protected]
- Po-Hao Su [email protected]
- Polydoros Petrakis [email protected]
- Rahul Thakur [email protected]
- Rekai Gonzalez-Alberquilla [email protected]
- Ruben Ayrapetyan [email protected]
- Rutuja Oza [email protected]
- Samuel Grayson [email protected]
- Sascha Bischoff [email protected]
- Stanislaw Czerniawski [email protected]
- Steve Reinhardt [email protected]
- Timothy Hayes [email protected]
- Willy Wolff [email protected]
- Xin Ouyang [email protected]
- Yifei Liu [email protected]
- Zicong Wang [email protected]
- seanzw [email protected]
- Gabe Black [email protected]
- SystemC in gem5
- Giacomo Travaglini [email protected]
- ARM improvements
- Daniel Carvalho [email protected]
- Replacement policies
- Nikos Nikoleris [email protected]
- Andreas Sandberg [email protected]
- Jason Lowe-Power [email protected]
- Ciro Santilli [email protected]
- Brandon Potter [email protected]
- Chuan Zhu [email protected]
- Pau Cabre [email protected]
- LTAGE improvements
- Tuan Ta [email protected]
- Alec Roelke [email protected]
- Tony Gutierrez [email protected]
- Glenn Bergmans [email protected]
- DT Autogeneration
- Matteo Andreozzi [email protected] -QoS aware memory controller
- Anouk Van Laer [email protected]
- Hanhwi Jang [email protected]
- Rekai Gonzalez-Alberquilla [email protected]
- Siddhesh Poyarekar [email protected]
- Curtis Dunham [email protected]
- Robert Kovacsics [email protected]
- Sean Wilson [email protected]
- testlib
- Adrien Pesle [email protected]
- Bradley Wang [email protected]
- Chun-Chen Hsu [email protected]
- Javier Bueno Hedo [email protected]
- Matt Sinclair [email protected]
- Wendy Elsasser [email protected]
- Earl Ou [email protected]
- Edmund Grimley Evans [email protected]
- Giacomo Gabrielli [email protected]
- Matt Horsnell [email protected]
- Maurice Becker [email protected]
- Pin-Yen Lin [email protected]
- Rico Amslinger [email protected]
- Sherif Elhabbal [email protected]
- Xiaoyu Ma [email protected]
- Yuetsu Kodama [email protected]
- Alexandru Dutu [email protected]
- Austin Harris [email protected]
- Brad Beckmann [email protected]
- Chen Zou [email protected]
- Christian Menard [email protected]
- Gabor Dozsa [email protected]
- John Alsop [email protected]
- Kevin Brodsky [email protected]
- Khalique [email protected]
- Matteo M. Fusi [email protected]
- Maximilian Stein [email protected]
- Michael LeBeane [email protected]
- Michiel Van Tol [email protected]
- Nayan Deshmukh [email protected]
- Robert Scheffel [email protected]
- Rohit Kurup [email protected]
- Srikant Bharadwaj [email protected]
- Stanislaw Czerniawski [email protected]
- Steve Reinhardt [email protected]
- Sujay Phadke [email protected]
- Swapnil Haria [email protected]
- Xianwei Zhang [email protected]
- Gabe Black [email protected]
- Various improvements to scons, tests, and many ISAs
- Andreas Sandberg [email protected]
- Various improvements to python support and ARM ISA
- Nikos Nikoleris [email protected]
- General improvements to classic cache protocol
- Brandon Potter [email protected]
- Improvements to SE mode
- Alec Roelke [email protected]
- RISC-V support added
- Giacomo Travaglini [email protected]
- Various improvements to ARM
- Sean Wilson [email protected]
- Curtis Dunham [email protected]
- Jason Lowe-Power [email protected]
- Learning gem5
- Beginning of formal project governance
- Christian Menard [email protected]
- gem5 <-> SystemC-TLM
- Jose Marinho [email protected]
- Bjoern A. Zeeb [email protected]
- Peter Enns [email protected]
- Rekai Gonzalez-Alberquilla [email protected]
- Gabor Dozsa [email protected]
- Gedare Bloom [email protected]
- Matthias Jung [email protected]
- Radhika Jagtap [email protected]
- Andreas Hansson [email protected]
- Anouk Van Laer [email protected]
- Pau Cabre [email protected]
- Paul Rosenfeld [email protected]
- Rahul Thakur [email protected]
- Sudhanshu Jha [email protected]
- Lena Olson [email protected]
- Matthew Poremba [email protected]
- Sascha Bischoff [email protected]
- Éder F. Zulian [email protected]
- Austin Harris [email protected]
- David Guillen-Fandos [email protected]
- Javier Cano-Cano [email protected]
- Matthias Hille [email protected]
- Nathanael Premillieu [email protected]
- Rico Amslinger [email protected]
- Riken Gohil [email protected]
- Stephan Diestelhorst [email protected]
- Swapnil Haria [email protected]
- Tiago Mück [email protected]
- Tony Gutierrez [email protected]
- Weiping Liao [email protected]
- Wendy Elsasser [email protected]
- Alexandru Dutu [email protected]
- Ashkan Tousi [email protected]
- Boris Shingarov [email protected]
- Geoffrey Blake [email protected]
- Hanhwi Jang [email protected]
- Matt Sinclair [email protected]
- Matteo Andreozzi [email protected]
- Rohit Kurup [email protected]
- Santi Galan [email protected]
- Sean McGoogan [email protected]
- Tushar Krishna [email protected]
- Zhang Zheng [email protected]
- Andreas Sandberg [email protected]
- Forking
- Various fixes
- Andreas Hansson [email protected]
- Classic cache improvements (mostly exclusive)
- Curtis Dunham [email protected]
- General ARM
- Tony Gutierrez [email protected]
- GPU model
- Steve Reinhardt [email protected]
- Various changes
- Nikos Nikoleris [email protected]
- Classic caches improvements
- Brandon Potter [email protected]
- SE mode improvements
- Michael LeBeane [email protected]
- Dylan Johnson [email protected]
- Alexandru Dutu [email protected]
- Mitch Hayenga [email protected]
- David Guillen-Fandos [email protected]
- Power model
- Gabor Dozsa [email protected]
- Distributed ethernet model
- Tushar Krishna [email protected]
- Garnet 2.0 updates
- Alec Roelke [email protected]
- Beginning of RISC-V
- Bjoern A. Zeeb [email protected]
- FreeBSD support
- Jason Lowe-Power [email protected]
- Rekai Gonzalez-Alberquilla [email protected]
- Arthur Perais [email protected]
- Abdul Mutaal Ahmad [email protected]
- Brad Beckmann [email protected]
- David Hashe [email protected]
- Mohammad Alian [email protected]
- Omar Naji [email protected]
- Sascha Bischoff [email protected]
- Wendy Elsasser [email protected]
- DRAM low-power functionality
- Akash Bagdia [email protected]
- Power model
- Joel Hestness [email protected]
- John Kalamatianos [email protected]
- Matteo Andreozzi [email protected]
- Matthew Poremba [email protected]
- Radhika Jagtap [email protected]
- Stephan Diestelhorst [email protected]
- Jieming Yin [email protected]
- Matthias Jung [email protected]
- Reiley Jeapaul [email protected]
- Tuan Ta [email protected]
- Blake Hechtman [email protected]
- Christian Menard [email protected]
- Fernando Endo [email protected]
- Geoffrey Blake [email protected]
- Ilias Vougioukas [email protected]
- Jakub Jermar [email protected]
- Joe Gross [email protected]
- Krishnendra Nathella [email protected]
- Marco Elver [email protected]
- Matt Poremba [email protected]
- Nathan Binkert [email protected]
- Nathanael Premillieu [email protected]
- Nicolas Derumigny [email protected]
- Prakash Ramrakhyani [email protected]
- Ricardo Alves [email protected]
- Sergei Trofimov [email protected]
- Shawn Rosti [email protected]
- Sooraj Puthoor [email protected]
- Sophiane Senni [email protected]
- Victor Garcia [email protected]
- Andreas Hansson [email protected]
- Classic memory improvements
- Andreas Sandberg [email protected]
- ARM improvements
- Nilay Vaish [email protected]
- General Ruby improvements
- David Hashe [email protected]
- Steve Reinhardt [email protected]
- Curtis Dunham [email protected]
- SST-gem5 connector?
- Brandon Potter [email protected]
- Brad Beckmann [email protected]
- Joel Hestness [email protected]
- Ali Jafri [email protected]
- Tony Gutierrez [email protected]
- Radhika Jagtap [email protected]
- Elastic traces?
- Mitch Hayenga [email protected]
- Ali Saidi [email protected]
- Gabe Black [email protected]
- Jason Lowe-Power [email protected]
- Nikos Nikoleris [email protected]
- Stephan Diestelhorst [email protected]
- Erfan Azarkhish [email protected]
- HMC model
- Marco Balboni [email protected]
- Nathanael Premillieu [email protected]
- Ruslan Bukin [email protected]
- Sascha Bischoff [email protected]
- Wendy Elsasser [email protected]
- Abdul Mutaal Ahmad [email protected]
- Andrew Bardsley [email protected]
- Bjoern A. Zeeb [email protected]
- Geoffrey Blake [email protected]
- Giacomo Gabrielli [email protected]
- Joe Gross [email protected]
- Lena Olson [email protected]
- Malek Musleh [email protected]
- Palle Lyckegaard [email protected]
- Andrew Lukefahr [email protected]
- Boris Shingarov [email protected]
- Cagdas Dirik [email protected]
- David Guillen-Fandos [email protected]
- Dylan Johnson [email protected]
- Emilio Castillo [email protected]
- Gabor Dozsa [email protected]
- Karthik Sangaiah [email protected]
- Matt Evans [email protected]
- Matthias Jung [email protected]
- Rekai Gonzalez-Alberquilla [email protected]
- Rene de Jong [email protected]
- Rizwana Begum [email protected]
- Rune Holm [email protected]
- Timothy M. Jones [email protected]
- Alexandru Dutu [email protected]
- Chris Emmons [email protected]
- Christoph Pfister [email protected]
- Dibakar Gope [email protected]
- Dongxue Zhang [email protected]
- Hongil Yoon [email protected]
- Marco Elver [email protected]
- Maxime Martinasso [email protected]
- Mike Upton [email protected]
- Monir Mozumder [email protected]
- Pau Cabre [email protected]
- Peter Enns [email protected]
- Swapnil Haria [email protected]
- Victor Garcia [email protected]
- Andreas Hansson [email protected]
- Nilay Vaish [email protected]
- MESI three level
- Ruby improvements
- x86 improvements
- Andreas Sandberg [email protected]
- KVM CPU
- Mitch Hayenga [email protected]
- Curtis Dunham [email protected]
- Gabe Black [email protected]
- Ali Saidi [email protected]
- Andrew Bardsley [email protected]
- Minor CPU
- Steve Reinhardt [email protected]
- Stephan Diestelhorst [email protected]
- Power model and DVFS support
- Geoffrey Blake [email protected]
- Tony Gutierrez [email protected]
- Dam Sunwoo [email protected]
- Alexandru Dutu [email protected]
- KVM in SE mode
- Omar Naji [email protected]
- DRAM Power
- Marco Elver [email protected]
- Binh Pham [email protected]
- Radhika Jagtap [email protected]
- Wendy Elsasser [email protected]
- Yasuko Eckert [email protected]
- Akash Bagdia [email protected]
- Andrew Lukefahr [email protected]
- Giacomo Gabrielli [email protected]
- Jiuyue Ma [email protected]
- Joel Hestness [email protected]
- Sascha Bischoff [email protected]
- Amin Farmahini [email protected]
- Eric Van Hensbergen [email protected]
- Kanishk Sugand [email protected]
- Marc Orr [email protected]
- Matt Horsnell [email protected]
- Michael Adler [email protected]
- Neha Agarwal [email protected]
- Stan Czerniawski [email protected]
- Chris Adeniyi-Jones [email protected]
- Chris Emmons [email protected]
- Christopher Torng [email protected]
- Emilio Castillo [email protected]
- Faissal Sleiman [email protected]
- Gabe Loh [email protected] gloh none@none
- Gedare Bloom [email protected]
- Matt Evans [email protected]
- Nikos Nikoleris [email protected]
- Ola Jeppsson [email protected]
- Paul Rosenfeld [email protected]
- Prakash Ramrakhyani [email protected]
- Severin Wischmann [email protected]
- Stian Hvatum [email protected]
- Timothy M. Jones [email protected]
- Tom Jablin [email protected]
- Xiangyu Dong [email protected]
- Andreas Hansson [email protected]
- DRAM model
- Memory tracing / traffic generator support
- Andreas Sandberg [email protected]
- CPU switching improvements
- KVM CPU
- Nilay Vaish [email protected]
- x86 improvements
- Ruby improvements
- Ali Saidi [email protected]
- Steve Reinhardt [email protected]
- Joel Hestness [email protected]
- Sascha Bischoff [email protected]
- Tony Gutierrez [email protected]
- Geoffrey Blake [email protected]
- Akash Bagdia [email protected]
- Ani Udipi [email protected]
- Dam Sunwoo [email protected]
- Lena Olson [email protected]
- Mitch Hayenga [email protected]
- Faissal Sleiman [email protected]
- Malek Musleh [email protected]
- Neha Agarwal [email protected]
- Chris Emmons [email protected]
- Gabe Black [email protected]
- Chander Sudanthi [email protected]
- Christian Menard [email protected]
- Christopher Torng [email protected]
- Deyaun Guo [email protected]
- Jason Lowe-Power [email protected]
- Lluís Vilanova [email protected]
- Matt Evans [email protected]
- Matt Horsnell [email protected]
- Michael Levenhagen [email protected]
- Prakash Ramrakhyani [email protected]
- Stephan Diestelhorst [email protected]
- Timothy M. Jones [email protected]
- Uri Wiener [email protected]
- Yasuko Eckert [email protected]
- Amin Farmahini [email protected]
- Andrea Pellegrini [email protected]
- Blake Hechtman [email protected]
- Brad Beckmann [email protected]
- Dibakar Gope [email protected]
- Emilio Castillo [email protected]
- Eric Van Hensbergen [email protected]
- Gedare Bloom [email protected]
- Lluc Alvarez [email protected]
- Marco Elver [email protected]
- Mrinmoy Ghosh [email protected]
- Nathanael Premillieu [email protected]
- Rene de Jong [email protected]
- Stan Czerniawski [email protected]
- Tao Zhang [email protected]
- Umesh Bhaskar [email protected]
- Xiangyu Dong [email protected]
- Andreas Hansson [email protected]
- Major port improvements
- AddrRange
- Traffic Generator
- Simple DRAM controller
- Nilay Vaish [email protected]
- Cache state checkpointing in Ruby
- O3+Ruby updates
- Gabe Black [email protected]
- unify SE and FS
- Ali Saidi [email protected]
- Andreas Sandberg [email protected]
- Brad Beckmann [email protected]
- Steve Reinhardt [email protected]
- Tony Gutierrez [email protected]
- Dam Sunwoo [email protected]
- Chander Sudanthi [email protected]
- Geoffrey Blake [email protected]
- Joel Hestness [email protected]
- Marc Orr [email protected]
- Nathanael Premillieu [email protected]
- Jason Lowe-Power [email protected]
- Mrinmoy Ghosh [email protected]
- Deyaun Guo [email protected]
- Jayneel Gandhi [email protected]
- Nathan Binkert [email protected]
- Brian Grayson [email protected]
- Djordje Kovacevic [email protected]
- Koan-Sin Tan [email protected]
- Lena Olson [email protected]
- Malek Musleh [email protected]
- Matt Evans [email protected]
- Uri Wiener [email protected]
- William Wang [email protected]
- Mitch Hayenga [email protected]
- Nuwan Jayasena [email protected]
- Ron Dreslinski [email protected]
- Sascha Bischoff [email protected]
- Tushar Krishna [email protected]
- Vince Weaver [email protected]
- Anders Handler [email protected]
- Andrew Lukefahr [email protected]
- Erik Tomusk [email protected]
- Giacomo Gabrielli [email protected]
- Hamid Reza Khaleghzadeh [email protected]
- James Clarkson [email protected]
- Krishnendra Nathella [email protected]
- Lisa Hsu [email protected]
- Lluc Alvarez [email protected]
- Lluís Vilanova [email protected]
- Marco Elver [email protected]
- Matt Horsnell [email protected]
- Maximilien Breughe [email protected]
- Min Kyu Jeong [email protected]
- Palle Lyckegaard [email protected]
- Prakash Ramrakhyani [email protected]
- Pritha Ghoshal [email protected]
- Gabe Black [email protected]
- Korey Sewell [email protected]
- Ali Saidi [email protected]
- Nilay Vaish [email protected]
- Steve Reinhardt [email protected]
- Brad Beckmann [email protected]
- Nathan Binkert [email protected]
- Daniel Johnson [email protected]
- Chander Sudanthi [email protected]
- Geoffrey Blake [email protected]
- Lisa Hsu [email protected]
- Mrinmoy Ghosh [email protected]
- Tushar Krishna [email protected]
- Chris Emmons [email protected]
- Deyaun Guo [email protected]
- Giacomo Gabrielli [email protected]
- Prakash Ramrakhyani [email protected]
- Wade Walker [email protected]
- Andreas Hansson [email protected]
- Gabe Loh [email protected]
- Gedare Bloom [email protected]
- Joel Hestness [email protected]
- Mitch Hayenga [email protected]
- Thomas Grass [email protected]
- Tony Gutierrez [email protected]