My understanding of the MessageBuffer is that it is a priority queue
with "arrival time" as the key that determines the priority. The arrival
time is the time at which the message can leave the buffer and is =
current time + delta time (latency).
So, in your case say the second message enters 2 cycles after the first
message, it still can leave early than the first message. Take a look at
the ISCA tutorial of Gems in which they describe the priority queue.
If you want to implement your condition, you can modify the
MessageBuffer code in ruby/buffers/MessageBuffer.C
Niket
Marco Solinas wrote:
Hi list!
I have a doubt regarding MessageBuffer ordering.
If a MessageBuffer belongs to an ordered virtual network, I'm sure that
two outgoing messages are served in the same order they are insered in
the buffer (for this reason, Ruby checks if a message is enqueued with a
correct latency).
My doubt is about unordered virtual networks. If I enqueue a first
message that, for some reason, has a latency of (say) 10 cycles, and
then I enqueue a second message that belongs to the SAME block of the
first one, with a latency of 3 cycles, does the second message leave the
buffer and enter the network BEFORE the first one? The problem is that I
need that even if I specify two different latencies for two messages for
the same block, it is important for me that the second message leaves
the buffer after the first one, doesn't matter whether or not the second
latency is smaller than the first one. I want to be sure of this.
Hope you can help me!
Thanks a lot for your support.
Regards,
Marco
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
|