IP Library Granted Patent US 11,966,582
Granted Patent B2
US 11,966,582 · App. 17/885,288 · Granted Apr 23, 2024

Data storage device that detects and releases bottlenecks

Inventor: Refael Ben Rubi (Rosh Haayln, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/061G06F3/0653G06F3/0659G06F3/0679
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,966,582
App. No.
17/885,288
Granted
Apr 23, 2024
Kind
B2
Abstract

A data storage device includes a memory device and a controller coupled to the memory device. The controller is configured to receive a read command to read data from the memory device or a write command to write data to the memory device from a host device, determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules, and execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module.

Claims (87)

1. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command to read data from the memory device or a write command to write data to the memory device from a host device;

determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules;

either:

compare a current number of commands in the input queue corresponding to the hardware module of the plurality of hardware modules to a threshold number of commands; or

determine that a first-in first-out (FIFO) full indication of the input queue corresponding to the hardware module of the plurality of hardware modules exists; and

execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module, wherein the bottleneck release operation comprises increasing a clock cycle of the hardware module corresponding to the input queue when the current number of commands in the input queue corresponding to the hardware module of the plurality of hardware modules is greater than the threshold number of commands or when the FIFO full indication of the input queue corresponding to the hardware module of the plurality of hardware modules exists.

2. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command to read data from the memory device or a write command to write data to the memory device from a host device;

determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules;

either:

compare a current number of commands in the input queue corresponding to the hardware module of the plurality of hardware modules to a threshold number of commands, or

determine that a first-in first-out (FIFO) full indication of the input queue corresponding to the hardware module of the plurality of hardware modules exists; and

execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module, wherein:

the bottleneck release operation comprises sending the read command or the write command to a different hardware module of the plurality of hardware modules having an input queue comprising a number of commands that is less than the threshold number of commands; and

the different hardware module is a same type of hardware module as the hardware module corresponding to the input queue having either the current number of commands being greater than the threshold number of commands or the FIFO full indication.

3. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command to read data from the memory device or a write command to write data to the memory device from a host device;

determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules, wherein the plurality of hardware modules in the data/control path between the host device and the memory device comprises a plurality of random access memories (RAMs);

determine a fullness of a RAM of the plurality of RAMs in the data/control path between the host device and the memory device, wherein the fullness is a percentage of a capacity of the RAM of the plurality of RAMs that is utilized, wherein each RAM of the plurality of RAMs is configured for a single purpose;

execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module; and

reconfigure another RAM of the plurality of RAMs to a different purpose other than the single purpose when the fullness of the RAM of the plurality of RAMs is greater than a threshold fullness.

4. The data storage device of claim 3 , wherein the bottleneck release operation comprises utilizing the another RAM of the plurality of RAMs when the fullness of the RAM of the plurality of RAMs is greater than a threshold fullness.

5. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command to read data from the memory device or a write command to write data to the memory device from a host device;

determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules;

execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module; and

when the bottleneck exists in the hardware module, determine that an amount of power supplied to the hardware module is insufficient to complete the read command or the write command.

6. The data storage device of claim 5 , wherein the controller is further configured reduce a number of program loop cycles associated with the write command.

7. The data storage device of claim 5 , wherein the controller is further configured to utilize a second decoder rather than a first decoder for data associated with the read command, wherein the second decoder has a lower power requirement than the first decoder.

8. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command to read data from the memory device or a write command to write data to the memory device from a host device;

determine whether a bottleneck exists in a data/control path between the host device and the memory device, wherein the bottleneck exists either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules, wherein the determining whether a bottleneck exists in a data/control path between the host device and the memory device occurs after a threshold period of time has elapsed; and

execute a bottleneck release operation when the bottleneck exists in the data/control path between the host device and the memory device, wherein the bottleneck release operation is dependent on whether the bottleneck exists in the input queue or in the hardware module.

9. The data storage device of claim 8 , wherein the controller is further configured to either:

compare a current number of commands in the input queue corresponding to the hardware module of the plurality of hardware modules to a threshold number of commands; or

determine that a first-in first-out (FIFO) full indication of the input queue corresponding to the hardware module of the plurality of hardware modules exists.

10. The data storage device of claim 8 , wherein the plurality of hardware modules in the data/control path between the host device and the memory device comprises a plurality of random access memories (RAMs).

11. The data storage device of claim 10 , wherein the controller is further configured to determine a fullness of a RAM of the plurality of RAMs in the data/control path between the host device and the memory device, wherein the fullness is a percentage of a capacity of the RAM of the plurality of RAMs that is utilized.

12. The data storage device of claim 11 , wherein each RAM of the plurality of RAMs is configured for a single purpose.

13. The data storage device of claim 8 , wherein the controller is further configured to restore a value back to a default value, wherein the value was changed based on the bottleneck release operation.

14. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

maintain a table comprising a list of potential bottlenecks that may occur in a data/control path between a host device and the memory device, one or more identifiers for each entry in the list of potential bottlenecks, and one or more bottleneck release operations for each entry in the list of potential bottlenecks, wherein:

each entry in the list of potential bottleneck corresponds to either:

a bottleneck occurring in an input queue corresponding to a hardware module of a plurality of hardware modules; or

a bottleneck occurring in the hardware module of the plurality of hardware modules;

determine whether a bottleneck exists in the data/control path after receiving a command from a host device or after a period of time has elapsed; and

execute a bottleneck release operation corresponding to the bottleneck when the bottleneck exists in the data/control path, wherein the executing comprises utilizing the table to determine which bottleneck release operation to execute.

15. The data storage device of claim 14 , wherein the controller is further configured to restore the input queue or the hardware module having the bottleneck to a default value when the bottleneck no longer exists in the data/control path.

16. The data storage device of claim 14 , wherein the period of time is between about 50 microseconds and about 1 second.

17. The data storage device of claim 14 , wherein the one or more bottleneck release operations comprises one or more of:

increasing a clock cycle of the hardware module;

utilizing less program loop cycles for write operations;

utilizing a second decoder associated with a lower power requirement than a first decoder for read operations;

re-allocating random access memory (RAM) having a first purpose to store data associated with a second purpose; and

sending a request to a different hardware module, wherein the different hardware module is similar to the hardware module having the bottleneck.

18. The data storage device of claim 17 , wherein increasing the clock cycle of the hardware module occurs dynamically.

19. A data storage device, comprising:

memory means; and

a controller coupled to the memory means, wherein the controller is configured to:

identify a bottleneck that is occurring in a data/control path between a host device and the memory device, wherein the bottleneck occurs either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules; and

execute a predefined bottleneck release operation based on the identified bottleneck, wherein the predefined bottleneck release operation comprises increasing a clock cycle of the hardware module.

20. A data storage device, comprising:

memory means; and

a controller coupled to the memory means, wherein the controller is configured to:

identify a bottleneck that is occurring in a data/control path between a host device and the memory device, wherein the bottleneck occurs either in an input queue corresponding to a hardware module of a plurality of hardware modules or in the hardware module of the plurality of hardware modules; and

execute a predefined bottleneck release operation based on the identified bottleneck, wherein the plurality of hardware modules comprises:

a flash translation layer;

a plurality of random access memories (RAMs), wherein the plurality of RAMs is two or more different types of RAMs;

one or more encoders;

one or more decoders;

a plurality of low level flash sequencers (LLFS) central processing units (CPUs), each configured to generate one or more commands;

a host interface module (HIM);

a flash interface module (FIM); and

a plurality of data path CPUs, wherein a data path CPU is configured to track a state of a respective location of the memory means.

Assignments (8)
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2022
From: RUBI, REFAEL BEN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 060778/0977 →