IP Library Patent Application 12340854
Patent Application
App. No. 12/340,854

METHOD, APPARATUS AND SYSTEM FOR TRANSMITTING MULTIPLE INPUT/OUTPUT (I/O) REQUESTS IN AN I/O PROCESSOR (IOP)

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 None
App. No.
12/340,854
Abstract

A method, apparatus and system for transmitting multiple I/O requests from an input/output processor (IOP) to an I/O device. The IOP is configured with multiple I/O threads, each having a corresponding active I/O, that allow a queuing thread to coordinate the transfer of multiple I/O requests at a time from the output of the device queue to the active I/Os and their I/O threads. The queuing thread and a promotion algorithm are configured to consider the promotion of one or more I/O requests ahead of other I/O requests in the device queue, based on a set of promotion requirements. After processing by the I/O threads, multiple I/O requests are transferred at a time from the multiple active I/Os to the I/O device. Promotion of I/O requests based on the promotion requirements improves processing efficiency by making better use of the multiple I/O thread processing resources.

Claims (42)

1 . A method for sending I/O requests from an input/output processor (IOP) to an I/O device coupled to the IOP, the method comprising:

receiving a plurality of I/O requests;

queuing the plurality of I/O requests in a device queue based on the order in which the I/O requests were received;

moving I/O requests from the device queue to one of a plurality of active I/Os corresponding to a plurality of I/O threads, wherein each I/O thread is configured to transfer an I/O request from the device queue to a corresponding active I/O, and wherein the plurality of I/O threads are configured to process multiple I/O requests at a time for transmission to the I/O device;

controlling the movement of an I/O request from the device queue to one of the active I/Os based on the set of promotion requirements; and

sending multiple I/O requests processed by the plurality of I/O threads to the I/O device.

2 . The method as recited in claim 1 , wherein the controlling step comprises promoting an I/O request ahead of at least one other I/O request from the device queue to an active I/O based on a set of promotion requirements.

3 . The method as recited in claim 1 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that no data read I/O request can be promoted ahead of any other I/O request in the device queue if the data read I/O request overlaps a data write I/O request in any of the plurality of active I/Os or if there is an overlapping data write I/O request ahead of the data read I/O request in the device queue.

4 . The method as recited in claim 1 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that no data write I/O request can be promoted ahead of any other I/O request in the device queue if the data write I/O request overlaps a data read I/O request or another data write I/O request in any of the plurality of active I/Os or if there is an overlapping data read I/O request or an overlapping data write I/O request ahead of the data write I/O request in the device queue.

5 . The method as recited in claim 1 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that none of the plurality of active I/Os includes an I/O request that is not a data read I/O request or not a data write I/O request.

6 . The method as recited in claim 1 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that, for any I/O request that is not a data read I/O request or not a data write I/O request, there is no other I/O request before the I/O request in the device queue.

7 . The method as recited in claim 1 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that, for any I/O request that is not a data read I/O request or not a data write I/O request, there is no I/O request in any of the plurality of active I/Os.

8 . The method as recited in claim 1 , wherein each I/O request in the device queue has a skip count, and wherein the skip count of the corresponding I/O request is incremented by one each time the corresponding I/O request is skipped over by a promoted I/O request.

9 . The method as recited in claim 8 , wherein, if the skip count of an I/O request reaches a first threshold level, the I/O request cannot be skipped over by another I/O request.

10 . The method as recited in claim 1 , wherein at least a portion of the controlling step is performed by at least one of a queuing thread coupled to the device queue and a promotion algorithm coupled between the queuing thread and the device queue.

11 . The method as recited in claim 1 , wherein at least a portion of the controlling step is performed by at least one of the plurality of I/O threads.

12 . An apparatus for sending I/O requests from an input/output processor (IOP) to an I/O device coupled to the IOP, the apparatus comprising:

a request queue configured for receiving I/O requests;

a device queue configured for queuing a plurality of I/O requests, the device queue having an input end and an output end;

a queuing thread coupled between the request queue and the device queue, wherein the queuing thread is configured to pull I/O requests from the request queue and deliver pulled I/O requests to the input end of the device queue;

a plurality of I/O threads for processing multiple I/O requests at a time for transmission to the I/O device; and

a plurality of active I/Os corresponding to the plurality of I/O threads and coupled between the device queue and a respective one of the I/O threads, wherein each I/O thread is configured to transfer an I/O request from the output end of the device queue to a corresponding active I/O,

wherein at least one of the queuing thread and the plurality of I/O threads are configured to promote an I/O request ahead of at least one other I/O request from the device queue to an active I/O based on a set of promotion requirements.

