-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/1829/
-----------------------------------------------------------

(Updated April 20, 2013, 11:16 a.m.)


Review request for Default.


Description (updated)
-------

Changeset 9643:e70afe91a65e
---------------------------
ruby: patch checkpoint restore with garnet
Due to recent changes to clocking system in Ruby and the way Ruby restores
state from a checkpoint, garnet was failing to run from a checkpointed
state. The problem is that Ruby resets the time to zero while warming up
the caches. If any component records a local copy of the time
(read calls curCycle()) before the simulation has started, then that
component will not operate until that time is reached. In the context of
this particular patch, the Garnet Network class calls curCycle() at multiple
places. Any non-operational component can block in requests in the memory
system, which the system interprets as a deadlock. This patch makes changes
so that Garnet can successfully run from checkpointed state.

It adds a globally visible time at which the actual execution started.
This time is initialized in RubySystem::startup() function. This variable
is only meant for components with in Ruby. This replaces the private
variable that was maintained within Garnet since it is not possible
to figure out the best when the value of this variable can be set.

The patch also does away with all cases where curCycle() is called with in
some Ruby component before the system has actually started executing. This
is required due to the quirky manner in which ruby restores from a checkpoint.


Diffs (updated)
-----

  src/mem/ruby/common/Global.hh 112382ddf96d 
  src/mem/ruby/common/Global.cc 112382ddf96d 
  src/mem/ruby/network/garnet/BaseGarnetNetwork.hh 112382ddf96d 
  src/mem/ruby/network/garnet/BaseGarnetNetwork.cc 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh 112382ddf96d 
  src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc 112382ddf96d 
  src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 112382ddf96d 
  src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 
112382ddf96d 
  src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc 112382ddf96d 
  src/mem/ruby/network/orion/NetworkPower.cc 112382ddf96d 
  src/mem/ruby/profiler/Profiler.cc 112382ddf96d 
  src/mem/ruby/system/System.hh 112382ddf96d 
  src/mem/ruby/system/System.cc 112382ddf96d 

Diff: http://reviews.gem5.org/r/1829/diff/


Testing
-------


Thanks,

Nilay Vaish

_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to