(57)【要約】【課題】仮想マシンの割り込み性能を向上させる半導体装置を提供することである。【解決手段】半導体装置は、複数の仮想マシンと、前記複数の仮想マシンを管理する仮想マシンマネージャとを格納するメモリと、前記複数の仮想マシンと前記仮想マシンマネージャを実行するＣＰＵと、を備える。前記ＣＰＵは、割込みを処理する仮想マシンの情報（第一情報）と実行中の仮想マシンの情報（第二情報）とが同じ場合、実行中の仮想マシンに割込み処理を実行させ、前記第一情報と前記第二情報が異なる場合、前記仮想マシンマネージャに前記実行中の仮想マシンを停止させ、かつ割込みを処理する仮想マシンを動作させて割込み処理を実行させる。【選択図】図４
2019114097.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンと、前記複数の仮想マシンを管理する仮想マシンマネージャとを格納するメモリと、
前記複数の仮想マシンと前記仮想マシンマネージャを実行するＣＰＵと、
を備え、
前記ＣＰＵは、
割込みを処理する仮想マシンの情報（第一情報）と実行中の仮想マシンの情報（第二情報）とが同じ場合、実行中の仮想マシンに割込み処理を実行させ、
前記第一情報と前記第二情報が異なる場合、前記仮想マシンマネージャに前記実行中の仮想マシンを停止させ、かつ割込みを処理する仮想マシンを動作させて割込み処理を実行させる
半導体装置。
【請求項２】
請求項１の半導体装置において、
さらに、前記複数の仮想マシン間の通信を行うメッセージボックスを備え、
前記複数の仮想マシンのそれぞれは、サブルーチンの戻り先へ分岐するための第一終了コードおよび第二終了コードを含む割込み処理サブルーチンを有し、
前記仮想マシンマネージャは例外ハンドラを有し、
前記第一終了コードは前記割込み処理サブルーチンから割り込まれる前の処理に復帰するための分岐する処理を有し、
前記第二終了コードは前記ＣＰＵに前記仮想マシンマネージャを実行させるための処理を有し、
前記仮想マシンマネージャは前記メッセージボックスに前記第一終了コードを選択する指示を初期設定する処理を有する
半導体装置。
【請求項３】
請求項２の半導体装置において、
前記第一情報と前記第二情報とが同じ場合、前記ＣＰＵは、前記実行中の仮想マシンの前記割込み処理サブルーチンを読み出し、割込み処理を行い、
前記第一情報と前記第二情報が異なる場合、前記ＣＰＵは前記仮想マシンマネージャの前記例外ハンドラを読み出し、前記例外ハンドラは前記割込みを処理する仮想マシンを前記ＣＰＵに割り付け、前記ＣＰＵは前記割込みを処理する仮想マシンの割込み処理サブルーチンを読み出し、割込み処理を行う
半導体装置。
【請求項４】
請求項３の半導体装置において、
前記実行中の仮想マシンの前記割込み処理サブルーチンは、前記第一情報と前記第二情報とが同じ場合、前記メッセージボックスの指示に従い前記第一終了コードを実行する処理を有し、
前記仮想マシンマネージャは、前記第一情報と前記第二情報が異なる場合、前記メッセージボックスに前記第二終了コードを選択する指示を格納する処理を有し、
前記割込みを処理する仮想マシンの前記割込み処理サブルーチンは、前記第一情報と前記第二情報が異なる場合、前記メッセージボックスの指示に従い前記第二終了コードを実行する処理を有する
半導体装置。
【請求項５】
請求項４の半導体装置において、
前記第二終了コードは、前記メッセージボックスに前記第一終了コードを選択する指示を格納し、割込み要求が入力される前に実行されていた仮想マシンを前記ＣＰＵに割り付ける処理を有する
半導体装置。
【請求項６】
請求項１の半導体装置において、
さらに、前記第一情報と前記第二情報とに基づいてイベント指示を前記ＣＰＵに出力する装置を備え、
前記イベント指示は、割込み要求と、前記第一情報と前記第二情報との一致不一致情報と、前記割込みを処理すべき仮想マシンの情報である
半導体装置。
【請求項７】
請求項６の半導体装置において、            
さらに、割込みチャネルから前記第一情報を確定する割込みコントローラを備え、
前記装置は、前記割込みコントローラからの前記第一情報と前記ＣＰＵからの前記第二情報とを比較する比較回路を備える
半導体装置。
【請求項８】
請求項６の半導体装置において、さらに、
割込み要求の種別に対応する属性情報を有する割込みコントローラと、
前記属性情報と前記第一情報との関係を格納する仮想マシン情報テーブルと、
を備え、
前記装置は、前記仮想マシン情報テーブルからの前記第一情報と前記ＣＰＵからの前記第二情報とを比較する比較回路を備える
半導体装置。
【請求項９】
請求項６の半導体装置において、
さらに、割込みチャネルから確定する前記第一情報と割込み優先度とを有する割込みコントローラを備え、
前記装置は、
前記割込みコントローラからの前記第一情報と前記ＣＰＵからの前記第二情報とを比較する比較回路と、
一定以上優先度の高い割込みであるかを示す閾値を格納するレジスタと、
前記閾値と割込み前記優先度とを比較する優先度比較回路と、
前記優先度比較回路の優先度比較結果及び前記比較回路の比較結果から前記イベント指示を生成するイベント指示生成回路と、
前記イベント指示生成回路からの信号に基づいて割込み要求の前記ＣＰＵへの伝達を許可禁止するマスク回路と、
を備える
半導体装置。
【請求項１０】
請求項９の半導体装置において、
前記イベント指示生成回路は、
前記比較回路の前記比較結果が一致であり、かつ前記割込み優先度が前記閾値より大きい場合は、仮想マシンの切り替えを行わないように前記イベント指示を生成し、かつ、前記ＣＰＵへの割込み要求の出力を許可する信号を前記マスク回路に出力し、
前記比較回路の前記比較結果が一致であり、かつ前記割込み優先度が閾値以下の場合は、前記ＣＰＵへの前記割込み要求の出力を禁止する信号を前記マスク回路に出力する、
ように構成される
半導体装置。
【請求項１１】
請求項６の半導体装置において、
前記装置は、複数の割込み要求に対して割込み優先度と一定以上優先度の高い割込みであるかを示す閾値との比較を実行し、前記閾値より大きい前記割込み優先度の割込みが無い場合は、実行中の仮想マシンへの割込み要求を出力する
半導体装置。
【請求項１２】
請求項１１の半導体装置において、
前記装置は、
第一チャネルの割込み要求元からの割込み要求と前記第一情報と割込み優先度を入力する第一イベント決定装置と、
第二チャネルの割込み要求元からの割込み要求と前記第一情報と割込み優先度を入力する第二イベント決定装置と、
前記第一イベント決定装置からの割込み要求およびイベント指示と、前記第二イベント決定装置からの割込み要求およびイベント指示と、を選択する割込み選択回路と、
を備え、
前記第一イベント決定装置および前記第二イベント決定装置のそれぞれは、
前記割込みコントローラからの前記第一情報と前記ＣＰＵからの前記第二情報とを比較する比較回路と、
前記閾値を格納するレジスタと、
前記閾値と割込み前記優先度とを比較する優先度比較回路と、
前記優先度比較回路の優先度比較結果及び前記比較回路の比較結果から前記イベント指示を生成するイベント指示生成回路と、
前記イベント指示生成回路からの信号に基づいて割込み要求の前記ＣＰＵへの伝達を許可禁止するマスク回路と、
を備える
半導体装置。
【請求項１３】
請求項１２の半導体装置において、
前記イベント指示生成回路は、前記比較回路の比較結果が一致であり、かつ前記割込み優先度が前記閾値以下の場合は、前記割込み優先度が前記閾値以下であることおよび仮想マシンの切り替えを行わないイベント指示を生成し、かつ、前記ＣＰＵへの割込み要求の出力を許可する信号を前記マスク回路に出力する
半導体装置。
【請求項１４】
請求項１の半導体装置において、
前記仮想マシンマネージャは、割込み要求がない場合、１システム周期内に前記複数の仮想マシンの各仮想マシンを１回ずつ前記ＣＰＵに割り付け、前記１システム周期内の最初の仮想マシンの前、前記各仮想マシンの間および最後の仮想マシンの後に当該仮想マシンマネージャを前記ＣＰＵに割り付け、
前記１システム周期の最後にマージン期間を有する
半導体装置。
【請求項１５】
請求項１４の半導体装置において、
前記仮想マシンマネージャは、停止中の仮想マシンに割込み要求がある場合、実行中の仮想マシンに割り付けられた期間のうち前記停止中の仮想マシンの割込み処理によって浸食された期間分を前記マージン期間内に割り付ける
半導体装置。
【請求項１６】
第一および第二の仮想マシンと、前記第一および第二の仮想マシンを管理する仮想マシンマネージャとを格納するメモリと、
前記第一および第二の仮想マシンと前記仮想マシンマネージャを実行するＣＰＵと、
を備え、
前記ＣＰＵは、
前記第一の仮想マシンの動作中に前記第一の仮想マシンに対する割込みを受信した場合、前記動作中の前記第一の仮想マシンに割込みを受け付けさせ、
前記第一の仮想マシンの動作中に停止中の前記第二の仮想マシンに対する割込みを受信した場合、前記仮想マシンマネージャを起動し、前記仮想マシンマネージャに前記第二の仮想マシンに処理を切り替えさせて割込みを受け付けさせる
半導体装置。
【請求項１７】
請求項１６の半導体装置において、
前記ＣＰＵはメッセージボックスを備え、
前記第一および第二の仮想マシンのそれぞれは、サブルーチンの戻り先へ分岐するための第一終了コードおよび第二終了コードを含む割込み処理サブルーチンを有し、
前記仮想マシンマネージャは例外ハンドラを有し、
前記第一終了コードは前記割込み処理サブルーチンから割り込まれる前の処理に復帰するための分岐する処理を有し、
前記第二終了コードは前記ＣＰＵに前記仮想マシンマネージャを実行させるための処理を有し、
前記仮想マシンマネージャは前記メッセージボックスに前記第一終了コードを選択する指示を初期設定する処理を有する
半導体装置。
【請求項１８】
請求項１７の半導体装置において、
前記ＣＰＵは、前記第一の仮想マシンの動作中に前記第一の仮想マシンに対する割込みを受信した場合、前記第一の仮想マシンの割込み処理サブルーチンを読み出し、割込み処理を行い、
前記第一の仮想マシンの前記割込み処理サブルーチンは、前記メッセージボックスの指示に従い前記第一終了コードを実行する処理を有する
半導体装置。
【請求項１９】
請求項１７の半導体装置において、
前記ＣＰＵは、前記第一の仮想マシンの動作中に停止中の前記第二の仮想マシンに対する割込みを受信した場合、前記仮想マシンマネージャの前記例外ハンドラを読み出し、
前記例外ハンドラは前記第二の仮想マシンを前記ＣＰＵに割り付け、前記ＣＰＵは前記第二の仮想マシンの割込み処理サブルーチンを読み出し、割込み処理を行い、
前記仮想マシンマネージャは、前記メッセージボックスに前記第二終了コードを選択する指示を格納する処理を有し、
前記第二の仮想マシンの前記割込み処理サブルーチンは、前記メッセージボックスの指示に従い前記第二終了コードを実行する処理を有する
半導体装置。
【請求項２０】
請求項１９の半導体装置において、
前記第二終了コードは、前記メッセージボックスに前記第一終了コードを選択する指示を格納し、割込み要求が入力される前に実行されていた仮想マシンを前記ＣＰＵに割り付ける処理を有する
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば仮想マシンを構成する半導体装置に適用可能である。
【背景技術】
【０００２】
仮想化（Virtualization）と呼ばれる１つのハードウェアを複数のハードウェアに見せる技術がある。この仮想化技術は、ＶＭＭ（Virtual Machine Monitor：仮想マシンモニタ、またはVirtual Machine Manager）若しくはハイパーバイザと呼ばれる管理ソフトウェアがＯＳ（Operating System）とハードウェア（プロセッサやＩ／Ｏ）との間に入ることによって実現される（特開２０１３−２１０９６２号公報）。例えば、ＶＭＭはスケジューラ機能により複数の仮想マシンを周期的に切り替えて、仮想マシンが実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１０９６２号公報
【特許文献２】特表２０１３−５１９１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
動作中の仮想マシンが割込みを受け付けるようにすると、停止中の仮想マシンは動作中の仮想マシンから停止中の仮想マシンに実行が切り替わるまで割込みが受け付けられないので、停止中の仮想マシンの割込み応答が遅れる。ＶＭＭが割込みを受け付けるようにすると、動作中の仮想マシンからＶＭＭに実行が切り替わらないと割込みが受け付けられないので、動作中の仮想マシンの割込み応答が遅れる。
その他の課題と新規な特徴は、本開示の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００５】
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
すなわち、半導体装置は、複数の仮想マシンと、前記複数の仮想マシンを管理する仮想マシンマネージャとを格納するメモリと、前記複数の仮想マシンと前記仮想マシンマネージャを実行するＣＰＵと、を備える。前記ＣＰＵは、割込みを処理する仮想マシンの情報（第一情報）と実行中の仮想マシンの情報（第二情報）とが同じ場合、実行中の仮想マシンに割込み処理を実行させ、前記第一情報と前記第二情報が異なる場合、前記仮想マシンマネージャに前記実行中の仮想マシンを停止させ、かつ割込みを処理する仮想マシンを動作させて割込み処理を実行させる。
【発明の効果】
【０００６】
上記半導体装置によれば、仮想マシンの割り込み性能を向上させることができる。
【図面の簡単な説明】
【０００７】
【図１】仮想マシンの概念を説明する図
【図２】比較例１の仮想マシンの割込みを説明する図
【図３】比較例２の仮想マシンの割込みを説明する図
【図４】実施形態の仮想マシンの割込みを説明する図
【図５】実施例の半導体装置の構成を示すブロック図
【図６】図５の半導体装置においてＣＰＵおよびイベント決定装置を一つずつ示した図
【図７】図６のイベント決定装置の構成を示すブロック図
【図８】変形例１の割込みを処理するＶＭの情報の確定を説明するブロック図
【図９】図９は図８のＶＭ情報テーブルの例を示す図
【図１０】変形例２の半導体装置の構成を示すブロック図
【図１１】図１０のイベント決定装置の構成を示すブロック図
【図１２】変形例３の割込みコントローラの構成を示すブロック図
【図１３】図１２のイベント決定装置の構成を示すブロック図
【図１４】変形例４の半導体装置の構成を示すブロック図
【図１５】ＶＭＭスケジューラの動作を説明するタイミング図
【図１６】実施例の半導体装置を車両に用いた場合の応用例を示すブロック図
【発明を実施するための形態】
【０００８】
以下、実施形態について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【０００９】
まず、仮想マシンについて図１を用いて説明する。図１は仮想マシンの概念を説明する図である。
【００１０】
図１に示すように、例えば、一つのＣＰＵ（物理マシン）上にソフトウェアプログラムで構成される仮想マシンマネージャ（Virtual Machine Manager）（以下、ＶＭＭという。）が実装され、ＶＭＭの管理下のソフトウェアプログラムで複数の仮想マシン（Virtual Machine）（以下、ＶＭという。）が構成される。図１ではＶＭは第一仮想マシン（以下、ＶＭ１という）、第二仮想マシン（以下、ＶＭ２という。）および第三仮想マシン（ＶＭ３）の三つであり、ＶＭ１、ＶＭ２、ＶＭ３は各々のアプリケーションプログラム（Ａｐｐ１、Ａｐｐ２、Ａｐｐ３）を実行する。ＶＭＭはスケジューラ機能により、ＶＭ１、ＶＭ２およびＶＭ３を周期的に切り替えて実行させる。
【００１１】
次に、各ＶＭが割込みを受け付ける例（比較例１）について図２を用いて説明する。図２は比較例１の割込み受付を説明する概念図であり、図２（Ａ）はＶＭ１の動作時にＶＭ１の割込み要求がある場合の図であり、図２（Ｂ）はＶＭ１の動作時にＶＭ２の割込み要求がある場合の図である。図２（Ａ）、図２（Ｂ）において、横方向の黒く太い矢印は動作中（実行中）を示しており、縦方向の細い矢印はＶＭまたはＶＭＭの切替えを示している。これは図３（Ａ）、図３（Ｂ）、図４（Ａ）、図４（Ｂ）においても同様である。
【００１２】
図２（Ａ）に示すように、比較例１では、ＶＭ１の動作時にＶＭ１の割込み要求があった場合、ＶＭ１がその割込みの受付は可能である。しかし、ＶＭ１の動作時に、ＶＭ２の割込み要求があった場合、ＶＭ２は割込みを受け付けることはできない。図２（Ｂ）に示すように、比較例１では、ＶＭＭがスケジューラに従って、ＶＭ１をＶＭＭに切り替え、さらにＶＭ２に切り替えて、ＶＭ２が動作を初めて割込み受付が可能となる。
【００１３】
次に、ＶＭＭが割込みを受け付ける例（比較例２）について図３を用いて説明する。図３は比較例２の割込み受付を説明する概念図であり、図３（Ａ）はＶＭ１の動作時にＶＭ１の割込み要求がある場合の図であり、図３（Ｂ）はＶＭ１の動作時にＶＭ２の割込み要求がある場合の図である。
【００１４】
図３（Ａ）に示すように、比較例２では、ＶＭ１の動作時にＶＭ１の割込み要求があった場合、割込み要求はＶＭＭに通知し、ＶＭＭはＶＭ１からＶＭＭに切り替え、さらにＶＭ１に切り替えて、ＶＭ１が動作を初めて割込み受付が可能となる。また、図３（Ｂ）に示すように、比較例２では、ＶＭ１の動作時に、ＶＭ２の割込み要求があった場合、割込み要求はＶＭＭに通知し、ＶＭ１をＶＭＭに切り替え、さらにＶＭ２に切り替えて、ＶＭ２が動作を初めて割込み受付が可能となる。
【００１５】
比較例１では、動作中のＶＭは直接割り込みを受けることができ、一度ＶＭＭで割込みを受け付ける比較例２に対して割込み性能を維持することができる。一方で、動作中でないＶＭの割込みは、発生状態がメモリに記録され、ＶＭＭがスケジュールされた場合にこれを読み出し、ＶＭをスケジュールすることでこれを処理する。比較例１では、動作中でないＶＭの割込みの受付粒度はＶＭのスケジュールの周期に依存するため、ＶＭの割込みのリアルタイム性を維持したい場合には不適である。
【００１６】
比較例２では、すべての割り込みをＶＭＭが受け付けるため、ＶＭのスケジュール周期に比べ、リアルタイム性を維持して動作中でないＶＭの割込みを受け付けることが可能となる。しかし、必ずＶＭＭを介して割込みを受け付けるため、動作中のＶＭの割込みの性能が低下する。
【００１７】
次に、実施形態の割込み受付について図４を用いて説明する。図４は実施形態の割込み受付を説明する概念図であり、図４（Ａ）はＶＭ１の動作時にＶＭ１の割込み要求がある場合の図であり、図４（Ｂ）はＶＭ１の動作時にＶＭ２の割込み要求がある場合の図である。
【００１８】
図４（Ａ）に示すように、実施形態では、ＶＭ１の動作時にＶＭ１の割込み要求があった場合、ＶＭ１がその割込みの受付は可能である。また、図４（Ｂ）に示すように、実施形態では、ＶＭ１の動作時に、ＶＭ２の割込み要求があった場合、割込み要求はＶＭＭに通知し、ＶＭ１をＶＭＭに切り替え、さらにＶＭ２に切り替えて、ＶＭ２が動作を初めて割込み受付が可能となる。
【００１９】
すなわち、実行中のＶＭと同じＶＭの割込みが入力される場合に実行中のＶＭが直接割り込みを受け付け、実行中のＶＭと異なるＶＭの割込みが入力される場合にＶＭＭを起動することにより、ＶＭＭが割込み要求があったＶＭに処理を切り替えて、割込みを受け付ける。
【００２０】
言い換えると、ＣＰＵは、動作中のＶＭに対する割込みを受信した場合に動作中のＶＭが割込みを受け付け、停止中の仮想マシンに対する割込みを受信した場合にＶＭＭに割込みを受け付けさせる。
【００２１】
具体的には、実施形態の半導体装置は複数のＶＭとＶＭＭとを格納するメモリと、複数のＶＭおよびＶＭＭを実行するＣＰＵと、を備える。ＣＰＵは割込みを処理するＶＭの情報（第一情報）と実行中のＶＭの情報（第二情報）とに基づき割込み処理を実行する。すなわち、ＣＰＵは、割込みを処理するＶＭの情報と実行中のＶＭの情報とが同じ場合、実行中のＶＭに割込み処理を実行させ、割込みを処理するＶＭの情報と実行中のＶＭの情報が異なる場合、ＶＭＭに実行中のＶＭを切り替えさせた後、実行中のＶＭに割込み処理を実行させる。
【００２２】
割込みを処理するＶＭの情報と実行中のＶＭの情報とが同じ場合に、実行中のＶＭ自身が割込みを受け付けられるため、一度、ＶＭＭで割込みを受け付ける手法（比較例２）に対して割込み性能を維持することができる。さらに、割込みを処理するＶＭの情報と実行中のＶＭの情報が異なる場合にもＶＭＭで割込みを受け付けることが可能であるため、ＶＭのスケジュール周期で割込みを受け付ける手法（比較例１）に比べ、割込みのリアルタイム性を確保することができる。
【実施例】
【００２３】
上記実施形態の一例の構成について図５を用いて説明する。図５は実施例の半導体装置の構成を示すブロック図である。
【００２４】
半導体装置１は、複数のＶＭを実行するＣＰＵ１０と、割込み要求を発生する割込み要求元（ＩＲＳ）５０と、割込み要求元５０から割込み要求を受け取り、ＣＰＵ１０へ向け割込み要求を出力する割込みコントローラ（ＩＮＴＣ）２０と、複数のＶＭおよびＶＭＭのソフトウェアプログラムが格納されるメモリ（MEMORY）３０と、を備える。半導体装置１は、さらに、割込みを処理するＶＭの情報と実行中のＶＭの情報とから割込みに対するＣＰＵ１０の挙動を決定するイベント決定装置（ＥＤＵ）４０と、周辺装置（PERIPHERAL）６０と、ＣＰＵ１０とメモリ３０と周辺装置６０とを接続するバス７０と、を備える。半導体装置１は単一の半導体チップで形成されるマイクロコントローラである。ＣＰＵ１０は単一であっても複数であってもよい。イベント決定装置４０はＣＰＵ１０に対応して設けられ、ＣＰＵ１０がｍ個（ＣＰＵ＃１〜ｍ）の場合、イベント決定装置４０もｍ個（イベント決定装置＃１〜ｍ）備える。第１のＣＰＵ１０（ＣＰＵ＃１）はＶＭ１〜ＶＭｎ１のｎ１個のＶＭを実行し、第ｍのＣＰＵ１０（ＣＰＵ＃ｍ）はＶＭ１〜ＶＭｎｍのｎｍ個のＶＭを実行する。ここで、ｎ１、ｎｍは自然数であり、ｎ１はｎｍと等しい場合も異なる場合もある。
【００２５】
図５ではメモリ３０を１つとしたが複数でも良いし、ＣＰＵ１０からのアクセス経路が存在すればバス７０に直接つながっていなくても良い。メモリ３０はＳＲＡＭ等の揮発性メモリであってもよいし、フラッシュメモリ等の不揮発性メモリであってもよい。また、割込みコントローラ２０は１つとしたが、例えばＣＰＵ毎に割込みコントローラを持つなど複数の割込みコントローラで構成されていてもよい。また、すべてのＣＰＵ１０が複数のＶＭを実行できるように記載されているが、単一ＶＭのみを実行するＣＰＵや、ＶＭを持たないＣＰＵが混在していてもよい。また、イベント決定装置４０はＣＰＵ１０または割込みコントローラ２０に含まれていてもよい。また、図５において、割込み要求元５０は単一または複数の周辺装置や外部端子である。
【００２６】
図６は図５の半導体装置においてＣＰＵおよびイベント決定装置を一つずつ示した図である。
【００２７】
以降、ＣＰＵ１０およびイベント決定装置４０が一つで、ＣＰＵ１０で二つのＶＭが動作している場合を例に説明を行うが、ＶＭの数は２に限定されるものではない。
【００２８】
メモリ３０にはＶＭ１とＶＭ２とＶＭＭのソフトウェアプログラムが配置されている。ＶＭ１およびＶＭ２のプログラムには割込み処理サブルーチン（以下、ＩＳＲという。）が含まれ、ＶＭＭのプログラムには例外ハンドラ（ＥＨＮＤＬ）が含まれている。ＩＳＲには、サブルーチンの戻り先へ分岐するための第一終了コード（ＥＮＤＣ１）及び第二終了コード（ＥＮＤＣ２）が含まれている。ＣＰＵ１０には、ＶＭ１、ＶＭ２、ＶＭＭのいずれかのソフトウェアプログラムが割り当てられる。ＶＭ１、ＶＭ２の割り当ては、ＶＭＭが行う。ＣＰＵ１０は、レジスタで構成され、ＶＭＭとＶＭ１、ＶＭ２間の通信を行うためのメッセージボックス（ＭＳＧＢＸ）１１を持つ。メッセージボックス１１は、ＶＭＭによって読出しおよび書込みが可能であり、ＶＭによって読出しが可能である。メッセージボックス１１は、実施例では、レジスタで構成され、ＣＰＵ１０に配置されるものとしたが、ＣＰＵからアクセス可能な記憶装置であればよく、例えばメモリ３０上やバス７０に接続された周辺装置６０に配置されてもよい。
【００２９】
割込み要求元５０から割込みが通知されると、割込みコントローラ２０は割込みの情報（例えば割込みチャネル番号）から割込みを処理するＶＭの情報（ＰＶＭ）を確定する。
【００３０】
イベント決定装置の一例について図７を用いて説明する。図７は図６のイベント決定装置の構成を示すブロック図である。イベント決定装置４０は実行中のＶＭの情報（ＥＶＭ）と割込みを処理するＶＭの情報（ＰＶＭ）が一致するかどうかをＶＭ比較回路（ＶＣＭＰ）４１で判定する。この一致情報（一致判定結果）と割込みを処理するＶＭの情報（ＰＶＭ）をイベント指示（ＥＶＮＴ）としてＣＰＵ１０へ出力する。
【００３１】
ＣＰＵ１０は割込み要求（ＩＲＱ）とイベント指示（ＥＶＮＴ）を受け取るとイベント指示（ＥＶＮＴ）に従い挙動を決定する。イベント指示（ＥＶＮＴ）に含まれる一致判定結果が一致を示している場合は、ＣＰＵ１０はメモリ３０から割込みを処理するＶＭのＩＳＲを読み出し、割込み処理を行う。ＩＳＲはメッセージボックス１１を読み出す。この場合、メッセージボックス１１には第一終了コード（ＥＮＤＣ１）を選択するための指示がＶＭＭにより格納されている。例えば、ＶＭＭは、デフォルトでは第一終了コード（ＥＮＤＣ１）を選択するための指示を予め格納しておく。ＩＳＲはメッセージボックス１１の指示に従い第一終了コード（ＥＮＤＣ１）を実行する。第一終了コード（ＥＮＤＣ１）には、ＩＳＲから割り込まれる前の処理に復帰するための分岐が含まれており、これを実行することで、割込み処理は完了する。
【００３２】
イベント指示（ＥＶＮＴ）に含まれる一致判定結果が不一致を示している場合は、ＣＰＵ１０はメモリ３０からＶＭＭの例外ハンドラ（ＥＨＮＤＬ）を読み出す。例外ハンドラ（ＥＨＮＤＬ）にはＶＭを切り替えるためのプログラムが含まれており、ＶＭＭはプログラムに従い割込みを処理するＶＭをＣＰＵ１０へ割り付ける。ＣＰＵ１０へ割り付けられたＶＭは、割込み要求を受け付け、メモリ３０から自身のＩＳＲを読み出し割込み処理を行う。ＩＳＲはメッセージボックス１１を読み出す。この場合、メッセージボックス１１には第二終了コード（ＥＮＤＣ２）を選択するための指示がＶＭＭにより格納されている。例えば、ＶＭＭは、ＶＭを切り替える前にメッセージボックス１１に第二終了コード（ＥＮＤＣ２）を選択するための指示を格納しておく。ＩＳＲは第二終了コード（ＥＮＤＣ２）を実行する。第二終了コード（ＥＮＤＣ２）にはＣＰＵ１０にＶＭＭを実行させるための処理は含まれており、これを実行することでＶＭＭが動作する。ＶＭＭは所望の終了処理を行う。例えば、メッセージボックス１１に第一終了コード（ＥＮＤＣ１）を選択するための指示を格納し、割込み要求が入力される前に実行されていたＶＭをＣＰＵ１０に割り付ける。
【００３３】
ＣＰＵ１０でＶＭ１が実行されている場合を例に、具体的に説明する。割込みコントローラ２０は入力された割込み要求から、割込みを処理するＶＭの情報（ＰＶＭ）を確定する。
【００３４】
割込みを処理するＶＭの情報（ＰＶＭ）がＶＭ１である場合、イベント決定装置４０の一致判定結果は一致となり、一致情報と割込みを処理するＶＭの情報（ＰＶＭ）としてのＶＭ１がイベント指示（ＥＶＮＴ）として出力される。ＣＰＵ１０はイベント指示（ＥＶＮＴ）に従い、メモリ３０からＶＭ１のＩＳＲを読み出して割込み処理を行う。ＩＳＲはメッセージボックス１１を読み出す。この場合、メッセージボックス１１には第一終了コード（ＥＮＤＣ１）を選択するための指示がＶＭＭにより格納されている。ＩＳＲはメッセージボックス１１の指示に従い第一終了コード（ＥＮＤＣ１）を実行し、割り込まれる前の処理に復帰する。
【００３５】
割込みを処理するＶＭの情報（ＰＶＭ）がＶＭ２である場合、イベント決定装置４０の一致判定結果は不一致となり、一致情報（不一致情報）と割込みを処理するＶＭ情報（ＰＶＭ）としてのＶＭ２がイベント指示（ＥＶＮＴ）として出力される。ＣＰＵ１０はイベント指示（ＥＶＮＴ）に従い、メモリ３０からＶＭＭの例外ハンドラ（ＥＨＮＤＬ）を読み出す。ＶＭＭはメッセージボックス１１に第二終了コード（ＥＮＤＣ２）を選択するための指示を格納し、ＶＭ２をＣＰＵ１０へ割り付ける。ＣＰＵ１０はメモリ３０からＶＭ２のＩＳＲを読み出して割込み処理を行う。ＩＳＲはメッセージボックス１１を読み出す。この場合、メッセージボックス１１には第二終了コード（ＥＮＤＣ２）を選択するための指示がＶＭＭにより格納されている。ＩＳＲはメッセージボックス１１の指示に従い第二終了コード（ＥＮＤＣ２）を実行し、ＣＰＵ１０にＶＭＭを割り付ける。ＶＭＭは、メッセージボックス１１に第一終了コード（ＥＮＤＣ１）を選択するための指示を格納し、ＶＭ１をＣＰＵ１０に割り付ける。
【００３６】
実施例では、フォアグラウンド時に実行中のＶＭ自身が割込みを受け付けられるため、一度ＶＭＭで割込みを受け付ける手法（比較例２）に対して割込み性能を維持することができる。さらに、割込みの宛先以外のＶＭが実行されていた場合にもＶＭＭで割り込みを受け付けることが可能であるため、ＶＭのスケジュール周期で割込みを受け付ける手法（比較例１）に比べ、割込みのリアルタイム性を確保することができる。
【００３７】
＜変形例＞
以下、代表的な変形例について、幾つか例示する。以下の変形例の説明において、上述の実施例にて説明されているものと同様の構成および機能を有する部分に対しては、上述の実施例と同様の符号が用いられ得るものとする。そして、かかる部分の説明については、技術的に矛盾しない範囲内において、上述の実施例における説明が適宜援用され得るものとする。また、上述の実施例の一部、および、複数の変形例の全部または一部が、技術的に矛盾しない範囲内において、適宜、複合的に適用され得る。
【００３８】
（変形例１）
実施例では、周辺装置６０やチップ外部等の割込み要求元５０から割込みが通知されると、割込みコントローラ２０は割込みの情報（例えば割込みチャネル番号）から割込みを処理するＶＭの情報（ＰＶＭ）を確定しているが、これに限定されるものではない。
【００３９】
変形例１の割込みを処理するＶＭの情報（ＰＶＭ）の確定について図８、９を用いて説明する。図８は変形例１の割込みを処理するＶＭの情報の確定を説明するブロック図である。図９は図８のＶＭ情報テーブルの例を示す図である。
【００４０】
変形例１では、入力された割込みの種別毎に属性情報（ＡＩ）を持つ割込みコントローラ２０Ａと、属性情報（ＡＩ）と割込みを処理するＶＭの情報（ＰＶＭ）の関係が確定するＶＭ情報テーブル（ＶＭＴ）８０とを用いて割込みを処理するＶＭの情報（ＰＶＭ）を確定する。図９に示すように、ＶＭ情報テーブル８０は属性情報（ＡＩ）の値から割込みを処理するＶＭの情報（ＰＶＭ）を確定する。図９では、属性情報（ＡＩ）の「０」、「２」は割込みを処理するＶＭの情報（ＰＶＭ）のＶＭ１を指定し、属性情報（ＡＩ）の「１」、「３」は割込みを処理するＶＭの情報（ＰＶＭ）のＶＭ２を指定している。図９例では属性情報（ＡＩ）の値に対して１つのＶＭが示されているが、これに限るものでは無く複数のＶＭが指定されていても良い。また、ＶＭ情報テーブル（ＶＭＴ）８０はイベント決定装置４０の内部に配置されていても良い。
【００４１】
（変形例２）
実施例のイベント決定装置４０は構成が簡単であるが、実行中のＶＭと割込み要求のＶＭが異なる場合、必ずＶＭの切り替えが発生してしまう。これにより、割込み要求が発生する度にＶＭを切り替えることにより、オーバーヘッドが発生し、ＣＰＵ１０が本来実行したい処理を実行できない可能性がある。また、実際にはすべての割込みが実行中のＶＭを切り替えてまで実行するほど重要度が高いものではない。
【００４２】
変形例２では割込みの種別によってＶＭの切り替え有無を選択できる。変形例２のイベント決定装置について図１０、１１を説明する。図１０は変形例２の半導体装置の構成を示すブロック図である。図１１は図１０のイベント決定装置の構成を示すブロックである。
【００４３】
変形例２の半導体装置１Ｂは、割込みコントローラ２０Ｂおよびイベント決定装置４０Ｂを除いて、実施例の半導体装置１と同様である。
【００４４】
割込みコントローラ２０Ｂから割込み優先度（ＩＮＴＰ）を出力し、イベント決定装置４０Ｂへ入力する。イベント決定装置４０Ｂは、一定以上優先度の高い割込みであるかを示す閾値（ＴＨ）を格納するレジスタ（ＲＥＧ）４４と、閾値（ＴＨ）と割込み優先度（ＩＮＴＰ）を比較する優先度比較回路（ＰＣＭＰ）４２と、実行中のＶＭの情報（ＥＶＭ）と割込みを処理するＶＭの情報（ＰＶＭ）を比較するＶＭ比較回路（ＶＣＭＰ）４１と、を備える。イベント決定装置４０Ｂは、さらに、優先度比較回路４２の優先度比較結果（ＰＣＯ）及びＶＭ比較回路４１の比較結果（ＶＣＯ）からイベント指示（ＥＶＮＴ）を生成するイベント指示生成回路（ＥＶＮＴＧ）４３と、割込み要求（ＩＲＱ）のＣＰＵ１０への伝達を許可禁止するマスク回路（ＭＳＫＣ）４５と、を備える。比較結果（ＶＣＯ）は一致判定結果および割込みを処理するＶＭの情報（ＰＶＭ）である。イベント指示（ＥＶＮＴ）はイベント指示生成結果（ＶＭ切替えの有無）および割込みを処理するＶＭの情報（ＰＶＭ）である。閾値（ＴＨ）はＣＰＵ１０などからソフトウェアプログラムでレジスタ４４に設定されても良いし、ハードウェアで固定されていても良い。ソフトウェアプログラムから設定できる場合、閾値（ＴＨ）が格納されるレジスタ４４はＶＭからの設定を制限する機構を有しても良い。
【００４５】
変形例２では、割込み優先度（ＩＮＴＰ）と閾値（ＴＨ）から優先度比較結果（ＰＣＯ）を生成する。優先度比較結果（ＰＣＯ）には、例えば、割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）より大きいか否かが出力される。イベント指示生成回路４３は、ＶＭ比較回路（ＶＣＭＰ）４１の比較結果（ＶＣＯ）と、優先度比較回路４２の優先度比較結果（ＰＣＯ）からイベント指示（ＥＶＮＴ）を生成する。イベント指示生成回路４３は、例えば、ＶＭ比較回路４１の比較結果（ＶＣＯ）が不一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）より大きい場合は、ＶＭの切り替えを行うようにイベント指示（ＥＶＮＴ）を生成し、また、ＣＰＵ１０への割込み要求（ＩＲＱ）の出力を許可するように信号（ＭＳＫ）を生成する。イベント指示生成回路４３は、ＶＭ比較回路４１の結果が不一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下の場合は、ＣＰＵ１０に割込み要求（ＩＲＱ）を出力しないように信号（ＭＳＫ）を生成する。
【００４６】
イベント指示生成回路４３は、例えば、ＶＭ比較回路４１の比較結果（ＶＣＯ）が一致である場合は、ＶＭの切り替えを行わないようにイベント指示（ＥＶＮＴ）を生成し、また、ＣＰＵ１０への割込み要求（ＩＲＱ）の出力を許可するように信号（ＭＳＫ）を生成する。
【００４７】
変形例２では割込み優先度（ＩＮＴＰ）と閾値（ＴＨ）をＶＭの切り替えの条件としたがこれに限定されるものではない。例えば割込みコントローラ２０に割込みの各チャンネルに対してＶＭ切り替え可否を許可するか否かの設定機能を配置し、その設定をイベント決定装置に出力し、イベント指示生成を行ってもよい。
【００４８】
実施例の場合、実行中のＶＭと割込み要求のＶＭが異なる場合、必ずＶＭの切り替えが発生してしまう。これにより、割込み要求（ＩＲＱ）が発生する度にＶＭを切り替えることによりオーバーヘッドが発生し、ＣＰＵ１０が本来実行したい処理を実行できない可能性がある。変形例２では、割込みの種別によってＶＭの切り替え有無を選択することで、実行中のＶＭの動作を停止してでも実行させたい割込み要求（ＩＲＱ）に限定してＶＭ切り替えを行う。これにより、過剰なオーバーヘッドの発生を抑制し割込み処理性能を向上することができる。また、ＶＭ切り替えを行わない割り込みの場合、第二の終了コード（ＥＮＤＣ２）を選択する必要がないため、メッセージボックス１１を読み出さず第一の終了コード（ＥＮＤＣ１）を実行するようにＩＳＲを構成してもよい。
【００４９】
（変形例３）
変形例２では、最も優先度の高い割込みは、ＶＭ比較回路４１の比較結果（ＶＣＯ）が不一致でかつ、その割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下である場合、ＣＰＵ１０はこの割込みを受け付けないにもかかわらず、より優先度の低い割込みは、ＶＭ比較回路４１の比較結果（ＶＣＯ）が一致する場合でも、その割込み優先度（ＩＮＴＰ）が閾値（ＶＨ）以下であるため、割込みが保留されてしまうことがある。
【００５０】
これを解決する一例（変形例３）について図１２、１３を用いて説明する。図１２は変形例３の割込みコントローラの構成を示すブロック図である。図１３は図１２のイベント決定装置の構成を示すブロック図である。
【００５１】
変形例３の半導体装置は、イベント決定装置を割込みコントローラ２０Ｃ内に設けている点を除いて、変形例２の半導体装置１Ｂと同様である。割込みコントローラ２０Ｃに優先度比較回路を配置し実行中のＶＭの情報（ＥＶＭ）を入力する。割込みコントローラ２０Ｃ内の各割込み要求（ＩＲＱ）に対して割込み優先度（ＩＮＴＰ）と閾値（ＴＨ）との比較を実行し、閾値（ＴＨ）より大きい割込み優先度（ＩＮＴＰ）の割込みが無い場合は、実行中のＶＭの割込み要求（ＩＲＱ）を出力する。
【００５２】
具体的には、割込みコントローラ２０Ｃは、第一チャネルの割込み要求元２１のイベント決定装置２３と、第二チャネルの割込み要求元２２のイベント決定装置２４と、割込み選択回路（ＩＲＱ＿ＳＬＣＴ）２５と、を備える。第一チャネルの割込み要求元２１は割込み要求（ＩＲＱ）と割込みを処理するＶＭの情報（ＰＶＭ）と割込み優先度（ＩＮＴＰ）をイベント決定装置２３に出力する。第二チャネルの割込み要求元２２は割込み要求（ＩＲＱ）と割込みを処理するＶＭの情報（ＰＶＭ）と割込み優先度（ＩＮＴＰ）をイベント決定装置２４に出力する。
【００５３】
イベント決定装置２３，２４は、変形例２のイベント決定装置４０Ｂと同様に、一定以上優先度の高い割込みであるかを示す閾値（ＴＨ）を格納するレジスタ（ＲＥＧ）４４と、閾値（ＴＨ）と割込み優先度（ＩＮＴＰ）を比較する優先度比較回路（ＰＣＭＰ）４２と、実行中のＶＭの情報（ＥＶＭ）と割込みを処理するＶＭの情報（ＰＶＭ）を比較するＶＭ比較回路（ＶＣＭＰ）４１と、を備える。イベント決定装置２３，２４は、さらに、優先度比較回路４２の優先度比較結果（ＰＣＯ）及びＶＭ比較回路４１の比較結果（ＶＣＯ）からイベント指示（ＥＶＮＴ）を生成するイベント指示生成回路（ＥＶＮＴＧ）４３Ｃと、割込み要求（ＩＲＱ）のＣＰＵ１０への伝達を許可禁止するマスク回路（ＭＳＫＣ）４５と、を備える。比較結果（ＶＣＯ）は一致判定結果および割込みを処理するＶＭの情報（ＰＶＭ）である。イベント指示（ＥＶＮＴ）はイベント指示生成結果（ＶＭ切替えの有無、割込み優先度が閾値以下）および割込みを処理するＶＭの情報（ＰＶＭ）である。
【００５４】
イベント指示生成回路４３Ｃは、ＶＭ比較回路（ＶＣＭＰ）４１の比較結果（ＶＣＯ）と、優先度比較回路４２の優先度比較結果（ＰＣＯ）からイベント指示（ＥＶＮＴ）を生成する。イベント指示生成回路４３Ｃは、例えば、ＶＭ比較回路４１の比較結果（ＶＣＯ）が不一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）より大きい場合は、ＶＭの切り替えを行うようにイベント指示（ＥＶＮＴ）を生成し、また、ＣＰＵ１０への割込み要求（ＩＲＱ）の出力を許可するように信号（ＭＳＫ）を生成する。イベント指示生成回路４３Ｃは、ＶＭ比較回路４１の結果が不一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下の場合は、ＣＰＵ１０に割込み要求（ＩＲＱ）を出力しないように信号（ＭＳＫ）を生成する。
【００５５】
イベント指示生成回路４３Ｃは、例えば、ＶＭ比較回路４１の比較結果（ＶＣＯ）が一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）より大きい場合は、ＶＭの切り替えを行わないようにイベント指示（ＥＶＮＴ）を生成し、また、ＣＰＵ１０への割込み要求（ＩＲＱ）の出力を許可するように信号（ＭＳＫ）を生成する。イベント指示生成回路４３Ｃは、ＶＭ比較回路４１の結果が一致であり、かつ割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下の場合は、割込み優先度が閾値（ＴＨ）以下であることおよびＶＭの切り替えを行わないようにイベント指示（ＥＶＮＴ）を生成し、また、ＣＰＵ１０に割込み要求（ＩＲＱ）の出力を許可するように信号（ＭＳＫ）を生成する。
【００５６】
割込み選択回路２５は、イベント決定装置２３, ２４から、ＶＭ比較回路４１の比較結果（ＶＣＯ）が一致する割り込み要求、またはＶＭ比較回路４１の比較結果（ＶＣＯ）が不一致かつＶＭの切り替えを行うようにイベント指示（ＥＶＮＴ）を生成された割り込み要求を受け取る。割込み選択回路２５は、受け取った割込みのうち最も割り込み優先度が高い割り込み要求（ＩＲＱ）を選択して割り込み要求（ＩＲＱ）およびイベント指示（ＥＶＮＴ）をＣＰＵ１０に出力する。このときのイベント指示（ＥＶＮＴ）はＶＭ切り替えの有無および割込みを処理するＶＭの情報（ＰＶＭ）である。
【００５７】
第一チャネルの割込み要求元２１から割込み要求（ＩＲＱ）、割込みを処理するＶＭの情報（ＰＶＭ）がＶＭ１、割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下であり、第二チャネルの割込み要求元２２から割込み要求（ＩＲＱ）、割込みを処理するＶＭの情報（ＰＶＭ）がＶＭ２、割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下であり、実行中のＶＭの情報（ＥＶＭ）がＶＭ２である場合について、説明する。
【００５８】
イベント決定装置２３は、第一チャネルの割込み要求元２１から割込み要求（ＩＲＱ）が割込みを処理するＶＭの情報（ＰＶＭ）と実行中のＶＭの情報（ＥＶＭ）が異なり、割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下であるので、割込み要求（ＩＲＱ＿ＣＨ１）およびイベント指示（ＥＶＮＴ＿ＣＨ１）を割込み選択回路２５に出力しない（例えば、ＩＲＱ＿ＣＨ１＝０、ＥＶＮＴ＿ＣＨ１＝０）。
【００５９】
一方、イベント決定装置２４は、第二チャネルの割込み要求元２２から割込み要求（ＩＲＱ）が割込みを処理するＶＭの情報（ＰＶＭ）と実行中のＶＭの情報（ＥＶＭ）が一致し、割込み優先度（ＩＮＴＰ）が閾値（ＴＨ）以下であるので、割込み要求（ＩＲＱ＿ＣＨ２）およびイベント指示（ＥＶＮＴ＿ＣＨ２）を割込み選択回路２５に出力する。このときのイベント指示（ＥＶＮＴ＿ＣＨ２）のＶＭ切替えは無であり、割込み優先度が閾値以下であり、割込みを処理するＶＭの情報（ＰＶＭ）がＶＭ２であり、ＩＲＱ＿ＣＨ２＝１である。
【００６０】
割込み選択回路２５は、イベント決定装置２４の割込み要求（ＩＲＱ＿ＣＨ２）およびイベント指示（ＥＶＮＴ＿ＣＨ２）をＣＰＵ１０に出力する。よって、第二チャネルの割込み要求（ＩＲＱ）およびイベント指示（ＥＶＮＴ）が選択される。このときのイベント指示（ＥＶＮＴ）のＶＭ切替えは無であり、割込みを処理するＶＭの情報（ＰＶＭ）はＶＭ２である。これにより、第一チャネルの割込み優先度（ＩＮＴＰ）が第二チャネルの割り込み優先度（ＩＮＴＰ）より高い場合であっても、第二チャネルの割込み要求（ＩＲＱ）がＣＰＵ１０に出力される。いいかえると、割込み優先度（ＩＮＴＰ）が高く、ＶＭ切り替えが無であり、割込みを処理するＶＭの情報（ＰＶＭ）が実行中のＶＭの情報（ＥＶＭ）と異なる割込み要求（ＩＲＱ）によって、割込み優先度（ＩＮＴＰ）が低く、ＶＭ切り替えが無であり、割込みを処理するＶＭの情報（ＰＶＭ）が実行中のＶＭの情報（ＥＶＭ）と等しい割込み要求（ＩＲＱ）のＣＰＵ１０への出力が阻害されることが無い。
【００６１】
（変形例４）
実施例ではイベント指示（ＥＶＮＴ）でＶＭＭへ遷移する例外を発生させた後、第二終了コード（ＥＮＤＣ２）を実行しＶＭＭに処理を引き戻し、ＣＰＵ１０へ割込み前のＶＭを割り付けることで、ＶＭのスケジューラの周期制御を維持することが可能である。一方でＩＳＲを実行した時間分、割り込まれたＶＭのタイムウインドウが消費されてしまう。
【００６２】
これを解決する変形例４の半導体装置について図１４、１５を用いて説明する。図１４は変形例４の半導体装置の構成を示すブロック図である。図１５はＶＭＭスケジューラの動作を説明するタイミング図であり、図１５（Ａ）はＶＭＭスケジューラの基本動作を示す図であり、図１５（Ｂ）は実施例の割込みを受け付けた場合の動作を示す図であり、図１５（Ｃ）は変形例４の動作を示す図である。
【００６３】
変形例４の説明に先立って、ＶＭスケジューラの基本動作について説明する。図１５（Ａ）に示すように、ＶＭスケジューラの１システム周期（SYSTEM PERIOD）は、まず、ＶＭＭの動作で始まり、その後、ＶＭ１に切り替わり、ＶＭ１を実行する。ＶＭ１の実行開始から所定時間後、ＶＭ１からＶＭＭに切り替わり、さらに、ＶＭ２に切り替わって、ＶＭ２を実行する。ＶＭ２の実行開始から所定時間後、ＶＭ２からＶＭＭに切り替わる。１システム周期の最後にはシステム周期マージンを有する。
【００６４】
次に、実施例の半導体装置の構成において、ＶＭ１実行中にＶＭ２の割込み要求がありこれを受け付けた場合のＶＭスケジューラの動作について説明する。図１５（Ｂ）に示すように、ＶＭスケジューラの１システム周期（SYSTEM PERIOD）は、まず、ＶＭＭの動作で始まり、その後、ＶＭ１に切り替わり、ＶＭ１を実行する。ＶＭ２の割込み要求がありこれを受け付けるため、ＶＭ１からＶＭＭに切り替わり、さらに、ＶＭ２に切り替わって割込み処理を行う。ＶＭ２の割込み処理後、ＶＭ２からＶＭＭに切り替わり、さらにＶＭ１に切り替わって、ＶＭ１を実行する。最初のＶＭ１の実行開始から所定時間後、ＶＭ１からＶＭＭに切り替わり、さらに、ＶＭ２に切り替わって、ＶＭ２を実行する。ＶＭ２の実行開始から所定時間後、ＶＭ２からＶＭＭに切り替わる。１システム周期の最後にはシステム周期マージンを有する。
【００６５】
変形例４では、ＶＭＭが割込み要求のＶＭのＩＳＲを実行する前にパフォーマンス計測機能を起動する。パフォーマンス計測機能は、例えば、タイマ（ＴＩＭＥＲ）６１を用いてＶＭの実行時間をカウントする機能を有しており、ＶＭＭからの起動、及びカウンタ値の読み出しが可能である。また、必要に応じてＶＭからのカウンタの制御を禁止する機構を持つ。割込み要求のＶＭのＩＳＲを実行した後、ＶＭＭはパフォーマンス計測機能の結果を確認する。例えば、割込み要求のＶＭのＩＳＲの処理に要した時間（Ｔcount）を１システム周期の最後のシステム周期マージン期間において、割込み要求のＶＭのＩＳＲの処理に要した時間（Ｔcount）分だけ割り込まれたＶＭを実行する。
【００６６】
具体的に、変形例４の半導体装置の構成において、ＶＭ１実行中にＶＭ２の割込み要求がありこれを受け付けた場合のＶＭスケジューラの動作について説明する。図１５（Ｃ）に示すように、ＶＭスケジューラの１システム周期（SYSTEM PERIOD）は、まず、ＶＭＭの動作で始まり、その後、ＶＭ１に切り替わり、ＶＭ１を実行する。ＶＭ２の割込み要求がありこれを受け付けるため、ＶＭ１からＶＭＭに切り替わり、さらに、ＶＭ２に切り替わって割込み処理を行う。ここで、ＶＭ１からＶＭＭに切り替わったことで、タイマ（ＴＩＭＥＲ）６１の計数を開始する（COUNT START）。ＶＭ２の割込み処理後、ＶＭ２からＶＭＭに切り替わり、さらにＶＭ１に切り替わって、ＶＭ１を実行する。ここで、ＶＭＭからＶＭ１に切り替わったことで、タイマ（ＴＩＭＥＲ）６１の計数を停止する（COUNT STOP）。最初のＶＭ１の実行開始から所定時間後、ＶＭ１からＶＭＭに切り替わり、さらに、ＶＭ２に切り替わって、ＶＭ２を実行する。ＶＭ２の実行開始から所定時間後、ＶＭ２からＶＭＭに切り替わる。１システム周期の最後のシステム周期マージン期間において、割込み要求のＶＭ２のＩＳＲの処理に要した時間（Ｔcount）分だけＶＭ１を実行する。これにより、ＶＭＭおよびＶＭＭ２に割り込まれたＶＭ１のタイムウインドウを補償することができる。
【００６７】
なお、割込み要求のＶＭのＩＳＲの処理に要した時間（Ｔcount）をＶＭＭスケジューラの周期制御用のカウンタ（例えば、ＣＰＵ１０内のタイマ（ＴＩＭＥＲ）１２）に加算し、割り込まれたＶＭのタイムウインドウを、元々想定していた長さに復元してもよい。この場合、ＶＭスケジューラが一巡するのにかかる時間が伸びるが、ＶＭスケジューラに対するウォッチドックタイマ（ＷＤＴ）６２を設けて実行時間保護を行ってもよい。
【００６８】
＜応用例＞
図１６は、実施例の半導体装置を車両に用いた場合の構成例を示すブロック図である。図１６に示すように、車両２００には、半導体装置（SEMICONDUCTOR DEVICE）１、センサ（SENSOR）２１０、及びカメラ（CAMERA）２２０が設けられている。半導体装置１は車載用のチップである。センサ２１０は、車両２００の所定の情報を取得する。また、カメラ２２０は、車両周辺の映像を取得する。センサ２１０およびカメラ２２０で取得された情報は、半導体装置１に供給される。半導体装置１は、センサ２１０およびカメラ２２０で取得された情報に応じて、所定の処理を実施する。半導体装置１に代えて変形例１〜４の何れか一つの半導体装置を用いてもよい。
【００６９】
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【００７０】
１・・・半導体装置
１０・・・ＣＰＵ
１１・・・メッセージボックス
１２・・・タイマ
２０・・・割込みコントローラ
２０Ａ・・・割込みコントローラ
２０Ｂ・・・割込みコントローラ
２０Ｃ・・・割込みコントローラ
２１・・・第一チャネルの割込み要求元
２２・・・第二チャネルの割込み要求元
２３・・・イベント決定装置
２４・・・イベント決定装置
２５・・・割込み選択回路
３０・・・メモリ
４０・・・イベント決定装置
４０Ｂ・・・イベント決定装置
４０Ｃ・・・イベント決定装置
４１・・・ＶＭ比較回路
４２・・・優先度比較回路
４３・・・イベント指示生成回路
４３Ｃ・・・イベント指示生成回路
４４・・・レジスタ
４５・・・マスク回路
５０・・・割込み要求元
６０・・・周辺回路
６１・・・タイマ
６２・・・ウォッチドッグタイマ
７０・・・バス
８０・・・ＶＭ情報テーブル
２００・・・車両
２１０・・・センサ
２２０・・・カメラ
【図１】
2019114097.tif 000003
【図２】
2019114097.tif 000004
【図３】
2019114097.tif 000005
【図４】
2019114097.tif 000006
【図５】
2019114097.tif 000007
【図６】
2019114097.tif 000008
【図７】
2019114097.tif 000009
【図８】
2019114097.tif 000010
【図９】
2019114097.tif 000011
【図１０】
2019114097.tif 000012
【図１１】
2019114097.tif 000013
【図１２】
2019114097.tif 000014
【図１３】
2019114097.tif 000015
【図１４】
2019114097.tif 000016
【図１５】
2019114097.tif 000017
【図１６】
2019114097.tif 000018