Memory: locality
Memory hierarchy
Registers: small and fast
RAM: large and slow
Ideal: large and fast
Solution: range of memories from fast to slow
Fig 7.1
If memory accesses are random, can't do much, but programs typically have:
spatial locality: successive memory accesses tend to be close together in location
 - sequential execution
 - branches tend to be relatively small
 - arrays
temporal locality: location, once accessed, will tend to be accessed again
within a small amount of time (loop: instructions and data)