IP Library Granted Patent US 11,056,192
Granted Patent B2
US 11,056,192 · App. 16/229,609 · Granted Jul 6, 2021

Monotonic counters in memories

Inventors: Antonino Mondello (Messina, IT); Francesco Tomaiuolo (Acireale, IT); Carmelo Condemi (San Giovanni la Punta, IT); Tommaso Zerilli (Mascalucia, IT)
Assignee: Micron Technology, Inc.
G11C16/105G06F11/08G11C16/16G11C16/3436H03K21/403G06F2212/202
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 11,056,192
App. No.
16/229,609
Granted
Jul 6, 2021
Kind
B2
Abstract

An apparatus, such as a memory (e.g., a NAND memory), can have a controller, a volatile counter coupled to the controller, and a non-volatile memory array coupled to the controller. The controller can be configured to write information, other than a count of the counter, in the array each time the count of the counter has been incremented by a particular number of increments. Counts can be monotonic, non-volatile, and power-loss tolerant.

Claims (91)

1. An apparatus, comprising:

a controller;

a volatile counter coupled to the controller; and

a non-volatile memory array coupled to the controller;

wherein the controller is configured to write information, other than a count of the counter, in the array each time the count of the counter has been incremented by a particular number of increments; and

wherein the controller is configured to, at a respective power up of the apparatus:

compute an initialization count by multiplying a quantity of writes of the information up to the power up by the particular number of increments; and

initialize the counter with the initialization count.

2. The apparatus of claim 1 , wherein the controller is configured to

write the information to a respective segment of a quantity of segments of the array during each respective write; and

determine the quantity of writes of the information by counting the segments containing the information.

3. The apparatus of claim 1 , wherein the particular number of increments is greater than one.

4. The apparatus of claim 1 , wherein the controller is configured to increment the count in response to each secure command that is received by the apparatus.

5. The apparatus of claim 4 , wherein the controller is configured to use the count to determine a freshness of the secure command.

6. The apparatus of claim 1 , wherein the non-volatile memory array is a NAND memory array.

7. An apparatus, comprising:

a controller;

a volatile counter coupled to the controller; and

a non-volatile memory array coupled to the controller;

wherein the controller is configured to write information, other than a count of the counter, in the array each time the count of the counter has been incremented by a particular number of increments; and

wherein the array comprises a block comprising:

a plurality of groups of first segments, each respective first segment configured to store the information written during a respective write as respective first information; and

a plurality of second segments, each respective second segment pointing to a respective group of the first segments and configured to store second information to indicate that at least one of the first segments of the respective group of first segments is available to store the respective first information.

8. The apparatus of claim 7 , wherein the controller is configured to write the second information to a respective second segment in response to determining that a respective group of first segments pointed to by a preceding second segment is full.

9. The apparatus of claim 8 , wherein

the second information comprises a first bit pattern; and

the controller is configured to write a second bit pattern to the preceding second segment in response to determining that the respective group of first segments pointed to by the preceding second segment is full.

10. The apparatus of claim 7 , wherein the controller is configured to

locate a second segment to which the second information is last written; and

write the respective first information in a first segment in the respective group of first segments to which the located second segment points.

11. The apparatus of claim 7 , wherein the controller is configured to

determine, during a power up of the apparatus, that a power loss occurred while the second information is written to a respective second segment pointing to a respective group of first segments in response to determining, during the power up of the apparatus, that the respective second segment contains corrupted information;

replace the corrupted information with third information; and

program the second information to a second segment following the respective second segment with the third information and pointing to a respective group of first segments following the respective group of first segments pointed to by the respective second segment that contained the corrupted information.

12. The apparatus of claim 7 , wherein each of the groups of first segments comprises a page of memory cells of the block of memory cells of the non-volatile memory array.

13. An apparatus, comprising:

a controller;

a volatile counter coupled to the controller; and

a non-volatile memory array coupled to the controller;

wherein the controller is configured to write information, other than a count of the counter, in the array each time the count of the counter has been incremented by a particular number of increments;

wherein the memory array comprises a quantity of segments, each respective segment initially storing a first bit pattern; and

wherein the controller is further configured to:

write a second bit pattern in a particular segment of the quantity of segments initially storing the first bit pattern to indicate that the controller is to write the information to the particular segment a next time the count of the counter has been incremented by the particular quantity of increments; and

write the information to the particular segment by writing a third bit pattern to the particular segment storing the second bit pattern the next time the count of the counter has been incremented by the particular quantity of increments.

14. The apparatus of claim 13 , wherein

the first bit pattern comprises a plurality of bits having a first bit value;

the controller is configured to:

write the second bit pattern in the particular segment by writing a portion the plurality of the bits having the first bit value to a second bit value so that the second bit pattern comprises a plurality of bits having the first bit value and a plurality of bits having the second bit value; and

write the information to the particular segment by writing the third bit pattern to the particular segment having the second bit pattern comprises the controller being configured to write the plurality of bits having the first bit value in the second bit pattern to the second bit value.

15. An apparatus, comprising:

a controller;

a volatile counter coupled to the controller; and

first and second blocks of non-volatile memory cells coupled to the controller;

wherein

one of the first and second blocks is configured to have an active status while the other of the first and second blocks has an inactive status;

each of the first and second blocks comprises a first region configured to store a first quantity of count-milestone records and a second region configured to store a second quantity of block-milestone records;

the controller is configured to:

swap the respective statuses of the blocks in response to the first region of the block having the active status having the quantity of count-milestone records

write the block-milestone record in the second region of the block that becomes the block having the active status in response to the swap; and

write the count-milestone record in the first region of the block having the active status each time the count of the counter has been incremented by a particular number of increments.

16. The apparatus of claim 15 , wherein the controller is configured to, at a respective power up of the apparatus:

determine a first count contribution by multiplying the particular number of increments by a number of the count-milestone records in the first region of the block having the active status at the respective power up of the apparatus;

determine a second count contribution by multiplying the particular number of increments by the first quantity of the count-milestone records and by a number of the block-milestone records in the second region of the block having the active status at the respective power up of the apparatus;

determine an initialization count by adding the first count contribution to the second count contribution; and

set the volatile counter to the initialization count.

17. The apparatus of claim 15 , wherein the controller is configured to transfer an additional block-milestone record previously written, as a result of a previous swap, in the second region of the block that becomes the block having the inactive status to the second region of the block that becomes the block having the active status.

18. The apparatus of claim 15 , wherein the controller is configured to, in response to the swap:

write a block-active pattern in the second region of the block that becomes the block having the active status that indicates that the block that becomes the block having the active status is active.

19. The apparatus of claim 15 , wherein the controller is configured to

write a block-swap-ongoing pattern indicative of a swap in progress in the second region of the block that becomes the block having the inactive status;

determine, during a power up of the apparatus, that a power loss occurred during the swap in response to detecting, during the power up, the block-swap-ongoing pattern; and

erase the block that becomes the block having the active status in response to determining that the power loss occurred.

20. A method, comprising:

counting events with a volatile counter by incrementing a count of the volatile counter in response to each event;

writing a respective count-milestone record to a non-volatile memory array each respective time the count is incremented by a particular number of times; and

determining a respective initialization count of the counter at each respective power up of the counter to be the particular number of times multiplied by a number of count-milestone records written to the non-volatile memory up to the respective power up.

21. The method of claim 20 , wherein writing the respective count-milestone record to the non-volatile memory array each respective time the count is incremented by the particular number of times comprises transforming a count-milestone-start sequence previously written to the non-volatile memory array to the respective count-milestone record.

22. The method of claim 21 , wherein

the count-milestone-start sequence comprises first and second data values; and

transforming the count-milestone-start sequence to the respective count-milestone record comprises writing additional first data values to the count-milestone-start sequence to transform the second data values to the first data values.

23. The method of claim 21 , wherein the count-milestone-start sequence is written to the non-volatile memory array in response to a first event after a power up of the volatile counter.

24. The method of claim 20 , further comprising:

writing a count-milestone-start sequence to the non-volatile memory array after writing the respective count-milestone record to a non-volatile memory array;

determining, during the respective power up, that a power loss occurred in response to determining that the non-volatile memory array has the count-milestone-start sequence;

replacing the count-milestone-start sequence with an additional count-milestone record; and

writing an additional count-milestone-start sequence to the non-volatile memory array after writing the additional count-milestone record.

25. The method of claim 20 , further comprising locating a pointer active sequence in the non-volatile memory array, wherein writing the respective count-milestone record to the non-volatile memory array comprises writing the respective count-milestone record to a page of the non-volatile memory pointed to by a pointer corresponding to the pointer active sequence.

26. The method of claim 25 , further comprising:

programming the pointer active sequence to a pointer end sequence in response to the page becoming filled with count-milestone records;

writing an additional pointer active sequence in the non-volatile memory array that points to an additional page in the non-volatile memory array; and

writing an additional count-milestone record to the additional page in response to the count being incremented by the particular number of times.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 15, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 051026/0568 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050718/0764 →
SUPPLEMENT NO. 11 TO PATENT SECURITY AGREEMENT Recorded Jan 16, 2019
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 048082/0860 →
SUPPLEMENT NO. 2 TO PATENT SECURITY AGREEMENT Recorded Jan 16, 2019
From: MICRON TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048082/0889 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2018
From: MONDELLO, ANTONINO; TOMAIUOLO, FRANCESCO; CONDEMI, CARMELO; ZERILLI, TOMMASO
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047978/0105 →