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.
--
Nilay
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev