IP Library Granted Patent US 12,079,209
Granted Patent B1
US 12,079,209 · App. 17/247,044 · Granted Sep 3, 2024

Checkpoints management by a memory controller

Inventors: Shmuel Dashevsky (Ramat gan, IL); Moshe Twitto (Givat Shemuel, IL); Yuval Rochman (Ramat Gan, IL); Iddo Naiss (Neve Monoson, IL)
Assignee: PLIOPS LTD.
G06F16/244G06F16/219G06F16/24573
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 12,079,209
App. No.
17/247,044
Granted
Sep 3, 2024
Kind
B1
Abstract

A method for managing multiple checkpoints stored in a memory unit, the method may include (a) managing a checkpoint tree, by a memory controller; the checkpoint tree comprises reference nodes and active nodes; wherein a reference node of the reference nodes holds a snapshot of a parent checkpoint taken at the time that a child checkpoint was created from the parent checkpoint; wherein an active node of the active nodes that is associated with the parent node stores changes to the parent checkpoint introduced after a creation of the active node; and wherein the parent checkpoint and the child checkpoint belong to multiple checkpoints stored in the checkpoint tree; (b) receiving access requests to access key value (KV) pairs of one or more checkpoints of the multiple checkpoints; and (c) responding to the access requests based, at least in part, on the checkpoint tree.

Claims (55)

1. A method for managing multiple checkpoints stored in a solid state drive (SSD) memory unit, the method comprises:

managing a checkpoint tree, by an SSD controller;

the checkpoint tree comprises reference nodes and active nodes; wherein the active nodes are leaf nodes of the checkpoint tree and the active nodes are inner nodes of the checkpoint tree;

wherein a reference node of the reference nodes holds a snapshot of a parent checkpoint taken at the time that a child checkpoint was created from the parent checkpoint;

wherein an active node of the active nodes that is associated with the parent node stores changes to the parent checkpoint introduced after a creation of the active node; and

wherein the parent checkpoint and the child checkpoint belong to multiple checkpoints stored in the checkpoint tree;

receiving access requests to access key value (KV) pairs of one or more checkpoints of the multiple checkpoints;

responding to the access requests based, at least in part, on the checkpoint tree;

amending the checkpoint tree by (a) deleting a reference node having an index node, and (b) replacing the deleted reference node by an active node that was linked to the reference node; and

assigning the index node to the active node.

2. The method according to claim 1 comprising maintaining, by the SSD controller, a first mapping between (a) one or more locations, within the SSD memory unit, of KV pairs that share a key, and (b) keys.

3. The method according to claim 2 wherein an entry of the first mapping is allocated for a key and comprises (a) a key node metadata about at least one relevant node of the checkpoint tree that includes at least one KV pair of the key, and (b) an SSD memory address of each KV pair of each relevant node.

4. The method according to claim 3 wherein the key node metadata is a bit map that comprises bit per node of the checkpoint tree.

5. The method according to claim 3 wherein the key node metadata is in a compressed format.

6. The method according to claim 5 wherein the key node metadata comprises (i) a number of the at least one relevant nodes, and (ii) a compressed representation of identifiers of the at least one relevant node.

7. The method according to claim 6 wherein the compressed representation identifiers are compressed using a combinatorial compression method.

8. The method according to claim 3 comprising:

receiving an access request with the key; and

wherein a responding to the access request comprises:

accessing the entry of the first mapping that is allocated to the key;

obtaining the key node metadata of the entry; and

responding to the relevant node metadata.

9. The method according to claim 8 wherein the responding to the relevant node metadata comprises:

checking whether the key node metadata is indicative of a plurality of relevant nodes;

applying a selection rule to select a selected node out of the plurality of the relevant nodes; and

accessing a KV pair having the key of the selected node of the checkpoint tree.

10. The method according to claim 1 comprising dynamically allocating node indexes of nodes of the checkpoint tree independently from checkpoint identifiers used to identify the multiple checkpoints of the checkpoint tree.

11. The method according to claim 10 wherein the dynamically allocating follows a merge of some of the multiple checkpoints or a deletion of one of the multiple checkpoints.

12. The method according to claim 1 comprising:

amending the checkpoint tree by (a) replacing a node having a certain index node by a reference node, and (b) turning the node to an active node; and

assigning the certain index node to the reference node.

13. The method according to claim 1 comprising updating or deleting a given key of a given reference node following a corresponding updating or deleting of the given key in all child nodes of the given reference node.

14. The method according to claim 1 comprising maintaining a second mapping between node indexes and checkpoint identifiers.

15. The method according to claim 1 wherein the memory unit is a solid state drive (SSD) memory unit and the memory controller is an SSD memory controller.

16. A non-transitory computer readable medium for managing multiple checkpoints stored in a solid state drive (SSD) memory unit, the non-transitory computer readable medium stores instructions for:

managing a checkpoint tree, by an SSD controller;

the checkpoint tree comprises reference nodes and active nodes;

wherein the active nodes are leaf nodes of the checkpoint tree and the active nodes are inner nodes of the checkpoint tree;

wherein a reference node of the reference nodes holds a snapshot of a parent checkpoint taken at the time that a child checkpoint was created from the parent checkpoint;

wherein an active node of the active nodes that is associated with the parent node stores changes to the parent checkpoint introduced after a creation of the active node; and

wherein the parent checkpoint and the child checkpoint belong to multiple checkpoints stored in the checkpoint tree;

receiving access requests to access key value (KV) pairs of one or more checkpoints of the multiple checkpoints;

responding to the access requests based, at least in part, on the checkpoint tree;

amending the checkpoint tree by (a) deleting a reference node having an index node, and (b) replacing the deleted reference node by an active node that was linked to the reference node; and

assigning the index node to the active node.

17. A solid state device (SSD) memory controller for managing checkpoints stored in a SSD memory unit, the SSD memory controller is an integrated circuit and is configured to:

(i) manage a checkpoint tree; the checkpoint tree comprises reference nodes and active nodes;

wherein the active nodes are leaf nodes of the checkpoint tree and the active nodes are inner nodes of the checkpoint tree;

wherein a reference node of the reference nodes holds a snapshot of a parent checkpoint taken at the time that a child checkpoint was created from the parent checkpoint;

wherein an active node of the active nodes that is associated with the parent node stores changes to the parent checkpoint introduced after a creation of the active node; and

wherein the parent checkpoint and the child checkpoint belong to multiple checkpoints stored in the checkpoint tree;

(ii) receive access requests to access key value (KV) pairs of one or more checkpoints of the multiple checkpoints;

(iii) respond to the access requests based, at least in part, on the checkpoint tree;

(iv) amend the checkpoint tree by (a) deleting a reference node having an index node, and (b) replacing the deleted reference node by an active node that was linked to the reference node; and

(v) assign the index node to the active node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2024
From: DASHEVSKY, SHMUEL; TWITTO, MOSHE; ROCHMAN, YUVAL; NAISS, IDDO
To: PLIOPS LTD.
Reel/Frame 067261/0221 →
Continuity (1)
Provisional Application 62939696 · Nov 25, 2019