(57)【要約】【課題】処理実行時間の短縮化を図り、処理装置自体の性能の向上を図ること。【解決手段】ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する。【選択図】図１
2009104494.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル処理命令手段と、を備えたベクトル演算装置であって、
前記ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する、
ことを特徴とするベクトル演算装置。
【請求項２】
前記ベクトル処理命令手段は、前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を備えた、
ことを特徴とする請求項１記載のベクトル演算装置。
【請求項３】
前記ベクトル格納命令手段は、前記先行ベクトルデータを前記ベクトルレジスタにロードする命令であるベクトルロード命令、あるいは、所定の演算を実行すると共にその演算結果を前記先行ベクトルデータとして前記ベクトルレジスタに格納するベクトル演算命令、を発する、
ことを特徴とする請求項２記載のベクトル演算装置。
【請求項４】
前記ベクトル移送命令手段は、前記先行ベクトルデータの要素データのうち前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納したときに、前記他のベクトルレジスタに対して前記先行ベクトルデータを前記後続ベクトルデータとして移送する命令を発する、
ことを特徴とする請求項２又は３記載のベクトル演算装置。
【請求項５】
前記先行ベクトルデータに対する前記後続ベクトルデータの要素ずれの数は、１つである、
ことを特徴とする請求項１，２，３又は４記載のベクトル演算装置。
【請求項６】
前記ベクトル移送命令手段は、前記先行ベクトルデータの２番目の要素データを前記ベクトルレジスタに格納したときに、前記他のベクトルレジスタに対して前記先行ベクトルデータを前記後続ベクトルデータとして移送する指令を発する、
ことを特徴とする請求項５記載のベクトル演算装置。
【請求項７】
前記ベクトル処理命令手段は、前記ベクトルレジスタに格納された前記先行ベクトルデータ及び前記後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段を備えた、
ことを特徴とする請求項１，２，３，４，５又は６記載のベクトル演算装置。
【請求項８】
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して、前記ベクトルデータの処理命令を発するベクトル処理命令部に、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する手段、
を実現させるためのプログラム。
【請求項９】
前記ベクトル処理命令部に、前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を実現させるための請求項８記載のプログラム。
【請求項１０】
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル演算方法であって、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に、前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発する、
ことを特徴とするベクトル演算方法。
【請求項１１】
前記先行ベクトルデータを前記ベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令工程と、前記先行ベクトルデータの要素データのうち少なくとも前記後続ベクトルデータの先頭の要素データを前記ベクトルレジスタに格納した後に前記先行ベクトルデータを前記後続ベクトルデータとして他の前記ベクトルレジスタに移送する命令を発するベクトル移送命令工程と、を有する、
ことを特徴とする請求項１０記載のベクトル演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理装置にかかり、特に、データ移送処理に特徴を有するベクトル処理装置に関する。
【背景技術】
【０００２】
ベクトル演算装置において、メモリからロードしてきたデータや、ある演算結果のデータを、後続命令のオペランドデータとして繰り返し利用する場合には、ロードデータや演算結果データを、後続の演算命令に利用するため移送命令を使用する。ここで、移送命令は、後述する図６のように任意の移送開始要素番号から別のベクトルレジスタへ移送する仕様となっている。
【０００３】
そして、数値解析を行うプログラムでは、
Ｙ［ｉ］＝Ｘ［ｉ］＋Ｘ［ｉ＋１］（ｉ＝０，１，２，３，・・・）
というような隣接要素との演算を行うケースが多く存在する。つまり、あるベクトルレジスタに格納されたデータ（Ｘ［ｉ］）と、このデータの要素が１つずれたデータである隣接要素のデータ（Ｘ［ｉ＋１］）と、の演算を行うことが多々ある。このような場合に、１つずれた要素を後続命令のオペランドデータとするためには、後述する図４（２）、図５（２）に示すように、移送開始要素番号を「１」とする移送命令により、別のベクトルレジスタに格納する。そして、この２つのベクトルレジスタを要素ごとに加算して、別のベクトルレジスタに結果を格納する、という処理を行う。
【０００４】
【特許文献１】特開平９−６２６５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した移送命令は、移送開始要素番号を任意で指定できる仕様になっていることから、図８（ａ）で示すタイムチャートや特許文献１に示すように、一旦ロードデータや演算結果データを移送元のベクトルレジスタに全て格納終了した後でないと、移送命令が開始できない。つまり、先行命令によるベクトルレジスタへの全要素書き込みが終了しないと、１要素ずれたデータを別のベクトルレジスタに移送する命令が開始できない。その結果、プログラム全体の実行時間が長くなり、性能低下という問題が生じていた。
【０００６】
このため、本発明の目的は、上述した課題である、処理実行時間の短縮化を図り、処理装置自体の性能の向上を図ること、である。
【課題を解決するための手段】
【０００７】
本発明の一形態であるベクトル演算装置は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えており、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採っている。
【発明の効果】
【０００８】
本発明は、以上のように構成されることにより、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる、という従来にない優れた効果を有する。
【発明を実施するための最良の形態】
【０００９】
本発明の一形態であるベクトル演算装置は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプと、当該複数のベクトルパイプに対してベクトルデータの処理命令を発するベクトル処理命令手段と、を備えたベクトル演算装置であって、
ベクトル処理命令手段は、複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
【００１０】
そして、上記ベクトル処理命令手段は、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を備えた、という構成を採る。
【００１１】
また、上記ベクトル格納命令手段は、先行ベクトルデータをベクトルレジスタにロードする命令であるベクトルロード命令、あるいは、所定の演算を実行すると共にその演算結果を先行ベクトルデータとしてベクトルレジスタに格納するベクトル演算命令、を発する、という構成を採る。
ことを特徴とする請求項２記載のベクトル演算装置。
【００１２】
また、上記ベクトル移送命令手段は、先行ベクトルデータの要素データのうち後続ベクトルデータの先頭の要素データをベクトルレジスタに格納したときに、他のベクトルレジスタに対して先行ベクトルデータを後続ベクトルデータとして移送する命令を発する、という構成を採る。
【００１３】
そして、例えば、先行ベクトルデータに対する後続ベクトルデータの要素ずれの数は、１つである。このとき、上記ベクトル移送命令手段は、先行ベクトルデータの２番目の要素データをベクトルレジスタに格納したときに、他のベクトルレジスタに対して先行ベクトルデータを後続ベクトルデータとして移送する指令を発する、という構成を採る。
【００１４】
さらに、本発明の一形態では、上記ベクトル処理命令手段は、ベクトルレジスタに格納された先行ベクトルデータ及び後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段を備えた、という構成を採る。
【００１５】
上記発明によると、相互に要素データがずれている先行ベクトルデータと後続ベクトルデータとを処理する場合に、先行ベクトルデータのうち後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、この要素データを後続ベクトルデータとして移送する指令を発し、移送処理が開始する。従って、ベクトルレジスタに対する全ての先行ベクトルデータの格納終了を待つことなく、後続ベクトルデータの移送を行うことができる。その結果、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる。
【００１６】
また、本発明の他の形態であるプログラムは、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して、ベクトルデータの処理命令を発するベクトル処理命令部に、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する手段、
を実現させる、という構成を採る。
【００１７】
そして、上記ベクトル処理命令部に、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令手段と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令手段と、を実現させる、という構成を採る。
【００１８】
さらに、本発明の他の形態であるベクトル演算方法は、
ベクトルデータを格納するベクトルレジスタ及び当該ベクトルデータを演算処理する演算器を備えた複数のベクトルパイプに対して前記ベクトルデータの処理命令を発するベクトル演算方法であって、
複数の要素データからなる先行ベクトルデータに続いて当該先行ベクトルデータに対して所定数の要素データがずれている後続ベクトルデータを処理する場合に、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に、先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発する、
という構成を採る。
【００１９】
そして、上記ベクトル演算方法は、先行ベクトルデータをベクトルレジスタに格納する動作を含む命令を発するベクトル格納命令工程と、先行ベクトルデータの要素データのうち少なくとも後続ベクトルデータの先頭の要素データをベクトルレジスタに格納した後に先行ベクトルデータを後続ベクトルデータとして他のベクトルレジスタに移送する命令を発するベクトル移送命令工程と、を有する、
という構成を採る。
【００２０】
上述した構成のプログラム、ベクトル演算方法であっても、上記ベクトル演算装置と同様の作用を有するため、上述した本発明の目的を達成することができる。以下、上述したベクトル演算装置の具体的な構成及び動作を、実施形態にて説明する。
【００２１】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図８を参照して説明する。図１は、ベクトル演算装置の構成を示す図であり、図２は、ベクトル命令発行制御部の構成を示す図である。図３は、ベクトル演算の流れを示す図である。図４乃至図５は、ベクトル演算命令を示す図である。図６乃至図７は、ベクトルデータの移送状態を説明する図である。図８は、ベクトル演算時間を示す図である。
【００２２】
［構成］
本実施形態におけるベクトル演算装置は、一連の順序付けられた要素を複数のベクトルパイプで分割して並列に演算処理を行うベクトル演算装置である。そして、特に、あるベクトルレジスタから他のベクトルレジスタに対してベクトルデータを移送する方法に特徴を有する。具体的には、あるベクトルレジスタに格納されているベクトルデータと、そのベクトルデータを構成する要素から１つずれた要素で構成されるベクトルデータとの演算を行う場合に、先行命令によるベクトルレジスタへのデータ格納終了を待つことなく移送命令を発行できるようにし、プログラムの処理時間の短縮を実現するものである。
【００２３】
図１に、本実施形態におけるベクトル演算装置１の構成を示す。ベクトル演算装置１は、ベクトル命令発行制御部２と、ベクトル演算を行うｎ個のベクトルパイプ３と、各パイプ間のデータ転送を行うためのパイプ間クロスバ４と、を備えている。そして、上記ベクトル命令発行制御部２は、複数のベクトルパイプ３に対してベクトルデータの処理命令を発するベクトル処理命令手段として機能し、具体的には、プログラム中のベクトル命令を抽出する命令識別部５と、各ベクトルパイプへの命令発行管理を行う命令発行部６と、１要素ずれ移送命令か否かを判別し個々のベクトル命令処理に於ける実行開始から終了までの実行時間を計数することで後続命令の発行タイミングを検出する命令発行許可判定部７と、を備えている。
【００２４】
また、上記ベクトルパイプ３は、ベクトルデータをそれぞれ格納するｍ個のベクトルレジスタ１０と、ベクトルデータを演算処理するベクトル演算器１１と、演算結果やロードデータ等をベクトルレジスタ１０に振り分けるライトクロスバ８と、ベクトルレジスタ１０から演算器やデータ移送先に振り分けるリードクロスバ９と、を備えている。なお、図１に示す例では、ベクトル演算装置１の構成に含まれるベクトルパイプ３の個数を８個とし、便宜上８つのベクトルパイプ３に、「０」から「７」までの番号を付けて、ＶＰ０、ＶＰ１、・・・、ＶＰ７としている。但し、ベクトルパイプの数は、上記個数に限定されない。
【００２５】
そして、特に、本実施形態では、Ｙ［ｉ］＝Ｘ［ｉ］＋Ｘ［ｉ＋１］（ｉ＝１，２，３，・・・）という、所定のベクトルデータＸ［ｉ］と隣接する要素データからなるベクトルデータＸ［ｉ＋１］との演算を行うプログラムを実行する場合を示している。ここで、例えば、ベクトルレジスタ１０への割り当てを、「Ｙ［ｉ］をＶ２」、「Ｘ［ｉ］をＶ０」、「Ｘ［ｉ＋１］をＶ１」、とすると、上記演算は、図３（ａ）及び図３（ｂ）に示すように、「Ｖ２←Ｖ０＋Ｖ１」と表すことができる。そして、上記演算を行うためのプログラム中のベクトル命令としては、ベクトルロード命令、ベクトル移送命令、ベクトル演算命令、があるが、各命令は、図３（ｃ）の（１），（２），（３）のようにそれぞれ表すことができる。以下、各ベクトル命令について、図３乃至図７を参照して説明する。
【００２６】
まず、ベクトルロード命令は、図３（ｃ）（１）の「Ｖ０←Ｍｅｍｏｒｙ」に示すように、所定の記憶手段であるメモリから、複数の要素データからなる先行するベクトルデータをベクトルレジスタ１０（Ｖ０）にロードする命令である。そして、このベクトルロード命令の具体例を図４（１）及び図５（１）に示すが、図５（１）の例は、１命令が処理する最大の要素数が６４であるベクトルデータをロードする命令を表している。
【００２７】
また、ベクトル移送命令は、図３（ｃ）（２）に示すように、「Ｖ０」のベクトルレジスタにロードされたベクトルデータの要素データを、「Ｖ１」のベクトルレジスタに移送する命令である。さらに、図６を参照して換言すると、図６（ｂ）に示すように、ベクトル長分の各要素データ（Ｓｙ，Ｓｙ＋１，・・・，Ｓｙ＋ＶＬ−１）を、移送元となるベクトルレジスタＶｚから移送先となるベクトルレジスタＶｘ（０，１，・・・，ＶＬ−１）に移送する命令である。このとき、図６（ａ）に示すように、複数の要素からなるベクトルデータの移送を開始する要素番号「Ｓｙ」は任意であり、この移送開始要素番号に対応するベクトルデータの要素が移送先ベクトルレジスタの先頭アドレス「０」に位置するように移送する。そして、このベクトル移送命令の具体例を図４（２）及び図５（２）に示すが、図５（２）の例は、移送開始要素番号Ｓｙが「１」であるため、先行ベクトルデータに対して１要素ずれた要素データを、ベクトルレジスタ「Ｖ０」から「Ｖ１」に移送する命令を表している。なお、図７は、１命令が処理する最大要素数を６４とした場合における１要素ずれの移送によって、移送元となるベクトルレジスタＶｚから移送先となるベクトルレジスタＶｘに遷移するベクトルデータの各要素の一例を示している。
【００２８】
そして、ベクトル演算命令は、図３（ｃ）（３）に示すように、ベクトルレジスタ「Ｖ０」、「Ｖ１」に格納された１要素ずれのベクトルデータをそれぞれ加算する処理を行う。なお、このベクトル演算命令の具体例を図４（３）及び図５（３）に示す。
【００２９】
次に、上記各ベクトル命令を発行制御するベクトル命令発行制御部２の構成について詳述する。上記命令識別部５は、プログラム中の上述した各ベクトル命令を抽出し、命令発行部６へ送出する機能を有する。そして、命令発行部６は、上記命令識別部５から受け取ったベクトル命令２０の発行許可願い２１を命令発行許可判定部７へ送出し、命令発行許可判定部７からの発行許可２２を得るまで各ベクトルパイプへの実行指示２３は発行しない。また、命令発行許可判定部７は、仕掛かり中の先行命令による処理時間を計数しており、処理が完了するタイミングを見計らって、命令発行部６から受信した後続命令の発行許可願い２１に対する発行許可２２を命令発行部６に返却する。このとき、命令発行許可判定部７は、命令発行部６から受信した発行許可願い２１が１要素ずれ移送命令かどうかを判別して、１要素ずれ移送命令ならば先行命令による処理の終了を待つことなく２要素目の処理まで進んだ時点で、１要素ずれ移送命令の発行許可２２を返却する。そして、命令発行許可判定部７からの発行許可２２を受信した命令発行部６は、各ベクトルパイプに対して実行指示２３を発行する。
【００３０】
また、命令発行許可判定部７は、上記１要素ずれ移送命令の発行許可を送出すると、次のベクトル演算命令の発行許可判定を行う。このとき、上述したように、既にベクトルロード命令とベクトル移送命令の発行許可が出されている場合には、ベクトル演算に必要なデータＶ０とＶ１が揃い始めていることから、直ちにベクトル演算命令の発行許可を命令発行部６へと返却する。これにより、命令発行部６は、ベクトルロード命令、１要素ずれのベクトル移送命令、ベクトル演算命令、といったそれぞれの発行許可２２を受信した時点で、ベクトルパイプ３に命令実行指示２３を発行する。
【００３１】
以上のように、上記命令発行部６及び命令発行許可判定部７は、先行ベクトルデータをベクトルレジスタＶ０にロードする命令を発するベクトルロード命令手段（ベクトル格納命令手段）、及び、このロードされた先行ベクトルデータの２要素目が格納されたときに、当該要素を１要素ずれの後続ベクトルデータとして他のベクトルレジスタＶ１に移送する命令を発するベクトル移送命令手段、として機能する。さらに、上記命令発行部６及び命令発行許可判定部７は、ベクトルレジスタに格納された先行ベクトルデータ及び後続ベクトルデータに基づいて予め設定された演算処理を実行する指令を発するベクトル演算命令手段としても機能する。
【００３２】
具体的に、上記命令発行部６及び命令発行許可判定部７は、図２に示す構成で実現することができる。まず、命令発行部６から上記ベクトルロード命令の発行許可願い２１が命令発行許可判定部７に送信されると、それよりも前の命令は存在しないので、命令発行許可２２を直ちに命令発行部６へと返却する。このとき、図２で示すように、命令発行許可判定部７ではベクトルロード命令の発行許可により処理時間を計数するためのリセットカウンタ３０にベクトルロード命令の「ＶＬ」（ベクトル長）をセットし、カウントダウンを開始する。これと同時に、「Ｖ０」への書き込み中を示すフラグ３４と、１要素ずれ移送命令用の「Ｖ０」書き込みフラグ３３に、それぞれ”１”をセットする。上記フラグ３４は、リセットカウンタ３０の値が”０”になるまで、即ち全要素の書き込みが終了するまで”１”となる。また、フラグ３３は、「Ｖ０」に先行ベクトルデータの２要素目まで書き込みが終了するまで”１”となる。
【００３３】
さらに、後続のベクトル移送命令の発行許可願いが１要素ずれ移送命令かどうかの判別は、デコーダ３７にて発行許可願いの「Ｓｙ」フィールドが１か否かで判断する。そして、１要素ずれ移送の場合は、フラグ３３の反転論理とデコーダ３７によりＳｙ＝１となる条件をＡＮＤすることで発行許可が生成される。一方、１要素ずれ移送でない場合は、フラグ３４の反転論理とデコーダ３７によりＳｙ≠１となる条件をＡＮＤすることで発行許可が生成される。つまり、１要素ずれ移送の場合は先行するベクトルロード命令が発行されてから２要素目の処理まで進んだ時点で、１要素ずれ移送命令の発行許可を命令発行部６に対して返却し、１要素ずれ移送命令でない場合は完全にベクトルロード命令の処理が完了してから命令発行許可を返却する。
【００３４】
なお、上記ベクトル命令発行制御部２が有する命令識別部５、命令発行部６、命令発行許可判定部７は、当該ベクトル命令発行制御部２に本発明であるプログラムが組み込まれるよって実現される。
【００３５】
［動作］
次に、上記構成のベクトル演算装置１の動作を説明する。まず、命令識別部５にてベクトル命令の抽出を行う。抽出されたベクトル命令の中には、ベクトルロード命令、ベクトル演算命令、ベクトル移送命令等を含んでいる。そして、ここでは、図５に示したベクトルロード命令、ベクトル移送命令、ベクトル演算命令が、この順に命令識別部５から命令発行部６へと送出される。
【００３６】
続いて、命令発行部６は、命令識別部５から受信した命令を保持しておくと同時に、受信順に発行許可願い２１を命令発行許可判定部７へと連続して送出する。但し、命令発行部６は、命令発行許可判定部７からの発行許可２２を得るまで各ベクトルパイプへの命令は発行しない。
【００３７】
そして、命令発行許可判定部７は、仕掛かり中の先行命令による処理時間を計数しており、処理が完了するタイミングを見計らって命令発行部６から受信した後続命令の発行許可願いに対する発行許可を命令発行部６に返却する。このとき、命令発行許可判定部７は、ベクトルロード命令の発行許可願い２１を受信した場合に、ベクトルロード命令よりも前の命令は存在しないので、命令発行許可２２を直ちに命令発行部６へと返却する。すると、命令発行許可判定部７は、ベクトルロード命令の発行許可により処理時間を計数するためのリセットカウンタ３０にベクトルロード命令のＶＬをセットしてカウントダウンを開始すると同時に、Ｖ０への書き込み中を示すフラグ３４と、１要素ずれ移送命令用のＶ０書き込みフラグ３３とに、それぞれ”１”をセットする。このとき、フラグ３４は、リセットカウンタ３０の値が”０”になるまで、即ち全要素の書き込みが終了するまで”１”となり、フラグ３３は２要素目まで書き込みが終了するまで”１”となる。
【００３８】
さらに、後続のベクトル移送命令の発行許可願いが、１要素ずれ移送命令かどうかの判別は、デコーダ３７にて発行許可願いの「Ｓｙ」フィールドが１か否かで判断する。１要素ずれ移送の場合は、フラグ３３の反転論理とデコーダ３７によりＳｙ＝１となる条件をＡＮＤすることで発行許可が生成され、１要素ずれ移送でない場合はフラグ３４の反転論理とデコーダ３７によりＳｙ≠１となる条件をＡＮＤすることで発行許可が生成される。つまり、１要素ずれ移送の場合は先行するベクトルロード命令が発行されてから２要素目の処理まで進んだ時点で、１要素ずれ移送命令の発行許可を命令発行部６に対して返却し、１要素ずれ移送命令でない場合は完全にベクトルロード命令の処理が完了してから命令発行許可を返却する。
【００３９】
そして、命令発行許可判定部７は、１要素ずれ移送命令の発行許可を送出すると次のベクトル演算命令の発行許可判定を行う。上述したように、既にベクトルロード命令とベクトル移送命令の発行許可が出されている場合には、ベクトル演算に必要なデータＶ０とＶ１が揃い始めていることから、直ちにベクトル演算命令の発行許可を命令発行部６へと返却する。
【００４０】
そして、命令発行部６は、ベクトルロード命令、１要素ずれ移送命令、ベクトル演算命令それぞれの発行許可２２を受信した時点で、ベクトルパイプ３へと命令実行指示２３を発行する。つまり、命令発行部６は、まず、ベクトルロード命令の命令実行指示２３をベクトルパイプ３へと発行し（ベクトルロード命令工程（ベクトル格納命令工程））、その後、先行ベクトルデータの２つ目の要素データが格納された段階で、一要素ずれのベクトル移送命令の命令実行指示２３をベクトルパイプ２３に発行し、ベクトル移送を開始する（ベクトル移送命令工程）。
【００４１】
以上説明したように、本実施形態におけるベクトル演算装置１は、図８（ｂ）のタイムチャートに示すように、先行ベクトルデータの要素データをベクトルレジスタに全て格納することを待つことなく、先行ベクトルデータの２要素目、つまり、後続ベクトルデータの先頭の要素がＶ０に書き込まれた段階で、当該データをＶ１に移行する処理を迅速に行うことができる。一方で、特許文献１に開示されたベクトル演算装置では、図８（ａ）に示すように、ベクトルロード命令による先行ベクトルデータの全ての要素をベクトルレジスタＶ０に対して書き込みが終了した後でないと、その後のＶ０からＶ１へのベクトル移送命令を開始できない。従って、図８（ａ）の場合と比較して、本実施形態では、Ｖ０からＶ１へのベクトルデータの移送を早く開始することができ、その分、Ｖ０とＶ１とのベクトル演算も早く開始することができる。つまり、図８（ｂ）に示すように、３つのベクトル命令を並行して処理することが可能となる。その結果、プログラム全体の実行時間を短縮することができ、ベクトル演算装置の性能の向上を図ることができる。
【００４２】
ここで、上記では、先行ベクトルデータをベクトルレジスタに格納する動作がベクトルロード命令による場合を例示したが、かかる命令による動作であることに限定されない。つまり、移送前にベクトルレジスタに格納される先行ベクトルデータは、いかなる命令によってベクトルレジスタに格納されてもよい。例えば、上述したベクトル演算命令によってベクトルレジスタに格納された演算結果であるデータを、先行ベクトルデータとして扱うことも可能である。この場合には、ベクトル演算命令による演算結果を先行ベクトルデータとしてベクトルレジスタに格納し、後続ベクトルデータの要素ずれ分だけ格納された後に、移送を開始する。これにより、ある演算結果のデータを後続命令のオペランドデータとして繰り返し利用することができる。そして、この場合にも、演算結果の全ての要素がベクトルレジスタに格納されることを待つことなく、移送を開始することができる。従って、上述同様に、プログラムの実行時間の短縮化及び演算装置の処理性能の向上を図ることができる。
【００４３】
なお、上記では、先行ベクトルデータに対して、後続ベクトルデータが１要素ずれている場合を例示したが、後続ベクトルデータの要素ずれ数は、１要素であることに限定されない。かかる場合には、ベクトルロード命令にて、先行ベクトルデータのうち後続ベクトルデータの先頭の要素データが格納された直後、あるいは、その後に、ベクトル移送命令を発行して、ベクトル移送を実行するよう構成するとよい。具体的に、例えば、後続ベクトルデータが、先行ベクトルデータに対して３要素ずれている、つまり、後続ベクトルデータの先頭の要素が、先行ベクトルデータの４要素目である場合を考える。この場合には、先行ベクトルデータをベクトルレジスタに４要素ロードしたとき、あるいは、さらに後の要素をロードしたときに、そのベクトルレジスタから後続ベクトルデータを格納するベクトルレジスタに、ベクトル移送を開始する。
【００４４】
以上のようにしても、ベクトルレジスタに対する全ての先行ベクトルデータの終了を待つことなく、後続ベクトルデータの移送を行うことができる。その結果、プログラムの実行時間の短縮化を図ることができ、演算装置の処理性能の向上を図ることができる。
【産業上の利用可能性】
【００４５】
本発明は、ベクトル演算装置を備えたコンピュータに利用することができ、産業上の両可能性を有する。
【図面の簡単な説明】
【００４６】
【図１】ベクトル演算装置の構成を示す図である。
【図２】ベクトル命令発行制御部の構成を示す図である。
【図３】ベクトル演算の流れを示す図である。
【図４】ベクトル命令を示す図である。
【図５】ベクトル命令を示す図である。
【図６】ベクトルデータの移送状態を説明する図である。
【図７】ベクトルデータの移送状態を説明する図である。
【図８】ベクトル演算時間を示す図である。
【符号の説明】
【００４７】
１  ベクトル演算装置
２  ベクトル命令発行制御部
３  ベクトルパイプ
４  パイプ間クロスバ
５  命令識別部
６  命令発行部
７  命令発行許可部
１０  ベクトルレジスタ
１１  演算器
【図１】
2009104494.tif 000003
【図２】
2009104494.tif 000004
【図３】
2009104494.tif 000005
【図４】
2009104494.tif 000006
【図５】
2009104494.tif 000007
【図６】
2009104494.tif 000008
【図７】
2009104494.tif 000009
【図８】
2009104494.tif 000010