Patent ID: 7340581

Claim:
A non-volatile memory system comprising: volatile memory; non-volatile memory including control data structures; and a controller coupled to said non-volatile memory, said controller comprising means for maintaining lists in the volatile memory of blocks in the non-volatile memory allocated for storage of logical sector data, associated with logical addresses, and of blocks recently erased in the non-volatile memory, a plurality of cyclic write pointers for tracking the sequence of sector writing using the logical addresses, said controller further comprising transferring means for transferring information from the lists in the volatile memory to control data structures in the non-volatile memory less frequently than the rate at which the contents of the lists in volatile memory are changed, and means for including with every sector when written in the non-volatile memory a header containing logical address information representative of its logical address and further comprising means for reconstructing the lists in the volatile memory from existing information within the non-volatile memory wherein said existing information includes the logical address information in the headers of recently written sectors, the cyclic write pointers used to track the sequence of sector writing using logical addresses in the header of sectors in sequential physical position, the memory system including means for maintaining a Sector Address Table (SAT) of a list of physical sectors addressing the sectors in non-volatile memory corresponding to all sectors in the memory system, the SAT being maintained in a plurality of SAT blocks and having n number of entries, the nth entry including the physical address for the sector having logical address n, each SAT block having two equal partitions, a SAT partition dedicated to SAT entries and a temporary SAT (TSAT) partition, the TSAT partition of the block being an area in which TSAT sectors, which are written during a control write operation, are temporarily stored before being written in the SAT partition, an index of valid TSAT sectors and their position in the TSAT partition being maintained in a TSAT Index (TSATI) field in the most recently written TSAT sector, wherein when a TSAT sector is written, it is located at the first available sector position in the TSAT partition of the SAT block to which the sector relates, a SAT block is rewritten when its TSAT partition is full with valid TSAT sectors in the previous TSAT partition replacing the corresponding SAT sectors in the SAT partition, and the TSAT partition being left empty.