(57)【要約】【課題】  システムの利用状況に合わせて動作負荷を分散させ、資源の有効利用を図ることができるプロセッサシステム、電子機器およびシステム制御プログラムを提供する。【解決手段】  プロセッサシステム５００は、複数のプロセッサコアを備える。プロセッサシステム５００は、複数のプログラムの各々に対して設定された、実行するプロセッサコアを固定するか否かの情報を記憶する記憶手段５０１と、実行される１以上のプログラムの各々に対してプロセッサコアを固定するか否かを該情報に基づき判断する第１判断手段５０２と、各プログラムの実行頻度を測定する測定手段５０３と、第１判断手段５０２によりプロセッサコアを固定すると判断されたプログラムにつき、該プログラムに対して設定されたプロセッサコアに固定すべきか否かを、測定された実行頻度に基づき判断する第２判断手段５０４とを含む。【選択図】  図５
2014153931.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを備えたプロセッサシステムであって、
複数のプログラムの各々に対して設定された、実行するプロセッサコアを固定するか否かの情報を記憶する記憶手段と、
起動された１以上のプログラムの各々に対してプロセッサコアを固定するか否かを、前記情報に基づき判断する第１判断手段と、
各プログラムの実行頻度を測定する測定手段と、
前記第１判断手段によりプロセッサコアを固定すると判断されたプログラムにつき、該プログラムをプロセッサコアに固定すべきか否かを、測定された前記実行頻度に基づき判断する第２判断手段とを含む、プロセッサシステム。
【請求項２】
前記測定手段は、各プログラムの実行回数を測定し、前記第２判断手段は、測定された実行回数が一定回数以上である場合に、プロセッサコアに固定すべきと判断する、請求項１に記載のプロセッサシステム。
【請求項３】
前記測定手段は、各プログラムのＣＰＵ使用率を測定し、前記第２判断手段は、測定されたＣＰＵ使用率が一定値以上である場合に、プロセッサコアに固定すべきと判断する、請求項１に記載のプロセッサシステム。
【請求項４】
前記測定手段は、各プログラムの実行回数と各プログラムのＣＰＵ使用率とを測定し、前記第２判断手段は、測定された実行回数が一定回数以上であり、かつ測定されたＣＰＵ使用率が一定値以上である場合に、プロセッサコアに固定すべきと判断する、請求項１に記載のプロセッサシステム。
【請求項５】
各プログラムが実行中であるか否かを検出する検出手段と、前記第２判断手段によりプロセッサコアに固定すべきと判断されたプログラムに対して、前記検出手段により実行中として検出された１以上のプログラムに固定されたプロセッサコア以外のプロセッサコアを固定するコア固定手段とを含む、請求項１〜４のいずれか１項に記載のプロセッサシステム。
【請求項６】
２以上のプログラムの各々に２以上のプロセッサコアの各々が固定されていて、プロセッサコアを固定すべき新たなプログラムが起動された場合に、前記測定手段により測定されたＣＰＵ使用率に基づき、固定するプロセッサコアを変更して、前記２以上のプログラムの各々と前記新たなプログラムとを前記２以上のプロセッサの各々に固定する変更手段を含む、請求項１〜５のいずれか１項に記載のプロセッサシステム。
【請求項７】
請求項１〜６のいずれか１項に記載のプロセッサシステムを備える電子機器。
【請求項８】
複数のプロセッサコアを備えたプロセッサシステムにより実行されるシステム制御プログラムであって、前記プロセッサシステムは、複数のプログラムの各々に対して設定された、実行するプロセッサコアを固定するか否かの情報を記憶する記憶手段を備えていて、前記システム制御プログラムは、
各プログラムの実行頻度を測定するステップと、
起動された１以上のプログラムの各々に対してプロセッサコアを固定するか否かを、前記情報に基づき判断するステップと、
プロセッサコアを固定すると判断されたプログラムにつき、該プログラムをプロセッサコアに固定すべきか否かを、測定された前記実行頻度に基づき判断するステップとを前記プロセッサシステムに実行させる、システム制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを備えたプロセッサシステム、そのプロセッサシステムを搭載した電子機器、そのプロセッサシステムにおいて実行されるシステム制御プログラムに関する。
【背景技術】
【０００２】
複数の処理を分散させ、全体の処理として高速化を図るために、複数のプロセッサコアを備えたプロセッサシステムが採用されている。このプロセッサシステムの動作形態として、ＳＭＰ(Symmetrical Multi Processing)と、ＡＭＰ(Asymmetrical Multi Processing)の２つがある。
【０００３】
ＳＭＰは、複数のプログラムを、複数のプロセッサコアの各々の負荷が均一になるように動的に分散させ、並列処理を行う方式である。これに対し、ＡＭＰは、負荷に関係なく、特定のプログラムを、予め決めたプロセッサコアにより実行させる方式である。このＡＭＰでは、特定のプログラムを特定のプロセッサコアに割り付けるので、プログラムのリアルタイム性を保証することができる。ここで、リアルタイム性があるとは、一定時間内にプログラムによる処理を完了できることをいう。
【０００４】
特定の機能を実現するために組み込まれる組み込み機器等では、精密な動作タイミングが必要なプログラムを使用する場合、ＳＭＰにより動作中にプロセッサコアが変更されると、キャッシュを有効利用できないという問題があった。また、この変更によってリアルタイム性を保証できないという問題もあった。これに対し、ＡＭＰでは、このような問題は発生しないが、特定のプロセッサコアに処理が集中することになるので、負荷が偏るという問題があった。
【０００５】
そこで、ＳＭＰとＡＭＰを混在させ、リアルタイム性を保証しつつ、ＡＭＰとして動作するプロセッサコアを順次変えることによって特定のプロセッサコアに負荷が偏ることを抑制する技術が提案されている（特許文献１参照）。この技術では、ＡＭＰとして使用するプロセッサコアと、ＳＭＰとして使用するプロセッサコアとを起動時に固定的に振り分けている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記技術では、システムの利用状況によって、ＡＭＰとして振り分けられたプロセッサコアが空いてしまったり、逆に負荷が集中したりする場合がある。これでは、特定のプロセッサコアに負荷が偏ることを抑制して資源の有効利用を図り、プログラムの実行効率を向上させることができない。
【課題を解決するための手段】
【０００７】
本発明は、上記課題に鑑み、複数のプロセッサコアを備えたプロセッサシステムであって、複数のプログラムの各々に対して設定された、実行するプロセッサコアを固定するか否かの情報を記憶する記憶手段と、起動された１以上のプログラムの各々に対してプロセッサコアを固定するか否かを該情報に基づき判断する第１判断手段と、各プログラムの実行頻度を測定する測定手段と、第１判断手段によりプロセッサコアを固定すると判断されたプログラムにつき、該プログラムに対して設定されたプロセッサコアに固定すべきか否かを、測定された実行頻度に基づき判断する第２判断手段とを含む、プロセッサシステムが提供される。
【発明の効果】
【０００８】
本発明によれば、システムの利用状況に合わせて動的に負荷を分散させ、資源の有効利用を図ることができ、プログラムの実行効率を向上させることもできる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の画像形成装置のハードウェア構成を示した図。
【図２】図１に示す画像形成装置が備えるＣＰＵの内部構成の一例を示した図。
【図３】図１に示す画像形成装置のソフトウェア構成を示した図。
【図４】図２に示すＣＰＵが複数のプログラムを実行する際の実行イメージを例示した図。
【図５】本実施形態のプロセッサシステムの機能ブロック図。
【図６】図５に示すプロセッサシステムが備える記憶手段に記憶される情報としてのテーブルを例示した図。
【図７】図５に示すプロセッサシステムが実行する処理の流れを例示したフローチャート。
【図８】記憶手段に記憶されるテーブルの別の例を示した図。
【図９】記憶手段に記憶されるテーブルのさらに別の例を示した図。
【発明を実施するための形態】
【００１０】
図１は、本実施形態の画像形成装置のハードウェア構成を示した図である。図１に示す画像形成装置は、複数のプロセッサコアを備えたプロセッサシステムを搭載し、複数のプログラムを並列に実行できるように構成されている。ここでは、このプロセッサシステムを搭載した装置として、画像形成装置を一例として挙げたが、画像形成装置に限られるものではなく、いかなる電子機器であってもよい。
【００１１】
電子機器としては、例えば、ＰＣ、スキャナ装置、コピー機、ファックス装置、デジタルビデオカメラ、デジタルカメラ、ゲーム機、ＰＤＡ(Personal Digital Assistant)、スマートフォン、タブレット端末等を挙げることができる。上記の画像形成装置としては、プリンタやＭＦＰ(Multi Function Peripheral)を挙げることができる。プリンタは、レーザプリンタであってもよいし、インクジェットプリンタであってもよい。以下、画像形成装置を、ＭＦＰとして詳細に説明する。
【００１２】
ＭＦＰ１００は、制御手段としてのコントローラボード１０１と、画像形成を行う画像形成手段１１０とを備える。コントローラボード１０１は、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、画像処理部１０５、操作部１０６、ＨＤＤ１０７、ＦＣＵ(Facsimile Control Unit)１０８、ネットワーク制御部１０９を備える。画像形成手段１１０は、印刷を実行するプロッタ１１１と、原稿等の画像を読み取るスキャナ１１２とを備える。
【００１３】
ＣＰＵ１０２は、ＯＳや各種プログラム等を実行することにより、画像形成装置１００の動作を制御する。ＲＯＭ１０３は、ＣＰＵ１０２が実行するプログラムが格納される不揮発性メモリである。ＲＡＭ１０４は、ＣＰＵ１０２の作業用領域として使用される揮発性メモリである。ＣＰＵ１０２は、ＲＯＭ１０３等から読み出したプログラムをこのＲＡＭ１０４上に展開し、その展開したプログラムを実行する。
【００１４】
画像処理部１０５は、画像形成手段１１０へ渡すための描画処理された画像データ等を生成し、また、読み取った画像データに対して補正や圧縮等の処理を行う。操作部１０６は、操作パネルを備えていて、ユーザから操作情報の入力を受け付け、ユーザへの情報表示を行う。ＨＤＤ１０７は、画像形成手段１１０から送られてきた各種データを保存する。ＦＣＵ１０８は、ファクシミリの送信および受信を制御する。ネットワーク制御部１０９は、ＬＡＮやインターネット等のネットワーク１２０に接続し、そのネットワーク１２０に接続される外部装置１２１との通信を行う。コントローラボード１０１は、その他、ＵＳＢインタフェースやＳＤカードスロット等を備えていてもよい。
【００１５】
プロッタ１１１は、コントローラボード１０１の画像処理部１０５から出力された画像データを受け付け、その画像データに基づき画像を印刷出力する。プロッタ１１１は、電子写真方式であれば、感光体ドラム、帯電ユニット、露光装置、現像ユニット、転写ユニット、定着ユニット、クリーニングユニット、除電ユニット等を備える。これらの各ユニットについてはよく知られたものであるので詳述しない。
【００１６】
スキャナ１１２は、紙等の媒体に記録された画像を読み取り、その読み取った画像の画像データを生成し、その画像データをコントローラボード１０１へ出力する。スキャナ１１２は、蛍光灯やＬＥＤ等の光源、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等の光電変換素子等を備える。
【００１７】
外部装置１２１は、ＰＣ等とされ、ＭＦＰ１００に対して印刷指示を送り、そのＭＦＰ１００の制御を行う。例えば、外部装置１２１は、ユーザによって作成された原稿等をＭＦＰ１００が解釈可能な印刷コマンドに変換し、その印刷コマンドをＭＦＰ１００へ送信することができる。また、外部装置１２１は、ＭＦＰ１００で読み取られた画像の画像データを取得し、自己が備える記憶装置に格納することができる。なお、外部装置１２１は、上記の印刷コマンドへの変換のためにプリンタドライバを実装することができる。
【００１８】
ＣＰＵ１０２は、図２に示すように、同じ種類の複数のプロセッサコア２００、２１０、２２０、２３０を備える。ＣＰＵ１０２は、プロセッサコア２００用のＬ１キャッシュ２０１、Ｌ２キャッシュ２０２を備え、プロセッサコア２１０用のＬ１キャッシュ２１１、Ｌ２キャッシュ２１２を備える。また、ＣＰＵ１０２は、プロセッサコア２２０用のＬ１キャッシュ２２１、Ｌ２キャッシュ２２２を備え、プロセッサコア２３０用のＬ１キャッシュ２３１、Ｌ２キャッシュ２３２を備える。さらに、ＣＰＵ１０２は、プロセッサコア２００、２１０、２２０、２３０に共通のＬ３キャッシュ２４０を備えている。
【００１９】
Ｌ１キャッシュ２０１、２１１、２２１、２３１は、高速で容量が小さいキャッシュメモリで、Ｌ２キャッシュ２０２、２１２、２２２、２３２は、Ｌ１キャッシュより低速で容量が大きいキャッシュメモリである。Ｌ３キャッシュ２４０は、Ｌ２キャッシュより低速で容量が大きいが、メインメモリであるＲＡＭ１０４より高速なキャッシュメモリである。使用頻度が高いデータや命令等は、最も高速であるＬ１キャッシュに格納される。
【００２０】
プロセッサコア２００、２１０、２２０、２３０は、各Ｌ１、Ｌ２、Ｌ３あるいはＲＡＭ１０４からデータや命令を読み取り、あるいは書き込む処理を実行する。例えば、プロセッサコア２００は、必要とするデータや命令を、最初にＬ１キャッシュ２０１内を探し、ない場合、Ｌ２キャッシュ２０２、Ｌ３キャッシュ２４０、ＲＡＭ１０４内を順に探すように構成される。
【００２１】
プロセッサコア２００、２１０、２２０、２３０は、各々が独立に動作可能で、例えば、４つのプログラムをそれぞれに同時に並列して実行させることが可能である。このため、処理を効率的に行うことができる。なお、図２では、４つのプロセッサコアを有する構成を例示したが、プロセッサコアは４つに限定されるものではなく、２つや３つ、あるいは５つ以上とすることも可能である。また、キャッシュも、Ｌ１キャッシュのみ、Ｌ１キャッシュとＬ２キャッシュのみとしてもよい。
【００２２】
図３は、コントローラボード１０１上で実行されるソフトウェアの構成例を示した図である。ＭＦＰ１００は、各種機能を実現するために、各種のソフトウェアを実装する。実装されるソフトウェアの１つとしては、ＲＯＭ１０３に格納されるＢＩＯＳ／モニタプログラム３００が挙げられる。ＢＩＯＳは、ＭＦＰ１００が備えるプロッタ１１１やスキャナ１１２等の機器を制御するプログラムである。モニタプログラムは、ＭＦＰ１００の動作を監視するためのプログラムである。
【００２３】
その他のソフトウェアとしては、ＯＳ３０１、コピーアプリケーション３０２、プリンタアプリケーション３０３、スキャナアプリケーション３０４、ＦＡＸアプリケーション３０５等が挙げられる。ＯＳ３０１は、入出力機能やメモリ管理等の各アプリケーションから共通して利用される基本的な機能を提供する。このＯＳ３０１は、ＢＩＯＳによって起動される。
【００２４】
コピーアプリケーション３０２は、原稿等を読み取り、それを印刷するコピー機能を実現するアプリケーションプログラムである。プリンタアプリケーション３０３は、印刷機能を実現するアプリケーションプログラムで、スキャナアプリケーション３０４は、原稿等を読み取るスキャナ機能を実現するアプリケーションプログラムである。ＦＡＸアプリケーション３０５は、原稿等を読み取り、それをファックス送信するファクシミリ機能を実現するアプリケーションプログラムである。
【００２５】
図３では、４つのアプリケーションが例示されているが、２つあるいは３つ、または５つ以上のアプリケーションを実装していてもよい。その他のアプリケーションとしては、メール機能を実現するメールアプリケーション、他の機器との通信処理を実行するアプリケーション、ユーザインタフェースへのデータ出力を実行するアプリケーション等を挙げることができる。
【００２６】
図３に示す複数のアプリケーションは、図２に示すような複数のプロセッサコアによって並列に実行することができる。ＣＰＵ１０２は、その動作形態として、上述したようなＳＭＰとＡＭＰの２つの動作形態をもつ。ＳＭＰは、処理能力を向上させるために、ＯＳ３０１が各アプリケーションを自動的にアイドル中のプロセッサコアに振り分け、各プロセッサコアの負荷が均一になるようにする。一方、ＡＭＰは、無駄なスケジューリングの発生を抑制し、リアルタイム性を保証するために、各アプリケーションを特定のプロセッサコアで固定的に実行する。
【００２７】
ここで、図４を参照して、上記特許文献１における手法（従来法）と、本発明における手法（本方法）の実行イメージについて説明する。図４（ａ）は、従来法の実行イメージを、図４（ｂ）は、本方法の実行イメージを例示した図である。画像形成装置のハードウェア構成は、図１に示すものと同様のものとし、ＣＰＵ１０２の構成は、図２に示すものと同様のものとし、ソフトウェア構成は、図３に示すものと同様のものとする。
【００２８】
例えば、コピーアプリケーション３０２を、実行するプロセッサコアとしてコア３に固定して実行するようにし、スキャナアプリケーション３０４を、実行するプロセッサコアとしてコア４に固定して実行するように設定する。その他のアプリケーションは、残ったコア１、コア２で並列して実行するように設定する。
【００２９】
このように設定すると、コア３は、コピーアプリケーション３０２用に、コア４は、スキャナアプリケーション３０４用に固定される。このように設定されたＭＦＰ１００において、その他のアプリケーションとして、アプリ１−ａ、１−ｂ、１−ｃ、２−ａ、２−ｂが、コピーアプリケーション３０２としてアプリ３−ａが実行されるものとする。
【００３０】
従来法では、図４（ａ）に示すように、アプリ１−ａ、１−ｂ、１−ｃ、２−ａ、２−ｂが、コア１、コア２で並列して実行され、アプリ３−ａが、固定されたコア３で実行される。コア４は、スキャナアプリケーション３０４が実行されないので、アイドル状態となっている。この従来法では、次回の起動時に、コピーアプリケーション３０２をコア４に、スキャナアプリケーション３０４をコア３に固定して実行するように設定し、これにより、プロセッサコアの負荷分散を行う。
【００３１】
しかしながら、ユーザがあまりスキャナ機能を利用しない場合、コア３とコア４のいずれか一方がアイドル状態となり、利用されないので、システム全体として無駄が生じてしまう。
【００３２】
本方法では、図４（ｂ）に示すように、あまり利用されないスキャナアプリケーション３０４に固定されたコア４を、コア１やコア２と同様のその他のアプリケーション用とする。そして、このコア４にも、アプリ１−ａ、１−ｂ、１−ｃ、２−ａ、２−ｂの一部であるアプリ１−ｂ、２−ｂを割り振り、実行させる。このようにすることで、プロセッサコアの負荷を分散させ、資源の無駄をなくして有効利用を図ることが可能となる。
【００３３】
これを実現するために、複数のプロセッサコアを備えたプロセッサシステム５００は、図５に示すような、記憶手段５０１と、第１判断手段５０２と、測定手段５０３と、第２判断手段５０４とを含んで構成される。なお、プロセッサシステム５００は、図示していないが、当然にして複数のプロセッサコアを備える。
【００３４】
記憶手段５０１としては、図２に示したＬ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュ、図１に示したＲＡＭ１０４やＨＤＤ１０７等を利用することができる。この記憶手段５０１は、複数のプログラムとしてのアプリケーションの各々に対して設定された、実行するプロセッサコアを固定するか否かの情報を記憶する。ここで、プロセッサコアを固定するとは、プログラムの実行を定めた１つのプロセッサコアのみが行い、他のプロセッサコアにはさせないようにすることをいう。記憶手段５０１に記憶される情報は、いかなる形式であってもよいが、図６に示すようなテーブル形式とすることができる。
【００３５】
図６に示すテーブル５０５は、プログラムを識別するための情報として、プログラム名が使用され、プログラム名と上記の情報とが対応付けられている。この情報は、そのプログラムがプロセッサコアを固定する対象（コア固定化対象）であるか否かの情報とされ、「対象」または「非対象」とされる。固定する対象のプログラムとしては、スキャナやプリンタ等の制御といったリアルタイム性が要求される処理を実行するスキャナアプリケーション、プリンタアプリケーション、コピーアプリケーション等が挙げられる。固定対象外のプログラムとしては、画像形成装置がサーバとして機能する際の通信処理やユーザインタフェースへのデータ出力といった時間制約がない処理を実行するアプリケーションが挙げられる。
【００３６】
また、テーブル５０５には、どのプロセッサコアに固定するかを示す情報（実行コア）も含まれる。例えば、コアに割り当てられた番号「１」等である。どのプロセッサコアにも固定しない場合は、どのコアにも割り当てられない「−１」等の特定の値とされる。図６に示すテーブルでは、プログラムＡはコア１で実行されるように固定され、プログラムＢ、Ｃは、コアを固定せずに空いているコアで実行するように設定されている。ここでは、プログラム名やコア番号を用いているが、プログラムおよびコアを識別することができる情報であれば、その他のいかなる情報を用いてもよい。
【００３７】
テーブル５０５内の情報は、上記した情報のみであってもよいが、それに追加して、そのプログラムの実行頻度を示す実行回数を含めることができる。実行回数が少なく、あまり利用されていないプログラムに対してプロセッサコアが固定されている場合、資源の無駄になることから、そのプロセッサコアにも他のプログラムを割り振ることができるようにするためである。
【００３８】
再び図５を参照して、第１判断手段５０２は、実行される１以上のプログラムの各々に対してプロセッサコアを固定するか否かを、テーブル５０５を参照して判断する。すなわち、第１判断手段５０２は、テーブル５０５内のコア固定化対象を参照し、「対象」になっていれば固定すると判断し、「非対象」になっていれば固定しないと判断する。
【００３９】
測定手段５０３は、各プログラムの実行頻度を測定する。測定手段５０３は、実行頻度として、ＭＦＰ１００の電源ＯＮからの各プログラムの実行回数を測定することができる。実行回数を測定するために、測定手段５０３は、カウンタを含んで構成することができる。カウンタは、各プログラムの起動時あるいは終了時に実行回数をカウントすることができる。実行回数は、１増加するたびに、測定手段５０３が、テーブル５０５内のそのプログラムに対応付けられた実行回数に上書きすることができる。
【００４０】
また、測定手段５０３は、実行頻度として、各プログラムの前回実行時におけるＣＰＵ使用率を測定することも可能である。ＣＰＵ使用率は、プログラムがプロセッサコアの処理時間を占有している割合である。このＣＰＵ使用率は、例えばＯＳが提供する一般的なコマンドを使用して取得することができる。一般的なコマンドとしては、ＯＳがＬｉｎｕｘ（登録商標）である場合、ｔｏｐコマンドを使用することができる。この取得したＣＰＵ使用率も、テーブル５０５内に各プログラムに対応付けて記憶することができる。
【００４１】
測定手段５０３は、上記実行回数および上記ＣＰＵ使用率のいずれか一方、あるいはその両方を検出することができる。なお、ＣＰＵ使用率は、前回実行時のものに限られるものではなく、前々回実行時における使用率であってもよい。また、前々回と前回というように複数のＣＰＵ使用率を平均したものであってもよい。
【００４２】
第２判断手段５０４は、第１判断手段５０２がプロセッサコアを固定すると判断したプログラムにつき、そのプログラムに対して設定されたプロセッサコアに固定すべきか否かを、測定された実行頻度に基づき判断する。実行頻度には予め閾値が設けられ、その閾値以上であるか否かを判断することにより、上記の実際に固定すべきか否かを判断する。実行頻度が実行回数である場合は、一定回数以上であるか否かを、ＣＰＵ使用率である場合は、一定値以上であるか否かを、それぞれ判断する。
【００４３】
閾値は、プロセッサコアの負荷の偏りやプログラムの実行効率等を考慮して、シミュレーションや試験等により最適値を求め、その最適値を採用することができる。
【００４４】
上記の処理により、固定すべきと判断されたプログラムについてのみ、そのプログラムの実行に対して、対応付けられたプロセッサコアを固定する。それ以外のプログラムについては、ＯＳがもつスケジューラにより、固定されていないプロセッサコアの負荷が分散するように、各プログラムにつき、実行する各プロセッサコアが決定される。
【００４５】
このプロセッサシステムにより実行される、プログラムを特定コアに固定する処理を、図７に示すフローチャートを参照して詳細に説明する。この処理を実行するためのシステム制御プログラムの起動により、ステップ７００から開始する。このシステム制御プログラムは、例えば、ＭＦＰ１００が電源ＯＮにされ、ＯＳが起動した後に自動起動することができる。
【００４６】
ステップ７１０では、特定コアに固定され、実行頻度が低いプログラムがあるかどうかを判断する。プロセッサシステムは、第３判断手段をさらに備え、この第３判断手段がこの判断を行うことができる。この判断では、テーブル５０５を参照し、実行コアが「−１」以外の値となっているプログラムにつき、その実行頻度として実行回数が一定回数未満のものがあるかどうかを判断する。なお、実行頻度は、実行回数ではなく、ＣＰＵ使用率であってもよい。
【００４７】
図６に示すテーブルを用いて具体的に説明する。例えば、上記の一定回数が１０とする。ステップ７１０の判断では、まず、実行コアが「−１」以外の値となっているプログラムとして、プログラムＡを特定する。そして、プログラムＡにつき、その実行回数の値が１０未満かどうかを判断し、１０以上であるので、ないと判断する。
【００４８】
再び図７を参照して、ステップ７１０で、あると判断した場合、ステップ７２０へ進み、その該当するコアを固定対象から外す。これは、そのコアを他のプログラムで有効に利用するためである。ここでの具体的な処理は、ＯＳのスケジューラのスケジューリング対象にそのコアを追加する処理である。
【００４９】
一般的なＯＳのスケジューラは、コア毎にキューを定義し、そのキューにつながれているプログラムを順次実行する。このとき、スケジューリング対象とされているコアのキューにのみプログラムをつなぐことが可能であり、ステップ７２０の処理では、このスケジューリング対象とされているコアに実行頻度が低いプログラムに固定されたコアを追加する。これにより、実行頻度が低いプログラムに固定されていたコアも、スケジューリングの対象となり、コアが空いてしまうことを防ぐことができる。ステップ７２０の処理が終了後、ステップ７３０へ進む。また、ステップ７１０で、ないと判断した場合も、ステップ７３０へ進む。
【００５０】
ステップ７３０では、第１判断手段５０２が、実行されたプログラムがコア固定化対象であるか否かを判断する。具体的には、第１判断手段５０２が、テーブル５０５を参照し、そのテーブル５０５内のコア固定化対象の列が「対象」となっているかどうかにより判断する。「対象」となっている場合、ステップ７４０へ進み、「非対象」となっている場合、ステップ７７０へ進む。
【００５１】
ステップ７４０では、測定手段５０３が、そのプログラムの実行頻度を測定する。この例では、測定手段５０３は、そのプログラムの実行回数を測定し、テーブル５０５内の実行回数に上書きして記録する。
【００５２】
ステップ７５０では、第２判断手段５０４が、実際にそのプログラムを特定コアに固定すべきか否かを判断する。この例では、第２判断手段５０４は、テーブル５０５内のそのプログラムの実行回数が一定回数以上であるかを判断する。一定回数以上であれば、固定すべきと判断し、一定回数未満であれば、固定しないと判断する。
【００５３】
ステップ７５０で固定すべきと判断された場合、ステップ７６０へ進み、そのプログラムをその特定コアに固定する。この処理は、まず、固定する特定コアを識別するためのコア識別情報（例えばコア番号）を、テーブル５０５内の実行コアの列に記録する。そして、ＯＳのスケジューラのスケジューリング対象とするコアから除外し、そのコアのキューにつながれているプログラムを固定化対象となっていないコアのキューに移動する。なお、そのプログラムが既に特定コアに固定されていた場合は、その同じコアでそのプログラムを実行するように制御する。この固定により、ステップ７８０へ進み、この処理を終了する。
【００５４】
ステップ７５０で固定しないと判断された場合、またはステップ７３０で固定化の対象でないと判断された場合、ステップ７７０で、ＯＳのスケジューラによってプログラムを実行する実行コアを決定し、ステップ７８０でこの処理を終了する。
【００５５】
このようにして、特定コアでプログラムを実行するように固定化することで、特に、画像処理のようなメモリを大量に使用するプログラムにおいて、キャッシュヒット率が高まることから、効率的にプログラムを実行できる。
【００５６】
テーブル５０５において、実行頻度が高いプログラムを特定コアに固定するように設定していれば、上記の処理により、そのプログラムは、その特定コアに固定される。その特定コアがそのプログラムを実行しているとき、他のプログラムについてコアを固定する場合、その特定コアに固定してしまうと、その特定コアに負荷が集中してしまう。
【００５７】
そこで、図５に示すテーブル５０５は、図８に示すようなテーブル５０５とし、各プログラムが実行中であるか否かを示すフラグが追加されている。各プログラムが実行中であればフラグが立てられ、１とされる。実行中でなければ、そのフラグは０とされる。このため、プログラムの起動時にフラグが１とされ、そのプログラムの終了時にフラグが０とされる。このフラグの情報を検出するために、プロセッサシステム５００は、各プログラムが実行中であるか否かを検出する検出手段を備えることができる。
【００５８】
このフラグは、図７に示したフローチャートのステップ７６０において、あるコアに固定する際、フラグが１であれば、そのコアを除外する。図８では、プログラムＡに対してフラグ１とされているため、プログラムＡに固定されたコア１は除外される。なお、全てのコアを固定化対象とすることができないため、コア０は常に固定化対象から除外することとする。コア０〜コア３までの４つのコアを有する場合、コア０、コア１は除外されるため、残りのコア２、コア３のいずれかが固定化対象のコアとして選択される。
【００５９】
このような処理を行うため、プロセッサシステム５００は、コア固定手段を備えることができる。コア固定手段は、第２判断手段５０４によりプロセッサコアに固定すべきと判断されたプログラムに対して、検出手段により実行中として検出された１以上のプログラムに固定されたプロセッサコア以外のプロセッサコアに固定する。
【００６０】
なお、複数のプロセッサコアから選択する場合、例えば、実行回数が少ない方を固定化対象のコアとして選択することができる。これは一例であり、この方法に限定されるものではない。なお、フラグを追加することにより、特定コアに負荷が集中することを防ぐことができる。
【００６１】
コア０〜コア３までの４つのコアを備えたプロセッサシステムにおいて、図９に示すテーブル５０５のように、コア１〜コア３が各プログラムの実行に固定されていた状態で、新たに固定化対象のプログラムが実行される場合がある。コア０は、上記のように常に固定化対象から除外されるため、各プログラムに１つずつコアを固定化したのでは、この新たなプログラムに対してはコアを固定化することができない。
【００６２】
そこで、各コアのＣＰＵ使用率を測定した結果から、各コアのＣＰＵ使用率が１００％を超えない範囲で、固定されているコア間において、固定するコアを変更するようにする。例えば、コア１のＣＰＵ使用率が４０％程度で、コア２のＣＰＵ使用率が５０％程度であれば、両者を合わせても９０％程度で１００％を超えない。このため、コア１に固定化されるプログラムＡ、コア２に固定されるプログラムＤを、同一のコア１にて実行するように固定し、上記の新たなプログラムをコア２で実行するように固定することができる。
【００６３】
このような処理を行うため、プロセッサシステム５００は、変更手段を備えることができる。変更手段は、２以上のプログラムの各々に２以上のプロセッサコアの各々が固定されていて、固定化対象の新たなプログラムが起動された場合に動作する。変更手段は、測定手段５０３により測定されたＣＰＵ使用率に基づき、固定するプロセッサコアを変更して、２以上のプログラムの各々と新たなプログラムとを、上記の２以上のプロセッサコアの各々に固定する。
【００６４】
この変更手段を備えることで、固定化対象のプログラム数が全コア数よりも多くなった場合であっても、各コアの負荷を分散しながら、プログラムの実行コアを固定することができる。
【００６５】
これまで本発明を、プロセッサシステム、電子機器の一例としての画像形成装置およびシステム制御プログラムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではない。したがって、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００６６】
１００…ＭＦＰ、１０１…コントローラボード、１０２…ＣＰＵ、１０３…ＲＯＭ、１０４…ＲＡＭ、１０５…画像処理部、１０６…操作部、１０７…ＨＤＤ、１０８…ＦＣＵ、１０９…ネットワーク制御部、１１０…画像形成手段、１１１…プロッタ、１１２…スキャナ、１２０…ネットワーク、１２１…外部装置、２００、２１０、２２０、２３０…プロセッサコア、２０１、２１１、２２１、２３１…Ｌ１キャッシュ、２０２、２１２、２２２、２３２…Ｌ２キャッシュ、２４０…Ｌ３キャッシュ、３００…ＢＩＯＳ／モニタプログラム、３０１…ＯＳ、３０２…コピーアプリケーション、３０３…プリンタアプリケーション、３０４…スキャナアプリケーション、３０５…ＦＡＸアプリケーション、５００…プロセッサシステム、５０１…記憶手段、５０２…第１判断手段、５０３…測定手段、５０４…第２判断手段、５０５…テーブル
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２０１１−１００２７７号公報
【図１】
2014153931.tif 000003
【図２】
2014153931.tif 000004
【図３】
2014153931.tif 000005
【図４】
2014153931.tif 000006
【図５】
2014153931.tif 000007
【図６】
2014153931.tif 000008
【図７】
2014153931.tif 000009
【図８】
2014153931.tif 000010
【図９】
2014153931.tif 000011