(57)【要約】【課題】ＰＣＩ  Ｅｘｐｒｅｓｓカードによって機能を拡張すること。【解決手段】マイクロプロセッサ１２０と、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０と、ＩＯコントローラ１１０とを備え、ＩＯコントローラ１１０は、第１のＰＣＩ  Ｅｘｐｒｅｓｓポート１１１と、第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポートに接続される第２のＰＣＩ  Ｅｘｐｒｅｓｓポート１１２と、第２のＰＣＩ  Ｅｘｐｒｅｓｓポート１１２に接続されて、ＰＣＩ  ＥｘｐｒｅｓｓパケットとＩＯコントローラ１１０の内部信号を変換する第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部、及び第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部とそれぞれ内部バスによって接続されるメモリアクセス機構とを有する。【選択図】図１
2012163995.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩ  Ｅｘｐｒｅｓｓカードによって機能を拡張する情報処理装置であって、
マイクロプロセッサと、
前記ＰＣＩ  Ｅｘｐｒｅｓｓカード、及び前記マイクロプロセッサとそれぞれＰＣＩ  Ｅｘｐｒｅｓｓリンクによって接続されるＰＣＩ  Ｅｘｐｒｅｓｓスイッチと、
前記マイクロプロセッサ、及び前記ＰＣＩ  ＥｘｐｒｅｓｓスイッチとそれぞれＰＣＩ  Ｅｘｐｒｅｓｓリンクによって接続されて、前記ＰＣＩ  ＥｘｐｒｅｓｓカードのメモリマップドＩ／Ｏ空間にアクセスするＩＯコントローラと
を備え、
前記ＩＯコントローラは、
前記マイクロプロセッサのルートポートに接続される第１のＰＣＩ  Ｅｘｐｒｅｓｓポートと、
前記第１のＰＣＩ  Ｅｘｐｒｅｓｓポートに接続されて、ＰＣＩ  ＥｘｐｒｅｓｓパケットとＩＯコントローラの内部信号を変換する第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、
前記ＰＣＩ  Ｅｘｐｒｅｓｓスイッチのダウンストリームポートに接続される第２のＰＣＩ  Ｅｘｐｒｅｓｓポートと、
前記第２のＰＣＩ  Ｅｘｐｒｅｓｓポートに接続されて、ＰＣＩ  ＥｘｐｒｅｓｓパケットとＩＯコントローラの内部信号を変換する第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、
前記第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部、及び前記第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部とそれぞれ内部バスによって接続されるメモリアクセス機構と
を有する情報処理装置。
【請求項２】
前記メモリアクセス機構は、前記第２のＰＣＩｅインターフェース部に対してメモリマップドＩ／Ｏ空間のメモリリクエストを発行する
請求項１に記載の情報処理装置。
【請求項３】
前記メモリアクセス機構は、発行したメモリリクエストのコンプリーション状態を管理するためのレジスタを有する
請求項２に記載の情報処理装置。
【請求項４】
前記レジスタは、メモリマップドＩ／Ｏ空間にマッピングされている
請求項３に記載の情報処理装置。
【請求項５】
前記マイクロプロセッサにおいて動作するソフトウェアは、前記第１のＰＣＩ  Ｅｘｐｒｅｓｓポート、及び前記第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部を介して、前記レジスタにアクセスする
請求項４に記載の情報処理装置。
【請求項６】
前記マイクロプロセッサにおいて動作するソフトウェアは、前記ＩＯコントローラのメモリアクセス機構のレジスタにアクセスすることによって、前記ＰＣＩ  ＥｘｐｒｅｓｓカードのメモリマップドＩ／Ｏ空間にメモリリクエストを発行する
請求項５に記載の情報処理装置。
【請求項７】
前記マイクロプロセッサにおいて動作するソフトウェアは、メモリＲｅａｄリクエストの場合、コンプリーション状態を確認して正常終了しているときに、メモリマップドＩ／Ｏ空間より読み出したデータをレジスタより読み出す
請求項６に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。特に、本発明は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｂｕｓ）  Ｅｘｐｒｅｓｓカードによって機能を拡張する情報処理装置に関する。
【背景技術】
【０００２】
図１２は、既知の情報処理装置９００の利用環境の一例を示す。既知の情報処理装置９００は、マイクロプロセッサ９２０、メモリ９３０、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ９４０、及び複数のＰＣＩ  Ｅｘｐｒｅｓｓカード９５０ａ〜ｄ（以下、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０と総称する。）を備えている。
【０００３】
マイクロプロセッサ９２０は、ルートコンプレックスを内蔵している。そして、マイクロプロセッサ９２０は、バス９６１を介して、メモリ９３０と電気的に接続されている。また、マイクロプロセッサ９２０のルートポート９２１は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク９７３を介して、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ９４０のアップストリームポート９４２と電気的に接続されている。
【０００４】
一方、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ９４０のダウンストリームポート９４３は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク９７４を介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０ａのポート９５１ａと電気的に接続されている。同様に、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ９４０のダウンストリームポート９４４〜９４６は、ＰＣＩ  Ｅｘｐｒｅｓｓリンクを介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０と電気的に接続されている。また、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０は、パスを介して、周辺機器７００と電気的に接続されている。
【０００５】
既知の情報処理装置９００は、マイクロプロセッサ９２０上で動作するソフトウェアが情報処理装置９００と周辺機器７００との間のデータ転送を制御するために、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０にアクセスする場合は次のように動作する。
【０００６】
まず、ソフトウェアは対象となるＰＣＩ  Ｅｘｐｒｅｓｓカード９５０に対応したメモリマップドＩ／Ｏ空間にアクセスする命令をマイクロプロセッサ９２０に対して実行する。なおまた、この命令はメモリ９３０にアクセスするものと同一であり、一般的にロード命令及びストア命令である。これにより、マイクロプロセッサ９２０はソフトウェアにより指示されたメモリマップドＩ／Ｏ空間に対してアクセスする信号を内蔵のルートコンプレックスに送信し、ルートコンプレックスは対応するパケットをルートポート９２１より送信する。パケットを受信したＰＣＩ  Ｅｘｐｒｅｓｓカード９５０はそのパケットに対応した処理を行い、メモリＲｅａｄリクエストならばリクエスタであるマイクロプロセッサ９２０に対して読み出したデータと共にコンプリーションを返す。メモリＷｒｉｔｅリクエストの場合はポステッドになる。そして、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０よりコンプリーションを受信したルートコンプレックスはマイクロプロセッサ９２０に受信したデータを渡し、ソフトウェアによって実行された命令が完結する。
【０００７】
ここで、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０が障害によりマイクロプロセッサ９２０からのメモリＲｅａｄリクエストに正常に応答できない場合を考えてみる。ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０がメモリＲｅａｄリクエストに対して無応答になったり、コンプリーションがコンプリータアボートや未サポートリクエストを返した場合、ルートコンプレックスはマイクロプロセッサ９２０に対して読み出したデータを受け渡すことができなくなる。そのため、マイクロプロセッサ９２０は命令を完結することができずにストール状態になってしまう。また、ルートコンプレックスはコンプリータの無応答によりタイムアウトを検出したり、コンプリーションアボートや未サポートリクエストを返されたとき、致命的な障害の発生をマイクロプロセッサ９２０に報告するものもあり、このときマイクロプロセッサ９２０は情報処理装置９００全体をリセットして回復を試みる場合がほとんどである。
【０００８】
このように、既知の情報処理装置９００において、ＰＣＩ  Ｅｘｐｒｅｓｓカード９５０の障害によりマイクロプロセッサ９２０からのメモリマップドＩ／Ｏ空間のアクセスが正常に完了しない場合、たとえ単一のＰＣＩ  Ｅｘｐｒｅｓｓカード９５０の障害であったとしても情報処理装置９００全体の障害になるという問題が存在する。
【０００９】
ところで、バス障害処理方法としては、コンピュータシステムにおいてＰＣＩバスを制御する技術が知られている（例えば、特許文献１参照。）。
【００１０】
また、システム監視プログラムとしては、入出力バスの障害による影響を受けずに、システムを安定動作できるようにした技術が知られている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２１５８０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１に記載の技術は、ＰＣＩ規格に関する技術である。しかしながら、ＰＣＩ規格には、リクエストリプライに対するタイムアウトの概念がない。したがって、特許文献１に記載の技術によっては、ＰＣＩデバイスより応答がない場合に対処することができない。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明の第１の形態によると、ＰＣＩ  Ｅｘｐｒｅｓｓカードによって機能を拡張する情報処理装置であって、マイクロプロセッサと、ＰＣＩ  Ｅｘｐｒｅｓｓカード、及びマイクロプロセッサとそれぞれＰＣＩ  Ｅｘｐｒｅｓｓリンクによって接続されるＰＣＩ  Ｅｘｐｒｅｓｓスイッチと、マイクロプロセッサ、及びＰＣＩ  ＥｘｐｒｅｓｓスイッチとそれぞれＰＣＩ  Ｅｘｐｒｅｓｓリンクによって接続されて、ＰＣＩ  ＥｘｐｒｅｓｓカードのメモリマップドＩ／Ｏ空間にアクセスするＩＯコントローラとを備え、ＩＯコントローラは、マイクロプロセッサのルートポートに接続される第１のＰＣＩ  Ｅｘｐｒｅｓｓポートと、第１のＰＣＩ  Ｅｘｐｒｅｓｓポートに接続されて、ＰＣＩ  ＥｘｐｒｅｓｓパケットとＩＯコントローラの内部信号を変換する第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチのダウンストリームポートに接続される第２のＰＣＩ  Ｅｘｐｒｅｓｓポートと、第２のＰＣＩ  Ｅｘｐｒｅｓｓポートに接続されて、ＰＣＩ  ＥｘｐｒｅｓｓパケットとＩＯコントローラの内部信号を変換する第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部と、第１のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部、及び第２のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部とそれぞれ内部バスによって接続されるメモリアクセス機構とを有する。
【００１４】
なおまた、上記のように発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となり得る。
【発明の効果】
【００１５】
以上の説明から明らかなように、この発明においては、マイクロプロセッサにおいて動作するソフトウェアがＰＣＩ  ＥｘｐｒｅｓｓカードのメモリマップドＩ／Ｏ空間にアクセスするにあたり、ＩＯコントローラのメモリアクセス機構を使用する。
【００１６】
このようにして、この発明によっては、ＰＣＩ  Ｅｘｐｒｅｓｓカードに障害が発生して、コンプリーションがタイムアウトしたり、コンプリータアボート等のマイクロプロセッサが予期しないものだったりしたとしても、ＩＯコントローラのメモリアクセス機構がそれを受信するので、マイクロプロセッサに致命的な障害として伝搬することがない。
【００１７】
そのため、この発明によっては、ソフトウェアによって回復処理が可能となり、ＰＣＩ  Ｅｘｐｒｅｓｓカードの障害によって情報処理装置全体に障害が波及することを防ぐことができる。
【図面の簡単な説明】
【００１８】
【図１】一実施形態に係る情報処理装置１００利用環境の一例を示す図である。
【図２】ＩＯコントローラ１１０のブロック構成の一例を示す図である。
【図３】情報処理装置１００におけるメモリマップドＩ／Ｏ空間のマッピングの一例を示す図である。
【図４】ＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間３７０のマッピングの一例を示す図である。
【図５】リクエスト・コントロール・レジスタ２１０の一例を示す図である。
【図６】リクエスト・アドレス・レジスタ２２０の一例を示す図である。
【図７】リプライ・ステータス・レジスタ２３０の一例を示す図である。
【図８】データ・レジスタ２４０の一例を示す図である。
【図９】タイムアウト・レジスタ２５０の一例を示す図である。
【図１０】情報処理装置１００の動作フローの一例を示す図である。
【図１１】情報処理装置１００の動作フローの別の例を示す図である。
【図１２】既知の情報処理装置９００の利用環境の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は、特許請求の範囲にかかる発明を限定するものではなく、また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２０】
図１は、一実施形態に係る情報処理装置１００利用環境の一例を示す。情報処理装置１００は、ＰＣＩ  Ｅｘｐｒｅｓｓカードによって機能を拡張する装置である。
【００２１】
情報処理装置１００は、ＩＯ（ｉｎｐｕｔ−ｏｕｔｐｕｔ）コントローラ１１０、マイクロプロセッサ１２０、メモリ１３０、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０、及び複数のＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄ（以下、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０と総称する。）を備える。マイクロプロセッサ１２０は、ＰＣＩ  Ｅｘｐｒｅｓｓのルートコンプレックスを実装している。
【００２２】
ＩＯコントローラ１１０は、２つのＰＣＩ  Ｅｘｐｒｅｓｓポート１１１、１１２を有している。マイクロプロセッサ１２０は、２つのルートポート１２１、１２２を有している。ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０は、１つのアップストリームポート１４１と、５つのダウンストリームポート１４２〜１４６とを有している。ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａは、ポート１５１ａを有している。
【００２３】
なおまた、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ以外のＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｂ〜ｄも、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａが有する構成要素と同じ構成要素を有する。以後の説明では、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０が有する構成要素がいずれのＰＣＩ  Ｅｘｐｒｅｓｓカード１５０の構成要素であるかを区別する場合には、各構成要素を有するＰＣＩ  Ｅｘｐｒｅｓｓカード１５０と同じ添え字（ａ〜ｄ）を各構成要素の末尾に付して区別する。例えば、ポート１５１ａ、ポート１５１ｂ、及びポート１５１ｃは、それぞれＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｂ、及びＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｃの構成要素であることを示す。
【００２４】
また、以後の説明において、添え字が付されていない構成要素の機能及び動作は、同じ符号が付されたいずれの構成要素の機能及び動作を示す。例えば、ポート１５１で説明された機能及び動作は、ポート１５１ａ〜ｄの機能及び動作を示す。
【００２５】
そして、ＩＯコントローラ１１０のＰＣＩ  Ｅｘｐｒｅｓｓポート１１１は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７１を介して、マイクロプロセッサ１２０のルートポート１２２と電気的に接続されている。また、ＩＯコントローラ１１０のＰＣＩ  Ｅｘｐｒｅｓｓポート１１２は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７３を介して、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポート１４２と電気的に接続されている。
【００２６】
一方、マイクロプロセッサ１２０は、バス１６１を介して、メモリ１３０と電気的に接続されている。また、マイクロプロセッサ１２０のルートポート１２１は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７２を介して、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のアップストリームポート１４１と電気的に接続されている。
【００２７】
一方、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポート１４３は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７４を介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａのポート１５１ａと電気的に接続されている。同様に、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポート１４４は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７５を介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｂのポート１５１ｂと電気的に接続されている。同様に、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポート１４５は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７６を介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｃのポート１５１ｃと電気的に接続されている。同様に、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のダウンストリームポート１４６は、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１７７を介して、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｄのポート１５１ｄと電気的に接続されている。
【００２８】
一方、ＰＣＩＥｘｐｒｅｓｓカード１５０ａは、パス８０１を介して、周辺機器７００ａと電気的に接続されている。同様に、ＰＣＩＥｘｐｒｅｓｓカード１５０ｂは、パス８０２を介して、周辺機器７００ｂと電気的に接続されている。同様に、ＰＣＩＥｘｐｒｅｓｓカード１５０ｃは、パス８０３を介して、周辺機器７００ｃと電気的に接続されている。同様に、ＰＣＩＥｘｐｒｅｓｓカード１５０ｄは、パス８０４を介して、周辺機器７００ｄと電気的に接続されている。
【００２９】
図２は、ＩＯコントローラ１１０のブロック構成の一例を示す。ＩＯコントローラ１１０は２個のＰＣＩ  Ｅｘｐｒｅｓｓポート１１１、１１２を持っており、それぞれＩＯコントローラ１１０の内部信号とＰＣＩ  Ｅｘｐｒｅｓｓのインターフェース変換を行うＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１３、１１４を接続している。ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１３、１１４はＰＣＩ  Ｅｘｐｒｅｓｓポート１１１、１１２より受信したパケットを解析して内部信号に変換し、ＩＯコントローラ内部に出力し、また、ＩＯコントローラ内部からの内部信号を対応するパケットに変換してＰＣＩ  Ｅｘｐｒｅｓｓポートに送信する処理を受け持つ。
【００３０】
そして、ＩＯコントローラ１１０にはＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４とＰＣＩ  Ｅｘｐｒｅｓｓポート１１２に対してＰＣＩ  Ｅｘｐｒｅｓｓのメモリアクセスを要求するメモリアクセス機構２００を持っており、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１３、１１４と内部バス１１５、１１６を介して接続されている。このメモリアクセス機構２００にはＰＣＩ  Ｅｘｐｒｅｓｓに対してメモリリクエストを発行し、メモリマップドＩ／Ｏ空間の読み書きを行うための５つの制御レジスタ２１０〜２５０を持っており、それぞれメモリマップドＩ／Ｏ空間にマッピングされている。また、これらの制御レジスタ２１０〜２５０はＰＣＩ  Ｅｘｐｒｅｓｓポート１１１とＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１３を通して、マイクロプロセッサ１２０上のソフトウェアにより対応するメモリマップドＩ／Ｏ空間にアクセスすることによってアクセスが可能になっており、ソフトウェアはメモリアクセス機構２００を使用してＰＣＩ  Ｅｘｐｒｅｓｓにメモリリクエストを発行することができる。なおまた、メモリアクセス機構２００の内部構造については通常のＰＣＩ  Ｅｘｐｒｅｓｓにおけるものと同じであるので説明は省略する。また、各レジスタの詳細はメモリマップドＩ／Ｏ空間に関する箇所で説明する。
【００３１】
図３は、情報処理装置１００におけるメモリマップドＩ／Ｏ空間のマッピングの一例を示す。メモリマップドＩ／Ｏ空間は図３のようにマッピングされており、マイクロプロセッサ１２０、ＩＯコントローラ１１０、及びＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄは対象となるコンポーネントのアドレスに対してメモリリクエストを発行することでデータの読み書きを行うことができる。
【００３２】
図４は、ＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間３７０のマッピングの一例を示す。ＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間は図４のようになっており、メモリアクセス機構２００のレジスタ２１０〜２５０がメモリマップドＩ／Ｏ空間にそれぞれマッピングされている。
【００３３】
図５は、リクエスト・コントロール・レジスタ２１０の一例を示す。リクエスト・コントロール・レジスタ２１０はメモリリクエストの発行を制御するレジスタで、メモリマップドＩ／Ｏ空間のメモリＲｅａｄを指示するＲｅａｄビット２１１やメモリＷｒｉｔｅを指示するＷｒｉｔｅビット２１２、Ｒｅａｄ／Ｗｒｉｔｅのサイズを指定するＳｉｚｅ２１３を持ち、各ビットが１のときに対応する指示がＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４に通知され、対応するリクエストがパケットとしてＰＣＩ  Ｅｘｐｒｅｓｓポート１１２より送信される。
【００３４】
図６は、リクエスト・アドレス・レジスタ２２０の一例を示す。リクエスト・アドレス・レジスタ２２０はメモリＲｅａｄ及びメモリＷｒｉｔｅを行うメモリマップドＩ／Ｏ空間アドレスを指定するレジスタで、リクエスト・コントロール・レジスタ２１０によりメモリリクエストを発行する前に設定する必要がある。
【００３５】
図７は、リプライ・ステータス・レジスタ２３０の一例を示す。リプライ・ステータス・レジスタ２３０はメモリＲｅａｄのときにコンプリータからのリプライ状態やタイムアウト等を確認するためのレジスタで、コンプリーションを受信したことを示すＥＮＤビット２３１、コンプリーションタイムアウトが発生したことを示すＴＯビット２３２、受信したコンプリーションが正常終了であることを示すＳＣビット２３３、未サポートリクエストを示すＵＲビット２３４、コンフィグレーションリトライ中を示すＣＲＳビット２３５、コンプリータアボートを示すＣＡビット２３６、受信したデータが不正だったことを示すＥＲＲビット２３７を持っている。なおまた、リプライ・ステータス・レジスタ２３０はＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４がＰＣＩ  Ｅｘｐｒｅｓｓポート１１２より受信したコンプリーションに従って設定している。ソフトウェアはリプライ・ステータス・レジスタ２３０を監視してリプライ状態を確認する必要がある。
【００３６】
図８は、データ・レジスタ２４０の一例を示す。データ・レジスタ２４０はメモリＷｒｉｔｅの場合は書き込むデータを設定し、メモリＲｅａｄの場合はリプライ・ステータス・レジスタ２３０がＥＮＤビット２３１とＳＣビット２３３が１のときに読み出された値が格納される。ソフトウェアはメモリＷｒｉｔｅの場合、リクエスト・コントロール・レジスタ２１０に値を書き込んでメモリＷｒｉｔｅリクエストを発行する前にデータ・レジスタ２４０に書き込む値を設定する必要がある。また、ソフトウェアはメモリＲｅａｄの場合、リプライ・ステータス・レジスタ２３０を読み出してＥＮＤビット２３１とＳＣビット２３３の１を確認した後、データ・レジスタ２４０を読み出す必要がある。なおまた、データ・レジスタ２４０はメモリＷｒｉｔｅの場合はリクエスト・コントロール・レジスタ２１０に値が設定された後でＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４によって読み出され、対応するパケットが生成され、また、メモリＲｅａｄ時は正常終了となるコンプリーションを受信したとき、パケットより読み出したデータがＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４によって設定される。
【００３７】
図９は、タイムアウト・レジスタ２５０の一例を示す。タイムアウト・レジスタ２５０はメモリＲｅａｄのときにコンプリータからのコンプリーションのタイムアウト時間をマイクロ秒で設定する。メモリアクセス機構２００はＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４にメモリＲｅａｄリクエストを発行してからコンプリーションを受信するまでのタイムアウト時間をタイムアウト・レジスタ２５０で渡しており、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４はＰＣＩ  Ｅｘｐｒｅｓｓポート１１２にメモリＲｅａｄリクエストを発行後、タイムアウト・レジスタ２５０で指定された時間以内にコンプリーションを受信できなかった場合はリプライ・ステータス・レジスタ２３０のＴＯビット２３２を１に設定する。
【００３８】
図１０は、情報処理装置１００の動作フローの一例を示す。情報処理装置１００において、マイクロプロセッサ１２０上で動作するソフトウェアが情報処理装置１００と周辺機器７００との間のデータ転送を制御するため、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄのメモリマップドＩ／Ｏ空間２２０〜２５０にアクセスする場合、メモリＷｒｉｔｅの場合は図１０のような動作フローになる。
【００３９】
ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄのメモリマップドＩ／Ｏ空間２２０〜２５０へのメモリＷｒｉｔｅの場合、ソフトウェアはＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間２７０にアクセスしてメモリアクセス機構２００の各レジスタ２１０〜２５０を設定し、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄにメモリＷｒｉｔｅリクエストを発行する。ソフトウェアはリクエスト・アドレス・レジスタ２２０に書き込み先メモリマップドＩ／Ｏ空間アドレスを設定し（Ｓ１０１）、データ・レジスタ２４０に書き込む値を設定する（Ｓ１０２）。そして、リクエスト・コントロール・レジスタ２１０にＷｒｉｔｅビット２１２を１に、Ｓｉｚｅ２１３に書き込むサイズを設定する値を書き込む（Ｓ１０３）。これにより、メモリアクセス機構２００はＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４に対して各レジスタ２１０〜２５０の値に基づいてメモリＷｒｉｔｅリクエストの発行要求を行い、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４は対応するパケットを生成してＰＣＩ  Ｅｘｐｒｅｓｓポート１１２に送信する。パケットはコンプリータとして、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄにルーティングされ、指定されたメモリマップドＩ／Ｏ空間へのデータ書き込みがコンプリータによって行われる。ＰＣＩ  ＥｘｐｒｅｓｓにおけるメモリＷｒｉｔｅはポステッドであるため、メモリＷｒｉｔｅ処理はこれで終了する。
【００４０】
図１１は、情報処理装置１００の動作フローの別の例を示す。情報処理装置１００において、マイクロプロセッサ１２０上で動作するソフトウェアが情報処理装置１００と周辺機器７００との間のデータ転送を制御するため、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄのメモリマップドＩ／Ｏ空間２２０〜２５０にアクセスする場合、メモリＲｅａｄの場合は図１１のような動作フローになる。
【００４１】
次に、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄのメモリマップドＩ／Ｏ空間２２０〜２５０よりデータを読み出す場合、ソフトウェアはＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間２７０にアクセスしてメモリアクセス機構２００の各レジスタ２１０〜２５０を設定し、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄにメモリＲｅａｄリクエストを発行する。ソフトウェアはリクエスト・アドレス・レジスタ２２０に読み出し先のメモリマップドＩ／Ｏ空間アドレスを設定し（Ｓ２０１）、タイムアウト・レジスタ２５０にコンプリーションタイムアウト時間をマイクロ秒で設定する（Ｓ２０２）。そして、リクエスト・コントロール・レジスタ２１０にＲｅａｄビット２１１を１に、Ｓｉｚｅ２１３に読み出すサイズを設定する値を書き込む（Ｓ２０３）。これにより、メモリアクセス機構２００はＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４に対して各レジスタ２１０〜２５０の値に基づいてメモリＲｅａｄリクエストの発行要求を行い、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４は対応するパケットを生成してＰＣＩ  Ｅｘｐｒｅｓｓポート１１２に送信する。そして、パケットはコンプリータにルーティングされ、コンプリータはパケットの内容に従ってメモリマップドＩ／Ｏ空間よりデータを読み出し、リクエスタに対するコンプリーションパケットを生成してリクエスタに送信する。
【００４２】
コンプリータより送信されたコンプリーションパケットはリクエスタであるＩＯコントローラ１１０にルーティングされ、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４がそれを受信して解析し、パケットのコンプリーションステータスに従ってリプライ・ステータス・レジスタ２３０のＳＣビット２３３、ＵＲビット２３４、ＣＲＳビット２３５、ＣＡビット２３６とＥＲＲビット２３７を１に設定し、ＥＮＤビット２３１を１に設定する。
【００４３】
ソフトウェアはリクエスト・コントロール・レジスタ２１０に値を書き込んでメモリＲｅａｄリクエストを発行した後、リプライ・ステータス・レジスタ２３０読み出してＥＮＤビット２３１かＴＯビット２３２が１になるまで待ち合わせる（Ｓ２０４、Ｓ２０５、Ｓ２０６）。そして、ＥＮＤビット２３１が１になったとき、ＳＣビット２３３を確認してコンプリーションが正常終了かどうかを確認し（Ｓ２０７）、ＳＣビット２３３が１ならばデータ・レジスタ２４０よりメモリマップドＩ／Ｏ空間より読み出したデータを読み出して処理を正常終了する（Ｓ２０８）。ＳＣビット２３３が０の場合はコンプリータがアボートしたか、未サポートリクエストであったか、コンフィグレーション中であったか、又はコンプリーションパケットのデータが壊れていた場合であるので、異常終了として処理を終了する。このとき、ソフトウェアはコンプリータの回復処理を行う。回復処理の内容については本発明の範囲外なので説明は省略する。
【００４４】
次に、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄの障害によりメモリＲｅａｄリクエストに対するコンプリーションが返されない場合を考えてみる。メモリＲｅａｄリクエストの発行までは上記と動作は同じである。ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４はメモリＲｅａｄリクエストを発行した後、コンプリータからのコンプリーションをタイムアウト・レジスタ２５０で指定された時間だけ待ち合わせているが、コンプリーションがコンプリータから返されないためタイムアウトが発生し、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部１１４はメモリアクセス機構２００のリプライ・ステータス・レジスタ２３０のＴＯビット２３２を設定する。ソフトウェアはリプライ・ステータス・レジスタ２３０を読み出してＥＮＤビット２３１とＴＯビット２３２が１になるのを待ち合わせている（Ｓ２０５、Ｓ２０６）。この場合、ＴＯビット２３２が１になるため、ソフトウェアはコンプリーションのタイムアウトを判断し、異常終了として処理を終了する。
【００４５】
このように、図１の情報処理装置１００において、マイクロプロセッサ１２０上で動作するソフトウェアがＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄのメモリマップドＩ／Ｏ空間２２０〜２５０にアクセスするとき、ＩＯコントローラ１１０のメモリアクセス機構２００を使用することによって、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄの障害によりコンプリーションがタイムアウトしたり、コンプリータアボート等のマイクロプロセッサが予期しないものだったとしても、ＩＯコントローラ１１０のメモリアクセス機構２００がそれを受信するため、マイクロプロセッサ１２０に致命的な障害として伝搬することはなく、ソフトウェアによって回復処理が可能となり、ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａ〜ｄの障害によって情報処理装置１００全体に障害が波及することを防ぐことができる。
【００４６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は、上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【００４７】
１００  情報処理装置
１１０  ＩＯコントローラ
１１１  ＰＣＩ  Ｅｘｐｒｅｓｓポート
１１２  ＰＣＩ  Ｅｘｐｒｅｓｓポート
１１３  ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部
１１４  ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース部
１１５  内部バス
１１６  内部バス
１２０  マイクロプロセッサ
１２１  ルートポート
１２２  ルートポート
１３０  メモリ
１４０  ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ
１４１  アップストリームポート
１４２  ダウンストリームポート
１４３  ダウンストリームポート
１４４  ダウンストリームポート
１４５  ダウンストリームポート
１４６  ダウンストリームポート
１５０  ＰＣＩ  Ｅｘｐｒｅｓｓカード
１５１  ポート
１６１  バス
１７１  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７２  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７３  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７４  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７５  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７６  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
１７７  ＰＣＩ  Ｅｘｐｒｅｓｓリンク
２００  メモリアクセス機構
２１０  リクエスト・コントロール・レジスタ
２１１  Ｒｅａｄビット
２１２  Ｗｒｉｔｅビット
２１３  Ｓｉｚｅビット
２２０  リクエスト・アドレス・レジスタ
２３０  リプライ・ステータス・レジスタ
２３１  ＥＮＤビット
２３２  ＴＯビット
２３３  ＳＣビット
２３４  ＵＲビット
２３５  ＣＲＳビット
２３６  ＣＡビット
２３７  ＥＲＲビット
２４０  データ・レジスタ
２５０  タイムアウト・レジスタ
３１０  メモリ１３０のメモリマップドＩ／Ｏ空間
３２０  ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｄのメモリマップドＩ／Ｏ空間
３３０  ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｃのメモリマップドＩ／Ｏ空間
３４０  ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ｂのメモリマップドＩ／Ｏ空間
３５０  ＰＣＩ  Ｅｘｐｒｅｓｓカード１５０ａのメモリマップドＩ／Ｏ空間
３６０  ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ１４０のメモリマップドＩ／Ｏ空間
３７０  ＩＯコントローラ１１０のメモリマップドＩ／Ｏ空間
３７１  リクエスト・コントロール・レジスタ２１０のメモリマップドＩ／Ｏ空間
３７２  リクエスト・アドレス・レジスタ２２０のメモリマップドＩ／Ｏ空間
３７３  リプライ・ステータス・レジスタ２３０のメモリマップドＩ／Ｏ空間
３７４  データ・レジスタ２４０のメモリマップドＩ／Ｏ空間
３７５  タイムアウト・レジスタ２５０のメモリマップドＩ／Ｏ空間
７００  周辺機器
８０１  パス
８０２  パス
８０３  パス
８０４  パス
【図１】
2012163995.tif 000003
【図２】
2012163995.tif 000004
【図３】
2012163995.tif 000005
【図４】
2012163995.tif 000006
【図５】
2012163995.tif 000007
【図６】
2012163995.tif 000008
【図７】
2012163995.tif 000009
【図８】
2012163995.tif 000010
【図９】
2012163995.tif 000011
【図１０】
2012163995.tif 000012
【図１１】
2012163995.tif 000013
【図１２】
2012163995.tif 000014