クレジット管理ユニットを含む受信機と、前記受信機に結合されたバッファメモリとを備えた装置であって、前記受信機の使用中に前記受信機と結合するインタフェースに関する前記フロー制御クレジットを管理し、前記インタフェースで受信される各パケットは、前記インタフェースでのフロー制御に関する1以上のヘッダークレジットとして数えられるヘッダーと、更にオプションとして前記インタフェースでのフロー制御に関する1以上のデータクレジットとして数えられるデータとを含み、前記各データクレジットは固定されたデータバイト数をあらわし、さらに前記バッファメモリには、前記受信機によって前記インタフェースで受信されるパケットに対応するパケットヘッダー及びパケットデータが記憶され、前記クレジット管理ユニットは、1以上の前記受信したパケット内のパケットデータのサイズにあわせて前記パケットデータを記憶するのに使用される、第1の量のバッファメモリと、第2の量のバッファメモリをダイナミックに調整し、前記クレジット管理ユニットは、前記ダイナミックな調整にあわせて、前記インタフェースと接続する送信機に対するデータクレジット及びヘッダークレジットを解放し、前記クレジット管理ユニットは、前記第1の量を増加させ、かつ、第2の量を減少させ、そして消費したパケットに対応する1以上のデータクレジットを保有し、その代わりに前記第1及び第2の量の修正に影響を与えるために前記送信機で1以上のヘッダークレジットを解放する、前記装置。ヘッダークレジットは、データクレジットにより示される前記固定されたデータバイト数をN-1倍してあらわされ、前記クレジット管理ユニットは、1個のヘッダークレジットを解放するためにN-1個のデータクレジットを保有する、請求項1に記載の装置。前記クレジット管理ユニットは、第1の閾値よりサイズの小さなパケットデータを有する1以上のパケットを受信することにあわせて、前記第1の量を増加させて且つ前記第2の量を減少させる、請求項1に記載の装置。前記クレジット管理ユニットは、前記第1の量を減少させて前記第2の量を増加させ、そして消費したパケットに対応する1以上のヘッダークレジットを保有し、その代わりに送信機において前記調整に影響を与えるために1以上のデータクレジットを解放する、請求項1に記載の装置。前記クレジット管理ユニットは、第2の閾値よりサイズの大きなパケットデータを有する1以上のパケットを受信することにあわせて、前記第1の量を減少させて且つ前記第2の量を増加させる、請求項4に記載の装置。前記クレジット管理ユニットは、第1の閾値よりサイズの大きく、第2の閾値よりサイズの小さなパケットデータを有する1以上のパケットを受信することにあわせて、最新に行なった調整とは反対の調整を実行する、請求項1に記載の装置。前記クレジット管理ユニットは、前記第1の量の最小サイズ及び前記第1の量の最大サイズを決定し、そして前記最小サイズ及び前記最大サイズに基づき、前記第1の量及び第2の量の前記ダイナミックな修正を制限する、請求項1に記載の装置。フロー制御クレジットを管理する受信機において実行される方法であって、前記受信機の使用中に前記受信機と接続するインタフェースに関する前記フロー制御クレジットを管理し、前記インタフェースで受信される各パケットは、前記インタフェースでのフロー制御に関する1以上のヘッダークレジットとして数えられるヘッダーと、更にオプションとして前記インタフェースでのフロー制御に関する1以上のデータクレジットとして数えられるデータとを含み、前記各データクレジットは固定されたデータバイト数をあらわし、前記方法は、1以上の受信したパケット内のパケットデータのサイズにあわせて、第1の量のヘッダークレジットをダイナミックに増加させ、第2の量のデータクレジットをダイナミックに減少させる処理と、ダイナミックに調整する前記処理にあわせて、送信機に対するデータクレジット及びヘッダークレジットを前記インタフェース上で解放する処理であって、前記解放は、消費したパケットに対応する1以上のデータクレジットを保有し、その代わりに前記調整に影響を与えるために前記送信機で1以上のヘッダークレジットを解放することを含む当該処理と、を含む方法。第1の閾値よりサイズの小さなパケットデータを有する1以上のパケットを受信する処理を更に含み、前記第1の量をダイナミックに増加させて且つ前記第2の量をダイナミックに減少させる処理は前記受信にあわせて行なわれる、請求項8に記載の方法。前記第1の量をダイナミックに減少させ且つ前記第2の量をダイナミックに増加させる処理と、消費したパケットに対応する1以上のヘッダークレジットを保有し、その代わりに前記修正に影響を与えるために前記送信機で1以上のデータクレジットを解放する処理と、を含む、請求項8に記載の方法。第2の閾値よりサイズの大きなパケットデータを有する1以上のパケットを受信することを更に含み、前記受信にあわせて前記第1の量を減少させて且つ前記第2の量を増加させる、請求項10に記載の方法。第1の閾値よりサイズの大きく、第2の閾値よりサイズの小さなパケットデータを有する1以上のパケットを受信することにあわせて、最新に行なった調整とは反対の調整を実行することを更に含む、請求項8に記載の方法。前記第1の量の最小サイズ及び前記第1の量の最大サイズを決定する処理と、前記最小サイズ及び前記最大サイズに基づき、前記第1及び第2の量の前記ダイナミックな修正を制限する処理と、を更に含む請求項8に記載の方法。一実施例において、装置はバッファメモリに結合された受信機を含む。この受信機は、使用の最中に当該受信機に結合されたインタフェースの関するフロー制御クレジットを管理するクレジット管理ユニットを含む。インタフェースで受信される各パケットは、パケットヘッダーを含み、オプションでパケットデータも含む。パケットデータは、当該パケットデータのサイズに依存するフロー制御クレジットにおけるデータクレジットの単位で測定される。ここで、各データは固定のデータバイト数をあらわしている。バッファメモリはパケットヘッダーと、受信機がインタフェース上で受信するパケットに対応するパケットデータを記憶する。この場合、バッファメモリは、データクレジットのサイズにNNは1よりも大きな整数を乗じたバッファユニットにおいて受信機によって割り当て可能である。データクレジットの総数は、パケットデータを記憶するのに利用できるバッファメモリにおいて、バッファユニットの数にNを乗じた値に等しい。そしてクレジット管理ユニットは、パケットデータがバッファユニットをあふれさせず、更に処理中に同時に存在することが認められるパケット数に基づく場合に、使用できないデータクレジットの最大数に基づき複数の総データクレジットをとっておくように構成されている。クレジット管理ユニットは、使用できないデータクレジットの最大数よりも少ないこととなる所与のパケットに関するパケットデータを受信することに応答し、1以上のデータクレジットを解放するように構成されている。クレジット管理ユニットは、所与のパケットが消費される前に1以上のデータクレジットを解放するよう構成されている。上記装置に対応する方法も考慮されるものである。一実施例において、装置はバッファメモリに結合された受信機を含む。この受信機は、受信機の使用中に結合されるインタフェースに関するフロー管理クレジットを管理するよう構成されたクレジット管理ユニットを含む。インタフェースで受信される各パケットはヘッダーを含み、オプションとしてデータも含む。ヘッダーはインタフェース上でフロー制御のための1以上のヘッダークレジットの単位で測定され、データは当該インタフェース上でフロー制御のための1以上のデータクレジットの単位で測定される。各データクレジットは固定のデータバイト数をあらわす。バッファメモリは、受信機によってインタフェース上で受信されたパケットに対応するパケットヘッダー及びパケットデータを記憶するように構成されている。クレジット管理ユニットは、パケットヘッダーを記憶するために使用される第1の量のバッファメモリ、及び1以上の受信パケットにおけるパケットデータのサイズに応じたパケットデータを記憶するために使用される第2の量のバッファメモリをダイナミックに調整するよう構成されている。クレジット管理ユニットは、上記ダイナミック調整に合わせて、送信機に対してデータクレジット及びヘッダークレジットをインタフェース上で解放するよう構成されている。本発明は、様々な修正及び代替の態様を受け入れる余地がありながら、その特定の実施例が図面において一例として示されており、ここに詳細に説明されている。しかしながら、図及び詳細な説明は開示された特別の態様として本発明を限定するように意図されておらず、これに対して本発明は、添付の特許請求の範囲によって定義される本発明の精神及び範囲を逸脱しないあらゆる修正、均等物、及び代替例をカバーするものである。ここで使用される見出しは、体系化の目的のみ意図されており、記載の範囲を制限するために使用されことを意図していない。本願全体を通じて使用される単語のmayは、義務の意味すなわち、しなければならないという意味というよりは、許容の意味すなわち、可能性があるという意味で使用されている。同様に、含む、含んでいる、含むは、限定されるわけではないという意味の含むである。以下の詳細な説明は添付の図面を参照しながら行なわれる。図1を参照すれば、システム10の一実施例のブロック図が示されている。本実施例の場合、システム10は、送信機12、受信機14、バッファメモリ16、そしてオプションとしてパケットターゲット18を含む。送信機は、受信機14も接続されたインタフェース20に接続されている。バッファメモリ16は、受信機14及び当該18に接続されている。送信機12はヘッダークレジット及びデータクレジットを保持するよう構成され、どのくらいの数のパケットヘッダー及びパケットデータトラフィックを、受信機14が現在のところ受け入れることができるのかを示す。例えば、図1において、送信機12は、ヘッダークレジットレジスタ22及びデータクレジットレジスタ24を含む。システム10の初期化中、そして可能性としてはインタフェース20がリセットされるオペレーション中の他の時点で、受信機14は、送信機12に対して通知するために、ヘッダークレジット及びデータクレジットの数を決定する。送信機12は通知されたクレジットでレジスタ22及び24を初期化することができる。送信機12はパケットヘッダー及びパケットデータを送信するので、送信機12は、送信されたヘッダー及びデータにより消費されたクレジットを保有する。受信機14は、解放後のクレジットを送信機12に返信し、送信機12は解放後のクレジットをレジスタ22及び24に加える。その結果、所与の任意の時点で、送信機12は、レジスタ22及び24内のクレジットに応じて、どのくらい多い情報がインタフェース20を介して送信されたかをコントロールすることができる。仮に、送信のためにあまり十分でないクレジットしか利用されないのであれば、例えば、送信機12は必要とされるクレジット数が利用できるようになるまでその送信を遅延させることができる。一般的に、通知クレジットは、利用可能なクレジット数を送信機12に知らせるために、受信機14のメカニズムを参照する。同様に、解放クレジットは、送信機12に返信されるのに利用可能な相互接続器20の伝送経由で消費されるクレジットを決定するメカニズム、そしてそれらのクレジットを返信するメカニズムを参照する。この通知及び解放を実行するメカニズムは、インタフェース20の定義に基づく特有の実装インプリメンテーションであるが、一般的に受信機14から送信機12までのインタフェース20上での伝送を含むものである。例えば、解放クレジットを送信するパケットが定義されたり、すべてのパケットのために用いられるヘッダーのフィールドが解放クレジットを含むことができる。解放クレジットを送信するパケットは初期化中に送信され、所望の数のクレジットを通知する。パケットのフィールドに送信され得る以上に多くのクレジットが通知される場合には、複合パケットが送信され得る。一般的に、インタフェース20で送信されるパケットは、パケットのタイプを定義し、他のコントロール情報を提供するヘッダーを含み、そしてオプション的にデータすなわち、ぺイロードを含む。このヘッダーはサイズが固定されており、したがって各ヘッダーは、送信機12により送信されるとき、1つのヘッダークレジットを消費する。他の実施例では、可変サイズのヘッダーが実装され、所与のパケットにとって必要なヘッダークレジットの数がそのヘッダーサイズに影響される。データペイロードは、可変サイズである。したがって、データクレジットは、固定数のデータバイトデータ単位として引用される。をあらわすように定義され、所与のパケットにとって要求されるデータクレジットの数は、ペイロードのサイズをデータクレジットのサイズで割った値となる。データクレジットのサイズはインタフェース20定義の一部である。例えば、一実施例において、インタフェース20は、周辺機器コンポーネント相互接続ExpressPCIeインタフェースであり、データクレジットは16バイトをあらわす。受信機14はクレジット管理ユニット26を含み、当該クレジット管理ユニット26によって使用される値を記憶し、送信機12に関するクレジットを管理する1以上のクレジットレジスタ28を含む。様々な実施例の補足する詳細については後述する。また、受信機14はインタフェース20で通信するため、バッファメモリ16と通信するため等の様々な他の回路も含む。さらに、図1は、受信機14へ送信する送信機12を示すのであるが、この通信はインタフェース20上で双方向である。つまり、送信機の機能はインタフェース20の両サイドに存在し、受信機の機能もインタフェース20の両サイドに存在するのである。話を簡略化するため、ここでの記載は、受信機14へ送信する送信機12について言及するものであるが、図1の受信機14側から送信機12側へパケットが送信され得ることを理解されたい。図示した実施例の場合、インタフェース20は、一組の双方向なポイントツーポイントリンクを含む。パケットはこのリンク上で送信される。他の実施例においては、インタフェース20は他の定義を有する。例えば、インタフェース20は、アドレス及びデータトランスミッションを有するバスとなり得る。アドレストランスミッションは、ヘッダークレジットに類似するアドレスクレジットによりフロー制御され、データトランスミッションはデータクレジットによりフロー制御される。インタフェース20の定義に基づき、クレジットの任意のセットが使用される。一般的に、クレジットのセットはフロー制御クレジットとして引用される。ターゲット18はバッファメモリ16からのパケットを消費する任意の回路を参照するのが一般的である。ターゲット18は受信機14例えば、ICを含むデバイスの一部であったり、或いは分離されていたりする。例えば、受信機14は、パケットを受信し、かつ、パケットを別のインタフェースに転送するスイッチである。この場合、バッファメモリ16からのパケットの消費は、他のインタフェース上の転送パケットである。バッファメモリ16は、受信機14にアクセス可能な任意のタイプのメモリを含む。例えば、バッファメモリ16は、メモリコントローラに接続されたダイナミックランダムアクセスメモリDRAMなどのシステムメモリ16を含む。なお、メモリコントローラは、DRAMに対するインタフェースを構成する。例えば、シングルインラインメモリモジュールSIMM、デュアルインラインメモリモジュールDIMMなど様々なDRAMはメモリモジュールがサポートされる。任意のDRAM技術が使用される例えば、同期型DRAMSDRAM、デュアルデータレートDDRSDRAM、DDR2SDRAM、DDR3SDRAM、RambusDRAMRDRAMなど。このような実施例において、受信機14はメモリコントローラに対する書込みコマンドを発生させ、パケットヘッダー及びパケットデータをメモリ16に書き込む。ターゲット18はメモリコントローラに対する読み出しコマンドを発生させ、パケットヘッダー及びパケットデータを読み出す。他の実施例においては、バッファメモリ16は、受信機14に対するプライベートメモリを有したり、或いは受信機14及びシステム10内の1以上の他の送受信機によって共有されるメモリを含む。バッファメモリ16は、例えば、キャッシュメモリや他の専用バッファメモリを含む。或る実施例において、バッファメモリ16は、スタティックRAMSRAMを含む。バッファメモリ16は、パケットヘッダー及びパケットデータを記憶するように割り当てられる。詳細には、データクレジット幾つかの実施例では、さらにヘッダークレジットの少なくともいずれかよりも粗い粒度でバッファメモリ16を割り当てる。バッファメモリ16は、ここでは、バッファユニットBUとして引用される、顆粒状態で割り当てられる。したがって、図1において、ヘッダーBU30及びデータBU32が示される。本記載の残りは、BUと同じ粒度のヘッダークレジット及びより細かな粒度のデータクレジットの実施例を使用することとする。しかしながら、BUよりも粒度の細かいヘッダークレジット、及びデータクレジットメカニズムと同様のメカニズムがヘッダークレジットのために用いられる実施例が考慮される。BU粒度はDU粒度よりも粗いので、バッファメモリ16はデータを記憶するのに十分に用いられないかもしれない。図2は、BUがDUのサイズの4倍である場合の完全利用よりも少ない一例を示したブロック図である。他の実施例は、DUのサイズをN倍したBUを一般的に含む。ここで、Nは1より大きな整数である。或る実施例の場合、Nは2の累乗である。一般的に、様々なパケットのデータペイロードは、0及びM個のDUの間である。ここで、Mは0よりも大きな整数である。Mのサイズは実装インプリメンテーションに影響され、インタフェース20の定義に依存する例えば、インタフェース20はパケット当りの最大データペイロードサイズを定義する。しかしながら、Mは、Nとの特別な関係を必ずしも持っていない。つまり、MNは所与のパケットに対して整数値である必要はない。図2の右側にBUが、一例として記憶されたデータペイロードの内部を点線で延長して示されている。左側には、実線でDUを示している。上述したように、本例ではBU当り4個のDUがある。5個のDUペイロードが図2に示されている。最初の4個のDUはBU0に記憶され、BUすべて占領する。5番目のDUはBU1に記憶される。バッファメモリ16は、BU粒度でペイロードデータを記憶するよう割り当てられるので、BU1内で3個のDUを未使用にしたまま、BU1の完全性はペイロード40に割り当てられる。別のやり方を検討すると、ペイロード40に対応するパケットが消費されるまで、バッファメモリ16の3DUは使用できず、そして、ペイロード40を送信するための送信機12により消費されるDU及び、その結果、データクレジットの数に関するアカウンティングエラーを本質的に構成してしまうかもしれない。つまり、送信機12はペイロード40を送信するために5個のクレジットを消費するが、実際にはペイロード40はバッファメモリ16の8個のクレジットを占領する。別のペイロード42が図2に示されている。これは、一例として4個のDUである。したがって、ペイロード42はBU2に記憶されており、未使用のDUはない。3番目のペイロード44もまた示され、これは、BU3及びBU4の2個のDUを占領する6個のDUである。したがって、バッファメモリ16内の2以上DUが未使用である。一般的に、パケットは最大P個のBUを占領し、ペイロードがNの偶数個のDUでないならば、最後に占領されたBU内の1以上のDUが未使用である。言い換えると、未使用のDUが、そのペイロードがBUの始めに割り当てられることを要求されないのであればペイロードによって占領されたBUの始め、若しくは始め及び終わりの両方に存在する。いずれにしても、BUに対応するDUの数に基づき、データペイロードに関する最大の起こりうるエラーが定義される。1つのDUがBUを占領する場合は最大エラーが生じ、その結果、所与のペイロードに関する最大エラーがN-1個のDU又はN-1個のデータクレジットである。したがって、パケットデータを記憶するために割り当て可能な所与の数Y個のBUについて、YN個よりも少ないデータクレジットが送信機12に通知される。クレジット管理ユニット26は、オーバーフローがバッファメモリ16に生じないことを保証することを通知したであろうデータクレジットを用意しておく。具体的に言うと、各データペイロードが最大エラーN-1を負うとき、最悪ケースの総エラーが生じる。最大でCパケットが送信されるならば例えば、ヘッダークレジットの数がCである、最悪ケースの全体エラーはC-1×N-1である。最後のデータペイロードのエラーが検出されないのでC-1が用いられる。というのも、送信機12はヘッダークレジットが使い果たされたとき別のパケットを送信することができないからである。データペイロードを有する所与のパケットが受信されるとき、ペイロードが最大エラーよりも少ない量を負うのであれば、幾つかのデータクレジットは、パケットが消費される前ただちに解放される。つまり、クレジット管理ユニット26が送信機12に対してブロードキャストされていなかったということを、保有されていたクレジットが明らかにした量よりも、データペイロードに関するバッファメモリ16内の未使用のDUは少ない。例えば、図2において、ペイロード42はゼロエラーを認識し、その結果、3N-1-0のデータクレジットがペイロード42を受信することに応じて解放される。ペイロード44は2エラーを認識し、その結果、1N-1-2のデータクレジットがペイロード42を受信することに応じて解放される。ひとたびパケットが消費されると、保有されていたクレジットが再び必要とされるなぜなら、受信される次のパケットは未使用のDUの最大数を実現するペイロードを有するからである。したがって、送信機によって実際に消費された残りのクレジットは、パケットが消費されるときに解放される。つまり、パケットが消費されるときに解放されるクレジットの数は、ペイロードに対応する実際のクレジット数から、パケットが受信されたときに解放されるクレジット数を差し引いた値に等しい。未認識のエラーに対応したクレジットを解放することによって、利用可能なデータクレジットの欠如のために遅延したであろう追加パケットを送信できる可能性がある。つまり、インタフェース20上のバンド幅はより効率的に利用されるのである。図3は、受信機14の一実施例を示すブロック図であり、未使用DUの最大数よりも少ない未使用DUを負担するデータペイロードに関するデータクレジットの早期解放のインプリメントを詳細に示している。本実施例の場合、クレジット管理ユニット26が示され、最大DUエラーレジスタ28A及び解放データクレジットDCrsレジスタ28Bに結合されている。レジスタ28A28Bは、図1に示したクレジットレジスタ28の一部である。また、図3に示したデータクレジットFIFO28Cは、1以上のクレジットレジスタ28又はFIFOメモリ若しくは他のメモリとしてインプリメントされている。或いはまた、データクレジットFIFO28Cはインプリメントされず、そのかわりに、そこに記憶されたデータが受信パケットにより例えば、バッファメモリ16内にキューされる。クレジット管理ユニット26は、未使用DUの最大数を参照し、様々な点で解放されるクレジットを計算する。最大DUエラーレジスタ28Aはこの値を記憶する。クレジット管理ユニット26が上記値を生成するか、若しくは上記値がソフトウェアによってレジスタ28A内にプログラム化されるかの何れかである。或る実施例では、DU及びBUの両方が固定され、かつ、クレジット管理ユニット26内にきっちりコード化される。そして、レジスタ28Aは除外される。一実施例において、クレジット管理ユニット26は解放クレジットを蓄積し、これを解放データクレジットレジスタ28B内の送信機12へ送信する。クレジット管理ユニット26は、解放クレジットを送信するときを決定する任意のメカニズムを使用する。例えば、解放クレジットの最後の送信や、経過時間及び解放クレジットの数の組み合わせなどがあってから或る期間の時間が経過した後、或る数のクレジットが蓄積されたら例えば、プログラム化された閾値を超えるなど解放クレジットを送信する。同様のレジスタが解放ヘッダークレジットを蓄積するのに用いられたり、又は同じレジスタ内のフィールドが使用されたりする。データクレジットFIFO28Cは、バッファメモリ16に記憶される各パケットに関するデータクレジットの数DCrsを記憶する。パケットはバッファメモリから消費されるので、データクレジットの対応する数はデータクレジットFIFO28Cから読み出され、そして解放される。クレジット管理ユニット26は、パケットを送信するのに消費したデータクレジット総数、及び当該パケットを受信することに応じて解放したデータクレジットの数に基づき、各受信したパケットのデータクレジット数を計算する。図4は、システム10の初期化中に受信機14の一実施例におけるオペレーションを示すフローチャートである。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチクロックサイクル上でパイプライン化され得る。クレジット管理ユニット26は、受信機12に通知されるはずのヘッダークレジットの数headercredits及びバッファユニットN当りのデータユニットの数に基づき、総ポテンシャルデータユニットエラーDUErrを決定する。詳しく言うと、DUErrは、によって与えられるブロック50。クレジット管理ユニット26は、データユニットデータクレジットの数を決定し、送信機12に通知するDUAdv。つまり、DUAdvは、バッファメモリ16におけるデータユニットの総数Nパケットデータを記憶するために割り当てられたバッファユニット数-ブロック50で決定されたDUErrとして計算されるブロック52。効率的には、DUErrはバッファメモリ16内のバッファユニットで生じ得る未使用のデータユニットを扱うために保有されていたデータクレジットの数である。クレジット管理ユニット26は、ヘッダークレジット及びデータクレジットのためのDUAdvを通知するブロック54。くわえて、クレジット管理ユニット26は、レジスタ28A内のMaxDUErrをN-1にセットし、そしてまた、レジスタ28B内の解放データクレジットをゼロに初期化するブロック56。図5は、インタフェース20上でパケットを受信することに応じた受信機14のオペレーションの一例を示すフローチャートである。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチクロックサイクル上でパイプライン化され得る。クレジット管理ユニット26は、ペイロードにおいて認識されたデータエラーすなわち、ペイロードデータを記憶するバッファユニットで未使用なデータユニットの数を決定するブロック60。クレジット管理ユニット26は、未認識のデータエラーがMaxDUErrから認識されたデータエラーを差し引いた値に等しいことを決定するブロック62。未認識のデータエラーは、パケットを受信すると解放されるデータクレジットの数である。クレジット管理ユニット26は、解放データクレジットレジスタ28B内の解放データクレジットに対して未認識のデータエラーを追加するブロック64。さらに、パケットがデータクレジットFIFO28C内のバッファメモリ16から消費されるとき、クレジット管理ユニット26は解放されるはずのデータクレジット数を記憶するブロック66。詳しく言うと、FIFOに書き込まれた数は、ペイロードから未認識のデータエラーを差し引いた値に対応する実際のデータクレジット数である。図6はバッファメモリ16から消費されるパケットに応じた受信機14のオペレーションの一例を示すフローチャートである。一般的に、ターゲット18によってバッファメモリ16から読み出されるとき、そうでなければパケットがバッファメモリ16にもはや記憶する必要がないとき例えば、パケットが落ち込んだ等、パケット消費される。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチクロックサイクル上でパイプライン化され得る。クレジット管理ユニット26は、データクレジットFIFO28C内のエントリーからデータクレジット数を読み出し、そのデータクレジット数をレジスタ28B内の解放データクレジットに追加する。その結果、データクレジットを解放するブロック70及び72。一実施例において、パケットは受信した順序で消費され、そしてデータクレジット数はFIFOのヘッダーから読み出される。パケットが異なる順序で消費される場合、所望のエントリーに対してFIFOへのオフセットが提供される。図4~6は、各ペイロードについて取っておいた最大数と比較したとき、バッファユニット内の未使用のデータクレジットの実際の数に基づき、データクレジットの早期の解放に関連するオペレーションを示していることに留意されたい。受信機14及びクレジット管理ユニット26の少なくとも何れかは、各ポイントにおいて上述したものと同様の追加のオペレーションを含む。受信機14の別の実施例は、上述したデータクレジットの早期解放に加えて又は代わりに、適合クレジット管理を実行するする。適合クレジット管理により、受信機14はヘッダーに割り当てられるバッファメモリ16に、及びインタフェース20に実際に受信されるトラフィックへのデータに割り当てられるバッファメモリ16に一致することを試みる。つまり、データペイロードのサイズが増大するとき、多くのデータクレジット及び少ないヘッダークレジットがインタフェースバンド幅のより効率的な使用を認める。というのも、各パケットは依然として1つのヘッダークレジットを要求するが、ペイロードについてはマルチのデータクレジットであるからである。データペイロードのサイズが増大するので、少ないデータクレジット及び多くのヘッダークレジットを持つことはインタフェースのバンド幅の効率的な使用を求めることになるというのも、各パケットの要求されたデータクレジットに対する、要求されたヘッダークレジットの比率は増加しているからである。したがって、クレジット管理ユニット26は、受信機14により受信されたデータペイロードのサイズをモニタし、ヘッダーに割り当てられたバッファメモリ例えば、ヘッダーのバッファユニット30のサイズの量及びデータペイロードに割り当てられたバッファメモリ例えば、データのバッファユニット32のサイズの量をダイナミックに修正する。或いはまた、ヘッダーに割り当てられたメモリの量は、所望のヘッダー最大数に対応するのに十分な大きさであるが、クレジットは送信機が利用可能なヘッダークレジットの数及びデータクレジットの数を増減するように管理される。このようなダイナミックなクレジット管理は、バッファメモリ16のより効率的な使用を許可することでもある。なぜなら、上述したとおり、ヘッダークレジットの数はバッファユニットにおける未使用のデータユニットに基づき留保されるべきデータクレジットの数に影響を及ぼすからである。一実施例において、ペイロードの期待したサイズの真ん中に、適当なデータペイロードをもつパケットに関して、ヘッダー及びデータクレジット及び対応するバッファメモリ割り当てを初期化する。例えば、一実施例において、インタフェース20は、PCIeインタフェースであり、データペイロードのサイズは0と256バイトの間にあり、クレジットは128バイトペイロードに関して初期化される。次に、オペレーションで経験されたペイロードの実際のサイズに応答してダイナミックな調整が実行される。図7は、上述したデータクレジットの早期解放と共に、ダイナミックなクレジット管理の一実施例を行うための詳細に関する受信機14の一実施形態を表したブロック図である。図7の実施例は、上述したレジスタ28A、28B、及びFIFO28Cを含む。さらに、解放ヘッダークレジットHCreレジスタ28D、最大外部ヘッダークレジットMaxExHeadレジスタ28E、最大再呼び出しヘッダークレジットMaxRecHeadレジスタ28F、ペンディングヘッダークレジットPendHeadCrレジスタ28G、ペンディングデータクレジットPendDataCrレジスタ28H、認識データクレジットRlzdDataCrレジスタ28I、及び認識ヘッダークレジットRlzdHeadCrレジスタ28Jを含み、図7に示すクレジット管理ユニット26にすべて結合される。解放ヘッダークレジットHCreレジスタ28Dはレジスタ28Bに類似するが、解放ヘッダークレジットを蓄積する。或いはまた、上述したとおり、解放ヘッダークレジット及び解放データクレジットは、所望であれば同一レジスタの2つのフィールドに蓄積される。MaxExHead及びMaxRecHeadレジスタ28E-28Fは、ダイナミックなクレジット管理に制限される。これらのクレジットは後述するとおり、クレジット管理ユニット26によって自動的にセットされたり、又は所望であればソフトウェアによってプログラムされる。詳しく言うと、データクレジットを差し控えることにより割り当てられる追加のヘッダークレジットの最大数は、MaxExHeadレジスタ28Eにより示される。追加のヘッダークレジットを解放するために差し控えられるヘッダークレジットの最大数は、MaxRecHeadレジスタ28Fにより示される。ペンディングヘッダークレジット及びペンディングデータクレジットレジスタ28G-28Hは、計画されたヘッダー及びデータクレジット調整と、その計画された調整を満たすために要求された解放ヘッダー又はデータクレジットとを蓄積する。これらの蓄積は、ダイナミック調整が生じる際に実行され、そのダイナミック調整において扱われないクレジットをキャプチャーする。例えば、一実施例において、ヘッダークレジットの増加が3つのデータクレジットの減少を要求するとする。3つのデータクレジットがまだ使用可能でない場合、レジスタ28Hに使用可能なデータクレジットが蓄積される。ペンディングヘッダー及びデータクレジットは、その後の解放クレジットを介して取得される必要なクレジットのキャプチャーを許可する値が送られる。認識されたデータクレジット及びヘッダークレジットレジスタ28I-28Jは、送信後の認識されたヘッダークレジット調整及びデータクレジット調整を記憶する。図8を参照すると、適合クレジット管理を実行するシステム10の初期化中、受信機14の一実施例のオペレーションを例示する高レベルのフローチャートが示されている。データクレジットの早期解放を実行する実施例ということから、図8のオペレーションは、図4のオペレーションに追加されるものである。理解を容易にする目的で特定の順序にあるブロックが示されているが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチクロックサイクル上でパイプライン化され得る。クレジット管理ユニット26は、MaxExHeadレジスタ28Aを、許可された最大ヘッダー数CMDから中間サイズパケットheadercreditsのために割り当てられたヘッダークレジット数を差し引いた値に初期化する。許可された最大ヘッダー数CMDは、ハードウェアの最大数であったり、或いはヘッダーのバッファユニット30の割り当てに基づくソフトウェアによりプログラムされていてもよい。ヘッダークレジットの数は、例えば、データバッファユニットの数を中間サイズパケットの2で除算した値に等しいこともある。したがって、追加のヘッダークレジットの最大数は、ヘッダーのバッファユニットで割り当てられなかった残りのスペースであり得るブロック80。リコールされたヘッダークレジットの最大数追加のデータクレジットを許可するためにダイナミックに除去されるヘッダークレジットMaxRecHeadは、現在ヘッダークレジットの1/2、又は、バッファメッセージ16内のデータバッファユニットの総数を4で割った数の整数値をヘッダークレジットから差し引いた数の小さい方として初期化されるブロック82。ヘッダークレジット数の1/2は、最大パケットに関する合理的な数であるとして選択されるものである。4で割られたデータバッファユニットの数は、本実施例に関しては最小である。なぜなら、最大のデータペイロードが4バッファユニットであるからである。一実施例において、ヘッダークレジットの初期数が2以下の場合、最大リコールヘッダークレジットはゼロに設定されることに留意されたい。2又は1つのヘッダークレジットのとき、ヘッダークレジットを削減することによって得られる利益は何もない。というのは、ヘッダークレジットの不足は追加データクレジットを使用することを回避するからである。クレジット管理ユニット26は、ヘッダークレジットの数及びデータユニットの通知データクレジットDUAdvデータクレジットを通知するブロック84。図9を参照すると、パケットを受信することに反応した受信機14の一実施例のオペレーションを例示する高レベルのフローチャートが示されている。データクレジットの早期解放を実行する実施例ということから、図9のオペレーションは、図5のオペレーションに追加されるものである。理解を容易にする目的で特定の順序にあるブロックが示されているが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチクロックサイクル上でパイプライン化され得る。一般的に、クレジット管理ユニット26は、データペイロードのサイズに基づき4カテゴリーの1つにパケットを分類し、そしてそのカテゴリーに従いクレジットを調整する。その結果、本実施例では、各受信パケットに基づく調整を行なう。他の実施例では、所望であれば、調整をするために2以上のパケットにわたるパケットサイズのモニタリングを行う。パケットがデータペイロード処理を含まない場合判断ブロック90で、yes、そのパケットはCat0パケットであり、どんな調整も行なわれない。パケットが中間サイズのパケットデータペイロードの1/2以下例えば、上述したPCIe実施例における64バイトであれば判断ブロック92で、yes、そのパケットはCat1パケットである。データペイロードはCat1パケットよりも相当に小さく、その結果、データクレジットを削減すること及びヘッダークレジットを増加することは、インタフェースのバンド幅使用を良くすることにつながるブロック94。パケットが中間サイズのパケットの0.5~1.5倍の間にあるデータペイロードを含む場合判断ブロック96で、yes、パケットはCat2パケットである。Cat2において、パケットデータペイロードは、ほぼ中間サイズである。Cat2サイズのレンジの場合、初期のヘッダー及びデータクレジットはほぼ正しい。ペンディング及び認識されたクレジットがゼロでない場合、クレジット管理ユニットは最新の調整とは反対の方向にクレジットを調整するブロック98。つまり、最新の調整がヘッダークレジットを増加し、データクレジットを減少させるためであった場合、クレジット管理ユニットはデータクレジットを増加させ、ヘッダークレジットを減少させる。これに対して、最新の調整がヘッダークレジットを減少させ、データクレジットを増加させるためであった場合、クレジット管理ユニットはデータクレジットを減少させ、ヘッダークレジットを増加させる。最後に、データペイロードが大中間パケットの1.5倍以上、判断ブロック96で、noならば、そのパケットはCat3パケットである。大きなペイロードCat3パケットは、多くのデータクレジット及び少ないヘッダークレジットからの利益を享受し、その結果、クレジット管理ユニット26はヘッダークレジットを減少させ、データクレジットを増加させるブロック100。MaxHeadCr及びMaxRecHeadレジスタ28F-28Gがダイナミッククレジット調整に限界を与えるために使用される場合、図9のオペレーションは制限を受けることになることに留意すべきである例えば、その調整がMaxHeadCr及びMaxRecHeadレジスタ28F-28Gによってセットされた限界に違反しているならば、クレジットは図示したように調整されない。。図10及び11は、一実施例に関し、図9のオペレーションを詳細に示す擬似コードをあらわす。図7に示したレジスタ名はこの擬似コードで示されている。さらに、擬似コードを簡便にするため、ヘッダークレジット及びデータクレジットに関するベクトル化された注釈が使用される。詳細には、adaptivecreditsは、{adaptiveheadercreditsadaptivedatacredits}として定義され、pendingcreditsは、{PendHeadCrPendDataCr}として定義される。adaptivecreditsは、将来的に調整の可能性があるヘッダークレジット及びデータクレジットである。解放ヘッダークレジット及び解放データクレジットは、現在、解放されているクレジットである。解放データクレジットは、上述したように、データエラーが所与のパケットに関する最大エラーよりも少ないとき、早期に解放されるデータクレジットを含む。また、解放ヘッダークレジット及び解放データクレジットの変数は、バッファメモリ16からのパケット消費を理由に解放されたクレジットを含む。図10は、適合クレジットの生成を示す。一般的に、限界に達したならば、適合クレジットはペンディングクレジットに等しい。そうでなければ、適合クレジットは、受信パケットのカテゴリーに依存する及びCat2パケットのケースでは最新の調整に依存するクレジットを、ペンディングクレジットに増減することを含む。本実施例の場合、最新の調整は、ペンディングヘッダークレジット及び認識されたヘッダークレジットの総和をとって、それをゼロと比較することによって検出される。図10にみられるとおり、本実施例の場合、1つのヘッダークレジットが3つのデータクレジットに等しい。それゆえ、ヘッダークレジットを1つ増やすことは、データクレジットを3つ減らすことである。逆も同じである。他の実施例では、N-1に基づき、データクレジットに対する異なる比率のヘッダークレジットを有する。最後に、図10において、中間値であるremainingpemdingdが計算される。このremainingpemdingdは、0以下であり、且つ3より小さくするべきである。一実施例において、PendHeadCrが負であれば、remainingpemdingdは0である。図11は、図10で決定された適合クレジット及び解放クレジットreleasingcreditsに基づく認識されたクレジットの計算を示す。繰り返しになるが、図11の例は1つのヘッダークレジットに等しい3つのデータクレジットに基づくものである。それは、任意の所与の時点で調子をあわせてペンディングされる1又は2のデータクレジットを許可する。最後に、レジスタ28B、28D、及び28G-28Jの更新が図11に示されている。ここで、=は、等号の記号の右側の値で、レジスタの現在値を増加させることをあらわし、-=は、等号の記号の右側の値で、レジスタの現在値を減少させることをあらわしている。上述した開示が完全に理解されることによって、多数の変形例及び修正例が当業者によって明らかになるであろう。特許請求の範囲は、これらの変形例及び修正例のすべてを包含するように解釈されることを意図している。