In distributed shared memory machines, access to remote memory is
likely to be slow compared to the ever-increasing speeds of
processors. Thus, any scalable architecture must rely on techniques to
reduce/hide/tolerate remote-memory-access latencies. Generally
speaking, four methods could be adopted:
1. Use of prefetching techniques
2. Use of coherent cacheing techniques
3. Relaxing the memory consistency requirements
4. Using multiple-contexts to hide latency