(57)【要約】  【課題】  バスにＣＰＵとメモリが接続されたシステムにおいて、局所的にバスバンド幅が必要となる場合が発生し、バスバンド幅の使用効率に偏りが出る。  【解決手段】  メモリスケジューラ２００において、メモリアクセス集計部２０３がメモリアクセスコマンドからプロセスＩＤ毎のバス使用率を集計し、バス使用率比較部２０５がメモリアクセス集計部２０３の集計結果と閾値設定部２０４に設定された閾値とを比較する。この比較結果に応じて、メモリスケジューラ２００はプロセススケジューラ１００に割り込みをかける。プロセススケジューリング変更部１０２は、メモリスケジューラ２００からの割り込みを受け、ＣＰＵコア１１のプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更する。【選択図】  図１
2007041771.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
オペレーティングシステムを搭載したＣＰＵコアを有し、前記バスに接続されているバスマスタとしての１つまたは複数のＣＰＵブロックと、
前記バスに接続されているバススレーブとしてメモリブロックとを備え、
前記ＣＰＵコアは、実行すべきプロセスを決定するプロセススケジューラを備え、
前記メモリブロックは、バスマスタの設定バンド幅を設定するとともに、バスマスタからのメモリアクセスコマンドを制御するメモリスケジューラを備え、
前記プロセススケジューラは、
前記ＣＰＵコアで実行されているプロセスを示すプロセスＩＤを、前記メモリスケジューラに設定するプロセスＩＤ設定部と、
前記ＣＰＵコアのプロセススケジューリング条件を変更する機能を有するプロセススケジューリング変更部とを備えたものであり、
前記メモリスケジューラは、
前記メモリアクセスコマンドから、前記プロセスＩＤ毎のバス使用率を集計するメモリアクセス集計部と、
前記バス使用率に対して少なくとも１つ以上の閾値を設定する閾値設定部と、
前記閾値と前記メモリアクセス集計部の集計結果とを比較するバス使用率比較部とを備え、
前記バス使用率比較部の比較結果に応じて、前記プロセススケジューラに割り込みをかけるものであり、
前記プロセススケジューリング変更部は、
前記メモリスケジューラからの割り込みを受け、前記ＣＰＵコアに割り込みを発生させ、前記ＣＰＵコアのプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更するものである
ことを特徴とするプロセススケジューリングシステム。
【請求項２】
請求項１において、
前記メモリアクセス集計部は、バス使用率を、バスマスタ単位と、システム全体とに分けて集計するものである
ことを特徴とするプロセススケジューリングシステム。
【請求項３】
請求項１または２において、
前記ＣＰＵコアは、
メモリモードフラグと、
前記メモリモードフラグの値を設定する機能を有するメモリモード変更部とを備え、
前記メモリスケジューラは、
前記閾値設定部が、バス使用率に対して、上限閾値と下限閾値とを設定し、
バス使用率が前記上限閾値を越えた場合と、バス使用率が前記下限閾値を下回った場合とにおいて、それぞれを割り込み要因として、前記プロセススケジューラに割り込みをかけるものであり、
前記メモリモード変更部は、前記メモリスケジューラから割り込みを受けたとき、当該割り込み要因に応じて、前記メモリモードフラグの値を設定するものであり、
前記プロセススケジューリング変更部は、前記ＣＰＵコアのプロセススケジューリング条件を、前記メモリモードフラグの値に応じて、変更するものである
ことを特徴とするプロセススケジューリングシステム。
【請求項４】
請求項３において、
前記メモリスケジューラは、
各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部を備え、
前記バス使用率比較部は、前記割り込み許可指定部で割り込みが許可されたバスマスタのみを比較対象とするものである
ことを特徴とするプロセススケジューリングシステム。
【請求項５】
請求項４において、
前記ＣＰＵブロックを複数備えており、
前記メモリスケジューラは、
前記バス使用率比較部の比較結果を基にして、前記複数のＣＰＵブロックの中から、割り込みをかけるＣＰＵブロックを選択指定する機能を有する割り込み対象指定部を備えたものである
ことを特徴とするプロセススケジューリングシステム。
【請求項６】
請求項１記載のプロセススケジューリングシステムにおいて、前記ＣＰＵブロックがプロセススケジューリングを行う方法であって、
割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、
前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、ＲＥＡＤＹ状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、
選択したプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えた
ことを特徴とするプロセススケジューリング方法。
【請求項７】
請求項３記載のプロセススケジューリングシステムにおいて、前記ＣＰＵブロックがプロセススケジューリングを行う方法であって、
割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、
前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、割り込み要因を読み込むステップと、
前記割り込み要因が、バス使用率が前記上限閾値を越えた場合であるとき、前記メモリモードフラグに第１の所定値を設定する一方、バス使用率が前記下限閾値を下回った場合であるとき、前記メモリフラグに前記第１の所定値と異なる第２の所定値を設定するステップと、
前記メモリモードフラグを参照し、前記メモリモードフラグに前記第１の所定値が設定されているとき、ＲＥＡＤＹ状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、
選択したプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えた
ことを特徴とするプロセススケジューリング方法。
【請求項８】
請求項７において、
前記メモリモードフラグに前記第２の所定値が設定されているとき、ＲＥＡＤＹ状態のプロセスの中から、非リアルタイムプロセスを選択するステップと、
選択した非リアルタイムプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えた
ことを特徴とするプロセススケジューリング方法。
【請求項９】
請求項６〜８のうちのいずれか１項に記載のプロセススケジューリング方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩなど機器組み込み分野に関し、特にオペレーティングシステムを搭載したＣＰＵとメモリとがバスに接続されたシステム構成における、ＣＰＵのプロセススケジューリングに関するものである。
【背景技術】
【０００２】
一般に、機器組み込み分野に関し、ＣＰＵを含む複数のバスマスタと、バススレーブとなるメモリとがバスに接続されるシステムＬＳＩの構成において、バスバンド幅は、システムのバスビット幅、バスクロックなどによって一意に決まってしまう。このため、バスを効率良く使用することは、システム全体の処理性能を最適化する意味で非常に重要となる。
【０００３】
従来のオペレーティングシステムを搭載したＣＰＵにおける各プロセスの実行方法は、次のようなものである。すなわち、オペレーティングシステムカーネル内にプロセススケジューラが設けられており、プロセス毎に実行優先度を持ち、プロセススケジューラはその実行優先度の高いプロセスから順にＣＰＵに割り当てる。
【０００４】
図１８はオペレーティングシステムを搭載したＣＰＵを含むプロセススケジューリング装置の従来例である。図１８において、少なくとも１つ以上のＣＰＵブロック６０ａ，６０ｂ，…，６０ｎがバス１に接続され、それぞれバスマスタとなっている。また、メモリブロック７０がバス１に接続され、バススレーブとなっている。
【０００５】
ＣＰＵブロック６０ａは（ＣＰＵブロック６０ｂ，６０ｎも同様）、ＣＰＵ６１と、ＬＭＣ（Local Memory Controller）６３と、ＢＣＵ（Bus Control Unit）６４とを備えており、ＣＰＵ６１はプロセススケジューラ６２を備え、ＢＣＵ６４はメモリアクセスコマンド生成部６５を備える。プロセススケジューラ６２は実行優先度が最も高いプロセスを選択し、ＣＰＵ６１で実行させる。またＣＰＵブロック６０ａはキャッシュを搭載するものとし、ＬＭＣ６３がそのアクセス制御を行う。キャッシュアクセスの際にキャッシュミスが発生した場合などにおいて、リフィル処理を行うために、ＢＣＵ６４にメモリアクセス要求を発生させる。ＢＣＵ６４において、メモリアクセス生成部６５はメモリブロック７０にメモリアクセス要求を出すためにメモリアクセスコマンドを生成し、バス１を介してメモリブロック７０に発行する。
【０００６】
また、メモリブロック７０はメモリスケジューラ７１とメモリ７２とを備えている。メモリスケジューラ７１は各バスマスタで生成されたメモリアクセスコマンドを受け取り、各バスマスタに設定されているバスバンド幅に応じて、メモリアクセスコマンドを調停しながらメモリ７２へのアクセスを制御する。
【０００７】
図１９は従来のプロセススケジューリング方法の典型的な例である。図１９において、優先度によるプロセス選択ステップＳ１０１では、ＲＥＡＤＹ状態であるプロセスの中から最も優先度の高いプロセスを選択する。また、選択プロセスのＣＰＵ割り当てステップＳ１０２では、ステップＳ１０１で選択されたプロセスをＣＰＵで実行するためにコンテキストスイッチを行い、ＣＰＵに割り当てる処理を行う。
【０００８】
また、特許文献１では、複数ＣＰＵを有する計算機または計算機クラスタシステムにおいて、プロセス毎の動作特性を測定し、その動作特性測定値に基づきプロセススケジューリングを行うことによって、処理性能を向上させる方法が開示されている。この方法ではプロセス毎の動作特性としてメモリアクセス量を測定し、メモリアクセス量が大きいプロセスをキャッシュ容量が大きいＣＰＵなど処理量が大きいＣＰＵに割り当てる。
【特許文献１】特開２００３−６１７５号公報（頁１３、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、上述した図１８の装置や図１９の方法では、バス使用の際にプロセス毎のメモリアクセスを考慮していないため、プロセスの動作特性に依存してバス使用率が局所化する恐れがあり、バス使用効率が悪くなるといった問題がある。
【００１０】
また、特許文献１のような、プロセス毎に動作特性を測定し、バス使用率の測定値が大きなプロセスを処理量が最も大きいＣＰＵに割り当てる方法でも、同様に、局所的にバスを占有してしまうことによって自身の将来のバス使用効率を落としてしまう、といった問題や、他マスタのメモリアクセスに対してもアクセス負荷を大きくしてしまう、といった問題があった。
【００１１】
前記の問題に鑑み、本発明は、局所的なメモリアクセスを発生させることなく、平均的なメモリアクセスを発生させることにより、ＣＰＵ自身に割り当てられたバスバンド幅と全体のバスバンド幅のバス使用効率を向上させることを課題とする。
【課題を解決するための手段】
【００１２】
本発明に係るプロセススケジューリングシステムは、バスと、オペレーティングシステムを搭載したＣＰＵコアを有し、前記バスに接続されているバスマスタとしての１つまたは複数のＣＰＵブロックと、前記バスに接続されているバススレーブとしてメモリブロックとを備え、前記ＣＰＵコアは、実行すべきプロセスを決定するプロセススケジューラを備え、前記メモリブロックは、バスマスタの設定バンド幅を設定するとともに、バスマスタからのメモリアクセスコマンドを制御するメモリスケジューラを備え、前記プロセススケジューラは、前記ＣＰＵコアで実行されているプロセスを示すプロセスＩＤを、前記メモリスケジューラに設定するプロセスＩＤ設定部と、前記ＣＰＵコアのプロセススケジューリング条件を変更する機能を有するプロセススケジューリング変更部とを備えたものであり、前記メモリスケジューラは、前記メモリアクセスコマンドから前記プロセスＩＤ毎のバス使用率を集計するメモリアクセス集計部と、前記バス使用率に対して少なくとも１つ以上の閾値を設定する閾値設定部と、前記閾値と前記メモリアクセス集計部の集計結果とを比較するバス使用率比較部とを備え、前記バス使用率比較部の比較結果に応じて、前記プロセススケジューラに割り込みをかけるものであり、前記プロセススケジューリング変更部は、前記メモリスケジューラからの割り込みを受け、前記ＣＰＵコアに割り込みを発生させ、前記ＣＰＵコアのプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更するものである。
【００１３】
この構成によれば、メモリスケジューラでバス使用率を集計することが可能となり、その集計結果を用いてプロセススケジューリング方法を変更することが可能となる。また、メモリスケジューラで全てのバスマスタの使用率を集計可能なため、各バスマスタ毎にバス使用率を集計することなく各バスマスタのプロセス単位のバス使用率を一元的に集計することが可能となる。
【００１４】
また、本発明に係るプロセススケジューリング方法は、前記本発明に係るプロセススケジューリングシステムにおいて、割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、ＲＥＡＤＹ状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、選択したプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えたものである。
【００１５】
この構成によれば、バス使用率が局所的に大きくなった場合にバス使用率の小さなプロセスを選択して、実行することが可能となり、バスの使用効率を平均化することが可能となる。
【００１６】
また、前記本発明に係るプロセススケジューリングシステムにおけるメモリアクセス集計部は、バス使用率を、バスマスタ単位と、システム全体とに分けて集計するものであるのが好ましい。
【００１７】
この構成によれば、システム全体のバス使用率またはバスマスタ単位のバス使用率から割り込みを発生させることが可能となり、プロセススケジューラでスケジューリング条件を変更することが可能となる。システム全体からの割り込みによりスケジューリング変更することでシステムバス幅としての局所的なアクセスを抑えることが可能となり、またバスマスタ単位で割り込みが発生することにより、バスの局所的なアクセスをバスマスタ単位で抑えることが可能となる。
【００１８】
また、前記本発明に係るプロセススケジューリングシステムにおいて、前記ＣＰＵコアは、メモリモードフラグと、前記メモリモードフラグの値を設定する機能を有するメモリモード変更部とを備え、前記メモリスケジューラは、前記閾値設定部が、バス使用率に対して上限閾値と下限閾値とを設定し、バス使用率が前記上限閾値を越えた場合と、バス使用率が前記下限閾値を下回った場合とにおいて、それぞれを割り込み要因として、前記プロセススケジューラに割り込みをかけるものであり、前記メモリモード変更部は、前記メモリスケジューラから割り込みを受けたとき、当該割り込み要因に応じて、前記メモリモードフラグの値を設定するものであり、前記プロセススケジューリング変更部は、前記ＣＰＵコアのプロセススケジューリング条件を、前記メモリモードフラグの値に応じて、変更するものであるのが好ましい。
【００１９】
この構成によれば、バス使用状況をより詳細に把握することが可能となり、上限、下限の閾値による割り込みから、メモリモードフラグを設定することにより、プロセススケジューリング条件をより柔軟に変更することが可能となる。
【００２０】
また、本発明に係るプロセススケジューリング方法は、前記プロセススケジューリングシステムにおいて、割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、割り込み要因を読み込むステップと、前記割り込み要因が、バス使用率が前記上限閾値を越えた場合であるとき、前記メモリモードフラグに第１の所定値を設定する一方、バス使用率が前記下限閾値を下回った場合であるとき、前記メモリフラグに前記第１の所定値と異なる第２の所定値を設定するステップと、前記メモリモードフラグを参照し、前記メモリモードフラグに前記第１の所定値が設定されているとき、ＲＥＡＤＹ状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、選択したプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えたものである。
【００２１】
この構成によれば、バス使用率の状況に応じて、上限閾値を越えた場合はバス使用率の低いプロセス、下限閾値を越えた場合は優先度の高いプロセスをプロセススケジューリングすることが可能となる。
【００２２】
そして、前記本発明に係るプロセススケジューリング方法において、前記メモリモードフラグに前記第２の所定値が設定されているとき、ＲＥＡＤＹ状態のプロセスの中から、非リアルタイムプロセスを選択するステップと、選択した非リアルタイムプロセスを、前記ＣＰＵコアに割り当てて実行するステップとを備えたものとするのが好ましい。
【００２３】
この構成によれば、バス使用率が下限閾値を下回り、バスを有効に使用できる場合に非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
【００２４】
また、前記本発明に係るプロセススケジューリングシステムにおけるメモリスケジューラは、各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部を備え、前記バス使用率比較部は、前記割り込み許可指定部で割り込みが許可されたバスマスタのみを比較対象とするものであるのが好ましい。
【００２５】
この構成によれば、割り込みを発生させるか否かを前もって設定することが可能となり、バス使用率の集計が十分でない場合や、割り込み機能を持たないバスマスタの場合や、システムの起動時の場合などに不要な割り込みを発生することなく、プロセススケジューリングを実行可能となる
また、前記本発明に係るプロセススケジューリングシステムにおいて、前記ＣＰＵブロックを複数備えており、前記メモリスケジューラは、前記バス使用率比較部の比較結果を基にして、前記複数のＣＰＵブロックの中から、割り込みをかけるＣＰＵブロックを選択指定する機能を有する割り込み対象指定部を備えたものであるのが好ましい。
【００２６】
この構成によれば、システム全体のバス使用状況からシステム内でバスバンド幅に大きな負荷を与えているバスマスタに対してプロセススケジューリング条件を変更することが可能となり、システム全体のマスタ毎の役割を考慮して割り込みを発生させることが可能となる。
【発明の効果】
【００２７】
本発明によれば、バスバンド幅を局所的に使用することなく、平均的に使用することが可能となり、バスマスタ自身に割り当てられたバスバンド幅とシステム全体のバスバンド幅の使用効率を向上させることが可能となる。これによりシステム全体の性能に関する最適化を行うことが可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態について、図面を参照して説明する。
【００２９】
本発明の一実施形態に係るプロセススケジューリングシステムは、バスと、このバスに接続されており、オペレーティングシステムを搭載したバスマスタとなる少なくとも１つ以上のＣＰＵと、バススレーブとなるメモリとを備えており、メモリスケジューラによってバスバンド幅がスケジューリングされる構成を備えたものとする。
【００３０】
図１は本発明の一実施形態に係るプロセススケジューリングシステムの概略構成を示すブロック図である。このシステムでは、バス１にＣＰＵブロック１０とメモリブロック２０とが接続されている。ＣＰＵブロック１０はバスマスタの１つであり、それ以外のバスマスタは図示を省略している。
【００３１】
＜ＣＰＵブロック＞
ＣＰＵブロック１０は大きくＣＰＵコア１１、ＬＭＣ１２およびＢＣＵ１３から構成されている。ＣＰＵコア１１ではオペレーティングシステムが動作し、オペレーティングシステムはどのプロセスを実行するかを決定するプロセススケジューラ１００を備えている。また、プロセススケジューラ１００は、ＣＰＵコア１１に割り当てられ実行されるプロセスを示すプロセスＩＤをメモリブロック２０に設定するプロセスＩＤ設定部１０１と、メモリブロック２０からの割り込みによりプロセスのスケジューリングを変更するプロセススケジューリング変更部１０２とを備えている。プロセスＩＤは、ＣＰＵコア１１で実行されるプロセスが切り替わるタイミングで1回のみ、メモリブロック２０に設定される。
【００３２】
ＬＭＣ１２はローカルメモリの制御を行い、キャッシュを搭載している。キャッシュミスなどが発生した場合はリフィル処理を行うために、メモリブロック２０へのメモリアクセスコマンドを発生させるようＢＣＵ１３に対して要求を出す。ＢＣＵ１３はＬＭＣ１２からのメモリアクセス要求に従い、メモリアクセスコマンド生成部１４によりメモリブロック２０に対するメモリアクセスコマンドを生成する。通常、メモリアクセスコマンドには、バスマスタを識別するシステム固有のバスマスタ番号と、アクセス種別（リード／ライト）、アクセスアドレス、ライトデータ、バースト数などの情報が含まれる。
【００３３】
＜メモリブロック＞
メモリブロック２０はバススレーブとしてバス１に接続されている。メモリブロック２０はメモリスケジューラ２００とメモリ２１を備えている。またここでは、メモリブロック２０のバス幅は３２ビットで、１回のメモリアクセスコマンドによって６４バイト転送が可能であり、バスクロックは１００ＭＨｚとして、説明を行う。
【００３４】
メモリスケジューラ２００は、バンド幅設定部２０１、プロセスＩＤ保存部２０２、メモリアクセス集計部２０３、閾値設定部２０４、およびバス使用率比較部２０５を備えている。メモリスケジューラ２００はメモリ２１へのバスマスタからのメモリアクセスを調停する役割がある。バンド幅設定部２０１において、各バスマスタの指定バスバンド幅をレジスタなどに設定することによって、各バスマスタのメモリアクセスを設定バスバンド幅に応じたものにすることが可能となる。
【００３５】
図２に示すバンド幅設定レジスタ３１は、バスマスタに対して使用可能なバスバンド幅を設定するものである。具体的には、サイクル数ＣＹ１とリクエスト回数ＲＱ１が設定されており、サイクル数ＣＹ１の範囲においてリクエスト回数ＲＱ１のリクエストを受け付ける、という形でバスバンド幅を設定する。複数のバスマスタが存在する場合は、それぞれのバスマスタに対して、サイクル数ＣＹ１とリクエスト回数ＲＱ１を設定するものとする。バンド幅設定レジスタ３１は、バンド幅設定部２０１内に設けられている。
【００３６】
プロセスＩＤ保存部２０２はＣＰＵブロック１０において実行されているプロセスＩＤを保存するためのものである。このプロセスＩＤはメモリアクセス集計部２０３においてプロセスＩＤ毎のバスバンド幅を集計する際に用いられる。
【００３７】
メモリアクセス集計部２０３はプロセスＩＤ保存部２０２の内容を参照し、各バスマスタのプロセス単位のメモリアクセス回数をカウントする。ある指定サイクル数の中で、何回リクエストが発生するかによって、そのプロセスの使用バスバンド幅（すなわち、バス使用率）を求めることができる。すなわち、使用バスバンド幅は、
（アクセス回数×転送バイト数×バスクロック）／サイクル数
で求めることができる。例えば、１００サイクル中に２回のメモリアクセスが発生したとき、その使用バスバンド幅は
（２×６４×１００）／１００＝１２８ＭＢｙｔｅ／ｓｅｃ
となる。使用バスバンド幅を求める際のサイクル数は、レジスタ設定などにより、適時変更できるものとする。また、システムの局所的なバス使用率が問題となるようなサイクル数を考慮して、決定するものとする。
【００３８】
図２の実行バンド幅レジスタ３２では、バスマスタ識別子ＭＩ１とプロセスＩＤ毎の使用バンド幅ＢＷ１が設定されている。バスマスタ識別子ＭＩ１はバスマスタそれぞれに対して付与されるシステム固有の識別子である。プロセスＩＤ毎の使用バンド幅ＢＷ１としては、上述の使用バスバンド幅の計算式から求めた値が設定される。実行バンド幅レジスタ３２は、メモリアクセス集計部２０３内に設けられている。
【００３９】
閾値設定部２０４はバスマスタ単位に設定されたバスバンド幅に対し、メモリアクセス集計部２０３で集計したバス使用率がどの程度になった場合にＣＰＵブロック１０に対して、割り込みをかけるかの閾値を指定するためのものである。
【００４０】
図２のバスバンド幅閾値設定レジスタ３３では、割り込みを発生させる閾値が設定されている。具体的には、サイクル数ＣＹ２とリクエスト回数ＲＱ２が設定されており、サイクル数ＣＹ２の範囲でリクエスト回数ＲＱ２のリクエストを受け付ける、という形によってバスバンド幅閾値を設定する。バンド幅閾値設定レジスタ３３は、閾値設定部２０４内に設けられている。
【００４１】
バス使用率比較部２０５は閾値設定部２０４で設定されたバスマスタ毎の特定の閾値とメモリアクセス集計部２０３で集計された現在のバス使用率とを比較する。比較した結果、バス使用率が閾値を越えた場合は、メモリスケジューラ２００はＣＰＵブロック１０に対して割り込みをかける。比較するタイミングは、レジスタ設定などにより、適時変更できるものとする。また、システムの局所的なバス使用率が問題となるようなサイクル数を考慮して、決定するのが好ましい。
【００４２】
図３は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図３において、図１と共通の構成要素には図１と同一の符号を付しており、詳細な説明は省略する。図３において、メモリブロック２０Ａは、メモリスケジューラ２００Ａの内部構成が図１と異なっている。すなわち、メモリスケジューラ２００Ａは、図１に示された各構成要素に加えて、システム全体のバスバンド幅を設定する全体バンド幅設定部２０６と、システム全体のバスバンド幅に対して閾値を設定する全体閾値設定部２０７とを備えている。これに対して、バンド幅設定部２０１はバスマスタ単位のバンド幅を設定するものであり、閾値設定部２０４は各バスマスタのバスバンド幅に対して閾値を設定する。
【００４３】
図３の構成では、各バスマスタのバンド幅使用率が閾値を越えた場合は該当するバスマスタに対して割り込みが発生し、システム全体のバンド幅使用率が閾値を越えた場合は、メモリアクセス集計部２０３で集計されたバンド幅単位のバス使用率から、バス使用率が最も高いバスマスタに対して割り込みが発生する。
【００４４】
図４において、全体バンド幅設定レジスタ４１は、システム全体で使用可能なバスバンド幅を、サイクル数ＣＹ８およびリクエスト回数ＲＱ８によって、全体バスバンド幅として設定する。これは上記の例では、バス幅は３２ビット、バスクロックは１００ＭＨｚであるので、４００ＭＢｙｔｅ／ｓｅｃとなる。また、全体実行バンド幅レジスタ４２は、メモリアクセス集計部２０３で求めた各バスマスタのバス使用率を合計したシステム全体のバス使用率を、全体バス使用バンド幅ＢＷ３として設定する。また、全体バンド幅閾値設定レジスタ４３は割り込みを発生させる閾値を設定するためのものである。具体的には、サイクル数ＣＹ３とリクエスト回数ＲＱ３を設定し、サイクル数ＣＹ３の範囲でリクエスト回数ＲＱ３のリクエストを受け付ける、という形でバスバンド幅閾値を設定する。全体バンド幅設定レジスタ４１は全体バンド幅設定部２０６内に設けられ、全体実行バンド幅レジスタ４２はメモリアクセス集計部２０３内に設けられ、全体バンド幅閾値設定レジスタ４３は全体閾値設定部２０７内に設けられている。
【００４５】
この構成によると、プロセス単位とバス幅全体とに対してそれぞれ閾値を設定し、それぞれの閾値を越えた場合に割り込みを発生させることが可能となる。各バスマスタそれぞれに対して閾値を設定することによってバス効率をより柔軟に平均化させることが可能となり、バス幅全体に対して閾値を設定することによってバス幅全体の急激な使用を抑えることが可能となる。
【００４６】
図５は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図５において、図１および図３と共通の構成要素には図１および図３と同一の符号を付しており、詳細な説明は省略する。
【００４７】
図５において、まず、ＣＰＵブロック１０Ａは、ＣＰＵコア１１Ａの内部構成が図１と異なっている。すなわち、ＣＰＵブロック１０Ａは、プロセススケジューラ１００に加えて、メモリモードフラグ１０３および、メモリモードフラグ１０３の値を設定する機能を有するメモリモード設定部１０４を備えている。
【００４８】
また、メモリブロック２０Ｂは、メモリスケジューラ２００Ｂの内部構成が図３の構成と異なっている。すなわち、メモリスケジューラ２００Ｂは、閾値設定部２０４に代えて、バスマスタ単位のバス使用率に対する上限下限の閾値を設定する上限下限閾値設定部２０４Ａを備えているとともに、全体閾値設定部２０７に代えて、システム全体のバス使用率に対する上限下限の閾値を設定する上限下限全体閾値設定部２０７Ａを備えている。ここで、上限閾値としては、バンド幅設定部２０１で設定されたバスバンド幅に対して、局所的なバスアクセスが起こらないような値を設定するのが好ましく、下限閾値としては、バンド幅設定部２０１で設定されたバスバンド幅に対して、バス使用率がゼロに近く、ほとんど使用されていないことを表すような値を設定するのが好ましい。
【００４９】
図６は上述した上限下限の閾値を設定するレジスタを示す図である。図６において、マスタ上限閾値設定レジスタ５１およびマスタ下限閾値設定レジスタ５２は、図２のバンド幅設定レジスタ３１に対してそれぞれ上限と下限の閾値を設定する。また、全体上限閾値設定レジスタ５３および全体下限閾値設定レジスタ５４は、図４の全体バンド幅設定レジスタ４１に対してそれぞれ上限と下限の閾値を設定する。
【００５０】
具体的には、マスタ上限閾値設定レジスタ５１では、サイクル数ＣＹ４とリクエスト回数ＲＱ４を設定し、サイクル数ＣＹ４の範囲でリクエスト回数ＲＱ４のリクエストを受け付ける、という形によって、上限閾値を設定する。同様に、マスタ下限閾値設定レジスタ５２では、サイクル数ＣＹ５とリクエスト回数ＲＱ５によって、下限閾値を設定し、全体上限閾値設定レジスタ５３では、サイクル数ＣＹ６とリクエスト回数ＲＱ６によって上限閾値を設定し、全体下限閾値設定レジスタ５４では、サイクル数ＣＹ７とリクエスト回数ＲＱ７によって下限閾値を設定する。閾値設定レジスタ５１，５２は、上限下限閾値設定部２０４Ａ内に設けられており、閾値設定レジスタ５３，５４は、上限下限全体閾値設定部２０７Ａ内に設けられている。
【００５１】
図７は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図７において、図５と共通の構成要素には図５と同一の符号を付しており、詳細な説明は省略する。
【００５２】
図７では、メモリブロック２０Ｃにおけるメモリスケジューラ２００Ｃの内部構成が図５と異なっている。すなわち、メモリスケジューラ２００Ｃは、図５に示された各構成要素に加えて、各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部２０８を備えている。この構成では、バスマスタ単位で割り込みを許可するか否かを指定することが可能である。
【００５３】
図８は図７の構成における閾値設定レジスタ５１Ａ，５２Ａ，５３Ａ，５４Ａを示す図である。図８に示すように、各閾値設定レジスタ５１Ａ〜５４Ａには、閾値を越えた場合に割り込みを発生させるか否かを指定するビットＩＲ１〜ＩＲ４が、それぞれ設定されている。例えば、マスタ上限閾値設定レジスタ５１Ａの割り込み発生許可ＩＲ１は、サイクル数ＣＹ４およびリクエスト回数ＲＱ４によって設定した上限閾値をバス使用率が上回った場合に割り込みを発生させるか否かを指定する。割り込み許可指定部２０８は、各閾値設定レジスタ５１Ａ〜５４Ａにおける割り込み発生許可ＩＲ１〜ＩＲ４を参照して動作する。
【００５４】
図９は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図９において、図１、図５および図７と共通の構成要素には図１、図５および図７と同一の符号を付しており、詳細な説明は省略する。
【００５５】
図９の構成は、図５のＣＰＵブロック１０Ａと同一構成の複数（ここでは３個）のＣＰＵブロックＡ１０ａ、ＣＰＵブロックＢ１０ｂ、ＣＰＵブロックＣ１０ｃを備えている。また、メモリブロック２０Ｄにおけるメモリスケジューラ２００Ｄが、図１に示された各構成要素に加えて、図７に示された割り込み許可指定部２０８と、割り込み対象指定部２０９とを備えている。割り込み対象指定部２０９は、バス使用率比較部２０５の比較結果を基にして、複数のＣＰＵブロック１０ａ〜１０ｃの中から、割り込みをかけるＣＰＵブロックを選択指定する機能を有する。この構成により、バス使用率が閾値を越えた場合に、どのバスマスタに対して割り込みを発生させるかが指定可能になる。
【００５６】
図１０は図９の構成における閾値設定レジスタ５１Ｂ，５２Ｂ，５３Ｂ，５４Ｂを示す図である。図１０に示すように、各閾値設定レジスタ５１Ｂ〜５４Ｂには、閾値を越えた場合にどのバスマスタに対して割り込みを発生させるかを指定するビットＩＭ１〜ＩＭ４が、それぞれ設定されている。例えば、マスタ上限閾値設定レジスタ５１Ｂの割り込み発生マスタＩＭ１は、サイクル数ＣＹ４およびリクエスト回数ＲＱ４によって設定した上限閾値をバス使用率が上回った場合にどのバスマスタに対して割り込みを発生させるか否かを指定する。割り込み対象指定部２０９は、各閾値設定レジスタ５１Ｂ〜５４Ｂにおける割り込み発生マスタＩＭ１〜ＩＭ４を参照して動作する。
【００５７】
図１１は図１のシステムにおけるプロセススケジューリング方法を示すフローチャートである。図１１に示すように、プロセススケジューリングが開始されると、割り込みを受けて（Ｓ２０１）、この割り込みがメモリスケジューラ２００からの割り込みか否かを判定する（Ｓ２０２）。メモリスケジューラ２００からの割り込みと判定した場合は（Ｓ２０２でＹＥＳ）、バス使用率によるプロセス選択を行う（Ｓ２０３）。ステップＳ２０３では、図２の実行バンド幅レジスタ３２を参照し、ＲＥＡＤＹ状態のプロセスの中から最もバス使用率の低いプロセスを選択する。一方、メモリスケジューラ２００以外からの割り込みの場合は（Ｓ２０２でＮＯ）、優先度によるプロセス選択を行う（Ｓ２０４）。すなわち、ＲＥＡＤＹ状態のプロセスの中から最も優先度の高いプロセスを選択する。そしてステップＳ２０５において、ステップＳ２０３またはＳ２０４で選択したプロセスにコンテキストスイッチすることによって、ＣＰＵコア１１に選択したプロセスを割り当てる。
【００５８】
このような方法によって、バス使用状態が局所的に大きくなった場合にバス使用率の低いプロセスを実行することができるため、バスの使用効率を平均化することが可能となる。
【００５９】
また、図１２は図５のシステムにおけるプロセススケジューリング方法を示すフローチャートである。図５のＣＰＵブロック１０Ａにおけるメモリモードフラグ１０３はメモリブロック２０の状態を保持するものであり、メモリブロック２０からの割り込みが発生したとき、メモリモードフラグ変更部１０４は割り込み要因を特定し、メモリモードフラグ１０３の設定値を変更する。
【００６０】
図１２に示すように、メモリスケジューラ２００Ｂからの割り込みを受けると（Ｓ３００）、割り込み要因を読み込み（Ｓ３０１）、割り込み要因が、バス使用率が上限閾値を越えた場合であるか否かを判定する（Ｓ３０２）。バス使用率が上限を超えた場合と判定したときは（Ｓ３０２でＹＥＳ）、メモリモードフラグ１０３に第１の所定値として「１」を設定する（Ｓ３０３）。一方、バス使用率が下限閾値を下回った場合と判定したときは（Ｓ３０２でＮＯ）、メモリモードフラグ１０３に第２の所定値として「０」を設定する（Ｓ３０４）。次に、プロセススケジューリングを開始し（Ｓ３０５）、メモリモードフラグ１０３を参照し（Ｓ３０６）、メモリモードフラグ１０３の値が「０」か「１」かを判定する（Ｓ３０７）。メモリモードフラグ１０３が「１」の場合は（Ｓ３０７でＹＥＳ）、図２の実行バンド幅レジスタ３２を参照し、最もバス使用率の低いプロセスを選択する（Ｓ３０８）。一方、メモリモードフラグ１０３が「０」の場合は（Ｓ３０７でＮＯ）、最も優先度の高いプロセスを選択する。そしてステップＳ３１０において、ステップＳ３０８またはＳ３０９で選択したプロセスをＣＰＵコア１１Ａに割り当てる。
【００６１】
なお、図１２のフローでは、メモリスケジューラ２００Ｂからの割り込みと同時にプロセス再スケジューリングも開始される方法を示している。ところが、割り込み時でない場合にプロセススケジューリングが開始されることもある。この場合も、メモリモードフラグ１０３を判定することは変わらず、図１２と同様のステップを行う。すなわち、プロセススケジューリング開始ステップＳ３０５から実行すればよい。
【００６２】
この方法では、メモリモードフラグ１０３によって、プロセススケジューリング方法を、優先度によるものとバス使用率によるものとに切り替えて行うことが可能となる。すなわち、バス使用率の上限、下限を考慮した、使用状態に基づいたプロセススケジューリングが可能となり、バス使用効率をより柔軟に平均化することが可能となる。
【００６３】
図１３は図１２のプロセススケジューリング方法を一部変更したものを示すフローチャートである。図１３では、優先度によるプロセス選択ステップＳ３０９に代えて、非リアルタイムプロセスを選択するステップＳ４０１が実行される。それ以外のステップは、図１２と同様であるため、説明を省略する。ステップＳ３０７においてメモリモードフラグが「０」と判定された場合は（ＮＯ）、ステップＳ４０１において、ＲＥＡＤＹ状態のプロセスの中から最もリアルタイム性が低いプロセスを選択する。
【００６４】
この方法では、バス使用率が低いときに非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
【００６５】
なお、図１１〜図１３のプロセススケジューリング方法は、コンピュータにプログラムを実行させることによって、実現することができる。
【００６６】
＜全体処理の流れ＞
以下では、図１〜図１０のシステム構成と、図１１〜図１３のフローチャートを基にして、本実施形態における全体の処理の流れについて説明する。ここでは、主として、図９のシステム構成を例にとって説明を行う。ただし、ここではバスクロックは１００ＭＨｚ、１回のリクエスト当たりのデータ転送量は６４Ｂｙｔｅとする。
【００６７】
まず、システム起動時の初期設定を行う。各ＣＰＵブロックＡ，Ｂ，Ｃ（１０ａ，１０ｂ，１０ｃ）の設定バンド幅は通常、システム起動時にマスタＣＰＵとなるＣＰＵブロック（例えばＣＰＵブロックＡ１０ａ）からメモリスケジューラ２００Ｄに対してレジスタ設定される。
【００６８】
ここでは、図１４（ａ）に示すように、図２に示したバンド幅設定レジスタ３１とバンド幅閾値設定レジスタ３３を設定する。図１４（ａ）では、バスバンド幅として、ＣＰＵブロックＡ１０ａは９０ＭＢｙｔｅ／ｓｅｃ、ＣＰＵブロックＢ１０ｂは１５０ＭＢｙｔｅ／ｓｅｃ、ＣＰＵブロックＣ１０ｃは６０ＭＢｙｔｅ／ｓｅｃが、それぞれ設定されている。また、閾値として、ここでは簡単に説明するために、設定したバスバンド幅の０．９倍に相当する値を設定する。この閾値はバスマスタ単位で別々に設定することも可能である。
【００６９】
ＣＰＵブロックＡ１０ａに関しては、バンド幅設定レジスタ３１の内容は、サイクル数ＣＹ１を６４０サイクルとすると、リクエスト回数ＲＱ１は９回となる。また、バンド幅閾値設定レジスタ３３の内容はサイクル数ＣＹ２を６４０サイクルとすると、リクエスト回数ＲＱ２は８回となる。同様に、ＣＰＵブロックＢ１０ｂに関しては、バンド幅設定レジスタ３１ではサイクル数ＣＹ１を６４０サイクル、リクエスト回数ＲＱ１を１５回とし、バンド幅閾値設定レジスタ３３ではサイクル数ＣＹ２を６４０サイクル、リクエスト回数ＲＱ２を１３回とする。ＣＰＵブロックＣ１０ｃに関しては、バンド幅設定レジスタ３１ではサイクル数ＣＹ１を６４０サイクル、リクエスト回数ＲＱ１を６回とし、バンド幅閾値設定レジスタ３３ではサイクル数ＣＹ２を６４０サイクル、リクエスト回数ＲＱ２を５回とする。
【００７０】
また、図１４（ｂ）に示すように、全体の設定バスバンド幅は３００ＭＢｙｔｅ／ｓｅｃとなる。全体バンド幅設定レジスタ４１では、サイクルＣＹ８を６４０サイクル、リクエスト回数ＲＱ８を３０回とする。また、全体バンド幅閾値設定レジスタ４３では、サイクル数ＣＹ３を６４０サイクルとすると、リクエスト回数ＲＱ３を２７回とする。
【００７１】
また、メモリアクセス集計部２０３で集計されるプロセスＩＤ毎のバス使用率を示す実行バンド幅レジスタ３２も、ゼロ初期化される。
【００７２】
なお、これらのレジスタは、各ＣＰＵコア１１ａ，１１ｂ，１１ｃで実行されるプロセス数に相当する個数分だけ設けられるものとする。また、メモリモードフラグ１０３ａ，１０３ｂ，１０３ｃもゼロ初期化される。
【００７３】
システムの初期設定が終了すると、各ＣＰＵブロックＡ１０ａ，ＣＰＵブロックＢ１０ｂおよびＣＰＵブロックＣ１０ｃではそれぞれ、実行すべきプロセスがプロセススケジューラ１００ａ，１００ｂ，１００ｃによって選択されて、実行される。ここでは、ＣＰＵブロックＡ１０ａに着目して説明するが、その他のＣＰＵブロックＢ１０ｂ，ＣＰＵブロックＣ１０ｃについても同様の動作を行うものとする。
【００７４】
ＣＰＵブロックＡ１０ａにおいて、プロセススケジューラ１００ａがプロセスを選択するたびに、選択されたプロセスを示すプロセスＩＤが、メモリブロック２０ＤのプロセスＩＤ保存部２０２に設定される。メモリスケジューラ２００Ｄにおけるメモリアクセス集計部２０３は、プロセスＩＤが設定されたときサイクル数のカウントを開始し、次にプロセスＩＤが設定されるまでの期間におけるサイクル数をカウントする。ここで、ＣＰＵブロックＡ１０ａとメモリブロック２０Ｄのクロックが異なる場合は、位相を考慮してサイクル数をカウントするものとする。
【００７５】
選択されたプロセスがＣＰＵコア１１ａで実行され、ＬＭＣ１２ａでキャッシュミスなどが発生し、メモリ２１に対するリフィル処理が発生すると、ＢＣＵ１３ａを介してメモリアクセスコマンドがメモリブロック２０Ｄに送られる。メモリスケジューラ２００Ｄはこのメモリアクセスコマンドを受け取り、図１４に設定したようなバスバンド幅設定に応じたメモリアクセス調停を行い、メモリアクセスを行わせる。メモリアクセス集計部２０３はこのときのメモリアクセスコマンドが送られてくる回数もカウントしておく。これは、プロセスＩＤを保存してからのサイクル数と、メモリアクセス回数とを用いて使用バスバンド幅を計算するためである。このようにして、ＣＰＵブロックＡ１０ａでプロセスが切り替わり実行されていく毎に、メモリアクセス集計部２０３はプロセス毎の使用バスバンド幅を集計する。
【００７６】
図１５（ａ）はプロセス毎に集計したバス使用率の途中結果を示す。図１５（ａ）を見ると、プロセス（１），（２），（３），（４）はそれぞれ、８５，３０，５，９０ＭＢｙｔｅ／ｓｅｃのバンド幅で実行されていることが分かる。ここで、プロセス（４）が実行されているものとする。このプロセス（４）は平均バスバンド幅が９０ＭＢｙｔｅ／ｓｅｃであるため、ＣＰＵブロックＡ１０ａに関してバンド幅設定レジスタ３１に設定されているバスバンド幅と同じバンド幅を必要とする。このプロセス（４）が実行されているときにメモリアクセス集計部２０３は一定サイクル毎に平均バス使用率を集計する。このときの集計結果が、バンド幅閾値設定レジスタ３３に設定された閾値を越えているか否かを判定する。
【００７７】
ＣＰＵブロックＡ１０ａに関する閾値は８１ＭＢｙｔｅ／ｓｅｃであるから、これを越えている場合、ＣＰＵブロックＡ１０ａに対して割り込みが発生する。ＣＰＵブロックＡ１０ａでは割り込みが発生する前は、プロセス（４）が実行されている。このとき、メモリスケジューラ２００Ｄからの割り込みにより、図１１に示すようなプロセススケジューリングが実行される。ここで、プロセス（１），（２），（３）がＲＥＤＡＹ状態であったとすると、図１５（ａ）からバス使用率が最も低いプロセスはプロセス（３）であることが分かるため、バス使用率によるプロセス選択ステップＳ２０３において、プロセス（３）が選択される。選択されたプロセス（３）がＣＰＵコア１１ａに割り当てられ、プロセススケジューリングを終了する。
【００７８】
通常は、プロセス選択は優先度によって実行されるため、上の例では、図１５（ａ）のプロセス優先度からプロセス（１）が選択されるはずであるが、ここでは、プロセス（１）の代わりにプロセス（３）が選択される。実行プロセスがプロセス（４）からプロセス（１）に変更されたとすると、バス使用率は８５ＭＢｙｔｅ／ｓｅｃと依然が高い状況が続くところであったが、本実施形態では、プロセス（４）からプロセス（３）に変更されたことによって、バス使用率は９０ＭＢｙｔｅ／ｓｅｃから５ＭＢｙｔｅ／ｓｅｃに大幅に低下する。すなわち、局所的なバス使用が回避されて、平均的なバス使用が実現される。
【００７９】
また、図１５（ｂ）に示すように、全体平均バスバンド幅は２８０ＭＢｙｔｅ／ｓｅｃになっており、全体バンド幅閾値設定レジスタ４３では閾値は２７０ＭＢｙｔｅ／ｓｅｃに設定されている。このため、バス使用率比較部２０５の比較結果により、割り込みが発生する。ここで、図１５（ｂ）に示すバスマスタ毎のバス使用率から、バス使用率が最も大きいＣＰＵ（Ｂ）に対して割り込みをかけるものとする。割り込みがかかった後のプロセススケジューリング方法は、上述したものと同様である。
【００８０】
次に、図５および図６に示すメモリブロック２０Ｂが、図９のシステム構成に設けられているものとして、説明を行う。ここでは、マスタ上限閾値設定レジスタ５１、マスタ下限閾値設定レジスタ５２、全体上限閾値設定レジスタ５３および全体下限閾値設定レジスタ５４を用いて、プロセススケジューリングが行われる。
【００８１】
すなわち、図１６に示すようなレジスタ初期設定が行われる。バンド幅設定レジスタ３１および全体バンド幅設定レジスタ４１の設定は、図１４と同様である。上限閾値および下限閾値としてはそれぞれ、バスバンド幅設定の０．９倍、０．１倍に相当する値を設定する。マスタ上限閾値設定レジスタ５１の内容は、ＣＰＵブロックＡ１０ａに関しては、サイクル数ＣＹ４は６４０サイクル、リクエスト回数ＲＱ４は８回となる。同様に、ＣＰＵブロックＢ１０ｂに関しては、サイクル数ＣＹ４を６４０サイクル、リクエスト回数ＲＱ４を１３回とし、ＣＰＵブロックＣ１０ｃに関しては、サイクル数ＣＹ４を６４０サイクル、リクエスト回数ＲＱ４を５回とする。また、マスタ下限閾値設定レジスタ５２の内容は、ＣＰＵブロックＡ１０ａに関しては、サイクル数ＣＹ５は６４０サイクル、リクエスト回数ＲＱ５は１回となる。同様に、ＣＰＵブロックＢ１０ｂに関しては、サイクル数ＣＹ５を６４０サイクル、リクエスト回数ＲＱ５は２回とし、ＣＰＵブロックＣ１０ｃに関しては、サイクル数ＣＹ５を６４０サイクル、リクエスト回数ＲＱ５は１回とする。
【００８２】
また、全体上限閾値設定レジスタ５３では、サイクル数ＣＹ６は６４０サイクル、リクエスト回数ＲＱ６は２７回となる。また、全体下限閾値設定レジスタ５４では、サイクル数ＣＹ７は６４０サイクル、リクエスト回数ＲＱ７は３回となる。
【００８３】
ここで、図１５（ａ）に示すようなバス使用率の集計結果が得られたものとし、プロセス（４）が実行されているものとする。上述の説明と同様に、ＣＰＵブロックＡ１０ａに関して、バス使用率が上限閾値を越えていると判定されるため、ＣＰＵブロックＡ１０ａに対して割り込みが発生する。このとき、図１２に示すような処理およびプロセススケジューリングが実行される。このときの割り込みでは、メモリモードフラグ１０３に「１」が設定される。ここで、プロセス（１），（２），（３）がＲＥＤＡＹ状態であったとすると、図１５（ａ）からバス使用率が最も低いプロセスはプロセス（３）であるため、バス使用率によるプロセス選択ステップＳ３０８において、プロセス（３）が選択される。選択されたプロセス（３）がＣＰＵコア１１ａに割り当てられ、プロセススケジューリングを終了する。
【００８４】
次に、プロセス（３）が実行中に平均バス使用率が５ＭＢｙｔｅ／ｓｅｃまで減少したとすると、ＣＰＵブロックＡ１０ａの下限閾値９ＭＢｙｔｅ／ｓｅｃを下回るため、メモリスケジューラ２００Ｂから再度割り込みが発生する。このときの割り込みでは、メモリモードフラグ１０３に「０」が設定される。このため、優先度によるプロセス選択ステップＳ３０９が実行され、プロセス（１），（２），（４）がＲＥＤＡＹ状態であったとすると、図１５（ａ）において優先度が最も高いプロセスはプロセス（１）であるため、プロセス（１）が選択される。
【００８５】
この構成によると、上限閾値および下限閾値による割り込みから、メモリモードフラグを設定することにより、プロセススケジューリング条件をバス使用状況に応じてより正確に設定することが可能となる。
【００８６】
またこのとき、図１３に示すような処理およびプロセススケジューリングが実行されるものとすると、メモリモードフラグ１０３に「０」が設定されているとき、非リアルタイムプロセスを選択するステップＳ４０１が実行される。プロセス（１），（２），（４）がＲＥＤＡＹ状態であったとすると、図１５（ａ）において最も非リアルタイムなプロセスはプロセス（４）であるため、プロセス（４）が選択される。この方法では、バス使用率が低いときに非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
【００８７】
また、他の割り込み発生方法を説明する。ここでは、図１０に示すような、マスタ上限閾値設定レジスタ５１Ｂ、マスタ下限閾値設定レジスタ５２Ｂ、全体上限閾値設定レジスタ５３Ｂおよび全体下限閾値設定レジスタ５４Ｂが設けられているものとする。図１７は各レジスタ５１Ｂ〜５４Ｂにおける割り込み発生許可ビットＩＲ１〜ＩＲ４と、割り込み発生マスタＩＭ１〜ＩＭ４の設定例である。割り込み発生許可ビットＩＲ１〜ＩＲ４は「０」のときは割り込みを発生させないようにし、「１」のときは割り込みを許可する。また、割り込み発生マスタＩＭ１〜ＩＭ４は該当する割り込みが発生した場合にどのバスマスタに対して割り込みを発生させるかを指定するものである。
【００８８】
図１７の例では、下限割り込み発生許可ビットＩＲ２，ＩＲ４を「０」とし、バス使用率が下限閾値を下回っても割り込みを発生させないようにしている。これは、システム起動時などはバス使用率は少ないため、不要な割り込みが発生する恐れがあるためである。また、メモリアクセス集計部２０３においてプロセス毎に十分なバス使用率が集計できていない場合についても、同様に、割り込みを発生させないことで従来のプロセススケジューリング行うことが可能である。全体上限閾値設定レジスタ５３Ｂ、全体下限閾値設定レジスタ５４Ｂについても同様の効果がある。これらの許可ビットＩＲ１〜ＩＲ４は必要なときに「１」に設定することも可能である。
【００８９】
また、各バスマスタそれぞれに対して、割り込み発生許可ビットを持つことで、割り込み機能を持たないバスマスタの場合には割り込みを発生させないことも可能となり、全体バスバンド幅に対する割り込み発生許可ビットを持つことで、システム全体からみたバス使用率でも各バスマスタのバス使用率からでも自由に割り込みを制御することが可能である。
【００９０】
また、割り込み発生マスタＩＭ１〜ＩＭ４は割り込みを発生させるマスタを特定するものである。図１７では例えば、ＣＰＵブロックＡ１０ａとＣＰＵブロックＣ１０ｃとの間に主従関係があり、ＣＰＵブロックＡ１０ａはＣＰＵブロックＣ１０ｃよりも優勢であるものとしており、ＣＰＵブロックＡ１０ａが割り込みを発生させる対象は、自分自身ではなくＣＰＵブロックＣ１０ｃに設定している。この場合、ＣＰＵブロックＡ１０ａに関して割り込みが発生すると、ＣＰＵブロックＣ１０ｃに対して割り込みがかかり、上述したようなプロセススケジューリング方法がＣＰＵブロックＣ１０ｃにおいて実行される。
【００９１】
このような構成により、割り込みを発生させるか否かを前もって設定することが可能となり、バス使用率の集計が十分でない場合や、システムの起動時などに不要な割り込みを発生させることなく、プロセススケジューリングを実行可能となる。また、割り込み対象のマスタを指定することによって、システム全体のマスタ毎の役割を考慮して割り込みを発生させることが可能となる。
【００９２】
また、上述の説明において、「プロセス」を、タスク、スレッドと呼ばれるものと置き換えても、同様の効果が得られる。
【００９３】
また、バスバンド幅を集計、比較するためにサイクル数とリクエスト回数をレジスタに設定して用いているが、バスバンド幅を集計、比較できるものであれば、バスバンド幅性能に依存する他のパラメータ指標を用いても、同様の効果が得られる。
【産業上の利用可能性】
【００９４】
本発明に係るプロセススケジューリングシステムでは、システムのバス使用効率を平均化させ、向上させることができるため、システムＬＳＩなどでのオペレーティングシステムを搭載し、メモリスケジューラによりバスの調停を行うシステムにおいてプログラムを実行させる際に、有用である。
【図面の簡単な説明】
【００９５】
【図１】本発明の一実施形態に係るプロセススケジューリングシステムの概略構成を示すブロック図である。
【図２】バンド幅設定レジスタ、実行バンド幅レジスタおよびバンド幅閾値設定レジスタの例である。
【図３】本発明のプロセススケジューリングシステムの他の構成例である。
【図４】全体バンド幅設定レジスタ、全体実行バンド幅レジスタおよび全体バンド幅閾値設定レジスタの例である。
【図５】本発明のプロセススケジューリングシステムの構成例であって、閾値設定に上限と下限を設けたものである。
【図６】上限閾値および下限閾値を設定するレジスタの例である。
【図７】本発明のプロセススケジューリングシステムの構成例であって、割り込みの許可／不許可の設定を可能にしたものである。
【図８】割り込み発生を許可するビットを備えた閾値設定レジスタの例である。
【図９】本発明のプロセススケジューリングシステムの構成例であって、割り込み対象となるマスタを特定可能にしたものである。
【図１０】割り込み対象マスタを指定するビットを備えた閾値設定レジスタの例である。
【図１１】図１のシステムにおけるプロセススケジューリング方法を示すフローチャートである。
【図１２】図５のシステムにおけるプロセススケジューリング方法を示すフローチャートである。
【図１３】図１２の方法を一部変更したプロセススケジューリング方法を示すフローチャートである。
【図１４】バスバンド幅、およびバスバンド幅閾値の設定例である。
【図１５】各プロセスＩＤの実行バンド幅の例である。
【図１６】バスバンド幅、およびバスバンド幅の上限・下限閾値の設定例である。
【図１７】割り込み発生許可と、割り込み発生対象の設定例である。
【図１８】従来技術におけるプロセススケジューリング装置である。
【図１９】従来技術におけるプロセススケジューリング方法である。
【符号の説明】
【００９６】
１  バス
１０，１０Ａ，１０ａ，１０ｂ，１０ｃ  ＣＰＵブロック
１１，１１Ａ，１１ａ，１１ｂ，１１ｃ  ＣＰＵコア
２０，２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ  メモリブロック
１００，１００ａ，１００ｂ，１００ｃ  プロセススケジューラ
１０１  プロセスＩＤ設定部
１０２  プロセススケジューリング変更部
１０３  メモリモードフラグ
１０４  メモリモード設定部
２００，２００Ａ，２００Ｂ，２００Ｃ  メモリスケジューラ
２０３  メモリアクセス集計部
２０４  閾値設定部
２０４Ａ  上限下限閾値設定部
２０５  バス使用率比較部
２０７  全体閾値設定部
２０７Ａ  上限下限全体閾値設定部
２０８  割り込み許可指定部
２０９  割り込み対象指定部
【図１】
2007041771.tif 000003
【図２】
2007041771.tif 000004
【図３】
2007041771.tif 000005
【図４】
2007041771.tif 000006
【図５】
2007041771.tif 000007
【図６】
2007041771.tif 000008
【図７】
2007041771.tif 000009
【図８】
2007041771.tif 000010
【図９】
2007041771.tif 000011
【図１０】
2007041771.tif 000012
【図１１】
2007041771.tif 000013
【図１２】
2007041771.tif 000014
【図１３】
2007041771.tif 000015
【図１４】
2007041771.tif 000016
【図１５】
2007041771.tif 000017
【図１６】
2007041771.tif 000018
【図１７】
2007041771.tif 000019
【図１８】
2007041771.tif 000020
【図１９】
2007041771.tif 000021