> On June 22, 2015, 5:06 p.m., Brad Beckmann wrote:
> > src/mem/ruby/network/MessageBuffer.py, line 39
> > <http://reviews.gem5.org/r/2845/diff/4/?file=46645#file46645line39>
> >
> >     Why is a default recycle latency not set?  
> >     
> >     Why is this "Parent.recycle_latency"?  Does both swtiches and 
> > controllers define a recycle latency?  It doesn't appear so with this 
> > patch.  I'm a bit confused how this actually works.  I do not believe 
> > switches will ever use recycles, so it doesn't make much sense to define 
> > this default in the switch parent.  Also many protocols avoid using 
> > recycles.  Those protocols should not need to specify a recycle latency 
> > either.

Here again, I just copied the convention that was used when these were in 
SLICC. Specifically, AbstractControllers require a recycle_latency to be 
defined, and it was used to set their MessageBuffer recycle_latency (you can 
see this in the SLICC code I removed in this patch). MessageBuffers in the 
network never set a default (was probably a bad idea).

Here are the options for setting recycle_latency:
 1) Define a default of the parent's recycle_latency parameter
 2) Define a default of 0

If we go with (2), there wouldn't be a way to set a single recycle_latency for 
all of a controller's MessageBuffers. We'd need to explicitly set them all when 
non-zero. This sounds like it would result in tons of latent bugs.

I think (1) is best: For MessageBuffers within controllers, recycle_latency 
will at least be set with the controller parent's value, and the user can 
explictly override this value by setting any particular buffer's 
recycle_latency in the config files. Network MessageBuffers should explicitly 
set recycle_latency to indicate that there is no latency.

A possibility to address your desire would be to add, in SimpleNetwork and 
SimpleRouter, a recycle_latency parameter that defaults to 0. That way, the 
MessageBuffers would inherit these values and could still be overridden by a 
user. Would that be agreeable?


- Joel


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


On June 20, 2015, 4:14 p.m., Joel Hestness wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/2845/
> -----------------------------------------------------------
> 
> (Updated June 20, 2015, 4:14 p.m.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 10859:d0dddb8fc9de
> ---------------------------
> ruby: Expose MessageBuffers as SimObjects
> 
> Expose MessageBuffers from SLICC controllers as SimObjects that can be
> manipulated in Python. This patch has numerous benefits:
> 1) First and foremost, it exposes MessageBuffers as SimObjects that can be
> manipulated in Python code. This allows parameters to be set and checked in
> Python code to avoid obfuscating parameters within protocol files. Further, 
> now
> as SimObjects, MessageBuffer parameters are printed to config output files as 
> a
> way to track parameters across simulations (e.g. buffer sizes)
> 
> 2) Cleans up special-case code for responseFromMemory buffers, and aligns 
> their
> instantiation and use with mandatoryQueue buffers. These two special buffers
> are the only MessageBuffers that are exposed to components outside of SLICC
> controllers, and they're both slave ends of these buffers. They should be
> exposed outside of SLICC in the same way, and this patch does it.
> 
> 3) Distinguishes buffer-specific parameters from buffer-to-network parameters.
> Specifically, buffer size, randomization, ordering, recycle latency, and ports
> are all specific to a MessageBuffer, while the virtual network ID and type are
> intrinsics of how the buffer is connected to network ports. The former are
> specified in the Python object, while the latter are specified in the
> controller *.sm files. Unlike buffer-specific parameters, which may need to
> change depending on the simulated system structure, buffer-to-network
> parameters can be specified statically for most or all different simulated
> systems.
> 
> 
> Diffs
> -----
> 
>   configs/ruby/Ruby.py d02b45a554b5 
>   src/mem/protocol/RubySlicc_Defines.sm d02b45a554b5 
>   src/mem/ruby/SConscript d02b45a554b5 
>   src/mem/ruby/network/MessageBuffer.hh d02b45a554b5 
>   src/mem/ruby/network/MessageBuffer.cc d02b45a554b5 
>   src/mem/ruby/network/MessageBuffer.py PRE-CREATION 
>   src/mem/ruby/network/SConscript d02b45a554b5 
>   src/mem/ruby/network/simple/SimpleNetwork.hh d02b45a554b5 
>   src/mem/ruby/network/simple/SimpleNetwork.cc d02b45a554b5 
>   src/mem/ruby/network/simple/SimpleNetwork.py d02b45a554b5 
>   src/mem/ruby/network/simple/Switch.hh d02b45a554b5 
>   src/mem/ruby/network/simple/Switch.cc d02b45a554b5 
>   src/mem/ruby/slicc_interface/AbstractController.hh d02b45a554b5 
>   src/mem/ruby/slicc_interface/AbstractController.cc d02b45a554b5 
>   src/mem/slicc/ast/ObjDeclAST.py d02b45a554b5 
>   src/mem/slicc/symbols/StateMachine.py d02b45a554b5 
>   src/python/swig/pyobject.cc d02b45a554b5 
> 
> Diff: http://reviews.gem5.org/r/2845/diff/
> 
> 
> Testing
> -------
> 
> Regression tests with all Ruby protocols. Protocol file changes are in
> separate patch (http://reviews.gem5.org/r/2844/) to keep this one slim.
> 
> 
> Thanks,
> 
> Joel Hestness
> 
>

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

Reply via email to