(57)【要約】【課題】  クォータニオン積を１命令により実行するＳＩＭＤ型プロセッサを提供する。【解決手段】  ２つの四次元ベクトルを読出しオペランドとするクォータニオン積命令において、レジスタファイル１４０から読み出された一方の四次元ベクトルに対してデータ操作回路１７０は各要素の並び替えおよび符号反転を施す。繰返し制御回路１５０はクォータニオン積命令において指定されたサイズに応じて積和演算を演算器１８０に繰返し実行させる。サイズ処理回路１６１および１６２は、指定されたサイズ（要素数）を超える要素に対してゼロを設定する。指定されたサイズが値"４"であればクォータニオン積が算出され、指定されたサイズが値"３"であれば外積が算出される。【選択図】      図１
2006146644.tif 000002
【特許請求の範囲】
【請求項１】
第１の入力ベクトルの要素と第２の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、
前記組合せによる積和演算を行う演算手段と、
前記第１および第２の入力ベクトルの要素数に応じて前記データ操作手段における前記組合せの生成および前記演算手段における前記積和演算を制御する繰返し制御手段と
を具備することを特徴とするプロセッサ。
【請求項２】
前記データ操作手段は、
前記繰返し制御手段による制御に基づいて前記第２の入力ベクトルの要素の並び替えを行う並び替え手段と、
前記繰返し制御手段による制御に基づいて前記並び替え手段による出力の符号を反転させる符号反転手段と
を備えることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記繰返し制御手段は、
前記要素数に応じた回数を計数する計数手段と、
前記計数手段による計数値に従って前記並び替え手段および前記符号反転手段に対する制御を行う演算制御手段と
を備えることを特徴とする請求項２記載のプロセッサ。
【請求項４】
前記第２の入力ベクトルは４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備え、
前記データ操作手段は前記繰返し制御手段による制御に基づいて第１の並び順（Ｂｗ、Ｂｚ、−Ｂｙ、Ｂｘ）と第２の並び順（−Ｂｚ、Ｂｗ、Ｂｘ、Ｂｙ）と第３の並び順（Ｂｙ、−Ｂｘ、Ｂｗ、Ｂｚ）と第４の並び順（−Ｂｘ、−Ｂｙ、−Ｂｚ、Ｂｗ）とを順次生成することを特徴とする請求項１記載のプロセッサ。
【請求項５】
前記第１の入力ベクトルは４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備え、
前記演算手段は前記繰返し制御手段による制御に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次行うことを特徴とする請求項４記載のプロセッサ。
【請求項６】
前記第１および第２の入力ベクトルについてそれぞれ前記要素数を超える要素にゼロを設定するサイズ処理手段をさらに具備することを特徴とする請求項１記載のプロセッサ。
【請求項７】
第１および第２の入力ベクトルを保持するベクトル保持手段と、
前記第１の入力ベクトルの要素と前記第２の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、
前記組合せによる積和演算を行う演算手段と、
前記第１および第２の入力ベクトルの要素数に応じて前記データ操作手段における前記組合せの生成および前記演算手段における前記積和演算を制御してその積和演算結果を前記ベクトル保持手段の出力ベクトルにおける所定要素として保持させる繰返し制御手段と
を具備することを特徴とするプロセッサ。
【請求項８】
４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備える第１の入力ベクトルと４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備える第２の入力ベクトルとを保持するベクトル保持手段と、
前記第１の入力ベクトルと第２の入力ベクトルとの間の演算を行う命令において前記第１および第２の入力ベクトルの要素数を抽出する抽出手段と、
前記第１の入力ベクトルの各要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を供給する第１の供給手段と、
前記第２の入力ベクトルの各要素について第１の並び順（Ｂｗ、Ｂｚ、−Ｂｙ、Ｂｘ）と第２の並び順（−Ｂｚ、Ｂｗ、Ｂｘ、Ｂｙ）と第３の並び順（Ｂｙ、−Ｂｘ、Ｂｗ、Ｂｚ）と第４の並び順（−Ｂｘ、−Ｂｙ、−Ｂｚ、Ｂｗ）とを順次供給する第２の供給手段と、
前記要素数が４である場合に前記第１および第２の供給手段から供給された前記第１および第２の入力ベクトルの各要素に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次行って前記ベクトル保持手段に保持させる演算手段と
を具備することを特徴とするプロセッサ。
【請求項９】
前記演算手段は、前記要素数が３である場合に前記第１および第２の供給手段から供給された前記第１および第２の入力ベクトルの各要素に基づいて第１の外積要素（ＡｙＢｚ−ＡｚＢｙ）と、第２の外積要素（−ＡｘＢｚ＋ＡｚＢｘ）と、第３の外積要素（ＡｘＢｙ−ＡｙＢｘ）とを順次生成して前記ベクトル保持手段に保持させることを特徴とする請求項８記載のプロセッサ。
【請求項１０】
４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備える第１の入力ベクトルと４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備える第２の入力ベクトルとの間の演算を行う命令を命令セットとして備えるプロセッサであって、
前記第１の入力ベクトルと第２の入力ベクトルとの間の演算を行う命令において前記第１および第２の入力ベクトルの要素数を抽出する抽出手段と、
前記要素数が４である場合に前記第１および第２の入力ベクトルの各要素に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次生成してクォータニオン積を算出する演算手段と
を具備することを特徴とするプロセッサ。
【請求項１１】
前記演算手段は、前記要素数が３である場合に前記第１および第２の入力ベクトルの各要素に基づいて第１の外積要素（ＡｙＢｚ−ＡｚＢｙ）と、第２の外積要素（−ＡｘＢｚ＋ＡｚＢｘ）と、第３の外積要素（ＡｘＢｙ−ＡｙＢｘ）とを順次生成して外積を算出することを特徴とする請求項１０記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction Multiple Data：単一命令複数データ）型プロセッサに関し、特に三次元ベクトルまたはクォータニオン（四元数）を扱うＳＩＭＤ型プロセッサに関する。
【背景技術】
【０００２】
三次元グラフィックス処理において、オブジェクトの回転や球面補間などを行うためにクォータニオン（Quaternion：四元数）という数が利用される。このクォータニオンとは、三次元ベクトルにスカラー値を加えたものであり、三次元空間内の軸とその軸を中心とする回転を表すものである。ここで、クォータニオンＰは、スカラー値ｐと三次元ベクトルＵとによって、
Ｐ＝［ｐ；Ｕ］
のように表現される。
【０００３】
また、ｐ＝Ａｗ、Ｕ＝（Ａｘ，Ａｙ，Ａｚ）として、虚数単位ｉ、ｊ、ｋを用いれば、
Ｐ＝ Ａｗ ＋ Ａｘ ｉ ＋ Ａｙ ｊ ＋ Ａｚ ｋ
のようにも表現される。ここで、虚数単位ｉ、ｊ、ｋは、
ｉｉ＝ｊｊ＝ｋｋ＝ｉｊｋ＝−１
ｉｊ＝ｋ
ｊｉ＝−ｋ
という関係にある。
【０００４】
同様に、クォータニオンＱを
Ｑ＝［ｑ；Ｖ］
とし、ｑ＝Ｂｗ，Ｖ＝（Ｂｘ，Ｂｙ，Ｂｚ）とすると、
Ｑ＝ Ｂｗ ＋ Ｂｘ ｉ ＋ Ｂｙ ｊ ＋ Ｂｚ ｋ
となる。
【０００５】
そして、これらクォータニオンＰとクォータニオンＱとのクォータニオン積ＰＱの演算は、
ＰＱ＝（―ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）
＋（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）ｉ
＋（―ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）ｊ
＋（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）ｋ
＝  Ｍｗ  ＋  Ｍｘ ｉ ＋ Ｍｙ ｊ ＋ Ｍｚ ｋ
により得られる（式１）。
【０００６】
このようなクォータニオン積における各成分（Ｍｗ、Ｍｘ、Ｍｙ、Ｍｚ）を求めるためには１６回の乗算と１２回の加減算を必要とし、これら全てを同時に行うこととすると必要な回路規模が大きくなるおそれがある。
【０００７】
ここで、２つのクォータニオンを２つの四次元ベクトルとして扱えば、クォータニオン積における各成分（Ｍｗ、Ｍｘ、Ｍｙ、Ｍｚ）は２つの四次元ベクトルの要素（Ａｗ、Ａｘ、Ａｙ、ＡｚおよびＢｗ、Ｂｘ、Ｂｙ、Ｂｚ）の積和の形式で与えられる。但し、積和の順序や符号はそれぞれ異なったものとなっている。従って、四次元ベクトルの要素の並び替えおよび符号反転を積和演算と同時に実行できるような回路があれば、４つの積和演算でクォータニオン積を実現することができる。
【０００８】
しかし、３２ビットの命令コードでは、並び替えおよび符号反転の情報を命令フィールドに含めて３オペランドのベクトル演算命令を表現するにはビット数が足りない。そのため、ベクトルの並び替えや符号反転を別命令により実現して、並び替えや符号反転の処理をした新たなベクトルを別のレジスタに格納してからそのレジスタを用いて演算を行うという手段が用いられることも多い。
【０００９】
例えば、インテル社が開発したマルチメディア向け命令セットＳＳＥ（Streaming SIMD Extensions）やモトローラ社が開発したマルチメディア向け命令セットAltiVec等において、そのようなベクトルの並び替えおよび符号反転を行う命令が設けられている（例えば、非特許文献１および非特許文献２参照。）。
【非特許文献１】「IA-32 Intel(R) Architecture Software Developer's Manual Volume 1: Basic Architecture」、Intel Corporation、２００４年
【非特許文献２】「AltiVec Technology Programming Interface Manual」、Motorola Inc.、１９９９年６月
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、クォータニオン積を算出する際、上述のようなベクトルの並び替えおよび符号反転を行う命令を用いた場合でも、４つの内積のそれぞれに対してさらにベクトルの並び替えおよび符号反転を行う命令を適用する必要が生じ、プログラムサイズが増大するという問題がある。
【００１１】
そこで、本発明は、クォータニオン積を１命令により実行するＳＩＭＤ型プロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、第１の入力ベクトルの要素と第２の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、上記組合せによる積和演算を行う演算手段と、上記第１および第２の入力ベクトルの要素数に応じて上記データ操作手段における上記組合せの生成および上記演算手段における上記積和演算を制御する繰返し制御手段とを具備することを特徴とするプロセッサである。これにより、第１および第２の入力ベクトルの各要素の任意の組合せについて積和演算を繰返し実行させるという作用をもたらす。すなわち、繰返し制御手段において繰返し制御を行うことにより、例えばクォータニオン積命令のようにベクトルの各要素の積和演算の組合せが複雑な場合でも、１命令に対する処理として完遂することができる。
【００１３】
また、この第１の側面において、上記データ操作手段は、上記繰返し制御手段による制御に基づいて上記第２の入力ベクトルの要素の並び替えを行う並び替え手段と、上記繰返し制御手段による制御に基づいて上記並び替え手段による出力の符号を反転させる符号反転手段とを備えることができる。これにより、第１および第２の入力ベクトルの各要素の任意の組合せを順序および符号について柔軟に生成させるという作用をもたらす。
【００１４】
ここで、さらに上記繰返し制御手段は、上記要素数に応じた回数を計数する計数手段と、上記計数手段による計数値に従って上記並び替え手段および上記符号反転手段に対する制御を行う演算制御手段とを備えることができる。これにより、ベクトル要素の任意の組合せにおいて積和演算を繰返し実行させるという作用をもたらす。
【００１５】
また、この第１の側面において、上記第２の入力ベクトルが４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備え、上記データ操作手段が上記繰返し制御手段による制御に基づいて第１の並び順（Ｂｗ、Ｂｚ、−Ｂｙ、Ｂｘ）と第２の並び順（−Ｂｚ、Ｂｗ、Ｂｘ、Ｂｙ）と第３の並び順（Ｂｙ、−Ｂｘ、Ｂｗ、Ｂｚ）と第４の並び順（−Ｂｘ、−Ｂｙ、−Ｂｚ、Ｂｗ）とを順次生成するものとすることができる。これにより、クォータニオン積を算出するための一方のベクトルを供給させるという作用をもたらす。
【００１６】
ここで、さらに上記第１の入力ベクトルが４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備え、上記演算手段が上記繰返し制御手段による制御に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次行うものとすることができる。これにより、クォータニオン積における各要素を供給させるという作用をもたらす。
【００１７】
また、この第１の側面において、上記第１および第２の入力ベクトルについてそれぞれ上記要素数を超える要素にゼロを設定するサイズ処理手段をさらに具備することができる。これにより、第１および第２の入力ベクトルにおける要素数が短い場合にも適正な積和演算結果を算出させるという作用をもたらす。
【００１８】
また、本発明の第２の側面は、第１および第２の入力ベクトルを保持するベクトル保持手段と、上記第１の入力ベクトルの要素と上記第２の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、上記組合せによる積和演算を行う演算手段と、上記第１および第２の入力ベクトルの要素数に応じて上記データ操作手段における上記組合せの生成および上記演算手段における上記積和演算を制御してその積和演算結果を上記ベクトル保持手段の出力ベクトルにおける所定要素として保持させる繰返し制御手段とを具備することを特徴とするプロセッサである。これにより、ベクトル保持手段に保持された第１および第２の入力ベクトルの各要素の任意の組合せについて積和演算を繰返し実行させるという作用をもたらす。
【００１９】
また、本発明の第３の側面は、４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備える第１の入力ベクトルと４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備える第２の入力ベクトルとを保持するベクトル保持手段と、上記第１の入力ベクトルと第２の入力ベクトルとの間の演算を行う命令において上記第１および第２の入力ベクトルの要素数を抽出する抽出手段と、上記第１の入力ベクトルの各要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を供給する第１の供給手段と、上記第２の入力ベクトルの各要素について第１の並び順（Ｂｗ、Ｂｚ、−Ｂｙ、Ｂｘ）と第２の並び順（−Ｂｚ、Ｂｗ、Ｂｘ、Ｂｙ）と第３の並び順（Ｂｙ、−Ｂｘ、Ｂｗ、Ｂｚ）と第４の並び順（−Ｂｘ、−Ｂｙ、−Ｂｚ、Ｂｗ）とを順次供給する第２の供給手段と、上記要素数が４である場合に上記第１および第２の供給手段から供給された上記第１および第２の入力ベクトルの各要素に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次行って上記ベクトル保持手段に保持させる演算手段とを具備することを特徴とするプロセッサである。これにより、要素数を４に設定することによりクォータニオン積の各要素を順次生成させるという作用をもたらす。
【００２０】
また、この第３の側面において、上記演算手段は、上記要素数が３である場合に上記第１および第２の供給手段から供給された上記第１および第２の入力ベクトルの各要素に基づいて第１の外積要素（ＡｙＢｚ−ＡｚＢｙ）と、第２の外積要素（−ＡｘＢｚ＋ＡｚＢｘ）と、第３の外積要素（ＡｘＢｙ−ＡｙＢｘ）とを順次生成して上記ベクトル保持手段に保持させるようにすることができる。これにより、要素数を３に設定することにより外積の各要素を順次生成させるという作用をもたらす。
【００２１】
また、本発明の第４の側面は、４つの要素（Ａｘ、Ａｙ、Ａｚ、Ａｗ）を備える第１の入力ベクトルと４つの要素（Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗ）を備える第２の入力ベクトルとの間の演算を行う命令を命令セットとして備えるプロセッサであって、上記第１の入力ベクトルと第２の入力ベクトルとの間の演算を行う命令において上記第１および第２の入力ベクトルの要素数を抽出する抽出手段と、上記要素数が４である場合に上記第１および第２の入力ベクトルの各要素に基づいて第１の積和演算（ＡｘＢｗ＋ＡｙＢｚ−ＡｚＢｙ＋ＡｗＢｘ）と第２の積和演算（−ＡｘＢｚ＋ＡｙＢｗ＋ＡｚＢｘ＋ＡｗＢｙ）と第３の積和演算（ＡｘＢｙ−ＡｙＢｘ＋ＡｚＢｗ＋ＡｗＢｚ）と第４の積和演算（−ＡｘＢｘ−ＡｙＢｙ−ＡｚＢｚ＋ＡｗＢｗ）とを順次生成してクォータニオン積を算出する演算手段とを具備することを特徴とするプロセッサである。これにより、要素数を４に設定することによりクォータニオン積の各要素を順次生成させる命令をプロセッサに実行させるという作用をもたらす。
【００２２】
また、この第４の側面において、上記演算手段は、上記要素数が３である場合に上記第１および第２の入力ベクトルの各要素に基づいて第１の外積要素（ＡｙＢｚ−ＡｚＢｙ）と、第２の外積要素（−ＡｘＢｚ＋ＡｚＢｘ）と、第３の外積要素（ＡｘＢｙ−ＡｙＢｘ）とを順次生成して外積を算出するようにすることができる。これにより、要素数を３に設定することにより外積の各要素を順次生成させる命令をプロセッサに実行させるという作用をもたらす。
【発明の効果】
【００２３】
本発明によれば、クォータニオン積を１命令により実行するという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００２４】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２５】
図１は、本発明の実施の形態におけるＳＩＭＤ型コンピュータシステムの構成例を示す図である。このＳＩＭＤ型コンピュータシステムは、プロセッサ１００と、命令メモリ２００とを備える。プロセッサ１００は、プログラムカウンタ１１０と、命令デコーダ１３０と、レジスタファイル１４０と、繰返し制御回路１５０と、サイズ処理回路１６１および１６２と、データ操作回路１７０と、演算器１８０とを備える。このプロセッサ１００は、命令メモリ２００に接続し、もしくはそれを内蔵する。
【００２６】
プログラムカウンタ１１０は、命令メモリ２００における命令の読出しアドレスを計数するカウンタである。このプログラムカウンタ１１０により信号線１１９を介して指示されたアドレスによって命令メモリ２００から命令の読出しが行われて、信号線２０９を介して命令デコーダ１３０に供給される。命令デコーダ１３０は、命令メモリ２００から読み出された命令をデコードして、命令のオペコードやその命令に必要とされるオペランドを抽出する。
【００２７】
レジスタファイル１４０は、命令デコーダ１３０から信号線１３９を介して与えられたオペランドによりアクセスされ、読出しおよび書込みが行われる。レジスタファイル１４０は、同時に２組のデータを読み出すことができ、それぞれ信号線１４８および１４９によりサイズ処理回路１６１および１６２に供給される。
【００２８】
繰返し制御回路１５０は、デコードされた信号を信号線１３８により受け取り、これに従って、信号線１５１によりレジスタファイル１４０を制御し、信号線１５４および１５５によりデータ操作回路１７０を制御し、また、信号線１５６により演算器１８０を制御する。この繰返し制御回路１５０は、クォータニオン積のように演算を複数回繰り返す必要がある場合にその繰返しを制御するものである。
【００２９】
サイズ処理回路１６１および１６２は、それぞれレジスタファイル１４０から読み出されたオペランド（データ）を受け、入力されたデータのうち、信号線１３７により与えられる要素数（サイズ）を超える部分に対して値"０"を設定するというサイズ処理を行うものである。
【００３０】
データ操作回路１７０は、サイズ処理回路１６２によりサイズ処理が施されたオペランドを信号線１６９によって受け取り、データ順序の並び替えや符号反転といったデータ操作を行うものである。このようなデータ操作が施されたオペランドは信号線１７９により演算器１８０に供給される。
【００３１】
演算器１８０は、繰返し制御回路１５０からの信号線１５６による制御に基づいて、信号線１６８および信号線１７９により与えられたオペランドに対して所定の演算を行う。この演算器１８０による演算結果は、繰返し制御回路１５０からの信号線１５６による制御に基づいて、信号線１８９によりレジスタファイル１４０に書き込まれる。
【００３２】
図２は、本発明の実施の形態における命令フォーマット例を示す図である。ここでは、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャ型命令セットとして、３個のオペランドを有する３２ビット固定長命令を想定する。プロセッサ１００はこの固定長命令に基づいて最大４つの演算を同時に水平実行するＳＩＭＤ型プロセッサとして実現される。なお、ここでは一例として４演算の同時実行を想定して以下説明するが、これに限られず任意の数の演算を同時に実行するようにしても構わない。
【００３３】
この命令フォーマットは、機能コード２１０と、サイズ２２０と、書込みオペランド２３０と、第１読出しオペランド２４０と、第２読出しオペランド２５０とを備える。機能コード２１０は、命令のオペコードを示すものであり、本発明の実施の形態においては演算器１８０における演算の種類を表すことになる。サイズ２２０は、演算の対象となるデータの要素数を示すものであり、機能コード２１０に応じて各部の制御に用いられる。すなわち、デコーダ１３１によるデコード結果によって、セレクタ１３２においてサイズ２２０の内容または値"１"の何れかが選択されて、書込み要素数２２３、第１読出し要素数２２４、第２読出し要素数２２５、ならびに、繰返し数２２６が決定される。ここで、書込み要素数２２３はレジスタファイル１４０にデータを書き込む際の要素数であり、第１読出し要素数２２４および第２読出し要素数２２５はそれぞれレジスタファイル１４０からデータを読み出す際の要素数である。また、繰返し数２２６は繰返し制御回路１５０において繰返し制御を行う際の繰返し数である。このセレクタ１３２における選択内容を示すのが図３である。
【００３４】
図３を参照すると、機能コード２１０に対応して、書込み要素数２２３、第１読出し要素数２２４、第２読出し要素数２２５、ならびに、繰返し数２２６の選択内容が示されている。ここでは、機能コード２１０として、クォータニオン積（ｑｍｕｌ）、内積（ｄｏｔ）、加算（ａｄｄ）、減算（ｓｕｂ）、乗算（ｍｕｌ）、除算（ｄｉｖ）、ならびに、比較（ｃｍｐ）が挙げられている。
【００３５】
例えば、クォータニオン積の場合、書込み要素数２２３としては値"１"が与えられ、第１読出し要素数２２４、第２読出し要素数２２５、および、繰返し数２２６としてはサイズ２２０の内容が与えられる。
【００３６】
図２を再び参照すると、書込みオペランド２３０は、レジスタファイル１４０に対する書込みアドレスを示すものであり、書込みレジスタ指定２３１および書込み要素指定２３２を保持する。レジスタファイル１４０において、複数要素を一組にまとめたレジスタをさらに複数保持するものとした場合、書込みレジスタ指定２３１によって書込み対象となるレジスタを指定し、さらにそのレジスタにおける何れの要素であるかを書込み要素指定２３２により指定するものである。
【００３７】
第１読出しオペランド２４０および第２読出しオペランド２５０は、レジスタファイル１４０からの読出しアドレスを示すものであり、それぞれ第１読出しレジスタ指定２４１および第２読出しレジスタ指定２５１を含む。本発明の実施の形態においては、読出し対象となるレジスタを指定すれば足り、そのレジスタにおける要素指定は特に必要ではないため、要素指定のフィールドは設けられていない。
【００３８】
なお、レジスタファイル１４０の構成として、例えば４要素を一組にまとめたレジスタを３２ワード保持するものとすれば、レジスタ指定に５ビット、要素指定に２ビット必要となる。各オペランドに対して均等にフィールド割り当てを行うとすると、書込みオペランド２３０、第１読出しオペランド２４０および第２読出しオペランド２５０には、それぞれ７ビットずつが割り当てられる。また、サイズ２２０についてもレジスタにおける要素数であることから、２ビットが割り当てられる。従って、この場合、３２ビットのうち９ビットを機能コード２１０に割り当てることができる。
【００３９】
図４は、本発明の実施の形態における命令デコーダ１３０によるデコード例を示す図である。この命令デコーダ１３０は、命令メモリ２００から信号線２０９により読み出された命令をデコードして、以下の各フィールドを抽出する。すなわち、機能コード２１０、書込み要素数２２３、書込み要素指定２３２、および、繰返し数２２６を信号線１３８に出力する。また、書込みレジスタ指定２３１、第１読出しレジスタ指定２４１、および、第２読出しレジスタ指定２５１を信号線１３９に出力する。さらに、第１読出し要素数２２４、および、第２読出し要素数２２５を信号線１３７に出力する。
【００４０】
図５は、本発明の実施の形態における繰返し制御回路１５０の構成例を示す図である。この繰返し制御回路１５０は、繰返しカウンタ５１０と、演算制御回路５２０とを備えている。
【００４１】
繰返しカウンタ５１０は、信号線１３８における繰返し数２２６を受け取ると、初期値"１"から繰返し数２２６に至るまで１つずつ計数し、その計数値を信号線５１９により演算制御回路５２０に供給するものである。
【００４２】
演算制御回路５２０は、信号線１３８における機能コード２１０、書込み要素数２２３および書込み要素指定２３２、ならびに、信号線５１９における繰返しカウントに基づいて、信号線１５１に書込みイネーブルを、信号線１５４に読出し並び替えを、信号線１５５に読出し符号反転を、そして、信号線１５６に演算器指定をそれぞれ出力するものである。
【００４３】
信号線１５１における書込みイネーブルは、レジスタファイル１４０における要素位置に対応して１ビットずつ設けられる。例えばレジスタファイル１４０の構成として、例えば４要素を一組にまとめたレジスタを保持するものとすれば、信号線１５１における書込みイネーブルは、１５１１乃至１５１４の４ビットから構成されて、レジスタファイル１４０に供給されることになる。
【００４４】
また、信号線１５４における読出し並び替えおよび信号線１５５における読出し符号反転は、データ操作回路１７０に供給される。そして、信号線１５６における演算器指定は、演算器１８０に供給される。
【００４５】
図６は、本発明の実施の形態におけるクォータニオン積命令に関して繰返し制御回路１５０により行われる制御内容の一例を示す図である。機能コード２１０がクォータニオン積（ｑｍｕｌ）を示す場合、演算制御回路５２０は信号線５１９における繰返しカウントに従って各制御信号を生成する。
【００４６】
まず、信号線１５１における書込みイネーブルについて、信号線５１９における繰返しカウントが値"１"を示すときには、信号線１５１における第１のビットだけが値"１"となり、それ以外のビットは値"０"になる。従って、繰返しカウントが値"１"を示すときには、演算器１８０における演算結果は書込みレジスタにおける第１番目の要素のみに書き込まれる。また、信号線５１９における繰返しカウントが値"２"を示すときには、信号線１５１における第２のビットだけが値"１"となり、それ以外のビットは値"０"になる。従って、繰返しカウントが値"２"を示すときには、演算器１８０における演算結果は書込みレジスタにおける第２番目の要素のみに書き込まれる。以下同様に、繰返しカウントが値"３"を示すときには演算器１８０における演算結果は書込みレジスタにおける第３番目の要素のみに書き込まれ、繰返しカウントが値"４"を示すときには演算器１８０における演算結果は書込みレジスタにおける第４番目の要素のみに書き込まれる。
【００４７】
また、信号線１５４における読出し並び替えは、元の状態を"ＸＹＺＷ"とした場合にその指定された状態になるように読出しデータの並び替えを行うことを意味している。信号線５１９における繰返しカウントが値"１"を示すときには、信号線１５４における読出し並び替えは"ＷＺＹＸ"を示しており、元の並び順から逆順になるように並び替えを行うことを意味している。また、信号線５１９における繰返しカウントが値"２"を示すときには、信号線１５４における読出し並び替えは"ＺＷＸＹ"を示しており、第１番目のデータが第３番目になり、第２番目のデータが第４番目になり、第３番目のデータが第１番目になり、第４番目のデータが第２番目になるように、それぞれ並び替えを行うべきことを意味している。以下同様に、信号線５１９における繰返しカウントが値"３"を示すときには"ＹＸＷＺ"となるように並び替えが行われ、信号線５１９における繰返しカウントが値"４"を示すときには"ＸＹＺＷ"となるように（すなわち入力がそのまま）出力される。
【００４８】
また、信号線１５５における読出し符号反転は、上述の並び替えを経たデータについて対応する記号が"Ｐ"であれば符号の反転を行わず、"Ｎ"であれば符号の反転を行うことを示すものである。信号線５１９における繰返しカウントが値"１"を示すときには、信号線１５５における読出し符号反転は"ＰＰＮＰ"を示しており、第３番目のデータについてのみ符号反転を行うことを意味している。また、信号線５１９における繰返しカウントが値"２"を示すときには、信号線１５５における読出し符号反転は"ＮＰＰＰ"を示しており、第１番目のデータについてのみ符号反転を行うことを意味している。以下同様に、信号線５１９における繰返しカウントが値"３"を示すときには第２番目のデータについてのみ符号反転が行われ、信号線５１９における繰返しカウントが値"４"を示すときには第４番目以外のデータについて符号反転が行われる。
【００４９】
これら信号線１５４における読出し並び替えおよび信号線１５５における読出し符号反転は、上述の式１におけるクォータニオン積の各要素の組合せ順序および符号に対応している。
【００５０】
また、信号線１５６における演算器指定としては、内積を表す値"５"が出力される。これは信号線５１９における繰返しカウントには依存しない。
【００５１】
図７は、本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路１５０により行われる制御内容の一例を示す図である。図７（ａ）は、機能コード２１０が、加算（ａｄｄ）、減算（ｓｕｂ）、乗算（ｍｕｌ）、除算（ｄｉｖ）、または、比較（ｃｍｐ）であるときの信号線１５１における書込みイネーブルの内容を示す図である。また、図７（ｂ）は、機能コード２１０が、内積（ｄｏｔ）であるときの信号線１５１における書込みイネーブルの内容を示す図である。
【００５２】
図７（ａ）を参照すると、機能コード２１０が加算等を示す場合、信号線１３８における書込み要素数２２３が値"１"であれば、信号線１５１における書込みイネーブルの第１番目のビットのみが値"１"となり、それ以外のビットは値"０"となる。信号線１３８における書込み要素数２２３が値"２"であれば、信号線１５１における書込みイネーブルの第１番目および第２番目のビットが値"１"となり、それ以外のビットは値"０"となる。信号線１３８における書込み要素数２２３が値"３"であれば、信号線１５１における書込みイネーブルの第４番目のビットのみが値"０"となり、それ以外のビットは値"１"となる。そして、信号線１３８における書込み要素数２２３が値"４"であれば、信号線１５１における書込みイネーブルの全てのビットは値"１"となる。
【００５３】
図７（ｂ）を参照すると、機能コード２１０が内積を示す場合、信号線１３８における書込み要素指定２３２が値"Ｘ"であれば、信号線１５１における書込みイネーブルの第１番目のビットのみが値"１"となり、それ以外のビットは値"０"となる。信号線１３８における書込み要素指定２３２が値"Ｙ"であれば、信号線１５１における書込みイネーブルの第２番目のビットのみが値"１"となり、それ以外のビットは値"０"となる。信号線１３８における書込み要素指定２３２が値"Ｚ"であれば、信号線１５１における書込みイネーブルの第３番目のビットのみが値"１"となり、それ以外のビットは値"０"となる。信号線１３８における書込み要素指定２３２が値"Ｗ"であれば、信号線１５１における書込みイネーブルの第４番目のビットのみが値"１"となり、それ以外のビットは値"０"となる。
【００５４】
図８は、本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路１５０により行われる制御内容の他の例を示す図である。機能コード２１０が、加算、減算、乗算、除算、比較、または、内積であるとき、信号線５１９における繰返しカウントは常に値"１"を示し、信号線１５４における読出し並び替えは"ＸＹＺＷ"を示し、また、信号線１５５における読出し符号反転は"ＰＰＰＰ" を示す。すなわち、演算器１８０において複数回の繰返しは行われず、読出しデータの並び替えや符号反転も行われないことを意味する。
【００５５】
但し、演算器１８０に対する信号線１５６による演算器指定は必要であり、加算の場合には値"０"、減算の場合には値"１"、乗算の場合には値"２"、除算の場合には値"３"、比較の場合には値"４"、内積の場合には値"５"がそれぞれ指定される。
【００５６】
図９は、本発明の実施の形態におけるレジスタファイル１４０の構成例を示す図である。レジスタファイル１４０は、ここでは同時にアクセスされる横方向の４要素を一つのレジスタとして、縦方向にアドレス付けされる。ここでは、左から第１番目の要素にはクォータニオンのｘ成分、第２番目の要素にはｙ成分、第３番目の要素にはｚ成分、第４番目の要素にはｗ成分（スカラ成分）が、それぞれ保持されることを想定している。
【００５７】
このレジスタファイル１４０におけるアクセスアドレスは、信号線１３９を介して命令デコーダ１３０により与えられる。信号線１３９において、第１読出しレジスタ指定２４１および第２読出しレジスタ指定２５１は読出しアドレスを示し、書込みレジスタ指定２３１は書込みアドレスを示す。第１読出しレジスタ指定２４１の示すアドレスに保持されているデータは信号線１４８から読み出される。同様に、第２読出しレジスタ指定２５１の示すアドレスに保持されているデータは信号線１４９から読み出される。
【００５８】
また、書込みレジスタ指定２３１の示すアドレスには信号線１８９から供給されるデータが保持される。その際、信号線１５１における書込みイネーブルに従って、対応するデータが保持されるか否かが制御される。すなわち、書込みイネーブルの第１番目のビット１５１１が値"１"を示していれば対応する第１番目の要素にデータの書込みが行われ、値"０"を示していれば対応する第１番目の要素へのデータの書込みは行われない。他のビットについても同様に、書込みイネーブルの第２乃至４番目のビットが値"１"を示していればその対応する要素にデータの書込みが行われ、値"０"を示している要素にはデータの書込みは行われない。
【００５９】
図１０は、本発明の実施の形態におけるサイズ処理回路１６１または１６２の構成例を示す図である。サイズ処理回路１６１または１６２は、それぞれ２入力セレクタ６１１乃至６１４または６２１乃至６２４を備える。
【００６０】
２入力セレクタ６１１乃至６１４のそれぞれは、信号線１４８によってレジスタファイル１４０から供給された４つのデータ１４８１乃至１４８４または値"０"の何れかを、信号線１３７における第１読出し要素数２２４に従って選択する。同様に、２入力セレクタ６２１乃至６２４のそれぞれは、信号線１４９によってレジスタファイル１４０から供給された４つのデータ１４９１乃至１４９４または値"０"の何れかを、信号線１３７における第２読出し要素数２２５に従って選択する。このとき、第１読出し要素数２２４および第２読出し要素数２２５と、２入力セレクタ６１１乃至６１４および６２１乃至６２４に対する選択信号（読出しイネーブル）との関係は図１１のようになる。
【００６１】
図１１は、本発明の実施の形態におけるサイズ処理回路１６１または１６２における選択信号の内容例を示す図である。
【００６２】
すなわち、信号線１３７における第１読出し要素数２２４が値"１"であれば、２入力セレクタ６１１に対する読出しイネーブル２２４１のみが値"１"となり、それ以外については値"０"となる。これにより、信号線１６８１には信号線１４８１の値が出力され、信号線１６８２乃至１６８４には値"０"が出力される。信号線１３７における第１読出し要素数２２４が値"２"であれば、２入力セレクタ６１１および６１２に対する読出しイネーブル２２４１および２２４２が値"１"となり、それ以外については値"０"となる。これにより、信号線１６８１および１６８２にはそれぞれ信号線１４８１および１４８２の値が出力され、信号線１６８３および１６８４には値"０"が出力される。信号線１３７における第１読出し要素数２２４が値"３"であれば、２入力セレクタ６１４に対する読出しイネーブル２２４４が値"０"となり、それ以外については値"１"となる。これにより、信号線１６８１乃至１６８３にはそれぞれ信号線１４８１乃至１４８３の値が出力され、信号線１６８４には値"０"が出力される。信号線１３７における第１読出し要素数２２４が値"４"であれば、２入力セレクタ６１１乃至６１４に対する全ての読出しイネーブル２２４１乃至２２４４が値"１"となる。これにより、信号線１６８１乃至１６８４にはそれぞれ信号線１４８１乃至１４８４の値がそのまま出力されることになる。
【００６３】
同様に、信号線１３７における第２読出し要素数２２５が値"１"であれば、２入力セレクタ６２１に対する読出しイネーブル２２５１のみが値"１"となり、それ以外については値"０"となる。これにより、信号線１６９１には信号線１４９１の値が出力され、信号線１６９２乃至１６９４には値"０"が出力される。信号線１３７における第２読出し要素数２２５が値"２"であれば、２入力セレクタ６２１および６２２に対する読出しイネーブル２２５１および２２５２が値"１"となり、それ以外については値"０"となる。これにより、信号線１６９１および１６９２にはそれぞれ信号線１４９１および１４９２の値が出力され、信号線１６９３および１６９４には値"０"が出力される。信号線１３７における第２読出し要素数２２５が値"３"であれば、２入力セレクタ６２４に対する読出しイネーブル２２５４が値"０"となり、それ以外については値"１"となる。これにより、信号線１６９１乃至１６９３にはそれぞれ信号線１４９１乃至１４９３の値が出力され、信号線１６９４には値"０"が出力される。信号線１３７における第２読出し要素数２２５が値"４"であれば、２入力セレクタ６２１乃至６２４に対する全ての読出しイネーブル２２５１乃至２２５４が値"１"となる。これにより、信号線１６９１乃至１６９４にはそれぞれ信号線１４９１乃至１４９４の値がそのまま出力されることになる。
【００６４】
このようにして、サイズ処理回路１６１および１６２において要素数（サイズ）を超える部分に対して値"０"を設定することにより、要素数が４に満たない場合でも４要素の乗算結果の総和が内積を示すようにすることができる。また、そのような場合に必要でない要素をゼロにしておくことによって、余計に演算器が動作することを防止して消費電力を低減させることができる。
【００６５】
図１２は、本発明の実施の形態におけるデータ操作回路１７０の構成例を示す図である。データ操作回路１７０は、４つの４入力セレクタ７１１乃至７１４と、４つの符号反転器７２１乃至７２４と、４つの２入力セレクタ７３１乃至７３４とを備えている。
【００６６】
４入力セレクタ７１１乃至７１４のそれぞれは、信号線１６９によってサイズ処理回路１６２から供給された４つのデータ１６９１乃至１６９４の何れかを、信号線１５４における読出し並び替え１５４１乃至１５４４に従って選択する。信号線１５４における読出し並び替え１５４１乃至１５４４は繰返し制御回路１５０から供給されるものであり、図６および図８により説明したように、それぞれ何れの成分を選択すべきかを示している。従って、４入力セレクタ７１１乃至７１４により、データの並び替えが行われる。
【００６７】
符号反転器７２１乃至７２４は、それぞれ４入力セレクタ７１１乃至７１４の出力の符号を反転させるものである。そして、２入力セレクタ７３１乃至７３４において、それぞれ符号反転器７２１乃至７２４を介した値または符号反転器７２１乃至７２４を介さないそのままの値の何れかが、信号線１５５における読出し符号反転１５５１乃至１５５４に従って選択される。信号線１５５における読出し符号反転１５５１乃至１５５４は繰返し制御回路１５０から供給されるものであり、図６および図８により説明したように、それぞれ符号を反転させるか否かを示している。従って、符号反転器７２１乃至７２４および２入力セレクタ７３１乃至７３４によりデータの符号反転が行われ、信号線１７９によって４つのデータ１７９１乃至１７９４が出力される。
【００６８】
図１３は、本発明の実施の形態における演算器１８０の構成例を示す図である。演算器１８０は、４組の演算回路群８１０と、加算器８２０と、４つの演算結果セレクタ８３１乃至８３４とを備えている。
【００６９】
演算回路群８１０は４組の入力オペランド対に対応して設けられる。演算回路群８１０の各々は、例えば加算器、減算器、乗算器、除算器、比較器などを備えている。加算器８２０は、４組の演算回路群８１０における乗算器のそれぞれの出力を受け取り、４つの乗算結果の総和を計算する。すなわち、この加算器８２０の出力が積和演算結果を示すことになる。
【００７０】
演算結果セレクタ８３１乃至８３４は、演算回路群８１０および加算器８２０による演算結果を、繰返し制御回路１５０から信号線１５６を介して与えられる演算器指定に従って選択して、その結果を信号線１８９（１８９１乃至１８９４）に出力する。例えば、演算器指定が「０」であれば演算回路群８１０による加算結果が選択され、演算器指定が「１」であれば演算回路群８１０による減算結果が選択され、演算器指定が「２」であれば演算回路群８１０による乗算結果が選択され、演算器指定が「３」であれば演算回路群８１０による除算結果が選択され、演算器指定が「４」であれば演算回路群８１０による比較結果が選択され、演算器指定が「５」であれば加算器８２０による積和演算結果が選択される。
【００７１】
以上のような構成を有するＳＩＭＤ型コンピュータシステムにおいて、クォータニオン積命令（ｑｍｕｌ）はクォータニオンＰおよびＱの各４成分をそれぞれ４次元ベクトルの要素に割り当ててクォータニオン積ＰＱを生成する。すなわち、Ａｘ，Ａｙ，Ａｚ，Ａｗの順番でレジスタファイル１４０における成分Ｘ、Ｙ、Ｚ、Ｗに格納した４次元ベクトルを第１読出しオペランド２４０で指定し、Ｂｘ、Ｂｙ、Ｂｚ、Ｂｗの順番でレジスタファイル１４０における成分Ｘ、Ｙ、Ｚ、Ｗに格納した４次元ベクトルを第２読出しオペランド２５０で指定した上で、サイズ２２０を値"４"とする。これにより、レジスタファイル１４０の指定された書込みオペランド２３０の成分Ｘ、Ｙ、Ｚ、Ｗにおいて、Ｍｘ、Ｍｙ、Ｍｚ、Ｍｗの順番でクォータニオン積ＰＱが得られる。
【００７２】
また、クォータニオンＰとクォータニオンＱとの積ＰＱは、３次元ベクトルＵ，Ｖの内積と外積を用いると、
ＰＱ＝［ｐｑ―Ｕ・Ｖ；  ｐＶ＋ｑＵ＋Ｕ×Ｖ］
と表すことができる。但し、・は内積、×は外積である。
【００７３】
ここで、ｐ＝０、ｑ＝０を想定すれば、そのときのクォータニオンＰとＱとの積は
ＰＱ = ［―Ｕ・Ｖ；  Ｕ×Ｖ］
となる。このＰＱの各成分はＵとＶの外積そのものとなることが分かる。すなわち、
ＰＱ＝（ＡｙＢｚ−ＡｚＢｙ）ｉ
＋（―ＡｘＢｚ＋ＡｚＢｘ）ｊ
＋（ＡｘＢｙ−ＡｙＢｘ）ｋ
＝  Ｎｘ ｉ ＋Ｎｙ ｊ ＋ Ｎｚ ｋ
である。
【００７４】
すなわち、サイズ２２０を値"３"としてクォータニオン積命令を実行すれば、第１読出しオペランド２４０によるレジスタおよび第２読出しオペランド２５０によるレジスタは、サイズ処理回路１６１および１６２によって共に成分Ｗがゼロに設定される。そして、繰返し数２２６にもサイズ２２０の値"３"が設定されるため、繰返しカウンタ５１０による繰返しカウント５１９は"１"、"２"、"３"までとなり、成分Ｘ、Ｙ、Ｚに対しての３回、それぞれの設定で演算が行われてＭｘ、Ｍｙ、Ｍｚが算出される。このときの係数（Ｎｘ、Ｎｙ、Ｎｚ）は、成分Ｗが共にゼロなのでｐ＝０、ｑ＝０であり、３次元ベクトル（Ａｘ、Ａｙ、Ａｚ）および（Ｂｘ、Ｂｙ、Ｂｚ）の外積を計算したことになる。
【００７５】
このように、本発明の実施の形態によれば、２つの四次元ベクトルの一方についてデータ操作を行いながら繰返し制御回路１５０によって両ベクトルの積和演算を４回繰り返すことにより、クォータニオン積を算出することができる。従って、複数の命令を組み合わせることなく、１つのクォータニオン積命令だけでクォータニオン積を実行することができ、プログラムサイズを短縮させ、命令キャッシュの利用効率を向上させることができる。また、並び替えや符号反転を施した中間データを保持するレジスタを設ける必要がないため、レジスタの利用効率を向上させることができる。
【００７６】
また、そのクォータニオン積を算出する構成と同じ構成において三次元ベクトルを適用することにより、外積を算出することができる。すなわち、機能コード２１０においてクォータニオン積命令（ｑｍｕｌ）を指定した場合、サイズ２２０を値"４"とすることによりクォータニオン積を算出することができ、サイズ２２０を値"３"とすることにより外積を算出することができるようになる。
【００７７】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【００７８】
すなわち、請求項１において、データ操作手段は例えばデータ操作回路１７０に対応する。また、演算手段は例えば演算器１８０に対応する。また、繰返し制御手段は例えば繰返し制御回路１５０に対応する。
【００７９】
また、請求項２において、並び替え手段は例えばセレクタ７１１乃至７１４に対応する。また、符号反転手段は例えば符号反転器７２１乃至７２４およびセレクタ７３１乃至７３４に対応する。
【００８０】
また、請求項３において、計数手段は例えば繰返しカウンタ５１０に対応する。また、演算制御手段は例えば演算制御回路５２０に対応する。
【００８１】
また、請求項６において、サイズ処理手段は例えばサイズ処理回路１６１および１６２に対応する。
【００８２】
また、請求項７において、ベクトル保持手段は例えばレジスタファイル１４０に対応する。データ操作手段は例えばデータ操作回路１７０に対応する。また、演算手段は例えば演算器１８０に対応する。また、繰返し制御手段は例えば繰返し制御回路１５０に対応する。
【００８３】
また、請求項８において、ベクトル保持手段は例えばレジスタファイル１４０に対応する。また、抽出手段は例えば命令デコーダ１３０に対応する。また、第１の供給手段は例えばレジスタファイル１４０に対応する。また、第２の供給手段は例えばデータ操作回路１７０に対応する。また、演算手段は例えば演算器１８０に対応する。
【００８４】
また、請求項１０において、抽出手段は例えば命令デコーダ１３０に対応する。また、演算手段は例えば演算器１８０に対応する。
【００８５】
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
【産業上の利用可能性】
【００８６】
本発明の活用例として、例えばベクトル演算を行うＳＩＭＤ型プロセッサに本発明を適用することができる。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態におけるＳＩＭＤ型コンピュータシステムの構成例を示す図である。
【図２】本発明の実施の形態における命令フォーマット例を示す図である。
【図３】本発明の実施の形態における機能コード２１０とサイズ２２０との関係を示す図である。
【図４】本発明の実施の形態における命令デコーダ１３０によるデコード例を示す図である。
【図５】本発明の実施の形態における繰返し制御回路１５０の構成例を示す図である。
【図６】本発明の実施の形態におけるクォータニオン積命令に関して繰返し制御回路１５０により行われる制御内容の一例を示す図である。
【図７】本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路１５０により行われる制御内容の一例を示す図である。
【図８】本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路１５０により行われる制御内容の他の例を示す図である。
【図９】本発明の実施の形態におけるレジスタファイル１４０の構成例を示す図である。
【図１０】本発明の実施の形態におけるサイズ処理回路１６１または１６２の構成例を示す図である。
【図１１】本発明の実施の形態におけるサイズ処理回路１６１または１６２における選択信号の内容例を示す図である。
【図１２】本発明の実施の形態におけるデータ操作回路１７０の構成例を示す図である。
【図１３】本発明の実施の形態における演算器１８０の構成例を示す図である。
【符号の説明】
【００８８】
１００  プロセッサ
１１０  プログラムカウンタ
１３０  命令デコーダ
１３１  デコーダ
１３２  セレクタ
１４０  レジスタファイル
１５０  繰返し制御回路
１６１、１６２  サイズ処理回路
１７０  データ操作回路
１８０  演算器
２００  命令メモリ
２１０  機能コード
２２０  サイズ
２２３  書込み要素数
２２４  第１読出し要素数
２２５  第２読出し要素数
２２６  繰返し数
２３０  書込みオペランド
２３１  書込みレジスタ指定
２３２  書込み要素指定
２４０  第１読出しオペランド
２４１  第１読出しレジスタ指定
２５０  第２読出しオペランド
２５１  第２読出しレジスタ指定
５１０  繰返しカウンタ
５１９  繰返しカウント
５２０  演算制御回路
６１１〜６１４、６２１〜６２４、７１１〜７１４、７３１〜７３４  セレクタ
７２１〜７２４  符号反転器
８１０  演算回路群
８２０  加算器
８３１〜８３４  演算結果セレクタ
【図１】
2006146644.tif 000003
【図２】
2006146644.tif 000004
【図３】
2006146644.tif 000005
【図４】
2006146644.tif 000006
【図５】
2006146644.tif 000007
【図６】
2006146644.tif 000008
【図７】
2006146644.tif 000009
【図８】
2006146644.tif 000010
【図９】
2006146644.tif 000011
【図１０】
2006146644.tif 000012
【図１１】
2006146644.tif 000013
【図１２】
2006146644.tif 000014
【図１３】
2006146644.tif 000015