Re: Question about PB rule of LKMM

From: Andrea Parri
Date: Thu Mar 07 2024 - 13:19:01 EST


> So I guess you're talking about the second, intuitive meaning. That's
> very simple to explain. Since every instruction executes at _some_
> time, and since we can safely assume that no two instructions execute at
> exactly the _same_ time, if F doesn't execute before E then E must
> execute before F. Or using your terms, (not F ->xb E) implies (E ->xb
> F). Would that answer the original question satisfactorily?

I'd disagree with these premises: certain instructions can and do execute
at the same time. FWIW, in the formal model, it is not that difficult to
provide examples of "(not F ->xb E) and (not E ->xb F)".


> The new text says the same thing as the original, just in a more
> condensed way. It skips the detailed explanation of why E must execute
> before W propagates to E's CPU, merely saying that it is because "W is
> coherence-later than E". I'm not sure this is an improvement; the
> reader might want to know exactly how this reasoning goes.

The current text relies on an argument by contradiction. A contradiction
is reached by "forcing" (F ->xb E), hence all it can be concluded is that
(not F ->xb E). Again, AFAICS, this doesn't match the claim in the text.

Andrea