Centralized management of resources shared by multiple processing units
First Claim
1. In a computer system including a plurality of requesting agents and a plurality of resources, said requesting agents sharing access to and control over said resources, a method for coordinating the execution of I/O requests received from requesting agents to avoid resource sharing inefficiencies and deadlock situations, said method comprising the steps of:
- (A) establishing a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said requesting agents, and wherein each of said entries includes an identification of resources that are required by the corresponding I/O request;
(B) maintaining a resources available status array, said resources available status array including an entry for each resource which is not currently in use by any requesting agent and is not currently reserved for future use by any requesting agent;
(C) systematically comparing each entry in said request queue with the entries in said resources available status array to detect an entry in said request queue identifying resources all of which are contained in said resources available status array;
(D) granting control of the resources associated with said entry detected in step C to the requesting agent providing the I/O request; and
(E) executing the I/O request corresponding to the entry identified in step C.
7 Assignments
0 Petitions
Accused Products
Abstract
Resource allocation logic for a computer system including a plurality of processors which share access to, and control of, a plurality of resources, such as disk drive units or busses. The resource allocation logic coordinates the execution of requests received from the processors to avoid resource sharing inefficiencies and deadlock situations. The allocation logic maintains a "request" queue for each processor, seeking to satisfy all requests quickly and fairly. The queues contain an entry corresponding to each request received from its corresponding processor and an identification of resources that are required by the entry'"'"'s corresponding request. The allocation logic also maintains a "resources available" status array of resources which are not currently in use by any processors, or are not reserved for future use by any processors. The logic repeatedly compares each entry in the request queues with the entries in the resources available status array to detect an entry in the request queue identifying resources all of which are contained in the resources available status array. Once the allocation logic can satisfy a particular request, it signals a grant to the requesting processor for the resources requested. The requested resources are removed from the resources available status array. Upon conclusion of execution of the granted request, the resources are again released to the resource allocation logic for utilization by other resource requests. Additionally, each request queue contains a list age indicating the relative age of each request queue with respect to the other request queues, and each entry in the request queues includes a request age indicating the relative age of each entry in a request queue with respect to other entries in the request queue. In examining the request queues to identify I/O requests for execution, priority is awarded to entries based on the relative ages of the request queues and request queue entries.
-
Citations
38 Claims
-
1. In a computer system including a plurality of requesting agents and a plurality of resources, said requesting agents sharing access to and control over said resources, a method for coordinating the execution of I/O requests received from requesting agents to avoid resource sharing inefficiencies and deadlock situations, said method comprising the steps of:
-
(A) establishing a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said requesting agents, and wherein each of said entries includes an identification of resources that are required by the corresponding I/O request; (B) maintaining a resources available status array, said resources available status array including an entry for each resource which is not currently in use by any requesting agent and is not currently reserved for future use by any requesting agent; (C) systematically comparing each entry in said request queue with the entries in said resources available status array to detect an entry in said request queue identifying resources all of which are contained in said resources available status array; (D) granting control of the resources associated with said entry detected in step C to the requesting agent providing the I/O request; and (E) executing the I/O request corresponding to the entry identified in step C. - View Dependent Claims (2, 3, 4, 5, 7, 8, 20, 21)
-
-
6. In a computer system including a plurality of requesting agents and a plurality of resources, said requesting agents sharing access to and control over said resources, a method for coordinating the execution of I/O requests received from requesting agents to avoid resource sharing inefficiencies and deadlock situations, said method comprising the steps of:
-
(A) establishing a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said requesting agents, and wherein each of said entries includes an identification of resources that are required by the corresponding I/O request; (B) maintaining a resources available status array, said resources available status array including an entry for each resource which is not currently in use by any requesting agent and is not currently reserved for future use by any requesting agent; (C) systematically comparing each entry in said request queue with the entries in said resources available status array to detect an entry in said request queue identifying resources all of which are contained in said resources available status array; (D) granting control of the resources associated with said entry detected in step C to the requesting agent providing the I/O request; and (E) executing the I/O request corresponding to the entry identified in step C, wherein said resources include busses within said computer system. - View Dependent Claims (18)
-
-
9. In a computer system including a plurality of requesting agents and a plurality of resources, said requesting agents sharing access to and control over said resources, a method for coordinating the execution of I/O requests received from requesting agents to avoid resources sharing inefficiencies and deadlock situations, said method comprising the steps of:
-
(A) establishing a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said requesting agents, and wherein each of said entries includes an identification of resources that are required by the corresponding I/O request; (B) maintaining a resources available status array, said resources available status array including an entry for each resource which is not currently in use by any requesting agent and is not currently reserved for future use by any requesting agent; (C) systematically comparing each entry in said request queue with the entries in said resources available status array to detect an entry in said request queue identifying resources all of which are contained in said resources available status array; (D) granting control of the resources associated with said entry detected in step C to the requesting agent providing the I/O request; and (E) executing the I/O request corresponding to the entry identified in step C, wherein said requesting agents are disk array controllers within a disk array subsystem within said computer system; and
said resources are disk drives and busses within said disk array subsystem. - View Dependent Claims (19)
-
-
10. In a disk array system including a plurality of disk array controllers and a plurality of disk drives and busses under the control of a plurality of processors, a method for coordinating the operation of said disk array controllers, said method comprising the steps of:
-
(A) establishing a request queue for each disk array controller, each request queue including an entry corresponding to an I/O request received by said disk array system, each entry including an identification of resources that are required by said entry'"'"'s corresponding I/O request wherein said resources includes disk drives and busses within said disk array system; (B) maintaining a status array, said status array including an entry for each disk drive and bus which is not currently in use by any disk array controller and is not currently reserved for future use by any disk array controller; (C) systematically comparing each entry in said request queues with the entries in said status array to detect an entry in said request queues identifying resources all of which are contained in said status array; (D) granting control of resources identified by said entry detected in step C to the disk array controller associated with the request queue; and (E) executing the I/O request corresponding to the entry identified in step C. - View Dependent Claims (11, 12, 13, 22, 23)
-
-
14. In a computer system including a plurality of requesting agents and a plurality of resources, said requesting agents sharing access to and control over said resources, a method for coordinating the execution of I/O requests received from requesting agents, said method comprising the steps of:
-
(A) establishing a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said requesting agents, and wherein each of said entries includes an identification of resources that are required by the corresponding I/O request; (B) maintaining a status array, said status array including an entry for each resource which is available; (C) systematically comparing each entry in said request queue with the entries in said status array to detect an entry in said request queue identifying resources all of which are available; (D) executing the I/O request corresponding to the entry identified in step C. - View Dependent Claims (15, 16, 17)
-
-
24. A system for coordinating the activity of a plurality of controllers in a disk array subsystem having a plurality of disk drives, busses, and processors associated therewith, said system comprising:
-
a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received by a controller in said disk array subsystem, wherein each of said entries includes an identification of resources required to execute the corresponding I/O request, and wherein said resources includes disk drives and busses in said disk array subsystem; a status array having a plurality of entries, each entry identifying a disk drive or bus not currently in use by any of said plurality of controllers; control means, associated with said request queue and with said status array, for systematically comparing each entry in said request queue with the entries in said status array to detect an entry in said request queue identifying resources all of which are contained in entries of said status array; and
means, within said control means, for granting control to one of said plurality of controllers of said resources identified by the detected entry in said request queue. - View Dependent Claims (25, 26, 27, 28, 29, 30)
-
-
31. In a computer system having a plurality of requesting agents and a plurality of resources, said plurality of requesting agents sharing access to and control over said plurality of resources, a system for coordinating the the execution of I/O requests received from said plurality of requesting agents to avoid resource sharing inefficiencies and deadlock situations, said system comprising:
-
a request queue comprising a list of entries wherein each of said entries corresponds to an I/O request received from said plurality of requesting agents, and wherein each of said entries includes an identification of resources required to execute the corresponding I/O request; a status array having a plurality of entries, each entry identifying at least one of said plurality of resources not currently in use by any of said plurality of requesting agents; control means, associated with said request queue and with said status array, for systematically comparing each entry in said request queue with the entries in said status array to detect an entry in said request queue identifying resources all of which are contained in entries of said status array; and means, within said control means, for granting control to one of said plurality of requesting agents of said resources identified by the detected entry in said request queue. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38)
-
Specification