(57)【要約】【課題】  複雑なＨＷ構成を必要とせずに実現することができると共に、並列処理装置における空いている並列処理部を有効に活用することで、処理速度の低下をほとんど発生させることなく通常運用時におけるデータの退避を行うことができるようにする。【解決手段】  ＦＷ処理４でメモリのデータが書き換えられるため、先行するＦＷ処理２，３で、書き換えられる前のデータとそのときのアドレスを退避しておく。これらの退避処理は、並列処理における空き処理ユニットが実行する。ＦＷ処理〈１〉〜〈３〉では、復元先アドレスに復元データをストアすると同時に、分岐ユニットがこのＳＷ命令の最初に分岐させることで、ＦＷ処理４に先行する書き換え準備処理であるＦＷ処理１からの処理を再試行する。【選択図】  図３
2005284647.tif 000002
【特許請求の範囲】
【請求項１】
複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置であって、
メモリに保持していたデータを書き換える処理が実行される場合に、当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させ、
前記書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元処理を行うことで、各並列処理部が前記書き換え準備処理から再試行するよう構成されたことを特徴とする並列処理装置。
【請求項２】
カウンタ手段を備え、
前記データ書き出し先アドレスおよび前記書き換え前データを退避させる毎に前記カウンタ手段を加算し、
障害発生後に前記復元処理を行う際には、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタ手段を減算することを特徴とする請求項１記載の並列処理装置。
【請求項３】
前記カウンタ手段は、プロセッサ内部の汎用レジスタに設けられたことを特徴とする請求項１または２記載の並列処理装置。
【請求項４】
前記カウンタ手段は、メモリ内に設けられたことを特徴とする請求項１または２記載の並列処理装置。
【請求項５】
前記各処理は、ファームウェアに基づいて実行されることを特徴とする請求項１から４の何れか１項に記載の並列処理装置。
【請求項６】
複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置における命令再試行方法であって、
メモリに保持していたデータを書き換える処理が実行される場合に、当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させる退避工程と、
前記書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元工程と、
前記復元工程の後で各並列処理部が前記書き換え準備処理から再試行する再試行工程とを備えたことを特徴とする命令再試行方法。
【請求項７】
前記退避工程では、前記データ書き出し先アドレスおよび前記書き換え前データを退避させる毎にカウンタを加算し、
前記復元工程では、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタを減算することを特徴とする請求項６記載の命令再試行方法。
【請求項８】
前記各工程は、ファームウェアに基づいて行われることを特徴とする請求項６または７記載の命令再試行方法。
【請求項９】
複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置における命令再試行プログラムであって、
メモリに保持していたデータを書き換える処理が実行される場合、
コンピュータに、
当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させる退避処理と、
前記書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元処理と、
前記復元処理の後で各並列処理部が前記書き換え準備処理から再試行する再試行処理とを実行させることを特徴とする命令再試行プログラム。
【請求項１０】
前記退避処理では、前記データ書き出し先アドレスおよび前記書き換え前データを退避させる毎にカウンタを加算し、
前記復元処理では、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタを減算することを特徴とする請求項９記載の命令再試行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害発生時にもコンピュータシステムの運用を継続するために命令実行の再試行を行う機能を備えた並列処理装置、命令再試行方法、およびプログラムに関する。
【背景技術】
【０００２】
従来より、コンピュータシステムにおいては、障害発生時にも命令再試行を行うことで安定した運用ができるようにするため、多くのハードウェア（以下、ＨＷ）資源が投入されている。
一例として、本出願人による特許文献１のものでは、プロセッサでマイクロコードの実行中に障害を検出した場合、キャッシュデータ待避制御回路を備えたキャッシュデータ待避部により、予め待避しておいたそのマイクロコードに先行するマイクロコードによって更新された書き込みデータをキャッシュメモリに書き戻して復旧させている。
【０００３】
また、特許文献２のものでは、データの退避および回復を行う回路により、退避データ回復サイクル数を一定値として障害発生部位に応じて退避データスタックのポインタを操作して回復を行っている。
【０００４】
また、特許文献３のものでは、ソフトウェアレジスタ数に応じてバックアップレジスタを含む回路を設け、バックアップレジスタの内容をソフトウェアレジスタに戻すことによりソフトウェア命令単位の再実行を行う手段を備えている。
【特許文献１】特開２００３−１５９５６号公報
【特許文献２】特開昭６１−１６６６３６号公報
【特許文献３】特開平４−１８１３３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した特許文献１から３のものは、ＨＷ構成を工夫することで障害発生時の命令再試行を行おうとするものであり、ＨＷ構成を簡略化することについてまで考慮されたものではなかった。
近年、プロセッサの高速化に伴い、個々の命令が簡素化して制御も簡素化されてくると同時に、複数命令が同時に実行できるアーキテクチャに移行してきている。このような背景から、複雑なＨＷ制御を用いずに再試行可能とする手段が必要とされていた。
【０００６】
また、上述した特許文献１から３のものは、並列処理装置に適用することや、その空いている並列処理部を活用してデータの退避を行うことについてまで考慮されたものではなかった。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、複雑なＨＷ構成を必要とせずに実現することができると共に、並列処理装置における空いている並列処理部を有効に活用することで、処理速度の低下をほとんど発生させることなく通常運用時におけるデータの退避を行うことができ、障害発生時にも命令実行の再試行を行うことができ、安定した運用を行うことができる（可用性を向上させることができる）並列処理装置、命令再試行方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる目的を達成するために、本発明の第１の態様としての並列処理装置は、複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置であって、メモリに保持していたデータを書き換える処理が実行される場合に、当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させ、上記した書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元処理を行うことで、各並列処理部が前記書き換え準備処理から再試行するよう構成されたことを特徴とする。
【０００９】
カウンタ手段を備え、上記したデータ書き出し先アドレスおよび前記書き換え前データを退避させる毎に前記カウンタ手段を加算し、障害発生後に上記した復元処理を行う際には、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタ手段を減算することが好ましい。
【００１０】
上記したカウンタ手段は、プロセッサ内部の汎用レジスタに設けられたことが好ましい。
上記したカウンタ手段は、メモリ内に設けられてもよい。
上記した各処理は、ファームウェアに基づいて実行されることが好ましい。
【００１１】
また、本発明の第２の態様としての命令再試行方法は、複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置における命令再試行方法であって、メモリに保持していたデータを書き換える処理が実行される場合に、当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させる退避工程と、上記した書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元工程と、前記復元工程の後で各並列処理部が前記書き換え準備処理から再試行する再試行工程とを備えたことを特徴とする。
【００１２】
上記した退避工程では、前記データ書き出し先アドレスおよび前記書き換え前データを退避させる毎にカウンタを加算し、上記した復元工程では、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタを減算することが好ましい。
上記した各工程は、ファームウェアに基づいて行われることが好ましい。
【００１３】
また、本発明の第３の態様としての命令再試行プログラムは、複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置における命令再試行プログラムであって、メモリに保持していたデータを書き換える処理が実行される場合、コンピュータに、当該書き換える命令に先行する書き換え準備処理中に空いている並列処理部がメモリにおけるデータ書き出し先アドレスおよび書き換え前データを退避させる退避処理と、上記した書き換える命令の処理実行後に障害が発生した場合、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出して復元する復元処理と、前記復元処理の後で各並列処理部が前記書き換え準備処理から再試行する再試行処理とを実行させることを特徴とする。
【００１４】
上記した退避処理では、前記データ書き出し先アドレスおよび前記書き換え前データを退避させる毎にカウンタを加算し、上記した復元処理では、退避させた前記データ書き出し先アドレスおよび前記書き換え前データを取り出す度に前記カウンタを減算することが好ましい。
【発明の効果】
【００１５】
以上のように、本発明によれば、複雑なＨＷ構成を必要とせずに実現することができると共に、並列処理装置における空いている並列処理部を有効に活用することで、処理速度の低下をほとんど発生させることなく通常運用時におけるデータの退避を行うことができる。
このことにより、通常運用時にも処理速度の低下をほとんど発生させず、障害発生時にも命令実行の再試行を行うことができ、安定した運用を行う（可用性を向上させる）ことができる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明に係る並列処理装置を、ＶＬＩＷ（Very Long Instruction Word）アーキテクチャプロセッサを用いた並列処理装置に適用した一実施形態について、図面を用いて詳細に説明する。
本実施形態としての並列処理装置は、特別なＨＷ制御を用いずにファームウェア（以下、ＦＷ）による制御のみでソフトウェア（以下、ＳＷ）命令の再試行を可能とする好適なものを例示している。
【００１７】
まず、本発明の概要について、図１を参照して説明する。
１つのＳＷ命令を複数のＦＷ処理で行う場合、ＦＷ処理４で行われるデータの書き出しは予め決められている動作であり、メモリに保持していたデータを書き換える処理である。
このＦＷ処理４に先行するＦＷ処理２およびＦＷ処理３においては、既に書き込み先アドレスが判明しているため、ＦＷ処理２またはＦＷ処理３にでは書き込み前のデータをリードして一時退避エリアに保持しておく動作も並行して行わせる。ＦＷ処理４の実行以降で救済可能な間欠障害が発生した場合、ＦＷ処理４で行ったデータ書き換えをＦＷ処理〈１〉およびＦＷ処理〈２〉でリカバリし、ＳＷ命令の最初から再度実行する。
この動作により、複雑な回路や大規模なＨＷ資源の投資を行わずにプロセスの救済率を向上させることができる。
【実施例１】
【００１８】
次に、本発明の第１の実施形態としての並列処理装置の構成と処理の概要とについて、図２を参照して説明する。
この図２は、１ステップで複数の処理ユニットが実行可能なＶＬＩＷアーキテクチャプロセッサについての、あるＳＷ命令の処理フローの一部を抜き出したものである。
【００１９】
本実施形態としての並列処理装置は、図２に示すように、ＶＬＩＷアーキテクチャのプロセッサからなり、そのＶＬＩＷアーキテクチャとしてロードユニット（Ｌ−ＵＮＩＴ；ロード部）と、ストアユニット（Ｓ−ＵＮＩＴ；ストア部）と、演算ユニット（Ｅ−ＵＮＩＴ；演算部）と、分岐ユニット（Ｂ−ＵＮＩＴ；分岐部）とを備え、図２の例におけるＦＷ処理１から５などの処理をＦＷに基づいて実行する。
【００２０】
この図２に示す処理フローを実現する場合、ＦＷ処理１〜５が順に行われる。
ＦＷ処理１では、ロードユニットがデータＡの取り出しを行うと同時に、演算ユニットが書き出し先アドレスの計算を行う。ＦＷ処理２では、演算ユニットが、データＡの比較対象データＢを計算する。ＦＷ処理３では、演算ユニットがデータＡとデータＢとの比較を行い、ＦＷ処理４で比較結果の大きいデータが書き出し先アドレスに格納される。
すなわち、ＦＷ処理４が、メモリの書き出し先アドレスに保持していたデータを書き換える書き換え処理として位置づけられる処理であり、ＦＷ処理１〜３が、メモリに一時保持を行いながらロード、演算などを行い、その書き換え処理に先行する処理として書き換えるデータを準備する書き換え準備処理として位置づけられる処理である。
ＦＷ処理５は、ストア（メモリに保持していたデータの書き換え）を伴わない処理を、メモリに保持していたデータを書き換える処理の実行に直接関係しない後段の処理として例示したものである。
【００２１】
次に、図２に示す処理例の実行中に障害が発生した場合の本実施形態による再試行処理について、図３を参照して説明する。
ＦＷ処理２では、ロードユニットが書き出し先アドレスのデータを読み出すと同時に、ストアユニットがプロセッサ内部に持つ汎用レジスタを使用したアクセスカウンタを参照し、書き出し先アドレスの退避を行う。この退避はメモリ領域に予め割り当てられたＦＷ専用領域に対して行われる。
ＦＷ処理３ではＦＷ処理２と同様の手順により、ＦＷ処理４で書き換えられる前のデータの退避をストアユニットが行う。ＦＷ処理４では、退避処理完了後、演算ユニットがアクセスカウンタを加算する。
【００２２】
次に、ＦＷ処理５で障害が発生すると、リカバリ処理が行われる。
ＦＷ処理〈１〉では、ロードユニットがアクセスカウンタを参照して退避エリアから復元先のアドレスを取り出す。ＦＷ処理〈２〉でも、ＦＷ処理〈１〉同様にロードユニットが退避エリアから復元データを取り出す。ＦＷ処理〈３〉では、ストアユニットがＳＷ領域内のメモリにデータを復元する。また、同時に演算ユニットがアクセスカウンタを減算し、分岐ユニットがＳＷ命令の先頭番地に分岐させる。
【００２３】
次に、図１から図３を用いて上述した本実施形態の動作例における通常運用時の処理の詳細について説明する。
上述した図２に示す処理はＳＷ命令処理の一部であり各ＦＷ処置１〜５は、追い越し不可能な処理である。この処理の流れで、ＦＷ処理４を行うとメモリのデータが書き換えられるため、障害発生後に再試行としてもう一度同じＳＷ命令をやり直しても同じ結果にならない可能性がある。このＦＷ処理４でのストア動作は予め決められた動作であることから、先行するＦＷ処理２，３で、書き換えられる前のデータとそのときのアドレスを退避しておく。
【００２４】
具体的にはＦＷ処理２を実行する際に、ＦＷ処理１で計算されたアドレスによるデータロードを行うと同時に、ストアユニットが書き込み先アドレスを退避させておく。この退避では、プロセッサ内に設けられている汎用レジスタをアクセスカウンタとして使用する。このカウンタ値から、メモリ上の退避領域（図３ではＦＷが自由に使用可能なメモリ領域であるＦＷ使用領域を設定）へのアクセスアドレスに用いて退避を行う。
【００２５】
ＦＷ処理３では、ＦＷ処理２で読み出したデータ（書き換え前のデータ）をストアユニットが、アドレス同様、退避領域にストアする。データとアドレスとの住み分けは、特定の固定変位を設けて住み分けることでアクセスカウンタを共有することが可能である。
ＦＷ処理２，３での退避処理が完了したらＦＷ処理４においてアクセスカウンタを加算しておく。これにより次回退避時にはその加算により増加されたカウンタ値でアクセスが可能となる。
【００２６】
なお、上述した一連の退避処理は、ストアユニットなどが行うこととして説明したが、特定のユニット（並列処理部）に限定されず、図３に示すＦＷ処理２，３およびＦＷ処理４での空き処理ユニットが実行するよう埋め込まれることとしてよい。
こうして空いている処理ユニット（並列処理部）が退避処理を行うことにより、並列処理装置における空いている並列処理部を有効に活用することができるため、通常処理における処理速度を低下させることなく、退避処理も並行させて処理を実行していくことができる。
【００２７】
次に、図２、図３により上述した動作における障害発生後の命令再試行処理の詳細について説明する。
ＦＷ処理４以降の処理、例えばＦＷ処理５において救済可能な間欠障害（一時的な１ビットエラーによる障害など）が発生した場合、障害処理用のリカバリＦＷが起動する。このリカバリＦＷによるリカバリ処理（復元処理）をＦＷ処理〈１〉〜〈３〉とする。
【００２８】
ＦＷ処理〈１〉では、ロードユニットが退避エリアから退避データの復元先アドレスを取り出す。ＦＷ処理〈２〉では、ロードユニットが復元すべきデータを退避エリアから取り出す。この処理における退避エリアへのアクセスは、退避時と同様アクセスカウンタを用いて行う。
すなわち、複数の退避がある場合は、退避する度に加算されたカウンタ値に対して、復元すべきデータを退避エリアから取り出す度に減算しながらアクセスする。
このことにより、複数回の退避データの復元を行うこともできる。
【００２９】
ＦＷ処理〈３〉では、これら復元情報により復元先アドレスに復元データをストアすると同時に、分岐ユニットがこのＳＷ命令の最初に分岐させることで、ＳＷ命令の実行そのものをやり直す。すなわち、ＦＷ処理４に先行する書き換え準備処理であるＦＷ処理１からの処理を再試行する。
この再試行を行うことにより、従来では救済できなかったプロセスを救済可能とすることができる。
【００３０】
以上のように、第１の実施形態によれば、以下の効果が得られる。
第１の効果は、ＨＷの設計品質が確保でき、必要以上のＨＷ投資が不要なことにある。すなわち、データ書き換えの更新時に行う制御や障害発生時の再試行制御をＨＷとして作り込む必要をなくすことができるため、ＨＷの通常制御とあわせて複雑な回路を組み込む必要をなくすことができ、設計品質の確保や、ＨＷ資源の投資を不要にできることにある。
その理由は、本発明では全てＦＷによる制御を行っており、使用するＨＷも特別に設けたものを使用していないため、ＨＷの構成を処理高速化にも適応した簡略化されたものとすることができるからである。
【００３１】
第２の効果は、性能遅延を極小化したうえで可用性（安定した継続運用性能）の向上が実現できることにある。
その理由は、ＶＬＩＷアーキテクチャにおける空きユニット（並列処理部）が、本来の処理である書き換え準備処理（ＦＷ処理１〜３）および書き換え処理（ＦＷ処理４）と並列に退避に関わる処理を実行するためである。
【実施例２】
【００３２】
次に、本発明の第２の実施形態としての並列処理装置の構成と処理とについて、図４を参照して詳細に説明する。
この第２の実施形態は、上述した第１の実施形態に対して、アクセスカウンタをプロセッサ内部の汎用レジスタでなく、メモリ内に設けるようにしたものである。
【００３３】
ＦＷ処理１’では、ロードユニットがメモリ内に設けたアクセスカウンタの読み出しを行う。ＦＷ処理２’では、演算ユニットが読み出したアクセスカウンタに加算を行う。
これらＦＷ処理１’〜２’は一連のＳＷ命令処理のうちＦＷ処理１に先行して行われる処理と並行して実施して構わない。
【００３４】
ＦＷ処理１では上述した第１の実施形態と同様にＳＷ命令処理の一部が行われるが、同時にＦＷ処理２’で加算されたアクセスカウンタ値をストアユニットがメモリ内のカウンタ領域に書き込む。ＦＷ処理２、３では上述した第１の実施形態と同じ処理が行われる。
ＦＷ処理４ではＳＷ命令処理の一部を実行するだけとなる。すなわち、このＦＷ処理４では、ストアユニットが比較結果の大きいデータを書き出し先アドレスに格納するだけとなる。
【００３５】
次に、第２の実施形態における障害発生後の処理について説明する。
ＦＷ処理〈１’〉では、ロードユニットがメモリ上のアクセスカウンタを読み出す。ＦＷ処理〈１〉では、第１の実施形態同様、ロードユニットが復元先のアドレス取り出しを行うと同時に、演算ユニットが読み出したアクセスカウンタの減算を行う。ＦＷ処理〈２〉では、ロードユニットが復元データを取り出すと同時に、減算されたカウンタ値をストアユニットがメモリ内のアクセスカウンタに書き込む。ＦＷ処理〈３〉では、ストアユニットが復元先アドレスに復元データを書き戻し、分岐ユニットがＳＷ命令の先頭に戻す。
【００３６】
以上説明したように、アクセスカウンタはプロセッサ内部のレジスタを用いずに特定のメモリ領域でも実現可能であり、使用するＨＷに合わせてカウンタの更新制御は変更されても構わない。さらにアクセスカウンタそのものも、退避領域へのアクセスが一意に行えるのであれば、特に上述した各実施形態で示した方法に限定されず、任意のものであってよい。
【００３７】
また、上述した各実施形態は、本発明の好適な実施形態であり、本発明の主旨を逸脱しない範囲内において、種々変形して実施することが可能である。
例えば、上述した各実施形態では、データ書き出し先アドレスや書き換え前データを退避させる処理は書き換え処理の直前に行われることとして説明しているが、書き換え処理よりも前に実行されて書き込み先のデータが退避データと同じになるのであればそのタイミングに限定されず、任意のタイミングで行われることとしてよい。
【００３８】
また、上述した各実施形態では退避データを限定していないが、ＨＷ資源の使用制約やＦＷ制御上の限界から、一定の制約（特定範囲内のアドレス、特定長内のデータなど）を与えて実現しても構わない。
【００３９】
また、メモリ内のデータ更新のみならずＳＷから透過なレジスタについても退避可能であり、逆にＳＷから透過なレジスタの更新のみを退避／復元対象とする構成であっても構わない。この場合、退避先はメモリ内であってもよく、またＳＷから透過ではないワークレジスタでも良いが、この透過ではないワークレジスタとする場合、メモリ内のデータ更新以降は再試行不可能となる。
【００４０】
上述した退避／復元処理の埋め込みは、上述した一定の制約に当てはまるストア動作をキーにしてコンパイル時に自動生成してよいし、ＦＷ作成ツールで盛り込んでも構わない。また、退避処理埋め込み箇所に特定のパターンが存在する場合は、退避処理をパターン化して作り込むことも可能である。
【００４１】
また、以上に、本発明に係る並列処理装置をＶＬＩＷアーキテクチャプロセッサを用いた並列処理装置に適用した一実施形態について説明したが、複数の並列処理部を備えて各並列処理部により並列に処理可能な並列処理装置であればこのものに限定されず、例えばスーパースカラによるプロセッサなどにも本発明は同様に適用可能である。
【産業上の利用可能性】
【００４２】
本発明は、例えば高信頼性、高可用性（安定した継続運用性能）の求められるハイエンドサーバ領域での無停止運用を必要とするシステムなどに適用可能である。
【図面の簡単な説明】
【００４３】
【図１】本発明による動作の概要を示す図である。
【図２】メモリに保持していたデータを書き換える処理を含む処理フローの一例を示す図である。
【図３】本発明の第１の実施形態としての並列処理装置で図２に示す処理フローを行い、障害が発生した場合の処理を示す図である。
【図４】本発明の第２の実施形態としての並列処理装置で図２に示す処理フローを行い、障害が発生した場合の処理を示す図である。
【図１】
2005284647.tif 000003
【図２】
2005284647.tif 000004
【図３】
2005284647.tif 000005
【図４】
2005284647.tif 000006