CPC G11C 16/10 (2013.01) [G06F 3/0604 (2013.01); G06F 3/064 (2013.01); G06F 3/0619 (2013.01); G06F 3/0643 (2013.01); G06F 3/0659 (2013.01); G06F 3/0679 (2013.01); G06F 11/079 (2013.01); G06F 11/0727 (2013.01); G06F 11/0778 (2013.01); G11C 16/0483 (2013.01)] | 20 Claims |
1. A method for managing flash memory, the method comprising:
receiving a first program request comprising first host data to be written to the flash memory, the flash memory comprising a number of storage units, a first storage unit of the number of storage units comprising a first set of storage sub-units, and a second storage unit of the number of storage units comprising a second set of storage sub-units;
determining that the first host data can be written to the first storage unit with at least a portion of the first set of storage sub-units of the first storage unit left over;
in response to determining that the first host data can be written to the first storage unit with at least the portion of the first set of storage sub-units left over, generating a first program data unit, the first program data unit comprising the first host data and first log data describing the flash memory;
programming the first program data unit to the first storage unit of the flash memory;
receiving a second program request comprising second host data to be written to the flash memory;
determining that the second host data cannot be written to the second storage unit with at least a portion of the second set of storage sub-units left over; and
in response to determining that the second host data cannot be written to the second storage unit with at least the portion of the second set of storage sub-units left over, programming the second host data to the second storage unit of the flash memory.
|