IP Library Granted Patent US 9,501,392
Granted Patent B1
US 9,501,392 · App. 14/282,204 · Granted Nov 22, 2016

Management of a non-volatile memory module

Inventor: Hanan Weingarten (Herzelia, IL)
Assignee: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
G06F12/023G06F2212/304
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,501,392
App. No.
14/282,204
Granted
Nov 22, 2016
Kind
B1
Abstract

A method of managing a non-volatile memory device, the method comprising receiving data sectors; wherein each data sector belongs to a memory space subset out of multiple memory space subsets; wherein the multiple memory space subsets comprise a plurality of logical memory blocks; wherein the memory space is partitioned to the multiple memory space subsets based upon expected or monitored memory access patterns; writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector; wherein the data block belongs to a buffer of the non-volatile memory device; maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; and merging, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer.

Claims (40)

1. A method for memory management, the method comprises:

allocating, for each buffer (Bi) out of multiple buffers of a buffer set of a non-volatile memory device, a number (Ni) of logical memory blocks, wherein the number of logical blocks allocated to each buffer is responsive to (a) a sum (Pi) of temperatures of logical memory blocks allocated to the buffer, (b) a relative size (Ri) of the buffer, and (c) a number (Nnac) of logical memory blocks of the non-volatile memory device that are not accessible to a user;

receiving data sectors; wherein each data sector belongs to a memory space subset out of multiple memory space subsets; wherein the memory space is partitioned to the multiple memory space subsets based upon temperatures of a plurality of logical memory blocks included in the multiple memory space subsets; wherein a temperature of a logical memory block represents an access frequency to the logical memory block;

writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector; wherein the data block belongs to the buffer set;

maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer set; and

merging, if a criterion is fulfilled and before a buffer of the buffer set becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer set.

2. The method according to claim 1 wherein the multiple buffers are associated with different temperature ranges.

3. The method according to claim 2 wherein different temperature ranges are non-overlapping.

4. The method according to claim 1 wherein the allocating of the logical memory blocks is responsive to a write amplification value associated with the non-volatile memory device.

5. The method according to claim 1 wherein the allocating of the logical memory blocks comprises selecting an allocation, out of a set of allocations of logical memory blocks to the multiple buffers that exhibits a lowest write amplification value.

6. The method according to claim 1 wherein Ni equals Nnac multiplied by a ratio between (a) a square root of (Pi*Ri), and (b) a sum, over all buffers of a square root of (Pi*Ri).

7. The method according to claim 1 , comprising allocating a new data block to a given memory space subset after a data block of the buffer set data that is associated to the given memory space subset becomes full.

8. The method according to claim 1 , comprising repeating, at different points of time, an allocating of logical memory blocks to the multiple memory space subsets.

9. A non-transitory computer readable medium that stores instructions that once executed by a memory controller cause the memory controller to:

allocate, for each buffer (Bi) out of multiple buffers of a buffer set of a non-volatile memory device, a number (Ni) of logical memory blocks, wherein the number of logical blocks allocated to each buffer is responsive to (a) a sum (Pi) of temperatures of logical memory blocks allocated to the buffer, (b) a relative size (Ri) of the buffer, and (c) a number (Nnac) of logical memory blocks of the non-volatile memory device that are not accessible to a user;

receive data sectors; wherein each data sector belongs to a memory space subset out of multiple memory space subsets; wherein the memory space is partitioned to the multiple memory space subsets based upon temperatures of a plurality of logical memory blocks included in the multiple memory space subsets; wherein a temperature of a logical memory block represents an access frequency to the logical memory block;

write each data sector into a data block that is allocated to a memory space subset that is associated with the data sector; wherein the data block belongs to the buffer set;

maintain a management data structure that comprises location metadata about a location of each data sector in the buffer set; and

merge, if a criterion is fulfilled and before a buffer of the buffer set becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer set.

10. The non-transitory computer readable medium according to claim 9 wherein the multiple buffers are associated with different temperature ranges.

11. The non-transitory computer readable medium according to claim 10 wherein different temperature ranges are non-overlapping.

