A system and method are provided for dynamically determining the priority of requests for access to a resource taking into account changes in the access needs of a requesting agent over time. A requesting agent selects a priority level from a plurality of priority selections to include with a priority request to an arbiter. work requests requiring the access to a resource may be stored in a work request queue. The priority level may be dynamic. The dynamic priority level enables the agent to sequentially increase or decrease the priority level of a priority request when threshold values representing the number of work requests in the work request queue are reached. The threshold values which cause the priority level to be increased may be higher than the threshold values which cause the priority level to be decreased to provide hysteresis. The dynamic priority level may, alternatively, enable the agent to start a timer for timing a pending priority request for a predetermined time period. The priority level of the priority request is increased if the priority request has not been granted before the timer expires.
|
1. A method of arbitrating priority requests for access to a resource for use in a computing system having an arbiter and the resource, the method comprising:
selecting a priority level corresponding to one of a plurality of different selections for a priority request, wherein at least one of the plurality of different priority selections is a dynamic priority level;
assigning a first priority level to the dynamic priority level;
increasing the dynamic priority level to a second priority level if the number of pending work requests in a work request queue rises above a first threshold value;
making the priority request at the selected priority level to the arbiter; and
receiving access to the resource from the arbiter based on the priority level.
20. An agent for determining the priority of requests for access to a resource comprising:
a configuration register for storing a set of priority levels, each of the priority levels corresponding to one of a plurality of different priority selections, wherein at least one of the plurality of different priority selections is dynamic;
a selector for selecting one of the priority levels from the configuration register to include in a priority request to an arbiter for access to the resource, wherein the selector selects a first priority level to correspond to the dynamic priority level; and
a work request queue for storing pending work requests;
wherein the selector changes the priority request to a second priority level if the number of pending work requests in the work request queue rises above a first threshold value, wherein the second priority level is higher than the first priority level.
11. A computing system comprising:
a resource;
a plurality of agents that make priority requests for access to the resource, each request having an assigned priority level, wherein each agent comprises:
a configuration register having a priority field for storing a plurality of different priority selections corresponding to the plurality levels which may be assigned to the priority requests, wherein at least one of the plurality of different priority selections is a dynamic priority level, and wherein at least one of the agents assigns a first priority level to the dynamic priority level, and
a work request queue for storing pending work requests, wherein the agent increases the dynamic priority level of the priority request to a second priority level if the number of pending work requests in the work request queue rises above a first threshold value; and
an arbiter, in communication with the plurality of agents and the resource, that receives priority requests for access from the agents and selectively grants the agents access to the resource based on the priority levels of the priority requests.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
12. The computing system of
13. The computing system of
14. The computing system of
15. The computing system of
16. The computing system of
17. The computing system of
18. The computing system of
19. The computing system of
21. The agent of
22. The agent of
23. The agent of
24. The agent of
25. The agent of
26. The agent of
27. The agent of
|
The present invention relates to an arbitration mechanism for awarding priority to one of a plurality of agents, in particular, a mechanism allowing the agent to dynamically determine the priority level to give to requests for access to a resource.
Where there is a single resource in a computing system whether the resource is a bus, an SRAM, a FIFO, etc., an arbitrator is required to control access to the resource from among a plurality of requesting agents. In accordance with many arbitration schemes, an arbiter assigns a priority level to each request made by the agents and decides which agents get access based on the assigned priority. Typically, requests with higher priority are given preferred access, preempting requests with lower priority. Agents making requests at the same priority level are given access in an equitable or round robin fashion. In these aforementioned arbitration schemes, however, the priority assigned to the agents is just a best guess as to what the current access needs of the agents are. As a result, agents whose access needs change over time (and thus requiring a higher priority) may be starved from access to the resource
In accordance with various embodiments of the invention a system and method are provided for dynamically determining the priority of requests for access to a resource taking into account changes in the access needs of agents over time.
According to one embodiment, a method is provided for determining the priority of requests to an arbiter for accessing a resource. A priority level is selected from a plurality of priority selections for a priority request. The priority request, including the selected priority level, is made to the arbiter. The priority request having the highest priority level receives access to the resource first. Two or more priority requests having the same priority level may be granted access round-robin. The priority selection may be dynamic. The dynamic priority level may be initially set to a first priority level. The selection of the dynamic priority level increases or decreases the priority level of a priority request based on when threshold values representing the number of work requests awaiting access in a work request queue are reached. The threshold values which cause the priority level to be increased may be higher than the threshold values which cause the priority level to be decreased to provide hysteresis.
According to a further embodiment of the invention, the dynamic priority selection starts a timer for timing a request for a predetermined time period. The request is changed to a higher priority level if the request has not received access to the resource before the timer expires.
A computing system embodiment of the invention includes a resource, a plurality of agents for making priority requests for access to the resource and an arbiter in communication with the agents and the resource. The agents may have a work request queue for storing work requests. The agents assign each priority request a priority level which may be selected from a configuration register. When the dynamic priority level is selected an agent may increase or decrease the priority level of a priority request when certain threshold levels are reached. The threshold levels may correspond to the number of work requests in the work request queue.
In accordance with another embodiment of the invention an agent is provided for determining the priority of requests for access to a resource. The agent includes a configuration register for storing a set of priority levels and a selector for selecting one of the priority levels to assign to a priority request for access. When the dynamic priority level is selected, the agent may automatically increase or decrease the priority level of a priority request based on the number of work requests in the agent's work request queue. The ability of the agent to dynamically change the priority of its own requests can help prevent the agent from being starved from access to the resource.
The foregoing features of the invention will be more readily understood by reference to the following detailed description, taken with reference to the accompanying drawings, in which:
Referring to
Work requests solicit the resource once the priority request has been awarded access to the resource. An agent may store multiple work requests that require resource access in a work request queue until the priority request is granted. Once the agent gains access to the resource the next work request in the work request queue is made for access to the resource.
In the computing system 100, agents 103 send signals to the arbiter indicating a priority request. Priority requests may be any one of several priority levels including low priority, medium priority or high priority. The arbiter 102 utilizes an algorithm employing fixed-priority arbitration among priority levels and round-robin arbitration within a priority level. In fixed-priority arbitration, the arbiter 102 grants first access to agents making high priority requests. If no agent makes a high priority request, then the arbiter 102 grants first access to agents making medium priority requests. If no agent makes a high or medium priority request, then the arbiter 102 grants access to agents making low priority requests. Agents making requests at the same priority share access in round-robin fashion (i.e., the agent which was not previously granted access by the arbiter has priority over the agent which was). Fixed-priority and round-robin arbitration algorithms for determining access are well known to those of ordinary skill in the art. Once priority is determined, the arbiter 102 sends a signal to the appropriate agent granting access to the resource.
Agents 103 determine the priority level of the requests sent to the arbiter using a request priority algorithm. An embodiment of an agent that may be used in the invention is shown in FIG. 2. As shown in
Configuration register 204 is divided into fields as shown in the table of FIG. 3. The ENABLE indicates whether or not an agent is able to make priority requests. The PRIORITY field stores priority levels (low, medium, high and dynamic). Each priority level is represented by a two-bit code. Depending on the request priority algorithm used, the agent 103 may be programmed to select a fixed priority level (i.e., low, medium or high). In the fixed request priority algorithm all priority requests will be sent to the arbiter at low, medium or high priority. In other embodiments, the agent may be programmed to select the dynamic priority level, that is, the agent automatically increases the priority level of requests as the access needs of the agent change over time. Once the dynamic priority level is selected, a priority request is sent to the arbiter at an initial predetermined priority level. L2M (low-to-medium priority), M2L (medium-to-low priority), M2H (medium-to-high priority) and H2M (high-to-medium priority) are work request queue fields utilized in the dynamic request priority algorithm. The dynamic request priority algorithm may be based upon queue entry threshold values in the work request queue fields. Each threshold value represents the number of work requests in the work request queue that will trigger the agent to change the priority request to a new priority level. In this embodiment, work request queue field L2M stores a first threshold value, M2L stores a second threshold value, M2H stores a third threshold value, and H2M stores a fourth threshold value.
As described above and in accordance with the various embodiments of the invention, the configuration register 204 and the selector 206 are programmable and may be implemented in hardware. The request priority algorithms may be implemented in software and are described below with respect to
Referring now to
Referring now to
In accordance with an embodiment of the present invention, the queue threshold values are programmable. Software instructions can be used to set the threshold values for each of the work request queue fields L2M, M2L, M2H and H2M. Although each work request queue field may be individually programmed with a desired threshold value it is generally advantageous to set the rising threshold values for fields L2M and M2H higher than the falling threshold values for fields M2L and H2M to provide a hysteresis effect. This prevents the agent from having to constantly shift priority levels due to minute changes in the queue. For example, if L2M has a threshold value of 5 and M2L has a threshold value of 2, the agent would increase the priority level of a priority request from low to medium when the queue reached five or more work requests and would not decrease the priority level from medium to low until the number of work requests in the queue fell to two. The initial priority level for the dynamic request priority algorithm may be programmed to be any fixed priority level.
In addition to the embodiments hereinbefore described, many modifications and refinements which do not depart from the true spirit and scope of the invention may be conceived by those of ordinary skill in the art. For example, the arbitration algorithms for the arbiter need not be limited to fixed and round-robin. The number of work request queue fields and the number of corresponding threshold values may be larger or smaller. It is intended that all such modifications, including but not limited to those set forth above, be covered by the following claims.
Patent | Priority | Assignee | Title |
10140179, | Jun 26 2007 | International Business Machines Corporation | Combined group ECC protection and subgroup parity protection |
10412194, | Dec 10 2015 | MASSACHUSETTS MUTUAL LIFE INSURANCE COMPANY | Systems and methods for managing computer-based requests |
11023392, | Feb 21 2019 | STMicroelectronics (Grenoble 2) SAS | Method for arbitrating access to a shared memory, and corresponding electronic device |
11115499, | Dec 10 2015 | MASSACHUSETTS MUTUAL LIFE INSURANCE COMPANY | Systems and methods for managing computer-based requests |
11528365, | Sep 30 2021 | Avaya Management L.P. | Facilitation of communication among individuals waiting in a contact center queue |
11829305, | Mar 20 2020 | Imagination Technologies Limited | Priority based arbitration |
7024506, | Dec 27 2002 | MONTEREY RESEARCH, LLC | Hierarchically expandable fair arbiter |
7051133, | Nov 25 2002 | Renesas Electronics Corporation; NEC Electronics Corporation | Arbitration circuit and data processing system |
7099972, | Jul 03 2002 | Oracle America, Inc | Preemptive round robin arbiter |
7111098, | Oct 01 2002 | Sony Corporation | Information processing apparatus, information processing method, recording medium and program |
7356631, | Jan 21 2005 | Himax Technologies, Inc. | Apparatus and method for scheduling requests to source device in a memory access system |
7380034, | Dec 18 2001 | Canon Kabushiki Kaisha | Method of arbitration for bus use request and system therefor |
7571270, | Nov 29 2006 | CONSENTRY NETWORKS, INC | Monitoring of shared-resource locks in a multi-processor system with locked-resource bits packed into registers to detect starved threads |
7647444, | Mar 13 2007 | Oracle America, Inc | Method and apparatus for dynamic hardware arbitration |
7680971, | Jun 26 2007 | International Business Machines Corporation | Method and apparatus for granting processors access to a resource |
7689750, | Mar 13 2008 | Dell Products L.P. | System and method to dynamically order system management interrupt handler dispatches |
7694040, | Dec 12 2003 | VIA Technologies, Inc. | Method and apparatus of arranging priority queue and arbitrating for memory access requests |
7793038, | Jun 26 2007 | International Business Machines Corporation | System and method for programmable bank selection for banked memory subsystems |
7802025, | Jun 26 2007 | International Business Machines Corporation | DMA engine for repeating communication patterns |
7827391, | Jun 26 2007 | International Business Machines Corporation | Method and apparatus for single-stepping coherence events in a multiprocessor system under software control |
7877551, | Jun 26 2007 | International Business Machines Corporation | Programmable partitioning for high-performance coherence domains in a multiprocessor system |
7886084, | Jun 26 2007 | International Business Machines Corporation | Optimized collectives using a DMA on a parallel computer |
7984448, | Jun 26 2007 | International Business Machines Corporation | Mechanism to support generic collective communication across a variety of programming models |
8010875, | Jun 26 2007 | International Business Machines Corporation | Error correcting code with chip kill capability and power saving enhancement |
8032633, | Jun 10 2008 | HULU, LLC | Computer-implemented method for implementing a requester-side autonomic governor using feedback loop information to dynamically adjust a resource threshold of a resource pool scheme |
8032892, | Jun 26 2007 | International Business Machines Corporation | Message passing with a limited number of DMA byte counters |
8046559, | Mar 27 2008 | Intel Corporation | Memory rank burst scheduling |
8065458, | Jun 15 2006 | Sony Corporation | Arbitration apparatus, method, and computer readable medium with dynamically adjustable priority scheme |
8103832, | Jun 26 2007 | International Business Machines Corporation | Method and apparatus of prefetching streams of varying prefetch depth |
8108738, | Jun 26 2007 | International Business Machines Corporation | Data eye monitor method and apparatus |
8140925, | Jun 26 2007 | International Business Machines Corporation | Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan |
8230433, | Jun 26 2007 | International Business Machines Corporation | Shared performance monitor in a multiprocessor system |
8250212, | Jun 10 2008 | HULU, LLC | Requester-side autonomic governor |
8307147, | Sep 09 2005 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Interconnect and a method for designing an interconnect |
8458282, | Jun 26 2007 | International Business Machines Corporation | Extended write combining using a write continuation hint flag |
8468416, | Jun 26 2007 | International Business Machines Corporation | Combined group ECC protection and subgroup parity protection |
8478950, | Jul 29 2008 | VL C V | Data processing circuit with arbitration between a plurality of queues |
8509255, | Jun 26 2007 | International Business Machines Corporation | Hardware packet pacing using a DMA in a parallel computer |
8561076, | Jun 30 2004 | EMC IP HOLDING COMPANY LLC | Prioritization and queuing of media requests |
8700830, | Nov 20 2007 | MONTEREY RESEARCH, LLC | Memory buffering system that improves read/write performance and provides low latency for mobile systems |
8725923, | Mar 31 2011 | EMC IP HOLDING COMPANY LLC | BMC-based communication system |
8756350, | Jun 26 2007 | International Business Machines Corporation | Method and apparatus for efficiently tracking queue entries relative to a timestamp |
8904392, | Jun 26 2007 | International Business Machines Corporation | Shared performance monitor in a multiprocessor system |
9252814, | Jun 26 2007 | International Business Machines Corporation | Combined group ECC protection and subgroup parity protection |
9262357, | Sep 29 2008 | International Business Machines Corporation | Associating process priority with I/O queuing |
9477617, | Nov 20 2007 | MONTEREY RESEARCH, LLC | Memory buffering system that improves read/write performance and provides low latency for mobile systems |
9507737, | Sep 19 2012 | ARM Limited | Arbitration circuitry and method |
9665515, | Jul 06 2012 | Canon Kabushiki Kaisha | Bus arbitration apparatus provided to a bus connected to a plurality of bus masters, bus arbitration method, and computer-readable storage medium |
9781057, | Jun 21 2013 | EMC IP HOLDING COMPANY LLC | Deadlock avoidance techniques |
9959229, | Sep 29 2008 | International Business Machines Corporation | Associating process priority with I/O queuing |
Patent | Priority | Assignee | Title |
5619661, | Jun 05 1995 | ST Wireless SA | Dynamic arbitration system and method |
5862353, | Mar 25 1997 | International Business Machines Corporation; IBM Corporation | Systems and methods for dynamically controlling a bus |
5884051, | Jun 13 1997 | IBM Corporation | System, methods and computer program products for flexibly controlling bus access based on fixed and dynamic priorities |
5983302, | May 08 1995 | Apple Inc | Method and apparatus for arbitration and access to a shared bus |
6088751, | Feb 12 1998 | VLSI Technology, Inc. | Highly configurable bus priority arbitration system |
6473817, | Oct 15 1998 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Method and apparatus for efficient bus arbitration |
6629220, | Aug 20 1999 | Intel Corporation | Method and apparatus for dynamic arbitration between a first queue and a second queue based on a high priority transaction type |
6647449, | Oct 05 2000 | Hewlett Packard Enterprise Development LP | System, method and circuit for performing round robin arbitration |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 18 2002 | Sun Microsystems, Inc | (assignment on the face of the patent) | / | |||
Mar 18 2002 | KURTH, HUGH | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 012717 | /0799 | |
Feb 12 2010 | ORACLE USA, INC | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037278 | /0877 | |
Feb 12 2010 | Sun Microsystems, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037278 | /0877 | |
Feb 12 2010 | Oracle America, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037278 | /0877 |
Date | Maintenance Fee Events |
Sep 22 2008 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 12 2012 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 29 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 12 2008 | 4 years fee payment window open |
Oct 12 2008 | 6 months grace period start (w surcharge) |
Apr 12 2009 | patent expiry (for year 4) |
Apr 12 2011 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 12 2012 | 8 years fee payment window open |
Oct 12 2012 | 6 months grace period start (w surcharge) |
Apr 12 2013 | patent expiry (for year 8) |
Apr 12 2015 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 12 2016 | 12 years fee payment window open |
Oct 12 2016 | 6 months grace period start (w surcharge) |
Apr 12 2017 | patent expiry (for year 12) |
Apr 12 2019 | 2 years to revive unintentionally abandoned end. (for year 12) |