(57)【要約】【課題】プロセッサの動作中にＰＣＩデバイスを削除または追加ができ、ダイナミックなシステム構成の変更が可能であり、プロセッサと、元々存在しているデバイスとの通信への影響の少ない、通信支援装置及び通信支援プログラムを提供する。【解決手段】ホットアッド制御回路２１は、メモリ２３、検出部２２ａ及び書き込み部２２ｂを有する。検出部２２ａは、プロセッサの動作中に、ＰＣＩｅデバイスが接続されるポートへのＰＣＩｅデバイスの接続を検出した場合、ＰＣＩｅデバイスのコンフィグレーションレジスタに格納されているデータを読み出し、そのデータをメモリ２３に格納する。書き込み部２２ｂは、格納されたデータを用いることによりプロセッサが生成したＰＣＩｅデバイスの設定値をプロセッサから取得し、設定値をコンフィグレーションレジスタに書き込む。【選択図】図２
2019128696.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、レジスタを有するとともに前記プロセッサと通信する通信装置との、通信確立を支援する通信支援装置であって、
記憶部と、
前記プロセッサの動作中に、前記通信装置が接続される接続部への前記通信装置の接続を検出した場合、前記通信装置の前記レジスタに格納されているデータを前記通信装置から読み出し、前記データを前記記憶部に格納する検出部と、
前記記憶部に格納されている前記データを用いることにより前記プロセッサが生成した前記通信装置の設定値を前記プロセッサから取得し、取得した前記設定値を前記レジスタに書き込む書き込み部と
を備える通信支援装置。
【請求項２】
プロセッサと、レジスタを有するとともに前記プロセッサと通信する通信装置との、通信の確立を支援する通信支援装置であって、
記憶部と、
前記プロセッサの動作中に、前記通信装置が接続される接続部への前記通信装置の接続を検出した場合、前記通信装置の前記レジスタに格納されているデータを前記通信装置から読み出し、前記データを前記記憶部に格納する検出部と、
前記記憶部に格納されている前記データを用いることにより前記通信装置の設定値を生成し、前記設定値を前記レジスタに書き込む書き込み部と
を備える通信支援装置。
【請求項３】
前記接続部には、
前記通信装置が接続可能なスイッチ装置が接続され、
前記検出部は、
前記プロセッサの動作中に、前記接続部への前記スイッチ装置の接続を検出し、かつ、前記スイッチ装置に接続された前記通信装置を検出した場合、前記スイッチ装置に接続されている前記通信装置の前記レジスタに格納されているデータを読み出し、前記データを前記記憶部に格納する請求項１または請求項２に記載の通信支援装置。
【請求項４】
前記検出部が読み出す前記データは、
前記通信装置を識別する識別データを含む可変長データであり
前記検出部は、
前記可変長データからから前記識別データを抽出して、前記識別データと前記可変長データとを前記記憶部に格納するとともに、前記可変長データの格納場所を示す格納場所データを前記記憶部に格納する請求項１から請求項３のいずれか一項に記載の通信支援装置。
【請求項５】
前記可変長データは、
コンフィグレーション空間のデータと、メモリ空間のデータとのいずれかであり、
前記検出部は、
前記記憶部に、前記可変長データが前記コンフィグレーション空間のデータと前記メモリ空間のデータとのどちらのデータであるかを示すデータ識別情報を格納する請求項４に記載の通信支援装置。
【請求項６】
プロセッサと、レジスタを有するとともに前記プロセッサと通信する通信装置との、通信確立を支援する通信支援プログラムであって、
コンピュータに、
前記プロセッサの動作中に、前記通信装置が接続される接続部への前記通信装置の接続を検出した場合、前記通信装置の前記レジスタに格納されているデータを前記通信装置から読み出し、前記データを記憶部に格納する処理と、
前記記憶部に格納されている前記データを用いることにより前記プロセッサが生成した前記通信装置の設定値を前記プロセッサから取得し、取得した前記設定値を前記レジスタに書き込む処理と
を実行させる通信支援プログラム。
【請求項７】
プロセッサと、レジスタを有するとともに前記プロセッサと通信する通信装置との、通信の確立を支援する通信支援プログラムであって、
コンピュータに、
前記プロセッサの動作中に、前記通信装置が接続される接続部への前記通信装置の接続を検出した場合、前記通信装置の前記レジスタに格納されているデータを前記通信装置から読み出し、前記データを記憶部に格納する処理と、
前記記憶部に格納されている前記データを用いることにより前記通信装置の設定値を生成し、前記設定値を前記レジスタに書き込む処理と
を実行させる通信支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサとデバイスとの通信確立を支援する、通信支援装置及び通信支援プログラムに関する。
【背景技術】
【０００２】
従来、計算機システム及び通信システムでは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及び通信インタフェースを搭載したＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）デバイスを相互に接続する場合、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）に代表されるパラレルバスが使用された。
しかし、通信高速化に伴い、信号遅延を均一化するための等長または等遅延の配線のような、基板の配線パターンに対する制約が高まっている。このため、最近では高速なシリアルバスが主流である。その中でＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）（ＰＣＩ  Ｅｘｐｒｅｓｓは、以下ＰＣＩｅと記す）は、パーソナルコンピュータを中心として、標準的な規格として広く利用されている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＰＣＩまたはＰＣＩｅでは、プロセッサの動作中にペリフェラルカードが故障した場合は、Ｈｏｔ  ＰｌｕｇまたはＨｏｔ  Ｓｗａｐ機能を利用することで、システム全体の電源をオフせずに、動作続行の状態で、故障カードを正常カードに交換できる。但し、このＨｏｔ  Ｐｌｕｇ／Ｈｏｔ  Ｓｗａｐ機能は、正常動作していたペリフェラルカードを同一仕様の正常品に交換することが前提である。このため、システム起動時には存在しなかった機能を新たに追加するような処理はできない。また、システム起動時にファームウエアまたはＯＳ、ドライバソフトウエア、アプリケーションプログラムなどから、正常と認識されてた実績が必須である。
従って、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）のように、プロセッサの動作中に任意のＰＣＩデバイスを削除または追加し、ダイナミックなシステム構成の変更ができない。
【０００５】
これに対して特許文献１では、動作中に任意のＰＣＩデバイスを追加する提案がある。この提案は、以下の（１）から（３）の特徴を持つ。
（１）サウスブリッジ（以降ＳＢと略す、ＣＰＵに接続されるＩ／Ｏ拡張用のチップセットでＰＣＩまたはＰＣＩｅの制御用インタフェースを搭載）から、直接ファームウエアにＰＣＩデバイスの新規追加を通知する。これにより、標準ＯＳまたはデバイスドライバの修正が不要になる。
（２）ＳＢが、追加されたＰＣＩデバイスに、コンフィグレーションサイクルを発行する。この発行によってＶＩＤ（ベンダーＩＤ、ＰＣＩデバイスの製造メーカを示すコード）とＤＩＤ（デバイスＩＤ、ＰＣＩデバイスの型名を示すコード）との値を取得し保持する。
ファームウエアにＳＢ内に保持された値を読み出させることで、追加されたＰＣＩデバイスへ直接アクセスすることなく設定すべき内容を決定する。
（３）ＳＢからのコンフィグレーションサイクルが終了するまでは、ＣＰＵから発行されるコンフィグレーションサイクルはリトライ応答して待たせておく。そしてＳＢからのアクセス完了後に、ＣＰＵからのアクセスを許可する。
【０００６】
しかし、特許文献１の内容を最近の主流であるＰＣＩｅに適用した場合、以下のような課題が予想される。
ＰＣＩｅの場合は、スイッチを介してバスを拡張するシリアル伝送方式である。このため、ＳＢ内のＰＣＩ制御回路はツリー状のＰＣＩｅバスの頂点に位置するルートコンプレックス（ＲＣ）に相当する。ＰＣＩ／ＰＣＩｅの場合は基本的にＲＣの先に接続されるＣＰＵが各デバイスに対してリード及びライトを行い、各デバイスへデータを書き込んだり各デバイスからのリードデータを受信する。また、各周辺デバイスが自発的にＣＰＵに対してデータ転送を行う場合もある。従ってルートコンプレックスとスイッチとの間の配線に通信負荷が集中し易いという特徴がある。さらに、ＰＣＩｅがパケット通信方式のシリアルインタフェースであるため、通信オーバヘッドが、従来のパラレル伝送方式のＰＣＩに比べて大きい。このため、新規追加されたデバイスに対してＲＣからコンフィグレーションサイクルを発行することにより、元々存在していたデバイスに対する通常アクセスが阻害される。または、コンフィグレーションサイクルでは特にデータ長が短いパケットを多発するため、通信オーバヘッドの顕在化する。
【０００７】
この発明は、プロセッサの動作中にＰＣＩデバイスを削除または追加ができ、ダイナミックなシステム構成の変更が可能であり、プロセッサと、元々存在しているデバイスとの通信への影響の少ない、通信支援装置及び通信支援プログラムを提供する。
【課題を解決するための手段】
【０００８】
この発明の通信支援装置は、
プロセッサと、レジスタを有するとともに前記プロセッサと通信する通信装置との、通信確立を支援する通信支援装置であって、
記憶部と、
前記プロセッサの動作中に、前記通信装置が接続される接続部への前記通信装置の接続を検出した場合、前記通信装置の前記レジスタに格納されているデータを前記通信装置から読み出し、前記データを前記記憶部に格納する検出部と、
前記記憶部に格納されている前記データを用いることにより前記プロセッサが生成した前記通信装置の設定値を前記プロセッサから取得し、取得した前記設定値を前記レジスタに書き込む書き込み部と
を備える。
【発明の効果】
【０００９】
この発明により、プロセッサの動作中にＰＣＩデバイスを削除または追加ができ、ダイナミックなシステム構成の変更が可能であり、プロセッサと、元々存在しているデバイスとの通信への影響の少ない、通信支援装置及び通信支援プログラムを提供できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１の図で、通信システム１の構成図。
【図２】実施の形態１の図で、ホットアッド制御回路２１のハードウェア構成図。
【図３】実施の形態１の図で、通信システム１の動作を示すシーケンス図。
【図４】実施の形態１の図で、ホットアッド制御回路２１のハードウェア構成の変形例を示す図。
【図５】実施の形態２の図で、通信システム１の構成図。
【図６】実施の形態５の図で、メモリ２３のデータ配置を示す図。
【図７】実施の形態５の図で、検出部２２ａの動作を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１２】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施の形態１の通信システム１のシステム構成図である。通信システム１は、プロセッサ９、ブリッジ１０、ＰＣＩｅスイッチ２０、ＰＣＩｅスイッチ３０、ＰＣＩｅデバイス４０、ＰＣＩｅデバイス４１を備えている。ＰＣＩｅデバイス４２は、プロセッサ９の動作中にホットアッドされるＰＣＩｅデバイスである。
【００１３】
ＰＣＩｅデバイスは、レジスタであるコンフィグレーションレジスタを有し、プロセッサ９と通信する通信装置９２である。また、ＰＣＩｅスイッチはスイッチ装置９４である。図１にはコンフィグレーションレジスタ４２ａを示した。コンフィグレーションレジスタ４２ａはレジスタ１からレジスタＮを持つ。
【００１４】
プロセッサ９は、ブリッジ１０に接続される。ブリッジ１０にはＰＣＩｅの構成制御を処理する、ルートコンプレックス１１が搭載されている。ブリッジ１０は、ＰＣＩｅバスを拡張するためのＰＣＩｅスイッチ２０と接続される。
【００１５】
ＰＣＩｅスイッチ２０は、スイッチ本来の処理を行うためのルーティング処理回路２０ａと、新規追加デバイスに対する処理を行うためのホットアッド制御回路２１とを備えている。また、ＰＣＩｅスイッチ２０は、ＰＣＩｅデバイス及びＰＣＩｅスイッチのようなデバイスが接続されるポート２６を備えている。ポート２６は接続部９０である。ホットアッド制御回路２１は、プロセッサ９と通信装置９２であるＰＣＩｅデバイスとの通信確立を支援する通信支援装置である。また、ホットアッド制御回路２１はメモリ２３を備えているコンピュータである。
【００１６】
ＰＣＩｅスイッチ２０には、プロセッサ９との通信がすでに確立しているデバイスとして、ＰＣＩｅスイッチ３０、ＰＣＩｅデバイス４１が接続されている。ＰＣＩｅスイッチ３０にはＰＣＩｅデバイス４０が接続している。ＰＣＩｅデバイス４２は、プロセッサ９の動作中にホットアッドされるＰＣＩｅデバイスである。
【００１７】
＊＊＊構成の説明＊＊＊
図２は、コンピュータであるホットアッド制御回路２１のハードウェア構成図である。ホットアッド制御回路２１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２、メモリ２３、入出力インタフェース２５といったハードウェアを備える。ＣＰＵ２２は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１８】
ホットアッド制御回路２１は、機能要素として、検出部２２ａ及び書き込み部２２ｂを備える。検出部２２ａ及び書き込み部２２ｂの機能は、ソフトウェアにより実現される。
【００１９】
ＣＰＵ２２は、通信支援プログラムを実行する。通信支援プログラムは、検出部２２ａ及び書き込み部２２ｂの機能を実現するプログラムである。通信支援プログラムは、検出部２２ａ及び書き込み部２２ｂの「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程をコンピュータに実行させるプログラムである。また、通信支援方法は、コンピュータであるホットアッド制御回路２１が通信支援プログラムを実行することにより行われる方法である。通信支援プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００２０】
メモリ２３は、記憶部９３であり、記憶装置である。入出力インタフェース２５は、ＣＰＵ２２が他の装置または他の回路と通信するために使用される。
【００２１】
＊＊＊動作の説明＊＊＊
図３は、通信システム１の動作を示すシーケンス図である。図３を参照して、通信システム１の動作を説明する。
（１）プロセッサ９の通常動作中に、装置が接続されていなかったＰＣＩｅスイッチ２０の空きポート２６に、ＰＣＩｅデバイス４２が新規に接続されたとする。
（２）この場合、新規に追加されたＰＣＩｅデバイス４２からの新規追加されたことを通知する接続通知信号を、ＰＣＩｅスイッチ２０が受信する。接続通知信号はホットアッド信号である。
ステップＳ１１において、接続通知信号による通知は、ＰＣＩｅスイッチ２０内のホットアッド制御回路２１へ通知される。検出部２２ａは、入出力インタフェース２５を介して接続通知信号を取得し、接続されたＰＣＩｅデバイス４２を検出する。検出部２２ａは、新規追加されたＰＣＩｅデバイス４２に対してコンフィグレーションサイクルを発行する。
【００２２】
ステップＳ１２において、検出部２２ａは、コンフィグレーションサイクルの発行によって、ＰＣＩｅデバイス４２の有する、設定が必要なコンフィグレーションレジスタ４２ａからデータを読み出す。
ステップＳ１３において、検出部２２ａは、読み出したデータをメモリ２３に保存する。このステップＳ１２及びステップＳ１３の処理は、プロセッサ９と、ＰＣＩｅデバイス４０あるいはＰＣＩｅデバイス４１のような既存デバイスとの間の通信処理とは完全に独立して行われる。
【００２３】
このように、検出部２２ａは、プロセッサ９の動作中に、ＰＣＩｅデバイスが接続されるポート２６へのＰＣＩｅデバイスの接続を検出する。検出部２２ａは、この接続を検出した場合、ＰＣＩｅデバイスのコンフィグレーションレジスタ４２ａに格納されているデータをＰＣＩｅデバイスから読み出し、読み出したデータをメモリ２３に格納する。このため、ステップＳ１２及びステップＳ１３によって、システム全体の動作へのＰＣＩｅデバイス４２の処理の影響が防止できる。
【００２４】
検出部２２ａは、コンフィグレーションレジスタ４２ａから取得したデータをメモリ２３に保存した場合、ステップＳ１４を実行する。
ステップＳ１４において、検出部２２ａは、
（１）新規追加デバイスの検出の終了、
及び
（２）新規追加デバイスからのコンフィグレーション情報の取得終了、
の通知を、入出力インタフェース２５を介してプロセッサ９に送信する。
【００２５】
ステップＳ１５において、プロセッサ９は、ＰＣＩｅスイッチ２０のメモリ２３から、新規追加ＰＣＩｅデバイス４２のデータを取得する。この取得では、プロセッサ９は、メモリサイクルを利用する。コンフィグレーションサイクルは、パケット内のデータ長が短く、通信効率が悪いが、メモリサイクルはパケット内のデータ長が長く効率が良い。
【００２６】
ステップＳ１６において、プロセッサ９は、取得した新規追加ＰＣＩｅデバイス４２のコンフィグレーションレジスタ情報の、ＶＩＤ及びＤＩＤの値を確認する。この確認によって、プロセッサ９は、デバイスのメーカおよび型名を特定する。
ステップＳ１７において、プロセッサ９は、追加されたＰＣＩｅデバイス４２のＰＣＩメモリ空間内の割り当てを決定するとともに、コンフィグレーションレジスタ４２ａの各種レジスタ１からレジスタＮの設定値を決定する。
【００２７】
ステップＳ１８において、プロセッサ９は、決定した各種レジスタの設定値を、効率の良いメモリサイクルを使用して、ＰＣＩｅスイッチ２０内のメモリ２３へ書き込む。
【００２８】
ステップＳ１９において、書き込み部２２ｂは、メモリ２３に書き込まれた新規追加されたＰＣＩｅデバイス４２の各種レジスタの設定値を、ＰＣＩｅデバイス４２のコンフィグレーションレジスタ４２ａへ書き込み、初期化を実施する。
なお、この書込み処理は、ステップＳ１２の読み出し処理と同様に、プロセッサ９とＰＣＩｅデバイス４０、４１のような既存デバイスとの間の通信処理とは完全に独立して行われる。このため、ステップＳ１９がシステム全体の動作へ影響することを防止できる。
【００２９】
各種レジスタの設定値の書き込みによるコンフィグレーションレジスタ４２ａの初期化が完了した場合、ステップＳ２０において、書き込み部２２ｂは、初期化完了通知を、入出力インタフェース２５を介してプロセッサ９へ送信する。
また、このプロセッサ９への送信とともに、書き込み部２２ｂは、新規追加されたＰＣＩｅデバイス４２へのルーティングを有効にし、すでに接続されている既存デバイスと同じように、ＰＣＩｅデバイス４２を通信可能な状態にする。
【００３０】
ステップＳ１９のように、書き込み部２２ｂは、メモリ２３に格納されているデータを用いることによりプロセッサ９が生成したＰＣＩｅデバイス４２の設定値をプロセッサ９から取得し、この設定値をコンフィグレーションレジスタ４２ａに書き込む。
【００３１】
＊＊＊実施の形態１の効果の説明＊＊＊
以上のように、新規追加されたＰＣＩｅデバイス４２への初期化処理の大半をＰＣＩｅスイッチ２０のホットアッド制御回路２１が代行する。また、プロセッサ９が行う処理は、効率の悪いコンフィグレーションサイクルではなく、高効率なメモリサイクルが使用される。このため、新規追加されるＰＣＩｅデバイス４２の初期化処理が、プロセッサ９と既存デバイスとの通信処理に影響することを、大幅に低減できる。
【００３２】
また、ＰＣＩｅデバイスは物理的にはＰＣＩｅスイッチと１対１で接続する。多数のＰＣＩｅデバイスを接続する必要がある場合はＰＣＩｅスイッチを多段接続する必要があるという課題がある。この課題の解決方法として、ＰＣＩｅスイッチ内にホットアッド制御回路を設け、ポート毎に、独立したホットアッド処理ができるような構成とした。この構成によって、通常動作中であるプロセッサ９と既存ＰＣＩｅデバイスとの間の通信へのホットアッド処理の影響を回避できる。
また、ホットアッド処理中のＰＣＩｅバス通信の性能低下を防止できる。
なお、実施の形態１の内容は、現行のＰＣＩｅ規格から逸脱することは無い。このため、実施の形態１に係る発明を実装したデバイスと、実施の形態１に係る発明を実装していないデバイスとを混在させて、デバイスツリーを構成可能である効果もある。
【００３３】
＜変形例＞
実施の形態１では、ホットアッド制御回路２１の機能がソフトウェアで実現されるが、変形例として、ホットアッド制御回路２１の機能がハードウェアで実現されてもよい。
図４は、実施の形態１の変形例に係るホットアッド制御回路２１の構成を示す。ホットアッド制御回路２１は、電子回路９９、入出力インタフェース２５を備える。電子回路９９は、検出部２２ａ、書き込み部２２ｂ及びメモリ２３の機能を実現する記憶部２２ｃを有する専用の電子回路である。電子回路９９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサのような回路である。ホットアッド制御回路２１の構成要素の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。別の変形例として、ホットアッド制御回路２１の構成要素の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
【００３４】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、ホットアッド制御回路２１において、検出部２２ａ及び書き込み部２２ｂの機能は、プロセッシングサーキットリにより実現される。
【００３５】
実施の形態２．
図５は、実施の形態２の通信システム１を示す構成図である。システム構成は実施の形態１と同じである。図５では、ホットアッドするデバイスがＰＣＩｅスイッチ３１である。ＰＣＩｅスイッチ３１には、配下にＰＣＩｅデバイス４３及びＰＣＩｅデバイス４４が接続されている。
【００３６】
実施の形態２では、ポート２６に、ＰＣＩｅデバイスが接続可能なＰＣＩｅスイッチが接続される。検出部２２ａは、プロセッサ９の動作中に、ポート２６へのＰＣＩｅスイッチの接続を検出し、かつ、ＰＣＩｅスイッチに接続されたＰＣＩｅデバイスを検出した場合、ＰＣＩｅスイッチに接続されているＰＣＩｅデバイスのコンフィグレーションレジスタに格納されているデータを読み出してメモリ２３に格納する。
具体的な処理は以下のようである。
【００３７】
検出部２２ａは、ＰＣＩｅスイッチ２０の空きポート２６に新規追加されたデバイスであるＰＣＩｅスイッチ３１から送信されるホットアッド信号からＰＣＩｅスイッチ３１の接続を検出する。検出部２２ａは、ＰＣＩｅスイッチ３１に対して実施の形態１のＰＣＩｅデバイス４２の場合と同様に、コンフィグレーション空間の読み出し処理を行い、読み出したデータをメモリ２３に格納する。また、検出部２２ａは、新規追加されたＰＣＩｅスイッチ３１のデバイスタイプの情報を確認する。検出部２２ａは、確認したデバイスタイプの情報がエンドポイントデバイスではなくスイッチデバイスであった場合には、以下の処理を実施する。検出部２２ａは、ＰＣＩｅスイッチ３１の先に接続されているＰＣＩｅデバイス４３及びＰＣＩｅデバイス４４に対しても、実施の形態１で述べた処理と同様の「コンフィグレーション空間の読み出し処理」（ステップＳ１２）を実施する。検出部２２ａは、ステップＳ１３と同様に、メモリ２３に、ＰＣＩｅデバイス４３及びＰＣＩｅデバイス４４のそれぞれのコンフィグレーションレジスタから取得したデータを格納する。なお、図５ではＰＣＩｅデバイスは２つであるが３つ以上でも同様である。また、ＰＣＩｅスイッチ３１に一つのＰＣＩｅデバイスが接続されている場合も、以上に説明したＰＣＩｅデバイスが２つの場合と同様である。
【００３８】
＊＊実施の形態２の効果の説明＊＊＊
実施の形態２によれば、ＰＣＩｅスイッチ３１に一つあるいは複数のＰＣＩｅデバイスが接続されている場合も、各ＰＣＩｅデバイスの初期化処理を、プロセッサ９に負荷を与えずに実施することができる。
【００３９】
実施の形態３．
実施の形態３では、実施の形態１に対して、書き込み部２２ｂは、ＰＣＩｅメモリ空間の割り当て状態及びＰＣＩｅデバイス４２の各種レジスタの設定値も決定する。実施の形態３では、実施の形態１のステップＳ１７でプロセッサ９が決定していたＰＣＩメモリ空間の割り当てと、各種レジスタとの決定値を、書き込み部２２ｂが決定する。つまり、書き込み部２２ｂは、メモリ２３に格納されているデータを用いることによりＰＣＩｅデバイス４２の設定値を生成し、この設定値をコンフィグレーションレジスタ４２ａに書き込む。この処理により、プロセッサ９とは完全に独立したデバイス初期化とメモリ空間割り当てとの追加設定の処理が可能となる。
【００４０】
デバイス初期化とメモリ空間割り当てとの追加設定の処理の完了後、書き込み部２２ｂ
は、入出力インタフェース２５を介して、プロセッサ９へ割り込みで完了通知を送信する。プロセッサ９は、メモリ空間の設定変更結果をフィードバックする。また、プロセッサ９は、新規追加デバイスを有効にするため、新規追加デバイスの情報をアプリケーションソフトウェアへ送信する。
【００４１】
＊＊＊実施の形態３の効果の説明＊＊＊
書き込み部２２ｂの処理の結果、新規追加ＰＣＩｅデバイス４２の初期化処理の中で、プロセッサ９が行う処理を、更に削減できる。
【００４２】
実施の形態４．
実施の形態４は実施の形態２に実施の形態３を適用した内容である。実施の形態４では、実施の形態２に対して、書き込み部２２ｂは、ＰＣＩｅメモリ空間の割り当て状態（ステップＳ１７に対応）及びＰＣＩｅデバイス４２の各種レジスタの設定値も決定する。これにより、プロセッサ９とは完全に独立したデバイス初期化とメモリ空間割り当てとの追加設定の処理が可能となる。
【００４３】
デバイス初期化とメモリ空間割り当てとの追加設定の処理の完了後、書き込み部２２ｂは、入出力インタフェース２５を介して、プロセッサ９へ割り込みで完了通知を送信する。プロセッサ９は、メモリ空間の設定変更結果をフィードバックする。また、プロセッサ９は、新規追加デバイスを有効にするため、新規追加デバイスの情報をアプリケーションソフトウェアへ送信する。
【００４４】
この結果、新規追加ＰＣＩｅデバイス４２の初期化処理の中で、プロセッサ９が行う処理を更に削減することができる。
【００４５】
＊＊＊実施の形態４の効果の説明＊＊＊
書き込み部２２ｂの処理の結果、新規追加ＰＣＩｅデバイスの初期化処理の中で、プロセッサ９が行う処理を、更に削減できる。実施の形態４では複数の新規追加ＰＣＩｅデバイスに対して対応が可能であるので、実施の形態３に対して、さらに、プロセッサ９の負荷軽減の効果が大きい。
【００４６】
実施の形態５．
図６は、実施の形態１から実施の形態４における、メモリ２３内の構成例を示す。メモリ２３の内部は、タグ領域１００とデータ領域２００とに分けられる。タグ領域１００とデータ領域２００とは、複数分のデバイス毎の領域に分けられる。図６において、タグ領域１００では領域１０１が第１のデバイス用の領域であり、以降、領域１０２が第２のデバイス用の領域、領域１０３が第Ｎ番目のデバイス用の領域である。
【００４７】
データ領域２００も同様に、領域２０１が第１のデバイス用の領域であり、以降、領域２０２が第２のデバイス用の領域、領域２０３が第Ｎ番目のデバイス用の領域である。
【００４８】
更に、タグ領域の内部は、ステータスフラグ１１１、バス番号１１２、デバイス番号１１３、レジスタ先頭アドレス１１４、データ領域のアドレス１１５、データ領域のサイズ１１６に区分けされている。
【００４９】
次に各領域の機能について、第１のデバイスの領域の場合を例に説明する。なお、第２〜第Ｎのデバイスの場合も同様である。
【００５０】
図７は、検出部２２ａの動作を示すフローチャートである。図７を参照して、ステータスフラグ１１１からデータ領域のサイズ１１６を説明する。
【００５１】
＜ステータスフラグ１１１＞
検出部２２ａは、検出したデバイスのデータをメモリ２３内に格納する際（ステップＳ１３に対応）に、ステータスフラグ１１１を更新する。ステータスフラグ１１１には、タグ領域１００における第１のデバイスの領域１０１が有効であるか無効であるかを示すフラグがある。
ステップＳ３１において、検出部２２ａは、このフラグを有効にする。
【００５２】
＜バス番号１１２、デバイス番号１１３＞
ステップＳ３２において、検出部２２ａは、検出したデバイスが接続されているＰＣＩｅバスのバス番号と、検出したデバイスのデバイス番号とを、バス番号１１２およびデバイス番号１１３に格納する。バス番号１１２及びデバイス番号１１３はデバイスを識別する識別データである。ステータスフラグ１１１、バス番号１１２、デバイス番号１１３の３つの領域を使用することにより、プロセッサ９は、検出部２２ａによって検出されたデバイスを特定すること（ステップＳ１５及びＳ１６に対応）が可能となる。
【００５３】
＜先頭アドレス１１４、データ領域のサイズ１１６＞
ステップＳ３３において、検出部２２ａは、検出されたデバイスのコンフィグレーション空間の先頭アドレスをレジスタ先頭アドレス１１４に格納し、検出されたデバイスのコンフィグレーション空間のサイズをデータ領域のサイズ１１６に格納する。通常、ＰＣＩのコンフィグレーション空間については、００ｈ〜３Ｆｈが規格で規定された領域である。このため、この部分については、デバイス種別に関わらず、先頭アドレスは０番地であり、サイズは３Ｆｈとなる。３Ｆｈ以降の４０ｈ〜ＦＦＦｈの領域には、各種デバイスの必要に応じて、独自に規定されて拡張された、デバイス毎に固有な設定及びステータスを表示するレジスタが規定されている場合がある。また、これらの拡張されたレジスタが置かれるアドレスも、各デバイス毎に独自規定されている。デバイスによってはアドレスが不連続に複数箇所に分散している場合もある。よって、コンフィグレーション空間の先頭アドレスをレジスタ先頭アドレス１１４に格納することで、アドレスが不連続に複数箇所に分散しているデバイスにも対応できる。
【００５４】
＜データ領域のアドレス１１５＞
ステップＳ３４において、データ領域のアドレス１１５に、検出部２２ａは、検出されたデバイスから読み出したレジスタ値を保存した領域の先頭アドレスを格納する。前述の通り、コンフィグレーション空間のサイズはデバイスに依存するため、データ領域２００のコンフィグレーション空間のサイズは可変である必要がある。つまり、ＰＣＩｅデバイスの有するコンフィグレーションレジスタから読み出されるデータは可変長データである。この可変長データはデバイスを識別する識別データを含む。
【００５５】
例えば、検出したデバイスの、規格標準のコンフィグレーション空間レジスタ（アドレス００ｈ〜３Ｆｈ）の情報を第１のデバイスの領域に格納する場合には、以下のようになる。
レジスタ先頭アドレス：００ｈ
データ領域のアドレス：Ｘ１
データ領域のサイズ：Ｘ２（この例では３Ｆｈ）
なお、第２のデバイスの領域に格納する場合は、データ領域のアドレス及びサイズは、Ｙ１およびＹ２となる。
【００５６】
以上のように、検出部２２ａが読み出すデータは、ＰＣＩｅデバイスを識別する識別データを含む可変長データの場合がある。検出部２２ａは、その可変長データからＰＣＩｅデバイスの識別データを抽出して、識別データと可変長データとをメモリ２３に格納する。また、検出部２２ａは、可変長データの格納場所を示す格納場所データをメモリ２３に格納する。
【００５７】
＊＊＊実施の形態５の効果＊＊＊
実施の形態５では、コンフィグレーションレジスタから読みだした情報をタグ領域１００とデータ領域とに分けているので、必要な情報の参照が容易である。
また、データ領域のアドレス１１５と、データ領域のサイズ１１６とがタグ領域１００に含まれるので、読み出すべきデータが可変長データである場合も対応が可能であるので、種々のデバイスに対応可能である。
【００５８】
実施の形態６．
実施の形態５ではコンフィグレーション空間の例を示したが、コンフィグレーション空間に加え、メモリ空間内にも、各種の設定を行うためのレジスタが搭載されているデバイスもある。
このようなデバイスに対応するため、検出部２２ａは、デバイスから読み出してメモリ２３に格納したデータ（ステップＳ１３に対応）が、コンフグレーション空間のデータかメモリ空間のデータかを示すフラグを、ステータスフラグ１１１内に追加する。このフラグはデータ識別情報である。メモリ空間のデータをメモリ２３に格納する場合、バス番号１１２とデバイス番号１１３とは特に変更することなく、デバイスを一意に特定することができる。
【００５９】
レジスタの先頭アドレスについては、メモリ空間内のアドレスを格納することで、前述のコンフグレーション空間の場合と同様に処理が可能である。
【００６０】
以上のように、実施の形態６では、可変長データは、コンフィグレーション空間のデータと、メモリ空間のデータとのいずれかである。検出部２２ａは、メモリ２３に、可変長データがコンフィグレーション空間のデータとメモリ空間のデータとのどちらのデータであるかを示すデータ識別情報を格納する。
【００６１】
＊＊＊実施の形態６の効果＊＊＊
実施の形態６ではデータ識別情報であるフラグを採用するので、コンフィグレーション空間に限らずメモリ空間のレジスタの設定も可能になる効果がある。
【００６２】
以上、本発明の実施の形態１から６を説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００６３】
１  通信システム、９  プロセッサ、１０  ブリッジ、１１  ルートコンプレックス、２０  ＰＣＩｅスイッチ、２１  ホットアッド制御回路、２２  ＣＰＵ、２２ａ  検出部、２２ｂ  書き込み部、２３  メモリ、２５  入出力インタフェース、２６  ポート、２０ａ  ルーティング処理回路、３０  ＰＣＩｅスイッチ、３１  ＰＣＩｅスイッチ、４０  ＰＣＩｅデバイス、４１  ＰＣＩｅデバイス、４２  ＰＣＩｅデバイス、４２ａ  コンフィグレーションレジスタ、４３  ＰＣＩｅデバイス、４４  ＰＣＩｅデバイス、１００  タグ領域、１０１  第１のデバイス、１０２  第２のデバイス、１０３  第Ｎのデバイス、１１１  ステータスフラグ、１１２  バス番号、１１３  デバイス番号、１１４  レジスタ先頭アドレス、１１５  データ領域のアドレス、１１６  データ領域のサイズ、２００  データ領域、２０１  第１のデバイス、２０２  第２のデバイス、２０３  第Ｎのデバイス。
【図１】
2019128696.tif 000003
【図２】
2019128696.tif 000004
【図３】
2019128696.tif 000005
【図４】
2019128696.tif 000006
【図５】
2019128696.tif 000007
【図６】
2019128696.tif 000008
【図７】
2019128696.tif 000009