IP Library › Granted Patent US 9,304,690
Granted Patent B2
US 9,304,690 · App. 14/272,214 · Granted Apr 5, 2016

System and method for peer-to-peer PCIe storage transfers

Inventors: Colin Christopher McCambridge (Rochester, MN); Christopher William Barr (Rochester, MN); Adam Christopher Geml (Rochester, MN)
Assignee: HGST Netherlands B.V.
G06F3/061G06F3/0659G06F3/0679G06F13/4022G06F2206/1014
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 9,304,690
App. No.
14/272,214
Granted
Apr 5, 2016
Kind
B2
Abstract

Techniques for peer-to-peer Peripheral Component Interconnect Express (PCIe) storage transfers are disclosed. In some embodiments, the techniques may be realized as a method for providing peer-to-peer storage transfers between PCIe devices including providing, in memory of a first PCIe device, a queue for data communicated between the first PCIe device and a target PCIe device, receiving, at the first PCIe device, queue memory allocation information transmitted from a host device communicatively coupled to the first PCIe device and the target PCIe device, and generating, using a computer processor of the first PCIe device, a storage command.

Claims (46)

1. A method for providing peer-to-peer storage transfers between Peripheral Component Interconnect Express (PCIe) devices comprising:

providing, in memory of a first PCIe device, a number of queues for data communicated between the first PCIe device and a target PCIe device, wherein the number of queues to utilize on the first PCIe device and a number of queues to utilize on a host device is based on one or more factors including: an amount of memory available on the first PCIe device, an amount of memory available on the host device, a utilization level of the host device, a utilization level of the first PCIe device, an amount of bandwidth available between a Peripheral Component Interconnect Express (PCIe) switch and the host device, and an amount of bandwidth available between the Peripheral Component Interconnect Express (PCIe) switch and the first PCIe device;

receiving, at the first PCIe device, queue memory allocation information transmitted from the host device communicatively coupled to the first PCIe device and the target PCIe device; and

generating, using a computer processor of the first PCIe device, a storage command.

2. The method of claim 1 , wherein the peer-to-peer storage transfers include storage transfers to or from an Non-Volatile Memory express (NVMe) compliant target device.

3. The method of claim 2 , wherein a queue of the number of queues for data communicated between the first PCIe device and a target PCIe device is assigned to a Peripheral Component Interconnect Express (PCIe) memory region assigned by a PCIe enumerator at initialization time of the first PCIe device.

4. The method of claim 1 , wherein a queue of the number of queues for data communicated between the first PCIe device and a target PCIe device comprises an I/O (Input/Output) submission queue for communication of a storage command to the target PCIe device.

5. The method of claim 1 , wherein a queue of the number of queues for data communicated for data communicated between the first PCIe device and a target PCIe device comprises an I/O (Input/Output) completion queue for receiving an indication of storage command completion from the target PCIe device.

6. The method of claim 1 , further comprising:

providing, in memory of the first PCIe device, a first and second queue for data communicated between the first PCIe device and the target PCIe device; and

receiving, at the first PCIe device, queue memory allocation information from the host device for the first and second queues.

7. The method of claim 5 , wherein a second queue of the number of queues for data communicated between the first PCIe device and a target PCIe device comprises at least one of: an I/O (Input/Output) submission queue for communication of a storage command to the target PCIe device and an I/O (Input/Output) completion queue for receiving an indication of storage command completion from the target PCIe device.

8. The method of claim 1 , further comprising:

providing, in memory of the first PCIe device, a data buffer.

9. The method of claim 1 , wherein a queue is provided in memory of the host device for at least one of: admin submission, admin completion, I/O submission, and I/O completion.

10. The method of claim 1 , further comprising:

providing, in memory of the host device, a data buffer.

11. The method of claim 1 , further comprising:

providing, in memory of a third Peripheral Component Interconnect Express (PCIe) device, a second queue of the number of queues for data communicated between the first PCIe device and the target PCIe device; and

