(57)【特許請求の範囲】
【請求項１】
演算処理部と、
前記演算処理部から送信される命令にしたがい処理を実行する複数の処理部と、
前記演算処理部と前記処理部との通信を中継するスイッチと、
各前記処理部の前記スイッチを介した前記演算処理部に対する位置情報及び各前記処理部でイベントが発生した場合にそれぞれの前記処理部に実行させる処理が登録された実行処理情報を有し、特定の処理部で前記イベントが発生した場合、イベント発生通知を取得し、取得した前記イベント発生通知を基に前記位置情報から前記特定の処理部の位置を特定し、前記特定の処理部に実行させる処理を前記実行処理情報から抽出し、抽出した処理の実行命令を、特定した位置を基に前記特定の処理部へ送信する入出力制御部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記位置情報は、前記処理部の識別情報と前記スイッチを介した前記演算処理部に対する位置との対応情報を含み、
前記入出力制御部は、前記イベント発生通知に格納された前記処理部の前記識別情報と前記対応情報とを基に、前記スイッチを介した前記演算処理部に対する位置を取得する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記入出力制御部は、トランザクション・レイヤ・パケットを用いて前記実行命令の送信を行うことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記入出力制御部は、前記処理部の初期化の場合、前記イベント発生通知を前記演算処理部から受信し、前記処理部のエラー発生時及び割り込みの場合、前記エラー発生又は前記割り込みが発生した処理部から前記イベント発生通知を受信することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
演算処理装置と、前記演算処理装置から送信される命令にしたがい処理を実行する複数のデバイスと、前記演算処理装置と前記デバイスとの通信を中継するスイッチとを有する情報処理装置の制御方法であって、
特定のデバイスでイベントが発生した場合、イベント発生通知を取得し、
取得した前記イベント発生通知を基に、各前記デバイスの前記スイッチを介した前記演算処理装置に対する位置情報から前記特定のデバイスの位置を特定し、
前記特定のデバイスに実行させる処理を、各前記デバイスでイベントが発生した場合にそれぞれの前記デバイスに実行させる処理が登録された実行処理情報から抽出し、
抽出した処理の実行命令を、特定した位置を基に前記特定のデバイスへ送信する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
情報処理装置であるコンピュータの内部でCentral  Processing  Unit（ＣＰＵ）とInput／Output（Ｉ／Ｏ）デバイスを接続するバスの規格として、例えば、Peripheral  Component  Interconnect  Express（ＰＣＩｅ）が知られている。ＰＣＩｅは、ルートコンプレックスを頂点とし、Ｉ／Ｏデバイスを終点とするツリー構造を有する。複数のＩ／Ｏデバイスを接続するには、ツリー構造の中間点にＰＣＩｅスイッチが設置される。
【０００３】
例えば、ＰＣＩｅに準拠したＩ／Ｏデバイスには、イーサネット（登録商標）コントローラやSerial  Advanced  Technology  Attachment（ＳＡＴＡ）コントローラがある。
【０００４】
このようなＰＣＩｅに準拠したコントローラは、ＰＣＩｅの仕様は踏襲していても、エラー処理や初期化などといった細かな動作の仕様は、製造元が個々に開発するコントローラによって異なる場合が多い。
【０００５】
従来、個々のデバイスドライバが各コントローラに合わせた処理を行うことでコントローラを動作させるため、デバイスドライバの開発者がハードウェアの動作を理解して、デバイスドライバに処理を組み込むことが行われていた。
【０００６】
例えば、エラー処理を行う場合、特定のコントローラは特定のレジスタのエラーステータスをクリアしなければ、次のエラーを検知することができないが、他のコントローラは同じレジスタをクリアしなくても次のエラーを検知できるという仕様の違いが存在する。ハードウェアで適切にエラーを検知するためには、特定のコントローラでは特定のレジスタのエラーステータスをクリアし、他のコントローラではクリアを行わなくてもよいというように、コントローラ毎にデバイスドライバを対応させることになる。
【０００７】
ＰＣＩｅデバイスで発生したイベントの処理方法として、イベントが検出されたデバイスに対する命令を阻止し、その後Operating  System（ＯＳ）から受信したコマンドを基にデバイスを制御する従来技術がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２０１３−５３４６６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のようにコントローラ毎にデバイスドライバを変更する場合、コントローラ毎のそれぞれのデバイスドライバというソフトウェアの開発において、ハードウェアに合わせたエラー処理を行うための工数がかかってしまう。
【００１０】
また、デバイスに対する命令を阻止した後にＯＳからのコマンドにしたがってデバイスを制御する従来技術を用いた場合、各デバイスに共通の処理を行うことはできるが、デバイス間の差異を吸収することは困難である。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、デバイスドライバの開発工数の削減に寄与する情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報処理装置及び情報処理装置の制御方法は、一つの態様において、演算処理部を有する。処理部は複数あり、前記演算処理部から送信される命令にしたがい処理を実行する。スイッチは、前記演算処理部と前記処理部との通信を中継する。入出力制御部は、各前記処理部の前記スイッチを介した前記演算処理部に対する位置情報及び各前記処理部でイベントが発生した場合にそれぞれの前記処理部に実行させる処理が登録された実行処理情報を有し、特定の処理部で前記イベントが発生した場合、イベント発生通知を取得し、取得した前記イベント発生通知を基に前記位置情報から前記特定の処理部の位置を特定し、前記特定の処理部に実行させる処理を前記実行処理情報から抽出し、抽出した処理の実行命令を、特定した位置を基に前記特定の処理部へ送信する。
【発明の効果】
【００１３】
本願の開示する情報処理装置及び情報処理装置の制御方法の一つの態様によれば、デバイスドライバの開発工数の削減に寄与することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係る情報処理装置を示す図である。
【図２】図２は、外部ＲＯＭ及びアクションリストに格納されるデータの一例を示す図である。
【図３】図３は、ＰＣＩｅブリッジの詳細を表すブロック図である。
【図４】図４は、デバイスツリーデータの一例を表す図である。
【図５】図５は、ＰＩＯ管理部の詳細を表すブロック図である。
【図６】図６は、物理層におけるＰＣＩｅのパケットの模式図である。
【図７】図７は、ＴＬＰヘッダの詳細を表す図である。
【図８】図８は、実施例に係るＰＣＩｅブリッジによる初期化時におけるＴＬＰパケットの設定情報の生成処理のフローチャートである。
【図９】図９は、実施例に係るＰＣＩｅブリッジのエラー発生時及び割り込み時におけるＴＬＰパケットの設定情報の生成処理のフローチャートである。
【図１０】図１０は、ＴＬＰパケットの設定情報の生成処理のフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理装置の制御方法が限定されるものではない。
【実施例】
【００１６】
図１は、実施例に係る情報処理装置を示す図である。本実施例に係る情報処理装置は、ＣＰＵ１、ＰＣＩｅスイッチ２を有する。さらに、本実施例に係る情報処理装置は、ＳＡＴＡコントローラ３１、イーサネットコントローラ３２、外部ＲＯＭ（Read  Only  Memory）４及びメモリ５を有する。メモリ５は、主記憶装置である。
【００１７】
ＳＡＴＡコントローラ３１は、ＰＣＩｅの規格に準拠したコントローラである。ＳＡＴＡコントローラ３１は、例えば、ハードディスク、ＳＳＤ（Solid  State  Drive）又は光ドライブなどが接続される。
【００１８】
イーサネットコントローラ３２は、ＰＣＩｅの規格に準拠したコントローラである。イーサネットコントローラ３２は、ネットワークに接続するためのデバイスである。
【００１９】
本実施例では、ＰＣＩｅデバイスとして、ＳＡＴＡコントローラ３１及びイーサネットコントローラ３２を例に説明するが、ＰＣＩｅデバイスとしてはＰＣＩｅに準拠するデバイスあれば他の物でもよい。以下では、ＳＡＴＡコントローラ３１及びイーサネットコントローラ３２を区別しない場合、「ＰＣＩｅデバイス３０」という。このＰＣＩｅデバイス３０が、「処理部」の一例にあたる。
【００２０】
ＣＰＵ１は、演算処理装置である。ＣＰＵ１は、コア１１、ＰＣＩｅブリッジ１２及びルートコンプレックス１３を有する。
【００２１】
コア１１は、演算処理部である。コア１１は、ＰＣＩｅブリッジ１２を介してルートコンプレックス１３に接続する。コア１１は、情報処理装置の電源投入時、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の情報の入力をＰＣＩｅブリッジ１２から受ける。そして、コア１１は、各ＰＣＩｅデバイス３０のデバイス位置情報を生成する。ここで、デバイス位置情報とは、コア１１に対するＰＣＩｅスイッチ２を介したＰＣＩｅデバイス３０の位置を示す情報であり、言い換えれば、ルートコンプレックス１３を頂点としたデバイスツリーにおける各ＰＣＩｅデバイス３０の位置を示す情報である。具体的には、デバイス位置情報は、バス（Bus）番号、デバイス（Device）番号、ファンクション（Function）番号で表される。以下では、デバイス位置情報を、デバイス位置情報に含まれる各番号の頭文字を取って「ＢＤＦ（登録商標）」と表す場合がある。さらに、コア１１は、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の初期化を行う。そして、コア１１は、ＰＣＩｅデバイス３０の初期化の通知を各ＰＣＩｅデバイス３０の識別情報及び生成したデバイス位置情報とともにシステム側入力ユニット１２２へ出力する。
【００２２】
また、コア１１は、ＰＣＩｅブリッジ１２、ルートコンプレックス１３及びＰＣＩｅスイッチ２を介してＰＣＩｅデバイス３０に命令を送信し、また、ＰＣＩｅデバイス３０から応答を受信する。
【００２３】
ＰＣＩｅブリッジ１２は、コア１１、ルートコンプレックス１３、外部ＲＯＭ４及びメモリ５とバスで接続される。ＰＣＩｅブリッジ１２は、ルートコンプレックス１３にプロトコル変換を行わせるデバイスである。具体的には、ＰＣＩｅブリッジ１２は、コア１１から送られてきた命令をＰＣＩｅの仕様規定にあわせて転送するための情報をルートコンプレックス１３に送信し、ルートコンプレックス１３に命令をＰＣＩｅのバスを介して目的のＰＣＩｅデバイス３０に送信させる。また、ＰＣＩｅブリッジ１２は、ルートコンプレックス１３から取得したデータをコア１１へ転送する。
【００２４】
また、ＰＣＩｅブリッジ１２は、ＰＣＩｅデバイス３０とメモリ５との間のＤＭＡ（Direct  Memory  Access）を制御する。さらに、ＰＣＩｅブリッジ１２は、外部ＲＯＭ４に格納された情報を読み込む。
【００２５】
ルートコンプレックス１３は、ＰＣＩｅブリッジ１２を介してコア１１に接続する。また、ルートコンプレックス１３は、ＰＣＩｅスイッチ２を介してＰＣＩｅデバイス３０と接続する。ルートコンプレックス１３は、プロトコル変換を行うデバイスである。
【００２６】
具体的には、ルートコンプレックス１３は、コア１１から送信された命令から、ＰＣＩｅブリッジ１２から受信した設定にしたがってＰＣＩｅに準拠したパケットを作成する。そして、ルートコンプレックス１３は、ＰＣＩｅスイッチ２を介してＰＣＩｅデバイス３０へ生成したパケットを送信する。また、ルートコンプレックス１３は、ＰＣＩｅデバイス３０から送られてきたデータを、コア１１に繋がるシステムバスに合わせたプロトコルに変換してＰＣＩｅブリッジ１２へ送信する。
【００２７】
すなわち、コア１１からルートコンプレックス１３までの間はシステムバスで接続される。一方、ルートコンプレックス１３からＰＣＩｅデバイス３０までは、ＰＣＩｅのバスで接続される。
【００２８】
ＰＣＩｅスイッチ２は、ルートコンプレックス１３に複数のＰＣＩｅデバイス３０を接続するためのデバイスである。ＰＣＩｅスイッチ２は、ルートコンプレックス１３に接続するポート２１を有する。さらに、ＰＣＩｅスイッチ２は、ＰＣＩｅデバイス３０を接続するためのポート２２及び２３を有する。ここで、本実施例では、一例としてＰＣＩｅスイッチ２がポート２２及び２３という２つのポートを有する場合で説明するが、ＰＣＩｅスイッチ２が有するＰＣＩｅデバイス３０を接続するポートの数はこれに限らない。また、実際には、ＣＰＵ１とＰＣＩｅデバイス３０とはＰＣＩｅスイッチ２を介してデータや命令の送受信を行うが、説明を分かり易くするために、以下の説明ではＣＰＵ１とＰＣＩｅデバイス３０とが直接データや命令の送受信を行うように説明する場合がある。
【００２９】
外部ＲＯＭ４は、情報処理装置から取り外し可能の記憶媒体である。外部ＲＯＭ４には、図２に示すように、ＰＣＩｅデバイス３０の識別情報であるベンダＩＤ（Identification）及びデバイスＩＤに対応させて、イベント発生時に実行する処理の情報が登録されている。図２は、外部ＲＯＭ及びアクションリストに格納されるデータの一例を示す図である。イベントには、例えば、ＰＣＩｅデバイス３０の初期化、ＰＣＩｅデバイス３０におけるエラー発生及び割り込みがある。また、実行する処理の情報として、例えば、処理に用いるコンフィグレジスタアドレス、読出処理又は書込処理のいずれを行うかの情報及び書込処理の場合の書込データである。読出処理又は書込処理のいずれを行うかの情報は、図２におけるＲａｅｄ／Ｗｒｉｔｅの欄に登録される。また、書込処理の場合の書込データは、図２におけるＷｒｉｔｅ  Ｄａｔａの欄に登録される。
【００３０】
外部ＲＯＭ４のデータは、情報処理装置の管理者により、情報処理装置に実装されると予測されるＰＣＩｅデバイス３０に関するデータが予め登録される。実行する処理によって用いるＰＣＩｅデバイス３０はある程度固定であるため、管理者は、その情報処理装置が実行する処理によってどのようなＰＣＩｅデバイス３０が実装されるかを予測することができる。
【００３１】
次に、図３を参照して、ＰＣＩｅブリッジ１２について詳細に説明する。図３は、ＰＣＩｅブリッジの詳細を表すブロック図である。このＰＣＩｅブリッジ１２が、「入出力制御部」の一例にあたる。
【００３２】
システム側出力ユニット１２１は、コア１１へリクエストを出力するための出力インタフェースを有する。システム側出力ユニット１２１は、コア１１からのリクエストを処理するモジュールである。
【００３３】
システム側出力ユニット１２１は、情報処理装置の電源投入時、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の情報をデバイス側入力ユニット１２９から受信する。そして、システム側出力ユニット１２１は、取得したＰＣＩｅデバイス３０の情報をコア１１へ出力する。
【００３４】
システム側出力ユニット１２１は、システム側入力ユニット１２２又はデバイス側入力ユニット１２９からリクエストを受信する。加えて、システム側出力ユニット１２１は、システム側で用いるアドレスを割込処理アドレス変換モジュール１２３から受信する。そして、システム側出力ユニット１２１は、指定されたアドレスとともに受信したリクエストをコア１１へ出力する。
【００３５】
さらに、システム側入力ユニット１２２やデバイス側入力ユニット１２９からのリクエストが割り込みの場合、システム側出力ユニット１２１は、割込命令を割込処理アドレス変換モジュール１２３から受信する。そして、システム側出力ユニット１２１は、割込命令にしたがって、受信したリクエストをコア１１へ出力する。
【００３６】
システム側入力ユニット１２２は、コア１１からリクエストを受信するための入力インタフェースを有する。システム側入力ユニット１２２は、コア１１からのリクエストを処理するモジュールである。
【００３７】
システム側入力ユニット１２２は、情報処理装置の電源投入時、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の初期化の通知を各ＰＣＩｅデバイス３０の識別情報及びデバイス位置情報とともにコア１１から受ける。そして、システム側入力ユニット１２２は、ＰＣＩｅデバイス３０の初期化の通知を各ＰＣＩｅデバイス３０のベンダＩＤ、デバイスＩＤ及びデバイス位置情報とともにＰＩＯ管理部１２５へ送信する。
【００３８】
システム側入力ユニット１２２は、コア１１からリクエストを受信する。そして、例えば、ＰＩＯ（Programmed  Input  Output）リクエストをコア１１から受信した場合、システム側入力ユニット１２２は、受信したＰＩＯリクエストをＰＩＯ管理部１２５へ送信する。また、ＤＭＡ処理のリクエストをコア１１から受信した場合、システム側入力ユニット１２２は、受信したＤＭＡ処理のリクエストをＤＭＡ制御部１２４へ出力する。さらに、コア１１へのリクエストに対する情報がある場合、システム側入力ユニット１２２は、リクエストに対する情報をシステム側出力ユニット１２１へ送信する。
【００３９】
ＤＭＡ制御部１２４は、ＰＣＩｅデバイス３０とメモリ５との間のＤＭＡ処理を制御する。ＤＭＡ制御部１２４は、ＤＭＡ処理のリクエストをシステム側入力ユニット１２２から受信する。また、ＤＭＡ制御部１２４は、ＰＣＩｅデバイス３０からのＤＭＡ処理のリクエストを割込処理アドレス変換モジュール１２３から受信する。そして、ＤＭＡ制御部１２４は、受信した指示にしたがいメモリ５に対するデータの読み書きＤＭＡ処理を実行する。
【００４０】
割込処理アドレス変換モジュール１２３は、ＰＣＩｅデバイス３０から送信されたリクエストの入力をデバイス側入力ユニット１２９から受ける。そして、割込処理アドレス変換モジュール１２３は、リクエストが割り込みの場合、割り込みの種類に応じて割込情報をシステム側出力ユニット１２１又はデバイス側入力ユニット１２９へ送信する。さらに、割込処理アドレス変換モジュール１２３は、割込情報をＰＩＯ管理部１２５へ通知する。
【００４１】
また、割込処理アドレス変換モジュール１２３は、リクエストからＰＣＩｅデバイス３０で指定されたアドレスを取得し、システム側で用いるアドレスに変換する。そして、割込処理アドレス変換モジュール１２３は、変換後のアドレスをシステム側出力ユニット１２１へ出力する。
【００４２】
また、割込処理アドレス変換モジュール１２３は、ＰＣＩｅデバイス３０から送信されたＰＣＩｅデバイス３０のエラーメッセージをデバイス側入力ユニット１２９から受信する。そして、割込処理アドレス変換モジュール１２３は、エラーメッセージをＰＩＯ管理部１２５へ送信する。
【００４３】
デバイス側入力ユニット１２９は、ルートコンプレックス１３からリクエストを受信するための入力インタフェースを有する。デバイス側入力ユニット１２９は、ルートコンプレックス１３からのリクエストを処理するモジュールである。
【００４４】
デバイス側入力ユニット１２９は、情報処理装置の電源投入時にＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の情報をルートコンプレックス１３から受信する。そして、デバイス側入力ユニット１２９は、取得したＰＣＩｅデバイス３０の情報をシステム側出力ユニット１２１へ送信する。さらに、デバイス側入力ユニット１２９は、各ＰＣＩｅデバイス３０の情報からベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットの情報を取得する。そして、デバイス側入力ユニット１２９は、各ＰＣＩｅデバイス３０のベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットを後述するデバイスツリーデータ１２８へ登録する。
【００４５】
また、デバイス側入力ユニット１２９は、ＰＣＩｅデバイス３０から送信されたリクエストの入力をルートコンプレックス１３から受ける。そして、デバイス側入力ユニット１２９は、受信したリクエストをシステム側出力ユニット１２１及び割込処理アドレス変換モジュール１２３へ送信する。さらに、リクエストにより割り込みが発生した場合、デバイス側入力ユニット１２９は、割込情報を割込処理アドレス変換モジュール１２３から受信する。そして、デバイス側入力ユニット１２９は、割込情報にしたがって、ルートコンプレックス１３からのリクエストの入力を受ける。
【００４６】
また、デバイス側入力ユニット１２９は、ルートコンプレックス１３からＰＣＩｅデバイス３０のエラーメッセージ又は割込情報の入力を受けた場合、受信したエラーメッセージ又は割込情報を割込処理アドレス変換モジュール１２３へ送信する。
【００４７】
デバイスツリーデータ１２８は、図４に示される情報を格納する。図４は、デバイスツリーデータの一例を表す図である。デバイスツリーデータ１２８には、例えば、デバイス位置情報（ＢＤＦ）に対応させて、ベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットが登録される。デバイスツリーデータ１２８のデバイス位置情報は、後述するＰＩＯ管理部１２５によって登録される。また、デバイスツリーデータ１２８のベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットは、デバイス側入力ユニット１２９によって登録される。このデバイスツリーデータ１２８が、「位置情報」の一例にあたる。
【００４８】
以下では、デバイスツリーデータ１２８に登録された、デバイス位置情報、ベンダＩＤ、デバイスＩＤ物理アドレスオフセットの組を「デバイスデータ」という。また、デバイスツリーデータ１２８におけるデバイスデータの各登録場所を「デバイスツリーデータ１２８のエントリ」という。
【００４９】
また、アクションリスト１２７は、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０毎に、図２に示すイベント発生時に実行する処理の情報が登録される。具体的には、アクションリスト１２７では、ＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤに対応させて、実行する処理の情報が登録される。すなわち、アクションリスト１２７は、外部ＲＯＭ４に登録された情報の中のＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の情報である。このアクションリスト１２７が、「実行処理情報」の一例にあたる。
【００５０】
以下では、アクションリスト１２７における契機となるイベント及び実行する処理の情報の組を「アクションデータ」という。また、アクションリスト１２７におけるアクションデータの各登録場所を「アクションリスト１２７のエントリ」という。
【００５１】
外部ＲＯＭデータ読込部１２６は、電源投入時におけるデバイス側入力ユニット１２９及びＰＩＯ管理部１２５によるデバイスツリーデータ１２８への情報登録が完了後、デバイスツリーデータ１２８を参照する。そして、外部ＲＯＭデータ読込部１２６は、デバイスツリーデータ１２８からＰＣＩｅスイッチ２に接続された全てのＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤを取得する。次に、外部ＲＯＭデータ読込部１２６は、取得したベンダＩＤ及びデバイスＩＤに対応するイベント発生時に実行する処理の情報を外部ＲＯＭ４から取得する。次に、外部ＲＯＭデータ読込部１２６は、取得したイベント発生時に実行する処理の情報をベンダＩＤ及びデバイスＩＤの組に対応させてアクションリスト１２７へ登録する。
【００５２】
ＰＩＯ管理部１２５は、情報処理装置の電源投入時に、各ＰＣＩｅデバイス３０の初期化の通知をデバイス位置情報とともにシステム側入力ユニット１２２から受信する。そして、ＰＩＯ管理部１２５は、デバイス位置情報で指定されたＰＣＩｅデバイス３０にＩＤ取得のためのＰＩＯリクエストを送信する。ベンダＩＤとデバイスＩＤは、ＰＣＩｅの仕様に規定されたＣｏｍｍｏｎ  Ｃｏｎｆｉｇｒａｔｉｏｎ  Ｓｐａｃｅ  ＨｅａｄｅｒのＯｆｆｓｅｔ  ０ｘ００に格納される。そこで、ＰＩＯ管理部１２５は、このレジスタへのＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅａｄを実行するＰＩＯを送信する。その後、ＰＩＯ管理部１２５は、デバイス位置情報に応じたＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤをシステム側入力ユニット１２２から取得する。
【００５３】
そして、ＰＩＯ管理部１２５は、各ＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤに対応するデバイス位置情報をデバイスツリーデータ１２８へ登録する。
【００５４】
さらに、図５を参照して、イベント発生時におけるＰＩＯ管理部１２５の機能について詳細に説明する。図５は、ＰＩＯ管理部の詳細を表すブロック図である。ただし、図５では、イベント発生時におけるＰＩＯ管理部１２５の機能のみを抽出して記載した。
【００５５】
ＰＩＯ管理部１２５は、図５に示すように、ビジー信号管理部２０１、デバイス特定部２０２、アクションリスト読出部２０３、ＴＬＰ（Transaction  Layer  Packet）情報生成部２０４及びパケット管理部２０５を有する。
【００５６】
ビジー信号管理部２０１は、システム側入力ユニット１２２とＰＩＯ管理部１２５との間の通信を監視する。ビジー信号管理部２０１は、ビジー信号発行要求をデバイス特定部２０２から受信する。そして、ビジー信号管理部２０１は、システム側入力ユニット１２２との間でパケットの処理が行われている場合、その処理が完了するまで待機する。パケットの処理完了後、ビジー信号管理部２０１は、システム側入力ユニット１２２に対してビジー信号を発行する。これにより、システム側入力ユニット１２２からＰＩＯ管理部１２５へのパケットの入力を停止することができる。ビジー信号管理部２０１は、ビジー信号の発行をデバイス特定部２０２へ通知する。
【００５７】
その後、ビジー信号管理部２０１は、ビジー信号の発行停止の指示をデバイス特定部２０２から受ける。そして、ビジー信号管理部２０１は、ビジー信号の発行を停止する。これにより、システム側入力ユニット１２２からＰＩＯ管理部１２５へのパケットの入力が再開する。
【００５８】
デバイス特定部２０２は、ＰＣＩｅデバイス３０の初期化の通知を各ＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤとともにシステム側入力ユニット１２２から受ける。そして、デバイス特定部２０２は、ビジー信号の発行要求をビジー信号管理部２０１に通知する。その後、デバイス特定部２０２は、ビジー信号の発行の通知をビジー信号管理部２０１から受信する。
【００５９】
ビジー信号の発行の通知を受信すると、デバイス特定部２０２は、デバイスツリーデータ１２８の先頭のエントリにデバイスポインタを設定する。次に、デバイス特定部２０２は、デバイスポインタが示すエントリにデバイスデータがあるか否かを判定する。
【００６０】
デバイスポインタが示すエントリにデバイスデータがある場合、デバイス特定部２０２は、デバイスポインタが示すベンダＩＤ及びデバイスＩＤ、並びに、発生イベントが初期化である旨をアクションリスト読出部２０３に通知する。さらに、デバイス特定部２０２は、デバイスポインタが示すエントリにおける物理アドレスオフセットをデバイスツリーデータ１２８から取得する。そして、デバイス特定部２０２は、取得した物理アドレスオフセット、ベンダＩＤ及びデバイスＩＤをＴＬＰ情報生成部２０４へ送信する。
【００６１】
その後アクションリスト読出部２０３からアクションデータの読み出し完了の通知を受けると、デバイス特定部２０２は、デバイスポインタをデバイスツリーデータ１２８の次のエントリに移動する。以下では、デバイスポインタをデバイスツリーデータ１２８の次のエントリに移動することを、「デバイスポインタをインクリメント」という。
【００６２】
その後、デバイス特定部２０２は、デバイスデータが登録されていないエントリをデバイスポインタが示すまで、ベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットの通知、並びに、デバイスポインタのインクリメントを繰り返す。そして、デバイスデータが登録されていないエントリをデバイスポインタが示すようになった場合、デバイス特定部２０２は、ビジー信号の発行停止をビジー信号管理部２０１に指示する。
【００６３】
また、デバイス特定部２０２は、ＰＣＩｅデバイス３０におけるエラー発生及び割り込みの通知をＰＣＩｅデバイス３０のベンダＩＤ及びデバイスＩＤとともに割込処理アドレス変換モジュール１２３から受信する。そして、デバイス特定部２０２は、ビジー信号の発行要求をビジー信号管理部２０１に通知する。その後、デバイス特定部２０２は、ビジー信号の発行の通知をビジー信号管理部２０１から受信する。
【００６４】
ビジー信号の発行の通知を受信すると、デバイス特定部２０２は、デバイスツリーデータ１２８の先頭のベンダＩＤ及びデバイスＩＤの組にデバイスポインタを設定する。次に、デバイス特定部２０２は、受信したベンダＩＤ及びデバイスＩＤの組にデバイスポインタが示すベンダＩＤ及びデバイスＩＤの組が一致するか否かを判定する。
【００６５】
デバイスポインタが示すベンダＩＤ及びデバイスＩＤの組が一致しない場合、デバイス特定部２０２は、デバイスポインタをインクリメントする。
【００６６】
これに対して、デバイスポインタが示すベンダＩＤ及びデバイスＩＤの組が一致した場合、デバイス特定部２０２は、デバイスポインタが示すベンダＩＤ及びデバイスＩＤ、並びに、発生イベントの情報をアクションリスト読出部２０３に通知する。この場合、発生イベントの情報は、ＰＣＩｅデバイス３０におけるエラー発生及び割り込みの何れかである。さらに、デバイス特定部２０２は、デバイスポインタが示すベンダＩＤ及びデバイスＩＤに対応する物理アドレスオフセットをデバイスツリーデータ１２８から取得する。そして、デバイス特定部２０２は、取得した物理アドレスオフセット、ベンダＩＤ及びデバイスＩＤをＴＬＰ情報生成部２０４へ送信する。
【００６７】
その後、デバイス特定部２０２は、アクションデータの読み出し完了の通知をアクションリスト読出部２０３から受ける。そして、デバイス特定部２０２は、ビジー信号の発行停止をビジー信号管理部２０１に指示する。
【００６８】
ここで、本実施例では、１つのＰＣＩｅデバイス３０に関するエラーの発生や割り込みについての対応を行うため、デバイスポインタが示すベンダＩＤ及びデバイスＩＤの組が一致したものが処理の対象となり、他のＰＣＩｅデバイス３０は処理の対象とならない。そのため、本実施例では、デバイス特定部２０２は、受信したベンダＩＤ及びデバイスＩＤの組に一致するデバイスポインタが示すベンダＩＤ及びデバイスＩＤの組を検出した後は処理を終了する。しかし、デバイス特定部２０２によるＰＣＩｅデバイス３０の特定の処理の流れはこれに限らない。
【００６９】
例えば、デバイス特定部２０２は、受信したベンダＩＤ及びデバイスＩＤの組に一致するデバイスポインタが示すベンダＩＤ及びデバイスＩＤの組を検出した後も、デバイスポインタをインクリメントしＰＣＩｅデバイス３０の特定を繰り返してもよい。この場合、デバイスポインタの示すベンダＩＤ及びデバイスＩＤの組がなくなった時点で、デバイス特定部２０２は、ビジー信号の発行停止をビジー信号管理部２０１に指示する。こうすることで、複数のＰＣＩｅデバイス３０に関してエラーの発生や割り込みが起こった場合であっても、ＰＣＩｅブリッジ１２は、それらのイベントに１回で対処することができる。
【００７０】
アクションリスト読出部２０３は、ベンダＩＤ及びデバイスＩＤをデバイス特定部２０２から受信する。また、アクションリスト読出部２０３は、発生したイベントの情報、すなわち、アクションリスト読出部２０３は、ＰＣＩｅデバイス３０の初期化、エラー発生又は割り込みのいずれが発生したかをデバイス特定部２０２から受信する。以下では、発生したイベントの情報で示されるイベントを「受信イベント」という。
【００７１】
アクションリスト読出部２０３は、取得したベンダＩＤ及びデバイスＩＤに対応するアクションリスト１２７を抽出する。次に、アクションリスト読出部２０３は、抽出したアクションリスト１２７の先頭のエントリにアクションポインタを設定する。
【００７２】
次に、アクションリスト読出部２０３は、アクションポインタが示すエントリに記載された契機が受信イベントと一致するか否かを判定する。ここで、図２のアクションリスト１２７に示される契機が「初期化時」が、ＰＣＩｅデバイス３０の初期化の場合にあたる。また、契機が「Ｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ  ｍｅｓｓａｇｅ  受信時」及び「Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ  ｍｅｓｓａｇｅ  受信時」が、ＰＣＩｅデバイス３０でエラーが発生した場合にあたる。また、契機が「ＭＳＩ  受信時」が、ＰＣＩｅデバイス３０による割り込みの場合にあたる。
【００７３】
受信イベントと一致する場合、アクションリスト読出部２０３は、アクションリスト１２７におけるアクションポインタが示すエントリからコンフィグレジスタアドレス及び読み出し書き込みのいずれの処理を実行するかの情報を取得する。さらに、実行する処理が書き込みの場合、アクションリスト読出部２０３は、書込データをアクションリスト１２７のエントリから取得する。そして、アクションリスト読出部２０３は、取得した情報をＴＬＰ情報生成部２０４に通知する。その後、アクションリスト読出部２０３は、アクションポインタを次のエントリへ移動する。以下では、アクションポインタを次のエントリへ移動することを、「アクションポインタのインクリメント」という。
【００７４】
また、アクションポインタが示すエントリに記載された契機が受信イベントと一致しない場合、アクションリスト読出部２０３は、アクションポインタをインクリメントする。
【００７５】
アクションリスト読出部２０３は、アクションデータがないエントリをアクションポインタが示すようになるまで、契機と受信イベントとが一致するか否かの判定を行う。さらに、受信イベントと一致した場合、アクションリスト読出部２０３は、実行する処理の情報の取得及びＴＬＰ情報生成部２０４への送信を繰り返す。アクションポインタが示すデータがなくなった場合、アクションリスト読出部２０３は、アクションデータの読み出し完了をデバイス特定部２０２に通知する。
【００７６】
その後、デバイス特定部２０２から次のベンダＩＤ及びデバイスＩＤが送られてきた場合、アクションリスト読出部２０３は、そのベンダＩＤ及びデバイスＩＤに対して同様の処理を繰り返す。
【００７７】
ＴＬＰ情報生成部２０４は、物理アドレスオフセット、ベンダＩＤ及びデバイスＩＤをデバイス特定部２０２から受信する。さらに、ＴＬＰ情報生成部２０４は、実行する処理の情報をアクションリスト読出部２０３から受信する。
【００７８】
次に、ＴＬＰ情報生成部２０４は、受信した情報からＴＬＰを生成するための情報を決定する。ＴＬＰとは、トランザクション層で用いられるパケットである。図６は、物理層におけるＰＣＩｅのパケットの模式図である。ＴＬＰは、ＴＬＰヘッダ３０１、データ３０２及びＥＣＲＣ（End  to  end  Cyclic  Redundancy  Check）３０３で生成される。また、ＴＬＰにシーケンス番号及びＬＣＲＣ（Link  Cyclic  Redundancy  Check）を付加したパケットがデータリンクレイヤパケットである。また、データリンクレイヤパケットにスタートフレーム及びエンドフレームを付加したものが、物理層パケットである。ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１を生成するための情報を決定する。また、書込処理の場合には、ＴＬＰ情報生成部２０４は、データ３０２への書込データの格納を決定する。
【００７９】
図７は、ＴＬＰヘッダの詳細を表す図である。Ｆｍｔ（format）４０１は、ＴＬＰフォーマットを表す項目である。また、Ｔｙｐｅ４０２は、ＴＬＰの種別を表す項目であるＦｍｔ４０１及びＴｙｐｅ４０２により、そのＴＬＰがどのようなＴＬＰかが決まる。また、Ｌｅｎｇｔｈ４０３は、パケットのデータ長を表す項目である。Ｔａｇ４０４は、データの順序制御に用いる管理用の番号を表す項目である。ＢＥ（Byte  Enable）４０５は、書き込みを許可するバイトの指定を表す項目である。Ａｄｄｒｅｓｓ４０６は、使用するアドレスの指定を表す項目である。
【００８０】
ＴＬＰ情報生成部２０４は、Ｆｍｔ４０１及びＴｙｐｅ４０２にＰＣＩｅ使用規定のＣｏｎｆｉｇ  Ｒｅａｄ／Ｗｒｉｔｅを設定する。また、ＴＬＰ情報生成部２０４は、Ｌｅｎｇｔｈ４０３を４バイトとして設定する。また、ＴＬＰ情報生成部２０４は、ＢＥ４０５に００００＿ｘｘｘｘを設定する。ここで、ｘｘｘｘは、読み書きの対象とするバイトが指定される。また、ＴＬＰ情報生成部２０４は、Ｔａｇ４０４に昇順に番号を設定していく。
【００８１】
さらに、ＴＬＰ情報生成部２０４は、Ａｄｄｒｅｓｓ４０６におけるビット［１１：０］に物理アドレスオフセットを加えたビットにアクションリスト１２７から取得したコンフィグレジスタアドレスを設定する。Ａｄｄｒｅｓｓ４０６の上位はバス番号によりシステム毎に規定されたＰＣＩｅデバイス３０のコンフィグ空間を指定する。
【００８２】
さらに、ＴＬＰ情報生成部２０４は、ＴＬＰが書き込み処理の場合、図６のデータ３０２にアクションリスト１２７から取得した書込データを設定する。
【００８３】
そして、ＴＬＰ情報生成部２０４は、ＴＬＰの設定情報及び書込データをデバイス位置情報とともにパケット管理部２０５へ送信する。
【００８４】
バケット管理部２０５は、ＴＬＰの設定情報及び書込データをＴＬＰ情報生成部２０４から受信する。そして、パケット管理部２０５は、システム側入力ユニット１２２からのリクエストが無い状態でＴＬＰを発行するために、ステートマシンを遷移するためのダミーＰＩＯリクエスト信号を生成する。そして、パケット管理部２０５は、生成したダミーＰＩＯリクエスト信号を受信して、ＴＬＰを発行する状態に遷移する。その後、パケット管理部２０５は、設定情報、書込データ及びデバイス位置情報をルートコンプレックス１３へ送信する。
【００８５】
また、ＰＩＯ管理部１２５は、イベントに対するＰＣＩｅデバイス３０への処理が書込処理の場合、データを書き込む前のＲｅａｄデータを保存し、書き込み後に再度Ｒｅａｄを行って、２つの値を比較することで書き込みができたか否かを確認してもよい。
【００８６】
次に、図８を参照して、本実施例に係るＰＣＩｅブリッジ１２による初期化時におけるＴＬＰパケットの設定情報の生成処理について説明する。図８は、実施例に係るＰＣＩｅブリッジによる初期化時におけるＴＬＰパケットの設定情報の生成処理のフローチャートである。
【００８７】
コア１１は、ＰＣＩｅスイッチ２に接続されたＰＣＩｅデバイス３０の初期化を開始する（ステップＳ１）。デバイス特定部２０２は、システム側入力ユニット１２２を介してコア１１からＰＣＩｅデバイス３０の初期化の通知を受ける。そして、デバイス特定部２０２は、ビジー信号の発行要求をビジー信号管理部２０１へ送信する。
【００８８】
ビジー信号管理部２０１は、ビジー信号の発行要求を受けて、コア１１とＰＩＯ管理部１２５との間でシステム側入力ユニット１２２を介して実行中の処理が完了したか否かを判定する（ステップＳ２）。実行中の処理が完了していない場合（ステップＳ２：否定）、ビジー信号管理部２０１は、実行中の処理が完了するまで待機する。これに対して、実行中の処理が完了した場合（ステップＳ２：肯定）、ビジー信号管理部２０１は、ビジー信号をシステム側入力ユニット１２２へ発行する（ステップＳ３）。そして、ビジー信号管理部２０１は、ビジー信号の発行をデバイス特定部２０２へ通知する。
【００８９】
次に、デバイス特定部２０２は、デバイスツリーデータ１２８の先頭エントリにデバイスポインタを設定する（ステップＳ４）。
【００９０】
次に、デバイス特定部２０２は、デバイスポインタが示すデバイスデータが存在するか否かを判定する（ステップＳ５）。
【００９１】
デバイスポインタが示すエントリにデバイスデータが存在する場合（ステップＳ５：肯定）、デバイス特定部２０２は、デバイスポインタが示すエントリに格納されたベンダＩＤ及びデバイスＩＤをアクションリスト読出部２０３に通知する。アクションリスト読出部２０３は、デバイスポインタが示すベンダＩＤ及びデバイスＩＤに対応するアクションリスト１２７を抽出する（ステップＳ６）。
【００９２】
アクションリスト読出部２０３は、抽出したアクションリスト１２７の先頭エントリにアクションポインタを設定する（ステップＳ７）。
【００９３】
アクションリスト読出部２０３は、アクションポインタが示すエントリにアクションデータが存在するか否かを判定する（ステップＳ８）。アクションデータが存在する場合（ステップＳ８：肯定）、アクションリスト読出部２０３は、そのアクションデータにおける契機が初期化か否かを判定する（ステップＳ９）。契機が初期化の場合（ステップ９：肯定）、アクションリスト読出部２０３は、ＴＬＰパケットの設定情報の生成処理を実行する（ステップＳ１０）。その後、アクションリスト読出部２０３は、ステップＳ１１へ進む。
【００９４】
これに対して、契機が初期化以外である場合（ステップ９：否定）、アクションリスト読出部２０３は、ステップＳ１１へ進む。
【００９５】
次に、アクションリスト読出部２０３は、アクションポインタをインクリメント（ステップＳ１１）し、ステップＳ８へ戻る。
【００９６】
これに対して、アクションポインタが示すエントリにアクションデータが存在しない場合（ステップＳ８：否定）、アクションリスト読出部２０３は、アクションデータの読み出し完了をデバイス特定部２０２へ通知する。デバイス特定部２０２は、通知を受けて、デバイスポインタをインクリメントする（ステップＳ１２）。その後、デバイス特定部２０２は、ステップＳ５へ戻る。
【００９７】
一方、デバイスポインタが示すエントリにデバイスデータが存在しない場合（ステップＳ５：否定）、デバイス特定部２０２は、ビジー信号の停止をビジー信号管理部２０１に指示する。ビジー信号管理部２０１は、ビジー信号を停止する（ステップＳ１３）。
【００９８】
次に、図９を参照して、本実施例に係るＰＣＩｅブリッジ１２のエラー発生時及び割り込み時におけるＴＬＰパケットの設定情報の生成処理について説明する。図９は、実施例に係るＰＣＩｅブリッジのエラー発生時及び割り込み時におけるＴＬＰパケットの設定情報の生成処理のフローチャートである。
【００９９】
デバイス特定部２０２は、イベントメッセージ、すなわちＰＣＩｅデバイス３０からエラーメッセージ又は割込情報を割込処理アドレス変換モジュール１２３から受信する（ステップＳ２１）。そして、デバイス特定部２０２は、ビジー信号の発行要求をビジー信号管理部２０１へ送信する。
【０１００】
ビジー信号管理部２０１は、ビジー信号の発行要求を受けて、コア１１とＰＩＯ管理部１２５との間でシステム側入力ユニット１２２を介して実行中の処理が完了したか否かを判定する（ステップＳ２２）。実行中の処理が完了していない場合（ステップＳ２２：否定）、ビジー信号管理部２０１は、実行中の処理が完了するまで待機する。これに対して、実行中の処理が完了した場合（ステップＳ２２：肯定）、ビジー信号管理部２０１は、ビジー信号をシステム側入力ユニット１２２へ発行する（ステップＳ２３）。そして、ビジー信号管理部２０１は、ビジー信号の発行をデバイス特定部２０２へ通知する。
【０１０１】
次に、デバイス特定部２０２は、デバイスツリーデータ１２８の先頭エントリにデバイスポインタを設定する（ステップＳ２４）。
【０１０２】
次に、デバイス特定部２０２は、デバイスポインタが示すデバイスデータが存在するか否かを判定する（ステップＳ２５）。
【０１０３】
デバイスポインタが示すエントリにデバイスデータが存在しない場合（ステップＳ２５：否定）、デバイス特定部２０２は、デバイスポインタをインクリメントする（ステップＳ２６）。その後、デバイス特定部２０２は、ステップＳ２５へ戻る。
【０１０４】
これに対して、デバイスポインタが示すエントリにデバイスデータが存在する場合（ステップＳ２５：肯定）、デバイス特定部２０２は、デバイスポインタが示すエントリに格納されたベンダＩＤ及びデバイスＩＤをアクションリスト読出部２０３に通知する。アクションリスト読出部２０３は、デバイスポインタが示すベンダＩＤ及びデバイスＩＤに対応するアクションリスト１２７を抽出する（ステップＳ２７）。
【０１０５】
アクションリスト読出部２０３は、抽出したアクションリスト１２７の先頭エントリにアクションポインタを設定する（ステップＳ２８）。
【０１０６】
アクションリスト読出部２０３は、アクションポインタが示すエントリにアクションデータが存在するか否かを判定する（ステップＳ２９）。アクションデータが存在する場合（ステップＳ２９：肯定）、アクションリスト読出部２０３は、そのアクションデータにおける契機が受信イベントか否かを判定する（ステップＳ３０）。契機が受信イベントの場合（ステップ３０：肯定）、アクションリスト読出部２０３は、ＴＬＰパケットの設定情報の生成処理を実行する（ステップＳ３１）。その後、アクションリスト読出部２０３は、ステップＳ３２へ進む。
【０１０７】
これに対して、契機が受信イベント以外である場合（ステップ３０：否定）、アクションリスト読出部２０３は、ステップＳ３２へ進む。
【０１０８】
次に、アクションリスト読出部２０３は、アクションポインタをインクリメント（ステップＳ３２）し、ステップＳ２９へ戻る。
【０１０９】
これに対して、アクションポインタが示すエントリにアクションデータが存在しない場合（ステップＳ２９：否定）、アクションリスト読出部２０３は、アクションデータの読み出し完了をデバイス特定部２０２に通知する。デバイス特定部２０２は、通知を受けて、ビジー信号の停止をビジー信号管理部２０１に指示する。ビジー信号管理部２０１は、ビジー信号を停止する（ステップＳ３３）。
【０１１０】
次に、図１０を参照して、ＴＬＰパケットの設定情報の生成処理の流れについて説明する。図１０は、ＴＬＰパケットの設定情報の生成処理のフローチャートである。図１０のフローチャートは、図８のステップＳ１０及び図９のステップＳ３１で実行される処理の一例にあたる。
【０１１１】
アクションリスト読出部２０３は、アクションリスト１２７からアクションポインタが示すエントリに登録されたアクションデータを取得する（ステップＳ１０１）。アクションリスト読出部２０３は、取得したアクションデータをＴＬＰ情報生成部２０４へ送信する。また、デバイス特定部２０２は、ベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットをＴＬＰ情報生成部２０４へ送信する。
【０１１２】
ＴＬＰ情報生成部２０４は、アクションデータをアクションリスト読出部２０３から受信する。また、ＴＬＰ情報生成部２０４は、ベンダＩＤ、デバイスＩＤ及び物理アドレスオフセットをデバイス特定部２０２から受信する。そして、ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１におけるＦｍｔ４０１及びＴｙｐｅ４０２に動作を設定する（ステップＳ１０２）。
【０１１３】
次に、ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１におけるＬｅｎｇｔｈ４０３を４バイトに設定する（ステップＳ１０３）。
【０１１４】
次に、ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１におけるＢＥ（Ｂｙｔｅ  Ｅｎａｂｌｅ）４０５に００００＿ｘｘｘｘを設定する（ステップＳ１０４）。
【０１１５】
次に、ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１におけるＴａｇ４０４を昇順に設定する（ステップＳ１０５）。
【０１１６】
次に、ＴＬＰ情報生成部２０４は、ＴＬＰヘッダ３０１のＡｄｄｒｅｓｓ４０６のビット［１１：０］に物理アドレスオフセットを加えたビットにコンフィグレジスタアドレスを設定する（ステップＳ１０６）。
【０１１７】
次に、ＴＬＰ情報生成部２０４は、そのＴＬＰでＰＣＩｅデバイス３０に実行させる処理が書込処理か否かを判定する（ステップＳ１０７）。実行させる処理が書込処理以外である場合（ステップＳ１０７：否定）、処理はステップＳ１０９へ進む。
【０１１８】
これに対して、実行させる処理が書込処理の場合（ステップＳ１０７：肯定）、ＴＬＰ情報生成部２０４は、アクションリスト１２７に記載された書込データをデータ３０２に設定する（ステップＳ１０８）。そして、ＴＬＰ情報生成部２０４は、デバイス位置情報とともに各設定情報をパケット管理部２０５へ送信する。
【０１１９】
パケット管理部２０５は、デバイス位置情報及び設定情報をＴＬＰ情報生成部２０４から受信する。そして、パケット管理部２０５は、ダミーＰＩＯリクエスト信号を生成する（ステップＳ１０９）。パケット管理部２０５は、生成したダミーＰＩＯリクエスト信号を受信して、ＴＬＰを発行する状態に遷移する。その後、パケット管理部２０５は、設定情報、書込データ及びデバイス位置情報をルートコンプレックス１３へ送信する。ただし、書込データは、ＴＬＰによりＰＣＩｅデバイス３０に実行させる処理が書き込みの場合のみである。
【０１２０】
ルートコンプレックス１３は、設定情報、書込データ及びデバイス位置情報をパケット管理部２０５から受信する。そして、ルートコンプレックス１３は、受信した設定情報及び書込データからＴＬＰを生成する。その後、ルートコンプレックス１３は、生成したＴＬＰをデバイス位置情報が示すＰＣＩｅデバイス３０に向けて送信する（ステップＳ１１０）。
【０１２１】
以上に説明したように、本実施例に係る情報処理装置では、特定のＰＣＩｅデバイスでのイベント発生の通知を受けたＰＣＩｅブリッジが、その特定のＰＣＩｅデバイスに応じた処理を実行させるＴＬＰを生成し送信する。これにより、イベント発生時に、各ＰＣＩｅデバイスに応じた処理を、それぞれのＰＣＩｅデバイスに実行させることができる。そして、この処理は、ハードウェアであるＰＣＩｅブリッジで行われるため、デバイスドライバに依存しない。そのため、イベント発生時のＰＣＩｅ毎の仕様の違いをＰＣＩｅブリッジで吸収することができ、デバイスドライバの開発工数を削減することができる。
【０１２２】
また、以上では、イベント発生時にＴＬＰを用いてＰＣＩｅデバイスに処理を実行させたが、使用するパケットはハードウェアにより制御できるパケットであれば他のパケットを用いてもよい。例えば、物理層パケットやＤＬＬＰ（Data  Link  Layer  Packet）を用いてもよい。
【符号の説明】
【０１２３】
１  ＣＰＵ
２  ＰＣＩｅスイッチ
４  外部ＲＯＭ
５  メモリ
１１  コア
１２  ＰＣＩｅブリッジ
１３  ルートコンプレックス
２１〜２３  ポート
１２１  システム側出力ユニット
１２２  システム側入力ユニット
１２３  割込処理アドレス変換モジュール
１２４  ＤＭＡ制御部
１２５  ＰＩＯ管理部
１２６  外部ＲＯＭデータ読込部
１２７  アクションリスト
１２８  デバイスツリーデータ
１２９  デバイス側入力ユニット
２０１  ビジー信号管理部
２０２  デバイス特定部
２０３  アクションリスト読出部
２０４  ＴＬＰ情報生成部
２０５  パケット管理部
【図１】
0006418021.tif 000002
【図２】
0006418021.tif 000003
【図３】
0006418021.tif 000004
【図４】
0006418021.tif 000005
【図５】
0006418021.tif 000006
【図６】
0006418021.tif 000007
【図７】
0006418021.tif 000008
【図８】
0006418021.tif 000009
【図９】
0006418021.tif 000010
【図１０】
0006418021.tif 000011