I thought more about this. It seems we can do it in the same manner as we do things in unserialize(). In the serialize() function, we can change the event queue head, issue the cache flush requests, and then call simulate(). Once the caches are flushed, the event queue head is restored and the memory image is checkpointed.

--
Nilay

On Thu, 8 Dec 2011, Nilay Vaish wrote:

I was initially thinking that a flush request for line is issued along with it being added to the trace. But then, I realized (I might be wrong here), that once the system has got drained, it may no longer process any events. This means that the flush requests would actually not be processed at all.

--
Nilay

On Thu, 8 Dec 2011, Beckmann, Brad wrote:

I was imagining that we flush the caches during the serialization/checkpointing process, not before it. I'm thinking the cache trace creation is the first step of the Ruby serialize function, then we flush the caches, and final we take the memory checkpoint. Is there a reason we can do that in that order?

Brad


-----Original Message-----
From: Nilay Vaish [mailto:[email protected]]
Sent: Thursday, December 08, 2011 3:58 PM
To: Beckmann, Brad
Cc: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert; Default
Subject: RE: Review Request: Ruby: Resurrect Cache Warmup Capability

Brad, you are right. Now that I think of it, it really does not make much sense to take periodic checkpoints when the simulation is in timing mode (and not
in atomic mode) as checkpointing interferes with the timing.

I was thinking about checkpointing the memory image. I have not been able
to convince myself about some reasonably correct way of doing this. We
need to flush the caches, before we can take a checkpoint. It appears this
can only happen while the system is draining. My understanding of cache
flushing is that it would write back the data to the memory and invalidate the cache line. Since the cache does not have the line any more, this means that we cannot have that line in the cache trace. It seems only the lines that have
access permission as Read_Only can be part of the cache trace. Is my
understanding correct?

Thanks
Nilay


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

Reply via email to