Enabling Emerging, Heterogeneous Memory Systems