Memory is a central component in every computer system. The technological evolution has led to greater capacities and higher speeds, but essential properties of the interface between hardware and software have been unchanged for decades: Main memories were usually passive, largely homogeneous, and volatile. These properties are now so firmly anchored in the expectations of software developers that they manifest in their products.