IP Library Granted Patent US 10,564,898
Granted Patent B2
US 10,564,898 · App. 16/101,169 · Granted Feb 18, 2020

System and method for storage device management

Inventors: Abhijit Rao (Bangalore, IN); Vinod Sasidharan (Karnataka, IN)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0659G06F3/061G06F3/0604G06F3/0679G06F3/0683G06F9/546G06F12/0246G06F2212/7201
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 10,564,898
App. No.
16/101,169
Granted
Feb 18, 2020
Kind
B2
Abstract

A method and apparatus for managing storage devices includes a host interface, a plurality of storage device interfaces, and a processor. The host interface is configured to communicatively couple with a host device and the plurality of storage interfaces configured to communicatively couple with storage devices. The processor is communicatively coupled to the host interface and the plurality of storage device interfaces. Further, the processor is configured to receive requests from the host device via the host interface and communicate the requests to the storage devices via the plurality of storage device interfaces. The processor is additionally configured to receive responses from the storage devices via the plurality of storage interfaces and communicate the responses to the host device via the host interface, manage a global submission queue and a global completion queue, and manage a submission queue and a completion queue for each of the storage devices.

Claims (96)

1. A storage device management system, comprising:

a host interface configured to communicatively couple with a host device;

a plurality of storage device interfaces configured to communicatively couple with storage devices;

a processor communicatively coupled to the host interface and the plurality of storage device interfaces, wherein the processor is configured to:

receive requests from the host device via the host interface and communicate the requests to the storage devices via the plurality of storage device interfaces;

receive responses from the storage devices via the plurality of storage device interfaces and communicate the responses to the host device via the host interface;

manage a global submission queue and a global completion queue; and

manage a submission queue and a completion queue for each of the storage devices.

2. The storage device of claim 1 , wherein the global submission queue is larger than each of the submission queues, and the global completion queue is larger than each of the completion queues.

3. The storage device of claim 1 further comprising a memory communicatively coupled with the processor and configured to store the requests received from the host device.

4. The storage device of claim 1 , wherein the processor is further configured to generate a global mapping table including an index for each of the plurality of storage devices.

5. The storage device of claim 1 , wherein the processor is further configured to:

communicate with a host device using the global submission queue and the global completion queue; and

communicate with a first one of the storage devices using submission queue and complete queue that corresponds to the first one of the storage devices.

6. The storage device of claim 1 , wherein a storage protocol for the plurality of storage devices is a non-volatile memory express (NVMe) storage protocol.

7. The storage device of claim 1 , wherein managing the global submission queue and the global completion queue comprises:

updating the global submission queue in response to receiving each of the requests; and

updating the global completion queue in response to completion of each of the requests by the plurality of storage devices; and wherein managing the submission queue and the completion queue of each of the storage devices, comprises:

updating the submission queues in response to receiving each of the requests; and

updating the completion queues in response to completion of each of the requests by the plurality of storage devices.

8. The storage device of claim 1 , wherein the storage device interfaces support hot-swappable capabilities.

9. A method for managing storage devices, the method comprising:

receiving a request from a host device;

updating a global submission queue in response to receiving the request;

identifying a first storage device from a plurality of storage devices;

transmitting the request to the first storage device;

updating a submission queue corresponding to the first storage device in response to transmitting the request to the first storage device; and

updating a global completion queue and a completion queue corresponding to the first storage device in response to completion of the request by the first storage device.

10. The method of claim 9 further comprising:

assigning a different identifier for each of the plurality of storage devices; and

generating a global mapping based on the host data stored with the plurality of storage devices and the identifiers.

11. The method of claim 10 , wherein the first storage device is identified based on the global mapping.

12. The method of claim 10 further comprising:

receiving a second request from the host device;

updating the global submission queue in response to receiving the second request;

identifying a second storage device from the plurality of storage devices based on the global mapping and the second request;

transmitting the second request to the second storage device;

updating a submission queue corresponding to the second storage device in response to transmitting the request to the second storage device; and

updating the global completion queue and a completion queue corresponding to the second storage device in response to completion of the second request by the second storage device.

13. A storage device, comprising:

a housing having a plurality of ports configured to receive storage devices; and

a storage management device disposed within the housing and comprising:

a memory comprising a global submission queue and a global completion queue; and

a processor communicatively coupled to the memory, and configured to:

receive requests from the host device and communicate the requests to the storage devices via the plurality of ports;

receive responses from the storage devices via the plurality of ports and communicate the responses to the host device;

update the global submission queue and a submission queue corresponding to a first storage device of the storage devices in response to receiving the requests;

update the global completion queue and a completion queue corresponding to the first storage device in response to completion of the requests.

