(57)【要約】      （修正有）【課題】第１トランザクションの終了を待たずに優先度の高い第２トランザクションを実行する。【解決手段】情報処理システムは、複数のプラットフォームと、該プラットフォーム間を接続する拡張スロット（バス）を具備する。プラットフォームは、発生するトランザクションによって他のプラットフォームに送信するデータを記憶可能なメモリと、第１トランザクションにおいて他のプラットフォームに送信する第１送信データをメモリから読み出して拡張バスを介して他のプラットフォームに送信し、該データが含む１つのパケットの送信が終わる度に、第１トランザクションよりも優先度が高い第２トランザクションの発生を判断し、第２トランザクションが発生している場合、第２トランザクションの第２送信データを他のプラットフォームに送信し、第２送信データの送信が終わるまで第１送信データの送信を中断するコントローラを有するチップセットを備える。【選択図】図２
2020135868.tif 000002
【特許請求の範囲】
【請求項１】
複数のプラットフォームと、当該複数のプラットフォーム間を接続する拡張バスを有する中継装置を、具備する情報処理システムであって、
前記プラットフォームは、
当該プラットフォームにおいて発生するトランザクションによって他の前記プラットフォームに送信する送信データを記憶可能なメモリと、
前記トランザクションのうち第１トランザクションにおいて前記他のプラットフォームに送信する第１送信データを前記メモリから読み出して前記拡張バスを介して前記他のプラットフォームに送信し、前記第１送信データが含む１つのパケットの送信が終わる度に、前記プラットフォームにおいて前記第１トランザクションよりも優先度が高い前記トランザクションである第２トランザクションが発生しているか否かを判断し、前記第２トランザクションが発生している場合、前記第２トランザクションにおいて前記他のプラットフォームに送信する第２送信データを前記メモリから読み出して前記拡張バスを介して前記他のプラットフォームに送信し、前記第２送信データの送信が終わるまで前記第１送信データの送信を中断するコントローラを、
具備する情報処理システム。
【請求項２】
前記メモリは、前記トランザクションの優先度毎に、当該優先度の前記トランザクションにおいて前記他のプラットフォームに送信する前記送信データが含む前記パケットのうち次に送信する前記パケットの前記メモリ上の記憶領域のアドレス情報であるカレント情報を含むレベルテーブルを記憶し、
前記コントローラは、前記第２送信データの送信が終わった後、前記第１送信データが含む前記パケットのうち、前記第１トランザクションの前記優先度の前記レベルテーブルが含む前記カレント情報が示す前記記憶領域に記憶される前記パケットから送信を再開する請求項１に記載の情報処理システム。
【請求項３】
前記メモリは、前記メモリ上における前記各パケットの記憶領域のアドレス情報を記憶し、
前記アドレス情報は、前記パケットが送信済みか否かを示す転送完了情報を含み、
前記コントローラは、前記第１送信データが含む前記パケットのうち、前記転送完了情報が送信済みでないことを示す前記パケットを前記他のプラットフォームに送信する請求項１または２に記載の情報処理システム。
【請求項４】
前記レベルテーブルは、さらに、前記送信データの送信にエラーが発生したか否かを示すステータス情報を含む請求項２に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理システムに関する。
【背景技術】
【０００２】
複数のプラットフォームと、当該プラットフォームが接続されるＰＣＩｅ規約等の通信規約の拡張バスを有する中継装置を、有する情報処理システムが開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−０４１０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１による情報処理システムでは、ＰＣＩｅ規約等の通信規約の拡張バスを介してプラットフォーム間で送信データを送受信するＰＣＩｅ動作を行う場合、プラットフォームは、トランザクション単位で送信データを通信規約に従い送受信する。そして、当該通信規約には、一般的な送信データを送受信する通信に割り込んで、各種の確認や制御等に関連する緊急の送信データを送受信する通信を行う概念がない。
【０００５】
したがって、トランザクションの履歴情報等の取得は、１つのトランザクションが正常に終了した後、別のトランザクションによって取得する必要がある。また、ＰＣＩｅ動作には、その性質上、イーサネット（登録商標）の通信品質の向上等に用いられる割込通信を実装することが難しい。そのため、ＰＣＩｅ動作に影響を受けるＩＰоＩＢ（IP  over  Infiniband）やＩＰоＦＣ（IP  over  Fiber  Chanel）等は、その機能が制限される。ここで、ＩＰｏＩＢは、Infinibandという通信規約の上でＴＣＰ／ＩＰのＩＰプロトコルを載せてシリアル通信を行う手順であり、ファイバー（光）通信のため、高速なシリアル通信が可能となる。また、ＩＰоＦＣは、ＩＰоＩＢのＩＢの部分をFiber  Chanelという通信規約に置き換えたものであり、ＩＰоＩＢと同様に、ファイバー（光）通信のため、高速なシリアル通信が可能となる。
【０００６】
また、一般的な送信データの送受信の途中に、緊急の送信データを送受信する方法として、当該通信規約のＶｉｒｔｕａｌ  Ｃｈａｎｅｌを用いて、一般的な送信データの送受信に用いる通信路とは別に、緊急の送信データの送受信に用いる通信路を設ける方法がある。しかしながら、この方法では、Ｖｉｒｔｕａｌ  Ｃｈａｎｅｌの実現に必要なハードウェアおよびドライバが、特殊かつ高価になる。
【０００７】
このように、１つのトランザクションが実行中は、監視処理等の他のトランザクションの割込みを実行することが困難なため、例えば、情報処理システムの電源切断を正常に行うことができず、情報処理システムを再起動させる際に正常に情報処理システムを動作させることができない場合がある。
【課題を解決するための手段】
【０００８】
本発明の第１態様にかかる情報処理システムは、複数のプラットフォームと、当該複数のプラットフォーム間を接続する拡張バスを有する中継装置を、具備する。プラットフォームは、当該プラットフォームにおいて発生するトランザクションによって他のプラットフォームに送信する送信データを記憶可能なメモリと、トランザクションのうち第１トランザクションにおいて他のプラットフォームに送信する第１送信データをメモリから読み出して拡張バスを介して他のプラットフォームに送信し、第１送信データが含む１つのパケットの送信が終わる度に、プラットフォームにおいて第１トランザクションよりも優先度が高いトランザクションである第２トランザクションが発生しているか否かを判断し、第２トランザクションが発生している場合、第２トランザクションにおいて他のプラットフォームに送信する第２送信データをメモリから読み出して拡張バスを介して他のプラットフォームに送信し、第２送信データの送信が終わるまで第１送信データの送信を中断するコントローラを、具備する。
【発明の効果】
【０００９】
本発明の上記第１態様によれば、第１トランザクションの第１送信データを送信する通信に割り込んで、第１トランザクションより優先度が高い第２トランザクションの第２送信データを送信する通信が実行可能となるので、第１トランザクションの終了を待たずに、第２トランザクション（例えば、第１トランザクションの経過確認や、第１トランザクションの中断処理、情報処理システム１の電源操作）が実行可能になる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態にかかる情報処理システム１の全体構成の一例を示す図である。
【図２】図２は、第１の実施形態にかかる情報処理システム１のハードウェア構成の一例を示す図である。
【図３】図３は、第１の実施形態にかかるプラットフォーム２−１〜２−３のソフトウェア構成の一例を示す図である。
【図４】図４は、第１の実施形態にかかるプラットフォーム２−１，２−２のそれぞれのプロセッサ２１−１，２１−２間における通信処理の一例を説明するための図である。
【図５】図５は、プラットフォーム２−１のプロセッサ２１−１から他のプラットフォーム２−８のプロセッサ２１−８の見え方を例示する図である。
【図６】図６は、プラットフォーム２−１のプロセッサ２１−１から他のプラットフォーム２−８のプロセッサ２１−８の見え方を例示する図である。
【図７】図７は、第１の実施形態にかかる中継装置３を介したプラットフォーム２−１，２−５間のデータ転送方法の一例を説明するための図である。
【図８】図８は、第１の実施形態にかかる情報処理システム１におけるプラットフォーム２−１による送信データの送信処理の一例を示すブロック図である。
【図９】図９は、第１の実施形態にかかる情報処理システム１におけるプラットフォーム２による送信データの送信処理の流れの一例を示すフローチャートである。
【図１０】図１０は、第２の実施形態にかかるプラットフォーム２−１〜２−３のソフトウェアの詳細なブロック構成の一例を示す図である。
【図１１】図１１は、第２の実施形態の情報処理システム１が送信データの送信処理を行う際に、各構成が行う処理の流れを例示したシーケンス図である。
【図１２】図１２は、第３の実施形態にかかる情報処理システム１２００のハードウェア構成の一例を示す図である。
【図１３】図１３は、第３の実施形態にかかる情報処理システム１２００におけるプラットフォーム２−１による送信データの送信処理の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、添付の図面を用いて、本実施形態にかかる情報処理システムについて説明する。
【００１２】
（第１の実施形態）
図１は、第１の実施形態にかかる情報処理システム１の全体構成の一例を示す図である。図１に示すように、本実施形態にかかる情報処理システム１は、複数のプラットフォーム２−１〜２−８、および中継装置３を有する。複数のプラットフォーム２−１〜２−８は、それぞれ中継装置３に接続されている。
【００１３】
以下の説明では、複数のプラットフォーム２−１〜２−８を区別する必要がなく、任意のプラットフォームを示す場合には、プラットフォーム２と記載する。また、ここでは、情報処理システム１が、８つのプラットフォーム２−１〜２−８を有する例について説明するが、複数のプラットフォーム２を有するものであれば、これに限定するものではない。
【００１４】
プラットフォーム２−１〜２−８は、情報処理システム１の制御部およびＧＵＩ（Graphical  User  Interface）として機能するホストＰＣ（Personal  Computer）や、ＡＩ（Artificial  Intelligence）推論処理や画像処理等を実行する演算部である。
【００１５】
具体的には、プラットフォーム２−１〜２−８は、プロセッサ２１−１〜２１−８を備える。以下の説明では、プロセッサ２１−１〜２１−８を区別する必要がなく、任意のプロセッサを示す場合には、プロセッサ２１と記載する。プロセッサ２１−１〜２１−８は、それぞれ違うメーカ（ベンダ）から提供されたものであっても良いし、同じメーカから提供されたものであっても良い。
【００１６】
例えば、プロセッサ２１−１はＡ社から提供され、プロセッサ２１−２はＢ社から提供され、プロセッサ２１−３はＣ社から提供され、プロセッサ２１−４はＤ社から提供され、プロセッサ２１−５はＥ社から提供され、プロセッサ２１−６はＦ社から提供され、プロセッサ２１−７はＧ社から提供され、プロセッサ２１−８はＨ社から提供されるものとする。
【００１７】
また、中継装置３に搭載される各スロット３０５−１〜３０５−８に対しては、それぞれ異なるプラットフォーム２を接続しても良いし、各スロット３０５−１〜３０５−８に対して１つのプラットフォーム２を接続し、プラットフォーム２側が複数のＲＣ（Root  Complex）を用いて中継装置３と通信しても良い。ここで、ＲＣは、ＰＣＩｅ規約の世界において、デバイス管理をするコントローラである。デバイスの管理元となるため、一般的には、１バスシステムであり、１つしか存在しないが、複数のバスを介して複数のＭＰＵ（Micro  Processing  Unit）を束ねて、１つの情報処理装置を構成するように見せかける環境においては、複数のＲＣが存在する場合もある。複数のＲＣが存在するシステムは、ワークステーション等で使われることが多く、このようなシステムをＮＵＭＡ（Non-Uniform  Memory  Access）と言う。プラットフォーム２は、当該プラットフォーム２内に設けられるＲＣおよびＥＰ（End  Point）を介して、中継装置３と通信する。本実施形態では、プラットフォーム２は、後述するチップセット２０６（図２参照）内にＲＣおよびＥＰを有する。ここで、ＥＰは、ＰＣＩｅ規約の世界において、ＲＣからの指示に従って受動的にデータを処理するためのコントローラである。
【００１８】
次に、図２を用いて、本実施形態にかかる情報処理システム１のハードウェア構成の一例について説明する。図２は、本実施形態にかかる情報処理システム１のハードウェア構成の一例を示す図である。以下の説明では、プラットフォーム２−１がホストＰＣとして機能し、プラットフォーム２−２〜２−８が、ＡＩ推論処理や画像処理等を実行する演算部として機能する例について説明する。
【００１９】
まず、ホストＰＣとして機能するプラットフォーム２−１のハードウェア構成について説明する。ここで、プラットフォーム２−１のハードウェア構成について説明するが、演算部として機能するプラットフォーム２−２〜２−８も同様のハードウェア構成を有している。
【００２０】
プラットフォーム２−１は、図２に示すように、プロセッサ２１−１、表示部２０１、ＵＳＢ（Universal  Serial  Bus）ポート２０２、通信Ｉ／Ｆ２０３、記憶部２０４、メモリ２０５、およびチップセット２０６を有する。
【００２１】
表示部２０１は、ＬＣＤ（Liquid  Crystal  Display）等であり、各種情報を表示する。ＵＳＢポート２０２は、プラットフォーム２−１と周辺機器を接続するためのコネクタである。通信Ｉ／Ｆ２０３は、イーサネット（登録商標）等の通信規約に従って、ＬＡＮ（Local  Area  Network）等のネットワークと通信可能とする。
【００２２】
記憶部２０４は、ＨＤＤ（Hard  Disk  Drive）や、ＳＳＤ（Solid  State  Drive）、ＳＣＭ（Storage  Class  Memory）等の記憶装置であり、各種のデータを記憶する。メモリ２０５は、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）等である。ＲＯＭは、各種のソフトウェアプログラムや当該ソフトウェアプログラム用のデータを記憶する。ＲＯＭに記憶されるソフトウェアプログラムは、プロセッサ２１−１により読み込まれて実行される。ＲＡＭは、ＲＯＭに記憶されるソフトウェアプログラムを実行する際の作業領域として機能する。
【００２３】
プロセッサ２１−１は、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＤＳＰ（Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＰＬＤ（Programmable  Logic  Device）、ＦＰＧＡ（Field  Programmable  Gate  Array）等のプロセッサであり、プラットフォーム２−１全体を制御する。プロセッサ２１−１は、マルチコアプロセッサであっても良いし、２以上のプロセッサの組合せであっても良い。
【００２４】
チップセット２０６内では、プロセッサ２１−１、ＵＳＢポート２０２、通信Ｉ／Ｆ２０３、記憶部２０４、メモリ２０５等のそれぞれが接続されている。本実施形態では、チップセット２０６内には、中継装置３に接続するためのＲＣおよびＥＰが含まれている。
【００２５】
次に、中継装置３のハードウェア構成について説明する。
【００２６】
中継装置３は、例えば、図２に示すように、複数のスロット３０５−１〜３０５−８を有する。具体的には、中継装置３は、図２に示すように、通信制御マイコン３０１、キャッシュ３０３、および複数のスロット３０５−１〜３０５−８を備える。そして、図２に示すように、通信制御マイコン３０１、キャッシュ３０３、および複数のスロット３０５−１〜３０５−８は、内部バス３０４を介して互いに通信可能に接続されている。
【００２７】
スロット３０５−１〜３０５−８は、それぞれＰＣＩｅ規約等の通信規約を満たすように構成されたデバイスが接続されるＰＣＩｅ規約等の通信規約のスロット（拡張バスの一例）である。本実施形態では、スロット３０５−１〜３０５−８には、プラットフォーム２−１〜２−８が接続される。以下の説明では、スロット３０５−１〜３０５−８を区別する必要がなく、任意のスロットを示す場合には、スロット３０５と記載する。
【００２８】
また、１つのスロット３０５に対して、１つのプラットフォーム２が接続されていても良いが、１つのスロット３０５に対して、複数のプラットフォーム２が接続されていても良い。さらに、１つのプラットフォーム２に対して複数のスロット３０５を割り当てることにより、当該プラットフォーム２は、広い通信帯域を用いた通信が可能となる。
【００２９】
キャッシュ３０３は、性能の異なる装置に対して送信データを送信する場合にその性能差を緩和するために、当該送信データを一時的に記憶しておくための機構である。
【００３０】
なお、プラットフォーム２には、メモリ２０５上に、各スロット３０５に対応させて後述するスロット記憶領域が設けられる。中継装置３は、プラットフォーム２のメモリ２０５上において、スロット３０５に対応させて設けられるスロット記憶領域のアドレス情報に基づいてプラットフォーム２間の送信データの転送を行う。
【００３１】
通信制御マイコン３０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤ、ＦＰＧＡ等のプロセッサを含み、当該プロセッサが、スロット３０５を介したプラットフォーム２間での送信データの転送を行う。通信制御マイコン３０１は、複数のプロセッサの組合せを含んでいても良い。そして、通信制御マイコン３０１は、中継装置３内の図示しない記憶部に記憶されるソフトウェアプログラムを実行することによって、スロット３０５に接続されるプラットフォーム２間での送信データの転送を行う。
【００３２】
次に、図３を用いて、本実施形態にかかるプラットフォーム２−１〜２−３のソフトウェア構成の一例について説明する。図３は、本実施形態にかかるプラットフォーム２−１〜２−３のソフトウェア構成の一例を示す図である。プラットフォーム２−４〜２−８については、図３に図示しないが、プラットフォーム２−２，２−３と同様のソフトウェア構成を有する。
【００３３】
プラットフォーム２−１は、例えば、Windows（登録商標）をＯＳ（Operating  System）として、このＯＳ上において各種ソフトウェアプログラムを実行する。プラットフォーム２−２，２−３は、例えば、Linux（登録商標）をＯＳとし、このＯＳ上において各種ソフトウェアプログラムを実行する。
【００３４】
プラットフォーム２−１〜２−３には、ブリッジドライバ２０が設けられ、当該ブリッジドライバ２０を介して他のプラットフォーム２と通信を行う。各プラットフォーム２−１〜２−３は、プロセッサ２１およびメモリ２０５を有する。そして、プロセッサ２１が、メモリ２０５に記憶されるＯＳや各種プログラム、ドライバ等を実行することにより、プラットフォーム２が有する各種の機能を実現する。
【００３５】
次に、図４を用いて、中継装置３に接続されるプラットフォーム２−１，２−２間における通信処理の一例について説明する。図４は、本実施形態にかかるプラットフォーム２−１，２−２のそれぞれのプロセッサ２１−１，２１−２間における通信処理の一例を説明するための図である。ここでは、プラットフォーム２−１のプロセッサ２１−１と、プラットフォーム２−２のプロセッサ２１−２間での通信処理の一例について説明する。
【００３６】
送信元のプラットフォーム２−１のプロセッサ２１−１において生成されるデータは、ソフトウェア、トランザクション層、データリンク層、および物理層（ＰＨＹ）を順次転送され、物理層において中継装置３の物理層に転送される。
【００３７】
中継装置３は、送信元のプロセッサ２１−１から転送されてきたデータを、物理層、データリンク層、およびトランザクション層を順次転送され、その後、送信先のプロセッサ２１−２に対応するＥＰにトンネリングにより転送される。すなわち、中継装置３においては、ＥＰ間でデータをトンネリングさせることで、１つのプロセッサ２１−１から他のプロセッサ２１−２にデータが転送される。
【００３８】
送信先のプロセッサ２１−２に対して中継装置３から転送されてきたデータは、物理層（ＰＨＹ）、データリンク層、トランザクション層、およびソフトウェアに順次転送され、その後、送信先のプロセッサ２１−２に転送される。本実施形態の情報処理システム１では、プロセッサ２１間の通信は、ＰＣＩｅのトランザクションが発生した時に論理的に実現される。
【００３９】
中継装置３が有する複数のスロット３０５のうち１つに接続されたプロセッサ２１に対して、複数のプロセッサ２１からのデータの転送が集中しない場合には、異なる任意の複数組のプロセッサ２１間において並行してデータの転送を実行することも可能である。例えば、プロセッサ２１−１に対して、プロセッサ２１−２およびプロセッサ２１−３が通信する場合には、中継装置３は、プロセッサ２１−２およびプロセッサ２１−３による通信をシリアルに処理する。
【００４０】
一方、異なるプラットフォーム２のプロセッサ２１同士が通信し、特定のプラットフォーム２のプロセッサ２１に通信が集中しない場合には、中継装置３は、プラットフォーム２間の通信を並行して処理することも可能である。
【００４１】
次に、図５および図６を用いて、プラットフォーム２−１のプロセッサ２１−１から他のプラットフォーム２−８のプロセッサ２１−８の見え方について説明する。図５および図６は、プラットフォーム２−１のプロセッサ２１−１から他のプラットフォーム２−８のプロセッサ２１−８の見え方を例示する図である。
【００４２】
各プラットフォーム２−１，２−８のプロセッサ２１−１，２１−８間で通信が行なわれている状態において、各プロセッサ２１−１，２１−８が実行するＯＳ（例えば、Windows（登録商標）のデバイスマネージャ）からは、中継装置３しか見えないため、接続先の他のプラットフォーム２−８のプロセッサ２１−８を直接管理する必要がない。すなわち、中継装置３のデバイスドライバが、中継装置３の先に接続されたプラットフォーム２−８のプロセッサ２１−８を管理する。
【００４３】
そのため、送信元、送信先それぞれのプラットフォーム２−１，２−８のプロセッサ２１−１，２１−８を動作させるために特別なデバイスドライバを準備する必要がなく、中継装置３のデバイスドライバで中継装置３に対して通信処理を行なうだけで、プラットフォーム２−１，２−８間の通信を実現することができる。
【００４４】
次に、図７を用いて、中継装置３を介したプラットフォーム２−１，２−５間のデータ転送方法を説明する。図７は、本実施形態にかかる中継装置３を介したプラットフォーム２−１，２−５間のデータ転送方法の一例を説明するための図である。
【００４５】
この図７に示す例においては、スロット＃０に接続されたプラットフォーム２−１からスロット＃４に接続されたプラットフォーム２−５にデータを転送する場合について説明する。
【００４６】
送信元のプラットフォーム２−１は、ソフトウェア等によって送信される送信データを、プラットフォーム２−１に備えられる記憶部２０４から、プラットフォーム２−１に備えられるメモリ２０５内のメモリ領域３５に格納する（ステップＳ７０１）。メモリ領域３５は、転送されるデータが一時的に格納される通信バッファの一部であっても良い。メモリ領域３５は、スロット３０５の数に応じて分割されるスロット記憶領域を有する。メモリ領域３５を分割したスロット記憶領域は、いずれかのスロット３０５に対応付けられている。例えば、メモリ領域３５内のＳｌｏｔ＃０で示すスロット記憶領域は、Ｓｌｏｔ＃０に接続されたプラットフォーム２−１に対応付けられ、メモリ領域３５内にＳｌｏｔ＃４で示すスロット記憶領域は、Ｓｌｏｔ＃４に接続されたプラットフォーム２−５に対応付けられている。プラットフォーム２−１は、メモリ領域３５のスロット記憶領域のうち、プラットフォーム２−１のスロット３０５−１に割り当てられたスロット記憶領域（ここでは、Ｓｌｏｔ＃０）に送信データを格納する。
【００４７】
プラットフォーム２−１のブリッジドライバ２０は、送信先のスロット３０５を示すスロット情報と、送信先のメモリ領域３５におけるスロット記憶領域のアドレスを示すアドレス情報を、取得または生成する（ステップＳ７０２）。
【００４８】
次いで、プラットフォーム２−１のブリッジドライバ２０は、スロット情報と、アドレス情報と、送信データを、含む転送データを中継装置３に渡す（ステップＳ７０３）。これにより、中継装置３は、スロット情報に基づいて送信元のスロット３０５−１と送信先のスロット３０５−５を接続することにより、転送データを送信先のプラットフォーム２−５に転送する（ステップＳ７０４）。送信先のブリッジドライバ２０は、スロット情報およびアドレス情報に基づいて、プラットフォーム２−５が備えるメモリ２０５内のメモリ領域３５を分割したスロット記憶領域のうち、送信先のプラットフォーム２のスロット３０５−５（Ｓｌｏｔ＃４）に対応するスロット記憶領域に送信データ（または転送データ）を格納する（ステップＳ７０５）。
【００４９】
送信先のプラットフォーム２−５において、例えば、プログラムが、プラットフォーム２−５が備えるメモリ２０５内のメモリ領域３５に格納された送信データを読み出して、メモリ（ローカルメモリ）２０５や記憶部２０４に移動させる（ステップＳ７０６、ステップＳ７０７）。
【００５０】
以上のようにして、送信元のプラットフォーム２−１から送信先のプラットフォーム２−５にデータ（転送データ）が転送される。
【００５１】
次に、図８を用いて、本実施形態にかかる情報処理システム１におけるプラットフォーム２−１による送信データの送信処理の特徴的な処理について説明する。図８は、本実施形態にかかる情報処理システム１におけるプラットフォーム２−１による送信データの送信処理の一例を示すブロック図である。ここで、プラットフォーム２−１が、ＰＣＩｅのトランザクションの送信データを他のプラットフォーム２に送信する例について説明するが、プラットフォーム２−１以外のプラットフォーム２も同様にしてＰＣＩｅのトランザクションの送信データを他のプラットフォーム２に対して送信するものとする。
【００５２】
プロセッサ２１−１は、ＰＣＩｅのトランザクションにおいて他のプラットフォーム２に転送する送信データを生成する。
【００５３】
メモリ２０５は、プロセッサ２１−１によりトランザクション毎に生成される送信データの含まれるＴＬＰ（Transaction  Layer  Packet。パケットの一例）またはＤＬＬＰ（Data  Link  Layer  Packet。パケットの一例）毎に、当該ＴＬＰまたはＤＬＬＰを記憶する記憶領域を有する。また、各記憶領域には、当該記憶領域のアドレス情報も記憶される。ＰＣＩｅバスを介したプラットフォーム２間での送信データの交換は、トランザクションという形で管理される。そして、トランザクション単位の送信データは、複数のＴＬＰまたはＤＬＬＰにより構成される。なお、ＴＬＰは、プラットフォーム２間での送信データの交換に用いられるが、ＰＣＩｅバスを介した送信データの交換の過程において、ハードウェア的にエラーが生じる等の要因で、送信データが送信先に到達できない場合がある。その場合、制御フレームとして送信データを再要求する場合等に、情報交換制御専用のフレームとして複数のＤＬＬＰを含む送信データが、プラットフォーム２間において交換される。以下の説明では、送信データにＴＬＰが含まれる例について説明するが、送信データにＤＬＬＰが含まれる場合も同様である。
【００５４】
本実施形態では、メモリ２０５（本実施形態では、各スロット記憶領域）は、図８に示すように、各優先度のトランザクションのＴＬＰまたはＤＬＬＰを記憶する記憶領域を含む要求テーブル（例えば、４つの要求テーブルＴＬＰ＿ＨｉＬｉｓｔ，ＴＬＰ＿ＭｈＬｉｓｔ，ＴＬＰ＿ＭｌＬｉｓｔ，ＴＬＰ＿ＬｗＬｉｓｔ）の集合であるコントロール領域２０５ａを含む。
【００５５】
ここで、優先度は、ＰＣＩｅのトランザクションを処理する優先度である。本実施形態では、優先度には、優先度Ｌｖｌ＿Ｈｉ、優先度Ｌｖｌ＿Ｍｈｉ、優先度Ｌｖｌ＿Ｍｌｏｗ、および優先度Ｌｖｌ＿Ｌｏｗが含まれる。具体的には、優先度Ｌｖｌ＿Ｈｉが最も高い優先度であり、優先度Ｌｖｌ＿Ｍｈｉが優先度Ｌｖｌ＿Ｈｉの次に高い優先度であり、優先度Ｌｖｌ＿Ｍｌｏｗが優先度Ｌｖｌ＿Ｍｈｉの次に高い優先度であり、優先度Ｌｖｌ＿Ｌｏｗが最も低い優先度である。
【００５６】
優先度Ｌｖｌ＿Ｌｏｗは、例えば、画像データ等を送信する一般的な処理のトランザクションの優先度である。優先度Ｌｖｌ＿Ｈｉは、例えば、トランザクションの経過確認や、トランザクションの中断処理、情報処理システム１の電源操作等のトランザクションの優先度である。優先度Ｌｖｌ＿Ｍｈｉ，Ｌｖｌ＿Ｍｌｏｗは、一般的な処理のトランザクション、および、トランザクションの経過確認や、トランザクションの中断処理、情報処理システム１の電源操作等のトランザクション以外のトランザクションの優先度である。
【００５７】
本実施形態では、ＰＣＩｅのトランザクションに対して４つの優先度Ｌｖｌ＿Ｈｉ、Ｌｖｌ＿Ｍｈｉ、Ｌｖｌ＿Ｍｌｏｗ、およびＬｖｌ＿Ｌｏｗのいずれかが設定される例について説明するが、ＰＣＩｅのトランザクションに対して２つ以上の優先度のいずれかが設定されるものであれば、これに限定するものではない。例えば、ＰＣＩｅのトランザクションに対して、２つの優先度のうちいずれかが設定されていても良いし、５つ以上の優先度のうちいずれかが設定されていても良い。
【００５８】
また、本実施形態では、要求テーブルに含まれる各ＴＬＰの記憶領域には、プラットフォーム２−１のメモリ領域３５（メモリ２０５）上における当該記憶領域のアドレス情報が記憶される。そして、要求テーブルに含まれるアドレス情報には、ＴＬＰが送信済みか否かを示すビット（以下、転送完了ビットと言う。転送完了情報の一例）が含まれる。例えば、アドレス情報の１の位を、転送完了ビットとする。転送完了ビットには、ＴＬＰが送信済みである場合には０が記載され、ＴＬＰが未送信である場合には１が記載される。
【００５９】
チップセット２０６は、ＰＣＩｅコントローラ２０６ａ（コントローラの一例）を有する。ＰＣＩｅコントローラ２０６ａは、ブリッジドライバ２０（図２等参照）により実現される。本実施形態では、ＰＣＩｅコントローラ２０６ａは、プラットフォーム２間での送信データのＤＭＡ転送を実行する。
【００６０】
具体的には、ＰＣＩｅコントローラ２０６ａは、プラットフォーム２−１において発生するＰＣＩｅのトランザクションのうち第１トランザクションによって他のプラットフォーム２に送信する送信データ（以下、第１送信データと言う）をメモリ２０５から読み出してスロット３０５−１を介して他のプラットフォーム２に送信する。ＰＣＩｅコントローラ２０６ａは、第１送信データに含まれる１つのＴＬＰの送信が終わる度に、プラットフォーム２−１において第１トランザクションより優先度が高いＰＣＩｅのトランザクション（以下、第２トランザクションと言う）が発生しているか否かを判断する。
【００６１】
そして、ＰＣＩｅコントローラ２０６ａは、第２トランザクションが発生している場合、第２トランザクションによって他のプラットフォーム２に送信する送信データ（以下、第２送信データと言う）をメモリ２０５から読み出してスロット３０５−１を介して他のプラットフォーム２に送信する。その際、ＰＣＩｅコントローラ２０６ａは、第２送信データの他のプラットフォーム２への送信が終わるまで、第１送信データの他のプラットフォーム２への送信を中断する。
【００６２】
これにより、第１トランザクションの第１送信データを送信する通信に割り込んで、優先度が高い第２トランザクションの第２送信データを送信する通信が実行可能となる。その結果、第１トランザクションの終了を待たずに、優先度が高い第２トランザクション（例えば、第１トランザクションの経過確認や、第１トランザクションの中断処理、情報処理システム１の電源操作）が実行可能になる。最終的には、複数のプラットフォーム２のプロセッサ２１における処理を同期させ、安定した状態で情報処理システム１の電源を落とすことが可能となる。
【００６３】
具体的には、ＰＣＩｅコントローラ２０６ａは、他のプラットフォーム２に対して送信データを送信する際、要求テーブルから、ＴＬＰを読み出して他のプラットフォーム２送信する。その際、ＰＣＩｅコントローラ２０６ａは、要求テーブルが含む記憶領域に記憶されるＴＬＰのうち、当該ＴＬＰの記憶領域に記憶されるアドレス情報に含まれる転送完了ビットが１のＴＬＰを読み出して他のプラットフォーム２に送信する。すなわち、ＰＣＩｅコントローラ２０６ａは、メモリ２０５に記憶されるＴＬＰのうち、アドレス情報に含まれる転送完了ビットが送信済みでないことを示すＴＬＰを他のプラットフォーム２に送信する。また、他のプラットフォーム２にＴＬＰを送信後、ＰＣＩｅコントローラ２０６ａは他のプラットフォーム２に送信したＴＬＰの記憶領域に記憶されるアドレス情報に含まれる転送完了ビットを０に更新する。これにより、他のプラットフォーム２に対してＴＬＰが送信済みであるか否かを識別可能となるので、他のプラットフォーム２に対して送信済みのＴＬＰを、再度、他のプラットフォーム２に対して送信することを防止できる。
【００６４】
また、ＰＣＩｅコントローラ２０６ａは、トランザクションの優先度毎に、レベルテーブル（例えば、レベルテーブルＨｉＴｂｌ，ＭｈＴｂｌ，ＭｌｗＴｂｌ，ＬｗＴｂｌ）を取得または生成する。そして、ＰＣＩｅコントローラ２０６ａは、取得または生成したレベルテーブルをメモリ５に書き込む。ここで、レベルテーブルは、図８に示すように、送信データに含まれるＴＬＰのうち次に送信するＴＬＰ（または送信中のＴＬＰ）が記憶されるメモリ２０５上の記憶領域のアドレス情報であるカレント情報（ＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴ）を含む。本実施形態では、レベルテーブルは、図８に示すように、カレント情報（ＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴ）に加え、ＴＬＰ＿ＬＩＳＴ＿ＴＯＰ、ＴＬＰ＿ＬＩＳＴ＿ＥＮＤ、ＴＬＰ＿ＬＩＳＴ＿ＣＯＮＴＲＯＬ、およびＴＬＰ＿ＬＩＳＴ＿ＳＴＡＴＵＳを含む。
【００６５】
ＴＬＰ＿ＬＩＳＴ＿ＴＯＰは、送信データが含むＴＬＰのうち最初に送信するＴＬＰが記憶される先頭の記憶領域のアドレス情報（先頭アドレス情報）である。ＴＬＰ＿ＬＩＳＴ＿ＥＮＤは、送信データが含むＴＬＰのうち最後に送信するＴＬＰが記憶される終端の記憶領域のアドレス情報（終端アドレス情報）である。また、ＴＬＰ＿ＬＩＳＴ＿ＣＯＮＴＲＯＬは、送信データが記憶される記憶領域をスヌープする方式を示すメモリ管理制御フラグである。ここで、スヌープについて説明する。メモリ２０５をキャッシュ経由で使うとＭＰＵ等のプロセッサ２１内部のキャッシュに記憶される送信データと、メモリ２０５（または装置制御のためのレジスタ）に記憶される送信データの間に一時的に乖離が発生する。そこで、スヌープは、送信データの流れに沿って物理的に調整しつつ装置間で送信データを送受信するための約束である。スヌープには、手動で最新データ化する方式や、アクセス時間に従って最新データ化する方法など、様々な方式がある。ＴＬＰ＿ＬＩＳＴ＿ＣＯＮＴＲＯＬは、これらのスヌープの方式を示すメモリ管理制御フラグである。また、ＴＬＰ＿ＬＩＳＴ＿ＳＴＡＴＵＳは、送信データの送信にエラーが発生したか否かを示すステータス情報である。これにより、レベルテーブルを参照して、送信データの送信にエラーが発生したか否かを容易に特定可能となる。
【００６６】
本実施形態では、ＰＣＩｅコントローラ２０６ａは、トランザクションが発生すると、当該トランザクションの優先度の要求テーブルを参照して、当該トランザクションの優先度に対応するレベルテーブルを設定し直す。そして、ＰＣＩｅコントローラ２０６ａは、発生したトランザクションのレベルテーブルが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしなから、レベルテーブルが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２へ送信する。
【００６７】
ただし、送信データの他のプラットフォーム２への送信が中断している場合には、ＰＣＩｅコントローラ２０６ａは、レベルテーブルが含むＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしながら、レベルテーブルが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまでの他のプラットフォーム２へ送信する。
【００６８】
これにより、レベルテーブルを確認するだけで、送信データの送信のエラーの有無を判断できる。その結果、第１トランザクションの第１送信データを送信する通信に対する、優先度が高い第２トランザクションの第２送信データを送信する通信の割込みによるＰＣＩｅコントローラ２０６ａの処理負荷を軽減することができる。なお、通信停止状態を確認する場合に、レベルテーブルがメモリ２０５上に記憶されているため、スヌープを利用することで、プラットフォーム２間で高速に送信データの交換ができる。
【００６９】
本実施形態では、ＰＣＩｅコントローラ２０６ａは、上述した送信用のレベルテーブルと同様にして、受信用のレベルテーブルを取得または生成し、当該取得または生成した受信用のレベルテーブルをメモリ２０５に書き込む。そして、ＰＣＩｅコントローラ２０６ａは、他のプラットフォーム２から送信データを受信する際、受信用のレベルテーブルを用いて、メモリ２０５への当該受信した送信データに含まれるＴＬＰ（またはＤＬＬＰ）の書込みを行うものとする。
【００７０】
本実施形態では、上述したＰＣＩｅコントローラ２０６ａによる処理を、ブリッジドライバ２０（ソフトウェア）を実行することにより実現しているが、発生したトランザクションの送信データが含むＴＬＰを送信する処理を、専用のＬＳＩ等のハードウェアにより実現することも可能である。これにより、新たなトランザクションが発生する度に行われる要求テーブルへの送信データの書き込みおよびレベルテーブルの取得または生成や、プラットフォーム２間での送信データの通信の高速化等によって、ブリッジドライバ２０を実行するプロセッサのオーバーヘッドを最小限に抑えることができる。その場合、専用のＬＳＩ等のハードウェアは、優先度が高いトランザクションから順に、当該トランザクションの送信データが含むＴＬＰを送信する処理を継続的に実行するものとする。
【００７１】
次に、図８を用いて、本実施形態にかかる情報処理システム１におけるプラットフォーム２−１における送信データの送信処理の流れの一例について説明する。
【００７２】
ここでは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データの送信中に、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションが発生した場合における、プラットフォーム２−１における送信データの送信処理について説明する。
【００７３】
まず、優先度Ｌｖｌ＿Ｌｏｗのトランザクションによる送信データの送受信要求が入力されると、ＰＣＩｅコントローラ２０６ａは、図８に示すように、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの要求テーブルＴＬＰ＿ＬｗＬｉｓｔに対して、送信データを書き込む。
【００７４】
さらに、ＰＣＩｅコントローラ２０６ａは、図８に示すように、要求テーブルＴＬＰ＿ＬｗＬｉｓｔを参照して、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌを設定し直す。具体的には、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＴＯＰに対して、発生したトランザクションの要求テーブルＴＬＰ＿ＬｗＬｉｓｔに含まれる先頭の記憶領域の先頭アドレス情報を設定する。また、ＰＣＩｅコントローラ２０６ｅは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＥＮＤに対して、発生したトランザクションの要求テーブルＴＬＰ＿ＬｗＬｉｓｔに含まれる終端の記憶領域の終端アドレス情報を設定する。さらに、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対して、発生したトランザクションの要求テーブルＴＬＰ＿ＬｗＬｉｓｔに含まれる記憶領域のうち次に送信するＴＬＰまたは送信中のＴＬＰが記憶される記憶領域のアドレス情報を設定する。
【００７５】
次に、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ３０）から順に、記憶領域を１つずつずらしながら、レベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（ＴＬＰ３ｎ）まで他のプラットフォーム２に送信する。その際、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含む１つのＴＬＰを送信する度に、優先度Ｌｖｌ＿Ｌｏｗより高い優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉ，Ｌｖｌ＿Ｍｌｏｗのトランザクションの送信データの送受信要求が入力されたか否かを判断する。
【００７６】
ここで、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含むＴＬＰ（例えば、ＴＬＰ３１）の送信中に、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションの送信データの送受信要求が入力された場合、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションの要求テーブルＴＬＰ＿ＨｉＬｉｓｔ，ＴＬＰ＿ＭｈＬｉｓｔに対して、送信データを書き込む。さらに、ＰＣＩｅコントローラ２０６ａは、要求テーブルＴＬＰ＿ＨｉＬｉｓｔ，ＴＬＰ＿ＭｈＬｉｓｔを参照して、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿ＭｈｉのレベルテーブルＨｉＴｂｌ，ＭｈＴｂｌを設定する。
【００７７】
次いで、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含むＴＬＰの送信を中断して、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ０１）から順に、記憶領域を１つずつずらしながら、当該レベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ０ｎ）まで他のプラットフォーム２に送信する。
【００７８】
次に、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ１１）から順に、記憶領域を１つずつずらしながら、ＴＬＰを他のプラットフォーム２に送信する。その際、優先度Ｌｖｌ＿Ｍｈｉのトランザクションの送信データが含む１つのＴＬＰを送信する度に、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｍｈｉより高い優先度Ｌｖｌ＿Ｈｉの新たなトランザクションの送信データの送受信要求が入力されたか否かを判断する。優先度Ｌｖｌ＿Ｈｉの新たなトランザクションの送信データの送受信要求が入力されていない場合、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信する。
【００７９】
ただし、図８に示す例では、要求テーブルＴＬＰ＿ＭｈＬｉｓｔが含むＴＬＰ１２の記憶領域以降の記憶領域がＮＵＬＬとなっている。そのため、ＰＣＩｅコントローラ２０６ａは、要求テーブルＴＬＰ＿ＭｈＬｉｓｔに記憶されるＴＬＰ１２まで他のプラットフォーム２に送信する。
【００８０】
そして、優先度Ｌｖｌ＿Ｌｏｗより高い優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションの送信データの送信が完了すると、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ３２）から他のプラットフォーム２への送信を再開し、当該レベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ３ｎ）まで他のプラットフォーム２に送信する。
【００８１】
次に、図９を用いて、本実施形態にかかる情報処理システム１におけるプラットフォーム２における送信データの送信処理の流れの一例について説明する。図９は、本実施形態にかかる情報処理システム１におけるプラットフォーム２による送信データの送信処理の流れの一例を示すフローチャートである。
【００８２】
ＰＣＩｅコントローラ２０６ａは、まず、トランザクションの各優先度のレベルテーブルを初期化する（ステップＳ９０１）。具体的には、ＰＣＩｅコントローラ２０６ａは、各優先度のレベルテーブルに含まれるＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴ、ＴＬＰ＿ＬＩＳＴ＿ＴＯＰ、ＴＬＰ＿ＬＩＳＴ＿ＥＮＤ、ＴＬＰ＿ＬＩＳＴ＿ＣＯＮＴＲＯＬ、およびＴＬＰ＿ＬＩＳＴ＿ＳＴＡＴＵＳを０とすることで、レベルテーブルを初期化する。
【００８３】
本実施形態では、ＰＣＩｅコントローラ２０６ａは、４つの優先度Ｌｖｌ＿Ｈｉ、Ｌｖｌ＿Ｍｈｉ、Ｌｖｌ＿Ｍｌｏｗ、およびＬｖｌ＿ＬｏｗのそれぞれのレベルテーブルＨｉＴｂｌ，ＭｈＴｂｌ，ＭｌｗＴｂｌ，ＬｗＴｂｌを初期化する。
【００８４】
次いで、ＰＣＩｅのトランザクションが発生しかつ当該トランザクションの送信データの送受信要求が入力されると、ＰＣＩｅコントローラ２０６ａは、発生したトランザクションの要求テーブルに対して、送信データを書き込む（ステップＳ９０２）。さらに、ＰＣＩｅコントローラ２０６ａは、要求テーブルを参照して、発生したトランザクションの優先度のレベルテーブルを設定し直す（ステップＳ９０３）。
【００８５】
レベルテーブルを設定し直すと、ＰＣＩｅコントローラ２０６ａは、最も高い優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かを判断する（ステップＳ９０４）。
【００８６】
最も高い優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されている場合（ステップＳ９０４：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしなから、レベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信する（ステップＳ９０５）。その際、ＰＣＩｅコントローラ２０６ａは、１つのＴＬＰの他のプラットフォーム２への送信が終わる度に、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信したか否かを判断する（ステップＳ９０６）。
【００８７】
優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すＴＬＰまで他のプラットフォーム２に送信していない場合（ステップＳ９０６：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対して、要求テーブルＴＬＰ＿ＨｉＬｉｓｔに含まれる記憶領域のうち次に送信するＴＬＰの記憶領域のアドレス情報を設定する（ステップＳ９０７）。さらに、ＰＣＩｅコントローラ２０６ａは、要求テーブルＴＬＰ＿ＨｉＬｉｓｔのアドレス情報のうち最後に送信したＴＬＰのアドレス情報の転送完了ビットを０に更新して、ステップＳ９０５に戻る。
【００８８】
一方、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信した場合（ステップＳ９０６：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、要求テーブルＴＬＰ＿ＨｉＬｉｓｔに終了フラグを設定し、送信データの送信を終了する。本実施形態では、ＰＣＩｅコントローラ３０６ａは、要求テーブルＴＬＰ＿ＨｉＬｉｓｔの終端のアドレス情報の転送完了ビットを０に更新して、送信データの送信を終了する。
【００８９】
その後、ＰＣＩｅコントローラ２０６ａは、ステップＳ９０４に戻り、再び、優先度Ｌｖｌ＿ＨｉのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かを判断する。そして、優先度Ｌｖｌ＿ＨｉのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されていない場合（ステップＳ９０４：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かを判断する（ステップＳ９０８）。
【００９０】
優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されている場合（ステップＳ９０８：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしながら、レベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信する（ステップＳ９０９）。その際、ＰＣＩｅコントローラ２０６ａは、１つのＴＬＰの他のプラットフォーム２への送信が終わる度に、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信したか否かを判断する（ステップＳ９１０）。
【００９１】
優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信していない場合（ステップＳ９１０：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対して、要求テーブルＴＬＰ＿ＭｈＬｉｓｔに含まれる記憶領域のうち次に送信するＴＬＰの記憶領域のアドレス情報を設定する（ステップＳ９１１）。また、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｍｈｉのトランザクションの要求テーブルＴＬＰ＿ＭｈＬｉｓｔのアドレス情報のうち最後に送信したＴＬＰのアドレス情報の転送完了ビットを０に更新する。さらに、ＰＣＩｅコントローラ２０６ａは、新たなトランザクションの送信データの送受信要求が入力されたか否かを判断する（ステップＳ９２０）。新たなトランザクションの送信データの送受信要求が入力されていない場合（ステップＳ９２０：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、ステップＳ９０４に戻る。一方、新たなトランザクションの送信データの送受信要求が入力された場合（ステップＳ９２０：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、ステップＳ９０２に戻る。
【００９２】
また、ステップＳ９１０において、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信した場合（ステップＳ９１０：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｍｈｉのトランザクションの要求テーブルＴＬＰ＿ＭｈＬｉｓｔに終了フラグを設定し、当該トランザクションの送信データの送信を終了する。その後、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。
【００９３】
また、ステップＳ９０８において、優先度Ｌｖｌ＿ＭｈｉのレベルテーブルＭｈＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されていない場合（ステップＳ９０８：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｈＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かを判断する（ステップＳ９１２）。
【００９４】
優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されている場合（ステップＳ９１２：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしながら、レベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信する（ステップＳ９１３）。その際、ＰＣＩｅコントローラ２０６ａは、１つのＴＬＰの他のプラットフォーム２への送信が終わる度に、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信したか否かを判断する（ステップＳ９１４）。
【００９５】
優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信していない場合（ステップＳ９１４：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対して、要求テーブルＴＬＰ＿ＭｌＬｉｓｔの記憶領域のうち次に送信するＴＬＰの記憶領域のアドレス情報を設定する（ステップＳ９１５）。さらに、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｍｌｏｗのトランザクションの要求テーブルＴＬＰ＿ＭｌＬｉｓｔの記憶領域のうち最後に送信したＴＬＰの記憶領域に記憶されるアドレス情報の転送完了ビットを０に更新する。その後、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。
【００９６】
ステップＳ９１４において、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで中他のプラットフォーム２に送信した場合（ステップＳ９１４：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｍｌｏｗのトランザクションの要求テーブルＴＬＰ＿ＭｌＬｉｓｔに終了フラグを設定し、当該トランザクションの送信データの送信を終了する。その後、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。
【００９７】
ステップＳ９１２において、優先度Ｌｖｌ＿ＭｌｏｗのレベルテーブルＭｌＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されていない場合（ステップＳ９１２：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かを判断する（ステップＳ９１６）。
【００９８】
優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されていない場合（ステップＳ９１６：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。一方、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されている場合（ステップＳ９１６：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰから順に、記憶領域を１つずつずらしながら、レベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信する（ステップＳ９１７）。そして、ＰＣＩｅコントローラ２０６ａは、１つのＴＬＰの他のプラットフォーム２への送信が終わる度に、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信したか否かを判断する（ステップＳ９１８）。
【００９９】
優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信していない場合（ステップＳ９１８：Ｎｏ）、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対して、要求テーブルＴＬＰ＿ＬｗＬｉｓｔに含まれる記憶領域のうち次に送信するＴＬＰの記憶領域のアドレス情報を設定する（ステップＳ９１９）。さらに、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの要求テーブルＴＬＰ＿ＬｗＬｉｓｔのアドレス情報のうち最後に送信したＴＬＰのアドレスの転送完了ビットを０に更新する。その後、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。
【０１００】
ステップＳ９１８において、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰまで他のプラットフォーム２に送信した場合（ステップＳ９１８：Ｙｅｓ）、ＰＣＩｅコントローラ２０６ａは、ステップＳ９２０に進む。
【０１０１】
このように、本実施形態にかかる情報処理システム１によれば、第１トランザクションの第１送信データを送信する通信に割り込んで、優先度が高い第２トランザクションの第２送信データを送信する通信が実行可能となる。その結果、第１トランザクションの終了を待たずに、優先度が高い第２トランザクション（例えば、第１トランザクションの経過確認や、第１トランザクションの中断処理、情報処理システム１の電源操作）が実行可能になる。
【０１０２】
また、本実施形態にかかる情報処理システム１によれば、レベルテーブルを確認するだけで、送信データの送信のエラーの有無を判断できる。その結果、第１トランザクションの第１送信データを送信する通信に対する、優先度が高い第２トランザクションの第２送信データを送信する通信の割込みによるＰＣＩｅコントローラ２０６ａの処理負荷を軽減することができる。
【０１０３】
また、本実施形態にかかる情報処理システム１によれば、他のプラットフォーム２に対してＴＬＰが送信済みであるか否かを識別可能となるので、他のプラットフォーム２に対して送信済みのＴＬＰを、再度、他のプラットフォーム２に対して送信することを防止できる。
【０１０４】
また、本実施形態にかかる情報処理システム１によれば、レベルテーブルを参照して、送信データの送信にエラーが発生したか否かを容易に特定可能となる。
【０１０５】
（第２の実施形態）
第１の実施形態では、情報処理システム１における送信処理の概要について説明した。第２の実施形態では、情報処理システム１で実行される送信処理について具体的に説明する。
【０１０６】
図１０は、本実施形態にかかるプラットフォーム２−１〜２−３のソフトウェアの詳細なブロック構成の一例を示す図である。図１０に示されるように、プラットフォーム２−１は、アプリケーション１００１を備えている。アプリケーション１００１は、ＯＳ上で実行されるソフトウェアであって、リクエスタ１０１１を備えている。リクエスタ１００３は、ドライバに対する要求コマンドを生成し、後述するドライバサービスＵＩ１００２を経由して当該要求コマンドをドライバに送信するリクエスト機能を有する。
【０１０７】
プラットフォーム２−１は、ドライバサービスＵＩ１００２と、ドライバと、サービスと、をさらに備えている。ドライバサービスＵＩ１００２は、アプリケーション１００１から、ドライバを呼び出すためのインターフェースとして機能する。ドライバ、及びサービスは、ドライバサービスＵＩ１００２より下層に設けられたソフトウェアとする。ドライバは、ブリッジドライバ２０と、メイン処理部１０５１と、ＴＬＰ―Ｈｉ処理部１０５２と、ＴＬＰ―ＭＨｉ処理部１０５３と、ＴＬＰ―ＭＬｗ処理部１０５４と、ＴＬＰ―Ｌｏｗ処理部１０５５と、を備えている。さらにドライバは、複数のレベルテーブル１０６１を備えている。
【０１０８】
複数のレベルテーブル１０６１は、要求コマンドを分割したＴＬＰを、優先度に応じて管理するためのテーブル群であって、一例として、レベルテーブルＨｉＴｂｌ，ＭｈＴｂｌ，ＭｌｗＴｂｌ，ＬｗＴｂｌで構成されている。
【０１０９】
メイン処理部１０５１は、リクエスタ１０１１から要求コマンドの受信や、受信した要求コマンドを分割したＴＬＰを送信するための全体的な制御を行う。
【０１１０】
ＴＬＰ―Ｈｉ処理部１０５２は、優先度が最も高い、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌに登録されているＴＬＰを、他のプラットフォーム２に送信する。
【０１１１】
ＴＬＰ―ＭＨｉ処理部１０５３は、優先度Ｌｖｌ＿Ｈｉの次に優先度が高い、優先度Ｌｖｌ＿ＭＨｉのレベルテーブルＭＨｉＴｂｌに登録されているＴＬＰを、他のプラットフォーム２に送信する。
【０１１２】
ＴＬＰ―ＭＬｗ処理部１０５４は、優先度Ｌｖｌ＿ＭＨｉの次に優先度が高い、優先度Ｌｖｌ＿ＭＬｗのレベルテーブルＭＬｗＴｂｌに登録されているＴＬＰを、他のプラットフォーム２に送信する。
【０１１３】
ＴＬＰ―Ｌｏｗ処理部１０５５は、優先度が最も低い、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｏｗＴｂｌに登録されているＴＬＰを、他のプラットフォーム２に送信する。
【０１１４】
図１１は、実施形態の情報処理システム１が送信データの送信処理を行う際に、各構成が行う処理の流れを例示したシーケンス図である。
【０１１５】
リクエスタ１０１１は、要求コマンド待ちを行う（Ｓ１１０１）。要求コマンドとは、例えば、他のプラットフォーム２に対するデータの送信要求が考えられる。
【０１１６】
リクエスタ１０１１は、要求コマンドを受け付けた場合に、要求コマンドの送信先（例えば、ＰＣＩｅで接続されている他のプラットフォーム２）のＱｕｅに、要求コマンドを受け付ける空きがあるか否かを判断する（Ｓ１１０２）。空きがないと判断した場合（Ｓ１１０２：Ｎｏ）、リクエスタ１０１１は、空きができるための待ち制御を行った後（Ｓ１１０３）、再びＳ１１０２から処理を行う。本実施形態においては、要求コマンドを送信する前に、空きがあるか否かを確認するため、通信異常がない限り、正常に要求コマンドを送信できる。なお、通信異常は、エラーやタイムアウトで認識することができる。
【０１１７】
一方、リクエスタ１０１１は、空きがあると判断した場合（Ｓ１１０２：Ｙｅｓ）、要求コマンドを生成する（Ｓ１１０４）。リクエスタ１０１１は、要求コマンドを、ドライバサービスＵＩ１００２を経由して、ドライバのメイン処理部１０５１に送信する（Ｓ１１０５）。
【０１１８】
リクエスタ１０１１は、要求コマンドを送信した後、再びＳ１１０１から処理を行う。これにより、次のリクエストに対応することが可能となる。
【０１１９】
図１１に示されるように、リクエスタ１０１１と、ドライバ内の各処理部と、はそれぞれ非同期で処理が行われている。次に、ドライバ内の各処理部の処理について説明する。
【０１２０】
メイン処理部１０５１は、複数のレベルテーブル１０６１を初期化する（Ｓ１１５１）。初期化されるレベルテーブルは、例えば、レベルテーブルＨｉＴｂｌ，ＭｈＴｂｌ，ＭｌｗＴｂｌ，ＬｗＴｂｌが含まれている。
【０１２１】
レベルテーブルには、リクエスタ１０１１からの要求コマンドの受信に応じて、要求コマンドに対応するＴＬＰのＱｕｅが追加されている。当該ＴＬＰのＱｕｅが追加される処理については後述する。本実施形態においては、物理転送を行うために、要求コマンドは、ＴＬＰのデータサイズ単位に分割される。要求コマンドをＴＬＰのデータサイズで分割されたデータを、要求データと称する。これにより、要求データの取り出しとは、送信するＴＬＰ単位で取り出されることを意味する。
【０１２２】
メイン処理部１０５１は、要求データの取り出し処理を開始する（Ｓ１１５２）。
【０１２３】
メイン処理部１０５１は、レベルテーブルＨｉＴｂｌに、リクエストの対象であるＴＬＰがあるか否かを判定する（Ｓ１１５３）。当該判定は、レベルテーブルＨｉＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＣＵＲＲＥＮＴに対してアドレス情報が設定されているか否かで、リクエストの対象であるＴＬＰがあるか否かを判定している。リクエストの対象であるＴＬＰがあるか否かを判定は、以降のレベルテーブルも同様の処理を行うものとして、説明を省略する。
【０１２４】
レベルテーブルＨｉＴｂｌにＴＬＰがあると判断された場合（Ｓ１１５３：Ｙｅｓ）、ＴＬＰ−Ｈｉ処理部１０５２は、レベルテーブルＨｉＴｂｌから、当該ＴＬＰに対応する要求データを取り出す（Ｓ１１５４）。
【０１２５】
ＴＬＰ−Ｈｉ処理部１０５２は、取り出した要求データを、他のプラットフォーム２に送信する処理を行う（Ｓ１１５５）。
【０１２６】
送信処理時にエラーが発生した場合は、ＴＬＰ全体の送信が失敗したものとして、メイン処理部１０５１が、リクエスタ１０１１に通知する。
【０１２７】
ＴＬＰ−Ｈｉ処理部１０５２は、次のＴＬＰを取り出すために、取り出し位置を更新する（Ｓ１１５６）。取り出し位置の更新は、送信データが取り出される毎に、記憶領域を１つずつずらす処理として行われる。読み出し位置の更新は、レベルテーブルＨｉＴｂｌのＴＬＰ＿ＬＩＳＴ＿ＥＮＤで示される記憶領域に記憶されるＴＬＰが取り出されるまで行われる。読み出し位置の更新は、他のレベルテーブルも同様に行われるものとして説明を省略する。その後、再びＳ１１５２から処理を行う。このように、本実施形態のドライバに含まれる各処理部は、エラーが生じたか否かにかかわらず、ＴＬＰの送信が終了した場合に、速やかに次の処理に移行する。
【０１２８】
Ｓ１１５３において、メイン処理部１０５１は、レベルテーブルＨｉＴｂｌにＴＬＰがないと判断した場合（Ｓ１１５３：Ｎｏ）、レベルテーブルＭＨｉＴｂｌに、リクエストの対象であるＴＬＰがあるか否かを判定する（Ｓ１１５７）。
【０１２９】
メイン処理部１０５１は、レベルテーブルＭＨｉＴｂｌにＴＬＰがあると判断した場合（Ｓ１１５７：Ｙｅｓ）、ＴＬＰ−ＭＨｉ処理部１０５３は、レベルテーブルＭＨｉＴｂｌから、当該ＴＬＰに対応する要求データを取り出す（Ｓ１１５８）。
【０１３０】
ＴＬＰ−ＭＨｉ処理部１０５３は、取り出した要求データを、他のプラットフォーム２に送信する処理を行う（Ｓ１１５９）。ＴＬＰ−ＭＨｉ処理部１０５３は、次のＴＬＰを取り出すために、取り出し位置を更新する（Ｓ１１６０）。その後、再びＳ１１５２から処理を行う。
【０１３１】
Ｓ１１５７において、メイン処理部１０５１が、レベルテーブルＭＨｉＴｂｌにＴＬＰがないと判断した場合（Ｓ１１５７：Ｎｏ）、メイン処理部１０５１は、レベルテーブルＭＬｗＴｂｌに、リクエストの対象であるＴＬＰがあるか否かを判定する（Ｓ１１６１）。
【０１３２】
メイン処理部１０５１は、レベルテーブルＭＬｗＴｂｌにＴＬＰがあると判断した場合（Ｓ１１６１：Ｙｅｓ）、ＴＬＰ−ＭＬｗ処理部１０５４は、レベルテーブルＭＬｗＴｂｌから、当該ＴＬＰに対応する要求データを取り出す（Ｓ１１６２）。
【０１３３】
ＴＬＰ−ＭＬｗ処理部１０５４は、取り出した要求データを、他のプラットフォーム２に送信する処理を行う（Ｓ１１６３）。ＴＬＰ−ＭＬｗ処理部１０５４は、次のＴＬＰを取り出すために、取り出し位置を更新する（Ｓ１１６４）。その後、再びＳ１１５２から処理を行う。
【０１３４】
Ｓ１１６１において、メイン処理部１０５１は、レベルテーブルＭＬｗＴｂｌにＴＬＰがないと判断した場合（Ｓ１１６１：Ｎｏ）、メイン処理部１０５１は、レベルテーブルＬｏｗＴｂｌに、リクエストの対象であるＴＬＰがあるか否かを判定する（Ｓ１１６５）。
【０１３５】
メイン処理部１０５１は、レベルテーブルＬｏｗＴｂｌにＴＬＰがあると判断した場合（Ｓ１１６５：Ｙｅｓ）、ＴＬＰ−Ｌｏｗ処理部１０５５は、レベルテーブルＬｏｗＴｂｌから、当該ＴＬＰに対応する要求データを取り出す（Ｓ１１６６）。
【０１３６】
ＴＬＰ−Ｌｏｗ処理部１０５５は、取り出した要求データを、他のプラットフォーム２に送信する処理を行う（Ｓ１１６７）。ＴＬＰ−Ｌｏｗ処理部１０５５は、次のＴＬＰを取り出すために、取り出し位置を更新する（Ｓ１１６８）。その後、再びＳ１１５２から処理を行う。
【０１３７】
Ｓ１１６５において、メイン処理部１０５１が、レベルテーブルＬｏｗＴｂｌにＴＬＰがないと判断した場合（Ｓ１１６５：Ｎｏ）、所定時間待機した(Wait)後（Ｓ１１６９）、再びＳ１１５２から処理を行う。
【０１３８】
また、メイン処理部１０５１は、上記の処理と非同期で実行する処理がある。当該処理について説明する。
【０１３９】
メイン処理部１０５１は、リクエスタ１０１１から、要求コマンドの受信制御を開始する（Ｓ１１７１）。メイン処理部１０５１は、要求コマンドを受信したか否かを判定する（Ｓ１１７２）。メイン処理部１０５１が、受信していないと判定した場合（Ｓ１１７２：Ｎｏ）、所定時間待機した(Wait)後（Ｓ１１７３）、再びＳ１１７１から処理を行う。
【０１４０】
一方、メイン処理部１０５１は、要求コマンドを受信したと判定した場合（Ｓ１１７２：Ｙｅｓ）、受信した要求コマンドに関するスレッド、コマンド引数等に基づいて、優先度（登録先のレベルテーブル）を決定する（Ｓ１１７４）。
【０１４１】
メイン処理部１０５１は、要求コマンドをＴＬＰのデータサイズ毎に分割して、送信データとして、決定されたレベルテーブルにＱｕｅとして追加する（Ｓ１１７５）。その後、メイン処理部１０５１は、送信データが追加されたレベルテーブルに対して、当該送信データが取り出し可能になるように、取り出し位置に関する情報を更新する。例えば、追加された送信データに応じて、ＴＬＰ＿ＬＩＳＴ＿ＥＮＤの更新がなされる。
【０１４２】
本実施形態においては、上述したように、ＴＬＰ単位で送信処理が行われる毎に、優先度に応じて送信対象となるＴＬＰを特定する処理が行われる。これにより、他の要求コマンドに対応するＴＬＰを送信中であっても、優先度が高い要求コマンドを受信した場合に、当該優先度が高い要求コマンドを分割したＴＬＰを速やかに送信する処理を実現できる。
【０１４３】
（第３の実施形態）
上述した実施形態は、情報処理システム１のハードウェア構成を制限するものではない。第３の実施形態では、情報処理システムのハードウェア構成の別態様について説明する。
【０１４４】
次に、図１２を用いて、本実施形態にかかる情報処理システム１２００のハードウェア構成の一例について説明する。なお、図２と同様の構成については同一の符号を割り当て、説明を省略する。
【０１４５】
図１２は、本実施形態にかかる情報処理システム１２００のハードウェア構成の一例を示す図である。以下の説明では、プラットフォーム１２０１−１がホストＰＣとして機能し、プラットフォーム１２０１−２〜１２０８−８が、ＡＩ推論処理や画像処理等を実行する演算部として機能する例について説明する。
【０１４６】
ホストＰＣとして機能するプラットフォーム１２０１−１のハードウェア構成において、チップセット１２０６以外の構成は、図２のプラットフォーム２−１と同様の構成として、説明を省略する。また、ＡＩ推論処理や画像処理等を実行する演算部として機能するプラットフォーム１２０１−２〜１２０１−８のハードウェア構成も同様に、チップセット１２０６以外の構成は、図２のプラットフォーム２−２〜２−８と同様の構成として、説明を省略する。
【０１４７】
チップセット２０６は、プロセッサ２１−１、ＵＳＢポート２０２、通信Ｉ／Ｆ２０３、記憶部２０４、メモリ２０５等のそれぞれが接続されている。さらに、本実施形態のチップセット２０６内には、中継装置１３００に接続するためのルート・コンプレックス（ＲＣ）１２０６ａが含まれている。
【０１４８】
次に、中継装置１３００のハードウェア構成について説明する。
【０１４９】
中継装置１３００は、図１２に示すように、通信制御マイコン３０１、電源制御マイコン３０２、キャッシュ３０３、および複数のエンド・ポイント（ＥＰ）１３０５−１〜１３０５−８を備える。エンド・ポイント１３０５−１〜１３０５−８は、それぞれＰＣＩｅの規格を満たすように構成されたデバイスが接続される拡張スロット（拡張バス）として機能する。エンド・ポイント１３０５−１〜１３０５−８は、プラットフォーム１２０１−１〜１２０１−８と接続するための構成であって、それぞれスロット番号（ｓｌｏｔ＃０〜ｓｌｏｔ＃７）が割り当てられている。
【０１５０】
そして、中継装置１３００においては、通信制御マイコン３０１、キャッシュ３０３、および複数のエンド・ポイント１３０５−１〜１３０５−８は、内部バス３０４を介して互いに通信可能に接続されている。
【０１５１】
また、１つのエンド・ポイント１３０５に対して、１つのプラットフォーム１２０１が接続されていても良いが、１つのエンド・ポイント１３０５に対して、複数のプラットフォーム１２０１が接続されていても良い。さらに、１つのプラットフォーム１２０１に対して複数のエンド・ポイント１３０５を割り当てることにより、当該プラットフォーム１２０１は、広い通信帯域を用いた通信が可能となる。
【０１５２】
さらに、中継装置１３００は、ＥＰｔоＥＰ（End  Point  to  End  Point）でデータをトンネリングさせて、複数のルート・コンプレックス（ＲＣ）１２０６ａにデータを転送する。
【０１５３】
次に、図１３を用いて、本実施形態にかかる情報処理システム１２００におけるプラットフォーム１２０１−１における送信データの送信処理の流れの一例について説明する。なお、要求テーブル（例えば、要求テーブルＴＬＰ＿ＬｗＬｉｓｔ）への送信データの書き込み処理及びレベルテーブル（例えば、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌ）への設定処理は、図８と同様として説明を省略する。
【０１５４】
そして、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿ＬｏｗのレベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ３０）から順に、記憶領域を１つずつずらしながら、レベルテーブルＬｗＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（ＴＬＰ３ｎ）を読み出し、ルート・コンプレックス１２０６ａが、読み出されたＴＬＰ（ＴＬＰ３ｎ）を、当該ルート・コンプレックス１２０６ａに接続されているエンド・ポイント１３０５−１に送信する。そして、ＥＰｔоＥＰ（End  Point  to  End  Point）でデータをトンネリングさせた後、エンド・ポイント１３０５が、ＴＬＰ（ＴＬＰ３ｎ）を、他のプラットフォーム２のルート・コンプレックス１２０６ａに送信する。
【０１５５】
その際、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含む１つのＴＬＰを送信する度に、優先度Ｌｖｌ＿Ｌｏｗより高い優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉ，Ｌｖｌ＿Ｍｌｏｗのトランザクションの送信データの送受信要求が入力されたか否かを判断する。
【０１５６】
ここで、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含むＴＬＰ（例えば、ＴＬＰ３１）の送信中に、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションの送信データの送受信要求が入力された場合、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿Ｍｈｉのトランザクションの要求テーブルＴＬＰ＿ＨｉＬｉｓｔ，ＴＬＰ＿ＭｈＬｉｓｔに対して、送信データを書き込む。さらに、ＰＣＩｅコントローラ２０６ａは、要求テーブルＴＬＰ＿ＨｉＬｉｓｔ，ＴＬＰ＿ＭｈＬｉｓｔを参照して、優先度Ｌｖｌ＿Ｈｉ，Ｌｖｌ＿ＭｈｉのレベルテーブルＨｉＴｂｌ，ＭｈＴｂｌを設定する。
【０１５７】
次いで、ＰＣＩｅコントローラ２０６ａは、優先度Ｌｖｌ＿Ｌｏｗのトランザクションの送信データが含むＴＬＰの送信を中断して、優先度Ｌｖｌ＿ＨｉのレベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＴＯＰが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ０１）から順に、記憶領域を１つずつずらしながら、当該レベルテーブルＨｉＴｂｌが含むＴＬＰ＿ＬＩＳＴ＿ＥＮＤが示すメモリ２０５上の記憶領域に記憶されるＴＬＰ（例えば、ＴＬＰ０ｎ）まで読み出し、ルート・コンプレックス１２０６ａが、読み出されたＴＬＰを、中継装置１３００のエンド・ポイント１３０５−１に送信する。これにより上述した処理と同様の処理が行われるため、他のプラットフォーム２にＴＬＰが送信される。
【０１５８】
他の優先度のレベルテーブルにおける処理は、中継装置１３００においてＥＰｔоＥＰ（End  Point  to  End  Point）でデータをトンネリングさせる以外、第１の実施形態の図８と同様の処理のため、説明を省略する。
【０１５９】
本実施形態においては、ルート・コンプレックス１２０６ａがプラットフォーム１２０１側、エンド・ポイント１３０５が中継装置１３００側に設けられた例について説明した。しかしながら、本実施形態は、ルート・コンプレックス及びエンド・ポイントの配置や、接続関係等を限定するものではなく、他の配置や接続態様を適用しても良い。
【０１６０】
上述の実施形態では、各部のＩ／ＯシリアルインタフェースとしてＰＣＩｅを例に挙げて説明したが、Ｉ／ＯシリアルインタフェースはＰＣＩｅに限定されない。例えば、各部のＩ／Ｏシリアルインタフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（例えば、１つのシステムまたは１つの装置）で高速にデータを転送できる汎用のバスであってよい。
【０１６１】
Ｉ／Ｏシリアルインタフェースは、ポイント・ツー・ポイント接続ができ、データをパケットベースでシリアル転送可能な構成でよい。尚、Ｉ／Ｏシリアルインタフェースは、複数のレーンを有してよい。Ｉ／Ｏシリアルインタフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルを変換する物理層を、有してよい。また、Ｉ／Ｏシリアルインタフェースは、階層の最上位であり１または複数のポートを有するルート・コンプレックス、Ｉ／Ｏデバイスであるエンド・ポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。Ｉ／Ｏシリアルインタフェースは、送信するデータとクロック信号をマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【符号の説明】
【０１６２】
１  情報処理システム、
２、１２０１  プラットフォーム
３、１３００  中継装置
２１  プロセッサ
２０４  記憶部
２０５  メモリ
２０６、１２０６  チップセット
２０６ａ  ＰＣＩｅコントローラ
３０１  通信制御マイコン
３０５  スロット
１２０６ａ  ルート・コンプレックス
１３０５  エンド・ポイント
【図１】
2020135868.tif 000003
【図２】
2020135868.tif 000004
【図３】
2020135868.tif 000005
【図４】
2020135868.tif 000006
【図５】
2020135868.tif 000007
【図６】
2020135868.tif 000008
【図７】
2020135868.tif 000009
【図８】
2020135868.tif 000010
【図９】
2020135868.tif 000011
【図１０】
2020135868.tif 000012
【図１１】
2020135868.tif 000013
【図１２】
2020135868.tif 000014
【図１３】
2020135868.tif 000015