(57)【要約】【課題】マルチプロセッサシステムにおいて複数スレッドの操作を同時並行して実行する場合の、ユーザプログラムにおける排他制御による処理の遅延や処理不能となる可能性を低減すること。【解決手段】スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御部と、排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、排他制御の終了の検出に伴って、例外通知信号の抑制を終了すると共に、例外通知信号の抑制が所定時間を超えて継続する場合には、排他制御の終了の検出を待たずに例外通知信号を生成する例外通知信号制御部と、を備える。【選択図】  図１
2015014966.tif 000002
【特許請求の範囲】
【請求項１】
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御手段と、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御手段と、
を備える情報処理装置。
【請求項２】
前記情報処理装置はマルチプロセッサを有して、複数のスレッドによる並列処理を行ない、
前記スレッドによる排他制御は、前記スレッドによる命令実行に使用する資源の他のスレッドによる変更を回避するために実行される請求項１に記載の情報処理装置。
【請求項３】
前記排他制御手段は、前記スレッドによる排他制御の開始から終了までの間、割込み禁止フラグを設定する割込み禁止フラグ記憶手段を有し、
前記例外通知信号制御手段は、
実行モードがカーネルモードであるかユーザモードであるかを示す実行モードフラグ記憶手段と、前記例外通知信号の抑制を制御すると共に、前記例外通知信号の抑制が所定期間を超えた場合に前記例外通知信号の抑制を解除する抑制フラグ制御手段と、を有し、
前記実行モードフラグがユーザモードを示し、かつ、前記割込み禁止フラグが設定され、かつ、前記例外通知信号の抑制が解除された場合に、前記例外通知信号を生成する、請求項１または２に記載の情報処理装置。
【請求項４】
前記排他制御手段および前記例外通知信号制御手段の少なくともいずれかは、マイクロプログラムにより実現される請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記例外通知信号制御手段が生成した前記例外通知信号に基づいて、実行モードをカーネルモードに移行させて、排他制御を実行中のスレッドを含むプログラムを強制的に終了させ、前記割込み禁止フラグを解除する例外通知処理手段を、さらに備える請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記例外通知処理手段は、マイクロプログラムにより実現される請求項５に記載の情報処理装置。
【請求項７】
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
を含む情報処理方法。
【請求項８】
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
をコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザモードでプロセッサが割込みを禁止する技術に関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、ユーザモードにおいて割込みに対してマスクを行なった場合に、マスク可能割込み要因が発生してから所定時間長を超えると、マスク不可能割込みを発生させてスーパバイザモードに移行させ、ユーザプログラムのアボード処理を実行する技術が開示されている。また、非特許文献１および２には、マルチプロセッサシステムにおいて複数スレッドの操作が同時並行して実行しても正しく動作するプログラムを構築する技術として、ロックを使うことなく、ハードウェアとしてトランザクション機能を実装する方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０４−１３５２４６号公報
【非特許文献】
【０００４】
【非特許文献１】Intel Architecture Instruction Set Extensions Programming Reference, http://www.isus.jp/wp-content/plugins/wp-js-external-link-info/redirect.php?blog=iSUS&url=http://software.intel.com/en-us/avx
【非特許文献２】Haswell のトランザクション同期、 http://www.isus.jp/article/transactional-synchronization-in-haswell
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、上記非特許文献１および２に記載のマルチプロセッサシステムにおいて、複数スレッドの操作を同時並行すると不正な動作結果を生じる可能性のある部分を実行中に、ハードウェア割込みが発生して実行が一時中断され、さらには、割込み処理の延長としてプロセス切換えが行われてしまうと、プログラムの実行性能や正常動作に悪影響を及ぼす可能性がある。しかしながら、ユーザプログラムにおける排他制御によってプログラムの実行性能や正常動作への悪影響を回避しようにすると、上記特許文献１のようなマスク可能割込み要因の発生を監視する処理では、ユーザプログラムのミスや悪意のユーザプログラムにより処理の遅延を招くと共に、処理不能となる可能性も無くすことができなかった。
【０００６】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る情報処理装置は、
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御手段と、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御手段と、
を備える。
【０００８】
上記目的を達成するため、本発明に係る情報処理方法は、
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
を含む。
【０００９】
上記目的を達成するため、本発明に係る情報処理プログラムは、
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
をコンピュータに実行させる。
【発明の効果】
【００１０】
本発明によれば、ユーザプログラムにおけるスレッドの排他制御による処理の遅延や処理不能となる可能性を低減することできる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態に係る情報処理装置の構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図２Ｂ】本発明の第２実施形態に係る情報処理装置のシステム構成を示すブロック図である。
【図３】本発明の第２実施形態に係る例外抑制フラグ制御部の構成を示す図である。
【図４】本発明の第２実施形態に係る例外通知信号用論理積部の真理表を示す図である。
【図５Ａ】本発明の第２実施形態において、排他制御を開始した後にタイマにあらかじめ設定されている時間が経過するよりも前に排他制御を終了した場合の、各信号の動作タイミングを示したタイミング図である。
【図５Ｂ】本発明の第２実施形態において、排他制御を開始した後にタイマにあらかじめ設定されている時間が経過するよりも前に排他制御を終了しなかった場合の、各信号の動作タイミングを示したタイミング図である。
【図６】本発明の第２実施形態に係る情報処理装置における状態遷移を示す遷移図である。
【図７】本発明の第３実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図８】本発明の第３実施形態に係る情報処理装置の排他制御処理の手順を示すフローチャートである。
【図９】本発明の第３実施形態に係る情報処理装置の例外通知処理の手順を示すフローチャートである。
【図１０】本発明の第４実施形態に係る情報処理装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１３】
［第１実施形態］
本発明の第１実施形態としての情報処理装置１００について、図１を用いて説明する。情報処理装置１００は、スレッドが排他制御を行なう装置である。
【００１４】
図１に示すように、情報処理装置１００は、排他制御部１１０と、例外通知信号制御部１２０と、を含む。排他制御部１１０は、スレッドによる排他制御の開始１１１を検出して割込み禁止フラグ１１３を設定し、スレッドによる排他制御の終了１１２を検出して割込み禁止フラグ１１３を解除する。例外通知信号制御部１２０は、排他制御の開始１１１の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号１２１の抑制を開始し、排他制御の終了１１２の検出に伴って、例外通知信号１２１の抑制を終了する。そして、例外通知信号制御部１２０は、例外通知信号１２１の抑制が所定時間１２２を超えて継続する場合には、排他制御の終了１１２の検出を待たずに例外通知信号１２１を生成する。
【００１５】
本実施形態によれば、マルチプロセッサシステムにおいて複数スレッドの操作を同時並行して実行する場合の、ユーザプログラムにおけるスレッドの排他制御による処理の遅延や処理不能となる可能性を低減することできる。
【００１６】
［第２実施形態］
次に、本発明の第２実施形態に係る情報処理装置について説明する。本実施形態に係情報処理装置においては、実行モードがユーザモードであっても、排他制御の開始から終了までの間、例外通知を抑制して割込み禁止とするが、排他制御の開始から所定時間が経過すると例外通知抑制を終了させて、例外通知信号を発生する。なお、以下の実施形態において、各信号を回路動作に整合する特定の状態（ｈｉｇｈ（１）／ｌｏｗ（０））を代表して示すが、信号の反転などの変更により種々の構成が可能であり、それらも本実施形態に含まれる。
【００１７】
《背景技術》
以下、簡単に、本願発明の背景となる基礎技術について、簡単に説明する。
【００１８】
情報処理装置においてプログラムを実行するプロセッサが、周辺機器からの情報を、他の作業をしながらも取り落とすことなく受け取る技術に割込みがあり、その効果は、1)CPU資源の有効利用、2)応答性の向上。3)例外処理の効率化とされている。具体的には、プロセッサに割込み信号を入力する機能を持たる。そして、その割込み信号がアクティブに設定されると、命令実行部は実行している命令の処理完了時、その次の命令ではなく、割込み発生時に実行するようあらかじめ設定されているアドレスの命令に実行を移すように命令実行部で制御するようになっている。以降、あらかじめ設定されているアドレスから始まるプログラムを割込みハンドラと呼び、割込み信号がアクティブに設定されることにより、割込みハンドラに実行を移すことを「プロセッサが割込みを受付ける」と表現する。
【００１９】
一般に、割込みハンドラの実行が完了すると、プロセッサは、割込み発生時に実行していた命令の次の命令からプログラム実行を再開することが多い。しかし、オペレーティング・システムの介入により、割込み発生時に実行していたプロセスとは別のプロセスへの切り換えが行われることもある。この場合、割込み発生時に実行していたプロセスは、オペレーティング・システムによる再度のプロセス切り換えを経て実行が再開されることになる。
【００２０】
割込みに関する技術として、割込みを受け付けると問題が生じる恐れのある場合には割込みを受付けないようにする制御も普遍的に行われている。本明細書において、割込みを受け付けない状態にプロセッサを遷移させることを割込み禁止と呼び、再び割込みを受け付ける状態に戻すことを割込み許可と呼ぶ。一般に、割込み禁止や割込み許可操作は、プロセッサが備える命令により行われる。
【００２１】
また、割込み以外の背景技術として、プロセッサに、ユーザモードとカーネルモードという２種類の動作モードを用意する技術がある。ユーザモードはアプリケーション・プログラム（ユーザプログラムとも称す）を実行するためのモードであり、カーネルモードはシステムの制御を行うオペレーティング・システムを実行するためのモードである。これは、仮にアプリケーション・プログラムが不正な操作を行ったとしても、影響が及ぶのはそのアプリケーションのみに限定し、システムとしてはオペレーティング・システムの制御の下で正常な動作を継続できるようにするための技術である。割込み禁止命令は、システムの制御に関する操作を行う命令であるため、ユーザモードで割込み禁止命令を実行使用とした場合には例外を発生させてオペレーティング・システムを介入させ、アプリケーション・プログラムを異常終了させるようになっている。
【００２２】
一方、マルチプロセッサシステムにおいて複数スレッドの操作が同時並行して実行しても正しく動作するプログラムを構築する技術がある。最も単純な方法としては、ロックといった排他制御機構を用いて同時に実行できるスレッドを１つに限定する方法がある。また、ロックを使うことなく、ハードウェアとしてトランザクション機能を実装する方法（非特許文献１、２参照）もある。いずれにしても、複数スレッドの操作が同時並行すると不正な動作結果を生じる可能性のある部分を実行中にハードウェア割込みが発生して実行が一時中断される。さらには、割込み処理の延長としてプロセス切換えが行われてしまうと、プログラムの実行性能や正常動作に悪影響を及ぼす恐れが生じる可能性がある。ところが、排他制御におけるこのようなプログラムの実行性能や正常動作への悪影響を防ぎ、かつ、ユーザプログラムにおける排他制御による処理の遅延や処理不能となる可能性を無くす工夫はされていない。
【００２３】
本実施形態において開示される技術は、ユーザモードで実行されるアプリケーション・プログラム内であっても、割込みが発生してプログラム実行が中断するとプログラムの実行性能や正常動作に悪影響を及ぼす可能性のある排他制御区間を、割込み禁止状態で実行する。さらに、ユーザプログラムにおける排他制御によって引き起こされる処理の遅延や処理不能となる可能性を無くす。
【００２４】
《情報処理装置の機能構成》
図２Ａは、本実施形態に係る情報処理装置の機能構成を示すブロック図である。
【００２５】
図２を参照すると、本実施形態の情報処理装置は、プログラムを実行するプロセッサ２００とメモリ２６０とから構成されている。なお、この図ではプロセッサ２００の数は１個であるが、情報システム内で使用されるプロセッサ２００の個数は制約する要因ではないので、本実施形態を適用する情報システム内に本実施形態を適用した複数のプロセッサが存在していてもよい。したがって、本実施形態に係る情報処理装置は、１つのプロセッサの構成であっても、複数のプロセッサの構成であっても、メモリを含む構成であってもよい。
【００２６】
プロセッサ２００は、命令実行部２１０、例外抑制フラグ制御部２３０、割込み禁止フラグ記憶部２２０、例外通知信号用論理積部２４０、および、割込み禁止用論理積部２５０から構成されている。命令実行部２１０は、実行モードフラグ記憶部２１１、排他制御区間実行開始検出部２１２、および、排他制御区間実行終了検出部２１３を含む。命令実行部２１０には、例外通知信号２４０ａおよび割込み信号２５０ａが入力されて、例外処理または割込み処理を行なう。例外処理または割込み処理は既存の処理であり、図２Ａには、例外処理または割込み処理の記憶構成部は図示していない。
【００２７】
実行モードフラグ記憶部２１１は、プロセッサ２００をカーネルモードで動作させるか、ユーザモードで動作させるかをセットする実行モードフラグ２１１ａを記憶する。本例では、ユーザモードの場合に実行モードフラグ２１１ａが“ｈｉｇｈ（１）”にセットされ、カーネルモードの場合に実行モードフラグ２１１ａが“ｌｏｗ（０）”にセットされる。
【００２８】
排他制御区間実行開始検出部２１２は、命令実行部２１０があらかじめ指定された排他制御区間のプログラム実行を開始したことを検出して、排他制御開始信号２１２ａを出力する。また、排他制御区間実行終了検出部２１３は、命令実行部２１０があらかじめ指定された排他制御区間のプログラム実行を終了したことを検出して、排他制御終了信号２１３ａを出力する。排他制御区間の指定は、機械語命令のプリフィックスによって指定する方法（非特許文献１、２参照）などの既存の技術によるものとする。
【００２９】
割込み禁止フラグ記憶部２２０は、本例では、排他制御開始信号２１２ａによって割込み禁止フラグ２２０ａを“ｈｉｇｈ（１）”にセットして、割込み禁止用論理積部２５０において割込み（図中、ＥＸＥ−ＩＮＴまたはＩＮＴ−ＩＮＴ）を禁止する。しかしながら、ＮＭＩ(Non-Maskable Interrupt)は、割込み禁止用論理積部２５０において禁止されることはない。また、割込み禁止フラグ記憶部２２０は、排他制御終了信号２１３ａによって割込み禁止フラグを“ｌｏｗ（０）”にリセットして、割込み禁止用論理積部２５０において割込みを許可する。このように、割込み禁止フラグが“ｈｉｇｈ（１）”にセットされている排他制御区間は、プログラムの実行性能や正常動作へ悪影響を及ぼす割込みが禁止される。なお、割込み禁止フラグ記憶部２２０をＲＳ(セットリセット）型のフリップフロップで構成する場合は、排他制御区間のプログラム実行を開始したことを検出して排他制御開始信号２１２ａが“ｈｉｇｈ（１）”となってフリップフロップがセットされる。そして、排他制御区間のプログラム実行を終了したことを検出して排他制御終了信号２１３ａが“ｈｉｇｈ（１）”となってフリップフロップがリセットされる。
【００３０】
また、例外抑制フラグ制御部２３０は、排他制御開始信号２１２ａによって例外抑制フラグ２３０ａを“ｈｉｇｈ（１）”とすると共に、タイマを起動する。かかる例外抑制フラグ２３０ａによって、例外通知信号用論理積部２４０からの例外通知信号２４０ａの出力が抑制される。例外抑制フラグ２３０ａおよび例外抑制フラグ制御部２３０のタイマは、排他制御終了信号２１３ａによって停止される。しかしながら、所定時間が経過してもタイマが排他制御終了信号２１３ａによって停止されない場合、タイムアウトによって例外抑制フラグ２３０ａが“ｌｏｗ（０）”となる。この時には、例外通知信号用論理積部２４０の３入力である、実行モードフラグ２１１ａが“ｈｉｇｈ（１）”、割込み禁止フラグ２２０ａが“ｈｉｇｈ（１）”、かつ、例外抑制フラグ２３０ａが“ｌｏｗ（０）”となる。その結果、例外通知信号用論理積部２４０から例外通知信号２４０ａが出力される。
【００３１】
これにより、ユーザモードで実行されるプログラム内の排他制御区間の間を割込み禁止状態にして実行することができる。また、この割込み禁止状態が、タイマにあらかじめ設定されている時間が経過しても排他制御区間終了により解除されない場合は、例外通知を発生させてカーネルモードに移行して、ユーザモードのアプリケーション・プログラムを異常終了させることができる。これにより、マルチプロセッサの複数スレッド並列処理におけるユーザモードでのスレッドによる排他制御区間開始時に、無条件で割込みを禁止すると発生する弊害を回避することができる。
【００３２】
《情報処理装置のシステム構成》
図２Ｂは、本実施形態に係る情報処理装置のシステム構成を示すブロック図である。
【００３３】
図２Ｂには、図２Ａに図示したプロセッサ２００と同様の構成を有する複数のプロセッサ２００Ａ、２００Ｂおよび２００Ｃが、メモリ２６０に接続されて、マルチプロセッサシステムを構成した例である。なお、マルチプロセッサシステムは、図２Ｂに限定されない。メモリが複数のメモリモジュールから構成されていても、プロセッサとメモリモジュールとの接続関係を多様に変更してもよい。
【００３４】
（例外抑制フラグ制御部）
図３は、本実施形態に係る例外抑制フラグ制御部２３０の構成を示す図である。
【００３５】
図３を参照すると、例外抑制フラグ制御部２３０は、スタート信号とクロック信号とリセット信号を入力し、設定時間経過信号として例外抑制フラグ２３０ａを出力するタイマ３３０を含む。ここで、スタート信号には、排他制御区間実行開始検出部２１２の出力である排他制御開始信号２１２ａ、リセット信号には、排他制御区間実行終了検出部２１３の出力である排他制御終了信号２１３ａ、クロック信号には、プロセッサを駆動するクロック信号が接続される。
【００３６】
また、例外抑制フラグ制御部２３０の出力である例外抑制フラグ２３０ａは、反転されて、例外通知信号用論理積部２４０の３入力の１つの接続される。なお、タイマ３３０の出力である例外抑制フラグ２３０ａは、タイマ３３０がタイムアウトしない場合、有効（ｈｉｇｈ）のまま保たれるようになっている。なお、図３には、タイマが計測する時間の長さを設定する構成は記載されていないが、固定値を設定する場合や、命令実行部２１０による命令実行によって設定する場合のどちらであっても、既存技術で実現可能である。本実施形態では、簡単のため、固定値が設定されているものとする。
【００３７】
（論理積部の真理表）
図４は、本実施形態に係る例外通知信号用論理積部２４０の真理表を示す図である。かかる真理表に従って、入力信号に応じた出力信号である例外通知信号が決定する。なお、図４の“ｘ”は、ＯＮ／ＯＦＦ関係なしに、例外通知信号が決まる場合を表現している。
【００３８】
例外通知信号用論理積部２４０の真理表は、実行モードフラグ２１１ａと、割込み禁止フラグ２２０ａと、例外抑制フラグ２３０ａとのＯＮ／ＯＦＦの組み合わせに対応して、例外通知信号２４０ａが決定されている。
【００３９】
《情報処理装置の動作タイミング》
以下、本実施形態におけるユーザモードにおけるスレッドの排他制御区間における、プロセッサ２００の動作について具体例を用いて詳細に説明する。
【００４０】
図５Ａと図５Ｂとは、本実施形態における関連要素における各信号の動作タイミングを示したタイミング図である。なお、これらのタイミング図は、プロセッサの動作モードが常にユーザモードとなっている状況を前提としている。また、各信号は、上側のレベルが有効を示す値（ｈｉｇｈ（１））、下側のレベルが無効を示す値（ｌｏｗ（０））として図示している。
【００４１】
（タイムアウトしない場合）
図５Ａは、本実施形態において、排他制御を開始した後、タイマ３３０にあらかじめ設定されている時間が経過するよりも前に，排他制御を終了した場合の、各信号の動作タイミングを示したタイミング図である。
【００４２】
図５Ａにおいて、命令実行部２１０の排他制御区間実行開始検出部２１２がスレッドによる排他制御開始の実行を検出すると、排他制御開始信号２１２ａが“ｈｉｇｈ（１）”となる。この排他制御開始信号２１２ａにより、割込み禁止フラグ記憶部２２０の割込み禁止フラグ２２０ａが有効を示す値（ｈｉｇｈ）に変化する。この時、例外抑制フラグ制御部２３０の出力である例外抑制フラグ２３０ａが“ｈｉｇｈ（１）”であり、排他制御開始信号２１２ａによってタイマ３３０による時間計測を開始する。このように、ユーザモードにおいて、排他制御開始により割込みは禁止されるが、例外通知信号２４０ａの出力は例外抑制フラグ２３０ａによって抑制される。
【００４３】
図５Ａのケースでは、タイマ３３０にあらかじめ設定されている時間が経過するよりも前に、排他制御区間実行終了検出部２１３がスレッドによる排他制御の終了を検出して、排他制御終了信号２１３ａが“ｈｉｇｈ（１）”となる。この排他制御終了信号２１３ａにより、割込み禁止フラグ記憶部２２０の割込み禁止フラグ２２０ａが無効を示す値（ｌｏｗ）に変化する。また、排他制御終了信号２１３ａによって、例外抑制フラグ制御部２３０のタイマ３３０による時間計測を停止する。タイマ３３０の出力である例外抑制フラグ２３０ａは、排他制御終了信号２１３ａによってタイマ３３０が時間計測を停止した場合は、有効（ｈｉｇｈ）のまま保たれるようになっているので、例外通知信号２４０ａは無効（ｌｏｗ）のままとなる。このため、命令実行部２１０は例外処理を実行しない。
【００４４】
（タイムアウトした場合）
図５Ｂは、本実施形態において、排他制御を開始した後、タイマ３３０にあらかじめ設定されている時間が経過するよりも前に排他制御を終了しなかった場合の、各信号の動作タイミングを示したタイミング図である。
【００４５】
図５Ａと同様、命令実行部２１０が排他制御区間実行開始検出部２１２がスレッドによる排他制御開始の実行を検出すると、排他制御開始信号２１２ａが有効を示す値（ｈｉｇｈ）となる。排他制御開始信号２１２ａによって、割込み禁止フラグ記憶部２２０の出力である割込み禁止フラグ２２０ａが有効を示す値（ｈｉｇｈ）に変化するとともに、例外抑制フラグ制御部２３０のタイマ３３０による時間計測を開始する。
【００４６】
図５Ｂのケースでは、タイマ３３０にあらかじめ設定されている時間が経過するよりも前に、排他制御区間実行終了検出部２１３がスレッドによる排他制御の終了を検出しない。したがって、排他制御終了信号２１３ａが出力されないので、割込み禁止フラグ記憶部２２０の割込み禁止フラグ２２０ａは有効を示す値（ｈｉｇｈ）を保つ。しかしながら、排他制御終了信号２１３ａが出力されないまま設定時間経過に伴ってタイマ３３０がタイムアウトして、例外抑制フラグが無効（ｌｏｗ）を示す値となる。その結果、例外通知信号用論理積部２４０の出力である例外通知信号２４０ａが有効（ｈｉｇｈ）に変化する。このため、命令実行部２１０は、例外処理を実行することになる。
【００４７】
以上に説明した操作により、プロセッサの動作モードがユーザモードとなっているときにスレッドが並列処理時に排他制御の開始を行っても、タイマにあらかじめ設定されている時間が経過するよりも前に排他制御の終了を行えば、例外を起こすことなくプログラム実行を継続できる。このように、ユーザモードで実行されるプログラム内に、排他制御区間を設置することができる。また、排他制御を開始してから、タイマにあらかじめ設定されている時間が経過するよりも前に排他制御の終了を行わない場合は、例外通知信号を発生させてユーザプログラムを異常終了させることができる。これにより、ユーザモードでのプログラム実行時にスレッドが並列処理時に排他制御を開始した場合に、無条件で割込みを禁止すると発生する弊害を回避することができる。
【００４８】
《情報処理装置における状態遷移》
図６は、本実施形態に係る情報処理装置における状態遷移を示す遷移図である。
【００４９】
カーネルモード６１０は、システムの制御を行うオペレーティング・システムを実行するためのモードである。ユーザモード６２０は、アプリケーション・プログラムを実行するためのモードである。通常、ユーザのアプリケーション・プログラムの実行を開始する場合に、カーネルモード６１０からユーザモード６２０に遷移する。一方、アプリケーション・プログラムの実行が終了すると、ユーザモード６２０からカーネルモード６１０に遷移する。なお、実際には、アプリケーション・プログラムの実行中にも、ＩＯ処理などを含む処理はカーネルモード６１０で実行される。カーネルモード６１０においては、既存の割込み禁止命令と許可命令との間、割込み禁止状態６１１となる。
【００５０】
本実施形態におけるマリチプロセッサにおける並列処理でスレッドによる排他制御が開始されると、ユーザモード６２０において、排他制御中の割込みを禁止する割込み禁止フラグがセットされて、割込み禁止状態６２１になる。所定時間内にスレッドによる排他制御が終了すると、割込み禁止状態６２１から戻る。しかしながら、所定時間を過ぎても排他制御が終了しないと、タイマがタイムアウトして割込み禁止状態６２１から例外通知信号生成状態６２２に遷移する。さらに、例外通知信号の生成を受けて、例外通知信号生成状態６２２からカーネルモード６１０に遷移する。
【００５１】
カーネルモード６１０では、例外通知信号を受けて例外通知処理状態６１２に遷移し、排他制御によるタイムアウトを起こしたアプリケーション・プログラムを強制終了させて、ユーザモード時の必要なデータなどを初期化する。そして、例外処理を終了してカーネルモード６１０に戻り、次の処理に移行する。
【００５２】
以上のように、本実施形態においては、例外抑制フラグを設け、ユーザモードでは排他制御が開始しても、例外抑制フラグが有効を示している間は例外処理を通知する例外通知信号を抑制する。この例外抑制フラグは、排他制御の開始が検出されてからあらかじめ定められた期間が経過しても排他制御の終了が検出されない場合に無効とすることで、排他制御が終了しないことによる問題を解消した。その結果、ユーザモードでプログラムを実行中であっても、所定期間よりも短い期間であれば例外を発生することなく、排他制御区間を設定できる。
【００５３】
本実施形態によれば、ユーザモードでのプログラム実行時に、スレッドによる排他制御で無条件で割込みを禁止すると発生する弊害を起こすことなく、ユーザモードで実行されるプログラム内に排他制御区間を設置できる。これにより、ユーザモードで実行されるアプリケーション・プログラム内であっても、割込みが発生してプログラム実行が中断するとプログラムの実行性能や正常動作に悪影響を及ぼす可能性のある、マルチプロセッサにおけるスレッドの排他制御を割込み禁止状態で実行できる。その結果、割込みによる悪影響を防止できる。
【００５４】
［第３実施形態］
次に、本発明の第３実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態と比べると、情報処理装置の排他制御に係る部分を、ハードウェア構成ではなくマイクロプログラムを含むファームウェアで実現する点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【００５５】
《情報処理装置のハードウェア構成》
図７は、本実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。なお、図７においては、ＭＰＵ７１０、レジスタ７４０およびストレージ７５０を、簡略化のため別の構成として図示したが、実際には、これらが一体となったファームウェアとして実現され、通常のアプリケーション・プログラムとは異なる。
【００５６】
図７で、ＭＰＵ７１０は演算制御用のマルチプロセッサであり、ＭＰＵ７１０がレジスタ７４０を使用しながらストレージ７５０に格納されたマイクロプログラムおよびモジュールを実行することで、図２Ａに示された情報処理装置の各機能構成部の機能が実現される。ＲＯＭ７２０は、初期データおよびプログラムなどの固定データを記憶する。
【００５７】
レジスタ７４０は、ＭＰＵ７１０が一時記憶のワークエリアとして使用するレジスタである。なお、レジスタ７４０はメモリに確保されてもよい。レジスタ７４０は、本実施形態の実現に必要な情報を保持する。実行モードフラグ７４１は、プロセッサの実行モードがカーネルモードかユーザモードかを示すフラグである。ステータスフラグ７４２は、プロセッサのステータス（図６参照）を示す。排他制御実行フラグ７４３は、スレッドによる排他制御中にセットされるフラグである。割込み禁止フラグ７４４は、割込みが禁止されているか否かを示すフラグである。タイマ７４５は、例外抑制の時間をカウントする。タイムアウト時間７４６は、例外抑制を解除する時間である。例外抑制フラグ７４７は、排他制御の開始からタイムアウト時間７４６をタイマ７４５がカウントする間、例外通知信号の発生を抑制するためのフラグである。例外通知信号７４８は、排他制御の開始からタイムアウト時間７４６を超えてタイマ７４５がカウントしてタイムアウトすると、発生する例外通知の信号である。
【００５８】
ストレージ７５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。本例においては、ＭＰＵ７１０のマイクロプロセッサが実行するマイクロプログラムが格納されている。このマイクロプログラムが、図５Ａの各論理回路素子の論理をファームウェアで実現する。排他制御区間実行開始検出モジュール７５１は、排他制御区間実行開始検出部２１２の処理を実現する。排他制御区間実行終了検出モジュール７５２は、排他制御区間実行終了検出部２１３の処理を実現する。割込み禁止フラグ制御モジュール７５３は、割込み禁止フラグ記憶部２２０の処理を実現する。例外通知信号生成モジュール７５４は、例外抑制フラグ制御部２３０および例外通知信号用論理積部２４０の処理を実現する。例外通知信号処理モジュール７５５は、命令実行部２１０の例外通知信号処理を実現する。
【００５９】
なお、ストレージ７５０中の各モジュールは便宜的に分けたものであって、複数のモジュールを１つの機能に合体しても１つのモジュールを複数の機能にを分離しても、さらに、モジュールの一部と一部を合体した他の機能を生成してもよい。また、図７のレジスタ７４０やストレージ７５０には、情報処理装置が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【００６０】
《排他制御処理》
図８は、本実施形態に係る情報処理装置の排他制御処理の手順を示すフローチャートである。なお、このフローチャートは、ＭＰＵ７１０中のマイクロプロセッサでレジスタ７４０を使用して実行されるマイクロプログラムであり、図５Ａの構成要素を実現する。また、図８は、図７における排他制御区間実行開始検出モジュール７５１、排他制御区間実行終了検出モジュール７５２、割込み禁止フラグ制御モジュール７５３、例外通知信号生成モジュール７５４、の全体を示している。図８は、適切に分割されてよい。
【００６１】
マイクロプロセッサは、ステップＳ８０１において、ユーザモードであるか否かを判定する。ユーザモードでない、すなわちカーネルモードであれば、カーネルモードの処理を行なう。ユーザモードであれば、マイクロプロセッサは、ステップＳ８１１において、スレッドによる排他処理の開始か否かを判定する。排他処理の開始でなければ、マイクロプロセッサは、ステップＳ８２１において、排他処理の終了か否かを判定する。排他処理の終了でなければ、マイクロプロセッサは、ステップＳ８３１において、タイマカウントか否かを判定する。
【００６２】
排他処理の開始であれば、マイクロプロセッサは、ステップＳ８１３において、タイマの初期化を行ないタイマのカウントを開始する。初期化値は“０”でカウントアップしても、初期化値が“ｎ”でカウントダウンしてもよい。本例では、初期化値が“０”の場合で説明する。次に、マイクロプロセッサは、ステップＳ８１５において、割込み禁止フラグをＯＮにする。
【００６３】
排他処理の終了であれば、マイクロプロセッサは、ステップＳ８２３において、タイマをクリアあるいは停止する。次に、マイクロプロセッサは、ステップＳ８２５において、割込み禁止フラグをＯＦＦにする。
【００６４】
タイムカウントであれば、マイクロプロセッサは、ステップＳ８３３において、タイマをカウントアップする。次に、マイクロプロセッサは、ステップＳ８３５において、タイマのカウント値が閾値Ｔｈ以上か否かを判定する。カウント値が閾値Ｔｈ以上でなければ処理を終了する。カウント値が閾値Ｔｈ以上であれば、マイクロプロセッサは、ステップＳ８３７において、割込み禁止フラグがＯＮか否かを判定する。割込み禁止フラグがＯＮでなければ処理を終了する。割込み禁止フラグがＯＮであれは、マイクロプロセッサは、ステップＳ８３９において、例外通知信号を生成してカーネルモードで処理すべくプロセッサに通知する。
【００６５】
《例外通知処理》
図９は、本実施形態に係る情報処理装置の例外通知処理の手順を示すフローチャートである。なお、このフローチャートは、ＮＭＩの割込みハンドラとしてファームウェアで実行されてよい。
【００６６】
マイクロプロセッサは、ステップＳ９０１において、例外通知信号の受信か否かを判定する。例外通知信号の受信でなければ、他の処理を行なう。例外通知信号の受信であれば、マイクロプロセッサは、ステップＳ９０３において、ユーザモードからカーネルモードに移行させる。そして、カーネルモードにおいて、排他制御中であったスレッドに関連するユーサのアプリケーション・プログラムを強制的に終了させる。そして、ユーザモードにより次のアプリケーション・プログラムを実行できるように、レジスタやプロセッサ、データの初期化を行なう。そして、割込み禁止フラグをＯＦＦにする。
【００６７】
本実施形態によれば、各処理要素をファームウェアで実現するので、ハードウェア構成に比較して処理の変更が容易であり、かつ、ソフトウェア構成に比較してアプリケーション・プログラムによる影響に無い処理を実現できる。
【００６８】
［第４実施形態］
次に、本発明の第４実施形態に係る情報処理装置について説明する。本実施形態に係る情報処理装置は、上記第２実施形態および第３実施形態と比べると、ユーザモードにおける排他制御の処理を割込み禁止処理に適用した例である。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【００６９】
《情報処理装置の機能構成》
図１０は、本実施形態に係る情報処理装置の機能構成を示すブロック図である。なお、図１０において、図５Ａと同様の構成要素には同じ参照番号を付して、説明は省略する。
【００７０】
プロセッサ１０００の命令実行部１０１０には、割込み禁止検出部１０１２と、割込み許可検出部１０１３と、を有する。割込み禁止検出部１０１２は、命令実行部１０１０において割る込み禁止状態になったことを検出する。割込み許可検出部１０１３は、命令実行部１０１０において割る込み許可状態になったことを検出する。
【００７１】
本実施形態によれば、割込み禁止状態を検出してから所定時間が経過しても、割込み許可状態に復帰しない場合は、例外抑制フラグを無効にして例外通知信号を生成する。すなわち、例外抑制フラグによって、ユーザモードで割込み禁止状態となる操作を実行しても、例外抑制フラグが有効を示している間は割込み禁止を通知する例外通知信号を抑制する。この例外抑制フラグを、割込み禁止に設定されてからあらかじめ定められた期間が経過しても割込み許可操作が行われない場合に無効とする。これにより、ユーザモードでプログラムを実行中であっても、前記期間よりも短い期間であれば例外を発生することなく、割込み禁止状態に設定することを可能とする。
【００７２】
［他の実施形態］
なお、本発明は、ユーザモードにおける割込みを禁止することが望ましい特殊な処理を実行可能とすると共に、ユーザプログラムのミスや悪意のユーザプログラムによる悪影響を無くす発明であって、特殊な処理は、マルチプロセッサの並列処理におけるスレッドの排他処理に限定されない。
【００７３】
また、実施形態を参照して発明を説明したが、発明は上記実施形態に限定されるものではない。発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【００７４】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【００７５】
［実施形態の他の表現］
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御手段と、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御手段と、
を備える情報処理装置。
（付記２）
前記情報処理装置はマルチプロセッサを有して、複数のスレッドによる並列処理を行ない、
前記スレッドによる排他制御は、前記スレッドによる命令実行に使用する資源の他のスレッドによる変更を回避するために実行される付記１に記載の情報処理装置。
（付記３）
前記排他制御手段は、前記スレッドによる排他制御の開始から終了までの間、割込み禁止フラグを設定する割込み禁止フラグ記憶手段を有し、
前記例外通知信号制御手段は、
実行モードがカーネルモードであるかユーザモードであるかを示す実行モードフラグ記憶手段と、前記例外通知信号の抑制を制御すると共に、前記例外通知信号の抑制が所定期間を超えた場合に前記例外通知信号の抑制を解除する抑制フラグ制御手段と、を有し、
前記実行モードフラグがユーザモードを示し、かつ、前記割込み禁止フラグが設定され、かつ、前記例外通知信号の抑制が解除された場合に、前記例外通知信号を生成する、付記１または２に記載の情報処理装置。
（付記４）
前記排他制御手段および前記例外通知信号制御手段の少なくともいずれかは、マイクロプログラムにより実現される付記１乃至３のいずれか１項に記載の情報処理装置。
（付記５）
前記例外通知信号制御手段が生成した前記例外通知信号に基づいて、実行モードをカーネルモードに移行させて、排他制御を実行中のスレッドを含むプログラムを強制的に終了させ、前記割込み禁止フラグを解除する例外通知処理手段を、さらに備える付記１乃至４のいずれか１項に記載の情報処理装置。
（付記６）
前記例外通知処理手段は、マイクロプログラムにより実現される付記５に記載の情報処理装置。
（付記７）
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
を含む情報処理方法。
（付記８）
スレッドによる排他制御の開始を検出して割込み禁止フラグを設定し、前記スレッドによる排他制御の終了を検出して割込み禁止フラグを解除する排他制御ステップと、
前記排他制御の開始の検出に伴って、ユーザモードにおける割込み禁止要求による例外通知信号の抑制を開始して、前記排他制御の終了の検出に伴って、前記例外通知信号の抑制を終了すると共に、前記例外通知信号の抑制が所定時間を超えて継続する場合には、前記排他制御の終了の検出を待たずに前記例外通知信号を生成する例外通知信号制御ステップと、
をコンピュータに実行させる情報処理プログラム。
【図１】
2015014966.tif 000003
【図２Ａ】
2015014966.tif 000004
【図２Ｂ】
2015014966.tif 000005
【図３】
2015014966.tif 000006
【図４】
2015014966.tif 000007
【図５Ａ】
2015014966.tif 000008
【図５Ｂ】
2015014966.tif 000009
【図６】
2015014966.tif 000010
【図７】
2015014966.tif 000011
【図８】
2015014966.tif 000012
【図９】
2015014966.tif 000013
【図１０】
2015014966.tif 000014