(57)【要約】  本発明に係るプロセッサ装置では、メモリアクセス装置は、外部メモリから処理対象のデータを読み出し、複数のレジスタ群のうち、複数のプロセッサがアクセスしていない第１のレジスタ群に書き込む。制御部は、複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納しているレジスタ群のアドレスを変更しながら、順次実行させる。スケジューラは、指定されたシナリオ情報に基づいて、複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指定し、メモリアクセス装置に対して複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指定する。
2019208566.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリと、
複数のプロセッサと、
処理対象のデータを格納するための複数のレジスタをそれぞれ含む、複数のレジスタ群と、
前記外部メモリから処理対象のデータを読み出し、前記複数のレジスタ群のうち、前記複数のプロセッサがアクセスしていない第１のレジスタ群に書き込むメモリアクセス装置と、
前記複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している１つのレジスタ群のアドレスを変更しながら、順次実行させる制御部と、
指定されたシナリオ情報に基づいて、前記複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指定し、前記メモリアクセス装置に対して、前記複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指定するスケジューラと、
を備えるプロセッサ装置。
【請求項２】
前記複数のレジスタ群の１つからなり、前記複数のプロセッサ各々に対して定義されるバンクをさらに備え、
前記複数のプロセッサ各々が、前記バンクとして定義されたレジスタ群からデータを読み出して、与えられた命令を実行する、請求項１に記載のプロセッサ装置。
【請求項３】
前記複数のプロセッサは、前記命令を実行した結果得られたデータを、当該データの元となった処理対象のデータを読み出した前記第１のレジスタ群に書き込み、
前記メモリアクセス装置は、前記複数のプロセッサにより前記第１のレジスタ群に書き込まれたデータを読み出し、前記外部メモリに書き込む、請求項１または請求項２に記載のプロセッサ装置。
【請求項４】
前記メモリアクセス装置は、前記複数のプロセッサが前記第１のレジスタ群に格納されているデータを用いて、前記同一の命令を実行している場合に、前記複数のレジスタ群に含まれ、前記第１のレジスタ群とは異なる複数のレジスタを含む第２レジスタ群に、前記複数のプロセッサが次に実行する命令の処理対象のデータを前記外部メモリから読み出して書き込む、請求項１から請求項３のいずれか１項に記載のプロセッサ装置。
【請求項５】
前記スケジューラは、前記複数のプロセッサが実行する命令に応じて、前記複数のプロセッサの動作速度を高速化する、請求項１から請求項４のいずれか１項に記載のプロセッサ装置。
【請求項６】
前記スケジューラは、深層学習における推論処理及び学習処理のための学習モデルであって、ノードとリンクからなる学習モデルを入力とし、
前記学習モデルにおける各ノードに対する入力を前記複数のレジスタ群の各レジスタに格納し、前記複数のプロセッサは、各ノードにおいて処理すべき演算を実行する、請求項１から請求項５のいずれか１項に記載のプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ装置に関する。
【背景技術】
【０００２】
近年、画像処理など、非常に処理量の多い処理を高速かつ簡易に行える処理装置が望まれている。そのような処理量の多い処理を高速に行う手法として、並列処理が有望である。しかしながら、並列処理は、プログラムの構築の専門性、データの依存関係によるプロセッサ間の通信など、様々な専門性の高い技術を必要とする。そこで、特許文献１は、複数のプロセッサと、レジスタメモリとを備えるマルチプロセッサ装置において、複数のプロセッサが、レジスタメモリのアドレッシングを変化させながら、同一の命令を、与えられた処理数分だけ実行し、処理数分の実行が終われば次の命令に切り替えて、次の与えられた処理数分だけ命令を実行する動作を繰り返させる技術を提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１６／０２４５０８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に示すようなプロセッサ装置においては、更なる高速化が求められている。上述のような処理量の多い処理の一つとして、深層学習における推論処理及び学習処理が挙げられる。深層学習における処理の実態が行列の積和演算であるので、プロセッサ装置に積和演算に特化した行列演算ユニットを多数搭載することで、その処理性能を向上させることが考えられる。しかしながら、この場合、当該プロセッサ装置は汎用性に欠けるという問題があった。【０００５】
そこで、本発明においては、様々な演算処理に適用可能でありながら、従来のプロセッサ装置よりも高速化が可能なプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の一態様に係るプロセッサ装置は、外部メモリと、複数のプロセッサと、複数のレジスタ群と、メモリアクセス装置と、制御部と、スケジューラとを備える。複数のレジスタ群のそれぞれは、処理対象のデータを格納するための複数のレジスタを含む。メモリアクセス装置は、外部メモリから処理対象のデータを読み出し、複数のレジスタ群のうち、複数のプロセッサがアクセスしていない第１のレジスタ群に書き込む。制御部は、複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している１つのレジスタ群のアドレスを変更しながら、順次実行させる。スケジューラは、指定されたシナリオ情報に基づいて、複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指定し、メモリアクセス装置に対して、複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指定する。【０００７】
また、以上のプロセッサ装置において、複数のレジスタ群の１つからなり、複数のプロセッサ各々に対して定義されるバンクを備える構成を採用することもできる。本構成では、複数のプロセッサ各々が、バンクとして定義されたレジスタ群からデータを読み出して、与えられた命令を実行する。【０００８】
また、上記プロセッサ装置において、複数のプロセッサは、命令を実行した結果得られたデータを、当該データの元となった処理対象のデータを読み出した第１のレジスタ群に書き込む構成としてもよい。この場合、メモリアクセス装置は、複数のプロセッサにより第１のレジスタ群に書き込まれたデータを読み出し、外部メモリに書き込む構成としてもよい。【０００９】
また、上記プロセッサ装置において、メモリアクセス装置は、複数のプロセッサが第１のレジスタ群に格納されているデータを用いて、同一の命令を実行している場合に、複数のレジスタ群に含まれ、第１のレジスタ群とは異なる複数のレジスタを含む第２レジスタ群に、複数のプロセッサが次に実行する命令の処理対象のデータを外部メモリから読み出して書き込む構成としてもよい。【００１０】
また、上記プロセッサ装置において、スケジューラは、複数のプロセッサが実行する命令に応じて、各プロセッサの動作速度を高速化する構成としてもよい。【００１１】
また、スケジューラは、深層学習における推論処理及び学習処理のための学習モデルであって、ノードとリンクからなる学習モデルを入力としてもよい。この場合、学習モデルにおける各ノードに対する入力を複数のレジスタ群の各レジスタに格納し、複数のプロセッサは、各ノードにおいて処理すべき演算を実行する構成としてもよい。
【発明の効果】
【００１２】
本発明の一態様に係るプロセッサ装置は、同一の命令を、レジスタメモリのアドレスをずらしながら、指定された処理数分だけ処理することにより、簡単に並列処理を実現できるとともに、複数のプロセッサがアクセス可能なバンクを設定することにより、更に処理の並列度を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の一実施態様におけるプロセッサ装置の構成例を示すブロック図である。
【図２】図２は、本発明の一実施態様におけるプロセッサ装置による処理イメージを示す図である。
【図３】図３は、本発明の一実施態様におけるプロセッサの処理イメージを示す図である。
【図４】図４（ａ）は、深層学習における学習モデルの一例を示す図であり、図４（ｂ）は、図１は、本発明の一実施態様におけるコントローラに対して与えられるシナリオ情報の構成例を示すデータ概念図である。
【図５】図５は、本発明の一実施態様におけるプロセッサ装置の他の構成例を示すブロック図である。
【図６】図６は、図５に示す構成のプロセッサ装置による処理イメージを示す図である。
【図７】図７は、本発明の一実施態様におけるプロセッサ装置により画像処理を行う場合の画像の区分例と、バンクの割り当て例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施態様に係るプロセッサ装置について、図面を参照しながら詳細に説明する。
【００１５】
本発明に係るプロセッサ装置１００は、外部メモリと、複数のプロセッサと、複数のレジスタ群と、メモリアクセス装置と、制御部と、スケジューラとを備える。各レジスタ群は、処理対象のデータを格納するための複数のレジスタを含む。メモリアクセス装置は、外部メモリから処理対象のデータを読み出し、複数のレジスタ群のうち、複数のプロセッサがアクセスしていない第１のレジスタ群に書き込む。制御部は、複数のプロセッサ各々で、同一の命令を、処理対象のデータを格納している１つのレジスタ群のアドレスを変更しながら、順次実行させる。スケジューラは、指定されたシナリオ情報に基づいて、複数のプロセッサに対して、実行する命令及び処理対象のレジスタ群を指定し、メモリアクセス装置に対して、複数のレジスタ群のうち、書き込むべきレジスタ群及び書き込むべき処理対象のデータを指定する。
【００１６】
ここで、「外部メモリ」とは、処理対象のデータを記憶する機能を有する大容量の記録媒体である。
【００１７】
また、「レジスタメモリ」とは、処理対象のデータを一時的に記憶する機能を有し、外部メモリよりも小容量の記録媒体である。
【００１８】
「プロセッサ」とは、コンピュータシステムにおいて命令を実行するためのハードウェアのことである。
【００１９】
「アクセス」とは、メモリからのデータの読み出し、または、メモリへのデータの書き込みのことをいう。
【００２０】
「バンク」とは、レジスタメモリに対して設定されるプロセッサがアクセス可能な領域のことをいう。レジスタメモリに対してバンクの設定を行えば、アクセスが互いに衝突しない限り、互いに異なるプロセッサが、それぞれ異なるバンクに同時アクセスできるようになる。
【００２１】
また、「プロセッサに対してバンクを定義する」とは、当該プロセッサがレジスタメモリ中において、アクセス可能なアドレス範囲を指定することをいう。
【００２２】
図１は、本発明の一実施態様に係るプロセッサ装置１００の構成を示すブロック図である。図１に示すように、プロセッサ装置１００は、ＤＭＡ（Dynamic Memory Access controller）１０１と、メモリ１０２と、レジスタメモリ１０４と、スケジューラ１１０と、複数の演算装置１０を備える。演算装置１０各々は、マルチプレクサ１０３と、コントローラ１０５と、複数のプロセッサ１０６とを備える。スケジューラ１１０は、ＤＭＡ１０１と、レジスタメモリ１０４と、各演算装置１０のコントローラ１０５と接続している。ＤＭＡ１０１は、スケジューラ１１０と、メモリ１０２と、レジスタメモリ１０４と、各演算装置１０のプロセッサ１０６各々と接続している。レジスタメモリ１０４は、ＤＭＡ１０１と、スケジューラ１１０と、各演算装置１０のマルチプレクサ１０３と接続している。
【００２３】
スケジューラ１１０は、メモリ１０２に格納されているシナリオ情報とプログラムに従って、メモリ１０２からデータを読み出し、レジスタメモリ１０４に処理に必要なデータを書き込むようＤＭＡ１０１に指示する。また、スケジューラ１１０は、当該シナリオ情報に従って、実行すべき演算内容を特定し、演算内容に応じた処理を実行する一の演算装置１０を複数の演算装置１０の中から指定する。スケジューラ１１０は、当該演算装置１０に対して実行すべき演算内容及びアクセスするレジスタメモリ１０４の領域（アドレス）を指示する。
【００２４】
なお、ここでは、演算内容に応じた処理を実行する演算装置１０として一の演算装置１０を指定する場合を例に説明したが、演算内容に応じた処理を実行する演算装置１０の数は１個に限らず、複数個であってもよい。
【００２５】
ＤＭＡ１０１は、スケジューラ１１０からの指示に従って、メモリ１０２からデータを読み出し、レジスタメモリ１０４に格納するメモリアクセス装置として機能する。また、ＤＭＡ１０１は、レジスタメモリ１０４に格納されているプロセッサ１０６による演算の結果を読み出して、メモリ１０２に書き込む。
【００２６】
メモリ１０２は、プロセッサ装置１００が処理すべき対象となるデータや、処理の内容を示したシナリオ情報とプログラムを記憶する機能を有する大容量の記憶装置である。ここで大容量とはレジスタメモリ１０４よりも容量が大きいことを意味する。メモリ１０２は、例えば、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）により実現することができる。なお、メモリ１０２は外部メモリに相当する。
【００２７】
マルチプレクサ１０３は、プロセッサ１０６のレジスタアクセスに対し与えられた命令に従って、レジスタメモリ１０４のアクセスを行う。
【００２８】
レジスタメモリ１０４は、複数のレジスタからなる。レジスタメモリ１０４は、プロセッサ１０６の処理対象となるデータを一時的に格納するメモリである。レジスタメモリ１０４は、例えば、ＳＲＡＭ（Static Random Access Memory）により実現することができる。レジスタの数としては、論理的なプロセッサ数に対応する数のレジスタが用意されている。例えば、プロセッサ１つあたり１６個のレジスタを有し、物理的なプロセッサ数が８個あるとし、論理的なプロセッサ数が１０２４個あるとすれば、１６×１０２４で１６３８４個のレジスタを備える構成としてよい。即ち、論理的に保持するレジスタは、プロセッサ１０２４個分であり、単位時間（１サイクル）当たり物理的に処理できる数は、最大８個となる。
【００２９】
演算装置１０内のコントローラ１０５は、スケジューラ１１０から指示された処理（当該演算装置１０が実行すべき演算内容）とレジスタメモリ１０４のアドレスに従って、当該演算装置１０内の各プロセッサに対して、処理すべき演算内容（プロセッサが実行すべき命令）を指定するとともに、処理対象のデータが格納されているレジスタメモリ１０４のアドレスを指定する。即ち、演算装置１０内のコントローラ１０５は、各プロセッサ１０６に対してアクセス対象となるレジスタメモリ１０４のアドレスを変更しながら、命令を順次実行させる制御装置として機能する。コントローラ１０５は、演算装置１０内の各プロセッサ１０６に対して、同一の命令（当該演算装置１０が実行すべき演算内容）を、処理対象のレジスタメモリ１０４のアドレスを変更しながら、順次実行させる。コントローラ１０５は、当該演算装置１０内の各プロセッサ１０６を管理し、プロセッサ１０６から、指定された処理の終了信号を受け付けると、次の命令を指定する。
【００３０】
プロセッサ１０６は、本実施の形態においては、演算装置１０内に物理的に８個備えられている。ここでは、プロセッサ１０６の、ＳＩＭＤとして処理できる論理的な個数は、１０２４個とする。演算装置１０内のプロセッサ１０６は、当該演算装置１０内のコントローラ１０５からの指示に従って、マルチプレクサ１０３を介して、レジスタメモリ１０４の指定されたアドレスに格納されているデータを読み出して処理し、レジスタメモリ１０４の指定されたアドレスに演算結果を格納する。当該演算装置１０内のプロセッサ１０６各々は、同一の命令（当該演算装置１０が実行すべき演算内容）を、処理対象のデータを変更しながら、即ち、読み出し元のレジスタメモリ１０４のアドレスを変更しながら、実行する。
【００３１】
図２は、本発明に係るプロセッサ装置１００の基本的処理構成の流れを示すイメージ図である。
【００３２】
本実施の形態に係るプロセッサ装置１００は、入力されたシナリオ情報（メモリ１０２に格納されているシナリオ情報）２００に従って、以下の処理を実行する。
【００３３】
（１）スケジューラ１１０は、シナリオ情報２００の入力を受け付けて、シナリオ情報２００で指定されている演算装置１０を複数の演算装置１０の中から特定する。また、スケジューラ１１０は、特定した演算装置１０に対して、当該演算装置１０が実行すべき処理内容及びアクセスすべきレジスタメモリ１０４のアドレスを伝達する。さらに、スケジューラ１１０は、ＤＭＡ１０１に対してメモリ１０２から読み出して、レジスタメモリ１０４に書き込むデータを指定する。
【００３４】
（２）ＤＭＡ１０１は、処理対象となるデータをメモリ１０２から読み出し、第２レジスタ群１０４ｂに格納する。ここで、第２レジスタ群１０４ｂは、レジスタメモリ１０４に属する複数のレジスタにより構成される記憶領域である。
【００３５】
（３）演算装置１０内の各プロセッサ１０６は、第２レジスタ群１０４ｂに格納されているデータに対して、コントローラ１０５により指定された同一の命令（当該演算装置１０が実行すべき演算内容）を、参照する第２レジスタ群１０４ｂのアドレスを変更しながら実行する。なお、図２では、複数のプロセッサ１０６を斜めに示すことで、時間の流れを示している。すなわち、複数のプロセッサ１０６が、レジスタメモリ１０４から読み出したデータに対して何らかの演算を施し、演算後の値に、更に別の演算を施している様子を示している。
【００３６】
（４）演算装置１０内の各プロセッサ１０６が第２レジスタ群１０４ｂに格納されているデータを用いて、同一の命令（当該演算装置１０が実行すべき演算内容）を実行している間に、ＤＭＡ１０１は、第１レジスタ群１０４ａに対して次に処理対象となるデータをメモリ１０２から読み出して格納する。ここで、第１レジスタ群１０４ａは、レジスタメモリ１０４において、第２レジスタ群１０４ｂに属さない複数のレジスタにより構成される記憶領域である。
【００３７】
（５）演算装置１０内の各プロセッサ１０６は、処理結果（当該演算装置１０が実行すべき演算を行った結果）を第２レジスタ群１０４ｂに格納する。なお、格納先は予め指定されており、ＤＭＡ１０１がアクセスしていない領域であれば、第２レジスタ群１０４ｂ以外のレジスタ群であってもよい。
【００３８】
（６）ＤＭＡ１０１は、第２レジスタ群１０４ｂに格納されているデータを読み出して、メモリ１０２に格納する。
【００３９】
（７）一方、ＤＭＡ１０１が第２レジスタ群１０４ｂに格納された演算結果を読み出してメモリ１０２に格納している間、演算装置１０内の各プロセッサ１０６は、コントローラ１０５から指定された同一の命令（当該演算装置１０が実行すべき演算内容）を、参照する第１レジスタ群１０４ａのアドレスを変更しながら実行する。なお、上述のとおり、図２では、複数のプロセッサ１０６を斜めに示すことで、時間の流れを示している。
【００４０】
上述の（１）から（７）に示す処理を繰り返すことにより、演算装置１０は、処理対象のデータがレジスタメモリ１０４に格納されるのを待つ必要がない。そのため、各演算装置１０が、常に稼働して処理を実行している状態を作り出すことができ、処理の高速化を実現することができる。
【００４１】
このようにプロセッサ装置１００の各演算装置１０は、第１レジスタ群１０４ａ、第２レジスタ群１０４ｂのそれぞれに対して、スケジューラ１１０から指定されたタイミングでアクセスしてデータを読み出し同一の命令（演算装置１０に対して指示された処理）を実行する。また、一方で、ＤＭＡ１０１は、演算装置１０の処理対象となっていないレジスタ群から処理結果を読み出して、メモリ１０２に書き込んだり、次の処理対象となるデータを書き込んだりする。これにより、プロセッサ装置１００において、処理対象となるデータが全てレジスタメモリ１０４に格納されている状態よりも、処理を高速化することができる。また、プロセッサ装置１００においては、当該態様により、レジスタメモリ１０４として高速アクセス可能な高価なものを使用する必要がなく、安価なプロセッサ装置１００を提供することができる。
【００４２】
なお、図２においては、演算装置１０内の処理を示したため、当該処理をわかりやすくするために、マルチプレクサ１０３の図示を省略している。
【００４３】
図３は、各プロセッサ１０６の処理イメージを示す図である。図３に示すように、例えば、プロセッサ装置１００の１つの演算装置１０にプロセッサ１０６が８台備えられているとした場合、演算装置１０内の各プロセッサ１０６は、所定数（例えば、８単位ずつ）ずつ、アクセスするレジスタメモリのアドレスをスライドしながら（ずらしながら）、命令を実行する。即ち、演算装置１０内の各プロセッサ１０６は同一の命令（当該演算装置１０が実行すべき演算内容）を、予め定められた処理数Ｎ（論理プロセッサ数）分だけ、参照するデータを変更しながら、実行することになる。したがって、プロセッサ装置１００においては、処理数Ｎをプロセッサ数で除した値が、パイプライン段数よりも大きい限りハザード、即ち、レジスタメモリ１０４からのデータの読み出しと書き込みが重複するという事態は発生しない。換言すれば、プロセッサ装置１００は、処理数Ｎが多いほどパイプライン段数を多くすることができるといえる。したがって、プロセッサ装置１００は、各パイプラインにおいて単純な演算を実行するようにし、これを積み重ねることで、高度な演算も可能となる。このような構成とすることで、プロセッサ装置１００は、複雑なメモリアクセス制御を行う必要もない。
【００４４】
プロセッサ装置１００は、深層学習における推論処理及び学習処理に利用することができる、深層学習における推論処理及び学習処理は、上述したように、その大半が積和演算である。図４（ａ）には、深層学習における推論処理及び学習処理に係る学習モデルの例を示している。一般に、当該学習モデルは、ノードとノード間を接続するリンクにより表現されることが知られている。図４（ａ）においては、簡略化した例を示しているが、学習モデルは、入力層、畳み込み層、プーリング層、出力層などから成る。当該ノードにおいては、処理内容（積算、加算など）が定義され、リンクにより依存関係が示される。例えば、このような推論処理として、入力された画像が何の画像であるかを推定する推論処理を行う場合、レジスタメモリ１０４には、画像の一ライン分の画素値が格納され、それらに対して、プロセッサ１０６各々が同一の処理（ｆ１、ｆ２、…のノードで示される各処理）を実行する。そして、当該一ライン分の処理が完了したら、プロセッサ１０６各々が次のラインの処理を行うというようにして、一枚の画像分の推論処理を行うことができる。ＤＭＡ１０１は、複数のプロセッサ１０６の処理対象となっているラインのデータを格納しているレジスタ群以外のレジスタ群に次のラインのデータを格納することで、処理を途切れることなく、かつ、処理において論理矛盾を来すことなく実行することができる。
【００４５】
図４（ｂ）は、プロセッサ装置１００に対して与えられるシナリオ情報２００の詳細例を示すデータ概念図である。シナリオ情報２００は、処理すべきタスク数分が、メモリ１０２に格納されている。当該シナリオ情報２００は、予めプログラムにより設定され、格納されている構成としてもよいし、図４（ａ）に示すような、学習モデルの入力を受け付けて、スケジューラ１１０がこれを細分化し、シナリオ情報２００を定義する構成としてもよい。
【００４６】
図４（ｂ）に示すシナリオ情報２００は、図４（ａ）に示す学習モデルの一ノードにおける処理を細分化した、ＡＩ構造（学習モデル）のメタ記述である。図４（ｂ）において、ユニット番号とは、図４（ａ）における各ノードを識別可能にするための識別子である。次のリストとは、図４（ｂ）に示すシナリオ情報２００で示される処理を実行した後に、次に実行する処理（ユニット番号）を示す情報であり、他のシナリオ情報２００との依存関係を示す情報のことである。処理装置番号とは、シナリオ情報２００で実行する処理内容を示すものであり、どのプロセス（加算、積算など）を実行するのかを指定する情報である。例えば、処理装置番号１が加算器である場合には、本シナリオ情報２００による処理は加算を行うことになる。なお、ここでいう処理装置番号は、演算装置１０のうちのいずれか（一又は複数の演算装置１０）を指定するための情報である。画像サイズとは、処理の対象となるデータのサイズを規定する情報である。なお、ここでは、画像サイズとしているが、これは画像処理を想定しているためであり、画像処理以外の処理を行う場合には、処理サイズとなる。パラメータアドレスは、処理対象のデータを格納しているレジスタメモリ１０４のアドレスを指定する情報である。バッファ情報は、どの単位（例えば、画像であれば、フレーム単位であったり、ライン単位であったりなど）での処理を行うものかを指定する情報である。また、転送量とは、何次元の処理を行うのかを示す情報であり、例えば、画像処理であれば、２次元の処理を行うことになる。
【００４７】
スケジューラ１１０は、図４（ｂ）に示すようなシナリオ情報２００を参照して、ＤＭＡ１０１に、メモリ１０２から処理対象のデータを読み出して、パラメータアドレスで示されるアドレスを有するレジスタメモリ１０４のレジスタに当該データを格納させる。また、スケジューラ１１０は、他のシナリオ情報２００において、次のリストとして、処理対象のシナリオ情報２００で示されるユニット番号を有する処理が全て終了していることを確認した上で、処理装置番号で示される処理を演算装置１０に指定し、処理の開始を指示する。これにより、当該演算装置１０内の複数のプロセッサ１０６は、レジスタメモリ１０４のアドレスを変更しながら、指定された同一の命令（当該演算装置１０が実行すべき演算内容）を、指定された処理数分だけ、実行する。
【００４８】
上述のようなプロセッサ装置１００において、更に、レジスタメモリ１０４に対してバンクを設定する構成としてもよい。バンクとは、各プロセッサ１０６がアクセス可能な領域の単位のことである。バンクは、アクセス要求が発生する領域といってもよい。即ち、バンクは、上記プロセッサ装置１００において、演算装置１０内の各プロセッサ１０６が実行する同一の命令（当該演算装置１０が実行すべき演算内容）の処理対象となるデータが格納されている領域ともいえる。本実施形態では、バンクは、上述の第１レジスタ群１０４ａ、第２レジスタ群１０４ｂと同様に、レジスタメモリ１０４に属する複数のレジスタにより構成されるレジスタ群である。なお、バンクは、複数のプロセッサ１０６に対してそれぞれ定義され、複数のプロセッサ１０６の各々が、自身に対してバンクとして定義されたレジスタ群からデータを読み出して、命令を実行する。なお、１つのプロセッサ１０６に対して定義されるバンクに属するレジスタが、他のプロセッサ１０６に対して定義される他のバンクに属することはない。
【００４９】
バンクは、予めレジスタメモリ１０４の特定の領域範囲（レジスタ群）に対して設定されている構成としてもよいし、演算装置１０内のコントローラ１０５が処理内容に応じて、レジスタメモリ１０４に対してその領域範囲を設定する構成としてもよい。演算装置１０内のコントローラ１０５が設定する場合には、シナリオ情報２００のバッファ情報に基づいて、アクセス対象となっていないレジスタメモリ１０４の領域から、シナリオ情報２００で実行する処理のデータを格納する領域を決定する。
【００５０】
図５は、プロセッサ装置１００において、レジスタメモリ１０４に対して、バンク１０４ｃから１０４ｊを設定した場合であって、演算装置１０ａから１０ｃの３台を備える構成例を示した図である。ＤＭＡ１０１は、スケジューラ１１０からの指示に従って、メモリ（ＳＤＲＡＭ）１０２に格納されているシナリオ情報やプログラムに応じて、レジスタメモリ１０４内のいずれのバンクにデータを格納するかを決定する。同様に、演算装置１０ａから１０ｃ各々は、スケジューラ１１０からの指示に従って、マルチプレクサ１０３を介して、バンク１０４ｃから１０４ｊのうち、処理対象のデータを格納しているバンクからデータを読み出す。そして、演算装置１０ａから１０ｃ各々は、それぞれに対して指定されている同一の命令（各演算装置１０ａから１０ｃが実行すべき演算内容）をバンク内のアドレス（レジスタメモリ１０４のアドレス）を変更しながら実行し、演算結果を同一のバンクまたは指定されている他のバンクに対して書き込む。
【００５１】
このように、レジスタメモリ１０４に対してバンクを設定することで、例えば、図６に示すような処理を実現することができる。
【００５２】
ＤＭＡ１０１は、処理対象のデータをメモリ１０２から読み出し、バンク１０４ｊに書き込む。演算装置１０ｃは、バンク１０４ｊに書き込まれたデータを対象に、同一の命令（演算装置１０ｃが実行すべき演算内容）を、バンク１０４ｊ内のアドレスを変更しながら実行し、その演算結果をバンク１０４ｈに書き込む。その後、演算装置１０ｂが、バンク１０４ｈに書き込まれた演算結果を対象に、同一の命令（演算装置１０ｂが実行すべき演算内容）を、バンク１０４ｈ内のアドレスを変更しながら実行し、その結果をバンク１０４ｆに格納する。その後、演算装置１０ａは、バンク１０４ｆに書き込まれた演算結果を対象に、同一の命令（演算装置１０ａが実行すべき演算内容）を、バンク１０４ｆ内のアドレスを変更しながら実行し、その演算結果をバンク１０４ｄに格納する。そして、ＤＭＡ１０１は、バンク１０４ｄに格納された最終の演算結果をメモリ１０２に書き込む。
【００５３】
このように、ＤＭＡ１０１及び演算装置１０ａから１０ｃ各々は、処理対象のデータが、アクセス対象のバンクに格納されていれば、並列処理が可能である。演算装置１０ａから１０ｃ各々は、各演算装置１０ａから１０ｃに対応して指定された命令の処理数分を処理すると、処理が完了したことを示す終了フラグをスケジューラ１１０に伝達する。これによって、スケジューラ１１０は、次の命令を処理が終了した演算装置１０ａから１０ｃに対して与えることができるとともに、処理間で依存関係がある場合には、次の処理の開始を指示したりすることができる。また、このように、演算装置１０ａから１０ｃに対してバンクを設定している場合、スケジューラ１１０は、処理上の必要に応じて、演算装置１０ａから１０ｃに他のプロセッサに対して割り当てられているバンクを参照させて、処理の自由度の向上を図ってもよい。例えば、画像の１ライン分の画素が格納されているレジスタ群をバンクとして設定している場合に、処理の内容によって、他のラインの画素を参照する必要があるときになど、各演算装置１０内のコントローラ１０５から当該演算装置１０に対してオフセットとして、他の演算装置１０に対して設定されているバンクを参照するようにアドレスを指定する構成としてもよい。このような構成とすることで画像処理の汎用性及びその自由度を大きく向上させることができる。
【００５４】
また、上記のようなレジスタ群の設定と併せて、上記図２で説明したＤＭＡ１０１によるレジスタメモリ１０４とメモリ１０２との間のアクセスのために、図２における第１レジスタ群及び第２レジスタ群に相当するレジスタ群を更に設定しても良い。
【００５５】
図５や図６に示すプロセッサ装置１００による処理において有用な例として画像処理が挙げられる。例えば、図７に示すような、１９２０×１０８０ピクセルの画像処理を行う場合を考える。このときに、例えば、９６０×１６の画素範囲を処理単位系として処理装置１０に割り当てるとした場合、図７に示すように、（０、０）から（９５９、１５）を領域Ａとしたときに、当該領域Ａの各画素のデータを、１つのバンクとしてバンク１０４ｃに格納する。同様に、（０、１５）から（９５９、３０）を領域Ｂとしたときに、当該領域Ｂの各画素のデータを１つのバンクとしてバンク１０４ｄに格納する。このようにして、図７に示すように、画像を複数の領域に区分し、それぞれの領域を１つのバンクに割り当てて処理を行う。そして、横９６０個の画素の値各々を９６０個のレジスタ格納し、物理プロセッサ数を８個とすれば、８個の画素に対して処理を行った後に、８個分のアドレスだけスライドして、次の８個の画素に対して処理を行う。画像処理においては、各画素に対して、全く同じ処理を施すことが多いため、そのような繰り返し処理に対して、プロセッサ装置１００は、特に有効である。
【００５６】
図７に示すような領域Ａを一つのバンクに割り当てるデータとし、処理を行うことで、無駄なく処理を実行することができる。即ち、あるバンクとして、９６０画素分のデータに対して順に、Ｘという処理を実行して処理後のデータを別のバンクに格納し、格納後のデータに対して別のＹという処理を施すとともに、新たな９６０画素分のデータを対象にＸの処理を施すといった処理が可能となる。
【００５７】
このとき、図７に示すように、バンクとして設定可能なレジスタメモリの領域の関係上、大元のデータを複数の領域に分割して処理を行うことが考えられる。そして、その際には、隣接しあうバンク（隣接する他の領域の画素）のデータを参照することがある。そのため、そのような場合に、別のバンクを参照する構成にすると処理が複雑になるため、バンクとして設定した領域の端部が互いに重複しあうようにして設定してもよい。例えば、図７に示すように、９６０×１６の領域を一つのバンクとして設定する場合、（０、０）から（９５９、１５）の領域の画素データを一つのバンクに格納したとき、（０、１５）から（９５９、３０）の領域の画素データを次のバンクに格納してもよい。これにより、他のバンク（隣接する他の領域の画素）のデータを参照する必要がなくなるので、処理が複雑化しない。なお、ここには、上下方向の領域でバンクを重複させる例を示したが、左右方向の領域においてもバンクを重複させてもよい。画像処理のように複数の対象（画像処理の場合、画素）に対して、同様の処理を繰り返し実行する場合に、特にプロセッサ装置１００は有用である。
【００５８】
なお、各プロセッサが処理するパイプラインの処理における一つ一つの演算が簡素であれば簡素であるほど、プロセッサの動作周波数を高くすることで、プロセッサ装置１００全体における処理を高速化することができる。当該高速化を実現するために、プロセッサ１０６の動作周波数を可変とし、スケジューラ１１０又はコントローラ１０５が、プロセッサ１０６の動作周波数を変更する権限を有する構成としてもよい。そして、スケジューラ１１０又はコントローラ１０５は、シナリオ情報２００に基づいて、プロセッサ１０６に割り当てた処理の内容に応じて、動作周波数を変更する構成としてもよい。例えば、スケジューラ１１０又はコントローラ１０５は、各種の処理に応じて、プロセッサ１０６の動作周波数を定めたテーブルを保持し、プロセッサに割り当てた処理に対応する動作周波数に変更するように構成してもよい。
【００５９】
また、各演算装置１０において処理すべき内容（プロセッサが実行すべき命令）が予め定められている場合には、処理において実行する演算の単位を簡単な処理に単純化することで、演算におけるパイプラインが長くなるものの、その処理速度を早くする（プロセッサの動作周波数を予め高い周波数に設定しておく）ことができる。その結果、処理全体が例えば、１００サイクル後に結果を出すような演算であったとしても、各処理の処理時間を高速化できるので、処理全体の時間を短縮することもできる。
【００６０】
また、上記プロセッサ装置１００において、プロセッサ装置１００が備えるプロセッサ数や、レジスタメモリ数は、いくつであってもよいが、レジスタメモリ全体としては、必要処理数を処理するのに十分な数のレジスタ数を備えることが望ましい。
【符号の説明】
【００６１】
１００  プロセッサ装置
１０１  ＤＭＡ（メモリアクセス装置）
１０２  メモリ（外部メモリ）
１０３  マルチプレクサ
１０４  レジスタメモリ
１０５  コントローラ（制御部）
１０６  プロセッサ
１１０  スケジューラ
【図１】
2019208566.tif 000003
【図２】
2019208566.tif 000004
【図３】
2019208566.tif 000005
【図４】
2019208566.tif 000006
【図５】
2019208566.tif 000007
【図６】
2019208566.tif 000008
【図７】
2019208566.tif 000009
【国際調査報告】
2019208566.tif 000010
2019208566.tif 000011
2019208566.tif 000012
2019208566.tif 000013