Hi Somayeh,

Thanks for the questions.  We definitely want to make sure we're all on the 
same page before we start coding.  My answers are below:

> why do you think we need to ensure that there is no event scheduled for
> ticks T or more? We only need to make sure all Ruby cache warmup events
> are done before T regardless of what have been scheduled for after that.

Sorry for the confusion.  You are right that other events may be scheduled for 
ticks T or more.  In particular, during the unserialization phase, I suspect 
several events will be placed on the event queue for tick T or more.  There may 
even be other events put on the event queue for tick T or more during other 
SimObjects' startup routines.  The key is that we should make sure during the 
cache warmup phase (within Topology::startup) that all events scheduled are for 
ticks T-1 or less.

> What if T is not large enough to finish cache warmup? do we need to stop
> other scheduled events?!

We need to call fatal and return a description that T is not large enough 
(include the value of T in the error message).

> In addition, based on Steve's suggestion, We should move cache warmup to
> startup stage (e.g., from Topology::unserialize to Topology::startup), which
> we know the unserialization is done and curTick value is set. I think startup
> phase is the right place to initialize these events. What do you think?

Yes, I think this is the proper approach.  We want to store the trace file name 
during the Topology::unserialize function, but we won't read from it or execute 
it until the Topology::startup function.

Brad


_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to