IP Library Granted Patent US 11,734,018
Granted Patent B2
US 11,734,018 · App. 16/932,477 · Granted Aug 22, 2023

Parallel boot execution of memory devices

Inventors: Shay Benisty (Beer Sheva, IL); Judah Gamliel Hahn (Ofra, IL); Ariel Navon (Revava, IL)
Assignee: Western Digital Technologies, Inc.
G06F9/4403G06F3/0611G06F3/0659G06F3/0673G06F21/575G06F9/445G06F2221/033
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,734,018
App. No.
16/932,477
Granted
Aug 22, 2023
Kind
B2
Abstract

The present disclosure generally relates to reducing boot latency of memory devices in a dual boot system. The boot code is loaded to the data storage device controller in a flexible manner by being able to receive chunks of the boot code from two separate locations, the host memory buffer (HMB) and the memory device, which may be a NAND device. Part of the boot code may be received from the HMB and another part of the boot code may be received from the memory device. If either the HMB or the memory device can deliver the chunks faster than the other, then the controller can receive the chunks from the faster location and periodically confirm the speed of delivery to ensure the boot code latency is optimized.

Claims (84)

1. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from a host memory buffer (HMB) of a host device, wherein the boot code is associated with a boot operation of the data storage device, wherein the boot code chunks of the boot code from the HMB are stored in the HMB during a previous run-time of the data storage device;

receive boot code chunks of the boot code from the one or more memory devices;

confirm that all boot code chunks of the boot code have been received, wherein a portion of the boot code chunks are received from the HMB and a different portion of the boot code chunks are received from the one or more memory devices;

confirm authentication signatures for all of the boot code chunks of the boot code, wherein the controller is further configured to receive a valid boot code chunk from whichever of the HMB and the one or more memory devices did not deliver the invalid boot code chunk based on confirming the authentication signatures; and

boot the data storage device using the boot code chunks received from the host device and the boot code chunks received from the one or more memory devices when the number of boot code chunks received from the host device plus the number of boot code chunks received from the one or more memory devices equals the total number of boot code chunks of the boot code.

2. The data storage device of claim 1 , wherein the boot code includes 20 chunks of a predetermined size.

3. The data storage device of claim 1 , wherein the boot code chunks received from the host device are for a first half of the boot code and wherein the boot code chunks received from the one or more memory devices is for a second half of the boot code.

4. The data storage device of claim 1 , wherein the number of boot code chunks received from the host device is different from the number of boot code chunks received from the one or more memory devices.

5. The data storage device of claim 1 , wherein each boot code chunk received has an authentication signature and wherein the controller is configured to determine whether each boot code chunk has a valid authentication signature.

6. The data storage device of claim 5 , wherein, upon determining an authentication signature is invalid for a specific boot code chunk, the controller is configured to receive the specific boot code chunk from the other of either the host device or the one or more memory devices that sent the invalid specific boot code chunk.

7. The data storage device of claim 5 , wherein the controller is configured to determine whether each boot code chunk has a valid authentication signature after loading each boot code chunk.

8. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from both a host memory buffer (HMB) of a host device and the one or more memory devices, wherein:

the boot code is associated with a boot operation of the data storage device;

the boot code chunks of the boot code from the HMB are stored in the HMB during a previous run-time of the data storage device;

confirm that all boot code chunks have been received;

confirm authentication signatures for the boot code;

determine whether a boot code chunk was invalid;

determine whether the invalid boot code chunk was from the host device or the one or more memory devices;

receive a valid boot code chunk from whichever of the host device and the one or more memory device did not deliver the invalid boot code chunk; and

boot the data storage device using the boot code chunks received from the host device, the boot code chunks received from the one or more memory devices, and the valid boot code chunk responsive to the receiving the valid boot code chunk.

9. The data storage device of claim 8 , wherein the controller is configured to receive multiple copies of one or more boot chunks.

10. The data storage device of claim 8 , wherein the controller is configured to track a number of boot code chunks received on average from both the one or more memory devices and the host device.

11. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from both a host device and the one or more memory devices;

track a number of boot code chunks received on average from both the one or more memory devices and the host device, wherein one additional boot code chunk greater than the average is placed in each of the host device and the one or more memory devices;

confirm that all boot code chunks have been received;

confirm authentication signatures for the boot code;

determine whether a boot code chunk was invalid;

determine whether the invalid boot code chunk was from the host device or the one or more memory devices; and

receive a valid boot code chunk from whichever of the host device and the one or more memory device did not deliver the invalid boot code chunk.

12. The data storage device of claim 8 , wherein the controller receives the boot code chunks from the host device and the one or more memory devices in a different order.

13. The data storage device of claim 8 , wherein the controller receives more than half of the boot code chunks from either the host device or the one or more memory devices.

14. The data storage device of claim 8 , wherein the authentication signatures for the boot code are received from both the host device and the one or more memory devices.

15. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host memory buffer (HMB) of a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the HMB of the host device;

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device; and

adjust a first number of boot code chunks of the boot code stored in the one or more memory devices and a second number of boot code chunks of the HMB of the host device based on the determining, wherein:

a total number of boot code chunks equals the first number of boot code chunks and the second number of boot code chunks; and

the boot code chunks of the boot code stored in the one or more memory devices is different than the boot code chunks of the boot code stored in the HMB of the host memory buffer.

16. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the host device;

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device; and

receive the boot code chunks from the one or more memory devices and switch to receiving the boot code chunks from the host device.

17. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the host device;

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device; and

receive the boot code chunks from the host device and switch to receiving the boot code chunks from the one or more memory devices.

18. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the host device;

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device; and

calculate the average latency for receiving the boot codes for both the one or more memory devices and the host device.

19. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the host device;

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device; and

increase an internal counter each time a boot occurs until the predetermined number of data storage device boots has occurred.

20. A data storage device, comprising:

one or more memory devices; and

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

receive boot code chunks of a boot code from either the one or more memory devices or a host device;

after a predetermined number of data storage device boots, receive boot data chunks from the other of the one or more memory devices or the host device; and

determine whether an average latency for receiving the boot code from the one or more memory devices is different from the average latency for receiving the boot code from the host device, wherein the controller includes boot logic that processes both the one or more memory device boot code chunks and the host device boot code chunks.

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 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2020
From: BENISTY, SHAY; HAHN, JUDAH GAMLIEL; NAVON, ARIEL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053269/0970 →
Cited By (1)
US 12,386,629