説明

ベクトル演算装置およびベクトル演算方法

【課題】処理性能の向上したベクトル演算装置を提供すること
【解決手段】ベクトル演算装置1は、複数個のベクトルデータを格納する複数のベクトルレジスタ110、および、ベクトルレジスタ110から出力されるベクトルデータに対し演算を行うベクトル演算器111を有するベクトルパイプ11と、イテレーション演算のk(k:1以上の整数)番目の演算を行うベクトルパイプ11からk+1番目の演算を行うベクトルパイプ11に演算結果を順次並列して供給するパス116と、複数のイテレーション演算を複数のベクトルパイプ11で並列して実行するよう命令発行管理を行う命令発行部102とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はベクトル演算装置に関し、特に複数のイテレーション演算を行うのに好適なベクトル演算装置およびベクトル演算方法に関する。
【背景技術】
【0002】
複数のパイプラインを有し、複数の同様の演算を複数のパイプラインで並列に一括で行うことができるベクトル演算装置が知られている(特許文献1乃至9)。ベクトル演算装置は、典型的には、ベクトル演算を行うための特別なハードウェア構成を有するものであり、スーパーコンピュータとして用いられる。
【0003】
また一般に、数値解析を行うプログラムにおいて、漸化式の演算を行うケースが多く存在する。漸化式は、
X[i]=Y[i]+X[i-1](i=0、1、2、3・・・)
のように表わされる。このような演算は、イテレーション演算又はイタレーション演算と呼ばれる。
【0004】
イテレーション演算の再帰的な特徴を図9に示す。図9に示すように、イテレーション演算では、X[i](i=0、1、2、3・・・)は再帰的に算出される。そのため、X[i](i=0、1、2、3・・・)を記憶装置に予め保持しておくことができない。したがって、複数のベクトルパイプを有するベクトル演算装置を用いてイテレーション演算を行う場合であっても、各ベクトルパイプにベクトルデータX[i](i=0、1、2、3・・・)を予め保持できず、並列して演算処理を行うことができない。したがって、ベクトル演算装置を用いてイテレーション演算を行う場合には、複数のベクトルパイプのうちの1本のみを使用して演算を行う方法や、スカラ処理部を有する場合にはスカラ処理部にベクトルデータを転送し、スカラ演算器で演算を行う方法が用いられている。
【0005】
ベクトル演算装置を用いてイテレーション演算を行うにあたり、特許文献1では漸化式について式の展開を行い、展開した漸化式を複数のベクトルパイプで並列演算することで、イテレーション演算処理の高速化を図る技術が開示されている。これによると、例えば、
X[i]=C[i]+Z[i]*X[i-1]
という漸化式について式を展開し、
X[i]=A[i]+B[i]*X[i-4]
(但し、A[i]=C[i]+Z[i]*C[i-1]+Z[i]*Z[i-1]*C[i-2]+Z[i]*Z[i-1]*Z[i-2]*C[i-3]、B[i]=Z[i]*Z[i-1]*Z[i-2]*Z[i-3])
とする。
この漸化式の演算で再帰的に表れる項は、4つ前の要素であるX[i-4]となる。したがって、要素番号iが5以上であるときのX[i]の算出について、例えばX[4]の算出にはX[0]を、X[5]の算出にはX[1]を用いればよく、4つのベクトルパイプで並列演算することができる。このようにして、ベクトル演算装置の効率の向上を図っている。
【0006】
特許文献2では、イテレーション演算を行う際に、部分演算を各ベクトルパイプで実行するベクトル演算処理装置に関する技術が開示されている。これによれば、ベクトルデータを複数のベクトルパイプのベクトルレジスタに分けて格納し、各ベクトルパイプの補正値レジスタに適当な初期値を定め、複数のベクトルパイプで部分演算を並列して行う。次に、並列して算出された演算結果を他のベクトルパイプの補正値レジスタに夫々供給して、それぞれのベクトルパイプの演算結果を補正し、イテレーション演算の最終的な演算結果を算出する。このようにして、部分演算を利用して、1つのイテレーション演算を複数のベクトルパイプで並列演算することで、ベクトル演算装置の効率の向上を図っている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平02−266468号公報
【特許文献2】特開平02−266467号公報
【特許文献3】特開昭60−072070号公報
【特許文献4】特開昭62−002364号公報
【特許文献5】特開平03−006662号公報
【特許文献6】特開平04−117555号公報
【特許文献7】特開昭57−031080号公報
【特許文献8】特開昭57−031081号公報
【特許文献9】特開2009−104494号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、複数の演算パイプラインのうち1本のベクトルパイプのみを使用する方法では、1つのイテレーション演算を実行している間はその演算器に対する命令発行を行う制御部が占有されてしまう。したがって、後続に別のイテレーション演算の命令(イテレーション命令)が控えていても、先行するイテレーション演算が完了するまでは後続のイテレーション命令を実行できない。このため、他のベクトルパイプで何ら演算が行われていない状態であっても、他の演算を同時に並行して行うことはできない。その結果、プログラム全体の実行時間が長くなり、ベクトル演算装置の性能低下を招いている。
【0009】
特許文献1及び特許文献2に開示された技術によれば、ベクトル演算装置は、複数のベクトルパイプを演算に用いることで、1つのイテレーション演算を高効率で行うことができる。しかしながら、1つの一連の演算を複数のパイプで処理するために、式を展開して分割したり、最終的に補正調整するなどの余計な計算が増える。1つのイテレーション演算を行うのみならず、多数のイテレーション演算を連続して行うことを考えると、前記のような余計な計算がそれだけ増えるため、計算効率はなお低くなる。したがって、複数のイテレーション演算を効率よく実行できるベクトル演算装置およびベクトル演算方法が求められている。
【0010】
本発明は、このような問題点を解決するためになされたものであり、処理性能の向上したベクトル演算装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明にかかるベクトル演算装置の一態様は、複数個のベクトルデータを格納する複数のベクトルレジスタ、および、前記ベクトルレジスタから出力されるベクトルデータに対し演算を行うベクトル演算器を有するベクトルパイプと、イテレーション演算のk(k:1以上の整数)番目の演算を行うベクトルパイプからk+1番目の演算を行うベクトルパイプに演算結果を順次並列して供給するパスと、前記複数のイテレーション演算を前記複数のベクトルパイプで並列して実行するよう命令発行管理を行う命令発行部と、を備える。
【発明の効果】
【0012】
本発明にかかるベクトル演算装置によれば、処理時間を短縮し、性能の向上を図ることができる。
【図面の簡単な説明】
【0013】
【図1】実施の形態1にかかるベクトル演算装置のブロック図である。
【図2】実施の形態1にかかるベクトル演算装置が4つのベクトルパイプを備えた場合の例を示すである。
【図3】実施の形態1にかかるバンクスロット方式によるスロットの決定方法を示す図である。
【図4】実施の形態1にかかるバンクスロット方式によるベクトルパイプとスロットの対応付けを示す図である。
【図5】実施の形態1にかかるバンクスロット方式による、各時刻におけるイテレーション命令とベクトルパイプとスロットの関係を示す図である。
【図6】実施の形態1にかかるベクトル命令発行制御部とベクトルパイプの関係を示す図である。
【図7】実施の形態1にかかるバンクスロット方式による、各時刻におけるイテレーション命令とスロットとの関係を示す図である。
【図8】実施の形態1にかかる演算処理のタイムチャートの図である。
【図9】背景技術にかかるイテレーション演算の例を示す図である。
【発明を実施するための形態】
【0014】
実施の形態1
以下、図面を参照して実施の形態1について説明する。まず、図1に実施の形態1にかかるベクトル演算装置1の構成を示す。
【0015】
図1に示すように、ベクトル演算装置1は、ベクトル命令発行制御部10と、ベクトル演算を行う複数のベクトルパイプ11と、パス116と、を有する。
ベクトル命令発行制御部10は、命令識別部101と、命令発行部102とを有する。
命令識別部101は、プログラム中のイテレーション命令を識別して抽出する。また、命令識別部101は、抽出したイテレーション命令を命令発行部102に出力する。
命令発行部102は、命令識別部101から入力されたイテレーション命令を保持するとともに、イテレーション命令を各ベクトルパイプに発行するタイミングの制御し、命令実行指示を各ベクトルパイプ11に出力する。
ここで、イテレーション命令を発行するタイミングは、バンクスロット方式に基づいて決定される。
【0016】
ここで、イテレーション命令を発行するタイミングを制御するためのバンクスロット方式について図2乃至図5を用いて説明する。ここでは、4つのイテレーション命令0乃至3を4つのベクトルパイプで実行させるためのタイミング制御を例にして説明する。
【0017】
図2は、ベクトル演算装置1が、ベクトルパイプ11を4本備えている状態を示す図である。ベクトルパイプ11は、パイプ#0、パイプ#1、パイプ#2、パイプ#3であるものとする。
【0018】
イテレーション命令0乃至3を発行するタイミングがベクトルパイプ11間で競合しないように規定する。この例では、4つのイテレーション命令0乃至3が存在するので、スロット0乃至3を規定する。図3に示すように、アクセスタイミングを規定するスロットの番号は、一定の順序で与えられる。
【0019】
図4に、イテレーション命令とスロット番号との対応付けの一例を示す。
イテレーション命令は、イテレーション命令1→イテレーション命令2→イテレーション命令0→イテレーション命令3、の順で実行するものとする。このとき、イテレーション命令1はスロット2と対応付けられ、イテレーション命令2はスロット3と対応付けられ、イテレーション命令0はスロット0と対応付けられ、イテレーション命令3はスロット1と対応付けられる。
【0020】
図5に、各ベクトルパイプに割り振られた各スロットが、時間とともに遷移する様子を示す。例えば、時刻0において、パイプ#0にスロット2が割り当てられ、時刻1ではパイプ#1にスロット2が割り当てられ、時刻2ではパイプ#2にスロット2が割り当てられ、時刻3ではパイプ#3にスロット2が割り当てられている。したがって、アクセスタイミングをスロット2とするイテレーション命令1について、時刻0ではパイプ#0で実行され、時刻1ではパイプ#1で実行され、時刻2ではパイプ#2で実行され、時刻3ではパイプ#3で実行される。ここで、時刻4ではスロット2はパイプ#0が割り当てられるため、イテレーション命令1はパイプ#0で実行される。すなわち、パイプ#0について、スロット2のときイテレーション命令0が、スロット3のときイテレーション命令1が、スロット0のときイテレーション命令0が、スロット1のときイテレーション命令3が実行される。これをパイプ#1、パイプ#2、パイプ#3についても同様とする。
【0021】
このように、複数の命令に対して競合すること無く並列アクセスが可能となる。アクセスする対象をバンク(ここではベクトルパイプ11)と呼ばれる単位に分割し、スロットと呼ばれるアクセスタイミングを規定することで、1つの命令がアクセス対象を占有してしまうことなく、複数の命令が並列アクセス可能とする仕組みをバンクスロット方式と呼ぶ。
【0022】
ベクトルパイプ11は、m(m:2以上の整数)個のベクトルレジスタ110と、ベクトル演算器111と、ライトクロスバ112と、セレクタ113と、パス115と、を有する。
ベクトルパイプ11は、命令発行部102からイテレーション命令の入力を受ける。
図1に示す例では、ベクトル演算装置1は、パイプ#0、パイプ#1、・・・、パイプ#n−1、のn個のベクトルパイプ11を有している。なお、パイプ#n−1の出力からパイプ#0の入力にもパス116が設けられており、各ベクトルパイプ11はパス116によって出力と入力とが巡回するように接続されている。また、パイプ#0はセレクタ114を更に有している。
【0023】
ベクトルレジスタ110は、イテレーション演算に用いられるベクトルデータや、演算結果のデータを格納する。図1に示す例では、各ベクトルパイプ11はそれぞれ、R0、R1、・・・、Rm−1、のm個のベクトルレジスタ110を有する。各ベクトルレジスタ110には、外部記憶手段(図示せず)からロードされたベクトルデータや、ベクトル演算器111から出力された演算結果のデータが、ライトクロスバ112を介して入力される。また、ベクトルレジスタ110は、格納しているベクトルデータをセレクタ113に出力する。
【0024】
セレクタ113には、ベクトルレジスタ110からベクトルデータが入力される。ここで、セレクタ113は、m個のベクトルレジスタ110の中から、演算対象となるベクトルデータを有しているベクトルレジスタ110を選択する。選択されたベクトルレジスタ110に格納されているベクトルデータは、ベクトル演算器111に出力される。
【0025】
ベクトル演算器111は、典型的には、整数演算や浮動小数点演算を行う機能を有する。ベクトル演算器111には、セレクタ113により選択されたベクトルデータと、他のベクトルパイプ11のベクトル演算器111からパス116を介して与えられた演算結果と、が入力される。また、ベクトル演算器111は、命令発行部102が出力したイテレーション命令に基づいて演算を行う。演算結果は、パス115を介してライトクロスバ112に出力されるとともに、パス116を介して他のベクトルパイプ11のベクトル演算器111に出力される。
【0026】
ライトクロスバ112には、パス115を介して、ベクトル演算器111から演算結果が入力される。また、外部記憶手段(図示せず)に格納されたベクトルデータが入力される。ライトクロスバ112は、入力された演算結果やベクトルデータの振り分けを行い、ベクトルレジスタ110に出力する。
【0027】
パス115は、1つのベクトルパイプ11内において、ベクトル演算器111の出力とライトクロスバ112とを接続する。パス115は、ベクトル演算器111が出力した演算結果を、ライトクロスバ112に出力するのを仲介する。
【0028】
パス116は、ベクトルパイプ11のベクトル演算器111と、該ベクトルパイプ11以外のベクトルパイプ11とを接続する。パス116は、ベクトルパイプ11のベクトル演算器111が出力した演算結果を、該ベクトルパイプ11以外のベクトルパイプ11に出力するのを仲介する。図1に示した例では、パス116は、パイプ#0のベクトル演算器111が出力した演算結果を、パイプ#1のベクトル演算器111に入力するのを仲介する。同様にして、パス116は、パイプ#2からパイプ#3に、パイプ#3からパイプ#4に、・・・、パイプ#n−2からパイプ#n−1に、演算結果を入力するのを仲介する。
ここで、図1に示した例ではパス116により、ベクトルパイプ11は巡回的に接続されている。パス116は、パイプ#n−1のベクトル演算器111から出力した演算結果をパイプ#0のセレクタ114に入力するのを仲介する。
【0029】
セレクタ114には、イテレーション演算における初期値と、他のベクトルパイプ11のベクトル演算器111から出力された演算結果と、が入力される。また、セレクタ114は、初期値と他のベクトルパイプ11からの演算結果とのいずれかを選択し、ベクトル演算器111に出力する。
図1に示した例では、セレクタ114は、イテレーション演算における初期値と、パイプ#n−1のベクトル演算器111から出力された演算結果と、が入力され、いずれか一方を選択して、ベクトル演算器111に出力する。典型的には、イテレーション演算を開始するときは、初期値が選択され、それ以外のときであればパイプ#n−1のベクトル演算器111から出力された演算結果が選択される。
【0030】
続いて、本実施の形態にかかるベクトル演算装置1の具体的な動作について、図1を用いて説明する。ここで、本実施の形態は、複数のイテレーション演算を同時に実行処理するのに好適であり、4つのイテレーション演算(イテレーション命令1乃至4)を同時に実行する場合を例に説明する。ここで複数のイテレーション命令1乃至4は次の通りとする。
イテレーション命令1:A1[i]=E1[i]+A1[i-1](i=0、1、2、3、…、k、…)
イテレーション命令2:B2[i]=F2[i]+B2[i-1](i=0、1、2、3、…、k、…)
イテレーション命令3:C3[i]=G3[i]+C3[i-1](i=0、1、2、3、…、k、…)
イテレーション命令4:D4[i]=H4[i]+D4[i-1](i=0、1、2、3、…、k、…)
【0031】
ベクトル命令発行制御部10において、命令識別部101は、プログラム中のベクトル命令からイテレーション命令1乃至4を抽出し命令発行部102に出力する。命令発行部102は入力されたイテレーション命令を保持しておき、仕掛かり中の命令の有無や、バンクスロット方式によるアクセスタイミングの制御に基づいて、各ベクトルパイプ11に命令実行指示を出力する。命令実行指示を受け取ったパイプ#0乃至パイプ#n−1は、下記の動作を行う。
【0032】
まず、イテレーション命令1(A1[i]=E1[i]+A1[i-1](i=0、1、2、3))を処理する流れについて説明する。最初の演算
A1[0]=E1[0]+A1[-1]
を行う。
ここで{A1[-1]}は初期値である。この場合、最初の演算に必要な要素を演算器111に入力するため、m個のベクトルレジスタ110の中からセレクタ113にてベクトルレジスタR0が選択され、さらにセレクタ114にて初期値が選択される。ベクトル演算器111は、
E1[0]+A1[-1]
の演算を行い、演算結果{A1[0]}を算出する。
【0033】
次に、この演算結果{A1[0]}は、パス115を経由しライトクロスバ112で振り分けられ、ベクトルレジスタR1へ格納される。これとともに、演算結果{A1[0]}は、パス116を介して、パイプ#1に出力される。パイプ#1では、イテレーション命令1の次の演算、
A1[1]=E1[1]+A1[0]
を行う。すなわち、パイプ#0から送られてきた演算結果{A1[0]}とベクトルレジスタR0に格納されている{E1[1]}との演算を行い、演算結果{A1[1]}を算出する。
【0034】
同様にして、演算結果{A1[1]}は、パス115を経由しライトクロスバ112にて振り分けられ、ベクトルレジスタR1へ格納される。これとともに、演算結果{A1[1]}は、パス116を介して、パイプ#2に出力される。パイプ#2では、イテレーション命令1のさらに次の演算、
A1[2]=E1[2]+A1[1]
を行う。すなわち、パイプ#1から送られてきた演算結果{{A1[1]}とベクトルレジスタR0に格納されている{E1[2]}との演算を行い、演算結果{A1[2]}を算出する。
【0035】
これらの一連の動作が繰り返し行われ、最終パイプであるパイプ#n−1で演算が行われた場合には、求められた演算結果{A1[n-1]}は、パイプ#n−1のベクトルレジスタR1へ格納されるとともにパイプ#0に出力される。この場合、パイプ#0のセレクタ114は、パイプ#n−1からの演算結果{A1[n-1]}と、初期値{A1[-1]}の2つの入力のうち、演算結果{A1[n-1]}を選択する。これにより、パイプ#0のベクトル演算器111は、
A1[n]=E1[n]+A1[n-1]
を実行できる。すなわち、演算結果{A1[n-1]}と、ベクトルレジスタ110に格納されているベクトルデータ{E1[n]}の演算を行う。これにより、n番以上の演算であってもパイプ#0にもどってイテレーション演算を続行することができる。
【0036】
上記のイテレーション演算処理を、イテレーション命令の終了条件を満たすまで繰り返すことで、1つのイテレーション演算が完了する。
【0037】
ここで、パイプ#1で上記のイテレーション命令1を実施しているときには、パイプ#0では既に処理が完了しているために何ら動作をしていない。同様にして、パイプ#2にて命令1を実施しているときは、パイプ#0とパイプ#1では既に処理が完了しているため何ら動作をしていないこととなる。
【0038】
そこでパイプ#0がイテレーション命令1の上記演算を終えたら、命令発行部102は次に控えているイテレーション命令2の実行指示を発行する。イテレーション命令2の実行指示のタイミングはバンクスロット方式に基づいて決定する。ここで、イテレーション命令1の発行のタイミングをスロット0、イテレーション命令2の発行タイミングをスロット1とする。すなわち、パイプ#1にてイテレーション命令1の演算を実行しているときに、イテレーション命令2の演算を実行することとなる。同様にして、スロット2のタイミングでイテレ−ション命令3が発行される。この場合、イテレーション命令1の演算がパイプ#2で実行され、イテレーション命令2の演算がパイプ#1で実行され、イテレーション命令3の演算がパイプ#0で実行されることとなる。このような一連の動作を繰り返すことによって、最大で、ベクトルパイプ数であるn個分のイテレーション命令が並列実行可能となる。
【0039】
このとき、1つのベクトルパイプ11から、他のベクトルパイプ11に演算結果を出力するタイミングは、割り当てられたスロット番号とベクトルパイプ11のパイプ番号により固定される。図6にベクトルパイプ11が4つによる構成である場合の例を示す。図6に示すように、ベクトル命令発行制御部10は、4つのパイプ#0乃至#3からの演算結果を、巡回送りするタイミングを制御するように、命令の発行を行う。
【0040】
すると図7に示すように、例えば、時刻0でイテレーション命令1の0番目の演算がパイプ#0で実行された場合、時刻1ではイテレーション命令1の1番目の演算はパイプ#1で実行されると同時に、イテレーション命令2の0番目の演算がパイプ#0で実行される。時刻2ではイテレーション命令1の2番目の演算がパイプ#2で実行されると同時に、イテレーション命令2の1番目の演算がパイプ#1で実行され、イテレーション命令3の0番目の演算がパイプ#0で実行される。このように、各時刻における各ベクトルパイプ11の動作は、イテレーション命令が割り当てられたスロット番号により一意に決定する。
【0041】
したがって、
イテレーション命令1をA1[i]=E1[i]+A1[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令2をB2[i]=F2[i]+B2[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令3をC3[i]=G3[i]+C3[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令4をD4[i]=H4[i]+D4[i-1](i=0、1、2、3、…、k、…)、
とし、スロット0のタイミングでイテレーション命令1、スロット1のタイミングでイテレーション命令2、スロット2のタイミングでイテレーション命令3、スロット3のタイミングでイテレーション命令4が実行される場合には、
時刻0ではA1[0]=E1[0]+A1[-1](パイプ#0)、
時刻1ではA1[1]=E1[1]+A1[0](パイプ#1)、B2[0]=F2[0]+B2[-1](パイプ#0)、
時刻2ではA1[2]=E1[2]+A1[1](パイプ#2)、B2[1]=F2[1]+B2[0](パイプ#1)、C3[0]=G3[0]+C3[-1](パイプ#0)、
時刻3では、A1[3]=E1[3]+A1[2](パイプ#3)、B2[2]=F2[2]+B2[1](パイプ#2)、C3[1]=G3[1]+C3[0](パイプ#1)、D4[0]=H4[0]+D4[-1](パイプ#0)、
時刻4ではA1[4]=E1[4]+A1[3](パイプ#0)、B2[3]=F2[3]+B2[2](パイプ#3)、C3[2]=G3[2]+C3[1](パイプ#2)、D4[1]=H4[1]+D4[0](パイプ#1)、
時刻5ではA1[5]=E1[5]+A1[4](パイプ#1)、B2[4]=F2[4]+B2[3](パイプ#0)、C3[3]=G3[3]+C3[2](パイプ#3)、D4[2]=H4[2]+D4[1](パイプ#2)
といった処理が、各イテレーション命令の終了条件を満たすまで実行される。イテレーション命令の終了条件は、例えば、ベクトルレジスタ110に格納されたベクトルデータのうち、その演算で使用されるべきベクトルデータを、全て使用し終えた場合とすることができる。
【0042】
図8は本実施の形態の特徴を示したタイムチャートである。図8において、例えば1−0とは、イテレーション命令1の0番目の演算処理を示す。図8に示すように、従来の方式では1つのイテレーション命令の処理が終了した後でないと次のイテレーション命令を開始できない。これに対し、本実施の形態によれば、巡回的に各ベクトルパイプ11間を接続するパス116と、各イテレーション命令の発行タイミングをバンクスロット方式によって制御を行う命令発行部12とを設けることで、複数のイテレーション命令を並列に処理することが可能となる。したがって、図8に示すように、複数の異なるイテレーション演算を行う場合の実行時間を短縮し、ベクトル演算装置の性能の向上を図ることができる。
【0043】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、パス116に代わり、各ベクトルパイプ11のパイプ間のそれぞれを接続するフルクロスバを設けておき、フルクロスバを介して各ベクトルパイプ11が演算結果の入出力を行っても良い。また、イテレーション演算は加算だけでなく、他の四則演算であっても良い。また、ベクトルパイプ11に複数の演算器を備え、3つ以上の項からなるイテレーション演算に適応する形式としても良い。また、ベクトルパイプ11は、イテレーション演算の終了条件を満たした時点で処理の一切を終了するのではなく、パス116を介して、最終的な演算結果がパイプ#0などの任意のベクトルパイプ11のベクトルレジスタ110に格納されるように、制御されることが望ましい。
【符号の説明】
【0044】
1 ベクトル演算装置
10 ベクトル命令発行制御部
11 ベクトルパイプ
101 命令識別部
102 命令発行部
110 ベクトルレジスタ
111 ベクトル演算器
112 ライトクロスバ
113 セレクタ
114 セレクタ
115 パス
116 パス

【特許請求の範囲】
【請求項1】
複数のイテレーション演算を行うベクトル演算装置であって、
複数個のベクトルデータを格納する複数のベクトルレジスタ、および、前記ベクトルレジスタから出力されるベクトルデータに対し演算を行うベクトル演算器、を有するベクトルパイプと、
前記イテレーション演算のk(k:1以上の整数)番目の演算を行うベクトルパイプからk+1番目の演算を行うベクトルパイプに演算結果を順次並列して供給するパスと、
前記複数のイテレーション演算を前記複数のベクトルパイプで並列して実行するよう命令発行管理を行う命令発行部と、を備える
ベクトル演算装置。
【請求項2】
前記命令発行部は、各イテレーション命令と、スロット番号と、を対応させておき、ベクトルパイプに時間によってスロット番号を巡回的に割り当て、対応するスロット番号が割り当てられたベクトルパイプに、そのスロット番号のイテレーション命令を与える、
請求項1に記載のベクトル演算装置。
【請求項3】
前記パスは、前記複数のベクトルパイプを巡回的に接続するように設けられており、
イテレーション演算は、前記複数のベクトルパイプで巡回的に実行される
請求項1又は請求項2に記載のベクトル演算装置。
【請求項4】
複数のベクトルパイプを有するベクトル演算装置によって複数のイテレーション演算を処理する方法であって、
イテレーション演算のk(k:1以上の整数)番目の演算を実行し、
k番目の演算を行うベクトルパイプからk+1番目の演算を行うベクトルパイプに演算結果を供給し、
k+1番目のベクトルパイプでは、前記k番目の演算結果を用いて演算する、
イテレーション演算方法。
【請求項5】
各イテレーション命令と、スロット番号と、を対応させておき、ベクトルパイプに時間によってスロット番号を巡回的に割り当て、対応するスロット番号が割り当てられたベクトルパイプに、そのスロット番号のイテレーション命令を与える、
請求項4に記載のイテレーション演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−22780(P2011−22780A)
【公開日】平成23年2月3日(2011.2.3)
【国際特許分類】
【出願番号】特願2009−166974(P2009−166974)
【出願日】平成21年7月15日(2009.7.15)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】