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

Reply via email to