A semiconductor memory has a plurality of memory cells having a single-ended digit structure. When reading data from a selected memory cell, a digit voltage outputted from the selected memory cell is compared with a reference voltage. If the digit voltage is higher, it is outputted as High level; if the digit voltage is lower, it is outputted as Low level. The semiconductor memory further has a plurality of dummy cells with different current capacity to generate a plurality of different levels of reference voltages.