(57)【特許請求の範囲】
【請求項１】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラとを有する計算機システムであって、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタを有し、
前記割り込むＣＰＵを複数設定した場合には、その割り込みを受け付け可能となったＣＰＵから順に受け付けることと、割り込むＣＰＵの全てが受け付け可能となってから一度に受け付けることの２通りの受け付け方法を有することを特徴とする計算機システム。
【請求項２】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラとを有する計算機システムであって、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込むＣＰＵが複数ある場合にはその割り込みを受け付け可能となったＣＰＵから順に受け付けるか、割り込むＣＰＵの全てが受け付け可能となってから一度に受け付けるかのモードを設定可能な割り込みモード設定レジスタとを有することを特徴とする計算機システム。
【請求項３】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラとを有する計算機システムであって、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込むＣＰＵが複数ある場合にはその割り込みを受け付け可能となったＣＰＵから順に受け付けるか、割り込むＣＰＵの全てが受け付け可能となってから一度に受け付けるかのモードを割り込み要因ごとに設定可能な割り込みモード設定レジスタとを有することを特徴とする計算機システム。
【請求項４】
請求項１〜３のいずれか一項記載の計算機システムにおいて、
前記割り込みコントローラは、前記割り込み要因ごとに優先レベルを設定可能な割り込み要求レベル設定レジスタを有し、
前記ＣＰＵは、割り込み要求をマスクするレベルを設定可能なステータスレジスタを有し、
前記割り込み要因の優先レベルが前記ＣＰＵの割り込み要求マスクレベルを超えた場合に、前記ＣＰＵが割り込みを受け付け可能となることを特徴とする計算機システム。
【請求項５】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラと、
前記ＣＰＵの出力を比較する比較器とを有する計算機システムであって、
前記ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、
前記ＣＰＵが同じ処理を実行して結果を前記比較器で照合することにより故障を検出する安全モードとを切り替えて動作でき、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込み要因ごとに前記性能モードで実行するか前記安全モードで実行するかのモードを設定可能な割り込みモード設定レジスタとを有し、
現在実行中のモードが前記性能モードの場合に、選択された割り込み要因のモードが前記性能モードの場合には、その割り込み要求を前記ＣＰＵに出力することを特徴とする計算機システム。
【請求項６】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラと、
前記ＣＰＵの出力を比較する比較器とを有する計算機システムであって、
前記ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、
前記ＣＰＵが同じ処理を実行して結果を前記比較器で照合することにより故障を検出する安全モードとを切り替えて動作でき、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込み要因ごとに前記性能モードで実行するか前記安全モードで実行するかのモードを設定可能な割り込みモード設定レジスタとを有し、
現在実行中のモードが前記性能モードの場合に、選択された割り込み要因のモードが前記安全モードの場合には、その割り込み要求を前記ＣＰＵに出力するのを抑止し、割り込むＣＰＵの全てが受け付け可能となったら、前記ＣＰＵの処理を中断させ、動作モードを前記性能モードから前記安全モードに切り替え、前記割り込み要求を前記ＣＰＵに出力することを特徴とする計算機システム。
【請求項７】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラと、
前記ＣＰＵの出力を比較する比較器とを有する計算機システムであって、
前記ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、
前記ＣＰＵが同じ処理を実行して結果を前記比較器で照合することにより故障を検出する安全モードとを切り替えて動作でき、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込み要因ごとに前記性能モードで実行するか前記安全モードで実行するかのモードを設定可能な割り込みモード設定レジスタとを有し、
現在実行中のモードが前記安全モードの場合に、選択された割り込み要因のモードが前記性能モードの場合には、その割り込み要求を前記ＣＰＵに出力するのを抑止し、割り込むＣＰＵが受け付け可能となったら、前記ＣＰＵの処理を中断させ、動作モードを前記安全モードから前記性能モードに切り替え、前記割り込み要求を前記ＣＰＵに出力することを特徴とする計算機システム。
【請求項８】
少なくとも２つのＣＰＵと、
前記ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラと、
前記ＣＰＵの出力を比較する比較器とを有する計算機システムであって、
前記ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、
前記ＣＰＵが同じ処理を実行して結果を前記比較器で照合することにより故障を検出する安全モードとを切り替えて動作でき、
前記割り込みコントローラは、
割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定可能な割り込みＣＰＵ設定レジスタと、
前記割り込み要因ごとに前記性能モードで実行するか前記安全モードで実行するかのモードを設定可能な割り込みモード設定レジスタとを有し、
現在実行中のモードが前記安全モードの場合に、選択された割り込み要因のモードが前記安全モードの場合には、割り込むＣＰＵの全てが受け付け可能であればその割り込み要求を前記ＣＰＵに出力し、それ以外の場合には前記割り込み要求を出力しないことを特徴とする計算機システム。
【請求項９】
請求項５〜８のいずれか一項記載の計算機システムにおいて、
前記割り込みコントローラは、前記割り込み要因ごとに優先レベルを設定可能な割り込み要求レベル設定レジスタを有し、
前記ＣＰＵは、割り込み要求をマスクするレベルを設定可能なステータスレジスタを有し、
前記割り込み要因の優先レベルが前記ＣＰＵの割り込み要求マスクレベルを超えた場合に、前記ＣＰＵが割り込みを受け付け可能となることを特徴とする計算機システム。
【請求項１０】
請求項９記載の計算機システムにおいて、
前記ＣＰＵが有する前記ステータスレジスタには、モード切り替えを行ったかどうかを示すモード切り替えビットを持ち、
前記モード切り替えビットを、
前記モード切り替えが行われた時に、前記モード切り替えを行ったことを示す値に設定し、
前記割り込みを受け付けた時に、前記モード切り替えを行わなかったことを示す値に設定し、
前記割り込みから復帰した時に、前記モード切り替えビットが、前記モード切り替えを行ったことを示す値である場合には、前記モード切り替えを実行することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを備えたマイクロコントローラなどの計算機システムに係り、例えば自動車の制御システムなどに適用して有効な技術に関する。
【背景技術】
【０００２】
マイクロコントローラ（以下単に「マイコン」とも称する）は、家電製品、ＡＶ機器、携帯電話、自動車、産業機械等の機器に組み込まれ、メモリに記憶されているプログラムにしたがって処理を行うことで、それぞれの機器の制御を行う半導体集積回路である。
【０００３】
自動車では、制御装置の故障が事故につながる可能性があるため、マイコンを含む部品に高い信頼性が求められるとともに、故障が発生した場合にはこれを検出して自動車が危険な状態にならないように安全機能を働かせるように設計されている。マイコンはセンサやアクチュエータの診断を行ってこれらの故障を検出するだけでなく、マイコン自身の故障も検出する必要がある。
【０００４】
マイコンの故障検出には様々な方法があるが、ＣＰＵを２重化して同一の処理を行わせ、バスの値を常時比較する方法がしばしば用いられている。非特許文献１には、マスターＣＰＵと比較用ＣＰＵが同一の処理を同時に実行し、それぞれの結果を比較回路で比較する方法が示されている。
【０００５】
また、２つのＣＰＵを並列動作と２重化（冗長）比較動作を切り替えて実行させることが可能な方式が非特許文献２で提案されている。ｓｗｉｔｃｈ命令という特殊な命令をＣＰＵがフェッチすると、そのＣＰＵは動作を停止し、モード切り替えのための待機状態となる。２つのＣＰＵがｓｗｉｔｃｈ命令をフェッチしてモード切り替えのための待機状態になると、ＣＰＵは新しいモードで動作を開始する。性能モード（並列動作）では性能が向上し、安全モード（２重化比較動作）ではＣＰＵの出力を比較器で照合することによりＣＰＵの故障を検出することができ、安全性が向上する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】「ＩＥＥＥ  ＭＩＣＲＯ  Ｄｅｃｅｍｂｅｒ  １９８４」誌、「Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅ  Ａｃｈｉｅｖｅｄ  ｉｎ  ＶＬＳＩ」
【非特許文献２】論文集「Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄｅｐｅｎｄａｂｌｅ  Ｓｙｓｔｅｍｓ  ａｎｄ  Ｎｅｔｗｏｒｋｓ  ２００６」、ページ４５−５４、論文「Ａ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｇｅｎｅｒｉｃ  Ｄｕａｌ−Ｃｏｒｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、前述した非特許文献１は、２つのＣＰＵが常に２重化比較動作となり、安全性は高いが、性能はＣＰＵ一つ分である。
【０００８】
また、前述した非特許文献２は、処理に必要とされる安全性の度合いによって、並列動作と２重化比較動作を切り替えられるため、必要な安全性を確保しつつ性能を向上させることができる。しかしながら、２つのＣＰＵがｓｗｉｔｃｈ命令という命令を使ってモード切り替えを行うため、先にｓｗｉｔｃｈ命令をフェッチしたＣＰＵは、もう一方のＣＰＵがｓｗｉｔｃｈ命令をフェッチするまでの間、待機状態となる。
【０００９】
安全モードでは、２つのＣＰＵがｓｗｉｔｃｈ命令を同時にフェッチするが、性能モードでは異なるタイミングでフェッチする。モード切り替えを割り込みによって開始することも考えられる。一般に、マイコンでは割り込み処理の優先レベルを設定でき、割り込み要求の中で最も優先レベルの高い割り込みが選択され、それがＣＰＵの割り込みマスクレベルを超えた場合に、ＣＰＵが受け付けるようになっている。
【００１０】
性能モードでは、２つのＣＰＵの割り込みマスクレベルが異なっている場合があり、モード切り替えを行う割り込み要求を、一方のＣＰＵは受け付け、他方のＣＰＵは受け付けられないということが考えられる。この場合、先に割り込みを受け付けたＣＰＵはｓｗｉｔｃｈ命令によるモード切り替えを実行して待機状態となり、後で割り込みを受け付けたＣＰＵがｓｗｉｔｃｈ命令をフェッチするまで待機状態となり、性能モードでありながらシングルＣＰＵの動作となりＣＰＵの処理効率が低下する。
【００１１】
そこで、本発明の代表的な目的は、性能モードから安全モードに切り替える場合に、ＣＰＵの待機時間を短縮して、性能モードのＣＰＵ処理効率を向上させる計算機システムを提供することにある。
【００１２】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１４】
すなわち、代表的なものの概要は、少なくとも２つのＣＰＵと、ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラとを有する計算機システムにおいて、割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定でき、割り込むＣＰＵを複数設定した場合には、その割り込みを受け付け可能となったＣＰＵから順に受け付けることと、割り込むＣＰＵの全てが受け付け可能となってから一度に受け付けることの２通りの受け付け方法を有することを特徴とする。これにより、少なくとも２つの複数のＣＰＵで同一の割り込み処理を行う場合に、結果を交換してソフトウエアで照合して故障を検出する目的においては、対象となる全てのＣＰＵが割り込みを受け付け可能となってから受け付けるため、先に受け付け可能となったＣＰＵの待機時間を短縮することができる。
【００１５】
また、代表的なものの別の概要は、少なくとも２つのＣＰＵと、ＣＰＵへの割り込みを行うプログラミング可能な割り込みコントローラと、ＣＰＵの出力を比較する比較器とを有する計算機システムにおいて、ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、ＣＰＵが同じ処理を実行して結果を比較器で照合することにより故障を検出する安全モードとを切り替えて動作でき、割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定でき、割り込み要因ごとに性能モードで実行するか安全モードで実行するかのモードを設定できることを特徴とする。これにより、例えば、現在実行中のモードが性能モードの場合に、選択された割り込み要因のモードが安全モードの場合には、その割り込み要求をＣＰＵに出力するのを抑止し、割り込むＣＰＵの全てが受け付け可能となったら、ＣＰＵの処理を中断させ、動作モードを性能モードから安全モードに切り替え、割り込み要求をＣＰＵに出力することができるため、性能モードから安全モードに切り替える場合に、ＣＰＵの待機時間を短縮することができる。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１７】
すなわち、代表的なものによって得られる効果は、少なくとも２つの複数のＣＰＵで同一の割り込み処理を行う場合に、対象となる全てのＣＰＵが割り込みを受け付け可能となってから受け付けるため、先に受け付け可能となったＣＰＵの待機時間を短縮することができる。
【００１８】
また、代表的なものによって得られる別の効果は、性能モードから安全モードに切り替える場合に、ＣＰＵの待機時間を短縮することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の計算機システムを適用した第１の実施の形態で、２つのＣＰＵを有するデュアルコアマイコンの一例を示す図である。
【図２】第１の実施の形態において、割り込み要求レベル設定レジスタの一例を示す図である。
【図３】第１の実施の形態において、割り込みＣＰＵ設定レジスタの一例を示す図である。
【図４】第１の実施の形態において、割り込みモード設定レジスタの一例を示す図である。
【図５】第１の実施の形態において、図１の割り込みコントローラの内部構成およびＣＰＵＡとＣＰＵＢとの接続の一例を示す図である。
【図６】第１の実施の形態において、図５の割り込みコントローラの統合制御の動作の一例を詳細に示す図である。
【図７】第１の実施の形態において、個別モード割り込みの一例を示すタイミングチャートである。
【図８】第１の実施の形態において、同時モード割り込みの一例を示すタイミングチャートである。
【図９】本発明の計算機システムを適用した第２の実施の形態で、２つのＣＰＵを有し、並列処理を行う性能モードと、２重化照合処理を行う安全モードとを動的に切り替え可能なデュアルコアマイコンの一例を示す図である。
【図１０】第２の実施の形態において、図９の割り込みコントローラの内部構成およびＣＰＵＡとＣＰＵＢとの接続の一例を示す図である。
【図１１】第２の実施の形態において、図１０の割り込みコントローラの統合制御の動作の一例を詳細に示す図である。
【図１２】第２の実施の形態において、性能モードで動作中に安全モードの割り込みがある場合の一例を示すタイミングチャートである。
【図１３】第２の実施の形態において、ＣＰＵのステータスレジスタ（割り込み関係）の一例を示す図である。
【図１４】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図１５】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図１６】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図１７】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図１８】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図１９】第１の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２０】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２１】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２２】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２３】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２４】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２５】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２６】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【図２７】第２の実施の形態において、マイコンに付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２１】
＜第１の実施の形態＞
図１は、本発明の計算機システムを適用した第１の実施の形態で、２つのＣＰＵを有するデュアルコアマイコンの一例を示す図である。本実施の形態のマイコン（ＭＣＵ）１は、ＣＰＵＡ２およびＣＰＵＢ６と、メモリＡ３およびメモリＢ７と、ＣＰＵＡバス４およびＣＰＵＢバス８と、バスブリッジＡ５およびバスブリッジＢ９と、システムバス１０と、割り込みコントローラ１１と、周辺モジュールＡ１２〜周辺モジュールＬ１３などから構成される。
【００２２】
ＣＰＵＡ２は、命令を実行して演算やデータ転送などの処理を行うプロセッサである。メモリＡ３は、ＣＰＵＡ２が実行する命令および処理するデータを記憶する。ＣＰＵＡバス４は、ＣＰＵＡ２がメモリＡ３などのモジュールをアクセスするためのバスである。バスブリッジＡ５は、ＣＰＵＡ２がシステムバス１０より外に接続されているモジュールをアクセスする場合に、ＣＰＵＡバス４とシステムバス１０を接続制御するコントローラである。
【００２３】
ＣＰＵＢ６は、命令を実行して演算やデータ転送などの処理を行うプロセッサである。メモリＢ７は、ＣＰＵＢ６が実行する命令および処理するデータを記憶する。ＣＰＵＢバス８は、ＣＰＵＢ６がメモリＢ７などのモジュールをアクセスするためのバスである。バスブリッジＢ９は、ＣＰＵＢ６がシステムバス１０より外に接続されているモジュールをアクセスする場合に、ＣＰＵＢバス８とシステムバス１０を接続制御するコントローラである。
【００２４】
割り込みコントローラ１１は、外部割り込み１１０や周辺モジュールＡ１２〜Ｌ１３からの割り込み要求がある場合に、あらかじめ設定されている要求レベルの最も大きい要求を選択して、ＣＰＵに割り込みを行うモジュールである。
【００２５】
割り込みコントローラ１１と周辺モジュールＡ１２のインタフェース１１２は、周辺モジュールＡ１２からの割り込み要求信号と、割り込みコントローラ１１からの割り込みを受け付けたことを示す応答信号が含まれる。
【００２６】
割り込みコントローラ１１と周辺モジュールＬ１３のインタフェース１１３は、周辺モジュールＬ１３からの割り込み要求信号と、割り込みコントローラ１１からの割り込みを受け付けたことを示す応答信号が含まれる。
【００２７】
割り込みコントローラ１１とＣＰＵＡ２のインタフェース１１４は、割り込みコントローラ１１からの割り込み要求信号と、ＣＰＵＡ２からの割り込みマスク信号が含まれる。割り込みコントローラ１１は、選択した割り込み要因の要求レベルがＣＰＵＡ２からの割り込みマスク信号のレベルより上である場合に、割り込み要求を出力する。
【００２８】
割り込みコントローラ１１とＣＰＵＢ６のインタフェース１１５は、割り込みコントローラ１１からの割り込み要求信号と、ＣＰＵＢ６からの割り込みマスク信号が含まれる。割り込みコントローラ１１は、選択した割り込み要因の要求レベルがＣＰＵＢ６からの割り込みマスク信号のレベルより上である場合に、割り込み要求を出力する。
【００２９】
周辺モジュールＡ１２は、例えばアナログ入力１２０をデジタル信号に変換するＡ／Ｄ変換器である。
【００３０】
周辺モジュールＬ１３は、例えば通信インタフェース１３０を介して通信処理を行うモジュールである。
【００３１】
図２は、割り込み要因の要求レベルを設定する割り込み要求レベル設定レジスタの一例を示す図である。この割り込み要求レベル設定レジスタは、例えば割り込みコントローラ１１に内蔵される。ここでは、４つの外部割り込み要因と１２の周辺モジュール割り込み要因がある場合について示す。割り込み要求レベル設定レジスタＩＰＲ０、ＩＰＲ１、ＩＰＲ２、ＩＰＲ３は１６ビットのレジスタで、それぞれ４つの割り込み要因の要求レベルを４ビットで設定する。ＩＰＲ０はビット１５〜１２が外部割り込み０（Ｅ０）、ビット１１〜８が外部割り込み１（Ｅ１）、ビット７〜４が外部割り込み２（Ｅ２）、ビット３〜０が外部割り込み３（Ｅ３）を設定する。設定値はＢ００００（Ｂは２進数を表す）からＢ１１１１の１６通りで、数値が大きい方の要求レベルが高い。ＩＰＲ１、ＩＰＲ２、ＩＰＲ３は周辺モジュール割り込みＡ（ＰＡ）〜Ｌ（ＰＬ）について要求レベルを設定する。
【００３２】
図３は、割り込み要因ごとに、割り込むＣＰＵを設定する割り込みＣＰＵ設定レジスタの一例を示す図である。この割り込みＣＰＵ設定レジスタは、例えば割り込みコントローラ１１に内蔵される。ＣＰＵＡ２への割り込みを設定する割り込みＣＰＵ設定レジスタ０（ＩＣＰ０）と、ＣＰＵＢ６への割り込みを設定する割り込みＣＰＵ設定レジスタ１（ＩＣＰ１）がある。レジスタの各ビットに割り込み要因が対応付けられており、例えばビット１５は外部割り込み０の設定を行う。０を設定すると割り込み要求があっても割り込みは行わない。１を設定すると割り込み要求を行う。ＩＣＰ０とＩＣＰ１の設定により、割り込み要因ごとに、割り込みを行わない、ＣＰＵＡに割り込む、ＣＰＵＢに割り込む、ＣＰＵＡとＣＰＵＢに割り込むという４通りの割り込み方法を選択できる。
【００３３】
図４は、ＣＰＵＡとＣＰＵＢの両方に割り込む設定が行われている割り込み要因について、割り込み要求を受け付け可能となったＣＰＵに個別に要求を出す個別モードと、ＣＰＵＡとＣＰＵＢの両方が受け付け可能となってから同時に要求を出す同時モードの設定を行う、割り込みモード設定レジスタＩＭＤの一例を示す図である。この割り込みモード設定レジスタは、例えば割り込みコントローラ１１に内蔵される。レジスタの各ビットに割り込み要因が対応付けられており、例えばビット１１は周辺モジュール割り込みＡ（ＰＡ）の設定を行う。０は個別モード、１は同時モードを意味する。
【００３４】
図５は、割り込みコントローラ１１の内部構成およびＣＰＵＡ２とＣＰＵＢ６との接続の一例を示す図である。割り込みコントローラ１１は、ＩＰＲ０（１１００）〜ＩＰＲ３（１１０３）、ＩＣＰ０（１１０４）およびＩＣＰ１（１１０５）、ＩＭＤ（１１０６）などの各レジスタと、優先順位判定Ａ１１０７および優先順位判定Ｂ１１１０、比較器１１０８および比較器１１１１、マスク１１０９およびマスク１１１２、統合制御１１１３などの各回路から構成される。
【００３５】
ＩＰＲ０（１１００）、ＩＰＲ１（１１０１）、ＩＰＲ２（１１０２）、ＩＰＲ３（１１０３）は割り込み要求レベル設定レジスタである。ＩＣＰ０（１１０４）、ＩＣＰ１（１１０５）は割り込みＣＰＵ設定レジスタである。ＩＭＤ（１１０６）は割り込みモード設定レジスタである。
【００３６】
優先順位判定Ａ１１０７は、レジスタ１１００〜１１０６の設定に従い、割り込み要求Ｅ０〜ＰＬの中からＣＰＵＡ２に対する要求レベルの一番高い要求を選択し、その要求レベル１１０７０を出力する。また、選択した要求のモード（個別モードまたは同時モード）、割り込み番号（例えば、Ｅ０は１５、Ｅ１は１４、…、ＰＬは０など）を属性信号１１０７１として出力する。
【００３７】
比較器１１０８は、ＣＰＵＡ２への割り込み要求レベル１１０７０とＣＰＵＡ２のステータスレジスタＳＲに記憶されている割り込みマスクビットＩ３、Ｉ２、Ｉ１、Ｉ０（２００）を比較して、割り込み要求レベル１１０７０が割り込みマスクレベル２００を超えた場合に比較結果１１０８０を１（要求あり）にする。割り込み要求レベル１１０７０が割り込みマスクレベル２００と同じか小さい場合には、比較結果１１０８０を０（要求なし）にする。
【００３８】
マスク１１０９は、統合制御１１１３からのマスク信号１１１３０に従い、比較結果１１０８０の無効化を行う。
【００３９】
優先順位判定Ｂ１１１０は、レジスタ１１００〜１１０６の設定に従い、割り込み要求Ｅ０〜ＰＬの中からＣＰＵＢ６に対する要求レベルの一番高い要求を選択し、その要求レベル１１１００を出力する。また、選択した要求のモード、割り込み番号を属性信号１１１０１として出力する。
【００４０】
比較器１１１１は、ＣＰＵＢ６への割り込み要求レベル１１１００とＣＰＵＢ６のステータスレジスタＳＲに記憶されている割り込みマスクビットＩ３、Ｉ２、Ｉ１、Ｉ０（６００）を比較して、割り込み要求レベル１１１００が割り込みマスクレベル６００を超えた場合に比較結果１１１１０を１（要求あり）にする。割り込み要求レベル１１１００が割り込みマスクレベル６００と同じか小さい場合には、比較結果１１１１０を０（要求なし）にする。
【００４１】
マスク１１１２は、統合制御１１１３からのマスク信号１１１３１に従い、比較結果１１１１０の無効化を行う。
【００４２】
統合制御１１１３は、ＣＰＵＡ２への割り込みとＣＰＵＢ６への割り込みの統合制御を行う。割り込み属性信号１１０７１、１１１０１、比較結果１１０８０、１１１１０を入力して、比較結果マスク信号１１１３０、１１１３１を出力する。統合制御１１１３の要点だけ述べると、ＣＰＵＡ２への割り込みとＣＰＵＢ６への割り込みが個別モードのみの場合にはマスクは行わない。同時モードの割り込み要求がある場合にマスクが行われる。
【００４３】
図６は、統合制御１１１３の動作の一例を詳細に示す図である。比較器出力、要求のモード、割り込み番号（一致／不一致）の組み合わせにより１０ケースが考えられる。ＡはＣＰＵＡ２への割り込み、ＢはＣＰＵＢ６への割り込みを意味する。
【００４４】
ケース１は、比較器出力がＡＢ共に０（要求なし）の場合で、要求のモード、割り込み番号に関わらず、マスク信号は０（マスクしない）となる。
【００４５】
ケース２は、比較器出力Ａが１（要求あり）で個別モード、Ｂが０の場合で、マスク信号は０となる。
【００４６】
ケース３は、比較器出力Ｂが１で個別モード、Ａが０の場合で、マスク信号は０となる。
【００４７】
ケース４は、比較器出力Ａが１で個別モード、Ｂが１で個別モードの場合で、マスク信号は０となる。
【００４８】
ケース５は、比較器出力Ａが１で同時モード、Ｂが０の場合で、マスク信号Ａが１となる。これは、割り込み要求レベルがＣＰＵＡ２のマスクレベルを超えたが、ＣＰＵＢ６のマスクレベルを超えていないことを意味する。ＣＰＵＢ６のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＡ２への割り込み要求を出さないように、マスク信号Ａを１にして、要求を無効化する。
【００４９】
ケース６は、比較器出力Ｂが１で同時モード、Ａが０の場合で、マスク信号Ｂが１となる。これは、割り込み要求レベルがＣＰＵＢ６のマスクレベルを超えたが、ＣＰＵＡ２のマスクレベルを超えていないことを意味する。ＣＰＵＡ２のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＢ６への割り込み要求を出さないように、マスク信号Ｂを１にして、要求を無効化する。
【００５０】
ケース７は、比較器出力Ａが１で個別モード、比較器出力Ｂが１で同時モードの場合で、マスク信号Ｂが１となる。これは、ＣＰＵＢ６に選択した同時モードの割り込み要求より優先レベルの高い個別モードの割り込み要求をＣＰＵＡ２に選択したことを意味する。ＣＰＵＡ２への割り込み要求は出力し、ＣＰＵＢ６への割り込み要求は無効化する。
【００５１】
ケース８は、比較器出力Ａが１で同時モード、比較器出力Ｂが１で個別モードの場合で、マスク信号Ａが１となる。これは、ＣＰＵＡ２に選択した同時モードの割り込み要求より優先レベルの高い個別モードの割り込み要求をＣＰＵＢ６に選択したことを意味する。ＣＰＵＢ６への割り込み要求は出力し、ＣＰＵＡ２への割り込み要求は無効化する。
【００５２】
ケース９は、比較器出力ＡＢとも１で同時モード、割り込み番号が不一致の場合で、マスク信号ＡＢが１となる。これは、ＣＰＵＡ２とＣＰＵＢ６に選択した同時モードの割り込み要因が異なることを意味する。しかしながら、優先レベルの設定はＣＰＵごとに独立に行うわけではないため、このケースは起こり得ない。
【００５３】
ケース１０は、比較器出力ＡＢとも１で同時モード、割り込み番号が一致の場合で、マスク信号ＡＢが０となる。同時モードの割り込みは、この条件でＣＰＵＡ２とＣＰＵＢ６に同時に出力される。
【００５４】
図７は、個別モード割り込みの一例を示すタイミングチャートである。ＣＬＫはＣＰＵをはじめマイコンの各機能モジュールが動作するためのクロックである。
【００５５】
（１）周辺モジュールＡ１２からの割り込み要求ＰＡが入る。ＰＡはＣＰＵＡ２とＣＰＵＢ６の両方に個別に割り込むものとする。
【００５６】
（２）割り込みコントローラ１１は、ＣＰＵＡ２への割り込み要求モードＩＮＴＭＤＡが０（個別）、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］が１２でＣＰＵＡ２の割り込みマスクレベルＳＲＡ＿Ｉ［３：０］の１１を超えているため、ＣＰＵＡ２への割り込み要求ＩＮＴＲＥＱＡを１（要求あり）にする。
【００５７】
（３）ＣＰＵＡ２はタスクＴ１を実行中に割り込みを受け付け、ＰＡの割り込み処理ルーチンＴ１０に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＡ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＡ［３：０］とＳＲＡ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＡを１から０にして、割り込み要求を取り下げる。
【００５８】
（４）ＣＰＵＢ６はタスクＴ２（割り込み処理ルーチン）を実行していたが、処理が終了したので割り込み復帰命令ＲＴＥを実行する。スタックに退避されていた値がステータスレジスタに戻されることによって割り込みマスクレベルＳＲＢ＿Ｉ［３：０］が１１に戻る。
【００５９】
（５）割り込みコントローラ１１は、ＣＰＵＢ６への割り込み要求モードＩＮＴＭＤＢが０（個別）、割り込み要求レベルＩＮＴＬＶＬＢ［３：０］が１２でＣＰＵＢ６の割り込みマスクレベルＳＲＢ＿Ｉ［３：０］の１１を超えているため、ＣＰＵＢ６への割り込み要求ＩＮＴＲＥＱＢを１（要求あり）にする。
【００６０】
（６）ＣＰＵＢ６は割り込みを受け付け、ＰＡの割り込み処理ルーチンＴ１０に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＢ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＢ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＢ［３：０］とＳＲＢ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＢを１から０にして、割り込み要求を取り下げる。
【００６１】
このように、個別モードの割り込みは、ＣＰＵＡ２とＣＰＵＢ６がそれぞれ要求を受け付け可能となったタイミングで受け付けられる。
【００６２】
図８は、同時モード割り込みの一例を示すタイミングチャートである。
【００６３】
（１）周辺モジュールＡ１２からの割り込み要求ＰＡが入る。ＰＡはＣＰＵＡ２とＣＰＵＢ６の両方に同時に割り込むものとする。
【００６４】
（２）割り込みコントローラ１１は、ＣＰＵＡ２への割り込み要求モードＩＮＴＭＤＡが１（同時）、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］が１２でＣＰＵＡ２の割り込みマスクレベルＳＲＡ＿Ｉ［３：０］の１１を超えているが、ＣＰＵＢ６への割り込み要求レベルＩＮＴＬＶＬＢ［３：０］が１２でＣＰＵＢ６の割り込みマスクレベルＳＲＢ＿Ｉ［３：０］の１２と同じであるため、ＣＰＵＡ２への割り込み要求ＩＮＴＲＥＱＡを０（要求なし）にする。
【００６５】
（３）ＣＰＵＢ６はタスクＴ２（割り込み処理ルーチン）を実行していたが、処理が終了したので割り込み復帰命令ＲＴＥを実行する。スタックに退避されていた値がステータスレジスタに戻されることによって割り込みマスクレベルＳＲＢ＿Ｉ［３：０］が１１に戻る。
【００６６】
（４）割り込みコントローラ１１は、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］が１２でＣＰＵＡ２の割り込みマスクレベルＳＲＡ＿Ｉ［３：０］の１１を超え、ＣＰＵＢ６への割り込み要求レベルＩＮＴＬＶＬＢ［３：０］が１２でＣＰＵＢ６の割り込みマスクレベルＳＲＢ＿Ｉ［３：０］の１１を超えたため、ＣＰＵＡ２への割り込み要求ＩＮＴＲＥＱＡを１（要求あり）にする。
【００６７】
（５）割り込みコントローラ１１は（４）と同様に、ＣＰＵＢ６への割り込み要求ＩＮＴＲＥＱＢを１にする。
【００６８】
（６）ＣＰＵＡ２はタスクＴ１を実行中に割り込みを受け付け、ＰＡの割り込み処理ルーチンＴ１０に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＡ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＡ［３：０］とＳＲＡ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＡを１から０にして、割り込み要求を取り下げる。
【００６９】
（７）ＣＰＵＢ６は割り込みを受け付け、ＰＡの割り込み処理ルーチンＴ１０に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＢ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＢ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＢ［３：０］とＳＲＢ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＢを１から０にして、割り込み要求を取り下げる。
【００７０】
このように、同時モードの割り込みは、ＣＰＵＡ２とＣＰＵＢ６がともに要求を受け付け可能となったタイミングで受け付けられる。
【００７１】
図１４〜図１９は、本実施の形態のマイコン１に付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。取扱説明書には、図１４〜図１９に示すような割り込みの受け付け方法に関して記載されている。
【００７２】
例えば、図１４に示す取扱説明書には、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタなどに関して、割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定でき、割り込むＣＰＵを複数設定した場合には、その割り込みを受け付け可能となったＣＰＵから順に受け付けることと、割り込むＣＰＵの全てが受け付け可能となってから一度に受け付けることの２通りの受け付け方法を有することが記載されている。
【００７３】
また、図１５および図１６に示す取扱説明書には、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタと割り込みモード設定レジスタなどに関して記載され、その内容は図１５および図１６に示す通りである。
【００７４】
さらに、図１７〜図１９に示す取扱説明書には、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタと割り込みモード設定レジスタと割り込み要求レベル設定レジスタや、ＣＰＵＡ２およびＣＰＵＢ６のステータスレジスタなどに関して記載され、その内容は図１７〜図１９に示す通りである。
【００７５】
以上説明した本実施の形態によれば、個別モードの割り込みはＣＰＵＡ２とＣＰＵＢ６がそれぞれ要求を受け付け可能となったタイミングで受け付けられ、また、同時モードの割り込みはＣＰＵＡ２とＣＰＵＢ６がともに要求を受け付け可能となったタイミングで受け付けられるので、２つのＣＰＵＡ２とＣＰＵＢ６で同一の割り込み処理を行う場合に、対象となる全てのＣＰＵが割り込みを受け付け可能となってから受け付けるため、先に受け付けたＣＰＵの待機時間を短縮することができる。この結果、ＣＰＵの待機時間を短縮して、ＣＰＵ処理効率を向上させることが可能となる。
【００７６】
＜第２の実施の形態＞
図９は、本発明の計算機システムを適用した第２の実施の形態で、２つのＣＰＵを有し、並列処理を行う性能モードと、２重化照合処理を行う安全モードとを動的に切り替え可能なデュアルコアマイコンの一例を示す図である。本実施の形態のマイコン（ＭＣＵ）１は、図１に対して、ＣＰＵＡ２とＣＰＵＢ６の出力を比較する比較器１４と、割り込みコントローラ１１と比較器１４の間のインタフェース１１６が追加になっている。
【００７７】
性能モードでは、ＣＰＵＡ２とＣＰＵＢ６はそれぞれ異なるプログラムを独立に処理する。この性能モードでは、比較器１４は動作しない。安全モードでは、ＣＰＵＡ２とＣＰＵＢ６は同じプログラムを同期して処理する。この安全モードでは、比較器１４が動作し、ＣＰＵＡ２とＣＰＵＢ６の出力が異なる場合には、エラーを出力する。割り込みコントローラ１１からのインタフェース１１６は、性能モード（値が０）か安全モード（値が１）かを示すモード信号が含まれる。
【００７８】
図１０は、割り込みコントローラ１１の内部構成およびＣＰＵＡ２とＣＰＵＢ６との接続の一例を示す図である。
【００７９】
ＩＰＲ０（１１００）、ＩＰＲ１（１１０１）、ＩＰＲ２（１１０２）、ＩＰＲ３（１１０３）は割り込み要求レベル設定レジスタである。ＩＣＰ０（１１０４）、ＩＣＰ１（１１０５）は割り込みＣＰＵ設定レジスタである。ＩＭＤ（１１０６）は割り込みモード設定レジスタである。
【００８０】
優先順位判定Ａ１１０７は、レジスタ１１００〜１１０６の設定に従い、割り込み要求Ｅ０〜ＰＬの中からＣＰＵＡ２に対する要求レベルの一番高い要求を選択し、その要求レベル１１０７０を出力する。また、選択した要求のモード（性能モードまたは安全モード）、割り込み番号（例えば、Ｅ０は１５、Ｅ１は１４、…、ＰＬは０など）を属性信号１１０７１として出力する。
【００８１】
比較器１１０８は、ＣＰＵＡ２への割り込み要求レベル１１０７０とＣＰＵＡ２のステータスレジスタＳＲに記憶されている割り込みマスクビットＩ３、Ｉ２、Ｉ１、Ｉ０（２００）を比較して、割り込み要求レベル１１０７０が割り込みマスクレベル２００を超えた場合に比較結果１１０８０を１（要求あり）にする。割り込み要求レベル１１０７０が割り込みマスクレベル２００と同じか小さい場合には、比較結果１１０８０を０（要求なし）にする。
【００８２】
マスク１１０９は、統合制御１１１３からのマスク信号１１１３０に従い、比較結果１１０８０の無効化を行う。
【００８３】
優先順位判定Ｂ１１１０は、レジスタ１１００〜１１０６の設定に従い、割り込み要求Ｅ０〜ＰＬの中からＣＰＵＢ６に対する要求レベルの一番高い要求を選択し、その要求レベル１１１００を出力する。また、選択した要求のモード、割り込み番号を属性信号１１１０１として出力する。
【００８４】
比較器１１１１は、ＣＰＵＢ６への割り込み要求レベル１１１００とＣＰＵＢ６のステータスレジスタＳＲに記憶されている割り込みマスクビットＩ３、Ｉ２、Ｉ１、Ｉ０（６００）を比較して、割り込み要求レベル１１１００が割り込みマスクレベル６００を超えた場合に比較結果１１１１０を１（要求あり）にする。割り込み要求レベル１１１００が割り込みマスクレベル６００と同じか小さい場合には、比較結果１１１１０を０（要求なし）にする。
【００８５】
マスク１１１２は、統合制御１１１３からのマスク信号１１１３１に従い、比較結果１１１１０の無効化を行う。
【００８６】
統合制御１１１３は、ＣＰＵＡ２への割り込みとＣＰＵＢ６への割り込みの統合制御を行う。割り込み属性信号１１０７１、１１１０１、比較結果１１０８０、１１１１０を入力して、比較結果マスク信号１１１３０、１１１３１を出力する。また、ＣＰＵＡ２とＣＰＵＢ６にはモード切り替え機能２０１、６０１が追加されている。レジスタも性能モード用と安全モード用に２組持ち、モードで切り替えるように構成されている。割り込みコントローラ１１の統合制御１１１３は、現在実行中のモードと異なるモードの割り込み要求をＣＰＵが受け付け可能状態になったら、モード切り替え要求（１１１３２の一部、１１１３３の一部）を出力する。ＣＰＵは実行中の命令をキャンセルし、最後に実行した命令の次の命令アドレスをプログラムカウンタに保持し、動作を停止する。次にレジスタを現在と異なるモード用に切り替え、割り込みコントローラ１１にモード切り替え応答信号（１１１３２の一部、１１１３３の一部）を出力する。ＣＰＵＡ２とＣＰＵＢ６の両方からモード切り替え応答信号が返ると、統合制御１１１３は動作モード１１１３４を切り替え、モード切り替え完了信号（１１１３２の一部、１１１３３の一部）を出力する。また、動作モードと割り込み要求のモードが同じになったので、比較結果マスク信号１１１３０、１１１３１が１（マスクする）から０（マスクしない）に変化し、割り込み要求信号１１０９０、１１１２０が出力可能となる。
【００８７】
図１１は、統合制御１１１３の動作の一例を詳細に示す図である。動作中のモード、比較器出力、要求のモード、割り込み番号（一致／不一致）の組み合わせにより２０ケースが考えられる。ＡはＣＰＵＡ２への割り込み、ＢはＣＰＵＢ６への割り込みを意味する。
【００８８】
ケース１〜１０は現在のモードが性能モードである。
【００８９】
ケース１は、比較器出力がＡＢ共に０（要求なし）の場合で、要求のモード、割り込み番号に関わらず、マスク信号は０（マスクしない）となる。
【００９０】
ケース２は、比較器出力Ａが１（要求あり）で性能モード、Ｂが０の場合で、マスク信号は０となる。すなわち、ＣＰＵＡ２への割り込み要求が出力される。
【００９１】
ケース３は、比較器出力Ｂが１で性能モード、Ａが０の場合で、マスク信号は０となる。すなわち、ＣＰＵＢ６への割り込み要求が出力される。
【００９２】
ケース４は、比較器出力Ａが１で性能モード、Ｂが１で性能モードの場合で、マスク信号は０となる。すなわち、ＣＰＵＡ２とＣＰＵＢ６に割り込み要求が出力される。
【００９３】
ケース５は、比較器出力Ａが１で安全モード、Ｂが０の場合で、マスク信号Ａが１となる。これは、割り込み要求レベルがＣＰＵＡ２のマスクレベルを超えたが、ＣＰＵＢ６のマスクレベルを超えていないことを意味する。ＣＰＵＢ６のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＡ２への割り込み要求を出さないように、マスク信号Ａを１にして、要求を無効化する。
【００９４】
ケース６は、比較器出力Ｂが１で安全モード、Ａが０の場合で、マスク信号Ｂが１となる。これは、割り込み要求レベルがＣＰＵＢ６のマスクレベルを超えたが、ＣＰＵＡ２のマスクレベルを超えていないことを意味する。ＣＰＵＡ２のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＢ６への割り込み要求を出さないように、マスク信号Ｂを１にして、要求を無効化する。
【００９５】
ケース７は、比較器出力Ａが１で性能モード、比較器出力Ｂが１で安全モードの場合で、マスク信号Ｂが１となる。これは、ＣＰＵＢ６に選択した安全モードの割り込み要求より優先レベルの高い性能モードの割り込み要求をＣＰＵＡ２に選択したことを意味する。ＣＰＵＡ２への割り込み要求は出力し、ＣＰＵＢ６への割り込み要求は無効化する。
【００９６】
ケース８は、比較器出力Ａが１で安全モード、比較器出力Ｂが１で性能モードの場合で、マスク信号Ａが１となる。これは、ＣＰＵＡ２に選択した安全モードの割り込み要求より優先レベルの高い性能モードの割り込み要求をＣＰＵＢ６に選択したことを意味する。ＣＰＵＢ６への割り込み要求は出力し、ＣＰＵＡ２への割り込み要求は無効化する。
【００９７】
ケース９は、比較器出力ＡＢとも１で安全モード、割り込み番号が不一致の場合で、マスク信号ＡＢが１となる。これは、ＣＰＵＡ２とＣＰＵＢ６に選択した安全モードの割り込み要因が異なることを意味する。しかしながら、優先レベルの設定はＣＰＵごとに独立に行うわけではないため、このケースは起こり得ない。
【００９８】
ケース１０は、比較器出力ＡＢとも１で安全モード、割り込み番号が一致の場合で、マスク信号ＡＢが１となる。安全モードの要求がＣＰＵＡ２とＣＰＵＢ６の両方で受け付け可能になったので、モード切り替えが１（モード切り替えを行う）となる。
【００９９】
ケース１１〜２０は現在のモードが安全モードである。
【０１００】
ケース１１は、比較器出力がＡＢ共に０（要求なし）の場合で、要求のモード、割り込み番号に関わらず、マスク信号は０（マスクしない）となる。
【０１０１】
ケース１２は、比較器出力Ａが１（要求あり）で性能モード、Ｂが０の場合で、マスク信号Ａが１となる。また、ＣＰＵＡ２が性能モードの割り込みを受け付け可能なので、モード切り替えが１となる。
【０１０２】
ケース１３は、比較器出力Ｂが１で性能モード、Ａが０の場合で、マスク信号は０となる。また、ＣＰＵＢ６が性能モードの割り込みを受け付け可能なので、モード切り替えが１となる。
【０１０３】
ケース１４は、比較器出力Ａが１で性能モード、Ｂが１で性能モードの場合で、マスク信号ＡＢが１となる。また、ＣＰＵＡ２とＣＰＵＢ６が割り込みを受け付け可能なので、モード切り替えが１となる。
【０１０４】
ケース１５は、比較器出力Ａが１で安全モード、Ｂが０の場合で、マスク信号Ａが１となる。これは、割り込み要求レベルがＣＰＵＡ２のマスクレベルを超えたが、ＣＰＵＢ６のマスクレベルを超えていないことを意味する。ＣＰＵＢ６のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＡ２への割り込み要求を出さないように、マスク信号Ａを１にして、要求を無効化する。
【０１０５】
ケース１６は、比較器出力Ｂが１で安全モード、Ａが０の場合で、マスク信号Ｂが１となる。これは、割り込み要求レベルがＣＰＵＢ６のマスクレベルを超えたが、ＣＰＵＡ２のマスクレベルを超えていないことを意味する。ＣＰＵＡ２のマスクレベルが下がって割り込み要求を受け付けられるようになるまで、ＣＰＵＢ６への割り込み要求を出さないように、マスク信号Ｂを１にして、要求を無効化する。
【０１０６】
ケース１７は、比較器出力Ａが１で性能モード、比較器出力Ｂが１で安全モードの場合で、マスク信号ＡＢが１となる。これは、ＣＰＵＢ６に選択した安全モードの割り込み要求より優先レベルの高い性能モードの割り込み要求をＣＰＵＡ２に選択したことを意味する。ＣＰＵＡ２とＣＰＵＢ６への割り込み要求を無効化する。また、ＣＰＵＡ２が性能モードの割り込みを受け付け可能なので、モード切り替えが１となる。
【０１０７】
ケース１８は、比較器出力Ａが１で安全モード、比較器出力Ｂが１で性能モードの場合で、マスク信号ＡＢが１となる。これは、ＣＰＵＡ２に選択した安全モードの割り込み要求より優先レベルの高い性能モードの割り込み要求をＣＰＵＢ６に選択したことを意味する。ＣＰＵＡ２とＣＰＵＢ６への割り込み要求を無効化する。また、ＣＰＵＢ６が性能モードの割り込みを受け付け可能なので、モード切り替えが１となる。
【０１０８】
ケース１９は、比較器出力ＡＢとも１で安全モード、割り込み番号が不一致の場合で、マスク信号ＡＢが１となる。これは、ＣＰＵＡ２とＣＰＵＢ６に選択した安全モードの割り込み要因が異なることを意味する。しかしながら、優先レベルの設定はＣＰＵごとに独立に行うわけではないため、このケースは起こり得ない。
【０１０９】
ケース２０は、比較器出力ＡＢとも１で安全モード、割り込み番号が一致の場合で、マスク信号ＡＢが０となる。安全モードの割り込みは、この条件でＣＰＵＡ２とＣＰＵＢ６に同時に出力される。
【０１１０】
図１２は、性能モードで動作中に安全モードの割り込みがある場合の一例を示すタイミングチャートである。
【０１１１】
（１）周辺モジュールＡ１２からの割り込み要求ＰＡが入る。
【０１１２】
（２）割り込みコントローラ１１は、ＣＰＵＡ２への割り込み要求モードＩＮＴＭＤＡが１（安全）、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］が１２でＣＰＵＡ２の割り込みマスクレベルＳＲＡ＿Ｉ［３：０］の１１を超えているが、ＣＰＵＢ６への割り込み要求レベルＩＮＴＬＶＬＢ［３：０］が１２でＣＰＵＢ６の割り込みマスクレベルＳＲＢ＿Ｉ［３：０］の１２と同じであるため、ＣＰＵＡ２への割り込み要求ＩＮＴＲＥＱＡを０（要求なし）にする。
【０１１３】
（３）ＣＰＵＢ６はタスクＴＰ２（割り込み処理ルーチン）を実行していたが、処理が終了したので割り込み復帰命令ＲＴＥを実行する。スタックに退避されていた値がステータスレジスタに戻されることによって割り込みマスクレベルＳＲＢ＿Ｉ［３：０］が１１に戻る。
【０１１４】
（４）割り込みコントローラ１１は、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］が１２でＣＰＵＡ２の割り込みマスクレベルＳＲＡ＿Ｉ［３：０］の１１を超え、ＣＰＵＢ６への割り込み要求レベルＩＮＴＬＶＬＢ［３：０］が１２でＣＰＵＢ６の割り込みマスクレベルＳＲＢ＿Ｉ［３：０］の１１を超えたため、ＣＰＵＡ２とＣＰＵＢ６にモード切り替え要求を出力する。これに従いＣＰＵＡ２はモード切り替えを実行する。実行中の命令をキャンセルし、最後に実行した命令の次の命令アドレスをプログラムカウンタに保持する。
【０１１５】
（５）ＣＰＵＢ６も同様にモード切り替えを実行する。
【０１１６】
（６）ＣＰＵＡ２は動作を停止し、レジスタを安全モード用に切り替え、割り込みコントローラ１１にモード切り替え応答信号を出力する。
【０１１７】
（７）ＣＰＵＢ６も同様に停止し、レジスタを安全モード用に切り替え、割り込みコントローラ１１にモード切り替え応答信号を出力する。
【０１１８】
（８）割り込みコントローラ１１が出力するモード信号ＣＰＵＭＤが０（性能モード）から１（安全モード）に変化する。
【０１１９】
（９）割り込みコントローラ１１は、動作モードが安全モードになったので、ＣＰＵＡ２への割り込み要求ＩＮＴＲＥＱＡを１（要求あり）にする。
【０１２０】
（１０）同様にＣＰＵＢ６への割り込み要求ＩＮＴＲＥＱＢを１にする。
【０１２１】
（１１）ＣＰＵＡ２は動作を再開し、性能モードに切り替わる前に実行していたタスクＴＳ１を継続実行する。
【０１２２】
（１２）ＣＰＵＢ６は動作を再開し、性能モードに切り替わる前に実行していたタスクＴＳ１を継続実行する。
【０１２３】
（１３）ＣＰＵＡ２はＩＮＴＲＥＱＡを受け付け、ＰＡの割り込み処理ルーチンＴＳ２に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＡ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＡ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＡ［３：０］とＳＲＡ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＡを１から０にして、割り込み要求を取り下げる。
【０１２４】
（１４）ＣＰＵＢ６はＩＮＴＲＥＱＢを受け付け、ＰＡの割り込み処理ルーチンＴＳ２に分岐する。また、割り込み要求レベルＩＮＴＬＶＬＢ［３：０］の値１２をステータスレジスタのマスクビットにコピーし、ＳＲＢ＿Ｉ［３：０］が１２に更新される。ＩＮＴＬＶＬＢ［３：０］とＳＲＢ＿Ｉ［３：０］が同じ値になったので、割り込みコントローラ１１はＩＮＴＲＥＱＢを１から０にして、割り込み要求を取り下げる。
【０１２５】
このように、性能モードで動作中に発生した安全モードの割り込みは、ＣＰＵＡ２とＣＰＵＢ６がともに要求を受け付け可能となったタイミングで、性能モードから安全モードに切り替わった後に受け付けられる。
【０１２６】
図１３は、ＣＰＵ（ＣＰＵＡ２、ＣＰＵＢ６）のステータスレジスタ（割り込み関係）の一例を示す図である。ビット７〜４は割り込みマスクビットＩ３、Ｉ２、Ｉ１、Ｉ０である。ビット８はモード切り替えビットＭＣである。ＭＣは０がモード切り替えなし、１がモード切り替えありを意味する。
【０１２７】
ステータスレジスタも性能モード用と安全モードに２組持ち、モードで切り替えるように構成されている。ＭＣはリセットにより０に初期化される。モード切り替え後、ステータスレジスタのＭＣを１にする。割り込みを受け付けると、ステータスレジスタはスタックに退避される。割り込み要求レベルが割り込みマスクビットに書き込まれ、ＭＣを０にする。割り込み処理が終わり、ステータスレジスタの値がスタックから復帰すると、ＭＣが１となる。割り込みが入る前にモード切り替えが行われたことが分かるので、モード切り替え処理を行って、元のモードに戻すことができる。
【０１２８】
図２０〜図２７は、本実施の形態のマイコン１に付属される取扱説明書の割り込みの受け付け方法に関する記載の一例を示す図である。取扱説明書には、図２０〜図２７に示すような割り込みの受け付け方法に関して記載されている。
【０１２９】
例えば、図２０に示す取扱説明書には、ＣＰＵがそれぞれ異なる処理を実行して性能を向上させる性能モードと、ＣＰＵが同じ処理を実行して結果を比較器で照合することにより故障を検出する安全モードとを切り替えて動作できる構成において、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタと割り込みモード設定レジスタと統合制御１１１３などに関して、割り込み要因ごとに、割り込むＣＰＵを一つまたは複数設定でき、割り込み要因ごとに性能モードで実行するか安全モードで実行するかのモードを設定でき、現在実行中のモードが性能モードの場合に、選択された割り込み要因のモードが性能モードの場合には、その割り込み要求をＣＰＵに出力することが記載されている。
【０１３０】
また、図２１〜図２３に示す取扱説明書には、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタと割り込みモード設定レジスタと統合制御１１１３などに関して記載され、その内容は図２１〜図２３に示す通りである。
【０１３１】
さらに、図２４〜図２７に示す取扱説明書には、割り込みコントローラ１１の割り込みＣＰＵ設定レジスタと割り込みモード設定レジスタと割り込み要求レベル設定レジスタや、ＣＰＵＡ２およびＣＰＵＢ６のステータスレジスタなどに関して記載され、その内容は図２４〜図２７に示す通りである。
【０１３２】
以上説明した本実施の形態によれば、実施の形態１と同様に、２つのＣＰＵＡ２とＣＰＵＢ６で同一の割り込み処理を行う場合に、対象となる全てのＣＰＵが割り込みを受け付け可能となってから受け付けるため、先に受け付けたＣＰＵの待機時間を短縮することができる。特に、本実施の形態においては、性能モードで動作中に発生した安全モードの割り込みは、ＣＰＵＡ２とＣＰＵＢ６がともに要求を受け付け可能となったタイミングで、性能モードから安全モードに切り替わった後に受け付けられるので、性能モードから安全モードに切り替える場合に、ＣＰＵの待機時間を短縮して、性能モードのＣＰＵ処理効率を向上させることが可能となる。
【０１３３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１３４】
例えば、前記第１および第２の実施の形態においては、２つのＣＰＵを有するデュアルコアマイコンを例に説明したが、本発明は、２つに限らず、３つ以上など、少なくとも２つ以上のＣＰＵを有する計算機システムに広く適用可能である。
【産業上の利用可能性】
【０１３５】
本発明の計算機システムは、複数のＣＰＵを備えたマイクロコントローラなどの計算機システムに係り、例えば自動車の制御システムなどに利用可能である。
【符号の説明】
【０１３６】
１…マイコン
２…ＣＰＵＡ
３…メモリＡ
４…ＣＰＵＡバス
５…バスブリッジＡ
６…ＣＰＵＢ
７…メモリＢ
８…ＣＰＵＢバス
９…バスブリッジＢ
１０…システムバス
１１…割り込みコントローラ
１２…周辺モジュールＡ
１３…周辺モジュールＬ
１４…比較器
１１００〜１１０３…割り込み要求レベル設定レジスタ
１１０４、１１０５…割り込みＣＰＵ設定レジスタ
１１０６…割り込みモード設定レジスタ
１１０７…優先順位判定Ａ
１１０８…比較器
１１０９…マスク
１１１０…優先順位判定Ｂ
１１１１…比較器
１１１２…マスク
１１１３…統合制御
【図１】
0005512383.tif 000002
【図２】
0005512383.tif 000003
【図３】
0005512383.tif 000004
【図４】
0005512383.tif 000005
【図５】
0005512383.tif 000006
【図６】
0005512383.tif 000007
【図７】
0005512383.tif 000008
【図８】
0005512383.tif 000009
【図９】
0005512383.tif 000010
【図１０】
0005512383.tif 000011
【図１１】
0005512383.tif 000012
【図１２】
0005512383.tif 000013
【図１３】
0005512383.tif 000014
【図１４】
0005512383.tif 000015
【図１５】
0005512383.tif 000016
【図１６】
0005512383.tif 000017
【図１７】
0005512383.tif 000018
【図１８】
0005512383.tif 000019
【図１９】
0005512383.tif 000020
【図２０】
0005512383.tif 000021
【図２１】
0005512383.tif 000022
【図２２】
0005512383.tif 000023
【図２３】
0005512383.tif 000024
【図２４】
0005512383.tif 000025
【図２５】
0005512383.tif 000026
【図２６】
0005512383.tif 000027
【図２７】
0005512383.tif 000028