IP Library Granted Patent US 10,007,443
Granted Patent B1
US 10,007,443 · App. 15/087,953 · Granted Jun 26, 2018

Host to device I/O flow

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,007,443
App. No.
15/087,953
Granted
Jun 26, 2018
Kind
B1
Abstract

One or more virtual functions is exposed via a shared communication interface. A plurality of I/O buffers shared across said virtual functions are provided. For each of said one or more virtual functions, a corresponding submission queue comprising one or more virtual submission queue entries (SQEs) is used, wherein a memory access device is configured to: receive data pushed to the memory access device by a client host system, store the data in an allocated one of the I/O buffers, receive a submission queue entry (SQE) that invokes one of said virtual functions with respect to the data, and use a corresponding one of the plurality of logic circuits that is associated with the invoked virtual function to perform the virtual function with respect to the data as stored in the allocated I/O buffer.

Claims (44)

1. A memory access device, comprising:

a plurality of logic circuits each configured to expose one or more virtual functions via a shared communication interface;

a memory configured to provide a plurality of I/O buffers shared across said virtual functions; and

for each of said one or more virtual functions, a corresponding submission queue comprising one or more virtual submission queue entries (SQEs);

wherein the memory access device is configured to:

receive data pushed to the memory access device by a client host system;

store the data in an allocated one of the I/O buffers;

receive a submission queue entry (SQE) that invokes one of said virtual functions with respect to the data; and

use a corresponding one of the plurality of logic circuits that is associated with the invoked virtual function to perform the virtual function with respect to the data as stored in the allocated I/O buffer.

2. The memory access device of claim 1 , wherein the device is a field programmable gate array (FPGA).

3. The memory access device of claim 2 , wherein the plurality of logic circuits are programmable blocks of the FPGA.

4. The memory access device of claim 2 , wherein the FPGA has limited memory.

5. The memory access device of claim 1 , wherein each virtual function permits one or more of the following: a read access, a pushed read access, and a write access.

6. The memory access device of claim 1 , wherein the shared communication interface is PCIe.

7. The memory access device of claim 1 , wherein the memory access device is further configured such that in the event the client host system pushes data to one of the I/O buffers, and command is pushed to an SQE.

8. The memory access device of claim 7 , wherein the memory access device is further configured to read an opcode for fetching data from an external NVM associated with the memory access device to the SQE.

9. The memory access device of claim 8 , wherein the memory access device is further configured to push the external data from one of the I/O buffers to the client host system.

10. The memory access device of claim 8 , wherein the memory access device is further configured to enqueue a completion message to a completion queue (CQ) associated with the client host system.

11. The memory access device of claim 1 , wherein the allocated I/O buffer is selected based at least in part on the invoked virtual function availability.

12. The memory access device of claim 1 , wherein the allocated SQ is selected based at least in part on the invoked virtual function availability.

13. The memory access device of claim 1 , wherein for each of said one or more virtual function, the corresponding submission queue also comprises one or more dedicated SQ.

14. The memory access device of claim 1 , further comprising a map table for mapping memory buffers exposed to a PCIe BAR 4 direct memory interface to the allocated I/O buffer.

15. The memory access device of claim 1 , wherein one client host system is allocated one virtual function such that each virtual function has a corresponding client in a plurality of supported clients.

16. The memory access device of claim 1 , wherein the corresponding submission queue comprises one or more virtual SQs in one or more of the following: 256 VFs with one queue per VF with 16 entries per queue, 256 VFs with two queues per VF with 8 entries per queue, 256 VFs with four queues per VF with 4 entries per queue, 8 VFs with 2 queues per VF with 256 entries per queue, and 4 VFs with 4 queues per VF with 256 entries per queue.

17. The memory access device of claim 1 , wherein the shared communication interface is advanced logical device interface for accessing non-volatile storage media over PCIe with SR-IOV.

18. The memory access device of claim 1 , further comprising BAR 0 MMIO access to one or more PCIe registers.

19. A method, comprising:

exposing one or more virtual functions via a shared communication interface;

providing a plurality of I/O buffers shared across said virtual functions; and

for each of said one or more virtual functions, using a corresponding submission queue comprising one or more virtual submission queue entries (SQEs);

wherein a memory access device is configured to:

receive data pushed to the memory access device by a client host system;

store the data in an allocated one of the I/O buffers;

receive a submission queue entry (SQE) that invokes one of said virtual functions with respect to the data; and

use a corresponding one of the plurality of logic circuits that is associated with the invoked virtual function to perform the virtual function with respect to the data as stored in the allocated I/O buffer.

20. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

exposing one or more virtual functions via a shared communication interface;

providing a plurality of I/O buffers shared across said virtual functions; and

for each of said one or more virtual functions, using a corresponding submission queue comprising one or more virtual submission queue entries (SQEs);

wherein a memory access device is configured to:

receive data pushed to the memory access device by a client host system;

store the data in an allocated one of the I/O buffers;

receive a submission queue entry (SQE) that invokes one of said virtual functions with respect to the data; and

use a corresponding one of the plurality of logic circuits that is associated with the invoked virtual function to perform the virtual function with respect to the data as stored in the allocated I/O buffer.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2016
From: RAJADNYA, SAMIR; RAMACHANDRAN, KARTHIK; WILDE, TODD
To: EMC CORPORATION
Reel/Frame 038972/0929 →