It may be a good idea to add example exercises at the end of each chapter. These could be things that are good for a classroom or just good things to try out.
Adding a more “realistic” example in Part I would make the book a little more interesting. Giving readers an idea of what’s possible early would set the stage better.
An outline:
Done-ish
Creating a new SimObject
Debugging support in gem5
Simple event-driven model
Adding parameters to SimObjects
Creating a new MemObject with master/slave ports
A more complex SimObject: Simple Uniprocessor cache
A simple CPU model (Code mostly done, but prose not written)
Running tests (not done)
System
Todo
Add information about address ranges and interleaved address ranges.
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 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 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 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 learning_gem5/part1/cache_config.rst, line 31.)
Todo
Explain what event-driven programming is
(The original entry is located in learning_gem5/part2/events.rst, line 14.)
Todo
make a section on the SConscript build system which discuss all of the functions.
(The original entry is located in learning_gem5/part2/helloobject.rst, line 178.)
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 learning_gem5/part2/simobject-old.rst, line 99.)
Todo
Talk about other kind of proxy parameters somewhere.
(The original entry is located in learning_gem5/part2/simplecache.rst, line 49.)
Todo
Talk about how state machine files are SimObjects and how they inherit from AbstractController
(The original entry is located in learning_gem5/part3/MSI/cache-intro.rst, line 75.)
Todo
Add more details about the random tester.
(The original entry is located in learning_gem5/part3/MSI/debugging.rst, line 44.)
Todo
Add a chapter on default protocols in gem5
(The original entry is located in learning_gem5/part3/index.rst, line 24.)
Todo
Make the MSI one chapter
(The original entry is located in learning_gem5/part3/index.rst, line 28.)
Todo
Talk about when to use Ruby and when to use classic caches
(The original entry is located in learning_gem5/part3/intro.rst, line 37.)
Todo
Put in picture of Ruby
(The original entry is located in learning_gem5/part3/intro.rst, line 41.)
Todo
Talk about message buffers
(The original entry is located in learning_gem5/part3/intro.rst, line 45.)
Todo
Talk about the network
(The original entry is located in learning_gem5/part3/intro.rst, line 49.)
Todo
Make sure there is a link to the gem5 source here
(The original entry is located in learning_gem5/part5/fs_config.rst, line 24.)
Todo
Update all SimObjects to point to the gem5 source code.
(The original entry is located in learning_gem5/part5/fs_config.rst, line 40.)
Todo
This bad addr thing could be made more clear.
(The original entry is located in learning_gem5/part5/fs_config.rst, line 89.)
Todo
Other differences between SE and FS mode...
(The original entry is located in learning_gem5/part5/intro.rst, line 33.)
Todo
Add information about address ranges and interleaved address ranges.
(The original entry is located in learning_gem5/thoughts.rst, line 64.)