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
