IP Library Granted Patent US 7,441,055
Granted Patent B2
US 7,441,055 · App. 10/815,347 · Granted Oct 21, 2008

Apparatus and method to maximize buffer utilization in an I/O controller

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,441,055
App. No.
10/815,347
Granted
Oct 21, 2008
Kind
B2
Abstract

An apparatus and method for maximizing buffer utilization in an I/O controller using credit management logic contained within the I/O controller. The credit management logic keeps track of the number of memory credits available in the I/O controller and communicates to a chipset connected to the I/O controller the amount of available memory credits. The chipset may then send an amount of data to the I/O controller equivalent to or less than the communicated available amount of memory credits to reduce the occurrence of a “retry” event. The amount of available memory credits is determined by comparing the available memory in each buffer within the I/O controller and designating that the “available” amount of memory for the I/O controller is an amount equivalent to the amount of memory contained in the buffer with the least amount of available memory. This “available” amount of I/O controller memory may then be converted into memory credits and communicated to the chipset.

Claims (38)

1. A method comprising:

determining an amount of available memory credits in an input/output (I/O) controller;

communicating to a chipset within a device coupled to the I/O controller within the device the amount of available memory credits; and

sending an amount of data from the chipset to the I/O controller, the amount of data sent being one of equivalent to or less than the communicated available memory credit amount; and

wherein determining the available amount of memory credits comprises:

comparing an amount of available memory in each of a plurality of buffers contained within the I/O controller; and

determining a least amount of available memory in one of the plurality of buffers to create an amount of available memory in the I/O controller.

2. The method of claim 1 , further comprising:

converting the amount of available memory in the I/O controller to an amount of available memory credits.

3. The method of claim 2 , wherein converting the amount of available memory to an amount of available memory credits comprises:

dividing the available amount of memory in the I/O controller by an amount of memory equivalent to one credit.

4. The method of claim 1 , further comprising:

temporarily storing the data sent from the chipset in the I/O controller.

5. The method of claim 4 , wherein temporarily storing the data comprises:

temporarily storing the data in at least one buffer contained within the I/O controller.

6. The method of claim 5 , wherein temporarily storing the data in at least one buffer comprises:

storing the data in a plurality of buffers.

7. The method of claim 5 , further comprising:

emptying the buffer of at least some of the data temporarily stored in the I/O controller to create a new amount of available memory credits in the I/O controller.

8. The method of claim 7 , wherein emptying at least some of the data comprises:

sending the data to at least one I/O bus coupled to the I/O controller.

9. The method of claim 8 , wherein sending the data to at least one I/O bus comprises:

sending the data to a plurality of I/O buses coupled to the I/O controller.

10. The method of claim 7 , further comprising:

keeping track of the number of available memory credits in the I/O controller.

11. The method of claim 10 , wherein keeping track of the number of memory credits comprises:

simultaneously keeping track of amounts of memory credits the I/O controller empties onto the I/O bus, amounts of memory credits sent to the I/O controller and amounts of memory credits made available by distribution of data sent from the chipset to a plurality of buffers contained within the I/O controller.

12. A machine readable medium having instructions stored therein which when executed cause a machine to perform a set of operations comprising:

determining an amount of available memory credits in an input/output (I/O) controller;

communicating to a chipset within a device coupled to the I/O controller within the device the amount of available memory credits; and

sending an amount of data from the chipset to the I/O controller, the amount of data sent being one of equivalent to or less than the communicated available memory credit amount; and

wherein determining the available amount of memory credits comprises:

comparing an amount of available memory in each of a plurality of buffers contained within the I/O controller; and

determining a least amount of available memory in one of the plurality of buffers to create an amount of available memory in the I/O controller.

13. The machine read medium of claim 12 , having further instructions stored therein which when executed cause a machine to perform a set of operations further comprising:

temporarily storing the data in at least one buffer contained within the I/O controller;

emptying the buffer of at least some of the data temporarily stored in the I/O controller onto an I/O bus coupled to the I/O controller to create a new amount of available memory credits in the I/O controller; and

simultaneously tracking amounts of memory credits the I/O controller empties onto the I/O bus, amounts of memory credits sent to the I/O controller from the chipset and amounts of memory credits made available by distribution of the data sent from the chipset to a plurality of buffers contained within the I/O controller.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →