説明

ジョブスケジューリング方法

【課題】CPU13の能力を効率的に使うことができるジョブスケジューリング方法を提供する。
【解決手段】ジョブ管理情報を基に、CPU13が、予約時間内に複数の処理を実行する定周期実行方式のスケジューリングを行う、ジョブスケジューリング方法であって、ジョブ管理情報が、複数の処理のそれぞれの優先度情報と、複数の処理のそれぞれを実行可能な複数のジョブの実行時間情報とを有し、CPU13の空き時間が生じる場合、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の処理を定周期実行方式で行う際のジョブスケジューリング方法に関する。
【背景技術】
【0002】
一つのプロセッサを用いて異なる複数の処理を事実上、同時進行で行うマルチタスク処理においては、それぞれの処理を行う時間を予め予約時間として割り当てる定周期実行方式の処理が知られている。定周期実行方式の処理では、それぞれの処理は設定された定周期の時間で繰り返し実行される。また、データサンプリングのように、所定のサンプリング時間内に一連の予め定められた処理を繰り返し実行する処理も、サンプリング時間を予約時間と考えれば、定周期実行方式の一つの類型である。定周期実行方式では、予約時間内に処理を完了するために、予め、プロセッサが、それぞれの処理を実行するためのジョブの実行に要する時間をジョブ管理情報として記憶している。そして、定周期実行方式では、ジョブ管理情報を基に予約時間内に処理を完了するように、複数のジョブをキューとして登録するスケジューリングを行うスケジューラが用いられている。スケジューラは、予約時間内に処理を完了するだけでなく、処理の事象待ち、すなわちプロセッサの待機状態による無駄な空き時間を削減するために、ジョブ管理情報を基に、無駄な空き時間を最小とするスケジューリングを行う。
【0003】
しかし、全く同じジョブの処理であっても、プロセッサが実際に処理を完了するまでの時間は常に一定という訳ではない。これはプロセッサ自体の処理速度の変動だけでなく、周辺バスの転送速度等、種々の要因による。このため、必ず予約時間内に処理を完了するためには、ジョブ管理情報として記憶しておく特定のジョブに要する時間は、最も時間がかかる最悪実行時間(WCET: Worst-Case Execution Time)を記憶しておく必要がある。
【0004】
このため、プロセッサが実際に処理を完了するまでの時間が、最悪実行時間よりも短い場合には、プロセッサの空き時間が増加してしまい、プロセッサの能力を効率的に使うことが出来ないという問題があった。前記問題は、実行時間の変動が大きい処理の場合に特に顕著であった。
【0005】
このため、特許文献1には、CPUの待ち時間が、指定値を越えると、優先度の高いタスクと優先度の低いタスクとを交互にスケジューリングするタスクスケジューリング方式が開示されている。
【0006】
ここで、近年のテレビジョン受像機においては、デジタル化により複雑な多数の処理を同時並行で行うため、マルチコアプロセッサ、例えば1つのCPUの中に1個の汎用的なプロセッサコアと、8個のシンプルなプロセッサコアを組み合わせたヘテロジニアスマルチコアが使用されている。しかし、テレビジョン受像機においては、1秒間に60枚の画像すなわち、奇数と偶数の走査線毎に30枚/秒の計60枚/秒の画像を表示しなければならない。このため、複数の処理を、1/30秒を周期とする定周期実行方式で行うためのジョブスケジューリングが重要となっている。
【0007】
またテレビジョン受像機のモニタの大画面化に伴い、複数のチャンネルおよび/または入力端子等から入力された複数の入力画像信号から取り出した複数の画像を、複数の領域に分割されたひとつの表示画面の各領域に表示するマルチ画面表示機能が利用されるようになってきている。
【0008】
マルチ画面表示機能を持つテレビジョン受信機では、複数の入力画像信号の中から選択された複数の画像信号のそれぞれを、マルチ画面処理回路にて画像サイズ変換処理およびフォーマット変換処理してから1つの表示画面として合成する必要がある。このため、ジョブスケジューリングでは、少なくとも画像サイズ変換処理とフォーマット変換処理とを行うための予約時間を設定している。
【0009】
しかし、マルチ画面表示する画像の数、すなわち入力画像信号の数によりマルチ画面処理回路が処理に要する時間は変化する。また、ヘテロジニアスマルチコアの他のプロセッサコアで動作しているプログラムがバンド幅を圧縮する処理を行ったりすると、マルチ画面処理しているCPUの速度も影響を受けて遅くなることがある。
【0010】
このため、最悪実行時間を基にした予定時間を用いると、プロセッサの空き時間が増加してしまい、プロセッサの能力を効率的に使うことが出来ないという問題が顕著であった。
【0011】
本発明は上記問題に鑑みてなされたものであり、プロセッサの能力を効率的に使うことができるジョブスケジューリング方法を提供するものである。
【特許文献1】特開平4−191935号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
本発明は、プロセッサの能力を効率的に使うことができるジョブスケジューリング方法を提供することを目的とする。
【課題を解決するための手段】
【0013】
本願発明の一態様によれば、ジョブ管理情報を基に、CPUが、予約時間内に複数の処理を実行する定周期実行方式のスケジューリングを行う、ジョブスケジューリング方法であって、ジョブ管理情報が、複数の処理のそれぞれの優先度情報と、複数の処理のそれぞれを実行可能な複数のジョブの実行時間情報とを有し、CPUの空き時間が生じる場合、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択することを特徴とするジョブスケジューリング方法が提供される。
【発明の効果】
【0014】
本発明は、プロセッサの能力を効率的に使うことができるジョブスケジューリング方法を提供するものである。
【発明を実施するための最良の形態】
【0015】
以下、図面を参照して本発明の実施の形態を説明する。
<第1の実施の形態>
<スケジューラの構成>
最初に、図1から図5を用いて、本発明の第1の実施の形態にかかるスケジューラ100の構成について説明する。
【0016】
図1は、本実施の形態にかかるマルチ画面処理回路11を有するテレビジョン受像機1の構成を示した構成図であり、図2はテレビジョン受像機1のマルチ画面の例を示した図であり、図3は、スケジューラ100のブロック図であり、図4は、ジョブ管理情報105の例を示した表であり、図5は、画像サイズ変換処理A2が実行可能なアルゴリズムが異なる複数のジョブを説明するための説明図である。
【0017】
図1に示すように、本実施の形態にかかるテレビジョン受像機1は、多数の入力画像信号の中から選択された複数の画像信号をいったんメモリ15に記憶し、そのデータを基に、マルチ画面処理回路11にて、それぞれの画像信号の画像サイズ変換処理と、フォーマット変換処理を行い、再びメモリ15を介して、1つの表示画面として画像出力手段であるモニタ12に出力する。例えば、パラボラアンテナ2で受信されたデジタルテレビ放送の信号は、放送局および放送仕様により、それぞれ異なるデコーダーで処理される。図1では、簡略化し、4個のデコーダー4、5、6、7からなるデコーダー群を図示している。また、内蔵ハードディスクドライブ(HDD)8に記録された画像信号や、外部端子9に接続された図示しないビデオカメラまたはゲーム機からの画像信号も、テレビジョン受像機1には入力される。これら複数の入力画像信号の中から切替回路10により選択された画像信号がマルチ画面処理回路11にて処理される。マルチ画面処理回路11は、複数の画像信号を、1つの表示画像信号に合成する回路である。
【0018】
マルチ画面処理回路11の、CPU13は、1秒間に60枚の画像すなわち、奇数と偶数の走査線毎に30枚/秒の画像信号を処理するために、1/30秒を周期とする定周期実行方式のジョブスケジューリングを行うスケジューラ100が登録したキューメモリ情報に従い処理を行う。なお、CPU13は、マルチ画面処理回路11の処理だけでなく、別の処理Bも、1/30秒を周期とする定周期実行方式にて処理している。
【0019】
次に、図2に、マルチ画面処理回路11により合成されたマルチ画面を表示したテレビジョン受像機のモニタ表示画面20の例を示す。図2(A)は、通常の1画面20Aを表示しており、図2(B)は同じ大きさの2つの画面20B、20Cを並べて表示したダブルウィンドウ画面を示しており、図2(C)は、小さな子画面20Dと、大きな親画面20Eを並べて表示したダブルウィンドウ画面を示しており、図2(D)は、4つの画面20F、20G、20H、20Iを同時に表示したマルチウィンドウ画面を示している。通常の画面20Aは、(1920×1080)画素で表示されているが、マルチ画面の各画面は、縮小して表示されている。すなわち、画面20B、20C、20F、20G、20Hおよび20Iは、いずれも通常画面20Aの半分の(960×540)画素で表示され、20Dは通常画面20Aの4分の1の(480×270)画素で表示され、20Eは通常画面20Aの4分の3の(960×540)画素で表示されている。
【0020】
次に、図3に、本実施の形態にかかるスケジューラ100のブロック図を示す。スケジューラ100は、CPU13が実行するジョブをキュー(Queue)として、キューメモリ108に登録する、すなわち、スケジューリングを行う。図2に示したようなマルチ画面を表示するために、マルチ画面処理回路11は、少なくとも2つの異なる目的の処理を実行しなければならない。すなわち、元の画像信号のフォーマットを変換するフォーマット変換処理(以下、処理A1という。)と、元の画像信号の画像サイズを変換する画像サイズ変換処理(以下、処理A2という。)である。元の画像信号の画像サイズとしては、HD(1920×1080)やSD(720×480)等があるが、ここでは、元の画像信号の画像サイズをHDとし、処理A2を縮小する画像サイズ変換処理として説明する。もちろん、拡大する画像サイズ変換もある。
【0021】
以下、処理A1と処理A2を合わせて処理Aとし、処理Aと共に同じCPUで定周期実行する処理を処理Bとする。ここで、図3に示したキューメモリ108に登録されたキューは、定周期時間である30分の1秒すなわち約33msを四角形の縦の長さで表現し、そのうちの処理Aを実行する予約時間が、例えば定周期時間の70%であることを表している。処理Aと処理Bのそれぞれの予約時間は再設定することが可能であるが、以下は、予約時間が固定されている状態のジョブスケジューリングについて説明する。すなわち、処理Aは、約33msの定周期時間の70%である約23msで、処理A1と処理A2を実行する例について説明する。
【0022】
図3に示すように、スケジューラ100は、キューメモリ108にジョブを登録するために、ジョブ管理情報メモリ105に記憶されている情報を基に、ジョブを選択する選択器103と、選択器103が選択したジョブをキューメモリ108に登録するリセット器102から構成されている。また、検出器104は定周期スケジューラ上で走る一連のプロセスのCPU13の利用状況に関するデータを収集するものであり、例えば、登録されたキューメモリ108の情報に従い、CPU13が処理を行った時に処理を完了するまでに要した実際の時間(以下、「実測実行時間」という。)を検出する。
【0023】
ジョブ管理情報メモリ105は、処理を実際に実行する複数のジョブの管理情報を記憶するメモリであり、図4に示すように本実施の形態のジョブスケジューリング方法においては、処理開始時には、少なくとも処理の優先度情報とジョブの最悪実行時間情報とを含む基本情報107を有している。基本情報107は処理開始前に定周期時間等と共にパラメータとして入力される。また、ジョブ管理情報メモリ105は、処理開始後に検出器104の情報を基に入力される実測実行時間情報である動的情報106も有している。
【0024】
本実施の形態のジョブスケジューリングでは、図4に示すように、ある一つの処理が実行可能な複数のジョブから一のジョブを選択しスケジューリングを行う。ここでは、元の画像信号の画像サイズを縮小するという画像サイズ変換処理A2に対して、ジョブA21、ジョブA22およびジョブA23という3つのジョブを用いる例を示している。ジョブA21、ジョブA22およびジョブA23は、それぞれが画像サイズ変換処理を単独で実行することが可能なジョブである。しかし、3つのジョブは、以下に説明するように画像サイズ変換処理を行うためのアルゴリズムが異なる。
【0025】
ここで、図5を用いて、画像サイズ変換処理、すなわち、元の画像信号の画像サイズを縮小する処理に用いるジョブについて説明する。例えば、図2(D)に示したように、4つの画像を同時に画面に表示するためには、それぞれの画像サイズを4分の1に縮小しなければならない。なお、画像サイズを縮小するジョブには種々の異なるアルゴリズムを用いることができるが、ここでは説明を簡単にするために画素データを用いた簡単なアルゴリズムの例を用いて説明する。
【0026】
すなわち、図5のaで示したように、元のフル画素データが横6画素縦4画素の24画素から構成されている場合、画像サイズを4分の1に縮小するとは、横3画素縦2画素の6画素に変換することである。アルゴリズムa21では、フル画素データを縦2画素横2画素の4画素の中から、ランダムに1画素を選択し、その画素を集合して縮小画像データを作成する、いわゆる間引きアルゴリズムである。これに対して、アルゴリズムa22は、フル画素データの、縦2画素横2画素の4画素の情報を平均化して新規な画素を作成し、その画素を集合して縮小画像データを作成する、いわゆる単純平均化アルゴリズムである。アルゴリズムa23は、やはり縦3画素横3画素の9画素の情報を平均化する平均化アルゴリズムであるが、単純に平均化するのではなく、中心画素からの距離に応じて縮小画素への寄与度を変える。このため、フル画素のうちの1つの画素の情報が、複数の縮小画素に重み付けして反映される、いわゆる複合平均化アルゴリズムである。
【0027】
間引きアルゴリズムであるアルゴリズムa21は最も簡単なアルゴリズムであるため、アルゴリズムa21を用いるジョブA21は、図4に示すように、処理時間が短く、例えば最悪実行時間は15msである。しかし、アルゴリズムa21は単なる間引きであるので、縮小された画像の品質は良くない、すなわち、アルゴリズムa21は処理の結果品質は低い。これに対して、単純平均化アルゴリズムであるアルゴリズムa22は比較的簡単なアルゴリズムであるため、アルゴリズムa22を用いるジョブA22は、図4に示すように、処理時間が比較的短く、例えば最悪実行時間は25msである。また、アルゴリズムa22は平均化処理しているので、縮小された画像の品質は普通、すなわち、アルゴリズムa22は処理の結果品質は中である。そして、複合平均化アルゴリズムであるアルゴリズムa23は複雑であるため、アルゴリズムa23を用いるジョブA23は、図4に示すように、処理時間が長く、例えば最悪実行時間は35msである。しかし、アルゴリズムa23は多数の画素を重み付けして平均化処理しているので、縮小された画像の品質はよい、すなわち、アルゴリズムa23は処理の結果品質は高である。
【0028】
なお、上記説明で、例えば、アルゴリズムa21によるジョブ21の処理の結果品質が低いといっても、他の処理時間が長いアルゴリズムによるジョブと比較しての相対的な品質であり、絶対的な品質が低いわけでなく、ジョブ21の処理も、実用上、十分な結果品質を有している。
【0029】
また、図4に示すように、元の画像信号のフォーマットを変換するフォーマット変換処理である処理A1についても、処理A1が実行可能な複数のジョブA11、ジョブA12およびジョブA13という3つのジョブを用いる。ジョブA11は簡単なアルゴリズムのため、処理時間が短く、例えば最悪実行時間は7msである。しかし、ジョブA11は単純な処理のため、変換された画像の品質は悪い、すなわち、ジョブA11は処理の結果品質は低である。これに対してジョブA12は、やや簡単なアルゴリズムのため、処理時間が比較的短く、例えば最悪実行時間は10msである。そして、ジョブA12は変換された画像の品質は普通、すなわち、処理の結果品質は中である。そして、ジョブA13は複雑なアルゴリズムのため、処理時間が長く、例えば最悪実行時間は15msである。しかし、ジョブA13は変換された画像の品質はよい、すなわち、処理の結果品質は高である。
【0030】
なお、図4のジョブ管理情報処理に示したように、フォーマット変換処理である処理A1の優先度は2であり、画像サイズ変換処理である処理A2の優先度1よりも低く設定されている。優先度は基本情報107として処理の開始前に入力される。また、ジョブの実測実行時間TA1およびTA2は後述するように、処理が実行された後に検出器104により記録される。
【0031】
なお、図4に示したジョブ管理情報において、アルゴリズムと結果品質は説明のために付加したものであり、実際のジョブ管理情報には含まれていなくてもよい。
【0032】
<スケジューリング方法>
次に、図6および図7を用いて、本実施の形態のスケジューリング方法について説明する。図6は、本実施の形態のスケジューラ100によるスケジューリング処理の流れを説明するためのフローチャートであり、図7は、スケジューラ100による再スケジューリングAを説明するための説明図である。
【0033】
以下、図6のフローチャートに従い、本実施の形態のスケジューリング方法について説明する。
【0034】
本実施の形態のスケジューリング方法においては、CPU13の空き時間Tiが生じる場合、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択する。なお、ここで、空き時間が生じる場合とは、実際に空き時間Tiが生じた場合、および/または生じる見込みの場合を意味する。また、実際に空き時間Tiが生じた場合であっても、次の定周期処理において必ず空き時間Tiが生じるわけではない。
【0035】
<ステップS10>
処理の開始前に、処理パラメータとして、ジョブ管理情報メモリ105に、ジョブ管理情報の基本情報107と定周期時間とが入力される。図4に示すように、ジョブ管理情報メモリ105に記憶された基本情報107は、複数の処理の処理名、A1およびA2の優先度情報と、処理A1が実行可能な複数のジョブのジョブIDであるA11、A12およびA13とそれぞれのジョブの最悪実行時間情報と、処理A2が実行可能な複数のジョブのジョブIDであるA21、A22およびA23とそれぞれの最悪実行時間情報である。この時点において、ジョブ管理情報メモリ105の動的情報106、すなわちジョブの実測実行時間は、登録されていなくてもよいし、前回の処理の際の情報が含まれていてもよい。
【0036】
<ステップS11>
選択器103は、処理開始時点においては、複数の処理の各ジョブを、基本情報107の優先度情報と最悪実行時間情報とを基に、CPU13の空き時間Tiが最小となるように選択し、キューメモリ108に登録する。すなわち、図8のスケジュールA0に示すように、選択器103は、予約時間の中で、CPUの空き時間Tiが最小となるように、優先度に基づき、処理A1および処理A2を実行可能な複数のジョブの中から、それぞれ1つのジョブを選択する。
【0037】
例えば、予約時間が23msの場合は、選択器103は、まず優先度1の処理A2から最悪実行時間15msのジョブA21を選択し、次に優先度2の処理A1から最悪実行時間7msのジョブA11を選択する。すると、図7のスケジュールA0に示すように、予約時間23msに対して、空き時間Tiは1msとなる。
【0038】
なお、選択器103は、各ジョブの実測実行時間情報が、ジョブ管理情報メモリ105の動的情報106に記憶されている場合には、最悪実行時間情報の替わりに、実測実行時間情報を用いて各ジョブを選択する。すなわち、選択器103が最悪実行時間情報を基にジョブ選択を行うのは、それぞれのジョブが未実行の場合である。
【0039】
<ステップS12>
CPU13はスケジューラ100が登録したキューメモリ108の情報に従い、処理A1をジョブA11で、実行する。
【0040】
<ステップS13>
処理A1が完了すると、検出器104は、処理A1のジョブA11の実測実行時間TA1であるtA11を検出する。そして、検出器104は、ジョブA11の実測実行時間tA11、例えば4ms、を、ジョブ管理情報メモリ105の動的情報106に記録する。
【0041】
<ステップS14>
次に、検出器104は、実行予定のジョブA21のジョブ管理情報メモリ105に記憶されている実行時間と予約時間から、CPU13の空き時間Tiを推算する。
【0042】
例えば、図7の実行結果1に示すようにジョブA11の実測実行時間tA11が4msの場合、最悪実行時間は7msだったため、3msの空き時間Tiが生じる。このため、検出器104は、スケジュールA0での空き時間Ti1msと合わせると4ms以上の空き時間Tiが生じると推算する。
【0043】
<ステップS15>
スケジューラ100は、推定されたCPU13の空き時間Tiが、再スケジューリングAを行うことができる程、生じるかを検討する。すなわち、処理A2の複数のジョブの中で、実行予定のジョブA21の次に実行時間の長いジョブA22のジョブ管理情報メモリ105に記憶されている実行時間は、最悪実行時間の25msでありジョブA21よりも10msも長く、推算された空き時間Ti4msよりも長い。
【0044】
このため、ジョブA21をジョブA22に入れ替えると、残りの予約時間内にジョブA22を実行することはできない可能性が高い。このため、スケジューラ100は、空き時間Tiは十分ではないと判断(No)し、ステップS19において処理終了(No)でなければ、再びステップS12において、CPU13は未実行のジョブA21を実行する。
【0045】
なお、CPU13は、処理Aの後に、キュー情報に従い処理Bを実行するが、以降の説明においては省略する。
【0046】
<ステップS12>
CPU13はスケジューラ100が登録したスケジュールA1に示したキューメモリ108の情報に従い、処理A2をジョブA21で実行する。
【0047】
<ステップS13>
処理A2が完了すると、検出器104は、処理A2のジョブA21の実測実行時間TA2であるtA21を検出する。そして、検出器104は、ジョブA11の実測実行時間tA21、例えば9ms、を、ジョブ管理情報メモリ105の動的情報106に記録する。
【0048】
<ステップS14>
さらに検出器104は、図7の実行結果2に示すように、ジョブ管理情報メモリ105に記憶されている実行予定のジョブA11の実行時間と、予約時間から、CPU13の空き時間Tiを推算する。なお、ここで推算するとは実測実行時間から空き時間Tiを算出し、次回の処理における空き時間Tiと推定することである。
【0049】
<ステップS15>
スケジューラ100は、推算されたCPU13の空き時間Tiが、再スケジューリングAを行うことができる程、生じるかを検討する。
【0050】
この場合には、次に実行する予定の処理が、処理A1および処理A2と複数であるため、優先度に基づき、まず優先度の高い処理A2について検討する。ここでは、10msの空き時間Tiが生じるため、スケジューラ100は、処理A2の複数のジョブの中で、実行予定のジョブA21の次に実行時間の長いジョブA22のジョブ管理情報メモリ105に記憶されている実行時間は、最悪実行時間の25msであるが、ジョブA21よりも、ちょうど10ms長い。このため、ジョブA21をジョブA22に入れ替えても予約時間内にジョブA22を実行できる可能性が高い。このため、スケジューラ100は、再スケジューリングAを行うための空き時間Tiは十分と判断(Yes)し、ステップS16に進む。
【0051】
<ステップS16>
なお、再スケジューリングAでは、選択器103は、複数のジョブの中で、処理の優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択する。処理時間の長い複雑なアルゴリズムを用いるジョブは結果品質が高いからである。また、空き時間Tiが生じたとしても、その空き時間Tiは最悪実行時間で保証されたものではないため、選択器103は、予約時間内に処理が完了しないことがないように、前回選択され、予約時間内に処理が完了できたジョブの次に実行時間の長いジョブを選択する。
【0052】
また、処理の優先度に基づいてジョブを選択するため、優先度の高い処理の品質を優先して上げることができる。なお、スケジューラ100が、処理の優先度に基づいてジョブを選択する際には、結果品質のバランスを考慮し選択することが好ましい。すなわち、スケジューラ100が、最初に優先度の最も高い処理のジョブの中から実行時間の長い、結果品質のより高いジョブを選択する再スケジューリングAを行った場合には、次の再スケジューリングAでは、優先度が2番目に高い処理のジョブの中から実行時間の長い、結果品質のより高いジョブを選択し、そして次の再スケジューリングAでは、優先度が3番目に高い処理のジョブの中から実行時間の長い、結果品質のより高いジョブを選択していき、最も優先度が低い処理のジョブの中から実行時間の長い、結果品質のより高いジョブを選択する再スケジューリングAの後に、優先度の最も高い処理のジョブの中から実行時間の長い、結果品質のより高いジョブを選択する再スケジューリングAを行う。複数の処理の中で優先度が高い処理のみの結果品質が突出して高くても、マルチ画面処理回路11の全体としての結果品質が、高くはならない場合があるからである。
【0053】
ここでは、選択器103は、優先度1の処理A2のジョブ中で、ステップS11で選択されたジョブA21の次に実行時間の長いジョブA22を選択し、リセット器102はキューメモリ108を、図7に示すスケジュールA1のように、リセットする。
【0054】
<ステップS12>
CPU13はスケジューラ100が登録したスケジュールA1に示したキューメモリ108の情報に従い、処理A1をジョブA11で実行する。
【0055】
<ステップS13>
処理A1が完了すると、検出器104は、処理A1のジョブA11の実測実行時間TA1であるtA11を検出する。そして、検出器104は、ジョブA11の実測実行時間tA11、例えば4ms、を、再びジョブ管理情報メモリ105の動的情報106に記録する。
【0056】
<ステップS14>
さらに検出器104は、ジョブ管理情報メモリ105に記憶されている実行予定のジョブA22の実行時間と、予約時間から、CPU13の空き時間Tiを推算する。
【0057】
例えば、図7の実行結果3に示すように、ジョブA11の実測実行時間tA11が、再び、4msの場合、次に実行予定の処理A2のジョブA22のジョブ管理情報メモリ105に記憶されている実行時間は、前回実行したジョブ21より最悪実行時間で10ms長いことから、ちょうど23msで全ての処理が完了することになる。すなわち、予約時間23msに対して空き時間Tiは生じない。
【0058】
<ステップS15>
空き時間Tiが生じないので、スケジューラ100は、空き時間Tiは十分ではないと判断(No)し、ステップS19を経て、再びステップS12において、未実行のジョブA22を実行する。
【0059】
<ステップS12>
CPU13はスケジューラ100が登録したスケジュールA1に示したキューメモリ108の情報に従い、処理A2をジョブA22で実行する。
【0060】
<ステップS13>
処理A2が完了すると、検出器104は、処理A2のジョブA22の実測実行時間TA2であるtA22を検出する。そして、検出器104は、ジョブA11の実測実行時間tA22、例えば15ms、を、ジョブ管理情報メモリ105の動的情報106に記録する。
【0061】
<ステップS14>
さらに検出器104は、ジョブ管理情報メモリ105に記憶されている実行予定のジョブA11の実行時間と、予約時間から、CPU13の空き時間Tiを推算する。
【0062】
例えば、図7の実行結果4に示すように、ジョブA22の実測実行時間tA22が15msの場合、既に実行したジョブA11の実測実行時間tA22が4msのため、19msで処理を完了している。このため、予定時間の23msに対して4msの空き時間Tiが生じている。
【0063】
<ステップS15>
スケジューラ100は、推定されたCPU13の空き時間Tiが、再スケジューリングAを行うことができる程、生じるか検討する。
【0064】
この場合には、次に実行する予定処理A1および処理A2のうち、優先度の1の処理A1が既に中程度の結果品質のジョブA22であるのに対して、優先度2の処理2が低い結果品質のジョブA21であるため、バランスを考慮した優先度に基づき、スケジューラ100は、まず処理2について検討する。ここでは、10msの空き時間Tiが生じるため、処理A2の複数のジョブの中で、実行予定のジョブA11の次に実行時間の長いジョブA12のジョブ管理情報メモリ105に記憶されている実行時間は、最悪実行時間の10msであるが、ジョブA21よりも、3ms長いだけである。このため、スケジューラ100は、ジョブA11をジョブA12に入れ替えても予約時間内にジョブA22を実行できる可能性が高いと判断する。すなわち、スケジューラ100は、再スケジューリングAを行うための空き時間Tiが生じる(Yes)と判断する。
【0065】
<ステップS16>
再スケジューリングAでは、選択器103は、処理A1のジョブ中で、前回選択されたジョブA11の次に実行時間の長いジョブA12を選択し、リセット器102はキューメモリ108を、図7に示すスケジュールA2にリセットし、再びステップS12で、CPU13は処理を実行する。
【0066】
<ステップS12>
CPU13はスケジューラ100が登録したスケジュールA2に示したキューメモリ108の情報に従い、処理A1をジョブA12で実行する。
【0067】
<ステップS13>
処理A1が完了すると、検出器104は、処理A1のジョブA12の実測実行時間TA1であるtA12を検出する。そして、検出器104は、ジョブA11の実測実行時間tA12、例えば7ms、を、ジョブ管理情報メモリ105の動的情報106に記録する。
【0068】
<ステップS14>
検出器104は、ジョブ管理情報メモリ105に記憶されている実行予定のジョブA22の実行時間と、予約時間から、CPU13の空き時間Tiを推算する。
【0069】
例えば、図7の実行結果5に示すように、ジョブの実測実行時間tA12が7msの場合、次に実行予定の処理A2のジョブA22のジョブ管理情報メモリ105に記憶されている実行時間は、実測実行時間の15msであることから、22msで全ての処理が完了することになる。すなわち、予約時間23msに対して1msの空き時間Tiしか生じない。
【0070】
<ステップS15>
スケジューラ100は、空き時間Tiは十分ではないと判断(No)し、ステップS19を経て、再びステップS12において、未実行のジョブA22を実行する。実行結果を図7の実行結果6に示す。
以下、同様に、処理の実行と再スケジューリングAを繰り返す。
【0071】
上記の説明のように、本実施の形態のジョブスケジューリング方法は、複数の処理を予約時間内で繰り返す定周期実行方式のスケジューリングを、ジョブ管理情報を基に行う、ジョブスケジューリング方法であって、ジョブ管理情報が、処理の優先度情報と、それぞれの前記処理を実行可能な複数のジョブの実行時間情報とを有し、CPUの空き時間Tiが生じる場合、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択する。また、ジョブ管理情報が、複数のジョブの実測実行時間情報を有し、実測実行時間情報を基に、ジョブを選択する。このため、本実施の形態のジョブスケジューリング方法は、マルチ画面処理回路が処理に要する時間が変化しても、プロセッサの能力を効率的に使うことができる。
【0072】
<第1の実施の形態の変形例>
以下、第1の実施の形態の変形例のジョブスケジューリング方法について説明する。なお本変形例にかかるスケジューリング方法は、第1の実施の形態にかかるスケジューラ100によるスケジューリング方法と類似しているため、同じ箇所の説明は省略する。本変形例のジョブスケジューリング方法を行うスケジューラ101は、各定周期処理の度に、必ず予約時間内に処理が完了するように、各ジョブの最悪実行時間に基づいてジョブスケジューリングを行う。そして、一のジョブを実行する度に、スケジューラ101は、そのジョブの実測実行時間情報と、これから実行予定の残りのジョブの実測実行時間情報とから空き時間Tiを推算し、再スケジューリングAができる程、空き時間Tiがある場合にのみ、再スケジューリングAを行う。そして、全てのジョブの実行が終了、すなわち1周期の定周期処理が終了後に、再び、最悪実行時間に基づくジョブスケジューリングにキュー情報をリセットする。
【0073】
あるいは、スケジューラ101は、各定周期処理の度に、所定の空き時間Tkが生じるように、各ジョブの実測実行時間情報に基づいてジョブスケジューリングを行ってもよい。ここで、所定の空き時間Tkとは処理開始前に入力される情報であり、確実に予約時間内に処理を完了するための安全係数的なパラメータである。所定の空き時間Tkは、処理速度の変動に応じて決定されるが、予約時間の10〜30%が好ましい。前記範囲未満では、予約時間内に処理が完了しないことがあり、前記範囲を超えるとプロセッサの使用効率が良くはない。
【0074】
本変形例のジョブスケジューリング方法では、第1の実施の形態のジョブスケジューリング方法が有する効果に加えて、確実に予約時間内に処理を完了することができ、処理の信頼性が向上する。
【0075】
<第2の実施の形態>
次に、本発明の第2の実施の形態にかかるスケジューラ102について説明する。なお、第2の実施の形態にかかるスケジューリング方法は、第1の実施の形態にかかるスケジューラ100によるスケジューリング方法と類似しているため、同じ構成要素には同じ符号を付し説明は省略する。
【0076】
図8は、第2の実施の形態にかかるスケジューリング方法の処理の流れを説明するためのフローチャートであり、り、図9は、スケジューラ102による再スケジューリングBを説明するための説明図である。
【0077】
本実施の形態にかかるスケジューリング方法においては、プロセッサの能力を効率的に使うために、最悪実行時間ではなく、実測実行時間を元にスケジューリングを行う。このため、処理が予約時間内に完了しない可能性がゼロではない。このため、本実施の形態にかかるスケジューリング方法においては、処理が予約時間内に完了しない場合には、再スケジューリングBを行い、速やかに処理の完了を図る。ここで、処理が予約時間内に完了しない場合とは、実際に完了できなかった場合、および/または完了できない見込みの場合を意味する。
【0078】
以下、図8のフローチャートに従い、本実施の形態のスケジューリング方法について説明する。
図8に示すように、本実施の形態にかかるスケジューリング方法は、ステップS10から、ステップS15およびステップS16までは第1の実施の形態にかかるスケジューリング方法と同じであるため、ステップS17以降の再スケジューリングBについて説明する。
【0079】
前述のように、本実施の形態のスケジューリング方法では、プロセッサの能力を効率的に使うために最悪実行時間を基にしたスケジューリングでは予約時間内に処理が完了しないジョブを登録している。このため、処理を実行した際に、処理が予約時間内に完了しないことがある。処理が予約時間内に完了しなかった場合、スケジューラ102は、ステップS16において、Yesと判断し、ステップS17において再スケジューリングBを行う。
【0080】
<ステップS17>
再スケジューリングBについて、図9を用いて説明する。例えば、図9のスケジュールB0に示した様に、ジョブA13の実測実行時間が4msで、ジョブA23の実測実行時間が19msであったために、スケジューラ102が予約時間23msで処理が完了すると予定して、ジョブ13およびジョブA23をキューメモリ108に登録し実行していた場合に、入力画像信号等に変化が生じて、実測実行時間が増加することがある。
【0081】
例えば、図9の実行予定結果7に示すように、ジョブA13の実測実行時間tA13が4msから10msに急増すると、残りの予約時間は13msしかないため、19msを要する予定、すなわち、実測実行時間が19msのジョブA23を予約時間内には実行できない見込みとなってしまう。このように実測実行時間情報に基づき予約時間内に全ての処理が完了しない場合、スケジューラ102は、処理完了しないと判断し、ステップS18において、再スケジューリングBを行う。
【0082】
<ステップS18>
再スケジューリングBでは、スケジューラ102は、未実行のジョブを、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の短いジョブを選択する。
【0083】
この場合には、次に実行する予定の処理が、処理A2のみであるので、処理A2について再スケジューリングBを行う。すなわち、選択器103は、実行予定のジョブA23の次に実行時間の短いジョブA22を選択し、リセット器102はキューメモリ108を、図9に示すスケジュールB1にリセットし、再びステップS12で、CPU13はスケジュールB1に示したキューメモリ108の情報に従い、処理を行う。そして、スケジューラ102は、ステップS13、ステップS14、ステップS15を行い、再び、ステップS17で処理が予約時間内に完了したかの判断を行う。
【0084】
<ステップS17>
図9の実行結果8に示すように、ジョブA22が予約時間内に完了しなかった場合には、スケジューラ102は、処理完了しないと判断し、ステップS18において、再スケジューリングBを行う。
【0085】
<ステップS18>
再スケジューリングBでは、スケジューラ102は、未実行のジョブを、優先度に基づき、かつ、複数のジョブの中で実行予定のジョブの次に実行時間の短いジョブを選択する。すなわち、再スケジューリングBは、結果品質を低下するスケジューリングであるため、優先度に基づいて、とは、優先度の低い処理から結果品質の低いジョブを選択することを意味する。
【0086】
この場合には、次に実行する予定の処理が、処理A1および処理A2と複数であるため、優先度に基づき、まず優先度の低い処理A1について再スケジューリングBを行う。すなわち、選択器103は、実行予定のジョブA13の次に実行時間の短いジョブA12を選択し、リセット器102はキューメモリ108を、図9に示すスケジュールB2にリセットし、再びステップS12で、CPU13はスケジュールB2に示したキューメモリ108の情報に従い、処理を行う。そして、スケジューラ102は、ステップS13、ステップS14、ステップS15を行い、再び、ステップS17で処理が予約時間内に完了したかの判断を行う。
【0087】
<ステップS17>
図9の実行予定結果9に示すように、ジョブA12の実測実行時間tA12が8msであり、ジョブA22の実測実行時間tA22が15msの場合には、スケジューラ102は、処理が完了できる見込み(Yes)と判断して、スケジューラ102は、再スケジューリングBは行わないで、ステップS19から、ステップS12、ステップS13、ステップS14、ステップS15を行い、再び、ステップS17で処理が予約時間内に完了したかの判断を行う。
【0088】
<ステップS17>
図9の実行結果10に示すように、ジョブA22が予約時間内に完了した場合には、スケジューラ102は、処理完了(Yes)と判断して、処理を継続する。
【0089】
このように、本実施の形態にかかるスケジューリング方法においては、第1の実施の形態のスケジューリング方法が有する効果に加えて、処理が予定時間内に完了しない場合には、再スケジューリングBを行い、速やかに処理の完了を図ることができる。
【0090】
なお、再スケジューリングBを行った場合には、所定の期間あるいは入力画像信号の数等が変化するまで、再スケジューリングAは行わないことが好ましい。再スケジューリングAを行って結果品質を向上しても、次のフレーム処理の際に再び、処理が完了しないで、再スケジューリングBが必要となる可能性が高いためである。
【0091】
なお、マルチ画面処理が完了しないと、テレビジョン受像器はモニタに、最新の画像を表示できないため、前フレームの画像を表示する。すなわち、モニタ表示は、いわゆるフリーズ状態となる。しかし、フリーズ状態が、数フレーム分だけであれば、視聴者は気が付かない。このため、本実施の形態のジョブスケジューリング方法においては、第1の実施の形態のジョブスケジューリング方法に加えて、可能な限り高品質の出力画像を出力しつつ、処理未完了による悪影響は最小に留まるため、処理の信頼性が向上する
なお、上記実施の形態では、スケジューラ100のジョブスケジューリング方法が、マルチ画像処理回路11の画像サイズ変換処理とフォーマット変換処理との2の処理に用いられる例を示したが、3つ以上の処理のジョブスケジューリングに用いることもできる。また、それぞれの処理を実行可能なジョブを3ずつとしたが、4以上でもよいし、もちろん、処理毎のジョブの数は同数である必要はない。さらに、ジョブスケジューリングする処理が3つ以上の場合には、少なくとも2つの処理がそれぞれの処理を実行可能な複数のジョブを有していれば、他の処理を実行可能なジョブは、それぞれ1つのみでもよい。また、スケジューラ100のジョブスケジューリング方法は、定周期実行する処理Aについてのジョブスケジューリングだけでなく、処理Aと組み合わせて定周期実行する処理Bについてのジョブスケジューリングも可能である。
【0092】
さらに、再スケジューリングAおよび再スケジューリングBでは、1回の再スケジューリングで1つの処理のジョブを入れ替える例を示したが、1回の再スケジューリングで複数の処理のジョブを入れ替えてもよい。
【0093】
また、スケジューラ100によるジョブスケジューリングは、例えば、音声処理回路に用いてもよいし、データ誤り訂正回路に用いてもよい。さらに、スケジューラ100によるジョブスケジューリングは、テレビジョン受像機1のデータ処理に限られるものではなく、定周期実行方式で、複数の異なる目的の処理を行うためのスケジューリングを、ジョブ管理情報を基に行うジョブスケジューリング方法であれば、汎用用途で用いることが可能であり、いずれの場合も、プロセッサの能力を効率的に使うことができる。
【0094】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【0095】
【図1】第1の実施の形態にかかるマルチ画面処理回路を有するテレビジョン受像機1の構成を示した構成図である。
【図2】テレビジョン受像機のマルチ画面の例を示した図である。
【図3】第1の実施の形態にかかるスケジューラのブロック図である。
【図4】第1の実施の形態にかかる、ジョブ管理情報の例を示した表である。
【図5】画像サイズ変換処理が実行可能な複数のアルゴリズムが異なるジョブを説明するための説明図である。
【図6】第1の実施の形態のスケジューリング処理の流れを説明するためのフローチャートである。
【図7】第1の実施の形態にかかるスケジューラによる再スケジューリングAを説明するための説明図である。
【図8】第2の実施の形態のスケジューリング処理の流れを説明するためのフローチャートである。
【図9】第2の実施の形態にかかるスケジューラによる再スケジューリングBを説明するための説明図である。
【符号の説明】
【0096】
1…テレビジョン受像機、2…パラボラアンテナ、4、5、6、7…デコーダー、8…HDD、9…外部端子、10…切替回路、11…マルチ画面処理回路、12…モニタ、13…キューメモリ、15…メモリ、20…モニタ表示画面、100…スケジューラ、102…リセット器、103…選択器、105…ジョブ管理情報メモリ、106…動的情報、107…基本情報、108…キューメモリ、TA1、TA2…実測実行時間、Ti…空き時間

