----------------------------------------------------------- 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