(57)【要約】【課題】  複数の定周期割込みの優先度を夫々の割込みハンドラの実行状況に基づいて動的に変更することにより、各割込みの優先度を適切に設定すること。【解決手段】  複数の定周期割込み信号の夫々に対応して実行される割込みハンドラの割込み優先度を設定する情報処理装置において、夫々の割込みハンドラごとにその割込みハンドラの起動間隔を計測するタイマと、前記起動間隔と本来の周期とのずれに対する許容条件を保存する手段と、割込みハンドラごとに前記許容条件を逸脱したか否かを判定し、逸脱した場合はその割込みハンドラの割込み優先度を上げる優先度設定手段とを備える。【選択図】      図１
2019159852.tif 000002
【特許請求の範囲】
【請求項１】
複数の定周期割込み信号の夫々に対応して実行される割込みハンドラの割込み優先度を設定する情報処理装置であって、
夫々の割込みハンドラごとにその割込みハンドラの起動間隔を計測するタイマと、
前記起動間隔と本来の周期とのずれに対する許容条件を保存する手段と、
割込みハンドラごとに前記許容条件を逸脱したか否かを判定し、逸脱した場合はその割込みハンドラの割込み優先度を変更する優先度設定手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記許容条件は、夫々の割込みハンドラの予め設定された本来の起動周期と前記タイマの値との差、及び／又は、当該差が閾値を超えた回数に基づいて定められることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
割込みハンドラごとの割込み優先度を保存し、
初期状態はすべての割込みハンドラが最低レベルの優先度に設定されており、
前記優先度設定手段は、割込みハンドラが前記許容条件を逸脱したときに、その割込みハンドラの割込み優先度を上げることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
割込みハンドラごとに、そのプログラムコード中の条件付き分岐命令を検出して、当該条件付き分岐命令を、条件付き分岐命令以外の命令に置き換える命令読替手段と、
当該割込みハンドラが実行された後に、前記命令読替手段によって置き換えられた命令を、元の条件付き分岐命令に戻す命令読替取消手段と、
を備えたことを特徴とする請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
条件付き分岐命令の一覧を保存する条件付分岐命令テーブルを備え、
前記命令読替手段は、前記条件付き分岐命令テーブルを参照して、割込みハンドラのプログラムコード中に該当する条件付き分岐命令が存在するか否かを判定し、条件付き分岐命令が存在する場合は、当該条件付き分岐命令および該条件付き分岐命令の存在したアドレスを読替箇所記録テーブルに記録し、
前記命令読替取消手段は、前記読替箇所記録テーブルを参照して、前記命令読替手段によって置き換えられた命令を、元の条件付き分岐命令に戻すことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
割込みハンドラの割込み優先度が予め定めた一定の優先度まで上がり、尚も前記許容条件を逸脱する場合は、アラーム出力することを特徴とする請求項１乃至５のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込み機器などマイクロプロセッサを内蔵する情報処理装置に係り、特に、マイクロプロセッサの外部または内部で発生する割込み信号により起動される複数の割込みハンドラの優先度を変更することのできる情報処理装置に関するものである。
【背景技術】
【０００２】
一般にマイクロプロセッサ（以下、「ＭＰＵ」という。）を内蔵する組込み機器では、ＭＰＵの外部または内部で割込み信号が発生したときに、組込み機器のソフトウェアプログラムの開発者（以下、単に「開発者」という。）が予め設定した優先度で夫々の割込み信号に対応する割込みハンドラが実行される。この割込み信号は、ある事象（イベント）が発生したときに発生する場合もあるが、タイマ割込みなど周期的に発生する場合も少なからずある。複数の割込みが同時に発生する場合もあるが、この場合は開発者が割込み信号ごとに予め設定した優先度に基づいて、優先度の高い順に割込みハンドラが実行される。
【０００３】
使用する割込み信号や割込みの優先度を適切に設計することは、リアルタイム性の要求される組込み機器では特に重要であるが、これらの設計は経験や勘に頼るところが大きいのが現状である。特に、複数の割込みが同時に発生した場合の優先度を決定するためには、組込み機器の機能全体を理解すると共にＭＰＵの動作や仕様等の理解が必要になるので難易度が高い。
【０００４】
ソフトウェアプログラムを試験的に実行することによりプログラムの挙動を確認しながら優先度を変更することは、優先度の設計の難易度を下げるために有効であり、従来から割込みハンドラの優先度を切り替えるための技術が提案されている。（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１２７０３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献1に記載の技術は、優先度の高いタスクが長時間待たされることを防止するため、開発者が予め設定した共有資源へのアクセス時間帯に基づいて共有資源アクセス時にＭＰＵがタスクの優先度を動的に変更するというものである。
【０００７】
しかしながら、特許文献１は、利用者が予め指定した共有資源へのイベント的なアクセスの際、その時間帯に基づいてタスクの優先度を変更するという技術であり、定周期割込みの周期を所望通りにするための優先度変更には適用できない。
【０００８】
本発明は、上述のかかる事情に鑑みてなされたものであり、複数の定周期割込みの優先度を夫々の割込みハンドラの実行状況に基づいて動的に変更することにより、各割込み優先度を適切に設定することのできる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の情報処理装置は、主に次の点を特徴とする。
１．割込み優先度の動的変更対象の割込みハンドラを予め決めておき、その割込みハンドラにおける、本来の実行周期の許容超過時間および本来の実行周期からの許容超過回数の割合を含む許容条件を情報処理装置に設定する。
２．割込みハンドラ実行時、割込みハンドラ中の条件分岐と実行処理を検出のうえ、実行時間が最大になるような条件で割込みハンドラを実行する。
３．プログラムの実行中、プログラムにより構成される優先度設定手段は、前記許容条件を満たさない割込みハンドラの存在を検知して当該割込みハンドラの優先度を高くする。
４．優先度設定手段は、優先度を最高にしても前記許容条件を満たさない割込みハンドラが存在する場合は、開発者が認識可能な形式でアラーム出力を行う。
【００１０】
具体的には、本発明に係わる情報処理装置は、複数の定周期割込み信号の夫々に対応して実行される割込みハンドラの割込み優先度を設定する情報処理装置であって、
夫々の割込みハンドラごとにその割込みハンドラの起動間隔を計測するタイマと、
前記起動間隔と本来の周期とのずれに対する許容条件を保存する手段と、
割込みハンドラごとに前記許容条件を逸脱したか否かを判定し、逸脱した場合はその割込みハンドラの割込み優先度を変更する優先度設定手段と、
を備えたことを特徴とする。
【００１１】
好ましくは、この許容条件は、夫々の割込みハンドラの予め設定された本来の起動周期と前記タイマの値との差、または当該差が閾値を超えた回数に基づいて定められるようにすると良い。
【００１２】
本発明では、仕様通りの周期で実行されない割込みハンドラを検出して、その割込みハンドラの割込み優先度を変更することにより、すべての割込みハンドラの優先度が最適になるように調整を行う。
【００１３】
より好ましくは、割込みハンドラごとの割込み優先度を保存し、初期状態（システムリセット時）は管理対象のすべての割込みハンドラを最低レベルの優先度に設定しておき、前記優先度設定手段は、割込みハンドラが前記許容条件を逸脱したときに、その割込みハンドラの割込み優先度を上げるようにすると良い。
【００１４】
このようにすれば、許容条件を逸脱する割込みハンドラの優先度が自動的に上がるのでシステム全体の割込み優先度の調整を自動的に行うことができる。なお、この調整は、システム開発時に行い、調整後の割込み優先度を固定的に設定しても良いし、システム稼働中を含め常に調整を行うようにしても良い。
【００１５】
また、本発明に係わる情報処理装置は、
割込みハンドラごとに、そのプログラムコード中の条件付き分岐命令を検出して、当該条件付き分岐命令を、条件付き分岐命令以外の命令に置き換える命令読替手段と、
当該割込みハンドラが実行された後に、前記命令読替手段によって置き換えられた命令を、元の条件付き分岐命令に戻す命令読替取消手段と、
を備えたことを特徴とする。
【００１６】
本発明では、割込みハンドラのプログラムコード（機械語）中に、if文、while文等の条件付き分岐付き命令が存在する場合は、それをNOP（ノーオペレーション命令）など、条件付き分岐命令以外の予め定めた命令に置き換える。この状態で割込みハンドラを実行することにより、定周期動作に影響を及ぼすようなクリティカルパスを通すことができる。このような命令読替処理はシステム開発中に行うのが好ましい。
【００１７】
また、割込みハンドラの割込み優先度が予め定めた一定の優先度まで上がり、尚も前記許容条件を逸脱する場合はアラーム出力することにより、開発者はシステム全体の定周期動作に影響を与える可能性の高い割込みハンドラを予め認識することができる。
【発明の効果】
【００１８】
本発明によれば、定周期割込みで動作する割込みハンドラの適切な割込み優先度を自動設定できるので、割込み優先度の設計の難易度を下げることが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態による組込み機器の機能構成図である。
【図２】図１の時間測定結果格納テーブルのデータ構成例である。
【図３】図１の優先度設定手段の処理手順を示すフローチャートである。
【図４】図３のステップＳ１０２の処理の具体例の説明図である。
【図５】本発明の第２の実施の形態による組込み機器の機能構成図である。
【図６】図５の時間測定結果格納テーブルのデータ構成例である。
【図７】図５の優先度設定手段の処理手順を示すフローチャートである。
【図８】図５の命令読替手段の処理手順を示すフローチャートである。
【図９】図５の命令読替取消手段の処理手順を示すフローチャートである。
【図１０】図５の条件付き分岐命令テーブルのデータ構成例である。
【図１１】図８の命令読替処理の具体例の説明図である。
【図１２】図５の読替箇所記録テーブルのデータ構成例である。
【図１３】図５の他の実施例である。
【発明を実施するための形態】
【００２０】
以下、本発明の情報処理装置として、リアルタイム性が要求される組込み機器を例に図面を参照しながら説明する。なお、本発明は組込み機器に限らず、定周期割込みによって割込みハンドラが実行される演算処理機能を有する情報処理装置全般に適用可能である。
【００２１】
（第１の実施の形態）
組込み機器１は、一般に、外部機器からの信号を入力する入力部、入力した信号に基づいて演算処理を実行し、またプログラムやデータを記憶するメモリを有する演算処理部（以下、「ＣＰＵ」という。）、及び演算結果を外部機器へ出力する出力部を備えている。
【００２２】
図１は、組込み機器１のＣＰＵ２の機能構成図である。ＣＰＵ２は、予め定められた周期で起動される割込みハンドラ２６、夫々の割込みハンドラごとに該割込みハンドラの起動間隔を計測するタイマ２１、割込みハンドラの優先度を変更する優先度設定手段２３、割込みハンドラごとにその起動間隔や本来の周期とのずれに関する許容条件等を保存する時間測定結果格納テーブル２４を備えている。優先度設定手段２３や割込みハンドラ２６はプログラムによって実現することができる。
【００２３】
ＣＰＵ２はこの他、組込み機器１の機能を実現するためのアプリケーションプログラムやオペレーティングシステム等の手段２７を備えているが、本発明とは直接関係がないので説明を省略する。
【００２４】
以下、割込みハンドラ２６の例として、タイマ２１からの定周期割込みによって、５０ミリ秒周期の制御処理を実行する割込みハンドラ２６ａと、タイマ２１からの定周期割込みによって、１００ミリ秒周期の制御処理を実行する割り込みハンドラ２６ｂを用いて説明する。
【００２５】
時間測定結果格納テーブル２４は、図２に示すように、割込み優先度の動的変更対象の割込みハンドラ２６ａ，２６ｂの夫々について、最新の実行開始時カウンタ値、過去ｎ回（ｎ＞＝１の自然数）の周期（単位はカウンタ値）、本来の周期（単位はカウンタ値）、直近ｎ回の実行あたりの周期超過許容回数、周期超過許容カウンタ値、および割込み番号が互いに関連付けられて保存されている。なお、図２では、過去３回（ｎ＝３）の実績値を記録する例を示している。また、タイマ値はカウンタ値を用いて示している。たとえば、０．１ミリ秒で１カウントの場合は、最新の周期５１０は、前回起動から今回起動までの時間間隔（起動間隔）が５１ミリ秒（５１０カウント×０．１ミリ秒／カウント＝５１ミリ秒）であることを表している。図２において、「最新の実行開始時カウンタ値」、「最新の周期」、「１回前の周期」、「２回前の周期」の各値は、プログラムの実行に伴って変化し、その他の項目は、システム構築時に開発者が予め設定し、プログラムの実行に伴って変化しない。
【００２６】
例えば、割込みハンドラ２６ａについて、「本来の周期」欄の値「５００」は、仕様上の周期が５０ミリ秒であることを示している。「３回の実行あたりの周期超過許容回数」欄の値「１」は、直近３回の実行において周期の超過があった回数が１回までは許容され、この場合は割込み優先度の変更処理は行なわれず、２回以上周期超過した場合に割込み優先度の変更処理が実行されることを意味する。また「周期超過許容カウンタ値」の値「０」は、周期が１カウントでも超過すると、その周期において周期超過があったと判定されることを意味する。また割込みハンドラ２６ｂの「周期超過許容カウンタ値」の値「２０」は、周期超過が本来の周期の２０カウント以内までは周期超過がなかったと判定され、周期超過が２０カウントを超えるとその周期において周期超過があったと判定されることを意味する。
【００２７】
なお、図２の例では、３回分の周期を記録することとしているが、何回分の周期を保存するかは、開発プログラムの特性に応じて開発者が適宜決定すればよい。
【００２８】
次に、優先度設定手段２３の処理手順について、図３を参照しながら説明する。優先度設定手段２３は、割込みハンドラ２６の開始時に割込みハンドラ２６から呼び出され、以下の処理を実行する。なお、各割込みハンドラ２６の割込み優先度の初期値は開発者が任意に設定可能であるが、初期状態においては最低レベルにしておくのが好ましい。
【００２９】
（１）優先度設定手段２３は呼び出されると、まずタイマ２１のカウンタ値を読み出し（ステップＳ１０１）、呼出元の割込みハンドラに関し、時間測定結果格納テーブル２４に保存されているカウンタ値と周期（起動間隔）を最新値に更新する（ステップＳ１０２〜Ｓ１０４）。
（２）時間測定結果格納テーブル２４の呼出元の割込みハンドラに関する情報にアクセスして、周期超過許容カウンタ値を超えている周期の数が、３回の実行あたりの周期超過許容回数を超えているか否かを判定する（ステップＳ１０５，Ｓ１０６）。
（３）ステップＳ１０５，Ｓ１０６の判定の結果、周期超過許容回数を超えていない場合は優先度設定処理を終了する。一方、周期超過許容回数を超えている場合は、次に呼出元の割込みハンドラの割込みの優先度を高くすることが可能か否かを判定する（ステップＳ１０７，Ｓ１０８）。そして、
（４）ステップＳ１０７，Ｓ１０８の判定の結果、優先度を高くすることが可能ならば、割込みハンドラに対応する割込みの優先度を1つだけ高くする（ステップＳ１０９）。一方、優先度を高くすることが不可能ならば、その旨をコンソール出力等により利用者に通知する（ステップＳ１１０）。
【００３０】
優先度設定手段２３は、以上の手順で複数の割込みハンドラの割込み優先度を自動的に調整する。
【００３１】
ここで、優先度設定手段２３の時間測定結果格納テーブル２４に保存されている周期の更新処理（ステップＳ１０２）の実現手法の一例を図４に基づいて説明する。
（１）図４（ａ）に示すように、時間測定結果格納テーブル２４のうち周期に関する部分を、最新の周期へのポインタを含む循環リスト（周期格納領域０〜２）として実装する。たとえば、周期格納領域０は、周期データと、次の周期格納領域として周期格納領域１のアドレスが格納されている。他の周期格納領域についても同様である。いま、図３のステップＳ１０２実行前の状態では、図４（ａ）に示すように、最新の周期へのポインタが指し示すアドレスは周期格納領域０のアドレスとなっているとする。すなわち周期格納領域０は最新の周期の格納領域、周期格納領域１は１回前の周期の格納領域、周期格納領域２は２回前の周期の格納領域として、それぞれ使用しているとする。
（２）図３のステップＳ１０２の処理として、図４（ｂ）に示すように、最新の周期へのポインタが指し示すアドレスを、周期格納領域２に変更する。これにより、最新の周期の格納領域として使用していた周期格納領域０が１回前の周期の格納領域になり、１回前の周期の格納領域として使用していた周期格納領域１が２回前の周期の格納領域になる。このようにすれば、３回分の周期データを効率的に更新していくことができる。
【００３２】
以上、本実施の形態によれば、優先度設定手段が、時間測定結果格納テーブルに設定された許容条件を満足できない割込みハンドラの優先順位を逐次上げていくので、システム全体として適切な割込み優先度を自動設定できる。
【００３３】
（第２の実施の形態）
次に本発明の第２の実施の形態について説明する。図５は、第２の実施の形態による組込み機器の機能ブロック図である。図１に示す第１の実施の形態との主な違いは、割込みハンドラの実行時間が長くなるように命令を読み替える処理を実行する命令読替手段２８、命令読替手段２８による読替処理を取消す処理を実行する命令読替取消手段２９、条件付き分岐命令を格納するテーブル３０、及び命令読替箇所を記録するテーブル３１を追加したことである。また、これらの追加に伴い、時間測定結果格納テーブル２４にデータ項目が追加され、優先度設定手段２３の処理手順が変更になっている。
【００３４】
本実施の形態による時間測定結果格納テーブル２４の例を図６に示す。図２との違いは、命令読替条件を追加したことである。命令読替条件とは、命令読替手段２８の実行条件であり、開発者が予め設定するものである。開発者が設定可能にすることにより、実行時間が大きく変化しないことが仕様上明らかな処理、すなわち実行時間が稀に長くなることがない処理に対し、命令読替手段２８を実行しないようにすることが可能である。これにより、命令読替処理実行による実行時間の遅延を抑制することができる。
【００３５】
本実施の形態による優先度設定手段２３の処理手順を図７に示す。図３との違いは、優先度設定手段の起動開始直後に、処理手順ステップＳ２０１〜Ｓ２０３を追加したことである。具体的には、優先度設定手段２３は起動されると、時間測定結果格納テーブル２４の命令読替条件を満たす場合に命令読替手段２８を呼び出す（ステップＳ２０１〜Ｓ２０３）。その後、図３と同様にステップＳ１０１以降の処理を実行する。
【００３６】
次に命令読替手段２８の処理の概略手順を図８を用いて説明する。命令読替手段２８は優先度設定手段２３を経由して自身を呼び出した割込みハンドラの各命令に対し、次の処理を実行する。
（１）命令が条件付き分岐命令であるか否かを、当該命令が条件付き分岐命令テーブル３０に含まれているか否かに基づき判定する（ステップＳ３０２）。
（２）当該命令が条件付き分岐命令テーブル３０に含まれていれば、条件付き分岐命令を予め決められた別の命令に書き換える（ステップＳ３０４）。具体的には、当該命令に基づく分岐により実行されうる処理のうち、より実行時間を要する処理が無条件で実行されるように書き換える。
（３）読替箇所のアドレス、読替前の命令、および、読替後の命令を、読替箇所記録テーブル３１に記録する。本記録は、命令読替取消手段２９で読み替えた内容をもとに戻すために使用する。
【００３７】
割込みハンドラ２６は、終了時に命令読替取消手段２９を呼び出す。図９に示すように、呼び出された命令読替取消手段２９は、読替箇所記録テーブル３１にアクセスして、本処理の呼出元の割込みハンドラに関連付けて記録されている内容に基づいて、当該割込みハンドラ２６の処理内容を命令読替前に戻す。これにより、当該割込みハンドラ２６の本来の処理（命令読替前の処理）が実行されるようになる。
【００３８】
以下に命令読替処理および条件付き分岐命令テーブル３０の具体例を示す。
命令読替手段で使用する条件付き分岐命令テーブル３０は、図１０に示すように、ＣＰＵ２上で実行する命令の種類に基づいて、条件付き分岐命令、および、当該分岐命令による分岐処理が終了する箇所に記載される命令（分岐処理終了命令）が記録されている。これらの命令は開発者が予め設定する。登録すべき命令の種類は、使用するＣＰＵにより定まる。
【００３９】
次に命令読替手段２８のステップＳ３０４による命令読替処理の例を図１１を用いて説明する。いまＣＰＵは、命令長は４バイト固定であり、実行に要する時間は全命令同一であるものとする。また、条件付き分岐命令テーブル３０には図１０に記載の内容が登録されているものとする。
【００４０】
当該ステップＳ３０４において、命令読替前は、アドレス0x1230に条件付き分岐命令「bge」があり、当該条件付き分岐命令によりアドレス0x1244にジャンプしなかった場合の処理は、アドレス0x1240の分岐処理終了命令「b」で終了するため、４命令である。一方、アドレス0x1244にジャンプした場合の処理は、アドレス0x124Cの分岐処理終了命令「bx」で終了するため、３命令である。従って、アドレス0x1244にジャンプしなかった場合の処理（アドレス0x1244にジャンプした場合と比べ時間がかかる）処理が常に実行されるよう、アドレス0x1230の条件付き分岐命令を、無処理の命令「nop」に置換する。
【００４１】
以上のごとく命令読替処理が実行される。
図１２は、命令読替手段２８、および命令読替取消手段２９で使用する読替箇所記録テーブル３１の例である。本テーブルには、読替箇所のアドレス、読替前の命令、および、読替後の命令を格納する。本テーブル３１は、命令読替手段２８により行（レコード）が追加され、命令読替取消手段２９によりレコードの読出し、削除が行われる。
【００４２】
（他の実施例）
上記は、ＣＰＵで実行される命令を書き換えることが可能であることを前提としている。しかし、実機においては、当該命令は書き換えることが不可能なメモリに保存されていることがある。本実施例は、この場合にも適用可能にするものである。
【００４３】
図１３は、割込みの優先度を決定する対象の組込み機器における機能構成を示したものである。本実施例においては、組込み機器でソフトウェアプログラムを実行する代わりに、命令セットシミュレータ２０が動作するパーソナルコンピュータ１０でソフトウェアプログラムをシミュレーションする、命令セットシミュレータ２０上で動作する各手段やテーブル等は、図５と同様である。
【００４４】
以上、本実施の形態によれば、第１の実施の形態の効果に加えて、実行周期が稀に長くなる割込みハンドラの優先度についても、割込みの優先度を適切に設定でき、設計の難易度を下げることが可能になる。
【００４５】
本発明は、上述した実施の形態に限定されることなく、その要旨を逸脱しない範囲で種々変形して実現することができる。例えば、上記の説明において、割込みハンドラが許容条件を逸脱した場合に、優先度設定手段は割込み優先度を１だけ上げることとしているが、逸脱した量に応じて割込み優先度を２以上、上げるようにしても良い。このようにすれば、割込み優先度をより早く最適化することができる。
【符号の説明】
【００４６】
１    組み込み機器（情報処理装置）
２    ＣＰＵ
１０    パーソナルコンピュータ（情報処理装置）
２０    命令セットシミュレータ
２１    タイマ
２３    優先度設定手段
２４    時間測定結果格納テーブル
２６（２６ａ，２６ｂ，２６ｃ）    割込みハンドラ
２８    命令読替手段
２９    命令読替取消手段
３０    分岐命令テーブル
３１    読替箇所記録テーブル
【図１】
2019159852.tif 000003
【図２】
2019159852.tif 000004
【図３】
2019159852.tif 000005
【図４】
2019159852.tif 000006
【図５】
2019159852.tif 000007
【図６】
2019159852.tif 000008
【図７】
2019159852.tif 000009
【図８】
2019159852.tif 000010
【図９】
2019159852.tif 000011
【図１０】
2019159852.tif 000012
【図１１】
2019159852.tif 000013
【図１２】
2019159852.tif 000014
【図１３】
2019159852.tif 000015