(57)【要約】【課題】複数の演算部が同期を伴う並列処理を行うように構成された演算装置において、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制できる技術を提供する。【解決手段】演算装置は、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成される。演算装置は、Ｓ２３０，Ｓ２６０で、他コアが、他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度情報に従って、自コア或いは他コアが実施する処理をスリープさせ、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成される。【選択図】図７
2020135524.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算部（１０）を備え、前記複数の演算部が同期を伴う並列処理を行うように構成された演算装置（１Ａ〜１Ｅ）であって、
前記複数の演算部のうちの１つを自コア、前記自コアを除く他の演算部のうちの前記自コアと同期ポイントで同期する処理を実施する他の演算部を他コアとして、
前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、前記他コアが、前記同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成された同期判定部（Ｓ１４０）と、
前記他コアが、前記他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度情報に従って、前記自コア或いは前記他コアが実施する処理をスリープさせ、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成されたスリープ指令部（Ｓ２３０，Ｓ２６０，Ｓ４７０，Ｓ４９０）と、
を備える演算装置。
【請求項２】
請求項１に記載の演算装置であって、
任意の処理によるデータを格納可能に構成された共有リソースをさらに備え、
前記スリープ指令部は、前記自コア或いは前記他コアが実施する処理をスリープさせる際に、少なくとも、前記自コア及び前記他コアを特定するためのコア特定情報と、前記同期ポイントを特定するための同期特定情報とを含む同期情報を前記共有リソースに格納する
ように構成された演算装置。
【請求項３】
請求項１又は請求項２に記載の演算装置であって、
データを記録可能に構成された同期判定用領域（１３Ａ）と、
データを記録可能に構成された１又は複数の退避用領域（１３Ｂ）と、
をさらに備え、
前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、少なくとも、前記自コア及び前記他コアを特定するためのコア特定情報と、前記同期ポイントを特定するための同期特定情報とを含む同期情報を、前記同期判定用領域に格納するように構成された同期格納部（Ｓ１２０）と、
前記同期格納部が前記同期情報を前記同期判定用領域に格納する際に、既に前記同期判定用領域内に他の同期情報が存在する場合に、前記同期格納部が前記同期情報を前記同期判定用領域に格納する前に、前記同期判定用領域内の他の同期情報を前記退避用領域に移動させる移動格納部（Ｓ２２０）と、
をさらに備え、
前記同期判定部は、前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、前記他コアが、前記同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも前記同期判定用領域におけるデータの有無によって判定する
ように構成された演算装置。
【請求項４】
請求項３に記載の演算装置であって、
前記退避用領域は、複数備えられ、
前記移動格納部は、前記他の同期情報を前記退避用領域にＬＩＦＯ方式で格納する
ように構成された演算装置。
【請求項５】
請求項１から請求項３までのいずれか１項に記載の演算装置であって、
前記優先度情報には、複数の同期ポイント毎に、当該同期ポイントの優先度と、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報と、が含まれており、
前記スリープ指令部は、前記優先度情報に、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報が存在する場合、当該同期ポイントの優先度に拘わらず、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報に従って、前記自コア或いは前記他コアが実施する処理をスリープさせる
ように構成された演算装置。
【請求項６】
請求項１から請求項５までのいずれか１項に記載の演算装置であって、
前記複数の演算部から、任意の処理によるデータを格納可能に構成された共有リソースへの同時アクセスが生じる場合、予め設定された優先順位に従って処理を実施する
ように構成された演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数の演算部が同期を伴う並列処理を行うように構成された演算装置に関する。
【背景技術】
【０００２】
上記の演算装置においては、複数の演算部が互いに他の演算部による処理の終了を待機することで処理が進まなくなるデッドロックを抑制することが求められる。例えば、下記特許文献１には、複数の演算部が、同期相手の状況が更新されてから自身の状況を更新する構成であり、互いに同期相手の状況の更新を待機する場合にデッドロックする。このため、各演算部は、所定時間待機しても同期相手の状況が変化しない場合には、自身の状況を更新するように処理を変更することで、デッドロックを解消するという構成を採用している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２４４５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年では、マルチコア等の多数の演算部が同期を伴う並列処理を行う構成が提案されており、このような構成では、複数の同期ポイントが設定されることがある。同期ポイントとは、同期を伴う複数の処理結果が統合されるポイントを表す。
【０００５】
ここで、上記特許文献１の技術において、複数の演算部を仮に演算部Ａ及び演算部Ｂとする。すると、演算部Ａ及び演算部Ｂは、共通の１つの同期ポイントで同期することが前提になっているため、上記のように、演算部Ｂでの処理が進むように演算部Ａが処理を変更すればデッドロックは解消する。
【０００６】
しかしながら、発明者の詳細な検討の結果、上記特許文献１の技術では、複数の同期ポイントが存在する場合にデッドロックが解消できないという課題が見出された。例えば、演算部Ａが同期ポイントＡで同期し、演算部Ｂが同期ポイントＡとは異なる同期ポイントＢで同期した後、同期ポイントＡで同期することを想定する。この場合、演算部Ａが処理を変更したとしても、同期ポイントＢで同期する演算部Ｂの処理には影響がないため、デッドロックを解消することができない。
【０００７】
本開示の１つの局面は、複数の演算部が同期を伴う並列処理を行うように構成された演算装置において、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制できる技術を提供することにある。
【課題を解決するための手段】
【０００８】
本開示の一態様は、複数の演算部（１０）を備え、複数の演算部が同期を伴う並列処理を行うように構成された演算装置（１Ａ〜１Ｅ）である。複数の演算部のうちの１つを自コア、自コアを除く他の演算部のうちの自コアと同期ポイントで同期する処理を実施する他の演算部を他コアとする。なお、同期ポイントとは、同期を伴う複数の演算部による処理結果が統合されるポイントを表す。
【０００９】
演算装置は、同期判定部（Ｓ１４０）と、スリープ指令部（Ｓ２３０，Ｓ２６０，Ｓ４７０，Ｓ４９０）と、を備える。
同期判定部は、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成される。
【００１０】
スリープ指令部は、他コアが、他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度情報に従って、自コア或いは他コアが実施する処理をスリープさせる。また、スリープ指令部は、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成される。
【００１１】
このような構成によれば、自コアによる処理が同期ポイントに到達し、同期待ち状態に遷移しようとする際に、他コアが他の同期ポイントで同期待ち状態であれば、自コア又は他コアする処理をスリープさせる。そして、スリープさせる自コア或いは他コアに他の処理を実施させることで、自コア及び他コアが同期待ち状態にならないようにする。よって、複数の演算部が同期を伴う並列処理を行うように構成された演算装置において、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態のマイコンの構成を示すブロック図である。
【図２】同期を説明するためのラダーチャートである。
【図３】デッドロックを説明するためのラダーチャートである。
【図４】デッドロックを説明するためのタイミングチャートである。
【図５】第１実施形態の同期情報テーブルを示す説明図である。
【図６】第１実施形態の同期処理のフローチャート（その１）である。
【図７】第１実施形態の同期処理のフローチャート（その２）である。
【図８】第１実施形態のマイコンの作動例を示すタイミングチャートである。
【図９】第２実施形態の同期情報テーブルを示す説明図である。
【図１０】第２実施形態の同期処理のフローチャートである。
【図１１】第３実施形態のマイコンの構成を示すブロック図である。
【図１２】第３実施形態の同期情報テーブルを示す説明図である。
【図１３】第３実施形態の同期処理のフローチャートである。
【図１４】第４実施形態の同期情報テーブルを示す説明図である。
【図１５】第４実施形態の同期処理のフローチャートである。
【図１６】共有リソースへのアクセス調停のための構成を示すブロック図である。
【図１７】アクセス優先度が設定されたアクセステーブルを示す説明図である。
【図１８】調停処理のフローチャートである。
【図１９】ネスト時の退避用ＢＵＦＦの利用例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．実施形態の構成と本開示の構成と関係］
実施形態でのマイコン１Ａ〜１Ｄは本開示での演算装置に相当し、実施形態でのＣＰＵ１０は本開示での演算部に相当する。また、実施形態での同期記録領域１３Ａは本開示での同期判定用領域に相当し、実施形態での退避用同期情報退避用ＢＵＦＦ１３Ｂは本開示での退避用領域に相当する。
【００１４】
また、上記実施形態において各ＣＰＵ１０が実行する処理のうちのＳ１２０の処理は本開示での同期格納部に相当し、実施形態でのＳ１４０の処理は本開示での同期判定部に相当する。また、実施形態でのＳ２２０の処理は本開示での移動格納部に相当し、実施形態でのＳ２３０，Ｓ２６０，Ｓ４７０，Ｓ４９０の処理は本開示でのスリープ指令部に相当する。
【００１５】
また、上記実施形態での同期情報テーブル１２Ａ〜１２Ｄ等に含まれる「同期ポイントナンバ」は、本開示での「同期ポイントを特定するための同期特定情報」に相当する。また、「各ＣＰＵ１０での処理ＩＤ」は、本開示での、「自コア及び他コアを特定するためのコア特定情報」に相当する。
【００１６】
［２．第１実施形態］
［２−１．構成］
本実施形態のマイコン１Ａは、複数の演算部としての複数のＣＰＵ１０Ａ，１０Ｂ，１０Ｘ（以下、ＣＰＵ１０とも表記する。）を備え、複数のＣＰＵ１０が同期を伴う並列処理を行うように構成された演算装置である。マイコン１Ａは、同期を伴う並列処理が複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができるように工夫されている。同期ポイントとは、同期を伴う複数の処理結果が統合されるポイントを表す。その詳細について以下に説明する。
【００１７】
マイコン１Ａは、図１に示すように、複数のＣＰＵ１０と、複数のローカルＲＡＭ１１Ａ，１１Ｂ，１１Ｘ（以下、ローカルＲＡＭ１１とも表記する。）、ＲＯＭ１２、共有リソース１３等の半導体メモリと、を有するマイクロコンピュータを備える。また、マイコン１Ａは、タイマ２１と、Ｉ／Ｏ２２と、Ａ／Ｄ２３とを備えてもよい。マイコン１Ａの構成要素は、バス２０を介して通信可能に接続される。
【００１８】
マイコン１Ａの各機能は、複数のＣＰＵ１０が非遷移的実体的記録媒体に格納されたプログラムを実施することにより実現される。この例では、半導体メモリが、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実施されることで、プログラムに対応する方法が実施される。なお、非遷移的実体的記録媒体とは、記録媒体のうちの電磁波を除く意味である。
【００１９】
マイコン１Ａが実施する機能を実現する手法はソフトウェアに限るものではなく、その一部又は全部の機能は、１つ或いは複数のハードウェアを用いて実現されてもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は、デジタル回路、又はアナログ回路、或いはこれらの組合せによって実現されてもよい。
【００２０】
ここで、複数のローカルＲＡＭ１１は、ＣＰＵ１０毎に設けられたローカルメモリである。換言すれば、複数のローカルＲＡＭ１１は、１つのプロセスのみからアクセスできるように設定された仮想記憶領域である。複数のローカルＲＡＭ１１は、物理的には共用される１つのメモリとして構成されてもよく、この場合、メモリの記録領域の一部を占有するように構成されてもよい。
【００２１】
ＲＯＭ１２には、複数のＣＰＵ１０が実施するプログラムに加えて、同期情報テーブル１２Ａが格納されている。なお、同期情報テーブル１２Ａについては後述する。
共有リソース１３は、複数のＣＰＵ１０がそれぞれアクセスできるＲＡＭとして構成される。共有リソース１３には、同期記録領域１３Ａと、退避用ＢＵＦＦ１３Ｂとを備える。同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂは、何れもデータを記録可能に構成される。なお、同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂに記録されるデータについては後述する。
【００２２】
タイマ２１は、一定時間間隔で信号を発する構成であり、この信号であるクロックが各ＣＰＵ１０にて認識されることで各ＣＰＵ１０はクロックを基準に、割り込み、タイムアウト等の処理を行う。
【００２３】
Ｉ／Ｏ２２は、データの入出力のための周知のインタフェースである。Ａ／Ｄ２３は、センサ出力等のアナログ信号をデジタル信号に変換するＡＤ変換部である。
［２−２．同期の説明］
ここで、同期について図２を用いて説明する。図２は、ＣＰＵａ１０Ａと、ＣＰＵｂ１０Ｂとがそれぞれ並列して処理を行う例を示すラダーチャートである。図２では、ＣＰＵａ１０Ａが実施する処理Ａによる処理結果と、ＣＰＵｂ１０Ｂが実施する処理Ｂによる処理結果とを、ＣＰＵａ１０Ａが実施する処理Ｃが利用する例を示している。
【００２４】
処理Ｃは、処理Ａ及び処理Ｂの処理結果を使用するため、処理Ａ及び処理Ｂが終了してから実施されるべきである。そして、処理Ａが処理Ｂよりも先に終了した場合、処理Ｂが終了するまで同期待ちを行う必要がある。このように同期待ちを行う必要がある時系列でのタイミングを同期ポイントとする。換言すれば、同期ポイントとは、同期を伴う各ＣＰＵ１０による処理結果が統合されるポイントを表す。
【００２５】
なお、ＣＰＵａ１０Ａが同期待ちをすることなく処理Ａに続いて処理Ｃを実施すると、処理Ｂの終了前に、処理Ｃが実施される可能性があり、処理Ｂを用いる処理Ｃの演算結果が正しく得られない虞がある。このため、処理Ａと処理Ｂとは同期する必要がある。
【００２６】
同期を管理するためには、共有リソース１３の同期記録領域１３Ａに記録された同期情報を利用する。同期情報には、詳細は後述するが、同期を管理するための情報が格納されており、各ＣＰＵ１０は、同期情報を参照して、お互いの状態を確認し、同期待ち又は処理の実施を行う。
【００２７】
次に、デッドロックが発生してしまう例について、図３及び図４を用いて説明する。図３に示す例では、ＣＰＵａ１０Ａは、処理Ａを実施し、その後、処理Ａの演算結果と処理Ｂの演算結果とを利用する処理Ｃを実施する。また、ＣＰＵｂ１０Ｂは、処理Ｂを実施し、その後、処理Ｂの実施中に割り込みにより処理Ｄを開始する。ただし、処理Ｄは処理Ｃと同期して終了する。
【００２８】
この場合、処理Ａの処理が先に実施完了し、ＣＰＵａ１０Ａは、同期待ち状態となる。ＣＰＵｂ１０Ｂは、処理Ｄにおいて処理Ｃの終了を待つため、同期待ち状態となる。このように、ＣＰＵａ１０Ａ及びＣＰＵｂ１０Ｂは、異なる２つの同期ポイントでそれぞれ同期待ち状態となり、複数のＣＰＵ１０が互いに他のＣＰＵ１０による処理の終了を待機することで処理が進まなくなるデッドロックが発生する。
【００２９】
［２−３．処理］
本実施形態のマイコン１Ａでは、このようなデッドロックを抑制するために、図５に示す同期情報テーブル１２ＡをＲＯＭ１２にて備え、各ＣＰＵ１０は、図６に示す同期処理を実施する。
【００３０】
同期情報テーブル１２Ａは、図５に示すように、同期ポイント毎に、同期ポイントナンバ（No.）、各ＣＰＵ１０での処理ＩＤ、同期ポイントの優先度が対応付けられている。なお、処理ＩＤは、処理毎に付された固有の識別子である。また、ここでの優先度は本開示の優先度情報に相当する。
【００３１】
図５に示す例では、同期ポイントナンバ１について、ＣＰＵａ１０Ａの処理ＩＤとして処理Ａを示す０ｘ００１、ＣＰＵｂ１０Ｂの処理ＩＤとして処理Ｂを示す０ｘ００２、同期ポイントの優先度として「Ｈ」、がそれぞれ対応付けられている。なお、優先度「Ｈ」は、優先度「Ｌ」に対して優先度が高い旨を示す。また、優先度「Ｈ」及び優先度「Ｌ」の間の優先度として優先度「Ｍ」が設定されてもよい。
【００３２】
また、図５に示す例では、同期ポイントナンバ２について、ＣＰＵａ１０Ａの処理ＩＤとして処理Ｃを示す０ｘ００３、ＣＰＵｂ１０Ｂの処理ＩＤとして処理Ｄを示す０ｘ００４、同期ポイントの優先度として「Ｌ」、がそれぞれ対応付けられている。
【００３３】
なお、図５の同期情報テーブル１２Ａでは、同期を行うＣＰＵ１０が２つの場合を示しているが、同期を行うＣＰＵ１０が３つ以上である場合は、それぞれのＣＰＵ１０での処理ＩＤの欄を上記テーブルに追加すれば対応することが可能である。
【００３４】
次に、各ＣＰＵ１０がそれぞれ実施する同期処理について、図６及び図７のフローチャートを用いて説明する。各ＣＰＵ１０は、同期を伴う処理の実施中に同期ポイントに到達すると、割り込みにより同期処理を開始するようにプログラムされる。
【００３５】
なお、以下の説明では、同期処理を実施しているＣＰＵ１０を自ＣＰＵ１０、自ＣＰＵ１０以外のＣＰＵ１０を他ＣＰＵ１０と表記する。また、自ＣＰＵ１０による実施中の処理を自処理、他ＣＰＵ１０による処理を他処理と表記する。
【００３６】
同期処理では、まずＳ１１０で、ＣＰＵ１０は、同期記録領域１３Ａ内の同期情報が空であるか否かを判定する。本実施形態では、同期記録領域１３Ａに、同期情報を１つだけ格納するように設定される。同期情報には、同期ポイントナンバと、同期ポイントナンバに対応する各ＣＰＵ１０での処理ＩＤとが含まれる。例えば、全てのＣＰＵ１０が同期ポイントに到達していない場合に、同期情報が空になる。換言すれば、各ＣＰＵ１０は、他ＣＰＵ１０が、自ＣＰＵ１０が到達した同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも同期記録領域１３Ａにおける同期情報の有無によって判定する。
【００３７】
ＣＰＵ１０は、Ｓ１１０で同期情報が空であると判定した場合には、Ｓ１２０へ移行し、同期記録領域１３Ａに、処理ＩＤ及び同期ポイントナンバを同期情報として記録する。この処理では、ＣＰＵ１０は、同期情報テーブル１２Ａを参照して、自処理についての処理ＩＤが対応する同期ポイントナンバを認識する。そして、ＣＰＵ１０は、認識した自処理についての処理ＩＤ、他処理についての処理ＩＤ、及び同期ポイントナンバを、同期情報として記録する。Ｓ１２０の処理が終了すると、同期処理を終了する。この場合、Ｓ１２０の処理を実施したＣＰＵ１０は、同期待ち状態になる。
【００３８】
一方、ＣＰＵ１０は、Ｓ１１０で同期情報が空でないと判定した場合には、Ｓ１３０へ移行し、同期記録領域１３Ａ内の同期情報において、他ＣＰＵの処理ＩＤが空であるか否かを判定する。例えば、３つ以上ＣＰＵを同期する場合に、２番目のＣＰＵがＳ１１０の処理が入った場合、他ＣＰＵ（３番目）の処理ＩＤが空になる。
【００３９】
ＣＰＵ１０は、Ｓ１３０で他のＣＰＵ１０の処理ＩＤが空であると判定した場合には、同期処理を終了する。この場合、Ｓ１３０の処理を実施したＣＰＵ１０は、同期待ち状態になる。
【００４０】
一方、ＣＰＵ１０は、Ｓ１３０で他のＣＰＵの処理ＩＤが空でないと判定した場合には、Ｓ１４０へ移行し、自処理に対応する同期ポイントナンバが、同期記録領域１３Ａ内の同期情報の同期ポイントナンバと同様であるか否かを判定する。ＣＰＵ１０は、Ｓ１４０で同期ポイントナンバが異なると判定した場合には、図７に示すＳ２１０に移行する。
【００４１】
一方、ＣＰＵ１０は、Ｓ１４０で同期ポイントナンバが同様であると判定した場合には、Ｓ１５０へ移行し、同期記録領域１３Ａ内の同期情報をクリアする。続いて、Ｓ１６０で、ＣＰＵ１０は、退避用ＢＵＦＦ１３Ｂにおいて同期情報が空であるか否かを判定する。なお、退避用ＢＵＦＦ１３Ｂには、同期記録領域１３Ａ内の同期情報と同様の同期情報が記録可能に構成される。退避用ＢＵＦＦ１３Ｂは、同期記録領域１３Ａに同期情報が存在する場合に同期情報が格納される。
【００４２】
ＣＰＵ１０は、Ｓ１６０で退避用ＢＵＦＦ１３Ｂにおいて同期情報が空であると判定した場合には、Ｓ１７０へ移行し、自処理との同期待ち状態の他ＣＰＵ１０による同期待ちを終了させる。そして、ＣＰＵ１０は、次の処理の実施を開始し、同期処理を終了する。
【００４３】
一方、ＣＰＵ１０は、Ｓ１６０で退避用ＢＵＦＦ１３Ｂにおいて同期情報が空でないと判定した場合には、Ｓ１８０へ移行し、退避用ＢＵＦＦ１３Ｂの同期情報を同期記録領域１３Ａ内に格納する。つまり、退避用ＢＵＦＦ１３Ｂの同期情報を同期記録領域１３Ａ内に移動させ、移動させた退避用ＢＵＦＦ１３Ｂの同期情報をクリアする。この処理が終了すると、同期処理を終了する。この場合、Ｓ１８０の処理を実施したＣＰＵ１０は、同期待ち状態になる。
【００４４】
次に、図７に示すＳ２１０では、ＣＰＵ１０は、自己のＣＰＵ１０が実施する処理における同期ポイントの優先度が、同期記録領域１３Ａ内の同期情報の優先度に対して高いか否かを判定する。この処理では、ＣＰＵ１０は、同期情報テーブル１２Ａ及び同期記録領域１３Ａを参照して、相対的に優先度が高いか否かを判定する。
【００４５】
ＣＰＵ１０は、Ｓ２１０で自処理における同期ポイントの優先度が高いと判定した場合には、Ｓ２２０へ移行し、同期記録領域１３Ａ内の同期情報を退避用ＢＵＦＦ１３Ｂに保存する。すなわち、各ＣＰＵ１０は、同期情報を同期記録領域１３Ａに格納する際に、既に同期記録領域１３Ａ内に他の同期情報が存在する場合に、同期情報を同期記録領域１３Ａに格納する前に、同期記録領域１３Ａ内の他の同期情報を退避用ＢＵＦＦ１３Ｂに移動させる。
【００４６】
続いて、Ｓ２３０で、ＣＰＵ１０は、他処理をスリープさせる。ここでの他処理とは、自処理と同期する処理を実施すべき他ＣＰＵ１０が実施する処理を示す。他ＣＰＵ１０は、自ＣＰＵ１０からのスリープ指示を受けて、他ＣＰＵ１０が実施中の処理をスリープ、ここでは中止し、スリープさせた処理とは異なる他の処理を開始する。
【００４７】
続いて、Ｓ２４０で、ＣＰＵ１０は、自処理についての処理ＩＤ、自処理に対応する他処理についての処理ＩＤ、及び同期ポイントナンバを、同期情報として同期記録領域１３Ａ内に格納した後、同期処理を終了する。この場合、Ｓ２４０の処理を実施したＣＰＵ１０は、同期待ち状態になる。
【００４８】
一方、ＣＰＵ１０は、Ｓ２１０で自処理における同期ポイントの優先順位が低いと判定した場合には、Ｓ２５０へ移行する。Ｓ２５０では、自処理についての処理ＩＤ、自処理に対応する他処理についての処理ＩＤ、及び同期ポイントナンバを、同期情報として退避用ＢＵＦＦ１３Ｂに保存する。
【００４９】
続いて、Ｓ２６０で、ＣＰＵ１０は、自処理をスリープさせ、スリープさせた処理とは異なる他の処理を開始し、同期処理を終了する。
このような同期処理を各ＣＰＵ１０が実施すると、例えば図８に示すように、デッドロックを抑制できる。すなわち、ＣＰＵｂ１０Ｂにおいて、処理Ｂの同期ポイントに到達する前に、処理Ｄの割り込みが発生した場合であって、処理Ａが処理Ｄよりも早く同期ポイントに到達する場合、ＣＰＵａ１０Ａが同期待ち状態になる。このとき、同期記録領域１３Ａ内の同期情報が空であるため、Ｓ１２０で、処理Ａに関する同期情報が同期記録領域１３Ａ内に記録される。
【００５０】
ＣＰＵｂ１０Ｂは、処理Ｄで処理Ｃの終了を待つ同期ポイントに到達するが、処理Ｄの優先度が低いため、Ｓ２６０で処理Ｄがスリープされる。すると、ＣＰＵｂ１０Ｂは、処理Ｂを実施し、処理Ｂが処理Ａとの同期ポイントに到達し、処理Ａとの同期を完了する。なお、ＣＰＵｂ１０Ｂは、処理Ｂが終了すると処理Ｄを再度実行するため、マイコン１Ａではデッドロックを抑制できる。
【００５１】
なお、処理Ｄが処理Ａよりも先に終了する場合には、Ｓ１２０で処理Ｄに関する同期情報が同期記録領域１３Ａ内に記録される。この場合、処理Ａに関する同期ポイントの優先度が高いため、Ｓ２２０以下の処理が実施され、同様に、処理Ｄがスリープされる。このようにしてデッドロックが抑制される。
【００５２】
［２−４．効果］
以上詳述した第１実施形態によれば、以下の効果を奏する。
（２ａ）本開示の一態様は、複数のＣＰＵ１０を備え、各ＣＰＵ１０が同期を伴う並列処理を行うように構成されたマイコン１Ａである。複数のＣＰＵ１０のうちの１つを自コア、自コアを除く他のＣＰＵのうちの自コアと同期ポイントで同期する処理を実施する他のＣＰＵを他コアとする。
【００５３】
各ＣＰＵ１０は、Ｓ１４０で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、この同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成される。なお、「他コアが、この同期ポイントとは異なる他の同期ポイントでの同期待ち状態である」とは、自コアが到達した同期ポイントと、他コアが到達した同期ポイントとで、同期ポイントナンバが異なることを示す。
【００５４】
各ＣＰＵ１０は、Ｓ２３０，Ｓ２６０で、他コアが、他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度に従って、自コア或いは他コアが実施する処理をスリープさせる。また、各ＣＰＵ１０は、この際、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成される。
【００５５】
このような構成によれば、自コアによる処理が同期ポイントに到達し、同期待ち状態に遷移しようとする際に、他コアが他の同期ポイントで同期待ち状態であれば、自コア又は他コアする処理をスリープさせる。そして、スリープさせる自コア或いは他コアに他の処理を実施させることで、自コア及び他コアが同期待ち状態にならないようにする。よって、各ＣＰＵ１０が同期を伴う並列処理を行うように構成されたマイコン１Ａにおいて、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができる。
【００５６】
（２ｂ）本開示の一態様は、任意の処理によるデータを格納可能に構成された共有リソース１３をさらに備える。各ＣＰＵ１０は、Ｓ２３０，Ｓ２６０で、自コア或いは他コアが実施する処理をスリープさせる際に、少なくとも、自コア及び他コアを特定するための処理ＩＤと、同期ポイントを特定するための同期ポイントナンバとを含む同期情報を共有リソース１３に格納するように構成される。
【００５７】
このような構成によれば、同期情報を共有リソース１３に格納するので、同期情報を読み出せば、スリープさせた処理を後から実施することができる。
（２ｃ）本開示の一態様は、共有リソース１３において、同期記録領域１３Ａと、１又は複数の退避用ＢＵＦＦ１３Ｂと、をさらに備える。同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂは、何れもデータを記録可能に構成される。なお、同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂは、共有リソース１３外に配置されてもよい。
【００５８】
また、各ＣＰＵ１０は、Ｓ１２０で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、少なくとも、ＣＰＵ１０毎の処理ＩＤと、同期ポイントナンバと、を含む同期情報を、同期記録領域１３Ａに格納するように構成される。
【００５９】
また、各ＣＰＵ１０は、Ｓ２２０で、同期情報を同期記録領域１３Ａに格納する際に、既に同期記録領域１３Ａ内に他の同期情報が存在する場合に、同期情報を同期記録領域１３Ａに格納する前に、同期記録領域１３Ａ内の他の同期情報を退避用ＢＵＦＦ１３Ｂに移動させるように構成される。
【００６０】
また、各ＣＰＵ１０は、Ｓ１４０で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも同期記録領域１３Ａにおけるデータの有無によって判定するように構成される。
【００６１】
このような構成によれば、同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂの２つの記録領域を使って、同期情報を管理することができる。また、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを容易に判定できる。
【００６２】
［３．第２実施形態］
［３−１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について以下に説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００６３】
前述した第１実施形態では、同期情報テーブル１２Ａにおいて、同期ポイント毎に、同期ポイントナンバ、各ＣＰＵ１０での処理ＩＤ、同期ポイントの優先度を対応付けた。これに対し、第２実施形態の同期情報テーブル１２Ｂでは、同期情報テーブル１２Ａが備える内容に加えて、各ＣＰＵ１０での後続処理ＩＤが追加され、各ＣＰＵ１０が後続処理ＩＤを考慮して処理を行う点で、第１実施形態と相違する。
【００６４】
［３−２．構成］
第２実施形態のマイコン１Ｂでは、ＲＯＭ１２において、第１実施形態の同期情報テーブル１２Ａに換えて、図９に示すように、同期情報テーブル１２Ｂを備える。同期情報テーブル１２Ｂでは、各ＣＰＵ１０での後続処理ＩＤが追加される。後続処理ＩＤは、実施中の処理の後で実施されるべき処理に関する処理ＩＤを示す。
【００６５】
例えば、図９に示す同期情報テーブル１２Ｂでは、同期ポイント１にて、ＣＰＵａ１０Ａは、処理Ａの後に処理Ｃを実施することが設定される。なお、同期情報テーブル１２Ｂでは、同期ポイント１にて、ＣＰＵｂ１０Ｂが処理Ｂの後に実施する処理、同期ポイント２にて各ＣＰＵ１０が処理Ｃ、処理Ｄの後に実施する処理については設定されていない。
【００６６】
［３−３．処理］
次に、第２実施形態のマイコン１Ｂでは、第１実施形態の同期処理（図７）に代えて、図１０に示す同期処理を実施する。なお、図１０における同期処理では、Ｓ２１０の処理に続いて、Ｓ３１０及びＳ３２０の処理が追加される。図１０における同期処理において、Ｓ３１０及びＳ３２０以外の処理は、第１実施形態の同期処理と同様である。また、第２実施形態では、各ＣＰＵ１０は、同期記録領域１３Ａ及び退避用ＢＵＦＦ１３Ｂに同期情報を記録する際に、同期情報にＣＰＵａ後続処理ＩＤ、ＣＰＵｂ後続処理ＩＤを含めるように構成される。
【００６７】
各ＣＰＵ１０は、Ｓ２１０で自処理における同期ポイントの優先度が高いと判定した場合には、Ｓ３１０へ移行し、Ｓ２１０で自処理における同期ポイントの優先順位が低いと判定した場合には、Ｓ３２０に移行する。
【００６８】
Ｓ３１０及びＳ３２０で、各ＣＰＵ１０は、同期情報テーブル１２Ｂを参照し、自処理の後続処理ＩＤと、同期記録領域１３Ａの同期情報における自ＣＰＵ１０に関する処理ＩＤとが同様であるか否かを判定する。
【００６９】
各ＣＰＵ１０は、Ｓ３１０で処理ＩＤが同様であれば、Ｓ２５０に移行し、Ｓ３１０で処理ＩＤが同様でなければ、Ｓ２２０に移行する。また、各ＣＰＵ１０は、Ｓ３２０で処理ＩＤが同様であれば、Ｓ２２０に移行し、Ｓ３２０で処理ＩＤが同様でなければ、Ｓ２５０に移行する。
【００７０】
［３−４．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果（２ａ）を奏し、さらに、以下の効果を奏する。
【００７１】
（３ａ）本実施形態の構成によれば、自処理に関する処理ＩＤと、同期記録領域１３Ａの同期情報における自ＣＰＵ１０の後続処理ＩＤとが同様の場合、自処理をスリープさせ、他の同期ポイントによる処理を優先とする。
【００７２】
このような構成によれば、優先度に拘わらず、最適な処理順序を設定することができる。
（３ｂ）なお、上記第２実施形態では、同期情報テーブル１２Ｂにて後続処理ＩＤを追加したが、この構成に限られない。例えば、同期情報テーブルでは、後続処理ＩＤではなく、実施中の処理の前提となる前提同期ポイントナンバを追加し、実施中の処理が前提同期ポイントナンバにて特定される処理の後に実施されるように管理してもよい。
【００７３】
［４．第３実施形態］
［４−１．第１実施形態との相違点］
前述した第１実施形態では、共有リソース１３にて１つの同期情報を記録可能な同期記録領域１３Ａ、及び複数の同期情報を記録可能な退避用ＢＵＦＦ１３Ｂを備えた。これに対し、第３実施形態では、１つの同期情報を記録可能な同期記録領域１３Ａを複数備える点等で、第１実施形態と相違する。
【００７４】
［４−２．構成］
第３実施形態のマイコン１Ｃは、図１１に示すように、共有リソース１３に、複数の同期記録領域１３Ａを備え、退避用ＢＵＦＦ１３Ｂを備えない。第３実施形態のマイコン１Ｃは、第１実施形態の同期情報テーブル１２Ａに換えて、図１１及び図１２に示す同期情報テーブル１２Ｃを備える。
【００７５】
同期情報テーブル１２Ｃでは、同期ポイントナンバと、同期情報ナンバとが対応付けられている。同期情報ナンバは、個々の同期記録領域１３Ａを特定するアドレスを示す番号であり、例えば、同期ポイントナンバに対応する同期記録領域１３Ａに対して同期情報を読み書きするために用いられる。
【００７６】
また、個々の同期記録領域１３Ａには、各ＣＰＵ１０の待ち状態を示すフラグが記録される。例えば、このフラグは、同期待ち状態のときに「１」にセットされ、同期完了状態であるときに「０」にセットされる。
【００７７】
［４−３．処理］
次に、第３実施形態のＣＰＵ１０が、第１実施形態の同期処理に代えて実施する同期処理について、図１３のフローチャートを用いて説明する。
【００７８】
第３実施形態の同期処理では、まずＳ４１０で、ＣＰＵ１０は、個々の同期記録領域１３Ａを参照し、他同期情報が同期完了状態であるか否かを判定する。他同期情報とは、自処理に関する同期情報を自同期情報として、自同期情報以外の全ての同期情報を示す。
【００７９】
ＣＰＵ１０は、Ｓ４１０で他同期情報が同期完了状態であると判定した場合には、Ｓ４２０へ移行し、自同期情報において、他ＣＰＵ１０が同期完了状態であるか否かを判定する。ＣＰＵ１０は、Ｓ４２０で自同期情報において、他ＣＰＵ１０が同期完了状態であると判定した場合には、Ｓ４３０へ移行し、自同期情報にて自ＣＰＵ１０の待ち状態を同期待ちに更新し、同期処理を終了する。
【００８０】
一方、ＣＰＵ１０は、Ｓ４２０で自同期情報において、他ＣＰＵ１０が同期完了状態でないと判定した場合には、Ｓ４４０へ移行し、自同期情報に両ＣＰＵの待ち状態を同期完了状態に更新する。そして、自ＣＰＵ１０が次の処理の実施を開始するとともに、他ＣＰＵ１０に同期完了を通知し、その後、同期処理を終了する。
【００８１】
一方、ＣＰＵ１０は、Ｓ４１０で他同期情報が同期完了状態でないと判定した場合には、Ｓ４６０に移行し、自処理の同期情報の優先度が高いか否かを判定する。本実施形態での同期情報の優先度は、例えば、同期情報テーブル１２Ｃの記載順序によって、すなわち、記載された位置が上であるほど高優先度に設定される。ただし、優先度は、同期情報テーブル１２Ｃにて別途優先度に関する欄を設けることで管理されてもよい。
【００８２】
ＣＰＵ１０は、Ｓ４６０で自処理の同期情報の優先度が高いと判定した場合には、Ｓ４７０へ移行し、他ＣＰＵ１０の処理をスリープさせ、同期処理を終了する。
一方、ＣＰＵ１０は、Ｓ４６０で自処理の同期情報の優先度が低いと判定した場合には、Ｓ４８０へ移行し、自同期情報にて自ＣＰＵ１０の待ち状態を同期待ち状態に更新する。
【００８３】
続いて、Ｓ４９０で、ＣＰＵ１０は、自処理をスリープさせ、同期処理を終了する。
［４−３．効果］
以上詳述した第３実施形態によれば、前述した第１実施形態の効果（２ａ）を奏し、さらに、以下の効果を奏する。
【００８４】
（４ａ）このような構成によれば、複数の同期記録領域１３Ａを備え、退避用ＢＵＦＦ１３Ｂを備えない構成とするので、同期情報を移動させる処理を行うことなく、簡素な処理でデッドロックを抑制することができる。
【００８５】
［５．第４実施形態］
［５−１．第３実施形態との相違点］
前述した第３実施形態では、同期情報テーブル１２Ｃにおいて、同期ポイント毎に、同期ポイントナンバ、同期情報ナンバを対応付けた。これに対し、第４実施形態の同期情報テーブル１２Ｄでは、同期情報テーブル１２Ｃが備える内容に加えて、前提同期情報ナンバが追加され、各ＣＰＵ１０が前提同期情報ナンバを考慮して処理を行う点で、第３実施形態と相違する。
【００８６】
［５−２．構成］
第４実施形態の同期情報テーブル１２Ｄは、図１４に示すように、同期ポイント毎に、前提同期情報ナンバの欄を備える。前提同期情報ナンバは、先に実行されているべき処理を同期情報ナンバで示している。例えば、図１４に示す同期ポイントナンバ２には、前提同期情報ナンバ５が記載されており、この記載は、同期情報ナンバ５に関する同期ポイントナンバ１の処理を先に実施するべきことを示す。換言すれば、前提同期情報ナンバは、処理の優先度を示している。
【００８７】
［５−３．処理］
次に、第４実施形態のマイコン１Ｄでは、第３実施形態の同期処理（図１３）に代えて、図１５に示す同期処理を実施する。なお、図１５における同期処理では、Ｓ４６０の処理に続いて、Ｓ５１０及びＳ５２０の処理が追加される。Ｓ５１０及びＳ５２０以外の処理は第３実施形態の同期処理と同様である。
【００８８】
各ＣＰＵ１０は、Ｓ４６０で自処理の同期情報の優先度が高いと判定した場合には、Ｓ５１０へ移行し、Ｓ４６０で自処理の同期情報の優先度が低いと判定した場合には、Ｓ５２０に移行する。
【００８９】
Ｓ３１０及びＳ３２０で、各ＣＰＵ１０は、同期情報テーブル１２Ｄを参照し、自処理の同期情報ナンバと他処理の同期ポイントの前提同期情報ナンバとが同様であるか否かを判定する。
【００９０】
各ＣＰＵ１０は、Ｓ５１０で同期情報ナンバと前提同期情報ナンバとが同様であれば、Ｓ４８０に移行し、Ｓ５１０で同期情報ナンバと前提同期情報ナンバとが同様でなければ、Ｓ４７０に移行する。また、各ＣＰＵ１０は、Ｓ５２０で同期情報ナンバと前提同期情報ナンバとが同様であれば、Ｓ４７０に移行し、Ｓ５２０で同期情報ナンバと前提同期情報ナンバとが同様でなければ、Ｓ４８０に移行する。
【００９１】
［５−４．効果］
以上詳述した第４実施形態によれば、前述した第１実施形態の効果（２ａ）を奏し、さらに、以下の効果を奏する。
【００９２】
（５ａ）本開示の一態様では、優先度として、複数の同期ポイント毎に、当該同期ポイントの優先度、つまり記載順序による優先度と、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報としての前提同期情報ナンバと、が含まれている。各ＣＰＵ１０は、Ｓ２３０．Ｓ２６０，Ｓ４７０，Ｓ４９０で、当該同期ポイントに関する前提同期情報ナンバが存在する場合、当該同期ポイントの優先度に拘わらず、当該同期ポイントに関する前提同期情報ナンバに従って、自コア或いは他コアが実施する処理をスリープさせる。
【００９３】
このような構成によれば、優先度に加えて、前提同期情報ナンバという、２種類のパラメータに従ってスリープさせる処理を決定することができる。よって、優先度のみによってデッドロックを抑制するように優先度を設計する場合よりも、優先度の設計を容易にすることができる。
【００９４】
［６．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は前述の実施形態に限定されることなく、種々変形して実施することができる。
【００９５】
（６ａ）上記実施形態では、共有リソース１３に対して複数のＣＰＵ１０から同時にアクセスがあることを考慮していないが、図１６〜図１８に示すように、複数のＣＰＵ１０から同時にアクセスがあることを考慮する構成としてもよい。図１６では、複数のＣＰＵ１０であるＣＰＵａ１０Ａ，ＣＰＵｂ１０Ｂ，ＣＰＵＣ１０Ｃがバス２０を介して共有リソース１３にアクセスできる構成を示している。
【００９６】
このような構成では、共有リソース１３の同期情報が同時に異なる複数のＣＰＵ１０によって書き換えることがある。この場合、あるＣＰＵ１０が同期情報を書き換えた直後に他のＣＰＵ１０から同期情報が異なる状態に書き換えられ、同期情報の不整合が生じる場合がある。また、同期情報に限らず、ＲＡＭの内容に不整合が生じる場合がある。このため、当該他の実施形態のマイコン１Ｅは、上記マイコン１Ａ〜１Ｄの構成に加えて、図１６に示すように、調停部３０を備えてもよい。調停部３０は、共有リソース１３へのアクセスを制御するバス・アービタ（Bus Arbiter）としての機能を実現してもよい。
【００９７】
ここで、当該他の実施形態のマイコン１Ｅは、図１７に示すように、アクセステーブル１２Ｅをさらに備えてもよい。アクセステーブル１２Ｅは、ＣＰＵ１０毎にアクセス優先度が対応付けられている。
【００９８】
図１７に示す例では、ＣＰＵａ１０Ａにアクセス優先度「最高」が対応付けられ、ＣＰＵｂ１０Ｂにアクセス優先度「高」が対応付けられ、ＣＰＵｃ１０Ｃにアクセス優先度「低」が対応付けられている。
【００９９】
調停部３０は、図１８に示す調停処理を実施するとよい。なお、調停処理は、何れかの調停部３０が実施してもよい。調停処理については、図１８のフローチャートを用いて説明する。調停処理は、例えば、共有リソース１３へのアクセスがあると開始される処理である。
【０１００】
なお、調停部３０は、既にあるＣＰＵ１０からのアクセスがある状態で、さらに他のＣＰＵ１０からのアクセスがあった場合には、既にアクセスしていたＣＰＵ１０を優先してアクセスを受け付ける。
【０１０１】
調停処理では、まずＳ６１０で、調停部３０は、複数のＣＰＵ１０からのアクセスの開始があるか否かを判定する。調停部３０は、Ｓ６１０で複数のＣＰＵ１０からのアクセスがない、つまり１つのＣＰＵ１０のみからのアクセスがあると判定した場合には、Ｓ６２０へ移行し、アクセス権の調停は不要と判定し、調停処理を終了する。
【０１０２】
一方、調停部３０は、Ｓ６１０で複数のＣＰＵ１０からのアクセスがあると判定した場合には、Ｓ６３０へ移行し、最高優先度のＣＰＵａ１０Ａからのアクセスがあるか否かを判定する。
【０１０３】
調停部３０は、Ｓ６３０で最高優先度のＣＰＵａ１０Ａからのアクセスがあると判定した場合には、Ｓ６４０へ移行し、アクセス権を最高優先度のＣＰＵａ１０Ａに設定し、調停処理を終了する。
【０１０４】
一方、調停部３０は、Ｓ６３０で最高優先度のＣＰＵａ１０Ａからのアクセスがないと判定した場合には、Ｓ６５０へ移行し、高優先度のＣＰＵｂ１０Ｂからのアクセスがあるか否かを判定する。
【０１０５】
調停部３０は、Ｓ６５０で高優先度のＣＰＵｂ１０Ｂからのアクセスがあると判定した場合には、Ｓ６６０へ移行し、アクセス権を高優先度のＣＰＵｂ１０Ｂに設定し、調停処理を終了する。
【０１０６】
一方、調停部３０は、Ｓ６５０で高優先度のＣＰＵｂ１０Ｂからのアクセスがないと判定した場合には、Ｓ６７０へ移行し、アクセス権を低優先度のＣＰＵＣ１０Ｃに設定し、調停処理を終了する。
【０１０７】
このように、上記の調停部３０による調停処理では、複数のＣＰＵ１０から、任意の処理によるデータを格納可能に構成された共有リソース１３への同時アクセスが生じる場合、予め設定された優先順位に従って処理を実施する。
【０１０８】
このような構成によれば、複数のＣＰＵ１０から共有リソース１３への同時アクセスが生じる場合であっても、優先順位に従って良好に処理を行うことができる。
（６ｂ）上記実施形態では、退避用ＢＵＦＦ１３Ｂに１つの同期情報が格納される例について説明したが、退避用ＢＵＦＦ１３Ｂには、複数の同期情報が格納されてもよい。
【０１０９】
図１９に示す例では、ある処理Ａにおいて、退避用ＢＵＦＦ１３Ｂに同期情報Ａが格納され、その後、処理Ａの中で別の処理ａが実施されるネストの際に、さらに退避用ＢＵＦＦ１３Ｂに同期情報Ｂが格納される例を示している。
【０１１０】
その後、退避用ＢＵＦＦ１３Ｂから同期記録領域１３Ａに移動される際には、後から格納された同期情報Ｂが先に読み出される。つまり、各ＣＰＵ１０は、Ｓ２２０で、他の同期情報を退避用ＢＵＦＦ１３ＢにＬＩＦＯ方式（Last In First Out：後入れ先出し）で格納するとよい。
【０１１１】
このような構成によれば、ＬＩＦＯ方式で他の同期情報を格納するので、ネストによって、複数の同期情報を格納する場合であっても、複数の同期情報を良好に読み出すことができる。
【０１１２】
（６ｃ）上記実施形態では、複数のＣＰＵ１０を備える構成としたが、１つのＣＰＵに多数の演算部を備えるマルチコアとして構成されてもよい。このような構成であっても上記（２ａ）と同様の効果を享受できる。
【０１１３】
（６ｄ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
【０１１４】
（６ｅ）前述したマイコン１Ａ〜１Ｅの他、当該マイコン１Ａ〜１Ｅを構成要素とするシステム、当該マイコン１Ａ〜１Ｅとしてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、同期方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【０１１５】
１Ａ〜１Ｅ…マイコン、１０…ＣＰＵ、１１…ローカルＲＡＭ、１２…ＲＯＭ、１２Ａ〜Ｄ…同期情報テーブル、１２Ｅ…アクセステーブル、１３…共有リソース、１３Ａ…同期記録領域、１３Ｂ…退避用ＢＵＦＦ、２０…バス、２１…タイマ、２２…Ｉ／Ｏ、２３…Ａ／Ｄ、３０…調停部。
【図１】
2020135524.tif 000003
【図２】
2020135524.tif 000004
【図３】
2020135524.tif 000005
【図４】
2020135524.tif 000006
【図５】
2020135524.tif 000007
【図６】
2020135524.tif 000008
【図７】
2020135524.tif 000009
【図８】
2020135524.tif 000010
【図９】
2020135524.tif 000011
【図１０】
2020135524.tif 000012
【図１１】
2020135524.tif 000013
【図１２】
2020135524.tif 000014
【図１３】
2020135524.tif 000015
【図１４】
2020135524.tif 000016
【図１５】
2020135524.tif 000017
【図１６】
2020135524.tif 000018
【図１７】
2020135524.tif 000019
【図１８】
2020135524.tif 000020
【図１９】
2020135524.tif 000021