IP Library Granted Patent US 7,362,705
Granted Patent B2
US 7,362,705 · App. 10/845,497 · Granted Apr 22, 2008

Dynamic load-based credit distribution

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 7,362,705
App. No.
10/845,497
Granted
Apr 22, 2008
Kind
B2
Abstract

Methods and systems for dynamically adjusting credits used to distribute available bus bandwidth among multiple virtual channels, based on the workload of each virtual channel, are provided. Accordingly, for some embodiments, virtual channels with higher workloads relative to other virtual channels may receive a higher allocation of bus bandwidth (more credits).

Claims (44)

1. A method of allocating bandwidth of a bus among a plurality of virtual channels, each virtual channel representing a stream of data exchanged on the bus, comprising:

allocating, from a credit pool, a number of credits to each virtual channel;

monitoring traffic on the bus to obtain one or more workload statistics indicative of bus traffic for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics, wherein the one or more workload statistics comprises an average number of bus cycles each virtual channel has to wait for the bus.

2. The method of claim 1 , wherein dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics comprises incrementing a number of credits allocated to a first virtual channel in response to determining the average number of bus cycles the first virtual channel has to wait exceeds a specified maximum value.

3. The method of claim 2 , further comprising decrementing a number of credits allocated to a second virtual channel to maintain the total number of credits allocated from the credit pool.

4. A method of allocating bandwidth of a bus among a plurality of virtual channels, each virtual channel representing a stream of data exchanged on the bus, comprising:

initializing a set of dynamic allocation parameters for each virtual channel;

allocating, from a credit pool, a number of credits to each virtual channel;

monitoring traffic on the bus to obtain one or more workload statistics indicative of bus traffic for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters, wherein the dynamic allocation parameters comprise a maximum number of bus cycles each virtual channel is allowed to wait for the bus.

5. The method of claim 4 , wherein:

the one or more workload statistics comprise a number of cycles each virtual channel must wait for the bus; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels comprises incrementing a number of credits allocated to a first virtual channel if the number of cycles the first virtual channel must wait exceeds the maximum number of bus cycles the first virtual channel is allowed to wait for the bus.

6. A method of allocating bandwidth of a bus among a plurality of virtual channels, each virtual channel representing a stream of data exchanged on the bus, comprising:

initializing a set of dynamic allocation parameters for each virtual channel;

allocating, from a credit pool, a number of credits to each virtual channel;

monitoring traffic on the bus to obtain one or more workload statistics indicative of bus traffic for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters; wherein:

the dynamic allocation parameters comprise a minimum number of bus cycles each virtual channel is allowed to wait for the bus;

the one or more workload statistics comprise a number of cycles each virtual channel must wait for the bus; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels comprises decrementing a number of credits allocated to a first virtual channel if the number of cycles the first virtual channel must wait falls below the minimum number of bus cycles the first virtual channel is allowed to wait for the bus.

7. A method of allocating bandwidth of a bus among a plurality of virtual channels, each virtual channel representing a stream of data exchanged on the bus, comprising:

initializing a set of dynamic allocation parameters for each virtual channel;

allocating, from a credit pool, a number of credits to each virtual channel;

monitoring traffic on the bus to obtain one or more workload statistics indicative of bus traffic for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters; wherein:

the dynamic allocation parameters comprise a minimum allowable number of credits for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters comprises decrementing a current number of credits allocated to a first virtual channel only if the current number of credits allocated to the first virtual channel exceeds the minimum allowable number of credits for the first virtual channel.

8. A method of allocating bandwidth of a bus among a plurality of virtual channels, each virtual channel representing a stream of data exchanged on the bus, comprising:

initializing a set of dynamic allocation parameters for each virtual channel;

allocating, from a credit pool, a number of credits to each virtual channel;

monitoring traffic on the bus to obtain one or more workload statistics indicative of bus traffic for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters; wherein:

the dynamic allocation parameters comprise a minimum allowable number of credits for each virtual channel; and

dynamically adjusting the number of credits allocated to one or more of the virtual channels based on the one or more workload statistics and the set of dynamic allocation parameters comprises incrementing a current number of credits allocated to a first virtual channel only if the current number of credits allocated to at least a second virtual channel exceeds the minimum allowable number of credits for the second virtual channel.

9. A system, comprising:

one or more processor cores;

a shared buffer pool for holding data transferred from or to be transferred to the one or more processor cores;

a bus coupling the one or more processor cores and the shared buffer pool; and

a credit control component configured to dynamically allocate, from a credit pool, credits among a plurality of virtual channels used to exchange data between the one or more processing cores and the shared buffer pool based on monitored traffic on the virtual channels; wherein the credit control component is configured to monitor a number of cycles each virtual channel must wait for the bus.

10. The system of claim 9 , wherein the credit control component is configured to increment the number of credits allocated to a first virtual channel if the number of cycles the first virtual channel must wait for the bus exceeds a specified maximum number of cycles the first virtual channel is allowed to wait for the bus.

11. The system of claim 10 , wherein the credit control component is configured to decrement the number of credits allocated to the first virtual channel if the number of cycles the first virtual channel must wait for the bus is below a specified minimum number of cycles the first virtual channel is allowed to wait for the bus.

12. The system of claim 10 , wherein the credit control component is configured to increment the number of credits allocated to the first virtual channel only if the number of credits allocated to a second virtual channel may be decremented without causing the number of credits allocated to the second virtual channel to fall below a minimum allowable number of credits specified for the second virtual channel.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2024
From: DAEDALUS BLUE LLC
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY, LIMITED
Reel/Frame 069237/0643 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: DAEDALUS GROUP, LLC
To: DAEDALUS BLUE LLC
Reel/Frame 051737/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP, LLC
Reel/Frame 051710/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP LLC
Reel/Frame 051032/0784 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2004
From: BEUKEMA, BRUCE L.; KUESEL, JAMIE R.; SHEARER, ROBERT A.; WALK, BRUCE M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 014668/0702 →