IP Library Granted Patent US 6,892,259
Granted Patent B2
US 6,892,259 · App. 09/967,608 · Granted May 10, 2005

Method and apparatus for allocating computer bus device resources to a priority requester and retrying requests from non-priority requesters

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 6,892,259
App. No.
09/967,608
Granted
May 10, 2005
Kind
B2
Abstract

A target device in a computer bus system allocates resources by selecting a priority requester for allocation of scarce resources. In a non-bus arbiter configuration, the first initiator device to receive a retry response to a transaction request after the resources are exhausted is designated as a priority requester. In a bus arbiter configuration, the priority requester is chosen on a round-robin basis from initiator devices that received a retry response to the initiator's most recent transaction request. If only one resource is available when an initiator sends a transaction request, the initiator receives a retry response unless the initiator is the priority requester.

Claims (123)

1. A method for allocating resources in a computer system, the method comprising the steps of:

(a) receiving a request for a transaction on a target device coupled to a computer bus, the target device having a plurality of resources, from an initiator device of a plurality of initiator devices coupled to the computer bus;

(b) if no resource of the plurality of resources is available, identifying the initiator device as a priority requester device by determining whether stored identification information of the initiator device exists, and if the stored identification information exists, sending a retry response to the initiator device to retry the request, and if no stored identification information exists, storing identification information of the initiator device, creating the stored identification information;

(c) if only one resource of the plurality of resources is available, comparing the stored identification information with identification information of the initiator device and if the stored identification information matches the identification information of the initiator device, allocating the resource and deleting the stored identification information; and

(d) if only one resource of the plurality of resources is available comparing the stored identification information with identification information of the initiator device and sending the response to the initiator device to retry the request if the stored identification information differs from the identification information of the initiator device

(e) if more than one resource of the plurality of resources is available, allocating an available resource of the plurality of resources to the initiator device and deleting any stored identification information.

2. The method of claim 1 , the step of storing identification information of the initiator device comprising the step of:

providing a register in the target device; and

storing identification information in the register.

3. A method for allocating resources in a computer system comprising the steps of:

(a) receiving a request for a transaction on a target device coupled to a computer bus, the target device having a plurality of resources from an initiator device of a plurality of initiator devices coupled to the computer bus;

(b) if more than one resource of the plurality of resources is available, allocating an available resource of the plurality of resources to the initiator device;

(c) if no resource of the plurality of resources is available, selecting a first identifier of the plurality of identifiers which is set; and identifying the initiator device associated with the first identifier as the priority requester device;

(d) if only one resource of the plurality of resources is available comparing the stored identification information with identification information of the initiator device; and

(e) if only one resource of the plurality of resources is available comparing the stored identification information with identification information of the initiator device; and sending the response to the initiator device to retry the request if the stored identification information differs from the identification information of the initiator device

(f) providing a plurality of identifiers in the target device, each of the plurality of identifiers associated with one of the plurality of initiator devices;

(g) if the initiator device owns the bus, setting the identifier of the plurality of identifiers associated with the initiator device if the request is responded to with the retry response and resetting the identifier of the plurality of identifiers associated with the initiator device if the request is responded to with a non-retry response.

4. The method of claim 3 , the step of selecting a first identifier comprising the step of:

selecting the first identifier on a round-robin basis.

5. The method of claim 3 , the target device comprising:

a bus arbiter,

