(57)【要約】【課題】通信速度の高速化を実現可能な情報処理装置、情報処理システムおよびその通信方法を提供する。【解決手段】例えば、送信側の情報処理装置が送信動作（ＭＷｒ１）を行い、これに応じて受信側の情報処理装置は、肯定応答（Ａｃｋ１）を返信したのち、プロセッサ回路ＣＰＵを用いてＭＷｒ１に伴いバッファ回路ＢＵＦ上に格納されたパケットデータの取り出しを行う。この際に、受信側は、ＢＵＦ上のパケットデータの取り出しが完了した（すなわちＢＵＦに空き容量が存在する）ことを意味する「ＵｐｄａｔｅＦＣ１」を、実際にＢＵＦに空き容量が存在する（ＢＵＦが開放される）よりも前の時刻（例えばＡｃｋ１の直後）で返信する。送信側は、「ＵｐｄａｔｅＦＣ１」に応じて次の送信動作（ＭＷｒ２）を行う。【選択図】図４
2012064090.tif 000002
【特許請求の範囲】
【請求項１】
伝送線路を介して入力された第１サイズの受信データを格納するバッファ回路と、
前記バッファ回路に前記第１サイズの前記受信データが格納された場合に当該受信データを前記バッファ回路から読み出すことで前記バッファ回路に前記第１サイズの空き容量を生成する処理回路と、
前記バッファ回路に前記第１サイズの空き容量が実際に存在しているか否かを逐次判別する第１回路と、
前記バッファ回路に前記第１サイズの空き容量が存在することを表す第１情報を前記伝送線路に出力する第２回路とを備え、
前記第２回路は、前記第１回路が前記バッファ回路に前記第１サイズの空き容量が実際に存在していないと判別している段階で、前記第１情報を出力することを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記受信データは、始まりを表すスタートシンボルと終わりを表すエンドシンボルを備えたデータブロックの内部に含まれており、
前記第２回路は、前記情報処理装置が前記データブロックの前記エンドシンボルを検出した時刻となる第１時刻から、前記処理回路が当該受信データに伴う前記空き容量を生成する直前の時刻となる第２時刻までのいずれかの時刻で前記第１情報を出力することを特徴とする情報処理装置。
【請求項３】
請求項２記載の情報処理装置において、
前記第２回路は、前記第１時刻で前記第１情報を出力することを特徴とする情報処理装置。
【請求項４】
請求項２記載の情報処理装置において、更に、
前記第１回路が前記バッファ回路に前記第１サイズの空き容量が存在していないと判別している段階で前記伝送線路を介して前記受信データが入力されてきた場合に、当該受信データの再送信依頼を表す第２情報を前記伝送線路に出力する第３回路を備えることを特徴とする情報処理装置。
【請求項５】
請求項４記載の情報処理装置において、
前記データブロックには、更に前記第１サイズを示す第３情報が含まれており、
前記第１回路は、
前記データブロックから前記第３情報を検出した際に、現在の値に前記第３情報の値を減算または加算し、前記バッファ回路の前記処理回路による読み出しが完了したサイズを示す第４情報が入力された際に、現在の値に前記第４情報の値を加算または減算するクレジット演算回路と、
前記クレジット演算回路の演算結果を監視し、前記クレジット演算回路による前記第３情報の値を用いた演算結果に基づいて当該データブロックにおける前記受信データの前記バッファ回路への格納可否を判別する受信可否判別回路とを備え、
前記クレジット演算回路は、前記受信可否判別回路が前記バッファ回路への格納が不可能と判別した場合には前記第３情報の値を用いた演算結果を元に戻すことで前記バッファ回路における前記空き容量のサイズを管理し、
前記受信可否判別回路は、前記バッファ回路への格納が可能と判別した場合には、前記第２回路に前記第１情報の出力を行わせ、前記バッファ回路への格納が不可能と判別した場合には、前記第３回路に前記第２情報の出力を行わせると共に、前記受信データの前記バッファ回路への格納動作を停止させる信号を出力することを特徴とする情報処理装置。
【請求項６】
請求項２記載の情報処理装置において、更に、
前記第２回路による前記第１情報の出力タイミングを可変制御するタイミング調整回路を有することを特徴とする情報処理装置。
【請求項７】
請求項６記載の情報処理装置において、
前記タイミング調整回路は、前記第１情報の出力タイミングを、前記第１時刻を起点として前記第３回路による前記第２情報の出力が発生しなくなるまで段階的に遅らせる制御を行うことを特徴とする情報処理装置。
【請求項８】
請求項６記載の情報処理装置において、
前記タイミング調整回路は、前記第１情報の出力タイミングを、前記第２時刻を起点として前記第３回路による前記第２情報の出力が発生するまで段階的に早める制御を行うことを特徴とする情報処理装置。
【請求項９】
請求項２記載の情報処理装置において、
前記情報処理装置は、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に基づく装置であることを特徴とする情報処理装置。
【請求項１０】
請求項２記載の情報処理装置において、
前記バッファ回路は、前記第１サイズの前記受信データを格納するのに必要な容量を持つ１個の記憶回路によって構成されることを特徴とする情報処理装置。
【請求項１１】
請求項２記載の情報処理装置において、
前記バッファ回路は、それぞれが前記第１サイズの前記受信データを格納するのに必要な容量を持ち、それぞれを独立に読み書きすることが可能な第１および第２記憶回路によって構成され、
前記第２回路は、前記第１記憶回路を対象とした前記第１情報の出力と、前記第２記憶回路を対象とした前記第１情報の出力を行うことを特徴とする情報処理装置。
【請求項１２】
第１および第２情報処理装置と、
前記第１情報処理装置と前記第２情報処理装置とを接続する伝送線路とを備え、
前記第１情報処理装置は、
前記第２情報処理装置から前記伝送線路を介して入力された第１サイズの第１受信データを格納する第１バッファ回路と、
前記第１バッファ回路に前記第１サイズの前記第１受信データが格納された場合に当該第１受信データを前記第１バッファ回路から読み出すことで前記第１バッファ回路に前記第１サイズの空き容量を生成する第１処理回路と、
前記第１バッファ回路に前記第１サイズの空き容量が実際に存在しているか否かを逐次判別する第１Ａ回路と、
前記第１バッファ回路に前記第１サイズの空き容量が存在することを表す第１Ａ情報を前記伝送線路を介して前記第２情報処理装置に出力する第２Ａ回路とを有し、
前記第２情報処理装置は、
前記第１情報処理装置から前記伝送線路を介して入力された前記第１サイズの第２受信データを格納する第２バッファ回路と、
前記第２バッファ回路に前記第１サイズの前記第２受信データが格納された場合に当該第２受信データを前記第２バッファ回路から読み出すことで前記第２バッファ回路に前記第１サイズの空き容量を生成する第２処理回路と、
前記第２バッファ回路に前記第１サイズの空き容量が実際に存在しているか否かを逐次判別する第１Ｂ回路と、
前記第２バッファ回路に前記第１サイズの空き容量が存在することを表す第１Ｂ情報を前記伝送線路を介して前記第１情報処理装置に出力する第２Ｂ回路とを有し、
前記第２Ａ回路は、前記第１Ａ回路が前記第１バッファ回路に前記第１サイズの空き容量が実際に存在していないと判別している段階で、前記第１Ａ情報を出力し、
前記第２Ｂ回路は、前記第１Ｂ回路が前記第２バッファ回路に前記第１サイズの空き容量が実際に存在していないと判別している段階で、前記第１Ｂ情報を出力することを特徴とする情報処理システム。
【請求項１３】
請求項１２記載の情報処理システムにおいて、
前記第１受信データは、始まりを表すスタートシンボルと終わりを表すエンドシンボルを備えた第１データブロックの内部に含まれており、
前記第２Ａ回路は、前記第１情報処理装置が前記第１データブロックの前記エンドシンボルを検出した時刻となる第１Ａ時刻から、前記第１処理回路が当該第１受信データに伴う前記空き容量を生成する直前の時刻となる第２Ａ時刻までのいずれかの時刻で前記第１Ａ情報を出力し、
前記第２受信データは、始まりを表すスタートシンボルと終わりを表すエンドシンボルを備えた第２データブロックの内部に含まれており、
前記第２Ｂ回路は、前記第２情報処理装置が前記第２データブロックの前記エンドシンボルを検出した時刻となる第１Ｂ時刻から、前記第２処理回路が当該第２受信データに伴う前記空き容量を生成する直前の時刻となる第２Ｂ時刻までのいずれかの時刻で前記第１Ｂ情報を出力することを特徴とする情報処理システム。
【請求項１４】
請求項１３記載の情報処理システムにおいて、
前記第２Ａ回路は、前記第１Ａ時刻で前記第１Ａ情報を出力し、
前記第２Ｂ回路は、前記第１Ｂ時刻で前記第１Ｂ情報を出力することを特徴とする情報処理システム。
【請求項１５】
請求項１３記載の情報処理システムにおいて、
前記第１情報処理装置は、更に、前記第１Ａ回路が前記第１バッファ回路に前記第１サイズの空き容量が存在していないと判別している段階で前記伝送線路を介して前記第１受信データが入力されてきた場合に、当該第１受信データの再送信依頼を表す第２Ａ情報を前記伝送線路に出力する第３Ａ回路を備え、
前記第２情報処理装置は、更に、前記第１Ｂ回路が前記第２バッファ回路に前記第１サイズの空き容量が存在していないと判別している段階で前記伝送線路を介して前記第２受信データが入力されてきた場合に、当該第２受信データの再送信依頼を表す第２Ｂ情報を前記伝送線路に出力する第３Ｂ回路を備えることを特徴とする情報処理システム。
【請求項１６】
請求項１３記載の情報処理システムにおいて、
前記情報処理システムは、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に基づくシステムであることを特徴とする情報処理システム。
【請求項１７】
バッファ回路および処理回路を備えた第１情報処理装置と、
第２情報処理装置と、
前記第１情報処理装置と前記第２情報処理装置とを接続する伝送線路とを有する情報処理システムの通信方法であって、
前記情報処理システムは、
前記第２情報処理装置が、前記第１情報処理装置に向けて前記伝送線路を介して第１送信データを送信する第１ステップと、
前記第１情報処理装置が、前記第１送信データを認識し、前記第１送信データを前記バッファ回路に格納する第２ステップと、
前記第１情報処理装置の前記処理回路が前記バッファ回路に格納された前記第１送信データの読み出しを行う第３ステップと、
前記第１情報処理装置が、前記第３ステップにおいて前記第１送信データの読み出しが完了したことを表す第１情報を前記第２情報処理装置に向けて前記伝送線路を介して返信する第４ステップと、
前記第２情報処理装置が、前記第１情報に応じて前記第１情報処理装置に向けて前記伝送線路を介して第２送信データを送信する第５ステップとを実行し、
前記第４ステップでの前記第１情報の返信は、前記第２ステップにおいて前記第１送信データを認識した時刻となる第１時刻から、前記第３ステップにおいて前記第１送信データの読み出しが完了する直前の時刻となる第２時刻までの間のいずれかの時刻で行われることを特徴とする情報処理システムの通信方法。
【請求項１８】
請求項１７記載の情報処理システムの通信方法において、
前記情報処理システムは、さらに、
前記第１情報処理装置が、前記第５ステップで送信された前記第２送信データを認識し、この認識が行われた際に前記第３ステップにおける前記第１送信データの読み出しが完了していない場合に、前記第２送信データの再送信依頼を表す第２情報を前記第２情報処理装置に向けて前記伝送線路を介して返信する第６ステップと、
前記第２情報処理装置が、前記第２情報に応じて前記第１情報処理装置に向けて前記伝送線路を介して前記第２送信データの再送信を行う第７ステップとを実行することを特徴とする情報処理システムの通信方法。
【請求項１９】
請求項１８記載の情報処理システムの通信方法において、
前記情報処理システムは、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に基づくシステムであることを特徴とする情報処理システムの通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよびその通信方法に関し、特に、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）規格に基づくインタフェース回路を備えた情報処理装置、および、ＰＣＩｅ規格に基づく通信を行う情報処理システムならびにその通信方法に適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、特許文献１には、バッファの予約許容値を求め、該予約許容値に基づき新たに受付けるデータフレームの予約制御を行うバッファ制御方式が示されている。特許文献２には、データが受信バッファマージンまで格納された場合にデータ送信中断の要求を行う受信バッファ制御装置において、受信バッファマージンをデータの伝送時間の計測によって定める構成が示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０６−１３２９７５号公報
【特許文献２】特開平０６−２９０１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、ＰＣＩシステムやＰＣＩ−Ｘシステムの後継となるＰＣＩｅシステムの普及が進んでいる。ＰＣＩｅシステムでは、１レーン当たり２．５Ｇｂｐｓでパケット転送を行う高速シリアルインタフェースが採用されると共に、パラレルインタフェースとなるＰＣＩやＰＣＩ−Ｘシステムとの間でソフトウェアの互換性が保たれている。このパケット転送に際し、１パケット当たりのデータ（データペイロード）のサイズは、０〜４Ｋバイトの範囲で設定可能となっている。また、ＰＣＩｅシステムでは、「受信側が、受信可能なバッファサイズを送信側に適宜に通知し、送信側が、このバッファサイズに基づいて受信側でオーバーフローが生じないようにデータ送信を行う」という特徴的なフロー制御方式が採用されている。
【０００５】
ここで、比較的大きなサイズのデータを転送したいような場合を想定する。前述したデータペイロードのサイズを例えば４Ｋバイトに設定した場合、ＰＣＩｅシステムでは高速シリアル通信に伴い高いスループットが得られるため、ＰＣＩシステム等に比べて十分な通信速度を得ることが可能となる。しかしながら、データペイロードのサイズを例えば数バイトに設定し、この数バイトを単位として複数回の転送を行うような場合には、通信速度の低下が生じてしまう恐れがある。これは、ＰＣＩｅシステムでは、通信プロトコルの複雑化に伴いレイテンシが増大するためであり、本発明者等の検討によって、その中でも特に、前述したフロー制御方式に伴うレイテンシの増大が大きな要因となり得ることが見出された。
【０００６】
具体的には、当該フロー制御方式を用いると、送信側は、受信バッファの空きを確認した上でパケット送信を行うため、例えば、「受信側が、送信側からのパケットを受信し、当該パケットを受信バッファから取り出す毎に送信側に受信バッファの空きを通知する」といった制御が必要となる。そうすると、パケット転送を１回行う毎に受信バッファの空きの通知が生じるため、パケット転送の回数が増えると、その分当該通知のオーバヘッドによりレイテンシが増大することになる。なお、前述したようにデータペイロードのサイズを比較的大きな値に設定すれば通信速度の向上がある程度図れるが、実際上、例えばＰＣＩシステム等で用いたソフトウェアをＰＣＩｅシステムにそのまま流用したような場合などでこのような数バイト（例えば４バイト）単位の転送が生じ得る。
【０００７】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、通信速度の高速化を実現可能な情報処理装置、情報処理システムおよびその通信方法を提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【０００９】
本実施の形態による情報処理装置は、送信側から伝送線路を介して入力された第１サイズの受信データを格納するバッファ回路と、バッファ回路に受信データが格納された場合に当該受信データをバッファ回路から読み出すことでバッファ回路に第１サイズの空き容量を生成する処理回路と、第１回路および第２回路を備えたものとなっている。第１回路は、バッファ回路に第１サイズの空き容量が実際に存在しているか否かを逐次判別し、第２回路は、バッファ回路に第１サイズの空き容量が存在することを表す第１情報を伝送線路を介して送信側に返信する。ここで、第２回路は、第１回路がバッファ回路に第１サイズの空き容量が実際に存在していないと判別している段階で、第１情報を出力することが特徴となっている。
【００１０】
このように、第１情報を本来（実際にバッファ回路に空き容量が生成された段階）よりも早い段階で返信することで、バッファ回路上の受信データの読み出し動作と、第１情報に応じた送信側からの次の送信動作とを並行して行うことができ、通信速度の高速化が実現可能となる。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、通信速度の高速化が実現可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１による情報処理装置において、その構成の一例を示すブロック図である。
【図２】（ａ）、（ｂ）は、図１の情報処理装置で用いられるパケット構造の一例を示す説明図である。
【図３】図１の情報処理装置の主要な動作例を示す説明図であり、（ａ）は送信時の動作例、（ｂ）は受信時の動作例を示すものである。
【図４】（ａ）は、図３の動作例に伴うタイミングシーケンスの一例を示す模式図であり、（ｂ）は、（ａ）の比較例となるタイミングシーケンスの一例を示す模式図である。
【図５】（ａ）は、図３の動作例に伴う他のタイミングシーケンスの一例を示す模式図であり、（ｂ）は、（ａ）の比較例となるタイミングシーケンスの一例を示す模式図である。
【図６】（ａ）は、図１の情報処理装置における主要部の詳細な構成例を示すブロック図であり、（ｂ）は、（ａ）の比較例を示すブロック図である。
【図７】図６（ａ）の構成例の概略的な動作例を示すものであり、（ａ）は再送が生じない場合のタイミングシーケンス図、（ｂ）は再送が生じる場合のタイミングシーケンス図である。
【図８】本発明の実施の形態１による情報処理システムにおいて、その構成の一例を示す概略図である。
【図９】図８の情報処理システムの動作例を示す説明図である。
【図１０】本発明の実施の形態２による情報処理装置において、その構成の一例を示すブロック図である。
【図１１】図１０の情報処理装置の主要な動作例を示す説明図であり、（ａ）は送信時の動作例、（ｂ）は受信時の動作例を示すものである。
【図１２】図１１の動作例に伴うタイミングシーケンスの一例を示す模式図である。
【図１３】図１２の比較例となるタイミングシーケンスの一例を示す模式図である。
【図１４】図１１の動作例に伴う他のタイミングシーケンスの一例を示す模式図である。
【図１５】本発明の実施の形態３の情報処理装置において、再送信動作が生じる条件を簡略化して表すものであり、（ａ）はバッファ回路が１面の場合の説明図、（ｂ）はバッファ回路が２面の場合の説明図である。
【図１６】本発明の実施の形態３による情報処理装置において、その主要部の詳細な構成例を示すブロック図である。
【図１７】（ａ）、（ｂ）は、図６における投機時間調整回路のそれぞれ異なる動作例を示すフロー図である。
【図１８】本実施の形態による代表的な効果の一例を示す説明図である。
【図１９】本実施の形態による代表的な効果の一例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１４】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１５】
また、実施の形態の各機能ブロックを構成する回路素子は、特に制限されないが、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）等の集積回路技術によって、単結晶シリコンのような半導体基板上に形成される。以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
（実施の形態１）
《情報処理装置の全体構成》
図１は、本発明の実施の形態１による情報処理装置において、その構成の一例を示すブロック図である。図１に示す情報処理装置ＳＯＣは、特に限定はされないが一つの半導体チップによって実現され、プロセッサ回路ＣＰＵと、メモリ回路ＭＥＭと、ＰＣＩｅインタフェース回路ＰＣＩｅＩＦと、これらの間のデータ通信経路となる内部バスＩＢＳを備えている。ＰＣＩｅＩＦは、ＣＰＵインタフェース回路ＣＰＵＩＦ、バッファ回路ＢＵＦ、トランザクションレイヤ処理回路ＴＬ、データリンクレイヤ処理回路ＤＬ、メディアアクセスレイヤ処理回路ＭＡＣ、物理レイヤ処理回路ＰＨＹを備える。ＰＣＩｅＩＦは、ＰＣＩｅ規格に基づく各種プロトコル処理を行い、ポートＰＴに接続されたＰＣＩｅ用の伝送線路ＬＮを介して外部装置との間でパケットの送受信を行う。ＬＮは、ここでは簡略化しているが、実際には、差動型の全二重通信に対応した構成となっており、１個の通信経路（１レーン）当たり４本の伝送線路で構成される。なお、ＳＯＣにおける各回路の詳細な機能に関しては、以降にて適宜説明を行う。
【００１７】
図２（ａ）、（ｂ）は、図１の情報処理装置で用いられるパケット構造の一例を示す説明図である。図２（ａ）には、トランザクションレイヤパケット（ＴＬＰ）と呼ばれるパケット構造のフォーマットが示されている。ＴＬＰは、ヘッダＨＤ、データペイロードＤＡＴおよびエラー検出符号ＥＣＲＣからなり、送受信時に図１のＴＬによる処理対象となる。実際に送受信を行う際には、このＴＬＰにシーケンス番号ＳＥＱおよびエラー検出符号ＬＣＲＣが加えられ、これに対して更に、スタートシンボルＳＴＰおよびエンドシンボルＥＤが加えられたパケット（ここではトランザクションパケットＴＬＰ’と呼ぶ）が用いられる。ＳＥＱおよびＬＣＲＣは、送受信時に図１のＤＬ（およびＭＡＣ）による処理対象となり、ＳＴＰおよびＥＤは、送受信時に図１のＰＨＹによる処理対象となる。
【００１８】
ヘッダＨＤは、１２バイト長または１６バイト長の情報であり、例えば、当該パケットを特定の宛先に届けるためのルーティング情報ＲＵＴや、当該パケットのデータペイロードＤＡＴのサイズを表すデータペイロード長ＤＡＴＬなどを含んでいる。データペイロードＤＡＴには、最小０バイト〜最大４Ｋバイトの実データが格納される。エラー検出符号ＥＣＲＣは、４バイト長の情報として図１のＴＬによって付加され、最終的な受信先（エンドポイント）がエラー有無を検出する際に使用される。なお、ＥＣＲＣは省略することも可能である。シーケンス番号ＳＥＱは、２バイト長の情報であり、複数のパケットを転送する際に、各パケットの順序関係を示すものとして付加される。なお、受信側ではＳＥＱを参照することでパケット欠け等を検出することができる。エラー検出符号ＬＣＲＣは、４バイト長の情報として図１のＤＬによって付加され、最終的な受信先に到達する間に経由する各装置（後述する図８のＳＷ等）がエラー有無を検出する際に使用される。スタートシンボルＳＴＰおよびエンドシンボルＥＤは、それぞれ１バイト長の情報であり、パケット（フレーム）の始まりおよび終わりを識別するために図１のＰＨＹによって付加される。
【００１９】
図２（ｂ）には、データリンクレイヤパケット（ＤＬＬＰ）と呼ばれるパケット構造のフォーマットが示されている。前述したトランザクションレイヤパケット（ＴＬＰ）は、最終的な受信先の上位レイヤ（トランザクションレイヤ以上）に向けたパケットであるが、データリンクレイヤパケット（ＤＬＬＰ）は、最終的な受信先に到達する間に経由する各装置の下位レイヤ（データリンクレイヤ以下）に向けたパケットとなっている。ＤＬＬＰは、タイプＴＹＰ、データリンクデータＤＬＤＡＴおよびエラー検出符号ＣＲＣからなり、送受信時に図１のＤＬ（およびＭＡＣ）による処理対象となる。実際に送受信を行う際には、このＤＬＬＰにスタートシンボルＳＤＰおよびエンドシンボルＥＤが加えられたパケット（ここではデータリンクパケットＤＬＬＰ’と呼ぶ）が用いられる。ＳＤＰおよびＥＤは、送受信時に図１のＰＨＹによる処理対象となる。
【００２０】
タイプＴＹＰは、例えば、１バイト長の情報であり、肯定応答（Ａｃｋ）、否定応答（Ｎａｋ）、またはフロー制御情報（ＵｐｄａｔｅＦＣ）等を表す。データリンクデータＤＬＤＡＴは、タイプＴＹＰの種類に応じた付加的な情報を表す。ここで、タイプＴＹＰがフロー制御情報（ＵｐｄａｔｅＦＣ）であるデータリンクレイヤパケット（ＤＬＬＰ）は、前述したように、相手先に対して自身の受信バッファの空き容量を通知する際に使用される。エラー検出符号ＣＲＣは、４バイト長の情報として図１のＤＬによって付加され、最終的な受信先に到達する間に経由する各装置（後述する図８のＳＷ等）がエラー有無を検出する際に使用される。スタートシンボルＳＤＰおよびエンドシンボルＥＤは、それぞれ１バイト長の情報であり、パケット（フレーム）の始まりおよび終わりを識別するために図１のＰＨＹによって付加される。
【００２１】
《情報処理装置の全体動作》
図３は、図１の情報処理装置の主要な動作例を示す説明図であり、図３（ａ）は送信時の動作例、図３（ｂ）は受信時の動作例を示すものである。ここでは、情報処理装置ＳＯＣがエンドポイント（後述する図８のＥＰ）である場合を例として説明を行う。図３（ａ）に示すように、情報処理装置ＳＯＣが送信動作を行う際には、まず、プロセッサ回路ＣＰＵが、メモリ回路ＭＥＭ上に送信データ（図２（ａ）のＤＡＴに対応）やその宛先データ（図２（ａ）のＨＤに対応）等を作成し、これらのデータを内部バスＩＢＳやＣＰＵインタフェース回路ＣＰＵＩＦを介してバッファ回路ＢＵＦに転送する（Ｓ１０１）。ＢＵＦは、特に限定はされないが、例えばＳＲＡＭ（Static Random Access Memory）等で構成され、その容量値は、例えば１回のパケット転送に伴う各種データを格納するのに必要な大きさに定められる。
【００２２】
次いで、データリンクレイヤ処理回路ＤＬは、外部の相手先からＰＨＹ、ＭＡＣ、ＤＬを介して「ＵｐｄａｔｅＦＣ」を表すデータリンクレイヤパケット（ＤＬＬＰ）（図２（ｂ））を受けた際、当該ＤＬＬＰから相手先における受信バッファの空き容量を検出し、この空き容量をトランザクションレイヤ処理回路ＴＬに通知する（Ｓ１０２）。これを受けて、ＴＬは、必要な空き容量が有る場合、前述したＢＵＦ上の送信データおよび宛先データ等からトランザクションレイヤパケット（ＴＬＰ）を生成し、データリンクレイヤ処理回路ＤＬに伝送する（Ｓ１０３）。なお、この際に、ＴＬは、必要に応じてエラー検出符号（図２（ａ）のＥＣＲＣ）を付加する。
【００２３】
続いて、データリンクレイヤ処理回路ＤＬは、前述したＴＬからのＴＬＰを一時的に内部の再送バッファ回路（図示せず）に蓄える。そして、ＤＬは、当該ＴＬＰにシーケンス番号（図２（ａ）のＳＥＱ）やエラー検出符号（図２（ａ）のＬＣＲＣ）を付加してメディアアクセスレイヤ処理回路ＭＡＣに送信する（Ｓ１０４）。ＭＡＣは、スタートシンボルおよびエンドシンボル（図２（ａ）のＳＴＰ，ＥＤ）を付加することで前述したトランザクションパケット（ＴＬＰ’）を生成し、さらに、電磁波干渉（ＥＭＩ）を低減するためのスクランブリング等を行い、それを物理レイヤ処理回路ＰＨＹに送信する（Ｓ１０４ｂ）。ＰＨＹは、このＤＬおよびＭＡＣからの送信情報（パラレル信号）をシリアル信号に変換し、例えばクロックデータリカバリを行うための８Ｂ／１０Ｂ符号化等を行う。そして、ＰＨＹは、これを用いて伝送線路ＬＮに向けて送信動作（ＭＷｒ）を行う（Ｓ１０５）。
【００２４】
一方、図３（ｂ）に示すように、情報処理装置ＳＯＣが受信動作を行う際には、まず、ＰＨＹが、図３（ａ）の送信動作（ＭＷｒ）で送出されたＴＬＰ’を受け、図３（ａ）の場合とは逆に８Ｂ／１０Ｂ復号化、シリアル・パラレル変換等を行い、ＭＡＣおよびＤＬに伝送する（Ｓ１０６）。ＭＡＣおよびＤＬは、このＰＨＹからの受信情報におけるシーケンス番号ＳＥＱやエラー検出符号ＬＣＲＣを確認し、その結果問題が無ければＰＨＹを介してデータリンクレイヤパケット（ＤＬＬＰ）を用いて肯定応答（Ａｃｋ）を返信し、問題が有ればＤＬＬＰを用いて否定応答（Ｎａｋ）を返信する（Ｓ１０７）。更に、本実施の形態のＳＯＣでは、ＤＬおよびＴＬが、バッファ回路ＢＵＦの使用状態を認識し、例えばＢＵＦの使用期間中に前述したＰＨＹからの受信情報を受けた際にも、否定応答（Ｎａｋ）を返信することが特徴となっている。図３（ａ）に示した送信側のＤＬおよびＴＬは、「Ａｃｋ」を受信した際には前述した再送バッファ回路のＴＬＰを消去し、「Ｎａｋ」の受信をした際には再送バッファ回路のＴＬＰを用いて再送信を行う（Ｓ１０８）。
【００２５】
図３（ｂ）において、ここでは、Ｓ１０７で「Ａｃｋ」が返信されたものとして、ＤＬおよびＴＬは、前述したＰＨＹを介した受信情報からＴＬＰを抽出し、それをＴＬに伝送する（Ｓ１０９）。ＴＬは、このＭＡＣおよびＤＬからのＴＬＰをＣＰＵＩＦを介してバッファ回路ＢＵＦに格納し、当該ＴＬＰにおけるヘッダ（図２（ａ）のＨＤ）や場合によってはエラー検出符号（図２（ａ）のＥＣＲＣ）の確認を行う（Ｓ１１０）。その後、ＴＬは、ＣＰＵに対して通知を行い、これを受けて、ＣＰＵは、ＢＵＦ上の格納データをＣＰＵＩＦや内部バスＩＢＳを介してメモリ回路ＭＥＭに転送する（Ｓ１１２）。ＣＰＵは、このＭＥＭ上のデータを用いて所定の処理を行う。
【００２６】
ここで、本実施の形態１の情報処理装置ＳＯＣでは、図３（ｂ）に示す受信側のＴＬが、前述したＳ１０９でのＴＬＰの伝送を受けてから、実際にバッファ回路ＢＵＦに空き容量が生じるまでのいずれかのタイミングで、データリンクレイヤパケット（ＤＬＬＰ）を用いて「ＵｐｄａｔｅＦＣ」を送出する（Ｓ１１１）ことが特徴となっている。すなわち、図３（ｂ）において、実際にＢＵＦに空き容量が生じるのは前述したＳ１１２の処理によりＢＵＦからＭＥＭに向けた格納データの転送が完了した以降となるが、本実施の形態のＳＯＣでは、それよりも早いタイミングで「ＵｐｄａｔｅＦＣ」を返信する。言い換えれば、受信側のＴＬが、実際にはＢＵＦに空き容量が生じていないにも関わらず、空き容量が生じたものとして「ＵｐｄａｔｅＦＣ」を返信する。図３（ａ）の送信側におけるＴＬは、この「ＵｐｄａｔｅＦＣ」を受けて、前述したＳ１０３以降の処理によって次のパケットの送信を開始する。
【００２７】
《情報処理装置の全体動作タイミング》
図４（ａ）は、図３の動作例に伴うタイミングシーケンスの一例を示す模式図であり、図４（ｂ）は、図４（ａ）の比較例となるタイミングシーケンスの一例を示す模式図である。図４（ａ）、図４（ｂ）の例では、送信側のプロセッサＣＰＵが送信パケットの生成を開始してから受信側のバッファ回路ＢＵＦに当該パケットデータが格納されるまでの送信動作（ＭＷｒ）に要する期間を３程度としている。また、受信側のデータリンクレイヤ処理回路ＤＬ（およびメディアアクセスレイヤ処理回路ＭＡＣ）が「Ａｃｋ」を返信したのち、これを送信側が受け取るまでに要する期間と、受信側のトランザクションレイヤ処理回路ＴＬが「ＵｐｄａｔｅＦＣ」を返信したのち、これを送信側が受け取るまでに要する期間を、それぞれ２程度としている。更に、受信側のＣＰＵが、受信側のＢＵＦに格納されたパケットデータをメモリ回路ＭＥＭ上に全て取り出すまでに要する期間を４程度としている。
【００２８】
この場合、本実施の形態１の情報処理装置ＳＯＣを用いると、図４（ａ）に示すように、１回のパケット転送に要する実効的な期間を５程度とすることが可能となる。図４（ａ）では、送信側がｔ＝０の時刻から送信動作（ＭＷｒ１）を開始し、受信側のＢＵＦがこのＭＷｒ１に伴うパケットデータの格納動作を約ｔ＝３の時刻で完了する。このＭＷｒ１に際し、約ｔ＝２の時刻で受信側のＤＬ（およびＭＡＣ）が「Ａｃｋ１」を返信し、これに続けて受信側のＴＬが「ＵｐｄａｔｅＦＣ１」を返信している。この「Ａｃｋ１」および「ＵｐｄａｔｅＦＣ１」は、ｔ＝５の時刻よりも前に送信側によって受け取られ、これを受けて送信側は約ｔ＝５の時刻から次のパケットの送信動作（ＭＷｒ２）を開始する。
【００２９】
また、これと並行して、受信側のＣＰＵは、約ｔ＝３の時刻から送信動作（ＭＷｒ１）に伴うＢＵＦ上のパケットデータをＭＥＭ上に取り出し、この取り出し動作を約ｔ＝７の時刻で完了する。ここで、送信動作（ＭＷｒ２）に伴う送信パケットは、約ｔ＝７の時刻で受信側のＤＬ（およびＭＡＣ）に到達するが、この時刻では、受信側のＢＵＦは開放状態となっているため、受信側のＤＬ（およびＭＡＣ）は、このｔ＝７の時刻で「Ａｃｋ２」を返信する。また、受信側のＢＵＦは、このＭＷｒ２に伴うパケットデータの格納動作を約ｔ＝８の時刻で完了し、受信側のＣＰＵは、このｔ＝８の時刻からＭＷｒ２に伴うＢＵＦ上のパケットデータの取り出しを開始する。
【００３０】
このように、図４（ａ）では、受信側が「ＵｐｄａｔｅＦＣ」を返信したのち、これに応じた送信パケットを受信側が受信するまでに要するレイテンシ（この例では約５期間）を予め考慮し、このレイテンシの期間と並行して受信側のＣＰＵがＢＵＦ上のパケットデータを取り出せるように、「ＵｐｄａｔｅＦＣ」を本来よりも早めに送出している。すなわち、本実施の形態のＳＯＣは、ｔ＝２〜３の時刻（すなわちＴＬがＤＬからの送信パケットの伝送を認識した直後）を最も早いタイミングとし、約ｔ＝７の時刻（すなわち実際にＢＵＦが開放される直前）を最も遅いタイミングとして「ＵｐｄａｔｅＦＣ」を早出しするものである。図４（ａ）には、「ＵｐｄａｔｅＦＣ」を最も早いタイミングで返信した場合の例が示されている。この最早のタイミングを用いた場合でも、この例ではレイテンシの期間よりも１パケット当たりのＢＵＦの使用期間（ＣＰＵによる取り出し期間）が若干短いため、ＢＵＦの使用期間中に次ぎのパケットが送信されてくるような事態が生じず、ＢＵＦをほぼ連続的に使用可能となっている。ただし、仮にレイテンシの期間よりも１パケット当たりのＢＵＦの使用期間が長いような場合には、その分だけ「ＵｐｄａｔｅＦＣ」を返信するタイミングを遅らせることが望ましい。
【００３１】
一方、本発明の比較例として検討した情報処理装置では、図４（ｂ）に示すように、１回のパケット転送に要する実効的な期間が１０程度となる。当該装置では、図４（ａ）の場合と異なり、例えば、約ｔ＝７の時刻で実際に受信側のＢＵＦが開放されるのを確認した上で受信側のＴＬが「ＵｐｄａｔｅＦＣ１」を返信している。この場合、前述したレイテンシの期間において受信側のＢＵＦに待ち時間が生じることになる。その結果、この図４（ａ）、図４（ｂ）の例では、本実施の形態１の情報処理装置ＳＯＣを用いることで、比較例の情報処理装置に比べて２倍程度の高速化を図ることが可能となる。なお、図４（ａ）において、例えば、一時的にレイテンシが早まったり、あるいは一時的にＢＵＦの使用期間が延びる等によってＢＵＦの使用期間中に次のパケットが送信されてくることも予想される。この場合、図３（ｂ）で述べたように、受信側のＤＬがデータリンクレイヤパケット（ＤＬＬＰ）を用いて否定応答（Ｎａｋ）を返信することで、パケットの欠落を回避できる。この場合の動作例を次に説明する。
【００３２】
図５（ａ）は、図３の動作例に伴う他のタイミングシーケンスの一例を示す模式図であり、図５（ｂ）は、図５（ａ）の比較例となるタイミングシーケンスの一例を示す模式図である。図５（ａ）の動作例では、前述した図４（ａ）の動作例と異なり、受信側のＣＰＵがＢＵＦ上のパケットデータをＭＥＭ上に取り出すのに要する期間が５程度に延びている。これに伴い、約ｔ＝７の時刻において、受信側のデータリンクレイヤ処理回路ＤＬは、送信動作（ＭＷｒ２）に応じて「Ｎａｋ２」を返信している。送信側のＤＬは、約ｔ＝９の時刻において、この受信側からの「Ｎａｋ２」に応じて自身の再送バッファ回路を用いて再送信動作（ＭＷｒ２（再送））を行う。このＭＷｒ２に伴うデータは受信側のＢＵＦによって正常に格納される。
【００３３】
したがって、図５（ａ）に示すように、再送信が生じた場合には、１回のパケット転送に要する実効的な期間は８程度となる。一方、図５（ｂ）に示す動作例は、前述した図４（ｂ）の動作例と異なり、図５（ａ）の場合と同様に受信側のＣＰＵがＢＵＦ上のパケットデータをＭＥＭ上に取り出すのに要する期間が５程度に延びている。これに伴い、１回のパケット転送に要する実効的な期間は１１程度となる。その結果、この図５（ａ）、図５（ｂ）の例では、本実施の形態１の情報処理装置ＳＯＣを用いることで、仮に再送信が生じた場合でも、比較例の情報処理装置に比べて高速化を図ることが可能となる。ただし、再送信動作が生じると、それが生じない場合に比べると通信速度の低下が生じるため、「ＵｐｄａｔｅＦＣ」の早出しタイミングは、できるだけ再送信動作を生じさせない最も早いタイミングとすることが望ましい。
【００３４】
《情報処理装置の主要部の詳細構成および動作》
図６（ａ）は、図１の情報処理装置における主要部の詳細な構成例を示すブロック図であり、図６（ｂ）は、図６（ａ）の比較例を示すブロック図である。図６（ａ）には、図３（ｂ）に示した受信側の情報処理装置ＳＯＣにおけるトランザクションレイヤ処理回路ＴＬおよびデータリンクレイヤ処理回路ＤＬ周りの構成例が一部抽出して示されている。ここでは、前述した「ＵｐｄａｔｅＦＣ」の早出し（投機実行）を実現するため、ＴＬおよびＤＬに加えて、これに連動して動作する投機実行制御回路ＳＥＣＴＬが備わっていることが主要な特徴となっている。ＤＬは、ＣＲＣ判定回路ＣＲＣＪＧと、Ａｃｋ／Ｎａｋ生成回路ＡＮＧＥＮを備えている。ＴＬは、バッファライト制御回路ＷＴＣＴＬと、クレジット演算回路ＣＣＡＬと、ＵｐｄａｔｅＦＣ生成回路ＦＣＧＥＮを備えている。ＳＥＣＴＬは、受信可否判定回路ＲＸＪＧと、投機クレジット値決定回路ＣＲＳＥＴと、遅延回路ＤＬＹと、ＣＲＣ判定結果保持回路ＬＴ＿ＣＲＣＪＧと、Ａｃｋ／Ｎａｋ送信判定回路ＡＮＪＧを備えている。
【００３５】
図７は、図６（ａ）の構成例の概略的な動作例を示すものであり、図７（ａ）は再送が生じない場合のタイミングシーケンス図、図７（ｂ）は再送が生じる場合のタイミングシーケンス図である。図７（ａ）に示すように、受信時には、まず、図６（ａ）のＤＬに、受信パケットデータＲＸＤＡＴ、パケット開始信号ＳＴ、パケット終了信号ＥＮＤが入力される。ＳＴは、ＤＬよりも下位のレイヤ（図１のＰＨＹまたはＭＡＣ）が図２（ａ）のスタートシンボルＳＴＰを検出することで生成され、ＥＮＤは、同様に、下位のレイヤが図２（ａ）のエンドシンボルＥＤを検出することで生成される。また、ＲＸＤＡＴは、図２（ａ）におけるＳＴＰとＥＤに挟まれた各種パケットデータを下位のレイヤ（図１のＰＨＹ）がパラレル変換することで生成される。これによって、ＤＬには、時系列的に、ＳＴ→ＲＸＤＡＴ→ＥＮＤという順番で入力が行われる。
【００３６】
ＤＬ内のＣＲＣ判定回路ＣＲＣＪＧは、ＳＴもしくはＥＮＤを起点としたＲＸＤＡＴの受信サイクル数によってＲＸＤＡＴ内におけるエラー検出符号（図２（ａ）および図７（ａ）のＬＣＲＣ）の位置を認識する。ＣＲＣＪＧは、このエラー検出符号ＬＣＲＣによってエラーの有無を判定し、その判定結果を投機実行制御回路ＳＥＣＴＬのＣＲＣ判定結果保持回路ＬＴ＿ＣＲＣＪＧに出力し、ＬＴ＿ＣＲＣＪＧは、当該判定結果を保持する。なお、図６（ａ）では省略しているが、ＤＬは、同様にして、ＲＸＤＡＴ内におけるシーケンス番号（図２（ａ）のＳＥＱ）を識別し、そのエラー有無の判定等も行う。
【００３７】
一方、図６（ａ）に示すように、ＲＸＤＡＴ、ＳＴ、ＥＮＤは、ＤＬを介してＴＬにも入力される。ＴＬ内のクレジット演算回路ＣＣＡＬは、前述したＣＲＣＪＧの場合と同様にして、ＲＸＤＡＴ内のヘッダにおけるデータペイロード長（図２（ａ）および図７（ａ）のＤＡＴＬ）の認識ならびに取り込みを行う。また、ＣＣＡＬには、図１のＣＰＵインタフェース回路ＣＰＵＩＦからフルクリア信号ＦＬＣＬおよびクリアサイズ情報ＣＬ＿ＳＩＺＥが入力される。ＦＬＣＬは、前述したように、ＣＰＵによってＢＵＦ上のパケットデータがＭＥＭ上に取り出されることにより当該ＢＵＦ上のパケットデータが不要となった（ＢＵＦが開放された）際に出力される信号であり、ＣＬ＿ＳＩＺＥは、この際の開放されたサイズを表す。したがって、ＣＣＡＬは、データペイロード長ＤＡＴＬを取り込んだ際に減算を行い、ＦＬＣＬが入力された際にＣＬ＿ＳＩＺＥを加算することでＢＵＦにおける受信可能な空き容量を逐次把握している。ＦＬＳＥＴは、ＣＰＵＩＦに対し、バッファへのデータ格納完了を示す信号であり、これはつまり、受信パケットが正常であった事を意味する。ＦＬＳＥＴ信号のアサートを持って、ＣＣＡＬは受信クレジット値を決定する。
【００３８】
ここで、投機実行制御回路ＳＥＣＴＬ内の受信可否判定回路ＲＸＪＧは、受信クレジット演算回路ＣＣＡＬの演算結果を監視している。ＣＣＡＬにおいて、前述したようにデータペイロード長ＤＡＴＬの取り込みと減算が行われた際、その演算結果にオーバーフローが生じなかった場合、ＲＸＪＧは、オーバーフロー無しの情報をＴＬ内のＷＴＣＴＬ、ＳＥＣＴＬ内のＣＲＳＥＴおよびＡＮＪＧに通知する。すなわち、ＣＣＡＬでは、ＤＡＴＬを減算した際にＤＡＴＬがＢＵＦの空き容量以内の場合にはオーバーフローが生じない。これは、データを正常にＢＵＦに格納できることを意味する。
【００３９】
ＴＬ内のバッファライト制御回路ＷＴＣＴＬは、前述したＣＲＣＪＧの場合と同様にして、ＲＸＤＡＴ内においてＢＵＦに格納したいデータ（例えば、図２（ａ）のＨＤ，ＤＡＴ，ＥＣＲＣ等）が入力されるサイクルを認識し、図７（ａ）に示すように、当該サイクルでライトイネーブル信号ＷＴ＿ＥＮを有効状態にする。ＢＵＦは、このＷＴ＿ＥＮの有効状態を受けて、ＲＸＤＡＴ内の必要なデータを格納する。また、ＷＴＣＴＬは、ＥＮＤに応じてＣＰＵＩＦに向けてフルセット信号ＦＬＳＥＴを出力する。ここで、このＷＴ＿ＥＮならびにＦＬＳＥＴの制御に際し、ＷＴＣＴＬは、前述したＳＥＣＴＬ内の受信可否判定回路ＲＸＪＧからのオーバーフロー有無の情報を受け、これに応じて、ＷＴ＿ＥＮの有効／無効ならびにＦＬＳＥＴの出力有無を制御する。図７（ａ）の場合には、オーバーフロー無しであるため、ＷＴＣＴＬは、ＷＴ＿ＥＮの有効状態を維持し、また、ＦＬＳＥＴの出力を行う。
【００４０】
仮に、ＢＵＦへの書き込みが高速で行われるものとして、ＣＰＵは、このフルセット信号ＦＬＳＥＴをＣＰＵＩＦを介して割り込み信号として受けることでＢＵＦに必要なデータが格納されたことを認識し、当該データのＭＥＭへの取り出し動作を開始することができる。なお、図６（ａ）において、ＷＴＣＴＬは、更に、ＣＰＵＩＦに向けてライト済みサイズ情報ＷＴ＿ＳＩＺＥを出力している。ＷＴ＿ＳＩＺＥは、例えばこのＷＴ＿ＥＮを発行したサイクル数をカウントすること等で算出され、実際にＢＵＦに書き込みを行ったサイズを意味する。このＷＴ＿ＳＩＺＥは、例えば、パケット内のデータ欠け等を検出する際などで使用される。
【００４１】
ＳＥＣＴＬ内のＡｃｋ／Ｎａｋ送信判定回路ＡＮＪＧは、ＲＸＪＧからのオーバーフロー有無の情報と、ＬＴ＿ＣＲＣＪＧの保持情報とを受けて動作する。具体的には、オーバーフロー無しで、かつＬＴ＿ＣＲＣＪＧの保持情報に問題が無い（すなわちエラー検出符号ＬＣＲＣにエラーが無い）場合には「Ａｃｋ」判定とし、そうでない場合には「Ｎａｋ」判定とする。そして、その判定結果をＤＬ内のＡｃｋ／Ｎａｋ生成回路ＡＮＧＥＮに出力する。ＡＮＧＥＮは、この判定結果に応じて送信側に向けてデータリンクレイヤパケット（ＤＬＬＰ）を用いて肯定応答「Ａｃｋ」または否定応答「Ｎａｋ」を返信する。図７（ａ）の場合には、オーバーフロー無しであり、かつＬＴ＿ＣＲＣＪＧの保持情報にも問題が無いものとして、「Ａｃｋ」を返信している。
【００４２】
ＳＥＣＴＬ内の投機クレジット値決定回路ＣＲＳＥＴは、ＴＬ内のクレジット演算回路ＣＣＡＬが取り込んだデータペイロード長ＤＡＴＬと、ＲＸＪＧからのオーバーフロー有無の情報と、ＷＴＣＴＬからのフルセット信号ＦＬＳＥＴを受けて動作する。具体的には、ＣＲＳＥＴは、オーバーフロー無しの場合、ＦＬＳＥＴをトリガとしてＤＡＴＬを遅延回路ＤＬＹに出力し、ＤＬＹはこのＤＡＴＬを所定の時間遅延させたのちＴＬ内のＵｐｄａｔｅＦＣ生成回路ＦＣＧＥＮに出力する。ＦＣＧＥＮは、これに応じて、データリンクレイヤパケット（ＤＬＬＰ）を用いてこのＤＡＴＬを空き容量とする「ＵｐｄａｔｅＦＣ」を生成し、送信側に返信する。図７（ａ）の例では、このＤＬＹの遅延時間がゼロである場合（すなわち「ＵｐｄａｔｅＦＣ」の送出タイミングを早く設定した場合）を示しているが、前述したように、このＤＬＹの遅延時間を適宜設定することで、再送信動作が生じないように「ＵｐｄａｔｅＦＣ」の送出タイミングを遅らせることも可能である。
【００４３】
一方、図７（ｂ）においては、前述した図７（ａ）の場合と異なり、ＴＬ内のクレジット演算回路ＣＣＡＬでオーバーフローが生じている。オーバーフロー有りの場合とは、データペイロード長ＤＡＴＬがＢＵＦの空き容量よりも大きく、データを正常にＢＵＦに格納できないことを意味する。この場合、ＳＥＣＴＬ内の受信可否判定回路ＲＸＪＧがＴＬ内のバッファライト制御回路ＷＴＣＴＬにオーバーフロー有りの情報を通知することで、ＷＴＣＴＬは、ライトイネーブル信号ＷＴ＿ＥＮを有効状態から無効状態に遷移させ、また、フルセット信号ＦＬＳＥＴの出力を行わないように制御する。これを受けて、ＢＵＦへの書き込み動作が中断され、ＢＵＦ上のデータの喪失が防止できる。なお、実際には、図７（ｂ）から判るように、ＷＴ＿ＥＮが有効状態の間にヘッダ部分の一部がＢＵＦへ書き込まれることになるが、通常、この部分の上書きは特に問題とならない。ただし、この部分の上書きが問題となる場合には、ＲＸＤＡＴが実際にＢＵＦに書き込まれるまでのレイテンシを適宜調整すればよい。なお、ＣＣＡＬは、ＤＡＴＬの減算によってオーバーフローが生じた場合には、その後、当該ＤＡＴＬの減算を取り消すことによって、ＢＵＦの空き容量の情報を正しい情報に戻す。
【００４４】
ＳＥＣＴＬ内のＡｃｋ／Ｎａｋ送信判定回路ＡＮＪＧは、ＲＸＪＧからのオーバーフロー有りの情報を受けて「Ｎａｋ」判定を行い、その判定結果をＤＬ内のＡｃｋ／Ｎａｋ生成回路ＡＮＧＥＮに出力する。ＡＮＧＥＮは、この判定結果に応じて送信側に向けてデータリンクレイヤパケット（ＤＬＬＰ）を用いて否定応答「Ｎａｋ」を返信する。前述したように、送信側は、この「Ｎａｋ」の返信に応じて送信パケットの再送信を行うことになる。また、ＳＥＣＴＬ内の投機クレジット値決定回路ＣＲＳＥＴは、ＲＸＪＧからオーバーフロー有りの情報を受けると共に、フルセット信号ＦＬＳＥＴの入力が行われないため、ＤＬＹを介したＴＬ内のＵｐｄａｔｅＦＣ生成回路ＦＣＧＥＮに向けた出力動作を特に行わない。その結果、ＦＣＧＥＮは、「ＵｐｄａｔｅＦＣ」の生成を行わない。
【００４５】
以上のように、図６（ａ）の構成例ならびに図７（ａ）、図７（ｂ）の動作例を用いることで、これまでに説明した「ＵｐｄａｔｅＦＣ」の早出し動作（投機実行）を実現可能となる。この際に、図６（ａ）の構成例は、比較例となる図６（ｂ）の構成例に対して投機実行制御回路ＳＥＣＴＬを追加し、また接続関係の一部を変更すればよいため、実現が比較的容易であり、また面積オーバヘッドもさほど問題とならない。図６（ｂ）の構成例は、前述した図４（ｂ）等の動作に対応するものであり、図６（ａ）の構成例と比較すると、ＳＥＣＴＬが存在せず、また、ＣＣＡＬの出力がＦＣＧＥＮに、ＣＲＣＪＧの出力がＡＮＧＥＮにそれぞれ入力されると共に、ＦＣＧＥＮがフルクリア信号ＦＬＣＬを受けて動作するものとなっている。特に大きな相違点は、ＦＣＧＥＮが、ＣＰＵによってＢＵＦが開放された際に出力されるＦＬＣＬを受けて「ＵｐｄａｔｅＦＣ」を出力する点にあり、この場合だと図６（ａ）の構成例と比較して通信速度の低下が生じ得る。
【００４６】
《情報処理システムの全体構成》
図８は、本発明の実施の形態１による情報処理システムにおいて、その構成の一例を示す概略図である。図８の情報処理システムは、１個のＰＣＩｅルートポートＲＴと、複数（ここでは３個）のＰＣＩｅスイッチＳＷ０〜ＳＷ２と、複数（ここでは８個）のＰＣＩｅエンドポイントＥＰ０〜ＥＰ７を備え、これらがＲＴを頂点としてＰＣＩｅ用の伝送線路によりツリー状に接続された構成となっている。この例では、ＲＴにＳＷ０、ＥＰ４、ＳＷ２が接続され、ＳＷ０にＥＰ０、ＳＷ１、ＥＰ３が接続され、ＳＷ１にＥＰ１、ＥＰ２が接続され、ＳＷ２にＥＰ５〜ＥＰ７が接続される。ＲＴ、ＳＷ０〜ＳＷ２、およびＥＰ０〜ＥＰ７のそれぞれは、少なくとも図１に示したＰＣＩｅインタフェース回路ＰＣＩｅＩＦを備えており、これによってＰＣＩｅ規格に基づく相互間の通信が可能となっている。
【００４７】
当該情報処理システムは、特に限定はされないが、代表的には、プリント配線基板と、複数のカードデバイス等の実装形態を持つ。プリント配線基板上には、ＰＣＩｅルートポートに対応するデバイスやＰＣＩｅスイッチに対応するデバイスの全て又は一部や、ＰＣＩｅスイッチに接続される複数のカードコネクタ等が実装される。そして、当該カードコネクタにＰＣＩｅエンドポイントや、場合によってはＰＣＩｅスイッチ機能を持つカードデバイスが外部接続される。
【００４８】
ＰＣＩｅルートポートＲＴは、ルートコンプレックス等とも呼ばれ、例えば、図８の情報処理システム全体の初期化や帯域制限（ＱｏＳ）等を行う。ＰＣＩｅエンドポイントＥＰ０〜ＥＰ７は、ツリーの末端に位置し、それぞれ所定のアプリケーションを実現する。ＰＣＩｅスイッチＳＷ０〜ＳＷ２は、それぞれ複数のポートを備えると共に当該ポート間でルーティングを行う。すなわち、あるポートから入力されたパケットのヘッダ（図２（ａ）のＨＤ（ＲＵＴ））を参照し、その内容に応じて当該パケットを特定のポートに転送する。なお、本実施の形態による情報処理システムは、勿論、図８に構成例に限らず、ＰＣＩｅ規格に基づいてＰＣＩｅルートポート、ＰＣＩｅスイッチ、ＰＣＩｅエンドポイントを適宜組み合わせた構成であればよい。また、加えて、ＰＣＩｅと従来のＰＣＩやＰＣＩ−Ｘ等をプロトコル変換する所謂ＰＣＩｅブリッジを含んでいてもよい。
【００４９】
《情報処理システムの全体動作》
図９は、図８の情報処理システムの動作例を示す説明図である。ここでは、ＰＣＩｅエンドポイントＥＰ１がＰＣＩｅエンドポイントＥＰ７を受信先として送信パケットを出力する場合を例としている。この場合、まず、ＥＰ１がＳＷ１に向けて送信動作（［１］ＭＷｒ）を行い、ＳＷ１が肯定応答（［２］「Ａｃｋ」）を返信し、これに続けて「ＵｐｄａｔｅＦＣ」（［３］ＵｐｄａｔｅＦＣ）を早出しで返信する。次いで、ＳＷ１は、送信動作（［１］ＭＷｒ）に伴うパケットのヘッダを参照することでルーティングを行い、その結果、ＳＷ０に向けて送信動作（［４］ＭＷｒ）を行う。これを受けて、ＳＷ０は、肯定応答（［５］「Ａｃｋ」）を返信し、これに続けて「ＵｐｄａｔｅＦＣ」（［６］ＵｐｄａｔｅＦＣ）を早出しで返信する。以降、同様にして、ＳＷ０からＲＴに向けた転送と、ＲＴからＳＷ２に向けた転送が順次行われ、最後に、ＳＷ２がＥＰ７に向けて送信動作（［１３］ＭＷｒ）を行い、ＥＰ７が肯定応答（［１４］「Ａｃｋ」）を返信し、これに続けて「ＵｐｄａｔｅＦＣ」（［１５］ＵｐｄａｔｅＦＣ）を早出しで返信する。これによって、ＥＰ１からＥＰ７に向けた１回のパケット転送が完了する。
【００５０】
ただし、例えば、ＥＰ１が従来のＰＣＩシステムやＰＣＩ−Ｘシステムのソフトウェアを使用しているような場合には、通常、１回のパケット転送では終わらずに、ＥＰ７に向けて例えば数バイト単位で連続して複数回の転送が行われることになる。この場合、各装置間（ＥＰ１とＳＷ１間、ＳＷ１とＳＷ０間、…、ＳＷ２とＥＰ７間）で前述した図４（ａ）、図４（ｂ）に示した転送が行われるものとすると、本実施の形態の情報処理装置ＳＯＣを用いることで、比較例を用いた場合と比べてＥＰ１からＥＰ７に向けた通信に要する時間を半分程度にすることが可能となる。なお、図９の例では、ＥＰ１からＥＰ７に到るまでに４個の装置を中継しているが、この中継する装置数は、情報処理システムの構成に応じて変わり、その数が多くなるほど通信に要する時間が長くなる。したがって、この中継する装置数が多くなるほど（すなわちツリー構造がより深くなるほど）、本実施の形態を用いて通信時間の短縮を図ることがより有益となる。
【００５１】
以上、本実施の形態１の情報処理装置または情報処理システムを用いることで、代表的には通信速度の高速化が実現可能となる。また、見方を変えると、バッファ回路ＢＵＦの容量が小さい場合でも、見かけ上、バッファ回路の容量が大きい場合と同等の通信速度を得ることができ、これによって回路面積の低減や製造コストの低減等が図れる。すなわち、通信速度の高速化を図る手法として、バッファ回路の容量を増やすことが考えられる。具体的には、１回のパケット転送に伴う各種データを格納するのに必要な容量を１面とすると、バッファ回路を２面以上設け、各面をそれぞれ並行して使用するような手法が考えられる。本発明者等の検討によれば、例えば、バッファ回路を１面設けると共に前述した「ＵｐｄａｔｅＦＣ」の早出し機能を持たせた場合と、バッファ回路を２面設けると共に「ＵｐｄａｔｅＦＣ」の早出し機能を持たせない場合とで、ほぼ同等の通信速度が得られるという結果が得られた。
【００５２】
なお、本実施の形態では、受信側が送信パケットを受信する毎に「ＵｐｄａｔｅＦＣ」を返信する構成例としたが、例えばＰＣＩｅ規格では「ＵｐｄａｔｅＦＣ」を返信する最長間隔は３０μｓ以下と規定されている。通常、受信側が送信パケットを受信する間隔は、この値よりも十分に小さい値となるため、動作期間中に関しては規格をほぼ満たすことが可能となる。さらに規格を確実に満たすためには、タイマ回路等に基づく「ＵｐｄａｔｅＦＣ」の返信機能を別途設けることが望ましい。すなわち、当該機能を用いると、例えば、「ＵｐｄａｔｅＦＣ」を発行した時点からタイマ回路を動作させ、タイマ回路によって所定の期間を経過した場合には、「ＵｐｄａｔｅＦＣ」を自動的に発行される。
【００５３】
（実施の形態２）
《情報処理装置の全体構成および動作》
前述した実施の形態１では、１面のバッファ回路を持つ情報処理装置の構成例を示したが、本実施の形態２では、２面のバッファ回路を持つ情報処理装置の構成例について説明する。１面とは、前述したように、１回のパケット転送に伴う各種データを格納するのに必要な容量を意味する。図１０は、本発明の実施の形態２による情報処理装置において、その構成の一例を示すブロック図である。図１０に示す情報処理装置ＳＯＣ２は、図１の情報処理装置ＳＯＣと比較して、ＰＣＩｅインタフェース回路ＰＣＩｅＩＦ２内のＣＰＵインタフェース回路ＣＰＵＩＦに２個（２面）のバッファ回路ＢＵＦ１，ＢＵＦ２が接続されている点が異なっている。それ以外の構成に関しては、図１と同様であるため詳細な説明は省略する。
【００５４】
図１１は、図１０の情報処理装置の主要な動作例を示す説明図であり、図１１（ａ）は送信時の動作例、図１１（ｂ）は受信時の動作例を示すものである。ここでは、前述した図３（ａ）、図３（ｂ）の場合と同様に、情報処理装置ＳＯＣ２がエンドポイント（前述した図８のＥＰ）である場合を例として、主に図３（ａ）、図３（ｂ）との相違的に着目して説明を行う。図１１（ａ）に示すように、ＳＯＣ２が送信動作を行う際には、まず、プロセッサ回路ＣＰＵが、メモリ回路ＭＥＭ上に送信データやその宛先データ等を作成し、これらのデータを内部バスＩＢＳやＣＰＵインタフェース回路ＣＰＵＩＦを介してバッファ回路ＢＵＦ１，ＢＵＦ２に転送する（Ｓ２０１）。この際には、２面のバッファ回路を備えているため、図３（ａ）の場合と異なり、２回分のパケット転送に伴うデータを格納可能となっている。
【００５５】
次いで、データリンクレイヤ処理回路ＤＬは、図３（ａ）の場合と同様に、外部の相手先から「ＵｐｄａｔｅＦＣ」を表すデータリンクレイヤパケット（ＤＬＬＰ）を受けた際、当該ＤＬＬＰから相手先における受信バッファの空き容量を検出し、この空き容量をトランザクションレイヤ処理回路ＴＬに通知する（Ｓ２０２）。ここでは、相手先においてバッファ回路に２面分の空き容量があるものとする。この場合、ＴＬは、まず、図３（ａ）の場合と同様に、前述したＢＵＦ１上の送信データおよび宛先データ等を用いてトランザクションレイヤパケット（ＴＬＰ）を生成し、これをＤＬ、ＭＡＣ、ＰＨＹを介してトランザクションパケット（ＴＬＰ’）に変換した上で伝送線路ＬＮに向けて送信動作（ＭＷｒ１）を行う（Ｓ２０３ａ，Ｓ２０３，Ｓ２０４，Ｓ２０４ｂ，Ｓ２０５）。その後連続して、ＴＬは、前述したＢＵＦ２上の送信データおよび宛先データ等をＴＬＰを生成し、これをＤＬ、ＭＡＣ、ＰＨＹを介してＴＬＰ’に変換した上でＬＮに向けて送信動作（ＭＷｒ２）を行う（Ｓ２０３ｂ，Ｓ２０３，Ｓ２０４，Ｓ２０４ｂ，Ｓ２０５）。前述したように、これらの送信動作の際に、ＤＬは、内部の再送バッファ回路に一時的にデータを保持するが、この再送バッファ回路の容量値は、２回分の送信動作を行うのに必要な大きさに設定される。
【００５６】
一方、図１１（ｂ）に示すように、情報処理装置ＳＯＣ２が受信動作を行う際には、図３（ｂ）の場合と同様に、ＤＬが、図１１（ａ）の送信動作（ＭＷｒ１）に伴うＴＬＰ’をＰＨＹおよびＭＡＣを介して受け、エラー検出等を行う（Ｓ２０６）。ここで問題が無ければ、ＤＬは、データリンクレイヤパケット（ＤＬＬＰ）を用いて肯定応答（Ａｃｋ１）を返信し、問題が有ればＤＬＬＰを用いて否定応答（Ｎａｋ１）を返信する（Ｓ２０７）。更に、本実施の形態のＳＯＣ２では、ＴＬおよびＤＬが、バッファ回路ＢＵＦ１，ＢＵＦ２の使用状態を認識し、例えばＢＵＦ１，ＢＵＦ２の両方が使用されている間に次のパケットが送信されてきた場合にも、否定応答（Ｎａｋ１）を返信する。ここでは、ＤＬが「Ａｃｋ１」を返信したものとして、ＤＬは、ＭＷｒ１に伴うＴＬＰをＴＬに伝送し、ＴＬは、当該ＴＬＰをＢＵＦ１に蓄えると共に、場合によってはエラー検出等の処理を行う（Ｓ２０９，Ｓ２１０ａ）。ＴＬは、このＢＵＦ１へのＴＬＰの格納が完了した際にはＣＰＵに対して通知を行う。これを受けて、ＣＰＵは、ＢＵＦ１上の格納データをＣＰＵＩＦや内部バスＩＢＳを介してメモリ回路ＭＥＭに転送する（Ｓ２１２）。ＣＰＵは、このＭＥＭ上のデータを用いて所定の処理を行う。
【００５７】
また、これに続いて、あるいはこれと並行して、ＤＬは、図１１（ａ）の送信動作（ＭＷｒ２）に伴うトランザクションパケット（ＴＬＰ’）をＰＨＹおよびＭＡＣを介して受け、ＭＷｒ１の場合と同様にエラー状況及びバッファ回路の空き容量に応じて肯定応答（Ａｃｋ２）又は否定応答（Ｎａｋ２）を返信する（Ｓ２０６，Ｓ２０７）。ここでは、ＤＬが「Ａｃｋ２」を返信したものとして、ＤＬは、ＭＷｒ２に伴うＴＬＰをＴＬに伝送し、ＴＬは、当該ＴＬＰをＢＵＦ２に蓄えると共に場合によってはエラー検出等の処理を行う（Ｓ２０９，Ｓ２１０ｂ）。ＴＬは、このＢＵＦ２へのＴＬＰの格納が完了した際にはＣＰＵに対して通知を行い、これを受けて、ＣＰＵは、ＢＵＦ２上の格納データをＣＰＵＩＦやＩＢＳを介してＭＥＭに転送する。ここでは、ＢＵＦ２からＭＥＭへの転送処理は、前述したＢＵＦ１からＭＥＭへの転送処理が終えた後に行われる。
【００５８】
ここで、本実施の形態２の情報処理装置ＳＯＣ２では、実施の形態１の場合と同様に、図１１（ｂ）に示す受信側のＴＬが、前述したＳ２０９でのＭＷｒ１に伴うＴＬＰの伝送を受けてから、実際にＢＵＦ１に空き容量が生じるまでのいずれかのタイミングで、「ＵｐｄａｔｅＦＣ１」を送出する（Ｓ２１１）ことが特徴となっている。また、図１１（ｂ）に示す受信側のＴＬが、前述したＳ２０９でのＭＷｒ２に伴うＴＬＰの伝送を受けてから、実際にＢＵＦ２に空き容量が生じるまでのいずれかのタイミングで、「ＵｐｄａｔｅＦＣ２」を送出する（Ｓ２１１）ことが特徴となっている。図１１（ａ）の送信側におけるＴＬは、「ＵｐｄａｔｅＦＣ１」を受けて、前述したＳ２０３ａ以降の処理によって次のパケットの送信を開始し、「ＵｐｄａｔｅＦＣ２」を受けて、前述したＳ２０３ｂ以降の処理によって次のパケットの送信を開始する。
【００５９】
なお、受信側のＤＬおよびＴＬ周りは、例えば、前述した図６（ａ）とほぼ同様の構成例を用いることで実現可能である。ただし、ここでは、２面のバッファ回路ＢＵＦ１，ＢＵＦ２を備えているため、例えば、前述したクレジット演算回路ＣＣＡＬがＢＵＦ１用のクレジット演算とＢＵＦ２用のクレジット演算を独立に行い、前述したバッファライト制御回路ＷＴＣＴＬもＢＵＦ１用のライト制御とＢＵＦ２用のライト制御を独立に行う。また、前述した受信可否判定回路ＲＸＪＧは、ＣＣＡＬにおけるＢＵＦ１用のクレジット演算結果に応じて投機クレジット値決定回路ＣＲＳＥＴ、Ａｃｋ／Ｎａｋ送信判定回路ＡＮＪＧ、ならびにＷＴＣＴＬ内のＢＵＦ１用のライト制御部に制御信号を出力する。更に、同様にして、ＲＸＪＧは、ＣＣＡＬにおけるＢＵＦ２用のクレジット演算結果に応じてＣＲＳＥＴ、ＡＮＪＧ、ならびにＷＴＣＴＬ内のＢＵＦ２用のライト制御部に制御信号を出力する。
【００６０】
《情報処理装置の全体動作タイミング》
図１２は、図１１の動作例に伴うタイミングシーケンスの一例を示す模式図である。図１３は、図１２の比較例となるタイミングシーケンスの一例を示す模式図である。図１２および図１３の例では、前述した図４（ａ）、図４（ｂ）の場合と同様に、送信側のプロセッサＣＰＵが送信パケットの生成を開始してから受信側のバッファ回路ＢＵＦ１（又はＢＵＦ２）に当該パケットデータが格納されるまでの送信動作（ＭＷｒ）に要する期間を３程度としている。また、受信側のデータリンクレイヤ処理回路ＤＬ（およびメディアアクセスレイヤ処理回路ＭＡＣ）が「Ａｃｋ」を返信したのち、これを送信側が受け取るまでに要する期間と、受信側のトランザクションレイヤ処理回路ＴＬが「ＵｐｄａｔｅＦＣ」を返信したのち、これを送信側が受け取るまでに要する期間を、それぞれ２程度としている。更に、受信側のＣＰＵが、受信側のＢＵＦ１（又はＢＵＦ２）に格納されたパケットデータをメモリ回路ＭＥＭ上に全て取り出すまでに要する期間を４程度としている。
【００６１】
この場合、本実施の形態２の情報処理装置ＳＯＣ２を用いると、図１２に示すように、４回のパケット転送に要する実効的な期間を１６程度（１回当たりに４程度）とすることが可能となる。図１２では、送信側がｔ＝０の時刻から１番目の送信動作（ＭＷｒ１）を開始し、受信側のＢＵＦ１がこのＭＷｒ１に伴うパケットデータの格納動作を約ｔ＝３の時刻で完了する。このＭＷｒ１に際し、受信側のＤＬ（およびＭＡＣ）は約ｔ＝２の時刻で「Ａｃｋ１」を返信する。また、送信側は、ＭＷｒ１に続いて、ｔ＝１の時刻から２番目の送信動作（ＭＷｒ２）を開始し、受信側のＢＵＦ２がこのＭＷｒ２に伴うパケットデータの格納動作を約ｔ＝４の時刻で完了する。このＭＷｒ２に際し、受信側のＤＬ（およびＭＡＣ）は約ｔ＝３の時刻で「Ａｃｋ２」を返信する。
【００６２】
ここで、図１２の例では、前述した図４（ａ）の場合と異なり、「ＵｐｄａｔｅＦＣ」の早出しタイミングを遅らせた場合を示している。このタイミング調整は、例えば、前述した図６（ａ）の遅延回路ＤＬＹで行うことができる。ここでは、受信側のＴＬは、約ｔ＝５の時刻でＢＵＦ１が開放されたことを示す「ＵｐｄａｔｅＦＣ１」を返信し、約ｔ＝６の時刻でＢＵＦ２が開放されたことを示す「ＵｐｄａｔｅＦＣ２」を返信する。ただし、この各時刻において実際にはＢＵＦ１，ＢＵＦ２共に開放されておらず、ＢＵＦ１は約ｔ＝３の時刻から使用されると共に約ｔ＝７の時刻で開放され、ＢＵＦ２は約ｔ＝４の時刻から使用されると共に約ｔ＝１１の時刻で開放される。ＢＵＦ２がＢＵＦ１に比べて使用期間が長いのは、ここでは、ＣＰＵがＢＵＦ１の格納データを４期間でＭＥＭ上に取り出した後にＢＵＦ２の格納データを４期間でＭＥＭ上に取り出すこととしているためである。
【００６３】
受信側からの「ＵｐｄａｔｅＦＣ１」は、約ｔ＝８の時刻に送信側に到達し、これに応じて送信側は、ｔ＝８の時刻から３番目の送信動作（ＭＷｒ３）を開始する。このＭＷｒ３に伴うパケットデータは、約ｔ＝１０の時刻で受信側のＤＬ（およびＭＡＣ）に到達し、この時刻ではＢＵＦ１が開放されているため、受信側のＤＬ（およびＭＡＣ）は、約ｔ＝１０の時刻で「Ａｃｋ３」を返信する。受信側からの「ＵｐｄａｔｅＦＣ２」は、約ｔ＝９の時刻に送信側に到達し、これに応じて送信側は、ｔ＝９の時刻から４番目の送信動作（ＭＷｒ４）を開始する。このＭＷｒ４に伴うパケットデータは、約ｔ＝１１の時刻で受信側のＤＬ（およびＭＡＣ）に到達し、この時刻ではＢＵＦ２が開放されているため、受信側のＤＬ（およびＭＡＣ）は、約ｔ＝１１の時刻で「Ａｃｋ４」を返信する。また、ＭＷｒ３に応じた「ＵｐｄａｔｅＦＣ３」は、約ｔ＝１３の時刻で受信側のＴＬによって返信され、約ｔ＝１６の時刻で送信側に到達し、これを受けて送信側は次の送信動作を開始することになる。
【００６４】
一方、本発明の比較例として検討した情報処理装置では、図１３に示すように、４回のパケット転送に要する実効的な期間が２０程度（１回当たりに５程度）となる。当該装置では、図１２の場合と異なり、受信側のＴＬが、例えば、約ｔ＝７の時刻で実際に受信側のＢＵＦ１が開放されるのを確認した上で「ＵｐｄａｔｅＦＣ１」を返信し、約ｔ＝１１の時刻で実際に受信側のＢＵＦ２が開放されるのを確認した上で「ＵｐｄａｔｅＦＣ２」を返信している。この場合、実施の形態１の場合と同様の理由で、受信側のＢＵＦ１，ＢＵＦ２が両方とも待ち状態となっている期間が生じることになる。その結果、この図１２および図１３の例では、本実施の形態２の情報処理装置ＳＯＣ２を用いることで、比較例の情報処理装置に比べて１．２５倍程度の高速化を図ることが可能となる。
【００６５】
ただし、図１２および図１３と前述した図４（ａ）、図４（ｂ）との比較から判るように、バッファ回路の面数を増加させるほど、「ＵｐｄａｔｅＦＣ」の早出しによる通信速度の向上効果は小さくなり得る。これは、バッファ回路の面数を増加させるほど、全てのバッファ回路が待ち状態となる期間が減少するためである。本発明者等の検討によれば、勿論条件にもよるが、特にバッファ回路が２面以内の場合において「ＵｐｄａｔｅＦＣ」の早出し効果が顕著であるという結果が得られた。また、実施の形態１でも述べたように、通信速度の高速化を実現する手法として、バッファ回路の面数を増加させる手法があるが、見方を変えると、「ＵｐｄａｔｅＦＣ」の早出しを行うことでバッファ回路の面数を増加させずに高速化が図れ、回路面積の低減や製造コストの低減等が図れる。例えば、図１３および図４（ａ）の例では、１面のバッファ回路を備えると共に「ＵｐｄａｔｅＦＣ」の早出しを行う場合と、２面のバッファ回路を備えると共に「ＵｐｄａｔｅＦＣ」の早出しを行わない構成例とで同等の通信速度が得られている。
【００６６】
図１４は、図１１の動作例に伴う他のタイミングシーケンスの一例を示す模式図である。図１４の動作例では、前述した図１２の動作例と異なり、受信側のＣＰＵがＢＵＦ１（又はＢＵＦ２）上のパケットデータをＭＥＭ上に取り出すのに要する期間が５程度に延びている。また、前述した図１２の動作例と異なり、受信側のＴＬが「ＵｐｄａｔｅＦＣ」を最も早いタイミングで送出している。この場合、図１４に示すように、頻繁に再送信動作が生じることになる。
【００６７】
例えば、定常的な動作となるｔ＝１３以降の時刻に着目すると、送信側がｔ＝１３の時刻から送信動作（ＭＷｒ５）を行い、これに伴うパケットデータが約ｔ＝１５の時刻で受信側のＤＬに到達する。ただし、この時点ではＢＵＦ１，ＢＵＦ２共に使用中であるため、受信側のＤＬは「Ｎａｋ５」を出力する。これを受けて、送信側のＤＬは再送信動作（ＭＷｒ５（再送））を行い、これに伴うパケットデータが約ｔ＝１８の時刻で受信側のＤＬに到達する。この時点では、ＢＵＦ１が開放状態となっているため、受信側のＤＬは「Ａｃｋ５」を出力し、続けて受信側のＴＬが「ＵｐｄａｔｅＦＣ５」を出力する。一方、送信側はｔ＝１７の時刻から次のパケット転送に伴う送信動作（ＭＷｒ６）を行い、これに伴うパケットデータが約ｔ＝１９の時刻で受信側のＤＬに到達する。ただし、この時点ではＢＵＦ１，ＢＵＦ２共に使用中であるため、受信側のＤＬは「Ｎａｋ６」を出力する。これを受けて、送信側のＤＬは再送信動作（ＭＷｒ６（再送））を行い、これに伴うパケットデータが約ｔ＝２２の時刻で受信側のＤＬに到達する。この時点では、ＢＵＦ２が開放状態となっているため、受信側のＤＬは「Ａｃｋ６」を出力し、続けて受信側のＴＬが「ＵｐｄａｔｅＦＣ６」を出力する。
【００６８】
以降同様にして、「ＵｐｄａｔｅＦＣ５」に応じた送信動作（ＭＷｒ７）に伴うパケットデータは、再送信動作（ＭＷｒ７（再送））を１回経たのちＢＵＦ１に格納され、「ＵｐｄａｔｅＦＣ６」に応じた送信動作（ＭＷｒ８）に伴うパケットデータも、再送信動作（ＭＷｒ８（再送））を１回経たのちＢＵＦ２に格納される。そして、このような処理が繰り返される結果、図１４に示すように、４回のパケット転送（例えば送信動作（ＭＷｒ５の開始から送信動作（ＭＷｒ９）の開始まで）に伴う実効的な期間は１６程度となる。すなわち、前述した図１２の場合と比較すると、若干条件は異なるが、理想的には仮に再送信動作が生じるような場合でも、殆ど通信速度の低下は生じない。ただし、実際には、再送信動作に伴い送信側ならびに受信側共に余分な処理量が増大し、また、伝送線路ＬＮ上のトラフィック量も過密となるため、これに伴い通信速度の低下が生じる恐れがある。したがって、再送信動作を回避できるように「ＵｐｄａｔｅＦＣ５」の送出タイミングを定めることが望ましい。
【００６９】
以上、本実施の形態２の情報処理装置を用いることで、実施の形態１の場合と比較して、代表的には、バッファ回路等に伴い回路面積が増大するものの、更なる通信速度の高速化が実現可能となる。
【００７０】
（実施の形態３）
本実施の形態３では、前述した実施の形態１、２の情報処理装置において、再送信動作を回避するための方式について説明する。まず、再送信動作が生じる条件について簡単に説明すると次のようになる。図１５は、本発明の実施の形態３の情報処理装置において、再送信動作が生じる条件を簡略化して表すものであり、図１５（ａ）はバッファ回路が１面の場合の説明図、図１５（ｂ）はバッファ回路が２面の場合の説明図である。図１５（ａ）において、時間Ｔｐは、送信側（例えばプロセッサ回路）が送信動作を開始し、それに伴うパケットデータが受信側（例えばバッファ回路）に到達するまでに要する時間である。時間Ｔｕは、受信側（具体的にはトランザクションレイヤ処理回路ＴＬ）が「ＵｐｄａｔｅＦＣ」を返信し、それが送信側に到達するまでに要する時間である。時間Ｔｒは、受信側のプロセッサ回路等がバッファ回路に格納されたパケットデータを完全に取り出すのに要する時間である。
【００７１】
この場合、再送信動作が生じる条件は、（Ｔｐ＋Ｔｒ）＞（２×Ｔｕ＋Ｔｐ）の場合であり、これを整理してＴｒ＞（２×Ｔｕ）の場合である。（Ｔｐ＋Ｔｒ）は、「送信側が送信動作を開始し、そのパケットデータが受信側のプロセッサ回路等で取り出されるのに要する時間」を意味する。（２×Ｔｕ＋Ｔｐ）は、「送信側が送信動作を開始し、これに応じて受信側が「ＵｐｄａｔｅＦＣ」を返信し、これに応じて送信側が次の送信動作を行うと共にそのパケットデータが受信側に到達するのに要する時間」を意味する。したがって、仮にＴｒ＞（２×Ｔｕ）の場合であっても、例えば、前述した図６（ａ）の遅延回路ＤＬＹを用いてＴｄ＝Ｔｒ−（２×Ｔｕ）の遅延時間を挿入することで原理的には再送信動作を回避することが可能となる。
【００７２】
一方、図１５（ｂ）において、時間Ｔｐ，Ｔｕ，Ｔｒは、図１５（ａ）の場合と同様であり、時間Ｔｓは、２面のバッファ回路（ＢＵＦ１，ＢＵＦ２とする）に伴い連続して送信動作を行う際の、その送信間隔である。このＴｓは、例えば、送信動作に伴うパケットデータのサイズに比例して長くなる。図１５（ｂ）において、まず、ＢＵＦ１において再送信動作が生じる条件は、図１５（ａ）の場合と同様であり、Ｔｒ＞（２×Ｔｕ）となる。一方、ＢＵＦ２において再送信動作が生じる条件は、（Ｔｐ＋２×Ｔｒ）＞（２×Ｔｕ＋Ｔｐ＋Ｔｓ）の場合であり、これを整理してＴｒ＞（Ｔｕ＋０．５×Ｔｓ）の場合である。（Ｔｐ＋２×Ｔｒ）は、「送信側が連続した送信動作を開始したのち、受信側のプロセッサ回路等がＢＵＦ１のパケットデータの取り出しを経てからＢＵＦ２のパケットデータの取り出しを行うのに要する時間」を意味する。（２×Ｔｕ＋Ｔｐ＋Ｔｓ）は、「送信側が連続した送信動作を開始し、これに応じて受信側が「ＵｐｄａｔｅＦＣ」を連続して返信し、これに応じて送信側が次の連続した送信動作を行うと共にその後側の送信動作に伴うパケットデータが受信側に到達するのに要する時間」を意味する。
【００７３】
したがって、２面のバッファ回路を持つ場合に再送信動作を回避する条件は、Ｔｒ≦（２×Ｔｕ）かつＴｒ≦（Ｔｕ＋０．５×Ｔｓ）の場合であり、図１５（ａ）の場合と同様に、図１５（ｂ）の斜線部分の領域ＡＲ１を満たすように遅延時間を挿入することで原理的には再送信動作を回避することが可能となる。しかしながら、図１５（ａ）、図１５（ｂ）において、現実的には、前述した遅延時間の条件を精度よく定めることは困難と言える。その要因として、特に、ＰＣＩｅシステムがプラグアンドプレイ機能を備えていることが挙げられる。すなわち、前述した図８において、例えばＰＣＩｅエンドポイントＥＰは、自由に抜き差しが可能となっており、この抜き差しされるＰＣＩｅエンドポイントの種類（仕様）も様々である。この場合、ＰＣＩｅエンドポイントの種類（仕様）が変わる毎に、前述した各時間Ｔｐ，Ｔｒ，Ｔｓ，Ｔｕも変わり得るため、最適な遅延時間も変わることになる。
【００７４】
《情報処理装置の主要部の詳細構成および動作》
そこで、本実施の形態３の情報処理装置では、この遅延時間の調整を動的に行う。図１６は、本発明の実施の形態３による情報処理装置において、その主要部の詳細な構成例を示すブロック図である。図１６に示す構成例は、前述した図６（ａ）の変形例となっており、図６（ａ）の投機実行制御回路ＳＥＣＴＬにおける遅延回路ＤＬＹが、図１６の投機実行制御回路ＳＥＣＴＬ２における投機時間調整回路ＴＦＣＣＴＬに置き換わったものとなっている。これ以外の構成に関しては図６（ａ）と同様であるため、詳細な説明は省略する。
【００７５】
投機時間調整回路ＴＦＣＣＴＬは、投機クレジット値決定回路ＣＲＳＥＴの出力を遅延させ、ＵｐｄａｔｅＦＣ生成回路ＦＣＧＥＮに出力する可変遅延回路ＶＤＬＹと、ＶＤＬＹの遅延時間を設定するレジスタ回路ＲＥＧと、ＲＥＧの値（すなわち最適な遅延時間）を探索する処理回路（図示せず）を備えている。この処理回路は、特に限定はされないが、専用のロジック演算回路を設けることで実現したり、あるいは、前述した図３（ｂ）等のプロセッサ回路ＣＰＵ等で実現することも可能である。
【００７６】
図１７（ａ）、（ｂ）は、図６における投機時間調整回路のそれぞれ異なる動作例を示すフロー図である。図１７（ａ）において、投機時間調整回路（その内部の処理回路）ＴＦＣＣＴＬは、まず、可変遅延回路ＶＤＬＹの遅延時間を最小値（例えばゼロ）に設定する（Ｓ３０１）。次いで、ＴＦＣＣＴＬは、トランザクションレイヤパケット（ＴＬＰ）の受信（Ｓ３０２）に応じて「Ｎａｋ」を返信した際（Ｓ３０３）にはＶＤＬＹの遅延時間を予め定めた所定の値Δｔだけ増加させる（Ｓ３０４）。これによって、「ＵｐｄａｔｅＦＣ」の送出タイミングは、最も早いタイミングを起点としてΔｔ単位で増加していくことになる。「Ｎａｋ」が発生しない場合は、現在のＶＤＬＹの遅延時間で、投機の失敗がなく、投機実行が成功している状況となる。
【００７７】
なお、図１７（ａ）の動作例は、通常の通信期間に行うことが可能である。一般的なＰＣＩｅシステムでは、通常の通信期間で「Ｎａｋ」が発生するような場合は殆どないため、これを利用して、本実施の形態３の情報処理装置は、「Ｎａｋ」の発生要因を「ＵｐｄａｔｅＦＣ」の送出タイミングとみなして最適な早出しタイミングを探索している。
【００７８】
一方、図１７（ｂ）において、投機時間調整回路（その内部の処理回路）ＴＦＣＣＴＬは、まず、可変遅延回路ＶＤＬＹの遅延時間を最大値に設定する（Ｓ４０１）。最大値とは、例えば、前述した図４（ａ）、（ｂ）において、バッファ回路ＢＵＦの使用期間（４程度）とほぼ同等の値を持つ予め設計段階で定めた値である。次いで、ＴＦＣＣＴＬは、トランザクションレイヤパケット（ＴＬＰ）の受信（Ｓ４０２）に応じて「Ｎａｋ」を返信した際（Ｓ４０３）にはＶＤＬＹの遅延時間を予め定めた所定の値Δｔだけ増加させる（Ｓ４０４）。ここで、このＳ４０４の際には、当該遅延時間の設定時に遅延時間を増加させる必要性が生じた旨を履歴として保持しておく。一方、ＴＦＣＣＴＬは、Ｓ４０３において「Ｎａｋ」を返信しなかった場合には、前述したＳ４０４におけるＶＤＬＹの遅延時間の増加履歴を参照し（Ｓ４０５）、増加履歴が無い場合にはＶＤＬＹの遅延時間を予め定めた所定の値Δｔだけ減少させる（Ｓ４０６）。また、Ｓ４０５において、増加履歴があった場合には、Ｓ４０２へ移行してＴＬＰの受信を待つ。
【００７９】
これによって、「ＵｐｄａｔｅＦＣ」の送出タイミングは、最も遅いタイミング（例えば実際にバッファ回路が開放されたタイミングとほぼ同等）を起点として、「Ｎａｋ」が生じる直前までΔｔ単位で減少していくことになる。すなわち、Ｓ４０２でＴＬＰを受信したのち「Ｎａｋ」の返送を行った場合（Ｓ４０３）は、これ以上ＶＤＬＹの値を小さくしても、投機実行が失敗するため、ＶＤＬＹの遅延時間をΔtだけ増加させる（Ｓ４０４）。ＴＦＣＣＴＬは、この遅延時間の増加させた事実を記録しておく。Ｓ４０３で、「Ｎａｋ」返送を行わなかった場合、ＶＤＬＹをΔｔだけ小さくすることで、より投機の時間を早くする事ができるため、Ｓ４０６にてＶＤＬＹの値を小さくする。ただし、既に一度Δｔだけ増加させた履歴が残っている場合は、前回、Ｓ４０６で減じた遅延時間で「Ｎａｋ」返信が生じた事を意味することになる。この場合、再度減算すると、再び「Ｎａk」返信が生じることになるため、減算を行わない。この判定を行うのがＳ４０５である。なお、図１７（ｂ）において、ＶＤＬＹの増加履歴は、プラグアンドプレイ機能等を介してＰＣＩｅシステムの構成が変更されたことが検出されるとクリアされる。
【００８０】
図１７（ａ）と図１７（ｂ）の動作例を比較すると、図１７（ａ）を用いた場合、場合によっては探索が完了するまでの段階で「Ｎａｋ」（すなわち再送信動作）が多発する恐れがあるが、図１７（ｂ）を用いた場合には、このような事態が生じない。一方、仮に「ＵｐｄａｔｅＦＣ」の送出タイミングを最も早いタイミングとした際にも再送信動作が生じないような場合を想定すると、図１７（ａ）を用いることで早い段階で高速な通信速度を実現することができるが、図１７（ｂ）を用いると、高速な通信速度を実現するまでに若干の時間を要することになる。
【００８１】
以上、本実施の形態３の情報処理装置を用いることで、代表的には、実施の形態１および２で述べた各種効果に加えて更に、様々なＰＣＩｅシステムに応じて「ＵｐｄａｔｅＦＣ」の送出タイミングの最適化を図ることが可能となり、その結果、通信速度の更なる高速化が実現可能となる。
【００８２】
ここで、これまでに述べた各実施の形態による代表的な効果を纏めて表すと次のようになる。図１８および図１９は、本実施の形態による代表的な効果の一例を示す説明図である。図１８に示すように、バッファ回路を１面設けた場合には、本実施の形態により「ＵｐｄａｔｅＦＣ」の早出しを行うことで、「ＵｐｄａｔｅＦＣ」の早出しを行わない場合（比較例）に比べて通信速度を３６％程度高速化することが可能となる。また、図１９に示すように、バッファ回路を２面設けた場合には、本実施の形態により「ＵｐｄａｔｅＦＣ」の早出しを行うことで、「ＵｐｄａｔｅＦＣ」の早出しを行わない場合（比較例）に比べて通信速度を３１％程度高速化することが可能となる。
【００８３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００８４】
例えば、前述した各実施の形態では、「ＵｐｄａｔｅＦＣ」の早出し機能を備えた情報処理装置ならびに情報処理システムを示したが、場合によって、「ＵｐｄａｔｅＦＣ」の早出し機能を備えると共に、当該機能の有効・無効を切り替えられるような形態とすることも可能である。すなわち、例えば、切り替え信号に応じて前述した図６（ａ）の構成例が図６（ｂ）の構成例に変更されるような形態である。例えば、送信パケットのデータペイロードのサイズが非常に大きいような場合には、「ＵｐｄａｔｅＦＣ」の早出しに伴い生じ得る再送信動作のデメリットの方が大きいことも考えられるため、場合によってはこのような形態を用いることも有益となる。ただし、当該形態は、前述した図１７（ａ）、（ｂ）（特に図１７（ｂ））の動作例を用いることでも、ある程度等価的に実現することができる。また、前述した各実施の形態では、ＰＣＩｅシステムを例として説明を行ったが、必ずしもこれに限定されるものではなく、同様のフロー制御機能を備えた情報処理システム（通信システム）であれば適用可能である。
【００８５】
また、例えば、前述した図３等では、プロセッサ回路ＣＰＵが、バッファ回路ＢＵＦ上に格納されたパケットデータをメモリ回路ＭＥＭ上に取り出す（読み出す）構成としたが、勿論、必ずしもＣＰＵを介する必要はなく、当該処理を、例えば、ダイレクトメモリアクセス（ＤＭＡ）コントローラ等に行われることも可能である。
【符号の説明】
【００８６】
ＳＯＣ  情報処理装置
ＣＰＵ  プロセッサ回路
ＭＥＭ  メモリ回路
ＩＢＳ  内部バス
ＰＣＩｅＩＦ  ＰＣＩｅインタフェース回路
ＣＰＵＩＦ  ＣＰＵインタフェース回路
ＢＵＦ  バッファ回路
ＴＬ  トランザクションレイヤ処理回路
ＤＬ  データリンクレイヤ処理回路
ＭＡＣ  メディアアクセスレイヤ処理回路
ＰＨＹ  物理レイヤ処理回路
ＰＴ  ポート
ＬＮ  伝送線路
ＴＬＰ  トランザクションレイヤパケット
ＴＬＰ’  トランザクションパケット
ＳＴ  スタートシンボル
ＥＮ  エンドシンボル
ＳＥＱ  シーケンス番号
ＨＤ  ヘッダ
ＤＡＴ  データペイロード
ＥＣＲＣ，ＬＣＲＣ，ＣＲＣ  エラー検出符号
ＤＡＴＬ  データペイロード長
ＲＵＴ  ルーティング情報
ＴＹＰ  タイプ
ＤＬＤＡＴ  データリンクデータ
ＤＬＬＰ  データリンクレイヤパケット
ＤＬＬＰ’  データリンクパケット
ＳＥＣＴＬ  投機実行制御回路
ＷＴＣＴＬ  バッファライト制御回路
ＣＣＡＬ  クレジット演算回路
ＦＣＧＥＮ  ＵｐｄａｔｅＦＣ生成回路
ＣＲＣＪＧ  ＣＲＣ判定回路
ＡＮＧＥＮ  Ａｃｋ／Ｎａｋ生成回路
ＲＸＪＧ  受信可否判定回路
ＣＲＳＥＴ  投機クレジット値決定回路
ＤＬＹ  遅延回路
ＬＴ＿ＣＲＣＪＧ  ＣＲＣ判定結果保持回路
ＡＮＪＧ  Ａｃｋ／Ｎａｋ送信判定回路
ＲＴ  ＰＣＩｅルートポート
ＳＷ  ＰＣＩｅスイッチ
ＥＰ  ＰＣＩｅエンドポイント
ＴＦＣＣＴＬ  投機時間調整回路
ＶＤＬＹ  可変遅延回路
ＲＥＧ  レジスタ回路
【図１】
2012064090.tif 000003
【図２】
2012064090.tif 000004
【図３】
2012064090.tif 000005
【図４】
2012064090.tif 000006
【図５】
2012064090.tif 000007
【図６】
2012064090.tif 000008
【図７】
2012064090.tif 000009
【図８】
2012064090.tif 000010
【図９】
2012064090.tif 000011
【図１０】
2012064090.tif 000012
【図１１】
2012064090.tif 000013
【図１２】
2012064090.tif 000014
【図１３】
2012064090.tif 000015
【図１４】
2012064090.tif 000016
【図１５】
2012064090.tif 000017
【図１６】
2012064090.tif 000018
【図１７】
2012064090.tif 000019
【図１８】
2012064090.tif 000020
【図１９】
2012064090.tif 000021