(57)【要約】【課題】各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御し、オーバーヘッドを伴うことなく全体としての処理負荷を最適化する。【解決手段】記憶部１０４は、情報を記憶し、ＣＰＵ１０３は、記憶部１０４に情報を書き込む書き込み処理と、記憶部１０４から情報を読み出す読み出し処理とを含むスレッドを実行し、書き込み処理が実行された時又は読み出し処理が実行された時の少なくとも一方において、記憶部１０４が記憶している情報量に基づいてスレッドの優先度を制御する。【選択図】図１
2008009970.tif 000002
【特許請求の範囲】
【請求項１】
情報を記憶する記憶部と、
前記記憶部に情報を書き込む書き込み処理と、前記記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行部と、
前記スレッド実行部によって前記書き込み処理が実行された時又は前記スレッド実行部によって前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御部とを備えることを特徴とする情報処理装置。
【請求項２】
前記スレッド実行部は、連続した複数のスレッドを実行し、
前記書き込み処理と前記読み出し処理とはそれぞれ異なるスレッドに含まれ、
前記記憶部は、隣接するスレッド間にそれぞれ設けられる複数の記憶部を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記スレッド実行部は、前記書き込み処理を含む第１のスレッドを実行するとともに、前記読み出し処理を含む第２のスレッドを実行し、
前記優先度制御部は、前記記憶部が記憶している前記情報量を所定の基準量と比較し、前記情報量が前記基準量よりも小さい場合、前記第１のスレッドの優先度を上げる処理と、前記第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、
前記情報量が前記基準量よりも大きい場合、前記第１のスレッドの優先度を下げる処理と、前記第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行し、
前記情報量が前記基準量と同じ場合、前記第１のスレッドの現在の優先度を維持するとともに、前記第２のスレッドの現在の優先度を維持する処理を実行することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記スレッド実行部は、前記書き込み処理を含む第１のスレッドを実行するとともに、前記読み出し処理を含む第２のスレッドを実行し、
前記優先度制御部は、
前記記憶部が記憶している前記情報量を所定の第１の基準量と比較し、前記情報量が前記第１の基準量よりも小さい場合、前記第１のスレッドの優先度を上げる処理と、前記第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、
前記情報量を前記第１の基準量よりも大きい第２の基準量と比較し、前記情報量が前記第２の基準量よりも大きい場合、前記第１のスレッドの優先度を下げる処理と、前記第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記スレッド実行部は、第１のプロセスと、前記第１のプロセスとは異なる第２のプロセスとを実行し、
前記第１のプロセス及び前記第２のプロセスは、前記書き込み処理を含むスレッドと前記読み出し処理を含むスレッドとをそれぞれ含み、
前記優先度制御部は、前記第１のプロセスの優先順位が前記第２のプロセスの優先順位よりも高い場合、前記第１のプロセスに含まれるスレッドの優先度を、前記第２のプロセスに含まれるスレッドの優先度よりも高く設定することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記スレッド実行部は、第１のプロセスと、前記第１のプロセスとは異なる第２のプロセスとを実行し、
前記第１のプロセス及び前記第２のプロセスは、前記書き込み処理を含むスレッドと前記読み出し処理を含むスレッドとをそれぞれ含み、
前記優先度は、第１の優先度レベルと、前記第１の優先度レベルよりも高い第２の優先度レベルとを含み、
前記優先度制御部は、前記第１のプロセスの優先順位が前記第２のプロセスの優先順位よりも高い場合、前記第１のプロセスに含まれるスレッドの前記第１の優先度レベルを、前記第２のプロセスに含まれるスレッドの前記第１の優先度レベルよりも高く設定し、前記第１のプロセスに含まれるスレッドの前記第２の優先度レベルを、前記第２のプロセスに含まれるスレッドの前記第２の優先度レベルよりも高く設定することを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記複数のスレッドは、第１の画像処理を実行する第１のスレッドと、前記第１の画像処理の処理結果に対して第２の画像処理を実行する第２のスレッドとを含むことを特徴とする請求項２記載の情報処理装置。
【請求項８】
前記優先度は、第１の優先度レベルと、前記第１の優先度レベルよりも高い第２の優先度レベルとを含むことを特徴とする請求項１記載の情報処理装置。
【請求項９】
記憶部に情報を書き込む書き込み処理と、記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行ステップと、
前記スレッド実行ステップにおいて前記書き込み処理が実行された時又は前記スレッド実行ステップにおいて前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御ステップとを含むことを特徴とする情報処理方法。
【請求項１０】
情報を記憶する記憶部と、
前記記憶部に情報を書き込む書き込み処理と、前記記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行部と、
前記スレッド実行部によって前記書き込み処理が実行された時又は前記スレッド実行部によって前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御部としてコンピュータを機能させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドを同時並行的又はタイムシェアリング的に実行し、１のスレッドの実行結果を記憶部に記憶し、その記憶部に記憶された実行結果を使って他のスレッドを実行する情報処理装置、情報処理方法及び情報処理プログラムに関するものである。
【背景技術】
【０００２】
従来、例えば画像処理等のスレッドを実行し、そのスレッドの優先制御を行うことによって、全体の効率を向上させることが可能な情報処理装置には、例えば特許文献１に記載された画像形成装置がある。
【０００３】
図１８は、従来の画像形成装置の構成を示すブロック図である。図１８に示すように、画像形成装置９００は、フロントパネル９０４と、入出力インターフェイス９０３と、主記憶装置９０２と、中央演算装置９０１と、複数の符号化モジュール９０６と、複数の復号化モジュール９０７と、システムバス９０５とを主要な構成要素として有している。
【０００４】
フロントパネル９０４は、キー入力部、液晶表示部及びＬＥＤ表示部等のうち１つ以上を含み、ユーザによる各種指示情報の入力を受け付けるとともに、ユーザに対して種々のメッセージを表示する。入出力インターフェイス９０３は、装置外部との間でデータの入出力を行うためのインターフェイスである。
【０００５】
主記憶装置９０２は、ＲＡＭ（ランダムアクセスメモリ）等によって構成され、各種データを記憶し保存する。主記憶装置９０２は、後述するプロセス設定部９１２によって設定されたプロセスとそのプロセスの優先度とを対応付けた優先度テーブル９２２も記憶する。
【０００６】
中央演算装置９０１は、ＣＰＵ（中央演算処理装置）等によって構成され、プロセス設定部９１２と、モジュール割当部９１４と、モジュール制御部９１６とを有している。中央演算装置９０１はその他の部分も有しているが説明を省略する。
【０００７】
プロセス設定部９１２は、例えば、フロントパネル９０４からの入力操作に基づいて、符号化モジュール９０６ごと、或いは復号化モジュール９０７ごとに、それぞれ処理させるプロセスを設定する。
【０００８】
また、プロセス設定部９１２は、この設定した各プロセスに対する優先度を、符号化モジュール９０６ごと、或いは復号化モジュール９０７ごとにそれぞれ設定する。更に、プロセス設定部９１２は、このように設定したプロセスとそのプロセスの優先度とを対応付けた優先度テーブル９２２を生成し、これを主記憶装置９０２に記憶する。
【０００９】
モジュール割当部９１４は、入出力インターフェイス９０３から入力された画像データを読み取ると、この画像データを使った画像形成に必要な符号化／復号化処理に関わる１つまたは複数のプロセスを抽出し、この抽出したプロセスに対して、優先度テーブル９２２に基づいて複数の符号化モジュール９０６、或いは復号化モジュール９０７のうちの１つまたは複数を割り当てる。
【００１０】
また、モジュール割当部９１４は、符号化モジュール９０６、或いは復号化モジュール９０７が処理中である場合に新規プロセスが発生した時には、優先度テーブル９２２に基づいて、新規プロセスを含む１つまたは複数のプロセスに対し、複数の符号化モジュール９０６、或いは複数の復号化モジュール９０７のうちの１つまたは複数を改めて割り当てる。
【００１１】
モジュール制御部９１６は、モジュール割当部９１４によって割り当てられた符号化モジュール９０６又は復号化モジュール９０７に対し、各プロセスの符号化または復号化を、他の符号化モジュール９０６、或いは復号化モジュール９０７と並列処理可能に実行させる。
【特許文献１】特開２００５−１６７５５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、このような従来の画像形成装置では、各プロセスの優先度は、そのプロセスが生成された時点で固定的に設定され、その負荷状況に応じて動的に最適制御することはできなかった。これを補うため、各プロセスが自分自身の優先順位を動的に変更して制御を試みることも行われているが、必ずしも充分な最適制御には至っていない。
【００１３】
一方、全てのプロセスとメモリの負荷状態とを管理し、全プロセスの優先順位を動的に変更することで最適制御を実施することも可能である。しかしながら、その制御は、例えば上記中央演算装置９０１、プロセス設定部９１２、モジュール割当部９１４及びモジュール制御部９１６等が担わなければならず、大きな負荷になると同時に、制御オーバーヘッドを伴わざるを得ないという課題を有している。
【００１４】
本発明は、上記の問題を解決するためになされたもので、各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御することができ、オーバーヘッドを伴うことなく全体としての処理負荷を最適化することができる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【００１５】
本発明の一局面に係る情報処理装置は、情報を記憶する記憶部と、前記記憶部に情報を書き込む書き込み処理と、前記記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行部と、前記スレッド実行部によって前記書き込み処理が実行された時又は前記スレッド実行部によって前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御部とを備える。
【００１６】
本発明の他の局面に係る情報処理方法は、憶部に情報を書き込む書き込み処理と、記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行ステップと、前記スレッド実行ステップにおいて前記書き込み処理が実行された時又は前記スレッド実行ステップにおいて前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御ステップとを含む。
【００１７】
本発明の他の局面に係る情報処理プログラムは、情報を記憶する記憶部と、前記記憶部に情報を書き込む書き込み処理と、前記記憶部から情報を読み出す読み出し処理とを含むスレッドを実行するスレッド実行部と、前記スレッド実行部によって前記書き込み処理が実行された時又は前記スレッド実行部によって前記読み出し処理が実行された時の少なくとも一方において、前記記憶部が記憶している情報量に基づいて前記スレッドの優先度を制御する優先度制御部としてコンピュータを機能させる。
【００１８】
これらの構成によれば、書き込み処理が実行された時又は読み出し処理が実行された時の少なくとも一方において、記憶部が記憶している情報量に基づいてスレッドの優先度が制御される。
【００１９】
したがって、各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御することができ、オーバーヘッドを伴うことなく全体としての処理負荷を最適化することができる。
【００２０】
上記の情報処理装置において、前記スレッド実行部は、連続した複数のスレッドを実行し、前記書き込み処理と前記読み出し処理とはそれぞれ異なるスレッドに含まれ、前記記憶部は、隣接するスレッド間にそれぞれ設けられる複数の記憶部を含むことが好ましい。
【００２１】
この構成によれば、あるスレッドが処理結果を記憶部に書き込み、他のスレッドがその処理結果を記憶部から読み出して次の処理を実行するようなパイプラインシステムにおいて、パイプラインを構成する隣接したスレッドが情報の受け渡しに使用する記録部の情報記録量を最適化することができ、より有効に全体としての処理負荷を最適化することができる。
【００２２】
上記の情報処理装置において、前記スレッド実行部は、前記書き込み処理を含む第１のスレッドを実行するとともに、前記読み出し処理を含む第２のスレッドを実行し、前記優先度制御部は、前記記憶部が記憶している前記情報量を所定の基準量と比較し、前記情報量が前記基準量よりも小さい場合、前記第１のスレッドの優先度を上げる処理と、前記第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、前記情報量が前記基準量よりも大きい場合、前記第１のスレッドの優先度を下げる処理と、前記第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行し、前記情報量が前記基準量と同じ場合、前記第１のスレッドの現在の優先度を維持するとともに、前記第２のスレッドの現在の優先度を維持する処理を実行することが好ましい。
【００２３】
この構成によれば、記憶部が記憶している情報量が基準量よりも小さい場合、すなわち、記憶部内の情報量が不足している場合は、記憶部の情報量を増加させるべく、情報を書き込むスレッドが優先して実行される。また、記憶部が記憶している情報量が基準量よりも大きい場合、すなわち、記憶部内の情報量が多い場合は、記憶部の情報量を減らすべく、情報を読み出すスレッドが優先して実行される。さらに、情報量が基準量と同じ場合、すなわち、記憶部内の情報量が適切な量である場合は、記憶部内の情報量を維持すべく、情報を書き込むスレッド及び情報を読み出すスレッドはともに現在の優先度が維持される。
【００２４】
したがって、記憶部内の情報量が適切な量となるように、情報を書き込むスレッドの優先度と情報を読み出すスレッドの優先度とが制御されるので、制御オーバーヘッドを必要最小限に抑えつつ、記憶部内の情報量を適切な量となるように制御することができる。
【００２５】
上記の情報処理装置において、前記スレッド実行部は、前記書き込み処理を含む第１のスレッドを実行するとともに、前記読み出し処理を含む第２のスレッドを実行し、前記優先度制御部は、前記記憶部が記憶している前記情報量を所定の第１の基準量と比較し、前記情報量が前記第１の基準量よりも小さい場合、前記第１のスレッドの優先度を上げる処理と、前記第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、前記情報量を前記第１の基準量よりも大きい第２の基準量と比較し、前記情報量が前記第２の基準量よりも大きい場合、前記第１のスレッドの優先度を下げる処理と、前記第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行することが好ましい。
【００２６】
この構成によれば、記憶部が記憶している情報量が第１の基準量よりも小さい場合、情報を書き込むスレッドが優先して実行され、情報量が第２の基準量よりも大きい場合、情報を読み出すスレッドが優先して実行される。
【００２７】
したがって、優先度の切り替えにいわゆるヒステリシス特性を持たせることができ、一旦優先度が高く（或いは低く）変更されたら、一定期間はその優先度の高い（或いは低い）状態が維持されるようになり、安定した制御を実現することができる。
【００２８】
上記の情報処理装置において、前記スレッド実行部は、第１のプロセスと、前記第１のプロセスとは異なる第２のプロセスとを実行し、前記第１のプロセス及び前記第２のプロセスは、前記書き込み処理を含むスレッドと前記読み出し処理を含むスレッドとをそれぞれ含み、前記優先度制御部は、前記第１のプロセスの優先順位が前記第２のプロセスの優先順位よりも高い場合、前記第１のプロセスに含まれるスレッドの優先度を、前記第２のプロセスに含まれるスレッドの優先度よりも高く設定することが好ましい。
【００２９】
この構成によれば、第１のプロセスの優先順位が第２のプロセスの優先順位よりも高い場合、第１のプロセスに含まれるスレッドの優先度が第２のプロセスに含まれるスレッドの優先度よりも高く設定される。
【００３０】
したがって、第１のプロセスの優先度を第２のプロセスの優先度よりも高く設定することができ、第１のプロセスが実行する処理を、第２のプロセスが実行する処理よりも優先的に実行することができる。
【００３１】
上記の情報処理装置において、前記スレッド実行部は、第１のプロセスと、前記第１のプロセスとは異なる第２のプロセスとを実行し、前記第１のプロセス及び前記第２のプロセスは、前記書き込み処理を含むスレッドと前記読み出し処理を含むスレッドとをそれぞれ含み、前記優先度は、第１の優先度レベルと、前記第１の優先度レベルよりも高い第２の優先度レベルとを含み、前記優先度制御部は、前記第１のプロセスの優先順位が前記第２のプロセスの優先順位よりも高い場合、前記第１のプロセスに含まれるスレッドの前記第１の優先度レベルを、前記第２のプロセスに含まれるスレッドの前記第１の優先度レベルよりも高く設定し、前記第１のプロセスに含まれるスレッドの前記第２の優先度レベルを、前記第２のプロセスに含まれるスレッドの前記第２の優先度レベルよりも高く設定することが好ましい。
【００３２】
この構成によれば、第１のプロセスの優先順位が第２のプロセスの優先順位よりも高い場合、第１のプロセスに含まれるスレッドの第１の優先度レベルが、第２のプロセスに含まれるスレッドの第１の優先度レベルよりも高く設定され、第１のプロセスに含まれるスレッドの第２の優先度レベルが、第２のプロセスに含まれるスレッドの第２の優先度レベルよりも高く設定される。
【００３３】
したがって、第１のプロセスが実行する処理を、第２のプロセスが実行する処理よりも優先的に実行することができ、第１のプロセスにおける記憶部内の情報量を適切な量に制御しつつ、第２のプロセスにおける記憶部内の情報量も適切な量に制御することができる。
【００３４】
上記の情報処理装置において、前記複数のスレッドは、第１の画像処理を実行する第１のスレッドと、前記第１の画像処理の処理結果に対して第２の画像処理を実行する第２のスレッドとを含むことが好ましい。
【００３５】
この構成によれば、複雑な画像処理をより単純な画像処理に分解して段階的に複数のスレッドでパイプライン処理を行うようなシステムにおいて、各スレッドが分担する画像処理の負荷程度に応じてそのスレッドの優先度をきめ細かく設定することができる。しかも、各スレッドの優先度の制御は自律分散的に実行されるので、オーバーヘッドを伴うことなく全体としての処理負荷を最適化することができる。
【００３６】
上記の情報処理装置において、前記優先度は、第１の優先度レベルと、前記第１の優先度レベルよりも高い第２の優先度レベルとを含むことが好ましい。
【００３７】
この構成によれば、優先度は、第１の優先度レベルと、第１の優先度レベルよりも高い第２の優先度レベルとの２値であるので、記憶部に情報を書き込むスレッドと、記憶部から情報を読み出すスレッドとのうちのいずれか一方の優先度を維持又は反転させるだけで、優先度の制御を行うことができる。そのため、優先度制御の処理負荷を軽減することができ、システム全体を監視しながら制御を行うことなしに、システム全体における負荷バランスを最適化することができる。
【発明の効果】
【００３８】
本発明によれば、各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御することができ、オーバーヘッドを伴うことなく全体としての処理負荷を最適化することができる。
【発明を実施するための最良の形態】
【００３９】
以下に、本発明の実施の形態について、図面を参照しながら説明する。但し、本実施の形態はあくまでも具体的な例を挙げて本発明を説明するための一事例に過ぎず、本発明が本実施の形態に限定されるものではない（本明細書の全説明について同様）。
【００４０】
図１は、本実施の形態における情報処理装置の一例としての画像処理装置１００の第１のハードウエア構成例を示すブロック図である。
【００４１】
画像処理装置１００は、１つの情報処理部であるＣＰＵ１０３と、１つの記憶部である記憶部１０４と、処理対象である画像データを入力する画像データ入力部１０２と、処理結果である画像データを出力する画像データ出力部１０５とを有している。画像データ入力部１０２は、例えば、スキャナ、デジタルカメラ、ビデオムービー（カメラ）、デジタルテレビ放送受信機、ＤＶＤプレーヤ（再生機）又は通信機器（通信部、通信装置）などであって、画像データを入力する機器であれば何であっても構わない。また、画像データの形式も、各種の方式で符号化されたものや、圧縮符号化されたもの、暗号化されたもの、何らの符号化が行われていないもの等、どのような形式のものであっても構わない。
【００４２】
画像データ出力部１０５は、画像データ入力部１０２から入力した画像データに対して何らかの処理を行い、或いは場合によっては何らの処理も行うことなく、画像データを出力する。画像データ出力部１０５は、例えば、プラズマディスプレイ装置、液晶表示装置及びテレビジョンモニタ等の画像を表示する機器、各種プリンタ等の画像を印刷する機器、ＤＶＤレコーダ及びＨＤＤ記憶装置等の画像データを記憶する機器、又は通信機器（通信部、通信装置）のように画像データを他の機器と送受信する機器などであって、画像データを出力する機器であれば何であっても構わない。
【００４３】
上記のとおり、この画像処理装置１００は、１つの情報処理部であるＣＰＵ１０３と１つの記憶部である記憶部１０４とを有しており、このＣＰＵ１０３と記憶部１０４とによって、次の３つの処理単位としての第１〜３のスレッドが実行される。第１のスレッドは、記憶部１０４に情報を書き込む書き込み処理を含む。第２のスレッドは、記憶部１０４から情報を読み出す読み出し処理を含む。第３のスレッドは、記憶部１０４に情報を書き込んだ時或いは記憶部１０４から情報を読み出した時の少なくとも一方で、記憶部１０４が記憶している情報量を参照して第１のスレッド或いは第２のスレッドの少なくとも一方の優先度を制御する優先度制御処理を含む。ＣＰＵ１０３及び記憶部１０４は、これら３つのスレッドを実行する。
【００４４】
この第１のハードウエア構成例を有する画像処理装置１００では、上記のとおりＣＰＵ１０３を１つ有するだけなので、これらのスレッドを完全に同時並行的に実行することはできず、時分割的に実行される。また、必ずしもこのような３つのスレッドを実行することは必要でなく、これら３つのスレッドの幾つかは共用されることがあっても構わないし、書き込み処理を含む第１のスレッド、読み出し処理を含む第２のスレッド、優先度制御処理を含む第３のスレッドの幾つかは複数実行されても構わない。また、これら以外のスレッドが実行されても構わない。画像処理装置１００の第１のハードウエア構成における、これら３つのスレッドの構成や実行形式については後で詳細に説明をする。
【００４５】
図２は、本実施の形態における画像処理装置２００の第２のハードウエア構成例を示すブロック図である。
【００４６】
画像処理装置２００は、３つの情報処理部である第１〜３のＣＰＵ２１３，２２３，２３３と、３つの記憶部である第１〜３の記憶部２１４，２２４，２３４と、処理対象である画像データを入力する画像データ入力部２０２と、処理結果である画像データを出力する画像データ出力部２０５とを有している。画像データ入力部２０２と画像データ出力部２０５とは、上記第１のハードウエア構成例である画像処理装置１００と同じであっても構わないし、異なっていても構わない。
【００４７】
上記のとおり、画像処理装置２００は、３つの情報処理部である第１〜３のＣＰＵ２１３，２２３，２３３と、３つの記憶部である第１〜３の記憶部２１４，２２４，２３４とを有しており、これらによって、次の３つの処理単位としての第１〜３のスレッドが実行される。第１のスレッドは、第１の記憶部２１４、第２の記憶部２２４又は第３の記憶部２３４に情報を書き込む書き込み処理を含む。第２のスレッドは、第１の記憶部２１４、第２の記憶部２２４又は第３の記憶部２３４から情報を読み出す読み出し処理を含む。第３のスレッドは、第１の記憶部２１４、第２の記憶部２２４又は第３の記憶部２３４に情報を書き込んだ時或いは第１の記憶部２１４、第２の記憶部２２４又は第３の記憶部２３４から情報を読み出した時の少なくとも一方で、第１の記憶部２１４、第２の記憶部２２４又は第３の記憶部２３４が記憶している情報量を参照して第１のスレッド或いは第２のスレッドの少なくとも一方の優先度を制御する優先度制御処理を含む。第１〜３のＣＰＵ２１３，２２３，２３３及び第１〜３の記憶部２１４，２２４，２３４は、これら３つのスレッドを実行する。
【００４８】
この時、第１のＣＰＵ２１３が上記第１のスレッドを実行し、第２のＣＰＵ２２３が上記第２のスレッドを実行し、第３のＣＰＵ２３３が上記第３のスレッドを実行しても構わないし、それ以外の方法で、第１のＣＰＵ２１３、第２のＣＰＵ２２３及び第３のＣＰＵ２３３が上記第１のスレッド、第２のスレッド及び第３のスレッドを実行しても構わない。
【００４９】
例えば、第１のＣＰＵ２１３が上記第１のスレッドと第２のスレッドとを実行し、第２のＣＰＵ２２３が上記第３のスレッドを実行しても構わないし、例えば、第３のＣＰＵ２３３が上記第１のスレッドを実行し、第２のＣＰＵ２２３が上記第２のスレッドと第３のスレッドとを実行しても構わない。或いは、第１のＣＰＵ２１３が上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行し、第２のＣＰＵ２２３も上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行し、第３のＣＰＵ２３３も上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行しても構わない。
【００５０】
また、第１のＣＰＵ２１３が第１の記憶部２１４を使用し、第２のＣＰＵ２２３が第２の記憶部２２４を使用し、第３のＣＰＵ２３３が第３の記憶部２３４を使用しても構わないし、これら以外の方法で各ＣＰＵが各記憶部を使用しても構わない。例えば、図２に示すように、第１のＣＰＵ２１３が第１の記憶部２１４と第２の記憶部２２４とを使用し、第２のＣＰＵ２２３が第１の記憶部２１４と第２の記憶部２２４と第３の記憶部２３４とを使用し、第３のＣＰＵ２３３が第２の記憶部２２４と第３の記憶部２３４を使用しても構わない。或いは、図２に示すような使用形態に限らず、第１のＣＰＵ２１３が第３の記憶部２３４を使っても構わないし、第３のＣＰＵ２３３が第１の記憶部２１４を使っても構わない。
【００５１】
或いはまた、第２の記憶部２２４が存在せず、第１のＣＰＵ２１３が第１の記憶部２１４を使用し、第２のＣＰＵ２２３が第１の記憶部２１４と第３の記憶部２３４とを使用し、第３のＣＰＵ２３３が第３の記憶部２３４を使用しても構わない。この場合、第１の記憶部２１４は第１のＣＰＵ２１３と第２のＣＰＵ２２３とのデータのやり取りに使われ、第３の記憶部２３４は第２のＣＰＵ２２３と第３のＣＰＵ２３３とのデータのやり取りに使われても構わないし、必ずしもそのような使われ方に限るものではない。
【００５２】
第２のハードウエア構成例に係る画像処理装置２００では、上記のとおりＣＰＵを３つ有しているので、これらのスレッドを完全に同時並行的に実行することもできるし、時分割的に実行することもできる。また、必ずしもこのような３つのスレッドを実行することは必要でなく、これら３つのスレッドの幾つかは共用されることがあっても構わないし、書き込み処理を含む第１のスレッド、読み出し処理を含む第２のスレッド及び優先度制御処理を含む第３のスレッドの幾つかは複数実行されても構わない。また、これら以外のスレッドが実行されても構わない。第２のハードウエア構成例である画像処理装置２００における、これら３つのスレッドの構成や実行形式については後で詳細に説明をする。
【００５３】
図３は、本実施の形態における画像処理装置３００の第３のハードウエア構成例を示すブロック図である。
【００５４】
画像処理装置３００は、３つの情報処理部である第１〜３のＣＰＵ３１３，３２３，３３３と、１つの記憶部である記憶部３０４と、処理対象である画像データを入力する画像データ入力部３０２と、処理結果である画像データを出力する画像データ出力部３０５とを有している。画像データ入力部３０２と画像データ出力部３０５とは、上記第１のハードウエア構成例である画像処理装置１００と同じであっても構わないし、異なっていても構わない。
【００５５】
上記のとおり、画像処理装置３００は、３つの情報処理部である第１〜３のＣＰＵ３１３，３２３，３３３と、１つの記憶部である記憶部３０４とを有しており、これらによって、次の３つの処理単位としての第１〜３のスレッドが実行される。第１のスレッドは、記憶部３０４に情報を書き込む書き込み処理を含む。第２のスレッドは、記憶部３０４から情報を読み出す読み出し処理を含む。第３のスレッドは、記憶部３０４に情報を書き込んだ時或いは記憶部３０４から情報を読み出した時の少なくとも一方で、記憶部３０４が記憶している情報量を参照して第１のスレッド或いは第２のスレッドの少なくとも一方の優先度を制御する優先度制御処理を含む。第１〜３のＣＰＵ３１３，３２３，３３３及び記憶部３０４は、これら３つのスレッドを実行する。
【００５６】
この時、第１のＣＰＵ３１３が上記第１のスレッドを実行し、第２のＣＰＵ３２３が上記第２のスレッドを実行し、第３のＣＰＵ３３３が上記第３のスレッドを実行しても構わないし、それ以外の方法で、第１のＣＰＵ３１３、第２のＣＰＵ３２３及び第３のＣＰＵ３３３が上記第１のスレッド、第２のスレッド及び第３のスレッドを実行しても構わない。
【００５７】
例えば、第１のＣＰＵ３１３が上記第１のスレッドと第２のスレッドとを実行し、第２のＣＰＵ３２３が上記第３のスレッドを実行しても構わないし、例えば、第３のＣＰＵ３３３が上記第１のスレッドを実行し、第２のＣＰＵ３２３が上記第２のスレッドと第３のスレッドとを実行しても構わない。或いは、第１のＣＰＵ３１３が上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行し、第２のＣＰＵ３２３も上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行し、第３のＣＰＵ３３３も上記第１のスレッド、第２のスレッド及び第３のスレッドの全部または一部を実行しても構わない。また、第１のＣＰＵ３１３と第２のＣＰＵ３２３と第３のＣＰＵ３３３とは、それぞれの処理を実行するために、１つの記憶部３０４を共通して使用する。
【００５８】
第３のハードウエア構成例に係る画像処理装置３００では、上記のとおりＣＰＵを３つ有しているので、これらのスレッドを完全に同時並行的に実行することもできるし、時分割的に実行することもできる。但し、１つの記憶部３０４だけを共通で使用するので、記憶部３０４へのアクセスが重複した時にはウエイトする可能性もある。
【００５９】
また、必ずしもこのような３つのスレッドを実行することは必要でなく、これら３つのスレッドの幾つかは共用されることがあっても構わないし、書き込み処理を含む第１のスレッド、読み出し処理を含む第２のスレッド及び優先度制御処理を含む第３のスレッドの幾つかは複数実行されても構わない。また、これら以外のスレッドが実行されても構わない。第３のハードウエア構成例である画像処理装置３００における、これら３つのスレッドの構成や実行形式については後で詳細に説明をする。
【００６０】
ここで、図１に示す画像処理装置１００のＣＰＵ１０３の構成について説明する。図４は、図１に示す画像処理装置１００のＣＰＵ１０３の構成を示す図である。図４において、ＣＰＵ１０３は、スレッド実行部１０３ａ及び優先度制御部１０３ｂを備える。
【００６１】
スレッド実行部１０３ａは、記憶部１０４に情報を書き込む書き込み処理と、記憶部１０４から情報を読み出す読み出し処理とを含むスレッドを実行する。
【００６２】
優先度制御部１０３ｂは、スレッド実行部１０３ａによって書き込み処理が実行された時又はスレッド実行部１０３ａによって読み出し処理が実行された時の少なくとも一方において、記憶部１０４が記憶している情報量に基づいてスレッドの優先度を制御する。
【００６３】
具体的に、スレッド実行部１０３ａは、書き込み処理を含む第１のスレッドを実行するとともに、読み出し処理を含む第２のスレッドを実行する。また、優先度制御部１０３ｂは、記憶部１０４が記憶している情報量を所定の基準量と比較し、情報量が基準量よりも小さい場合、第１のスレッドの優先度を上げる処理と、第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、情報量が基準量よりも大きい場合、第１のスレッドの優先度を下げる処理と、第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行し、情報量が基準量と同じ場合、第１のスレッドの現在の優先度を維持するとともに、第２のスレッドの現在の優先度を維持する処理を実行する。
【００６４】
なお、記憶部１０４は、スレッドを識別するためのスレッド識別情報と、当該スレッドの優先度とを対応付けて優先度情報として記憶している。優先度制御部１０３ｂは、スレッドの優先度を変更する場合、記憶部１０４に記憶されている優先度情報を変更する。スレッド実行部１０３ａは、記憶部１０４に記憶されている優先度情報を参照し、優先度に応じて各スレッドを実行する。
【００６５】
また、本実施の形態では、記憶部１０４が記憶している情報量を所定の基準量と比較しているが、本発明は特にこれに限定されず、優先度制御部１０３ｂは、情報量を所定の第１の基準量と比較し、情報量が第１の基準量よりも小さい場合、第１のスレッドの優先度を上げる処理と、第２のスレッドの優先度を下げる処理とのうちの少なくとも一方を実行し、情報量が第１の基準量以上である場合、情報量を第１の基準量よりも大きい第２の基準量と比較し、情報量が第２の基準量よりも大きい場合、第１のスレッドの優先度を下げる処理と、第２のスレッドの優先度を上げる処理とのうちの少なくとも一方を実行してもよい。なお、情報量が第１の基準量以上第２の基準量以下である場合、優先度制御部１０３ｂは、第１のスレッドの現在の優先度を維持するとともに、第２のスレッドの現在の優先度を維持する処理を実行する。
【００６６】
また、図２に示す画像処理装置２００の第１〜３のＣＰＵ２１３〜２３３及び図３に示す画像処理装置３００の第１〜３のＣＰＵ３１３〜３３３の構成も、図４に示すＣＰＵ１０３の構成と同じである。
【００６７】
次に、情報処理装置において実行されるスレッドの具体的な構成について説明する。図５は、情報処理装置において実行されるスレッドの具体的な構成を示す図である。図５に示すチューナ４０１、デマックス４０２、オーディオデコーダ４０３、オーディオレンダラ４０４、ビデオデコーダ４０５及びビデオレンダラ４０６は、ＣＰＵによって実行されるスレッドの一例を表し、第１〜５のキュー４１１〜４１５は記憶部の一例を表している。
【００６８】
チューナ４０１は、放送信号を受信して第１のキュー４１１に書き込む。デマックス４０２は、第１のキュー４１１から放送信号を読み出し、音声ストリームと映像ストリームとに分離し、音声ストリームを第２のキュー４１２に書き込み、映像ストリームを第３のキュー４１３に書き込む。オーディオデコーダ４０３は、第２のキュー４１２から音声ストリームを読み出し、読み出した音声ストリームをデコードし、デコードした音声ストリームを第４のキュー４１４に書き込む。オーディオレンダラ４０４は、第４のキュー４１４からデコードされた音声ストリームを読み出し、レンダリングする。ビデオデコーダ４０５は、第３のキュー４１３から映像ストリームを読み出し、読み出した映像ストリームをデコードし、デコードした映像ストリームを第５のキュー４１５に書き込む。ビデオレンダラ４０６は、第５のキュー４１５からデコードされた映像ストリームを読み出し、レンダリングする。
【００６９】
このように、本実施の形態において、１のスレッドの実行結果がキュー（記憶部）に書き込まれるとともに、キューに記憶された実行結果を他のスレッドが読み出し、他のスレッドの実行結果がさらにキューに書き込まれる。各スレッドには優先度が割り当てられており、優先度の高いスレッドが優先して実行される。
【００７０】
次に、第１のハードウエア構成例である画像処理装置１００と第２のハードウエア構成例である画像処理装置２００と第３のハードウエア構成例である画像処理装置３００とにおいて、それぞれのＣＰＵが実行するスレッドと、そのスレッドの実行に関連して実行される書き込み処理、読み出し処理及び優先度制御処理について、詳細に説明をする。
【００７１】
図６は、本実施の形態において実行される第１のスレッド構成例を示す図である。第１のスレッド構成例は、スレッド１とスレッド２とスレッド３とスレッド４とスレッド５とスレッド６とスレッド７との、７つのスレッドを含んでいる。
【００７２】
第１のスレッド構成例では、入力される画像データはテレビ放送画像であり、スレッド１はテレビ放送信号から画像データを選局する選局スレッド、スレッド２は選局された画像データを復号化する復号スレッド、スレッド３は復号された画像データから画像を描画する描画スレッドである。なお、このような画像データや画像処理の内容やスレッドは、あくまでも具体的な事例を挙げて説明するための１つの例示に過ぎず、本発明がこれらに限られるものではない。また、本実施の形態では画像データと画像処理を例として説明しているが、これもまた一例に過ぎず、音声データと音声処理、マルチメディアデータとその各種処理、テキストデータとその各種処理、及びその他どのようなデータと処理であっても構わない。
【００７３】
スレッド１は読み出し処理１と画像処理１と書き込み処理１とを含み、スレッド２は読み出し処理２と画像処理２と書き込み処理２とを含み、スレッド３は読み出し処理３と画像処理３と書き込み処理３とを含んでいる。
【００７４】
読み出し処理１はスレッド１の処理対象データをメモリ１から読み出す処理であり、書き込み処理１はスレッド１の処理結果データをメモリ２へ書き込む処理である。読み出し処理２はスレッド２の処理対象データをメモリ２から読み出す処理であり、書き込み処理２はスレッド２の処理結果データをメモリ３へ書き込む処理である。読み出し処理３はスレッド３の処理対象データをメモリ３から読み出す処理であり、書き込み処理３はスレッド３の処理結果データをメモリ４へ書き込む処理である。
【００７５】
また、これらのスレッドや処理とは別に、スレッド４、スレッド５、スレッド６及びスレッド７が存在し、スレッド４はスレッド１の優先度を制御する優先度制御処理１を含んでいる。スレッド５はスレッド１とスレッド２との優先度を制御する優先度制御処理２を含んでおり、スレッド６はスレッド２とスレッド３との優先度を制御する優先度制御処理３を含んでおり、スレッド７はスレッド３の優先度を制御する優先度制御処理４を含んでいる。
【００７６】
優先度制御処理１は、メモリ１に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１の優先度を制御する。なお、優先度制御処理１が優先度を制御するのは必ずしもスレッド１だけとは限らず、読み出し処理１、画像処理１及びスレッド１の何れか１つまたは複数であっても構わない。
【００７７】
優先度制御処理２は、メモリ２に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１及びスレッド２の優先度を制御する。なお、優先度制御処理２が優先度を制御するのは必ずしもスレッド１及びスレッド２だけとは限らず、書き込み処理１、読み出し処理２、画像処理１、画像処理２、スレッド１及びスレッド２の何れか１つまたは複数であっても構わない。
【００７８】
優先度制御処理３は、メモリ３に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド２及びスレッド３の優先度を制御する。なお、優先度制御処理３が優先度を制御するのは必ずしもスレッド２及びスレッド３だけとは限らず、書き込み処理２、読み出し処理３、画像処理２、画像処理３、スレッド２及びスレッド３の何れか１つまたは複数であっても構わない。
【００７９】
優先度制御処理４は、メモリ４に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド３の優先度を制御する。なお、優先度制御処理４が優先度を制御するのは必ずしもスレッド３だけとは限らず、書き込み処理３、画像処理３及びスレッド３の何れか１つまたは複数であっても構わない。
【００８０】
なお、本実施の形態の各優先度制御処理１〜４において用いられる基準量は全て同じ量であるが、本発明は特にこれに限定されず、各優先度制御処理１〜４において用いられる基準量をそれぞれ異なる量に設定してもよい。この場合、各優先度制御処理１〜４において用いられる基準量は、メモリがアンダーフローにならないような情報量が予め設定される。これにより、各スレッドの優先度をより高い精度で制御することができる。
【００８１】
また、必ずしも、優先度制御処理１、優先度制御処理２、優先度制御処理３及び優先度制御処理４の全てが存在することは必要でなく、これらの幾つかだけが存在しても構わないし、これらの幾つかは共用して実行されても構わないし、これら４つ以外の処理が存在しても構わない。
【００８２】
このような第１のスレッド構成例が、第１のハードウエア構成例である画像処理装置１００において実行される時には、スレッド１、スレッド２及びスレッド３と、各スレッドに含まれる全ての処理と、スレッド４、スレッド５、スレッド６及びスレッド７と、各スレッドに含まれる優先度制御処理１、優先度制御処理２、優先度制御処理３及び優先度制御処理４とはＣＰＵ１０３によって実行され、メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部１０４が使用される。
【００８３】
また、このような第１のスレッド構成例が、第２のハードウエア構成例である画像処理装置２００において実行される時には、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ２１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ２２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ２３３によって実行される。しかしながら、本発明はこれに限るものではない。
【００８４】
メモリ１としては第１の記憶部２１４が使用され、メモリ２としては第１の記憶部２１４及び第２の記憶部２２４の何れかまたは両方が使用され、メモリ３としては第２の記憶部２２４または第３の記憶部２３４の何れかまたは両方が使用され、メモリ４としては第３の記憶部２３４が使用される。しかしながら、本発明はこれに限るものではない。
【００８５】
優先度制御処理１は第１のＣＰＵ２１３によって実行され、優先度制御処理２は第１のＣＰＵ２１３または第２のＣＰＵ２２３の何れかまたは両方によって実行され、優先度制御処理３は第２のＣＰＵ２２３または第３のＣＰＵ２３３の何れかまたは両方によって実行され、優先度制御処理４は第３のＣＰＵ２３３によって実行される。しかしながら、本発明はこれに限るものではない。
【００８６】
また、このような第１のスレッド構成例が、第３のハードウエア構成例である画像処理装置３００において実行される時には、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ３１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ３２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ３３３によって実行される。しかしながら、本発明はこれに限るものではない。
【００８７】
メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部３０４が使用される。優先度制御処理１は第１のＣＰＵ３１３によって実行され、優先度制御処理２は第１のＣＰＵ３１３または第２のＣＰＵ３２３の何れかまたは両方によって実行され、優先度制御処理３は第２のＣＰＵ３２３または第３のＣＰＵ３３３の何れかまたは両方によって実行され、優先度制御処理４は第３のＣＰＵ３３３によって実行される。しかしながら、本発明はこれに限るものではない。
【００８８】
図７は、本実施の形態において実行される第２のスレッド構成例を示す図である。第２のスレッド構成例は、スレッド１とスレッド２とスレッド３との３つのスレッドを含んでいる。この各スレッドは第１のスレッド構成例と同様である。しかしながら、本発明はこれに限るものではない。
【００８９】
スレッド１は、読み出し処理１と画像処理１と書き込み処理１と優先度制御処理１とを含み、スレッド２は、読み出し処理２と画像処理２と書き込み処理２と優先度制御処理２とを含み、スレッド３は、読み出し処理３と画像処理３と書き込み処理３と優先度制御処理３とを含んでいる。各読み出し処理と各画像処理と各書き込み処理とは第１のスレッド構成例と同様である。しかしながら、本発明はこれに限るものではない。
【００９０】
優先度制御処理１は、メモリ１に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１、読み出し処理１及び画像処理１の何れか１つ或いは幾つかの優先度を制御する。また、優先度制御処理１は、メモリ２に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１、書き込み処理１及び画像処理１の何れか１つ或いは幾つかの優先度も制御する。
【００９１】
優先度制御処理２は、メモリ２に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド２、読み出し処理２及び画像処理２の何れか１つ或いは幾つかの優先度を制御する。また、優先度制御処理２は、メモリ３に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド２、書き込み処理２及び画像処理２の何れか１つ或いは幾つかの優先度も制御する。
【００９２】
優先度制御処理３は、メモリ３に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド３、読み出し処理３及び画像処理３の何れか１つ或いは幾つかの優先度を制御する。また、優先度制御処理３は、メモリ４に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド３、書き込み処理３及び画像処理３の何れか１つ或いは幾つかの優先度も制御する。
【００９３】
また、必ずしも、優先度制御処理１、優先度制御処理２及び優先度制御処理３の全てが存在することは必要でなく、これらの幾つかだけが存在しても構わないし、これらの幾つかは共用して実行されても構わないし、これら３つ以外の処理が存在しても構わない。
【００９４】
このような第２のスレッド構成例が、第１のハードウエア構成例である画像処理装置１００において実行される時、スレッド１、スレッド２及びスレッド３と、それぞれのスレッドに含まれる全ての処理とはＣＰＵ１０３によって実行され、メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部１０４が使用される。
【００９５】
また、このような第２のスレッド構成例が、第２のハードウエア構成例である画像処理装置２００において実行される時、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ２１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ２２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ２３３によって実行される。しかしながら、本発明はこれに限るものではない。
【００９６】
メモリ１としては第１の記憶部２１４が使用され、メモリ２としては第１の記憶部２１４または第２の記憶部２２４の何れか一方或いは両方が使用され、メモリ３としては第２の記憶部２２４または第３の記憶部２３４の何れか一方或いは両方が使用され、メモリ４としては第３の記憶部２３４が使用される。しかしながら、本発明はこれに限るものではない。
【００９７】
また、このような第２のスレッド構成例が、第３のハードウエア構成例である画像処理装置３００において実行される時、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ３１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ３２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ３３３によって実行される。メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部３０４が使用される。しかしながら、本発明はこれに限るものではない。
【００９８】
図８は、本実施の形態において実行される第３のスレッド構成例を示す図である。第３のスレッド構成例は、スレッド１とスレッド２とスレッド３とスレッド４との４つのスレッドを含んでいる。各スレッドは、第１のスレッド構成例と同様である。しかしながら、本発明はこれに限るものではない。
【００９９】
スレッド１は、読み出し処理１と画像処理１と書き込み処理１とを含み、スレッド２は、読み出し処理２と画像処理２と書き込み処理２とを含み、スレッド３は、読み出し処理３と画像処理３と書き込み処理３とを含んでいる。各読み出し処理と各画像処理と各書き込み処理とは第１のスレッド構成例と同様である。しかしながら、本発明はこれに限るものではない。
【０１００】
また、スレッド１、スレッド２及びスレッド３やこれらのスレッドに含まれる処理とは別に、スレッド４が存在する。スレッド４には、スレッド１、スレッド２及びスレッド３並びにこれらに含まれる書き込み処理及び読み出し処理の優先度を制御する優先度制御処理が含まれる。
【０１０１】
優先度制御処理は、メモリ１に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１の優先度を制御する。なお、優先度制御処理が優先度を制御するのは必ずしもスレッド１だけとは限らず、読み出し処理１、画像処理１及びスレッド１の何れか１つまたは複数であっても構わない。
【０１０２】
また、優先度制御処理は、メモリ２に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド１及びスレッド２の優先度を制御する。なお、優先度制御処理が優先度を制御するのは必ずしもスレッド１及びスレッド２だけとは限らず、書き込み処理１、読み出し処理２、画像処理１、画像処理２、スレッド１及びスレッド２の何れか１つまたは複数であっても構わない。
【０１０３】
また、優先度制御処理は、メモリ３に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド２及びスレッド３の優先度を制御する。なお、優先度制御処理が優先度を制御するのは必ずしもスレッド２及びスレッド３だけとは限らず、書き込み処理２、読み出し処理３、画像処理２、画像処理３、スレッド２及びスレッド３の何れか１つまたは複数であっても構わない。
【０１０４】
また、優先度制御処理は、メモリ４に記憶している情報量を基準量と比較し、比較結果に基づいて、スレッド３の優先度を制御する。なお、優先度制御処理が優先度を制御するのは必ずしもスレッド３だけとは限らず、書き込み処理３、画像処理３及びスレッド３の何れか１つまたは複数であっても構わない。
【０１０５】
このような第３のスレッド構成例が、第１のハードウエア構成例である画像処理装置１００において実行される時、スレッド１、スレッド２及びスレッド３と、それぞれのスレッドに含まれる全ての処理と、優先度制御処理とはＣＰＵ１０３によって実行され、メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部１０４が使用される。
【０１０６】
また、このような第３のスレッド構成例が、第２のハードウエア構成例である画像処理装置２００において実行される時、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ２１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ２２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ２３３によって実行される。しかしながら、本発明はこれに限るものではない。
【０１０７】
メモリ１としては第１の記憶部２１４が使用され、メモリ２としては第１の記憶部２１４または第２の記憶部２２４の何れか一方または両方が使用され、メモリ３としては第２の記憶部２２４または第３の記憶部２３４の何れか一方または両方が使用され、メモリ４としては第３の記憶部２３４が使用される。しかしながら、本発明はこれに限るものではない。優先度制御処理は、第１のＣＰＵ２１３、第２のＣＰＵ２２３及び第３のＣＰＵ２３３の何れか１つまたは複数によって実行される。しかしながら、本発明はこれに限るものではない。
【０１０８】
また、このような第３のスレッド構成例が、第３のハードウエア構成例である画像処理装置３００において実行される時、スレッド１とスレッド１に含まれる全ての処理とは第１のＣＰＵ３１３によって実行され、スレッド２とスレッド２に含まれる全ての処理とは第２のＣＰＵ３２３によって実行され、スレッド３とスレッド３に含まれる全ての処理とは第３のＣＰＵ３３３によって実行される。しかしながら、本発明はこれに限るものではない。
【０１０９】
メモリ１、メモリ２、メモリ３及びメモリ４としては記憶部３０４が使用される。優先度制御処理は、第１のＣＰＵ３１３、第２のＣＰＵ３２３及び第３のＣＰＵ３３３の何れか１つ或いは幾つかによって実行される。しかしながら、本発明はこれに限るものではない。
【０１１０】
次に、上記第１のハードウエア構成例、第２のハードウエア構成例、第３のハードウエア構成例、第１のスレッド構成例、第２のスレッド構成例、及び第３のスレッド構成例の何れにおいても共通して各優先度制御処理が実行する優先度の制御方法について、第１の優先度制御、第２の優先度制御及び第３の優先度制御の各例を挙げて説明をする。
【０１１１】
図９及び図１０は、第１のハードウエア構成例、第２のハードウエア構成例、第３のハードウエア構成例、第１のスレッド構成例、第２のスレッド構成例及び第３のスレッド構成例の全てにおいて実行される優先度制御の一例を示す図である。図９は、メモリに情報を書き込む時に、書き込みに伴って行われる優先度制御の処理内容を示す図であり、図１０は、メモリから情報を読み出す時に、読み出しに伴って行われる優先度制御の処理内容を示す図である。この情報の書き込み又は読み出しの対象となるメモリを仮に“メモリｎ”とする。
【０１１２】
この優先度制御において、各スレッドまたは処理の優先度のレベルは、Ｈ（Ｈｉｇｈ：優先度高）レベルとＬ（Ｌｏｗ：優先度低）レベルとの２段階で表される。この優先度のレベル（Ｈ／Ｌ）は、例えばＣＰＵ１０３〜ＣＰＵ３３３（ハードウエア構成例によって異なる）の割り込みレベルの差を用いて実現することができる。但し、本発明はこのような例に限るものではなく、優先度のレベルは３段階以上であっても構わないし、優先度のレベルの制御を割り込みレベルの差以外の方法で実現しても構わない。このように、優先度のレベルを３段階以上にすることで、よりきめ細かな優先度の制御と、全体の最適化を実現することが可能になる。
【０１１３】
なお、優先度レベルが３段階（３値）以上の場合、書き込み処理時及び読み出し処理時の少なくとも一方において、次の条件を満たすように各スレッドの優先度が制御される。すなわち、メモリｎの情報量が基準量より少ない場合、書き込み処理側のスレッドの優先度が、読み出し処理側のスレッドの優先度よりも大きくなるように制御する。また、メモリｎの情報量が基準量より多い場合、書き込み処理側のスレッドの優先度が、読み出し処理側のスレッドの優先度よりも小さくなるように制御する。さらに、メモリｎの情報量が基準量と等しい場合、書き込み処理側のスレッドの優先度と、読み出し処理側のスレッドの優先度とは現在の優先度が維持される。
【０１１４】
このとき、書き込み処理側のスレッドの優先度と、読み出し処理側のスレッドの優先度とのうちのいずれか一方のみが変更されることにより、スレッドの優先度の設定回数を減らすことができる。
【０１１５】
この優先度制御では、メモリｎ内の情報量を基準量と比較して、メモリｎ内の情報量が基準量よりも少ないか、メモリｎ内の情報量が基準量と等しいか、メモリｎ内の情報量が基準量よりも多いかによって、メモリｎから情報を読み出す読み出し処理ｘ、読み出し処理ｘを含むスレッドｘ、メモリｎに情報を書き込む書き込み処理ｙ、又は書き込み処理ｙを含むスレッドｙの優先度を、スレッドｚに含まれる優先度制御処理ｚ’が制御する。
【０１１６】
なお、“ｎ”は“１”〜“４”の何れかであり、“ｘ”と“ｙ”とは“１”〜“３”の何れかであり、“ｚ”は“１”〜“７”の何れかであり、“ｚ’”は“１”〜“４”又は空白の何れかであり、上記各ハードウエア構成例及びスレッド構成例によって異なる。
【０１１７】
また、各スレッドや処理の優先度を上げる時の基準量と、優先度を下げる時の基準量とを違う値としても構わない。例えば、優先度を上げる時の基準量を第１の基準量として具体的な値を“第１の基準量＝４”とし、優先度を下げる時の基準量を第２の基準量として具体的な値を“第２の基準量＝３”のように定めても構わない。このようにして、優先度の切り替えにいわゆるヒステリシス特性を持たせることで、一旦優先度が高く（或いは低く）変更されたら、一定期間はその優先度の高い（或いは低い）状態が維持されるように、安定的な制御を実行することが可能になる。
【０１１８】
それぞれのスレッドを実行するＣＰＵとそれぞれのメモリとして使用される記憶部も、上記各ハードウエア構成例及びスレッド構成例によって異なる。また、必ずしも、スレッド単位での優先度制御ではなく、これとは別に或いはこれと併せて、各スレッドに含まれる読み出し処理ｘ、書き込み処理ｙ及び画像処理ｗ（“ｗ”は“１”〜“３”の何れか）単位での優先度制御であっても構わない。
【０１１９】
図９に示すように、例えば、情報の書き込み時に行う優先度制御では、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも少ない場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＨレベルになる。
【０１２０】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも少なければ、書き込み処理を含むスレッドの優先度が高く設定され、メモリｎへのデータの書き込みが促進されて、メモリｎ内の情報量が増え、基準量に近付けることができる。
【０１２１】
或いは、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量と等しい場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＬレベルになる。
【０１２２】
このような優先度制御によって、メモリｎ内の情報量が基準量と等しければ、そのままの優先度が維持され、メモリｎ内の情報量も基準量と等しい状態が維持される。
【０１２３】
或いは、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも多い場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＬレベルになる。
【０１２４】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも多ければ、そのまま低い優先度が維持され、メモリｎ内の情報量を減らして基準量に近付けることができる。
【０１２５】
或いはまた、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量よりも少ない場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＨレベルになる。
【０１２６】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも少なければ、書き込み処理を含むスレッドの優先度はそのまま高い状態が維持され、メモリｎへのデータの書き込みが促進されて、メモリｎ内の情報量が増え、基準量に近付けることができる。
【０１２７】
或いは、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量と等しい場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＨレベルになる。
【０１２８】
このような優先度制御によって、メモリｎ内の情報量が基準量と等しければ、そのままの優先度が維持され、メモリｎ内の情報量も基準量と等しい状態が維持される。
【０１２９】
或いは、メモリｎへの情報の書き込み処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量よりも多い場合、制御後のメモリｎへの情報の書き込み処理を含むスレッドの優先度はＬレベルになる。
【０１３０】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも多ければ、書き込み処理を含むスレッドの優先度が低く設定され、メモリｎへのデータの書き込みが抑制されて、メモリｎ内の情報量が減り、基準量に近付けることができる。
【０１３１】
また、図１０に示すように、例えば、情報の読み出し時に行う優先度制御では、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも少ない場合、制御後のメモリｎへの情報の読み出し処理を含むスレッドの優先度はＬレベルになる。
【０１３２】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも少なければ、読み出し処理を含むスレッドの優先度は低い状態が維持され、メモリｎからのデータの読み出しが抑制されて、メモリｎ内の情報量が増え、基準量に近付けることができる。
【０１３３】
或いは、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量と等しい場合、制御後のメモリｎへの情報の読み出し処理を含むスレッドの優先度はＬレベルになる。
【０１３４】
このような優先度制御によって、メモリｎ内の情報量が基準量と等しければ、そのままの優先度が維持され、メモリｎ内の情報量も基準量と等しい状態が維持される。
【０１３５】
或いは、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも多い場合、制御後のこのメモリｎへの情報の読み出し処理を含むスレッドの優先度はＨレベルになる。
【０１３６】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも多ければ、読み出し処理を含むスレッドの優先度が高く設定され、メモリｎ内の情報量を減らして基準量に近付けることができる。
【０１３７】
或いはまた、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量よりも少ない場合、制御後のこのメモリｎへの情報の読み出し処理を含むスレッドの優先度はＬレベルになる。
【０１３８】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも少なければ、読み出し処理を含むスレッドの優先度が低く設定され、メモリｎへのデータの読み出しが抑制されて、メモリｎ内の情報量が増え、基準量に近付けることができる。
【０１３９】
或いは、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量と等しい場合、制御後のこのメモリｎへの情報の読み出し処理を含むスレッドの優先度はＨレベルになる。
【０１４０】
このような優先度制御によって、メモリｎ内の情報量が基準量と等しければ、そのままの優先度が維持され、メモリｎ内の情報量も基準量と等しい状態が維持される。
【０１４１】
或いは、メモリｎへの情報の読み出し処理を含むスレッドの制御前の優先度がＨレベルであり、メモリｎ内の情報量が基準量よりも多い場合、制御後のこのメモリｎへの情報の読み出し処理を含むスレッドの優先度はＨレベルになる。
【０１４２】
このような優先度制御によって、メモリｎ内の情報量が基準量よりも多ければ、読み出し処理を含むスレッドの優先度は高い状態が維持され、メモリｎへのデータの読み出しが促進されて、メモリｎ内の情報量が減り、基準量に近付けることができる。
【０１４３】
ここで、本実施の形態における優先度制御処理について説明する。なお、本実施の形態において、情報書き込み時における優先度制御処理と、情報読み出し時における優先度制御処理とは異なる。そこで、まず、情報書き込み時における優先度制御処理について説明する。図１１は、図１に示す画像処理装置１００による、情報書き込み時における優先度制御処理について説明するためのフローチャートである。
【０１４４】
まず、ステップＳ１において、ＣＰＵ１０３は、スレッドを実行する。ここでは、ＣＰＵ１０３は、スレッドを実行することにより、メモリｎへ情報を書き込む。なお、記憶部１０４は、複数のメモリを含み、メモリｎは、この複数のメモリのうちの１つを表している。次に、ステップＳ２において、ＣＰＵ１０３は、メモリｎに記憶されている現在の情報量を取得する。
【０１４５】
次に、ステップＳ３において、ＣＰＵ１０３は、取得したメモリｎの情報量が予め設定されている基準量よりも小さいか否かを判断する。なお、本実施の形態において、基準量は、記憶部１０４に予め記憶されており、メモリｎがアンダーフローにならないような情報量が予め設定されている。ここで、メモリｎの情報量が基準量よりも小さいと判断された場合（ステップＳ３でＹＥＳ）、ステップＳ４において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度がＬレベルであるか否かを判断する。
【０１４６】
書き込み処理を行ったスレッドの優先度がＬレベルであると判断された場合（ステップＳ４でＹＥＳ）、ステップＳ５において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度をＬレベルからＨレベルに変更する。一方、書き込み処理を行ったスレッドの優先度がＬレベルでないと判断された場合、すなわち、書き込み処理を行ったスレッドの優先度がＨレベルであると判断された場合（ステップＳ４でＮＯ）、ステップＳ７において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度を現在のレベルで維持する。
【０１４７】
メモリｎの情報量が基準量以上であると判断された場合（ステップＳ３でＮＯ）、ステップＳ６において、ＣＰＵ１０３は、メモリｎの情報量が基準量と同じであるか否かを判断する。ここで、メモリｎの情報量が基準量と同じであると判断された場合（ステップＳ６でＹＥＳ）、ステップＳ７において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度を現在のレベルで維持する。
【０１４８】
一方、メモリｎの情報量が基準量と同じでないと判断された場合、すなわち、メモリｎの情報量が基準量よりも大きいと判断された場合（ステップＳ６でＮＯ）、ステップＳ８において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度がＬレベルであるか否かを判断する。
【０１４９】
書き込み処理を行ったスレッドの優先度がＬレベルであると判断された場合（ステップＳ８でＹＥＳ）、ステップＳ７において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度を現在のレベルで維持する。一方、書き込み処理を行ったスレッドの優先度がＬレベルでないと判断された場合、すなわち、書き込み処理を行ったスレッドの優先度がＨレベルであると判断された場合（ステップＳ８でＮＯ）、ステップＳ９において、ＣＰＵ１０３は、書き込み処理を行ったスレッドの優先度をＨレベルからＬレベルに変更する。
【０１５０】
続いて、情報読み出し時における優先度制御処理について説明する。図１２は、図１に示す画像処理装置１００による、情報読み出し時における優先度制御処理について説明するためのフローチャートである。
【０１５１】
まず、ステップＳ１１において、ＣＰＵ１０３は、スレッドを実行する。ここでは、ＣＰＵ１０３は、スレッドを実行することにより、メモリｎから情報を読み出す。次に、ステップＳ１２において、ＣＰＵ１０３は、メモリｎに記憶されている現在の情報量を取得する。
【０１５２】
次に、ステップＳ１３において、ＣＰＵ１０３は、取得したメモリｎの情報量が予め設定されている基準量よりも小さいか否かを判断する。ここで、メモリｎの情報量が基準量よりも小さいと判断された場合（ステップＳ１３でＹＥＳ）、ステップＳ１４において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度がＬレベルであるか否かを判断する。
【０１５３】
読み出し処理を行ったスレッドの優先度がＬレベルであると判断された場合（ステップＳ１４でＹＥＳ）、ステップＳ１７において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度を現在のレベルで維持する。一方、読み出し処理を行ったスレッドの優先度がＬレベルでないと判断された場合、すなわち、読み出し処理を行ったスレッドの優先度がＨレベルであると判断された場合（ステップＳ１４でＮＯ）、ステップＳ１５において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度をＨレベルからＬレベルに変更する。
【０１５４】
メモリｎの情報量が基準量以上であると判断された場合（ステップＳ１３でＮＯ）、ステップＳ１６において、ＣＰＵ１０３は、メモリｎの情報量が基準量と同じであるか否かを判断する。ここで、メモリｎの情報量が基準量と同じであると判断された場合（ステップＳ１６でＹＥＳ）、ステップＳ１７において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度を現在のレベルで維持する。
【０１５５】
一方、メモリｎの情報量が基準量と同じでないと判断された場合、すなわち、メモリｎの情報量が基準量よりも大きいと判断された場合（ステップＳ１６でＮＯ）、ステップＳ１８において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度がＬレベルであるか否かを判断する。
【０１５６】
読み出し処理を行ったスレッドの優先度がＬレベルであると判断された場合（ステップＳ１８でＹＥＳ）、ステップＳ１９において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度をＬレベルからＨレベルに変更する。一方、読み出し処理を行ったスレッドの優先度がＬレベルでないと判断された場合、すなわち、読み出し処理を行ったスレッドの優先度がＨレベルであると判断された場合（ステップＳ１８でＮＯ）、ステップＳ１７において、ＣＰＵ１０３は、読み出し処理を行ったスレッドの優先度を現在のレベルで維持する。
【０１５７】
このように、書き込み処理が実行された時又は読み出し処理が実行された時の少なくとも一方において、記憶部が記憶している情報量に基づいてスレッドの優先度が制御される。したがって、各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御することができ、オーバーヘッドを伴うことなく全体としての処理負荷を最適化することができる。
【０１５８】
続いて、図９及び図１０に示す優先度制御の処理内容に従って実行される第１の優先度制御例を図１３に示す。図１３は、図９及び図１０に示す優先度制御の処理内容に従って実行される第１の優先度制御例を示す図である。
【０１５９】
第１の優先度制御例では、優先度制御処理によって行われる１回のメモリ内の情報量と基準量との比較に対して、１つの優先度の変更だけを実行する。従って、優先度を変更するためのシステムコールは１回発生するだけで、システムコールに伴うオーバーヘッドの発生は最小限度に抑えられる。その一方で、１回のメモリ内の情報量と基準量との比較では、より望ましい優先度の制御状態にできない可能性がある。
【０１６０】
例えば、図６に示す第１のスレッド構成例において、メモリ２に情報を書き込む書き込み処理１の優先度がＨレベルで、メモリ２から情報を読み出す読み出し処理の優先度がＬレベルであり、メモリ２内の情報量が基準量よりも多かったと仮定する。
【０１６１】
このような仮定において、この第１の優先度制御例では、書き込み処理１の優先度をＬレベルに変更するか、読み出し処理２の優先度をＨレベルに変更するかの、どちらか一方を実行する。しかしながら、同じ仮定においては、書き込み処理１の優先度をＬレベルに変更すると同時に、読み出し処理２の優先度をＨレベルに変更した方が、より望ましい制御であるかも知れない。
【０１６２】
しかしながら、第１の優先度制御ではこのような優先度制御を行わず、１回のメモリ内の情報量と基準量との比較に対して、１つの優先度の変更だけを実行する。従って、書き込み処理１の優先度をＬレベルに変更し、読み出し処理２の優先度をＨレベルに変更するには、同じ条件の下で２回メモリ内の情報量と基準量との比較が行われなければならない。
【０１６３】
このような優先度制御では、優先度を変更するためのシステムコールに伴うオーバーヘッドを最小限度に抑えることができるとともに、図６から図８に示す第１のスレッド構成例から第３のスレッド構成例の、どのようなスレッド構成例であっても実行することができる（後述する第２の優先度制御例は、特定のスレッド構成例でしか実行することができない）。
【０１６４】
図１３に示す例では、読み出し処理、書き込み処理及び画像処理等の処理単位ではなく、スレッド単位でスレッド１からスレッド３までの優先度を制御する。スレッド１は処理結果（この例では画像処理の結果、以下同様。但し、本発明はこの例に限られるものではない。）をメモリ２に書き込み、スレッド２はメモリ２から情報を読み出して処理を行う。スレッド２は処理結果をメモリ３に書き込み、スレッド３はメモリ３から情報を読み出して処理を行う。
【０１６５】
何れかの優先度制御処理（第１のスレッド構成例から第３のスレッド構成例に応じて異なる）は、メモリ２の情報量を基準量と比較してスレッド１及びスレッド２の優先度を制御する。また、他の優先度制御処理或いは同じ優先度制御処理（第１のスレッド構成例から第３のスレッド構成例に応じて異なる）は、メモリ３の情報量を基準量と比較してスレッド２及びスレッド３の優先度を制御する。但し、本発明はこの実施の形態に限るものではない。優先度はＨ（高い）レベルとＬ（低い）レベルの２段階で、基準量は“１”とする。但し、本発明はこの実施の形態に限るものではない。
【０１６６】
メモリ２の情報量が“０”ならば、スレッド１の優先度をＨレベルにするかスレッド２の優先度をＬレベルにするかの、どちらかの優先度制御が行われる。この第１の優先度制御例では、上記両方の優先度制御が一度に行われることはない。
【０１６７】
メモリ２の情報量が“１”ならば、スレッド１の優先度とスレッド２の優先度とが現状に維持される。メモリ２の情報量が“２”以上ならば、スレッド１の優先度をＬレベルにするかスレッド２の優先度をＨレベルにするかの、どちらかの優先度制御が行われる。この第１の優先度制御例では、上記両方の優先度制御が一度に行われることはない。
【０１６８】
同様に、メモリ３の情報量が“０”ならば、スレッド２の優先度をＨレベルにするかスレッド３の優先度をＬレベルにするかの、どちらかの優先度制御が行われる。この第１の優先度制御例では、上記両方の優先度制御を一度に行うことはない。
【０１６９】
メモリ３の情報量が“１”ならば、スレッド２の優先度とスレッド３の優先度とが現状に維持される。メモリ３の情報量が“２”以上ならば、スレッド２の優先度をＬレベルにするかスレッド３の優先度をＨレベルにするかの、どちらかの優先度制御が行われる。この第１の優先度制御例では、上記両方の優先度制御が一度に行われることはない。但し、本発明はこの実施の形態に限るものではない。
【０１７０】
このような第１の優先度制御例について、図１３を用いて説明する。図１３に示す状態（１）は、優先度制御が行われる前の初期状態である。初期状態では、スレッド１、スレッド２及びスレッド３の優先度が全てＬレベルであり、メモリ２及びメモリ３の情報量はともに“０”であったと仮定する。
【０１７１】
そして、状態（２）において、スレッド１がメモリ２に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、メモリ３の情報量が“０”であるから、スレッド２の優先度がＬレベルからＨレベルに変更される。
【０１７２】
次の状態（３）において、スレッド１がメモリ２に続けて処理結果の書き込みを行ったとすると、メモリ２の情報量は“２”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（４）において、優先度がＨレベルとなったスレッド２がメモリ２から情報の読み出しを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（５）において、優先度が継続してＨレベルであるスレッド２がメモリ３に続けて処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“１”になる。上記条件に従うと、優先度の変更は起らない。
【０１７３】
次の状態（６）において、優先度が継続してＨレベルであるスレッド２がメモリ２から続けて情報の読み出しを行ったとすると、メモリ２の情報量は“０”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、メモリ２の情報量が“０”であるから、スレッド１の優先度がＬレベルからＨレベルに変更される。
【０１７４】
次の状態（７）においては、スレッド１及びスレッド２の優先度はともにＨレベルであるが、メモリ２の情報量は“０”であるため、スレッド２はメモリ２から情報を読み出すことはできない。そこで、状態（７）では、何らの情報の読み書きも行われない。この場合、上記条件に従うと、メモリ２の情報量が“０”であるから、スレッド２の優先度がＨレベルからＬレベルに変更される。この状態（６）における優先度制御と状態（７）における優先度制御とは、この第１の優先度制御例では同時に行われることはなく、順を追って実行される。但し、これらの優先度制御のどちらが先に実行されるかは必ずしも確定していない。
【０１７５】
次の状態（８）において、優先度がＨレベルとなったスレッド１がメモリ２に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（９）において、優先度が継続してＨレベルであるスレッド１がメモリ２に続けて処理結果の書き込みを行ったとすると、メモリ２の情報量は“２”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、メモリ２の情報量が“２”であるから、スレッド１の優先度がＨレベルからＬレベルに変更される。
【０１７６】
次の状態（１０）において、スレッド２がメモリ２から情報の読み出しを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（１１）において、スレッド２がメモリ３に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“２”になる。上記条件に従うと、メモリ３の情報量が“２”であるから、スレッド３の優先度がＬレベルからＨレベルに変更される。
【０１７７】
次の状態（１２）において、優先度がＨレベルとなったスレッド３がメモリ３から情報の読み出しを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“１”になる。上記条件に従うと、優先度の変更は起らない。最後の状態（１３）において、優先度が継続してＨであるスレッド３がメモリ３から続けて情報の読み出しを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“０”になる。上記条件に従うと、メモリ３の情報量が“０”であるから、スレッド２の優先度がＬレベルからＨレベルに変更される。
【０１７８】
図１３に示す第１の優先度制御例では、優先度制御が単純化されるのでオーバーヘッドや負荷を軽減できるだけでなく、各優先度制御処理は自分自身が受け持つメモリ内の情報量を基準量と比較して、そのメモリに情報を書き込むスレッドと読み出すスレッドとのうちのいずれか一方の優先順位を維持するか反転させるという、非常に軽い負荷の優先度制御を行うだけで、システム全体を見渡して制御を行うことなしに、システム全体における負荷バランスの最適化を実現することができる。
【０１７９】
なお、本実施の形態において、優先度が同じであるスレッドが複数存在する場合、ラウンドロビン方式により、同一の優先度のスレッドが実行される。
【０１８０】
また、本実施の形態では、図９及び図１０に示すように、情報の書き込み時における書き込み処理を含むスレッドの優先度制御と、情報の読み出し時における読み出し処理を含むスレッドの優先度制御とを個別に行っているが、本発明は特にこれに限定されず、情報の書き込み時及び情報の読み出し時において、情報の入力側のスレッドの優先度と出力側のスレッドの優先度とを制御してもよい。
【０１８１】
図１４は、情報の書き込み時及び読み出し時に、入力側のスレッド及び出力側のスレッドについて行われる優先度制御の処理内容を示す図である。図１４に示すように、例えば、入力側のスレッドの優先度がＬレベルであり、出力側のスレッドの優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも小さい場合、入力側のスレッドの優先度はＨレベルに変更され、出力側のスレッドの優先度はＬレベルのまま維持される。
【０１８２】
このように、情報が書き込まれる場合及び情報が読み出される場合、書き込み処理及び読み出し処理を行ったスレッドのみの優先度が制御されるのではなく、書き込み側（入力側）及び読み出し側（出力側）の両方のスレッドの優先度が制御される。そのため、２つのスレッドの間に設けられたメモリ内の情報量を最適な状態に制御することができ、オーバーフロー及びアンダーフローを防止することができる。
【０１８３】
また、図１４に示すように、１回の処理につき、書き込み側（入力側）及び読み出し側（出力側）のいずれかのスレッドの優先度のみが変更されるので、システムコールのオーバーヘッドを最小限に抑えることができる。ただし、両方のスレッドの優先度を変更する場合、１回の処理では一方のスレッドの優先度しか変更することができないので、他方のスレッドの優先度を変更する処理が別途必要となる。
【０１８４】
次に、第２の優先度制御例について説明をする。図１５は、図９及び図１０に示す優先度制御の処理内容に従って実行される第２の優先度制御例を示す図である。第２の優先度制御例もまた、図９及び図１０に示す優先度制御の制御表に従って優先度制御が行われることは、上記第１の優先度制御例と同様である。
【０１８５】
但し、この第２の優先度制御例では、優先度制御処理によって行われる１回のメモリ内の情報量と基準量との比較に対して、２つ以上のスレッドの優先度の変更を図９及び図１０に示す制御表に従って一度に実行することができる。従って、優先度を変更するためのシステムコールは２回以上発生する可能性があり、システムコールに伴うオーバーヘッドも増える可能性がある。その一方で、１回のメモリ内の情報量と基準量との比較によって、より望ましい優先度の制御状態にすることができる。
【０１８６】
この第２の優先度制御例でも、優先度はＨ（高い）レベルとＬ（低い）レベルの２段階で、基準量は“１”とする。但し、本発明はこの実施の形態に限るものではない。
【０１８７】
メモリ２の情報量が“０”ならば、スレッド１の優先度をＨレベルにすると同時にスレッド２の優先度をＬレベルにする優先度制御が行われる。第２の優先度制御例では、上記両方のスレッドの優先度制御が一度に行われる。
【０１８８】
メモリ２の情報量が“１”ならば、スレッド１の優先度とスレッド２の優先度とが現状に維持される。メモリ２の情報量が“２”以上ならば、スレッド１の優先度をＬレベルにすると同時にスレッド２の優先度をＨレベルにする優先度制御が行われる。第２の優先度制御例では、上記両方のスレッドの優先度制御が一度に行われる。
【０１８９】
同様に、メモリ３の情報量が“０”ならば、スレッド２の優先度をＨレベルにすると同時にスレッド３の優先度をＬレベルにする優先度制御が行われる。第２の優先度制御例では、上記両方のスレッドの優先度制御が一度に行われる。
【０１９０】
メモリ３の情報量が“１”ならば、スレッド２の優先度とスレッド３の優先度とが現状に維持される。メモリ３の情報量が“２”以上ならば、スレッド２の優先度をＬレベルにすると同時にスレッド３の優先度をＨレベルにする優先度制御が行われる。第２の優先度制御例では、上記両方のスレッドの優先度制御が一度に行われる。但し、本発明はこの実施の形態に限るものではない。
【０１９１】
また、この第２の優先度制御例は、１つの優先度制御処理による１つのメモリ内の情報量と基準量との比較によって、２つ以上のスレッドの優先度を制御するので、図６に示す第１のスレッド構成例と、図８に示す第３のスレッド構成例とでは実行可能であるが、図７に示す第２のスレッド構成例では実行することができない。
【０１９２】
このような第２の優先度制御例について、図１５を用いて説明する。図１５に示す状態（１）は、優先度制御が行われる前の初期状態である。初期状態では、スレッド１、スレッド２及びスレッド３の優先度が全てＬレベルであり、メモリ２及びメモリ３の情報量はともに“０”であったと仮定する。
【０１９３】
そして、状態（２）において、スレッド１がメモリ２に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、メモリ３の情報量が“０”であるから、スレッド２の優先度がＬレベルからＨレベルに変更される。
【０１９４】
次の状態（３）において、スレッド１がメモリ２に続けて処理結果の書き込みを行ったとすると、メモリ２の情報量は“２”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（４）において、優先度がＨレベルとなったスレッド２がメモリ２から情報の読み出しを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“０”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（５）において、優先度が継続してＨレベルであるスレッド２がメモリ３に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“１”になる。上記条件に従うと、優先度の変更は起らない。
【０１９５】
次の状態（６）において、優先度が継続してＨレベルであるスレッド２がメモリ２から情報の読み出しを行ったとすると、メモリ２の情報量は“０”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、メモリ２の情報量が“０”であるから、スレッド１の優先度がＬレベルからＨレベルに変更されるのと同時に、スレッド２の優先度もＨレベルからＬレベルに変更される。このように、第２の優先度制御例では上記第１の優先度制御例とは異なり、１回の優先度制御処理によって複数のスレッドの優先度が変更されるので、より望ましい優先度の状態にすることができる。
【０１９６】
次の状態（７）においては、スレッド１の優先度はＨレベルであり、スレッド２及びスレッド３の優先度はともにＬレベルであり、既に最適の優先度状態に制御されているので、何らの情報の読み書きも行われない。この場合、各スレッドの優先度も変更されることはない。
【０１９７】
次の状態（８）において、優先度がＨレベルとなったスレッド１がメモリ２に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（９）において、優先度が継続してＨレベルであるスレッド１がメモリ２に続けて処理結果の書き込みを行ったとすると、メモリ２の情報量は“２”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、メモリ２の情報量が“２”であるから、スレッド１の優先度がＨレベルからＬレベルに変更されるのと同時に、スレッド２の優先度もＬレベルからＨレベルに変更される。
【０１９８】
次の状態（１０）において、優先度がＨレベルになったスレッド２がメモリ２から情報の読み出しを行ったとすると、メモリ２の情報量は“１”になり、メモリ３の情報量は“１”のままである。上記条件に従うと、優先度の変更は起らない。次の状態（１１）において、優先度が継続してＨレベルであるスレッド２がメモリ３に処理結果の書き込みを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“２”になる。上記条件に従うと、メモリ３の情報量が“２”であるから、スレッド２の優先度がＨレベルからＬレベルに変更されるのと同時に、スレッド３の優先度がＬレベルからＨレベルに変更される。
【０１９９】
次の状態（１２）において、優先度がＨレベルとなったスレッド３がメモリ３から情報の読み出しを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“１”になる。上記条件に従うと、優先度の変更は起らない。最後の状態（１３）において、優先度が継続してＨレベルであるスレッド３がメモリ３から続けて情報の読み出しを行ったとすると、メモリ２の情報量は“１”のままで、メモリ３の情報量は“０”になる。上記条件に従うと、メモリ３の情報量が“０”であるから、スレッド２の優先度がＬレベルからＨレベルに変更されるのと同時に、スレッド３の優先度がＨレベルからＬレベルに変更される。
【０２００】
図１５に示す第２の優先度制御例では、各優先度制御処理は自分自身が受け持つメモリ内の情報量を基準量と比較し、そのメモリに情報を書き込むスレッドと読み出すスレッドとの優先順位を維持するか反転させるかという、非常に軽い負荷の優先度制御を行うだけで、システム全体を見渡しての制御を行うことなしに、システム全体における負荷バランスの最適化を実現することができる。しかも１回の優先度制御処理によって、より望ましい優先度制御状態にすることが可能になる。
【０２０１】
なお、本実施の形態では、図９及び図１０に示すように、情報の書き込み時における書き込み処理を含むスレッドの優先度制御と、情報の読み出し時における読み出し処理を含むスレッドの優先度制御とを個別に行っているが、本発明は特にこれに限定されず、情報の書き込み時及び情報の読み出し時において、情報の入力側のスレッドの優先度と出力側のスレッドの優先度とを制御してもよい。
【０２０２】
図１６は、情報の書き込み時及び読み出し時に、入力側のスレッド及び出力側のスレッドについて行われる優先度制御の処理内容を示す図である。図１６に示すように、例えば、入力側のスレッドの優先度がＬレベルであり、出力側のスレッドの優先度がＬレベルであり、メモリｎ内の情報量が基準量よりも小さい場合、入力側のスレッドの優先度はＨレベルに変更され、出力側のスレッドの優先度はＬレベルのまま維持される。
【０２０３】
さらに、入力側のスレッドの優先度がＬレベルであり、出力側のスレッドの優先度がＨレベルであり、メモリｎ内の情報量が基準量よりも小さい場合、入力側のスレッドの優先度はＨレベルに変更され、出力側のスレッドの優先度はＬレベルに変更される。
【０２０４】
このように、情報が書き込まれる場合及び情報が読み出される場合、書き込み処理及び読み出し処理を行ったスレッドのみの優先度が制御されるのではなく、書き込み側（入力側）及び読み出し側（出力側）の両方のスレッドの優先度が制御される。そのため、２つのスレッドの間に設けられたメモリ内の情報量を最適な状態に制御することができ、オーバーフロー及びアンダーフローを防止することができる。
【０２０５】
また、図１６に示すように、１回の処理につき、書き込み側（入力側）及び読み出し側（出力側）の両方のスレッドの優先度が変更されるので、システムコールのオーバーヘッドは大きくなるものの、１回の処理でシステム全体の優先度を最適な状態に変更することができる。
【０２０６】
次に、上記第１のハードウエア構成例、第２のハードウエア構成例、第３のハードウエア構成例、第１のスレッド構成例、第２のスレッド構成例、及び第３のスレッド構成例の全てにおいて各制御スレッドが実行することのできる第３の優先度制御例について説明をする。
【０２０７】
図１７は、第３の優先度制御例が行われるプロセスとスレッドとの構成例を示す図である。第１の優先度制御例と第２の優先度制御例とでは、１つの画像データストリームが入力され、１つの画像データストリームの処理を連続して実行する３つのスレッドを考えた。
【０２０８】
一方、第３の優先度制御例では、２つの画像データストリームＡ，Ｂが入力され、２つの画像データストリームＡ，Ｂのそれぞれに対する処理をパラレルに実行する２つのプロセスＡ，Ｂを考える。そして、プロセスＡは、連続して実行されるスレッドＡ−１、スレッドＡ−２及びスレッドＡ−３の３つのスレッドから構成され、プロセスＢは、連続して実行されるスレッドＢ−１、スレッドＢ−２及びスレッドＢ−３の３つのスレッドから構成される。なお、このような例をとり上げて説明するのは、より分かりやすくその特徴を説明するためであって、本発明はこのような例に限られるものではない。
【０２０９】
図１７に示す第３の優先度制御例は、上記において説明した第１〜３のハードウエア構成例のどれにおいて実行されても構わないし、第１〜３のスレッド構成例のどれにおいて実行されても構わない。或いは、これら以外のハードウエア構成やスレッド構成によって実行されても構わない。
【０２１０】
第３の優先度制御例では、画像データストリームＡの処理を行うプロセスＡに含まれるスレッドＡ−１、スレッドＡ−２及びスレッドＡ−３は、それぞれ２段階の優先度レベル値ＨＡ，ＬＡを有する。同様に、画像データストリームＢの処理を行うプロセスＢに含まれるスレッドＢ−１、スレッドＢ−２及びスレッドＢ−３は、それぞれ２段階の優先度レベル値ＨＢ，ＬＢを有する。そして、実際の優先度レベル値は、ＨＡ＝４、ＬＡ＝３、ＨＢ＝２、ＬＢ＝１のように定められている。
【０２１１】
スレッドＡ−１、スレッドＡ−２及びスレッドＡ−３は、各スレッドが情報を読み出すメモリ（図１７では図示を省略している）の情報記録量が基準量を超えると高い優先度レベル値ＨＡ＝４が設定され、逆に、このメモリの情報記録量が基準量よりも小さくなると低い優先度レベル値ＬＡ＝３が設定される。また、これらの各スレッドが情報を書き込むメモリの情報記録量が基準量を超えると低い優先度レベル値ＬＡ＝３が設定され、逆に、このメモリの情報記録量が基準量よりも小さくなると高い優先度レベル値ＨＡ＝４が設定される。
【０２１２】
同様に、スレッドＢ−１、スレッドＢ−２、スレッドＢ−３は、各スレッドが情報を読み出すメモリ（図１７では図示を省略している）の情報記録量が基準量を超えると高い優先度レベル値ＨＢ＝２が設定され、逆に、このメモリの情報記録量が基準量よりも小さくなると低い優先度レベル値ＬＢ＝１が設定される。また、これらの各スレッドが情報を書き込むメモリの情報記録量が基準量を超えると低い優先度レベル値ＬＢ＝１が設定され、逆に、このメモリの情報記録量が基準量よりも小さくなると高い優先度レベル値ＨＢ＝２が設定される。
【０２１３】
そして、上記のとおり、優先度レベル値ＨＡ，ＬＡ，ＨＢ，ＬＢをＨＡ＞ＬＡ＞ＨＢ＞ＬＢの条件を満たすように定めることで、プロセスＡに含まれる各スレッドは、その優先度が低くなった時でも、プロセスＢに含まれる各スレッドの優先度よりも常に高く、より優先して実行されるように制御することができる。従って、画像データストリームＡの処理を行うプロセスＡに含まれるスレッドＡ−１、スレッドＡ−２及びスレッドＡ−３が使用するメモリの情報量が基準量になった後に、画像データストリームＢの処理を行うプロセスＢに含まれるスレッドＢ−１、スレッドＢ−２及びスレッドＢ−３が使用するメモリの情報量を基準量に近付けるように、制御することができる。即ち、画像データストリームＡの処理の方をより優先して最適化することができる。
【０２１４】
このように、異なる画像データストリームに対応して、優先度のレベル値を変えることは、これらの異なる画像データストリームの処理を担う部分の全部または一部が重複している時に、より有効である。例えば、第１のハードウエア構成例のように１つのＣＰＵ１０３等のハードウエアによって処理が実行される時、第３のハードウエア構成例のように１つの記憶部３０４等のハードウエアを共有して処理が実行される時、又は第３のスレッド構成例のように１つの制御スレッドによって処理が実行される時に、より有効である。ただし、本発明は必ずしもこのような例に限定されるものではない。
【０２１５】
或いはまた、同様の環境下において、実際に割り当てる優先度レベル値は、ＨＡ＝４、ＬＡ＝２、ＨＢ＝３、ＬＢ＝１のように定めても構わない。
【０２１６】
このように、優先度レベル値は、例えば、ＨＡ＞ＨＢ＞ＬＡ＞ＬＢの条件を満たすように定められる。したがって、同じ優先度レベル（ＨＡとＨＢまたはＬＡとＬＢ）同士では、プロセスＡの方がプロセスＢよりも優先して実行される。一方、異なる優先度レベル（ＨＡとＬＢまたはＨＢとＬＡ）同士では、高い優先度レベル（ＨＡまたはＨＢ）にあるスレッドの方が、低い優先度レベル（ＬＡまたはＬＢ）にあるスレッドよりも優先して実行される。
【０２１７】
従って、画像データストリームＡの処理を行うプロセスＡに含まれる各スレッドが使用するメモリの情報量を基準量に近付けながら、画像データストリームＢの処理を行うプロセスＢに含まれる各スレッドが使用するメモリの情報量もまた基準量に近付けるように制御することができる。また、それぞれのプロセスに含まれる各スレッドが使用するメモリの情報量を基準量に近付ける優先度は、プロセスＡの方がプロセスＢよりも高くなるように制御することができる。
【産業上の利用可能性】
【０２１８】
本発明に係る情報処理装置、情報処理方法及び情報処理プログラムは、各スレッドが自律分散的に記録部の情報記録量を最適化するように優先度を制御することができ、複数のスレッドを同時並行的又はタイムシェアリング的に実行し、１のスレッドの実行結果を記憶部に記憶し、その記憶部に記憶された実行結果を使って他のスレッドを実行する情報処理装置、情報処理方法及び情報処理プログラムとして有用である。
【図面の簡単な説明】
【０２１９】
【図１】本実施の形態における情報処理装置の一例としての画像処理装置の第１のハードウエア構成例を示すブロック図である。
【図２】本実施の形態における画像処理装置の第２のハードウエア構成例を示すブロック図である。
【図３】本実施の形態における画像処理装置の第３のハードウエア構成例を示すブロック図である。
【図４】図１に示す画像処理装置のＣＰＵの構成を示す図である。
【図５】情報処理装置において実行されるスレッドの具体的な構成を示す図である。
【図６】本実施の形態において実行される第１のスレッド構成例を示す図である。
【図７】本実施の形態において実行される第２のスレッド構成例を示す図である。
【図８】本実施の形態において実行される第３のスレッド構成例を示す図である。
【図９】メモリに情報を書き込む時に、書き込みに伴って行われる優先度制御の処理内容を示す図である。
【図１０】メモリから情報を読み出す時に、読み出しに伴って行われる優先度制御の処理内容を示す図である。
【図１１】図１に示す画像処理装置による、情報書き込み時における優先度制御処理について説明するためのフローチャートである。
【図１２】図１に示す画像処理装置による、情報読み出し時における優先度制御処理について説明するためのフローチャートである。
【図１３】図９及び図１０に示す優先度制御の処理内容に従って実行される第１の優先度制御例を示す図である。
【図１４】情報の書き込み時及び読み出し時に、入力側のスレッド及び出力側のスレッドについて行われる優先度制御の処理内容を示す図である。
【図１５】図９及び図１０に示す優先度制御の処理内容に従って実行される第２の優先度制御例を示す図である。
【図１６】情報の書き込み時及び読み出し時に、入力側のスレッド及び出力側のスレッドについて行われる優先度制御の処理内容を示す図である。
【図１７】第３の優先度制御例が実行されるプロセスとスレッドの構成例を示す図である。
【図１８】従来の画像形成装置の構成を示すブロック図である。
【符号の説明】
【０２２０】
１００    画像処理装置
１０２    画像データ入力部
１０３    ＣＰＵ
１０３ａ    スレッド実行部
１０３ｂ    優先度制御部
１０４    記憶部
１０５    画像データ出力部
２００    画像処理装置
２０２    画像データ入力部
２０５    画像データ出力部
２１３    第１のＣＰＵ
２２３    第２のＣＰＵ
２３３    第３のＣＰＵ
２１４    第１の記憶部
２２４    第２の記憶部
２３４    第３の記憶部
３００    画像処理装置
３０２    画像データ入力部
３０４    記憶部
３０５    画像データ出力部
３１３    第１のＣＰＵ
３２３    第２のＣＰＵ
３３３    第３のＣＰＵ
【図１】
2008009970.tif 000003
【図２】
2008009970.tif 000004
【図３】
2008009970.tif 000005
【図４】
2008009970.tif 000006
【図５】
2008009970.tif 000007
【図６】
2008009970.tif 000008
【図７】
2008009970.tif 000009
【図８】
2008009970.tif 000010
【図９】
2008009970.tif 000011
【図１０】
2008009970.tif 000012
【図１１】
2008009970.tif 000013
【図１２】
2008009970.tif 000014
【図１３】
2008009970.tif 000015
【図１４】
2008009970.tif 000016
【図１５】
2008009970.tif 000017
【図１６】
2008009970.tif 000018
【図１７】
2008009970.tif 000019
【図１８】
2008009970.tif 000020