IP Library Granted Patent US 11,513,691
Granted Patent B2
US 11,513,691 · App. 17/182,099 · Granted Nov 29, 2022

Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host

Inventors: Niraj Srimal (Bangalore, IN); Adarsh Sreedhar (Bangalore, IN); Rakshit Tikoo (Bangalore, IN); Aditya Gadgil (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0613G06F3/067G06F3/0631G06F3/0635G06F3/0659G06F3/0683
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,513,691
App. No.
17/182,099
Granted
Nov 29, 2022
Kind
B2
Abstract

Systems and methods are disclosed for providing parallel data transfer. In certain embodiments, a data storage device includes a non-volatile memory and a controller configured to: receive a command from a host to obtain a file stored in the non-volatile memory; determine a plurality of channels available between the host and the data storage device; dynamically divide the file into a plurality of chunks based at least in part on the plurality of channels; perform load balancing to determine a first chunk of the plurality of chunks to be sent over a first channel of the plurality of channels and at least a second chunk of the plurality of chunks to be sent over a second channel of the plurality of channels; and simultaneously transmit the first chunk over the first channel and the second chunk over the second channel.

Claims (39)

1. A data storage device comprising:

a non-volatile memory; and

a controller configured to:

receive a command from a host to obtain a file stored in the non-volatile memory;

determine a plurality of channels available for transferring data between the host and the data storage device, wherein the plurality of channels includes channels having different channel types;

dynamically divide the file into a plurality of chunks based at least in part on the plurality of channels;

perform load balancing to determine a first chunk of the plurality of chunks to be sent over a first channel of the plurality of channels and at least a second chunk of the plurality of chunks to be sent over a second channel of the plurality of channels, wherein the first channel has a first channel type and the second channel has a second channel type that is different from the first channel type; and

simultaneously transmit the first chunk over the first channel and the second chunk over the second channel, wherein the first chunk includes a first type of data and the second chunk includes a second type of data that is different from the first type of data.

2. The data storage device of claim 1 , wherein the plurality of channels includes one or more of: Universal Serial Bus (USB), Wi-Fi, or Bluetooth.

3. The data storage device of claim 1 , wherein the controller is further configured to determine a size of a chunk for dividing the file into the plurality of chunks.

4. The data storage device of claim 1 , wherein the controller is further configured to allocate a section of a transfer random-access memory (TRAM) for each channel of the plurality of channels.

5. The data storage device of claim 4 , wherein an amount of memory allocated to the section of the TRAM for each channel is determined based on a transfer speed of the channel.

6. The data storage device of claim 1 , wherein the file is a media file, the first chunk includes video data, and the second chunk includes audio data.

7. The data storage device of claim 6 , wherein the first channel is Universal Serial Bus (USB) and the second channel is Bluetooth.

8. The data storage device of claim 1 , wherein the controller is further configured to perform load balancing for at least some of the plurality of chunks to obtain an earliest transfer completion time over the plurality of channels.

9. The data storage device of claim 1 , wherein the controller is further configured to perform load balancing for at least some of the plurality of chunks to reduce power consumption of the data storage device.

10. The data storage device of claim 1 , wherein the controller is further configured to perform load balancing for at least some of the plurality of chunks based at least in part on parameters associated with the data storage device.

11. The data storage device of claim 10 , wherein the data storage device includes a solid-state drive and the non-volatile memory includes NAND memory.

12. The data storage device of claim 11 , wherein the parameters include one or more of: a NAND speed, a NAND cell type, device throttling, thermal throttling, a request type, a read speed, a write speed, a match between a transfer speed of the host and a transfer speed of the data storage device, garbage collection, or an amount of memory in a section of a transfer random-access memory (TRAM) for a channel of the plurality of channels.

13. A method of providing parallel data transfer in a data storage system, the method comprising:

receiving a command from a host to obtain a file stored in a non-volatile memory of a data storage system;

determining a plurality of channels available for transferring data between the host and the data storage system, wherein the plurality of channels includes channels having different channel types;

dynamically dividing the file into a plurality of chunks based at least in part on the plurality of channels;

performing load balancing to determine a first chunk of the plurality of chunks to be sent over a first channel of the plurality of channels and at least a second chunk of the plurality of chunks to be sent over a second channel of the plurality of channels, wherein the first channel has a first channel type and the second channel has a second channel type that is different from the first channel type; and

simultaneously transmitting the first chunk over the first channel and the second chunk over the second channel, wherein the first chunk includes a first type of data and the second chunk includes a second type of data that is different from the first type of data.

14. The method of claim 13 , further comprising determining a size of a chunk for dividing the file into the plurality of chunks.

15. The method of claim 13 , further comprising allocating a section of a transfer random-access memory (TRAM) for each channel of the plurality of channels.

16. The method of claim 15 , wherein an amount of memory allocated to the section of the TRAM for each channel is determined based on a transfer speed of the channel.

17. The method of claim 13 , wherein the file is a media file, the first chunk includes video data, and the second chunk includes audio data.

18. The method of claim 13 , further comprising performing load balancing for at least some of the plurality of chunks to obtain an earliest transfer completion time over the plurality of channels.

19. The method of claim 13 , further comprising performing load balancing for at least some of the plurality of chunks to reduce power consumption of the data storage system.

20. A data storage system comprising:

a non-volatile memory; and

a controller means configured to:

receive a command from a host to obtain a file stored in the non-volatile memory;

determine a plurality of channels available for transferring data between the host and the data storage system, wherein the plurality of channels includes channels having different channel types;

dynamically divide the file into a plurality of chunks based at least in part on the plurality of channels;

perform load balancing to determine a first chunk of the plurality of chunks to be sent over a first channel of the plurality of channels and at least a second chunk of the plurality of chunks to be sent over a second channel of the plurality of channels, wherein the first channel has a first channel type and the second channel has a second channel type that is different from the first channel type; and

simultaneously transmit the first chunk over the first channel and the second chunk over the second channel, wherein the first chunk includes a first type of data and the second chunk includes a second type of data that is different from the first type of data.

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 Feb 22, 2021
From: SRIMAL, NIRAJ; SREEDHAR, ADARSH; TIKOO, RAKSHIT; GADGIL, ADITYA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055361/0212 →