Micro-Architecture And Systems Support For Emerging Non-Volatile Memories