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

Review request for Default.


Repository: gem5


Description
-------

Changeset 11093:3c32e2cb1c87
---------------------------
ruby: allows multiple instances of ruby to be invoked

This patch removes the restriction that there can only be a single ruby
system object in a given simulation. With the configuration supplied, it is
possible to run an instance of ruby with any of the supplied topologies.

The problem centers around the use of globals and static class members in the
ruby source. Conceptually, this prohibits multi-instance simulations
since the ruby systems end up sharing values which should be distinct. (The
earliest manifestation of this problem occurs when important runtime
components use shared variables for MachineType sanity checks which will
trigger failures.)

The idea behind the patch is to move as many as the statics/globals as
necessary into the ruby system object. The ruby system object acts as the
single point of reference for the child objects which needed the
globals/statics. With multi-instance runs, each ruby system object will
contain distinct values for the previous globals/statics. Unfortunately, this
requires passing the ruby system pointer throughout the object hierarchy and
may incur some minor performance overhead due to extra indirect references
through the ruby system object.


Diffs
-----

  src/mem/protocol/MESI_Two_Level-L1cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  configs/common/Options.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  configs/example/multi-system-se.py PRE-CREATION 
  configs/ruby/Ruby.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/cpu/testers/rubytest/Check.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/cpu/testers/rubytest/RubyTester.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/cpu/testers/rubytest/RubyTester.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/cpu/testers/rubytest/RubyTester.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MESI_Three_Level-L0cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MESI_Three_Level-L1cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/parser.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/symbols/StateMachine.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/symbols/Type.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/python/swig/pyobject.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/RubySystem.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/Sequencer.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/WireBuffer.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/CacheRecorder.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/CacheRecorder.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/DMASequencer.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/RubyPort.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/RubyPort.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/RubySystem.hh PRE-CREATION 
  src/mem/ruby/structures/TBETable.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/TimerTable.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/TimerTable.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/WireBuffer.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MESI_Two_Level-L2cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MESI_Two_Level-dir.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MESI_Two_Level-dma.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MI_example-cache.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MI_example-dir.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MI_example-dma.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_directory-dir.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_directory-dma.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_token-dir.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_CMP_token-dma.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_hammer-cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_hammer-dir.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/MOESI_hammer-dma.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/Network_test-cache.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/Network_test-dir.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/RubySlicc_ComponentMapping.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/RubySlicc_Defines.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/RubySlicc_Exports.sm 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/RubySlicc_Types.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/protocol/RubySlicc_Util.sm 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/SConscript 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/Address.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/Address.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/DataBlock.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/DataBlock.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/NetDest.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/NetDest.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/SubBlock.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/common/SubBlock.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/AbstractBloomFilter.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/BlockBloomFilter.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/BlockBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/BulkBloomFilter.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/BulkBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/H3BloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/LSB_CountingBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/MultiBitSelBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/MultiGrainBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/filters/NonCountingBloomFilter.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicLink.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicLink.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicLink.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicRouter.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicRouter.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/BasicRouter.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/MessageBuffer.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/MessageBuffer.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/MessageBuffer.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/Network.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/Network.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/Network.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/Topology.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/Topology.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/fault_model/FaultModel.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/fault_model/FaultModel.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/fault_model/FaultModel.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/profiler/AddressProfiler.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/profiler/Profiler.hh 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/AbstractController.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/AbstractController.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/Controller.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/Message.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/RubyRequest.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/slicc_interface/RubySlicc_Util.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/CacheMemory.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/CacheMemory.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/DirectoryMemory.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/DirectoryMemory.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/DirectoryMemory.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/PerfectCacheMemory.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/PersistentTable.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/PersistentTable.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/Prefetcher.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/Prefetcher.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/RubyCache.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/RubyMemoryControl.hh 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/RubyMemoryControl.cc 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/RubyMemoryControl.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/structures/RubyPrefetcher.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/Sequencer.cc 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/ruby/system/Sequencer.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/ast/EnqueueStatementAST.py 
62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/ast/NewExprAST.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 
  src/mem/slicc/ast/ObjDeclAST.py 62e1504b9c6413aa03a2f7d7eee88c8ea45cfe00 

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


Testing
-------

gem5/util/regress (to check builds) and custom tests (which use the new 
configuration)


Thanks,

Brandon Potter

_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to