(57)【特許請求の範囲】
【請求項１】
複数のプロセッサノードと、
それぞれがコアＩ／Ｏデバイスを有する複数のＩ／Ｏノードと、
前記複数のプロセッサノードと前記複数のＩ／Ｏノードを接続するノード制御装置とを具備する情報処理装置であって、
前記各プロセッサノードは、
前記各プロセッサノードにおけるメモリ空間に、使用中コアＩ／Ｏデバイスに対応する使用中コアＩ／Ｏ用空間と、予備コアＩ／Ｏデバイスに対応する予備コアＩ／Ｏ用空間とをマップするマップ部と、
使用コアＩ／Ｏデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、
前記新規トランザクションの発行が抑止された後に、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアＩ／Ｏデバイスに含まれるコピー先レジスタにコピーする、コピー部と、
コピーが完了した後に、前記使用中コアＩ／Ｏデバイスに対するトランザクションが前記予備コアＩ／Ｏデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、
ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備え、
前記ノード制御装置は、予備コアＩ／Ｏアクセス制御回路を備え、
前記コピー部は、前記使用中コアＩ／Ｏ用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアＩ／Ｏ用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行し、
前記予備コアＩ／Ｏアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアＩ／Ｏデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアＩ／Ｏデバイスに通知する
情報処理装置。
【請求項２】
請求項１に記載された情報処理装置であって、
前記ライトトランザクションは、パケットとして発行され、
前記パケットは、
アクセス先アドレスを示すアドレスフィールドを有するヘッダフリットと、
データを示すデータフリットとを含み、
前記予備コアＩ／Ｏアクセス制御回路は、
前記ライトトランザクションを取得した場合に、前記ヘッダフリットの前記アドレスフィールドを参照することにより、前記ライトトランザクションが前記予備コアＩ／Ｏデバイス宛のものであるか否かを判定し、判定結果を示す検出結果信号と、変換後のアドレスフィールドの値を示すアドレス信号とを生成する、予備コアＩ／Ｏアクセス検出回路と、
前記アドレス信号を取得し、ヘッダフリットにおける前記アドレスフィールドの値を前記アドレス信号によって示される値に差し換え、変換後のヘッダフリットを生成する、予備コアＩ／Ｏアクセスフリット生成回路と、
前記検出結果信号として前記ライトトランザクションが前記予備コアＩ／Ｏデバイス宛である旨を示す信号を取得した場合に、前記変換後のヘッダフリットを選択し、前記予備コアＩ／Ｏデバイスに向けて送出する、セレクタとを備える
情報処理装置。
【請求項３】
請求項１又は２に記載された情報処理装置であって、
使用中コアＩ／Ｏ用空間及び前記予備コアＩ／Ｏ用空間は、それぞれ、ＩＯ空間、及びＭＭＩＯ（Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）用空間を有している
情報処理装置。
【請求項４】
請求項３に記載された情報処理装置であって、
前記予備コアＩ／Ｏアクセス制御回路は、前記コピー元レジスタが前記Ｉ／Ｏ空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアＩ／Ｏ用空間におけるＩ／Ｏ空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項５】
請求項３または４に記載された情報処理装置であって、
前記予備コアＩ／Ｏアクセス制御回路は、前記コピー元レジスタが前記ＭＭＩ／Ｏ用空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアＩ／Ｏ用空間における前記ＭＭＩ／Ｏ空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項６】
請求項３乃至５のいずれかに記載された情報処理装置であって、
前記マップ部は、前記メモリ空間に、更にコンフィグレーション空間をマップし、
前記コンフィグレーション空間において、前記複数のコアＩ／Ｏデバイスには、重複しないように、最大バス番号及び最小バス番号が割り当てられており、
前記予備コアＩ／Ｏアクセス制御回路は、前記コピー元レジスタが前記コンフィギュレーション空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスに含まれるバス番号部分の値を、前記予備コアＩ／Ｏデバイスに割り当てられた前記最小バス番号の値を減じた値に差し換え、差し換え後のアクセス先アドレスを前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項７】
複数のプロセッサノードと、それぞれがコアＩ／Ｏデバイスを有する複数のＩ／Ｏノードと、前記複数のプロセッサノードと前記複数のＩ／Ｏノードを接続するノード制御装置とを具備する情報処理装置の動作方法であって、
前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアＩ／Ｏデバイスに対応する使用中コアＩ／Ｏ用空間と、予備コアＩ／Ｏデバイスに対応する予備コアＩ／Ｏ用空間とをマップするステップと、
前記各プロセッサノードが、使用コアＩ／Ｏデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、
前記新規トランザクションの発行が抑止された後に、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアＩ／Ｏデバイスに含まれるコピー先レジスタにコピーするステップと、
前記各プロセッサノードが、コピーが完了した後に、前記使用中コアＩ／Ｏデバイスに対するトランザクションが前記予備コアＩ／Ｏデバイスに転送されるようにルーティング設定を変更するステップと、
前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップと、
を具備し、
前記コピーするステップは、
前記プロセッサノードが、前記使用中コアＩ／Ｏ用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアＩ／Ｏ用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、
前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアＩ／Ｏデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアＩ／Ｏデバイスに通知するステップとを含む
情報処理装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の動作方法に関する。
【背景技術】
【０００２】
複数のプロセッサノード及び複数のＩ／Ｏノードを有する情報処理装置では、プロセッサノードとＩ／Ｏノードとを任意に組み合わせることにより、複数のパーティションが構成されることがある。各パーティションでは、独立にＯＳが動作する。各Ｉ／Ｏノードには、コアＩ／Ｏデバイスが設けられる。各パーティションにＩ／Ｏノードが複数含まれる場合には、いずれかのＩ／Ｏノードに含まれるコアＩ／Ｏデバイスのみが使用される。ここで、パーティションにおいて使用されているコアＩ／Ｏデバイスを切り替えたいという要求がある。
【０００３】
関連技術として、特許文献１（特開２００８−２２５５３４号公報）に記載された動的縮退装置が挙げられる。この動的縮退装置は、マスターデバイスとスレーブデバイスとに二重化されたＩ／Ｏデバイスの動的縮退装置であり、トランザクションを受信し、ルーティングし、送出するトランザクションルーティングコントローラと、Ｉ／Ｏデバイスの二重化が有効であることを示す有効情報と、当該有効情報に関連付けられた二つの識別情報であって、前記マスターデバイスへの経路を示すマスターデバイス識別情報と、スレーブデバイスへの経路を示すスレーブデバイス識別情報とを有するルーティングテーブルと、トランザクションルーティングコントローラとルーティングテーブルとを制御するサービスプロセッサとを具備する。
【０００４】
他の関連技術として、特許文献２（特許第４１６５４２３号）に記載されたシステムボードが挙げられる。このシステムボードは、コアＩ／Ｏカードとの間にＰＣＩバスを複数有する。各ＰＣＩバスには、１つの同一のコアＩ／Ｏカードが実装される。更に、各コアＩ／Ｏカードには、同一の入出力機器が接続されている。各コアＩ／Ｏカードは、入出力機器に関する情報及び入出力機器を制御するプログラムを記憶する記憶手段と、入出力機器を制御する入出力機器制御手段とを有する。記憶手段は、入出力機器制御手段と接続され、入出力機器制御手段は、ＰＣＩバスに接続されている。これにより、コアＩ／Ｏカードを二重化することが可能となり、障害等により使用していたコアＩ／Ｏカードが切り離された場合でも、他方のコアＩ／Ｏカードを利用してリブートすることが可能になる。
【０００５】
更に他の関連技術として、特許文献３（特開２００６−７２４９２号公報）に記載されたシステム制御装置が挙げられる。このシステム制御装置は、コンピュータシステムに含まれる複数のデバイスを制御するシステム制御装置である。システム制御装置は、運用中のコアデバイスブリッジの配下に接続されたデバイスに記憶されるＢＩＯＳおよびシステムの構成情報を含んだシステム情報を取得するシステム情報取得手段と、取得したシステム情報を保持するシステム情報保持手段と、運用デバイスブリッジが故障した場合に、代用バスブリッジの配下に接続されたデバイスに、システム情報を記憶させ、運用デバイスブリッジを代用デバイスブリッジに切り替える切り替え処理手段とを備える。
【０００６】
更に他の関連技術として、特許文献４（特開２００９−１９３４６９号公報）に記載された動的切替え装置が挙げられる。この動的切替え装置は、Ｉ／Ｏデバイスへのルーティングが有効であることを示す有効ビットに関する情報、及びＩ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルと、トランザクションを受け取り、ルーティングテーブルを参照し、有効ビットが偽である場合、トランザクションの送出を抑止し、有効ビットが真である場合、ルーティング経路情報に従い、Ｉ／Ｏデバイスに対してトランザクションを送出し、Ｉ／Ｏデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するトランザクションルーティングコントローラとを具備する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２２５５３４号公報
【特許文献２】特許第４１６５４２３号
【特許文献３】特開２００６−７２４９２号公報
【特許文献４】特開２００９−１９３４６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
各パーティション内において、使用中のコアＩ／Ｏデバイスを切り替える場合には、当該パーティションの再起動が必要になる。そのため、情報処理装置の可用性が損なわれてしまう。
【０００９】
特許文献１に記載される動的縮退装置では、運用中に一方のＩ／Ｏデバイスを縮退することができる。しかしながら、予備のコアＩ／Ｏデバイスを常に稼動させておかなければならない。
【００１０】
また、特許文献２及び特許文献３には、コアＩ／Ｏを二重化することにより、障害発生時に使用するコアＩ／Ｏを切り替える点が記載されている。しかし、切り替えにはシステムの再立ち上げが必要であり、システムの運用中において使用するコアＩ／Ｏを切り替える点については、記載がない。
【００１１】
また、特許文献４には、Ｉ／Ｏデバイスの切替が発生した場合の処理については記載されているが、システムの運用中においてどのように使用するコアＩ／Ｏを切り替えるかについては、記載されていない。
【００１２】
従って、本発明の課題は、パーティションを再起動することなく、使用するコアＩ／Ｏデバイスを切り替えるができる、情報処理装置及び情報装置の動作方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明に係る情報処理装置は、複数のプロセッサノードと、それぞれがコアＩ／Ｏデバイスを有する複数のＩ／Ｏノードと、前記複数のプロセッサノードと前記複数のＩ／Ｏノードを接続するノード制御装置とを具備する情報処理装置である。前記各プロセッサノードは、前記各プロセッサノードにおけるメモリ空間に、使用中コアＩ／Ｏデバイスに対応する使用中コアＩ／Ｏ用空間と、予備コアＩ／Ｏデバイスに対応する予備コアＩ／Ｏ用空間とをマップするマップ部と、使用コアＩ／Ｏ変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、前記新規トランザクションの発行が抑止された後に、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアＩ／Ｏデバイスに含まれるコピー先レジスタにコピーする、コピー部と、コピーが完了した後に、前記使用中コアＩ／Ｏデバイスに対するトランザクションが前記予備コアＩ／Ｏデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備える。前記ノード制御装置は、予備コアＩ／Ｏアクセス制御回路を備える。前記コピー部は、前記使用中コアＩ／Ｏ用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアＩ／Ｏ用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行する。前記予備コアＩ／Ｏアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアＩ／Ｏデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアＩ／Ｏデバイスに通知する。
【００１４】
本発明に係る情報処理装置の動作方法は、複数のプロセッサノードと、それぞれがコアＩ／Ｏデバイスを有する複数のＩ／Ｏノードと、前記複数のプロセッサノードと前記複数のＩ／Ｏノードを接続するノード制御装置とを具備する情報処理装置の動作方法である。この動作方法は、前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアＩ／Ｏデバイスに対応する使用中コアＩ／Ｏ用空間と、予備コアＩ／Ｏデバイスに対応する予備コアＩ／Ｏ用空間とをマップするステップと、前記各プロセッサノードが、使用コアＩ／Ｏ変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、前記新規トランザクションの発行が抑止された後に、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアＩ／Ｏデバイスに含まれるコピー先レジスタにコピーするステップと、前記各プロセッサノードが、コピーが完了した後に、前記使用中コアＩ／Ｏデバイスに対するトランザクションが前記予備コアＩ／Ｏデバイスに転送されるようにルーティング設定を変更するステップと、前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップとを具備する。前記コピーするステップは、前記プロセッサノードが、前記使用中コアＩ／Ｏ用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアＩ／Ｏデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアＩ／Ｏ用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアＩ／Ｏデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアＩ／Ｏデバイスに通知するステップとを含む。
【発明の効果】
【００１５】
本発明によれば、パーティションを再起動することなく、使用するＩ／Ｏノードを変更することができる、情報処理装置及び情報装置の動作方法が提供される。
【図面の簡単な説明】
【００１６】
【図１】情報処理装置１を示す概略図である。
【図２】パーティションを示す概略図である。
【図３】各Ｉ／Ｏノードの構成の一例を示す図である。
【図４】コアＩ／Ｏデバイスの構成の一例を示す図である。
【図５】各プロセッサノードの機能構成を示す概略図である。
【図６】各プロセッサノードから見たときのメモリ空間を示す概念図である。
【図７】コンフィグレーション空間を示す概念図である。
【図８】フリットの転送フォーマットを示す概念図である。
【図９】コンフィグレーション空間にアクセスする場合のアドレスフィールドのフォーマットの一例を示す図である。
【図１０】ノード制御装置の構成の一例を示す図である。
【図１１】ポート入力部の詳細を示す図である。
【図１２】情報処理装置の動作方法を示すフローチャートである。
【図１３Ａ】予備コアＩ／Ｏアクセス制御回路の動作を示すフローチャートである。
【図１３Ｂ】予備コアＩ／Ｏアクセス制御回路の動作を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【００１８】
図１は、本実施形態に係る情報処理装置１を示す概略図である。図１に示されるように、情報処理装置１は、複数（１６個）のプロセッサノード１００〜１１５、複数（８個）のＩ／Ｏノード１２０〜１２７、及び複数（４個）のノード制御装置１３０〜１３３を備えている。各ノード制御装置には、４個のプロセッサノードと、２個のＩ／Ｏノードとが接続されている。４個のノード制御装置１３０〜１３３は、互いに１：１で接続されている。尚、プロセッサノード等の数はあくまで一例である。すなわち、本発明は、図１に示した情報処理装置１よりも小規模な構成（例えば、プロセッサノード２個、ノード制御装置１個、Ｉ／Ｏノード２個の構成）に対しても適用可能であり、より大規模の構成（例えば、プロセッサノード６４個、Ｉ／Ｏノード３２個、ノード制御装置１６個の構成）に対しても適用可能である。
【００１９】
図１には示されていないが、各プロセッサノード１００〜１１５は、少なくとも一のプロセッサ、及び主記憶装置を有している。
【００２０】
図１に示されるように、各Ｉ／Ｏノードには、コアＩ／Ｏデバイスが含まれている。同一パーティション内に複数のＩ／Ｏノードが含まれる場合には、いずれかのＩ／Ｏノードに含まれるコアＩ／Ｏデバイスのみが、使用される。
【００２１】
各ノード制御装置は、ノード間における通信制御を行なう機能を有している。各ノード制御装置には、予備コアＩ／Ｏアクセス制御回路６２０が設けられている。
【００２２】
本実施形態に係る情報処理装置１では、任意のプロセッサノードと任意のＩ／Ｏノードを組み合わせることにより、１以上のパーティションを構成することができる。各パーティションでは、それぞれ独立して、ＯＳが動作する。図２は、複数のパーティションの一例を示す図である。図２に示される例では、情報処理装置１が、パーティション２００及びパーティション２０１に区切られている。パーティション２００は、プロセッサノード１００、１０１、１０４、１０５、Ｉ／Ｏノード１２０及び１２２によって構成されている。パーティション２０１は、プロセッサノード１０２、１０３、１０６、１０７、１０８〜１１５、Ｉ／Ｏノード１２１、１２３、１２４〜１２７によって構成されている。
【００２３】
ここで、本実施形態においては、パーティションを再起動することなく、使用されているコアＩ／Ｏデバイス（使用コアＩ／Ｏデバイス）を別のコアＩ／Ｏデバイス（予備コアＩ／Ｏデバイス）に切り替えることができるように、工夫が施されている。具体的には、コアＩ／Ｏデバイスを切り替える旨の指示（使用コアＩ／Ｏデバイス変更指示）が与えられた場合に、複数のプロセッサノードのうちのいずれかが、使用コアＩ／Ｏデバイスに含まれるレジスタ（コピー元レジジスタ）に格納されたデータを、予備コアＩ／Ｏデバイスに含まれるレジスタ（コピー先レジスタ）にコピーする。この際、データは、使用コアＩ／Ｏデバイスにおいてコピー元レジスタに与えられたアドレスと、予備コアＩ／Ｏデバイスにおいてコピー先レジスタに与えられたアドレスとが同一になるように、コピーされる。
【００２４】
詳細には、各プロセッサノードから見たときのメモリ空間には、使用コアＩＯ／デバイスと予備コアＩ／Ｏデバイスとが、別々にマップされている。すなわち、各プロセッサノードにおいては、コピー元レジスタとコピー先レジスタとは異なるアドレスに割り当てられている。各プロセッサノードは、コピー元レジスタからデータを読み出した後、読み出したデータをコピー先レジスタに書き込む旨を示すライトトランザクションを発行する。ライトトランザクションは、ノード制御装置に供給される。ノード制御装置では、予備コアＩ／Ｏアクセス制御回路６２０が、ライトトランザクションに記載されたアクセス先アドレスを、使用コアＩ／Ｏにおいてコピー元レジスタに与えられたアドレスと同一になるように、変換する。変換後のライトトランザクションは、予備コアＩ／Ｏデバイスに通知される。これにより、予備コアＩ／Ｏデバイスにおいて、コピー元レジスタと同一のアドレスが割り当てられたレジスタに、データが書き込まれる。すなわち、使用コアＩ／Ｏデバイスと予備コアＩ／Ｏデバイスとの間において、同一のアドレスに同一のデータが格納される。使用コアＩ／Ｏデバイス及び予備コアＩ／Ｏデバイスが業界標準のコアＩ／Ｏデバイスであれば、使用コアＩ／Ｏデバイスに対するアクセスアドレスと同一のアドレスで予備コアＩ／Ｏデバイスにアクセスすることが可能となり、再起動を行なうことなく、使用するコアＩ／Ｏデバイスを切り替えることが可能になる。
【００２５】
以下に、本実施形態に係る情報処理装置１について、詳細に説明する。
【００２６】
まず、各Ｉ／Ｏノードについて説明する。
【００２７】
図３は、各Ｉ／Ｏノード１２０の構成の一例を示す図である。各Ｉ／Ｏノード１２０は、Ｉ／Ｏ制御装置３００、４個のＩ／Ｏデバイス３１０〜３１３、及びコアＩ／Ｏデバイス３１４を有している。Ｉ／Ｏ制御装置３００は、インタフェース１６０を介して、ノード制御装置１３０に接続されている。また、Ｉ／Ｏデバイス３１０〜３１３は、それぞれインタフェース３２０〜３２３を介して、Ｉ／Ｏ制御装置３００に接続されている。同様に、コアＩ／Ｏデバイス３１４は、インタフェース３２４を介して、Ｉ／Ｏ制御装置３００に接続されている。インタフェース３２０〜３２３は、ＰＣＩ−ＥｘｐｒｅｓｓなどのＰＣＩの仕様に準拠する。インタフェース３２４は、ＰＣＩ−ＥｘｐｒｅｓｓなどのＰＣＩの使用に準拠するか、独自のプロトコルを持つ。
【００２８】
図４は、コアＩ／Ｏデバイス３１４の構成の一例を示す図である。コアＩ／Ｏデバイス３１４は、１個の制御ＬＳＩ４００、１個のＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）４１０、１個のＳｕｐｅｒ  Ｉ／Ｏ４１１、及び１個のＢＩＯＳ  ＲＯＭ４１２を有している。制御ＬＳＩ４００は、インタフェース３２４を介して、Ｉ／Ｏ制御装置３００に接続されている。ＢＭＣ４１０、Ｓｕｐｅｒ  Ｉ／Ｏ４１１、及びＢＩＯＳ  ＲＯＭ４１２は、それぞれインタフェース４２０〜４２２を介して、制御ＬＳＩ４００に接続されている。
【００２９】
図示されていないが、制御ＬＳＩ４００は、ＵＳＢ制御部、ＨＤＤ制御部、ＢＭＣインタフェース制御部、Ｓｕｐｅｒ  Ｉ／Ｏインタフェース制御部、及びＢＩＯＳ  ＲＯＭインタフェース制御部を有しており、それぞれの制御部には、複数の制御用のレジスタが設けられている。
【００３０】
次いで、各プロセッサノードについて説明する。
【００３１】
図５は、各プロセッサノードの機能構成を示す概略図である。既述のように、各プロセッサノードは、少なくとも一のプロセッサ、及び主記憶装置を有している。各プロセッサノードでは、ＯＳが動作している。また、図５に示されるように、各プロセッサノードでは、システムファームウェアにより、コアＩ／Ｏ変更部が実現される。コアＩ／Ｏ変更部は、使用されているコアＩ／Ｏデバイスを切り替える機能を有している。コアＩ／Ｏ変更部は、マップ部１０、抑止部１１、コピー部１２、ルーティング設定変更部１３、及び解除部１４を有している。
【００３２】
マップ部１０は、予め（例えばパーティションの起動時等）、各プロセッサノードから見たときのメモリ空間（パーティション全体から見たときのメモリ空間）に、使用コアＩ／Ｏデバイスに対応するアドレス空間（使用中コアＩ／Ｏ用空間）と、予備コアＩ／Ｏデバイスに対応するアドレス空間（予備コアＩ／Ｏ用空間）とをマップする機能を有している。
【００３３】
図６は、各プロセッサノードから見たときのメモリ空間を示す概念図である。図６に示されるように、このメモリ空間には、使用コアＩ／ＯデバイスのＩＯ空間、使用コアＩ／ＯデバイスのＭＭＩＯ（Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）空間、予備コアＩ／ＯデバイスのＩＯ空間、および予備コアＩ／ＯデバイスのＭＭＩＯ空間がマップされている。本実施形態では、予備コアＩ／ＯデバイスのＭＭＩＯ空間は、４Ｇバイトのサイズであり、アドレス２０００００００００００〜２０００ＦＦＦＦＦＦＦＦ（１６進数）にマップされている。また、予備コアＩＯのＩＯ空間は、４Ｋバイトのサイズであり、アドレス２００２００００００００〜２００２０００００ＦＦＦ（１６進数）にマップされている。マップ先のベースアドレスおよびサイズは、固定的に設定されていてもよいし、変更可能に設定されていてもよい。
【００３４】
また、マップ部１０は、メモリ空間に、各Ｉ／Ｏノードのコンフィグレーション空間をマップする機能を有している。図７は、マップされたコンフィグレーション空間を示す概念図である。図７に示されるように、メモリ空間には、複数のＩ／Ｏノードのコンフィグレーション空間が、連続的にマップされている。各コンフィグレーション空間には、セグメント番号、及びバス番号（最大バス番号及び最小バス番号）が割り当てられている。バス番号は、複数のコンフィグレーション空間の間で重複しないように、割り当てられている。
【００３５】
再び図５を参照する。抑止部１１は、新規トランザクションの発行を抑止する部分である。抑止部１１は、使用コアＩ／Ｏ変更指示が与えられた場合に起動し、新規トランザクションの発行を抑止する。
【００３６】
コピー部１２は、新規トランザクションの発行が抑止された後に、使用コアＩ／Ｏデバイスのコピー元レジスタに格納されたデータを、予備コアＩ／Ｏデバイスのコピー先レジスタにコピーする機能を有している。コピー部１２は、使用中コアＩ／Ｏ用空間におけるアドレス（コピー元アドレス）で使用コアＩ／Ｏデバイスにアクセスし、コピー元レジスタに格納されたデータを読み出す。そして、コピー部１２は、予備コアＩ／Ｏ用空間からコピー元アドレスに対応したアドレスを選択し、選択したアドレスをアクセス先アドレスとして、読み出したデータを書き込む旨ためのライトトランザクションを発行する。
【００３７】
ルーティング設定変更部１３は、複数のプロセッサノード１００〜１１５及び複数のＩ／Ｏノード１２０〜１２７に対して、コアＩ／Ｏに関するルーティングの設定を変更する機能を有している。ルーティング設定変更部１３は、コピー部１２によるコピーが完了した後に、ルーティング設定を変更する。
【００３８】
解除部１４は、複数のプロセッサ１０１〜１１５についてトランザクションの発行抑止を解除する部分である。解除部１４は、ルーティング設定変更部１３によるルーティング設定の変更が完了した後に、新規トランザクションの発行抑止を解除する。
【００３９】
ここで、本実施形態に係る情報処理装置１における情報の転送フォーマットについて説明する。
【００４０】
本実施形態では、各ノードにおいて発行されたトランザクションが、パケット単位で送受信される。パケットは、論理的な情報の転送単位であり、ひとつ以上のフリットから構成されるものと定義される。フリットは固定のビット幅を持ち、本実施形態ではビット幅が９０ビットであるものとする。フリットには、ヘッダフリット、及びデータフリットの２種類が存在する。
【００４１】
図８は、各フリットの転送フォーマットを示している。各フリットのビット８９：８８はストローブであり、フリットが有効であること、および、フリットの種類を示している。ストローブが００（２進数）の場合はフリットが無効であることを示し、０１（２進数）の場合はヘッダフリットであることを示し、１０（２進数）の場合はデータフリットであることを示す。このコード定義は一例である。パケットは、１個のヘッダフリットと、０個、１個、２個、４個または８個のデータフリットから構成される。よって、本実施形態において、パケットは、最小では１個のフリットから構成され、最大では９個のフリットから構成される。フリットには、エラーの検出や訂正の目的でＥＣＣやパリティが付加されるが、本発明とは直接関係しないので、その詳細は省略する。ヘッダフリットのビット８７：０には、それぞれ８ビットの５個のフィールドと４８ビットのアドレスフィールドが定義される。これらのフィールド定義は一例であり、情報処理装置のリソース、プロトコルおよびトポロジーに依存して決定される。
【００４２】
コマンドコードは、ターゲットの装置に対する動作を指定するコードが格納されるフィールドである。指定される動作としては、例えば、メモリリード、メモリライト、Ｉ／Ｏリード、Ｉ／Ｏライト、コンフィグレーションリード、コンフィグレーションライト、リプライ、及びコンプリーションが挙げられる。
【００４３】
ソースノードＩＤは、パケットの転送元のプロセッサノードまたはＩ／Ｏノードを識別する固有の番号（ノードＩＤと呼ぶ）が格納されるフィールドである。ターゲットノードＩＤは、パケットの転送先のプロセッサノードまたはＩ／Ｏノードまたはノード制御装置を識別するノードＩＤが格納されるフィールドである。
【００４４】
データレングスは、パケットがリードリクエストの場合に、ターゲットのデータレングスをバイト単位で指定するフィールドである。００（１６進数）〜４０（１６進数）の場合、０〜６４バイトを指定する。他の値は未定義である。
【００４５】
アドレスは、リクエストのアクセス先アドレスを格納するフィールドである。
【００４６】
データフリットのビット７１：６４には、バイトイネーブルが定義され、ビット６３：０に定義される各バイトの有効または無効を指定する。
【００４７】
図９は、コンフィグレーション空間にアクセスする場合における、アドレスフィールドのフォーマットの一例を示す図である。ビット４７：３２は、コンフィグレーション空間がメモリ空間にマップされるときのベースアドレスである。ビット３１：２８は、ひとつのパーティションで複数のコンフィグレーション空間を使用する場合のセグメント番号である。本実施例ではセグメント番号は４ビットなので最大で１６個のセグメントを使用することができる。ビット２７：０は、ＰＣＩ仕様に準拠するフィールドであり、それぞれ、バス番号、デバイス番号、ファンクション番号、拡張レジスタ番号、及びレジスタアドレスを示している。
【００４８】
続いて、ノード制御装置１３０について説明する。
【００４９】
図１０は、ノード制御装置１３０の構成の一例を示す図である。本実施形態では、ノード制御装置１３０は、９個のポート入力部５００〜５０８、９個のポート出力部５１０〜５１８、及びクロスバースイッチ５２０を有している。ここで、一組のポート入力部とポート出力部とによって、ポートが定義される。例えばプロセッサノード１００に接続されるポートは、ポート入力部５００とポート出力部５１０とによって構成される。ノード制御装置１３０に含まれる９個のポートは、それぞれ、プロセッサノード１００〜１０３、Ｉ／Ｏノード１２０〜１２１、ノード制御装置１３１〜１３３に接続されている。
【００５０】
図１１は、ポート入力部５００の詳細を示す図である。ポート入力部５００〜５０３は、同じ構成である。図１１に示されるように、ポート入力部５００は、予備コアＩ／Ｏアクセス制御回路６２０を備えている。予備コアＩ／Ｏアクセス制御回路６２０は、レジスタ６００、予備コアＩ／Ｏアクセス検出回路６０１、予備コアＩ／Ｏアクセスフリット生成回路６０２、及びセレクタ６０３を備えている。
【００５１】
レジスタ６００は、各プロセッサノード１００において予備コアＩ／Ｏデバイスのコンフィグレーション空間に割り当てられた値（セグメント番号、最大バス番号、及び最小バス番号）を保持する。レジスタ６００は、２０ビットのレジスタである。本実施形態では、ビット１９：１６がセグメント番号を保持し、ビット１５：８は最大バス番号を保持し、ビット７：０は最小バス番号を保持する。例えば、予備コアＩ／Ｏデバイスに割り当てるコンフィギュレーション空間のセグメント番号が３であり、バス番号の範囲がＦ０〜Ｆ２（１６進数）である場合、レジスタ６００の設定値は、３Ｆ２Ｆ０（１６進数）になる。レジスタ６００は、情報処理装置１の初期化時や、情報処理装置の運用中に行われる動的な構成変更時に、システムファームウェアまたはＢＭＣファームウェアによって設定される。但し、レジスタ６００の設定に関する詳細については当業者にとってよく知られており、また本発明とは直接関係しないので、詳細な説明は省略する。
【００５２】
予備コアＩ／Ｏアクセス検出回路６０１は、プロセッサノード１００が発行したトランザクションのアクセス先アドレスが予備コアＩ／Ｏデバイスであるか否かを検出する回路である。予備コアＩ／Ｏアクセス検出回路６０１は、プロセッサノード１００により発行されたトランザクションに含まれるフリット信号５３０を取得し、フリット信号５３０がヘッダフリットであるか否かを判定する。フリット信号５３０がヘッダフリットである場合、すなわちストローブフィールドが０１（２進数）である場合、予備コアＩ／Ｏアクセス検出回路６０１は、コマンドコードフィールドおよびアドレスフィールドの値を、予め定められた固定値及びレジスタ６００が保持している値と比較し、比較結果に基づいて、検出結果信号６１１及びアドレス信号６１２を生成する。検出結果信号６１１は、１ビットの信号であり、アクセス先アドレスが予備コアＩ／Ｏデバイスである場合に、１になる。アドレス信号６１２は、予備コアＩ／Ｏデバイスに送出するヘッダフリットのアドレスフィールドに使用される値を示す信号である。
【００５３】
予備コアＩ／Ｏアクセスフリット生成回路６０２は、フリット信号５３０がヘッダフリットである場合に、そのアドレスフィールドをアドレス信号６１２によって示される値に差し換え、変換後のヘッダフリット信号６１３として出力する。
【００５４】
セレクタ６０３は、検出結果信号６１１が０ならばフリット信号５３０を選択し、検出結果信号６１１が１ならば変換後のヘッダフリット信号６１３を選択して、フリット信号５４０としてクロスバースイッチ５２０に出力する。
【００５５】
続いて、本実施形態に係る情報処理装置１の動作方法について説明する。尚、本実施形態では、全てのプロセッサノード１００〜１１５およびＩ／Ｏノード１２０〜１２７により、一つのパーティションが構成されているものとする（図１参照）。ここで、使用中のコアＩ／Ｏデバイスは、Ｉ／Ｏノード１２０に含まれるコアＩ／Ｏデバイスであるものとする。パーティションを動作させたままＩ／Ｏノード１２０を切り離したい場合、切り離しを行う前に、使用されるコアＩ／Ｏデバイスを変更する必要がある。本実施形態では、使用されるコアＩ／Ｏデバイスが、Ｉ／Ｏノード１２０のコアＩ／Ｏデバイスから、Ｉ／Ｏノード１２７のコアＩ／Ｏデバイスに切り替えられる場合の動作について、説明する。
【００５６】
図１２は、本実施形態に係る情報処理装置の動作方法を示すフローチャートである。
【００５７】
ステップＳ１：コアＩ／Ｏデバイスの変更指示
まず、オペレータが、ＢＭＣ（図４参照）を介して、情報処理装置１に対してコアＩ／Ｏデバイスの変更を指示する。オペレータとＢＭＣ間のユーザーインタフェースは、ＷＥＢＵＩなどで行われるが、本発明には直接関係しないため、説明を省略する。
【００５８】
ステップＳ２：システムファームウェアの起動
コアＩ／Ｏデバイスの変更が指示されると、ＢＭＣで動作するＢＭＣファームウェアから、複数のプロセッサ１００〜１１５のいずれかに対して、割り込み処理として、コアＩ／Ｏデバイス変更指示が送られる。本実施形態では、プロセッサ１００（図１参照）に対してコアＩ／Ｏデバイス変更指示が送られるものとする。プロセッサ１００では、システムファームウェアが起動し、コアＩ／Ｏデバイス変更部が実現される。
【００５９】
ステップＳ３：新規トランザクションの発行抑止
プロセッサ１００では、抑止部１１（図５参照）が、パーティション内の他のプロセッサ１０１〜１１５に対して、新規トランザクションの発行を抑止する。
【００６０】
ステップＳ４：実行中トランザクションの完了を待機
また、抑止部１１は、すべてのプロセッサ１００〜１１５において実行中であるトランザクションの完了を待つ。新規トランザクションの発行の抑止と、実行中のトランザクションの完了の確認方法は、プロセッサの実装形態に依存し、本発明には直接関係しないため、説明しない。
【００６１】
ステップＳ５：コピー
次に、プロセッサ１００のコピー部１２（図５参照）が、Ｉ／Ｏノード１２０のコアＩ／Ｏデバイス（使用コアＩ／Ｏデバイス）内のレジスタの内容を、Ｉ／Ｏノード１２７の予備コアＩ／Ｏデバイス（予備コアＩ／Ｏデバイス）に、コピーする。
【００６２】
ステップＳ６：ルーティングの設定変更
次に、プロセッサ１００のルーティング設定変更部１３（図５参照）が、複数のプロセッサノード１００〜１１５および複数のＩ／Ｏノード１２０〜１２７について、コアＩ／Ｏデバイスに関するルーティングの設定を変更する。これにより、Ｉ／Ｏノード１２０内の使用コアＩ／Ｏデバイスへ転送されていたトランザクションが、Ｉ／Ｏノード１２７内の予備コアＩ／Ｏデバイスに転送されるようになる。
【００６３】
ステップＳ７：トランザクションの発行抑止の解除
次に、プロセッサ１００の解除部１４が、他のプロセッサ１０１〜１１５についてトランザクションの発行抑止を解除し、プロセッサ１００の制御をＯＳに返す。
【００６４】
以上のステップＳ１〜Ｓ７の動作により、パーティションにおいて使用されるコアＩ／Ｏデバイスが、Ｉ／Ｏノード１２０内のコアＩ／Ｏデバイスから、Ｉ／Ｏノード１２７内のコアＩ／Ｏデバイスに変更される。
【００６５】
続いて、ステップＳ５における動作について、具体例を用いて、より詳細に説明する。各コアＩ／Ｏデバイス内のレジスタは、各コアＩ／Ｏデバイス内において、メモリ空間、Ｉ／Ｏ空間、及びコンフィグレーション空間のいずれかにマップされる。従って、本実施形態ではそれぞれの場合の具体例について、具体例１乃至３を用いて説明する。尚、プロセッサ１００から見たときのメモリ空間には、図６及び図７に示した状態で、各空間がマップされているものとする。
【００６６】
＜具体例１＞
具体例１では、コピー元レジスタが、コアＩ／Ｏデバイス内におけるメモリ空間にマップされたレジスタである場合について説明する。尚、使用コアＩ／Ｏデバイスにおいてコピー元レジスタに割り当てられたアドレスは、ＦＥＤ０００４０（１６進数）であるものとし、コピー元レジスタには４バイトのデータが格納されているものとする。
【００６７】
まず、プロセッサ１００では、コピー部１２が、使用コアＩ／ＯデバイスのＭＭＩＯ空間（図６参照）を用いて、アドレスＦＥＤ０００４０（１６進数）へのメモリリードトランザクションを発行する。メモリリードトランザクションは、ノード制御装置１３０を経由して、Ｉ／Ｏノード１２０に転送される。Ｉ／Ｏノード１２０内では、Ｉ／Ｏ制御装置３００（図３参照）を介して、コアＩ／Ｏデバイス３１４にメモリリードトランザクションが転送される。使用コアＩ／Ｏデバイス３１４は、メモリ空間のＦＥＤ０００４０（１６進数）にマップされるレジスタ（コピー元レジスタ）に格納されたデータをリードする。リードされたデータは、リプライとしてＩ／Ｏ制御装置３００に返却され、ノード制御装置１３０を介してプロセッサ１００に転送される。
【００６８】
プロセッサ１００では、コピー部１２が、リードしたデータをライトするライトトランザクションを発行する。ここで、コピー部１２は、予備コアＩ／ＯデバイスのＭＭＩＯ空間（図６参照）におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部１２は、使用コアＩ／Ｏデバイスにおいて割り当てられたコピー元レジスタのアドレスＦＥＤ０００４０に、予備コアＩ／ＯデバイスのＭＭＩＯ空間のベースアドレス２０００００００００００を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部１２は、アドレス２０００ＦＥＤ０００４０（１６進数）をアクセス先アドレスとして、ライトトランザクションを発行する。発行されたライトトランザクションは、ノード制御装置１３０に転送される。
【００６９】
ノード制御装置１０３では、ポート入力部５００（図１１参照）がライトトランザクションを取得する。ポート入力部５００では、予備コアＩ／Ｏアクセス制御回路６２０が、ライトトランザクションのアクセス先アドレスを変換する。以下に、予備コアＩ／Ｏアクセス制御回路６２０の動作について、詳述する。図１３Ａ及び図１３Ｂは、予備コアＩ／Ｏアクセス制御回路６２０の動作を示すフローチャートである。
【００７０】
ステップＳ１１：
予備コアＩ／Ｏアクセス制御回路６２０では、予備コアＩ／Ｏアクセス検出回路６０１が、トランザクションのアクセス先が、予備コアＩ／Ｏデバイスのメモリ空間であるか否かを確認する。すなわち、予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションのパケットのヘッダフリットを確認する。予備コアＩ／Ｏアクセス検出回路６０１は、コマンドフィールド（図８参照）が、メモリ空間アクセス（メモリライト）を示すコマンドであるか否かを確認する。また、予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィールドのビット４７：３２が、２０００（１６進数）であるかを確認する。図６に示したように、ビット４７：３２が２０００（１６進数）である場合には、アクセス先アドレスが予備コアＩ／Ｏデバイスのメモリ空間であることになる。トランザクションのアクセス先が予備コアＩ／Ｏデバイスのメモリ空間である場合、次のステップＳ１２の処理が行われる。トランザクションのアクセス先が予備コアＩ／Ｏデバイスのメモリ空間ではない場合、ステップＳ１４の処理が行われる。
【００７１】
本具体例では、コマンドフィールドがメモリ空間アクセスのコマンド（メモリライト）であり、アドレスフィールドのビット４７：３２は２０００（１６進数）である。従って、予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションのアクセス先が予備コアＩ／Ｏデバイスのメモリ空間であると判断し、ステップＳ１２の処理を行う。尚、ステップＳ１４の処理が行われる場合の動作については、具体例２及び３において説明する。
【００７２】
ステップＳ１２：
予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィールドの値を、使用コアＩ／Ｏデバイスにおいてコピー先レジスタに割り当てられた値に差し換え、アドレス信号６１２（図１１参照）として出力する。具体的には、予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィールドのビット４７：３２を００００（１６進数）に差し替え、アドレス信号６１２として出力する。すなわち、本具体例では、アドレス信号６１２として、００００ＦＥＤ０００４０（１６進数）を示す信号が出力される。すなわち、アドレス信号６１２として、アクセス先のアドレス２０００ＦＥＤ０００４０（１６進数）から、予備コアＩ／ＯデバイスのＭＭＩＯ空間のベースアドレス２０００００００００００（図６参照）を減じたアドレスが、出力される。
【００７３】
ステップＳ１３：
また、予備コアＩ／Ｏアクセス検出回路６０１は、検出結果信号６１１（図１１参照）として１を示す値を出力する。
【００７４】
その後、予備コアＩ／Ｏアクセスフリット生成回路６０２が、アドレス信号６１２を取得する。予備コアＩ／Ｏアクセスフリット生成回路６０２は、ヘッダフリット５３０のアドレスフィールドをアドレス信号６１２によって示される値に差し替え、変換後のヘッダフリット信号６１３を生成する。変換後のヘッダフリット信号６１３は、セレクタ６０３に通知される。
【００７５】
セレクタ６０３は、既述のように、検出結果信号６１１が１であるときに変換後のヘッダフリット信号６１３を選択し、検出結果信号６１１が０のときにはフリット信号５３０を出力するように構成されている。本具体例では、検出結果信号６１１として１を示す信号が供給される。従って、セレクタ６０３は、変換後のヘッダフリット信号６１３を選択し、フリット信号５４０としてクロスバースイッチ５２０に向けて出力する。これにより、プロセッサノード１００により発行されたライトトランザクションのアクセス先アドレスが、２０００ＦＥＤ０００４０（１６進数）からＦＥＤ０００４０（１６進数）に変更される。
【００７６】
変換後のライトトランザクションは、ノード制御装置１３３（図１参照）を介して、Ｉ／Ｏノード１２７に転送される。Ｉ／Ｏノード１２７内では、Ｉ／Ｏ制御装置３００を経由してコアＩ／Ｏデバイス３１４に変換後のライトトランザクションが転送される。コアＩ／Ｏデバイス３１４内では、メモリ空間のアドレスＦＥＤ０００４０（１６進数）にマップされるレジスタ（コピー先レジスタ）に、４バイトの値がライトされる。ライトが完了すると、コンプリーションがＩ／Ｏ制御装置３００に返却され、ノード制御装置１３３およびノード制御装置１３０を経由してプロセッサ１００に返却される。
【００７７】
以上により、使用コアＩ／Ｏデバイスにおけるメモリ空間のアドレスＦＥＤ０００４０（１６進数）にマップされるレジスタから、予備コアＩ／Ｏデバイスにおけるメモリ空間のアドレスＦＥＤ０００４０（１６進数）にマップされるレジスタに、データがコピーされる。
【００７８】
＜具体例２＞
次いで、具体例２について説明する。具体例２では、コピー元レジスタが、使用コアＩ／ＯデバイスにおけるＩ／Ｏ空間にマップされるレジスタである場合について説明する。コピー元レジスタは、Ｉ／Ｏ空間のアドレス００Ｃ０にマップされており、１バイトのデータを保持しているものとする。
【００７９】
プロセッサ１００では、コピー部１２が、使用コアＩＯデバイスのＩ／Ｏ空間（図６参照）を利用して、アドレス００Ｃ０（１６進数）のリードトランザクションを発行する。リードトランザクションは、ノード制御装置１３０を経由してＩ／Ｏノード１２０に転送される。Ｉ／Ｏノード１２０内では、Ｉ／Ｏ制御装置３００を介してコアＩ／Ｏ３１４にトランザクションが転送され、Ｉ／Ｏ空間の００Ｃ０（１６進数）にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてＩ／Ｏ制御装置３００に返却され、ノード制御装置１３０を経由してプロセッサ１００に転送される。
【００８０】
次に、コピー部１２は、リードした１バイトの値をライトするライトトランザクションを発行する。ここで、コピー部１２は、予備コアＩ／ＯデバイスのＩＯ空間（図６参照）におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部１２は、使用コアＩ／Ｏデバイスにおいて割り当てられたコピー元レジスタのアドレス００Ｃ０に、予備コアＩ／ＯデバイスのＩＯ空間のベースアドレス２０００２００００００００を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部１２は、アドレス２００２００００００Ｃ０（１６進数）をアクセス先アドレスとして、ライトトランザクションを発行する。ライトトランザクションは、ノード制御装置１３０に転送され、ノード制御装置１３０のポート入力部５００に入力される。
【００８１】
ポート入力部５００では、予備コアＩ／Ｏアクセス制御回路６２０が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアＩ／Ｏアクセス制御回路６２０では、図１３Ａ及び図１３Ｂに示したフローチャートによって、処理が行われる。すなわち、予備コアＩ／Ｏアクセス検出回路６０１が、トランザクションのアクセス先が、予備コアＩ／Ｏデバイスのメモリ空間であるか否かを確認する（ステップＳ１１）。本具体例では、トランザクションの予備コアＩ／Ｏデバイスのメモリ空間ではないので、ステップＳ１４の処理が実行される。ステップＳ１４以降の処理について、以下に詳述する。
【００８２】
ステップＳ１４：
予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションのアクセス先が、予備コアＩ／ＯにおけるＩ／Ｏ空間であるか否かを判定する。すなわち、予備コアＩ／Ｏアクセス検出回路６０１は、ヘッダフリットのコマンドフィールドがＩ／Ｏ空間アクセスのコマンドであるか否かを判定する。また、アドレスフィールドのビット４７：１２が、２００２０００００（１６進数）であるか否かを確認する。ビット４７：１２が２００２０００００（１６進数）であれば、アクセス先は予備コアＩ／Ｏデバイスであることになる（図６参照）。トランザクションのアクセス先が予備コアＩ／ＯデバイスにおけるＩ／Ｏ空間である場合、次のステップＳ１５の処理が実行される。そのアクセス先が予備コアＩ／ＯデバイスにおけるＩ／Ｏ空間でない場合、ステップＳ１６の処理が実行される。
【００８３】
本具体例では、コマンドフィールドがＩ／Ｏ空間アクセスのコマンドであり、アドレスフィールドのビット４７：１２が２００２０００００（１６進数）である。従って、予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションのアクセス先が予備コアＩ／ＯデバイスのＩ／Ｏ空間であると判断し、ステップＳ１５の処理を行う。尚、ステップＳ１６の処理が行われる場合の動作については、具体例３において説明する。
【００８４】
ステップＳ１５：
予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィールドのビット４７：１２を０００００００００（１６進数）に差し替え、アドレス信号６１２として出力する。すなわち、アドレス信号６１２として、００００００００００Ｃ０を示す信号を出力する。すなわち、アドレス信号６１２として、アクセス先のアドレス２００２００００００Ｃ０（１６進数）から、予備コアＩ／ＯデバイスのＩＯ空間のベースアドレス２００２００００００００（図６参照）を減じたアドレスが、出力される。
【００８５】
また、予備コアＩ／Ｏアクセス検出回路６０１は、検出結果信号６１１として、１を示す信号を出力する（ステップＳ１３）。予備コアＩ／Ｏアクセスフリット生成回路は、ヘッダフリットのアドレスフィールドをアドレス信号６１２に差し替え、ヘッダフリット信号６１３として出力する。セレクタ６０３は、検出結果信号６１１が１であるため、ヘッダフリット信号６１３を選択し、フリット信号５４０としてクロスバースイッチ５２０へ出力する。これにより、トランザクションのアクセス先アドレスが、２００２００００００Ｃ０（１６進数）から００Ｃ０（１６進数）に変更される。
【００８６】
ノード制御装置１３０から出力されたライトトランザクションは、ノード制御装置１３３を経由してＩ／Ｏノード１２７に転送される。Ｉ／Ｏノード１２７内では、Ｉ／Ｏ制御装置３００を経由してコアＩ／Ｏ３１４にトランザクションが転送され、Ｉ／Ｏ空間の００Ｃ０（１６進数）にマップされるレジスタに、１バイトの値がライトされる。ライトが完了すると、コンプリーションがＩ／Ｏ制御装置３００に返却され、ノード制御装置１３３およびノード制御装置１３０を経由してプロセッサ１００に返却される。
【００８７】
以上の動作により、使用コアＩ／ＯデバイスにおけるＩ／Ｏ空間のアドレス００Ｃ０（１６進数）にマップされたレジスタから、予備コアＩ／ＯデバイスにおけるＩ／Ｏ空間のアドレス００Ｃ０にマップされるレジスタに、データがコピーされる。
【００８８】
＜具体例３＞
次いで、具体例３について説明する。具体例３では、コピー元レジスタが、コンフィグレーション空間（図７参照）にマップされるレジスタである場合について説明する。コピー元レジスタは、コンフィグレーション空間におけるセグメント番号０（１６進数）、バス番号００（１６進数）、デバイス番号０００００（２進数）、ファンクション番号０００（２進数）、拡張レジスタ番号０（１６進数）、レジスタアドレスＡ０（１６進数）にマップされる４バイトのレジスタであるものとする。また、コンフィグレーション空間のベースアドレスは、１０００であるものとする。この場合、コピー元レジスタのアドレスは、１０００００００００Ａ０になる。また、予備コアＩ／Ｏデバイスに割り当てられるコンフィグレーション空間は、セグメント番号が３（１６進数）であり、バス番号がＦ０〜Ｆ２（１６進数）であるものとする。すなわち、レジスタ６００（図１１参照）には、３Ｆ２Ｆ０（１６進数）が設定されているものとする。
【００８９】
プロセッサ１００では、コピー部１２が、コンフィグレーション空間のアドレス１０００００００００Ａ０（１６進数）から、４バイトのデータをリードする。プロセッサ１００からアドレス１０００００００００Ａ０（１６進数）へのコンフィグレーションリードが発行されると、ノード制御装置１３０を経由してＩ／Ｏノード１２０へトランザクションが転送される。Ｉ／Ｏノード１２０内では、Ｉ／Ｏ制御装置３００を経由してコアＩ／Ｏデバイス３１４にトランザクションが転送される。コアＩ／Ｏデバイス３１４では、コンフィグレーション空間のバス番号００（１６進数）、デバイス番号０００００（２進数）、ファンクション番号０００（２進数）、拡張レジスタ番号０（１６進数）、レジスタアドレスＡ０（１６進数）にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてＩ／Ｏ制御装置３００に返却され、ノード制御装置１３０を経由してプロセッサ１００に転送される。
【００９０】
次に、コピー部１２は、リードした４バイトの値を、コンフィグレーション空間のアドレス１０００３Ｆ００００Ａ０（１６進数）に書き込む旨を示すライトトランザクションを発行する。１０００３Ｆ００００Ａ０（１６進数）によって示されるアドレスは、セグメント番号３（１６進数）、バス番号Ｆ０（１６進数）、デバイス番号０００００（２進数）、ファンクション番号０００（２進数）、拡張レジスタ番号０（１６進数）、レジスタアドレスＡ０（１６進数）である。ライトトランザクションは、ノード制御装置１３０に転送され、ノード制御装置１３０のポート入力部５００に入力される。
【００９１】
ポート入力部５００では、予備コアＩ／Ｏアクセス制御回路６２０が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアＩ／Ｏアクセス制御回路６２０では、図１３Ａ及び図１３Ｂに示したフローチャートによって、処理が行われる。すなわち、予備コアＩ／Ｏアクセス検出回路６０１が、トランザクションのアクセス先が、予備コアＩ／Ｏデバイスのメモリ空間であるか否かを確認する（ステップＳ１１）。本具体例では、アクセス先はトランザクションの予備コアＩ／Ｏデバイスのメモリ空間ではないので、ステップＳ１４の処理が実行される。ステップＳ１４では、予備コアＩ／Ｏアクセス検出回路により、トランザクションのアクセス先が、予備コアＩ／ＯデバイスのＩ／Ｏ空間であるか否かが確認される。本具体例では、アクセス先はＩ／Ｏ空間ではないので、ステップＳ１６の処理が実行される。ステップＳ１６以降の処理について、以下に詳述する。
【００９２】
ステップＳ１６：
予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションが、予備コアＩ／Ｏデバイスのコンフィグレーション空間をターゲットとするものであるか否かを判定する。具体的には、予備コアＩ／Ｏアクセス検出回路は、トランザクションのヘッダフリットをチェックし、コマンドフィールドが、コンフィグレーション空間アクセスのコマンドであるか否かを確認する。また、予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィールドにおけるセグメント番号およびバス番号が、レジスタ６００によって指定される範囲に含まれるか否かをチェックする。
【００９３】
トランザクションが、予備コアＩ／Ｏデバイスのコンフィグレーション空間をターゲットとするものであるである場合、次のステップＳ１７の処理が行われる。トランザクションが、予備コアＩ／Ｏデバイスのコンフィグレーション空間をターゲットとするものではない場合、予備コアＩ／Ｏアクセス検出回路６０１は、アドレス信号６１２として０を示す信号を出力し（ステップＳ１８）、検出結果信号６１１として０を示す信号を出力する（ステップＳ１９）。
【００９４】
本具体例では、コマンドフィールドは、コンフィグレーション空間アクセスのコマンドである。また、アドレスフィールドにおけるセグメント番号は、３（１６進数）であり、レジスタ６００のビット１９：１６に一致する。更に、アドレスフィールドにおけるバス番号は、Ｆ０（１６進数）であり、レジスタ６００のビット１５：８以下であり、ビット７：０以上である。従って、予備コアＩ／Ｏアクセス検出回路６０１は、トランザクションが、予備コアＩ／Ｏデバイスのコンフィグレーション空間をターゲットとするものであると判断し、次のステップＳ１７の処理が行われる。
【００９５】
ステップＳ１７：
予備コアＩ／Ｏアクセス検出回路６０１は、アドレスフィルールドのバス番号について、レジスタ６００に記載された最小バス番号を減じ、減じた後のアドレスフィールドの値を示す信号を、アドレス信号６１２として出力する。すなわち、アドレス信号６１２として、１０００３０００００Ａ０（１６進数）を示す信号が出力される。
【００９６】
また、予備コアＩ／Ｏアクセス検出回路６０１は、検出結果信号６１１として、１を示す信号を出力する。予備コアＩ／Ｏアクセスフリット生成回路６０２は、ヘッダフリットのアドレスフィールドをアドレス信号６１２に差し替え、変換後のヘッダフリット信号６１３を生成する。セレクタ６０３は、検出結果信号６１１が１を示すため、変換後のヘッダフリット信号６１３を選択し、フリット信号５４０としてクロスバースイッチ５２０に出力する。これにより、トランザクションのアドレスが、１０００３Ｆ００００Ａ０（１６進数）から１０００３０００００Ａ０（１６進数）に変更される。
【００９７】
ノード制御装置１３０から出力されたトランザクションは、ノード制御装置１３３を経由してＩ／Ｏノード１２７に転送される。Ｉ／Ｏノード１２７内では、Ｉ／Ｏ制御装置３００を経由してコアＩ／Ｏデバイス３１４にトランザクションが転送される。コアＩ／Ｏデバイス３１４においては、コンフィグレーション空間のバス番号００（１６進数）、デバイス番号０００００（２進数）、ファンクション番号０００（２進数）、拡張レジスタ番号０（１６進数）、レジスタアドレスＡ０（１６進数）にマップされるレジスタに、４バイトの値がライトされる。ライトが完了すると、コンプリーションがＩ／Ｏ制御装置３００に返却され、ノード制御装置１３３およびノード制御装置１３０を経由してプロセッサ１００に返却される。
【００９８】
以上の処理により、コアＩ／Ｏデバイスにおいて、コンフィグレーション空間のセグメント番号０（１６進数）、バス番号００（１６進数）、デバイス番号０００００（２進数）、ファンクション番号０００（２進数）、拡張レジスタ番号０（１６進数）、レジスタアドレスＡ０（１６進数）にマップされるレジスタが、コピーされる。
【００９９】
以上説明したように、本実施形態によれば、使用コアＩ／Ｏデバイスにおけるコピー元レジスタのアドレスと、予備コアＩ／Ｏデバイスにおけるコピー先レジスタのアドレスとを、同一にすることができる。これにより、使用中のコアＩ／Ｏデバイスを含むＩ／Ｏノードを切り離す場合であっても、パーティションを再起動することなく、使用するコアＩ／Ｏデバイスを予備のコアＩ／Ｏデバイスに変更することができ、情報処理装置の可用性を向上させることができる。
【符号の説明】
【０１００】
１０：マップ部
１１：抑止部
１２：コピー部
１３：ルーティング設定変更部
１４：解除部
１００〜１１５：プロセッサノード
１２０〜１２７：Ｉ／Ｏノード
１３０〜１３３：ノード制御装置
１６０：インタフェース
２００〜２０１：パーティション
３００：Ｉ／Ｏ制御装置
３１０〜３１３：Ｉ／Ｏデバイス
３１４：コアＩ／Ｏ
３２０〜３２４：インタフェース
４００：制御ＬＳＩ
４１０：ＢＭＣ
４１１：Ｓｕｐｅｒ  Ｉ／Ｏ
４１２：ＢＩＯＳ  ＲＯＭ
４２０〜４２２：インタフェース
５００〜５０８：ポート入力部
５１０〜５１８：ポート出力部
５２０：クロスバースイッチ
５３０：フリット信号
５４０：フリット信号
６００：レジスタ
６０１：予備コアＩ／Ｏアクセス検出回路
６０２：予備コアＩ／Ｏアクセスフリット生成回路
６０３：セレクタ
６１１：検出結果信号
６１２：アドレス信号
６１３：ヘッダフリット信号
６２０：予備コアＩ／Ｏアクセス制御回路
【図１】
0005240872.tif 000002
【図２】
0005240872.tif 000003
【図３】
0005240872.tif 000004
【図４】
0005240872.tif 000005
【図５】
0005240872.tif 000006
【図６】
0005240872.tif 000007
【図７】
0005240872.tif 000008
【図８】
0005240872.tif 000009
【図９】
0005240872.tif 000010
【図１０】
0005240872.tif 000011
【図１１】
0005240872.tif 000012
【図１２】
0005240872.tif 000013
【図１３Ａ】
0005240872.tif 000014
【図１３Ｂ】
0005240872.tif 000015