Some thoughts on this document

  • We want this document to be living.
    • We should have the source checked in somewhere (probably in a repo next to gem5).
    • We should force people to make updates when they break things.
    • We should have the source for the examples checked into the gem5 repo, and have tests that run them.

An outline:

  1. Part I: Getting started

    Done-ish

  2. Developing with gem5
    1. Creating a new SimObject

    2. Debugging support in gem5

    3. Creating a new MemObject with master/slave ports

    4. Contributing back to gem5
      1. Style guidelines
      2. Mercurial queues
      3. Reviewboard
    5. Running tests

  3. Full system simulation
    1. Introduction
    2. Simple FS config file
    3. Building a kernel for gem5
    4. Building a disk image for gem5
    5. ARM simulation
    6. More on X86 simulation
  4. Advanced gem5 usage
    1. Checkpoint creation and restoring
    2. ISA language
    3. Using m5ops
    4. Using traces
  5. An overview of common SimObjects
    1. CPUs
      1. CPU models
      2. Dynamically switching CPUs
    2. Classic memory system
      1. Random note: All controllers that issue coherent requests are required to have a cache attached to them. For instance, you have to have a cache on the IOBus or else there are weird errors.
    3. System

  6. Using Ruby cache coherence model
    1. Overview of Ruby
    2. Ruby’s cache coherence protocols
    3. Ruby’s network topologies
    4. Writing a new protocol
    5. Debugging a protocol
    6. Extending the SLICC language
  7. External projects and gem5
    1. Power models
    2. GPU models
    3. External simulation infrastructure

Todo

Add information about address ranges and interleaved address ranges.

Todo list

Todo

Finish the previous paragraph about how it is a good idea to understand what your tools are actually doing.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/intro.rst, line 22.)

Todo

should add a list of terms. Things like “simulated system” vs “host system”, etc.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/intro.rst, line 26.)

Todo

Add a pointer to the gem5 docker image. In fact, we may want to have a docker image for each section.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part1/building.rst, line 12.)

Todo

We should add links to SimObjects like Cache that point to the doxygen on gem5’s site.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part1/cache_config.rst, line 31.)

Todo

Should probably talk here about SE vs. FS mode.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part1/simple_config.rst, line 46.)

Todo

make a section on the SConscript build system which discuss all of the functions.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part2/helloobject.rst, line 145.)

Todo

Explain params etc. Overall, the tag store is not a great example for this, but we’ll leave it for now.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part2/simobject-old.rst, line 99.)

Todo

Make sure there is a link to the gem5 source here

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part3/fs_config.rst, line 24.)

Todo

Update all SimObjects to point to the gem5 source code.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part3/fs_config.rst, line 40.)

Todo

This bad addr thing could be made more clear.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part3/fs_config.rst, line 89.)

Todo

Other differences between SE and FS mode...

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/part3/intro.rst, line 33.)

Todo

Add information about address ranges and interleaved address ranges.

(The original entry is located in /afs/cs.wisc.edu/p/multifacet/users/powerjg/gem5-tutorial/learning_gem5/thoughts.rst, line 57.)