(57)【要約】【課題】メインマイコンの処理負荷を軽減できるマルチコアマイコンを提供すること。【解決手段】マルチコアマイコンは、第１コア１と第２コア２とを備えている。第１コア１は、複数の第１命令を含む第１タスクと、第１タスクとは異なる複数の第２命令を含む第２タスクとを含むオブジェクトを記憶しているオブジェクト記憶部を備えている。第２コア１は、第１コアと同様のオブジェクト記憶部を備えている。第１コアは、第１命令の実行中に第２タスクの実行が発生した場合、第１命令のかわりに第２命令を実行するとともに、第２タスクが発生したことで実行を中断した第１命令の実行を第２コアに指示する。第２コアは、第１命令の実行が指示されたと判定した場合、第１コアにかわって、指示された第１命令を実行する。【選択図】図５
2020197798.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１命令を含む第１タスクと、前記第１タスクとは異なる複数の第２命令を含む割込タスクとを含むオブジェクトを記憶しているオブジェクト記憶部（１２、２２）と、
前記オブジェクト記憶部に記憶された前記第１命令及び前記第２命令を実行可能なメインコア（１）と、
前記メインコアと同じ前記第１命令を実行可能な少なくとも一つの補助コア（２、３）と、を備え、
前記メインコアは、
前記第１命令を実行する第１実行部（Ｓ１３）と、
前記第１命令の実行中に前記割込タスクの実行が発生したか否かを判定する割込発生判定部（Ｓ２１）と、
前記割込タスクの実行が発生したと判定した場合に、前記第１命令のかわりに前記第２命令を実行する第２実行部（Ｓ２４）と、
前記割込タスクが発生したと判定した場合に、前記割込タスクが発生したことで実行を中断した前記第１命令の実行を前記補助コアに指示する指示部（Ｓ２２、Ｓ２３）と、を有し、
前記補助コアは、
前記第１命令の実行が指示されたか否かを判定する指示判定部（Ｓ３１）と、
前記第１命令の実行が指示されたと判定した場合に、前記メインコアにかわって、指示された前記第１命令を実行する第３実行部（Ｓ３２、Ｓ３６）と、を有するマルチコアマイコン。
【請求項２】
前記補助コアは、前記第１命令の実行が指示されたと判定した場合のみ、前記オブジェクト記憶部に記憶された前記第１命令を実行する請求項１に記載のマルチコアマイコン。
【請求項３】
前記メインコアと前記補助コアで共有する少なくとも一つの共有記憶部（４）をさらに備え、
前記メインコアは、複数の前記第１命令の実行順を示すものであり、実行する前記第１命令の前記オブジェクト記憶部におけるアドレスを指示し、前記第１命令が実行される毎に、指示する前記アドレスを更新する第１プログラムカウンタ（１３）を備えており、前記第１プログラムカウンタに従って前記アドレスに対応する前記第１命令を実行し、
前記補助コアは、前記第１プログラムカウンタと同じ第２プログラムカウンタ（２３）を備えており、前記第２プログラムカウンタに従って前記アドレスに対応する前記第１命令を実行可能であり、
前記指示部は、前記割込タスクの実行が発生したと判定した場合に、前記割込タスクが発生した際に前記第１プログラムカウンタで指示されている前記アドレスを前記共有記憶部に記憶することで、前記割込タスクが発生したことで実行を中断した前記第１命令の実行を前記補助コアに指示し、
前記第３実行部は、前記共有記憶部に記憶された前記アドレスを取得し、取得した前記アドレスから前記第２プログラムカウンタに従って前記第１命令を実行することで、前記メインコアにかわって前記第１命令を実行する請求項１又は２に記載のマルチコアマイコン。
【請求項４】
前記メインコアと、前記メインコアにかわって前記第１命令を実行する一つの前記補助コアとに対して、一つの前記共有記憶部が設けられている請求項３に記載のマルチコアマイコン。
【請求項５】
複数の前記補助コアを備えており、
前記メインコアと複数の前記補助コアに対して、一つの前記共有記憶部が設けられており、
前記共有記憶部は、前記第１プログラムカウンタで指示されている前記アドレスを記憶する記憶領域が常設されている請求項３に記載のマルチコアマイコン。
【請求項６】
前記オブジェクト記憶部は、前記オブジェクトとして、前記第１命令及び前記第２命令とは異なる第３命令を含む他割込タスクを記憶しており、
前記メインコアと複数の前記補助コアを備えており、
前記メインコアは、前記第２命令の実行中に前記他割込タスクの実行が発生したか否かを判定する第２割込発生判定部（Ｓ４１ａ）と、
前記他割込タスクの実行が発生したと判定した場合に、前記第２命令のかわりに前記第３命令を実行する第４実行部（Ｓ４４ａ）と、
前記他割込タスクが発生したと判定した場合に、前記他割込タスクが発生したことで実行を中断した前記第２命令の実行を、前記第１命令を実行していない前記補助コアに指示する第２指示部（Ｓ４２ａ、Ｓ４３ａ）と、を有し、
前記第１命令を実行中でない前記補助コアは、
前記第２命令の実行が指示されたか否かを判定する第２指示判定部（Ｓ３１ａ）と、
前記第２命令の実行が指示されたと判定した場合に、前記メインコアにかわって、指示された前記第２命令を実行する第５実行部（Ｓ３２ａ、Ｓ３６ａ）と、を有する請求項１乃至５のいずれか１項に記載のマルチコアマイコン。
【請求項７】
前記オブジェクト記憶部は、前記オブジェクトとして、前記第１命令及び前記第２命令とは異なる第３命令を含む他割込タスクを記憶しており、
前記メインコアと複数の前記補助コアを備えており、
前記メインコアは、前記第２命令の実行中に前記他割込タスクの実行が発生したか否かを判定する第２割込発生判定部（Ｓ４１ａ）と、
前記他割込タスクの実行が発生したと判定した場合に、前記第２命令のかわりに前記第３命令を実行する第４実行部（Ｓ４４ａ）と、
前記他割込タスクが発生したと判定した場合に、前記他割込タスクが発生したことで実行を中断した前記第２命令の実行を、前記第１命令を実行していない前記補助コアに指示する第２指示部（Ｓ４２ａ、Ｓ４３ａ）と、を有し、
複数の前記補助コアは、
前記第２命令の実行が可能であるか否かを判断する実行判断部（Ｓ５０）を備え、
複数の前記補助コアのうち、前記第２命令の実行が可能であると判断した前記補助コアは、
前記第２命令の実行が指示されたか否かを判定する第３指示判定部（Ｓ３１ｂ）と、
前記第２命令の実行が指示されたと判定した場合に、前記メインコアにかわって、指示された前記第２命令を実行する第６実行部（Ｓ３２ｂ、Ｓ３６ｂ）と、を有する請求項１乃至５のいずれか１項に記載のマルチコアマイコン。
【請求項８】
複数の第１命令を含む第１タスクと、前記第１タスクとは異なる複数の第２命令を含む割込タスクとを含むオブジェクトを記憶しているオブジェクト記憶部（１２、２２）と、
前記オブジェクト記憶部に記憶された前記第１命令と前記第２命令を実行可能なメインコア（１）と、
前記メインコアと同じ前記第２命令を実行可能な少なくとも一つの補助コア（２、３）と、を備え、
前記メインコアは、
前記第１命令を実行する第１実行部（Ｓ１３）と、
前記第１命令の実行中に前記割込タスクの実行が発生したか否かを判定する第３割込発生判定部（Ｓ６０）と、
前記割込タスクが発生したと判定した場合に、前記第２命令の実行を前記補助コアに指示する第３指示部（Ｓ６１、Ｓ６２）と、を有し、
前記補助コアは、
前記第２命令の実行が指示されたか否かを判定する第４指示判定部（Ｓ７１）と、
前記第２命令の実行が指示されたと判定した場合に、前記メインコアにかわって、指示された前記第２命令を実行する第７実行部（Ｓ７２、Ｓ７６）と、を有するマルチコアマイコン。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マルチコアマイコンに関する。
【背景技術】
【０００２】
従来、特許文献１に開示されているように、複数のコアを備えたマルチコアマイコンがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１７１５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、マイコンは、タスク実行中に割り込みが発生した場合、実行中のタスクを中断して、発生した割り込みのタスク（割込タスク）を実行することになる。この場合、割り込みが発生したコアは、割込タスクを実行し、且つ、割込タスクの実行が終了すると、割り込み発生前に実行していたタスクを実行することになる。よって、このコアは、中断されたタスクを先送りにするために処理負荷が増大するという問題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、メインコアの処理負荷を軽減できるマルチコアマイコンを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
複数の第１命令を含む第１タスクと、第１タスクとは異なる複数の第２命令を含む割込タスクとを含むオブジェクトを記憶しているオブジェクト記憶部（１２、２２）と、
オブジェクト記憶部に記憶された第１命令及び第２命令を実行可能なメインコア（１）と、
第１コアと同じ第１命令を実行可能な少なくとも一つの補助コア（２、３）と、を備え、
メインコアは、
第１命令を実行する第１実行部（Ｓ１３）と、
第１命令の実行中に割込タスクの実行が発生したか否かを判定する割込発生判定部（Ｓ２１）と、
割込タスクの実行が発生したと判定した場合に、第１命令のかわりに第２命令を実行する第２実行部（Ｓ２４）と、
割込タスクが発生したと判定した場合に、割込タスクが発生したことで実行を中断した第１命令の実行を補助コアに指示する指示部（Ｓ２２、Ｓ２３）と、を有し、
補助コアは、
第１命令の実行が指示されたか否かを判定する指示判定部（Ｓ３１）と、
第１命令の実行が指示されたと判定した場合に、メインコアにかわって、指示された第１命令を実行する第３実行部（Ｓ３２、Ｓ３６）と、を有することを特徴とする。
【０００７】
このように、本開示は、割込タスクの実行が発生すると、割込タスクが発生したことでメインコアが実行を中断した第１命令を、メインコアにかわって補助コアが実行する。このため、本開示は、メインコアが第２命令を実行している間、補助コアが第１命令を実行することができる。よって、本開示は、メインコアの処理負荷を軽減することができる。
【０００８】
また、上記目的を達成するさらなる特徴は、
複数の第１命令を含む第１タスクと、第１タスクとは異なる複数の第２命令を含む割込タスクとを含むオブジェクトを記憶しているオブジェクト記憶部（１２、２２）と、
オブジェクト記憶部に記憶された第１命令と第２命令を実行可能なメインコア（１）と、
第１コアと同じ第２命令を実行可能な少なくとも一つの補助コア（２、３）と、を備え、
メインコアは、
第１命令を実行する第１実行部（Ｓ１３）と、
第１命令の実行中に割込タスクの実行が発生したか否かを判定する第３割込発生判定部（Ｓ６０）と、
割込タスクが発生したと判定した場合に、第２命令の実行を補助コアに指示する第３指示部（Ｓ６１、Ｓ６２）と、を有し、
補助コアは、
第２命令の実行が指示されたか否かを判定する第４指示判定部（Ｓ７１）と、
第２命令の実行が指示されたと判定した場合に、メインコアにかわって、指示された第２命令を実行する第７実行部（Ｓ７２、Ｓ７６）と、を有するマルチコアマイコン。
【０００９】
このように、本開示は、割込タスクの実行が発生すると、メインコアにかわって補助コアが第２命令を実行する。このため、本開示は、メインコアが第１命令を実行している間、補助コアが第２命令を実行することができる。よって、本開示は、メインコアの処理負荷を軽減することができる。
【００１０】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態におけるマルチコアマイコンの概略構成を示すブロック図である。
【図２】第１実施形態における第１コアの実行処理を示すフローチャートである。
【図３】第１実施形態における第１コアの割り込み処理を示すフローチャートである。
【図４】第１実施形態における第２コアの実行処理を示すフローチャートである。
【図５】第１実施形態におけるマルチコアマイコンの処理動作を示すタイミングチャートである。
【図６】第２実施形態におけるマルチコアマイコンの概略構成を示すブロック図である。
【図７】第２実施形態における第１コアの第１割り込み処理を示すフローチャートである。
【図８】第２実施形態における第１コアの第２割り込み処理を示すフローチャートである。
【図９】第２実施形態における第３コアの実行処理を示すフローチャートである。
【図１０】第２実施形態におけるマルチコアマイコンの処理動作を示すイメージ図である。
【図１１】第３実施形態におけるマルチコアマイコンの概略構成を示すブロック図である。
【図１２】第３実施形態におけるマルチコアマイコンの処理動作を示すイメージ図である。
【図１３】第４実施形態における補助コアの実行処理を示すフローチャートである。
【図１４】第５実施形態における第１コアの割り込み処理を示すフローチャートである。
【図１５】第５実施形態における第２コアの実行処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１３】
（第１実施形態）
図１〜図５を用いて、第１実施形態のマルチコアマイコン１１０に関して説明する。マルチコアマイコン１１０は、例えば電子制御装置に搭載可能に構成されている。また、電子制御装置は、例えば、車両に搭載されて車載機器を制御する車載制御装置など採用することができる。
【００１４】
まず、図１を用いて、マルチコアマイコン１１０の構成を説明する。マルチコアマイコン１１０は、複数のコア１、２を備えたマイクロコンピュータである。マルチコアマイコン１１０は、複数のコア１、２に加えて、共有ＲＡＭ４を備えている。マルチコアマイコン１１０は、複数のコア１，２、共有ＲＡＭ４に加えて、共有ＲＡＭ４とは異なるＲＡＭ、ＲＯＭ、入出力回路などを備えていてもよい。この場合、共有ＲＡＭ４は、共有ＲＡＭ４とＲＯＭとＲＡＭを含むメモリ空間の一部とみなすことができる。
【００１５】
第１コア１は、第１演算部１１、第１オブジェクト記憶部１２、第１プログラムカウンタ１３などを備えている。第１コア１は、メインコアに相当する。なお、プログラムカウンタは、図面でＰＣとも記載する。
【００１６】
第１オブジェクト記憶部１２には、ソースコードをコンパイルして、第１演算部１１で使用できるようにしたオブジェクトが記憶されている。オブジェクトは、複数の第１命令を含む第１タスクと、第１タスクとは異なる複数の第２命令を含む第２タスクとを含む。本実施形態では、一例として、複数の第１命令として図５の命令Ｐ１１〜Ｐ１６を含む第１タスク、複数の第２命令として図５の命令Ｐ２１〜Ｐ２２を含む第２タスクを採用している。なお、第２タスクは、割込タスクに相当する。また、各タスクの命令数は、上記に限定されない。
【００１７】
第２タスクは、第１タスクよりも優先度が高い。よって、第１タスクは、低優先度タスクとも言える。一方、第２タスクは、高優先度タスクとも言える。
【００１８】
第１オブジェクト記憶部１２は、複数のアドレスで規定される記憶領域を有している。そして、第１オブジェクト記憶部１２は、各記憶領域に、命令Ｐ１１〜Ｐ１６及び命令Ｐ２１〜Ｐ２２が個別に格納されている。
【００１９】
第１プログラムカウンタ１３は、第１タスクにおける命令Ｐ１１〜Ｐ１６の実行順を示すものである。第１プログラムカウンタ１３は、第１演算部１１に実行させる第１命令のオブジェクト記憶部１２におけるアドレスを指示し、第１命令が実行される毎に、実行順に従って指示するアドレスを更新する。つまり、第１プログラムカウンタ１３は、第１演算部１１が実行する第１命令のアドレスを指示する。そして、第１プログラムカウンタ１３は、第１演算部１１が第１命令を実行すると、第１演算部１１が次に実行する別の第１命令のアドレスを指示する。
【００２０】
なお、第１演算部１１は、第１タスクだけでなく第２タスクも実行可能に構成されている。よって、第１コア１は、第２タスクにおける命令Ｐ２１〜Ｐ２２の実行順を示すプログラムカウンタも備えている。また、以下に示す第２演算部２１は、第２タスクだけでなく第１タスクも実行可能に構成されている。よって、第２コア２は、第１タスクにおける命令Ｐ１１〜Ｐ１６の実行順を示すプログラムカウンタを備えている。
【００２１】
第１演算部１１は、オブジェクト記憶部１２に記憶された第１命令を実行可能に構成されている。第１演算部１１は、第１プログラムカウンタ１３に従ってアドレスに対応する第１命令を実行する。つまり、第１演算部１１は、第１命令を実行することで、ＲＯＭに記憶されたデータなどを用いつつ演算を実行する。そして、第１演算部１１は、演算結果をＲＡＭやＲＯＭに書き込む。
【００２２】
第２コア２は、第２演算部２１、第２オブジェクト記憶部２２、第２プログラムカウンタ２３などを備えている。第２コア２は、補助コアに相当する。第２コア２は、第１コア１と同様の構成を有しており、第１コア１と同じ第１命令を実行可能に構成されている。つまり、第２コア２は、第１プログラムカウンタ１３と同じ第２プログラムカウンタ２３を備えており、第２プログラムカウンタ２３に従ってアドレスに対応する第１命令を実行可能である。
【００２３】
第２演算部２１、第２オブジェクト記憶部２２、第２プログラムカウンタ２３のそれぞれは、第１演算部１１、第１オブジェクト記憶部１２、第１プログラムカウンタ１３のそれぞれと同様に構成されている。しかしながら、第２演算部２１、第２オブジェクト記憶部２２、第２プログラムカウンタ２３は、第２コア２に設けられていることを示すために、名称と符号を変えている。
【００２４】
第２コア２は、第１コア１において第２タスクの割り込みが発生し、第１コア１が第２命令を実行する場合のみ、第１コア１にかわって第１命令を実行する。つまり、第２コア２は、第１コア１から第１命令の実行が指示されたと判定した場合のみ、第２オブジェクト記憶部２２に記憶された第１命令を実行する。第２コア２は、第１コア１が第１命令を実行している間は第１命令及び第２命令のいずれも実行しない。
【００２５】
このように、第２コア２は、第１コア１が第２タスクを実行することで、第１タスクを実行できない場合に、第１タスクを補助するためのコアである。よって、マルチコアマイコン１１０は、第２タスクの割り込みが発生していない期間はシングルコアのマイコンと同様に動作し、第２タスクの割り込みが発生した期間に限ってマルチコアのマイコンとして動作する。
【００２６】
共有ＲＡＭ４は、第１コア１と第２コア２で共有しているＲＡＭである。よって、共有ＲＡＭ４は、第１コア１と第２コア２の両方が使用することができる。共有ＲＡＭ４は、共有プログラムカウンタ４１を備えている。共有プログラムカウンタ４１は、プログラムカウンタ４１及び第２プログラムカウンタ２３と同様に構成されている。共有プログラムカウンタ４１は、例えば、命令Ｐ１１〜Ｐ１６の実行順を示すものである。共有ＲＡＭ４は、共有記憶部に相当する。
【００２７】
なお、共有ＲＡＭ４は、共有プログラムカウンタ４１を備えていなくてもよい。共有ＲＡＭ４は、第１コア１が第１命令のアドレスの書き込み及び読み込みができ、且つ、第２コア２がそのアドレスを読み込み及び更新できる構成であればよい。
【００２８】
ここで、図２〜図５を用いて、マルチコアマイコン１１０の動作に関して説明する。
【００２９】
まず、図２、図３、図５を用いて、第１コア１の動作に関して説明する。第１コア１は、例えば電源が供給されると、図２のフローチャートに示す処理をスタートするとともに、所定時間毎に図２のフローチャートに示す処理を実行する。ステップＳ１０では、割り込みが発生したか否かを判定する。第１コア１は、第２タスクの割り込みが発生したか否かを判定する。第１コア１は、第２タスクの割り込みが発生したと判定しなかった場合はステップＳ１１へ進み、第２タスクの割り込みが発生したと判定した場合はステップＳ１０を繰り返す。ステップＳ１１では、共有ＰＣのアドレスを読み込み済みであるか否かを判定する。第１コア１は、読み込み済みであると判定しなかった場合はステップＳ１２へ進み、読み込み済みであると判定した場合はステップＳ１３へ進む。後程説明するが、第１コア１は、ステップＳ２７で共有ＰＣのアドレスを読み込む。
【００３０】
ステップＳ１２では、第１プログラムカウンタ１３からアドレスを読み込む。第１演算部１１は、第１プログラムカウンタ１３が指示しているアドレスを読み込む。
【００３１】
ステップＳ１３では、読み込んだアドレスの命令を実行する（第１実行部）。第１演算部１１は、第１プログラムカウンタ１３もしくは共有ＰＣから読み込んだアドレスに対応する命令を、第１オブジェクト記憶部１２から読み込んで実行する。
【００３２】
ステップＳ１４では、第１プログラムカウンタ１３を更新する。第１プログラムカウンタ１３は、第１演算部１１が第１命令を実行すると、第１演算部１１に次に実行させる別の第１命令のアドレスに更新する。
【００３３】
例えば、第１コア１は、図５のタイミングｔ１に示すように、第１タスクの命令Ｐ１１、Ｐ１２を実行する。この場合、第１演算部１１は、第１プログラムカウンタ１３で指示された命令Ｐ１１のアドレスを読み込むと、そのアドレスの命令Ｐ１１をオブジェクト記憶部１２から読み込んで実行する。第１プログラムカウンタ１３は、第１演算部１１が命令Ｐ１１を実行すると、第１演算部１１に指示するアドレスを命令Ｐ１２のアドレスに更新する。そして、第１演算部１１は、第１プログラムカウンタ１３で指示された命令Ｐ１２のアドレスを読み込んで、そのアドレスの命令Ｐ１２をオブジェクト記憶部１２から読み込んで実行する。なお、本実施形態では、タイミングｔ２で割り込みが発生する例を採用する。
【００３４】
第１コア１は、例えば電源が供給されると、図３のフローチャートに示す処理をスタートするとともに、所定時間毎に図３のフローチャートに示す処理を実行する。ステップＳ２０では、第１タスクの実行開始か否かを判定する。第１コア１は、第１タスクの実行開始と判定した場合はステップＳ２１へ進み、第１タスクの実行開始と判定しなかった場合はステップＳ２０を繰り返す。
【００３５】
ステップＳ２１では、割り込みが発生したか否かを判定する（割込発生判定部）。第１コア１は、第２タスクの割り込みが発生したか否かを判定する。そして、第１コア１は、第２タスクの割り込みが発生したと判定した場合はステップＳ２２へ進み、第２タスクの割り込みが発生したと判定しなかった場合はステップＳ２１を繰り返す。このように、第１コア１は、第１命令の実行中に第２タスクの実行が発生したか否かを判定する。なお、第２タスクの割り込みの発生は、第２タスクの実行の発生と言い換えることもできる。
【００３６】
ステップＳ２２では、第１タスクのアドレスを共有ＲＡＭ４にセットする（指示部）。第１コア１は、第２タスクの実行が発生したと判定した場合、第２タスクが発生した際に第１プログラムカウンタ１３で指示されているアドレスを共有ＲＡＭ４の共有プログラムカウンタ４１に記憶する。ここで記憶するアドレスは、第２タスクが発生した際に第１プログラムカウンタ１３で指示されているアドレスであるため、第１コア１が次に実行する予定の第１命令のアドレスである。
【００３７】
これは、第１コア１が次に実行する予定だった第１命令を第２コア２に指示するため、すなわち、第１コア１が次に実行する予定だった第１命令を第２コア２に実行させるためである。また、第１コア１は、第１コア１が既に実行した第１命令を第２コア２が重複して実行することを避けるためとも言える。
【００３８】
さらに、マルチコアマイコン１１０は、第１コア１がステップＳ２２を実行することで、第２タスクが発生した際に第１プログラムカウンタ１３で指示されているアドレスを、第１コア１と第２コア２とで共有することができると言える。これによって、第２コア２は、第１コア１のかわりに第１タスクを実行することができる。
【００３９】
第１コア１は、図５のタイミングｔ３に示すように、第１コア１が次に実行する予定の第１命令のアドレスを共有プログラムカウンタ４１に書き込む。図５の例では、第１コア１は、命令Ｐ１３を共有プログラムカウンタ４１に記憶する。
【００４０】
ステップＳ２３では、第２コア２への実行代理を示すフラグをセットする（指示部）。第１コア１は、例えば共有ＲＡＭ４にフラグをセットする。このフラグは、第２コア２に対して実行の代理を指示するフラグである。このフラグは、例えば１の場合に第２コア２に対する実行代理の指示を示しており、０の場合に第２コア２への実行代理を指示しないことを示している。
【００４１】
第１コア１は、ステップＳ２３を実行することで、第２タスクの割り込みが発生したと判定した場合に、第２タスクの割り込みが発生したことで実行できなくなった第１命令の実行を第２コア２に指示する。第２タスクの割り込みが発生したことで実行できなくなった第１命令とは、割り込みで発生した第２タスクを実行しなければ、第１コア１が実行していた第１命令と言える。第２タスクの割り込みが発生したことで実行できなくなった第１命令とは、第２タスクの割り込みが発生したことで実行を中断した第１命令と言える。
【００４２】
また、第１コア１は、第１タスクと第２タスク（第１命令と第２命令）を同時に実行できない。このため、第２タスクの割り込みが発生したことで実行できなくなった第１命令とは、第１コア１が第２命令を実行するために、第１コア１が実行できなくなった第１命令と言える。よって、第２タスクが発生したことで実行できなくなった第１命令は、第２タスクの割り込みが発生していなければ、第１コア１が実行可能である。
【００４３】
第１コア１は、図５のタイミングｔ３に示すように、ステップＳ２２でアドレスを共有プログラムカウンタ４１に書き込むとともに、共有ＲＡＭ４に、第２コア２への実行代理を示すフラグをセットする。本開示では、ステップＳ２２の後に、ステップＳ２３を実行する例を採用している。しかしながら、本開示は、ステップＳ２３の後に、ステップＳ２２を実行してもよい。
【００４４】
なお、第１命令の実行を第２コア２に指示する方法は、上記に限定されない。第１コア１は、例えば、第２コア２への実行代理の指示を示すデータを共有ＲＡＭ４に記憶することで、第１命令の実行を第２コア２に指示してもよい。
【００４５】
さらに、第１コア１は、第２タスクの実行が発生したと判定した場合に、第２タスクが発生した際に第１プログラムカウンタ１３で指示されているアドレスを共有プログラムカウンタ４１に記憶する。これによって、第１コア１は、第２タスクが発生したことで実行を中断した第１命令の実行を第２コア２に指示してもよい。
【００４６】
また、第１コア１は、第１コア１が次に実行する予定だった第１命令を第２コア２に実行させるために、既に行った第１命令の実行結果（データ）を共有ＲＡＭ４に格納しておく。つまり、第１コア１は、第２コア２が適切に第１命令を実行できるように、既に行った第１命令の実行結果（データ）を共有ＲＡＭ４に格納しておく。
【００４７】
ステップＳ２４では、第２タスクを実行する（第２実行部）。第１コア１は、第２タスクにおける第２命令の実行順を示すプログラムカウンタに従って、第２タスクの第２命令を実行する。このように、第１コア１は、第２タスクの割り込みが発生したと判定した場合に、第１命令のかわりに第２命令を実行する。第１コア１は、図５のタイミングｔ５に示すように、第２タスクの命令Ｐ２１、Ｐ２２を実行する。なお、第２タスクの実行方法は、第１タスクの実行方法と同様である。
【００４８】
ステップＳ２５では、第２タスクが終了したか否かを判定する。第１コア１は、第２命令の実行順を示すプログラムカウンタで指示されたアドレスなどに基づいて、第２タスクが終了したか否かを判定する。そして、第１コア１は、第２タスクが終了したと判定した場合はステップＳ２６へ進み、第２タスクが終了したと判定しなかった場合はステップＳ２４へ戻る。
【００４９】
ステップＳ２６では、共有ＲＡＭ４の共有プログラムカウンタ４１の更新を停止する。後程説明するが、共有プログラムカウンタ４１で指示されるアドレスは、第２コア２によって更新される。よって、第１コア１は、第２コア２が共有プログラムカウンタ４１を更新することを停止する。
【００５０】
ステップＳ２７では、共有ＲＡＭ４の共有プログラムカウンタ４１のアドレスを読み込む。第１コア１は、第２コア２が実行していた第１タスクの続きを実行するために、共有ＲＡＭ１４のアドレスを読み込む。後程説明するが、第２コア２は、第１コア１が第２タスクを実行している間に、第１コア１にかわって第１タスクを実行する。そして、第１コア１は、第２タスクの実行が終了すると、再度、第１タスクを実行する。その際に、第１コア１は、第２コア２が実行した第１タスクの命令を重複して実行しないようにするために、共有ＲＡＭ４の共有プログラムカウンタ４１のアドレスを読み込む。そして、第１コア１は、図３のフローチャートを終了する。第１コア１は、図３のフローチャートを終了すると、図２に示すフローチャートの実行を再開することになる。
【００５１】
なお、第１コア１は、図５のタイミングｔ６に示すように、ステップＳ２６、Ｓ２７を実行する。そして、第１コア１は、図５のタイミングｔ７に示すように、ステップＳ１３で、第１タスクの命令Ｐ１５、Ｐ１６を実行する。本実施形態では、第２コア２が第１タスクの命令Ｐ１３、Ｐ１４を実行する例を採用している。
【００５２】
次に、図４、図５を用いて、第２コア２の動作に関して説明する。第２コア２は、例えば電源が供給されると、図４のフローチャートに示す処理を実行するとともに、所定時間毎に図４のフローチャートに示す処理を実行する。
【００５３】
ステップＳ３０では、共有ＲＡＭ４を確認する。第２コア２は、第１コア１にかわって第１タスクを実行するか否かを判定するため、及び、第１タスクを実行する際のアドレスを確認するために共有ＲＡＭ４を確認する。
【００５４】
ステップＳ３１では、実行代理を示すフラグの有無を確認する（指示判定部）。第２コア２は、共有ＲＡＭ４に、第２コア２への実行代理を示す値がセットされているか否かを判定する。そして、第２コア２は、セットされていると判定した場合、すなわち、第１命令の実行が指示されたと判定した場合はステップＳ３２へ進む。また、第２コア２は、セットされていないと判定した場合、すなわち、第１命令の実行が指示されたと判定しなかった場合はステップＳ３０を繰り返し実行する。このように、第２コア２は、第１コア１から第１命令の実行が指示されたか否かを判定する。
【００５５】
ステップＳ３２では、共有ＲＡＭ４にセットされたアドレスの命令を実行する（第３実行部）。第２コア２は、共有ＲＡＭ４の共有プログラムカウンタ４１にセットされたアドレスを読み込む。そして、第２コア２は、そのアドレスの命令を、第２オブジェクト記憶部２２から読み込んで実行する。
【００５６】
つまり、第２コア２は、第１コア１とは異なり、第２プログラムカウンタ２３の最初のアドレスで示される命令から実行するものではない。第２コア２は、共有プログラムカウンタ４１から読み込んだアドレスまでジャンプして、そのアドレスの命令を第２オブジェクト記憶部２２から読み込んで実行する。言い換えると、第２コア２は、共有プログラムカウンタ４１から読み込んだアドレスよりも前のアドレスの命令は実行せずに、共有プログラムカウンタ４１から読み込んだアドレスの命令から実行を開始する。
【００５７】
このように、第２コア２は、第２コア２への実行代理を示す値がセットされていると判定した場合に、第１コア１にかわって、指示された第１命令を実行する。なお、共有プログラムカウンタ４１にセットされているアドレスは、第１コア１がステップＳ２２でセットしたアドレスである。また、第２コア２は、第１コア１にかわって第１命令を実行する場合、第１コア１が既に行った第１命令の実行結果を用いて第１命令を実行する。この実行結果は、共有ＲＡＭ４に格納されている。
【００５８】
ステップＳ３３では、第２プログラムカウンタ２３を更新する。第２コア２は、ステップＳ１４と同様に、第２プログラムカウンタ２３を更新する。ステップＳ３４では、共有ＲＡＭ４のアドレスを更新する。第２コア２は、共有プログラムカウンタ４１を更新する。つまり、第２コア２は、共有プログラムカウンタ４１にセットされているアドレスを、ステップＳ３３で更新した第２プログラムカウンタ２３のアドレスに変更する。言い換えると、第２コア２は、ステップＳ３３で更新した第２プログラムカウンタ２３のアドレスを、共有プログラムカウンタ４１にセットする。ステップＳ３４でセットするアドレスは、第１コア１がステップＳ２７で読み込むアドレスとなる。
【００５９】
ステップＳ３５では、第２プログラムカウンタ２３からアドレスを読み込む。ステップＳ３６では、読み込んでアドレスの命令を実行する。第２コア２は、ステップＳ１２、Ｓ１３と同様に、第１命令を実行する。
【００６０】
このように、第２コア２は、共有ＲＡＭ４に記憶されたアドレスを取得し、取得したアドレスから第２プログラムカウンタ２３に従って第１命令を実行することで、第１コア１にかわって第１命令を実行する。なお、第２コア２は、図５のタイミングｔ４に示すように、共有プログラムカウンタ４１にセットされたアドレスを読み込む。そして、第２コア２は、図５のタイミングｔ５に示すように、第１タスクの命令Ｐ１３、Ｐ１４を実行する。
【００６１】
ステップＳ３７では、共有ＲＡＭ４の更新が停止されているか否かを判定する。第２コア２は、共有ＲＡＭ４の更新が停止されているか否かを判定することで、第１コア１による第２タスクの実行が終了しているか否かを判定する。第２コア２は、共有ＲＡＭ４の更新が停止されていると判定した場合、第１コア１による第２タスクの実行が終了しているとみなして、図４のフローチャートを終了する。また、第２コア２は、共有ＲＡＭ４の更新が停止されていると判定しなかった場合、第１コア１による第２タスクの実行が終了していないとみなして、ステップＳ３３へ戻る。
【００６２】
これは、第２コア２が第１タスクの実行を継続するか否かを判定するためである。第２コア２は、第１コア１による第２タスクの実行が終了するまで、第１タスクの実行を継続する。
【００６３】
このように、マルチコアマイコン１１０は、第２タスクの実行が発生すると、第２タスクが発生したことで第１コア１が実行を中断した第１命令を、第１コア１にかわって第２コア２が実行する。このため、マルチコアマイコン１１０は、第１コア１が第２命令を実行している間、第２コア２が第１命令を実行することができる。よって、マルチコアマイコン１１０は、第１コア１の処理負荷を軽減することができる。また、マルチコアマイコン１１０は、第２コア２を備えていないマイコンよりも、処理時間を短縮することができる。
【００６４】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２〜第５実施形態に関して説明する。上記実施形態及び第２〜第５実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００６５】
（第２実施形態）
図６〜図１０を用いて、第２実施形態のマルチコアマイコン１２０に関して説明する。マルチコアマイコン１２０は、主に、第３コア３を備えている点、及び、二つの共有ＲＡＭ５、６を備えている点がマルチコアマイコン１１０と異なる。本実施形態では、上記実施形態と異なる点を中心に説明する。
【００６６】
図６に示すように、第３コア３は、第３演算部３１、第３オブジェクト記憶部３２、第３プログラムカウンタ３３などを備えている。第３コア３は、第１コア１と同様の構成を有しており、第１コア１と同じ第１命令を実行可能に構成されている。つまり、第３コア３は、第１プログラムカウンタ１３と同じ第３プログラムカウンタ３３を備えており、第３プログラムカウンタ３３に従ってアドレスに対応する第１命令を実行可能である。
【００６７】
第３演算部３１、第３オブジェクト記憶部３２、第３プログラムカウンタ３３のそれぞれは、第１演算部１１、第１オブジェクト記憶部１２、第１プログラムカウンタ１３のそれぞれと同様に構成されている。しかしながら、第３演算部３１、第３オブジェクト記憶部３２、第３プログラムカウンタ３３は、第３コア３に設けられていることを示すために、名称と符号を変えている。
【００６８】
第３コア３は、第２コア２と同様、第１コア１にかわって命令を実行するため補助コアである。よって、マルチコアマイコン１２０は、二つの補助コアを備えている。しかしながら、本実施形態では、第１コア１にかわって第２命令を実行する第３コア３を採用している。
【００６９】
第１共有ＲＡＭ５は、共有ＲＡＭ４と同様の構成をなしている。よって、第１共有プログラムカウンタ５１は、共有プログラムカウンタ４１と同様の構成をなしている。さらに、第２共有ＲＡＭ６は、共有ＲＡＭ４と同様の構成をなしている。よって、第２共有プログラムカウンタ６１は、共有プログラムカウンタ４１と同様の構成をなしている。
【００７０】
第１共有ＲＡＭ５は、第１コア１と第２コア２とで共有可能に構成されている。一方、第２共有ＲＡＭ６は、第１コア１と第３コア３とで共有可能に構成されている。よって、マルチコアマイコン１２０は、第１コア１と第２コア２に対して一つの第１共有ＲＡＭ５設けられており、第１コア１と第３コア３に対して一つの第２共有ＲＡＭ６が設けられている。このように、マルチコアマイコン１２０は、補助コア毎に共有ＲＡＭ５、６を備えている。
【００７１】
第１オブジェクト記憶部１２には、オブジェクトとして、第１命令及び第２命令とは異なる第３命令を含む第３タスクが記憶されている。第３タスクは、他割込タスクに相当する。つまり、第１オブジェクト記憶部１２には、第１タスクと、第２タスク及び第３タスクの二つの割込タスクとが記憶されている。第２オブジェクト記憶部２２及び第３オブジェクト記憶部３２に関しても同様である。よって、第１コア１は、第１命令と第２命令に加えて、第３命令を実行可能に構成されている。
【００７２】
ここで、図７〜図１０を用いて、マルチコアマイコン１２０の動作に関して説明する。
【００７３】
まず、図７、図８、図１０を用いて、第１コア１の動作に関して説明する。第１コア１は、例えば電源が供給されると、図７のフローチャートに示す処理をスタートするとともに、所定時間毎に図７のフローチャートに示す処理を実行する。
【００７４】
ステップＳ２０ａ〜Ｓ２７ａは、ステップＳ２０〜Ｓ２７に相当する。本実施形態では、第１コア１と第２コア２とで共有するＲＡＭが第１実施形態と異なる。このため、図７では、名称とステップ番号を変更している。また、ステップＳ２１ａにおける第１割り込みとは、第２タスクの割り込みである。しかしながら、各ステップの処理や判定は、図３と同様である。よって、ステップＳ２０ａ〜Ｓ２７ａに関しては、図３を参照することができる。
【００７５】
本実施形態では、図１０に示すように、第１コア１が第１タスクの命令Ｐ１２を実行している際に、第１割り込みが発生した例を採用している。このため、第１コア１は、第１割り込みが発生したことで、第２タスクの命令Ｐ２１の実行を開始する。そして、第２コア２は、上記実施形態と同様に動作する（図４）。よって、第２コア２は、第１コア１にかわって、第１タスクの命令Ｐ１３の実行を開始する。
【００７６】
そして、第１コア１は、第１割り込みが発生している際に、図８のフローチャートに示す処理をスタートする。
【００７７】
ステップＳ４１ａ〜Ｓ４７ａは、ステップＳ２１〜Ｓ２７に相当する。本実施形態では、第１コア１と第３コア３とで第２共有ＲＡＭ６を共有する点が第１実施形態と異なる。このため、図８では、名称とステップ番号を変更している。また、ステップＳ４１ａにおける第２割り込みとは、第３タスクの割り込みである。しかしながら、各ステップの処理や判定は、図３と同様である。よって、ステップＳ４１ａ〜Ｓ４７ａに関しては、図３を参照することができる。
【００７８】
なお、ステップＳ４１ａは、第２割込発生判定部に相当する。ステップＳ４４ａは、第４実行部に相当する。そして、ステップＳ４２ａ、Ｓ４３ａは、第２指示部に相当する。
【００７９】
また、第３コア３は、例えば電源が供給されると、図９のフローチャートに示す処理を実行するとともに、所定時間毎に図９のフローチャートに示す処理を実行する。
【００８０】
ステップＳ３０ａ〜Ｓ３７ａは、ステップＳ３０〜Ｓ３７に相当する。図９では、図８のフローチャートの説明に記載した理由によって、名称とステップ番号を変更している。しかしながら、各ステップの処理や判定は、図４と同様である。よって、ステップＳ３０ａ〜Ｓ３７ａに関しては、図４を参照することができる。
【００８１】
なお、ステップＳＳ３１ａは、第２指示判定部に相当する。そして、ステップＳ３２ａは、第５実行部に相当する。
【００８２】
本実施形態では、図１０に示すように、第１コア１が第２タスクの命令Ｐ２１を実行している際に、第２割り込みが発生した例を採用している。このため、第１コア１は、第２割り込みが発生したことで、第３タスクの命令Ｐ３１の実行を開始する。そして、第３コア３は、第１コア１にかわって、第２タスクの命令Ｐ２３の実行を開始する。
【００８３】
マルチコアマイコン１２０は、マルチコアマイコン１１０と同様の効果を奏することができる。マルチコアマイコン１２０は、第１コア１が第２タスクを実行している際に、第３タスクの実行が発生したとしても、第３コア３が第２タスクを実行する。このため、マルチコアマイコン１２０は、第３タスクの実行が発生したとしても、マルチコアマイコン１１０と同様の効果を奏することができる。
【００８４】
また、第１コア１は、図１０のＳＴ１に示すように、第１タスクの命令Ｐ１３、Ｐ１４の処理負荷に相当する分だけ、処理負荷が軽減される。同様に、第１コア１は、図１０のＳＴ２に示すように、第２タスクの命令Ｐ２３、Ｐ２４の処理負荷に相当する分だけ、処理負荷が軽減される。このように、図１０のＳＴ１、ＳＴ２は、第１コア１において軽減した処理負荷のイメージを表している。
【００８５】
なお、本開示は、割込タスクの分だけ補助タスクを備えていてもよい。この点は、他の実施形態でも同様である。
【００８６】
（第３実施形態）
図１１、図１２を用いて、第３実施形態のマルチコアマイコン１３０に関して説明する。マルチコアマイコン１３０は、主に、一つの共有ＲＡＭ７を備えている点がマルチコアマイコン１２０と異なる。本実施形態では、第２実施形態と異なる点を中心に説明する。
【００８７】
共有ＲＡＭ７は、第１共有プログラムカウンタ７１と、第２共有プログラムカウンタ７２とが常設されている。第１共有プログラムカウンタ７１は、第１コア１と第２コア２とでアドレスなどを共有するために用いられる。第２共有プログラムカウンタ７２は、第１コア１と第３コア３とでアドレスなどを共有するために用いられる。マルチコアマイコン１３０の動作は、マルチコアマイコン１２０と同様である。
【００８８】
本実施形態では、図１２に示すように、第１コア１が第１タスクの命令Ｐ１２を実行している際に、第１割り込みが発生した例を採用している。このため、第１コア１は、第１割り込みが発生したことで、第１共有プログラムカウンタ７１にアドレスをセットするとともに、第２タスクの命令Ｐ２１の実行を開始する。そして、第２コア２は、上記実施形態と同様に動作する（図４）。よって、第２コア２は、第１コア１にかわって、第１タスクの命令Ｐ１３の実行を開始する。
【００８９】
また、本実施形態では、第１コア１が第２タスクの命令Ｐ２１を実行している際に、第２割り込みが発生した例を採用している。このため、第１コア１は、第２割り込みが発生したことで、第２共有プログラムカウンタ７２にアドレスをセットするとともに、第３タスクの命令Ｐ３１の実行を開始する。そして、第３コア３は、第１コア１にかわって、第２タスクの命令Ｐ２３の実行を開始する。
【００９０】
マルチコアマイコン１３０は、マルチコアマイコン１２０と同様の効果を奏することができる。なお、本開示は、割込タスクの分だけ補助タスクを備えていてもよい。
【００９１】
（第４実施形態）
図１３を用いて、第４実施形態のマルチコアマイコンに関して説明する。本実施形態のマルチコアマイコンは、主に、補助コアの動作がマルチコアマイコン１２０と異なる。本実施形態では、便宜的に、第２実施形態と同様の符号を用いる。第１コア１は、第２実施形態と同様である。よって、第１コア１の動作は、図８を参照することができる。本実施形態では、第２実施形態と異なる点を中心に説明する。
【００９２】
図１３を用いて、第２コア２、第３コア３の動作に関して説明する。第２コア２及び第３コア３は、例えば電源が供給されると、図１３のフローチャートに示す処理を実行するとともに、所定時間毎に図１３のフローチャートに示す処理を実行する。ここでは、一例として、第２コア２を用いて説明する。
【００９３】
ステップＳ５０では、命令の実行が可能であるか否かを判定する（実行判断部）。第２コア２は、第１コア１のかわりに命令の実行が可能であるか否かを判定する。第２コア２は、既に第１コア１のかわりに命令を実行しているか否かに基づいて、第１コア１のかわりに命令の実行が可能であるか否かを判定する。第２コア２は、既に第１コア１のかわりに命令を実行している場合は、命令の実行が可能でないと判定して図１３のフローチャートを終了する。また、第２コア２は、第１コア１のかわりに命令を実行していない場合は、命令の実行が可能と判定してステップＳ３０ｂに進む。
【００９４】
よって、ステップＳ３０ｂ以降は、第１コア１のかわりに命令の実行が可能であると判定した補助コアのみが実行する。また、ステップＳ３０ｂ〜Ｓ３７ｂは、ステップＳ３０ａ〜３７ａと同様である。よって、ステップＳ３０ｂ以降の補助コアの動作は、図９を参照することができる。
【００９５】
なお、図１３における対応する共有ＲＡＭは、第１コア１と、第１コア１のかわりに命令の実行が可能であると判定した補助コアとが共有する共有ＲＡＭである。また、対応するプログラムカウンタは、第１コア１のかわりに命令の実行が可能であると判定した補助コアのプログラムカウンタである。ステップＳ３１ｂは、第３指示判定部に相当する。ステップＳ３２ｂ、Ｓ３６ｂは、第６実行部に相当する。
【００９６】
本実施形態のマルチコアマイコンは、マルチコアマイコン１２０と同様の効果を奏することができる。また、本実施形態のマルチコアマイコンは、命令の実行が可能であるか否かを補助コアが判断する。このため、本実施形態のマルチコアマイコンは、第１コア１のかわりに命令の実行が補助コアを柔軟に変更することができる。
【００９７】
（第５実施形態）
図１４、図１５を用いて、第５実施形態のマルチコアマイコンに関して説明する。本実施形態のマルチコアマイコンは、主に、補助コアが実行するタスクがマルチコアマイコン１００と異なる。本実施形態では、便宜的に、第１実施形態と同様の符号を用いる。本実施形態では、第１実施形態と異なる点を中心に説明する。
【００９８】
第１コア１は、例えば電源が供給されると、図１４のフローチャートに示す処理をスタートするとともに、所定時間毎に図１４のフローチャートに示す処理を実行する。
【００９９】
ステップＳ６０では、割り込みが発生したか否かを判定する（第３割込発生判定部）。ステップＳ６０は、ステップＳ２１と同様である。
【０１００】
ステップＳ６１では、第２タスクのアドレスを共有ＲＡＭ４にセットする（第３指示部）。第１コア１は、ステップＳ２２とは異なり、第２タスクのアドレスを共有ＲＡＭ４にセットする。これは、第１タスクを第２コア２に代理で実行させるのではなく、第２タスクを第２コア２に代理で実行させるためである。
【０１０１】
ステップＳ６２（第３指示部）は、ステップＳ２３と同様である。また、ステップＳ６３は、ステップＳ２５と同様である。そして、ステップＳ６４では、共有ＲＡＭ４をリセットする。
【０１０２】
第２コア２は、例えば電源が供給されると、図１５のフローチャートに示す処理を実行するとともに、所定時間毎に図１５のフローチャートに示す処理を実行する。ステップＳ７０〜Ｓ７７は、ステップＳ３０〜Ｓ３７と同様である。しかしながら、共有ＲＡＭ４にセットされているアドレスは、第２タスクのアドレスである。よって、第２コア２は、第２タスクを実行する。なお、ステップＳＳ７１は、第４指示判定部に相当する。ステップＳ７２、Ｓ７６は、第７実行部に相当する。
【０１０３】
このように、第１コア１は、第２タスクの割り込みが発生した場合、第２タスクのかわりに第１タスクを実行する。一方、第２コア２は、第１コア１のかわりに第２タスクを実行する。つまり、第１コア１は、図５のタイミングｔ５で命令Ｐ１３、Ｐ１４を実行する。そして、第２コア２は、図５のタイミングｔ５で命令Ｐ２１、Ｐ２２を実行する。
【０１０４】
本実施形態のマルチコアマイコンは、第２タスクの実行が発生すると、第１コア１にかわって第２コア２が第２命令を実行する。このため、本実施形態のマルチコアマイコンは、第１コア１が第１命令を実行している間、第２コア２が第２命令を実行することができる。よって、本実施形態のマルチコアマイコンは、第１コア１の処理負荷を軽減することができる。なお、本実施形態のマルチコアマイコンは、第２実施形態や第３実施形態のように、複数の補助コアを備えていてもよい。
【符号の説明】
【０１０５】
１…第１コア、１１…第１演算部、１２…第１オブジェクト記憶部、１３…第１プログラムカウンタ、２…第２コア、２１…第２演算部、２２…第２オブジェクト記憶部、２３…第２プログラムカウンタ、３…第３コア、３１…第３演算部、３２…第３オブジェクト記憶部、３３…第３プログラムカウンタ、４，７…共有ＲＡＭ、４１，５１，７１…第１共有プログラムカウンタ、５…第１共有ＲＡＭ、６…第２共有ＲＡＭ、６１，７２…第２共有プログラムカウンタ、１１０〜１３０…マルチコアマイコン
【図１】
2020197798.tif 000003
【図２】
2020197798.tif 000004
【図３】
2020197798.tif 000005
【図４】
2020197798.tif 000006
【図５】
2020197798.tif 000007
【図６】
2020197798.tif 000008
【図７】
2020197798.tif 000009
【図８】
2020197798.tif 000010
【図９】
2020197798.tif 000011
【図１０】
2020197798.tif 000012
【図１１】
2020197798.tif 000013
【図１２】
2020197798.tif 000014
【図１３】
2020197798.tif 000015
【図１４】
2020197798.tif 000016
【図１５】
2020197798.tif 000017