wherein the plurality of identifiers are associated with the plurality of initiator devices by associating each of the plurality of identifiers with a grant(GNT#) signal.

6. The method of claim 1 , wherein the computer bus is a PCI-X bus and the plurality of resources is a plurality of split completion resources.

7. The method of claim 6 , wherein the transaction is a byte-count memory-read transaction.

8. The method of claim 6 , wherein allocating a resource comprises the step of:

sending a split response message to the initiator device.

9. A computer system, comprising:

a processor;

a computer bus coupled to the processor;

a plurality of initiator devices coupled to the computer bus; and

a target device coupled to the computer bus, the target device comprising:

a plurality of resources;

a storage location;

circuitry adapted to identify the initiator device as a priority requester device if no resource of the plurality of resources is available and further adapted to store identification information of the initiator device in the storage location, creating a stored identification information, if no stored identification information exists in the storage location;

circuitry adapted to indicate which of the plurality of resources is available;

circuitry adapted to receive a transaction from an initiator device of the plurality of initiator devices;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if more than one resource of the plurality of resources is available and to delete stored identification information;

circuitry adapted to send a retry response to the initiator device to retry the request if no resource of the plurality of resources is available;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if only one resource of the plurality of resources is available and the initiator device is the priority requester device and further adapted to compare the stored identification information with identification information of the initiator device, delete the stored identification information and to allocate an available resource of the plurality of resources to the initiator device if the stored identification information matches the identification information of the initiator device; and

circuitry adapted to send a response to the initiator device to retry the request if only one resource of the plurality of resources is available and the initiator device is not the priority requester device and adapted to compare the stored identification information with identification information of the initiator device and circuitry to send a response to the initiator device to retry the request if the stored identification information differs from the identification information of the initiator device.

10. The computer system of claim 9 , the storage location comprising:

a register.

11. A computer system comprising,

a processor;

a computer bus coupled to the processor;

a plurality of initiator devices coupled to the computer bus; and

a target device coupled to the computer bus, the target device comprising:

a plurality of resources;

circuitry adapted to indicate which of the plurality of resources is available;

circuit adapted to receive a transaction from an initiator device of the plurality of initiator devices;

a plurality of identifiers, each of the plurality of identifiers associated with one of the plurality of initiator devices;

circuitry to set the identifier of the plurality of identifiers associated with the initiator device if the initiator device owns the bus and the request was responded to with a retry response;

circuitry to reset the identifier of the plurality of identifiers associated with the initiator device if the initiator device owns the bus and the request was responded to with a non-retry response;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if more than one resource of the plurality of resources is available;

circuitry adapted to identify the initiator device as a priority requester device if no resource of the plurality of resources is available and comprising circuitry adapted to select a first identifier of the plurality of identifiers which is set and circuitry adapted to identify the initiator device associated with the first identifier as the priority requester device;

circuitry adapted to send a retry response to the initiator device to retry the request if no resource of the plurality of resources is available;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if only one resource of the plurality of resources is available and the initiator device is the priority requester device; and

circuitry adapted to send a response to the initiator device to retry the request if only one resource of the plurality of resources is available and the initiator device is not the priority requester device.

12. The computer system of claim 11 , the circuitry adapted to select a first identifier of the plurality of identifiers comprising:

circuitry to select the first identifier on an round-robin basis.

13. The computer system of claim 11 , the target device further comprising:

a bus arbiter,

wherein the plurality of identifiers are associated with the plurality of initiator devices by associating each of the plurality of identifiers with a grant(GNT#) signal.

14. The computer system of claim 9 ,

wherein the computer bus is a PCI-X bus, and

wherein the plurality of resources is a plurality of split completion resources.

15. The computer system of claim 14 , wherein the transaction is a byte-count memory-read transaction.

16. A resource allocator for a target device coupled to a computer bus, the target device adapted to receive a transaction request from a plurality of initiator devices coupled to the computer bus, the resource allocator comprising:

a plurality of resources;

a storage location;

circuitry adapted to indicate which of the plurality of resources is available;

circuitry adapted to identify the initiator device as a priority requester device if no resource of the plurality of resources is available and adapted to store identification information of the initiator device in the storage location, creating a stored identification information, if no stored identification information exists in the storage location;

circuitry adapted to send a retry response to the initiator device to retry the request if no resource of the plurality of resources is available;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if more than one resource of the plurality of resources is available and adapted to delete stored identification information;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if only one resource of the plurality of resources is available and the initiator device is the priority requester device and adapted to compare the stored identification information with identification information of the initiator device and to delete the stored identification information and to allocate an available resource of the laurel of resources if the stored identification information matches the identification information of the initiator device; and

circuitry adapted to send a response to the initiator device to retry the request if only one resource of the plurality of resources is available and the initiator device is not the priority requester device and adapted to compare the stored identification information with identification information of the initiator device and to send a response to the initiator device to retry the request if the stored identification information differs from the identification information of the initiator device.

17. The resource allocator of claim 16 , the storage location comprising:

a register.

18. A resource allocator for a target device coupled to a computer bus, the target device adapted to receive a transaction request from a plurality of initiator devices coupled to the computer bus, the resource allocator comprising:

a plurality of identifiers, each of the plurality of identifiers associated with one of the plurality of initiator devices;

circuitry to set the identifier of the plurality of identifiers associated with the initiator device if the initiator device owns the bus and the request was responded to with a retry response;

circuitry to reset the identifier of the plurality of identifiers associated with the initiator device if the initiator device owns the bus and the request was responded to with a non-retry response; and

a plurality of resources;

circuitry adapted to indicate which of the plurality of resources is available;

circuitry adapted to identify the initiator device as a priority requester device if no resource of the plurality of resources is available the first circuitry comprising circuitry adapted to select a first identifier of the plurality of identifiers which is set and circuitry adapted to identify the initiator device associated with the first identifier as the priority requester device;

circuitry adapted to send a retry response to the initiator device to retry the request if no resource of the plurality of resources is available;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if more than one resource of the plurality of resources is available;

circuitry adapted to allocate an available resource of the plurality of resources to the initiator device if only one resource of the plurality of resources is available and the initiator device is the priority requester device; and

circuitry adapted to send a response to the initiator device to retry the request if only one resource of the plurality of resources is available and the initiator device is not the priority requester device.

19. The resource allocator of claim 18 , the circuitry adapted to select a first identifier of the plurality of identifiers comprising:

circuitry to select the first identifier on an round-robin basis.

20. The resource allocator of claim 18 , further comprising:

a bus arbiter,

wherein the plurality of identifiers are associated with the plurality of initiator devices by associating each of the plurality of identifiers with a grant signal.

21. The resource allocator of claim 16 ,

wherein the plurality of resources is a plurality of split completion resources adapted to handle a PCI-X computer bus split transaction.

22. The resource allocator of claim 21 , wherein the PCI-X computer bus split transaction is a byte-count memory-read transaction.

23. A resource allocator for a target device coupled to a computer bus, the target device adapted to receive transaction requests from a plurality of initiator devices coupled to the computer bus, the resource allocator comprising:

a plurality of resource means for responding to a transaction request;

means for indicating availability of the plurality of resource means;

means for identifying an initiator device of the plurality of initiator devices as a priority requester device if none of the plurality of resource means is available, means for identifying comprising means for creating a priority requester device identification information from identification information of the initiator if no priority requester device identification information exists and means for comparing the primary requester device identification information with identification information of the initiator device;

first retry means for sending a retry response to the initiator device if none of the plurality of resource means is available;

first allocation means for allocating one of the plurality of resource means to the initiator device if the means for indicating availability indicates more than one of the plurality of resource means is available, first allocation means comprising means for deleting the primary requester device identification information;

second allocation means for allocating an available resource means of the plurality of resource means to the primary requester device of the means for indicating availability indicates only one of the plurality of resource means is available, second allocation means comprising means for allocating the available resource and deleting the primary requester device identification information if the means for comparing produces a match; and

second retry means for sending a retry response to an indicator device if the initiator device is not the primary requester device and the means for indicating availability indicates that only one of the plurality of resource means is available, second retry means comprising means for sending the retry response if the means for comparing does not produce a match.

24. A resource allocator for a target device coupled to a computer bus, the target device adapted to receive transaction requests from a plurality of initiator devices coupled to the computer bus, the resource allocator comprising:

a plurality of resource means for responding to a transaction request;

means for indicating availability of the plurality of resource means;

means for identifying an initiator device of the plurality of initiator devices as a priority requester device if none of the plurality of resource means is available;

first retry means for sending a retry response to the initiator device if none of the plurality of resource means is available;

first allocation means for allocating one of the plurality of resource means to the initiator device if the means for indicating availability indicates more than one of the plurality of resource means is available;

second allocation means for allocating an available resource means of the plurality of resource means to the primary requester device of the means for indicating availability indicates only one of the plurality of resource means is available; and

second retry means for sending a retry response to an indicator device if the initiator device is not the primary requester device and the means for indicating availability indicates that only one of the plurality of resource means is available;

means for associating an identifier with each of the plurality of initiators;

means for setting the identifier associated with the initiator device if the transaction request is responded to with a retry response;

means for unsetting the identifier associated with the initiator device if the transaction request is responded to with a non-retry response; and

the means for identifying comprising:

means for selecting a first set identifier; and

means for identifying the initiator device associated with the first set identifier as the primary requester device.

25. The resource allocator of claim 24 , the means for selecting comprising:

means for selecting a next set identifier on a round-robin basis.

26. The resource allocator of claim 24 , the means for associating comprising:

means for associating an identifier with a grant signal to a bus arbiter in the target device from the initiator device.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2021
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 057650/0537 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →