(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアと、
前記複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、
前記複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定手段と、
前記複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得手段と、
前記ヒット率取得手段により前記対象コアについて取得されたキャッシュヒット率に基づいて、前記対象コアが前記対象スレッドを実行する第１処理速度を予測する第１予測手段と、
前記複数のプロセッサコアのうち前記対象コアとは別の候補コアが、キャッシュヒット率をゼロとして前記対象スレッドを実行する場合の第２処理速度を予測する第２予測手段と、
前記第１処理速度と前記第２処理速度とを比較することにより、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更するか否かを判断する判断手段と、
前記判断手段による判断結果に基づいて、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更する割当変更手段と、を備えた画像処理装置。
【請求項２】
前記複数のプロセッサコアそれぞれが実行する１以上のスレッドそれぞれについて、スレッド処理時間の全体に占める割合である占有率を取得する占有率取得手段を、さらに備え、
前記第１予測手段は、前記占有率取得手段により取得された前記対象スレッドの占有率と、前記ヒット率取得手段により取得された前記対象コアのキャッシュヒット率とに基づいて、前記第１処理速度を予測し、
前記第２予測手段は、前記占有率取得手段により取得される前記候補コアが実行する１以上のスレッドそれぞれの占有率から算出される前記候補コアの余力に基づいて、前記第２処理速度を予測する、請求項１に記載の画像処理装置。
【請求項３】
前記複数のプロセッサコアの処理能力を取得する能力情報取得手段を、さらに備え、
前記第１予測手段は、前記対象コアの処理能力にさらに基づいて、前記第１処理速度を予測し、
前記第２予測手段は、前記候補コアの処理能力にさらに基づいて、前記第２処理速度を予測する、請求項２に記載の画像処理装置。
【請求項４】
前記判断手段は、所定時間間隔で、前記対象スレッドの割り当てを前記対象コアから前記候補コアに変更するか否かを判断する、請求項１〜３のいずれかに記載の画像処理装置。
【請求項５】
前記割当変更手段は、前記対象スレッドが処理対象とする画像データを複数の処理単位部分に分割して処理する場合、前記判断手段により割り当てを変更すると決定された前記対象スレッドの割り当てを、前記対象スレッドが前記複数の処理単位部分のいずれかの処理が完了することに応じて変更する、請求項１〜４のいずれかに記載の画像処理装置。
【請求項６】
前記複数のプロセッサコアのいずれかが画像データを変換する処理を定めたプログラムを実行するスレッドを可変スレッドに決定する可変スレッド決定手段を、さらに備え、
前記対象スレッド決定手段は、前記可変スレッド決定手段により決定される１以上の可変スレッドの１つを対象スレッドに決定する、請求項１〜５のいずれかに記載の画像処理装置。
【請求項７】
前記対象スレッド決定手段は、前記可変スレッド決定手段により決定された複数の可変スレッドのうちから優先順位が高い順に対象スレッドを決定する、請求項６に記載の画像処理装置。
【請求項８】
画像処理装置で実行される負荷分散方法であって、
前記画像処理装置は、複数のプロセッサコアと、
前記複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、を備え、
前記複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定ステップと、
前記複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得ステップと、
前記ヒット率取得ステップにおいて前記対象コアについて取得されたキャッシュヒット率に基づいて、前記対象コアが前記対象スレッドを実行する第１処理速度を予測する第１予測ステップと、
前記複数のプロセッサコアのうち前記対象コアとは別の候補コアが、キャッシュヒット率をゼロとして前記対象スレッドを実行する場合の第２処理速度を予測する第２予測ステップと、
前記第１処理速度と前記第２処理速度とを比較することにより、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更するか否かを判断する判断ステップと、
前記判断ステップにおける判断結果に基づいて、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更する割当変更ステップと、を含む負荷分散方法。
【請求項９】
画像処理装置を制御するマルチコアプロセッサで実行される負荷分散プログラムであって、
前記マルチコアプロセッサは、複数のプロセッサコアと、
前記複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、を備え、
前記複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定ステップと、
前記複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得ステップと、
前記ヒット率取得ステップにおいて前記対象コアについて取得されたキャッシュヒット率に基づいて、前記対象コアが前記対象スレッドを実行する第１処理速度を予測する第１予測ステップと、
前記複数のプロセッサコアのうち前記対象コアとは別の候補コアが、キャッシュヒット率をゼロとして前記対象スレッドを実行する場合の第２処理速度を予測する第２予測ステップと、
前記第１処理速度と前記第２処理速度とを比較することにより、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更するか否かを判断する判断ステップと、
前記判断ステップにおける判断結果に基づいて、前記対象スレッドの割り当てを、前記対象コアから前記候補コアに変更する割当変更ステップと、を前記マルチコアプロセッサに実行させる負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理装置、負荷分散方法および負荷分散プログラムに関し、特に、複数のコアを有するマルチコアプロセッサを備えた画像処理装置、その画像処理装置で実行される負荷分散方法および負荷分散プログラムに関する。
【背景技術】
【０００２】
近年、複数のコアを有するマルチコアプロセッサが知られており、画像を処理する画像処理装置で代表されるＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｆｅｒａｌ）にマルチコアプロセッサを搭載することが考えられる。マルチコアプロセッサにおいては、複数のコアにそれぞれにスレッドを割り当てることにより、異なる処理を並列で実行する。しかしながら、スレッドの割り当て状態によっては、あるコアの負荷が他のコアに比較して大きくなってしまう場合がある。このため、複数のコア間で負荷を分散する技術が知られている。
【０００３】
例えば、特開２００８−１９１９４９号公報には、複数のコアプロセッサを有する複数のマルチコアプロセッサと、各マルチコアプロセッサの資源を共有する共有資源とを有するマルチコアシステムであって、前記各マルチコアプロセッサの負荷情報と、前記共有資源に対するアクセス時の負荷情報とを取得する負荷情報収集手段と、前記負荷情報収集手段により取得した前記各マルチコアプロセッサの負荷情報と、前記アクセス時の負荷情報との条件に基づいて、負荷分散を行うか否かの判定を行う負荷分散判定手段と、前記負荷分散判定手段により、負荷分散を行うと判断された際には、負荷を分散する負荷分散手段とを有するマルチコアシステムであることを特徴とする、マルチコアシステムが記載されている。特開２００８−１９１９４９号公報に記載のマルチコアシステムにおいては、負荷の増大したマルチコアプロセッサに割り当てられたスレッドを、負荷の少ないマルチコアプロセッサに移動するので、複数のマルチコアプロセッサ間で負荷を分散することができる。
【０００４】
しかしながら、スレッドを移動した後のマルチコアプロセッサにおいては、キャッシュメモリにデータを書き込む時間が必要となり、また、移動の対象となるスレッドを実行する際のキャッシュメモリにアクセスするキャッシュヒット率が移動前よりも高くなるとは限らない。このため、移動後のマルチコアプロセッサが移動の対象となるスレッドを実行する処理速度が、移動前よりも遅くなる場合があるといった問題がある。
【特許文献１】特開２００８−１９１９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の１つは、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な画像処理装置を提供することである。
【０００６】
この発明の他の目的は、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な負荷分散方法を提供することである。
【０００７】
この発明のさらに他の目的は、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な負荷分散プログラムを提供することである。
【課題を解決するための手段】
【０００８】
上述した目的を達成するためにこの発明のある局面によれば、画像処理装置は、複数のプロセッサコアと、複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定手段と、複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得手段と、ヒット率取得手段により対象コアについて取得されたキャッシュヒット率に基づいて、対象コアが対象スレッドを実行する第１処理速度を予測する第１予測手段と、複数のプロセッサコアのうち対象コアとは別の候補コアが、キャッシュヒット率をゼロとして対象スレッドを実行する場合の第２処理速度を予測する第２予測手段と、第１処理速度と第２処理速度とを比較することにより、対象スレッドの割り当てを、対象コアから候補コアに変更するか否かを判断する判断手段と、判断手段による判断結果に基づいて、対象スレッドの割り当てを、対象コアから候補コアに変更する割当変更手段と、を備える。
【０００９】
この局面に従えば、対象コアについて取得されたキャッシュヒット率に基づいて、対象コアが対象スレッドを実行する第１処理速度が予測され、候補コアが、キャッシュヒット率をゼロとして対象スレッドを実行する場合の第２処理速度が予測され、第１処理速度と第２処理速度とを比較することにより、対象スレッドの割り当てを、対象コアから候補コアに変更するか否かが判断され、判断結果に基づいて、対象スレッドの割り当てが、対象コアから候補コアに変更される。このため、対象スレッドを移動する前の第１の処理速度と、対象スレッドを移動した後の第２処理速度とを比較するので、対象スレッドを処理する処理速度が速くなることが予測される場合に、対象スレッドが移動される。その結果、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な画像処理装置を提供することができる。
【００１０】
好ましくは、複数のプロセッサコアそれぞれが実行する１以上のスレッドそれぞれについて、スレッド処理時間の全体に占める割合である占有率を取得する占有率取得手段を、さらに備え、第１予測手段は、占有率取得手段により取得された対象スレッドの占有率と、ヒット率取得手段により取得された対象コアのキャッシュヒット率とに基づいて、第１処理速度を予測し、第２予測手段は、占有率取得手段により取得される候補コアが実行する１以上のスレッドそれぞれの占有率から算出される候補コアの余力に基づいて、第２処理速度を予測する。
【００１１】
この局面に従えば、対象スレッドの占有率と、対象コアのキャッシュヒット率とに基づいて、第１処理速度が予測され、候補コアが実行する１以上のスレッドそれぞれの占有率から算出される候補コアの余力に基づいて、第２処理速度が予測される。このため、対象スレッドを移動する前後の処理速度を正確に予測することができる。
【００１２】
好ましくは、複数のプロセッサコアの処理能力を取得する能力情報取得手段を、さらに備え、第１予測手段は、対象コアの処理能力にさらに基づいて、第１処理速度を予測し、第２予測手段は、候補コアの処理能力にさらに基づいて、第２処理速度を予測する。
【００１３】
この局面に従えば、対象スレッドを移動前のプロセッサコアと、移動後のプロセッサコアの処理能力が異なる場合に適応することができる。
【００１４】
好ましくは、判断手段は、所定時間間隔で、対象スレッドの割り当てを対象コアから候補コアに変更するか否かを判断する。
【００１５】
この局面に従えば、所定時間間隔で、対象スレッドの割り当てを変更するか否かを判断するので、所定時間間隔で複数のプロセッサコアの負荷を分散することができる。
【００１６】
好ましくは、割当変更手段は、対象スレッドが処理対象とする画像データを複数の処理単位部分に分割して処理する場合、判断手段により割り当てを変更すると決定された対象スレッドの割り当てを、対象スレッドが複数の処理単位部分のいずれかの処理が完了することに応じて変更する。
【００１７】
この局面に従えば、画像データの複数の処理単位部分のいずれかの処理単位部分の処理が完了するまでスレッドの割り当てを変更しないので、移動前後で同じ処理が重複して実行されるのを回避することができる。
【００１８】
好ましくは、複数のプロセッサコアのいずれかが画像データを変換する処理を定めたプログラムを実行するスレッドを可変スレッドに決定する可変スレッド決定手段を、さらに備え、対象スレッド決定手段は、可変スレッド決定手段により決定される１以上の可変スレッドの１つを対象スレッドに決定する。
【００１９】
この局面に従えば、画像データを変換する処理を定めたプログラムを実行するスレッドを、移動御対象とするので、第１処理速度と第２処理速度とを正確に予測することができる。
【００２０】
好ましくは、対象スレッド決定手段は、可変スレッド決定手段により決定された複数の可変スレッドのうちから優先順位が高い順に対象スレッドを決定する。
【００２１】
この局面に従えば、複数の可変スレッドを優先順位が高い順に移動させるか否かを判断するので、優先順位の高い可変スレッドの処理を早期に終了させることができる。
【００２２】
この発明の他の局面によれば、負荷分散方法は、画像処理装置で実行される負荷分散方法であって、画像処理装置は、複数のプロセッサコアと、複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、を備え、複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定ステップと、複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得ステップと、ヒット率取得ステップにおいて対象コアについて取得されたキャッシュヒット率に基づいて、対象コアが対象スレッドを実行する第１処理速度を予測する第１予測ステップと、複数のプロセッサコアのうち対象コアとは別の候補コアが、キャッシュヒット率をゼロとして対象スレッドを実行する場合の第２処理速度を予測する第２予測ステップと、第１処理速度と第２処理速度とを比較することにより、対象スレッドの割り当てを、対象コアから候補コアに変更するか否かを判断する判断ステップと、判断ステップにおける判断結果に基づいて、対象スレッドの割り当てを、対象コアから候補コアに変更する割当変更ステップと、を含む。
【００２３】
この局面に従えば、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な負荷分散方法を提供することができる。
【００２４】
この発明のさらに他の局面によれば、負荷分散プログラムは、画像処理装置を制御するマルチコアプロセッサで実行される負荷分散プログラムであって、マルチコアプロセッサは、複数のプロセッサコアと、複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、を備え、複数のプロセッサコアのうち対象コアに割り当てられた１以上のスレッドの１つを対象スレッドに決定する対象スレッド決定ステップと、複数のプロセッサコアそれぞれのキャッシュヒット率を取得するヒット率取得ステップと、ヒット率取得ステップにおいて対象コアについて取得されたキャッシュヒット率に基づいて、対象コアが対象スレッドを実行する第１処理速度を予測する第１予測ステップと、複数のプロセッサコアのうち対象コアとは別の候補コアが、キャッシュヒット率をゼロとして対象スレッドを実行する場合の第２処理速度を予測する第２予測ステップと、第１処理速度と第２処理速度とを比較することにより、対象スレッドの割り当てを、対象コアから候補コアに変更するか否かを判断する判断ステップと、判断ステップにおける判断結果に基づいて、対象スレッドの割り当てを、対象コアから候補コアに変更する割当変更ステップと、をマルチコアプロセッサに実行させる。
【００２５】
この局面に従えば、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することが可能な負荷分散プログラムを提供することができる。
【図面の簡単な説明】
【００２６】
【図１】本実施の形態におけるＭＦＰの外観を示す斜視図である。
【図２】本実施の形態におけるＭＦＰのハードウェア構成の概要を示すブロック図である。
【図３】本実施の形態におけるＭＦＰが備えるマルチコアプロセッサの構成の一例を示す図である。
【図４】本実施の形態におけるＭＦＰが備えるマルチコアプロセッサが有する機能の一例を示す図である。
【図５】能力定義データの一例を示す図である。
【図６】処理対象スレッドの移動を説明するための第１の図である。
【図７】処理対象スレッドの移動を説明するための第２の図である。
【図８】負荷分散処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明の実施の形態を図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２８】
図１は、本実施の形態におけるＭＦＰの外観を示す斜視図である。図２は、本実施の形態におけるＭＦＰのハードウェア構成の概要を示すブロック図である。図１および図２を参照して、画像処理装置として機能するＭＦＰ１００は、メイン回路１１０と、原稿を読み取るための原稿読取部１３０と、原稿を原稿読取部１３０に搬送するための自動原稿搬送装置１２０と、原稿読取部１３０が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部１４０と、画像形成部１４０に用紙を供給するための給紙部１５０と、ユーザーインターフェースとしての操作パネル１６０とを含む。
【００２９】
メイン回路１１０は、マルチコアプロセッサ１１１と、通信インターフェース（Ｉ／Ｆ）部１１２と、ＲＯＭ１１３と、ＲＡＭ１１４と、大容量記憶装置としてのハードディスクドライブ（ＨＤＤ）１１５と、ファクシミリ部１１６と、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）１１８が装着される外部記憶装置１１７と、を含む。マルチコアプロセッサ１１１は、自動原稿搬送装置１２０、原稿読取部１３０、画像形成部１４０、給紙部１５０、および操作パネル１６０と接続され、ＭＦＰ１００の全体を制御する。
【００３０】
ＲＯＭ１１３は、マルチコアプロセッサ１１１が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。ＲＡＭ１１４は、マルチコアプロセッサ１１１がプログラムを実行する際の作業領域として用いられる。
【００３１】
通信Ｉ／Ｆ部１１２は、ＭＦＰ１００をネットワークに接続するためのインターフェースである。マルチコアプロセッサ１１１は、通信Ｉ／Ｆ部１１２を介して、ネットワークに接続されたコンピューターとの間で通信し、データを送受信する。また、通信Ｉ／Ｆ部１１２は、ネットワークを介してインターネットに接続されたコンピューターと通信が可能である。
【００３２】
ファクシミリ部１１６は、公衆交換電話網（ＰＳＴＮ）に接続され、ＰＳＴＮにファクシミリデータを送信する、またはＰＳＴＮからファクシミリデータを受信する。ファクシミリ部１１６は、受信したファクシミリデータを、ＨＤＤ１１５に記憶する、または画像形成部１４０に出力する。画像形成部１４０は、ファクシミリ部１１６により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部１１６は、ＨＤＤ１１５に記憶されたデータをファクシミリデータに変換して、ＰＳＴＮに接続されたファクシミリ装置に送信する。
【００３３】
外部記憶装置１１７は、ＣＤ−ＲＯＭ１１８が装着される。マルチコアプロセッサ１１１は、外部記憶装置１１７を介してＣＤ−ＲＯＭ１１８にアクセス可能である。マルチコアプロセッサ１１１は、外部記憶装置１１７に装着されたＣＤ−ＲＯＭ１１８に記録されたプログラムをＲＡＭ１１４にロードして実行する。なお、マルチコアプロセッサ１１１が実行するプログラムを記憶する媒体としては、ＣＤ−ＲＯＭ１１８に限られず、光ディスク（ＭＯ（Ｍａｇｎｅｔｉｃ  Ｏｐｔｉｃａｌ  ｄｉｓｃ）／ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ）／ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ））、ＩＣカード、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）などの半導体メモリであってもよい。
【００３４】
また、マルチコアプロセッサ１１１が実行するプログラムは、ＣＤ−ＲＯＭ１１８に記録されたプログラムに限られず、ＨＤＤ１１５に記憶されたプログラムをＲＡＭ１１４にロードして実行するようにしてもよい。この場合、ネットワークに接続された他のコンピューターが、ＭＦＰ１００のＨＤＤ１１５に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、ＭＦＰ１００が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをＨＤＤ１１５に記憶するようにしてもよい。ここでいうプログラムは、マルチコアプロセッサ１１１が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００３５】
操作パネル１６０は、表示部１６１と操作部１６３とを含む。表示部１６１は、例えば、液晶表示装置（ＬＣＤ）であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部１６３は、タッチパネル１６５と、ハードキー部１６７とを含む。タッチパネル１６５は、静電容量方式である。なお、タッチパネル１６５は、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。ハードキー部１６７は、複数のハードキーを含む。ハードキーは、例えば接点スイッチである。
【００３６】
図３は、本実施の形態におけるＭＦＰが備えるマルチコアプロセッサの構成の一例を示す図である。図３を参照して、マルチコアプロセッサ１１１は、第１プロセッサコア５１と、第１プロセッサコア５１に専用の第１キャッシュメモリ５３と、第２プロセッサコア５５と、第２プロセッサコア５５に専用の第２キャッシュメモリ５７と、を含む。第１キャッシュメモリ５３と第２キャッシュメモリ５７と、はＲＡＭ１１４に接続され、第１プロセッサコア５１および第２プロセッサコア５５がＲＡＭ１１４を共有する。
【００３７】
マルチコアプロセッサ１１１は、第１プロセッサコア５１および第２プロセッサコア５５それぞれがプログラムを実行可能なので、プログラムを並列化して実行することが可能である。マルチコアプロセッサ１１１が実行するオペレーティングシステム（以下「ＯＳ」という）が、第１プロセッサコア５１および第２プロセッサコア５５のいずれかにスレッドを割り当てる。スレッドは、プログラムの一部で定められる処理である。マルチコアプロセッサ１１１が実行するＯＳは、一般的に、互いに依存関係のない処理に対する複数のスレッドそれぞれを、第１プロセッサコア５１または第２プロセッサコア５５のいずれかに割り当てる。第１プロセッサコア５１に１以上のスレッドが割り当てられ、第２プロセッサコア５５に１以上のスレッドが割り当てられる場合、複数のスレッドが並列に実行される。
【００３８】
第１プロセッサコア５１および第２プロセッサコア５５それぞれの負荷は、第１プロセッサコア５１および第２プロセッサコア５５は、それに割り当てられた１以上のスレッドが実行する処理に依存する。このため、第１プロセッサコア５１に割り当てられたスレッドと、第２プロセッサコア５５に割り当てられたスレッドとの違いによって、第１プロセッサコア５１および第２プロセッサコア５５それぞれの負荷が異なる。また、第１プロセッサコア５１に割り当てられたスレッドが第１キャッシュメモリ５３にアクセスする頻度およびキャッシュヒット率と、第２プロセッサコア５５に割り当てられたスレッドが第２キャッシュメモリ５７にアクセスする頻度およびキャッシュヒット率と、が異なる場合が多い。このため、マルチコアプロセッサ１１１が実行するＯＳは、第１プロセッサコア５１の負荷と第２プロセッサコア５５の負荷とを平準化するため、スレッドの割り当てを変更する。
【００３９】
図４は、本実施の形態におけるＭＦＰが備えるマルチコアプロセッサが有する機能の一例を示す図である。図４に示す機能は、マルチコアプロセッサ１１１が有する第１プロセッサコア５１および第２プロセッサコア５５のいずれかが、ＲＯＭ１１３、ＨＤＤ１１５またはＣＤ−ＲＯＭ１１８に記憶された負荷分散プログラムを実行することにより、マルチコアプロセッサ１１１で実現される機能である。図４を参照して、マルチコアプロセッサ１１１は、可変スレッド決定部１１と、処理対象スレッド決定部１３と、第１予測部１５と、候補コア決定部１７と、第２予測部１９と、判断部２１と、割当変更部２３と、取得部２５と、を含む。
【００４０】
可変スレッド決定部１１は、第１プロセッサコア５１および第２プロセッサコア５５それぞれに割り当てられたスレッドのうちから可変スレッドを決定する。可変スレッドは、第１プロセッサコア５１および第２プロセッサコア５５のいずれかが実行するスレッドのうち、画像データを変換する処理を定めたプログラムを実行するスレッドである。画像データを変換する処理は、予め定められた処理を複数回繰り返す処理を含む。可変スレッド以外の処理を、固定スレッドという。可変スレッド決定部１１は、決定された可変スレッドを識別するためのスレッド識別情報を処理対象スレッド決定部１３に出力する。可変スレッド決定部１１は、複数の可変スレッドを決定する場合、複数の可変スレッドをそれぞれ識別するための複数のスレッド識別情報を処理対象スレッド決定部１３に出力する。
【００４１】
処理対象スレッド決定部１３は、可変スレッド決定部１１から入力される１以上のスレッド識別情報にそれぞれ対応する１以上の可変スレッドのうちから処理対象とする可変スレッドを決定する。可変スレッドには、予め優先度が設定されており、処理対象スレッド決定部１３は、１以上の可変スレッドのうちから優先度が最も高い可変スレッドを処理対象スレッドに決定する。処理対象スレッド決定部１３は、処理対象スレッドを決定した後に、後述する判断部２１から判断結果が入力される。処理対象スレッド決定部１３は、判断部２１から割り当てを変更しないことを示す判断結果が入力される場合、可変スレッド決定部１１から入力される１以上のスレッド識別情報にそれぞれ対応する１以上の可変スレッドのうちから、先に処理対象スレッドに決定した可変スレッドの優先度の次に高い優先度が設定された可変スレッドを処理対象スレッドに決定する。処理対象スレッド決定部１３は、処理対象スレッドを決定することに応じて、処理対象スレッドに決定された可変スレッドのスレッド識別情報を第１予測部１５および候補コア決定部１７に出力する。
【００４２】
取得部２５は、第１プロセッサコア５１および第２プロセッサコア５５それぞれの状態を、取得する。取得部２５は、第１プロセッサコア５１および第２プロセッサコア５５それぞれの状態を取得すると、取得された状態を第１予測部１５および第２予測部１９に出力する。取得部２５は、能力情報取得部３１と、ヒット率取得部３３と、占有率取得部３５と、を含む。
【００４３】
能力情報取得部３１は、第１プロセッサコア５１および第２プロセッサコア５５それぞれの能力情報を取得する。第１プロセッサコア５１および第２プロセッサコア５５それぞれの能力情報は、演算速度を示す情報である。演算速度を示す情報は、例えば、クロック周波数である。
【００４４】
ヒット率取得部３３は、第１プロセッサコア５１および第２プロセッサコア５５それぞれのキャッシュヒット率を取得する。キャッシュヒット率は、読み出しの対象となるデータがキャッシュメモリに記憶されている割合である。ヒット率取得部３３は、第１プロセッサコア５１に対する第１キャッシュヒット率と、第２プロセッサコア５５に対する第２キャッシュヒット率と、を取得する。
【００４５】
占有率取得部３５は、第１プロセッサコア５１および第２プロセッサコア５５それぞれにおける占有率を取得する。占有率取得部３５が占有率を取得するタイミングは、ヒット率取得部３３がキャッシュヒット率を取得するタイミングと同じである。占有率は、スレッドの処理時間が全体に占める割合である。占有率取得部３５は、第１プロセッサコア５１について、第１プロセッサコア５１に割り当てられた１以上のスレッドごとに占有率を取得し、第１プロセッサコア５１について、第１プロセッサコア５１に割り当てられた１以上のスレッドごとに占有率を取得する。
【００４６】
第１予測部１５は、処理対象スレッド決定部１３から処理対象スレッドのスレッド識別情報が入力され、取得部２５から第１プロセッサコア５１および第２プロセッサコア５５それぞれの状態が入力される。第１予測部１５は、第１プロセッサコア５１および第２プロセッサコア５５のうちから処理対象スレッドが割り当てられた一方を特定する。
【００４７】
ここでは、処理対象スレッドが第１プロセッサコア５１に割り当てられている場合を例に説明する。この場合、第１予測部１５は、処理対象スレッドを実行する第１プロセッサコア５１を特定する。第１予測部１５は、第１プロセッサコア５１のキャッシュヒット率および処理対象スレッドの占有率に基づいて、第１プロセッサコア５１が処理対象スレッドを実行する第１処理速度を予測する。具体的には、第１予測部１５は、第１プロセッサコア５１の能力情報に対して予め定められた能力定義データを参照して、第１処理速度を予測する。能力定義データは、複数のキャッシュヒット率ごとに、占有率と、単位データを処理する処理時間とを定める。
【００４８】
図５は、能力定義データの一例を示す図である。能力定義データは、複数のキャッシュヒット率ごとに単位データを処理する処理時間と占有率との関係を定める。図５においては、横軸がＣＰＵ占有率を示し、縦軸が処理時間を示し、単位データを１ＧＢｙｔｅのデータとしている。キャッシュヒット率が０％に対応する能力定義データ２０１、キャッシュヒット率が４０％における能力定義データ２０３、キャッシュヒット率が８０％における能力定義データ２０５を示している。図５に示すように、キャッシュヒット率が高いほど、処理時間が短く、ＣＰＵ占有率が高いほど、処理時間が短くなる。
【００４９】
図４に戻って、第１予測部１５は、第１プロセッサコア５１の能力情報に対応する能力定義データを予め記憶しており、その能力定義データに基づいて、第１プロセッサコア５１のキャッシュヒット率および処理対象スレッドの占有率に基づいて、第１処理速度を予測し、第１プロセッサコア５１を識別するためのコア識別情報と第１処理速度との組を判断部２１に出力する。具体的には、第１予測部１５は、第１プロセッサコア５１の能力情報に対応する能力定義データを参照して、第１プロセッサコア５１のキャッシュヒット率に対応する能力定義データにおいて、処理対象スレッドの占有率に対応する処理時間で、単位データのデータ量を除算した値を第１処理速度とする。例えば、キャッシュヒット率が８０％、処理対象スレッドの占有率が２０％ならば単位データを処理する処理時間は５００μｓなので、第１処理速度を２Ｍｂｙｔｅ／μｓに決定する。キャッシュヒット率が４０％、処理対象スレッドの占有率が４０％ならば単位データを処理する処理時間は５００μｓなので、第１処理速度を２Ｍｂｙｔｅ／μｓに決定する。キャッシュヒット率が０％、処理対象スレッドの占有率が７５％ならば単位データを処理する処理時間は５００μｓなので、第１処理速度を２Ｍｂｙｔｅ／μｓに決定する。
【００５０】
候補コア決定部１７は、処理対象スレッド決定部１３から処理対象スレッドのスレッド識別情報が入力されることに応じて、処理対象スレッドが割り当てられたプロセッサコアとは別のプロセッサコアを候補コアに決定する。ここでは、処理対象スレッドが第１プロセッサコア５１に割り当てられているので、候補コア決定部１７は、第２プロセッサコアを候補コアに決定する。候補コア決定部１７は、候補コアに決定された第２プロセッサコアを識別するためのコア識別情報と、処理対象スレッドのスレッド識別情報と、を第２予測部１９に出力する。なお、マルチコアプロセッサ１１１が３以上のプロセッサコアを有する場合には、候補コア決定部１７は、３以上のプロセッサコアのうち処理対象スレッドが割り当てられたプロセッサコアとは別の２以上のプロセッサコアそれぞれを候補コアに決定する。候補コア決定部１７は、候補コアに決定された２以上のプロセッサコアをそれぞれ識別するための２以上のコア識別情報と処理対象スレッドのスレッド識別情報とを第２予測部１９に出力する。
【００５１】
第２予測部１９は、候補コア決定部１７から候補コアのコア識別情報と処理対象スレッドのスレッド識別情報とが入力される。第２予測部１９は、候補コアがキャッシュヒット率をゼロとして処理対象スレッドを実行する場合の第２処理速度を予測し、候補コアのコア識別情報と第２処理速度との組を判断部２１に出力する。ここでは、第２プロセッサコア５５のコア識別情報が入力される。この場合、第２予測部１９は、第２プロセッサコア５５が、キャッシュヒット率を０％として対象スレッドを実行する場合の第２処理速度を予測する。具体的には、第２予測部１９は、第２プロセッサコア５５に割り当てられたすべてのスレッドそれぞれの占有率に基づいて、第２プロセッサコア５５の余力を算出する。第２プロセッサコア５５に割り当てられたすべてのスレッドそれぞれの占有率の和を１００％から減算した値を、第２プロセッサコア５５の余力とする。第２予測部１９は、第２プロセッサコア５５の能力情報に対して予め定められた能力定義データを参照して、処理対象スレッドが第２プロセッサコア５５の算出された余力の全てを占めると仮定して、第２処理速度を予測する。能力定義データは、複数のキャッシュヒット率ごとに、占有率と、単位データを処理する処理時間とを定める。第２予測部１９は、キャッシュヒット率が０％に対応する能力定義データを参照して、余力を占有率として、その占有率に対応する処理時間で、単位データのデータ量を除算した値を第２処理速度に決定する。第２予測部１９は、第２プロセッサコアのコア識別情報と第２処理速度との組を判断部２１に出力する。なお、第２予測部１９は、候補コア決定部１７から複数のコア識別情報が入力される場合、複数のコア識別情報で識別される複数のプロセッサコアごとに、第２処理速度を予測し、第２処理速度が最大となるプロセッサコアを特定し、特定したプロセッサコアのコア識別情報と第２処理速度との組を判断部２１に出力する。
【００５２】
判断部２１は、第１予測部１５から処理対象スレッドが割り当てられたプロセッサコアのコア識別情報と第１処理速度との組が入力され、第２予測部１９から候補コアのコア識別情報と第２処理速度との組が入力される。判断部２１は、第１処理速度と第２処理速度とを比較し、処理対象スレッドの割り当てを変更するか否かを判断し、判断結果を割当変更部２３に出力する。判断部２１は、所定時間間隔で、処理対象スレッドの割り当てを変更するか否かを判断する。判断部２１は、第２処理速度が第１処理速度より大きければ処理対象スレッドの割り当てを変更すると判断するが、第２の処理時間が第１の処理時間以下であれば処理対象スレッドの割り当てを変更しないと判断する。判断結果は、割当を変更するか否かを示す。判断部２１は、割当を変更すると判断する場合には、判断結果に加えて、候補コアのコア識別情報を割当変更部２３に出力する。
【００５３】
ここでは、判断部２１は、第１予測部１５から処理対象スレッドが割り当てられた第１プロセッサコア５１のコア識別情報と第１処理速度との組が入力され、第２予測部１９から候補コアに決定された第２プロセッサコア５５のコア識別情報と第２処理速度との組が入力される。判断部２１は、第２処理速度が第１処理速度より大きければ処理対象スレッドの割り当てを変更すると判断し、割当を変更することを示す判断結果と、第２プロセッサコア５５のコア識別情報とを割当変更部２３に出力する。判断部２１は、第２処理速度が第１処理速度以下ならば処理対象スレッドの割り当てを変更しないと判断し、割当を変更しないことを示す判断結果を処理対象スレッド決定部１３に出力する。
【００５４】
割当変更部２３は、判断部２１から割当を変更することを示す判断結果が入力される場合、処理対象スレッド決定部１３から入力される処理対象スレッドを、判断部２１から判断結果とともに入力されるコア識別情報で特定される第２プロセッサコアに割り当てる。これにより、第１プロセッサコア５１で実行されていた処理対象スレッドである可変スレッドが、第２プロセッサコア５５により実行される。
【００５５】
割当変更部２３は、処理単位決定部２７を含む。処理単位決定部２７は、処理対象スレッドが画像データを複数の処理単位部分に分割して処理する場合、処理単位を決定する。割当変更部２３は、複数の処理単位部分のいずれかの処理が完了することに応じて、割当を変更する。例えば、処理単位決定部２７は、画像データが複数ページを含む場合、複数ページそれぞれの部分を処理単位部分に決定する。この場合、割当変更部２３は、第１プロセッサコア５１に割り当てられた処理対象スレッドが画像データに含まれる複数ページのいずれかページの処理が完了することに応じて、処理対象スレッドを第２のプロセッサコアに割り当てる。
【００５６】
また、処理単位決定部２７は、画像データが複数行を含む場合、複数行それぞれの部分を処理単位部分に決定する。この場合、割当変更部２３は、第１プロセッサコア５１に割り当てられた処理対象スレッドが画像データに含まれる複数行のいずれかの行の処理が完了することに応じて、処理対象スレッドを第２のプロセッサコアに割り当てる。
【００５７】
また、処理単位決定部２７は、画像データが、属性の異なる複数の属性別データを含む場合、複数の属性別データを処理単位部分に決定する。例えば、画像データが、文字が表された文字領域、図形が表された線画領域、および写真が表された写真領域を含む場合、画像データは、文字領域のみからなる属性別データと、図形のみからなる属性別データと、写真のみからなる属性別データとを含む。また、画像データがカラーの場合、画像データは、赤色のみからなる属性別データと、緑色のみからなる属性別データと、青色のみからなる属性別データと、を含む。この場合、割当変更部２３は、第１プロセッサコア５１に割り当てられた処理対象スレッドが画像データに含まれる複数の属性別データのいずれかの属性別データの処理が完了することに応じて、処理対象スレッドを第２のプロセッサコアに割り当てる。
【００５８】
また、処理単位決定部２７は、対象スレッドが画像データを符号化する符号化処理を実行する場合、符号化の対象となる単位部分を処理単位部分に決定する。この場合、割当変更部２３は、第１プロセッサコア５１に割り当てられた処理対象スレッドが画像データを符号化処理をする際に、画像データに含まれる符号化の対象となる複数の単位部分のいずれかの単位部分の処理が完了することに応じて、処理対象スレッドを第２のプロセッサコアに割り当てる。
【００５９】
＜具体例＞
次に、第１プロセッサコア５１および第２プロセッサコア５５の能力が同じ場合について、具体例を説明する。
【００６０】
図６は、処理対象スレッドの移動を説明するための第１の図である。図６を参照して、第１プロセッサコア５１のキャッシュヒット率が８０％の場合であって、処理対象スレッドの占有率が１０％の場合、キャッシュヒット率が８０％の能力定義データ２０５を参照すると、占有率１０％対応する処理時間は１０００μｓなので、第１処理速度は１Ｍｂｕｔｅ／μｓと予測される。第２プロセッサコア５５のキャッシュヒット率を０％として、キャッシュヒット率が０％の能力定義データ２０１を参照すると、処理時間が１０００μｓに対応する占有率は４０％である。このため、第２プロセッサコア５５に割り当てられている全てのスレッドの占有率の合計が６０％より小さい場合に、第２処理速度が１Ｍｂｙｔｅ／μｓより大きくなる。換言すれば、第２プロセッサコア５５の余力が４０％より大きければ、第２処理速度が１Ｍｂｙｔｅ／μｓより大きくなる。このため、処理対象スレッドを、第１プロセッサコア５１で継続して実行するよりも、第２プロセッサコア５５で実行する方が、処理対象スレッドを早期に終了することが予測される。
【００６１】
図７は、処理対象スレッドの移動を説明するための第２の図である。図７を参照して、第１プロセッサコア５１のキャッシュヒット率が４０％の場合であって、処理対象スレッドの占有率が２０％の場合、キャッシュヒット率が４０％の能力定義データ２０３を参照すると、占有率２０％対応する処理時間は１０００μｓなので、第１処理速度は１Ｍｂｙｔｅ／μｓと予測される。第２プロセッサコア５５のキャッシュヒット率を０％として、キャッシュヒット率が０％の能力定義データ２０１を参照すると、処理時間が１０００μｓに対応する占有率は４０％である。このため、第２プロセッサコア５５に割り当てられている全てのスレッドの占有率の合計が６０％より小さい場合に、第２処理速度が１Ｍｂｙｔｅ／μｓより大きくなる。換言すれば、第２プロセッサコア５５の余力が４０％より大きければ、第２処理速度が１Ｍｂｙｔｅ／μｓより大きくなる。このため、処理対象スレッドを、第１プロセッサコア５１で継続して実行するよりも、第２プロセッサコア５５で実行する方が、処理対象スレッドを早期に終了することが予測される。
【００６２】
図８は、負荷分散処理の流れの一例を示すフローチャートである。負荷分散処理は、マルチコアプロセッサ１１１が有する第１プロセッサコア５１および第２プロセッサコア５５のいずれかが、ＲＯＭ１１３、ＨＤＤ１１５またはＣＤ−ＲＯＭ１１８に記憶された負荷分散プログラムを実行することにより、マルチコアプロセッサ１１１で実行される処理である。図８を参照して、マルチコアプロセッサ１１１は、所定の時間が経過したか否かを判断する（ステップＳ０１）。所定の時間は、ステップＳ０１の処理が実行されてからの経過時間であり、負荷分散処理の実行を開始してからの経過時間、負荷分散処理を終了してからの経過時間である。所定の時間は、任意に定めることができる。所定の時間が経過するまで待機状態となり（ステップＳ０１でＮＯ）、所定の時間が経過したならば（ステップＳ０２でＹＥＳ）、処理をステップＳ０２に進める。
【００６３】
ステップＳ０２においては、可変スレッドを決定し、処理をステップＳ０３に進める。第１プロセッサコア５１および第２プロセッサコア５５それぞれで実行している１以上のスレッドであって、画像データを変換する処理を実行するスレッドを可変スレッドに決定する。ステップＳ０３においては、ステップＳ０２において決定された１以上の可変スレッドのうちから優先度が最も高い可変スレッドを処理対象スレッドに設定する。ステップＳ０２において１つの可変スレッドが決定される場合、その可変スレッドを処理対象スレッドに設定する。ここでは、第１プロセッサコア５１に割り当てられた可変スレッドを処理対象スレッドに設定する場合を例に説明する。
【００６４】
次のステップＳ０４においては、処理対象スレッドが割当られたプロセッサコアを対象コアに決定し、処理をステップＳ０５に進める。処理対象スレッドが第１プロセッサコア５１に割り当てられていれば第１プロセッサコア５１を対象コアに決定し、処理対象スレッドが第２プロセッサコア５５に割り当てられていれば第２プロセッサコア５５を対象コアに決定する。ステップＳ０５においては、第１プロセッサコア５１および第２プロセッサコア５５それぞれの状態情報を取得する。具体的には、第１プロセッサコア５１および第２プロセッサコア５５それぞれの能力情報およびキャッシュヒット率、第１プロセッサコア５１に割り当てられた１以上のスレッドそれぞれの占有率、第２プロセッサコア５５に割り当てられた１以上のスレッドそれぞれの占有率を取得する。
【００６５】
ステップＳ０６においては、第１処理時間を予測する。処理対象スレッドを、処理対象スレッドが割り当てられた第１プロセッサコア５１で実行する第１処理速度を予測する。処理対象スレッドに対してステップＳ０５において取得された占有率が第１プロセッサコア５１において継続すると仮定して、第１プロセッサコア５１に対応する能力定義データのうちステップＳ０５において取得されたキャッシュ率に対応する能力定義データを参照して、処理対象スレッドの占有率に対応する処理時間で、単位データのデータ量を除算した値を第１処理時間に設定する。
【００６６】
次のステップＳ０７においては、対象コア以外のプロセッサコアを選択し、処理をステップＳ０８に進める。ここでは、対象コアである第１プロセッサコア５１以外に第２プロセッサコア５５のみが存在するので、第２プロセッサコア５５を選択する。なお、プロセッサコアが、３以上の場合には、対象コア以外の２以上のプロセッサコアのうちから１つを選択する。
【００６７】
次のステップＳ０８においては、第２処理時間を予測し、処理をステップＳ０９に進める。ステップＳ０７において選択された第２プロセッサコア５５が、キャッシュヒット率を０％として、ステップＳ０３において処理対象スレッドに設定された可変スレッドを実行する第２処理速度を予測する。具体的には、ステップＳ０５において取得された、第２プロセッサコア５５に割り当てられたすべてのスレッドそれぞれの占有率に基づいて、第２プロセッサコア５５の余力を算出する。第２プロセッサコア５５に割り当てられたすべてのスレッドそれぞれの占有率の和を１００％から減算した値を、第２プロセッサコア５５の余力とする。そして、第２プロセッサコア５５の能力情報に対して予め定められた能力定義データのうち、キャッシュヒット率が０％に対応する能力定義データを参照して、処理対象スレッドが第２プロセッサコア５５の余力の全てを第２プロセッサコア５５の処理時間に占めると仮定して、余力を占有率として、その占有率に対応する処理時間で単位データのデータ量を除算した値を第２処理速度に決定する。
【００６８】
次のステップＳ０９においては、ステップＳ０７において未選択のプロセッサコアが存在するか否かを判断する。未選択のプロセッサコアが存在すれば処理をステップＳ０７に戻すが、存在しなければ処理をステップＳ１０に進める。処理がステップＳ１０に進む場合には、プロセッサコアが３以上の場合には、対象コア以外の２以上のプロセッサコアそれぞれに対して第２処理時間が決定される。
【００６９】
ステップＳ１０においては、第２処理速度が最大となるプロセッサコアを候補コアに設定し、処理をステップＳ１１に進める。ステップＳ１１においては、ステップＳ０６において予測された第１処理速度と、ステップＳ１０において候補コアに設定されたプロセッサコアに対して予測された第２処理速度とを比較する。第２処理速度が第１処理速度より大きいならば処理をステップＳ１２に進めるが、そうでなければ処理をステップＳ１５に進める。ステップＳ１５においては、未選択の可変タクスが存在するか否かを判断する。ステップＳ０２において決定された可変スレッドのうちで、ステップＳ０３において処理対象スレッドに設定されていない可変スレッドが存在するか否かを判断する。未選択の可変スレッドが存在するならば処理をステップＳ０３に戻すが、存在しなければ処理をステップＳ０１に戻す。
【００７０】
ステップＳ１２においては、処理単位を決定する。ステップＳ０３において処理対象スレッドに設定された可変スレッドが実行する処理、または、可変スレッドが処理対象とする画像データに基づいて処理単位を決定する。画像データが複数ページを含む場合、複数ページそれぞれの部分を処理単位部分に決定する。また、画像データが複数行を含む場合、複数行それぞれの部分を処理単位部分に決定する。画像データが、属性の異なる複数の属性別データを含む場合、複数の属性別データを処理単位部分に決定する。また、可変スレッドが実行する処理が画像データを符号化する符号化処理の場合、符号化の対象となる単位部分を処理単位部分に決定する。
【００７１】
ステップＳ１３においては、ステップＳ１２において決定された処理単位の処理が終了したか否かを判断する。第１プロセッサコア５１において実行されている処理対象スレッドにおいて、処理単位部分の処理が終了するまで待機状態となり、処理単位部分の処理が終了したならば処理をステップＳ１４に進める。
【００７２】
ステップＳ１４においては、ステップＳ０３において処理対象スレッドに設定された可変スレッドを、ステップＳ１０において候補コアに設定されたプロセッサコアに割り当て、処理をステップＳ０１に戻す。ここでは、第１プロセッサコア５１で実行されている可変スレッドを、第２プロセッサコア５５に割り当てる。これにより、第１プロセッサコア５１で実行されていた可変スレッドが、第２プロセッサコア５５によって実行される。このため、第１プロセッサコア５１の負荷を、第２プロセッサコア５５に分散させることができる。
【００７３】
以上説明したように、本実施の形態におけるＭＦＰ１００は、画像処理装置として機能し、処理対象スレッドが割り当てられた第１プロセッサコア５１について取得されたキャッシュヒット率に基づいて、第１プロセッサコア５１が処理対象スレッドを実行する第１処理速度を予測し、候補コアに決定された第２プロセッサコア５５が、キャッシュヒット率をゼロとして処理対象スレッドを実行する場合の第２処理速度を予測し、第１処理速度と第２処理速度とを比較し、第２処理速度が第１処理速度より大きい場合に、処理対象スレッドの割り当てを、第１プロセッサコア５１から第２プロセッサコア５５に変更する。このため、対象スレッドを移動する前の第１の処理速度と、対象スレッドを移動した後の第２処理速度とを比較するので、対象スレッドを処理する処理速度が速くなることが予測される場合に、対象スレッドが移動される。その結果、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することができる。
【００７４】
また、第１プロセッサコア５１における処理対象スレッドの占有率と、第１プロセッサコア５１のキャッシュヒット率とに基づいて、第１処理速度を予測し、第２プロセッサコア５５が実行する１以上のスレッドそれぞれの占有率から算出される第２プロセッサコア５５の余力に基づいて、第２処理速度を予測するので、処理対象スレッドを移動する前後の処理速度を正確に予測することができる。
【００７５】
また、第１プロセッサコア５１の処理能力に対応する能力定義データを参照して、第１処理速度を予測し、第２プロセッサコア５５の処理能力に対応する能力定義データを参照して、第２処理速度を予測するので、第１プロセッサコア５１と第２プロセッサコア５５の処理能力が異なる場合でも、移動対象となるスレッドの移動後の処理時間を短くしつつ複数のプロセッサコアの負荷を分散することができる。
【００７６】
また、処理対象スレッドの割り当てを変更するか否かを、所定時間間隔で判断するので、所定時間間隔で複数のプロセッサコアの負荷を分散することができる。
【００７７】
また、処理対象スレッドが処理対象とする画像データを複数の処理単位部分に分割して処理する場合、複数の処理単位部分のいずれかの処理単位部分の処理が完了するまで処理対象スレッドの割り当てを変更しないので、移動前後で同じ処理が重複して実行されるのを回避することができる。
【００７８】
また、画像データを変換する処理を定めたプログラムを実行するスレッドを可変スレッドに決定し、１以上の可変スレッドの１つを対象スレッドに決定するので、同じ処理を繰り返し実行する処理を実行するスレッドを対象スレッドに決定することができる。また、移動前後の第１処理速度と第２処理速度とを正確に予測することができる。
【００７９】
また、複数の可変スレッドが存在する場合には、優先順位が高い順に対象スレッドに決定するので、優先順位の高い可変スレッドを早期に終了させることができる。
【００８０】
なお、上述した実施の形態においては、画像処理装置の一例として、ＭＦＰ１００を例に説明したが、図８に示した負荷分散処理を、ＭＦＰ１００に実行させる負荷分散方法、また、その負荷分散方法をＭＦＰ１００が備えるマルチコアプロセッサ１１１に実行させる負荷分散プログラムとして発明を捉えることができる。
【００８１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００８２】
＜付記＞
（１）  前記割当変更手段は、前記画像データが複数ページを含む場合、複数ページそれぞれの部分を処理単位部分に決定する、請求項５に記載の画像処理装置。
（２）  前記割当変更手段は、前記画像データが複数行を含む場合、複数行それぞれの部分を処理単位部分に決定する、請求項５または（１）に記載の画像処理装置。
（３）  前記割当変更手段は、前記画像データが、属性の異なる複数の属性別データを含む場合、前記複数の属性別データを処理単位部分に決定する、請求項５、（１）および（２）のいずれかに記載の画像処理装置。
（４）  前記割当変更手段は、対象スレッドが画像データを符号化する符号化処理を実行する場合、前記符号化の対象となる単位部分を処理単位部分に決定する、請求項５に記載の画像処理装置。
【符号の説明】
【００８３】
１００  ＭＦＰ、１１０  メイン回路、１１１  マルチコアプロセッサ、１１２  通信Ｉ／Ｆ部、１１３  ＲＯＭ、１１４  ＲＡＭ、１１５  ＨＤＤ、１１６  ファクシミリ部、１１７  外部記憶装置、１１８  ＣＤ−ＲＯＭ、１２０  自動原稿搬送装置、１３０  原稿読取部、１４０  画像形成部、１５０  給紙部、１６０  操作パネル、１６１  表示部、１６３  操作部、１６５  タッチパネル、１６７  ハードキー部、１１  可変スレッド決定部、１３  処理対象スレッド決定部、１５  第１予測部、１７  候補コア決定部、１９  第２予測部、２１  判断部、２３  割当変更部、２５  取得部、２７  処理単位決定部、３１  能力情報取得部、３３  ヒット率取得部、３５  占有率取得部、５１  第１プロセッサコア、５３  第１キャッシュメモリ、５５  第２プロセッサコア、５７  第２キャッシュメモリ。
【図１】
0006686599.tif 000002
【図２】
0006686599.tif 000003
【図３】
0006686599.tif 000004
【図４】
0006686599.tif 000005
【図５】
0006686599.tif 000006
【図６】
0006686599.tif 000007
【図７】
0006686599.tif 000008
【図８】
0006686599.tif 000009