RE: JavaMemoryModel: Write atomicity for volatiles

From: Sarita Adve (sadve@cs.uiuc.edu)
Date: Thu Jul 19 2001 - 12:53:37 EDT


> -----Original Message-----
> From: Bill Pugh [mailto:pugh@cs.umd.edu]
> Sent: Thursday, July 19, 2001 10:06 AM
> To: Sarita Adve; javamemorymodel@cs.umd.edu
> Subject: RE: JavaMemoryModel: Write atomicity for volatiles
>
>
> At 9:10 AM -0500 7/19/01, Sarita Adve wrote:
> >So if an SMT allows a thread to read data of another thread early from a
> >write buffer on the same processor, it is really doing option (3).
> >
> >As an aside, an SMT does not necessarily mean that *all*
> structures will be
> >shared. It is possible to conceive of an SMT with per-thread
> write buffers
> >(either in a physical or virtual sense). That is, it is possible to get
> >benefits of SMT on a system that wants to retain option (2) but not (3).
>
> Yes, but I find it hard to imagine that chip architectures would
> expend transistors to duplicate write buffers.
>
> Does anyone know if any of the planned SMT architectures (e.g., the
> Alpha EV8, never to see the light of day) duplicated write buffers?

They don't have to be physically separate - it can be the same physical
buffer as long as a thread identifier is associated with each entry in the
load/store queue. There are other reasons to keep thread ids around; e.g.,
the reorder buffers need to identify the thread since instruction commitment
happens on a per-thread basis. Anyway, I'll try to find out what EV8
has/had.

>
> So I am worried over mandating that Java volatiles have write
> atomicity. I think it is quite possible that within 5-10 years there
> will be architectures that don't support it.

I agree. Hence from my previous message:

>> But of course, I am not in favor of putting this in the spec or
>> writing the
>> spec so this can be derived as a general property of all
>> non-normal writes.

> Let's put aside the first question for the moment. What breaks if
> volatile writes are not atomic?
>

We should also ask if making monitor writes non-atomic breaks anything.
There's a proof that locks implemented using simple spin loops can be done
non-atomically. Unlocks can also be done non-atomically.

Sarita

-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel



This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:33 EDT