(57)【要約】【課題】プロセッサの処理効率に対して大きな影響を及ぼさずに、個々のバスマスタにおいて実行される処理に適したバス使用権の調停を行うことができるバス制御装置、バス制御プログラム及び記録媒体を提供する。【解決手段】優先順位制御部１８０は、プロセッサによるタスクの実行状況、及び、バスマスタにより実行される処理の優先度に基づいて、バスマスタの優先順位を変更する。バス調停装置１７０は、共有バス１１０に接続された複数のバスマスタの、共有バス１１０に対するバス使用権を、バスマスタの優先順位に基づいて設定する。【選択図】図１
2007219925.tif 000002
【特許請求の範囲】
【請求項１】
共有バスに接続された、少なくとも１つのプロセッサを含む複数のバスマスタの、前記共有バスに対するバス使用権を、前記バスマスタの優先順位に基づいて設定するバス調停手段と、
前記プロセッサによるタスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する優先順位制御手段と、
を備えたことを特徴とするバス制御装置。
【請求項２】
前記プロセッサは、前記タスクの実行状況を前記優先順位制御手段に通知し、
前記優先順位制御手段は、前記プロセッサから通知された前記タスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する
ことを特徴とする請求項１に記載のバス制御装置。
【請求項３】
前記優先順位制御手段は、前記プロセッサによるタスクの実行状況を監視した結果、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更することを特徴とする請求項１に記載のバス制御装置。
【請求項４】
前記優先順位制御手段は、
前記プロセッサによって実行される処理単位毎に、前記バスマスタによって実行されるタスクの優先度が予め記憶された優先タスク記憶手段と、
前記プロセッサを含む前記バスマスタによる前記タスクの実行状況と、前記優先タスク記憶手段によって記憶された内容とに基づいて、前記バスマスタの優先順位を変更する優先順位変更手段と、
を備えたことを特徴とする請求項１に記載のバス制御装置。
【請求項５】
共有バスに接続された、少なくとも１つのプロセッサを含む複数のバスマスタの、前記共有バスに対するバス使用権を、前記バスマスタの優先順位に基づいて設定するバス調停装置を備えるバス制御装置内の前記プロセッサに、
前記プロセッサによるタスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理
を実行させるためのバス制御プログラム。
【請求項６】
前記バスマスタに第１のプロセッサと第２のプロセッサが含まれ、前記バスマスタの優先順位を変更する処理として、前記第２のプロセッサからの前記タスクの実行状況の通知、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理を前記第１のプロセッサに実行させることを特徴とする請求項５に記載のバス制御プログラム。
【請求項７】
前記バスマスタに第１のプロセッサと第２のプロセッサが含まれ、前記バスマスタの優先順位を変更する処理として、前記第２のプロセッサによる前記タスクの実行状況を監視した結果、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理を前記第１のプロセッサに実行させることを特徴とする請求項５に記載のバス制御プログラム。
【請求項８】
前記バスマスタの優先順位を変更する処理として、
前記プロセッサを含む前記バスマスタによる前記タスクの実行状況と、前記プロセッサによって実行される処理単位毎に予め設定された、前記バスマスタによって実行されるタスクの優先度とに基づいて、前記バスマスタの優先順位を変更する処理と、
を前記プロセッサに実行させることを特徴とする請求項５に記載のバス制御プログラム。
【請求項９】
請求項５〜請求項８のいずれかに記載のバス制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有バスに接続された複数のバスマスタの、共有バスに対するバス使用権を制御するバス制御装置及びバス制御プログラムに関する。また、本発明は、このバス制御プログラムを記録したコンピュータ読み取り可能な記録媒体にも関する。
【背景技術】
【０００２】
近年、多くの機能を単一の集積回路により実現するシステムＬＳＩが電気機器に一般的に使用されている。このようなシステムＬＳＩのアーキテクチャとして、各機能モジュール間の通信の実現とＬＳＩの低コスト化を目論み、バスマスタとして複数の機能モジュールが共通のバスに接続された共有バスアーキテクチャが採用されることが少なくない。
【０００３】
共有バスアーキテクチャでは、各バスマスタが共有バスを排他的に使用するための調停を行うバス調停装置が設けられる。このバス調停装置は、複数のバスマスタからの共有バス使用要求が競合した場合に、システムの正常動作及びスループットの最大化のために予め設定されたバス調停方法に基づいて、各バスマスタにバス使用権を与える。このバス調停方法として、バス調停装置によって保持された各バスマスタの優先順位に基づいて、バス使用権を要求しているバスマスタのうち、最も高い優先順位のバスマスタにバス使用権を与えるという方法がよく知られている。
【０００４】
バスマスタの優先順位を設定する方法には、バスマスタ毎に固定的に設定する方法や、カウンタと組み合わせてバスマスタ毎のバス使用率を平均化するように設定する方法など、数多くの設定方法が存在する。また、特許文献１においては、プロセッサが、バス使用権を要求する毎に自己の優先順位を設定し、バス調停装置に優先順位を通知することにより、バス調停を行うための優先順位を動的に変更する優先順位設定方法が提案されている。
【特許文献１】特開平６−２４３０９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上述した優先順位の設定方法のうち、バスマスタ毎に固定的に優先順位を設定する方法には、バスマスタがプロセッサの場合に次のような問題がある。バスマスタがプロセッサの場合は、システムの正常動作を保つために、システムエラー処理のような優先度が特に高い処理をプロセッサが遅滞なく実行することができるように、構成するシステムで起こりうる最悪のケースを想定してプロセッサの優先順位を充分に高く設定する必要がある。
【０００６】
しかし、そのような設定を行うと、本来、優先的にバス使用権を与えられるべきバスマスタに対して、充分なバス使用権を与えられないことと、優先順位が低くても構わない処理を実行するためにプロセッサがバス使用権を要求する場合にも、プロセッサに優先的にバス使用権が与えられるため、プロセッサ以外のバスマスタにバス使用権を与える割合が不必要に下がることとにより、システム全体の処理効率が低下するという問題がある。
【０００７】
また、複数のプロセッサがバスマスタとして設けられたシステムにおいて、各プロセッサが実行するプログラムは、優先度が高いタスクと低いタスクが混在して構成されることが少なくない。このようなプログラムを、優先順位が固定されたプロセッサに実行させると、プロセッサの優先順位とタスクの優先度との間に過不足が生じてしまう。この対策として、優先度が高いタスクは優先順位が高いプロセッサに実行させ、優先度が低いタスクは優先順位が低いプロセッサに実行させるというように、タスクを実行するプロセッサをタスク毎に決定する設計方法が考えられる。
【０００８】
しかし、この設計方法を、複雑かつコード量が多いプログラムを必要とするシステムに対して適用することは容易ではない。また、もし、この設計方法を適用した場合でも、本来、連続的に実行されるべきタスクが、異なるプロセッサに配置されるため、そのようなタスクを連続的に実行させることが難しくなり、プロセッサの処理効率を低下させる恐れがあるという問題がある。
【０００９】
これらの問題を解決するために、特許文献１においては、プロセッサがバス使用権を要求する毎に優先順位を設定する方法が提案されている。この方法によれば、バスマスタがプロセッサの場合でも、状況に応じたバス調停を行うことが可能となっている。しかし、この方法においても、以下のような問題がある。
【００１０】
一般的に、プロセッサが実行する命令が記述されたプログラムでは、関連性の高い命令が連続するように配置され、関連性の高い各命令の優先度が近いことが多い。また、関連性が高い複数の命令はタスクとして管理されることが多く、プロセッサが実行プログラムをメモリから取り出す場合は、タスク単位で実行プログラムを取り出している。このため、関連性が高い複数の命令は、連続するメモリ領域にまとめて格納されている。
【００１１】
また、プロセッサが実行するタスクによっては、共有メモリ上に格納されているデータに対して、データを加工するための同一の命令を用いて連続的にデータ加工を行うことがある。そのようなデータ加工の途中で、データ加工を実施しているプロセッサの優先順位を変化させる必要がない場合がある。さらに、このようなデータ加工を施されるデータは、共有メモリのメモリ領域にまとめて格納されていることが多い。
【００１２】
したがって、特許文献１のように、プロセッサがバスにアクセスする度に優先順位設定処理を行うことは、優先順位の変更に関して一般的なプログラム構成においては過剰な処理であり、プロセッサの処理効率が大きく低下するという問題がある。
【００１３】
本発明は、上述した問題点に鑑みてなされたものであって、プロセッサの処理効率に対して大きな影響を及ぼさずに、個々のバスマスタにおいて実行される処理に適したバス使用権の調停を行うことができるバス制御装置、バス制御プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、上記の課題を解決するためになされたもので、共有バスに接続された、少なくとも１つのプロセッサを含む複数のバスマスタの、前記共有バスに対するバス使用権を、前記バスマスタの優先順位に基づいて設定するバス調停手段と、前記プロセッサによるタスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、記バスマスタの優先順位を変更する優先順位制御手段とを備えたことを特徴とするバス制御装置である。
【００１５】
また、本発明のバス制御装置において、前記プロセッサは、前記タスクの実行状況を前記優先順位制御手段に通知し、前記優先順位制御手段は、前記プロセッサから通知された前記タスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更することを特徴とする。
【００１６】
また、本発明のバス制御装置において、前記優先順位制御手段は、前記プロセッサによるタスクの実行状況を監視した結果、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更することを特徴とする。
【００１７】
また、本発明のバス制御装置において、前記優先順位制御手段は、前記プロセッサによって実行される処理単位毎に、前記バスマスタによって実行されるタスクの優先度が予め記憶された優先タスク記憶手段と、前記プロセッサを含む前記バスマスタによる前記タスクの実行状況と、前記優先タスク記憶手段によって記憶された内容とに基づいて、前記バスマスタの優先順位を変更する優先順位変更手段とを備えたことを特徴とする。
【００１８】
また、本発明は、共有バスに接続された、少なくとも１つのプロセッサを含む複数のバスマスタの、前記共有バスに対するバス使用権を、前記バスマスタの優先順位に基づいて設定するバス調停装置を備えるバス制御装置内の前記プロセッサに、前記プロセッサによるタスクの実行状況、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理を実行させるためのバス制御プログラムである。
【００１９】
また、本発明のバス制御プログラムにおいて、前記バスマスタに第１のプロセッサと第２のプロセッサが含まれ、前記バスマスタの優先順位を変更する処理として、前記第２のプロセッサからの前記タスクの実行状況の通知、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理を前記第１のプロセッサに実行させることを特徴とする。
【００２０】
また、本発明のバス制御プログラムにおいて、前記バスマスタに第１のプロセッサと第２のプロセッサが含まれ、前記バスマスタの優先順位を変更する処理として、前記第２のプロセッサによる前記タスクの実行状況を監視した結果、及び、前記バスマスタにより実行される処理の優先度に基づいて、前記バスマスタの優先順位を変更する処理を前記第１のプロセッサに実行させることを特徴とする。
【００２１】
また、本発明のバス制御プログラムにおいて、前記バスマスタの優先順位を変更する処理として、前記プロセッサを含む前記バスマスタによる前記タスクの実行状況と、前記プロセッサによって実行される処理単位毎に予め設定された、前記バスマスタによって実行されるタスクの優先度とに基づいて、前記バスマスタの優先順位を変更する処理とを前記プロセッサに実行させることを特徴とする。
【００２２】
また、本発明は、上記のバス制御プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２３】
本発明によれば、プロセッサにより実行されるタスクの実行状況と、各バスマスタにより実行される処理の優先度とに応じてバスマスタの優先順位を変更することによって、プロセッサの処理効率に対して大きな影響を及ぼさずに、個々のバスマスタにおいて実行される処理に適したバス使用権の調停を行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態によるバス制御装置を備えたＬＳＩ１００の構成を示している。バスマスタであるメインプロセッサ１２０と、第１のサブプロセッサ１３０と、第２のサブプロセッサ１４０と、ハードウェアＩＰ１５０とがバス１１０に接続されている。ハードウェアＩＰ１５０は、特定の処理を行う専用の回路であり、例えば画像処理回路である。各プロセッサはプログラムを実行し、ハードウェアＩＰ１５０はハードウェア処理を実行する。
【００２５】
これらの複数のバスマスタは、個々のバスマスタでの処理を実行するために、バス１１０に接続されたスレーブであるメモリコントローラ１６０を介してメモリ１９０と通信を行う。また、各バスマスタのバス使用権を調停するバス調停装置１７０がバス１１０に接続されている。バス調停装置１７０は、各バスマスタの優先順位を記憶する優先順位レジスタ１７１を備えている。バス調停装置１７０は、複数のバスマスタからのバス使用権の要求が競合した場合に、優先順位レジスタ１７１によって記憶された各バスマスタの優先順位に基づいて、バス使用権を要求しているバスマスタのうち、最も高い優先順位を有するバスマスタにバス使用権を与える。この優先順位レジスタ１７１の値は、プロセッサが各バスマスタの優先順位の変更を要求した際に、バス調停装置１７０と接続された優先順位制御部１８０によって、新しい優先順位を表す値に設定される。
【００２６】
優先順位制御部１８０は、各プロセッサによるタスクの実行状況と、バスマスタにより実行される処理の優先度とに基づいて、優先順位レジスタ１７１に格納されているバスマスタの優先順位を変更する。この優先順位制御部１８０は、シーケンスＩＤ記憶部１８１、優先タスクテーブル１８２、タスクＩＤ記憶部１８３、タスクＩＤ取得部１８４、及び優先順位設定部１８５を備えている。各部の詳細は後述する。
【００２７】
次に、図２を参照し、メインプロセッサ１２０の動作を説明する。ＬＳＩ１００の動作要求に応じて、メインプロセッサ１２０は起動し（ステップＳ２０１）、装置全体の制御を行うメイン処理（メインタスク）の実行を開始する（ステップＳ２０２）。装置全体の制御は、通常、複数の機能を順番に駆動することによって実現される。このような複数の機能を順番に駆動するための命令の集合を、以下、シーケンスと称する。
【００２８】
また、本実施形態においては、図５のように、メインプロセッサ１２０が実行中のシーケンスを表すシーケンスＩＤ（ＳＥＱ＿ＩＤ）がメインプログラムに予め埋め込まれている。このシーケンスＩＤは、各バスマスタの優先順位の変更を要する場合に更新される。しかし、後述するタスクＩＤの量が少ない場合は、特にシーケンスＩＤを変化させる必要はなく、また、その場合はシーケンスＩＤそのものをメインプログラムに残しておく必要はない。後述するように、シーケンスＩＤには、優先タスクテーブル１８２のアドレスと同じ値が用いられている。
【００２９】
メイン処理の実行が終了しない限り（ステップＳ２０３でＮＯの場合）、メインプロセッサ１２０は、メインプログラム中にシーケンスＩＤの更新命令が記述されているか否かを判断する（ステップＳ２０４）。シーケンスＩＤの更新命令を検出した場合、メインプロセッサ１２０は優先順位変更要求と新たなシーケンスＩＤを優先順位制御部へ送信し（ステップＳ２０５）、新たなシーケンスの処理を実行する（ステップＳ２０２）。一方、ステップＳ２０４において、シーケンスＩＤの更新命令を検出しなかった場合（ステップＳ２０４でＮＯの場合）、メインプロセッサ１２０はメイン処理の実行を継続する（ステップＳ２０２）。以上のような動作を、メイン処理が終了する（ステップＳ２０３でＹＥＳの場合）まで継続する。
【００３０】
次に、図３を参照し、第１のサブプロセッサ１３０及び第２のサブプロセッサ１４０の動作を説明する。ＬＳＩ１００の動作要求またはメインプロセッサ１２０からの動作要求に応じてサブプロセッサは起動し（ステップＳ３０１）、初めに割り振られたタスクの実行を開始する（ステップＳ３０２）。全タスクの実行が完了する前に（ステップＳ３０３でＮＯの場合）、タスクの実行により、タスクの切り替えが生じた場合は（ステップＳ３０４でＹＥＳの場合）、サブプロセッサは該当タスクのタスクＩＤを所定の場所から取り出す（ステップＳ３０５）。また、タスクの切り替えが生じていない場合（ステップＳ３０４でＮＯの場合）には、サブプロセッサはタスクの実行を続行する（ステップＳ３０２）。
【００３１】
このタスクＩＤは、タスク毎にタスク内部のプログラムに埋め込んでも構わないし、ＯＳが一括管理するように用意したテーブルに設定しておいても構わない。また、このタスクＩＤとして、複数のタスクに共通のＩＤを割り振ってもよいし、単一のタスク毎にＩＤを割り振ってもよい。例えば、ある機能を実現するために必要な複数のタスクには共通のＩＤを割り振り、あるエラー処理を行うタスクには特徴的なＩＤを割り振るということが可能である。また、タスクＩＤは、プログラムのタスクに割り振られるだけではなく、便宜的に、ハードウェアＩＰ１５０で実行されているハードウェア処理に対しても割り振られる。
【００３２】
ステップＳ３０５に続いて、サブプロセッサは、次に実行するタスクのタスクＩＤと、それまで実行していたタスクのタスクＩＤとを比較する（ステップＳ３０６）。それらのタスクＩＤが一致する場合は、サブプロセッサは、優先順位を変更する必要がないと判定し、次のタスクの実行を開始する（ステップＳ３０８）。一方、ＩＤが一致しない場合は、サブプロセッサは、優先順位を変更する必要があると判定し、優先順位変更要求と、次に実行するタスクのタスクＩＤとを優先順位制御部１８０へ送信し（ステップＳ３０７）、次のタスクの実行を開始する（ステップＳ３０８）。ステップＳ３０８に続いて、処理はステップＳ３０２に戻る。サブプロセッサは、以上のような動作を繰り返し、全てのタスクの実行を終えた場合は（ステップＳ３０３でＹＥＳの場合）、その動作を終了する。
【００３３】
次に、各バスマスタにおいて実行されるタスクが図７のような時間変化をする場合を例に、優先順位の設定方法をより具体的に説明する。時間Ｔ０において、メインプロセッサ１２０はメイン処理を実行中であり、第１のサブプロセッサ１３０はタスクｘを実行中であり、第２のサブプロセッサ１４０はタスクｙを実行中であり、ハードウェアＩＰ１５０はハードウェア処理を実行中である。優先順位制御部１８０のタスクＩＤ記憶部１８３は、第１のサブプロセッサ１３０及び第２のサブプロセッサ１４０によって実行されるタスクのＩＤを記憶する。ここで、バス１１０に接続された各バスマスタを図８のようにタスクＩＤ記憶部１８３のアドレスにラベル付けすると、時間Ｔ０においてタスクＩＤ記憶部１８３によって記憶されているデータは図９の通りである。
【００３４】
優先順位制御部１８０の優先タスクテーブル１８２は、メインプロセッサ１２０によって実行されるメイン処理内のシーケンス毎に、各バスマスタによって実行されるタスクの優先度を予め記憶する。図６は、優先タスクテーブル１８２によって記憶されているデータを示している。優先タスクテーブル１８２のアドレスは、メインプロセッサ１２０によって実行されるメイン処理内のシーケンスに対応したシーケンスＩＤと一致している。シーケンスＩＤ毎に、各プロセッサ及びハードウェアＩＰ１５０によって実行されるタスクの優先順位が予め優先タスクテーブル１８２によって記憶されている。
【００３５】
図５によれば、時間Ｔ０においてメインプロセッサ１２０により実行されるメイン処理のシーケンスＩＤは０ｘ１０なので、このシーケンスにおいて実行されるタスクのＩＤが優先順に並べられたデータは図６のアドレス０ｘ１０のデータである。このデータによると、該当シーケンス内で実行されるタスクは、優先順位が高い順に、タスクｎ、メイン処理、タスクｘ、タスクｙ、ハードウェア処理、タスクｍとなっている。
【００３６】
このタスクの優先順位に基づいて、図９に示される各タスクの優先順位を比較すると、時間Ｔ０において実行中のタスクは、優先順位が高い順に、メイン処理、タスクｘ、タスクｙ、ハードウェア処理となる。この順序通りに、それぞれのタスクを実行しているバスマスタに置き換えると、バスマスタの優先順位が明らかになる。つまり、時間Ｔ０におけるバスマスタの優先順位は、高い順に、メインプロセッサ１２０、第１のサブプロセッサ１３０、第２のサブプロセッサ１４０、ハードウェアＩＰ１５０と設定される。図１３はこのときの優先順位レジスタ１７１の記憶内容を示している。
【００３７】
処理時間が経過し、時間Ｔ１において、第１のサブプロセッサ１３０はタスクｘの実行を終え、タスクｍの実行を開始する。この新たなタスクｍに対して、タスクｘと異なるタスクＩＤが割り振られているとすると、この実行タスクの切り替えには優先順位変更が伴う。そのため、第１のサブプロセッサ１３０は、優先順位制御部１８０に対して優先順位の変更を要求し、同時にタスクｍのタスクＩＤを通知する。優先順位制御部１８０は、優先順位変更要求を検出すると、要求元のバスマスタを判別し、タスクＩＤ記憶部１８３の該当アドレスに新たな実行タスクのタスクＩＤを格納する。図１０はこのときのタスクＩＤ記憶部１８３の記憶内容を示している。
【００３８】
図５によれば、時間Ｔ０とＴ１の間でシーケンスＩＤには変更がないので、参照済みのシーケンスＩＤにおけるタスクの優先順位と、各バスマスタにおいて実行されるタスクとが比較される。その比較結果より、時間Ｔ１において実行中のタスクは、優先順位が高い順に、メイン処理、タスクｙ、ハードウェア処理、タスクｍとなる。したがって、各バスマスタの優先順位は、高い順に、メインプロセッサ１２０、第２のサブプロセッサ１４０、ハードウェアＩＰ１５０、第１のサブプロセッサ１３０と設定される。図１４はこのときの優先順位レジスタ１７１の記憶内容を示している。
【００３９】
続いて、時間Ｔ２において、第２のサブプロセッサ１４０はタスクｙの実行を終え、タスクｎの実行を開始する。この新たなタスクｎに対して、タスクｙと異なるタスクＩＤを割り振られているとすると、この実行タスクの切り替えには優先順位変更が伴う。そのため、第２のサブプロセッサ１４０は、優先順位制御部１８０に対して優先順位の変更を要求し、同時にタスクｎのタスクＩＤを通知する。優先順位制御部１８０は、優先順位変更要求を検出すると、要求元のバスマスタを判別し、タスクＩＤ記憶部１８３の該当アドレスに新たな実行タスクのタスクＩＤを格納する。図１１はこのときのタスクＩＤ記憶部１８３の記憶内容を示している。
【００４０】
図５によれば、時間Ｔ１とＴ２の間でシーケンスＩＤには変更がないので、参照済みのシーケンスＩＤにおけるタスクの優先順位と、各バスマスタにおいて実行されるタスクとが比較される。その比較結果より、時間Ｔ２において実行中のタスクは、優先順位が高い順に、タスクｎ、メイン処理、ハードウェア処理、タスクｍとなる。したがって、各バスマスタの優先順位は、高い順に、第２のサブプロセッサ１４０、メインプロセッサ１２０、ハードウェアＩＰ１５０、第１のサブプロセッサ１３０と設定される。図１５はこのときの優先順位レジスタ１７１の記憶内容を示している。
【００４１】
さらに処理時間が経過すると、時間Ｔ３において、メイン処理のシーケンスが変化する（図５）。この場合、メインプロセッサ１２０は優先順位制御部１８０に優先順位の変更を要求する。また、同時にメインプロセッサ１２０は新たなシーケンスのシーケンスＩＤを優先順位制御部１８０に通知する。ここで、新たなシーケンスＩＤは、図５に示されるように０ｘ１１である。優先順位制御部１８０は、優先順位変更要求を検出すると、新たなシーケンスＩＤである０ｘ１１をアドレスとして、優先タスクテーブル１８２を参照する（図６）。
【００４２】
図６によれば、新たなシーケンスにおいて実行されるタスクは、優先度が高い順に、メイン処理、タスクｎ、タスクｍ、タスクｕ、タスクｖ、ハードウェア処理である。時間Ｔ２とＴ３のそれぞれにおけるタスクＩＤ記憶部１８３の記憶内容を示す図１１と図１２によれば、各バスマスタにおいて実行されているタスクは、時間Ｔ２と時間Ｔ３において変化はない。時間Ｔ０〜Ｔ２と同様にして、該当シーケンスにおけるタスクの優先順位と、実行中のタスクとを比較すると、実行中のタスクの優先順位は、高い順に、メイン処理、タスクｎ、タスクｍ、ハードウェア処理となる。したがって時間Ｔ３における各バスマスタの優先順位は、高い順に、メインプロセッサ１２０、第２のサブプロセッサ１４０、第１のサブプロセッサ１３０、ハードウェアＩＰ１５０となる。図１６はこのときの優先順位レジスタ１７１の記憶内容を示している。
【００４３】
次に、図４を参照し、上述した優先順位の設定方法に係る優先順位制御部１８０の動作を説明する。ＬＳＩ１００の動作が開始すると、優先順位制御部１８０は起動し（ステップＳ４０１）、優先順位変更要求を検出するか、制御を終了するまで待機する（ステップＳ４０２）。制御を続行し（ステップＳ４０３でＮＯの場合）、優先順位変更要求を検出した場合（ステップＳ４０４でＹＥＳの場合）、優先順位制御部１８０は、その優先順位変更要求がメインプロセッサ１２０からの要求か、第１もしくは第２のサブプロセッサ（１３０，１４０）からの要求かを判別する（ステップＳ４０５）。
【００４４】
その優先順位変更要求が第１もしくは第２のサブプロセッサ（１３０，１４０）からの要求である場合、優先順位制御部１８０は、優先順位の変更を要求しているバスマスタを判別し（ステップＳ４０６）、タスクＩＤ記憶部１８３の該当領域に新たなタスクＩＤを格納する（ステップＳ４０７）。続いて、ステップＳ４１０の処理が行われる。一方、優先順位変更要求がメインプロセッサ１２０からの要求である場合、優先順位制御部１８０はシーケンスＩＤ記憶部１８１に新たなシーケンスＩＤを格納する（ステップＳ４０８）。続いて、タスクＩＤ取得部１８４は、新たなシーケンスＩＤをアドレスとして優先タスクテーブル１８２を参照し、該当シーケンス内で実行されるタスクのＩＤと、そのタスクに対応する優先度とが記録されているデータを取り出して優先順位設定部１８５へ出力する（ステップＳ４０９）。続いて、ステップＳ４１０の処理が行われる。
【００４５】
ステップＳ４０７及びステップＳ４０９に続いて、優先順位設定部１８５は、各バスマスタが実行するタスクのＩＤと、該当シーケンスにおいて優先的に実行されるタスクのＩＤとを比較し、優先度が高いタスクを実行するバスマスタから順に、高い優先順位を設定（決定）する（ステップＳ４１１）。これにより、優先順位設定部１８５は、各プロセッサを含むバスマスタによるタスクの実行状況と優先タスクテーブル１８２の記憶内容とに基づいて各バスマスタの優先順位を設定することになる。全てのバスマスタについて新たな優先順位が設定（決定）されたら、優先順位設定部１８５は適切なタイミングでバス調停装置１７０の優先順位レジスタ１７１に新たな優先順位を設定する（ステップＳ４１２）。ステップＳ４１２に続いて、処理はステップＳ４０２に戻る。優先順位制御部１８０は、制御が終了する（ステップＳ４０３でＹＥＳの場合）まで、以上のような動作を繰り返す。
【００４６】
なお、ハードウェアＩＰ１５０、メモリコントローラ１６０、及びメモリ１９０の動作は本発明の要点とは関係がないため、これらの各部の動作説明は省略する。
【００４７】
次に、本実施形態に対する付加説明を行う。本実施形態では、メインプロセッサ１２０によって実行されるメイン処理内のシーケンス毎に、各バスマスタによって実行されるタスクの優先度が予め設定されている（図５及び図６参照）。以下、このような設定を行う具体例を説明する。システムに電源が投入された直後、まずシステム内の各部に初期設定が行われる。この初期設定に係る処理は、メインプロセッサ１２０のメイン処理によって実行される。初期設定を他のバスマスタよりも優先して行うため、メイン処理の優先順位は最も高く設定される。
【００４８】
システム内の各部の初期設定が終了し、メイン処理の優先度を最も高く設定しておく必要がなくなった場合は、メイン処理の優先順位が下がるように設定される。この例では、電源投入直後からシステム内の全てに初期設定が終了するまでが１つのシーケンスとして設定されると共に、初期設定の終了後に別のシーケンスが設定され、各シーケンスに対して異なるシーケンスＩＤが付与される。
【００４９】
また、本実施形態においては、優先順位制御部１８０がハードウェアとして設けられているが、システム構成に応じて、プロセッサで実行するソフトウェア処理として優先順位制御部１８０を実装することも、勿論、可能である。優先順位制御部１８０をソフトウェア処理として実装した場合には、ハードウェアとして実装した場合と比較して、回路規模を削減することができる。優先順位制御部１８０をソフトウェア処理として実装する場合、図４に示す優先順位制御部１８０の動作をプログラム化してコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをシステム内部のいずれか１つのプロセッサに読み込ませ、実行させればよい。
【００５０】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００５１】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００５２】
また、本実施形態においては、各プロセッサが、タスクの実行状況に応じて優先順位変更要求を優先順位制御部１８０に通知することにより優先順位設定処理を行っていたが、システムの構成に応じて、優先順位制御部１８０が各プロセッサのタスクの実行状況を監視し、優先順位変更を要すると判断した場合に優先順位設定処理を行うようにしても構わない。したがって、優先順位制御部１８０をソフトウェア処理として実装する場合は、優先順位設定を行う要因を割り込みとして処理しても構わないし、ポーリングとして処理しても構わない。すなわち、優先順位制御部１８０の機能を実現するプログラムを実施するプロセッサ（第１のプロセッサとする）に対して、他のプロセッサ（第２のプロセッサ）が優先順位の変更要求を通知してもよいし、第１のプロセッサが、第２のプロセッサによるタスクの実行状況を監視してもよい。
【００５３】
また、本実施形態においては、バス調停装置１７０では、優先順位が最も高いバスマスタにバス使用権を与える方法により、バス使用権の調停を行っていた。しかし、この方法に限らず、優先順位レジスタを有するバス調停装置が設けられたバスシステムならば、本実施形態と、バス使用権の獲得回数を平均化するような公知技術とを組み合わせて使用することも可能である。
【００５４】
また、本実施形態におけるシーケンスＩＤは、メインプロセッサが実行するメインプログラムの実行中のシーケンスを示すＩＤとしていたが、メインプロセッサが実行するメインプログラム中のタスクのＩＤを通知するように変形させても構わない。
【００５５】
また、本実施形態におけるタスクＩＤそのものを優先順位とすることもできるが、システムを構成する上では好ましくない。なぜなら、タスクＩＤを優先順位とすると、バスマスタの優先順位が固定的になってしまうため、バスマスタの実行しているタスクは変わらないが、バスマスタの優先順位を変更する必要が生じた場合に、優先順位変更に対応することが難しくなるからである。また、システムを拡張して外部装置が接続される場合、その外部装置を接続するインタフェースの優先順位を予め想定しておくことは難しく、もし、適当な優先順位を設定したとしても、優先度の過不足が生じる可能性がある。したがって、本実施形態においてはタスクＩＤと優先順位とはそれぞれ区別されている。
【００５６】
また、本実施形態におけるタスクＩＤやシーケンスＩＤを直接的に取り扱っていたが、必要に応じて、ＩＤのエンコードやデコードを行う構成にしても構わない。例えば、システム全体が取り扱うＩＤが大量にある場合、転送線、レジスタやメモリのビット数も増大するため、ＩＤのエンコードやデコードを行い、ＬＳＩやメモリの規模を抑えることが望ましい。
【００５７】
上述したように、本実施形態によるバス制御装置では、プロセッサにより実行されるタスクの実行状況と、各バスマスタにより実行される処理（タスク）の優先度とに応じて、プロセッサの処理効率に対して大きな影響を及ぼさずに、バスマスタの優先順位を動的に変更することができ、個々のバスマスタにおいて実行される処理に適したバス使用権の調停を行うことができる。
【００５８】
特に、バスマスタの優先順位が、各バスマスタにより実行される処理の優先度に基づいて決定されるため、プロセッサと、そのプロセッサで実行させるタスクとを固定的に設計する必要がない。これにより、プロセッサの優先順位が固定されたシステムと比較して、容易にシステムを設計することが可能である。したがって、従来、プロセッサの優先順位が固定されたシステムでは、システム全体あるいはプロセッサの処理効率が低下するという問題が発生していたが、本実施形態によれば、システム全体あるいはプロセッサの処理効率に対する影響を少なくすることができる。
【００５９】
また、本実施形態によれば、関連性が高い複数の命令が記述されたプログラムをメモリから読み出す場合や、共有メモリ上のデータに対して、同一の命令を用いて連続的にデータ加工を行う場合には、一連の処理の実行に係るタスクの優先度を同一に設定することによって、プロセッサの優先順位を変化させないようにすることができる。これにより、プロセッサがバス使用権を要求する毎に優先順位を設定するシステムと比較して、プロセッサの処理効率の低下を抑えることができる。
【００６０】
なお、優先順位制御部をＬＳＩの外部に設けることも可能だが、そのようなシステムを構築した場合には、ＬＳＩと優先順位制御部の同期制御を行う必要があるし、両者間の通信の遅延が増大する。そのため、優先順位の切り替えが遅くなり、プロセッサの処理効率が低下する可能性がある。本実施形態によるバス制御装置では、ＬＳＩ内部のプロセッサが、実行すべきタスクを連続的に実行しながら、優先順位制御部が動的に適切な優先順位を設定するため、バスマスタの優先順位制御や、プロセッサが実行すべきタスクの割り振りをＬＳＩ外部から行う必要がなく、ＬＳＩ内部で動的な優先順位制御を完結することが可能である。
【００６１】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態によるバス制御装置を備えたＬＳＩの構成を示すブロック図である。
【図２】本発明の一実施形態によるＬＳＩが備えるメインプロセッサの動作の手順を示すフローチャートである。
【図３】本発明の一実施形態によるＬＳＩが備えるサブプロセッサの動作の手順を示すフローチャートである。
【図４】本発明の一実施形態によるＬＳＩが備える優先順位制御部の動作の手順を示すフローチャートである。
【図５】本発明の一実施形態によるＬＳＩが備えるメインプロセッサによって実行されるメイン処理内部のシーケンスを示す参考図である。
【図６】本発明の一実施形態において、優先順位制御部が備える優先タスクテーブルの記憶内容を示す参考図である。
【図７】本発明の一実施形態において、各バスマスタで実行されるタスクの時間的な変化の例を示す参考図である。
【図８】本発明の一実施形態において、タスクＩＤ記憶部のアドレスと、それに対応するバスマスタの一覧を示す参考図である。
【図９】本発明の一実施形態において、時間Ｔ０におけるタスクＩＤ記憶部の記憶内容を示す参考図である。
【図１０】本発明の一実施形態において、時間Ｔ１におけるタスクＩＤ記憶部の記憶内容を示す参考図である。
【図１１】本発明の一実施形態において、時間Ｔ２におけるタスクＩＤ記憶部の記憶内容を示す参考図である。
【図１２】本発明の一実施形態において、時間Ｔ３におけるタスクＩＤ記憶部の記憶内容を示す参考図である。
【図１３】本発明の一実施形態において、時間Ｔ０における優先順位レジスタの記憶内容を示す参考図である。
【図１４】本発明の一実施形態において、時間Ｔ１における優先順位レジスタの記憶内容を示す参考図である。
【図１５】本発明の一実施形態において、時間Ｔ２における優先順位レジスタの記憶内容を示す参考図である。
【図１６】本発明の一実施形態において、時間Ｔ３における優先順位レジスタの記憶内容を示す参考図である。
【図１７】本発明の一実施形態において、時間Ｔ４における優先順位レジスタの記憶内容を示す参考図である。
【符号の説明】
【００６３】
１００・・・ＬＳＩ、１１０・・・バス、１２０・・・メインプロセッサ、１３０・・・第１のサブプロセッサ、１４０・・・第２のサブプロセッサ、１５０・・・ハードウェアＩＰ、１６０・・・メモリコントローラ、１７０・・・バス調停装置（バス調停手段）、１７１・・・優先順位レジスタ、１８０・・・優先順位制御部（優先順位制御手段）、１８１・・・シーケンスＩＤ記憶部、１８２・・・優先タスクテーブル（優先タスク記憶手段）、１８３・・・タスクＩＤ記憶部、１８４・・・タスクＩＤ取得部、１８５・・・優先順位設定部（優先順位変更手段）、１９０・・・メモリ
【図１】
2007219925.tif 000003
【図２】
2007219925.tif 000004
【図３】
2007219925.tif 000005
【図４】
2007219925.tif 000006
【図５】
2007219925.tif 000007
【図６】
2007219925.tif 000008
【図７】
2007219925.tif 000009
【図８】
2007219925.tif 000010
【図９】
2007219925.tif 000011
【図１０】
2007219925.tif 000012
【図１１】
2007219925.tif 000013
【図１２】
2007219925.tif 000014
【図１３】
2007219925.tif 000015
【図１４】
2007219925.tif 000016
【図１５】
2007219925.tif 000017
【図１６】
2007219925.tif 000018
【図１７】
2007219925.tif 000019