(57)【特許請求の範囲】
【請求項１】
複数のベクトルレジスタバンクに保持されるベクトルデータを、１つのベクトル演算命令で複数の演算パイプラインを使用して並行的に演算処理するベクトルプロセッサにおいて、演算対象のベクトルデータのデータ要素数が、１つの命令で同時に動作する演算パイプライン数の整数倍でないときに発生する、一部の演算パイプラインに演算対象データがある一方で演算パイプラインの演算対象データがない区間に、次の命令のデータと演算制御情報を送り込むベクトルプロセッサ制御装置であって、
前記ベクトルレジスタバンクと前記演算パイプラインの間に、前記ベクトルレジスタバンクから読み出すベクトルレジスタを選択する複数のレジスタ選択部と、前記ベクトルレジスタバンクから読み出され前記複数のレジスタ選択部により選択された各データ要素が入るべき前記演算パイプラインを選択する複数のデータ要素選択部と、を設け、各ベクトルレジスタのデータ要素０が何れのベクトルレジスタバンクに入っているか示す情報を保持する要素０位置情報保持部と、ベクトル長を示す情報を保持するベクトル長保持部と、該要素０位置情報保持部に保持される該情報と、該ベクトル長保持部の情報を用いて、該データ要素選択部を制御するための制御情報を生成するデータ要素選択情報生成部と、を有することを特徴とするベクトルプロセッサ制御装置。
【請求項２】
前記データ要素選択情報生成部は、ベクトル長を命令毎に積算加算し演算パイプライン数で割った余りと、演算に使用するベクトルレジスタの要素０位置情報から前記制御情報を求め、かつ、該制御情報を用いて何れの演算パイプラインが何れの演算命令を行うべきか判定して、各該演算パイプラインに前記演算制御情報を与えることを特徴とする請求項１のベクトルプロセッサ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトルプロセッサ制御装置に係り、特に複数の演算処理を並行的に行う計算機において、１つの演算命令で複数のデータを同時に演算処理する演算機構の効率的な処理に関する。
【背景技術】
【０００２】
大量の演算処理を高速に実行する計算機として、複数のデータ要素からなるベクトルデータをベクトル演算器で処理するベクトルプロセッサが知られている。ベクトルプロセッサは、最低１つのベクトル演算パイプラインを備えており、ベクトル演算パイプラインの中では、ベクトルデータの各データ要素が次々とベクトル演算器に供給され、供給データが途切れない限り演算が連続的に実行される。
【０００３】
ベクトル演算を高速に行う方法としては、図２のように、複数のベクトル演算パイプラインを備え、１つのベクトル演算命令によりそれら複数の演算パイプラインがそれぞれ別のデータ要素を同時に演算処理することで実現される。図２の例では、例えば、演算パイプライン１０９,１１９,１２９〜１３９まで８個の演算パイプラインを持つ。これによれば、ベクトルデータが途切れずに供給されれば、演算パイプラインが１個の場合に比べて演算パイプライン数倍に近い演算性能を発揮できる。
【０００４】
ベクトル演算命令を実行する際には、演算処理の対象であるベクトルデータのデータ要素数すなわちベクトル長が、何らかの方法で決定される。一般にプログラム中の１個の１次元配列データ、または、配列データ中のある範囲等がベクトルデータとして処理されるが、そのデータ要素数がベクトルレジスタの保持可能なデータ要素数を超える場合には、ソフトウェアまたはハードウェアによりベクトルレジスタの保持可能なデータ要素数づつに区切って処理される。また、プログラムが処理しようとするデータ要素数が、ベクトルレジスタの保持可能なデータ要素数より小さい場合には、区切られずに処理される。
この種のベクトル処理装置として、例えば、特許文献１（特開平３−６６６２公報）に開示されてものが知られている。
【０００５】
【特許文献１】特開平３−６６６２公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
１つのベクトル演算命令でＰ個の演算パイプライン（Ｐは１以上の整数）を使用して演算項数×Ｐ個のデータ要素に対するＰ個の演算処理を同時に行う要素並列処理方式のベクトルプロセッサにおいて、ベクトル長Ｎ（Ｎは１以上の整数）が演算パイプライン数Ｐの倍数でない場合、図３に示すように、演算パイプラインにデータが供給されず、演算が行われない時間が発生することがあり、その結果、演算処理速度が低下する。
【０００７】
図３は、演算パイプライン数Ｐ＝８、ベクトル長Ｎ＝５０のベクトル演算命令を演算命令１、演算命令２のように続けて複数実行する例である。この場合、１つの演算命令において、最初から最後の１つ前までの時間は８個の演算パイプラインが同時に演算処理を行うが、各命令の最後の時間に３０１,３０２のように演算対象データ要素のない区間が発生する。そのため、演算パイプライン１０９,１１９は演算を行うが、１２９〜１３９で示される６個の演算パイプラインは演算処理を行わない。その結果、本例の場合の演算実行率は１００％でなく、
５０÷（切り上げ（５０÷８））×８＝５０／５６  
に低下する。
【０００８】
本発明の目的は、複数の演算パイプラインを持つベクトルプロセッサにおいて、演算データが供給されない区間を減少させることにより演算実行率の低下を防ぎ、演算処理速度を向上させることである。
【課題を解決するための手段】
【０００９】
本発明は、好ましは、複数のベクトルレジスタバンクに保持されるベクトルデータを、１つのベクトル演算命令で複数の演算パイプラインを使用して並行的に演算処理するベクトルプロセッサにおいて、演算対象のベクトルデータのデータ要素数が、１つの命令で同時に動作する演算パイプライン数の整数倍でないときに発生する、一部の演算パイプラインに演算対象データがある一方で演算パイプラインの演算対象データがない区間に、次の命令のデータと演算制御情報を送り込むことを特徴とするベクトルプロセサ制御装置として構成される。
【００１０】
好ましい例では、前記ベクトルレジスタバンクから読み出された各データ要素が入るべき前記演算パイプラインを選択する複数のデータ要素選択部と、各ベクトルレジスタのデータ要素０が何れのベクトルレジスタバンクに入っているか示す情報を保持する要素０位置情報保持部と、ベクトル長を示す情報を保持するベクトル長保持部と、該要素０位置情報保持部に保持される該情報と、該ベクトル長保持部の情報を用いて、該データ要素選択部を制御するための制御情報を生成するデータ要素選択情報生成部と、を有する前記ベクトルプロセサ制御装置として構成される。
【００１１】
また、好ましくは、前記データ要素選択情報生成部は、ベクトル長を命令毎に積算加算し演算パイプライン数で割った余りと、演算に使用するベクトルレジスタの要素０位置情報から前記制御情報を求め、かつ、該制御情報を用いて何れの演算パイプラインが何れの演算命令を行うべきか判定して、各該演算パイプラインに前記演算制御情報を与える前記ベクトルプロセサ制御装置として構成される。
【００１２】
本発明はまた、表現形式を変えれば、複数のベクトルレジスタバンクに保持されるベクトルデータを、１つのベクトル演算命令で複数の演算パイプラインを使用して並行的に演算処理するベクトルプロセッサにおいて、該ベクトルレジスタバンクと該演算パイプラインの間にデータ要素を選択する機構を設け、データ要素が入るべき該演算パイプラインを選択することで、演算データが無いために演算の行われない該演算パイプラインに次の命令の演算対象データを入れることを特徴とするベクトルプロセサ制御装置として構成される。
【発明の効果】
【００１３】
本発明によれば、複数の演算パイプラインを持つベクトルプロセッサにおいて、演算データが供給されない区間を減少させることにより演算実行率の低下を防ぎ、演算処理速度を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明の一実施例について説明する。
図１において、ベクトルプロセッサは、８個の演算パイプライン１０９,１１９,１２９〜１３９と、演算で使用されるベクトルデータを保持するための８個のベクトルレジスタバンク１００〜１３０を備える。
【００１５】
各ベクトルレジスタバンク１００〜１３０のレジスタを選択するために、それぞれ複数のレジスタ選択部１０１〜１０４、１１１〜１１４、１２１〜１２４、１３１〜１３４（以下１０１〜１３４と示す）が設けられる。ベクトル演算命令によってあるベクトルレジスタが選択されると、関係するレジスタ選択部１０１〜１３４は対応するレジスタを選択する。選択されたレジスタから読み出されたベクトルデータは演算パイプライン１０９〜１３９へ供給され、その演算結果は命令で指定されたベクトルレジスタに格納される。
【００１６】
図１は二項演算を行う構造の例である。そのために、１つのベクトルレジスタバンク例えばベクトルレジスタバンク０（１００）に２個ずつのレジスタ選択部１０１,１０３があり、２個の入力オペランドを同時に演算パイプラインに供給している。一般にベクトルレジスタは、ベクトルプロセッサでない計算機のレジスタと同様に数個から数十個有り、それぞれのベクトルレジスタが数十個から数百個のデータ要素を保持することができる。図１の例では、それぞれ６４個のデータ要素を保持できるベクトルレジスタが３２個有る。
【００１７】
本発明の実施例に特徴的なことは、１つのベクトル演算命令の最後の演算実行と次のベクトル演算命令の最初の演算実行を同時に行うことを可能とするために、ベクトルレジスタバンク１００〜１３０から読み出すベクトルレジスタを選択するレジスタ選択部１０１〜１３４を、図３の例の２倍の個数用意する。また、ベクトルレジスタバンク１００,１１０,１２０,１３０とベクトル演算パイプライン１０９,１１９,１２９,１３９との間にデータ要素選択部１０５,１０６,１１５,１１６,１２５,１２６,１３５,１３６を設け、ベクトルレジスタバンクから読み出された各データ要素が入るべき演算パイプラインを選択できるようにする。
【００１８】
更に、要素０位置情報保持部１５０に各ベクトルレジスタのデータ要素０がどのベクトルレジスタバンクに入っているかを保持し、この情報とベクトル長保持部１４０に保持されているベクトル長の情報を用いて、データ要素選択情報生成部１６０でデータ要素選択部の制御情報１６１を生成し、各データ要素選択部１０５，１０６，１１５，１１６，１２５，１２６，１３５，１３６を制御する。データ要素選択情報生成部１６０はまた、演算結果を書き込むベクトルレジスタの要素０位置情報１６２を生成し、要素０位置情報保持部１５０に書き込む。
【００１９】
データ要素選択部の制御情報１６１は、ベクトル長を命令毎に積算加算し演算パイプライン数で割った余りと、演算に使用するベクトルレジスタの要素０位置情報から求める。また同じ情報を使用して、どの演算パイプラインがどの演算命令を行うべきか判定し、各演算パイプラインに演算の種類等適切な演算制御情報を与える。
【００２０】
本発明の実施例によれば、ベクトルレジスタバンク１００〜１３０と演算パイプライン１０９〜１３９の間に、データ要素選択部１０５,１０６,１１５,１１６,１２５,１２６,１３５,１３６を設け、ベクトルレジスタバンクと演算パイプラインの関係を必要に応じてずらすことができる。これにより、図３の演算対象データ要素のない区間３０１，３０２に、図４のように次の命令の演算対象データ要素を入れることができる。
【図面の簡単な説明】
【００２１】
【図１】一実施形態によるベクトルプロセッサの構成を示す図。
【図２】複数の演算パイプラインを持つベクトルプロセッサの構成例を示す図。
【図３】複数の演算パイプラインを持つベクトルプロセッサの演算データの流れの一例を示す図。
【図４】一実施形態による演算データの流れの一例を示す図。
【符号の説明】
【００２２】
１００、１１０、１２０、１３０：ベクトルレジスタバンク  
１０１〜１０４、１１１〜１１４、１２１〜１２４、１３１〜１３４：レジスタ選択部  
１０５、１０６、１１５、１１６、１２５、１２６、１３５、１３６：データ要素選択部  
１０９、１１９、１２９、１３９：演算パイプライン  １４０：ベクトル長保持部  １５０：要素０位置情報保持部  １５１、１５２、１５３、１５４：要素０位置情報の選択器  
１６０：データ要素選択情報生成部  １６１：データ要素選択情報  １６２：生成された要素０位置情報  ３０１、３０２：演算対象データ要素のない区間。
【図１】
0005255885.tif 000002
【図２】
0005255885.tif 000003
【図３】
0005255885.tif 000004
【図４】
0005255885.tif 000005