(57)【要約】【課題】マルチコアシステムの各ＣＰＵコアに、実行するタスクを割り当てるタスク割当装置において、必要なＣＰＵ利用率の大きいタスクが生じた際も、そのタスクが実行できる可能性を確保して、従来よりもリアルタイム性を向上させる。【解決手段】リアルタイムタスクの発生元のプログラムの必要計算量を計測し、タスクに課せられた時間制約と、そのタスクの発生元のプログラムの必要計算量から、タスクが時間制約を満たすために必要な必要ＣＰＵ利用率を計算する。そして、各ＣＰＵコアの現在のＣＰＵ利用率を計測し、必要ＣＰＵ利用率に基づいて、そのタスクを割り当てたときのＣＰＵ利用率（現在のＣＰＵ利用率＋タスクの必要ＣＰＵ利用率）が１００％以内であり、かつ、最大となるＣＰＵコアをタスク処理の実行の割り当て先として選択する。【選択図】図４
2010277171.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵコアを保持するマルチコアシステムの各ＣＰＵコアに対して、タスクの処理の実行を割り当てるタスク割当装置において、
タスク実行の開始から終了までに時間制約が指定されたタスクの前記ＣＰＵコアに対する処理の実行の割り当てに際して、
前記タスクの発生させる元になるプログラムの必要計算量と前記タスクに指定された時間制約とから、各ＣＰＵコアで実行するときに、前記タスクの時間制約を満たすために必要な必要ＣＰＵ利用率を計算する必要ＣＰＵ利用率計算手段と、
前記マルチコアシステム中の各ＣＰＵコアの現在のＣＰＵ利用率を取得するＣＰＵコア利用状況監視手段と、
各ＣＰＵコアの現在のＣＰＵ利用率と、前記計算された各ＣＰＵコアでのタスクの必要ＣＰＵ利用率とに基づき、前記タスクの処理を実行するＣＰＵコアの割り当て先を決定するタスク割当先決定手段とを有するタスク割当装置。
【請求項２】
前記タスク割当先決定手段は、
前記タスクの処理の実行を割り当てたときに、時間制約を満たすことが可能な前記マルチコアシステム中のＣＰＵコアのうち、
前記タスクの処理の実行を割り当てたときに、ＣＰＵ利用率が最大となるＣＰＵコアに対して前記タスクの処理の実行を割り当てることを特徴とする請求項１記載のタスク割当装置。
【請求項３】
タスク割当先決定手段における応答性タスクの前記ＣＰＵコアに対する処理の実行の割り当てに際して、
前記応答性タスクは、現在のＣＰＵ利用率が最も低い前記ＣＰＵコアに割り当てることを特徴とする請求項１記載のタスク割当装置。
【請求項４】
複数のＣＰＵコアを保持するマルチコアシステムの各ＣＰＵコアに対して、タスクの処理の実行を割り当てるタスク割当方法において、
タスク実行の開始から終了までに時間制約が指定されたタスクの前記ＣＰＵコアに対する処理の実行の割り当てに際して、
前記タスクの発生させる元になるプログラムの必要計算量と前記タスクに指定された時間制約とから、各ＣＰＵコアで実行するときに、前記タスクの時間制約を満たすために必要な必要ＣＰＵ利用率を計算する必要ＣＰＵ利用率計算ステップと、
前記マルチコアシステム中の各ＣＰＵコアの現在のＣＰＵ利用率を取得するＣＰＵコア利用状況監視ステップと、
各ＣＰＵコアの現在のＣＰＵ利用率と、前記計算された各ＣＰＵコアでのタスクの必要ＣＰＵ利用率とに基づき、前記タスクの処理を実行するＣＰＵコアの割り当て先を決定するタスク割当先決定ステップとを有するタスク割当方法。
【請求項５】
前記タスク割当先決定ステップにおいて、
前記タスクの処理の実行を割り当てたときに、時間制約を満たすことが可能な前記マルチコアシステム中のＣＰＵコアのうち、
前記タスクの処理の実行を割り当てたときに、ＣＰＵ利用率が最大となるＣＰＵコアに対して前記タスクの処理の実行を割り当てることを特徴とする請求項４記載のタスク割当方法。
【請求項６】
タスク割当先決定手段における応答性タスクの前記ＣＰＵコアに対する処理の実行の割り当てに際して、
前記応答性タスクは、現在のＣＰＵ利用率が最も低い前記ＣＰＵコアに割り当てることを特徴とする請求項４記載のタスク割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク割当装置、および、タスク割当方法に係り、特に、マルチコアシステムの各ＣＰＵコアに、実行するタスクを割り当てるときに、必要なＣＰＵ利用率の大きいタスクが生じた際も、そのタスクが実行できる可能性を確保して、従来よりもリアルタイム性を向上させる用途に用いて好適なタスク割当装置、および、タスク割当方法に関する。
【背景技術】
【０００２】
計算機システムの演算能力を向上させる手段として、特に、並列処理の処理能力を向上させるために有効な技術として、ＣＰＵコアを複数有するマルチコアシステムが提案されている。このマルチコアシステムを用いて複数のタスクを実行させる場合には、それぞれのタスクを、どのＣＰＵコアで処理するかを決定するタスク割り当てが必要になる。
【０００３】
組み込みシステムなどの計算機システムでは、処理の開始から終了までの時間に対する制約（以下、「時間制約」という）の課せられたリアルタイムタスクが存在する。例えば、映像表示処理機器においては、一定時間内に映像表示のためのプログラムが実行を終えることができない場合、出力映像の乱れが発生することとなる。
【０００４】
リアルタイムタスクのリアルタイム性を確保するための手法として、資源予約型システムが提案されている。資源予約型システムでは、明示的に設定されたプロセッサの実行時間を確実にタスクへ割り当てる事で、必要な処理量（ＣＰＵ利用率）を確保し、リアルタイムタスクの時間制約を満足させる事ができる。非特許文献１には、ＣＰＵ資源管理機能を有し、タスクの周期時間と、周期時間におけるＣＰＵ利用率を指定しておくと、タスク実行時にスケジューラによりそれぞれのタスクにＣＰＵ資源を割り当てる技術が開示されている。
【０００５】
また、特許文献１に開示されているソフトウェア生成装置では、ソフトウェアを実行するプラットフォームに適したソースコードを生成するために、タスク（スレッド）の実行に必要なＣＰＵ資源量として、そのタスクをＣＰＵコアへ割り当てたときのＣＰＵ負荷を予め計測し、それに基づいてタスクのマルチコアシステムへの割り当てをおこなうことにより、タスクのリアルタイム性を確保する（マルチコアプラットフォームの場合、特に、段落番号００７２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２５０８３８号公報
【非特許文献】
【０００７】
【非特許文献１】S. Oikawa, R. Rajkumar, "Portable RK: A Portable Resource Kernel for Guaranteed and Enforced Timing Behavior", rtas, pp.111, Fifth IEEE Real-Time Technology and Applications Symposium (RTAS'99), 1999
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１のソフトウェア生成装置のＣＰＵ負荷の計測では、リアルタイムタスクのマルチコアシステムへの割り当て先を、現在のＣＰＵ負荷が最も少ないＣＰＵコアとすることで、各ＣＰＵコアの負荷が平均化するようにタスクを割り当てていた。しかしながら、この方法では、タスクが生成される順序やタイミングが事前に判明していない場合に、必要なＣＰＵ利用率の大きなタスクが生成されたとき、そのタスクをどのＣＰＵコアに割り当てても時間制約を満たせないケースが発生する可能性があった。
【０００９】
本発明では、上記問題点を解決するためになされたもので、その目的は、マルチコアシステムの各ＣＰＵコアに、実行するタスクを割り当てるときに、必要なＣＰＵ利用率の大きいタスクが生じた際も、そのタスクが実行できる可能性を確保して、従来よりもリアルタイム性を向上させることのできるタスク割当装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のタスク割当装置は、リアルタイムタスクの発生元のプログラムの必要計算量を計測する。必要計算量は、そのプログラムを実行したときに、どれくらいの時間で完了できるかを時間単位で表した量である。また、タスクに課せられた時間制約と、そのタスクの発生元のプログラムの必要計算量から、タスクが時間制約を満たすために必要なＣＰＵ利用率（以下、「必要ＣＰＵ利用率」という）を計算する。
【００１１】
そして、各ＣＰＵコアの現在のＣＰＵ利用率を計測し、必要ＣＰＵ利用率に基づいて、そのタスクを割り当てたときのＣＰＵ利用率（現在のＣＰＵ利用率＋タスクの必要ＣＰＵ利用率）が１００％以内であり、かつ、最大となるＣＰＵコアをタスク処理の実行の割り当て先として選択する。
【００１２】
上記のタスク割当装置を用いれば、マルチコアシステムへのタスクの割り当て方として、ＣＰＵ利用率の空きの多いＣＰＵコアを残すように、タスクを割り当てることが可能となる。これにより、必要なＣＰＵ利用率の大きいタスクが生じた際も、そのタスクが実行可能となり、従来よりもリアルタイム性を向上することができる。
【００１３】
また、タスクをＣＰＵコアになるべく偏在するように割り当てることにより、タスクが割り当てられていないＣＰＵコアへの電力供給を停止することができ、省電力化を図ることができる。
【００１４】
さらに、時間制約はないが、できる限り早く処理実行を終了することが好ましい応答性タスクについては、現在のＣＰＵ利用率が少ないＣＰＵコアで実行する。これにより、応答性タスクの応答性を向上することができる。
【発明の効果】
【００１５】
本発明によれば、マルチコアシステムの各ＣＰＵコアに、実行するタスクを割り当てるときに、必要なＣＰＵ利用率の大きいタスクが生じた際も、そのタスクが実行できる可能性を確保して、従来よりもリアルタイム性を向上させることのできるタスク割当装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態に係るタスク割当装置を組み込んだデジタル放送受信システム１０の構成図である。
【図２】記憶装置５１、マルチコアシステム５２、タスク割当装置５３におけるハードウェアの関係を示した構成図である。
【図３】マルチコアシステム５２のハードウェア構成図である。
【図４】記憶装置５１とタスク割当装置５３の内部構成を示した機能ブロック図である。
【図５】プログラムの必要計算量リストＬ１の一例を示す図である。
【図６】必要ＣＰＵ利用率リストＬ２の一例を示す図である。
【図７】現在ＣＰＵ利用率リストＬ３の一例を示す図である。
【図８】タスク割当先決定部５３４のおこなう処理を示すフローチャートである。
【図９】ＣＰＵ利用率を説明するための図である。
【図１０】必要ＣＰＵ利用率計算部５３２が、新たに生成されたタスクの必要ＣＰＵ利用率を計算するアルゴリズムを示すフローチャートである。
【図１１】ＣＰＵコア利用状況監視部５３３が、各ＣＰＵコア５２１〜５２３における現在のＣＰＵ利用率を監視する処理を示すフローチャートである。
【図１２】タスク割当先決定部５３４が、新たに生成されたタスクの割り当て先のＣＰＵコアを決定する処理のアルゴリズムを示すフローチャートである。
【図１３】各タスクと生成されるタスクの状況を説明する図である。
【図１４】本発明の一実施形態において、各時刻におけるＣＰＵコアの実行しているタスクとＣＰＵ利用率の関係を示す図である。
【図１５】本発明の一実施形態において、時刻ｔ＝４ｍｓにおける各タスクを割り当てたときのマルチコアシステム５２のタスク割当状況を示す図である。
【図１６】本発明の一実施形態において、各タスクを割り当てた場合の各ＣＰＵコア（５２１〜５２３）のＣＰＵ利用率の経過を示す図である。
【図１７】従来技術において、各時刻におけるＣＰＵコアの実行しているタスクとＣＰＵ利用率の関係を示す図である。
【図１８】従来技術において、時刻ｔ＝４ｍｓにおける各タスクを割り当てたときのマルチコアシステム５２のタスク割当状況を示す図である。
【図１９】従来技術において、各タスクを割り当てた場合の各ＣＰＵコア（５２１〜５２３）のＣＰＵ利用率の経過を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明に係る一実施形態を、図１ないし図１９を用いて説明する。
先ず、図１を用いて本発明の一実施形態に係るタスク割当装置を組み込んだデジタル放送受信システム１０の構成を説明する。
図１は、本発明の一実施形態に係るタスク割当装置を組み込んだデジタル放送受信システム１０の構成図である。
【００１８】
図１に示されるデジタル放送受信システム１０は、リモートコントローラ２０、デジタル放送アンテナ３０、表示装置４０、デジタル放送受信機５０からなる。
【００１９】
デジタル放送受信機５０は、記憶装置５１、マルチコアシステム５２、タスク割当装置５３、信号受信部５４、デジタル放送チューナ５５からなる。
【００２０】
記憶装置５１には、デジタル放送受信機ソフトウェア５１１と、図示されていないが、さらに各種資源を管理し、アプリケーションがそれら資源を利用できるようにするためのＯＳおよびアプリケーションソフトウェアが格納されている。
【００２１】
マルチコアシステム５２は、複数のＣＰＵコアを有するプロセッサである。タスク割当装置５３は、各タスクを実行するために、各ＣＰＵコアに、処理の実行を割り当てる装置である。信号受信部５４は、リモートコントローラ２０からの信号を受信する部分である。デジタル放送チューナ５５は、デジタル放送アンテナ３０を介して映像データ、音声データ及び字幕データを受信する。
【００２２】
デジタル放送受信機ソフトウェア５１１は、リモートコントローラプログラム５１１１、チューナプログラム５１１２、映像デコードプログラム５１１３、音声デコードプログラム５１１４、データ放送ブラウザプログラム５１１５を備えている。
【００２３】
記憶装置５１に格納されたこれらのプログラムは、マルチコアシステム５２により実行される。マルチコアシステム５２は、リモートコントローラ２０を使用したユーザ操作に対するリモートコントローラプログラム５１１１による受信処理と、その適切な応答処理を実行する。例えば、選局に伴うチューナプログラム５１１２は、受信番組の切り替え、映像デコードプログラム５１１３および音声デコードプログラム５１１４は、それぞれチューナプログラム５１１２が受信した映像データおよび音声データのデコードをおこない、データ放送ブラウズプログラム５１１５はデータ放送コンテンツ取得および復号化をおこなう。
【００２４】
図１に示したデジタル放送受信システムにおいては、映像デコードプログラム５１１３および音声デコードプログラム５１１４は、画像および音声を途切れず出力するために画像のフレームレートによって決まる時間内にそのデコード処理を完了させなければならない。また、画像や音声データを受信した放送波から取り出すチューナプログラム５１１２にも実行時間に対する制約が課される。一方、リモートコントローラプログラム５１１１やデータ放送ブラウズプログラム５１１５に関しては、明確に決められた時間内に実行を完了しなければならないという制約は存在しないが、その実行時間が長くなると応答性や操作性の低下を引き起こす。
【００２５】
次に、図２ないし図４を用いてシステムにおける各部の関係と、各部の構成の詳細を説明する。
図２は、記憶装置５１、マルチコアシステム５２、タスク割当装置５３におけるハードウェアの関係を示した構成図である。
図３は、マルチコアシステム５２のハードウェア構成図である。
図４は、記憶装置５１とタスク割当装置５３の内部構成を示した機能ブロック図である。
【００２６】
記憶装置５１、マルチコアシステム５２、タスク割当装置５３は、図２に示されるように、バスにより接続されている。
【００２７】
マルチコアシステム５２の内部には、図３に示されるように、三つの同じ性能のＣＰＵコア５２１〜５２３、それぞれのＣＰＵコアに接続され、記憶装置５１やタスク割当装置５２との間でやり取りされるデータを一時保管するキャッシュメモリ、および、各ＣＰＵコアに供給する電力を制御する電力制御部５２４を備えている。ここで、本実施形態が適用されるマルチコアシステム５２のＣＰＵコアの個数は、３個に限定されるものではなく、マルチコアシステム５２は複数個のＣＰＵコアが接続されたシステムであればよく、いわゆるメニイコアと呼ばれるシステムであってもよい。また、本実施形態は、各ＣＰＵコアの性能や構成が同一であるホモジニアス（homogeneous）なマルチコアシステムを想定して記述しているが、各ＣＰＵコアの性能や構成が同一ではないヘテロジニアス（heterogeneous）のマルチコアシステムであってもよい。さらに、マルチコアシステムにおいては、ＣＰＵコアに特定のＯＳとタスクを割り当てるＡＭＰ（Asymmetric Multiprocessing）と、個々のＣＰＵが対等の条件でメモリーを共有するＳＭＰ（Symmetric Multiprocessing）があることが知られており、本実施形態は、ＳＭＰを想定して記述しているが、ＡＭＰでもよい。
【００２８】
次に、図４により本実施形態に係るタスク割当装置の機能について説明する。
【００２９】
記憶装置５１内には、図４に示されるように、デジタル放送受信機ソフトウェア５１１と、タスクの元プログラムの必要計算量５１２とが記憶されている。ここで、タスクの元プログラムとは、そのプログラムを実行するときに、タスクを発生させる元になるプログラムである。必要計算量５１２についての定義は、後に説明する。
【００３０】
また、タスク割当装置５３は、必要計算量計測部５３１、必要ＣＰＵ利用率計算部５３２、ＣＰＵコア利用状況監視部５３３、タスク割当先決定部５３４の各機能ブロックを有する。
【００３１】
必要計算量計測部５３１は、タスクの元プログラムの必要計算量５１２を計測する。必要ＣＰＵ利用率計算部５３２は、指定された時間制約と必要計算量５１２に基づき、各タスクが時間制約を満たすための必要ＣＰＵ利用率を計算する。必要ＣＰＵ利用率の定義は、後に説明する。ＣＰＵコア利用状況監視部５３３は、マルチコアシステム５２内の各ＣＰＵコアの現在のＣＰＵ利用率を監視する。タスク割当先決定部５３４は、タスクの必要ＣＰＵ利用率と、各ＣＰＵコア５２１〜５２３のＣＰＵ利用率を元にタスクの割り当て先を決定する。
【００３２】
次に、図５ないし図７を用いて本実施形態に係るタスク割当装置のタスク割り当てのために用いられるデータ構造について説明する。
図５は、プログラムの必要計算量リストＬ１の一例を示す図である。
図６は、必要ＣＰＵ利用率リストＬ２の一例を示す図である。
図７は、現在ＣＰＵ利用率リストＬ３の一例を示す図である。
【００３３】
必要計算量リストＬ１は、各プログラムごとに、必要計算量を示したリストであり、必要計算量計測部５３１に計測した結果として、図４に示される必要計算量５１２の中に格納される。
【００３４】
必要ＣＰＵ利用率リストＬ２は、各タスクごとに、関連情報とともに、必要ＣＰＵ利用率を示したリストであり、必要ＣＰＵ利用率計算部５３２が保持する。
現在ＣＰＵ利用率リストＬ３は、各ＣＰＵコアごとに、ＣＰＵ利用率と、実行しているタスクの情報を示したリストであり、 ＣＰＵコア利用状況監視部５３３タスク割り当てをおこなうためのシステムの状況を監視した結果として取得して保持する。
【００３５】
次に、図８を用いてタスク割当先決定部５３４のおこなう処理について説明する。
【００３６】
図８は、タスク割当先決定部５３４のおこなう処理を示すフローチャートである。
【００３７】
タスク割当先決定部５３４は、タスク生成要求をマルチコアシステム５２より受け取ると、新たに作成されたタスクの必要ＣＰＵ利用率、タスクの時間制約を必要ＣＰＵ利用率計算部５３２（必要ＣＰＵ利用率リストＬ２）より取得する（５３４１）。
【００３８】
次に、ＣＰＵコア利用状況監視部５３３（現在ＣＰＵ利用率リストＬ３）より、各ＣＰＵコアの現在のタスクのＣＰＵ利用率を取得する（５３４２）。
【００３９】
次に、タスク割当先決定部５３４は、ステップ５３４１とステップ５３４２で取得した情報を参照し、後に説明されるアルゴリズムに基づき、新たに生成されたタスクの割り当て先ＣＰＵコアを決定し（５３４３）、マルチコアシステム５２に対して、タスク割当指令を送信する。
【００４０】
次に、図９を用いてＣＰＵ利用率の概念について簡単に説明する。
【００４１】
図９は、ＣＰＵ利用率を説明するための図である。
【００４２】
例えば、非特許文献１に記載されている技術を用いると、ユーザーが予め周期時間およびその周期中におけるタスク実行に必要な時間を指定しておくと、指定した周期時間中のそのタスクの実行時間を制御できることが知られている。図９（ａ）では、タスクＡに周期時間の０．６倍の実行時間を、タスクＢに周期時間の０．３倍の実行時間を指定した例を示している。ここで、周期時間が、タスクに与えられた時間制約に対して十分小さいとき、図９（ｂ）のように、タスクＡに６０％、タスクＢに３０％のＣＰＵ利用率を割り当てて、タスクを実行したと考えることができる。
【００４３】
次に、図１０を用いて必要ＣＰＵ利用率計算部５３２が、新たに生成されたタスクの必要ＣＰＵ利用率を計算する処理について説明する。
図１０は、必要ＣＰＵ利用率計算部５３２が、新たに生成されたタスクの必要ＣＰＵ利用率を計算するアルゴリズムを示すフローチャートである。
【００４４】
先ず、新たに生成されたタスクの、元プログラムの必要計算量を記憶装置５１に格納されている必要計算量リストＬ１より取得し（５３２１）、タスクの時間制約をマルチコアシステム５２より取得し（５３２２）、図６に示した必要ＣＰＵ利用率リストＬ２に登録する。
【００４５】
各プログラムの必要計算量は、予め計測しておき、記憶装置５１に必要計算量リストＬ１として記憶されている。一方、時間制約は、マルチコアシステム５１にてタスク生成要求が生じた際に各タスクに課せられるパラメータである。
【００４６】
ここで、本実施形態における必要計算量は、各プログラムを、マルチコアシステム５２内のＣＰＵコア５２１〜５２３と同一性能のＣＰＵコアにて、他タスクが動作していない状況（ＣＰＵ利用率１００％）で実行した場合に、実行に要した時間をミリ秒単位で計測した値と定義する。
【００４７】
次に、必要計算量と時間制約に基づき、必要ＣＰＵ利用率を計算し（５３２３）、図６に示した必要ＣＰＵ利用率リストＬ２に登録する。ここで、必要ＣＰＵ利用率は、以下の（式１）で定義される。
【００４８】
必要ＣＰＵ利用率（％）＝元プログラムの必要計算量／時間制約×１００
…（式１）
なお、時間制約のないタスクについては、マルチコアシステム内で時間制約を∞と定義し、（式１）から、そのタスクの必要ＣＰＵ利用率を、０％となるものと約束する。
【００４９】
次に、図１１を用いてＣＰＵコア利用状況監視部５３３が、各ＣＰＵコア５２１〜５２３における現在のＣＰＵ利用率を監視する処理について説明する。
図１１は、ＣＰＵコア利用状況監視部５３３が、各ＣＰＵコア５２１〜５２３における現在のＣＰＵ利用率を監視する処理を示すフローチャートである。
【００５０】
先ず、マルチコアシステム５２から、各ＣＰＵコア５２１〜５２３に割り当てられているタスクのタスク名の取得をおこない、それを図７に示された現在ＣＰＵ利用率リストＬ３に記録する（５３３１）。また、各ＣＰＵコア５２１〜５２３の現在のＣＰＵ利用率を計測し、現在ＣＰＵ利用率リストＬ３に記録する（５３３１）。
【００５１】
次に、図１２を用いてタスク割当先決定部５３４が、新たに生成されたタスクの割り当て先のＣＰＵコアを決定する処理について説明する。
図１２は、タスク割当先決定部５３４が、新たに生成されたタスクの割り当て先のＣＰＵコアを決定する処理のアルゴリズムを示すフローチャートである。
【００５２】
先ず、図７に示した現在ＣＰＵ利用率リストＬ３と図６に示した必要ＣＰＵ利用率リストＬ２とを参照し、現在のＣＰＵコアのＣＰＵ利用率と、新たに生成されたタスクの必要ＣＰＵ利用率の和が１００％以内となる全ＣＰＵコアを探索する（５３４３ａ）。そして、現在のＣＰＵコアのＣＰＵ利用率と、タスクの必要ＣＰＵ利用率の和が１００％以内となるＣＰＵコアが存在すれば（５３４３ｂ）、その中でＣＰＵコアのＣＰＵ利用率が最大であるＣＰＵコアをタスクの割り当て先とする（５３４３ｃ）。これは、タスクの時間制約が守れる範囲で、現在のＣＰＵコアの負荷を偏在的にする意義を有する。
【００５３】
また、利用できるＣＰＵの中で、ＣＰＵコアのＣＰＵ利用率と、タスクの必要ＣＰＵ利用率の和が１００％以内となるＣＰＵコアが存在しない場合は、ＣＰＵコアのＣＰＵ利用率が最小であるＣＰＵコアをタスクの割り当て先とする（５３４３ｄ）。この場合は、タスクの時間制約を守れないが、ＣＰＵ利用率が最小であるＣＰＵコアにタスクの処理を割り当てできるだけ、早くタスクの処理を終了させるという意義を有する。
【００５４】
また、ＣＰＵ利用率が同じである場合は、例えば、順序づけられたＩＤの小さいＣＰＵコアを、割り当て先ＣＰＵコアとするというように約束しておく。
【００５５】
なお、ステップ５３４３ｂにおける、各ＣＰＵコアのＣＰＵ利用率の上限値を、時間制約を満たすために余裕を取る目的で、１００％未満の値（例えば、８０％）にすることも可能である。
【００５６】
また、タスクの中には、できる限り早く処理実行を終了することが好ましい応答性タスクがある。応答性タスクの例として、ユーザーがテレビのチャンネル切り替えを入力した際、ユーザーはなるべく早くチャンネルが切り替わることを期待するということが挙げられる。
【００５７】
したがって、このような応答性タスクの性質に鑑み、処理速度を向上させるために、対象となるタスクが応答性タスクの場合には、最も現在の利用率の小さいＣＰＵコアに対して、そのタスクを割り当てるものとする。
【００５８】
このように、応答性タスクをＣＰＵコアに割り当てることにより、応答性タスクの応答性を向上させることができる。
【００５９】
次に、図１３ないし図１９を用いて本実施形態のタスク割当装置のタスクを割り当てる処理を、従来技術と対比して、具体例により説明する。
図１３は、各タスクと生成されるタスクの状況を説明する図である。
図１４は、本発明の一実施形態において、各時刻におけるＣＰＵコアの実行しているタスクとＣＰＵ利用率の関係を示す図である。
図１５は、本発明の一実施形態において、時刻ｔ＝４ｍｓにおける各タスクを割り当てたときのマルチコアシステム５２のタスク割当状況を示す図である。
図１６は、本発明の一実施形態において、各タスクを割り当てた場合の各ＣＰＵコア５２１〜５２３のＣＰＵ利用率の経過を示す図である。
図１７は、従来技術において、各時刻におけるＣＰＵコアの実行しているタスクとＣＰＵ利用率の関係を示す図である。
図１８は、従来技術において、時刻ｔ＝４ｍｓにおける各タスクを割り当てたときのマルチコアシステム５２のタスク割当状況を示す図である。
図１９は、従来技術において、各タスクを割り当てた場合の各ＣＰＵコア（５２１〜５２３）のＣＰＵ利用率の経過を示す図である。
【００６０】
本実施形態において、始めの状況で、図３に示されたＣＰＵコア（５２１〜５２３）のいずれにもタスクは割り当てられていないものとし、図１３に示すようにタスクＡからタスクＥ（５１１ａ〜５１１ｅ）が、それぞれ１ｍｓの間隔で生成される場合を考える。すなわち、時刻ｔ＝０ｍｓでタスクＡ（５１１ａ）、ｔ＝１ｍｓでタスクＢ（５１１ｂ）、…、ｔ＝４ｍｓでタスクＥ（５１１ｅ）が生成される。タスクＡからタスクＥ（５１１ａ〜５１１ｅ）の元プログラムの必要計算量、および、各タスクに与えられる時間制約は図１３に示す通りであるものとする。
【００６１】
時刻ｔ＝０ｍｓにおいて、タスクＡ（５１１ａ）の必要ＣＰＵ利用率は、必要ＣＰＵ利用率計算部５３２において、（式１）から、６／１０×１００＝６０（％）と計算される。ｔ＝０ｍｓでは、ＣＰＵコア５２１〜５２３のいずれのＣＰＵコアにもタスクは割り当てられておいないため、タスクＡ（５１１ａ）の割り当て先は、タスク割当先決定部５３４において、最も前の番号にあたるＣＰＵコアａ（５２１）と決められる。
【００６２】
次に、時刻ｔ＝１ｍｓにおいて、タスクＢ（５１１ｂ）の必要ＣＰＵ利用率は、（式１）から６／１０×１００＝６０％と計算される。ＣＰＵコアａ（５２１）のＣＰＵ利用率は６０％であり、タスクＢ（５１１ｂ）を割り当てると１００％を超えるため、ＣＰタスクＢ（５１１ｂ）は、図１４（ａ）に示すように、ＣＰＵコアｂとＣＰＵコアｃのうちで前の番号にあたるＣＰＵコアｂ（５２２）に割り当てられる。
【００６３】
次に、時刻ｔ＝２ｍｓにおいて、タスクＣ（５１１ｃ）の必要ＣＰＵ利用率は、（式１）から、（４．５／１５）×１００＝３０％と計算される。ＣＰＵコアａ（５２１）、およびＣＰＵコアｂ（５２２）のＣＰＵ利用率は６０％であり、これらは、ＣＰＵ利用率とタスクの必要ＣＰＵ利用率の和が、９０％となり、図１４（ｂ）に示すように、タスクＣ（５１１ｃ）は、ＣＰＵコアａとＣＰＵコアｂのうちで前の番号にあたるＣＰＵコアａ（５２１）に割り当てられる。
【００６４】
次に、時刻ｔ＝３ｍｓにおいて、タスクＤ（５１１ｄ）の必要ＣＰＵ利用率は、（式１）から、（４．５／１５）×１００＝３０％と計算される。ここで、ＣＰＵコアａ（５２１）のＣＰＵ利用率は９０％、ＣＰＵコアｂ（５２２）のＣＰＵ利用率は６０％、ＣＰＵコアｃ（５２３）のＣＰＵ利用率は０％であり、ＣＰＵ利用率と必要ＣＰＵ利用率の和は、ＣＰＵコアＡでは、１２０％、ＣＰＵコアＢでは、９０％、ＣＰＵコアｃでは、３０％となる。したがって、図１４（ｃ）に示すように、タスクＤ（５１１ｄ）は、ＣＰＵ利用率と必要ＣＰＵ利用率の和が、１００％を超えず、かつ、最大となるＣＰＵコアｂ（５２２）に割り当てられる。
【００６５】
次に、時刻ｔ＝４ｍｓにおいて、タスクＥ（５１１ｅ）の必要ＣＰＵ利用率は、（式１）から、（９．０／１５）×１００＝６０％と計算される。ＣＰＵ利用率と必要ＣＰＵ利用率の和は、ＣＰＵコアａ（５２１）とＣＰＵコアｂ（５２２）では、いずれも１００％を超過するため、図１４（ｄ）に示すように、タスクＥ（５１１ｅ）は、ＣＰＵ利用率と必要ＣＰＵ利用率の和が、１００％を超えないＣＰＵコアｃ（５２３）に割り当てられる。
【００６６】
図１５には、上述の過程により、タスクＡからタスクＥを各ＣＰＵコア（５２１〜５２３）に割り当てたときの時刻ｔ＝４ｍｓにおけるマルチコアシステム５２のタスク割当状況が示されている。また、上述の過程により、タスクＡからタスクＥ（５１１ａ〜５１１ｅ）の各タスクを割り当てた場合の各ＣＰＵコア（５２１〜５２３）のＣＰＵ利用率の経過は、図１６に示されるようになる。
【００６７】
一方、従来技術（特許文献１）によるタスクの割当方法によれば、時刻ｔ＝２ｍｓにおいて、図１７（ｂ）に示すように、タスクＣは最もＣＰＵ利用率の少ないＣＰＵコアｃ（５２３）に割り当てられる。
【００６８】
次に、時刻ｔ＝３ｍｓにおいて、図１７（ｃ）に示すように、最もＣＰＵ利用率の少ないＣＰＵコアｃ（５２３）に、タスクＤ（５１１ｄ）が割り当てられる。
【００６９】
そして、時刻ｔ＝４ｍｓにおいては、図１７（ｄ）に示すように、ＣＰＵコアａからＣＰＵコアｃ（５２１〜５２３）の全ＣＰＵコアのＣＰＵ利用率が６０％のため、タスクＥ（５１１ｅ）をいずれのＣＰＵコアに割り当ててもＣＰＵ利用率が１００％を超過してしまい、時間制約を満たせなくなる。
【００７０】
図１８には、従来技術によりタスクＡからタスクＥを各ＣＰＵコア（５２１〜５２３）に割り当てたときの時刻ｔ＝４ｍｓにおけるマルチコアシステム５２のタスク割当状況が示されている。また、従来技術により、タスクＡからタスクＥ（５１１ａ〜５１１ｅ）を割り当てた場合の各ＣＰＵコア（５２１〜５２３）のＣＰＵ利用率の経過は、図１９に示されるようになる。
【００７１】
このように、従来技術では、各ＣＰＵコアでＣＰＵ利用率がかなり大きくなっているときに、必要ＣＰＵ利用率が大きいタスク（タスクＥ）が発生したときには、いずれのＣＰＵコアに対しても、ＣＰＵ利用率とタスクの必要ＣＰＵ利用率が、１００％を超えてしまい、時間制約が満たせなくなる。一方、本実施形態のタスク割り当て方法では、上記の例の場合でも、ＣＰＵ利用率が小さいＣＰＵコア（ＣＰＵコアｃ）が存在するために、必要ＣＰＵ利用率が大きいタスク（タスクＥ）でも、ＣＰＵ利用率とタスクの必要ＣＰＵ利用率が、１００％を超えることなく、タスクの割り当てが可能になる。
【００７２】
さらに、タスクをＣＰＵコアになるべく偏在するように割り当てることにより、タスクが割り当てられていないＣＰＵコアへの電力供給を停止することができ、省電力化を図ることができる。これにより、例えば、携帯電話であれば電池の長寿命化が図れ、デジタルテレビであれば、放熱を減らすことができ、放熱部分の省スペース化を図ることができる。
【００７３】
本実施形態で示されたように、本発明に係るタスク割当装置を用いれば、マルチコアシステムに対して、時間制約を満たすようにタスクを割り当てることが可能になり、映像音声処理や自動制御システム、医療システムのようなマルチコアシステム、かつ、リアルタイムシステムの開発環境に好適なタスク割当方法を提供することができる。
【符号の説明】
【００７４】
１０…デジタル放送受信システム
２０…リモートコントローラ
３０…デジタル放送アンテナ
４０…表示装置
５０…デジタル放送受信機
５１…記憶装置
５１１…デジタル放送受信機ソフトウェア
５１１１…リモートコントローラプログラム
５１１２…チューナプログラム
５１１３…映像デコードプログラム
５１１４…音声デコードプログラム
５１１５…データ放送ブラウザプログラム
５１２…必要計算量
５２…マルチコアシステム
５３…タスク割当装置
５４…信号受信部
５５…デジタル放送チューナ
５２１…ＣＰＵコアａ
５２２…ＣＰＵコアｂ
５２３…ＣＰＵコアｃ
５２４…電力制御部
５３１…必要計算量計測部
５３２…必要ＣＰＵ利用率計算部
５３３…ＣＰＵコア利用状況監視部
５３４…タスク割当先決定部
Ｌ１…必要計算量リスト
Ｌ２…必要ＣＰＵ利用率リスト
Ｌ３…現在ＣＰＵ利用率リスト。
【図１】
2010277171.tif 000003
【図２】
2010277171.tif 000004
【図３】
2010277171.tif 000005
【図４】
2010277171.tif 000006
【図５】
2010277171.tif 000007
【図６】
2010277171.tif 000008
【図７】
2010277171.tif 000009
【図８】
2010277171.tif 000010
【図９】
2010277171.tif 000011
【図１０】
2010277171.tif 000012
【図１１】
2010277171.tif 000013
【図１２】
2010277171.tif 000014
【図１３】
2010277171.tif 000015
【図１４】
2010277171.tif 000016
【図１５】
2010277171.tif 000017
【図１６】
2010277171.tif 000018
【図１７】
2010277171.tif 000019
【図１８】
2010277171.tif 000020
【図１９】
2010277171.tif 000021