IP Library › Granted Patent US 10,599,485
Granted Patent B2
US 10,599,485 · App. 16/003,568 · Granted Mar 24, 2020

Index structure using atomic multiword update operations

Inventors: Justin J Levandoski (Seattle, WA); Umar Farooq Minhas (Seattle, WA); Per-Ake Larson (Toronto, CA); Tianzheng Wang (Redmond, WA); Joy James Prabhu Arulraj (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/52G06F9/30043G06F9/30087G06F12/0238G06F12/0804G06F16/2246G06F2209/521G06F2212/7205
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 10,599,485
App. No.
16/003,568
Granted
Mar 24, 2020
Kind
B2
Abstract

A computer implemented method includes receiving multiple requests to update a data structure stored in non-volatile memory (NVM) and applying an atomic multiword update to the data structure to arbitrate access to the NVM. In a further embodiment, a computer implemented method includes allocating a descriptor for a persistent multi-word compare-and-swap operation (PMwCAS), specifying targeted addresses of words to be modified, returning an error if one of the targeted addresses contains a value not equal to a corresponding compare value, executing the operation atomically if the targeted addresses contain values that match the corresponding compare values, and aborting the operation responsive to the returned error.

Claims (21)

1. A computer implemented method comprising:

receiving multiple requests to update a data structure stored in non-volatile memory (NVM); and

applying an atomic multiword update to the data structure to arbitrate access to the NVM, wherein the atomic multiword update tracks metadata for an update operation in a descriptor table that includes a dirty bit used to signify that a value is volatile and should be flushed by a reader and unset prior to reading the value.

2. The method of claim 1 wherein the data structure comprises a lock free B+ tree.

3. The method of claim 2 wherein the B+ tree includes internal nodes that store search keys and pointers to child nodes and leaf nodes that store keys and either record pointer or actual payload values.

4. The method of claim 2 wherein the B+ tree includes a root pointer to a root node to an index, and a global index epoch that is updated responsive to a failure.

5. The method of claim 1 wherein the atomic multiword update comprises a persistent multi-word compare-and-swap (PMwCAS) operation.

6. The method of claim 5 and further comprising recovering the data structure following a failure by rolling back or forward PMwCAS operations that were in-flight during the failure.

7. The method of claim 1 wherein the descriptor table metadata includes an update operation status, multiple target word addresses, expected old values, and new values.

8. The method of claim 7 wherein the descriptor table further includes a memory recycling policy value.

9. A computer-readable storage device having instructions for execution by computing resources to perform operations comprising:

receiving multiple requests to update a data structure stored in non-volatile memory (NVM); and

applying an atomic multiword update to the data structure to arbitrate access to the NVM, wherein the atomic multiword update tracks metadata for an update operation in a descriptor table that includes a dirty bit used to signify that a value is volatile and should be flushed by a reader and unset prior to reading the value.

10. The computer-readable storage device of claim 9 wherein the data structure comprises a lock free B+ tree that includes internal nodes that store search keys and pointers to child nodes, leaf nodes that store keys and either record pointer or actual payload values, a root pointer to a root node to an index, and a global index epoch that is updated responsive to a failure.

11. The computer-readable storage device of claim 9 wherein the atomic multiword update comprises a persistent multi-word compare-and-swap (PMwCAS) operation.

12. The computer-readable storage device of claim 11 and further comprising recovering the data structure following a failure by rolling back or forward PMwCAS operations that were in-flight during the failure.

13. The computer-readable storage device of claim 9 wherein the descriptor table metadata includes an update operation status, multiple target word addresses, expected old values, and new values.

14. A device comprising: a processor; and a memory device coupled to the processor and having a program stored thereon for execution by the processor to perform operations comprising: receiving multiple requests to update a data structure stored in non-volatile memory (NVM); and applying an atomic multiword update to the data structure to arbitrate access to the NVM, wherein the atomic multiword update tracks metadata for an update operation in a descriptor table that includes a dirty bit used to signify that a value is volatile and should be flushed by a reader and unset prior to reading the value.

15. The device of claim 14 wherein the data structure comprises a lock free B+ tree that includes internal nodes that store search keys and pointers to child nodes, leaf nodes that store keys and either record pointer or actual payload values, a root pointer to a root node to an index, and a global index epoch that is updated responsive to a failure.

16. The device of claim 14 wherein the atomic multiword update comprises a persistent multi-word compare-and-swap (PMwCAS) operation and wherein the operations further comprise recovering the data structure following a failure by rolling back or forward PMwCAS operations that were in-flight during the failure.

17. The device of claim 14 wherein the descriptor table metadata includes an update operation status, multiple target word addresses, expected old values, and new values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2018
From: LEVANDOSKI, JUSTIN J; MINHAS, UMAR FAROOQ; LARSON, PER-AKE; WANG, TIANZHENG; ARULRAJ, JOY JAMES PRABHU
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 046236/0703 →
Continuity (2)
Provisional Application 62624542 · Jan 31, 2018
Related Publication 20190235933A1 · Aug 1, 2019
Cited By (3)
US 12,222,922 US 12,399,880 US 12,501,225