On Thu, 3 Feb 2011, Nilay Vaish wrote:

On Thu, 3 Feb 2011, Nilay Vaish wrote:

Hi Brad,

On Thu, 3 Feb 2011, Beckmann, Brad wrote:

Hi Nilay,

Yes, you could make such an optimization, but you want to be careful not to introduce starvation. You want to make sure that newly arriving messages are not always prioritized over previously stalled messages.

Could you avoid looping through all message buffers by creating a list of ready messages and simply scanning that instead? You still want to store the messages in the message buffers because they model the virtual channel storage. However, the list can be what the wakeup function actually scans.

I think we should maintain a MessageBuffer with in the PerfectSwitch which would be scanned on wakeup. That way priorities of messages can be taken care of in the same fashion as currently done in message buffers. We would also need to store in the message the identity of message buffer (link, virtual network) it actually belongs to. This would required for popping the message when it gets routed.


I think MessageBuffer would not work because it is a heap, so if the message at the top of the heap cannot be routed, then no other message will be routed, even though those messages might be traveling on different virtual network. It seems a totally-ordered structure like a map should be used, so that every message can be looked at in the order in which they should be.


Brad, suppose a particular <outgoing link, vnet> does not have enough resources for routing the message under consideration. Why is that all the messages following this message (that arrived at the switch through the same input link and virtual network) are made to wait as well? It might be that they would be using a different outgoing link which has resources available.

--
Nilay
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to