> 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
