Non-volatile memory's future is in software