/gem5-forbidden-knowledge

An amateurs thoughts and documentation on Gem5 source code.

gem5 forbidden knowledge

An amateurs thoughts and documentation on Gem5 source code, accumulated as I study the source code and the behaviour of a gem5 simulation.

Open in Obsidian for the image embeds to work.

Why? As more than just a simulator but a "simulator platform" gem5 requires you to add "new capabilities" to work on "novel" ideas. Naturally, that means making changes to the source code of gem5 itself. Sadly not many tutorials/guides exist that would explain the source. There is one by Ciro Santilli but he has stopped working on it.

My attempt will be to document code behaviour of the stable branch of the gem5 source code. I will try to relate the code with Computer Architecture theory wherever and whenever I can.

As previously stated, this is an amateurs documentation. The language used will not be the most technically accurate and might even be wrong. I will make all the effort possible to keep things as accurate as possible but I'm not making any promises. This is a hobby project after all.

This project is more for me than for others but contributions and discussions are more than welcome.

Relevant:

Existing research work

I couldn't find many examples online that included making changes to the gem5 source code itself. But the ones I did find are a delight to look at. Here they are:

  • BINDU: Deadlock-Freedom with One Bubble in the Network
  • DRAIN: Deadlock Removal for Arbitrary Irregular Networks
  • BBR: Brownian Bubble Router
  • Everything in this gh org really.

References