(57)【特許請求の範囲】
【請求項１】
データ受信装置に接続されるデータ送信装置において、
前記データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出する抽出部と、
複数の前記データを保持する第１の保持部と、
前記データ受信装置の動作状態を示す前記データ受信装置からの状態通知に基づいて、前記第１の保持部が保持するデータのうち前記データ受信装置に送信可能なデータのいずれかを選択する選択部と、
前記選択部が選択したデータを送信するとともに、前記抽出部が抽出したヘッダ部をデータの送信に先行して送信する送信部を有することを特徴とするデータ送信装置。
【請求項２】
前記選択部は、前記データ受信装置において前記送信部が送信した前記データおよび前記ヘッダ部を保持する第２の保持部の空き状態を通知する状態通知に基づいて、前記第２の保持部が満杯にならないサイズのデータを選択することを特徴とする請求項１記載のデータ送信装置。
【請求項３】
前記選択部は、前記第１の保持部に保持されたデータを、前記データ受信装置に処理させる内容に基づいてグループ分けし、グループにそれぞれ対応して前記データ受信装置に設けられる前記第２の保持部の空き状態に基づいて、前記第１の保持部に保持されたデータのいずれかを選択することを特徴とする請求項２記載のデータ送信装置。
【請求項４】
前記選択部は、前記データ受信装置がデータを受信したかを通知する状態通知に基づいて、前記データ受信装置に受信されなかったデータを再選択することを特徴とする請求項１ないし請求項３のいずれか１項記載のデータ送信装置。
【請求項５】
複数のリクエスタが発行するリクエストに基づいて前記データを生成する複数のデータ生成部と、
前記複数のデータ生成部が生成したデータを保持する複数の前記第１の保持部と、
複数の前記第１の保持部と前記送信部との間に設けられ、前記複数の前記第１の保持部から前記選択部が選択したデータを調停し、調停により選択したデータを前記送信部に出力する調停部を有することを特徴とする請求項１ないし請求項４のいずれか１項記載のデータ送信装置。
【請求項６】
データ送信装置とデータ受信装置とを有するデータ送受信システムにおいて、
前記データ送信装置は、
前記データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出する抽出部と、
複数の前記データを保持する第１の保持部と、
前記データ受信装置の動作状態を示す前記データ受信装置からの通知に基づいて、前記第１の保持部が保持するデータのうち前記データ受信装置に送信可能なデータのいずれかを選択する選択部と、
前記選択部が選択したデータを送信するとともに、前記抽出部が抽出したヘッダ部をデータの送信に先行して送信する送信部を有し、
前記データ受信装置は、
前記送信部が送信するデータまたはヘッダ部を受信する受信部と、
前記受信部がヘッダ部を受信した場合、ヘッダ部に含まれる情報に基づいて第１の処理を実行し、前記受信部がデータを受信した場合、前記第１の処理に続く第２の処理を実行するデータ処理部を有することを特徴とするデータ送受信システム。
【請求項７】
前記データ処理部は、ヘッダ部に含まれる情報に基づいて前記第１の処理と前記第２の処理とを実行可能な場合、前記受信部がデータを受信する前に、前記第２の処理を開始することを特徴とする請求項６記載のデータ送受信システム。
【請求項８】
データ受信装置に接続されるデータ送信装置の制御方法において、
前記データ送信装置が有する抽出部が、前記データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出し、
前記データ送信装置が有する第１の保持部が、複数の前記データを保持し、
前記データ送信装置が有する選択部が、前記データ受信装置の動作状態を示す前記データ受信装置からの通知に基づいて、前記第１の保持部が保持するデータのうち前記データ受信装置に送信可能なデータのいずれかを選択し、
前記データ送信装置が有する送信部が、前記選択部が選択したデータを送信するとともに、前記抽出部が抽出したヘッダ部をデータの送信に先行して送信することを特徴とするデータ送信装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信装置、データ送受信システムおよびデータ送信装置の制御方法に関する。
【背景技術】
【０００２】
送信装置から受信装置にデータを転送するデータ転送システムにおいて、メモリアクセス用のコマンドを送信装置から受信装置に出力した後、受信装置からのデータ転送要求に基づいてコマンドに対応するデータを出力する手法が知られている。例えば、送信装置は、受信装置に接続されたバスの使用権を獲得した後、コマンドを受信装置に出力し、コマンドの出力後、バスの使用権を解放する。受信装置は、送信装置から受信したコマンドに対応するメモリアクセスが可能になった後、バスの使用権を獲得し、送信装置にデータ要求コマンドを出力し、獲得したバスの使用権を解放せずに維持する。送信装置は、受信装置から受信したデータ要求コマンドに基づいて、先に出力したコマンドに対応するデータを受信装置に出力する。受信装置は、送信装置から受信したデータをデーバッファに格納した後、バスの使用権を解放し、データバッファに格納したデータを用いてメモリアクセスを開始する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−４８３１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、受信装置は、送信装置から送信されるコマンドとデータとを保持する受信バッファを有し、受信バッファに所定量以上の空きがある場合のみ送信装置にコマンドとデータの送信を許可するフロー制御を実行する。コマンドとデータとを正常に受信するために、フロー制御はコマンドの送信時とデータの送信時にそれぞれ実行される。したがって、送信装置がコマンドを生成後、コマンドを受信装置に送信するタイミングは、フロー制御の処理時間に対応して遅れる。すなわち、受信装置において、送信装置から受信したコマンドに対応するメモリアクセスが可能になるまでの時間は、フロー制御の処理時間に対応して遅れる。
【０００５】
１つの側面では、本件開示のデータ送信装置、データ送受信システムおよびデータ送信装置の制御方法は、データを受信するデータ受信装置が実行する処理を従来に比べて早く完了させることを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、データ受信装置に接続されるデータ送信装置は、データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出する抽出部と、複数のデータを保持する第１の保持部と、データ受信装置の動作状態を示すデータ受信装置からの状態通知に基づいて、第１の保持部が保持するデータのうちデータ受信装置に送信可能なデータのいずれかを選択する選択部と、選択部が選択したデータを送信するとともに、抽出部が抽出したヘッダ部をデータの送信に先行して送信する送信部を有する。
【０００７】
別の観点によれば、データ送信装置とデータ受信装置とを有するデータ送受信システムにおいて、データ送信装置は、データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出する抽出部と、複数のデータを保持する第１の保持部と、データ受信装置の動作状態を示すデータ受信装置からの通知に基づいて、第１の保持部が保持するデータのうちデータ受信装置に送信可能なデータのいずれかを選択する選択部と、選択部が選択したデータを送信するとともに、抽出部が抽出したヘッダ部をデータの送信に先行して送信する送信部を有し、データ受信装置は、送信部が送信するデータまたはヘッダ部を受信する受信部と、受信部がヘッダ部を受信した場合、ヘッダ部に含まれる情報に基づいて第１の処理を実行し、受信部がデータを受信した場合、第１の処理に続く第２の処理を実行するデータ処理部を有する。
【０００８】
さらなる別の観点によれば、データ受信装置に接続されるデータ送信装置の制御方法は、データ送信装置が有する抽出部が、データ受信装置に処理させる内容を示す情報が格納されるヘッダ部を含むデータからヘッダ部を抽出し、データ送信装置が有する第１の保持部が、複数のデータを保持し、データ送信装置が有する選択部が、データ受信装置の動作状態を示すデータ受信装置からの通知に基づいて、第１の保持部が保持するデータのうちデータ受信装置に送信可能なデータのいずれかを選択し、データ送信装置が有する送信部が、選択部が選択したデータを送信するとともに、抽出部が抽出したヘッダ部をデータの送信に先行して送信する。
【発明の効果】
【０００９】
本件開示のデータ送信装置、データ送受信システムおよびデータ送信装置の制御方法は、データを受信するデータ受信装置が実行する処理を従来に比べて早く完了させることできる。
【図面の簡単な説明】
【００１０】
【図１】データ送信装置、データ送受信システムおよびデータ送信装置の制御方法の一実施形態を示す図である。
【図２】図１に示すデータ送受信システムの動作の一例を示す図である。
【図３】データ送信装置、データ送受信システムおよびデータ送信装置の制御方法の別の実施形態を示す図である。
【図４】図３に示す送受信制御部の一例を示す図である。
【図５】図４に示すパケット送信部の一例を示す図である。
【図６】図４に示すパケット受信部の一例を示す図である。
【図７】図３に示すデータ送受信システムが搭載されるサーバの一例を示す図である。
【図８】図３に示すデータ送受信システムの動作の一例を示す図である。
【図９】図３に示すデータ送受信システムの動作の別の例を示す図である。
【図１０】図３に示すデータ送受信システムの動作のさらなる別の例を示す図である。
【図１１】図３に示すデータ送受信システムの動作の別の例を示す図である。
【図１２】図５に示すパケット送信部の動作の一例を示す図である。
【図１３】図６に示すパケット受信部で受信したパケットを処理するキャッシュメモリ制御部の動作の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、データ送信装置、データ送受信システムおよびデータ送信装置の制御方法の一実施形態を示す。図１に示すデータ送受信システムＳＹＳ１は、データ送信装置１およびデータ受信装置２を有する。データ送信装置１は、抽出部３、保持部４、選択部５および送信部６を有する。データ受信装置２は、受信部７、保持部８およびデータ処理部９を有する。
【００１３】
抽出部３は、データ受信装置２に処理させる内容を示す情報が格納されるヘッダ部ＨＤを含むパケットＰＣＫＴからヘッダ部ＨＤを抽出する。パケットＰＣＫＴは、ヘッダ部ＨＤを含むデータの一例である。保持部４は、複数のパケットＰＣＫＴを保持する複数の記憶領域を有する。
【００１４】
選択部５は、データ受信装置２の動作状態を示す通知（状態通知）をデータ受信装置２から受け、受けた通知に基づいて、保持部４に保持されたパケットＰＣＫＴのうちデータ受信装置２に送信可能なパケットＰＣＫＴのいずれかを選択する。例えば、動作状態は、データ受信装置２の保持部８の空き状態、または、データ受信装置２の受信部７によるパケットＰＣＫＴの受信状態の少なくともいずれかである。
【００１５】
データ受信装置２の保持部８に所定量以上の空きがある場合、選択部５は、空き状態を示す空き情報（クレジット）の通知をデータ受信装置２から受ける。そして、選択部５は、保持部４に保持された複数のパケットＰＣＫＴのうち、保持部８が満杯にならないサイズのパケットＰＣＫＴのいずれかを選択して送信部６に出力する。保持部４に保持された複数のパケットＰＣＫＴのサイズが、空き情報が示すサイズより大きい場合、選択部５は、保持部４の空き容量が増えるまでパケットＰＣＫＴの選択を抑止する。このように、選択部５は、クレジットによるフロー制御を実行する。
【００１６】
一方、データ受信装置２の受信部７がパケットＰＣＫＴを正常に受信した場合、選択部５は、パケットＰＣＫＴを正常に受信したことを示す受信情報の通知をデータ受信装置２から受ける。この場合、選択部５は、データ受信装置２に送信したパケットＰＣＫＴを保持部４から削除し、空き情報に基づいて保持部４に保持された次のパケットＰＣＫＴを送信部６に転送する。一方、選択部５は、受信部７がパケットＰＣＫＴを正常に受信しなかった場合、選択部５は、パケットＰＣＫＴを正常に受信したことを示す受信情報の通知をデータ受信装置２から受けない。この場合、選択部５は、保持部４に保持したパケットＰＣＫＴのうち、データ受信装置２に送信したパケットＰＣＫＴを再選択して送信部６に出力し、送信部６にパケットＰＣＫＴを再送させる。このように、選択部５は、データ受信装置２の受信部７の受信状況に合わせてパケットＰＣＫＴを再送する送達制御を実行する。
【００１７】
選択部５は、データ受信装置２から通知される空き情報または受信情報の少なくともいずれかに基づいて、フロー制御および送達制御を実行し、保持部４に保持されたパケットＰＣＫＴを選択し、あるいは、保持部４に保持されたパケットＰＣＫＴの選択を保留する。このため、送信部６は、保持部４からパケットＰＣＫＴを受ける前に、パケットＰＣＫＴに対応するヘッダ部ＨＤを抽出部３から受け、受けたヘッダ部ＨＤをデータ受信装置２に送信する。すなわち、送信部６は、選択部５が選択したパケットＰＣＫＴを送信するとともに、抽出部３が抽出したヘッダ部ＨＤをパケットＰＣＫＴの送信に先行して送信する。
【００１８】
データ受信装置２の受信部７は、データ送信装置１から送信されるパケットＰＣＫＴまたはヘッダ部ＨＤを受信し、受信したパケットＰＣＫＴまたはヘッダ部ＨＤを保持部８に格納する。受信部７は、パケットＰＣＫＴを正常に受信した場合、受信情報をデータ送信装置１に通知する。なお、受信情報は、受信部７によるパケットＰＣＫＴの受信状況に基づいて、データ受信装置２により生成されてもよい。一方、受信部７は、抽出部３で抽出されたヘッダ部ＨＤのみを受信した場合、受信情報をデータ送信装置１に通知しない。すなわち、抽出部３により抽出されたヘッダ部ＨＤを再送する送達制御は実行されない。
【００１９】
保持部８は、パケットＰＣＫＴまたはヘッダ部ＨＤを保持する複数の記憶領域を有し、空き容量を示す空き情報をデータ送信装置１に通知する。なお、空き情報は、保持部８の空き状況に基づいて、データ受信装置２により生成されてもよい。
【００２０】
データ処理部９は、保持部８にヘッダ部ＨＤが保持された場合、ヘッダ部ＨＤが示す処理の内容に基づいて実行可能な処理の一部を実行する。データ処理部９は、保持部８にパケットＰＣＫＴが保持された場合であって、パケットＰＣＫＴに対応するヘッダ部ＨＤに基づいて処理の一部を実行した場合、残りの処理を実行する。処理の一部は、第１の処理の一例であり、残りの処理は、第１の処理に続く第２の処理の一例である。
【００２１】
なお、抽出部３により抽出されるヘッダ部ＨＤは、受信部７の受信状況を示す受信情報による送達制御は実行されず、保持部８の空き状況を示す空き情報に基づくフロー制御も実行されない。このため、データ送信装置１とデータ受信装置２とを接続する通信路に発生するノイズ等の影響によりヘッダ部ＨＤの情報の一部が欠落した場合、受信部７は、ヘッダ部ＨＤを受信しない。また、保持部８が満杯の場合、受信部７により受信されたヘッダ部ＨＤは、保持部８に格納されることなく破棄される。
【００２２】
しかしながら、ヘッダ部ＨＤが送信部６から送信された後、受信部７は、選択部５が実行する送達制御またはフロー制御に基づいてパケットＰＣＫＴを受信する。このため、受信部７がノイズ等によりヘッダ部ＨＤを受信せず、または、保持部８にヘッダ部ＨＤが格納されない場合にも、データ処理部９は、保持部８に保持されたパケットＰＣＫＴ（ヘッダ部ＨＤを含む）に基づいて、処理を実行することができる。
【００２３】
図２は、図１に示すデータ送受信システムＳＹＳ１の動作の一例を示す。図２に示す例では、データ送信装置１からデータ受信装置２にパケットＰＣＫＴ１、ＰＣＫＴ２が送信される（図２（ａ）、（ｂ））。また、パケットＰＣＫＴ１、ＰＣＫＴ２の送信に先行して、データ送信装置１からデータ受信装置２に、パケットＰＣＫＴ１に含まれるヘッダ部ＨＤ１とパケットＰＣＫＴ２に含まれるヘッダ部ＨＤ２とが送信される（図２（ｃ）、（ｄ））。なお、パケットＰＣＫＴ１、ＰＣＫＴ２の各々は、ヘッダ部ＨＤ（ＨＤ１、ＨＤ２）とデータ部ＤＴ（本体部）とを含む。
【００２４】
データ受信装置２のデータ処理部９は、ヘッダ部ＨＤ１の受信に基づいて、処理１の一部である前処理を実行し、ヘッダ部ＨＤ２の受信に基づいて、処理２の一部である前処理を実行する（図２（ｅ）、（ｆ））。また、データ処理部９は、パケットＰＣＫＴ１の受信に基づいて、前処理に続く本処理（処理１の残り）を実行する（図２（ｇ））。データ受信装置２のデータ処理部９は、パケットＰＣＫＴ２の受信に基づいて、前処理に続く本処理（処理２の残り）を実行する（図２（ｈ））。
【００２５】
例えば、データサイズと処理内容とがヘッダ部ＨＤに格納され、処理するデータがデータ部ＤＴに格納される場合、前処理は、データサイズと処理内容とに応じた記憶領域の確保であり、本処理は、確保した記憶領域へのデータの格納と、データ処理である。あるいは、メモリのアクセスアドレスとライトコマンドとがヘッダ部ＨＤに格納され、メモリに書き込むデータがデータ部ＤＴに格納される場合、前処理は、メモリのアクセス領域の活性化であり、本処理は、活性化したアクセス領域へのデータの書き込みである。
【００２６】
さらに、データ送受信システムＳＹＳ１が、キャッシュメモリを有する複数のノードを含むマルチプロセッサシステムに搭載される場合、前処理は、メモリアクセス要求に基づいて、他ノードに持ち出したデータを無効化させる処理または返却させる処理である。本処理は、データの無効化処理またはデータの返却処理後に実行される応答処理である。
【００２７】
なお、ヘッダ部ＨＤのみの送信では、フロー制御および送達制御が実行されないため、データ受信装置２で受信されないヘッダ部ＨＤが存在する可能性がある。例えば、所定数のヘッダ部が順次送信される場合、ヘッダ部ＨＤのいずれかが欠落した場合、正しい順序で処理が実行されないおそれがある。しかしながら、データ送信装置１は、ヘッダ部ＨＤのみと、ヘッダ部ＨＤを含むパケットＰＣＫＴとを二重に送信し、データ受信装置２は、本処理をパケットＰＣＫＴの受信に基づいて開始する。このため、本処理の順序が入れ替わることを抑止することができ、データ受信装置２は、正しい順序で処理を完了することができる。
【００２８】
図２の右側にかぎ括弧で示す動作は、データ送信装置１が、ヘッダ部ＨＤ１、ＨＤ２を送信せずに、パケットＰＣＫＴ１、ＰＣＫＴ２を送信し、データ受信装置２が、受信したパケットＰＣＫＴ１、ＰＣＫＴ２に基づいて処理１、処理２を実行する例を示す。この場合、データ処理部９は、パケットＰＣＫＴ１の受信に基づいて処理１の前処理と本処理とを順次実行し、パケットＰＣＫＴ２の受信に基づいて処理２の前処理と本処理とを順次実行する（図２（ｉ）、（ｊ））。
【００２９】
パケットＰＣＫＴ１またはパケットＰＣＫＴ２を受信した後に前処理を開始する場合、本処理が完了する時刻は、ヘッダ部ＨＤ１、ＨＤ２の受信に基づいて前処理を開始する場合に比べて遅くなる。換言すれば、パケットＰＣＫＴ１、ＰＣＫＴ２の送信に先行してヘッダ部ＨＤ１、ＨＤ２を送信することで、パケットＰＣＫＴ１、ＰＣＫＴ２のみを送信する場合に比べて、本処理を早く完了させることができる。
【００３０】
なお、ヘッダ部ＨＤのみの送信は、フロー制御および送達制御が実行されないため、通信路にノイズ等が発生した場合、データ受信装置２は、データ送信装置１が送信したヘッダ部ＨＤを受信しないおそれがある。しかしながら、ヘッダ部ＨＤのみが送信された後、フロー制御および送達制御により、ヘッダ部ＨＤを含むパケットＰＣＫＴがデータ送信装置１からデータ受信装置２に確実に送信される。このため、万一、ヘッダ部ＨＤのみの送信がデータ受信装置２に正常に届かない場合にも、データ受信装置２は、パケットＰＣＫＴの受信に基づいて、図２の右側にかぎ括弧で示す動作と同様に動作することができる。すなわち、ヘッダ部ＨＤのみの送信と、ヘッダ部ＨＤを含むパケットＰＣＫＴの送信とを重複して実行することで、データ送受信システムＳＹＳ１の信頼性を維持しながら、パケットＰＣＫＴのみを送信する場合に比べて、処理を早く完了させることができる。
【００３１】
以上、図１および図２に示す実施形態では、データ送信装置１は、フロー制御または送達制御の少なくともいずれかを実行することで送信時期が遅れるパケットＰＣＫＴに先行して、パケットＰＣＫＴに含まれるヘッダ部ＨＤのみをデータ受信装置２に送信する。データ受信装置２は、ヘッダ部ＨＤの受信に基づいて、処理の一部である前処理を実行し、パケットＰＣＫＴの受信に基づいて、前処理に続く本処理（処理の残り）を実行する。パケットＰＣＫＴを受信する前に処理の一部を開始できるため、データ受信装置２が実行する処理を従来に比べて早く完了させることできる。
【００３２】
ヘッダ部ＨＤのみの送信と、ヘッダ部ＨＤを含むパケットＰＣＫＴの送信とを重複して実行することで、データ送受信システムＳＹＳ１の信頼性を維持しながら、パケットＰＣＫＴのみを送信する場合に比べて、処理を早く完了させることができる。データ受信装置２は、パケットＰＣＫＴの受信に基づいて本処理を開始するため、本処理の順序が入れ替わることを抑止することができ、正しい順序で処理を完了することができる。
【００３３】
図３は、データ送信装置、データ送受信システムおよびデータ送信装置の制御方法の別の実施形態を示す。図３に示すデータ送受信システムＳＹＳ２は、互いに接続された複数のＣＰＵ（Central Processing Unit）１００と、各ＣＰＵ１００に接続されたメモリ２００とを有する。例えば、データ送受信システムＳＹＳ２は、ＨＤＤ（Hard Disk Drive）および各種通信インタフェースとともにサーバ等の情報処理装置に搭載される。サーバの例は、図７に示される。各ＣＰＵ１００は、他のＣＰＵ１００に接続されたメモリ２００にアクセス可能である。すなわち、データ送受信システムＳＹＳ２は、ｃｃ−ＮＵＭＡ（cache-coherent NonUniform Memory Access）アーキテクチャを採用したマルチプロセッサシステムとして機能する。なお、図３に示すＣＰＵ１００間の接続に代えて、図３より多数のＣＰＵ１００をメッシュ接続またはトーラス接続することで、並列計算機が構築されてもよい。
【００３４】
各ＣＰＵ１００は、複数のＣＰＵコア１０、キャッシュメモリ制御部２０およびキャッシュメモリ３０をそれぞれ含む複数のコアブロック４０と、システムバスＳＢＵＳを介して各コアブロック４０に接続された複数の送受信制御部５０とを有する。各コアブロック４０において、複数のＣＰＵコア１０は、ＣＰＵバスＣＢＵＳを介してキャッシュメモリ制御部２０に接続され、さらに、キャッシュメモリ制御部２０を介してメモリ２００およびキャッシュメモリ３０に接続される。ＣＰＵ１００の内部構成は、図３の左側に示すＣＰＵ１００のみに示すが、図３の右側に示すＣＰＵ１００の構成も、図３の左側に示すＣＰＵ１００と同一または同様である。以下の説明では、各コアブロック４０はノードとも称される。
【００３５】
例えば、各メモリ２００は、複数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）が搭載されたＤＩＭＭ（Dual Inline Memory Module）である。
【００３６】
キャッシュメモリ３０は、例えば、セットアソシアティブ方式を採用しており、複数のウェイを有する。各ウェイは、タグ領域およびデータ領域を含む複数のエントリ（キャッシュライン）を有する。タグ領域は、例えば、アドレスの上位ビット群とキャッシュステータスとを保持する領域を有する。この場合、エントリは、アドレスの中位ビット群により選択され、キャッシュライン内のデータは、アドレスの下位ビット群により選択される。キャッシュステータスを保持する領域には、以下で説明するＭｏｄｉｆｉｅｄ状態、Ｅｘｃｌｕｓｉｖｅ状態、Ｓｈａｒｅｄ状態およびＩｎｖａｌｉｄ状態のいずれかを示す情報が格納される。
【００３７】
キャッシュメモリ制御部２０は、ＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルを用いて、メモリ２００が保持するデータとキャッシュメモリ３０が保持するデータとの整合性または一貫性（キャッシュコヒーレンシ）を維持する制御を実行する。
【００３８】
ＭＥＳＩプロトコルにおいて、”Ｍｏｄｉｆｉｅｄ”は、キャッシュメモリ３０に保持されたデータが更新され（書き替えられ）、メモリ２００が保持するデータと異なる状態を示す。”Ｅｘｃｌｕｓｉｖｅ”は、アクセス対象のデータが複数のノードのキャッシュメモリ３０のいずれか１つのみに保持され、データが更新されていない状態を示す。”Ｓｈａｒｅｄ”は、アクセス対象のデータが複数のノードのキャッシュメモリ３０に保持され、データが更新されていない状態を示す。”Ｉｎｖａｌｉｄ”は、キャッシュメモリ３０に保持されたデータが無効であることを示す。
【００３９】
各ＣＰＵコア１０は、メモリ２００にアクセスする場合、キャッシュメモリ制御部２０にメモリアクセス要求（リード要求またはライト要求）を発行する。キャッシュメモリ制御部２０は、自ノードまたは他ノードのＣＰＵコア１０が発行するメモリアクセス要求に基づいて、キャッシュメモリ３０またはメモリ２００にアクセスする。
【００４０】
例えば、メモリ２００は、キャッシュコヒーレンシを維持するために、データを持ち出したコアブロック４０を示すディレクトリ情報をデータとともに保持する。ディレクトリ情報を用いてキャッシュコヒーレンシを維持することで、各コアブロック４０にデータの持ち出しを問い合わせるスヌープ方式に比べて、システムバスＳＢＵＳ等の使用効率を向上することができる。
【００４１】
例えば、自ノードのＣＰＵコア１０からリード要求を受けたキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０がリード要求の対象データを保持している場合（キャッシュヒット）、キャッシュメモリ３０から対象データを読み出す。そして、キャッシュメモリ制御部２０は、キャッシュメモリ３０から読み出した対象データをＣＰＵコア１０に転送する。一方、自ノードのＣＰＵコア１０からリード要求を受けたキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０がリード要求の対象データを保持していない場合（キャッシュミス）、以下のいずれかの動作を実行する。
【００４２】
すなわち、リード要求に含まれるアドレス（対象アドレス）が自ノードに接続されたメモリ２００を示す場合、キャッシュメモリ制御部２０は、自ノードに接続されたメモリ２００からデータを読み出す。そして、キャッシュメモリ制御部２０は、メモリ２００から読み出した対象データをキャッシュメモリ３０に格納するとともにＣＰＵコア１０に出力する。リード要求を他ノードから受けた場合、キャッシュメモリ制御部２０は、メモリ２００から読み出した対象データを含む応答を他ノードに出力する。
【００４３】
リード要求の対象アドレスが他ノードに接続されたメモリ２００を示す場合、キャッシュメモリ制御部２０は、他ノードに接続されたメモリ２００を管理するキャッシュメモリ制御部２０にリード要求を転送する。この際、キャッシュメモリ制御部２０は、対象アドレスに基づいて、対象データを保持するメモリ２００に対応する送受信制御部５０を介して他のＣＰＵ１００にリード要求を出力する。そして、キャッシュメモリ制御部２０は、他ノードから転送された対象データをキャッシュメモリ３０に格納するとともにＣＰＵコア１０に出力する。
【００４４】
なお、キャッシュメモリ制御部２０は、キャッシュコヒーレンシを維持するために、メモリ２００から読み出したディレクトリ情報に基づき、データ無効化要求またはデータ返送要求を、送受信制御部５０を介して他ノードのキャッシュメモリ制御部２０に出力する。データ無効化要求は、自ノードに接続されたメモリ２００から他ノードに持ち出されたデータ（持ち出しデータ）を無効化するために出力される。データ返送要求は、自ノードに接続されたメモリ２００から他ノードに持ち出された持ち出しデータが更新されている場合、更新されたデータを返却させるために出力される。
【００４５】
データ無効化要求を受けたキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０が保持するデータを無効化（削除）し、無効化の完了を示す応答をデータ無効化要求の発行元に出力する。データ無効化要求に対応する応答を受けたキャッシュメモリ制御部２０は、メモリ２００が保持するディレクトリ情報を更新する。
【００４６】
データ返送要求を受けたキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０が保持するデータを読み出し、読み出したデータを含む応答をデータ返送要求の発行元に出力する。データ返送要求に対応する応答を受けたキャッシュメモリ制御部２０は、返送されたデータをキャッシュメモリ３０に格納するとともに、ＣＰＵコア１０に出力し、返送されたデータと、更新したディレクトリ情報をメモリ２００に書き込む。
【００４７】
各ＣＰＵ１００が有する複数の送受信制御部５０は、ＣＰＵ１００に接続される他のＣＰＵ１００に対応して設けられる。各送受信制御部５０は、ＣＰＵ１００内の複数のキャッシュメモリ制御部２０から転送されたメモリアクセス要求に基づいてパケットＰＣＫＴを生成し、生成したパケットＰＣＫＴを他のＣＰＵ１００に送信する。また、各送受信制御部５０は、ＣＰＵ１００内の複数のキャッシュメモリ制御部２０から転送されたメモリアクセス要求に基づいて生成されたパケットＰＣＫＴのヘッダ部を、パケットＰＣＫＴを送信する前にＣＰＵ１００に送信する。
【００４８】
各送受信制御部５０は、他のＣＰＵ１００から転送されるパケットＰＣＫＴを受信し、受信したパケットＰＣＫＴに含まれる情報を、パケットＰＣＫＴに含まれる宛先情報が示すノード（パケットＰＣＫＴの受信ノード）のキャッシュメモリ制御部２０に出力する。各送受信制御部５０が受信するパケットＰＣＫＴは、メモリアクセス要求（リード要求またはライト要求）を示す情報またはメモリアクセス要求に対応する応答を示す情報を含む。このように、複数の送受信制御部５０は、ＣＰＵ１００と他のＣＰＵ１００とを接続するルータの機能を有する。送受信制御部５０の例は、図４から図６に示される。
【００４９】
図４は、図３に示す送受信制御部５０の一例を示す。なお、図４では、各ＣＰＵ１００が３個のノード（すなわち、３個のキャッシュメモリ制御部２０）を有する例が示されるが、ノードの数は２個以上であればよい。
【００５０】
送受信制御部５０は、ＣＰＵ１００内の３個のキャッシュメモリ制御部２０にそれぞれ対応する３個のパケット生成部６０と、パケット送信部７０と、パケット受信部８０とを有する。パケット送信部７０は、データ送信装置の一例であり、パケット受信部８０は、データ受信装置の一例である。
【００５１】
各パケット生成部６０は、対応するキャッシュメモリ制御部２０から情報ＳＩＮＦを受け、受けた情報を含むパケットＰＣＫＴを生成する。パケット生成部６０がキャッシュメモリ制御部２０から受ける情報ＳＩＮＦは、メモリアクセス要求またはメモリアクセス要求に対応する応答を含む。メモリアクセス要求またはメモリアクセス要求に対応する応答を含む情報ＳＩＮＦは、リクエストの一例であり、キャッシュメモリ制御部２０は、リクエストを発行するリクエスタの一例である。パケット生成部６０は、データを生成するデータ生成部の一例である。
【００５２】
パケット送信部７０は、パケット生成部６０が生成したパケットＰＣＫＴを他のＣＰＵ１００に向けて送信する。パケットＰＣＫＴは、図５に示すＴＬＰ（Transaction Layer Packet）またはＤＬＬＰ（Data Link Layer Packet）として他のＣＰＵ１００に向けて送信される。パケット生成部６０が生成するパケットＰＣＫＴの例と、パケット送信部７０の例とは、図５に示される。
【００５３】
パケット受信部８０は、他のＣＰＵ１００から送信されるパケットＰＣＫＴ（ＴＬＰまたはＤＬＬＰ）を受信し、受信したパケットＰＣＫＴに含まれる情報ＲＩＮＦを、ＣＰＵ１００に含まれる３個のキャッシュメモリ制御部２０のいずれかに出力する。パケット受信部８０が他のＣＰＵ１００から受けるパケットＰＣＫＴに含まれる情報ＲＩＮＦは、メモリアクセス要求またはメモリアクセス要求に対応する応答を含む。パケット受信部８０の例は、図６に示される。
【００５４】
図５は、図４に示すパケット送信部７０の一例を示す。パケット送信部７０は、ヘッダ抽出部７１、バッファ部７２、調停部７３、送信制御部７４、ＤＬＬＰ生成部７５、調停部７６および送信部７７を有する。例えば、ＣＰＵ１００間で送受信されるパケットＰＣＫＴのプロトコルは、トランザクションレイヤ、データリンクレイヤおよび物理レイヤの３層構造を有する。ＴＬＰは、トランザクションレイヤで生成されるパケットＰＣＫＴであり、ＤＬＬＰは、データリンクレイヤで生成されるパケットＰＣＫＴである。
【００５５】
ヘッダ抽出部７１は、図４に示すパケット生成部６０にそれぞれ対応して設けられる。ヘッダ抽出部７１は、パケット生成部６０が生成したヘッダ部ＨＤ（ＨＤ１、ＨＤ２）とデータ部ＤＴとを含むパケットＰＣＫＴからヘッダ部ＨＤを抽出し、抽出したヘッダＨＤをＤＬＬＰ生成部７５に出力する。以下の説明では、データ部ＤＴに含まれるデータまたは、メモリ２００およびキャッシュメモリ３０に対して入出力されるデータは、データＤＴとも称される。パケットＰＣＫＴは、ヘッダ部ＨＤを含むデータの一例である。ヘッダ抽出部７１は、他のＣＰＵ１００に処理させる内容を示す情報が格納されるヘッダ部ＨＤを含むパケットＰＣＫＴからヘッダ部ＨＤを抽出する抽出部の一例である。
【００５６】
バッファ部７２は、図４に示すパケット生成部６０にそれぞれ対応して設けられる。バッファ部７２は、パケット生成部６０が生成したパケットＰＣＫＴを保持する複数の記憶領域を有する。バッファ部７２は、複数のパケットＰＣＫＴを保持する第１の保持部の一例である。
【００５７】
パケット送信部７０は、各バッファ部７２に保持されたパケットＰＣＫＴをグループ分けし、グループ間でパケットＰＣＫＴの出力順を入れ替えるバーチャルチャネル制御を実行する。例えば、パケットＰＣＫＴは、メモリアクセス要求（リード要求またはライト要求）のグループと、メモリアクセス要求以外の少なくとも１つのグループとに分類される。
【００５８】
メモリアクセス要求以外のグループの１つは、メモリアクセス要求に基づいて発行される応答、データ無効化要求またはデータ返送要求を含むグループである。メモリアクセス要求以外のグループの別の１つは、例えば、ノードから他のノードに発行される割り込み要求を含むグループである。すなわち、パケット送信部７０は、各バッファ部７２に保持されたパケットＰＣＫＴを、他のＣＰＵ１００に処理させる内容に基づいてグループ分けする。なお、パケットＰＣＫＴのグループ分けは、上述に限定されない。
【００５９】
メモリアクセス要求が受信ノード（他のＣＰＵ１００）に接続されたメモリ２００に対して発行され、受信ノードでキャッシュミスが発生した場合、受信ノードは、自ノードのメモリ２００にアクセスする。さらに、受信ノードは、自ノードのメモリ２００から読み出されたディレクトリ情報に基づいて、メモリアクセス要求の対象データが他のノードのキャッシュメモリ３０に持ち出されたことを検出した場合、以下の処理を実行する。すなわち、受信ノードは、データの持ち出し先のノードにデータの無効化要求またはデータの返送要求を発行する。
【００６０】
以下の説明では、データの持ち出し先のノードのキャッシュメモリ３０に保持されたデータを無効化させる無効化要求は、データ無効化要求と称される。データの持ち出し先のノードのキャッシュメモリ３０に保持されたデータを返送させる返送要求は、データ返送要求と称される。
【００６１】
そして、受信ノードは、データの持ち出し先のノードからデータ無効化要求またはデータ返送要求に対応する応答を受信した後、メモリアクセス要求に対応する応答をメモリアクセス要求の発行元のノード（パケットＰＣＫＴの送信ノード）に発行する。このように、データ無効化要求およびデータ返送要求は、メモリアクセス要求に基づいて発行され、メモリアクセス要求の応答は、データ無効化要求またはデータ返送要求の処理が完了した後に発行される。すなわち、メモリアクセス要求の発行からメモリアクセス要求に対応する応答を受信するまでの処理（トランザクション）は、データ無効化要求の処理またはデータ返送要求の処理が完了するまで完了しない。
【００６２】
このため、パケットＰＣＫＴがバッファ部７２に滞留することを抑止するために、パケット送信部７０は、以下のように動作することが望ましい。すなわち、パケット送信部７０は、自ノードのキャッシュメモリ制御部２０から受信するデータ無効化要求およびデータ返送要求を、自ノードのキャッシュメモリ制御部２０から受信するメモリアクセス要求より優先的にバッファ部７２から出力することが望ましい。ここで、自ノードのキャッシュメモリ制御部２０は、データ無効化要求およびデータ返送要求を、他ノードから受信したメモリアクセス要求に対応して発行する。
【００６３】
バーチャルチャネル制御では、バッファ部７２に保持されたメモリアクセス要求を、メモリアクセス要求より後にバッファ部７２に保持されたデータ無効化要求またはデータ返送要求が追い抜くことが可能である。これにより、複数のメモリアクセス要求が発行された後、パケットＰＣＫＴの処理が進まない状況を回避することができる。すなわち、いわゆるパケットＰＣＫＴの詰まりが発生し、ＣＰＵ１００がデッドロックすることを抑止することができる。また、割り込み要求をメモリアクセス要求より優先的にバッファ部７２から出力することで、割り込み要求に対応する処理を、バーチャルチャネル制御を実行しない場合に比べて迅速に実行することができる。
【００６４】
パケット送信部７０は、パケットＰＣＫＴの受信ノードから通知されるバーチャルチャネル毎の受信バッファ（図６に示すバーチャルチャネルバッファ８３）の空き数を示すクレジット数に基づいて、各バッファ部７２にフロー制御を実行させる。クレジット数は、パケットＰＣＫＴの受信ノードの受信バッファの空き状態を示す。各バッファ部７２は、クレジット数によるフロー制御に基づいて、受信バッファが満杯にならないサイズのパケットＰＣＫＴを調停部７３に出力する。すなわち、クレジット方式によるフロー制御を実行することで、受信ノードの受信バッファがオーバーフローすることが抑止される。但し、フロー制御を実行する場合、フロー制御を実行しない場合に比べて、パケットＰＣＫＴの送信効率は低下する。
【００６５】
パケットＰＣＫＴの受信ノードからパケット送信部７０へのクレジット数の通知は、パケットＰＣＫＴの受信ノードの受信バッファの空き状態を通知する状態通知の一例である。パケット送信部７０は、パケットＰＣＫＴのグループにそれぞれ対応して他のＣＰＵのパケット受信部８０に設けられる受信バッファの空き状態に基づいて、バッファ部７２に保持されたパケットＰＣＫＴのいずれかを選択する選択部の一例である。
【００６６】
調停部７３は、ＬＲＵ（Least Recently Used）等の手法を用いて、バッファ部７２からそれぞれ出力されるパケットＰＣＫＴを調停し、調停により選択したパケットＰＣＫＴを送信制御部７４に出力する。調停部７３により、複数のコアブロック４０がＣＰＵ１００に設けられ、複数のコアブロック４０から互いに独立にリクエストが出力される場合にも、リクエストを一定時間内に受け付けることが保証される。これにより、特定のリクエスタからのリクエストが受け付けられず、リクエストに対応する処理（トランザクション）が終了しない、いわゆるライブロックの発生が抑止される。また、調停部７３により、リクエストを衝突させることなく送信制御部７４に伝達することができる。例えば、各バッファ部７２は、調停部７３にパケットＰＣＫＴの出力要求を出力し、調停部７３から許可を受けた場合、調停部７３にパケットＰＣＫＴを出力する。
【００６７】
送信制御部７４は、調停部７３から出力されたパケットＰＣＫＴにシーケンス番号ＳＮとＣＲＣ（Cyclic Redundancy Check）コードを付加してＴＬＰを生成し、生成したＴＬＰをリングバッファ形式の送信キューＳＱＵＥに書き込む。送信キューＳＱＵＥは、ＣＰＵ１００が内蔵するＲＡＭ（Random Access Memory）等に割り当てられる。送信制御部７４は、送信キューＳＱＵＥにおいてライトポインタＷＰが示す記憶領域から順にＴＬＰを書き込み、ライトポインタＷＰを更新する。送信制御部７４は、送信キューＳＱＵＥにおいて、リードポインタＲＰが示す記憶領域から順にＴＬＰを読み出し、読み出したＴＬＰを送信部７７に出力し、リードポインタＲＰを更新する。
【００６８】
送信制御部７４は、ＴＬＰの受信ノード（他のＣＰＵ１００）からＴＬＰを正常に受信したことを示す正常確認応答をシーケンス番号ＳＮとともに受信した場合、エンドポインタＥＰを更新する。送信制御部７４は、ＴＬＰの受信ノードにＴＬＰを送信した後、正常確認応答を受信することなく所定時間が経過した場合、タイムアウトを検出し、エンドポインタＥＰを更新することなくＴＬＰを再送する。正常確認応答は、受信ノード（図６に示す受信部８１）がＴＬＰを受信したかの動作状態を通知する状態通知の一例である。送信制御部７４は、受信ノードがパケットＰＣＫＴを受信したかを示す状態通知に基づいて、受信ノードに受信されなかったパケットＰＣＫＴを再選択する選択部の一例である。
【００６９】
このように、送信キューＳＱＵＥにおいて、ライトポインタＷＰとリードポインタＲＰに挟まれる記憶領域には、送信されていないＴＬＰが保持される。リードポインタＲＰとエンドポインタＥＰとに挟まれる記憶領域には、ＴＬＰを送信後、対応する正常確認応答を受信するまで送信したＴＬＰが保持される。ライトポインタＷＰとリードポインタＲＰに加えてエンドポインタＥＰを設けることで、ＴＬＰの送信先のノードの受信状況に合わせてＴＬＰを再送する送達制御が実行される。但し、送達制御を実行する場合、送達制御を実行しない場合に比べて、ＴＬＰの送信効率は低下する。
【００７０】
ＤＬＬＰ生成部７５は、各ヘッダ抽出部７１から出力されるヘッダ部ＨＤにＣＲＣコードを付加してＤＬＬＰを生成し、生成したＤＬＬＰを調停部７６に出力する。ＤＬＬＰ生成部７５は、生成したＤＬＬＰを、ＤＬＬＰを受信する他のＣＰＵ１００の受信バッファの空き容量（クレジット）を確認することなく出力する。すなわち、ＤＬＬＰ生成部７５は、フロー制御を実行しない。
【００７１】
調停部７６は、ＤＬＬＰ生成部７５が生成したＤＬＬＰと、送受信制御部５０（図４）内で生成される制御用のＤＬＬＰとを、ラウンドロビン等の手法により調停し、調停により選択したＤＬＬＰを送信部７７に出力する。調停部７６から出力されるＤＬＬＰは、送達制御を実行することなく送信部７７に伝達される。
【００７２】
送信部７７は、送信制御部７４からＴＬＰを受け、調停部７６からＤＬＬＰを受け、受けたＴＬＰまたはＤＬＬＰを、８ｂ１０ｂ等の手法によりエンコードし、エンコードしたデータを受信ノード（他のＣＰＵ１００）に送信する。例えば、送信部７７は、調停部７６からのＤＬＬＰを、送信制御部７４からのＴＬＰに比べて優先的に送信するとともに、送信制御部７４からのＴＬＰを所定の頻度以上で受け付ける制御を実行する。
【００７３】
上述したように、ＴＬＰは、バーチャルチャネルによるフロー制御と送信キューＳＱＵＥによる送達制御とに基づいて送信され、ＤＬＬＰは、フロー制御と送達制御を実行することなく送信される。このため、パケット生成部６０がパケットＰＣＫＴを出力後、パケットＰＣＫＴに対応するＤＬＬＰが受信ノードに届くまでの時間は、パケット生成部６０がパケットＰＣＫＴを出力後、パケットＰＣＫＴに対応するＴＬＰが受信ノードに届くまでの時間よりも短い。
【００７４】
図５の右下に示すように、ＴＬＰは、シーケンス番号ＳＮ、ヘッダ部ＨＤ（ＨＤ１、ＨＤ２）、データ部ＤＴおよびＣＲＣを含み、ＤＬＬＰは、ヘッダ部ＨＤおよびＣＲＣを含む。例えば、各ヘッダ部ＨＤは、コマンド、送信元ＣＰＵＩＤ、送信先ＣＰＵＩＤ、アクセスサイズおよびアクセスアドレスを含む。コマンドは、メモリアクセス要求（リード要求またはライト要求）、データ無効化要求、データ返送要求、割り込み要求または各種要求に対応する応答等のパケットＰＣＫＴの種類を示す。送信元ＣＰＵＩＤは、パケットＰＣＫＴを送信するＣＰＵ１００を識別する番号を示し、送信先ＣＰＵＩＤは、パケットＰＣＫＴを受信するＣＰＵ１００を識別する番号を示す。アクセスサイズは、コマンドがメモリアクセス要求の場合に付加され、メモリアクセス要求によりメモリ２００に入力または出力するデータサイズを示す。アクセスアドレスは、コマンドがメモリアクセス要求の場合に付加され、メモリアクセス要求によりアクセスするメモリ２００のアドレスを示す。なお、データ部ＤＴは、メモリアクセス要求によりアクセスするメモリ２００に書き込むデータを含み、メモリアクセス要求がリード要求の場合、ＴＬＰに含まれない。
【００７５】
図６は、図４に示すパケット受信部８０の一例を示す。パケット受信部８０は、受信部８１、パケット分配部８２、複数のバーチャルチャネルバッファ８３（８３ａ、８３ｂ、８３ｃ）および調停部８４を有する。バーチャルチャネルバッファ８３は、第２の保持部の一例である。
【００７６】
受信部８１は、他のＣＰＵ１００（パケットＰＣＫＴの送信先のノード）からパケットＰＣＫＴを受信し、受信したパケットＰＣＫＴがＴＬＰの場合、ＴＬＰに含まれるＣＲＣをチェックし、ＴＬＰに含まれるシーケンス番号ＳＮを抽出する。受信部８１は、ＣＲＣコードによりＴＬＰに誤りがないことを検出した場合、受信したＴＬＰに含まれる情報ＲＩＮＦ（例えば、ヘッダ部ＨＤとデータ部ＤＴ）を抽出し、抽出した情報ＲＩＮＦをパケット分配部８２に出力する。
【００７７】
受信部８１は、所定の頻度で連続して受信した誤りのない所定数のＴＬＰを受信する毎に、受信したＴＬＰに含まれるシーケンス番号ＳＮを付加した正常応答確認をパケットＰＣＫＴの送信先のノードに送信する。一方、受信部８１は、ＣＲＣコードによりＴＬＰのエラーを検出した場合、正常応答確認をパケットＰＣＫＴの送信先のノードに送信しない。
【００７８】
また、受信部８１は、パケットＰＣＫＴの送信先のノードから受信したパケットＰＣＫＴがＤＬＬＰの場合、ＤＬＬＰに含まれるＣＲＣをチェックする。受信部８１は、ＣＲＣコードによりＤＬＬＰに誤りがないことを検出した場合、受信したＤＬＬＰに含まれる情報ＲＩＮＦ（ヘッダ部ＨＤ）を抽出し、抽出した情報ＲＩＮＦをパケット分配部８２に出力する。受信部８１は、ＣＲＣコードによりＤＬＬＰに誤りがあることを検出した場合、受信したＤＬＬＰを破棄する。
【００７９】
パケット分配部８２は、受信部８１から受信する情報ＲＩＮＦが、バーチャルチャネルのいずれのグループに属するかを検出し、検出したグループに対応するバーチャルチャネルバッファ８３（８３ａ、８３ｂ、８３ｃ）に情報ＲＩＮＦを格納する。また、パケット分配部８２は、各バーチャルチャネルバッファ８３の空き状態を示すクレジット数を、他のＣＰＵ１００（送信ノード）に出力する。
【００８０】
各バーチャルチャネルバッファ８３（８３ａ、８３ｂ、８３ｃ）は、パケット分配部８２から受信するグループ毎の情報ＲＩＮＦを保持する複数の記憶領域を有する。各バーチャルチャネルバッファ８３は、保持した情報ＲＩＮＦを調停部８４に順次出力する。例えば、バーチャルチャネルバッファ８３ａは、メモリアクセス要求を保持し、バーチャルチャネルバッファ８３ｂは、データ無効化要求またはデータ返送要求を保持し、バーチャルチャネルバッファ８３ｃは、割り込み要求を保持する。
【００８１】
調停部８４は、図３に示すＣＰＵ１００のキャッシュメモリ制御部２０毎に情報ＲＩＮＦを調停する機能を有する。調停部８４は、各キャッシュメモリ制御部２０に対応してバーチャルチャネルバッファ８３ａ、８３ｂ、８３ｃから出力される情報ＲＩＮＦを調停し、調停により選択した情報ＲＩＮＦをキャッシュメモリ制御部２０に出力する。例えば、各バーチャルチャネルバッファ８３は、調停部８４に情報ＲＩＮＦの出力要求を出力し、調停部８４から許可を受けた場合、調停部８４に情報ＲＩＮＦを出力する。
【００８２】
図７は、図３に示すデータ送受信システムＳＹＳ２が搭載されるサーバＳＶの一例を示す。サーバＳＶは、複数のＣＰＵ１００（ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３）、複数のメモリ２００、スイッチＳＷ、ＨＤＤおよびネットワークインタフェースＮＷＩＦを有する。
【００８３】
各ＣＰＵ１００は、メモリバスを介して互いに異なるメモリＭＥＭに接続される。なお、サーバＳＶは、ＨＤＤの代わりにＳＳＤ（Solid State Drive）を有してもよく、ＨＤＤとＳＳＤの両方を有してもよい。
【００８４】
スイッチＳＷは、例えば、ＰＣＩｅ（Peripheral Component Interconnect express）スイッチ等であり、各ＣＰＵ１００をＨＤＤまたはネットワークインタフェースＮＷＩＦに接続する。ネットワークインタフェースＮＷＩＦは、ＬＡＮ（Local Area Network）等のネットワークに接続される。なお、サーバＳＶは、図７に示す要素に加えて、キーボード、マウス等の入力デバイス、ディスプレイ等の出力デバイス、光学ドライブ装置等の入出力デバイスを有してもよい。
【００８５】
図８は、図３に示すデータ送受信システムＳＹＳ２の動作の一例を示す。図８に示す動作では、図７に示すＣＰＵ０のＣＰＵコア１０のいずれかが、ＣＰＵ１のコアブロック４０（図３）のいずれかに接続されたメモリ２００に割り当てられたアドレスＡＤ（＝Ｂ）に対するメモリアクセス要求を発行する（図８（ａ））。メモリアクセス要求は、リード要求ＲＲＥＱ（Ｂ）であり、リード要求ＲＲＥＱ（Ｂ）において、”（Ｂ）”はアドレスＡＤを示す。
【００８６】
ＣＰＵ０のキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０にアドレスＡＤ（＝Ｂ）に対応するデータを保持していないと判定し（キャッシュミス）、送受信制御部５０にリード要求ＲＲＥＱ（Ｂ）を示す情報ＳＩＮＦを出力する（図８（ｂ））。
【００８７】
送受信制御部５０のパケット生成部６０（図４）は、キャッシュメモリ制御部２０から受けた情報ＳＩＮＦを含むパケットＰＣＫＴを生成する。送受信制御部５０のパケット送信部７０（図５）は、パケット生成部６０が生成したパケットＰＣＫＴに基づいてＤＬＬＰおよびＴＬＰを生成する。そして、パケット送信部７０は、生成したＤＬＬＰおよびＴＬＰをＣＰＵ１に送信する（図８（ｃ）、（ｄ））。図８では、ＤＬＬＰは、破線の矢印で示される。
【００８８】
ＴＬＰは、バーチャルチャネルによるフロー制御と送信キューＳＱＵＥによる送達制御とに基づいて送信される。また、ＴＬＰは、ＤＬＬＰに比べてパケットのサイズが大きいため、調停部７３による各ＴＬＰの調停に掛かる時間は、調停部７６による各ＤＬＬＰの調停に掛かる時間に比べて長い。このため、ＴＬＰの送信タイミングは、ＤＬＬＰの送信タイミングに比べて遅くなる。なお、ＴＬＰの調停に掛かる時間とＤＬＬＰの調停に掛かる時間との差は、メモリアクセス要求等のリクエストを発行するコアブロック４０（図３）の数が多いほど大きくなる。
【００８９】
ＣＰＵ１の送受信制御部５０は、リード要求ＲＲＥＱ（Ｂ）を示すＤＬＬＰを受信し、受信したＤＬＬＰに含まれる情報ＲＩＮＦを、ＤＬＬＰに含まれるアクセスアドレス（＝Ｂ）に対応するキャッシュメモリ制御部２０に出力する（図８（ｅ））。情報ＲＩＮＦを受信したキャッシュメモリ制御部２０は、情報ＲＩＮＦに含まれるヘッダ部ＨＤの情報に基づいて、自ノードのメモリ２００にリード要求ＲＲＥＱ（Ｂ）を発行する。そしてキャッシュメモリ制御部２０は、メモリ２００からディレクトリ情報ＤＩＲおよびデータＤＴを読み出す（図８（ｆ））。
【００９０】
キャッシュメモリ制御部２０は、メモリ２００から読み出したディレクトリ情報ＤＩＲに基づいて、データＤＴの他ノードへの持ち出しがないと判定し、メモリ２００から読み出したデータＤＴをＣＰＵ０に送信する応答の準備を完了する。キャッシュメモリ制御部２０が自ノードのメモリ２００にリード要求ＲＲＥＱ（Ｂ）を発行してから、データＤＴの他ノードへの持ち出しを判定するまでの処理は、ヘッダ部ＨＤに格納された情報に基づいて実行される第１の処理（前処理）の一例である。そして、キャッシュメモリ制御部２０は、ＣＰＵ０からのリード要求ＲＲＥＱ（Ｂ）を含むＴＬＰに対応する情報ＲＩＮＦの受信を待つ。ＣＰＵの外部に接続されるメモリ２００のアクセスサイクル数は、キャッシュメモリ３０のアクセスサイクル数に比べて多く、クロック周波数が高いほどクロックサイクル数の差は大きくなる傾向にある。このため、メモリ２００のアクセスを前処理に含ませ、フロー制御および送達制御中にメモリ２００のアクセスを実行することで、メモリアクセス要求を契機とするトランザクションの処理時間を効果的に低減することができる。
【００９１】
なお、データＤＴの他ノードへの持ち出しがある場合、キャッシュメモリ制御部２０は、データＤＴを持ち出した他ノードのキャッシュメモリ制御部２０にデータ無効化要求またはデータ返送要求を発行する。そして、キャッシュメモリ制御部２０は、他ノードのキャッシュメモリ３０に保持されたデータを追い出す処理を実行させる。この場合、データを追い出す処理は、前処理に含まれる。
【００９２】
ＣＰＵ１の送受信制御部５０は、ＣＰＵ０からリード要求ＲＲＥＱ（Ｂ）を含むＴＬＰを受信し、受信したＴＬＰに含まれる情報ＲＩＮＦを、ＴＬＰに含まれるアクセスアドレス（＝Ｂ）に対応するキャッシュメモリ制御部２０に出力する（図８（ｇ））。キャッシュメモリ制御部２０は、ＴＬＰに対応する情報ＲＩＮＦを受信した場合、前処理が完了しているか否かを判定する。
【００９３】
ＤＬＬＰに対応する情報ＲＩＮＦに基づく前処理が完了していない場合、キャッシュメモリ制御部２０は、前処理を継続する。キャッシュメモリ制御部２０は、ＤＬＬＰに対応する情報ＲＩＮＦに基づく前処理が既に完了している場合、メモリ２００から読み出したデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する（図８（ｈ））。あるいは、キャッシュメモリ制御部２０は、継続した前処理が完了した場合、メモリ２００から読み出したデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する。
【００９４】
メモリ２００から読み出したデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を生成し、生成した情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する処理は、第１の処理（前処理）に続く第２の処理（本処理）の一例である。キャッシュメモリ制御部２０がＴＬＰに対応する情報ＲＩＮＦを受信してから応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力するまでの期間Ｔ２は、本処理に掛かる期間である。キャッシュメモリ制御部２０は、図６に示す受信部８１がヘッダ部ＨＤのみを含むＤＬＬＰを受信した場合、ヘッダ部ＨＤに格納された情報に基づいて前処理を実行し、受信部８１がＴＬＰを受信した場合、前処理に続く本処理を実行するデータ処理部の一例である。
【００９５】
送受信制御部５０のパケット生成部６０は、キャッシュメモリ制御部２０から受信したデータＤＴを含む応答パケットＰＣＫＴ（図４）を生成する。送受信制御部５０のパケット送信部７０は、パケット生成部６０が生成したパケットＰＣＫＴに基づいて、リード要求ＲＲＥＱ（Ｂ）の応答を示すＤＬＬＰとＴＬＰとを生成し、生成したＤＬＬＰとＴＬＰとをＣＰＵ０に送信する（図８（ｉ、ｊ））。フロー制御と送達制御が実行されるＴＬＰの送信タイミングは、ＤＬＬＰの送信タイミングに比べて遅くなる。
【００９６】
ＣＰＵ０の送受信制御部５０は、リード要求ＲＲＥＱ（Ｂ）の応答を示すＤＬＬＰを受信した場合、リード要求ＲＲＥＱ（Ｂ）の応答を示すＴＬＰの受信を待つ（図８（ｋ））。すなわち、リード要求ＲＲＥＱ（Ｂ）の応答を示すＤＬＬＰに基づいて実行される前処理は、ＴＬＰの受信を待つ処理である。送受信制御部５０は、リード要求ＲＲＥＱ（Ｂ）の応答を示すＴＬＰを受信した場合、受信したＴＬＰが有するデータＤＴを含む情報ＲＩＮＦ（ＤＴ）をキャッシュメモリ制御部２０に出力する（図８（ｌ））。
【００９７】
キャッシュメモリ制御部２０は、送受信制御部５０から受信した情報ＲＩＮＦ（ＤＴ）に含まれるデータＤＴをキャッシュメモリ３０に格納する（図８（ｍ））。また、キャッシュメモリ制御部２０は、情報ＲＩＮＦ（ＤＴ）に含まれるデータＤＴを、リード要求ＲＲＥＱ（Ｂ）の応答として、ＣＰＵ０のＣＰＵコア１０に出力する（図８（ｎ））。ＴＬＰの受信に基づいてデータＤＴを含む情報ＲＩＮＦ（ＤＴ）を生成し、情報ＲＩＮＦ（ＤＴ）に含まれるデータＤＴをキャッシュメモリ３０とＣＰＵコア１０とに出力する処理は、前処理に続く本処理の一例である。そして、リード要求ＲＲＥＱ（Ｂ）に対応する一連の処理（トランザクション）が完了する。ＣＰＵ０のＣＰＵコア１０がリード要求ＲＲＥＱ（Ｂ）を発行してから応答（データＤＴ）を受信するまでの期間はＴ１である。
【００９８】
図８の下側にかぎ括弧で示す動作は、送受信制御部５０がヘッダＨＤを含むＤＬＬＰを生成しない場合の動作の一例を示す。すなわち、図８の下側に示す動作は、図５に示すパケット送信部７０が、ヘッダ抽出部７１およびＤＬＬＰ生成部７５を持たない場合の動作を示す。図８の下側に示す動作は、ＤＬＬＰがＣＰＵ１に送信されないこと、およびリード要求ＲＲＥＱ（Ｂ）の応答に対応するＴＬＰの発行タイミングが異なることを除き、図８の上側に示す動作と同様である。
【００９９】
ＣＰＵ０からＣＰＵ１にＤＬＬＰが発行されない場合、ＣＰＵ１のキャッシュメモリ制御部２０は、ＴＬＰに含まれるリード要求ＲＲＥＱ（Ｂ）を示す情報ＲＩＮＦを送受信制御部５０から受けたことに基づいて前処理を開始する。すなわち、キャッシュメモリ制御部２０は、ＴＬＰに含まれるリード要求ＲＲＥＱ（Ｂ）を示す情報ＲＩＮＦを受けた後、メモリ２００にリード要求ＲＲＥＱ（Ｂ）を発行する。そして、キャッシュメモリ制御部２０は、メモリ２００からディレクトリ情報ＤＩＲおよびデータＤＴを読み出し、データＤＴの他ノードへの持ち出しを判定する（図８（ｏ））。さらに、キャッシュメモリ制御部２０は、メモリ２００から読み出したデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を生成し、生成した情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する本処理を実行する。
【０１００】
ＣＰＵ１のキャッシュメモリ制御部２０がリード要求ＲＲＥＱ（Ｂ）を示す情報ＲＩＮＦを受けてからデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力するまでの期間Ｔ４は、前処理および本処理に掛かる期間である。このため、期間Ｔ４は、図８の上側の動作に示す本処理に掛かる期間Ｔ２より長くなる。換言すれば、図８の上側に示す動作では、ＴＬＰの送信に先立って、ヘッダ部ＨＤを含むＤＬＬＰを送信することで、ＴＬＰを受信してから処理が完了するまでの時間を図８の下側に示す動作に比べて短縮することができる。
【０１０１】
また、ＣＰＵ１が実行する前処理のタイミングは、図８の上側に示す動作に比べて遅れるため、ＣＰＵ０がＣＰＵ１からデータを受信するタイミングも、図８の上側に示す動作に比べて遅れる。したがって、ＣＰＵ０のＣＰＵコア１０がリード要求ＲＲＥＱ（Ｂ）を発行してからデータＤＴを受信するまでの期間Ｔ３は、図８の上側の動作に示す期間Ｔ１より長くなる（図８（ｐ））。換言すれば、図８の上側に示す動作では、ＴＬＰの送信に先立ってヘッダ部ＨＤを含むＤＬＬＰを送信することで、データＤＴの受信タイミングを図８の下側に示す動作に比べて早くすることができ、メモリアクセス要求に対応する処理を早く完了することができる。すなわち、ＴＬＰの送信に先立ってヘッダ部ＨＤを含むＤＬＬＰを送信しない場合に比べて、各ＣＰＵは、次の処理を早く開始することができる。この結果、データ送受信システムＳＹＳ２および図７に示すデータ送受信システムＳＹＳ２を含むサーバＳＶの処理効率を向上することができる。
【０１０２】
図９は、図３に示すデータ送受信システムＳＹＳ２の動作の別の例を示す。図８と同一または同様の動作については、詳細な説明は省略する。図９においても、ＤＬＬＰは、破線の矢印で示される。図９に示す動作では、図７に示すＣＰＵ０のＣＰＵコア１０のいずれかが、自ノードに接続されたメモリ２００に割り当てられたアドレスＡＤ（＝Ａ）に対するメモリアクセス要求（リード要求ＲＲＥＱ（Ａ））を発行する（図９（ａ））。リード要求ＲＲＥＱ（Ａ）において、”（Ａ）”はアドレスＡＤを示す。
【０１０３】
ＣＰＵ０のキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０にアドレスＡＤ（＝Ａ）に対応するデータを保持していないことを判定する（キャッシュミス）。このため、ＣＰＵ０のキャッシュメモリ制御部２０は、メモリ２００にリード要求ＲＲＥＱ（Ａ）を発行し、メモリ２００からディレクトリ情報ＤＩＲおよびデータＤＴを読み出す（図９（ｂ））。
【０１０４】
キャッシュメモリ制御部２０は、メモリ２００から読み出したディレクトリ情報ＤＩＲに基づいて、アクセス対象のデータＤＴがＣＰＵ１に持ち出されたことを検出する。そして、キャッシュメモリ制御部２０は、ＣＰＵ１からデータＤＴを返送させるデータ返送要求ＤＲＥＴを示す情報ＳＩＮＦを送受信制御部５０に出力する（図９（ｃ））。
【０１０５】
送受信制御部５０は、情報ＳＩＮＦを示すパケットＰＣＫＴを生成し、さらに、生成したパケットＰＣＫＴに基づいて、データ返送要求ＤＲＥＴを示すＤＬＬＰおよびＴＬＰを生成し、生成したＤＬＬＰおよびＴＬＰをＣＰＵ１に送信する（図９（ｄ）、（ｅ））。図８と同様に、ＴＬＰは、フロー制御と送達制御とに基づいて送信されるため、ＤＬＬＰに比べて送信タイミングは遅くなる。
【０１０６】
ＣＰＵ１の送受信制御部５０は、データ返送要求ＤＲＥＴを示すＤＬＬＰを受信し、受信したＤＬＬＰに含まれる情報ＲＩＮＦを、データを持ち出したコアブロック４０のキャッシュメモリ制御部２０に出力する（図９（ｆ））。情報ＲＩＮＦを受信したキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０にリード要求ＲＲＥＱを発行し、キャッシュメモリ３０からデータＤＴを読み出した後、キャッシュメモリ３０に保持されたデータを無効化する（図９（ｇ））。キャッシュメモリ制御部２０がリード要求ＲＲＥＱを発行してから、データＤＴをキャッシュメモリ３０から読み出し、キャッシュメモリ３０内のデータＤＴを無効化するまでの処理は、前処理の一例である。
【０１０７】
ＣＰＵ１の送受信制御部５０は、ＣＰＵ０からデータ返送要求ＤＲＥＴを含むＴＬＰを受信し、受信したＴＬＰに含まれる情報ＲＩＮＦを、データを持ち出したコアブロック４０のキャッシュメモリ制御部２０に出力する（図９（ｈ））。ＴＬＰに対応する情報ＲＩＮＦを受信したときに前処理は完了しているため、キャッシュメモリ制御部２０は、ＣＰＵ０に返送するデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する（図９（ｉ））。
【０１０８】
ＣＰＵ０に返送するデータＤＴを含む応答を示す情報ＳＩＮＦ（ＤＴ）を生成し、生成した情報ＳＩＮＦを送受信制御部５０に出力する処理は、前処理に続く本処理の一例である。キャッシュメモリ制御部２０がＴＬＰに対応する情報ＲＩＮＦを受信してから応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力するまでの期間Ｔ６は、本処理に掛かる期間である。
【０１０９】
送受信制御部５０は、キャッシュメモリ制御部２０から受信したデータＤＴを含む応答パケットＰＣＫＴを生成する。送受信制御部５０は、生成した応答パケットＰＣＫＴに基づいて、データ返送要求ＤＲＥＴの応答を示すＤＬＬＰとＴＬＰとを生成し、生成したＤＬＬＰとＴＬＰとをＣＰＵ０に送信する（図９（ｊ、ｋ））。なお、ＤＬＬＰは、ヘッダ部ＨＤを含むがデータ部（ＤＴ）は含まない。
【０１１０】
ＣＰＵ０の送受信制御部５０は、データ返送要求ＤＲＥＴの応答を示すＤＬＬＰを受信した場合、データ返送要求ＤＲＥＴの応答を示すＴＬＰの受信を待つ（図９（ｌ））。すなわち、データ返送要求ＤＲＥＴの応答を示すＤＬＬＰに基づいて実行される前処理は、ＴＬＰの受信を待つ処理である。送受信制御部５０は、データ返送要求ＤＲＥＴの応答を示すＴＬＰを受信した場合、受信したＴＬＰ内のデータＤＴを含む情報ＲＩＮＦ（ＤＴ）を生成し、生成した情報ＲＩＮＦ（ＤＴ）をキャッシュメモリ制御部２０に出力する（図９（ｍ））。
【０１１１】
キャッシュメモリ制御部２０は、送受信制御部５０から受信したデータＤＴをキャッシュメモリ３０に格納する（図９（ｎ））。また、キャッシュメモリ制御部２０は、送受信制御部５０から受信したデータＤＴを、リード要求ＲＲＥＱ（Ａ）の応答として、ＣＰＵ０のＣＰＵコア１０に出力する（図９（ｏ））。ＴＬＰの受信に基づいてデータＤＴを含む情報ＲＩＮＦ（ＤＴ）を生成し、情報ＲＩＮＦ（ＤＴ）に含まれるデータＤＴをキャッシュメモリ３０とＣＰＵコア１０とに出力する処理は、前処理に続く本処理の一例である。そして、リード要求ＲＲＥＱ（Ａ）に対応する一連の処理（トランザクション）が完了する。ＣＰＵ０のＣＰＵコア１０がリード要求ＲＲＥＱ（Ａ）を発行してからデータＤＴを受信するまでの期間はＴ５である。
【０１１２】
図９の下側にかぎ括弧で示す動作は、送受信制御部５０がヘッダＨＤを含むＤＬＬＰを生成しない場合の動作の一例を示す。図９の下側に示す動作は、ＴＬＬＰがＣＰＵ１に送信されないこと、およびリード要求ＲＲＥＱ（Ａ）のＣＰＵ１からの応答を示すＴＬＰの発行タイミングが異なることを除き、図９の上側に示す動作と同様である。
【０１１３】
ＣＰＵ０からＣＰＵ１にＤＬＬＰが発行されない場合、ＣＰＵ１のキャッシュメモリ制御部２０は、送受信制御部５０を介してＣＰＵ０からデータ返送要求ＤＲＥＴを含むＴＬＰを受信したことに基づいて前処理を開始し、前処理に続いて本処理を実行する。すなわち、キャッシュメモリ制御部２０は、ＴＬＰを受信した後に、キャッシュメモリ３０にデータＤＴを返送させ、返送させたデータＤＴを含む情報ＳＩＮＦ（ＤＴ）を生成し、生成した情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力する（図９（ｐ））。
【０１１４】
キャッシュメモリ制御部２０がＴＬＰに対応する情報ＲＩＮＦを受信してから応答を示す情報ＳＩＮＦ（ＤＴ）を送受信制御部５０に出力するまでの期間Ｔ８は、前処理および本処理に掛かる期間であるため、図９の上側の動作に示す期間Ｔ６より長くなる。換言すれば、図９の上側に示す動作では、ＴＬＰの送信に先立って、ヘッダ部ＨＤを含むＤＬＬＰを送信することで、ＴＬＰを受信してから処理が完了するまでの時間を図９の下側に示す動作に比べて短縮することができる。
【０１１５】
また、ＣＰＵ１が実行する前処理のタイミングが、図９の上側に示す動作に比べて遅れるため、ＣＰＵ０がＣＰＵ１からデータＤＴを受信するタイミングも、図９の上側に示す動作に比べて遅れる。したがって、ＣＰＵ０のＣＰＵコア１０がリード要求ＲＲＥＱ（Ａ）を発行してからデータＤＴを受信するまでの期間Ｔ７は、図９の上側の動作に示す期間Ｔ５より長くなる（図９（ｑ））。換言すれば、図９の上側に示す動作では、ＴＬＰの送信に先立ってヘッダ部ＨＤを含むＤＬＬＰを送信することで、データＤＴの受信タイミングを図９の下側に示す動作に比べて早くすることができ、メモリアクセス要求に対応する処理を早く完了することができる。この結果、ＤＬＬＰを送信しない場合に比べて、各ＣＰＵは次の処理を早く開始することができ、データ送受信システムＳＹＳ２および図７に示すサーバＳＶの処理効率を向上することができる。
【０１１６】
図１０は、図３に示すデータ送受信システムＳＹＳ２の動作のさらなる別の例を示す。図８および図９と同一または同様の動作については、詳細な説明は省略する。図１０においても、ＤＬＬＰは、破線の矢印で示される。図１０に示す動作では、図７に示すＣＰＵ０のＣＰＵコア１０のいずれかが、自ノードに接続されたメモリ２００に割り当てられたアドレスＡＤ（＝Ａ）に対するメモリアクセス要求（ライト要求ＷＲＥＱ（Ａ、ＷＤＴ））を発行する（図１０（ａ））。”ライト要求ＷＲＥＱ（Ａ、ＷＤＴ）”において、”Ａ”はアドレスＡＤを示し、”ＷＤＴ”はライトデータを示す。以下では、ライトデータＷＤＴは、データＷＤＴとも称される。
【０１１７】
ＣＰＵ０は、自ノードのキャッシュメモリ３０にアドレスＡＤ（＝Ａ）に対応するデータＤＴを保持している（キャッシュヒット）。ＣＰＵ０のキャッシュメモリ制御部２０は、メモリ２００にリード要求ＲＲＥＱ（Ａ）を発行し、メモリ２００からディレクトリ情報ＤＩＲおよびデータＤＴを読み出す（図１０（ｂ））。
【０１１８】
キャッシュメモリ制御部２０は、メモリ２００から読み出したディレクトリ情報ＤＩＲに基づいて、アクセス対象のデータＤＴがＳｈａｒｅｄ状態でＣＰＵ１に持ち出されていることを検出する。そして、キャッシュメモリ制御部２０は、ＣＰＵ１に持ち出したデータＤＴを無効化させるデータ無効化要求ＤＩＮＶを示す情報ＳＩＮＦを生成し、生成した情報ＳＩＮＦを送受信制御部５０に出力する（図１０（ｃ））。
【０１１９】
送受信制御部５０は、キャッシュメモリ制御部２０からの情報ＳＩＮＦに基づいて、データ無効化要求ＤＩＮＶを示すＤＬＬＰおよびＴＬＰを生成し、生成したＤＬＬＰおよびＴＬＰをＣＰＵ１に送信する（図１０（ｄ）、（ｅ））。図８と同様に、ＴＬＰは、フロー制御と送達制御とに基づいて送信されるため、ＤＬＬＰに比べて送信タイミングは遅くなる。
【０１２０】
ＣＰＵ１の送受信制御部５０は、データ無効化要求ＤＩＮＶを示すＤＬＬＰを受信し、受信したＤＬＬＰに含まれる情報ＲＩＮＦを、データを持ち出したコアブロック４０のキャッシュメモリ制御部２０に出力する（図１０（ｆ））。情報ＲＩＮＦを受信したキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０にデータＤＴを無効化させるデータ無効化要求ＤＩＮＶを出力し、キャッシュメモリ３０に保持されたデータを無効化する（図１０（ｇ））。キャッシュメモリ制御部２０が自ノードのキャッシュメモリ３０にデータ無効化要求ＤＩＮＶを発行してから、キャッシュメモリ３０に保持されたデータを無効化するまでの処理は、前処理の一例である。
【０１２１】
ＣＰＵ１の送受信制御部５０は、ＣＰＵ０からデータ無効化要求ＤＩＮＶを含むＴＬＰを受信し、受信したＴＬＰに含まれる情報ＲＩＮＦを、データＤＴを持ち出したコアブロック４０のキャッシュメモリ制御部２０に出力する（図１０（ｈ））。ＴＬＰに対応する情報ＲＩＮＦを受信したときに前処理は完了しているため、キャッシュメモリ制御部２０は、キャッシュメモリ３０に保持されたデータＤＴを無効化したことを示す応答を示す情報ＳＩＮＦを送受信制御部５０に出力する（図１０（ｉ））。
【０１２２】
キャッシュメモリ３０に保持されたデータＤＴを無効化したことを示す応答を示す情報ＳＩＮＦを生成し、生成した情報ＳＩＮＦを送受信制御部５０に出力する処理は、前処理に続く本処理の一例である。キャッシュメモリ制御部２０がＴＬＰに対応する情報ＲＩＮＦを受信してから応答を示す情報ＳＩＮＦを送受信制御部５０に出力するまでの期間Ｔ１０は、本処理に掛かる期間である。
【０１２３】
なお、ＣＰＵ１のキャッシュメモリ制御部２０は、キャッシュメモリ３０にデータ無効化要求ＤＩＮＶを出力した後、ＴＬＰに対応する情報ＲＩＮＦの受信を待つことなく、データ無効化要求ＤＩＮＶの応答を示す情報ＳＩＮＦを送受信制御部５０に出力してもよい。この場合、図１０に示す動作に比べて、ＣＰＵ１からＣＰＵ０へのデータ無効化要求ＤＩＮＶの応答を示すＤＬＬＰの出力タイミングを早くすることができ、ライト要求ＷＲＥＱ（Ａ、ＷＤＴ）に対応するトランザクションを早く完了することができる。
【０１２４】
送受信制御部５０は、キャッシュメモリ制御部２０から受信した応答に基づいて応答パケットＰＣＫＴを生成する。送受信制御部５０は、生成した応答パケットＰＣＫＴに基づいて、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰとＴＬＰとを生成し、生成したＤＬＬＰとＴＬＰとをＣＰＵ０に送信する（図１０（ｊ、ｋ））。
【０１２５】
データ無効化要求ＤＩＮＶの応答は、データを含まないため、ＤＬＬＰとＴＬＰとは、ヘッダ部ＨＤを有し、かつ、データ部を有さないパケット構造である。この場合、ＣＰＵ０の送受信制御部５０は、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰを受信した場合、ＴＬＰの受信を待つことなく、ＤＬＬＰに含まれる応答を示す情報ＲＩＮＦをキャッシュメモリ制御部２０に出力する（図１０（ｌ））。
【０１２６】
キャッシュメモリ制御部２０は、他ノードに持ち出したデータＤＴを無効化したことを示す情報ＲＩＮＦを送受信制御部５０から受信したことに基づいて、書き込みデータＷＤＴをキャッシュメモリ３０に格納する（図１０（ｍ））。データＷＤＴをキャッシュメモリ３０に書き込む処理によりライト要求ＷＲＥＱ（Ａ、ＷＤＴ）に対応するトランザクションが完了する。
【０１２７】
なお、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰの受信に基づいて情報ＲＩＮＦを生成し、情報ＲＩＮＦに基づいてデータＷＤＴをキャッシュメモリ３０に書き込む処理は、本処理の一例である。すなわち、キャッシュメモリ制御部２０は、ＤＬＬＰに対応する情報ＲＩＮＦに基づいて前処理だけでなく本処理を実行可能な場合、送受信制御部５０がＴＬＰを受信する前に、本処理を開始する。
【０１２８】
ＴＬＰの受信を待たずに本処理を開始できる場合、ＤＬＬＰの受信に基づいて本処理を開始することで、従来に比べて処理を早く完了することができる。さらに、万一、ＤＬＬＰが欠落した場合、キャッシュメモリ制御部２０は、その後に受信するＴＬＰに基づいて、データＷＤＴをキャッシュメモリ３０に書き込む処理を実行する。すなわち、ＤＬＬＰとＴＬＰとによりヘッダ部ＨＤを重複して送信することで、処理の開始タイミングを早めつつ、処理を確実に実行することができる。
【０１２９】
ＣＰＵ０のＣＰＵコア１０がライト要求ＷＲＥＱ（Ａ、ＷＤＴ）を発行してからキャッシュメモリ３０にデータＷＤＴを格納するまでの期間はＴ９である。なお、キャッシュメモリ制御部２０は、ＴＬＰの受信に基づいて、データＷＤＴをキャッシュメモリ３０に格納してもよい。
【０１３０】
図１０の下側にかぎ括弧で示す動作は、送受信制御部５０がヘッダＨＤを含むＤＬＬＰを生成しない場合の動作の一例を示す。図１０の下側に示す動作は、ＴＬＬＰがＣＰＵ１に送信されないこと、およびライト要求ＷＲＥＱ（Ａ、ＷＤＴ）の応答を示すＴＬＰの発行タイミングが異なることを除き、図１０の上側に示す動作と同様である。
【０１３１】
図１０の下側に示す動作では、ＣＰＵ１のキャッシュメモリ制御部２０は、データ無効化要求ＤＩＮＶを示すＴＬＰに対応する情報ＲＩＮＦを受信した後に、キャッシュメモリ３０にデータＤＴを無効化させる（図１０（ｎ））。そして、キャッシュメモリ制御部２０は、キャッシュメモリ３０にデータＤＴを無効化させたことを示す情報ＳＩＮＦを生成し、生成した情報ＳＩＮＦを送受信制御部５０に出力する（図１０（ｏ））。
【０１３２】
ＣＰＵ１のキャッシュメモリ制御部２０がデータ無効化要求ＤＩＮＶを示す情報ＲＩＮＦを受信してからデータＤＴを無効化させたことを示す応答を示す情報ＳＩＮＦを送受信制御部５０に出力するまでの期間Ｔ１２は、前処理および本処理に掛かる期間である。このため、期間Ｔ１２は、図１０の上側の動作に示す期間Ｔ１０より長くなる。換言すれば、図１０の上側に示す動作では、ＴＬＰの送信に先立って、ヘッダ部ＨＤを含むＤＬＬＰを送信することで、ＴＬＰを受信してから処理が完了するまでの時間を図１０の下側に示す動作に比べて短縮することができる。
【０１３３】
また、ＣＰＵ１が実行する前処理の開始タイミングが、図１０の上側に示す動作に比べて遅れるため、データ無効化要求ＤＩＮＶに対応する応答をＣＰＵ０がＣＰＵ１から受信するタイミングも、図１０の上側に示す動作に比べて遅れる。さらに、図１０の下側に示す動作では、ＣＰＵ０は、ＤＬＬＰを受けないため、ＣＰＵ０の送受信制御部５０は、ＴＬＰの受信を待ってからデータ無効化要求ＤＩＮＶに対応する応答を示す情報ＲＩＮＦをキャッシュメモリ制御部２０に出力する（図１０（ｐ））。
【０１３４】
したがって、ＣＰＵ０のＣＰＵコア１０がライト要求ＷＲＥＱ（Ａ、ＷＤＴ）を発行してからデータＷＤＴをキャッシュメモリ３０に格納するまでの期間Ｔ１１は、図１０の上側の動作に示す期間Ｔ９より長くなる（図１０（ｑ））。換言すれば、図１０の上側に示す動作では、ＴＬＰの送信に先立って、ヘッダ部ＨＤを含むＤＬＬＰを送信することで、図１０の下側に示す動作に比べてメモリアクセス要求に対応する処理を早く完了することができる。さらに、ＴＬＰによる応答の受信を待つことなく、ＤＬＬＰによる応答の受信に基づいて、ＣＰＵ０が本処理を実行することで、図１０の下側に示す動作に比べてメモリアクセス要求に対応する処理を早く完了することができる。この結果、ＤＬＬＰを送信しない場合に比べて、各ＣＰＵは次の処理を早く開始することができ、データ送受信システムＳＹＳ２および図７に示すサーバＳＶの処理効率を向上することができる。
【０１３５】
図１１は、図３に示すデータ送受信システムＳＹＳ２の動作の別の例を示す。図８から図１０と同一または同様の動作については、詳細な説明は省略する。図１１においても、ＤＬＬＰは、破線の矢印で示される。図１１に示す動作では、図７に示すＣＰＵ０のＣＰＵコア１０のいずれかが、ＣＰＵ１に接続されたメモリ２００に割り当てられたアドレスＡＤ（＝Ｂ）に対するメモリアクセス要求（ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ））を発行する（図１１（ａ））。
【０１３６】
ＣＰＵ０のキャッシュメモリ制御部２０は、自ノードのキャッシュメモリ３０にアドレスＡＤ（＝Ｂ）に対応するデータを保持していないことを判定する（キャッシュミス）。このため、ＣＰＵ０のキャッシュメモリ制御部２０は、リード要求ＲＲＥＱ（Ｂ）を示す情報ＳＩＮＦを、アドレスＡＤ（＝Ｂ）が割り当てられたメモリ２００に接続されたＣＰＵ１に対応する送受信制御部５０に出力する（図１１（ｂ））。
【０１３７】
送受信制御部５０は、キャッシュメモリ制御部２０からの情報ＳＩＮＦに基づいて、ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ）を示すＤＬＬＰおよびＴＬＰを生成し、生成したＤＬＬＰおよびＴＬＰをＣＰＵ１に送信する（図１１（ｃ）、（ｄ））。図８と同様に、ＴＬＰは、フロー制御と送達制御とに基づいて送信されるため、ＤＬＬＰに比べて送信タイミングは遅くなる。
【０１３８】
ＣＰＵ１の送受信制御部５０は、ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ）を示すＤＬＬＰを受信し、受信したＤＬＬＰに含まれる情報ＲＩＮＦを、アドレスＡＤ＝Ｂが割り当てられたメモリ２００に接続されたキャッシュメモリ制御部２０に出力する（図１１（ｅ））。キャッシュメモリ制御部２０は、アクセス対象のデータの持ち出し先を検出するために、メモリ２００にリード要求ＲＲＥＱ（Ｂ）を発行し、メモリ２００からディレクトリ情報ＤＩＲおよびデータＤＴを読み出す（図１１（ｆ））。
【０１３９】
キャッシュメモリ制御部２０は、メモリ２００から読み出したディレクトリ情報ＤＩＲに基づいて、アクセス対象のデータがＳｈａｒｅｄ状態でＣＰＵ２に持ち出されていることを検出する。そして、キャッシュメモリ制御部２０は、ＣＰＵ２が持ち出したデータＤＴを無効化させるデータ無効化要求ＤＩＮＶを示す情報ＳＩＮＦを生成し、生成した情報ＳＩＮＦを、ＣＰＵ２に接続された送受信制御部５０に出力する（図１１（ｇ））。
【０１４０】
送受信制御部５０は、キャッシュメモリ制御部２０からの情報ＳＩＮＦに基づいて、データ無効化要求ＤＩＮＶを示すＤＬＬＰおよびＴＬＰを生成し、生成したＤＬＬＰおよびＴＬＰをＣＰＵ２に送信する（図１１（ｈ）、（ｉ））。ＣＰＵ１が、ＤＬＬＰおよびＴＬＰをＣＰＵ２に送信してから、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰとＴＬＰをＣＰＵ２から受信するまでの動作は、図１０と同様である。
【０１４１】
データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰを受信したＣＰＵ１の送受信制御部５０は、データ無効化要求ＤＩＮＶの応答を示すＴＬＰの受信を待つ（図１１（ｊ））。すなわち、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰに基づいて実行される前処理は、ＴＬＰの受信を待つ処理である。送受信制御部５０は、データ無効化要求ＤＩＮＶの応答を示すＴＬＰを受信した場合、ＣＰＵ０から受信したデータＷＤＴを含む情報ＲＩＮＦ（ＷＤＴ）を生成し、生成した情報ＲＩＮＦ（ＷＤＴ）をキャッシュメモリ制御部２０に出力する（図１１（ｋ））。
【０１４２】
情報ＲＩＮＦ（ＷＤＴ）を受信したキャッシュメモリ制御部２０は、自ノードに接続されたメモリ２００にライト要求ＷＲＥＱ（ＤＩＲ、ＷＤＴ）を出力する。そして、キャッシュメモリ制御部２０は、メモリ２００におけるアドレスＡＤ＝Ｂの記憶領域にディレクトリ情報ＤＩＲとデータＷＤＴとを書き込む（図１１（ｌ））。メモリ２００に書き込むディレクトリ情報ＤＩＲは、ＣＰＵ０がデータＷＤＴを持ち出したことを示す情報を含む。そして、キャッシュメモリ制御部２０は、ライト要求ＷＲＥＱ（ＤＩＲ、ＷＤＴ）に対応してデータＷＤＴをメモリ２００に書き込んだことを示す応答を含む情報ＳＩＮＦをＣＰＵ０に接続された送受信制御部５０に出力する（図１１（ｍ））。
【０１４３】
なお、ＣＰＵ１の送受信制御部５０は、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰの受信に基づいて、ＣＰＵ０から受信したデータＷＤＴを含む情報ＲＩＮＦ（ＷＤＴ）をキャッシュメモリ制御部２０に出力してもよい。すなわち、ＣＰＵ０から受信したデータＷＤＴをメモリ２００に書き込む処理を、前処理として実行してもよい。万一、ＣＰＵ１とＣＰＵ２とを接続する通信路にノイズ等が発生し、データ無効化要求ＤＩＮＶの応答を示すＤＬＬＰがＣＰＵ１に正常に届かない場合にも、ＣＰＵ１は、ＴＬＰの受信に基づいてデータＷＤＴをメモリ２００に書き込む処理を実行することができる。このため、ＤＬＬＰの受信に基づいて、本処理の一部を前処理として実行する場合にも、データ送受信システムＳＹＳ２が誤動作することなく、正常に動作する。
【０１４４】
ライト要求ＷＲＥＱ（ＤＩＲ、ＷＤＴ）に対応する応答を含む情報ＳＩＮＦを受信した送受信制御部５０は、情報ＳＩＮＦに対応するＤＬＬＰとＴＬＰとを生成し、生成したＤＬＬＰとＴＬＰとをＣＰＵ０に送信する（図１１（ｎ、ｏ））。
【０１４５】
この後、ＣＰＵ０の送受信制御部５０は、ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ）の応答を示すＤＬＬＰを受信した場合、ＴＬＰの受信を待つことなく、ＤＬＬＰに含まれる応答を示す情報ＲＩＮＦをキャッシュメモリ制御部２０に出力する（図１１（ｐ））。
【０１４６】
キャッシュメモリ制御部２０は、ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ）の応答を示す情報ＲＩＮＦを送受信制御部５０から受信したことに基づいて、データＷＤＴをキャッシュメモリ３０に格納する（図１１（ｑ））。そして、ライト要求ＷＲＥＱ（Ｂ、ＷＤＴ）に対応する一連の処理（トランザクション）が完了する。すなわち、図１０と同様に、ＴＬＰの受信を待たずに本処理を開始できる場合、ＤＬＬＰの受信に基づいて本処理を開始することで、従来に比べて処理を早く完了することができる。
【０１４７】
図１２は、図５に示すパケット送信部７０の動作の一例を示す。すなわち、図１２は、データ送信装置の制御方法の一例を示す。
【０１４８】
まず、ステップＳ１００において、パケット送信部７０は、図４に示すパケット生成部６０から受信したパケットＰＣＫＴが正当なパケットＰＣＫＴか否かを判定する。パケットＰＣＫＴが正当である場合、処理は、ＴＬＬＰを送信するステップＳ１０２と、ＴＬＰを送信するステップＳ１１２とに並列に進み、パケットＰＣＫＴが正当でない場合、処理は終了する。なお、パケット送信部７０は、パケットＰＣＫＴの宛先が実在しない場合、またはパケットＰＣＫＴに含まれるコマンドが実在しない場合等に、パケットＰＣＫＴが正当でないと判定する。パケットＰＣＫＴが正当でない場合、パケット送信部７０は、パケット生成部６０にエラーを通知してもよい。
【０１４９】
ステップＳ１０２において、パケット送信部７０のヘッダ抽出部７１は、パケットＰＣＫＴからヘッダ部ＨＤを抽出する。次に、ステップＳ１０４において、パケット送信部７０のＤＬＬＰ生成部７５は、抽出したヘッダ部ＨＤを含むＤＬＬＰを生成する。次に、ステップＳ１０６において、パケット送信部７０の調停部７６は、ＤＬＬＰ生成部７５から出力されるＤＬＬＰおよび送受信制御部５０内で生成された他のＤＬＬＰを調停し、調停により選択したＤＬＬＰを送信部７７に出力する。その後、処理はステップＳ１１６に移行される。
【０１５０】
一方、ステップＳ１０８において、パケット送信部７０は、各パケット生成部６０から受信したパケットＰＣＫＴを、各バッファ部７２に格納する。次に、ステップＳ１１０において、パケット送信部７０は、バッファ部７２毎にバーチャルチャネル制御を実行し、バッファ部７２に格納されたパケットＰＣＫＴのいずれかを選択し、選択したパケットＰＣＫＴを調停部７３に出力する。
【０１５１】
次に、ステップＳ１１２において、パケット送信部７０の調停部７３は、バッファ部７２からそれぞれ出力されるパケットＰＣＫＴを調停し、調停により選択したパケットＰＣＫＴを送信制御部７４に出力する。次に、ステップＳ１１４において、パケット送信部７０の送信制御部７４は、調停部７３から出力されるパケットＰＣＫＴをＴＬＰに変換して送信キューＳＱＵＥに書き込む。送信制御部７４は、送達制御を実行し、送信キューＳＱＵＥに書き込んだＴＬＰを送信部７７に出力し、処理をステップＳ１１６に移行する。
【０１５２】
ステップＳ１１６において、パケット送信部７０の送信部７７は、送信制御部７４から出力されるＴＬＰまたは調停部７６から出力されるＤＬＬＰを送信可能なデータ列に変換し、変換したデータ列を受信ノードに向けて送信し、処理を終了する。
【０１５３】
図１３は、図６に示すパケット受信部８０で受信したパケットＰＣＫＴを処理するキャッシュメモリ制御部２０の動作の一例を示す。すなわち、図１３は、データ受信装置の制御方法の一例を示す。
【０１５４】
まず、ステップＳ２００において、キャッシュメモリ制御部２０は、受信したパケットＰＣＫＴがＤＬＬＰか否かを判定し、ＤＬＬＰの場合、処理をステップＳ２０２に移行し、ＤＬＬＰでない場合（すなわち、ＴＬＰの場合）、処理をステップＳ２０６に移行する。
【０１５５】
ステップＳ２０２において、キャッシュメモリ制御部２０は、受信したＤＬＬＰが正当か否かを判定し、ＤＬＬＰが正当である場合、処理をステップＳ２０４に移行し、ＤＬＬＰが正当でない場合、処理を終了する。なお、ＤＬＬＰが正常でない場合にも、エラー応答は生成されず、ＤＬＬＰの送信元のノードにエラーは通知されない。ステップＳ２０４において、キャッシュメモリ制御部２０は、受信したＤＬＬＰに対応する前処理を実行し、処理を終了する。
【０１５６】
一方、ステップＳ２０６において、キャッシュメモリ制御部２０は、受信したＴＬＰが正当か否かを判定し、ＴＬＰが正当である場合、処理をステップＳ２０８に移行し、ＴＬＰが正当でない場合、処理をステップＳ２１６に移行する。
【０１５７】
ステップＳ２０８において、キャッシュメモリ制御部２０は、受信したＴＬＰに対応する前処理が、ＴＬＰより前に受信したＤＬＬＰに対応して実行されたか否かを判定する。前処理が完了している場合、処理はステップＳ２１２に移行され、前処理が完了していない場合、処理はステップＳ２１０に移行される。
【０１５８】
ステップＳ２１０において、キャッシュメモリ制御部２０は、ＴＬＰに対応する前処理を実行し、前処理の完了に基づいて処理をステップＳ２１２に移行する。ＤＬＬＰの受信に基づいて前処理を実行中の場合、キャッシュメモリ制御部２０は、実行中の前処理の実行を継続する。
【０１５９】
ステップＳ２１２において、キャッシュメモリ制御部２０は、前処理の完了に基づいて、ＴＬＰに対応する本処理を実行し、本処理が完了した場合、処理をステップＳ２１４に移行する。ステップＳ２１４において、キャッシュメモリ制御部２０は、受信したＴＬＰに対応する正常応答を生成し、処理をステップＳ２１８に移行する。
【０１６０】
ステップＳ２１６において、キャッシュメモリ制御部２０は、ＴＬＰが正常でないことを示すエラー応答を生成し、処理をステップＳ２１８に移行する。ステップＳ２１８において、キャッシュメモリ制御部２０は、ステップＳ２１４で生成した正常応答またはステップＳ２１６で生成したエラー応答を、ＴＬＰの送信元のノードに向けて発行し、処理を終了する。
【０１６１】
以上、図３から図１３に示す実施形態においても、図１から図２に示す実施形態と同様の効果を得ることができる。すなわち、送信ノードがヘッダ部ＨＤのみを含むＤＬＬＰをＴＬＰに先行して送信することで、受信ノードは、ＴＬＰの受信前に前処理を開始することができるため、データ受信装置２が実行する処理を従来に比べて早く完了させることできる。これにより、次の処理を早く開始することができ、データ送受信システムＳＹＳ２およびデータ送受信システムＳＹＳ２を含むサーバＳＶの処理効率を向上することができる
ＴＬＰの受信に基づいて本処理を開始するため、本処理の順序が入れ替わることを抑止することができ、正しい順序で処理を完了することができる。
【０１６２】
さらに、図３から図１３に示す実施形態では、ＣＰＵコア１０が発行するメモリアクセス要求に対するトランザクションにおいて、アクセス時間がキャッシュメモリ３０のアクセス時間より長いメモリ２００のアクセスを前処理に含ませる。これにより、フロー制御および送達制御中にメモリ２００のアクセスを実行することができ、メモリアクセス要求を契機とするトランザクションの処理時間を効果的に低減することができる。ＴＬＰの受信を待たずに本処理を開始できる場合、ＤＬＬＰの受信に基づいて本処理を開始することで、従来に比べて処理を早く完了することができる。ＤＬＬＰとＴＬＰとによりヘッダ部ＨＤを重複して送信することで、万一、ＤＬＬＰが欠落した場合にも、その後に受信するＴＬＰに基づいて処理を実行することができるため、処理の開始タイミングを早めつつ、処理を確実に実行することができる。
【０１６３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１６４】
１データ送信装置；２…データ受信装置；３…抽出部；４…保持部；５…選択部；６…送信部；７…受信部；８…保持部；９…データ処理部；１０…ＣＰＵコア；２０…キャッシュメモリ制御部；３０…キャッシュメモリ；４０…コアブロック；５０…送受信制御部；６０…パケット生成部；７０…パケット送信部；７１…ヘッダ抽出部；７２…バッファ部；７３…調停部；７４…送信制御部；７５…ＤＬＬＰ生成部；７６…調停部；７７…送信部；８０…パケット受信部；８１…受信部；８２…パケット分配部；８３ａ、８３ｂ、８３ｃ…バーチャルチャネルバッファ；８４…調停部；１００…ＣＰＵ；２００…メモリ；ＣＢＵＳ…ＣＰＵバス；ＤＴ…データ部；ＥＰ…エンドポインタ；ＨＤ…ヘッダ部；ＮＷＩＦ…ネットワークインタフェース；ＰＣＫＴ…パケット；ＲＩＮＦ…情報；ＲＰ…リードポインタ；ＳＢＵＳ…システムバス；ＳＩＮＦ…情報；ＳＱＵＥ…送信キュー；ＳＷ…スイッチ；ＹＳ１、ＳＹＳ２…送受信システム；ＷＰ…ライトポインタ
【図１】
0006631390.tif 000002
【図２】
0006631390.tif 000003
【図３】
0006631390.tif 000004
【図４】
0006631390.tif 000005
【図５】
0006631390.tif 000006
【図６】
0006631390.tif 000007
【図７】
0006631390.tif 000008
【図８】
0006631390.tif 000009
【図９】
0006631390.tif 000010
【図１０】
0006631390.tif 000011
【図１１】
0006631390.tif 000012
【図１２】
0006631390.tif 000013
【図１３】
0006631390.tif 000014