US2009125666A1PendingUtilityA1

Dynamically scalable queues for performance driven pci express memory traffic

Assignee: IBMPriority: Aug 22, 2006Filed: Jan 21, 2009Published: May 14, 2009
Est. expiryAug 22, 2026(~0.1 yrs left)· nominal 20-yr term from priority
G06F 13/385
53
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A computer program product for implementing a method within a data processing system and a PCI Express protocol for enabling high performance IO data transfers for multiple, different IO configurations, which include variable packet sizes and/or variable/different numbers of transactions on the IO link. PCI Express protocol is enhanced to support utilization of counters and dynamically variable queue sizes. In addition to the standard queue entries, several (or a selected number of) dynamically changeable queue entries are provided/reserved and a dynamic queue modification (DQM) utility is provided within the enhanced PCI Express protocol to monitor ongoing, current data transfer and manage when the size(s) of the queue entries are modified (increased or decreased) based on current data traffic transmitting on the PCI Express IO link. The enhanced PCI Express protocol provides an equilibrium point at which many large data packets are transferred efficiently, while imposing a limit on the number of each size of packets outstanding.

Claims

exact text as granted — not AI-modified
1 . A computer program product comprising:
 a computer readable storage medium; and   program code stored on the computer readable storage medium that when executed by a processor of a computer device in which the processor is coupled to a system bus and a peripheral component interconnect (PCI) fabric, the program code enables the computer device to perform functions for managing transfer of data packets across the PCI fabric, said functions including:   monitoring ongoing, current data transfer within the PCI fabric, wherein the PCI fabric includes a PCI Express bus controller coupled to the system bus, said PCI express bus controller having one or more PCI queues with one or more queue entries and a dynamic queue modification (DQM) logic; and   triggering a dynamic modification of a size of each queue entry based on current data traffic transmitting on the PCI fabric, wherein said dynamic modification is completed via a DQM logic.   
   
   
       2 . The computer program product of  claim 1 , wherein:
 said monitoring comprises code for determining a current trend within ongoing data traffic, said trend ranging from a single stream of a large data packet to multiple streams of smaller data packets; and   said triggering comprises:
 when the trend is that of a single stream of large data packets, automatically combining smaller queue entries into larger entries to support efficient transfer of the larger data packets across the PCI fabric; and 
 when the trend is that of multiple streams of smaller data packets, automatically breaking larger queue entries into smaller independent entries to support efficient transfer of the individual, smaller data packets. 
   
   
   
       3 . The computer program product of  claim 1 , wherein said DQM logic includes one or more performance counters, which take on one of several predefined characteristics based on the number of outstanding transactions (NTR), wherein said counters are utilized to track a number of received transactions in a pre-specified ranges of transaction size, said program code further comprising code for performing the functions of:
 resetting a counter when the counter reaches a preset limit;   tracking a percentage of transactions within each of said pre-specified ranges of transaction sizes that is currently outstanding and waiting to be transferred within the PCI fabric, wherein when a percentage of existing transactions passes a preset threshold, said DQM logic triggers said dynamic configuration of the queue entries to support a transfer of more transactions within that range of specific transaction size; and   consolidating and expanding queue entries within the queue based on the tracked percentage of transactions within each of the pre-specified ranges of transaction sizes.   
   
   
       4 . The computer program product of  claim 1 , further comprising program code for performing the functions of:
 initially configuring each queue entry within the queue to a default queue size, said default queue size based on a minimum data transfer and a maximum number of outstanding transactions that may be handled by the queue;   monitoring for transactions flowing across the PCI express fabric;   activating and updating a series of counters to track specific counter parameters from among (a) the number of transactions outstanding at one time, (b) the average size of transactions, and (c) the number of queue entries available;   comparing counter values to a set of pre-established threshold values; and   when one of the counter values has reach the corresponding, pre-established threshold, initiating a resizing of the queue entries to accommodate a larger number of transaction packets corresponding to the threshold value.   
   
   
       5 . The computer program product of  claim 1 , wherein the DQM utility further comprises:
 logic for enabling input/output (IO) data transfers with multiple, different IO data packet characteristics and configurations from among (a) variable, different sizes of data packets and (b) variable numbers of data packets of each size waiting to be schedule for transfer through the PCI fabric; and   a plurality of counters, including a first set of counters, which each track a number of queue entries of a particular size and a second set of counters which each track a number of outstanding data packets of each different size supported by the PCI fabric.   
   
   
       6 . The computer program product of  claim 1 , wherein:
 the PCI Express bus controller of the data processing system comprises multiple queues with at least a first static queue having a static number of queue entries of a particular size and at least a second dynamically configurable queue with a variable number of dynamically changeable queue entries that are modified in real time by the DQM logic; and   said program code comprises code for: (a) monitoring ongoing, current data transfer; and (b) triggering a modification of a size of each queue entry based on current number of outstanding data traffic waiting to be transferred over the PCI fabric.   
   
   
       7 . The computer program product of  claim 1 , further comprising program code for completing the functions of:
 establishing thresholds associated with each size of data packets for triggering when to modify the size of the queue entries to that corresponding to the particular size of data packets, wherein said threshold establishes a number above which the number of outstanding data packets of the corresponding size should be reduced;   comparing a current number of outstanding data packets of each size against the threshold corresponding to that size data packet; and   adjusting the rate at which a size of a queue entry is modified based on an analysis of the current traffic relative to a pre-established equilibrium point that balances (a) efficient transfer of a number of larger data packets with (b) limiting a number of each size of data packets outstanding to below the preset thresholds of the specific size of data packets.   
   
   
       8 . The computer program product of  claim 1 , further comprising program code for completing the functions of:
 determining whether there are a greater number of smaller data packets outstanding than the associated threshold for that size packet;   when there is a greater number of outstanding smaller data packets than the corresponding, pre-established threshold, splitting larger queue entries to generate smaller queue entries that accommodate a larger number of smaller data packets;   determining whether there are a greater number of larger data packets outstanding than the associated threshold for the larger data packets; and   when there is a greater number of outstanding larger data packets than the associated threshold, combining two or more or the existing queue entries to generate larger queue entries to accommodate a greater number of larger data packets.   
   
   
       9 . The computer program product of  claim 1 , wherein said data processing system further comprises:
 an input/output (I/O) bus controller connected to the system bus and providing an I/O bus, wherein said PCI Express bus controller is coupled to the I/O bus and provides an interface to the PCI Express local bus; and   wherein said PCI Express bus controller further comprises a PCI Express switch, a PCI Express interface, and PCI Express buses, wherein said DQM logic is within one or more of the PCI Express switch, the PCI Express interface, and the PCI Express buses.

Join the waitlist — get patent alerts

Track US2009125666A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.