(57)【特許請求の範囲】
【請求項１】
特権レベルが設定された複数のプログラムを実行可能なマイクロコンピュータであって、
複数の割り込み要因のそれぞれについて、前記特権レベル毎に、割り込みを許可するか禁止するかを設定する割込設定が可能であるか否かを示す割込設定情報が格納された割込設定テーブルを記憶する第１記憶手段と、
割り込みを許可する設定を指示するための割込許可命令が入力すると、前記第１記憶手段に記憶されている前記割込設定テーブルを参照し、現時点で実行中の前記プログラムの前記特権レベルに対応した前記割込設定情報に基づいて、前記割込設定が可能である前記割り込み要因を特定し、特定した前記割り込み要因による割り込みを許可する割込許可手段と、
割り込みを禁止する設定を指示するための割込禁止命令が入力すると、前記第１記憶手段に記憶されている前記割込設定テーブルを参照し、現時点で実行中の前記プログラムの前記特権レベルに対応した前記割込設定情報に基づいて、前記割込設定が可能である前記割り込み要因を特定し、特定した前記割り込み要因による割り込みを禁止する割込禁止手段と、
前記プログラムの実行中に前記割り込み要因が発生した場合に、発生した前記割り込み要因による割り込みが前記割込許可手段により許可されたものである場合には、前記プログラムの実行を中断して、発生した前記割り込み要因に対応する割り込み処理を実行し、発生した前記割り込み要因による割り込みが前記割込禁止手段により禁止されたものである場合には、発生した前記割り込み要因に対応する割り込み処理を禁止する割込処理実行手段とを備える
ことを特徴とするマイクロコンピュータ。
【請求項２】
現時点で実行中の前記プログラムについて、複数の前記割り込み要因毎に、割り込みを許可するか禁止するかを示す割込許可状態情報を格納する割込許可状態格納領域が設けられた第２記憶手段を備え、
前記割込許可手段は、前記割込許可状態格納領域に格納されている前記割込許可状態情報のうち前記割り込み要因に対応する前記割込許可状態情報を、割り込みを許可する旨を示す内容に設定することで、特定した前記割り込み要因による割り込みを許可し、
前記割込禁止手段は、前記割込許可状態格納領域に格納されている前記割込許可状態情報のうち前記割り込み要因に対応する前記割込許可状態情報を、割り込みを禁止する旨を示す内容に設定することで、特定した前記割り込み要因による割り込みを禁止し、
前記割込処理実行手段は、前記割込許可状態格納領域に格納されている前記割込許可状態情報を参照することによって、発生した前記割り込み要因に対応する割り込み処理を実行するか禁止するかを判断し、
実行する前記プログラムが変更されることにより、実行中の前記プログラムの前記特権レベルが高くなると、前記特権レベルが高くなる前の前記割込許可状態情報を記憶することにより前記割込許可状態情報を退避させるとともに、実行する前記プログラムが変更されることにより、実行中の前記プログラムの前記特権レベルが低くなると、記憶した前記割込許可状態情報のうち、実行中の前記プログラムの前記特権レベルに対応する前記割込許可状態情報を、前記第２記憶手段に設けられた前記割込許可状態格納領域に格納することにより前記割込許可状態情報を復帰させる情報移動手段を備える
ことを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記情報移動手段は、
現時点で実行中の前記プログラムの前記特権レベルに対応した前記割込設定情報に基づいて、前記割込設定が可能である前記割り込み要因を特定し、前記割込許可状態格納領域に格納された前記割込許可状態情報のうち、前記割込設定が可能であると特定した前記割り込み要因に対応する前記割込許可状態情報を記憶することにより前記割込許可状態情報を退避させる
ことを特徴とする請求項２に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特権レベルが異なる複数のプログラムを実行可能に構成されたマイクロコンピュータに関する。
【背景技術】
【０００２】
マイクロコンピュータは、一般に、ＣＰＵとメモリの他に周辺回路および割込コントローラを備えて構成されている（例えば、特許文献１を参照）。割込コントローラは、周辺回路からの割込要求を一括管理しており、複数の割込要求が同時に発生すると、割込要求毎に予め設定された優先度に基づいて、優先度が最も高い割込要求に対応した割込要求信号をＣＰＵに出力する。そしてＣＰＵは、割込許可状態である場合に割込要求信号が入力すると割り込みを許可する一方、割込禁止状態である場合に割込要求信号が入力すると割り込みを禁止するように構成されている。
【０００３】
またＣＰＵは、割込許可命令（以下、ＥＩ命令という）を実行すると、ノンマスカブル割り込み（ＮＭＩ）等の一部を除いた割り込みが許可される割込許可状態になる一方、割込禁止命令（以下、ＤＩ命令という）を実行すると、ノンマスカブル割り込み（ＮＭＩ）等の一部を除いた割り込みが禁止される割込禁止状態となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３２０９１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、マイクロコンピュータでは、ＣＰＵが実行する複数のプログラム毎に特権レベルを設定し、特権レベルが低くなるほど、プログラムで実行可能な命令と、プログラムによるメモリへのアクセスとが制限されるように構成することが可能である。
【０００６】
しかし、マイクロコンピュータでは、上述のように、ＥＩ命令およびＤＩ命令を実行すると、ノンマスカブル割り込み（ＮＭＩ）等の一部を除いた割り込みを一括して許可および禁止する。このため、特権レベルを設定した場合に、割込許可状態または割込禁止状態に変更することができる割り込みを、特権レベル毎に異なるように設定することができないという問題があった。
【０００７】
本発明は、こうした問題に鑑みてなされたものであり、許可および禁止を変更可能な割り込みを特権レベル毎に設定することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた請求項１に記載の発明は、特権レベルが設定された複数のプログラムを実行可能なマイクロコンピュータであって、第１記憶手段が、複数の割り込み要因のそれぞれについて、特権レベル毎に、割り込みを許可するか禁止するかを設定する割込設定が可能であるか否かを示す割込設定情報が格納された割込設定テーブルを記憶しており、割込許可手段が、割り込みを許可する設定を指示するための割込許可命令が入力すると、第１記憶手段に記憶されている割込設定テーブルを参照し、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、特定した割り込み要因による割り込みを許可するとともに、割込禁止手段が、割り込みを禁止する設定を指示するための割込禁止命令が入力すると、第１記憶手段に記憶されている割込設定テーブルを参照し、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、特定した割り込み要因による割り込みを禁止する。そして割込処理実行手段が、プログラムの実行中に割り込み要因が発生した場合に、発生した割り込み要因による割り込みが割込許可手段により許可されたものである場合には、プログラムの実行を中断して、発生した割り込み要因に対応する割り込み処理を実行し、発生した割り込み要因による割り込みが割込禁止手段により禁止されたものである場合には、発生した割り込み要因に対応する割り込み処理を禁止する。
【０００９】
このように構成されたマイクロコンピュータでは、現時点で実行中のプログラムの特権レベルにおいて、割り込みを許可するか禁止するかを設定する割込設定が可能である割り込み要因を、割込設定テーブルを参照することにより特定し、割込設定が可能であると特定した割り込み要因による割り込みを、割込許可命令および割込禁止命令が入力したときにそれぞれ許可および禁止することができる。これにより、許可および禁止を変更可能な割り込みを特権レベル毎に設定することができる。
【００１０】
また、請求項１に記載のマイクロコンピュータにおいて、請求項２に記載のように、第２記憶手段には、現時点で実行中のプログラムについて、複数の割り込み要因毎に、割り込みを許可するか禁止するかを示す割込許可状態情報を格納する割込許可状態格納領域が設けられており、割込許可手段は、割込許可状態格納領域に格納されている割込許可状態情報のうち割り込み要因に対応する割込許可状態情報を、割り込みを許可する旨を示す内容に設定することで、特定した割り込み要因による割り込みを許可し、割込禁止手段は、割込許可状態格納領域に格納されている割込許可状態情報のうち割り込み要因に対応する割込許可状態情報を、割り込みを禁止する旨を示す内容に設定することで、特定した割り込み要因による割り込みを禁止し、割込処理実行手段は、割込許可状態格納領域に格納されている割込許可状態情報を参照することによって、発生した割り込み要因に対応する割り込み処理を実行するか禁止するかを判断し、情報移動手段は、実行するプログラムが変更されることにより、実行中のプログラムの特権レベルが高くなると、特権レベルが高くなる前の割込許可状態情報を記憶することにより割込許可状態情報を退避させるとともに、実行するプログラムが変更されることにより、実行中のプログラムの特権レベルが低くなると、記憶した割込許可状態情報のうち、実行中のプログラムの特権レベルに対応する割込許可状態情報を、第２記憶手段に設けられた割込許可状態格納領域に格納することにより割込許可状態情報を復帰させるようにしてもよい。
【００１１】
このように構成されたマイクロコンピュータでは、特権レベルが高くなると割込許可状態情報を退避させ、その後に特権レベルが低くなると割込許可状態情報を復帰させる。このため、実行するプログラムが変更されることにより特権レベルが高くなり、その後さらに、実行するプログラムが変更されることにより特権レベルが低くなることによって、特権レベルが元のレベルに戻った場合に、特権レベルが高いプログラムの実行中に割込許可状態情報が変更されていたとしても、割込許可状態情報を、特権レベルが高くなる前の元の状態に復帰させることができる。
【００１２】
また、請求項２に記載のマイクロコンピュータにおいて、請求項３に記載のように、情報移動手段は、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、割込許可状態格納領域に格納された割込許可状態情報のうち、割込設定が可能であると特定した割り込み要因に対応する割込許可状態情報を記憶することにより割込許可状態情報を退避させるようにしてもよい。
【００１３】
このように構成されたマイクロコンピュータでは、特権レベルが高くなると、割込設定が可能である割り込み要因についての割込許可状態情報を退避させ、その後に特権レベルが低くなると、割込設定が可能である割り込み要因についての割込許可状態情報を復帰させるため、割込設定が可能でない割り込み要因に対応する割込許可状態情報については、特権レベルが元のレベルに戻った場合であっても、特権レベルが高いときの割込許可状態情報を保持することができる。これは、割込設定を行うことができない割り込み要因については、特権レベルが元のレベルに戻った時に割込許可状態情報が保持されている必要がないという考えに基づく。これにより、第２記憶手段に設けられた割込許可状態格納領域に格納されている全ての割込許可状態情報を退避および復帰させる必要がなくなるため、割込許可状態情報を退避させるための記憶領域と処理負荷を低減することができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態のマイコン１の構成を示すブロック図である。
【図２】割込設定処理を示すフローチャートである。
【図３】割込要求判断処理を示すフローチャートである。
【図４】第１実施形態の割込許可状態情報の変化を説明するタイミングチャートである。
【図５】第２実施形態のマイコン１の構成を示すブロック図である。
【図６】第２実施形態の割込許可状態情報の変化を説明するタイミングチャートである。
【図７】第３実施形態の割込許可状態情報の変化を説明するタイミングチャートである。
【図８】プログラムに対する特権レベルの割り付け例を示す図である。
【発明を実施するための形態】
【００１５】
（第１実施形態）
以下に本発明の第１実施形態を図面とともに説明する。
マイクロコンピュータ（以下、マイコンという）１は、車両に搭載されており、図１に示すように、ＣＰＵ２、ＲＯＭ３、ＲＡＭ４、ペリフェラル５，６，７、および割込コントローラ８と、これらを相互に接続するバス９とを備える。そしてマイコン１は、ＲＯＭ３に記憶されたプログラムをＣＰＵ２が実行することにより、各種処理を実行する。
【００１６】
ペリフェラル５，６，７は、ＣＰＵ２からみた周辺回路であり、ＡＤ変換器やＩ／Ｏ等である。そしてペリフェラル５，６，７は、車両の各種状態を検出するセンサ（不図示）、または、車両の乗員からの指示を入力するための操作スイッチ（不図示）に接続され、センサからの検出情報、または操作スイッチからの操作情報を出力する。
【００１７】
割込コントローラ８は、様々な割り込み要因の発生を示す信号を入力し、入力した信号が示す割り込み要因毎に予め設定された優先度に基づいて、優先度が最も高い割り込み要因に対応した割込要求信号をＣＰＵ２に出力する機能を有する。また割込コントローラ８は、ペリフェラル５，６，７が検出情報または操作情報を出力すると、それぞれ割り込み要因１，２，３が発生したと判断する。以下、割り込み要因１，２，３をそれぞれ、割込１，２，３と表記する。
【００１８】
ＲＯＭ３は、不揮発性メモリであり、種々の処理プログラムがＲＯＭ３に格納されている。本実施形態では、車両に搭載されたエンジン等を制御する車両制御プログラム３１と、車両制御プログラムを実行するための基盤となるオペレーティングシステム（以下、ＯＳという）を制御するＯＳプログラム３２と、複数のＯＳをＣＰＵ２上で並列に実行可能とするためにＯＳを管理するハイパーバイザを実行するハイパーバイザプログラム３３がＲＯＭ３に格納されている。なお、車両制御プログラム３１、ＯＳプログラム３２、およびハイパーバイザプログラム３３の特権レベルはそれぞれ、「低」、「中」、および「高」であり、特権レベルが低くなるほど、プログラムで実行可能な命令と、プログラムによるＲＡＭ４へのアクセスとが制限される。
【００１９】
またＲＯＭ３には、割込設定テーブル３４が格納されている。割込設定テーブル３４では、割込１，２，３のそれぞれについて、特権レベル毎に、割込許可命令（以下、ＥＩ命令という）および割込禁止命令（以下、ＤＩ命令という）を受付可能であるか否かが設定されている。なおＥＩ命令は、ノンマスカブル割り込み（ＮＭＩ）等の一部を除いた割り込みを一括して許可する命令である。またＤＩ命令は、ＮＭＩ等の一部を除いた割り込みを一括して禁止する命令である。
【００２０】
本実施形態では、特権レベルが「低」である場合には割込１についてＥＩ命令およびＤＩ命令を受け付け、特権レベルが「中」である場合には割込１，２についてＥＩ命令およびＤＩ命令を受け付け、特権レベルが「高」である場合には割込１，２，３についてＥＩ命令およびＤＩ命令を受け付けるように設定されている。
【００２１】
ＣＰＵ２は、プログラムを実行するための演算ユニット２１と、演算ユニット２１が利用するデータを格納するための複数のレジスタから構成されるレジスタ群２２とを備え、所定の処理プログラムに基づいて処理を実行する。そして、レジスタ群２２のレジスタ内に、特権レベル格納領域ＳＲ１、割込設定格納領域ＳＲ２、および割込許可状態格納領域ＳＲ３が設けられる。
【００２２】
特権レベル格納領域ＳＲ１には、ＣＰＵ２上において現時点で実行中のプログラムの特権レベルを示す特権レベル情報が格納される。割込設定格納領域ＳＲ２には、割込１，２，３のそれぞれについて現時点で割込設定が可能であるか否かを示す情報（以下、割込設定情報という）が格納される。割込許可状態格納領域ＳＲ３には、割込１，２，３のそれぞれについて現時点でＥＩ命令およびＤＩ命令が受け付けられているか否かを示す情報（以下、割込許可状態情報という）が格納される。
【００２３】
そしてＣＰＵ２は、割込コントローラ８から割込１，２，３に対応した割込要求信号を入力すると、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報に基づいて、割込１，２，３を受け付けるか否かを決定する。
【００２４】
このように構成されたマイコン１のＣＰＵ２が実行する割込設定処理と割込要求判断処理の手順を図２と図３を用いて説明する。この割込設定処理および割込要求判断処理は、ＣＰＵ２の動作中に繰り返し実行される処理である。
【００２５】
まず、割込設定処理が実行されると、ＣＰＵ２は、図２に示すように、まずＳ１０にて、ＣＰＵ２上において実行中のプログラムの特権レベルが変化したか否かを判断する。ここで、特権レベルが変化していない場合には（Ｓ１０：ＮＯ）、Ｓ４０に移行する。一方、特権レベルが変化した場合には（Ｓ１０：ＹＥＳ）、Ｓ２０にて、実行中のプログラムの特権レベルを示す特権レベル情報を特権レベル格納領域ＳＲ１に格納するとともに、Ｓ３０にて、実行中のプログラムの特権レベルに対応する割込設定情報を割込設定格納領域ＳＲ２に格納し、Ｓ４０に移行する。例えば、ＣＰＵ２上においてＯＳプログラム３２を実行中である場合には、特権レベルが「中」であることを示す特権レベル情報を特権レベル格納領域ＳＲ１に格納し、さらに、割込１，２についてはＥＩ命令およびＤＩ命令を受け付けるとともに割込３についてはＥＩ命令およびＤＩ命令を受け付けないことを示す割込設定情報を割込設定格納領域ＳＲ２に格納する。
【００２６】
そしてＳ４０に移行すると、ＥＩ命令がＣＰＵ２に入力したか否かを判断する。ここで、ＥＩ命令が入力していない場合には（Ｓ４０：ＮＯ）、Ｓ６０に移行する。一方、ＥＩ命令が入力した場合には（Ｓ４０：ＹＥＳ）、Ｓ５０にて、割込設定格納領域ＳＲ２に格納された割込設定情報を参照して、割込１，２，３のうちＥＩ命令およびＤＩ命令の受付が許可されている割込を特定し、特定した割込について割り込みを許可するように、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を書き換えて、Ｓ６０に移行する。例えば、特権レベルが「中」である場合には、割込１，２についてＥＩ命令およびＤＩ命令の受付が許可されているため、割込１，２について割り込みを許可するように割込許可状態情報を書き換える。
【００２７】
そしてＳ６０に移行すると、ＤＩ命令がＣＰＵ２に入力したか否かを判断する。ここで、ＤＩ命令が入力していない場合には（Ｓ６０：ＮＯ）、割込設定処理を一旦終了する。一方、ＤＩ命令が入力した場合には（Ｓ６０：ＹＥＳ）、Ｓ７０にて、割込設定格納領域ＳＲ２に格納された割込設定情報を参照して、割込１，２，３のうちＥＩ命令およびＤＩ命令の受付が許可されている割込を特定し、特定した割込について割り込みを禁止するように、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を書き換えて、割込設定処理を一旦終了する。例えば、特権レベルが「中」である場合には、割込１，２についてＥＩ命令およびＤＩ命令の受付が許可されているため、割込１，２について割り込みを禁止するように割込許可状態情報を書き換える。
【００２８】
また、割込要求判断処理が実行されると、ＣＰＵ２は、図３に示すように、まずＳ１１０にて、割込要求信号がＣＰＵ２に入力したか否かを判断する。ここで、割込要求信号が入力していない場合には（Ｓ１１０：ＮＯ）、割込要求判断処理を一旦終了する。一方、割込要求信号が入力した場合には（Ｓ１１０：ＹＥＳ）、Ｓ１２０にて、割込要求信号が示す割り込み要因（すなわち、割込１，２，３の何れか一つ）が許可されているか否かを、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を参照することにより判断する。ここで、割込要求信号が示す割り込み要因が許可されていない場合には（Ｓ１２０：ＮＯ）、割込要求判断処理を一旦終了する。一方、割込要求信号が示す割り込み要因が許可されている場合には（Ｓ１２０：ＹＥＳ）、Ｓ１３０にて、実行中のプログラム（すなわち、プログラム３１，３２，３３の何れか一つ）を中断して、割込要求信号が示す割り込み要因に対応する割り込み処理を実行させて、割込要求判断処理を一旦終了する。
【００２９】
次に、割込許可状態情報の変化の一例を図４を用いて説明する。
図４に示すように、まず時刻ｔ０において、特権レベルが「低」であり、割込許可状態情報の初期状態として、割込１，２は割り込みの「許可」に設定され、割込３は割り込みの「禁止」に設定されているとする（割込許可状態情報ＩＰ００を参照）。そして時刻ｔ１においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，２は「許可」に設定され、割込３は「禁止」に設定される（割込許可状態情報ＩＰ０１を参照）。
【００３０】
その後、時刻ｔ２において特権レベルが「低」から「中」に変化し、さらに時刻ｔ３においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ０２を参照）。
【００３１】
その後、時刻ｔ４において特権レベルが「中」から「高」に変化し、さらに時刻ｔ５においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＥＩ命令を受け付けるため、割込１，２，３は「許可」に設定される（割込許可状態情報ＩＰ０３を参照）。
【００３２】
その後、時刻ｔ６において特権レベルが「高」から「中」に変化し、さらに時刻ｔ７においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２は「禁止」に設定され、割込３は「許可」に設定される（割込許可状態情報ＩＰ０４を参照）。
【００３３】
その後、時刻ｔ８において特権レベルが「中」から「低」に変化し、さらに時刻ｔ９においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＤＩ命令を受け付けるため、割込１，２は「禁止」に設定され、割込３は「許可」に設定される（割込許可状態情報ＩＰ０５を参照）。また時刻ｔ１０においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，３は「許可」に設定され、割込２は「禁止」に設定される（割込許可状態情報ＩＰ０６を参照）。
【００３４】
その後、時刻ｔ１１において特権レベルが「低」から「高」に変化し、さらに時刻ｔ１２においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ０７を参照）。
【００３５】
このように構成されたマイコン１は、それぞれ異なる特権レベルが設定された複数のプログラム３１，３２，３３を実行可能であって、ＲＯＭ３が、複数の割り込み要因１，２，３（割込１，２，３）のそれぞれについて、特権レベル毎に、割り込みを許可するか禁止するかを設定する割込設定が可能であるか否かを示す割込設定情報が格納された割込設定テーブル３４を記憶しており、割込許可命令（ＥＩ命令）が入力すると、ＲＯＭ３に記憶されている割込設定テーブル３４を参照し、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、特定した割り込み要因による割り込みを許可する（Ｓ４０，Ｓ５０）とともに、割込禁止命令（ＤＩ命令）が入力すると、ＲＯＭ３に記憶されている割込設定テーブル３４を参照し、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、特定した割り込み要因による割り込みを禁止する（Ｓ６０，Ｓ７０）。そして、プログラムの実行中に割り込み要因が発生した場合に、発生した割り込み要因による割り込みが許可されたものである場合には（Ｓ１２０：ＹＥＳ）、プログラムの実行を中断して、発生した割り込み要因に対応する割り込み処理を実行し（Ｓ１３０）、発生した割り込み要因による割り込みが禁止されたものである場合には（Ｓ１２０：ＮＯ）、発生した割り込み要因に対応する割り込み処理を禁止する。
【００３６】
このように構成されたマイコン１では、現時点で実行中のプログラムの特権レベルにおいて、割り込みを許可するか禁止するかを設定する割込設定が可能である割り込み要因を、割込設定テーブル３４を参照することにより特定し、割込設定が可能であると特定した割り込み要因による割り込みを、ＥＩ命令およびＤＩ命令が入力したときにそれぞれ許可および禁止することができる。これにより、許可および禁止を変更可能な割り込みを特権レベル毎に設定することができる。
【００３７】
以上説明した実施形態において、ＲＯＭ３は本発明における第１記憶手段、Ｓ４０，Ｓ５０の処理は本発明における割込許可手段、Ｓ６０，Ｓ７０の処理は本発明における割込禁止手段、Ｓ１１０〜Ｓ１３０の処理は本発明における割込処理実行手段である。
【００３８】
（第２実施形態）
以下に本発明の第２実施形態を図面とともに説明する。なお第２実施形態では、第１実施形態と異なる部分のみを説明する。
【００３９】
第２実施形態におけるマイコン１は、図５に示すように、情報移動ユニット２３が追加された点以外は第１実施形態と同じである。
情報移動ユニット２３は、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を退避させたり復帰させたりする機能を有するハードウェアである。具体的に、情報移動ユニット２３は、特権レベルが高くなると、特権レベルが高くなる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を特権レベルと対応付けて、情報移動ユニット２３内に設けられた情報記憶領域に記憶させる。その後に情報移動ユニット２３は、特権レベルが低くなると、低くなった後の特権レベルと同じ特権レベルに対応付けられている割込許可状態情報を、情報移動ユニット２３内に設けられた情報記憶領域から抽出して、抽出した割込許可状態情報を、割込許可状態格納領域ＳＲ３に格納する。
【００４０】
次に、割込許可状態情報の変化の一例を図６を用いて説明する。
図６に示すように、まず時刻ｔ０において、特権レベルが「低」であり、割込許可状態情報の初期状態として、割込１，２は割り込みの「許可」に設定され、割込３は割り込みの「禁止」に設定されているとする（割込許可状態情報ＩＰ１０を参照）。そして時刻ｔ１においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，２は「許可」に設定され、割込３は「禁止」に設定される（割込許可状態情報ＩＰ１１を参照）。
【００４１】
その後、時刻ｔ２において特権レベルが「低」から「中」に変化すると、特権レベルが「中」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ１１を情報移動ユニット２３に退避させる。さらに時刻ｔ３においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ１２を参照）。
【００４２】
その後、時刻ｔ４において特権レベルが「中」から「高」に変化すると、特権レベルが「高」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ１２を情報移動ユニット２３に退避させる。さらに時刻ｔ５においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＥＩ命令を受け付けるため、割込１，２，３は「許可」に設定される（割込許可状態情報ＩＰ１３を参照）。
【００４３】
その後、時刻ｔ６において特権レベルが「高」から「中」に変化すると、情報移動ユニット２３に退避させていた割込許可状態情報ＩＰ１２を割込許可状態格納領域ＳＲ３に復帰させる（矢印ＡＬ１１を参照）。これにより、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ１４を参照）。さらに時刻ｔ７においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ１５を参照）。
【００４４】
その後、時刻ｔ８において特権レベルが「中」から「低」に変化すると、情報移動ユニット２３に退避させていた割込許可状態情報ＩＰ１１を割込許可状態格納領域ＳＲ３に復帰させる（矢印ＡＬ１２を参照）。これにより、割込１，２は「許可」に設定され、割込３は「禁止」に設定される（割込許可状態情報ＩＰ１６を参照）。さらに時刻ｔ９においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，２は「許可」に設定され、割込３は「禁止」に設定される（割込許可状態情報ＩＰ１７を参照）。また時刻ｔ１０においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＤＩ命令を受け付けるため、割込２は「許可」に設定され、割込１，３は「禁止」に設定される（割込許可状態情報ＩＰ１８を参照）。
【００４５】
その後、時刻ｔ１１において特権レベルが「低」から「高」に変化すると、特権レベルが「高」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ１８を情報移動ユニット２３に退避させる。さらに時刻ｔ１２においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ１９を参照）。
【００４６】
このように構成されたマイコン１では、レジスタ群２２に、現時点で実行中のプログラムについて、複数の割込１，２，３毎に、割り込みを許可するか禁止するかを示す割込許可状態情報を格納する割込許可状態格納領域ＳＲ３が設けられている。そしてマイコン１では、割込許可状態格納領域ＳＲ３に格納されている割込許可状態情報のうち割り込み要因に対応する割込許可状態情報を、割り込みを許可する旨を示す内容に設定することで、特定した割り込み要因による割り込みを許可するとともに（Ｓ５０）、割り込みを禁止する旨を示す内容に設定することで、特定した割り込み要因による割り込みを禁止する（Ｓ７０）。またマイコン１では、割込許可状態格納領域ＳＲ３に格納されている割込許可状態情報を参照することによって、発生した割り込み要因に対応する割り込み処理を実行するか禁止するかを判断する（Ｓ１２０）。
【００４７】
そして情報移動ユニット２３は、実行するプログラムが変更されることにより、実行中のプログラムの特権レベルが高くなると、特権レベルが高くなる前の割込許可状態情報を記憶することにより割込許可状態情報を退避させるとともに、実行するプログラムが変更されることにより、実行中のプログラムの特権レベルが低くなると、記憶した割込許可状態情報のうち、実行中のプログラムの特権レベルに対応する割込許可状態情報を、レジスタ群２２に設けられた割込許可状態格納領域ＳＲ３に格納することにより割込許可状態情報を復帰させる。
【００４８】
このように構成されたマイコン１では、特権レベルが高くなると割込許可状態情報を退避させ、その後に特権レベルが低くなると割込許可状態情報を復帰させる。このため、実行するプログラムが変更されることにより特権レベルが高くなり、その後さらに、実行するプログラムが変更されることにより特権レベルが低くなることによって、特権レベルが元のレベルに戻った場合に、特権レベルが高いプログラムの実行中に割込許可状態情報が変更されていたとしても、割込許可状態情報を、特権レベルが高くなる前の元の状態に復帰させることができる。
【００４９】
以上説明した実施形態において、レジスタ群２２は本発明における第２記憶手段、情報移動ユニット２３は本発明における情報移動手段である。
（第３実施形態）
以下に本発明の第３実施形態を図面とともに説明する。なお第３実施形態では、第２実施形態と異なる部分のみを説明する。
【００５０】
第３実施形態におけるマイコン１は、情報移動ユニット２３の機能が変更された点以外は第２実施形態と同じである。
すなわち、情報移動ユニット２３は、割込設定格納領域ＳＲ２に格納されている割込設定情報に基づいて、割込１，２，３のうち、割込設定が可能である割込を特定し、その後、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報のうち、特定した割込に対応する割込許可状態情報のみを退避させたり復帰させたりする機能を有する。例えば、情報移動ユニット２３は、特権レベルが「低」から「中」に変化すると、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報のうち、割込１に対応する割込許可状態情報のみを退避させ、特権レベルが「中」から「高」に変化すると、割込１，２に対応する割込許可状態情報のみを退避させる。また情報移動ユニット２３は、例えば特権レベルが「高」から「中」に変化すると、割込１，２に対応する割込許可状態情報のみを復帰させる。
【００５１】
次に、割込許可状態情報の変化の一例を図７を用いて説明する。
図７に示すように、まず時刻ｔ０において、特権レベルが「低」であり、割込許可状態情報の初期状態として、割込１，２は割り込みの「許可」に設定され、割込３は割り込みの「禁止」に設定されているとする（割込許可状態情報ＩＰ２０を参照）。そして時刻ｔ１においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，２は「許可」に設定され、割込３は「禁止」に設定される（割込許可状態情報ＩＰ２１を参照）。
【００５２】
その後、時刻ｔ２において特権レベルが「低」から「中」に変化すると、特権レベルが「中」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ２１のうち、割込１に対応する割込許可状態情報のみを情報移動ユニット２３に退避させる。さらに時刻ｔ３においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ２２を参照）。
【００５３】
その後、時刻ｔ４において特権レベルが「中」から「高」に変化すると、特権レベルが「高」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ２２のうち、割込１，２に対応する割込許可状態情報のみを情報移動ユニット２３に退避させる。さらに時刻ｔ５においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＥＩ命令を受け付けるため、割込１，２，３は「許可」に設定される（割込許可状態情報ＩＰ２３を参照）。
【００５４】
その後、時刻ｔ６において特権レベルが「高」から「中」に変化すると、情報移動ユニット２３に退避させていた、割込１，２に対応する割込許可状態情報ＩＰ２２を割込許可状態格納領域ＳＲ３に復帰させる（矢印ＡＬ２１を参照）。これにより、割込１，２は「禁止」に設定され、割込３は「許可」に設定される（割込許可状態情報ＩＰ２４を参照）。さらに時刻ｔ７においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「中」である場合には割込１，２についてＤＩ命令を受け付けるため、割込１，２は「禁止」に設定され、割込３は「許可」に設定される（割込許可状態情報ＩＰ２５を参照）。
【００５５】
その後、時刻ｔ８において特権レベルが「中」から「低」に変化すると、情報移動ユニット２３に退避させていた、割込１に対応する割込許可状態情報ＩＰ２１を割込許可状態格納領域ＳＲ３に復帰させる（矢印ＡＬ２２を参照）。これにより、割込１，３は「許可」に設定され、割込２は「禁止」に設定される（割込許可状態情報ＩＰ２６を参照）。さらに時刻ｔ９においてＥＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＥＩ命令を受け付けるため、割込１，３は「許可」に設定され、割込２は「禁止」に設定される（割込許可状態情報ＩＰ２７を参照）。また時刻ｔ１０においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「低」である場合には割込１についてＤＩ命令を受け付けるため、割込３は「許可」に設定され、割込１，２は「禁止」に設定される（割込許可状態情報ＩＰ２８を参照）。
【００５６】
その後、時刻ｔ１１において特権レベルが「低」から「高」に変化すると、特権レベルが「高」になる前に割込許可状態格納領域ＳＲ３に格納された割込許可状態情報ＩＰ２８のうち、割込１に対応する割込許可状態情報のみを情報移動ユニット２３に退避させる。さらに時刻ｔ１２においてＤＩ命令がＣＰＵ２に入力すると、特権レベルが「高」である場合には割込１，２，３についてＤＩ命令を受け付けるため、割込１，２，３は「禁止」に設定される（割込許可状態情報ＩＰ２９を参照）。
【００５７】
このように構成されたマイコン１では、情報移動ユニット２３は、現時点で実行中のプログラムの特権レベルに対応した割込設定情報に基づいて、割込設定が可能である割り込み要因を特定し、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報のうち、割込設定が可能であると特定した割り込み要因に対応する割込許可状態情報を記憶することにより割込許可状態情報を退避させる。このため、割込設定が可能でない割り込み要因に対応する割込許可状態情報については、特権レベルが元のレベルに戻った場合であっても、特権レベルが高いときの割込許可状態情報を保持することができる。これは、割込設定を行うことができない割り込み要因については、特権レベルが元のレベルに戻った時に割込許可状態情報が保持されている必要がないという考えに基づく。これにより、レジスタ群２２に設けられた割込許可状態格納領域ＳＲ３に格納されている全ての割込許可状態情報を退避および復帰させる必要がなくなるため、割込許可状態情報を退避させるための記憶領域と処理負荷を低減することができる。
【００５８】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態では、マイクロコンピュータで一般的に実装されているＥＩ命令またはＤＩ命令が入力したときに、割込設定格納領域ＳＲ２に格納された割込設定情報を参照して、割込許可状態格納領域ＳＲ３に格納された割込許可状態情報を書き換えるもの（Ｓ４０〜Ｓ７０）を示したが、ＥＩ命令およびＤＩ命令とは異なる割込許可命令および割込禁止命令を実装して、この割込許可命令および割込禁止命令が入力したときに割込許可状態情報を書き換えるようにしてもよい。
【００５９】
また上記第２実施形態においては、情報移動ユニット２３が割込許可状態情報の退避および復帰を行うものを示したが、情報移動ユニット２３のようにハードウェアを用いることなく、例えば演算ユニット２１が各種命令を実行することにより、割込許可状態情報の退避および復帰を行うようにしてもよい。
【００６０】
また上記実施形態においては、レジスタ群２２内に特権レベル格納領域ＳＲ１を設けたものを示したが、特権レベル格納領域ＳＲ１をＲＡＭ４内に設けるようにしてもよい。
また上記実施形態においては、車両制御プログラム３１、ＯＳプログラム３２、およびハイパーバイザプログラム３３の特権レベルをそれぞれ、「低」、「中」、および「高」に割り付けたものを示した。しかし、これに限定されるものではなく、例えば図８に示すように、デバイスドライバ、マイクロカーネル、ＯＳのようにハイパーバイザ以外のプログラムの特権レベルを「高」に割り付けてもよいし、ＯＳ以外のソフトウェアのプログラムの特権レベルを「中」に割り付けてもよい。
【符号の説明】
【００６１】
１…マイコン、２…ＣＰＵ、３…ＲＯＭ、４…ＲＡＭ、５，６，７…ペリフェラル、８…割込コントローラ、９…バス、２１…演算ユニット、２２…レジスタ群、２３…情報移動ユニット、３１…車両制御プログラム、３２…ＯＳプログラム、３３…ハイパーバイザプログラム、３４…割込設定テーブル、ＳＲ１…特権レベル格納領域、ＳＲ２…割込設定格納領域、ＳＲ３…割込許可状態格納領域
【図１】
0005561294.tif 000002
【図２】
0005561294.tif 000003
【図３】
0005561294.tif 000004
【図４】
0005561294.tif 000005
【図５】
0005561294.tif 000006
【図６】
0005561294.tif 000007
【図７】
0005561294.tif 000008
【図８】
0005561294.tif 000009