(57)【要約】【課題】マルチコアマイコンにおける処理のリアルタイム性を維持しつつ、共有リソースの利用効率を向上させる。【解決手段】ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用要求を使用要求レジスタ５０に格納し、ＰＥ１０は、使用要求レジスタ５０に保持された要求状態に基づいてＰＥ２０−１、２０−２、２０−３からの共有リソース３０の使用要求を受け付け、使用要求を受け付けたＰＥ２０−１、２０−２、２０−３間において、共有リソース３０の割り当てに関するポリシ情報に基づいて共有リソース３０の使用のスケジューリングを実行し、使用権限制御装置６０は、共有リソース３０の使用のスケジューリング結果に基づいて、共有リソース３０の使用権限をＰＥ２０−１、２０−２、２０−３に付与し、ＰＥ２０−１、２０−２、２０−３は、使用権限制御装置６０から付与された使用権限に基づいて共有リソース３０を排他的に使用する。【選択図】図１
2019128711.tif 000002
【特許請求の範囲】
【請求項１】
共有リソースの割り当てに関するポリシ情報を記憶し、前記ポリシ情報に基づいて前記共有リソースの割り当て処理を実行する第１演算装置を備える電子制御装置。
【請求項２】
前記ポリシ情報に基づいて設定された前記共有リソースの使用権限の有無および使用許可量のうちいずれか少なくとも一方を保持する使用権限管理装置と、
前記使用権限管理装置の動作状態に基づいて前記共有リソースを排他的に使用する複数の第２演算装置と、
前記複数の第２演算装置による前記共有リソースの使用要求の有無を保持する記憶装置とをさらに備える請求項１に記載の電子制御装置。
【請求項３】
前記第１演算装置は、前記記憶装置に保持された要求状態および前記ポリシ情報に基づいて、前記複数の第２演算装置に前記共有リソースの使用権限を割り当てる請求項２に記載の電子制御装置。
【請求項４】
前記第１演算装置は、
前記記憶装置に保持された要求状態および前記ポリシ情報に基づいて、前記複数の第２演算装置から選択した１つの第２演算装置の共有リソース使用権限が有効となるよう前記使用権限管理装置の動作状態を更新し、
前記使用許可量と所定値との比較結果に基づいて、前記選択した１つの第２演算装置の共有リソース使用権限が無効となるよう前記使用権限管理装置の動作状態を更新する請求項３に記載の電子制御装置。
【請求項５】
前記第１演算装置は、
所定の制御周期を時間単位として動作し、
前記制御周期内の所定期間に前記使用許可量を再設定する請求項４に記載の電子制御装置。
【請求項６】
前記第１演算装置は、前記複数の第２演算装置から前記記憶装置へ通知された前記共有リソースの使用要求のうち、前記制御周期内の所定期間になされた使用要求のみ有効とするよう制御する請求項５に記載の電子制御装置。
【請求項７】
前記使用権限管理装置と前記第１演算装置は、同一または異なるシリコンチップ上に実装されている請求項２に記載の電子制御装置。
【請求項８】
前記使用権限管理装置は、１つ以上のカウンタを備え、
所定の時間経過、または前記共有リソースへのアクセスに応じて前記カウンタのカウント値を更新する請求項２に記載の電子制御装置。
【請求項９】
前記使用権限管理装置は、前記カウンタのカウント動作開始を示す動作開始割り込みを前記第２演算装置に要求することにより、前記共有リソースの使用権限が前記第２演算装置当該装置に付与された状態であることを通知する請求項８に記載の電子制御装置。
【請求項１０】
前記使用権限管理装置は、前記カウンタのカウント値が所定値以下、もしくは未満であることを示すアンダフロー割り込みを前記第２演算装置に要求することにより、前記共有リソースの使用権限が前記第２演算装置に付与された状態ではなくなったことを通知する請求項８に記載の電子制御装置。
【請求項１１】
前記使用権限管理装置は、前記カウンタのカウント値が所定値以下、もしくは未満であることを示すアンダフロー割り込みを前記第２演算装置および前記第１演算装置に要求することにより、前記第１演算装置の所定の処理を起動する請求項８に記載の電子制御装置。
【請求項１２】
前記共有リソースを使用する複数の第２演算装置と、
前記第２演算装置からの使用要求を記憶する記憶装置と、
前記共有リソースの使用のスケジューリング結果に基づいて、前記共有リソースの使用権限を前記第２演算装置に付与する使用権限制御装置とをさらに備え、
前記第１演算装置は、
前記第２演算装置からの使用要求を受け付け、
前記使用要求を受け付けた前記第２演算装置間において、前記ポリシ情報に基づいて前記共有リソースの使用のスケジューリングを実行し、
前記第２演算装置は、前記使用権限制御装置から付与された使用権限に基づいて前記共有リソースを排他的に使用する請求項１に記載の電子制御装置。
【請求項１３】
前記使用要求を受け付けと、前記共有リソースの使用のスケジューリングと、前記共有リソースの使用権限の付与が制御周期内に繰り返して実行されるか、あるいは、
前記共有リソースの使用のスケジューリングと、前記共有リソースの使用権限の付与が制御周期内に繰り返して実行され、前記使用要求を受け付けが、前記共有リソースの使用のスケジューリングが実行される制御周期の前の制御周期内に実行される請求項１２に記載の電子制御装置。
【請求項１４】
前記使用権限制御装置は、前記第２演算装置のそれぞれと１対１に対応付けられたカウンタを備え、
前記第２演算装置は、自身に対応付けられたカウンタの動作に基づいて前記共有リソースを排他的に使用する請求項１２に記載の電子制御装置。
【請求項１５】
共有リソースを使用する複数の演算装置を備え、
前記複数の演算装置は、
前記共有リソースの使用を要求し、
前記共有リソースの使用の要求に応じて前記複数の演算装置のそれぞれに時分割的に割り当てられた前記共有リソースの使用権限に基づいて、前記共有リソースを排他的に使用する電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアマイコン（メニーコアマイコンとも言う）の共有リソースに対するアクセスを制御可能な電子制御装置に関する。
【背景技術】
【０００２】
半導体プロセスの微細化とともに、組み込みマイコンの高集積化と高機能化が急速に進展している。組み込みマイコンの重要な応用先の１つとして、自動車分野における車載電子制御装置（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ、ＥＣＵ）が挙げられる。システムコスト削減に対する要求を背景に、複数台のＥＣＵにより実現されていた機能を１台のＥＣＵに集約可能とする技術が求められている。期待される技術としては、例えばマルチコアを活用した高性能な組み込みマイコンを搭載する統合ＥＣＵや、統合ＥＣＵに集約された各機能を実現するアプリケーションを適切に実行するためのアプリケーション実行基盤が挙げられる。
【０００３】
最終製品の安全性に大きく関わる車載ＥＣＵは、その実装品質や安全性を担保する機能安全フレームワークとして、車載組み込みシステム向けの国際規格であるＩＳＯ２６２６２に依拠している。ＩＳＯ２６２６２は、車載組み込みシステムにおける高い安全性・信頼性と、ソフトウェア開発効率化の両立を目標に規格化され、自動車安全度水準（Ａｕｔｏｍｏｔｉｖｅ  Ｓａｆｅｔｙ  Ｉｎｔｅｇｒｉｔｙ  Ｌｅｖｅｌ、ＡＳＩＬ）と呼ばれる指標を導入し、ＡＳＩＬ導出のための３つのファクタ（暴露性・回避性・危害度）と、それらを用いたハザード分析・リスク評価手法を定めている。ＡＳＩＬとは、車載組み込みシステムで起こり得る障害（ハザード）を回避するために実現しなければならない安全性のレベルを、５段階で表現したものである。
【０００４】
ＩＳＯ２６２６２準拠に際し、特に重視されるのは、アプリケーション間での無干渉（Ｆｒｅｅｄｏｍ  Ｆｒｏｍ  Ｉｎｔｅｒｆｅｒｅｎｃｅ、ＦＦＩ）の保証である。ＦＦＩの考え方では、相互に異なるＡＳＩＬを付与された複数のアプリケーションが１つのＥＣＵ上で混在して実行される場合に、より低いＡＳＩＬを持つアプリケーションで発生した誤動作が、より高いＡＳＩＬを持つアプリケーションに伝播することを防ぐことが求められる。ＩＳＯ２６２６２が規定する、アプリケーション間で発生し得る干渉としては、タイミングと実行（時間ドメイン）、メモリ、情報の交換の３タイプが存在する。
【０００５】
時間ドメインにおける無干渉性とは、あるアプリケーションの実行中に発生した障害や、想定外の割り込み処理が、安全に関わる他のアプリケーションの実行を妨げないことである。そのための典型的な実現手段としては、実行基盤となるリアルタイムＯＳを構成する要素の一部として、時間管理用のハードウェア（ウォッチドッグタイマなど）とソフトウェアの組み合わせにより、アプリケーション実行の静的または動的スケジューリング機能と、実行時間の監視機能を持たせたものがある。車載ＥＣＵ上で同時に動作する複数のアプリケーション（もしくはアプリケーションの構成要素であるタスク）の実行スケジュールを決定する際には、マイコン内蔵または外付けのメモリや周辺モジュールなどの共有リソースへのアクセスに関する、アプリケーション間の依存関係に矛盾が生じないことが求められる。
【０００６】
同時に実行するアプリケーション、またはアプリケーションを実行する演算要素が比較的少数である場合には、リソース共有やアクセスの排他制御を実現する以下の技術が利用されている。
（１）リアルタイムＯＳのスケジューラが管理する時間（Ｔｉｃｋ）を単位として、アプリケーション間の依存関係を維持しつつ適切な順序で、各アプリケーションに対し、固定タイムスロットを割り当てる時間駆動スケジューリング。
（２）共有リソースごとに設定したロック変数に対する、マイコンのアーキテクチャがサポートする手段を利用したロック／アンロック操作によるアクセス排他制御。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】澤田勉（２００６）『わかりやすい組込みシステム構築技法−ソフトウェア編−』共立出版
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、時間駆動スケジューリングでは、共有リソースを専有する時間がＴｉｃｋ未満である、もしくはアプリケーション間で大きく異なる場合に、共有リソースの利用効率が低下する。加えて、特定のアプリケーションに対する共有リソースの使用権限割り当て間隔がアプリケーション数に比例して増大するため、処理のリアルタイム性が低下する。
【０００９】
アクセス排他制御では、スピンロック処理に起因する演算要素の利用効率低下や演算処理ボトルネックが発生し、ＦＦＩの実現に必要な優先度に基づく厳密なスケジュール管理も不可能である。
【００１０】
このため、上述したいずれの技術を適用した場合においても、統合ＥＣＵに搭載される車載マルチコアマイコンにソフトウェア実行基盤が集約され、さらにその上で動作する多数のアプリケーションがマイコン内外のリソースを共有する環境では、車載組み込みシステムに特有の要件であるハードリアルタイム性と、マイコン上で並列動作するアプリケーション（もしくは演算要素）数の増加トレンドに適応し続けることが可能なスケーラブルなリソース共有制御の実現とを両立させることが困難だった。
【００１１】
本発明は、上記事情に鑑みなされたものであり、その目的は、マルチコアマイコンにおける処理のリアルタイム性を維持しつつ、共有リソースの利用効率を向上させることが可能な電子制御装置を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、第１の観点に係る電子制御装置は、共有リソースの割り当てに関するポリシ情報を記憶し、前記ポリシ情報に基づいて前記共有リソースの割り当て処理を実行する第１演算装置とを備える。
【発明の効果】
【００１３】
本発明によれば、マルチコアマイコンにおける処理のリアルタイム性を維持しつつ、共有リソースの利用効率を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、第１実施形態に係る電子制御装置に適用されるマイコンの構成例を示すブロック図である。
【図２】図２は、図１の使用権限制御装置の構成例を示すブロック図である。
【図３】図３は、図２の使用権限制御装置の変形例を示すブロック図である。
【図４】図４は、図１のマイコンの変形例を示す図である。
【図５】図５は、図１の制御テーブルの構成例を示す図である。
【図６】図６は、図１の使用要求レジスタの構成例を示す図である。
【図７】図７は、図４のＰＥ間割り込み制御装置の構成例を示す図である。
【図８】図８（ａ）および図８（ｂ）は、図１のマイコンの制御周期と共有リソース使用要求タイムウィンドウとの関係を示すタイミングチャートである。
【図９】図９は、第１実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１０】図１０は、第１実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１１】図１１は、第１実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１２】図１２は、第２実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１３】図１３は、第２実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１４】図１４は、第２実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１５】図１５は、第３実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１６】図１６は、第３実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１７】図１７は、第３実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１８】図１８は、第３実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図１９】図１９は、第４実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図２０】図２０は、第４実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図２１】図２１は、第４実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【図２２】図２２は、図１のマイコンにおける使用権限の付与順序決定処理を示すフローチャートである。
【図２３】図２３は、図１のマイコンにおける使用権限の付与先決定処理を示すフローチャートである。
【図２４】図２４は、図１または図４のマイコンの図８（ａ）の動作時における消費電力の時間変化の一例を示す図である。
【図２５】図２５は、図１または図４のマイコンの図８（ｂ）の動作時における消費電力の時間変化の一例を示す図である。
【図２６】図２６は、本実施形態の比較例に係るマイコンの構成例を示すブロック図である。
【図２７】図２７は、図２６のマイコンにおけるロック変数を利用したアクセス排他制御方法を示すタイミングチャートである。
【図２８】図２８は、図２６のマイコンにおける消費電力の時間変化の一例を示す図である。
【発明を実施するための形態】
【００１５】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１６】
また、以下の説明において、「メモリ」はプログラムやデータを記憶する１つ以上の実体であり、各メモリはそれぞれ１以上の不揮発性メモリ、揮発性メモリ、ＲＯＭ、ＲＡＭ、Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ（ＦＩＦＯ）型バッファメモリ、リング型バッファメモリ、インタリーブ型バッファメモリ、命令キャッシュ、データキャッシュまたはレジスタから構成することができる。メモリの一部または全部は、マイコン（マイクロコンピュータとも言う）と同一のシリコンチップ上に形成されていてもよいし、異なるシリコンチップ上に形成されていてもよい。メモリは、さらに、マイコンのメモリアドレス空間を経由してアクセス可能な不揮発性外部記憶デバイス（例えば、ハードディスクドライブまたはソリッドステートドライブ、メモリカードなどの記録媒体）を含んでいてもよい。
【００１７】
また、以下の説明において、マイコンは複数の演算要素（プロセッサエレメント、ＰＥ）を含むマルチコアマイコンである。ＰＥを構成する１つ以上のＣＰＵコアの実装は、それぞれ１つの命令実行ユニットを備える非スーパースカラ方式でもよいし、２以上の命令実行ユニットを備えるスーパースカラ方式でもよい。ＰＥもしくはＣＰＵコアの故障や誤動作を検出する目的で、１つのＰＥを構成する、物理的に複数のＣＰＵコア上で同一プログラムを同時に実行する、ロックステップ構成を採用してもよい。マイコンは、ＣＰＵコアとは独立に、もしくはＣＰＵコアからの指示に基づいて、メモリアクセスを実行するハードウェア回路（例えばＤｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ、ＤＭＡＣ）を含んでいてもよい。
【００１８】
また、以下の説明において、「ｋｋｋ部」の表現にて機能を説明することがあるが、機能は１以上のプログラムが命令実行ユニットで実行されることで実現されてもよいし、１以上のハードウェア回路（例えば、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）やＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ））によって実現されてもよい。機能が命令実行ユニットによって実現される場合、定められた処理が適宜メモリおよび／または通信用外部インタフェースを用いながら行われるため、機能は命令実行ユニットの少なくとも一部とされてもよい。機能を主語として説明された処理は、命令実行ユニットまたはその命令実行ユニットを有するＣＰＵコアが行う処理としてもよい。また、命令実行ユニットは、処理の一部または全部を行うハードウェア回路を含んでいてもよい。プログラムは、プログラムソースから、マイコンがアクセス可能な１つ以上のメモリにインストールされてもよい。プログラムソースは、例えば、不揮発性メモリ上の特定領域、またはマイコンが読み取り可能な記録媒体（例えば、メモリカード）にあってもよい。なお、各機能の説明は一例であり、複数の機能が１つの機能にまとめられたり、１つの機能が複数の機能に分割されたりしてもよい。
【００１９】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号または参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用または参照符号に代えて、その要素に割り振られたＩＤを使用することがある。
【００２０】
図１は、第１実施形態に係る電子制御装置に適用されるマイコンの構成例を示すブロック図である。
図１において、マイコン１は、内蔵機能モジュールとして、複数のＰＥ１０、２０−１、２０−２、２０−３、共有リソース３０、使用要求レジスタ５０および使用権限制御装置６０を含む。ＰＥ１０、２０−１、２０−２、２０−３は、演算要素として用いることができる。ＰＥ１０、２０−１、２０−２、２０−３、共有リソース３０、使用要求レジスタ５０および使用権限制御装置６０は、ＰＥ間接続バス４０を介して相互接続される。ＰＥ１０および使用権限制御装置６０は、同一のシリコンチップ上に実装されていてもよいし、異なるシリコンチップ上に実装されていてもよい。使用権限制御装置６０は、図３の使用権限制御装置６０Ａであってもよい。ＰＥ１０は、共有リソース管理プログラムを実行するマスタＰＥとして動作する。ＰＥ２０−１、２０−２、２０−３は、共有リソース管理プログラム以外のユーザプログラム（以下アプリケーションとも呼ぶ）を実行するサテライトＰＥとして動作する。なお、マスタＰＥでアプリケーションを動作させてもよい。ＰＥ１０が共有リソース管理プログラムを実行することにより、ＰＥ２０−１、２０−２、２０−３間での共有リソース３０の割り当てに関するポリシ情報に基づいて、共有リソース３０の割り当て処理を実現することができる。各ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用を要求し、共有リソース３０の使用の要求に応じて時分割的に割り当てられた共有リソース３０の使用権限に基づいて、共有リソース３０を排他的に使用することができる。
【００２１】
この時、ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用要求を使用要求レジスタ５０に格納する。ＰＥ１０は、使用要求レジスタ５０に保持された要求状態に基づいてＰＥ２０−１、２０−２、２０−３からの共有リソース３０の使用要求を受け付ける。そして、ＰＥ１０は、使用要求を受け付けたＰＥ２０−１、２０−２、２０−３間において、共有リソース３０の割り当てに関するポリシ情報に基づいて共有リソース３０の使用のスケジューリングを実行する。使用権限制御装置６０は、共有リソース３０の使用のスケジューリング結果に基づいて、共有リソース３０の使用権限をＰＥ２０−１、２０−２、２０−３に付与する。ＰＥ２０−１、２０−２、２０−３は、使用権限制御装置６０から付与された使用権限に基づいて共有リソース３０を排他的に使用する。
【００２２】
ここで、共有リソース３０の割り当てに関するポリシ情報は、ＰＥ２０−１、２０−２、２０−３ごとにソフトウェアまたはファームウェア上で個別に設定することができる。このため、ＰＥ２０−１、２０−２、２０−３が受け持つ処理内容や処理が遅れた時の危害度などに応じて、ＰＥ２０−１、２０−２、２０−３に対する共有リソース３０の使用の優先度や使用時間を柔軟に設定することができ、共有リソース３０を使用するＰＥ２０−１、２０−２、２０−３の個数が増大した場合においても、ＰＥ２０−１、２０−２、２０−３の処理のリアルタイム性を維持することが可能となる。
【００２３】
また、ＰＥ１０が共有リソース３０の使用のスケジューリングを実行し、使用権限制御装置６０が共有リソース３０の使用権限をＰＥ２０−１、２０−２、２０−３に付与することにより、ＰＥ２０−１、２０−２、２０−３による共有リソース３０の占有状態および解放状態をＰＥ１０、２０−１、２０−２、２０−３が管理する必要がなくなり、ＰＥ１０、２０−１、２０−２、２０−３の負荷を低減することが可能となる。
【００２４】
さらに、使用権限制御装置６０が共有リソース３０の使用権限を管理することにより、リアルタイムＯＳが管理する制御周期に同期してＰＥ２０−１、２０−２、２０−３間での共有リソース３０の使用権限を切り替える必要がなくなり、ＰＥ２０−１、２０−２、２０−３の共有リソース３０の使用時間の粒度を細かくすることができる。このため、１制御周期内において、使用要求を出したＰＥ２０−１、２０−２、２０−３に対して少なくとも１回は共有リソース３０の使用を可能としつつ、ＰＥ２０−１、２０−２、２０−３の優先度に応じて共有リソース３０の占有時間を異ならせることができ、マルチコアマイコンにおける処理のリアルタイム性を維持しつつ、共有リソース３０の利用効率を向上させることが可能となる。
【００２５】
さらに、ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用要求を使用要求レジスタ５０に格納し、ＰＥ１０は、使用要求レジスタ５０に保持された要求状態に基づいてＰＥ２０−１、２０−２、２０−３からの共有リソース３０の使用要求を受け付けることにより、ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用権限が付与されるまで共有リソース３０の使用要求を何度も出す必要がなくなるとともに、スピンロックに起因する演算効率の低下を抑制することができる。
【００２６】
以下、図１のマイコン１の構成について具体的に説明する。
ＰＥ１０は、所定の命令セットアーキテクチャに従って作成されたプログラムを実行する１つ以上のＣＰＵコア１００−０、ＰＥ１０に関連する割り込み要求を制御する割り込みコントローラ１１０−０、ＣＰＵコア１００−０で実行されるプログラムからのアクセス要求に応じて、ＰＥ１０とＰＥ間接続バス４０との間のアクセスを制御するバスインタフェース１２０−０、プログラムおよび／またはプログラム実行に必要なデータを格納するキャッシュメモリおよび／またはＲＡＭメモリからなるＰＥ内部メモリ１３０−０、共有リソース３０のアクセス制御に必要なポリシ情報を格納する制御テーブル１４０を含む。
【００２７】
割り込みコントローラ１１０−０は割り込みコントローラ接続インタフェース１１１−０により、バスインタフェース１２０−０はバスインタフェース接続インタフェース１２１−０により、ＰＥ内部メモリ１３０はＰＥ内部メモリ−ＣＰＵコア間接続インタフェース１３２−０により、それぞれＣＰＵコア１００−０との間で相互接続される。さらに、ＰＥ内部メモリ１３０−０はＰＥ内部メモリ−バスインタフェース間接続インタフェース１３１−０により、制御テーブル１４０は制御テーブル接続インタフェース１４１により、それぞれバスインタフェース１２０−０との間で相互接続される。割り込みコントローラ１１０−０には、ＰＥ１０に対する割り込み要求を示す信号として、少なくとも使用権限制御装置６０が出力する使用権限制御割り込み信号６１が入力される。なお、制御テーブル１４０は、ＰＥ内部メモリ１３０−０とは独立したメモリ、ＰＥ内部メモリ１３０−０の一部、もしくはＰＥ間接続バス４０に接続されたＰＥ１０外部のメモリ（図示せず）のいずれかとして構成されてもよい。
【００２８】
ＰＥ２０−１は、ＰＥ１０と共通の所定の命令セットアーキテクチャに従って作成されたプログラムを実行する１つ以上のＣＰＵコア１００−１、ＰＥ２０−１に関連する割り込み要求を制御する割り込みコントローラ１１０−１、ＣＰＵコア１００−１で実行されるプログラムからのアクセス要求に応じて、ＰＥ２０−１とＰＥ間接続バス４０との間のアクセスを制御するバスインタフェース１２０−１、プログラム、および／またはプログラム実行に必要なデータを格納するキャッシュメモリおよび／またはＲＡＭメモリからなるＰＥ内部メモリ１３０−１を含む。割り込みコントローラ１１０−１は割り込みコントローラ接続インタフェース１１１−１により、バスインタフェース１２０−１はバスインタフェース接続インタフェース１２１−１により、ＰＥ内部メモリ１３０−１はＰＥ内部メモリ−ＣＰＵコア間接続インタフェース１３２−１により、それぞれＣＰＵコア１００−１との間で相互接続される。さらに、ＰＥ内部メモリ１３０−１はＰＥ内部メモリ−バスインタフェース間接続インタフェース１３１−１により、バスインタフェース１２０−１との間で相互接続される。割り込みコントローラ１１０−１には、ＰＥ２０−１に対する割り込み要求を示す信号として、少なくとも使用権限制御装置６０が出力する使用権限制御割り込み信号６２−１が入力される。
【００２９】
ＰＥ２０−２、２０−３もＰＥ２０−１同様に構成することができる。ＰＥ２０−２、２０−３の割り込みコントローラには、当該ＰＥ２０−２、２０−３に対する割り込み要求を示す信号として、少なくとも使用権限制御装置６０が出力する使用権限制御割り込み信号６２−２、６２−３が入力される。使用権限制御割り込み信号６２−１、６２−２、６２−３はＰＥ２０−１、２０−２、２０−３ごとに独立した信号である。
【００３０】
共有リソース３０は、複数のＰＥ２０−１、２０−２、２０−３で動作するアプリケーションが、共有リソース管理プログラムの制御に従って時分割の態様で共有する資源である。共有リソース３０は、例えば、マイコン１の外部に接続されたハードウェアとの通信を制御する通信モジュールのような、１つ以上のマイコン内蔵周辺モジュールや、ＰＥ１０、２０−１、２０−２、２０−３内部もしくは外部に接続された１つ以上のメモリのうちの少なくとも一部領域であってよい。説明を簡単にするため、共有リソース３０は１つのみ図示するが、２つ以上であっても構わない。
【００３１】
図２は、図１の使用権限制御装置の構成例を示すブロック図である。
図２において、使用権限制御装置６０は、ＰＥ間接続バス４０を経由した使用権限制御装置６０内部の制御レジスタに対するアクセスを制御するバスインタフェース６００、４つのハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４、各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対するトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４を生成するトリガ制御部６２０、各ＰＥ１０、２０−１、２０−２、２０−３への使用権限制御割り込み信号６１、６２−１、６２−２、６２−３を生成する割り込み要求制御部６３０を含む。トリガ制御部６２０は、トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４をハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４ごとに独立して出力する。ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４の個数は、共有リソース３０を使用するアプリケーションが動作するサテライトＰＥ数以上である。各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４はハードウェアタイマチャネル接続インタフェース６１１により、トリガ制御部６２０はトリガ制御部接続インタフェース６２１により、割り込み要求制御部６３０は割り込み要求制御部接続インタフェース６３１により、それぞれバスインタフェース６００との間で相互接続される。
【００３２】
ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４は、当該チャネルの動作状態を示すチャネル状態レジスタ６１５、現在のカウント値を保持する現カウント値レジスタ６１６、カウント開始時に現カウント値レジスタ６１６にロードする初期カウント値を保持する初期カウント値レジスタ６１７を、チャネルごとに独立に備える。各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４は、ハードウェアタイマチャネル接続インタフェース６１１からチャネル状態レジスタ６１５、現カウント値レジスタ６１６および初期カウント値レジスタ６１７へのアクセス要求に応答し、指定されたチャネル状態レジスタ６１５、現カウント値レジスタ６１６および初期カウント値レジスタ６１７への読み書きが実行されるよう構成する。各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４は、チャネル状態レジスタ６１５の内容により識別が可能な、少なくともカウント動作中およびカウント停止中の２つの状態を持ち、以下の機能を備える。
【００３３】
（１）トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４が、自チャネルのカウント動作の開始を指示する場合には、初期カウント値レジスタ６１７の内容を現カウント値レジスタ６１６にロードし、チャネル状態レジスタ６１５の内容がカウント動作中を示す値となるよう更新する。この時、現カウント値レジスタ６１６の内容が、図示しない手段により事前に定義された下限値（例えばゼロ）より大きい場合に、所定の時間が経過するごとに現カウント値レジスタ６１６の内容をデクリメントする。
【００３４】
（２）トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４が、自チャネルのカウント動作の停止を指示する場合には、チャネル状態レジスタ６１５の内容がカウント停止中を示す値となるよう更新し、現カウント値レジスタ６１６の内容を保持する。
【００３５】
（３）ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４がカウント動作中、当該チャネルの現カウント値レジスタ６１６の内容が前記下限値以下であるか否かに応じてそれぞれ真／偽となる比較結果を、タイマ値比較結果信号６１３−１、６１３−２、６１３−３、６１３−４のうち自チャネルのタイマ値比較結果信号として出力する。
【００３６】
なお、カウント停止中のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対するカウント停止指示は無効な指示として無視する。また、カウント動作中のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対するカウント開始指示は、カウント動作を継続する有効な指示と解釈する。ただし、カウント開始指示に応じ改めて初期カウント値レジスタ６１７の内容を現カウント値レジスタ６１６にコピーするか否かを、図示しない手段により選択可能としてよい。
【００３７】
トリガ制御部６２０は、１つ以上のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対し、同時にカウント開始を指示するビットマップ形式の開始トリガレジスタ６２５、同時にカウント停止を指示するビットマップ形式の停止トリガレジスタ６２６を備える。トリガ制御部６２０は、トリガ制御部接続インタフェース６２１から開始トリガレジスタ６２５および停止トリガレジスタ６２６へのアクセス要求に応答し、指定された開始トリガレジスタ６２５および停止トリガレジスタ６２６への書き込みが実行されるよう構成する。開始トリガレジスタ６２５への書き込み時、トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４のうち、カウント開始を指示するフィールド値（例えば、値１）を設定された１つ以上のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対し、当該チャネルへのトリガ出力を行うトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４としてカウント開始を指示する所定の信号を同時に出力する。それ以外のフィールド値（例えば、値０）を設定されたハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対しては、当該チャネルへのトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４としてチャネル状態の維持を指示する所定の信号を同時に出力する。
【００３８】
また、停止トリガレジスタ６２６への書き込み時、トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４のうち、カウント停止を指示するフィールド値（例えば、値１）を設定された１つ以上のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対し、当該チャネルへのトリガ出力を行うトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４としてカウント停止を指示する所定の信号を同時に出力する。それ以外のフィールド値（例えば、値０）を設定されたハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対しては、当該チャネルへのトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４としてチャネル状態の維持を指示する所定の信号を同時に出力する。
【００３９】
割り込み要求制御部６３０は、ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４と、割り込み先となるＰＥ１０、２０−１、２０−２、２０−３（すなわち、各ＰＥ１０、２０−１、２０−２、２０−３に接続される使用権限制御割り込み信号６１、６２−１、６２−２、６２−３）との関連付けを定義するチャネルマッピングレジスタ６３７、割り込み要求の対象となるイベント（以下、割り込み要求対象イベントと言う）の発生状態を割り込み先となるＰＥ１０、２０−１、２０−２、２０−３ごと、かつ要因ごとに保持する割り込み要因レジスタ６３５、割り込み要求対象イベントが発生した場合に割り込み要求を許可するかどうかを割り込み先となるＰＥ１０、２０−１、２０−２、２０−３ごと、かつ要因ごとに設定する割り込みイネーブルレジスタ６３６を備える。割り込み要求制御部６３０は、割り込み要求制御部接続インタフェース６３１から割り込み要因レジスタ６３５、割り込みイネーブルレジスタ６３６およびチャネルマッピングレジスタ６３７へのアクセス要求に応答し、指定された割り込み要因レジスタ６３５、割り込みイネーブルレジスタ６３６およびチャネルマッピングレジスタ６３７への読み書きが実行されるよう構成する。
【００４０】
割り込み要求対象イベントとして、各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４が出力するタイマ値比較結果信号６１３−１、６１３−２、６１３−３、６１３−４が偽から真に遷移、すなわちカウント動作中の当該ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４において現カウント値が所定の下限値以下となったことを検出したものとする。この時、割り込み要求制御部６３０は、チャネルマッピングレジスタ６３７に設定された関連付け先となるＰＥ１０、２０−１、２０−２、２０−３を特定し、当該ＰＥ１０、２０−１、２０−２、２０−３への割り込み要求対象イベントの発生状態を保持する割り込み要因レジスタ６３５において、使用権限付与期間終了イベントを示すフィールドに所定の値（例えば、値１）を設定する。
【００４１】
当該ＰＥ１０、２０−１、２０−２、２０−３にて使用権限付与期間終了イベント発生時に割り込み要求を許可するよう、割り込みイネーブルレジスタ６３６に設定されている場合には、さらに使用権限制御割り込み信号６１、６２−１、６２−２、６２−３を経由し、当該ＰＥ１０、２０−１、２０−２、２０−３に対する割り込みを要求する。使用権限制御装置６０からの割り込み要求を検出したＰＥ１０、２０−１、２０−２、２０−３では、自ＰＥ内のいずれかのＣＰＵコアで動作する割り込みハンドラの処理の一部として、処理本体の実行後には、割り込み要因レジスタ６３５への書き込みにより、使用権限付与期間終了イベント発生を示すフィールド値を無効な値（例えば、値０）に更新し、当該イベントによる割り込み要求を無効化する。
【００４２】
ここで、ＰＥ２０−１、２０−２、２０−３は使用権限制御装置６０からの割り込みに基づいて共有リソース３０を解放することができる。このため、共有リソース３０の使用時間がＰＥ２０−１、２０−２、２０−３ごとに個別に設定されている場合においても、ＰＥ２０−１、２０−２、２０−３が共有リソース３０の使用時間を監視することなく、共有リソース３０を解放することができ、ＰＥ２０−１、２０−２、２０−３の負荷を低減することができる。
【００４３】
図３は、図２の使用権限制御装置の変形例を示すブロック図である。使用権限制御装置６０Ａのうち、図２の使用権限制御装置６０と同じ符号を持つ要素は共通であるため、説明の一部を省略する。
図３において、使用権限制御装置６０Ａは、ＰＥ間接続バス４０を経由した使用権限制御装置６０Ａ内部の制御レジスタに対するアクセスを制御するバスインタフェース６００、４つのハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４、ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対するトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４を生成するトリガ制御部６２０、各ＰＥ１０、２０−１、２０−２、２０−３への使用権限制御割り込み信号６１、６２−１、６２−２、６２−３を生成する割り込み要求制御部６３０Ａを含む。各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４はハードウェアタイマチャネル接続インタフェース６１１により、トリガ制御部６２０はトリガ制御部接続インタフェース６２１により、割り込み要求制御部６３０Ａは割り込み要求制御部接続インタフェース６３１により、それぞれバスインタフェース６００との間で相互接続される。
【００４４】
使用権限制御装置６０Ａのハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４およびトリガ制御部６２０の構成と機能は、使用権限制御装置６０と共通である。
【００４５】
割り込み要求制御部６３０Ａは、ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４と割り込み先となるＰＥ１０、２０−１、２０−２、２０−３（すなわち、各ＰＥ１０、２０−１、２０−２、２０−３に接続される使用権限制御割り込み信号６１、６２−１、６２−２、６２−３）との関連付けを定義するチャネルマッピングレジスタ６３７、割り込み要求対象イベントの発生状態を割り込み先となるＰＥ１０、２０−１、２０−２、２０−３ごと、かつ要因ごとに保持する割り込み要因レジスタ６３５Ａ、割り込み要求対象イベントが発生した場合に割り込み要求を許可するかどうかを割り込み先となるＰＥ１０、２０−１、２０−２、２０−３ごと、かつ要因ごとに設定する割り込みイネーブルレジスタ６３６Ａを備える。割り込み要求制御部６３０Ａは、割り込み要求制御部接続インタフェース６３１から割り込み要因レジスタ６３５Ａ、割り込みイネーブルレジスタ６３６Ａおよびチャネルマッピングレジスタ６３７へのアクセス要求に応答し、指定された割り込み要因レジスタ６３５Ａ、割り込みイネーブルレジスタ６３６Ａおよびチャネルマッピングレジスタ６３７への読み書きが実行されるよう構成する。
【００４６】
本変形例では、各ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４が出力するタイマ値比較結果信号６１３−１、６１３−２、６１３−３、６１３−４に加え、トリガ制御部６２０が出力するトリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４のうち、少なくともカウント開始指示を識別できるトリガ制御信号についても割り込み要求対象イベントとする。割り込み要求対象イベントとして、タイマ値比較結果信号６１３−１、６１３−２、６１３−３、６１３−４が偽から真に遷移、すなわちカウント動作中の当該ハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４において現カウント値が所定の下限値以下となったことを検出したものとする。この時、割り込み要求制御部６３０Ａは、チャネルマッピングレジスタ６３７に設定された関連付け先となるＰＥ１０、２０−１、２０−２、２０−３を特定し、当該ＰＥ１０、２０−１、２０−２、２０−３への割り込み要求対象イベントの発生状態を保持する割り込み要因レジスタ６３５Ａにおいて、使用権限付与期間終了イベントを示すフィールド値に所定の値（例えば、値１）を設定する。当該ＰＥ１０、２０−１、２０−２、２０−３にて使用権限付与期間終了イベント発生時に割り込み要求を許可するよう、割り込みイネーブルレジスタ６３６Ａに設定されている場合には、さらに使用権限制御割り込み信号６１、６２−１、６２−２、６２−３を経由し、当該ＰＥ１０、２０−１、２０−２、２０−３に対する割り込みを要求する。
【００４７】
加えて、割り込み要求対象イベントとして、トリガ制御信号６１２−１、６１２−２、６１２−３、６１２−４がカウント開始を指示する場合、割り込み要求制御部６３０Ａは、チャネルマッピングレジスタ６３７に設定された関連付け先となるＰＥ１０、２０−１、２０−２、２０−３を特定し、当該ＰＥ１０、２０−１、２０−２、２０−３への割り込み要求対象イベントの発生状態を保持する割り込み要因レジスタ６３５Ａにおいて、使用権限付与期間開始イベントを示すフィールド値に所定の値（例えば、値１）を設定する。当該ＰＥ１０、２０−１、２０−２、２０−３にて使用権限付与期間開始イベント発生時に割り込み要求を許可するよう、割り込みイネーブルレジスタ６３６Ａに設定されている場合には、さらに使用権限制御割り込み信号６１、６２−１、６２−２、６２−３を経由し、当該ＰＥ１０、２０−１、２０−２、２０−３に対する割り込みを要求する。
【００４８】
使用権限制御装置６０Ａからの割り込み要求を検出したＰＥ１０、２０−１、２０−２、２０−３では、自ＰＥ内のいずれかのＣＰＵコアで動作する割り込みハンドラの処理の一部として、処理本体の実行に先立ち、割り込み要因レジスタ６３５Ａの内容を読み出し、割り込み要因（使用権限付与期間開始または終了イベント）を特定する。処理本体の実行後には、割り込み要因レジスタ６３５Ａへの書き込みにより、上記で特定したイベントの発生を示すフィールド値を無効な値（例えば、値０）に更新し、当該イベントによる割り込み要求を無効化する。
【００４９】
ここで、ＰＥ２０−１、２０−２、２０−３は使用権限制御装置６０Ａからの割り込みに基づいて、共有リソース３０の使用を開始したり、共有リソース３０を解放したりすることができる。このため、共有リソース３０の使用開始タイミングや使用時間がＰＥ２０−１、２０−２、２０−３ごとに個別に設定されている場合においても、ＰＥ２０−１、２０−２、２０−３が共有リソース３０の使用状態を監視することなく、共有リソース３０を排他的に使用することができる。このため、各ＰＥ２０−１、２０−２、２０−３は、共有リソース３０の使用の必要がある時に、共有リソース３０の使用権限が得られるまで共有リソース３０の使用要求を出し続ける必要がなくなり、ＰＥ２０−１、２０−２、２０−３の負荷を低減することが可能となる。
【００５０】
なお、通常は２つの割り込み要因、すなわち使用権限付与期間の開始および終了イベントが同時に検出されることはなく、また割り込み要因レジスタ６３５Ａの内容を参照することで割り込み要因を特定可能なため、ＰＥ１０、２０−１、２０−２、２０−３へ出力する使用権限制御割り込み信号６１、６２−１、６２−２、６２−３は複数のイベント間で共有してよい。また、カウント動作中のハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４に対するカウント開始要求については、図示しない手段によりマスクできるよう使用権限制御装置６０Ａを構成してもよい。
【００５１】
図４は、図１のマイコンの変形例を示す図である。マイコン１Ｂのうち、図１に示すマイコン１と同じ符号をもつ要素は共通であるため、説明の一部を省略する。
図４において、マイコン１Ｂは、内蔵機能モジュールとして、さらにＰＥ間割り込み制御装置７０を含む。ＰＥ間割り込み制御装置７０は、ＰＥ間接続バス４０を介してＰＥ１０、２０−１、２０−２、２０−３との間で相互接続される。ＰＥ間割り込み制御装置７０は、各ＰＥ１０、２０−１、２０−２、２０−３からアクセス可能な制御レジスタを含む。割り込み要求元ＰＥにおいては、自ＰＥもしくは他ＰＥに対する割り込みを要求し、割り込み要求先ＰＥにおいては、割り込み要求元ＰＥを特定する手段をそれぞれ備える。また、ＰＥ間割り込み制御装置７０は、割り込み先ＰＥごとに当該ＰＥに対するＰＥ間割り込み要求状態を示す、ＰＥ間割り込み信号７１−０、７１−１、７１−２、７１−３を独立した信号として出力し、それぞれＰＥ１０、２０−１、２０−２、２０−３内の割り込みコントローラに入力される。
【００５２】
ここで、ＰＥ間割り込み制御装置７０は、ＰＥ２０−１、２０−２、２０−３から共有リソース３０の解放通知を受けると、リソース解放イベントの発生をＰＥ１０に通知することができる。ＰＥ１０は、リソース解放イベントの発生通知を受け取ると、共有リソース３０の使用要求を出しているＰＥ２０−１、２０−２、２０−３間で共有リソース３０の使用の再スケジューリングを実行することができる。このため、共有リソース３０の使用権限が付与されたＰＥ２０−１、２０−２、２０−３において、そのＰＥ２０−１、２０−２、２０−３に与えられた使用時間を使い切る前に共有リソース３０が解放された場合においても、そのＰＥ２０−１、２０−２、２０−３に与えられた使用時間の経過を待つことなく、共有リソース３０の使用要求を出しているＰＥ２０−１、２０−２、２０−３が共有リソース３０を使用することが可能となり、共有リソース３０の利用効率を向上させることが可能となる。
【００５３】
図５は、図１の制御テーブルの構成例を示す図である。
図５において、制御テーブル１４０は、ＰＥ１０、２０−１、２０−２、２０−３間での共有リソース３０に関する制御ポリシを格納することができる。ＰＥ１０は、共有リソース管理プログラムの実行時に制御テーブル１４０を参照することで、使用要求を受け付けたＰＥ２０−１、２０−２、２０−３間での共有リソース３０の使用のスケジューリングを実行することができる。
【００５４】
制御テーブル１４０は、共有リソース管理プログラムの実行により各ＰＥ１０、２０−１、２０−２、２０−３に対する共有リソース３０の使用権限付与順序制御する際に、参照および更新する制御ポリシを格納する記憶領域である。制御テーブル１４０は、共有制御の対象ＰＥ１０、２０−１、２０−２、２０−３ごとに以下のフィールドを備える。
以下の説明を簡単にするため、特記なき場合は、マイコン１、１Ｂの備える複数のＰＥ１０、２０−１、２０−２、２０−３のうち、最小のＰＥ識別子をもつＰＥ、すなわちＰＥ０をＰＥ１０とし、ＰＥ識別子の昇順にＰＥ１、ＰＥ２、ＰＥ３をそれぞれＰＥ２０−１、２０−２、２０−３とする。
【００５５】
（１）イネーブル（Ｅｎａｂｌｅ、ＥＮ）フィールド：当該ＰＥ１０、２０−１、２０−２、２０−３に関する以下のフィールドの設定が有効かどうかを示すフィールドである。当該ＰＥ１０、２０−１、２０−２、２０−３上で動作するアプリケーションが共有リソース３０の使用を要求し得る場合には有効に設定されなければならない。
【００５６】
（２）基本優先度（Ｐｒｉｏｒｉｔｙ、ＰＲ）フィールド：当該ＰＥ１０、２０−１、２０−２、２０−３に対し、共有リソース３０の使用権限を付与する際の優先度を示すゼロまたは正の整数である。値が小さいほど優先度が高く、共有リソース３０の使用権限の付与順序が早くなる。
【００５７】
（３）制御周期内上限時間（Ｐｅｒｍｉｔｔｅｄ  Ｔｉｍｅ、ＰＴ）フィールド：制御周期ごとに当該ＰＥ１０、２０−１、２０−２、２０−３へ付与可能な共有リソース使用時間の上限値である。絶対値または制御周期時間に対する割合のいずれかの指標に基づく値を設定する。いかなる時点においても、ＥＮフィールドが有効な全ＰＥ１０、２０−１、２０−２、２０−３について本フィールドの設定値を加算した結果は、制御周期時間（絶対値を指標とする場合）または１００％（割合を指標とする場合）を超えてはならない。本制約は、マイコン１、１Ｂの正常動作に必要な制約としてユーザに課してもよいし、共有リソース管理プログラムの備える機能の一部として動作時に制約違反の有無を検出させ、制約違反が検出された場合にはログ取得など所定のエラー処理を実行させてもよい。また、共有リソース管理に係る処理時間のばらつきによる制御エラーを補償するため、上記制約違反のチェックの際、制御周期時間（絶対値を指標とする場合）または１００％（割合を指標とする場合）から所定の猶予時間または猶予率を減じた値と比較してもよい。
【００５８】
（４）制御周期内権限再付与（Ｒｅ−Ｇｒａｎｔ、ＲＧ）フィールド：１つの制御周期において、当該ＰＥ１０、２０−１、２０−２、２０−３がＰＴフィールドの設定値を上限として、共有リソース３０を複数回に分割して使用することを許可するかどうかを指定する。本フィールドはオプションとしてよく、その場合は分割使用の禁止が指定されたものと解釈する。
【００５９】
（５）制御周期内権限付与順序（Ｏｒｄｅｒ、ＯＲ）フィールド：共有リソース管理プログラムが所定の順序決定アルゴリズムに基づき、制御周期ごとに更新するフィールドである。その設定値は、現制御周期における共有リソース使用権限付与の順序を示すゼロまたは正の整数であり、本フィールドに設定された値がゼロから昇順となるよう、各ＰＥ１０、２０−１、２０−２、２０−３に対し時分割で使用権を付与する。利用する順序決定アルゴリズムによっては本フィールドをオプションとしてよく、例えば、使用権限付与先ＰＥを切り替える時点で１つ以上の共有リソース３０の使用要求があった場合に、最も高い優先度を設定されたＰＥに対し動的に権限を付与し、共有リソース３０の使用要求がなかった場合には、要求が発生するまで所定の周期で共有リソース３０の使用要求をポーリングすればよい。
【００６０】
（６）制御周期内残り時間（Ｒｅｍａｉｎｉｎｇ  Ｔｉｍｅ、ＲＴ）フィールド：現制御周期において、当該ＰＥ１０、２０−１、２０−２、２０−３へ付与可能な共有リソース３０の使用時間の残り時間を保持するフィールドである。時間の絶対値をハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４のデクリメント動作周期で除した値、すなわちハードウェアタイマチャネル６１０−１、６１０−２、６１０−３、６１０−４の初期カウント値レジスタ６１７または現カウント値レジスタ６１６に対し直接書き込み可能、または値の大小を直接比較可能な値に換算した正の整数値とすることができる。本フィールド値は、制御周期ごとにＰＴフィールドの値を上記の手順に従い換算した値でリセットし、あるＰＥ１０、２０−１、２０−２、２０−３に対する共有リソース３０の使用権限の付与期間が終了、もしくはＰＥ１０、２０−１、２０−２、２０−３から共有リソース３０の使用終了が通知されるごとに、当該ＰＥ１０、２０−１、２０−２、２０−３に関する本フィールド値を更新するよう制御される。新たに本フィールドに設定される更新値は、ゼロ、または現在の設定値から実際の共有リソース３０の使用時間分を減じた残り時間に相当するカウント値であってよい。
【００６１】
（７）使用権限付与中フラグ（Ｉｎ−Ｕｓｅ、ＩＵ）フィールド：当該ＰＥ１０、２０−１、２０−２、２０−３に対して共有リソース３０の使用権限を付与中であるかどうかを示すフラグである。共有リソース管理プログラムが同時に使用権限を付与するＰＥ数はたかだか１であり、ＰＥ数分の本フィールドのうち０または１つのフィールドのみ真となる。
【００６２】
図６は、図１の使用要求レジスタの構成例を示す図である。なお、図６では、使用要求レジスタ５０の内部構成、共有リソース３０の使用要求の有無を要求元ＰＥごとに保持するフラグ、およびフラグのセット／クリア手段に関するレジスタ間マッピングを示した。
図６において、使用要求レジスタ５０は、ＰＥ間接続バス４０を経由して各ＰＥ１０、２０−１、２０−２、２０−３からアクセス可能とされ、マイコン１、１Ｂの持つアドレス空間上の一部領域に配置することができる。使用要求レジスタ５０は、相互にアドレスの異なる２つの使用要求レジスタバンク、すなわち使用要求レジスタバンク５０−０（Ｂａｎｋ−０）および使用要求レジスタバンク５０−１（Ｂａｎｋ−１）から構成される。
【００６３】
各使用要求レジスタバンク５０−０、５０−１の機能は、構成要素となる制御レジスタに割り当てられたアドレスの差異を除き、バンク間で共通である。２つの使用要求レジスタバンク５０−０、５０−１のうち、例えば、一方のバンクは現制御周期における共有リソース３０の使用権限の付与制御のため、ＰＥ１０上で動作する共通リソース管理プログラムが参照するバンク（以下、表バンク）、他方はＰＥ２０−１、２０−２、２０−３上で動作するアプリケーションからの、次制御周期における共有リソース３０の使用権限の割り当て要求を蓄積するバンク（以下、裏バンク）として割り当て、制御周期ごとに表裏バンクを切り替えて使用してもよい。アプリケーションがアクセス先とする裏バンクのアドレス生成手続きを簡略化する目的で、表裏バンクの割り当て状態を識別するフラグを格納するレジスタ（図示せず）と、当該フラグの状態により表裏バンクのアドレス領域を入れ替えるアドレス変換部（図示せず）を使用要求レジスタ５０内にさらに設けることで、バンクの割り当て状態によらず表裏バンクのアドレスを固定する機能を備えていてもよい。使用要求レジスタ５０の一部または全部は専用に設計されたハードウェアモジュールとして実装してもよいし、少なくとも一部をマイコン１、１Ｂの内部もしくは外部に接続されたメモリに割り当ててもよい。また、実装上の制約により、使用要求レジスタ５０を使用要求レジスタバンク５０−０のみの１バンク構成としてもよい。１バンク、または２バンク構成時の各使用要求レジスタバンク５０−０、５０−１の使用方法については、共有リソース３０の使用権限付与の詳細な制御フローとともに後述する。
【００６４】
使用要求レジスタバンク５０−０、５０−１は、共有リソース３０の使用要求の有無を要求元ＰＥごとに関するビットマップ形式で保持する使用要求フラグレジスタと、使用要求フラグレジスタに格納される使用要求フラグをＰＥ１０、２０−１、２０−２、２０−３ごとに個別に、もしくは複数ＰＥ分を一括してセット／クリアする手段として、以下の制御レジスタを備える。
【００６５】
（１）共有リソース使用要求セットレジスタ５２０−０、５２０−１、５２０−２、５２０−３：それぞれＰＥ１０、２０−１、２０−２、２０−３が共有リソース３０の使用要求フラグをセットする際のインタフェースとなる３２ビット幅のレジスタである。要求元ＰＥごとに独立したレジスタＳＥＴ＿ＲＥＱ＿ＲＥＧ０（ＰＥ１０からの要求用）、ＳＥＴ＿ＲＥＱ＿ＲＥＧ１（ＰＥ２０−１からの要求用）、ＳＥＴ＿ＲＥＱ＿ＲＥＧ２（ＰＥ２０−２からの要求用）、ＳＥＴ＿ＲＥＱ＿ＲＥＧ３（ＰＥ２０−３からの要求用）から構成される。各ＰＥ１０、２０−１、２０−２、２０−３上で動作し、共有リソース３０の使用権限付与を要求するアプリケーションは、制御周期のうち所定のタイムウィンドウ内に、自ＰＥ用の共有リソース使用要求セットレジスタ５２０−０、５２０−１、５２０−２、５２０−３内のフラグセット要求フィールドＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３に値１を書き込む。各フラグセット要求フィールドＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３は、共有リソース使用要求フラグレジスタ５１０内にある、要求元ＰＥごとに独立したフラグフィールドＲＱ０、ＲＱ１、ＲＱ２、ＲＱ３にそれぞれマッピングされており、セット要求ＳＲｎ（ｎ＝０、１、２、３）への値１の書き込みに応じてフラグＲＱｎ（ｎ＝０、１、２、３）が値１にセットされる。なお、本レジスタの読み出し時は常にゼロ値が読み出されるものとする。
【００６６】
（２）共有リソース使用要求フラグレジスタ５１０：それぞれＰＥ１０、２０−１、２０−２、２０−３による共有リソース３０の使用要求の有無をビットマップ形式で保持するフラグフィールドＲＱ０、ＲＱ１、ＲＱ２、ＲＱ３を１つのレジスタに集約した、３２ビット幅の読み出し専用レジスタＦＬＧ＿ＲＥＱ＿ＲＥＧである。ＰＥ１０上で動作する共有リソース管理プログラムが読み出す。
【００６７】
（３）共有リソース使用要求クリアレジスタ５３０：それぞれＰＥ１０、２０−１、２０−２、２０−３が共有リソース３０の使用要求フラグをクリアする際のインタフェースとなる３２ビット幅のレジスタＣＬＲ＿ＲＥＱ＿ＲＥＧである。ＰＥ１０上で動作する共有リソース管理プログラムが書き込む。クリア対象とする共有リソース使用要求フラグレジスタ５１０のフラグフィールドＲＱ０、ＲＱ１、ＲＱ２、ＲＱ３ごとに独立してマッピングされたクリア要求フィールドＣＲ０、ＣＲ１、ＣＲ２、ＣＲ３が１つのレジスタに集約されており、クリア要求フィールドＣＲｎ（ｎ＝０、１、２、３）への値１の書き込みに応じてフラグフィールドＲＱｎ（ｎ＝０、１、２、３）が値０にクリアされる。なお、読み出し時は常にゼロ値が読み出される。
【００６８】
図７は、図４のＰＥ間割り込み制御装置の構成例を示す図である。なお、図７では、ＰＥ間割り込み制御装置７０の内部構成、ＰＥ間割り込み要求の有無を要求元／要求先ＰＥの組み合わせごとに保持するフラグ、およびフラグのセット／クリア手段に関するレジスタ間マッピングを示した。
図７において、ＰＥ間割り込み制御装置７０は、ＰＥ間接続バス４０を経由して各ＰＥ１０、２０−１、２０−２、２０−３からアクセス可能とされ、マイコン１Ｂの持つアドレス空間上の一部領域に配置された複数の制御レジスタを含む。制御レジスタの一部または全部は専用に設計されたハードウェアモジュールとして実装してもよいし、少なくとも一部をマイコン１Ｂの内部もしくは外部に接続されたメモリに割り当ててもよい。ＰＥ間割り込み制御装置７０は、ＰＥ間割り込みの有無を対象となる要求先ＰＥごとに独立したレジスタに集約し、かつ要求元ＰＥに関するビットマップ形式で保持する手段として、特定の要求元ＰＥからの割り込み要求について要求先ＰＥごとに個別に、もしくは複数の要求先ＰＥ分を一括してセットする手段として、また特定の要求先ＰＥを対象とするＰＥ間割り込み要求フラグについて要求元ＰＥごとに個別に、もしくは複数の要求元ＰＥ分を一括してクリアする手段として、以下の制御レジスタを備える。
【００６９】
（１）ＰＥ間割り込み要求セットレジスタ７２０−ｎ（ｎ＝０、１、２、３）：それぞれＰＥ１０、２０−１、２０−２、２０−３を要求元ＰＥとするＰＥ間割り込み要求フラグをセットする際のインタフェースとなる３２ビット幅のレジスタである。要求元ＰＥごとに独立したレジスタＳＥＴ＿ＩＰＩＲ＿ＲＥＧ０（ＰＥ１０からの要求用）、ＳＥＴ＿ＩＰＩＲ＿ＲＥＧ１（ＰＥ２０−１からの要求用）、ＳＥＴ＿ＩＰＩＲ＿ＲＥＧ２（ＰＥ２０−２からの要求用）、ＳＥＴ＿ＩＰＩＲ＿ＲＥＧ３（ＰＥ２０−３からの要求用）から構成される。各ＰＥ１０、２０−１、２０−２、２０−３上で動作し、自ＰＥもしくは他ＰＥに対し所定の形式に基づくメッセージ送信を要求するアプリケーションは、自ＰＥ（ＰＥｎ）用のＰＥ間割り込み要求セットレジスタ７２０−ｎ（ｎ＝０、１、２、３）内のフラグセット要求フィールドＳＲｎ０、ＳＲｎ１、ＳＲｎ２、ＳＲｎ３のうち、自ＰＥからの割り込み要求先となるＰＥに対応する１つ以上のフィールドに値１を書き込む。
【００７０】
ＰＥ間割り込み要求セットレジスタＳＥＴ＿ＩＰＩＲ＿ＲＥＧｎ（ｎ＝０、１、２、３）のフラグセット要求フィールドＳＲｎｍ（ｍ＝０、１、２、３）は、割り込み要求先ＰＥごとに集約されたＰＥ間割り込み要求フラグレジスタＦＬＧ＿ＩＰＩＲ＿ＲＥＧｍ（ｍ＝０、１、２、３）のフィールドＲＱｎｍ（ｎ＝０、１、２、３）にマッピングされており、フラグセット要求フィールドＳＲｎｍへの値１の書き込みに応じてフィールドＲＱｎｍが値１にセットされる。なお、本レジスタの読み出し時は常にゼロ値が読み出されるものとする。
【００７１】
（２）ＰＥ間割り込み要求フラグレジスタ７１０−ｍ（ｍ＝０、１、２、３）：それぞれＰＥ１０、２０−１、２０−２、２０−３を要求先ＰＥとするＰＥ間割り込み要求フラグについて、要求元ＰＥを識別可能なビットマップ形式で取得可能なインタフェースとなる３２ビット幅の読み出し専用レジスタである。要求先ごとに独立したレジスタＦＬＧ＿ＩＰＩＲ＿ＲＥＧ０（マスタＰＥ１０への要求用）、ＦＬＧ＿ＩＰＩＲ＿ＲＥＧ１（ＰＥ２０−１への要求用）、ＦＬＧ＿ＩＰＩＲ＿ＲＥＧ２（ＰＥ２０−２への要求用）、ＦＬＧ＿ＩＰＩＲ＿ＲＥＧ３（ＰＥ２０−３への要求用）から構成される。通常、ＰＥ間割り込みを要求された側のアプリケーションが、自ＰＥ（ＰＥｍ）を要求先とするＰＥ間割り込みの要求元を特定する目的で、ＰＥ間割り込み要求フラグレジスタ７１０−ｍ（ｍ＝０、１、２、３）からの読み出しを行う。また、ＰＥ間割り込み信号７１−ｍ（ｍ＝０、１、２、３）は、フィールドＲＱ０ｍ、ＲＱ１ｍ、ＲＱ２ｍ、ＲＱ３ｍの論理和として定義することができる。
【００７２】
（３）ＰＥ間割り込み要求クリアレジスタ７３０−ｍ（ｍ＝０、１、２、３）：それぞれＰＥ１０、２０−１、２０−２、２０−３を要求先ＰＥとするＰＥ間割り込み要求フラグをクリアする際のインタフェースとなる３２ビット幅のレジスタである。要求先ＰＥごとに独立したレジスタＣＬＲ＿ＩＰＩＲ＿ＲＥＧ０（ＰＥ１０への要求用）、ＣＬＲ＿ＩＰＩＲ＿ＲＥＧ１（ＰＥ２０−１への要求用）、ＣＬＲ＿ＩＰＩＲ＿ＲＥＧ２（ＰＥ２０−２への要求用）、ＣＬＲ＿ＩＰＩＲ＿ＲＥＧ３（ＰＥ２０−３への要求用）から構成される。通常、ＰＥ間割り込みを要求された側のアプリケーションが、自ＰＥ（ＰＥｍ）を要求先とするＰＥ間割り込みのうち、処理を完了した１つ以上のＰＥ（ＰＥｎ）からの割り込み要求をクリアする目的で、ＰＥ間割り込み要求クリアレジスタ７３０−ｍ（ｍ＝０、１、２、３）への書き込みを行う。ＰＥ間割り込み要求クリアレジスタＣＬＲ＿ＩＰＩＲ＿ＲＥＧｍ（ｍ＝０、１、２、３）のフィールドＣＲｎｍ（ｎ＝０、１、２、３）は、ＰＥ間割り込み要求フラグレジスタＦＬＧ＿ＩＰＩＲ＿ＲＥＧｍ（ｍ＝０、１、２、３）のフィールドＲＱｎｍ（ｎ＝０、１、２、３）にマッピングされており、フィールドＣＲｎｍへの値１の書き込みに応じてフィールドＲＱｎｍが値０にクリアされる。なお、本レジスタの読み出し時は常にゼロ値が読み出されるものとする。
【００７３】
以下、制御ポリシに基づき共有リソース使用権限の付与制御を実現するにあたり、制御の時間単位となる制御周期と、共有リソース３０の使用要求を受け付けるタイムウィンドウとの関係に着目した２つの主要な制御モデルを説明する。
【００７４】
図８（ａ）および図８（ｂ）は、図１のマイコンの制御周期と共有リソース使用要求タイムウィンドウとの関係を示すタイミングチャートである。
図８（ａ）および図８（ｂ）において、制御周期（Ｃｏｎｔｒｏｌ  Ｐｅｒｉｏｄ）とはマイコン１、１Ｂ上で動作するアプリケーション、もしくはアプリケーションの実行環境を提供するリアルタイムＯＳが時間管理の基準とするシステムクロック（Ｔｉｃｋ）に基づき生成される固定の時間周期である。アプリケーションまたは／およびリアルタイムＯＳの動作は、原則として制御周期を単位として制御される。制御周期よりも時間粒度の小さいリソース共有制御を実現するため、共有リソース３０の使用権限付与に係る制御状態や制御パラメータの少なくとも一部は制御周期ごとに再設定（初期化）されること、共有リソース３０の使用権限の付与期間は単一の制御周期内で完結し、複数の制御周期に跨る権限付与は行わないこと、特定の制御周期における共有リソース３０の使用権限付与を要求した１つ以上のＰＥ１０、２０−１、２０−２、２０−３それぞれに対し、当該制御周期内に少なくとも１回の使用権限付与がなされるよう共有制御を行うこと、を制約として課してもよい。なお、以下の説明では、ＰＥ１０上で実行されるアプリケーションが共有リソース３０の使用を要求することはない前提としているが、制御ポリシに基づく使用権限付与制御の一般性が失われることはない。
【００７５】
図８（ａ）は、使用要求レジスタ５０が使用要求レジスタバンク５０−０のみの１バンク構成をとる場合の制御モデルである。本制御モデルでは、ＰＥ２０−１、２０−２、２０−３からの共有リソース３０の使用権限割り当て要求の蓄積と、共有リソース管理プログラムからの要求状態の参照との間で、１つの使用要求レジスタバンク５０−０を時分割で共有する。そのため、各制御周期の先頭から指定された期間のみ、当該制御周期内の共有リソース使用要求Ｒを受け付けるための使用要求受け付けウィンドウ期間Ｗを設定する。使用権限の割り当てを必要とするＰＥ２０−１、２０−２、２０−３は、使用要求受け付けウィンドウ期間Ｗ内に使用要求レジスタバンク５０−０の共有リソース使用要求セットレジスタ５２０−１、５２０−２、５２０−３を介して、共有リソース使用要求フラグレジスタ５１０の要求フラグをセットする。使用要求受け付けウィンドウ期間Ｗ内に１つ以上の使用権限割り当て要求があった場合、ＰＥ１０で動作する共有リソース管理プログラムは、制御テーブル１４０に規定される制御ポリシに基づき、現制御周期における使用権限の付与順序の決定Ａを行う。
【００７６】
続いて、決定した付与順序に従って、次に使用権限を付与するＰＥ２０−１、２０−２、２０−３を特定し、権限付与時間の管理に必要となる使用権限制御装置６０、６０Ａ内のハードウェアタイマチャネル６１０−２、６１０−３、６１０−４の設定および起動Ｓを行う。権限付与対象となったＰＥ２０−１、２０−２、２０−３は、自ＰＥに関連付けられたハードウェアタイマチャネル６１０−２、６１０−３、６１０−４の動作状態のポーリング、もしくは自ＰＥに出力された使用権限制御割り込み信号６２−１、６２−２、６２−３を経由した権限付与開始割り込みの検出により、自ＰＥに共有リソース３０の使用権限が付与されたことを認識し、共有リソース３０を利用するアプリケーションの実行Ｕを行う。共有リソース管理プログラムの制御により、使用権限が付与されたＰＥ２０−１、２０−２、２０−３は自ＰＥへの権限付与終了割り込みを検出するまでの期間、共有リソース３０を占有することができる。
【００７７】
例えば、制御周期（ｎ−１）では、使用要求受け付けウィンドウ期間Ｗ内に２つのＰＥ２０−１、２０−３から共有リソース使用要求Ｒがあったものとすると、制御周期（ｎ−１）内にＰＥ２０−１、２０−３に共有リソース３０の使用権限が時分割的に割り当てられる。そして、ＰＥ２０−１、２０−３は、制御周期（ｎ−１）内に共有リソース３０を排他的に使用することでアプリケーションの実行Ｕを行う。また、制御周期（ｎ）では、使用要求受け付けウィンドウ期間Ｗ内に３つのＰＥ２０−１、２０−２、２０−３から共有リソース使用要求Ｒがあったものとすると、制御周期（ｎ）内にＰＥ２０−１、２０−２、２０−３に共有リソース３０の使用権限が時分割的に割り当てられる。そして、ＰＥ２０−１、２０−２、２０−３は、制御周期（ｎ）内に共有リソース３０を排他的に使用することでアプリケーションの実行Ｕを行う。
【００７８】
これにより、各制御周期（ｎ−１）、（ｎ）よりも時間粒度の小さいリソース共有制御が実現可能となるとともに、制御周期（ｎ−１）、（ｎ）ごとにリソース共有制御の時間粒度を変化させることが可能となる。このため、例えば、制御周期（ｎ−１）内に共有リソース使用要求Ｒを出したＰＥ２０−１、２０−３において、その制御周期（ｎ−１）内にＰＥ２０−１に共有リソース３０の使用権限が割り当てられた場合においても、ＰＥ２０−３は、その制御周期（ｎ−１）内に共有リソース３０の使用権限を取得することができ、制御周期（ｎ−１）より後の制御周期（ｎ）、（ｎ＋１）までアプリケーションの実行Ｕを待機する必要がなくなることから、ＰＥ２０−３の演算効率を向上させることが可能となる。なお、より詳細な制御フローについては、別図とともに改めて説明する。
【００７９】
図８（ｂ）は、使用要求レジスタ５０が使用要求レジスタバンク５０−０、５０−１の２バンク構成をとる場合の制御モデルである。本制御モデルでは、ＰＥ２０−１、２０−２、２０−３からの共有リソース３０の使用権限割り当て要求蓄積と、共有リソース管理プログラムからの要求状態の参照にそれぞれ異なる使用要求レジスタバンク５０−０、５０−１を割り当て可能であり、図８（ａ）で説明した使用要求レジスタバンク５０−０の時分割共有は不要となる。そのため、特定の制御周期（Ｃｏｎｔｒｏｌ  Ｐｅｒｉｏｄ（ｎ））について、その全体を次制御周期（Ｃｏｎｔｒｏｌ  Ｐｅｒｉｏｄ（ｎ＋１））内の共有リソース使用要求Ｒを受け付けるための使用要求受け付けウィンドウ期間Ｗ（ｎ＋１）として設定することができる。使用権限の割り当てを必要とするＰＥ２０−１、２０−２、２０−３は、使用要求受け付けウィンドウ期間Ｗ（ｎ＋１）間内に使用要求レジスタバンク５０−０、５０−１のうち裏バンク側の共有リソース使用要求セットレジスタ５２０−１、５２０−２、５２０−３を介して、共有リソース使用要求フラグレジスタ５１０の要求フラグをセットする。各制御周期の先頭で使用要求レジスタ５０−０、５０−１の表／裏バンクを切り替えた結果として、表バンク側に１つ以上の使用権限割り当て要求があった場合、ＰＥ１０で動作する共有リソース管理プログラムは、制御テーブル１４０に規定される制御ポリシに基づき、制御周期（ｎ＋１）における使用権限の付与順序の決定Ａを行う。
【００８０】
続いて、決定した付与順序に従って、次に使用権限を付与するＰＥ２０−１、２０−２、２０−３を特定し、権限付与時間の管理に必要となる使用権限制御装置６０、６０Ａ内のハードウェアタイマチャネル６１０−２、６１０−３、６１０−４の設定および起動Ｓを行う。権限付与対象となったＰＥ２０−１、２０−２、２０−３は、自ＰＥに関連付けられたハードウェタイマチャネル６１０−２、６１０−３、６１０−４の動作状態のポーリング、もしくは自ＰＥに接続された使用権限制御割り込み信号６２−１、６２−２、６２−３を経由した権限付与開始割り込みの検出により、自ＰＥに共有リソース３０の使用権限が付与されたことを認識し、共有リソース３０を利用するアプリケーションの実行Ｕを行う。共有リソース管理プログラムの制御により、使用権限が付与されたＰＥ２０−１、２０−２、２０−３は自ＰＥへの権限付与終了割り込みを検出するまでの期間、共有リソース３０を独占することができる。
【００８１】
本制御モデルでは、制御周期を単位とするソフトウェアパイプラインの態様でアプリケーションを実行できるため、図８（ａ）の制御モデルと比較し、既存アプリケーションを本制御モデルに適合させるために必要な移植作業を削減することができる。なお、より詳細な制御フローについては、別図とともに改めて説明する。
【００８２】
以下、制御ポリシに基づく共有リソース使用権限の付与制御に関し、４つの典型的な制御フローについて詳細に説明する。
【００８３】
＜第１の共有リソース使用権限付与制御フロー＞
図９〜図１１は、第１実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
【００８４】
第１の共有リソース使用権限付与制御フローでは、以下の場合について例示する。
（１）使用要求レジスタ５０は１バンク（使用要求レジスタバンク５０−０のみ）構成とし、使用要求レジスタバンクＳ３０とする。
【００８５】
（２）使用権限制御装置は６０または６０Ａのいずれかの構成とし、全ＰＥについて使用権限付与期間終了イベント発生時の割り込み要求を許可に設定する。
【００８６】
（３）制御テーブル１４０の設定に関し、マスタＰＥ（ＰＥ０）の基本優先度（ＰＲ）フィールドをゼロ（優先度最高）、制御周期内上限時間（ＰＴ）フィールドを使用要求受け付けウィンドウ期間に換算可能な値に設定し、さらに、マスタＰＥ（ＰＥ０）および全サテライトＰＥ（ＰＥ１、ＰＥ２、ＰＥ３）について制御周期内権限再付与（ＲＧ）フィールドを無効に、それぞれ設定する。
【００８７】
（４）各制御周期の先頭から所定の時間のみ、使用要求受け付けウィンドウ期間Ｗとして設定し、当該制御周期内に共有リソース３０の使用権限付与を必要とするサテライトＰＥからの共有リソース使用要求を受け付ける。
【００８８】
（５）使用権限の付与開始タイミングの通知は、各サテライトＰＥ上で動作するアプリケーションから、使用権限制御装置６０、６０Ａの備える、自ＰＥに関連付けられたハードウェアタイマチャネルの動作状態をポーリングすることで実現する。
【００８９】
（６）使用権限の付与終了タイミングの通知は、各サテライトＰＥ上で動作するアプリケーションに対し、使用権限制御装置６０、６０Ａから使用権限付与期間終了イベント発生に伴う割り込みを要求することで実現する。
【００９０】
第１サテライトＰＥであるＰＥｎには、使用権限制御装置６０、６０Ａの備えるハードウェアタイマチャネルＳ４１が関連付けられ、少なくともＰＥｎおよびＰＥｎ上で動作するアプリケーションＳ４０への共有リソース使用権限付与の終了タイミングを制御する。マスタＰＥ（ＰＥ０）についても同様に、ハードウェアタイマチャネルＳ４１とは独立したハードウェアタイマチャネルＳ１１が関連付けられ、ＰＥ０上で動作する共有リソース管理プログラムＳ１０による共有制御処理の一部として、使用要求受け付けウィンドウ期間Ｗを計測する目的で、さらに望ましくは、使用権限を保持するサテライトＰＥに関連付けられたハードウェアタイマチャネルの状態および動作を複製（レプリケーション）したレプリカとして、利用する。
【００９１】
ＰＥｎ上で動作するアプリケーションＳ４０は、１バンク構成の使用要求レジスタバンクＳ３０内の要求フラグをセットする。共有リソース管理プログラムＳ１０は、使用要求レジスタバンクＳ３０に蓄積された共有リソース使用要求、および制御テーブルＳ２０に設定された制御情報をそれぞれ参照／更新しながら、使用権限付与順序の決定と使用権限制御装置６０、６０Ａの制御を行う。共有制御の開始に先立ち、制御テーブルＳ２０は適切に設定されているものとする。
【００９２】
図９において、共有リソース管理プログラムＳ１０が、図示しないハードウェアもしくはソフトウェア手段を用いて制御周期の開始タイミングを検出すると、以下の初期化処理Ｓ１００１を順次実行する。
【００９３】
（１）使用権限制御装置６０、６０Ａが備える停止トリガレジスタ６２６への書き込みにより、全ハードウェアタイマチャネルＳ１１、Ｓ４１の同時停止を要求（Ｔ１００１、Ｔ１００２）する。停止要求を受けたＰＥ０およびＰＥｎ用のハードウェアタイマチャネルＳ１１、Ｓ４１は、それぞれ停止状態（Ｓ１１０１、Ｓ４１０１）となる。
【００９４】
（２）使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより全ＰＥの使用要求フラグをクリアし、さらに共有リソース使用要求セットレジスタ５２０−０への書き込みによりＰＥ０の使用要求フラグをセットすることで、ＰＥ０の使用要求フラグのみ有効な状態（Ｓ３００１）となるよう、共有リソース使用要求フラグレジスタ５１０の内容を更新（Ｔ１００３）する。
【００９５】
（３）制御テーブルＳ２０の全ＰＥについて、使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１００４）し、制御周期内残り時間（ＲＴ）フィールド値は、制御周期内上限時間（ＰＴ）フィールド値からハードウェアタイマチャネルＳ１１、Ｓ４１内のカウントレジスタに設定可能な値に変換した値（以下、換算値と呼ぶ）に更新（Ｔ１００５）することで、制御周期開始時点での制御テーブルＳ２０の初期状態（Ｓ２００１）とする。
【００９６】
（４）各ＰＥに関連付けられたハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に対し、制御テーブルＳ２０の制御周期内残り時間（ＲＴ）フィールド値をそれぞれ設定（Ｔ１００６、Ｔ１００７）する。本時点では、ＰＥ０用ハードウェアタイマチャネルＳ１１には、使用要求受け付けウィンドウ期間Ｗに相当する値が設定される。
【００９７】
（５）制御周期の先頭において、ＰＥ０に対する共有リソース使用権限付与の態様で使用要求受け付けウィンドウ期間Ｗを実現する目的で、ＰＥ０用ハードウェアタイマチャネルＳ１１を動作させるため、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１００８）し、制御テーブルＳ２０の状態を、ＰＥ０が使用権限を保持している状態Ｓ２００２に更新する。本処理は、ＰＥ０の基本優先度設定が最高であることと組み合わせることで、ＰＥ０とそれ以外のＰＥｎに対する共有リソース使用権限付与に係る処理を共通化し、使用要求受け付けウィンドウ期間Ｗ以前にＰＥ０以外のＰＥｎに対して使用権限が付与されるのを抑止するために有効なオプション処理である。
【００９８】
（６）使用権限制御装置６０、６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１の起動を要求（Ｔ１００９）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態Ｓ１１０２へと遷移し、現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。
【００９９】
共有リソース管理プログラムＳ１０と同様の手段により制御周期の開始タイミングを検出した、ＰＥｎ上で動作するアプリケーションＳ４０は、制御周期内に実行すべき処理に関する初期化等、所定の前処理を実行（Ｓ４００１）する。実行すべき処理が共有リソース使用権限の付与を必要とする場合には、前処理の少なくとも一部として、使用要求受け付けウィンドウ期間Ｗ内、すなわちＰＥ０用ハードウェアタイマチャネルＳ１１のカウント動作中に、使用要求レジスタバンクＳ３０内にあるＰＥｎ用共有リソース使用要求セットレジスタへの書き込みにより、ＰＥｎの使用要求フラグをセット（Ｔ４００１）する。
【０１００】
また、図示しないが、同じ使用要求受け付けウィンドウ期間Ｗ内に、ＰＥｎとは異なるサテライトＰＥ（ＰＥｍとする）上で動作するアプリケーションも、同様の手順により、ＰＥｍの使用要求フラグをセットするものとする。この結果、使用要求受け付けウィンドウ期間Ｗ終了の時点で、使用要求レジスタバンクＳ３０には、ＰＥ０、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００２となる。
【０１０１】
前処理を完了したＰＥｎ上のアプリケーションＳ４０は、ＰＥｎへの共有リソース使用権限の付与待ち処理Ｓ４００２の少なくとも一部として、図９および図１０に示すように、ＰＥｎ用ハードウェアタイマチャネルＳ４１のチャネル状態レジスタ６１５を所定の周期でポーリング（Ｔ４００２、Ｔ４００３、Ｔ４００４）する。ＰＥｎへ使用権限が付与済みである、すなわち共有リソース管理プログラムＳ１０の指示によりハードウェアタイマチャネルＳ４１が起動し、チャネル状態レジスタ６１５がカウント動作中であることを示す値となるまで、アプリケーションＳ４０はポーリング動作を反復する。
【０１０２】
一方、カウント動作状態にあるＰＥ０用ハードウェアタイマチャネルＳ１１は、使用要求受け付けウィンドウ期間Ｗ、所定の時間経過ごとに現カウント値レジスタ６１６の内容をデクリメントする。現カウント値レジスタ６１６の内容が、事前に定義された下限値以下となったことを検出すると、使用権限制御装置６０、６０Ａは、割り込み要求制御部６３０、６３０Ａが備える割り込み要因レジスタ６３５、６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を真にセットする。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、使用権限制御割り込み信号６１により当該イベントを要因とする割り込みをＰＥ０に要求（Ｔ１１０１）する。
【０１０３】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出した共有リソース管理プログラムＳ１０は、使用要求受け付けウィンドウ期間Ｗの終了に係る一連の処理Ｓ１００２を順次実行する。
【０１０４】
（１）使用権限制御装置６０、６０Ａの割り込み要求制御部６３０、６３０Ａが備える割り込み要因レジスタ６３５、６３５Ａにおいて、ＰＥ０用ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、チャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０１０）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０３へ遷移する。
【０１０５】
（２）ＰＥ０に対する共有リソース使用権限付与の態様で実装した、使用要求受け付けウィンドウ期間Ｗ終了に伴い、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０１１）し、制御テーブルＳ２０の状態を、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００３に更新する。なお、処理Ｔ１０１１は処理Ｔ１００８と対になるものであり、処理Ｔ１００８を省略した場合は、処理Ｔ１０１１も同様に省略してよい。
【０１０６】
（３）続いて、ＰＥ０の制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥ０の制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥ０に対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０１２）する。
【０１０７】
（４）ＰＥ０の制御周期内残り時間がゼロとなった場合、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥ０の使用要求フラグをクリア（Ｔ１０１３）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００３となる。
【０１０８】
共有リソース管理プログラムＳ１０は、続いて、図１０に示すように、使用要求レジスタバンクＳ３０の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０１４）、使用要求受け付けウィンドウ期間Ｗに蓄積された共有リソース使用要求の有無をチェック（Ｓ１００３）する。１以上の使用要求があった場合には、図２２に示すフローに基づき、共有リソース使用権限の付与順序を一括して決定（Ｓ１００４）し、制御テーブルＳ２０のうち、少なくとも共有リソース３０の使用を要求した全ＰＥについて、決定した付与順序を特定する値を制御周期内権限付与順序（ＯＲ）フィールドに設定する（Ｔ１０１５）。さらに望ましくは、共有リソース３０の使用要求なし、制御テーブルＳ２０内の制御ポリシ設定が無効などの所定の理由により、現制御周期における共有リソース使用権限付与の対象外となったＰＥについては、付与対象外であることを示す特定の値を、当該ＰＥのＯＲフィールドに設定してよい。
【０１０９】
以降、共有リソース管理プログラムＳ１０は、処理Ｓ１００４で決定した共有リソース使用権限の付与順序に従って、付与対象となるサテライトＰＥに対し共有リソース３０の使用権限を付与する。具体的な手順は以下のとおりである。
【０１１０】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次（または最初）に使用権限を付与すべきサテライトＰＥを特定（Ｓ１００５）する。特定したＰＥ（ＰＥｎとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０１６）し、制御テーブルＳ２０の状態を、ＰＥｎが使用権限を保持している状態Ｓ２００４に更新する。
【０１１１】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｎ用ハードウェアタイマチャネルＳ４１のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を、ハードウェアタイマチャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０１７）する。
【０１１２】
（３）使用権限制御装置６０、６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１の同時起動を要求（Ｔ１０１８、Ｔ１０１９）する。起動要求を受けたハードウェアタイマチャネルＳ１１、Ｓ４１はそれぞれ動作状態（Ｓ１１０４、Ｓ４１０２）に遷移し、いずれも当該ハードウェアタイマチャネルＳ１１、Ｓ４１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。ここで、ハードウェアタイマチャネルＳ４１がカウント動作状態であることと、共有リソース使用権限をＰＥｎに対し付与中であることは等価であり、２つのハードウェアタイマチャネルＳ１１、Ｓ４１は同期してデクリメント動作を行う。
【０１１３】
ＰＥｎへの共有リソース使用権限の付与待ち処理Ｓ４００２の少なくとも一部として、ＰＥｎ用ハードウェアタイマチャネルＳ４１のチャネル状態レジスタ６１５を所定の周期でポーリング（Ｔ４００４）していたアプリケーションＳ４０は、ハードウェアタイマチャネルＳ４１のカウント動作状態、すなわちＰＥｎへの使用権限が付与済みであることを示す状態を検出すると、共有リソース３０の使用を伴う処理Ｓ４００３を実行する。アプリケーションＳ４０は、ハードウェアタイマチャネルＳ４１がカウント動作状態の期間、共有リソース３０を占有して使用可能である一方、使用権限の付与終了タイミングを通知する権限付与期間終了イベントを要因とする割り込み要求が発生するまでには、処理Ｓ４００３を終了しなければならないものとする。
【０１１４】
ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１が同時起動要求（Ｔ１０１８、Ｔ１０１９）によりカウント動作状態に遷移した後、各ハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に設定された時間、すなわち制御テーブルＳ２０内のＰＥｎに割り当て可能な制御周期内残り時間（ＲＴ）フィールドに指定された時間が経過すると、使用権限制御装置６０、６０Ａの割り込み要求制御部６３０、６３０Ａが備える割り込み要因レジスタ６３５、６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間終了イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、ハードウェアチャネルＳ１１、Ｓ４１は、当該イベントを要因とし使用権限付与期間の終了を通知する割り込みを、使用権限割り込み信号を経由し、それぞれＰＥ０（Ｔ１１０２）、ＰＥｎ（Ｔ４１０１）に対し同時に要求する。
【０１１５】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出したアプリケーションＳ４０は、図１１に示すように、使用権限付与期間終了に係る処理Ｓ４００４を実行する。
【０１１６】
（１）使用権限制御装置６０、６０Ａの割り込み要求制御部６３０、６３０Ａが備える割り込み要因レジスタ６３５、６３５Ａにおいて、ＰＥｎ用ハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、チャネルＳ４１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ４００５）。この結果、ハードウェアタイマチャネルＳ４１はカウント停止状態Ｓ４１０３へ遷移する。
【０１１７】
（２）必要に応じて、アプリケーションＳ４０は、割り込みからの回復処理、共有リソース使用権限が不要かつ当該制御周期内に実行すべき処理など、所定の後処理Ｓ４００５を実行する。
【０１１８】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出した共有リソース管理プログラムＳ１０は、使用権限付与期間終了に係る処理Ｓ１００６として、以下の処理を順次実行する。
【０１１９】
（１）使用権限制御装置６０、６０Ａの割り込み要求制御部６３０、６３０Ａが備える割り込み要因レジスタ６３５、６３５Ａにおいて、ＰＥ０用ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０２０）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０５へ遷移する。
【０１２０】
（２）安全対応のオプション処理として、割り込み要因レジスタ６３５、６３５ＡにおいてＰＥｎを対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ１０２１）。
【０１２１】
（３）制御テーブルＳ２０に関しては、ＰＥｎの使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０２２）し、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００５に更新する。
【０１２２】
（４）続いて、ＰＥｎの制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥｎに対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０２３）する。
【０１２３】
（５）ＰＥｎの制御周期内残り時間がゼロとなった場合、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥｎの使用要求フラグをクリア（Ｔ１０２４）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｍの使用要求フラグがセットされた状態Ｓ３００４となる。
【０１２４】
共有リソース管理プログラムＳ１０は、続いて、ＰＥｎの次に使用権限の付与先となるＰＥの特定と、特定したＰＥに対する共有リソース３０の権限付与に係る一連の処理Ｓ１００７を実行する。具体的な手順は以下のとおりである。
【０１２５】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次に使用権限を付与すべきサテライトＰＥを特定する。特定したＰＥ（ＰＥｍとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０２５）し、制御テーブルＳ２０の状態を、ＰＥｍが使用権限を保持している状態Ｓ２００６に更新する。
【０１２６】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｍ用ハードウェアタイマチャネル（図示せず）のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｍの制御周期内残り時間（ＲＴ）フィールド値を、ハードウェアタイマチャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０２６）する。
【０１２７】
（３）使用権限制御装置６０、６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１とＰＥｍ用ハードウェアタイマチャネル（図示せず）の同時起動を要求（Ｔ１０２７、Ｔ１０２８）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態（Ｓ１１０６）に遷移し、当該ハードウェアタイマチャネルＳ１１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。図示しないＰＥｍ用ハードウェアタイマチャネルも、同様の手順によりデクリメント動作を開始し、共有リソース使用権限をＰＥｍに対し付与中であることを示すカウント動作状態となる。
【０１２８】
本制御フローによれば、マイコン１、１Ｂの搭載する限られた機能を活用し、上記の使用権限付与処理を順次実行することにより、使用要求受け付けウィンドウ期間Ｗ内に使用権限の割り当てを要求した全ＰＥについて、厳密な優先度設定に基づき、かつハードウェアタイマチャネルＳ１１、Ｓ４１の許す限り細粒度の時間単位で、制御周期ごとに少なくとも１回は使用権限を付与するリソース共有制御を実現できる。
【０１２９】
＜第２の共有リソース使用権限付与制御フロー＞
図１２〜図１４は、第２実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
第２の共有リソース使用権限付与制御フローでは、第１の共有リソース使用権限付与制御フローの例示に対し（２）および（５）の条件が異なる。
【０１３０】
（２）使用権限制御装置は６０Ａの構成とし、全ＰＥについて使用権限付与期間終了イベント発生時の割り込み要求を許可に設定し、ＰＥ０を除く全ＰＥについて使用権限付与期間開始イベント発生時の割り込み要求を許可に設定する。
【０１３１】
（５）使用権限の付与開始タイミングの通知は、各サテライトＰＥ上で動作するアプリケーションに対し、使用権限制御装置６０Ａから使用権限付与期間開始イベント発生に伴う割り込みを要求することで実現する。
【０１３２】
第１サテライトＰＥであるＰＥｎには、使用権限制御装置６０Ａの備えるハードウェアタイマチャネルＳ４１が関連付けられ、ＰＥｎおよびＰＥｎ上で動作するアプリケーションＳ４０への共有リソース使用権限付与の開始／終了タイミングを制御する。マスタＰＥ（ＰＥ０）についても同様に、ハードウェアタイマチャネルＳ４１とは独立したハードウェアタイマチャネルＳ１１が関連付けられ、ＰＥ０上で動作する共有リソース管理プログラムＳ１０による共有制御処理の一部として、使用要求受け付けウィンドウ期間Ｗを計測する目的で、さらに望ましくは、使用権限を保持するサテライトＰＥに関連付けられたハードウェアタイマチャネルＳ４１の状態および動作を複製（レプリケーション）したレプリカとして、利用する。ＰＥｎ上で動作するアプリケーションＳ４０は、１バンク構成の使用要求レジスタバンクＳ３０内の要求フラグをセットし、共有リソース管理プログラムＳ１０は、使用要求レジスタバンクＳ３０に蓄積された共有リソース使用要求、および制御テーブルＳ２０に設定された制御情報をそれぞれ参照／更新しながら、使用権限付与順序の決定と使用権限制御装置６０Ａの制御を行う。共有制御の開始に先立ち、制御テーブルＳ２０は適切に設定されているものとする。
【０１３３】
図１２において、共有リソース管理プログラムＳ１０が、図示しないハードウェアもしくはソフトウェア手段を用いて制御周期の開始タイミングを検出すると、以下の初期化処理Ｓ１００１を順次実行する。
【０１３４】
（１）使用権限制御装置６０Ａが備える停止トリガレジスタ６２６への書き込みにより、全ハードウェアタイマチャネルＳ１１、Ｓ４１の同時停止を要求（Ｔ１００１、Ｔ１００２）する。停止要求を受けたＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１は、それぞれ停止状態（Ｓ１１０１、Ｓ４１０１）となる。
【０１３５】
（２）使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより全ＰＥの使用要求フラグをクリアし、さらに共有リソース使用要求セットレジスタ５２０−０への書き込みによりＰＥ０の使用要求フラグをセットすることで、ＰＥ０の使用要求フラグのみ有効な状態（Ｓ３００１）となるよう、共有リソース使用要求フラグレジスタ５１０の内容を更新（Ｔ１００３）する。
【０１３６】
（３）制御テーブルＳ２０の全ＰＥについて、使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１００４）し、制御周期内残り時間（ＲＴ）フィールド値は、制御周期内上限時間（ＰＴ）フィールド値からハードウェアタイマチャネルＳ１１、Ｓ４１内のカウントレジスタに設定可能な値に変換した値（以下換算値と呼ぶ）に更新（Ｔ１００５）することで、制御周期開始時点での制御テーブルＳ２０の初期状態（Ｓ２００１）とする。
【０１３７】
（４）各ＰＥに関連付けられたハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に対し、制御テーブルＳ２０の制御周期内残り時間（ＲＴ）フィールド値をそれぞれ設定（Ｔ１００６、Ｔ１００７）する。本時点では、ＰＥ０用ハードウェアタイマチャネルＳ１１には、使用要求受け付けウィンドウ期間Ｗに相当する値が設定されている。
【０１３８】
（５）制御周期の先頭において、ＰＥ０に対する共有リソース使用権限付与の態様で使用要求受け付けウィンドウ期間Ｗを実現する目的で、ＰＥ０用ハードウェアタイマチャネルＳ１１を動作させるため、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１００８）し、制御テーブルＳ２０の状態を、ＰＥ０が使用権限を保持している状態Ｓ２００２に更新する。本処理は、ＰＥ０の基本優先度設定が最高であることと組み合わせることで、ＰＥ０とそれ以外のＰＥｎに対する共有リソース使用権限付与に係る処理を共通化し、使用要求受け付けウィンドウ期間Ｗ以前にＰＥ０以外のＰＥｎに対して使用権限が付与されるのを抑止するために有効なオプション処理である。
【０１３９】
（６）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１の起動を要求（Ｔ１００９）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態Ｓ１１０２へと遷移し、現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。
【０１４０】
共有リソース管理プログラムＳ１０と同様の手段により制御周期の開始タイミングを検出した、ＰＥｎ上で動作するアプリケーションＳ４０は、制御周期内に実行すべき処理に関する初期化等、所定の前処理を実行（Ｓ４００１）する。実行すべき処理が共有リソース使用権限の付与を必要とする場合には、前処理の少なくとも一部として、使用要求受け付けウィンドウ期間Ｗ内、すなわちＰＥ０用ハードウェアタイマチャネルＳ１１のカウント動作中に、使用要求レジスタバンクＳ３０内にあるＰＥｎ用共有リソース使用要求セットレジスタへの書き込みにより、ＰＥｎの使用要求フラグをセット（Ｔ４００１）する。
【０１４１】
また、図示しないが、同じ使用要求受け付けウィンドウ期間Ｗ内に、ＰＥｎとは異なるサテライトＰＥ（ＰＥｍとする）上で動作するアプリケーションも、同様の手順により、ＰＥｍの使用要求フラグをセットする。この結果、使用要求受け付けウィンドウ期間Ｗ終了の時点で、使用要求レジスタバンクＳ３０には、ＰＥ０、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００２となる。
【０１４２】
第１の共有リソース使用権限付与制御フローとは異なり、前処理を完了したＰＥｎ上のアプリケーションＳ４０は、ＰＥｎへの共有リソース使用権限の付与待ち処理の少なくとも一部として、ＰＥｎ用ハードウェアタイマチャネルＳ４１のチャネル状態レジスタ６１５をポーリングする必要はない。共有リソース管理プログラムＳ１０によるハードウェアタイマチャネルＳ４１の起動要求に応じて、使用権限制御装置６０Ａから使用権限付与期間開始イベントを要因とする割り込みが要求されるのを待てばよく、当該割り込み要求までの期間を別のタスク処理の実行に当ててもよい。
【０１４３】
一方、カウント動作状態にあるＰＥ０用ハードウェアタイマチャネルＳ１１は、使用要求受け付けウィンドウ期間Ｗ、所定の時間経過ごとに現カウント値レジスタ６１６の内容をデクリメントする。現カウント値レジスタ６１６の内容が、事前に定義された下限値以下となったことを検出すると、使用権限制御装置６０Ａは、割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を真にセットする。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、使用権限制御割り込み信号６１により当該イベントを要因とする割り込みをＰＥ０に要求（Ｔ１１０１）する。
【０１４４】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求Ｔ１００１を検出した共有リソース管理プログラムＳ１０は、使用要求受け付けウィンドウ期間Ｗの終了に係る一連の処理Ｓ１００２を順次実行する。
【０１４５】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥ０用ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０１０）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０３へ遷移する。
【０１４６】
（２）ＰＥ０に対する共有リソース使用権限付与の態様で実装した、使用要求受け付けウィンドウ期間Ｗ終了に伴い、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０１１）し、制御テーブルＳ２０の状態を、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００３に更新する。なお、処理Ｔ１０１１は処理Ｔ１００８と対になるものであり、処理Ｔ１００８を省略した場合は、処理Ｔ１０１１も同様に省略してよい。
【０１４７】
（３）続いて、ＰＥ０の制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥ０の制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥ０に対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０１２）する。
【０１４８】
（４）ＰＥ０の制御周期内残り時間がゼロとなった場合、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥ０の使用要求フラグをクリア（Ｔ１０１３）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００３となる。
【０１４９】
共有リソース管理プログラムＳ１０は、続いて、図１３に示すように、使用要求レジスタバンクＳ３０の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０１４）、使用要求受け付けウィンドウ期間Ｗに蓄積された共有リソース使用要求の有無をチェック（Ｓ１００３）する。１以上の使用要求があった場合には、図２２に示すフローに基づき、共有リソース使用権限の付与順序を一括して決定（Ｓ１００４）し、制御テーブルＳ２０のうち、少なくとも共有リソース３０の使用を要求した全ＰＥについて、決定した付与順序を特定する値を制御周期内権限付与順序（ＯＲ）フィールドに設定する（Ｔ１０１５）。さらに望ましくは、共有リソース３０の使用要求なし、制御テーブルＳ２０内の制御ポリシ設定が無効などの所定の理由により、現制御周期における共有リソース使用権限付与の対象外となったＰＥについては、付与対象外であることを示す所定の値を、当該ＰＥのＯＲフィールドに設定してよい。
【０１５０】
以降、共有リソース管理プログラムＳ１０は、処理Ｓ１００４で決定した共有リソース使用権限の付与順序にしたがい、付与対象とするサテライトＰＥに対し共有リソース３０の使用権限を付与する。具体的な手順は以下のとおりである。
【０１５１】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次（または最初）に使用権限を付与すべきサテライトＰＥを特定（Ｓ１００５）する。特定したＰＥ（ＰＥｎとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０１６）し、制御テーブルＳ２０の状態を、ＰＥｎが使用権限を保持している状態Ｓ２００４に更新する。
【０１５２】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｎ用ハードウェアタイマチャネルＳ４１のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を、チャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０１７）する。
【０１５３】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１の同時起動を要求（Ｔ１０１８、Ｔ１０１９）する。起動要求を受けたハードウェアタイマチャネルＳ１１、Ｓ４１はそれぞれ動作状態（Ｓ１１０４、Ｓ４１０２）に遷移し、いずれも当該ハードウェアタイマチャネルＳ１１、Ｓ４１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。ここで、ハードウェアタイマチャネルＳ４１がカウント動作状態であることと、共有リソース使用権限をＰＥｎに対し付与中であることは等価であり、２つのハードウェアタイマチャネルＳ１１、Ｓ４１は同期してデクリメント動作を行う。
【０１５４】
共有リソース管理プログラムＳ１０から、ＰＥｎ用ハードウェアタイマチャネルＳ４１に対する起動要求Ｔ１０１８を受けると、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間開始イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは後者のイベントを要因とする割り込みのみ許可に設定しているため、ハードウェアタイマチャネルＳ４１は、当該イベントを要因として使用権限付与期間の開始を通知する割り込みを、使用権限割り込み信号を経由し、ＰＥｎに対し要求（Ｔ４１２１）する。
【０１５５】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間開始イベントを要因とする割り込み要求Ｔ４１２１を検出したアプリケーションＳ４０は、使用権限付与期間開始に係る処理Ｓ４０２１を実行する。すなわち、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥｎ用ハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値を偽にクリア（Ｔ４０２１）し、続いて、共有リソース３０の使用を伴う処理Ｓ４００３を実行する。第１の制御フローと同様、アプリケーションＳ４０は、ハードウェアタイマチャネルＳ４１がカウント動作状態の期間、共有リソース３０を占有して使用可能である一方、使用権限の付与終了タイミングを通知する権限付与期間終了イベント発生を要因とする割り込み要求が発生するまでには、処理Ｓ４００３を終了しなければならないものとする。
【０１５６】
ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１が同時起動要求（Ｔ１０１８、Ｔ１０１９）によりカウント動作状態に遷移した後、各ハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に設定された時間、すなわち制御テーブルＳ２０内のＰＥｎに割り当て可能な制御周期内残り時間（ＲＴ）フィールドに指定された時間が経過すると、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間終了イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、図１４に示すように、ハードウェアタイマチャネルＳ１１、Ｓ４１は、当該イベントを要因とし使用権限付与期間の終了を通知する割り込みを、使用権限割り込み信号を経由し、それぞれＰＥ０（Ｔ１１０２）、ＰＥｎ（Ｔ４１０１）に対し同時に要求する。
【０１５７】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出したアプリケーションＳ４０は、使用権限付与期間終了に係る処理Ｓ４００４を実行する。
【０１５８】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥｎを対象とする全イベントの発生を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ４１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ４００５）。この結果、ハードウェアタイマチャネルＳ４１はカウント停止状態Ｓ４１０３へ遷移する。
【０１５９】
（２）必要に応じて、アプリケーションＳ４０は割り込みからの回復処理、共有リソース使用権限が不要かつ当該制御周期内に実行すべき処理など、所定の後処理Ｓ４００５を実行する。
【０１６０】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出した共有リソース管理プログラムＳ１０は、使用権限付与期間終了に係る処理Ｓ１００６として、以下の処理を順次実行する。
【０１６１】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥ０を対象とする全イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０２０）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０５へ遷移する。
【０１６２】
（２）安全対応のオプション処理として、割り込み要因レジスタ６３５ＡにおいてＰＥｎを対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ１０２１）。
【０１６３】
（３）制御テーブルＳ２０に関しては、ＰＥｎの使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０２２）し、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００５に更新する。
【０１６４】
（４）続いて、ＰＥｎの制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥｎに対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０２３）する。
【０１６５】
（５）ＰＥｎの制御周期内残り時間がゼロとなった場合、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥｎの使用要求フラグをクリア（Ｔ１０２４）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｍの使用要求フラグがセットされた状態Ｓ３００４となる。
【０１６６】
共有リソース管理プログラムＳ１０は、続いて、ＰＥｎの次に使用権限の付与先となるＰＥの特定と、特定したＰＥに対する共有リソース３０の権限付与に係る一連の処理Ｓ１００７を実行する。具体的な手順は以下のとおりである。
【０１６７】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次に使用権限を付与すべきサテライトＰＥを特定する。特定したＰＥ（ＰＥｍとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０２５）し、制御テーブルＳ２０の状態を、ＰＥｍが使用権限を保持している状態Ｓ２００６に更新する。
【０１６８】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｍ用ハードウェアタイマチャネル（図示せず）のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｍの制御周期内残り時間（ＲＴ）フィールド値を、チャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０２６）する。
【０１６９】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１とＰＥｍ用ハードウェアタイマチャネル（図示せず）の同時起動を要求（Ｔ１０２７、Ｔ１０２８）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態（Ｓ１１０６）に遷移し、当該ハードウェアタイマチャネルＳ１１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。図示しないＰＥｍ用ハードウェアタイマチャネルも、同様の手順によりデクリメント動作を開始し、共有リソース使用権限をＰＥｍに対し付与中であることを示すカウント動作状態となる。
【０１７０】
第１の制御フローと比較し、本制御フローによれば、サテライトＰＥに対する共有リソース使用権限付与状態を取得するためのポーリング処理が不要となり、特に複数タスクの同時実行をサポートするサテライトＰＥにおける、ＣＰＵコア等の計算リソースの利用効率を向上させることができる。
【０１７１】
＜第３の共有リソース使用権限付与制御フロー＞
図１５〜図１８は、第３実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
第３の共有リソース使用権限付与制御フローでは、第２の共有リソース使用権限付与制御フローの例示に対し、さらに（３）および（６）の条件が異なる。
【０１７２】
（３）制御テーブル１４０の設定に関し、マスタＰＥ（ＰＥ０）の基本優先度（ＰＲ）フィールドをゼロ（優先度最高）、制御周期内上限時間（ＰＴ）フィールドを使用要求受け付けウィンドウ期間Ｗに換算可能な値に設定し、さらに、少なくとも１つのサテライトＰＥ（ＰＥｎとする）の制御周期内権限再付与（ＲＧ）フィールドを有効に、ＰＥｎを除くサテライトＰＥとマスタＰＥ（ＰＥ０）についてはＲＧフィールドを無効に、それぞれ設定する。
【０１７３】
（６）使用権限の付与終了タイミングを通知する、使用権限制御装置６０Ａから使用権限付与期間終了イベント発生に伴う割り込み要求の検出に代えて、アプリケーションＳ４０が共有リソース３０の使用を伴う処理を完了した時点で、アプリケーションＳ４０から共有リソース管理プログラムＳ１０に対し、ＰＥ間割り込み制御装置７０を介したＰＥ間割り込み要求により使用権限の返却を主体的に通知する。
【０１７４】
第１サテライトＰＥであるＰＥｎには、使用権限制御装置６０Ａの備えるハードウェアタイマチャネルＳ４１が関連付けられ、ＰＥｎおよびＰＥｎ上で動作するアプリケーションＳ４０への共有リソース使用権限付与の開始／終了タイミングを制御する。マスタＰＥ（ＰＥ０）についても同様に、ハードウェアタイマチャネルＳ４１とは独立したハードウェアタイマチャネルＳ１１が関連付けられ、ＰＥ０上で動作する共有リソース管理プログラムＳ１０による共有制御処理の一部として、使用要求受け付けウィンドウ期間Ｗを計測する目的で、さらに望ましくは、使用権限を保持するサテライトＰＥに関連付けられたハードウェアタイマチャネルＳ４１の状態および動作を複製（レプリケーション）したレプリカとして、利用する。ＰＥｎ上で動作するアプリケーションＳ４０は、１バンク構成の使用要求レジスタバンクＳ３０内の要求フラグをセットし、共有リソース管理プログラムＳ１０は、使用要求レジスタバンクＳ３０に蓄積された共有リソース使用要求、および制御テーブルＳ２０に設定された制御情報をそれぞれ参照／更新しながら、使用権限付与順序の決定と使用権限制御装置６０Ａの制御を行う。本制御フローでは、さらに、少なくともアプリケーションＳ４０から共有リソース管理プログラムＳ１０に対し、主体的な共有リソース使用権限の返却を通知する手段として、ＰＥ間割り込み制御装置７０を介したＰＥ間割り込み要求を利用する。共有制御の開始に先立ち、制御テーブルＳ２０は適切に設定されているものとする。
【０１７５】
図１５において、共有リソース管理プログラムＳ１０が、図示しないハードウェアもしくはソフトウェア手段を用いて制御周期の開始タイミングを検出すると、以下の初期化処理Ｓ１００１を順次実行する。
【０１７６】
（１）使用権限制御装置６０Ａが備える停止トリガレジスタ６２６への書き込みにより、全ハードウェアタイマチャネルＳ１１、Ｓ４１の同時停止を要求（Ｔ１００１、Ｔ１００２）する。停止要求を受けたＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１は、それぞれ停止状態（Ｓ１１０１、Ｓ４１０１）となる。
【０１７７】
（２）使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより全ＰＥの使用要求フラグをクリアし、さらに共有リソース使用要求セットレジスタ５２０−０への書き込みによりＰＥ０の使用要求フラグをセットすることで、ＰＥ０の使用要求フラグのみ有効な状態（Ｓ３００１）となるよう、共有リソース使用要求フラグレジスタ５１０の内容を更新（Ｔ１００３）する。
【０１７８】
（３）制御テーブルＳ２０の全ＰＥについて、使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１００４）し、制御周期内残り時間（ＲＴ）フィールド値は、制御周期内上限時間（ＰＴ）フィールド値からハードウェアタイマチャネルＳ１１、Ｓ４１内のカウントレジスタに設定可能な値に変換した値（以下換算値と呼ぶ）に更新（Ｔ１００５）することで、制御周期開始時点での制御テーブルＳ２０の初期状態（Ｓ２００１）とする。
【０１７９】
（４）各ＰＥに関連付けられたハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に対し、制御テーブルＳ２０の制御周期内残り時間（ＲＴ）フィールド値をそれぞれ設定（Ｔ１００６、Ｔ１００７）する。本時点では、ＰＥ０用ハードウェアタイマチャネルＳ１１には、使用要求受け付けウィンドウ期間Ｗに相当する値が設定されている。
【０１８０】
（５）制御周期の先頭において、ＰＥ０に対する共有リソース使用権限付与の態様で使用要求受け付けウィンドウ期間Ｗを実現する目的で、ＰＥ０用ハードウェアタイマチャネルＳ１１を動作させるため、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１００８）し、制御テーブルＳ２０の状態を、ＰＥ０が使用権限を保持している状態Ｓ２００２に更新する。本処理は、ＰＥ０の基本優先度設定が最高であることと組み合わせることで、ＰＥ０とそれ以外のＰＥｎに対する共有リソース使用権限付与に係る処理を共通化し、使用要求受け付けウィンドウ期間Ｗ以前にＰＥ０以外のＰＥｎに対して使用権限が付与されるのを抑止するために有効なオプション処理である。
【０１８１】
（６）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１の起動を要求（Ｔ１００９）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態Ｓ１１０２へと遷移し、現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。
【０１８２】
共有リソース管理プログラムＳ１０と同様の手段により制御周期の開始タイミングを検出した、ＰＥｎ上で動作するアプリケーションＳ４０は、制御周期内に実行すべき処理に関する初期化等、所定の前処理を実行（Ｓ４００１）する。実行すべき処理が共有リソース使用権限の付与を必要とする場合には、前処理の少なくとも一部として、使用要求受け付けウィンドウ期間Ｗ内、すなわちＰＥ０用ハードウェアタイマチャネルＳ１１のカウント動作中に、使用要求レジスタバンクＳ３０内にあるＰＥｎ用共有リソース使用要求セットレジスタへの書き込みにより、ＰＥｎの使用要求フラグをセット（Ｔ４００１）する。
【０１８３】
また、図示しないが、同じ使用要求受け付けウィンドウ期間Ｗ内に、ＰＥｎとは異なるサテライトＰＥ（ＰＥｍとする）上で動作するアプリケーションも、同様の手順により、ＰＥｍの使用要求フラグをセットするものとする。この結果、使用要求受け付けウィンドウ期間Ｗ終了の時点で、使用要求レジスタバンクＳ３０には、ＰＥ０、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００２となる。
【０１８４】
第２の共有リソース使用権限付与制御フローと同様、前処理を完了したＰＥｎ上のアプリケーションＳ４０は、ＰＥｎへの共有リソース使用権限の付与待ち処理の少なくとも一部として、ＰＥｎ用ハードウェアタイマチャネルＳ４１のチャネル状態レジスタ６１５をポーリングする必要はない。共有リソース管理プログラムＳ１０によるハードウェアタイマチャネルＳ４１の起動要求に応じて、使用権限制御装置６０Ａから使用権限付与期間開始イベントを要因とする割り込みが要求されるのを待てばよく、当該割り込み要求までの期間を別のタスク処理の実行に当ててもよい。
【０１８５】
一方、カウント動作状態にあるＰＥ０用ハードウェアタイマチャネルＳ１１は、使用要求受け付けウィンドウ期間Ｗ、所定の時間経過ごとに現カウント値レジスタ６１６の内容をデクリメントする。現カウント値レジスタ６１６の内容が、事前に定義された下限値以下となったことを検出すると、使用権限制御装置６０Ａは、割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を真にセットする。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、使用権限制御割り込み信号６１により当該イベントを要因とする割り込みをＰＥ０に要求（Ｔ１１０１）する。
【０１８６】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求Ｔ１１０１を検出した共有リソース管理プログラムＳ１０は、使用要求受け付けウィンドウ期間の終了に係る一連の処理Ｓ１００２を順次実行する。
【０１８７】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥ０用ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０１０）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０３へ遷移する。
【０１８８】
（２）ＰＥ０に対する共有リソース使用権限付与の態様で実装した、使用要求受け付けウィンドウ期間Ｗ終了に伴い、ＰＥ０の使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０１１）し、制御テーブルＳ２０の状態を、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００３に更新する。なお、処理Ｔ１０１１は処理Ｔ１００８と対になるものであり、処理Ｔ１００８を省略した場合は、処理Ｔ１０１１も同様に省略してよい。
【０１８９】
（３）続いて、ＰＥ０の制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥ０の制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥ０に対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０１２）する。
【０１９０】
（４）ＰＥ０の制御周期内残り時間がゼロとなった場合、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥ０の使用要求フラグをクリア（Ｔ１０１３）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３００３となる。
【０１９１】
共有リソース管理プログラムＳ１０は、続いて、図１６に示すように、使用要求レジスタバンクＳ３０の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０１４）、使用要求受け付けウィンドウ期間Ｗに蓄積された共有リソース使用要求の有無をチェック（Ｓ１００３）する。１以上の使用要求があった場合には、図２３に示すフローに基づき、本処理実行時点で最も優先度の高い１つのＰＥを、最初の共有リソース使用権限付与先として動的に決定（Ｓ１０４１）する。本制御フローにおける共有制御ポリシでは、制御テーブルＳ２０内の制御周期内権限付与順序（ＯＲ）フィールドを参照しないため、ＯＲフィールドの設定値は任意としてよい。
【０１９２】
以降、共有リソース管理プログラムＳ１０は、処理Ｓ１０４１で動的に決定した共有リソース使用権限の付与対象とするサテライトＰＥに対し、共有リソース３０の使用権限を付与する処理Ｓ１０４２を実行する。具体的な手順は以下のとおりである。
【０１９３】
（１）使用権限を付与すべきＰＥ（ＰＥｎとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０４１）し、制御テーブルＳ２０の状態を、ＰＥｎが使用権限を保持している状態Ｓ２００４に更新する。
【０１９４】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、最初の使用権限付与先であるＰＥｎ用ハードウェアタイマチャネルＳ４１のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を、チャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０１７）する。
【０１９５】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１の同時起動を要求（Ｔ１０１８、Ｔ１０１９）する。起動要求を受けたハードウェアタイマチャネルＳ１１、Ｓ４１はそれぞれ動作状態（Ｓ１１０４、Ｓ４１０２）に遷移し、いずれも当該ハードウェアタイマチャネルＳ１１、Ｓ４１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。ここで、ハードウェアタイマチャネルＳ４１がカウント動作状態であることと、共有リソース使用権限をＰＥｎに対し付与中であることは等価であり、２つのハードウェアタイマチャネルＳ１１、Ｓ４１は同期してデクリメント動作を行う。
【０１９６】
共有リソース管理プログラムＳ１０から、ＰＥｎ用ハードウェアタイマチャネルＳ４１に対する起動要求Ｔ１０１８を受けると、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間開始イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは後者のイベントを要因とする割り込みのみ許可に設定しているため、ハードウェアタイマチャネルＳ４１は、当該イベントを要因として使用権限付与期間の開始を通知する割り込みを、使用権限割り込み信号を経由し、ＰＥｎに対し要求（Ｔ４１２１）する。
【０１９７】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間開始イベントを要因とする割り込み要求Ｔ４１２１を検出したアプリケーションＳ４０は、使用権限付与期間開始に係る処理Ｓ４０２１を実行する。すなわち、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥｎ用ハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値を偽にクリア（Ｔ４０２１）し、続いて、共有リソース３０の使用を伴う処理Ｓ４００３を実行する。第２の制御フローと同様、アプリケーションＳ４０は、ハードウェアタイマチャネルＳ４１がカウント動作状態の期間、共有リソース３０を占有して使用可能である一方、使用権限の付与終了タイミングを通知する権限付与期間終了イベント発生を要因とする割り込み要求が発生するまでには、処理Ｓ４００３を終了しなければならないものとする。
【０１９８】
第２の制御フローでは、アプリケーションＳ４０において、共有リソース３０を使用する処理Ｓ４００３が完了したか否かに関わらず、使用権限付与期間終了イベントおよび当該イベント要因とする割り込み要求を検出するまで、共有リソース３０の使用権限をＰＥｎが保持し続ける。それに対し、本制御フローでは、共有リソース３０の使用権限が不要となった時点で、使用権限付与期間終了イベントを要因とする割り込み要求を待たずに、図１７に示すように、以下の使用権限返却処理Ｓ４０４１を主体的に実行する。
【０１９９】
（１）動作中のＰＥｎ用ハードウェアタイマチャネルＳ４１を安全に停止させるため、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込みイネーブルレジスタ６３６Ａへの書き込みにより、ＰＥｎを対象とする全イベントを要因とする割り込み要求を一時的に禁止する（Ｔ４０４１）。
【０２００】
（２）割り込み要因レジスタ６３５Ａにおいて、ＰＥｎを対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ４０４２）。この結果、ハードウェアタイマチャネルＳ４１はカウント停止状態Ｓ４１０３へ遷移する。
【０２０１】
（３）ＰＥ間割り込み制御装置７０の備える、ＰＥｎを要求元ＰＥとするＰＥ間割り込み要求セットレジスタ７２０−ｎへの書き込みにより、ＰＥ０を要求先ＰＥとするＰＥ間割り込み要求フラグをセットし、ＰＥｎからＰＥ０へのＰＥ間割り込みを要求（Ｔ４０４３）する。なお、ＰＥ間割り込みに関し、使用権限の返却による共有リソース３０の解放とは異なるメッセージを伝達する必要がある場合には、ＰＥ間割り込み信号に付随して割り込み要因を通知する手段（図示せず）を別途設けてもよい。
【０２０２】
（４）割り込みイネーブルレジスタ６３６Ａへの書き込みにより、処理Ｔ４０４１で一時的に禁止していた割り込み要求を再度許可する（Ｔ４０４４）。
【０２０３】
（５）必要に応じて、アプリケーションＳ４０は共有リソース使用権限が不要かつ当該制御周期内に実行すべき処理など、所定の後処理Ｓ４００５を実行する。
【０２０４】
ＰＥ間割り込み信号を経由した、ＰＥｎからＰＥ０へのＰＥ間割り込み要求Ｔ４０４３を検出した共有リソース管理プログラムＳ１０は、使用権限返却に係る処理Ｓ１０４３として、以下の処理を順次実行する。
【０２０５】
（１）動作中のＰＥ０用ハードウェアタイマチャネルＳ１１を安全に停止させるため、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込みイネーブルレジスタ６３６Ａへの書き込みにより、ＰＥ０を対象とする全イベントを要因とする割り込み要求を一時的に禁止する（Ｔ１０４２）。
【０２０６】
（２）割り込み要因レジスタ６３５Ａにおいて、ＰＥ０を対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０４３）。この結果、ハードウェアタイマチャネルＳ４１はカウント停止状態Ｓ１１０５へ遷移する。
【０２０７】
（３）安全対応のオプション処理として、割り込み要因レジスタ６３５Ａにおいて、ＰＥｎを対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ１０２１）。
【０２０８】
（４）割り込みイネーブルレジスタ６３６Ａへの書き込みにより、処理Ｔ１０４２で一時的に禁止していた割り込み要求を再度許可する（Ｔ１０４４）。
【０２０９】
（５）制御テーブルＳ２０に関しては、ＰＥｎの使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０２２）し、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００５に更新する。
【０２１０】
（６）続いて、ＰＥｎの制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを有効（再付与許可）に設定しており、その場合には、ＰＥｎ用ハードウェアタイマチャネルＳ４１の現カウント値レジスタ６１６、または／および、ＰＥ０用ハードウェアタイマチャネルＳ１１の現カウント値レジスタ６１６の内容をそれぞれ読み出し（Ｔ１０４５、Ｔ１０４６）、ＰＥｎが実際に共有リソース３０を占有した時間を差し引いた、ＰＥｎに割り当て可能な制御周期内残り時間の換算値を算出する。算出方法としては、処理Ｔ１０４５で取得した換算値、処理Ｔ１０４５および処理Ｔ１０４６で取得した２つの換算値の平均、または２つの換算値のうちより小さい値のいずれかの値とすればよい。
【０２１１】
（７）制御テーブルＳ２０のＰＥｎについて、ＲＴフィールドの値を（６）で算出した換算値に更新する（Ｔ１０４７）。
【０２１２】
（８）ＰＥｎに対する共有リソース使用権限再付与に備え、ＰＥｎ用ハードウェアタイマチャネルＳ４１の初期カウント値レジスタ６１７についても同様に、（７）で算出した換算値に更新する（Ｔ１０４８）。
【０２１３】
（９）（６）で算出したＰＥｎの制御周期内残り時間がゼロとなった場合、現制御周期内のＰＥｎに対する権限再付与はＲＧフィールドの設定によらず禁止となり、使用要求レジスタバンクＳ３０が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥｎの使用要求フラグをクリア（Ｔ１０４９）する。この結果、使用要求レジスタバンクＳ３０は、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態、もしくはＰＥｍの使用要求のみがセットされた状態のいずれかの状態Ｓ３０４１となる。なお、本制御フローでは、ＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態として以降の説明を続ける。
【０２１４】
共有リソース管理プログラムＳ１０は、続いて、図１８に示すように、ＰＥｎの次に使用権限の付与先となるＰＥの特定と、特定したＰＥに対する共有リソース３０の権限付与に係る一連の処理を実行する。具体的には、改めて、使用要求レジスタバンクＳ３０の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０５０）、制御周期内残り時間として正の値をもつＰＥによる使用権限再付与を含む、共有リソース使用要求の有無をチェック（Ｓ１０４４）する。１以上の使用要求があった場合には、図２３に示すフローに基づき、本処理実行時点で最も優先度の高い１つのＰＥを、次の共有リソース使用権限付与先として動的に決定（Ｓ１０４５）する。
【０２１５】
以降、共有リソース管理プログラムＳ１０は、処理Ｓ１０４５で動的に決定した共有リソース使用権限の付与対象とするサテライトＰＥに対し、共有リソース３０の使用権限を付与する処理Ｓ１０４６を実行する。具体的な手順は以下のとおりである。
【０２１６】
（１）次に使用権限を付与するＰＥ（ＰＥｎ、同じＰＥに対し２回連続で使用権限が付与されるケースを想定する）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０５１）し、制御テーブルＳ２０の状態を、ＰＥｎが再度使用権限を保持している状態Ｓ２００６に更新する。
【０２１７】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｎ用ハードウェアタイマチャネルＳ４１のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を、ハードウェアタイマチャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０１７）する。ここで設定される値は、１回目の使用権限付与時にＰＥｎが実際に共有リソース３０を占有した時間に相当する値を差し引いた値である。
【０２１８】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１の同時起動を要求（Ｔ１０１８、Ｔ１０１９）する。ＰＥｎに対する１回目の権限付与の場合と同様、起動要求を受けたハードウェアタイマチャネルＳ１１、Ｓ４１はそれぞれ動作状態（Ｓ１１０６、Ｓ４１４１）に遷移し、いずれも当該ハードウェアタイマチャネルＳ１１、Ｓ４１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。
【０２１９】
第２の制御フローと比較し、本制御フローによれば、サテライトＰＥが実際に共有リソース３０を使用した時間が制御テーブルＳ２０内の制御周期内上限時間の設定より短い場合に、例えば、非定常な割り込み処理による共有リソース使用要求に対して余剰時間を割り当てることにより、共有リソース３０が未使用となる無駄時間を削減し、共有リソース３０の利用効率を向上させることができる。
【０２２０】
＜第４の共有リソース使用権限付与制御フロー＞
図１９〜図２１は、第４実施形態に係るマイコンの共有リソース使用権限付与の動作を示すフローチャートである。
第４の共有リソース使用権限付与制御フローでは、第２の共有リソース使用権限付与制御フローの例示に対し、さらに（１）、（３）および（４）の条件が異なる。
【０２２１】
（１）使用要求レジスタ５０は２バンク（使用要求レジスタバンク５０−０、５０−１）構成とし、使用要求レジスタバンクＳ３１、Ｓ３２（Ｂａｎｋ−０、Ｂａｎｋ−１）とする。
【０２２２】
（３）制御テーブル１４０の設定に関し、マスタＰＥ（ＰＥ０）のイネーブル（ＥＮ）フィールドを無効に設定し、さらに、全サテライトＰＥについて制御周期内権限再付与（ＲＧ）フィールドを無効に、それぞれ設定する。
【０２２３】
（４）図８（ｂ）を用いて概念的に示したように、各制御周期の全体について、次制御周期における共有リソース使用要求を受け付ける使用要求受け付けウィンドウ期間として設定する。
【０２２４】
第１のサテライトＰＥであるＰＥｎには、使用権限制御装置６０Ａの備えるハードウェアタイマチャネルＳ４１が関連付けられ、ＰＥｎおよびＰＥｎ上で動作するアプリケーションＳ４０への共有リソース使用権限付与の開始／終了タイミングを制御する。マスタＰＥ（ＰＥ０）についても同様に、ハードウェアタイマチャネルＳ４１とは独立したハードウェアタイマチャネルＳ１１が関連付けられ、望ましくは、ＰＥ０上で動作する共有リソース管理プログラムＳ１０による共有制御処理の一部として、使用権限を保持するサテライトＰＥに関連付けられたハードウェアタイマチャネルＳ４１の状態および動作を複製（レプリケーション）したレプリカとして利用する。
【０２２５】
ＰＥｎ上で動作するアプリケーションＳ４０は、２バンク構成の使用要求レジスタバンクＳ３１、Ｓ３２内のうち裏バンク側の使用要求レジスタバンク内の要求フラグをセットし、共有リソース管理プログラムＳ１０は、表バンク側の使用要求レジスタバンクに蓄積された共有リソース使用要求、および制御テーブルＳ２０に設定された制御情報をそれぞれ参照／更新し、さらに制御周期ごとにバンクの表裏を切り替えながら、使用権限付与順序の決定と使用権限制御装置６０Ａの制御を行う。共有制御の開始に先立ち、制御テーブルＳ２０は適切に設定されているものとする。また、制御開始時点では、２つの使用要求レジスタバンクＳ３１、Ｓ３２のうち、使用要求レジスタバンクＳ３２が表バンク（カレントバンクとも呼ぶ）、使用要求レジスタバンクＳ３１が裏バンクであるとする。
【０２２６】
図１９において、共有リソース管理プログラムＳ１０が、図示しないハードウェアもしくはソフトウェア手段を用いて制御周期の開始タイミングを検出すると、以下の初期化処理Ｓ１０６１を順次実行する。
【０２２７】
（１）使用権限制御装置６０Ａが備える停止トリガレジスタ６２６への書き込みにより、全ハードウェアタイマチャネルＳ１１、Ｓ４１の同時停止を要求（Ｔ１００１、Ｔ１００２）する。停止要求を受けたＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１は、それぞれ停止状態（Ｓ１１０１、Ｓ４１０１）となる。
【０２２８】
（２）この時点で表バンクに相当する、使用要求レジスタバンクＳ３２が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより全ＰＥの使用要求フラグをクリアすることで、全ＰＥの使用要求フラグが無効な状態（Ｓ３２６１）となるよう、共有リソース使用要求フラグレジスタ５１０の内容を更新（Ｔ１０６１）する。
【０２２９】
（３）所定の手順により使用要求レジスタバンクＳ３１、Ｓ３２の表裏バンクを切り替え（Ｔ１０６２）、使用要求レジスタバンクＳ３１を表バンクとする（Ｓ３１６１）。
【０２３０】
（４）制御テーブルＳ２０の全ＰＥについて、使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１００４）し、制御周期内残り時間（ＲＴ）フィールド値は、制御周期内上限時間（ＰＴ）フィールド値からハードウェアタイマチャネルＳ１１、Ｓ４１内のカウントレジスタに設定可能な値に変換した値（以下換算値と呼ぶ）に更新（Ｔ１００５）することで、制御周期開始時点での制御テーブルＳ２０の初期状態（Ｓ２００１）とする。
【０２３１】
（５）各サテライトＰＥに関連付けられたハードウェアタイマチャネルの初期カウント値レジスタ６１７に対し、制御テーブルＳ２０の制御周期内残り時間（ＲＴ）フィールド値をそれぞれ設定（Ｔ１００６）する。本制御フローでは、ＰＥ０用ハードウェアタイマチャネルＳ１１を用いて使用要求受け付けウィンドウ期間を計測する必要はないため、この時点ではハードウェアタイマチャネルＳ１１の設定や起動は行わなくてよい。
【０２３２】
共有リソース管理プログラムＳ１０と同様の手段により制御周期の開始タイミングを検出した、ＰＥｎ上で動作するアプリケーションＳ４０は、現在の、または／および、次の制御周期に実行すべき処理に関する初期化等、所定の前処理を実行（Ｓ４０６１）する。次制御周期に実行すべき処理が共有リソース使用権限の付与を必要とする場合には、前処理の少なくとも一部として、裏バンク側である使用要求レジスタバンクＳ３２内にあるＰＥｎ用共有リソース使用要求セットレジスタへの書き込みにより、ＰＥｎの使用要求フラグをセット（Ｔ４０６１）する。
【０２３３】
また、図示しないが、ＰＥｎとは異なるサテライトＰＥ（ＰＥｍとする）上で動作するアプリケーションも、同様の手順により、使用要求レジスタバンクＳ３２内にあるＰＥｍの使用要求フラグをセットする。この結果、現制御周期終了の時点で、使用要求レジスタバンクＳ３２にはＰＥｎおよびＰＥｍの使用要求フラグがセットされた状態Ｓ３２６２となる。
【０２３４】
第２の共有リソース使用権限付与制御フローと同様、前処理を完了したＰＥｎ上のアプリケーションＳ４０は、共有リソース管理プログラムＳ１０によるハードウェアタイマチャネルＳ４１の起動要求に応じて、使用権限制御装置６０Ａから使用権限付与期間開始イベントを要因とする割り込みが要求されるのを待つ。当該割り込み要求までの期間を別のタスク処理の実行に当ててもよい。なお、アプリケーションＳ４０には、使用権限付与期間開始イベントを要因とする割り込みと、制御周期との対応関係を保持する内部リソースとして、前制御周期に共有リソース３０の使用権限付与を要求したか否かを示すフラグを設けてもよい。
【０２３５】
制御テーブルＳ２０の初期設定に続き、共有リソース管理プログラムＳ１０は、表バンク側である使用要求レジスタバンクＳ３１の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０６３）、前制御周期に蓄積された共有リソース使用要求の有無をチェック（Ｓ１０６２）する。説明を簡単にするため、この時点では、どのサテライトＰＥｎ、ＰＥｍからも使用要求がなかったものとし、現制御周期における使用権限付与に係る処理を終了する。
【０２３６】
共有リソース管理プログラムＳ１０が、再度制御周期の開始タイミングを検出すると、改めて以下の初期化処理Ｓ１０６１Ａを順次実行する。
【０２３７】
（１）使用権限制御装置６０Ａが備える停止トリガレジスタ６２６への書き込みにより、全ハードウェアタイマチャネルＳ１１、Ｓ４１の同時停止を要求（Ｔ１００１Ａ、Ｔ１００２Ａ）する。停止要求を受けたＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１は、それぞれ停止状態（Ｓ１１０１Ａ、Ｓ４１０１Ａ）へ遷移、もしくは停止状態を維持する。
【０２３８】
（２）この時点で表バンクに相当する、使用要求レジスタバンクＳ３１が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより全ＰＥの使用要求フラグをクリアすることで、全ＰＥの使用要求フラグが無効な状態（Ｓ３１６２）となるよう、共有リソース使用要求フラグレジスタ５１０の内容を更新（Ｔ１０６４）する。
【０２３９】
（３）所定の手順により使用要求レジスタバンクＳ３１、Ｓ３２の表裏バンクを切り替え（Ｔ１０６５）、使用要求レジスタバンクＳ３２を表バンクとする（Ｓ３２６３）。
【０２４０】
（４）制御テーブルＳ２０の全ＰＥについて、使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１００４Ａ）し、制御周期内残り時間（ＲＴ）フィールド値は、制御周期内上限時間（ＰＴ）フィールド値からハードウェアタイマチャネルＳ１１、Ｓ４１内のカウントレジスタに設定可能な値に変換した値（以下換算値と呼ぶ）に更新（Ｔ１００５Ａ）することで、制御周期開始時点での制御テーブルＳ２０の初期状態（Ｓ２００１Ａ）とする。
【０２４１】
（５）各サテライトＰＥに関連付けられたハードウェアタイマチャネルの初期カウント値レジスタ６１７に対し、制御テーブルＳ２０の制御周期内残り時間（ＲＴ）フィールド値をそれぞれ設定（Ｔ１００６Ａ）する。前制御周期の場合と同様、この時点では、ＰＥ０用ハードウェアタイマチャネルＳ１１の設定や起動は行わなくてよい。
【０２４２】
共有リソース管理プログラムＳ１０は、続いて、図２０に示すように、表バンク側である使用要求レジスタバンクＳ３２の備える共有リソース使用要求フラグレジスタ５１０を読み出し（Ｔ１０６６）、前制御周期に蓄積された共有リソース使用要求の有無をチェック（Ｓ１０６２Ａ）する。１以上の使用要求があった場合には、図２２に示すフローに基づき、共有リソース使用権限の付与順序を一括して決定（Ｓ１００４Ａ）し、制御テーブルＳ２０のうち、少なくとも共有リソース３０の使用を要求した全ＰＥについて、決定した付与順序を特定する値を制御周期内権限付与順序（ＯＲ）フィールドに設定する（Ｔ１０１５Ａ）。さらに望ましくは、共有リソース３０の使用要求なし、制御テーブルＳ２０内の制御ポリシ設定が無効などの所定の理由により、現制御周期における共有リソース使用権限付与の対象外となったＰＥについては、付与対象外であることを示す所定の値を、当該ＰＥのＯＲフィールドに設定してよい。
【０２４３】
以降、共有リソース管理プログラムＳ１０は、処理Ｓ１００４Ａで決定した共有リソース使用権限の付与順序に従って、付与対象とするサテライトＰＥに対し共有リソース３０の使用権限を付与する。具体的な手順は以下の通りである。
【０２４４】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次（または最初）に使用権限を付与すべきサテライトＰＥを特定（Ｓ１００５Ａ）する。特定したＰＥ（ＰＥｎとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０１６Ａ）し、制御テーブルＳ２０の状態を、ＰＥｎが使用権限を保持している状態Ｓ２００４Ａに更新する。
【０２４５】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｎ用ハードウェアタイマチャネルＳ４１のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を、チャネルＳ１１の初期カウント値レジスタに設定（Ｔ１０１７Ａ）する。
【０２４６】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１の同時起動を要求（Ｔ１０１８Ａ、Ｔ１０１９Ａ）する。起動要求を受けたハードウェアタイマチャネルＳ１１、Ｓ４１はそれぞれ動作状態（Ｓ１１０４Ａ、Ｓ４１０２Ａ）に遷移し、いずれも当該ハードウェアタイマチャネルＳ１１、Ｓ４１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６１７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。ここで、ハードウェアタイマチャネルＳ４１がカウント動作状態であることと、共有リソース使用権限をＰＥｎに対し付与中であることは等価であり、２つのハードウェアタイマチャネルＳ１１、Ｓ４１は同期してデクリメント動作を行う。
【０２４７】
共有リソース管理プログラムＳ１０から、ＰＥｎ用ハードウェアタイマチャネルＳ４１に対する起動要求Ｔ１０１８Ａを受けると、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥｎに対する使用権限付与期間開始イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは、後者のイベントを要因とする割り込みのみ許可に設定しているため、ハードウェアタイマチャネルＳ４１は、当該イベントを要因として使用権限付与期間の開始を通知する割り込みを、使用権限割り込み信号を経由しＰＥｎに要求（Ｔ４１２１Ａ）する。
【０２４８】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間開始イベントを要因とする割り込み要求Ｔ４１２１Ａを検出したアプリケーションＳ４０は、使用権限付与期間開始に係る処理Ｓ４０２１Ａを実行する。すなわち、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥｎ用ハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間開始イベントの発生状態を保持するフィールド値を偽にクリア（Ｔ１０２１Ａ）し、続いて、共有リソース３０の使用を伴う処理Ｓ４００３Ａを実行する。第２および第２の制御フローと同様、アプリケーションＳ４０は、ハードウェアタイマチャネルＳ４１がカウント動作状態の期間共有リソース３０を占有して使用可能である一方、使用権限の付与終了タイミングを通知する権限付与期間終了イベント発生を要因とする割り込み要求が発生するまでには、処理Ｓ４００３Ａを終了しなければならないものとする。
【０２４９】
ＰＥ０およびＰＥｎ用ハードウェアタイマチャネルＳ１１、Ｓ４１が同時起動要求（Ｔ１０１８Ａ、Ｔ１０１９Ａ）によりカウント動作状態に遷移した後、各ハードウェアタイマチャネルＳ１１、Ｓ４１の初期カウント値レジスタ６１７に設定された時間、すなわち制御テーブルＳ２０内のＰＥｎに割り当て可能な制御周期内残り時間（ＲＴ）フィールドに指定された時間が経過すると、使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ハードウェアタイマチャネルＳ１１からＰＥ０に対する使用権限付与期間終了イベント、およびハードウェアタイマチャネルＳ４１からＰＥｎに対する使用権限付与期間終了イベントの発生状態を保持するフィールド値がそれぞれ真にセットされる。本制御フローでは、当該イベントを要因とする割り込みを許可に設定しているため、ハードウェアタイマチャネルＳ１１、Ｓ４１は、図２１に示すように、当該イベントを要因とする使用権限付与期間の終了を通知する割り込みを、使用権限割り込み信号を経由し、それぞれＰＥ０（Ｔ１１０２Ａ）、ＰＥｎ（Ｔ４１０１Ａ）に同時に要求する。
【０２５０】
ＰＥｎ用ハードウェアタイマチャネルＳ４１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出したアプリケーションＳ４０は、使用権限付与期間終了に係る処理Ｓ４００４Ａを実行する。
【０２５１】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥｎを対象とする全イベントの発生を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ４１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ４００５Ａ）。この結果、ハードウェアタイマチャネルＳ４１はカウント停止状態Ｓ４１０３Ａに遷移する。
【０２５２】
（２）必要に応じて、アプリケーションＳ４０は割り込みからの回復処理、共有リソース使用権限が不要かつ当該制御周期内に実行すべき処理など、所定の後処理Ｓ４００５Ａを実行する。
【０２５３】
ＰＥ０用ハードウェアタイマチャネルＳ１１による、使用権限付与期間終了イベントを要因とする割り込み要求を検出した共有リソース管理プログラムＳ１０は、使用権限付与期間終了に係る処理Ｓ１０６３Ａとして、以下の処理を順次実行する。
【０２５４】
（１）使用権限制御装置６０Ａの割り込み要求制御部６３０Ａが備える割り込み要因レジスタ６３５Ａにおいて、ＰＥ０を対象とする全イベントの発生状態を保持するフィールド値を偽にクリアし、さらに望ましくは、ハードウェアタイマチャネルＳ１１がカウント動作状態を継続している場合には、停止トリガレジスタ６２６への書き込みにより、ハードウェアタイマチャネルＳ１１の停止を要求する（Ｔ１０２０Ａ）。この結果、ハードウェアタイマチャネルＳ１１はカウント停止状態Ｓ１１０５Ａへ遷移する。
【０２５５】
（２）安全対応のオプション処理として、割り込み要因レジスタ６３５Ａにおいて、ＰＥｎを対象とする全イベントの発生状態を保持するフィールド値を偽にクリアするとともに、停止トリガレジスタ６２６への書き込みにより、ＰＥｎ用ハードウェアタイマチャネルＳ４１の停止を要求する（Ｔ１０２１Ａ）。
【０２５６】
（３）制御テーブルＳ２０に関しては、ＰＥｎの使用権限付与中フラグ（ＩＵ）フィールド値をクリア（偽に設定）（Ｔ１０２２Ａ）し、どのＰＥ０、ＰＥｎ、ＰＥｍも使用権限を保持していない状態Ｓ２００５Ａに更新する。
【０２５７】
（４）続いて、ＰＥｎの制御周期内権限再付与（ＲＧ）フィールドの設定に応じ、ＰＥｎの制御周期内残り時間（ＲＴ）フィールド値を更新する。本制御フローでは、ＲＧフィールドを無効（再付与禁止）に設定しており、その場合には、誤って再度ＰＥｎに対する使用権限付与が行われないよう、ＲＴフィールド値を残り時間ゼロに相当する換算値に更新（Ｔ１０２３Ａ）する。
【０２５８】
（５）ＰＥｎの制御周期内残り時間がゼロとなった場合、表バンク側である使用要求レジスタバンクＳ３２が備える共有リソース使用要求クリアレジスタ５３０への書き込みにより、ＰＥｎの使用要求フラグをクリア（Ｔ１０６７）する。この結果、使用要求レジスタバンクＳ３２は、ＰＥｍの使用要求フラグがセットされた状態Ｓ３２６４となる。
【０２５９】
共有リソース管理プログラムＳ１０は、続いて、ＰＥｎの次に使用権限の付与先となるＰＥの特定と、特定したＰＥに対する共有リソース３０の権限付与に係る一連の処理Ｓ１００７Ａを実行する。具体的な手順は以下のとおりである。
【０２６０】
（１）制御テーブルＳ２０の制御周期内権限付与順序（ＯＲ）フィールドを参照し、次に使用権限を付与すべきサテライトＰＥを特定する。特定したＰＥ（ＰＥｍとする）の使用権限付与中フラグ（ＩＵ）フィールド値をセット（真に設定）（Ｔ１０２５Ａ）し、制御テーブルＳ２０の状態を、ＰＥｍが使用権限を保持している状態Ｓ２００６Ａに更新する。
【０２６１】
（２）ＰＥ０用ハードウェアタイマチャネルＳ１１を、次の使用権限付与先であるＰＥｍ用ハードウェアタイマチャネル（図示せず）のレプリカとして動作させるため、制御テーブルＳ２０の設定のうち、ＰＥｍの制御周期内残り時間（ＲＴ）フィールド値を、ハードウェアタイマチャネルＳ１１の初期カウント値レジスタ６１７に設定（Ｔ１０２６Ａ）する。
【０２６２】
（３）使用権限制御装置６０Ａが備える開始トリガレジスタ６２５への書き込みにより、ＰＥ０用ハードウェアタイマチャネルＳ１１とＰＥｍ用ハードウェアタイマチャネル（図示せず）の同時起動を要求（Ｔ１０２７Ａ、Ｔ１０２８Ａ）する。起動要求を受けたハードウェアタイマチャネルＳ１１は動作状態（Ｓ１１０６Ａ）に遷移し、当該ハードウェアタイマチャネルＳ１１の現カウント値レジスタ６１６にコピーされた初期カウント値レジスタ６７の値を初期値として、所定の条件に基づくデクリメント動作を開始する。図示しないＰＥｍ用ハードウェアタイマチャネルも、同様の手順によりデクリメント動作を開始し、共有リソース使用権限をＰＥｍに対し付与中であることを示すカウント動作状態となる。
【０２６３】
第１の制御フローと比較し、本制御フローによれば、制御周期の一部を使用要求受け付けウィンドウ期間として設定する必要がなくなり、使用要求受け付けウィンドウ期間に相当する時間を、各サテライトＰＥにおける各種処理や共有リソース３０の使用に割り当てることができ、ＣＰＵコア等の計算リソースおよび共有リソース３０の利用効率をさらに向上させることができる。加えて、サテライトＰＥからの共有リソース使用要求タイミングに関する時間制約が大幅に緩和される他、制御周期を単位とするソフトウェアパイプライン処理の実装との親和性が高く、アプリケーションの移植を容易化することができる。
【０２６４】
図２２は、図１のマイコンにおける使用権限の付与順序決定処理を示すフローチャートである。図２２では、これまで例示した４つの典型的な共有リソース使用権限付与制御フローのうち、本処理開始時点で共有リソース使用要求フラグレジスタ５１０に蓄積された１以上の共有リソース使用要求に関し、すべての使用要求を対象に現制御周期内の使用権限付与順序を一括して決定する、処理Ｓ１００４およびＳ１００４Ａの詳細フローを示す。
【０２６５】
ここで、マイコン１、１Ｂが備える複数のＰＥ１０、２０−１、２０−２、２０−３には、それぞれ固有の値をもつＰＥ識別子（ゼロまたは正の整数値、ただしゼロはＰＥ０を示す）が割り当てられている。制御テーブル１４０内の基本優先度（ＰＲ）フィールドに設定可能な値はゼロ（優先度最高、ただしＰＥ０にのみ設定可能とする）または所定の最大値（優先度最低）以下の正の整数値のいずれかである。同じ優先度を持つＰＥ間ではＰＥ識別子の値が小さいものほど高優先度として扱う。また、制御周期内権限付与順序（ＯＲ）フィールドに設定する、共有リソース使用権限の付与順序を示す値は、当該制御周期内の付与対象のＰＥについてはゼロまたはＰＥ数未満の正の整数値のいずれか、付与対象外のＰＥについては負の整数値（例えば、−１）であり、値ゼロが設定されたＰＥから昇順に権限付与を行うものとする。
【０２６６】
図２２において、内部パラメータである順序カウンタＮおよび優先度カウンタＰをそれぞれゼロに初期化（Ｓ９０１）する。続いて、本処理開始前に読み出した共有リソース使用要求フラグレジスタ５１０の内容から、共有リソース３０の使用要求の有無をチェック（Ｓ９０２）し、使用要求が１つもない場合（Ｓ９０２：Ｎｏ）には、使用権限付与の対象外となった全ＰＥについてＯＲフィールド値を−１に設定（Ｓ９１０）し、本処理を終了する。
【０２６７】
１以上のＰＥから使用要求があった場合（Ｓ９０２：Ｙｅｓ）は、制御テーブル１４０内をＰＥごとにスキャンする内部パラメータとして、ＰＥカウンタＣをゼロに初期化（Ｓ９０３）する。続いて、ＰＥ識別子がＰＥカウンタＣの値と一致するＰＥについて、使用権限付与の対象となり得るかの判定処理として、当該ＰＥのイネーブル（ＥＮ）フィールド値が真（有効）、かつ基本優先度（ＰＲ）フィールド値が優先度カウンタＰの値に一致し、かつ制御周期内残り時間（ＲＴ）フィールド値がゼロではない換算値であるかを制御テーブルで確認し、加えて当該ＰＥからの使用要求があるかどうかをチェック（Ｓ９０４）する。付与対象ＰＥであると判定された場合（Ｓ９０４：Ｙｅｓ）には、当該ＰＥのＯＲフィールドに順序カウンタＮの値を設定した後、順序カウンタＮをインクリメント（Ｓ９０５）する。付与対象ＰＥではないと判定された場合（Ｓ９０４：Ｎｏ）には処理Ｓ９０５をスキップする。
【０２６８】
続いて、ＰＥカウンタＣをインクリメント（Ｓ９０６）し、ＰＥカウンタＣの値が最大値、すなわち（（マイコン１、１Ｂの備えるＰＥ数）−１）以上であるかどうかをチェック（Ｓ９０７）する。処理Ｓ９０７の結果が不成立の場合（Ｓ９０７：Ｎｏ）には処理Ｓ９０４に戻る。
【０２６９】
処理Ｓ９０７の結果が成立の場合（Ｓ９０７：Ｙｅｓ）、次に低い優先度を持つＰＥに関して同様の処理、すなわち制御テーブル１４０内のＰＥ単位での設定スキャンと使用権限の付与対象ＰＥへの付与順序設定を実行するため、優先度カウンタＰをインクリメント（Ｓ９０８）し、優先度カウンタＰの値が所定の最大値以上であるかどうかをチェック（Ｓ９０９）する。処理Ｓ９０９の結果が不成立の場合（Ｓ９０９：Ｎｏ）には処理Ｓ９０３に戻り、成立の場合（Ｓ９０９：Ｙｅｓ）には、使用権限付与の対象外となった全ＰＥについてＯＲフィールド値を−１に設定（Ｓ９１０）し、本処理を終了する。
【０２７０】
図２３は、図１のマイコンにおける使用権限の付与先決定処理を示すフローチャートである。図２３では、これまで例示した４つの典型的な共有リソース使用権限付与制御フローのうち、本処理開始時点で共有リソース使用要求フラグレジスタ５１０に蓄積された１以上の共有リソース使用要求に関し、最も優先度の高い１つのＰＥを次の使用権限付与先として決定する処理Ｓ１０４１およびＳ１０４５の詳細フローを示す。
【０２７１】
ここで、マイコン１、１Ｂが備える複数のＰＥ１０、２０−１、２０−２、２０−３にはそれぞれ固有の値をもつＰＥ識別子（ゼロまたは正の整数値、ただしゼロはＰＥ０を示す）が割り当てられている。制御テーブル１４０内の基本優先度（ＰＲ）フィールドに設定可能な値はゼロ（優先度最高、ただしＰＥ０にのみ設定可能とする）または所定の最大値（優先度最低）以下の正の整数値のいずれかである。同じ優先度を持つＰＥ間ではＰＥ識別子の値が小さいものほど高優先度として扱う。図２２の処理とは異なり、制御周期内権限付与順序（ＯＲ）フィールドの更新は行わない。
【０２７２】
図２３において、内部パラメータである優先度カウンタＰをゼロに初期化（Ｓ９２１）する。続いて、本処理開始前の読み出した共有リソース使用要求フラグレジスタ５１０の内容から、使用要求の有無をチェック（Ｓ９２２）し、使用要求が１つもない場合（Ｓ９２２：Ｎｏ）には、次の権限付与先ＰＥがない場合の所定の処理Ｓ９３０を実行した後、本処理を終了する。
【０２７３】
１以上のＰＥから使用要求があった場合（Ｓ９２２：Ｙｅｓ）は、制御テーブル１４０内をＰＥごとにスキャンする内部パラメータとして、ＰＥカウンタＣをゼロに初期化（Ｓ９２３）する。続いて、ＰＥ識別子がＰＥカウンタＣの値と一致するＰＥについて、使用権限付与の対象となりうるかの判定処理として、当該ＰＥのイネーブル（ＥＮ）フィールド値が真（有効）、かつ基本優先度（ＰＲ）フィールド値が優先度カウンタＰの値に一致し、かつ制御周期内残り時間（ＲＴ）フィールド値がゼロではない換算値であるかを制御テーブル１４０で確認し、加えて当該ＰＥからの使用要求があるかどうかをチェック（Ｓ９２４）する。付与対象ＰＥであると判定された場合（Ｓ９２４：Ｙｅｓ）には、当該ＰＥを次の付与先に決定（Ｓ９２５）し、本処理を終了する。
【０２７４】
処理Ｓ９２４の結果が不成立の場合（Ｓ９２４：Ｎｏ）、ＰＥカウンタＣをインクリメント（Ｓ９２６）し、ＰＥカウンタＣの値が最大値、すなわち（（マイコン１、１Ｂの備えるＰＥ数）−１）以上であるかどうかをチェック（Ｓ９２７）する。処理Ｓ９２７の結果が不成立の場合（Ｓ９２７：Ｎｏ）には処理Ｓ９２４に戻る。
【０２７５】
処理Ｓ９２７の結果が成立の場合（Ｓ９２７：Ｙｅｓ）、次に低い優先度を持つＰＥに関して同様の処理、すなわち制御テーブル１４０内のＰＥ単位での設定スキャンを実行するため、優先度カウンタＰをインクリメント（Ｓ９２８）し、優先度カウンタＰの値が所定の最大値以上であるかどうかをチェック（Ｓ９２９）する。処理Ｓ９２９の結果が不成立の場合（Ｓ９２９：Ｎｏ）には処理Ｓ９２３に戻り、成立の場合（Ｓ９２９：Ｙｅｓ）には、次の権限付与先ＰＥがない場合の所定の処理Ｓ９３０を実行した後、本処理を終了する。
【０２７６】
以上説明したように、上述した実施形態によれば、スピンロック処理を用いたアクセス排他制御に比べ、演算要素および共有リソースの利用効率の向上を図ることが可能となるとともに、ユーザが規定する制御ポリシに基づく厳密なスケジューリング制御およびハードリアルタイム性が要求される応用に好適な時間粒度の小さいリソース共有制御を実現することができる。加えて、演算に関与しない処理を削減することでリソース共有制御に係る消費電力を低減することができる。
【０２７７】
図２４は、図１または図４のマイコンの図８（ａ）の動作時における消費電力の時間変化の一例を示す図である。
図２４において、マイコン１、１Ｂでは全体の消費電力が平均化されているだけでなく、共有制御に要する消費電力そのものも、ほぼ共有リソース管理プログラムが動作する１つのＰＥ分で上限が決まるため、消費電力の低減に寄与している。
【０２７８】
図２５は、図１または図４のマイコンの図８（ｂ）の動作時における消費電力の時間変化の一例を示す図である。
図２５において、図８（ａ）の方法では、共有リソース使用要求Ｒ、使用権限の付与順序の決定Ａ、ハードウェアタイマチャネルの設定および起動Ｓ、アプリケーションの実行Ｕが時系列的に実行される。これに対して、図８（ａ）の方法では、共有リソース使用要求Ｒは、使用権限の付与順序の決定Ａ、ハードウェアタイマチャネルの設定および起動Ｓ、またはアプリケーションの実行Ｕと並列に実行される。
このため、図８（ｂ）の方法では、共有リソース使用要求Ｒがあると、その処理に必要な消費電力が図８（ａ）の方法の消費電力に上乗せされる。
【０２７９】
図２６は、本実施形態の比較例に係るマイコンの構成例を示すブロック図である。
図２６において、マイコン１００１は、内蔵機能モジュールとして、複数のＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３、共有リソース１０３０、共有リソース１０３０のロック状態を保持するロック変数レジスタ１０８０を含む。ＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３は、演算要素として用いることができる。ＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３、共有リソース１０３０およびロック変数レジスタ１０８０はＰＥ間接続バス１０４０を介して相互接続される。
【０２８０】
各ＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３は、所定の命令セットアーキテクチャに従って作成されたプログラムを実行する１つ以上のＣＰＵコア１１００、ＣＰＵコア１１００で実行されるプログラムからのアクセス要求に応じて、当該ＰＥとＰＥ間接続バス１０４０との間のアクセスを制御するバスインタフェース１１２０、プログラム、および／またはプログラム実行に必要なデータを格納するキャッシュメモリおよび／またはＲＡＭメモリからなるＰＥ内部メモリ１１３０を含む。バスインタフェース１１２０はバスインタフェース接続インタフェース１１２１により、ＰＥ内部メモリ１１３０はＰＥ内部メモリ−ＣＰＵコア間接続インタフェース１１３２により、それぞれＣＰＵコア１１００との間で相互接続される。さらに、ＰＥ内部メモリ１１３０はＰＥ内部メモリ−バスインタフェース間接続インタフェース１１３１により、バスインタフェース１１２０との間で相互接続される。
【０２８１】
共有リソース１０３０は、複数のＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３で動作するアプリケーションが時分割の態様で共有する資源である。共有リソース１０３０は、例えば、マイコン１００１の外部に接続されたハードウェアとの通信を制御する通信モジュールのような、１つ以上のマイコン内蔵周辺モジュールや、ＰＥ内部もしくは外部に接続された１つ以上のメモリのうちの少なくとも一部領域であってよい。説明を簡単にするため、共有リソース１０３０は１つのみ図示するが、２つ以上であっても構わない。
【０２８２】
ロック変数レジスタ１０８０は、ＰＥ間接続バス１０４０を経由して各ＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３からアクセス可能とされ、マイコン１００１のもつアドレス空間上の一部領域に配置される。ロック変数レジスタ１０８０は共有リソース１０３０ごとに設けられ、当該共有リソース１０３０が使用中（ロック状態）であるか否かを示すフラグを保持する。
【０２８３】
図２７は、図２６のマイコンにおけるロック変数を利用したアクセス排他制御方法を示すタイミングチャートである。
図２７において、ロック変数レジスタ１０８０に保持されるロック変数は、非ロック状態（ＯＦＦ）またはロック状態（ＯＮ）のいずれかの状態をも持つ。各ＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３で動作するアプリケーションが共有リソース１０３０を使用する場合、アプリケーションは実際の使用に先立ちロック変数の状態をチェックし、非ロック状態であれば、ロック変数をロック状態に設定（Ｐ）することでロックを取得する。ロックを取得したＰＥは、共有リソース１０３０を使用する処理を実行（Ｕ）する。処理が終了すると、ロックを取得したＰＥは、ロック変数を非ロック状態に設定（Ｖ）することで、共有リソース１０３０を解放する。
【０２８４】
ここで、複数のＰＥ１０１０−０、１０１０−１、１０１０−２、１０１０−３が同時に共有リソース１０３０の使用を要求した場合、ロック取得に失敗したＰＥは、ロック変数が非ロック状態になるまでロック変数をチェックし続けるスピンロック（ＳＬ）処理を実行する。そして、ロック取得に失敗したＰＥは、ロック変数が非ロック状態になった時にロックを取得することにより、共有リソース１０３０に対する排他アクセスを実現できる。
【０２８５】
図２８は、図２６のマイコンにおける消費電力の時間変化の一例を示す図である。
図２８において、図２４および図２５の消費電力と同一条件で比較するため、各ＰＥ１０１０−１、１０１０−２、１０１０−３では、共有リソース使用権限の付与が必要な１つのタスクのみ実行する場合を想定している。比較例では、特に複数のＰＥ１０１０−１、１０１０−２、１０１０−３が、スピンロックしながら使用権限の付与を長時間待ち続けている期間の消費電力が大きく、マイコン１００１全体のピークおよび平均消費電力を押し上げている。
【０２８６】
スピンロック（ＳＬ）処理による消費電力は、同時に共有リソース１０３０の使用を要求するＰＥの個数に比例して増大する。このため、マイコン１００１に搭載されるＰＥの個数の増大に伴ってマイコン１００１全体のピークの消費電力が増大する。
【０２８７】
これに対して、図１および図４のマイコン１、１Ｂでは、スピンロック（ＳＬ）処理を実行することなく、共有リソース１０３０に対する排他アクセスを実現することができ、その分に対応した消費電力を削減することができる。このため、マイコン１、１Ｂに搭載されるＰＥの個数が増大した場合においても、マイコン１、１Ｂ全体のピークの消費電力の増大を防止することができる。
【符号の説明】
【０２８８】
１、１Ｂ：マイコン、１０、２０−１、２０−２、２０−３：演算要素（プロセッサエレメント、ＰＥ）、３０：共有リソース、４０：ＰＥ間接続バス、５０：使用要求レジスタ、５０−０、５０−１：使用要求レジスタバンク、６０、６０Ａ：使用権限制御装置、６１、６２−１、６２−２、６２−３：使用権限制御割り込み信号、７０：ＰＥ間割り込み制御装置、７１−０、７１−１、７１−２、７１−３：ＰＥ間割り込み信号、１００：ＣＰＵコア、１１０：割り込みコントローラ、１１１：割り込みコントローラ接続インタフェース、１２０：バスインタフェース、１２１：バスインタフェース接続インタフェース、１３０：ＰＥ内部メモリ、１３１：ＰＥ内部メモリ−バスインタフェース間接続インタフェース、１３２：ＰＥ内部メモリ−ＣＰＵコア間接続インタフェース、１４０：制御テーブル、１４１：制御テーブル接続インタフェース、５１０：共有リソース使用要求フラグレジスタ、５２０−０、５２０−１、５２０−２、５２０−３：共有リソース使用要求セットレジスタ、５３０：共有リソース使用要求クリアレジスタ、６００：バスインタフェース、６１０−１、６１０−２、６１０−３、６１０−４：ハードウェアタイマチャネル、６１１：ハードウェアタイマチャネル接続インタフェース、６１２−１、６１２−２、６１２−３、６１２−４：トリガ制御信号、６１３−１、６１３−２、６１３−３、６１３−４：タイマ値比較結果信号、６１５：チャネル状態レジスタ、６１６：現カウント値レジスタ、６１７：初期カウント値レジスタ、６２０：トリガ制御部、６２１：トリガ制御部接続インタフェース、６２５：開始トリガレジスタ、６２６：停止トリガレジスタ、６３０、６３０Ａ：割り込み要求制御部、６３１：割り込み要求制御部接続インタフェース、６３５、６３５Ａ：割り込み要因レジスタ、６３６、６３６Ａ：割り込みイネーブルレジスタ、６３７：チャネルマッピングレジスタ、７１０−ｍ、：ＰＥ間割り込み要求フラグレジスタ、７２０−ｎ、：ＰＥ間割り込み要求セットレジスタ、７３０−ｍ、：ＰＥ間割り込み要求クリアレジスタ
【図１】
2019128711.tif 000003
【図２】
2019128711.tif 000004
【図３】
2019128711.tif 000005
【図４】
2019128711.tif 000006
【図５】
2019128711.tif 000007
【図６】
2019128711.tif 000008
【図７】
2019128711.tif 000009
【図８】
2019128711.tif 000010
【図９】
2019128711.tif 000011
【図１０】
2019128711.tif 000012
【図１１】
2019128711.tif 000013
【図１２】
2019128711.tif 000014
【図１３】
2019128711.tif 000015
【図１４】
2019128711.tif 000016
【図１５】
2019128711.tif 000017
【図１６】
2019128711.tif 000018
【図１７】
2019128711.tif 000019
【図１８】
2019128711.tif 000020
【図１９】
2019128711.tif 000021
【図２０】
2019128711.tif 000022
【図２１】
2019128711.tif 000023
【図２２】
2019128711.tif 000024
【図２３】
2019128711.tif 000025
【図２４】
2019128711.tif 000026
【図２５】
2019128711.tif 000027
【図２６】
2019128711.tif 000028
【図２７】
2019128711.tif 000029
【図２８】
2019128711.tif 000030