IP Library Granted Patent US 11,494,097
Granted Patent B2
US 11,494,097 · App. 17/210,174 · Granted Nov 8, 2022

Fast initialization of secure HMB

Inventors: Shay Benisty (Beer Sheva, IL); Ishai Ilani (Dolev, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/0632G06F3/0623G06F3/0673H04L9/3236H04L9/3247
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,494,097
App. No.
17/210,174
Granted
Nov 8, 2022
Kind
B2
Abstract

The present disclosure generally relates to data storage devices and related methods that use secure host memory buffers (HMBs) and low latency operations. A controller of the data storage device is configured to access the HMB, where the HMB stores a Merkle Tree. When the HMB is initialized, the controller determines a number of hash levels of the Merkle Tree. Each hash level of the Merkle Tree comprises one or more hashes. When storing location data in a target data block of the Merkle Tree, the controller is configured to initialize only the hashes along a path between a top hash and the target data block. Each hash along the path has a non-initialized hash coupled to a common hash. The non-initialized hash is programmed with a non-initialized bit, such that only the relevant hashes and data blocks are initialized.

Claims (47)

1. A data storage device, comprising:

one or more memory devices; and

a controller coupled to the one or more memory devices, the controller configured to:

access a host memory buffer (HMB) of a host device, wherein the HMB comprises a Merkle Tree comprising a plurality of data blocks and a total number of hash levels, wherein each hash level of the Merkle Tree comprises at least one hash of a plurality of hashes, and wherein each hash of a last hash level is coupled to a data block of the plurality of data blocks;

determine a first number of hash levels of the Merkle Tree to initialize, the first number of hash levels being less than the total number of hash levels;

initialize the first number of hash levels;

initialize one or more first hashes on a path between a top hash level and a target data block of the plurality of data blocks, wherein initializing the one or more first hashes comprises programming a non-initialized bit to a non-initialized hash off the path; and

remove the non-initialized bit from the non-initialized hash when the non-initialized hash is initialized.

2. The data storage device of claim 1 , wherein initializing the one or more first hashes on the path comprises programming a signature to each of the one or more first hashes.

3. The data storage device of claim 1 , wherein the Merkle Tree is a binary hash tree, and wherein the total number of hash levels is at least two hash levels.

4. The data storage device of claim 3 , wherein a first hash level has a first number of hashes and a second hash level has a second number of hashes, and wherein the second number of hashes is equal to two times the first number of hashes.

5. The data storage device of claim 4 , wherein a first hash of the first number of hashes is coupled to a second hash and a third hash of the second number of hashes.

6. The data storage device of claim 5 , wherein a signature of the first hash is calculated based on the second hash and the third hash.

7. A data storage device, comprising:

one or more memory devices; and

a controller coupled to the one or more memory devices, the controller configured to:

determine a target data block of a plurality of data blocks of a Merkle Tree of a host memory buffer (HMB) associated with the data of a read request, the Merkle Tree further comprising a number of hash levels, wherein each hash level comprises at least one hash of a plurality of hashes, and wherein a last hash level is coupled to the plurality of data blocks;

read the target data block and one or more first hashes on a path between a top hash level and the target data block;

determine if any of the one or more first hashes comprises a non-initialized bit, wherein at least one of the one or more first hashes comprising the non-initialized bit returns a fixed pattern, and wherein none of the one or more first hashes comprise the non-initialized bit returns the target data block; and

return either the fixed pattern or the target data block.

8. The data storage device of claim 7 , wherein:

each hash of the last hash level is coupled to a data block of the plurality of data blocks;

the plurality of data blocks comprises a plurality of entries of a flash translation layer (FTL) table; and

the target data block comprises one or more entries corresponding to a location of the data of a read request stored in the one or more memory devices.

9. The data storage device of claim 7 , wherein returning the fixed pattern comprises sending an indication, and wherein the indication indicates that the target data block comprises garbage data.

10. The data storage device of claim 7 , wherein a first hash level of the number of hash levels has a first number of hashes and a second hash level of the number of hash levels disposed adjacent to the first hash level has a second number of hashes, and wherein the second number of hashes is equal to two times the first number of hashes.

11. The data storage device of claim 10 , wherein the reading comprises:

reading a first hash of the second hash level, the first hash being coupled to the data block;

fetching a second hash of the second hash level, wherein the first hash and the second hash are coupled to a third hash of the first hash level; and

calculating a third signature of the third hash based on a first signature of the first hash and a second signature of the second hash.

12. The data storage device of claim 11 , wherein the reading further comprises:

comparing a calculated top hash signature to the target data block; and

returning data of the target data block when the calculated top hash signature matches the target data block.

13. A data storage device, comprising:

one or more memory devices;

a controller coupled to the one or more memory devices, the controller comprising:

means to access a host memory buffer (HMB) of a host device, wherein the HMB comprises a Merkle Tree;

means to determine a total number of hash levels of the Merkle Tree, the total number of hash levels being at least two, wherein each hash level comprises at least one hash of a plurality of hashes, and wherein each hash of a last hash level is coupled to a data block;

means to initialize a first number of hash levels, wherein the first number of hash levels is less than the total number of hash levels; and

means to set a non-initialized bit to each hash of a second number of hash levels.

14. The data storage device of claim 13 , wherein the controller further comprises:

means to determine a path between a top hash and a target data block, wherein one or more first hashes on the path are initialized, and wherein one or more second hashes off the path are set with the non-initialized bit;

means to determine if the one or more second hashes comprise the non-initialized bit; and

means to remove the non-initialized bit upon initializing a hash of the one or more second hashes or a hash of the second number of hash levels.

15. The data storage device of claim 13 , wherein the controller further comprises means to calculate a calculated top hash signature, wherein the means to calculate the calculated top hash signature comprises calculating a signature of the one or more first hashes.

16. The data storage device of claim 15 , wherein the controller further comprises means to send a verification upon determining that a target data block matches the calculated top hash signature.

17. The data storage device of claim 13 , wherein the total number of hash levels is variable based on a determined initialization speed.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2021
From: BENISTY, SHAY; ILANI, ISHAI
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055701/0670 →
Continuity (2)
Provisional Application 63122254 · Dec 7, 2020
Related Publication 20220179571A1 · Jun 9, 2022