gem5/src/mem/ruby/system
Nilay Vaish aa86800e7a 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
correct time 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.
2013-04-23 00:03:02 -05:00
..
AbstractReplacementPolicy.hh ruby: replace Time with Tick in replacement policy classes 2013-02-10 21:43:08 -06:00
BankedArray.cc ruby banked array: do away with event scheduling 2012-10-15 17:27:15 -05:00
BankedArray.hh ruby banked array: do away with event scheduling 2012-10-15 17:27:15 -05:00
Cache.py ruby: replaces Time with Cycles in many places 2013-02-10 21:26:24 -06:00
CacheMemory.cc Ruby: Remove RubyEventQueue 2012-08-27 01:00:55 -05:00
CacheMemory.hh scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
DirectoryMemory.cc Ruby: remove config information from ruby.stats 2012-07-12 08:39:19 -05:00
DirectoryMemory.hh Ruby: remove config information from ruby.stats 2012-07-12 08:39:19 -05:00
DirectoryMemory.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00
DMASequencer.cc ruby: enable multiple clock domains 2013-02-10 21:43:17 -06:00
DMASequencer.hh scons: Fix warnings issued by clang 3.2svn (XCode 4.6) 2013-02-19 05:56:08 -05:00
LRUPolicy.hh ruby: replace Time with Tick in replacement policy classes 2013-02-10 21:43:08 -06:00
MachineID.hh Ruby: Fix compilation errors on gcc 4.7 and clang 3.2 2013-02-14 12:24:51 -05:00
MemoryControl.cc ruby: improved support for functional accesses 2012-10-15 17:51:57 -05:00
MemoryControl.hh ruby: replace Time with Cycles in Memory Controller 2013-02-10 21:26:25 -06:00
MemoryControl.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00
MemoryNode.cc ruby: style pass 2010-03-22 18:43:53 -07:00
MemoryNode.hh ruby: replace Time with Cycles in Memory Controller 2013-02-10 21:26:25 -06:00
MemoryVector.hh Ruby: Use uint32_t instead of uint32 everywhere 2012-09-11 09:24:45 -05:00
PerfectCacheMemory.hh Ruby: remove config information from ruby.stats 2012-07-12 08:39:19 -05:00
PersistentTable.cc ruby: get rid of the Map class 2010-06-10 23:17:07 -07:00
PersistentTable.hh Ruby: remove config information from ruby.stats 2012-07-12 08:39:19 -05:00
PseudoLRUPolicy.hh ruby: replace Time with Tick in replacement policy classes 2013-02-10 21:43:08 -06:00
RubyMemoryControl.cc sim: separate nextCycle() and clockEdge() in clockedObjects 2013-04-22 13:20:31 -04:00
RubyMemoryControl.hh scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
RubyMemoryControl.py ruby: replaces Time with Cycles in many places 2013-02-10 21:26:24 -06:00
RubyPort.cc mem: Replace check with panic where inhibited should not happen 2013-04-22 13:20:33 -04:00
RubyPort.hh scons: Fix warnings issued by clang 3.2svn (XCode 4.6) 2013-02-19 05:56:08 -05:00
RubyPortProxy.cc MEM: Add port proxies instead of non-structural ports 2012-01-17 12:55:08 -06:00
RubyPortProxy.hh MEM: Add port proxies instead of non-structural ports 2012-01-17 12:55:08 -06:00
RubySystem.py ruby: convert block size, memory size to unsigned 2013-02-10 21:43:07 -06:00
SConscript ruby: banked cache array resource model 2012-07-10 22:51:54 -07:00
Sequencer.cc Ruby: Delete packet requests during warmup 2013-04-09 16:25:29 -05:00
Sequencer.hh ruby: keep histogram of outstanding requests in seq 2013-03-22 15:53:25 -05:00
Sequencer.py ruby: remove the functional copy of memory in se mode 2013-03-06 21:53:57 -06:00
SparseMemory.cc Ruby Sparse Memory: Add function for collating blocks 2012-01-11 13:29:54 -06:00
SparseMemory.hh Ruby: remove config information from ruby.stats 2012-07-12 08:39:19 -05:00
System.cc ruby: patch checkpoint restore with garnet 2013-04-23 00:03:02 -05:00
System.hh ruby: patch checkpoint restore with garnet 2013-04-23 00:03:02 -05:00
TBETable.hh ruby: replace Time with Cycles (final patch in the series) 2013-02-10 21:43:10 -06:00
TimerTable.cc ruby: consumer: avoid using receiver side clock 2013-03-22 15:53:26 -05:00
TimerTable.hh ruby: replace Time with Cycles (final patch in the series) 2013-02-10 21:43:10 -06:00
WireBuffer.cc ruby: consumer: avoid using receiver side clock 2013-03-22 15:53:26 -05:00
WireBuffer.hh scons: Add warning for missing declarations 2013-02-19 05:56:07 -05:00
WireBuffer.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00