情報処理装置及び情報処理装置の動作方法
【課題】パーティションを再起動することなく、使用するコアI/Oデバイスを切り替える。
【解決手段】情報処理装置は、各プロセッサノードにおけるメモリ空間に、使用中コアI/O用空間と、予備コアI/O用空間とをマップするマップ部と、使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするコピー部と、コピーが完了後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するルーティング設定変更部と、変更後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備える。
【解決手段】情報処理装置は、各プロセッサノードにおけるメモリ空間に、使用中コアI/O用空間と、予備コアI/O用空間とをマップするマップ部と、使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするコピー部と、コピーが完了後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するルーティング設定変更部と、変更後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理装置の動作方法に関する。
【背景技術】
【0002】
複数のプロセッサノード及び複数のI/Oノードを有する情報処理装置では、プロセッサノードとI/Oノードとを任意に組み合わせることにより、複数のパーティションが構成されることがある。各パーティションでは、独立にOSが動作する。各I/Oノードには、コアI/Oデバイスが設けられる。各パーティションにI/Oノードが複数含まれる場合には、いずれかのI/Oノードに含まれるコアI/Oデバイスのみが使用される。ここで、パーティションにおいて使用されているコアI/Oデバイスを切り替えたいという要求がある。
【0003】
関連技術として、特許文献1(特開2008−225534号公報)に記載された動的縮退装置が挙げられる。この動的縮退装置は、マスターデバイスとスレーブデバイスとに二重化されたI/Oデバイスの動的縮退装置であり、トランザクションを受信し、ルーティングし、送出するトランザクションルーティングコントローラと、I/Oデバイスの二重化が有効であることを示す有効情報と、当該有効情報に関連付けられた二つの識別情報であって、前記マスターデバイスへの経路を示すマスターデバイス識別情報と、スレーブデバイスへの経路を示すスレーブデバイス識別情報とを有するルーティングテーブルと、トランザクションルーティングコントローラとルーティングテーブルとを制御するサービスプロセッサとを具備する。
【0004】
他の関連技術として、特許文献2(特許第4165423号)に記載されたシステムボードが挙げられる。このシステムボードは、コアI/Oカードとの間にPCIバスを複数有する。各PCIバスには、1つの同一のコアI/Oカードが実装される。更に、各コアI/Oカードには、同一の入出力機器が接続されている。各コアI/Oカードは、入出力機器に関する情報及び入出力機器を制御するプログラムを記憶する記憶手段と、入出力機器を制御する入出力機器制御手段とを有する。記憶手段は、入出力機器制御手段と接続され、入出力機器制御手段は、PCIバスに接続されている。これにより、コアI/Oカードを二重化することが可能となり、障害等により使用していたコアI/Oカードが切り離された場合でも、他方のコアI/Oカードを利用してリブートすることが可能になる。
【0005】
更に他の関連技術として、特許文献3(特開2006−72492号公報)に記載されたシステム制御装置が挙げられる。このシステム制御装置は、コンピュータシステムに含まれる複数のデバイスを制御するシステム制御装置である。システム制御装置は、運用中のコアデバイスブリッジの配下に接続されたデバイスに記憶されるBIOSおよびシステムの構成情報を含んだシステム情報を取得するシステム情報取得手段と、取得したシステム情報を保持するシステム情報保持手段と、運用デバイスブリッジが故障した場合に、代用バスブリッジの配下に接続されたデバイスに、システム情報を記憶させ、運用デバイスブリッジを代用デバイスブリッジに切り替える切り替え処理手段とを備える。
【0006】
更に他の関連技術として、特許文献4(特開2009−193469号公報)に記載された動的切替え装置が挙げられる。この動的切替え装置は、I/Oデバイスへのルーティングが有効であることを示す有効ビットに関する情報、及びI/Oデバイスへのルーティング経路情報を格納したルーティングテーブルと、トランザクションを受け取り、ルーティングテーブルを参照し、有効ビットが偽である場合、トランザクションの送出を抑止し、有効ビットが真である場合、ルーティング経路情報に従い、I/Oデバイスに対してトランザクションを送出し、I/Oデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するトランザクションルーティングコントローラとを具備する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−225534号公報
【特許文献2】特許第4165423号
【特許文献3】特開2006−72492号公報
【特許文献4】特開2009−193469号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
各パーティション内において、使用中のコアI/Oデバイスを切り替える場合には、当該パーティションの再起動が必要になる。そのため、情報処理装置の可用性が損なわれてしまう。
【0009】
特許文献1に記載される動的縮退装置では、運用中に一方のI/Oデバイスを縮退することができる。しかしながら、予備のコアI/Oデバイスを常に稼動させておかなければならない。
【0010】
また、特許文献2及び特許文献3には、コアI/Oを二重化することにより、障害発生時に使用するコアI/Oを切り替える点が記載されている。しかし、切り替えにはシステムの再立ち上げが必要であり、システムの運用中において使用するコアI/Oを切り替える点については、記載がない。
【0011】
また、特許文献4には、I/Oデバイスの切替が発生した場合の処理については記載されているが、システムの運用中においてどのように使用するコアI/Oを切り替えるかについては、記載されていない。
【0012】
従って、本発明の課題は、パーティションを再起動することなく、使用するコアI/Oデバイスを切り替えるができる、情報処理装置及び情報装置の動作方法を提供することにある。
【課題を解決するための手段】
【0013】
本発明に係る情報処理装置は、複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置である。前記各プロセッサノードは、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするマップ部と、使用コアI/O変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーする、コピー部と、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備える。前記ノード制御装置は、予備コアI/Oアクセス制御回路を備える。前記コピー部は、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行する。前記予備コアI/Oアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知する。
【0014】
本発明に係る情報処理装置の動作方法は、複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置の動作方法である。この動作方法は、前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするステップと、前記各プロセッサノードが、使用コアI/O変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするステップと、前記各プロセッサノードが、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するステップと、前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップとを具備する。前記コピーするステップは、前記プロセッサノードが、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知するステップとを含む。
【発明の効果】
【0015】
本発明によれば、パーティションを再起動することなく、使用するI/Oノードを変更することができる、情報処理装置及び情報装置の動作方法が提供される。
【図面の簡単な説明】
【0016】
【図1】情報処理装置1を示す概略図である。
【図2】パーティションを示す概略図である。
【図3】各I/Oノードの構成の一例を示す図である。
【図4】コアI/Oデバイスの構成の一例を示す図である。
【図5】各プロセッサノードの機能構成を示す概略図である。
【図6】各プロセッサノードから見たときのメモリ空間を示す概念図である。
【図7】コンフィグレーション空間を示す概念図である。
【図8】フリットの転送フォーマットを示す概念図である。
【図9】コンフィグレーション空間にアクセスする場合のアドレスフィールドのフォーマットの一例を示す図である。
【図10】ノード制御装置の構成の一例を示す図である。
【図11】ポート入力部の詳細を示す図である。
【図12】情報処理装置の動作方法を示すフローチャートである。
【図13A】予備コアI/Oアクセス制御回路の動作を示すフローチャートである。
【図13B】予備コアI/Oアクセス制御回路の動作を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【0018】
図1は、本実施形態に係る情報処理装置1を示す概略図である。図1に示されるように、情報処理装置1は、複数(16個)のプロセッサノード100〜115、複数(8個)のI/Oノード120〜127、及び複数(4個)のノード制御装置130〜133を備えている。各ノード制御装置には、4個のプロセッサノードと、2個のI/Oノードとが接続されている。4個のノード制御装置130〜133は、互いに1:1で接続されている。尚、プロセッサノード等の数はあくまで一例である。すなわち、本発明は、図1に示した情報処理装置1よりも小規模な構成(例えば、プロセッサノード2個、ノード制御装置1個、I/Oノード2個の構成)に対しても適用可能であり、より大規模の構成(例えば、プロセッサノード64個、I/Oノード32個、ノード制御装置16個の構成)に対しても適用可能である。
【0019】
図1には示されていないが、各プロセッサノード100〜115は、少なくとも一のプロセッサ、及び主記憶装置を有している。
【0020】
図1に示されるように、各I/Oノードには、コアI/Oデバイスが含まれている。同一パーティション内に複数のI/Oノードが含まれる場合には、いずれかのI/Oノードに含まれるコアI/Oデバイスのみが、使用される。
【0021】
各ノード制御装置は、ノード間における通信制御を行なう機能を有している。各ノード制御装置には、予備コアI/Oアクセス制御回路620が設けられている。
【0022】
本実施形態に係る情報処理装置1では、任意のプロセッサノードと任意のI/Oノードを組み合わせることにより、1以上のパーティションを構成することができる。各パーティションでは、それぞれ独立して、OSが動作する。図2は、複数のパーティションの一例を示す図である。図2に示される例では、情報処理装置1が、パーティション200及びパーティション201に区切られている。パーティション200は、プロセッサノード100、101、104、105、I/Oノード120及び122によって構成されている。パーティション201は、プロセッサノード102、103、106、107、108〜115、I/Oノード121、123、124〜127によって構成されている。
【0023】
ここで、本実施形態においては、パーティションを再起動することなく、使用されているコアI/Oデバイス(使用コアI/Oデバイス)を別のコアI/Oデバイス(予備コアI/Oデバイス)に切り替えることができるように、工夫が施されている。具体的には、コアI/Oデバイスを切り替える旨の指示(使用コアI/Oデバイス変更指示)が与えられた場合に、複数のプロセッサノードのうちのいずれかが、使用コアI/Oデバイスに含まれるレジスタ(コピー元レジジスタ)に格納されたデータを、予備コアI/Oデバイスに含まれるレジスタ(コピー先レジスタ)にコピーする。この際、データは、使用コアI/Oデバイスにおいてコピー元レジスタに与えられたアドレスと、予備コアI/Oデバイスにおいてコピー先レジスタに与えられたアドレスとが同一になるように、コピーされる。
【0024】
詳細には、各プロセッサノードから見たときのメモリ空間には、使用コアIO/デバイスと予備コアI/Oデバイスとが、別々にマップされている。すなわち、各プロセッサノードにおいては、コピー元レジスタとコピー先レジスタとは異なるアドレスに割り当てられている。各プロセッサノードは、コピー元レジスタからデータを読み出した後、読み出したデータをコピー先レジスタに書き込む旨を示すライトトランザクションを発行する。ライトトランザクションは、ノード制御装置に供給される。ノード制御装置では、予備コアI/Oアクセス制御回路620が、ライトトランザクションに記載されたアクセス先アドレスを、使用コアI/Oにおいてコピー元レジスタに与えられたアドレスと同一になるように、変換する。変換後のライトトランザクションは、予備コアI/Oデバイスに通知される。これにより、予備コアI/Oデバイスにおいて、コピー元レジスタと同一のアドレスが割り当てられたレジスタに、データが書き込まれる。すなわち、使用コアI/Oデバイスと予備コアI/Oデバイスとの間において、同一のアドレスに同一のデータが格納される。使用コアI/Oデバイス及び予備コアI/Oデバイスが業界標準のコアI/Oデバイスであれば、使用コアI/Oデバイスに対するアクセスアドレスと同一のアドレスで予備コアI/Oデバイスにアクセスすることが可能となり、再起動を行なうことなく、使用するコアI/Oデバイスを切り替えることが可能になる。
【0025】
以下に、本実施形態に係る情報処理装置1について、詳細に説明する。
【0026】
まず、各I/Oノードについて説明する。
【0027】
図3は、各I/Oノード120の構成の一例を示す図である。各I/Oノード120は、I/O制御装置300、4個のI/Oデバイス310〜313、及びコアI/Oデバイス314を有している。I/O制御装置300は、インタフェース160を介して、ノード制御装置130に接続されている。また、I/Oデバイス310〜313は、それぞれインタフェース320〜323を介して、I/O制御装置300に接続されている。同様に、コアI/Oデバイス314は、インタフェース324を介して、I/O制御装置300に接続されている。インタフェース320〜323は、PCI−ExpressなどのPCIの仕様に準拠する。インタフェース324は、PCI−ExpressなどのPCIの使用に準拠するか、独自のプロトコルを持つ。
【0028】
図4は、コアI/Oデバイス314の構成の一例を示す図である。コアI/Oデバイス314は、1個の制御LSI400、1個のBMC(Baseboard Management Controller)410、1個のSuper I/O411、及び1個のBIOS ROM412を有している。制御LSI400は、インタフェース324を介して、I/O制御装置300に接続されている。BMC410、Super I/O411、及びBIOS ROM412は、それぞれインタフェース420〜422を介して、制御LSI400に接続されている。
【0029】
図示されていないが、制御LSI400は、USB制御部、HDD制御部、BMCインタフェース制御部、Super I/Oインタフェース制御部、及びBIOS ROMインタフェース制御部を有しており、それぞれの制御部には、複数の制御用のレジスタが設けられている。
【0030】
次いで、各プロセッサノードについて説明する。
【0031】
図5は、各プロセッサノードの機能構成を示す概略図である。既述のように、各プロセッサノードは、少なくとも一のプロセッサ、及び主記憶装置を有している。各プロセッサノードでは、OSが動作している。また、図5に示されるように、各プロセッサノードでは、システムファームウェアにより、コアI/O変更部が実現される。コアI/O変更部は、使用されているコアI/Oデバイスを切り替える機能を有している。コアI/O変更部は、マップ部10、抑止部11、コピー部12、ルーティング設定変更部13、及び解除部14を有している。
【0032】
マップ部10は、予め(例えばパーティションの起動時等)、各プロセッサノードから見たときのメモリ空間(パーティション全体から見たときのメモリ空間)に、使用コアI/Oデバイスに対応するアドレス空間(使用中コアI/O用空間)と、予備コアI/Oデバイスに対応するアドレス空間(予備コアI/O用空間)とをマップする機能を有している。
【0033】
図6は、各プロセッサノードから見たときのメモリ空間を示す概念図である。図6に示されるように、このメモリ空間には、使用コアI/OデバイスのIO空間、使用コアI/OデバイスのMMIO(Memory Mapped Input Output)空間、予備コアI/OデバイスのIO空間、および予備コアI/OデバイスのMMIO空間がマップされている。本実施形態では、予備コアI/OデバイスのMMIO空間は、4Gバイトのサイズであり、アドレス200000000000〜2000FFFFFFFF(16進数)にマップされている。また、予備コアIOのIO空間は、4Kバイトのサイズであり、アドレス200200000000〜200200000FFF(16進数)にマップされている。マップ先のベースアドレスおよびサイズは、固定的に設定されていてもよいし、変更可能に設定されていてもよい。
【0034】
また、マップ部10は、メモリ空間に、各I/Oノードのコンフィグレーション空間をマップする機能を有している。図7は、マップされたコンフィグレーション空間を示す概念図である。図7に示されるように、メモリ空間には、複数のI/Oノードのコンフィグレーション空間が、連続的にマップされている。各コンフィグレーション空間には、セグメント番号、及びバス番号(最大バス番号及び最小バス番号)が割り当てられている。バス番号は、複数のコンフィグレーション空間の間で重複しないように、割り当てられている。
【0035】
再び図5を参照する。抑止部11は、新規トランザクションの発行を抑止する部分である。抑止部11は、使用コアI/O変更指示が与えられた場合に起動し、新規トランザクションの発行を抑止する。
【0036】
コピー部12は、新規トランザクションの発行が抑止された後に、使用コアI/Oデバイスのコピー元レジスタに格納されたデータを、予備コアI/Oデバイスのコピー先レジスタにコピーする機能を有している。コピー部12は、使用中コアI/O用空間におけるアドレス(コピー元アドレス)で使用コアI/Oデバイスにアクセスし、コピー元レジスタに格納されたデータを読み出す。そして、コピー部12は、予備コアI/O用空間からコピー元アドレスに対応したアドレスを選択し、選択したアドレスをアクセス先アドレスとして、読み出したデータを書き込む旨ためのライトトランザクションを発行する。
【0037】
ルーティング設定変更部13は、複数のプロセッサノード100〜115及び複数のI/Oノード120〜127に対して、コアI/Oに関するルーティングの設定を変更する機能を有している。ルーティング設定変更部13は、コピー部12によるコピーが完了した後に、ルーティング設定を変更する。
【0038】
解除部14は、複数のプロセッサ101〜115についてトランザクションの発行抑止を解除する部分である。解除部14は、ルーティング設定変更部13によるルーティング設定の変更が完了した後に、新規トランザクションの発行抑止を解除する。
【0039】
ここで、本実施形態に係る情報処理装置1における情報の転送フォーマットについて説明する。
【0040】
本実施形態では、各ノードにおいて発行されたトランザクションが、パケット単位で送受信される。パケットは、論理的な情報の転送単位であり、ひとつ以上のフリットから構成されるものと定義される。フリットは固定のビット幅を持ち、本実施形態ではビット幅が90ビットであるものとする。フリットには、ヘッダフリット、及びデータフリットの2種類が存在する。
【0041】
図8は、各フリットの転送フォーマットを示している。各フリットのビット89:88はストローブであり、フリットが有効であること、および、フリットの種類を示している。ストローブが00(2進数)の場合はフリットが無効であることを示し、01(2進数)の場合はヘッダフリットであることを示し、10(2進数)の場合はデータフリットであることを示す。このコード定義は一例である。パケットは、1個のヘッダフリットと、0個、1個、2個、4個または8個のデータフリットから構成される。よって、本実施形態において、パケットは、最小では1個のフリットから構成され、最大では9個のフリットから構成される。フリットには、エラーの検出や訂正の目的でECCやパリティが付加されるが、本発明とは直接関係しないので、その詳細は省略する。ヘッダフリットのビット87:0には、それぞれ8ビットの5個のフィールドと48ビットのアドレスフィールドが定義される。これらのフィールド定義は一例であり、情報処理装置のリソース、プロトコルおよびトポロジーに依存して決定される。
【0042】
コマンドコードは、ターゲットの装置に対する動作を指定するコードが格納されるフィールドである。指定される動作としては、例えば、メモリリード、メモリライト、I/Oリード、I/Oライト、コンフィグレーションリード、コンフィグレーションライト、リプライ、及びコンプリーションが挙げられる。
【0043】
ソースノードIDは、パケットの転送元のプロセッサノードまたはI/Oノードを識別する固有の番号(ノードIDと呼ぶ)が格納されるフィールドである。ターゲットノードIDは、パケットの転送先のプロセッサノードまたはI/Oノードまたはノード制御装置を識別するノードIDが格納されるフィールドである。
【0044】
データレングスは、パケットがリードリクエストの場合に、ターゲットのデータレングスをバイト単位で指定するフィールドである。00(16進数)〜40(16進数)の場合、0〜64バイトを指定する。他の値は未定義である。
【0045】
アドレスは、リクエストのアクセス先アドレスを格納するフィールドである。
【0046】
データフリットのビット71:64には、バイトイネーブルが定義され、ビット63:0に定義される各バイトの有効または無効を指定する。
【0047】
図9は、コンフィグレーション空間にアクセスする場合における、アドレスフィールドのフォーマットの一例を示す図である。ビット47:32は、コンフィグレーション空間がメモリ空間にマップされるときのベースアドレスである。ビット31:28は、ひとつのパーティションで複数のコンフィグレーション空間を使用する場合のセグメント番号である。本実施例ではセグメント番号は4ビットなので最大で16個のセグメントを使用することができる。ビット27:0は、PCI仕様に準拠するフィールドであり、それぞれ、バス番号、デバイス番号、ファンクション番号、拡張レジスタ番号、及びレジスタアドレスを示している。
【0048】
続いて、ノード制御装置130について説明する。
【0049】
図10は、ノード制御装置130の構成の一例を示す図である。本実施形態では、ノード制御装置130は、9個のポート入力部500〜508、9個のポート出力部510〜518、及びクロスバースイッチ520を有している。ここで、一組のポート入力部とポート出力部とによって、ポートが定義される。例えばプロセッサノード100に接続されるポートは、ポート入力部500とポート出力部510とによって構成される。ノード制御装置130に含まれる9個のポートは、それぞれ、プロセッサノード100〜103、I/Oノード120〜121、ノード制御装置131〜133に接続されている。
【0050】
図11は、ポート入力部500の詳細を示す図である。ポート入力部500〜503は、同じ構成である。図11に示されるように、ポート入力部500は、予備コアI/Oアクセス制御回路620を備えている。予備コアI/Oアクセス制御回路620は、レジスタ600、予備コアI/Oアクセス検出回路601、予備コアI/Oアクセスフリット生成回路602、及びセレクタ603を備えている。
【0051】
レジスタ600は、各プロセッサノード100において予備コアI/Oデバイスのコンフィグレーション空間に割り当てられた値(セグメント番号、最大バス番号、及び最小バス番号)を保持する。レジスタ600は、20ビットのレジスタである。本実施形態では、ビット19:16がセグメント番号を保持し、ビット15:8は最大バス番号を保持し、ビット7:0は最小バス番号を保持する。例えば、予備コアI/Oデバイスに割り当てるコンフィギュレーション空間のセグメント番号が3であり、バス番号の範囲がF0〜F2(16進数)である場合、レジスタ600の設定値は、3F2F0(16進数)になる。レジスタ600は、情報処理装置1の初期化時や、情報処理装置の運用中に行われる動的な構成変更時に、システムファームウェアまたはBMCファームウェアによって設定される。但し、レジスタ600の設定に関する詳細については当業者にとってよく知られており、また本発明とは直接関係しないので、詳細な説明は省略する。
【0052】
予備コアI/Oアクセス検出回路601は、プロセッサノード100が発行したトランザクションのアクセス先アドレスが予備コアI/Oデバイスであるか否かを検出する回路である。予備コアI/Oアクセス検出回路601は、プロセッサノード100により発行されたトランザクションに含まれるフリット信号530を取得し、フリット信号530がヘッダフリットであるか否かを判定する。フリット信号530がヘッダフリットである場合、すなわちストローブフィールドが01(2進数)である場合、予備コアI/Oアクセス検出回路601は、コマンドコードフィールドおよびアドレスフィールドの値を、予め定められた固定値及びレジスタ600が保持している値と比較し、比較結果に基づいて、検出結果信号611及びアドレス信号612を生成する。検出結果信号611は、1ビットの信号であり、アクセス先アドレスが予備コアI/Oデバイスである場合に、1になる。アドレス信号612は、予備コアI/Oデバイスに送出するヘッダフリットのアドレスフィールドに使用される値を示す信号である。
【0053】
予備コアI/Oアクセスフリット生成回路602は、フリット信号530がヘッダフリットである場合に、そのアドレスフィールドをアドレス信号612によって示される値に差し換え、変換後のヘッダフリット信号613として出力する。
【0054】
セレクタ603は、検出結果信号611が0ならばフリット信号530を選択し、検出結果信号611が1ならば変換後のヘッダフリット信号613を選択して、フリット信号540としてクロスバースイッチ520に出力する。
【0055】
続いて、本実施形態に係る情報処理装置1の動作方法について説明する。尚、本実施形態では、全てのプロセッサノード100〜115およびI/Oノード120〜127により、一つのパーティションが構成されているものとする(図1参照)。ここで、使用中のコアI/Oデバイスは、I/Oノード120に含まれるコアI/Oデバイスであるものとする。パーティションを動作させたままI/Oノード120を切り離したい場合、切り離しを行う前に、使用されるコアI/Oデバイスを変更する必要がある。本実施形態では、使用されるコアI/Oデバイスが、I/Oノード120のコアI/Oデバイスから、I/Oノード127のコアI/Oデバイスに切り替えられる場合の動作について、説明する。
【0056】
図12は、本実施形態に係る情報処理装置の動作方法を示すフローチャートである。
【0057】
ステップS1:コアI/Oデバイスの変更指示
まず、オペレータが、BMC(図4参照)を介して、情報処理装置1に対してコアI/Oデバイスの変更を指示する。オペレータとBMC間のユーザーインタフェースは、WEBUIなどで行われるが、本発明には直接関係しないため、説明を省略する。
【0058】
ステップS2:システムファームウェアの起動
コアI/Oデバイスの変更が指示されると、BMCで動作するBMCファームウェアから、複数のプロセッサ100〜115のいずれかに対して、割り込み処理として、コアI/Oデバイス変更指示が送られる。本実施形態では、プロセッサ100(図1参照)に対してコアI/Oデバイス変更指示が送られるものとする。プロセッサ100では、システムファームウェアが起動し、コアI/Oデバイス変更部が実現される。
【0059】
ステップS3:新規トランザクションの発行抑止
プロセッサ100では、抑止部11(図5参照)が、パーティション内の他のプロセッサ101〜115に対して、新規トランザクションの発行を抑止する。
【0060】
ステップS4:実行中トランザクションの完了を待機
また、抑止部11は、すべてのプロセッサ100〜115において実行中であるトランザクションの完了を待つ。新規トランザクションの発行の抑止と、実行中のトランザクションの完了の確認方法は、プロセッサの実装形態に依存し、本発明には直接関係しないため、説明しない。
【0061】
ステップS5:コピー
次に、プロセッサ100のコピー部12(図5参照)が、I/Oノード120のコアI/Oデバイス(使用コアI/Oデバイス)内のレジスタの内容を、I/Oノード127の予備コアI/Oデバイス(予備コアI/Oデバイス)に、コピーする。
【0062】
ステップS6:ルーティングの設定変更
次に、プロセッサ100のルーティング設定変更部13(図5参照)が、複数のプロセッサノード100〜115および複数のI/Oノード120〜127について、コアI/Oデバイスに関するルーティングの設定を変更する。これにより、I/Oノード120内の使用コアI/Oデバイスへ転送されていたトランザクションが、I/Oノード127内の予備コアI/Oデバイスに転送されるようになる。
【0063】
ステップS7:トランザクションの発行抑止の解除
次に、プロセッサ100の解除部14が、他のプロセッサ101〜115についてトランザクションの発行抑止を解除し、プロセッサ100の制御をOSに返す。
【0064】
以上のステップS1〜S7の動作により、パーティションにおいて使用されるコアI/Oデバイスが、I/Oノード120内のコアI/Oデバイスから、I/Oノード127内のコアI/Oデバイスに変更される。
【0065】
続いて、ステップS5における動作について、具体例を用いて、より詳細に説明する。各コアI/Oデバイス内のレジスタは、各コアI/Oデバイス内において、メモリ空間、I/O空間、及びコンフィグレーション空間のいずれかにマップされる。従って、本実施形態ではそれぞれの場合の具体例について、具体例1乃至3を用いて説明する。尚、プロセッサ100から見たときのメモリ空間には、図6及び図7に示した状態で、各空間がマップされているものとする。
【0066】
<具体例1>
具体例1では、コピー元レジスタが、コアI/Oデバイス内におけるメモリ空間にマップされたレジスタである場合について説明する。尚、使用コアI/Oデバイスにおいてコピー元レジスタに割り当てられたアドレスは、FED00040(16進数)であるものとし、コピー元レジスタには4バイトのデータが格納されているものとする。
【0067】
まず、プロセッサ100では、コピー部12が、使用コアI/OデバイスのMMIO空間(図6参照)を用いて、アドレスFED00040(16進数)へのメモリリードトランザクションを発行する。メモリリードトランザクションは、ノード制御装置130を経由して、I/Oノード120に転送される。I/Oノード120内では、I/O制御装置300(図3参照)を介して、コアI/Oデバイス314にメモリリードトランザクションが転送される。使用コアI/Oデバイス314は、メモリ空間のFED00040(16進数)にマップされるレジスタ(コピー元レジスタ)に格納されたデータをリードする。リードされたデータは、リプライとしてI/O制御装置300に返却され、ノード制御装置130を介してプロセッサ100に転送される。
【0068】
プロセッサ100では、コピー部12が、リードしたデータをライトするライトトランザクションを発行する。ここで、コピー部12は、予備コアI/OデバイスのMMIO空間(図6参照)におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、使用コアI/Oデバイスにおいて割り当てられたコピー元レジスタのアドレスFED00040に、予備コアI/OデバイスのMMIO空間のベースアドレス200000000000を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、アドレス2000FED00040(16進数)をアクセス先アドレスとして、ライトトランザクションを発行する。発行されたライトトランザクションは、ノード制御装置130に転送される。
【0069】
ノード制御装置103では、ポート入力部500(図11参照)がライトトランザクションを取得する。ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを変換する。以下に、予備コアI/Oアクセス制御回路620の動作について、詳述する。図13A及び図13Bは、予備コアI/Oアクセス制御回路620の動作を示すフローチャートである。
【0070】
ステップS11:
予備コアI/Oアクセス制御回路620では、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する。すなわち、予備コアI/Oアクセス検出回路601は、トランザクションのパケットのヘッダフリットを確認する。予備コアI/Oアクセス検出回路601は、コマンドフィールド(図8参照)が、メモリ空間アクセス(メモリライト)を示すコマンドであるか否かを確認する。また、予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:32が、2000(16進数)であるかを確認する。図6に示したように、ビット47:32が2000(16進数)である場合には、アクセス先アドレスが予備コアI/Oデバイスのメモリ空間であることになる。トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間である場合、次のステップS12の処理が行われる。トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間ではない場合、ステップS14の処理が行われる。
【0071】
本具体例では、コマンドフィールドがメモリ空間アクセスのコマンド(メモリライト)であり、アドレスフィールドのビット47:32は2000(16進数)である。従って、予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間であると判断し、ステップS12の処理を行う。尚、ステップS14の処理が行われる場合の動作については、具体例2及び3において説明する。
【0072】
ステップS12:
予備コアI/Oアクセス検出回路601は、アドレスフィールドの値を、使用コアI/Oデバイスにおいてコピー先レジスタに割り当てられた値に差し換え、アドレス信号612(図11参照)として出力する。具体的には、予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:32を0000(16進数)に差し替え、アドレス信号612として出力する。すなわち、本具体例では、アドレス信号612として、0000FED00040(16進数)を示す信号が出力される。すなわち、アドレス信号612として、アクセス先のアドレス2000FED00040(16進数)から、予備コアI/OデバイスのMMIO空間のベースアドレス200000000000(図6参照)を減じたアドレスが、出力される。
【0073】
ステップS13:
また、予備コアI/Oアクセス検出回路601は、検出結果信号611(図11参照)として1を示す値を出力する。
【0074】
その後、予備コアI/Oアクセスフリット生成回路602が、アドレス信号612を取得する。予備コアI/Oアクセスフリット生成回路602は、ヘッダフリット530のアドレスフィールドをアドレス信号612によって示される値に差し替え、変換後のヘッダフリット信号613を生成する。変換後のヘッダフリット信号613は、セレクタ603に通知される。
【0075】
セレクタ603は、既述のように、検出結果信号611が1であるときに変換後のヘッダフリット信号613を選択し、検出結果信号611が0のときにはフリット信号530を出力するように構成されている。本具体例では、検出結果信号611として1を示す信号が供給される。従って、セレクタ603は、変換後のヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520に向けて出力する。これにより、プロセッサノード100により発行されたライトトランザクションのアクセス先アドレスが、2000FED00040(16進数)からFED00040(16進数)に変更される。
【0076】
変換後のライトトランザクションは、ノード制御装置133(図1参照)を介して、I/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/Oデバイス314に変換後のライトトランザクションが転送される。コアI/Oデバイス314内では、メモリ空間のアドレスFED00040(16進数)にマップされるレジスタ(コピー先レジスタ)に、4バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0077】
以上により、使用コアI/Oデバイスにおけるメモリ空間のアドレスFED00040(16進数)にマップされるレジスタから、予備コアI/Oデバイスにおけるメモリ空間のアドレスFED00040(16進数)にマップされるレジスタに、データがコピーされる。
【0078】
<具体例2>
次いで、具体例2について説明する。具体例2では、コピー元レジスタが、使用コアI/OデバイスにおけるI/O空間にマップされるレジスタである場合について説明する。コピー元レジスタは、I/O空間のアドレス00C0にマップされており、1バイトのデータを保持しているものとする。
【0079】
プロセッサ100では、コピー部12が、使用コアIOデバイスのI/O空間(図6参照)を利用して、アドレス00C0(16進数)のリードトランザクションを発行する。リードトランザクションは、ノード制御装置130を経由してI/Oノード120に転送される。I/Oノード120内では、I/O制御装置300を介してコアI/O314にトランザクションが転送され、I/O空間の00C0(16進数)にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてI/O制御装置300に返却され、ノード制御装置130を経由してプロセッサ100に転送される。
【0080】
次に、コピー部12は、リードした1バイトの値をライトするライトトランザクションを発行する。ここで、コピー部12は、予備コアI/OデバイスのIO空間(図6参照)におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、使用コアI/Oデバイスにおいて割り当てられたコピー元レジスタのアドレス00C0に、予備コアI/OデバイスのIO空間のベースアドレス2000200000000を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、アドレス2002000000C0(16進数)をアクセス先アドレスとして、ライトトランザクションを発行する。ライトトランザクションは、ノード制御装置130に転送され、ノード制御装置130のポート入力部500に入力される。
【0081】
ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアI/Oアクセス制御回路620では、図13A及び図13Bに示したフローチャートによって、処理が行われる。すなわち、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する(ステップS11)。本具体例では、トランザクションの予備コアI/Oデバイスのメモリ空間ではないので、ステップS14の処理が実行される。ステップS14以降の処理について、以下に詳述する。
【0082】
ステップS14:
予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が、予備コアI/OにおけるI/O空間であるか否かを判定する。すなわち、予備コアI/Oアクセス検出回路601は、ヘッダフリットのコマンドフィールドがI/O空間アクセスのコマンドであるか否かを判定する。また、アドレスフィールドのビット47:12が、200200000(16進数)であるか否かを確認する。ビット47:12が200200000(16進数)であれば、アクセス先は予備コアI/Oデバイスであることになる(図6参照)。トランザクションのアクセス先が予備コアI/OデバイスにおけるI/O空間である場合、次のステップS15の処理が実行される。そのアクセス先が予備コアI/OデバイスにおけるI/O空間でない場合、ステップS16の処理が実行される。
【0083】
本具体例では、コマンドフィールドがI/O空間アクセスのコマンドであり、アドレスフィールドのビット47:12が200200000(16進数)である。従って、予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が予備コアI/OデバイスのI/O空間であると判断し、ステップS15の処理を行う。尚、ステップS16の処理が行われる場合の動作については、具体例3において説明する。
【0084】
ステップS15:
予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:12を000000000(16進数)に差し替え、アドレス信号612として出力する。すなわち、アドレス信号612として、0000000000C0を示す信号を出力する。すなわち、アドレス信号612として、アクセス先のアドレス2002000000C0(16進数)から、予備コアI/OデバイスのIO空間のベースアドレス200200000000(図6参照)を減じたアドレスが、出力される。
【0085】
また、予備コアI/Oアクセス検出回路601は、検出結果信号611として、1を示す信号を出力する(ステップS13)。予備コアI/Oアクセスフリット生成回路は、ヘッダフリットのアドレスフィールドをアドレス信号612に差し替え、ヘッダフリット信号613として出力する。セレクタ603は、検出結果信号611が1であるため、ヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520へ出力する。これにより、トランザクションのアクセス先アドレスが、2002000000C0(16進数)から00C0(16進数)に変更される。
【0086】
ノード制御装置130から出力されたライトトランザクションは、ノード制御装置133を経由してI/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/O314にトランザクションが転送され、I/O空間の00C0(16進数)にマップされるレジスタに、1バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0087】
以上の動作により、使用コアI/OデバイスにおけるI/O空間のアドレス00C0(16進数)にマップされたレジスタから、予備コアI/OデバイスにおけるI/O空間のアドレス00C0にマップされるレジスタに、データがコピーされる。
【0088】
<具体例3>
次いで、具体例3について説明する。具体例3では、コピー元レジスタが、コンフィグレーション空間(図7参照)にマップされるレジスタである場合について説明する。コピー元レジスタは、コンフィグレーション空間におけるセグメント番号0(16進数)、バス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされる4バイトのレジスタであるものとする。また、コンフィグレーション空間のベースアドレスは、1000であるものとする。この場合、コピー元レジスタのアドレスは、1000000000A0になる。また、予備コアI/Oデバイスに割り当てられるコンフィグレーション空間は、セグメント番号が3(16進数)であり、バス番号がF0〜F2(16進数)であるものとする。すなわち、レジスタ600(図11参照)には、3F2F0(16進数)が設定されているものとする。
【0089】
プロセッサ100では、コピー部12が、コンフィグレーション空間のアドレス1000000000A0(16進数)から、4バイトのデータをリードする。プロセッサ100からアドレス1000000000A0(16進数)へのコンフィグレーションリードが発行されると、ノード制御装置130を経由してI/Oノード120へトランザクションが転送される。I/Oノード120内では、I/O制御装置300を経由してコアI/Oデバイス314にトランザクションが転送される。コアI/Oデバイス314では、コンフィグレーション空間のバス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてI/O制御装置300に返却され、ノード制御装置130を経由してプロセッサ100に転送される。
【0090】
次に、コピー部12は、リードした4バイトの値を、コンフィグレーション空間のアドレス10003F0000A0(16進数)に書き込む旨を示すライトトランザクションを発行する。10003F0000A0(16進数)によって示されるアドレスは、セグメント番号3(16進数)、バス番号F0(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)である。ライトトランザクションは、ノード制御装置130に転送され、ノード制御装置130のポート入力部500に入力される。
【0091】
ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアI/Oアクセス制御回路620では、図13A及び図13Bに示したフローチャートによって、処理が行われる。すなわち、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する(ステップS11)。本具体例では、アクセス先はトランザクションの予備コアI/Oデバイスのメモリ空間ではないので、ステップS14の処理が実行される。ステップS14では、予備コアI/Oアクセス検出回路により、トランザクションのアクセス先が、予備コアI/OデバイスのI/O空間であるか否かが確認される。本具体例では、アクセス先はI/O空間ではないので、ステップS16の処理が実行される。ステップS16以降の処理について、以下に詳述する。
【0092】
ステップS16:
予備コアI/Oアクセス検出回路601は、トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであるか否かを判定する。具体的には、予備コアI/Oアクセス検出回路は、トランザクションのヘッダフリットをチェックし、コマンドフィールドが、コンフィグレーション空間アクセスのコマンドであるか否かを確認する。また、予備コアI/Oアクセス検出回路601は、アドレスフィールドにおけるセグメント番号およびバス番号が、レジスタ600によって指定される範囲に含まれるか否かをチェックする。
【0093】
トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであるである場合、次のステップS17の処理が行われる。トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものではない場合、予備コアI/Oアクセス検出回路601は、アドレス信号612として0を示す信号を出力し(ステップS18)、検出結果信号611として0を示す信号を出力する(ステップS19)。
【0094】
本具体例では、コマンドフィールドは、コンフィグレーション空間アクセスのコマンドである。また、アドレスフィールドにおけるセグメント番号は、3(16進数)であり、レジスタ600のビット19:16に一致する。更に、アドレスフィールドにおけるバス番号は、F0(16進数)であり、レジスタ600のビット15:8以下であり、ビット7:0以上である。従って、予備コアI/Oアクセス検出回路601は、トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであると判断し、次のステップS17の処理が行われる。
【0095】
ステップS17:
予備コアI/Oアクセス検出回路601は、アドレスフィルールドのバス番号について、レジスタ600に記載された最小バス番号を減じ、減じた後のアドレスフィールドの値を示す信号を、アドレス信号612として出力する。すなわち、アドレス信号612として、1000300000A0(16進数)を示す信号が出力される。
【0096】
また、予備コアI/Oアクセス検出回路601は、検出結果信号611として、1を示す信号を出力する。予備コアI/Oアクセスフリット生成回路602は、ヘッダフリットのアドレスフィールドをアドレス信号612に差し替え、変換後のヘッダフリット信号613を生成する。セレクタ603は、検出結果信号611が1を示すため、変換後のヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520に出力する。これにより、トランザクションのアドレスが、10003F0000A0(16進数)から1000300000A0(16進数)に変更される。
【0097】
ノード制御装置130から出力されたトランザクションは、ノード制御装置133を経由してI/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/Oデバイス314にトランザクションが転送される。コアI/Oデバイス314においては、コンフィグレーション空間のバス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタに、4バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0098】
以上の処理により、コアI/Oデバイスにおいて、コンフィグレーション空間のセグメント番号0(16進数)、バス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタが、コピーされる。
【0099】
以上説明したように、本実施形態によれば、使用コアI/Oデバイスにおけるコピー元レジスタのアドレスと、予備コアI/Oデバイスにおけるコピー先レジスタのアドレスとを、同一にすることができる。これにより、使用中のコアI/Oデバイスを含むI/Oノードを切り離す場合であっても、パーティションを再起動することなく、使用するコアI/Oデバイスを予備のコアI/Oデバイスに変更することができ、情報処理装置の可用性を向上させることができる。
【符号の説明】
【0100】
10:マップ部
11:抑止部
12:コピー部
13:ルーティング設定変更部
14:解除部
100〜115:プロセッサノード
120〜127:I/Oノード
130〜133:ノード制御装置
160:インタフェース
200〜201:パーティション
300:I/O制御装置
310〜313:I/Oデバイス
314:コアI/O
320〜324:インタフェース
400:制御LSI
410:BMC
411:Super I/O
412:BIOS ROM
420〜422:インタフェース
500〜508:ポート入力部
510〜518:ポート出力部
520:クロスバースイッチ
530:フリット信号
540:フリット信号
600:レジスタ
601:予備コアI/Oアクセス検出回路
602:予備コアI/Oアクセスフリット生成回路
603:セレクタ
611:検出結果信号
612:アドレス信号
613:ヘッダフリット信号
620:予備コアI/Oアクセス制御回路
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理装置の動作方法に関する。
【背景技術】
【0002】
複数のプロセッサノード及び複数のI/Oノードを有する情報処理装置では、プロセッサノードとI/Oノードとを任意に組み合わせることにより、複数のパーティションが構成されることがある。各パーティションでは、独立にOSが動作する。各I/Oノードには、コアI/Oデバイスが設けられる。各パーティションにI/Oノードが複数含まれる場合には、いずれかのI/Oノードに含まれるコアI/Oデバイスのみが使用される。ここで、パーティションにおいて使用されているコアI/Oデバイスを切り替えたいという要求がある。
【0003】
関連技術として、特許文献1(特開2008−225534号公報)に記載された動的縮退装置が挙げられる。この動的縮退装置は、マスターデバイスとスレーブデバイスとに二重化されたI/Oデバイスの動的縮退装置であり、トランザクションを受信し、ルーティングし、送出するトランザクションルーティングコントローラと、I/Oデバイスの二重化が有効であることを示す有効情報と、当該有効情報に関連付けられた二つの識別情報であって、前記マスターデバイスへの経路を示すマスターデバイス識別情報と、スレーブデバイスへの経路を示すスレーブデバイス識別情報とを有するルーティングテーブルと、トランザクションルーティングコントローラとルーティングテーブルとを制御するサービスプロセッサとを具備する。
【0004】
他の関連技術として、特許文献2(特許第4165423号)に記載されたシステムボードが挙げられる。このシステムボードは、コアI/Oカードとの間にPCIバスを複数有する。各PCIバスには、1つの同一のコアI/Oカードが実装される。更に、各コアI/Oカードには、同一の入出力機器が接続されている。各コアI/Oカードは、入出力機器に関する情報及び入出力機器を制御するプログラムを記憶する記憶手段と、入出力機器を制御する入出力機器制御手段とを有する。記憶手段は、入出力機器制御手段と接続され、入出力機器制御手段は、PCIバスに接続されている。これにより、コアI/Oカードを二重化することが可能となり、障害等により使用していたコアI/Oカードが切り離された場合でも、他方のコアI/Oカードを利用してリブートすることが可能になる。
【0005】
更に他の関連技術として、特許文献3(特開2006−72492号公報)に記載されたシステム制御装置が挙げられる。このシステム制御装置は、コンピュータシステムに含まれる複数のデバイスを制御するシステム制御装置である。システム制御装置は、運用中のコアデバイスブリッジの配下に接続されたデバイスに記憶されるBIOSおよびシステムの構成情報を含んだシステム情報を取得するシステム情報取得手段と、取得したシステム情報を保持するシステム情報保持手段と、運用デバイスブリッジが故障した場合に、代用バスブリッジの配下に接続されたデバイスに、システム情報を記憶させ、運用デバイスブリッジを代用デバイスブリッジに切り替える切り替え処理手段とを備える。
【0006】
更に他の関連技術として、特許文献4(特開2009−193469号公報)に記載された動的切替え装置が挙げられる。この動的切替え装置は、I/Oデバイスへのルーティングが有効であることを示す有効ビットに関する情報、及びI/Oデバイスへのルーティング経路情報を格納したルーティングテーブルと、トランザクションを受け取り、ルーティングテーブルを参照し、有効ビットが偽である場合、トランザクションの送出を抑止し、有効ビットが真である場合、ルーティング経路情報に従い、I/Oデバイスに対してトランザクションを送出し、I/Oデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するトランザクションルーティングコントローラとを具備する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−225534号公報
【特許文献2】特許第4165423号
【特許文献3】特開2006−72492号公報
【特許文献4】特開2009−193469号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
各パーティション内において、使用中のコアI/Oデバイスを切り替える場合には、当該パーティションの再起動が必要になる。そのため、情報処理装置の可用性が損なわれてしまう。
【0009】
特許文献1に記載される動的縮退装置では、運用中に一方のI/Oデバイスを縮退することができる。しかしながら、予備のコアI/Oデバイスを常に稼動させておかなければならない。
【0010】
また、特許文献2及び特許文献3には、コアI/Oを二重化することにより、障害発生時に使用するコアI/Oを切り替える点が記載されている。しかし、切り替えにはシステムの再立ち上げが必要であり、システムの運用中において使用するコアI/Oを切り替える点については、記載がない。
【0011】
また、特許文献4には、I/Oデバイスの切替が発生した場合の処理については記載されているが、システムの運用中においてどのように使用するコアI/Oを切り替えるかについては、記載されていない。
【0012】
従って、本発明の課題は、パーティションを再起動することなく、使用するコアI/Oデバイスを切り替えるができる、情報処理装置及び情報装置の動作方法を提供することにある。
【課題を解決するための手段】
【0013】
本発明に係る情報処理装置は、複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置である。前記各プロセッサノードは、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするマップ部と、使用コアI/O変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーする、コピー部と、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備える。前記ノード制御装置は、予備コアI/Oアクセス制御回路を備える。前記コピー部は、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行する。前記予備コアI/Oアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知する。
【0014】
本発明に係る情報処理装置の動作方法は、複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置の動作方法である。この動作方法は、前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするステップと、前記各プロセッサノードが、使用コアI/O変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするステップと、前記各プロセッサノードが、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するステップと、前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップとを具備する。前記コピーするステップは、前記プロセッサノードが、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知するステップとを含む。
【発明の効果】
【0015】
本発明によれば、パーティションを再起動することなく、使用するI/Oノードを変更することができる、情報処理装置及び情報装置の動作方法が提供される。
【図面の簡単な説明】
【0016】
【図1】情報処理装置1を示す概略図である。
【図2】パーティションを示す概略図である。
【図3】各I/Oノードの構成の一例を示す図である。
【図4】コアI/Oデバイスの構成の一例を示す図である。
【図5】各プロセッサノードの機能構成を示す概略図である。
【図6】各プロセッサノードから見たときのメモリ空間を示す概念図である。
【図7】コンフィグレーション空間を示す概念図である。
【図8】フリットの転送フォーマットを示す概念図である。
【図9】コンフィグレーション空間にアクセスする場合のアドレスフィールドのフォーマットの一例を示す図である。
【図10】ノード制御装置の構成の一例を示す図である。
【図11】ポート入力部の詳細を示す図である。
【図12】情報処理装置の動作方法を示すフローチャートである。
【図13A】予備コアI/Oアクセス制御回路の動作を示すフローチャートである。
【図13B】予備コアI/Oアクセス制御回路の動作を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【0018】
図1は、本実施形態に係る情報処理装置1を示す概略図である。図1に示されるように、情報処理装置1は、複数(16個)のプロセッサノード100〜115、複数(8個)のI/Oノード120〜127、及び複数(4個)のノード制御装置130〜133を備えている。各ノード制御装置には、4個のプロセッサノードと、2個のI/Oノードとが接続されている。4個のノード制御装置130〜133は、互いに1:1で接続されている。尚、プロセッサノード等の数はあくまで一例である。すなわち、本発明は、図1に示した情報処理装置1よりも小規模な構成(例えば、プロセッサノード2個、ノード制御装置1個、I/Oノード2個の構成)に対しても適用可能であり、より大規模の構成(例えば、プロセッサノード64個、I/Oノード32個、ノード制御装置16個の構成)に対しても適用可能である。
【0019】
図1には示されていないが、各プロセッサノード100〜115は、少なくとも一のプロセッサ、及び主記憶装置を有している。
【0020】
図1に示されるように、各I/Oノードには、コアI/Oデバイスが含まれている。同一パーティション内に複数のI/Oノードが含まれる場合には、いずれかのI/Oノードに含まれるコアI/Oデバイスのみが、使用される。
【0021】
各ノード制御装置は、ノード間における通信制御を行なう機能を有している。各ノード制御装置には、予備コアI/Oアクセス制御回路620が設けられている。
【0022】
本実施形態に係る情報処理装置1では、任意のプロセッサノードと任意のI/Oノードを組み合わせることにより、1以上のパーティションを構成することができる。各パーティションでは、それぞれ独立して、OSが動作する。図2は、複数のパーティションの一例を示す図である。図2に示される例では、情報処理装置1が、パーティション200及びパーティション201に区切られている。パーティション200は、プロセッサノード100、101、104、105、I/Oノード120及び122によって構成されている。パーティション201は、プロセッサノード102、103、106、107、108〜115、I/Oノード121、123、124〜127によって構成されている。
【0023】
ここで、本実施形態においては、パーティションを再起動することなく、使用されているコアI/Oデバイス(使用コアI/Oデバイス)を別のコアI/Oデバイス(予備コアI/Oデバイス)に切り替えることができるように、工夫が施されている。具体的には、コアI/Oデバイスを切り替える旨の指示(使用コアI/Oデバイス変更指示)が与えられた場合に、複数のプロセッサノードのうちのいずれかが、使用コアI/Oデバイスに含まれるレジスタ(コピー元レジジスタ)に格納されたデータを、予備コアI/Oデバイスに含まれるレジスタ(コピー先レジスタ)にコピーする。この際、データは、使用コアI/Oデバイスにおいてコピー元レジスタに与えられたアドレスと、予備コアI/Oデバイスにおいてコピー先レジスタに与えられたアドレスとが同一になるように、コピーされる。
【0024】
詳細には、各プロセッサノードから見たときのメモリ空間には、使用コアIO/デバイスと予備コアI/Oデバイスとが、別々にマップされている。すなわち、各プロセッサノードにおいては、コピー元レジスタとコピー先レジスタとは異なるアドレスに割り当てられている。各プロセッサノードは、コピー元レジスタからデータを読み出した後、読み出したデータをコピー先レジスタに書き込む旨を示すライトトランザクションを発行する。ライトトランザクションは、ノード制御装置に供給される。ノード制御装置では、予備コアI/Oアクセス制御回路620が、ライトトランザクションに記載されたアクセス先アドレスを、使用コアI/Oにおいてコピー元レジスタに与えられたアドレスと同一になるように、変換する。変換後のライトトランザクションは、予備コアI/Oデバイスに通知される。これにより、予備コアI/Oデバイスにおいて、コピー元レジスタと同一のアドレスが割り当てられたレジスタに、データが書き込まれる。すなわち、使用コアI/Oデバイスと予備コアI/Oデバイスとの間において、同一のアドレスに同一のデータが格納される。使用コアI/Oデバイス及び予備コアI/Oデバイスが業界標準のコアI/Oデバイスであれば、使用コアI/Oデバイスに対するアクセスアドレスと同一のアドレスで予備コアI/Oデバイスにアクセスすることが可能となり、再起動を行なうことなく、使用するコアI/Oデバイスを切り替えることが可能になる。
【0025】
以下に、本実施形態に係る情報処理装置1について、詳細に説明する。
【0026】
まず、各I/Oノードについて説明する。
【0027】
図3は、各I/Oノード120の構成の一例を示す図である。各I/Oノード120は、I/O制御装置300、4個のI/Oデバイス310〜313、及びコアI/Oデバイス314を有している。I/O制御装置300は、インタフェース160を介して、ノード制御装置130に接続されている。また、I/Oデバイス310〜313は、それぞれインタフェース320〜323を介して、I/O制御装置300に接続されている。同様に、コアI/Oデバイス314は、インタフェース324を介して、I/O制御装置300に接続されている。インタフェース320〜323は、PCI−ExpressなどのPCIの仕様に準拠する。インタフェース324は、PCI−ExpressなどのPCIの使用に準拠するか、独自のプロトコルを持つ。
【0028】
図4は、コアI/Oデバイス314の構成の一例を示す図である。コアI/Oデバイス314は、1個の制御LSI400、1個のBMC(Baseboard Management Controller)410、1個のSuper I/O411、及び1個のBIOS ROM412を有している。制御LSI400は、インタフェース324を介して、I/O制御装置300に接続されている。BMC410、Super I/O411、及びBIOS ROM412は、それぞれインタフェース420〜422を介して、制御LSI400に接続されている。
【0029】
図示されていないが、制御LSI400は、USB制御部、HDD制御部、BMCインタフェース制御部、Super I/Oインタフェース制御部、及びBIOS ROMインタフェース制御部を有しており、それぞれの制御部には、複数の制御用のレジスタが設けられている。
【0030】
次いで、各プロセッサノードについて説明する。
【0031】
図5は、各プロセッサノードの機能構成を示す概略図である。既述のように、各プロセッサノードは、少なくとも一のプロセッサ、及び主記憶装置を有している。各プロセッサノードでは、OSが動作している。また、図5に示されるように、各プロセッサノードでは、システムファームウェアにより、コアI/O変更部が実現される。コアI/O変更部は、使用されているコアI/Oデバイスを切り替える機能を有している。コアI/O変更部は、マップ部10、抑止部11、コピー部12、ルーティング設定変更部13、及び解除部14を有している。
【0032】
マップ部10は、予め(例えばパーティションの起動時等)、各プロセッサノードから見たときのメモリ空間(パーティション全体から見たときのメモリ空間)に、使用コアI/Oデバイスに対応するアドレス空間(使用中コアI/O用空間)と、予備コアI/Oデバイスに対応するアドレス空間(予備コアI/O用空間)とをマップする機能を有している。
【0033】
図6は、各プロセッサノードから見たときのメモリ空間を示す概念図である。図6に示されるように、このメモリ空間には、使用コアI/OデバイスのIO空間、使用コアI/OデバイスのMMIO(Memory Mapped Input Output)空間、予備コアI/OデバイスのIO空間、および予備コアI/OデバイスのMMIO空間がマップされている。本実施形態では、予備コアI/OデバイスのMMIO空間は、4Gバイトのサイズであり、アドレス200000000000〜2000FFFFFFFF(16進数)にマップされている。また、予備コアIOのIO空間は、4Kバイトのサイズであり、アドレス200200000000〜200200000FFF(16進数)にマップされている。マップ先のベースアドレスおよびサイズは、固定的に設定されていてもよいし、変更可能に設定されていてもよい。
【0034】
また、マップ部10は、メモリ空間に、各I/Oノードのコンフィグレーション空間をマップする機能を有している。図7は、マップされたコンフィグレーション空間を示す概念図である。図7に示されるように、メモリ空間には、複数のI/Oノードのコンフィグレーション空間が、連続的にマップされている。各コンフィグレーション空間には、セグメント番号、及びバス番号(最大バス番号及び最小バス番号)が割り当てられている。バス番号は、複数のコンフィグレーション空間の間で重複しないように、割り当てられている。
【0035】
再び図5を参照する。抑止部11は、新規トランザクションの発行を抑止する部分である。抑止部11は、使用コアI/O変更指示が与えられた場合に起動し、新規トランザクションの発行を抑止する。
【0036】
コピー部12は、新規トランザクションの発行が抑止された後に、使用コアI/Oデバイスのコピー元レジスタに格納されたデータを、予備コアI/Oデバイスのコピー先レジスタにコピーする機能を有している。コピー部12は、使用中コアI/O用空間におけるアドレス(コピー元アドレス)で使用コアI/Oデバイスにアクセスし、コピー元レジスタに格納されたデータを読み出す。そして、コピー部12は、予備コアI/O用空間からコピー元アドレスに対応したアドレスを選択し、選択したアドレスをアクセス先アドレスとして、読み出したデータを書き込む旨ためのライトトランザクションを発行する。
【0037】
ルーティング設定変更部13は、複数のプロセッサノード100〜115及び複数のI/Oノード120〜127に対して、コアI/Oに関するルーティングの設定を変更する機能を有している。ルーティング設定変更部13は、コピー部12によるコピーが完了した後に、ルーティング設定を変更する。
【0038】
解除部14は、複数のプロセッサ101〜115についてトランザクションの発行抑止を解除する部分である。解除部14は、ルーティング設定変更部13によるルーティング設定の変更が完了した後に、新規トランザクションの発行抑止を解除する。
【0039】
ここで、本実施形態に係る情報処理装置1における情報の転送フォーマットについて説明する。
【0040】
本実施形態では、各ノードにおいて発行されたトランザクションが、パケット単位で送受信される。パケットは、論理的な情報の転送単位であり、ひとつ以上のフリットから構成されるものと定義される。フリットは固定のビット幅を持ち、本実施形態ではビット幅が90ビットであるものとする。フリットには、ヘッダフリット、及びデータフリットの2種類が存在する。
【0041】
図8は、各フリットの転送フォーマットを示している。各フリットのビット89:88はストローブであり、フリットが有効であること、および、フリットの種類を示している。ストローブが00(2進数)の場合はフリットが無効であることを示し、01(2進数)の場合はヘッダフリットであることを示し、10(2進数)の場合はデータフリットであることを示す。このコード定義は一例である。パケットは、1個のヘッダフリットと、0個、1個、2個、4個または8個のデータフリットから構成される。よって、本実施形態において、パケットは、最小では1個のフリットから構成され、最大では9個のフリットから構成される。フリットには、エラーの検出や訂正の目的でECCやパリティが付加されるが、本発明とは直接関係しないので、その詳細は省略する。ヘッダフリットのビット87:0には、それぞれ8ビットの5個のフィールドと48ビットのアドレスフィールドが定義される。これらのフィールド定義は一例であり、情報処理装置のリソース、プロトコルおよびトポロジーに依存して決定される。
【0042】
コマンドコードは、ターゲットの装置に対する動作を指定するコードが格納されるフィールドである。指定される動作としては、例えば、メモリリード、メモリライト、I/Oリード、I/Oライト、コンフィグレーションリード、コンフィグレーションライト、リプライ、及びコンプリーションが挙げられる。
【0043】
ソースノードIDは、パケットの転送元のプロセッサノードまたはI/Oノードを識別する固有の番号(ノードIDと呼ぶ)が格納されるフィールドである。ターゲットノードIDは、パケットの転送先のプロセッサノードまたはI/Oノードまたはノード制御装置を識別するノードIDが格納されるフィールドである。
【0044】
データレングスは、パケットがリードリクエストの場合に、ターゲットのデータレングスをバイト単位で指定するフィールドである。00(16進数)〜40(16進数)の場合、0〜64バイトを指定する。他の値は未定義である。
【0045】
アドレスは、リクエストのアクセス先アドレスを格納するフィールドである。
【0046】
データフリットのビット71:64には、バイトイネーブルが定義され、ビット63:0に定義される各バイトの有効または無効を指定する。
【0047】
図9は、コンフィグレーション空間にアクセスする場合における、アドレスフィールドのフォーマットの一例を示す図である。ビット47:32は、コンフィグレーション空間がメモリ空間にマップされるときのベースアドレスである。ビット31:28は、ひとつのパーティションで複数のコンフィグレーション空間を使用する場合のセグメント番号である。本実施例ではセグメント番号は4ビットなので最大で16個のセグメントを使用することができる。ビット27:0は、PCI仕様に準拠するフィールドであり、それぞれ、バス番号、デバイス番号、ファンクション番号、拡張レジスタ番号、及びレジスタアドレスを示している。
【0048】
続いて、ノード制御装置130について説明する。
【0049】
図10は、ノード制御装置130の構成の一例を示す図である。本実施形態では、ノード制御装置130は、9個のポート入力部500〜508、9個のポート出力部510〜518、及びクロスバースイッチ520を有している。ここで、一組のポート入力部とポート出力部とによって、ポートが定義される。例えばプロセッサノード100に接続されるポートは、ポート入力部500とポート出力部510とによって構成される。ノード制御装置130に含まれる9個のポートは、それぞれ、プロセッサノード100〜103、I/Oノード120〜121、ノード制御装置131〜133に接続されている。
【0050】
図11は、ポート入力部500の詳細を示す図である。ポート入力部500〜503は、同じ構成である。図11に示されるように、ポート入力部500は、予備コアI/Oアクセス制御回路620を備えている。予備コアI/Oアクセス制御回路620は、レジスタ600、予備コアI/Oアクセス検出回路601、予備コアI/Oアクセスフリット生成回路602、及びセレクタ603を備えている。
【0051】
レジスタ600は、各プロセッサノード100において予備コアI/Oデバイスのコンフィグレーション空間に割り当てられた値(セグメント番号、最大バス番号、及び最小バス番号)を保持する。レジスタ600は、20ビットのレジスタである。本実施形態では、ビット19:16がセグメント番号を保持し、ビット15:8は最大バス番号を保持し、ビット7:0は最小バス番号を保持する。例えば、予備コアI/Oデバイスに割り当てるコンフィギュレーション空間のセグメント番号が3であり、バス番号の範囲がF0〜F2(16進数)である場合、レジスタ600の設定値は、3F2F0(16進数)になる。レジスタ600は、情報処理装置1の初期化時や、情報処理装置の運用中に行われる動的な構成変更時に、システムファームウェアまたはBMCファームウェアによって設定される。但し、レジスタ600の設定に関する詳細については当業者にとってよく知られており、また本発明とは直接関係しないので、詳細な説明は省略する。
【0052】
予備コアI/Oアクセス検出回路601は、プロセッサノード100が発行したトランザクションのアクセス先アドレスが予備コアI/Oデバイスであるか否かを検出する回路である。予備コアI/Oアクセス検出回路601は、プロセッサノード100により発行されたトランザクションに含まれるフリット信号530を取得し、フリット信号530がヘッダフリットであるか否かを判定する。フリット信号530がヘッダフリットである場合、すなわちストローブフィールドが01(2進数)である場合、予備コアI/Oアクセス検出回路601は、コマンドコードフィールドおよびアドレスフィールドの値を、予め定められた固定値及びレジスタ600が保持している値と比較し、比較結果に基づいて、検出結果信号611及びアドレス信号612を生成する。検出結果信号611は、1ビットの信号であり、アクセス先アドレスが予備コアI/Oデバイスである場合に、1になる。アドレス信号612は、予備コアI/Oデバイスに送出するヘッダフリットのアドレスフィールドに使用される値を示す信号である。
【0053】
予備コアI/Oアクセスフリット生成回路602は、フリット信号530がヘッダフリットである場合に、そのアドレスフィールドをアドレス信号612によって示される値に差し換え、変換後のヘッダフリット信号613として出力する。
【0054】
セレクタ603は、検出結果信号611が0ならばフリット信号530を選択し、検出結果信号611が1ならば変換後のヘッダフリット信号613を選択して、フリット信号540としてクロスバースイッチ520に出力する。
【0055】
続いて、本実施形態に係る情報処理装置1の動作方法について説明する。尚、本実施形態では、全てのプロセッサノード100〜115およびI/Oノード120〜127により、一つのパーティションが構成されているものとする(図1参照)。ここで、使用中のコアI/Oデバイスは、I/Oノード120に含まれるコアI/Oデバイスであるものとする。パーティションを動作させたままI/Oノード120を切り離したい場合、切り離しを行う前に、使用されるコアI/Oデバイスを変更する必要がある。本実施形態では、使用されるコアI/Oデバイスが、I/Oノード120のコアI/Oデバイスから、I/Oノード127のコアI/Oデバイスに切り替えられる場合の動作について、説明する。
【0056】
図12は、本実施形態に係る情報処理装置の動作方法を示すフローチャートである。
【0057】
ステップS1:コアI/Oデバイスの変更指示
まず、オペレータが、BMC(図4参照)を介して、情報処理装置1に対してコアI/Oデバイスの変更を指示する。オペレータとBMC間のユーザーインタフェースは、WEBUIなどで行われるが、本発明には直接関係しないため、説明を省略する。
【0058】
ステップS2:システムファームウェアの起動
コアI/Oデバイスの変更が指示されると、BMCで動作するBMCファームウェアから、複数のプロセッサ100〜115のいずれかに対して、割り込み処理として、コアI/Oデバイス変更指示が送られる。本実施形態では、プロセッサ100(図1参照)に対してコアI/Oデバイス変更指示が送られるものとする。プロセッサ100では、システムファームウェアが起動し、コアI/Oデバイス変更部が実現される。
【0059】
ステップS3:新規トランザクションの発行抑止
プロセッサ100では、抑止部11(図5参照)が、パーティション内の他のプロセッサ101〜115に対して、新規トランザクションの発行を抑止する。
【0060】
ステップS4:実行中トランザクションの完了を待機
また、抑止部11は、すべてのプロセッサ100〜115において実行中であるトランザクションの完了を待つ。新規トランザクションの発行の抑止と、実行中のトランザクションの完了の確認方法は、プロセッサの実装形態に依存し、本発明には直接関係しないため、説明しない。
【0061】
ステップS5:コピー
次に、プロセッサ100のコピー部12(図5参照)が、I/Oノード120のコアI/Oデバイス(使用コアI/Oデバイス)内のレジスタの内容を、I/Oノード127の予備コアI/Oデバイス(予備コアI/Oデバイス)に、コピーする。
【0062】
ステップS6:ルーティングの設定変更
次に、プロセッサ100のルーティング設定変更部13(図5参照)が、複数のプロセッサノード100〜115および複数のI/Oノード120〜127について、コアI/Oデバイスに関するルーティングの設定を変更する。これにより、I/Oノード120内の使用コアI/Oデバイスへ転送されていたトランザクションが、I/Oノード127内の予備コアI/Oデバイスに転送されるようになる。
【0063】
ステップS7:トランザクションの発行抑止の解除
次に、プロセッサ100の解除部14が、他のプロセッサ101〜115についてトランザクションの発行抑止を解除し、プロセッサ100の制御をOSに返す。
【0064】
以上のステップS1〜S7の動作により、パーティションにおいて使用されるコアI/Oデバイスが、I/Oノード120内のコアI/Oデバイスから、I/Oノード127内のコアI/Oデバイスに変更される。
【0065】
続いて、ステップS5における動作について、具体例を用いて、より詳細に説明する。各コアI/Oデバイス内のレジスタは、各コアI/Oデバイス内において、メモリ空間、I/O空間、及びコンフィグレーション空間のいずれかにマップされる。従って、本実施形態ではそれぞれの場合の具体例について、具体例1乃至3を用いて説明する。尚、プロセッサ100から見たときのメモリ空間には、図6及び図7に示した状態で、各空間がマップされているものとする。
【0066】
<具体例1>
具体例1では、コピー元レジスタが、コアI/Oデバイス内におけるメモリ空間にマップされたレジスタである場合について説明する。尚、使用コアI/Oデバイスにおいてコピー元レジスタに割り当てられたアドレスは、FED00040(16進数)であるものとし、コピー元レジスタには4バイトのデータが格納されているものとする。
【0067】
まず、プロセッサ100では、コピー部12が、使用コアI/OデバイスのMMIO空間(図6参照)を用いて、アドレスFED00040(16進数)へのメモリリードトランザクションを発行する。メモリリードトランザクションは、ノード制御装置130を経由して、I/Oノード120に転送される。I/Oノード120内では、I/O制御装置300(図3参照)を介して、コアI/Oデバイス314にメモリリードトランザクションが転送される。使用コアI/Oデバイス314は、メモリ空間のFED00040(16進数)にマップされるレジスタ(コピー元レジスタ)に格納されたデータをリードする。リードされたデータは、リプライとしてI/O制御装置300に返却され、ノード制御装置130を介してプロセッサ100に転送される。
【0068】
プロセッサ100では、コピー部12が、リードしたデータをライトするライトトランザクションを発行する。ここで、コピー部12は、予備コアI/OデバイスのMMIO空間(図6参照)におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、使用コアI/Oデバイスにおいて割り当てられたコピー元レジスタのアドレスFED00040に、予備コアI/OデバイスのMMIO空間のベースアドレス200000000000を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、アドレス2000FED00040(16進数)をアクセス先アドレスとして、ライトトランザクションを発行する。発行されたライトトランザクションは、ノード制御装置130に転送される。
【0069】
ノード制御装置103では、ポート入力部500(図11参照)がライトトランザクションを取得する。ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを変換する。以下に、予備コアI/Oアクセス制御回路620の動作について、詳述する。図13A及び図13Bは、予備コアI/Oアクセス制御回路620の動作を示すフローチャートである。
【0070】
ステップS11:
予備コアI/Oアクセス制御回路620では、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する。すなわち、予備コアI/Oアクセス検出回路601は、トランザクションのパケットのヘッダフリットを確認する。予備コアI/Oアクセス検出回路601は、コマンドフィールド(図8参照)が、メモリ空間アクセス(メモリライト)を示すコマンドであるか否かを確認する。また、予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:32が、2000(16進数)であるかを確認する。図6に示したように、ビット47:32が2000(16進数)である場合には、アクセス先アドレスが予備コアI/Oデバイスのメモリ空間であることになる。トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間である場合、次のステップS12の処理が行われる。トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間ではない場合、ステップS14の処理が行われる。
【0071】
本具体例では、コマンドフィールドがメモリ空間アクセスのコマンド(メモリライト)であり、アドレスフィールドのビット47:32は2000(16進数)である。従って、予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が予備コアI/Oデバイスのメモリ空間であると判断し、ステップS12の処理を行う。尚、ステップS14の処理が行われる場合の動作については、具体例2及び3において説明する。
【0072】
ステップS12:
予備コアI/Oアクセス検出回路601は、アドレスフィールドの値を、使用コアI/Oデバイスにおいてコピー先レジスタに割り当てられた値に差し換え、アドレス信号612(図11参照)として出力する。具体的には、予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:32を0000(16進数)に差し替え、アドレス信号612として出力する。すなわち、本具体例では、アドレス信号612として、0000FED00040(16進数)を示す信号が出力される。すなわち、アドレス信号612として、アクセス先のアドレス2000FED00040(16進数)から、予備コアI/OデバイスのMMIO空間のベースアドレス200000000000(図6参照)を減じたアドレスが、出力される。
【0073】
ステップS13:
また、予備コアI/Oアクセス検出回路601は、検出結果信号611(図11参照)として1を示す値を出力する。
【0074】
その後、予備コアI/Oアクセスフリット生成回路602が、アドレス信号612を取得する。予備コアI/Oアクセスフリット生成回路602は、ヘッダフリット530のアドレスフィールドをアドレス信号612によって示される値に差し替え、変換後のヘッダフリット信号613を生成する。変換後のヘッダフリット信号613は、セレクタ603に通知される。
【0075】
セレクタ603は、既述のように、検出結果信号611が1であるときに変換後のヘッダフリット信号613を選択し、検出結果信号611が0のときにはフリット信号530を出力するように構成されている。本具体例では、検出結果信号611として1を示す信号が供給される。従って、セレクタ603は、変換後のヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520に向けて出力する。これにより、プロセッサノード100により発行されたライトトランザクションのアクセス先アドレスが、2000FED00040(16進数)からFED00040(16進数)に変更される。
【0076】
変換後のライトトランザクションは、ノード制御装置133(図1参照)を介して、I/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/Oデバイス314に変換後のライトトランザクションが転送される。コアI/Oデバイス314内では、メモリ空間のアドレスFED00040(16進数)にマップされるレジスタ(コピー先レジスタ)に、4バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0077】
以上により、使用コアI/Oデバイスにおけるメモリ空間のアドレスFED00040(16進数)にマップされるレジスタから、予備コアI/Oデバイスにおけるメモリ空間のアドレスFED00040(16進数)にマップされるレジスタに、データがコピーされる。
【0078】
<具体例2>
次いで、具体例2について説明する。具体例2では、コピー元レジスタが、使用コアI/OデバイスにおけるI/O空間にマップされるレジスタである場合について説明する。コピー元レジスタは、I/O空間のアドレス00C0にマップされており、1バイトのデータを保持しているものとする。
【0079】
プロセッサ100では、コピー部12が、使用コアIOデバイスのI/O空間(図6参照)を利用して、アドレス00C0(16進数)のリードトランザクションを発行する。リードトランザクションは、ノード制御装置130を経由してI/Oノード120に転送される。I/Oノード120内では、I/O制御装置300を介してコアI/O314にトランザクションが転送され、I/O空間の00C0(16進数)にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてI/O制御装置300に返却され、ノード制御装置130を経由してプロセッサ100に転送される。
【0080】
次に、コピー部12は、リードした1バイトの値をライトするライトトランザクションを発行する。ここで、コピー部12は、予備コアI/OデバイスのIO空間(図6参照)におけるアドレスであって、コピー元レジスタのアドレスに対応するアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、使用コアI/Oデバイスにおいて割り当てられたコピー元レジスタのアドレス00C0に、予備コアI/OデバイスのIO空間のベースアドレス2000200000000を加えたアドレスを、アクセス先アドレスに設定する。すなわち、コピー部12は、アドレス2002000000C0(16進数)をアクセス先アドレスとして、ライトトランザクションを発行する。ライトトランザクションは、ノード制御装置130に転送され、ノード制御装置130のポート入力部500に入力される。
【0081】
ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアI/Oアクセス制御回路620では、図13A及び図13Bに示したフローチャートによって、処理が行われる。すなわち、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する(ステップS11)。本具体例では、トランザクションの予備コアI/Oデバイスのメモリ空間ではないので、ステップS14の処理が実行される。ステップS14以降の処理について、以下に詳述する。
【0082】
ステップS14:
予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が、予備コアI/OにおけるI/O空間であるか否かを判定する。すなわち、予備コアI/Oアクセス検出回路601は、ヘッダフリットのコマンドフィールドがI/O空間アクセスのコマンドであるか否かを判定する。また、アドレスフィールドのビット47:12が、200200000(16進数)であるか否かを確認する。ビット47:12が200200000(16進数)であれば、アクセス先は予備コアI/Oデバイスであることになる(図6参照)。トランザクションのアクセス先が予備コアI/OデバイスにおけるI/O空間である場合、次のステップS15の処理が実行される。そのアクセス先が予備コアI/OデバイスにおけるI/O空間でない場合、ステップS16の処理が実行される。
【0083】
本具体例では、コマンドフィールドがI/O空間アクセスのコマンドであり、アドレスフィールドのビット47:12が200200000(16進数)である。従って、予備コアI/Oアクセス検出回路601は、トランザクションのアクセス先が予備コアI/OデバイスのI/O空間であると判断し、ステップS15の処理を行う。尚、ステップS16の処理が行われる場合の動作については、具体例3において説明する。
【0084】
ステップS15:
予備コアI/Oアクセス検出回路601は、アドレスフィールドのビット47:12を000000000(16進数)に差し替え、アドレス信号612として出力する。すなわち、アドレス信号612として、0000000000C0を示す信号を出力する。すなわち、アドレス信号612として、アクセス先のアドレス2002000000C0(16進数)から、予備コアI/OデバイスのIO空間のベースアドレス200200000000(図6参照)を減じたアドレスが、出力される。
【0085】
また、予備コアI/Oアクセス検出回路601は、検出結果信号611として、1を示す信号を出力する(ステップS13)。予備コアI/Oアクセスフリット生成回路は、ヘッダフリットのアドレスフィールドをアドレス信号612に差し替え、ヘッダフリット信号613として出力する。セレクタ603は、検出結果信号611が1であるため、ヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520へ出力する。これにより、トランザクションのアクセス先アドレスが、2002000000C0(16進数)から00C0(16進数)に変更される。
【0086】
ノード制御装置130から出力されたライトトランザクションは、ノード制御装置133を経由してI/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/O314にトランザクションが転送され、I/O空間の00C0(16進数)にマップされるレジスタに、1バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0087】
以上の動作により、使用コアI/OデバイスにおけるI/O空間のアドレス00C0(16進数)にマップされたレジスタから、予備コアI/OデバイスにおけるI/O空間のアドレス00C0にマップされるレジスタに、データがコピーされる。
【0088】
<具体例3>
次いで、具体例3について説明する。具体例3では、コピー元レジスタが、コンフィグレーション空間(図7参照)にマップされるレジスタである場合について説明する。コピー元レジスタは、コンフィグレーション空間におけるセグメント番号0(16進数)、バス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされる4バイトのレジスタであるものとする。また、コンフィグレーション空間のベースアドレスは、1000であるものとする。この場合、コピー元レジスタのアドレスは、1000000000A0になる。また、予備コアI/Oデバイスに割り当てられるコンフィグレーション空間は、セグメント番号が3(16進数)であり、バス番号がF0〜F2(16進数)であるものとする。すなわち、レジスタ600(図11参照)には、3F2F0(16進数)が設定されているものとする。
【0089】
プロセッサ100では、コピー部12が、コンフィグレーション空間のアドレス1000000000A0(16進数)から、4バイトのデータをリードする。プロセッサ100からアドレス1000000000A0(16進数)へのコンフィグレーションリードが発行されると、ノード制御装置130を経由してI/Oノード120へトランザクションが転送される。I/Oノード120内では、I/O制御装置300を経由してコアI/Oデバイス314にトランザクションが転送される。コアI/Oデバイス314では、コンフィグレーション空間のバス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタの値がリードされる。リードされた値は、リプライとしてI/O制御装置300に返却され、ノード制御装置130を経由してプロセッサ100に転送される。
【0090】
次に、コピー部12は、リードした4バイトの値を、コンフィグレーション空間のアドレス10003F0000A0(16進数)に書き込む旨を示すライトトランザクションを発行する。10003F0000A0(16進数)によって示されるアドレスは、セグメント番号3(16進数)、バス番号F0(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)である。ライトトランザクションは、ノード制御装置130に転送され、ノード制御装置130のポート入力部500に入力される。
【0091】
ポート入力部500では、予備コアI/Oアクセス制御回路620が、ライトトランザクションのアクセス先アドレスを、変換する。予備コアI/Oアクセス制御回路620では、図13A及び図13Bに示したフローチャートによって、処理が行われる。すなわち、予備コアI/Oアクセス検出回路601が、トランザクションのアクセス先が、予備コアI/Oデバイスのメモリ空間であるか否かを確認する(ステップS11)。本具体例では、アクセス先はトランザクションの予備コアI/Oデバイスのメモリ空間ではないので、ステップS14の処理が実行される。ステップS14では、予備コアI/Oアクセス検出回路により、トランザクションのアクセス先が、予備コアI/OデバイスのI/O空間であるか否かが確認される。本具体例では、アクセス先はI/O空間ではないので、ステップS16の処理が実行される。ステップS16以降の処理について、以下に詳述する。
【0092】
ステップS16:
予備コアI/Oアクセス検出回路601は、トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであるか否かを判定する。具体的には、予備コアI/Oアクセス検出回路は、トランザクションのヘッダフリットをチェックし、コマンドフィールドが、コンフィグレーション空間アクセスのコマンドであるか否かを確認する。また、予備コアI/Oアクセス検出回路601は、アドレスフィールドにおけるセグメント番号およびバス番号が、レジスタ600によって指定される範囲に含まれるか否かをチェックする。
【0093】
トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであるである場合、次のステップS17の処理が行われる。トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものではない場合、予備コアI/Oアクセス検出回路601は、アドレス信号612として0を示す信号を出力し(ステップS18)、検出結果信号611として0を示す信号を出力する(ステップS19)。
【0094】
本具体例では、コマンドフィールドは、コンフィグレーション空間アクセスのコマンドである。また、アドレスフィールドにおけるセグメント番号は、3(16進数)であり、レジスタ600のビット19:16に一致する。更に、アドレスフィールドにおけるバス番号は、F0(16進数)であり、レジスタ600のビット15:8以下であり、ビット7:0以上である。従って、予備コアI/Oアクセス検出回路601は、トランザクションが、予備コアI/Oデバイスのコンフィグレーション空間をターゲットとするものであると判断し、次のステップS17の処理が行われる。
【0095】
ステップS17:
予備コアI/Oアクセス検出回路601は、アドレスフィルールドのバス番号について、レジスタ600に記載された最小バス番号を減じ、減じた後のアドレスフィールドの値を示す信号を、アドレス信号612として出力する。すなわち、アドレス信号612として、1000300000A0(16進数)を示す信号が出力される。
【0096】
また、予備コアI/Oアクセス検出回路601は、検出結果信号611として、1を示す信号を出力する。予備コアI/Oアクセスフリット生成回路602は、ヘッダフリットのアドレスフィールドをアドレス信号612に差し替え、変換後のヘッダフリット信号613を生成する。セレクタ603は、検出結果信号611が1を示すため、変換後のヘッダフリット信号613を選択し、フリット信号540としてクロスバースイッチ520に出力する。これにより、トランザクションのアドレスが、10003F0000A0(16進数)から1000300000A0(16進数)に変更される。
【0097】
ノード制御装置130から出力されたトランザクションは、ノード制御装置133を経由してI/Oノード127に転送される。I/Oノード127内では、I/O制御装置300を経由してコアI/Oデバイス314にトランザクションが転送される。コアI/Oデバイス314においては、コンフィグレーション空間のバス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタに、4バイトの値がライトされる。ライトが完了すると、コンプリーションがI/O制御装置300に返却され、ノード制御装置133およびノード制御装置130を経由してプロセッサ100に返却される。
【0098】
以上の処理により、コアI/Oデバイスにおいて、コンフィグレーション空間のセグメント番号0(16進数)、バス番号00(16進数)、デバイス番号00000(2進数)、ファンクション番号000(2進数)、拡張レジスタ番号0(16進数)、レジスタアドレスA0(16進数)にマップされるレジスタが、コピーされる。
【0099】
以上説明したように、本実施形態によれば、使用コアI/Oデバイスにおけるコピー元レジスタのアドレスと、予備コアI/Oデバイスにおけるコピー先レジスタのアドレスとを、同一にすることができる。これにより、使用中のコアI/Oデバイスを含むI/Oノードを切り離す場合であっても、パーティションを再起動することなく、使用するコアI/Oデバイスを予備のコアI/Oデバイスに変更することができ、情報処理装置の可用性を向上させることができる。
【符号の説明】
【0100】
10:マップ部
11:抑止部
12:コピー部
13:ルーティング設定変更部
14:解除部
100〜115:プロセッサノード
120〜127:I/Oノード
130〜133:ノード制御装置
160:インタフェース
200〜201:パーティション
300:I/O制御装置
310〜313:I/Oデバイス
314:コアI/O
320〜324:インタフェース
400:制御LSI
410:BMC
411:Super I/O
412:BIOS ROM
420〜422:インタフェース
500〜508:ポート入力部
510〜518:ポート出力部
520:クロスバースイッチ
530:フリット信号
540:フリット信号
600:レジスタ
601:予備コアI/Oアクセス検出回路
602:予備コアI/Oアクセスフリット生成回路
603:セレクタ
611:検出結果信号
612:アドレス信号
613:ヘッダフリット信号
620:予備コアI/Oアクセス制御回路
【特許請求の範囲】
【請求項1】
複数のプロセッサノードと、
それぞれがコアI/Oデバイスを有する複数のI/Oノードと、
前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置であって、
前記各プロセッサノードは、
前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするマップ部と、
使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、
前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーする、コピー部と、
コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、
ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備え、
前記ノード制御装置は、予備コアI/Oアクセス制御回路を備え、
前記コピー部は、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行し、
前記予備コアI/Oアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知する
情報処理装置。
【請求項2】
請求項1に記載された情報処理装置であって、
前記ライトトランザクションは、パケットとして発行され、
前記パケットは、
アクセス先アドレスを示すアドレスフィールドを有するヘッダフリットと、
データを示すデータフリットとを含み、
前記予備コアI/Oアクセス制御回路は、
前記ライトトランザクションを取得した場合に、前記ヘッダフリットの前記アドレスフィールドを参照することにより、前記ライトトランザクションが前記予備コアI/Oデバイス宛のものであるか否かを判定し、判定結果を示す検出結果信号と、変換後のアドレスフィールドの値を示すアドレス信号とを生成する、予備コアI/Oアクセス検出回路と、
前記アドレス信号を取得し、ヘッダフリットにおける前記アドレスフィールドの値を前記アドレス信号によって示される値に差し換え、変換後のヘッダフリットを生成する、予備コアI/Oアクセスフリット生成回路と、
前記検出結果信号として前記ライトトランザクションが前記予備コアI/Oデバイス宛である旨を示す信号を取得した場合に、前記変換後のヘッダフリットを選択し、前記予備コアI/Oデバイスに向けて送出する、セレクタとを備える
情報処理装置。
【請求項3】
請求項1又は2に記載された情報処理装置であって、
使用中コアI/O用空間及び前記予備コアI/O用空間は、それぞれ、IO空間、及びMMIO(Memory Mapped Input Output)用空間を有している
情報処理装置。
【請求項4】
請求項3に記載された情報処理装置であって、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記I/O空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアI/O用空間におけるI/O空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項5】
請求項3または4に記載された情報処理装置であって、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記MMI/O用空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアI/O用空間における前記MMI/O空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項6】
請求項3乃至5のいずれかに記載された情報処理装置であって、
前記マップ部は、前記メモリ空間に、更にコンフィグレーション空間をマップし、
前記コンフィグレーション空間において、前記複数のコアI/Oデバイスには、重複しないように、最大バス番号及び最小バス番号が割り当てられており、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記コンフィギュレーション空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスに含まれるバス番号部分の値を、前記予備コアI/Oデバイスに割り当てられた前記最小バス番号の値を減じた値に差し換え、差し換え後のアクセス先アドレスを前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項7】
複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置の動作方法であって、
前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするステップと、
前記各プロセッサノードが、使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、
前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするステップと、
前記各プロセッサノードが、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するステップと、
前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップと、
を具備し、
前記コピーするステップは、
前記プロセッサノードが、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、
前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知するステップとを含む
情報処理装置の動作方法。
【請求項1】
複数のプロセッサノードと、
それぞれがコアI/Oデバイスを有する複数のI/Oノードと、
前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置であって、
前記各プロセッサノードは、
前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするマップ部と、
使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止する抑止部と、
前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーする、コピー部と、
コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更する、ルーティング設定変更部と、
ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除する、解除部とを備え、
前記ノード制御装置は、予備コアI/Oアクセス制御回路を備え、
前記コピー部は、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行し、
前記予備コアI/Oアクセス制御回路は、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知する
情報処理装置。
【請求項2】
請求項1に記載された情報処理装置であって、
前記ライトトランザクションは、パケットとして発行され、
前記パケットは、
アクセス先アドレスを示すアドレスフィールドを有するヘッダフリットと、
データを示すデータフリットとを含み、
前記予備コアI/Oアクセス制御回路は、
前記ライトトランザクションを取得した場合に、前記ヘッダフリットの前記アドレスフィールドを参照することにより、前記ライトトランザクションが前記予備コアI/Oデバイス宛のものであるか否かを判定し、判定結果を示す検出結果信号と、変換後のアドレスフィールドの値を示すアドレス信号とを生成する、予備コアI/Oアクセス検出回路と、
前記アドレス信号を取得し、ヘッダフリットにおける前記アドレスフィールドの値を前記アドレス信号によって示される値に差し換え、変換後のヘッダフリットを生成する、予備コアI/Oアクセスフリット生成回路と、
前記検出結果信号として前記ライトトランザクションが前記予備コアI/Oデバイス宛である旨を示す信号を取得した場合に、前記変換後のヘッダフリットを選択し、前記予備コアI/Oデバイスに向けて送出する、セレクタとを備える
情報処理装置。
【請求項3】
請求項1又は2に記載された情報処理装置であって、
使用中コアI/O用空間及び前記予備コアI/O用空間は、それぞれ、IO空間、及びMMIO(Memory Mapped Input Output)用空間を有している
情報処理装置。
【請求項4】
請求項3に記載された情報処理装置であって、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記I/O空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアI/O用空間におけるI/O空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項5】
請求項3または4に記載された情報処理装置であって、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記MMI/O用空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスを示す値から、前記予備コアI/O用空間における前記MMI/O空間のベースアドレスを示す値を減じた値を、前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項6】
請求項3乃至5のいずれかに記載された情報処理装置であって、
前記マップ部は、前記メモリ空間に、更にコンフィグレーション空間をマップし、
前記コンフィグレーション空間において、前記複数のコアI/Oデバイスには、重複しないように、最大バス番号及び最小バス番号が割り当てられており、
前記予備コアI/Oアクセス制御回路は、前記コピー元レジスタが前記コンフィギュレーション空間に割り当てられたレジスタであった場合に、前記ライトトランザクションのアクセス先アドレスに含まれるバス番号部分の値を、前記予備コアI/Oデバイスに割り当てられた前記最小バス番号の値を減じた値に差し換え、差し換え後のアクセス先アドレスを前記変換後のライトトランザクションのアクセス先アドレスとして設定する
情報処理装置。
【請求項7】
複数のプロセッサノードと、それぞれがコアI/Oデバイスを有する複数のI/Oノードと、前記複数のプロセッサノードと前記複数のI/Oノードを接続するノード制御装置とを具備する情報処理装置の動作方法であって、
前記各プロセッサノードが、前記各プロセッサノードにおけるメモリ空間に、使用中コアI/Oデバイスに対応する使用中コアI/O用空間と、予備コアI/Oデバイスに対応する予備コアI/O用空間とをマップするステップと、
前記各プロセッサノードが、使用コアI/Oデバイス変更指示に応じて、前記複数のプロセッサノードによる新規トランザクションの発行を抑止するステップと、
前記新規トランザクションの発行が抑止された後に、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータを、前記予備コアI/Oデバイスに含まれるコピー先レジスタにコピーするステップと、
前記各プロセッサノードが、コピーが完了した後に、前記使用中コアI/Oデバイスに対するトランザクションが前記予備コアI/Oデバイスに転送されるようにルーティング設定を変更するステップと、
前記各プロセッサノードが、ルーティング設定が変更された後に、前記新規トランザクションの発行の抑止を解除するステップと、
を具備し、
前記コピーするステップは、
前記プロセッサノードが、前記使用中コアI/O用空間におけるコピー元アドレスにアクセスすることにより、前記使用中コアI/Oデバイスに含まれるコピー元レジスタに格納されたデータをコピー対象データとして読み出し、前記予備コアI/O用空間における前記コピー元アドレスに対応するアドレスをアクセス先アドレスとして、前記コピー対象データを格納する旨を示すライトトランザクションを発行するステップと、
前記ノード制御装置が、前記ライトトランザクションを取得した場合に、前記ライトトランザクションのアクセス先アドレスを、前記使用中コアI/Oデバイスにおいて前記コピー元レジスタに割り当てられたアドレスと同一のアドレスになるように変換し、前記変換後のライトトランザクションを前記予備コアI/Oデバイスに通知するステップとを含む
情報処理装置の動作方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【公開番号】特開2012−168650(P2012−168650A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−27736(P2011−27736)
【出願日】平成23年2月10日(2011.2.10)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願日】平成23年2月10日(2011.2.10)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】
[ Back to top ]