(57)【要約】【課題】大量のベクトルデータに関しては現状の処理を行い、少量のベクトルデータに関してはより高速に処理することができるベクトルデータ処理装置を提供すること。【解決手段】本発明のベクトルデータ処理装置では、演算結果の若番要素｛ｃ１、ｃ２｝を、ルーティングのためのクロスバ２に通過させない構成にすることにより、短い時間で結果格納レジスタ（１１、５−２）に確定させている。また、若番要素｛ａ１、ａ２｝、｛ｂ１、ｂ２｝）用に少量のマルチポート構成レジスタファイル１１を用意し、また大容量｛ａ３〜ａｎ｝、｛ｂ３〜ｂｎ｝用にはポート数の少ないＲＡＭを用いて組み合わせてベクトルレジスタ５−１、５−２を構成することにより、少ないハードウェア量の増加でベクトルデータ処理装置を構成している。【選択図】図２
2008204028.tif 000002
【特許請求の範囲】
【請求項１】
１番目からｎ番目（ｎは３以上の整数）までのｎ個の第１ベクトルデータのうちの、１番目からｊ番目（ｊは、ｊ＜（ｎ−ｊ）を満たす整数）までのｊ個の第１ベクトルデータが格納された第１若番用格納部と、１番目からｎ番目までのｎ個の第２ベクトルデータのうちの、１番目からｊ番目までのｊ個の第２ベクトルデータが格納された第２若番用格納部とを有するレジスタファイルと、
前記ｊ個の第１ベクトルデータ以外の（ｎ−ｊ）個の第１ベクトルデータが格納された第１ベクトルレジスタと、
前記ｊ個の第２ベクトルデータ以外の（ｎ−ｊ）個の第２ベクトルデータが格納された第２ベクトルレジスタと、
前記ｎ個の第１ベクトルデータと前記ｎ個の第２ベクトルデータのそれぞれに対して順次に演算を施して、ｎ個の演算結果を生成する演算器と、
前記ｎ個の演算結果のうちの、１番目からｊ番目までのｊ個の演算結果を順次に前記レジスタファイルに格納する若番用ライトデータレジスタと、
前記ｊ個の演算結果以外の（ｎ−ｊ）個の演算結果を順次に前記第１及び第２ベクトルレジスタのうちの指定されたベクトルレジスタに格納するクロスバと
を具備するベクトルデータ処理装置。
【請求項２】
請求項１に記載のベクトルデータ処理装置において、
前記レジスタファイルの前記第１若番用格納部に格納された前記ｊ個の第１ベクトルデータを順次に前記演算器に出力し、その後に、前記第１ベクトルレジスタに格納された前記（ｎ−ｊ）個の第１ベクトルデータを順次に前記演算器に出力する第１選択回路と、
前記レジスタファイルの前記第２若番用格納部に格納された前記ｊ個の第２ベクトルデータを順次に前記演算器に出力し、その後に、前記第２ベクトルレジスタに格納された前記（ｎ−ｊ）個の第２ベクトルデータを順次に前記演算器に出力する第２選択回路と
を更に具備するベクトルデータ処理装置。
【請求項３】
請求項２に記載のベクトルデータ処理装置において、
前記第１選択回路と前記演算器との間に接続された第１演算入力レジスタと、
前記第２選択回路と前記演算器との間に接続された第２演算入力レジスタと、
前記演算器と前記クロスバとの間に接続された演算出力レジスタと
を更に具備するベクトルデータ処理装置。
【請求項４】
請求項３に記載のベクトルデータ処理装置において、
前記演算出力レジスタと前記クロスバとの間に前記第１、第２ベクトルレジスタに対応して接続された第１、第２クロスバ入力レジスタと、
前記クロスバと前記第１、第２ベクトルレジスタとの間に接続された第１、第２クロスバ出力レジスタと、
前記第１、第２クロスバ出力レジスタと前記第１、第２ベクトルレジスタとの間に接続された第１、第２ライトデータレジスタと
を更に具備するベクトルデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に使用されるベクトルデータ処理装置に関する。
【背景技術】
【０００２】
計算機に使用されるベクトルデータ処理装置が知られている。図１は、従来のベクトルデータ処理装置の構成を示している。従来のベクトルデータ処理装置は、クロスバ入力レジスタ１０１−１、１０１−２と、クロスバ１０２と、クロスバ出力レジスタ１０３−１、１０３−２と、ライトデータレジスタ１０４−１、１０４−２と、ベクトルレジスタ１０５−１、１０５−２と、リードデータレジスタ１０６−１、１０６−２と、演算入力レジスタ１０７−１、１０７−２と、演算器１０８と、演算出力レジスタ１０９とを具備している。これらはクロックに応じて動作する。
【０００３】
クロスバ入力レジスタ１０１−１、１０１−２は、クロスバ１０２に接続されている。また、クロスバ入力レジスタ１０１−２は、他のリソースに接続されている。クロスバ１０２は、クロスバ出力レジスタ１０３−１、１０３−２に接続されている。クロスバ出力レジスタ１０３−１、１０３−２は、それぞれ、ライトデータレジスタ１０４−１、１０４−２に接続されている。ライトデータレジスタ１０４−１、１０４−２は、それぞれ、ベクトルレジスタ１０５−１、１０５−２に接続されている。ベクトルレジスタ１０５−１、１０５−２は、それぞれ、リードデータレジスタ１０６−１、１０６−２に接続されている。リードデータレジスタ１０６−１、１０６−２は、それぞれ、演算入力レジスタ１０７−１、１０７−２に接続されている。演算入力レジスタ１０７−１、１０７−２は、演算器１０８に接続されている。演算器１０８は、演算出力レジスタ１０９に接続されている。演算出力レジスタ１０９は、クロスバ入力レジスタ１０１−１に接続されている。
【０００４】
ベクトルレジスタ１０５−１は、１番目からｎ番目（ｎは３以上の整数）までのｎ個のベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａｎ｝を格納する。
【０００５】
このベクトルレジスタ１０５−１は、例えばＲＡＭにより構成される。ベクトルレジスタ１０５−１は、ｎ個のベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａｎ｝をライトアドレスＷＡ１に応じて各要素位置に格納し、リードアドレスＲＡ１に応じて、それらをリードデータレジスタ１０６−１、演算入力レジスタ１０７−１を介して演算器１０８に出力する。
【０００６】
ベクトルレジスタ５−２は、１番目からｎ番目までのｎ個のベクトルデータＢ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝を格納する。
【０００７】
このベクトルレジスタ１０５−２は、例えばＲＡＭにより構成される。ベクトルレジスタ１０５−２は、ｎ個のベクトルデータＢ＝｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝をライトアドレスＷＡ２に応じて各要素位置に格納し、リードアドレスＲＡ２に応じて、それらをリードデータレジスタ１０６−２、演算入力レジスタ１０７−２を介して演算器１０８に出力する。
【０００８】
演算器１０８は、パイプライン構成を用い、ベクトルデータの入力から出力まで数マシンサイクルを必要とするが、マシンサイクル毎に異なったベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａｎ｝、Ｂ＝｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝を入力し数マシンサイクル後にはマシンサイクル毎に演算結果（演算結果のベクトルデータ）Ｃ＝｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を生成して出力するように構成されている。すなわち、異なる演算を並列して実行できるように、複数の演算部を備えている。
【０００９】
この演算器１０８は、演算入力レジスタ１０７−１の出力（ｎ個のベクトルデータ｛ａ１、ａ２、ａ３、・・・、ａｎ｝）を第一オペランドとして入力し、演算入力レジスタ１０７−２の出力（ｎ個のベクトルデータ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝）を第二オペランドとして入力する。演算器１０８は、ｎ個のベクトルデータ｛ａ１、ａ２、ａ３、・・・、ａｎ｝とｎ個のベクトルデータ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝のそれぞれに対して順次に演算を施して、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を生成し、順次に演算出力レジスタ１０９に出力する。
【００１０】
ここで、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝はベクトルレジスタ１０５−２に格納するよう命令で指定されているものとする。この場合、演算出力レジスタ１０９は、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を、クロスバ入力レジスタ１０１−１を介してクロスバ１０２に出力する。
【００１１】
クロスバ１０２は、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝に対して、ベクトルレジスタ１０５−１、１０５−２のうちの、命令で指定されるベクトルレジスタ１０５−２に格納するためにルーティングを行い、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を順次にクロスバ出力レジスタ１０３−２、ライトデータレジスタ１０４−２を介してベクトルレジスタ１０５−２に格納する。
【００１２】
このように、従来のベクトルデータ処理装置では、一度に多くのベクトルデータを格納（保持）できる複数のベクトルレジスタ１０５−１、１０５−２を用意し、また異なる演算を並列して実行できるようにするために演算器１０８に複数の演算部が演算リソースとして用意されていた。これらの演算器１０８の出力を命令で指定されたベクトルレジスタ（ベクトルレジスタ１０５−２）に格納するために、複数のベクトルレジスタ１０５−１、１０５−２と複数の演算部とに対応し、それぞれのベクトルデータをルーティングするクロスバ１０２が必要となっていた。
【００１３】
しかしながら、従来のベクトルデータ処理装置において、次のような課題がある。
【００１４】
まず、第１の課題について説明する。一度に処理を行うベクトル要素数（ベクトルデータ数）が多い場合には、クロスバ１０２でのルーティングにかかる時間は問題となることは少ない。一方、処理を行うベクトル要素数が少ない場合にはこのクロスバ１０２でのルーティング時間もオーバーヘッドとして性能上問題となる。
【００１５】
次に、第２の課題について説明する。ベクトルレジスタベクトルレジスタ１０５−１、１０５−２は多くの要素を格納する。このため、従来型の大容量を維持したＲＡＭのまま、書き込み用のライトポートを増やしたり、読み出し用のリードポートを増やしたりすると、ＲＡＭ自体の面積が増加する。その影響によりクロスバ１０２自身もそれに合わせて大きくなり、ルーティング時間が更に増加してしまう。
【００１６】
大量のベクトルデータに関しては現状の処理を行い、少量のベクトルデータに関してはより高速に処理することが望まれる。
【００１７】
ベクトルデータに関する技術について紹介する。
【００１８】
特開平９−２８２３０８号公報（特許文献１）には“ベクトル命令制御方式”が記載されている。ベクトル命令制御方式は、ベクトル型情報処理装置を構築するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）チップに内蔵されるベクトルユニットを駆動し制御する。このベクトル命令制御方式は、ベクトルユニットを内蔵するＬＳＩチップに、短いベクトル長のベクトル命令を実行するベクトルユニットと、スカラ命令を実行するスカラユニットと、前記ベクトルユニット及び前記スカラユニットの両者に含まれて共用される演算ユニットとを備えることを特徴としている。
【００１９】
特開平９−１９８３７４号公報（特許文献２）には“ベクトル処理装置”が記載されている。ベクトル処理装置は、複数のベクトルレジスタと少なくとも１つのベクトル演算器と少なくとも１つのデータ転送回路とを有するベクトル演算処理ユニットを複数備え、１つのベクトル命令を前記ベクトル演算処理ユニットで分割して処理する。このベクトル処理装置は、複数の異なるベクトル命令列の並列処理が可能か否かを判定する判定手段を備え、前記複数のベクトル演算処理ユニットを複数に分割し、分割された複数のベクトル演算処理ユニットにそれぞれ前記異なるベクトル命令列の１つを割り当てて、複数の異なるベクトル命令列を並列に処理することを特徴としている。
【００２０】
特開２００１−２７３２７７号公報（特許文献３）には“演算処理システム”が記載されている。演算処理システムは、複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算を処理する。この演算処理システムは、データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルと、バスによって前記ベクトル・データ・ファイルに結合されるポインタ配列であって、複数のエントリを含み、各エントリがベクトル・データ・ファイル内の少なくとも１つの格納要素を識別するようにしたポインタ配列とを含み、前記データ・ベクトルの少なくとも１つのデータ要素を格納するための少なくとも１つの格納要素であって、前記ポインタ配列の少なくとも１つの特定のエントリに対し、その特定のエントリによって識別される少なくとも１つの格納要素が、前記ベクトル・データ・ファイルの任意の開始アドレスを有している。
【００２１】
特開平５−２３３２７９号公報（特許文献４）には“情報処理装置が記載されている。情報処理装置は、複数のレジスタウインドにそれぞれ対応して定められた複数群のスカラレジスタを使用する第１種のプログラムと、複数のベクトルレジスタを使用する第２種のプログラムとを実行する。この情報処理装置は、該複数群のスカラレジスタと、該複数のベクトルレジスタを実現するための所定数のレジスタであって、それぞれ該複数群のスカラレジスタの一つとして使用され、かつ、該複数のベクトルレジスタをそれぞれ構成する複数群の要素レジスタの一つとしてそれぞれ使用される複数のレジスタを含むものと、実行中の第１種のプログラムが指定したレジスタウインド番号を保持する手段と、該保持手段に接続され、該第１種のプログラムの実行時に、その第１種のプログラムが発行した、少なくとも一つのレジスタを使用する命令に応答して、該所定数のレジスタの内、該保持されたレジスタウインド番号のレジスタウインドにおいてその命令で指定されたレジスタ番号のスカラレジスタとして使用すべき一つのレジスタを決定する第１の決定回路と、該第２種のプログラムの実行時に、該第２種のプログラムが発行した、少なくとも一つのレジスタを使用する命令に応答して、該所定数のレジスタの内、その命令で指定されたレジスタ番号を有するベクトルレジスタを構成する一群の要素レジスタとして使用すべき一群のレジスタを決定する第２の決定回路と、該第１、第２の決定回路に接続され、該第１の決定回路により決定された該一つのレジスタと、該第２の決定回路により決定された該一群のレジスタをアクセスするアクセス回路とを有している。
【００２２】
特開平１−１９１２６５号公報（特許文献５）には“ベクトル演算命令起動方式”が記載されている。ベクトル演算命令起動方式は、スカラユニットからの起動情報に基づいて、ベクトルユニットが動作を開始する。このベクトル演算命令起動方式は、該スカラユニットからのベクトルユニットへの上記起動時間をパイプラインで、ベクトル演算命令の実行ステージ以前に送出し、ベクトルユニットにおいては、該起動時間に基づいて、上記ベクトル演算命令の実行ステージ以前に、操作コードのデコード、及びベクトルレジスタからの最初の一要素のリードを完了させ、上記スカラユニットからのベクトル命令の実行ステージにおいて送出されるスタートコマンドを受信した時点で、該ベクトル演算を開始することを特徴としている。
【００２３】
【特許文献１】特開平９−２８２３０８号公報
【特許文献２】特開平９−１９８３７４号公報
【特許文献３】特開２００１−２７３２７７号公報
【特許文献４】特開平５−２３３２７９号公報
【特許文献５】特開平１−１９１２６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明の課題は、大量のベクトルデータに関しては現状の処理を行い、少量のベクトルデータに関してはより高速に処理することができるベクトルデータ処理装置を提供することにある。
【課題を解決するための手段】
【００２５】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２６】
本発明のベクトルデータ処理装置は、
１番目からｎ番目（ｎは３以上の整数）までのｎ個の第１ベクトルデータ（｛ａ１、ａ２、ａ３、・・・、ａｎ｝）のうちの、１番目からｊ番目（ｊは、ｊ＜（ｎ−ｊ）を満たす整数）までのｊ個の第１ベクトルデータ（｛ａ１、ａ２｝）が格納された第１若番用格納部（アドレス“０”、“１”）と、１番目からｎ番目までのｎ個の第２ベクトルデータ（｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝）のうちの、１番目からｊ番目までのｊ個の第２ベクトルデータ（｛ｂ１、ｂ２｝）が格納された第２若番用格納部（アドレス“２”、“３”）とを有するレジスタファイル（１１）と、
前記ｊ個の第１ベクトルデータ（｛ａ１、ａ２｝）以外の（ｎ−ｊ）個の第１ベクトルデータ（｛ａ３、・・・、ａｎ｝）が格納された第１ベクトルレジスタ（５−１）と、
前記ｊ個の第２ベクトルデータ（｛ｂ１、ｂ２｝）以外の（ｎ−ｊ）個の第２ベクトルデータ（｛ｂ３、・・・、ｂｎ｝）が格納された第２ベクトルレジスタ（５−２）と、
前記ｎ個の第１ベクトルデータ（｛ａ１、ａ２、ａ３、・・・、ａｎ｝）と前記ｎ個の第２ベクトルデータ（｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝）のそれぞれに対して順次に演算を施して、ｎ個の演算結果（｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝）を生成する演算器（８）と、
前記ｎ個の演算結果（｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝）のうちの、１番目からｊ番目までのｊ個の演算結果（｛ｃ１、ｃ２｝）を順次に前記レジスタファイル（１１）に格納する若番用ライトデータレジスタ（１０−２）と、
前記ｊ個の演算結果（｛ｃ１、ｃ２｝）以外の（ｎ−ｊ）個の演算結果（｛ｃ３、・・・、ｃｎ｝）を順次に前記第１及び第２ベクトルレジスタ（５−１、５−２）のうちの指定されたベクトルレジスタ（５−２）に格納するクロスバ（２）と
を具備している。
【００２７】
本発明のベクトルデータ処理装置は、
前記レジスタファイル（１１）の前記第１若番用格納部（アドレス“０”、“１”）に格納された前記ｊ個の第１ベクトルデータ（｛ａ１、ａ２｝）を順次に前記演算器（８）に出力し、その後に、前記第１ベクトルレジスタ（５−１）に格納された前記（ｎ−ｊ）個の第１ベクトルデータ（｛ａ３、・・・、ａｎ｝）を順次に前記演算器（８）に出力する第１選択回路（１２−１）と、
前記レジスタファイル（１１）の前記第２若番用格納部（アドレス“２”、“３”）に格納された前記ｊ個の第２ベクトルデータ（｛ｂ１、ｂ２｝）を順次に前記演算器（８）に出力し、その後に、前記第２ベクトルレジスタ（５−２）に格納された前記（ｎ−ｊ）個の第２ベクトルデータ（｛ｂ３、・・・、ｂｎ｝）を順次に前記演算器（８）に出力する第２選択回路（１２−２）と
を更に具備している。
【００２８】
本発明のベクトルデータ処理装置は、
前記第１選択回路（１２−１）と前記演算器（８）との間に接続された第１演算入力レジスタ（７−１）と、
前記第２選択回路（１２−２）と前記演算器（８）との間に接続された第２演算入力レジスタ（７−２）と、
前記演算器（８）と前記クロスバ（２）との間に接続された演算出力レジスタ（９）と
を更に具備している。
【００２９】
本発明のベクトルデータ処理装置は、
前記演算出力レジスタ（９）と前記クロスバ（２）との間に前記第１、第２ベクトルレジスタ（５−１、５−２）に対応して接続された第１、第２クロスバ入力レジスタ（１−１、１−２）と、
前記クロスバ（２）と前記第１、第２ベクトルレジスタ（５−１、５−２）との間に接続された第１、第２クロスバ出力レジスタ（３−１、３−２）と、
前記第１、第２クロスバ出力レジスタ（３−１、３−２）と前記第１、第２ベクトルレジスタ（５−１、５−２）との間に接続された第１、第２ライトデータレジスタ（４−１、４−２）と
を更に具備している。
【発明の効果】
【００３０】
本発明のベクトルデータ処理装置では、演算結果の若番要素（演算結果｛ｃ１、ｃ２｝）を、ルーティングのためのクロスバ（２）に通過させない構成にすることにより、短い時間で結果格納レジスタ（レジスタファイル（１１）、ベクトルレジスタ（５−２））に確定させることができる。
【００３１】
また、本発明では、若番要素（ベクトルデータ｛ａ１、ａ２｝、｛ｂ１、ｂ２｝）用に少量のマルチポート構成レジスタファイル（１１）を用意し、また大容量（ベクトルデータ｛ａ３〜ａｎ｝、｛ｂ３〜ｂｎ｝）用にはポート数の少ないＲＡＭを用いて組み合わせてベクトルレジスタ（５−１、５−２）を構成することにより、少ないハードウェア量の増加でベクトルデータ処理装置を構成できる。
【００３２】
このように、本発明のベクトルデータ処理装置は、大量のベクトルデータに関しては現状の処理を行い、少量のベクトルデータに関してはより高速に処理することができる。
【発明を実施するための最良の形態】
【００３３】
以下に添付図面を参照して、本発明のベクトルデータ処理装置について詳細に説明する。
【００３４】
図２は、本発明のベクトルデータ処理装置の構成を示している。本発明のベクトルデータ処理装置は、クロスバ入力レジスタ１−１、１−２と、クロスバ２と、クロスバ出力レジスタ３−１、３−２と、ライトデータレジスタ４−１、４−２と、ベクトルレジスタ５−１、５−２と、リードデータレジスタ６−１、６−２と、演算入力レジスタ７−１、７−２と、演算器８と、演算出力レジスタ９と、若番用ライトデータレジスタ１０−１、１０−２（以下、ライトデータレジスタ１０−１、１０−２）と、レジスタファイル１１と、選択回路１２−１、１２−２とを具備している。これらはクロックに応じて動作する。
【００３５】
クロスバ入力レジスタ１−１、１−２は、クロスバ２に接続されている。また、クロスバ入力レジスタ１−２は、他のリソース（例えば主記憶装置など）に接続されている。クロスバ２は、クロスバ出力レジスタ３−１、３−２に接続されている。クロスバ出力レジスタ３−１、３−２は、それぞれ、ライトデータレジスタ４−１、４−２に接続されている。ライトデータレジスタ４−１、４−２は、それぞれ、ベクトルレジスタ５−１、５−２に接続されている。ベクトルレジスタ５−１、５−２は、それぞれ、リードデータレジスタ６−１、６−２に接続されている。リードデータレジスタ６−１、６−２は、それぞれ、選択回路１２−１、１２−２に接続されている。
ライトデータレジスタ１０−１、１０−２は、レジスタファイル１１に接続されている。また、ライトデータレジスタ１０−１は、他のリソースに接続されている。レジスタファイル１１は、選択回路１２−１、１２−２に接続されている。
選択回路１２−１、１２−２は、それぞれ、演算入力レジスタ７−１、７−２に接続されている。演算入力レジスタ７−１、７−２は、演算器８に接続されている。演算器８は、演算出力レジスタ９に接続されている。演算出力レジスタ９は、クロスバ入力レジスタ１−１とライトデータレジスタ１０−２に接続されている。
【００３６】
レジスタファイル１１は、第１若番用格納部と、第２若番用格納部とを有している。
第１若番用格納部は、１番目からｎ番目（ｎは３以上の整数）までのｎ個の第１ベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａｎ｝のうちの、１番目からｊ番目（ｊは、ｊ＜（ｎ−ｊ）を満たす整数）までのｊ個の第１ベクトルデータを格納する。
第２若番用格納部は、１番目からｎ番目までのｎ個の第２ベクトルデータＢ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝のうちの、１番目からｊ番目までのｊ個の第２ベクトルデータを格納する。
ここで、ｊを２とし、ｊ個の第１ベクトルデータをベクトルデータ｛ａ１、ａ２｝とし、ｊ個の第２ベクトルデータをベクトルデータ｛ｂ１、ｂ２｝とする。この場合、第１若番用格納部をレジスタファイル１１のアドレス“０”、“１”とし、第２若番用格納部をレジスタファイル１１のアドレス“２”、“３”とする。
【００３７】
このレジスタファイル１１は、２リード・２ライト構成である。
書き込みに関しては、レジスタファイル１１は、少量のベクトルデータ｛ａ１、ａ２｝についてはライトアドレスＷ１またはライトアドレスＷ２に応じてライトデータレジスタ１０−１またはライトデータレジスタ１０−２のレジスタデータを、レジスタファイル１１のアドレス“０”と“１”に格納し、少量のベクトルデータ｛ｂ１、ｂ２｝についてはライトアドレスＷ１またはライトアドレスＷ２に応じてライトデータレジスタ１０−１またはライトデータレジスタ１０−２のレジスタデータを、レジスタファイル１１のアドレス“２”と“３”に格納する。ここで、ライトデータレジスタ１０−１のベクトルデータはライトアドレスＷ１により制御され、ライトデータレジスタ１０−２のベクトルデータはライトアドレスＷ２により制御されるものとする。
読み出しに関しては、レジスタファイル１１は、リードアドレスＲ１に応じて、アドレス“０”と“１”に格納されているベクトルデータを順次読み出して選択回路１２−１へ供給し、リードアドレスＲ２に応じて、アドレス“２”と“３”に格納されているベクトルデータを順次読み出して選択回路１２−２へ供給する。
【００３８】
ベクトルレジスタ５−１は、２個のベクトルデータ｛ａ１、ａ２｝以外の（ｎ−２）個のベクトルデータ｛ａ３、・・・、ａｎ｝を格納する。
【００３９】
このベクトルレジスタ５−１は、１リード・１ライト構成のＲＡＭによって構成されている。
書き込みに関しては、ベクトルレジスタ５−１は、（ｎ−２）個のベクトルデータ｛ａ３、ａ４、・・・、ａｎ｝をライトアドレスＷＡ１に応じて、ライトデータレジスタ４−１のベクトルデータをアドレス“０”〜“ｎ−２”に順次格納する。
読み出しに関しては、ベクトルレジスタ５−１は、リードアドレスＲＡ１に応じて、そのアドレス“０”〜“ｎ−２”に格納された大量のベクトルデータ｛ａ３、ａ４、・・・、ａｎ｝を読み出してリードデータレジスタ６−１へ供給する。
【００４０】
ベクトルレジスタ５−２は、２個のベクトルデータ｛ｂ１、ｂ２｝以外の（ｎ−２）個のベクトルデータ｛ｂ３、・・・、ｂｎ｝を格納する。
【００４１】
このベクトルレジスタ５−２は、１リード・１ライト構成のＲＡＭによって構成されている。
書き込みに関しては、ベクトルレジスタ５−２は、（ｎ−２）個のベクトルデータ｛ｂ３、ｂ４、・・・、ｂｎ｝をライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２のベクトルデータをアドレス“０”〜“ｎ−２”に順次格納する。
読み出しに関しては、ベクトルレジスタ５−２は、リードアドレスＲＡ２に応じて、そのアドレス“０”〜“ｎ−２”に格納された大量のベクトルデータ｛ｂ３、ｂ４、・・・、ｂｎ｝を読み出してリードデータレジスタ６−２へ供給する。
【００４２】
選択回路１２−１は、レジスタファイル１１の第１若番用格納部（アドレス“０”、“１”）の出力とリードデータレジスタ６−１の出力のうちの、レジスタファイル１１の出力を優先的に選択する。即ち、選択回路１２−１は、レジスタファイル１１の第１若番用格納部（アドレス“０”、“１”）に格納された２個のベクトルデータ｛ａ１、ａ２｝を順次に演算入力レジスタ７−１を介して演算器８に出力し、その後に、リードデータレジスタ６−１に格納された（ｎ−２）個のベクトルデータ｛ａ３、・・・、ａｎ｝を順次に演算入力レジスタ７−１を介して演算器８に出力する。
【００４３】
選択回路１２−２は、レジスタファイル１１の第２若番用格納部（アドレス“２”、“３”）の出力とリードデータレジスタ６−２の出力のうちの、レジスタファイル１１の出力を優先的に選択する。即ち、選択回路１２−２は、レジスタファイル１１の第２若番用格納部（アドレス“２”、“３”）に格納された２個のベクトルデータ｛ｂ１、ｂ２｝を順次に演算入力レジスタ７−２を介して演算器８に出力し、その後に、リードデータレジスタ６−２に格納された（ｎ−２）個のベクトルデータ｛ｂ３、・・・、ｂｎ｝を順次に演算器８に出力する。
【００４４】
演算器８は、本実施例の場合、パイプライン構成を用い、ベクトルデータの入力から出力まで３マシンサイクルを必要とするが、マシンサイクル毎に異なったベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａｎ｝、Ｂ＝｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝を入力し３マシンサイクル後にはマシンサイクル毎に演算結果（演算結果のベクトルデータ）Ｃ＝｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を生成して出力するように構成されている。すなわち、異なる演算を並列して実行できるように、複数の演算部を備えている。
【００４５】
この演算器８は、演算入力レジスタ７−１の出力（ｎ個のベクトルデータ｛ａ１、ａ２、ａ３、・・・、ａｎ｝）を第一オペランドとして入力し、演算入力レジスタ７−２の出力（ｎ個のベクトルデータ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝）を第二オペランドとして入力する。演算器８は、ｎ個のベクトルデータ｛ａ１、ａ２、ａ３、・・・、ａｎ｝とｎ個のベクトルデータ｛ｂ１、ｂ２、ｂ３、・・・、ｂｎ｝のそれぞれに対して順次に演算を施して、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝を生成し、順次に演算出力レジスタ９に出力する。
【００４６】
ここで、ｎ個の演算結果｛ｃ１、ｃ２、ｃ３、・・・、ｃｎ｝のうちの、１番目から２番目までの２個の演算結果｛ｃ１、ｃ２｝はレジスタファイル１１に格納するよう命令で指定され、２個の演算結果｛ｃ１、ｃ２｝以外の（ｎ−２）個の演算結果｛ｃ３、・・・、ｃｎ｝はベクトルレジスタ５−２に格納するよう命令で指定されているものとする。この場合、演算出力レジスタ９は、２個の演算結果｛ｃ１、ｃ２｝を、ライトデータレジスタ１０−２を介してレジスタファイル１１に格納し、（ｎ−２）個の演算結果｛ｃ３、・・・、ｃｎ｝を、クロスバ入力レジスタ１−１を介してクロスバ２に出力する。
【００４７】
クロスバ２は、（ｎ−２）個の演算結果｛ｃ３、・・・、ｃｎ｝に対して、ベクトルレジスタ５−１、５−２のうちの、命令で指定されるベクトルレジスタ５−２に格納するためにルーティングを行い、（ｎ−２）個の演算結果｛ｃ３、・・・、ｃｎ｝を順次にクロスバ出力レジスタ３−２、ライトデータレジスタ４−２を介してベクトルレジスタ５−２に格納する。
【００４８】
本発明のベクトルデータ処理装置では、演算結果の若番要素（演算結果｛ｃ１、ｃ２｝）を、ルーティングのためのクロスバ２に通過させない構成にすることにより、短い時間で結果格納レジスタ（レジスタファイル１１、ベクトルレジスタ５−２）に確定させることができる。
また、本発明では、若番要素（ベクトルデータ｛ａ１、ａ２｝、｛ｂ１、ｂ２｝）用に少量のマルチポート構成レジスタファイル１１を用意し、また大容量（ベクトルデータ｛ａ３〜ａｎ｝、｛ｂ３〜ｂｎ｝）用にはポート数の少ないＲＡＭを用いて組み合わせてベクトルレジスタ５−１、５−２を構成することにより、少ないハードウェア量の増加でベクトルデータ処理装置を構成できる。
以下、これについて詳細に説明する。
【００４９】
図３は、本発明のベクトルデータ処理装置の動作を示すタイミングチャートである。
【００５０】
本実施例において、それぞれ９個のベクトルデータＡ＝｛ａ１、ａ２、ａ３、・・・、ａ９｝とＢ＝｛ｂ１、ｂ２、ｂ３、・・・、ｂ９｝に演算を行い、９個の演算結果Ｃ＝｛ｃ１、ｃ２、ｃ３、・・・、ｃ９｝を算出する場合について説明する。演算に先立ち、各ベクトルデータは、ベクトルデータＡについては、ベクトルデータａ１、ａ２がそれぞれレジスタファイル１１のアドレス“０”、“１”に格納され、ベクトルデータａ３〜ａ９である７個のベクトルデータがそれぞれベクトルレジスタ５−１のアドレス“０”〜“６”に格納され、また、ベクトルデータＢについては、ベクトルデータｂ１、ｂ２がそれぞれレジスタファイル１１のアドレス“２”、“３”に格納され、ベクトルデータｂ３〜ｂ９である７個のベクトルデータがベクトルレジスタ５−２のアドレス“０”〜“６”に格納されているものとする。また、演算結果ｃ１、ｃ２はレジスタファイル１１に格納するよう命令で指定され、演算結果ｃ３〜ｃ９はベクトルレジスタ５−２に格納するよう命令で指定されているものとする。
【００５１】
（クロックサイクル“１”において）
まず、レジスタファイル１１は、その第一リードポートに対応したアドレスレジスタＲ１にアドレス“０”をセットし、その第二リードポートに対応したアドレスレジスタＲ２にアドレス“２”をセットする。レジスタファイル１１は、それぞれ、リードアドレスＲ１、Ｒ２に応じて、自身のアドレス“０”、“２”に格納されているベクトルデータａ１、ｂ１を同時に読み出し、選択回路１２−１、１２−２に出力する。
選択回路１２−１、１２−２は、それぞれ、レジスタファイル１１の第一、第二リードポート（ベクトルデータａ１、ｂ１）を選択し、次のクロックサイクルであるクロックサイクル“２”で、ベクトルデータａ１、ｂ１を演算入力レジスタ７−１、７−２に格納する。
【００５２】
（クロックサイクル“２”において）
演算器８は、この時刻に値が確定している演算入力レジスタ７−１の出力（すなわちベクトルデータａ１）を第一オペランドとして入力し、演算入力レジスタ７−２の出力（すなわちベクトルデータｂ１）を第二オペランドとして入力して演算を開始する。上述のように、本実施例での演算器８は、演算処理を３つのステージに分割して処理するパイプライン構成を取っており、演算結果が演算出力レジスタ９に確定するまで３クロックサイクル必要としている。そのため、演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ１、ｂ１に対して演算を施し、その演算結果ｃ１を、３クロックサイクル後のクロックサイクル“５”で演算出力レジスタ９に格納する。
レジスタファイル１１は、その第一リードポートに対応したアドレスレジスタＲ１にアドレス“１”をセットし、その第二リードポートに対応したアドレスレジスタＲ２にアドレス“３”をセットする。レジスタファイル１１は、それぞれ、リードアドレスＲ１、Ｒ２に応じて、自身のアドレス“１”、“３”に格納されているベクトルデータａ２、ｂ２を同時に読み出し、選択回路１２−１、１２−２に出力する。
選択回路１２−１、１２−２は、それぞれ、レジスタファイル１１の第一、第二リードポート（ベクトルデータａ２、ｂ２）を選択し、次のクロックサイクルであるクロックサイクル“３”で、ベクトルデータａ２、ｂ２を演算入力レジスタ７−１、７−２に格納する。
更に、ベクトルレジスタ５−１は、そのリードを制御するアドレスレジスタＲＡ１にアドレス“０”をセットし、ベクトルレジスタ５−２は、そのリードを制御するアドレスレジスタＲＡ２にアドレス“０”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“０”に格納されているベクトルデータａ３、ｂ３を読み出し、次のクロックサイクルであるクロックサイクル“３”で、それぞれリードデータレジスタ６−１、６−２に出力する。
【００５３】
（クロックサイクル“３”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ２、ｂ２に対して演算を施し、その演算結果ｃ２を、３クロックサイクル後のクロックサイクル“６”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ３、ｂ３）を選択し、次のクロックサイクルであるクロックサイクル“４”で、ベクトルデータａ３、ｂ３を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“１”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“１”に格納されているベクトルデータａ４、ｂ４を読み出し、次のクロックサイクルであるクロックサイクル“４”で、リードデータレジスタ６−１、６−２に出力する。
【００５４】
（クロックサイクル“４”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ３、ｂ３に対して演算を施し、その演算結果ｃ３を、３クロックサイクル後のクロックサイクル“７”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ４、ｂ４）を選択し、次のクロックサイクルであるクロックサイクル“５”で、ベクトルデータａ４、ｂ４を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“２”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“２”に格納されているベクトルデータａ５、ｂ５を読み出し、次のクロックサイクルであるクロックサイクル“５”で、リードデータレジスタ６−１、６−２に出力する。
【００５５】
（クロックサイクル“５”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ４、ｂ４に対して演算を施し、その演算結果ｃ４を、３クロックサイクル後のクロックサイクル“８”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ５、ｂ５）を選択し、次のクロックサイクルであるクロックサイクル“６”で、ベクトルデータａ５、ｂ５を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“３”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“３”に格納されているベクトルデータａ６、ｂ６を読み出し、次のクロックサイクルであるクロックサイクル“６”で、リードデータレジスタ６−１、６−２に出力する。
演算出力レジスタ９は、自身が格納している演算結果ｃ１を、次のクロックサイクルであるクロックサイクル“６”でライトデータレジスタ１０−２に格納する。
【００５６】
（クロックサイクル“６”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ５、ｂ５に対して演算を施し、その演算結果ｃ５を、３クロックサイクル後のクロックサイクル“９”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ６、ｂ６）を選択し、次のクロックサイクルであるクロックサイクル“７”で、ベクトルデータａ６、ｂ６を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“４”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“４”に格納されているベクトルデータａ７、ｂ７を読み出し、次のクロックサイクルであるクロックサイクル“７”で、リードデータレジスタ６−１、６−２に出力する。
演算出力レジスタ９は、自身が格納している演算結果ｃ２を、次のクロックサイクルであるクロックサイクル“７”でライトデータレジスタ１０−２に格納する。
レジスタファイル１１は、その書き込みを制御するライトアドレスレジスタＷ２にアドレス“３”をセットする。レジスタファイル１１は、ライトアドレスＷ２に応じて、ライトデータレジスタ１０−２に格納されている演算結果ｃ１を、次のクロックサイクルであるクロックサイクル“７”で自身のアドレス“３”に格納する。
【００５７】
（クロックサイクル“７”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ６、ｂ６に対して演算を施し、その演算結果ｃ６を、３クロックサイクル後のクロックサイクル“１０”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ７、ｂ７）を選択し、次のクロックサイクルであるクロックサイクル“８”で、ベクトルデータａ７、ｂ７を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“５”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“５”に格納されているベクトルデータａ８、ｂ８を読み出し、次のクロックサイクルであるクロックサイクル“８”で、リードデータレジスタ６−１、６−２に出力する。
演算出力レジスタ９は、自身が格納している演算結果ｃ３を、次のクロックサイクルであるクロックサイクル“８”でクロスバ入力レジスタ１−１に格納する。
レジスタファイル１１は、自身の書き込みを制御するライトアドレスレジスタＷ２にアドレス“４”をセットする。レジスタファイル１１は、ライトアドレスＷ２に応じて、ライトデータレジスタ１０−２に格納されている演算結果ｃ２を、次のクロックサイクルであるクロックサイクル“８”で自身のアドレス“４”に格納する。
【００５８】
（クロックサイクル“８”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ７、ｂ７に対して演算を施し、その演算結果ｃ７を、３クロックサイクル後のクロックサイクル“１１”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ８、ｂ８）を選択し、次のクロックサイクルであるクロックサイクル“９”で、ベクトルデータａ８、ｂ８を演算入力レジスタ７−１、７−２に格納する。
ベクトルレジスタ５−１、５−２は、それぞれ、そのリードを制御するアドレスレジスタＲＡ１、ＲＡ２にアドレス“６”をセットする。ベクトルレジスタ５−１、５−２は、それぞれ、リードアドレスＲＡ１、ＲＡ２に応じて、自身のアドレス“６”に格納されているベクトルデータａ９、ｂ９を読み出し、次のクロックサイクルであるクロックサイクル“９”で、リードデータレジスタ６−１、６−２に出力する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ３に対してルーティングし、次のクロックサイクルであるクロックサイクル“９”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ４を、次のクロックサイクルであるクロックサイクル“９”でクロスバ入力レジスタ１−１に格納する。
【００５９】
（クロックサイクル“９”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ８、ｂ８に対して演算を施し、その演算結果ｃ８を、３クロックサイクル後のクロックサイクル“１２”で演算出力レジスタ９に格納する。
選択回路１２−１、１２−２は、それぞれ、リードデータレジスタ６−１、６−２（ベクトルデータａ９、ｂ９）を選択し、次のクロックサイクルであるクロックサイクル“１０”で、ベクトルデータａ９、ｂ９を演算入力レジスタ７−１、７−２に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ３を、次のクロックサイクルであるクロックサイクル“１０”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ４に対してルーティングし、次のクロックサイクルであるクロックサイクル“１０”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ５を、次のクロックサイクルであるクロックサイクル“１０”でクロスバ入力レジスタ１−１に格納する。
【００６０】
（クロックサイクル“１０”において）
演算器８は、それぞれ演算入力レジスタ７−１、７−２に格納されているベクトルデータａ９、ｂ９に対して演算を施し、その演算結果ｃ９を、３クロックサイクル後のクロックサイクル“１３”で演算出力レジスタ９に格納する。
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“０”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ１を、次のクロックサイクルであるクロックサイクル“１１”で自身のアドレス“０”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ４を、次のクロックサイクルであるクロックサイクル“１１”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ５に対してルーティングし、次のクロックサイクルであるクロックサイクル“１１”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ６を、次のクロックサイクルであるクロックサイクル“１１”でクロスバ入力レジスタ１−１に格納する。
【００６１】
（クロックサイクル“１１”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“１”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ２を、次のクロックサイクルであるクロックサイクル“１２”で自身のアドレス“１”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ５を、次のクロックサイクルであるクロックサイクル“１２”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ６に対してルーティングし、次のクロックサイクルであるクロックサイクル“１２”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ７を、次のクロックサイクルであるクロックサイクル“１２”でクロスバ入力レジスタ１−１に格納する。
【００６２】
（クロックサイクル“１２”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“２”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ３を、次のクロックサイクルであるクロックサイクル“１３”で自身のアドレス“２”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ６を、次のクロックサイクルであるクロックサイクル“１３”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ７に対してルーティングし、次のクロックサイクルであるクロックサイクル“１３”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ８を、次のクロックサイクルであるクロックサイクル“１３”でクロスバ入力レジスタ１−１に格納する。
【００６３】
（クロックサイクル“１３”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“３”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ４を、次のクロックサイクルであるクロックサイクル“１４”で自身のアドレス“３”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ７を、次のクロックサイクルであるクロックサイクル“１４”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ８に対してルーティングし、次のクロックサイクルであるクロックサイクル“１４”でクロスバ出力レジスタ３−２に格納する。
演算出力レジスタ９は、自身が格納している演算結果ｃ９を、次のクロックサイクルであるクロックサイクル“１４”でクロスバ入力レジスタ１−１に格納する。
【００６４】
（クロックサイクル“１４”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“４”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ５を、次のクロックサイクルであるクロックサイクル“１５”で自身のアドレス“４”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ８を、次のクロックサイクルであるクロックサイクル“１５”でライトデータレジスタ４−２に格納する。
クロスバ２は、クロスバ入力レジスタ１−１に格納されている演算結果ｃ９に対してルーティングし、次のクロックサイクルであるクロックサイクル“１５”でクロスバ出力レジスタ３−２に格納する。
【００６５】
（クロックサイクル“１５”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“５”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ６を、次のクロックサイクルであるクロックサイクル“１６”で自身のアドレス“５”に格納する。
クロスバ出力レジスタ３−２は、自身が格納している演算結果ｃ９を、次のクロックサイクルであるクロックサイクル“１６”でライトデータレジスタ４−２に格納する。
【００６６】
（クロックサイクル“１６”において）
ベクトルレジスタ５−２は、その書き込みを制御するアドレスレジスタＷＡ２にアドレス“６”をセットする。ベクトルレジスタ５−２は、ライトアドレスＷＡ２に応じて、ライトデータレジスタ４−２に格納されている演算結果ｃ７を、次のクロックサイクルであるクロックサイクル“１７”で自身のアドレス“６”に格納する。
【００６７】
以上の説明により、本発明のベクトルデータ処理装置は、次のような効果を奏する。
【００６８】
まず、第１の効果について説明する。本発明のベクトルデータ処理装置によれば、演算結果の若番要素（演算結果｛ｃ１、ｃ２｝）を、ルーティングのためのクロスバ２に通過させない構成にしている。このため、短い時間で結果格納レジスタ（レジスタファイル１１、ベクトルレジスタ５−２）に確定させることができる。
【００６９】
次に、第２の効果について説明する。本発明によれば、若番要素（ベクトルデータ｛ａ１、ａ２｝、｛ｂ１、ｂ２｝）用に少量のマルチポート構成レジスタファイル１１を用意し、また大容量（ベクトルデータ｛ａ３〜ａ９｝、｛ｂ３〜ｂ９｝）用にはポート数の少ないＲＡＭを用いて組み合わせてベクトルレジスタ５−１、５−２を構成している。このため、少ないハードウェア量の増加でベクトルデータ処理装置を構成できる。
【００７０】
このように、本発明のベクトルデータ処理装置は、大量のベクトルデータに関しては現状の処理を行い、少量のベクトルデータに関してはより高速に処理することができる。
【図面の簡単な説明】
【００７１】
【図１】図１は、従来のベクトルデータ処理装置の構成を示している。
【図２】図２は、本発明のベクトルデータ処理装置の構成を示している。
【図３】図３は、本発明のベクトルデータ処理装置の動作を示すタイミングチャートである。
【符号の説明】
【００７２】
１−１、１−２    クロスバ入力レジスタ、
２    クロスバ、
３−１、３−２    クロスバ出力レジスタ、
４−１、４−２    ライトデータレジスタ、
５−１、５−２    ベクトルレジスタ、
６−１、６−２    リードデータレジスタ、
７−１、７−２    演算入力レジスタ、
８    演算器、
９    演算出力レジスタ、
１０−１、１０−２    ライトデータレジスタ（若番用ライトデータレジスタ）、
１１    レジスタファイル、
１２−１、１２−２    選択回路、
ＲＡ１、ＲＡ２    リードアドレス、
ＷＡ１、ＷＡ２    ライトアドレス、
Ｒ１、Ｒ２    リードアドレス、
Ｗ１、Ｗ２    ライトアドレス、
１０１−１、１０１−２    クロスバ入力レジスタ、
１０２    クロスバ、
１０３−１、１０３−２    クロスバ出力レジスタ、
１０４−１、１０４−２    ライトデータレジスタ、
１０５−１、１０５−２    ベクトルレジスタ、
１０６−１、１０６−２    リードデータレジスタ、
１０７−１、１０７−２    演算入力レジスタ、
１０８    演算器、
１０９    演算出力レジスタ、
【図１】
2008204028.tif 000003
【図２】
2008204028.tif 000004
【図３】
2008204028.tif 000005