It should be fairly obvious that your programs work on chunks of memory for a period of time, then move on to other chunks. Few programs deal only with simple variables, more often we work on arrays of data, and most program code blocks are fairly self contained - until we jump from place to place, or call functions.

Designers of processors noticed this fact and started looking into ways to exploit this behavior to improve the speed of processors.

Programmers can improve the performance of their programs if they work with the processor and write programs that can benefit from processor capabilities we will discuss in this section!