> On Jan. 6, 2017, 7:29 p.m., Jieming Yin wrote:
> > src/mem/ruby/network/garnet2.0/NetworkInterface.cc, line 289
> > <http://reviews.gem5.org/r/3753/diff/3/?file=64168#file64168line289>
> >
> >     Shall the NI reschedule itself if all stall flits in the m_stall_queue 
> > fail ejecting to outNode_ptr? It seems possible that none of the 
> > outNode_ptr is able to accecpt flits, while the router is not sending any 
> > flit to the NI.

When something is placed in m_stall_queue, a callback is registered with the 
corresponding outNode_ptr's MessageBuffer to wakeup the NI. This is preferable 
to checking if checkStallQueue returns false, since that could result in waking 
up unnecssarily every cycle until something is ejected (if there is nothing 
else needs to wakeup). There does seem to be one corner case left, however. The 
callback is unregistered once any message from a vnet is ejected. There could 
be a situation where all VCs are stalled on a vnet and the callback is 
unregistered, resulting in potential deadlock if a wakeup never again occurs to 
eject the remaining stalled VCs. I've added a per-vnet counter which will only 
unregister the callback if all VCs have been ejected.


- Matthew


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


On Dec. 12, 2016, 11:09 p.m., Matthew Poremba wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/3753/
> -----------------------------------------------------------
> 
> (Updated Dec. 12, 2016, 11:09 p.m.)
> 
> 
> Review request for Default and Tushar Krishna.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 11761:3b97fe03ed24
> ---------------------------
> ruby: Check MessageBuffer space in garnet NetworkInterface
> 
> Garnet's NetworkInterface does not consider the size of MessageBuffers when
> ejecting a Message from the network. Add a size check for the MessageBuffer
> and only enqueue if space is available. If space is not available, the
> message if placed in a queue and the credit is held. A callback from the
> MessageBuffer is implemented to wake the NetworkInterface. If there are
> messages in the stalled queue, they are processed first, in a FIFO manner
> and if succesfully ejected, the credit is finally sent back upstream. The
> maximum size of the stall queue is equal to the number of valid VNETs
> with MessageBuffers attached.
> 
> 
> Diffs
> -----
> 
>   src/mem/ruby/network/garnet2.0/flitBuffer.hh 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/MessageBuffer.hh 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/MessageBuffer.cc 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/garnet2.0/NetworkInterface.hh 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/garnet2.0/NetworkInterface.cc 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/garnet2.0/flit.hh 
> 78ef8daecd81de0c392034809b3bc155396bf983 
>   src/mem/ruby/network/garnet2.0/flit.cc 
> 78ef8daecd81de0c392034809b3bc155396bf983 
> 
> Diff: http://reviews.gem5.org/r/3753/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Matthew Poremba
> 
>

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

Reply via email to