IP Library Granted Patent US 11,662,955
Granted Patent B2
US 11,662,955 · App. 17/486,643 · Granted May 30, 2023

Direct memory access data path for RAID storage

Inventors: Guo-Fu Tseng (New Taipei, TW); Tsung-Lin Yu (Luodong, TW); Cheng-Yue Chang (New Taipei, TW)
Assignee: GRAID Technology Inc.
G06F3/0689G06F3/0619G06F3/0659G06F11/1076G06F15/17331
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,662,955
App. No.
17/486,643
Granted
May 30, 2023
Kind
B2
Abstract

Direct memory access data path for RAID storage is disclosed, including: receiving, at a Redundant Array of Independent Disks (RAID) controller, a request to write data to be distributed among a plurality of storage devices; computing parity information based at least in part on the data associated with the request; causing the parity information to be stored on a first subset of the plurality of storage devices; and causing the data associated with the request to be stored on a second subset of the plurality of storage devices, wherein the plurality of storage devices is configured to obtain the data associated with the request directly from a memory that is remote to the RAID controller, and wherein the data associated with the request does not pass through the RAID controller.

Claims (59)

1. A system, including;

a plurality of storage devices; and

a Redundant Array of Independent Disks (RAID) controller configured to:

receive a request to write data to be distributed among the plurality of storage devices;

compute parity information based at least in part on the data associated with the request;

cause the parity information to be stored on a first subset of the plurality of storage devices; and

cause the data associated with the request to be stored on a second subset of the plurality of storage devices, wherein the plurality of storage devices is configured to obtain the data associated with the request directly from a memory that is remote to the RAID controller, and wherein the data associated with the request does not pass through the RAID controller, including to:

store, using direct memory access (DMA) write operations, write commands associated with causing the data associated with the request to be stored on the second subset of the plurality of storage devices in respective command queues associated with the second subset of the plurality of storage devices;

wherein the respective command queues are located in the memory that is remote to the RAID controller;

wherein the second subset of the plurality of storage devices is configured to perform DMA read operations to the respective command queues in the memory that is remote to the RAID controller to read the data associated with the request; and

wherein the second subset of the plurality of storage devices is configured to write the data associated with the request locally to the second subset of the plurality of storage devices.

2. The system of claim 1 , wherein the RAID controller is implemented using a graphics processing unit (GPU).

3. The system of claim 1 , wherein to cause the parity information to be stored on the first subset of the plurality of storage devices comprises the RAID controller further being configured to:

perform a direct memory access (DMA) write operation to the memory that is remote to the RAID controller to write the parity information to the memory that is remote to the RAID controller; and

send write commands to the first subset of the plurality of storage devices to cause the first subset of the plurality of storage devices to:

perform DMA read operations to the memory that is remote to the RAID controller to read the parity information; and

write the parity information locally to the first subset of the plurality of storage devices.

4. The system of claim 1 , wherein the request is received from a central processing unit (CPU) associated with a host and where the memory that is remote to the RAID controller is a host memory associated with the CPU.

5. The system of claim 1 , wherein the plurality of storage devices and the RAID controller comprise endpoints of a bus.

6. The system of claim 1 , wherein the RAID controller is configured to compute the parity information further based on a configured RAID mode.

7. The system of claim 1 , wherein the RAID controller is configured to store write commands associated with causing the parity information to be stored on the first subset of the plurality of storage devices in respective command queues associated with the first subset of the plurality of storage devices.

8. The system of claim 1 , wherein the request comprises a first request, and wherein the RAID controller is further configured to:

receive a second request to read the data associated with the first request from the plurality of storage devices; and

cause the second subset of the plurality of storage devices to:

locally read the data associated with the first request from the second subset of the plurality of storage devices; and

directly write the data associated with the first request to the memory that is remote to the RAID controller.

9. The system of claim 8 , wherein to cause the second subset of the plurality of storage devices to directly write the data to the memory that is remote to the RAID controller comprises to send read commands to the second subset of the plurality of storage devices.

