USRE45222EExpiredUtility

Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table

50
Assignee: KIM BUM-SOOPriority: Jun 4, 2001Filed: Jun 2, 2011Granted: Oct 28, 2014
Est. expiryJun 4, 2021(expired)· nominal 20-yr term from priority
G06F 12/00G06F 13/4239G06F 3/0679G06F 12/0246G06F 2212/7203G06F 2212/2022
50
PatentIndex Score
0
Cited by
43
References
37
Claims

Abstract

A flash memory management method is provided. According to the method, when a request to write the predetermined data to a page to which data has been written is made, the predetermined data is written to a log block corresponding to a data block containing the page. When a request to write the predetermined data to the page again is received, the predetermined data is written to an empty free page in the log block. Even if the same page is requested to be continuously written to, the management method allows this to be processed in one log block, thereby improving the effectiveness in the use of flash memory resources.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method for writing predetermined data to a flash memory, the method comprising the steps of:
 (a) receiving a request to write the predetermined data to a page to which data has been written;   (b) writing the predetermined data to a log block corresponding to a data block containing the page;   (c) receiving a request to write the predetermined data to the page again; and   (d) writing the predetermined data to an empty free page in the log block.   
     
     
       2. The method of  claim 1 , wherein the step (b) comprises the step (b11) of writing the predetermined data to an empty free page. 
     
     
       3. The method of  claim 1 , wherein the step (b) comprises the steps of:
 (b21) allocating the log block; and   (b22) writing the predetermined data to an empty page at the same position as the requested page in the data block.   
     
     
       4. The method of  claim 1 , wherein the data block is configured to store data and the log block is configured to store data which has been modified. 
     
     
       5. A method for writing predetermined data to a flash memory, the method comprising the steps of:
 (a) receiving a request to write the predetermined data to a page;   (b) allocating a log block  1 - 1  corresponding to a first data block containing the page;   (c) writing the predetermined data to an empty page in the log block  1 - 1 ;   (d) receiving a request to write the predetermined data to the page again; and   (e) writing the predetermined data to an empty free page in the log block  1 - 1 .   
     
     
       6. The method of  claim 5 , wherein the step (b) comprises the steps of:
 (b1) performing a block merge to create a third data block based on a second data block and a second log block corresponding to the second data block; and   (2) allocating a free block obtained by performing an erase operation on the second data block as the log block  1 - 1 .   
     
     
       7. The method of  claim 6 , wherein the step (b1) is performed when a free block to be allocated as the log block  1 - 1  does not exist. 
     
     
       8. The method of  claim 6 , wherein the step (b1) is performed when all pages of the existing log block corresponding to the first data block have been used. 
     
     
       9. The method of  claim 6 , wherein the step (b1) comprises the step of (b11) performing a switch merge to change the second log block to the third data block when pages of the second log block are arranged in the same order that pages of the second data block are arranged, and the pages of the second log block correspond one-to-one to the pages of the second data block. 
     
     
       10. The method of  claim 6 , wherein the step (b1) comprises the step of (b12) performing a copy merge to copy corresponding pages of the second data block to free pages in the second log block and create the third data block when the pages in the second log block are requested to be written only once. 
     
     
       11. The method of  claim 6 , wherein the step (b1) comprises the step of (13) performing a simple merge to copy the latest pages in the second log block to free pages of a free block to which data has not been written and copy a corresponding page of the second data block to the remaining free pages thereof, thereby creating the third data block. 
     
     
       12. The method of  claim 5 , wherein the step (e) comprises the steps of:
 (e1) allocating a new log block  1 - 2  if a free page does not exist in the log block  1 - 1  and   (e2) writing the predetermined data to a free page in the log block  1 - 2 .   
     
     
       13. The method of  claim 12 , wherein the step (e1) comprises the steps of:
 (e11) performing a switch merge to change the log block to a second data block when pages of the log block  1 - 1  are arranged in the order in which 5 pages of the first data block are arranged and the pages of the log block  1 - 1  correspond one-to-one to the pages of the first data block, and   (e12) allocating a free block obtained by performing an erase operation on the first data block as the log block  1 - 2 .   
     
     
       14. The method of  claim 12 , wherein the step (e1) comprises the steps of: (e21) performing a copy merge to copy corresponding pages in the first data block to a free page in the log block  1 - 1  when pages in the log block  1 - 1  are requested to be written only once; and
 (e22) allocating a free block obtained by performing an erase operation on the first data block as the log block  1 - 2 . 
 
     
     
       15. The method of  claim 12 , wherein the step (e1) comprises the steps of:
 (e31) performing a simple merge to copy the latest pages in the log block  1 - 1  to free pages of a free block and copy a corresponding page of the first data block to the remaining free pages thereof, thereby creating a second data block; and   (e32) allocating a free block obtained by performing an erase operation on the first data block or the log block  1 - 1  as the log block  1 - 2 .   
     
     
       16. The method of  claim 12 , wherein the step (e2) comprises the step of (e21) writing the predetermined data to a free page at the same position as the requested page in the data block. 
     
     
       17. The method of  claim 5 , wherein the first data block is configured to store data and the log block  1 - 1  is configured to store data which has been modified. 
     
     
       18. A method of writing data to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 in a state where data has been previously written to a page of a data block, receiving a logical address of the page of the data block, the logical address comprising a block address portion and a page identifying portion;   determining a first physical block address of a first log block associated with the data block by referencing a block address table, the block address table associating block address portions of logical addresses of data blocks with respective physical block addresses of log blocks;   writing data to a first page of the first log block associated with the data block, wherein the location of the first page within the first log block is selected, in response to the page identifying portion of the logical address, to correspond to a location of the page of the data block;   updating a page address record to associate the first page of the log block to at least the identifying portion of the logical address; and   after the writing data to the first page of the log block, writing data to an empty free page of the first log block in response to receiving a write command associated with the page of the data block.   
     
     
       19. The method of claim 18,
 wherein the page identifying portion of the logical address is an offset value, and   wherein the location of the first page within the first log block is at a location within the first log block that is the same as the location indicated by the offset value.   
     
     
       20. The method of claim 18, wherein the page address record is associated with the first physical block address in the block address table. 
     
     
       21. The method of claim 20, wherein the page address record and block address table are stored in a random access memory. 
     
     
       22. The method of claim 18, further comprising updating the page address record to associate the second page of the log block to at least the page identifying portion of the logical address. 
     
     
       23. The method of claim 22, wherein the location of the second page is a page closest to the first page. 
     
     
       24. The method of claim 18, further comprising, before writing data to the first page:
 receiving the logical address of the page of the data block; and   reading data from a page of the data block associated with the logical address.   
     
     
       25. The method of claim 18, further comprising:
 merging data of the data block and the first log block by writing data of some of the pages of the data block to pages of the first log block, pages of the first log block to which data is written having a same relative location within the first log block as the relative location of a respective page within the data block from which corresponding data was written.   
     
     
       26. A flash memory controller comprising:
 a processor; and   a memory storing program codes containing instructions that when executed cause the processor to implement the method of claim 18.   
     
     
       27. A flash memory system, comprising:
 a flash memory; and   the flash memory controller of claim 26.   
     
     
       28. A method of writing data to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 in a state where data has been previously written to a page of a data block, receiving a logical address of the page of the data block, the logical address comprising a block address portion and a page identifying portion;   determining whether a log block has been associated with the data block by referencing a block table associating logical addresses of data blocks with respective ones of physical addresses of log blocks;   when no log block is found to be associated with the data block, allocating a free block as the log block associated to the data block;   writing data to a first page of the log block associated with the data block, wherein the location of the first page within the first log block is selected, in response to the page identifying portion of the logical address, to correspond to a location of the page of the data block;   updating a page address record to associate the first page of the log block to at least the page identifying portion of the logical address; and   after the writing data to the first page of the log block, writing data to an empty free page of the first log block in response to receiving a write command associated with the page of the data block.   
     
     
       29. The method of claim 28, wherein the block table and page address record are part of a data structure, the page address record being associated with the log block within the data structure. 
     
     
       30. The method of claim 28, wherein the block table and page address record are stored in RAM. 
     
     
       31. The method of claim 28, wherein the page identifying portion of the logical address is an offset value identifying an address offset from the block address portion of the logical address. 
     
     
       32. The method of claim 31, wherein the step of updating the page address record includes storing the offset value at a location in the page address record corresponding to the location of the first page within the log block. 
     
     
       33. The method of claim 31, wherein the step of updating the page address record includes storing the entire logical address including the offset value at a location in the page address record corresponding to the location of the first page within the log block. 
     
     
       34. The method of claim 28, further comprising updating the page address record to associate the second page of the log block to at least the page identifying portion of the logical address. 
     
     
       35. The method of claim 28, further comprising, before writing data to the first page:
 receiving the logical address of the page of the data block; and   reading data from a page of the data block associated with the logical address.   
     
     
       36. The method of claim 28, further comprising:
 merging valid data of the data block and the first log block by writing valid data of some of the pages of the data block to empty pages of the first log block, pages of the first log block to which valid data is written having a same relative location within the first log block as the relative location of a respective page within the data block from which corresponding data was written.   
     
     
       37. The method of claim 36, further comprising, after merging data of the data block and the first log block, erasing the data block.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.