ruby: allow restoring from checkpoint when using DRAMCtrl
Review Request #2702 - Created March 20, 2015 and submitted
| Information | |
|---|---|
| Lena Olson | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10743:d3ead01d8747
---------------------------
ruby: allow restoring from checkpoint when using DRAMCtrlRestoring from a checkpoint with ruby + the DRAMCtrl memory model
was not working, because ruby and DRAMCtrl disagreed on the
current tick during warmup. Since there is no reason to do
timing requests during warmup, use functional requests instead.
Can now restore checkpoints in X86+MOESI hammer+DRAMCtrl. It also still works with simple mem, which was working before.
Issue Summary
| Description | From | Last Updated | Status |
|---|---|---|---|
| This doesn't seem like a good idea. This means that every generated controller will now have a pointer to the ... | Joel Hestness | March 20, 2015, 2:15 p.m. | Open |
Ship It!
-
src/mem/ruby/slicc_interface/AbstractController.hh (Diff revision 1) -
This doesn't seem like a good idea. This means that every generated controller will now have a pointer to the RubySystem, which may encourage later misuse of the system within the controllers.
I think we should be moving in the other direction instead. Specifically, Ruby's warmup and cooldown processes are simulated-system-wide activities, NOT RubySystem instance-specific. In a single simulation, I could imagine there being multiple simulated systems with separate RubySystem instances, but warmup and cooldown activities may necessarily touch components of both RubySystems (e.g. a shared backing memory being flushed to). Thus, you can't have one instance warming up/cooling down, but the other instance isn't. It doesn't make sense to have separate variables for each instance.
I'd strongly prefer that m_warmup_enabled and m_cooldown_enabled be made into static (class) variables of the RubySystem (this has bugged me for a long time). This would eliminate the need for RubySystem pointers in the abstract system, because these variables could be accessed statically just like the block size. It would also improve the encapsulation of the RubySystem object, which currently has these variables publicly-visible (yuck).
This patch enables functionality that has never existed before, so I'd prefer that we fix the RubySystem variable visibility before pushing this patch.
-
src/mem/ruby/slicc_interface/AbstractController.cc (Diff revision 1) -
White space around parens should be consistent with rest of file.
I like the idea of getting it sorted (hopefully we can retire the RubyMemoryControl). I am not sure about the solution though. Surely all the stats for the DRAMCtrl object(s) would be all confused if time advances, but no accesses are counted? Do we not also need to reset all stats once the warmup is sorted?
Description: |
|
||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+19 -1) |
