Jason Power
unread,Jan 27, 2015, 12:30:52 PM1/27/15Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Victor Garcia, gem5-g...@googlegroups.com, jthes...@gmail.com, k23...@gmail.com
Hi Victor,
It's definitely possible to add an L3 cache without having to add a new Ruby machine. In fact, that is what we did in the HSC paper (
http://dx.doi.org/10.1145/2540708.2540747).
You described the method correctly, you would add a CacheMemory object and check the cache memory before sending the request to the memory controller. To configure this CacheMemory object, you would use the same methods as you do to configure the CacheMemory objects at the other levels of caches. E.g., as in gem5-gpu/configs/gpu_protocols/VI_hammer.py
It may be illustrative to look at the files generated by SLICC. They can be found in gem5/build/<name of your build>/mem/protocol/. The Directory_Controller.py would specifically be what you want to look at. If you look at L1Cache_Controller.py you'll find two RubyCache parameters to the object. Similarly, if you add a CacheMemory object to the directory, a new parameter will be added in Directory_Controller.py, which you will be able to set in the config file (gem5-gpu/configs/gpu_protocols/VI_hammer.py).
The second method you describe, adding a new Ruby machine (.sm file) is probably a more "correct" way to do it. But it is very time consuming and error prone. This method would allow you to model a co-located directory and L3 cache (e.g. the L3 cache tags will be the directory). This is a plausible design point, but not the only design possible. The memory side L3 cache (as is modeled in the first method) is also a plausible design.
Hopefully this makes things a little more clear. The steps from SLICC, to gem5 SimObjects, to config files, to the final simulated system are quite confusing. Let me know if you have any other questions. The documentation for gem5 (found at
gem5.org) may also help you understand how things work.
Cheers,
Jason