A method of dynamically sizing first and second caches of a volatile memory, wherein the first cache stores segments of address conversion information in non-compressed form and the second cache stores segments of the address conversion information in compressed form, said method comprising:
- determining a frequency of sequential writes based on a plurality of write commands from a host;
- and
- automatically adjusting, by a memory controller that controls the volatile memory, a ratio between a first capacity, which is a capacity of the first cache, and a second capacity, which is a capacity of the second cache, according to the frequency of sequential writes, wherein the memory controller increases the first capacity when the frequency of sequential writes is smaller than or equal to a first value and increases the second capacity when the frequency of sequential writes is greater than or equal to a second value, the first value being less than the second value.