(57)【特許請求の範囲】
【請求項１】
配列された複数の配列データから構成されるベクトルデータを格納するレジスタと、
予め定められた一定時間毎に、前記レジスタに格納された前記各配列データを順次読み出す読出制御手段と、
前記読出制御手段が読み出した各前記配列データを、前記予め定められた一定時間毎に当該各配列データの１データ長分シフトさせ、予め設定されたデータ長分のシフトを行うシフト手段と、
前記予め設定された一定時間毎に前記シフト手段から出力された前記各配列データと前記読出制御手段が読み出した前記各配列データとの演算を順次行う演算手段と、
を備え、前記読出制御手段により読み出された前記配列データが演算手段に入力されるとき、同じ前記配列データが前記シフト手段に入力されるベクトル演算処理装置であって、
前記シフト手段は、
連接された複数のバッファと、
先頭に配された前記バッファを除く各前記バッファの前段に設けられ、前記読出制御手段が読み出した前記各配列データと直前の前記バッファから出力された前記各配列データとの、後段に配される前記バッファへの入力選択を行う選択手段と、
を備えたことを特徴とするベクトル演算処理装置。
【請求項２】
請求項１に記載のベクトル演算処理装置において、
前記シフト手段が、
前記予め設定されたデータ長に基づいて前記各選択手段の入力選択を制御する選択制御手段を更に備え、
前記各バッファが、前記予め定められた一定時間毎に前記各配列データを当該配列データの１データ長分のシフトを行うことを特徴とするベクトル演算処理装置。
【請求項３】
請求項１または２に記載のベクトル演算処理装置において、
前記演算手段が、前記シフト手段から出力された前記各配列データが入力されたときに、演算結果を有効にすることを特徴とするベクトル演算処理装置。
【請求項４】
請求項１乃至３の何れか一項に記載のベクトル演算処理装置を用いてベクトル演算処理を行うベクトル演算方法であって、
前記レジスタに格納された各前記配列データを予め定められた一定時間毎に順次読み出す読出制御工程と、
前記順次読み出した各配列データを、前記各バッファを用いて、前記予め定められた一定時間毎に当該各配列データの１データ長シフトさせ、予め設定されたデータ長分のシフト処理を行うシフト処理工程と、
前記予め設定された一定時間毎に前記シフト処理された各配列データと前記順次読み出した各配列データとの演算処理を順次行う演算処理工程と、備え、
前記シフト処理工程においては、
先頭に配された前記バッファを除く各前記バッファに対して前記読み出した各配列データと直前の前記バッファから出力された前記各配列データとの、後段に配される前記バッファへの入力選択制御を行う入力選択制御工程を含むことを特徴とするベクトル演算処理方法。
【請求項５】
請求項４に記載のベクトル演算処理方法において、
前記演算処理工程においては、前記シフト処理された各配列データが入力されたときに演算結果を有効にすることを特徴とするベクトル演算処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、配列データを演算するベクトル演算処理装置の技術分野に属し、より詳細には、隣接した配列データの演算処理の技術分野に属する。
【０００２】
【従来の技術】
近年、コンピュータ等によって演算処理を高速に実行するために、１命令で多数のオペランドを処理する、すなわち、レジスタを複数に分割して個々に独立した値を格納し、1クロックで複数の演算を実行するベクトル演算を行うベクトル演算処理装置が用いられ、差分法などで見られる隣接した配列要素同士、または一定間隔の配列要素同士の演算を高速に処理するようになっている。
【０００３】
従来、このようなベクトル演算処理装置では、例えば、Ｘ（ｉ）=Ａ（ｉ）±Ａ(ｉ−ｍ)のような演算をベクトル処理する場合、右辺のＡ（ｉ)とＡ(ｉ−ｍ)のそれぞれについてメモリなどの主記憶装置から２つのベクトルレジスタに各要素データ（配列データ）から構成されるベクトルデータを読み込み、演算を実行する第一の方法と、１個のベクトルレジスタに配列Ａの(ｉ−ｍ)個目の要素から読出可能な要素までの各配列データからなるベクトルデータをメモリなどの主記憶装置から読み出し、このベクトルレジスタのベクトルデータをm個ずらして、他のベクトルレジスタにデータを移送してから、演算を実行する第二の方法が知られている。
【０００４】
Ｘ(ｉ)=Ａ(ｉ)＋Ａ(ｉ−１)      （ｉ＝２〜２５６）      ・・・式（１）
例えば、上記式（１）の演算を行う場合、第１の方法としては、第１のベクトルレジスタにA(２)〜A(２５６)のベクトルデータの配列データを、第２のベクトルレジスタにA(１)〜A(２５５)のベクトルデータの配列データをそれぞれ読み出すとともに、ベクトル加算処理を実行し、当該結果をＸ(２)〜Ｘ(２５６)に書き込むようになっている。
【０００５】
また、第２の方法では、第１のベクトルレジスタにＡ(１)〜Ａ(２５６)の２５６個のベクトルデータの配列データをメモリから読み出すとともに、当該第１のベクトルレジスタから第２のベクトルレジスタにＡ(１)〜Ａ(２５６)の２５５個の配列データを移送し、第１のベクトルレジスタのＡ(１)〜Ａ(２５５)と第２のベクトルレジスタ１１のＡ(２)〜Ａ(２５６)の２５５個の各配列データを対象にベクトル加算を実行して、当該結果をＸ(２)〜Ｘ(２５６)に書き込むようになっている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述のようなベクトル演算処理方法にあっては、第１の方法では同じ配列データをメモリから２度読み出すため、または、第２の方法ではベクトルレジスタ間の移送を必要とするため、何れの方法も２個のベクトルレジスタを使用することとなり、ベクトル演算処理の性能、および演算処理の効率面での低下が生じていた。
【０００７】
すなわち、第１の方法では、Ａ(２)〜Ａ(２５６)のデータは第１および第２ベクトルレジスタの両方のレジスタに読み出されており、処理時間の実行コストの高いメモリからのデータ読み出し処理を２度実行する必要があるため、高速に演算処理を行うことができないという問題を有していた。
【０００８】
また、第二の方法であっても、コストの高いメモリからのデータ読み出し処理は第一の方法に比べ、２度から１度に削減できているが、ベクトルレジスタ間の配列データシフト移送命令が必要であるため、データ処理効率が悪いという問題を有していた。
【０００９】
本発明は、上記の各問題点に鑑みて為されたもので、その課題は、ベクトル演算処理に使用するベクトルレジスタを１個で済まし、かつ、従来のベクトル演算処理装置に比べて演算処理の高速化、効率化を実現するベクトル演算処理装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記の課題を解決するために、請求項１に記載の発明は、配列された複数の配列データから構成されるベクトルデータを格納するレジスタと、予め定められた一定時間毎に、前記レジスタに格納された前記各配列データを順次読み出す読出制御手段と、前記読出制御手段が読み出した各前記配列データを、前記予め定められた一定時間毎に当該各配列データの１データ長分シフトさせ、予め設定されたデータ長分のシフトを行うシフト手段と、前記予め設定された一定時間毎に前記シフト手段から出力された前記各配列データと前記読出制御手段が読み出した前記各配列データとの演算を順次行う演算手段と、を備え、前記読出制御手段により読み出された前記配列データが演算手段に入力されるとき、同じ前記配列データが前記シフト手段に入力されるベクトル演算処理装置であって、前記シフト手段は、連接された複数のバッファと、先頭に配された前記バッファを除く各前記バッファの前段に設けられ、前記読出制御手段が読み出した前記各配列データと直前の前記バッファから出力された前記各配列データとの、後段に配される前記バッファへの入力選択を行う選択手段と、を備えた構成を有している。
【００１１】
この構成により、請求項１に記載の発明では、レジスタから読み出した配列データを、予め定められた一定時間毎に当該各配列データの１データ長ずつシフトさせ、予め設定されたデータ長分のシフトされた配列データと、予め定められた一定時間毎に順次読み出された配列データとの演算を行うことができるので、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。また、配列データを、予め設定されたデータ長分のシフトさせる場合に、複数のバッファと、先頭に配されたバッファを除く各バッファの前段に設けられた選択手段とによって実現することができるので、容易にかつ簡便に実現することができるとともに、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。
【００１２】
また、請求項２に記載の発明は、請求項１に記載のベクトル演算処理装置において、前記シフト手段が、前記予め設定されたデータ長に基づいて前記各選択手段の入力選択を制御する選択制御手段を更に備え、前記各バッファが、前記予め定められた一定時間毎に前記各配列データを当該配列データの１データ長分のシフトを行う構成を有している。
【００１４】
また、請求項３に記載の発明は、請求項１または２に記載のベクトル演算処理装置において、前記演算手段が、前記シフト手段から出力された前記各配列データが入力されたときに、演算結果を有効にする構成を有している。
【００１５】
この構成により、請求項３に記載の発明では、シフト手段からの出力されたデータが入力されたときに当該演算手段の演算結果を有効にすることにより、無効なデータを排除し、的確に演算結果を取得することができる。
【００１６】
また、請求項４に記載の発明は、請求項１乃至３の何れか一項に記載のベクトル演算処理装置を用いてベクトル演算処理を行うベクトル演算方法であって、前記レジスタに格納された各前記配列データを予め定められた一定時間毎に順次読み出す読出制御工程と、前記順次読み出した各配列データを、前記各バッファを用いて、前記予め定められた一定時間毎に当該各配列データの１データ長シフトさせ、予め設定されたデータ長分のシフト処理を行うシフト処理工程と、前記予め設定された一定時間毎に前記シフト処理された各配列データと前記順次読み出した各配列データとの演算処理を順次行う演算処理工程と、備え、前記シフト処理工程においては、先頭に配された前記バッファを除く各前記バッファに対して前記読み出した各配列データと直前の前記バッファから出力された前記各配列データとの、後段に配される前記バッファへの入力選択制御を行う入力選択制御工程を含む構成を有している。
【００１７】
この構成により、請求項４に記載の発明では、レジスタから読み出した配列データを、予め定められた一定時間毎に当該各配列データの１データ長ずつシフトさせ、予め設定された配列データ長分のシフトされた各配列データと、予め定められた一定時間毎に順次読み出された各配列データとの演算を行うことができるので、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。また、各配列データを、予め設定されたデータ長分のシフトさせる場合に、複数の連接されたバッファに対して読み出した配列データと直前のバッファから出力された配列データの入力選択制御を行うことによって実現することができるので、容易にかつ簡便に実現することができるとともに、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。
【００２０】
また、請求項５に記載の発明は、請求項４に記載のベクトル演算処理方法において、前記演算処理工程においては、前記シフト処理された各配列データが入力されたときに演算結果を有効にする構成を有している。
【００２１】
この構成により、請求項５に記載の発明では、シフト処理された配列データが入力されたときに当該演算結果を有効にすることにより、無効なデータを排除し、的確に演算結果を取得することができる。
【００２８】
【発明の実施の形態】
次に、本発明に好適な実施の形態について、図面に基づいて説明する。
【００２９】
なお、以下に説明する実施の形態は、ベクトルプロセッサに対して本発明を適用した場合の実施形態である。
【００３０】
まず、図１を用いてベクトルプロセッサの基本構成について説明する。
【００３１】
なお、図１は、ベクトルプロセッサの基本構成を示すブロック図である。
【００３２】
ベクトルプロセッサ１０は、図１に示すように、内部を複数に分割して個々に独立した値を格納する複数のベクトルレジスタ１１と、図示しない制御部の指示に基づいて加算、減算、乗算および除算などの各演算を行う複数の演算器１２と、演算器１２から出力されたベクトルデータの出力制御および外部から入力されたベクトルデータの入力制御を行う第１クロスバースイッチ１３と、各レジスタから出力されたベクトルデータの演算器１２への入力制御を行う第２クロスバースイッチ１４とを備えている。
【００３３】
なお、ベクトルレジスタ１１は、本発明のレジスタを、演算器１２は、本発明に係る演算手段を構成するとともに、第２クロスバースイッチ１４は、本発明に係る読出制御手段を構成する。
【００３４】
ベクトルレジスタ１１は、当該ベクトルプロセッサ１０内に複数のベクトルレジスタ１１−＃１〜１１−＃ｎが設けられるようになっており、各ベクトルレジスタ１１は、内部に複数のデータ格納領域１５を有し、個々に独立したベクトルデータを構成するデータを複数格納するようになっている。
【００３５】
例えば、１つのベクトルレジスタ１１は、最大n個(一般に６４、１２８、２５６個など２のべき乗個、nは最大ベクトル長と呼ぶ)のベクトルデータを格納するようになっている。
【００３６】
なお、以下において、各個々の独立し、ベクトルデータを構成するデータをベクトル配列データといい、これらの１つのベクトルレジスタ１１に格納されるベクトル配列データ群を単にベクトルデータという。
【００３７】
また、各ベクトルレジスタ１１には、外部から入力されたベクトルデータを格納する図示しないレジスタから出力された各ベクトル配列データまたは第１クロスバースイッチ１３を介して各演算器１２から出力された各ベクトル配列データが入力されるようになっており、この各ベクトルレジスタ１１は、入力された各ベクトル配列データを、第２クロスバースイッチ１４を介して各演算器１２に出力するようになっている。
【００３８】
演算器１２は、当該ベクトルプロセッサ１０内に複数設けられており、各演算器１２は、２系統の入力を有し、図示しない制御部の指示に基づいて、第２クロスバースイッチ１４を介して各系統から順次入力された各ベクトル配列データを加算、減算、乗算、除算および論理演算などの各ベクトル演算を行うようになっている。
【００３９】
第１クロスバースイッチ１３は、一般に、全 HYPERLINK "http://yougo.ascii24.com/gh/06/000676.html" ノード（ベクトルレジスタ１１）がデータを受信しなければならない命令を示すブロードキャスト、複数 HYPERLINK "http://yougo.ascii24.com/gh/06/000676.html" ノード（ベクトルレジスタ１１）のみデータを受信する命令を示すマルチキャストなど多重出力選択を行うようになっており、具体的には、図示しない制御部の指示に基づいて各演算器１２から出力されたベクトルデータの出力制御および外部から入力されたベクトルデータのベクトルレジスタ１１への入力制御を行うようになっている。
【００４０】
第２クロスバースイッチ１４は、第１クロスバースイッチ１３と同様に、一般に、ブロードキャスト、マルチキャストなど多重出力選択を行うようになっており、具体的には、図示しない制御部の指示に基づいて各ベクトルレジスタ１１から出力されたベクトル配列データを各演算器１２の何れかの入力系統（以下、入力ポートという）に順次出力する出力制御を行うようになっている。
【００４１】
具体的には、第２クロスバースイッチ１４は、各ベクトルレジスタ１１から何れかの演算器１２の入力ポートに対してデータ供給するパスを設定するようになっている。
【００４２】
このようなベクトルプロセッサ１０では、例えば、１クロックなど、予め定められた一定時間毎に、各ベクトルレジスタ１１から順次ベクトル配列データを読み出すとともに、演算器１２に出力させ、当該予め定められた時間毎に各演算器１２によって各ベクトルデータ毎の各演算処理を行うようになっている。
【００４３】
次に、図２〜図６を用いて本発明に係るベクトルプロセッサ１０について説明する。
【００４４】
まず、図２〜図４を用いて本実施形態におけるベクトルプロセッサ１０の構成について説明する。
【００４５】
なお、図２はベクトルプロセッサ１０の一部の構成を示す図であり、図３は、シフトバッファの内部構成を示す図である。
【００４６】
また、図４（ａ）は、要素シフトレジスタ１０３に保持される制御データの構成を示す図であり、図４（ｂ）は、当該ベクトルプロセッサに入力される命令フォーマットを示す一例である。
【００４７】
ベクトルプロセッサ１０は、上述したベクトルプロセッサ１０において、図２に示すように、第２クロスバースイッチ１４と各演算器１２との間であって、当該演算器１２の入力ポートの一方の入力ポートに、各ベクトルデータの演算器１２への供給タイミングを制御するシフトバッファ１００を備えるようになっている。
【００４８】
このシフトバッファ１００は、図３に示すように、予め設定された時間（１クロック）毎に各ベクトルデータを保持する複数の要素シフトバッファ１０１と、各要素シフトバッファ１０１の前段に設けられ、第２クロスバースイッチ１４からの出力と前段の要素シフトバッファ１０１からの出力との要素シフトバッファ１０１への入力選択を行う複数のセレクタ１０２と、図示しない制御部の指示に基づいて入力されたベクトルデータの要素シフト量を制御する要素シフトレジスタ１０３と、を有している。
【００４９】
なお、シフトバッファ１００は、本発明に係るシフト手段を構成し、要素シフトバッファ１０１は、本発明に係るバッファを構成する。
【００５０】
また、セレクタ１０２は、本発明に係る選択手段および入力制御手段を構成し、要素シフトレジスタ１０３は、本発明に係る選択制御手段および入力選択制御手段を構成する。
【００５１】
本実施形態では、先頭の要素シフトバッファ１０１にもセレクタ１０２＃−１を設けてあるが、特に、当該先頭の要素シフトバッファ１０１では、入力選択を行う必要がないので、当該セレクタ１０２＃−１を設けなくてもよい。
【００５２】
また、最終段にあるセレクタ１０２＃−４は、シフト処理しない場合に、要素シフトレジスタ１０３の制御に基づいて第２クロスバースイッチ１４から出力されたベクトル配列データをそのまま出力する際に用いられるようになっている。
【００５３】
さらに、本実施形態では、図３に示すように、シフトバッファ１００が３段、すなわち、シフトバッファ１００内に３つの要素シフトバッファ１０１およびセレクタ１０２を備えるようになっているが、特に３つに限定する必要はない。
【００５４】
要素シフトレジスタ１０３は、図示しない制御部の指示に基づいて要素シフト量（ｍ）を保持するようになっており、この要素シフト量（ｍ）に基づいて各セレクタ１０２＃−１〜１０２＃−４を制御するようになっている。
【００５５】
例えば、要素シフトレジスタ１０３は、図４（ａ）に示すように、制御データ１１０を保持するようになっており、この制御データ１１０は、演算器１２への供給タイミングの制御を行うことを示すフラグ１１１と要素シフト量１１２とから構成されるようになっている。
【００５６】
なお、本実施形態では、図示しない制御部に、図４（ｂ）に示すような命令フォーマット１２０が入力されるようになっており、この各命令に基づいて当該制御部は要素シフトレジスタ１０３、第１クロスバースイッチ１３および第２クロスバースイッチ１４を制御するようになっている。
【００５７】
また、例えば、この命令フォーマット１２０は、オペレーションコード１２１、演算結果出力先ベクトルレジスタ番号１２２、１つの入力ベクトルレジスタ番号１２３および要素シフト量１２４から構成されるようになっている。
【００５８】
要素シフトレジスタ１０３は、このような構成を有することによって、第２クロスバースイッチ１４から出力された各ベクトル配列データがセレクタ１０２から各シフトバッファ１００に取り込まれ、各セレクタ１０２に前段の要素シフトバッファ１０１の出力を選択させるようになっている。
【００５９】
このように本実施形態のシフトバッファ１００では、予め定められた時間長毎に１データ長毎シフトさせるとともに、命令フォーマットで指示されたデータ長分シフトして演算器１２に出力させることができるようになっている。
【００６０】
次に、図５を用いて本実施形態におけるシフト処理について説明する。
【００６１】
なお、図５は、要素シフト量「３」の場合におけるベクトルレジスタ１１からのデータ読み出しと演算器１２への供給タイミングを示したタイムチャートである。
【００６２】
また、ベクトル配列データＡの要素Ａ(１)〜Ａ(２５６)がベクトルレジスタ１１＃−１に格納され、演算器１２、第２クロスバースイッチ１４およびシフトバッファ１００は図示しない制御部の指示（すなわち、命令フォーマット１２０）に基づいて行われるものとし、１クロック毎に、各部が動作するようになっている。
【００６３】
本実施形態では、第２クロスバースイッチ１４は、１クロック毎に、ベクトル配列データＡ（ｉ）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、後述するように設定したパスを介して当該読み出したベクトル配列データＡ（ｉ）を演算器１２およびシフトバッファ１００に出力するようになっている。
【００６４】
また、シフトバッファ１００は、ベクトル配列データＡ（ｉ）が当該シフトバッファ１００に入力されると、各要素シフトバッファ１０１において、ベクトル配列データＡ（ｉ）を予め設定された時間、すなわち、１クロック分保持し、保持した後にベクトル配列データＡ（ｉ）を後段の他の要素シフトバッファ１０１または演算器１２に出力するようになっており、命令フォーマット１２０によって指示された要素シフト量分シフトさせ、演算器１２に出力するようになっている。
【００６５】
例えば、要素シフト量「３」の場合であって、式（２）に示す演算を行う場合には、演算器１２、第２クロスバースイッチ１４およびシフトバッファ１００は、図５に示すように、１クロック毎に以下の動作を行うようになっている。
【００６６】
Ｘ(ｉ)=Ａ(ｉ)＋Ａ(ｉ−３)      （ｉ＝４〜２５６）      ・・・式（２）
まず、クロック１において、第２クロスバースイッチ１４は、ベクトル配列データＡ（１）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、当該読み出したベクトル配列データＡ（１）を演算器１２およびシフトバッファ１００に出力する。
【００６７】
次いで、クロック２において、第１要素シフトバッファ１０１＃−１は、ベクトル配列データＡ（１）を１クロック分保持し、ベクトル配列データＡ（１）を第２セレクタ１０２＃−２を介して第２要素シフトバッファ１０１＃−２に出力する。
【００６８】
一方、第２クロスバースイッチ１４は、次のベクトル配列データＡ（２）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、当該読み出したベクトル配列データＡ（２）を演算器１２およびシフトバッファ１００に出力する。
【００６９】
次いで、クロック３において、第１要素シフトバッファ１０１＃−１および第２要素シフトバッファ１０１＃−２は、ベクトル配列データＡ（１）、Ａ（２）を１クロック分保持し、ベクトル配列データＡ（１）を、第３セレクタ１０２＃−３を介して第３要素シフトバッファ１０１＃−３に出力するとともに、次のベクトルデータをＡ（２）第２セレクタ１０２＃−２を介して第２要素シフトバッファ１０１に出力する。
【００７０】
一方、第２クロスバースイッチ１４は、さらに次のベクトル配列データＡ（３）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、当該読み出したベクトル配列データＡ（３）を演算器１２およびシフトバッファ１００に出力する。
【００７１】
次いで、クロック４において、第１要素シフトバッファ１０１＃−１、第２要素シフトバッファ１０１＃−２および第３要素シフトバッファ１０１＃−３は、ベクトル配列データＡ（１）、Ａ（２）、Ａ（３）を１クロック分保持し、ベクトル配列データＡ（１）を演算器１２に、ベクトル配列データＡ（２）を第３セレクタ１０２＃−３を介して第３要素シフトバッファ１０１＃−３に、ベクトル配列データＡ（３）を第２セレクタ１０２＃−２を介して第２要素シフトバッファ１０１＃−２に出力する。
【００７２】
一方、第２クロスバースイッチ１４は、さらに次のベクトルデータ（４）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、当該読み出したベクトル配列データＡ（４）を演算器１２およびシフトバッファ１００に出力する。
【００７３】
次いで、クロック５について、第１要素シフトバッファ１０１＃−１、第２要素シフトバッファ１０１＃−２および第３要素シフトバッファ１０１＃−３は、ベクトル配列データＡ（２）、Ａ（３）、Ａ（４）を１クロック分保持し、ベクトル配列データＡ（２）を演算器１２に、ベクトル配列データＡ（３）を第３セレクタ１０２＃−３を介して第３要素シフトバッファ１０１＃−３に、次のベクトル配列データＡ（４）を第２セレクタ１０２＃−２を介して第２要素シフトバッファ１０１＃−２に出力する。
【００７４】
一方、第２クロスバースイッチ１４は、さらに次のベクトルデータ（５）をベクトルレジスタ１１から当該第２クロスバースイッチ１４に読み出し、当該読み出したベクトル配列データＡ（５）を演算器１２およびシフトバッファ１００に出力するとともに、演算器１２は、１つ前のクロック４において第２クロスバースイッチ１４から出力されたベクトルデータ（４）とシフトバッファ１００から出力されたベクトルデータ（１）とを演算処理、すなわち、加算処理し、第１クロスバースイッチ１３を介して当該演算結果を指定されたベクトルレジスタ１１に格納する。
【００７５】
以後、１クロック毎に、第２クロスバースイッチ１４は、ベクトルレジスタ１１からベクトル配列データＡ（ｉ)を順次読み出し、各要素シフトバッファ１０１は、当該ベクトル配列データＡ（ｉ）を１クロック分保持し、当該保持したベクトルを次段の要素シフトバッファ１０１または演算器１２に出力するようになっている。
【００７６】
なお、演算器１２は、最初のベクトル配列データＡ(１)が入力されるタイミングから演算を有効にするよう有効信号（以下、ベクトル演算有効信号という）に基づいて制御するになっており、例えば、このベクトル演算有効信号は図示しない制御部から入力され、当該演算器１２にベクトル有効信号が入力された場合に当該演算結果を命令で指定されたベクトルレジスタ１１に出力するようになっている。
【００７７】
このように、本実施形態では、１クロック毎にシフト処理を行うとともに、演算器１２においてベクトルデータ毎の演算処理を行うようになっている。
【００７８】
次に、図６を用いて本実施形態におけるベクトルプロセッサ１０のベクトル演算処理動作について説明する。
【００７９】
なお、各部は、図示しない制御部の指示に基づいて動作制御されているものとする。
【００８０】
まず、制御部の指示に基づいてベクトルデータをベクトルデータ読出命令によってベクトルレジスタ１１に読み出す（ステップＳ１１）。
【００８１】
次いで、制御部によってシフトバッファ１００に要素シフト演算を指示する命令（例えば、要素シフト量は「３」を有する制御データ）が入力され、要素シフトレジスタ１０３は、内部に要素シフト量と要素シフト有効フラグを設定し、各セレクタ１０２の入力選択を制御する（ステップＳ１２）。
【００８２】
具体的には、要素シフトレジスタ１０３は、設定された要素シフト量と要素シフト有効フラグに基づいて、第２クロスバースイッチ１４からベクトルデータを取り込むか、または、先頭の要素シフトバッファ１０１を除き、各セレクタ１０２の前段の要素シフトバッファ１０１から出力されたデータを取り込むかの何れかの入力を行うかを、各セレクタ１０２毎に設定する。
【００８３】
次いで、第２クロスバースイッチ１４は、ベクトルレジスタ１１から演算器１２までの２つの入力ポートに対してデータを供給するパスを設定する（ステップＳ１３）。
【００８４】
このとき、２つのポートの何れかのポートには、上記要素シフト演算を行うシフトバッファ１００が設けられているポートを選択する。
【００８５】
次いで、第２クロスバースイッチ１４およびシフトバッファ１００によって指示された要素シフト量に基づいて上述した各ベクトルデータのシフト処理を行う（ステップＳ１４）。
【００８６】
具体的には、第２クロスバースイッチ１４は、１クロック毎に順次ベクトル配列データを読み出し、シフトバッファ１００および演算器１２に順次読み出したベクトル配列データを出力するとともに、シフト要素シフトレジスタ１０３は、１クロック毎に順次入力されたベクトル配列データを、１クロック毎に１データ長分シフトさせ、予め設定されたデータ長分のシフトを行い、１クロック毎に演算器１２にベクトル配列データを順次出力する。
【００８７】
最後に、演算器１２は、演算器１２要素シフトレジスタ１０３および第２クロスバースイッチ１４によって順次読み出されたベクトルデータを１クロック毎に制御部の指示に基づいて順次演算し、第１クロスバースイッチ１３を介して外部またはベクトルレジスタ１１に出力する（ステップＳ１５）。
【００８８】
なお、シフト処理（ステップＳ１４）およびベクトル演算処理（ステップＳ１５）は、上述のようにベクトル配列データ毎に順次行われるようになっている。
【００８９】
以上により本実施形態によれば、シフトバッファ１００において、ベクトルレジスタ１１から読み出したベクトル配列データを、１クロック毎に当該ベクトル配列データの１データ長ずつシフトさせ、予め設定されたデータ長分のシフトされたベクトル配列データと、１クロック毎に順次読み出されたベクトル配列データとのベクトル演算を順次行うことができるので、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。
【００９０】
また、ベクトル配列データを、予め設定されたデータ長分シフトさせる場合に、ベクトルレジスタ１１から順次読み出したベクトル配列データを、複数の要素シフトバッファ１０１と、先頭に配された要素シフトバッファ１０１を除く各要素シフトバッファ１０１の前段に設けられ、第２クロスバースイッチ１４から出力されたデータと直前の要素シフトバッファ１０１から出力されたデータの入力選択を行うセレクタ１０２とによって構成することができるので、容易にかつ簡便にシフトバッファ１００を構成することができるとともに、２つのレジスタを使用することなく、かつ、ベクトル配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。
【００９１】
また、シフトバッファ１００からの出力されたベクトル配列データが入力されたときに演算器１２の演算結果を有効にすることにより、無効なデータを排除し、的確に演算結果を取得することができる。
【００９２】
なお、本実施形態では、上述のベクトルプロセッサ１０によってベクトル演算処理およびシフト処理を行うようになっているが、ベクトルプロセッサ１０にベクトルレジスタ１１および要素シフトバッファ１０１の他に、コンピュータおよび記録媒体を備え、この記録媒体に上述のシフト処理およびベクトル演算処理を行うプログラムを格納し、このコンピュータによって当該シフト処理およびベクトル演算処理を読み込むことによって上述と同様の当該シフト処理およびベクトル演算処理を行うようにしてもよい。
【００９３】
【発明の効果】
以上説明したように、本発明によれば、レジスタから読み出した配列データを、予め定められた一定時間毎に当該配列データの１データ長ずつシフトさせ、予め設定されたデータ長分のシフトされた配列データと、予め定められた一定時間毎に順次読み出された配列データとの演算を行うことができるので、２つのレジスタを使用することなく、かつ、配列データを１回読み出すだけで、ベクトル演算を行うことができ、ベクトル演算を行う場合の演算処理の高速化および効率化を行うことができる。
【図面の簡単な説明】
【図１】本発明に係るベクトルプロセッサの一実施形態のベクトルプロセッサの基本構成を示すブロック図である。
【図２】本発明に係るベクトルプロセッサの一実施形態の一部の構成を示す図である。
【図３】本発明に係るベクトルプロセッサの一実施形態におけるシフトバッファの内部構成を示す図である。
【図４】（ａ）は、ベクトルプロセッサの一実施形態における要素シフトレジスタに保持される制御データの構成を示す図であり、（ｂ）は、図示しない制御部に入力される命令フォーマットを示す一例である。
【図５】要素シフト量「３」の場合におけるベクトルレジスタからのデータ読み出しと演算器１２への供給タイミングを示したタイムチャートである。
【図６】ベクトルプロセッサの一実施形態におけるベクトル演算処理の動作を示すフローチャートである。
【符号の説明】
１０  …  ベクトルプロセッサ
１１  …  ベクトルレジスタ（レジスタ）
１２  …  演算器（演算手段）
１３  …  第１クロスバースイッチ１４
１４  …  第２クロスバースイッチ（読出制御手段）
１００  …  シフトバッファ（シフト手段）
１０１  …  要素シフトバッファ（バッファ）
１０２  …  セレクタ（選択手段、入力制御手段）
１０３  …  要素シフトレジスタ（選択制御手段、入力選択制御手段）
【図１】
0003982324.tif 000002
【図２】
0003982324.tif 000003
【図３】
0003982324.tif 000004
【図４】
0003982324.tif 000005
【図５】
0003982324.tif 000006
【図６】
0003982324.tif 000007