Access ordering and coherence in shared memory multiprocessors