receiving, at the first PCIe device, queue memory allocation information from the host device for the second queue.

12. The method of claim 1 , further comprising:

initiating by the first PCIe device a storage transfer command by storing the generated storage transfer command in an I/O submission queue;

issuing a peer-to-peer memory write to a doorbell register of the target PCIe device;

receiving at the first PCIe device a memory read command from the target PCIe device to fetch the storage transfer command; and

transferring data between the first PCIe device and the target PCIe device.

13. The method of claim 1 further comprising:

receiving an indication of completion written by the target PCIe device in an I/O completion queue;

receiving an interrupt from the target PCIe device;

fetching, by the first PCIe device, the completion from the I/O completion queue; and

updating a doorbell of the target PCIe device.

14. The method of claim 13 , wherein the target PCIe device is MSI-X (Message Signaled Interrupts eXtended) compliant and the interrupt is sent from the target PCIe device to an address in memory of the first PCIe device.

15. The method of claim 13 , wherein the target PCIe device is not MSI-X (Message Signaled Interrupts eXtended) compliant and the interrupt is sent from the target PCIe device to the host and wherein the host relays the interrupt to an address in memory of the first PCIe device.

16. The method of claim 1 , wherein the host device comprises at least one of: an enterprise server, a database server, a workstation, and a computer.

17. The method of claim 1 , wherein the target PCIe device comprises at least one of: a graphics processing unit, an audio/video capture card, and a Non-Volatile Memory express (NVMe) controller.

18. A computer program product tangibly embodied in a non-transitory computer-readable medium including instructions for providing peer-to-peer storage transfers between Peripheral Component Interconnect Express (PCIe) devices; the computer program product implementing the steps of:

providing, in memory of a first PCIe device, a number of queues for data communicated between the first PCIe device and a target PCIe device, wherein a determination of the number of queues to utilize on the first PCIe device and a number of queues to utilize on a host device is based on one or more factors including: an amount of memory available on the first PCIe device, an amount of memory available on the host device, a utilization level of the host device, a utilization level of the first PCIe device, an amount of bandwidth available between a Peripheral Component Interconnect Express (PCIe) switch and the host device, and an amount of bandwidth available between the Peripheral Component Interconnect Express (PCIe) switch and the first PCIe device;

receiving, at the first PCIe device, queue memory allocation information transmitted from the host device communicatively coupled to the first PCIe device and the target PCIe device; and

generating, using a computer processor of the first PCIe device, a storage command.

19. A system for providing peer-to-peer storage transfers between Peripheral Component Interconnect Express (PCIe) devices, the system comprising:

a first Peripheral Component Interconnect Express (PCIe) device;

a host device configured to determine a number of queues to utilize on the first PCIe device and a number of queues to utilize on the host device, wherein the determination is based on one or more factors including: an amount of memory available on the first PCIe device, an amount of memory available on the host device, a utilization level of the host device, a utilization level of the first PCIe device, an amount of bandwidth available between a Peripheral Component Interconnect Express (PCIe) switch and the host device, and an amount of bandwidth available between the Peripheral Component Interconnect Express (PCIe) switch and the first PCIe device;

a target Peripheral Component Interconnect Express (PCIe) device; and

a Peripheral Component Interconnect Express (PCIe) switch communicatively coupling the first PCIe device, the target PCIe device, and the host;

wherein the first PCIe device includes stored Non-Volatile Memory express (NVMe) command submission instructions stored in memory, the instructions comprising:

an address of a queue in memory of the first PCIe device for I/O submission; and

instructions for generating an NVMe command.

Assignments (6)
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 Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040829/0516 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2014
From: MCCAMBRIDGE, COLIN CHRISTOPHER; BURR, CHRISTOPHER WILLIAM; GEML, ADAM CHRISTOPHER
To: HGST NETHERLANDS B.V.
Reel/Frame 032853/0394 →
Continuity (1)
Related Publication 20150324118A1 · Nov 12, 2015