Patent ID: 6477632
Filing Date: 2002-11-05
Classification: G06F,Y02D

Abstract:
A storage device comprising:a non-volatile semiconductor memory including a plurality of memory blocks to which physical addresses have been assigned; an erasure for batch erasing of stored data from said memory in units of memory blocks; and a writer, to which data and logical addresses are input, which determines locations where said data is to be stored in said memory and which writes said data in said locations; wherein said memory stores an address translation table which stores information showing a correspondence between said logical addresses and physical addresses of said memory, wherein said writer adds, to said address translation table, information showing a correspondence between physical addresses of the locations where said data has been written and the input logical addresses, or updates said address translation table, and wherein the data and the address translation table are both stored in said memory, said storage device further comprising a reader that performs the following steps: storing a physical address of a block in which said address translation table has been written; accessing the block which contains said address translation table stored therein and reading physical addresses corresponding to logical addresses of to-be-read data; and reading and outputting data stored at the physical addresses read by said reader, wherein said memory stores an empty block table which stores information specifying empty blocks containing no data stored therein; said writer comprises empty block selector which accesses a block which contains said empty block table stored therein and selects a writing target block from the empty blocks registered in said empty block table, and empty block writer which writes to-be-written data in the empty block selected by said empty block selector, said storage device further comprising: an eliminator which eliminates said empty block table which stores information specifying said empty block that existed until said empty block writer has written said data in said empty block; and an empty block updater which causes said memory to store said empty block table which stores information specifying empty blocks that remain after said empty block writer has written said data in said empty block.