(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-21
(45)【発行日】2022-05-02
(54)【発明の名称】プロセッサ装置
(51)【国際特許分類】
G06F 15/80 20060101AFI20220422BHJP
G06F 9/38 20060101ALI20220422BHJP
G06F 9/34 20060101ALI20220422BHJP
G06F 15/167 20060101ALI20220422BHJP
G06F 12/0804 20160101ALI20220422BHJP
G06F 12/0862 20160101ALI20220422BHJP
G06F 5/16 20060101ALI20220422BHJP
【FI】
G06F15/80
G06F9/38 370A
G06F9/34 330
G06F15/167 610
G06F9/34 350B
G06F12/0804 100
G06F12/0862 100
G06F5/16
(21)【出願番号】P 2020515484
(86)(22)【出願日】2019-04-23
(86)【国際出願番号】 JP2019017233
(87)【国際公開番号】W WO2019208566
(87)【国際公開日】2019-10-31
【審査請求日】2020-09-25
(31)【優先権主張番号】P 2018082939
(32)【優先日】2018-04-24
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】516370523
【氏名又は名称】ArchiTek株式会社
(74)【代理人】
【識別番号】100167807
【氏名又は名称】笠松 信夫
(72)【発明者】
【氏名】高田 周一
【審査官】井上 宏一
(56)【参考文献】
【文献】国際公開第2016/024508(WO,A1)
【文献】特開平11-312085(JP,A)
【文献】特開2002-358288(JP,A)
【文献】特開2008-090455(JP,A)
【文献】特開2011-141823(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/80
G06F 9/38
G06F 9/34
G06F 15/167
G06F 12/0804
G06F 12/0862
G06F 5/16
(57)【特許請求の範囲】
【請求項1】
外部メモリと、
複数のプロセッサと、
処理対象のデータを格納するための複数のレジスタをそれぞれ含む、複数のレジスタ群と、
入力される指示に基づいて、処理対象のデータを
前記外部メモリから読み出し、前記複数のレジスタ群
中のレジスタ群に書き込むメモリアクセス装置と、
前記複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している1つのレジスタ群のアドレスを
前記複数のプロセッサの数に対応して変更しながら、順次実行させる制御部と、
指定されたシナリオ情報に基づいて、前記複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を
指示し、前記メモリアクセス装置に対して、前記複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを
指示するスケジューラと、
を備え、
前記メモリアクセス装置が、前記スケジューラからの指示に基づいて、処理対象のデータを前記複数のプロセッサがアクセスしていない第1のレジスタ群に書き込むプロセッサ装置。
【請求項2】
前記制御部は、前記複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している1つのレジスタ群のアドレスを前記複数のプロセッサの数分スライドさせながら、順次実行させる、請求項1記載のプロセッサ装置。
【請求項3】
前記複数のレジスタ群の1つからなり、前記複数のプロセッサ各々に対して定義されるバンクをさらに備え、
前記複数のプロセッサ各々が、前記バンクとして定義されたレジスタ群からデータを読み出して、与えられた命令を実行する、請求項1
または請求項2に記載のプロセッサ装置。
【請求項4】
前記複数のプロセッサは、前記命令を実行した結果得られたデータを、当該データの元となった処理対象のデータを読み出した前記第1のレジスタ群に書き込み、
前記メモリアクセス装置は、前記複数のプロセッサにより前記第1のレジスタ群に書き込まれたデータを読み出し、前記外部メモリに書き込む、請求項1
から請求項3のいずれか1項に記載のプロセッサ装置。
【請求項5】
前記メモリアクセス装置は、前記複数のプロセッサが前記第1のレジスタ群に格納されているデータを用いて、前記同一の命令を実行している場合に、前記複数のレジスタ群に含まれ、前記第1のレジスタ群とは異なる複数のレジスタを含む第2レジスタ群に、前記複数のプロセッサが次に実行する命令の処理対象のデータを前記外部メモリから読み出して書き込む、請求項1から
請求項4のいずれか1項に記載のプロセッサ装置。
【請求項6】
前記スケジューラは、前記複数のプロセッサが実行する命令に応じて、前記複数のプロセッサの動作速度を高速化する、請求項1から
請求項5のいずれか1項に記載のプロセッサ装置。
【請求項7】
前記スケジューラは、深層学習における推論処理及び学習処理のための学習モデルであって、ノードとリンクからなる学習モデルを入力とし、
前記学習モデルにおける各ノードに対する入力を前記複数のレジスタ群の各レジスタに格納し、前記複数のプロセッサは、各ノードにおいて処理すべき演算を実行する、請求項1から
請求項6のいずれか1項に記載のプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ装置に関する。
【背景技術】
【0002】
近年、画像処理など、非常に処理量の多い処理を高速かつ簡易に行える処理装置が望まれている。そのような処理量の多い処理を高速に行う手法として、並列処理が有望である。しかしながら、並列処理は、プログラムの構築の専門性、データの依存関係によるプロセッサ間の通信など、様々な専門性の高い技術を必要とする。そこで、特許文献1は、複数のプロセッサと、レジスタメモリとを備えるマルチプロセッサ装置において、複数のプロセッサが、レジスタメモリのアドレッシングを変化させながら、同一の命令を、与えられた処理数分だけ実行し、処理数分の実行が終われば次の命令に切り替えて、次の与えられた処理数分だけ命令を実行する動作を繰り返させる技術を提案している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、上記特許文献1に示すようなプロセッサ装置においては、更なる高速化が求められている。上述のような処理量の多い処理の一つとして、深層学習における推論処理及び学習処理が挙げられる。深層学習における処理の実態が行列の積和演算であるので、プロセッサ装置に積和演算に特化した行列演算ユニットを多数搭載することで、その処理性能を向上させることが考えられる。しかしながら、この場合、当該プロセッサ装置は汎用性に欠けるという問題があった。
【0005】
そこで、本発明においては、様々な演算処理に適用可能でありながら、従来のプロセッサ装置よりも高速化が可能なプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の一態様に係るプロセッサ装置は、外部メモリと、複数のプロセッサと、複数のレジスタ群と、メモリアクセス装置と、制御部と、スケジューラとを備える。複数のレジスタ群のそれぞれは、処理対象のデータを格納するための複数のレジスタを含む。メモリアクセス装置は、入力される指示に基づいて、処理対象のデータを前記外部メモリから読み出し、複数のレジスタ群中のレジスタ群に書き込む。制御部は、複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している1つのレジスタ群のアドレスを前記複数のプロセッサの数に対応して変更しながら、順次実行させる。スケジューラは、指定されたシナリオ情報に基づいて、複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指示し、メモリアクセス装置に対して、複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指示する。以上の構成において、メモリアクセス装置は、スケジューラからの指示に基づいて、処理対象のデータを複数のプロセッサがアクセスしていない第1のレジスタ群に書き込む。
【0007】
また、以上のプロセッサ装置において、複数のレジスタ群の1つからなり、複数のプロセッサ各々に対して定義されるバンクを備える構成を採用することもできる。本構成では、複数のプロセッサ各々が、バンクとして定義されたレジスタ群からデータを読み出して、与えられた命令を実行する。
【0008】
また、上記プロセッサ装置において、複数のプロセッサは、命令を実行した結果得られたデータを、当該データの元となった処理対象のデータを読み出した第1のレジスタ群に書き込む構成としてもよい。この場合、メモリアクセス装置は、複数のプロセッサにより第1のレジスタ群に書き込まれたデータを読み出し、外部メモリに書き込む構成としてもよい。
【0009】
また、上記プロセッサ装置において、メモリアクセス装置は、複数のプロセッサが第1のレジスタ群に格納されているデータを用いて、同一の命令を実行している場合に、複数のレジスタ群に含まれ、第1のレジスタ群とは異なる複数のレジスタを含む第2レジスタ群に、複数のプロセッサが次に実行する命令の処理対象のデータを外部メモリから読み出して書き込む構成としてもよい。
【0010】
また、上記プロセッサ装置において、スケジューラは、複数のプロセッサが実行する命令に応じて、各プロセッサの動作速度を高速化する構成としてもよい。
【0011】
また、スケジューラは、深層学習における推論処理及び学習処理のための学習モデルであって、ノードとリンクからなる学習モデルを入力としてもよい。この場合、学習モデルにおける各ノードに対する入力を複数のレジスタ群の各レジスタに格納し、複数のプロセッサは、各ノードにおいて処理すべき演算を実行する構成としてもよい。
【発明の効果】
【0012】
本発明の一態様に係るプロセッサ装置は、同一の命令を、レジスタメモリのアドレスをずらしながら、指定された処理数分だけ処理することにより、簡単に並列処理を実現できるとともに、複数のプロセッサがアクセス可能なバンクを設定することにより、更に処理の並列度を向上させることができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、本発明の一実施態様におけるプロセッサ装置の構成例を示すブロック図である。
【
図2】
図2は、本発明の一実施態様におけるプロセッサ装置による処理イメージを示す図である。
【
図3】
図3は、本発明の一実施態様におけるプロセッサの処理イメージを示す図である。
【
図4】
図4(a)は、深層学習における学習モデルの一例を示す図であり、
図4(b)は、
図1は、本発明の一実施態様におけるコントローラに対して与えられるシナリオ情報の構成例を示すデータ概念図である。
【
図5】
図5は、本発明の一実施態様におけるプロセッサ装置の他の構成例を示すブロック図である。
【
図6】
図6は、
図5に示す構成のプロセッサ装置による処理イメージを示す図である。
【
図7】
図7は、本発明の一実施態様におけるプロセッサ装置により画像処理を行う場合の画像の区分例と、バンクの割り当て例を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の一実施態様に係るプロセッサ装置について、図面を参照しながら詳細に説明する。
【0015】
本発明に係るプロセッサ装置100は、外部メモリと、複数のプロセッサと、複数のレジスタ群と、メモリアクセス装置と、制御部と、スケジューラとを備える。各レジスタ群は、処理対象のデータを格納するための複数のレジスタを含む。メモリアクセス装置は、外部メモリから処理対象のデータを読み出し、複数のレジスタ群のうち、複数のプロセッサがアクセスしていない第1のレジスタ群に書き込む。制御部は、複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している1つのレジスタ群のアドレスを変更しながら、順次実行させる。スケジューラは、指定されたシナリオ情報に基づいて、複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指定し、メモリアクセス装置に対して、複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指定する。
【0016】
ここで、「外部メモリ」とは、処理対象のデータを記憶する機能を有する大容量の記録媒体である。
【0017】
また、「レジスタメモリ」とは、処理対象のデータを一時的に記憶する機能を有し、外部メモリよりも小容量の記録媒体である。
【0018】
「プロセッサ」とは、コンピュータシステムにおいて命令を実行するためのハードウェアのことである。
【0019】
「アクセス」とは、メモリからのデータの読み出し、または、メモリへのデータの書き込みのことをいう。
【0020】
「バンク」とは、レジスタメモリに対して設定されるプロセッサがアクセス可能な領域のことをいう。レジスタメモリに対してバンクの設定を行えば、アクセスが互いに衝突しない限り、互いに異なるプロセッサが、それぞれ異なるバンクに同時アクセスできるようになる。
【0021】
また、「プロセッサに対してバンクを定義する」とは、当該プロセッサがレジスタメモリ中において、アクセス可能なアドレス範囲を指定することをいう。
【0022】
図1は、本発明の一実施態様に係るプロセッサ装置100の構成を示すブロック図である。
図1に示すように、プロセッサ装置100は、DMA(Dynamic Memory Access controller)101と、メモリ102と、レジスタメモリ104と、スケジューラ110と、複数の演算装置10を備える。演算装置10各々は、マルチプレクサ103と、コントローラ105と、複数のプロセッサ106とを備える。スケジューラ110は、DMA101と、レジスタメモリ104と、各演算装置10のコントローラ105と接続している。DMA101は、スケジューラ110と、メモリ102と、レジスタメモリ104と、各演算装置10のプロセッサ106各々と接続している。レジスタメモリ104は、DMA101と、スケジューラ110と、各演算装置10のマルチプレクサ103と接続している。
【0023】
スケジューラ110は、メモリ102に格納されているシナリオ情報とプログラムに従って、メモリ102からデータを読み出し、レジスタメモリ104に処理に必要なデータを書き込むようDMA101に指示する。また、スケジューラ110は、当該シナリオ情報に従って、実行すべき演算内容を特定し、演算内容に応じた処理を実行する一の演算装置10を複数の演算装置10の中から指定する。スケジューラ110は、当該演算装置10に対して実行すべき演算内容及びアクセスするレジスタメモリ104の領域(アドレス)を指示する。
【0024】
なお、ここでは、演算内容に応じた処理を実行する演算装置10として一の演算装置10を指定する場合を例に説明したが、演算内容に応じた処理を実行する演算装置10の数は1個に限らず、複数個であってもよい。
【0025】
DMA101は、スケジューラ110からの指示に従って、メモリ102からデータを読み出し、レジスタメモリ104に格納するメモリアクセス装置として機能する。また、DMA101は、レジスタメモリ104に格納されているプロセッサ106による演算の結果を読み出して、メモリ102に書き込む。
【0026】
メモリ102は、プロセッサ装置100が処理すべき対象となるデータや、処理の内容を示したシナリオ情報とプログラムを記憶する機能を有する大容量の記憶装置である。ここで大容量とはレジスタメモリ104よりも容量が大きいことを意味する。メモリ102は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)により実現することができる。なお、メモリ102は外部メモリに相当する。
【0027】
マルチプレクサ103は、プロセッサ106のレジスタアクセスに対し与えられた命令に従って、レジスタメモリ104のアクセスを行う。
【0028】
レジスタメモリ104は、複数のレジスタからなる。レジスタメモリ104は、プロセッサ106の処理対象となるデータを一時的に格納するメモリである。レジスタメモリ104は、例えば、SRAM(Static Random Access Memory)により実現することができる。レジスタの数としては、論理的なプロセッサ数に対応する数のレジスタが用意されている。例えば、プロセッサ1つあたり16個のレジスタを有し、物理的なプロセッサ数が8個あるとし、論理的なプロセッサ数が1024個あるとすれば、16×1024で16384個のレジスタを備える構成としてよい。即ち、論理的に保持するレジスタは、プロセッサ1024個分であり、単位時間(1サイクル)当たり物理的に処理できる数は、最大8個となる。
【0029】
演算装置10内のコントローラ105は、スケジューラ110から指示された処理(当該演算装置10が実行すべき演算内容)とレジスタメモリ104のアドレスに従って、当該演算装置10内の各プロセッサに対して、処理すべき演算内容(プロセッサが実行すべき命令)を指定するとともに、処理対象のデータが格納されているレジスタメモリ104のアドレスを指定する。即ち、演算装置10内のコントローラ105は、各プロセッサ106に対してアクセス対象となるレジスタメモリ104のアドレスを変更しながら、命令を順次実行させる制御装置として機能する。コントローラ105は、演算装置10内の各プロセッサ106に対して、同一の命令(当該演算装置10が実行すべき演算内容)を、処理対象のレジスタメモリ104のアドレスを変更しながら、順次実行させる。コントローラ105は、当該演算装置10内の各プロセッサ106を管理し、プロセッサ106から、指定された処理の終了信号を受け付けると、次の命令を指定する。
【0030】
プロセッサ106は、本実施の形態においては、演算装置10内に物理的に8個備えられている。ここでは、プロセッサ106の、SIMDとして処理できる論理的な個数は、1024個とする。演算装置10内のプロセッサ106は、当該演算装置10内のコントローラ105からの指示に従って、マルチプレクサ103を介して、レジスタメモリ104の指定されたアドレスに格納されているデータを読み出して処理し、レジスタメモリ104の指定されたアドレスに演算結果を格納する。当該演算装置10内のプロセッサ106各々は、同一の命令(当該演算装置10が実行すべき演算内容)を、処理対象のデータを変更しながら、即ち、読み出し元のレジスタメモリ104のアドレスを変更しながら、実行する。
【0031】
図2は、本発明に係るプロセッサ装置100の基本的処理構成の流れを示すイメージ図である。
【0032】
本実施の形態に係るプロセッサ装置100は、入力されたシナリオ情報(メモリ102に格納されているシナリオ情報)200に従って、以下の処理を実行する。
【0033】
(1)スケジューラ110は、シナリオ情報200の入力を受け付けて、シナリオ情報200で指定されている演算装置10を複数の演算装置10の中から特定する。また、スケジューラ110は、特定した演算装置10に対して、当該演算装置10が実行すべき処理内容及びアクセスすべきレジスタメモリ104のアドレスを伝達する。さらに、スケジューラ110は、DMA101に対してメモリ102から読み出して、レジスタメモリ104に書き込むデータを指定する。
【0034】
(2)DMA101は、処理対象となるデータをメモリ102から読み出し、第2レジスタ群104bに格納する。ここで、第2レジスタ群104bは、レジスタメモリ104に属する複数のレジスタにより構成される記憶領域である。
【0035】
(3)演算装置10内の各プロセッサ106は、第2レジスタ群104bに格納されているデータに対して、コントローラ105により指定された同一の命令(当該演算装置10が実行すべき演算内容)を、参照する第2レジスタ群104bのアドレスを変更しながら実行する。なお、
図2では、複数のプロセッサ106を斜めに示すことで、時間の流れを示している。すなわち、複数のプロセッサ106が、レジスタメモリ104から読み出したデータに対して何らかの演算を施し、演算後の値に、更に別の演算を施している様子を示している。
【0036】
(4)演算装置10内の各プロセッサ106が第2レジスタ群104bに格納されているデータを用いて、同一の命令(当該演算装置10が実行すべき演算内容)を実行している間に、DMA101は、第1レジスタ群104aに対して次に処理対象となるデータをメモリ102から読み出して格納する。ここで、第1レジスタ群104aは、レジスタメモリ104において、第2レジスタ群104bに属さない複数のレジスタにより構成される記憶領域である。
【0037】
(5)演算装置10内の各プロセッサ106は、処理結果(当該演算装置10が実行すべき演算を行った結果)を第2レジスタ群104bに格納する。なお、格納先は予め指定されており、DMA101がアクセスしていない領域であれば、第2レジスタ群104b以外のレジスタ群であってもよい。
【0038】
(6)DMA101は、第2レジスタ群104bに格納されているデータを読み出して、メモリ102に格納する。
【0039】
(7)一方、DMA101が第2レジスタ群104bに格納された演算結果を読み出してメモリ102に格納している間、演算装置10内の各プロセッサ106は、コントローラ105から指定された同一の命令(当該演算装置10が実行すべき演算内容)を、参照する第1レジスタ群104aのアドレスを変更しながら実行する。なお、上述のとおり、
図2では、複数のプロセッサ106を斜めに示すことで、時間の流れを示している。
【0040】
上述の(1)から(7)に示す処理を繰り返すことにより、演算装置10は、処理対象のデータがレジスタメモリ104に格納されるのを待つ必要がない。そのため、各演算装置10が、常に稼働して処理を実行している状態を作り出すことができ、処理の高速化を実現することができる。
【0041】
このようにプロセッサ装置100の各演算装置10は、第1レジスタ群104a、第2レジスタ群104bのそれぞれに対して、スケジューラ110から指定されたタイミングでアクセスしてデータを読み出し同一の命令(演算装置10に対して指示された処理)を実行する。また、一方で、DMA101は、演算装置10の処理対象となっていないレジスタ群から処理結果を読み出して、メモリ102に書き込んだり、次の処理対象となるデータを書き込んだりする。これにより、プロセッサ装置100において、処理対象となるデータが全てレジスタメモリ104に格納されている状態よりも、処理を高速化することができる。また、プロセッサ装置100においては、当該態様により、レジスタメモリ104として高速アクセス可能な高価なものを使用する必要がなく、安価なプロセッサ装置100を提供することができる。
【0042】
なお、
図2においては、演算装置10内の処理を示したため、当該処理をわかりやすくするために、マルチプレクサ103の図示を省略している。
【0043】
図3は、各プロセッサ106の処理イメージを示す図である。
図3に示すように、例えば、プロセッサ装置100の1つの演算装置10にプロセッサ106が8台備えられているとした場合、演算装置10内の各プロセッサ106は、所定数(例えば、8単位ずつ)ずつ、アクセスするレジスタメモリのアドレスをスライドしながら(ずらしながら)、命令を実行する。即ち、演算装置10内の各プロセッサ106は同一の命令(当該演算装置10が実行すべき演算内容)を、予め定められた処理数N(論理プロセッサ数)分だけ、参照するデータを変更しながら、実行することになる。したがって、プロセッサ装置100においては、処理数Nをプロセッサ数で除した値が、パイプライン段数よりも大きい限りハザード、即ち、レジスタメモリ104からのデータの読み出しと書き込みが重複するという事態は発生しない。換言すれば、プロセッサ装置100は、処理数Nが多いほどパイプライン段数を多くすることができるといえる。したがって、プロセッサ装置100は、各パイプラインにおいて単純な演算を実行するようにし、これを積み重ねることで、高度な演算も可能となる。このような構成とすることで、プロセッサ装置100は、複雑なメモリアクセス制御を行う必要もない。
【0044】
プロセッサ装置100は、深層学習における推論処理及び学習処理に利用することができる、深層学習における推論処理及び学習処理は、上述したように、その大半が積和演算である。
図4(a)には、深層学習における推論処理及び学習処理に係る学習モデルの例を示している。一般に、当該学習モデルは、ノードとノード間を接続するリンクにより表現されることが知られている。
図4(a)においては、簡略化した例を示しているが、学習モデルは、入力層、畳み込み層、プーリング層、出力層などから成る。当該ノードにおいては、処理内容(積算、加算など)が定義され、リンクにより依存関係が示される。例えば、このような推論処理として、入力された画像が何の画像であるかを推定する推論処理を行う場合、レジスタメモリ104には、画像の一ライン分の画素値が格納され、それらに対して、プロセッサ106各々が同一の処理(f1、f2、…のノードで示される各処理)を実行する。そして、当該一ライン分の処理が完了したら、プロセッサ106各々が次のラインの処理を行うというようにして、一枚の画像分の推論処理を行うことができる。DMA101は、複数のプロセッサ106の処理対象となっているラインのデータを格納しているレジスタ群以外のレジスタ群に次のラインのデータを格納することで、処理を途切れることなく、かつ、処理において論理矛盾を来すことなく実行することができる。
【0045】
図4(b)は、プロセッサ装置100に対して与えられるシナリオ情報200の詳細例を示すデータ概念図である。シナリオ情報200は、処理すべきタスク数分が、メモリ102に格納されている。当該シナリオ情報200は、予めプログラムにより設定され、格納されている構成としてもよいし、
図4(a)に示すような、学習モデルの入力を受け付けて、スケジューラ110がこれを細分化し、シナリオ情報200を定義する構成としてもよい。
【0046】
図4(b)に示すシナリオ情報200は、
図4(a)に示す学習モデルの一ノードにおける処理を細分化した、AI構造(学習モデル)のメタ記述である。
図4(b)において、ユニット番号とは、
図4(a)における各ノードを識別可能にするための識別子である。次のリストとは、
図4(b)に示すシナリオ情報200で示される処理を実行した後に、次に実行する処理(ユニット番号)を示す情報であり、他のシナリオ情報200との依存関係を示す情報のことである。処理装置番号とは、シナリオ情報200で実行する処理内容を示すものであり、どのプロセス(加算、積算など)を実行するのかを指定する情報である。例えば、処理装置番号1が加算器である場合には、本シナリオ情報200による処理は加算を行うことになる。なお、ここでいう処理装置番号は、演算装置10のうちのいずれか(一又は複数の演算装置10)を指定するための情報である。画像サイズとは、処理の対象となるデータのサイズを規定する情報である。なお、ここでは、画像サイズとしているが、これは画像処理を想定しているためであり、画像処理以外の処理を行う場合には、処理サイズとなる。パラメータアドレスは、処理対象のデータを格納しているレジスタメモリ104のアドレスを指定する情報である。バッファ情報は、どの単位(例えば、画像であれば、フレーム単位であったり、ライン単位であったりなど)での処理を行うものかを指定する情報である。また、転送量とは、何次元の処理を行うのかを示す情報であり、例えば、画像処理であれば、2次元の処理を行うことになる。
【0047】
スケジューラ110は、
図4(b)に示すようなシナリオ情報200を参照して、DMA101に、メモリ102から処理対象のデータを読み出して、パラメータアドレスで示されるアドレスを有するレジスタメモリ104のレジスタに当該データを格納させる。また、スケジューラ110は、他のシナリオ情報200において、次のリストとして、処理対象のシナリオ情報200で示されるユニット番号を有する処理が全て終了していることを確認した上で、処理装置番号で示される処理を演算装置10に指定し、処理の開始を指示する。これにより、当該演算装置10内の複数のプロセッサ106は、レジスタメモリ104のアドレスを変更しながら、指定された同一の命令(当該演算装置10が実行すべき演算内容)を、指定された処理数分だけ、実行する。
【0048】
上述のようなプロセッサ装置100において、更に、レジスタメモリ104に対してバンクを設定する構成としてもよい。バンクとは、各プロセッサ106がアクセス可能な領域の単位のことである。バンクは、アクセス要求が発生する領域といってもよい。即ち、バンクは、上記プロセッサ装置100において、演算装置10内の各プロセッサ106が実行する同一の命令(当該演算装置10が実行すべき演算内容)の処理対象となるデータが格納されている領域ともいえる。本実施形態では、バンクは、上述の第1レジスタ群104a、第2レジスタ群104bと同様に、レジスタメモリ104に属する複数のレジスタにより構成されるレジスタ群である。なお、バンクは、複数のプロセッサ106に対してそれぞれ定義され、複数のプロセッサ106の各々が、自身に対してバンクとして定義されたレジスタ群からデータを読み出して、命令を実行する。なお、1つのプロセッサ106に対して定義されるバンクに属するレジスタが、他のプロセッサ106に対して定義される他のバンクに属することはない。
【0049】
バンクは、予めレジスタメモリ104の特定の領域範囲(レジスタ群)に対して設定されている構成としてもよいし、演算装置10内のコントローラ105が処理内容に応じて、レジスタメモリ104に対してその領域範囲を設定する構成としてもよい。演算装置10内のコントローラ105が設定する場合には、シナリオ情報200のバッファ情報に基づいて、アクセス対象となっていないレジスタメモリ104の領域から、シナリオ情報200で実行する処理のデータを格納する領域を決定する。
【0050】
図5は、プロセッサ装置100において、レジスタメモリ104に対して、バンク104cから104jを設定した場合であって、演算装置10aから10cの3台を備える構成例を示した図である。DMA101は、スケジューラ110からの指示に従って、メモリ(SDRAM)102に格納されているシナリオ情報やプログラムに応じて、レジスタメモリ104内のいずれのバンクにデータを格納するかを決定する。同様に、演算装置10aから10c各々は、スケジューラ110からの指示に従って、マルチプレクサ103を介して、バンク104cから104jのうち、処理対象のデータを格納しているバンクからデータを読み出す。そして、演算装置10aから10c各々は、それぞれに対して指定されている同一の命令(各演算装置10aから10cが実行すべき演算内容)をバンク内のアドレス(レジスタメモリ104のアドレス)を変更しながら実行し、演算結果を同一のバンクまたは指定されている他のバンクに対して書き込む。
【0051】
このように、レジスタメモリ104に対してバンクを設定することで、例えば、
図6に示すような処理を実現することができる。
【0052】
DMA101は、処理対象のデータをメモリ102から読み出し、バンク104jに書き込む。演算装置10cは、バンク104jに書き込まれたデータを対象に、同一の命令(演算装置10cが実行すべき演算内容)を、バンク104j内のアドレスを変更しながら実行し、その演算結果をバンク104hに書き込む。その後、演算装置10bが、バンク104hに書き込まれた演算結果を対象に、同一の命令(演算装置10bが実行すべき演算内容)を、バンク104h内のアドレスを変更しながら実行し、その結果をバンク104fに格納する。その後、演算装置10aは、バンク104fに書き込まれた演算結果を対象に、同一の命令(演算装置10aが実行すべき演算内容)を、バンク104f内のアドレスを変更しながら実行し、その演算結果をバンク104dに格納する。そして、DMA101は、バンク104dに格納された最終の演算結果をメモリ102に書き込む。
【0053】
このように、DMA101及び演算装置10aから10c各々は、処理対象のデータが、アクセス対象のバンクに格納されていれば、並列処理が可能である。演算装置10aから10c各々は、各演算装置10aから10cに対応して指定された命令の処理数分を処理すると、処理が完了したことを示す終了フラグをスケジューラ110に伝達する。これによって、スケジューラ110は、次の命令を処理が終了した演算装置10aから10cに対して与えることができるとともに、処理間で依存関係がある場合には、次の処理の開始を指示したりすることができる。また、このように、演算装置10aから10cに対してバンクを設定している場合、スケジューラ110は、処理上の必要に応じて、演算装置10aから10cに他のプロセッサに対して割り当てられているバンクを参照させて、処理の自由度の向上を図ってもよい。例えば、画像の1ライン分の画素が格納されているレジスタ群をバンクとして設定している場合に、処理の内容によって、他のラインの画素を参照する必要があるときになど、各演算装置10内のコントローラ105から当該演算装置10に対してオフセットとして、他の演算装置10に対して設定されているバンクを参照するようにアドレスを指定する構成としてもよい。このような構成とすることで画像処理の汎用性及びその自由度を大きく向上させることができる。
【0054】
また、上記のようなレジスタ群の設定と併せて、上記
図2で説明したDMA101によるレジスタメモリ104とメモリ102との間のアクセスのために、
図2における第1レジスタ群及び第2レジスタ群に相当するレジスタ群を更に設定しても良い。
【0055】
図5や
図6に示すプロセッサ装置100による処理において有用な例として画像処理が挙げられる。例えば、
図7に示すような、1920×1080ピクセルの画像処理を行う場合を考える。このときに、例えば、960×16の画素範囲を処理単位系として処理装置10に割り当てるとした場合、
図7に示すように、(0、0)から(959、15)を領域Aとしたときに、当該領域Aの各画素のデータを、1つのバンクとしてバンク104cに格納する。同様に、(0、15)から(959、30)を領域Bとしたときに、当該領域Bの各画素のデータを1つのバンクとしてバンク104dに格納する。このようにして、
図7に示すように、画像を複数の領域に区分し、それぞれの領域を1つのバンクに割り当てて処理を行う。そして、横960個の画素の値各々を960個のレジスタ格納し、物理プロセッサ数を8個とすれば、8個の画素に対して処理を行った後に、8個分のアドレスだけスライドして、次の8個の画素に対して処理を行う。画像処理においては、各画素に対して、全く同じ処理を施すことが多いため、そのような繰り返し処理に対して、プロセッサ装置100は、特に有効である。
【0056】
図7に示すような領域Aを一つのバンクに割り当てるデータとし、処理を行うことで、無駄なく処理を実行することができる。即ち、あるバンクとして、960画素分のデータに対して順に、Xという処理を実行して処理後のデータを別のバンクに格納し、格納後のデータに対して別のYという処理を施すとともに、新たな960画素分のデータを対象にXの処理を施すといった処理が可能となる。
【0057】
このとき、
図7に示すように、バンクとして設定可能なレジスタメモリの領域の関係上、大元のデータを複数の領域に分割して処理を行うことが考えられる。そして、その際には、隣接しあうバンク(隣接する他の領域の画素)のデータを参照することがある。そのため、そのような場合に、別のバンクを参照する構成にすると処理が複雑になるため、バンクとして設定した領域の端部が互いに重複しあうようにして設定してもよい。例えば、
図7に示すように、960×16の領域を一つのバンクとして設定する場合、(0、0)から(959、15)の領域の画素データを一つのバンクに格納したとき、(0、15)から(959、30)の領域の画素データを次のバンクに格納してもよい。これにより、他のバンク(隣接する他の領域の画素)のデータを参照する必要がなくなるので、処理が複雑化しない。なお、ここには、上下方向の領域でバンクを重複させる例を示したが、左右方向の領域においてもバンクを重複させてもよい。画像処理のように複数の対象(画像処理の場合、画素)に対して、同様の処理を繰り返し実行する場合に、特にプロセッサ装置100は有用である。
【0058】
なお、各プロセッサが処理するパイプラインの処理における一つ一つの演算が簡素であれば簡素であるほど、プロセッサの動作周波数を高くすることで、プロセッサ装置100全体における処理を高速化することができる。当該高速化を実現するために、プロセッサ106の動作周波数を可変とし、スケジューラ110又はコントローラ105が、プロセッサ106の動作周波数を変更する権限を有する構成としてもよい。そして、スケジューラ110又はコントローラ105は、シナリオ情報200に基づいて、プロセッサ106に割り当てた処理の内容に応じて、動作周波数を変更する構成としてもよい。例えば、スケジューラ110又はコントローラ105は、各種の処理に応じて、プロセッサ106の動作周波数を定めたテーブルを保持し、プロセッサに割り当てた処理に対応する動作周波数に変更するように構成してもよい。
【0059】
また、各演算装置10において処理すべき内容(プロセッサが実行すべき命令)が予め定められている場合には、処理において実行する演算の単位を簡単な処理に単純化することで、演算におけるパイプラインが長くなるものの、その処理速度を早くする(プロセッサの動作周波数を予め高い周波数に設定しておく)ことができる。その結果、処理全体が例えば、100サイクル後に結果を出すような演算であったとしても、各処理の処理時間を高速化できるので、処理全体の時間を短縮することもできる。
【0060】
また、上記プロセッサ装置100において、プロセッサ装置100が備えるプロセッサ数や、レジスタメモリ数は、いくつであってもよいが、レジスタメモリ全体としては、必要処理数を処理するのに十分な数のレジスタ数を備えることが望ましい。
【符号の説明】
【0061】
100 プロセッサ装置
101 DMA(メモリアクセス装置)
102 メモリ(外部メモリ)
103 マルチプレクサ
104 レジスタメモリ
105 コントローラ(制御部)
106 プロセッサ
110 スケジューラ