IP Library Granted Patent US 7,698,477
Granted Patent B2
US 7,698,477 · App. 11/290,096 · Granted Apr 13, 2010

Method and apparatus for managing flow control in PCI express transaction layer

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,698,477
App. No.
11/290,096
Granted
Apr 13, 2010
Kind
B2
Abstract

A method and apparatus is provided wherein a central Credit Controller Entity (CCE) is connected to a PCIE fabric environment by means of several buses. Flow Control information sent to the CCE over two of the buses indicates the buffer storage capacity that is available at respective Receiver components in the PCIE fabric. The CCE processes the Flow Control information, to generate updates that are sent by a third bus to Transmitter components corresponding to the Receivers. In one useful embodiment, directed to a method of Flow Control management, the CCE provides a repository adapted to store credit count information that represents the available storage capacity of respective Receivers. The method further comprises routing further credit count information from a given Receiver to the CCE, for storage in the repository, following each of successive events that affect the storage capacity of the given Receiver. The CCE is operated to selectively process the credit count information stored in the repository, in order to generate an update credit count. The update credit count is then selectively sent to a given Transmitter, to enable the given Transmitter to send a transmission to the given Receiver.

Claims (53)

1. In a PCI Express (PCIE) Environment containing components that include Receivers and Transmitters of Transaction Layer Packets (TLPs), a method of Flow Control management comprising the steps of:

providing a Credit Controller Entity (CCE) for the Environment with a repository for storing credit count information that represents an available storage capacity of respective Receivers, wherein said repository comprises an array of credit state registers;

routing credit count information from a storage buffer contained in a given Receiver to said repository of said CCE, for storage in said registers of said repository after each event of a succession of events that affect the storage capacity of said given Receiver, said events including one or more processing events that each increases storage capacity at said given Receiver, and further including one or more receiving events that each reduces storage capacity at said given Receiver;

generating a Freed Credit Count value corresponding to each processing event, wherein each Freed Credit Count value comprises the increase in receiver capacity caused by its corresponding processing event;

routing each Freed Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array;

generating a Received Credit Count value corresponding to each receiving event, wherein each Received Credit Count value comprises the reduction in receiver capacity caused by its corresponding receiving event;

routing each Received Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array;

including said Freed Credit Count values and said Received Credit Count values in said routed credit count information;

operating said CCE at a given time to use all of said credit count information stored in said registers of said repository, including each of said stored Freed Credit Count values and each of said stored Received Credit Count values, to determine the available storage capacity of said storage buffer in said given Receiver at the given time, and to generate an update credit count;

selectively sending said update credit count to a given Transmitter, to enable said given Transmitter to send a transmission to said given Receiver, wherein said update credit count is sent to said given Transmitter, by means of a Credit Update Bus (CUB), to enable transmission of a particular Flow Control packet;

said CCE selectively includes a Credit Update Policy for processing credit count information pertaining to each of said credit received and credit freed events, in order to generate said update credit count; and

said credit received event information comprises a succession of received header and received data credit counts respectively routed to said CCE by means of a Credit Received Bus (CRB), and said freed event information similarly comprises freed header and freed data credit counts, respectively routed to said CCE by means of a Credit Freed Bus (CFB).

2. The method of claim 1 , wherein:

said Credit Update Policy implements a selected algorithm to control said CUB.

3. The method of claim 2 , wherein:

said CCE includes a data processing system for use in implementing said algorithm.

4. The method of claim 3 , wherein:

said CRB, said CFB and said CUB each carries signals indicating respective posted credit, non-posted credit, and completion credit events.

5. The method of claim 4 , wherein:

each of said header credit counts and data credit counts comprises a specified number of bits.

6. In a PCI Express (PCIE) Environment containing components that include Receivers and Transmitters of Transaction Layer Packets (TLPs), a computer program product in a computer readable medium for managing Flow Control comprising:

instructions for operating a repository, that is contained in a Credit Controller Entity (CCE), to store credit count information that represents an available storage capacity of respective Receivers wherein said repository comprises an array of credit state registers;

instructions for routing credit count information from a storage buffer contained in a given Receiver to said repository of said CCE, for storage in said registers of said repository after each of a succession of events that affect the storage capacity of said given Receiver, said events including one or more processing events that and at least one receiving event, each increases storage capacity at said given Receiver, and further including one or more receiving events that each reduces storage capacity at said given Receiver;

instructions for generating a Freed Credit Count value corresponding to each processing event, wherein each Freed Credit count value comprises the increase in receiver capacity caused by its corresponding processing event;

