If the address conversion table to be referred to is stored in the flash memory 20, the flash memory 20 is accessed at a higher frequency for address conversion, thus resulting in lower processing throughput and increased latency. Efficiency can be enhanced by caching a large part of the address conversion table, for example, to an external DRAM. The larger the capacity of the flash memory 20, the larger the capacity of a necessary DRAM. Further, DRAM data transfer rate has become dominant, making it difficult to anticipate sufficient improvement in throughput and latency after all.
In the present embodiment, therefore, the address conversion table size is minimized by increasing the data processing unit in response to a write request, i.e., granularity level, at least for part of data. Assuming, for example, that the write granularity level is 128 MiB and that data of each entry in the address conversion table is 4 bytes in size as described above, the data size of the address conversion table as a whole is a ½25th fold of the capacity of the flash memory 20. For example, a 32-KiB (32λ210 bytes) address conversion table can express 1 TiB (240 bytes) of area.
Thus, storing a sufficiently small-sized address conversion table in the SRAM 24 of the flash controller 18 makes it possible to convert addresses without the mediation of an external DRAM. Making the write granularity coarser is particularly effective, for example, for game programs that are loaded from an optical disc or network, stored in the flash memory 20, and only repeatedly referred to. This means that because stored data is not rewritten, it is not necessary to reserve a new area for storing rewritten data in that unit.