(57)【要約】【課題】処理性能の向上したベクトル演算装置を提供すること【解決手段】ベクトル演算装置１は、複数個のベクトルデータを格納する複数のベクトルレジスタ１１０、および、ベクトルレジスタ１１０から出力されるベクトルデータに対し演算を行うベクトル演算器１１１を有するベクトルパイプ１１と、イテレーション演算のｋ（ｋ：１以上の整数）番目の演算を行うベクトルパイプ１１からｋ＋１番目の演算を行うベクトルパイプ１１に演算結果を順次並列して供給するパス１１６と、複数のイテレーション演算を複数のベクトルパイプ１１で並列して実行するよう命令発行管理を行う命令発行部１０２とを備える。【選択図】図１
2011022780.tif 000002
【特許請求の範囲】
【請求項１】
複数のイテレーション演算を行うベクトル演算装置であって、
複数個のベクトルデータを格納する複数のベクトルレジスタ、および、前記ベクトルレジスタから出力されるベクトルデータに対し演算を行うベクトル演算器、を有するベクトルパイプと、
前記イテレーション演算のｋ（ｋ：１以上の整数）番目の演算を行うベクトルパイプからｋ＋１番目の演算を行うベクトルパイプに演算結果を順次並列して供給するパスと、
前記複数のイテレーション演算を前記複数のベクトルパイプで並列して実行するよう命令発行管理を行う命令発行部と、を備える
ベクトル演算装置。
【請求項２】
前記命令発行部は、各イテレーション命令と、スロット番号と、を対応させておき、ベクトルパイプに時間によってスロット番号を巡回的に割り当て、対応するスロット番号が割り当てられたベクトルパイプに、そのスロット番号のイテレーション命令を与える、
請求項１に記載のベクトル演算装置。
【請求項３】
前記パスは、前記複数のベクトルパイプを巡回的に接続するように設けられており、
イテレーション演算は、前記複数のベクトルパイプで巡回的に実行される
請求項１又は請求項２に記載のベクトル演算装置。
【請求項４】
複数のベクトルパイプを有するベクトル演算装置によって複数のイテレーション演算を処理する方法であって、
イテレーション演算のｋ（ｋ：１以上の整数）番目の演算を実行し、
ｋ番目の演算を行うベクトルパイプからｋ＋１番目の演算を行うベクトルパイプに演算結果を供給し、
ｋ＋１番目のベクトルパイプでは、前記ｋ番目の演算結果を用いて演算する、
イテレーション演算方法。
【請求項５】
各イテレーション命令と、スロット番号と、を対応させておき、ベクトルパイプに時間によってスロット番号を巡回的に割り当て、対応するスロット番号が割り当てられたベクトルパイプに、そのスロット番号のイテレーション命令を与える、
請求項４に記載のイテレーション演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はベクトル演算装置に関し、特に複数のイテレーション演算を行うのに好適なベクトル演算装置およびベクトル演算方法に関する。
【背景技術】
【０００２】
複数のパイプラインを有し、複数の同様の演算を複数のパイプラインで並列に一括で行うことができるベクトル演算装置が知られている（特許文献１乃至９）。ベクトル演算装置は、典型的には、ベクトル演算を行うための特別なハードウェア構成を有するものであり、スーパーコンピュータとして用いられる。
【０００３】
また一般に、数値解析を行うプログラムにおいて、漸化式の演算を行うケースが多く存在する。漸化式は、
X[i]=Y[i]+X[i-1](i=0、1、2、3・・・)
のように表わされる。このような演算は、イテレーション演算又はイタレーション演算と呼ばれる。
【０００４】
イテレーション演算の再帰的な特徴を図９に示す。図９に示すように、イテレーション演算では、X[i](i=0、1、2、3・・・)は再帰的に算出される。そのため、X[i](i=0、1、2、3・・・)を記憶装置に予め保持しておくことができない。したがって、複数のベクトルパイプを有するベクトル演算装置を用いてイテレーション演算を行う場合であっても、各ベクトルパイプにベクトルデータX[i](i=0、1、2、3・・・)を予め保持できず、並列して演算処理を行うことができない。したがって、ベクトル演算装置を用いてイテレーション演算を行う場合には、複数のベクトルパイプのうちの１本のみを使用して演算を行う方法や、スカラ処理部を有する場合にはスカラ処理部にベクトルデータを転送し、スカラ演算器で演算を行う方法が用いられている。
【０００５】
ベクトル演算装置を用いてイテレーション演算を行うにあたり、特許文献１では漸化式について式の展開を行い、展開した漸化式を複数のベクトルパイプで並列演算することで、イテレーション演算処理の高速化を図る技術が開示されている。これによると、例えば、
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]）
とする。
この漸化式の演算で再帰的に表れる項は、４つ前の要素であるX[i-4]となる。したがって、要素番号ｉが５以上であるときのX[i]の算出について、例えばX[4]の算出にはX[0]を、X[5]の算出にはX[1]を用いればよく、４つのベクトルパイプで並列演算することができる。このようにして、ベクトル演算装置の効率の向上を図っている。
【０００６】
特許文献２では、イテレーション演算を行う際に、部分演算を各ベクトルパイプで実行するベクトル演算処理装置に関する技術が開示されている。これによれば、ベクトルデータを複数のベクトルパイプのベクトルレジスタに分けて格納し、各ベクトルパイプの補正値レジスタに適当な初期値を定め、複数のベクトルパイプで部分演算を並列して行う。次に、並列して算出された演算結果を他のベクトルパイプの補正値レジスタに夫々供給して、それぞれのベクトルパイプの演算結果を補正し、イテレーション演算の最終的な演算結果を算出する。このようにして、部分演算を利用して、１つのイテレーション演算を複数のベクトルパイプで並列演算することで、ベクトル演算装置の効率の向上を図っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０２−２６６４６８号公報
【特許文献２】特開平０２−２６６４６７号公報
【特許文献３】特開昭６０−０７２０７０号公報
【特許文献４】特開昭６２−００２３６４号公報
【特許文献５】特開平０３−００６６６２号公報
【特許文献６】特開平０４−１１７５５５号公報
【特許文献７】特開昭５７−０３１０８０号公報
【特許文献８】特開昭５７−０３１０８１号公報
【特許文献９】特開２００９−１０４４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、複数の演算パイプラインのうち１本のベクトルパイプのみを使用する方法では、１つのイテレーション演算を実行している間はその演算器に対する命令発行を行う制御部が占有されてしまう。したがって、後続に別のイテレーション演算の命令（イテレーション命令）が控えていても、先行するイテレーション演算が完了するまでは後続のイテレーション命令を実行できない。このため、他のベクトルパイプで何ら演算が行われていない状態であっても、他の演算を同時に並行して行うことはできない。その結果、プログラム全体の実行時間が長くなり、ベクトル演算装置の性能低下を招いている。
【０００９】
特許文献１及び特許文献２に開示された技術によれば、ベクトル演算装置は、複数のベクトルパイプを演算に用いることで、１つのイテレーション演算を高効率で行うことができる。しかしながら、１つの一連の演算を複数のパイプで処理するために、式を展開して分割したり、最終的に補正調整するなどの余計な計算が増える。１つのイテレーション演算を行うのみならず、多数のイテレーション演算を連続して行うことを考えると、前記のような余計な計算がそれだけ増えるため、計算効率はなお低くなる。したがって、複数のイテレーション演算を効率よく実行できるベクトル演算装置およびベクトル演算方法が求められている。
【００１０】
本発明は、このような問題点を解決するためになされたものであり、処理性能の向上したベクトル演算装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明にかかるベクトル演算装置の一態様は、複数個のベクトルデータを格納する複数のベクトルレジスタ、および、前記ベクトルレジスタから出力されるベクトルデータに対し演算を行うベクトル演算器を有するベクトルパイプと、イテレーション演算のｋ（ｋ：１以上の整数）番目の演算を行うベクトルパイプからｋ＋１番目の演算を行うベクトルパイプに演算結果を順次並列して供給するパスと、前記複数のイテレーション演算を前記複数のベクトルパイプで並列して実行するよう命令発行管理を行う命令発行部と、を備える。
【発明の効果】
【００１２】
本発明にかかるベクトル演算装置によれば、処理時間を短縮し、性能の向上を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかるベクトル演算装置のブロック図である。
【図２】実施の形態１にかかるベクトル演算装置が４つのベクトルパイプを備えた場合の例を示すである。
【図３】実施の形態１にかかるバンクスロット方式によるスロットの決定方法を示す図である。
【図４】実施の形態１にかかるバンクスロット方式によるベクトルパイプとスロットの対応付けを示す図である。
【図５】実施の形態１にかかるバンクスロット方式による、各時刻におけるイテレーション命令とベクトルパイプとスロットの関係を示す図である。
【図６】実施の形態１にかかるベクトル命令発行制御部とベクトルパイプの関係を示す図である。
【図７】実施の形態１にかかるバンクスロット方式による、各時刻におけるイテレーション命令とスロットとの関係を示す図である。
【図８】実施の形態１にかかる演算処理のタイムチャートの図である。
【図９】背景技術にかかるイテレーション演算の例を示す図である。
【発明を実施するための形態】
【００１４】
実施の形態１
以下、図面を参照して実施の形態１について説明する。まず、図１に実施の形態１にかかるベクトル演算装置１の構成を示す。
【００１５】
図１に示すように、ベクトル演算装置１は、ベクトル命令発行制御部１０と、ベクトル演算を行う複数のベクトルパイプ１１と、パス１１６と、を有する。
ベクトル命令発行制御部１０は、命令識別部１０１と、命令発行部１０２とを有する。
命令識別部１０１は、プログラム中のイテレーション命令を識別して抽出する。また、命令識別部１０１は、抽出したイテレーション命令を命令発行部１０２に出力する。
命令発行部１０２は、命令識別部１０１から入力されたイテレーション命令を保持するとともに、イテレーション命令を各ベクトルパイプに発行するタイミングの制御し、命令実行指示を各ベクトルパイプ１１に出力する。
ここで、イテレーション命令を発行するタイミングは、バンクスロット方式に基づいて決定される。
【００１６】
ここで、イテレーション命令を発行するタイミングを制御するためのバンクスロット方式について図２乃至図５を用いて説明する。ここでは、４つのイテレーション命令０乃至３を４つのベクトルパイプで実行させるためのタイミング制御を例にして説明する。
【００１７】
図２は、ベクトル演算装置１が、ベクトルパイプ１１を４本備えている状態を示す図である。ベクトルパイプ１１は、パイプ＃０、パイプ＃１、パイプ＃２、パイプ＃３であるものとする。
【００１８】
イテレーション命令０乃至３を発行するタイミングがベクトルパイプ１１間で競合しないように規定する。この例では、４つのイテレーション命令０乃至３が存在するので、スロット０乃至３を規定する。図３に示すように、アクセスタイミングを規定するスロットの番号は、一定の順序で与えられる。
【００１９】
図４に、イテレーション命令とスロット番号との対応付けの一例を示す。
イテレーション命令は、イテレーション命令１→イテレーション命令２→イテレーション命令０→イテレーション命令３、の順で実行するものとする。このとき、イテレーション命令１はスロット２と対応付けられ、イテレーション命令２はスロット３と対応付けられ、イテレーション命令０はスロット０と対応付けられ、イテレーション命令３はスロット１と対応付けられる。
【００２０】
図５に、各ベクトルパイプに割り振られた各スロットが、時間とともに遷移する様子を示す。例えば、時刻０において、パイプ＃０にスロット２が割り当てられ、時刻１ではパイプ＃１にスロット２が割り当てられ、時刻２ではパイプ＃２にスロット２が割り当てられ、時刻３ではパイプ＃３にスロット２が割り当てられている。したがって、アクセスタイミングをスロット２とするイテレーション命令１について、時刻０ではパイプ＃０で実行され、時刻１ではパイプ＃１で実行され、時刻２ではパイプ＃２で実行され、時刻３ではパイプ＃３で実行される。ここで、時刻４ではスロット２はパイプ＃０が割り当てられるため、イテレーション命令１はパイプ＃０で実行される。すなわち、パイプ＃０について、スロット２のときイテレーション命令０が、スロット３のときイテレーション命令１が、スロット０のときイテレーション命令０が、スロット１のときイテレーション命令３が実行される。これをパイプ＃１、パイプ＃２、パイプ＃３についても同様とする。
【００２１】
このように、複数の命令に対して競合すること無く並列アクセスが可能となる。アクセスする対象をバンク（ここではベクトルパイプ１１）と呼ばれる単位に分割し、スロットと呼ばれるアクセスタイミングを規定することで、１つの命令がアクセス対象を占有してしまうことなく、複数の命令が並列アクセス可能とする仕組みをバンクスロット方式と呼ぶ。
【００２２】
ベクトルパイプ１１は、ｍ（ｍ：２以上の整数）個のベクトルレジスタ１１０と、ベクトル演算器１１１と、ライトクロスバ１１２と、セレクタ１１３と、パス１１５と、を有する。
ベクトルパイプ１１は、命令発行部１０２からイテレーション命令の入力を受ける。
図１に示す例では、ベクトル演算装置１は、パイプ＃０、パイプ＃１、・・・、パイプ＃ｎ−１、のｎ個のベクトルパイプ１１を有している。なお、パイプ＃ｎ−１の出力からパイプ＃０の入力にもパス１１６が設けられており、各ベクトルパイプ１１はパス１１６によって出力と入力とが巡回するように接続されている。また、パイプ＃０はセレクタ１１４を更に有している。
【００２３】
ベクトルレジスタ１１０は、イテレーション演算に用いられるベクトルデータや、演算結果のデータを格納する。図１に示す例では、各ベクトルパイプ１１はそれぞれ、Ｒ０、Ｒ１、・・・、Ｒｍ−１、のｍ個のベクトルレジスタ１１０を有する。各ベクトルレジスタ１１０には、外部記憶手段（図示せず）からロードされたベクトルデータや、ベクトル演算器１１１から出力された演算結果のデータが、ライトクロスバ１１２を介して入力される。また、ベクトルレジスタ１１０は、格納しているベクトルデータをセレクタ１１３に出力する。
【００２４】
セレクタ１１３には、ベクトルレジスタ１１０からベクトルデータが入力される。ここで、セレクタ１１３は、ｍ個のベクトルレジスタ１１０の中から、演算対象となるベクトルデータを有しているベクトルレジスタ１１０を選択する。選択されたベクトルレジスタ１１０に格納されているベクトルデータは、ベクトル演算器１１１に出力される。
【００２５】
ベクトル演算器１１１は、典型的には、整数演算や浮動小数点演算を行う機能を有する。ベクトル演算器１１１には、セレクタ１１３により選択されたベクトルデータと、他のベクトルパイプ１１のベクトル演算器１１１からパス１１６を介して与えられた演算結果と、が入力される。また、ベクトル演算器１１１は、命令発行部１０２が出力したイテレーション命令に基づいて演算を行う。演算結果は、パス１１５を介してライトクロスバ１１２に出力されるとともに、パス１１６を介して他のベクトルパイプ１１のベクトル演算器１１１に出力される。
【００２６】
ライトクロスバ１１２には、パス１１５を介して、ベクトル演算器１１１から演算結果が入力される。また、外部記憶手段（図示せず）に格納されたベクトルデータが入力される。ライトクロスバ１１２は、入力された演算結果やベクトルデータの振り分けを行い、ベクトルレジスタ１１０に出力する。
【００２７】
パス１１５は、１つのベクトルパイプ１１内において、ベクトル演算器１１１の出力とライトクロスバ１１２とを接続する。パス１１５は、ベクトル演算器１１１が出力した演算結果を、ライトクロスバ１１２に出力するのを仲介する。
【００２８】
パス１１６は、ベクトルパイプ１１のベクトル演算器１１１と、該ベクトルパイプ１１以外のベクトルパイプ１１とを接続する。パス１１６は、ベクトルパイプ１１のベクトル演算器１１１が出力した演算結果を、該ベクトルパイプ１１以外のベクトルパイプ１１に出力するのを仲介する。図１に示した例では、パス１１６は、パイプ＃０のベクトル演算器１１１が出力した演算結果を、パイプ＃１のベクトル演算器１１１に入力するのを仲介する。同様にして、パス１１６は、パイプ＃２からパイプ＃３に、パイプ＃３からパイプ＃４に、・・・、パイプ＃ｎ−２からパイプ＃ｎ−１に、演算結果を入力するのを仲介する。
ここで、図１に示した例ではパス１１６により、ベクトルパイプ１１は巡回的に接続されている。パス１１６は、パイプ＃ｎ−１のベクトル演算器１１１から出力した演算結果をパイプ＃０のセレクタ１１４に入力するのを仲介する。
【００２９】
セレクタ１１４には、イテレーション演算における初期値と、他のベクトルパイプ１１のベクトル演算器１１１から出力された演算結果と、が入力される。また、セレクタ１１４は、初期値と他のベクトルパイプ１１からの演算結果とのいずれかを選択し、ベクトル演算器１１１に出力する。
図１に示した例では、セレクタ１１４は、イテレーション演算における初期値と、パイプ＃ｎ−１のベクトル演算器１１１から出力された演算結果と、が入力され、いずれか一方を選択して、ベクトル演算器１１１に出力する。典型的には、イテレーション演算を開始するときは、初期値が選択され、それ以外のときであればパイプ＃ｎ−１のベクトル演算器１１１から出力された演算結果が選択される。
【００３０】
続いて、本実施の形態にかかるベクトル演算装置１の具体的な動作について、図１を用いて説明する。ここで、本実施の形態は、複数のイテレーション演算を同時に実行処理するのに好適であり、４つのイテレーション演算（イテレーション命令１乃至４）を同時に実行する場合を例に説明する。ここで複数のイテレーション命令１乃至４は次の通りとする。
イテレーション命令１：A1[i]=E1[i]+A1[i-1](i=0、1、2、3、…、k、…)
イテレーション命令２：B2[i]=F2[i]+B2[i-1](i=0、1、2、3、…、k、…)
イテレーション命令３：C3[i]=G3[i]+C3[i-1](i=0、1、2、3、…、k、…)
イテレーション命令４：D4[i]=H4[i]+D4[i-1](i=0、1、2、3、…、k、…)
【００３１】
ベクトル命令発行制御部１０において、命令識別部１０１は、プログラム中のベクトル命令からイテレーション命令１乃至４を抽出し命令発行部１０２に出力する。命令発行部１０２は入力されたイテレーション命令を保持しておき、仕掛かり中の命令の有無や、バンクスロット方式によるアクセスタイミングの制御に基づいて、各ベクトルパイプ１１に命令実行指示を出力する。命令実行指示を受け取ったパイプ＃０乃至パイプ＃ｎ−１は、下記の動作を行う。
【００３２】
まず、イテレーション命令１（A1[i]=E1[i]+A1[i-1](i=0、1、2、3)）を処理する流れについて説明する。最初の演算
A1[0]=E1[0]+A1[-1]
を行う。
ここで｛A1[-1]｝は初期値である。この場合、最初の演算に必要な要素を演算器１１１に入力するため、ｍ個のベクトルレジスタ１１０の中からセレクタ１１３にてベクトルレジスタＲ０が選択され、さらにセレクタ１１４にて初期値が選択される。ベクトル演算器１１１は、
E1[0]＋A1[-1]
の演算を行い、演算結果｛A1[0]｝を算出する。
【００３３】
次に、この演算結果｛A1[0]｝は、パス１１５を経由しライトクロスバ１１２で振り分けられ、ベクトルレジスタＲ１へ格納される。これとともに、演算結果｛A1[0]｝は、パス１１６を介して、パイプ＃１に出力される。パイプ＃１では、イテレーション命令１の次の演算、
A1[1]=E1[1]+A1[0]
を行う。すなわち、パイプ＃０から送られてきた演算結果｛A1[0]｝とベクトルレジスタＲ０に格納されている{E1[1]}との演算を行い、演算結果｛A1[1]｝を算出する。
【００３４】
同様にして、演算結果｛A1[1]｝は、パス１１５を経由しライトクロスバ１１２にて振り分けられ、ベクトルレジスタＲ１へ格納される。これとともに、演算結果｛A1[1]｝は、パス１１６を介して、パイプ＃２に出力される。パイプ＃２では、イテレーション命令１のさらに次の演算、
A1[2]=E1[2]+A1[1]
を行う。すなわち、パイプ＃１から送られてきた演算結果｛｛A1[1]｝とベクトルレジスタＲ０に格納されている{E1[2]}との演算を行い、演算結果｛A1[2]｝を算出する。
【００３５】
これらの一連の動作が繰り返し行われ、最終パイプであるパイプ＃ｎ−１で演算が行われた場合には、求められた演算結果｛A1[n-1]｝は、パイプ＃ｎ−１のベクトルレジスタＲ１へ格納されるとともにパイプ＃０に出力される。この場合、パイプ＃０のセレクタ１１４は、パイプ＃ｎ−１からの演算結果｛A1[n-1]｝と、初期値｛A1[-1]｝の２つの入力のうち、演算結果｛A1[n-1]｝を選択する。これにより、パイプ＃０のベクトル演算器１１１は、
A1[n]=E1[n]+A1[n-1]
を実行できる。すなわち、演算結果｛A1[n-1]｝と、ベクトルレジスタ１１０に格納されているベクトルデータ｛E1[n]｝の演算を行う。これにより、ｎ番以上の演算であってもパイプ＃０にもどってイテレーション演算を続行することができる。
【００３６】
上記のイテレーション演算処理を、イテレーション命令の終了条件を満たすまで繰り返すことで、１つのイテレーション演算が完了する。
【００３７】
ここで、パイプ＃１で上記のイテレーション命令１を実施しているときには、パイプ＃０では既に処理が完了しているために何ら動作をしていない。同様にして、パイプ＃２にて命令１を実施しているときは、パイプ＃０とパイプ＃１では既に処理が完了しているため何ら動作をしていないこととなる。
【００３８】
そこでパイプ＃０がイテレーション命令１の上記演算を終えたら、命令発行部１０２は次に控えているイテレーション命令２の実行指示を発行する。イテレーション命令２の実行指示のタイミングはバンクスロット方式に基づいて決定する。ここで、イテレーション命令１の発行のタイミングをスロット０、イテレーション命令２の発行タイミングをスロット１とする。すなわち、パイプ＃１にてイテレーション命令１の演算を実行しているときに、イテレーション命令２の演算を実行することとなる。同様にして、スロット２のタイミングでイテレ−ション命令３が発行される。この場合、イテレーション命令１の演算がパイプ＃２で実行され、イテレーション命令２の演算がパイプ＃１で実行され、イテレーション命令３の演算がパイプ＃０で実行されることとなる。このような一連の動作を繰り返すことによって、最大で、ベクトルパイプ数であるｎ個分のイテレーション命令が並列実行可能となる。
【００３９】
このとき、１つのベクトルパイプ１１から、他のベクトルパイプ１１に演算結果を出力するタイミングは、割り当てられたスロット番号とベクトルパイプ１１のパイプ番号により固定される。図６にベクトルパイプ１１が４つによる構成である場合の例を示す。図６に示すように、ベクトル命令発行制御部１０は、４つのパイプ＃０乃至＃３からの演算結果を、巡回送りするタイミングを制御するように、命令の発行を行う。
【００４０】
すると図７に示すように、例えば、時刻０でイテレーション命令１の０番目の演算がパイプ＃０で実行された場合、時刻１ではイテレーション命令１の１番目の演算はパイプ＃１で実行されると同時に、イテレーション命令２の０番目の演算がパイプ＃０で実行される。時刻２ではイテレーション命令１の２番目の演算がパイプ＃２で実行されると同時に、イテレーション命令２の１番目の演算がパイプ＃１で実行され、イテレーション命令３の０番目の演算がパイプ＃０で実行される。このように、各時刻における各ベクトルパイプ１１の動作は、イテレーション命令が割り当てられたスロット番号により一意に決定する。
【００４１】
したがって、
イテレーション命令１をA1[i]=E1[i]+A1[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令２をB2[i]=F2[i]+B2[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令３をC3[i]=G3[i]+C3[i-1](i=0、1、2、3、…、k、…)、
イテレーション命令４をD4[i]=H4[i]+D4[i-1](i=0、1、2、3、…、k、…)、
とし、スロット０のタイミングでイテレーション命令１、スロット１のタイミングでイテレーション命令２、スロット２のタイミングでイテレーション命令３、スロット３のタイミングでイテレーション命令４が実行される場合には、
時刻０ではA1[0]=E1[0]+A1[-1](パイプ＃０)、
時刻１ではA1[1]=E1[1]+A1[0](パイプ＃１)、B2[0]=F2[0]+B2[-1](パイプ＃０)、
時刻２ではA1[2]=E1[2]+A1[1](パイプ＃２)、B2[1]=F2[1]+B2[0](パイプ＃１)、C3[0]=G3[0]+C3[-1](パイプ＃０)、
時刻３では、A1[3]=E1[3]+A1[2](パイプ＃３)、B2[2]=F2[2]+B2[1](パイプ＃２)、C3[1]=G3[1]+C3[0](パイプ＃１)、D4[0]=H4[0]+D4[-1](パイプ＃０)、
時刻４ではA1[4]=E1[4]+A1[3](パイプ＃０)、B2[3]=F2[3]+B2[2](パイプ＃３)、C3[2]=G3[2]+C3[1](パイプ＃２)、D4[1]=H4[1]+D4[0](パイプ＃１)、
時刻５ではA1[5]=E1[5]+A1[4](パイプ＃１)、B2[4]=F2[4]+B2[3](パイプ＃０)、C3[3]=G3[3]+C3[2](パイプ＃３)、D4[2]=H4[2]+D4[1](パイプ＃２)
といった処理が、各イテレーション命令の終了条件を満たすまで実行される。イテレーション命令の終了条件は、例えば、ベクトルレジスタ１１０に格納されたベクトルデータのうち、その演算で使用されるべきベクトルデータを、全て使用し終えた場合とすることができる。
【００４２】
図８は本実施の形態の特徴を示したタイムチャートである。図８において、例えば１−０とは、イテレーション命令１の０番目の演算処理を示す。図８に示すように、従来の方式では１つのイテレーション命令の処理が終了した後でないと次のイテレーション命令を開始できない。これに対し、本実施の形態によれば、巡回的に各ベクトルパイプ１１間を接続するパス１１６と、各イテレーション命令の発行タイミングをバンクスロット方式によって制御を行う命令発行部１２とを設けることで、複数のイテレーション命令を並列に処理することが可能となる。したがって、図８に示すように、複数の異なるイテレーション演算を行う場合の実行時間を短縮し、ベクトル演算装置の性能の向上を図ることができる。
【００４３】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、パス１１６に代わり、各ベクトルパイプ１１のパイプ間のそれぞれを接続するフルクロスバを設けておき、フルクロスバを介して各ベクトルパイプ１１が演算結果の入出力を行っても良い。また、イテレーション演算は加算だけでなく、他の四則演算であっても良い。また、ベクトルパイプ１１に複数の演算器を備え、３つ以上の項からなるイテレーション演算に適応する形式としても良い。また、ベクトルパイプ１１は、イテレーション演算の終了条件を満たした時点で処理の一切を終了するのではなく、パス１１６を介して、最終的な演算結果がパイプ＃０などの任意のベクトルパイプ１１のベクトルレジスタ１１０に格納されるように、制御されることが望ましい。
【符号の説明】
【００４４】
１      ベクトル演算装置
１０    ベクトル命令発行制御部
１１    ベクトルパイプ
１０１  命令識別部
１０２  命令発行部
１１０  ベクトルレジスタ
１１１  ベクトル演算器
１１２  ライトクロスバ
１１３  セレクタ
１１４  セレクタ
１１５  パス
１１６  パス
【図１】
2011022780.tif 000003
【図２】
2011022780.tif 000004
【図３】
2011022780.tif 000005
【図４】
2011022780.tif 000006
【図５】
2011022780.tif 000007
【図６】
2011022780.tif 000008
【図７】
2011022780.tif 000009
【図８】
2011022780.tif 000010
【図９】
2011022780.tif 000011