Have you looked at issues with statistics or other Ruby state that might
make this process awkward?  E.g., will the flush operations affect the
stats, or are there timestamps in some of the controllers that will get
confused if time does not increase monotonically?

Steve

On Fri, Dec 9, 2011 at 9:07 AM, Beckmann, Brad <[email protected]>wrote:

> Ah, I understand the issue now.  Yes, your solution manipulating the event
> queue seems like it will work.
>
> It would be nice if we could have a regression test that can test this
> functionality once you check it in.  I could imagine a further checkin
> accidently breaking this process.
>
> Brad
>
>
> > -----Original Message-----
> > From: Nilay Vaish [mailto:[email protected]]
> > Sent: Friday, December 09, 2011 8:02 AM
> > To: Beckmann, Brad
> > Cc: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert; Default
> > Subject: RE: Review Request: Ruby: Resurrect Cache Warmup Capability
> >
> > 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