IP Library Granted Patent US 8,307,148
Granted Patent B2
US 8,307,148 · App. 11/473,754 · Granted Nov 6, 2012

Flash management techniques

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,307,148
App. No.
11/473,754
Granted
Nov 6, 2012
Kind
B2
Abstract

Various flash management techniques may be described. An apparatus may comprise a processor, a flash memory coupled to the processor, and a flash management module. The flash management module may be executed by the processor to receive a write request to write data to the flash memory, write a first control sector with a sequence number to the flash memory, and write the sequence number, an address for a logical sector, and data to at least one physical sector corresponding to the logical sector of the flash memory. Other embodiments are described and claimed.

Claims (57)

1. An article comprising a machine-readable storage medium containing instructions that if executed enable a system to:

receive a write request to write data to a flash memory;

determine a sequence number using bidirectional counting, wherein a most significant bit of the sequence number is used to designate a current direction of the bidirectional counting;

receive a list of physical sectors for said write request;

compute a checksum for data to be stored in a last physical sector of the physical sectors for said write request;

write a first control sector with said sequence number to said flash memory, wherein the control sector is not a data sector;

write said checksum to said first control sector;

write said sequence number, an address for a logical sector, and said data to at least one physical sector corresponding to said logical sector, and

determine whether said physical sector corresponding to said logical sector is dirty using said sequence number.

2. The article of claim 1 , further comprising instructions that if executed enable the system to query for said physical sector, control sector, and sequence number, update a table mapping said logical sector with said physical sector, compute a first checksum for data to be stored in a last physical sector, compute a second checksum for said first control sector, and write said first control sector with said first and second checksums.

3. The article of claim 1 , further comprising instructions that if executed enable the system to interrupt writing operations prior to completion, and resume writing operations for said write request using said first control sector.

4. The article of claim 1 , further comprising instructions that if executed enable the system to compact dirty physical sectors for a block using a second control sector and sector information for each physical sector within said block.

5. The article of claim 1 , further comprising instructions that if executed enable the system to identify mapped physical sectors in a first block using sector information, relocate mapped physical sectors to a second block, create a second control sector for said first block, erase data from said physical sectors of said first block, and mark said erased physical sectors as free physical sectors.

6. The article of claim 1 , further comprising instructions that if executed enable the system to compact dirty physical sectors for a block using a second control sector, interrupt compacting operations prior to completion, and resume compacting operations for said block using said second control sector.

7. A method, comprising:

receiving a write request to write data to a flash memory;

determining a sequence number using bidirectional counting, wherein a most significant bit of the sequence number is used to designate a current direction of the bidirectional counting;

receiving a list of physical sectors for said write request;

computing a checksum for data to be stored in a last physical sector of the physical sectors for said write request;

writing a first control sector with said sequence number to said flash memory, wherein the control sector is not a data sector;

writing said checksum to said first control sector;

writing said sequence number, an address for a logical sector, and said data to at least one physical sector corresponding to said logical sector; and

determining whether said physical sector corresponding to said logical sector is dirty using said sequence number.

8. The method of claim 7 , comprising:

querying for said physical sector, control sector, and sequence number;

updating a table mapping said logical sector with said physical sector;

computing a first checksum for data to be stored in a last physical sector;

computing a second checksum for said first control sector; and

writing said first control sector with said first and second checksums.

9. The method of claim 7 , comprising:

interrupting writing operations prior to completion; and

resuming writing operations for said write request using said first control sector.

10. The method of claim 7 , comprising compacting dirty physical sectors for a block using a second control sector and sector information for each physical sector within said block.

11. The method of claim 7 , comprising:

compacting dirty physical sectors for a block using a second control sector;

interrupting compacting operations prior to completion; and

resuming compacting operations for said block using said second control sector.

12. An apparatus, comprising:

a processor;

a flash memory coupled to said processor; and

a flash management module that when executed by said processor is arranged to:

receive a write request to write data to said flash memory;

determine a sequence number using bidirectional counting, wherein a most significant bit of the sequence number is used to designate a current direction of the bidirectional counting;

receive a list of physical sectors for said write request;

compute a checksum for data to be stored in a last physical sector of the physical sectors for said write request;

write a first control sector with said sequence number to said flash memory, wherein the control sector is not a data sector;

write said checksum to said first control sector, and

write said sequence number, an address for a logical sector, and said data to at least one physical sector corresponding to said logical sector of said flash memory;

said flash management module to determine whether said physical sector corresponding to said logical sector is dirty using said sequence number.

13. The apparatus of claim 12 , comprising:

a file system;

a flash abstraction layer communicatively coupled to said file system;

a flash media driver communicatively coupled to said flash abstraction layer; and

said flash memory communicatively coupled to said flash media driver.

14. The apparatus of claim 12 , said flash management module comprising a flash abstraction layer, said flash abstraction layer having a flash abstraction layer module to manage read operations and write operations for said flash memory.

15. The apparatus of claim 12 , said flash management module comprising a flash abstraction layer, said flash abstraction layer having a sector manager to manage free sectors and dirty sectors for said flash memory.

16. The apparatus of claim 12 , said flash management module comprising a flash abstraction layer, said flash abstraction layer having a compactor module to recycle dirty sectors into free sectors.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →