(57)【要約】【課題】  複数のマスタデバイスからスレーブデバイスへの要求を調停する競合調停装置において、複数のマスタデバイス上のタスクの実行順序に依存関係があるときにも、それに対応した調停が可能な競合調停装置を提供する。【解決手段】  複数のマスタデバイス１０１〜１０３の動作状態の組合せに応じた競合処理内容を予め設定しておいたテーブルを元に基本優先度を導出する。マスタデバイス１０１〜１０３上で待ち状態となっているタスクが絡む依存関係を考慮するための補正を基本優先度に対して行うことにより最終優先度を決定する。決定した最終優先度を各マスタデバイス１０１〜１０３からのアクセス要求に割り付ける。【選択図】    図２
2008250419.tif 000002
【特許請求の範囲】
【請求項１】
アクセス要求を発行する複数のマスタデバイスと、前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、を備えるシステムに備えられる競合調停装置において、
前記複数のマスタデバイスによるアクセス要求に基本優先度を割り当てる基本優先度割当手段と、
前記複数のマスタデバイスのうちの一のマスタデバイスによるアクセス要求の優先度変更量を、他のマスタデバイスの動作状態に応じて導出する優先度変更量導出手段と、
前記優先度変更量により前記基本優先度を補正することにより、前記一のマスタデバイスによるアクセス要求に与える最終優先度を決定する最終優先度決定手段と、
を備えることを特徴とする競合調停装置。
【請求項２】
前記優先度変更量導出手段は、
前記一のマスタデバイスによるアクセス要求の最終優先度が前記基本優先度から変わらないような優先度変更量を導出するか、
又は、
前記一のマスタデバイスによるアクセス要求の最終優先度が前記他のマスタデバイスによるアクセス要求に与えられる優先度よりも低い値となるような優先度変更量を導出することを特徴とする請求項１に記載の競合調停装置。
【請求項３】
前記優先度変更量導出手段は、
前記他のマスタデバイスのタスク識別子又は割り込み番号に応じて前記一のマスタデバイスによるアクセス要求の優先度変更量を導出することを特徴とする請求項１又は２に記載の競合調停装置。
【請求項４】
前記優先度変更量導出手段は、前記他のマスタデバイスのタスク識別子に応じて前記一のマスタデバイスによるアクセス要求の優先度変更量を導出するものであり、
前記優先度変更量導出手段は、
前記一のマスタデバイスにより当該一のマスタデバイスのタスクよりも優先させるべきタスクとして予め設定された前記他のマスタデバイスのタスクのタスク識別子を保持し、該保持したタスク識別子が、前記他のマスタデバイスの現在のタスク識別子と一致した場合に、前記一のマスタデバイスによるアクセス要求の最終優先度が前記他のマスタデバイスによるアクセス要求に与えられる優先度よりも低い値となるような優先度変更量を導出することを特徴とする請求項２に記載の競合調停装置。
【請求項５】
前記基本優先度割当手段は、
前記複数のマスタデバイスの動作状態の組合せに基づいて、各マスタデバイスによるアクセス要求に対してそれぞれ基本優先度を割り当てることを特徴とする請求項１又は２に記載の競合調停装置。
【請求項６】
前記基本優先度割当手段は、各マスタデバイスの動作状態を各マスタデバイスのタスク識別子又は割り込み番号により認識することを特徴とする請求項５記載の競合調停装置。
【請求項７】
アクセス要求を発行する複数のマスタデバイスと、
前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、
請求項１乃至６の何れか一項に記載の競合調停装置と、
を備えることを特徴とするマスタスレーブシステム。
【請求項８】
アクセス要求を発行する複数のマスタデバイスと、前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、を備えるシステムにおけるアクセス要求の競合を調停する方法において、
前記複数のマスタデバイスによるアクセス要求に基本優先度を割り当てる第１の過程と、
前記複数のマスタデバイスのうちの一のマスタデバイスによるアクセス要求の優先度変更量を、他のマスタデバイスの動作状態に応じて導出する第２の過程と、
前記優先度変更量により前記基本優先度を補正することにより、前記一のマスタデバイスによるアクセス要求に与える最終優先度を決定する第３の過程と、
を備えることを特徴とする競合調停方法。
【請求項９】
コンピュータが実行可能なプログラムにおいて、請求項８に記載の競合調停方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、競合調停装置、マスタスレーブシステム、競合調停方法及びそのプログラムに関する。
【背景技術】
【０００２】
近年、半導体微細加工技術の進歩のほか、コストダウンや性能向上といった市場からの要求により、システム全体をオンチップに搭載することが当たり前のようになってきた。つまり、互いに異なる処理を実行する複数のデバイスが同一チップ上に搭載されるようになってきた。さらに、性能向上や低電力化の対策として、マルチコアプロセッサを同一チップ上に形成し、互いに異なる動作をするソフトウェアアプリケーションを同一チップ上で同時に並行して実行することも可能となってきた。
【０００３】
オンチップ上で複数のプロセッサコアが動作する場合、プロセッサコアは、必要な数だけ複数独立して存在するが、メモリなどのスレーブデバイスは、積極的にコア間通信に使われる目的のほか、コストダウンの目的からも共有されることが多い。つまり、複数のマスタデバイスが接続手段としてのバスを介してスレーブデバイスを共有する構成が、システム・オン・チップでは一般的となっている。
【０００４】
ところで、マルチコアをベースとしたシステムによって提供されるサービスの質を決める要因の一つとして、システム内の個々のコアから特定のスレーブデバイスへのアクセス要求が同時刻に発生する場合の調停をどのように行うかというものがある。つまり、異なるコアから同時に発生したアクセス要求の間では、その要求を発したタスクに応じて相対的な優先度を判断する必要がある。
【０００５】
また、このような判断には、待ち状態になっていてその時点ではプロセッサコアを占有していないタスクのことまで考慮する必要があるケースも考えられる。具体的には、一のプロセッサコア内では処理優先度の高いタスクが、他のプロセッサコアにおける別のタスクが完了していないがために待ち状態に入らざるを得ないような場合である。
【０００６】
調停の方法としては様々なものが提案されている。たとえば、特許文献１の図１に記載されている従来の調停方式では、各マスタデバイスによるアクセスの頻度をカウントし、その頻度に上限を設ける方法が用いられており、これによって全体の処理が平均化される効果が得られる。特許文献１の技術では、スレーブデバイスへのアクセス要求を発生する各マスタデバイスはお互いに対等であり、また、処理の順序を特段考慮する必要がないことを前提としている。このような調停方法は多数のシンメトリカルなトランザクションの処理スループットを向上させる上で効果がある。
【０００７】
他方、個別最適を目指す調停方法も提案されている。例えば、特許文献２の図２に記載されている従来の調停方式では、各マスタデバイスが自己申告する形でそれぞれのアクセス要求の優先必要度合いがリアルタイムに定義される。特許文献２の技術は、アシンメトリカルな多種の処理が混在している環境において、前記の平均化による手法では対応できない個々の特殊要求に対応することを可能とする。
【特許文献１】特開平０８−０８３２１１号広報（第１１頁、図１）
【特許文献２】特開２００４−１９９３７４号広報（第９頁、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献２に開示された競合調停装置には以下の問題点がある。
【０００９】
第１の問題点は、複数のマスタデバイス間の状態の相対関係を考慮した競合調停ができないことである。この問題が発生する原因は、各マスタデバイスにおいて優先度を生成する際に、他のマスタデバイスの状態との相対関係を考慮に入れた設定ができないことに起因する。優先度が絶対値として与えられる場合には、特定の処理の優先度が一義的に決まってしまい、状況つまり他のマスタデバイスの動作状態に応じて変化するという動作は実現できない。
【００１０】
例えば、一のマスタデバイスが発行する要求について、他のマスタデバイスが所定の処理を実行中には当該要求は直ちに実行されなければならないが、当該他のマスタデバイスが所定の処理を実行中でないときには当該要求は遅延が許容されるものとする。この場合、前記一のマスタデバイスが発行する要求について、当該一のマスタデバイスに割り当てられる優先度は、当該一のマスタデバイスの動作状態のみに基づいた判断により一義的に定めることはできないはずである。
【００１１】
第２の問題点は、各マスタデバイス上で複数のタスクがオペレーティングシステムによって切り替えられながら動作しているシステムにおいて、優先度が高い処理であるにも関わらずその処理が遅延されてしまうというプライオリティ・インバージョンと呼ばれる状態を解消できないことである。この問題が発生する原因は、多くのオペレーティングシステムで行われる特定処理の待ち状態への移行についての考慮がなされていないためである。
【００１２】
例えば、第２のマスタデバイスのタスクの優先度が高いにもかかわらず、第２のマスタデバイスのタスクは第１マスタデバイスのタスクによる処理の完了を待ってからでないと実行できない、という条件があったとする。この場合、第１のマスタデバイスによるタスクの処理中は、第２のマスタデバイスのタスクは待ち状態となり、第２のマスタデバイスからのアクセス要求はバスアクセスには現れない。しかし、優先度の高いタスクである第２のマスタデバイスのタスクを早く処理するためには、本来的には優先度が高いわけでもない第１のマスタデバイスのタスクを優先させる必要がある。つまり、単純に、バスアクセスに現れているアクセス要求だけの間での優先度比較では適切な調停処理を行うことができない。
【００１３】
本発明の目的は、複数のマスタデバイスから、これら複数のマスタデバイスにより共有されるスレーブデバイスへ同時刻にアクセス要求が発生するような競合状態において、システム全体の調停に誤った判断を生じてしまうことを回避可能な競合調停装置、マスタスレーブシステム、競合調停方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、本発明の競合調停装置は、アクセス要求を発行する複数のマスタデバイスと、前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、を備えるシステムに備えられる競合調停装置において、前記複数のマスタデバイスによるアクセス要求に基本優先度を割り当てる基本優先度割当手段と、前記複数のマスタデバイスのうちの一のマスタデバイスによるアクセス要求の優先度変更量を、他のマスタデバイスの動作状態に応じて導出する優先度変更量導出手段と、前記優先度変更量により前記基本優先度を補正することにより、前記一のマスタデバイスによるアクセス要求に与える最終優先度を決定する最終優先度決定手段と、を備えることを特徴としている。
【００１５】
本発明の競合調停装置においては、前記優先度変更量導出手段は、前記一のマスタデバイスによるアクセス要求の最終優先度が前記基本優先度から変わらないような優先度変更量を導出するか、又は、前記一のマスタデバイスによるアクセス要求の最終優先度が前記他のマスタデバイスによるアクセス要求に与えられる優先度よりも低い値となるような優先度変更量を導出することが好ましい。
【００１６】
本発明の競合調停装置においては、前記優先度変更量導出手段は、前記他のマスタデバイスのタスク識別子又は割り込み番号に応じて前記一のマスタデバイスによるアクセス要求の優先度変更量を導出することが好ましい。
【００１７】
本発明の競合調停装置においては、前記優先度変更量導出手段は、前記他のマスタデバイスのタスク識別子に応じて前記一のマスタデバイスによるアクセス要求の優先度変更量を導出するものであり、前記優先度変更量導出手段は、前記一のマスタデバイスにより当該一のマスタデバイスのタスクよりも優先させるべきタスクとして予め設定された前記他のマスタデバイスのタスクのタスク識別子を保持し、該保持したタスク識別子が、前記他のマスタデバイスの現在のタスク識別子と一致した場合に、前記一のマスタデバイスによるアクセス要求の最終優先度が前記他のマスタデバイスによるアクセス要求に与えられる優先度よりも低い値となるような優先度変更量を導出することが好ましい。
【００１８】
本発明の競合調停装置においては、前記基本優先度割当手段は、前記複数のマスタデバイスの動作状態の組合せに基づいて、各マスタデバイスによるアクセス要求に対してそれぞれ基本優先度を割り当てることが好ましい。
【００１９】
本発明の競合調停装置においては、前記基本優先度割当手段は、各マスタデバイスの動作状態を各マスタデバイスのタスク識別子又は割り込み番号により認識することが好ましい。
【００２０】
本発明のマスタスレーブシステムは、アクセス要求を発行する複数のマスタデバイスと、前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、本発明の競合調停装置と、を備えることを特徴としている。
【００２１】
本発明の競合調停方法は、アクセス要求を発行する複数のマスタデバイスと、前記複数のマスタデバイスから発行されたアクセス要求に応じた処理を実行するスレーブデバイスと、を備えるシステムにおけるアクセス要求の競合を調停する方法において、前記複数のマスタデバイスによるアクセス要求に基本優先度を割り当てる第１の過程と、前記複数のマスタデバイスのうちの一のマスタデバイスによるアクセス要求の優先度変更量を、他のマスタデバイスの動作状態に応じて導出する第２の過程と、前記優先度変更量により前記基本優先度を補正することにより、前記一のマスタデバイスによるアクセス要求に与える最終優先度を決定する第３の過程と、を備えることを特徴としている。
【００２２】
本発明のプログラムは、コンピュータが実行可能なプログラムにおいて、本発明の競合調停方法をコンピュータに実行させることを特徴としている。
【発明の効果】
【００２３】
本発明によれば、一のマスタデバイスによるアクセス要求に与える最終優先度を、他のマスタデバイスの動作状態に応じて変化させることができるので、複数のマスタデバイス間の状態の相対関係を考慮した競合調停が可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明に係る実施形態について説明する。
【００２５】
図１は本実施形態に係るマスタスレーブシステム１００の全体構成を示すブロック図である。
【００２６】
先ず、構成を説明する。
【００２７】
図１に示すように、本実施形態に係るマスタスレーブシステム１００は、複数（図１の例では３つ）のマスタデバイス１０１，１０２，１０３と、これら複数のマスタデバイス１０１〜１０３により共有され、これらマスタデバイス１０１〜１０３から発行されたアクセス要求に応じた処理を実行するスレーブデバイス１０４と、マスタデバイス１０１〜１０３とスレーブデバイス１０４との間の接続などを行うバス制御部１０５と、を備えている。
【００２８】
各マスタデバイス１０１〜１０３は、バス制御部１０５に対し、データや制御信号の伝達経路を介して相互に接続されている。
【００２９】
スレーブデバイス１０４は、バス制御部１０５に対し、データや制御信号の伝達経路を介して相互に接続されている。
【００３０】
従って、各マスタデバイス１０１〜１０３は、バス制御部１０５を介してスレーブデバイス１０４に対してアクセス可能となっている。
【００３１】
なお、各マスタデバイス１０１〜１０３は、例えば、それぞれプロセッサコアからなり、スレーブデバイス１０４は、例えば、メモリからなる。
【００３２】
バス制御部１０５は、マスタデバイス１０１〜１０３からスレーブデバイス１０４へのアクセス要求が競合した場合に調停処理を行う競合調停部（競合調停装置）１０６と、マスタデバイス１０１〜１０３とスレーブデバイス１０４との間での制御信号やデータの転送を行うマスタ−スレーブ間データ転送部１０７と、を備えている。
【００３３】
図２は本実施形態に係る競合調停装置としての競合調停部１０６の全体構成を示すブロック図である。
【００３４】
図２に示すように、競合調停部１０６は、マスタデバイス１０１〜１０３によるアクセス要求に基本優先度を割り当てる優先度処理テーブルレジスタ部２０１と、マスタデバイス１０１〜１０３のうちの任意の一のマスタデバイスによるアクセス要求の優先度変更量を他のマスタデバイスの動作状態に応じて導出する相対優先度補正判定部２０２と、優先度変更量により基本優先度を補正することにより一のマスタデバイスによるアクセス要求に与える最終優先度を決定する優先要求判定部２０３と、決定された最終優先度に従ってアクセス要求を許可する要求選択部２０４と、を備えている。
【００３５】
このうち優先度処理テーブルレジスタ部２０１及び相対優先度補正判定部２０２には、例えば、各マスタデバイス１０１〜１０３から、各マスタデバイス１０１〜１０３と１対１で対応するタスク識別子信号線を介して、現在の動作状態を示すタスク識別子が入力される。
【００３６】
或いは、タスク識別子は、オペレーティングシステムによってタスクの切り替えがなされる際に、オペレーティングシステムによって優先度テーブルレジスタ部２０１及び相対優先度補正判定部２０２へ出力され、該優先度テーブルレジスタ部２０１及び相対優先度補正判定部２０２にて保持されるのであっても良い。
【００３７】
ここで、タスクとは、マスタデバイス上で動作するプログラムの基本単位であり、オペレーティングシステムによって処理の単位として扱われるものである。オペレーティングシステムは、タスク単位に分けられた複数の処理を種々のイベントをきっかけに時間軸上で入れ替えながら実行する。タスク識別子はタスクを識別するためにタスクごとに異なる値が割り振られたものであり、オペレーティングシステム上で管理される。なお、１つのマスタデバイスが一度に実行可能なタスクは１つである。
【００３８】
優先度処理テーブルレジスタ部２０１は、各マスタデバイス１０１〜１０３の動作状態の組合せに応じて、各マスタデバイス１０１〜１０３からのアクセス要求に与えるべき基本優先度を導出するための優先度処理テーブルを保持している。
【００３９】
ここで、優先度（基本優先度を含む）とは、アクセス要求が競合したタスク間で、何れのタスクの処理を優先させるか（先に行うか）を決定するために用いられる値である。
【００４０】
優先度は、例えば、１〜３２まで、或いは、１〜２５６まで、といったように、整数で表され、数が大きくなるほど優先度が高く（優先順位が早く）、逆に、数が小さくなるほど優先度が低く（優先順位が遅く）なるものとする。
【００４１】
優先度処理テーブルレジスタ部２０１は、優先度処理テーブルを用いて、各マスタデバイス１０１〜１０３からのタスク識別子の入力に応じて、各マスタデバイス１０１〜１０３からのアクセス要求の基本優先度を導出し、該基本優先度を優先要求判定部２０３及び相対優先度補正判定部２０２に出力する。
【００４２】
タスク識別子は、各マスタデバイス１０１〜１０３からバス制御部１０５へのアクセス要求の入力タイミングにおいて、各マスタデバイス１０１〜１０３から優先度処理テーブルレジスタ部２０１及び相対優先度補正判定部２０２に入力されるようになっていても良いし、或いは、アクセス要求とは非同期に各マスタデバイス１０１〜１０３の動作状態が変更になった時点で変更後のタスク識別子が各マスタデバイス１０１〜１０３から優先度処理テーブルレジスタ部２０１及び相対優先度補正判定部２０２に入力されるようになっていても良い。なお、後者の場合には、優先度処理テーブルレジスタ部２０１及び相対優先度補正判定部２０２は、入力されたタスク識別子を記憶保持する（該当するマスタデバイスから新たなタスク識別子が入力されるまで記憶保持する）機能を持つ必要がある。
【００４３】
相対優先度補正判定部２０２には、例えば、各マスタデバイス１０１〜１０３から、各マスタデバイス１０１〜１０３と１対１で対応するタスク間連係情報信号線を介して、以下に説明するタスク間連係情報が、必要に応じて入力される。
【００４４】
タスク間連係情報とは、各マスタデバイス１０１〜１０３間でタスクの処理順序が存在する場合に、例えば自身の優先度を下げる必要のあるマスタデバイスから相対優先度補正判定部２０２に入力される情報である。
【００４５】
すなわち、「一のマスタデバイスがあるタスクを実行するときに、他のマスタデバイスが所定のタスクを実行しているならば、当該一のマスタデバイスは当該所定のタスクの終了を待つ必要がある」といったタスクの処理順序が存在したとする。この場合、一のマスタデバイスは、（当該他のマスタデバイスの）当該所定のタスクからのアクセス要求よりも、当該一のマスタデバイスからのアクセス要求の優先度を低くするために、当該所定のタスクよりも自身のアクセス要求の優先度を低くすることを指定するタスク間連係情報を、相対優先度補正判定部２０２に入力する。
【００４６】
このようなタスク間連係情報を受けた相対優先度補正判定部２０２は、他のマスタデバイスから所定のタスク識別子が相対優先度補正判定部２０２に入力されているかどうか、或いは、他のマスタデバイスから入力された所定のタスク識別子を相対優先度補正判定部２０２が保持しているかどうかの判定を行い、所定のタスク識別子が入力されている、或いは、所定のタスク識別子を保持していると判定した場合には、一のマスタデバイスからのアクセス要求の優先度を、当該所定のタスクからのアクセス要求（つまり他のマスタデバイスからのアクセス要求）よりも低くするような優先度変更量を導出し、該導出した優先度変更量を優先要求判定部２０３に対して出力する。
【００４７】
すなわち、相対優先度補正判定部２０２は、優先度処理テーブルレジスタ部２０１から入力される他のマスタデバイスからのアクセス要求の基本優先度よりも、一のマスタデバイスからのアクセス要求の優先度が低くなるような優先度変更量を導出し、優先要求判定部２０３に出力する。
【００４８】
優先要求判定部２０３は、優先度処理テーブルレジスタ部２０１から入力される基本優先度を、相対優先度補正判定部２０２から入力される優先度補正量により補正することによって、各アクセス要求に割り付ける最終優先度を決定し、該決定した最終優先度を要求選択部２０４へ出力する。
【００４９】
すなわち、例えば、基本優先度から優先度補正量を差し引くことにより、基本優先度よりも低い最終優先度を算出し、該算出した最終優先度を要求選択部２０４へ出力する。
【００５０】
要求選択部２０４には、各マスタデバイス１０１〜１０３から、各マスタデバイス１０１〜１０３と１対１で対応する要求信号線を介して、アクセス要求が入力される。これにより、要求選択部２０４は、現在どのようなアクセス要求が発行されているかを認識する。
【００５１】
また、要求選択部２０４は、優先要求判定部２０３から出力された最終優先度に従い、各アクセス要求に対するアクセス許可信号をマスタ−スレーブ間データ転送部１０７に対して出力する。
【００５２】
また、マスタ−スレーブ間データ転送部１０７には、各マスタデバイス１０１〜１０３からのアクセス要求に関するパラメータ（例えば、アドレス情報）が入力される。マスタ−スレーブ間データ転送部１０７は、各マスタデバイス１０１〜１０３から競合調停部１０に入力されるアクセス要求のうち、要求選択部２０４から入力されるアクセス許可信号により許可されたアクセス要求に関するパラメータをスレーブデバイス１０４へ出力する。
【００５３】
以上のように構成されたマスタスレーブシステム１００は、オンチップに搭載されている。
【００５４】
次に、動作を説明する。
【００５５】
図１を用いて、システム全体の動作の概要について説明する。
【００５６】
マスタデバイス１０１〜１０３はスレーブデバイス１０４に対してアクセス要求を発行する。マスタデバイス１０１〜１０３のうちの何れか複数のマスタデバイスからのアクセス要求の発行タイミングが重なる場合には、アクセス要求の調停が競合調停部１０６により行われる。スレーブデバイス１０４は、各アクセス要求に応じた処理を順次に行う。すなわち、競合調停部１０６による調停が行われた場合には、調停により決定された順序で各アクセス要求に応じた処理を行う。そして、スレーブデバイス１０４は、各アクセス要求に応じた処理の結果、各アクセス要求に対する応答情報やデータなどをバス制御部１０５に出力する。スレーブデバイス１０４から出力された応答情報やデータは、バス制御部１０５のデータ転送部１０７を介して、アクセス要求を発行したマスタデバイス１０１〜１０３へ返される。
【００５７】
図２を用いて、競合調停部１０６の動作の詳細について説明する。
【００５８】
優先度テーブルレジスタ部２０１は、各マスタデバイス１０１〜１０３の動作状態を表すタスク識別子を元に、各マスタデバイス１０１〜１０３から発行されるアクセス要求に対して割り付ける基本優先度を導出する。優先度テーブルレジスタ部２０１は、基本優先度の導出には、予め設定された優先度処理テーブルを用いる。
【００５９】
優先度処理テーブルには、各マスタデバイス１０１〜１０３において取り得るタスク状態の組合せ分だけ、各マスタデバイス１０１〜１０３からのアクセス要求に与えられる基本優先度の組が指定されている。
【００６０】
例えば、マスタデバイスの数がｋであるとし、各マスタデバイスをマスタデバイスＭ１、Ｍ２、．．．、Ｍｋと表すとする。また、各マスタデバイスＭ１、Ｍ２、．．．、Ｍｋについて、それぞれが実行可能なタスクの個数をｎ１、ｎ２、．．．、ｎｋとすると、この優先度処理テーブルのロウ数は（ｎ１×ｎ２×．．．×ｎｋ）通りとなる。
【００６１】
ただし、実際には優先度の高低の指定が不要であるタスクの組合せが多数ありうるので、その分を省略した形の優先度処理テーブルを用いることができる。
【００６２】
なお、優先度処理テーブルは、マスタスレーブシステム１００の起動時にオペレーティングシステムにより設定されることが挙げられるが、或いは、マスタデバイスによって必要に応じて書き換えられるのであっても良い。
【００６３】
マスタデバイス１０１〜１０３のうち、一のマスタデバイスにおけるタスクが、他のマスタデバイスにおける所定のタスクの実行と時間順序的な関係を持つ場合を仮定する。他のマスタデバイスにおける前記所定のタスクの終了を待つために、前記一のマスタデバイスにおいて待ち状態に入るタスクがあった場合に、当該一のマスタデバイスもしくはオペレーティングシステムによって、この優先させるべき他のマスタデバイスで実行されるタスクの識別子が、タスク間連係情報として相対優先度補正判定部２０２に入力される。この入力されたタスク識別子（タスク間連係情報）は、前記一のマスタデバイスのタスクが待ち状態から復帰したときに、当該タスクもしくはオペレーティングシステムによって解除される。
【００６４】
相対優先度補正判定部２０２では、一のマスタデバイスからタスク間連係情報が入力されている場合、そのタスク間連係情報に基づき、一のマスタデバイスからのアクセス要求の優先度を下げるか否かの判定と、その下げ量（優先度補正量）の導出を行う。この下げ量は、前記他のマスタデバイスにより実行される前記所定のタスクからのアクセス要求の優先度よりも、当該一のマスタデバイスからのアクセス要求の優先度のようが低くなるような値であり、優先度処理テーブルレジスタ部２０１から入力される一のマスタデバイスからのアクセス要求の基本優先度と、他のマスタデバイスからのアクセス要求の基本優先度と、を比較することにより導出される。すなわち、例えば、一のマスタデバイスからのアクセス要求の基本優先度が１５であり、他のマスタデバイスからのアクセス要求の基本優先度が１０であれば、例えば、優先度補正量を６とし、該優先度補正量による補正後の一のマスタデバイスからのアクセス要求の基本優先度が９となるようにすればよい。
【００６５】
図３を用いて、相対優先度補正判定部２０２における判定フローを説明する。
【００６６】
まず、相対優先度補正判定部２０２は、一のマスタデバイスよりも優先させなければならない他のマスタデバイスのタスクが存在することを示すタスク間連係情報が登録されているかどうかを判定する。つまり、上記所定のタスクのタスク識別子が、タスク間連係情報として相対優先度補正判定部２０２に入力されているか否か、或いは、入力された上記所定のタスクのタスク識別子を相対優先度補正判定部２０２が保持しているか否かを判定する（ステップＳ１）。
【００６７】
タスク間連係情報が登録されていなければ（ステップＳ１のＮｏ）、優先度補正量を０として優先要求判定部２０３に出力する（ステップＳ４）。このため、一のマスタデバイスからのアクセス要求に対して優先度処理テーブル部２０１から導出される基本優先度がそのまま最終優先度となる。
【００６８】
他方、他のマスタデバイスにおける所定のタスクを一のマスタデバイスよりも優先されなければならないことが登録されていれば（ステップＳ１のＹｅｓ）、当該他のマスタデバイスが所定のタスクを実行中かどうかを判定する（ステップＳ２）。ここで、実行中のタスクの識別子の入手の仕方としては、タスクを実行する各マスタデバイス１０１〜１０３から、随時、タスク識別子を相対優先度補正判定部２０２に入力する方法や、タスクの切り替わりのタイミングのみにおいて切り替わり後のタスク識別子を各マスタデバイス１０１〜１０３から相対優先度補正判定部２０２に入力し、その後は相対優先度補正判定部２０２にてタスク識別子を記憶保持する方法が挙げられる。
【００６９】
他のマスタデバイスで所定のタスクが実行中でないならば（ステップＳ２のＮｏ）、優先度補正量を０として優先要求判定部２０３に出力し（ステップＳ４）、一のマスタデバイスからのアクセス要求に対して優先度処理テーブル部２０１から導出される基本優先度がそのまま最終優先度となる。
【００７０】
他のマスタデバイスで所定のタスクが実行中であれば（ステップＳ２のＹｅｓ）、タスク間連係情報に従って優先度補正量を導出し、該導出した優先度補正量を優先要求判定部２０３に出力する（ステップＳ３）。ここで、この優先度補正量は、一のマスタデバイスによるアクセス要求に割り付けられる最終優先度が他のマスタデバイスの優先度よりも低い値になるような補正量である。
【００７１】
このため、一のマスタデバイスからのアクセス要求に対して優先度処理テーブル部２０１から導出される基本優先度が、優先要求判定部２０３によって優先度補正量を用いて補正されることにより、最終優先度は他のマスタデバイスの優先度よりも低い値となる。
【００７２】
ここで、タスク間連係情報は、特定タスク間の相対的な優先関係を指示するものである。この具体的な実現方法としては、例えば、優先されるべきタスクによるアクセス要求に対する優先度値から最小単位値の１を減じた値が優先要求判定部２０３から出力されることになるような指示を相対優先度補正判定部２０２が与える形態が考えられる。このとき、優先要求判定部２０３には、優先度処理テーブルレジスタ部２０１から与えられた基本優先度の差分を算出する機能が実装される形態も考えられる。
【００７３】
ただし、相対優先度補正判定部２０２から出力される優先度補正量は優先度を基本優先度から下げるような値とは限らない。すなわち、一のマスタデバイスのタスクが自らの優先度を上げるようなタスク間連係情報を相対優先度補正判定部２０２に入力する結果として、優先要求判定部２０３が一のマスタデバイスのタスクの優先度を他のマスタデバイスのタスクの優先度よりも上げるような動作も可能である。なお、優先度は相対値のみが有効な値であるために、特定の優先度値を上げることと、その他の優先度を下げることは、互いに等価となる。
【００７４】
また、基本優先度を優先度補正量によって補正した後の最終優先度が、別のマスタデバイスのアクセス要求の優先度と同じ値となってしまった場合、つまり、デッドロック状態となった場合には、その状態を解消するために特定のアクセス要求の優先度をさらに変更する必要がある。具体的には、例えば、デッドロックに含まれる各タスクのうち、優先度処理テーブルレジスタ部２０１に保持されている基本優先度が最も高いタスクを、強制的に、デッドロックに含まれる各タスクのうちの先頭処理タスク（一番最初に処理を実行するタスク）とする形態が考えられる。
【００７５】
また、割り込み処理中には、タスクが実行されずタスク識別子による判断を行うことができないため、マスタデバイスの動作状態を表す指標として割り込み番号を用いた判断を行うようにしても良い。つまり、上記においては、タスク識別子をマスタデバイスの動作状態を表す指標として用いた動作を説明したが、割り込み処理中には、上記の動作におけるタスク識別子を割り込み番号に置き換えた動作を行うことができる。
【００７６】
また、要求選択部２０４は、優先要求判定部２０３の出力に応じてアクセス要求を一つだけ受理する形態が考えられるが、複数のアクセス要求を各マスタデバイスから受理して優先度順にスタックに保持する形態も考えられる。後者の場合、スタック内にアクセス要求自体とその優先度とがペアでスタックに保持されるが、上記の説明と同様に、各タスクに対して与えられたアクセス要求の最終優先度の順に、各アクセス要求を許可すればよい。
【００７７】
以上のような第１の実施形態によれば、以下のような効果が得られる。
【００７８】
第１の効果は、一のマスタデバイスによるアクセス要求に与える最終優先度を、他のマスタデバイスの動作状態に応じて変化させることができるので、複数のマスタデバイス間の状態の相対関係を考慮した競合調停が可能となることである。
【００７９】
第２の効果は、アクセス要求を発行した複数のマスタデバイス１０１〜１０３におけるタスクの組合せごとに各タスクによるアクセス要求に与える優先度を割り当てることにより、マスタスレーブシステム１００全体の動作に要求される仕様に対してさらにきめ細かい調停を行うことができることである。
【００８０】
その理由は、あるタスクによるアクセス要求に対して、そのアクセス要求を行うマスタデバイス単体の動作状態から一義的に優先度を決定するのではなく、複数のマスタデバイスで併走しているタスクどうしの組合せまでを考慮することにより、マスタデバイス間の動作状態の相対関係を調停判定に取り込むことができるためである。
【００８１】
更に、本来ならば複数のマスタデバイスという物理的に離れたデバイス間で情報を伝達して調停すべきものが、ひとまとまりのハードウェア構成（つまり、競合調停部１０６）により一箇所で処理を行うことにより、高速な処理が可能となるためである。加えて、必要な優先度補正も同様にひとまとまりのハードウェア構成（競合調停部１０６）において行うことにより、最終的な調停情報（つまり、最終優先度）がバス伝達時間と比較して同等もしくはそれ以下という高速で得られることになる。
【００８２】
第３の効果は、競合対象となっているアクセス要求のみならず、そのあとに発生することになるアクセス要求が適切な段階で処理されるように考慮された調停を行うことができることである。
【００８３】
その理由は、一のマスタデバイスが実行するタスクの優先度が高いけれども、該優先度の高いタスクは、他のマスタデバイスが実行するタスクの処理完了を待つ必要があるような場合において、一のマスタデバイスのタスクが待ち状態となってそのアクセス要求がバスアクセスに現れない状態のときであっても、各マスタデバイスから与えられるタスク間連係情報により競合調停装置がそのような状態を認識し、待ち状態にあるタスクが待ちから適切に復旧して実行可能となるような競合調停が可能となるためである。
【００８４】
なお、上記の実施形態では、マスタスレーブシステム１００が備えるスレーブデバイス１０４が１つである例を説明したが、マスタスレーブシステム１００が複数のスレーブデバイスを備える形態も考えられる。
【００８５】
また、競合調停部１０６が、バス制御部１０５の内部ではなく、スレーブデバイス１０４とバス制御部１０５の間に配置されて、特定のスレーブデバイスに対するアクセス要求の競合処理をする形態も考えられる。
【００８６】
また、競合調停部１０６は、例えば、ＣＰＵ或いはその他のプロセッサと、このプロセッサの動作用プログラムを記憶したＲＯＭなどのプログラムメモリと、このプロセッサの作業領域として機能するＲＡＭなどの作業用メモリと、を備え、上記において説明したような優先度処理テーブルレジスタ部２０１、相対優先度補正判定部２０２、優先要求判定部２０３、要求選択部２０４、をプログラム処理により実行するような構成であっても良い。なお、この場合、優先度処理テーブルは、プログラムメモリ又は作業用メモリに記憶すればよい。
【００８７】
また、相対優先度補正判定部２０２にも要求信号線を介して各マスタデバイス１０１〜１０３からのアクセス要求を入力するようにし、相対優先度補正判定部２０２は、図３の動作において、ステップＳ１の前に、何れかのマスタデバイスからのアクセス要求が発行されているか否かを判定し、発行されている場合に限り、図３のステップＳ１以降の処理を行うようにしても良い。
【図面の簡単な説明】
【００８８】
【図１】第１の実施形態に係るシステム全体の構成を示すブロック図である。
【図２】第１の実施形態における競合調停処理装置において、競合調停部１０６の内部構成を示すブロック図である。
【図３】本発明の第１の実施形態におけるデータ処理装置の処理フローを示すフローチャートである。
【符号の説明】
【００８９】
１００  マスタスレーブシステム
１０１  マスタデバイス
１０２  マスタデバイス
１０３  マスタデバイス
１０４  スレーブデバイス
１０５  バス制御部
１０６  競合調停部（競合調停装置）
１０７  マスタ−スレーブ間データ転送部
２０１  優先度処理テーブルレジスタ部（基本優先度割当手段）
２０２  相対優先度補正判定部（優先度変更量導出手段）
２０３  優先要求判定部（最終優先度決定手段）
２０４  要求選択部
【図１】
2008250419.tif 000003
【図２】
2008250419.tif 000004
【図３】
2008250419.tif 000005