(57)【要約】【課題】通常の処理性能に影響を与えずに高信頼のシステムを効率的に構築する。【解決手段】複数のスレッド１０１−１〜１０１−４を所定のサイクルでパイプライン実行するために、実行決定部１０３にて現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかが判断され、次のサイクルに実行可能なスレッドが無いと判断された場合、メモリアクセススレッド起動部１０４にてメモリ１０９の正常性を確認するメモリアクセススレッド１０２を起動し、メモリアクセススレッド１０２が起動した後、命令完了確認部１０８にてメモリ１０９の正常性が確認され、メモリ１０９が正常であると判断された場合、メモリアクセススレッド１０２が休止状態にされる。【選択図】図１
2008217210.tif 000002
【特許請求の範囲】
【請求項１】
メモリを有し、複数のスレッドを所定のサイクルでパイプライン実行するための処理実行装置であって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する実行決定部と、
前記実行決定部にて次のサイクルに実行可能なスレッドが無いと判断された場合、前記メモリの正常性を確認するメモリアクセススレッドを起動するメモリアクセススレッド起動部と、
前記メモリアクセススレッド起動部にて前記メモリアクセススレッドが起動した後、前記メモリの正常性を確認し、前記メモリが正常であると判断された場合、前記メモリアクセススレッドを休止状態にするメモリチェック部とを有する処理実行装置。
【請求項２】
請求項１に記載の処理実行装置において、
前記メモリチェック部は、前記メモリが正常ではないと判断された場合、異常を通知するための割り込みを発生することを特徴とする処理実行装置。
【請求項３】
請求項１または請求項２に記載の処理実行装置において、
該処理実行装置は、制御プロセッサであることを特徴とする処理実行装置。
【請求項４】
複数のスレッドをサイクリックにパイプライン処理する処理実行方法であって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する処理と、
前記次のサイクルに実行可能なスレッドが無いと判断された場合、メモリの正常性を確認するメモリアクセススレッドを起動する処理と、
前記メモリアクセススレッドが起動した後、前記メモリの正常性を確認する処理と、
前記メモリが正常であると判断された場合、前記メモリアクセススレッドを休止状態にする処理とを有する処理実行方法。
【請求項５】
請求項４に記載の処理実行方法において、
前記メモリが正常ではないと判断された場合、異常を通知するための割り込みを発生する処理を有することを特徴とする処理実行方法。
【請求項６】
複数のスレッドをサイクリックにパイプライン処理するためのプログラムであって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する手順と、
前記次のサイクルに実行可能なスレッドが無いと判断された場合、メモリの正常性を確認するメモリアクセススレッドを起動する手順とをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の処理を実行する処理実行装置、処理実行方法及びプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータにて所定の処理が行われる場合、複数の処理が同時に（並行して）行われているように見せるマルチスレッド処理を用いたプロセッサ等の制御装置が実用化されている（例えば、非特許文献１参照。）。
【０００３】
このマルチスレッド処理においては、ある時点において現在スレッドが実行されているサイクルの次のサイクルに実行すべきスレッドが無いと判断された場合、当該次のサイクルは空きサイクルとなってしまい、無駄な時間が生じてしまう。
【０００４】
また、装置に設けられたメモリの正常性を確認するためのメモリチェックプロセスが、ＯＳのスケジュール可能なプロセスとして実行される。そのとき、通常の処理と同様に、プロセスの優先度に基づいてスケジュールされるため、システムの処理性能とメモリチェックプロセスとにより達成される信頼性とはトレードオフの関係にある。
【非特許文献１】「Sun Niagara and an Evaluation of SMT in IBM's Power5」  http://www.cs.rice.edu/~johnmc/comp522/lecture-notes/Lecture4.pdf
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１に記載された技術では、全部のスレッドがメモリ待ちや、入出力（Ｉ／Ｏ）操作の完了待ち等で、実行可能ではなくなり、パイプラインの次のサイクルに有効な命令が投入できなくなってしまう虞がある。このサイクルは、処理装置の利用者が意図した処理がまったくできないサイクルであり、利用者から知るところでない。また、上述したようにシステムの処理性能と信頼性とはトレードオフの関係にあるため、システムの処理性能を上げようとするとシステムの信頼性が下がり、また、システムの信頼性を上げようとするとシステムの処理性能が下がってしまうという虞がある。
【０００６】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、通常の処理性能に影響を与えずに高信頼のシステムを効率的に構築することができる処理実行装置、処理実行方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、
メモリを有し、複数のスレッドを所定のサイクルでパイプライン実行するための処理実行装置であって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する実行決定部と、
前記実行決定部にて次のサイクルに実行可能なスレッドが無いと判断された場合、前記メモリの正常性を確認するメモリアクセススレッドを起動するメモリアクセススレッド起動部と、
前記メモリアクセススレッド起動部にて前記メモリアクセススレッドが起動した後、前記メモリの正常性を確認し、前記メモリが正常であると判断された場合、前記メモリアクセススレッドを休止状態にするメモリチェック部とを有する。
【０００８】
また、前記メモリチェック部は、前記メモリが正常ではないと判断された場合、異常を通知するための割り込みを発生することを特徴とする。
【０００９】
また、該処理実行装置は、制御プロセッサであることを特徴とする。
【００１０】
また、複数のスレッドをサイクリックにパイプライン処理する処理実行方法であって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する処理と、
前記次のサイクルに実行可能なスレッドが無いと判断された場合、メモリの正常性を確認するメモリアクセススレッドを起動する処理と、
前記メモリアクセススレッドが起動した後、前記メモリの正常性を確認する処理と、
前記メモリが正常であると判断された場合、前記メモリアクセススレッドを休止状態にする処理とを有する。
【００１１】
また、前記メモリが正常ではないと判断された場合、異常を通知するための割り込みを発生する処理を有することを特徴とする。
【００１２】
また、複数のスレッドをサイクリックにパイプライン処理するためのプログラムであって、
現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する手順と、
前記次のサイクルに実行可能なスレッドが無いと判断された場合、メモリの正常性を確認するメモリアクセススレッドを起動する手順とをコンピュータに実行させる。
【００１３】
上記のように構成された本発明においては、複数のスレッドを所定のサイクルでパイプライン実行するために、現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかが判断され、次のサイクルに実行可能なスレッドが無いと判断された場合、メモリの正常性を確認するメモリアクセススレッドが起動し、メモリアクセススレッドが起動した後、メモリの正常性が確認され、メモリが正常であると判断された場合、メモリアクセススレッドが休止状態にされる。
【００１４】
これにより、空きのサイクルが発生した場合、その空きのサイクルにメモリをチェックするメモリアクセススレッドを実行することにより、サイクルの有効利用を実現することができる。
【発明の効果】
【００１５】
以上説明したように本発明においては、複数のスレッドを所定のサイクルでパイプライン実行するために、実行決定部が現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断し、次のサイクルに実行可能なスレッドが無いと判断された場合、メモリアクセススレッド起動部がメモリの正常性を確認するメモリアクセススレッドを起動し、メモリアクセススレッドが起動した後、メモリチェック部がメモリの正常性を確認し、メモリが正常であると判断された場合、メモリアクセススレッドを休止状態にする構成としたため、通常の処理性能に影響を与えずに高信頼のシステムを効率的に構築することができる。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１７】
図１は、本発明の処理実行装置の実施の一形態を示す図である。
【００１８】
本形態は図１に示すように、実行決定部１０３と、メモリアクセススレッド起動部１０４と、命令デコード部１０５と、命令実行部１０６と、メモリアクセス部１０７と、命令完了確認部１０８と、メモリ１０９とから構成されている。
【００１９】
実行決定部１０３は、処理するスレッドを選択する。本形態では、スレッド１０１−１〜スレッド１０１−４の状態に基づいて、スレッド１０１−１〜スレッド１０１−４うち１つのスレッドを選択する。ここで、選択された命令実行に必要なデータがレジスタ（不図示）から取り出され、スレッド１０１−１〜１０１−４それぞれに予め付与されたスレッド番号とともに以下に説明するパイプラインで持ちまわりされる。また、現在スレッドが実行されているサイクルの次のサイクルに実行可能であるスレッドがあるかどうかを判断する。また、ここではスレッド１０１−１〜１０１−４の数が４つの場合を例に挙げたが、その数は４つに限らない。
【００２０】
メモリアクセススレッド起動部１０４は、実行決定部１０３にて、現在スレッドが実行されているサイクルの次のサイクルに実行すべきスレッドが無いと判断された場合、メモリアクセススレッド１０２を起動する。このメモリアクセススレッド１０２は、メモリ１０９の正常性を確認するスレッドである。メモリ１０９の正常性の確認方法については、所定のデータをメモリ１０９に書き込み、その後メモリ１０９から読み出されたデータと書き込まれたデータとを比較することによる確認等の従来の方法を使用すれば良く、ここでは特に規定しない。また、メモリアクセススレッド１０２が起動した場合、起動しているスレッドがメモリアクセススレッド１０２である旨を示す情報が、以下に説明するパイプラインで持ちまわりされる。
【００２１】
命令デコード部１０５は、実行決定部１０３にて取り出された命令、または、メモリアクセススレッド１０２の命令をデコードし、当該命令の動作を決定する。
【００２２】
命令実行部１０６は、命令デコード部１０５にて決定された動作（演算実行）が行われる。
【００２３】
メモリアクセス部１０７は、メモリ１０９に対して、命令実行部１０６にて演算が実行される際に必要なメモリアクセスを行う。
【００２４】
命令完了確認部１０８は、メモリアクセス部１０７によるメモリアクセスの終了を確認するメモリチェック部である。
【００２５】
メモリ１０９は、処理をするためのデータを記憶するメモリである。メモリアクセススレッド１０２が起動し、メモリ１０９の正常性が確認され、正常である場合、スレッドサスペンド状態になる。また、異常である場合は、割り込みをＯＳ等に通知する。なお、メモリ１０９は処理実行装置外に設けられているものであっても良い。
【００２６】
なお、本発明は図１に示した形態のようにパイプライン処理を行うものである。
【００２７】
図２は、図１に示したスレッド１０１−１〜１０１−４のパイプライン処理の様子を模式化した図である。ここでは、各サイクルには空きのサイクルがない場合を例に挙げて説明する。
【００２８】
まず、サイクル１にて、スレッド１０１−１の命令デコード処理（ＩＤ：Instruction Decording）が実行される。この命令デコード処理は、図１に示した命令デコード部１０５にて実行される処理である。
【００２９】
その後、サイクル２にて、スレッド１０１−１の命令実行処理（ＥＸ：Execute）が行われる。この命令実行処理は、図１に示した命令実行部１０６にて実行される処理である。また、サイクル２にて、スレッド１０１−２の命令デコード処理が実行される。
【００３０】
その後、サイクル３にて、スレッド１０１−１のメモリアクセス処理（ＭＡ：Memory Access）が実行される。このメモリアクセス処理は、メモリアクセス部１０７にて実行される処理である。また、サイクル３にて、スレッド１０１−２の命令実行処理が実行される。また、サイクル３にて、スレッド１０１−３の命令デコード処理が実行される。
【００３１】
その後、サイクル４にて、スレッド１０１−１の命令完了確認処理（ＩＣ：Instruction Completion）が実行される。この命令完了確認処理は、図１に示した命令完了確認部１０８にて実行される処理である。また、サイクル４にて、スレッド１０１−２のメモリアクセス処理が実行される。また、サイクル４にて、スレッド１０１−３の命令実行処理が実行される。また、サイクル４にて、スレッド１０１−４の命令デコード処理が実行される。
【００３２】
その後、サイクル５にて、スレッド１０１−２の命令完了確認処理が実行される。また、サイクル５にて、スレッド１０１−３のメモリアクセス処理が実行される。また、サイクル５にて、スレッド１０１−４の命令実行処理が実行される。
【００３３】
その後、サイクル６にて、スレッド１０１−３の命令完了確認処理が実行される。また、サイクル６にて、スレッド１０１−４のメモリアクセス処理が実行される。
【００３４】
その後も、各スレッド１０１−１〜１０１−４の各処理が実行される。
【００３５】
以下に、図１に示した形態における処理実行方法についてフローチャートを用いて説明する。
【００３６】
図３は、図１に示した処理実行装置における処理実行方法を説明するためのフローチャートである。
【００３７】
まず、実行決定部１０３にて次のサイクルに実行可能なスレッドがあるかどうかが判断される（ステップＳ１）。ここでは、スレッド１０１−１〜１０１−４の状態に基づいて、次のサイクルに実行可能なスレッドがあるかどうかが判断される。つまり、例えば、あるサイクルで１つの処理が行われた次のサイクルが実行される時点で、所定の処理開始タイミングに満たないスレッドは実行可能なスレッドではないと判断される。
【００３８】
ステップＳ１にて、例えば、スレッド１０１−１の処理が行われた次のサイクルでスレッド１０１−２が実行決定部１０３にて実行可能であると判断された場合を例に挙げて説明する。スレッド１０１−２が実行可能であると判断されると、命令デコード部１０５にて、スレッド１０１−２の命令がデコードされ（上述したＩＤ処理）、当該命令の動作が決定される（ステップＳ２）。
【００３９】
そして、デコードされた命令の演算が命令実行部１０６にて実行（上述したＥＸ処理）される（ステップＳ３）。このＥＸ処理が行われる際に、演算実行に必要なメモリ１０９に対するメモリアクセス（上述したＭＡ処理）がメモリアクセス部１０７によって行われる（ステップＳ４）。
【００４０】
その後、メモリ１０９に対するメモリアクセスが正常に終了したかどうかが命令完了確認部１０８にて確認される（上述したＩＣ処理）（ステップＳ５）。この正常終了の確認方法については、所定の正常性確認が終了したかどうかを判断する等の従来のメモリアクセスの正常処理確認方法を使用すれば良く、ここでは特に規定しない。
【００４１】
一方、ステップＳ１にて、実行決定部１０３にて次のサイクルに実行可能なスレッドが無いと判断された場合は、メモリアクセススレッド起動部１０４によってメモリアクセススレッド１０２が起動する（ステップＳ６）。
【００４２】
メモリアクセススレッド１０２が起動すると、起動したメモリアクセススレッド１０２の命令が命令デコード部１０５にてデコードされ（上述したＩＤ処理）、当該命令の動作が決定される（ステップＳ７）。
【００４３】
そして、デコードされた命令が命令実行部１０６にて実行（上述したＥＸ処理）される（ステップＳ８）。メモリアクセススレッド１０２の命令は、メモリ１０９の正常性を確認するものであるため、そのためのメモリ１０９に対するメモリアクセス（上述したＭＡ処理）がメモリアクセス部１０７によって行われ、メモリ１０９に異常があるかどうかが命令完了確認部１０８にて判断される（ステップＳ９）。
【００４４】
メモリ１０９に異常があると判断された場合、割り込みが発生し、他のＯＳに通知される（ステップＳ１０）。
【００４５】
一方、メモリ１０９に異常が無いと判断された場合は、メモリアクセススレッド１０２はサスペンド（休止）状態となる（ステップＳ１１）。
【００４６】
図４は、ステップＳ１にて次のサイクルに実行可能なスレッドが無いと判断され、空きのサイクルにおいてメモリアクセススレッド１０２が実行される場合の処理のサイクルの様子を模式化した図である。
【００４７】
図４に示すように、例えば、スレッド１０１−２が実行された次のサイクルにて実行可能なスレッドが無い場合、当該サイクルが空きスレッドとなり、その空きスレッドにメモリアクセススレッド１０２が挿入される形で実行されることとなる。
【００４８】
以上説明したように本発明においては、空きのサイクルが発生した場合、その空きのサイクルにメモリをチェックするメモリアクセススレッドを実行することにより、サイクルの有効利用を実現することができる。
【００４９】
なお、本発明においては、その機能を実現するためのプログラムを処理実行装置にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを処理実行装置に読み込ませ、実行するものであっても良い。処理実行装置にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、処理実行装置に内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、処理実行装置が有する制御部（不図示）にて読み込まれ、制御部の制御によって、上述したものと同様の処理が行われる。ここで、処理実行装置が有する制御部は、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。
【図面の簡単な説明】
【００５０】
【図１】本発明の処理実行装置の実施の一形態を示す図である。
【図２】図１に示したスレッドのパイプライン処理の様子を模式化した図である。
【図３】図１に示した処理実行装置における処理実行方法を説明するためのフローチャートである。
【図４】ステップＳ１にて次のサイクルに実行可能なスレッドが無いと判断され、空きのサイクルにおいてメモリアクセススレッドが実行される場合の処理のサイクルの様子を模式化した図である。
【符号の説明】
【００５１】
１０１−１〜１０１−４    スレッド
１０２    メモリアクセススレッド
１０３    実行決定部
１０４    メモリアクセススレッド起動部
１０５    命令デコード部
１０６    命令実行部
１０７    メモリアクセス部
１０８    命令完了確認部
１０９    メモリ
【図１】
2008217210.tif 000003
【図２】
2008217210.tif 000004
【図３】
2008217210.tif 000005
【図４】
2008217210.tif 000006