【特許請求の範囲】
【請求項1】
ジョブ管理情報を基に、CPUが、予約時間内に複数の処理を実行する定周期実行方式のスケジューリングを行う、ジョブスケジューリング方法であって、
前記ジョブ管理情報が、
前記複数の処理のそれぞれの優先度情報と、
前記複数の処理のそれぞれを実行可能な複数のジョブの実行時間情報とを有し、
前記CPUの空き時間が生じる場合、優先度に基づき、かつ、前記複数のジョブの中で実行予定のジョブの次に実行時間の長いジョブを選択することを特徴とするジョブスケジューリング方法。
【請求項2】
前記ジョブ管理情報が、前記複数のジョブの実測実行時間情報を有し、
前記実測実行時間情報を基に、前記ジョブを選択することを特徴とする請求項1に記載のジョブスケジューリング方法。
【請求項3】
前記実測実行時間情報に基づき予約時間内に全てのジョブが完了しない場合、未実行の前記ジョブを、前記優先度に基づき、かつ、前記複数のジョブの中で実行予定のジョブの次に実行時間の短いジョブを選択する請求項1または請求項2に記載のジョブスケジューリング方法。
【請求項4】
前記複数の処理の結果品質のバランスを考慮し、ジョブを選択することを特徴とする請求項1から請求項3のいずれか1項に記載のジョブスケジューリング方法。
【請求項5】
前記CPUが、テレビジョン受像機のマルチ画面処理のスケジューリングを行うことを特徴とする請求項1から請求項4のいずれか1項に記載のジョブスケジューリング方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−151375(P2009−151375A)
【公開日】平成21年7月9日(2009.7.9)
【国際特許分類】
【出願番号】特願2007−326372(P2007−326372)
【出願日】平成19年12月18日(2007.12.18)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(390010308)東芝デジタルメディアエンジニアリング株式会社 (192)
【Fターム(参考)】