(57)【特許請求の範囲】
【請求項１】
外部から受け付けた複数の命令に関する情報を、アクセス先のメモリのアドレスを含めて命令単位に受け付け順に保持する命令保持回路と、
前記受け付けた複数の命令のうち複数のアドレスの指定を含むリストアドレスを有するリストベクトル命令について、当該リストアドレス内のアドレスを比較して最大アドレス及び最小アドレスを抽出し、当該抽出された最大アドレス及び最小アドレスを当該リストベクトル命令に対応付けて、前記命令保持回路に格納するアドレス抽出回路と、
前記命令保持回路に格納された最大アドレス及び最小アドレスに基づき、前記リストベクトル命令と、当該リストベクトル命令の後続命令との追い越し判定を行う追い越し判定回路と、
を備えるベクトル命令制御回路。
【請求項２】
前記リストアドレスには、Ｎ個（Ｎは、２以上の自然数）のアドレスの指定を含み、
前記アドレス抽出回路は、
アドレスを保持するためのＭ個（Ｍは、２以上かつＮ未満の自然数）のアドレス保持回路と、
前記リストアドレスからＭ個ごとにアドレスを選択して前記Ｍ個のアドレス保持回路に格納する選択回路と、
前記Ｍ個のアドレス保持回路に保持されたアドレスのうち最大値及び最小値を選択する第１の最大最小アドレス選択回路と、
前記最大アドレス及び前記最小アドレスを保持する最大最小アドレス保持回路と、
前記最大最小アドレス保持回路に保持された最大アドレスと、前記第１の最大最小アドレス選択回路により選択された最大値とのうち最大値を前記最大アドレスとして選択し、前記最大最小アドレス保持回路に保持された最小アドレスと、前記第１の最大最小アドレス選択回路により選択された最小値とのうち最小値を前記最小アドレスとして選択し、当該選択された最大アドレス及び最小アドレスにより前記最大最小アドレス保持回路を更新する第２の最大最小アドレス選択回路と、
を有することを特徴とする請求項１に記載のベクトル命令制御回路。
【請求項３】
前記リストベクトル命令におけるストアデータを保持するストアデータ保持回路をさらに備え、
前記命令保持回路は、前記リストベクトル命令におけるストアデータが前記ストアデータ保持回路に格納されたことを示すストアデータ格納完了情報を当該リストベクトル命令に対応付けてさらに保持し、
前記追い越し判定回路は、前記命令保持回路に、前記リストベクトル命令に対応付けられた最大アドレス及び最小アドレスが保持されており、かつ、前記ストアデータ格納完了情報が格納されていた場合に、当該リストベクトル命令について前記追い越し判定の対象とする
ことを特徴とする請求項１又は２に記載のベクトル命令制御回路。
【請求項４】
前記命令保持回路は、前記アクセス先のメモリのアドレスとして、当該アドレスの一部のビットを保持し、
前記アドレス抽出回路は、前記リストアドレス内のアドレスの一部のビットを比較して、当該一部のビットを前記最大アドレス及び前記最小アドレスとして抽出する
ことを特徴とする請求項１乃至３のいずれか１項に記載のベクトル命令制御回路。
【請求項５】
前記一部のビットは、上位の所定数のビットであることを特徴とする請求項４に記載のベクトル命令制御回路。
【請求項６】
複数の命令に関する情報を、アクセス先のメモリのアドレスを含めて命令単位に受け付け順に保持する命令保持回路を有するベクトル命令制御回路におけるリストベクトルの追い越し制御方法であって、
前記ベクトル命令制御回路において、
外部から複数のアドレスの指定を含むリストアドレスを有するリストベクトル命令を受け付け、
前記リストアドレス内のアドレスを比較して最大アドレス及び最小アドレスを抽出し、
前記抽出された最大アドレス及び最小アドレスを当該リストベクトル命令に対応付けて、前記命令保持回路に格納し、
前記外部から前記リストベクトル命令の後続命令を受け付け、
前記命令保持回路に格納された最大アドレス及び最小アドレスに基づき、前記リストベクトル命令と、前記後続命令との追い越し判定を行う
リストベクトルの追い越し制御方法。
【請求項７】
前記リストアドレスには、Ｎ個（Ｎは、２以上の自然数）のアドレスの指定を含み、
前記ベクトル命令制御回路は、前記最大アドレス及び前記最小アドレスを保持する最大最小アドレス保持回路をさらに有し、
前記ベクトル命令制御回路において、
前記リストアドレスからＭ個（Ｍは、２以上かつＮ未満の自然数）のアドレスを第１のグループとして選択し、
前記第１のグループのうち最大値及び最小値を第１の最大アドレス及び第１の最小アドレスとして選択し、
前記選択された第１の最大アドレス及び第１の最小アドレスを前記最大最小アドレス保持回路へ格納し、
前記リストアドレスから前記第１のグループ以外のＭ個以内のアドレスを第２のグループとして選択し、
前記第２のグループのうち最大値及び最小値を第２の最大アドレス及び第２の最小アドレスとして選択し、
前記第１の最大アドレスと前記第２の最大アドレスとのうち最大値を前記リストベクトル命令における最大アドレスとして抽出して、当該最大アドレスにより前記最大最小アドレス保持回路を更新し、
前記第１の最小アドレスと前記第２の最小アドレスとのうち最小値を前記リストベクトル命令における最小アドレスとして抽出して、当該最小アドレスにより前記最大最小アドレス保持回路を更新する
ことを特徴とする請求項６に記載のリストベクトルの追い越し制御方法。
【請求項８】
前記ベクトル命令制御回路は、前記リストベクトル命令におけるストアデータを保持するストアデータ保持回路をさらに有し、
前記命令保持回路は、前記リストベクトル命令におけるストアデータが前記ストアデータ保持回路に格納されたことを示すストアデータ格納完了情報を当該リストベクトル命令に対応付けてさらに保持し、
前記ベクトル命令制御回路において、
前記命令保持回路に、前記リストベクトル命令に対応付けられた最大アドレス及び最小アドレスが保持されており、かつ、前記ストアデータ格納完了情報が格納されていた場合に、当該リストベクトル命令について前記追い越し判定の対象とする
ことを特徴とする請求項６又は７に記載のリストベクトルの追い越し制御方法。
【請求項９】
前記命令保持回路は、前記アクセス先のメモリのアドレスとして、当該アドレスの一部のビットを保持し、
前記ベクトル命令制御回路において、
前記リストアドレス内のアドレスの一部のビットを比較して、当該一部のビットを前記最大アドレス及び前記最小アドレスとして抽出する
ことを特徴とする請求項６乃至８のいずれか１項に記載のリストベクトルの追い越し制御方法。
【請求項１０】
前記一部のビットは、上位の所定数のビットであることを特徴とする請求項９に記載のリストベクトルの追い越し制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル命令制御回路及びリストベクトルの追い越し制御方法に関し、特に、ベクトルスキャタ命令及びベクトルギャザー命令といったリスクベクトル命令の追い越し制御を行うためのベクトル命令制御回路及びリストベクトルの追い越し制御方法に関する。
【背景技術】
【０００２】
一般にメモリウォール問題と呼ばれるように、高いプロセッサ性能と低いメモリ性能とのギャップが計算機としての実効性能に大きな影響を及ぼしている。メモリ性能については、メモリロード命令のレイテンシが特に重要な要素である。
【０００３】
また、命令処理の高速化を目的としたベクトル処理方式においては、メモリアクセス命令の追い越し制御が行われている。メモリアクセス命令の追い越し制御は、メモリアクセス系の命令で先行するメモリストア系命令がアクセスする領域に、続いて発行されるメモリロード系命令のアクセス領域が重複していない場合、後続のメモリロード系命令のメモリアクセスを先に実行させることにより実現される。これにより、メモリアクセス性能の向上を図ることができる。
【０００４】
例えば、特許文献１では、ベクトル処理装置に関するメモリアクセス命令の追い越し制御を行う手法が開示されている。これは、ベクトルロード命令及びベクトルストア命令について、その命令で指定されるベースアドレス（先頭番地）、ディスタンス（要素間距離）、及びベクトル長（要素数）から当該命令がメモリアクセスする範囲を計算することにより、ベクトルロード命令、ベクトルストア命令相互間のアドレス依存関係（アドレスの重複）を判定し、アドレス依存関係が無い場合は、後続のベクトルロード命令を優先して実行するものである。
【０００５】
ここで、ベクトル処理方式で扱われるベクトル命令には、ベクトルロード命令及びベクトルストア命令の他に、ベクトルスキャタ命令及びベクトルギャザー命令といったリストベクトル命令がある。リストベクトル命令は、複数のアクセス先のアドレスを配列等により間接参照させるリストアドレスにより、アクセス先のアドレスを指定する。
【０００６】
特許文献１には、先行するベクトルストア命令を追い越す方法は記載されている。しかし、特許文献１には、先行するベクトルスキャタ命令を追い越すことはできないとの記載がある。これは、ベクトルスキャタ命令は、そのメモリアドレスにベクトルストア命令のような規則性がないため、当該命令がアクセスする範囲を計算することができず、後続のメモリアクセス命令とのアドレス依存関係を判定することができないからである。
【０００７】
一方、ベクトルスキャタ命令を追い越す方法については、特許文献２に開示される技術がある。特許文献２では、コンパイラを利用してベクトルスキャタ命令の先頭アドレス及び最終アドレスを特定している。これは、コンパイラは、ある配列をメモリに割り付ける際、割り付ける先頭アドレス及び最終アドレスを容易に知ることができるためである。そこで、コンパイラがベクトルスキャタ命令（およびベクトルギャザー命令）の前に、メモリ上に記憶しておいた当該先頭／最終アドレスをスカラレジスタに格納するロード命令を挿入する。そして、ハードウェアは、ベクトルスキャッタ命令実行時に、当該スカラレジスタに格納された当該先頭／最終アドレスを参照することで、当該ベクトルスキャッタ命令がアクセスするアドレス範囲を入手し、後続命令とのアドレス依存解析を行うという方法である。
【０００８】
また、上記と関連する技術として、特許文献３に開示されている技術がある。特許文献３には、コンパイラで配列を割り付けるアドレス範囲を判断する点は、特許文献２の例と同様である。特許文献３ではさらに、ベクトルスキャタ命令が対象とする配列と後続のベクトルロード命令が対象とする配列のアドレス依存解析をコンパイラで行い、その結果、追い越し可能であれば"追い越しビット"と定義される１ビットのフラグをベクトルスキャッタ命令の命令語中に設定する。ハードウェアは、ベクトルスキャタ命令を受け付けた際、命令中で指定された当該"追い越しビット"が点灯していたら、後続のベクトルロード命令は、無条件で先行ベクトルスキャタ命令を追い越して先にメモリアクセスするよう制御を行う。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２３５１３５号公報
【特許文献２】特開２００２−０３２３６１号公報
【特許文献３】特開２００２−３６６５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、特許文献１では、リストベクトルの追い越し制御を実現できない。そして、特許文献２及び３では、リストベクトルの追い越し制御を実現するには、メモリアクセス性能やプログラム処理速度が犠牲になってしまうという問題点があった。
【００１１】
具体的には、特許文献２にかかる方法には以下の問題点がある。まず、ベクトルスキャタ命令がアクセスするアドレス範囲を入手するためには、演算性能等が犠牲になる可能性が高くなる。その理由は、ベクトルスキャタ命令の１命令に対してスカラレジスタを２個消費するため、貴重な資源であるスカラレジスタの使用効率が低下するからである。
【００１２】
また、コンパイラは、ベクトルスキャタ命令の先頭／最終アドレスの認識できる精度が低くなる。その理由は、コンパイラが認識する先頭／最終アドレスは、配列をメモリに割り付ける際の先頭／最終アドレスであるため、当該配列を実際にベクトルスキャッタ命令でメモリへストアする際のアドレス範囲より広いアドレス範囲が指定されることになり得るからである。そのため、実際には追い越し可能なケースであっても、追い越し不可と判定されるケースがあり得る。
【００１３】
よって、特許文献２の実施例においては、コンパイラによりベクトルストア命令の先頭／最終アドレスを認識できるにも関わらず、ハードウェアにおいてベクトルストア命令実行時にアクセスする領域を計算する手段を備えている。
【００１４】
また、特許文献３では、特許文献２のようなスカラレジスタを使用することは無いため、特許文献２で発生するスカラレジスタの使用効率低下の問題は回避される。しかし、コンパイラにて常にアドレス依存関係が判別できる訳ではなく、あくまでも判別が可能な場合においてのみ"追い越しフラグ"を設定するものである。そして、特許文献３には、コンパイラで判別できない場合に、当該ビットを設定しない（０を設定）との記載もある。そのため、プログラム中の全てに適用できず、その効果も限定的である。また、特許文献３の実施例においても、ベクトルストア命令については、コンパイラで後続命令とのアドレス依存解析をおこなうのではなく、ハードウェアが命令実行時におこなうとの記載になっている。これは、コンパイラで判断するには限界があること示唆している。
【００１５】
本発明は、このような問題点を解決するためになされたものであり、メモリアクセスの性能及びプログラムの処理速度への影響を抑えた上で、リストベクトルの追い越し制御を実現するためのベクトル命令制御回路及びリストベクトルの追い越し制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の第１の態様にかかるベクトル命令制御回路は、外部から受け付けた複数の命令に関する情報を、アクセス先のメモリのアドレスを含めて命令単位に受け付け順に保持する命令保持回路と、前記受け付けた複数の命令のうち複数のアドレスの指定を含むリストアドレスを有するリストベクトル命令について、当該リストアドレス内のアドレスを比較して最大アドレス及び最小アドレスを抽出し、当該抽出された最大アドレス及び最小アドレスを当該リストベクトル命令に対応付けて、前記命令保持回路に格納するアドレス抽出回路と、前記命令保持回路に格納された最大アドレス及び最小アドレスに基づき、前記リストベクトル命令と、当該リストベクトル命令の後続命令との追い越し判定を行う追い越し判定回路と、
を備える。
【００１７】
本発明の第２の態様にかかるリストベクトルの追い越し制御方法は、複数の命令に関する情報を、アクセス先のメモリのアドレスを含めて命令単位に受け付け順に保持する命令保持回路を有するベクトル命令制御回路におけるリストベクトルの追い越し制御方法であって、前記ベクトル命令制御回路において、外部から複数のアドレスの指定を含むリストアドレスを有するリストベクトル命令を受け付け、前記リストアドレス内のアドレスを比較して最大アドレス及び最小アドレスを抽出し、前記抽出された最大アドレス及び最小アドレスを当該リストベクトル命令に対応付けて、前記命令保持回路に格納し、前記外部から前記リストベクトル命令の後続命令を受け付け、前記命令保持回路に格納された最大アドレス及び最小アドレスに基づき、前記リストベクトル命令と、前記後続命令との追い越し判定を行う。
【発明の効果】
【００１８】
本発明により、メモリアクセスの性能及びプログラムの処理速度への影響を抑えた上で、リストベクトルの追い越し制御を実現するためのベクトル命令制御回路及びリストベクトルの追い越し制御方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１にかかるベクトル命令制御回路の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるリストベクトルの追い越し制御方法の処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２にかかるベクトル処理装置の構成を示すブロック図である。
【図４】本発明の実施の形態２にかかる最大／最小アドレス抽出手段の構成を示すブロック図である。
【図５】本発明の実施の形態２にかかる命令保持手段の例を示す図である。
【発明を実施するための形態】
【００２０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２１】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるベクトル命令制御回路１００の構成を示すブロック図である。ベクトル命令制御回路１００は、外部からメモリへのアクセスを行う命令を受け付けて、具体的なアクセス先のアドレスに対するメモリアクセスリクエストを発行する回路である。特に、ベクトル命令制御回路１００は、ベクトルスキャタ命令及びベクトルギャザー命令といったリスクベクトル命令の追い越し制御を行う。ベクトル命令制御回路１００は、命令保持回路１０１と、アドレス抽出回路１０２と、追い越し判定回路１０３とを備える。
【００２２】
命令保持回路１０１は、外部から受け付けた複数の命令に関する情報を、アクセス先のメモリのアドレスを含めて命令単位に受け付け順に保持する。アドレス抽出回路１０２は、受け付けた複数の命令のうち複数のアドレスの指定を含むリストアドレスを有するリストベクトル命令について、当該リストアドレス内のアドレスを比較して最大アドレス及び最小アドレスを抽出し、当該抽出された最大アドレス及び最小アドレスを当該リストベクトル命令に対応付けて、命令保持回路１０１に格納する。追い越し判定回路１０３は、命令保持回路１０１に格納された最大アドレス及び最小アドレスに基づき、リストベクトル命令と、当該リストベクトル命令以外である当該リストベクトル命令の後続命令との追い越し判定を行う。
【００２３】
図２は、本発明の実施の形態１にかかるリストベクトルの追い越し制御方法の処理の流れを示すフローチャートである。まず、ベクトル命令制御回路１００は、外部からリストベクトル命令を受け付ける（Ｓ１１）。次に、アドレス抽出回路１０２は、リストアドレス内のアドレスを比較して、最大アドレス及び最小アドレスを抽出する（Ｓ１２）。そして、アドレス抽出回路１０２は、最大アドレス及び最小アドレスをリストベクトル命令に対応付けて命令保持回路１０１に格納する（Ｓ１３）。
【００２４】
続いて、ベクトル命令制御回路１００は、リストベクトル命令以外の後続命令を受け付ける（Ｓ１４）。そして、追い越し判定回路１０３は、最大アドレス及び最小アドレスに基づき、リストベクトル命令と後続命令の追い越し判定を行う（Ｓ１５）。
【００２５】
これにより、追い越し判定回路１０３は、後続命令におけるメモリのアクセス先のアドレスの範囲が、先行するリストベクトル命令における最大アドレスと最小アドレスの間と重なるか否かを判定することができる。そして、追い越し判定回路１０３は、先行するリストベクトル命令における最大アドレスと最小アドレスの間と重ならないと判定した場合、当該後続命令を先行するリストベクトル命令を追い越して、先に実行させることができる。
【００２６】
このように、本発明の実施の形態１では、リストアドレスにおけるアクセス先の不規則性に対して、アドレス抽出回路１０２というハードウェアによりリストアドレス内の各アドレスについての最大値及び最小値を抽出する。そのため、特許文献２のようなコンパイラによる最大アドレス及び最小アドレスの特定と比べて、正確かつ高速にリストベクトル命令のアクセス範囲を特定することができる。よって、本発明の実施の形態１により、メモリアクセスの性能及びプログラムの処理速度への影響を抑えた上で、リストベクトルの追い越し制御を実現することができる。
【００２７】
＜発明の実施の形態２＞
続いて、上述した実施の形態１の一実施例として本発明の実施の形態２について説明する。本発明の実施の形態２は、ベクトル処理装置及び当該ベクトル処理装置を用いたメモリアクセス命令の追い越し制御方法に関するものである。本発明の実施の形態２では、ハードウェアにてベクトルスキャタ命令及びベクトルギャザー命令のアクセス範囲を判定することにより、当該ベクトルスキャタ命令およびベクトルギャザー命令とその前後のメモリアクセス命令との追い越しを可能にすることを特徴とする。
【００２８】
本発明の実施の形態２に係るデータ処理装置は、その好ましい一実施の形態において、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｅｒ）向け中央演算処理装置などがあり、以下に本発明の一構成例を示す。
【００２９】
図３は、本発明の実施の形態２にかかるベクトル処理装置１０の構成を示すブロック図である。図３によると、本発明の実施の形態２にかかるベクトル処理装置１０は、命令発行部１と、ベクトル処理部２と、メモリアクセス処理部３とを備え、メモリ部４へのメモリアクセス命令を発行する。
【００３０】
命令発行部１は、命令の発行およびスカラ系処理を担うスカラ処理部である。命令発行部１は、スカラレジスタ群１１を備える。スカラレジスタ群１１は、命令発行部１がスカラ系命令を処理する際に用いるレジスタ群である。
【００３１】
ベクトル処理部２は、命令発行部１よりベクトル系命令を受け付け、ベクトル演算他ベクトル処理全般を担う。ベクトル処理部２は、ベクトルレジスタ群２１を備える。ベクトルレジスタ群２１は、ベクトル処理部２がベクトル系命令を処理する際に用いるレジスタ群である。例えば、ベクトルレジスタ群２１には、ベクトル系命令に含まれるリストアドレスやストアデータが格納される。
【００３２】
メモリアクセス処理部３は、命令発行部１よりメモリアクセス系命令を受け付け、メモリアクセス命令間の追い越し制御を行い、メモリ部４に対して具体的なアドレスを指定したメモリアクセスリクエストを発行する。
【００３３】
次に、メモリアクセス処理部３は、命令保持及び追い越し制御手段３０と、ＶＬＤ／ＶＳＴアクセス領域計算手段３１と、リストアドレス保持手段３２と、ストアデータ保持手段３３と、最大／最小アドレス抽出手段３４と、メモリロード／ストアリクエスト生成手段３５とを備える。
【００３４】
命令保持及び追い越し制御手段３０は、命令発行部１より発行されたメモリアクセス命令を受け付けて、保持する。併せて、命令保持及び追い越し制御手段３０は、それぞれのメモリアクセス命令のアクセス領域情報からメモリアクセス命令間の依存関係を解析し、命令発行順序を制御する。
【００３５】
ＶＬＤ／ＶＳＴアクセス領域計算手段３１は、ベクトルロード命令（図中はＶＬＤと表記）及びベクトルストア命令（図中はＶＳＴと表記）について、命令内で指定される先頭アドレス、ディスタンス及びベクトル長の情報より、当該命令がメモリアクセスする領域を計算する。
【００３６】
リストアドレス保持手段３２は、ベクトル処理部２よりベクトルギャザー命令及びベクトルスキャタ命令のリストアドレスを受け付け、保持する記憶装置である。
【００３７】
ストアデータ保持手段３３は、ベクトル処理部２よりベクトルストア命令及びベクトルスキャタ命令のストアデータを受け付け、保持する記憶装置である。
【００３８】
最大／最小アドレス抽出手段３４は、ベクトル処理部２より転送されるリストアドレスのアクセス領域を判定するため、転送されるリストアドレスの中から最小アドレスと最大アドレスを抽出する。
【００３９】
メモリロード／ストアリクエスト生成手段３５は、命令保持及び追い越し制御手段３０より発行された命令５９を受け付ける。メモリロード／ストアリクエスト生成手段３５は、当該命令がベクトルギャザー命令であれば、リストアドレス保持手段３２からリストアドレス６２の転送を受け付ける。メモリロード／ストアリクエスト生成手段３５は、当該命令がベクトルスキャタ命令であれば、リストアドレス保持手段３２からリストアドレス６２及びストアデータ保持手段３３からストアデータ６３の転送を受け付ける。メモリロード／ストアリクエスト生成手段３５は、当該命令がベクトルストア命令であれば、ストアデータ保持手段３３からストアデータ６３の転送を受け付ける。そして、メモリロード／ストアリクエスト生成手段３５は、転送された情報からメモリロードリクエスト又はメモリストアリクエストを生成して、メモリ部４へのリクエスト発行６４を行う。
【００４０】
続いて、図３を参照してベクトル処理装置１０の動作について説明する。まず、命令発行部１は、メモリ部４からフェッチした命令を解読し、その命令種に応じて命令をベクトル処理部２又はメモリアクセス処理部３に発行する。具体的には、命令発行部１は、解読した命令種がスカラ系の命令を示す場合、自己でスカラ系処理を行った後に、メモリアクセス処理部３に対してアクセス先のアドレスを指定したメモリアクセス命令を発行（命令発行５１及び命令５２）する。また、命令発行部１は、解読した命令種がベクトルロード命令又はベクトルストア命令を示す場合、メモリアクセス処理部３に対してアクセス先を示す情報含むベクトルロード命令又はベクトルストア命令をメモリアクセス命令として発行（命令発行５１）する。また、命令発行部１は、解読した命令種がベクトルスキャタ命令又はベクトルロード命令を示す場合、ベクトル処理部２に対してベクトルスキャタ命令又はベクトルロード命令を発行（命令発行５４）する。また、命令発行部１は、発行するそれぞれの命令に、命令の識別ができるよう命令ＩＤと呼ぶ識別子を付与した上で発行するものとする。
【００４１】
ここで、命令発行部１からベクトル処理部２へ発行される命令は、ベクトル処理部２の内部に有するベクトルレジスタに格納されたデータに対して様々な演算処理を施す各種ベクトル演算命令の他、ベクトルストア命令、ベクトルスキャタ命令及びベクトルギャザー命令と呼ばれるメモリアクセス命令がある。
【００４２】
ベクトルストア命令とは、ベクトルレジスタに格納されたデータをメモリに書き込む命令である。ベクトルスキャタ命令とは、ベクトルレジスタに格納されたデータを別のベクトルレジスタに格納されたリストアドレスで指定されるメモリ番地へ書き込む命令である。ベクトルギャザー命令とは、ベクトルレジスタに格納されたリストアドレスで指定されるメモリ番地からベクトルレジスタにデータを読み出す命令である。
【００４３】
ベクトル処理部２は、ベクトルストア命令を受け付けた場合、命令内で指定されるベクトルレジスタからストアデータを読み出し、メモリアクセス処理部３へ転送する（ストアデータ転送５６）。ここで、ベクトル処理部２は、ストアデータの他、その制御情報として転送データが有効であることを示すValidビット、１命令分のストアデータの最初／最後の転送であることを示すＳｔａｒｔ／Ｅｎｄビット、どの命令に対するストアデータかを示す命令ＩＤを付与する。そして、転送されたストアデータは、メモリアクセス処理部３内のストアデータ保持手段３３で保持される。
【００４４】
ベクトル処理部２は、ベクトルギャザー命令を受け付けた場合、命令内で指定されるベクトルレジスタからリストアドレスを読み出し、メモリアクセス処理部３へ転送する（リストアドレス転送５５）。ここで、ベクトル処理部２は、リストアドレスの他、その制御情報として転送データが有効であることを示すＶａｌｉｄビット、１命令分のストアデータの最初／最後の転送であることを示すＳｔａｒｔ／Ｅｎｄビット、どの命令に対するストアデータかを示す命令ＩＤを付与する。そして、転送されたリストアドレスは、メモリアクセス処理部３内の、リストアドレス保持手段３２で保持される。
【００４５】
ベクトル処理部２は、ベクトルスキャタ命令を受け付けた場合、命令内で指定される２つのベクトルレジスタから、それぞれリストアドレス／ストアデータを読み出し、それぞれメモリアクセス処理部３へ転送する（リストアドレス転送５５及びストアデータ転送５６）。ただし、ベクトル処理部２の内部処理の状況によって、それぞれの転送可能なタイミングは異なるため、リストアドレス転送５５の転送タイミングとストアデータ転送５６の転送タイミングは非同期である。リストアドレス／ストアデータの他、その制御情報として転送データが有効であることを示すＶａｌｉｄビット、１命令分のストアデータの最初／最後の転送であることを示すＳｔａｒｔ／Ｅｎｄビット、どの命令に対するリストアドレス／ストアデータかを示す命令ＩＤを付与する。そして、転送されたリストアドレス及びストアデータは、それぞれメモリアクセス処理部３内の、リストアドレス保持手段３２およびストアデータ保持手段３３で保持される。
【００４６】
また、ベクトル処理部２からメモリアクセス処理部３へリストアドレスが転送された場合、リストアドレス保持手段３２の他、最大／最小アドレス抽出手段３４へも当該リストアドレスが転送される。
【００４７】
最大／最小アドレス抽出手段３４は、受け取った１命令分のリストアドレス群の中から、アドレス値が最大のアドレスと最小のアドレスを抽出し、当該最大／最小アドレスを命令保持及び追い越し制御手段３０へ転送する（最大／最小アドレス５７）。一般に、ベクトル処理部２は、内部に複数のベクトルパイプを有し、各パイプが並列動作しており、同時に複数のリストアドレスが転送されてくる。その中から最大／最小リストアドレスを抽出する。
【００４８】
図４は、本発明の実施の形態２にかかる最大／最小アドレス抽出手段３４の構成を示すブロック図である。最大／最小アドレス抽出手段３４は、選択回路３４１と、フリップフロップＦ１１〜Ｆ１８と、最小アドレス選択回路群３４３と、最小アドレス選択回路３４４と、セレクタ３４５と、フリップフロップＦ２１〜２６と、論理積回路３４６とを備える。
【００４９】
ここで、フリップフロップＦ１１及びＦ２１には、上述したＶａｌｉｄビット、フリップフロップＦ１２及びＦ２２には、上述したＳｔａｒｔビット、フリップフロップＦ１３及びＦ２３には、上述したＥｎｄビット、フリップフロップＦ１４及びＦ２４には、上述した命令ＩＤが格納される。また、フリップフロップＦ１５〜Ｆ１８には、リストアドレスに含まれるアドレスのうち４個が保持される。
【００５０】
ここで、フリップフロップＦ１５〜Ｆ１８は、アドレス保持回路３４２ということができる。尚、４個は一例であり、これに限定されない。そのため、リストアドレスに、Ｎ個（Ｎは、２以上の自然数）のアドレスの指定が含まれる場合、アドレス保持回路３４２は、アドレスを保持するためのＭ個（Ｍは、２以上かつＮ未満の自然数）のフリップフロップを備えればよい。
【００５１】
また、フリップフロップＦ２５には、最大アドレスが格納される。フリップフロップＦ２６は、最小アドレスが格納される。そのため、フリップフロップＦ２５及びＦ２６は、最大最小アドレス保持回路ということができる。
【００５２】
選択回路３４１は、ベクトル処理部２からリストアドレスを受け付け、リストアドレスから４個ごとにアドレスを選択してアドレス保持回路３４２に格納する。併せて、選択回路３４１は、フリップフロップＦ１１〜Ｆ１４に値を格納する。このとき、選択回路３４１は、リストアドレス内の最初の４個を選択した場合、フリップフロップＦ１２にＳｔａｒｔビットを有効にして格納する。また、選択回路３４１は、リストアドレス内の２番目以降の４個を選択した場合、フリップフロップＦ１２にＳｔａｒｔビットを無効にして格納する。また、選択回路３４１は、リストアドレスからアドレスを選択した際に、未選択のアドレスがなくなった場合、フリップフロップＦ１３にＥｎｄビットを有効にして格納する。また、選択回路３４１は、同一のリストアドレス内からアドレスを選択する間は、フリップフロップＦ１４に同一の命令ＩＤを格納する。
【００５３】
最小アドレス選択回路群３４３は、アドレス保持回路３４２に保持された４個のアドレスのうち最小値を選択する。最小アドレス選択回路群３４３は、最小アドレス選択回路３４３１〜３４３３を含む。最小アドレス選択回路３４３１は、フリップフロップＦ１５に格納されたアドレス０とフリップフロップＦ１６に格納されたアドレス１とを比較し、より小さい値を選択する。最小アドレス選択回路３４３２は、フリップフロップＦ１７に格納されたアドレス２とフリップフロップＦ１８に格納されたアドレス３とを比較し、より小さい値を選択する。そして、最小アドレス選択回路３４３３は、最小アドレス選択回路３４３１により選択された最小値と、最小アドレス選択回路３４３２により選択された最小値とを比較し、より小さい値を選択する。
【００５４】
セレクタ３４５は、フリップフロップＦ１２に格納されたＳｔａｒｔビットが有効である場合、最小アドレス選択回路群３４３により選択された最小値を最小アドレスとしてフリップフロップＦ２５に格納する。
【００５５】
最小アドレス選択回路３４４は、最小アドレス選択回路群３４３により選択された最小値と、フリップフロップＦ２５に格納された最小アドレスとを比較して最小値によりフリップフロップＦ２５を更新する。
【００５６】
尚、図４では、最小アドレス選択回路群３４３、最小アドレス選択回路３４４、セレクタ３４５に対応する構成である最大アドレス選択回路群、最大アドレス選択回路、セレクタについては、図示を省略する。最大アドレス選択回路群は、アドレス保持回路３４２に保持された４個のアドレスのうち最大値を選択する。また、最大アドレス選択回路及びセレクタを用いて、最大アドレス選択回路群により選択された最大値と、フリップフロップＦ２６に格納された最大アドレスとを比較して最大値によりフリップフロップＦ２６を更新する。
【００５７】
そのため、最小アドレス選択回路群３４３及び最大アドレス選択回路群は、アドレス保持回路３４２に保持された４個のアドレスのうち最大値及び最小値を選択する第１の最大最小アドレス選択回路である。また、最小アドレス選択回路３４４及び最大アドレス選択回路は、フリップフロップＦ２６に保持された最大アドレスと、最大アドレス選択回路群により選択された最大値とのうち最大値を最大アドレスとして選択し、フリップフロップＦ２５に保持された最小アドレスと、最小アドレス選択回路群３４３により選択された最小値とのうち最小値を最小アドレスとして選択し、当該選択された最大アドレス及び最小アドレスによりフリップフロップＦ２６及びＦ２５を更新する第２の最大最小アドレス選択回路である。
【００５８】
また、図４のステージ１及びステージ２は、各クロックサイクルで保持される情報を示している。以下では、最大／最小アドレス抽出手段３４における処理の流れを説明する。選択回路３４１は、ベクトル処理部２から転送されたリストアドレス及びその制御情報（Ｖａｌｉｄ、Ｓｔａｒｔ、Ｅｎｄ、命令ＩＤ）を、ステージ１のフリップフロップＦ１１〜Ｆ１８に格納する。その後、ステージ１にて、最小アドレス選択回路群３４３及び最大アドレス選択回路群は、図４のアドレス０〜３について大小比較を繰り返すことにより、最終的に１つの最小及び最大アドレスを選択する。ここで、ステージ１のＳｔａｒｔビットが点灯している場合、１命令のリストアドレス転送の初回を示しており、セレクタ３４５は、上記で選択された最小アドレス及び最大アドレスをステージ２のフリップフロップＦ２５及びＦ２６に格納する。ステージ１のＳｔａｒｔビットが消灯している場合、１命令のリストアドレス転送の初回以外であることを示しており、この場合はステージ２のフリップフロップＦ２５及びＦ２６に格納されている最小アドレス及び最大アドレスと、ステージ１で選択された最小アドレス及び最大アドレスのとの間でさらに大小比較を行った上で、ステージ２のフリップフロップＦ２５及びＦ２６に格納する。最終的に１命令のリストアドレス転送が完了し、ステージ２のフリップフロップＦ２３に格納されるＥｎｄビットが点灯した時点で、最小アドレス、最大アドレスフリップフロップフリップフロップＦ２５及びＦ２６に格納されている最小アドレス及び最大アドレスを命令保持及び追い越し制御手段３０へと転送する。
【００５９】
また、命令発行部１からメモリアクセス処理部３へ発行される命令はメモリアクセスに関する命令全般であり、上述のベクトルストア命令、ベクトルスキャタ命令、ベクトルギャザー命令の他、ベクトルロード命令、スカラロード命令、スカラストア命令がある。ここで、ベクトルロード命令とは、命令発行部１から指定される先頭アドレス、ディスタンス（要素間距離）、ベクトル長（要素数）から計算されるアドレスで指定されるメモリ番地からベクトルレジスタへ読み出す命令である。スカラロード命令とは、命令処理部１に有するスカラレジスタへのデータ格納を行う命令である。逆に、スカラストア命令は、スカラレジスタに格納されたデータをメモリに書き込む命令である。
【００６０】
ＶＬＤ／ＶＳＴアクセス領域計算手段３１は、命令発行部１から発行されたベクトルロード命令及びベクトルストア命令について、命令内で指定される先頭アドレス、ディスタンス（要素間距離）及びベクトル長（要素数）、要素長の情報から当該命令がアクセスする領域を計算し、その結果得られるアクセス領域の最小アドレス及び最大アドレスを、命令保持及び追い越し制御手段３０へ出力する（最大／最小アドレス５３）。アクセス領域は、例えば、以下の（１）式により計算できる。
｛先頭アドレス＋（ベクトル長−１）×ディスタンス＋要素長｝      ・・・（１）
【００６１】
また、スカラロード命令及びスカラストア命令の場合は、ベクトル長（要素数）＝１として計算することで、同様の計算でアクセス領域が求まる。
【００６２】
また、命令発行部１から発行された命令は、命令保持及び追い越し手段３０にて一旦保持され、当該命令のアドレス、さらにメモリへストアする命令であればストアデータの準備が整うまで待機する。
【００６３】
ここで、スカラロード命令及びスカラストア命令については、命令の内部でメモリへのアドレスが指定され、スカラストア命令はさらにストアデータが指示されているため、命令保持及び追い越し手段３０に格納された時点で全ての準備が整っていることになる。
【００６４】
また、ベクトルロード命令についても、先頭アドレス、ディスタンス（要素間距離）、ベクトル長（要素数）が命令で指定されているため、命令保持及び追い越し手段３０に格納された時点で各ベクトル要素のアドレスを計算する準備が整っていることになる。
【００６５】
一方、ベクトルストア命令、ベクトルギャザー命令及びベクトルスキャタ命令の３命令については、ベクトル処理部２が当該命令を受け付けた後、ベクトルレジスタからリストアドレス及び／又はストアデータがメモリアクセス処理部３へ転送され、それぞれリストアドレス保持手段３２及び／又はストアデータ保持手段３３に格納されることで準備が整うことになる。よって、当該３命令については、他の命令に比べて命令保持及び追い越し手段３０で待機する時間が長く、特にベクトルスキャタ命令については、リストアドレスとストアデータの両方を待たなければならないため特に待ち時間が長くなる傾向にある。
【００６６】
次に、命令保持及び追い越し手段３０で保持する情報の例を、図５を用いて説明する。つまり、図５は、本発明の実施の形態２にかかる命令保持手段の例を示す図である。命令保持及び追い越し手段３０は、命令間の追い越しを行うため、少なくとも２命令を保持する必要がある。図５では、Ｎ個の命令を保持する例としてＮ個のエントリを持つバッファとして記載している。Ｎは、各装置において、命令を保持すべき数、必要な追い越し数等、要求性能に応じで決定される数である。このＮエントリのバッファは、命令保持及び追い越し制御手段３０が命令を受け付けた順に若番エントリから登録する一方、命令の出力は命令間の追い越しをおこなうため入力順とは異なり、任意のエントリ番号から命令を出力できるバッファとして制御を行う。任意のエントリから出力されるので、ある時点では、各エントリの登録が歯抜け状態になる（例えばエントリ２が発行された直後は、エントリ２は登録がなく、エントリ０，１，３，４・・・・は登録があるという状態）。そこで、歯抜けの状態になったら若番エントリへ詰める制御も行う。
【００６７】
１エントリに登録する情報は、図５に示すとおりであるが個々の意味は以下に説明する。命令登録Ｖは、エントリに、後述の命令種別、命令ＩＤを登録したことを示す。例えば、命令発行部１から命令を受け付けると当該ビットを点灯し、同エントリから命令を発行すると消灯する。命令種別は、ベクトルロード命令、ベクトルスキャタ命令等、命令種類を示す。命令種別には、例えば、オペコードを登録する。命令ＩＤは、命令の識別子を示す。命令ＩＤには、例えば、命令発行部１から発行される命令に付随する命令ＩＤが登録される。命令種別が同じ場合、この命令ＩＤにより区別できる。アクセス領域登録Ｖは、最小アドレス及び最大アドレスで指定されるアクセス領域が登録されていることを示す。同エントリから命令を発行すると当該Ｖビットも消灯する。ベクトルギャザー命令、ベクトルスキャタ命令の場合は、当該命令のリストアドレスがリストアドレス保持手段３２に転送完了したことも意味する。
【００６８】
最大アドレス及び最小アドレスには、命令のアクセス領域を示す最大アドレス及び最小アドレスが登録される。ストアデータ転送完了Ｖは、ベクトルストア命令及びベクトルスキャタ命令の場合に、当該命令のストアデータが、ストアデータ保持手段３３に転送完了したことを示す。例えば、命令保持及び追い越し制御手段３０は、ベクトル処理部２からストアデータ転送完了指示５８を受け付けたときに点灯し、当該命令を発行したら消灯する。
【００６９】
以上の情報から、命令保持及び追い越し手段３０から発行可能な命令を判定する。そして、あるエントリＭに登録された命令が、発行可能か否かは、
（１）自分の発行準備が整っている
かつ、
（２）自分より前にいる全ての命令とアドレス依存関係が無い
ことを満たすことにより判定される。
【００７０】
ここで、「（１）自分の発行準備が整っている」とは、自命令のアドレスとストア命令であれば、さらにストアデータが準備できている状態である。例えば、発行準備が完了すると"エントリＭの発行準備完了フラグ"に"１"が点灯することにより、（１）の条件を満たすことを示すものとする。ここで、"エントリＭの発行準備完了フラグ"は、以下の（２）式で表すことができる。
エントリＭの発行準備完了フラグ＝（エントリＭの命令登録Ｖ）＊（エントリＭのアクセス領域登録Ｖ）＊（エントリＭのストアデータ転送完了Ｖ）      ・・・（２）
【００７１】
次に、「（２）自分より前にいる全ての命令とアドレス依存関係が無い」については、自命令の最大／最小アドレスと、先行命令の最大／最小アドレスとの大小比較を行うことで判定する。例えば、自命令（エントリＭ）と先行命令（エントリＭ−１）とのアドレス依存関係が無いこと場合に、"エントリＭとエントリＭ−１の依存関係フラグ"に"１"を点灯する。一方、アドレス依存関係がある場合に"エントリＭとエントリＭ−１の依存関係フラグ"に"０"を点灯する。"エントリＭとエントリＭ−１の依存関係フラグ"は、以下の（３）式で表すことができる。
【００７２】
エントリＭとエントリＭ−１の依存関係フラグ＝（エントリＭ−１の命令登録Ｖ）＊（エントリＭ−１のアクセス領域登録Ｖ）＊（（エントリＭの最大アドレス＜エントリＭ−１の最小アドレス）｜（エントリＭの最小アドレス＞エントリＭ−１の最大アドレス））｜（！エントリＭ−１の命令登録Ｖ）      ・・・（３）
【００７３】
ここで、（３）式の最右項は、エントリＭ−１に命令の登録が無い場合に、アドレス依存関係無しとみなすためのものである。
【００７４】
以上の判定結果を用いて、あるエントリＭに登録された命令の発行可能条件は、以下の（４）式にて表される。"エントリＭの発行可能条件"は、発行可能場合に"１"が点灯する。
【００７５】
エントリＭの発行可能条件＝  エントリＭの発行準備完了フラグ＆
エントリＭとエントリＭ−１の依存関係フラグ＆
エントリＭとエントリＭ−２の依存関係フラグ＆
エントリＭとエントリＭ−３の依存関係フラグ＆
・
・
・
エントリＭとエントリ２の依存関係フラグ＆
エントリＭとエントリ１の依存関係フラグ＆
エントリＭとエントリ０の依存関係フラグ      ・・・（４）
【００７６】
以上の判定により、あるエントリに登録されている命令の発行可能条件が整うと"１"が点灯、それ以外は"０"となる。
【００７７】
命令保持及び追い越し手段３０は、発行可能条件が点灯した命令を、メモリロード／ストアリクエスト生成手段３５に送出する。
【００７８】
複数エントリの命令の発行可能条件が同時に点灯する場合もあり得るが、その場合は複数の発行可能命令の中から１命令を選抜したうえでメモリロード／ストアリクエスト生成手段３５に送出する。その選抜方法は、古い命令を優先する先入先出方式やストア系命令よりもロード系命令を優先させるロード優先方式など、様々な方法が考えられる。
【００７９】
また、ベクトルギャザー命令及びベクトルスキャタ命令の場合は、メモリロード／ストアリクエスト生成手段３５への命令５９を送出すると同時に、リストアドレス保持手段３２へリストアドレス転送指示６０を送出する。また、ベクトルストア命令及びベクトルスキャタ命令の場合は、ストアデータ保持手段３３へストアデータ転送指示６１を送出する。リストアドレス転送指示６０及びストアデータ転送指示６１により命令ＩＤも通知する。リストアドレス保持手段３２は、リストアドレス転送指示６０を受けると、通知された命令ＩＤから当該命令のリストアドレス６２を即座にメモリロード／ストアリクエスト生成手段３５に転送する。
【００８０】
また、ストアデータ保持手段３３は、ストアデータ転送指示６１を受けると、通知された命令ＩＤから当該命令のストアデータ６３を即座にメモリロード／ストアリクエスト生成手段３５に転送する。
【００８１】
メモリロード／ストアリクエスト生成手段３５は、命令保持及び追い越し手段３０から命令を受け付けると、メモリ部４向けのリクエストを生成する。ベクトルロード命令、ベクトルストア命令、ベクトルギャザー命令、ベクトルスキャタ命令の各命令は、１命令で複数のメモリ番地へアクセスをおこなう必要があり、メモリロード／ストアリクエスト生成手段３５にて、１つの命令から複数のメモリロード／ストアリクエストに分解する。
【００８２】
リクエストは、メモリへのロード／ストアなど種類を識別するためのリクエストコマンド及びアクセスするアドレス又はストア系命令の場合はストアデータを少なくとも含むものである。
【００８３】
その際、ベクトルギャザー命令及びベクトルスキャタ命令の場合は、リストアドレス保持手段３２から転送されたリストアドレス６２を、また、ベクトルストア命令及びベクトルスキャタ命令の場合は、ストアデータ保持手段３３から転送されたストアデータ６３を用いて、それぞれのリクエストを生成する。
【００８４】
また、ベクトルロード命令及びベクトルストア命令の場合は、当該命令がアクセスするアドレスは、メモリロード／ストアリクエスト生成手段３５から送出される命令内にて、先頭アドレス、ディスタンス（要素間距離）及びベクトル長（要素数）の形で指示されるため、これら情報により各要素のアドレスを以下の（５）式のように算出する。
【００８５】
要素番号０のアドレス＝先頭アドレス
要素番号１のアドレス＝先頭アドレス＋ディスタンス×１
要素番号２のアドレス＝先頭アドレス＋ディスタンス×２
・
・
・
要素番号Ａのアドレス＝先頭アドレス＋ディスタンス×Ａ      ・・・（５）
【００８６】
メモリロード／ストアリクエスト生成手段３５は、生成したリクエストをメモリ部４へ発行する（リクエスト発行６４）。
【００８７】
本発明の実施の形態２により、以下の効果がある。
（１）メモリアクセス性能を向上させる。
（２）ソフトウェア（コンパイラ）への負担を無くす。
【００８８】
本発明の実施の形態２により、リストアドレスの転送が完了したが、ストアデータの転送を待っている状態でベクトルスキャタ命令の実行を保留している間、後続命令は当該ベクトルスキャタ命令とのアドレス依存判定をおこなった上で、当該ベクトルスキャタ命令を追い越して実行することができる。
【００８９】
また、リストアドレスの転送が完了したベクトルギャザー命令は、ストアデータ待ちで待機中の先行するベクトルストア命令またはベクトルスキャタ命令とのアドレス依存判定をおこなった上で追い越して実行することができる。
【００９０】
さらに、そのアドレス依存判定はハードウェアが実行時に実際のアドレスを用いるため、精度の高いアドレス依存チェックが可能となる。特許文献２では、追い越し可能とソフトウェア（コンパイラ）が確実に認識できる場合にのみ、追い越しを実施するというものであったのに対し、本発明の実施の形態２のハードウェアによる精度の高いアドレス依存チェックにより、追い越し可能なケースが増加し、その結果メモリアクセス性能を高めることが可能である。
【００９１】
また、上述の通り、追い越し可否判定を全てハードウェアで実現しているため、ソフトウェア（コンパイラ）はアドレスを意識する必要が無くなり、特許文献２及び３にて説明したような負担が一切なくなる。
【００９２】
尚、本発明の実施の形態２は、次のように言い換えることもできる。本発明の実施の形態２にかかるベクトル処理装置は、先行するベクトルスキャタ命令と後続のロード命令との追い越し制御をおこなうベクトル処理装置である。そして、ベクトルスキャタ命令実行時に、実際にアクセスするアドレスから当該命令がアクセスする領域を、ハードウェアにて判定する機能を有する。当該機能により判定されたアクセス領域を用いて後続ロード命令とのアドレス依存解析を行い、その結果アドレス依存が無ければ後続ロード命令を優先して実行する手段を有するものである。
【００９３】
さらに、本発明の実施の形態２にかかるベクトル処理装置は、リストベクトル命令におけるストアデータを保持するストアデータ保持回路をさらに備え、命令保持回路は、リストベクトル命令におけるストアデータがストアデータ保持回路に格納されたことを示すストアデータ格納完了情報を当該リストベクトル命令に対応付けてさらに保持し、追い越し判定回路は、前記命令保持回路に、前記リストベクトル命令に対応付けられた最大アドレス及び最小アドレスが保持されており、かつ、前記ストアデータ格納完了情報が格納されていた場合に、当該リストベクトル命令について前記追い越し判定の対象とする。
【００９４】
また、本発明の実施の形態２にかかるリストベクトルの追い越し制御方法は、次のように言い換えることもできる。すなわち、リストアドレスには、Ｎ個（Ｎは、２以上の自然数）のアドレスの指定を含み、前記ベクトル命令制御回路は、前記最大アドレス及び前記最小アドレスを保持する最大最小アドレス保持回路をさらに有し、前記ベクトル命令制御回路において、前記リストアドレスからＭ個（Ｍは、２以上かつＮ未満の自然数）のアドレスを第１のグループとして選択し、前記第１のグループのうち最大値及び最小値を第１の最大アドレス及び第１の最小アドレスとして選択し、前記選択された第１の最大アドレス及び第１の最小アドレスを前記最大最小アドレス保持回路へ格納し、前記リストアドレスから前記第１のグループ以外のＭ個以内のアドレスを第２のグループとして選択し、前記第２のグループのうち最大値及び最小値を第２の最大アドレス及び第２の最小アドレスとして選択し、前記第１の最大アドレスと前記第２の最大アドレスとのうち最大値を前記リストベクトル命令における最大アドレスとして抽出して、当該最大アドレスにより前記最大最小アドレス保持回路を更新し、前記第１の最小アドレスと前記第２の最小アドレスとのうち最小値を前記リストベクトル命令における最小アドレスとして抽出して、当該最小アドレスにより前記最大最小アドレス保持回路を更新する。
【００９５】
＜発明の実施の形態３＞
続いて、本発明の実施の形態３では、上述した実施の形態２に改良を加えて、ハードウェア量の削減を行うものである。本発明の実施の形態３では、命令保持回路は、アクセス先のメモリのアドレスとして、当該アドレスの一部のビットを保持し、アドレス抽出回路は、リストアドレス内のアドレスの一部のビットを比較して、当該一部のビットを最大アドレス及び最小アドレスとして抽出する。これにより、比較対象にビット幅を減少し、高速な処理を実現できる。また、最大／最小アドレスの下位ビットを参照しないことにより、ハードウェア量の削減を実現することができる。特に、一部のビットは、上位の所定数のビットであることが望ましい。例えば、アドレスの下位８ビットを参照しないことで、図５に示す命令保持手段における（最大アドレス側の８ビット＋最小アドレス側の８ビット）×Ｎエントリ＝１６×Ｎビットのフリップフロップ削減が可能である。さらに、図４に示す最小アドレス選択回路３４３１〜３４３３及び最小アドレス選択回路３４４の比較対象ビットを８ビット削減することができ、ハードウェアを削減可能である。ただし、８ビットを削減することにより、６４Ｂ境界以下が無視され、アドレス依存関係の分解能が低下するため、ハードウェア量と性能とのトレードオフがある。
【００９６】
＜その他の発明の実施の形態＞
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００９７】
１００  ベクトル命令制御回路
１０１  命令保持回路
１０２  アドレス抽出回路
１０３  追い越し判定回路
１０  ベクトル処理装置
１  命令発行部
１１  スカラレジスタ群
２  ベクトル処理部
２１  ベクトルレジスタ群
３  メモリアクセス処理部
３０  命令保持及び追い越し制御手段
３１  ＶＬＤ／ＶＳＴアクセス領域計算手段
３２  リストアドレス保持手段
３３  ストアデータ保持手段
３４  最大／最小アドレス抽出手段
３５  メモリロード／ストアリクエスト生成手段
４  メモリ部
５１  命令発行
５２  命令
５３  最大／最小アドレス
５４  命令発行
５５  リストアドレス転送
５６  ストアデータ転送
５７  最大／最小アドレス
５８  ストアデータ転送完了指示
５９  命令
６０  リストアドレス転送指示
６１  ストアデータ転送指示
６２  リストアドレス
６３  ストアデータ
６４  リクエスト発行
３４１  選択回路
３４２  アドレス保持回路
３４３  最小アドレス選択回路群
３４３１  最小アドレス選択回路
３４３２  最小アドレス選択回路
３４３３  最小アドレス選択回路
３４４  最小アドレス選択回路
３４５  セレクタ
３４６  論理積回路
Ｆ１１  フリップフロップ
Ｆ１２  フリップフロップ
Ｆ１３  フリップフロップ
Ｆ１４  フリップフロップ
Ｆ１５  フリップフロップ
Ｆ１６  フリップフロップ
Ｆ１７  フリップフロップ
Ｆ１８  フリップフロップ
Ｆ２１  フリップフロップ
Ｆ２２  フリップフロップ
Ｆ２３  フリップフロップ
Ｆ２４  フリップフロップ
Ｆ２５  フリップフロップ
Ｆ２６  フリップフロップ
【図１】
0005630281.tif 000002
【図２】
0005630281.tif 000003
【図３】
0005630281.tif 000004
【図４】
0005630281.tif 000005
【図５】
0005630281.tif 000006