13 . The apparatus as recited in claim 12 , further comprising a promotion algorithm element configured to control the movement of an I/O request from the device queue to one of the active I/Os based on the set of promotion requirements.

14 . The apparatus as recited in claim 13 , wherein the promotion algorithm element is coupled between the queuing thread and the device queue.

15 . The apparatus as recited in claim 13 , wherein at least a portion of the promotion algorithm element is coupled to or included within at least one of the queuing thread and the plurality of I/O threads.

16 . The apparatus as recited in claim 12 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that no data read I/O request can be promoted ahead of any other I/O request in the device queue if the data read I/O request overlaps a data write I/O request in any of the plurality of active I/Os or if there is an overlapping data write I/O request ahead of the data read I/O request in the device queue.

17 . The apparatus as recited in claim 12 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that no data write I/O request can be promoted ahead of any other I/O request in the device queue if the data write I/O request overlaps a data read I/O request or another data write I/O request in any of the plurality of active I/Os or if there is an overlapping data read I/O request or an overlapping data write I/O request ahead of the data write I/O request in the device queue.

18 . The apparatus as recited in claim 12 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that none of the plurality of active I/Os includes an I/O request that is not a data read I/O request or not a data write I/O request.

19 . The apparatus as recited in claim 12 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that, for any I/O request that is not a data read I/O request or not a data write I/O request, there is no other I/O request before the I/O request in the device queue.

20 . The apparatus as recited in claim 12 , wherein the I/O requests include data read I/O requests and data write I/O requests, and wherein the set of promotion requirements comprises a requirement that, for any I/O request that is not a data read I/O request or not a data write I/O request, there is no I/O request in any of the plurality of active I/Os.

21 . The apparatus as recited in claim 12 , wherein each I/O request in the device queue has a skip count, and wherein the skip count of the corresponding I/O request is incremented by one each time the corresponding I/O request is skipped over by a promoted I/O request.

22 . The apparatus as recited in claim 21 , wherein the set of promotion requirements comprises a requirement that, if the skip count of an I/O request reaches a first threshold level, no other I/O request can be promoted over the I/O request having the first threshold level skip count.

23 . The apparatus as recited in claim 12 , wherein each active I/O is configured to determine whether or not the corresponding I/O thread is processing an I/O request.

24 . The apparatus as recited in claim 23 , wherein each active I/O has a first “in use” state when the corresponding I/O thread is processing an I/O request and a second “free” state when the corresponding I/O thread is not processing an I/O request.

25 . The apparatus as recited in claim 12 , wherein the queuing thread is configured to, in response to an I/O request being promoted from the device queue to an active I/O, activate the corresponding I/O thread for processing the I/O request received by the active I/O.

26 . A computer readable medium having instructions stored thereon that, when executed by a processor, carry out a method for sending I/O requests from an input/output processor (IOP) to an I/O device coupled to the IOP, the instructions comprising:

receiving a plurality of I/O requests;

queuing the plurality of I/O requests in a device queue based on the order in which the I/O requests were received;

moving I/O requests from the device queue to one of a plurality of active I/Os corresponding to a plurality of I/O threads, wherein each I/O thread is configured to transfer an I/O request from the device queue to a corresponding active I/O, and wherein the I/O threads are configured to process multiple I/O requests at a time for transmission to the I/O device; and

controlling the movement of an I/O request from the device queue to one of the active I/Os based on the set of promotion requirements.

27 . The computer readable medium as recited in claim 26 , wherein controlling the movement of an I/O request comprises promoting an I/O request ahead of at least one other I/O request from the device queue to an active I/O based on a set of promotion requirements.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 9, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION (SUCCESSOR TO GENERAL ELECTRIC CAPITAL CORPORATION)
To: UNISYS CORPORATION
Reel/Frame 044416/0358 →
SECURITY AGREEMENT Recorded Jun 27, 2011
From: UNISYS CORPORATION
To: GENERAL ELECTRIC CAPITAL CORPORATION, AS AGENT
Reel/Frame 026509/0001 →
RELEASE BY SECURED PARTY Recorded Sep 14, 2009
From: CITIBANK, N.A.
To: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
Reel/Frame 023263/0631 →
RELEASE BY SECURED PARTY Recorded Jul 31, 2009
From: CITIBANK, N.A.
To: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
Reel/Frame 023312/0044 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT Recorded Feb 10, 2009
From: UNISYS CORPORATION
To: CITIBANK, N.A.
Reel/Frame 022237/0172 →