(57)【要約】  物量の増加を最小に抑えつつ、複数要素単位でバンク化されたメモリに対するベクトルストア命令を高速化することを目的とする。複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタ１１３を有し、レジスタバンクごとに読み出しポインタ１１３の開始位置を変える。また、レジスタバンクごとの読み出し開始位置として、例えば、レジスタバンクに付与された連続する番号を使用することができる。
2008111500.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルレジスタを複数バンク化した複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、
前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタを有し、
前記読み出しポインタの開始位置を前記レジスタバンクごとに変えることを特徴とするベクトル処理装置。
【請求項２】
前記読み出しポインタの読み出し開始位置として、前記レジスタバンクに付与された連続する番号を使用することを特徴とする請求項１記載のベクトル処理装置。
【請求項３】
有効な要素数を示す値を保持するベクトル長保持部を、前記レジスタバンクごとに有し、
前記データ要素の読み出しごとに前記読み出しポインタの読み出し位置を示す値を増加し、前記読み出し位置を示す値が、前記ベクトル長保持部に保持された、有効な要素数の範囲を外れた場合に、前記読み出し位置を示す値をレジスタバンクの先頭要素に補正することを特徴とする請求項１又は２記載のベクトル処理装置。
【請求項４】
ベクトルストア命令の実行時に、対象となる前記ベクトルレジスタ内のデータ要素間で書き込みアドレスの重なりが存在しない場合に、前記読み出しポインタの開始位置を変えることを特徴とする請求項１から３のいずれか１項記載のベクトル処理装置。
【請求項５】
同一マシンクロックで各レジスタバンクの出力値に対応するアドレスを一括して計算するアドレス計算回路を有し、
前記アドレス計算回路は、各レジスタバンクの読み出しポインタの読み出し位置を示す値を受け取ってアドレスを計算することを特徴とする請求項１から４のいずれか１項記載のベクトル処理装置。
【請求項６】
同一マシンクロックで各レジスタバンクの出力値に対応するアドレスを一括して計算するアドレス計算回路を有し、
前記アドレス計算回路は、前記レジスタバンクごとのデータに対応した開始アドレスと終了アドレスを保持し、
前記レジスタバンクの前記読み出しポインタの読み出し位置を示す値が有効な要素数の範囲を外れ、前記読み出しポインタの読み出し位置を示す値を前記レジスタバンクの先頭要素に補正したときには、開始アドレスの値を用いて出力すべきアドレス値の補正を行うことを特徴とする請求項３又は４記載のベクトル処理装置。
【請求項７】
前記複数のレジスタバンクから出力されるデータ要素群を記憶する主記憶装置を有し、
同一のマシンサイクルで前記複数のレジスタバンクからそれぞれデータ要素が出力され、
前記主記憶装置は同一のマシンサイクルで出力された前記データ要素群を一つの単位としてデータ格納部に格納することを特徴とする請求項１から６のいずれか１項に記載のベクトル処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理装置に関し、特に、複数要素単位でバンク化されたメモリに対するベクトルストア命令の高速化を図ったベクトル処理装置に関する。本願は、２００７年３月８日に出願された特願２００７−０５８５６０号に基づき、優先権の利益を主張するものである。そして、特願２００７−０５８５６０号の内容は本願の明細書の内容に含まれる。
【背景技術】
【０００２】
ベクトル計算機は、１マシンクロックごとに複数のデータを同時に処理するためにベクトルパイプラインを複数有している。【０００３】
複数のベクトルパイプラインは一つのベクトル演算命令をそれぞれのベクトルパイプラインに分割して処理する。【０００４】
例えば、非特許文献１では２１４頁に並列パイプライン及び多重並列パイプラインが図示されている。【０００５】
このように複数のベクトルパイプラインに分割してベクトル演算命令を実行する場合、入力ベクトル及び出力ベクトルも、各ベクトルパイプラインに分割してデータの授受を行う。【０００６】
このとき、ベクトルレジスタの要素数（ベクトル長）が短い場合にも、ベクトルパイプラインごとの処理時間の均一を図るため、データ列はベクトルレジスタに要素ごとにインタリーブして保持される。【０００７】
１マシンクロックごとに複数のデータを同時に処理するという意味では、ベクトル演算命令だけではなく主記憶アクセス命令も同様である。【０００８】
１マシンクロックごとに複数データを中央処理装置と主記憶装置の間でやり取りする手法は様々であるが、一般的には中央処理装置にポートと呼ばれる主記憶装置とのインタフェースを複数設定する。【０００９】
この複数ポートは１マシンクロックで同時に動作させることが可能であり、１マシンクロックごとに主記憶装置へ複数のデータを転送したり、あるいは主記憶装置から複数のデータを受け取ったりすることが可能になる。【００１０】
このとき主記憶装置は、ポートごとにデータ格納部が分割されている。【００１１】
各データ格納部と各ポートは１対１で対応しており、アクセスすべき主記憶アドレスが指定されれば、アクセスすべきデータ格納部とポートは一意に決定される。【００１２】
またベクトル計算機の主記憶装置においては、データ要素ごとにインタリーブしてデータを格納していることが一般的である。【００１３】
これは複数のベクトルパイプラインが連続番地に格納された複数のデータに同時にアクセスするときに、最大限の速度でデータ転送を行うように設計するためである。【００１４】
このような複数のベクトルパイプラインと複数のポートを設けたベクトルプロセッサの構成例は、例えば、特許文献１に開示されている。【００１５】
以下、背景技術となるベクトル処理装置の構成例を図１に示す。【００１６】
中央処理装置１０１は、命令発行制御部１０２、ベクトル処理部１０３、アドレス計算部１０４、ＣＰＵ入出力ポート１０５で構成されている。【００１７】
ＣＰＵ入出力ポート１０５はそれぞれが主記憶装置１０６の主記憶入出力ポート１０７と接続されている。【００１８】
主記憶入出力ポート１０７は主記憶データ格納部１０８とそれぞれ接続されている。主記憶データ格納部１０８はデータ要素単位で多バンク化されている。【００１９】
ベクトル処理部１０３は、複数のベクトルパイプライン１０９とクロスバ１１０から構成されている。【００２０】
各ベクトルパイプライン１０９は、ベクトル演算装置１１１、レジスタバンク（図１のレジスタバンク１１２−０〜１１２−７のいずれか１つ）によって構成されている。レジスタバンク１１２−０〜１１２−７全体は１つはベクトルレジスタであり、ベクトルレジスタが複数バンクに分割されて、レジスタバンク１１２−０〜１１２−７のそれぞれが構成される。【００２１】
レジスタバンク１１２−０〜１１２−７のそれぞれは、読み出しポインタ１１３を有している。クロスバ１１０は、複数のベクトルパイプライン１０９の入出力と、複数のＣＰＵ入出力ポート１０５を任意の組み合わせで接続することができる。【００２２】
レジスタバンク１１２−０〜１１２−７のそれぞれは、複数のベクトルパイプラインに分割されている。【００２３】
本例では、ベクトルレジスタは２５６要素を保持しているが、８つのベクトルパイプラインに分割されている。【００２４】
このとき要素０はレジスタバンク１１２−０、要素１はレジスタバンク１１２−１、・・・、要素７はレジスタバンク１１２−７、要素８はレジスタバンク１１２−０のように、要素ごとに分割されている。【００２５】
命令発行制御部１０２からベクトル命令を受け取ると、ベクトル処理部１０３は命令語中で指定されたベクトルレジスタのレジスタバンクを起動する。【００２６】
レジスタバンク１１２−０〜１１２−７の各々は、クロスバ１１０を介して書くＣＰＵ入出力ポート１０５とデータの受け渡しを行う。【００２７】
アドレス計算部１０４は、命令発行制御部１０２からベクトルロード命令、ベクトルストア命令などの主記憶アクセス命令を受け取ったとき、命令語の指定に従って主記憶アドレスを計算する。【００２８】
各ベクトルパイプライン１０９がそれぞれ主記憶装置１０６へとアクセスするため、アドレス計算部１０４は１マシンクロックにベクトルパイプラインの数と等しい主記憶アドレスを計算できるように構成されている。【００２９】
中央処理装置１０１は複数のＣＰＵ入出力ポート１０５を有しており、主記憶装置１０６はＣＰＵ入出力ポートと同じ数で分割されている。【００３０】
本例では、３２個のＣＰＵ入出力ポート１０５−０〜１０５−３１を有しており、主記憶装置１０６も３２個に分割されている。【００３１】
ＣＰＵ入出力ポート１０５−０〜１０５−３１はそれぞれ主記憶入出力ポート１０７−０〜１０７−３１と１対１に接続されている。【００３２】
主記憶入出力ポート１０７−０〜１０７−３１は、主記憶データ格納部１０８−０〜１０８−３１とそれぞれ１対１に接続されている。【００３３】
ＣＰＵ入出力ポート１０５と主記憶入出力ポート１０７は、それぞれが同じマシンクロックで動作可能である。【００３４】
主記憶データ格納部１０８は要素単位で多バンク化されている。【００３５】
例えば、要素０は主記憶データ格納部１０８−０に、要素１は主記憶データ格納部１０８-１に格納されているとする。【００３６】
次にアドレス計算部１０４の構成と動作の例を図２に基づいて説明する。【００３７】
命令発行制御部１０２から信号線６０１を介してスタートアドレスが渡され、スタートアドレス保持部６０２に記録される。【００３８】
スタートアドレス保持部６０２の値は８つのアドレス計算回路６０８に渡され、８つのベクトルパイプライン１０９からの出力に対応するアドレスをそれぞれ計算する。【００３９】
パイプラインオフセット６０３には、各パイプライン番号とベクトルストア命令のストライド値の積が保持されている。【００４０】
スタートアドレスとパイプラインオフセット６０３の和を加算器６０４によって計算することで、レジスタバンクの先頭要素のアドレスが得られる。アドレスはアドレス信号線６０７を経由してクロスバ１１０に送られる。【００４１】
計算されたアドレスは加算器６０６に入力され、次のマシンクロックでオフセット６０５の値が加えられて再度出力される。オフセット６０５の値はベクトルストア命令のストライド値とパイプライン本数の積である。【００４２】
この値を足すことでレジスタバンク１１２−ｎ（ｎはここでは０〜７の数を示す）の次の要素のアドレス値を計算することができる。【００４３】
次に、背景技術のベクトル処理装置におけるベクトルストア命令の動作について具体的に説明する。【００４４】
命令発行制御部１０２はベクトルストア命令時に、ベクトル処理部１０３とアドレス計算部１０４を起動する。【００４５】
ベクトル処理部１０３の各ベクトルパイプライン１０９は、指定されたレジスタバンクの読み出しポインタ１１３が指す要素を読み出し、クロスバ１１０に送り込む。【００４６】
読み出しポインタ１１３の読み出し位置を示す値は最初先頭の要素を指しており、読み出し後に次の要素を指すように制御される。【００４７】
つまり最初のマシンクロックではレジスタバンク１１２−０から要素０、レジスタバンク１１２−１から要素１のように出力され、次のマシンクロックではレジスタバンク１１２−０から要素８、レジスタバンク１１２-１から要素９のように出力される。【００４８】
一方、アドレス計算部１０４は、各ベクトルパイプライン１０９からの出力データの書き込みアドレスを計算している。【００４９】
アドレス計算部１０４は、１マシンクロックにベクトルパイプライン１０９と同数のアドレスを計算できる。【００５０】
このためベクトルパイプライン１０９からの全出力が同時にクロスバ１１０に入力される。【００５１】
本例ではレジスタバンク１１２−０〜１１２−７上の要素０、１、２、...が、主記憶データ格納部１０８上のアドレス０、１、２、...に格納されるとする。【００５２】
クロスバ１１０に入力されたデータは、ＣＰＵ入出力ポート１０５、主記憶入出力ポート１０７を経由して主記憶データ格納部１０８に送られ、主記憶上に書き込まれる。このときクロスバ１１０上の出力ポートで競合が発生した場合、出力すべきデータはクロスバ１１０で待機することになる。【００５３】
具体的な動作のタイムチャートを図３に示す。【００５４】
図３の上半分はレジスタ上の要素の配置を示している。図３の下半分が時間ごとに出力される要素の番号を示している。【００５５】
最初のマシンクロックでは要素０から要素７が、次のマシンクロックでは要素８から要素１５が出力されている。【００５６】
要素単位ごとに異なる出力ポートにデータが転送されるため、クロスバ１１０での競合が起こらない。このためすべての要素を出力し終えるまでにかかる時間は３２マシンクロックとなる。【００５７】
このように背景技術では、ベクトルストア命令の実行時に各ベクトルパイプラインが一斉にデータを出力し、異なるＣＰＵ入出力ポートを介してデータを転送することで、ベクトルストア命令を高スループットで実行することができた。
【特許文献１】特開２００５−３８１８５号公報
【非特許文献１】シドニー・ファーンバック著『スーパーコンピュータ』（長島重夫  訳、１９８８年パーソナルメディア社刊）
【発明の開示】
【発明が解決しようとする課題】
【００５８】
上記の背景技術では主記憶装置１０６は要素単位で多バンク化されている。【００５９】
しかし、要素単位の多バンク化は二つの理由で不利であり、性能上コスト上の問題からは複数要素単位で多バンク化する方が望ましい。【００６０】
一つ目の理由は、主記憶装置を構成するＲＡＭが連続するアドレスからまとめてデータを読み出すのに適していることである。【００６１】
ＲＡＭの動作速度向上に伴って、一度に読み出されるデータビット数は増加してきている。【００６２】
また、連続するアドレスからまとめてデータを読み出す方が、異なるアドレスを複数回アクセスする場合と比較して消費電力が小さいという利点もある。【００６３】
二つ目の理由は、主記憶装置にエラー訂正符号を格納する場合の効率の問題である。エラー訂正符号は主記憶へのアクセス単位ごとにつけることになるが、アクセス単位が大きくなってもエラー訂正符号のビット数はあまり変わらない。【００６４】
このためアクセス単位が大きくなった方が、全体で使用されるエラー訂正符号のビット数を小さくできる。【００６５】
同じ容量の主記憶装置を構成するときに必要なエラー訂正符号のビット数が小さくなることで、主記憶装置を安価に構成できる可能性がある。【００６６】
以上二つの理由により、主記憶装置は複数要素単位で多バンク化することが望ましい。【００６７】
しかし、複数要素単位で多バンク化した場合、各ベクトルパイプラインからの出力がＣＰＵ入出力ポートで競合し、ベクトルストアの性能を低下させるという問題が生じる。【００６８】
図４及び図５を用いてこの問題を説明する。【００６９】
図４は背景技術で主記憶装置を複数要素単位で多バンク化した構成例である。【００７０】
図１との相違は主記憶データ格納部におけるデータの格納単位である。【００７１】
本例では８要素単位にバンク化されている。つまり、要素０〜７は主記憶データ格納部１０８−０に、要素８〜１５は主記憶データ格納部１０８−１に格納されている。【００７２】
連続アドレスに対するベクトルストア命令が発行された場合、各ベクトルパイプライン１０９がレジスタバンクから順次データを出力する。【００７３】
アドレス計算部１０４は各ベクトルパイプライン１０９の出力データごとの主記憶のアドレスを一括して計算する。【００７４】
具体的な動作のタイムチャートを図５に示す。【００７５】
図５の上半分はレジスタ上の要素の配置を示している。図５の下半分が時間ごとに出力される要素の番号を示している。【００７６】
最初のマシンクロックでは要素０から要素７がクロスバに入力されるが、これらのデータはすべて主記憶データ格納部１０８-０に転送されるべきデータである。【００７７】
したがって、クロスバ１１０の左端の出力ポートで競合が発生し、競合調停に敗れた要素はクロスバ１１０の入力ポート部分で待機することになる。【００７８】
ここでは競合調停はポート番号の若い方が常に優先されると仮定する。【００７９】
すると最初のマシンクロックでは要素０が出力されるが、要素１から要素７までの７要素はクロスバ１１０の入力ポート部分で待機することになる。【００８０】
次のマシンクロックではレジスタバンク１１２−０は要素８を出力する。しかし、他のレジスタバンク１１２−１〜１１２−７は、先のマシンクロックで出力した要素がクロスバ１１０の入力ポート部分にまだ存在しているので、次の要素を出力することができない。【００８１】
クロスバ１１０の競合調停には、レジスタバンク１１２−０からの要素８、レジスタバンク１１２−１からの要素１、レジスタバンク１１２−２からの要素２、など８要素が参加する。【００８２】
このうち要素８は主記憶データ格納部１０８−１に格納されるべきデータであり、他の７要素は主記憶データ格納部１１８−０に格納されるべきデータである。【００８３】
要素８は競合することなく出力され、要素１〜７の７要素については競合調停の結果、要素１が出力される。【００８４】
このように最初に出力されるデータが出力ポートで衝突するため、競合調停に敗れたレジスタバンクからは出力が遅れていく。【００８５】
結果として最終要素（本説明では要素２５５）が出力されるまでには３９マシンクロックの時間を要する。【００８６】
このように、主記憶が複数要素単位でバンク化されるようになると、主記憶（と１対１で接続されたＣＰＵ入出力ポート１０５）において出力すべきデータが衝突し、ベクトルストアのスループットを低下させるという問題が生じる。【００８７】
もちろんこの問題はＣＰＵ入出力ポート及びクロスバのデータ幅を拡大することで解決することもできる。しかしデータ幅の拡大はＬＳＩの面積に大きなインパクトを与える。【００８８】
本発明は、物量の増加を最小に抑えつつ、複数要素単位でバンク化されたメモリに対するベクトルストア命令を高速化することを目的とする。
【課題を解決するための手段】
【００８９】
本発明は、上記課題を解決するための手段として、ベクトルレジスタを複数バンク化した複数のレジスタバンクを有し、該複数のレジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とするベクトル処理装置において、
前記複数のレジスタバンクはそれぞれ、前記データ要素を読み出す際の読み出し位置を指し示す読み出しポインタを有し、
前記読み出しポインタの開始位置を前記レジスタバンクごとに変えることを特徴とする。
【発明の効果】
【００９０】
本発明によれば、複数要素単位でバンク化されたメモリを接続していても、ベクトルストア処理時の出力ポートでの競合を回避することができ、ベクトルストア処理の実行時間が増加することを防ぐことができる。
【図面の簡単な説明】
【００９１】
【図１】背景技術となるベクトルプロセッサの構成例を示すブロック図である。
【図２】背景技術となるアドレス計算部の構成例を示すブロック図である。
【図３】背景技術における主記憶装置のタイムチャートである。
【図４】背景技術のベクトルプロセッサの構成例を示すブロック図である。
【図５】背景技術における主記憶装置のタイムチャートである。
【図６】本発明の第１の実施形態としてのベクトルプロセッサの構成例を示すブロッ    ク図である。
【図７】本発明の第１の実施形態におけるアドレス計算部１０４の構成例を示すブロック図である。
【図８】本発明の第１の実施形態における主記憶装置のタイムチャートである。
【図９】本発明の第２の実施形態におけるアドレス計算部１０４の構成例を示すブロック図である。
【符号の説明】
【００９２】
１０１  中央処理装置
１０２  命令発行制御部
１０３  ベクトル処理部
１０４  アドレス計算部
１０５  ＣＰＵ入出力ポート
１０６  主記憶装置
１０７  主記憶入出力ポート
１０８  主記憶データ格納部
１０９  ベクトルパイプライン
１１０  クロスバ
１１１  ベクトル演算部
１１２−０〜１１２−７  レジスタバンク
１１３  読み出しポインタ
１１４  ＶＬ保持部
１１５  開始位置保持部
２０１  信号線
２０２  読み出しポインタ信号線
２０３  スタートアドレス保持部
２０４  パイプ番号保持部
２０５  オフセット計算回路
２０６  加算器
２０７  アドレス信号線
２０８  アドレス計算回路
４０１  信号線
４０２  スタートアドレス保持部
４０３  開始位置オフセット保持部
４０４  加算器
４０５  アドレス保持部
４０６  オフセット保持部
４０７  加算器
４０８  終了アドレス保持部
４０９  比較器
４１０  開始アドレス保持部
４１１  レジスタ
４１２  アドレス信号線
４１３  アドレス計算回路
６０１  信号線
６０２  スタートアドレス保持部
６０３  パイプラインオフセット
６０４  加算器
６０５  オフセット
６０６  加算器
６０７  アドレス信号線
６０８  アドレス計算回路
【発明を実施するための最良の形態】
【００９３】
以下、添付図面を参照して本発明を実施するための最良の実施形態を説明する。【００９４】
なお、本発明で開示する技術はベクトルプロセッサに限らず、複数の演算パイプラインを有し、各演算パイプラインが保持するデータを多バンク化された主記憶装置に一斉に転送する情報処理装置であれば適用可能である。以下では、典型的な実施形態としてベクトルプロセッサを例に取って説明する。【００９５】
［第１の実施形態］
［構成の説明］
図６は、本発明の第１の実施形態としてのベクトルプロセッサの構成例を示すブロック図である。【００９６】
背景技術の図４との相違は、レジスタバンク１１２−０〜１１２−７とアドレス計算部１０４にある。【００９７】
レジスタバンク１１２−０〜１１２−７は、それぞれＶＬ（Vector Length）保持部１１４と開始位置保持部１１５を有している。【００９８】
ＶＬ保持部１１４は、レジスタバンク１１２−ｎ（ｎはここでは０〜７の数を示す）上の有効な要素数を示している。【００９９】
ここではベクトルパイプライン１０９ごとにこの値を保持している。【０１００】
ベクトルパイプライン１０９ごとに値を保持せずに、ベクトル処理部全体でのベクトル長を保持し、パイプラインごとにその都度計算することも可能である。【０１０１】
開始位置保持部１１５は、各レジスタバンクの番号（パイプライン１０９の番号でもある）が記録されている。【０１０２】
つまり、レジスタバンク１１２−０の開始位置保持部１１５には０が、レジスタバンク１１２−１の開始位置保持部１１５には１が、というように記録されている。【０１０３】
図７は、本実施形態におけるアドレス計算部１０４の構成例を示すブロック図である。【０１０４】
信号線２０１は命令発行制御部１０２からスタートアドレスを受け取る信号線であり、スタートアドレス保持部２０３は受け取った値を保持するレジスタである。【０１０５】
信号線２０２は各レジスタバンク１１２−ｎから読み出しポインタ１１３の値を受け取る信号線である。【０１０６】
パイプ番号保持部２０４は、それぞれ対応するベクトルパイプライン１０９の番号が記録されている。【０１０７】
オフセット計算回路２０５は、パイプ番号保持部２０４の値と、読み出しポインタ１１３、さらに命令発行制御部１０２から渡されたベクトルストア命令のストライド値（図示せず）から、アドレスオフセット値を計算する回路である。【０１０８】
具体的には、（パイプ本数×読み出しポインタ＋パイプ番号）×ストライド値を計算することで、アドレスオフセット値が得られる。【０１０９】
加算器２０６はスタートアドレスとアドレスオフセット値から各ベクトルパイプライン１０９から出力された要素のアドレス値を計算し、アドレス信号線２０７を介してクロスバ１１０に受け渡す。【０１１０】
アドレス計算部１０４では、マシンクロックごとにレジスタバンク１１２−ｎから読み出しポインタ１１３の値を受け取り、それを元に新しいアドレス値を計算してクロスバ１１０に出力する。【０１１１】
アドレス計算回路２０８はベクトルパイプライン１０９ごとに用意されているので、１マシンクロックごとに８要素分のアドレスを計算できる。【０１１２】
［動作の説明］
まずベクトルストア処理時のベクトルレジスタの動作について説明する。【０１１３】
命令発行制御部１０２がベクトルストア命令を発行するときに、同一命令中の要素間でアドレスの重なりがないかを確認し（ベクトルストア命令においてストライド値が各要素のデータ長以上であればデータが重なって記録されることはない。）、重なりがない場合には読み出しポインタ１１３の初期値として開始位置保持部１１５の値を設定する。【０１１４】
重なりがあった場合にはレジスタバンク上の要素順の書き込みを保証する必要があるので、通常通り先頭要素から読み出す。【０１１５】
読み出しごとに読み出しポインタ１１３の内容がインクリメントされるが、ＶＬ保持部に記録された最終要素の値を超えた場合には０（レジスタバンクの先頭要素を指す）にリセット（補正）される。【０１１６】
以上のように、読み出しポインタ１１３を制御することで、ベクトルストア処理時に各レジスタバンク１１２−ｎが異なる場所のデータを読み出すようにする。【０１１７】
次に全体の動作について図８を参照して説明する。【０１１８】
図８の上半分はレジスタ上の要素の配置を示している。図８の下半分が時間ごとに出力される要素の番号を示している。【０１１９】
最初のマシンクロックではレジスタバンク１１２−０からは要素０が、レジスタバンク１１２−１からは要素９が、レジスタバンク１１２-２からは要素１８が、というように、各レジスタバンク１１２−ｎの読み出しポインタ１１３がずれた状態で読み出しを開始する。【０１２０】
このとき要素０は主記憶データ格納部１０８−０に格納すべきデータであり、要素９は主記憶データ格納部１０８−１に格納すべきデータである。【０１２１】
以下同様に、各レジスタバンク１１２−ｎ（ｎはここでは０〜７の数を示す）から出力されたデータは、一つの主記憶データ格納部に格納されることなく、格納すべき主記憶データ格納部１０８−ｎがすべて異なる。このためクロスバ１１０は競合することなくすべての入力データを出力ポートに送ることができる。【０１２２】
次のマシンクロックではレジスタバンク１１２−０からは要素８が、レジスタバンク１１２−１からは要素１７が、というように、各レジスタバンク１１２−ｎの読み出しポインタ１１３がそれぞれ一つずつずれ、読み出しポインタ１１３が指し示すデータが出力される。【０１２３】
この場合も同一マシンクロックに出力されたデータはすべて別の主記憶データ格納部１０８−ｎに格納されるので、クロスバ１１０において競合が発生しない。【０１２４】
このように同時に出力されるデータが出力ポートで衝突することがないため、クロスバ１１０では競合調停が行われず、最終要素（本例では要素２５５）が出力は３２マシンクロックまでに終了する。【０１２５】
クロスバ１１０で衝突が起こらないということは、ベクトルストアのスループットは低下しないということを意味している。【０１２６】
［第２の実施形態］
［構成の説明］
本発明の第２の実施形態としてのベクトル処理装置について説明する。【０１２７】
本実施形態のベクトル処理装置は、第１の実施形態とアドレス計算部の構成のみを異にしている。図９は本実施形態におけるアドレス計算部の構成例である。【０１２８】
信号線４０１は命令発行制御部１０２からスタートアドレスを受け取る信号線であり、スタートアドレス保持部４０２は受け取った値を保持するレジスタである。【０１２９】
開始位置オフセット保持部４０３は、パイプ番号とベクトルストア命令のストライド値から計算した、最初に読み出されるデータのアドレス値を計算するためのオフセット値を保持している。【０１３０】
ベクトルストアの開始時にはスタートアドレスと開始位置オフセット保持部４０３の値を加算器４０４によって足し合わせ、ベクトルパイプごとの、最初に読み出されるデータのアドレス値をアドレス保持部４０５に記録する。【０１３１】
アドレス保持部４０５の値は、アドレス信号線４１２を介してクロスバ１１０に受け渡される。【０１３２】
加算器４０７はストライド保持部４０６の値をアドレス保持部４０５の値に加える。【０１３３】
オフセット保持部４０６の値は、ベクトルストア命令のストライド値とベクトルパイプライン１０９の本数によって決定される。【０１３４】
終了アドレス保持部４０８は、該当するベクトルレジスタの有効な要素数から、末尾のデータに対応するアドレスを計算して結果を保持している。【０１３５】
開始アドレス保持部４１０はベクトルレジスタの先頭のデータに対応するアドレスを計算して結果を保持している。【０１３６】
加算器４０７の結果は終了アドレス保持部４０８と比較され、一致した次のマシンサイクルで、レジスタ４１１に開始アドレス保持部４１０のデータを書き込むように制御する。【０１３７】
そうでない場合には加算器４０７の出力結果をレジスタ４１１に書き込む。【０１３８】
レジスタ４１１は次のマシンサイクルでアドレス保持部４０５のデータを書き換える。この手順はマシンサイクルごとに実行される。【０１３９】
［動作の説明］
本発明の第２の実施形態の動作は、第１の実施形態の場合と同じである。【０１４０】
以上、本発明の代表的な実施形態について説明したが、本発明は、本願の請求の範囲によって規定される、その精神または主要な特徴から逸脱することなく、他の種々の形で実施することができる。そのため、前述した各実施形態は単なる例示にすぎず、限定的に解釈されるべきではない。本発明の範囲は特許請求の範囲によって示すものであって、明細書や要約書の記載には拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲内のものである。
【産業上の利用可能性】
【０１４１】
本発明は、ベクトル処理装置に利用可能であり、特に、多バンク化されたベクトルレジスタを有するベクトル処理装置に利用可能である。
【図１】
2008111500.tif 000003
【図２】
2008111500.tif 000004
【図３】
2008111500.tif 000005
【図４】
2008111500.tif 000006
【図５】
2008111500.tif 000007
【図６】
2008111500.tif 000008
【図７】
2008111500.tif 000009
【図８】
2008111500.tif 000010
【図９】
2008111500.tif 000011
【手続補正書】
【提出日】平成21年1月7日(2009.1.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
ベクトルレジスタを複数バンク化した複数のレジスタバンクと、該複数のレジスタバンクに対応した多重並列動作する複数の演算器とを有し、該複数の演算器は、該複数のレジスタバンクとそれぞれ接続され、該レジスタバンクに保持された複数のデータ要素からなるデータ列を処理の対象とする、ベクトル処理装置において、
前記複数のレジスタバンクはそれぞれ、命令語によって指定されたベクトルレジスタに対応する前記複数のデータ要素のうち一つを指し示す読みだしポインタを有し、前記読み出しポインタの開始位置を前記レジスタバンクごとに変えることを特徴とするベクトル処理装置。
【国際調査報告】
2008111500.tif 000012
2008111500.tif 000013