1. A semiconductor device, comprising: a non-volatile memory cell array, memory cells of the non-volatile memory cell array being resistance based, and each memory cell having a resistance that changes over time after data is written into the memory cell; a write address buffer configured to store write addresses associated with data being written into the non-volatile memory cell array; and a read unit configured to perform a read operation to read data from the non-volatile memory cell array, the read unit configured to control a read current applied to the non-volatile memory cell array during the read operation based on whether a read address matches one of the stored write addresses and at least one indication of settling time of the data being written into the non-volatile memory cell array.