(57)【特許請求の範囲】
【請求項１】
システムバス（３０）を介して制御対象たる少なくとも一つのスレーブエレメント（２０）に接続され、演算を実行する複数のマスタエレメント（１０）と、
前記マスタエレメントから前記スレーブエレメントへのアクセスの優先度情報（４１）が記憶される優先度記憶部（４０）と、
前記優先度情報に基づいて前記マスタエレメントから前記スレーブエレメントへのアクセスを調停するバスアービタ（３１）と、
前記マスタエレメント間の同期を行うための同期データ（２１ｂ）が記憶された同期部（２１ａ）と、を備え、
前記マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、前記第１のマスタエレメントが、前記第２のマスタエレメントによる前記同期データの更新を待つ制御装置であって、
前記第１のマスタエレメントは、前記同期データの更新があるまで、
前記第１のマスタエレメントのアクセス優先度を下げる、もしくは、
前記第２のマスタエレメントのアクセス優先度を上げる、もしくは、
前記第１のマスタエレメントのアクセス優先度を下げ、且つ、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報を変更し、
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記第１のマスタエレメントが前記同期データの更新を確認する回数であるループ回数が増加するにしたがって、段階的に、
前記第１のマスタエレメントのアクセス優先度を下げる、もしくは、
前記第２のマスタエレメントのアクセス優先度を上げる、もしくは、
前記第１のマスタエレメントのアクセス優先度を下げ、且つ、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報を変更する制御装置。
【請求項２】
前記マスタエレメントが前記同期部へのアクセスを開始してから前記同期データを取得するまでのアクセス時間を計測する時間計測部（６０）を備え、
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、前記アクセス時間が長いほど、前記第２のマスタエレメントのアクセス優先度を、前記第１のマスタエレメントのアクセス優先度に較べて高くしていくように前記優先度情報を変更する請求項１に記載の制御装置。
【請求項３】
システムバス（３０）を介して制御対象たる少なくとも一つのスレーブエレメント（２０）に接続され、演算を実行する複数のマスタエレメント（１０）と、
前記マスタエレメントから前記スレーブエレメントへのアクセスの優先度情報（４１）が記憶される優先度記憶部（４０）と、
前記優先度情報に基づいて前記マスタエレメントから前記スレーブエレメントへのアクセスを調停するバスアービタ（３１）と、
前記マスタエレメント間の同期を行うための同期データ（２１ｂ）が記憶された同期部（２１ａ）と、を備え、
前記マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、前記第１のマスタエレメントが、前記第２のマスタエレメントによる前記同期データの更新を待つ制御装置であって、
前記第１のマスタエレメントは、前記同期データの更新があるまで、
前記第１のマスタエレメントのアクセス優先度を下げる、もしくは、
前記第２のマスタエレメントのアクセス優先度を上げる、もしくは、
前記第１のマスタエレメントのアクセス優先度を下げ、且つ、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報を変更し、
前記マスタエレメントが前記同期部へのアクセスを開始してから前記同期データを取得するまでのアクセス時間を計測する時間計測部（６０）を備え、
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、前記アクセス時間が長いほど、前記第２のマスタエレメントのアクセス優先度を、前記第１のマスタエレメントのアクセス優先度に較べて高くしていくように前記優先度情報を変更する制御装置。
【請求項４】
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記第１のマスタエレメントのアクセス優先度が低いほど、前記第１のマスタエレメントが前記同期部にアクセスする周期を大きくする請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記第２のマスタエレメントのアクセス優先度が高いほど、前記第１のマスタエレメントが前記同期データの更新を確認するために前記同期部にアクセスする周期を小さくする請求項１〜３のいずれか１項に記載の制御装置。
【請求項６】
システムバス（３０）を介して制御対象たる少なくとも一つのスレーブエレメント（２０）に接続され、演算を実行する複数のマスタエレメント（１０）と、
前記マスタエレメントから前記スレーブエレメントへのアクセスの優先度情報（４１）が記憶される優先度記憶部（４０）と、
前記優先度情報に基づいて前記マスタエレメントから前記スレーブエレメントへのアクセスを調停するバスアービタ（３１）と、
前記マスタエレメント間の同期を行うための同期データ（２１ｂ）が記憶された同期部（２１ａ）と、を備え、
前記マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、前記第１のマスタエレメントが、前記第２のマスタエレメントによる前記同期データの更新を待つ制御装置であって、
前記第１のマスタエレメントは、前記同期データの更新があるまで、
前記第１のマスタエレメントのアクセス優先度を下げる、もしくは、
前記第２のマスタエレメントのアクセス優先度を上げる、もしくは、
前記第１のマスタエレメントのアクセス優先度を下げ、且つ、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報を変更し、
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記第１のマスタエレメントのアクセス優先度が低いほど、前記第１のマスタエレメントが前記同期部にアクセスする周期を大きくする制御装置。
【請求項７】
システムバス（３０）を介して制御対象たる少なくとも一つのスレーブエレメント（２０）に接続され、演算を実行する複数のマスタエレメント（１０）と、
前記マスタエレメントから前記スレーブエレメントへのアクセスの優先度情報（４１）が記憶される優先度記憶部（４０）と、
前記優先度情報に基づいて前記マスタエレメントから前記スレーブエレメントへのアクセスを調停するバスアービタ（３１）と、
前記マスタエレメント間の同期を行うための同期データ（２１ｂ）が記憶された同期部（２１ａ）と、を備え、
前記マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、前記第１のマスタエレメントが、前記第２のマスタエレメントによる前記同期データの更新を待つ制御装置であって、
前記第１のマスタエレメントは、前記同期データの更新があるまで、
前記第１のマスタエレメントのアクセス優先度を下げる、もしくは、
前記第２のマスタエレメントのアクセス優先度を上げる、もしくは、
前記第１のマスタエレメントのアクセス優先度を下げ、且つ、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報を変更し、
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記第２のマスタエレメントのアクセス優先度が高いほど、前記第１のマスタエレメントが前記同期データの更新を確認するために前記同期部にアクセスする周期を小さくする制御装置。
【請求項８】
前記マスタエレメントが実行中のタスクに関する優先度を定めたタスク優先度を取得するタスク優先度取得部（７０）を備え、
前記マスタエレメントの前記スレーブエレメントへのアクセス優先度を、前記タスク優先度取得部が取得する前記タスク優先度に等しくなるように前記優先度情報を変更する請求項６または７に記載の制御装置。
【請求項９】
前記マスタエレメントから前記優先度記憶部へのアクセスの許否を決する許否部（５０）を備え、
前記許否部がアクセスを許した場合のみ、前記優先度情報が更新される請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
前記マスタエレメントのうち、前記第１のマスタエレメントが前記第２のマスタエレメントの待ち合わせをするとき、
前記許否部は、前記第２のマスタエレメントのアクセス優先度を上げるように前記優先度情報が変更される場合にのみ、前記マスタエレメントから前記優先度記憶部へのアクセスを許可する請求項９に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算のための複数のコアを備えた制御装置に関する。
【背景技術】
【０００２】
近年、複数の中央演算処理装置（ＣＰＵ）が一つのパッケージに格納されたマルチコアプロセッサが利用されつつある。マルチコアプロセッサでは、複数のコア間で処理の同期を行う際にビジーウェイトを用いて相手コアの処理完了を待ち合わせる。相手コアの処理の完了は、コア間で共有するフラグ変数が所定の値に更新されることを以って判断される。ビジーウェイトで待ち合わせる場合、待つ側のコアは、当該フラグ変数をループ処理によって繰り返しリードしつつ、フラグ変数が所定の値に更新されるのを待つことになる。
【０００３】
ビジーウェイトを実行して相手コアを待ち合わせているコアは、フラグ変数を繰り返しリードするため、フラグ変数が記憶されているメモリへのアクセス頻度が非常に高くなる。メモリには、同期に供されるフラグ変数以外にも本来の制御に用いられる変数も記憶されているが、メモリに同時にアクセスできるコアは通常一つであるため、ビジーウェイトを実行中のコアがメモリを占有してしまう虞がある。
【０００４】
特許文献１には、アクセス優先度を用いて複数のコアからのアクセスを調停する方法が開示されている。これによれば、あるコアがメモリにアクセスを試みた際にアクセスを完遂できなかった場合において、当該コアのアクセス優先度を上げたうえで、次回アクセス時に優先的にアクセスできるようにする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１７８０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の発明では、優先度が上げられたアクセスは２回目以降であり、性能のボトルネックになりやすいメモリレイテンシは大きくなってしまう虞がある。
【０００７】
なお、他の発明として、ビジーウェイトを実行するコアを省電力状態にしてアクセス頻度を抑制する技術も開示されているが、省電力回路はアナログ回路を含むため回路規模が大きくなりがちであり、また、省電力状態から復帰する際の安定化時間を要してしまう。
【０００８】
本発明は、上記問題点を鑑みてなされたものであり、レイテンシの増大を抑制しつつ複数コアのアクセスを調停することができる制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
ここに開示される発明は、上記目的を達成するために以下の技術的手段を採用する。なお、特許請求の範囲およびこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【００１０】
上記目的を達成するために、本発明は、システムバス（３０）を介して制御対象たる少なくとも一つのスレーブエレメント（２０）に接続され、演算を実行する複数のマスタエレメント（１０）と、マスタエレメントからスレーブエレメントへのアクセスの優先度情報（４１）が記憶される優先度記憶部（４０）と、優先度情報に基づいてマスタエレメントからスレーブエレメントへのアクセスを調停するバスアービタ（３１）と、マスタエレメント間の同期を行うための同期データ（２１ｂ）が記憶された同期部（２１ａ）と、を備え、マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、第１のマスタエレメントは、第２のマスタエレメントによる同期データの更新を待つ制御装置であって、第１のマスタエレメントは、同期データの更新があるまで、第１のマスタエレメントのアクセス優先度を下げる、もしくは第２のマスタエレメントのアクセス優先度を上げる、もしくは、第１のマスタエレメントのアクセス優先度を下げ、且つ、第２のマスタエレメントのアクセス優先度を上げるように優先度情報を変更し、マスタエレメントのうち、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、第１のマスタエレメントが同期データの更新を確認する回数であるループ回数が増加するにしたがって、段階的に、第１のマスタエレメントのアクセス優先度を下げる、もしくは、第２のマスタエレメントのアクセス優先度を上げる、もしくは、第１のマスタエレメントのアクセス優先度を下げ、且つ、第２のマスタエレメントのアクセス優先度を上げるように優先度情報を変更する。
【００１１】
これによれば、待つ側である第１のマスタエレメントが第２のマスタエレメントによる同期データの更新を待つ間、第１のマスタエレメントに比較して相対的に第２のマスタエレメントの優先度が高くなるように優先度情報を更新する。したがって、アクセス権を必要とする第２のマスタエレメントにはアクセスのリトライは発生せず、制御装置のレイテンシを小さくすることができる。このように、レイテンシの増大を抑制しつつ複数コアのアクセスを調停することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態におけるプロセッサの概略構成を示すブロック図である。
【図２】第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図３】第２実施形態におけるプロセッサの概略構成を示すブロック図である。
【図４】第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図５】図４におけるサブルーチン１の動作内容を示すフロー図である。
【図６】図４におけるサブルーチン２の動作内容を示すフロー図である。
【図７】第３実施形態のプロセッサにおいて第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図８】第４実施形態におけるプロセッサの概略構成を示すブロック図である。
【図９】第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図１０】図９におけるサブルーチン３の動作内容を示すフロー図である。
【図１１】アクセス時間に対応する、コアのアクセス優先度を示すテーブルである。
【図１２】第５実施形態におけるプロセッサの概略構成を示すブロック図である。
【図１３】第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図１４】図１３におけるサブルーチン４の動作内容を示すフロー図である。
【図１５】図１３におけるサブルーチン５の動作内容を示すフロー図である。
【図１６】第６実施形態のプロセッサにおいて第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【図１７】その他実施形態のプロセッサにおいて第２コアによる処理の終了を待つ第１コアの動作を示すフロー図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。なお、以下の各図相互において、互いに同一もしくは均等である部分に、同一符号を付与する。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した形態と同様とする。実施の各形態で具体的に説明している部分の組合せばかりではなく、特に組合せに支障が生じなければ、実施の形態同士を部分的に組み合せることも可能である。
【００１４】
（第１実施形態）
最初に、図１を参照して、本実施形態に係る制御装置の概略構成について説明する。
【００１５】
本実施形態における制御装置はマルチコアのプロセッサであり、複数のマスタエレメントと複数のスレーブエレメントとを備え、マスタエレメントとスレーブエレメントとを繋ぐバスの使用権要求を調停するバスアービタを備えている。
【００１６】
より具体的には、図１に示すように、このプロセッサ１００は、演算を行うための３つのコア１０、すなわち第１コア１１、第２コア１２、第３コア１３を備えている。このコア１０がそれぞれ特許請求の範囲に記載のマスタエレメントに相当する。また、プロセッサ１００は、コア１０と各スレーブエレメント２０とを通信可能に接続するシステムバス３０を備えている。なお、プロセッサ１００は、スレーブエレメント２０の一つとして、書き換え可能なメモリであるＲＡＭ２１を備えている。そして、該ＲＡＭ２１上に同期部２１ａを備えている。さらに、プロセッサ１００は、所定のレジスタ内に優先度情報４１を記憶する優先度記憶部４０を備えている。本実施形態におけるプロセッサ１００が備える各要素について、以下、詳しく説明する。
【００１７】
コア１０は特許請求の範囲に記載のマスタエレメントに相当し、与えられたプログラムに基づいた演算を実行する部分である。本実施形態におけるプロセッサ１００はマルチコアプロセッサであり、コア１０は第１コア１１、第２コア１２および第３コア１３を有している。第１コア１１、第２コア１２および第３コア１３はそれぞれ独立して演算を実行することができる。一方で、あるコア１０が別のコア１０の演算の終了を待ち合わせるビジーウェイト処理を実行して同期を取るような演算も実行することができる。ビジーウェイト処理を実行する場合、待つ側のコア１０は後に詳述する同期部２１にアクセスして演算を実行中の別のコア１０に対応する同期用のフラグが演算終了を示す状態になるのを待つようになっている。
【００１８】
スレーブエレメント２０は、メモリであるＲＡＭ２１と、ＲＯＭ２２と、ペリフェラルバス２３（以降、ＰＢＵＳ２３という）と、を有している。言うまでもなく、スレーブエレメント２０は、ＲＡＭ２１、ＲＯＭ２２、ＰＢＵＳ２３以外の要素を含んでいても良いが、プロセッサ１００はスレーブエレメント２０として少なくともＲＡＭ２１を備え、とくに、ＲＡＭ２１上に構築されたデータ構造として同期部２１ａを備えている。ＲＡＭ２１には同期部２１ａ以外にも種々のデータが記憶されている。スレーブエレメント２０はマスタエレメントたるコア１０とシステムバスを介して接続されている。
【００１９】
ＲＡＭ２１はスレーブエレメント２０の一つである。ＲＡＭ２１は、コア１０による演算の結果を記憶したり、コア１０の演算に必要なデータを記憶したりする部分である。同期部２１ａはＲＡＭ２１上に構築されるデータ構造であり、コア１０の演算を同期するための同期データ２１ｂを含んでいる。本実施形態における同期データ２１ｂはフラグである。図１に示すように、フラグは各コア１０に対応して設定されている。すなわち、本実施形態の同期データ２１ｂは、第１コア１１に対応する第１フラグと、第２コア１２に対応する第２フラグと、第３コア１３に対応する第３フラグと、を含んでいる。あるコア１０の演算が終了すると対応するフラグがＯＦＦからＯＮに遷移する。例えば、第１コア１１が先に演算を終了して第２コア１２と同期する場合、第１コア１１は第２フラグを監視し、第２フラグがＯＦＦからＯＮに遷移したことを以って第２コア１２の演算が終了したと判断する。そして、第１コア１１は次の演算を開始する。これにより、第１コア１１と第２コア１２の演算が同期される。詳しい処理フローは追って説明する。
【００２０】
ＲＯＭ２２はスレーブエレメント２０の一つである。ＲＯＭ２２は例えばプロセッサ１００に内蔵されたフラッシュメモリであり、コア１０で実行するプログラムや定数データを記憶する部分である。ＰＢＵＳ２３はプロセッサ１００の周辺機器が連なるバスであり、バスブリッジ回路を介して接続される。プロセッサ１００の周辺機器は例えばシリアル・ペリフェラル・インターフェイス（ＳＰＩ）やコントローラ・エリア・ネットワークなどの通信機能やタイマ機能などである。ＰＢＵＳ２３は、メモリ等の比較的早いアクセス速度が要求されるハードウェアを除く、比較的遅いアクセス速度でも動作可能なハードウェアが接続されるバスである。ＲＯＭ２２およびＰＢＵＳ２３はスレーブエレメント２０の一例として記載されているものであり、本実施形態におけるプロセッサ１００は、ＲＯＭ２２およびＰＢＵＳ２３のほかにスレーブエレメント２０を有していても良い。
【００２１】
システムバス３０は、マスタエレメントたるコア１０とスレーブエレメント２０とを結ぶバスである。図示しないがシステムバス３０はアドレスバス、データバス、コントロールバスを有し、すべてのコア１０と、すべてのスレーブエレメント２０とを互いに通信可能に接続している。
【００２２】
システムバス３０はバスアービタ３１を有している。バスアービタ３１は、後述の優先度記憶部４０に格納された優先度情報４１に基づいてコア１０のアクセスを調停している。具体的には、バスアービタ３１は、優先度の高い処理を実行するコア１０と、コア１０がアクセスを要求するスレーブエレメント２０と、を互いに接続するように調停している。
【００２３】
優先度記憶部４０は、コア１０がスレーブエレメント２０にアクセスする際のアクセス優先度の情報、すなわち優先度情報４１を格納する部分である。優先度記憶部４０はコア１０に接続され、コントロールバスを介してバスアービタ３１へ情報が送信される。優先度情報４１は、図１に示すように、スレーブエレメント２０ごとに、コア１０のアクセス優先度が設定されている。本実施形態における優先度は例えば０〜７の８段階に設定される。例えば、図１には同期部２１ａを含むＲＡＭ２１に関する優先度情報４１が具体的に示されている。ＲＡＭ２１へのアクセス優先度は、第２コア１２が７（最高）に設定され、第１コア１１が最低の０（最低）に設定されている。第３コア１３は最優先と最低の間である３（標準）に設定されている。第２コア１２と別のコア１０とが同時にＲＡＭ２１にアクセスを要求した場合、アクセス優先度が最も高い第２コア１２がＲＡＭ２１とのアクセス権を得る。なお、スレーブエレメントに対するコア１０の優先度は必ずしも８段階である必要はなく、少なくとも２段階存在していれば良い。
【００２４】
次に、図２を参照して、本実施形態に係る制御装置の動作フローについて説明する。なお、ここでは、第１コア１１が第２コア１２に先んじて所定の処理を完了し、第２コア１２が所定の処理を完了するのを待ち合わせる場合の、第１コア１１の動作フローについて説明する。この例では、説明を簡単にするため、第３コア１３がＲＡＭ２１へのアクセス権を要求しないこととする。また、本動作フローが開始される初期状態において、ＲＡＭ２１への優先度情報４１は、第１コア１１、第２コア１２、第３コア１３それぞれが３（標準）である。初期状態では、バスアービタ３１が第１コア１１、第２コア１２および第３コア１３を平等に調停する。
【００２５】
図２に示すように、まず、ステップＳ１０１が実行される。ステップＳ１０１は、変数である「ループ回数」をゼロにリセットするステップである。ループ回数は、後述のステップＳ１０６以降における優先度情報４１の書き換え処理をスキップするために導入される変数である。
【００２６】
次いで、ステップＳ１０２が実行される。ステップＳ１０２は、第１コア１１が同期データ２１ｂにおいて、第１コア１１に対応する第１フラグをＯＦＦからＯＮに遷移させるステップである。仮定のとおり、第１コア１１は第２コア１２に先んじて処理を終え、第２コア１２を待つ側であるから、ステップＳ１０２において第１フラグをＯＮにする。
【００２７】
次いで、ステップＳ１０３が実行される。ステップＳ１０３は、第１コア１１が、同期データ２１ｂを参照して、第２フラグがＯＮかＯＦＦかを判定するステップである。第２フラグがＯＮであればステップＳ１０３はＹＥＳ判定となる。換言すれば、第２コア１２の演算が終了していればステップＳ１０３はＹＥＳ判定となる。ステップＳ１０３がＹＥＳ判定であるとは、第１コア１１と第２コア１２とが同期していることを意味している。この場合にはステップＳ１０４に進む。
【００２８】
ステップＳ１０４は、第１コア１１が優先度記憶部４０にアクセスし、ＲＡＭ２１に関する優先度情報４１における第１コア１１のアクセス優先度を初期状態である３（標準）に書き戻す。
【００２９】
次いで、ステップＳ１０５が実行される。ステップＳ１０５は、第１コア１１が優先度記憶部４０にアクセスし、ＲＡＭ２１に関する優先度情報４１における第２コア１２のアクセス優先度を初期状態である３に書き戻す。ステップＳ１０４およびステップＳ１０５を経て、ＲＡＭ２１における優先度情報４１は初期状態にリセットされる。この状態では、アクセス優先度が平等に割り振れており、バスアービタ３１は第１コア１１および第２コア１２を平等に調停する。ステップＳ１０５を経て本動作フローは終了する。
【００３０】
一方、ステップＳ１０３において第２フラグがＯＦＦである場合には、ステップＳ１０３はＮＯ判定となる。換言すれば、第２コア１２の演算が継続中であり第１コア１１が待ちの状態であれば、ステップＳ１０３はＮＯ判定となる。ステップＳ１０３がＮＯ判定であるとは、第１コア１１と第２コア１２とが非同期であることを意味している。この場合にはステップＳ１０６に進む。
【００３１】
ステップＳ１０６は、第１コア１１が、変数であるループ回数がゼロか否かを判定するステップである。ステップＳ１０３においてリセットされた状態であればループ回数はゼロであり、ステップＳ１０６はＹＥＳ判定となる。この場合、ステップＳ１０７に進む。
【００３２】
ステップＳ１０７は、第１コア１１が優先度記憶部４０にアクセスし、ＲＡＭ２１に関する優先度情報４１における第１コア１１のアクセス優先度を０（最低）に書き換える。つまり、待つ側である第１コア１１のＲＡＭ２１へのアクセス優先度が下げられる。
【００３３】
次いで、ステップＳ１０８が実行される。ステップＳ１０８は、第１コア１１が優先度記憶部４０にアクセスし、ＲＡＭ２１に関する優先度情報４１における第２コア１２のアクセス優先度を７（最高）に書き換える。つまり、待たせる側である第２コア１２のＲＡＭ２１へのアクセス優先度が上げられる。なお、第３コア１３はアクセス優先度が変更されず、３（標準）のままである。
【００３４】
ステップＳ１０７においては、すでに所定の処理が終了して待ちの状態である第１コア１１のアクセス優先度を下げることにより、相対的に第２コア１２によるＲＡＭ２１へのアクセスを容易にしている。換言すれば、第１コア１１のＲＡＭ２１への過剰なアクセスを防止している。一方、ステップＳ１０８においては、所定の処理が未完である第２コア１２のアクセス優先度を上げることにより、相対的に第２コア１２によるＲＡＭ２１へのアクセスを容易にしている。本実施形態では、ステップＳ１０７とステップＳ１０８の両方を経る動作フローを説明しているが、ステップＳ１０７およびステップＳ１０８の少なくとも一方を経るようにすればよい。このようにすれば、第１コア１１に比較して第２コア１２のＲＡＭ２１へのアクセス優先度を相対的に上げることができるので、第１コア１１のＲＡＭ２１への過剰なアクセスを防止することができる。
【００３５】
ステップＳ１０８の後、ステップＳ１０９が実行される。ステップＳ１０９は、変数であるループ回数が１だけ増加（すなわちインクリメント）されるステップである。ステップＳ１０９を経由してループ回数がゼロ以外の値になると、ステップＳ１０６においてＮＯ判定となる。
【００３６】
ステップＳ１０６がＮＯ判定の場合は、ステップＳ１０６の後にステップＳ１０３に戻る。前述のとおり、ステップＳ１０３では、第２コア１２の所定の処理を終了するまでＮＯ判定を継続するため、結果的に第２コア１２の所定の処理を終了するまでステップＳ１０３およびステップＳ１０６が繰り返し実行される。この繰り返しが行われるのは、少なくとも一回はステップＳ１０９を経由していることが条件であり、すなわち、ステップＳ１０７あるいはステップＳ１０８を経ている。つまり、ステップＳ１０３およびステップＳ１０６が繰り返し実行されている間は第２コア１２のＲＡＭ２１へのアクセス優先度が相対的に高い状態を維持している。ステップＳ１０６が実行される意義は、第１コア１１がステップＳ１０７〜ステップＳ１０９を毎回経由しないようにして演算負荷を軽減することにある。よってステップＳ１０６は必ずしも必要ではない。ステップＳ１０６が省略される場合には、ループ回数に関するステップであるステップＳ１０３およびステップＳ１０９も省略される。
【００３７】
第２コア１２による演算が終了すればステップＳ１０３はＹＥＳ判定となり、前述の通りステップＳ１０４およびステップＳ１０５を経由してコア１０のＲＡＭ２１へのアクセス優先度を３に再設定して本動作フローを終了する。換言すると、コア１０のＲＡＭ２１へのアクセス優先度は初期状態に戻る。これにより、バスアービタ３１が第１コア１１、第２コア１２および第３コア１３を平等に調停することができるようになる。
【００３８】
次に、本実施形態に係る制御装置を採用することによる作用効果について説明する。
【００３９】
ステップＳ１０７あるいはステップＳ１０８において、第２コア１２のＲＡＭ２１へのアクセス優先度を、第１コア１１に対して高くすることができる。これにより、バスアービタ３１は、第２コア１２がＲＡＭ２１に対してアクセスを容易にするように調停することができる。
【００４０】
且つ、ステップＳ１０７およびステップＳ１０８を実行するマスタエレメントは、待つ側である第１コア１１であるから、所定の処理を実行中の第２コア１２にＲＡＭ２１へのアクセスのリトライを行わせることなく、ＲＡＭ２１へのアクセス優先度を変更することができる。
【００４１】
以上のように、第２コア１２がリトライをせずに所定の処理に必要なＲＡＭ２１へのアクセスを実行できるので、第２コア１２のＲＡＭ２１に係るレイテンシを小さくすることができる。ひいては、プロセッサ１００のレイテンシを小さくすることができる。すなわち、レイテンシの増大を抑制しつつ複数コアのアクセスを調停することができる。
【００４２】
（第２実施形態）
図３に示すように、本実施形態におけるプロセッサ１１０は許否部５０を備えている。許否部５０は、マスタエレメントたるコア１０と優先度記憶部４０に接続されている。許否部５０はコア１０による優先度情報４１の書き換えを制限する部分である。コア１０は、所定の条件を満たすことで、優先度記憶部４０へのアクセスを許可され、優先度情報４１を書き換えることができる。これによれば、例えば故障やバグによって不正に優先度情報４１が書き換えられることを防止することができる。
【００４３】
所定の条件とは、例えば、第１コア１１が第２コア１２の処理が終了するのを待ち合わせるとき、第２コア１２のＲＡＭ２１へのアクセス優先度が引き上げられようとしている、ことである。つまり、待たせる側のマスタエレメントに対応するアクセス優先度が引き上げられようとしていることが所定の条件として好適である。
【００４４】
次に、図４〜図６を参照して、本実施形態におけるプロセッサ１１０の動作フローについて具体的に説明する。
【００４５】
図４に示すように、本実施形態における動作フローは、第１実施形態における動作フローのステップＳ１０２およびステップＳ１０８を、それぞれステップＳ２０２およびステップＳ２０８に置換したものであり、ステップＳ２０２およびステップＳ２０８を除くフローは第１実施形態と同一である。すなわち、ステップＳ２０１はステップＳ１０１と同一であり、ステップＳ２０３〜ステップＳ２０７はそれぞれステップＳ１０３〜Ｓ１０７と同一であり、ステップＳ２０９はステップＳ１０９と同一である。よって、ステップＳ２０２およびステップＳ２０８を除くステップについては説明を省略する。
【００４６】
ステップＳ２０２について図５を参照して説明する。ステップＳ２０２はステップＳ２０１の後に実行され、変数である「チェック用ＭＥ」に待ち合わせる相手のマスタエレメントの情報をセットするためのサブルーチンである。
【００４７】
図５に示すように、ステップＳ２０２で実行されるサブルーチンでは、まずステップＳ２０２ａが実行される。ステップＳ２０２ａは、第１コア１１が同期データ２１ｂにおいて、第１コア１１に対応する第１フラグをＯＦＦからＯＮに遷移させるステップである。仮定のとおり、第１コア１１は第２コア１２に先んじて処理を終え、第２コア１２を待つ側であるから、ステップＳ２０２ａにおいて第１フラグをＯＮにする。このステップは、第１実施形態におけるステップＳ１０２に相当する。
【００４８】
次いで、ステップＳ２０２ｂが実行される。ステップＳ２０２ｂは、変数であるチェック用ＭＥに待ち合わせるマスタエレメントを指定する情報をセットするステップである。本実施形態では、第１コア１１が第２コア１２を待ち合わせるので、チェック用ＭＥには第２コア１２が指定される。
【００４９】
ステップＳ２０２ａおよびステップＳ２０２ｂを経て、ステップＳ２０２のサブルーチンは終了する。そして、ステップＳ２０３に進む。ステップＳ２０３は第１実施形態におけるステップＳ１０３と同様であり、第２コア１２の処理が終了していなければＮＯ判定となる。その後、ステップＳ２０６およびＳ２０７を経てステップＳ２０８に至る。
【００５０】
ステップＳ２０８について図６を参照して説明する。ステップＳ２０８は、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントが、第１コア１１が待ち合わせているマスタエレメントと一致するか否かを判定するステップを含むサブルーチンである。
【００５１】
図６に示すように、ステップＳ２０８で実行されるサブルーチンでは、まずステップＳ２０８ａが実行される。ステップＳ２０８ａは、許否部５０が、待つ側である第１コア１１に対応する第１フラグがＯＮであるか否かを判定するステップである。ステップＳ２０２ａにて第１フラグはＯＮにされているので、プロセッサ１１０が正常に動作していればステップＳ２０８ａはＹＥＳ判定となる。万一、第１フラグがＯＦＦに書き換えられている場合にはＮＯ判定となりステップＳ２０８のサブルーチンは終了する。ステップＳ２０８ａがＹＥＳ判定ならばステップＳ２０８ｂに進む。
【００５２】
ステップＳ２０８ｂは、許否部５０が、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントが、チェック用ＭＥとして指定されたマスタエレメントに一致するか否かを判定するステップである。本実施形態では、故障やバグが発生していなければ、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントは第２コア１２である。一方、チェック用ＭＥは、ステップＳ２０２ｂにおいて第２コア１２に指定されている。したがって、ステップＳ２０８ｂはＹＥＳ判定となり、ステップＳ２０８ｃに進む。
【００５３】
ステップＳ２０８ａおよびステップＳ２０８ｂがいずれもＹＥＳ判定であることは、許否部５０が、第１コア１１に対して、ＲＡＭ２１に対する第２コア１２のアクセス優先度を変更することを許可したことを意味する。
【００５４】
ステップＳ２０８ｃは、第１コア１１が優先度記憶部４０にアクセスし、ＲＡＭ２１に関する優先度情報４１における第２コア１２のアクセス優先度を７（最高）に書き換えるステップである。このステップは、第１実施形態におけるステップＳ１０８と同一である。
【００５５】
万一、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントが第２コア１２でない場合には、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントがチェック用ＭＥと一致せず、ステップＳ２０８ｂはＮＯ判定となる。この場合には第２コア１２のＲＡＭ２１に対するアクセス優先度は変更されずサブルーチンは終了する。これは許否部５０が第１コア１１の優先度記憶部４０へのアクセスを許可しなかったことを意味する。
【００５６】
次に、本実施形態に係る制御装置を採用することによる作用効果について説明する。
【００５７】
本実施形態におけるプロセッサ１１０は許否部５０を備え、その動作フローにおいて、ＲＡＭ２１へのアクセス優先度が変更されようとしているマスタエレメントが、待ち合わせているマスタエレメントと一致するか否かを判定している。これによれば、例えば、第１コア１１が誤って第３コア１３のＲＡＭ２１へのアクセス優先度を上げようとした場合には、第１コア１１の優先度記憶部４０へのアクセスが許可されないので、予期しないアクセス優先度の変更を防止することができる。
【００５８】
（第３実施形態）
本実施形態における制御装置は第１実施形態に対して、動作フローを変更したものである。この制御装置の構成要素は第１実施形態と同一であり、その動作フローが異なっている。図７を参照して、本実施形態にかかるプロセッサ１００の動作フローについて説明する。
【００５９】
このプロセッサ１００の動作フローは、第１実施形態におけるプロセッサ１００の動作フローに対して、ステップＳ１０６におけるＮＯ判定時の動作が異なっている。図７に示すように、本実施形態におけるプロセッサ１００の動作のうち、ステップＳ３０１〜Ｓ３０９の動作は、それぞれ第１実施形態における動作のステップＳ１０１〜Ｓ１０９に対応している。ただし、ステップＳ３０７において第１コア１１のＲＡＭ２１へのアクセス優先度は最低の０とせず、中間の値、例えば２とする。また、ステップＳ３０８において第２コア１２のＲＡＭ２１へのアクセス優先度は最高の７とせず、中間の値、例えば５とする。
【００６０】
第１実施形態と同様に、ステップＳ３０６において、第１コア１１が変数であるループ回数がゼロか否かを判定するとき、ループ回数がゼロ以外の値であればＮＯ判定となる。この場合、ステップＳ３０３には戻らず、ステップＳ３１０に進む点が第１実施形態とは異なっている。
【００６１】
ステップＳ３１０は、第１コア１１が優先度記憶部４０にアクセスして第１コア１１のＲＡＭ２１に対するアクセス優先度を下げるステップである。本実施形態では、アクセス優先度を１だけ減少（すなわちデクリメント）する。このステップを経ることにより、２に設定されていた第１コア１１の優先度は１となる。
【００６２】
次いで、ステップＳ３１１が実行される。ステップＳ３１１は、第１コア１１が優先度記憶部４０にアクセスして第２コア１２のＲＡＭ２１に対するアクセス優先度を上げるステップである。本実施形態では、アクセス優先度を１だけ増加（すなわちインクリメント）する。このステップを経ることにより、５に設定されていた第１コア１１の優先度は６となる。
【００６３】
ステップＳ３１１の後、ステップＳ３０９に進む。ステップＳ３０９は第１実施形態におけるステップＳ１０９と同一のステップであり、ループ回数がインクリメントされる。ステップＳ３０９の後はステップＳ３０３に戻る。
【００６４】
この段階で第２コア１２の処理が終了しておらず、第１コア１１との間で同期が取れていない状態であれば再びステップＳ３０６に進む。この場合もループ回数はゼロ以外の値であるから、ステップＳ３１０およびＳ３１１を経る。これにより、第１コア１１のＲＡＭ２１へのアクセス優先度は０（最低）となり、第２コア１２のＲＡＭ２１へのアクセス優先度は７（最高）となる。
【００６５】
このように、本実施形態におけるプロセッサ１００は、ループ回数の増加に伴って、段階的に、第２コア１２のアクセス優先度を、第１コア１１のアクセス優先度に較べて大きくしていく。
【００６６】
ところで、第１実施形態および第２実施形態において、第１コア１１が第２コア１２を待ち合わせるとき、待つ側の第１コア１１におけるアクセス優先度を０（最低）、待たせる側の第２コア１２におけるアクセス優先度を７（最高）に設定する例を説明した。しかしながら、待つ側のＲＡＭ２１へのアクセス優先度を０に設定してしまうと、第１コア１１が同期データ２１ｂにアクセスしづらい状態となり、第１コア１１と第２コア１２の同期の確認がしづらい状態となる。つまり、同期のタイミングが遅くなる虞がある。
【００６７】
本実施形態におけるプロセッサ１００は、ステップＳ３０７において第１コア１１のアクセス優先度を０以外の値とし、ステップＳ３０８において第２コア１２のアクセス優先度を７以外の値としている。これによれば、上記したような第１コア１１がＲＡＭ２１にアクセスしづらい状況を回避でき、また、第２コア１２がその他のマスタエレメントのＲＡＭ２１へのアクセスを妨げる原因になることを回避することができる。
【００６８】
（第４実施形態）
図８に示すように、本実施形態におけるプロセッサ１２０は時間計測部６０を備えている。時間計測部６０は、マスタエレメントたるコア１０ごとに搭載あるいは接続されている。時間計測部６０は、各コア１０が同期部２１へのアクセスに要した時間であるアクセス時間を計測する部分である。第１〜第３実施形態と同様に、第１コア１１が第２コア１２よりも先に所定の処理を終えて第２コア１２を待ち合わせる場合、時間計測部６０は、第１コア１１が同期部２１にアクセスしてから、同期データ２１ｂにおける第２フラグの状態を取得するまでの時間を計測している。なお、時間計測部６０は、本実施形態のようにマスタエレメントであるコア１０ごとにそれぞれ独立に備えていることが望ましいが、共通した一つの時間計測部６０として備えていても良い。
【００６９】
本実施形態におけるプロセッサ１２０の具体的な動作フローについて図９〜図１１を参照して説明する。
【００７０】
このプロセッサ１２０の動作フローは、第１実施形態の動作フローにおけるステップＳ１０２とステップＳ１０３の間に、コア１０のＲＡＭ２１に対するアクセス優先度を決定するためのサブルーチンステップを挿入したものである。図９に示すように、ステップＳ４０１〜Ｓ４０９は、第１実施形態におけるステップＳ１０１〜Ｓ１０９にそれぞれ対応している。第１実施形態との差異は、ステップＳ１０７に対応するステップＳ４０７と、ステップＳ１０８に対応するステップＳ４０８と、新規に導入されたステップＳ４１０であり、これらを除くステップは第１実施形態における対応するステップとそれぞれ同一であるからその説明を省略する。
【００７１】
ステップＳ４１０はステップＳ４０２の後に実行される。上記したように、ステップＳ４１０はコア１０のＲＡＭ２１に対するアクセス優先度を決定するためのサブルーチンであり、図１０に示す動作フローに従う。
【００７２】
このサブルーチンでは、まずステップＳ４１０ａが実行される。ステップＳ４１０ａは、時間計測部６０がアクセス開始時刻を取得するステップである。第１コア１１に接続された時間計測部６０は、第１コア１１がＲＡＭ２１に記憶された同期部２１ａにアクセスを開始する時刻であるアクセス開始時刻を計測する。
【００７３】
次いで、ステップＳ４１０ｂが実行される。ステップＳ４１０ｂは、第１コア１１が同期部２１ａにアクセスして第２コア１２に対応する第２フラグの値を取得するステップである。第２フラグはＯＮかＯＦＦのいずれかの値をとるので、第１コア１１はこれを取得する。
【００７４】
次いで、ステップＳ４１０ｃが実行される。ステップＳ４１０ｃは、時間計測部６０がアクセス終了時刻を取得するステップである。時間計測部６０は、第１コア１１による同期部２１ａへのアクセスが終了する時刻であるアクセス終了時刻を計測する。
【００７５】
次いで、ステップＳ４１０ｄが実行される。ステップＳ４１０ｄは、時間計測部６０がアクセス時間を算出するステップである。図１０に示すように、アクセス時間はアクセス終了時刻からアクセス開始時刻を減算したものであり、第１コア１１が第２フラグの値を取得するために同期部２１ａへのアクセスに要した時間を示している。
【００７６】
次いで、ステップＳ４１０ｅが実行される。ステップＳ４１０ｅは、第１コア１１が優先度記憶部４０にアクセスし、アクセス時間に基づいて第１コア１１のＲＡＭ２１に対するアクセス優先度Ｘを決定するステップである。第１コア１１のアクセス優先度Ｘは、図１１に示すテーブルによって予め規定されている。例えばアクセス時間が３０ｎｓであれば、優先度はＸ＝２となる。例えばアクセス時間が１２０ｎｓであれば優先度はＸ＝０（最低）となる。
【００７７】
次いで、ステップＳ４１０ｆが実行される。ステップＳ４１０ｆは、第１コア１１が優先度記憶部４０にアクセスし、アクセス時間に基づいて第２コア１２のＲＡＭ２１に対するアクセス優先度Ｙを決定するステップである。第２コア１２のアクセス優先度Ｙは、図１１に示すテーブルによって予め規定されている。例えばアクセス時間が３０ｎｓであれば、優先度はＹ＝４となる。例えばアクセス時間が１２０ｎｓであれば優先度はＹ＝６となる。なお、図１１に示す優先度に関するテーブルは一例であり、アクセス時間および、そのアクセス時間に対応するアクセス優先度は任意に設定することができる。
【００７８】
アクセス優先度ＸおよびＹが決定されたのち、このサブルーチンは終了してステップＳ４０３に進む。ステップＳ４０３は第１実施形態におけるステップＳ１０３と同一である。ステップＳ４０３がＮＯ判定の場合、ステップＳ４０７が実行される。ステップＳ４０７では第１コア１１のＲＡＭ２１に対するアクセス優先度として、ステップＳ４１０ｅで決定された優先度Ｘが指定される。次いで実行されるステップＳ４０８では第２コア１２のＲＡＭ２１に対するアクセス優先度として、ステップＳ４１０ｆで決定された優先度Ｙが指定される。その後、動作フローはステップＳ４１０に戻る。なお、本実施形態では、第１実施形態におけるステップＳ１０６に相当するループ回数による判定、およびステップＳ１０９に相当するループ回数のインクリメントは実行されない。システムバス３０の混雑状況は常に一定ではなくアクセス時間も変動するので、ステップＳ４１０を経由するループごとにアクセス優先度を変動させることが好ましい。
【００７９】
上記したように、本実施形態におけるプロセッサ１２０では、時間計測部６０がアクセス時間を計測し、コア１０が該アクセス時間に基づいて各コア１０のスレーブエレメントに対するアクセス優先度を決定する。具体的には、図１１に示すように、アクセス時間が長いほど、待たせる側のマスタエレメントのアクセス優先度を、待つ側のマスタエレメントのアクセス優先度に較べて高くする。
【００８０】
アクセス時間が長い状態とは、システムバス３０が混雑した状態にあることを意味している。本実施形態におけるプロセッサ１２０は、システムバス３０が混雑するほど待つ側であるマスタエレメントのアクセス優先度を下げる。これにより、待つ側のマスタエレメントによるシステムバス３０の占有を抑制することができる。また、システムバス３０が混雑するほど待たせる側であるマスタエレメントのアクセス優先度を上げる。これにより、待たせる側のマスタエレメントによる所定の処理をより早期に完了するように調停することができる。
【００８１】
（第５実施形態）
図１２に示すように、本実施形態におけるプロセッサ１３０はタスク優先度取得部７０を備えている。タスク優先度取得部７０は、マスタエレメントたるコア１０と優先度記憶部４０に接続されている。タスク優先度取得部７０は、各コア１０が実行中のタスクに関するタスク優先度を取得する部分である。タスク優先度とは、実行中のタスクの優先順位を定める変数であり、タスクごとに予め優先度が定められている。タスク優先度取得部７０は、このタスク優先度を取得し、コア１０のＲＡＭ２１へのアクセス優先度に反映する。
【００８２】
具体的な動作フローについて、図１３〜図１５を参照して説明する。
【００８３】
このプロセッサ１３０の動作フローは、図１３に示すように、第１実施形態の動作フローにおけるステップＳ１０７およびステップＳ１０８を、それぞれステップＳ５０７、ステップＳ５０８で示すサブルーチンステップに置換したものである。ステップＳ５０１〜Ｓ５０６およびステップＳ５０９は、第１実施形態におけるステップＳ１０１〜Ｓ１０６およびステップＳ１０９にそれぞれ相当し、その動作は第１実施形態と同一であるから説明を省略する。
【００８４】
ステップＳ５０７は、ステップＳ５０６がＹＥＳ判定の場合に実行される。ステップＳ５０７では図１４に示す処理が実行される。まずステップＳ５０７ａが実行される。ステップＳ５０７ａは、タスク優先度取得部７０が第１コア１１のタスク優先度を取得するステップである。このステップにより、第１コア１１が処理しているタスクの優先度が取得される。
【００８５】
次いで、ステップＳ５０７ｂが実行される。ステップＳ５０７ｂは、第１コア１１が優先度記憶部４０にアクセスして、第１コア１１のＲＡＭ２１に対するアクセス優先度を変更するステップである。具体的には、第１コア１１は、ステップ５０９ａにて取得されたタスク優先度に基づいて、ＲＡＭ２１に対するアクセス優先度をタスク優先度に応じた値に設定するステップである。このとき、タスク優先度に応じたアクセス優先度の値が、現在優先度情報４１として設定されているアクセス優先度より高い場合は、待つ側のコアである第１コア１１のアクセス優先度が第２コア１２のアクセス優先度より高くなる虞があるため、アクセス優先度の変更はせずこのステップを終えてもよい。このステップを終えてサブルーチンは終了する。
【００８６】
ステップＳ５０７の後、ステップＳ５０８が実行される。ステップＳ５０８では図１５に示す処理が実行される。まずステップＳ５０８ａが実行される。ステップＳ５０８ａは、タスク優先度取得部７０が第２コア１２のタスク優先度を取得するステップである。このステップにより、第２コア１２が処理すべきタスクの優先度が取得される。
【００８７】
次いで、ステップＳ５０８ｂが実行される。ステップＳ５０８ｂは、第２コア１２が優先度記憶部４０にアクセスして、第２コア１２のＲＡＭ２１に対するアクセス優先度を変更するステップである。具体的には、第２コア１２は、ステップ５１０ａにて取得されたタスク優先度に基づいて、ＲＡＭ２１に対するアクセス優先度をタスク優先度に応じた値に設定するステップである。このとき、ステップＳ５０７と同様に、タスク優先度に応じたアクセス優先度の値が、現在優先度情報４１として設定されているアクセス優先度より低い場合は、待つ側のコアである第１コア１１のアクセス優先度が第２コア１２のアクセス優先度より高くなる虞があるため、アクセス優先度の変更はせずこのステップを終えてもよい。このステップを終えてサブルーチンは終了する。
【００８８】
上記した各実施形態は、マスタエレメントたるコア１０のアクセス優先度を予め決めておくものである。これに対して、本実施形態におけるプロセッサ１３０では、各コア１０が実行中のタスク優先度に依存してスレーブエレメント２０へのアクセス優先度を変更するものである。各コア１０が処理中のタスクの優先度は、すなわち該コア１０が処理している内容の優先度に等しいので、本実施形態におけるプロセッサ１３０を採用すれば、より的確にコア１０のスレーブエレメント２０に対するアクセス優先度を決めることができる。
【００８９】
（第６実施形態）
本実施形態における制御装置は第１実施形態に対して、動作フローを変更したものである。この制御装置の構成要素は第１実施形態と同一であり、その動作フローが異なっている。図１６を参照して、本実施形態にかかるプロセッサ１００の動作フローについて説明する。
【００９０】
このプロセッサ１００の動作フローは、第１実施形態におけるプロセッサ１００の動作フローに対して、ステップＳ１０３がＮＯ判定となった場合におけるフローが異なっている。図１６に示すステップＳ６０１〜Ｓ６０５は、第１実施形態におけるステップＳ１０１〜Ｓ１０５とそれぞれ同一であるからその説明を省略する。
【００９１】
本実施形態におけるプロセッサ１００は、第１実施形態におけるステップＳ１０３に相当するステップＳ６０３がＮＯ判定になるとステップＳ６０６に進む。ステップＳ６０６は、第１コア１１が、変数であるループ回数がゼロか否かを判定するステップである。ステップＳ１０３においてリセットされた状態であればループ回数はゼロであり、ステップＳ１０６はＹＥＳ判定となる。ステップＳ６０６がＹＥＳ判定の場合には、ステップＳ６０７、ステップＳ６０８およびステップＳ６０９が実行される。ステップＳ６０７、ステップＳ６０８およびステップＳ６０９は、それぞれ第１実施形態におけるステップＳ１０７、ステップＳ１０８およびステップＳ１０９と同一の処理であるから説明を省略する。ステップＳ６０９の後、ステップＳ６１０が実行される。なお、ステップＳ６０６がＮＯ判定の場合には、ステップＳ６０７、ステップＳ６０８およびステップＳ６０９が実行されずにステップＳ６１０に進む。
【００９２】
ステップＳ６１０は、変数である「ＮＯＰ回数」をゼロにリセットするステップである。ＮＯＰ回数は、後述のステップＳ６１２において、何もせずに所定時間だけ待機する処理であるＮＯＰ（No OPeration）処理を実行した回数を示す変数である。
【００９３】
次いで、ステップＳ６１１が実行される。ステップ６１３は、第１コア１１が、ＮＯＰ回数と値Ｚとを比較し、ＮＯＰ回数がＺ以上であるか否かを判定するステップである。ここで、値Ｚは、例えば、ステップＳ６０７により設定される第１コア１１のＲＡＭ２１に対するアクセス優先度Ａと、所定の定数ＢとによりＺ＝Ｂ／（Ａ＋１）で定義される。値Ｚは、第１コア１１のアクセス優先度Ａが大きくなるほど小さい値をとる。
【００９４】
初めてステップＳ６１１が実行されるとき、前ステップＳ６１０においてＮＯＰ回数はゼロにリセットされているから、ステップＳ６１１はＮＯ判定となり、ステップＳ６１２に進む。
【００９５】
ステップＳ６１２は、第１コア１１が、特定の演算を行わず、処理の時間だけ待機するＮＯＰ処理を実行するステップである。このステップでは、第１コア１１によるスレーブエレメント２０へのアクセス等は無く、時間のみが経過する。
【００９６】
次いで、ステップＳ６１３が実行される。ステップＳ６１３は、ＮＯＰ回数を１だけ増加（すなわちインクリメント）するステップである。その後、ステップＳ６１１に戻り、再びＮＯＰ回数と値Ｚとの比較が実行される。
【００９７】
ＮＯＰ回数が値Ｚ以上となるまでステップＳ６１１〜Ｓ６１３が繰り返される。この繰り返し処理は、ＮＯＰ回数をインクリメントしながら時間だけが経過するものである。上記したとおり、値Ｚは第１コア１１のアクセス優先度Ａが大きくなるほど小さい値をとる。すなわち、第１コア１１のアクセス優先度が高いほどステップＳ６１１はＹＥＳ判定となりやすく、ＮＯＰ処理が実行される回数は少なくなる。
【００９８】
ステップＳ６１１がＹＥＳ判定になるとステップＳ６０３に進み、第１コア１１が同期部２１にアクセスして同期データ２１ｂたる第２フラグの値を確認する。つまり、第１コア１１のアクセス優先度が高いほど、所定時間内におけるステップＳ６０３の実行回数は増える。換言すれば、第１コア１１のアクセス優先度が高いほど、第１コア１１が同期データ２１ｂの更新を確認するために同期部２１ａにアクセスする周期を小さくなる。
【００９９】
第１コア１１のＲＡＭ２１に対するアクセス優先度が低い場合には、第１コア１１がＲＡＭ２１にアクセスしようとしても、バスアービタ３１の調停の結果アクセスできない可能性が高い。第１コア１１がＲＡＭ２１にアクセスする周期を大きくしてアクセス頻度を減少させることにより、バスアービタ３１の調停の結果アクセスに失敗する回数を減らし、省電力化することができる。
【０１００】
なお、本実施形態では第１コア１１のアクセス優先度に応じて、第１コア１１がＲＡＭ２１にアクセスする周期を調整したが、第２コア１２のアクセス優先度に応じて、第１コア１１がＲＡＭ２１にアクセスする周期を調整してもよい。具体的には、第２コア１２のＲＡＭ２１に対するアクセス優先度が高い場合には、第２フラグが早期に更新されることが予想されるため、第１コア１１が同期部２１ａにアクセスする周期を小さくして第２フラグが更新されることの確認の頻度を大きくするよう調整しても良い。これにより、第１コア１１と第２コア１２の同期を早期に検出することができる。一方、第２コア１２のＲＡＭ２１に対するアクセス優先度が低い場合には、第２フラグがＯＮに遷移することが比較的遅いことが予想されるため、第１コア１１が同期部２１ａにアクセスする周期を大きくしてアクセス頻度を減少させることにより省電力化することができる。
【０１０１】
（その他の実施形態）
以上、本発明の好ましい実施形態について説明したが、本発明は上記した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【０１０２】
上記した各実施形態においては、３つのマスタエレメントのうち、２つのマスタエレメント、すなわち第１コア１１と第２コア１２とが同期する場合の調停について説明したが、３つ以上のマスタエレメントの同期に拡張することができる。図１７を参照して、第１コア１１、第２コア１２および第３コア１３が同期する例について説明する。この例では、第１コア１１が、第２コア１２および第３コア１３に先んじて所定の処理を終了し、第２コア１２および第３コア１３の処理の終了を待ち合わせる状況を仮定する。
【０１０３】
まず、ステップＳ７０１が実行される。ステップＳ７０１は変数「第２ループ回数」をゼロにリセットするステップである。次いで、ステップＳ７０２が実行される。ステップＳ７０２は変数「第３ループ回数」をゼロにリセットするステップである。ステップＳ７０１およびステップＳ７０２は、第１実施形態におけるステップＳ１０１に相当する。第２ループ回数および第３ループ回数は、優先度情報４１の書き換え処理の過剰な実行をスキップするために導入される変数である。
【０１０４】
その後、ステップＳ７０３が実行される。ステップＳ７０３は、第１コア１１が同期データ２１ｂにおいて、第１コア１１に対応する第１フラグをＯＦＦからＯＮに遷移させるステップである。仮定のとおり、第１コア１１は第２コア１２および第３コア１３に先んじて処理を終えて待つ側であるから、ステップＳ７０３において第１フラグをＯＮにする。
【０１０５】
次いで、ステップＳ７０４が実行される。ステップＳ７０４は、第１コア１１が、同期データ２１ｂを参照して、第２フラグがＯＮかＯＦＦかを判定するステップであり、第１実施形態におけるステップＳ１０３に相当する。第２コア１２の処理が終了していなければステップＳ７０４はＮＯ判定となる。その後のステップＳ７０９〜Ｓ７１２は、第１実施形態におけるステップＳ１０６〜Ｓ１０９に相当する。なお、変数であるループ回数は、第２ループ回数を採用する。
【０１０６】
第２コア１２による所定の処理が終了するとステップＳ７０４はＹＥＳ判定となり、ステップＳ７０５に進む。ステップＳ７０５は、第１コア１１が、同期データ２１ｂを参照して、第３フラグがＯＮかＯＦＦかを判定するステップであり、ステップＳ７０４および第１実施形態におけるステップＳ１０３と本質的に同一である。第３コア１２の処理が終了していなければステップＳ７０５はＮＯ判定となる。その後のステップＳ７１３〜Ｓ７１６は、第１実施形態におけるステップＳ１０６〜Ｓ１０９に相当する。なお、変数であるループ回数は、第３ループ回数を採用する。
【０１０７】
第２コア１２および第３コア１３の処理が共に終了するとステップＳ７０６に進む。この状態は、第１コア１１、第２コア１２、第３コア１３が互いに同期された状態である。ステップＳ７０６は第１コア１１のアクセス優先度を３に設定して初期状態に戻すステップである。その後、ステップＳ７０７およびステップ７０８が実行される。ステップＳ７０７およびステップ７０８は、それぞれ第２コア１２および第３コア１３のアクセス優先度を３に設定して初期状態に戻すステップである。すなわち、ステップＳ７０６〜Ｓ７０８においてコア１０のＲＡＭ２１へのアクセス優先度を３に初期状態である再設定して本動作フローを終了する。換言すると、コア１０のＲＡＭ２１へのアクセス優先度は初期状態に戻る。これにより、バスアービタ３１が初期状態と同じように第１コア１１、第２コア１２および第３コア１３を平等に調停することができるようになる。
【０１０８】
なお、上記説明では、第３コア１３に対応する第３フラグよりも第２フラグを先に確認する動作フローについて説明したが、フラグの確認順は問わない。
【０１０９】
また、上記した各実施形態では、コア１０の優先度を変更した後に、フラグの更新を確認するループを実行する例について説明した。具体的には、例えば第１実施形態において、ステップＳ１０３の後に、第１コア１１の優先度を変更するステップＳ１０７、第２コア１２の優先度を変更するステップＳ１０８が実行される。しかしながら、ステップＳ１０７およびステップＳ１０８を、ステップＳ１０２の後、ステップＳ１０３の前に実行するようにしても良い。
【０１１０】
また、上記した各実施形態では、マスタエレメントとしてコア１０を例に説明したが、マスタエレメントはコプロセッサやＤＭＡコントローラであっても良い。
【０１１１】
バスアービタ３１は、アクセス元の、アクセス先へのアクセス優先度が同一のときは、例えばラウンドロビンに従って調停を行う。
【０１１２】
なお、上記した各実施形態では、特許請求の範囲に記載の制御装置をプロセッサとして記載したが、制御装置は、プロセッサ、プロセッサを含むマイコン、該マイコンを含むＥＣＵであっても良く、その形態は上記した例に限定されない。
【符号の説明】
【０１１３】
１０…コア（マスタエレメント），２０…スレーブエレメント，２１…同期部，２１ａ…同期データ，３０…システムバス，３１…バスアービタ，４０…優先度記憶部，４１…優先度情報
【図１】
0006536441.tif 000002
【図２】
0006536441.tif 000003
【図３】
0006536441.tif 000004
【図４】
0006536441.tif 000005
【図５】
0006536441.tif 000006
【図６】
0006536441.tif 000007
【図７】
0006536441.tif 000008
【図８】
0006536441.tif 000009
【図９】
0006536441.tif 000010
【図１０】
0006536441.tif 000011
【図１１】
0006536441.tif 000012
【図１２】
0006536441.tif 000013
【図１３】
0006536441.tif 000014
【図１４】
0006536441.tif 000015
【図１５】
0006536441.tif 000016
【図１６】
0006536441.tif 000017
【図１７】
0006536441.tif 000018