14. The storage device of claim 13 , wherein the global submission queue is larger than the submission queue corresponding to the first storage device and the global completion queue is larger than the completion queue corresponding to the first storage device.

15. The storage device of claim 13 , wherein updating the submission queue corresponding to a first storage device in response to receiving the requests, and updating the completion queue corresponding to the first storage device in response to completion of the requests comprises:

updating the submission queue corresponding to a first storage device in response to receiving a first one of the requests, and updating the completion queue corresponding to the first storage device in response to completion of the first one of the requests, and the processor is further configured to:

update a submission queue corresponding to a second storage device of the storage devices in response to a second one of the requests; and

update a completion queue corresponding to the second storage devices in response to completion of the second one of the requests.

16. The storage device of claim 13 , wherein the housing further includes a host interface, wherein the storage management device is further configured to communicatively couple with the host device via the host interface.

17. The storage device of claim 13 , wherein the storage management device is configured to communicatively couple with the host device via a wireless connection.

18. The storage device of claim 13 , wherein the processor is further configured to:

communicate with a host device using the global submission queue and the global completion queue.

19. The storage device of claim 13 , wherein the processor is further configured to:

assign a different identifier for each of the plurality of storage devices;

generate a global mapping based on host data stored within the plurality of storage devices and the identifiers; and

identify the first storage device based on a first one of the requests.

20. The storage device of claim 13 , wherein the plurality of ports are configured to allow the storage devices to be removed.

21. An external storage device, comprising:

a host interface configured to communicatively couple with a host device having a first read/write speed;

a plurality of storage device interfaces configured to communicatively couple with storage devices having a second read/write speed less than the first read/write speed; and

a memory comprising a host input/output queue, wherein the host input/output queue is larger than an input/output queue of each of the storage devices, wherein the host input/output queue comprises a global submission queue and a global completion queue, the storage device further comprising a processor configured to:

receive a first request from the host device via the host interface and communicate the first requests to a first storage device of the storage devices via the plurality of storage device interfaces;

receive a first response from the first memory storage device via the plurality of storage device interfaces and communicate the first responses to the host device via the host interface;

update the global submission queue and a submission queue corresponding to the first storage device in response to receiving the first request; and

update the global completion queue and a completion queue corresponding to the first storage device in response to completion of the first request.

22. The external storage device of claim 21 , wherein the processor is further configured to:

assign a different identifier for each of the plurality of storage devices;

generate a global mapping based on the identifiers and host data stored within the storage devices; and

identify the first storage device based on the first request and the global mapping.

23. The external storage device of claim 21 , wherein the host input/output queues supports at least 128 queues and the input/output queue of each of the storage devices supports no more than 32 queues.

24. A data storage device, comprising:

means for receiving requests from a host device;

means for storing the requests within a memory;

means for identifying a first storage device and a second storage device based on a first one of the requests and a second one of the requests;

means for communicating the first one of the requests to the first storage device and the second one of the requests to the second storage device;

means for receiving a response from the first storage device and a response from the second storage device;

means for updating a global submission queue corresponding to the host device based on the first and second requests, updating a submission queue corresponding to the first storage device based on the first second request, and updating a submission queue corresponding to the second storage device based on the second request; and

means for updating a global completion queue corresponding to the host device based on the first and second responses, a completion queue corresponding to the first storage device based on the first response, and a completion queue corresponding to the second storage device based on the second response.

25. The data storage device of claim 24 , wherein the global submission queue is larger than the submission queue corresponding to the first storage device and the submission queue corresponding to the second storage device; and the global completion queue is larger than the completion queue corresponding to the first storage device and the completion queue corresponding to the second storage device.

26. The data storage device of claim 24 further comprising:

means for generating a global mapping of host data stored within first storage device and the second storage device, and wherein the first storage device and the second storage device are further identified based on the global mapping.

27. A client device for storage device management, the client device comprising:

a load balancing module configured to distribute input/output commands of a host device to a plurality of removable storage devices;

a queue management module configured to:

update the global submission queue and global completion queue; and

update submission queues and completion queues of the plurality of removable storage devices;

a global mapping table comprising an indexing of data stored within each of the plurality of removable storage devices, and an identifier for each of plurality of removable storage devices; and

a command acknowledgement module configured to communicate an acknowledgement from each of the plurality of removable storage devices to the host device.

28. The client device of claim 27 further comprising a data communication module configured to:

receive requests from the host device and responses from the plurality of removable storage devices; and

transmit the requests to the plurality of removable storage devices and transmit the responses to the host device.

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 - 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 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2018
From: RAO, ABHIJIT; SASIDHARAN, VINOD
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 047409/0096 →