IP Library Granted Patent US 11,249,900
Granted Patent B2
US 11,249,900 · App. 16/174,249 · Granted Feb 15, 2022

Efficiently purging non-active blocks in NVM regions using virtblock arrays

Inventors: Xavier Deguillard (Mountain View, CA); Ishan Banerjee (Santa Clara, CA); Julien Freche (Mountain View, CA); Kiran Tati (Milpitas, CA); Preeti Agarwal (San Jose, CA); Rajesh Venkatasubramanian (San Jose, CA)
Assignee: VMWARE, INC.
G06F12/0253G06F12/0804G06F12/1009G06F2212/1044G06F2212/202G06F2212/657
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,249,900
App. No.
16/174,249
Granted
Feb 15, 2022
Kind
B2
Abstract

Techniques for efficiently purging non-active blocks in an NVM region of an NVM device using virtblocks are provided. In one set of embodiments, a host system can maintain, in the NVM device, a pointer entry (i.e., virtblock entry) for each allocated data block of the NVM region, where page table entries of the NVM region that refer to the allocated data block include pointers to the pointer entry, and where the pointer entry includes a pointer to the allocated data block. The host system can further determine that a subset of the allocated data blocks of the NVM region are non-active blocks and can purge the non-active blocks from the NVM device to a mass storage device, where the purging comprises updating the pointer entry for each non-active block to point to a storage location of the non-active block on the mass storage device.

Claims (49)

1. A method for purging non-active blocks in a non-volatile random access memory (NVM) region of an NVM device, the method comprising:

maintaining, by a host system in the NVM device, a pointer entry for each allocated data block of the NVM region, wherein page table entries of the NVM region that refer to said each allocated data block include pointers to the pointer entry, and wherein the pointer entry includes a pointer to said each allocated data block;

determining, by the host system, that a subset of allocated data blocks of the NVM region are non-active blocks that are not referred to by a running point of the NVM region; and

purging, by the host system, the non-active blocks from the NVM device to a mass storage device, the purging comprising updating the pointer entry for each non-active block to point to a storage location of said each non-active block on the mass storage device.

2. The method of claim 1 wherein the page table entries that include pointers to the pointer entry are page table entries of a snapshot of the NVM region or the running point of the NVM region.

3. The method of claim 1 wherein the non-active blocks are solely referred to by one or more snapshots of the NVM region.

4. The method of claim 1 wherein the pointer entries are organized into one or more pointer arrays, each pointer array corresponding to a snapshot of the NVM region or the running point of the NVM region.

5. The method of claim 4 wherein the size of each pointer array is the number of data blocks owned by said each pointer array's corresponding snapshot or running point.

6. The method of claim 1 wherein determining that the subset of the allocated data blocks of the NVM region are non-active blocks comprises:

traversing a logical address space of the NVM region; and

for each address offset of the logical address space:

determining whether a page table associated with a snapshot of the NVM region points to a valid data block at the address offset; and

if the page table associated with the snapshot does point to a valid data block at the address offset, determining whether a page table associated with the running point also points to the same valid data block at the address offset.

7. The method of claim 6 wherein if the page table associated with the running point also points to the same valid data block at the address offset, the data block is an active block, and

wherein if the page table associated with the running point does not point to the same valid data block at the address offset, the data block is a non-active block.

8. A non-transitory computer readable storage medium having stored thereon program code executable by a host system, the program code embodying a method for purging non-active blocks in a non-volatile random access memory (NVM) region of an NVM device, the method comprising:

maintaining, in the NVM device, a pointer entry for each allocated data block of the NVM region, wherein page table entries of the NVM region that refer to said each allocated data block include pointers to the pointer entry, and wherein the pointer entry includes a pointer to said each allocated data block;

determining that a subset of allocated data blocks of the NVM region are non-active blocks that are not referred to by a running point of the NVM region; and

purging the non-active blocks from the NVM device to a mass storage device, the purging comprising updating the pointer entry for each non-active block to point to a storage location of said each non-active block on the mass storage device.

9. The non-transitory computer readable storage medium of claim 8 wherein the page table entries that include pointers to the pointer entry are page table entries of a snapshot of the NVM region or the running point of the NVM region.

10. The non-transitory computer readable storage medium of claim 8 wherein the non-active blocks are solely referred to by one or more snapshots of the NVM region.

11. The non-transitory computer readable storage medium of claim 8 wherein the pointer entries are organized into one or more pointer arrays, each pointer array corresponding to a snapshot of the NVM region or the running point of the NVM region.

12. The non-transitory computer readable storage medium of claim 11 wherein the size of each pointer array is the number of data blocks owned by said each pointer array's corresponding snapshot or running point.

13. The non-transitory computer readable storage medium of claim 8 wherein determining that the subset of the allocated data blocks of the NVM region are non-active blocks comprises:

traversing a logical address space of the NVM region; and

for each address offset of the logical address space:

determining whether a page table associated with a snapshot of the NVM region points to a valid data block at the address offset; and

if the page table associated with the snapshot does point to a valid data block at the address offset, determining whether a page table associated with the running point also points to the same valid data block at the address offset.

14. The non-transitory computer readable storage medium of claim 13 wherein if the page table associated with the running point also points to the same valid data block at the address offset, the data block is an active block, and

wherein if the page table associated with the running point does not point to the same valid data block at the address offset, the data block is a non-active block.

15. A host system comprising:

a non-volatile random access memory (NVM) device;

a mass storage device;

a processor; and

a non-transitory computer readable medium having stored thereon program code that, when executed, causes the processor to:

maintain, in the NVM device, a pointer entry for each allocated data block of an NVM region, wherein page table entries of the NVM region that refer to said each allocated data block include pointers to the pointer entry, and wherein the pointer entry includes a pointer to said each allocated data block;

determine that a subset of allocated data blocks of the NVM region are non-active blocks that are not referred to by a running point of the NVM region; and

purge the non-active blocks from the NVM device to the mass storage device, the purging comprising updating the pointer entry for each non-active block to point to a storage location of said each non-active block on the mass storage device.

16. The host system of claim 15 wherein the page table entries that include pointers to the pointer entry are page table entries of a snapshot of the NVM region or the running point of the NVM region.

17. The host system of claim 15 wherein the non-active blocks are solely referred to by one or more snapshots of the NVM region.

18. The host system of claim 15 wherein the pointer entries are organized into one or more pointer arrays, each pointer array corresponding to a snapshot of the NVM region or the running point of the NVM region.

19. The host system of claim 18 wherein the size of each pointer array is the number of data blocks owned by said each pointer array's corresponding snapshot or running point.

20. The host system of claim 15 wherein determining that the subset of the allocated data blocks of the NVM region are non-active blocks comprises:

traversing a logical address space of the NVM region; and

for each address offset of the logical address space:

determining whether a page table associated with a snapshot of the NVM region points to a valid data block at the address offset; and

if the page table associated with the snapshot does point to a valid data block at the address offset, determining whether a page table associated with the running point also points to the same valid data block at the address offset.

21. The host system of claim 20 wherein if the page table associated with the running point also points to the same valid data block at the address offset, the data block is an active block, and

wherein if the page table associated with the running point does not point to the same valid data block at the address offset, the data block is a non-active block.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2018
From: DEGUILLARD, XAVIER; BANERJEE, ISHAN; FRECHE, JULIEN; TATI, KIRAN; AGARWAL, PREETI; VENKATASUBRAMANIAN, RAJESH
To: VMWARE, INC.
Reel/Frame 047345/0462 →
Continuity (1)
Related Publication 20200133842A1 · Apr 30, 2020