Memory Consisteny and Event Ordering in Scalable Shared-Memory Multiprocessors