instructions for routing each Freed Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array;

instructions for generating a Received Credit Count value corresponding to each receiving event, wherein each Received Credit Count value comprises the reduction in receiver capacity caused by its corresponding receiving event;

instructions for routing each Received Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array;

instructions for including said Freed Credit Count values and said Received Credit Count values in said routed credit count information;

instructions for operating said CCE at a given time to use all of said credit count information stored in said registers of said repository, including each of said stored Freed Credit Count values and each of said stored Received Credit Count values, to determine the available storage capacity of said storage buffer in said given Receiver at the given time; and to generate an update credit count;

instructions for selectively sending said update credit count to a given Transmitter, to cause said given Transmitter to send a transmission to said given Receiver, wherein said update credit count is sent to said given Transmitter, by means of a Credit Update Bus (CUB), to enable transmission of a particular Flow Control packet;

said CCE selectively includes a Credit Update Policy for processing credit count information pertaining to each of said credit received and credit freed events, in order to generate said update credit count; and

said credit received event information comprises a succession of received header and received data credit counts respectively routed to said CCE by means of a Credit Received Bus (CRB), and said freed event information similarly comprises freed header and freed data credit counts, respectively routed to said CCE by means of a Credit Freed Bus (CFB).

7. The computer program product of claim 6 , wherein:

said Credit Update Policy implements a selected algorithm to control said CUB.

8. The computer program product of claim 7 , wherein:

said CCE includes a data processing system for use in implementing said algorithm.

9. The computer program product of claim 8 , wherein:

said CRB, said CFB and said CUB each carries signals indicating respective posted credit, non-posted credit, and completion credit events.

10. In a PCI Express (PCIE) Environment containing components that include Receivers and Transmitters of Transaction Layer Packets (TLPs), Flow Control management apparatus comprising:

a Credit Controller Entity (CCE) for the Environment having a repository for storing credit count information that represents an available storage capacity of respective Receivers wherein said repository comprises an array of credit state registers;

a storage buffer means contained in a given Receiver;

bus means for routing credit count information from said storage buffer means to said repository of said CCE for storage in said registers of said repository after each event of a succession of events that affect the storage capacity of said given Receiver, said events including one or more processing events that each increases storage capacity at said given Receiver, and further includes one or more receiving events that each reduces storage capacity at said given Receiver;

said storage buffer means comprises means for generating a Free Credit Count value corresponding to each processing event, wherein each Freed Credit count value comprises the increase in receiver capacity caused by its corresponding processing event, and further comprises means for generating a Received Credit Count value corresponding to each receiving event, wherein each Received Credit Count value comprises the reduction in receiver capacity caused by its corresponding receiving event, wherein said Freed Credit Count values and said Received Credit Count values are both included in said routed credit count information;

said bus means comprises means for routing each Freed Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array, and for routing each Received Credit Count value from an output of said storage buffer to said repository for storage in one or more registers of said array, wherein said Freed Credit Count values and said Received Credit Count values are included in said routed credit count information;

a Credit Update Policy at said CCE for processing all of said credit count information stored in said registers of said repository, including each of said stored Freed Credit Count values and each of said stored Received Credit Count values, to determine the available storage capacity of said storage buffer means in said given Receiver at the given time, and to generate an update credit count that is selectively sent to a given Transmitter, to cause said given Transmitter to send a transmission to said given Receiver, wherein said update credit count is sent to said given Transmitter, by means of a Credit Update Bus (CUB), to enable transmission of a particular Flow Control packet;

said CCE selectively includes a Credit Update Policy for processing credit count information pertaining to each of said credit received and credit freed events, in order to generate said update credit count; and

said credit received event information comprises a succession of received header and received data credit counts respectively routed to said Credit Controller Entity by means of a Credit Received Bus (CRB), and said freed event information similarly comprises freed header and freed data credit counts, respectively routed to said Credit Controller Entity by means of a Credit Freed Bus (CFB).

11. The apparatus of claim 10 , wherein:

said Credit Update Policy implements a selected algorithm to control said CUB.

12. The apparatus of claim 11 , wherein:

said CCE includes a data processing system for use in implementing said algorithm.

13. The apparatus of claim 12 , wherein:

said CRB, said CFB and said CUB each carries signals indicating respective posted credit, non-posted credit, and completion credit events.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0267 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0344 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0687 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
CHANGE OF NAME Recorded Jun 6, 2014
From: LSI LOGIC CORPORATION
To: LSI CORPORATION
Reel/Frame 033102/0270 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →