I noticed that MessageBuffer calls UpdateDelayedTicks in both enqueue and
dequeue methods. Since dequeue does not setLastEnqueueTime of the message
to the time it was dequeued at, when enqueue calls UpdateDelayed Ticks,
doesn't it add the dequeue delay to the delayed ticks a second time?

Below is a table of the timeline. X and Y are the starting values for
LastEnqueueTime and DelayedTicks when the first message buffer receives the
message. When the message is dequeued from MB1, DelayedTicks gets C-B added
to it. When it is then enqueued in MB2, it gets D-B added, which double
counts the C-B interval.

curTime() FunctionCall m_LastEnqueueTime m_DelayedTicks


X Y
A enqueue() B = A + Delta Y + (A-X)
B wakeup() " "
C dequeue() " Y + (A-X) + (C-B)
D enqueue() E = D + Delta
Y + (A-X) + (C-B) + (D-B) = Y + (A-X) + (C-B) + (D-C) + (C-B)


Ryan Gambord
<[email protected]>
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to