All accesses to shared data are ordered by synchronization operations. In general most programs are synchronized. If no dependence, then memory consistency model determines orders preserved. Most multilevel caches satisfy multilevel inclusion property Problems arise when block sizes are different. Multiprocessors are free .
Scalability is almost free.
Linear speedups are needed to make multiprocessors cost-effective Pitfalls Measuring performance of multiprocessors by linear speedup versus execution time. Not developing the software to take advantage of, or optimize for, a multiprocessor architecture.