.

Pharmaceutical Business Intelligence

  • Anticipate P&T budget requirements
  • Evaluate market entry opportunities
  • Find generic sources and suppliers
  • Predict branded drug patent expiration

► Plans and Pricing

Upgrade to enjoy subscriber-only features like email alerts and data export. See the Plans and Pricing

DrugPatentWatch Database Preview

Details for Patent: 8,886,990

« Back to Dashboard

Details for Patent: 8,886,990

Title:Block management schemes in hybrid SLC/MLC memory
Abstract: A method for data storage includes storing data in a memory including multiple analog memory cells arranged in blocks. A first subset of the blocks is defined for storing first data with a first storage density, and a second subset of the blocks is defined for storing second data with a second storage density, larger than the first storage density. In each of the first and second subsets, one or more blocks are allocated to serve as spare blocks and blocks that become faulty are replaced with the spare blocks. Upon detecting that a number of the spare blocks in the second subset has decreased below a predefined threshold, the data is copied from at least one block in the second subset to the first subset, and the at least one block is added to the spare blocks of the second subset.
Inventor(s): Meir; Avraham (Rishon Le-Zion, IL), Paley; Alexander (Kfar-Saba, IL), Sade; Asif (Moshav Maslul, IL)
Assignee: Apple Inc. (Cupertino, CA)
Filing Date:Jan 22, 2012
Application Number:13/355,536
Claims:1. A method for data storage, comprising: storing data in a memory comprising multiple memory cells arranged in blocks, wherein a first subset of the blocks is defined for storing first data with a first storage density, and a second subset of the blocks is defined for storing second data with a second storage density, larger than the first storage density; allocating one or more blocks in each of the first and second subsets of the blocks to serve as spare blocks, wherein a total number of the spare blocks in the first subset of the blocks is greater than a total number of the spare blocks in the second subset of the blocks; replacing blocks that become faulty with the spare blocks; upon detecting that the total number of the spare blocks in the second subset has decreased below a predefined threshold, copying data from at least one block in the second subset to at least one block in the first subset; and adding the at least one block in the second subset to the spare blocks in the second subset.

2. The method according to claim 1, wherein storing the data comprises programming the memory cells in the first subset using a first number of programming levels per memory cell, and programming the memory cells in the second subset using a second number of programming levels per memory cell, larger than the first number.

3. The method according to claim 1, wherein the first storage density comprises one bit per memory cell.

4. The method according to claim 1, wherein copying the data and adding the at least one block in the second subset comprise maintaining the total number of the spare blocks in the second subset at no more than a predefined upper bound.

5. The method according to claim 4, wherein the upper bound comprises a single spare block.

6. The method according to claim 1, wherein storing the data comprises carrying out in the first subset a block compaction process that uses the spare blocks in the first subset as over-provisioning overhead.

7. The method according to claim 1, further comprising selecting the at least one block in the second subset according to a predefined selection criterion.

8. The method according to claim 7, wherein the selection criterion depends on an amount of valid data in the at least one block in the second subset.

9. The method according to claim 7, wherein the selection criterion depends on a number of fragments into which valid data in the at least one block in the second subset is fragmented.

10. The method according to claim 7, wherein the selection criterion depends on a time at which data in the at least one block in the second subset was most recently invalidated.

11. A data storage apparatus, comprising: an interface configured to communicate with a memory including multiple memory cells arranged in blocks, wherein a first subset of the blocks is defined for storing first data with a first storage density, and a second subset of the blocks is defined for storing second data with a second storage density, larger than the first storage density; and a processor configured to: allocate in each of the first and second subsets one or more of the blocks to serve as spare blocks, wherein a total number of the spare blocks in the first subset is greater than a total number of the spare blocks in the second subset; replace blocks that become faulty with the spare blocks; copy data from at least one block in the second subset to at least one block the first subset upon detecting that the total number of the spare blocks in the second subset has decreased below a predefined threshold; and add the at least one block in the second subset to the spare blocks in the second subset.

12. The apparatus according to claim 11, wherein the processor is further configured to program the memory cells in the first subset using a first number of programming levels per memory cell, and to program the memory cells in the second subset using a second number of programming levels per memory cell, larger than the first number.

13. The apparatus according to claim 11, wherein the first storage density comprises one bit per memory cell.

14. The apparatus according to claim 11, wherein the processor is further configured to maintain the total number of the spare blocks in the second subset at no more than a predefined upper bound.

15. The apparatus according to claim 14, wherein the upper bound comprises a single spare block.

16. The apparatus according to claim 11, wherein the processor is further configured to carry out in the first subset a block compaction process that uses the spare blocks in the first subset as over-provisioning overhead.

17. The apparatus according to claim 11, wherein the processor is further configured to select the at least one block in the second subset according to a predefined selection criterion.

18. The apparatus according to claim 17, wherein the selection criterion depends on an amount of valid data in the at least one block in the second subset.

19. The apparatus according to claim 17, wherein the selection criterion depends on a number of fragments into which valid data in the at least one block in the second subset is fragmented.

20. The apparatus according to claim 17, wherein the selection criterion depends on a time at which data in the at least one block in the second subset was most recently invalidated.

21. A method for data storage, comprising: running a compaction process that includes: selecting one or more blocks in a memory containing both valid data and invalid data, wherein the memory includes multiple blocks and wherein the invalid data includes data for which newer values have been programmed in other memory locations; copying the valid data from the one or more selected blocks to other storage locations; and erasing the one or more selected blocks; within a given area of the memory, identifying a block containing a least-recently programmed valid data among the valid data stored in the given area; and selecting the identified block as a candidate for the compaction process.

22. The method according to claim 21, wherein selection of the identified block is performed irrespective of an amount of valid data in the identified block.

23. A data storage apparatus, comprising: an interface configured to communicate with a memory that includes multiple blocks; and a processor configured to: run a compaction process, wherein to run the compaction process, the processor is further configured to: select one or more of blocks of the multiple blocks containing both valid data and invalid data, wherein the invalid data includes data for which newer values have been programmed in other memory locations; copy the valid data from the one or more selected blocks to other storage locations; and erase the one or more selected blocks; identify, within a given area of the memory, a block containing a least-recently programmed valid data among the valid data stored in the given area; and select the identified block as a candidate for the compaction process.

24. The apparatus according to claim 23, wherein to select the identified block as the candidate for the compaction process, the processor is further configured to select the identified block irrespective of an amount of valid data in the identified block.

25. A method for data storage, comprising: running a compaction process that includes: selecting, in a first area of a memory, one or more blocks containing both valid data and invalid data, wherein the memory includes multiple blocks divided into the first area and a second area, and wherein the invalid data includes data for which newer values have been programmed in other memory locations; copying the valid data from the one or more selected blocks to other storage locations in the memory; and erasing the one or more selected blocks; and selecting, in the first area, a block as a candidate for the compaction process dependent upon a number of write operations in the second area that would be incurred by compaction of the candidate block.

26. The method according to claim 25, wherein data is stored in the second area in accordance with a logical-to-physical address mapping that assigns physical storage locations to respective logical mapping units, each comprising at least one block, and wherein selecting the candidate block further comprises choosing the candidate block based on a number of the logical mapping units to which valid data in the candidate block belong.

27. The method according to claim 25, wherein selecting the candidate block comprises assigning to at least some of the blocks in the first area respective scores that are inversely related to respective numbers of the write operations in the second area that would be incurred by compaction of a given block of the blocks in the first area, and giving high priority in choosing the candidate block for the compaction process to blocks having high scores.

28. A data storage apparatus, comprising: an interface configured to communicate with a memory that includes multiple blocks divided into a first area and a second area; and a processor configured to: run a compaction process, wherein to run the compaction process, the processor is further configured to: select, in the first area, one or more blocks containing both valid data and invalid data, wherein the invalid data includes data for which newer values have been programmed in other memory locations; copy the valid data from the one or more selected blocks to other storage locations in the memory; and erase the one or more selected blocks; and select, in the first area, a block as a candidate for the compaction process dependent upon a number of write operations in the second area that would be incurred by compaction of the candidate block.

29. The apparatus according to claim 28, wherein the processor is further configured to: store data in the second area in accordance with a logical-to-physical address mapping that assigns physical storage locations to respective logical mapping units, each comprising at least one block; and select the candidate block based on a number of the logical mapping units to which valid data in the candidate block belong.

30. The apparatus according to claim 28, wherein the processor is further configured to assign, to the blocks in the first area, respective scores that are inversely related to respective numbers of the write operations in the second area that would be incurred by compaction of a given block of the blocks in the first area, and to give high priority in choosing the candidate block for the compaction process to blocks having high scores.
« Back to Dashboard

For more information try a trial or see the database preview and plans and pricing

Drugs may be covered by multiple patents or regulatory protections. All trademarks and applicant names are the property of their respective owners or licensors. Although great care is taken in the proper and correct provision of this service, thinkBiotech LLC does not accept any responsibility for possible consequences of errors or omissions in the provided data. The data presented herein is for information purposes only. There is no warranty that the data contained herein is error free. thinkBiotech performs no independent verifification of facts as provided by public sources nor are attempts made to provide legal or investing advice. Any reliance on data provided herein is done solely at the discretion of the user. Users of this service are advised to seek professional advice and independent confirmation before considering acting on any of the provided information. thinkBiotech LLC reserves the right to amend, extend or withdraw any part or all of the offered service without notice.

`abc