PCIExpressカードによって機能を拡張する情報処理装置であって、マイクロプロセッサと、前記PCIExpressカード、及び前記マイクロプロセッサとそれぞれPCIExpressリンクによって接続されるPCIExpressスイッチと、前記マイクロプロセッサ、及び前記PCIExpressスイッチとそれぞれPCIExpressリンクによって接続されて、前記PCIExpressカードのメモリマップドI/O空間にアクセスするIOコントローラとを備え、前記IOコントローラは、前記マイクロプロセッサのルートポートに接続される第1のPCIExpressポートと、前記第1のPCIExpressポートに接続されて、PCIExpressパケットとIOコントローラの内部信号を変換する第1のPCIExpressインターフェース部と、前記PCIExpressスイッチのダウンストリームポートに接続される第2のPCIExpressポートと、前記第2のPCIExpressポートに接続されて、PCIExpressパケットとIOコントローラの内部信号を変換する第2のPCIExpressインターフェース部と、前記第1のPCIExpressインターフェース部、及び前記第2のPCIExpressインターフェース部とそれぞれ内部バスによって接続されるメモリアクセス機構とを有する情報処理装置。前記メモリアクセス機構は、前記第2のPCIeインターフェース部に対してメモリマップドI/O空間のメモリリクエストを発行する請求項1に記載の情報処理装置。前記メモリアクセス機構は、発行したメモリリクエストのコンプリーション状態を管理するためのレジスタを有する請求項2に記載の情報処理装置。前記レジスタは、メモリマップドI/O空間にマッピングされている請求項3に記載の情報処理装置。前記マイクロプロセッサにおいて動作するソフトウェアは、前記第1のPCIExpressポート、及び前記第1のPCIExpressインターフェース部を介して、前記レジスタにアクセスする請求項4に記載の情報処理装置。前記マイクロプロセッサにおいて動作するソフトウェアは、前記IOコントローラのメモリアクセス機構のレジスタにアクセスすることによって、前記PCIExpressカードのメモリマップドI/O空間にメモリリクエストを発行する請求項5に記載の情報処理装置。前記マイクロプロセッサにおいて動作するソフトウェアは、メモリReadリクエストの場合、コンプリーション状態を確認して正常終了しているときに、メモリマップドI/O空間より読み出したデータをレジスタより読み出す請求項6に記載の情報処理装置。特許文献1に記載の技術は、PCI規格に関する技術である。しかしながら、PCI規格には、リクエストリプライに対するタイムアウトの概念がない。したがって、特許文献1に記載の技術によっては、PCIデバイスより応答がない場合に対処することができない。上記課題を解決するために、本発明の第1の形態によると、PCIExpressカードによって機能を拡張する情報処理装置であって、マイクロプロセッサと、PCIExpressカード、及びマイクロプロセッサとそれぞれPCIExpressリンクによって接続されるPCIExpressスイッチと、マイクロプロセッサ、及びPCIExpressスイッチとそれぞれPCIExpressリンクによって接続されて、PCIExpressカードのメモリマップドI/O空間にアクセスするIOコントローラとを備え、IOコントローラは、マイクロプロセッサのルートポートに接続される第1のPCIExpressポートと、第1のPCIExpressポートに接続されて、PCIExpressパケットとIOコントローラの内部信号を変換する第1のPCIExpressインターフェース部と、PCIExpressスイッチのダウンストリームポートに接続される第2のPCIExpressポートと、第2のPCIExpressポートに接続されて、PCIExpressパケットとIOコントローラの内部信号を変換する第2のPCIExpressインターフェース部と、第1のPCIExpressインターフェース部、及び第2のPCIExpressインターフェース部とそれぞれ内部バスによって接続されるメモリアクセス機構とを有する。なおまた、上記のように発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となり得る。以上の説明から明らかなように、この発明においては、マイクロプロセッサにおいて動作するソフトウェアがPCIExpressカードのメモリマップドI/O空間にアクセスするにあたり、IOコントローラのメモリアクセス機構を使用する。このようにして、この発明によっては、PCIExpressカードに障害が発生して、コンプリーションがタイムアウトしたり、コンプリータアボート等のマイクロプロセッサが予期しないものだったりしたとしても、IOコントローラのメモリアクセス機構がそれを受信するので、マイクロプロセッサに致命的な障害として伝搬することがない。そのため、この発明によっては、ソフトウェアによって回復処理が可能となり、PCIExpressカードの障害によって情報処理装置全体に障害が波及することを防ぐことができる。以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は、特許請求の範囲にかかる発明を限定するものではなく、また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。図1は、一実施形態に係る情報処理装置100利用環境の一例を示す。情報処理装置100は、PCIExpressカードによって機能を拡張する装置である。情報処理装置100は、IOinput-outputコントローラ110、マイクロプロセッサ120、メモリ130、PCIExpressスイッチ140、及び複数のPCIExpressカード150a~d以下、PCIExpressカード150と総称する。を備える。マイクロプロセッサ120は、PCIExpressのルートコンプレックスを実装している。IOコントローラ110は、2つのPCIExpressポート111、112を有している。マイクロプロセッサ120は、2つのルートポート121、122を有している。PCIExpressスイッチ140は、1つのアップストリームポート141と、5つのダウンストリームポート142~146とを有している。PCIExpressカード150aは、ポート151aを有している。なおまた、PCIExpressカード150a以外のPCIExpressカード150b~dも、PCIExpressカード150aが有する構成要素と同じ構成要素を有する。以後の説明では、PCIExpressカード150が有する構成要素がいずれのPCIExpressカード150の構成要素であるかを区別する場合には、各構成要素を有するPCIExpressカード150と同じ添え字a~dを各構成要素の末尾に付して区別する。例えば、ポート151a、ポート151b、及びポート151cは、それぞれPCIExpressカード150a、PCIExpressカード150b、及びPCIExpressカード150cの構成要素であることを示す。また、以後の説明において、添え字が付されていない構成要素の機能及び動作は、同じ符号が付されたいずれの構成要素の機能及び動作を示す。例えば、ポート151で説明された機能及び動作は、ポート151a~dの機能及び動作を示す。そして、IOコントローラ110のPCIExpressポート111は、PCIExpressリンク171を介して、マイクロプロセッサ120のルートポート122と電気的に接続されている。また、IOコントローラ110のPCIExpressポート112は、PCIExpressリンク173を介して、PCIExpressスイッチ140のダウンストリームポート142と電気的に接続されている。一方、マイクロプロセッサ120は、バス161を介して、メモリ130と電気的に接続されている。また、マイクロプロセッサ120のルートポート121は、PCIExpressリンク172を介して、PCIExpressスイッチ140のアップストリームポート141と電気的に接続されている。一方、PCIExpressスイッチ140のダウンストリームポート143は、PCIExpressリンク174を介して、PCIExpressカード150aのポート151aと電気的に接続されている。同様に、PCIExpressスイッチ140のダウンストリームポート144は、PCIExpressリンク175を介して、PCIExpressカード150bのポート151bと電気的に接続されている。同様に、PCIExpressスイッチ140のダウンストリームポート145は、PCIExpressリンク176を介して、PCIExpressカード150cのポート151cと電気的に接続されている。同様に、PCIExpressスイッチ140のダウンストリームポート146は、PCIExpressリンク177を介して、PCIExpressカード150dのポート151dと電気的に接続されている。一方、PCIExpressカード150aは、パス801を介して、周辺機器700aと電気的に接続されている。同様に、PCIExpressカード150bは、パス802を介して、周辺機器700bと電気的に接続されている。同様に、PCIExpressカード150cは、パス803を介して、周辺機器700cと電気的に接続されている。同様に、PCIExpressカード150dは、パス804を介して、周辺機器700dと電気的に接続されている。図2は、IOコントローラ110のブロック構成の一例を示す。IOコントローラ110は2個のPCIExpressポート111、112を持っており、それぞれIOコントローラ110の内部信号とPCIExpressのインターフェース変換を行うPCIExpressインターフェース部113、114を接続している。PCIExpressインターフェース部113、114はPCIExpressポート111、112より受信したパケットを解析して内部信号に変換し、IOコントローラ内部に出力し、また、IOコントローラ内部からの内部信号を対応するパケットに変換してPCIExpressポートに送信する処理を受け持つ。そして、IOコントローラ110にはPCIExpressインターフェース部114とPCIExpressポート112に対してPCIExpressのメモリアクセスを要求するメモリアクセス機構200を持っており、PCIExpressインターフェース部113、114と内部バス115、116を介して接続されている。このメモリアクセス機構200にはPCIExpressに対してメモリリクエストを発行し、メモリマップドI/O空間の読み書きを行うための5つの制御レジスタ210~250を持っており、それぞれメモリマップドI/O空間にマッピングされている。また、これらの制御レジスタ210~250はPCIExpressポート111とPCIExpressインターフェース部113を通して、マイクロプロセッサ120上のソフトウェアにより対応するメモリマップドI/O空間にアクセスすることによってアクセスが可能になっており、ソフトウェアはメモリアクセス機構200を使用してPCIExpressにメモリリクエストを発行することができる。なおまた、メモリアクセス機構200の内部構造については通常のPCIExpressにおけるものと同じであるので説明は省略する。また、各レジスタの詳細はメモリマップドI/O空間に関する箇所で説明する。図3は、情報処理装置100におけるメモリマップドI/O空間のマッピングの一例を示す。メモリマップドI/O空間は図3のようにマッピングされており、マイクロプロセッサ120、IOコントローラ110、及びPCIExpressカード150a~dは対象となるコンポーネントのアドレスに対してメモリリクエストを発行することでデータの読み書きを行うことができる。図4は、IOコントローラ110のメモリマップドI/O空間370のマッピングの一例を示す。IOコントローラ110のメモリマップドI/O空間は図4のようになっており、メモリアクセス機構200のレジスタ210~250がメモリマップドI/O空間にそれぞれマッピングされている。図5は、リクエストコントロールレジスタ210の一例を示す。リクエストコントロールレジスタ210はメモリリクエストの発行を制御するレジスタで、メモリマップドI/O空間のメモリReadを指示するReadビット211やメモリWriteを指示するWriteビット212、Read/Writeのサイズを指定するSize213を持ち、各ビットが1のときに対応する指示がPCIExpressインターフェース部114に通知され、対応するリクエストがパケットとしてPCIExpressポート112より送信される。図6は、リクエストアドレスレジスタ220の一例を示す。リクエストアドレスレジスタ220はメモリRead及びメモリWriteを行うメモリマップドI/O空間アドレスを指定するレジスタで、リクエストコントロールレジスタ210によりメモリリクエストを発行する前に設定する必要がある。図7は、リプライステータスレジスタ230の一例を示す。リプライステータスレジスタ230はメモリReadのときにコンプリータからのリプライ状態やタイムアウト等を確認するためのレジスタで、コンプリーションを受信したことを示すENDビット231、コンプリーションタイムアウトが発生したことを示すTOビット232、受信したコンプリーションが正常終了であることを示すSCビット233、未サポートリクエストを示すURビット234、コンフィグレーションリトライ中を示すCRSビット235、コンプリータアボートを示すCAビット236、受信したデータが不正だったことを示すERRビット237を持っている。なおまた、リプライステータスレジスタ230はPCIExpressインターフェース部114がPCIExpressポート112より受信したコンプリーションに従って設定している。ソフトウェアはリプライステータスレジスタ230を監視してリプライ状態を確認する必要がある。図8は、データレジスタ240の一例を示す。データレジスタ240はメモリWriteの場合は書き込むデータを設定し、メモリReadの場合はリプライステータスレジスタ230がENDビット231とSCビット233が1のときに読み出された値が格納される。ソフトウェアはメモリWriteの場合、リクエストコントロールレジスタ210に値を書き込んでメモリWriteリクエストを発行する前にデータレジスタ240に書き込む値を設定する必要がある。また、ソフトウェアはメモリReadの場合、リプライステータスレジスタ230を読み出してENDビット231とSCビット233の1を確認した後、データレジスタ240を読み出す必要がある。なおまた、データレジスタ240はメモリWriteの場合はリクエストコントロールレジスタ210に値が設定された後でPCIExpressインターフェース部114によって読み出され、対応するパケットが生成され、また、メモリRead時は正常終了となるコンプリーションを受信したとき、パケットより読み出したデータがPCIExpressインターフェース部114によって設定される。図9は、タイムアウトレジスタ250の一例を示す。タイムアウトレジスタ250はメモリReadのときにコンプリータからのコンプリーションのタイムアウト時間をマイクロ秒で設定する。メモリアクセス機構200はPCIExpressインターフェース部114にメモリReadリクエストを発行してからコンプリーションを受信するまでのタイムアウト時間をタイムアウトレジスタ250で渡しており、PCIExpressインターフェース部114はPCIExpressポート112にメモリReadリクエストを発行後、タイムアウトレジスタ250で指定された時間以内にコンプリーションを受信できなかった場合はリプライステータスレジスタ230のTOビット232を1に設定する。図10は、情報処理装置100の動作フローの一例を示す。情報処理装置100において、マイクロプロセッサ120上で動作するソフトウェアが情報処理装置100と周辺機器700との間のデータ転送を制御するため、PCIExpressカード150a~dのメモリマップドI/O空間220~250にアクセスする場合、メモリWriteの場合は図10のような動作フローになる。PCIExpressカード150a~dのメモリマップドI/O空間220~250へのメモリWriteの場合、ソフトウェアはIOコントローラ110のメモリマップドI/O空間270にアクセスしてメモリアクセス機構200の各レジスタ210~250を設定し、PCIExpressカード150a~dにメモリWriteリクエストを発行する。ソフトウェアはリクエストアドレスレジスタ220に書き込み先メモリマップドI/O空間アドレスを設定しS101、データレジスタ240に書き込む値を設定するS102。そして、リクエストコントロールレジスタ210にWriteビット212を1に、Size213に書き込むサイズを設定する値を書き込むS103。これにより、メモリアクセス機構200はPCIExpressインターフェース部114に対して各レジスタ210~250の値に基づいてメモリWriteリクエストの発行要求を行い、PCIExpressインターフェース部114は対応するパケットを生成してPCIExpressポート112に送信する。パケットはコンプリータとして、PCIExpressカード150a~dにルーティングされ、指定されたメモリマップドI/O空間へのデータ書き込みがコンプリータによって行われる。PCIExpressにおけるメモリWriteはポステッドであるため、メモリWrite処理はこれで終了する。図11は、情報処理装置100の動作フローの別の例を示す。情報処理装置100において、マイクロプロセッサ120上で動作するソフトウェアが情報処理装置100と周辺機器700との間のデータ転送を制御するため、PCIExpressカード150a~dのメモリマップドI/O空間220~250にアクセスする場合、メモリReadの場合は図11のような動作フローになる。次に、PCIExpressカード150a~dのメモリマップドI/O空間220~250よりデータを読み出す場合、ソフトウェアはIOコントローラ110のメモリマップドI/O空間270にアクセスしてメモリアクセス機構200の各レジスタ210~250を設定し、PCIExpressカード150a~dにメモリReadリクエストを発行する。ソフトウェアはリクエストアドレスレジスタ220に読み出し先のメモリマップドI/O空間アドレスを設定しS201、タイムアウトレジスタ250にコンプリーションタイムアウト時間をマイクロ秒で設定するS202。そして、リクエストコントロールレジスタ210にReadビット211を1に、Size213に読み出すサイズを設定する値を書き込むS203。これにより、メモリアクセス機構200はPCIExpressインターフェース部114に対して各レジスタ210~250の値に基づいてメモリReadリクエストの発行要求を行い、PCIExpressインターフェース部114は対応するパケットを生成してPCIExpressポート112に送信する。そして、パケットはコンプリータにルーティングされ、コンプリータはパケットの内容に従ってメモリマップドI/O空間よりデータを読み出し、リクエスタに対するコンプリーションパケットを生成してリクエスタに送信する。コンプリータより送信されたコンプリーションパケットはリクエスタであるIOコントローラ110にルーティングされ、PCIExpressインターフェース部114がそれを受信して解析し、パケットのコンプリーションステータスに従ってリプライステータスレジスタ230のSCビット233、URビット234、CRSビット235、CAビット236とERRビット237を1に設定し、ENDビット231を1に設定する。ソフトウェアはリクエストコントロールレジスタ210に値を書き込んでメモリReadリクエストを発行した後、リプライステータスレジスタ230読み出してENDビット231かTOビット232が1になるまで待ち合わせるS204、S205、S206。そして、ENDビット231が1になったとき、SCビット233を確認してコンプリーションが正常終了かどうかを確認しS207、SCビット233が1ならばデータレジスタ240よりメモリマップドI/O空間より読み出したデータを読み出して処理を正常終了するS208。SCビット233が0の場合はコンプリータがアボートしたか、未サポートリクエストであったか、コンフィグレーション中であったか、又はコンプリーションパケットのデータが壊れていた場合であるので、異常終了として処理を終了する。このとき、ソフトウェアはコンプリータの回復処理を行う。回復処理の内容については本発明の範囲外なので説明は省略する。次に、PCIExpressカード150a~dの障害によりメモリReadリクエストに対するコンプリーションが返されない場合を考えてみる。メモリReadリクエストの発行までは上記と動作は同じである。PCIExpressインターフェース部114はメモリReadリクエストを発行した後、コンプリータからのコンプリーションをタイムアウトレジスタ250で指定された時間だけ待ち合わせているが、コンプリーションがコンプリータから返されないためタイムアウトが発生し、PCIExpressインターフェース部114はメモリアクセス機構200のリプライステータスレジスタ230のTOビット232を設定する。ソフトウェアはリプライステータスレジスタ230を読み出してENDビット231とTOビット232が1になるのを待ち合わせているS205、S206。この場合、TOビット232が1になるため、ソフトウェアはコンプリーションのタイムアウトを判断し、異常終了として処理を終了する。このように、図1の情報処理装置100において、マイクロプロセッサ120上で動作するソフトウェアがPCIExpressカード150a~dのメモリマップドI/O空間220~250にアクセスするとき、IOコントローラ110のメモリアクセス機構200を使用することによって、PCIExpressカード150a~dの障害によりコンプリーションがタイムアウトしたり、コンプリータアボート等のマイクロプロセッサが予期しないものだったとしても、IOコントローラ110のメモリアクセス機構200がそれを受信するため、マイクロプロセッサ120に致命的な障害として伝搬することはなく、ソフトウェアによって回復処理が可能となり、PCIExpressカード150a~dの障害によって情報処理装置100全体に障害が波及することを防ぐことができる。以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は、上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。