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