(57)【特許請求の範囲】
【請求項１】
第１コア、第２コア、および第３コアを含み、各々異なる処理を並列実行する複数のコアと、
前記第１コアおよび前記第２コアで共用される第１キャッシュメモリと、
少なくとも前記第３コアで用いられる第２キャッシュメモリと、
前記第１コアが第１処理を実行している場合において、第２処理の割り当て先を決定する際、前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より大きいときは、前記第３コアに当該第２処理を割り当てる決定手段と
を有する情報処理装置。
【請求項２】
前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より小さい場合、前記決定手段は、前記複数のコアのうち負荷の低いコアに当該第２処理を割り当てる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より小さい場合、前記決定手段は、前記第１コアまたは前記第２コアに当該第２処理を割り当てる
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１処理および前記第２処理の関連性が基準より高いか判断する判断手段を有し、
前記関連性が前記基準より高いと判断された場合、前記決定手段は、前記第１コアまたは前記第２コアに当該第２処理を割り当てる
ことを特徴とする請求項１ないし３のいずれか一項に記載の情報処理装置。
【請求項５】
前記関連性が前記基準より低いと判断された場合、前記決定手段は、前記第２処理を実行する際のキャッシュメモリ使用量に基づいて、当該第２処理の割り当て先となるコアを決定する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記判断手段は、前記第１処理および前記第２処理について、命令の種別および当該命令を発行したプログラムの少なくとも一方に基づいて前記関連性が前記基準より高いか判断する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記第２処理を実行する際のキャッシュメモリ使用量を予測する予測手段を有し、
前記決定手段は、前記予測手段により予測されたキャッシュメモリ使用量に基づいて、当該第２処理の割り当て先となるコアを決定する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
命令に関する属性およびキャッシュメモリ使用量を対応付けたテーブルを記憶した記憶手段を有し、
前記予測手段は、前記記憶手段に記憶されているテーブルを参照して前記キャッシュメモリ使用量を予測する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記第１処理および前記第２処理は、画像の形成に関する命令であり、
前記テーブルは、前記命令に関する属性として、前記画像が形成される媒体のサイズおよび当該画像の解像度の少なくとも一方を含む
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
第１コア、第２コア、および第３コアを含み、各々異なる処理を並列実行する複数のコア、当該第１コアおよび当該第２コアで共用される第１キャッシュメモリ、並びに少なくとも当該第３コアで用いられる第２キャッシュメモリを含む処理手段と、
前記第１コアが第１処理を実行している場合において、第２処理の割り当て先を決定する際、前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より大きいときは、前記第３コアに当該第２処理を割り当てる決定手段と
前記処理手段により処理された命令に応じて画像を形成する画像形成手段と
を有する画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および画像形成装置に関する。
【背景技術】
【０００２】
マルチコアのプロセッサを用いた情報処理装置が知られている。このような情報処理装置においては、各コアに対し処理（タスクやスレッド）をどのように割り当てるかという問題は、大きな技術課題の一つである。特許文献１は、キャッシュのヒット率を向上させるため、一旦終了したタスクと類似するタスクにコアを割り当てる場合、前回使用したコアと同一のキャッシュメモリを使うコアにそのタスクを割り当てる技術を開示している。特許文献２は、同一のキャッシュメモリを使うプロセッサをグループ化し、スレッドをグループ内の複数のプロセッサに割り当てる技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−９６０３９号公報
【特許文献２】特開平１１−２５９３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
キャッシュメモリを多く使用する処理が、同一のキャッシュメモリを使用する２つのコアに割り当てられた場合、これら２つのコアで互いにキャッシュメモリを上書きしあうこととなり、プロセッサが性能を発揮できないという問題があった。
【０００５】
本発明は、複数のコアで共用されるキャッシュメモリの使用効率を改善する技術を提供する。
【課題を解決するための手段】
【０００６】
本発明は、第１コア、第２コア、および第３コアを含み、各々異なる処理を並列実行する複数のコアと、前記第１コアおよび前記第２コアで共用される第１キャッシュメモリと、少なくとも前記第３コアで用いられる第２キャッシュメモリと、前記第１コアが第１処理を実行している場合において、第２処理の割り当て先を決定する際、前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より大きいときは、前記第３コアに当該第２処理を割り当てる決定手段とを有する情報処理装置を提供する。
【０００８】
前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より小さい場合、前記決定手段は、前記複数のコアのうち負荷の低いコアに当該第２処理を割り当ててもよい。
【０００９】
前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より小さい場合、前記決定手段は、前記第１コアまたは前記第２コアに当該第２処理を割り当ててもよい。
【００１０】
この情報処理装置は、前記第１処理および前記第２処理の関連性が基準より高いか判断する判断手段を有し、前記関連性が前記基準より高いと判断された場合、前記決定手段は、前記第１コアまたは前記第２コアに当該第２処理を割り当ててもよい。
【００１１】
前記関連性が前記基準より低いと判断された場合、前記決定手段は、前記第２処理を実行する際のキャッシュメモリ使用量に基づいて、当該第２処理の割り当て先となるコアを決定してもよい。
【００１２】
前記判断手段は、前記第１処理および前記第２処理について、命令の種別および当該命令を発行したプログラムの少なくとも一方に基づいて前記関連性が前記基準より高いか判断してもよい。
【００１３】
この情報処理装置は、前記第２処理を実行する際のキャッシュメモリ使用量を予測する予測手段を有し、前記決定手段は、前記予測手段により予測されたキャッシュメモリ使用量に基づいて、当該第２処理の割り当て先となるコアを決定してもよい。
【００１４】
この情報処理装置は、命令に関する属性およびキャッシュメモリ使用量を対応付けたテーブルを記憶した記憶手段を有し、前記予測手段は、前記記憶手段に記憶されているテーブルを参照して前記キャッシュメモリ使用量を予測してもよい。
【００１５】
前記第１処理および前記第２処理は、画像の形成に関する命令であり、前記テーブルは、前記命令に関する属性として、前記画像が形成される媒体のサイズおよび当該画像の解像度の少なくとも一方を含んでもよい。
【００１６】
また、本発明は、第１コア、第２コア、および第３コアを含み、各々異なる処理を並列実行する複数のコアと、前記第１コアおよび前記第２コアで共用される第１キャッシュメモリと、少なくとも前記第３コアで用いられる第２キャッシュメモリと、前記第１コアが第１処理を実行している場合において、第２処理の割り当て先を決定する際、前記第２処理を実行する際のキャッシュメモリ使用量および前記第１処理を実行する際のキャッシュメモリ使用量の和が前記第１キャッシュメモリの空き容量より大きいときは、前記第３コアに当該第２処理を割り当てる決定手段とを有する情報処理装置を提供する。
【発明の効果】
【００１７】
請求項１に係る情報処理装置によれば、第１キャッシュメモリの使用効率を改善することができる。
請求項２に係る情報処理装置によれば、第２処理を第１コアまたは第２コアに割り当てた場合と比較して、第１キャッシュメモリの使用効率を改善することができる。
請求項３に係る情報処理装置によれば、キャッシュメモリ使用量が問題にならない場合には負荷が低いコアに処理を割り当てることができる。
請求項４に係る情報処理装置によれば、単に負荷が低いコアに処理を割り当てる場合と比較して、より第１キャッシュメモリの使用効率を改善することができる。
請求項５に係る情報処理装置によれば、第１処理と第２処理との関連性によらずコアの割り当てを決定する場合と比較して、より第１キャッシュメモリの使用効率を改善することができる。
請求項６に係る情報処理装置によれば、第１処理と第２処理との関連性によらずキャッシュメモリ使用量だけを考慮する場合と比較して、より第１キャッシュメモリの使用効率を改善することができる。
請求項７に係る情報処理装置によれば、命令の種別およびその命令を発行したプログラムに応じて関連性を判断することができる。
請求項８に係る情報処理装置によれば、キャッシュメモリ使用量を実測する場合と比較してより負荷を低減することができる。
請求項９に係る情報処理装置によれば、テーブルを用いずキャッシュメモリ使用量を予測する場合と比較してより簡単にキャッシュメモリ使用量を予測することができる。
請求項１０に係る情報処理装置によれば、画像形成に係るパラメータに応じてキャッシュメモリ使用量を予測することができる。
請求項１１に係る画像形成装置によれば、第１キャッシュメモリの使用効率を改善することができる。
【図面の簡単な説明】
【００１８】
【図１】関連技術に係る情報処理装置９の構成を例示する図
【図２】一実施形態に係る画像形成装置１のハードウェア構成を例示する図
【図３】画像形成装置１のソフトウェア構成を例示する図
【図４】画像形成装置１の動作を示すフローチャート
【図５】動作例１に係る処理管理テーブルを例示する図
【図６】使用量予測テーブルを例示する図
【図７】動作例２に係る処理管理テーブルを例示する図
【発明を実施するための形態】
【００１９】
１．概要
図１は、関連技術に係る情報処理装置９の構成を例示する図である。情報処理装置９は、ＣＰＵ（Central Processing Unit）９０を有する。ＣＰＵ９０は、複数のコア、この例では、コア９０１〜９０４の４つのコアを有する。ここで、プロセッサの「コア」とは、プロセッサのうち命令の実行および演算を行う部分をいう。ＣＰＵ９０は、さらに、キャッシュメモリ９１１〜９１４およびキャッシュメモリ９２１〜９２２を有する。キャッシュメモリ９１１〜９１４は一次キャッシュ（いわゆるＬ１キャッシュ）であり、それぞれ、コア９０１〜９０４に専用のものである。キャッシュメモリ９２１および９２２は二次キャッシュ（いわゆるＬ２キャッシュ）である。キャッシュメモリ９２１はコア９０１および９０２で共用され、キャッシュメモリ９２２はコア９０３および９０４で共用される。なお一般にはＬ１キャッシュまで含めて「コア」という場合があるが、ここでは「コア」にＬ１キャッシュは含まれない。
【００２０】
一次キャッシュとはコアから最優先にアクセスされるキャッシュメモリをいい、二次キャッシュとは一次キャッシュの次の優先順位でアクセスされるキャッシュメモリをいう。一次キャッシュは、二次キャッシュよりも高速でかつ容量が小さい。メインメモリ（外部メモリ）へのアクセス要求が発生すると、コアはまずアクセス先のアドレスのデータが一次キャッシュに格納されているか調べる。アクセス先のアドレスのデータ（以下単に「アクセス先のデータ」という）が一次キャッシュに格納されていた場合、コアは一次キャッシュからデータを読み出す。アクセス先のデータがキャッシュメモリに格納されていることを「ヒット」といい、ヒットが発生する割合を「ヒット率」という。アクセス先のデータが一次キャッシュに格納されていなかった場合、コアは、アクセス先のデータが二次キャッシュに格納されていないか調べる。アクセス先のデータが二次キャッシュに格納されていた場合、コアは二次キャッシュからデータを読み出す。アクセス先のデータが二次キャッシュに格納されていなかった場合、コアはメインメモリからデータを読み出す。
【００２１】
また、ＣＰＵ９０は、いわゆるＳＭＰ（Symmetric Multi Processing）型のプロセッサであり、各コアの機能は同一である。マルチコア型のプロセッサには、この他、ＡＭＰ（Asymmetric Multi Processing）型のプロセッサも存在するが、例えば、いわゆる複合機のように、処理すべきタスクが多く、かつ、プリント、スキャン、ファクシミリ送受信、ＵＩ処理、ネットワーク処理など、処理の組み合わせが多数ある機器においては、一般にＳＭＰ型のプロセッサが用いられる。例えば、画像処理のようにパイプラインにより連続演算を前提としたデータ処理を行う場合、キャッシュのヒット率が下がるとメインメモリへのアクセスによるコアの待ち時間が発生してプロセッサのパフォーマンスが低下してしまう。したがって、どのコアにどの処理を割り当てるかというのは、プロセッサのパフォーマンスを左右する問題である。
【００２２】
特に、キャッシュメモリの使用量（以下「キャッシュ使用量」という）が多い処理のコアへの割り当てが適切でないと、キャッシュメモリの使用効率が下がり、結果としてプロセッサは十分に性能を発揮できなくなってしまう。
【００２３】
より具体的な例を用いて説明する。この例では、キャッシュメモリ９２１および９２２（Ｌ２キャッシュ）の容量は、それぞれ５１２ｋＢである。コア９０１はコピー処理を実行している。コピー処理におけるキャッシュ使用量は３８４ｋＢである。すなわち、キャッシュメモリ９２１のうち３８４ｋＢはコピー処理に使用されている。この状況で、新たにプリント処理を割り当てる例を考える。プリント処理におけるキャッシュ使用量は２５６ｋＢである。
【００２４】
この例で、新たに発生した処理は、負荷（使用率）の低いコアに割り当てられる。例えばコア９０２の負荷が低い場合にプリント処理をコア９０２に割り当てると、コピー処理およびプリント処理によるキャッシュ使用量の合計は３８４ｋＢ＋２５６ｋＢ＝６４０ｋＢとなり、キャッシュメモリ９２１の容量を超えてしまう。この場合、コピー処理およびプリント処理が互いにキャッシュメモリ９２１を上書きしあうこととなり、プロセッサは十分に性能を発揮できない。本実施形態は、このような問題に対処する。
【００２５】
２．構成
図２は、一実施形態に係る画像形成装置１の構成を例示する図である。画像形成装置１は、画像を形成する機能を有する情報処理装置の一例であり、例えばいわゆる複合機である。画像形成装置１は、ＣＰＵ１０、メモリコントローラー２０、主記憶装置（メインメモリ）３０、ＩＯコントローラー４０、補助記憶装置４１、画像読み取りユニット４２、画像形成ユニット４３、および通信ユニット４４を有する。
【００２６】
ＣＰＵ１０は、画像形成装置１の各部を制御する制御装置であり、各々異なる処理を実行する複数のコアを含む処理手段の一例である。ＣＰＵ１０は、コア１０１〜１０４、キャッシュメモリ１１１〜１１４、およびキャッシュメモリ１２１〜１２２を有する。キャッシュメモリ１１１〜１１４は一次キャッシュ（Ｌ１キャッシュ）であり、それぞれコア１０１〜１０４に専用のものである。キャッシュメモリ１２１〜１２２は二次キャッシュ（Ｌ２キャッシュ）である。キャッシュメモリ１２１はコア１０１および１０２で共用され、キャッシュメモリ１２２はコア１０３および１０４で共用される。
【００２７】
メモリコントローラー２０は、主記憶装置３０に対するデータの読み書きを制御する。主記憶装置３０は主記憶装置であり、例えばＤＲＡＭ（Dynamic Random Access Memory）を含む。主記憶装置３０は、ＣＰＵ１０がプログラムを実行する際のワークエリアとして機能し、種々のデータを記憶する記憶手段の一例である。
【００２８】
ＩＯコントローラー４０は、周辺装置をＣＰＵ１０に接続して制御する装置である。この例で、ＩＯコントローラー４０には、補助記憶装置４１、画像読み取りユニット４２、画像形成ユニット４３、および通信ユニット４４が接続されている。補助記憶装置４１はデータおよびプログラムを記憶する不揮発性の記憶装置であり、例えばＨＤＤ（Hard Disk Drive）を含む。画像読み取りユニット４２は、原稿を光学的に読み取る装置であり、例えばいわゆるスキャナーを含む。画像形成ユニット４３は、媒体（例えば紙）に画像を形成する装置であり、例えば電子写真技術またはインクジェット技術により画像形成を行う。通信ユニット４４は、他の機器と通信を行うインターフェースである。
【００２９】
図３は、画像形成装置１のソフトウェア構成を例示する図である。補助記憶装置４１は、画像形成装置１のＯＳ（Operating System）を機能させるためのプログラム（以下「ＯＳプログラム」という）および各種アプリケーション（コピー機能、スキャナー機能、ファクシミリ送受信機能等）を実現するためのプログラム（以下「アプリケーションプログラム」という）を記憶している。ＣＰＵ１０がこれらのプログラムを実行することにより、画像形成装置１にＯＳ５０およびアプリケーション６１〜６３が実装される。
【００３０】
アプリケーション６１〜６３は、それぞれＯＳ５０に対し処理の実行を命令する。すなわち処理を要求する。ここでいう処理とは、画像形成装置１のハードウェア資源を利用した処理、具体的には、例えば、画像読み取りユニット４２を用いて原稿から画像を読み取る処理、画像形成ユニット４３を用いて媒体に画像を形成する処理、および通信ユニット４４を用いてファクシミリ送信を行う処理をいう。ＯＳ５０は、アプリケーションにより要求された処理を複数のコアのうちいずれかのコアに割り当てる。コア１０１〜１０４は、ＯＳ５０によってそれぞれ独立したＣＰＵとして認識される（以降の図においてＣＰＵ１〜４と表記する）。
【００３１】
アプリケーションにおいて新たな処理の要求が発生すると、ＯＳ５０は、その処理をどのコアに実行させるか決定する。詳細には以下のとおりである。ＯＳ５０は、検知手段５１、判断手段５２、予測手段５３、および決定手段５４を有する。
【００３２】
検知手段５１は、アプリケーション６１〜６３により新たに要求された処理を検知する。いまここで、コア１０１にある処理（以下「第１処理」という）が既に割り当てられており、かつコア１０１が第１処理を実行中である場合において、検知手段５１が新たな処理（以下「第２処理」という）の要求を検知した例を考える。ＯＳ５０は、第２処理の割り当て先となるコアすなわち第２処理を実行するコアを決定する。
【００３３】
判断手段５２は、第１処理および第２処理の関連性が基準より高いか判断する。第１処理および第２処理の関連性が基準より高いと判断された場合、決定手段５４は、コア１０１とＬ２キャッシュを共用するコア（すなわちコア１０１またはコア１０２）に第２処理を割り当てる。
【００３４】
第１処理および第２処理の関連性が低いと判断された場合、予測手段５３は、第２処理を実行する際のキャッシュメモリ使用量を予測する。決定手段５４は、予測手段５３により予測されたキャッシュメモリ使用量に基づいて、第２処理の割り当て先となるコアを決定する。具体的には、第２処理を実行する際のキャッシュメモリ使用量および第１処理を実行する際のキャッシュメモリ使用量の和がキャッシュメモリ１２１（第１キャッシュメモリの一例）の空き容量より大きい場合、決定手段５４は、コア１０３（第３コアの一例）に第２処理を割り当てる。また、第２処理を実行する際のキャッシュメモリ使用量および第１処理を実行する際のキャッシュメモリ使用量の和がキャッシュメモリ１２１の空き容量より小さい場合、決定手段５４は、複数のコアのうち負荷の低いコアに第２処理を割り当てる。
【００３５】
３．動作
図４は、画像形成装置１の動作を示すフローチャートである。図３のフローは、新たな処理（以下「新規処理」という。第２処理の一例）の要求が検知されたことを契機として開始する。以下の説明において、ＯＳ５０等のソフトウェアを処理の主体として記載することがあるが、これは、そのソフトウェアを実行しているＣＰＵ１０が他のハードウェア資源と共同して処理を実行することを意味する。
【００３６】
ステップＳ１０１において、ＯＳ５０は、新規処理がキャッシュメモリを使用するものであるか判断する。キャッシュメモリ使用の有無は、例えば、処理毎に定められている。より詳細には、主記憶装置３０が、処理とキャッシュメモリ使用の有無とを対応付けたテーブル（図示略）を記憶しており、ＯＳ５０はこのテーブルを参照して、新規処理がキャッシュメモリを使用するものであるか否か判断する。新規処理がキャッシュメモリを使用するものであると判断された場合（Ｓ１０１：ＹＥＳ）、ＯＳ５０は、処理をステップＳ１０２に移行する。新規処理がキャッシュメモリを使用するものでないと判断された場合（Ｓ１０１：ＮＯ）、ＯＳ５０は、処理をステップＳ１１１に移行する。
【００３７】
ステップＳ１０２において、ＯＳ５０は、複数のコアのうちいずれかのコアが既に実行している処理（以下「先行処理」という。第１処理の一例）があるか判断する。先行処理の有無は、処理管理テーブルを用いて判断される。
【００３８】
図５は、処理管理テーブルを例示する図である。処理管理テーブルは、実行中の処理に関連して、ユーザＩＤ、処理ＩＤ、関連処理ＩＤ、処理、キャッシュ使用量、およびコアのレコードを含んでいる。「ユーザＩＤ」は、コアを使用する主体すなわちこの例ではアプリケーションを特定する識別子である。「処理ＩＤ」は、処理を一意に特定する識別子である。「関連処理ＩＤ」は、その処理との関連性が高い処理の処理ＩＤである。「処理種別」はその処理の種別を示す。この例では、処理の種別として「コピー」および「プリント」が記載されている。「キャッシュ使用量」は、その処理によるＬ２キャッシュの使用量を示す。「コア」は、その処理が割り当てられた（その処理を実行している）コアを示す。
【００３９】
処理管理テーブルには、現在実行中の処理に関するレコードが記録されている。処理管理テーブルに何らかのレコードが記録されている場合、先行処理があるということである。処理管理テーブルが空で何も記録されていない場合、先行処理がないということである。処理管理テーブルは、主記憶装置３０に記憶されている。ＯＳ５０は、主記憶装置３０に記憶されている処理管理テーブルを参照して、先行処理の有無を判断する。
【００４０】
再び図４を参照する。先行処理があると判断された場合（Ｓ１０２：ＹＥＳ）、ＯＳ５０は、処理をステップＳ１０３に移行する。先行処理がないと判断された場合（Ｓ１０２：ＮＯ）、ＯＳ５０は、処理をステップＳ１１１に移行する。
【００４１】
ステップＳ１０３において、ＯＳ５０は、新規処理と同じ種別の先行処理があるか判断する。ＯＳ５０は、主記憶装置３０に記憶されている処理管理テーブルを参照して、新規処理と同じ種別の先行処理があるか判断する。新規処理と同じ種別の先行処理があると判断された場合（Ｓ１０３：ＹＥＳ）、ＯＳ５０は、処理をステップＳ１０４に移行する。新規処理と同じ種別の先行処理がないと判断された場合（Ｓ１０３：ＮＯ）、ＯＳ５０は、処理をステップＳ１０８に移行する。
【００４２】
ステップＳ１０４において、ＯＳ５０は、新規処理と同じユーザ（すなわち同じアプリケーション）による先行処理があるか判断する。ＯＳ５０は、主記憶装置３０に記憶されている処理管理テーブルを参照して、新規処理と同じユーザによる先行処理があるか判断する。新規処理と同じユーザによる先行処理があると判断された場合（Ｓ１０４：ＹＥＳ）、ＯＳ５０は、処理をステップＳ１０５に移行する。新規処理と同じユーザによる先行処理がないと判断された場合（Ｓ１０４：ＮＯ）、ＯＳ５０は、処理をステップＳ１０８に移行する。
【００４３】
ステップＳ１０５において、ＯＳ５０は、新規処理に関する「関連処理ＩＤ」のレコードを、処理管理テーブルに登録する。この例では、新規処理と処理種別およびユーザＩＤが同じ先行処理が、新規処理と関連性が高い先行処理と判断され、その先行処理の処理ＩＤが、新規処理に対する関連処理ＩＤとして登録される。
【００４４】
なおこの時点ではまだ新規処理のレコードが処理管理テーブルに登録されていないので、ＯＳ５０は、新規処理のレコードを処理管理テーブルに登録する。ここではまず、ユーザＩＤ、処理ＩＤ、処理種別、およびキャッシュ使用量が登録される。キャッシュ使用量は、まだ処理が開始されていない段階で実測値を記録することが難しいので、予測値が記録される。
【００４５】
図６は、キャッシュ使用量の予測値を得るための使用量予測テーブルを例示する図である。使用量予測テーブルは主記憶装置３０に記憶されており、ＯＳ５０は主記憶装置３０に記憶されている使用量予測テーブルを参照してキャッシュ使用量の予測値を得る。使用量予測テーブルにおいては、処理に用いられるパラメータとキャッシュ使用量の予測値とが対応付けられている。図６は、一例として、プリント処理に係るキャッシュ使用量の予測値を示している。この例では、プリント処理に用いられるパラメータとして、「用紙サイズ」、「解像度」、および「モード」が用いられている。「用紙サイズ」は画像が形成される媒体の大きさを示す。媒体が大きいほどキャッシュ使用量が増える傾向がある。「解像度」は、形成される画像の解像度を示す。解像度が高いほどキャッシュ使用量が増える傾向がある。「モード」は形成される画像の種別を示す。形成される画像の種別に応じて、例えば異なる画像処理が行われる。この例では、「モード」は「文字」または「写真」である。「文字」よりも「写真」の方がキャッシュ使用量が多い。
【００４６】
図５を参照して、新規処理に対する「関連処理ＩＤ」の登録について説明する。例えば処理ＩＤ「１００」および「１０１」の処理が実行中である場合において、ユーザＩＤ「００２」のアプリケーションにより「プリント」処理が要求された状況を考える。すなわち、図５のテーブルにおいて処理ＩＤ「１００」および「１０１」の処理が先行処理であり、処理ＩＤ「１０２」の処理が新規処理である状況である。このとき、先行処理のうち処理ＩＤ「１０１」の処理は、ユーザＩＤおよび処理種別が新規処理と同じである。したがって、新規処理は、処理ＩＤ「１０１」の処理と関連性が高いと判断され、処理ＩＤ「１０２」に対応する関連処理ＩＤのレコードには「１０１」が記録される。
【００４７】
再び図４を参照する。ステップＳ１０６において、ＯＳ５０は、先行処理とＬ２キャッシュを共用するコアに処理を割り当てる。例えば先ほどの、図５のテーブルにおいて処理ＩＤ「１００」および「１０１」の処理が先行処理であり、処理ＩＤ「１０２」の処理が新規処理である状況を考えると、先行処理を実行しているコアであるＣＰＵ３（コア１０３）とＬ２キャッシュを共用するコアであるＣＰＵ３またはＣＰＵ４（コア１０３またはコア１０４）に新規処理が割り当てられる。ＣＰＵ３およびＣＰＵ４のどちらに処理を割り当てるかは、例えば、コアの負荷に応じて決められる。すなわち、ＯＳ５０は、最も負荷が低いコアに新規処理を割り当てる。コアの割り当てが決定すると、ＯＳ５０は、処理管理テーブルにコアのレコードを登録する。
【００４８】
ステップＳ１０７において、処理が割り当てられたコアは、新規処理の実行を開始する。処理を開始すると、図４のフローは終了する。
【００４９】
ステップＳ１０８において、ＯＳ５０は、新規処理のレコードを処理管理テーブルに登録する。なおここでは、新規処理に対する「関連処理ＩＤ」は登録されず空値のままである。
【００５０】
ステップＳ１０９において、ＯＳ５０は、Ｌ２キャッシュの空き容量が十分なコアがあるか判断する。具体的には、ＯＳ５０は、Ｌ２キャッシュの各々について、先行処理のキャッシュ使用量および新規処理のキャッシュ使用量の和が、Ｌ２キャッシュの容量未満であるか判断する。先行処理および新規処理のキャッシュ使用量は、使用量予測テーブルを用いて予測される。この和がＬ２キャッシュの容量未満である場合、ＯＰＳ５０は、そのＬ２キャッシュの空き容量は十分であると判断する。Ｌ２キャッシュの空き容量が十分なコアがあると判断された場合（Ｓ１０９：ＹＥＳ）、ＯＳ５０は、処理をステップＳ１１０に移行する。Ｌ２キャッシュの空き容量が十分なコアがないと判断された場合（Ｓ１０９：ＮＯ）、ＯＳ５０は、処理をステップＳ１１２に移行する。
【００５１】
ステップＳ１１０において、ＯＳ５０は、ＯＳ５０は、先行処理とＬ２キャッシュを共用しないコアに処理を割り当てる。この場合、先行処理のキャッシュ使用量および新規処理のキャッシュ使用量の和はＬ２キャッシュの容量以下であるので、単一のＬ２キャッシュが先行処理および新規処理で共用されても互いにキャッシュメモリを上書きしあうことはない。コアの割り当てが決定すると、ＯＳ５０は、処理管理テーブルにコアのレコードを登録する。テーブルへの登録が完了すると、ＯＳ５０は、処理をステップＳ１０７に移行する。
【００５２】
なお、Ｌ２キャッシュの空き容量が十分なコアが複数ある場合、ＯＳ５０は、例えば以下のいずれかの基準により選択された１つのコアに新規処理を割り当てる。
（１）Ｌ２キャッシュの空き容量が最も少ないコア
（２）負荷が最も低いコア
（３）関連性がより高い先行処理を実行しているコア
（４）処理種別毎にあらかじめ決められたコア
基準（１）によれば、今後要求される処理に対してより大きな空き容量のＬ２キャッシュが確保される。基準（２）によれば、負荷が分散される。基準（３）によれば、キャッシュのヒット率が向上する可能性が高まる。基準（４）によれば、コアを選択する処理の負荷が低減される。なお関連性がより高い先行処理とは、新規処理と処理種別またはユーザＩＤが同じ先行処理をいう。
【００５３】
ステップＳ１１１において、ＯＳ５０は、新規処理のレコードを処理管理テーブルに登録する。なおここでは、新規処理に対する「関連処理ＩＤ」は登録されず空値のままである。
【００５４】
ステップＳ１１２において、ＯＳ５０は、新規処理を割り当てるコアを、コアの負荷に応じて決定する。すなわち、ＯＳ５０は、負荷が最も低いコアに新規処理を割り当てる。コアの割り当てが決定すると、ＯＳ５０は、処理管理テーブルにコアのレコードを登録する。テーブルへの登録が完了すると、ＯＳ５０は、処理をステップＳ１０７に移行する。
【００５５】
図５を参照してより詳細な動作例（動作例１）を説明する。動作例１は、種別が異なる複数の処理が実行される例である。具体的には、ユーザＩＤ「００１」のアプリケーションがコピー処理を、ユーザＩＤ「００２」のアプリケーションがプリント処理を要求する例を示している。この例では、処理ＩＤが若い方がより先に要求された処理である。
【００５６】
（１）動作例１−１
新規処理：１０１
先行処理：１００
先行処理と新規処理とは処理種別が異なるので、空き容量が十分なコアのうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ３（コア１０３）の負荷が最も低い。新規処理はＣＰＵ３に割り当てられる。
【００５７】
（２）動作例１−２
新規処理：１０２
先行処理：１００、１０１
先行処理のうち処理ＩＤ「１０１」の処理が、新規処理とユーザＩＤおよび処理種別が同じである。したがって関連処理ＩＤとして「１０１」が登録され、ＣＰＵ３とＬ２キャッシュを共用するＣＰＵ３またはＣＰＵ４（コア１０３またはコア１０４）が割り当て先の候補である。このうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ４（コア１０４）の負荷が最も低い。新規処理はＣＰＵ４に割り当てられる。
【００５８】
（３）動作例１−３
新規処理：１０３
先行処理：１００、１０１、１０２
先行処理のうち処理ＩＤ「１００」の処理が、新規処理とユーザＩＤおよび処理種別が同じである。したがって関連処理ＩＤとして「１００」が登録され、ＣＰＵ１とＬ２キャッシュを共用するＣＰＵ１またはＣＰＵ２（コア１０１またはコア１０２）が割り当て先の候補である。このうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ２（コア１０２）の負荷が最も低い。新規処理はＣＰＵ２に割り当てられる。
【００５９】
例えば同一ユーザによる同一処理の場合、用いられるデータは共通である可能性が高い。したがって、Ｌ２キャッシュが共通のコアにこれらの処理を割り当てることによって、キャッシュのヒット率が向上する可能性が高まる。
【００６０】
図６は、動作例２に係る処理管理テーブルを例示する図である。動作例２は、種別が同じ複数の処理が実行される例である。具体的には、ユーザＩＤ「００１」のアプリケーションがあるページのプリント処理を、ユーザＩＤ「００２」のアプリケーションが別のページのプリント処理を要求する例を示している。この例では、処理ＩＤが若い方がより先に要求された処理である。
【００６１】
（１）動作例２−１
新規処理：１０１
先行処理：１００
先行処理と新規処理とは処理種別が異なるので、空き容量が十分なコアのうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ３（コア１０３）の負荷が最も低い。新規処理はＣＰＵ３に割り当てられる。
【００６２】
（２）動作例２−２
新規処理：１０２
先行処理：１００、１０１
先行処理のうち処理ＩＤ「１０１」の処理が、新規処理とユーザＩＤおよび処理種別が同じである。したがって関連処理ＩＤとして「１０１」が登録され、ＣＰＵ３とＬ２キャッシュを共用するＣＰＵ３またはＣＰＵ４（コア１０３またはコア１０４）が割り当て先の候補である。このうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ４（コア１０４）の負荷が最も低い。新規処理はＣＰＵ４に割り当てられる。
【００６３】
（３）動作例２−３
新規処理：１０３
先行処理：１００、１０１、１０２
先行処理のうち処理ＩＤ「１００」の処理が、新規処理とユーザＩＤおよび処理種別が同じである。したがって関連処理ＩＤとして「１００」が登録され、ＣＰＵ１とＬ２キャッシュを共用するＣＰＵ１またはＣＰＵ２（コア１０１またはコア１０２）が割り当て先の候補である。このうち、負荷が最も低いコアに新規処理が割り当てられる。この例ではＣＰＵ２（コア１０２）の負荷が最も低い。新規処理はＣＰＵ２に割り当てられる。
【００６４】
例えば同一のページの画像をプリントする場合、用いられるデータは共通である可能性が高い。したがって、Ｌ２キャッシュが共通のコアにこれらの処理を割り当てることによって、キャッシュのヒット率が向上する可能性が高まる。
【００６５】
４．変形例
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち２つ以上のものが組み合わせて用いられてもよい。
【００６６】
ＣＰＵ１０の構成は図２に例示したものに限定されない。コアの数やキャッシュメモリの階層構造はあくまで例示である。ＣＰＵ１０は、少なくとも、第１キャッシュメモリを共用する２つのコアと、第１キャッシュメモリと別の第２キャッシュメモリを用いる少なくとも１つのコアを有して入ればよい。第１キャッシュメモリが３つ以上のコアで共用されてもよい。また、ＣＰＵ１０は、Ｌ２キャッシュの下層にＬ３キャッシュを有していてもよい。
【００６７】
また、ＣＰＵ１０は、物理的に１つのチップに複数のコアおよびキャッシュメモリを搭載したものに限定されない。複数のＣＰＵチップで１つのキャッシュメモリを共用する情報処理装置に対し、本発明が適用されてもよい。
【００６８】
さらに、実施形態における「複数のコア」は物理的に異なる複数のコアに限定されない。物理的に１つのコアが、時分割で論理的に（擬似的に）複数のコアとして用いられてもよい。
【００６９】
本発明に係る情報処理装置は、図２に例示した画像形成装置１に限定されない。ＣＰＵ１０を用いて複数の処理を並列実行するものであれば、情報処理装置はどのような装置であってもよい。例えば、情報処理装置は、パーソナルコンピュータ、スマートフォン、またはタブレット端末であってもよい。
【００７０】
情報処理装置のソフトウェア構成は図３に例示したものに限定されない。ＯＳおよびアプリケーションによる機能の分担はあくまで例示である。情報処理装置は、処理を発生させるソフトウェアコンポーネント、および発生した処理を実行させるコアを決定するソフトウェアコンポーネントを有していればよい。
【００７１】
情報処理装置の動作は図４に例示したものに限定されない。例えば、ステップＳ１１２におけるコアの割り当ては、コアの負荷に応じて割り当てるものに限定されない。Ｌ２キャッシュの空き容量が最も少ないコア、関連性がより高い先行処理を実行しているコア、または処理種別毎にあらかじめ決められたコアに新規処理が割り当てられてもよい。
【００７２】
先行処理および新規処理の関連性を評価する方法は、実施形態で例示したものに限定されない。実施形態においては処理種別およびユーザＩＤが同一かどうかを基準として関連性が評価されたが、これ以外の基準が用いられてもよい。
【００７３】
キャッシュ使用量を得る方法は実施形態で例示したものに限定されない。例えば、各アプリケーションは、ＯＳ５０に処理を要求する際に、キャッシュ使用量を通知してもよい。ＯＳ５０は、アプリケーションから通知されたキャッシュ使用量を用いて、Ｌ２キャッシュに十分な空き容量があるか判断する。
【００７４】
十分な空き容量があるか判断の対象となるキャッシュメモリは、Ｌ２キャッシュに限定されない。複数のコアで共用されるものであれば、どの階層のキャッシュメモリが対象となってもよい。
【００７５】
また、ＣＰＵ１０は、物理的に１つのチップに複数のコアおよびキャッシュメモリを搭載したものに限定されない。複数のＣＰＵチップで１つのキャッシュメモリを共用する情報処理装置に対し、本発明が適用されてもよい。
【符号の説明】
【００７６】
１…画像形成装置、９…情報処理装置、１０…ＣＰＵ、２０…メモリコントローラー、３０…主記憶装置、４０…ＩＯコントローラー、４１…補助記憶装置、４２…画像読み取りユニット、４３…画像形成ユニット、４４…通信ユニット、５０…ＯＳ、５１…検知手段、５２…判断手段、５３…予測手段、５４…決定手段、６１〜６３…アプリケーション、９０…ＣＰＵ、１０１〜１０４…コア、１１１〜１１４…キャッシュメモリ（Ｌ１）、１２１〜１２２…キャッシュメモリ（Ｌ２）、９０１〜９０４…コア、９１１〜９１４…キャッシュメモリ（Ｌ１）、９２１〜９２２…キャッシュメモリ（Ｌ２）
【図１】
0006551069.tif 000002
【図２】
0006551069.tif 000003
【図３】
0006551069.tif 000004
【図４】
0006551069.tif 000005
【図５】
0006551069.tif 000006
【図６】
0006551069.tif 000007
【図７】
0006551069.tif 000008