(57)【要約】【課題】  リアルタイム性を確保することが可能なマルチプロセッサシステム及びその排他制御の調停方法を提供する。【解決手段】  各々のプロセッサが共有リソース５を排他的に制御してタスクを処理する複数の前記プロセッサ１〜４を備え、各々のプロセッサ１〜４は、自身が共有リソース５の排他制御の獲得を待機しているか否かを示す排他制御待ち情報を保存する排他制御待ち情報保存部１ａ〜４ａと、共有リソース５の排他制御を獲得する優先度を示す排他制御獲得優先度情報を保存する排他制御獲得優先度情報保持部１ｂ〜４ｂとを備え、各々のプロセッサ１〜４は、排他制御待ち情報と排他制御獲得優先度情報とに基づいて共有リソース５の排他制御を獲得するよう構成されている。【選択図】    図１
2010140290.tif 000002
【特許請求の範囲】
【請求項１】
各々のプロセッサが共有リソースを排他的に制御してタスクを処理する複数の前記プロセッサを備え、
各々の前記プロセッサは、自身が前記共有リソースの排他制御の獲得を待機しているか否かを示す排他制御待ち情報を保存する排他制御待ち情報保存部と、前記共有リソースの排他制御を獲得する優先度を示す排他制御獲得優先度情報を保存する排他制御獲得優先度情報保持部とを備え、
各々の前記プロセッサは、前記排他制御待ち情報と前記排他制御獲得優先度情報とに基づいて前記共有リソースの排他制御を獲得するよう構成されている、マルチプロセッサシステム。
【請求項２】
前記排他制御獲得優先度情報格納部は、前記排他制御獲得優先度情報を保存するレジスタで構成されている、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記排他制御獲得優先度情報が変更されないように構成されている、請求項１又は請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記排他制御獲得優先度情報が変更されるよう構成されている、請求項１又は請求項２に記載のマルチプロセッサシステム。
【請求項５】
前記排他制御獲得優先度情報が特定の周期で変更されるよう構成されている、請求項４に記載のマルチプロセッサシステム。
【請求項６】
各々の前記プロセッサは、実行しているタスク又は割込み処理の優先度に応じて前記排他制御獲得優先度情報を変更するよう構成されている、請求項４に記載のマルチプロセッサシステム。
【請求項７】
各々の前記プロセッサは、前記排他制御獲得の試行回数に応じて前記排他制御獲得優先度情報を変更するよう構成されている、請求項４に記載のマルチプロセッサシステム。
【請求項８】
前記排他制御待ち情報格納部は、前記排他制御待ち情報を保存するレジスタで構成されている、請求項１に記載のマルチプロセッサシステム。
【請求項９】
各々のプロセッサが共有リソースを排他的に制御してタスクを処理する複数の前記プロセッサを備えるマルチプロセッサシステムの排他制御の調停方法であって、
各々の前記プロセッサが、自身が前記共有リソースの排他制御の獲得を待機しているか否かを示す排他制御待ち情報を保存するステップと、
各々の前記プロセッサが、前記共有リソースの排他制御を獲得する優先度を示す排他制御獲得優先度情報を保存するステップと、
各々の前記プロセッサが、前記排他制御待ち情報と前記排他制御獲得優先度情報とに基づいて前記共有リソースの排他制御を獲得するステップと、を含む、マルチプロセッサシステムの排他制御の調停方法。
【請求項１０】
各々の前記プロセッサは前記排他制御獲得優先度情報をレジスタに保存する、請求項９に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１１】
各々の前記プロセッサは前記排他制御獲得優先度情報を変更しない、請求項９又は請求項１０に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１２】
各々の前記プロセッサは前記排他制御獲得優先度情報を変更する、請求項９又は請求項１０に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１３】
各々の前記プロセッサは前記排他制御獲得優先度情報を特定の周期で変更する、請求項１２に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１４】
各々の前記プロセッサは、実行しているタスク又は割込み処理の優先度に応じて前記排他制御獲得優先度情報を変更する、請求項１２に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１５】
各々の前記プロセッサは、前記排他制御獲得の試行回数に応じて前記排他制御獲得優先度情報を変更する、請求項１２に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１６】
各々の前記プロセッサは前記排他制御待ち情報をレジスタに保存する、請求項９に記載のマルチプロセッサシステムの排他制御の調停方法。
【請求項１７】
請求項１乃至８のいずれかに記載のマルチプロセッサシステムと、前記マルチプロセッサシステムを構成する各々のプロセッサが排他的に制御する前記共有リソースと、を含む制御部を備えたカメラであって、前記制御部が前記カメラの動作を制御するよう構成されている、カメラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関し、特に複数のプロセッサ間におけるリソースの排他制御が必要なシステム及びその排他制御の調停方法に関する。
【背景技術】
【０００２】
従来のマルチプロセッサシステムの排他制御の調停方法においては、排他制御を実行中であるか否かを示すリソースロックフラグが用いられていた。このリソースロックフラグは、システムにおいて排他制御を実行するプロセッサがある場合にＯＮ（‘１’）を示し、そうでない場合にＯＦＦ（‘０’）を示す。各プロセッサは、このリソースロックフラグを排他制御の実行前に必ずチェックし、排他制御中である他のプロセッサが存在しない場合、すなわち、リソースロックフラグがＯＦＦを示す場合に限り、システムは当該プロセッサによる排他制御を許可する。一方、排他制御実行中である他のプロセッサが存在する場合、すなわち、リソースロックフラグがＯＮを示す場合には、その時点では当該プロセッサによる排他制御が許可されず、他のプロセッサによる排他制御が終了してリソースロックフラグがＯＦＦに変わるまで待機する。このようにして、従来のマルチプロセッサシステムでは、システムを構成する各プロセッサによる排他制御が調停されていた。
【０００３】
しかし、上述したような従来のマルチプロセッサシステムでは、リソースロックフラグという単に排他制御を実行中であるか否かを示す情報のみに基づいて複数のプロセッサ間における排他制御を調停していて、排他制御実行の許可を待機中であるプロセッサを考慮していない。そのため、排他制御が許可されるプロセッサが単純に排他制御要求の受付順等により定まってしまい、排他制御が許可されるプロセッサが偏ることがある。さらに、特定のプロセッサにおいて、排他制御を実行するためにリソースロックフラグをチェックすると、その都度、他のプロセッサが排他制御中であることにより、いつまで待機しても実行が許可されずにプロセッサタイムアウトになることがある。
【０００４】
このようなプロセッサタイムアウトを防止可能な従来技術として、例えば、特許文献１に記載の技術が知られている。この従来技術は、排他制御を実行中のプロセッサが存在することを示す排他制御フラグと、プロセッサ毎に、排他制御要求が失敗したことを示す失敗フラグと、再発行された排他制御要求が成功したことを示す成功フラグとを備え、各プロセッサが同一の要求処理順序を判定し実行する分散調停方式により排他制御の調停を行う。これにより、リソースロック調停部への要求受付の順序に依存することなく必ず全プロセッサのリソースロック要求を成功に導き、プロセッサタイムアウトの発生を防ぐことが可能である。
【特許文献１】特開２００１−３４４１９５
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年、電子機器の性能向上に伴い、特定の機能については、リアルタイム性が重視されるようになって来た。例えば、デジタルカメラのオートフォーカス機能には、連写時における高速な応答性能が要求される。また、携帯電話の各種機能は、その利用時に操作ボタンの操作に対し高速に応答することが商品価値を高める上で好ましい。
【０００６】
このようなリアルタイム性という観点からは、特許文献１に記載の従来技術には以下のような問題があった。すなわち、あるプロセッサがリソースのロック（排他制御）を要求しても、その時点においてロック獲得待ち状態にある他のプロセッサが存在すると、当該他のプロセッサがロックに成功し、そのロックを解除するまでの間ロック獲得待ち状態になり、この過程が他のプロセッサの数だけ繰り返されてその間ずっとロック獲得待ち状態になる可能性がある。特に組込みシステムにおけるリアルタイムＯＳでは、処理の優先度に応じて実行順序が決定されるが、ロック獲得順序は処理の優先度に関係なくロック要求処理における瞬間的なＦＩＦＯ(First in, First out)（先入れ先だし）によって決定されてしまう。そのため優先度の高い処理においてロック獲得待ち状態が続いてリアルタイム性の確保が困難となる可能性がある。
【０００７】
本発明はこのような課題を解決するためになされたものであり、リアルタイム性を確保することが可能なマルチプロセッサシステム及びその排他制御の調停方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係るマルチプロセッサシステムは、各々のプロセッサが共有リソースを排他的に制御してタスクを処理する複数の前記プロセッサを備え、各々の前記プロセッサは、自身が前記共有リソースの排他制御の獲得を待機しているか否かを示す排他制御待ち情報を保存する排他制御待ち情報保存部と、前記共有リソースの排他制御を獲得する優先度を示す排他制御獲得優先度情報を保存する排他制御獲得優先度情報保持部とを備え、各々の前記プロセッサは、前記排他制御待ち情報と前記排他制御獲得優先度情報とに基づいて前記共有リソースの排他制御を獲得するよう構成されている。
【０００９】
この構成によれば、あるプロセッサが共有リソースを制御する必要が生じた時点で排他制御待ち状態である他のプロセッサが存在する場合には、それらのうちで優先度の高いプロセッサが共有リソースの排他制御を獲得するよう構成することにより、リアルタイム性を確保することができる。
【００１０】
前記排他制御獲得優先度情報格納部は、前記排他制御獲得優先度情報を保存するレジスタで構成されていてもよい。
【００１１】
前記排他制御獲得優先度情報が変更されないように構成されていてもよい。
【００１２】
前記排他制御獲得優先度情報が変更されるよう構成されていてもよい。
【００１３】
前記排他制御獲得優先度情報が特定の周期で変更されるよう構成されていてもよい。
【００１４】
各々の前記プロセッサは、実行しているタスク又は割込み処理の優先度に応じて前記排他制御獲得優先度情報を変更するよう構成されていてもよい。
【００１５】
各々の前記プロセッサは、前記排他制御獲得の試行回数に応じて前記排他制御獲得優先度情報を変更するよう構成されていてもよい。
【００１６】
前記排他制御待ち情報格納部は、前記排他制御待ち情報を保存するレジスタで構成されていてもよい。
【００１７】
また、本発明のマルチプロセッサシステムの排他制御の調停方法は、各々のプロセッサが共有リソースを排他的に制御してタスクを処理する複数の前記プロセッサを備えるマルチプロセッサシステムの排他制御の調停方法であって、各々の前記プロセッサが、自身が前記共有リソースの排他制御の獲得を待機しているか否かを示す排他制御待ち情報を保存するステップと、各々の前記プロセッサが、前記共有リソースの排他制御を獲得する優先度を示す排他制御獲得優先度情報を保存するステップと、各々の前記プロセッサが、前記排他制御待ち情報と前記排他制御獲得優先度情報とに基づいて前記共有リソースの排他制御を獲得するステップと、を含む。
【００１８】
この構成によれば、あるプロセッサが共有リソースを制御する必要が生じた時点で排他制御待ち状態である他のプロセッサが存在する場合には、それらのうちで優先度の高いプロセッサが共有リソースの排他制御を獲得するよう構成することにより、リアルタイム性を確保することができる。
【００１９】
各々の前記プロセッサは前記排他制御獲得優先度情報をレジスタに保存してもよい。
【００２０】
各々の前記プロセッサは前記排他制御獲得優先度情報を変更しなくてもよい。
【００２１】
各々の前記プロセッサは前記排他制御獲得優先度情報を変更してもよい。
【００２２】
各々の前記プロセッサは前記排他制御獲得優先度情報を特定の周期で変更してもよい。
【００２３】
各々の前記プロセッサは、実行しているタスク又は割込み処理の優先度に応じて前記排他制御獲得優先度情報を変更してもよい。
【００２４】
各々の前記プロセッサは、前記排他制御獲得の試行回数に応じて前記排他制御獲得優先度情報を変更してもよい。
【００２５】
各々の前記プロセッサは前記排他制御待ち情報をレジスタに保存してもよい。
【００２６】
また、本発明のカメラは、上記のいずれかのマルチプロセッサシステムと、前記マルチプロセッサシステムを構成する各々のプロセッサが排他的に制御する前記共有リソースと、を含む制御部を備えたカメラであって、前記制御部が前記カメラの動作を制御するよう構成されている。
【発明の効果】
【００２７】
本発明は以上に説明したように構成され、リアルタイム性を確保することが可能なマルチプロセッサシステム及びその排他制御の調停方法を提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の好ましい実施の形態を、図面を参照して詳細に説明する。なお、以下では、全ての図を通じて同一又は相当する要素には同じ参照符号を付してその重複する説明を省略する。
【００２９】
（実施の形態１）
図１は本発明の実施の形態１に係るマルチプロセッサシステムの構成を示す回路図である。
【００３０】
図１に示すように、本実施の形態１のマルチプロセッサシステム１０１は、第１乃至第４プロセッサ１〜４を備えている。第１乃至第４プロセッサ１〜４はバス６を通じて共有リソース５に接続されている。第１プロセッサ１は、排他制御獲得優先度情報保存部１ａと排他制御待ち情報保存部１ｂとを備えている。第２プロセッサ２は、排他制御獲得優先度情報保存部２ａと排他制御待ち情報保存部２ｂとを備えている。第３プロセッサ３は、排他制御獲得優先度情報保存部３ａと排他制御待ち情報保存部３ｂとを備えている。第４プロセッサ４は、排他制御獲得優先度情報保存部４ａと排他制御待ち情報保存部４ｂとを備えている。
【００３１】
排他制御獲得優先度情報保存部１ａ，２ａ，３ａ，４ａは、排他的制御獲得優先度情報を保存する部分であり、データを保存する機能を有する回路素子で構成される。本実施の形態では、排他制御獲得優先度情報保存部１ａ，２ａ，３ａ，４ａは、例えば、レジスタで構成される。排他的制御獲得情報は、共有リソース５の排他制御を獲得する優先順位を示す情報である。排他的制御獲得情報は当該排他制御獲得情報が保存される排他制御獲得情報保存部が属するプロセッサが共有リソース５の排他制御を獲得する優先度を示す。本実施の形態では、この優先度が各プロセッサ１〜４に付与されている。優先度は、優先の度合いを表す情報であればよく、優先度として、例えば、優先順位、ランク、ポイント数等が挙げられる。本実施の形態では、例えば、第１乃至第４プロセッサ１〜４に対し、それぞれ、「４」、「３」、「２」、「１」という優先順位（数字が小さい程優先順位が高い）が予め優先度として付与されている。この優先度は変更されない。
【００３２】
排他制御待ち情報保存部１ｂ，２ｂ，３ｂ，４ｂは、排他制御待ち情報を保存する部分であり、データを保存する機能を有する回路素子で構成される。本実施の形態では、排他制御待ち情報保存部１ｂ，２ｂ，３ｂ，４ｂは、例えば、レジスタで構成される。排他制御待ち情報は、プロセッサが共有リソース５の排他制御の獲得を待機しているか否かを示す情報である。本実施の形態では、排他制御待ち情報は、当該排他制御待ち情報が保存される排他制御待ち情報保存部が属するプロセッサが、共有リソース５の排他制御の獲得を待機しているか否かを示す。各プロセッサは、各々の排他制御待ち情報保存部に保存されている排他制御待ち情報を、リソース５の排他制御の獲得に失敗した場合に「制御待ち状態である」にし、排他制御の獲得に成功した場合に「制御待ち状態でない」にする。
【００３３】
そして、後述するように、各プロセッサ１〜４は、他のプロセッサ１〜４が、共有リソース５の排他制御の獲得を待機しているか否かを判別するために、他のプロセッサ１〜４の排他制御待ち情報保存部にアクセスして、その排他制御待ち情報保存部に保存されている排他制御待ち情報を参照する。なお、各プロセッサ１〜４の排他制御待ち情報保存部１ｂ，２ｂ，３ｂ，４ｂが全てのプロセッサ１〜４に関する排他制御待ち情報を保存するよう構成してもよい。このように構成すると、各プロセッサ１〜４は、各々の排他制御待ち情報保存部に保存されている情報を参照するだけで済む。あるいは、全てのプロセッサ１〜４に関する排他制御待ち情報を保存する排他制御待ち情報保存部を全てのプロセッサ１〜４に共通に１つ設けてもよい。この場合、各プロセッサ１〜４は、この共通の排他制御待ち情報保存部にアクセスして全てのプロセッサ１〜４に関する排他制御待ち情報を参照することになる。
【００３４】
共有リソース５は、複数のプロセッサ間で排他制御が必要なリソースを有しており、第１プロセッサ１、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれかのプロセッサにリソースを提供する。共有リソース５は、第１プロセッサ１、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれか１つのプロセッサにのみリソースを提供することが可能である。例えば、第１プロセッサ１が共有リソース５からリソースを取得する際には、共有リソース５からリソースを取得する可能性のある第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４に対してはリソースを提供しないリソース排他制御をする必要がある。共有リソースとして、例えば、メモリ（ＲＡＭ、ＲＯＭ等）、Ｉ／Ｏ（レジスタ等）などが挙げられる。
【００３５】
次に、以上のように構成されたマルチプロセッサシステムの動作（本実施の形態に係るマルチプロセッサシステムの排他制御の調停方法）を説明する。
【００３６】
図２は図１のマルチプロセッサシステムを構成する１つのプロセッサの排他制御獲得動作を表すフローチャートである。
【００３７】
以下、ある１つのプロセッサが第１プロセッサ１である場合を例に取って説明する。ある１つのプロセッサが第２乃至第４プロセッサ２〜４である場合はこれと同様であるので、その説明を省略する。
【００３８】
最初、第１プロセッサ１は共有リソース５を排他制御していないと仮定する。この状態においては、自身の排他制御待ち情報保存部１ｂの排他制御待ち情報は「排他制御待ち状態でない」になっている。
【００３９】
この状態において、第１プロセッサ１は、共有リソースを制御する必要が生じると、排他制御獲得を試行し、まず、他のプロセッサ２〜４の排他制御待ち状態を検出する（ステップＳ１）。具体的には、第１プロセッサ１は、他の各プロセッサ２〜４の排他制御待ち情報保存部２ｂ〜４ｂにアクセスして、各々の排他制御待ち情報を参照する。
【００４０】
次に、第１プロセッサ１は、排他制御待ち状態にある他のプロセッサ２〜４が存在するか否か判定する（ステップＳ２）。排他制御待ち状態にある他のプロセッサ２〜４が存在しない場合（ステップＳ２でＮＯ）には、後述するステップＳ５に進む。
【００４１】
一方、排他制御待ち状態にある他のプロセッサ２〜４が存在する場合（ステップＳ２でＹＥＳ）には、第１プロセッサ１は他のプロセッサ２〜４の排他制御獲得優先度情報を検出する（ステップＳ３）。具体的には、第１プロセッサ１は、他の各プロセッサ２〜４の排他制御獲得優先度情報保存部２ａ〜４ａにアクセスして、各々の排他制御獲得優先度情報を参照する。
【００４２】
次に、第１プロセッサ１はステップＳ４を実行する。ステップＳ４では、第１プロセッサ１は、自身の排他制御獲得優先度情報保存部１ａから自身の排他制御獲得優先度情報を取得して、これを他の各プロセッサ２〜４の排他制御獲得優先度情報と比較し、自身より排他制御獲得優先度の高い他のプロセッサ２〜４が存在するか否か判定する。
【００４３】
自身より排他制御獲得優先度の高い他のプロセッサ２〜４が存在する場合（ステップＳ４でＹＥＳ）には、第１プロセッサ１は排他制御待ち情報保存部１ｂの排他制御待ち情報を「排他制御待ち状態である」に更新し（ステップＳ７）、その後、ステップＳ１に戻り、次の排他制御獲得を試行する。換言すると、第１プロセッサ１は、マルチプロセッサシステム１０１によって共有リソース５へのアクセスを拒否されたことになる。
【００４４】
一方、自身より排他制御獲得優先度の高い他のプロセッサが存在しない場合（ステップＳ４でＮＯ）には、第１プロセッサ１はステップＳ５を実行する。ステップＳ５では、第１プロセッサ１は、共有リソース５の取得が可能か否か判定する。具体的には、第１プロセッサ１は、他のプロセッサ、すなわち、第２プロセッサ２、第３プロセッサ３、又は第４プロセッサ４が共有リソース５を取得した状態である場合には、共有リソース５の取得が不可能であると判定し、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれも共有リソース５を取得していない状態である場合には、共有リソース５の取得が可能であると判定する。本実施の形態では、例えば、各プロセッサ１〜４は、共有リソース５を取得した場合には「リソース取得」のフラグを立て（所定のフラグ保存部に保存されているフラグを当該フラグにする）、共有リソース５を取得していない場合には前記「リソース取得」のフラグを立てない。ここでは、第１プロセッサ１は、各プロセッサの上記フラグを参照して、共有リソース５の取得可否を判定する。すなわち、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれかが「リソース取得」のフラグを立てている場合は、共有リソース５の取得が不可能であると判定し、「リソース取得」のフラグを立てていない場合は、共有リソース５の取得が可能であると判定する。なお、前記「リソース取得」のフラグとは別に「リソース非取得」のフラグを用意し、共有リソース５を取得していない場合には「リソース非取得」のフラグを立てる（所定のフラグ保存部に保存されているフラグを当該フラグにする）ようにしてもよい。このときは、第１プロセッサ１は、各プロセッサの上記フラグを参照して、共有リソース５の取得可否を判定する。すなわち、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれかが「リソース取得」のフラグを立てている場合は、共有リソース５の取得が不可能であると判定し、第２プロセッサ２、第３プロセッサ３、及び第４プロセッサ４のいずれもが「リソース非取得」のフラグを立てている場合は、共有リソース５の取得が可能であると判定する。
【００４５】
第１プロセッサ１は、共有リソース５の取得が不可能であると判定した場合（ステップＳ５でＮＯ）には、ステップＳ７を実行した後、ステップＳ１に戻り、次の排他制御獲得を試行する。換言すると、第１プロセッサ１は、マルチプロセッサシステム１０１によって共有リソース５へのアクセスを拒否されたことになり、排他制御待ち状態になる。
【００４６】
一方、第１プロセッサ１は、共有リソース５の取得が可能であると判定した場合（ステップＳ５でＹＥＳ）には、共有リソース５にアクセスして該共有リソース５の排他制御を開始する。換言すると、第１プロセッサ１は、マルチプロセッサシステム１０１によって共有リソース５へのアクセスを許可されたことになる。
【００４７】
その後、第１プロセッサ１は、自身の排他制御待ち情報保存部１ｂに保存されている排他制御待ち情報を「排他制御待ち状態でない」に更新する（ステップＳ６）。また、「リソース取得のフラグを立てる。その後、この排他制御獲得動作を終了する。
【００４８】
次に、本発明の効果を比較例と対比して説明する。
【００４９】
図３は図１のマルチプロセッサシステムの排他制御獲得動作を比較例の排他制御獲得動作と対比して示す模式図であって、（ａ）は図１のマルチプロセッサシステムの排他制御獲得動作を示す図、（ｂ）は比較例の排他制御獲得動作を示す図である。
【００５０】
比較例は、第１乃至第４のプロセッサを、特許文献１に開示された、各プロセッサが同一の要求処理順序を判定し実行する分散調停方式により排他制御の調停を行うものである。図３（ａ）及び図３（ｂ）において、縦軸は時間を表し、波線状の矢印は排他制御待機状態を表し、かつ直線状の矢印は排他制御実行状態を表している。
【００５１】
図３（ｂ）に示すように、この比較例において、例えば第４プロセッサがリソースのロックを要求したと仮定する。また、その時点において、排他制御獲得待ち状態にある第３プロセッサが存在していたと仮定する（ｔ１〜ｔ２の期間参照）。この比較例においては、リソースのロックの成否は、ロック要求処理における瞬間的なＦＩＦＯによって決まるので、ここでは、第３プロセッサがリソースのロックに成功したと仮定する。そうすると、第４プロセッサは、第３プロセッサがリソースのロックを解除するまでの間ロック獲得待ち状態になる（ｔ２〜ｔ３の期間参照）。これと同様の過程を経て第１プロセッサがロックに成功したと仮定すると、第４プロセッサは、第１プロセッサがリソースのロックを解除するまでの間ロック獲得待ち状態になる（ｔ３〜ｔ４の期間参照）。従って、この第４プロセッサが実行しようとしている処理が優先度の高いものである場合には、リアルタイム性が確保されないことになる。
【００５２】
一方、本実施の形態では、以下のようにして排他制御が獲得される。本実施の形態では、第４プロセッサ４、第３プロセッサ３、第２プロセッサ４、第１プロセッサ１の順に高い優先度が付与されている。
【００５３】
図３（ａ）において、ｔ０〜ｔ１の期間に示すように、例えば、あるプロセッサ（ここでは第２プロセッサ２）が共有リソース５を制御する必要が生じた場合、排他制御獲得動作を試行し、その時点で排他制御待ち状態である他のプロセッサが存在しない場合には、共有リソース５を取得して排他制御中であるプロセッサ（ここでは第１プロセッサ１）の排他制御が終了すると、当該プロセッサが共有リソース５を取得して排他制御を行う（共有リソース５をロックする）。そして、ｔ１〜ｔ２の期間に示すように、あるプロセッサ（ここでは第３プロセッサ３）が共有リソース５を制御する必要が生じた場合、排他制御獲得動作を試行し、その時点で排他制御待ち状態である他のプロセッサ（ここでは第４プロセッサ４）が存在する場合には、当該プロセッサ（第３プロセッサ３）と排他制御待ち状態である他のプロセッサ（第４プロセッサ４）のうちで最も優先度の高いプロセッサ（第４プロセッサ４）が共有リソース５へのアクセスが許可される。そして、共有リソース５を取得して排他制御中であるプロセッサ（ここでは第１プロセッサ１）の排他制御が終了すると、当該プロセッサ（第４プロセッサ４）が共有リソース５を取得して排他制御を行う。同様に、例えば、ｔ２〜ｔ４の期間に示すように、第１プロセッサ１が共有リソース５を制御する必要が生じて排他制御獲得を試行し、その時点で排他制御待ち状態である第３プロセッサ３が存在する場合には、双方のうちで優先度の高い第３プロセッサ３が、排他制御中である第４プロセッサ４の排他制御が終了次第、共有リソース５を取得して排他制御を行う。また、同様に、例えば、ｔ３〜ｔ５の期間に示すように、第２プロセッサ２が共有リソース５を制御する必要が生じて排他制御獲得を試行し、その時点で排他制御待ち状態である第１プロセッサ１が存在する場合には、双方のうちで優先度の高い第２プロセッサ２が、排他制御中である第３プロセッサ３の排他制御が終了次第、共有リソース５を取得して排他制御を行う。
【００５４】
このような本実施の形態のマルチプロセッサシステム１０１によれば、あるプロセッサが共有リソース５を制御する必要が生じた時点で排他制御待ち状態である他のプロセッサが存在する場合には、それらのうちで優先度の高いプロセッサが共有リソース５を取得して排他制御を行うので、リアルタイム性を確保することができる。
【００５５】
（実施の形態２）
図４は本発明の実施の形態２に係るマルチプロセッサシステムの構成を示す回路図である。
【００５６】
本実施の形態のマルチプロセッサシステム２０１は、基本的構成は実施の形態１のマルチプロセッサシステム１０１と同じであるが、排他制御獲得優先度が変更されるよう構成されている点で実施の形態１のマルチプロセッサシステム１０１と異なる。以下、この相違点を中心に説明する。
【００５７】
図４に示すように、本実施の形態のマルチプロセッサシステム２０１では、第１乃至第４プロセッサ１〜４が、それぞれ、排他制御獲得試行回数保存部１ｃ，２ｃ，３ｃ，４ｃをさらに備えている。排他制御獲得試行回数保存部１ｃ，２ｃ，３ｃ，４ｃは、排他制御獲得試行回数を保存する部分であり、データを保存する機能を有する回路素子で構成される。本実施の形態では、排他制御獲得試行回数保存部１ｃ，２ｃ，３ｃ，４ｃは例えば、レジスタで構成される。排他制御獲得試行回数は、プロセッサが共有リソース５の排他制御の獲得を試行した回数である。
【００５８】
次に、以上のように構成されたマルチプロセッサシステムの動作（本実施の形態に係るマルチプロセッサシステムの排他制御の調停方法）を説明する。
【００５９】
図５は図４のマルチプロセッサシステムを構成する１つのプロセッサの排他制御獲得動作を表すフローチャートである。
【００６０】
以下では、実施の形態１のマルチプロセッサシステム１０１と相違する動作のみ説明する。
【００６１】
ステップＳ１乃至ステップＳ７までは、実施の形態１と全く同じである。本実施の形態では、第１プロセッサ１は、排他制御獲得に失敗した場合（ステップＳ４でＹＥＳ、又はステップＳ５でＮＯ）には、実施の形態１と同様に排他制御待ち情報を更新し（ステップＳ７）、その後、排他制御獲得試行回数保存部１ｃに保存されている排他制御獲得試行回数をインクリメントする（回数を１増加する）（ステップＳ１０）。
【００６２】
次に、第１プロセッサ１は、排他制御獲得優先度を排他制御獲得試行回数の増加度に応じて高くする（ステップＳ１１）。例えば、第１プロセッサ１の優先度が初期値の「４」である場合には、優先度を「３」にする。
【００６３】
その後、第１プロセッサ１は、ステップＳ１に戻り、次の排他制御獲得を試行する。
【００６４】
一方、第１プロセッサ１は、排他制御獲得（共有リソース５の取得）に成功した場合（ステップＳ５でＹＥＳ）には、実施の形態１と同様に排他制御待ち情報を更新し（ステップＳ６）、その後、排他制御獲得試行回数保存部１ｃに保存されている排他制御獲得試行回数を０にリセットする（ステップＳ８）。
【００６５】
次に、第１プロセッサ１は、排他制御獲得優先度を排他制御獲得試行回数の増加度に応じて高くなった分だけ低くする（ステップＳ９）。例えば、第１プロセッサ１の優先度が初期値の「４」から「３」になっている場合には、これを初期値の「４」にする。
【００６６】
その後、この排他制御獲得動作を終了する。なお、本実施の形態では、排他制御獲得優先度が変化するので、複数のプロセッサの排他獲得優先度が同じになる場合もあり得る。そのような場合において、ステップＳ４において、自身と同じ優先度の他のプロセッサが存在する場合には、ステップＳ５における共有リソース５へのアクセス処理の瞬間的なＦＩＦＯにより、それらのいずれかが共有リソース５を取得する。
【００６７】
以上のように構成された本実施の形態のマルチプロセッサシステム２０１によれば、初期値として低い優先度が付与されたプロセッサが長期間継続して排他制御待ち状態になることが防止され、ひいては、総合的なリアルタイム性が向上する。
【００６８】
次に本実施の形態の変形例を説明する。
【００６９】
［変形例１］
変形例１では、各プロセッサ１〜４は、排他制御獲得優先度情報を、排他制御獲得試行回数ではなく、実行しているタスク又は割込み処理の優先度に応じて変更するよう構成されている。
【００７０】
具体的には、各プロセッサ１〜４は、タスクディスパッチ処理や割込み出入口処理において、排他制御獲得優先度情報を更新する。例えば、第１プロセッサ１が、あるタスクＡから別のタスクＢへディスパッチする際には、排他制御獲得優先度情報を、タスクＡの優先度からタスクＢの優先度に変更する。またタスクＢを実行中に割込み処理Ｃの割込み要求が発生し、割込み処理Ｃへ遷移する際には排他制御獲得優先度情報を割込み処理Ｃの優先度に変更する。このような構成によれば、排他制御獲得優先度情報は各プロセッサ１〜４で実行中のタスクや割込み処理の優先度に応じて更新されることとなり、共有リソース５の取得の順序は排他制御獲得優先度情報に応じて定まることから、共有リソース５の取得の順序がプロセッサで実行中のタスクや割込み処理の優先度に応じて定まるまることにとなる。その結果、きめこまかにリアルタイム性を確保することができる。
【００７１】
なお、各プロセッサ１〜４が、さらに、排他制御獲得優先度情報を排他制御要求回数に応じて変更するように構成してもよい。
【００７２】
［変形例２］
変形例２では、各プロセッサ１〜４は、排他制御獲得優先度情報を、排他制御獲得試行回数に応じて変更するのではなく、周期的に変更するよう構成されている。具体的には、各プロセッサ１〜４は、例えば、周期的に発生するイベントを実行する際に、その処理中において排他制御獲得優先度情報を高くなるよう更新する。これにより、各プロセッサ１〜４が、一定周期毎に優先的に排他制御を獲得して、当該イベントを、リアルタイム性を確保しつつ実行することが可能になる。その結果、きめこまかにリアルタイム性を確保することができる。
【００７３】
なお、各プロセッサ１〜４が、さらに、排他制御獲得優先度情報を排他制御要求回数に応じて変更するように構成してもよい。
【００７４】
（実施の形態３）
実施の形態１及び２のマルチプロセッサシステムは、デジタルカメラの画像処理や顔認証等、デジタルビデオカメラの画像処理や顔認証等、デジタルテレビの画像処理等、あるいはその他のこれ以外の様々な分野へ応用することができる。本発明の実施の形態３では、そのような応用分野のうち、デジタルスチールカメラに、実施の形態２のマルチプロセッサシステム２０１を用いた形態を例示する。
【００７５】
図６は本発明の実施の形態３に係るデジタルスチールカメラの機能的構成を示すブロック図である。
【００７６】
図６に示すように、本実施の形態のデジタルスチールカメラ８０１は、タイマ（Timer）部７０１と、ＵＳＢ（Universal Serial Bus）インターフェース部７０２と、キー（KEY）操作部７０３と、カメラ（Camera）部７０４と、オーディオ（Audio）部７０５と、ＣＰＵ（Central Processing Unit）７０６と、メモリ７０７とを含んで構成されている。
【００７７】
ＣＰＵ７０６とメモリ７０７とは、バスによって接続されている。タイマ部７０１、ＵＳＢインターフェース部７０２、キー操作部７０３、カメラ部７０４、及びオーディオ（Audio）部７０５は、ＣＰＵ７０６と直接接続されている。ＣＰＵ７０６とメモリ７０７とはデジタルスチールカメラ８０１の動作を制御する制御部の少なくとも一部を構成している。
【００７８】
ＣＰＵ７０６は、複数のタスクを並列的に処理しながらデジタルスチールカメラ８０１の全体を制御する。具体的には、ＣＰＵ７０５は、キー操作部７０３から入力される各種の指示信号に応じて、メモリ７０７に記憶されたオペレーティングシステムプログラム（ＯＳ）及び各種アプリケーションプログラムを読み出して実行する。また、ＣＰＵ７０６は、カメラ部７０４あるいはオーディオ部７０５等を含む周辺チップから入力される割り込み信号に応じて、割り込みハンドラを実行する。例えば、ＣＰＵ７０６は、アプリケーションにより生成されたタスクを並行して処理する。さらに、周辺チップから割り込み信号が入力された場合、割り込みハンドラを実行することにより、割り込みに対応するプログラムを実行する。なお、アプリケーションによる処理は、ＯＳのタスクスケジューラによって管理されるタスクとして実行されるため、ＯＳのサービスコールを呼び出すことができる。一方、割り込み処理は、タスクスケジューラによって管理されない処理（非タスク処理）である。また、ＣＰＵ７０６は、各種処理結果をメモリ７０７に格納する。
【００７９】
ＣＰＵ７０６は、マルチプロセッサシステム３０１を含む。このマルチプロセッサシステム３０１は、複数（ここでは４）のプロセッサ、すなわち、第１乃至第４単位プロセッサ７１０〜７１３を含む。マルチプロセッサシステム３０１は実施の形態２のマルチプロセッサ２０１で構成されており、第１乃至第４単位プロセッサ７１０〜７１３は、それぞれ、実施の形態２の第１乃至第４プロセッサで構成されている。また、メモリ７０７が実施の形態２の共有リソース５に相当する。
【００８０】
次に、このように構成されたデジタルスチールカメラのＣＰＵ７０６における動作シーケンスを説明する。この動作シーケンスは、実施の形態２のマルチプロセッサシステム２０１の排他制御獲得動作と本質的に同じであるので、図５を用いて説明する。なお、図５のフローチャートは１つのプロセッサの個別の排他制御獲得動作を示しているが、以下では、便宜上、第１乃至第４プロセッサ７１０〜７１３に共通に図５のフローチャートを用いて説明する。
【００８１】
図５において、第１単位プロセッサ７１０は、ＯＳのサービスコール（例えばメモリ７０７のシステム領域に格納された制御パラメータを読み出すためのサービスコール等）を呼出す必要が生じた場合、排他制御獲得動作を試行し、まず他の単位プロセッサ７１１〜７１３の排他制御待ち情報を検出する（ステップＳ１）。
【００８２】
次に、第１単位プロセッサ７１０は、他の単位プロセッサ７１１〜７１３がその時点において「排他制御待ち状態」であるかどうかを判定する（ステップＳ２）。
【００８３】
このとき、他の単位プロセッサ７１１〜７１３が排他制御待ち状態ではないことから（ステップＳ２でＮＯ）、共有リソース（ここではメモリ７０７）の取得が可能か否かを判定する（ステップＳ５）する。このとき、他の単位プロセッサ７１１〜７１３が共有リソース（メモリ７０７）を取得した状態ではないため共有リソースの取得に成功し（ステップＳ５でのＹＥＳ）、ＯＳのサービスコールを呼び出し、ＯＳとしての処理を実行する。
【００８４】
ここで、第１単位プロセッサ７１０が排他制御獲得（共有リソースの取得）に成功した後、第２単位プロセッサ７１１がＯＳのサービスコール（例えばメモリ７０７のシステム領域に制御パラメータを書き込むためのサービスコール等）を呼び出すべく、排他制御獲得を試行すると、ステップＳ５において第１単位プロセッサ７１０が排他制御処理実行中であることから、第２単位プロセッサ７１１は排他制御待ち状態へ移行する（ステップＳ７）。
【００８５】
ここで、さらに第３単位プロセッサ７１２がＯＳのサービスコール（例えばメモリ７０７のシステム領域に制御パラメータを書き込むためのサービスコール等）を呼び出すべく、排他制御獲得を試行すると、第２単位プロセッサ７１１と同様、第３単位プロセッサ７１２も排他制御待ち状態へ移行する（ステップＳ７）。
【００８６】
ここで、第２及び第３単位プロセッサ７１１，７１２は、排他制御待ち状態の間、排他制御獲得優先度情報を更新する。すなわち、排他制御獲得試行回数をインクリメントし（ステップＳ１０）、排他制御獲得試行回数がインクリメントされる度に排他制御獲得優先度を１ずつ高くする（ステップＳ１１）。
【００８７】
そして、第１単位プロセッサ７１０が実行しているＯＳのサービスコール処理が終了し、その排他制御が終了すると、第２単位プロセッサ７１１及び第３単位プロセッサ７１２のうち、排他制御獲得優先度が高いプロセッサ、つまり、排他制御獲得試行回数が多いプロセッサが排他制御獲得（共有リソース（メモリ７０７）の取得）に成功し、ＯＳとしての処理を実行する。
【００８８】
以上に説明したような本実施の形態のデジタルスチールカメラ８０１によれば、総合的なリアルタイム性が向上する。例えば、上述のように、メモリの取得に関してリアルタイム性が向上し、その結果、例えば、オートフォーカス機能において、連写時に高速に応答することが可能になる。
【００８９】
上記実施の形態１乃至３では、本発明をマルチプロセッサシステム及びデジタルスチールカメラのＣＰＵに適用する場合を示したが、本発明はこれらの実施の形態に限定されるものではない。本発明は、上記マルチプロセッサシステムを含む集積回路したりコンピュータを上記マルチプロセッサとして機能させるプログラムとして実現したりすることもできる。そして、これらのプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の通信媒体を介して配信してもよい。
【産業上の利用可能性】
【００９０】
本発明のマルチプロセッサシステムその排他制御の調停方法は、複数のプロセッサ間におけるリソースの排他制御が必要なマルチプロセッサシステム及びその排他制御の調停方法等に有用である。
【図面の簡単な説明】
【００９１】
【図１】本発明の実施の形態１に係るマルチプロセッサシステムの構成を示す回路図である。
【図２】図１のマルチプロセッサシステムを構成する１つのプロセッサの排他制御獲得動作を表すフローチャートである。
【図３】図１のマルチプロセッサシステムの排他制御獲得動作を比較例の排他制御獲得動作と対比して示す模式図であって、（ａ）は図１のマルチプロセッサシステムの排他制御獲得動作を示す図、（ｂ）は比較例の排他制御獲得動作を示す図である。
【図４】本発明の実施の形態２に係るマルチプロセッサシステムの構成を示す回路図である。
【図５】図４のマルチプロセッサシステムを構成する１つのプロセッサの排他制御獲得動作を表すフローチャートである。
【図６】本発明の実施の形態３に係るデジタルスチールカメラの機能的構成を示すブロック図である。
【符号の説明】
【００９２】
１  第１プロセッサ
１ａ，２ａ，３ａ，４ａ  排他制御獲得優先度情報保存部
１ｂ，２ｂ，３ｂ，４ｂ  排他制御待ち情報保存部
１ｃ，２ｃ，３ｃ，４ｃ  排他制御獲得試行回数保存部
２  第２プロセッサ
３  第３プロセッサ
４  第４プロセッサ
５  共有リソース
６  バス
１０１，２０１，３０１  マルチプロセッサシステム
７０１  タイマ部
７０２  ＵＳＢインターフェース部
７０３  キー操作部
７０４  カメラ部
７０５  オーディオ部
７０６  ＣＰＵ
７０７  メモリ
７１０  第１単位プロセッサ
７１１  第２単位プロセッサ
７１２  第３単位プロセッサ
７１３  第４単位プロセッサ
７１４  バス
８０１  デジタルスチールカメラ
【図１】
2010140290.tif 000003
【図２】
2010140290.tif 000004
【図３】
2010140290.tif 000005
【図４】
2010140290.tif 000006
【図５】
2010140290.tif 000007
【図６】
2010140290.tif 000008