(57)【要約】  プロセッシングヒント機能の普及に貢献する。設定装置は、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置され、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える。
2015155997.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置され、
前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、
を備える設定装置。
【請求項２】
前記コンピュータは、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックスを備え、
前記Ｉ／Ｏデバイスに代わって、パケットに対してプロセッシングヒントを設定する請求項１の設定装置。
【請求項３】
前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含むプロセッシングヒント設定情報の設定要求を受け付ける設定要求受付手段と、
前記Ｉ／Ｏファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
を備える請求項１又は２の設定装置。
【請求項４】
前記デバイス情報取得手段は、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
前記デバイス確認手段は、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、
前記プロセッシングヒント格納手段は、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合、設定情報を破棄する、請求項３の設定装置。
【請求項５】
さらに、前記Ｉ／Ｏファブリックネットワーク内に備えられたＩ／Ｏデバイスのいずれかが削除された際に、削除されたＩ／Ｏデバイスの識別子を用いて、前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える
請求項１から４いずれか一に記載の設定装置。
【請求項６】
コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備えた１つ以上のコンピュータに接続され、
前記１つ以上のコンピュータからの前記設定情報の設定要求に応じて、前記設定情報保持手段に設定情報を設定する制御装置。
【請求項７】
さらに、
前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
前記Ｉ／Ｏファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
を備える請求項６の制御装置。
【請求項８】
設定情報保持手段として前記設定情報を保持可能なフォワーディングテーブルと、
前記設定手段として、前記フォワーディングテーブルに登録された設定情報に基づいて、前記パケットにプロセッシングヒントを設定するスイッチチップと、を備え、
請求項１から５いずれか一に記載の設定装置として機能するネットワークスイッチ。
【請求項９】
前記デバイス情報取得手段、デバイス確認手段及びプロセッシングヒント格納手段として、
前記コンピュータから設定情報の設定要求を受け付け、前記Ｉ／Ｏファブリックネットワークに接続されたＩ／Ｏデバイスの情報と、前記コンピュータのメモリ空間の情報を取得するためのマネジメントポートと、
パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワークに存在するかどうかを判断し、前記パケットの宛先メモリアドレスが、前記コンピュータのメモリ空間上で有効な値であるかどうかを判断し、前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、前記宛先メモリアドレスが有効な値である場合に、前記フォワーディングテーブルに、前記設定要求を受けた設定情報を格納するコントロールＣＰＵと、
を備え、請求項３の設定装置として機能するネットワークスイッチ。
【請求項１０】
コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置において、
前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持し、
前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する、
設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設定装置、制御装置、設定方法及びプログラムに関し、特に、コンピュータとＩ／Ｏ（Ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイスとの間でやり取りするパケットに対してプロセッシングヒントと呼ばれるヒント情報を付加する設定装置、制御装置、設定方法及びプログラムに関する。
【背景技術】
【０００２】
図２２は、コンピュータの一般的な構成を示したものである。図２２を参照すると、コンピュータＸ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２と、メインメモリ３と、Ｉ／Ｏコントローラ４と、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）デバイス５と、ストレージデバイス６と、を備えて構成される。【０００３】
Ｉ／Ｏコントローラ４は、コンピュータＸ１が備えるシステムバスに接続される様々なＩ／Ｏデバイスに対するアクセスを制御するコントローラであり、内部にＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０と、シリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）コントローラ４１と、を備える。Ｉ／Ｏコントローラ４は、ＣＰＵ２に対して、これらのＩ／Ｏデバイスに対するアクセス機能を提供する。【０００４】
ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５は、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルに基づくＩ／Ｏファブリックネットワークに接続されるＩ／Ｏデバイスであり、ＰＣＩ  Ｅｘｐｒｅｓｓの仕様ではエンドポイントと呼ばれる。
このようなデバイスの例として、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）のようなコンピュータネットワーク接続用のデバイスや、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）カードなどのストレージ装置接続用のデバイス、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のようなディスプレイ表示用のデバイス、サウンドカードやビデオキャプチャカードなどのＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機能を備えたデバイス、などが挙げられる。【０００５】
このＩ／Ｏファブリックネットワークを構成する要素として、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０や、エンドポイントのほかに、スイッチやブリッジと呼ばれるノードが存在する。Ｉ／Ｏファブリックネットワークは、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０をルートとし、ＰＣＩ  ＥｘｐｒｅｓｓスイッチやＰＣＩ  Ｅｘｐｒｅｓｓブリッジを中間ノード、エンドポイントをリーフとしたツリー構造をとる。Ｉ／Ｏファブリックネットワーク中に存在するこれらの要素は、ＢＤＦ（Ｂｕｓ、Ｄｅｖｉｃｅ、Ｆｕｎｃｔｉｏｎ）番号という、Ｉ／Ｏファブリックネットワーク中のバス番号、デバイス番号、ファンクション番号の組で識別される。また、これらの要素は、コンピュータＸ１のメモリ空間にマップされ、各要素に対して一意に割り当てられたメモリ領域を指すアドレスを用いて識別することも可能である。【０００６】
ストレージデバイス６は、ＡＴＡ規格に従ったストレージデバイスであり、例として、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、Ｂｌｕ−ｒａｙ（登録商標）ドライブなどが挙げられる。【０００７】
ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０は、Ｉ／Ｏファブリックネットワークの最上位階層（ルート）に位置し、ＣＰＵ２とＩ／Ｏファブリックネットワーク上の各要素と、を接続するためのインタフェースである。【０００８】
シリアルＡＴＡコントローラ４１は、ＣＰＵ２と、ＨＤＤやＳＳＤといったストレージデバイスを接続するためのコントローラである。【０００９】
これらのＩ／Ｏデバイス以外に、図２２に示していないＩ／Ｏデバイスとして、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）デバイスや、ＰＳ／２デバイス、シリアルポートデバイス、パラレルポートデバイス、などが存在する。Ｉ／Ｏコントローラ４は、これらの様々なＩ／ＯデバイスをコンピュータＸ１に接続するためのコントローラを備えている。【００１０】
図２３は、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０と、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５とを、拡張ネットワーク（Ｅｘｔｅｎｓｉｏｎ  Ｎｅｔｗｏｒｋ）７を用いて接続したコンピュータＸ１ｂを示したものである。もともと、Ｉ／Ｏファブリックネットワークは、コンピュータＸ１の筐体の内部に閉じ、コンピュータ１の基板上にＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０のチップや、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチのチップをプリント配線で接続する形で実現されてきた。しかしながら、このＩ／Ｏファブリックネットワークを、イーサネット（登録商標）などのコンピュータネットワークのように、ネットワークケーブルとネットワークスイッチから構成される拡張ネットワーク７で実現する方式が登場してきている。このようなコンピュータＸ１ｂの場合、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５は、コンピュータＸ１ｂの筐体の中に備えられる必要はなく、拡張ネットワーク７越しに設置することができる。【００１１】
図２４はＰＣＩ  Ｅｘｐｒｅｓｓプロトコルのプロトコルスタックを示したものである。図２４を参照すると、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルスタックは、主に、トランザクションレイヤ４２と、データリンクレイヤ４４と、物理レイヤ４６と、の３層から構成される。ＣＰＵ２やＰＣＩ  Ｅｘｐｒｅｓｓデバイス５から、Ｉ／Ｏファブリックネットワークにパケットを送信する際には、パケットの宛先などに基づいて、トランザクションレイヤ４２でＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐｒｏｔｏｃｏｌ）パケットが構築され、データリンクレイヤ４４に渡される。【００１２】
データリンクレイヤ４４では、ＴＬＰパケットの先頭にシーケンス番号などの情報が、ＴＬＰパケットの最後尾にＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）が付加され、ＤＬＬＰ（Ｄａｔａ  Ｌｉｎｋ  Ｌａｙｅｒ  Ｐｒｏｔｏｃｏｌ）パケットが構築される。構築されたＤＬＬＰパケットは物理レイヤ４６に渡される。【００１３】
物理レイヤ４６では、ＤＬＬＰパケットをエンコーディング、及びシリアル化し、Ｉ／Ｏファブリックネットワークにパケットを送出する。ＰＣＩ  Ｅｘｐｒｅｓｓにおいては、エンコーディング時に、ＰＣＩ  Ｅｘｐｒｅｓｓのバージョンに応じて、８ｂ／１０ｂエンコーディングや、１２８ｂ／１３０ｂエンコーディングが実行される（例えば、非特許文献１の１８８〜２０２頁参照）。【００１４】
パケットの受信側では、下位レイヤから処理が行われる。まず、物理レイヤ４６で、パケットのデコーディングが行われ、データリンクレイヤ４４にＤＬＬＰパケットが渡される。データリンクレイヤ４４では、ＣＲＣを用いたエラーチェックなどを行い、ＴＬＰパケットがトランザクションレイヤ４２に渡される。そして、トランザクションレイヤ４２を経由して、宛先のＣＰＵ２やＰＣＩ  Ｅｘｐｒｅｓｓデバイス５に、データが届けられる。【００１５】
図３は、Ｉ／Ｏファブリックネットワーク中を流れるＴＬＰパケットのフォーマットの概要を示したものである。なお、図３の例では３２ビット分を一行で表記している。また、図３の上部の数字は、８ビットを単位としたバイト位置（＋０〜＋３）と、各バイト位置内でのビット位置（７〜０）を示している。また、図３の左部の数字は各行の先頭バイト位置を示している。図３を参照すると、ＴＬＰパケットは、ＴＬＰプリフィックス５０と、ＴＬＰヘッダ５２（以降、「ＴＬＰヘッダ」と表記する）と、データ５４（以降、「ＴＬＰデータ」と表記する）と、ＴＬＰダイジェスト５６と、から構成される。ただし、ＴＬＰプリフィックス５０と、ＴＬＰダイジェスト５６はオプションである。【００１６】
ＴＬＰパケットは、Ｉ／Ｏファブリックネットワーク中を、転送先のメモリアドレス、またはＢＤＦ番号に基づいて転送される。図６は、メモリアドレスで転送されるＴＬＰパケットのＴＬＰヘッダ５２の一例を示したものである。また、図７は、ＢＤＦ番号に基づいて転送されるＴＬＰパケットのＴＬＰヘッダ５２の一例を示したものである。【００１７】
メモリアドレスで転送するＴＬＰパケットの場合（図６参照）、アドレス［３１：２］フィールド５２４に、ＴＬＰパケットの転送先となるメモリアドレスを格納し、リクエスタＩＤフィールド５２６に、ＴＬＰパケットの送信元となるＰＣＩ  Ｅｘｐｒｅｓｓデバイス５などの識別子を格納する。このリクエスタＩＤは典型的にはＢＤＦ番号である。【００１８】
また、ＢＤＦ番号で転送するＴＬＰパケットの場合（図７参照）、ＢＤＦ番号フィールド５２８に、ＴＬＰパケットの転送先となるＢＤＦ番号を格納し、リクエスタＩＤフィールド５２６に、ＴＬＰパケットの送信元となるＰＣＩ  Ｅｘｐｒｅｓｓデバイス５などの識別子を格納する。【００１９】
ところで、ＰＣＩ  Ｅｘｐｒｅｓｓの仕様において、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５が、メモリアドレスを宛先として指定し、送信するＴＬＰパケットにヒントを付加する機能が定義されている。この機能はＴＬＰ  Ｐｒｏｃｅｓｓｉｎｇ  Ｈｉｎｔｓ（ＴＰＨ）と呼ばれ、ＰＣＩ  Ｅｘｐｒｅｓｓ  ２．１から仕様に取り込まれた。ＰＣＩ  Ｅｘｐｒｅｓｓ  ２．１の仕様については非特許文献１に詳しい。【００２０】
ＴＰＨは、ＴＬＰプリフィックス５０とＴＬＰヘッダ５２の特定のフィールドに、ＴＬＰパケットの転送先のメモリアドレスに基づいて、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５が、ステアリングタグと呼ばれる情報を書き込む機能である。【００２１】
図４は、ＴＬＰプリフィックス５０のフォーマットの一例を示したものである。また、図５は、ＴＬＰヘッダ５２のフォーマットの一例を示したものである。図４のＳＴ［１５：８］フィールド５０２と、図５のＳＴ［７：０］フィールド５２２が、ステアリングタグを書き込む領域である。なお、ＳＴ［１５：８］フィールド５０２はオプションである。また、プロセッシングヒントを持つＴＬＰヘッダであることを示すためには、図５のＴＨフィールド５３４に１がセットされる。【００２２】
このステアリングタグをどのように扱うかは、ＴＬＰパケットを受信する側のデバイス（ＣＰＵ２やＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０）次第である。ＴＰＨと同様の仕組みは既にコンピュータ製品に搭載されている。例えば、ＳＴ［７：０］フィールド５２２を利用して、Ｉｎｔｅｌ社はＤＣＡ（Ｄｉｒｅｃｔ  Ｃａｃｈｅ  Ａｃｃｅｓｓ）という機能を、同社のＣＰＵやＩ／Ｏコントローラに搭載している。このＤＣＡとは、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５からのＴＬＰパケットに含まれるＴＬＰデータ５４を、ＣＰＵ２がＳＴ［７：０］フィールド５２２の情報（タグ情報）に基づいて、キャッシュメモリにハードウェアプリフェッチするものである。【００２３】
例えば、ＤＣＡに対応したＮＩＣは、ＴＬＰパケットのＳＴ［７：０］フィールド５２２にタグ情報をセットし、ＣＰＵ２やＩ／Ｏコントローラ４に向けて、このＴＬＰパケットを送信する。非特許文献２の７．５節によると、ＤＣＡの場合、タグ情報には、（１）ＤＣＡが有効か無効かを示すフラグとターゲットとなるキャッシュを示すＩＤ、あるいは（２）ＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）ＩＤに基づくターゲットＣＰＵのＩＤ、のいずれかが格納される。【００２４】
また、非特許文献２の８．２．３．１１節によると、Ｉｎｔｅｌ  ８２５９９  １０Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ（登録商標）  Ｃｏｎｔｒｏｌｌｅｒでは、（１）メインメモリ３に書き戻す受信ディスクリプタのＴＬＰパケットに対してタグ情報を付加するモード、（２）受信パケットのヘッダバッファへのＴＬＰパケットにタグ情報を付加するモード、（３）受信したイーサネットパケットのペイロードに対してタグ情報を付加するモード、が存在する。【００２５】
このように、ステアリングタグのフィールドに書き込む情報は、ＣＰＵ２やＩ／Ｏコントローラ４、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５に応じて、様々な意味を持つ。つまり、コンピュータＸ１ごとに、ステアリングタグのフィールドフォーマット、ステアリングタグのフィールドの各ビットが持つ意味が異なる。【００２６】
また、ＰＣＩ  Ｅｘｐｒｅｓｓの仕様では、プロセッシングヒントを付加したデータに対するアクセスパターンに関するヒントを与えることも規定されており、この場合、図６のＰＨフィールド５３２に、アクセスパターンに関するヒントを設定する。【００２７】
特許文献１には、Ｉ／Ｏファブリックネットワーク中の要素が、ＴＬＰパケットを変更する技術の一例が開示されている。特許文献１では、Ｉ／Ｏファブリックネットワーク中の要素が、ＴＬＰヘッダ５２に含まれる情報からテーブルを参照し、テーブルから取得した情報をもとに、ＴＬＰヘッダ５２を書き換えている。【００２８】
より具体的には、特許文献１のＩ／Ｏシステムは、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０と、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５との間に、ＴＬＰヘッダ５２内の、ＴＬＰパケットの転送先を示すアドレス情報を書き換える手段（以降、「ＴＬＰヘッダ書き換え手段」と表記する）と、前記アドレス情報をどのように書き換えるかを示したルールを格納する手段（以降、「ＴＬＰヘッダ書き換えルール格納手段」と表記する）と、を備える。ＴＬＰヘッダ書き換えルール格納手段には、ＴＬＰヘッダに含まれるアドレス情報をキーとして与えることで、変更後のアドレス情報を引くことができる。これにより、ＣＰＵ２からＰＣＩ  Ｅｘｐｒｅｓｓデバイス５、あるいはＰＣＩ  Ｅｘｐｒｅｓｓデバイス５からＣＰＵ２へのＴＬＰパケットを、前記ＴＬＰパケット書き換え手段が、ＴＬＰヘッダ書き換えルール格納手段から変更後のアドレス情報を取得し、ＴＬＰヘッダ５２を書き換える。【００２９】
また、特許文献２には、ＳＴ［７：０］フィールド５２２のＮビットをＣＰＵ２のキャッシュメモリなどの記憶階層の各階層に対応させ、また、ＳＴ［１５：８］フィールド５０２のＮビットをビットマスクとして使用し、このビットマスクをＰＣＩ  Ｅｘｐｒｅｓｓデバイス５以外のハードウェアデバイス、またはオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：ＯＳ）などのソフトウェアが変更する技術が記載されている。【００３０】
特許文献２によると、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５が指定したビットマスク値を、ＯＳまたはＰＣＩ  Ｅｘｐｒｅｓｓデバイス５以外のハードウェアデバイスがＣＰＵ２のキャッシュミス率などに応じて書き換える。そして、書き換え後のビットマスクとＳＴ［７：０］フィールド５２２と論理積の演算を行うことで、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５から送信されたデータを格納する記憶階層を指定することができる。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】国際公開第２００９／０２５３８１号
【特許文献２】米国特許出願公開第２０１３／０１７３８３４号明細書
【非特許文献】
【００３２】
【非特許文献１】「ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  ２．１」、２０１１年発行、著者ＰＣＩ−ＳＩＧ（登録商標、Ｔｈｅ  Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）、第１８８頁〜第２０２頁
【非特許文献２】「Ｉｎｔｅｌ  ８２５９９  １０  Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｄａｔａｓｈｅｅｔ  Ｒｅｖｉｓｉｏｎ  ２．８」、２０１３年発行、著者Ｉｎｔｅｌ、第７節、及び、第８．２．３．１１節
【発明の概要】
【発明が解決しようとする課題】
【００３３】
以下の分析は、本発明の発明者によって与えられたものである。例えば、ＰＣＩ  Ｅｘｐｒｅｓｓにおけるプロセッシングヒント機能について、Ｉ／Ｏデバイスがプロセッシングヒントの機能を持っていないと、同機能を利用することができない。【００３４】
その理由は、プロセッシングヒントを与える機能が、個々のＩ／Ｏデバイスに提供されるからである。例えば、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルに対応したＩ／Ｏデバイスと一口にいっても、古いバージョンのＰＣＩ  Ｅｘｐｒｅｓｓに対応したＰＣＩ  Ｅｘｐｒｅｓｓデバイスは、プロセッシングヒント機能を備えていない。また、新しいバージョンのＰＣＩ  Ｅｘｐｒｅｓｓに対応したＰＣＩ  Ｅｘｐｒｅｓｓデバイスでも、ＴＰＨの機能を実装していない場合がある。これらの場合、ＴＰＨが設定されたＴＬＰパケットを扱えるＣＰＵ２やＩ／Ｏコントローラ４はＴＰＨによる機能を利用できないことになる。【００３５】
とりわけ、拡張ネットワーク経由でＩ／Ｏデバイスが接続される環境を想定すると、上記のような状況は多数生じることになる。【００３６】
本発明の目的は、プロセッシングヒント機能の普及に貢献できる設定装置、制御装置、設定方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００３７】
第１の視点によれば、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置され、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える設定装置が提供される。【００３８】
第２の視点によれば、上記した設定装置に対し、設定情報を設定する制御装置が提供される。【００３９】
第３の視点によれば、上記した設定装置として機能するネットワークスイッチが提供される。【００４０】
第４の視点によれば、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置において、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持するステップと、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定するステップと、を含む設定方法が提供される。
本方法は、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置という、特定の機械に結びつけられている。【００４１】
第５の視点によれば、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置を構成するコンピュータに、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する処理と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００４２】
本発明によれば、プロセッシングヒント機能の普及に貢献することが可能となる。
【図面の簡単な説明】
【００４３】
【図１】本発明の第１の実施形態の構成を示した図である。
【図２】図１のプロセッシングヒント設定モジュールの構成を示した図である。
【図３】Ｉ／Ｏファブリックネットワーク中を流れるＴＬＰパケットのフォーマットの概要を示した図である。
【図４】ＴＬＰプリフィックスのフォーマットの一例を示した図である。
【図５】ＴＬＰヘッダのフォーマットの一例を示した図である。
【図６】メモリアドレスで転送されるＴＬＰパケットのヘッダの一例を示した図である。
【図７】ＢＤＦ番号に基づいて転送されるＴＬＰパケットのヘッダの一例を示した図である。
【図８】図２のプロセッシングヒント設定情報保持部に保持されるプロセッシングヒント設定情報の一例を示した図である。
【図９】図２のプロセッシングヒント設定情報保持部に保持されるプロセッシングヒント設定情報の別の例を示した図である。
【図１０】図１のプロセッシングヒント制御モジュールの構成を示した図である。
【図１１】本発明の第１の実施形態の動作を表したシーケンス図である。
【図１２】本発明の第１の実施形態のプロセッシングヒント設定装置の動作を示したフローチャートである。
【図１３】本発明の第２の実施形態の構成を示した図である。
【図１４】図１３のプロセッシングヒント設定モジュールの構成を示した図である。
【図１５】図１３のプロセッシングヒント制御モジュールの構成を示した図である。
【図１６】本発明の第２の実施形態のデバイス情報保持部が保持するＩ／Ｏデバイス情報の一例を示したものである。
【図１７】本発明の第２の実施形態のデバイス情報保持部が保持するメモリ空間に関する情報の一例を示したものである。
【図１８】本発明の第２の実施形態の動作（デバイス登録時）を表したシーケンス図である。
【図１９】本発明の第２の実施形態の動作（デバイス情報更新時）を表したシーケンス図である。
【図２０】本発明の第２の実施形態の動作（プロセッシングヒント設定準備）を表したシーケンス図である。
【図２１】本発明の第３の実施形態の構成を示したものである。
【図２２】コンピュータの一般的な構成を示したものである。
【図２３】拡張ネットワークに接続されたコンピュータの一般的な構成を示したものである。
【図２４】ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルのプロトコルスタックを示した図である。
【発明を実施するための形態】
【００４４】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００４５】
本発明は、その一実施形態において、コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置されたプロセッシングヒント設定装置にて実現できる。より具体的には、このプロセッシングヒント設定装置は、設定情報保持手段（図１のプロセッシングヒント制御モジュール８２参照）と、プロセッシングヒント設定手段（図１のプロセッシングヒント設定モジュール８０参照）と、を備える。設定情報保持手段は、コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するためのプロセッシングヒント設定情報を保持する。さらに、プロセッシングヒント設定手段は、このプロセッシングヒント設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する。
【００４６】
上記構成を備えることにより、Ｉ／Ｏデバイスがプロセッシングヒントの機能を持っていない場合においてもプロセッシングヒント機能を利用することが可能となる。その理由は、プロセッシングヒント設定装置が、Ｉ／Ｏデバイスに代わってプロセッシングヒントを設定するよう構成したことにある。
【００４７】
［第１の実施形態］
続いて、本発明の第１の実施形態について、図面を参照して詳細に説明する。図１は、本発明の第１の実施形態の構成を示した図である。図１を参照すると、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５と、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０と、の間に、プロセッシングヒント設定装置８を挿入した構成が示されている。なお、図１においては、図２２、図２３と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
また、コンピュータ１は、図２２、２３のコンピュータＸ１、Ｘ１ｂと同様の構成としているが、このことは、コンピュータ１の構成を図１の構成に限定することを意図するものではない。
【００４８】
プロセッシングヒント設定装置８は、プロセッシングヒント設定モジュール８０と、プロセッシングヒント制御モジュール８２と、を備えて構成される。
【００４９】
プロセッシングヒント設定モジュール８０は、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５から送られてきたＴＬＰパケットに対し、プロセッシングヒントの書き換え、付与、あるいは削除を行うモジュールである（前述の「プロセッシングヒント設定手段」に相当）。プロセッシングヒントの書き換え、付与、あるいは削除は、プロセッシングヒント制御モジュール８２が指定するプロセッシングヒント設定情報に従う。
【００５０】
図２は、プロセッシングヒント設定モジュール８０の構成を示したものである。図２を参照すると、プロセッシングヒント設定モジュール８０は、プロセッシングヒント書き換え部８０２と、プロセッシングヒント設定情報保持部８０４と、チェックコード再計算部８０５と、を含んで構成される。
【００５１】
プロセッシングヒント書き換え部８０２は、プロセッシングヒント設定情報保持部８０４に格納されるプロセッシングヒント設定情報に従って、ＴＬＰパケットに対し、プロセッシングヒントを設定する。ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５から、あるいは、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５へのＴＬＰパケットが、プロセッシングヒント設定モジュール８０に入力される。プロセッシングヒント設定モジュール８０に入力されるたびに、プロセッシングヒント書き換え部８０２が、プロセッシングヒント設定情報保持部８０４を参照し、適切なプロセッシングヒントを付与する。このとき、プロセッシングヒント書き換え部８０２は、もともとプロセッシングヒントが付与されていなかったＴＬＰパケットのＴＨフィールド５３４（図５〜図７の符号５３４参照）の値を１にセットする。さらに、プロセッシングヒントを書き換える、または付与するのと同様に、プロセッシングヒント書き換え部８０２にて、ＴＬＰパケットのＰＨフィールド５３２（図６参照）の値を変更することも可能である。
【００５２】
ここで、ＰＣＩ  Ｅｘｐｒｅｓｓにおいては、ＴＬＰパケットに対して、データリンクレイヤでＴＬＰパケットのビットエラーを検出するためのＣＲＣが付与される。そのため、プロセッシングヒント書き換え部８０２は、ＴＬＰパケットに設定されていたプロセッシングヒントの内容を変更、あるいは削除した場合、チェックコード再計算部８０５で、ＣＲＣを再計算し、ＴＬＰパケットに付与する。またはＴＬＰパケットにプロセッシングヒントを付与し、ＴＨフィールドを書き換えた場合、チェックコード再計算部８０５で、ＣＲＣを再計算し、ＴＬＰパケットに付与する。なお、ＴＬＰダイジェストが存在すれば、ＴＬＰレイヤでもＣＲＣが付与されるため、この場合は、ＴＬＰレイヤのＣＲＣの再計算も必要である。
【００５３】
また、プロセッシングヒント書き換え部８０２は、プロセッシングヒント制御モジュール８２と通信するための制御インタフェース８０６を備える。
【００５４】
プロセッシングヒント設定情報保持部８０４は、プロセッシングヒントをどのような条件で設定するかを示したプロセッシングヒント設定情報を保持する。例えば、プロセッシングヒント設定情報は、アドレス［３１：２］フィールド５２４で指定される領域に対して、プロセッシングヒントを付与する。具体的には、あるリクエスタＩＤフィールド５２６で指定されるＰＣＩ  Ｅｘｐｒｅｓｓデバイス５から送信されるＴＬＰパケットにプロセッシングヒントが付与される。また、別のプロセッシングヒント設定情報の例として、ＴＬＰヘッダ５２に含まれる長さフィールド５３０が、ある一定値以上の値を持つＴＬＰパケットに対して、プロセッシングヒントを付与する、というものも考えられる。
【００５５】
図８は、プロセッシングヒント設定情報保持部８０４に保持されるプロセッシングヒント設定情報の一例を示した図である。図８を参照すると、リクエスタＩＤ列８０４２と、宛先アドレス列８０４６と、ＴＰＨ値列８０４８と、ＰＨ値列８０４９と、を対応付けたデータ構造が示されている。ＴＬＰパケットのリクエスタＩＤ値と、ＴＬＰパケットの宛先アドレス値を条件（マッチング条件）とし、その条件にマッチしたＴＬＰパケットに対して付与するＴＰＨ値とＰＨ値を取得する。また、リクエスタＩＤ値や宛先アドレス値をワイルドカードとすることも可能である。
【００５６】
また、宛先アドレス値を、メモリアドレス０ｘ１０００００００（０ｘは１６進数を示す）から１ＫＢｙｔｅ分の領域のように、ある一定のメモリ領域を示すように指定することも可能である。この場合、プロセッシングヒント設定情報保持部８０４に、メモリアドレスの下限値と上限値が登録される、または、メモリアドレスの下限値と、マスク値が登録される。例として、０ｘ１０００００００から１ＫＢｙｔｅ分の領域を指定したプロセッシングヒント設定情報の場合を考える。前者の方法であれば、メモリアドレスの下限値として０ｘ１０００００００を、メモリアドレスの上限値として０ｘ１００００３ｆｆが登録される。そして、プロセッシングヒント書き換え部８０２が、プロセッシングヒント設定情報保持部８０４を参照する際、リクエスタＩＤが一致する行を抽出しＴＬＰパケットに含まれる宛先メモリアドレスが、抽出したプロセッシングヒント設定情報のメモリアドレスの上限値と下限値の間に収まっているか比較する。
【００５７】
一方、後者の方法であれば、メモリアドレスの下限値として、０ｘ１０００００００を登録し、マスク値として０ｘｆｆｆｆｆｃ００が登録される。そして、プロセッシングヒント書き換え部８０２が、プロセッシングヒント設定情報保持部８０４を参照する際、リクエスタＩＤが一致する行を抽出する。そして、プロセッシングヒント書き換え部８０２が、ＴＬＰパケットに含まれる宛先メモリアドレスと、抽出したプロセッシングヒント設定情報に含まれるマスク値でビット単位の論理積をとった結果を用いて下限値と一致するか比較する。比較の対象は、抽出したプロセッシングヒント設定情報に含まれるメモリアドレスの下限値である。
【００５８】
これらの方法により、一定範囲のメモリ領域を示す宛先アドレスをプロセッシングヒント設定情報保持部８０４に保持させることが可能となる。
【００５９】
リクエスタＩＤ列８０４２は、ＴＬＰパケットに設定されているリクエスタＩＤフィールド５２６の値である。宛先アドレス列８０４６は、ＴＬＰパケットの宛先アドレスを示す値である。具体的には、３２ビットアドレスの場合、ＴＬＰパケットのアドレス［３１：２］フィールド５２４に設定される値が格納される。ＴＰＨ値列８０４８は、条件にマッチしたＴＬＰパケットに設定するＴＰＨ値が格納される。ＴＰＨの場合、値が０の場合はＴＰＨが無効を示す。図８の例では、リクエスタＩＤがＹのプロセッシングヒント設定情報は、もともとＴＬＰパケットに設定されていたＴＰＨを無効とする内容が定められている。ＰＨ値列８０４９には、条件にマッチしたＴＬＰパケットに設定するＰＨ値が格納される。
【００６０】
図９は、プロセッシングヒント設定情報保持部８０４に保持されるプロセッシングヒント設定情報の別の一例を示した図である。図９のプロセッシングヒント設定情報の例では、ＴＬＰパケットの長さを条件とし、その条件にマッチしたＴＬＰパケットに対して、ＴＰＨ値列８０４８で指定されたＴＰＨを設定する内容となっている。より具体的には、図９の第１のプロセッシングヒント設定情報では、ＴＬＰパケットが６４バイト以下の場合に、ＴＰＨとして０ｘ１１２２（「０ｘ」は１６進数であることを示す）を設定する内容が規定されている。また、図９の第２のプロセッシングヒント設定情報では、ＴＬＰパケットサイズが６４バイトより大きい場合にＴＰＨを無効とする内容（０ｘ００００）が規定されている。この形式の場合、ＴＬＰパケットの宛先を示す情報が、メモリアドレスであることを確認し、宛先がメモリアドレスで表現されたＴＬＰパケットのみを対象とすることができる。ＴＬＰパケットの宛先を示す情報がメモリアドレスかＢＤＦ番号かは、Ｔｙｐｅフィールド５３６を参照することで確認することができる。Ｔｙｐｅフィールド５３６がメモリリクエストか、Ｉ／Ｏリクエストを示すＴＬＰパケットの場合、宛先がメモリアドレスで表現されている。
【００６１】
ここで、ＴＰＨとしてＳＴ［１５：８］フィールド５０２と、ＳＴ［７：０］フィールド５２２との、両方のフィールドを使用する場合は、図８、図９のＴＰＨ値列８０４８に格納される値は、それに合わせて、１６ビット分の値となる。また、ＴＰＨを設定する条件として、ＴＬＰパケットの任意のフィールドの値を使用することは、図８、図９のプロセッシングヒント設定情報の例と同様に可能である。
【００６２】
プロセッシングヒント制御モジュール８２は、プロセッシングヒント設定モジュール８０が、どのＴＬＰパケットに対し、どのようなプロセッシングヒントを設定するかを指示するモジュールである（前述の「設定情報保持手段」に相当）。
【００６３】
図１０は、プロセッシングヒント制御モジュール８２の構成を示したものである。図１０を参照すると、制御インタフェース８０６と、プロセッシングヒント構築部８２２と、プロセッシングヒント設定要求受付部８２４と、デバイス情報取得部８２６と、を備えた構成が示されている。
【００６４】
プロセッシングヒント制御モジュール８２は、外部モジュールからプロセッシングヒントの設定要求を受けることで、プロセッシングヒント設定情報を構築し、構築したプロセッシングヒント設定情報をプロセッシングヒント設定情報保持部８０４に設定する。外部モジュールの例として、コンピュータ１上で動くＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が挙げられる。ＯＳがＣＰＵ２の使用率やキャッシュヒット率などに基づいて、あるいは、あるＰＣＩ  Ｅｘｐｒｅｓｓデバイス５を使用するプロセスを動かす際に、プロセッシングヒント制御モジュール８２に対し、プロセッシングヒントの設定要求を発行する。プロセッシングヒントの設定要求は、そのＰＣＩ  Ｅｘｐｒｅｓｓデバイス５からのＴＬＰパケットのステアリングタグが、このプロセスが実行されるＣＰＵ２を指定するものである。
【００６５】
例えば、プロセッシングヒントによって、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５からのＴＬＰパケットをＣＰＵ２のキャッシュメモリに格納するかどうかを決められる場合がある。この場合、キャッシュヒット率が悪化した際に、ＣＰＵ２へのすべてのＴＬＰパケットのプロセッシングヒントを無効にするための制御をＯＳから行うことが考えられる。このようなキャッシュヒット率は、ＣＰＵ２のパフォーマンスカウンタを参照することで取得することができる。
【００６６】
また、別の例として、ＧＰＵを使用するプロセスが起動した際に、そのプロセスが稼動するＣＰＵ２のキャッシュメモリに対して、ＧＰＵからのＴＬＰパケットを直接格納するように、プロセッシングヒントを付与するための要求を発行することが考えられる。ＧＰＵからのＴＬＰパケットを直接格納するとは、キャッシュインジェクションに相当する。ＧＰＵ以外にも、ＮＩＣでも同様のことが可能である。すなわち、複数のＮＩＣと複数のＣＰＵ２を備えるコンピュータ１において、あるＮＩＣから受信したイーサネットパケットを特定のＣＰＵ２のキャッシュメモリにインジェクションするように、プロセッシングヒントを設定することも考えられる。
【００６７】
プロセッシングヒント設定要求受付部８２４は、外部モジュールからプロセッシングヒント設定情報の設定要求を受け付けるためのインタフェースである（設定要求受付手段に相当）。この設定要求には、少なくとも、ＴＬＰパケットの送信元の識別子と、ＴＬＰパケットの宛先メモリアドレスと、どのようなプロセッシングヒントを付与するかを示す情報と、が含まれる。これら識別子に関してはワイルドカードでもよい。典型的には、ＴＬＰパケットの送信元の識別子は、ＢＤＦ番号である。
【００６８】
また、設定するプロセッシングヒント設定情報が、ある一定範囲のメモリアドレス領域宛のＴＬＰパケットに対するものであった場合、宛先メモリアドレスの代わりに、メモリ領域の上限値と下限値、あるいは下限値とマスク値を与えることも考えられる。
【００６９】
どのようなプロセッシングヒントを付与するかを示す情報の例として、ＴＬＰパケットの転送先デバイスが既定するプロセッシングヒントのフォーマットに合わせたビット列を用いることが考えられる。
【００７０】
設定要求の別の例として、ＴＬＰパケットの送信元、あるいは宛先以外の情報、例えばＴＬＰパケットの長さなどに応じてプロセッシングヒントの設定を行う場合、設定要求には、そのような情報（長さなど）が含まれる。以降では、設定要求にＴＬＰパケットの宛先メモリアドレスを与えるものとして説明するが、このことは、設定要求に含める情報が、これに限定されることを意図するものではない。
【００７１】
デバイス情報取得部８２６は、コンピュータ１のメモリ空間に関する情報と、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５のＢＤＦ番号又は使用するメモリ領域と、Ｉ／Ｏファブリックネットワークのツリー構造に関する情報を外部モジュールから取得するモジュールである。なお、Ｉ／Ｏファブリックネットワークのツリー構造とは、ＢＤＦ番号に基づくツリーの構造である。デバイス情報取得部８２６は、デバイス情報取得手段に相当する。
【００７２】
これらの情報は、例えば、コンピュータ１上で稼動するＯＳから取得することができ、ツリー構造に関する情報であれば、Ｌｉｎｕｘ（登録商標）においてはｌｓｐｃｉコマンドによる出力などにより得られる。また、これらの情報は、メモリ空間に関する情報であれば、／ｐｒｏｃ／ｉｏｍｅｍファイルを読み込むことなどで得られる。この場合、プロセッシングヒント制御モジュール８２は、コンピュータ１上で稼動するＯＳとコンピュータネットワークなどを介して通信する。典型的には、プロセッシングヒント制御モジュール８２は、コンピュータ１上で稼動するＯＳの一部、あるいはこのＯＳ上で稼動するソフトウェアプログラムとして実現することができる。さらに、プロセッシングヒント制御モジュール８２は、プロセス間通信やシステムコールを使用することで、上記情報を取得することができる。
【００７３】
また、デバイス情報の取得方法の別の例として、デバイス情報を管理するデータベースを用いることが考えられる。ＯＳはデバイス情報をこのデータベースに登録し、デバイス情報取得部８２６は、このデータベースからデバイス情報を取得する。
【００７４】
プロセッシングヒント構築部８２２は、プロセッシングヒント設定要求受付部８２４が受け付けたプロセッシングヒント設定要求に基づいて、プロセッシングヒント設定情報保持部８０４に設定するプロセッシングヒント設定情報を構築する。
【００７５】
プロセッシングヒント構築部８２２は、プロセッシングヒント設定要求に含まれる、ＴＬＰパケットの送信元デバイスの識別子（ＢＤＦ番号）を用いて、デバイス情報取得部８２６に、そのようなデバイスが存在するかどうかを問い合わせる。また、ＴＬＰパケットの宛先メモリアドレスについても、デバイス情報取得部８２６が取得する、コンピュータ１のメモリ空間の情報に基づいて、そのメモリアドレスで示される領域が有効かどうかを確認する。従って、プロセッシングヒント構築部８２２は、デバイス確認手段及びプロセッシングヒント格納手段としても機能する。
【００７６】
なお、上記した説明中でも触れたように、図１、２、１０等に示したプロセッシングヒント設定装置８の各部（処理手段）は、同装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現できる。
【００７７】
[動作の説明]
次に、図面を参照して、本実施の形態の全体の動作について詳細に説明する。
【００７８】
図１１は、コンピュータ１上で稼動するＯＳを外部モジュールとしたときの本実施形態の動作を表したシーケンス図である。図１１の例では、ＯＳからの要求に応じて、プロセッシングヒント設定装置が、プロセッシングヒント設定情報を構築し、プロセッシングヒントをプロセッシングヒント設定情報保持部８０４に設定することになる。
【００７９】
図１１を参照すると、まず、ＯＳは、プロセッシングヒント制御モジュール８２に対して、プロセッシングヒント設定情報の設定要求（プロセッシングヒント設定要求）を発行する（図１１のステップＳ８２０）。この要求には、少なくとも、ＴＬＰパケットの送信元の識別子と、ＴＬＰパケットの宛先メモリアドレスと、設定するプロセッシングヒントと、に関する情報が含まれる。
【００８０】
次に、プロセッシングヒント制御モジュール８２は、ＯＳに対して、デバイス情報要求を発行する（図１１のステップＳ８２２）。
【００８１】
次に、ＯＳは、プロセッシングヒント制御モジュール８２に対して、デバイス情報を送信する。このデバイス情報は、例えば、Ｌｉｎｕｘであればｌｓｐｃｉコマンドで取得できる情報や、／ｐｒｏｃ／ｉｏｍｅｍファイルに含まれる情報から構成される。
【００８２】
次に、プロセッシングヒント制御モジュール８２は、図１１のステップＳ８２０で受け取ったプロセッシングヒント設定情報の設定要求に含まれる情報と、図１１のステップＳ８２４で取得したデバイス情報から、プロセッシングヒント設定情報を構築する。プロセッシングヒント設定情報の構築は、図１１のステップＳ８２６で示される。
【００８３】
ここで、図８や図９の例に示した、プロセッシングヒント設定情報保持部８０４に保持されるプロセッシングヒント設定情報またはこれを含む制御メッセージが生成される。また、プロセッシングヒント制御モジュール８２は、ＯＳから受け取ったプロセッシングヒント設定要求に含まれる、ＴＬＰパケットの送信元の識別子と、ＴＬＰパケットの宛先メモリアドレスが有効かどうかチェックする。これらのチェックで、該当するデバイスが存在しない場合、プロセッシングヒント制御モジュール８２は、プロセッシングヒントを構築せずに、処理を終了する。
【００８４】
次に、プロセッシングヒント制御モジュール８２は、図１１のステップＳ８２６で構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール８０に送信する（図１１のステップＳ８２８）。
【００８５】
プロセッシングヒント設定モジュール８０は、プロセッシングヒント制御モジュール８２から受信したプロセッシングヒント設定情報を、プロセッシングヒント設定情報保持部８０４に登録する（図１１のステップＳ８２９）。
【００８６】
図１２は、図１１のステップＳ８２２からステップＳ８２８までの、プロセッシングヒント制御モジュール８２の動作を示したフローチャートである。
【００８７】
まず、プロセッシングヒント制御モジュール８２は、ＯＳ（外部モジュール）にデバイス情報要求を発行する（図１２のステップＦ８２２）。
【００８８】
次に、プロセッシングヒント制御モジュール８２は、ＯＳからデバイス情報を取得する（図１２のステップＦ８２４のＹｅｓ）。プロセッシングヒント制御モジュール８２は、ＯＳから受信したプロセッシングヒント構築要求に含まれる、ＴＬＰパケットの送信元、宛先メモリアドレスが有効かどうかをチェックする（図１２のステップＦ８２５）。この際に、デバイス情報に、ＴＬＰパケットの送信元識別子、送信先メモリアドレスが有効かどうかを確認する。
【００８９】
図１２のステップＦ８２５において、ＴＬＰパケットの送信元識別子に相当するデバイスが存在しない場合、プロセッシングヒント制御モジュール８２は、プロセッシングヒント設定情報を構築せずに、処理を終了する。あるいは、送信先メモリアドレスの値が無効の場合（図１２のステップＦ８２５の「無効」）、プロセッシングヒント制御モジュール８２は、プロセッシングヒント設定情報を構築せずに、処理を終了する。
【００９０】
一方、図１２のステップＦ８２５において、該当する送信もデバイスが存在し、かつ宛先アドレスが有効の場合（図１２のステップＦ８２５の「有効」）、次のように対応する。すなわち、プロセッシングヒント制御モジュール８２は、ＯＳからのプロセッシングヒント構築要求と、図１２のステップＦ８２４で受信したデバイス情報を元に、プロセッシングヒント設定情報を構築する（図１２のステップＦ８２６）。ここで、図８や図９の例に示した、プロセッシングヒント設定情報保持部８０４に保持されるプロセッシングヒント設定情報またはこれを含む制御メッセージが生成される。
【００９１】
次に、プロセッシングヒント制御モジュール８２は、図１２のステップＦ８２６で構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール８０に送信する（図１２のステップＦ８２８）。
【００９２】
このようにして、プロセッシングヒント制御モジュール８２は、プロセッシングヒント設定情報保持部８０４にプロセッシングヒント設定情報を設定する。
【００９３】
次に、本実施形態の効果について説明する。本実施形態では、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５と、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０との間に、プロセッシングヒント設定装置８が備えられる。
プロセッシングヒント設定装置８が、外部モジュールからのプロセッシングヒント設定要求に応じて、プロセッシングヒント設定情報を構築する。このプロセッシングヒント設定情報に基づいて、プロセッシングヒント設定装置８が、Ｉ／Ｏファブリックネットワークを流れるＴＬＰパケットにプロセッシングヒントを付与する。
これにより、プロセッシングヒントに対応していないＩ／Ｏデバイスに対してもプロセッシングヒントの機能を提供できる。
【００９４】
背景技術に述べたＴＰＨの別の問題点として、Ｉ／Ｏデバイスが設定するプロセッシングヒントは、特定のＣＰＵやＩ／Ｏコントローラ向けのフォーマットに限定されている、という点が挙げられる。しかしながら、本実施形態によれば、プロセッシングヒントのフォーマットは、外部モジュールからのプロセッシングヒント設定要求に含まれる情報を元に構築できるため、特定のＣＰＵ２や、プロセッシングヒントをＩ／Ｏコントローラ４に非依存なものにできる。
【００９５】
[第２の実施形態]
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。
【００９６】
図１３は、本発明の第２の実施形態の構成を示した図である。図１３を参照すると、第２の実施形態は、各コンピュータ１のＰＣＩ  Ｅｘｐｒｅｓｓデバイス５と、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス４０と、の間にプロセッシングヒント設定モジュール８０ｂを配置する。さらに、第２の実施形態は、その他のコンピュータ１内のプロセッシングヒント設定モジュールを含む各プロセッシングヒント設定モジュール８０ｂを制御するプロセッシングヒント制御モジュール８２ｂと、を備える。
【００９７】
図１４は、プロセッシングヒント設定モジュール８０ｂの構成を示した図である。図２に示した第１の実施形態のプロセッシングヒント設定モジュール８０との相違点は、プロセッシングヒント設定要求受付部８２４と、デバイス情報登録要求受付部８３０と、が追加されている点である。図１４における、図２と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
【００９８】
プロセッシングヒント設定モジュール８０ｂは、各コンピュータ１に備えられ、各コンピュータ１内で、ＴＬＰパケットへのプロセッシングヒントの設定、及び、プロセッシングヒントの設定要求の受け付けと、デバイス情報登録要求の受け付けを行う。
【００９９】
プロセッシングヒント設定要求受付部８２４は、プロセッシングヒント設定モジュール８０ｂが備えられたコンピュータ１からのプロセッシングヒント設定情報の設定要求を受け付けるインタフェースである。例えば、プロセッシングヒント設定要求受付部８２４を、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５としてＩ／Ｏファブリックネットワークに接続する。これにより、コンピュータ１上で稼動するＯＳなどからプロセッシングヒント設定要求受付部８２４にアクセスすることが可能となる。
【０１００】
デバイス情報登録要求受付部８３０は、情報を通知するためのインタフェースである。その情報は、コンピュータ１上で稼動するＯＳなどが、プロセッシングヒント制御モジュール８２ｂに対し、コンピュータ１に備えられるＩ／Ｏファブリックネットワークに接続されるＩ／Ｏデバイスの情報と、コンピュータ１のメモリ空間に関する情報である。プロセッシングヒント設定要求受付部８２４と同様に、デバイス情報登録要求受付部８３０は、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス５として実現される。これによって、コンピュータ１上で稼動するＯＳなどからデバイス情報登録要求受付部８３０にアクセスすることが可能となる。デバイス情報登録要求受付部８３０は、コンピュータ１のデバイス情報を、プロセッシングヒント制御モジュール８２ｂに送信する場合、コンピュータ１の識別子を付与して送信する。この識別子は、プロセッシングヒント設定装置８ｂが管理するコンピュータ群で一意な値である。
【０１０１】
図１５は、プロセッシングヒント制御モジュール８２ｂの構成を示した図である。図１５を参照すると、プロセッシングヒント構築部８２２と、デバイス情報保持部８２８と、を備えたプロセッシングヒント制御モジュール８２ｂが示されている。図１５において、図１０に示した第１の実施形態のプロセッシングヒント制御モジュール８２と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
【０１０２】
デバイス情報保持部８２８は、各コンピュータ１のＩ／Ｏデバイス情報を、コンピュータ１の識別子と共に保持する。図１６は、デバイス情報保持部８２８が保持するＩ／Ｏデバイス情報の一例を示した図である。デバイス情報保持部８２８は、図１６のようなデバイス情報から、コンピュータ１の識別子を用いて検索することで、そのコンピュータ１のＩ／Ｏデバイス情報を取得できる。
【０１０３】
また、デバイス情報保持部８２８は、各コンピュータ１のメモリ空間に関する情報を、コンピュータ１の識別子と共に保存する。図１７は、デバイス情報保持部８２８が保持するメモリ空間に関する情報の一例を示した図である。デバイス情報保持部８２８は、図１７に示す情報から、コンピュータ１の識別子を用いて検索することで、そのコンピュータ１のメモリ空間に関する情報を取得できる。図１７には、Ｉ／Ｏデバイスが使用しているメモリ領域の情報だけでなく、メインメモリやビデオメモリの情報も記載される。
【０１０４】
さらに、図１７において、そのメモリ領域に対して、ＴＬＰパケットを送信できるか否かのフラグを保持する領域を設けることが考えられる。プロセッシングヒント構築部８２２が、プロセッシングヒント設定情報構築時に、ＴＬＰパケットの宛先メモリアドレスがコンピュータ１のメモリ空間に含まれる値であっても、フラグを参照し、ＴＬＰパケットを送信できる領域であるかどうかを判断できる。また、ＴＬＰパケットを送信できない領域の場合は、そのようなルールを構築しないということが可能となる。
【０１０５】
[動作の説明]
続いて、図面を参照して、本実施形態の動作について詳細に説明する。
【０１０６】
図１８〜図２０は、本実施形態の動作を表したシーケンス図である。はじめに、コンピュータ１のＩ／Ｏデバイス情報を、デバイス情報保持部８２８に登録する際の動作について図１８を参照して説明する。なお、図１８では、コンピュータ１上で稼動するＯＳからデバイス情報を送信するものとしている。
【０１０７】
まず、ＯＳが、プロセッシングヒント設定モジュール８０ｂに対し、プロセッシングヒント設定要求受付部８２４を介して、デバイス情報とコンピュータ１の識別子とともに、デバイス情報登録要求を発行する（図１８のステップＳ８３０ｂ）。
【０１０８】
次に、プロセッシングヒント設定モジュール８０ｂが、制御インタフェース８０６ｂを介して、プロセッシングヒント制御モジュール８２ｂに、Ｉ／Ｏデバイス情報と、コンピュータ１の識別子を送信する（図１８のステップＳ８３２ｂ）。
【０１０９】
次に、プロセッシングヒント構築部８２２が、デバイス情報保持部８２８に、コンピュータ１の識別子とともにＩ／Ｏデバイスの情報を登録する（図１８のステップＳ８３４ｂ）。
【０１１０】
このようにして、デバイス情報保持部８２８にＩ／Ｏデバイスの情報を登録することができる。コンピュータ１のメモリ空間に関する情報も、同様に登録することが可能である。
【０１１１】
図１９は、コンピュータ１のＩ／Ｏファブリックネットワークに接続されているＩ／Ｏデバイスの構成が変更された際の、プロセッシングヒント設定装置８ｂの動作を示したシーケンス図である。図１９における、図１８と同様の動作については同一の符号を付し、詳細な説明を省略する。
【０１１２】
まず、ＯＳが、取り外したＩ／Ｏデバイスの情報又は追加したＩ／Ｏデバイスの情報を、コンピュータ１の識別子とともに、プロセッシングヒント設定要求受付部８２４を介して、プロセッシングヒント設定モジュール８０ｂにデバイス情報変更要求を発行する。図１９のステップＳ８３１ｂに、プロセッシングヒント設定モジュール８０ｂにデバイス情報変更要求を発行することを示す。この、取り外した、または追加したＩ／Ｏデバイスの情報には、少なくともＢＤＦ番号と、このＩ／Ｏデバイスが使用するメモリ領域の情報が含まれる。
【０１１３】
次に、プロセッシングヒント設定モジュール８０ｂがプロセッシングヒント制御モジュール８２ｂに、Ｉ／Ｏデバイス情報と、コンピュータ１の識別子を送信する（図１９のステップＳ８３２ｂ）。
【０１１４】
次に、プロセッシングヒント構築部８２２が、デバイス情報保持部８２８に登録されているＩ／Ｏデバイス情報を更新する（図１９のステップＳ８３５ｂ）。Ｉ／Ｏデバイスを取り外す場合、プロセッシングヒント構築部８２２は、コンピュータ１の識別子と、更新対象のＩ／ＯデバイスのＢＤＦ番号やメモリアドレスを用いて、Ｉ／Ｏデバイス情報を検索し、該当するＩ／Ｏデバイス情報を削除する。ＢＤＦ番号の場合は一致するＩ／Ｏデバイスを、メモリアドレスの場合は、そのメモリアドレスが含まれるメモリ領域を使用するＩ／Ｏデバイスを削除する。また、Ｉ／Ｏデバイスを追加する場合、対象のコンピュータ１のＩ／Ｏデバイス情報に、追加するＩ／Ｏデバイスの情報を追加する。
【０１１５】
次に、Ｉ／Ｏデバイスを取り外す場合、プロセッシングヒント制御モジュール８２ｂは、Ｉ／Ｏデバイス情報更新要求を発行したコンピュータ１に備えられるプロセッシングヒント設定モジュール８０ｂに対して、プロセッシングヒント設定情報の削除を指示する。削除される情報は、プロセッシングヒント設定情報保持部８０４から、取り外すＩ／Ｏデバイスに該当するプロセッシングヒント設定情報である。図１９のステップＳ８３６ｂにプロセッシングヒント設定情報の削除の指示が示される。図８のデータ構造の例をとると、まず、プロセッシングヒント設定モジュール８０ｂは、取り外すＩ／ＯデバイスのＢＤＦ番号を用いて、リクエスタＩＤ列が一致するプロセッシングヒント設定情報を削除する。そして、プロセッシングヒント設定モジュール８０ｂは、取り外すＩ／Ｏデバイスのメモリ情報を用いて、宛先アドレス列に設定された値が取り外すＩ／Ｏデバイスのメモリ領域に含まれるプロセッシングヒント設定情報を削除する。
【０１１６】
図２０は、コンピュータ１上で稼動するＯＳが、外部モジュールとして、プロセッシングヒント設定モジュール８０ｂに対し、プロセッシングヒントを設定する処理の流れを示したシーケンス図である。図２０において、図１１と同様の動作については同一の符号を付し、詳細な説明を省略する。
【０１１７】
まず、ＯＳは、プロセッシングヒント設定モジュール８０ｂに対して、プロセッシングヒント設定要求受付部８２４を介して、プロセッシングヒントの設定要求を発行する（図２０のステップＳ８２０ｂ）。この要求には、少なくとも、コンピュータ１の識別子と、ＴＬＰパケットの送信元の識別子と、ＴＬＰパケットの送信先の識別子と、設定するプロセッシングヒントと、に関する情報が含まれる。
【０１１８】
次に、プロセッシングヒント設定モジュール８０ｂは、制御インタフェース８０６ｂを介して、プロセッシングヒント制御モジュール８２ｂに、プロセッシングヒント設定情報の設定要求を送信する（図２０のステップＳ８２５）。
【０１１９】
次に、プロセッシングヒント制御モジュール８２ｂに備えられるプロセッシングヒント構築部８２２は、プロセッシングヒント設定情報を構築する（図２０のステップＳ８２６ｂ）。この際に、プロセッシングヒント構築部８２２は、プロセッシングヒント設定情報の設定要求に含まれるコンピュータ１の識別子を用い、デバイス情報保持部８２８を参照し、該当するコンピュータ１のＩ／Ｏデバイスの情報とメモリ空間に関する情報とを取得する。次にプロセッシングヒント構築部８２２は、取得したコンピュータ１のＩ／Ｏデバイス情報と、プロセッシングヒント構築要求を比較し、プロセッシングヒント構築要求に含まれるＴＬＰパケットの送信元の識別子に該当するＩ／Ｏデバイスが存在するかを確認する。また、プロセッシングヒント構築部８２２は、取得したコンピュータ１のメモリ空間に関する情報と、ＴＬＰパケットの宛先メモリアドレスを比較し、宛先メモリアドレスが有効なアドレスかどうかを確認する。このときに、該当するＩ／Ｏデバイスが存在しない場合、または、宛先メモリアドレスが無効な場合、プロセッシングヒント構築部８２２は、プロセッシングヒント設定情報を構築せずに、処理を終了する。
【０１２０】
一方、該当するＩ／Ｏデバイスが存在し、宛先メモリアドレスが有効な場合、プロセッシングヒント構築部８２２は、構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール８０ｂに送信する。さらに、プロセッシングヒント構築部８２２は、構築したプロセッシングヒント設定情報を、プロセッシングヒント設定情報保持部８０４に登録する（図２０のステップＳ８２８）。
【０１２１】
このようにして、本実施形態のプロセッシングヒント制御モジュール８２ｂ及びプロセッシングヒント設定モジュール８０ｂは、プロセッシングヒント設定情報保持部８０４にプロセッシングヒント設定情報を設定する。
【０１２２】
次に、本実施形態の効果について説明する。本実施形態では、プロセッシングヒント制御モジュール８２ｂが、コンピュータ１の外部モジュールとして設けられ、複数のコンピュータ１のプロセッシングヒント設定情報を構築する構成となっている。これにより、コンピュータ１ごとに、プロセッシングヒントを構築する機能を設ける必要が無くなり、プロセッシングヒント設定システムのコストを低減することができる。
【０１２３】
［第３の実施形態］
次に、ネットワークスイッチにより、上記プロセッシングヒント設定モジュール及びプロセッシングヒント制御モジュールを実現した本発明の第３の実施形態を説明する。
【０１２４】
図２１は、本発明の第３の実施形態のネットワークスイッチの構成を表した図である。
このようなネットワークスイッチとしては、図２３の拡張ネットワーク７に配置されるネットワークスイッチを利用することができる。
【０１２５】
図２１を参照すると、このネットワークスイッチは、パケットを転送するスイッチチップ８０２ｃと、スイッチチップ８０２ｃがパケットをどのポートに出力するかを決定するためのルールを格納するフォワーディングテーブル８０４ｃを備える。さらに、ネットワークスイッチは、スイッチチップを制御するコントロールＣＰＵ８２２ｃ（８２６ｃ）と、コントロールＣＰＵ８２２ｃ（８２６ｃ）がワーキングメモリとして使用するメモリ８２８ｃを備える。ネットワークスイッチは、ネットワークスイッチを外部から設定するためのマネジメントポート８２４ｃ（８３０ｃ）を備えている。なお、このようなネットワークスイッチの構成は、一般的なネットワークスイッチの構成と同様のものである。
【０１２６】
ネットワークスイッチは、スイッチチップ８０２ｃをプロセッシングヒント書き換え部８０２として動作させ、フォワーディングテーブル８０４ｃをプロセッシングヒント設定情報保持部８０４として利用することができる。また、ネットワークスイッチは、コントロールＣＰＵ８２２ｃ（８２６ｃ）上で、プロセッシングヒント構築部８２２、およびデバイス情報取得部８２６相当の機能を実現するソフトウェアを動作させる。これにより、図１０のプロセッシングヒント構築部８２２およびデバイス情報取得部８２６に相当する構成を得ることができる。また、メモリ８２８ｃはデバイス情報保持部８２８として利用される。また、コントロールＣＰＵ８２２ｃ（８２６ｃ）とスイッチチップ８０２ｃを接続するバス８０６ｃは、制御インタフェース８０６として利用される。さらに、マネジメントポート８２４ｃ（８３０ｃ）はプロセッシングヒント設定要求受付部８２４、およびデバイス情報登録要求受付部８３０として利用される。これにより、図１３の破線で示すプロセッシングヒント設定モジュール８０ｂ及びプロセッシングヒント制御モジュール８２ｂとを組み合わせた構成（図１３の８ｂ）を得ることができる。また、プロセッシングヒント制御モジュール８２ｂに相当する構成は、複数のネットワークスイッチを集中制御するコントローラ装置により実現することもできる。
【０１２７】
フォワーディングテーブル８０４ｃはＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｃｃｅｓｓｉｂｌｅ  Ｍｅｍｏｒｙ）などで実現されており、パケットヘッダの任意のフィールドでマッチングすることが可能である。
【０１２８】
スイッチチップ８０２ｃは、パケットヘッダの任意のフィールドを別の値に書き換えることが可能である。
【０１２９】
コントロールＣＰＵ８２２ｃは、汎用プロセッサであり、Ｌｉｎｕｘのような汎用ＯＳが稼働する。メモリ８２８ｃは、Ｉ／Ｏデバイス情報を保持するほか、ＯＳが稼働するためのメモリとしても使用され、その役割はコンピュータ１におけるメインメモリ３と同等である。
【０１３０】
マネジメントポート８２４ｃは、拡張ネットワーク７の制御用ネットワークに接続されており、各コンピュータ１も自身が備えるネットワークインタフェースなどを介して、この制御用ネットワークに接続される。各コンピュータ１で稼働するＯＳが、マネジメントポートとファブリックネットワークを介して、プロセッシングヒント設定装置８に接続する。
【０１３１】
以上のように、本発明は、拡張ネットワーク７上のネットワークスイッチにより、実現することができる。
【０１３２】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、データ構造等の表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【０１３３】
上記の実施形態の一部又は全部は、以下の付記のように記載されうるが、以下には限られない。
［付記１］
コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置され、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段とを備える。更に、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える設定装置。
［付記２］
前記コンピュータは、ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックスを備え、
前記Ｉ／Ｏデバイスに代わって、パケットに対してプロセッシングヒントを設定する付記１の設定装置。
［付記３］
さらに、
前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
前記Ｉ／Ｏファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
を備える付記１又は付記２の設定装置。
［付記４］
前記デバイス情報取得手段は、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
前記デバイス確認手段は、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、
前記プロセッシングヒント格納手段は、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合、設定情報を破棄する付記１から付記３いずれか一に記載の設定装置。
［付記５］
さらに、前記Ｉ／Ｏファブリックネットワーク内に備えられたＩ／Ｏデバイスのいずれかが削除された際に、削除されたＩ／Ｏデバイスの識別子を用いて、前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える設定装置。設定情報削除手段を備える設定装置は付記１から付記４いずれか一に記載の設定装置に適用できる。
［付記６］
コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備えた１つ以上のコンピュータに接続され、
前記１つ以上のコンピュータからの前記設定情報の設定要求に応じて、前記設定情報保持手段に設定情報を設定する制御装置。
［付記７］
さらに、
前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
前記Ｉ／Ｏファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
を備える付記６に記載の制御装置。
［付記８］
さらに、前記Ｉ／Ｏファブリックネットワーク内に備えられたＩ／Ｏデバイスのいずれかが削除された際に、削除されたＩ／Ｏデバイスの識別子を用いて、前記コンピュータの前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える設定装置。設定情報削除手段を備える設定装置は、付記６又は付記７に記載の制御装置に適用できる。
［付記９］
設定情報保持手段として前記設定情報を保持可能なフォワーディングテーブルと、
前記設定手段として、前記フォワーディングテーブルに登録された設定情報に基づいて、前記パケットにプロセッシングヒントを設定するスイッチチップと、を備え、
付記１から付記４いずれか一に記載の設定装置として機能するネットワークスイッチ。
［付記１０］
付記９のネットワークスイッチにおいて、
前記デバイス情報取得手段、デバイス確認手段及びプロセッシングヒント格納手段として、
前記コンピュータから設定情報の設定要求を受け付け、前記Ｉ／Ｏファブリックネットワークに接続されたＩ／Ｏデバイスの情報と、前記コンピュータのメモリ空間の情報を取得するためのマネジメントポートと、
パケットの送信元デバイスの識別子に該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワークに存在するかどうかを判断し、前記パケットの宛先メモリアドレスが、前記コンピュータのメモリ空間上で有効な値であるかどうかを判断し、前記送信元デバイスに該当するＩ／Ｏデバイスが、前記Ｉ／Ｏファブリックネットワーク中に存在し、前記宛先メモリアドレスが有効な値である場合に、前記フォワーディングテーブルに、前記設定要求を受けた設定情報を格納するコントロールＣＰＵと、
を備え、付記３の設定装置として機能するネットワークスイッチ。
［付記１１］
前記マネジメントポートから、前記Ｉ／Ｏファブリックネットワークに接続されたＩ／Ｏデバイスが削除されたことを示す通知がなされた場合に、前記コントロールＣＰＵが、該当するＩ／Ｏデバイスの識別子を用いて、前記フォワーディングテーブルから該当する設定情報を削除する付記１０に記載のネットワークスイッチ。
［付記１２］
前記マネジメントポートを介して、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
前記コントロールＣＰＵは、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合に、前記設定要求を受けた設定情報を破棄する、付記１０又は付記１１に記載のネットワークスイッチ。
［付記１３］
コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置において、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持するステップと、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定するステップと、を含む設定方法。
［付記１４］
コンピュータと１つ以上のＩ／Ｏデバイスとの間に配置された設定装置を構成するコンピュータに、前記コンピュータとＩ／Ｏデバイスとの間のＩ／Ｏファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する処理と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する処理と、を実行させるプログラム。
【０１３４】
なお、上記付記１３、付記１４は、付記１と同様に、付記２〜付記５に展開することが可能である。
【０１３５】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【０１３６】
この出願は、２０１４年４月１１日に出願された日本出願特願２０１４−０８２２０９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３７】
１、１ｂ    コンピュータ
２    ＣＰＵ
３    メインメモリ
４    Ｉ／Ｏコントローラ
５    ＰＣＩ  Ｅｘｐｒｅｓｓデバイス
６    ストレージデバイス
７    拡張ネットワーク
８、８ｂ    プロセッシングヒント設定装置
９    マネジメントインタフェース
４０    ＰＣＩ  Ｅｘｐｒｅｓｓルートコンプレックス
４１    シリアルＡＴＡコントローラ
４２    トランザクションレイヤ
４４    データリンクレイヤ
４６    物理レイヤ
５０    ＴＬＰプリフィックス
５２    ＴＬＰヘッダ
５４    ＴＬＰデータ
５６    ＴＬＰダイジェスト
５０２    ＳＴ［１５：８］フィールド
５２２    ＳＴ［７：０］フィールド
５２４    アドレス［３１：２］フィールド
５２６    リクエスタＩＤフィールド
５２８    ＢＤＦ番号フィールド
５３０    長さフィールド
５３２    ＰＨフィールド
５３４    ＴＨフィールド
５３６    Ｔｙｐｅフィールド
８０、８０ｂ    プロセッシングヒント設定モジュール
８２、８２ｂ    プロセッシングヒント制御モジュール
８０２    プロセッシングヒント書き換え部
８０４    プロセッシングヒント設定情報保持部
８０５    チェックコード再計算部
８０６、８０６ｂ    制御インタフェース
８２２    プロセッシングヒント構築部
８２４    プロセッシングヒント設定要求受付部
８２６    デバイス情報取得部
８２８    デバイス情報保持部
８３０    デバイス情報登録要求受付部
８０４２    リクエスタＩＤ列
８０４６    宛先アドレス列
８０４８    ＴＰＨ値列
８０４９    ＰＨ値列
８０５０    長さ値列
８０２ｃ    スイッチチップ
８０４ｃ    フォワーディングテーブル
８０６ｃ    バス
８２２ｃ（８２６ｃ）コントロールＣＰＵ
８２４ｃ（８３０ｃ）マネジメントポート
８２８ｃ    メモリ
【図１】
2015155997.tif 000003
【図２】
2015155997.tif 000004
【図３】
2015155997.tif 000005
【図４】
2015155997.tif 000006
【図５】
2015155997.tif 000007
【図６】
2015155997.tif 000008
【図７】
2015155997.tif 000009
【図８】
2015155997.tif 000010
【図９】
2015155997.tif 000011
【図１０】
2015155997.tif 000012
【図１１】
2015155997.tif 000013
【図１２】
2015155997.tif 000014
【図１３】
2015155997.tif 000015
【図１４】
2015155997.tif 000016
【図１５】
2015155997.tif 000017
【図１６】
2015155997.tif 000018
【図１７】
2015155997.tif 000019
【図１８】
2015155997.tif 000020
【図１９】
2015155997.tif 000021
【図２０】
2015155997.tif 000022
【図２１】
2015155997.tif 000023
【図２２】
2015155997.tif 000024
【図２３】
2015155997.tif 000025
【図２４】
2015155997.tif 000026
【国際調査報告】
2015155997.tif 000027
2015155997.tif 000028
2015155997.tif 000029
2015155997.tif 000030