(57)【要約】【課題】  追い越し処理が行われる頻度を向上し、メモリアクセス性能を向上する。【解決手段】  ベクトルプロセッサ１０００は、ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求めるエレメントチェック部１２３と、ロード命令の、ロード命令に先行するストア命令に対する追い越し判定を、エレメントチェック結果に基づいて行う追い越し判定部１２２とを備える。【選択図】      図５
2015156112.tif 000002
【特許請求の範囲】
【請求項１】
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求めるエレメントチェック部と、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う追い越し判定部とを備えるベクトルプロセッサ。
【請求項２】
前記ロード命令あるいは前記ストア命令は、リストアドレスによるアクセスを行う命令であり、
前記エレメントチェック部は、前記リストアドレスの最下位桁から所定桁数のビットの状態を求めることにより、前記エレメントチェック結果を求める請求項１に記載のベクトルプロセッサ。
【請求項３】
前記ロード命令あるいは前記ストア命令は、特定のアドレスから特定の間隔でアクセスを行う命令であり、
前記エレメントチェック部は、前記特定のアドレスの最下位桁から所定桁数のビットの状態と、前記特定の間隔の値の最下位桁から所定桁数のビットの状態に基づいて、前記エレメントチェック結果を求める請求項１または２に記載のベクトルプロセッサ。
【請求項４】
前記所定桁数は１であり、
前記エレメントチェック部は、前記ロード命令あるいは前記ストア命令がアクセスするメモリのアドレスが奇数番地もしくは偶数番地のみかどうかを前記エレメントチェック結果として求める請求項１乃至３のいずれかに記載のベクトルプロセッサ。
【請求項５】
請求項１乃至４のいずれかに記載のベクトルプロセッサを備える情報処理装置。
【請求項６】
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求め、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う追い越し制御方法。
【請求項７】
前記ロード命令あるいは前記ストア命令は、リストアドレスによるアクセスを行う命令であり、
前記リストアドレスの最下位桁から所定桁数のビットの状態を求めることにより、前記エレメントチェック結果を求める請求項６に記載の追い越し制御方法。
【請求項８】
前記ロード命令あるいは前記ストア命令は、特定のアドレスから特定の間隔でアクセスを行う命令であり、
前記特定のアドレスの最下位桁から所定桁数のビットの状態と、前記特定の間隔の値の最下位桁から所定桁数のビットの状態に基づいて、前記エレメントチェック結果を求める請求項６または７に記載の追い越し制御方法。
【請求項９】
前記所定桁数は１であり、
前記ロード命令あるいは前記ストア命令がアクセスするメモリのアドレスが奇数番地もしくは偶数番地のみかどうかをエレメントチェック結果として求める請求項６乃至８のいずれかに記載の追い越し制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのメモリアクセスを高速化するための追い越し処理に関する。
【背景技術】
【０００２】
コンピュータがメモリをアクセスする際、一般に、ロード命令よりもストア命令の方が低速である。高速なロード命令が低速なストア命令を待ち合わせる状態が発生すると、コンピュータの全体的なメモリアクセス性能が低下する。
【０００３】
コンピュータの命令処理を高速化する方法として、ベクトル処理方式が知られている。ベクトル命令によるメモリアクセスを行う際、ロード命令がストア命令を待ち合わせることによる性能低下を防止するため、追い越し処理が行われている。追い越し処理は、アクセスするアドレスが重複しない場合に、先行するストア命令よりも後続のロード命令を先に実行することにより行われる。
【０００４】
特許文献１記載のベクトル命令制御回路は、リストアドレスを有するリストベクトル命令について、リストアドレス内の最大アドレスおよび最小アドレスに基づいてアクセスするアドレスの重複を判定する。このことにより、特許文献１記載のベクトル命令制御回路は、リストアドレス内の全アドレスについて判定することなく、追い越し処理の判定を高速に行う。
【０００５】
特許技術文献２記載のベクトル型計算機は、ベクトルギャザー命令またはベクトルスキャッター命令において、ベクトル要素の最大値および最小値に基づいて命令のアクセス範囲を求める。そして、特許技術文献２記載のベクトル型計算機は、求められたアクセス範囲に基づいて追い越し処理の判定を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１５０６３４号公報
【特許文献２】特開２０１１−１１８７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１記載のベクトル命令制御回路は、リストアドレスが連続したアドレスではない場合、アドレスが重複していないにもかかわらず追い越し処理ができないと判定される可能性があるという問題点がある。すなわち、追い越し処理の対象となる命令が、リストアドレス内の最大アドレスと最小アドレスの間のアドレスのメモリにアクセスする場合、アクセスするアドレスが重複していなくとも、追い越し処理ができないと判定される。
【０００８】
上述した特許文献２記載のベクトル型計算機も、ベクトルギャザー命令またはベクトルスキャッター命令がアクセスするアドレスが連続していない場合、同様の問題点を有している。
【０００９】
本発明は、上述した問題点を解消あるいは軽減するための技術を提供することを主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成する本発明に係るベクトルプロセッサは、
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求めるエレメントチェック部と、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う追い越し判定部とを備える。
【００１１】
上記目的を達成する本発明に係る情報処理装置は、
上述のベクトルプロセッサを備える。
【００１２】
上記目的を達成する本発明に係る追い越し制御方法は、
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求め、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う。
【発明の効果】
【００１３】
本発明によれば、追い越し処理が行われる頻度を向上し、メモリアクセス性能を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係る情報処理装置が備えるＣＰＵ(Central Processing Unit)の構成を表すブロック構成図である。
【図２】エレメントチェック部１２３の動作を説明するブロック図である。
【図３】エレメントチェック部１２３の他の動作を説明するブロック図である。
【図４】追い越し判定部１２２が備えるバッファ１２２１を表す図である。
【図５】本発明の第２の実施形態に係るベクトルプロセッサの構成を表すブロック構成図である。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１６】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る情報処理装置が備えるＣＰＵ(Central Processing Unit)の構成を表すブロック構成図である。本発明の第１の実施形態に係るＣＰＵ１００は、演算部１１０と、メモリアクセス制御部１２０とを備える。ＣＰＵ１００は、ベクトルロード命令およびベクトルギャザー命令などのように、複数の要素データを1命令でアクセスできるメモリアクセス命令を含む命令セットを備えている。ＣＰＵ１００は、ベクトルプロセッサと呼ばれることもある。
【００１７】
演算部１００は、図示しないレジスタを備え、命令を制御し、レジスタにあるデータを用いて演算を行う。また、演算部１００は、演算するデータをレジスタへロードするため、あるいは演算結果をメモリにストアするなどのために、メモリアクセス制御部１２０に対してメモリアクセスリクエストを発行する。メモリアクセスリクエストは、メモリアクセスの命令種別、アクセス先のアドレス、およびその他制御情報などを含むパケットである。メモリアクセスリクエストに含まれる命令種別がリストアクセスを行うベクトル命令である場合、演算部１００は、メモリアクセスリクエストとは別に、リストアドレスとリストアドレスの制御情報をメモリアクセス制御部１２０へ送信する。
【００１８】
メモリアクセス制御部１２０は、追い越し処理部１２１と、追い越し判定部１２２と、エレメントチェック部１２３と、リストアドレスバッファ１２４と、メモリアクセス発行部１２５とを備える。
【００１９】
追い越し処理部１２１は、メモリアクセスリクエストを演算部１１０から受け取る。そして、追い越し処理部１２１は、追い越し判定部１２２からの指示に基づいて、メモリアクセスリクエストをメモリアクセス発行部１２５へ発行する。また、追い越し処理部１２１は、発行したメモリアクセスリクエストに関する情報をリストアドレスバッファ１２４へ送信する。
【００２０】
追い越し判定部１２２は、バッファ１２２１を備える。追い越し判定部１２２は、演算部１１０から発行されたメモリアクセスリクエストと、エレメントチェック部１２３から送信されるエレメントチェック結果をバッファ１２２１のエントリに格納する。次に、追い越し判定部１２２は、メモリアクセスリクエストに含まれる各命令がアクセスするアドレスの依存関係を調べることにより、先行命令を追い越し可能であるかどうかを判定する。同判定結果に基づいて、追い越し判定部１２２は、バッファ１２２１のエントリを並べ替える。そして、追い越し判定部１２２は、並べ替えられたバッファ１２２１のエントリに基づいて、次に発行するメモリアクセスリクエストを指示する情報を追い越し処理部１２１へ送信する。
【００２１】
エレメントチェック部１２３は、演算部１１０から発行されたアドレスに偏りがあるかどうかを判定する。そして、エレメントチェック部１２３は、判定結果をエレメントチェック結果として追い越し判定部１２２へ送信する。
【００２２】
リストアドレスバッファ１２４は、演算部１１０から発行されたリストアドレスを格納するバッファである。リストアドレスバッファ１２４は、追い越し処理部１２１から送信されるメモリアクセスリクエスト情報に対応するリストアドレスをメモリアクセス発行部１２５へ発行する。
【００２３】
メモリアクセス発行部１２５は、追い越し処理部１２１からメモリアクセスリクエストを受け取る。また、メモリアクセスリクエストに含まれる命令種別がリストアクセスするベクトル命令である場合、メモリアクセス発行部１２５は、リストアドレスバッファ１２４からリストアドレスを受け取る。そして、メモリアクセス発行部１２５は、メモリアクセスを、メモリが受け取るのに適した形式に整形し、実際に発行する。
【００２４】
以下、図１を参照して、第１の実施形態に係る情報処理装置の動作について説明する。まず、演算部１１０は、ＣＰＵ１００がフェッチした命令を解読し、その命令の種別に応じた処理を行う。フェッチした命令がメモリをアクセスする命令であった場合、演算部１１０は、メモリアクセス制御部１２０に対してメモリアクセスリクエスト(命令種別、アドレス、制御情報)を発行する。メモリアクセスリクエストに含まれる制御情報は、各命令の実行に必要なアドレス以外の情報全般を含む。例えば、制御情報は、実行中の命令ごとに一意に割り付けられた命令ＩＤ(IDentification)を含む。
【００２５】
ここで、フェッチした命令が指定したアドレスから一定の間隔(ディスタンス)で保持されている複数のデータをアクセスする命令である場合、制御情報は、ディスタンス情報およびベクトル長（アクセスする要素数）などを含む。このような命令は、例えば、メモリからの読み込みを行うベクトルロード命令、またはメモリへの書き込みを行うベクトルストア命令などである。
【００２６】
また、フェッチした命令がリストアクセスを行う命令である場合、演算部１１０は、メモリアクセスリクエストとは別に、リストアドレスとその制御情報をメモリアクセス制御部１２０へ発行する。リストアクセスを行う命令は、例えば、メモリからの読み込みを行うベクトルギャザー命令、およびメモリへの書き込みを行うベクトルスキャッター命令などである。
【００２７】
リストアドレスの制御情報は、そのアドレスが有効であることを示すＶビットと、対応する命令を示す命令ＩＤと、対応する命令に対して先頭のアドレスが含まれることを示すＳビットと、最後尾のアドレスが含まれることを示すＥビットとを含む。一般に、リストアクセスするベクトル命令のアドレスは、１サイクルにおいて複数個発行されることができる。例えば、１サイクルにおいて４つのリストアドレスが同時に発行できると仮定する。この場合、ベクトル長が１６であるリストアクセス命令においては、初めの４つのアドレスが転送されるときＳビットが1になり、４サイクル目でＥビットが1になる。第１の実施形態に係る情報処理装置においては、１命令分のリストアドレスが隙間なく連続で発行されるものとする。
【００２８】
図２は、エレメントチェック部１２３の動作を説明するブロック図である。以下、図２を参照して、ベクトルギャザー命令およびベクトルスキャッター命令などのリストアクセスを行う命令が発行された場合に、演算部１１０から発行されたリストアドレスとその制御情報に基づいて、エレメントチェック部１２３が行う動作を説明する。
【００２９】
以下の説明においては、アドレスの偏りとして、アドレスの最下位ビットの状態をチェックすることにより、奇数番地もしくは偶数番地のみにアクセスするかどうかを調べる方法を示す。しかしながら、チェックの対象は最下位ビットに限定されなくてもよい。なお、本説明における最下位ビットとは、アクセス単位境界ごとの最下位ビットを指す。
【００３０】
図２の「ステージ１」および「ステージ２」の右側の記載は、各クロックサイクルで保持される情報および、情報に対する操作を示す。また、四角に囲まれた「Ｖ」，「命令ＩＤ」，「Ｓ」，「Ｅ」，「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」，「判定終了」，「ＯＤＤ」，「ＥＶＥＮ」の記載は、これらの情報を格納するフリップフロップを示す。「ＯＤＤ」フリップフロップは、判定の対象となるアドレスが奇数番地である場合、１の値が格納される。また、「ＥＶＥＮ」フリップフロップは、判定の対象となるアドレスが偶数番地である場合、１の値が格納される。
【００３１】
演算部１１０から発行されたリストアドレスと制御情報は、ステージ１のフリップフロップに格納される。リストアドレスは、「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」フリップフロップに格納される。その後、ステージ１において、「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」の最下位ビットの論理積を求めることによって（処理Ｐ２０１）、これらのアドレスが全て奇数番地であるかどうかが判定される。また、「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」の最下位ビットの論理和の否定を求めることによって（処理Ｐ２０２）、これらのアドレスが全て偶数番地であるかどうかが判定される。
【００３２】
ステージ１の「Ｓ」ビットが点灯（オン）している場合は、ある命令のリストアドレス転送の初回であることを示す。ステージ１の「Ｓ」ビットが点灯している場合、ステージ２の「ＯＤＤ」フリップフロップには、ステージ１で行ったアドレスが全て奇数番地であるかどうかの判定の結果が格納される。すなわち、ステージ２の「ＯＤＤ」フリップフロップには、ステージ１の「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」の最下位ビットの論理積（処理Ｐ２０１）が格納される。
【００３３】
同様に、ステージ１の「Ｓ」ビットが点灯している場合、ステージ２の「ＥＶＥＮ」フリップフロップには、ステージ１で行ったアドレスが全て偶数番地であるかどうかの判定の結果が格納される。すなわち、ステージ２の「ＥＶＥＮ」フリップフロップには、ステージ１の「アドレス０」，「アドレス１」，「アドレス２」，「アドレス３」の最下位ビットの論理和の否定（処理Ｐ２０２）が格納される。
【００３４】
ステージ１の「Ｓ」ビットが消灯（オフ）している場合は、ある命令のリストアドレス転送の初回以外であることを示す。ステージ１の「Ｓ」ビットが消灯している場合、ステージ２の「ＯＤＤ」フリップフロップには、ステージ１で行ったアドレスが全て奇数番地であるかどうかの判定の結果（処理Ｐ２０１）と、「ＯＤＤ」フリップフロップの値との論理積（処理Ｐ２０３）が格納される。同様に、ステージ１の「Ｓ」ビットが消灯している場合、ステージ２の「ＥＶＥＮ」フリップフロップには、ステージ１で行ったアドレスが全て偶数番地であるかどうかの判定の結果（処理Ｐ２０２）と、「ＥＶＥＮ」フリップフロップの値との論理積（処理Ｐ２０４）が格納される。
【００３５】
ステージ１の「命令ＩＤ」フリップフロップの値は、そのままステージ２の「命令ＩＤ」フリップフロップに格納される。また、ステージ１の「Ｅ」ビットと「Ｖ」ビットの論理積（処理Ｐ２０５）が、ステージ２の「判定終了」フリップフロップに格納される。「判定終了」フリップフロップが点灯するタイミングにおけるステージ２の「ＯＤＤ」，「ＥＶＥＮ」フリップフロップの値は、有効な１命令分の判定結果を示す。「判定終了」フリップフロップの値が点灯するタイミングにおいて、エレメントチェック部１２３は、「命令ＩＤ」，「ＯＤＤ」，「ＥＶＥＮ」フリップフロップの値を、エレメントチェック結果として追い越し判定部１２２へ転送する。
【００３６】
図３は、エレメントチェック部１２３の他の動作を説明するブロック図である。以下、図３を参照して、演算部１１０から、ベクトルロード命令およびベクトルストア命令などの、あるアドレス(ベースアドレス)から一定の間隔(ディスタンス)でメモリに記録された情報を操作する命令が発行された場合にエレメントチェック部１２３が行う動作を説明する。
【００３７】
演算部１１０から発行されたメモリアクセスリクエストに含まれるアドレスは、「ベースアドレス」フリップフロップに格納される。また、制御情報として、その命令が有効であることを示すＶビット、各命令に対して一意につけられた識別子である命令ＩＤ、アクセスするメモリアドレスの間隔を示すディスタンスは、ステージ１の「Ｖ」，「命令ＩＤ」，「ディスタンス」フリップフロップにそれぞれ格納される。
【００３８】
「ベースアドレス」の最下位ビットと、「ディスタンス」の最下位ビットとの否定の論理積を求めることによって（処理Ｐ３０１）、アクセス先が奇数番地のみかどうかが判定される。そして、判定結果が、ステージ２の「ＯＤＤ」フリップフロップに格納される。また、「ベースアドレス」の最下位ビットと、「ディスタンス」の最下位ビットとの論理和の否定を求めることによって（処理Ｐ３０２）、アクセス先が偶数番地のみかどうかが判定される。そして、判定結果が、ステージ２の「ＥＶＥＮ」フリップフロップに格納される。
【００３９】
ステージ１の「Ｖ」ビットと「命令ＩＤ」の値は、ステージ２の「判定終了」フリップフロップと「命令ＩＤ」フリップフロップへそれぞれ格納される。「判定終了」フリップフロップが点灯するタイミングにおいて、エレメントチェック部１２３は、「命令ＩＤ」，「ＯＤＤ」，「ＥＶＥＮ」フリップフロップの値を、エレメントチェック結果として追い越し判定部１２２へ転送する。
【００４０】
演算部１１０から発行された命令がスカラ命令の場合、エレメントチェック部１２３は、アクセス先のアドレスの最下位ビットの点灯あるいは消灯に基づいて、奇数あるいは偶数番地へのアクセスであると判定する。すなわち、エレメントチェック部１２３は、アドレスの最下位ビットが点灯している場合は奇数番地へのアクセスであると判定し、アドレスの最下位ビットが消灯している場合は偶数番地へのアクセスであると判定する。そして、エレメントチェック部１２３は、判定結果をエレメントチェック結果として追い越し判定部１２２へ転送する。
【００４１】
図４は、追い越し判定部１２２が備えるバッファ１２２１を表す図である。バッファ１２２１は、演算部１１０から発行された命令と、各制御情報をＦＩＦＯ(First In, First Out)方式で格納するバッファである。バッファ１２２１は、Ｎ個のエントリを有している。各エントリは、「Ｖ」，「命令」，「命令ＩＤ」，「判定終了」，「ＯＤＤ」，「ＥＶＥＮ」の項目を含んでいる。バッファ１２２１は、図４の上方のエントリから情報を入力し、下方のエントリから情報を出力する。バッファ１２２１は、あるエントリが空となると、後方のエントリを先頭方向（図４の下方向）に詰める機能を有する。
【００４２】
追い越し判定部１２２は、演算部１１０から受け取ったメモリアクセスリクエストを、バッファ１２２１に新規エントリとして登録する。このとき、追い越し判定部１２２は、このエントリの「Ｖ」の項目に１を、「命令」，「命令ＩＤ」の項目に、同メモリアクセスリクエストに含まれる命令種別，命令ＩＤを設定する。また、追い越し判定部１２２は、このエントリの「判定終了」の項目に０を設定する。
【００４３】
エレメントチェック部１２３からエレメントチェック結果を受け取ったとき、追い越し判定部１２２は、エレメントチェック結果に含まれる命令ＩＤをキーとしてバッファ１２２１を検索する。そして、追い越し判定部１２２は、同命令ＩＤが設定された、バッファ１２２１の対応するエントリの「ＯＤＤ」，「ＥＶＥＮ」の項目に、エレメントチェック結果に含まれるＯＤＤ，ＥＶＥＮの値を設定する。このとき、追い越し判定部１２２は、この対応するエントリの「判定終了」の項目に１を設定する。
【００４４】
図４の、エントリ＃０，＃２は、エレメントチェック結果を受取済みのエントリを示す。これらのエントリ＃０，＃２は、「判定終了」の項目に１が設定され、「ＯＤＤ」，「ＥＶＥＮ」の項目には０もしくは１が設定されている。一方で、エントリ＃１は、エレメントチェック結果を未受取りのエントリを示す。このエントリ＃１は、「判定終了」の項目に０が設定されている。また、エントリ＃１の「ＯＤＤ」，「ＥＶＥＮ」の項目に記載の“−”は、まだ値が設定されていないため不定であることを示す。
【００４５】
追い越し判定部１２２は、エントリに登録された命令の中でどの命令から発行するかの調停を行う。何命令を調停に参加させるか、どういった命令を優先的に発行するかは装置により様々である。
【００４６】
以下、図４を参照して追い越し判定部１２２による追い越し判定動作を説明する。第１の実施形態においては、追い越し判定部１２２は、エントリの先頭の３命令による調停を行う。この調停において、追い越し判定部１２２は、エレメントチェック結果に基づいて、ロード命令がストア命令を可能な限り追い越すようにエントリを操作する。
【００４７】
なお、ある項目のビットが点灯しているとは、その項目に１が設定されていることを指す。同様に、ある項目のビットが消灯しているとは、その項目に０が設定されていることを指す。
【００４８】
バッファ１２２１のエントリ＃０にはストア命令であるベクトルストア命令が登録されている。エントリ＃０の「判定終了」ビットと「ＯＤＤ」ビットが点灯しているため、追い越し判定部１２２は、このストア命令がメモリの奇数番地にのみアクセスすると判定する。一方で、エントリ＃１にロード命令であるベクトルギャザー命令が登録されている。エントリ＃１の「判定終了」ビットが消灯しているため、追い越し判定部１２２は、このロード命令についてのエレメントチェック結果がまだ送信されておらず、アドレスの偏りの判定がまだ行われていないと判定する。従って、追い越し判定部１２２は、エントリ＃１のロード命令がエントリ＃０のストア命令を追い越すことはできないと判定する。
【００４９】
さらに、エントリ＃２にもベクトルギャザー命令が登録されている。エントリ＃２の「判定終了」ビットと「ＥＶＥＮ」ビットが点灯しているため、追い越し判定部１２２は、このロード命令がメモリの偶数番地にのみアクセスすると判定する。エントリ＃０のストア命令とエントリ＃２のロード命令のアクセス先が重複しないため、追い越し判定部１２２は、エントリ＃２のロード命令がエントリ＃０のストア命令を追い越すことができると判定する。また、追い越し判定部１２２は、エントリ＃２のロード命令が同じくロード命令であるエントリ＃１のロード命令を追い越すことができると判定する。
【００５０】
最終的に、追い越し判定部１２２は、エントリ＃２のベクトルギャザー命令が、エントリ＃０，＃１の命令を追い越して最初に実行されるべき命令であると判断する。そして、追い越し判定部１２２は、発行指示として、エントリ＃２の「命令ＩＤ」の項目の値である３３３３を追い越し処理部１２１へ送信する。
【００５１】
このように、追い越し判定部１２２は、先行ストア命令と後続ロード命令における、エレメントチェック結果が示すアクセス先のアドレスの偏りを確認する。そして、これら双方の命令のアクセス先が重複しない場合に、後続ロード命令が先行ストア命令を追い越して実行可能であると判定する。具体的には、追い越し判定部１２２は、先行ストア命令と後続ロード命令における、双方の命令の「判定終了」ビットの点灯と、「ＯＤＤ」，「ＥＶＥＮ」ビットが示すアクセス先のアドレスの偏りの有無とを確認する。そして、これら双方の命令の「判定終了」ビットが点灯しており、かつ、一方の命令の「ＯＤＤ」ビットと他方の命令の「ＥＶＥＮ」ビットが点灯している場合に、これら双方の命令のアクセス先が重複しないと判定する。アクセス先が重複せず、かつ、これら双方の命令の間に後続ロード命令が追い越し不可な命令が存在しない場合に、追い越し判定部１２２は、後続ロード命令が先行ストア命令を追い越して実行可能であると判定する。なお、追い越し不可な命令とは、「ＯＤＤ」，「ＥＶＥＮ」ビットにおいて後続ロード命令と同じビットが点灯しているか、「判定終了」ビットが消灯しているストア命令が該当する。
【００５２】
追い越し処理部１２１は、演算部１１０から発行されたメモリアクセスリクエストを一時的に記憶する。そして、追い越し処理部１２１は、追い越し判定部１２２から受け取った発行指示に基づいて、発行指示に含まれる命令ＩＤに対応するメモリアクセスリクエストをメモリアクセス発行部１２５へ発行する。発行する命令がリストアクセスを行う命令の場合は、命令ＩＤなどの、このメモリアクセスリクエストに関する情報をリストアドレスバッファ１２４へ送信する。リストアドレスバッファ１２４は、受け取った同情報に基づいて、発行されるメモリアクセスリクエストに対応するリストアドレスをメモリアクセス発行部１２５へ発行する。メモリアクセス発行部１２５は、受け取ったメモリアクセスリクエストに基づいて、メモリへのアクセスを行う。
【００５３】
以上のように、本発明の第１の実施形態に係るＣＰＵ１００は、追い越し処理が行われる頻度を向上することができる。なぜならば、エレメントチェック部１２３がメモリアクセス命令のアクセス先のアドレスの偏りを判定し、追い越し判定部１２２がこの偏りに基づいて追い越し処理の可否を判定するからである。
【００５４】
また、本発明の第１の実施形態に係るＣＰＵ１００は、特許技術文献１もしくは２記載の技術において、実際は可能であるにもかかわらず追い越し処理ができないと判定される場合においても、追い越し処理の可否を正しく判定し得る。具体的には、後続ロード命令が、ベクトルアクセスを行う先行ストア命令がアクセスする最大アドレスと最小アドレスの間のアドレスのメモリにアクセスする場合においても、追い越し処理の可否を正しく判定し得る。このことにより、本発明の第１の実施形態に係るＣＰＵ１００は、特許技術文献１もしくは２記載の技術と比較して、より多くのアクセスパターンにおいて追い越し処理を実現することにより、メモリアクセス性能を向上することができる。
【００５５】
［第２の実施形態］
次に、本発明の第２の実施の形態を説明する。以下の説明では、第１の実施形態と同様な構成については同一の参照番号を付与することにより、重複する説明を省略する。
【００５６】
図５は、本発明の第２の実施形態に係るベクトルプロセッサの構成を表すブロック構成図である。本発明の第２の実施形態に係るベクトルプロセッサ１０００は、エレメントチェック部１２３と、追い越し判定部１２２とを備える。
【００５７】
エレメントチェック部１２３は、ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求める。
【００５８】
追い越し判定部１２２は、ロード命令の、ロード命令に先行するストア命令に対する追い越し判定を、エレメントチェック結果に基づいて行う。
【００５９】
以上のように、本発明の第２の実施形態に係るベクトルプロセッサ１０００は、追い越し処理が行われる頻度を上昇することができる。なぜならば、エレメントチェック部１２３がロード命令あるいはストア命令のアクセス先のアドレスの偏りをエレメントチェック結果として求め、追い越し判定部１２２がこのエレメントチェック結果に基づいて追い越し処理の可否を判定するからである。
【００６０】
第１の実施形態のエレメントチェック部１２３は、アドレスの最下位ビットの状態を求めることにより、アクセス先が奇数番地か偶数番地かを判定したが、最下位ビット以外の状態を求めてもよい。例えば、エレメントチェック部１２３は、アドレスの下位２ビットの状態を求めることにより、アクセス先のアドレスの下位２ビットが“００”，“０１”，“１０”，“１１”のいずれであるかを判定し、エレメントチェック結果として出力してもよい。そして、追い越し判定部１２２は、先行するストア命令と後続のロード命令のそれぞれに関するエレメントチェック結果に基づいて、追い越し判定を行ってもよい。あるいは、エレメントチェック部１２３は、アドレスの下位３ビット以上の状態を求めてもよい。
【００６１】
アドレスの下位２ビットの状態を求めた場合の動作の例を説明する。エレメントチェック部１２３により、あるベクトルストア命令が有するリストアドレスは、下位２ビットの値が“０１”，“１０”，“１１”であるアドレスのみを含むことが判明している。そして、このベクトルストア命令に後続するロード命令のアクセス先のアドレスの下位２ビットの値が“００”のみである場合、追い越し判定部１２２は、このロード命令がこのベクトルストア命令を追い越すことができると判定する。
【符号の説明】
【００６２】
１００    ＣＰＵ
１１０    演算部
１２０    メモリアクセス制御部
１２１    追い越し処理部
１２２    追い越し判定部
１２２１    バッファ
１２３    エレメントチェック部
１２４    リストアドレスバッファ
１２５    メモリアクセス発行部
１０００    ベクトルプロセッサ
【図１】
2015156112.tif 000003
【図２】
2015156112.tif 000004
【図３】
2015156112.tif 000005
【図４】
2015156112.tif 000006
【図５】
2015156112.tif 000007