(57)【特許請求の範囲】
【請求項１】
プロセッサと、
所定のレートで入力する入力データを記憶する複数の入力バッファと、
前記複数の入力バッファに記憶されたデータを処理する複数のタスクを前記プロセッサで時分割に実行するための制御を行う制御手段と、
前記プロセッサで実行される各タスクにより処理した結果出力される出力データを記憶する複数の出力バッファと、
を備えたデータ処理装置におけるデータ処理方法であって、
前記プロセッサで前記複数のタスクのうちの１つの実行が中断されたとき、前記制御手段が各入力バッファに記憶されたデータ量、及び当該入力バッファに入力する入力データのレートから、当該入力バッファがオーバーフローするまでの時間を計算する計算ステップと、
前記制御手段が、各入力バッファに記憶されたデータを処理するタスクに対し、当該入力バッファについて計算された前記時間が短いほど高い優先度を決定するステップと、
前記制御手段が、前記複数のタスクのうちの前記優先度の最も高いタスクを、前記プロセッサの次の処理対象として選択する選択ステップと、
前記制御手段が、選択されたタスクを前記プロセッサに実行させるステップと、
を有するデータ処理方法。
【請求項２】
前記選択ステップは、前記複数のタスクのうち、当該タスクで処理する入力データを記憶する入力バッファが空でなく、且つ当該タスクで処理された結果出力される出力データを記憶する出力バッファがフルでないタスクのなかから、前記次の処理対象のタスクを選択することを特徴とする請求項１記載のデータ処理方法。
【請求項３】
プロセッサと、
所定のレートで入力する入力データを記憶する複数の入力バッファと、
前記複数の入力バッファに記憶されたデータを処理する複数のタスクを前記プロセッサで時分割に実行するための制御を行う制御手段と、
前記プロセッサで実行される各タスクにより処理した結果出力される出力データを記憶する複数の出力バッファと、
を備えたデータ処理装置において、
前記制御手段は、
前記プロセッサで前記複数のタスクのうちの１つの実行が中断されたとき、各入力バッファに記憶されたデータ量、及び当該入力バッファに入力する入力データのレートから、当該入力バッファがオーバーフローするまでの時間を計算する手段と、
各入力バッファに記憶されたデータを処理するタスクに対し、当該入力バッファについて計算された前記時間が短いほど高い優先度を決定する手段と、
前記複数のタスクのうちの前記優先度の最も高いタスクを、前記プロセッサの次の処理対象として選択する選択手段と、
を備え、選択されたタスクを前記プロセッサに実行させることを特徴とするデータ処理装置。
【請求項４】
前記選択手段は、前記複数のタスクのうち、当該タスクで処理する入力データを記憶する入力バッファが空でなく、且つ当該タスクで処理された結果出力される出力データを記憶する出力バッファがフルでないタスクのなかから、前記次の処理対象のタスクを選択することを特徴とする請求項３記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、インターネットやデジタル放送などで音楽や映像などのデータを受信しながらリアルタイムに再生する（ストリーミング）際のマルチタスクによるデータ処理方法およびそれを用いたデータ処理装置に関する。
【０００２】
【従来の技術】
複数のタスクを単一の処理装置（プロセッサ）で処理する場合、時間分割して処理することが行われている。ある時刻には１個のタスクが実行されており、このタスクの実行が中断されると、制御プログラムに制御が移され、制御プログラムは次に実行するタスクを決定する。従来の方式では、制御プログラムは、実行可能なタスクの中で、各タスクの優先順位を示す、あらかじめ数値化された値の大小に基づいて、次に実行するタスクを決定する。詳細な決定アルゴリズムは幾通りかあるが、代表的なものは次の通りである。実行可能なタスクの中で、最も優先度の高いものが１個ある場合は、それが選択される。最も優先度の高いものが２個以上ある場合には、それらがサイクリックに順番に実行されるように決定される。
【０００３】
優先順位を示す数値は、タスクの実行中に固定であるものや変化するものがある。変化するものは、タスク自身が値を変更するのが普通の方法である。つまりプログラムの実行位置に応じて、高い優先度が必要になった場合には優先度を上げ、低い優先度でも良くなった場合には優先度を下げるのである。
【０００４】
ところが、インターネットやデジタル放送などで音楽や映像などのデータを受信しながらリアルタイムに再生する（ストリーミング）際には、連続的に入力されてくる音声データなどストリーミング・データを処理するプログラムにおいては、未処理のデータが格納されるバッファの占有量など、プログラムの実行位置でなく、外的要因に応じて、優先度を変化させる必要がある。すなわち、未処理の入力データが少ないときは処理を急がないが、未処理の入力データが多いときは処理を急がないと入力データがオーバーフローしてしまい、データが欠落してしまう。あるいは、一定の遅延以内で処理を行わないと、出力データに時間的切れ目が生じてしまい、音声データならば音がとぎれるという間題が発生する。
【０００５】
【発明が解決しようとする課題】
従来のマルチタスク処理は、固定の優先順位や、プログラム自身が設定する優先度に基づいて処理対象のタスクの切り換えを制御するものであり、複数の処理の入出力系統の現状（入出力バッファ内のデータ量）を評価してタスクの優先度を定める必要のあるストリーミングを行う際には適していないという問題点があった。
【０００６】
そこで、本発明は、複数の処理の入出力系統の現状が時々刻々と変化するような複数の処理対象データに対するマルチタスク処理を可能にし、ストリーミングに適したマルチタスクデータ処理方法およびそれを用いた処理装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、複数の処理対象データに対し複数の異なる処理をマルチタスク処理にて実行するためのデータ処理方法であって、処理対象のタスクを切り換えるにあたって、各タスクについて前記複数の処理の入出力系統の現状に対する評価を行ってそれぞれの優先度を算出し、この優先度に基づき次の処理対象のタスクを決定することにより、複数の処理の入出力系統の現状が時々刻々と変化するような複数の処理対象データに対するデータ処理をマルチタスク処理にて実行することが可能となる。
【０００８】
好ましくは、各タスクについて前記複数の処理の入出力系統の現状に対する評価を行うための関数を用いて、それぞれのタスクの優先度を算出する。
【０００９】
本発明は、複数の処理対象データに対し複数の異なる処理をマルチスク処理にて実行する処理装置において、処理対象のタスクを切り換えるにあたって、各タスクについて前記複数の処理の入出力系統の現状に対する評価を行ってそれぞれの優先度を算出する算出手段を具備し、この算出された優先度に基づき次の処理対象のタスクを決定することにより、複数の処理の入出力系統の現状が時々刻々と変化するような複数の処理対象データに対するデータ処理をマルチタスク処理にて実行することが可能となる。
【００１０】
好ましくは、各タスクについて前記複数の処理の入出力系統の現状に対する評価を行うための関数を用いて、それぞれのタスクの優先度を算出する。
【００１１】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
【００１２】
図１は、本実施形態に係るデータ処理装置（以下、簡単に処理装置と呼ぶ）１の要部の構成を概念的に示したものである。処理対象のデータが複数（ここでは、例えばｎ系列）あり（入力データＩＤＡＴＡ＿１〜ＩＤＡＴＡ＿ｎ）、それらはそれぞれ入力バッファＩＢＦ＿１〜入力バッファＩＢＦ＿ｎに入力される。これら入力データは、例えば、複数チャネルのオーディオ信号やビデオ信号などである。これらのデータは、マクロ的にはほぼ一定のレートで入力されることが多いが、ミクロ的には入力バッファに転送する側の性質に依存するものであり、バースト的に入力される場合もありうる。
【００１３】
図１における処理装置１において、各入力データに対する処理が遅れると、入力バッファがオーバーフローしてしまうため、それが起こらないように処理しなければならない。
【００１４】
処理装置１は、ハードウェア的には単一のプロセッサで構成されており、この上で複数（ここでは、例えばｍ個）のタスク（タスク（１）〜タスク（ｍ））が動作するものとする。
【００１５】
タスク（１）〜タスク（ｍ）は、入力バッファＩＢＦ＿１〜ＩＢＦ＿ｎに格納されているデータを逐次処理していくための処理プログラムである。
【００１６】
入力バッファＩＢＦ＿１〜ＩＢＦ＿ｎに格納されている入力データＩＤＡＴＡ＿１〜ＩＤＡＴＡ＿ｎは、タスク（１）〜タスク（ｍ）で処理されて、複数（ここでは、例えばｓ系列）の出力データＯＤＡＴＡ＿１〜ＯＤＡＴＡ＿ｓとして出力され、それそれ出力バッファＯＢＦ＿１〜ＯＢＦ＿ｓに格納される。なお、出力バッファがそのまま入力バッファに対応することもあるが、ここでは、説明の簡単のため、それぞれ別個に設けられているものとする。なお、ｍ＝ｎおよびまたはｎ＝ｓであってもよい。
【００１７】
図１の処理装置１は単一のプロセッサで構成されているので、同時には１個のタスクしか実行されず、ｍ個のタスクは時間分割されて実行されることになる。なお、ここでは、単一のプロセッサで構成された処理装置の場合を例にとり説明するが、一般的には、ｍより少ない複数のプロセッサで構成された処理装置でも同様である。
【００１８】
各タスクへの時間割り当てを決めるのは、制御プログラム２である。タスクの時間割り当ては次のようにして行われる。ある時刻にタスク（ｋ）（１≦ｋ≦ｍの整数）が実行されているとする。
【００１９】
タスク（ｋ）はある条件に従って処理が中断される。この条件は、従来の一般的なマルチタスク制御方式においては、タスク（ｋ）の実行が始まってから一定時間が経過したときである。すなわち、時間を固定長のタイム・スロットに分割し、各タイム・スロット毎にタスクを割り当てる方式である。
【００２０】
本発明においても、このような方式を用いることも可能である。また、この方式を用いない場合としては、タスク（ｋ）が自ら実行を中断する方式が考えられる。後者の方式による利点は、自らの都合で中断を行えるため、処理上区切りがよいところで中断することにより、タスク切り替え時の時間が短くなり、効率がよいことである。すなわち逆に言えば、前者のように強制的に中断される方式では、後で再開するときに必要な中間データが大きくなり、中断時にそれらを保存したり、再開時にそれらを復元したりするのに、より多くの時間を費やすことになる。後者の方式における処理上の区切りとは、例えば、入力データが圧縮符号化されたオーディオ信号の場合には、フレームの区切りとすると都合がよい。
【００２１】
本実施形態では、前者の予め定められた時間経過したときタスクの処理を中断させてタスクをり換える方式であっても、後者のタスク自身が例えばフレームの区切りをきっかけに処理を中断してときタスクを切り換える方式であっても適用可能である。
【００２２】
以下、図２に示すフローチャートを参照して、制御プログラム２のマルチタスク制御処理動作について説明する。
【００２３】
タスク（ｋ）が処理装置のプロセッサにより実行され、その実行が中断されると、制御プログラム２に処理が移される。制御プログラム２は、ＯＳ（オペレーションシステム）が存在するシステムの場合には、通常、ＯＳの一部である。制御プログラム２は、ある条件により次に実行するタスクを決定するものである。
【００２４】
従来の制御プログラムにおいては、各タスクに優先度を示す数値が設定されており、実行可能なタスクの中で、それらの数値の最も大きいものが次に実行されるタスクとして選択される。ここで、実行可能とは、図１のような処理系の場合には、各タスクに対応する処理の入出力系統において、その入力バッファが空でなく、かつ対応する出力バッファがフルでないことである。
【００２５】
しかしながら、図１に示す処理系では、各タスクにあらかじめ優先度をつけておくことや、タスク実行時に自分自身の優先度を設定しておくことは望ましくない。なぜなら、ここでの優先度のあるべき姿は、入力バッファがオーバーフローしないことや、出力バッファが空にならないことであり、これらの条件は当該タスクが実行していない場合にも時々刻々と変化するからである。すなわち優先度と表す数値が時々刻々と変化するようになっている必要がある。
【００２６】
本発明では、時々刻々と変化する優先度を実現するために、各タスク（１）〜タスク（ｍ）のそれぞれにステータス関数ｓｔ＿１〜ｓｔ＿ｍを対応付け、制御プログラム２が次に実行すべきタスクを選択する時点（タスクの切り換え時）において、すなわち、今まで実行していたタスクが中断した後に、各タスク（１）〜タスク（ｍ）のそれぞれに対応したステータス関数ｓｔ＿１〜ｓｔ＿ｍを呼び（ステップＳ１）、各ステータス関数により、例えば、後述する算出方法にて優先度を算出した結果を取得する（ステップＳ２）。
【００２７】
制御プログラムは、各ステータス関数から得られた値、すなわち、各タスクの優先度から、次に実行すべきタスクとして、最も優先度の高いタスクを選択する。ここでは、その選択されたタスクをタスク（ｋ）とする（ステップＳ３）。制御プログラムは、タスクの切り換え時に、プロセッサに、この選択されたタスク（ｋ）を次の処理対象として実行させる。
【００２８】
各ステータス関数ｓｔ＿１〜ｓｔ＿ｍは、それらに対応したタスクの入出力系統の現状を評価し、それに応じた優先度を返すように作られている。また各タスクが実行可能か実行不可能かの情報も返すようにすることも可能なようになっている。ここで実行不可能とは、例えば入力バッファ占有量が空か、出力バッファ占有量がフルの場合である。
【００２９】
制御プログラム２は、ステップＳ３において、これらすべてのステータス関数を呼んだ後、実行可能なタスクの内で最も優先度が高いものを、次に実行するタスクとして選択する。
【００３０】
次に、ステータス関数の優先度の算出方法について、ここでは２例を挙げて説明する。なお、ステータス関数の優先度の算出方法は、ここに挙げるもののみに限るものではない。
【００３１】
第１の算出方法としては、各ステータス関数は、それに対応した入力バッファの占有量を調べ、その占有量をある規則に従って優先度に変換する。ある規則とは、例えば、占有量とあらかじめ予想される入力データのレートから、オーバーフローするまでの時間を推測し、その時間が短いほど優先度が高くなり、その時間が長いほど優先度が低くなるようなテーブルにより変換する。
【００３２】
第２の算出方法としては、各ステータス関数は、それに対応したタスクが処理を完了しているデータのタイム・スタンプを調べ、その時刻と実際の時刻との差を優先度に変換して返す。この場合は、入力データＩＤＡＴＡ＿１〜ＩＤＡＴＡ＿ｎがすべてタイム・スタンプを持ったデータであることが条件である。また、処理装置１には現在時刻を表す時計またはカウンタが具備されているものとする。この例では、実時間に対する遅延が最も大きいものに最も高い優先度が与えられる。
【００３３】
以上説明したように、上記実施形態によれば、各タスクにその対応する処理の入出力系統の現状に対する評価を行うためのステータス関数を対応づけ、制御プログラム２は、処理対象のタスクの切り換えるにあたって、各タスクのステータス関数から返ってきた値をタスクの優先度として用いて、次の処理対象のタスクを決定することにより、複数の処理の入出力系統の現状が時々刻々と変化するような複数の処理対象データに対するデータ処理をマルチタスク処理にて実行することが可能となり、例えば、ストリーミングの際に、処理が所定の時刻に間に合うように行われ、入力バッファがオーバーフローしたり、出力がとぎれたりすることがなくなる。
【００３４】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明は含まれており、開示される複数の構成用件における適宜な組み合わせにより、種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（のなくとも１つ）が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００３５】
【発明の効果】
以上説明したように、本発明によれば、複数の処理の入出力系統の現状が時々刻々と変化するような複数の処理対象データに対するデータ処理をマルチタスク処理にて実行することが可能となり、ストリーミングに適したマルチタスクデータ処理を実現できる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデータ処理装置の要部の構成を概念的に示した図。
【図２】制御プログラムのマルチタスク制御処理動作を説明するためのフローチャート。
【符号の説明】
ＩＤＡＴＡ＿１〜ＩＤＡＴＡ＿ｎ…入力データ
ＩＢＦ＿１〜ＩＢＦ＿ｎ…入力バッファ
Ｓｔ＿１〜Ｓｔ＿ｍ…ステータス関数
ＯＤＡＴＡ＿１〜ＯＤＡＴＡ＿ｓ…出力データ
ＯＢＦ＿１〜ＯＢＦ＿ｓ…出力バッファ
【図１】
0003840045.tif 000002
【図２】
0003840045.tif 000003