> On Sept. 15, 2015, 4:19 p.m., Jason Lowe-Power wrote:
> > src/mem/ruby/common/NetDest.hh, line 46
> > <http://reviews.gem5.org/r/3113/diff/1/?file=49375#file49375line46>
> >
> >     Does it make sense to leave these empty constructors around? Or are 
> > there times when a NetDest will be created without a RubySystem pointer?
> >     
> >     I'm just commenting here, but there are other places too.
> 
> Brandon Potter wrote:
>     I noticed that after I posted the review. I'll look into it.
>     
>     I rebased this patch through a few hundred changesets of which at least a 
> third of them were related to Ruby. I suspect that some of the problems were 
> due to the volume of conflicts that I had to solve. (The merge conflicts were 
> innumerable; most of them were related to the changes to uint64, Addr, and 
> general code refactoring.)

It seems that the default constructor is needed for a couple of cases where the 
object is created and then assigned (initialized) later.  The compiler issues 
complaints from other constructors which appear to be unrelated.  Upon closer 
inspection, there are NetDest fields which are not assigned upon the parent 
objects creation.  These fields are initialized later before they're used.


> On Sept. 15, 2015, 4:19 p.m., Jason Lowe-Power wrote:
> > src/mem/ruby/common/NetDest.cc, line 108
> > <http://reviews.gem5.org/r/3113/diff/1/?file=49376#file49376line108>
> >
> >     Another high-level question that applies to more than just this line:
> >     
> >     Why not have MachineType_base_count(machineType) as a method in 
> > RubySystem, instead of passing the RubySystem pointer around? It wouldn't 
> > really change much, but seems like it would be more readable.

See my response to Joel's comment.


- Brandon


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


On Oct. 28, 2015, 11:37 p.m., Brandon Potter wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/3113/
> -----------------------------------------------------------
> 
> (Updated Oct. 28, 2015, 11:37 p.m.)
> 
> 
> 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/ruby/system/RubySystem.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/RubySystem.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/Sequencer.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/Sequencer.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/ast/EnqueueStatementAST.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/ast/NewExprAST.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/ast/ObjDeclAST.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/parser.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/symbols/StateMachine.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/slicc/symbols/Type.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/TBETable.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/TimerTable.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/WireBuffer.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/WireBuffer.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/CacheRecorder.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/DMASequencer.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/DMASequencer.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/RubyPort.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/system/RubyPort.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Two_Level-L2cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Two_Level-dir.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Two_Level-dma.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MI_example-cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MI_example-dir.sm 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MI_example-dma.sm 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_directory-L1cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_directory-L2cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_directory-dir.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_directory-dma.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_token-L1cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_token-L2cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_token-dir.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_CMP_token-dma.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_hammer-cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_hammer-dir.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MOESI_hammer-dma.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/Network_test-cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/RubySlicc_ComponentMapping.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/RubySlicc_Defines.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/RubySlicc_Exports.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/RubySlicc_Types.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/common/DataBlock.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/common/NetDest.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/common/NetDest.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/filters/BulkBloomFilter.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/BasicRouter.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/BasicRouter.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/BasicRouter.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/MessageBuffer.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/MessageBuffer.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/MessageBuffer.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/Network.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/Network.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/Network.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/Topology.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/Topology.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/simple/Throttle.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/network/simple/Throttle.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/profiler/Profiler.hh 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/profiler/Profiler.cc 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/AbstractController.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/AbstractController.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/Controller.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/Message.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/RubyRequest.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/BankedArray.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/BankedArray.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/CacheMemory.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/CacheMemory.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/DirectoryMemory.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/DirectoryMemory.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/DirectoryMemory.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/PerfectCacheMemory.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/PersistentTable.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/PersistentTable.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/Prefetcher.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/Prefetcher.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/RubyMemoryControl.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/RubyMemoryControl.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/RubyMemoryControl.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/ruby/structures/RubyPrefetcher.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   configs/example/multi-system-se.py PRE-CREATION 
>   configs/ruby/Ruby.py 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/cpu/testers/rubytest/RubyTester.hh 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/cpu/testers/rubytest/RubyTester.cc 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/cpu/testers/rubytest/RubyTester.py 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Three_Level-L0cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Three_Level-L1cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
>   src/mem/protocol/MESI_Two_Level-L1cache.sm 
> 3a4d1b5cd05ceed30dd0f5341fac9bbe41a193d6 
> 
> 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
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to