Memory systems are evolving in a multitude of ways in state-of-the-art computer systems and in computer architecture. The changes range from the low-level underlying technology used to implement memory, to the high-level ways in which memory systems are structured and organized. These changes have tremendous implications on the fundamental performance of computer systems because of how integral a role memory plays in the design of these systems. Traditionally, the memory hierarchy has been the bottleneck for how well computer systems perform and the resources they consume. Computer architects face significant challenges in meeting the growing memory demands and efficiently integrating these new technologies. Computer architecture must adapt...