(57)【特許請求の範囲】
【請求項１】
複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を算出・保持し、後続のスカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていなければ前記スカラロードリクエストをキャッシュメモリ側へ出力し、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていれば前記スカラロードリクエストを主記憶部側へ出力するリクエスト出力制御手段を備え、
前記リクエスト出力制御手段は、
前記ベクトルストアリクエスト又はスカラロードリクエストの何れであるかを判定するとともに、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを前記キャッシュメモリ側又は主記憶部側へ出力するメモリリクエスト制御部と、
前記最大幅のアドレス範囲を算出・保持するとともに、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれているか否かを判定するバウンダリ制御部とを備え、
前記バウンダリ制御部は、
前記最大幅のアドレス範囲であるバウンダリ区間を示す始点のアドレスが登録されるバウンダリ始点アドレスレジスタと、
前記バウンダリ区間を示す終点のアドレスが登録されるバウンダリ終点アドレスレジスタとを有するバウンダリアドレスレジスタを備え、 
後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の開始アドレスに変更し、さらに前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の終了アドレスに変更し、
前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の終了アドレスに変更し、さらに前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の開始アドレスに変更することを特徴とするバウンダリ実行制御装置。
【請求項２】
前記バウンダリ制御部は、前記バウンダリアドレスレジスタに保持された前記最大幅のアドレス範囲に前記後続のスカラロードリクエストのアドレスが含まれているか否かを判定するアドレス比較回路をさらに有していることを特徴とする請求項１に記載のバウンダリ実行制御装置。
【請求項３】
前記バウンダリ制御部は、
前記ベクトルストアリクエストに含まれる開始アドレス及び要素間距離及び要素数から終了アドレスを算出する終了アドレス算出回路と、
後続の前記ベクトルストアリクエストの開始アドレス又は終了アドレスと前記バウンダリ始点アドレスレジスタに登録されている前記始点のアドレスとを比較するバウンダリ始点アドレス比較回路と、
前記後続の前記ベクトルストアリクエストの終了アドレス又は始点アドレスと前記バウンダリ終点アドレスレジスタに登録されている前記終点のアドレスとを比較するバウンダリ終点アドレス比較回路と、
後続の前記スカラロードリクエストのアドレスと前記バウンダリ始点アドレスレジスタ及び前記バウンダリ終点アドレスレジスタに登録されている前記始点及び終点のアドレスとを比較するスカラロードアドレス比較回路とを備え、
前記メモリリクエスト制御部は、前記比較の結果に応じて、前記後続の前記スカラロードリクエストの出力先を前記キャッシュメモリ又は前記主記憶部の何れかに制御することを特徴とする請求項１又は２の何れかに記載のバウンダリ実行制御装置。
【請求項４】
複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を算出・保持する第１の工程と、
後続のスカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていなければ前記スカラロードリクエストをキャッシュメモリ側へ出力する第２の工程と、
前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていれば前記スカラロードリクエストを主記憶部側へ出力する第３の工程とを備え、
前記第１〜第３の工程には、
メモリリクエスト制御部により、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを判定したり、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを前記キャッシュメモリ側又は主記憶部側へ出力したりする第４の工程と、
バウンダリ制御部により、前記最大幅のアドレス範囲を算出・保持したり、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれているか否かを判定する第５の工程とが含まれ、
前記第５の工程には、前記最大幅のアドレス範囲であるバウンダリ区間の始点アドレスと終点アドレスをバウンダリアドレスレジスタに保持する第６の工程が含まれ、
前記第５〜第６の工程には、 
前記最大幅のアドレス範囲であるバウンダリ区間を示す始点のアドレスを前記バウンダリアドレスレジスタが有するバウンダリ始点アドレスレジスタに登録する第８の工程と、
前記バウンダリ区間を示す終点のアドレスを前記バウンダリアドレスレジスタが有するバウンダリ終点アドレスレジスタに登録する第９の工程と、 
後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の開始アドレスに変更する第１０の工程と、
後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の終了アドレスに変更する第１１の工程と、
前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の終了アドレスに変更する第１２の工程と、
前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の開始アドレスに変更する第１３の工程とが含まれることを特徴とするバウンダリ制御方法。
【請求項５】
前記第６の工程には、前記バウンダリアドレスレジスタに保持された前記最大幅のアドレス範囲に前記後続のスカラロードリクエストのアドレスが含まれているか否かをアドレス比較回路により判定する第７の工程が含まれることを特徴とする請求項４に記載のバウンダリ制御方法。
【請求項６】
前記第５〜第１３の工程には、
前記ベクトルストアリクエストに含まれる開始アドレス及び要素間距離及び要素数から終了アドレスを終了アドレス算出回路により算出する第１４の工程と、  後続の前記ベクトルストアリクエストの開始アドレス又は終了アドレスと前記バウンダリ始点アドレスレジスタに登録されている前記始点のアドレスとをバウンダリ始点アドレス比較回路により比較する第１５の工程と、
前記後続の前記ベクトルストアリクエストの終了アドレス又は開始アドレスと前記バウンダリ終点アドレスレジスタに登録されている前記終点のアドレスとをバウンダリ終点アドレス比較回路により比較する第１６の工程と、
後続の前記スカラロードリクエストに含まれるアドレスと前記バウンダリ始点アドレスレジスタ及び前記バウンダリ終点アドレスレジスタに登録されている前記始点及び終点のアドレスとをスカラロードアドレス比較回路により比較する第１７の工程とが含まれ、
前記第２の工程には、前記比較の結果に応じて、前記後続の前記スカラロードリクエストの出力先を前記キャッシュメモリ又は前記主記憶部の何れかに制御する第１８の工程が含まれる
ことを特徴とする請求項４又は５の何れかに記載のバウンダリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ベクトルストア命令とスカラロード命令との双方を扱うキャッシュメモリを備えた情報処理装置における複数のベクトルストア命令に対するバウンダリ制御に適したバウンダリ実行制御装置及びバウンダリ制御方法に関する。
【０００２】
【従来の技術】
一般に、命令処理の高速化を目的とした情報処理装置においては、先行するベクトルストア命令の区間に後続のロード系の命令のアクセス区間が重なっていない場合、後続のロード系命令に対し、先にメモリアクセスを実行させるようにしている。これは、メモリアクセスの高速化を図るためのベクトルストア命令追越し制御と呼ばれるものである。
【０００３】
この種のベクトルストア命令追越し制御として、たとえば特開平０４−１８２７７７号公報や特開平０４−１８２７７８号公報では、命令発行部から命令を受付けると、メモリへのアクセスする区間においてベクトルストア命令とスカラロード命令とを別々に計算し、追越すことができるかどうかの判定を下すようにしている。この場合、追越しの判定の判断となるベクトルストア命令が複数であるとき、その数のアクセス区間に対応させた計算回路による計算が行われる。ただし、追い越しに係る処理としては、ベクトルストア／ロード命令のみ、つまりベクトル要素のみを扱っている。
【０００４】
【発明が解決しようとする課題】
ところが、上述した各先行技術では、ベクトルストア命令毎のバウンダリ区間を記憶したり、スカラロード命令のアドレスと比較したりするためのＨＷ（ハードウェア）資源に制限が有る。このため、後続のスカラロード命令が追越し可能とする先行のベクトルストア命令の数に制限が生じてしまう。
【０００５】
また、バウンダリを記憶する手段やエントリ毎に後続のスカラロード命令とバウンダリ区間とを比較する手段等が必要となるため、バウンダリ区間を記憶するエントリ数が大きくなればなる程、膨大なＨＷ（ハードウェア）量が必要となるとした不具合も有る。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、複数のベクトルストア命令に後続するスカラロード命令の性能を落とすことなく、最小のＨＷ（ハードウェア）量で複数のベクトルストア命令に対するバウンダリ制御を行うことができるバウンダリ実行制御装置及びバウンダリ制御方法を提供することができるようにするものである。
【０００７】
【課題を解決するための手段】
請求項１に記載のバウンダリ実行制御装置は、複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を算出・保持し、後続のスカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていなければ前記スカラロードリクエストをキャッシュメモリ側へ出力し、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていれば前記スカラロードリクエストを主記憶部側へ出力するリクエスト出力制御手段を備えることを特徴とする。
また、前記リクエスト出力制御手段は、前記ベクトルストアリクエスト又はスカラロードリクエストの何れであるかを判定するとともに、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを前記キャッシュメモリ側又は主記憶部側へ出力するメモリリクエスト制御部と、前記最大幅のアドレス範囲を算出・保持するとともに、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれているか否かを判定するバウンダリ制御部とを備えるようにすることができる。
また、前記バウンダリ制御部は、前記最大幅のアドレス範囲を保持するバウンダリアドレスレジスタを有しているようにすることができる。
また、前記バウンダリ制御部は、前記バウンダリアドレスレジスタに保持された前記最大幅のアドレス範囲に前記後続のスカラロードリクエストのアドレスが含まれているか否かを判定するアドレス比較回路をさらに有しているようにすることができる。
また、前記バウンダリ制御部は、前記最大幅のアドレス範囲であるバウンダリ区間を示す始点のアドレスが登録されるバウンダリ始点アドレスレジスタと、前記バウンダリ区間を示す終点のアドレスが登録されるバウンダリ終点アドレスレジスタとを備え、後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の開始アドレスに変更し、さらに前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の終了アドレスに変更し、前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の終了アドレスに変更し、さらに前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の開始アドレスに変更するようにすることができる。
また、前記バウンダリ制御部は、前記ベクトルストアリクエストに含まれる開始アドレス及び要素間距離及び要素数から終了アドレスを算出する終了アドレス算出回路と、後続の前記ベクトルストアリクエストの開始アドレス又は終了アドレスと前記バウンダリ始点アドレスレジスタに登録されている前記始点のアドレスとを比較するバウンダリ始点アドレス比較回路と、前記後続の前記ベクトルストアリクエストの終了アドレス又は始点アドレスと前記バウンダリ終点アドレスレジスタに登録されている前記終点のアドレスとを比較するバウンダリ終点アドレス比較回路と、後続の前記スカラロードリクエストのアドレスと前記バウンダリ始点アドレスレジスタ及び前記バウンダリ終点アドレスレジスタに登録されている前記始点及び終点のアドレスとを比較するスカラロードアドレス比較回路とを備え、前記メモリリクエスト制御部は、前記比較の結果に応じて、前記後続の前記スカラロードリクエストの出力先を前記キャッシュメモリ又は前記主記憶部の何れかに制御するようにすることができる。
請求項７に記載のバウンダリ制御方法は、複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を算出・保持する第１の工程と、後続のスカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていなければ前記スカラロードリクエストをキャッシュメモリ側へ出力する第２の工程と、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれていれば前記スカラロードリクエストを主記憶部側へ出力する第３の工程とを備えることを特徴とする。
また、前記第１〜第３の工程には、メモリリクエスト制御部により、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを判定したり、前記ベクトルストアリクエスト又はスカラロードリクエストの何れかを前記キャッシュメモリ側又は主記憶部側へ出力したりする第４の工程と、バウンダリ制御部により、前記最大幅のアドレス範囲を算出・保持したり、前記スカラロードリクエストのアドレスが前記最大幅のアドレス範囲に含まれているか否かを判定する第５の工程とが含まれるようにすることができる。
また、前記第５の工程には、前記最大幅のアドレス範囲をバウンダリアドレスレジスタに保持する第６の工程が含まれるようにすることができる。
また、前記第６の工程には、前記バウンダリアドレスレジスタに保持された前記最大幅のアドレス範囲に前記後続のスカラロードリクエストのアドレスが含まれているか否かをアドレス比較回路により判定する第７の工程が含まれるようにすることができる。
また、前記第５〜第７の工程には、前記最大幅のアドレス範囲であるバウンダリ区間を示す始点のアドレスをバウンダリ始点アドレスレジスタに登録する第８の工程と、前記バウンダリ区間を示す終点のアドレスをバウンダリ終点アドレスレジスタに登録する第９の工程と、後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の開始アドレスに変更する第１０の工程と、後続の前記ベクトルストアリクエストの開始アドレスが終了アドレスより小さいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の終了アドレスに変更する第１１の工程と、前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの終了アドレスが前記バウンダリ始点アドレスレジスタに登録されている始点のアドレスより小さいとき、前記バウンダリ始点アドレスレジスタを前記後続の終了アドレスに変更する第１２の工程と、前記後続のベクトルストアリクエストの開始アドレスが終了アドレスより大きいときであり、かつ前記後続のベクトルストアリクエストの開始アドレスが前記バウンダリ終点アドレスレジスタに登録されている終点のアドレスより大きいとき、前記バウンダリ終了アドレスレジスタを前記後続の開始アドレスに変更する第１３の工程とが含まれるようにすることができる。
また、前記第５〜第１３の工程には、前記ベクトルストアリクエストに含まれる開始アドレス及び要素間距離及び要素数から終了アドレスを終了アドレス算出回路により算出する第１４の工程と、後続の前記ベクトルストアリクエストの開始アドレス又は終了アドレスと前記バウンダリ始点アドレスレジスタに登録されている前記始点のアドレスとをバウンダリ始点アドレス比較回路により比較する第１５の工程と、前記後続の前記ベクトルストアリクエストの終了アドレス又は開始アドレスと前記バウンダリ終点アドレスレジスタに登録されている前記終点のアドレスとをバウンダリ終点アドレス比較回路により比較する第１６の工程と、後続の前記スカラロードリクエストに含まれるアドレスと前記バウンダリ始点アドレスレジスタ及び前記バウンダリ終点アドレスレジスタに登録されている前記始点及び終点のアドレスとをスカラロードアドレス比較回路により比較する第１７の工程とが含まれ、前記第２の工程には、前記比較の結果に応じて、前記後続の前記スカラロードリクエストの出力先を前記キャッシュメモリ又は前記主記憶部の何れかに制御する第１８の工程が含まれるようにすることができる。
本発明に係るバウンダリ実行制御装置及びバウンダリ制御方法においては、リクエスト出力制御手段により、複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を算出・保持し、後続のスカラロードリクエストのアドレスが最大幅のアドレス範囲に含まれていなければスカラロードリクエストをキャッシュメモリ側へ出力し、スカラロードリクエストのアドレスが最大幅のアドレス範囲に含まれていればスカラロードリクエストを主記憶部側へ出力することで、複数のベクトルストア命令実行中にスカラロード命令を実行可能とするようにする。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
【０００９】
図１は、本発明のバウンダリ実行制御装置の一実施の形態に係る情報処理装置を示すブロック図、図２は、図１のバウンダリ制御部の詳細を示すブロック図、図３及び図４は、図１のバウンダリ制御部の動作を説明するためのフローチャート、図５は、図１のバウンダリ制御部の動作を説明するための図である。
【００１０】
図１に示す情報処理装置は、命令発行制御部１、メモリリクエスト制御部２、バウンダリ制御部２１、キャッシュメモリ３、主記憶部４及びベクトルプロセッサ５を備えている。ここで、バウンダリ実行制御装置は、リクエスト出力制御手段としてのメモリリクエスト制御部２及びバウンダリ制御部２１を備えている。
【００１１】
命令発行制御部１は、先行のベクトルストア命令と後続のスカラロード命令との実行制御を行う。この場合、命令発行制御部１は、先行のベクトルストアリクエストと後続のスカラロードリクエストとを発行する。
【００１２】
先行のベクトルストアリクエストを発行する場合、そのリクエストのリクエスト構成情報としての開始アドレス及び要素間距離及び要素数がメモリリクエスト制御部２に送られる。また、後続のスカラロードリクエストを発行する場合、そのアドレスを含んだリクエストもメモリリクエスト制御部２に送られる。
【００１３】
メモリリクエスト制御部２は、命令発行制御部１が発行するベクトルストアリクエスト又はスカラロードリクエストの何れであるかを判定するとともに、ベクトルストアリクエスト又はスカラロードリクエストの何れかをキャッシュメモリ３側又は主記憶部４側へ出力する。また、メモリリクエスト制御部２は、ベクトルストア命令やスカラロード命令に限らず、スカラストア及びベクトルロード等の命令や、ベクトルギャザー及びベクトルスキャタ等の間接アクセス命令等を受付けてキャッシュメモリ３や主記憶部４に対するアクセス制御を行う。すなわち、たとえばスカラストア命令の場合、バウンダリ領域に関わらず、キャッシュメモリ３へリクエストを送信すると同時に主記憶部４へもリクエストを送信することで、主記憶部４への書込みを制御する。
【００１４】
バウンダリ制御部２１は、先行のベクトルストアリクエストの開始アドレス及び要素間距離及び要素数を受取ると、ベクトルストアリクエストの終了アドレスを算出し、最大幅のアドレス範囲を示す開始アドレスと終了アドレスとを後述する図２のバウンダリアドレスレジスタ２１１に登録する。ここで、ベクトルストアリクエストの開始アドレス及び要素間距離及び要素数は、それぞれライン２１ａ，２１ｂ，２１ｃを介して与えられる。
【００１５】
また、バウンダリ制御部２１は、後続のスカラロードリクエストのアドレスを受取ると、そのアドレスがバウンダリアドレスレジスタ２１１に登録しているバウンダリ区間内に対するリクエストか否かをチェックする。すなわち、バウンダリ制御部２１は、スカラロードリクエストのアドレスが最大幅のアドレス範囲に含まれているか否かを判定する。
【００１６】
ここで、後続のスカラロードリクエストのアドレスがバウンダリ区間内の場合、バウンダリ制御部２１はスカラロードリクエストを主記憶部４へ送信するようライン２１ｅを介してメモリリクエスト制御部２に指示する。また、後続のスカラロードのリクエストアドレスがバウンダリ区間外の場合、バウンダリ制御部２１はスカラロードリクエストをライン２１ｄを介してキャッシュメモリ３に送る。
【００１７】
さらに、バウンダリ制御部２１は、主記憶部４からベクトルストアリクエストの完了通知を受取ると、キャッシュメモリ３に対し、登録されているデータ中のバウンダリ区間に一致するデータの無効化開始を指示する。また、バウンダリ制御部２１は、バウンダリアドレスレジスタ２１１を無効化し、後続のスカラロード命令に対するバウンダリ制御を停止する。
【００１８】
ベクトルプロセッサ５は、主記憶部４のデータをロードする。このロードは、メモリリクエスト制御部２が命令発行制御部１からベクトルロードリクエストを受取ったときにメモリリクエスト制御部２から出力されるベクトルロードリクエストに基づいて実行される。
【００１９】
バウンダリ制御部２１の詳細を、図２に示す。
【００２０】
バウンダリ制御部２１は、バウンダリアドレスレジスタ２１１、終了アドレス算出回路２１２、開始及び終了アドレス比較回路２１３、バウンダリ始点アドレス比較回路２１４、バウンダリ終点アドレス比較回路２１５、スカラロードアドレス比較回路２１６及びリクエストアドレス制御部２１７を備えている。
【００２１】
バウンダリアドレスレジスタ２１１は、バウンダリ始点アドレスレジスタ２１１１とバウンダリ終点アドレスレジスタ２１１２とを有している。バウンダリ始点アドレスレジスタ２１１１は、ベクトルストア命令の実行中のバウンダリ区間の始点のアドレスを記憶する。バウンダリ終点アドレスレジスタ２１１２は、ベクトルストア命令の実行中のバウンダリ区間の終点のアドレスを記憶する。
【００２２】
終了アドレス算出回路２１２は、上述したライン２１ａ，２１ｂ，２１ｃを介して得られるベクトルストア命令の開始アドレス及び要素間距離及び要素数から終了アドレスを算出する。ここでの算出方法としては、たとえば開始アドレス＋要素間距離×要素数とした式を用いることができる。
【００２３】
開始及び終了アドレス比較回路２１３は、開始アドレスと終了アドレスとを比較する。バウンダリ始点アドレス比較回路２１４は、後続のベクトルストア命令の開始アドレス又は終了アドレスとバウンダリ始点アドレスレジスタ２１１１の始点のアドレスとを比較する。また、バウンダリ領域が設定されていない場合の先行のベクトルストア命令においては、開始アドレスと終了アドレスとの大小が比較され、小さい方のアドレスがバウンダリ始点アドレスレジスタ２１１１へ、大きい方のアドレスがバウンダリ終点アドレスレジスタ２１１２へそれぞれ格納される。
【００２４】
バウンダリ終点アドレス比較回路２１５は、後続のベクトルストア命令の終了アドレス又は開始アドレスとバウンダリ終点アドレスレジスタ２１１２の終点のアドレスとを比較する。スカラロードアドレス比較回路２１６は、後続のスカラロード命令のアドレスとバウンダリ始点アドレスレジスタ２１１１の始点のアドレス及びバウンダリ終点アドレスレジスタ２１１２の終点のアドレスとを比較する。
【００２５】
リクエストアドレス制御部２１７は、後続のスカラロード命令の出力先をキャッシュメモリ３又は主記憶部４の何れかに制御する。ここで、出力先をキャッシュメモリ３とするとき、上述したライン２１ｄを介して後続のスカラロード命令が出力され、出力先を主記憶部４とするとき、上述したライン２１ｅを介してメモリリクエスト制御部２に後続のスカラロード命令を主記憶部４へ送信するよう指示する。
【００２６】
次に、このような構成のバウンダリ制御機能を備えた情報処理装置について説明する。
【００２７】
まず、図３に示すように、先行のベクトルストア命令と後続のスカラロード命令とが実行されるとき、命令発行制御部１により先行のベクトルストアリクエストが発行される。このとき、命令発行制御部１からバウンダリ制御部２１に、そのベクトルストアリクエストの開始アドレス及び要素間距離及び要素数が送られる。
【００２８】
この場合、先行のベクトルストアリクエストの発行時においては、メモリアクセスリクエスト（ステップ３０１）かつベクトルストアリクエスト（ステップ３０２）となり、バウンダリ制御部２１がベクトルストアリクエストの終了アドレスを算出し（ステップ３０３）、開始アドレスと終了アドレスとをバウンダリアドレスレジスタ２１１に登録する。
【００２９】
ステップ３０１において、メモリアクセスリクエストでない場合は、終了となる。また、ステップ３０２において、ベクトルストアリクエストでない場合は、スカラロードリクエストの有無が判定される（ステップ３０４）。
【００３０】
後続のスカラロードリクエストの発行時においては、メモリアクセスリクエストでない（ステップ３０１）かつベクトルストアリクエストでない（ステップ３０２）となり、メモリリクエスト制御部２がスカラロードリクエストのアドレスをバウンダリ制御部２１に送る。バウンダリ制御部２１は、スカラロードリクエストのアドレスを受取ると、そのアドレスがバウンダリアドレスレジスタ２１１に登録したバウンダリ区間内（バウンダリ始点アドレス＜スカラロードアドレス＜バウンダリ終点アドレス）に対するリクエストか否かをチェックする（ステップ３０５）。
【００３１】
チェック後、後続のスカラロードリクエストのアドレスがバウンダリ区間外である場合、バウンダリ制御部２１がキャッシュメモリ３にスカラロードリクエストを送るよう制御する（ステップ３０７）。また、後続のスカラロードリクエストのアドレスがバウンダリ区間内である場合、バウンダリ制御部２１がスカラロードリクエストを主記憶部４へ送るよう制御する（ステップ３０６）。
【００３２】
バウンダリ制御部２１は、主記憶部４からベクトルストアリクエストの完了通知を受取ると、キャッシュメモリ３に登録されているデータのうち、バウンダリ区間に一致するデータの有無を判定し（ステップ３０８）、一致するデータが有れば、キャッシュメモリ３に対し、その一致するデータの無効化の開始を指示する。
【００３３】
また、バウンダリ制御部２１は、バウンダリアドレスレジスタ２１１を無効化し、後続のスカラロード命令に対するバウンダリ制御を停止する。
【００３４】
次に、ステップ３０３において、先行のベクトルストアリクエストの終了アドレスが算出された後、後続のベクトルストアリクエストが発行されると、図４のフローチャートに従う。
【００３５】
すなわち、まず命令発行制御部１から後続のベクトルストアリクエストが発行されると、図２の終了アドレス算出回路２１２により、そのベクトルストアリクエストの開始アドレス及び要素間距離及び要素数から終了アドレスが算出される。
【００３６】
次いで、開始及び終了アドレス比較回路２１３により、開始アドレスと終了アドレス算出回路２１２が算出した終了アドレスとの大小が比較される（ステップ４０１）。ここで、開始及び終了アドレス比較回路２１３による比較結果が開始アドレス＜終了アドレスとなり、さらにバウンダリ始点アドレス＞開始アドレスとなると、開始アドレスがバウンダリ始点アドレスレジスタ２１１１に登録される（ステップ４０２，４０３）。また、バウンダリ終点アドレス＜終了アドレスとなると、終了アドレスがバウンダリ終点アドレスレジスタ２１１２に登録される（ステップ４０４，４０５）。
【００３７】
さらに、ステップ４０１において、比較結果が開始アドレス＞終了アドレスとなり、さらにバウンダリ始点アドレス＞終了アドレスとなると、バウンダリ始点アドレスレジスタ２１１１に終了アドレスが登録される（ステップ４０６，４０７）。また、バウンダリ終点アドレス＜開始アドレスとなると、バウンダリ終点アドレスレジスタ２１１２に開始アドレスが登録される（ステップ４０８，４０９）。
【００３８】
次に、ステップ４０１において、ベクトルストアリクエストが開始アドレス＜終了アドレスとなった場合の具体例を、図５を用いて説明する。
【００３９】
すなわち、バウンダリ制御部２１により、先行する第１のベクトルストアリクエストの開始アドレスａがバウンダリ始点アドレスレジスタ２１１１に登録され、終了アドレスｄがバウンダリ終点アドレスレジスタ２１１２に登録される。
【００４０】
次に、命令発行制御部１により、後続する第２のベクトルストアリクエストが発行されると、開始及び終了アドレス比較回路２１３が第１のベクトルストアリクエストと同様に開始アドレスｅと、開始アドレス及び要素間距離及び要素数から算出した終了アドレスｆとを比較する。
【００４１】
その比較結果がｅ＜ｆとなると、バウンダリ始点アドレス比較回路２１４により、開始アドレスｅとバウンダリ始点アドレスレジスタ２１１１に登録されている開始アドレスａとが比較される。また、バウンダリ終点アドレス比較回路２１５により、終了アドレスｆとバウンダリ終点アドレスレジスタ２１１２に登録されている終了アドレスｄとが比較される。
【００４２】
そして、バウンダリ始点アドレス比較回路２１４による比較結果がａ＜ｅとなり、バウンダリ終点アドレス比較回路２１５による比較結果がｄ＞ｆとなった場合、バウンダリ始点アドレスレジスタ２１１１及びバウンダリ終点アドレスレジスタ２１１２のアドレスは開始アドレスａ及び終了アドレスｄに保持される。
【００４３】
バウンダリ始点アドレス比較回路２１４による比較結果がａ＞ｅとなり、バウンダリ終点アドレスレジスタ２１１２による比較結果がｄ＞ｆとなった場合、バウンダリ始点アドレスレジスタ２１１１に開始アドレスｅが登録され、バウンダリ終点アドレスレジスタ２１１２のアドレスは終了アドレスｄに保持される。
【００４４】
バウンダリ始点アドレス比較回路２１４による比較結果がａ＜ｅとなり、バウンダリ終点アドレスレジスタ２１１２による比較結果がｄ＜ｆとなった場合、バウンダリ始点アドレスレジスタ２１１１のアドレスは開始アドレスａに保持され、バウンダリ終点アドレスレジスタ２１１２には終了アドレスｆが登録される。
【００４５】
バウンダリ始点アドレス比較回路２１４による比較結果がａ＞ｅとなり、バウンダリ終点アドレスレジスタ２１１２による比較結果がｄ＜ｆとなった場合、バウンダリ始点アドレスレジスタ２１１１に開始アドレスｅが登録され、バウンダリ終点アドレスレジスタ２１１２に終了アドレスｆが登録される。
【００４６】
次に、図５のように、第１のベクトルストアリクエスト及び第２のベクトルストアリクエストの開始アドレスａ，ｅと終了アドレスｄ，ｆとがａ＞ｅかつｄ＞ｆである場合について説明する。
【００４７】
前述の通り、バウンダリ始点アドレスレジスタ２１１１及びバウンダリ終点アドレスレジスタ２１１２には、それぞれ開始アドレスｅ及び終了アドレスｄが登録されている。
【００４８】
この状態で、バウンダリ制御部２１が後続のスカラロードリクエストを受取ると、バウンダリ始点アドレス比較回路２１４により、そのリクエストのアドレスｇとバウンダリ始点アドレスレジスタ２１１１に格納されている開始アドレスｅとが比較される。また、スカラロードアドレス比較回路２１６により、アドレスｇとバウンダリ終点アドレスレジスタ２１１２に格納されている終了アドレスｄとが比較される。
【００４９】
比較結果がｅ＜ｇかつｇ＜ｄであった場合、リクエストアドレス制御部２１７により、後続のスカラロードリクエストが主記憶部４へ送られる。比較結果がｅ＜ｇかつｄ＜ｇ又はｅ＞ｇかつｄ＞ｇであった場合、リクエストアドレス制御部２１７により、後続のスカラロードリクエストがキャッシュメモリ３へ送られる。
【００５０】
このとき、バウンダリ制御部２１が先行する第１のベクトルストアリクエスト及び第２のベクトルストアリクエストの実行完了通知を主記憶部４から受取ると、キャッシュメモリ３に登録されているデータ中のバウンダリ区間に一致するデータの無効化の開始を、キャッシュメモリ３に指示する。
【００５１】
また、バウンダリ制御部２１が主記憶部４から完了報告を受取ると、バウンダリ始点アドレスレジスタ２１１１とバウンダリ終点アドレスレジスタ２１１２とを無効化し、バウンダリ制御を停止する。
【００５２】
このように、本実施の形態では、バウンダリ制御部２１により、実行中のベクトルストアリクエストの終了アドレスを算出し、ベクトルストアリクエストのバウンダリ区間の始点及び終点のアドレスを登録するとともに、後続のベクトルストアリクエストの開始アドレスと登録した始点のアドレスとの比較及び終了アドレスと登録した終点のアドレスとの比較を行い、登録したアドレスの変更を行ったり、後続のスカラロードリクエストのアドレスと登録したバウンダリ区間の始点及び終点のアドレスとを比較し、メモリリクエスト制御部２に対し後続のスカラロードリクエストの出力先を指示することで、スカラロードリクエストをキャッシュメモリ３又は主記憶部４の何れかに出力制御し、複数のベクトルストア命令実行中にスカラロード命令を実行可能とするようにしたので、複数のベクトルストア命令に後続するスカラロード命令の性能を落とすことなく、最小のＨＷ（ハードウェア）量で複数のベクトルストア命令に対するバウンダリ制御を行うことができる。
【００５３】
【発明の効果】
以上の如く本発明に係るバウンダリ実行制御装置及びバウンダリ制御方法によれば、リクエスト出力制御手段により、複数のベクトルストアリクエストの各々が有するアドレス範囲により形成される最大幅のアドレス範囲を保持し、後続のスカラロードリクエストのアドレスが最大幅のアドレス範囲に含まれていなければスカラロードリクエストをキャッシュメモリ側へ出力し、スカラロードリクエストのアドレスが最大幅のアドレス範囲に含まれていればスカラロードリクエストを主記憶部側へ出力することで、複数のベクトルストア命令実行中にスカラロード命令を実行可能とするようにしたので、複数のベクトルストア命令に後続するスカラロード命令の性能を落とすことなく、最小のＨＷ（ハードウェア）量で複数のベクトルストア命令に対するバウンダリ制御を行うことができる。
【図面の簡単な説明】
【図１】本発明のバウンダリ実行制御装置の一実施の形態に係る情報処理装置を示すブロック図である。
【図２】図１のバウンダリ制御部の詳細を示すブロック図である。
【図３】図１のバウンダリ制御部の動作を説明するためのフローチャートである。
【図４】図１のバウンダリ制御部の動作を説明するためのフローチャートである。
【図５】図１のバウンダリ制御部の動作を説明するための図である。
【符号の説明】
１  命令発行制御部
２  メモリリクエスト制御部
３  キャッシュメモリ
４  主記憶部
５  ベクトルプロセッサ
２１  バウンダリ制御部
２１ａ〜２１ｅ  ライン
２１１  バウンダリアドレスレジスタ
２１２  終了アドレス算出回路
２１３  開始及び終了アドレス比較回路
２１４  バウンダリ始点アドレス比較回路
２１５  バウンダリ終点アドレス比較回路
２１６  スカラロードアドレス比較回路
２１７  リクエストアドレス制御部
２１１１  バウンダリ始点アドレスレジスタ
２１１２  バウンダリ終点アドレスレジスタ
【図１】
0003826648.tif 000002
【図２】
0003826648.tif 000003
【図３】
0003826648.tif 000004
【図４】
0003826648.tif 000005
【図５】
0003826648.tif 000006