Claims
- 1. A number of hardware processing entities that cooperate together to organize themselves into linked lists, each cooperating hardware processing entity comprising:a coupling to a bus by which the hardware processing entity intercommunicates with other hardware processing entities; stored data that includes flags to indicate whether or not the hardware processing entity is currently executing a request, an identifier that identifies the request, a stored flag indicating whether or not the hardware processing entity occupies a head position within a linked list, a stored flag indicating whether or not the hardware processing entity occupies a tail position within a linked list, and a link identifying a next hardware processing entity within a linked list in which the hardware processing entity currently resides; and control logic that recognizes requests broadcast to the bus, accepts requests identified by the stored data, and executes those accepted requests that the hardware processing entity identifies as directly executable, and, for those accepted requests that the hardware processing entity identifies as not directly executable, recruits another hardware processing entity to execute the accepted not directly executable requests, the other hardware processing entity cooperating with the hardware processing entity to link itself to a linked list associated with a subject of the request.
- 2. The number of hardware processing entities of claim 1 wherein, by executing those requests that the hardware processing entity identifies as directly executable, and by recruiting another hardware processing entity to execute those accepted requests that the hardware processing entity identifies as not directly executable, the number of hardware processing entities cooperate to organize themselves into linked lists in orders that ensure a proper overall execution order for requests directed to the hardware processing entities.
- 3. The number of hardware processing entities of claim 2 wherein the linked lists on which the number of hardware processing entities cooperate to organize themselves are never searched, and wherein a hardware processing entity adds itself to a linked list in order to execute a request in two or less clock cycles.
- 4. The number of hardware processing entities of claim 1 wherein, when the hardware processing entity completes execution of a request, the hardware processing entity removes itself from a linked list, promoting a next hardware processing entity on the linked list to a head position, allowing the next hardware processing entity to execute a next request for which the next hardware processing entity was recruited to execute.
- 5. The number of hardware processing entities of claim 4 wherein a hardware processing entity removes itself from a linked list following execution of a request in two or less clock cycles.
- 6. A method for organizing cooperating hardware processing entities that process requests, the method comprising:providing a number of hardware processing entities that cooperate to process requests, each hardware processing entity comprising a coupling to the communications medium, stored data, and control logic that recognizes requests broadcast to communications medium, accepts requests identified by the stored data, and executes those accepted requests that the hardware processing entity identifies as directly executable, and, for those accepted requests that the hardware processing entity identifies as not directly executable, recruits another hardware processing entity to execute the accepted not directly executable requests, the other hardware processing entity cooperating with the hardware processing entity to link itself to a linked list associated with a subject of the request; and coupling the number of hardware processing entities to a communications medium by which the hardware processing entities intercommunicate with one another other; wherein, by executing those requests that the hardware processing entity identifies as directly executable, and by recruiting another hardware processing entity to execute those accepted requests that the hardware processing entity identifies as not directly executable, the number of hardware processing entities cooperate to organize themselves on linked lists in orders that ensure a proper overall execution order for requests directed to the hardware processing entities.
- 7. The method of claim 6 further including never searching the linked lists on which the number of hardware processing entities cooperate to organize themselves.
- 8. The method of claim 7 wherein a hardware processing entity adds itself to a linked list in order to execute a request in two or less clock cycles.
- 9. The method of claim 6 wherein, when a hardware processing entity completes execution of a request, the hardware processing entity removes itself from a linked list, promoting a next hardware processing entity on the linked list to a head position, and thus allowing the next hardware processing entity to execute a next request for which the next hardware processing entity was recruited to execute.
- 10. The method of claim 9 wherein a hardware processing entity removes itself from a linked list following execution of a request in two or less clock cycles.
CROSS REFERENCE TO RELATED APPLICATIONS
This application contains subject matter related to an application entitled “A Memory Controller That Provides Memory Line Caching and Memory Transaction Coherency by Using at Least One Memory Controller Agent” by Curtis R. McAllister et al., U.S. patent application Ser. No. 09/560,929, and an application entitled “A Memory Controller Having Separate Agents That Process Memory Transactions in Parallel” by Curtis R. McAllister et al., U.S. patent application Ser. No. 09/560,927. Both of these applications are hereby incorporated by reference, are assigned to the same assignee as the present application, and were filed on Apr. 30, 2000, which is also the date on which the present application was filed.
US Referenced Citations (10)
Foreign Referenced Citations (1)
Number |
Date |
Country |
0107191 |
May 1984 |
EP |
Non-Patent Literature Citations (3)
Entry |
“Coordination Of Multiple Intelligent Bus Units By A Common Controller”, IBM Technical Disclosure, vol. 34, No. 5, pp. 436-438, Oct. 1991.* |
Herlihy et al., “Transactional Memory, Architectural Support for Lock-Free Data Structures”, ACM Special Interest Group on Computer Architecture, pp. 289-300, 1993.* |
“Priority Queue Controller Using Linked-List Techniques”, IBM Technical Disclosure Bulletin (TDB), vol. 31, pp. 41-45, 1988. |