(58)【調査した分野】(Int.Cl.,DB名)
少なくとも、前記第1の接続装置が前記制御部と前記予備の入出力コントローラの間に接続されているか、前記第2の接続装置が前記制御部と前記現用の入出力コントローラの間に接続されている、
請求項3に記載の計算機システム。
前記第1の接続装置は、前記制御部から前記第1の入出力ポートを介してアクセスがあった場合に、アクセス先のアドレスを、前記第1の接続装置に割り当てられたアドレスから、前記第2の記憶部に割り当てられたアドレスに変換することによって当該アクセスを前記第2の記憶部に転送する、
請求項1ないし6のいずれか一項に記載の計算機システム。
【発明を実施するための形態】
【0012】
実施の形態1
以下、図面を参照して本発明の実施の形態1について説明する。
図1は、実施の形態1にかかる計算機システムの構成例を示すブロック図である。計算機システム10は、制御部11、現用IC(Integrated Circuit)12、予備IC13及び第1の接続装置14を備える。計算機システム10は、例えばメインフレーム、サーバ等のコンピュータである。
【0013】
制御部11は、計算機システム10を制御する処理装置であり、例えば1又は複数のCPU(Central Processing Unit)から構成される。制御部11は、システムブートの際に計算機システム10のBIOS(Basic Input Output Software)を実行してハードウエアの初期化を行い、その後OSを実行する。制御部11は、OS実行中もSMI(System Management Interrupt)によってBIOSのシステムマネージメント機能を実行することができる。
【0014】
現用IC12は、前述のシステム・コア機能を有する集積回路(第1の入出力コントローラ)である。現用IC12は、制御部11に接続されており、計算機システム10において、コアI/Oとして現に用いられているICである。現用IC12は、第1の入出力ポート15及び第1の記憶部16を有する。第1の入出力ポート15はハードウェアであり、PCIe(PCI express)、Ethernet(登録商標)、SATA(Serial Advanced Technology Attachment)等のインタフェースである。
【0015】
第1の記憶部16は、計算機システム10において、計算機システムのブートに必要な設定情報を記憶可能なメモリである。具体的には、制御部11の設定情報(例えばCPUのクロック数の指定)、メモリやブートの際のドライブの検索順番の設定といった、ブートの際にBIOSによって設定される計算機システム10のハードウエアの設定情報を、第1の記憶部16は記憶する。
【0016】
この設定情報に異常が生じてしまい、第2の記憶部17に記憶された設定情報によって計算機システム10をブートする場合に、第1の記憶部16の設定情報と第2の記憶部17の設定情報とが同一でないと、計算機システム10はユーザが意図しないモードによって動作してしまうほか、ブートができない状態になる可能性もある。このため、第1の記憶部16の設定情報と第2の記憶部17の設定情報とが同一であることが求められる。
【0017】
そのほか、第1の記憶部16は、Ethernet(登録商標)AddressやHost IDといった現用IC12に接続される周辺機器の設定に関する情報、その周辺機器を制御するプログラム群、ネットワークインターフェースに関する情報等を記憶してもよい。第1の記憶部16は、NVRAM等の不揮発性メモリ又はCMOSメモリである。さらに、第1の記憶部16は、ブートローダを記憶してもよい。なお、第1の記憶部16は、現用IC12に全体が搭載されていなくともよく、現用IC12に接続されるような構成で、現用IC12に取り付けられていてもよい。
【0018】
予備IC13は、前述のシステム・コア機能を有する集積回路(第2の入出力コントローラ)である。予備IC13は、制御部11に接続されており、計算機システム10において、予備のコアI/Oとして設けられているICである。このように、計算機システム10は、現用IC12と予備IC13とによって、コアI/Oが二重化されている。
【0019】
予備IC13は、第2の記憶部17を有する。第2の記憶部17の構成は第2の記憶部16と同様であるため説明を省略する。なお、予備IC13は、第1の入出力ポート15と同様の入出力ポートを備えてもよい。
【0020】
第1の接続装置14は、予備IC13の入出力デバイスであり、第1の入出力ポート15と予備IC13(第2の記憶部17)とを接続する。
【0021】
次に、計算機システム10がブートする際に、制御部11がBIOSを実行することによって行う処理について説明する。
図2は、計算機システム10のBIOSによる初期化処理の一例を示すフローチャートである。
【0022】
ブートの際に、制御部11はBIOSによって制御部11及び現用IC12の初期化を実行する(ステップS1)。現用IC12の初期化では、マスタコアI/O機能の初期化も実行する。以上の初期化により、現用IC12内の第1の入出力ポート15に、制御部11がアクセス(書き込み又は読み出し)するためのアドレスが割り当てられる。なお、アドレスは、Memory mapped I/Oアドレス、MMCFGアドレス、I/O mapped I/Oアドレス等である。
【0023】
次に、制御部11は入出力デバイスの初期化を実行する(ステップS2)。ここで制御部11は、第1の接続装置14を入出力デバイスと認識して初期化を実行する。これは、第1の入出力ポート15にアドレスが割り当てられた第1の接続装置14が接続されているため、制御部11が入出力デバイスとして第1の接続装置14を認識可能だからである。このとき、第1の接続装置14にアドレスが割り当てられるため、制御部11は第1の入出力ポート15を介して第1の接続装置14にアクセスすることができる。
【0024】
次に制御部11は、予備IC13の初期化を実行する(ステップS3)。予備IC13に接続されている第1の接続装置14には、ステップS2においてアドレスが割り当てられている。そのため、制御部11は、そのアドレスに基づき、第1の接続装置14を介して予備IC13にアクセスすることができるため、予備IC13を初期化することができる。これにより、制御部11は、第1の入出力ポート15、第1の接続装置14を介して、予備IC13内の第2の記憶部17にアクセスすることができる。
【0025】
以上より、制御部11がBIOSに基づいて実行する初期化の処理が終了した。ステップS1〜S2により、第1の入出力ポート15の配下に第1の接続装置14が配置されるため、ステップS3において現用IC12配下に予備IC13が配置されることが可能になった。つまり、制御部11は、予備IC13をコントロール配下に置くことができる。
これにより、制御部11は、例えばOSの起動前やシャットダウン、BIOSのシステムマネージメント機能の実行中など、BIOSが実行される任意のタイミングで、第1の入出力ポート15と第1の接続装置14とを介して、第2の記憶部17に書き込みを実行することができる。つまり、第1の記憶部16と第2の記憶部17とが接続されることにより、制御部11は第2の記憶部17にアクセスし、第2の記憶部17の設定情報を第1の記憶部16の最新の設定情報に同期することができる。
【0026】
特許文献1の実施例1においては、セカンダリ・コアI/Oに切り替えた後に同期をしているため、リブートが必要であり、システム運用までに時間が掛かってしまった。さらに、データをバックアップするためにFTPサーバを設ける必要があることや、通信プロトコルスタックを含める必要があるためにファームウエアのサイズが増大する問題があった。実施例2においても、やはりデータを同期する期間が限られてしまい、データの内容を完全に同期することができないという問題があった。
【0027】
実施の形態1にかかる計算機システム10は、この問題点を改善したシステムをユーザに提供するものである。制御部11は、BIOSが実行される任意のタイミングで、第1の記憶部16のデータを第2の記憶部17にコピーすることができる。そのため、計算機システム10は、予備コアI/Oのデータを最新のメインコアI/Oのデータに同期可能である。それに伴い、マスタコアI/Oに異常が発生して予備コアI/Oに切り替えた際に、すぐに予備コアI/Oが使用できる状態になる。このため、システム運用までに掛かる時間を軽減され、運用再開が容易となる。
【0028】
そして、特許文献1の実施例2においては、異なる記憶部に対してそれぞれ異なるアドレスを割り当てるようにしている。言いかえれば、異なるアドレスが割り当てられる専用ハードウエアのコアI/Oが用いられている。しかし、近年オープン化が発展しており、コンピュータシステムは汎用ハードウエア、汎用OSにより構築されるようになっている。そのようなシステムではシステム・コア機能にかかるハードウエアのアドレスは固定されていて、コアI/Oの二重化を意識して設計されてはいないために、記憶領域の同期が難しくなっている。
【0029】
例えば、
図1において、現用IC12と予備IC13とが汎用のハードウエアで構成されている場合には、第1の記憶部16と第2の記憶部17とのアドレスが同じアドレスに固定されていて、変更できない可能性がある。そのような場合において、第1の接続装置14がない場合には、制御部11は第1の記憶部16と第2の記憶部17とに同時にアクセスすることができないため、第1の記憶部16と第2の記憶部17とのデータの同期が困難であった。
【0030】
しかし、実施の形態1にかかる計算機システム10は、汎用ハードウエア、汎用OSを使用したシステム(例えば現用IC12と予備IC13とが汎用のハードウエアで構成されているシステム)においても適用が可能である。第1の記憶部16と第2の記憶部17とのアドレスが同じであり、固定されている場合でも、制御部は第1の記憶部16にアクセスするとともに、第1の入出力ポート15及び第1の接続装置14を介して予備IC13内の第2の記憶部17にアクセスすることができるからである。
【0031】
なお、現用IC12と予備IC13との間に第1の接続装置14が接続されている構成を図示したが、第1の接続装置14の接続関係はこの通りに限られない。例えば、現用IC12と予備IC13のそれぞれに、第1の接続装置14と同じ構成の接続装置が接続されていてもよい。
【0032】
実施の形態1においては、制御部11が第1の記憶部16を参照して、第2の記憶部17に第1の記憶部16の設定情報を書き込む処理を説明した。しかし、制御部11が第2の記憶部17に直接書き込みを実行しなくとも、現用IC12が制御部11の指示に応じて、第2の記憶部17に書き込みを実行し、第2の記憶部17の設定情報を第1の記憶部16の設定情報に同期してもよい。
【0033】
さらに、実施の形態1ではBIOSによる計算機システム10の制御を説明したが、制御の方法はこの方法でなくとも限らない。例えば、計算機システム10の起動中に、制御部11が所定の間隔で第1の記憶部16の設定情報と第2の記憶部17の設定情報とを同期するように、計算機システム10がプログラムされていてもよい。制御部11は、計算機システム10内にあるプログラムを実行することにより、その処理を実行する。あるいは、ユーザが第1の記憶部16の設定情報を変更した場合に、制御部11がその変更を検出し、その設定情報の変更をトリガとして同期処理を実行してもよい。ただし、計算機システム10がBIOSによって制御されることにより、計算機システム10に他のプログラムを導入しないで済むという利点がある。
【0034】
あるいは、現用IC12、又は現用IC12及び予備IC13が、第1の入出力ポート15と第1の接続装置14とを介して第2の記憶部17に書き込みを実行することによって、第1の記憶部16の設定情報と第2の記憶部17の設定情報とを同期してもよい。ここで、現用IC12、又は現用IC12及び予備IC13は、処理装置及びプログラムを内蔵したメモリを有しており、処理装置がそのプログラムを実行することによって、同期を実行する。同期するタイミングについては、計算機システム10の起動中の所定の間隔でもよいし、ユーザが第1の記憶部16の設定情報を変更したときでもよい。
【0035】
さらに、第1の入出力ポート15は、現用IC12に備えられている必要はなく、現用IC12とは別の、制御部11と接続されたコアI/O機能を有するICに備えられていてもよい。
図2のステップS1において、当該ICの初期化が実行されることにより第1の入出力ポート15に制御部11のアクセスのためのアドレスが割り当てられるのであれば、第1の接続装置14にはステップS2によってアドレスが割り当てられる。それにより、前述と同様に、予備IC13をBIOSのコントロール配下におくことが可能になる。
【0036】
実施の形態2
以下、図面を参照して本発明の実施の形態2について説明する。
図3は、実施の形態2にかかる計算機システムの構成例を示すブロック図である。計算機システム20は、CPU21、22、NB(North Bridge)23、24、プロトコル変換装置25、26、SB(South Bridge)27、28及びBMC(Baseboard Management Controller)37を備える。なお、プロトコル変換装置26は
図1における第1の接続装置14に、SB27、28はそれぞれ
図1における現用IC12、予備IC13に対応する。計算機システム20は、2チップ構成のチップセットを搭載した計算機システムである。
【0037】
CPU21、22(
図1の制御部11に対応)は計算機システム20の中央処理装置である。CPU21とCPU22は、QPI(Quick Path Interconnect)を通して接続される。計算機システム20には、CPU21、22以外のCPUが設けられていてもよい。
【0038】
CPU21、22はシステムブートの際にBIOSを実行してハードウエアの初期化を行い、その後OSを実行する。CPU21、22はOS実行中もSMIによってBIOSのシステムマネージメント機能を実行することができる。CPU21、22は、図示しないデコーダを内蔵している。CPU21、22は、SB27、28が有するシステム・コア機能へのデータアクセスを、そのデコーダに基づいて、それぞれNB23、24へ転送する。
【0039】
NB23は、CPU21とプロトコル変換装置25との間に接続されている集積回路であり、SB27、CPUフロントサイドバス、メインメモリバス等とのインタフェース回路を適宜有する。NB23は、SB27とチップセットを構成する集積回路である。NB24も、CPU22とプロトコル変換装置26との間に接続されている同様の集積回路であり、SB28とチップセットを構成する。なお、CPU21とNB23、CPU22とNB24の間もQPIにより接続される。
【0040】
NB23、24はPCIeホスト機能を有しており、図示しないデコーダを内蔵する。NB23、24は、CPU21、22からのシステム・コア機能へのアクセスを、このデコーダに基づいて、それぞれSB27、28に転送する。
【0041】
プロトコル変換装置25(第2の接続装置)は、NB23とSB27との間に設けられており、NB23とSB27とを接続可能な装置である。プロトコル変換装置25は、さらにSB28内のPCIeスロット31とSB27とを接続することも可能である。プロトコル変換装置25は、接続切り替え機能部33及びプロトコル変換機能部34を有する。なお、プロトコル変換装置25を、SB27側のプロトコル変換装置ともいう。
【0042】
接続切り替え機能部33は、BMC37の制御により、NB23とSB27とを接続するか、又はプロトコル変換機能部34とSB27とを接続するかを切り替える。
【0043】
プロトコル変換機能部34は、接続切り替え機能部33と接続可能であるほか、PCIeスロット31と接続可能な構成を有する。プロトコル変換機能部34は、CPU22からのNVRAM30へのアクセスを可能にするためにアドレス変換を実行する。さらに、SB28−プロトコル変換機能部34間の通信プロトコルと、プロトコル変換機能部34−NVRAM30間の通信プロトコルとは異なるため、CPU22からのNVRAM30へのアクセスを可能にするためにプロトコル変換も実行する。
【0044】
プロトコル変換装置26(第1の接続装置)は、NB24とSB28との間に設けられており、NB24とSB28とを接続可能な装置である。さらにプロトコル変換装置26は、SB28とPCIeスロット29とを接続することも可能である。プロトコル変換装置26は、接続切り替え機能部35及びプロトコル変換機能部36を有する。なお、プロトコル変換装置26を、SB28側のプロトコル変換装置ともいう。
【0045】
接続切り替え機能部35は、NB24とSB28とを接続するか、又はプロトコル変換機能部36とSB28とを接続するかを切り替える。なお、接続切り替え機能部33、35の切り替えは、BMC37によって実行される。
【0046】
プロトコル変換機能部36は、接続切り替え機能部35と接続可能なほか、PCIeスロット29とも接続可能な構成を有する。プロトコル変換機能部36は、CPU21からのNVRAM32へのアクセスを可能にするためにアドレス変換を実行する。さらに、SB27−プロトコル変換機能部36間の通信プロトコルと、プロトコル変換機能部36−NVRAM32間の通信プロトコルとは異なるため、CPU21からのNVRAM32へのアクセスを可能にするためにプロトコル変換も実行する。
【0047】
以上に示したプロトコル変換機能部34、36はPCIデバイス機能を有する。このため、プロトコル変換機能部34、36は計算機システム20のBIOSによりPCIデバイスとして認識される。システムの初期化において、プロトコル変換機能部34、36には、CPUがアクセス可能とするためにMMCFGアドレスが割り当てられる。PCIデバイスとして割り当てられたプロトコル変換機能部34、36は、NB23、24からシステム初期化で割り当てられたアドレスに対してリード/ライトアクセスがなされた場合には、アクセスされたアドレス値から割り当てられたアドレス値を引いて変換し、SB27、28へと転送するように処理を実行する。なお、ここで割り当てられるアドレスは、Memory Mapped I/Oアドレス等の他のアドレスでもよい。
【0048】
なお、NB23とプロトコル変換装置25、プロトコル変換装置25とSB27はDMI(Direct Media Interconnect)によって接続される。NB24とプロトコル変換装置26、プロトコル変換装置26とSB28も同様にDMIにより接続される。
【0049】
SB27は、前述のシステム・コア機能(コアI/O機能)を有する集積回路である。SB27は、入出力ポートであるPCIeスロット29及びNVRAM30を備える。PCIeスロット29は、
図1における第1の入出力ポート15に対応し、NVRAM30は、第1の記憶部16に対応する。SB28も、SB27と同様に、PCIeスロット31(第2の入出力ポート)及びNVRAM32(
図1における第2の記憶部17に対応)を有している。SB27、28は、PCIeホスト機能を有する。ここで、NVRAM30、32は、そのコントローラがそれぞれSB27、28に搭載されているものの、その記憶容量部はSB27、28に物理的に接続されている。
【0050】
なお、プロトコル変換装置25とPCIeスロット31、プロトコル変換装置26とPCIeスロット29とは、PCIeバスにより接続される。
【0051】
BMC37は、接続切り替え機能部33、35に対して、接続の切り替えを制御するシステム管理コントローラ(接続コントローラ)である。
【0052】
次に、実施の形態2にかかる計算機システム20の初期化処理について説明する。
図4は、計算機システム20のBMC37による初期化処理の一例を示すフローチャートである。ここで、マスタのコアI/OをSB27、予備のコアI/OをSB28として説明する。
【0053】
計算機システム20がシステムブートすると、BMC37は、コアI/Oの接続と関係ない通常のシステム起動のためのハードウエア初期化を実行する(ステップS11)。次にBMC37は、ユーザ設定等からマスタとなるコアI/Oを判断する(ステップS12)。ここでは、BMC37は、SB27がマスタコアI/Oと判断する。
【0054】
次にBMC37は、マスタコアI/O(SB27)側のプロトコル変換装置25内の接続切り替え機能部33を、NB23とSB27とが接続されるように制御する(ステップS13)。BMC37は、以前の設定に基づいて、予備コアI/O(SB28)をシステムに組み込むか否かを判断する(ステップS14)。
【0055】
BMC37は、予備コアI/Oをシステムに組み込むと判断した場合には(ステップS14のYes)、プロトコル変換装置26の接続切り替え機能部35を、PCIeスロット29とSB28が接続されるような設定に制御する(ステップS15)。組みこまないと判断した場合には(ステップS14のNo)、BMC37は接続切り替え機能部35の制御を実行せず、次のステップS16に移行する。
【0056】
次にBMC37は、ステップS11で初期化されていない残りのハードウエアの初期化を実行し(ステップS16)、BIOSに制御を渡す。以上より、BMC37による初期化処理が終了する。
【0057】
このとき、接続切り替え機能部33、35が設定された計算機システム20のBIOSから見た接続関係は
図5のようになる。
図5において、実線で囲まれたデバイスはCPU21によって有効と扱われるデバイスであり、点線で囲まれたデバイスは無効と扱われるデバイスである。デバイス同士の間の実線は、現在それらのデバイス同士に接続関係があることを示し、デバイス同士の間の点線は、現在それらのデバイス同士に接続関係がないことを示す。
図5において、接続切り替え機能部33は、NB23とSB27とを接続させ、プロトコル変換機能部34はいずれのデバイスとも接続されないように制御している。
【0058】
図4のステップS15の制御により、接続切り替え機能部35は、PCIeスロット29とSB28とを接続するように制御している。これにより、NVRAM30とNVRAM31とは接続された状態になる。なお、このとき接続切り替え機能部35は、NB24とは接続されていない。
【0059】
次に、BIOSによるデバイスの初期化について説明する。
図6は、計算機システム20のBIOSによる初期化処理の一例を示すフローチャートである。
【0060】
BMC37からBIOSに制御の主体が移ると、CPU21はBIOSを実行することにより、CPU21、22及びチップ(NB23、24、SB27)の初期化を実行する(ステップS17)。SB27の初期化では、マスタコアI/O機能の初期化も実行される。以上の初期化により、PCIeスロット29、NVRAM30にCPU21のアクセス用のアドレスが割り当てられる。
【0061】
次に、CPU21はPCIデバイスの初期化を実行する(ステップS18)。ここでCPU21は、SB27側(マスタコアI/O側)のプロトコル変換装置25のみならず、プロトコル変換装置26も、通常のPCIeデバイスと認識して初期化を実行する。これは、アドレスが割り当てられたPCIeスロット29にプロトコル変換機能部36が接続されていることにより、CPU21がプロトコル変換装置26をPCIデバイスとして認識するためである。
【0062】
次にCPU21は、予備コアI/OであるSB28がシステムに組み込まれているか(システム上に存在するか)否かを、BMC37との通信又はSB28への直接のアクセスに基づいて判断する(ステップS19)。
【0063】
SB28がシステム上に存在していなければ(ステップS19のNo)、CPU21は初期化処理を終了する。SB28がシステム上に存在していれば(ステップS19のYes)、CPU21は、SB28内のNVRAM32といったコアI/O機能に関するデバイスの初期化を行う(ステップS20)。以上の初期化により、NVRAM32等にアドレスが割り当てられる。なお、SB28の初期化手順は、ステップS17におけるSB27の初期化手順に、ステップS18にてプロトコル変換機能部36に割り当てたMMCFGアドレスを割り当てる手順を加えたものである。SB28に、Memory Mapped I/Oアドレス等の他のアドレスが割り当てられる場合でも同様である。
【0064】
以上、計算機システム20においては、CPU21がBIOSを実行することにより、通常のマスタコアI/Oの初期化と同じように予備コアI/Oの初期化を行うことができた。ステップS7〜S10により、PCIeスロット29の配下にプロトコル変換装置26が置かれるようになったため、マスタ コアI/O(SB27)配下に予備コアI/O(SB28)が配置されるようになった。例えば、PCIeスロット29のアドレスがステップS7において「1100」と設定され、ステップS20においてNVRAM32のアドレスが「100」と設定されたとする。このとき、プロトコル変換機能部36は、ステップS20の初期化において、「アドレス1100を100に変換」するようにCPU21から設定される。これにより、CPU21からアドレス1100にアクセスがなされた際には、アドレス1100を有するPCIeスロット29にアクセスが伝達する。これにより、プロトコル変換機能部36にそのアクセスが伝達される。ここで、プロトコル変換機能部36の設定により、アドレスが「100」に変換される。このため、NVRAM32にそのアクセスを伝達させることができる。
【0065】
これによって、BIOSを実行するCPU21は、予備コアI/O(SB28)をコントロール配下に置くことができる。つまり、CPU21は、予備コアI/Oにおいて、マスタコアI/Oと同様にシステム・コア記憶領域(NVRAM)へのアクセスが可能になる。このため、CPU21は、BIOSが実行される任意のタイミングで、マスタのコアI/Oのデータ(NVRAM30に記憶された設定情報)を予備コアI/O(NVRAM32)にコピーして、データ同期を実行することができる。このとき、CPU21内のデコーダの設定を切り替える必要はない。
【0066】
次に、
図4を参照して、マスタコアI/Oの障害発生時の処理について説明する。なお、障害発生前のマスタコアI/OはSB27である。
【0067】
計算機システム20のシステム運用時にマスタコアI/OであるSB27に障害が発生すると、計算機システム20はシステムダウン又は縮退動作を実行する。ここで、障害を検出したBMC37によって、次回のブートの際にマスタコアI/OをSB27からSB28に切り替えるほか、SB27をシステムに組み込まないように設定を変更する。
【0068】
次にシステムがブートされた際に、BMC37は、まずコアI/Oと関係の無い通常のシステム起動のためのハードウエア初期化を行う(ステップS11)。
【0069】
次にBMC37は、マスタコアI/Oを判断する(ステップS12)。ここで、障害を検出した際にマスタコアI/Oが切り替わるように設定されているため、BMC37はSB28をマスタコアI/Oと判断する。
【0070】
次にBMC37は、接続切り替え機能部35を、NB24とSB28とが接続されるようにスイッチを切り替える(ステップS13)。
【0071】
次にBMC37は、予備コアI/Oをシステムに組み込むか否かを判断する(ステップS14)。ここで、予備コアI/OとなったSB27は、BMC37によって、SB27の障害発生時にシステムに組み込まれないように設定されている(ステップS14のNo)。このため、BMC37はステップS15を実行せず、残りのハードウエア初期化を実行する(ステップS16)。これにより、プロトコル変換機能部34は、PCIeデバイス31と接続されない。
【0072】
BMC37は、ステップS16においてSB27の初期化を実行しない。換言すれば、SB27に対してDC電源を投入しない。それによって、SB27はシステムから切り離される。
【0073】
次に、
図6を参照して、CPU22がBIOSを実行することによって実行する初期化処理を説明する。CPU22は、CPU21、22及びチップ(NB23、24、SB27)の初期化を実行する(ステップS17)。ここで、PCIeスロット31、NVRAM32にCPU22のアクセス用のアドレスが割り当てられる。
【0074】
次に、CPU22はPCIデバイスの初期化を実行する(ステップS18)。ここでCPU22は、SB28側(マスタコアI/O側)のプロトコル変換装置26のみ初期化を実行する。これは、PCIeスロット31にプロトコル変換機能部34が接続されていないため、CPU22がプロトコル変換装置25をPCIデバイスとして認識しないためである。
【0075】
次にCPU22は、予備コアI/OであるSB27がシステム上に存在するか否かを判断する(ステップS19)。ここでは、SB27がシステム上に存在していないため(ステップS19のNo)、CPU22は初期化を終了する。
【0076】
ここで、NVRAM32の設定情報はNVRAM30の最新の設定情報と同期されているため、計算機システム20は、障害発生後、SB28のコアI/O機能を使用して、直ちにシステム(OS)をブートすることが可能である。つまり、計算機システム20のリブートが不要であり、運用再開が容易となる。
【0077】
以上から、計算機システム20は、予備コアI/Oのデータを現用コアI/Oの最新のデータに同期可能であって運用再開が容易であり、かつ、汎用ハードウエア、汎用OSを使用したシステムにおいて適用が可能であるという効果を奏する。この詳細については実施の形態1に記載した通りである。
【0078】
さらに、実施の形態2にかかる計算機システム20は、簡易な構成を有するプロトコル変換装置25、26によりコアI/O二重化を実現できるため、コストを抑制することができる。
【0079】
さらに、
図3に示した計算機システム20は、CPU21にSB28へのアクセスを可能にするプロトコル変換装置26だけでなく、CPU22にSB27へのアクセスを可能にするプロトコル変換装置25が設けられている。そのため、現用コアI/OがSB27の場合だけでなく、SB28である場合にも、同様の処理方法にて、計算機システム20はデータ同期を実行することができる。
【0080】
さらに、プロトコル変換装置25、26には、それぞれ接続切り替え機能部33、35が設けられている。BMC37は、SB27が現用コアI/Oであり、SB28が予備コアI/Oである場合には、ブートの際に接続切り替え機能部35を制御して、NB24(及びCPU22)とSB28とを接続しないように制御する。つまり、SB28は、PCIeスロット29を介してCPU21と接続される(PCIeスロット29を介さずにCPU21とは接続されない)。このようにしてBMC37は、CPU22及びNB24からの信号をSB28に伝達しないようにすることができるため、SB28へ伝達されるノイズを抑制することができる。同様にBMC37は、接続切り替え機能部33を制御して、SB27とプロトコル変換機能部34とを接続しないように制御することにより、SB27へ伝達されるノイズを抑制することができる。
【0081】
プロトコル変換機能部36は、PCIeスロット29からの出力信号の通信プロトコルを変換することができる。プロトコル変換装置26は、変換後の出力信号をSB28内のNVRAM32に出力する。これにより、PCIeスロット29−プロトコル変換機能部36間の通信プロトコルと、NVRAM32−プロトコル変換機能部36間の通信プロトコルとが異なる場合であっても、CPU21は問題なくNVRAM32にアクセスすることができる。
【0082】
さらに、プロトコル変換機能部36は、CPU21がPCIeスロット29を介して出力した信号のアクセス先のアドレス(プロトコル変換機能部36のアドレス)を、NVRAM32のアドレスに変換することにより、NVRAM32に転送する。このため、SB27、28が汎用のハードウエアであり、NVRAM30とNVRAM32とに割り当てられたアドレスが同一であっても、NVRAM30とプロトコル変換機能部36に異なるアクセスが割り当てられれば、CPU21は問題なくNVRAM30とNVRAM32に同時にアクセスすることができる。プロトコル変換機能部34も、同様の効果を奏する。
【0083】
なお、一般に、PCIeスロットはSB27、28だけでなく、NB23、24にも設けられている。その場合には、NB23に設けられたPCIeスロットを、PCIeスロット29の代わりに用いてもよい。その場合でも、計算機システム20は、同様の処理によってNB23に設けられたPCIeスロットとNVRAM32とを、プロトコル変換機能部36、接続切り替え機能部35を介して接続する。これにより、上述に記載の効果を達成することができる。同様に、NB24に設けられたPCIeスロットを、PCIeスロット31の代わりに用いることもできる。
【0084】
ただし、一般に、SBに備えられているPCIeスロットよりも、NBに備えられているPCIeスロットの方が、データ通信速度が速い。実施の形態2において通信されるデータは大容量ではないため、データ通信速度の遅いPCIeスロットを用いてデータ同期を実行しても、データ同期にかかる時間の差は大きなものではない。そのため、データ通信速度の速いNBのPCIeスロットをユーザが他の用途に使用可能とするためには、上述の通り、SB27に設けられたPCIeスロット29をデータ同期のために使用することが望ましい。同様に、NB24に設けられたPCIeスロットを用いるよりも、SB28に設けられたPCIeスロット31を用いる方が、実用上は望ましい。
【0085】
さらに、NB23、SB27及びプロトコル変換装置25は、
図3に示した構成で接続されていなくともよい。例えば、NB23−プロトコル変換装置25−SB27の順ではなく、NB23−SB27−プロトコル変換装置25の順に接続されていてもよい。その場合には、接続切り替え機能部33は設けなくてよい。
【0086】
ただし、SB27は、NB23と接続するための1本の信号線しか有しないのが一般的である。そのため、NB23−SB27−プロトコル変換装置25の順に接続する場合には、SB27に信号線を1本追加する必要がある。しかし、
図3の通り、NB23−プロトコル変換装置25−SB27の順に接続する場合には、SB27の構成を変更せずにすむ。このため、汎用のハードウエアをSB27としてそのまま使用できるというメリットがある。なお、CPU21−プロトコル変換装置25−NB23−SB27の順に接続しても、同様のメリットがある。つまり、CPU21とSB27の間にプロトコル変換装置25が接続されていれば、汎用のハードウエアをSB27としてそのまま使用することができる。これは、NB24、SB28及びプロトコル変換装置26の接続構成についても同様である。
【0087】
実施の形態3
以下、図面を参照して本発明の実施の形態3について説明する。
図7は、実施の形態3にかかる計算機システムの構成例を示すブロック図である。計算機システム40は、CPU41、42、NB43、44、プロトコル変換装置45、46、SB47、48及びBMC57を備える。
【0088】
CPU41、42及びNB43、44は、実施の形態2にかかるCPU21、22及びNB23、24と同様であるため、説明を省略する。
【0089】
プロトコル変換装置45は、接続切り替え機能部53、プロトコル変換機能部54、アドレス検出機能部60及び割り込み機能部61を有する。
【0090】
接続切り替え機能部53、プロトコル変換機能部54は、実施の形態2にかかる接続切り替え機能部33、プロトコル変換機能部34と同じ機能を有するため、説明を省略する。
【0091】
アドレス検出機能部60は、NB43からのライトアクセス(書き込みアクセス)のアドレスを監視する。アドレス検出機能部60は、内部に設定された所定のSB47のアドレスにライトアクセスがあると、そのアドレスとデータを内部のメモリに記録し、ライトアクセスがあった旨の信号を割り込み機能部61に出力する。ここで、所定のSB47のアドレスとは、NVRAM50を示すアドレスのことをいう。つまり、アドレス検出機能部60は、CPU41から出力されたライトアクセスが、NVRAM50に対するものであるか否かを判断するアクセス判断部として機能する。なお、アドレス検出機能部60は、接続切り替え機能部53、プロトコル変換機能部54、割り込み機能部61にそれぞれ接続可能である。
【0092】
アドレス検出機能部60は、例えばBIOSを実行するCPUにアドレス検出機能部60をPCIデバイスと認定させて、アドレス検出機能部60とNB43に内蔵されたPCIeスロットとを接続することにより、監視アドレス設定をしてもよい。あるいは、BMC57を通して監視アドレス設定をしてもよい。
【0093】
割り込み機能部61は、アドレス検出機能部60と、SB47に内蔵されたGPIO58とに接続可能である。割り込み機能部61は、アドレス検出機能部60からの要求に応じて、GPIO58に割り込みを発生させる。これにより、CPU41に対し、NVRAM52に対して書き込みアクセスにかかるデータを書き込ませる。
【0094】
SB47、48は、それぞれPCIeスロット49、51、NVRAM50、52及びGPIO58、59を内蔵する。GPIO58、59は、汎用入出力ポートである。その他のSB47、48の構成は、実施の形態1にかかるSB27、28の構成と同様であるため、説明を省略する。
【0095】
プロトコル変換装置46は、プロトコル変換装置45と同様の構成を有する。アドレス検出機能部62は、NB44からのライトアクセスのアドレスを監視する。アドレス検出機能部62は、内部に設定された所定のSB48のアドレスにライトアクセスがあると、そのアドレスとデータを内部のメモリに記録し、ライトアクセスがあった旨の信号を割り込み機能部63に出力する。ここで、所定のSB48のアドレスとは、NVRAM52を示すアドレスのことをいう。つまり、アドレス検出機能部61は、CPU42から出力されたライトアクセスが、NVRAM52に対するものであるか否かを判断するアクセス判断部として機能する。なお、アドレス検出機能部62は、接続切り替え機能部55、プロトコル変換機能部56、割り込み機能部63にそれぞれ接続可能である。
【0096】
割り込み機能部63は、アドレス検出機能部62と、SB48に内蔵されたGPIO59とに接続可能である。割り込み機能部63は、アドレス検出機能部62からの要求に応じて、GPIO59に割り込みを発生させる。これにより、CPU42に対し、NVRAM50に対して書き込みアクセスにかかるデータを書き込ませる。
【0097】
BMC57は、接続切り替え機能部53、55に対して、接続の切り替えを制御する。
【0098】
次に、実施の形態3にかかる計算機システム40の初期化処理について説明する。ここで、マスタのコアI/OをSB47、予備のコアI/OをSB48としている。
【0099】
まず、システムをブートすると、BMC57はハードウエアを初期化する。この処理については、
図4に示したフローと変わらないため説明を省略する。
【0100】
このとき、BMC57の初期化によって、実施の形態2と同様に接続切り替え機能部53、55が設定された計算機システム40の接続関係は
図8のようになる。
図8の実線部及び点線部の説明は、
図4と同様である。
【0101】
図8において、接続切り替え機能部53は、NB43とSB47とを接続させるように、プロトコル変換機能部54がいずれのデバイスとも接続されないように制御する。アドレス検出機能部60は、接続切り替え機能部53、割り込み機能部61と接続され、割り込み機能部61を介してGPIO58とも接続されている。接続切り替え機能部53、アドレス検出機能部60、割り込み機能部61は有効なデバイスであり、プロトコル変換機能部54は、無効なデバイスである。
【0102】
接続切り替え機能部55は、プロトコル変換機能部56とSB48とを接続するように制御される。接続切り替え機能部55、プロトコル変換機能部56は有効なデバイスであり、PCIeスロット51、GPIO59、アドレス検出機能部62、割り込み機能部63は無効なデバイスである。
【0103】
図9は、計算機システム40のBIOSによる初期化処理の一例を示すフローチャートである。
図7におけるステップS31〜S34は、
図4のステップS17〜S20と同様の処理であるため、説明を省略する。
【0104】
ステップS34の後、BIOSを実行するCPU41は、プロトコル変換装置45のアドレス検出機能部60の初期化を行う(ステップS35)。この初期化では、CPU41は検出するアドレス範囲(例えばNVRAM50の書き込みを行うアドレスのベースとリミット)を設定する。
【0105】
次に、アドレス検出機能を用いたOS運用中に、コアI/Oのデータを同期する方法について説明する。アドレス検出機能部60は、SB47内のNVRAM50へのライトアクセスを設定監視している。
【0106】
図10は、アドレス検出機能部60の監視処理の一例を示すフローチャートである。アドレス検出機能部60は、内部に設定されたSB47のアドレスに、OSを実行中のCPU41からアクセスがあったか否かを判定する。CPU41からアクセスがあった場合には、内部に設定されたSB47のアドレス(NVRAM50のアドレス)と比較して、アクセスにかかるアドレスが一致するか否かを判定する(ステップS36)。
【0107】
アクセスがない場合、又はアクセスがあっても設定されたアドレスへのアクセスではない場合には(ステップS36のNo)、アドレス検出機能部60はステップS36に戻って監視を続ける。
【0108】
アドレス検出機能部60が、設定されたSB47のアドレスに対するアクセスを検出した場合には(ステップS36のYes)、アドレス検出機能部60はその内部のメモリにアクセスにかかるアドレスと書き込みデータを記録する(ステップS37)。次にアドレス検出機能部60は、割り込み機能部61を介してGPIO58に割り込みを発生させる(ステップS38)。
【0109】
GPIO58からの割り込みによって、BIOSのシステムマネージメント機能が呼び出される(ステップS39)。CPU41は、BIOSのシステムマネージメント機能によって、なされたアクセスが、コアI/O機能(NVRAM50)へのライトアクセスか否かを判断する(ステップS40)。
【0110】
NVRAM50へのライトアクセスでない場合には(ステップS40のNo)、BIOSの割り込み処理は終了し、アドレス検出機能部60はステップS36に戻って監視を続ける。NVRAM50へのライトアクセスである場合には(ステップS40のYes)、CPU41は、BIOSのシステムマネージメント機能の制御によって、アドレス検出機能部60の内部のメモリに記録されたデータを参照する。そしてアドレス検出機能部60は、アクセスにかかる書き込みデータを、予備コアI/O(SB48)のNVRAM52に書き込む(ステップS41)。データを書き込むNVRAM52のアドレスは、アクセスにかかるNVRAM50のアドレスに対応したアドレスである。ここまでの処理が終了した後、アドレス検出機能部60はステップS36に戻って監視を続ける。
【0111】
実施の形態3にかかる計算機システム40の効果について説明する。計算機システム40では、アドレス検出機能部60の有するアドレス検出機能によって、OSを実行するCPUのNVRAM50へのデータ書き込みを直ちに予備コアI/O(SB48)へ反映し、NVRAM52にそのデータを書き込むように構成されている。それにより、マスタコアI/Oと予備コアI/Oとのシステム・コア記憶領域のデータ同期がより確実にとれる。そのため、突然のコアI/O障害発生によるシステムダウンの際にも、予備コアI/Oには最新の設定情報が記憶されており、その最新の設定情報に基づいてシステムを再開することができる。
【0112】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、計算機システム20、40においては、実施の形態1と同様のバリエーションの変更が可能である。
【0113】
計算機システム40においては、BIOSのシステムマネージメント機能でなく、他のプログラムによって、ライトアクセスか否かの判断を実行してNVRAM52に書き込みデータを書き込むようにCPU41が制御されてもよい。なお、アドレス検出機能部、割り込み機能部は、プロトコル変換装置45のみに備えられていてもよい。マスタコアI/OはSB47であり、NVRAM50へのアクセスにかかる書き込みデータをNVRAM52に書き込むことができれば、上述の効果が生じるからである。
【0115】
(付記1)
制御部と、
前記制御部に接続された第1の入出力ポートと、
計算機システムのブートに必要な設定情報を記憶可能な第1の記憶部を有し、前記制御部に接続される現用の入出力コントローラと、
計算機システムのブートに必要な設定情報を記憶可能な第2の記憶部を有し、前記制御部に接続される予備の入出力コントローラと、
前記第1の入出力ポートと前記予備の入出力コントローラとを接続する第1の接続装置と、を備え、
前記第1の入出力ポートと前記第1の接続装置とを介して、前記第1の記憶部の前記設定情報と前記第2の記憶部の前記設定情報とが同期できるように構成される計算機システム。
【0116】
(付記2)
前記制御部は、前記計算機システムのBIOSを実行して、前記第1の接続装置に対し前記制御部のアクセスを可能にするアドレスを割り当てることにより、前記第1の記憶部の前記設定情報と前記第2の記憶部の前記設定情報とを同期可能にする、
付記1記載の計算機システム。
【0117】
(付記3)
前記制御部は、前記計算機システムのBIOSを実行中に、前記第1の記憶部の前記設定情報と前記第2の記憶部の前記設定情報とを同期する制御を実行する、
付記2記載の計算機システム。
【0118】
(付記4)
前記計算機システムは、
前記制御部に接続された第2の入出力ポートと、
前記第2の入出力ポートと前記現用の入出力コントローラとを接続する第2の接続装置と、をさらに備え、
前記第2の入出力ポートと前記第2の接続装置とを介して、前記第2の記憶部の前記設定情報と前記第1の記憶部の前記設定情報とが同期できるように構成される付記1ないし3のいずれか1つに記載の計算機システム。
【0119】
(付記5)
前記計算機システムは、前記制御部に接続された第1のノースブリッジ及び第2のノースブリッジをさらに備え、
前記現用の入出力コントローラは、前記第1のノースブリッジを介して前記制御部に接続される第1のサウスブリッジであり、前記予備の入出力コントローラは、前記第2のノースブリッジを介して前記制御部に接続される第2のサウスブリッジである、
付記4に記載の計算機システム。
【0120】
(付記6)
少なくとも、前記第1の接続装置が前記制御部と前記予備の入出力コントローラの間に接続されているか、前記第2の接続装置が前記制御部と前記現用の入出力コントローラの間に接続されている、
付記5に記載の計算機システム。
【0121】
(付記7)
少なくとも、前記第1の入出力ポートが前記現用の入出力コントローラに設けられているか、前記第2の入出力ポートが前記予備の入出力コントローラに設けられている、
付記5又は6に記載の計算機システム。
【0122】
(付記8)
前記第1の接続装置は、前記第1の入出力ポートからの出力信号の通信プロトコルを変換して、変換後の当該出力信号を前記予備の入出力コントローラに出力する、
付記1ないし7のいずれか1つに記載の計算機システム。
【0123】
(付記9)
前記第1の接続装置は、前記制御部から前記第1の入出力ポートを介してアクセスがあった場合に、アクセス先のアドレスを、前記第1の接続装置に割り当てられたアドレスから、前記第2の記憶部に割り当てられたアドレスに変換することによって当該アクセスを前記第2の記憶部に転送する、
付記1ないし8のいずれか1つに記載の計算機システム。
【0124】
(付記10)
前記第1の接続装置は、
前記制御部から出力された書き込みアクセスが、前記第1の記憶部に対するものであるか否かを判断するアクセス判断部と、
前記書き込みアクセスが前記第1の記憶部に対するものである場合に、割り込み処理を実行することにより、前記制御部に対し、前記第2の記憶部に対して前記書き込みアクセスにかかるデータを書き込ませる割り込み機能部と、
を有する、付記1ないし9のいずれか1つに記載の計算機システム。
【0125】
(付記11)
前記計算機システムは、
前記予備の入出力コントローラが前記第1の入出力ポートを介して前記制御部に接続するように前記第1の接続装置を制御する接続コントローラをさらに備える、
付記1ないし10のいずれか1つに記載の計算機システム。
【0126】
(付記12)
付記1ないし11のいずれかに記載の計算機システムの制御方法であって、
前記第1の入出力ポートと前記第1の接続装置とを介して、前記第1の記憶部と前記第2の記憶部とを接続するステップと、
前記第1の記憶部の前記設定情報と前記第2の記憶部の前記設定情報とを同期するステップと、
を備える計算機システムの制御方法。