(57)【要約】  【課題】  複数のバスマスタがバスを調停して利用する環境において、多重割込に対しても、割込処理以外での処理内容に対しても、バス調停優先度を適応的に制御出来る、リアルタイムプロセッサシステム及び制御方法を提供する。  【解決手段】  リアルタイムプロセッサシステムは、バスアービタ１００、プロセッサと割込処理部とを有する複数の演算処理ユニット１１０、１２０、ＤＭＡコントローラ１３０、複数の優先度レジスタ１４１〜１４３、メモリ１７０、及び、ＳＣＩ１８０を備え、バスアービタ１００は、優先度比較部１５０、及び、バス割当決定部１６０を有する。それぞれの優先度レジスタには、それぞれの演算処理ユニットのＩ／Ｏアクセス優先度値が格納されており、それを比較して、Ｉ／Ｏアクセス権が決定される。優先度レジスタの設定を変えることにより、適応的に多重割り込みが処理される。【選択図】  図１
2005092780.tif 000002
【特許請求の範囲】
【請求項１】
バスアービタと、
演算処理ユニットであって、プロセッサと割込処理部とを有し、前記バスアービタに接続する、少なくとも２つの演算処理ユニットと、
前記プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、前記割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、
前記バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、
前記バスアービタは、
前記優先度レジスタに格納されている優先度値を比較する優先度比較部と、
前記優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する、リアルタイムプロセッサシステム。
【請求項２】
バスアービタと、
演算処理ユニットであって、プロセッサと割込処理部とを有し、前記バスアービタに接続する、少なくとも１つの演算処理ユニットと、
前記プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、前記割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、
前記バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、
前記バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、
前記バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、
前記バスアービタは、
前記複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、
前記優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する、リアルタイムプロセッサシステム。
【請求項３】
バスアービタと、
演算処理ユニットであって、プロセッサと割込処理部とを有し、前記バスアービタに接続する、少なくとも１つの演算処理ユニットと、
前記プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、前記割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、
前記割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を、すでに前記優先度レジスタに格納されているＩ／Ｏアクセス優先度値と比較して、優先度が高い場合にのみ前記優先度レジスタに格納する、比較格納手段と、
前記バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、
前記バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、
前記バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、
前記バスアービタは、
前記複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、
前記優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する、リアルタイムプロセッサシステム。
【請求項４】
バスアービタと、
演算処理ユニットであって、プロセッサと割込処理部とを有し、前記バスアービタに接続する、少なくとも１つの演算処理ユニットと、
前記プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、前記割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、
前記優先度レジスタに格納されているＩ／Ｏアクセス優先度値を、時間経過に共に優先度の高い値に変更する、優先度変更手段と、
前記バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、
前記バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、
前記バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、
前記バスアービタは、
前記複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、
前記優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する、リアルタイムプロセッサシステム。
【請求項５】
前記演算処理ユニットは、割り込み要因にしたがって異なるＩ／Ｏアクセス優先度値を前記優先度レジスタに格納する格納手段を有する、請求項１から４記載のリアルタイムプロセッサシステム。
【請求項６】
前記格納手段は、
前記プロセッサのプログラム制御によるＩ／Ｏアクセス優先度値と、前記割込処理部の割り込み要因によって異なるＩ／Ｏアクセス優先度値とを、予め格納する優先度設定レジスタ群を有し、
新たな割り込みの要求に対して、前記優先度設定レジスタ群は、上記割り込みの要因に対応する優先度値が、すでに実行中の割込処理の優先度値よりも優先度が高い場合にのみ、上記割り込みの要因に対応する優先度値を前記優先度レジスタに格納する、請求項５記載のリアルタイムプロセッサシステム。
【請求項７】
請求項１から６記載のリアルタイムプロセッサシステムにおいて動作する制御方法であって、
次に実行するタスクを検索するタスク検索ステップと、
前記タスク検索ステップで検出されたタスクに対応するＩ／Ｏアクセス優先度を、実行中のプロセッサに対応する前記優先度レジスタに格納するステップと、前記タスク検索ステップで検出されたタスクに実行を切り替えるステップと、を含む制御方法。
【請求項８】
請求項６記載のリアルタイムプロセッサシステムにおいて動作する制御方法であって、
次に実行するタスクを検索するタスク検索ステップと、
前記タスク検索ステップで検出されたタスクに対応するデッドライン時刻と現在時刻の差分を求める残時間算出ステップと、
前記残時間算出ステップで求めた残時間に対応するＩ／Ｏアクセス優先度を、実行中のプロセッサに対応する前記優先度レジスタに格納するステップと、
前記タスク検索ステップで検出されたタスクに実行を切り替えるステップと、を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスマスタがバスを調停して利用する環境における、リアルタイムプロセッサシステム及び制御方法に関する。
【背景技術】
【０００２】
従来、バスマスタとなるデバイスとして、１つのプロセッサしかない環境において、ソフトウェアのリアルタイム保証を行う場合、処理単位で優先度を割り当てることと、処理を起動する順序を適切にスケジューリングすることとによって時間保証を行っている。
【０００３】
例えば、非特許文献１は、各処理の優先度を固定する場合は、処理の実行時間が短いものから順に高い優先度を割り当てる方式が、各処理の開始要求から完了までの最大遅れ時間を最小にする点で、最適であることを開示している。（非特許文献１の１０９−１４６ページ参照。）
同じく、非特許文献１は、各処理の優先度を動的に変更出来る場合は、新しい処理要求が発生するごとに優先度を再決定し、各処理の完了までに許容されるデッドライン時間の近いものから順に高い優先度を与える方法が、各処理の開始要求から完了までの最大遅れ時間を最小にする点で、最適であることを開示している。（非特許文献１の１４９−１７８ページ参照。）
さらに、特許文献１は、マルチプロセッサ構成における割り込み処理のみに適用出来る高速化手法として、割り込みがどのプロセッサに発生したかという情報をバスアービタに伝達し、割り込みが発生したプロセッサのバス調停優先度を一時的に上昇させる手法を開示している。
【０００４】
図１４は、従来の割込処理を行うシステムのブロック図である。このシステムは、割込処理回路１４０１、プロセッサ１４０２、１４０３、バスアービタ１４０４、メモリ１４０７、及び、ＳＣＩ（シリアルコミニケーションインターフェース）１４０８を備え、バスアービタ１４０４は、固定優先度設定部１４０５とバス割当決定部１４０６を有する。
【０００５】
割込処理回路１４０１は、外部からの割込要求に対して割り込み条件が成立すると、割込要求の要因に応じて、プロセッサ１４０２か、プロセッサ１４０３のどちらかに割り込みを発生させる。また、同時に、割込処理回路１４０１は、バスアービタ１４０４に対して、割り込みを発生させたプロセッサのＩ／Ｏアクセス（入出力装置へのアクセス）優先度を固定優先にするように要求する。
【０００６】
バスアービタ１４０４は、固定優先度設定部１４０５により指定されたプロセッサを、固定優先に設定する。すると、バス割当決定部１４０６は、割り込みの発生したプロセッサに優先的にＩ／Ｏアクセス権を割り当てる。このようにして、割込要求に対する処理を優先度を上げて実行する。
【０００７】
上述した非特許文献１が開示しているシングルプロセッサのソフトウェアスケジューリング理論を、複数のプロセッサやデバイスで共用されるＩ／Ｏデバイスが存在するハードウェア環境に適用する場合は、Ｉ／Ｏデバイス（入出力装置）などのハードウェアリソースに対するアクセス調停における優先度の決定方法にも当該理論を適用する必要がある。
【０００８】
しかしながら、プログラム自体が共有Ｉ／Ｏデバイスの一つであるメモリに格納されている場合など、プログラムの実行そのものがＩ／Ｏアクセスを必要とする場合は、割り込み処理用のプログラム実行にＩ／Ｏアクセスを必要とするため、Ｉ／Ｏアクセス優先度を変更するためのプログラム実行に著しい遅延が生じる。
【０００９】
そこで、特許文献１が開示している技術との組み合わせが、容易に類推可能である。図１４に示したシステム構成では、バスアービタ１４０４に伝達される情報は、割り込みがどのプロセッサに発生したかという情報のみで、しかも、情報の伝達は、割り込み発生時のみ実施されていた。そのため、Ｉ／Ｏアクセス優先度を上昇させるといったＩ／Ｏアクセス優先度の変更は、１つのバスマスクに対してしか行えない。したがって、先に発生した割り込み処理中に別の割り込みが発生した場合（多重割込の場合）、後から発生した割り込み処理は、先に発生した割り込み処理が完了するまでの間は、低いＩ／Ｏアクセス優先度のまま動作してしまい、処理が大幅に遅延する。
【００１０】
また、図１４に示したシステム構成では、バスアービタ１４０４に伝達される情報は、割り込みがどのプロセッサに発生したかというイベントによって通知する必要があるため、割り込み発生状況をシステム内の１箇所で管理する必要がある。したがって、プロセッサ毎に、別々の割り込みコントローラを配置することが出来ない。
【００１１】
さらに、図１４に示したシステム構成では、割り込み発生時の一時的なＩ／Ｏアクセス優先度の上昇しか行えないため、特許文献１が開示している技術と組み合わせる場合には、リアルタイム処理をソフトウェアの割込処理部分に集約する必要がある。したがって、割込処理以外での処理内容に応じたバス調停優先度の適応的な制御には、プロセッサ間の通信により協調動作を行わせる機構が別途必要となる。
【特許文献１】特開２００１−１２５８８０号公報
【非特許文献１】Ｇｉｏｒｇｉｏ  Ｃ．  Ｂｕｔｔａｚｚｏ  著、「ＨＡＲＤ  ＲＥＡＬ一ＴＩＭＥ  ＣＯＭＰＵＴＩＮＧ  ＳＹＳＴＥＭ  Ｐｒｅｄｉｃｔａｂｌｅ  Ｓｃｈｅｄｕｌｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｓ」  Ｆｏｕｒｔｈ  Ｐｒｉｎｔｉｎｇ  ２００２、Ｋｌｕｗｅｒ  Ａｃａｄｅｍｉｃ  Ｐｕｂｌｉｓｈｅｒｓ  ｐｐ．１０９−１４６、及びｐｐ．１４９−１７８
【特許文献３】特開平７−６０９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
そこで本発明は、複数のバスマスタがバスを調停して利用する環境において、バスマスタ毎に別々の割込処理手段を持ち、多重割込に対しても、割込処理以外の処理に対しても、バス調停優先度を適応的に制御出来る、リアルタイムプロセッサシステム及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
請求項１記載のリアルタイムプロセッサシステムは、バスアービタと、演算処理ユニットであって、プロセッサと割込処理部とを有し、バスアービタに接続する、少なくとも２つの演算処理ユニットと、プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、バスアービタは、優先度レジスタに格納されている優先度値を比較する優先度比較部と、優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する。
【００１４】
この構成によれば、プロセッサごとに優先度レジスタを設け、バスマスタごとの優先度を比較してアクセス権を決定することが出来るので、あるプロセッサでの割り込み処理中に他のプロセッサに割り込みが発生した場合でも、後から割り込みが発生したプロセッサの優先度の変化を、即座に、バス調停のアクセス権判定に反映させることが出来る。
【００１５】
また、割込処理部をプロセッサ毎に別々に動作させることが可能となり、多重割込処理が簡単となる。
【００１６】
さらに、プロセッサに対応する優先度レジスタの内容を変更するだけで、他のバスマスタとのバス調停のアクセス権判定に変化をもたらすことが出来るので、プロセッサは、他のバスマスタと同期処理を行うことなく、バスマスタごとのＩ／Ｏアクセス頻度の比率を調整する事が可能となる。
【００１７】
請求項２記載のリアルタイムプロセッサシステムは、バスアービタと、演算処理ユニットであって、プロセッサと割込処理部とを有し、バスアービタに接続する、少なくとも１つの演算処理ユニットと、プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、バスアービタは、複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する。
【００１８】
この構成によれば、例えば、メモリ装置やＳＣＩ（シリアルコミュニケーションインタフェース）などのＩ／Ｏデバイスと、バスアービタに接続し、Ｉ／Ｏデバイスへの直接アクセスを実施するＤＭＡコントローラなどのバスアクセス発生ユニットとを共用した、リアルタイムプロセッサシステムを提供出来る。すなわち、Ｉ／Ｏデバイスと、バスアクセス発生ユニットとを共用しても、ソフトウェアによるリアルタイム処理と、ソフトウェアによらない非リアルタイム処理との協調を確保して、時間保証が可能なリアルタイムプロセッサシステムを提供出来る。
【００１９】
請求項３記載のリアルタイムプロセッサシステムは、バスアービタと、演算処理ユニットであって、プロセッサと割込処理部とを有し、バスアービタに接続する、少なくとも１つの演算処理ユニットと、プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を、すでに優先度レジスタに格納されているＩ／Ｏアクセス優先度値と比較して、優先度が高い場合にのみ優先度レジスタに格納する、比較格納手段と、バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、バスアービタは、複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する。
【００２０】
この構成によれば、割込処理部が優先度レジスタに優先度を設定する時に、すでに格納されている優先度と比較し、優先度が上昇する場合のみ新しい優先度を格納することが出来る。従って、割り込み以外の処理に対して、割込処理のＩ／Ｏアクセス優先度よりも高い優先度値を設定していても、割り込みによってＩ／Ｏアクセス優先度が下がることがないため、プロセッサが処理する通常処理を、割込処理よりも高い優先度の下で実行することが可能となる。
【００２１】
請求項４記載のリアルタイムプロセッサシステムは、バスアービタと、演算処理ユニットであって、プロセッサと割込処理部とを有し、バスアービタに接続する、少なくとも１つの演算処理ユニットと、プロセッサが行う通常処理のためのＩ／Ｏアクセス優先度値、又は、割込処理部が行う割り込み処理のためのＩ／Ｏアクセス優先度値を格納する優先度レジスタと、優先度レジスタに格納されているＩ／Ｏアクセス優先度値を、時間経過に共に優先度の高い値に変更する、優先度変更手段と、バスアービタに接続し、能動的にバスアクセスを発生させる少なくとも１つのバスアクセス発生ユニットと、バスアクセス発生ユニットのバスアクセス優先度値を格納する優先度レジスタと、バスアービタに接続する少なくとも１つのＩ／Ｏデバイスと、を備え、バスアービタは、複数の優先度レジスタに格納されている優先度値を比較する優先度比較部と、優先度比較部の比較結果に基づいて、バスの使用権を決定するバス割当決定部とを有する。
【００２２】
この構成によれば、優先度レジスタに時間経過と共に優先度を上昇させる手段を備えることが出来るので、高優先度の処理が密集して発生する可能性がある環境において、本来優先度の低い処理が、連続して発生する高優先度処理のために、いつまでもＩ／Ｏアクセス権を取得できないといった状態を回避することが出来る。
【００２３】
請求項５記載のリアルタイムプロセッサシステムでは、演算処理ユニットは、割り込み要因によって異なるＩ／Ｏアクセス優先度値を優先度レジスタに格納する格納手段を有する。
【００２４】
この構成によれば、割込処理部に付随して、割り込み要因に対応する優先度設定を行う手段を設けることが出来るので、割り込み要因別にＩ／Ｏアクセス優先度を変えたい場合に、ソフトウェアでの要因判定が不要となり、処理をより高速に実行出来る。
【００２５】
請求項６記載のリアルタイムプロセツサシステムでは、格納手段は、プロセッサのプログラム制御によるＩ／Ｏアクセス優先度値と、割込処理部の割り込み要因によって異なるＩ／Ｏアクセス優先度値とを、予め格納する優先度設定レジスタ群を有し、新たな割り込みの要求に対して、優先度設定レジスタ群は、上記割り込みの要因に対応する優先度値が、すでに実行中の割込処理の優先度値よりも優先度が高い場合にのみ、上記割り込みの要因に対応する優先度値を優先度レジスタに格納する。
【００２６】
この構成によれば、割り込み要因別にＩ／Ｏアクセス優先度を変えたい場合に、レジスタ処理によって、割込処理を高速に実行することが出来る。
【００２７】
請求項７記載の制御方法は、請求項１から６記載のリアルタイムプロセッサシステムにおいて動作する制御方法であって、次に実行するタスクを検索するタスク検索ステップと、タスク検索ステップで検出されたタスクに対応するＩ／Ｏアクセス優先度を、実行中のプロセッサに対応する優先度レジスタに格納するステップと、タスク検索ステップで検出されたタスクに実行を切り替えるステップとを含む。
【００２８】
この方式によれば、オペレーティングシステムの実行タスク決定とタスク切り替えの間で優先度レジスタの設定を行うことが出来るので、アプリケーションソフトウェアは、起動時の優先度のみ設定すればよく、ソフトウェア制御をオペレーティングシステムに集約することが出来る。その結果、オペレーティングシステム上で動作する、より移植性の高いアプリケーションソフトウェアのプログラム設計が可能となる。
【００２９】
請求項８記載の制御方法は、請求項４記載のリアルタイムプロセッサシステムにおいて動作する制御方法であって、次に実行するタスクを検索するタスク検索ステップと、タスク検索ステップで検出されたタスクに対応するデッドライン時刻と現在時刻の差分を求める残時間算出ステップと、残時間算出ステップで求めた残時間に対応するＩ／Ｏアクセス優先度を、実行中のプロセッサに対応する優先度レジスタに格納するステップと、タスク検索ステップで検出されたタスクに実行を切り替えるステップとを含む。
【００３０】
この方式によれば、オペレーティングシステムの実行タスク決定とタスク切り替えの間で、処理完了までに許容される残時間の算出と、優先度レジスタの設定を行うことが出来るので、アプリケーションソフトウェアは、起動時に処理完了までのデッドライン時刻の設定のみ行えばよく、ソフトウェア制御をオペレーティングシステムに集約することが出来る。その結果、リアルタイムＯＳ上で動作するより移植性の高いアプリケーションソフトウェアのプログラム設計が可能となる。
【発明の効果】
【００３１】
本発明によれば、複数のバスマスタがバスを調停して利用する環境において、バスマスタ毎に別々の割込処理手段を持ち、多重割込に対しても、割込処理以外での処理内容に対しても、バス調停優先度を適応的に制御出来る、リアルタイムプロセッサシステム及び制御方法を提供することが出来る。
【発明を実施するための最良の形態】
【００３２】
次に、図面を参照しながら、本発明の実施の形態を説明する。
【００３３】
（実施の形態１）
図１は、本発明の実施の形態１におけるリアルタイムプロセッサシステムのブロック図である。
【００３４】
本形態のリアルタイムプロセッサシステムは、バスアービタ１００、第１演算処理ユニット１１０、第２演算処理ユニット１２０、ＤＭＡコントローラ１３０、第１優先度レジスタ１４１、第２優先度レジスタ１４２、第３優先度レジスタ１４３、メモリ１７０、及び、ＳＣＩ（シリアルコミュニケーションインターフェース）１８０を備え、第１演算処理ユニット１１０は、割込処理部１１１とプロセッサ１１２とを有し、第２演算処理ユニット１２０は、割込処理部１２１とプロセッサ１２２とを有し、バスアービタ１００は、優先度比較部１５０とバス割当決定部１６０とを有する。第１優先度レジスタ１４１は、第１演算処理ユニット１１０のＩ／Ｏアクセス優先度値を格納し、第２優先度レジスタ１４２は、第２演算処理ユニット１２０のＩ／Ｏアクセス優先度値を格納する。第３優先度レジスタ１４３は、ＤＭＡコントローラ１３０のＤＭＡ処理優先度値として、固定値を格納する。
【００３５】
ＤＭＡコントローラ１３０は、バスアクセス発生ユニットに相当し、メモリ１７０とＳＣＩ１８０とは、Ｉ／Ｏデバイスに相当する。
【００３６】
次に、図１を参照して、本形態のリアルタイムプロセッサシステムの動作を説明する。
【００３７】
本形態のリアルタイムプロセッサシステムでは、優先度値が小さいほど、Ｉ／Ｏアクセス優先度は、高いと定義している。
【００３８】
本形態のリアルタイムプロセッサシステムでは、プロセッサ１１２で実行される通常の処理の優先度を「５」、プロセッサ１１２で実行される割り込み処理の優先度を「２」、プロセッサ１２２で実行される通常の処理の優先度を「４」、プロセッサ１２２で実行される割り込み処理の優先度を「１」とし、第３優先度レジスタ１４３に固定的に設定されるＤＭＡコントローラ１３０の処理の優先度を「３」とし、値の小さなものほど優先度が高いものとする。
【００３９】
本形態のリアルタイムプロセッサシステムが稼動開始すると、第１優先度レジスタ１４１には、プロセッサ１１２のＩ／Ｏアクセスに必要な優先度値として「５」が、プロセッサ１１２上で動作するプログラムによって書き込まれ、第２優先度レジスタ１４２には、プロセッサ１２２のＩ／Ｏアクセスに必要な優先度値として「４」が、プロセッサ１２２上で動作するプログラムによって書き込まれる。第３優先度レジスタ１４３には、優先度値として「３」が、固定的に設定されている。
【００４０】
バスアービタ１００では、バスマスタとなるデバイス（図１に示す本形態では、プロセッサ１１２、プロセッサ１２２、及び、ＤＭＡコントローラ１３０）からＩ／Ｏアクセスの要求を受けた際に、優先度比較部１５０は、第１優先度レジスタ１４１、第２優先度レジスタ１４２、及び、第３優先度レジスタ１４３に格納されている優先度値を比較して、もっとも優先度の高い要求を決定する。バス割当決定部１６０は、その結果に基づいて、優先度の高い要求に、優先的にＩ／Ｏアクセス権を与える。従って、稼動開始時には、最も優先度の高い「３」の値を持つＤＭＡコントローラ１３０が、最優先でＩ／Ｏアクセスを行える状態になる。
【００４１】
次に、稼動中、割込処理部１１１において割込入力１１３に対して割り込み条件が成立すると、割込処理部１１１は、プロセッサ１１２のプログラム実行を割り込み処理先に分岐させ、第１優先度レジスタ１４１に割り込み処理用のＩ／Ｏアクセス優先度値として「２」を書き込む。この段階で、プロセッサ１２２が、最も優先的にＩ／Ｏアクセスを行える状態になり、割り込み処理を高速に実行出来るようになる。
【００４２】
続いて、割込処理部１２１において割込入力１２３に対して割り込み条件が成立すると、割込処理部１２１は、プロセッサ１２２のプログラム実行を割り込み処理先に分岐させ、第２優先度レジスタ１４２に割り込み処理用のＩ／Ｏアクセス優先度値として「１」を書き込む。この段階では、プロセッサ１１２は、まだ割り込み処理を完了していない。しかし、プロセッサ１２２がもっとも優先的にＩ／Ｏアクセスを行える状態になるため、プロセッサ１１２の割り込み処理よりも優先度の高いプロセッサ１２２の割り込み処理が遅延無く実行可能となる。
【００４３】
プロセッサ１２２の割り込み処理が完了すると、プロセッサ１２２の割り込み処理を行うプログラムは、通常のプログラムの優先度値として「４」を第２優先度レジスタ１４２に書き込んで、割り込みから復帰する。この段階で再び、プロセッサ１１２がもっとも優先的にＩ／Ｏアクセスを行える伏態になり、残りの割り込み処理を高速に実行する。
【００４４】
プロセッサ１１２の割り込み処理が完了すると、プロセッサ１１２の割り込み処理を行うプログラムは、通常のプログラムの優先度値として「５」を第１優先度レジスタ１４１に書き込んで、割り込みから復帰する。
【００４５】
この段階で再び、ＤＭＡコントローラ１３０が、最も優先的にＩ／Ｏアクセスを行える状態に戻る。
【００４６】
図７は、本発明の実施の形態１におけるリアルタイムプロセッサシステムのタイムチャートである。以下に、図１と図７とを参照して、上述した割込処理に伴い、バスアービタ１００が行うＩ／Ｏアクセスのスケジューリングの一例を示す。
【００４７】
図７の横軸は、時間であり、優先度値７０１、７０２、７０３は、それぞれ、第１優先度レジスタ１４１、第２優先度レジスタ１４２、第３優先度レジスタ１４３に格納されている優先度値である。斜線を施した領域は、各時間において、優先度の最も高い処理が、割込処理、又は、ＤＭＡ処理として、行われていることを表す。
【００４８】
時間ｔ０では、ＤＭＡ処理７１０が実行され、時間ｔ１では、第１演算処理ユニット１１０の割込処理７１１が実行され、時間ｔ２とｔ３では、第２演算処理ユニット１２０の割込処理７１２が実行され、時間ｔ４では、第１演算処理ユニット１１０の残りの割込処理７１３が実行され、時間ｔ５〜ｔ７では、ＤＭＡ処理７１４が実行される。
【００４９】
また、割り込みが発生しない場合でも、例えば、プロセッサ１２２で処理するデータ量が減少した場合は、プロセッサ１２２は、第２優先度レジスタ１４２に優先度値「６」を書き込むことで、プロセッサ１１２に対して、より多くＩ／Ｏアクセス権がスケジューリングされるようすることが出来る。データ量が再び増加してきた場合は、プロセッサ１２２は、第２優先度レジスタ１４２に優先度値「４」を書き込むことで、Ｉ／Ｏアクセス権のスケジューリングを起動時と同じ状態に戻せる。
【００５０】
このようにして、バスアービタ１００は、バスマスタとなるデバイスに対して、Ｉ／Ｏアクセスのスケジューリングを行う。
【００５１】
なお、本形態のリアルタイムプロセッサシステムにおいて、多重割込処理は、プロセッサ１１２、又は、プロセッサ１２２上のプログラムによって、実行する。
【００５２】
図８に、第１演算処理ユニット１１０において、多重割り込みが発生した場合の一例を示す。図８は、本発明の実施の形態１におけるリアルタイムプロセッサシステムにおいて、多重割込処理を行う時のタイムチャートである。
【００５３】
図１と図８を参照して説明する。時間ｔ０では、第１優先度レジスタ１４１の優先度値８０１は、「４」であり、通常処理８１０が実行されている。
【００５４】
時間ｔ１において、割込処理部１１１は、割込処理Ｂを実行するための割込入力１１３を受けると、第１優先度レジスタ１４１に優先度値「１」を書き込む。プロセッサ１１２は、割込処理Ｂに対する割込入力１１３の要因を判定して、第１優先度レジスタ１４１に優先度値「３」を書き込む。バスアービタ１００の調停の結果、時間ｔ２において、割込処理Ｂ８１１が実行される。
【００５５】
割込処理Ｂ８１１の実行中に、時間ｔ３において、割込処理部１１１は、新たな割込処理Ａを実行する割込入力１１３を受け、第１優先度レジスタ１４１に優先度値「１」を書き込む。プロセッサ１１２は、割込処理Ａに対する割込入力１１３の要因を判定して、第１優先度レジスタ１４１に優先度値「２」を書き込む。バスアービタ１００の調停の結果、時間ｔ４において、割込処理Ａ８１２が実行される。
【００５６】
割込処理Ａ８１２が終了すると、プロセッサ１１２は、中断している割込処理Ａの優先度値「３」を第１優先度レジスタ１４１に書き込む。バスアービタ１００の調停の結果、時間ｔ５において、割込処理Ａ８１３が再開して継続実行される。
【００５７】
割込処理Ａ８１３が終了すると、プロセッサ１１２は、中断している通常処理の優先度値「４」を第１優先度レジスタ１４１に書き込む。バスアービタ１００の調停の結果、時間ｔ６〜ｔ８において、通常処理８１４が継続して実行される。
【００５８】
上述した本形態の説明での優先度値は、一例であって、他の任意の値を設定しても良い。
【００５９】
（実施の形態２）
図２は、本発明の実施の形態２におけるリアルタイムプロセッサシステムのブロック図である。図１と同様の構成要素については、同一の符号を付すことにより、説明を省略する。
【００６０】
図２に示す本形態のリアルタイムプロセッサシステムは、バスアービタ１００第１演算処理ユニット２１０、第２演算処理ユニット２２０、ＤＭＡコントローラ１３０、第１優先度レジスタ１４１、第２優先度レジスタ１４２、第３優先度レジスタ１４３、メモリ１７０、及び、ＳＣＩ１８０を備える。第１演算処理ユニット２１０は、割込処理部１１１とプロセッサ１１２と優先度設定レジスタ群２１５とを有する。第２演算処理ユニット２２０は、割込処理部１２１とプロセッサ１２２と優先度設定レジスタ群２２５とを有する。
【００６１】
ＤＭＡコントローラ１３０は、バスアクセス発生ユニットに相当し、メモリ１７０とＳＣＩ１８０とは、Ｉ／Ｏデバイスに相当する。
【００６２】
本形態のリアルタイムプロセッサシステムでは、優先度値が小さいほど、Ｉ／Ｏアクセス優先度は、高いと定義している。
【００６３】
優先度設定レジスタ群２１５と優先度設定レジスタ群２２５とは、それぞれ複数個のレジスタを有し、割り込み処理時のＩ／Ｏアクセス優先度値を、割込要因に対応して、複数個予め設定しておくことが出来る。
【００６４】
プロセッサ１１２上で実行されるプログラムは、優先度設定レジスタ群２１５内のレジスタにＩ／Ｏアクセス優先度値を書き込むことが出来る。
【００６５】
プロセッサ１２２上で実行されるプログラムは、優先度設定レジスタ群２２５内のレジスタにＩ／Ｏアクセス優先度値を書き込むことが出来る。
【００６６】
割込処理部１１１において、割込入力１１３に対して割り込み条件が成立すると、割込処理部１１１は、優先度設定レジスタ群２１５から、割込入力１１３の要因に対応するＩ／Ｏアクセス優先度値を読み出し、第１優先度レジスタ１４１に書き込む。プロセッサ１１２が既に割り込み処理中であっても、新たに発生した割り込み要因に対応するｌ／Ｏアクセス優先度値が、既に処理中の割り込み要因に対応するＩ／Ｏアクセス優先度値より高い優先度の場合は、割込処理部１１１は、新しい割り込み要因に対応するＩ／Ｏアクセス優先度値を、優先度設定レジスタ群２１５から読み出し、第１優先度レジスタ１４１に書き込み、プロセッサ１１２に多重割り込みを発行する。
【００６７】
第２演算処理ユニット２２０における割込処理、及び、多重割込処理は、第１演算処理ユニット２１０における場合と同様である。
【００６８】
図９は、本発明の実施の形態２におけるリアルタイムプロセッサシステムのタイムチャートである。同図は、上述した多重割込処理に伴い、バスアービタ１００が行うＩ／Ｏアクセスのスケジューリングの一例を示している。この場合は、第１演算処理ユニット２１０のみに着目した例を示している。
【００６９】
図９の横軸は、時間であり、優先度値９０１は、第１優先度レジスタ１４１に格納される各時間の優先度値を表している。割込処理Ａは、優先度値「２」を有し、割込処理Ｂは、優先度値「３」を有し、通常処理は、優先度値「４」を有していると仮定する。これらの優先度値は、図２に示す優先度設定レジスタ群２１５の該当するレジスタに予め格納されている。
【００７０】
以下に、図２と図９とを参照して、本形態のリアルタイムプロセッサシステムの動作の概要を説明する。
【００７１】
時間ｔ０では、通常処理９１０が行われている。
【００７２】
時間ｔ１において、割込処理部１１１に対して割込処理Ｂの割込要求がなされ、割込処理部１１１は、優先度設定レジスタ群２１５のレジスタの中、上記割込の要因に該当するレジスタから、優先度値「３」を読み出し、第１優先度レジスタ１４１に書き込む。同時に、割込処理Ｂ９１１が実行される。
【００７３】
時間ｔ２において、割込処理部１１１に対して、新たな割込処理Ａの割込要求がなされる。割込処理部１１１は、優先度設定レジスタ群２１５から、割込処理Ａの優先度値「２」を読み出し、実行中の割込処理Ｂの優先度値「３」と比較して、割込処理Ａの優先度が高いことを確認して、割込処理Ａの優先度値「２」を第１優先度レジスタ１４１に書き込む。すると、割込処理Ｂ９１１は中断され、新たな割込処理Ａ９１２が実行される。
【００７４】
割込処理Ａ９１２が終了すると、時間ｔ３において、プロセッサ１１２は、中断中のタスクである割込処理Ｂと通常処理との優先度値を比較して、優先度の高い割込処理Ｂの優先度値「３」を第１優先度レジスタ１４１に書き込む。そして、中断していた割込処理Ｂ９１３が時間ｔ３〜ｔ４で実行される。
【００７５】
割込処理Ｂ９１３が終了すると、時間ｔ５において、プロセッサ１１２は、中断中のタスクである通常処理の優先度値「４」を第１優先度レジスタ１４１に書き込む。そして、中断していた通常処理９１４が、時間ｔ５〜ｔ７で実行される。
【００７６】
このように、本形態のリアルタイムプロセッサシステムは、多重割込処理をハードウェア主体で効率よく実行することが出来る。本発明の実施の形態１のリアルタイムプロセッサシステムと比較して、本形態のリアルタイムプロセッサシステムでは、多重割込処理に対するプロセッサの処理量が軽減し、多重割込処理をより効率よく実行出来る。
【００７７】
（実施の形態３）
図３は、本発明の実施の形態３におけるリアルタイムプロセッサシステムのブロック図である。図１と同様の構成要素については、同一の符号を付すことにより、説明を省略する。
【００７８】
図３に示す本形態のリアルタイムプロセッサシステムは、バスアービタ１００、第１演算処理ユニット１１０、第２演算処理ユニット１２０、ＤＭＡコントローラ１３０、第１優先度レジスタ３４１、第１比較器３４５、第２優先度レジスタ３４２、第２比較器３４６、第３優先度レジスタ１４３、メモリ１７０、及び、ＳＣＩ１８０を備える。
【００７９】
バスアービタ１００は、優先度比較部１５０、及び、バス割当決定部１６０を有する。
【００８０】
第１比較器３４５においては、第１優先度レジスタ３４１に現在格納されている優先度値と、新たな割り込みに伴う割込処理部１１１からの優先度値とが入力され、それらを比較して、優先度の高い優先度値が選択されて、第１優先度レジスタ３４１に格納される。すなわち、第１優先度レジスタ３４１と第１比較器３４５とを組み合わせることにより、新たな割込処理の優先度が、第１優先度レジスタ３４１に格納されている優先度よりも高い場合のみ、第１優先度レジスタ３４１の優先度値が変更される。
【００８１】
第２優先度レジスタ３４２と第２比較器３４６との組み合わせにおいても、同様である。
【００８２】
以下に、本形態のリアルタイムプロセッサシステムの動作について、実施の形態１及び実施の形態２と異なる点を中心に、概略を説明する。
【００８３】
本形態のリアルタイムプロセッサシステムでは、優先度値が小さいほど、Ｉ／Ｏアクセス優先度は、高いと定義している。
【００８４】
第１演算処理ユニット１１０の割込処理部１１１が、割込入力１１３を受けて、第１優先度レジスタ３４１に割込入力１１３に対応する優先度値を書き込む場合、第１比較器３４５において、すでに第１優先度レジスタ３４１に格納されているＩ／Ｏアクセス優先度値と、割込入力１１３に対応する優先度値とが比較され、より優先度の高い優先度値が、第１優先度レジスタ３４１に書き込まれる。
【００８５】
同様の処理は、第２演算処理ユニット１２０と第２優先度レジスタ３４２と第２比較器３４６とにおいても行われる。
【００８６】
第３優先度レジスタ１４３は、ＤＭＡコントローラ１３０のための優先度値を固定的に設定するレジスタである。
【００８７】
本形態のリアルタイムプロセッサシステムは、通常処理のＩ／Ｏアクセス優先度の比べ、低いＩ／Ｏアクセス優先度を持つ割込処理を実行する場合に、顕著な効果を発揮する。
【００８８】
図１０（ａ）は、本発明の実施の形態３におけるリアルタイムプロセッサシステムが、優先度継承割込処理を行う時のタイムチャートである。
【００８９】
以下に、図３と図１０（ａ）を参照して、本形態のリアルタイムプロセッサシステムの動作を、第１演算処理ユニット１１０にのみ着目して、説明する。第１演算処理ユニット１１０は、時間ｔ０において、通常処理１０１０を優先度値「２」で実行している。割込処理部１１１は、優先度値「４」の割込処理を受け付けると、その優先度値を、第１比較器３４５において、実行中の処理の優先度値「２」と比較し、優先度のより高い優先度値「２」を、第１優先度レジスタ３４１に書き込み（この例の場合は、第１優先度レジスタ３４１の内容は、たまたま変化しない）、プロセッサ１１２の処理を割込処理に切り替える。バスアービタ１００の調停の結果、時間ｔ１において、割込処理１０１１が、優先度値「２」として処理される。
【００９０】
割込処理１０１１が終了すると、プロセッサ１１２は、中断している通常処理の優先度値「２」を第１優先度レジスタ３４１に書き込む（この場合も、第１優先度レジスタ３４１の内容は、たまたま変化しない）。バスアービタ１００の調停の結果、時間ｔ２〜ｔ７において、通常処理１０１２が、優先度値「２」として処理される。
【００９１】
この結果、割込処理は、もともと、その処理に割り当てられた優先度が低いにも拘らず、すでに実行中の処理の優先度を継承して、より高い優先度で処理されることになる。このような処理は、優先度継承割込処理と呼ぱれている。
【００９２】
図１０（ｂ）は、本発明の実施の形態３におけるリアルタイムプロセッサシステムが、優先度非継承割込処理を行う時のタイムチャートである。これは、リアルタイムプロセッサシステムにおいて、第１比較器３４５の機能を殺して、割込処理が常に最優先処理されるようにしたものであり、上述した図１０（ａ）と対比するためのものである。
【００９３】
図１０（ｂ）においては、割込処理に対して、優先度の継承が行われないため、時間ｔ１において、第１優先度レジスタ３４１に格納される優先度値は、割込処理の持つ優先度値「４」に変更される。したがって、バスアービタ１００の調停の結果、時間ｔ１〜ｔ３において、割込処理１０２１が実行される。この割込処理１０２１は、優先度が低い状態で実行されるために、より長い処理時間を必要とする。
【００９４】
割込処理１０２１が終了すると、プロセッサ１１２は、中断している通常処理の優先度値「２」を第１優先度レジスタ３４１に書き込む。バスアービタ１００の調停の結果、時間ｔ４〜ｔ７において、通常処理１０１２が、優先度値「２」として処理される。
【００９５】
図１０（ａ）と（ｂ）を比較して明らかなように、本形態のリアルタイムプロセッサシステムは、通常処理のＩ／Ｏアクセス優先度に比べ、低いＩ／Ｏアクセス優先度を持つ割込処理を実行する場合に、顕著な効果を発揮する。同時に、通常処理のＩ／Ｏアクセス優先度を、割込処理のＩ／Ｏアクセス優先度よりも高く設定出来ることを意味しており、ソフトウェア設計において自由度が増大することになる。
【００９６】
なお、本形態のリアルタイムプロセッサシステムは、本発明の実施の形態２と組み合わせて適用することが可能であり、その場合には、それぞれの形態のリアルタイムプロセッサシステムが有する効果を、同時に得ることが出来る。
【００９７】
（実施の形態４）
図４は、本発明の実施の形態４におけるリアルタイムプロセッサシステムのブロック図である。図１と同様の構成要素については、同一の符号を付すことにより、説明を省略する。
【００９８】
図４に示すように、本形態のリアルタイムプロセッサシステムは、バスアービタ１００、第１演算処理ユニット１１０、第２演算処理ユニット１２０、ＤＭＡコントローラ１３０、
第１優先度レジスタ４４１、第１減算器４４７、第２優先度レジスタ４４２、第２減算器４４８、第３優先度レジスタ１４３、メモリ１７０、及び、ＳＣＩ１８０を備え、バスアービタ１００は、優先度比較部１５０とバス割当決定部１６０を有する。
【００９９】
本形態のリアルタイムプロセッサシステムでは、優先度値が小さいほど、Ｉ／Ｏアクセス優先度は、高いと定義している。
【０１００】
第１減算器４４７と第２減算器４４８とは、それぞれ、第１優先度レジスタ４４１と第２優先度レジスタ４４２とに格納されている優先度値を、一定の時間間隔で一定値に達するまで減少させる。すなわち、第１減算器４４７と第２減算器４４８とは、それぞれ、第１優先度レジスタ４４１と第２優先度レジスタ４４２との優先度を時間とともに上昇させる作用をする。
【０１０１】
第３優先度レジスタ１４３は、ＤＭＡコントローラ１３０のための優先度値を固定的に設定するレジスタである。
【０１０２】
本形態のリアルタイムプロセッサシステムの動作の一例を、図１１を用いて以下に説明する。図１１は、本発明の実施の形態４におけるリアルタイムプロセッサシステムのタイムチャートである。
【０１０３】
この例では、第１減算器４４７と第２減算器４４８は、それぞれ、第１優先度レジスタ４４１と第２優先度レジスタ４４２に格納されている優先度値を、格納されている優先度値が減算閥値である「１２７」（この値は任意に設定出来る）よりも小さい時は、一定時間ごとに「１」ずつ減じるが、格納されている優先度値が「１２７」よりも大きい時は、何もしないように設定されている。
【０１０４】
以下では、図４と図１１を参照して、動作の概要を説明する。
【０１０５】
時間ｔ０では、第１優先度レジスタ４４１の優先度値１１０１は「２５５」、第２優先度レジスタ４４２の優先度値１１０２は「２５５」、そして、第３優先度レジスタ１４３の優先度値１１０３は、固定的に「２０」と設定されている。したがって、バスアービタ１００の調停の結果、時間ｔ０において、ＤＭＡ処理１１３０が実行される。
【０１０６】
時間ｔ１において、第１演算処理ユニット１１０に割込要求が発生し、割込処理部１１１は、第１優先度レジスタ４４１の優先度値１１０１として、「９」を書き込む。この時、割込処理部１１１は、その割込処理が時間ｔ９までに終了するように、優先度値を決定する。すなわち、その割込処理のデッドラインが時間ｔ９であることから逆算して、第１優先度レジスタ４４１に書き込むべき優先度値を決定する。
【０１０７】
第２優先度レジスタ４４２の優先度値１１０２の「２５５」は、「１２７」よりも大きいので、減算されない。第３優先度レジスタ１４３の優先度値１１０３は、固定的に「２０」である。したがって、バスアービタ１００の調停の結果、時間ｔ１において、最も優先度値が小さい第１演算処理ユニット１１０の割込要求に対して、Ｉ／Ｏアクセス権を与える。プロセッサ１１２は、通常処理１１１Ｏを中断して、割込処理１１１１を実行する。
【０１０８】
第１優先度レジスタ４４１の優先度値１１０１は、時間ｔ２以降、そのタスクが終了するまで、一定時間ごとに「１」ずつ減算される。
【０１０９】
時間ｔ３において、第２演算処理ユニット１２０に割込要求が発生し、割込処理部１２１は、第２優先度レジスタ４４２に、優先度値１１０２として、「４」を書き込む。これは、その割込処理が、時間ｔ６までに終了するようにする設定である。時間ｔ３における各優先度レジスタに格納されている優先度値を比較して、バスアービタ１００は、割込処理１１２１が実行されるように調停する。この調停の結果、割込処理１１１１は、中断され、また、通常処理１１２０も中断されて、割込処理１１２１が実行される。
【０１１０】
その後、第１優先度レジスタ４４１の優先度値１１０１と第２優先度レジスタ４４２の優先度値１１０２とは、一定時間ごとに「１」ずつ減算される。
【０１１１】
時間ｔ６において、割込処理１１２１が終了し、プロセッサ１２２は、第２優先度レジスタ４４２に、通常処理の優先度値として「２５５」を書き込み、通常処理１１２３を再開する。この時点において、第１優先度レジスタ４４１の優先度値がもっと小さく、バスアービタ１００は、割込処理１１１２が実行されるように調停する。この調停の結果、割込処理１１１２は、継続して実行される。
【０１１２】
時間ｔ９において、割込処理１１１２が終了し、プロセッサ１１２は、第１優先度レジスタ４４１に、通常処理の優先度値として「２５５」を書き込み、通常処理１１１３を再開する。この時点において、第３優先度レジスタ１４３の優先度値がもっと小さく、バスアービタ１００は、ＤＭＡ処理１１３１が実行されるように調停する。
【０１１３】
以上説明したように、本形態のリアルタイムプロセッサシステムは、割込処理を含めて、新しいタスクを実行する場合、そのタスクよりも優先度の高いものがＩ／Ｏアクセスしていない場合にのみ、そのタスクのＩ／Ｏアクセスを許可するというルールで、Ｉ／Ｏアクセスの調停を行うことが出来る。また、タスクの終了時刻を基に、処理の優先度値を設定出来るので、Ｉ／Ｏアクセス権のスケジューリングが容易となる。
【０１１４】
なお、本形態のリアルタイムプロセッサシステムは、本発明の実施の形態２、及び／又は、実施の形態３と組み合わせて適用することが可能であり、その場合には、それぞれの形態のリアルタイムプロセッサシステムが有する効果を、同時に得ることが出来る。
【０１１５】
また、本形態では、優先度は、優先度値の値が小さいほどが高いとしている。優先度が、優先度値の値が大きいほど高いと設定する場合は、図４の第１減算器４４７と第２減算器４４８とを加算器に置換すれば、同様の効果を発揮出来る。
【０１１６】
（実施の形態５）
図５は、本発明の実施の形態５における制御方法の処理のフローチャートである。本形態の制御方法は、本発明の実施の形態１〜４のリアルタイムプロセッサシステム上で動作する。
【０１１７】
本形態の制御方法の処理のフローチャートは、実行タスク検索ステップＳ５０１、優先度レジスタ設定ステップＳ５０２、及び、タスク切り替えステップＳ５０３を含む。
【０１１８】
本形態の制御方法の処理の流れを、図１に示したリアルタイムプロセッサシステムを適用例として、以下に説明する。
【０１１９】
図１２は、本発明の実施の形態５における制御方法の処理のタイムチャートである。この例では、図１に示した第１演算処理ユニット１１０において、Ｉ／Ｏアクセス優先度「１」の割込処理と、ｌ／Ｏアクセス優先度「２」の通常処理Ａと、Ｉ／Ｏアクセス優先度「３」の通常処理Ｂとが、タスクとしてあり、これらをプロセッサ１１２のＯＳが管理している。以下に、図１と図１２とを参照して、動作の概要を説明する。
【０１２０】
時間ｔ０において、通常処理Ａは、「ＷＡＩＴ」状態（実行する処理がなく、タスクが待ち状態）であり、通常処理Ｂは、「ＲＵＮ」状態（タスク処理中）で、タスク１２１４を処理している。この時の第１優先度レジスタ１４１の優先度値は、「３」である。
【０１２１】
時間ｔ２において、割り込みが発生すると、割込処理部１１１は、割り込み発生をプロセッサ１１２に通知し、同時に、第１優先度レジスタ１４１に、優先度値「１」を書き込む。プロセッサ１１２のＯＳは、割り込みをトラップして、処理中のタスク１２１４を、「ＲＥＡＤＹ」状態（実行待ちの状態）にして、ＯＳ処理１２２１を実行する。バスアービタ１００は、バスを調停して、割込処理にｌ／Ｏアクセス権を与える。
【０１２２】
時間ｔ３において、割込処理のタスク１２１１が実行される。
【０１２３】
時間ｔ４において、通常処理Ａの「ＷＡＫＥ−ＵＰ」（「ＷＡＩＴ」状態からの解除）のために、システムコールが実行され、プロセッサ１１２のＯＳは、ＯＳ処理１２２２を実行し、通常処理Ａを「ＲＥＡＤＹ」状態にする。
【０１２４】
時間ｔ５において、割込処理のタスク１２１２が実行され、終了する。
【０１２５】
時間ｔ６において、タスク１２１２の終了に伴い、割込処理終了用のシステムコールが実行されて、プロセッサ１１２は、ＯＳ処理１２２３を実行する。ＯＳ処理１２２３によって、「ＲＥＡＤＹ」状態のタスクのうち、最も優先度の高い（優先度値の最も小さい）タスクが検索される。これは、図５に示す、実行タスク検索ステップＳ５０１に相当する。
【０１２６】
検索の結果、通常処理Ａが選択され、通常処理Ａの優先度値「２」が、プロセッサ１１２によって、第１優先度レジスタ１４１に書き込まれる。これは、図５に示す、優先度レジスタ設定ステップＳ５０２に相当する。
【０１２７】
バスアービタ１００は、バスを調停して、通常処理ＡにＩ／Ｏアクセス権を与える。プロセッサ１１２は、タスクの切り替えを行い、通常処理Ａのタスク１２１３を「ＲＵＮ」状態にして実行する。これは、図５に示す、タスクの切り替えステップＳ５０３に相当する。
【０１２８】
時間ｔ９において、タスク１２１３が終了し、処理終了用のシステムコールが実行されて、プロセッサ１１２は、ＯＳ処理１２２４を実行する。ＯＳ処理１２２４によって、通常処理Ａは、「ＷＡＩＴ」状態に切り替えられ、再び、「ＲＥＡＤＹ」状態のタスクのうち、最も優先度の高い（優先度値の最も小さい）タスクが検索される。これは、図５に示す、実行タスク検索ステップＳ５０１に相当する。
【０１２９】
検索の結果、通常処理Ｂが選択され、通常処理Ｂの優先度値「３」が、プロセッサ１１２によって、第１優先度レジスタ１４１に書き込まれる。これは、図５に示す優先度レジスタ設定ステップＳ５０２に相当する。
【０１３０】
バスアービタ１００は、バスを調停して、通常処理ＢにＩ／Ｏアクセス権を与える。プロセッサ１１２は、タスクの切り替えを行い、通常処理Ｂのタスク１２１５を「ＲＵＮ」状態にして実行する。これは、図５に示す、タスクの切り替えステップＳ５０３に相当する。
【０１３１】
以上説明したように、本形態の制御方法では、タスクの実行が終了すると、システムコールが実行され、実行可能なタスクの中からもっとも優先度の高いタスクを検索し、そのタスクの優先度値を基に、優先度レジスタの設定を行い、タスク切り替えを行う。
【０１３２】
タスク切り替えステップＳ５０３をさらに具体的に述べれば、現在実行中のタスクの利用しているレジスタをメモリ上に退避し、検索したタスクが利用するレジスタの内容をメモリから復帰して、タスク切り替えを行う。
【０１３３】
本形態の制御方法を利用することにより、タスクや割り込みハンドラと呼ばれるアプリケーションソフトウェアは、ハードウェアの構成に依存しない記述が可能となり、移植性の高いアプリケーションソフトウェアの開発が可能となる。
【０１３４】
（実施の形態６）
図６は、本発明の実施の形態６における制御方法の処理のフローチャートである。本形態の制御方法は、本発明の実施の形態４のリアルタイムプロセッサシステム上で動作する。
【０１３５】
本形態の制御方法の処理のフローチャートは、実行タスク検索ステップＳ６０１、残時間算出ステップＳ６０２、優先度レジスタ設定ステップＳ６０３、及び、タスク切り替えステップＳ６０４を含む。
【０１３６】
本形態の処理の流れを、図４に示したリアルタイムプロセッサシステムを適用例として、以下に説明する。
【０１３７】
図１３は、本発明の実施の形態６における制御方法の処理のタイムチャートである。この例では、本形態の制御方法は、図４に示した本発明の実施の形態４のリアルタイムプロセッサシステム上で動作させるものとして、説明する。従って、以下の説明では、図４と図１３を参照する。
【０１３８】
図１３に示す例では、第１演算処理ユニット１１０において、２つの割込処理と２つの通常処理が行われる場合を示している。この場合、割込処理の実行許容時間は、３単位時間、通常処理Ａの実行許容時間は、１０単位時間、通常処理Ｂの実行許容時間は、７単位時間としている。ここに、１単位時間は、例えば１ミリ秒である。また、同図の横軸は、時間を表しているが、横軸の長さは、必ずしも単位時間とは比例していない。
【０１３９】
時間ｔ０において、プロセッサ１１２のＯＳ処理１３４１は、「ＩＤＬＥ」状態（アイドリングループに入っている状態）で、第１優先度レジスタ４４１には、優先度値「２５５」が、格納されている。この値は、減算閥値である「１２７」よりも大きいので、第１減算器４４７によって、減算されることはない。
【０１４０】
時間ｔ１において、第１演算処理ユニット１１０に割込要求が発生し、割込処理部１１１は、第１優先度レジスタ４４１の優先度値として、「３」を書き込む。この時、割込処理部１１１は、その割込処理の実行許容時間が３単位時間であることを勘案して、時間ｔ５までに割込処理が終了するように、第１優先度レジスタ４４１に書き込むべき優先度値を決定する。プロセッサ１１２は、割り込みをトラップして、ＯＳ処理１３４２を実行する。バスアービタ１００は、バスを調停して、割込処理にＩ／Ｏアクセス権を与える。
【０１４１】
時間ｔ２〜ｔ３において、割込処理１３１１が実行される。その間、第１優先度レジスタ４４１に格納されている優先度値は、一定時間ごとに「１」ずつ減算される。
【０１４２】
時間ｔ４において、通常処理Ａのタスクを起動するシステムコールがなされ、プロセッサ１１２は、ＯＳ処理１３４３を実行し、通常処理Ａを「ＲＥＡＤＹ」１３２２にする。
【０１４３】
時間ｔ５では、割込処理１３１２が引き続き実行される。
【０１４４】
時間ｔ６において、割込処理１３１２が終了し、ＯＳ処理１３４４が実行され、第１優先度レジスタ４４１の優先度値として、「８」が書き込まれる。この時、プロセッサ１１２は、通常処理Ａの実行許容時間が１０単位時間であることを勘案して、時間ｔ１８までに割込処理が終了するように、第１優先度レジスタ４４１に書き込むべき優先度値を決定する。
【０１４５】
図１３において、逆三角マーク１３２１は、通常処理Ａの起動時刻であり、逆三角マーク１３２６は、通常処理Ａの処理遅延が許容される臨界時刻（デッドライン）である。この間が、通常処理Ａの実行許容時間である１０単位時間に相当する。バスアービタ１００は、バスを調停して、通常処理ＡにＩ／Ｏアクセス権を与える。
【０１４６】
時間ｔ７において、通常処理Ａが、「ＲＵＮ」１３２３になり、タスクが実行される。
【０１４７】
時間ｔ１１において、第１演算処理ユニット１１０に新たな割込要求が発生し、割込処理部１１１は、第１優先度レジスタ４４１の優先度値として、「３」を書き込む。この優先度値は、割込処理の実行許容時間が３単位時間であることを勘案して、決定された値である。プロセッサ１１２は、割り込みをトラップして、ＯＳ処理１３４５を実行し、通常処理Ａを「ＲＥＡＤＹ」１３２４にする。バスアービタ１００は、バスを調停して、割込処理にＩ／Ｏアクセス権を与える。
【０１４８】
時間ｔ１２において、割込処理１３１３が実行される。
【０１４９】
時間ｔ１３において、通常処理Ｂのタスクを起動するシステムコールがなされ、プロセッサ１１２は、ＯＳ処理１３４６を実行し、通常処理Ｂを「ＲＥＡＤＹ」１３３２にする。
【０１５０】
時間ｔ１４では、割込処理１３１４が引き続き実行される。
【０１５１】
時間ｔ１５において、割込処理１３１４が終了し、ＯＳ処理１３４７が実行され、第１優先度レジスタ４４１の優先度値として、「２」が書き込まれる。この優先度値は、時間ｔ７において、通常処理Ａに対する優先度値として書き込まれた値が、時間とともに減算された値である。バスアービタ１００は、バスを調停して、通常処理Ａにｌ／Ｏアクセス権を与える。
【０１５２】
時間ｔ１６において、通常処理Ａのタスク１３２５が実行される。
【０１５３】
時間ｔ１７において、通常処理Ａのタスク１３２５が終了し、ＯＳ処理１３４８が実行され、第１優先度レジスタ４４１の優先度値として、「４」が書き込まれる。この優先度値は、時間ｔ１３において、通常処理Ｂに対する優先度値として求められた値が、時間とともに減算された値である。
【０１５４】
図１３において、逆三角マーク１３３１は、通常処理Ｂの起動時刻であり、逆三角マーク１３３４は、通常処理Ｂの処理遅延が許容される臨界時刻
（デッドライン）である。この間が、通常処理Ｂの実行許容時間である７単位時間に相当する。バスアービタ１００は、バスを調停して、通常処理ＢにＩ／Ｏアクセス権を与える。
【０１５５】
時間ｔ１８において、通常処理Ｂは、「ＲＵＮ」状態となり、タスク１３３３が実行される。
【０１５６】
時間ｔ２１において、タスク１３３３が終了し、ＯＳ処理１３４９が実行され、第１優先度レジスタ４４１の優先度値として、「２５５」が書き込まれる。
【０１５７】
時間ｔ２２において、プロセッサ１１２は、「ＩＤＬＥ」状態となる。
【０１５８】
本形態の制御方法では、一つのタスクが終了すると、次の実行タスクを検索する。図１３に示した例では、時間ｔ６とｔ１５とｔ１７とにおいて、次の実行タスクの検索が行われている。
【０１５９】
時間ｔ６においては、実行可能なタスクの中から、もっともデッドライン時刻が現在時刻に近いタスクが検索される（図６に示す、実行タスク検索ステップＳ６０１に相当する）。次に、現在時刻に対するデッドライン時刻までの残時間が算出される（図６に示す、残時間算出ステップＳ６０２に相当する）。算出された残時間に対応するＩ／Ｏアクセス優先度値（この場合の優先度値は、「８」）が、第１優先度レジスタ１４１に書き込まれる（図６に示す、優先度レジスタ設定ステップＳ６０３に相当する）。最後に、現在実行中のタスクの利用しているレジスタをメモリ上に退避し、これから実行するタスクが利用するレジスタの内容をメモリから復帰する事でタスク切り替えを行い、時間ｔ７において、タスク１３２３が実行される（図６に示す、タスク切り替えステップＳ６０４に相当する）。
【０１６０】
時間ｔ１５とｔ１７における処理も、同様である。
【０１６１】
以上説明したように、本形態の制御方法では、Ｉ／Ｏアクセス権の付与は、通常処理のタスク又は割込処理のタスクが処理を完了するまでの許容時間に比例した優先度値を基づいて行われる。
【０１６２】
本発明の実施の形態５で示したような固定優先度方式は、スケジュール計算が単純であるために、広く利用されているが、本形態に示したように、同一処理速度のプロセッサで実行する場合、処理完了までの許容時間を考慮してスケジューリングした方が、最悪時の処理完了までの時間を短縮出来る。
【０１６３】
本形態で説明した動的優先度方式を採用した制御方法は、マルチプロセッサ環境に拡張する事が可能である。
【０１６４】
以上説明した本発明の実施の形態２以外の実施の形態における、第１演算処理ユニット１１０と第２演算処理ユニット１２０とは、本発明の実施の形態２における、第１演算処理ユニット２１０と第２演算処理ユニット２２０と入れ替えても良い。
【０１６５】
また、本発明の実施の形態１から６では、演算処理ユニットの個数は、２個であったが、演算処理ユニットの個数は、さらに多くても良い。その場合は、演算処理ユニットの個数に伴って、優先度レジスタの個数も増やせば、本発明の実施の形態１から６で述べたと同様の効果を得ることが出来る。
【０１６６】
さらに、本発明の実施の形態１から６での、第３優先度レジスタ１４３は、固定値を格納しているが、ＤＭＡコントローラ１３０の制御の下で、可変値を格納しても良い。
【０１６７】
要するに、本発明の趣旨を逸脱しない範囲において、種々の拡張が可能である。
【産業上の利用可能性】
【０１６８】
本発明に係わるリアルタイムプロセッサシステムは、例えば、複数のバスマスタがバスを調停して利用する環境及びその関連技術分野などにおいて利用できる。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施の形態１におけるリアルタイムプロセッサシステムのブロック図
【図２】本発明の実施の形態２におけるリアルタイムプロセッサシステムのブロック図
【図３】本発明の実施の形態３におけるリアルタイムプロセッサシステムのブロック図
【図４】本発明の実施の形態４におけるリアルタイムプロセッサシステムのブロック図
【図５】本発明の実施の形態５における制御方法の処理のフローチャート
【図６】本発明の実施の形態６における制御方法の処理のフローチャート
【図７】本発明の実施の形態１におけるリアルタイムプロセッサシステムのタイムチャート
【図８】本発明の実施の形態１におけるリアルタイムプロセッサシステムにおいて、多重割込処理を行う時のタイムチャート
【図９】本発明の実施の形態２におけるリアルタイムプロセッサシステムのタイムチャート
【図１０】（ａ）本発明の実施の形態３におけるリアルタイムプロセッサシステムが、優先度継承割込処理を行う時のタイムチャート  （ｂ）本発明の実施の形態３におけるリアルタイムプロセッサシステムが、優先度非継承割込処理を行う時のタイムチャート
【図１１】本発明の実施の形態４におけるリアルタイムプロセッサシステムのタイムチャート
【図１２】本発明の実施の形態５における制御方法の処理のタイムチャート
【図１３】本発明の実施の形態６における制御方法の処理のタイムチャート
【図１４】従来の割込処理を行うシステムのブロック図
【符号の説明】
【０１７０】
１００、１４０４  バスアービタ
１１０、２１０  第１演算処理ユニット
１１１、１２１  割込処理部
１１２、１２２、１４０２、１４０３  プロセッサ
１１３、１２３  割込入力
１２０、２２０  第２演算処理ユニット
１３０  ＤＭＡコントローラ
１４１、３４１、４４１  第１優先度レジスタ
１４２、３４２、４４２  第２優先度レジスタ
１４３  第３優先度レジスタ
１５０  優先度比較部
１６０、１４０６  バス割当決定部
１７０、１４０７  メモリ
１８０、１４０８  ＳＣＩ
２１５  優先度設定レジスタ群
２２５  優先度設定レジスタ群
３４５  第１比較器
３４６  第２比較器
４４７  第１減算器
４４８  第２減算器
１４０１  割込処理回路
１４０５  固定優先度設定部
【図１】
2005092780.tif 000003
【図２】
2005092780.tif 000004
【図３】
2005092780.tif 000005
【図４】
2005092780.tif 000006
【図５】
2005092780.tif 000007
【図６】
2005092780.tif 000008
【図７】
2005092780.tif 000009
【図８】
2005092780.tif 000010
【図９】
2005092780.tif 000011
【図１０】
2005092780.tif 000012
【図１１】
2005092780.tif 000013
【図１２】
2005092780.tif 000014
【図１３】
2005092780.tif 000015
【図１４】
2005092780.tif 000016