Architectural Mechanisms for Explicit Communication in Shared Memory Multiprocessors