"複数のコアから共通の周期で通知を受け付けるコア監視装置であって、コアから通知を受け付けた際、各コアに固有のコア識別数値をコア毎に生成するコア識別数値生成手段と、複数のコアの前記コア識別数値を合計した合計値を算出する合計値算出手段と、最後に算出された合計値を記憶する合計値記憶手段と、前記合計値算出手段が算出した合計値と、前記合計値記憶手段に記憶された合計値との差である第一の差を算出する第一の差算出手段と、最後に算出された第一の差を記憶する第一の差記憶手段と、前記第一の差算出手段が算出した第一の差と、前記第一の差記憶手段に記憶された第一の差との差である第二の差を算出する第二の差算出手段と、を有するコア監視装置。前記コア識別数値生成手段は、コア識別情報と共に、コアが周期的にカウントアップしたカウンタ値を取得し、コア識別情報及びカウンタ値を用いて前記コア識別数値を生成する、ことを特徴とする請求項1記載のコア監視装置。前記コア識別数値生成手段は、各コアが周期的にカウントアップしたカウンタ値とコア識別情報を用いて生成した前記コア識別数値を取得する、ことを特徴とする請求項1記載のコア監視装置。前記コア識別数値生成手段は、コア毎に周期的に通知されるコア識別情報の通知回数をコア毎にカウントするカウント回路を有し、カウント回路のカウンタ値とコア識別情報からコア毎の前記コア識別数値を生成する、ことを特徴とする請求項1記載のコア監視装置。前記コア識別数値は、カウンタ値とコア識別情報を乗算することで得られた乗算値である、ことを特徴とする請求項2~4いずれか1記載のコア監視装置。前記コア識別数値生成手段は、コア識別情報の周期的な通知回数を、コア毎に異なる増大分に変換してカウントするカウント回路であり、該カウント回路のカウンタ値を各コアの前記コア識別数値とする、ことを特徴とする請求項1記載のコア監視装置。前記第二の差がゼロか否かを判定し、ゼロでない場合に、前記第二の差を公開する第二の差公開手段を有する、ことを特徴とする請求項1~6いずれか1項記載のコア監視装置。請求項1~7いずれか1項記載のコア監視装置と、複数のコアを有するプロセッサと、コアが実行するプログラムの記憶手段と、を有する情報処理装置。しかしながら、特許文献1に開示された電子制御装置では、RAMの更新領域の監視と異常のあるコアの特定をソフト的に行う必要があるため、ソフト的な負荷が増大するという問題がある。すなわち、従来から、ウォッチドッグタイマをリセットする処理はソフト的に行われているが、ウォッチドッグタイマを1つにするとソフト的な負荷が余分に生じてしまう。また、特許文献2のように、あるコアが他のコアを監視する場合、被監視コア間ではどのコアに異常が生じたかを検知できないという問題がある。例えば、3つのコアを含むマルチコアにおいて、コア1とコア2が互いに監視し、コア1とコア3が互いに監視している場合を想定する。コア1がコア2の異常を検出した場合、コア3がコア2の異常を検知するためにはコア1がコア3にコア2の異常を通知しなければならない。このため、コア同士が異常のあるコアを検知するためにソフト的な負荷が発生してしまう。本発明は上記課題に鑑み、マルチコアマイコンにおいて、異常の生じたコアをソフト的な負荷増大を抑制して判別可能なコア監視装置を提供することを目的とする。本発明は、複数のコアから共通の周期で通知を受け付けるコア監視装置であって、コアから通知を受け付けた際、各コアに固有のコア識別数値をコア毎に生成するコア識別数値生成手段と、複数のコアの前記コア識別数値を合計した合計値を算出する合計値算出手段と、最後に算出された合計値を記憶する合計値記憶手段と、前記合計値算出手段が算出した合計値と、前記合計値記憶手段に記憶された合計値との差である第一の差を算出する第一の差算出手段と、最後に算出された第一の差を記憶する第一の差記憶手段と、前記第一の差算出手段が算出した第一の差と、前記第一の差記憶手段に記憶された第一の差との差である第二の差を算出する第二の差算出手段と、を有する。マルチコアマイコンにおいて、異常の生じたコアをソフト的な負荷増大を抑制して判別可能なコア監視装置を提供できる。以下、本発明を実施するための形態について図面を参照しながら説明する。図1は、本実施形態のマイコンの概略的な特徴を説明する図の一例である。まず、前提として、複数のコアを有するマルチコアマイコンでは、OSOperatingSystemやコア同士が他のコアを識別するために、各コアにそれぞれ一意のIDが割り当てられている。3つのコア1~3はそれぞれソフト的に実装されているカウンタを有し、同じ周期でそれぞれが独立にカウントアップしている。カウントされた値をカウンタ値という。コア1~3はカウンタ値×IDを計算する。IDが異なるので、カウンタ値が同じでも計算結果はコア毎に異なる。ウォッチドッグタイマを代替する回路後述するカウンタ履歴部は以下の計算を行う。コア1~3から通知された計算結果の合計値を算出する。前回と今回の合計値の差である第1差を算出する。前回と今回の第1差の差である第2差を算出する。図1aに示すように、1つもコアが暴走していない場合、第1差には常に6が、第2差には常に0が得られる。例えば、コア2が暴走した場合、コア2はカウンタ値×IDを更新できないので、上記回路におけるコア2の計算結果は4のままとなる。したがって、コア2の暴走により合計値は正常時の合計値よりも小さくなる。第1差も、コア2がカウンタ値×IDを更新しない分、小さくなる。ここで、第1差の減少分はコア2のIDに等しくなる。このため、図1bに示すように、第2差に暴走したコアのIDが得られることになる。このように、暴走したコアはカウンタ値×IDを更新しないので合計値が小さくなり、第1差の減少分である第2差に暴走したコア2のコアIDが現れる。この第2差を各コアが参照すれば、各コアは暴走したコアを検知することができる。構成例図2は、車両に搭載されるマイコンのハードウェア構成図の一例である。マイコン100は、ECUElectronicControlUnitに搭載されることが想定されているがその用途は車両に限定されない。車載されるECUには、その主要な機能により、エンジンECU、ブレーキECU、ボディECU、ナビゲーションECUAV情報処理ECU、ゲートウェイECU等の種類がある。本実施例のマイコン100はECUの機能の違いに影響されず搭載されることが可能である。また、複数の機能が1つに統合されたECUにマイコン100を搭載してもよい。マイコン100は、メインバス21に接続されたプロセッサ11、ROM12、INTC13、RAM14、DMAC15、並びに、I/Oブリッジ16を有し、I/Oブリッジ16には周辺バス22を介してカウンタ履歴部17、ADCAnalogtoDigitalConverter18及びCANコントローラ19が接続されている。プロセッサ11は少なくとも2つ以上のコア1~nを有すると共に、各コア1~nは一般的な演算機能例えば、ALU等の演算装置、命令バッファ、命令デコーダ、レジスタセット等を有している。ROM12はフラッシュメモリなどの不揮発メモリであり、プロセッサ11が実行するプログラム30や初期値、パラメータ等を記憶している。INTC13はIRQやその他の割り込み端子を介して周辺機器から入力された割り込み要求を、周辺機器の優先順位に基づき調停してプロセッサ11に通知する。これによりプロセッサ11は、割り込みした周辺機器に応じて決まったアドレスの命令をROM12から読み出して処理を実行する。RAM14は、プロセッサ11がプログラム30を実行するための作業領域である。プロセッサ11はROM12からプログラム30を読み込み、また、必要であればデータバスを介してRAM14からデータを読み出しプログラム30を実行する。DMAC15は、プロセッサ11からの指示によりRAM14からI/Oブリッジ16を介して周辺機器にデータを送信する。また、周辺機器から割り込みされたプロセッサ11から指示を受けて、I/Oブリッジ16を介して周辺機器からデータを受け取り、RAM14に書き込む。I/Oブリッジ16は、マルチプレクサやブリッジ回路などであり、チャネル毎に、カウンタ履歴部17、ADC18、及び、CANコントローラ19とそれぞれ接続されており、これらの周辺機器とデータを送受信する。カウンタ履歴部17は、コア1~nのカウンタ値×ID又はカウンタ値を取得して、合計値、第1差、及び、第2差を算出する。詳しくは後述する。ADC18は、各種のセンサが検出したアナログ信号をデジタル信号に変換する。ADC18は変換の終了を、INTC13を介してプロセッサ11に通知する。CANコントローラ19は、車載ネットワークを介して接続された他のECUと通信するための通信装置である。CANコントローラ19は、プロセッサ11から通信データの送信要求を受け付けるとフレームの各フィールドにCANIDやデータを格納しCANバスに出力する。また、CANコントローラ19は、受信すべきCANIDの通信データを検出するとそれを取り込みINTC13を介してプロセッサ11に割り込んで通知する。なお、ウォッチドッグタイマとしては同じマイコン内にカウンタ履歴部17が搭載されていればよい。しかし、他のマイコン、又は、CANControllerAreaNetworkなどの車載LANを介して接続された他のECUにカウンタ履歴部17が搭載されてもよい。この場合、複数のマイコンでカウンタ履歴部17を共用できる。カウンタ値のカウントアップなどの処理各コア1~nはそれぞれ専用の車載装置の制御のため処理を行っている。この処理又はこの処理を実行するプログラムをメインタスクと称する。そして、一般的なウォッチドッグタイマによる異常監視では、ウォッチドッグタイマがオーバーフローしないように、コア1~nが定期的にウォッチドッグタイマをリセットする。このリセットはアイドルタスクと称されるタスクの中で行われることが多い。本実施形態では、コアがアイドルタスクを実行してウォッチドッグタイマをリセットする代わりに、カウンタ値×ID又はカウンタ値を通知する処理を行う。図3は、コア1~nのタスクとカウンタ履歴部17の関係を模式的に説明する図の一例である。カウンタ履歴部17は、図3にも示すように乗算器1~nがある場合とない場合がある。コア1~nには、重複しないIDが付与されている。IDは、マイコン100の起動時にOS又はプログラム30が初期処理として各コア1~nのコアIDレジスタ40に登録する。IDはコア毎に固定であるが、初期処理の度に異なっていてもよい。また、図示するように連番である必要もない。タイマ41は予め設定された時間間隔例えば数ミリ秒毎に周期的にプロセッサ11に割込みする。各コア1~nは割込みによりメインタスクを実行する。コア1~nはメインタスクの実行を終了すると、続いてアイドルタスクを実行する。各コアが行うメインタスクは処理内容が異なっているので、同じ周期でメインタスクを実行しても実行完了タイミングは異なる可能性がある。しかし、メインタスクとアイドルタスクが実行される頻度は各コア1~nに共通になる。したがって、各コア1~nは共通の周期でアイドルタスクを実行する。すなわち、各コア1~nが実行するメインタスクが異なっていても、アイドルタスクがカウンタ値をカウントアップする頻度は共通である。アイドルタスクは、ウォッチドッグタイマをリセットする処理の代わりに、カウンタ値を決まった値だけカウントアップする処理を行う。カウンタ値のカウントアップは各コアに共通なので、コアが暴走しなければカウンタ値1~nはコア1~nにおいて等しくなる。1回のカウントアップ量は、各コアに共通の自然数ならいくつでもよいがここでは1とする。したがって、カウンタ値はアイドルタスクが呼び出される毎に1つ大きくなる。アイドルタスクは、自己のカウンタ値×IDをカウンタ履歴部17に通知する。または、アイドルタスクは、自己のIDと共にカウンタ値をカウンタ履歴部17に通知する。このように、カウンタ値×IDの処理は、各コア1~nを識別するための処理となるが、コアとカウンタ履歴部17のどちらが行ってもよい。詳しくは後述する。アイドルタスクは、カウンタ値をコア1~nのローカルRAMやレジスタに記憶し、この後、他に処理がなければコア1~nはアイドルタスクを終了する。次回、メインタスクが周期割込みにより起動されると、アイドルタスクは最後に記憶したカウンタ値を読み出して、カウントアップする処理を再度、行う。なお、コア1~nからカウンタ履歴部17へのアクセスは、メインバス21、I/Oブリッジ16、周辺バス22、カウンタ履歴部17の順である。逆に、カウンタ履歴部17がプロセッサ11にアクセスする場合は、INTC13、プロセッサ11の順となる。また、必ずしも、アイドルタスクはメインタスクから呼び出されて実行される必要はなく、メインタスクの中でカウンタ値を積算してもよい。また、アイドルタスクが、周期的な割込みで、直接、起動されてもよい。カウンタ履歴部の構成例1図4は、カウンタ履歴部17の構成例の一例を示す図である。図4の構成は、カウンタ履歴部17がカウンタ値×IDを算出する場合の構成である。カウンタ履歴部17は、乗算器31区別する場合、乗算器1~nという、加算器32、減算器33、合計値記憶部36、第1差記憶部37、第2差記憶部38、比較器35、及び、コアID公開用レジスタ39を有する。なお、乗算器31、加算器32及び減算器33,34は、説明の都合上、別々に図示したものであり加算減算乗算が可能な一体の演算器により構成してもよい。乗算器1~nには、コア1~nから送出されたカウンタ値、及び、コア1~nのID1~nが供給される。乗算器1~nは、コア毎にコアのカウンタ値とコアのIDの乗算を行い、それぞれを加算器32に供給する。加算器32は、全ての乗算器1~nの乗算結果を加算する。この加算結果が合計値である。加算器32は、最新の合計値を減算器33に供給する。次に、減算器33は以下の処理を行う。合計値記憶部36から、前回の合計値を読み出す。加算器32から取得した最新の合計値を合計値記憶部36に記憶する。最新の合計値から前回の合計値を減じる。この減算結果が第1差である。減算器33は、最新の第1差を減算器34に供給する。次に、減算器34は以下の処理を行う。第1差記憶部37から、前回の第1差を読み出す。減算器34から取得した最新の第1差を第1差記憶部37に記憶する。最新の第1差から前回の第1差を減じて絶対値を求める。この減算結果が第2差である。次に、比較器35は、第2差がゼロか否かを判定する。ゼロの場合、コア1~nに暴走したコアはなく、各コア1~nが正常にカウンタ値をカウントアップしていることになる。よって、カウンタ履歴部17は、特に何もする必要はないが、図では比較用に第2差を第2差記憶部38に記憶している。第2差がゼロでない場合、コア1~nに暴走したコアがあることになる。このため、比較器35は、第2差をコアID公開用レジスタ39に記憶する。コアID公開用レジスタ39は、各コアが参照することが記憶手段例えば、レジスタである。第2差がゼロ以外になった場合、第2差は暴走したコアのコアIDになるので、各コア1~nは、どのコアが暴走したかを容易に判別することができる。カウンタ履歴部17は、ウォッチドッグタイマと同様に、第2差がゼロでない場合、以下のような処理を行う。aプロセッサ11に割込み信号を出力する。これによりプロセッサ11の各コア1~nは割込みに対応した処理として、例えば、コアID公開用レジスタ39から第2差コアIDを読み出し、暴走したコアを特定する。また、暴走したコアに応じたフェールセーフ処理別のコアに処理を振り分ける、マスターを切り換える等を行うことができる。bCANコントローラ19を介して他のECUに通知する。c電源を遮断する。暴走したコアをリセットするコアのみをリセットする内部リセット。このように、アイドルタスクに、ウォッチドッグタイマのリセットの代わりにカウンタ値をカウントさせる処理を行わせるだけで、ほとんどソフト的な処理負荷を増大させることなく、各コア1~nが暴走したコアを特定できる。コアの数が何個でも、1つのカウンタ履歴部17があればよい。カウンタ履歴部の構成例2図5は、カウンタ履歴部17の構成例の一例を示す図である。図5の構成は、各コアのアイドルタスクがカウンタ値×IDを算出する場合の構成である。このため、図5のカウンタ履歴部17は、乗算器1~nを有さない。それ以外の構成は図4と同様である。加算器32には、コア1~nから送出されたカウンタ値×IDの計算結果が供給される。加算器32は、全てのコア1~nのカウンタ値×IDの計算結果を加算する。この加算結果が合計値である。加算器32は、最新の合計値を減算器33に供給する。以降の処理、すなわち、減算器33、減算器34、及び、比較器35による処理は図4と同様なので説明を省略する。図5と図4を比較すると、図5ではn個の乗算器1~nが不要なので、カウンタ履歴部17の回路規模を小さくできる。したがって、コア数が多く、乗算器1~nを集約できないような場合は、図5の態様の方が有効である。カウンタ値などの遷移図6は、カウンタ値、積算値、合計値、第1差、第2差の遷移の一例を説明する図である。左図は正常時の遷移を、右図はコア2が暴走した際の遷移をそれぞれ示す。なお、各コア1~nがカウンタ値×ID又はカウンタ値のどちらを送信するかは、カウンタ値の遷移に影響しない。時刻t0~t4毎にカウンタ値、積算値、合計値、第1差、第2差が図示されている。時刻t0~t4はタイマ41が各コア1~nに周期的に割込みする間隔例えば、数ミリ秒の経過を表す。カウンタ値1,2,3,4,5は時刻が経過する毎に1つずつ大きくなっている。カウンタ値は1つしかないが、実際には各コア1~nが周期的な割込みで同期するので、各アイドルタスクがそれぞれカウンタ値をカウントしている。コア1又は乗算器1は、ID:1×カウンタ値を周期的に計算するので、計算結果は1、2,3,4,5となる。コア2又は乗算器2は、ID:2×カウンタ値を周期的に計算するので、計算結果は2、4,6,8,10となる。コア3又は乗算器3は、ID:3×カウンタ値を周期的に計算するので、計算結果は3、6,9,12,15となる。また、合計値は、時刻t0~t4毎の積算値の合計なので、6、12,18,24,30のように6ずつ増える等差級数初項6、公差6となる。したがって、第1差は、公差6が常に現れる6,6,6,6,6となる。このため、第2差は常に0となるが、時刻t0では演算対象の第1差がないので算出しないものとする。したがって、-,0,0,0,0となる。このように、コアが暴走しなければ、第1差が常に公差の6となるので、第2差は0となり、カウンタ履歴部17はコアが暴走していないことを確認できる。次に、コア1~nのいずれかが暴走した場合について説明する。ここではコア2が時刻t2~t3の間に暴走したものとする。コア1,3のカウンタ値等は図6の左図にて説明したとおりである。これに対し、コア2は暴走したため、アイドルタスクがカウンタ値のカウントアップをできず、コア2のカウンタ値は1,2,3,3,3となる不図示。また、コア2が暴走すると、カウンタ履歴部17にカウンタ値又は、ID:2×カウンタ値を通知することもできない。したがって、コア2の暴走後は、時刻の経過に関わりなく加算器32に6が供給される。このため、合計値は6、12,18,22,26となり、時刻t3以降の公差が4となる。公差が6から4に減少するのは、コア2のID:2×カウンタ値が更新されないためである。時刻t3で合計値が減少したため、時刻t3、t4の第1差も小さくなり6,6,6,4,4となる。この結果、第2差は-,0,0,2,0となる。コア2が暴走した直後の時刻t3でのみ第2差に2が現れる。この2は、コア2のID=2に他ならない。したがって、カウンタ履歴部17は、第2差が0以外となった時刻によりコアの暴走タイミングを特定でき、第2差の値により暴走したコアを特定することができる。カウンタ履歴部17は、第2差の値をコアID公開用レジスタ39に記憶するので、他の暴走していないコア1,3が暴走したコア2を検知することができる。図7は、コア1~nが4つの場合のカウンタ値、積算値、合計値、第1差、第2差の遷移の一例を説明する図である。左図は正常時の遷移を、右図はコア4が暴走した際の遷移をそれぞれ示す。コア1~nが暴走しない場合の遷移は図6の左図と同様なので簡単に説明する。合計値は、10,20,30,40,50のように10ずつ増える等差級数初項10、公差10となる。したがって、第1差には公差10が常に現れる10,10,10,10,10となる。このため、第2差は-,0,0,0,0となる。次に、コア4が時刻t1~t2の間に暴走したものとする。コア1~3のカウンタ値等は図7の左図にて説明したとおりである。これに対し、コア4は暴走したためアイドルタスクがカウンタ値をカウントアップできず、コア4のカウンタ値は1,2,2,2,2となる不図示。また、コア4が暴走すると、カウンタ履歴部17にカウンタ値又は、ID=4×カウンタ値を通知することもできない。したがって、加算器32には時刻の経過に関わりなく8が供給される。このため、合計値は10、20,26,32,38となり、時刻t2以降の公差が6となる。公差が10から6に減少するのは、コア4の積算値が更新されないためである。時刻t2で合計値が減少したため、時刻t2、t3、t4の第1差も小さくなり10,10,6、6,6となる。この結果、第2差は-,0,4,0,0となる。コア4が暴走した直後の時刻t2でのみ第2差に4が現れる。この4はコア4のID=4に他ならない。したがって、コアの数に関係なく、暴走したコア及びそのタイミングを特定できることが分かる。図8は、IDが不連続の場合の、カウンタ値、積算値、合計値、第1差、第2差の遷移の一例を説明する図である。左図は正常時の遷移を、右図はコア2が暴走した際の遷移をそれぞれ示す。正常時の場合の遷移については説明を省略する。図ではコア1~3のIDがそれぞれ6、11,101となっている。コア2が時刻t2~t3の間に暴走した場合、コア2は暴走したためカウンタ値のカウントアップができず、コア2のカウンタ値は11,22,33,33,33となる。したがって、加算器32には時刻の経過に関わりなく33が供給される。このため、合計値は118、236,354,461,568となり、時刻t3以降の公差が107となる。公差が118から107に減少するのは、コア2の積算値が更新されないためである。時刻t3で合計値が減少したため、時刻t3、t4の第1差も小さくなり118,118,118、107,107となる。この結果、第2差は-,0,0,11,0となる。コア2が暴走した直後の時刻t2でのみ第2差に11が現れる。この11はコア2のID=11に他ならない。したがって、コア1~nに付与されるIDが一意であればそのIDの値に関係なく、暴走したコア及びそのタイミングを特定できることが分かる。図9は、複数のコアが同時に暴走した場合の、カウンタ値、積算値、合計値、第1差、第2差の遷移の一例を説明する図である。図9では左図と右図のいずれもコア1,2が暴走した場合の遷移を示している。左図ではコア1~3のIDはそれぞれID=1,2,3である。時刻t3~t4の間に、コア1,2が共に暴走したとする。これまで説明したように、コアが暴走することで暴走したコアのIDが第2差に表れるが、複数のコアが同時に暴走した場合は暴走した複数のコアのIDの合計が第2差に表れる。このため、時刻t3の第2差は3となっている。しかし、コア3のIDが3であるため、コア3はコア3自身が暴走したと誤検知する可能性がある。このような誤検知は、開発者等がコア1~nのIDを調整することで回避できる。図9の右図では、コア1~3のIDをそれぞれID=1,2,4とした。同様に、時刻t3~t4の間に、コア1,2が共に暴走したとすると、時刻t3の第2差は3となる。IDが3となるコアは存在しないため、コア3はIDの合計が3となる2つのコアコア1,2が暴走したと検知することができる。IDの合計が3となるIDの組み合わせは1と2しかない。よって、コア3は、コア1,2が暴走したと検知することができる。同様に、同時に暴走した複数のコアを特定することができる。コア1と3が暴走した場合、第2差は5となるが、ID=5のコアはなく、IDの合計が5となるIDの組み合わせは1と4しかない。よって、コア2は、コア1,3が暴走したと検知することができる。コア2と3が暴走した場合、第2差は6となるが、ID=6のコアはなく、IDの合計が6となるIDの組み合わせは2と4しかない。よって、コア1はコア2、3が暴走したことを検知できる。このように、コア1~nのIDを適切に設定しておくことで複数のコアの暴走にも対応することができる。具体的には、任意の2組のコアのIDの合計が、他のコアのIDと一致しないように、開発者等が各コア1~nのIDを設定する。3つ以上のコアが同時に暴走した場合についても、任意の3組のコアのIDの合計が、他のコアのIDと一致しないように、各コアのIDを設定すればよい。なお、カウンタ値は1つずつインクリメントされるので、第2差にIDが現れるが、カウンタ値は2つずつインクリメントされてもよい。この場合、第2差に暴走したコアのID×2が現れる。よって、各コア1~nは第2差を2で除すれば、暴走したコアのIDが得られる。このように、インクリメント値が一定でかつ既知であれば、カウンタ値の1回のカウントアップ分は1でなくてもよい。マスター/スレーブの切り換えマルチコアのマイコン100では、複数のコアのいずれか1つをマスターに、残りをスレーブに設定して、マスターがスレーブを監視するなどの構成を採ることがある。この場合、マスターが暴走すると、スレーブを監視するコアがなくなりコアの監視が行われない等の不都合が生じるおそれがある。一般には、各コア1~nは次のようにしてマスターのコアを決定する。例えば、各コア1~nは、起動時に他のコアのIDを参照して交換して、最も小さいコアがマスターを引き受ける。したがって、コアID=1のコアコア1とするがあれば、ID=1のコア1がマスターを引き受ける。コア1はマスターのコアIDを記憶するレジスタに自己のIDを記憶すると共に、他のコア2~nにマスターのコア1のID=1を通知する。各コア2~nは、マスターであるコアのコアIDを記憶するレジスタにコア1のID=1を記憶する。コア1が暴走した場合、他のコア2~nはコアID公開用レジスタ39を参照して、コア1が暴走したことを検知する。暴走したコア1は、電源が遮断されるか又はリセットされる。コア1がリセットされた場合、コア1も復帰すると考えられるが、一度、暴走したコアは再度、暴走するおそれがあるため、別のコア2~nがマスターを引き受けることが好ましい。そこで、コア1の暴走を検知した他のコア2~nは、レジスタに記憶しているマスターのコア1が暴走したので、他のコアのIDを参照して、次のマスターのコアを決定する。この場合、最も小さいIDを持つコア2がマスターを引き受ける。コア2はマスターのコアIDを記憶するレジスタに自己のIDを記憶すると共に、他のコア3~nにID=2を通知する。各コ3~nアは、マスターのコアのコアIDを記憶するレジスタにコア2のID=2を記憶する。このように、各コア1~nが暴走したコアを特定できるので、暴走したコアがマスターであれば、他のコアが自律的にスレーブからマスターに切り替わることができる。なお、マスターになったコア2はマスターに必要なタスクを実行する。例えば、必要に応じてマイコン自体をリセットする処理、コアを切り離したり、起動させる処理、クロック周波数を設定する処理などを行うことができる。以上説明したように、本実施例のマイコン100は、コア毎にカウンタ値×IDを求め合計し、2回の減算を行うだけで、暴走したコアを特定することができる。アイドルタスクはカウントアップするだけか、カウントアップ後に整数の乗算を行うだけでよいのでソフト的な負荷が増大することもほとんどない。実施例1では、コア1~nがソフト的に少なくともカウンタ値をカウントアップしたが、本実施例ではカウンタ値のカウントアップをカウンタ履歴部17が行うマイコン100について説明する。カウンタ回路1~nが同じだけカウントアップするカウンタ履歴部図10は、カウンタ履歴部17の構成例の一例を示す図である。実施例1ではアイドルタスクがカウンタ値をカウントアップしたが、本実施例ではカウンタ履歴部17がカウントアップを行う。このため、図10のカウンタ履歴部17はカウンタ回路42以下、区別する場合、カウンタ回路1~nというを有する。コア1~nのアイドルタスクは、タイマによる周期的な割込みを利用して、定期的にカウンタ履歴部17に通知する。カウンタ履歴部17は通知元のコア1~nを判別して、コア1~nに対応したカウンタ回路1~nにカウンタ値をカウントアップさせる。各カウンタ回路1~nはそれぞれ同じだけ例えば、1つずつカウンタ値をカウントアップする。コア1~nのIDは、定期的な通知に含ませておく。したがって、アイドルタスクは、コアのIDの通知という簡単な処理を行うだけでよい。乗算器1~nには、カウンタ回路1~nから送出されたカウンタ値、及び、コア1~nのID1~nが供給される。乗算器1~nは、各コアを識別するための処理として、コア毎にカウンタ値とコアのIDの乗算を行い、それぞれを加算器32に供給する。以降の処理は実施例1と同様であり、加算器32は乗算器1~nから取得したカウンタ値×IDの合計値を算出する。減算器33は最も新しい合計値と前回の合計値の差である第1差を算出し、第1差記憶部37に記憶させる。減算器34は最も新しい第1差と前回の第1差の差である第2差を算出し、第2差記憶部38に記憶させる。コアが暴走した場合、該コアが実行するアイドルタスクはカウンタ履歴部17にコアのIDを通知できないので、該コアに対応したカウンタ回路40はカウントアップしない。すなわち、実施例1で暴走したコアがカウントアップしない場合と同様の状況が生じる。このため第2差には、コアが暴走したコアのIDが表れ、暴走していない他のコアはコアID公開用レジスタ39により暴走したコアを特定することができる。したがって、カウンタ履歴部17にコア1~nに対応したカウンタ回路1~nを配置することで、アイドルタスクは、従来のウォッチドッグタイマのリセットと同様の簡易な処理を行うだけよくなり、ソフトウェアのコスト増を抑制できる。カウンタ回路1~nがそれぞれ異なる値をインクリメントするカウンタ履歴部また、同様の構成において、乗算器31を省略することもできる。図11はカウンタ履歴部17の構成例の一例を示す図である。図11では、各コアを識別するための処理を、カウンタ回路1~nが行う。具体的には、カウンタ回路1~nは、それぞれが互いに異なる値をカウントアップする。コア1~nのアイドルタスクは、タイマによる周期的な割込みを利用して、定期的にカウンタ履歴部17に通知する。カウンタ履歴部17は通知元のコアを判別して、コアに対応したカウンタ回路にカウンタ値をカウントアップさせる。各カウンタ回路1~nはそれぞれ、異なる値だけカウンタ値をカウントアップする。例えば、カウンタ回路1は1ずつカウントアップし、カウンタ回路2は2ずつカウントアップし、カウンタ回路nはnずつカウントアップする。このようなカウントアップにより、カウンタ値×IDと同様、各コアを識別するための処理を実現できる。加算器32には、カウンタ回路1~nから送出されたカウンタ値が供給される。加算器32は、カウンタ回路1~nのカウンタ値を合計して、合計値を合計値記憶部36に記憶させる。以降の処理は実施例1と同様であり、減算器33は最も新しい合計値と前回の合計値の差である第1差を算出し、第1差記憶部37に記憶させる。減算器34は最も新しい第1差と前回の第1差の差である第2差を算出し、第2差記憶部38に記憶させる。コアが暴走した場合、該コアに対応したカウンタ回路はカウントアップしない。このため第2差には、暴走したコアに対応するカウンタ回路42のカウントアップ量が表れる。カウントアップ量はコア毎に固定一意なので、暴走していない他のコアは暴走したコアを特定することができる。したがって、アイドルタスクがカウントアップしなくても、カウンタ履歴部17がカウンタ回路42を有することで、暴走したコアを特定することができる。"