JP6996099B2 - データ処理システム及びデータ処理方法 - Google Patents

データ処理システム及びデータ処理方法 Download PDF

Info

Publication number
JP6996099B2
JP6996099B2 JP2017059348A JP2017059348A JP6996099B2 JP 6996099 B2 JP6996099 B2 JP 6996099B2 JP 2017059348 A JP2017059348 A JP 2017059348A JP 2017059348 A JP2017059348 A JP 2017059348A JP 6996099 B2 JP6996099 B2 JP 6996099B2
Authority
JP
Japan
Prior art keywords
task
arithmetic processing
unit
arithmetic
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017059348A
Other languages
English (en)
Other versions
JP2018163452A (ja
Inventor
友義 小堀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2017059348A priority Critical patent/JP6996099B2/ja
Priority to US15/923,141 priority patent/US10789095B2/en
Publication of JP2018163452A publication Critical patent/JP2018163452A/ja
Application granted granted Critical
Publication of JP6996099B2 publication Critical patent/JP6996099B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

本発明は、データ処理システム及びデータ処理方法に関する。
画像データや音声データといった信号を扱う信号処理では、連続する多数のデータ(ストリームデータ)を演算対象データとして扱い多量のデータに対して、FFT(Fast Fourier Transform)やフィルタリング等の複数の処理を繰り返し実行する場合が多い。また、上記FFTのような特徴を有する演算処理を実行する場合、FFTやフィルタリング等を実行する専用のハードウェアが用いられることが多い。
具体的には、FFTやフィルタリングに対応するアルゴリズムが実装されたDSP(Digital Signal Processor)等を用意する。その上で、DSPや専用ハードウェアの上位制御モジュールから、当該DSP等のプロセッサに実行させる演算処理をタスクとして制御する。例えば、図7を参照すると、FFTやフィルタリングの処理を実行する演算処理部(演算ブロック)211~231の間を小中規模のデータバッファ212、222で接続する。外部制御部201は、演算処理部211~231に対する上位制御モジュールであり、当該外部制御部201は、複数の演算処理部を利用して1つのタスクを実行する。
このように、ストリームデータを取り扱うデータ処理システムでは、複数の演算モジュールと上位制御モジュールを用意する構成、方式が採用されることが多い。このような構成、方式により、タスク制御の粒度を荒くすることが可能となり、上位制御モジュールにおける実行制御の負荷が削減できる。
また、演算処理部の間をデータバッファにより接続し、データの授受を当該バッファにより行うことで、メモリアクセスのレイテンシが削減可能である。その結果、データ処理システムの演算効率を向上させることができる。
さらに、異なるタスク間の演算処理に関するレイテンシを最小化する技術として、以下の2つの方法が存在する。
第1に、複数のストリームに対する処理を一つのタスクとして実行しタスク間の演算処理レイテンシを隠ぺいする方法である。
第2に、演算ブロックへのタスク投入をFIFO(First In First Out)メモリとタスク投入制御ユニットで制御し、演算処理開始のレイテンシを最小化する方法である。
また、特許文献1に記載されたように、一連の複数の処理を複数の処理部にて非同期で施すデータ処理装置も存在する。
特開2000-163388号公報
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
上述のように、異なるタスク間の演算処理に関するレイテンシを最小化するには種々の方法が存在する。しかし、上記のような方法、特に、第2の方法のように、演算処理部へのタスク投入をFIFOとタスク投入制御ユニットにより制御する方法では、上位制御モジュール(外部制御部)によるタスク管理が困難となる。
具体的には、当該方法では、タスクを演算処理部に連続投入した際、それぞれの演算処理部が、自身に投入されたタスクを実行できるところまで個別に実行してしまう。そのたため、ある時点で各演算処理部がいずれのタスクまで実行しているかを把握することは困難である。特に、同一の演算処理を繰り返し行うような状況では、上記問題点が顕著となる。
本発明は、タスク実行状況を正確に把握することを可能とするデータ処理システム及びデータ処理方法を提供することを目的とする。
本発明の第1の視点によれば、縦続接続された複数の演算処理部と、前記複数の演算処理部それぞれに接続される、各演算処理部が処理を開始したタスクのうち、最下段の演算処理部から未だ出力されていない未完了タスクの個数をカウントする複数のカウンタと、を備え、前記複数の演算処理部は、タスクを縦続接続された順に処理し、前記複数のカウンタそれぞれのカウント値は、対応する演算処理部にてタスクの処理が開始するとインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、デクリメントされる、データ処理システムが提供される。
本発明の第2の視点によれば、縦続接続された複数の演算処理部と、前記複数の演算処理部それぞれに接続される、各演算処理部が処理を開始したタスクのうち、最下段の演算処理部から未だ出力されていない未完了タスクの個数をカウントする複数のカウンタと、を備えるデータ処理システムにおいて、前記複数の演算処理部のそれぞれが、タスクを縦続接続された順に処理するステップと、前記カウンタのカウント値を、対応する演算処理部にてタスクの処理が開始するとインクリメントするステップと、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、前記カウンタのカウント値をデクリメントするステップと、を含むデータ処理方法が提供される。
本発明の各視点によれば、タスク実行状況を正確に把握することを可能とすることに寄与する、データ処理システム及びデータ処理方法が、提供される。
一実施形態の概要を説明するための図である。 第1の実施形態に係るデータ処理システムの概略構成の一例を示す図である。 第1の実施形態に係るタスク実行制御部の動作の一例を示すフローチャートである。 第1の実施形態に係るデータ処理システムの動作を説明するための図である。 第2の実施形態に係るタスク実行制御部の動作の一例を示すフローチャートである。 第3の実施形態に係るデータ処理システムの概略構成の一例を示す図である。 データ処理システムの概略構成の一例を示す図である。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
一実施形態に係るデータ処理システムは、縦続接続された複数の演算処理部101と、複数の演算処理部101それぞれに接続される、複数のカウンタ102と、を備える(図1参照)。複数の演算処理部101は、タスクを縦続接続された順に処理する。複数のカウンタ102それぞれのカウント値は、対応する演算処理部101にてタスクの処理が開始するとインクリメントされ、複数の演算処理部101のうち最下段の演算処理部101にてタスクが終了すると、デクリメントされる。
上記データ処理システムに含まれるカウンタ102のカウント値を参照することで、タスクを実行したが下段の演算処理部101では当該タスクの実行が完了していないタスク数を把握することができる。例えば、図1において、初段の演算処理部101にてタスクが処理されると対応するカウンタ102のカウント値は「1」に設定される。この設定されたカウント値は、最下段の演算処理部101にて対応するタスクが終了するまで残り続け、最下段の演算処理部101にてタスクが終了するとカウント値がデクリメントされ「0」に設定される。つまり、初段の演算処理部101に対応するカウンタ102からカウント値を読み出せば、当該演算処理部101にて実行されたタスクの数(又は実行中のタスクの数)、データ処理システム全体では処理が終了していないタスクの数、等を把握することができる。
換言するならば、カウンタ102は、タスクは実行したが下段の演算処理部101では未だ実行が完了していないタスク数(最下段の演算処理部101でのタスクが完了していない数)を保持するものといえる。外部制御部は、カウンタ102からカウンタ値を読み出すことで、未だ実行が完了していないタスクの数を把握し、現在のタスク実行状況を正確に確認できる。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、第1の実施形態に係るデータ処理システムの概略構成の一例を示す図である。図2を参照すると、データ処理システムは、外部制御部10と、縦続接続された複数の演算処理部20-1~20-3と、データ格納部30-1及び30-2と、データバッファ40-1及び40-2と、複数のタスク実行状況カウンタ50-1~50-3と、を含んで構成される。
なお、以降の説明において、演算処理部20-1~20-3を区別する特段の理由が無い場合には、単に「演算処理部20」と表記する。また、他の構成についても同様に、ハイフン(-)の前に記載された数字にて当該構成を代表して表記する。
外部制御部10は、複数の演算処理部20にタスクを投入するモジュール(手段)である。複数の演算処理部20は、投入されたタスクを縦続接続された順に処理していく。外部制御部10は、各演算処理部20にておけるタスクの実行状況を知るために、演算処理部20(より性アックには後述するタスク実行制御部80)に対し、各演算処理部20のステータスに関する送信要求を出力する。
データ格納部30-1は、演算対象となるデータを格納するメモリである。データ格納部30-2は、複数の演算処理部20により演算された結果(タスクが処理された結果)を格納するメモリである。
演算処理部20は、データ格納部30-1又はデータバッファ40に格納された演算用データと、外部制御部10から供給されるタスク制御信号と、に基づき所望の演算を行うモジュール(手段)である。
データバッファ40は、前段の演算処理部20による演算結果を後段の演算処理部20に転送するためのメモリである。各演算処理部20の演算結果は、後段のデータバッファ40やデータ格納部30-2に格納される。
各演算処理部20は、FIFO60と、演算部70と、タスク実行制御部60と、を備える。
FIFO60は、外部制御部10から取得するタスク制御信号を格納する先入れ先出しメモリである。FIFO60は、演算部70に投入するタスクコマンドを保持する。
演算部70は、データ格納部30-1やデータバッファ40に格納されたデータに対して所定の演算(例えば、FFTやフィルタリング等)を実行するモジュール(手段)である。演算部70は、外部(外部制御部10)から供給されるタスクコマンドに応じてタスクを処理する。
タスク実行制御部80は、演算部70におけるタスクコマンドの実行を制御する。より具体的には、タスク実行制御部80は、FIFO70から演算部70にタスク制御信号を投入するタイミング、データバッファ40等からデータを読み出して演算部70に入力するタイミング、データバッファ40等に演算結果を出力するタイミング等を制御する。
タスク実行状況カウンタ50は、演算処理部20に対応して設けられ、各演算処理部20のタスク実行状況を示すカウンタである。複数のタスク実行状況カウンタ50それぞれのカウント値は、対応する演算処理部20にてタスクの処理が開始するとインクリメント(カウント値を1つ増やし)され、最下段の演算処理部20-3にてタスクが終了すると、デクリメント(カウント値を1つ減らす)される。
タスク実行制御部80は、各演算処理部20に対応して設けられたタスク実行状況カウンタ50を所定の規則に基づき制御する。また、タスク実行制御部80は、外部制御部10からのステータスに関する送信要求を受けた場合には、タスク実行状況カウンタ50のカウント値を読み出して、当該カウント値を外部制御部10に出力する。
図2に示すように、外部制御部10は各演算処理部20のFIFO60とタスク実行制御部80に接続される。演算部70は、演算用データを取得するためにデータ格納部30-1やデータバッファ40と接続されている。演算部70は、演算結果を後段の演算処理部20等に引き渡すためにデータバッファ40やデータ格納部30-2と接続されている。演算部70は、外部制御部10からのタスク制御信号を取得するためにFIFO60と接続されている。タスク実行制御部80は、データ格納部30-1やデータバッファ40の状態を知るため(データバッファ40等からデータを取得するため)、これらのメモリと接続されている。
タスク実行制御部80は、現在の処理ステータス(演算処理部20の処理ステータス)を他の演算処理部20に通知するため、他の演算処理部20に含まれるタスク実行制御部80と接続されている。また、図2では、図示を省略しているが、タスク実行制御部80は、FIFO60と接続され、FIFO60からのタスク制御信号を演算部70に投入するタイミングを制御する。
なお、図2では、3つの演算処理部20が縦続接続された構成を図示しているが、演算処理部20の個数を限定する趣旨ではないのは勿論である。複数の演算処理部20がデータ処理システムに含まれていればよい。
上述のように、タスク実行制御部80は、自モジュールに対応して設けられたタスク実行状況カウンタ50を所定の規則に基づいて制御する。
図3は、タスク実行制御部80の動作の一例を示すフローチャートである。
ステップS01において、タスク実行制御部80は、自モジュール(演算処理部20)に新規タスクを投入したか否かを判定する。
新規タスクを投入していれば(ステップS01、Yes分岐)、タスク実行制御部80は、タスク実行状況カウンタ50のカウント値をインクリメントする(ステップS02)。
新規タスクを投入していなければ(ステップS01、No分岐)、タスク実行制御部80は、最下段(最終段)の演算処理部20-3のタスクが終了したか否かを判定する(ステップS03)。具体的には、タスク実行制御部80は、最下段の演算処理部20-3に含まれるタスク実行制御部80-3から演算終了に係るステータスを取得した場合に上記判定処理を満たすと判定する。また、最下段の演算処理部20-3に含まれるタスク実行制御部80-3は、自身の処理結果により上記判定を行う。
最下段の演算処理部20-3にてタスクが終了していれば(ステップS03、Yes分岐)、タスク実行制御部80は、タスク実行状況カウンタ50のカウント値をデクリメントする(ステップS04)。
最下段の演算処理部20-3にてタスクが終了していなければ(ステップS03、No分岐)、タスク実行制御部80は、ステップS01に戻り処理を継続する。
[動作の説明]
続いて、図面を参照しつつ、第1の実施形態に係るデータ処理システムの動作について説明する。その際、以下を前提とする。
データ格納部30-1には、演算処理部20にて演算を行う演算用データが格納されているものとする。
また、理解の容易のため、データ演算システムにて実行されるタスクは2つとする。第1のタスクは、3つの演算処理部20-1~20-3にて実行されるものとする。当該タスクをタスクAと表記する。第2のタスクは、2つの演算処理部20-2、20-3にて実行されるものとする。当該タスクをタスクBと表記する。タスクAに関するコマンド(タスク制御信号)をタスクコマンドA、タスクBに関するコマンドをタスクコマンドBと表記する。
演算処理部20のタスク実行制御部80は、自モジュールのステータスとして待機中(0)、処理実行中(1)、処理終了(2)を他の演算処理部20のタスク実行制御部80に通知する。なお、当該通知は、演算処理部20のステータスが変更となるたびに通知されるものとする。また、FIFO60に格納されたタスクコマンドが存在しない場合には、タスク実行制御部80は、自モジュールのステータスを待機中(0)に設定する。さらに、FIFO60に格納されたタスクコマンドが自モジュールにて対応しないタスクによるものであれば、タスク実行制御部80は、自モジュール(演算処理部20)の前段に接続されたデータ格納部30-1やデータバッファ40から演算用のデータを読み出し、当該データを後段のデータ格納部30-2やデータバッファ40に格納する。
初めに、外部制御部10からタスクAとタスクBを実行するためのコマンド(タスクコマンドA、タスクコマンドB)がそれぞれ入力される(図4の時刻T1参照)。外部制御部10からタスクコマンドが入力されると、FIFO60とタスク実行制御部80が当該タスクコマンドを取得する。FIFO60にタスクコマンドA、タスクコマンドBが入力されると、これらのタスクコマンドA、タスクコマンドBはFIFO60に一旦蓄えられる。
タスク実行制御部80にタスクコマンドAが入力されると、タスク実行制御部80は、自モジュールの演算部70にて投入タスクの実行可否を判定する。その際、タスク実行制御部80は、自モジュールの演算部のステータス(待機中、処理実行中、処理終了)と前段の演算処理部20の状況とに基づいてタスクの投入可否を判定する。例えば、前段に演算処理部20が存在しない演算処理部20-1のタスク実行制御部80-1は、自モジュールの演算部70-1のステータスによりタスク投入可否を判定する。より具体的には、自モジュールのステータスが待機中(0)又は処理終了(2)であれば、新規にタスクが投入可能と判定する。
前段に演算処理部20-1が存在する演算処理部20-2のタスク実行制御部80-2は、自モジュールのスタータスと前段の演算処理部20-1のステータスに基づきタスク投入可否を判定する。より具体的には、前段に演算処理部20が存在するタスク実行制御部80-2は、自モジュールのステータスが待機中(0)又は処理終了(2)であり、前段の演算処理部20-1のステータスが待機中(0)又は処理終了(2)の場合に、新規タスクを投入可能と判定する。
このように、自モジュールにて演算を行っておらず、且つ、前段の演算処理が終了している場合に、タスク実行制御部80は、タスクを実行可能と判定する。
図4の時刻T1では、演算処理部20-1のステータスは待機中(0)であるため、タスク実行制御部80-1は、タスクAを実行するためのタスクコマンドAを演算部70-1に投入する(図4の時刻T2参照)。
演算処理部20-1に新規タスクが投入されたため、図3のフローチャートに従いタスク実行状況カウンタ50-1のカウント値はインクリメントされカウント値が「0」から「1」となる。また、演算処理部20-1のステータスは実行中(1)となる。当該カウンタ値は、現在(時刻T2の時点)、演算処理部20-1にて1つのタスクが実行中、又は、完了待ち中であることを示している。
演算処理部20-1においてタスクAの処理が終了すると、演算処理部20-1のステータスは処理終了(2)となる(図4の時刻T3参照)。タスク実行制御部80-1は、自モジュールのステータス(終了(2))を他のタスク実行制御部80-2、80-3に通知する。演算処理部20-1のステータスが処理終了(2)に遷移することに応じて、演算処理部20-2にてタスクAが投入可能となる。つまり、タスク実行制御部80-2はタスクAの投入が可能と判断する。
タスク実行制御部80-2は、タスクAを実行するためのタスクコマンドAを演算部70-2に投入する。演算部70-2に新規タスクが投入されたため、タスク実行制御部80-2は、タスク実行状況カウンタ50-3のカウント値をインクリメントし、カウント値を「0」から「1」とする。また、演算処理部20-2のステータスは実行中(1)となる。
なお、演算処理部20-に対応するタスク実行状況カウンタ50-1のカウント値は「1」を維持する。最下段の演算処理部20-3にてタスクが終了していないためである。
なお、演算処理部20-1では、FIFO60-1に蓄積されたタスクコマンドBを自モジュールで処理しないため、タスクコマンドB向けの演算用データをデータ格納部30-1から読み出してデータバッファ40-1に格納する。また、演算処理部20-1では、タスクコマンドBを自モジュールで処理しないため、自モジュールのスタータスを待機中(0)に設定する。
その後、演算処理部20-2におけるタスクAの処理が終了すると、演算処理部20-2のステータスは処理終了(2)となる(図4の時刻T4参照)。また、タスク実行制御部80-2から他のタスク実行制御部80-1、80-3にその旨(タスクAの終了)が通知される。
演算処理部20-2にてタスクAの処理が終了すると、演算処理部20-3にてタスクAの投入が可能となる。タスク実行制御部80-3は、新規タスクの投入が可能と判断し、演算部70-3にタスクコマンドAを投入する。演算処理部20-3に新規タスクが投入されたため、タスク実行状況カウンタ50-3のカウント値はインクリメントされ、カウント値が「0」から「1」となる。
また、演算処理部20-2において、タスクAの処理終了時に、対応するFIFO60-2にはタスクコマンドBが格納されているので、タスク実行制御部80-2は、演算部70-2でのタスクBに関する処理の実行可否を判定する。この場合、自モジュールのタスクAの実行が完了し、且つ、前段の演算処理部20-1のステータスは待機中(0)であるため、タスク実行制御部80-2は、演算部70-2にてタスクBの処理が実行可能と判定する。その結果、タスクコマンドBが演算部70-2に投入される(図4の時刻T5参照)。
演算処理部20-2に新規タスクが投入されたため、タスク実行状況カウンタ50-2のカウント値はインクリメントされカウント値は「1」から「2」となる。当該タスク実行状況カウンタ50-2のカウント値は、データ処理システムにて、2つのタスクが実行中、又は、完了待ち中であることを示す。
その後、演算処理部20-3にてタスクAの処理が終了すると(図4の時刻T6参照)、当該事実は、タスク実行制御部80-3から他のタスク実行制御部80-1、2に通知される。この場合、最下段の演算処理部20-3にてタスクが終了したため、タスク実行制御部80-1、80-2は対応するタスク実行状況カウンタ50-1、50-2のカウント値をデクリメントする。その結果、タスク実行状況カウンタ50-1のカウント値は「1」から「0」へ、タスク実行状況カウンタ50-2のカウント値は「2」から「1」へ変化する。
その後、演算処理部20-2にてタスクBの演算処理が終了(図4の時刻T7参照)し、当該事実は、タスク実行制御部80-2から他のタスク実行制御部80-1、80-3に通知される。
演算処理部20-3においてタスクAの処理終了時に、対応するFIFO70-3にはタスクコマンドBが格納されているので、タスク実行制御部80-3は、演算部70-3でのタスクBに関する処理の実行可否を判定する。この場合、自モジュールでのタスクAの実行が完了し、且つ、前段の演算処理部20-2にてタスクBの演算処理が終了しているので、タスク実行制御部80-3は、演算部70-3にてタスクBの処理が実行可能と判定する。その結果、タスクコマンドBが演算部70-3に投入される。
なお、時刻T6からT7にかけてのタスク実行状況カウンタ50-3のカウント値の遷移は、タスクAの終了時に「0」となりタスクBの処理開始時に「1」となる。
その後、演算処理部20-3においけるタスクBの処理が終了(図4の時刻T8参照)する。当該事実は、タスク実行制御部80-1、80-2に通知され、タスク実行状況カウンタ50のカウント値は全て「0」となる。
また、FIFO60-2やFIFO60-3にはタスクコマンドが存在しないため、演算処理部20-3のステータスは待機(0)となる(図4の時刻T9参照)。図9の時刻T9の状態は、データ演算システムにタスクコマンドA、Bが投入される前(時刻T1の前)を示し、新たなタスクの処理が可能となる。
なお、外部制御部10からステータスに関する送信要求を受信した場合には、各タスク実行制御部80は、対応するタスク実行状況カウンタ50のカウント値を読み出して応答する。外部制御部10は、上記送信要求に対する応答により、タスク実行状況カウンタ50のそれぞれが保持するカウント値を取得する。外部制御部10は、当該カウント値を確認することで、各演算処理部20におけるタスク実行状況を把握することができる。例えば、図4の時刻T5のタイミングにて各タスク実行状況カウンタ50のカウント値を取得すれば、外部制御部10は、2つのタスクA、Bが並行して処理され、1つのタスクは最下段の演算処理部20-3まで進み、他のタスクは最下段の1つ前の演算処理部20-2まで進んでいることが把握できる。あるいは、図4の時刻T6のタイミングでは1つのタスクが実行中であり、当該タスクは演算処理部20-2にて実行されていることを把握できる。
このように、データ処理システムの複数のタスク実行制御部80は互いに接続され、タスク実行制御部80は、自身と同じ演算処理部20に含まれる演算部70におけるタスクの実行状況を、他のタスク実行制御部80に通知する。タスク実行制御部80は、通知されたタスクの実行状況に応じて、演算部70にタスクコマンドを投入するか否かを判断する。また、タスク実行制御部80は、タスク実行状況カウンタ50に接続され、演算部70に新たなタスクコマンドを投入した際に当該カウンタのカウント値をインクリメントし、最下段の演算処理部20-3に含まれるタスク実行制御部80-3からタスク終了に関する通知を受信したことに応じて、当該カウンタのカウント値をデクリメントする。
なお、演算処理部20-3におけるタスクAの処理が終了する前に、演算処理部20-2におけるタスクBが終了し、且つ、演算処理部20-2にさらに別のタスク(例えば、タスクCとする)がFIFO60-2に格納されているような状況もあり得る。このような場合に、演算処理部20-2にてタスクCのコマンドが投入可能であれば、演算処理部20-2にてタスクCが実行され、対応するタスク実行状況カウンタ50-2のカウント値は「2」から「3」へ変化する。その後、演算処理部20-3でのタスクAの処理が終了すると、タスク実行状況カウンタ50-2のカウント値は「3」から「2」へと変化することになる。
以上のように、第1の実施形態では、縦続接続された演算処理部20のそれぞれに対し、タスク実行状況カウンタ50を設置する。当該タスク実行状況カウンタ50では、自モジュールにおける新規タスク投入時にカウント値がインクリメントされる。また、当該カウント値をデクリメントする条件を自モジュールにおける対応するタスクの終了ではなく、最下段の演算処理部20のタスク終了としている。その結果、データ処理システムを構成する演算処理部20それぞれにおけるタスク実行状況だけでなく、どのステージまでタスクが進行しているか、何個のタスクがデータ処理システムにて並列に処理されているか、といった状況が上位の外部制御部10にて把握できるようになる。
また、上記把握を実現するために必要な回路は、タスク実行状況カウンタ50であり、カウンタという簡単な回路により、タスクの実行状況が把握される。外部制御部10は、データ処理システムのタスク実行状況を正確に把握することで、タスク投入のタイミング同期を図ることや、タスクフローの切り替え等を容易に行うことができる。
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
第1の実施形態では、1つの演算処理部20に対して1タスクにつき、1つの演算処理を実行することを前提としている。第2の実施形態では、たとえば、あるタスクにおいて、初段の演算処理部20-1が2つの演算処理を実施し、次段の演算処理部20-2が1つの演算処理を実施し、最終段の演算処理部20-3が3つの演算処理を実施するような、1つのタスクおいて各演算処理部20で複数の演算処理を実施する場合を説明する。
なお、第2の実施形態におけるデータ処理システムの構成は図2の構成と相違する点はないので説明を省略する。
第2の実施形態では、タスク実行制御部80におけるタスク実行状況カウンタ50の制御動作が異なる。図5を参照しつつ、第2の実施形態におけるタスク実行制御部80の動作を説明する。
初めに、タスク実行制御部80は、対応するFIFO60に新規タスクが存在するか否かを判定する(ステップS11)。
新規タスクが存在すれば(ステップS11、Yes分岐)、タスク実行制御部80は、自モジュール(演算処理部20)でのタスク内のサブタスク数を保持する(ステップS12)。具体的には、処理するタスクに応じて自モジュールで実行するサブタスク数は予め定まっているので、当該予め定まる値をメモリ(図2には図示せず)に保持する。例えば、上述の例では、演算処理部20-1のタスク実行制御部80-1は、サブタスク数として「2」を保持する。
新規タスクが存在しなければ(ステップS11、No分岐)、タスク実行制御部80は、ステップS13以降の処理を実行する。
タスク実行制御部80は、サブタスクを実行するたびにタスク実行状況カウンタ50のカウント値をインクリメントする(ステップS13、Yes分岐;ステップS14)。その後、タスク実行制御部80は、最下段の演算処理部20にけるタスクが終了したが否かを判定する(ステップS15)。
最下段の演算処理部20において当該タスクのサブタスクが全て終了(当該タスクが終了)すると、その旨がタスク実行制御部80に通知される(ステップS15、Yes分岐)。
その後、タスク実行制御部80は、ステップS12にて保持したサブタスク数に相当する数をタスク実行状況カウンタ50から減算する(ステップS16)。
このように、タスク実行状況カウンタ50それぞれのカウント値は、対応する演算処理部20にて一のタスクなすサブタスクの処理のたびにインクリメントされ、最下段の演算処理部20-3にて当該一のタスクが終了すると、当該タスクをなすサブタスクの数がカウント値からデクリメントされる。第2の実施形態によれば、処理するサブタスクの数に応じてタスク実行状況カウンタ50を制御することで、タスク内の詳細なサブタスクの実行状況も把握可能となる。その結果、外部制御部10は、より細かいタスク制御が実現できる。
[第3の実施形態]
続いて、第3の実施形態について図面を参照して詳細に説明する。
第1の実施形態では、各演算処理部20のタスク実行制御部80とタスク実行状況カウンタ50が接続され、タスク実行制御部80がタスク実行状況カウンタ50を制御している。第3の実施形態では、演算処理部20の演算部70aとタスク実行状況カウンタ50aが接続される。また、当該タスク実行状況カウンタ50a自身が、他のタスク実行状況カウンタ50と連携しカウント値の制御を行う。具体的には、図6に示すように、各タスク実行状況カウンタ50aは、演算部70aに接続されると共に、他のタスク実行状況カウンタ50aとも接続されている。
第1の実施形態では、タスク実行制御部80が互いに自モジュールのステータスに関する情報をやり取りしてタスク実行状況カウンタ50を制御する。第3の実施形態では、タスク実行状況カウンタ50aが互いに上記ステータスに関する情報をやり取りし、カウンタ値を制御する。その際、各タスク実行状況カウンタ50aは、演算部70aからタスクの処理状況(ステータス)を取得し、ステータスが変換した際に他のタスク実行状況カウンタ50aに通知する。
第3の実施形態に係るデータ処理システムの動作は、第1の実施形態と同様とすることができるので説明を省略する。なお、第3の実施形態において、第2の実施形態にて説明したサブタスクの制御を実現できることは勿論である。
このように、演算部70aとタスク実行状況カウンタ50aが接続されると共に、複数のタスク実行状況カウンタ50aは互いに接続される。タスク実行状況カウンタ50aは、演算部70aに新たなタスクが投入されるカウント値をインクリメントすると共に、演算部70aにおけるタスクの実行状況を他のタスク実行状況カウンタ50aに通知し、最下段の演算処理部20-3に対応するタスク実行状況カウンタ50aからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする。
第3の実施形態においても、外部制御部10は、データ処理システムのタスク実行状況を正確に把握することで、タスク投入のタイミング同期を図ることや、タスクフローの切り替え等を容易に行うことができる。
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、複数の演算処理部を備えるマルチコアプロセッサ、又は、アレイプロセッサを用いるデジタル信号処理システムに好適に適用可能である。特に、多数のデータに対して複数のタスクを順に実行するストリーム処理に適用するのが好適である。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係るデータ処理システムのとおりである。
[付記2]
前記複数の演算処理部のそれぞれは、外部から供給されるタスクコマンドに応じてタスクを処理する演算部を備える、付記1のデータ処理システム。
[付記3]
前記複数の演算処理部のそれぞれは、前記演算部に投入するタスクコマンドを保持する、先入れ先出しメモリを備える、付記2のデータ処理システム。
[付記4]
前記複数の演算処理部のそれぞれは、前記演算部における前記タスクコマンドの実行を制御する、タスク実行制御部を備える、付記3のデータ処理システム。
[付記5]
前記複数のタスク実行制御部は互いに接続され、
前記タスク実行制御部は、自身と同じ演算処理部に含まれる演算部におけるタスクの実行状況を、他の前記タスク実行制御部に通知し、
前記通知されたタスクの実行状況に応じて、前記演算部に前記タスクコマンドを投入するか否かを判断する、付記4のデータ処理システム。
[付記6]
前記タスク実行制御部は、前記カウンタに接続され、
前記演算部に新たなタスクコマンドを投入した際に前記カウンタのカウント値をインクリメントし、
前記複数の演算処理部のうち最下段の演算処理部に含まれるタスク実行制御部からタスク終了に関する通知を受信したことに応じて、前記カウンタのカウント値をデクリメントする、
付記5のデータ処理システム。
[付記7]
前記演算部と前記カウンタが接続されると共に、前記複数のカウンタは互いに接続され、
前記カウンタは、
前記演算部に新たなタスクが投入されるカウント値をインクリメントすると共に、前記演算部におけるタスクの実行状況を他のカウンタに通知し、前記複数の演算処理部のうち最下段の演算処理部に対応するカウンタからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする、付記5のデータ処理システム。
[付記8]
前記複数のカウンタそれぞれのカウント値は、
対応する演算処理部にて一のタスクなすサブタスクの処理のたびにインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にて前記一のタスクが終了すると、前記一のタスクをなすサブタスクの数がカウント値からデクリメントされる、付記1乃至7のいずれか一に記載のデータ処理システム。
[付記9]
前記複数のカウンタそれぞれが保持するカウント値を取得する、外部制御部をさらに含む、付記1乃至8のいずれか一に記載のデータ処理システム。
[付記10]
上述の第2の視点に係るデータ処理方法のとおりである。
なお、付記10の形態は、付記1の形態と同様に、付記2の形態~付記9の形態に展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10、201 外部制御部
20、20-1~20-3、101、211、221、231 演算処理部
30、30-1、30-2、202、203 データ格納部
40、40-1、40-2、212、222 データバッファ
50、50-1~50-3、50a、50a-1~50a-3 タスク実行状況カウンタ
60、60-1~60-3 FIFO
70、70-1~70-3、70a、70a-1~70a-3 演算部
80、80-1~80-3、80a、80a-1~80a-3 タスク実行制御部
102 カウンタ

Claims (10)

  1. 縦続接続された複数の演算処理部と、
    前記複数の演算処理部それぞれに接続される、各演算処理部が処理を開始したタスクのうち、最下段の演算処理部から未だ出力されていない未完了タスクの個数をカウントする複数のカウンタと、
    を備え、
    前記複数の演算処理部は、タスクを縦続接続された順に処理し、
    前記複数のカウンタそれぞれのカウント値は、対応する演算処理部にてタスクの処理が開始するとインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、デクリメントされる、
    データ処理システム。
  2. 前記複数の演算処理部のそれぞれは、外部から供給されるタスクコマンドに応じてタスクを処理する演算部を備える、請求項1のデータ処理システム。
  3. 前記複数の演算処理部のそれぞれは、前記演算部に投入するタスクコマンドを保持する、先入れ先出しメモリを備える、請求項2のデータ処理システム。
  4. 前記複数の演算処理部のそれぞれは、前記演算部における前記タスクコマンドの実行を制御する、タスク実行制御部を備える、請求項3のデータ処理システム。
  5. 前記複数の演算処理部が備える前記タスク実行制御部は互いに接続され、
    前記タスク実行制御部は、自身と同じ演算処理部に含まれる演算部におけるタスクの実行状況を、他の前記タスク実行制御部に通知し、
    前記通知されたタスクの実行状況に応じて、前記演算部に前記タスクコマンドを投入するか否かを判断する、請求項4のデータ処理システム。
  6. 前記タスク実行制御部は、前記カウンタに接続され、
    前記演算部に新たなタスクコマンドを投入した際に前記カウンタのカウント値をインクリメントし、
    前記複数の演算処理部のうち最下段の演算処理部に含まれるタスク実行制御部からタスク終了に関する通知を受信したことに応じて、前記カウンタのカウント値をデクリメントする、
    請求項5のデータ処理システム。
  7. 前記演算部と前記カウンタが接続されると共に、前記複数のカウンタは互いに接続され、
    前記カウンタは、
    前記演算部に新たなタスクが投入されるカウント値をインクリメントすると共に、前記演算部におけるタスクの実行状況を他のカウンタに通知し、前記複数の演算処理部のうち最下段の演算処理部に対応するカウンタからタスク終了に関する通知を受信したことに応じて、カウント値をデクリメントする、請求項5のデータ処理システム。
  8. 前記複数のカウンタそれぞれのカウント値は、
    対応する演算処理部にて一のタスクをなすサブタスクの処理のたびにインクリメントされ、前記複数の演算処理部のうち最下段の演算処理部にて前記一のタスクが終了すると、前記一のタスクをなすサブタスクの数がカウント値からデクリメントされる、請求項1乃至7のいずれか一項に記載のデータ処理システム。
  9. 前記複数のカウンタそれぞれが保持するカウント値を取得する、外部制御部をさらに含む、請求項1乃至8のいずれか一項に記載のデータ処理システム。
  10. 縦続接続された複数の演算処理部と、
    前記複数の演算処理部それぞれに接続される、各演算処理部が処理を開始したタスクのうち、最下段の演算処理部から未だ出力されていない未完了タスクの個数をカウントする複数のカウンタと、
    を備えるデータ処理システムにおいて、
    前記複数の演算処理部のそれぞれが、タスクを縦続接続された順に処理するステップと、
    前記カウンタのカウント値を、対応する演算処理部にてタスクの処理が開始するとインクリメントするステップと、
    前記複数の演算処理部のうち最下段の演算処理部にてタスクが終了すると、前記カウンタのカウント値をデクリメントするステップと、
    を含むデータ処理方法。
JP2017059348A 2017-03-24 2017-03-24 データ処理システム及びデータ処理方法 Active JP6996099B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017059348A JP6996099B2 (ja) 2017-03-24 2017-03-24 データ処理システム及びデータ処理方法
US15/923,141 US10789095B2 (en) 2017-03-24 2018-03-16 Data processing system and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017059348A JP6996099B2 (ja) 2017-03-24 2017-03-24 データ処理システム及びデータ処理方法

Publications (2)

Publication Number Publication Date
JP2018163452A JP2018163452A (ja) 2018-10-18
JP6996099B2 true JP6996099B2 (ja) 2022-01-17

Family

ID=63582639

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017059348A Active JP6996099B2 (ja) 2017-03-24 2017-03-24 データ処理システム及びデータ処理方法

Country Status (2)

Country Link
US (1) US10789095B2 (ja)
JP (1) JP6996099B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505060A (ja) 2002-10-31 2006-02-09 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. パイプラインプロセスステージの制御システムおよび制御方法
JP2006260013A (ja) 2005-03-16 2006-09-28 Fujitsu Ltd 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
JP2015075778A (ja) 2013-10-04 2015-04-20 オリンパス株式会社 負荷分散制御装置
WO2015194133A1 (ja) 2014-06-19 2015-12-23 日本電気株式会社 演算装置、演算装置の制御方法、及び、演算装置の制御プログラムが記録された記憶媒体

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163388A (ja) 1998-11-24 2000-06-16 Minolta Co Ltd データ処理システム
US7272027B2 (en) * 1999-09-23 2007-09-18 Netlogic Microsystems, Inc. Priority circuit for content addressable memory
US7110407B1 (en) * 1999-09-23 2006-09-19 Netlogic Microsystems, Inc. Method and apparatus for performing priority encoding in a segmented classification system using enable signals
US7398374B2 (en) * 2002-02-27 2008-07-08 Hewlett-Packard Development Company, L.P. Multi-cluster processor for processing instructions of one or more instruction threads
US7383426B2 (en) * 2003-06-11 2008-06-03 University Of Washington Processor employing loadable configuration parameters to reduce or eliminate setup and pipeline delays in a pipeline system
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US9747110B2 (en) * 2015-05-20 2017-08-29 Altera Corporation Pipelined cascaded digital signal processing structures and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505060A (ja) 2002-10-31 2006-02-09 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. パイプラインプロセスステージの制御システムおよび制御方法
JP2006260013A (ja) 2005-03-16 2006-09-28 Fujitsu Ltd 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
JP2015075778A (ja) 2013-10-04 2015-04-20 オリンパス株式会社 負荷分散制御装置
WO2015194133A1 (ja) 2014-06-19 2015-12-23 日本電気株式会社 演算装置、演算装置の制御方法、及び、演算装置の制御プログラムが記録された記憶媒体

Also Published As

Publication number Publication date
US20180276037A1 (en) 2018-09-27
JP2018163452A (ja) 2018-10-18
US10789095B2 (en) 2020-09-29

Similar Documents

Publication Publication Date Title
JP5173713B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
US9733981B2 (en) System and method for conditional task switching during ordering scope transitions
TWI571744B (zh) 數位信號處理資料傳送技術
JP5173711B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5803972B2 (ja) マルチコアプロセッサ
JP6996099B2 (ja) データ処理システム及びデータ処理方法
US8761188B1 (en) Multi-threaded software-programmable framework for high-performance scalable and modular datapath designs
JP6165016B2 (ja) 負荷分散制御装置
US9507541B2 (en) Computation device, computation method, and medium
CN107025064B (zh) 一种低延迟高iops的数据访问方法
JP2013196509A (ja) 情報処理装置及びその制御方法
CN105637475B (zh) 并行访问方法及系统
JP5630798B1 (ja) プロセッサーおよび方法
JP6381019B2 (ja) 情報処理装置及び制御方法
WO2013102970A1 (ja) データ処理装置、及びデータ処理方法
JP5536862B2 (ja) マルチスレッドプロセッサ
JP2012173755A (ja) 情報処理装置及び情報処理方法
CN113711192B (zh) 信息处理装置
JP5505963B2 (ja) ベクトル処理装置及びベクトル演算処理方法
JP5770334B2 (ja) マルチスレッドプロセッサ
JP2008027344A (ja) オブジェクト間の非同期メッセージ管理方式および非同期メッセージ管理方法
JP2014225088A (ja) 演算装置
JP2018055244A (ja) 演算装置、電子制御装置及び演算方法
JP5946566B2 (ja) マルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法
JP5536863B2 (ja) マルチスレッドプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211028

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211129

R150 Certificate of patent or registration of utility model

Ref document number: 6996099

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150