Review of memristor based neuromorphic computation: opportunities, challenges and applications | Synapse