IP Library Granted Patent US 8,595,385
Granted Patent B1
US 8,595,385 · App. 13/903,125 · Granted Nov 26, 2013

Method and system for submission queue acceleration

Inventors: Michael W. Shapiro (San Francisco, CA); Todor Mollov (Menlo Park, CA)
Assignee: DSSD, Inc.
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 8,595,385
App. No.
13/903,125
Filed
May 28, 2013
Granted
Nov 26, 2013
Kind
B1
Art Unit
2442
USPC
709/212
Abstract

In general, the invention relates to a method for writing data to server submission queues in a storage controller. The method includes receiving an I/O request, where the I/O request includes a command, where the I/O request is associated with a vSQ, and where the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller. The method further includes obtaining a vSQ ID associated with the vSQ, identifying a sSQ based on the vSQ and a vSQ-to-sSQ mapping, generating a submission queue entry comprising the command and the vSQ ID, and sending the submission queue entry to the storage controller, where the sSQ is located in the memory and where the storage controller is configured to place the submission queue entry in the sSQ.

Claims (52)

1. A method for writing data to server submission queues in a storage controller, comprising:

receiving an input/output (I/O) request, wherein the I/O request comprises a command, wherein the I/O request is associated with a virtual submission queue (vSQ), wherein the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller;

obtaining a virtual server queue identifier (vSQ ID) associated with the vSQ;

identifying a server submission queue (sSQ) based on the vSQ and a vSQ-to-sSQ mapping;

generating a submission queue entry comprising the command and the vSQ ID; and

sending the submission queue entry to the storage controller, wherein the sSQ is located in the memory, wherein the storage controller is configured to place the submission queue entry in the sSQ.

2. The method of claim 1 , further comprising:

prior to receiving I/O request, receiving the vSQ-to-sSQ mapping from the storage controller.

3. The method of claim 1 , further comprising:

after sending the submission queue entry to the storage controller, receiving confirmation that the command has been processed by the storage controller.

4. The method of claim 1 , wherein the vSQ command specifies a memory location in the set of memory locations, wherein the memory location specifies a location in the vSQ in which to store the I/O request.

5. The method of claim 1 , wherein the sSQ store command specifies a memory location in the memory in which to store the submission queue entry.

6. The method of claim 1 , wherein the I/O request further comprises padding and wherein the padding is replaced by the vSQ ID in order to generate the submission queue entry.

7. A system comprising:

a submission queue accelerator interposed between a client and a storage controller, wherein the submission queue accelerator is configured to:

receive an input/output (I/O) request, wherein the I/O request comprises a command, wherein the I/O request is associated with a virtual submission queue (vSQ), wherein the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller,

obtain a virtual server queue identifier (vSQ ID) associated with vSQ,

identify a server submission queue (sSQ) based on the vSQ and a vSQ-to-sSQ mapping,

generate a submission queue entry comprising the command and the vSQ ID, and

send the submission queue entry in a sSQ store command to the storage controller; and

the storage controller configured to:

receive the sSQ store command, and

store the submission queue entry in the sSQ, wherein the sSQ is one a plurality of sSQs located in the memory.

8. The system of claim 7 , wherein the storage controller is further configure to:

obtain the submission queue entry from the sSQ;

process the command in the submission queue entry;

notify the submission queue accelerator that the command has been processed using a sSQ ID associated with the sSQ; and

notify the client that the command has been processed using the vSQ ID obtained from the submission queue entry.

9. The system of claim 7 , wherein the submission queue accelerator is one selected from a group consisting of a field programmable gate array (FPGA) and a Application-Specific Integrated Circuit (ASIC).

10. The system of claim 9 , wherein the submission queue accelerator processes the command at a line-rate.

11. The system of claim 9 , wherein the I/O request is not stored and subsequently retrieved prior to generating the submission queue entry.

12. The system of claim 9 , wherein the plurality of vSQs is greater than the plurality of sSQs.

13. The system of claim 12 , wherein the plurality of sSQs is limited by a cache associated with the storage controller.

14. The system of claim 7 , wherein the client and the submission queue accelerator communicate using Peripheral Component Interconnect Express (PCIe) protocol, and wherein the submission queue accelerator and the storage controller communicate using the PCIe protocol.

15. The system of claim 7 , wherein the command is one selected from a group consisting of a read request and a write request.

16. A method for writing data to server submission queues in a storage controller, comprising:

receiving an input/output (I/O) request, wherein the I/O request comprises a command and a priority class, wherein the I/O request is associated with a virtual submission queue (vSQ), and wherein the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller;

obtaining a virtual server queue identifier (vSQ ID) associated with vSQ;

obtaining the priority class from the I/O request;

identifying a server submission queue (sSQ) based on the priority class and a priority class-to-sSQ mapping;

generating a submission queue entry comprising the command, the priority class, and the vSQ ID; and

sending the submission queue entry to the storage controller, wherein the sSQ is located in the memory, wherein the storage controller is configured to place the submission queue entry in the sSQ.

17. The method of claim 16 , further comprising:

prior to receiving the I/O request, receiving the priority class-to-sSQ mapping from the storage controller.

18. The method of claim 16 , wherein the priority class is one of the plurality of priority classes and wherein the priority class is selected to be included in the I/O request is based on at least one selected from a group consisting of the command and the client.

19. The method of claim 16 , wherein the plurality of priority classes are pre-specified by a submission queue accelerator, and wherein a meaning associated with each of the plurality of priority classes may be determined dynamically.

20. The method of claim 16 , further comprising:

receiving a second I/O request from the client, wherein the second I/O request is associated with a second vSQ, wherein the second I/O request comprises a second command, wherein the second I/O request does not include any of the plurality of priority classes, and wherein the second vSQ appears to the client as a second set of memory locations in the memory;

obtaining a second vSQ ID associated with the second vSQ;

identifying a second sSQ based on the second vSQ ID and a vSQ-to-sSQ mapping;

generating a second submission queue entry comprising the second command and the second vSQ ID; and

sending the second submission queue entry to the storage controller, wherein the second sSQ is located in the memory, wherein the storage controller is configured to place the second submission queue entry in the second sSQ.

Assignments (11)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
MERGER Recorded Sep 10, 2016
From: DSSD, INC.
To: EMC CORPORATION
Reel/Frame 039694/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2013
From: SHAPIRO, MICHAEL W.; MOLLOV, TODOR
To: DSSD, INC.
Reel/Frame 030504/0263 →