(57)【要約】【課題】タスク実行状況を正確に把握することを可能とするデータ処理システムを提供する。【解決手段】データ処理システムは、縦続接続された複数の演算処理部と、複数の演算処理部それぞれに接続される、複数のカウンタと、を備える。複数の演算処理部は、タスクを縦続接続された順に処理する。複数のカウンタそれぞれのカウント値は、対応する演算処理部にてタスクの処理が開始するとインクリメントされ、複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、デクリメントされる。【選択図】図１
2018163452.tif 000002
【特許請求の範囲】
【請求項１】
縦続接続された複数の演算処理部と、
前記複数の演算処理部それぞれに接続される、複数のカウンタと、
を備え、
前記複数の演算処理部は、タスクを縦続接続された順に処理し、
前記複数のカウンタそれぞれのカウント値は、対応する演算処理部にてタスクの処理が開始するとインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、デクリメントされる、
データ処理システム。
【請求項２】
前記複数の演算処理部のそれぞれは、外部から供給されるタスクコマンドに応じてタスクを処理する演算部を備える、請求項１のデータ処理システム。
【請求項３】
前記複数の演算処理部のそれぞれは、前記演算部に投入するタスクコマンドを保持する、先入れ先出しメモリを備える、請求項２のデータ処理システム。
【請求項４】
前記複数の演算処理部のそれぞれは、前記演算部における前記タスクコマンドの実行を制御する、タスク実行制御部を備える、請求項３のデータ処理システム。
【請求項５】
前記複数のタスク実行制御部は互いに接続され、
前記タスク実行制御部は、自身と同じ演算処理部に含まれる演算部におけるタスクの実行状況を、他の前記タスク実行制御部に通知し、
前記通知されたタスクの実行状況に応じて、前記演算部に前記タスクコマンドを投入するか否かを判断する、請求項４のデータ処理システム。
【請求項６】
前記タスク実行制御部は、前記カウンタに接続され、
前記演算部に新たなタスクコマンドを投入した際に前記カウンタのカウント値をインクリメントし、
前記複数の演算処理部のうち最下段の演算処理部に含まれるタスク実行制御部からタスク終了に関する通知を受信したことに応じて、前記カウンタのカウント値をデクリメントする、
請求項５のデータ処理システム。
【請求項７】
前記演算部と前記カウンタが接続されると共に、前記複数のカウンタは互いに接続され、
前記カウンタは、
前記演算部に新たなタスクが投入されるカウント値をインクリメントすると共に、前記演算部におけるタスクの実行状況を他のカウンタに通知し、前記複数の演算処理部のうち最下段の演算処理部に対応するカウンタからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする、請求項５のデータ処理システム。
【請求項８】
前記複数のカウンタそれぞれのカウント値は、
対応する演算処理部にて一のタスクなすサブタスクの処理のたびにインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にて前記一のタスクが終了すると、前記一のタスクをなすサブタスクの数がカウント値からデクリメントされる、請求項１乃至７のいずれか一項に記載のデータ処理システム。
【請求項９】
前記複数のカウンタそれぞれが保持するカウント値を取得する、外部制御部をさらに含む、請求項１乃至８のいずれか一項に記載のデータ処理システム。
【請求項１０】
縦続接続された複数の演算処理部と、
前記複数の演算処理部それぞれに接続される、複数のカウンタと、
を備えるデータ処理システムにおいて、
前記複数の演算処理部のそれぞれが、タスクを縦続接続された順に処理するステップと、
前記カウンタのカウント値を、対応する演算処理部にてタスクの処理が開始するとインクリメントするステップと、
前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、前記カウンタのカウント値をデクリメントするステップと、
を含むデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム及びデータ処理方法に関する。
【背景技術】
【０００２】
画像データや音声データといった信号を扱う信号処理では、連続する多数のデータ（ストリームデータ）を演算対象データとして扱い多量のデータに対して、ＦＦＴ（Fast Fourier Transform）やフィルタリング等の複数の処理を繰り返し実行する場合が多い。また、上記ＦＦＴのような特徴を有する演算処理を実行する場合、ＦＦＴやフィルタリング等を実行する専用のハードウェアが用いられることが多い。
【０００３】
具体的には、ＦＦＴやフィルタリングに対応するアルゴリズムが実装されたＤＳＰ（Digital Signal Processor）等を用意する。その上で、ＤＳＰや専用ハードウェアの上位制御モジュールから、当該ＤＳＰ等のプロセッサに実行させる演算処理をタスクとして制御する。例えば、図７を参照すると、ＦＦＴやフィルタリングの処理を実行する演算処理部（演算ブロック）２１１〜２３１の間を小中規模のデータバッファ２１２、２２２で接続する。外部制御部２０１は、演算処理部２１１〜２３１に対する上位制御モジュールであり、当該外部制御部２０１は、複数の演算処理部を利用して１つのタスクを実行する。
【０００４】
このように、ストリームデータを取り扱うデータ処理システムでは、複数の演算モジュールと上位制御モジュールを用意する構成、方式が採用されることが多い。このような構成、方式により、タスク制御の粒度を荒くすることが可能となり、上位制御モジュールにおける実行制御の負荷が削減できる。
【０００５】
また、演算処理部の間をデータバッファにより接続し、データの授受を当該バッファにより行うことで、メモリアクセスのレイテンシが削減可能である。その結果、データ処理システムの演算効率を向上させることができる。
【０００６】
さらに、異なるタスク間の演算処理に関するレイテンシを最小化する技術として、以下の２つの方法が存在する。
【０００７】
第１に、複数のストリームに対する処理を一つのタスクとして実行しタスク間の演算処理レイテンシを隠ぺいする方法である。
【０００８】
第２に、演算ブロックへのタスク投入をＦＩＦＯ（First In First Out）メモリとタスク投入制御ユニットで制御し、演算処理開始のレイテンシを最小化する方法である。
【０００９】
また、特許文献１に記載されたように、一連の複数の処理を複数の処理部にて非同期で施すデータ処理装置も存在する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−１６３３８８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【００１２】
上述のように、異なるタスク間の演算処理に関するレイテンシを最小化するには種々の方法が存在する。しかし、上記のような方法、特に、第２の方法のように、演算処理部へのタスク投入をＦＩＦＯとタスク投入制御ユニットにより制御する方法では、上位制御モジュール（外部制御部）によるタスク管理が困難となる。
【００１３】
具体的には、当該方法では、タスクを演算処理部に連続投入した際、それぞれの演算処理部が、自身に投入されたタスクを実行できるところまで個別に実行してしまう。そのたため、ある時点で各演算処理部がいずれのタスクまで実行しているかを把握することは困難である。特に、同一の演算処理を繰り返し行うような状況では、上記問題点が顕著となる。
【００１４】
本発明は、タスク実行状況を正確に把握することを可能とするデータ処理システム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の視点によれば、縦続接続された複数の演算処理部と、前記複数の演算処理部それぞれに接続される、複数のカウンタと、を備え、前記複数の演算処理部は、タスクを縦続接続された順に処理し、前記複数のカウンタそれぞれのカウント値は、対応する演算処理部にてタスクの処理が開始するとインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、デクリメントされる、データ処理システムが提供される。
【００１６】
本発明の第２の視点によれば、縦続接続された複数の演算処理部と、前記複数の演算処理部それぞれに接続される、複数のカウンタと、を備えるデータ処理システムにおいて、前記複数の演算処理部のそれぞれが、タスクを縦続接続された順に処理するステップと、前記カウンタのカウント値を、対応する演算処理部にてタスクの処理が開始するとインクリメントするステップと、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、前記カウンタのカウント値をデクリメントするステップと、を含むデータ処理方法が提供される。
【発明の効果】
【００１７】
本発明の各視点によれば、タスク実行状況を正確に把握することを可能とすることに寄与する、データ処理システム及びデータ処理方法が、提供される。
【図面の簡単な説明】
【００１８】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係るデータ処理システムの概略構成の一例を示す図である。
【図３】第１の実施形態に係るタスク実行制御部の動作の一例を示すフローチャートである。
【図４】第１の実施形態に係るデータ処理システムの動作を説明するための図である。
【図５】第２の実施形態に係るタスク実行制御部の動作の一例を示すフローチャートである。
【図６】第３の実施形態に係るデータ処理システムの概略構成の一例を示す図である。
【図７】データ処理システムの概略構成の一例を示す図である。
【発明を実施するための形態】
【００１９】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。
【００２０】
一実施形態に係るデータ処理システムは、縦続接続された複数の演算処理部１０１と、複数の演算処理部１０１それぞれに接続される、複数のカウンタ１０２と、を備える（図１参照）。複数の演算処理部１０１は、タスクを縦続接続された順に処理する。複数のカウンタ１０２それぞれのカウント値は、対応する演算処理部１０１にてタスクの処理が開始するとインクリメントされ、複数の演算処理部１０１のうち最下段の演算処理部１０１にてタスクが終了すると、デクリメントされる。
【００２１】
上記データ処理システムに含まれるカウンタ１０２のカウント値を参照することで、タスクを実行したが下段の演算処理部１０１では当該タスクの実行が完了していないタスク数を把握することができる。例えば、図１において、初段の演算処理部１０１にてタスクが処理されると対応するカウンタ１０２のカウント値は「１」に設定される。この設定されたカウント値は、最下段の演算処理部１０１にて対応するタスクが終了するまで残り続け、最下段の演算処理部１０１にてタスクが終了するとカウント値がデクリメントされ「０」に設定される。つまり、初段の演算処理部１０１に対応するカウンタ１０２からカウント値を読み出せば、当該演算処理部１０１にて実行されたタスクの数（又は実行中のタスクの数）、データ処理システム全体では処理が終了していないタスクの数、等を把握することができる。
【００２２】
換言するならば、カウンタ１０２は、タスクは実行したが下段の演算処理部１０１では未だ実行が完了していないタスク数（最下段の演算処理部１０１でのタスクが完了していない数）を保持するものといえる。外部制御部は、カウンタ１０２からカウンタ値を読み出すことで、未だ実行が完了していないタスクの数を把握し、現在のタスク実行状況を正確に確認できる。
【００２３】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【００２４】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２５】
図２は、第１の実施形態に係るデータ処理システムの概略構成の一例を示す図である。図２を参照すると、データ処理システムは、外部制御部１０と、縦続接続された複数の演算処理部２０−１〜２０−３と、データ格納部３０−１及び３０−２と、データバッファ４０−１及び４０−２と、複数のタスク実行状況カウンタ５０−１〜５０−３と、を含んで構成される。
【００２６】
なお、以降の説明において、演算処理部２０−１〜２０−３を区別する特段の理由が無い場合には、単に「演算処理部２０」と表記する。また、他の構成についても同様に、ハイフン（−）の前に記載された数字にて当該構成を代表して表記する。
【００２７】
外部制御部１０は、複数の演算処理部２０にタスクを投入するモジュール（手段）である。複数の演算処理部２０は、投入されたタスクを縦続接続された順に処理していく。外部制御部１０は、各演算処理部２０にておけるタスクの実行状況を知るために、演算処理部２０（より性アックには後述するタスク実行制御部８０）に対し、各演算処理部２０のステータスに関する送信要求を出力する。
【００２８】
データ格納部３０−１は、演算対象となるデータを格納するメモリである。データ格納部３０−２は、複数の演算処理部２０により演算された結果（タスクが処理された結果）を格納するメモリである。
【００２９】
演算処理部２０は、データ格納部３０−１又はデータバッファ４０に格納された演算用データと、外部制御部１０から供給されるタスク制御信号と、に基づき所望の演算を行うモジュール（手段）である。
【００３０】
データバッファ４０は、前段の演算処理部２０による演算結果を後段の演算処理部２０に転送するためのメモリである。各演算処理部２０の演算結果は、後段のデータバッファ４０やデータ格納部３０−２に格納される。
【００３１】
各演算処理部２０は、ＦＩＦＯ６０と、演算部７０と、タスク実行制御部６０と、を備える。
【００３２】
ＦＩＦＯ６０は、外部制御部１０から取得するタスク制御信号を格納する先入れ先出しメモリである。ＦＩＦＯ６０は、演算部７０に投入するタスクコマンドを保持する。
【００３３】
演算部７０は、データ格納部３０−１やデータバッファ４０に格納されたデータに対して所定の演算（例えば、ＦＦＴやフィルタリング等）を実行するモジュール（手段）である。演算部７０は、外部（外部制御部１０）から供給されるタスクコマンドに応じてタスクを処理する。
【００３４】
タスク実行制御部８０は、演算部７０におけるタスクコマンドの実行を制御する。より具体的には、タスク実行制御部８０は、ＦＩＦＯ７０から演算部７０にタスク制御信号を投入するタイミング、データバッファ４０等からデータを読み出して演算部７０に入力するタイミング、データバッファ４０等に演算結果を出力するタイミング等を制御する。
【００３５】
タスク実行状況カウンタ５０は、演算処理部２０に対応して設けられ、各演算処理部２０のタスク実行状況を示すカウンタである。複数のタスク実行状況カウンタ５０それぞれのカウント値は、対応する演算処理部２０にてタスクの処理が開始するとインクリメント（カウント値を１つ増やし）され、最下段の演算処理部２０−３にてタスクが終了すると、デクリメント（カウント値を１つ減らす）される。
【００３６】
タスク実行制御部８０は、各演算処理部２０に対応して設けられたタスク実行状況カウンタ５０を所定の規則に基づき制御する。また、タスク実行制御部８０は、外部制御部１０からのステータスに関する送信要求を受けた場合には、タスク実行状況カウンタ５０のカウント値を読み出して、当該カウント値を外部制御部１０に出力する。
【００３７】
図２に示すように、外部制御部１０は各演算処理部２０のＦＩＦＯ６０とタスク実行制御部８０に接続される。演算部７０は、演算用データを取得するためにデータ格納部３０−１やデータバッファ４０と接続されている。演算部７０は、演算結果を後段の演算処理部２０等に引き渡すためにデータバッファ４０やデータ格納部３０−２と接続されている。演算部７０は、外部制御部１０からのタスク制御信号を取得するためにＦＩＦＯ６０と接続されている。タスク実行制御部８０は、データ格納部３０−１やデータバッファ４０の状態を知るため（データバッファ４０等からデータを取得するため）、これらのメモリと接続されている。
【００３８】
タスク実行制御部８０は、現在の処理ステータス（演算処理部２０の処理ステータス）を他の演算処理部２０に通知するため、他の演算処理部２０に含まれるタスク実行制御部８０と接続されている。また、図２では、図示を省略しているが、タスク実行制御部８０は、ＦＩＦＯ６０と接続され、ＦＩＦＯ６０からのタスク制御信号を演算部７０に投入するタイミングを制御する。
【００３９】
なお、図２では、３つの演算処理部２０が縦続接続された構成を図示しているが、演算処理部２０の個数を限定する趣旨ではないのは勿論である。複数の演算処理部２０がデータ処理システムに含まれていればよい。
【００４０】
上述のように、タスク実行制御部８０は、自モジュールに対応して設けられたタスク実行状況カウンタ５０を所定の規則に基づいて制御する。
【００４１】
図３は、タスク実行制御部８０の動作の一例を示すフローチャートである。
【００４２】
ステップＳ０１において、タスク実行制御部８０は、自モジュール（演算処理部２０）に新規タスクを投入したか否かを判定する。
【００４３】
新規タスクを投入していれば（ステップＳ０１、Ｙｅｓ分岐）、タスク実行制御部８０は、タスク実行状況カウンタ５０のカウント値をインクリメントする（ステップＳ０２）。
【００４４】
新規タスクを投入していなければ（ステップＳ０１、Ｎｏ分岐）、タスク実行制御部８０は、最下段（最終段）の演算処理部２０−３のタスクが終了したか否かを判定する（ステップＳ０３）。具体的には、タスク実行制御部８０は、最下段の演算処理部２０−３に含まれるタスク実行制御部８０−３から演算終了に係るステータスを取得した場合に上記判定処理を満たすと判定する。また、最下段の演算処理部２０−３に含まれるタスク実行制御部８０−３は、自身の処理結果により上記判定を行う。
【００４５】
最下段の演算処理部２０−３にてタスクが終了していれば（ステップＳ０３、Ｙｅｓ分岐）、タスク実行制御部８０は、タスク実行状況カウンタ５０のカウント値をデクリメントする（ステップＳ０４）。
【００４６】
最下段の演算処理部２０−３にてタスクが終了していなければ（ステップＳ０３、Ｎｏ分岐）、タスク実行制御部８０は、ステップＳ０１に戻り処理を継続する。
【００４７】
［動作の説明］
続いて、図面を参照しつつ、第１の実施形態に係るデータ処理システムの動作について説明する。その際、以下を前提とする。
【００４８】
データ格納部３０−１には、演算処理部２０にて演算を行う演算用データが格納されているものとする。
【００４９】
また、理解の容易のため、データ演算システムにて実行されるタスクは２つとする。第１のタスクは、３つの演算処理部２０−１〜２０−３にて実行されるものとする。当該タスクをタスクＡと表記する。第２のタスクは、２つの演算処理部２０−２、２０−３にて実行されるものとする。当該タスクをタスクＢと表記する。タスクＡに関するコマンド（タスク制御信号）をタスクコマンドＡ、タスクＢに関するコマンドをタスクコマンドＢと表記する。
【００５０】
演算処理部２０のタスク実行制御部８０は、自モジュールのステータスとして待機中（０）、処理実行中（１）、処理終了（２）を他の演算処理部２０のタスク実行制御部８０に通知する。なお、当該通知は、演算処理部２０のステータスが変更となるたびに通知されるものとする。また、ＦＩＦＯ６０に格納されたタスクコマンドが存在しない場合には、タスク実行制御部８０は、自モジュールのステータスを待機中（０）に設定する。さらに、ＦＩＦＯ６０に格納されたタスクコマンドが自モジュールにて対応しないタスクによるものであれば、タスク実行制御部８０は、自モジュール（演算処理部２０）の前段に接続されたデータ格納部３０−１やデータバッファ４０から演算用のデータを読み出し、当該データを後段のデータ格納部３０−２やデータバッファ４０に格納する。
【００５１】
初めに、外部制御部１０からタスクＡとタスクＢを実行するためのコマンド（タスクコマンドＡ、タスクコマンドＢ）がそれぞれ入力される（図４の時刻Ｔ１参照）。外部制御部１０からタスクコマンドが入力されると、ＦＩＦＯ６０とタスク実行制御部８０が当該タスクコマンドを取得する。ＦＩＦＯ６０にタスクコマンドＡ、タスクコマンドＢが入力されると、これらのタスクコマンドＡ、タスクコマンドＢはＦＩＦＯ６０に一旦蓄えられる。
【００５２】
タスク実行制御部８０にタスクコマンドＡが入力されると、タスク実行制御部８０は、自モジュールの演算部７０にて投入タスクの実行可否を判定する。その際、タスク実行制御部８０は、自モジュールの演算部のステータス（待機中、処理実行中、処理終了）と前段の演算処理部２０の状況とに基づいてタスクの投入可否を判定する。例えば、前段に演算処理部２０が存在しない演算処理部２０−１のタスク実行制御部８０−１は、自モジュールの演算部７０−１のステータスによりタスク投入可否を判定する。より具体的には、自モジュールのステータスが待機中（０）又は処理終了（２）であれば、新規にタスクが投入可能と判定する。
【００５３】
前段に演算処理部２０−１が存在する演算処理部２０−２のタスク実行制御部８０−２は、自モジュールのスタータスと前段の演算処理部２０−１のステータスに基づきタスク投入可否を判定する。より具体的には、前段に演算処理部２０が存在するタスク実行制御部８０−２は、自モジュールのステータスが待機中（０）又は処理終了（２）であり、前段の演算処理部２０−１のステータスが待機中（０）又は処理終了（２）の場合に、新規タスクを投入可能と判定する。
【００５４】
このように、自モジュールにて演算を行っておらず、且つ、前段の演算処理が終了している場合に、タスク実行制御部８０は、タスクを実行可能と判定する。
【００５５】
図４の時刻Ｔ１では、演算処理部２０−１のステータスは待機中（０）であるため、タスク実行制御部８０−１は、タスクＡを実行するためのタスクコマンドＡを演算部７０−１に投入する（図４の時刻Ｔ２参照）。
【００５６】
演算処理部２０−１に新規タスクが投入されたため、図３のフローチャートに従いタスク実行状況カウンタ５０−１のカウント値はインクリメントされカウント値が「０」から「１」となる。また、演算処理部２０−１のステータスは実行中（１）となる。当該カウンタ値は、現在（時刻Ｔ２の時点）、演算処理部２０−１にて１つのタスクが実行中、又は、完了待ち中であることを示している。
【００５７】
演算処理部２０−１においてタスクＡの処理が終了すると、演算処理部２０−１のステータスは処理終了（２）となる（図４の時刻Ｔ３参照）。タスク実行制御部８０−１は、自モジュールのステータス（終了（２））を他のタスク実行制御部８０−２、８０−３に通知する。演算処理部２０−１のステータスが処理終了（２）に遷移することに応じて、演算処理部２０−２にてタスクＡが投入可能となる。つまり、タスク実行制御部８０−２はタスクＡの投入が可能と判断する。
【００５８】
タスク実行制御部８０−２は、タスクＡを実行するためのタスクコマンドＡを演算部７０−２に投入する。演算部７０−２に新規タスクが投入されたため、タスク実行制御部８０−２は、タスク実行状況カウンタ５０−３のカウント値をインクリメントし、カウント値を「０」から「１」とする。また、演算処理部２０−２のステータスは実行中（１）となる。
【００５９】
なお、演算処理部２０−に対応するタスク実行状況カウンタ５０−１のカウント値は「１」を維持する。最下段の演算処理部２０−３にてタスクが終了していないためである。
【００６０】
なお、演算処理部２０−１では、ＦＩＦＯ６０−１に蓄積されたタスクコマンドＢを自モジュールで処理しないため、タスクコマンドＢ向けの演算用データをデータ格納部３０−１から読み出してデータバッファ４０−１に格納する。また、演算処理部２０−１では、タスクコマンドＢを自モジュールで処理しないため、自モジュールのスタータスを待機中（０）に設定する。
【００６１】
その後、演算処理部２０−２におけるタスクＡの処理が終了すると、演算処理部２０−２のステータスは処理終了（２）となる（図４の時刻Ｔ４参照）。また、タスク実行制御部８０−２から他のタスク実行制御部８０−１、８０−３にその旨（タスクＡの終了）が通知される。
【００６２】
演算処理部２０−２にてタスクＡの処理が終了すると、演算処理部２０−３にてタスクＡの投入が可能となる。タスク実行制御部８０−３は、新規タスクの投入が可能と判断し、演算部７０−３にタスクコマンドＡを投入する。演算処理部２０−３に新規タスクが投入されたため、タスク実行状況カウンタ５０−３のカウント値はインクリメントされ、カウント値が「０」から「１」となる。
【００６３】
また、演算処理部２０−２において、タスクＡの処理終了時に、対応するＦＩＦＯ６０−２にはタスクコマンドＢが格納されているので、タスク実行制御部８０−２は、演算部７０−２でのタスクＢに関する処理の実行可否を判定する。この場合、自モジュールのタスクＡの実行が完了し、且つ、前段の演算処理部２０−１のステータスは待機中（０）であるため、タスク実行制御部８０−２は、演算部７０−２にてタスクＢの処理が実行可能と判定する。その結果、タスクコマンドＢが演算部７０−２に投入される（図４の時刻Ｔ５参照）。
【００６４】
演算処理部２０−２に新規タスクが投入されたため、タスク実行状況カウンタ５０−２のカウント値はインクリメントされカウント値は「１」から「２」となる。当該タスク実行状況カウンタ５０−２のカウント値は、データ処理システムにて、２つのタスクが実行中、又は、完了待ち中であることを示す。
【００６５】
その後、演算処理部２０−３にてタスクＡの処理が終了すると（図４の時刻Ｔ６参照）、当該事実は、タスク実行制御部８０−３から他のタスク実行制御部８０−１、２に通知される。この場合、最下段の演算処理部２０−３にてタスクが終了したため、タスク実行制御部８０−１、８０−２は対応するタスク実行状況カウンタ５０−１、５０−２のカウント値をデクリメントする。その結果、タスク実行状況カウンタ５０−１のカウント値は「１」から「０」へ、タスク実行状況カウンタ５０−２のカウント値は「２」から「１」へ変化する。
【００６６】
その後、演算処理部２０−２にてタスクＢの演算処理が終了（図４の時刻Ｔ７参照）し、当該事実は、タスク実行制御部８０−２から他のタスク実行制御部８０−１、８０−３に通知される。
【００６７】
演算処理部２０−３においてタスクＡの処理終了時に、対応するＦＩＦＯ７０−３にはタスクコマンドＢが格納されているので、タスク実行制御部８０−３は、演算部７０−３でのタスクＢに関する処理の実行可否を判定する。この場合、自モジュールでのタスクＡの実行が完了し、且つ、前段の演算処理部２０−２にてタスクＢの演算処理が終了しているので、タスク実行制御部８０−３は、演算部７０−３にてタスクＢの処理が実行可能と判定する。その結果、タスクコマンドＢが演算部７０−３に投入される。
【００６８】
なお、時刻Ｔ６からＴ７にかけてのタスク実行状況カウンタ５０−３のカウント値の遷移は、タスクＡの終了時に「０」となりタスクＢの処理開始時に「１」となる。
【００６９】
その後、演算処理部２０−３においけるタスクＢの処理が終了（図４の時刻Ｔ８参照）する。当該事実は、タスク実行制御部８０−１、８０−２に通知され、タスク実行状況カウンタ５０のカウント値は全て「０」となる。
【００７０】
また、ＦＩＦＯ６０−２やＦＩＦＯ６０−３にはタスクコマンドが存在しないため、演算処理部２０−３のステータスは待機（０）となる（図４の時刻Ｔ９参照）。図９の時刻Ｔ９の状態は、データ演算システムにタスクコマンドＡ、Ｂが投入される前（時刻Ｔ１の前）を示し、新たなタスクの処理が可能となる。
【００７１】
なお、外部制御部１０からステータスに関する送信要求を受信した場合には、各タスク実行制御部８０は、対応するタスク実行状況カウンタ５０のカウント値を読み出して応答する。外部制御部１０は、上記送信要求に対する応答により、タスク実行状況カウンタ５０のそれぞれが保持するカウント値を取得する。外部制御部１０は、当該カウント値を確認することで、各演算処理部２０におけるタスク実行状況を把握することができる。例えば、図４の時刻Ｔ５のタイミングにて各タスク実行状況カウンタ５０のカウント値を取得すれば、外部制御部１０は、２つのタスクＡ、Ｂが並行して処理され、１つのタスクは最下段の演算処理部２０−３まで進み、他のタスクは最下段の１つ前の演算処理部２０−２まで進んでいることが把握できる。あるいは、図４の時刻Ｔ６のタイミングでは１つのタスクが実行中であり、当該タスクは演算処理部２０−２にて実行されていることを把握できる。
【００７２】
このように、データ処理システムの複数のタスク実行制御部８０は互いに接続され、タスク実行制御部８０は、自身と同じ演算処理部２０に含まれる演算部７０におけるタスクの実行状況を、他のタスク実行制御部８０に通知する。タスク実行制御部８０は、通知されたタスクの実行状況に応じて、演算部７０にタスクコマンドを投入するか否かを判断する。また、タスク実行制御部８０は、タスク実行状況カウンタ５０に接続され、演算部７０に新たなタスクコマンドを投入した際に当該カウンタのカウント値をインクリメントし、最下段の演算処理部２０−３に含まれるタスク実行制御部８０−３からタスク終了に関する通知を受信したことに応じて、当該カウンタのカウント値をデクリメントする。
【００７３】
なお、演算処理部２０−３におけるタスクＡの処理が終了する前に、演算処理部２０−２におけるタスクＢが終了し、且つ、演算処理部２０−２にさらに別のタスク（例えば、タスクＣとする）がＦＩＦＯ６０−２に格納されているような状況もあり得る。このような場合に、演算処理部２０−２にてタスクＣのコマンドが投入可能であれば、演算処理部２０−２にてタスクＣが実行され、対応するタスク実行状況カウンタ５０−２のカウント値は「２」から「３」へ変化する。その後、演算処理部２０−３でのタスクＡの処理が終了すると、タスク実行状況カウンタ５０−２のカウント値は「３」から「２」へと変化することになる。
【００７４】
以上のように、第１の実施形態では、縦続接続された演算処理部２０のそれぞれに対し、タスク実行状況カウンタ５０を設置する。当該タスク実行状況カウンタ５０では、自モジュールにおける新規タスク投入時にカウント値がインクリメントされる。また、当該カウント値をデクリメントする条件を自モジュールにおける対応するタスクの終了ではなく、最下段の演算処理部２０のタスク終了としている。その結果、データ処理システムを構成する演算処理部２０それぞれにおけるタスク実行状況だけでなく、どのステージまでタスクが進行しているか、何個のタスクがデータ処理システムにて並列に処理されているか、といった状況が上位の外部制御部１０にて把握できるようになる。
【００７５】
また、上記把握を実現するために必要な回路は、タスク実行状況カウンタ５０であり、カウンタという簡単な回路により、タスクの実行状況が把握される。外部制御部１０は、データ処理システムのタスク実行状況を正確に把握することで、タスク投入のタイミング同期を図ることや、タスクフローの切り替え等を容易に行うことができる。
【００７６】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【００７７】
第１の実施形態では、１つの演算処理部２０に対して１タスクにつき、１つの演算処理を実行することを前提としている。第２の実施形態では、たとえば、あるタスクにおいて、初段の演算処理部２０−１が２つの演算処理を実施し、次段の演算処理部２０−２が１つの演算処理を実施し、最終段の演算処理部２０−３が３つの演算処理を実施するような、１つのタスクおいて各演算処理部２０で複数の演算処理を実施する場合を説明する。
【００７８】
なお、第２の実施形態におけるデータ処理システムの構成は図２の構成と相違する点はないので説明を省略する。
【００７９】
第２の実施形態では、タスク実行制御部８０におけるタスク実行状況カウンタ５０の制御動作が異なる。図５を参照しつつ、第２の実施形態におけるタスク実行制御部８０の動作を説明する。
【００８０】
初めに、タスク実行制御部８０は、対応するＦＩＦＯ６０に新規タスクが存在するか否かを判定する（ステップＳ１１）。
【００８１】
新規タスクが存在すれば（ステップＳ１１、Ｙｅｓ分岐）、タスク実行制御部８０は、自モジュール（演算処理部２０）でのタスク内のサブタスク数を保持する（ステップＳ１２）。具体的には、処理するタスクに応じて自モジュールで実行するサブタスク数は予め定まっているので、当該予め定まる値をメモリ（図２には図示せず）に保持する。例えば、上述の例では、演算処理部２０−１のタスク実行制御部８０−１は、サブタスク数として「２」を保持する。
【００８２】
新規タスクが存在しなければ（ステップＳ１１、Ｎｏ分岐）、タスク実行制御部８０は、ステップＳ１３以降の処理を実行する。
【００８３】
タスク実行制御部８０は、サブタスクを実行するたびにタスク実行状況カウンタ５０のカウント値をインクリメントする（ステップＳ１３、Ｙｅｓ分岐；ステップＳ１４）。その後、タスク実行制御部８０は、最下段の演算処理部２０にけるタスクが終了したが否かを判定する（ステップＳ１５）。
【００８４】
最下段の演算処理部２０において当該タスクのサブタスクが全て終了（当該タスクが終了）すると、その旨がタスク実行制御部８０に通知される（ステップＳ１５、Ｙｅｓ分岐）。
【００８５】
その後、タスク実行制御部８０は、ステップＳ１２にて保持したサブタスク数に相当する数をタスク実行状況カウンタ５０から減算する（ステップＳ１６）。
【００８６】
このように、タスク実行状況カウンタ５０それぞれのカウント値は、対応する演算処理部２０にて一のタスクなすサブタスクの処理のたびにインクリメントされ、最下段の演算処理部２０−３にて当該一のタスクが終了すると、当該タスクをなすサブタスクの数がカウント値からデクリメントされる。第２の実施形態によれば、処理するサブタスクの数に応じてタスク実行状況カウンタ５０を制御することで、タスク内の詳細なサブタスクの実行状況も把握可能となる。その結果、外部制御部１０は、より細かいタスク制御が実現できる。
【００８７】
［第３の実施形態］
続いて、第３の実施形態について図面を参照して詳細に説明する。
【００８８】
第１の実施形態では、各演算処理部２０のタスク実行制御部８０とタスク実行状況カウンタ５０が接続され、タスク実行制御部８０がタスク実行状況カウンタ５０を制御している。第３の実施形態では、演算処理部２０の演算部７０ａとタスク実行状況カウンタ５０ａが接続される。また、当該タスク実行状況カウンタ５０ａ自身が、他のタスク実行状況カウンタ５０と連携しカウント値の制御を行う。具体的には、図６に示すように、各タスク実行状況カウンタ５０ａは、演算部７０ａに接続されると共に、他のタスク実行状況カウンタ５０ａとも接続されている。
【００８９】
第１の実施形態では、タスク実行制御部８０が互いに自モジュールのステータスに関する情報をやり取りしてタスク実行状況カウンタ５０を制御する。第３の実施形態では、タスク実行状況カウンタ５０ａが互いに上記ステータスに関する情報をやり取りし、カウンタ値を制御する。その際、各タスク実行状況カウンタ５０ａは、演算部７０ａからタスクの処理状況（ステータス）を取得し、ステータスが変換した際に他のタスク実行状況カウンタ５０ａに通知する。
【００９０】
第３の実施形態に係るデータ処理システムの動作は、第１の実施形態と同様とすることができるので説明を省略する。なお、第３の実施形態において、第２の実施形態にて説明したサブタスクの制御を実現できることは勿論である。
【００９１】
このように、演算部７０ａとタスク実行状況カウンタ５０ａが接続されると共に、複数のタスク実行状況カウンタ５０ａは互いに接続される。タスク実行状況カウンタ５０ａは、演算部７０ａに新たなタスクが投入されるカウント値をインクリメントすると共に、演算部７０ａにおけるタスクの実行状況を他のタスク実行状況カウンタ５０ａに通知し、最下段の演算処理部２０−３に対応するタスク実行状況カウンタ５０ａからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする。
【００９２】
第３の実施形態においても、外部制御部１０は、データ処理システムのタスク実行状況を正確に把握することで、タスク投入のタイミング同期を図ることや、タスクフローの切り替え等を容易に行うことができる。
【００９３】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、複数の演算処理部を備えるマルチコアプロセッサ、又は、アレイプロセッサを用いるデジタル信号処理システムに好適に適用可能である。特に、多数のデータに対して複数のタスクを順に実行するストリーム処理に適用するのが好適である。
【００９４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係るデータ処理システムのとおりである。
［付記２］
前記複数の演算処理部のそれぞれは、外部から供給されるタスクコマンドに応じてタスクを処理する演算部を備える、付記１のデータ処理システム。
［付記３］
前記複数の演算処理部のそれぞれは、前記演算部に投入するタスクコマンドを保持する、先入れ先出しメモリを備える、付記２のデータ処理システム。
［付記４］
前記複数の演算処理部のそれぞれは、前記演算部における前記タスクコマンドの実行を制御する、タスク実行制御部を備える、付記３のデータ処理システム。
［付記５］
前記複数のタスク実行制御部は互いに接続され、
前記タスク実行制御部は、自身と同じ演算処理部に含まれる演算部におけるタスクの実行状況を、他の前記タスク実行制御部に通知し、
前記通知されたタスクの実行状況に応じて、前記演算部に前記タスクコマンドを投入するか否かを判断する、付記４のデータ処理システム。
［付記６］
前記タスク実行制御部は、前記カウンタに接続され、
前記演算部に新たなタスクコマンドを投入した際に前記カウンタのカウント値をインクリメントし、
前記複数の演算処理部のうち最下段の演算処理部に含まれるタスク実行制御部からタスク終了に関する通知を受信したことに応じて、前記カウンタのカウント値をデクリメントする、
付記５のデータ処理システム。
［付記７］
前記演算部と前記カウンタが接続されると共に、前記複数のカウンタは互いに接続され、
前記カウンタは、
前記演算部に新たなタスクが投入されるカウント値をインクリメントすると共に、前記演算部におけるタスクの実行状況を他のカウンタに通知し、前記複数の演算処理部のうち最下段の演算処理部に対応するカウンタからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする、付記５のデータ処理システム。
［付記８］
前記複数のカウンタそれぞれのカウント値は、
対応する演算処理部にて一のタスクなすサブタスクの処理のたびにインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にて前記一のタスクが終了すると、前記一のタスクをなすサブタスクの数がカウント値からデクリメントされる、付記１乃至７のいずれか一に記載のデータ処理システム。
［付記９］
前記複数のカウンタそれぞれが保持するカウント値を取得する、外部制御部をさらに含む、付記１乃至８のいずれか一に記載のデータ処理システム。
［付記１０］
上述の第２の視点に係るデータ処理方法のとおりである。
なお、付記１０の形態は、付記１の形態と同様に、付記２の形態〜付記９の形態に展開することが可能である。
【００９５】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００９６】
１０、２０１  外部制御部
２０、２０−１〜２０−３、１０１、２１１、２２１、２３１  演算処理部
３０、３０−１、３０−２、２０２、２０３  データ格納部
４０、４０−１、４０−２、２１２、２２２  データバッファ
５０、５０−１〜５０−３、５０ａ、５０ａ−１〜５０ａ−３  タスク実行状況カウンタ
６０、６０−１〜６０−３  ＦＩＦＯ
７０、７０−１〜７０−３、７０ａ、７０ａ−１〜７０ａ−３  演算部
８０、８０−１〜８０−３、８０ａ、８０ａ−１〜８０ａ−３  タスク実行制御部
１０２  カウンタ
【図１】
2018163452.tif 000003
【図２】
2018163452.tif 000004
【図３】
2018163452.tif 000005
【図４】
2018163452.tif 000006
【図５】
2018163452.tif 000007
【図６】
2018163452.tif 000008
【図７】
2018163452.tif 000009