JP6673202B2 - 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム - Google Patents

演算装置、演算装置の制御方法、及び、演算装置の制御プログラム Download PDF

Info

Publication number
JP6673202B2
JP6673202B2 JP2016529022A JP2016529022A JP6673202B2 JP 6673202 B2 JP6673202 B2 JP 6673202B2 JP 2016529022 A JP2016529022 A JP 2016529022A JP 2016529022 A JP2016529022 A JP 2016529022A JP 6673202 B2 JP6673202 B2 JP 6673202B2
Authority
JP
Japan
Prior art keywords
task
arithmetic
unit
command
processing
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.)
Expired - Fee Related
Application number
JP2016529022A
Other languages
English (en)
Other versions
JPWO2015194133A1 (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
Publication of JPWO2015194133A1 publication Critical patent/JPWO2015194133A1/ja
Application granted granted Critical
Publication of JP6673202B2 publication Critical patent/JP6673202B2/ja
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

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

Description

本発明は、1以上の演算部における一連の演算処理であるタスクの実行を、演算部毎に制御可能な、演算装置等に関する。
信号処理等のデータ処理においては、多量のデータ(例えば、特定の信号に関するストリームデータ等)が演算処理の対象として扱われる。そして、それら多量のデータに対して、複数の演算処理(例えば、FFT(高速フーリエ変換:Fast Fourier Transform)や、各種フィルタリング等)が、順次実行される場合がある。
このようなデータ処理においては、上記した演算処理は、それぞれ専用ハードウェアや、DSP(Digital Signal Processor)等のプロセッサ(演算装置)等により実現されてもよい。同様に、上記した演算処理は、コンピュータ等の汎用のハードウェアとソフトウェア(コンピュータ・プログラム)の組合せとして実現されてもよい。以下、上記したような演算処理を実現可能な各種構成を、まとめて「演算ブロック」または、「演算部」と称する場合がある。
上記のようなデータ処理を実行する際、上記演算ブロックを制御可能な上位の制御モジュール(制御装置)が、1以上の上記演算ブロックにおける一連の演算処理をタスクとしてまとめて、各演算ブロックにおける当該タスクの実行を制御する構成が知られている。このようなタスクは、1以上の演算ブロックによる、データに対する演算処理を含む。
例えば、ある演算ブロックの処理結果(出力)が他の演算ブロックの入力となるように、複数の演算ブロックを接続して一連の演算処理である演算フローを構築する場合、図20に例示するような構成が用いられる場合がある。この場合、複数の演算ブロック(演算ブロック2001乃至演算ブロック2003)がデータバッファ(データバッファ2004乃至2005)を介して接続される。そして、それら複数の演算ブロックによる演算処理が、まとめて一つのタスクとして制御される。即ち、複数の演算ブロック及びデータバッファがパイプライン状に接続され、係るパイプラインにより一つのタスクが実行される。上記データバッファは、当該データバッファに接続された演算ブロックから各種データを入出力可能な記憶領域である。
図20に例示するような構成によって、タスク制御の粒度を粗く(大きく)することが可能であることから、タスクの実行を制御するための処理負荷を削減可能である。また、データバッファを用いることにより、各演算ブロックにおけるメモリアクセスのレイテンシ(遅延)を削減することが可能であることから、演算処理効率の向上が見込まれる。
複数の演算ブロックを用いてデータ処理を実行する技術に関連して、以下の特許文献が開示されている。
特許文献1は、依存関係のある複数のタスクを実行する情報処理装置において、タスク間のデータの受渡しに使用されるバッファに対するアクセスのオーバーヘッドを低減する技術を開示する。特許文献1に開示された技術は、プロセッサ(演算ブロック)内部に設けられた内部メモリを介してデータを受け渡すことにより、バッファアクセスの遅延を低減する。また、特許文献1に開示された技術は、依存関係のある複数のタスクが連続して処理されるように、タスクの実行順序を制御する。
また、特許文献2は、マルチプロセッサにより構成された印刷装置において、複数頁にわたる印刷コマンドを解釈し、各頁の描画及び印刷処理を複数の異なるプロセッサに順次割り当てる技術を開示する。
また、特許文献3は、タスク間の接続状態に応じて、タスクの実行順序とタスク毎の実行時間の割当てを制御することにより、リアルタイム処理を維持しながら演算ブロックの利用効率を高める技術を開示する。
国際公開第2012/039216号 特開2003−067156号公報 特開2001−022595号公報
図20に例示するような単純な構成を採用した場合、各演算ブロックは、例えば図21に模式的に例示するように、あるタスクに対する全ての演算処理が終了してから、次のタスクを実行することとなる。より具体的には、図21に例示されるように、タスク1に関する全ての演算処理が完了するまで、各演算ブロックはタスク2に関する処理を実行しない。
この場合、あるタスクが実行されてから、次のタスクが実行されるまでの間、演算処理が実行されない(アイドル状態となる)演算ブロックが存在する場合がある。より具体的には、あるタスクの終了部分、もしくは、開始部分において、ある演算ブロックがアイドル状態となってしまう場合がある。このような演算ブロックのアイドル状態は、全体の演算処理を高速化する際に、ボトルネックとなる。換言すると、パイプライン状に接続した演算ブロックにおいて、複数のタスクを実行する際にパイプラインのオーバーヘッドが生じることにより、各演算ブロックの稼働率が低下する。このような演算ブロックの稼働率の低下は、演算処理全体のボトルネックとなる。
このような問題の対策として、例えば、タスクの処理単位を細かく(粒度を小さく)することが考えられる。即ち、タスクの処理単位を小さくすることにより、単位タスク当りの実行時間を短くし、演算ブロックのアイドル状態を短くする方法が考えられる。あるいは、例えば、タスクの処理単位を大きく(粒度を大きく)して、タスクの処理に対するパイプラインのオーバーヘッドの割合を小さくする方法が考えられる。
しかしながら、タスクの処理単位を細かくした場合、タスクの実行を制御するための処理負荷が増大する。タスクの実行を制御する制御系の演算能力が低い場合、係る処理負荷の増大に伴い、タスクのスケジューリングが間に合わなくなる可能性がある。
また、タスクの処理単位を大きくした場合、当該大きくなった処理単位に応じてデータバッファのサイズを大きくする必要があることから、回路規模が大きくなる等の問題が生じる。
上記特許文献1は、依存関係のあるタスクを同一のプロセッサ(演算ブロック)においてまとめて処理する技術を開示するにすぎない。特許文献2は、頁毎に独立した描画処理を複数のプロセッサが独立して実行し、描画結果を並行して印刷処理する技術にすぎない。特に印刷処理は、一定の処理(給紙、印写、排紙)を繰り返すのみであるから、処理の効率向上は比較的容易である。特許文献3は、タスク間の接続関係と、タスク毎のリアルタイム性の要求度に応じて、特定のプロセッサにおけるタスクの実行順序とタスク毎の実行時間の割当てを変更する技術を開示するのみである。これより、上記いずれの特許文献においても、種々の異なるタスクを実行する場合に、パイプライン状に接続した複数の演算ブロックの稼働率を向上させる技術に関しては十分考慮されていない。
本願発明は、上記のような事情を鑑みてなされたものである。即ち、本願発明は、複数の演算ブロック(演算部)がパイプライン状に接続された構成を有する演算装置(あるいは演算システム)において、各演算ブロックが効率的に稼働するようにタスクの実行を制御可能な演算装置等を提供することを主たる目的とする。
上記の目的を達成すべく、本発明の一態様に係る演算装置は、以下の構成を備える。即ち、本発明の一態様に係る演算装置は、データに対する演算処理を実行する複数の演算手段と、複数の上記演算手段の内、第1の演算手段と、第2の演算手段との間に接続され、上記第1の演算手段から出力されるデータと、上記第2の演算手段に入力されるデータとを保持可能な、少なくとも1以上のデータバッファと、1以上の上記第1の演算手段と、1以上の上記第2の演算手段との少なくともいずれかである1以上の特定の上記演算手段において実行される、上記データに対する一連の演算処理であるタスクの実行を指定するタスクコマンドを、上記演算手段に対して出力可能に保持するコマンドバッファと、上記タスクコマンドと、上記タスクが実行される少なくともいずれかの上記演算手段を特定可能なタスク設定情報と、複数の上記演算手段のそれぞれから取得した当該演算手段における演算処理の状態を表す情報と、に基づいて、上記データバッファ及び上記コマンドバッファの少なくともいずれかを制御することにより、1以上の特定の上記演算手段において実行される上記タスクに関する演算処理を制御するタスク制御手段と、を備える。
また、本発明の一態様に係る演算装置の制御方法は、データに対する演算処理を実行する演算手段である1以上の第1の演算手段と、1以上の第2の演算手段と、の少なくともいずれかである1以上の特定の上記演算手段において実行される上記データに対する一連の演算処理である、タスクの実行を指定するタスクコマンドと、上記タスクが実行される上記1以上の特定の上記演算手段を特定可能な情報と、複数の上記演算手段のそれぞれから取得した当該上記演算手段の処理状態を表す情報と、に基づいて、上記第1の演算手段と、上記第2の演算手段との間に接続され、上記第1の演算手段から出力されるデータと、上記第2の演算手段に入力されるデータと、を保持可能な少なくとも1以上のデータバッファ、及び、上記タスクコマンドを上記1以上の特定の上記演算手段に対して出力可能に保持するコマンドバッファ、の少なくともいずれかを制御することにより、上記1以上の特定の上記演算手段において実行される上記タスクに関する演算処理を制御する。
また、同目的は、上記構成を有する演算装置の制御方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納(記録)されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
本発明によれば、複数の演算ブロックがパイプライン状に接続された構成を有する演算装置において、各演算ブロックが効率的に稼働するようにタスクの実行を制御可能である。
図1は、本願発明の第1の実施形態に係る演算装置の機能的な構成を例示する図である。 図2は、本願発明の第1の実施形態に係るタスク設定テーブルの内容を例示する図である。 図3は、本願発明の第1の実施形態に係るタスクコマンドの内容を例示する図である。 図4は、本願発明の第1の実施形態に係るタスクコマンドの具体例を示す図である。 図5は、本願発明の第1の実施形態に係るタスクコマンドの別の具体例を示す図である。 図6は、本願発明の第1の実施形態に係るタスク設定テーブルの具体例を示す図である。 図7は、本願発明の第1の実施形態に係るタスク制御部の動作を例示するフローチャート(1/3)である。 図8は、本願発明の第1の実施形態に係るタスク制御部の動作を例示するフローチャート(2/3)である。 図9は、本願発明の第1の実施形態に係るタスク制御部の動作を例示するフローチャート(3/3)である。 図10は、本願発明の第2の実施形態に係るタスク設定テーブルの内容を例示する図である。 図11は、本願発明の第3の実施形態に係る演算装置の機能的な構成を例示する図である。 図12は、本願発明の第3の実施形態に係るデータバッファ1104に格納されるデータの具体例を示す図である。 図13は、本願発明の第4の実施形態に係る演算装置の機能的な構成を例示する図である。 図14は、本願発明の第4の実施形態に係るタスク制御部の動作を例示するフローチャートである。 図15は、本願発明の第4の実施形態に係る演算部の動作を例示するフローチャートである。 図16は、本願発明の第5の実施形態に係る演算装置の機能的な構成を例示する図である。 図17は、本願発明の第5の実施形態に係る演算装置の別の構成を例示する図である。 図18は、本願発明の第1の実施形態に係る演算装置における、タスクの実行過程を模式的に表す図である。 図19は、本願発明の各実施形態に係る制御部を実現可能なハードウェア構成を例示する図である。 図20は、本願発明に関連する技術である演算装置の機能的な構成を例示する図である。 図21は、本願発明に関連する技術である演算装置における、タスクの実行過程を模式的に表す図である。
次に、本発明を実施する形態について図面を参照して詳細に説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。
まず、図1を参照して、本実施形態における演算装置について説明する。図1は本実施形態における演算装置の機能的な構成を例示する、ブロック図である。
図1に例示するように、本実施形態における演算装置100は、演算制御部101と、演算対象であるデータを保持する第1のメモリ部102と、演算結果を保持する第2のメモリ部103とを備える。また、本実施形態における演算装置100は、入力データと、上記演算制御部101から入力される各種制御信号(例えば、後述するタスクコマンド等)とに基づいて各種演算処理を実行する演算部(演算ブロック)104乃至演算部106を備える。
本実施形態における演算制御部101は、演算部(104乃至106)に対して、あるタスクの実行を指示する制御信号を入力する。より具体的には、演算制御部101は、演算部(104乃至106)における一連の演算処理をタスクとしてまとめて、当該タスクの実行を指定するコマンド(タスクコマンド)を生成する。そして、演算制御部101は、係るタスクコマンドを演算部(104乃至106)に対して入力する。
本実施形態における演算部104乃至演算部105は、上記説明した演算ブロックに相当する。係る演算部(104乃至106)は、特定の処理を実行する専用の演算処理ハードウェア(DSP)等であってもよい。演算部(104乃至106)は、あるいは、汎用のCPU(Central Processing Unit)や、MPU(Micro Processing Unit)であってもよい。係る演算部(104乃至106)においてどのような演算処理を実行するかは、任意に定めてよい。
また、本実施形態における演算装置100は、上記演算制御部101から上記演算部(104乃至106)へ入力される制御信号を蓄えるコマンドバッファ(コマンドバッファ107、コマンドバッファ108、及び、コマンドバッファ109)を備える。係るコマンドバッファ(107乃至109)は、例えば、FIFO(First IN First OUT)構成を実現可能な、任意の一時記憶装置に構成されてもよい。以下、本実施形態においては、係るコマンドバッファ107、コマンドバッファ108、及び、コマンドバッファ109を、それぞれ、FIFO107、FIFO108、及び、FIFO109と称する場合がある。本実施形態は上記には限定されず、コマンドバッファ107乃至コマンドバッファ109は、FIFO構成以外の構成を採用してもよい。
本実施形態におけるコマンドバッファ(107乃至109)は、例えば、周知の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等)と、当該メモリを制御するコントローラ等とにより実現可能である。当該メモリは、デュアルポートメモリとして構成されてもよい。
また、本実施形態における演算装置100は、各演算部(104乃至106)の間に介在するデータバッファ110、データバッファ111を備える。
データバッファ110は、前段の演算部104の出力側と、後段の演算部105の入力側との間に接続され、演算部104における演算結果を保持する。データバッファ110は、前段の演算部104における演算結果を、後段の演算部105に転送可能である。
データバッファ111は、前段の演算部105の出力側と、後段の演算部106の入力側との間に接続され、演算部105における演算結果を保持する。データバッファ111は、前段の演算部105における演算結果を後段の演算部106に転送可能である。本実施形態におけるデータバッファ110乃至データバッファ111は、例えば、周知の揮発性メモリ(例えばDRAMやSRAM等)と、当該メモリを制御するコントローラ等により実現可能である。当該メモリは、デュアルポートメモリとして構成されてもよい。
また、本実施形態における演算装置100は、FIFO(107乃至109)、及び、データバッファ(110、111)からの各種データ等の出力を制御可能な、タスク制御部(タスク制御部112、タスク制御部113、及び、タスク制御部114)を備える。タスク制御部(112乃至114)の具体的な構成と動作については、後述する。
以下、上記それぞれの構成要素間の接続態様について説明する。
演算制御部101はFIFO(107乃至109)、並びに、タスク制御部(112乃至114)と通信可能に接続される。
演算部104は、FIFO107と通信可能に接続され、FIFO107から各種制御信号(例えば、上記コマンド等)等を取得する(受信する)。
また、演算部104は、第1のメモリ部102と通信可能に接続される。演算部104は、当該第1のメモリ部102から、演算処理の対象となるデータを取得してもよい。
また、演算部104は、データバッファ110と通信可能に接続され、データバッファ110の状態を取得可能である。演算部104は、データバッファ110に対して、演算部104における演算処理の結果等を出力する。
また、演算部104は、タスク制御部(112乃至114)のそれぞれに対して通信可能に接続される。演算部104は、あるタスクに関する演算処理の実行状態を表すステータス情報を、タスク制御部(112乃至114)に通知する。この場合、演算部104は、例えば、当該演算部104と、各タスク制御部(112乃至114)との間を接続する任意の通信バスにおける信号線を用いて、当該ステータス情報を表す信号を通知してもよい。
演算部105は、FIFO108と通信可能に接続される。演算部105は、FIFO108から各種制御信号(例えば、上記コマンド等)を取得する(受信する)。
また、演算部105は、データバッファ110と通信可能に接続され、当該データバッファ110から、演算処理の対象となるデータを取得する。
また、演算部105は、データバッファ111と通信可能に接続され、データバッファ111の状態を取得可能である。演算部105は、データバッファ111に対して、演算部105における演算処理の結果等を出力する。
また、演算部105は、タスク制御部(112乃至114)のそれぞれに対して通信可能に接続される。演算部105は、上記ステータス情報を、タスク制御部(112乃至114)に通知する。この場合、演算部105は、例えば、各タスク制御部(112乃至114)との間を接続する任意の通信バスにおける信号線を用いて、当該ステータス情報を表す信号を通知してもよい。
演算部106は、FIFO109と通信可能に接続される。演算部106は、FIFO109から各種制御信号(例えば、上記コマンド等)を取得する(受信する)。
また、演算部106は、データバッファ111と通信可能に接続され、当該データバッファ111から、演算処理の対象となるデータを取得する。
また、演算部106は、第2のメモリ部103と通信可能に接続され、第2のメモリ部103に対して、演算部106における演算処理の結果等を出力する。
また、演算部106は、タスク制御部(112乃至114)のそれぞれに対して通信可能に接続される。演算部106は、上記ステータス情報を、タスク制御部(112乃至114)に通知する。この場合、演算部106は、例えば、各タスク制御部(112乃至114)との間を接続する任意の通信バスにおける信号線を用いて、当該ステータス情報を表す信号を通知してもよい。
なお、演算部104は、第2のメモリ部103に通信可能に接続されていてもよい。演算部105は、第1のメモリ部102及び第2のメモリ部103に通信可能に接続されていてもよい。演算部106は、第のメモリ部10に通信可能に接続されていてもよい。
タスク制御部(112乃至114)は、上記したように、演算制御部101と通信可能に接続され、演算制御部101から、各種制御信号(例えば、上記コマンド等)を受け付ける。
また、タスク制御部(112乃至114)は、上記したように各演算部(104乃至106)とそれぞれ通信可能に接続され、各演算部における演算処理のステータス情報を取得する。この場合、タスク制御部(112乃至114)は、各演算部(104乃至106)から上記ステータス情報に関する通知を受け付けてもよく、各演算部(104乃至106)に対して上記ステータス情報を問い合わせてもよい。
タスク制御部112は、FIFO107と通信可能に接続され、FIFO107からの演算部104に対するデータの出力を制御可能である。
タスク制御部113は、FIFO108と通信可能に接続され、FIFO108からの演算部105に対するデータの出力を制御可能である。
また、タスク制御部113は、データバッファ110と通信可能に接続され、データバッファ110からの演算部105に対するデータの出力を制御可能である。タスク制御部113は、データバッファ110に対する演算部105のアクセスを制御してもよい。
タスク制御部114は、FIFO109と通信可能に接続され、FIFO109からの演算部106に対するデータの出力を制御可能である。
タスク制御部114は、データバッファ111と通信可能に接続され、データバッファ111からの演算部106に対するデータの出力を制御可能である。タスク制御部114は、データバッファ111に対する演算部106のアクセスを制御してもよい。
図1に例示する具体例においては、説明の便宜上、第1のメモリ部102と第2のメモリ部103とを、別の機能ブロックとして記述しているが、本実施形態はこれには限定されない。即ち、第1のメモリ部102及び第2のメモリ部103は、書き込み、読み出しポートが個別に存在するメモリ部として一つに統合されていてもよい。また、第1のメモリ部102及び第2のメモリ部103は、調停により書き込み、読み出しが独立して実行可能なメモリを用いて一つに統合されていてもよい。
また、本実施形態において、演算装置100を構成する上記各構成要素の間を接続する通信回線としては、任意の通信バスや、通信ネットワークを適宜採用してよい。係る通信バスや、通信ネットワークについては、周知の技術を採用してよいので、詳細な説明は省略する。
図1は、演算部の数が3個の場合の具体例を例示するが、本実施形態はこれには限定されない。演算部、データバッファ、コマンドバッファ(FIFO)、及びタスク制御部をいくつ設けるかは、演算装置に求められる処理性能や必要とされる演算処理の種類等に応じて、適宜選択されてよい。
次にタスク制御部(112乃至114)について詳細に説明する。図1に示すようにタスク制御部(112乃至114)は、それぞれ、タスク実行判定部(タスク実行判定部112a、タスク実行判定部113a、及び、タスク実行判定部114a)を有する。また、タスク制御部(112乃至114)は、それぞれ、タスク設定テーブル(タスク設定テーブル112b、タスク設定テーブル113b、及び、タスク設定テーブル114b)を有する。
以下、図2を参照して、タスク設定テーブル(112b乃至114b)について説明する。
タスク設定テーブル(112b乃至114b)は、あるタスクに関する演算処理が実行される演算部(104乃至106のいずれか)を特定可能な情報を有する。
より具体的には、タスク設定テーブル(112b乃至114b)には、実行されるタスク毎に、開始演算ノード番号201と、終了演算ノード番号202とが設定される。即ち、タスク設定テーブル(112b乃至114b)には、実行されるタスクの数(タスクの種類の数)に相当する数の開始演算ノード番号201と、終了演算ノード番号202との組が設定される。タスク設定テーブル(112b乃至114b)においては、上記開始演算ノード番号201と、終了演算ノード番号202とが、タスクの種類を識別可能なタスク識別符号203に関連付けて保持(設定)されてもよい。図2に例示する具体例においては、タスクA乃至タスクNについて、それぞれ開始演算ノード番号201と、終了演算ノード番号202とが、設定される。
開始演算ノード番号201は、あるタスクに関する最初の演算処理を実行する演算部(以下、「開始演算部」と称する場合がある)を特定可能な情報である。また、終了演算ノード番号202は、あるタスクに関する最後の演算処理を実行する演算部(以下、「終了演算部」と称する場合がある)を特定可能な情報である。
換言すると、開始演算ノード番号201は、あるタスクに関する演算処理が開始される演算部(開始演算部)を示す情報である。また、終了演算ノード番号は、あるタスクに関する演算処理が終了される演算部(終了演算部)を示す情報である。即ち、開始演算ノード番号により指定された開始演算部から、終了演算ノード番号により指定された終了演算部まで、当該タスクに関する演算処理が実行される。
各演算ノード番号と、実際の演算部(104乃至106)との関係は、例えば、タスク設定テーブル(112b乃至114b)や、タスク制御部(112乃至114)に予め設定されていてもよい。
タスク設定テーブル(112b乃至114b)は、タスク実行判定部(タスク実行判定部112a、タスク実行判定部113a、及び、タスク実行判定部114a)とそれぞれ接続されてもよい。
タスク設定テーブル(112b乃至114b)は、それぞれ開始演算ノード番号201と終了演算ノード番号202とを、タスク実行判定部(112a乃至114a)に提供する。この場合、タスク実行判定部(112a乃至114a)が、それぞれ、タスク設定テーブル(112b乃至114b)を参照してもよい。
タスク設定テーブル(112b乃至114b)は、例えば、タスク実行判定部(112a乃至114a)から上記タスク識別符号を受け付けてもよい。そして、タスク設定テーブル(112b乃至114b)は、当該識別符号に該当するタスクに関する開始演算ノード番号201と終了演算ノード番号202とを、タスク実行判定部(112a乃至114a)に提供してもよい。
各タスク実行判定部(112a乃至114a)は、当該タスク実行判定部を有するタスク制御部(112乃至114)が制御対象とする上記演算部(104乃至106)において、タスクを実行可能であるか否かを判定する。より具体的には、各タスク実行判定部(112a乃至114a)は、制御対象である上記演算部が、タスクを実行可能なタイミングを判定する。
本実施形態において、タスク制御部112が制御対象とする上記演算部は、演算部104である。同様に、タスク制御部113が制御対象とする上記演算部は、演算部105である。同様に、タスク制御部114が制御対象とする上記演算部は、演算部106である。
上記各タスク実行判定部(112a乃至114a)は、各演算部(演算部104乃至106)のステータス情報と、上記タスク設定テーブルから提供された開始演算ノード番号及び終了演算ノード番号とに基づいて、各演算部(演算部104乃至106)がタスクを実行可能なタイミングを判定する。係るタイミングの具体的な判定方法については、後述する。なお、本実施形態における各タスク実行判定部(112a乃至114a)は、タスク制御部(112乃至114)と通信可能に接続されている各構成要素と、通信可能である。
次に、上記のように構成された本実施形態における演算装置100の動作について説明する。以下の説明においては、上記第1のメモリ部102に、演算部(104乃至106)における演算処理の対象となるデータが格納されていることを想定する。
また、以下の説明においては、説明の便宜上、実行されるタスクの数が2つである場合を想定する。2つのタスクのうち、第1のタスク(以下「タスクA」と称する場合がある)は、演算部104、105、及び、106において実行されることを想定する。また、2つのタスクのうち、第2のタスク(以下「タスクB」と称する場合がある)は、演算部105、及び演算部106において実行されることを想定する。
また、以下の説明においては、演算制御部101から出力される、特定のタスクの実行を指定するコマンドを「タスクコマンド」と称する。演算制御部101から出力される、タスクAの実行を指定する上記コマンドを、タスクコマンドAと称する。同様に、演算制御部101から出力される、タスクBの実行を指定する上記コマンドを、タスクコマンドBと称する。
上記タスクコマンドは、図3に例示するように、当該タスクコマンドより実行されるタスク(この場合はタスクAまたはタスクB)を判別可能なタスク識別符号(インデックス等)301を有する。
また、上記タスクコマンドは、当該タスクコマンドにより実行が指定されたタスク(この場合はタスクAまたはタスクB)と実行順序において依存関係がある他のタスクを指定するタスク依存関係情報を有する。より具体的には、タスク依存関係情報は、図3に例示する前タスク依存情報302と、後タスク依存情報303とを含む。
前タスク依存情報302は、上記コマンドにおいて指定されたタスクと、係るタスクより前に実行されるタスクとの間に依存関係が存在するか否かを表す情報である。また、後タスク依存情報は、上記コマンドにおいて指定されたタスクと、係るタスクより後に実行されるタスクとの間に依存関係が存在するか否かを表す情報である。
以下、上記タスクコマンドにおいて指定されたタスクに対して、前タスク依存情報が設定されたタスクを「前依存タスク」と称する場合がある。また、上記コマンドにおいて指定されたタスクに対して、後タスク依存情報が設定されたタスクを「後依存タスク」と称する場合がある。上記タスクコマンドには、タスク識別符号301、前タスク依存情報302、後タスク依存情報303以外に、タスクの実行に関する任意のデータが含まれてもよい。
以下の説明においては、図4または図5に例示するタスクコマンドA、タスクコマンドBが、演算制御部101より出力されること想定とする。
図4に例示する具体例においては、タスクコマンドA(401)には、タスク識別符号として「タスクA」が設定され、タスクコマンドB(402)には、タスク識別符号として「タスクB」が設定される。そして、図4に例示する具体例においては、これらのタスクコマンドA、タスクコマンドBには、タスク依存関係情報が設定されていない。これより、各演算部(104乃至106)は、タスクAに関する演算処理とタスクBに関する演算処理とを独立して実行可能である。
図5に例示する具体例においては、タスクコマンドA(501)には、タスク識別符号として「タスクA」が設定され、タスクコマンドB(502)には、タスク識別符号として「タスクB」が設定される。そして、タスクコマンドAには、後タスク依存情報303として「タスクB」が設定されており、タスクコマンドBには、前タスク依存情報302として「タスクA」が設定されている。この場合、各演算部(104乃至106)は、タスクAに関する演算処理の実行が完了した後に、タスクBに関する演算処理を実行する必要がある。
また、上記タスク設定テーブル(112b乃至114b)には、図6に例示するように、タスクAに対する開始演算ノード番号として、「#0」が、終了演算ノード番号として「#2」が格納されていることを想定する。また、上記タスク設定テーブル(112b乃至114b)には、図6に例示するように、タスクBに対する開始演算ノード番号として、「#1」が、終了演算ノード番号として「#2」が予め格納されていることを想定する。
演算ノード番号「#0」、「#1」、及び、「#2」は、それぞれ、演算部104、演算部105、及び、演算部106を示す。演算ノード番号と、各演算部との関係は、予めタスク設定テーブル(112b乃至114b)や、タスク制御部(112乃至114)に設定されていてもよい。
また、以下においては、開始演算ノード番号に該当する開始演算部から、演算ノード番号が増大する順に、順次終了演算ノード番号に該当する終了演算部まで、タスクに関する演算処理が実行されることを前提とする。即ち、タスクAについては、演算ノード番号が「#0」、「#1」、「#2」の順に、それぞれの演算ノード番号に該当する演算部における処理が実行される。また、タスクBについては、演算ノード番号が、「#1」、「#2」の順に、それぞれの演算ノード番号に該当する演算部における処理が実行される。
それぞれのタスク(タスクA及びタスクB)について、各演算部(104乃至106)において実行される処理の具体的な内容は、適宜定められてよい。
また、以下の説明においては、各演算部(104乃至106)における演算処理の実行状態を表すステータス情報が各演算部(104乃至106)から、それぞれタスク制御部(112乃至114)に入力される。係るステータス情報は、「待機中」、「処理実行中」、及び、「処理終了」を表す情報である。下記説明においては、「待機中」を表すステータス情報に「0」が、「処理実行中」を表すステータス情報に「1」が、「処理終了」を表すステータス情報に「2」が、それぞれ割り当てられることを想定する。なお、本実施形態はこれには限定されず、ステータス情報を表現する形式は、適宜定められてよい。また、本実施形態においては、各演算部(104乃至106)に関して、「待機中」、「処理実行中」、及び、「処理終了」以外の状態を表すステータス情報が、タスク制御部(112乃至114)に入力されてもよい。
以下、主に各タスク制御部(112乃至114)の動作を中心に、本実施形態における演算装置100の動作について説明する。
まず、演算制御部101が、タスクAとタスクBとの実行を指定するコマンド(タスクコマンドA、タスクコマンドB)をそれぞれ生成する。そして、演算制御部101は、タスクコマンドA、及び、タスクコマンドBを、FIFO107乃至109、並びに、タスク制御部(112乃至114)に入力する。
各FIFO107乃至109は、入力されたタスクコマンドA及びタスクコマンドBを保持する。同様に、各タスク制御部(112乃至114)は、入力されたタスクコマンドA及びタスクコマンドBを保持してもよい。
各タスク制御部(112乃至114)は、タスクコマンドAが入力された場合、下記ステップ(図7乃至図9に例示)に従って、各タスク制御部(112乃至114)が制御対象とする演算部(104乃至106)において、タスクAが実行可能であるか否かを判定する。
タスクコマンドAが入力された場合、各タスク制御部(112乃至114)は、それぞれが有するタスク設定テーブル(112b乃至114b)を参照し、タスクAに関して設定された情報を取得する(ステップS701)。より具体的には、各タスク制御部(112乃至114)はそれぞれ、タスク設定テーブル(112b乃至114b)から、タスクAに対する開始演算ノード番号と、終了演算ノード番号とを読み出す。この場合、図6に例示するように、タスクAに対する開始演算ノード番号201には「#0」(演算部104に対応)が、終了演算ノード番号には「#2」(演算部106に対応)が設定されている。
次に、各タスク制御部(112乃至114)は、タスク設定テーブル(112b乃至114b)の設定に基づいて、各演算部(104乃至106)が、タスクコマンドにおいて指定されたタスクの処理に含まれるか否かを確認する(ステップS702)。より具体的には、各タスク制御部(112乃至114)は、例えば、それぞれの制御対象である各演算部(104乃至106)が、タスクAに関する演算処理を実行する演算部として指定されているか否かを確認する。
上記ステップS702における確認の結果、制御対象である演算部がタスク(例えばタスクA)に関する演算処理を実行しない場合(ステップS703においてNO)、各タスク制御部(112乃至114)は、ステップS701に戻って処理を実行する。この場合、例えば、次のタスク(この場合はタスクB)についてステップS701から処理を実行してもよい。また、全てのタスクについて処理を実行した場合は、演算制御部101からの次のタスクコマンドの入力を待ってもよい。
タスクAについては、各演算部(104乃至106)が、タスクA処理に関する演算処理を実行する演算部として指定されている。よって、各タスク制御部(112乃至114)によるステップS703における確認結果は、「YES」(「含まれる」)となる。
上記ステップS703における確認結果がYESの場合、各タスク制御部(112乃至114)は、演算部(104乃至106)のステータス情報を取得する(ステップS704)。この場合、タスクコマンドAが入力された時点では、各演算部(104乃至106)は演算処理を実行していないので、各演算部(104乃至106)のステータス情報は「待機中(0)」を表す。
次に、各タスク制御部(112乃至114)は、ステップS704において取得したステータス情報を用いて、各演算部(104乃至106)がタスクを実行可能であるか否かを判定する(ステップS705)。より具体的には、各タスク制御部(112乃至114)は、それぞれの制御対象である各演算部(104乃至106)が、タスクAに関する演算処理を実行可能であるか否かを判定する。
以下、図8に例示するフローチャートを参照してステップS705における処理について説明する。まず、各タスク制御部(112乃至114)は、それぞれの制御対象である演算部(104乃至106)に関するステータス情報が、「処理実行中(1)」であるか否かを確認する(ステップS801)。この場合、上記ステップS704の結果から、各演算部(104乃至106)に関するステータス情報は「待機中(0)」を表し、ステップS802における確認結果は「NO」となる。ステップS801における確認の結果、ステップS802において「YES」と判定された場合、当該制御対象である演算部は、何らかのタスクに関する演算処理を実行中である。よって、各タスク制御部(112乃至114)は、それぞれの制御対象である演算部(104乃至106)に対するタスクの投入(入力)は不可であると判定する(ステップS809)。
ステップS802においてNOの場合、タスク制御部(112乃至114)は、それぞれの制御対象である演算部(104乃至106)が、タスクコマンドにより指定されたタスクの開始演算部に該当するか否かを確認する(ステップS803)。この場合、タスク制御部(112乃至114)は、それぞれの制御対象である演算部(104乃至106)がタスクAの開始演算部に該当するか否かを判定する。
タスク設定テーブル(112b乃至114b)には、タスクAの開始演算ノード番号が「#0」と設定されている。これより、開始演算部は演算部104である。よって、ステップS802における確認の結果、タスク制御部112は制御対象である演算部104が、タスクAの開始演算部に該当すると判定する(ステップS804においてYES)。
また、この場合、他のタスク制御部113、及び、タスク制御部114は、ステップS80における確認の結果、制御対象である演算部(演算部105、演算部106)が、タスクAの開始演算部に該当しないと判定する(ステップS804においてNO)。
この場合、タスク制御部113及び114は、各演算部(演算部105及び106)の前段の演算部において、タスクAに関する処理が完了しているか否かを確認する(ステップS806)。
より具体的には、タスク制御部113は、例えば、タスク設定テーブル113bを参照することにより、制御対象である演算部105の前段となる演算部(演算部104)を特定する。タスク制御部113は、演算部105の演算ノード番号(「#1」)を参照し、係る演算ノード番号より一つ前の演算ノード番号(「#0」)に対応する演算部104を特定してもよい。
そして、タスク制御部113は、当該演算部104のステータス情報を参照することにより、タスクAに関する演算処理が終了しているか否かを確認する。この場合、演算部104におけるタスクAに関する演算処理は終了していないので、タスク制御部113は、ステップS807においてNOと判定する。
同様に、タスク制御部114は、演算部106に対する前段の演算部(演算部105)において、タスクAに関する演算処理が終了していないので、ステップS807においてNOと判定する。
これにより、タスク制御部113、及び、タスク制御部114は、制御対象である演算部(演算部105及び106)に対するタスクAの投入は不可であると判定する(ステップS809)。
図7に戻って、上記ステップS809の結果、タスク制御部113、及び、タスク制御部114は、演算部105及び106におけるタスクAの処理を抑制する(ステップS710)。
再び図8に戻って、次に、タスク制御部112は、タスクコマンドより指定されたタスク(この場合はタスクA)に関して、依存関係にあるタスクを確認する(ステップS805)。以下、図9を参照して、ステップS805における処理について説明する。
まず、タスク制御部112は、演算制御部101から入力されたタスクコマンド(この場合タスクコマンドA)に設定されたタスク依存関係情報(図3における302、303)を参照する。そして、タスク制御部112は、タスクAと依存関係があるタスクが存在するか否かを確認する(ステップS901)。
この場合、タスクコマンドAには前タスク依存情報が設定されていないことから、タスク制御部112は依存関係にある前依存タスクが無いと判定する(ステップS902においてNO)。
そして、タスク制御部112は、制御対象である演算部104に対してタスク(この場合はタスクA)を投入可能であると判定する(ステップS903)。即ち、タスク制御部112は、制御対象である演算部104においてタスクAを実行可能であると判定する。ステップS902においてYESの場合の動作については、後述する。
再び図7に戻り、ステップS903の判定結果から、タスク制御部112は、ステップS705において、制御対象である演算部104に対してタスクAを投入可能であると判定する(ステップS706においてYES)。
次に、タスク制御部112は、演算部104に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部112は、FIFO107を制御して、FIFO107が保持するタスクコマンドAを演算部104に出力する。タスク制御部112は、必要に応じて、第1のメモリ部102から、タスクAの実行に必要なデータを読み込むよう、演算部104を制御してもよい。
ステップS708における処理の結果、演算部104において、タスクAに関する演算処理が実行される。演算部104における、タスクAに関する演算処理の結果は、データバッファ110に一旦格納される。データバッファ110がほぼ演算部104の演算結果で満たされた場合(空き容量が少なくなった場合)は、データバッファ110が、特定の信号(「AlmostFull」信号)を演算部104に出力する。この場合、演算部104における演算処理はストールする。データバッファ110が「AlmostFull」信号を出力する空き容量のサイズは、適宜設定可能としてよい。
タスク制御部112は、ステップS708の後、次のタスクの制御へ遷移する(ステップS709)。より具体的には、タスク制御部112は、例えば、演算部104のステータス情報を確認し、この場合はタスクAに関する演算処理の終了を待機する。そして、タスク設定テーブル112bと、入力されたタスクコマンドとを参照し、ステップS701から次のタスク(この場合はタスクB)に関する制御を開始する。
演算部104において、タスクAに関する処理が終了すると、演算部104のステータス情報が「処理終了(2)」となる。
上記ステップS710において制御対象である演算部105に対するタスクAの投入を抑制したタスク制御部113は、再びステップS704において、演算部104のステータス情報を取得する。この場合、係るステータス情報は「処理終了(2)」である。
次に、タスク制御部113は、ステップS705(ステップS801乃至S806)の処理を実行する。その結果、タスク制御部113は、前段の演算部104においてタスクAに関する演算処理が終了していることから、演算部105にタスクAを投入可能であると判定する(ステップS808)。即ち、この場合、ステップS706における判定結果がYESとなる。
この際、タスク制御部114は、再びステップS704乃至S706を実行する。この場合、演算部106に対する前段の演算部105において、タスクAに関する演算処理が終了していない。よってタスク制御部114は、演算部106に対するタスクAの投入は不可であると判定する。
次に、タスク制御部113は、制御対象である演算部105に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部113は、FIFO108を制御して、FIFO108が保持するタスクコマンドAを演算部105に出力する。また、タスク制御部113は、データバッファ110を制御して、演算部104の出力(演算結果)を、演算部105に出力する。タスク制御部113は、必要に応じて、第1のメモリ部102から、タスクAの実行に必要なデータを読み込むよう、演算部105を制御してもよい。
ステップS708における処理の結果、演算部105において、タスクAに関する演算処理が実行される。演算部105におけるタスクAに関する演算処理の結果は、データバッファ111に一旦格納される。データバッファ111がほぼ演算部105の演算結果で満たされた場合(空き容量が少なくなった場合)は、データバッファ111が「AlmostFull」の信号を演算部105に出力する。この場合、演算部105における演算処理はストールする。データバッファ111が「AlmostFull」信号を出力する空き容量のサイズは、適宜設定可能である。
タスク制御部113は、ステップS708の後、次のタスクの制御へ遷移する(ステップS709)。より具体的には、タスク制御部113は、例えば、演算部105のステータス情報を確認し、この場合はタスクAに関する演算処理の終了を待機する。そして、タスク設定テーブル113bと、入力されたタスクコマンドとを参照し、ステップS701から次のタスク(この場合はタスクB)に関する制御を開始する。
演算部104におけるタスクAに関する演算処理が終了した際、タスク制御部112は、ステップS701から処理を開始する。この場合、タスク制御部112は、タスク設定テーブル112bを参照する(ステップS701)。タスク制御部112は、タスク設定テーブル112bの内容と、演算制御部101から出力されたタスクコマンドとに基づいて、次のタスクは「タスクB」であると確認する。
次に、タスク制御部112は、制御対象である演算部104が、タスクBの処理に含まれるか確認する(ステップS702)。タスク設定テーブル112bを参照すると、タスクBの開始演算ノード番号は「#1」である。演算ノード番号「#1」は、演算部105を示す。このため、タスク制御部112は、制御対象である演算部104が「タスクB」の処理に含まれないと判定する(ステップS703においてNO)。この場合、タスク制御部112と、演算部104とは、演算制御部101から次のタスクが出力されるまで、待機状態となる。
演算部105においてタスクAに関する処理が終了すると、演算部105のステータス情報が「処理終了(2)」を表すように更新される。
上記ステップS710において制御対象である演算部106に対するタスクAの投入を抑制したタスク制御部114は、再びステップS704において、演算部105のステータス情報を取得する。この場合、係るステータス情報は「処理終了(2)」を表す。
次に、タスク制御部114は、ステップS705(ステップS801乃至S807)の処理を実行する。その結果、タスク制御部114は、前段の演算部105においてタスクAに関する演算処理が終了していることから、演算部106にタスクAを投入可能であると判定する(ステップS808)。
次に、タスク制御部114は、制御対象である演算部106に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部114は、FIFO109を制御して、FIFO109が保持するタスクコマンドAを演算部106に出力する。また、タスク制御部114は、データバッファ111を制御して、演算部105の出力(演算結果)を、演算部106に出力する。タスク制御部114は、必要に応じて、第1のメモリ部102から、タスクAの実行に必要なデータを読み込むよう、演算部106を制御してもよい。
ステップS708における処理の結果、演算部106において、タスクAに関する演算処理が実行される。演算部106におけるタスクAに関する演算処理の結果は、第2のメモリ部103に出力されてもよい。
タスク制御部114は、ステップS708の後、次のタスクの制御へ遷移する(ステップS709)。より具体的には、タスク制御部114は、例えば、演算部106のステータス情報を確認し、この場合はタスクAに関する演算処理の終了を待機する。そして、タスク設定テーブル114bと、入力されたタスクコマンドとを参照し、ステップS701から次のタスク(この場合はタスクB)に関する制御を開始する。
演算部105におけるタスクAに関する演算処理が終了した際、タスク制御部113は、ステップS701から処理を開始する。この場合、タスク制御部113は、タスク設定テーブル113bを参照する(ステップS701)。タスク制御部113は、タスク設定テーブル113bの内容と、演算制御部101から出力されたタスクコマンドとに基づいて、次のタスクは「タスクB」であると確認する。
次に、タスク制御部113は、制御対象である演算部105が、タスクBの処理に含まれるか否かを確認する(ステップS702)。タスク設定テーブル113bを参照すると、タスクBの開始演算ノード番号は「#1」である。演算ノード番号「#1」は、演算部105を示す。このため、タスク制御部113は、制御対象である演算部105が「タスクB」の処理に含まれると判定する(ステップS703においてYES)。
次に、タスク制御部113は、ステップS704及びS705を実行する。この際、タスク制御部113は、ステップS803において、制御対象である演算部105が、タスクBの開始演算部であることを確認する(ステップS804においてYES)。
次に、タスク制御部113は、ステップS805を実行する。この際、タスク制御部113は、タスクコマンドBのタスク依存関係情報(図3における302、303)を参照し、依存関係があるタスクが存在するか否か確認する(ステップS901)。
まず、図4に示すタスクコマンドA(401)、タスクコマンドB(402)のように、タスク依存関係情報が設定されていない場合について説明する。この場合、タスクBとタスクAは独立して実行可能である。この場合、タスク制御部113は依存関係にあるタスクが無いと判定する(ステップS902においてNO)。
そして、タスク制御部113は、制御対象である演算部105に対してタスク(この場合はタスクB)を投入可能(即ち、演算部105がタスクBを実行可能)であると判定する(ステップS903)。
この場合、タスク制御部113は、制御対象である演算部105に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部113は、FIFO108を制御して、FIFO108が保持するタスクコマンドBを演算部105に出力する。タスク制御部113は、必要に応じて、第1のメモリ部102から、タスクBの実行に必要なデータを読み込むよう、演算部105を制御してもよい。
ステップS708における処理の結果、演算部105において、タスクBに関する演算処理が実行される。以降の処理は、上記説明した演算部105におけるタスクAに関する演算処理と同様である。
次に、仮に、図5に示すタスクコマンドA(501)、タスクコマンドB(502)のように、タスク依存関係情報が設定された場合について説明する。この場合、タスクBとタスクAとの間に依存関係が存在することから、タスクBは、タスクAの終了後に実行される必要がある。この場合、タスク制御部113がステップS901を実行した結果、ステップS902における確認結果がYESとなる。
タスク制御部113は、タスク設定テーブル113bを参照し、タスクBと依存関係があるタスク(タスクA)の終了演算部を特定する(ステップS904)。タスクAの終了演算部は、演算部106(終了演算ノード番号が「#2」)である。
次に、タスク制御部113は、ステップS904において特定した演算部(演算部106)のステータス情報を確認する。そして、当該演算部106のステータス情報に基づいて、演算部106において、タスクBと依存関係のあるタスク(タスクA)に関する演算処理が終了しているか確認する(ステップS905)。
この段階では、上記の通り、演算部105においてタスクAに関する演算処理が終了しているものの、演算部106におけるタスクAに関する処理は終了していない場合がある。演算部106におけるタスクAに関する処理は終了していない場合、ステップS906における確認結果はNOとなる。この場合、タスク制御部113は、演算部105に対するタスクBの投入は不可であると判定する(ステップS907)。この場合、タスク制御部113は、タスクBの実行を抑制する(ステップS710)。より具体的には、タスク制御部113は、例えば、FIFO108からのタスクコマンドBの出力等を抑制してもよい。
次に、演算部106においてタスクAに関する処理が終了すると、演算部106のステータス情報が「処理終了(2)」となる。
再び、図5に示すタスクコマンドA(501)、タスクコマンドB(502)のように、タスク依存関係情報が設定された場合について説明する。
上記ステップS710において、制御対象である演算部106に対するタスクBの投入を抑制したタスク制御部113は、ステップS704において、演算部106のステータス情報を取得する。この場合、係るステータス情報は「処理終了(2)」である。
次に、タスク制御部113は、ステップS705(ステップS801乃至S805)の処理を実行する。その結果、タスク制御部113は、タスクBと依存関係のあるタスクAに関する演算処理が終了している(ステップS901乃至ステップS905)と判定する。これより、タスク制御部113は、演算部105にタスクBを投入可能であると判定する(ステップS906においてYES)。即ち、この場合、ステップS706における判定結果がYESとなる。
次に、タスク制御部113は、制御対象である演算部105に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部113は、FIFO108を制御して、FIFO108が保持するタスクコマンドBを演算部105に出力する。また、タスク制御部113は、データバッファ110を制御して、データバッファ110の内容を、演算部105に出力してもよい。タスク制御部113は、必要に応じて、第1のメモリ部102から、タスクBの実行に必要なデータを読み込むよう、演算部105を制御してもよい。
ステップS708における処理の結果、演算部105において、タスクBに関する演算処理が実行される。演算部105におけるタスクBに関する演算処理の結果は、データバッファ111に一旦格納される。以下の処理は、上記説明した演算部105におけるタスクAの処理と同様である。
演算部106におけるタスクAに関する演算処理が終了した際、タスク制御部114は、ステップS701から処理を開始する。この場合、タスク制御部114は、タスク設定テーブル114bを参照する(ステップS701)。タスク制御部114は、タスク設定テーブル114bの内容と、演算制御部101から出力されたタスクコマンドに基づいて、次のタスクは「タスクB」であると確認する。
次に、タスク制御部114は、制御対象である演算部106が、タスクBの処理に含まれるか確認する(ステップS702)。タスク設定テーブル112bを参照すると、タスクBの終了演算ノード番号は「#2」である。このため、タスク制御部114は、制御対象である演算部106が「タスクB」の処理に含まれると判定する(ステップS703においてYES)。
次に、タスク制御部114は、ステップS704及びS705を実行する。この際、タスク制御部114は、ステップS803において、制御対象である演算部106がタスクBの開始演算部では無いことを確認する(ステップS804においてNO)。
この場合、タスク制御部114及は、演算部106の前段の演算部105において、タスクBに関する処理が完了しているか確認する(ステップS806)。この場合、演算部105におけるタスクBに関する演算処理は終了していないので、タスク制御部114は、ステップS807においてNOと判定する。これにより、タスク制御部114は、制御対象である演算部106に対するタスクBの投入は不可であると判定する(ステップS809)。
図7に戻って上記ステップS809の結果、演算部106におけるタスクBの処理は抑制される(ステップS710)。
次に、演算部105においてタスクBに関する処理が終了すると、演算部105のステータス情報が「処理終了(2)」となる。
上記ステップS710において制御対象である演算部106に対するタスクBの投入を抑制したタスク制御部114は、再びステップS704において、演算部105のステータス情報を取得する。この場合、係るステータス情報は「処理終了(2)」である。
次に、タスク制御部114は、ステップS705(ステップS801乃至S807)の処理を実行する。その結果、タスク制御部114は、前段の演算部105においてタスクBに関する演算処理が終了していることから、演算部106にタスクBを投入可能であると判定する(ステップS808)。
次に、タスク制御部114は、制御対象である演算部106に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部114は、FIFO109を制御して、FIFO109が保持するタスクコマンドBを演算部106に出力する。また、タスク制御部114は、データバッファ111を制御して、演算部105の出力(演算結果)を、演算部106に出力する。タスク制御部114は、必要に応じて、第1のメモリ部102から、タスクBの実行に必要なデータを読み込むよう、演算部106を制御してもよい。
ステップS708における処理の結果、演算部106において、タスクBに関する演算処理が実行される。演算部106におけるタスクBに関する演算処理の結果は、第2のメモリ部103に出力されてもよい。
演算部106において、タスクBの処理が終了すると、演算部106のステータス「処理終了(2)」となり、演算制御部101から投入されたタスクA、タスクBに関する演算処理が終了する。
以上説明したように、本実施形態によれば、演算装置100において、各演算部(104乃至106)が効率的に稼働するようにタスクの実行が制御される。ここで、係る演算装置100は、複数の演算部(104乃至106)が、データバッファ(110乃至111)を介してパイプライン状に接続された構成を有する。即ち、本実施形態における演算装置100は、複数の演算部(104乃至106)を用いてパイプライン的に演算処理を実行するタスクを実行する際、各演算部におけるアイドル状態やレイテンシを削減することが可能である。これにより、本実施形態における演算装置100は、パイプラインのオーバーヘッドを低減可能である。
より具体的には、本実施形態における演算装置100は、特定のタスクに関する全ての演算処理の終了を待たずに、一部の演算部において、当該特定のタスクと依存関係の無い他のタスクに関する演算処理を実行可能である。
上記説明した具体例においては、演算装置100は、例えば、タスクAとタスクBとの間に依存関係が存在しない場合、タスクAの処理が終了する前に、一部の演算部においてタスクBに関する演算処理を実行可能である。より具体的には、演算装置100は、演算部106におけるタスクAに関する演算処理が終了する前に、一部の演算部(例えば、演算部105)において、タスクBに関する演算処理を実行可能である。この場合、演算装置100は、図18に例示するように、タスクAに関する演算処理が完了する前に、タスクBに関する演算処理を開始可能である。これより、本実施形態における演算装置100は、全体の処理時間を短縮可能であり、また、各演算部がアイドル状態となる期間を短くすることができる。
また、本実施形態における各タスク制御部(112乃至114)は、各演算部(104乃至106)においてタスクに関する演算処理が実行されるか否かを制御する。即ち、各タスク制御部が詳細なタスク制御を実行されることから、上位の制御系(例えば、演算制御部101等)におけるタスク制御に関する負荷が増大しない。
以上より、本実施形態における演算装置100は、タスクに関する演算処理の効率を向上し、演算処理を高速化可能である。その理由は、各演算部(104乃至106)の実行状態(ステータス)と、各タスクの設定情報(各タスク設定テーブル(112b乃至114b)、及びタスクコマンド等)とに基づいて、演算部毎に、タスクの実行が制御されるからである。
<第2の実施形態>
次に、本願発明の第2の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な構成を中心に説明する。上述した第1の実施形態と同様な構成に関する重複する説明は省略される。
本実施形態は、上記第1の実施形態と、各タスク設定テーブル(112b乃至114b)に設定される情報の種類のみ異なり、その他は同様である。このため、本実施形態における演算装置100の構成は、上記第1の実施形態における演算装置100と同様としてよい。
上記第1の実施形態においては、図2に例示するように、タスク設定テーブル(112b乃至114b)には、実行されるタスク毎に、各タスクに対する開始演算ノード番号201と、終了演算ノード番号202とが設定される。
これに対して、本実施形態におけるタスク設定テーブル(112b乃至114b)には、図10に例示するように、実行されるタスク毎に、各タスクに対する開始演算ノード番号201と、各タスクが使用する演算部の個数を表す使用演算ノード数1002とが設定される。
各タスク制御部は、特定のタスクに関して、上記開始演算ノード番号201と、使用演算ノード数1002とに基づいて、当該タスクの終了演算部を特定する。この場合、各タスク制御部は、上記開始演算ノード番号201と、使用演算ノード数1002とに基づいて、上記第1の実施形態における終了演算ノード番号を算出してもよい。
本実施形態における各タスク制御部は、上記説明したステップS904において、上記開始演算ノード番号201と、使用演算ノード数1002とに基づいて、当該タスクの終了演算部を特定する。その他の動作については、上記第1の実施形態と同様である。
以上より、本実施形態における演算装置100は、上記第1の実施形態における演算装置100と同様の効果を奏する。また、本実施形態における演算装置100は、終了演算部を直接指定する必要が無く、使用する演算部の個数のみを指定することにより、各演算部においてタスクに関する演算処理の実行を制御可能である。
<第3の実施形態>
次に、本願発明の第3の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。上述した各実施形態と同様な構成についての重複する説明は省略される。
以下、本実施形態について、図11を参照して説明する。
本実施形態は、上記説明した第1の実施形態の変形例である。上記第1の実施形態における演算装置100と、本実施形態における演算装置1100との差分は、データバッファ(図11における1104、1105)と、タスク制御部(図11における1101、1102、及び、1103)とが接続されない点である。
上記第1の実施形態においては、タスク制御部(例えば、タスク制御部113)が、データバッファ(例えばデータバッファ110)を制御することにより、各演算部(例えば演算部105)におけるタスクの実行に必要なデータがデータバッファから出力される。または、タスク制御部(例えば、タスク制御部113)が、各演算部におけるタスクの実行に必要なデータが格納されたデータバッファの領域(アドレス等)を各演算部に通知することにより、各演算部が、係る領域からデータを取得する。
これに対して、本実施形態における演算装置1100は、タスク制御部(1101乃至1103)は、データバッファ(1104、1105)を直接的に制御しない点において、上記第1の実施形態における演算装置100と異なる。
本実施形態においては、各データバッファ(1104、1105)に接続された前段の演算部(104、105)から、特殊なコマンドがデータバッファに出力される。
具体的には、データバッファ1104の前段の演算部104は、あるタスクに関する処理を終了した際に、特殊コマンド「Sync」をデータバッファ1104に出力(投入)する。同様に、データバッファ1105の前段の演算部105は、あるタスクに関する処理を終了した際に、特殊コマンド「Sync」をデータバッファ1105に出力(投入)する。
各データバッファ(1104、1105)は、特殊コマンド(「Sync」)の投入より前に投入されたデータが全て読み出されるまで、特殊コマンドが投入された後に投入されたデータの読み出しを禁止する。より具体的には、本実施形態においては、図12に例示するように、演算部105は、前段のデータバッファ1104から、特殊コマンド(「Sync」)が投入されるより前に投入されたデータを取得可能である。図12には例示していないが、演算部106についても同様である。
上記のように構成された本実施形態における演算装置1100は、上記説明した第1の実施形態と同様の演算処理を実行可能である。その理由は、各データバッファ(1104,1105)が、特殊コマンドが投入された後に投入されたデータへのアクセスを禁止することにより、タスク間におけるデータへのアクセスを排他制御することが可能であるからである。
なお、上記説明した特殊コマンドは「Sync」に限定されない。本実施形態における演算装置1100は、「Sync」以外の任意の識別符号をコマンドとして採用してよい。
<第4の実施形態>
次に、本願発明の第4の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。上述した各実施形態と同様な構成についての重複する説明は省略される。
以下、図13を参照して、本実施形態における演算装置1300について説明する。
演算制御部1301は、コマンドバッファ1302と接続されている。以下においてコマンドバッファ1302を、「FIFO1302」と称する場合がある。FIFO1302は、演算部1307と接続されている。他の演算部(1308、1309)に対しては、演算制御部1301から制御信号(タスクコマンド)が直接的には入力されない。
演算部(演算部1307、演算部1308、及び、演算部1309)は、あるタスクに関する演算処理を終了する際、当該タスクに関するタスクコマンドを、後段の演算部に受け渡す(転送する)。即ち、本実施形態においては、後段の演算部に対して、前段の演算部から、タスクコマンドがデータバッファを介して転送される。
より具体的には、演算部1308に対しては、前段の演算部1307から、データバッファ1305を介して、タスクコマンドが受け渡される(転送される)。また、演算部1309に対しては、前段の演算部1308から、データバッファ1306を介して、タスクコマンドが受け渡される。本実施形態における演算部(1307乃至1309)のその他の構成は、上記各実施形態と同様としてよい。
本実施形態におけるタスク制御部1303は、制御対象である演算部1307におけるステータスを確認して、後段の演算部1308に対してタスクを投入可能か否か判断する。同様に、本実施形態におけるタスク制御部1304は、制御対象である演算部1308におけるステータスを確認して、後段の演算部1309に対してタスクを投入可能か否か判断する。
本実施形態においては、開始演算部が演算部1307に固定される。このため、各タスク制御部(1303、1304)が有するタスク設定テーブル(1303b、1304b)には、終了演算ノード番号、あるいは、使用演算ノード数のみが格納されてもよい。
本実施形態におけるデータバッファ(1305、1306)は、上記各実施形態におけるデータバッファと同様としてもよい。
以下、上記のように構成された本実施形態における演算装置1300の動作について説明する。
まず、第1のメモリ部102には、演算部(1307乃至1309)における演算処理の対象となるデータが格納されていることを想定する。
説明の便宜上、実行されるタスクは2つ(タスクA、タスクB)とする。係る2つのタスクの内、第1のタスク(タスクA)は、演算部1307、演算部1308、及び、演算部1309において実行される。第2のタスク(タスクB)は、演算部1307、演算部1308、及び、演算部1309において実行される。
タスクA、及び、タスクBは、任意の演算処理を実行してよい。タスクAに関するコマンドをタスクコマンドA、タスクBに関するコマンドをタスクコマンドBとする。タスクコマンドA、タスクコマンドBは、上記第1の実施形態と同様、タスク識別符号301と、前タスク依存情報302と、後タスク依存情報303とを含む。
各タスク制御部(1303、1304)におけるタスク設定テーブル(1303b、1304b)には、タスクA、及び、タスクBに対する終了演算ノード番号(図2に例示する符号202)として「#2」が格納されている。終了演算ノード番号の「#2」は、演算部1309を表す。
上記各実施形態と同様、各演算部(1307乃至1309)のステータスとして、待機中(「0」)、処理実行中(「1」)、処理終了(「2」)のいずれかが、タスク制御部(1303、1304)に入力される。
以下、各演算部(1307乃至1309)におけるタスクA、及び、タスクBの具体的な処理について、図14及び図15に例示するフローチャートを参照して説明する。
図14に例示するフローチャートには、図7に例示するフローチャートに対して、本実施形態におけるタスク制御部(1303、1304)に特有の処理が追加されている。上記第1の実施形態における演算装置100と同様の処理については、上記第1の実施形態において説明したフローチャート(図7乃至図9)を適宜参照して説明する。
まず、演算制御部1301が、タスクA、及び、タスクBの実行を指示するコマンド(タスクコマンドA、タスクコマンドB)を生成する。そして、生成されたタスクコマンドが、FIFO1302、タスク制御部1303、及び、タスク制御部1304に入力される。
FIFO1302にタスクコマンドA、タスクコマンドBが入力された場合、FIFO1302は、それらのタスクコマンドを蓄積する。
タスクコマンドAが入力された場合、タスク制御部(1303、1304)は、まず、上記第1の実施形態におけるタスク制御部(112、113、及び、114)と同様、投入されたタスク(タスクA)の実行可否を判定する。
タスクコマンドAが投入されると、タスク制御部(1303、1304)は、タスク設定テーブル(1303b、1304b)を参照する(ステップS701)。より具体的には、タスク制御部(1303、1304)は、タスク設定テーブル(1303b、1304b)から、終了演算ノード番号(この場合は「#2」)を読み出す。本実施形態においては、上記したように、タスクA、及び、タスクBに対する開始演算部は演算部1307である(開始演算ノード番号は「#0」である)。
そして、タスク制御部(1303、1304)は、制御対象である演算部がタスク(タスクA、タスクB)の処理に含まれるか確認する(ステップS702)。タスク制御部(1303、1304)は、タスク設定テーブル(1303b、1304b)を参照することにより、タスクA、及び、タスクBに関する処理を実行する演算部を表す演算ノード番号を確認してもよい。
この場合、タスクA、タスクB共に全ての演算部(1307乃至1309)を使用して処理されることから、ステップS703における確認結果はYESとなる。
次に、タスク制御部(1303、1304)は、各演算部(1307乃至1309)のステータス(ステータス信号)を取得する。タスク制御部(1303、1304)は、取得したステータスを元に、各演算部(1307乃至1309)における演算処理の状態を確認する(ステップS704)。タスク制御部(1303、1304)は、上記確認した演算ノード番号に相当する演算部に対するステータス信号を確認する。
次に、タスク制御部(1303、1304)は、取得したステータスに基づいて、制御対象である演算部において、タスク(タスクA)に関する演算処理を実行可能か否か判定する(ステップS705)。
タスクコマンドAが投入されたタイミングでは、演算部(1307乃至1309)のステータスは待機中(「0」)である。よって、これらの演算部は、タスクAに関する演算処理を実行可能である。
以下、この場合における、タスク制御部1303の動作について説明する。
開始演算ノード番号の値が「#0」であることから、タスク制御部1303は、演算部1307においてタスクAに関する演算処理を実行可能であると判定する(ステップS706においてYES)。
次に、タスク制御部1303は、演算部1307に対してタスク実行制御信号(タスクコマンド)及び、タスク実行に必要なデータを出力する(ステップS708)。より具体的には、タスク制御部1303は、FIFO1302を制御して、FIFO1302が保持するタスクコマンドAを演算部1307に出力する。タスク制御部1303は、必要に応じて、第1のメモリ部102から、タスクAの実行に必要なデータを読み込むよう、演算部1307を制御してもよい。ステップS708における処理の結果、演算部1307において、タスクAに関する演算処理が実行される。
演算部1307における、タスクAに関する演算処理の結果は、データバッファ1305に保持される。データバッファ1305がほぼ演算部1307の演算結果で満たされた場合(空き容量が少なくなった場合)は、データバッファ1305は、「AlmostFull」の信号を演算部1307に出力する。この場合、演算部1307における演算処理はストールする。データバッファ1305が「AlmostFull」信号を出力する空き容量は、適宜設定可能である。
以下、演算部1307における演算処理について図15を参照して説明する。
まず、FIFO1302からタスクコマンド(タスクコマンドA)が演算部1307に入力された際、演算部1307は、ステータスを実行中(「1」)に変更する(ステップS1501)。係るステータスの変更は、後述するステップS1503において実行してもよい。
次に、演算部1307は、タスクコマンドにより指定されたタスク(タスクA)の実行に必要なデータを読み出す(ステップS1502)。この場合、演算部1307は、第1のメモリ部102から、タスクAの実行に必要なデータを読み出してもよい。
次に、演算部1307は、タスクコマンド(タスクコマンドA)により指定されたタスクに関する演算処理を実行する(ステップS1503)。
タスクコマンド(タスクコマンドA)により指定されたタスクに関する演算処理が終了する際、演算部1307は、データバッファ1305に対して、タスクコマンドを発行する(ステップS1504)。この場合、演算部1307は、データバッファ1305に対して、タスクコマンドAを出力してもよい。
また、タスクに関する演算処理が終了する際、演算部1307は、ステータスを処理終了(「2」)に変更する(ステップS1505)。この場合、演算部1307は、係るステータスを、タスク制御部(1303、1304)に通知してもよい。
次に、タスク制御部1303は、後段の演算部1308に対するタスクAの投入を制御する(ステップS1401)。
より具体的には、演算部1307のステータスが処理終了(「2」)となると、タスク制御部1303は、後段の演算部1308に対して、タスクAを投入可能であると判定する。
この場合、タスク制御部1303は、タスクコマンドAを演算部1308に出力するよう、データバッファ1305を制御する。なお、タスク制御部1303は、データバッファ1305からタスクコマンドA及び演算部1307における演算部結果を取得するよう、演算部1308を制御してもよい。
データバッファ1305からタスクコマンドAが演算部1308に投入されると、演算部1308において、タスクAに関する演算処理が実行される。演算部1308における演算処理の結果は、データバッファ1306に格納される。データバッファ1306がほぼ演算部1308の演算結果で満たされた場合(空き容量が少なくなった場合)は、データバッファ1306は、「AlmostFull」の信号を演算部1308に出力する。この場合、演算部1308における演算処理はストールする。
次に、タスク制御部1303は、ステップS709から処理を続行し、ステップS701乃至S705を実行する。そして、タスク制御部1303は、タスクBが実行可能であるか否かを判定する(ステップS705)。
仮に、タスクコマンドAにおいて、タスクAに対する後タスク依存情報(タスクB)が設定されており、タスクコマンドBにおいて、タスクBに対する前タスク依存情報(タスクA)が設定されている場合、タスクAの演算結果がタスクBにおいて使用される。
この場合、タスク制御部1303は、依存関係があるタスク(タスクBに対するタスクA)が終了していないことから、演算部1307に対するタスクBの投入は不可であると判定する(ステップS706においてNO)。即ち、この場合、演算部1307におけるタスクBに関する演算処理の実行は、タスクAの完了まで抑制される(ステップS710)。
また、仮に、タスクコマンドAに後タスク依存情報が設定されておらず、タスクコマンドBに前タスク依存情報が設定されていない場合、タスクAとタスクBとは独立して処理可能である。
この場合、タスク制御部1303は、上記第1の実施形態において説明したように、演算部1307に対してタスクBを投入可能であると判定する(ステップS706においてYES)。タスク制御部1303は、ステップS708から処理を続行し、演算部1307に対してタスクBが投入される。
タスク制御部1303は、FIFO1302を制御して、FIFO1302が保持するタスクコマンドBを演算部1307に出力する。タスク制御部1303は、必要に応じて、第1のメモリ部102から、タスクBの実行に必要なデータを読み込むよう、演算部1307を制御してもよい。ステップS708における処理の結果、演算部1307において、タスクBに関する演算処理が実行される。この場合、演算部1307は、ステップS1501乃至ステップS1505を実行することにより、タスクBに関する演算処理を実行する。
演算部1307における演算処理の結果は、データバッファ1305に格納される。データバッファ1305がほぼ演算部1307の演算結果で満たされた場合(空き容量が少なくなった場合)は、データバッファ1305は、「AlmostFull」の信号を演算部1307に出力する。この場合、演算部1307における演算処理はストールする。
再度、演算部1308におけるタスクAに関する演算処理に戻って説明する。
演算部1308は、まず、ステータスを実行中(「1」)に変更する(ステップS1501)。係るステータスの変更は、後述するステップS1503において実行してもよい。
次に、演算部1308は、データバッファ1305から取得したタスクコマンドにより指定されたタスク(タスクA)の実行に必要なデータを読み出す(ステップS1502)。この場合、演算部1307は、第1のメモリ部102あるいはデータバッファ1305から、タスクAの実行に必要なデータを読み出してもよい。
次に、演算部1308は、タスクコマンド(タスクコマンドA)により指定されたタスクに関する演算処理を実行する(ステップS1503)。
タスクコマンド(タスクコマンドA)により指定されたタスクに関する演算処理が終了する際、演算部1308は、データバッファ1306に対して、タスクコマンドを発行する(ステップS1504)。この場合、演算部1308は、データバッファ1306に対して、タスクコマンドAを出力してもよい。
また、タスクに関する演算処理が終了する際、演算部1308は、ステータスを処理終了(「2」)に変更する(ステップS1505)。この場合、演算部1308は、係るステータスを、タスク制御部(1303、1304)に通知してもよい。
次に、タスク制御部1304は、後段の演算部1309に対するタスクAの投入を制御する(ステップS1401)。
より具体的には、演算部1308のステータスが処理終了(「2」)となると、タスク制御部1304は、後段の演算部1309に対して、タスクAを投入可能であると判定する。
タスク制御部1304は、タスクコマンドAを演算部1309に出力するよう、データバッファ1306を制御する。なお、この場合、タスク制御部1304は、データバッファ1306からタスクコマンドA及び演算部1308における演算部結果を取得するよう、演算部1309を制御してもよい。
データバッファ1306からタスクコマンドAが演算部1309に投入されると、演算部1309において、タスクAに関する演算処理が実行される。
再度、このタイミングにおけるタスク制御部1303の処理に戻って説明する。
上記説明したように、タスクAとタスクBとの間に依存関係が無い場合、このタイミングにおいて、演算部1307におけるタスクBの処理が完了している可能性がある。この場合、演算部1307は、データバッファ1305にタスクコマンドBを出力する。そして、演算部1307は、自身のステータスを処理終了(「2」)に変更する。
この場合、タスク制御部1303は、ステップS1401において、後段の演算部1308に対するタスクBの投入を制御する(ステップS1401)。
より具体的には、演算部1307のステータスが処理終了(「2」)となると、タスク制御部1303は、後段の演算部1308に対して、タスクBを投入可能であると判定する。
タスク制御部1303は、タスクコマンドBを演算部1308に出力するよう、データバッファ1305を制御する。なお、この場合、タスク制御部1303は、データバッファ1305からタスクコマンドB及び演算部1307における演算部結果を取得するよう、演算部130を制御してもよい。
データバッファ1305からタスクコマンドBが演算部1308に投入されると、演算部1308において、タスクBに関する演算処理が実行される。演算部1308における演算結果は、データバッファ1306に格納される。データバッファ1306がほぼ演算部1308の演算結果で満たされた場合、データバッファ1306は、「AlmostFull」の信号を演算部1308に出力する。この場合、演算部1308はストールする。
演算部1309におけるタスクAの処理に戻って説明する。
演算部1309は、タスクAに関する演算処理を実行する(ステップS1501乃至S1505)。そして、演算部1309は、自身のステータスを処理終了(「2」)に変更する。
ここで、タスクAとタスクBとの間に依存関係が存在する場合、タスク制御部1303は、ステップS710において、演算部1307におけるタスクBの実行を抑制している。
演算部1309のステータスが処理終了(「2」)になった場合、タスクBと依存関係にあるタスクAに関する処理が終了する。よって、この場合、タスク制御部1303は、演算部1307においてタスクBに関する演算処理を実行可能と判定する(ステップS706においてYES)。タスク制御部1303は、ステップS708から処理を続行し、演算部1307に対してタスクBが投入される。
この場合、タスク制御部1303は、FIFO1302を制御して、FIFO1302が保持するタスクコマンドBを演算部1307に出力する。タスク制御部1303は、必要に応じて、第1のメモリ部102から、タスクBの実行に必要なデータを読み込むよう、演算部1307を制御してもよい。ステップS708における処理の結果、演算部1307において、タスクBに関する演算処理が実行される。この場合、演算部1307は、ステップS1501乃至ステップS1505を実行することにより、タスクBに関する演算処理を実行する。以下、上記説明と同様にして、演算部1308、演算部1309においてタスクBに関する演算処理が実行される。
一方、タスクAとタスクBとの間に依存関係が存在しない場合、このタイミングにおいて、演算部1308におけるタスクBの処理が完了している可能性がある。この場合、演算部1308は、データバッファ1306にタスクコマンドBを出力する。そして、演算部1308は、自身のステータスを処理終了(「2」)に変更する。
この場合、タスク制御部1304は、ステップS1401において、後段の演算部1309に対するタスクBの投入を制御する(ステップS1401)。以下、演算部1309において、タスクBの演算処理が実行される。
以上のように構成された本実施形態における演算装置1300は、タスクの実行を開始する先頭の演算部が固定されるものの、より少ない数のタスク制御部(1303、1304)により、各演算部(1307乃至1309)を制御可能である。また、本実施形態における演算装置1300は、コマンドバッファ(FIFO)1302の数も削減可能である。よって、このため、本実施形態における演算装置1300は、よりシンプルな構成により、上記各実施形態における演算装置と同様の効果を奏することが可能である。
<第5の実施形態>
次に、本願発明の第5の実施形態について、図16、及び、図17を参照して説明する。
図16に例示するように、本実施形態における演算装置1600は、演算制御部1601と、複数の演算部(図16における1602、1603、及び、1604)と、データバッファ(図16における1608、1609)と、タスク制御部(図16における1610、1611、及び、1612)と、を備える。本実施形態における演算装置1600は、コマンドバッファ(図16における1605、1606、及び、1607)を更に備えてもよい。以下、各構成要素について説明する。
演算部(1602乃至1604)は、それぞれデータに対する特定の演算処理を実行する、演算処理装置である。演算部(1602乃至1604)において実行される係る演算処理は任意であり、例えば、FFTやフィルタリング等、各種信号処理に関する演算でもよい。演算部(1602乃至1604)は、上記第1の実施形態における演算部(104、105、及び、106)と同様としてもよい。
データバッファ(1608、1609)は、複数の上記演算部の内、第1の演算部(前段の演算部)と、第2の演算部(後段の演算部)との間に接続される。データバッファ(1608、1609)は、上記第1の演算部から出力されるデータと、上記第2の演算部に入力されるデータとを保持可能である。データバッファ(1608、1609)は、例えば、上記第1の演算部における出力側と、第2の上記演算部における入力側との間に接続されてもよい。
より具体的には、データバッファ1608は、演算部1602と、演算部1603との間に接続され、演算部1602からの出力データと、演算部1603に対する入力データとを保持する。この場合、例えば、演算部1602が第1の演算部、演算部1603が第2の演算部に相当すると考えられる。
同様に、データバッファ1609は、演算部1603と、演算部1604との間に接続され、演算部1603からの出力データと、演算部1604に対する入力データとを保持する。この場合、例えば、演算部1603が第1の演算部、演算部1604が第2の演算部に相当すると考えられる。
上記したように、あるデータバッファ(例えば、1608)に対する第2の演算部(例えば、演算部1603)が、他のデータバッファ(例えば、1609)に対する第1の演算部であってもよい。
データバッファ(1608、1609)は、上記第1の実施形態におけるデータバッファ(110、111)と同様としてもよい。
演算制御部1601は、1以上の上記第1の演算部、及び、1以上の上記第2の演算部の少なくともいずれかにおいて実行されるタスクの実行を指定する、タスクコマンドを生成する。なお、係るタスクは、上記データに対して実行される一連の演算処理である。
演算制御部1601は、係るタスクコマンドを、後述する各コマンドバッファ(1605乃至1607)及び、各タスク制御部(1610乃至1612)に対して入力してもよい。演算制御部1601は、上記第1の実施形態における演算制御部101と同様としてもよい。
コマンドバッファ(1605乃至1607)は、上記演算制御部1601から出力される上記タスクコマンドを、上記少なくともいずれかの演算部(1602乃至1604)に対して出力可能に保持する。
本実施形態におけるコマンドバッファは、図16に例示するように、上記各演算部(1602乃至1604)に対して通信可能に接続されてもよい。また、本実施形態におけるコマンドバッファは、図17に例示するように、特定の上記演算部(例えば、1602)に対して接続されてもよい。
コマンドバッファ(1605乃至1607)は、上記第1の実施形態におけるコマンドバッファ(107乃至109)と同様としてもよい。
タスク制御部(1610乃至1612)は、上記タスクコマンドと、タスク設定情報と、各演算部(1602乃至1604)のステータス情報と、に基づいて、上記少なくともいずれかの演算部において実行される、上記タスクに関する演算処理を制御する。
タスク設定情報は、あるタスクに関して、当該タスクが実行される上記演算部(1602乃至1604)を特定可能な情報である。ステータス情報は、各演算部(1602乃至1604)における演算処理の状態を表す情報である。タスク制御部1610は、複数の上記演算部(1602乃至1604)のそれぞれから、上記ステータス情報を取得する。
タスク制御部(1610乃至1612)は、上記第1の実施形態におけるタスク制御部(112、113、及び、114)と同様としてもよい。
以上のように構成された、本実施形態における演算装置1600によれば、複数の演算部(1602乃至1604)が、データバッファ(1608乃至1609)を介してパイプライン状に接続された構成を有する演算装置1600において、各演算部(1602乃至1604)が効率的に稼働するようにタスクの実行が制御される。即ち、演算装置1600は、複数の演算部(1602乃至1604)を用いてパイプライン的に処理を実行するようなタスクを実行する場合、各演算部におけるアイドル状態やレイテンシを削減することが可能である。
より具体的には、演算装置1600は、あるタスクに関する特定の演算部における演算処理が終了する前に、他の一部の演算部において、他のタスクに関する演算処理を実行可能である。その理由は、各演算部(1602乃至1604)の実行状態(ステータス)と、各タスクの設定情報に基づいて、演算部毎に、タスクの実行が制御されるからである。
図16及び図17に例示する構成は、本実施形態における演算装置を実現可能な一具体例であり、本実施形態はこれには限定されない。即ち、本実施形態における演算部の数は任意に定めてよい。また、演算部の数に応じて、データバッファ、タスク制御部の数も適宜選択されてよい。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。以下においては、特にタスク制御部(112乃至114、1101乃至1103、1303及び1304、並びに、1610乃至1612)の構成について説明する。以下、これらをまとめて「タスク制御部」と称する場合がある。
上記各実施形態において説明した演算装置(100、1100、1300、1600)におけるタスク制御部は、専用のハードウェア装置により構成してもよい。その場合、上記各図に示した各部は、一部または全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現してもよい。
また、上記タスク制御部は、図19に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成してもよい。
図19における演算装置1901は、汎用のCPU(Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置1901は、例えば後述する不揮発性記憶装置1903に記憶された各種ソフトウェア・プログラムを記憶装置1902に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
記憶装置1902は、演算装置1901から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。記憶装置1902は、揮発性のメモリ装置であってもよい。
不揮発性記憶装置1903は、例えば半導体記憶装置によるROM(Read Only Memory)や、フラッシュメモリのような、不揮発性の記憶装置であり、各種ソフトウェア・プログラムやデータ等を記録してもよい。
外部記憶装置1904は、例えば、後述する記憶媒体1905に対するデータの読み込みや書き込みを処理する装置である。
記憶媒体1905は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
入出力インタフェース1906は、タスク制御部と、上記各実施形態において説明した演算装置(100、1100、1300、1600)における他の構成要素との間の入出力を制御する装置である。係る入出力インタフェース1906は、各種通信ネットワークに接続可能な、ネットワークインタフェースであってもよい。
例えば、上記各実施形態においては、タスク制御部と、上記各実施形態において説明した演算装置(100、1100、1300、1600)における他の構成要素との間は、入出力インタフェース1906を介して任意の通信バスにより接続されてもよい。
上述した各実施形態を例に説明した本発明は、例えば、図19に例示したハードウェア装置によりタスク制御部を構成し、係るタスク制御部に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより実現してもよい。この場合、係るタスク制御部に対して供給したソフトウェア・プログラムを、演算装置1901が実行することによって、本願発明が達成されてもよい。
上述した各実施形態において、上記各図に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。但し、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、図1、図11、図13、及び、図16に例示したタスク制御部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールを不揮発性記憶装置1903に記憶しておき、演算装置1901がそれぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置1902に読み出すよう構成してもよい。
また、これらのソフトウェアモジュール間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェアモジュール間は、相互に通信可能に接続可能である。
更に、上記各ソフトウェア・プログラムを記憶媒体1905に記録しておき、上記演算装置(100、1100、1300、1600)の出荷段階、あるいは運用段階等において、適宜外部記憶装置1904を通じて当該ソフトウェア・プログラムが不揮発性記憶装置1903に格納されるよう構成してもよい。
なお、上記の場合において、タスク制御部への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該演算装置(100、1100、1300、1600)内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更または改良を加えることが可能であることは明らかである。そのような場合、係る変更または改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、請求の範囲に記載した事項から明らかである。
本発明は、例えば、複数の演算部を用いてパイプライン的に演算処理を実行するような演算装置に適用可能である。より具体的には、本発明は、無線信号処理や、画像処理等の信号処理用途に使用する演算装置に適用可能である。
この出願は、2014年6月19日に出願された日本出願特願2014−125942を基礎とする優先権を主張し、その開示の全てをここに取り込む。
100 演算装置
101 演算制御部
102 第1のメモリ部
103 第2のメモリ部
104、105、106 演算部
107、108、109 コマンドバッファ
110、111 データバッファ
112、113、114 タスク制御部
1100 演算装置
1101、1102、1103 タスク制御部
1301 演算制御部
1302 コマンドバッファ
1303、1304 タスク制御部
1305、1306 データバッファ
1307、1308、1309 演算部
1600 演算装置
1601 演算制御部
1602、1603、1604 演算部
1605、1606、1607 コマンドバッファ
1608、1609 データバッファ
1610、1611、1612 タスク制御部
1901 演算装置
1902 記憶装置
1903 不揮発性記憶装置
1904 外部記憶装置
1905 記憶媒体
1906 入出力インタフェース

Claims (8)

  1. データに対する演算処理を実行する複数の演算手段と、
    複数の前記演算手段の内、第1の演算手段と、第2の演算手段との間に接続され、前記第1の演算手段から出力されるデータと、前記第2の演算手段に入力されるデータとを保持可能な、少なくとも1以上のデータバッファと、
    1以上の前記第1の演算手段と、1以上の前記第2の演算手段との少なくともいずれかである1以上の特定の前記演算手段において実行される、前記データに対する一連の演算処理であるタスクの実行を指定するタスクコマンドを、前記演算手段に対して出力可能に保持するコマンドバッファと、
    前記タスクコマンドと、前記タスクが実行される少なくともいずれかの前記演算手段を特定可能なタスク設定情報と、複数の前記演算手段のそれぞれから取得した当該演算手段における演算処理の状態を表す情報と、に基づいて、前記データバッファ及び前記コマンドバッファの少なくともいずれかを制御することにより、1以上の特定の前記演算手段において実行される前記タスクに関する演算処理を制御するタスク制御手段と、を備える
    演算装置。
  2. 前記タスク制御手段は、前記1以上の特定の前記演算手段に対する、前記コマンドバッファからの前記タスクコマンドの出力を制御することにより、前記1以上の特定の前記演算手段における前記タスクに関する演算処理の開始タイミングを制御する
    請求項1に記載の演算装置。
  3. 前記第1の演算手段は、当該第1の演算手段において実行される前記タスクに関する演算処理が終了した際、当該第1の演算手段の出力側に接続された前記データバッファに対して、その前記タスクに関する前記タスクコマンドを出力し、
    当該第1の演算手段の出力側に接続された前記データバッファは、上記出力された前記タスクコマンドを保持し、
    前記タスク制御手段は、当該データバッファが入力側に接続された前記第2の演算手段に対する、当該データバッファからの前記タスクコマンドの出力を制御することにより、当該第2の演算手段における前記タスクに関する演算処理の開始タイミングを制御する
    請求項1または請求項2に記載の演算装置。
  4. 前記タスク設定情報は、前記タスク毎に、当該タスクに関する最初の演算処理を実行する前記演算手段である開始演算手段と、当該タスクに関する最後の演算処理を実行する前記演算手段である終了演算手段とを特定可能な情報を保持し、
    前記タスク制御手段は、当該タスク制御手段により制御される前記1以上の特定の前記演算手段である制御対象演算手段が前記開始演算手段であるか否かを判定した結果に基づいて、複数の前記演算手段の内、当該タスク制御手段により制御される前記1以上の特定の前記演算手段である制御対象演算手段において、特定の前記タスクを実行可能か否か判定し、
    前記タスクコマンドには、当該タスクコマンドにより指定される前記タスクと実行順序において依存関係がある前記タスクである依存タスクを表すタスク依存関係情報が含まれ、
    前記タスク制御手段は、
    前記タスク設定情報に基づいて、前記制御対象演算手段が、前記タスクコマンドにより指定された特定のタスクに対する前記開始演算手段であると判定した場合には、当該特定の前記タスクに関する前記タスクコマンドに含まれる前記タスク依存関係情報に基づいて、当該特定の前記タスクよりも前に実行されるよう設定された前記依存タスクが存在するか否かを確認し、
    当該確認の結果、当該依存タスクが存在しない場合には、当該特定の前記タスクに関する前記タスクコマンドよりも前に当該タスク制御手段に出力された他のタスクコマンドにより指定された他の前記タスクに関する演算処理が、当該他の前記タスクに対する前記終了演算手段において完了する前に、当該特定の前記タスクに関する演算処理を実行するよう前記制御対象演算手段を制御し、
    前記タスク制御手段は、
    前記タスク設定情報に基づいて、当該タスク制御手段が制御する前記制御対象演算手段が特定の前記タスクに対する前記開始演算手段であると判定した場合には、当該特定の前記タスクの実行を指定する前記タスクコマンドに含まれる前記タスク依存関係情報に基づいて、当該特定の前記タスクよりも前に実行されるよう依存関係が設定された依存タスクが存在するか否かを確認し、
    当該確認の結果、当該依存タスクが存在する場合には、前記タスク設定情報に基づいて、当該依存タスクに対する前記終了演算手段を特定し、当該特定した前記終了演算手段の演算処理の状態を表す情報に基づいて、当該特定した前記終了演算手段における当該依存タスクに関する演算処理が終了しているか確認し、
    当該確認結果に基づいて、前記制御対象演算手段における特定のタスクに関する演算処理を制御することを特徴とする、
    請求項1乃至請求項3のいずれかに記載の演算装置。
  5. 前記タスク設定情報は、前記タスク毎に、当該タスクに関する最初の演算処理を実行する前記演算手段である開始演算手段を特定可能な情報と、当該タスクに関する一連の演算処理に用いられる前記演算手段の数を表す情報である演算手段使用数と、を保持し、
    前記タスク制御手段は、
    前記開始演算手段を特定可能な情報と、前記演算手段使用数とに基づいて、前記タスク毎に当該タスクに関する最後の演算処理を実行する終了演算手段を特定し、
    当該タスク制御手段により制御される前記1以上の特定の前記演算手段である制御対象演算手段が前記開始演算手段であるか否かを判定した結果に基づいて、複数の前記演算手段の内、当該タスク制御手段により制御される前記1以上の特定の前記演算手段である制御対象演算手段において、特定の前記タスクを実行可能か否か判定し、
    前記タスクコマンドには、当該タスクコマンドにより指定される前記タスクと実行順序において依存関係がある前記タスクである依存タスクを表すタスク依存関係情報が含まれ、
    前記タスク制御手段は、
    前記タスク設定情報に基づいて、前記制御対象演算手段が、前記タスクコマンドにより指定された特定のタスクに対する前記開始演算手段であると判定した場合には、当該特定の前記タスクに関する前記タスクコマンドに含まれる前記タスク依存関係情報に基づいて、当該特定の前記タスクよりも前に実行されるよう設定された前記依存タスクが存在するか否かを確認し、
    当該確認の結果、当該依存タスクが存在しない場合には、当該特定の前記タスクに関する前記タスクコマンドよりも前に当該タスク制御手段に出力された他のタスクコマンドにより指定された他の前記タスクに関する演算処理が、当該他の前記タスクに対する前記終了演算手段において完了する前に、当該特定の前記タスクに関する演算処理を実行するよう前記制御対象演算手段を制御し、
    前記タスク制御手段は、
    前記タスク設定情報に基づいて、当該タスク制御手段が制御する前記制御対象演算手段が特定の前記タスクに対する前記開始演算手段であると判定した場合には、当該特定の前記タスクの実行を指定する前記タスクコマンドに含まれる前記タスク依存関係情報に基づいて、当該特定の前記タスクよりも前に実行されるよう依存関係が設定された依存タスクが存在するか否かを確認し、
    当該確認の結果、当該依存タスクが存在する場合には、前記タスク設定情報に基づいて、当該依存タスクに対する前記終了演算手段を特定し、当該特定した前記終了演算手段の演算処理の状態を表す情報に基づいて、当該特定した前記終了演算手段における当該依存タスクに関する演算処理が終了しているか確認し、
    当該確認結果に基づいて、前記制御対象演算手段における特定のタスクに関する演算処理を制御することを特徴とする、
    請求項1乃至請求項3のいずれかに記載の演算装置。
  6. 前記データバッファは、複数の前記演算手段の内、前記第1の演算手段の出力側と、前記第2の演算手段の入力側との間に接続され、
    前記データバッファには、前記第1の演算手段の出力側から、当該第1の演算手段における演算処理の結果と、当該データバッファの読み出しを抑制可能な同期コマンドと、が入力され、
    当該データバッファは、当該同期コマンドが入力された場合、当該同期コマンドが入力されるより前に当該データバッファに入力されたデータが全て読み出されるまで、当該同期コマンドが入力された後に当該データバッファに入力されたデータの読み出しを禁止する、
    請求項1乃至請求項5のいずれかに記載の演算装置。
  7. データに対する演算処理を実行する演算手段である1以上の第1の演算手段と、1以上の第2の演算手段と、の少なくともいずれかである1以上の特定の前記演算手段において実行される前記データに対する一連の演算処理である、タスクの実行を指定するタスクコマンドと、前記タスクが実行される前記1以上の特定の前記演算手段を特定可能な情報と、複数の前記演算手段のそれぞれから取得した当該前記演算手段の処理状態を表す情報と、に基づいて、
    前記第1の演算手段と、前記第2の演算手段との間に接続され、前記第1の演算手段から出力されるデータと、前記第2の演算手段に入力されるデータと、を保持可能な少なくとも1以上のデータバッファ、及び、前記タスクコマンドを前記1以上の特定の前記演算手段に対して出力可能に保持するコマンドバッファ、の少なくともいずれかを制御することにより、前記1以上の特定の前記演算手段において実行される前記タスクに関する演算処理を制御する
    演算装置の制御方法。
  8. データに対する演算処理を実行する演算手段である1以上の第1の演算手段と、1以上の第2の演算手段と、の少なくともいずれかである1以上の特定の前記演算手段において実行される前記データに対する一連の演算処理である、タスクの実行を指定するタスクコマンドと、前記タスクが実行される前記1以上の特定の前記演算手段を特定可能な情報と、複数の前記演算手段のそれぞれから取得した当該前記演算手段の処理状態を表す情報と、に基づいて、
    前記第1の演算手段と、前記第2の演算手段との間に接続され、前記第1の演算手段から出力されるデータと、前記第2の演算手段に入力されるデータと、を保持可能な少なくとも1以上のデータバッファ、及び、前記タスクコマンドを前記1以上の特定の前記演算手段に対して出力可能に保持するコマンドバッファ、の少なくともいずれかを制御することにより、前記1以上の特定の前記演算手段において実行される前記タスクに関する演算処理を制御する処理を、演算装置に実行させる
    演算装置の制御プログラム。
JP2016529022A 2014-06-19 2015-06-11 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム Expired - Fee Related JP6673202B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014125942 2014-06-19
JP2014125942 2014-06-19
PCT/JP2015/002924 WO2015194133A1 (ja) 2014-06-19 2015-06-11 演算装置、演算装置の制御方法、及び、演算装置の制御プログラムが記録された記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2015194133A1 JPWO2015194133A1 (ja) 2017-05-25
JP6673202B2 true JP6673202B2 (ja) 2020-03-25

Family

ID=54935142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016529022A Expired - Fee Related JP6673202B2 (ja) 2014-06-19 2015-06-11 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム

Country Status (3)

Country Link
US (1) US10437650B2 (ja)
JP (1) JP6673202B2 (ja)
WO (1) WO2015194133A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6996099B2 (ja) * 2017-03-24 2022-01-17 日本電気株式会社 データ処理システム及びデータ処理方法
JP7127300B2 (ja) * 2018-03-02 2022-08-30 株式会社デンソー 噴射制御装置
CN111526172B (zh) * 2019-02-03 2022-11-29 杭州登临瀚海科技有限公司 一种多设备管理方法和管理***
KR20210008216A (ko) 2019-07-11 2021-01-21 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US12014442B2 (en) * 2019-12-19 2024-06-18 Advanced Micro Devices, Inc. Cross GPU scheduling of dependent processes
US11989594B2 (en) * 2021-08-03 2024-05-21 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for associating computational device functions with compute engines

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361363A (en) * 1990-10-03 1994-11-01 Thinking Machines Corporation Input/output system for parallel computer for performing parallel file transfers between selected number of input/output devices and another selected number of processing nodes
JP3512403B2 (ja) 1991-08-06 2004-03-29 株式会社日立製作所 印刷制御装置
US6154829A (en) 1997-10-20 2000-11-28 Matsushita Electric Industrial Co., Ltd. Cascaded arithmetic pipeline data processor
JP3004972B2 (ja) * 1997-10-20 2000-01-31 松下電器産業株式会社 データ処理装置
JP2001022595A (ja) 1999-07-06 2001-01-26 Nec Corp リアルタイム処理タスク制御装置及びそのプログラムを記録したコンピュータ読取り可能な記録媒体
US6775756B1 (en) * 1999-10-11 2004-08-10 Ati International Srl Method and apparatus for out of order memory processing within an in order processor
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7908603B2 (en) * 2004-01-29 2011-03-15 Klingman Edwin E Intelligent memory with multitask controller and memory partitions storing task state information for processing tasks interfaced from host processor
FI117808B (fi) * 2004-09-14 2007-02-28 Vaisala Oyj Kaasun pitoisuuden mittauslaitteisto ja menetelmä
JP4244028B2 (ja) * 2004-09-22 2009-03-25 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
US7920584B2 (en) * 2005-05-04 2011-04-05 Arm Limited Data processing system
JP4318664B2 (ja) * 2005-05-12 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびタスク実行方法
JP4647533B2 (ja) * 2005-11-28 2011-03-09 富士通セミコンダクター株式会社 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム
JP2007336143A (ja) * 2006-06-14 2007-12-27 Ricoh Co Ltd 画像処理装置
CN101165655A (zh) * 2006-10-20 2008-04-23 国际商业机器公司 多处理器计算***及其任务分配方法
JP5137434B2 (ja) * 2007-03-28 2013-02-06 株式会社ソニー・コンピュータエンタテインメント データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム
JP4507125B2 (ja) * 2007-09-10 2010-07-21 三菱電機株式会社 プログラマブルコントローラ
TWI386814B (zh) * 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US8854381B2 (en) * 2009-09-03 2014-10-07 Advanced Micro Devices, Inc. Processing unit that enables asynchronous task dispatch
DE102010001761A1 (de) * 2010-02-10 2011-08-11 Robert Bosch GmbH, 70469 Radarsensor
WO2012039216A1 (ja) 2010-09-24 2012-03-29 日本電気株式会社 情報処理装置、その方法及びそのプログラム
US20120246653A1 (en) * 2011-03-23 2012-09-27 Infinidat Ltd. Generic command parser
CN103765384A (zh) * 2011-09-02 2014-04-30 飞思卡尔半导体公司 数据处理***和在数据处理***中进行任务调度的方法
US9122522B2 (en) * 2011-12-14 2015-09-01 Advanced Micro Devices, Inc. Software mechanisms for managing task scheduling on an accelerated processing device (APD)
KR101893982B1 (ko) * 2012-04-09 2018-10-05 삼성전자 주식회사 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
US10690386B2 (en) * 2012-07-20 2020-06-23 Lennox Industries Inc. Controlling metering devices
JP2014102692A (ja) * 2012-11-20 2014-06-05 Nec Corp 演算処理システム、実行制御装置、実行制御方法及び実行制御プログラム

Also Published As

Publication number Publication date
US20170147411A1 (en) 2017-05-25
WO2015194133A1 (ja) 2015-12-23
US10437650B2 (en) 2019-10-08
JPWO2015194133A1 (ja) 2017-05-25

Similar Documents

Publication Publication Date Title
JP6673202B2 (ja) 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム
JP2007207026A (ja) Dma転送装置
JP2008269282A (ja) 情報処理装置および方法、並びにプログラム
JP2007200245A (ja) システムバス制御装置、集積回路およびデータ処理システム
US20140344512A1 (en) Data Processing Apparatus and Memory Apparatus
JP2006338538A (ja) ストリームプロセッサ
US9172839B2 (en) Image forming apparatus, control method and storage medium
US8775767B2 (en) Method and system for allocating memory to a pipeline
US10768976B2 (en) Apparatus and method to configure an optimum number of circuits for executing tasks
US9753769B2 (en) Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof
JP2006085428A (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
US8913293B2 (en) Reliable high-speed duplex printing mode configured to issue simplex-printing requests for individual sides based on a plurality of input duplex-printing requests for individual sheets
CN115618966A (zh) 用于训练机器学习模型的方法、装置、设备和介质
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
JP4170330B2 (ja) 情報処理装置
JP2015194918A (ja) データ転送制御装置及びメモリ内蔵装置
US20160050332A1 (en) Image processing apparatus for controlling dynamic reconfigurable apparatus, information processing method for image processing apparatus, and storage medium for storing program to achieve information processing method
JP4882116B2 (ja) バッファ制御装置およびバッファ制御方法
EP2998864B1 (en) Method, device and system for deciding on a distribution path of a task
JP2008276322A (ja) 情報処理装置、情報処理システムおよび情報処理方法
WO2018076647A1 (zh) 数据处理的方法、装置和片上***、设备、存储介质
JP6430710B2 (ja) データ転送制御装置及びデータ転送の制御方法
WO2019188181A1 (ja) スケジューリング方法、スケジューリング装置
WO2019188174A1 (ja) 情報処理装置
JP4833911B2 (ja) プロセッサユニットおよび情報処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190912

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: 20200204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200217

R150 Certificate of patent or registration of utility model

Ref document number: 6673202

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees