USRE46446EExpiredUtility

Method and system for facilitating fast wake-up of a flash memory system

Assignee: SANDISK TECHNOLOGIES LLCPriority: May 9, 2005Filed: Aug 14, 2014Granted: Jun 20, 2017
Est. expiryMay 9, 2025(expired)· nominal 20-yr term from priority
Inventors:Menahem Lasser
G06F 11/1441G06F 12/0246G11C 16/00
80
PatentIndex Score
4
Cited by
28
References
58
Claims

Abstract

Methods, systems and computer-readable code for maintaining flash data structures in accordance with events of a flash memory system are disclosed. Both an events log as well as at least one flash management table are maintained in flash memory. For at least one point in time, a most recently stored flash memory table is indicative of an earlier state of the flash memory system, while at least one event that is more recent than the earlier state is stored in the events log. During power-up, the flash management table is retrieved from flash memory. If the most recent event of the flash memory table is earlier than the most recent event of the events log, events are retrieved from the events log in order to update the flash memory table. Optionally, the updated flash memory table is saved to flash memory.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method of maintaining flash data structures in accordance with events of a flash memory system, the method comprising:
 a) maintaining in flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 b) maintaining in volatile memory a second flash management table whose contents are indicative of a state of the of the flash memory system including a virtual to physical address mapping for the first portion of the flash memory system; and 
 c) maintaining in said flash memory an events log,
 i) wherein the method is carried out such that for at least one point in time, the first flash management table that is stored in said flash memory represents an earlier state of the flash memory system; and 
 ii) wherein said earlier state of the flash memory system is
 A) earlier than a most recent event, the most recent event being stored in the events log in said flash memory and reflected in the second flash management table in the volatile memory; and 
 B) later than a most recent power up of the flash memory system. 
 
 
 
     
     
       2. The method of  claim 1  wherein for said at least one point in time a current state of the flash memory system is reflected by contents of said events log stored in said flash memory and said first flash management table stored in said flash memory. 
     
     
       3. The method of  claim 1  wherein said maintaining of said first management table includes, at another point in time distinct from said at least one point in time, synchronizing said first flash management table to a latest recorded event of said events log. 
     
     
       4. The method of  claim 1  wherein said maintaining of said first flash management table in said flash memory includes periodically synchronizing in said flash memory said first flash management table to a current state. 
     
     
       5. The method of  claim 1  wherein said maintaining of said first flash management table in said flash memory includes, for every Nth change of state of the flash memory system, synchronizing in said flash memory said first flash management table to a current state, wherein N>=2. 
     
     
       6. The method of  claim 1  wherein said maintaining of said first flash management table in said flash memory includes:
 i) upon occurrence of a change of state of the flash memory system_of a first pre- determined type, synchronizing in said flash memory said first flash management table to a current state; and 
 ii) upon occurrence of a change of state of the flash memory system of a second pre- determined type, not synchronizing in said flash memory said first flash management table to said current state. 
 
     
     
       7. The method of  claim 6  wherein said maintaining of said events log includes, upon a given said occurrence of a change of state of said first pre-determined type, recording to said events log in said flash memory, a plurality of events of the flash memory system that occur:
 i) after said given occurrence of said change of state of said first pre-determined type; and 
 ii) before a first power-down of the flash memory system that occurs after the change of state of the first pre-determined type. 
 
     
     
       8. The method of  claim 7  wherein said recording of said plurality of events to said events log in said flash memory is carried out before said first power-down of the flash memory system that occurs after the change of state of the first pre-determined type. 
     
     
       9. The method of  claim 1  wherein a frequency for which said first flash management table is updated in said flash memory is determined in accordance with an availability of resources of the flash memory system. 
     
     
       10. The method of  claim 1  wherein first flash management table includes at least one of (i) a translation table which maps virtual block numbers into physical block numbers and (ii) a free blocks table. 
     
     
       11. The method of  claim 1  where the method is carried out such that said earlier state of the flash memory system is earlier than a second most recent said event stored in said events log in said flash memory. 
     
     
       12. The method of  claim 1  wherein said events log maintaining in said flash memory is carried out such that each event is recorded in flash memory before an occurrence of a respective next event of the flash memory system. 
     
     
       13. The method of  claim 1  further comprising:
 d) generating at least one table indicative of a state of the flash memory system that is more current than said earlier state from:
 i) said event log stored in said flash memory, and 
 ii) said first flash management table that is:
 A) stored in said flash memory; and 
 B) no more current than said earlier state. 
 
 
 
     
     
       14. The method of  claim 13  wherein said more current state is a most current state of the flash memory system at a time of said generating. 
     
     
       15. The method of  claim 13  wherein said generating is effected when waking up. 
     
     
       16. The method of  claim 1  wherein the method is carried out such that at least one of said at least one point in time is subsequent to a handling of a most recent event by the flash management system. 
     
     
       17. The method of  claim 16  wherein said earlier state of the flash memory system is:
 C) earlier than each event of a plurality of different events stored in said events log in said flash memory. 
 
     
     
       18. The method of  claim 1  wherein the maintaining of said first flash management table in said flash memory further includes:
 i) at a time when a plurality of events of the flash memory system have occurred since a most recent update of said first management table in said flash memory, deciding, in accordance with a cardinality of said plurality, whether or not to synchronize, in said flash memory, said first flash management table to a current state of the flash management system; and 
 ii) contingent on said deciding, synchronizing, in said flash memory, said first management table to said current state of the flash management system. 
 
     
     
       19. The method of  claim 1  wherein the maintaining of said first flash management table in said flash memory further includes:
 i) at a time when a plurality of events of the flash memory system have occurred since a most recent update of said first flash management table in said flash memory, deciding, in accordance with an amount of time that has elapsed since said most recent update of said first management table in said flash memory, whether or not to synchronize, in said flash memory, said first flash management table to current state of the flash management system; and 
 ii) contingent on said deciding, synchronizing, in said flash memory, said at least one flash management table to said current state of the flash management system. 
 
     
     
       20. The method of  claim 1  wherein the maintaining of said first flash management table in said flash memory further includes:
 i) determining whether or not an event of the flash memory system changes a non-free block into a free block; 
 ii) in accordance with results of said determining, deciding whether or not to synchronize, in said flash memory, said first flash management table to a current state of the flash management system; and 
 iii) contingent on said deciding, synchronizing, in said flash memory, said first flash management table to said current state of the flash management system. 
 
     
     
       21. The method of  claim 20  wherein the determining is a determining of whether or not a most recent event of the flash memory system changes a non-free block into a free block. 
     
     
       22. The method of  claim 20  wherein the determining and the deciding are carried out at a time when a plurality of events of the flash memory system have occurred since a most recent update of said first flash management table in said flash memory. 
     
     
       23. A method of waking up in a flash memory system, the method comprising:
 I) When waking up,
 a) reading from flash memory at least one flash management table describing a state of the flash memory system, the at least one flash management table including at least one out of date virtual to physical address mapping at a time of waking up; 
 b) reading from said flash memory an events log containing records of pre-stored events of the flash memory system; and  
 c) for at least one event stored in said events log, updating said at least one flash management table in accordance with changes effected by said at least one event. 
 
 
     
     
       24. The method of  claim 23  wherein:
 i) said reading of said events log includes reading from said flash memory a record of a most recent event of the flash management system; and 
 ii) said updating includes updating said at least one flash management table in accordance with a most recent event of said events log. 
 
     
     
       25. The method of  claim 23  wherein said at least one flash management table includes a translation table which maps virtual block numbers into physical block numbers. 
     
     
       26. The method of  claim 23  wherein:
 i) said reading from said flash memory of said events log includes reading records of every event that occurred more recently than a most current said flash management table, said every event including a plurality of distinct events; 
 ii) said updating includes updating said most current flash management table in accordance with a respective change effected each event of said every more recent event. 
 
     
     
       27. The method of  claim 23  wherein:
 i) said reading from said flash memory of said at least one flash management table includes reading at least one obsolete table that describes a state of the flash memory system that is earlier than as a most recent event of said flash-read events log; and 
 ii) said updating includes updating said at least one obsolete table in accordance with at least one said more recent event of said flash-read events log. 
 
     
     
       28. The method of  claim 23  wherein said updating includes, for each event of a plurality of events stored in said events log, updating said at least one flash management table in accordance with a respective change effected by said each event of said plurality of events. 
     
     
       29. A flash memory system comprising:
 a) a flash memory for storing data; 
 a.1) a central processing unit (CPU); and 
 b) flash management software for maintaining at least one data structure used for accessing said flash memory, 
 wherein, when waking up, said flash management software is configured to, as a result of execution on said CPU, cause said CPU to:
 i) read from flash memory at least one flash management table describing a state of the flash memory system, the at least one flash management table including at least one out of date virtual to physical address mapping at a time of waking up; 
 ii) read from said flash memory an events log containing records of pre-stored events of the flash memory system; 
 iii) for at least one event stored in said events log, update said at least one flash management table in accordance with changes effected by said at least one event. 
 
 
     
     
       30. The system of  claim 29  wherein said execution of said flash management software is operative such that:
 i) said reading of said events log includes reading from said flash memory a record of a most recent event of the flash management system; and 
 ii) said updating includes updating said at least one flash management table in accordance with a most recent event of said events log. 
 
     
     
       31. The system of  claim 29  wherein said execution of said flash management software is operative such that:
 i) said reading from said flash memory of said at least one flash management table includes reading at least one obsolete table that describes a state of the flash memory system that is earlier than as a most recent event of said flash-read events log; and 
 ii) said updating includes updating said at least one obsolete table in accordance with at least one said more recent event of said flash-read events log. 
 
     
     
       32. The system of  claim 29  wherein said execution of said flash management software is operative such that:
 i) said reading from said flash memory of said at least one flash management table includes reading at least one obsolete table that describes a state of the flash memory system that is earlier than as a most recent event of said flash-read events log; 
 ii) said updating includes updating said at least one obsolete table in accordance with at least one said more recent event of said flash-read events. 
 
     
     
       33. A non-transitory computer readable storage medium having computer readable code embodied in said computer readable storage medium, said computer readable code comprising instructions for waking up in a flash memory system, wherein said instructions comprise instructions to:
 I) When waking up,
 a) read from flash memory at least one flash management table describing a state of the flash memory system, the at least one flash management table including at least one out of date virtual to physical address mapping at a time of waking up; 
 b) read from said flash memory an events log containing records of pre-stored events of the flash memory system; 
 c) for at least one event stored in said events log, update said at least one flash management table in accordance with changes effected by said at least one event. 
 
 
     
     
       34. A flash memory system comprising:
 a) a flash memory for storing data; 
 b) a volatile memory for storing data; 
 c) a central processing unit (CPU); and 
 d) a flash management software for maintaining data structures used for accessing said flash memory,
 i) wherein said flash management software is configured to, as a result of execution on said CPU, cause said CPU to:
 A) maintain in said flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 B) maintain in said flash memory an events log; and 
 C) maintain in said volatile memory a second flash management table including a virtual to physical address mapping for the first portion of the flash memory system; 
 
 ii) wherein said execution of said flash management software is further operative such that, for at least one point in time, said first flash management table that is stored in said flash memory represents an earlier state of the flash memory system; and 
 iii) wherein said earlier state of the flash memory system is
 A) earlier than a most recent event, said event stored in said events log in said flash memory; 
 B) earlier than a most recent even event represented in the second flash management table stored in the volatile memory; and 
 C) later than a most recent power up of the flash memory system. 
 
 
 
     
     
       35. The system of  claim 34  wherein said execution of said flash management software is operative such that said earlier state of the flash memory system is earlier than a second most recent said event stored in said events log in said flash memory. 
     
     
       36. The system of  claim 34  wherein said execution of said flash management software is operative such that said events log maintaining in said flash memory is carried out such that each event is recorded in flash memory before an occurrence of a respective next event of the flash memory system. 
     
     
       37. A non-transitory computer readable storage medium having computer readable code embodied in said computer readable storage medium, said computer readable code comprising instructions for maintaining flash data structures in accordance with events of a flash memory system, wherein said instructions comprise instructions to:
 a) maintain in flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 b) maintain in volatile memory a second flash management table whose contents are indicative of a state of the of the flash memory system including a virtual to physical address mapping for the first portion of the flash memory system; and 
 c) maintain in said flash memory an events log,
 i) wherein for at least one point in time, the first flash management table that is stored in said flash memory represents an earlier state of the flash memory system; and 
 ii) wherein said earlier state of the flash memory system is
 A) earlier than a most recent event, the most recent event being stored in the events log in said flash memory and in the second flash management table in the volatile memory; and 
 B) later than a most recent power up of the flash memory system. 
 
 ii) wherein said earlier state of the flash memory system is earlier than a most recent event stored in said events log in said flash memory and reflected in said second flash management table. 
 
 
     
     
       38. A method of maintaining flash data structures in accordance with events of a flash memory system, the method comprising:
 a) maintaining in flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 b) maintaining in volatile memory a second flash management table whose contents are indicative of a state of the of the flash memory system including a virtual to physical address mapping for the first portion of the flash memory system; and 
 c) maintaining in said flash memory an events log such that each event is recorded in flash memory before an occurrence of a respective next event of the flash memory system
 i) wherein the method is carried out such that for at least one point in time, said first flash management table that is stored in said flash memory represents an earlier state of the flash memory system; and 
 ii) wherein said earlier state of the flash memory system is earlier than a most recent event stored in said events log in said flash memory and reflected in said second flash management table. 
 
 
     
     
       39. The method of  claim 38  wherein the method is carried out such that at least one of said at least one point in time is subsequent to a handling of a most recent event by the flash management system. 
     
     
       40. A flash memory system comprising:
 a) a flash memory for storing data; 
 b) a volatile memory used for storing data related to the control and use of the flash memory; 
 c) a central processing unit (CPU); and 
 d) flash management software for maintaining data structures used for accessing said flash memory,
 i) wherein said flash memory management software is configured to, as a result of execution on said CPU, cause said CPU to:
 A) maintain in said flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 B) maintain in said volatile memory a second flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for the first portion of the flash memory system; and 
 C) maintain in said flash memory an events log such that each event is recorded in flash memory before an occurrence of a respective next event of the flash memory system and 
 
 ii) wherein said execution of said flash management software is further operative such that, for at least one point in time, said first flash management table represents an earlier state of the flash memory system; and 
 iii) wherein said earlier state of the flash memory system is earlier than a most recent said event stored in said events log in said flash memory and reflected in the second flash management table in the volatile memory. 
 
 
     
     
       41. A non-transitory computer readable storage medium having computer readable code embodied in said computer readable storage medium, said computer readable code comprising instructions for maintaining flash data structures in accordance with events of a flash memory system, wherein said instructions comprise instructions to:
 a) maintain in flash memory a first flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for at least a first portion of the flash memory system; 
 b) maintain in volatile memory a second flash management table whose contents are indicative of a state of the flash memory system including a virtual to physical address mapping for the first portion of the flash memory system; and 
 c) maintain in said flash memory an events log such that each event is recorded in flash memory before an occurrence of a respective next event of the flash memory system
 i) wherein for at least one point in time, said first flash management table that is stored in said flash memory represents an earlier state of the flash memory system; and 
 ii) wherein said earlier state of the flash memory system earlier than a most recent said event stored in said events log in said flash memory and reflected in the second flash management table in volatile memory. 
 
 
     
     
       42. A method of maintaining flash data structures in accordance with events of a flash memory system, the method comprising operating a processor to:
 a) maintain a first flash management table, wherein maintaining the first flash management table comprises saving data to the first flash management table at a first time;   b) maintain an events log, wherein maintaining the events log comprises saving data to the events log at a second time, the second time occurring after the first time, wherein the data saved to the events log at the second time corresponds to an event that has transpired since the first time, the first flash management table including at least one out of date virtual to physical address mapping at the second time; and   c) responsive to determining that an update of the first flash management table is required, operating the processor to update the first flash management table in accordance with the data stored in the events log.   
     
     
       43. The method of claim 42, wherein the second time corresponds to a time at which a most recent event of the flash memory system occurred, and the first time corresponds to a time at which an earlier event of the flash memory system occurred. 
     
     
       44. The method of claim 43, wherein the processor is operated to determine that an update of the first flash management table is required if the processor determines that:
 a number of events of the flash memory system that occurred since the first time is greater than a predefined threshold number.   
     
     
       45. The method of claim 43, wherein the processor is operated to determine that an update of the first flash management table is required if the processor determines that:
 an elapsed period of time since the first time is greater than a predefined threshold time.   
     
     
       46. The method of claim 43, wherein the processor is operated to determine that an update of the first flash management table is required if the processor determines that a power up of the flash memory system was performed at a time after the first time. 
     
     
       47. The method of claim 43, wherein the processor is operated to determine that an update of the first flash management table is required in accordance with available system resources. 
     
     
       48. The method of claim 43, wherein the data saved to the events log at the second time is indicative of the most recent event and the data saved to the first flash management table at the first time is indicative of the earlier event. 
     
     
       49. The method of claim 48, wherein the processor is operated to determine that an update of the first flash management table is required in accordance with an event type of the most recent event. 
     
     
       50. The method of claim 42, wherein the processor is operated to maintain the first flash management table in flash memory. 
     
     
       51. The method of claim 50, wherein the processor is operated to maintain the events log in flash memory. 
     
     
       52. The method of claim 51, wherein the processor is further operated to:
 maintain a second flash management table in volatile memory, wherein data is saved to the second flash management table at a third time, the third time occurring after the first time.   
     
     
       53. The method of claim 42, wherein the processor is further operated to:
 save, in flash memory, an indication of the first time and the second time.   
     
     
       54. A method of managing wake up in a flash memory system, the method being performed as part of a wake up process and comprising operating a processor to:
 read, from the flash memory system, at least a first flash management table, the first flash management table contents including at least one out of date virtual to physical address mapping prior to the wake up process;   read, from the flash memory system, an events log; and   responsive to determining that data was saved to the events log more recently than data was saved to the first flash management table, operating the processor to update the first flash management table in accordance with the events log.   
     
     
       55. The method of claim 54, wherein determining that data was saved to the events log more recently than data was saved to the first flash management table comprises:
 identifying a first time at which data was most recently saved to the flash management table;   identifying a second time at which data was most recently saved to the events log; and   determining that data was saved to the events log more recently than data was saved to the first flash management table if the second time occurred more recently than the first time.   
     
     
       56. The method of claim 55, further comprising operating the processor to:
 determine, in accordance with the first time and the second time, a number of events to be included in the first flash management table; and   update the first flash management table to reflect the determined number of events.   
     
     
       57. The method of claim 54, wherein the processor is operated to read the first flash management table from flash memory. 
     
     
       58. The method of claim 55, wherein the processor is operated to read the events log from flash memory.

Join the waitlist — get patent alerts

Track USRE46446E — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.