On Sun, Oct 26, 2014 at 2:29 PM, Nilay Vaish via gem5-dev <[email protected] > wrote:
> On Sun, 26 Oct 2014, Andreas Hansson via gem5-dev wrote: > > Hi guys, >> >> I see how functional accesses make sense when the system is starting or >> drained, or potentially for reads while it is running. To inject functional >> writes at runtime seems like asking for trouble though. As >> > > System calls can cause functional writes. Even if there are no functional > writes, you can still run into problems with functional reads. > Actually I would argue that writes are easy---functional writes identify every copy of data associated with a particular location and update all of the copies atomically, so from that point on any read will return the new value, until that address is written again. This should be more than adequate for nearly all system calls that write to memory (such as read()), since you really shouldn't have data races between user threads and buffers you've passed to the OS. Functional reads can be trickier, as Nilay has pointed out, though I'm still curious just how common those tricky cases are. It may be that, if there are system calls where we do expect data races to be possible, then we should not be using functional accesses for those. I haven't really thought this through yet though. Steve _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
