Patent ID: 8516354

Claim:
A method for reducing uncorrectable errors of a memory device regarding error correction code (ECC), the method being applied to a controller positioned within the memory device, which comprises a Flash memory, the method comprising: performing majority vote according to data read at different times at a same address in order to generate majority vote data corresponding to the address; and checking whether the majority vote data has any uncorrectable error in order to determine whether to output the majority vote data as data of the address; wherein the controller reads a memory page in the Flash memory at a first time and decodes the read data of the first time to generate a page of decoded data of the first time, and then reads the memory page at a second time and decodes the read data of the second time to generate a page of decoded data of the second time, wherein the page of decoded data of the first time is temporarily stored into a first buffering region/buffer of a plurality of buffering regions/buffers of the controller, and the page of decoded data of the second time is temporarily stored into a second buffering region/buffer of the buffering regions/buffers; afterward, when reading the memory page at a third time, the controller sequentially reads at least one corresponding byte in the first buffering region/buffer and at least one corresponding byte in the second buffering region/buffer, respectively, and performs the majority vote on the at least one corresponding byte read from the first buffering region/buffer, the at least one corresponding byte read from the second buffering region/buffer, and at least one corresponding byte obtained from reading the memory page at the third time, and stores at least one corresponding byte of the majority vote data obtained from performing the majority vote into the second buffering region/buffer, wherein after the at least one corresponding byte in the first buffering region/buffer is read, the controller stores the at least one corresponding byte obtained from reading the memory page at the third time into the first buffering region/buffer.