Patent ID: 8856427

Claim:
A non-volatile storage device, which communicates with an access device and carries out reading and/or writing of data in accordance with a command from the access device, the non-volatile storage device comprising: a non-volatile memory for storing data; and a memory controller for carrying out control of the non-volatile memory, wherein the non-volatile memory includes a plurality of blocks, which are erase units, each block of the plurality of blocks including a plurality of pages, which are write units of data, and wherein the memory controller: arranges a first logical block in one region by combining first blocks of the plurality of blocks, and arranges a second logical block in a different region by combining second blocks of the plurality of blocks; assigns a plurality of error correcting groups to the first logical block, each error correcting group of the plurality of error correcting groups being configured by a plurality of pages of the first blocks of the first logical block; assigns data and assigns at least one of a first error correcting code and a second error correcting code with respect to the data to each error correcting group; configures one error correcting group of the plurality of error correcting groups as a parity group, the parity group including (i) data pages, of the first blocks of the first logical block, each of which includes the data and the first error correcting code with respect to the data and (ii) a parity page of one first block of the first logical block that includes the second error correcting code; assigns a plurality of multiplexed groups to the second logical block, each multiplexed group of the plurality of multiplexed groups being configured by a plurality of data pages, each data page, of the second blocks of the second logical block, including data and the first error correcting code with respect to the data, and each multiplexed group of the plurality of multiplexed groups including one data page and a copy of the one data page as a copied data page; when a data size of write data is smaller than a predetermined size, generates one data page from the write data and writes the generated data page and a copy of the generated data page as the copied data page in one multiplexed group to the second logical block, and when the data size of the write data is greater than or equal to the predetermined size, generates data pages and one parity page of the generated data pages from the write data and writes the generated data pages and the one parity page of the generated data pages in one parity group to the first logical block; and includes a valid data management table for managing which one of the first logical block and the second logical block stores valid data with respect to an identical logical address.