Low-Power Volatile And Non-Volatile Memory Design