(57)【要約】【課題】ＣＰＵ再リセットを伴うＣＰＵ再初期化時に発生しうるタイムアウトを防止する。【解決手段】ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存する。ＩＯトランザクションの停止を行う。前記ＣＰＵのリセット処理を行う。前記保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行う。停止させたＩＯトランザクションを再開させる。各手段を備え、前記レジスタ状態の保存をした後に第１のＩＯトランザクションの停止を行い、前記ＣＰＵリセット処理を行った後に第１のＩＯトランザクションの開始を行い、当該第１のＩＯトランザクションの開始をした後に第２のＩＯトランザクションの停止を行い、前記コンテキストリストアを行った後に第２のＩＯトランザクションの開始を行う。【選択図】図１
2011081544.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止装置において、
前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存手段と、
ＩＯトランザクションの停止を行うＩＯトランザクション停止手段と、
前記ＣＰＵのリセット処理を行うＣＰＵリセット手段と、
前記コンテキスト保存手段が保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰手段と、
前記ＩＯトランザクション停止手段が停止させたＩＯトランザクションを再開させるＩＯトランザクション開始手段と、
を備え、
前記レジスタ状態の保存をした後に第１のＩＯトランザクションの停止を行い、前記ＣＰＵリセット処理を行った後に第１のＩＯトランザクションの開始を行い、当該第１のＩＯトランザクションの開始をした後に第２のＩＯトランザクションの停止を行い、前記コンテキストリストアを行った後に第２のＩＯトランザクションの開始を行うことを特徴とするタイムアウト防止装置。
【請求項２】
請求項１に記載のタイムアウト防止装置において、
前記ＣＰＵに対してのＩＯ割り込み状態を保存するＩＯ割り込み保存手段と、
前記ＩＯ割り込み保存手段が保存したＩＯ割り込みを前記ＣＰＵに対して再送するＩＯ割り込み再送手段と、を更に備え、
前記ＩＯ割り込み保存手段は、前記ＩＯトランザクションが停止されていない間に発生したＩＯ割り込みを保存することを特徴とするタイムアウト防止装置。
【請求項３】
請求項２に記載のタイムアウト防止装置において、
前記ＩＯ割り込み保存手段は、
前記第１のＩＯトランザクションの停止後のＩＯ割り込み状態である第１のＩＯ割り込み状態を保存し、
前記第２のＩＯトランザクションの停止後のＩＯ割り込み状態である第２のＩＯ割り込み状態を保存し、
前記第２のＩＯトランザクションの開始を行った後のＩＯ割り込み状態である第３のＩＯ割り込み状態を保存し、
前記ＩＯ割り込み再送手段は、前記第１のＩＯ割り込み状態又は第２のＩＯ割り込み状態に含まれるＩＯ割り込みであって、第３のＩＯ割り込み状態に含まれていない割り込みについてのみ再送を行うことを特徴とするタイムアウト防止装置。
【請求項４】
請求項１乃至３の何れか１項に記載のタイムアウト防止装置において、
前記ＣＰＵが有する複数のコアにおいてＣＬＬ（Core Level Lockstep）が実現されており、前記ＣＰＵの再リセットは、Ｎｏｎ−Ｌｏｃｋｓｔｅｐ  ＭｏｄｅからＬｏｃｋｓｔｅｐ  ｍｏｄｅへと移行するためのＬｏＬ  Ｒｅｃｏｖｅｒｙに伴うものであることを特徴とするタイムアウト防止装置。
【請求項５】
ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止方法において、
前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存ステップと、
第１のＩＯトランザクションの停止を行う第１のＩＯトランザクション停止ステップと、
前記ＣＰＵのリセット処理を行うＣＰＵリセットステップと、
前記第１のＩＯトランザクション停止ステップにおいて停止させた前記ＩＯトランザクションの開始を行う第１のＩＯトランザクション開始ステップと、
第２のＩＯトランザクションの停止を行う第２のＩＯトランザクション停止ステップと、
前記コンテキスト保存ステップにおいて保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰ステップと、
前記第２のＩＯトランザクション停止ステップにおいて停止させた前記ＩＯトランザクションの開始を行う第２のＩＯトランザクション開始ステップと、
を備えることを特徴とするタイムアウト防止方法。
【請求項６】
請求項５に記載のタイムアウト防止方法において、
前記ＣＰＵに対してのＩＯ割り込み状態を保存するＩＯ割り込み保存ステップと、
前記ＩＯ割り込み保存ステップが保存したＩＯ割り込みを前記ＣＰＵに対して再送するＩＯ割り込み再送ステップと、を更に備え、
前記ＩＯ割り込み保存ステップにおいては、前記ＩＯトランザクションが停止されていない間に発生したＩＯ割り込みを保存することを特徴とするタイムアウト防止方法。
【請求項７】
請求項６に記載のタイムアウト防止方法において、
前記ＩＯ割り込み保存ステップとして、
前記第１のＩＯトランザクションの停止後のＩＯ割り込み状態である第１のＩＯ割り込み状態を保存する第１のＩＯ割り込み保存ステップと、
前記第２のＩＯトランザクションの停止後のＩＯ割り込み状態である第２のＩＯ割り込み状態を保存する第１のＩＯ割り込み保存ステップと、
前記第２のＩＯトランザクションの開始を行った後のＩＯ割り込み状態である第３のＩＯ割り込み状態を保存する第３のＩＯ割り込み保存ステップと、を含み、
前記ＩＯ割り込み再送ステップにおいては、前記第１のＩＯ割り込み状態又は第２のＩＯ割り込み状態に含まれるＩＯ割り込みであって、第３のＩＯ割り込み状態に含まれていない割り込みについてのみ再送を行うことを特徴とするタイムアウト防止方法。
【請求項８】
請求項５乃至７の何れか１項に記載のタイムアウト防止方法において、
前記ＣＰＵが有する複数のコアにおいてＣＬＬ（Core Level Lockstep）が実現されており、前記ＣＰＵの再リセットは、Ｎｏｎ−Ｌｏｃｋｓｔｅｐ  ＭｏｄｅからＬｏｃｋｓｔｅｐ  ｍｏｄｅへと移行するためのＬｏＬ  Ｒｅｃｏｖｅｒｙに伴うものであることを特徴とするタイムアウト防止方法。
【請求項９】
ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止プログラムにおいて、
前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存手段と、
ＩＯトランザクションの停止を行うＩＯトランザクション停止手段と、
前記ＣＰＵのリセット処理を行うＣＰＵリセット手段と、
前記コンテキスト保存手段が保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰手段と、
前記ＩＯトランザクション停止手段が停止させたＩＯトランザクションを再開させるＩＯトランザクション開始手段と、
を備え、
前記レジスタ状態の保存をした後に第１のＩＯトランザクションの停止を行い、前記ＣＰＵリセット処理を行った後に第１のＩＯトランザクションの開始を行い、当該第１のＩＯトランザクションの開始をした後に第２のＩＯトランザクションの停止を行い、前記コンテキストリストアを行った後に第２のＩＯトランザクションの開始を行うタイムアウト防止装置としてコンピュータを機能させることを特徴とするタイムアウト防止プログラム。
【請求項１０】
請求項９に記載のタイムアウト防止プログラムにおいて、
前記タイムアウト防止装置は、
前記ＣＰＵに対してのＩＯ割り込み状態を保存するＩＯ割り込み保存手段と、
前記ＩＯ割り込み保存手段が保存したＩＯ割り込みを前記ＣＰＵに対して再送するＩＯ割り込み再送手段と、を更に備え、
前記ＩＯ割り込み保存手段は、前記ＩＯトランザクションが停止されていない間に発生したＩＯ割り込みを保存することを特徴とするタイムアウト防止プログラム。
【請求項１１】
請求項１０に記載のタイムアウト防止プログラムにおいて、
前記ＩＯ割り込み保存手段は、
前記第１のＩＯトランザクションの停止後のＩＯ割り込み状態である第１のＩＯ割り込み状態を保存し、
前記第２のＩＯトランザクションの停止後のＩＯ割り込み状態である第２のＩＯ割り込み状態を保存し、
前記第２のＩＯトランザクションの開始を行った後のＩＯ割り込み状態である第３のＩＯ割り込み状態を保存し、
前記ＩＯ割り込み再送手段は、前記第１のＩＯ割り込み状態又は第２のＩＯ割り込み状態に含まれるＩＯ割り込みであって、第３のＩＯ割り込み状態に含まれていない割り込みについてのみ再送を行うことを特徴とするタイムアウト防止プログラム。
【請求項１２】
請求項９乃至１１の何れか１項に記載のタイムアウト防止プログラムにおいて、
前記ＣＰＵが有する複数のコアにおいてＣＬＬ（Core Level Lockstep）が実現されており、前記ＣＰＵの再リセットは、Ｎｏｎ−Ｌｏｃｋｓｔｅｐ  ＭｏｄｅからＬｏｃｋｓｔｅｐ  ｍｏｄｅへと移行するためのＬｏＬ  Ｒｅｃｏｖｅｒｙに伴うものであることを特徴とするタイムアウト防止プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＣＰＵ再リセットを伴うＣＰＵ再初期化時に発生しうるタイムアウトの防止に関する。
【背景技術】
【０００２】
現在、演算結果の信頼性を高める技術として演算処理装置を搭載したモジュール等を複数用意し、それぞれに同じ演算処理を行わせ、その演算結果を用いるということが一般的に行われている。
【０００３】
このような技術の一例として、特許文献１にフォルトトレラントコンピュータ装置を用いた技術が記載されている。特許文献１に記載の技術では、フォルトトレラントコンピュータ装置は、複数のコンピューティングモジュール１００、２００を備えて構成され、各コンピューティングモジュール１００、２００はそれぞれクロック同期して同じ命令列を処理し、各コンピューティングモジュールの処理結果を比較し、１個のコンピューティングモジュールで故障が発生しても、残りのコンピューティングモジュールにより処理を継続することができる。
【０００４】
また、このように複数の演算結果を利用する技術の一つとして、ＣＬＬ（Core Level Lockstep）という技術が用いられている。
【０００５】
ここで、ＣＬＬは、２つのコアが同じ処理を実行し計算結果を比較し信頼性を高める技術である。２つのコアが同じ処理を実行し計算結果を比較している状態を「Ｌｏｃｋｓｔｅｐ  ｍｏｄｅ」と呼ぶ。Ｌｏｃｋｓｔｅｐ  ｍｏｄｅ中に計算結果不一致が発生した場合は、復帰不可障害としてＣＰＵの故障を指摘する。また、Ｌｏｃｋｓｔｅｐ  ｍｏｄｅ中は計算結果不一致障害のほかに、各コアで障害が起きる可能性がある。そして、各コアで復帰可能障害が発生したときには、一時的にＬｏｃｋｓｔｅｐ  ｍｏｄｅが解除され（この解除のことを「ＬｏＬ（Loss of Lockstep）」ということもある。）、計算結果の比較ができない状態である「Ｎｏｎ−Ｌｏｃｋｓｔｅｐ  Ｍｏｄｅ」となってしまう。
【０００６】
Ｎｏｎ−Ｌｏｃｋｓｔｅｐ  Ｍｏｄｅになった時、ＢＩＯＳは、再度プロセッサの状態をＬｏｃｋｓｔｅｐ  ｍｏｄｅにする必要がある。この動作を「ＬｏＬ  Ｒｅｃｏｖｅｒｙ」と呼ぶ。ＬｏＬ  Ｒｅｃｏｖｅｒｙには、ＣＰＵの再リセットが必要であり、一時的にＢＩＯＳでは、ＣＰＵ−ＩＯ間のトランザクション（以下、トランザクションを適宜「Ｔｘｎ」と表記する。また、ＣＰＵ−ＩＯ間のトランザクションを「ＩＯ  Ｔｘｎ」と表記する。）を停止する処理が必要とされる。これは、ＣＰＵの再リセット中に、ＩＯからＬｏＬしたプロセッサに割り込みが挙がってきた場合の割り込みのロストするのを防止するためである。
【０００７】
そして、このようにＣＰＵ−ＩＯ間のトランザクションを停止することにより割り込みがロストするという事態を防止することができる。
【０００８】
なお、ＩＯからプロセッサへの割り込みに関する技術としては、例えば特許文献２の第２頁左下から７行目から〜第３頁右下から９行目について記載がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−４６５９９号公報
【特許文献２】特開平３−１０２４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述したようなＣＰＵ−ＩＯ間のトランザクションを停止するという技術には以下のような問題があった。
【００１１】
それは、ＩＯ  Ｔｘｎ停止時間が長いと、ＰＣＩ  Ｅｘｐｒｅｓｓカードにおいて、Ｃｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔが発生してしまい、システム障害に至る可能性があるという問題である。この点について、以下で詳細に述べる。
【００１２】
ＣＬＬは、２つのコアが同じ処理を実行し計算結果を比較し信頼性を高める技術であり、各コアで障害が発生した場合、Ｌｏｃｋｓｔｅｐ  Ｍｏｄｅに再入するためには、ＣＰＵリセットを行う必要がある。上述したように一般的なＣＰＵリセット部では、ＣＰＵリセット中のＩＯ割り込みのロストを防ぐため、ＩＯ  Ｔｘｎ停止を行うが、このＩＯ  Ｔｘｎ停止時間が長くなると、ＰＣＩ  ＥｘｐｒｅｓｓカードがＣｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔになってしまうという問題がある。このＣｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔは、ＰＣＩ  Ｅｘｐｒｅｓｓの仕様上ｄｅｆａｕｌｔ  ５０ｍｓと規定されている。ＧＥＮ１世代の多くのＰＣＩ  Ｅｘｐｒｅｓｓカードでは、Ｃｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔ時間の変更ができない。そのため、Ｃｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔを防ぐにはＩＯ  Ｔｘｎ停止時間が５０ｍｓ超えないようにする必要があった。
【００１３】
図４に一般的なＬｏＬ  Ｒｅｃｏｖｅｒｙフローを示す。ＣＰＵリセット（Ｂ６０３）前に、現状態を保存するためコンテキストセーブ（Ｂ６０２）を実施し、ＣＰＵリセット後ＣＰＵリセット前の状態に復帰するため、コンテキストリストア（Ｂ６０４）を行う。Ｂ６０２とＢ６０４の間にＩＯからの割り込みがあがると、割り込みをロストしてしまうため、ＩＯトランザクション停止（Ｂ６０１）とＩＯトランザクション開始（Ｂ６０５）を行っている。Ｂ２からＢ６までの処理時間が５０ｍｓを超えており、ＰＣＩ  Ｅｘｐｒｅｓｓカードのｄｅｆａｕｌｔ  Ｃｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅｏｕｔになってしまうという問題があった。
【００１４】
そこで、本発明はＣＰＵ再リセットを伴うＣＰＵ再初期化時に発生しうるタイムアウトを防止することが可能なＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウト防止方法、その装置及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の観点によれば、ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止装置において、前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存手段と、ＩＯトランザクションの停止を行うＩＯトランザクション停止手段と、前記ＣＰＵのリセット処理を行うＣＰＵリセット手段と、前記コンテキスト保存手段が保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰手段と、前記ＩＯトランザクション停止手段が停止させたＩＯトランザクションを再開させるＩＯトランザクション開始手段と、を備え、前記レジスタ状態の保存をした後に第１のＩＯトランザクションの停止を行い、前記ＣＰＵリセット処理を行った後に第１のＩＯトランザクションの開始を行い、当該第１のＩＯトランザクションの開始をした後に第２のＩＯトランザクションの停止を行い、前記コンテキストリストアを行った後に第２のＩＯトランザクションの開始を行うことを特徴とするタイムアウト防止装置が提供される。
【００１６】
本発明の第２の観点によれば、ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止方法において、前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存ステップと、第１のＩＯトランザクションの停止を行う第１のＩＯトランザクション停止ステップと、前記ＣＰＵのリセット処理を行うＣＰＵリセットステップと、前記第１のＩＯトランザクション停止ステップにおいて停止させた前記ＩＯトランザクションの開始を行う第１のＩＯトランザクション開始ステップと、第２のＩＯトランザクションの停止を行う第２のＩＯトランザクション停止ステップと、前記コンテキスト保存ステップにおいて保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰ステップと、前記第２のＩＯトランザクション停止ステップにおいて停止させた前記ＩＯトランザクションの開始を行う第２のＩＯトランザクション開始ステップと、を備えることを特徴とするタイムアウト防止方法が提供される。
【００１７】
本発明の第３の観点によれば、ＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウトを防止するためのタイムアウト防止プログラムにおいて、前記ＣＰＵの再リセットが必要となった際に、前記ＣＰＵのレジスタ状態を保存するコンテキスト保存手段と、ＩＯトランザクションの停止を行うＩＯトランザクション停止手段と、前記ＣＰＵのリセット処理を行うＣＰＵリセット手段と、前記コンテキスト保存手段が保存した前記ＣＰＵのレジスタ状態に基づいてコンテキストリストアを行うコンテキスト復帰手段と、前記ＩＯトランザクション停止手段が停止させたＩＯトランザクションを再開させるＩＯトランザクション開始手段と、を備え、前記レジスタ状態の保存をした後に第１のＩＯトランザクションの停止を行い、前記ＣＰＵリセット処理を行った後に第１のＩＯトランザクションの開始を行い、当該第１のＩＯトランザクションの開始をした後に第２のＩＯトランザクションの停止を行い、前記コンテキストリストアを行った後に第２のＩＯトランザクションの開始を行うタイムアウト防止装置としてコンピュータを機能させることを特徴とするタイムアウト防止プログラム提供される。
【発明の効果】
【００１８】
本発明によれば、ＩＯ  Ｔｘｎ停止区間を分割することからＩＯタイムアウトをすることのないＣＰＵリセットを実現することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態の基本的構成を表す図である。
【図２】本発明の実施形態の基本的動作を表す図である。
【図３】本発明の実施形態の実装例の基本的構成を表す図である。
【図４】本発明と関連する発明の動作について示す図である。
【発明を実施するための形態】
【００２０】
まず、本発明の実施形態の概略を説明する。ＣＬＬなどのＣＰＵが提供する拡張機能がＣＰＵ内部エラー等によって、Ｄｉｓａｂｌｅとなった場合において、再度機能をＥｎａｂｌｅにするためにはＣＰＵの再リセットが必要である。本発明の実施形態は、概略、ＣＰＵ再リセットに伴うＣＰＵ再初期化におけるＩＯ停止を分割することにより、ＩＯタイムアウトさせる事無く、拡張機能をＥｎａｂｌｅにするというものである。
【００２１】
次に、本発明の実施形態について図面を用いて詳細に説明する。
【００２２】
図１を参照すると、本実施形態は、ＢＩＯＳ（Basic Input/Output System）１００と記憶装置２００を含む。
【００２３】
ＢＩＯＳ１００は、コンテキスト保存部１０１と、ＩＯ  Ｔｘｎ停止部１０２と、ＩＯ割り込み保存部１０３と、ＣＰＵリセット部１０４と、コンテキスト復帰部１０５と、ＩＯ  Ｔｘｎ開始部１０６と、ＩＯ割り込み再送部１０７を含む。
【００２４】
コンテキスト保存部１０１は、プロセッサのレジスタの状態をコンテキスト記憶部２０１に保存する部分である。ＩＯ  Ｔｘｎ停止部１０２は、ＩＯ  Ｔｘｎの停止処理を行う部分である。ＩＯ割り込み保存部１０３は、ＣＰＵリセットフロー中のＩＯ割り込み状態をＩＯ割り込み記憶部２０２に保存する部分である。ＣＰＵリセット部１０４は、ＣＰＵの内部リセット処理を行う部分である。コンテキスト復帰部１０５は、コンテキスト記憶部２０１に記憶されているプロセッサのレジスタの状態を読み取り、コンテキストリストアを行う部分である。ＩＯ  Ｔｘｎ開始部１０６は、ＩＯ  Ｔｘｎの開始処理を行う部分である。ＩＯ割り込み再送部１０７は、ＩＯ割り込み記憶部２０２に保存されているＣＰＵリセットフロー中のＩＯ割り込み状態を再送する部分である。
【００２５】
また、記憶装置２００は、コンテキスト記憶部２０１とＩＯ割り込み記憶部２０２を有している。
【００２６】
コンテキスト記憶部２０１は、プロセッサのレジスタの状態を記録する部分である。一方、ＩＯ割り込み記憶部２０２は、ＣＰＵリセットフロー中のＩＯ割り込み状態を保存する部分である。
【００２７】
次に、図１のブロック図及び図２のフローチャートを参照して本実施形態の動作について詳細に説明する。
【００２８】
ＢＩＯＳ１００は、ＬｏＬが発生したことを受け、ＬｏＬ  Ｒｅｃｏｖｅｒｙを開始する。
【００２９】
まず、コンテキスト保存部１０１が、プロセッサ（ＣＰＵ）のレジスタ状態をコンテキスト記憶部２０１に保存する（ステップＡ５０１）。
【００３０】
ＩＯ  Ｔｘｎ停止部１０２が第一回目のＩＯ  Ｔｘｎ停止を行う。図２中では第１のＩＯトランザクション停止と表記する（ステップＡ５０２）。
【００３１】
次に、ＩＯ割り込み保存部１０３が、ＩＯ割り込み記憶部２０２に、ＩＯ割り込み状態を保存する（ステップＡ５０３）。
【００３２】
ステップＡ５０３における保存によりＩＯ割り込み記憶部２０２がＩＯ割り込み状態を記録した後に、ＣＰＵリセット部１０４が、ＣＰＵリセットを行う（ステップＡ５０４）。
【００３３】
ＩＯ  Ｔｘｎ開始部１０６が、ＩＯ  Ｔｘｎを開始する。図２中では第１のＩＯトランザクション開始と表記する（ステップＡ５０５）。
【００３４】
ＩＯ  Ｔｘｎ停止部１０２が再度ＩＯ  Ｔｘｎ停止を行う。図２中では第２のＩＯトランザクション停止と表記する（ステップＡ５０６）。
【００３５】
次に、ＩＯ割り込み保存部１０３が、ＩＯ割り込み記憶部２０２に、ＩＯ割り込み状態を保存する（ステップＡ５０７）。
【００３６】
コンテキスト復帰部１０５が、コンテキスト記憶部２０１が記録しているプロセッサのレジスタ状態に基づいてコンテキストリストアを行う。（ステップＡ５０８）。
【００３７】
ＩＯ  Ｔｘｎ開始部１０５が、ＩＯ  Ｔｘｎを開始する。図２中では第１のＩＯトランザクション開始と表記する（ステップＡ５０９）。
【００３８】
ＩＯ割り込み保存部１０３が、ＩＯ割り込み記憶部２０２に、ＩＯ割り込み状態を保存する（ステップＡ５１０）。
【００３９】
ＩＯ割り込み再送部１０７が、ロストした割り込みの再送を行う。ここで、再送を行う割り込みは、
（ステップＡ５０３で記憶した割り込み状態）ｏｒ（ステップＡ５０７で記憶した割り込み状態）ｘｏｒ（ステップＡ５１０で記憶した割り込み状態）
である。（ステップＡ５１１）。
【００４０】
すなわち、ステップＡ５０３又はステップＡ５０７で記憶したＩＯ割り込み状態に含まれるＩＯ割り込みであって、ステップＡ５１０で記憶したＩＯ割り込み状態に含まれていないＩＯ割り込みについてはロストしたものとして再送を行う。一方ステップＡ５０３又はステップＡ５０７で記憶したＩＯ割り込み状態に含まれるＩＯ割り込みであって、ステップＡ５１０で記憶したＩＯ割り込み状態にも含まれている割り込みについては未だロストしていないため再送は行わない。
【００４１】
以上説明した本発明の実施形態は、以下のような効果を奏する。
【００４２】
第１の効果は、ＩＯタイムアウトをすることなく、ＣＰＵリセットできる点である。
【００４３】
上述したように、一般的な手法では、図４に示すように、ＩＯ  Ｔｘｎを停止したまま、コンテキストセーブ、ＣＰＵリセット、コンテキストリストアを行っており、ＩＯトランザクション停止区間が長い。しかし、本実施形態ではＩＯ  Ｔｘｎ停止区間を分割していることからＩＯタイムアウトをすることなく、ＣＰＵリセットできる。
【００４４】
第２の効果は、割り込みロストを防ぐことができる点である。
【００４５】
その理由はＣＰＵリセットフローの途中でＩＯ割り込みの状態を記憶し、割り込み再送をすることで、ＩＯ無停止区間に発生した割り込みをＣＰＵ再初期化によって割り込み状態が初期化されても、割り込み再送のための処理を組み込むからである。
【００４６】
次に、図３を参照して、本実施形態の実装例を説明する。本実装例は、ＢＩＯＳ１００及び記憶装置２００に加えて、ＣＰＵ３００及びＩＯデバイス群４００を有する。更にＣＰＵ３００は、第１のコア３１０及び第２のコア３２０を有する。
【００４７】
そして、第１のコア３１０及び第２のコア３２０が同じ処理を実行しＣＬＬを実現する。一方、ＩＯデバイス群４００からはＩＯ割り込みが行われる。
【００４８】
なお、ＢＩＯＳ１００及び記憶装置２００の動作は、図１及び図２を用いて上述した通りである。また、ＢＩＯＳ１００及び記憶装置２００内部の構成は図１における構成と同様であるので各部分の説明及び図示は省略する。
【００４９】
なお、本発明の実施形態であるＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウト防止装置は、ハードウェアにより実現することもできるが、コンピュータをそのＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウト防止装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００５０】
また、本発明の実施形態によるＣＰＵ再リセットを伴うＣＰＵ再初期化時におけるタイムアウト防止方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００５１】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【符号の説明】
【００５２】
１００  ＢＩＯＳ
１０１  コンテキスト保存部
１０２  ＩＯ  Ｔｘｎ停止部
１０３  ＩＯ割り込み保存部
１０４  ＣＰＵリセット部
１０５  コンテキスト復帰部
１０６  ＩＯ  Ｔｘｎ開始部
１０７  ＩＯ割り込み再送部
２００  記憶装置
２０１  コンテキスト記憶部
２０２  ＩＯ割り込み記憶部
３００  ＣＰＵ
３１０  第１のコア
３２０  第２のコア
４００  ＩＯデバイス群
【図１】
2011081544.tif 000003
【図２】
2011081544.tif 000004
【図３】
2011081544.tif 000005
【図４】
2011081544.tif 000006