On Thu, 3 Feb 2011, Nilay Vaish wrote:
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.
I think I got the answer to my previous question of making all messages
wait. Currently, I am not sure how to pop the message from the message
buffers of the incoming links. The problem is in getting the <link index,
vnet> for the message buffer which holds the message that needs to be
popped. For this, I think, we would need to store the incoming link index
and the vnet info with the message buffers. The message buffers would copy
this information in to the network messages.
--
Nilay
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev