IP Library › Granted Patent US 9,841,917
Granted Patent B2
US 9,841,917 · App. 14/962,339 · Granted Dec 12, 2017

Systems and methods for configuring non-volatile memory

Inventors: Vadim Khmelnitsky (Foster City, CA); Daniel J. Post (Pacifica, CA); Nir Jacob Wakrat (Los Altos, CA); Matthew J. Byom (San Jose, CA); Kenneth L. Herman (San Jose, CA); Alexander C. Sanks (Menlo Park, CA)
Assignee: APPLE INC.
G06F3/064G06F3/0604G06F3/0685G06F12/0246G06F2212/7201G06F2212/7206
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 9,841,917
App. No.
14/962,339
Granted
Dec 12, 2017
Kind
B2
Abstract

Systems and methods are disclosed for configuring a non-volatile memory (“NVM”). In some embodiments, each block of the NVM can include a block table-of-contents (“TOC”), which can be encoded (e.g., run-length encoded) and dynamically-sized. Thus, as user data is being programmed to a block, the size of a block TOC can be concurrently recalculated and increased only if necessary. In some embodiments, the NVM interface can use a weave sequence stored in the context information and at least one weave sequence associated with each page of a block to determine whether to replay across the pages of the block after system boot-up.

Claims (39)

1. A system comprising:

a non-volatile memory (“NVM”) comprising a plurality of blocks, wherein each block comprises a block table-of-contents (“TOC”) and a plurality of data pages;

a bus controller operative to communicate with the NVM; and

control circuitry operative to:

receive at least one write command;

select a first block for programming user data associated with the at least one write command;

determine whether an end boundary of a plurality of data pages of the first block is within a pre-determined number of pages from a start boundary of the block TOC of the first block,

in response to determining that the end boundary of the plurality of data pages is within the pre-determined number of pages from the start boundary of the block TOC, determine the first block is full; and

in response to a determination that the first block is full:

select a second block for programming user data associated with the at least one write command, wherein the second block has been erased and contains no user data; and

program user data associated with the at least one write command in the second block.

2. The system of claim 1 , wherein the control circuitry is further operative to program a size of the block TOC to a last page of the block TOC.

3. The system of claim 1 , wherein the control circuitry is further operative to program a start weave sequence and end weave sequence to the block TOC.

4. The system of claim 3 , wherein the control circuitry is further operative to program the start weave sequence to a first page of the block TOC.

5. The system of claim 3 , wherein the control circuitry is further operative to program the end weave sequence to a last page of the block TOC.

6. The system of claim 3 , wherein the start weave sequence is associated with when user data was first programmed to the block.

7. The system of claim 3 , wherein the end weave sequence is associated with when user data was last programmed to the block.

8. The system of claim 1 , wherein the control circuitry is further operative to program at least one of a page type and version to the block TOC.

9. The system of claim 1 , wherein response to determining that the end boundary of the plurality of data pages is not within a pre-determined number of pages from the start boundary of the block TOC of the first block, the control circuitry is operative to continue programming user data associated with the at least one write command to the first block.

10. The system of claim 9 , wherein the control circuitry is operative to:

increase the size of the block TOC in the first block; and

decrease a total size of the data pages of the block by a corresponding amount.

11. A method for programming user data in a non-volatile memory (“NVM”), the NVM comprising a plurality of blocks, a bus controller, and control circuitry, the method comprising:

communicating with the NVM;

receiving at least one write command;

determining whether an end boundary of a plurality of data pages of a first block is within a pre-determined number of pages from a start boundary of a block table of contents (“TOC”) of the first block;

in response to determining that the end boundary of the plurality of data pages is within a pre-determined number of pages from a start boundary of the block TOC, determining that the first block is full; and

in response to a determination that the first block is full:

selecting a second block for programming user data associated with the at least one write command, wherein the second block has been erased and contains no user data; and

programming user data associated with the at least one write command in the second block.

12. The method of claim 11 , further comprising programming a size of the block TOC to a last page of the block TOC.

13. The method of claim 11 , further comprising programming a start weave sequence and end weave sequence to the block TOC.

14. The method of claim 11 , further comprising programming a start weave sequence to a first page of the block TOC.

15. The method of claim 13 , further comprising programming the end weave sequence to a last page of the block TOC.

16. The method of claim 13 , wherein the start weave sequence is associated with when user data was first programmed to the block.

17. The method of claim 13 , wherein the end weave sequence is associated with when user data was last programmed to the block.

18. The method of claim 11 , further comprising programming at least one of a page type and version to the block.

19. The method of claim 11 , further comprising continuing to program user data associated with the at least one write command to the first block in response to determining that the end boundary of a plurality of pages is not within a pre-determined number of pages from the start boundary of the block TOC.

20. The method of claim 11 , wherein the control circuitry increases the size of the block TOC in the first block and decreases a total size of the data pages of the block by a corresponding amount.

Continuity (2)
Division 13235019 · Sep 16, 2011
Related Publication 20160092110A1 · Mar 31, 2016