Towards Energy-Efficient And Reliable Computing: From Highly-Scaled Cmos Devices To Resistive Memories