It is easy to ignore where data is stored in serial applications. This was not always so. A lot of work has gone into abstracting away the details of various layers of the storage hierarchy from the programmer. The following graphic illustrates a typical storage hierarchy:
The hierarchy shows differences on three axes: persistence, size, and cost. The clear levels are volatile; their contents decay when power is no longer applied. The shaded levels are persistent; they retain data even when not powered.
As one travels down the hierarchy, storage capacity grows. There is variation within each level, but the basic trend is clear. This is also true over time; for example, the amount of RAM available has grown to the point where it is larger than hard drives from an earlier period, but hard drives have also grown in size to maintain the differential.
Although not a strictly...