(57)【要約】      （修正有）【課題】ベクトル処理装置の性能を向上させるベクトル処理装置、ベクトル処理方法、プログラムを提供する。【解決手段】ベクトル処理装置は、ベクトルレジスタの要素を要素単位で保持するバンクを複数備えている。バンクには、複数のベクトルレジスタＶＲ０００〜ＶＲ２５５の要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている。ベクトル処理装置が行うベクトル処理方法は、ベクトルレジスタの要素を要素単位で保持するバンクを複数備える。バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、バンクから要素を読み出して、演算を実行する。【選択図】図１
2020144449.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルレジスタの要素を要素単位で保持するバンクを複数備え、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている
ベクトル処理装置。
【請求項２】
請求項１に記載のベクトル処理装置であって、
前記バンクには、同一のベクトルレジスタの要素を複数の前記バンクが保持し、かつ、同一の要素番号の要素を複数の前記バンクが保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
【請求項３】
請求項２に記載のベクトル処理装置であって、
前記バンクには、同一の要素番号の要素を複数の前記バンクのそれぞれが少なくとも１つ保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
【請求項４】
請求項２または請求項３に記載のベクトル処理装置であって、
前記バンクには、同一の要素番号の要素を複数の前記バンクが均等に保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のベクトル処理装置であって、
並列動作を行う複数のベクトルレーンを有しており、
前記ベクトルレーンのそれぞれが複数の前記バンクを有している
ベクトル処理装置。
【請求項６】
請求項５に記載のベクトル処理装置であって、
８個の前記ベクトルレーンを有しており、
前記ベクトルレーンのそれぞれが８個の前記バンクを有している
ベクトル処理装置。
【請求項７】
請求項１から請求項６までのいずれか１項に記載のベクトル処理装置であって、
前記バンクは、要素を格納するエントリを２５６個有している
ベクトル処理装置。
【請求項８】
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置が行うベクトル処理方法であって、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する
ベクトル処理方法。
【請求項９】
請求項８に記載のベクトル処理方法であって、
前記バンクには、同一のベクトルレジスタの要素を複数の前記バンクが保持し、かつ、異なるベクトルレジスタの同一の要素番号の要素を複数の前記バンクが保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理方法。
【請求項１０】
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置に、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する処理を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理装置、ベクトル処理方法、プログラムに関する。
【背景技術】
【０００２】
データを保持するためのベクトルレジスタを有するベクトル処理装置が知られている。
【０００３】
ベクトルレジスタの実装方法が記載された文献としては、例えば、特許文献１がある。特許文献１には、ベクトルレジスタの各要素を保持するバンクであるＳＲＡＭを１６個有するベクトルレジスタが記載されている。具体的には、特許文献１の場合、１つのバンクにすべてのベクトルレジスタの同一要素番号を割り当てる方法が記載されている。例えば、特許文献１には、Ｖ０〜Ｖ７の８個のベクトルレジスタがある場合に、ベクトルレジスタＶ０の要素番号♯００の要素、ベクトルレジスタＶ１の要素番号♯００の要素、ベクトルレジスタＶ２の要素番号♯００の要素、ベクトルレジスタＶ３の要素番号♯００の要素、ベクトルレジスタＶ４の要素番号♯００の要素、ベクトルレジスタＶ５の要素番号♯００の要素、ベクトルレジスタＶ６の要素番号♯００の要素、ベクトルレジスタＶ７の要素番号♯００の要素、をＳＲＡＭ♯０に格納する例が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５４９１１１３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載のように、１つのバンクに全てのベクトルレジスタの同一要素番号を割り当てる場合、複数命令を同時処理することが出来ず、ベクトルレジスタのリード帯域や演算器の効率的な使用が出来なかった。その結果、ベクトル処理装置の性能を向上させることが難しい、という問題が生じていた。特に、この問題は、ベクトル長が短い場合に顕著になっていた。
【０００６】
そこで、本発明の目的は、ベクトル処理装置の性能を向上させることが難しい、という課題を解決するベクトル処理装置、ベクトル処理方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
かかる目的を達成するため本発明の一形態であるベクトル処理装置は、
ベクトルレジスタの要素を要素単位で保持するバンクを複数備え、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている
という構成をとる。
【０００８】
また、本発明の他の形態であるベクトル処理方法は、
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置が行うベクトル処理方法であって、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する
という構成をとる。
【０００９】
また、本発明の他の形態であるプログラムは、
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置に、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する処理を実現するためのプログラムである。
【発明の効果】
【００１０】
本発明は、以上のように構成されることにより、ベクトル処理装置の性能を向上させることが難しい、という課題を解決するベクトル処理装置、ベクトル処理方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態にかかるベクトルプロセッサの構成の一例を示すブロック図である。
【図２】図１で示すベクトルプロセッサが行う処理の一例を示す図である。
【図３】図２で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図４】図１で示すベクトルプロセッサが行う他の処理の一例を示す図である。
【図５】図４で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図６】従来のベクトルプロセッサの構成の一例を示すブロック図である。
【図７】図６で示すベクトルプロセッサが行う処理の一例を示す図である。
【図８】図７で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図９】図６で示すベクトルプロセッサが行う他の処理の一例を示す図である。
【図１０】図９で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１１】従来方式のＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１２】従来方式のＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１３】従来方式のＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１４】本実施形態で説明したベクトルプロセッサのＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１５】本実施形態で説明したベクトルプロセッサのＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１６】本実施形態で説明したベクトルプロセッサのＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。
【図１７】従来方式と本実施形態で説明したベクトルプロセッサのベクトルレジスタのリードポート使用率と処理サイクル数の一例を示す図である。
【図１８】本発明の第２の実施形態におけるベクトル演算装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１２】
［第１の実施形態］
本発明の第１の実施形態を図１から図１７までを参照して説明する。図１は、ベクトルプロセッサの構成の一例を示すブロック図である。図２は、図１で示すベクトルプロセッサが行う処理の一例を示す図である。図３は、図２で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。図４は、ベクトルプロセッサが行う他の処理の一例を示す図である。図５は、図４で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。図６は、従来のベクトルプロセッサの構成の一例を示すブロック図である。図７は、従来のベクトルプロセッサが行う処理の一例を示す図である。図８は、図７で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。図９は、従来のベクトルプロセッサが行う他の処理の一例を示す図である。図１０は、図９で示す処理を行う際のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１１は、従来方式のＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１２は、従来方式のＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１３は、従来方式のＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１４は、本実施形態で説明したベクトルプロセッサのＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１５は、本実施形態で説明したベクトルプロセッサのＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１６は、本実施形態で説明したベクトルプロセッサのＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況の一例を示す図である。図１７は、従来方式と本実施形態で説明したベクトルプロセッサのベクトルレジスタのリードポート使用率と処理サイクル数の一例を示す図である。
【００１３】
本発明の第１の実施形態では、ベクトルレジスタの各要素を格納するバンクを複数有するベクトル処理装置であるベクトルプロセッサについて説明する。例えば、ベクトルプロセッサは、１つのベクトルレーン１０あたり８個のバンク１２を有している。後述するように、本実施形態で説明するベクトルプロセッサの場合、８個のバンク１２に対して、ベクトルレジスタの要素番号がインターリーブされて割り当てられている。例えば、バンク１２には、同一の要素番号の要素を８個のバンクが均等に保持するように、ベクトルレジスタの要素番号が割り当てられている。
【００１４】
本実施形態において説明するベクトルプロセッサは、ベクトルレジスタを２５６個保有し、最大ベクトル長が２５６の構成を有している。図１は、本実施形態において説明するベクトルプロセッサの構成の一例を示している。図１で示すように、ベクトルプロセッサは、複数のベクトルレーン１０（ベクトルレーン１０−００、…、ベクトルレーン１０−３１。特に区別しない場合は、ベクトルレーン１０と表記する）を有している。具体的には、例えば、ベクトルプロセッサは、ベクトルレーン１０−００、…、ベクトルレーン１０−３１、の３２個のベクトルレーンを有している。なお、ベクトルレーン１０−００からベクトルレーン１０−３１までの３２個のベクトルレーンは、並列動作を行うことが出来る。
【００１５】
ベクトルレーン１０は、書込クロスバ１１と、８個のバンク１２（バンク１２−０、バンク１２−１、バンク１２−２、バンク１２−３、バンク１２−４、バンク１２−５、バンク１２−６、バンク１２−７。特に区別しない場合は、バンク１２と表記する）と、供給クロスバ１３と、４個の演算器１４（演算器１４−０、演算器１４−１、演算器１４−２、演算器１４−３。特に区別しない場合は、演算器１４と表記する）と、ストアユニット１５と、を有している。
【００１６】
書込クロスバ１１は、演算器１４や記憶装置であるメモリ２０と通信可能なよう接続されるとともに、ベクトルレジスタであるバンク１２と通信可能なよう接続されている。書込クロスバ１１は、演算器１４やメモリ２０からの出力であるデータ（要素）を受け取って、ベクトルレジスタであるバンク１２へと出力する。このように、書込クロスバ１１は、演算器１４やメモリ２０からバンク１２へデータである要素を書き込む際に用いる。
【００１７】
バンク１２は、ベクトルレジスタの各要素を保持する。バンク１２は、レジスタやＳＲＡＭ(Static Random Access Memory)で構成される。例えば、バンク１２は、２５６のエントリを有する。
【００１８】
本実施形態の場合、８個のバンク１２に対して、ベクトルレジスタの要素番号がインターリーブされて割り当てられている。
【００１９】
例えば、図１で示すように、ベクトルレジスタＶＲ０００の要素０００は、ベクトルレーン１０−００のバンク１２−０、ベクトルレジスタＶＲ００１の要素０００は、ベクトルレーン１０−００のバンク１２−１、ベクトルレジスタＶＲ００２の要素０００は、ベクトルレーン１０−００のバンク１２−２、ベクトルレジスタＶＲ００３の要素０００は、ベクトルレーン１０−００のバンク１２−３、…、というように、ベクトルレジスタの要素番号が各バンク１２に割り当てられている。また、ベクトルレジスタＶＲ０００の要素００１は、ベクトルレーン１０−０１のバンク１２−０、ベクトルレジスタＶＲ００１の要素００１は、ベクトルレーン１０−０１のバンク１２−１、ベクトルレジスタＶＲ００２の要素００１は、ベクトルレーン１０−０１のバンク１２−２、…、というように、ベクトルレジスタの要素番号が各バンク１２に割り当てられている。また、ベクトルレジスタＶＲ０００の要素００２は、ベクトルレーン１０−０２のバンク１２−０、ベクトルレジスタＶＲ００１の要素００２は、ベクトルレーン１０−０２のバンク１２−１、ベクトルレジスタＶＲ００２の要素００２は、ベクトルレーン１０−０２のバンク１２−２、…というように、ベクトルレジスタの要素番号が各バンク１２に割り当てられている。
【００２０】
換言すると、例えば、ベクトルレーン１０−００のバンク１２−０には、ベクトルレジスタＶＲ０００の要素０００、ベクトルレジスタＶＲ００８の要素０００、ベクトルレジスタＶＲ０１６の要素０００、…、ベクトルレジスタ２３２の要素２２４、ベクトルレジスタＶＲ２４０の要素２２４、ベクトルレジスタＶＲ２４８の要素２２４、というように、ベクトルレジスタの要素番号が割り当てられている。
【００２１】
このように、バンク１２には、複数のベクトルレジスタの要素番号が割り当てられている。例えば、図１で示すベクトルレーン１０−００のバンク１２−０の場合、ベクトルレジスタＶＲ０００の要素０００、ベクトルレジスタＶＲ００８の要素０００、ベクトルレジスタＶＲ０１６の要素０００、…、などのように、複数のベクトルレジスタの要素番号が割り当てられている。また、バンク１２には、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている。例えば、図１で示すベクトルレーン１０−００のバンク１２−０の場合、要素番号０００の一部である、ベクトルレジスタＶＲ０００の要素０００、ベクトルレジスタＶＲ００８の要素０００、ベクトルレジスタＶＲ０１６の要素０００、…、が割り当てられている。言い換えると、バンク１２には、同一のベクトルレジスタの要素を複数のバンク１２が保持し、かつ、同一の要素番号の要素を複数のバンク１２が保持するように、ベクトルレジスタの要素番号が割り当てられている、ということが出来る。
【００２２】
また、図１で示すように、同一のベクトルレーン１０内のそれぞれのバンク１２が同一の要素番号の要素を少なくとも１つ保持するように、要素番号が割り当てられている。例えば、ベクトルレーン１０−００のバンク１２−０、バンク１２−１、バンク１２−２、バンク１２−３、バンク１２−４、バンク１２−５、バンク１２−６、バンク１２−７のそれぞれは、同一の要素番号である０００が割り当てられている。より具体的には、図１の場合、同一のベクトルレーン１０内のバンク１２が同一の要素番号の要素を均等に保持するように、要素番号が割り当てられている。例えば、図１の場合、ベクトルレーン１０−００のバンク１２−０には、ベクトルレジスタＶＲ０００の要素０００、ベクトルレジスタＶＲ００８の要素０００、…ベクトルレジスタＶＲ２４８の要素０００というように、要素番号０００が３２個割り当てられている。同様に、ベクトルレーン１０−００のバンク１２−１には、ベクトルレジスタＶＲ００１の要素０００、ベクトルレジスタＶＲ００９の要素０００、…ベクトルレジスタＶＲ２４９の要素０００というように、要素番号０００が３２個割り当てられている。また、バンク１２−２、バンク１２−３、バンク１２−４、バンク１２−５、バンク１２−６、バンク１２−７のそれぞれにも、要素番号０００が３２個割り当てられている。
【００２３】
このように、８個のバンク１２に対して、ベクトルレジスタの要素番号がインターリーブされて割り当てられている。換言すると、８個のバンク１２に対して、ベクトルレジスタの要素番号が均等に割り当てられている。
【００２４】
供給クロスバ１３は、バンク１２と通信可能なよう接続されるとともに、演算器１４やストアユニット１５と通信可能なよう接続されている。供給クロスバ１３は、バンク１２から読み出されたデータである要素を演算器１４やストアユニット１５へと出力する。このように、供給クロスバ１３は、各ベクトルレジスタ（バンク１２）から演算器１４やメモリ２０へデータである要素を供給する際に用いる。
【００２５】
演算器１４は、供給クロスバ１３と通信可能なよう接続されるとともに、書込クロスバ１１と通信可能なよう接続される。演算器１４は、供給クロスバ１３を介して供給されたデータである要素を演算する。そして、演算器１４は、演算結果を書込クロスバ１１へ出力する。
【００２６】
ストアユニット１５は、供給クロスバ１３と通信可能なよう接続されるとともに、メモリ２０と通信可能なよう接続される。ストアユニット１５は、供給クロスバ１３を介して供給されたデータである要素をメモリへと転送する。このように、ストアユニット１５は、各ベクトルレジスタ（バンク１２）からメモリ２０へデータを転送する際に用いられる。
【００２７】
以上が、ベクトルプロセッサの構成の一例である。なお、書込クロスバ１１や供給クロスバ１３の出力先の制御は、ハードウェアで実現しても構わないし、記憶装置に格納されたプログラムを演算装置が実行することで実現するソフトウェアにより実現しても構わない。本実施形態において、書込クロスバ１１や供給クロスバ１３の出力先の制御方法は特に限定しない。
【００２８】
図２は、図１を用いて説明したベクトルプロセッサにおいて、以下の命令を実行した際の動作例を示している。また、図３は、図２で示す命令を実行した際のベクトルレジスタのリードポートの使用状況を示している。なお、図３は、横軸がサイクル数を示している。
命令  １：ＶＲ００２＜＝ＶＲ０００＋ＶＲ００１（ＶＬ＝３２）
【００２９】
命令１では、例えば、１つ目のオペランド（被演算子）であるベクトルレジスタＶＲ０００の要素０００をバンク１２−０から読み出す。同じサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００１の要素０００をバンク１２−１から読み出す。そして、二つのデータを演算器１４−０へ入力し、書込クロスバ１１を介して、ディスティネーション（転送先）であるバンク１２−２のベクトルレジスタＶＲ００２の要素０００に演算結果を書き戻す。
【００３０】
このように、本実施形態で説明するベクトルプロセッサの場合、ベクトルレジスタＶＲ０００、ベクトルレジスタＶＲ００１の要素０００がどちらもがバンク１２−０に割り当てられているわけではなく、それぞれバンク１２−０、バンク１２−１に割り当てられている（図２参照）。そのため、図３で示すように、本実施形態で説明するベクトルプロセッサの場合、２つの入力オペランドを１サイクルで読み出すことが出来る。
【００３１】
なお、命令１の場合、ベクトル長が３２である。そのため、ベクトルレーン１０−００と同様に、ベクトルレーン１０−０１からベクトルレーン１０−３１までもそれぞれ上述した場合と同じようにデータを読み出し、演算を行う。
【００３２】
図４は、図１を用いて説明したベクトルプロセッサにおいて、以下の命令（図２とは別の命令）を実行した際の動作例を示している。また、図５は、図４で示す命令を実行した際のベクトルレジスタのリードポートの使用状況を示している。
命令１：ＶＲ２５５＜＝ＶＲ０００＋ＶＲ００１（ＶＬ＝３２）
命令２：ＶＲ２５４＜＝ＶＲ００２＋ＶＲ００３（ＶＬ＝３２）
命令３：ＶＳＴ  ＶＲ００４（ＶＬ＝３２）
【００３３】
命令１では、例えば、１つ目のオペランドであるベクトルレジスタＶＲ０００の要素０００をバンク１２−０から読み出す。同じサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００１の要素０００をバンク１２−１から読み出す。そして、二つのデータを演算器１４−０へ入力し、書込クロスバ１１を介して、ディスティネーション（転送先）であるバンク１２−７のベクトルレジスタＶＲ２５５の要素０００に演算結果を書き戻す。
【００３４】
また、命令２では、例えば、命令１と同じサイクルで、１つ目のオペランドであるベクトルレジスタＶＲ００２の要素０００をバンク１２−２から読み出す。同じサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００３の要素０００をバンク１２−３から読み出す。そして、二つのデータを演算器１４−１へ入力し、書込クロスバ１１を介して、ディスティネーション（転送先）であるバンク１２−６のベクトルレジスタＶＲ２５４の要素０００に演算結果を書き戻す。
【００３５】
また、命令３では、命令１や命令２と同じサイクルで、オペランドであるベクトルレジスタＶＲ００４の要素０００をバンク１２−４から読み出す。そして、データをストアユニット１５へ入力し、ストアユニット１５からメモリ２０へデータを転送する。
【００３６】
このように、本実施形態で説明するベクトルプロセッサの場合、要素０００が異なるバンクに割り当てられている。そのため、例えば、ベクトルレジスタＶＲ０００の要素０００とベクトルレジスタＶＲ００１の要素０００の読み出しを同じサイクルで実行することが出来る。また、後続の命令２、命令３も要素０００を読み出す必要があるが、異なるバンクに割り当てられているベクトルレジスタであれば、同じサイクルで読み出すことが可能になる。
【００３７】
上述した例の場合、ベクトルレジスタＶＲ０００、ベクトルレジスタＶＲ００１、ベクトルレジスタＶＲ００２、ベクトルレジスタＶＲ００３、ベクトルレジスタＶＲ００４の要素０００は、それぞれバンク１２−０、バンク１２−１、バンク１２−２、バンク１２−３、バンク１２−４に割り当てられている。そのため、図５で示すように、５つの入力オペランドを１サイクルで読み出すことが出来る。その結果、３つの命令を同時に処理することが出来る。
【００３８】
以上のように、本実施形態で説明するベクトルプロセッサの場合、ＶＬ＝３２のようなベクトル長の短いベクトル命令でも、各ベクトルレーン１０のバンク１２−０以外も使用することが出来る。そのため、１サイクルで複数の入力オペランドを読み出し、複数の演算器１４やストアユニット１５へデータを供給することが出来る。その結果、演算器１４やストアユニット１５を並行して動作させることが出来る。
【００３９】
例えば、本実施形態で説明するベクトルプロセッサの場合、１オペランドの演算命令であれば、最大８命令を同時に処理することが出来る。また、２オペランドの演算命令であれば最大４命令を同時に処理することができ、３オペランドの演算命令であれば、最大２命令を同時に処理することが出来る。また、本実施形態で説明するベクトルプロセッサの場合、１オペランドのベクトルストア命令を１つ、２オペランドの演算命令を３つ発行するなど、ストア命令と演算命令を同時に処理することも可能になる。
【００４０】
ここで、従来方式のベクトルプロセッサの構成例について、図６を参照して説明する。図６で示すように、従来方式のベクトルプロセッサは、複数のベクトルレーン３０（ベクトルレーン３０−００、…、ベクトルレーン３０−３１。特に区別しない場合は、ベクトルレーン３０と表記する）を有している。また、ベクトルレーン３０は、バンク３２を除いて、本実施形態で説明した複数のベクトルレーン１０を有するベクトルプロセッサと同様の構成を有している。
【００４１】
従来方式の場合、１つのバンク３２には、２５６個のベクトルレジスタ全ての同一要素番号のデータが割り当てられている。
【００４２】
例えば、図６で示すように、全ての要素０００は、ベクトルレーン３０−００のバンク３２−０、全ての要素００１は、ベクトルレーン３０−０１のバンク３２−０、全ての要素００２は、ベクトルレーン３０−０２のバンク３２−０、…と割り当てられている。
【００４３】
図７は、図６を用いて説明した従来方式のベクトルプロセッサにおいて、以下の命令を実行した際の動作例を示している。また、図８は、図７で示す命令を実行した際のベクトルレジスタのリードポートの使用状況を示している。
命令  １：ＶＲ００２＜＝ＶＲ０００＋ＶＲ００１（ＶＬ＝３２）
【００４４】
命令１では、例えば、１つ目のオペランドであるベクトルレジスタＶＲ０００の要素０００をバンク３２−０から読み出す。次のサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００１の要素０００をバンク３２−０から読み出す。そして、二つのデータを演算器１４−０へ入力し、書込クロスバ１１を介して、ディスティネーションであるバンク３２−０のベクトルレジスタＶＲ００２の要素０００に演算結果を書き戻す。
【００４５】
このように、従来方式のベクトルプロセッサの場合、ベクトルレジスタＶＲ０００、ベクトルレジスタＶＲ００１の要素０００がどちらもバンク３２−０に割り当てられている（図７参照）。そのため、図８で示すように、従来方式のベクトルプロセッサの場合、バンク３２−０から２つの入力オペランドを読み出すために、２サイクル必要になる。
【００４６】
なお、命令１の場合、ベクトル長が３２である。そのため、ベクトルレーン３０−００と同様に、ベクトルレーン３０−０１からベクトルレーン３０−３１までもそれぞれ上述した場合と同じようにデータを読み出し、演算を行う。
【００４７】
このように、従来方式の場合、ＶＬ＝３２のようなベクトル長の短いベクトル命令では、各ベクトルレーン３０のバンク３２−０のみが使用される。そのため、ベクトル長の短いベクトル命令では、バンク３２−１からバンク３２−７までを使用することはない。また、演算器１４も同様に演算器１４−０のみが使用されるため、演算器１４−１から演算器１４−３までを使用することはない。
【００４８】
図９は、図６を用いて説明したベクトルプロセッサにおいて、以下の命令（図７とは別の命令）を実行した際の動作例を示している。また、図１０は、図９で示す命令を実行した際のベクトルレジスタのリードポートの使用状況を示している。
命令１：ＶＲ２５５＜＝ＶＲ０００＋ＶＲ００１（ＶＬ＝３２）
命令２：ＶＲ２５４＜＝ＶＲ００２＋ＶＲ００３（ＶＬ＝３２）
命令３：ＶＳＴ  ＶＲ００４（ＶＬ＝３２）
【００４９】
命令１では、例えば、１つ目のオペランドであるベクトルレジスタＶＲ０００の要素０００をバンク３２−０から読み出す。次のサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００１の要素０００をバンク３２−０から読み出す。そして、二つのデータを演算器１４−０へ入力し、書込クロスバ１１を介して、ディスティネーション（転送先）であるバンク３２−０のベクトルレジスタＶＲ２５５の要素０００に演算結果を書き戻す。
【００５０】
次に、命令２では、例えば、１つ目のオペランドであるベクトルレジスタＶＲ００２の要素０００をバンク３２−０から読み出す。次のサイクルで２つ目のオペランドであるベクトルレジスタＶＲ００３の要素０００をバンク３２−０から読み出す。そして、二つのデータを演算器１４−０へ入力し、書込クロスバ１１を介して、ディスティネーション（転送先）であるバンク３２−０のベクトルレジスタＶＲ２５４の要素０００に演算結果を書き戻す。
【００５１】
また、命令３では、オペランドであるベクトルレジスタＶＲ００４の要素０００をバンク３２−０から読み出す。そして、データをストアユニット１５へ入力し、ストアユニット１５からメモリ２０へデータを転送する。
【００５２】
このように、従来方式では、要素０００が、同じバンク３２−０に割り当てられている。そのため、ベクトルレジスタＶＲ０００の要素０００とベクトルレジスタＶＲ００１の要素０００の読み出しには２サイクル必要になる。また、後続の命令２、命令３も要素０００を読み出す必要があるが、バンク３２−０が使用中であるため、命令１と同時には処理することができない。従来方式では、命令のオペランド分のサイクル数が必ず入力オペランドの準備に必要になる。
【００５３】
上述した例の場合、ベクトルレジスタＶＲ０００、ベクトルレジスタＶＲ００１、ベクトルレジスタＶＲ００２、ベクトルレジスタＶＲ００３、ベクトルレジスタＶＲ００４の要素０００がどれもバンク３２−０に割り当てられている。そのため、図１０で示すように、バンク３２−０から５つの入力オペランドを読み出すために、５サイクル必要になる。
【００５４】
以上のように、従来方式のベクトルプロセッサの場合、図７の場合と同様に、ＶＬ＝３２のようなベクトル長の短いベクトル命令では、各ベクトルレーンのバンク３２−０のみが使用される。そのため、ベクトル長の短いベクトル命令では、バンク３２−１からバンク３２−７までを使用することはない。また、演算器１４も同様に演算器１４−０のみが使用されるため、演算器１４−１から演算器１４−３までを使用することはない。
【００５５】
以上説明したように、従来方式の場合、バンク１２を効率的に使用することが出来ない。そのため、ベクトルプロセッサの性能を向上させることが難しい。一方、本実施形態で説明したベクトルプロセッサの場合、ベクトルレジスタの要素番号がインターリーブされて割り当てられている。このような構成により、ベクトルプロセッサは、従来方式よりもバンク１２を効率的に使用することが出来る。その結果、従来方式よりも効率的に演算器１４やストアユニット１５を使用することが可能となり、ベクトル処理装置であるベクトルプロセッサの性能を向上させることが可能となる。
【００５６】
ここで、図１１から図１７までを参照して、本実施形態で説明したベクトルプロセッサが有する効果についてより具体的に説明する。
【００５７】
図１１は、従来方式のベクトル長ＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況を示している。また、図１２は、従来方式のベクトル長ＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況を示している。また、図１３は、従来方式のベクトル長ＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況を示している。
【００５８】
図１１から図１３中の数字は、それぞれ数字に対応する命令（つまり、８個の命令）が処理されていることを示し、それぞれベクトルレジスタのリードポートを使用している所に数字が書かれている。
【００５９】
図１１で示すように、ＶＬ＝２５６の命令を８命令実行すると、実行サイクル数は、２３となる。また、オペランドリード完了までに、２３×８＝１８４リードポート中の１２８リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、１２８／１８４×１００で約７０％となる。
【００６０】
また、図１２で示すように、ＶＬ＝１２８の命令を８命令実行すると、実行サイクル数は、１９となる。また、オペランドリード完了までに、１９×８＝１５２リードポート中の６４リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、６４／１５２×１００で約４２％となる。
【００６１】
また、図１３で示すように、ＶＬ＝３２の命令を８命令実行すると、実行サイクル数は、１６となる。また、オペランドリード完了までに、１６×８＝１２８リードポート中の１６リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、１６／１２８×１００で約１３％となる。
【００６２】
図１１から図１３までに示すように、従来方式の場合、ベクトル長が短くなるにつれて、ベクトルレジスタのリードポート使用率が悪化する傾向にある。ベクトルレジスタのリードポート使用率が悪化すると、複数ある演算器へのデータ供給が足りず、性能を上げることができない。
【００６３】
一方、図１４は、本実施形態で説明した方式のベクトル長ＶＬ＝２５６命令動作時のベクトルレジスタのリードポートの使用状況を示している。また、図１５は、本実施形態で説明した方式のベクトル長ＶＬ＝１２８命令動作時のベクトルレジスタのリードポートの使用状況を示している。また、図１６は、本実施形態で説明した方式のベクトル長ＶＬ＝３２命令動作時のベクトルレジスタのリードポートの使用状況を示している。
【００６４】
図１４から図１６中の数字は、図１１から図１３と同様に、それぞれ数字に対応する命令（つまり、８個の命令）が処理されていることを示し、それぞれベクトルレジスタのリードポートを使用している所に数字が書かれている。
【００６５】
図１４で示すように、ＶＬ＝２５６の命令を８命令実行すると、実行サイクル数は、１６となる。また、オペランドリード完了までに、１６×８＝１２８リードポート中の１２８リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、１２８／１２８×１００で１００％となる。
【００６６】
また、図１５で示すように、ＶＬ＝１２８の命令を８命令実行すると、実行サイクル数は、８となる。また、オペランドリード完了までに、８×８＝６４リードポート中の６４リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、６４／６４×１００で１００％となる。
【００６７】
また、図１６で示すように、ＶＬ＝３２の命令を８命令実行すると、実行サイクル数は、２となる。また、オペランドリード完了までに、２×８＝１６リードポート中の１６リードポートを使用している。そのため、各ベクトルレジスタのリードポートの使用率は、１６／１６×１００で１００％となる。
【００６８】
図１４から図１６までに示すように、本実施形態で説明した方式の場合、ベクトル長に依らず、ベクトルレジスタのリードポート使用率を１００％にすることができる。ベクトルレジスタのリードポート使用率を１００％に保つことで、複数ある演算器へのデータ供給を十分行うことができ、性能を上げることができる。
【００６９】
以上、図１１から図１６までをまとめると、図１７で示すようになる。図１７は、従来方式と本実施形態で説明した方式のリードポート使用率と処理サイクル数の一例を示している。
【００７０】
図１７を参照すると、従来方式では、ベクトル長が短くなるにつれて、リードポート使用率が悪化する。一方、本実施形態で説明した方式では、常に１００％を保つことができる。また、処理サイクルも短くすることができる。
【００７１】
このようにベクトルレジスタの割り当てをインターリーブすることで、命令複数命令処理することが可能になり、ベクトルレジスタのリード帯域、ライト帯域を効率良く使用することができる。特に、短ベクトル時は、効率の悪かったベクトルレジスタのリード帯域を向上させることができる。また、ベクトルレジスタの帯域を効率的に使うことができれば、演算器リソースを効率的に使うことができる。
【００７２】
なお、本実施形態で説明した方式は、例えば、ＳＩＭＤ（single instruction multiple data）レジスタを保有するプロセッサに適用することが出来る。
【００７３】
また、本実施形態では、ベクトルプロセッサの構成例について説明している。ベクトルプロセッサの構成は、必ずしも本実施形態で説明した場合に限定されない。例えば、必ずしも同一の要素番号の要素を複数のバンクが均等に保持するようにベクトルレジスタの要素番号が割り当てられていなくても構わない。また、同一ベクトルレーン１０内の複数のバンク１２のうち任意のバンク１２のみに同一の要素番号の要素を割り当てても構わない。このような構成の場合、均等に保持するよう割り当てる場合と比較して効率は低下するものの、従来方式よりも効率を上げることが出来る。
【００７４】
［第２の実施形態］
次に、図１８を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、ベクトル処理装置４０の構成の概要について説明する。
【００７５】
図１８は、ベクトル処理装置４０の構成の一例を示している。図１８を参照すると、ベクトル処理装置４０は、複数のバンク４１を有している。
【００７６】
バンク４１は、ベクトルレジスタの要素を要素単位で保持する記憶装置である。バンク４１には、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている。
【００７７】
このように、ベクトル処理装置４０は、バンク４１を有している。また、バンク４１には、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている。このような構成により、効率的にバンクを使うことが可能となる。その結果、効率的に演算器などを使うことが可能となり、ベクトル処理装置４０の性能を向上させることが可能となる。
【００７８】
また、上述したベクトル処理装置４０は、当該ベクトル処理装置４０に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置に、バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、バンクから要素を読み出して、演算を実行する処理を実現するためのプログラムである。
【００７９】
また、上述したベクトル処理装置４０により実行されるベクトル処理方法は、ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置が行うベクトル処理方法であって、バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、バンクから要素を読み出して、演算を実行する、という方法である。
【００８０】
上述した構成を有する、プログラム、又は、ベクトル処理方法、の発明であっても、上述したベクトル処理装置４０と同様の作用・効果を有するために、上述した本発明の目的を達成することが出来る。
【００８１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における通信スループット推定装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００８２】
（付記１）
ベクトルレジスタの要素を要素単位で保持するバンクを複数備え、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられている
ベクトル処理装置。
（付記２）
付記１に記載のベクトル処理装置であって、
前記バンクには、同一のベクトルレジスタの要素を複数の前記バンクが保持し、かつ、同一の要素番号の要素を複数の前記バンクが保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
（付記３）
付記２に記載のベクトル処理装置であって、
前記バンクには、同一の要素番号の要素を複数の前記バンクのそれぞれが少なくとも１つ保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
（付記４）
付記２または付記３に記載のベクトル処理装置であって、
前記バンクには、同一の要素番号の要素を複数の前記バンクが均等に保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理装置。
（付記５）
付記１から付記４までのいずれか１項に記載のベクトル処理装置であって、
並列動作を行う複数のベクトルレーンを有しており、
前記ベクトルレーンのそれぞれが複数の前記バンクを有している
ベクトル処理装置。
（付記６）
付記５に記載のベクトル処理装置であって、
８個の前記ベクトルレーンを有しており、
前記ベクトルレーンのそれぞれが８個の前記バンクを有している
ベクトル処理装置。
（付記７）
付記１から付記６までのいずれか１項に記載のベクトル処理装置であって、
前記バンクは、要素を格納するエントリを２５６個有している
ベクトル処理装置。
（付記８）
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置が行うベクトル処理方法であって、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する
ベクトル処理方法。
（付記９）
付記８に記載のベクトル処理方法であって、
前記バンクには、同一のベクトルレジスタの要素を複数の前記バンクが保持し、かつ、異なるベクトルレジスタの同一の要素番号の要素を複数の前記バンクが保持するように、ベクトルレジスタの要素番号が割り当てられている
ベクトル処理方法。
（付記１０）
ベクトルレジスタの要素を要素単位で保持するバンクを複数備えるベクトル処理装置に、
前記バンクには、複数のベクトルレジスタの要素番号が割り当てられるとともに、異なるベクトルレジスタの同一の要素番号の一部が割り当てられており、
前記バンクから要素を読み出して、演算を実行する処理を実現するためのプログラム。
【００８３】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８４】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００８５】
１０  ベクトルレーン
１１  書込クロスバ
１２  バンク
１３  供給クロスバ
１４  演算器
１５  ストアユニット
２０  メモリ
３０  ベクトルレーン
３２  バンク
４０  ベクトル処理装置
４１  バンク
【図１】
2020144449.tif 000003
【図２】
2020144449.tif 000004
【図３】
2020144449.tif 000005
【図４】
2020144449.tif 000006
【図５】
2020144449.tif 000007
【図６】
2020144449.tif 000008
【図７】
2020144449.tif 000009
【図８】
2020144449.tif 000010
【図９】
2020144449.tif 000011
【図１０】
2020144449.tif 000012
【図１１】
2020144449.tif 000013
【図１２】
2020144449.tif 000014
【図１３】
2020144449.tif 000015
【図１４】
2020144449.tif 000016
【図１５】
2020144449.tif 000017
【図１６】
2020144449.tif 000018
【図１７】
2020144449.tif 000019
【図１８】
2020144449.tif 000020