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