10. The system of claim 8 , wherein to cause the second subset of the plurality of storage devices to directly write the data associated with the first request to the memory that is remote to the RAID controller comprises to cause the second subset of the plurality of storage devices to perform DMA write operations to the memory that is remote to the RAID controller to directly write the data associated with the first request.

11. The system of claim 1 , wherein the request comprises a first request, and further comprising:

an RDMA network interface card (RNIC) configured to:

receive a second request, from a remote host, to read the data associated with the first request from the plurality of storage devices;

send the second request to the RAID controller, wherein in response to the second request, the RAID controller is further configured to send commands to the second subset of the plurality of storage devices to cause the second subset of the plurality of storage devices to copy data associated with the second request to their local controller memory buffers (CMBs);

directly access the second subset of the plurality of storage devices to read the data associated with the first request; and

send the data associated with the first request to the remote host.

12. A method, including;

receiving, at a Redundant Array of Independent Disks (RAID) controller, a request to write data to be distributed among a plurality of storage devices;

computing parity information based at least in part on the data associated with the request;

causing the parity information to be stored on a first subset of the plurality of storage devices; and

causing the data associated with the request to be stored on a second subset of the plurality of storage devices, wherein the plurality of storage devices is configured to obtain the data associated with the request directly from a memory that is remote to the RAID controller, and wherein the data associated with the request does not pass through the RAID controller including:

storing, using direct memory access (DMA) write operations, write commands associated with causing the data associated with the request to be stored on the second subset of the plurality of storage devices in respective command queues associated with the second subset of the plurality of storage devices;

wherein the respective command queues are located in the memory that is remote to the RAID controller;

wherein the second subset of the plurality of storage devices is configured to perform DMA read operations to the respective command queues in the memory that is remote to the RAID controller to read the data associated with the request; and

wherein the second subset of the plurality of storage devices is configured to write the data associated with the request locally to the second subset of the plurality of storage devices.

13. The method of claim 12 , wherein causing the parity information to be stored on the first subset of the plurality of storage devices further comprises:

performing a direct memory access (DMA) write operation to the memory that is remote to the RAID controller to write the parity information to the memory that is remote to the RAID controller; and

sending write commands to the first subset of the plurality of storage devices to cause the first subset of the plurality of storage devices to:

perform DMA read operations to the memory that is remote to the RAID controller to read the parity information; and

write the parity information locally to the first subset of the plurality of storage devices.

14. The method of claim 12 , wherein the request is received from a central processing unit (CPU) associated with a host and where the memory that is remote to the RAID controller is a host memory associated with the CPU.

15. The method of claim 12 , wherein the request comprises a first request, and further comprising:

receiving a second request to read the data associated with the first request from the plurality of storage devices; and

causing the second subset of the plurality of storage devices to:

locally read the data associated with the first request from the second subset of the plurality of storage devices; and

directly write the data associated with the first request to the memory that is remote to the RAID controller.

16. The method of claim 15 , wherein causing the second subset of the plurality of storage devices to directly write the data to the memory that is remote to the RAID controller comprises to send read commands to the second subset of the plurality of storage devices.

17. The method of claim 15 , wherein causing the second subset of the plurality of storage devices to directly write the data associated with the first request to the memory that is remote to the RAID controller comprises to cause the second subset of the plurality of storage devices to perform DMA write operations to the memory that is remote to the RAID controller to directly write the data associated with the first request.

18. The method of claim 12 , wherein the RAID controller is implemented using a graphics processing unit (GPU).

19. The method of claim 12 , wherein the plurality of storage devices and the RAID controller comprise endpoints of a bus.

20. The method of claim 12 , wherein the RAID controller is configured to compute the parity information further based on a configured RAID mode.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2021
From: TSENG, GUO-FU; YU, TSUNG-LIN; CHANG, CHENG-YUE
To: GRAID TECHNOLOGY INC.
Reel/Frame 058260/0847 →
Continuity (1)
Related Publication 20230104509A1 · Apr 6, 2023