P
USRE45577EExpiredUtilityPatentIndex 82

Method of writing to a flash memory including data blocks and log blocks

Assignee: KIM BUM-SOOPriority: Jun 4, 2001Filed: Jun 2, 2011Granted: Jun 23, 2015
Est. expiryJun 4, 2021(expired)· nominal 20-yr term from priority
Inventors:KIM BUM-SOOLEE GUI-YONGKIM JONG MININ JI-HYUNKIM JE-SUNGNOH SAM HYUKMIN SANG LYULLEE DONG HEEJEONG JAE-YONGCHO YOO-KUNCHOI JONG MOO
G06F 2212/2022G06F 13/4239G06F 3/0679G06F 2212/7203G06F 12/0246G06F 12/00
82
PatentIndex Score
7
Cited by
41
References
42
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 thestep (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 to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 designating some of the plurality of blocks as data blocks;   designating some of the plurality of blocks as log blocks, each log block being associated with only one corresponding data block;   receiving a first logical address with a write request; and   in response to the write request, writing data to a first log block associated with the first logical address and a first data block,   wherein, after writing data to the first log block, valid data remains in the first data block,   wherein the method further comprises updating a table which maps each log block physical address to a corresponding data block address, and   wherein the table includes a plurality of page mapping tables each associated with a log block describing an arrangement of pages in the associated log block.   
     
     
       19. The method of claim 18, where in each page mapping table maps a page address by storing at least a portion of a logical address of a data block at a location in the table corresponding to a page location in the log block. 
     
     
       20. The method of claim 19, wherein the table is stored in a RAM. 
     
     
       21. The method of claim 18, further comprising, in response to the write request, writing data to the first log block associated with the first logical address at a first page of the first log block having an offset location within the first log block specified by an offset portion of the first logical address when the first page of the first log block is empty. 
     
     
       22. A method of writing to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 designating some of the plurality of blocks as data blocks;   designating some of the plurality of blocks as log blocks, each log block being associated with only one corresponding data block;   receiving a first logical address with a write request; and   in response to the write request, writing data to a first log block associated with the first logical address and a first data block,   wherein, after writing data to the first log block, valid data remains in the first data block,   wherein the method further comprises, in response to the write request, writing data to the first log block associated with the first logical address at a first page of the first log block having an offset location within the first log block specified by an offset portion of the first logical address when the first page of the first log block is empty, and   referencing a mapping table which maps each log block physical address to a corresponding data block address, the mapping table including a plurality of page mapping tables, including the first page mapping table, each page mapping table being associated with a log block describing an arrangement of pages in the associated log block.   
     
     
       23. A method of writing to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 designating some of the plurality of blocks as data blocks;   designating some of the plurality of blocks as log blocks, each log block being associated with only one corresponding data block;   receiving a first logical address with a write request; and   in response to the write request, writing data to a first log block associated with the first logical address and a first data block,   wherein, after writing data to the first log block, valid data remains in the first data block,   wherein the method further comprises, in response to the write request, writing data to the first log block associated with the first logical address at a first page of the first log block having an offset location within the first log block specified by an offset portion of the first logical address when the first page of the first log block is empty, and   updating a first page mapping table associated with the first log block to associate the first page of the first log block with at least the offset portion of the first logical address.   
     
     
       24. The method of claim 23, further comprising, in response to receiving the first logical address with a further write request,
 determining that the first page of the first log block is not free, and   in response to the determining, writing to a second page within the first log block having a location which is not an offset location specified by the offset portion of the first logical address.   
     
     
       25. The method of claim 24, further comprising merging the first log block and the first data block associated with the first log block by writing valid pages of the first data block to pages of the first log block at locations within the first log block corresponding to respective locations of the valid pages within the first data block. 
     
     
       26. The method of claim 25, further comprising erasing the first data block and removing the designation of the first data block as a data block. 
     
     
       27. The method of claim 25, further comprising erasing the first data block and changing the designation of the first data block to a free block. 
     
     
       28. The method of claim 24, further comprising updating a page mapping table associated with the first log block to associate the second page of the first log block with at least the offset portion of the first logical address. 
     
     
       29. A method of writing to a flash memory, the flash memory organized into a plurality of blocks, each block comprising a plurality of pages, the method comprising:
 designating some of the plurality of blocks as data blocks;   designating some of the plurality blocks as log blocks, each log block being associated with only one corresponding data block;   receiving a first logical address with a write request; and   in response to the write request, writing data to a first log block associated with the first logical address and a first data block,   wherein, after writing data to the first log block, valid data remains in the first data block,   wherein the method further comprises, in response to the write request,
 determining that a first page of the first log block having an offset location within the first log block specified by an offset portion of the first logical address is not free, and 
 in response to the determining, writing to a second page within the first log block having a location which is not an offset location specified by the offset portion of the first logical address. 
   
     
     
       30. The method of claim 29, further comprising:
 receiving a second logical address with a read request, the second logical address being associated with a second data block; and   determining whether a log block is associated with the second data block; and   in response to the read request, performing at least one of reading from a page of the second data block when no log block is determined to be associated with the second data block and reading from a page of a second log block when the second log block is determined to be associated with the second data block and the page of the second log block is determined to contain valid data.   
     
     
       31. The method of claim 29, further comprising:
 receiving a second logical address with a read request, the second logical address being associated with a second data block and a second log block; and   reading from a page of the second data block when it is determined that the page associated with the second logical address does not exist in the second log block.   
     
     
       32. The method of claim 29, further comprising updating a table which maps each log block physical address to a corresponding data block address. 
     
     
       33. The method of claim 29, further comprising updating a page mapping table associated with the first log block to associate the second page of the first log block with at least the offset portion of the first logical address. 
     
     
       34. The method of claim 29, further comprising:
 referencing a mapping table which maps each log block physical address to a corresponding data block address, the mapping table including a plurality of page mapping tables each associated with a log block describing an arrangement of pages in the associated log block.   
     
     
       35. The method of claim 29, further comprising merging the first data block and the first log block by writing valid pages of the first data block and valid pages of the first log block to pages of a free block, valid pages of the first data block being written to pages of the free block at respective locations within the free block corresponding to respective locations of the valid pages within the first data block. 
     
     
       36. The method of claim 29, further comprising merging the first data block and the first log block by writing valid pages of the first data block and valid pages of the first log block to pages of a free block,
 wherein valid pages of the first data block are written to pages of the free block at respective locations within the free block corresponding to respective locations of the valid pages within the first data block, and   wherein at least some of the valid pages of the first log block are written to pages of the free block at locations within the free block which do not correspond to respective locations of these valid pages within first log lock.   
     
     
       37. The method of claim 29, further comprising merging the first data block and the first log block by writing valid pages of the first data block to pages of the first log block at locations within the first log block corresponding to respective locations of the valid pages within the first data block. 
     
     
       38. The method of claim 29, further comprising:
 removing a designation of the first data block as a data block; and   changing the designation of the first log block from a log block to a data block.   
     
     
       39. The method of claim 29, wherein the number of log blocks is less than the number of data blocks. 
     
     
       40. The method of claim 29, wherein each data block is associated with only one log block. 
     
     
       41. 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 29.   
     
     
       42. A flash memory system, comprising;
 a flash memory; and   the flash memory controller of claims 41.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.