1. In sequential architectures programs tend to access data that has been accessed recently (temporal locality) or that is at an address near recently referenced data (spatial locality). This is the basis for the speed-up obtained with a cache
2. In a multi-processor architecture with distributed memory it takes longer to access the memory attached to a different processor. This overhead increases with the number of communicating processors. Thus to efficiently employ many processors on a problem we must increase the proportion of references which are to local memory.