(57)【特許請求の範囲】
【請求項１】
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備えるベクトル処理装置であって、
前記スカラ処理部は、
前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行するものであって、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部と、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部と、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部と、
を備え、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ことを特徴とするベクトル処理装置。
【請求項２】
前記バッファ制御部は、
前記第１の命令パケットが示す命令がベクトルロード命令、ベクトルストア命令、又は、スカラロード命令である場合、前記第１の命令パケットを出力する
ことを特徴とする請求項１に記載のベクトル処理装置。
【請求項３】
前記バッファ制御部は、前記命令パケットバッファ部が前記第１の命令パケットを格納してからの経過時間を計測し、当該経過時間が所定の値を超えた場合、前記第１の命令パケットを出力する
ことを特徴とする請求項１又は２に記載のベクトル処理装置。
【請求項４】
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行するものであって、当該スカラ処理部が、命令パケットバッファ部と、バッファ制御部と、結合処理部とを備える、ベクトル処理装置が実行するベクトル処理方法であって、
当該ベクトル処理方法は、
前記命令パケットバッファ部が、前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ工程と、
前記バッファ制御部が、前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御工程と、
前記結合処理部が、前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理工程と、
を備え、
前記バッファ制御工程において、前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ことを特徴とするベクトル処理方法。
【請求項５】
コンピュータを、
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行する、ベクトル処理装置として機能させるプログラムであって、
前記プログラムは、前記コンピュータを、
前記スカラ処理部において、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部、
として機能させ、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令パケットを制御することにより処理性能を向上させるのに好適なベクトル処理装置、ベクトル処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
プロセッサによるキャッシュへの書き込み制御については、メモリにデータを書き込むのと同時にキャッシュにも書き込みを行うライトスルー制御と、キャッシュにのみ書き込むライトバック制御とが知られている。ライトスルー制御は、ライトバック制御よりも制御が簡単である反面、ストア処理に伴うメモリへのアクセスの頻度が多く、また、ストア処理にかかる時間が大きい。したがって、ライトスルー制御は、プロセッサの性能向上の制約となるという短所がある。
【０００３】
図１２に示すような、スカラプロセッシング部９１とベクトルプロセッシング部９２とを備えるベクトル処理装置９において、スカラプロセッシング部９１にはライトスルー制御が採用される。例えば、レジスタからメモリ９５へデータの書き込みを実行する際、Ｌ１キャッシュ９１ａに当該データを書き込むのと同時にメモリ９５へとデータを書き込む処理が行われる。
【０００４】
仮に、スカラプロセッシング部９１において、データをＬ１キャッシュ９１ａにのみ書き込むライトバック制御を採用したとする。この場合、スカラプロセッシング部９１がベクトルプロセッシング部９２内のデータのロードを行う際に、多くのアドレス要素に対して、Ｌ１キャッシュ９１ａに格納されたデータのフラッシュ及びメモリへの書き戻し、又はＬ１キャッシュ９１ａからベクトルプロセッシング部９２へのデータの転送等が必要となる。すなわち、ライトバック制御を採用すると、制御が非常に複雑になり、また、ベクトルプロセッシング部９２に対するロード命令の実行が停滞する可能性がある。したがって、スカラプロセッシング部とベクトルプロセッシング部とを並列に設けたベクトル処理装置においては、上記の不都合を回避するため、ライトスルー制御が採用されている。ライトスルー制御が採用されているベクトル処理装置は、データを毎回メモリ９５へ書き込まなければならないので、ライトバック制御が採用されているプロセッサに比べ、多くの命令パケットがアドレス変換部９３へ発行される。
【０００５】
プロセッサが発行する命令パケットの数、形式、又はタイミングなどは、プロセッサの処理性能に大きく影響を及ぼすため、従来から様々な手法が検討されてきた。例えば、特許文献１には、１つのプロセッサが発行する命令コードの長さ、及び、命令を発行する周期を、データに合わせて調節する技術が開示されている。しかし、複数のプロセッサを有するベクトル処理装置においては、上記のようにデータの書き込み手法に制限があるため、ベクトル処理装置に特化した命令パケットの形式等を検討する必要がある。
【０００６】
例えば、ライトスルー制御を採用するスカラプロセッシング部９１は、１〜８バイト長のデータをストアするスカラストア命令を実行する際、ストアするデータサイズにもかかわらず８バイトのデータフィールドをもつ命令パケットをアドレス変換部９３等に発行していた。また、スカラプロセッシング部９１は、データをストアするアドレス範囲が所定のアドレス境界を跨がない場合には１つの命令パケット、所定のアドレス境界を跨ぐ場合には２つの命令パケットを発行していた。このため、例えば、連続したアドレスに対して１、２バイト等のデータのスカラストア命令を実行すると、８バイトのデータフィールドを全部使用しない、すなわち、命令パケットの利用効率の悪い命令パケットが複数発行される。そして、命令パケットが発行されるたびにアドレス変換部９３やメモリネットワーク９４へデータ転送を行わなければならなかった。
【０００７】
一方、スカラプロセッシング部９１から発行される命令パケットは、常にスカラプロセッシング部９１が命令パケットを生成した順にアドレス変換部９３に発行されている。スカラプロセッシング部９１及びベクトルプロセッシング部９２での演算処理を優先させるため、アクセスするメモリのアドレスが重ならなければ、多くの場合ストア命令よりもロード命令を優先的に実行することが求められる。しかし、ベクトルプロセッシング部９２に対するロード命令は処理対象のアドレス領域が広範囲にわたるため、多数の命令が存在するスカラプロセッシング部９１のパイプライン中においてはアドレス領域の重なりを逐一判定することは実装上困難である。したがって、スカラプロセッシング部９１とベクトルプロセッシング部９２とを並列に設けたベクトル処理装置９においては、従来から、スカラプロセッシング部９１に対するストア命令とベクトルプロセッシング部９２に対するロード命令との間の追い越し制御は行われていなかった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２６７２１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記のような命令パケットの形式は、ストアするデータが少ないのにもかかわらず、複数の命令パケットが発行され、データ転送の負荷が大きいという問題があった。そして、このようなデータ転送の負荷は、ベクトルプロセッシング部でのロード又はストア処理も滞らせ、ベクトル処理装置全体の性能低下の一因となっていた。
【００１０】
また、ストア命令のアドレスとロード命令のアドレスとが重ならなければ、ロード命令の命令パケットを追い越させて優先的に実行させることにより、ベクトル処理装置の処理速度をより高速化させることが求められる。
【００１１】
本発明の目的は、上記のような課題を解決するもので、命令パケットを制御することにより処理性能を向上させるのに好適なベクトル処理装置、ベクトル処理方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点に係るベクトル処理装置は、
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備えるベクトル処理装置であって、
前記スカラ処理部は、
前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行するものであって、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部と、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部と、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部と、
を備え、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ことを特徴とする。
【００１３】
本発明の第２の観点に係るベクトル処理方法は、
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行するものであって、当該スカラ処理部が、命令パケットバッファ部と、バッファ制御部と、結合処理部とを備える、ベクトル処理装置が実行するベクトル処理方法であって、
当該ベクトル処理方法は、
前記命令パケットバッファ部が、前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ工程と、
前記バッファ制御部が、前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御工程と、
前記結合処理部が、前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理工程と、
を備え、
前記バッファ制御工程において、前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ことを特徴とする。
【００１４】
本発明の第３の観点に係るプログラムは、
コンピュータを、
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット及び第２の命令パケットを発行する、ベクトル処理装置として機能させるプログラムであって、
前記プログラムは、前記コンピュータを、
前記スカラ処理部において、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される前記第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、前記第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部、
として機能させ、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを前記第１の命令パケットとして命令パケットバッファ部に格納させ、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させ、
（ｄ）ベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、前記第１のアドレスと前記第２のアドレスが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記第１の命令パケットとして前記命令パケットバッファ部に格納させる
ように機能させることを特徴とする。
【００１５】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記プログラムを格納した記録媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００１６】
本発明によれば、ベクトル処理装置において、ストア命令の命令パケットを保持するバッファをスカラプロセッシング部に設けることにより、複数のストア命令パケットの結合及び命令パケット間の追い越し制御を行うことができる。これにより、スカラプロセッシング部から発行されるストア命令パケットの数を削減し、ベクトルロード／ストア命令の追い越しを行い、処理性能を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るベクトル処理装置が実現されるベクトル処理装置を説明するための図である。
【図２】命令パケットの形式を説明するための図である。
【図３】実施形態１のスカラプロセッシング部を説明するための図である。
【図４】命令パケットの結合処理を説明するための図である。
【図５】実施形態１の命令バッファ部の各部が行う命令パケット制御処理を説明するためのフローチャート図である。
【図６】スカラストア命令パケット制御処理を説明するためのフローチャート図である。
【図７】ベクトルロード／ストア命令パケット制御処理を説明するためのフローチャート図である。
【図８】スカラロード命令パケット制御処理を説明するためのフローチャート図である。
【図９】その他の命令パケット制御処理を説明するためのフローチャート図である。
【図１０】有効でない命令パケットの制御処理を説明するためのフローチャート図である。
【図１１】実施形態２の命令バッファ部の各部が行う命令パケット制御処理を説明するためのフローチャート図である。
【図１２】従来のベクトル処理装置を説明するための図である。
【発明を実施するための形態】
【００１８】
（１．実施形態１のベクトル処理装置の概要構成）
本発明の実施形態に係るベクトル処理装置は、典型的には、図１に示すベクトル処理装置１により実現される。以下、ベクトル処理装置１の概要構成について説明する。
【００１９】
ベクトル処理装置１は、図１に示すように、スカラプロセッシング部１１と、ベクトルプロセッシング部１２と、アドレス変換部１３と、メモリネットワーク１４と、メモリ１５と、から構成される。
【００２０】
ベクトル処理装置１は、スカラプロセッシング部１１内のスカラレジスタに格納されたデータをメモリ１５へ格納させる「スカラストア命令」と、メモリ１５からスカラレジスタにデータを読み込む「スカラロード命令」と、ベクトルプロセッシング部１２内のベクトルレジスタに格納されたデータをメモリ１５へ格納させる「ベクトルストア命令」と、メモリ１５からベクトルレジスタにデータを読み込む「ベクトルロード命令」と、を扱う。以下、ベクトル処理装置１がこれらの命令を扱う場合を例に、各部の機能について説明する。
【００２１】
スカラプロセッシング部１１は、例えば、Ｌ１キャッシュ１１ａと、命令バッファ部１１ｂと、スカラデータを格納するスカラレジスタと（図示せず）、各種演算器と（図示せず）、を有する。スカラプロセッシング部１１は、所定のプログラムに従って、命令のフェッチ、デコード、スケジューリング、及び、各種命令の実行を行う。スカラプロセッシング部１１は、ベクトルプロセッシング部１２、アドレス変換部１３等、ベクトル処理装置１内の構成要素に対して、ロード／ストア命令やベクトル演算をはじめとした各種制御命令を示す「命令パケット」を発行する。
【００２２】
以下、スカラプロセッシング部１１が発行するスカラストア命令を示す命令パケットを「スカラストア命令パケット」、スカラロード命令を示す命令パケットを「スカラロード命令パケット」、ベクトルストア命令を示す命令パケットを「ベクトルロード命令パケット」、ベクトルロード命令を示すパケットを「ベクトルロード命令パケット」、という。また、スカラロード／ストア命令及びベクトルロード／ストア命令以外の命令であって、スカラプロセッシング部１１が発行するすべての命令（例えば、ページ切替命令やプロセッサ間の通信を行う命令）を示す命令パケットを「その他の命令パケット」、という。各命令パケットの形式を図２に示す。なお、その他の命令パケットの形式は任意であり、以下省略する。
【００２３】
図２（ａ）に示すように、スカラストア命令パケット２００は、命令コード２０１と、アドレス２０２と、バイトイネーブル２０３と、ストアデータ２０４と、から構成される。
【００２４】
命令コード２０１は、命令の種類別又はパケット形式を示すものである。
【００２５】
アドレス２０２は、ストアデータ２０４が格納されるメモリ１５上のアドレスを示すものである。アドレス２０２は、８の倍数の値しかとることができないものとする。
【００２６】
バイトイネーブル２０３は、６４ビット幅のストアデータ２０４を１バイト単位で区切り、どのバイトにストアデータ２０４が入っているか（有効）であるかを示す８ビット幅の情報である。
【００２７】
ストアデータ２０４は、メモリ１５に格納する６４ビット幅のデータである。
【００２８】
すなわち、スカラストア命令パケット２００は、指定されたアドレス２０２にストアデータ２０４を格納する命令を示すものである。
【００２９】
図２（ｂ）に示すように、スカラロード命令パケット３００は、命令コード３０１と、アドレス３０２と、から構成される。
【００３０】
命令コード３０１は、命令コード２０１と同様に、命令の種類別又はパケット形式を示すものである。
【００３１】
アドレス３０２は、スカラプロセッシング部１１に読み込まれるデータのメモリ１５上のアドレスを示すものである。
【００３２】
すなわち、スカラロード命令パケット３００は、アドレス３０２で指定されたメモリ１５上のデータを読み込む命令を示すものである。
【００３３】
図２（ｃ）に示すように、ベクトルロード／ストア命令パケット４００は、命令コード４０１と、ベースアドレス４０２と、ディスタンス４０３と、要素数４０４と、から構成される。
【００３４】
命令コード４０１は、命令コード２０１と同様に、命令の種類別又はパケット形式を示すものである。
【００３５】
ベースアドレス４０２は、メモリ１５上のアドレスを示すものである。
【００３６】
ディスタンス４０３は、ベースアドレス４０２からの距離を示すものである。
【００３７】
要素数４０４は、アドレスの数を示すものである。
【００３８】
ここで、ベースアドレス４０２を“Ｘ”、ディスタンス４０３を“Ｙ”、要素数４０４を“Ｎ”とすると、ベクトルロード／ストア命令パケットが指定するアドレスは、Ｘ、Ｘ＋Ｙ、Ｘ＋２＊Ｙ、・・・Ｘ＋（Ｎ−１）＊Ｙ、である。
【００３９】
すなわち、ベクトルロード／ストア命令パケット４００は、ベースアドレス４０２及びベースアドレス４０２からディスタンス４０３の整数倍だけ離れたアドレスであって、要素数個のアドレスに対し、一斉にデータの読込み又は書き込みの命令を示すものである。
【００４０】
スカラプロセッシング部１１は、スカラストア命令を実行する際、アドレス２０２及びストアデータ２０４を決定し、それらを図２（ａ）の形式の命令パケットに整形してアドレス変換部１３に送出する。また、スカラプロセッシング部１１は、スカラロード命令を実行する際、アドレス３０２を決定し、図２（ｂ）の形式の命令パケットに整形してアドレス変換部１３に送出する。
【００４１】
一方、スカラプロセッシング部１１は、ベクトルロード／ストア命令を実行する際、ベースアドレス４０２、ディスタンス４０３、及び、要素数４０４を決定し、それらを図２（ｃ）の形式の命令パケットに整形する。そして、スカラプロセッシング部１１は、当該命令パケットを、アドレス変換部１３へ送出し、アドレス変換部１３を介してベクトルプロセッシング部１２に引き渡す。
【００４２】
ベクトルプロセッシング部１２は、ベクトルデータを格納するベクトルレジスタや各種演算器（図示せず）を有する。ベクトルプロセッシング部１２は、スカラプロセッシング部１１からの命令に基づいて各種演算処理を行い、又は、アドレス変換部１３とロード／ストアデータの送受信を行う。例えば、ベクトルプロセッシング部１２が、スカラプロセッシング部１１からベクトルストア命令パケットを受け付けると、ベクトルレジスタに格納されたデータをアドレス変換部１３に送出する。
【００４３】
アドレス変換部１３は、スカラプロセッシング部１１又はベクトルプロセッシング部１２が行うデータのロード／ストアの実行に際し、必要があれば論理アドレスから物理アドレスへの変換を行い、メモリ１５へのデータ転送のスケジューリングを行う。
【００４４】
アドレス変換部１３は、スカラプロセッシング部１１からスカラストア命令パケットを受け取ると、命令パケットの内容を解釈し、物理アドレスへの変換処理を行う。そして、アドレス変換部１３は、変換後のアドレス及びストアデータ２０４を、メモリネットワーク１４を介してメモリ１５へ転送する。
【００４５】
アドレス変換部１３は、スカラプロセッシング部１１からスカラロード命令パケットを受け取ると、命令パケットの内容を解釈し、物理アドレスへの変換処理を行う。そして、アドレス変換部１３は、変換後のアドレスを、メモリネットワーク１４を介してメモリ１５へ転送する。
【００４６】
アドレス変換部１３は、スカラプロセッシング部１１からベクトルストア命令パケットを受け取り、ベクトルプロセッシング部１２からデータを受け取ると、ベースアドレス、ディスタンス、及び要素数で指定されたアドレスの実アドレスへの展開及び物理アドレスへの変換処理を行う。そして、アドレス変換部１３は、変換後のアドレス又はストアデータを、メモリネットワーク１４を介してメモリ１５へ転送する。
【００４７】
アドレス変換部１３は、スカラプロセッシング部１１からベクトルロード命令の命令パケットを受け取ると、実アドレスへの展開及び物理アドレスへの変換処理を行う。そして、アドレス変換部１３は、変換後のアドレスを、メモリネットワーク１４を介してメモリ１５へ転送する。
【００４８】
メモリネットワーク１４は、アドレス変換部１３とメモリ１５との間のデータ転送を行う。
【００４９】
メモリ１５は、スカラプロセッシング部１１又はベクトルプロセッシング部１２が読込み又は書き込みを行うデータを記憶する。
【００５０】
（２．実施形態１のスカラプロセッシング部の概要構成）
以下、上記ベクトル処理装置１が有する本実施形態のスカラプロセッシング部の概要構成について、具体的に説明する。
実施形態１のスカラプロセッシング部は、命令パケットの結合及び追い越しを行う。
【００５１】
スカラプロセッシング部１１は、Ｌ１キャッシュ１１ａと、命令バッファ部１１ｂと、を備える。
【００５２】
Ｌ１キャッシュ１１ａは、スカラプロセッシング部１１において使用頻度が高いデータを格納する。スカラプロセッシング部１１は、スカラストア命令の実行の際に、Ｌ１キャッシュ１１ａの内容を更新すると同時にメモリ１５にデータを書き込む処理を行う。
【００５３】
命令バッファ部１１ｂは、スカラプロセッシング部１１が発行する命令パケットを結合又は追い越し処理を行うためのものである。命令バッファ部１１ｂは、スカラプロセッシング部１１が命令パケットをアドレス変換部１３に送出する前に命令パケットを受け付ける。命令バッファ部１１ｂは、図３に示すように、アドレス比較・バッファ制御部１１ｂ１と、命令パケットバッファ部１１ｂ２と、結合処理部１１ｂ３と、を備え、以下のように構成する。
【００５４】
アドレス比較・バッファ制御部１１ｂ１は、命令バッファ部１１ｂが受け付けた命令パケット（以下、「受付命令パケット」という）、及び、命令パケットバッファ部１１ｂ２に保持されている命令パケット（以下、「保持命令パケット」という）の種類を判定する。そして、保持命令パケットのアドレスと受付命令パケットのアドレスとを比較する。ここで、保持命令パケットは、受付命令パケットよりも先に受け付けた命令パケットである。すなわち、アドレス比較・バッファ制御部１１ｂ１は、先行する命令パケット（保持命令パケット）、及び、後続の命令パケット（受付命令パケット）の種類を判定し、両命令パケットのアドレスを比較する。そして、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケット及び保持命令パケットの種類ならびに比較結果に基づいて、先行する命令パケットと後続の命令パケットとの結合指示、又は、命令間の追い越しを行う。
【００５５】
命令パケットバッファ部１１ｂ２は、命令バッファ部１１ｂが受け付けた命令パケットを１つ保持するバッファである。
【００５６】
結合処理部１１ｂ３は、アドレス比較・バッファ制御部１１ｂ１の指示に基づいて、命令パケットを１つに結合させる。
【００５７】
以下、アドレス比較・バッファ制御部１１ｂ１の具体的な機能について説明する。
【００５８】
スカラプロセッシング部１１より図２の形式等の命令パケットが生成されると、当該命令パケットはまず命令バッファ部１１ｂに送られる。命令バッファ部１１ｂが命令パケットを受け付けると、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが、（Ａ）スカラストア命令パケット、（Ｂ）ベクトルロード／ストア命令パケット、（Ｃ）スカラロード命令パケット、（Ｄ）その他の命令パケット、（Ｅ）有効でない命令パケットのいずれかであるかを判定する。
【００５９】
スカラプロセッシング部１１からは常に何らかの信号を含む「命令パケット」が生成され、出力されており、その命令パケットに含まれる信号は、実際に実行すべき命令を示すものである場合と、無視されるべきものである場合とがある。したがって、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「有効である」か否かも判断することとする。ここで、命令パケットが「有効である」とは、命令パケットが、有効ｂｉｔが“１”であり実際に実行されるべき命令の情報を含むことをいう。すなわち、有効な命令パケットには、（Ａ）スカラストア命令、（Ｂ）ベクトルロード／ストア命令、（Ｃ）スカラロード命令、又は（Ｄ）その他の命令の命令パケットが含まれる。一方、パケットが「有効でない」とは、命令パケットが、有効ｂｉｔが“０”であり実行されるべき命令の情報を含まないことをいう。
【００６０】
次に、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが「有効である」か否かを判断する。
【００６１】
受付命令パケットが（Ａ）スカラストア命令パケットであり、保持命令パケットが有効である場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットであるか、スカラストア命令パケットであれば受付命令パケットと保持命令パケットのアドレスが一致するか否かを判断する。保持命令パケットがスカラストア命令パケットであって、それらのアドレスが一致する場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットと受付命令パケットとを結合する。アドレス比較・バッファ制御部１１ｂ１は結合後のパケット（以下、「結合命令パケット」という）を、命令パケットバッファ部１１ｂ２に保持する。
【００６２】
保持命令パケットと受付命令パケットとの結合の例を、図４を用いて示す。
図４（ａ）は保持命令パケット、図４（ｂ）は受付命令パケット、図４（ｃ）は保持命令パケット（図４（ａ））と受付命令パケット（図４（ｂ））とを結合した後の命令パケット（結合命令パケット）である。
【００６３】
結合命令パケットの命令コード７０１は、スカラストア命令を示すものであり、命令コード５０１、６０１と同じである。アドレス７０２は、アドレス５０２、６０２と同じである。結合命令パケットのバイトイネーブル７０３は、保持命令パケットのバイトイネーブル５０３と受付命令パケットのバイトイネーブル６０３とのＯＲ処理を行ったものとする。結合命令パケットのストアデータ７０４は、保持命令パケットのストアデータ５０４と、受付命令パケットのストアデータ６０４とが示す有効な方を１バイト単位で選択したものとする。ただし、両方のパケットで有効なバイトが存在した場合には、同じアドレスに対するストア命令が連続しているものと考え、遅く受け取った受付命令パケットのストアデータ６０４を優先する。
【００６４】
一方、受付命令パケットが（Ａ）スカラストア命令パケットであり、（ｉ）保持命令パケットが有効でないと判断された場合、（ｉｉ）保持命令パケットがスカラストア命令パケット以外の有効な命令パケットである場合、あるいは、（ｉｉｉ）保持命令パケットがスカラストア命令パケットで、両者のアドレスが一致しない場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３に出力させ、受付命令パケットであるスカラストア命令パケットを命令パケットバッファ部１１ｂ２に保持させる。
【００６５】
これにより、同じアドレスへのスカラストア命令を実行する場合、スカラプロセッシング部１１からアドレス変換部１３に発行する命令パケット数を削減することができる。この結果、データ転送帯域を効率化し、メモリネットワーク１４等のデータ転送の負荷を軽減することができる。一方、先行の命令と後続の命令とがスカラストア命令でも、両命令が対象とするアドレスが一致しない場合には、命令パケットの追い越しは行わず、命令が生成された順に命令パケットを発行することができる。
【００６６】
受付命令パケットが（Ｂ）ベクトルロード／ストア命令パケットであり、保持命令パケットが有効である場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットであるか、スカラストア命令パケットであれば受付命令パケットと保持命令パケットのアドレスが重複するか否かを判断する。受付命令パケットが（Ｂ）ベクトルロード／ストア命令パケットであり、保持命令パケットがスカラストア命令パケットであって、それらのアドレスが重複しない場合、あるいは、受付命令パケットが（Ｂ）ベクトルロード／ストア命令パケットであって、保持命令パケットが有効でない場合、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットであるベクトルロード／ストア命令パケットを、保持命令パケットを追い越して、アドレス変換部１３に出力する。
【００６７】
一方、受付命令パケットが（Ｂ）ベクトルロード／ストア命令パケットであり、保持命令パケットがスカラストア命令パケットであって、それらのアドレスが重複する場合、あるいは、受付命令パケットが（Ｂ）ベクトルロード／ストア命令パケットであり、保持命令パケットが有効であるがスカラストア命令パケットではない場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（ベクトルロード／ストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる。
【００６８】
これにより、アドレスが重複しなければ、スカラストア命令よりもベクトルロード／ストア命令を優先的に実行する追い越し制御を行うことができる。
【００６９】
受付命令パケットが（Ｃ）スカラロード命令パケットであり、保持命令パケットが有効である場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットであるか、スカラストア命令パケットであれば受付命令パケットと保持命令パケットのアドレスが一致するか否かを判断する。受付命令パケットが（Ｃ）スカラロード命令パケットであり、保持命令パケットがスカラストア命令パケットであって、それらのアドレスが一致しない場合、あるいは、受付命令パケットが（Ｃ）スカラロード命令パケットであって、保持命令パケットが有効でない場合、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットであるスカラロード命令パケットを、保持命令パケットを追い越して、アドレス変換部１３に出力する。
【００７０】
一方、受付命令パケットが（Ｃ）スカラロード命令パケットであり、保持命令パケットがスカラストア命令パケットであって、アドレスが一致する場合、あるいは、受付命令パケットが（Ｃ）スカラロード命令パケットであり、保持命令パケットが有効であるがスカラストア命令パケットでない場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３に出力し、受付命令パケット（スカラロード命令パケット）を命令パケットバッファ部１１ｂ２に保持させる。
【００７１】
これにより、アドレスが一致しなければ、スカラストア命令よりもスカラロード命令を優先的に実行する追い越し制御を行うことができる。
【００７２】
受付命令パケットが（Ｄ）その他の命令パケットであり、保持命令パケットが有効である場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットを、アドレス変換部１３に出力し、受付命令パケット（その他の命令パケット）を命令パケットバッファ部１１ｂ２に保持させる。
【００７３】
一方、受付命令パケットが（Ｄ）その他の命令パケットであり、保持命令パケットが有効でない場合、アドレス比較・バッファ制御部１１ｂ１は、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットをそのままアドレス変換部１３へ出力する。
【００７４】
これにより、有効なパケットであるその他の命令パケットは、有効でないパケットとよりも優先させて出力することができる。
【００７５】
受付命令パケットが（Ｅ）有効でない命令パケットであり、保持命令パケットが有効である場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットであるか否かを判断する。受付命令パケットが（Ｅ）有効でない命令パケットであり、保持命令パケットがスカラストア命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットを命令パケットバッファ部１１ｂ２に保持させたまま、受付命令パケットをそのままアドレス変換部１３へ出力する。
【００７６】
一方、受付命令パケットが（Ｅ）有効でない命令パケットであり、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットである場合、あるいは、受付命令パケットが（Ｅ）有効でない命令パケットであり、保持命令パケットも有効でない命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３に出力し、受付命令パケット（有効でない命令パケット）を命令パケットバッファ部１１ｂ２に保持させる。
【００７７】
これにより、後続に有効なパケットが来ない場合、命令パケットバッファ部１１ｂ２に命令パケットが滞留してしまうことを防ぐことができる。
【００７８】
（３．実施形態１の命令バッファ部の動作）
以下、結合処理及び追い越し制御処理を実行する命令バッファ部の動作について説明する。ベクトル処理装置１に電源が投入されると、命令バッファ部１１ｂは、図５のフローチャートに示す命令パケット制御処理を開始する。
【００７９】
アドレス比較・バッファ制御部１１ｂ１は、命令パケットを受け付けたか否かを判断する（ステップＳ１１）。命令パケットを受け付けたと判断された場合（ステップＳ１１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、受け付けた命令パケット（受付命令パケット）の種類を判定する（ステップＳ１２）。一方、命令パケットを受け付けていないと判断された場合（ステップＳ１１；Ｎｏ）、そのまま待機する。
【００８０】
アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「スカラストア命令パケット」であると判断した場合（ステップＳ１２；スカラストア命令パケット）、スカラストア命令パケット制御処理（図６）を開始する（ステップＳ１３）。
アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「ベクトルロード／ストア命令パケット」であると判断した場合（ステップＳ１２；ベクトルロード／ストア命令パケット）、ベクトルロード／ストア命令パケット制御処理（図７）を開始する（ステップＳ１４）。
アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「スカラロード命令パケット」であると判断した場合（ステップＳ１２；スカラロード命令パケット）、スカラロード命令パケット制御処理（図８）を開始する（ステップＳ１５）。
アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「その他の命令パケット」であると判断した場合（ステップＳ１２；その他の命令パケット）、その他の命令パケット制御処理（図９）を開始する（ステップＳ１６）。
アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットが「有効でない命令パケット」であると判断した場合（ステップＳ１２；有効でない命令パケット）、有効でない命令パケットの制御処理（図１０）を開始する（ステップＳ１７）。
【００８１】
（３．１  スカラストア命令パケット制御処理）
アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが有効か否かを判断する（ステップＳ１３１）。保持命令パケットが有効であると判断された場合（ステップＳ１３１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットか否かを判断する（ステップＳ１３２）。一方、保持命令パケットが有効でないと判断された場合（ステップＳ１３１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、現在保持されている有効でない命令パケットをアドレス変換部１３に出力し、受付命令パケット（スカラストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１３５）。
【００８２】
ステップＳ１３２において、保持命令パケットがスカラストア命令パケットであると判断された場合（ステップＳ１３２；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（先行するスカラストア命令パケット）のアドレスと受付命令パケット（後続のスカラストア命令パケット）のアドレスとを比較する（ステップＳ１３３）。
【００８３】
一方、ステップＳ１３２において、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットであると判断された場合（ステップＳ１３２；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（スカラストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１３５）。すなわち、受付命令パケットがスカラストア命令パケットであり、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、追い越し制御を行わず、命令パケットが生成された順に、命令パケットをアドレス変換部１３に出力する。
【００８４】
ステップＳ１３３において、保持命令パケットのアドレスと受付命令パケットのアドレスとが一致すると判断された場合（ステップＳ１３３；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットと受付命令パケットとを結合し、結合後の命令パケットを命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１３４）。例えば、保持命令パケットが図４（ａ）に示す命令パケットであり、受付命令パケットが図４（ｂ）に示す命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、それらを結合して図４（ｃ）に示す命令パケットを生成する。そして、アドレス比較・バッファ制御部１１ｂ１は、生成した当該命令パケットを命令パケットバッファ部１１ｂ２に保持させる。
【００８５】
一方、ステップＳ１３３において、アドレスが一致しないと判断された場合（ステップＳ１３３；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（先行するスカラストア命令パケット）をアドレス変換部１３へ出力し、受付命令パケット（後続のスカラストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１３５）。
【００８６】
ステップＳ１３４又はステップＳ１３５の処理の後、アドレス比較バッファ制御部１３は、スカラストア命令パケット制御処理を終了する。
【００８７】
（３．２  ベクトルロード／ストア命令パケット制御処理）
アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが有効か否かを判断する（ステップＳ１４１）。保持命令パケットが有効であると判断された場合（ステップＳ１４１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットか否かを判断する（ステップＳ１４２）。一方、保持命令パケットが有効でないと判断された場合（ステップＳ１４１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケット（ベクトルロード／ストア命令パケット）をそのままアドレス変換部１３へ出力する（ステップＳ１４５）。
【００８８】
ステップＳ１４２において、保持命令パケットがスカラストア命令パケットであると判断された場合（ステップＳ１４２；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）のアドレスと受付命令パケット（ベクトルロード／ストア命令パケット）のアドレスとを比較する（ステップＳ１４３）。
【００８９】
一方、ステップＳ１４２において、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットであると判断された場合（ステップＳ１４２；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（ベクトルロード／ストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１４４）。すなわち、受付命令パケットがベクトルロード／ストア命令パケットであり、保持命令パケットが、スカラストア命令パケット以外の有効な命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、追い越し制御を行わず、命令パケットが生成された順に、命令パケットをアドレス変換部１３に出力する。
【００９０】
ステップＳ１４３において、保持命令パケットのアドレスと、受付命令パケットのアドレス、すなわち、ベースアドレスを基準とした要素数個のアドレスとが重複する場合（ステップＳ１４３；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）をアドレス変換部１３へ出力し、受付命令パケット（ベクトルロード／ストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１４４）。
【００９１】
一方、ステップＳ１４３において、アドレスが重複しないと判断された場合（ステップＳ１４３；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）をそのまま保持させ、受付命令パケット（ベクトルロード／ストア命令パケット）を優先してアドレス変換部１３へ出力する（ステップＳ１４５）。
【００９２】
ステップＳ１４４及びステップＳ１４５の処理の後、アドレス比較バッファ制御部１３は、ベクトルロード／ストア命令パケット制御処理を終了する。
【００９３】
（３．３  スカラロード命令パケット制御処理）
アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが有効か否かを判断する（ステップＳ１５１）。保持命令パケットが有効であると判断された場合（ステップＳ１５１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットか否かを判断する（ステップＳ１５２）。一方、保持命令パケットが有効でないと判断された場合（ステップＳ１５１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケット（スカラロード命令パケット）をそのままアドレス変換部１３へ出力する（ステップＳ１５５）。
【００９４】
ステップＳ１５２において、保持命令パケットがスカラストア命令パケットであると判断された場合（ステップＳ１５２；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）のアドレスと受付命令パケット（スカラロード命令パケット）のアドレスとを比較する（ステップＳ１５３）。
【００９５】
一方、ステップＳ１５２において、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットであると判断された場合（ステップＳ１５２；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（スカラロード命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１５４）。すなわち、受付命令パケットがスカラロード命令パケットであり、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットである場合、アドレス比較・バッファ制御部１１ｂ１は、追い越し制御を行わず、命令パケットが生成された順に、命令パケットをアドレス変換部１３に出力する。
【００９６】
ステップＳ１５３において、保持命令パケットのアドレスと受付命令パケットのアドレスとが一致すると判断された場合（ステップＳ１５３；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）をアドレス変換部１３へ出力し、受付命令パケット（スカラロード命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１５４）。
【００９７】
一方、ステップＳ１５３において、アドレスが一致しないと判断された場合（ステップＳ１５３；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）をそのまま保持させ、受付命令パケット（スカラロード命令パケット）を優先してアドレス変換部１３へ出力する（ステップＳ１５５）。
【００９８】
ステップＳ１５４及びステップＳ１５５の処理の後、アドレス比較バッファ制御部１３は、スカラロード命令パケット制御処理を終了する。
【００９９】
（３．４  その他の命令パケット制御処理）
アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが有効か否かを判断する（ステップＳ１６１）。保持命令パケットが有効であると判断された場合（ステップＳ１６１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（その他の命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１６２）。一方、保持命令パケットが有効でないと判断された場合（ステップＳ１６１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットをそのままアドレス変換部１３へ出力する（ステップＳ１６３）。
【０１００】
ステップＳ１６２及びステップＳ１６３の処理の後、アドレス比較バッファ制御部１３は、その他の命令パケット制御処理を終了する。
【０１０１】
（３．５  有効でない命令パケットの制御処理）
アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットが有効か否かを判断する（ステップＳ１７１）。保持命令パケットが有効であると判断された場合（ステップＳ１７１；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットがスカラストア命令パケットか否かを判断する（ステップＳ１７２）。一方、保持命令パケットが有効でないと判断された場合（ステップＳ１７１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、現在保持されている有効でない命令パケットをアドレス変換部１３に出力し、受付命令パケット（有効でない命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１７４）。
【０１０２】
ステップＳ１７２において、保持命令パケットがスカラストア命令パケットであると判断された場合（ステップＳ１７２；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケット（スカラストア命令パケット）を命令パケットバッファ部１１ｂ２に保持させたまま、受付命令パケット（有効でない命令パケット）をそのままアドレス変換部１３へ出力する（ステップＳ１７３）。
【０１０３】
一方、ステップＳ１７２において、保持命令パケットがスカラストア命令パケット以外の有効な命令パケットであると判断された場合（ステップＳ１７２；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力し、受付命令パケット（有効でない命令パケット）を命令パケットバッファ部１１ｂ２に保持させる（ステップＳ１７４）。
【０１０４】
ステップＳ１７３及びステップＳ１７４の処理の後、アドレス比較バッファ制御部１３は、有効でない命令パケットの制御処理を終了する。
【０１０５】
本実施形態によれば、アドレス変換部に発行される命令パケット数を削減することができ、データ転送の負荷を軽減することができる。ストア命令のアドレスとロード命令のアドレスとが重ならなければ、ロード命令を追い越させて優先的に実行することができ、ベクトル処理装置の処理速度を高めることができる。
【０１０６】
（４．実施形態２のベクトル処理装置の概要構成）
実施形態２のベクトル処理装置１は、図１に示すように、ベクトル処理装置１は、スカラプロセッシング部１１と、ベクトルプロセッシング部１２と、アドレス変換部１３と、メモリネットワーク１４と、メモリ１５と、から構成される。ベクトルプロセッシング部１２、アドレス変換部１３、メモリネットワーク１４、及び、メモリ１５は、実施形態１のものと同様の機能を有する。
【０１０７】
（５．実施形態２のスカラプロセッシング部の概要構成）
実施形態２のスカラプロセッシング部は、実施形態１の機能に加え、命令パケットが一定時間以上保持された場合、比較する命令パケットが存在しなくても保持命令パケットを出力する機能を有するものである。
以下、実施形態１のベクトル処理装置と異なる機能を実現するアドレス比較・バッファ制御部１１ｂ１について説明する。
【０１０８】
アドレス比較・バッファ制御部１１ｂ１は、カウンタ（図示せず）を備え、命令バッファ部１１ｂが命令パケットを受け付けない期間、命令パケットバッファ部１１ｂ２を次のように制御する。
【０１０９】
アドレス比較・バッファ制御部１１ｂ１は、カウンタにより命令パケットバッファ部１１ｂ２に命令パケットを保持させてからの経過時間を計測する。そして、アドレス比較・バッファ制御部１１ｂ１は、経過時間が所定の時間を経過した場合、保持命令パケットをアドレス変換部１３へ出力させる。一方、経過時間が所定の閾値を超えない場合、アドレス比較・バッファ制御部１１ｂ１は、命令パケットバッファ部１１ｂ２に命令パケットを保持させたまま待機する。
【０１１０】
これにより、命令パケットバッファ部１１ｂ１に命令パケットが滞留して、ベクトル処理装置１全体の処理が滞ることを防ぐことができる。また、ストア命令の処理にかかる時間を、ある一定の値以下にすることを保証することが可能となる。
【０１１１】
（６．実施形態２の命令バッファ部の動作）
以下、本実施形態の命令バッファ部の各部が行う動作について説明する。ベクトル処理装置１に電源が投入されると、命令バッファ部１１ｂは、図１１のフローチャートに示す命令パケット制御処理を開始する。なお、図１１のフローチャートにおいて、図５のフローチャートと同じステップ番号が付されているステップは、図５のフローチャートにおける処理と同様の処理を行う。以下、異なる処理を行うステップについて説明する。
【０１１２】
ステップＳ１１において、命令パケットを受け付けていないと判断された場合（ステップＳ１１；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、命令パケットバッファ部１１ｂ２に命令パケットを保持させてから所定の時間が経過したか否かを判断する（ステップＳ２７）。所定の時間経過したと判断された場合（ステップＳ２７；Ｙｅｓ）、アドレス比較・バッファ制御部１１ｂ１は、保持命令パケットをアドレス変換部１３へ出力する（ステップＳ２８）。そして、ステップＳ１１に戻る。
【０１１３】
一方、所定の時間を経過していないと判断された場合（ステップＳ２７；Ｎｏ）、アドレス比較・バッファ制御部１１ｂ１は、ステップＳ１１に戻り、引き続き、命令パケットを受け付けたか否か判断する。
【０１１４】
本実施形態によれば、命令パケットが長期間、バッファに滞留してしまうのを防ぐことができる。
【０１１５】
なお、上記実施形態において、ベクトル処理装置は上記の構成に限られるものではない。例えば、スカラプロセッシング部、ベクトルプロセッシング部、メモリ等は複数備えられるようにしてもよい。また、本実施形態では、アドレス変換部を介してスカラプロセッシング部からベクトルプロセッシング部へ命令パケットが送出されているが、これに限らず、スカラプロセッシング部からベクトルプロセッシング部へ直接、命令パケットを送出するようにしてもよい。また、各命令パケットの形式は、実施形態に示したものに限らない。例えば、ベクトル処理装置が、スカラプロセッシング部を複数有する場合、命令パケットを発行したスカラプロセッシング部を識別する識別子等を命令パケットに含めるようにしてもよい。
【０１１６】
また、上記実施形態において、アドレス比較・バッファ制御部１１ｂ１は、有効でない命令パケットをアドレス変換部１３へ出力しなくてもよい。あるいは、アドレス比較・バッファ制御部１１ｂ１は、有効でない命令パケットを、どのような順序でも出力することができる。例えば、ステップＳ１３５、Ｓ１７４において、アドレス比較・バッファ制御部１１ｂ１は、保持されている有効でない命令パケットをアドレス変換部１３に出力せず、受付命令パケットを命令パケットバッファ部１１ｂ２に上書きしてしまうこととしてもよい。また、ステップＳ１７３において、アドレス比較・バッファ制御部１１ｂ１は、受付命令パケットである有効でない命令パケットをアドレス変換部１３に出力しないこととしてもよい。
【０１１７】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１８】
（付記１）
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備えるベクトル処理装置であって、
前記スカラ処理部は、
前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット又は第２の命令パケットを発行するものであって、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部と、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部と、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部と、
を備え、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令又はベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力する
ことを特徴とするベクトル処理装置。
【０１１９】
（付記２）
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令がスカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記命令パケットバッファ部に格納させる
ことを特徴とする付記１に記載のベクトル処理装置。
【０１２０】
（付記３）
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令がベクトルロード命令又はベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスとが重複する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記命令パケットバッファ部に格納させる
ことを特徴とする付記１又は２に記載のベクトル処理装置。
【０１２１】
（付記４）
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令がスカラロード命令であって、前記第１のアドレスと前記第２のアドレスとが一致する場合、前記第１の命令パケットを出力し、前記第２の命令パケットを前記命令パケットバッファ部に格納させる
ことを特徴とする付記１乃至３のいずれか１つに記載のベクトル処理装置。
【０１２２】
（付記５）
前記バッファ制御部は、
前記第１の命令パケットが示す命令がベクトルロード命令、ベクトルストア命令、又は、スカラロード命令である場合、前記第１の命令パケットを出力する
ことを特徴とする付記１乃至４のいずれか１つに記載のベクトル処理装置。
【０１２３】
（付記６）
前記バッファ制御部は、前記命令パケットバッファ部が前記第１の命令パケットを格納してからの経過時間を計測し、当該経過時間が所定の値を超えた場合、前記第１の命令パケットを出力する
ことを特徴とする付記１乃至５のいずれか１つに記載のベクトル処理装置。
【０１２４】
（付記７）
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット又は第２の命令パケットを発行するものであって、当該スカラ処理部が、命令パケットバッファ部と、バッファ制御部と、結合処理部とを備える、ベクトル処理装置が実行するベクトル処理方法であって、
当該ベクトル処理方法は、
前記命令パケットバッファ部が、前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ工程と、
前記バッファ制御部が、前記第１の命令パケット及び当該第１の命令パケットの後に発行される第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御工程と、
前記結合処理部が、前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理工程と、
を備え、
前記バッファ制御工程において、前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令又はベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力する
ことを特徴とするベクトル処理方法。
【０１２５】
（付記８）
コンピュータを、
スカラ演算を行うスカラ処理部と、ベクトル演算を行うベクトル処理部と、記憶部と、を備え、前記スカラ処理部は、前記記憶部からデータをロードする命令あるいは前記記憶部にデータをストアする命令を示す第１の命令パケット又は第２の命令パケットを発行する、ベクトル処理装置として機能させるプログラムであって、
前記プログラムは、前記コンピュータを、
前記スカラ処理部において、
前記スカラ処理部により発行される第１の命令パケットを格納する命令パケットバッファ部、
前記第１の命令パケット及び当該第１の命令パケットの後に発行される第２の命令パケットの種類を判別し、前記第１の命令パケットが指定する第１のアドレスと、第２の命令パケットが指定する第２のアドレスとを比較し、前記第１の命令パケットと前記第２の命令パケットとを結合する指示を出力するバッファ制御部、
前記出力された指示に基づき前記第１の命令パケットと前記第２の命令パケットとを結合する結合処理部、
として機能させ、
前記バッファ制御部は、
前記第１の命令パケットが示す命令がスカラストア命令であり、前記第２の命令パケットが示す命令が
（ａ）スカラストア命令であって、前記第１のアドレスと前記第２のアドレスが一致する場合、前記結合処理部に前記結合する指示を出力し、結合されたパケットを命令パケットバッファ部に格納させ、
（ｂ）ベクトルロード命令又はベクトルストア命令であって、前記第１のアドレスと前記第２のアドレスが重複しない場合、前記第２の命令パケットを出力し、
（ｃ）スカラロード命令であって、前記第１のアドレスと前記第２のアドレスが一致しない場合、前記第２の命令パケットを出力する
として機能させることを特徴とするプログラム。
【産業上の利用可能性】
【０１２６】
本発明によれば、命令パケットを制御することにより処理性能を向上させるのに好適なベクトル処理装置、ベクトル処理方法、及び、プログラムを提供することができる。
【符号の説明】
【０１２７】
１、９  ベクトル処理装置
１１、９１  スカラプロセッシング部
１１ａ、９１ａ  Ｌ１キャッシュ
１１ｂ  命令バッファ部
１１ｂ１  アドレス比較・バッファ制御部
１１ｂ２  命令パケットバッファ部
１１ｂ３  結合処理部
１２、９２  ベクトルプロセッシング部
１３、９３  アドレス変換部
１４、９４  メモリネットワーク
１５、９５  メモリ
【図１】
0005732953.tif 000002
【図２】
0005732953.tif 000003
【図３】
0005732953.tif 000004
【図４】
0005732953.tif 000005
【図５】
0005732953.tif 000006
【図６】
0005732953.tif 000007
【図７】
0005732953.tif 000008
【図８】
0005732953.tif 000009
【図９】
0005732953.tif 000010
【図１０】
0005732953.tif 000011
【図１１】
0005732953.tif 000012
【図１２】
0005732953.tif 000013