(57)【特許請求の範囲】
【請求項１】
コンピュータシステムを構成するベクトルプロセッサのレジスタファイルを構成するベクトルレジスタ及びスカラレジスタの前記ベクトルレジタに格納された第１ベクトル値の所定位置にスカラ値を記入するコンピュータにおけるスカラ値をベクトル値に記入する方法において、
前記所定位置に記入すべきスカラ値の複数個のコピーを作成し、該複数個のコピーを包含する第２ベクトル値を生成する段階と、
前記所定位置を示す信号を生成する段階と、
前記第２ベクトル値と前記信号とを前記ベクトルレジスタに印加する段階とを包含し、
前記信号は、前記スカラ値のデータタイプの関数であり、
前記信号に応答して前記ベクトルレジスタが前記第２ベクトルに包含される前記複数個のコピーの一部を前記第１ベクトル値内の前記所定位置に記入して更新し、前記第１ベクトル値の残りは変化されずに残存することを特徴とするコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項２】
前記所定位置が前記コンピュータシステムのメモリに記憶された命令により規定され、前記信号を生成する段階が前記メモリから前記命令を読み出す段階を包含することを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項３】
前記所定位置を規定するデータは、コンピュータシステムの制御部のバッファから読み出されることを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項４】
前記第２ベクトル値内のスカラ値のコピーの個数は、このスカラ値の大きさに依存することを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項５】
前記信号を生成する段階および第２ベクトル値を生成する段階が同時的に行われることを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項６】
前記信号はスカラ値のデータ形態の関数であることを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項７】
前記第１ベクトル値の所定位置に前記第２ベクトル値の一部を記入した結果として、前記ベクトルレジスタが第１ベクトル値の代わりに第３ベクトルを得、前記コンピュータにおけるスカラ値をベクトルに記入する方法が、
前記第２ベクトル値の一部が第１ベクトル値の所定位置に記入される前に前記ベクトルレジスタから第１回路に第１ベクトル値を読み出す段階と、前記第３ベクトル値のコピーをベクトル処理回路に提供する段階とを包含し、前記第１回路は第２ベクトル値の一部を前記第１ベクトル値のコピー内の所定位置に記入して前記第３ベクトル値のコピーを得、前記ベクトル処理回路には第３ベクトル値が前記ベクトルレジスタから読み出される前に第３ベクトル値のコピーが印加されることを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項８】
前記第２ベクトル値内のスカラ値の各コピーに対し前記信号は、前記コピーが前記ベクトルレジスタの第１ベクトル値に記入されるかを示す１個以上のビットを包含することを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項９】
前記信号が前記レジスタファイルの制御部に印加されることを特徴とする請求項８記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項１０】
前記第２ベクトル値がコンピュータシステム内に３個以下の入力部を有するＡＬＵにより生成されることを特徴とする請求項９記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項１１】
前記レジスタファイルが３個以下の出力部を有し、
前記第２ベクトル値を生成する段階が前記レジスタファイルの前記スカラレジスタからスカラ値を読み出す段階を包含し、
前記信号を生成する段階が前記所定位置を示す命令を前記コンピュータシステムのメモリから読み出す段階を包含することを特徴とする請求項１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項１２】
前記スカラ値と所定位置を示すデータが前記ベクトルプロセッサのＡＬＵの２個の相異なるポートから同時的に読み出されることを特徴とする請求項１１記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
【請求項１３】
ベクトルプロセッサ内のベクトルレジスタに記憶された第１ベクトル値内の所定位置にコンピュータにおけるスカラ値を記入する方法において、
前記所定の位置に記入すべきスカラ値の複数個のコピーを作成し、該複数個のコピーを包含する第２ベクトル値を生成する段階と、
前記第２ベクトル値および前記所定位置を示す信号を前記ベクトルレジスタに印加する段階とを包含し、
前記信号に応答して前記ベクトルレジスタが第３ベクトル値を生成し、この第３ベクトル値は前記所定位置を除いたすべての位置で前記第１ベクトル値と同様な値を有し、前記所定位置で前記第２ベクトル値と同様な値を有することを特徴とするコンピュータにおけるスカラ値をベクトル値に記入する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータのベクトル処理の方法、特にスカラ値をコンピュータシステム内に記憶されたベクトルに記入できるコンピュータにおけるスカラ値をベクトルに記入する方法に関する。
【０００２】
【従来の技術】
ベクトルデータ処理の技術に関しては、従来より種々開発されている。たとえば、特開平４−１２７３６７号公報（以下、第１公報という），特開平３−２０８１６９号公報（以下、第２公報という）、特開昭６２−２８１０５７号公報（以下、第３公報という）によりベクトルデータ処理に関する技術思想が開示されている。
このうち、第１公報の場合では、複数個のベクトルレジスタのうちの第１のベクトルレジスタの各要素は、主記憶装置上のアドレスと複数個のベクトルレジスタの任意の一要素を指定するためのレジストアドレスの他に主記憶装置上のアドレスが要素間で重複していることを示す重複情報を示している。
第２のベクトルレジスタの各要素は主記憶装置上のアドレスを格納しており、第１と第２のベクトルレジスタの各対応要素のうちの主記憶装置上のアドレスを順次読み出しながら比較し、その比較結果が不一致あるいは重複情報が重複するとき、ベクトルレジスタの各要素に対応した複数ビットを有するベクトルマスクレジスタの対応ビットを有効とするようにしたものである。
【０００３】
また、第２公報の場合は、主記憶装置からデータを読み出してロードパイプにキューイングし、演算装置でスカラレジスタにロードしたデータと主記憶装置から読み出した各要素との演算を第１演算器で行い、その演算結果をベクトルレジスタに格納する。
次の要素を主記憶装置から順次読み出してベクトルレジスタに格納し、先に格納した演算結果と後に格納した各要素を第２の演算器に供給して所定の演算を行って、再度ベクトルレジスタに格納し、その格納した演算結果を主記憶装置に書き込むようにしたものである。
【０００４】
さらに、第３公報の場合は、それぞれベクトルデータを保持する複数のベクトルレジスタを設け、このベクトルレジスタの出力とオペランドが１対１に対応するとともに、固定的に結合されてベクトルをベクトル命令にしたがった演算を行う演算器を設ける。
命令によってマスク情報を一時第２マスクレジスタに格納し、この第２マスクレジスタの出力に第１マスクレジスタを結合し、ベクトル命令にしたがってマスク情報をマスクビット選択回路に供給する。
第１マスクレジスタの出力をマスクビット選択回路により演算オペランドに対応して選択し、ベクトル命令によって第１、第２マスクレジスタ、マスクビット選択回路の動作をマスク制御回で制御し、マスク制御回路を演算器と１対１対応で設けたものである。
【０００５】
このようなベクトルデータの処理の応用例として、３次元グラフィック、医学用画像処理(medical imaging) 、および科学的モデリング(scientific modeling) のような応用技術はベクトル上で動作可能なコンピュータを必要とする。
所定のコンピュータにおいて単一要素のベクトルを変化させる過程は、まず記憶部からベクトルを読み出して修正した後、全体のベクトルを記憶部に再び記入することである。
【０００６】
図１４は、出力がオンチップ(on-chip）バス１２０を経由してレジスタバンク１３０に接続される演算論理装置（以下、ＡＬＵと称する）を有する従来のマイクロプロセッサ１００を示している。レジスタバンク１３０はバス１４０、１５０を介してＡＬＵ１１０の入力として接続される。
レジスタ１７０内に記憶されたベクトル要素１６０を代替するためには、まずレジスタ１７０の内容をＡＬＵ１１０の入力１８０として接続されるバス１４０上に読み出す。
同様に、レジスタ１７５内に記憶されたスカラ要素１６５はＡＬＵ１１０の入力１９０として接続されるバス１５０上に読み出される。
【０００７】
また、レジスタ１７２に記憶されたスカラ要素１６５がベクトル１６０内に挿入される位置を示す第２スカラ値１６７はレジスタバンク１３０からＡＬＵ１１０上に読み出される。
さらに、ＡＬＵ１１０はスカラ要素１６５をベクトル要素１６０の所定位置にコピーし、修正されたベクトルはオンチップバス１２０に記入されてレジスタ１７０に再び記入される。
【０００８】
【発明が解決しようとする課題】
ところが、ベクトル処理が３次元グラフィック、医学用画像処理、およびモデリングのような応用技術のためにコンピュータで一般化されるにしたがい、ベクトル要素をより迅速に代替できる技術が要求されている。
しかるに、前述の従来技術においては、３個の演算数(operand) がレジスタバンク１３０からＡＬＵ１１０に読み出されるのに、このレジスタバンク１３０は２個の出力部だけしか有しないので、レジスタバンク１３０から３個の演算数のすべてを読み出すためには２個のクロック周期を必要とし、また、ＡＬＵ１１０内のベクトル要素を代替するための第３クロック周期、およびベクトルをレジスタ１７０に再び記入するための第４クロック周期を必要とする欠点があった。
【０００９】
このような従来の課題を解決するために、本発明の目的は、記憶部からベクトルを読み出さずにスカラ値をベクトルに記入し得るコンピュータにおけるスカラ値をベクトルに記入する方法を提供しようとする。このとき、前記スカラ値はその幅がベクトルの幅よりも小さい値である。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明のコンピュータにおけるスカラ値をベクトルに記入する方法は、前記スカラ値は１個以上のベクトル要素であり、このスカラ値を記憶部に記憶された第１ベクトルに記入するため、スカラ値のコピーされた複数個のコピーを有する第２ベクトルが生成され、この第２ベクトルは記憶部の入力として提供されるが、マスク信号はこの第２ベクトルから第１ベクトルにスカラ値の１個のコピーだけを記入するために用いられ、第１ベクトルの残りは変化せずに残存する。
スカラ値をベクトルに記入する動作のためベクトルが記憶部から読み出されないので、レジスタファイルアクセス(register file access)のための競合が減少する。
【００１１】
また、本発明の他のコンピュータにおけるスカラ値をベクトルに記入する方法は、スカラ値を第１ベクトルに記入するため、第１命令の後に第１ベクトルを用いる第２命令がしたがう。
この第２命令は第１ベクトルの新しい値、すなわち、スカラ値によりアップデートされた値が用いられる。
しかし、第２命令を迅速に行うためにはスカラ値が第２ベクトルから記憶部に記入される前に第１ベクトルの元来の値を第２命令で使用するために記憶部から読み出す。
【００１２】
スカラ値を第１ベクトルに記入するために第２ベクトルが記憶部の入力部に提供されると、第２ベクトルも第１ベクトルが記憶部から読み出されるとき、第１ベクトルの元の値が印加された回路に提供される。
この回路にはマスク信号も印加される。また、この回路は第２ベクトルおよびマスクを用いて第２ベクトルから記憶部より読み出した第１ベクトルにスカラ値を記入して、第１ベクトルを第２命令に使用し得るようにアップデートさせる。
第２命令は記憶部からの第１ベクトルのアップデートされた値を読み出す必要が無いためより迅速に行い得る。
【００１３】
【発明の実施の形態】
以下、本発明に係る実施の形態を図面を用いて詳しく説明する。図面の全般に亘って同様な部分に対しては同一の符号を付する。
【００１４】
図１は、本発明に係るスカラ値をベクトルに記入できるベクトルプロセッサの一部を示したものである。ベクトルプロセッサはレジスタファイル２００、乗算器(multiplier)２１０、ＡＬＵ２２０、および累算器２３０を具備する。
レジスタファイル２００は３２個の３２ビットスカラレジスタおよび６４個のベクトルレジスタを有する。それら各レジスタ（図示せず）は２８８ビット入力部２０２（または２０４）を通してベクトル値およびスカラ値が記入され、これらのベクトル値およびスカラ値は２８８ビット出力部２０６（または２０８）を通して読み出される。
【００１５】
レジスタファイル２００内のレジスタは記入アドレス制御部２２２、２２４および読み出しアドレス制御部２２６、２２８により入出力のために選択され、それら記入アドレス制御部２２２、２２４、読み出しアドレス制御部２２６、２２８は命令バッファ（ＩＢＵＦ）（図示されず）から信号を受ける。
記入アドレス制御部２２２はどのレジスタが２８８ビット入力部２０２から記入されるかを選択し、記入アドレス制御部２２４はどのレジスタが２８８ビット入力部２０４から記入されるかを選択する。
また、読み出しアドレス制御部２２６はどのレジスタが２８８ビット出力部２０６に読み出されるかを選択し、読み出しアドレス制御部２２８はどのレジスタが２８８ビット出力部２０８に読み出されるかを選択する。
【００１６】
さらに、３２ビットのバイトイネーブルポート(byte enable port)２３２が２８８ビット入力部２０２（または２０４）に印加されたデータにマスクを提供するために使用されることにより、２８８ビット入力部２０２（または２０４）に印加されたデータの選択されたビットだけがそれぞれの記入アドレス制御部２２２（または２２４）により選択されたレジスタに記入される。
このようなマスクは交互(alternate) のクロック周期として２８８ビット入力部２０２、２０４に提供される。本発明の他の実施の形態においてマスクは交互のクロックの１/ ２周期で２８８ビット入力部２０２、２０４に提供される。
【００１７】
バイトイネーブルポート２３２は複数個のバイトイネーブルソース中いずれのものがこのバイトイネーブルポート２３２に接続されるかを制御するのに用いられるマルチプレクサ（図示せず）を共有し、マスク生成器３３０（図２のＡＬＵ２２の詳細構成を示すブロック図参照）の出力部２２０．２に接続される。
それらバイトイネーブルソースは出力部２２０．２、ベクトルグロバルマスクレジスタ(vector global mask register) （図示せず）、ベクトルメモリマスク生成器（図示せず）、およびパイプライン制御ロジック（図示せず）を包含する。
しかし、本発明の目的を達成するためバイトイネーブルポート２３２はマルチプレクサを通してマスク生成器３３０の出力部２２０．２に接続されるか、ブランク（すべてが０）マスク（ＶＥＣ６４モードに用いられる）を具備した特殊レジスタに接続される。
【００１８】
２８８ビット出力部２０６、２０８はマルチプレクサ（以下、ＭＵＸという）回路(AMUX250,BMUX255) の入力にそれぞれ接続され、その出力がロードおよび記憶ユニット(load and store unit) （図示せず）に接続されたＭＵＸ２９０の入力に接続される。
ＡＭＵＸ２５０とＢＭＵＸ２５５はマルチプレックシングの機能の以外にもスカラ値を２８８ビット出力部２０６（または２０８）から読み出されたベクトルに記入する。
【００１９】
それらＡＭＵＸ２５０、ＢＭＵＸ２５５はそれぞれベクトルプロセッサのロードならびに記憶ユニット（図示されず）からの２８８ビットライン（このラインはＡＭＵＸ２５０とＢＭＵＸ２５５に接続される）に接続された２８８ビット入力、パイプライン読み出し端制御部（図示されず）に接続されて即値(immediate value) の演算数がパイプライン読み出し端制御部からＡＬＵ２２０に提供されるようにする３２ビット入力、ＷＢＭＵＸ２７０の出力に接続された２８８ビット入力、およびＡＬＵ２２０の一部としてマスク生成器３３０（図２に図示）の出力２２０．２に接続された３２ビット入力を具備する。
パイプライン読み出し端制御部は命令バッファ（ＩＢＵＦ、図示されず）で命令デコーダ（図示せず）が適切な信号をデコーディングした後信号を提供するようにする。
【００２０】
それらＡＭＵＸ２５０、ＢＵＭＸ２５５の２８８ビット出力は乗算器２１０、ＭＵＸ２９０、および累算器２３０の入力にそれぞれ接続される。
ＡＭＵＸ２５０の出力はＭＵＸ２４２の入力に接続され、ＭＵＸ２４０の他の入力の５７６ビット入力は乗算器２１０の出力２１０．１に接続される。ＭＵＸ２４２の出力はＡＬＵ２２０の一つの入力に接続される。
ＢＭＵＸ２５５の出力はＭＵＸ２４４の一つの入力に接続され、このＭＵＸ２４４の他の入力はＡＬＵ２２０の他の入力に接続された乗算器２１０の出力２１０．２に接続された５７６ビット入力である。
【００２１】
ＭＵＸ２４２、２４４はＡＬＵ２２０がＡＭＵＸ２５０ならびにＢＭＵＸ２５５、または乗算器２１０からデータを受けるようにする。ＡＬＵ２２０の２８８ビット出力はマルチプレクサＡｃｃＭＵＸ２６０、ＷＢＭＵＸ２７０、および累算器２３０の入力に接続される。累算器２３０の出力はＡｃｃＭＵＸ２６０およびＷＢＭＵＸ２７０の他の入力に接続される。
よって、ＡＬＵ２２０で行われる動作の結果は累算器２３０内に記憶されるか、または連続的な処理およびＷＢＭＵＸ２７０とＡｃｃＭＵＸ２６０を通したレジスタファイル２００への再記入のためＡＭＵＸ２５０ならびにＢＭＵＸ２５５に再び戻る。
ＷＢＭＵＸ２７０の出力はＷ１ＭＵＸ２４０とＭＵＸ２９０の入力となり、ＡｃｃＭＵＸ２６０の出力はＷ２ＭＵＸ２４５およびＭＵＸ２９０に入力される。
【００２２】
図２は、ＡＬＵ２２０をより詳しく示したものである。ＡＬＵ２２０はＡＬＵ−１  ３００、ＡＬＵ−２  ３１０、およびＡＬＵ−３  ３２０からなってＡＬＵ２２０により行われるロジック演算および算術演算の部分集合を担当する。
特に、ＡＬＵ−２  ３１０はベクトル記入動作の行われる間ベクトルのどの要素が記入されるかを制御するのに用いられる３２ビットのマスク生成を担当するマスク生成器３２０を包含する。
図１のプロセッサは次の表１に示したデータ形態を認識し、このプロセッサはフローティングポイント(floating point)データ形態のためのＩＥＥＥ標準７５４単一フォーマットを認識する。
【００２３】
【表１】
0003954171.tif 000002
【００２４】
レジスタファイル２００内の３２個のスカラレジスタＳＲ０〜ＳＲ３１のそれぞれは３２ビットの長さを有する。図３はこのようなスカラレジスタのためのデータ形態のフォーマットを示したものである。図３の保存されたビットは規定値を有さない。
【００２５】
本発明の実施の形態によると、それぞれのスカラレジスタは３６ビットの長さを有する。データ形態が半ワードであれば、この半ワードはビット［０：７］およびビット［９：１６］に位置し、残りのビットは保存される。データの形態がワードであれば、このワードはビット［０：７］、［９：１６］、［１８：２５］、［２７：３４］に位置し、残りのビットは保存される。
レジスタファイル２００内の６４個のベクトルレジスタはそれぞれ３２個のレジスタを有する２個のバンクにより構成される。
【００２６】
バンク０は始めの３２個のレジスタを包含し、バンク１はその次の３２個のレジスタを包含する。
２個のバンク中の一つは「現在の」バンクに設定され、残りのバンクは「交替される」バンクに設定される。ベクトル命令は現在のバンク内のレジスタをデフォールト(default) に用いる。
ロード／記憶およびレジスタ移動命令は交替されるバンク内のレジスタをアクセスし得る。ベクトル制御および状態レジスタＶＣＳＲ内の一つのビットはバンク０とバンク１中いずれのものが現在のバンクであるかを示す。
現在のバンク内のベクトルレジスタはＶＲ０ないしＶＲ３１に現れ、交替されるバンク内のレジスタはＶＲＡ０ないしＶＲＡ３１に現れる。
【００２７】
選択モードにおいて、バンクは統合されて３２個の５７６ビットベクトルレジスタを提供する。このモードは６４バイト９ベクトルモードまたはＶＥＣ６４モードという。非ＶＥＣ６４モード(non-VEC64 mode)はＶＥＣモードという。
ＶＣＳＲ内の一つのビットが動作のモードを指定する。ＶＥＣ６４モードにおいて５７６ビットレジスタはＶＲ０ないしＶＲ３１に現れる。
【００２８】
図４は、ベクトルレジスタ内に用いられるデータフォーマットを示したものである。２８８ビットベクトルのそれぞれは８個の３６ビットフィールドに分けられる。３６ビットフィールドのそれぞれは４個の９ビットバイト５００、４個の８ビットバイト５１０、２個の１６ビット半ワード５３０、および単一３２ビットワード５４０に扱われる。
データ形態が８ビットバイト５１０、１６ビット半ワード５３０または３２ビットワード５４０であれば、すべての９番目のビット（ビット５２０のような）はプロセッサにより保存されたビットとして扱われる。すなわち、ビットが無視される。
【００２９】
図５は、マスク生成器３３０（図２に図示される）により生成された３２ビットマスク６００内のそれぞれのビットがどのように２８８ビットベクトル６１０内に配置されるかを示したものである。
ベクトルがレジスタファイル２００に記入されると、マスク６００内のそれぞれのビット６３０はベクトル内の９ビットバイト６２０に相応する。
マスク内のそれぞれのビットはベクトル６１０内の該当バイト９が記入されたかを決定する。図５でマスク６００のビット２だけが設定されるため、バイト９の番号２、すなわち、ベクトル６１０のビット１６〜２６だけが記入される。
【００３０】
プロセッサが図１３に示した命令ＶＩＮＳＲＴを行うとき、スカラ値はレジスタファイル２００内のベクトルレジスタに記入される。図１３において５ビットフィールドＶＲｄ（フィールド９７０）はレジスタファイル２００内のベクトルレジスタを示す。
ＶＥＣ３２モードでフィールドＶＲｄは現在のバンク内に２８８ビットレジスタＶＲ０−ＶＲ３１中の一つであり、ＶＥＣ６４モードでフィールドビットレジスタＶＲｄは５７６ビットレジスタＶＲ０−ＶＲ３１中の一つである。
２ビットフィールドＤＳは記入されるスカラ値（バイト８、バイト９、１/ ２ワードまたはワード）のデータ形態を規定する。
５ビットフィールドＳＲａはスカラ値を包含するスカラレジスタを規定し、５ビットフィールドＳＲｂ／ＩＭ５（フィールド９８０）はベクトルレジスタ内のどの位置にスカラ値が記入されるかを規定するインデックス(index) を提供する。
【００３１】
ビットＤ、Ｓ、Ｍにしたがい上記フィールドはフィールドＳＲb/ＩＭ５とフィールドＩＭ９（フィールド９６０）との組合せにより得られる即値(immediate value) または前述したインデックスを包含するスカラレジスタＳＲｂのアドレスを包含する。
ビットＤ、Ｓ、ＭはフィールドＳＲｂ/ ＩＭ５が即値であるかまたはスカラレジスタ内の値であるかを規定する。インデックスの５個の最下位ビットは「０」と「３１」間の数を規定するのに使用される。
【００３２】
命令ＶＩＮＳＲＴが行われると、フィールドＤＳはマスク生成器３３０の第１入力に提供される。インデックスはマスク生成器３３０の第２入力に提供される。インデックスは即値であるか、またはレジスタＳＲａから読み出される値である。
マスク生成器３３０は図５ないし図８に示したように３２ビットマスクを生成する。フィールドＤＳがバイト９データの形態を規定すると、３２ビットマスク内でインデックスにより番号の与えられるビットがセットされ（すなわち、論理「１」となり）、残りのビットはリセットされる（すなわち、論理「０」となる）。
【００３３】
図５において、インデックスは「２」で、３２ビットマスクはビット２の除いたすべての位置で「０」を有する。フィールドＤＳがバイト（８ビット）のデータ形態を規定すると、マスク生成器の動作はバイト９のデータ形態に対する動作と同様である。
インデックス値が「１」である場合に対し図６を用いて説明する。フィールドＤＳが半ワードデータ形態（図７に示す）を規定すると、インデックス「０」と「１５」間の数である。図７においてインデックスは「１」である。
マスク生成器３３０は半ワード数の「インデックス」に該当する位置、すなわちこの位置(index* 2 、index * 2+1)（図７のマスク７３０内のビット２と３）にマスクビットをセットする。残りのマスクビットはリセットされる。
【００３４】
フィールドＤＳがワードデータ形態（図８参照）を規定すると、インデックスは「０」と「７」間の数である。図８でインデックスは１である。
マスク生成器３３０はワード数の「インデックス」すなわち、ビット(index* 4, index* 4+1, index* 4+2, index* 4+3)（図８のマスク７６０内のビット「４」〜「７」）に対しマスクビットをセットする。残りのビットはリセットされる。
【００３５】
図１３に示したＶＩＮＳＲＴ命令はメモリからベクトルプロセッサにおけるパイプライン読み出し制御部に読み出され、次のように行われる。
しかし、ＶＥＣ６４が使用される場合はパイプライン読み出し端制御部は２個のＶＩＮＳＴＲ命令を生成し、その一つはバンク０内のベクトルレジスタを目的地レジスタに、他の一つはバンク１上のベクトルレジスタを目的地レジスタにするものである。
また、パイプライン読み出し端制御部は行われる第１命令を認知する第１命令プラグを生成する。
【００３６】
〈クロック周期１〉
クロック周期１の間ＳＲａフィールド９８０は読み出し制御部２２６、２２８中の一つに伝達されてＳＲａレジスタをＡＭＵＸ２５０またはＢＭＵＸ２２５中の一つに読み出す。
ＳＲｂ／ＩＭ５フィールド９９０（インデックスフィールド）がレジスタを規定すると、フィールド９９０は読み出しアドレス制御部２２６、２２８中の他の一つに伝達されてＳＲｂをＡＭＵＸ２５０またはＢＵＭＸ２５５中の他の一つに読み出す。
【００３７】
ＳＲｂ／ＩＭ５フィールドが即値であると、この値はパイプライン読み出し端制御部からＡＭＵＸ２５０またはＢＭＵＸ２５５に伝達される。マルチプレクサ２４２、２４４はＡＭＵＸ２５０およびＢＭＵＸ２５５の出力をそれぞれ選択する。
これら出力中の一つの出力上のインデックスはマスク生成器３３０に提供され、他の出力上のスカラレジスタのＳＲａ値はＡＬＵ−３（３２０）に提供される。
【００３８】
〈クロック周期２〉
クロック周期２の間マスク生成器３３０は、前述のようにインデックスおよびＤＳフィールドから３２ビットマスクを生成する。
ＶＥＣ６４モードにおいてＡＬＵ２２０に提供されるインデックスの５個の最下位ビットだけがマスク生成器により３２ビットマスクを生成するために使用される（６番目の最下位ビットはマスク生成器３３０により生成されたマスクがバイトイネーブルポート２３２、およびＡＭＵＸ２５０とＢＭＵＸ２５５に印加されることを制御するのに使用される）。
【００３９】
ＡＬＵ−３（３２０）にはＭＵＸ２４２（または２４４）からレジスタＳＲａより読み出されたスカラ値が印加される。
よって、ＡＬＵ−３（３２０）は図９ないし図１２に示したように複数のスカラ値のコピーを包含するベクトルＶ２を生成する。
【００４０】
図９はＤＳがバイト９を規定する場合を示したものである。レジスタＳＲａのビット［８：０］内のバイト９のスカラ値「Ａ」はベクトルＶ２のビット［８：０］、［１５：９］、…、［２８７：２７９］内の連続される９ビットフィールドにコピーされる。
【００４１】
図１０はＤＳが一つのバイトを規定する場合を示したものである。レジスタＳＲａの８個の最下位ビット内の値「Ａ」はすべて９ビットフィールド［８：０］、［１５：９］、…、［２８７：２７９］の８個の最下位ビットにコピーされる。９番目のビットはこの場合「don't care（無視）」である。
【００４２】
図１１は、ＤＳが半ワードを規定する場合を示したものである。スカラレジスタＳＲａ内の半ワードはビット［７：０］内の値「Ａ」およびビット［１５：８］内の値Ｂを有する。
それらの値はベクトルＶ２を通してコピーされ、このとき、ベクトルＶ２のすべての９番目ビットは「don't care」である。ベクトルＶ２のビット［７：０］にはＡ値が、ビット［１６：９］にはＢ値が、ビット［２５：１８］にはＡ値が、ビット［３４：２７］にはＢ値がそれぞれ印加され、このような式にベクトルＶ２の最後ビットまで進行される。
【００４３】
図１２は、ＤＳがワードを規定する場合を示したものである。レジスタＳＲａにおいて、ビット［７：０］はＡ値を、ビット［１５：８］はＢ値を、ビット［２３：１６］はＣ値を、ビット［３１：２４］はＤ値をそれぞれ包含する。
レジスタＳＲａ内のワードはレジスタＶ２を通してコピーされ、レジスタＶ２のすべての９番目ビットは「don't care」である。
Ｖ２のビット［７：０］にＡ値が、ビット［１６：９］にＢ値が、ビット［２５：１８］にＣ値が、ビット［３４：２７］にＤ値が、ビット［３６：４３］にＡ値がそれぞれ印加され、このようにＶ２の最後まで進行される。
【００４４】
ベクトルＶ２は累算器２３０、ＷＢＭＵＸ２７０、およびＡｃｃＭＵＸ２６０に接続された出力部２２０．１に提供される。マスクはバイトイネーブルポート２３２およびＡＭＵＸ２５０とＢＭＵＸ２５５の入力に接続された出力部２２０．２に提供される。
ＶＥＣ６４モードにおいて、インデックスの６番目の最下位ビットはパイプライン読み出し端制御部（図示されず）に印加される。
６番目の最下位ビットが第１命令プラグと合わないと（すなわち、最下位ビットのすべてが「０」であるか「１」でないと）、パイプライン読み出し制御部は出力部２２０．２に接続されたマルチプレクサを制御してビットのすべてがリセットされた３２ビットバッファに接続された入力部を選択するようにする。
すなわち、要素を選択しないマスクはバイトイネーブルポート２３２、ＡＭＵＸ２５０、およびＢＭＵＸ２５５に印加される。
【００４５】
ＶＩＮＳＲＴ（スカラ値がベクトルに記入されたレジスタファイル２００内のベクトル）の結果が次の命令に使用されれば、プロセッサは「フォワーディングイネーブルされた(forwarding enabled)」信号を生成する。
この場合、ＶＲｄフィールド９７０が読み出しアドレス制御部２２６（または２２８）に提供され、ベクトルレジスタがＡＭＵＸ２５０またはＢＭＵＸ２２５に読み出される。
ＶＥＣ６４モードにおいて、第２ＶＩＮＳＲＴ命令はパイプライン形態に実行される。すなわち、第２ＶＩＮＳＲＴ命令実行の「周期−１」が第１ＶＩＮＳＲＴ命令実行の「周期−２」と同時的に実行される。
【００４６】
〈クロック周期３〉
周期３の間、ベクトルＶ２はＷＢＭＵＸ２７０およびＷＩＭＵＸ２４０、またはＡｃｃＭＵＸ２６０およびＷ２ＭＵＸ２４５を通して２８８ビット入力部２０２（または２０４）に伝達される。
ＶＲｄフィールド９７０は記入アドレス制御部２２２（または２２４）に提供される。マスクはバイトイネーブルポート２３２に提供される。マスクにより選択されたＶ２のバイト９フィールドはＶＲｄレジスタに記入される。
【００４７】
特に、セットされるそれぞれのマスクビットｉに対しＶ２のバイト９（すなわち、ビットＶ２［９ｉ＋８：９］）はＶＲｄに記入される。ＶＲｄレジスタの残りは変化されずに残存する。
ＶＥＣ６４モードにおいて、インデックスの６番目の最下位ビットが第１命令信号と合わないと、マスクのすべては「０」であり、要素はアップデートされない。
【００４８】
ＷＢＭＵＸ２７０またはＡｃｃＭＵＸ２６０の出力上のベクトルＶ２および出力２２０．２上のマスクはＡＭＵＸ２５０およびＢＵＭＸ２５５に提供される。
【００４９】
フォワーディングがイネーブルされると、周期２内のＶＲｄレジスタを読み出すＡＭＵＸ２５０またはＢＭＵＸ２５５はマスクにより選択されたＶ２のバイト９フィールドを記入して、ＶＲｄレジスタのコピーをＶＲｄコピーにアップデートする。
ＡＭＵＸ２５０またはＢＭＵＸ２５５はＡＭＵＸまたはＢＭＵＸ出力上のＶＲｄレジスタのアップデートされたコピーを次の命令に使用するために提供する。
【００５０】
よって、ＡＭＵＸまたはＢＭＵＸ出力とファイル２００内のＶＲｄレジスタは同様なベクトルを有する。
結果的に、周期３の終わりでレジスタファイル２００からＶＲｄレジスタを読み出さずに新しいベクトルをＡＬＵ２００および乗算器２１０に直ちに利用できる。
したがって、フォワードパシング(forward passing) 動作での追加的な周期が必要とされなくなる。
ＶＥＣ６４モードにおいて、第２ＶＩＮＳＲＴ命令はパイプライン形態に継続実行される。
【００５１】
〈クロック周期４〉
ＶＥＣ６４モードにおいて１第２ＶＩＮＳＲＴ命令の「周期−３」は第１ＶＩＮＳＲＴ命令が完了された後に実行される。
したがって、全体的なＶＥＣ６４のＶＩＮＳＲＴ命令の実行には４個の周期が必要とされ、パイプライン読み出し制御部により生成されたパイプラインＶＩＮＳＲＴ命令は３個の周期を必要とする。
【００５２】
以上説明した本発明は実施の形態および添付された図面により限定されるものではない。特に、本発明はレジスタファイルポートの個数、特定したデータ形態、データの大きさ、または命令フォーマット、特定したタイミング、または特定したハードウェアにより限定されない。
さらに、多様な実施の形態において、レジスタファイルはそれぞれの記入ポートに対するそれぞれの独立されたバイトイネーブルポートを包含する。プロセッサは一つ以上のＡＬＵを包含する。
ＡＬＵを追加すると、レジスタファイルが追加ポートを有してもレジスタファイルアクセスに対する競合を増加させ得る。
【００５３】
しかし、スカラ値をレジスタファイル内のベクトルレジスタに記入することがベクトルの読み出しを必要としないという事実はレジスタファイルアクセスに対する競合を減少させる。
本発明の技術的思想を外れない範囲内で多様な置換、変形、および変更が特許請求の範囲により規定されたように可能である。
【００５４】
【発明の効果】
本発明によると、コンピュータシステムにおいて記憶装置からベクトルを読み出さずにスカラ値をベクトルに記入し得る。このように、スカラ値をベクトルに記入する動作のためにベクトルが記憶部から読み出されないから、レジスタファイルアクセスのための競合が減少する。
【図面の簡単な説明】
【図１】本発明に係るレジスタファイルおよびＡＬＵを包含しスカラ値をベクトルに記入できるベクトルプロセッサのブロック図。
【図２】図１のＡＬＵを詳しく示したブロック図。
【図３】スカラレジスタに用いられるデータ形態のフォーマットを示した説明図。
【図４】ベクトルレジスタ内のデータ形態を示した説明図。
【図５】図２のマスク生成器により生成された３２ビットマスク内の各ビットが使用されたデータ形態にしたがいどのようにベクトルに配置されるかを示す説明図。
【図６】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図７】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図８】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図９】特定スカラ値およびデータの大きさのために図２のＡＬＵ−３により生成されたベクトル例を示した説明図。
【図１０】特定スカラ値およびデータの大きさのために図２のＡＬＵ−３により生成されたベクトル例を示した説明図。
【図１１】特定スカラ値およびデータの大きさのために図２のＡＬＵ−３により生成されたベクトル例を示した説明図。
【図１２】特定スカラ値およびデータの大きさのために図２のＡＬＵ−３により生成されたベクトル例を示した説明図。
【図１３】本発明に係るスカラ値をベクトルに再記入するために図１のプロセッサにより行われるＶＩＮＳＲＴのフォーマットを示した説明図。
【図１４】従来の演算論理装置を有するマイクロプロセッサの構成を示すブロック図。
【符号の説明】
２００  レジスタファイル
２１０  乗算器
２２０  ＡＬＵ
２２２、２２４  記入アドレス制御部
２２６、２２８  読み出しアドレス制御部
２３０  累算器
２４０  Ｗ１ＭＵＸ
２４５  Ｗ２ＭＵＸ
２５０  ＡＭＵＸ
２５５  ＢＭＵＸ
２６０  ＡｃｃＭＵＸ
２７０  ＷＢＭＵＸ
２９０  ＭＵＸ
【図１】
0003954171.tif 000003
【図２】
0003954171.tif 000004
【図３】
0003954171.tif 000005
【図４】
0003954171.tif 000006
【図５】
0003954171.tif 000007
【図６】
0003954171.tif 000008
【図７】
0003954171.tif 000009
【図８】
0003954171.tif 000010
【図９】
0003954171.tif 000011
【図１０】
0003954171.tif 000012
【図１１】
0003954171.tif 000013
【図１２】
0003954171.tif 000014
【図１３】
0003954171.tif 000015
【図１４】
0003954171.tif 000016