12. The non-transitory computer readable medium according to claim 9 that stores instructions that once executed by the memory controller cause the memory controller to allocate the logical memory blocks in response to a write amplification value associated with the non-volatile memory device.

13. The non-transitory computer readable medium according to claim 9 that stores instructions that once executed by the memory controller cause the memory controller to allocate the logical memory blocks by selecting an allocation, out of a set of allocations of logical memory blocks to the multiple buffers that exhibits a lowest write amplification value.

14. The non-transitory computer readable medium according to claim 9 wherein Ni equals Nnac multiplied by a ratio between (a) a square root of (Pi*Ri), and (b) a sum, over all buffers of a square root of (Pi*Ri).

15. The non-transitory computer readable medium according to claim 9 , that stores instructions for allocating a new data block to a given memory space subset after a data block of the buffer set data that is associated to the given memory space subset becomes full.

16. The non-transitory computer readable medium according to claim 9 , that stores instructions for repeating, at different points of time, an allocating of logical memory blocks to the multiple memory space subsets.

17. A device comprising a memory controller and a non-volatile memory device;

wherein the memory controller is arranged to:

allocate, for each buffer (Bi) out of multiple buffers of a buffer set of a non-volatile memory device, a number (Ni) of logical memory blocks, wherein the number of logical blocks allocated to each buffer is responsive to (a) a sum (Pi) of temperatures of logical memory blocks allocated to the buffer, (b) a relative size (Ri) of the buffer, and (c) a number (Nnac) of logical memory blocks of the non-volatile memory device that are not accessible to a user;

receive data sectors; wherein each data sector belongs to a memory space subset out of multiple memory space subsets; wherein the memory space is partitioned to the multiple memory space subsets based upon temperatures of a plurality of logical memory blocks included in the multiple memory space subsets; wherein a temperature of a logical memory block represents an access frequency to the logical memory block;

write each data sector into a data block that is allocated to a memory space subset that is associated with the data sector; wherein the data block belongs to the buffer set;

maintain a management data structure that comprises location metadata about a location of each data sector in the buffer set; and

merge, if a criterion is fulfilled and before a buffer of the buffer set becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer set.

18. The device according to claim 17 wherein the multiple buffers are associated with different temperature ranges.

19. The device according to claim 18 wherein different temperature ranges are non-overlapping.

20. The device according to claim 17 wherein the memory controller is arranged to allocate the logical memory blocks in response to a write amplification value associated with the non-volatile memory device.

21. The device according to claim 17 wherein the memory controller is arranged to allocate the logical memory blocks by selecting an allocation, out of a set of allocations of logical memory blocks to the multiple buffers that exhibits a lowest write amplification value.

22. The device according to claim 17 wherein Ni equals Nnac multiplied by a ratio between (a) a square root of (Pi*Ri), and (b) a sum, over all buffers of a square root of (Pi*Ri).

23. The device according to claim 17 wherein the memory controller is arranged to allocate a new data block to a given memory space subset after a data block of the buffer set data that is associated to the given memory space subset becomes full.

24. The device according to claim 17 wherein the memory controller is arranged to repeat, at different points of time, an allocating of logical memory blocks to the multiple memory space subsets.

Assignments (9)
MERGER Recorded Mar 3, 2023
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED; BROADCOM INTERNATIONAL PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 062952/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2020
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
To: BROADCOM INTERNATIONAL PTE. LTD.
Reel/Frame 053771/0901 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
RELEASE OF SECURITY INTEREST Recorded Jan 11, 2017
From: KREOS CAPITAL IV (EXPERT FUND) LIMITED
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 041339/0921 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2016
From: DENSBITS TECHNOLOGIES LTD.
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 037622/0224 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2015
From: WEINGARTEN, HANAN
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 036998/0100 →
SECURITY INTEREST Recorded Mar 18, 2015
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 035222/0547 →
SECURITY INTEREST Recorded Jul 30, 2014
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 033444/0628 →
Continuity (3)
Continuation In Part 13859497 · Apr 9, 2013
Continuation In Part 13434083 · Mar 29, 2012
Provisional Application 61485397 · May 12, 2011