IP Library › Granted Patent US 9,176,672
Granted Patent B2
US 9,176,672 · App. 14/659,279 · Granted Nov 3, 2015

Input/output (I/O) command aggregation

Inventors: Qun Zhao (Pleasanton, CA); Xinhai Kang (Milpitas, CA); Michael Wang (Shanghai, CN); Jacky Feng (Shanghai, CN); Nancy Xu (Shanghai, CN); Andy Yan (Shanghai, CN)
Assignee: Marvell International Ltd.
G06F3/061G06F3/067G06F3/0659G06F13/102G06F13/42
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,176,672
App. No.
14/659,279
Filed
Mar 16, 2015
Granted
Nov 3, 2015
Kind
B2
Art Unit
2181
USPC
710/33
Abstract

Systems and techniques relating to input/output (I/O) command aggregation include, according to at least one implementation, a method including receiving a first command from a device driver through interface hardware for accessing a storage device; identifying the received command as an aggregation command having a tag corresponding to consolidated command information; communicating a transfer ready notification to the device driver; receiving the consolidated command information from the device driver, wherein the consolidated command information includes memory addresses and data transfer counts for a defined quantity of aggregated I/O commands or for aggregated I/O commands that are received within a defined period of time; storing the consolidated command information in memory; receiving a second command including the tag corresponding to the consolidated command information; and processing the second command with respect to the storage device based on the memory addresses and the data transfer counts in the consolidated command information.

Claims (47)

1. A method comprising:

receiving a first command from a device driver through interface hardware for accessing a storage device;

identifying the received command as an aggregation command having a tag corresponding to consolidated command information;

communicating a transfer ready notification to the device driver;

receiving the consolidated command information from the device driver, wherein the consolidated command information includes memory addresses and data transfer counts for a defined quantity of aggregated input/output (I/O) commands or for aggregated I/O commands that are received within a defined period of time;

storing the consolidated command information in memory;

receiving a second command including the tag corresponding to the consolidated command information; and

processing the second command with respect to the storage device based on the memory addresses and the data transfer counts in the consolidated command information.

2. The method of claim 1 , wherein the consolidated command information includes the memory addresses and the data transfer counts for the aggregated I/O commands that are received within the defined period of time, and the defined period of time is specified based on a processing capability of the device driver.

3. The method of claim 1 , wherein the consolidated command information includes the memory addresses and the data transfer counts for the aggregated I/O commands that are received within the defined period of time, and the defined period of time is specified based on an I/O processing strength of the storage device.

4. The method of claim 1 , wherein the consolidated command information includes the memory addresses and the data transfer counts for the defined quantity of aggregated I/O commands, and the defined quantity is specified based on a processing capability of the device driver.

5. The method of claim 1 , wherein the consolidated command information includes the memory addresses and the data transfer counts for the defined quantity of aggregated I/O commands, and the defined quantity is specified based on an I/O processing strength of the storage device.

6. The method of claim 1 , wherein the interface hardware uses a small computer system interface (SCSI) standard.

7. The method of claim 6 , wherein the storage device comprises a solid state disk (SSD).

8. The method of claim 7 , wherein the aggregated I/O commands are all read commands specified in the consolidated command information comprising a consolidated command table including a list of sub-commands having a specified command format.

9. The method of claim 8 , wherein processing the second command comprises:

sending data from the storage device to the device driver in accordance with the memory addresses and the data transfer counts in the consolidated command information; and

sending a response to the device driver, wherein the response includes a status of the storage device and the data send.

10. The method of claim 7 , wherein the aggregated I/O commands are all write commands specified in the consolidated command information comprising a consolidated command table including a list of sub-commands having a specified command format.

11. The method of claim 10 , wherein processing the second command comprises:

sending a transfer ready notification to the device driver;

receiving data from the device driver;

storing the received data in the storage device in accordance with the memory addresses and the data transfer counts in the consolidated command information; and

sending a response to the device driver.

12. A non-transitory computer-readable medium encoding a program operable to cause one or more data processing apparatus to perform operations comprising:

receiving input/output (I/O) commands comprising read and write commands for two or more target storage devices;

grouping the received I/O commands, the grouping comprising entering commands in different device groups for different ones of the two or more target storage devices and entering read commands and write commands for respective target storage devices of the two or more target storage devices into respective separate read groups and write groups;

obtaining I/O command aggregates from the read groups and write groups, wherein each of the I/O command aggregates is an entirely read command aggregate or an entirely write command aggregate for one of the two or more target storage devices; and

sending the obtained I/O command aggregates to respective ones of the two or more target storage devices;

wherein obtaining the I/O command aggregates from the read groups and write groups comprises generating the I/O command aggregates based on a processing capability of the program on the one or more data processing apparatus and based on an I/O processing strength of the two or more target storage devices.

13. The computer-readable medium of claim 12 , wherein generating the I/O command aggregates comprises aggregating a defined quantity of I/O commands.

14. The computer-readable medium of claim 12 , wherein generating the I/O command aggregates comprises aggregating I/O commands that are received within a defined period of time.

15. The computer-readable medium of claim 12 , wherein sending the obtained I/O command aggregates to respective ones of the two or more target storage devices comprises:

preparing consolidated command information for an I/O command aggregate for a target storage device;

sending a first command to the target storage device through small computer system interface (SCSI) hardware, the first command having a tag corresponding to the consolidated command information;

receiving a transfer ready notification from the target storage device;

sending the consolidated command information to the target storage device; and

sending a second command including the tag corresponding to the consolidated command information.

16. The computer-readable medium of claim 15 , wherein the target storage device comprises a solid state disk (SSD).

17. The computer-readable medium of claim 16 , wherein the consolidated command information comprises a consolidated command table including a list of sub-commands having a specified command format with memory addresses and data transfer counts.

18. The computer-readable medium of claim 17 , wherein the sub-commands are all read commands, and sending the obtained I/O command aggregates to respective ones of the two or more target storage devices comprises:

receiving data from the target storage device in accordance with the memory addresses and the data transfer counts in the consolidated command information; and

receiving a response from the target storage device, wherein the response includes a status of the target storage device.

19. The computer-readable medium of claim 17 , wherein the sub-commands are all write commands, and sending the obtained I/O command aggregates to respective ones of the two or more target storage devices comprises:

receiving a transfer ready notification from the target storage device;

sending data to the target storage device, the data corresponding to the memory addresses and the data transfer counts; and

receiving a response from the target storage device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
Continuity (5)
Continuation 13851908 · Mar 27, 2013
Continuation In Part 13645370 · Oct 4, 2012
Provisional Application 61618238 · Mar 30, 2012
Provisional Application 61543929 · Oct 6, 2011
Related Publication 20150253995A1 · Sep 10, 2015