JP4349265B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP4349265B2
JP4349265B2 JP2004337025A JP2004337025A JP4349265B2 JP 4349265 B2 JP4349265 B2 JP 4349265B2 JP 2004337025 A JP2004337025 A JP 2004337025A JP 2004337025 A JP2004337025 A JP 2004337025A JP 4349265 B2 JP4349265 B2 JP 4349265B2
Authority
JP
Japan
Prior art keywords
elements
product
order
input vector
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004337025A
Other languages
English (en)
Other versions
JP2006146644A (ja
Inventor
浩章 坂口
浩一 長谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004337025A priority Critical patent/JP4349265B2/ja
Priority to KR1020050107843A priority patent/KR101202445B1/ko
Priority to US11/274,233 priority patent/US7725520B2/en
Priority to CNB2005100230358A priority patent/CN100447777C/zh
Publication of JP2006146644A publication Critical patent/JP2006146644A/ja
Application granted granted Critical
Publication of JP4349265B2 publication Critical patent/JP4349265B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

本発明は、SIMD(Single Instruction Multiple Data:単一命令複数データ)型プロセッサに関し、特に三次元ベクトルまたはクォータニオン(四元数)を扱うSIMD型プロセッサに関する。
三次元グラフィックス処理において、オブジェクトの回転や球面補間などを行うためにクォータニオン(Quaternion:四元数)という数が利用される。このクォータニオンとは、三次元ベクトルにスカラー値を加えたものであり、三次元空間内の軸とその軸を中心とする回転を表すものである。ここで、クォータニオンPは、スカラー値pと三次元ベクトルUとによって、
P=[p;U]
のように表現される。
また、p=Aw、U=(Ax,Ay,Az)として、虚数単位i、j、kを用いれば、
P= Aw + Ax i + Ay j + Az k
のようにも表現される。ここで、虚数単位i、j、kは、
ii=jj=kk=ijk=−1
ij=k
ji=−k
という関係にある。
同様に、クォータニオンQを
Q=[q;V]
とし、q=Bw,V=(Bx,By,Bz)とすると、
Q= Bw + Bx i + By j + Bz k
となる。
そして、これらクォータニオンPとクォータニオンQとのクォータニオン積PQの演算は、
PQ=(―AxBx−AyBy−AzBz+AwBw)
+(AxBw+AyBz−AzBy+AwBx)i
+(―AxBz+AyBw+AzBx+AwBy)j
+(AxBy−AyBx+AzBw+AwBz)k
= Mw + Mx i + My j + Mz k
により得られる(式1)。
このようなクォータニオン積における各成分(Mw、Mx、My、Mz)を求めるためには16回の乗算と12回の加減算を必要とし、これら全てを同時に行うこととすると必要な回路規模が大きくなるおそれがある。
ここで、2つのクォータニオンを2つの四次元ベクトルとして扱えば、クォータニオン積における各成分(Mw、Mx、My、Mz)は2つの四次元ベクトルの要素(Aw、Ax、Ay、AzおよびBw、Bx、By、Bz)の積和の形式で与えられる。但し、積和の順序や符号はそれぞれ異なったものとなっている。従って、四次元ベクトルの要素の並び替えおよび符号反転を積和演算と同時に実行できるような回路があれば、4つの積和演算でクォータニオン積を実現することができる。
しかし、32ビットの命令コードでは、並び替えおよび符号反転の情報を命令フィールドに含めて3オペランドのベクトル演算命令を表現するにはビット数が足りない。そのため、ベクトルの並び替えや符号反転を別命令により実現して、並び替えや符号反転の処理をした新たなベクトルを別のレジスタに格納してからそのレジスタを用いて演算を行うという手段が用いられることも多い。
例えば、インテル社が開発したマルチメディア向け命令セットSSE(Streaming SIMD Extensions)やモトローラ社が開発したマルチメディア向け命令セットAltiVec等において、そのようなベクトルの並び替えおよび符号反転を行う命令が設けられている(例えば、非特許文献1および非特許文献2参照。)。
「IA-32 Intel(R) Architecture Software Developer's Manual Volume 1: Basic Architecture」、Intel Corporation、2004年 「AltiVec Technology Programming Interface Manual」、Motorola Inc.、1999年6月
しかしながら、クォータニオン積を算出する際、上述のようなベクトルの並び替えおよび符号反転を行う命令を用いた場合でも、4つの内積のそれぞれに対してさらにベクトルの並び替えおよび符号反転を行う命令を適用する必要が生じ、プログラムサイズが増大するという問題がある。
そこで、本発明は、クォータニオン積を1命令により実行するSIMD型プロセッサを提供することを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、第1の入力ベクトルの要素と第2の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、上記組合せによる積和演算を行う演算手段と、上記第1および第2の入力ベクトルの要素数に応じて上記データ操作手段における上記組合せの生成および上記演算手段における上記積和演算を制御する繰返し制御手段とを具備することを特徴とするプロセッサである。これにより、第1および第2の入力ベクトルの各要素の任意の組合せについて積和演算を繰返し実行させるという作用をもたらす。すなわち、繰返し制御手段において繰返し制御を行うことにより、例えばクォータニオン積命令のようにベクトルの各要素の積和演算の組合せが複雑な場合でも、1命令に対する処理として完遂することができる。
また、この第1の側面において、上記データ操作手段は、上記繰返し制御手段による制御に基づいて上記第2の入力ベクトルの要素の並び替えを行う並び替え手段と、上記繰返し制御手段による制御に基づいて上記並び替え手段による出力の符号を反転させる符号反転手段とを備えることができる。これにより、第1および第2の入力ベクトルの各要素の任意の組合せを順序および符号について柔軟に生成させるという作用をもたらす。
ここで、さらに上記繰返し制御手段は、上記要素数に応じた回数を計数する計数手段と、上記計数手段による計数値に従って上記並び替え手段および上記符号反転手段に対する制御を行う演算制御手段とを備えることができる。これにより、ベクトル要素の任意の組合せにおいて積和演算を繰返し実行させるという作用をもたらす。
また、この第1の側面において、上記第2の入力ベクトルが4つの要素(Bx、By、Bz、Bw)を備え、上記データ操作手段が上記繰返し制御手段による制御に基づいて第1の並び順(Bw、Bz、−By、Bx)と第2の並び順(−Bz、Bw、Bx、By)と第3の並び順(By、−Bx、Bw、Bz)と第4の並び順(−Bx、−By、−Bz、Bw)とを順次生成するものとすることができる。これにより、クォータニオン積を算出するための一方のベクトルを供給させるという作用をもたらす。
ここで、さらに上記第1の入力ベクトルが4つの要素(Ax、Ay、Az、Aw)を備え、上記演算手段が上記繰返し制御手段による制御に基づいて第1の積和演算(AxBw+AyBz−AzBy+AwBx)と第2の積和演算(−AxBz+AyBw+AzBx+AwBy)と第3の積和演算(AxBy−AyBx+AzBw+AwBz)と第4の積和演算(−AxBx−AyBy−AzBz+AwBw)とを順次行うものとすることができる。これにより、クォータニオン積における各要素を供給させるという作用をもたらす。
また、この第1の側面において、上記第1および第2の入力ベクトルについてそれぞれ上記要素数を超える要素にゼロを設定するサイズ処理手段をさらに具備することができる。これにより、第1および第2の入力ベクトルにおける要素数が短い場合にも適正な積和演算結果を算出させるという作用をもたらす。
また、本発明の第2の側面は、第1および第2の入力ベクトルを保持するベクトル保持手段と、上記第1の入力ベクトルの要素と上記第2の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、上記組合せによる積和演算を行う演算手段と、上記第1および第2の入力ベクトルの要素数に応じて上記データ操作手段における上記組合せの生成および上記演算手段における上記積和演算を制御してその積和演算結果を上記ベクトル保持手段の出力ベクトルにおける所定要素として保持させる繰返し制御手段とを具備することを特徴とするプロセッサである。これにより、ベクトル保持手段に保持された第1および第2の入力ベクトルの各要素の任意の組合せについて積和演算を繰返し実行させるという作用をもたらす。
また、本発明の第3の側面は、4つの要素(Ax、Ay、Az、Aw)を備える第1の入力ベクトルと4つの要素(Bx、By、Bz、Bw)を備える第2の入力ベクトルとを保持するベクトル保持手段と、上記第1の入力ベクトルと第2の入力ベクトルとの間の演算を行う命令において上記第1および第2の入力ベクトルの要素数を抽出する抽出手段と、上記第1の入力ベクトルの各要素(Ax、Ay、Az、Aw)を供給する第1の供給手段と、上記第2の入力ベクトルの各要素について第1の並び順(Bw、Bz、−By、Bx)と第2の並び順(−Bz、Bw、Bx、By)と第3の並び順(By、−Bx、Bw、Bz)と第4の並び順(−Bx、−By、−Bz、Bw)とを順次供給する第2の供給手段と、上記要素数が4である場合に上記第1および第2の供給手段から供給された上記第1および第2の入力ベクトルの各要素に基づいて第1の積和演算(AxBw+AyBz−AzBy+AwBx)と第2の積和演算(−AxBz+AyBw+AzBx+AwBy)と第3の積和演算(AxBy−AyBx+AzBw+AwBz)と第4の積和演算(−AxBx−AyBy−AzBz+AwBw)とを順次行って上記ベクトル保持手段に保持させる演算手段とを具備することを特徴とするプロセッサである。これにより、要素数を4に設定することによりクォータニオン積の各要素を順次生成させるという作用をもたらす。
また、この第3の側面において、上記演算手段は、上記要素数が3である場合に上記第1および第2の供給手段から供給された上記第1および第2の入力ベクトルの各要素に基づいて第1の外積要素(AyBz−AzBy)と、第2の外積要素(−AxBz+AzBx)と、第3の外積要素(AxBy−AyBx)とを順次生成して上記ベクトル保持手段に保持させるようにすることができる。これにより、要素数を3に設定することにより外積の各要素を順次生成させるという作用をもたらす。
また、本発明の第4の側面は、4つの要素(Ax、Ay、Az、Aw)を備える第1の入力ベクトルと4つの要素(Bx、By、Bz、Bw)を備える第2の入力ベクトルとの間の演算を行う命令を命令セットとして備えるプロセッサであって、上記第1の入力ベクトルと第2の入力ベクトルとの間の演算を行う命令において上記第1および第2の入力ベクトルの要素数を抽出する抽出手段と、上記要素数が4である場合に上記第1および第2の入力ベクトルの各要素に基づいて第1の積和演算(AxBw+AyBz−AzBy+AwBx)と第2の積和演算(−AxBz+AyBw+AzBx+AwBy)と第3の積和演算(AxBy−AyBx+AzBw+AwBz)と第4の積和演算(−AxBx−AyBy−AzBz+AwBw)とを順次生成してクォータニオン積を算出する演算手段とを具備することを特徴とするプロセッサである。これにより、要素数を4に設定することによりクォータニオン積の各要素を順次生成させる命令をプロセッサに実行させるという作用をもたらす。
また、この第4の側面において、上記演算手段は、上記要素数が3である場合に上記第1および第2の入力ベクトルの各要素に基づいて第1の外積要素(AyBz−AzBy)と、第2の外積要素(−AxBz+AzBx)と、第3の外積要素(AxBy−AyBx)とを順次生成して外積を算出するようにすることができる。これにより、要素数を3に設定することにより外積の各要素を順次生成させる命令をプロセッサに実行させるという作用をもたらす。
本発明によれば、クォータニオン積を1命令により実行するという優れた効果を奏し得る。
次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態におけるSIMD型コンピュータシステムの構成例を示す図である。このSIMD型コンピュータシステムは、プロセッサ100と、命令メモリ200とを備える。プロセッサ100は、プログラムカウンタ110と、命令デコーダ130と、レジスタファイル140と、繰返し制御回路150と、サイズ処理回路161および162と、データ操作回路170と、演算器180とを備える。このプロセッサ100は、命令メモリ200に接続し、もしくはそれを内蔵する。
プログラムカウンタ110は、命令メモリ200における命令の読出しアドレスを計数するカウンタである。このプログラムカウンタ110により信号線119を介して指示されたアドレスによって命令メモリ200から命令の読出しが行われて、信号線209を介して命令デコーダ130に供給される。命令デコーダ130は、命令メモリ200から読み出された命令をデコードして、命令のオペコードやその命令に必要とされるオペランドを抽出する。
レジスタファイル140は、命令デコーダ130から信号線139を介して与えられたオペランドによりアクセスされ、読出しおよび書込みが行われる。レジスタファイル140は、同時に2組のデータを読み出すことができ、それぞれ信号線148および149によりサイズ処理回路161および162に供給される。
繰返し制御回路150は、デコードされた信号を信号線138により受け取り、これに従って、信号線151によりレジスタファイル140を制御し、信号線154および155によりデータ操作回路170を制御し、また、信号線156により演算器180を制御する。この繰返し制御回路150は、クォータニオン積のように演算を複数回繰り返す必要がある場合にその繰返しを制御するものである。
サイズ処理回路161および162は、それぞれレジスタファイル140から読み出されたオペランド(データ)を受け、入力されたデータのうち、信号線137により与えられる要素数(サイズ)を超える部分に対して値"0"を設定するというサイズ処理を行うものである。
データ操作回路170は、サイズ処理回路162によりサイズ処理が施されたオペランドを信号線169によって受け取り、データ順序の並び替えや符号反転といったデータ操作を行うものである。このようなデータ操作が施されたオペランドは信号線179により演算器180に供給される。
演算器180は、繰返し制御回路150からの信号線156による制御に基づいて、信号線168および信号線179により与えられたオペランドに対して所定の演算を行う。この演算器180による演算結果は、繰返し制御回路150からの信号線156による制御に基づいて、信号線189によりレジスタファイル140に書き込まれる。
図2は、本発明の実施の形態における命令フォーマット例を示す図である。ここでは、RISC(Reduced Instruction Set Computer)アーキテクチャ型命令セットとして、3個のオペランドを有する32ビット固定長命令を想定する。プロセッサ100はこの固定長命令に基づいて最大4つの演算を同時に水平実行するSIMD型プロセッサとして実現される。なお、ここでは一例として4演算の同時実行を想定して以下説明するが、これに限られず任意の数の演算を同時に実行するようにしても構わない。
この命令フォーマットは、機能コード210と、サイズ220と、書込みオペランド230と、第1読出しオペランド240と、第2読出しオペランド250とを備える。機能コード210は、命令のオペコードを示すものであり、本発明の実施の形態においては演算器180における演算の種類を表すことになる。サイズ220は、演算の対象となるデータの要素数を示すものであり、機能コード210に応じて各部の制御に用いられる。すなわち、デコーダ131によるデコード結果によって、セレクタ132においてサイズ220の内容または値"1"の何れかが選択されて、書込み要素数223、第1読出し要素数224、第2読出し要素数225、ならびに、繰返し数226が決定される。ここで、書込み要素数223はレジスタファイル140にデータを書き込む際の要素数であり、第1読出し要素数224および第2読出し要素数225はそれぞれレジスタファイル140からデータを読み出す際の要素数である。また、繰返し数226は繰返し制御回路150において繰返し制御を行う際の繰返し数である。このセレクタ132における選択内容を示すのが図3である。
図3を参照すると、機能コード210に対応して、書込み要素数223、第1読出し要素数224、第2読出し要素数225、ならびに、繰返し数226の選択内容が示されている。ここでは、機能コード210として、クォータニオン積(qmul)、内積(dot)、加算(add)、減算(sub)、乗算(mul)、除算(div)、ならびに、比較(cmp)が挙げられている。
例えば、クォータニオン積の場合、書込み要素数223としては値"1"が与えられ、第1読出し要素数224、第2読出し要素数225、および、繰返し数226としてはサイズ220の内容が与えられる。
図2を再び参照すると、書込みオペランド230は、レジスタファイル140に対する書込みアドレスを示すものであり、書込みレジスタ指定231および書込み要素指定232を保持する。レジスタファイル140において、複数要素を一組にまとめたレジスタをさらに複数保持するものとした場合、書込みレジスタ指定231によって書込み対象となるレジスタを指定し、さらにそのレジスタにおける何れの要素であるかを書込み要素指定232により指定するものである。
第1読出しオペランド240および第2読出しオペランド250は、レジスタファイル140からの読出しアドレスを示すものであり、それぞれ第1読出しレジスタ指定241および第2読出しレジスタ指定251を含む。本発明の実施の形態においては、読出し対象となるレジスタを指定すれば足り、そのレジスタにおける要素指定は特に必要ではないため、要素指定のフィールドは設けられていない。
なお、レジスタファイル140の構成として、例えば4要素を一組にまとめたレジスタを32ワード保持するものとすれば、レジスタ指定に5ビット、要素指定に2ビット必要となる。各オペランドに対して均等にフィールド割り当てを行うとすると、書込みオペランド230、第1読出しオペランド240および第2読出しオペランド250には、それぞれ7ビットずつが割り当てられる。また、サイズ220についてもレジスタにおける要素数であることから、2ビットが割り当てられる。従って、この場合、32ビットのうち9ビットを機能コード210に割り当てることができる。
図4は、本発明の実施の形態における命令デコーダ130によるデコード例を示す図である。この命令デコーダ130は、命令メモリ200から信号線209により読み出された命令をデコードして、以下の各フィールドを抽出する。すなわち、機能コード210、書込み要素数223、書込み要素指定232、および、繰返し数226を信号線138に出力する。また、書込みレジスタ指定231、第1読出しレジスタ指定241、および、第2読出しレジスタ指定251を信号線139に出力する。さらに、第1読出し要素数224、および、第2読出し要素数225を信号線137に出力する。
図5は、本発明の実施の形態における繰返し制御回路150の構成例を示す図である。この繰返し制御回路150は、繰返しカウンタ510と、演算制御回路520とを備えている。
繰返しカウンタ510は、信号線138における繰返し数226を受け取ると、初期値"1"から繰返し数226に至るまで1つずつ計数し、その計数値を信号線519により演算制御回路520に供給するものである。
演算制御回路520は、信号線138における機能コード210、書込み要素数223および書込み要素指定232、ならびに、信号線519における繰返しカウントに基づいて、信号線151に書込みイネーブルを、信号線154に読出し並び替えを、信号線155に読出し符号反転を、そして、信号線156に演算器指定をそれぞれ出力するものである。
信号線151における書込みイネーブルは、レジスタファイル140における要素位置に対応して1ビットずつ設けられる。例えばレジスタファイル140の構成として、例えば4要素を一組にまとめたレジスタを保持するものとすれば、信号線151における書込みイネーブルは、1511乃至1514の4ビットから構成されて、レジスタファイル140に供給されることになる。
また、信号線154における読出し並び替えおよび信号線155における読出し符号反転は、データ操作回路170に供給される。そして、信号線156における演算器指定は、演算器180に供給される。
図6は、本発明の実施の形態におけるクォータニオン積命令に関して繰返し制御回路150により行われる制御内容の一例を示す図である。機能コード210がクォータニオン積(qmul)を示す場合、演算制御回路520は信号線519における繰返しカウントに従って各制御信号を生成する。
まず、信号線151における書込みイネーブルについて、信号線519における繰返しカウントが値"1"を示すときには、信号線151における第1のビットだけが値"1"となり、それ以外のビットは値"0"になる。従って、繰返しカウントが値"1"を示すときには、演算器180における演算結果は書込みレジスタにおける第1番目の要素のみに書き込まれる。また、信号線519における繰返しカウントが値"2"を示すときには、信号線151における第2のビットだけが値"1"となり、それ以外のビットは値"0"になる。従って、繰返しカウントが値"2"を示すときには、演算器180における演算結果は書込みレジスタにおける第2番目の要素のみに書き込まれる。以下同様に、繰返しカウントが値"3"を示すときには演算器180における演算結果は書込みレジスタにおける第3番目の要素のみに書き込まれ、繰返しカウントが値"4"を示すときには演算器180における演算結果は書込みレジスタにおける第4番目の要素のみに書き込まれる。
また、信号線154における読出し並び替えは、元の状態を"XYZW"とした場合にその指定された状態になるように読出しデータの並び替えを行うことを意味している。信号線519における繰返しカウントが値"1"を示すときには、信号線154における読出し並び替えは"WZYX"を示しており、元の並び順から逆順になるように並び替えを行うことを意味している。また、信号線519における繰返しカウントが値"2"を示すときには、信号線154における読出し並び替えは"ZWXY"を示しており、第1番目のデータが第3番目になり、第2番目のデータが第4番目になり、第3番目のデータが第1番目になり、第4番目のデータが第2番目になるように、それぞれ並び替えを行うべきことを意味している。以下同様に、信号線519における繰返しカウントが値"3"を示すときには"YXWZ"となるように並び替えが行われ、信号線519における繰返しカウントが値"4"を示すときには"XYZW"となるように(すなわち入力がそのまま)出力される。
また、信号線155における読出し符号反転は、上述の並び替えを経たデータについて対応する記号が"P"であれば符号の反転を行わず、"N"であれば符号の反転を行うことを示すものである。信号線519における繰返しカウントが値"1"を示すときには、信号線155における読出し符号反転は"PPNP"を示しており、第3番目のデータについてのみ符号反転を行うことを意味している。また、信号線519における繰返しカウントが値"2"を示すときには、信号線155における読出し符号反転は"NPPP"を示しており、第1番目のデータについてのみ符号反転を行うことを意味している。以下同様に、信号線519における繰返しカウントが値"3"を示すときには第2番目のデータについてのみ符号反転が行われ、信号線519における繰返しカウントが値"4"を示すときには第4番目以外のデータについて符号反転が行われる。
これら信号線154における読出し並び替えおよび信号線155における読出し符号反転は、上述の式1におけるクォータニオン積の各要素の組合せ順序および符号に対応している。
また、信号線156における演算器指定としては、内積を表す値"5"が出力される。これは信号線519における繰返しカウントには依存しない。
図7は、本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路150により行われる制御内容の一例を示す図である。図7(a)は、機能コード210が、加算(add)、減算(sub)、乗算(mul)、除算(div)、または、比較(cmp)であるときの信号線151における書込みイネーブルの内容を示す図である。また、図7(b)は、機能コード210が、内積(dot)であるときの信号線151における書込みイネーブルの内容を示す図である。
図7(a)を参照すると、機能コード210が加算等を示す場合、信号線138における書込み要素数223が値"1"であれば、信号線151における書込みイネーブルの第1番目のビットのみが値"1"となり、それ以外のビットは値"0"となる。信号線138における書込み要素数223が値"2"であれば、信号線151における書込みイネーブルの第1番目および第2番目のビットが値"1"となり、それ以外のビットは値"0"となる。信号線138における書込み要素数223が値"3"であれば、信号線151における書込みイネーブルの第4番目のビットのみが値"0"となり、それ以外のビットは値"1"となる。そして、信号線138における書込み要素数223が値"4"であれば、信号線151における書込みイネーブルの全てのビットは値"1"となる。
図7(b)を参照すると、機能コード210が内積を示す場合、信号線138における書込み要素指定232が値"X"であれば、信号線151における書込みイネーブルの第1番目のビットのみが値"1"となり、それ以外のビットは値"0"となる。信号線138における書込み要素指定232が値"Y"であれば、信号線151における書込みイネーブルの第2番目のビットのみが値"1"となり、それ以外のビットは値"0"となる。信号線138における書込み要素指定232が値"Z"であれば、信号線151における書込みイネーブルの第3番目のビットのみが値"1"となり、それ以外のビットは値"0"となる。信号線138における書込み要素指定232が値"W"であれば、信号線151における書込みイネーブルの第4番目のビットのみが値"1"となり、それ以外のビットは値"0"となる。
図8は、本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路150により行われる制御内容の他の例を示す図である。機能コード210が、加算、減算、乗算、除算、比較、または、内積であるとき、信号線519における繰返しカウントは常に値"1"を示し、信号線154における読出し並び替えは"XYZW"を示し、また、信号線155における読出し符号反転は"PPPP" を示す。すなわち、演算器180において複数回の繰返しは行われず、読出しデータの並び替えや符号反転も行われないことを意味する。
但し、演算器180に対する信号線156による演算器指定は必要であり、加算の場合には値"0"、減算の場合には値"1"、乗算の場合には値"2"、除算の場合には値"3"、比較の場合には値"4"、内積の場合には値"5"がそれぞれ指定される。
図9は、本発明の実施の形態におけるレジスタファイル140の構成例を示す図である。レジスタファイル140は、ここでは同時にアクセスされる横方向の4要素を一つのレジスタとして、縦方向にアドレス付けされる。ここでは、左から第1番目の要素にはクォータニオンのx成分、第2番目の要素にはy成分、第3番目の要素にはz成分、第4番目の要素にはw成分(スカラ成分)が、それぞれ保持されることを想定している。
このレジスタファイル140におけるアクセスアドレスは、信号線139を介して命令デコーダ130により与えられる。信号線139において、第1読出しレジスタ指定241および第2読出しレジスタ指定251は読出しアドレスを示し、書込みレジスタ指定231は書込みアドレスを示す。第1読出しレジスタ指定241の示すアドレスに保持されているデータは信号線148から読み出される。同様に、第2読出しレジスタ指定251の示すアドレスに保持されているデータは信号線149から読み出される。
また、書込みレジスタ指定231の示すアドレスには信号線189から供給されるデータが保持される。その際、信号線151における書込みイネーブルに従って、対応するデータが保持されるか否かが制御される。すなわち、書込みイネーブルの第1番目のビット1511が値"1"を示していれば対応する第1番目の要素にデータの書込みが行われ、値"0"を示していれば対応する第1番目の要素へのデータの書込みは行われない。他のビットについても同様に、書込みイネーブルの第2乃至4番目のビットが値"1"を示していればその対応する要素にデータの書込みが行われ、値"0"を示している要素にはデータの書込みは行われない。
図10は、本発明の実施の形態におけるサイズ処理回路161または162の構成例を示す図である。サイズ処理回路161または162は、それぞれ2入力セレクタ611乃至614または621乃至624を備える。
2入力セレクタ611乃至614のそれぞれは、信号線148によってレジスタファイル140から供給された4つのデータ1481乃至1484または値"0"の何れかを、信号線137における第1読出し要素数224に従って選択する。同様に、2入力セレクタ621乃至624のそれぞれは、信号線149によってレジスタファイル140から供給された4つのデータ1491乃至1494または値"0"の何れかを、信号線137における第2読出し要素数225に従って選択する。このとき、第1読出し要素数224および第2読出し要素数225と、2入力セレクタ611乃至614および621乃至624に対する選択信号(読出しイネーブル)との関係は図11のようになる。
図11は、本発明の実施の形態におけるサイズ処理回路161または162における選択信号の内容例を示す図である。
すなわち、信号線137における第1読出し要素数224が値"1"であれば、2入力セレクタ611に対する読出しイネーブル2241のみが値"1"となり、それ以外については値"0"となる。これにより、信号線1681には信号線1481の値が出力され、信号線1682乃至1684には値"0"が出力される。信号線137における第1読出し要素数224が値"2"であれば、2入力セレクタ611および612に対する読出しイネーブル2241および2242が値"1"となり、それ以外については値"0"となる。これにより、信号線1681および1682にはそれぞれ信号線1481および1482の値が出力され、信号線1683および1684には値"0"が出力される。信号線137における第1読出し要素数224が値"3"であれば、2入力セレクタ614に対する読出しイネーブル2244が値"0"となり、それ以外については値"1"となる。これにより、信号線1681乃至1683にはそれぞれ信号線1481乃至1483の値が出力され、信号線1684には値"0"が出力される。信号線137における第1読出し要素数224が値"4"であれば、2入力セレクタ611乃至614に対する全ての読出しイネーブル2241乃至2244が値"1"となる。これにより、信号線1681乃至1684にはそれぞれ信号線1481乃至1484の値がそのまま出力されることになる。
同様に、信号線137における第2読出し要素数225が値"1"であれば、2入力セレクタ621に対する読出しイネーブル2251のみが値"1"となり、それ以外については値"0"となる。これにより、信号線1691には信号線1491の値が出力され、信号線1692乃至1694には値"0"が出力される。信号線137における第2読出し要素数225が値"2"であれば、2入力セレクタ621および622に対する読出しイネーブル2251および2252が値"1"となり、それ以外については値"0"となる。これにより、信号線1691および1692にはそれぞれ信号線1491および1492の値が出力され、信号線1693および1694には値"0"が出力される。信号線137における第2読出し要素数225が値"3"であれば、2入力セレクタ624に対する読出しイネーブル2254が値"0"となり、それ以外については値"1"となる。これにより、信号線1691乃至1693にはそれぞれ信号線1491乃至1493の値が出力され、信号線1694には値"0"が出力される。信号線137における第2読出し要素数225が値"4"であれば、2入力セレクタ621乃至624に対する全ての読出しイネーブル2251乃至2254が値"1"となる。これにより、信号線1691乃至1694にはそれぞれ信号線1491乃至1494の値がそのまま出力されることになる。
このようにして、サイズ処理回路161および162において要素数(サイズ)を超える部分に対して値"0"を設定することにより、要素数が4に満たない場合でも4要素の乗算結果の総和が内積を示すようにすることができる。また、そのような場合に必要でない要素をゼロにしておくことによって、余計に演算器が動作することを防止して消費電力を低減させることができる。
図12は、本発明の実施の形態におけるデータ操作回路170の構成例を示す図である。データ操作回路170は、4つの4入力セレクタ711乃至714と、4つの符号反転器721乃至724と、4つの2入力セレクタ731乃至734とを備えている。
4入力セレクタ711乃至714のそれぞれは、信号線169によってサイズ処理回路162から供給された4つのデータ1691乃至1694の何れかを、信号線154における読出し並び替え1541乃至1544に従って選択する。信号線154における読出し並び替え1541乃至1544は繰返し制御回路150から供給されるものであり、図6および図8により説明したように、それぞれ何れの成分を選択すべきかを示している。従って、4入力セレクタ711乃至714により、データの並び替えが行われる。
符号反転器721乃至724は、それぞれ4入力セレクタ711乃至714の出力の符号を反転させるものである。そして、2入力セレクタ731乃至734において、それぞれ符号反転器721乃至724を介した値または符号反転器721乃至724を介さないそのままの値の何れかが、信号線155における読出し符号反転1551乃至1554に従って選択される。信号線155における読出し符号反転1551乃至1554は繰返し制御回路150から供給されるものであり、図6および図8により説明したように、それぞれ符号を反転させるか否かを示している。従って、符号反転器721乃至724および2入力セレクタ731乃至734によりデータの符号反転が行われ、信号線179によって4つのデータ1791乃至1794が出力される。
図13は、本発明の実施の形態における演算器180の構成例を示す図である。演算器180は、4組の演算回路群810と、加算器820と、4つの演算結果セレクタ831乃至834とを備えている。
演算回路群810は4組の入力オペランド対に対応して設けられる。演算回路群810の各々は、例えば加算器、減算器、乗算器、除算器、比較器などを備えている。加算器820は、4組の演算回路群810における乗算器のそれぞれの出力を受け取り、4つの乗算結果の総和を計算する。すなわち、この加算器820の出力が積和演算結果を示すことになる。
演算結果セレクタ831乃至834は、演算回路群810および加算器820による演算結果を、繰返し制御回路150から信号線156を介して与えられる演算器指定に従って選択して、その結果を信号線189(1891乃至1894)に出力する。例えば、演算器指定が「0」であれば演算回路群810による加算結果が選択され、演算器指定が「1」であれば演算回路群810による減算結果が選択され、演算器指定が「2」であれば演算回路群810による乗算結果が選択され、演算器指定が「3」であれば演算回路群810による除算結果が選択され、演算器指定が「4」であれば演算回路群810による比較結果が選択され、演算器指定が「5」であれば加算器820による積和演算結果が選択される。
以上のような構成を有するSIMD型コンピュータシステムにおいて、クォータニオン積命令(qmul)はクォータニオンPおよびQの各4成分をそれぞれ4次元ベクトルの要素に割り当ててクォータニオン積PQを生成する。すなわち、Ax,Ay,Az,Awの順番でレジスタファイル140における成分X、Y、Z、Wに格納した4次元ベクトルを第1読出しオペランド240で指定し、Bx、By、Bz、Bwの順番でレジスタファイル140における成分X、Y、Z、Wに格納した4次元ベクトルを第2読出しオペランド250で指定した上で、サイズ220を値"4"とする。これにより、レジスタファイル140の指定された書込みオペランド230の成分X、Y、Z、Wにおいて、Mx、My、Mz、Mwの順番でクォータニオン積PQが得られる。
また、クォータニオンPとクォータニオンQとの積PQは、3次元ベクトルU,Vの内積と外積を用いると、
PQ=[pq―U・V; pV+qU+U×V]
と表すことができる。但し、・は内積、×は外積である。
ここで、p=0、q=0を想定すれば、そのときのクォータニオンPとQとの積は
PQ = [―U・V; U×V]
となる。このPQの各成分はUとVの外積そのものとなることが分かる。すなわち、
PQ=(AyBz−AzBy)i
+(―AxBz+AzBx)j
+(AxBy−AyBx)k
= Nx i +Ny j + Nz k
である。
すなわち、サイズ220を値"3"としてクォータニオン積命令を実行すれば、第1読出しオペランド240によるレジスタおよび第2読出しオペランド250によるレジスタは、サイズ処理回路161および162によって共に成分Wがゼロに設定される。そして、繰返し数226にもサイズ220の値"3"が設定されるため、繰返しカウンタ510による繰返しカウント519は"1"、"2"、"3"までとなり、成分X、Y、Zに対しての3回、それぞれの設定で演算が行われてMx、My、Mzが算出される。このときの係数(Nx、Ny、Nz)は、成分Wが共にゼロなのでp=0、q=0であり、3次元ベクトル(Ax、Ay、Az)および(Bx、By、Bz)の外積を計算したことになる。
このように、本発明の実施の形態によれば、2つの四次元ベクトルの一方についてデータ操作を行いながら繰返し制御回路150によって両ベクトルの積和演算を4回繰り返すことにより、クォータニオン積を算出することができる。従って、複数の命令を組み合わせることなく、1つのクォータニオン積命令だけでクォータニオン積を実行することができ、プログラムサイズを短縮させ、命令キャッシュの利用効率を向上させることができる。また、並び替えや符号反転を施した中間データを保持するレジスタを設ける必要がないため、レジスタの利用効率を向上させることができる。
また、そのクォータニオン積を算出する構成と同じ構成において三次元ベクトルを適用することにより、外積を算出することができる。すなわち、機能コード210においてクォータニオン積命令(qmul)を指定した場合、サイズ220を値"4"とすることによりクォータニオン積を算出することができ、サイズ220を値"3"とすることにより外積を算出することができるようになる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
本発明の活用例として、例えばベクトル演算を行うSIMD型プロセッサに本発明を適用することができる。
本発明の実施の形態におけるSIMD型コンピュータシステムの構成例を示す図である。 本発明の実施の形態における命令フォーマット例を示す図である。 本発明の実施の形態における機能コード210とサイズ220との関係を示す図である。 本発明の実施の形態における命令デコーダ130によるデコード例を示す図である。 本発明の実施の形態における繰返し制御回路150の構成例を示す図である。 本発明の実施の形態におけるクォータニオン積命令に関して繰返し制御回路150により行われる制御内容の一例を示す図である。 本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路150により行われる制御内容の一例を示す図である。 本発明の実施の形態におけるその他の演算命令に関して繰返し制御回路150により行われる制御内容の他の例を示す図である。 本発明の実施の形態におけるレジスタファイル140の構成例を示す図である。 本発明の実施の形態におけるサイズ処理回路161または162の構成例を示す図である。 本発明の実施の形態におけるサイズ処理回路161または162における選択信号の内容例を示す図である。 本発明の実施の形態におけるデータ操作回路170の構成例を示す図である。 本発明の実施の形態における演算器180の構成例を示す図である。
符号の説明
100 プロセッサ
110 プログラムカウンタ
130 命令デコーダ
131 デコーダ
132 セレクタ
140 レジスタファイル
150 繰返し制御回路
161、162 サイズ処理回路
170 データ操作回路
180 演算器
200 命令メモリ
210 機能コード
220 サイズ
223 書込み要素数
224 第1読出し要素数
225 第2読出し要素数
226 繰返し数
230 書込みオペランド
231 書込みレジスタ指定
232 書込み要素指定
240 第1読出しオペランド
241 第1読出しレジスタ指定
250 第2読出しオペランド
251 第2読出しレジスタ指定
510 繰返しカウンタ
519 繰返しカウント
520 演算制御回路
611〜614、621〜624、711〜714、731〜734 セレクタ
721〜724 符号反転器
810 演算回路群
820 加算器
831〜834 演算結果セレクタ

Claims (10)

  1. 第1の入力ベクトルの要素と第2の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、
    前記組合せによる積和演算を行う演算手段と、
    前記第1および第2の入力ベクトルの要素数に応じて前記データ操作手段における前記組合せの生成および前記演算手段における前記積和演算を制御する繰返し制御手段と
    を具備し、
    前記第1の入力ベクトルは4つの要素Ax、Ay、Azおよびwを備え、
    前記第2の入力ベクトルは4つの要素Bx、By、Bzおよびwを備え、
    前記データ操作手段は前記繰返し制御手段による制御に基づいて前記第2の入力ベクトルの各要素について第1の並び順としてBw、Bz、−By、Bxの順に並んだ要素と第2の並び順として−Bz、Bw、Bx、Byの順に並んだ要素と第3の並び順としてBy、−Bx、Bw、Bzの順に並んだ要素と第4の並び順として−Bx、−By、−Bz、Bwの順に並んだ要素とを順次生成し、
    前記演算手段は前記繰返し制御手段による制御に基づいて第1の積和演算であるAxBw+AyBz−AzBy+AwBxの演算と第2の積和演算である−AxBz+AyBw+AzBx+AwByの演算と第3の積和演算であるAxBy−AyBx+AzBw+AwBzの演算と第4の積和演算である−AxBx−AyBy−AzBz+AwBwの演算とを順次行う
    プロセッサ。
  2. 前記データ操作手段は、
    前記繰返し制御手段による制御に基づいて前記第2の入力ベクトルの要素の並び替えを行う並び替え手段と、
    前記繰返し制御手段による制御に基づいて前記並び替え手段による出力の符号を反転させる符号反転手段と
    を備える請求項1記載のプロセッサ。
  3. 前記繰返し制御手段は、
    前記要素数に応じた回数を計数する計数手段と、
    前記計数手段による計数値に従って前記並び替え手段および前記符号反転手段に対する制御を行う演算制御手段と
    を備える請求項2記載のプロセッサ。
  4. 前記第1および第2の入力ベクトルについてそれぞれ前記要素数を超える要素にゼロを設定するサイズ処理手段をさらに具備する請求項1記載のプロセッサ。
  5. 第1および第2の入力ベクトルを保持するベクトル保持手段と、
    前記第1の入力ベクトルの要素と前記第2の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、
    前記組合せによる積和演算を行う演算手段と、
    前記第1および第2の入力ベクトルの要素数に応じて前記データ操作手段における前記組合せの生成および前記演算手段における前記積和演算を制御してその積和演算結果を前記ベクトル保持手段の出力ベクトルにおける所定要素として保持させる繰返し制御手段と
    を具備し、
    前記第1の入力ベクトルは4つの要素Ax、Ay、Azおよびwを備え、
    前記第2の入力ベクトルは4つの要素Bx、By、Bzおよびwを備え、
    前記データ操作手段は前記繰返し制御手段による制御に基づいて第1の並び順としてBw、Bz、−By、Bxの順に並んだ前記第2の入力ベクトルの要素と第2の並び順として−Bz、Bw、Bx、Byの順に並んだ前記第2の入力ベクトルの要素と第3の並び順としてBy、−Bx、Bw、Bzの順に並んだ前記第2の入力ベクトルの要素と第4の並び順として−Bx、−By、−Bz、Bwの順に並んだ前記第2の入力ベクトルの要素とを順次生成し、
    前記演算手段は前記繰返し制御手段による制御に基づいて第1の積和演算であるAxBw+AyBz−AzBy+AwBxの演算と第2の積和演算である−AxBz+AyBw+AzBx+AwByの演算と第3の積和演算であるAxBy−AyBx+AzBw+AwBzの演算と第4の積和演算である−AxBx−AyBy−AzBz+AwBwの演算とを順次行う
    プロセッサ。
  6. 4つの要素Ax、Ay、Azおよびwを備える第1の入力ベクトルと4つの要素Bx、By、Bzおよびwを備える第2の入力ベクトルとを保持するベクトル保持手段と、
    前記第1の入力ベクトルと第2の入力ベクトルとの間の演算を行う命令において前記第1および第2の入力ベクトルの要素数を抽出する抽出手段と、
    前記第1の入力ベクトルの各要素を供給する第1の供給手段と、
    前記第2の入力ベクトルの各要素について第1の並び順としてBw、Bz、−By、Bxの順に並んだ要素と第2の並び順として−Bz、Bw、Bx、Byの順に並んだ要素と第3の並び順としてBy、−Bx、Bw、Bzの順に並んだ要素と第4の並び順として−Bx、−By、−Bz、Bwの順に並んだ要素とを順次供給する第2の供給手段と、
    前記要素数が4である場合に前記第1および第2の供給手段から供給された前記第1および第2の入力ベクトルの各要素に基づいて第1の積和演算であるAxBw+AyBz−AzBy+AwBxの演算と第2の積和演算である−AxBz+AyBw+AzBx+AwByの演算と第3の積和演算であるAxBy−AyBx+AzBw+AwBzの演算と第4の積和演算である−AxBx−AyBy−AzBz+AwBwの演算とを順次行って演算結果を前記ベクトル保持手段に保持させる演算手段と
    を具備するプロセッサ。
  7. 前記演算手段は、前記要素数が3である場合に前記第1および第2の供給手段から供給された前記第1および第2の入力ベクトルの各要素に基づいて第1の外積要素であるAyBz−AzByの演算と、第2の外積要素である−AxBz+AzBxの演算と、第3の外積要素であるAxBy−AyBxの演算とを順次実行して演算結果を前記ベクトル保持手段に保持させる請求項6記載のプロセッサ。
  8. 4つの要素Ax、Ay、Azおよびwを備える第1の入力ベクトルと4つの要素Bx、By、Bzおよびwを備える第2の入力ベクトルとの間の演算を行う命令を命令セットとして備えるプロセッサであって、
    前記第1の入力ベクトルと第2の入力ベクトルとの間の演算を行う命令において前記第1および第2の入力ベクトルの要素数を抽出する抽出手段と、
    前記要素数が4である場合に前記第2の入力ベクトルの各要素について第1の並び順としてBw、Bz、−By、Bxの順に並んだ要素と第2の並び順として−Bz、Bw、Bx、Byの順に並んだ要素と第3の並び順としてBy、−Bx、Bw、Bzの順に並んだ要素と第4の並び順として−Bx、−By、−Bz、Bwの順に並んだ要素とを順次生成するデータ操作手段と、
    前記要素数が4である場合に前記第1乃至4の並び順に並んだ各要素に基づいて第1の積和演算であるAxBw+AyBz−AzBy+AwBxの演算と第2の積和演算である−AxBz+AyBw+AzBx+AwByの演算と第3の積和演算であるAxBy−AyBx+AzBw+AwBzの演算と第4の積和演算である−AxBx−AyBy−AzBz+AwBwの演算とを順次実行してクォータニオン積を算出する演算手段と
    を具備するプロセッサ。
  9. 前記データ操作手段は、前記要素数が3である場合に前記第2の入力ベクトルの各要素について第5の並び順として0、Bz、−By、Bxの順に並んだ要素と第6の並び順として−Bz、0、Bx、Byの順に並んだ要素と第7の並び順としてBy、−Bx、0、Bzの順に並んだ要素とを順次生成し、
    前記演算手段は、前記要素数が3である場合に前記第5乃至7の並び順に並んだ各要素に基づいて第1の外積要素であるAyBz−AzByの演算と、第2の外積要素である−AxBz+AzBxの演算と、第3の外積要素であるAxBy−AyBxの演算とを順次実行して外積を算出する請求項8記載のプロセッサ。
  10. 第1の入力ベクトルの要素と第2の入力ベクトルの要素との任意の組合せを生成するデータ操作手段と、
    前記組合せによる積和演算を行う演算手段と、
    前記第1および第2の入力ベクトルの要素数に応じて前記データ操作手段における前記組合せの生成および前記演算手段における前記積和演算を制御する繰返し制御手段と
    を具備し、
    前記データ操作手段は、
    前記繰返し制御手段による制御に基づいて前記第2の入力ベクトルの要素の並び替えを行う並び替え手段と、
    前記繰返し制御手段による制御に基づいて前記並び替え手段による出力の符号を反転させて前記組合せとして前記演算手段へ供給する符号反転手段と
    を備えるプロセッサ。
JP2004337025A 2004-11-22 2004-11-22 プロセッサ Expired - Fee Related JP4349265B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004337025A JP4349265B2 (ja) 2004-11-22 2004-11-22 プロセッサ
KR1020050107843A KR101202445B1 (ko) 2004-11-22 2005-11-11 프로세서
US11/274,233 US7725520B2 (en) 2004-11-22 2005-11-16 Processor
CNB2005100230358A CN100447777C (zh) 2004-11-22 2005-11-22 处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004337025A JP4349265B2 (ja) 2004-11-22 2004-11-22 プロセッサ

Publications (2)

Publication Number Publication Date
JP2006146644A JP2006146644A (ja) 2006-06-08
JP4349265B2 true JP4349265B2 (ja) 2009-10-21

Family

ID=36462173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004337025A Expired - Fee Related JP4349265B2 (ja) 2004-11-22 2004-11-22 プロセッサ

Country Status (4)

Country Link
US (1) US7725520B2 (ja)
JP (1) JP4349265B2 (ja)
KR (1) KR101202445B1 (ja)
CN (1) CN100447777C (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US8527742B2 (en) 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
JP5633122B2 (ja) * 2009-06-16 2014-12-03 富士通セミコンダクター株式会社 プロセッサ及び情報処理システム
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9189458B1 (en) * 2013-03-05 2015-11-17 Xilinx, Inc. Parameter estimation
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
JP2017534059A (ja) 2014-11-10 2017-11-16 スリーエム イノベイティブ プロパティズ カンパニー 放射線遮蔽組成物及びその製造方法
CN111580865B (zh) * 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN111651206B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809212A (en) * 1985-06-19 1989-02-28 Advanced Micro Devices, Inc. High throughput extended-precision multiplier
US4754421A (en) * 1985-09-06 1988-06-28 Texas Instruments Incorporated Multiple precision multiplication device
US6233597B1 (en) * 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
US6523055B1 (en) * 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle
JP3568861B2 (ja) 2000-01-27 2004-09-22 株式会社スクウェア・エニックス ビデオゲームにおける三次元オブジェクト変形方法及びビデオゲーム装置、並びにビデオゲーム用のプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003016051A (ja) * 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
JP4107043B2 (ja) * 2002-10-15 2008-06-25 株式会社デンソー 演算処理装置
US20040193838A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney Vector instructions composed from scalar instructions

Also Published As

Publication number Publication date
CN100447777C (zh) 2008-12-31
JP2006146644A (ja) 2006-06-08
US7725520B2 (en) 2010-05-25
US20060112159A1 (en) 2006-05-25
KR101202445B1 (ko) 2012-11-16
CN1783054A (zh) 2006-06-07
KR20060056855A (ko) 2006-05-25

Similar Documents

Publication Publication Date Title
KR101202445B1 (ko) 프로세서
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
JP7454377B2 (ja) データ処理装置における拡大算術計算
US6922716B2 (en) Method and apparatus for vector processing
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
JP7253492B2 (ja) データ処理装置における乗累算
JPH02300983A (ja) 中央処理装置における高速演算処理の方法
TWI780116B (zh) 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作
JP3985797B2 (ja) プロセッサ
CN110914800B (zh) 基于寄存器的复数处理
JP3723115B2 (ja) 単一命令多重データ処理
US20050154773A1 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
JP2021507348A (ja) ベクトル・キャリー付き加算命令
JP4696540B2 (ja) コンピュータ、データ処理方法およびプログラム
Sangireddy et al. On-chip adaptive circuits for fast media processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090630

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090713

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130731

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees